<?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>235938</bug_id>
          
          <creation_ts>2022-01-31 20:33:22 -0800</creation_ts>
          <short_desc>Rename FontCascade::fontMetrics() and RenderStyle::fontMetrics() to fontMetricsOfPrimaryFont()</short_desc>
          <delta_ts>2022-02-01 21:13:01 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>dbarton</cc>
    
    <cc>dino</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>pangle</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>samuel_white</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1835826</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-01-31 20:33:22 -0800</bug_when>
    <thetext>Rename FontCascade::fontMetrics() and RenderStyle::fontMetrics() to fontMetricsOfPrimaryFont()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835828</commentid>
    <comment_count>1</comment_count>
      <attachid>450493</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-01-31 20:34:45 -0800</bug_when>
    <thetext>Created attachment 450493
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835829</commentid>
    <comment_count>2</comment_count>
      <attachid>450494</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-01-31 20:49:05 -0800</bug_when>
    <thetext>Created attachment 450494
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835830</commentid>
    <comment_count>3</comment_count>
      <attachid>450495</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-01-31 20:59:11 -0800</bug_when>
    <thetext>Created attachment 450495
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835831</commentid>
    <comment_count>4</comment_count>
      <attachid>450496</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-01-31 21:03:16 -0800</bug_when>
    <thetext>Created attachment 450496
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835832</commentid>
    <comment_count>5</comment_count>
      <attachid>450497</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-01-31 21:29:43 -0800</bug_when>
    <thetext>Created attachment 450497
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835836</commentid>
    <comment_count>6</comment_count>
      <attachid>450499</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-01-31 21:56:45 -0800</bug_when>
    <thetext>Created attachment 450499
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835845</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-31 23:45:16 -0800</bug_when>
    <thetext>Committed r288868 (246620@main): &lt;https://commits.webkit.org/246620@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 450499.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835847</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-31 23:46:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/88314722&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835994</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-02-01 08:54:29 -0800</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #0)
&gt; Rename FontCascade::fontMetrics() and RenderStyle::fontMetrics() to
&gt; fontMetricsOfPrimaryFont()

But do we need the word &quot;font&quot; twice in this name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836005</commentid>
    <comment_count>10</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-02-01 09:17:45 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #9)
&gt; (In reply to Myles C. Maxfield from comment #0)
&gt; &gt; Rename FontCascade::fontMetrics() and RenderStyle::fontMetrics() to
&gt; &gt; fontMetricsOfPrimaryFont()
&gt; 
&gt; But do we need the word &quot;font&quot; twice in this name.

I thought that would be better than “primaryFontsMetrics” because the missing apostrophe makes it unclear whether “font” is plural or possessive.

Also making it a wordy name has the extra benefit that people might be less likely to call it in the future 😅</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836010</commentid>
    <comment_count>11</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-02-01 09:20:16 -0800</bug_when>
    <thetext>(And also better than primaryFontMetrics because it’s unclear whether the “primary” applies to the font or to the metrics.)

Maybe “metricsOfPrimaryFont()” is better?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836021</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-02-01 09:33:18 -0800</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #11)
&gt; Maybe “metricsOfPrimaryFont()” is better?

Yes, if I caught you in time I would have suggested that. Since fontMetricsOfPrimaryFont is a long unique name we can do it mechanically. do-webcore-rename can do it for us.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836321</commentid>
    <comment_count>13</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-02-01 21:13:01 -0800</bug_when>
    <thetext>Committed r288942 (246672@trunk): &lt;https://commits.webkit.org/246672@trunk&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450493</attachid>
            <date>2022-01-31 20:34:45 -0800</date>
            <delta_ts>2022-01-31 21:57:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235938-20220131203444.patch</filename>
            <type>text/plain</type>
            <size>102273</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4ODY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTAxNDllMjkwZDY2N2Rh
MWEyYzAxNjAxMjc4YTgyOGJlZjRkNTQ1Yi4uZmFkOGQ5OGY2ZGMxMjgzM2MzZmE5Y2QxZDUwZDM2
MjhjMDk0MTU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2MCBAQAorMjAyMi0wMS0zMSAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBG
b250Q2FzY2FkZTo6Zm9udE1ldHJpY3MoKSBhbmQgUmVuZGVyU3R5bGU6OmZvbnRNZXRyaWNzKCkg
dG8gZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTkzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEl0J3MgcHJvYmFibHkgZ29vZCB0byByZW1pbmQgcGVvcGxl
IHRoYXQgd2hlbiB0aGV5IGNhbGwgdGhpcyBmdW5jdGlvbiwKKyAgICAgICAgdGhleSBtaWdodCBu
b3QgYmUgZ2V0dGluZyB3aGF0IHRoZXkgbWlnaHQgdGhpbmsgdGhleSdyZSBnZXR0aW5nLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4K
KworICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZU5vbkNhbGNMZW5ndGhEb3VibGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmVxdWFsRm9yTGVuZ3RoUmVzb2x1dGlvbik6
CisgICAgICAgICogZGlzcGxheS9jc3MvRGlzcGxheUJveFBhaW50ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheTo6Qm94UGFpbnRlcjo6cGFpbnRCb3hDb250ZW50KToKKyAgICAgICAg
KiBkaXNwbGF5L2Nzcy9EaXNwbGF5U3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OlN0eWxlOjpmb250TWV0cmljc09mUHJpbWFyeUZvbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheTo6U3R5bGU6OmZvbnRNZXRyaWNzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0
RWxlbWVudDo6Y3JlYXRlSW5uZXJUZXh0U3R5bGUpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Rm9udFByb3h5Ojpmb250TWV0cmljc09mUHJpbWFyeUZv
bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZTo6ZHJhd1RleHRVbmNoZWNrZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6bWVhc3VyZVRleHRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjp0ZXh0T2Zmc2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OkZvbnRQcm94eTo6Zm9udE1ldHJpY3Mg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2UuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpkcmF3UnVsZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6OmRyYXdFbGVtZW50VGl0bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6ZXhwZWN0ZWRTaXplRm9yTGF5b3V0TGFiZWwpOgorICAgICAgICAoV2ViQ29y
ZTo6ZHJhd0xheW91dExhYmVsKToKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVGb3JtYXR0aW5nUXVpcmtzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6SW5saW5lRm9ybWF0dGluZ1F1aXJrczo6aW5pdGlhbExpbmVIZWlnaHQgY29uc3QpOgor
ICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxldmVsQm94
Lmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om1fc3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVMZXZlbEJveDo6cHJlZmVycmVkTGluZUhlaWdodCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUxldmVsQm94OjpwcmltYXJ5Zm9udE1ldHJp
Y3NPZlByaW1hcnlGb250IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5l
TGV2ZWxCb3g6OnByaW1hcnlGb250TWV0cmljcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmxvZ2ljYWxSZWN0Rm9yVGV4dFJ1biBjb25z
dCk6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGlu
ZUJveEJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRl
cjo6c2V0VmVydGljYWxHZW9tZXRyeUZvckxpbmVCcmVha0JveCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hCdWlsZGVyOjpzZXRJbml0aWFsVmVydGljYWxHZW9tZXRy
eUZvcklubGluZUJveCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkxpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OmNvbXB1dGVMaW5lQm94TG9naWNh
bEhlaWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hWZXJ0aWNh
bEFsaWduZXI6OmNvbXB1dGVSb290SW5saW5lQm94VmVydGljYWxQb3NpdGlvbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OmFsaWduSW5s
aW5lTGV2ZWxCb3hlcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
c2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmZsb2F0V2lkdGhGb3JT
aW1wbGVUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpmbG9hdFdp
ZHRoRm9yQ29tcGxleFRleHQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYXNjYWRlLmg6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6Zm9udE1ldHJpY3NP
ZlByaW1hcnlGb250IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpmb250
TWV0cmljcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL0NhcmV0UmVjdENv
bXB1dGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVDYXJldFJlY3RGb3JFbXB0
eUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUNhcmV0UmVjdEZvckJveCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL0xlZ2FjeUVsbGlwc2lzQm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeUVsbGlwc2lzQm94OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lF
bGxpcHNpc0JveDo6cGFpbnRNYXJrdXBCb3gpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5RWxs
aXBzaXNCb3g6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvTGVnYWN5SW5saW5l
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUJveDo6bG9naWNhbEhlaWdo
dCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL0xlZ2FjeUlubGluZUZsb3dCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6YWRkVG9MaW5lKToKKyAgICAg
ICAgKFdlYkNvcmU6OnBsYWNlQ2hpbGRJbmxpbmVCb3hlc0luQmxvY2tEaXJlY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0luQmxvY2tEaXJl
Y3Rpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnNldExvZ2ljYWxXaWR0aEZvclRleHRSdW4pOgorICAgICAgICAqIHJlbmRl
cmluZy9MZWdhY3lSb290SW5saW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJv
b3RJbmxpbmVCb3g6OmxpbmVTbmFwQWRqdXN0bWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lSb290SW5saW5lQm94Ojphc2NlbnRBbmREZXNjZW50Rm9yQm94IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6OnZlcnRpY2FsUG9zaXRpb25Gb3JC
b3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6aW5saW5lQmxvY2tCYXNlbGluZSBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9ja0Zsb3c6OmFkanVzdEluaXRpYWxMZXR0ZXJQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9ja0Zsb3c6OmZpcnN0TGluZUJhc2VsaW5lIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6aW5saW5lQmxvY2tCYXNlbGluZSBjb25zdCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnNl
dEltYWdlU2l6ZUZvckFsdFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnBh
aW50UmVwbGFjZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjptYXlBZmZlY3RMYXlvdXQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxpbmVCcmVhazo6YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXRlbU9mZnNldEZv
ckFsaWdubWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjppdGVtSGVpZ2h0
IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpwYWludCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMaXN0TWFya2VyOjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlz
dE1hcmtlcjo6dXBkYXRlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0TWFy
a2VyOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMaXN0TWFya2VyOjp1cGRhdGVNYXJnaW5zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxpc3RNYXJrZXI6OnJlbGF0aXZlTWFya2VyUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclJ1YnlSdW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUnVieVJ1bjo6bGF5b3V0
QmxvY2spOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0Qm94UGFpbnRlcjo6cGFpbnRGb3JlZ3JvdW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRCb3hQYWludGVyOjpwYWludENvbXBvc2l0aW9uVW5kZXJsaW5lKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRCb3hQYWludGVyOjpjYWxjdWxhdGVEb2N1bWVudE1hcmtlckJvdW5k
cyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Qm94UGFpbnRlcjo6dGV4dE9yaWdpbkZyb21QYWlu
dFJlY3QgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dERlY29yYXRpb25QYWludGVyOjpwYWludEJhY2tn
cm91bmREZWNvcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblBhaW50
ZXI6OnBhaW50Rm9yZWdyb3VuZERlY29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRE
ZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRMaW5lVGhyb3VnaCk6CisgICAgICAgICogcmVuZGVyaW5n
L1RleHRQYWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRQYWludGVyOjpwYWludFRl
eHRBbmRFbXBoYXNpc01hcmtzSWZOZWVkZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9saW5lL0xp
bmVJbmxpbmVIZWFkZXJzLmg6CisgICAgICAgIChXZWJDb3JlOjpyZXF1aXJlc0xpbmVCb3hGb3JD
b250ZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmF4aXNIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6dG9V
c2VyVW5pdHMpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxSb290Ojp2ZXJ0aWNhbFBhcmFtZXRl
cnMpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTY3JpcHRzOjp2ZXJ0aWNhbFBhcmFtZXRl
cnMgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJP
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFVuZGVyT3Zlcjo6dmVydGlj
YWxQYXJhbWV0ZXJzIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmZvbnRNZXRyaWNzT2ZQcmlt
YXJ5Rm9udCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y29tcHV0ZUxp
bmVIZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmZvbnRNZXRy
aWNzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lVGV4dDo6cG9zaXRpb25Gb3JQb2ludCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnNlbGVjdGlvblJlY3RGb3JUZXh0RnJhZ21lbnQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0
aW9uV2l0aFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50
VGV4dFdpdGhTaGFkb3dzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OmNh
bGN1bGF0ZUJvdW5kYXJpZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4
dEJveDo6bm9kZUF0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91
dEVuZ2luZUJhc2VsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRMYXlvdXRFbmdp
bmVCYXNlbGluZTo6Y2FsY3VsYXRlQmFzZWxpbmVTaGlmdCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmU6OmNhbGN1bGF0ZUFsaWdubWVudEJhc2Vs
aW5lU2hpZnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dExheW91dEVuZ2luZUJh
c2VsaW5lOjpjYWxjdWxhdGVHbHlwaEFkdmFuY2VBbmRPcmllbnRhdGlvbiBjb25zdCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdUZXh0TWV0cmljczo6U1ZHVGV4dE1ldHJpY3MpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvU1ZHVGV4dFF1ZXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGN1bGF0ZUdseXBoQm91
bmRhcmllcyk6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVy
Rmlyc3RMZXR0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3R5bGVGb3JGaXJzdExldHRlcik6
CisgICAgICAgICogc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMpOgorICAgICAgICAqIHN0eWxlL1N0eWxl
UmVzb2x2ZUZvckZvbnRSYXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OnJlc29sdmVG
b3JGb250UmF3KToKKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3RoQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdMZW5ndGhDb250ZXh0Ojpjb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzVG9F
WFMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZh
bHVlRnJvbUVYU1RvVXNlclVuaXRzIGNvbnN0KToKKwogMjAyMi0wMS0zMSAgU2FpZCBBYm91LUhh
bGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIFBhdHRlcm4g
c2hvdWxkIGhvbGQgU291cmNlSW1hZ2Ugd2hpY2ggY2FuIGJlIGNvbnZlcnRlZCB0byBhIE5hdGl2
ZUltYWdlIG9ubHkgd2hlbiBuZWVkZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggM2FmNzJiMzhmNDRmMDE1ZjM0NDRj
NTJmYmQ1ZjYzZGRhYjY1NGYwMS4uZGE2MzE0YzllMzc5NTc2NzY4MzE3NDc1ODEzN2RkYTBlNjQ2
NzNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMS0zMSAgTXlsZXMgQy4gTWF4
ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBGb250Q2FzY2Fk
ZTo6Zm9udE1ldHJpY3MoKSBhbmQgUmVuZGVyU3R5bGU6OmZvbnRNZXRyaWNzKCkgdG8gZm9udE1l
dHJpY3NPZlByaW1hcnlGb250KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNTkzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlKToK
KwogMjAyMi0wMS0zMSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbR1BVIFByb2Nlc3NdIFBhdHRlcm4gc2hvdWxkIGhvbGQgU291cmNlSW1hZ2Ugd2hpY2gg
Y2FuIGJlIGNvbnZlcnRlZCB0byBhIE5hdGl2ZUltYWdlIG9ubHkgd2hlbiBuZWVkZWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBhOGVjNWRlZGUxMjFmZDcwMDhmNGJmNmRlN2E0NmQw
NzZjMTA3YWEyLi5mZWVhZTA3Y2VkYTk5MDc0ZGE4Nzc2YjU3NjU2NDM5NWU0NTcwNDY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDEtMzEgIE15
bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUg
Rm9udENhc2NhZGU6OmZvbnRNZXRyaWNzKCkgYW5kIFJlbmRlclN0eWxlOjpmb250TWV0cmljcygp
IHRvIGZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU5MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJv
bGxlci5tbToKKyAgICAgICAgKCtbV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciBfZGljdGlv
bmFyeVBvcHVwSW5mb0ZvclJhbmdlOmluRnJhbWU6d2l0aExvb2t1cE9wdGlvbnM6aW5kaWNhdG9y
T3B0aW9uczp0cmFuc2l0aW9uOl0pOgorCiAyMDIyLTAxLTMwICBSeW9zdWtlIE5pd2EgIDxybml3
YUB3ZWJraXQub3JnPgogCiAgICAgICAgIERlbGV0ZSBydW50aW1lIHByZWZlcmVuY2UgZm9yIGVu
YWJsaW5nIGtleWdlbiBlbGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UHJpbWl0aXZlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVl
LmNwcAppbmRleCAwMDdjYWVkNzhlMTI5NDdiYmQ3YmNlZGQ4YmQxNmEyZjliMTQ5NDA4Li5mNjQy
NjVhMDMyNzk5YjdlZjMzOGQ3Njk3NDZjYzNmOWNhYjM4ZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAgLTgxNCw3ICs4MTQsNyBAQCBkb3VibGUgQ1NTUHJp
bWl0aXZlVmFsdWU6OmNvbXB1dGVOb25DYWxjTGVuZ3RoRG91YmxlKGNvbnN0IENTU1RvTGVuZ3Ro
Q29udmVyc2lvbgogICAgICAgICAvLyBXZSByZWFsbHkgbmVlZCB0byBjb21wdXRlIEVYIHVzaW5n
IGZvbnRNZXRyaWNzIGZvciB0aGUgb3JpZ2luYWwgc3BlY2lmaWVkU2l6ZSBhbmQgbm90IHVzZQog
ICAgICAgICAvLyBvdXIgYWN0dWFsIGNvbnN0cnVjdGVkIHJlbmRlcmluZyBmb250LgogICAgICAg
ICBBU1NFUlQoY29udmVyc2lvbkRhdGEuc3R5bGUoKSk7Ci0gICAgICAgIHZhbHVlID0gY29tcHV0
ZVVuem9vbWVkTm9uQ2FsY0xlbmd0aERvdWJsZShwcmltaXRpdmVUeXBlLCB2YWx1ZSwgY29udmVy
c2lvbkRhdGEucHJvcGVydHlUb0NvbXB1dGUoKSwgJmNvbnZlcnNpb25EYXRhLnN0eWxlKCktPmZv
bnRNZXRyaWNzKCksICZjb252ZXJzaW9uRGF0YS5zdHlsZSgpLT5mb250RGVzY3JpcHRpb24oKSk7
CisgICAgICAgIHZhbHVlID0gY29tcHV0ZVVuem9vbWVkTm9uQ2FsY0xlbmd0aERvdWJsZShwcmlt
aXRpdmVUeXBlLCB2YWx1ZSwgY29udmVyc2lvbkRhdGEucHJvcGVydHlUb0NvbXB1dGUoKSwgJmNv
bnZlcnNpb25EYXRhLnN0eWxlKCktPmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLCAmY29udmVy
c2lvbkRhdGEuc3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCkpOwogICAgICAgICBicmVhazsKIAog
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19SRU1TOgpAQCAtODI0LDcgKzgyNCw3IEBAIGRvdWJs
ZSBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZU5vbkNhbGNMZW5ndGhEb3VibGUoY29uc3QgQ1NT
VG9MZW5ndGhDb252ZXJzaW9uCiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NIUzoKICAgICBj
YXNlIENTU1VuaXRUeXBlOjpDU1NfSUM6CiAgICAgICAgIEFTU0VSVChjb252ZXJzaW9uRGF0YS5z
dHlsZSgpKTsKLSAgICAgICAgdmFsdWUgPSBjb21wdXRlVW56b29tZWROb25DYWxjTGVuZ3RoRG91
YmxlKHByaW1pdGl2ZVR5cGUsIHZhbHVlLCBjb252ZXJzaW9uRGF0YS5wcm9wZXJ0eVRvQ29tcHV0
ZSgpLCAmY29udmVyc2lvbkRhdGEuc3R5bGUoKS0+Zm9udE1ldHJpY3MoKSk7CisgICAgICAgIHZh
bHVlID0gY29tcHV0ZVVuem9vbWVkTm9uQ2FsY0xlbmd0aERvdWJsZShwcmltaXRpdmVUeXBlLCB2
YWx1ZSwgY29udmVyc2lvbkRhdGEucHJvcGVydHlUb0NvbXB1dGUoKSwgJmNvbnZlcnNpb25EYXRh
LnN0eWxlKCktPmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpKTsKICAgICAgICAgYnJlYWs7CiAK
ICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUFg6CkBAIC05MTUsNyArOTE1LDcgQEAgZG91Ymxl
IENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTm9uQ2FsY0xlbmd0aERvdWJsZShjb25zdCBDU1NU
b0xlbmd0aENvbnZlcnNpb24KICAgICAgICAgQVNTRVJUKGNvbnZlcnNpb25EYXRhLnN0eWxlKCkp
OwogICAgICAgICBpZiAoY29udmVyc2lvbkRhdGEuY29tcHV0aW5nTGluZUhlaWdodCgpIHx8IGNv
bnZlcnNpb25EYXRhLmNvbXB1dGluZ0ZvbnRTaXplKCkpIHsKICAgICAgICAgICAgIC8vIFRyeSB0
byBnZXQgdGhlIHBhcmVudCdzIGNvbXB1dGVkIGxpbmUtaGVpZ2h0LCBvciBmYWxsIGJhY2sgdG8g
dGhlIGluaXRpYWwgbGluZS1oZWlnaHQgb2YgdGhpcyBlbGVtZW50J3MgZm9udCBzcGFjaW5nLgot
ICAgICAgICAgICAgdmFsdWUgKj0gY29udmVyc2lvbkRhdGEucGFyZW50U3R5bGUoKSA/IGNvbnZl
cnNpb25EYXRhLnBhcmVudFN0eWxlKCktPmNvbXB1dGVkTGluZUhlaWdodCgpIDogY29udmVyc2lv
bkRhdGEuc3R5bGUoKS0+Zm9udE1ldHJpY3MoKS5saW5lU3BhY2luZygpOworICAgICAgICAgICAg
dmFsdWUgKj0gY29udmVyc2lvbkRhdGEucGFyZW50U3R5bGUoKSA/IGNvbnZlcnNpb25EYXRhLnBh
cmVudFN0eWxlKCktPmNvbXB1dGVkTGluZUhlaWdodCgpIDogY29udmVyc2lvbkRhdGEuc3R5bGUo
KS0+Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkubGluZVNwYWNpbmcoKTsKICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICB2YWx1ZSAqPSBjb252ZXJzaW9uRGF0YS5zdHlsZSgpLT5jb21wdXRl
ZExpbmVIZWlnaHQoKTsKICAgICAgICAgYnJlYWs7CkBAIC05NTEsOSArOTUxLDkgQEAgYm9vbCBD
U1NQcmltaXRpdmVWYWx1ZTo6ZXF1YWxGb3JMZW5ndGhSZXNvbHV0aW9uKGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZUEsIGNvbnMKICAgICBpZiAoc3R5bGVBLmZvbnREZXNjcmlwdGlvbigpLnNwZWNp
ZmllZFNpemUoKSAhPSBzdHlsZUIuZm9udERlc2NyaXB0aW9uKCkuc3BlY2lmaWVkU2l6ZSgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoc3R5bGVBLmZvbnRNZXRyaWNzKCkueEhl
aWdodCgpICE9IHN0eWxlQi5mb250TWV0cmljcygpLnhIZWlnaHQoKSkKKyAgICBpZiAoc3R5bGVB
LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLnhIZWlnaHQoKSAhPSBzdHlsZUIuZm9udE1ldHJp
Y3NPZlByaW1hcnlGb250KCkueEhlaWdodCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
aWYgKHN0eWxlQS5mb250TWV0cmljcygpLnplcm9XaWR0aCgpICE9IHN0eWxlQi5mb250TWV0cmlj
cygpLnplcm9XaWR0aCgpKQorICAgIGlmIChzdHlsZUEuZm9udE1ldHJpY3NPZlByaW1hcnlGb250
KCkuemVyb1dpZHRoKCkgIT0gc3R5bGVCLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLnplcm9X
aWR0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoc3R5bGVBLnpvb20oKSAh
PSBzdHlsZUIuem9vbSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3Mv
RGlzcGxheUJveFBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxh
eUJveFBhaW50ZXIuY3BwCmluZGV4IDJjNjNhZThjNGFlZWJlZjBjMTBhNmVkMjUxOGQ1MGFjM2Jl
MjVjNzQuLjU5NWUwY2U1NzRjMTQxZjJhYzAwZWRlYmM3MTcxNzkxZjAxZTIyMmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hQYWludGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94UGFpbnRlci5jcHAKQEAgLTc3
LDcgKzc3LDcgQEAgdm9pZCBCb3hQYWludGVyOjpwYWludEJveENvbnRlbnQoY29uc3QgQm94JiBi
b3gsIFBhaW50aW5nQ29udGV4dCYgcGFpbnRpbmdDb250ZXgKICAgICAgICAgcGFpbnRpbmdDb250
ZXh0LmNvbnRleHQuc2V0RmlsbENvbG9yKHN0eWxlLmNvbG9yKCkpOwogCiAgICAgICAgIC8vIEZJ
WE1FOiBBZGQgbm9uLWJhc2VsaW5lIGFsaWduIHBhaW50aW5nCi0gICAgICAgIGF1dG8gYmFzZWxp
bmUgPSB0ZXh0UmVjdC55KCkgKyBzdHlsZS5mb250TWV0cmljcygpLmFzY2VudCgpOworICAgICAg
ICBhdXRvIGJhc2VsaW5lID0gdGV4dFJlY3QueSgpICsgc3R5bGUuZm9udE1ldHJpY3NPZlByaW1h
cnlGb250KCkuYXNjZW50KCk7CiAgICAgICAgIGF1dG8gZXhwYW5zaW9uID0gdGV4dEJveC5leHBh
bnNpb24oKTsKIAogICAgICAgICBhdXRvIHRleHRSdW4gPSBUZXh0UnVuIHsgdGV4dEJveC50ZXh0
KCkub3JpZ2luYWxDb250ZW50KCksIHRleHRSZWN0LngoKSwgZXhwYW5zaW9uLmhvcml6b250YWxF
eHBhbnNpb24sIGV4cGFuc2lvbi5iZWhhdmlvciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZGlzcGxheS9jc3MvRGlzcGxheVN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nz
cy9EaXNwbGF5U3R5bGUuaAppbmRleCA3ZWUzMGEzZTEzMTI5NGEzZDU1YWNlZjRjYWEwYTcxYzNk
MTBhZDU4Li5mZGI0YTJlNDU2ODNlNWJlOWI1MDJmZmE3MWFhNmZlOTgxMjk2MGNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5U3R5bGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5U3R5bGUuaApAQCAtODcsNyArODcsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBwYXJ0aWNpcGF0ZXNJblpPcmRlclNvcnRpbmcoKSBjb25zdCB7IHJl
dHVybiBpc1Bvc2l0aW9uZWQoKSB8fCBpc1N0YWNraW5nQ29udGV4dCgpOyB9CiAKICAgICBjb25z
dCBGb250Q2FzY2FkZSYgZm9udENhc2NhZGUoKSBjb25zdCB7IHJldHVybiBtX2ZvbnRDYXNjYWRl
OyB9Ci0gICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzKCkgY29uc3QgeyByZXR1cm4g
bV9mb250Q2FzY2FkZS5mb250TWV0cmljcygpOyB9CisgICAgY29uc3QgRm9udE1ldHJpY3MmIGZv
bnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udENhc2NhZGUuZm9u
dE1ldHJpY3NPZlByaW1hcnlGb250KCk7IH0KICAgICAKICAgICBmbG9hdCBvcGFjaXR5KCkgY29u
c3QgeyByZXR1cm4gbV9vcGFjaXR5OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwCmluZGV4IGQwNzYxZWVjOWYzYzI4NTkzYTI4NjNjMDBjOTM1N2ExZjc2YTc4MmUu
LjA1YzVmYzRkOTI2YzE5NTBkNTViNmJlMDc2MGYyN2YyZTc5YmFlYTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMjE3OCw3ICsyMTc4LDcgQEAgUmVuZGVy
U3R5bGUgSFRNTElucHV0RWxlbWVudDo6Y3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlKQogICAgIH0KIAogICAgIC8vIERvIG5vdCBhbGxvdyBsaW5lLWhlaWdodCB0
byBiZSBzbWFsbGVyIHRoYW4gb3VyIGRlZmF1bHQuCi0gICAgaWYgKHRleHRCbG9ja1N0eWxlLmZv
bnRNZXRyaWNzKCkubGluZVNwYWNpbmcoKSA+IHN0eWxlLmNvbXB1dGVkTGluZUhlaWdodCgpKQor
ICAgIGlmICh0ZXh0QmxvY2tTdHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5saW5lU3Bh
Y2luZygpID4gc3R5bGUuY29tcHV0ZWRMaW5lSGVpZ2h0KCkpCiAgICAgICAgIHRleHRCbG9ja1N0
eWxlLnNldExpbmVIZWlnaHQoUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lSGVpZ2h0KCkpOwogCiAg
ICAgcmV0dXJuIHRleHRCbG9ja1N0eWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAppbmRleCBiODll
NzdmYjYwMGUwZWNhOTNmMDE5MjQzOWU0MTA3M2M5NWFkMTM4Li5kOWVjZjY2ZDZkNmExNGVlYzM3
ZmUxMmZmYzkxZjc3ZjJlYjFmODAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcApAQCAtNDA0LDkg
KzQwNCw5IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Rm9udFByb3h5Ojpp
bml0aWFsaXplKEZvbnRTZWxlY3RvciYgZm9udFNlbGVjCiAgICAgbV9mb250LmZvbnRTZWxlY3Rv
cigpLT5yZWdpc3RlckZvckludmFsaWRhdGlvbkNhbGxiYWNrcygqdGhpcyk7CiB9CiAKLWNvbnN0
IEZvbnRNZXRyaWNzJiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpGb250UHJveHk6OmZv
bnRNZXRyaWNzKCkgY29uc3QKK2NvbnN0IEZvbnRNZXRyaWNzJiBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpGb250UHJveHk6OmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fZm9udC5mb250TWV0cmljcygpOworICAgIHJldHVybiBtX2ZvbnQuZm9u
dE1ldHJpY3NPZlByaW1hcnlGb250KCk7CiB9CiAKIGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRp
b24mIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OkZvbnRQcm94eTo6Zm9udERlc2NyaXB0
aW9uKCkgY29uc3QKQEAgLTI0MDcsNyArMjQwNyw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZTo6ZHJhd1RleHRVbmNoZWNrZWQoY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgZG91
CiB7CiAgICAgYXV0byogYyA9IGRyYXdpbmdDb250ZXh0KCk7CiAgICAgYXV0byYgZm9udFByb3h5
ID0gKnRoaXMtPmZvbnRQcm94eSgpOwotICAgIGNvbnN0IGF1dG8mIGZvbnRNZXRyaWNzID0gZm9u
dFByb3h5LmZvbnRNZXRyaWNzKCk7CisgICAgY29uc3QgYXV0byYgZm9udE1ldHJpY3MgPSBmb250
UHJveHkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCk7CiAKICAgICAvLyBGSVhNRTogTmVlZCB0
byB0dXJuIG9mZiBmb250IHNtb290aGluZy4KIApAQCAtMjUzMCw3ICsyNTMwLDcgQEAgUmVmPFRl
eHRNZXRyaWNzPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjptZWFzdXJlVGV4dEludGVy
bmFsKGNvbnN0IFRleHRSdW4KICAgICBSZWY8VGV4dE1ldHJpY3M+IG1ldHJpY3MgPSBUZXh0TWV0
cmljczo6Y3JlYXRlKCk7CiAKICAgICBhdXRvJiBmb250ID0gKmZvbnRQcm94eSgpOwotICAgIGF1
dG8mIGZvbnRNZXRyaWNzID0gZm9udC5mb250TWV0cmljcygpOworICAgIGF1dG8mIGZvbnRNZXRy
aWNzID0gZm9udC5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsKIAogICAgIEdseXBoT3ZlcmZs
b3cgZ2x5cGhPdmVyZmxvdzsKICAgICBnbHlwaE92ZXJmbG93LmNvbXB1dGVCb3VuZHMgPSB0cnVl
OwpAQCAtMjU1Nyw3ICsyNTU3LDcgQEAgUmVmPFRleHRNZXRyaWNzPiBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlOjptZWFzdXJlVGV4dEludGVybmFsKGNvbnN0IFRleHRSdW4KIAogRmxvYXRQ
b2ludCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjp0ZXh0T2Zmc2V0KGZsb2F0IHdpZHRo
LCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKLSAgICBhdXRvJiBmb250TWV0cmljcyA9IGZv
bnRQcm94eSgpLT5mb250TWV0cmljcygpOworICAgIGF1dG8mIGZvbnRNZXRyaWNzID0gZm9udFBy
b3h5KCktPmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwogICAgIEZsb2F0UG9pbnQgb2Zmc2V0
OwogCiAgICAgc3dpdGNoIChzdGF0ZSgpLnRleHRCYXNlbGluZSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5o
CmluZGV4IGQ0YWUwZTQxMGNjOTUzZTliNmE4N2U0MjZjM2U5ZjNlZmYzNDI0NDYuLmQ0YzVhNGQ3
YjMwMGJlNGU5NGNiYmJkZDg2NDIwMDhkM2EwY2RjOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmgKQEAg
LTIzNCw3ICsyMzQsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgYm9vbCByZWFsaXplZCgpIGNvbnN0
IHsgcmV0dXJuIG1fZm9udC5mb250U2VsZWN0b3IoKTsgfQogICAgICAgICB2b2lkIGluaXRpYWxp
emUoRm9udFNlbGVjdG9yJiwgY29uc3QgRm9udENhc2NhZGUmKTsKLSAgICAgICAgY29uc3QgRm9u
dE1ldHJpY3MmIGZvbnRNZXRyaWNzKCkgY29uc3Q7CisgICAgICAgIGNvbnN0IEZvbnRNZXRyaWNz
JiBmb250TWV0cmljc09mUHJpbWFyeUZvbnQoKSBjb25zdDsKICAgICAgICAgY29uc3QgRm9udENh
c2NhZGVEZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uKCkgY29uc3Q7CiAgICAgICAgIGZsb2F0
IHdpZHRoKGNvbnN0IFRleHRSdW4mLCBHbHlwaE92ZXJmbG93KiA9IDApIGNvbnN0OwogICAgICAg
ICB2b2lkIGRyYXdCaWRpVGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29u
c3QgRmxvYXRQb2ludCYsIEZvbnRDYXNjYWRlOjpDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJs
YXkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCmlu
ZGV4IDJhMDRmMDAwODNiZmMwZjNjZWI2ZDNhYmYwODdlZTgzNTJmZDE1NGIuLjUwYWNmYWM0ODNi
NDgzMTNkYjBmZmM1ZDFkMzczOTYyNWJiMzc0MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKQEAgLTg2OSw3ICs4NjksNyBAQCB2b2lkIEluc3Bl
Y3Rvck92ZXJsYXk6OmRyYXdSdWxlcnMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJ
bnNwZWN0b3JPdmVybAogCiAgICAgICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciB2ZXJ0aWNhbExhYmVsU3RhdGVTYXZlcihjb250ZXh0KTsKICAgICAgICAgICAgICAgICBjb250
ZXh0LnRyYW5zbGF0ZSh6b29tKHgpICsgMC41Ziwgc2Nyb2xsWSk7Ci0gICAgICAgICAgICAgICAg
Y29udGV4dC5kcmF3VGV4dChmb250LCBUZXh0UnVuKFN0cmluZzo6bnVtYmVyKHgpKSwgeyAyLCBk
cmF3VG9wRWRnZSA/IHJ1bGVyTGFiZWxTaXplIDogcnVsZXJMYWJlbFNpemUgLSBydWxlclNpemUg
KyBmb250LmZvbnRNZXRyaWNzKCkuaGVpZ2h0KCkgLSAxLjBmIH0pOworICAgICAgICAgICAgICAg
IGNvbnRleHQuZHJhd1RleHQoZm9udCwgVGV4dFJ1bihTdHJpbmc6Om51bWJlcih4KSksIHsgMiwg
ZHJhd1RvcEVkZ2UgPyBydWxlckxhYmVsU2l6ZSA6IHJ1bGVyTGFiZWxTaXplIC0gcnVsZXJTaXpl
ICsgZm9udC5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5oZWlnaHQoKSAtIDEuMGYgfSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtOTI4LDcgKzkyOCw3IEBAIHZvaWQgSW5zcGVj
dG9yT3ZlcmxheTo6ZHJhd1J1bGVycyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IElu
c3BlY3Rvck92ZXJsCiAgICAgICAgIGNvbnN0IGZsb2F0IHBhZGRpbmcgPSAyOwogICAgICAgICBj
b25zdCBmbG9hdCByYWRpdXMgPSA0OwogICAgICAgICBmbG9hdCBmb250V2lkdGggPSBmb250Lndp
ZHRoKHZpZXdwb3J0VGV4dFJ1bik7Ci0gICAgICAgIGZsb2F0IGZvbnRIZWlnaHQgPSBmb250LmZv
bnRNZXRyaWNzKCkuZmxvYXRIZWlnaHQoKTsKKyAgICAgICAgZmxvYXQgZm9udEhlaWdodCA9IGZv
bnQuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuZmxvYXRIZWlnaHQoKTsKICAgICAgICAgRmxv
YXRSZWN0IHZpZXdwb3J0VGV4dFJlY3QobWFyZ2luLCBtYXJnaW4sIChwYWRkaW5nICogMi4wZikg
KyBmb250V2lkdGgsIChwYWRkaW5nICogMi4wZikgKyBmb250SGVpZ2h0KTsKICAgICAgICAgY29u
c3QgYXV0byB2aWV3cG9ydFRleHRSZWN0Q2VudGVyID0gdmlld3BvcnRUZXh0UmVjdC5jZW50ZXIo
KTsKIApAQCAtOTY2LDcgKzk2Niw3IEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZHJhd1J1bGVy
cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEluc3BlY3Rvck92ZXJsCiAgICAgICAg
IGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3Qodmlld3BvcnRUZXh0UmVj
dCwgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkocmFkaXVzKSksIHJ1bGVyQmFja2dyb3VuZENvbG9y
KTsKIAogICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwotICAgICAg
ICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIHZpZXdwb3J0VGV4dFJ1biwge21hcmdpbiArICBwYWRk
aW5nLCBtYXJnaW4gKyBwYWRkaW5nICsgZm9udEhlaWdodCAtIGZvbnQuZm9udE1ldHJpY3MoKS5k
ZXNjZW50KCkgfSk7CisgICAgICAgIGNvbnRleHQuZHJhd1RleHQoZm9udCwgdmlld3BvcnRUZXh0
UnVuLCB7IG1hcmdpbiArICBwYWRkaW5nLCBtYXJnaW4gKyBwYWRkaW5nICsgZm9udEhlaWdodCAt
IGZvbnQuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuZGVzY2VudCgpIH0pOwogICAgIH0KIH0K
IApAQCAtMTA0MCw3ICsxMDQwLDcgQEAgUGF0aCBJbnNwZWN0b3JPdmVybGF5OjpkcmF3RWxlbWVu
dFRpdGxlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgTm9kZSYgbm9kZSwgY28KICAgICBGb250
Q2FzY2FkZSBmb250KFdURk1vdmUoZm9udERlc2NyaXB0aW9uKSwgMCwgMCk7CiAgICAgZm9udC51
cGRhdGUobnVsbHB0cik7CiAKLSAgICBpbnQgZm9udEhlaWdodCA9IGZvbnQuZm9udE1ldHJpY3Mo
KS5oZWlnaHQoKTsKKyAgICBpbnQgZm9udEhlaWdodCA9IGZvbnQuZm9udE1ldHJpY3NPZlByaW1h
cnlGb250KCkuaGVpZ2h0KCk7CiAKICAgICBmbG9hdCBlbGVtZW50RGF0YVdpZHRoOwogICAgIGZs
b2F0IGVsZW1lbnREYXRhSGVpZ2h0ID0gZm9udEhlaWdodDsKQEAgLTEzNDgsNyArMTM0OCw3IEBA
IHN0YXRpYyBGbG9hdFNpemUgZXhwZWN0ZWRTaXplRm9yTGF5b3V0TGFiZWwoU3RyaW5nIGxhYmVs
LCBJbnNwZWN0b3JPdmVybGF5OjpMYWJlCiB7CiAgICAgYXV0byBmb250ID0gZm9udEZvckxheW91
dExhYmVsKCk7CiAKLSAgICBmbG9hdCB0ZXh0SGVpZ2h0ID0gZm9udC5mb250TWV0cmljcygpLmZs
b2F0SGVpZ2h0KCk7CisgICAgZmxvYXQgdGV4dEhlaWdodCA9IGZvbnQuZm9udE1ldHJpY3NPZlBy
aW1hcnlGb250KCkuZmxvYXRIZWlnaHQoKTsKICAgICBmbG9hdCB0ZXh0V2lkdGggPSBmb250Lndp
ZHRoKFRleHRSdW4obGFiZWwpKTsKICAgICBpZiAobWF4aW11bVdpZHRoICYmIHRleHRXaWR0aCAr
IChsYXlvdXRMYWJlbFBhZGRpbmcgKiAyKSA+IG1heGltdW1XaWR0aCkKICAgICAgICAgdGV4dFdp
ZHRoID0gbWF4aW11bVdpZHRoOwpAQCAtMTM3Niw4ICsxMzc2LDggQEAgc3RhdGljIHZvaWQgZHJh
d0xheW91dExhYmVsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU3RyaW5nIGxhYmVsLCBGbG9h
dFBvaW50IHAKICAgICBjb250ZXh0LnRyYW5zbGF0ZShwb2ludCk7CiAKICAgICBhdXRvIGZvbnQg
PSBmb250Rm9yTGF5b3V0TGFiZWwoKTsKLSAgICBmbG9hdCB0ZXh0SGVpZ2h0ID0gZm9udC5mb250
TWV0cmljcygpLmZsb2F0SGVpZ2h0KCk7Ci0gICAgZmxvYXQgdGV4dERlc2NlbnQgPSBmb250LmZv
bnRNZXRyaWNzKCkuZmxvYXREZXNjZW50KCk7CisgICAgZmxvYXQgdGV4dEhlaWdodCA9IGZvbnQu
Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuZmxvYXRIZWlnaHQoKTsKKyAgICBmbG9hdCB0ZXh0
RGVzY2VudCA9IGZvbnQuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuZmxvYXREZXNjZW50KCk7
CiAgICAgCiAgICAgZmxvYXQgdGV4dFdpZHRoID0gZm9udC53aWR0aChUZXh0UnVuKGxhYmVsKSk7
CiAgICAgaWYgKG1heGltdW1XaWR0aCAmJiB0ZXh0V2lkdGggKyAobGF5b3V0TGFiZWxQYWRkaW5n
ICogMikgPiBtYXhpbXVtV2lkdGgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdRdWlya3MuY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9y
bWF0dGluZ1F1aXJrcy5jcHAKaW5kZXggOWM4ZThjOWE4NzcyMDI3ODdiMDVlYjAzYWZiNzMzODE0
M2M2NTBjOS4uNTllODdhM2FjNTI0NGQwODk5Njc1M2FiNWNiYTdjZmM4MDQ1NDE5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lRm9ybWF0dGluZ1F1aXJrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ1F1aXJrcy5jcHAKQEAgLTQ0LDcg
KzQ0LDcgQEAgSW5saW5lTGF5b3V0VW5pdCBJbmxpbmVGb3JtYXR0aW5nUXVpcmtzOjppbml0aWFs
TGluZUhlaWdodCgpIGNvbnN0CiAgICAgQVNTRVJUKCFsYXlvdXRTdGF0ZSgpLmluU3RhbmRhcmRz
TW9kZSgpKTsKICAgICAvLyBOZWdhdGl2ZSBsaW5lSGVpZ2h0IHZhbHVlIG1lYW5zIHRoZSBsaW5l
LWhlaWdodCBpcyBub3Qgc2V0CiAgICAgYXV0byYgcm9vdFN0eWxlID0gZm9ybWF0dGluZ0NvbnRl
eHQoKS5yb290KCkuc3R5bGUoKTsKLSAgICByZXR1cm4gcm9vdFN0eWxlLmxpbmVIZWlnaHQoKS5p
c05lZ2F0aXZlKCkgPyByb290U3R5bGUuZm9udE1ldHJpY3MoKS5mbG9hdEhlaWdodCgpIDogcm9v
dFN0eWxlLmNvbXB1dGVkTGluZUhlaWdodCgpOworICAgIHJldHVybiByb290U3R5bGUubGluZUhl
aWdodCgpLmlzTmVnYXRpdmUoKSA/IHJvb3RTdHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQo
KS5mbG9hdEhlaWdodCgpIDogcm9vdFN0eWxlLmNvbXB1dGVkTGluZUhlaWdodCgpOwogfQogCiBi
b29sIElubGluZUZvcm1hdHRpbmdRdWlya3M6OmlubGluZUxldmVsQm94QWZmZWN0c0xpbmVCb3go
Y29uc3QgSW5saW5lTGV2ZWxCb3gmIGlubGluZUxldmVsQm94LCBjb25zdCBMaW5lQm94JiBsaW5l
Qm94KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lTGV2ZWxCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxldmVsQm94LmgKaW5kZXggNTI5YTIxOGU1
MmQ1MTA4MTJkOGVlOTdlNWNmMWEzYjQ4NGMwNTEwNC4uZDcwMDM0NDU3YWJkZGVkZDEwNjQ4OTFl
N2Q3NTE3ZTdmZTdmNzUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGV2ZWxCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMZXZlbEJveC5oCkBAIC03
MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICBWZXJ0aWNhbEFsaWdubWVudCB2ZXJ0aWNhbEFsaWdu
KCkgY29uc3Q7CiAgICAgSW5saW5lTGF5b3V0VW5pdCBwcmVmZXJyZWRMaW5lSGVpZ2h0KCkgY29u
c3Q7CiAgICAgYm9vbCBpc1ByZWZlcnJlZExpbmVIZWlnaHRGb250TWV0cmljc0Jhc2VkKCkgY29u
c3Q7Ci0gICAgY29uc3QgRm9udE1ldHJpY3MmIHByaW1hcnlGb250TWV0cmljcygpIGNvbnN0Owor
ICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBwcmltYXJ5Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkg
Y29uc3Q7CiAgICAgSW5saW5lTGF5b3V0VW5pdCBmb250U2l6ZSgpIGNvbnN0OwogCiAgICAgYm9v
bCBpc0lubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpJbmxpbmVCb3gg
fHwgaXNSb290SW5saW5lQm94KCkgfHwgaXNMaW5lU3Bhbm5pbmdJbmxpbmVCb3goKTsgfQpAQCAt
MTU0LDcgKzE1NCw3IEBAIGlubGluZSBJbmxpbmVMZXZlbEJveDo6SW5saW5lTGV2ZWxCb3goY29u
c3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IFJlbmRlclN0eWxlJiBzCiAgICAgLCBtX2lzRmlyc3RX
aXRoaW5MYXlvdXRCb3gocG9zaXRpb25XaXRoaW5MYXlvdXRCb3guY29udGFpbnMoUG9zaXRpb25X
aXRoaW5MYXlvdXRCb3g6OkZpcnN0KSkKICAgICAsIG1faXNMYXN0V2l0aGluTGF5b3V0Qm94KHBv
c2l0aW9uV2l0aGluTGF5b3V0Qm94LmNvbnRhaW5zKFBvc2l0aW9uV2l0aGluTGF5b3V0Qm94OjpM
YXN0KSkKICAgICAsIG1fdHlwZSh0eXBlKQotICAgICwgbV9zdHlsZSh7IHN0eWxlLmZvbnRDYXNj
YWRlKCkucHJpbWFyeUZvbnQoKS5mb250TWV0cmljcygpLCBzdHlsZS5saW5lSGVpZ2h0KCksIElu
bGluZUxheW91dFVuaXQoc3R5bGUuZm9udENhc2NhZGUoKS5mb250RGVzY3JpcHRpb24oKS5jb21w
dXRlZFBpeGVsU2l6ZSgpKSwgeyB9IH0pCisgICAgLCBtX3N0eWxlKHsgc3R5bGUuZm9udENhc2Nh
ZGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKSwgc3R5bGUubGluZUhlaWdodCgpLCBJbmxp
bmVMYXlvdXRVbml0KHN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udERlc2NyaXB0aW9uKCkuY29tcHV0
ZWRQaXhlbFNpemUoKSksIHsgfSB9KQogewogICAgIG1fc3R5bGUudmVydGljYWxBbGlnbm1lbnQu
dHlwZSA9IHN0eWxlLnZlcnRpY2FsQWxpZ24oKTsKICAgICBpZiAobV9zdHlsZS52ZXJ0aWNhbEFs
aWdubWVudC50eXBlID09IFZlcnRpY2FsQWxpZ246Okxlbmd0aCkKQEAgLTE3Miw3ICsxNzIsNyBA
QCBpbmxpbmUgSW5saW5lTGF5b3V0VW5pdCBJbmxpbmVMZXZlbEJveDo6cHJlZmVycmVkTGluZUhl
aWdodCgpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFJlbW92ZSBpbnRlZ3JhbCBmbG9vcmluZyB3
aGVuIGxlZ2FjeSBsaW5lIGxheW91dCBzdG9wcyB1c2luZyBpdC4KICAgICBpZiAoaXNQcmVmZXJy
ZWRMaW5lSGVpZ2h0Rm9udE1ldHJpY3NCYXNlZCgpKQotICAgICAgICByZXR1cm4gcHJpbWFyeUZv
bnRNZXRyaWNzKCkubGluZVNwYWNpbmcoKTsKKyAgICAgICAgcmV0dXJuIHByaW1hcnlmb250TWV0
cmljc09mUHJpbWFyeUZvbnQoKS5saW5lU3BhY2luZygpOwogCiAgICAgaWYgKG1fc3R5bGUubGlu
ZUhlaWdodC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkKICAgICAgICAgcmV0dXJuIGZsb29yZiht
aW5pbXVtVmFsdWVGb3JMZW5ndGgobV9zdHlsZS5saW5lSGVpZ2h0LCBmb250U2l6ZSgpKSk7CkBA
IC0xOTUsNyArMTk1LDcgQEAgaW5saW5lIGJvb2wgSW5saW5lTGV2ZWxCb3g6OmlzUHJlZmVycmVk
TGluZUhlaWdodEZvbnRNZXRyaWNzQmFzZWQoKSBjb25zdAogICAgIHJldHVybiBtX3N0eWxlLmxp
bmVIZWlnaHQuaXNOZWdhdGl2ZSgpOwogfQogCi1pbmxpbmUgY29uc3QgRm9udE1ldHJpY3MmIElu
bGluZUxldmVsQm94OjpwcmltYXJ5Rm9udE1ldHJpY3MoKSBjb25zdAoraW5saW5lIGNvbnN0IEZv
bnRNZXRyaWNzJiBJbmxpbmVMZXZlbEJveDo6cHJpbWFyeWZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9u
dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc3R5bGUucHJpbWFyeUZvbnRNZXRyaWNzOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lTGluZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94LmNwcAppbmRleCA2ZTIwODYwMTA5ZGFkZTFkNDdk
ZmM2NWZiYjg0YjMzNjRiNzg1MmQ2Li42ZDIzNjUzN2RjNTYxM2E5NWEwZGM3ZjkyNmUzMzkyMzk2
NjA1NThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVMaW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94LmNwcApAQCAtNTQsNyArNTQs
NyBAQCBJbmxpbmVSZWN0IExpbmVCb3g6OmxvZ2ljYWxSZWN0Rm9yVGV4dFJ1bihjb25zdCBMaW5l
OjpSdW4mIHJ1bikgY29uc3QKICAgICBBU1NFUlQocnVuLmlzVGV4dCgpIHx8IHJ1bi5pc1NvZnRM
aW5lQnJlYWsoKSk7CiAgICAgYXV0byogcGFyZW50SW5saW5lQm94ID0gJmlubGluZUxldmVsQm94
Rm9yTGF5b3V0Qm94KHJ1bi5sYXlvdXRCb3goKS5wYXJlbnQoKSk7CiAgICAgQVNTRVJUKHBhcmVu
dElubGluZUJveC0+aXNJbmxpbmVCb3goKSk7Ci0gICAgYXV0byYgZm9udE1ldHJpY3MgPSBwYXJl
bnRJbmxpbmVCb3gtPnByaW1hcnlGb250TWV0cmljcygpOworICAgIGF1dG8mIGZvbnRNZXRyaWNz
ID0gcGFyZW50SW5saW5lQm94LT5wcmltYXJ5Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCk7CiAg
ICAgYXV0byBydW5sb2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94LT5sb2dpY2FsVG9wKCkgKyBw
YXJlbnRJbmxpbmVCb3gtPmJhc2VsaW5lKCkgLSBmb250TWV0cmljcy5hc2NlbnQoKTsKIAogICAg
IHdoaWxlIChwYXJlbnRJbmxpbmVCb3ggIT0gJm1fcm9vdElubGluZUJveCAmJiAhcGFyZW50SW5s
aW5lQm94LT5oYXNMaW5lQm94UmVsYXRpdmVBbGlnbm1lbnQoKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJv
eEJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIuY3BwCmluZGV4IDkxZjMwZDVlYmNiNzI0MWJhOGUx
NTZiYTc5ZjRjNTM2YWQwZWQzMDYuLmQ0NTcwYmZkNjhmODgwNzQ1MWMyMjJlM2MxYTE4YWMwMWM5
NTJiN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5jcHAK
QEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIExpbmVCb3hCdWlsZGVyOjpzZXRWZXJ0aWNhbEdlb21l
dHJ5Rm9yTGluZUJyZWFrQm94KElubGluZUxldmVsQm94JiBsaW5lQnJlYQogICAgIEFTU0VSVChs
aW5lQnJlYWtCb3guaXNMaW5lQnJlYWtCb3goKSk7CiAgICAgQVNTRVJUKHBhcmVudElubGluZUJv
eC5pc0lubGluZUJveCgpKTsKIAotICAgIGF1dG8mIGZvbnRNZXRyaWNzID0gcGFyZW50SW5saW5l
Qm94LnByaW1hcnlGb250TWV0cmljcygpOworICAgIGF1dG8mIGZvbnRNZXRyaWNzID0gcGFyZW50
SW5saW5lQm94LnByaW1hcnlmb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsKICAgICBhdXRvIHBy
ZWZlcnJlZExpbmVIZWlnaHQgPSBwYXJlbnRJbmxpbmVCb3guaXNQcmVmZXJyZWRMaW5lSGVpZ2h0
Rm9udE1ldHJpY3NCYXNlZCgpID8gc3RkOjpudWxsb3B0IDogc3RkOjptYWtlX29wdGlvbmFsKHBh
cmVudElubGluZUJveC5wcmVmZXJyZWRMaW5lSGVpZ2h0KCkpOwogICAgIGF1dG8gaGVpZ2h0QW5k
TGF5b3V0Qm91bmRzID0gY29tcHV0ZWRIZWlnaHRBbmRMYXlvdXRCb3VuZHMoZm9udE1ldHJpY3Ms
IHByZWZlcnJlZExpbmVIZWlnaHQpOwogCkBAIC0xOTQsNyArMTk0LDcgQEAgdm9pZCBMaW5lQm94
QnVpbGRlcjo6c2V0SW5pdGlhbFZlcnRpY2FsR2VvbWV0cnlGb3JJbmxpbmVCb3goSW5saW5lTGV2
ZWxCb3gmIGlubGkKICAgICAvLyBXZSBuZWVkIGZsb29yL2NlaWwgdG8gbWF0Y2ggbGVnYWN5IGxh
eW91dCBpbnRlZ3JhbCBwb3NpdGlvbmluZy4KICAgICBBU1NFUlQoaW5saW5lQm94LmlzSW5saW5l
Qm94KCkpOwogCi0gICAgYXV0byYgZm9udE1ldHJpY3MgPSBpbmxpbmVCb3gucHJpbWFyeUZvbnRN
ZXRyaWNzKCk7CisgICAgYXV0byYgZm9udE1ldHJpY3MgPSBpbmxpbmVCb3gucHJpbWFyeWZvbnRN
ZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwogICAgIGF1dG8gcHJlZmVycmVkTGluZUhlaWdodCA9IGlu
bGluZUJveC5pc1ByZWZlcnJlZExpbmVIZWlnaHRGb250TWV0cmljc0Jhc2VkKCkgPyBzdGQ6Om51
bGxvcHQgOiBzdGQ6Om1ha2Vfb3B0aW9uYWwoaW5saW5lQm94LnByZWZlcnJlZExpbmVIZWlnaHQo
KSk7CiAgICAgYXV0byBoZWlnaHRBbmRMYXlvdXRCb3VuZHMgPSBjb21wdXRlZEhlaWdodEFuZExh
eW91dEJvdW5kcyhmb250TWV0cmljcywgcHJlZmVycmVkTGluZUhlaWdodCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5jcHAKaW5k
ZXggMTgyMzUwODRjYjkzNzUxMDU4YTQzNDlkYjlmNjM5NDc1ZTU5MmM1Mi4uM2E3MzVmYzBhMTRi
YmFjOTkzMmZlMGZjZDBmOGI4ZDFjOTVjMjU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveFZlcnRpY2FsQWxp
Z25lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5jcHAKQEAgLTE1NSw3ICsxNTUsNyBA
QCBJbmxpbmVMYXlvdXRVbml0IExpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OmNvbXB1dGVMaW5lQm94
TG9naWNhbEhlaWdodChMaW5lQm94JiBsaQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpNaWRkbGU6IHsKLSAgICAgICAgICAgIGF1dG8g
bG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGlubGluZUxldmVsQm94LmxheW91
dEJvdW5kcygpLmhlaWdodCgpIC8gMiArIHBhcmVudElubGluZUJveC5wcmltYXJ5Rm9udE1ldHJp
Y3MoKS54SGVpZ2h0KCkgLyAyOworICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wT2Zmc2V0RnJv
bVBhcmVudEJhc2VsaW5lID0gaW5saW5lTGV2ZWxCb3gubGF5b3V0Qm91bmRzKCkuaGVpZ2h0KCkg
LyAyICsgcGFyZW50SW5saW5lQm94LnByaW1hcnlmb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS54
SGVpZ2h0KCkgLyAyOwogICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC5s
YXlvdXRCb3VuZHMoKS5hc2NlbnQgLSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5l
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTI0Miw3ICsyNDIsNyBAQCB2b2lk
IExpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OmNvbXB1dGVSb290SW5saW5lQm94VmVydGljYWxQb3Np
dGlvbihMaW5lQm94JiBsaW5lQgogICAgICAgICAgICAgICAgIGJhc2VsaW5lT2Zmc2V0RnJvbVBh
cmVudEJhc2VsaW5lID0geyB9OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBWZXJ0aWNhbEFsaWduOjpNaWRkbGU6IHsKLSAgICAgICAgICAgICAgICBhdXRvIGxvZ2lj
YWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSAoaW5saW5lTGV2ZWxCb3gubGF5b3V0Qm91
bmRzKCkuaGVpZ2h0KCkgLyAyICsgcGFyZW50SW5saW5lQm94LnByaW1hcnlGb250TWV0cmljcygp
LnhIZWlnaHQoKSAvIDIpOworICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZy
b21QYXJlbnRCYXNlbGluZSA9IChpbmxpbmVMZXZlbEJveC5sYXlvdXRCb3VuZHMoKS5oZWlnaHQo
KSAvIDIgKyBwYXJlbnRJbmxpbmVCb3gucHJpbWFyeWZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgp
LnhIZWlnaHQoKSAvIDIpOwogICAgICAgICAgICAgICAgIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVu
dEJhc2VsaW5lID0gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSAtIGlubGluZUxl
dmVsQm94LmxheW91dEJvdW5kcygpLmFzY2VudDsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIExpbmVCb3hWZXJ0aWNhbEFsaWdu
ZXI6OmFsaWduSW5saW5lTGV2ZWxCb3hlcyhMaW5lQm94JiBsaW5lQm94LCBJbmxpbmVMYXlvdQog
ICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC5iYXNlbGluZSgpIC0gaW5s
aW5lTGV2ZWxCb3guYmFzZWxpbmUoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IFZlcnRpY2FsQWxpZ246Ok1pZGRsZTogewotICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wT2Zm
c2V0RnJvbVBhcmVudEJhc2VsaW5lID0gKGlubGluZUxldmVsQm94LmxvZ2ljYWxIZWlnaHQoKSAv
IDIgKyBwYXJlbnRJbmxpbmVCb3gucHJpbWFyeUZvbnRNZXRyaWNzKCkueEhlaWdodCgpIC8gMik7
CisgICAgICAgICAgICBhdXRvIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSAo
aW5saW5lTGV2ZWxCb3gubG9naWNhbEhlaWdodCgpIC8gMiArIHBhcmVudElubGluZUJveC5wcmlt
YXJ5Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkueEhlaWdodCgpIC8gMik7CiAgICAgICAgICAg
ICBsb2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94LmJhc2VsaW5lKCkgLSBsb2dpY2FsVG9wT2Zm
c2V0RnJvbVBhcmVudEJhc2VsaW5lOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRl
eCAyYTc2MTM2MmM4M2ZhNjg1YjUxYzZlZTA1MmM2YjEzNWMwMjVmOWEwLi4xN2VlZTU1Y2JlZTEx
NmQwMjBkNGQ1MjdlZWJjMjYwMGM0NzFmNjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCkBAIC0xNDEzLDggKzE0MTMsOCBAQCBmbG9h
dCBGb250Q2FzY2FkZTo6ZmxvYXRXaWR0aEZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYgcnVu
LCBIYXNoU2V0PGNvbnN0IEZvbgogICAgIGl0LmZpbmFsaXplKGdseXBoQnVmZmVyKTsKIAogICAg
IGlmIChnbHlwaE92ZXJmbG93KSB7Ci0gICAgICAgIGdseXBoT3ZlcmZsb3ctPnRvcCA9IHN0ZDo6
bWF4PGludD4oZ2x5cGhPdmVyZmxvdy0+dG9wLCBjZWlsZigtaXQubWluR2x5cGhCb3VuZGluZ0Jv
eFkoKSkgLSAoZ2x5cGhPdmVyZmxvdy0+Y29tcHV0ZUJvdW5kcyA/IDAgOiBmb250TWV0cmljcygp
LmFzY2VudCgpKSk7Ci0gICAgICAgIGdseXBoT3ZlcmZsb3ctPmJvdHRvbSA9IHN0ZDo6bWF4PGlu
dD4oZ2x5cGhPdmVyZmxvdy0+Ym90dG9tLCBjZWlsZihpdC5tYXhHbHlwaEJvdW5kaW5nQm94WSgp
KSAtIChnbHlwaE92ZXJmbG93LT5jb21wdXRlQm91bmRzID8gMCA6IGZvbnRNZXRyaWNzKCkuZGVz
Y2VudCgpKSk7CisgICAgICAgIGdseXBoT3ZlcmZsb3ctPnRvcCA9IHN0ZDo6bWF4PGludD4oZ2x5
cGhPdmVyZmxvdy0+dG9wLCBjZWlsZigtaXQubWluR2x5cGhCb3VuZGluZ0JveFkoKSkgLSAoZ2x5
cGhPdmVyZmxvdy0+Y29tcHV0ZUJvdW5kcyA/IDAgOiBmb250TWV0cmljc09mUHJpbWFyeUZvbnQo
KS5hc2NlbnQoKSkpOworICAgICAgICBnbHlwaE92ZXJmbG93LT5ib3R0b20gPSBzdGQ6Om1heDxp
bnQ+KGdseXBoT3ZlcmZsb3ctPmJvdHRvbSwgY2VpbGYoaXQubWF4R2x5cGhCb3VuZGluZ0JveFko
KSkgLSAoZ2x5cGhPdmVyZmxvdy0+Y29tcHV0ZUJvdW5kcyA/IDAgOiBmb250TWV0cmljc09mUHJp
bWFyeUZvbnQoKS5kZXNjZW50KCkpKTsKICAgICAgICAgZ2x5cGhPdmVyZmxvdy0+bGVmdCA9IGNl
aWxmKGl0LmZpcnN0R2x5cGhPdmVyZmxvdygpKTsKICAgICAgICAgZ2x5cGhPdmVyZmxvdy0+cmln
aHQgPSBjZWlsZihpdC5sYXN0R2x5cGhPdmVyZmxvdygpKTsKICAgICB9CkBAIC0xNDI2LDggKzE0
MjYsOCBAQCBmbG9hdCBGb250Q2FzY2FkZTo6ZmxvYXRXaWR0aEZvckNvbXBsZXhUZXh0KGNvbnN0
IFRleHRSdW4mIHJ1biwgSGFzaFNldDxjb25zdCBGbwogewogICAgIENvbXBsZXhUZXh0Q29udHJv
bGxlciBjb250cm9sbGVyKCp0aGlzLCBydW4sIHRydWUsIGZhbGxiYWNrRm9udHMpOwogICAgIGlm
IChnbHlwaE92ZXJmbG93KSB7Ci0gICAgICAgIGdseXBoT3ZlcmZsb3ctPnRvcCA9IHN0ZDo6bWF4
PGludD4oZ2x5cGhPdmVyZmxvdy0+dG9wLCBjZWlsZigtY29udHJvbGxlci5taW5HbHlwaEJvdW5k
aW5nQm94WSgpKSAtIChnbHlwaE92ZXJmbG93LT5jb21wdXRlQm91bmRzID8gMCA6IGZvbnRNZXRy
aWNzKCkuYXNjZW50KCkpKTsKLSAgICAgICAgZ2x5cGhPdmVyZmxvdy0+Ym90dG9tID0gc3RkOjpt
YXg8aW50PihnbHlwaE92ZXJmbG93LT5ib3R0b20sIGNlaWxmKGNvbnRyb2xsZXIubWF4R2x5cGhC
b3VuZGluZ0JveFkoKSkgLSAoZ2x5cGhPdmVyZmxvdy0+Y29tcHV0ZUJvdW5kcyA/IDAgOiBmb250
TWV0cmljcygpLmRlc2NlbnQoKSkpOworICAgICAgICBnbHlwaE92ZXJmbG93LT50b3AgPSBzdGQ6
Om1heDxpbnQ+KGdseXBoT3ZlcmZsb3ctPnRvcCwgY2VpbGYoLWNvbnRyb2xsZXIubWluR2x5cGhC
b3VuZGluZ0JveFkoKSkgLSAoZ2x5cGhPdmVyZmxvdy0+Y29tcHV0ZUJvdW5kcyA/IDAgOiBmb250
TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoKSkpOworICAgICAgICBnbHlwaE92ZXJmbG93
LT5ib3R0b20gPSBzdGQ6Om1heDxpbnQ+KGdseXBoT3ZlcmZsb3ctPmJvdHRvbSwgY2VpbGYoY29u
dHJvbGxlci5tYXhHbHlwaEJvdW5kaW5nQm94WSgpKSAtIChnbHlwaE92ZXJmbG93LT5jb21wdXRl
Qm91bmRzID8gMCA6IGZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmRlc2NlbnQoKSkpOwogICAg
ICAgICBnbHlwaE92ZXJmbG93LT5sZWZ0ID0gc3RkOjptYXg8aW50PigwLCBjZWlsZigtY29udHJv
bGxlci5taW5HbHlwaEJvdW5kaW5nQm94WCgpKSk7CiAgICAgICAgIGdseXBoT3ZlcmZsb3ctPnJp
Z2h0ID0gc3RkOjptYXg8aW50PigwLCBjZWlsZihjb250cm9sbGVyLm1heEdseXBoQm91bmRpbmdC
b3hYKCkgLSBjb250cm9sbGVyLnRvdGFsQWR2YW5jZSgpLndpZHRoKCkpKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAppbmRleCBiYWJl
OTY2ODRlN2MxNWNiOWNhOTY5M2JhMzU2MGE4YWEzZDJjOTZjLi42YzYzNzIxNmJmZDQwNDk2M2E3
MTFmMTY5ZjkxOWIxNWRlNjBiNmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYXNjYWRlLmgKQEAgLTE2Myw3ICsxNjMsNyBAQCBwdWJsaWM6CiAKICAgICBi
b29sIGlzUGxhdGZvcm1Gb250KCkgY29uc3QgeyByZXR1cm4gbV9mb250cy0+aXNGb3JQbGF0Zm9y
bUZvbnQoKTsgfQogCi0gICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzKCkgY29uc3Qg
eyByZXR1cm4gcHJpbWFyeUZvbnQoKS5mb250TWV0cmljcygpOyB9CisgICAgY29uc3QgRm9udE1l
dHJpY3MmIGZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpIGNvbnN0IHsgcmV0dXJuIHByaW1hcnlG
b250KCkuZm9udE1ldHJpY3MoKTsgfQogICAgIGZsb2F0IHNwYWNlV2lkdGgoKSBjb25zdCB7IHJl
dHVybiBwcmltYXJ5Rm9udCgpLnNwYWNlV2lkdGgoKSArIG1fbGV0dGVyU3BhY2luZzsgfQogICAg
IGZsb2F0IHRhYldpZHRoKGNvbnN0IEZvbnQmLCBjb25zdCBUYWJTaXplJiwgZmxvYXQpIGNvbnN0
OwogICAgIGZsb2F0IHRhYldpZHRoKGNvbnN0IFRhYlNpemUmIHRhYlNpemUsIGZsb2F0IHBvc2l0
aW9uKSBjb25zdCB7IHJldHVybiB0YWJXaWR0aChwcmltYXJ5Rm9udCgpLCB0YWJTaXplLCBwb3Np
dGlvbik7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DYXJldFJlY3RD
b21wdXRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2FyZXRSZWN0Q29tcHV0
YXRpb24uY3BwCmluZGV4IGNlN2Y1NDJkZDk3Yjg1Mzg2MWUyM2FjZjgxZjg5ZjhkMjE2Nzk3MDUu
LjlhODZmZjMwMjg4ODg2NDI2ZGZmOWM3NGU2MjY0NWI1NDhlZWE2ZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DYXJldFJlY3RDb21wdXRhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NhcmV0UmVjdENvbXB1dGF0aW9uLmNwcApAQCAtOTgsNyAr
OTgsNyBAQCBzdGF0aWMgTGF5b3V0UmVjdCBjb21wdXRlQ2FyZXRSZWN0Rm9yRW1wdHlFbGVtZW50
KGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0JiByZQogICAgIHggPSBzdGQ6Om1pbih4LCBzdGQ6
Om1heDxMYXlvdXRVbml0PihtYXhYIC0gY2FyZXRXaWR0aCwgMCkpOwogCiAgICAgYXV0byBsaW5l
SGVpZ2h0ID0gcmVuZGVyZXIubGluZUhlaWdodCh0cnVlLCBjdXJyZW50U3R5bGUuaXNIb3Jpem9u
dGFsV3JpdGluZ01vZGUoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5lLCBQb3NpdGlv
bk9mSW50ZXJpb3JMaW5lQm94ZXMpOwotICAgIGF1dG8gaGVpZ2h0ID0gc3RkOjptaW4obGluZUhl
aWdodCwgTGF5b3V0VW5pdCB7IGN1cnJlbnRTdHlsZS5mb250TWV0cmljcygpLmhlaWdodCgpIH0p
OworICAgIGF1dG8gaGVpZ2h0ID0gc3RkOjptaW4obGluZUhlaWdodCwgTGF5b3V0VW5pdCB7IGN1
cnJlbnRTdHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5oZWlnaHQoKSB9KTsKICAgICBh
dXRvIHkgPSByZW5kZXJlci5wYWRkaW5nVG9wKCkgKyByZW5kZXJlci5ib3JkZXJUb3AoKSArIChs
aW5lSGVpZ2h0ID4gaGVpZ2h0ID8gKGxpbmVIZWlnaHQgLSBoZWlnaHQpIC8gMiA6IExheW91dFVu
aXQgeyB9KTsKIAogICAgIGF1dG8gcmVjdCA9IExheW91dFJlY3QoeCwgeSwgY2FyZXRXaWR0aCwg
aGVpZ2h0KTsKQEAgLTI0MSw3ICsyNDEsNyBAQCBzdGF0aWMgTGF5b3V0UmVjdCBjb21wdXRlQ2Fy
ZXRSZWN0Rm9yQm94KGNvbnN0IFJlbmRlckJveCYgcmVuZGVyZXIsIGNvbnN0IElubGluZQogICAg
IC8vIDxyZGFyOi8vcHJvYmxlbS8zNzc3ODA0PiBEZWxldGluZyBhbGwgY29udGVudCBpbiBhIGRv
Y3VtZW50IGNhbiByZXN1bHQgaW4gZ2lhbnQgdGFsbC1hcy13aW5kb3cgaW5zZXJ0aW9uIHBvaW50
CiAgICAgLy8KICAgICAvLyBGSVhNRTogaWdub3JpbmcgOmZpcnN0LWxpbmUsIG1pc3NpbmcgZ29v
ZCByZWFzb24gdG8gdGFrZSBjYXJlIG9mCi0gICAgTGF5b3V0VW5pdCBmb250SGVpZ2h0ID0gcmVu
ZGVyZXIuc3R5bGUoKS5mb250TWV0cmljcygpLmhlaWdodCgpOworICAgIExheW91dFVuaXQgZm9u
dEhlaWdodCA9IHJlbmRlcmVyLnN0eWxlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuaGVp
Z2h0KCk7CiAgICAgaWYgKGZvbnRIZWlnaHQgPiByZWN0LmhlaWdodCgpIHx8ICghcmVuZGVyZXIu
aXNSZXBsYWNlZE9ySW5saW5lQmxvY2soKSAmJiAhcmVuZGVyZXIuaXNUYWJsZSgpKSkKICAgICAg
ICAgcmVjdC5zZXRIZWlnaHQoZm9udEhlaWdodCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9MZWdhY3lFbGxpcHNpc0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvTGVnYWN5RWxsaXBzaXNCb3guY3BwCmluZGV4IDQ2ZGNkNDZmZjdkZTI5ODY2YjQ5OThl
M2ZjNmM3NTA2OWRiZWViNDcuLmU5NzE2ODA1NzA3MGNjZDRmMjg2YTBhOGIwZWQ0NDZhMmUxNWJi
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lFbGxpcHNpc0Jv
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUVsbGlwc2lzQm94LmNw
cApAQCAtNzAsNyArNzAsNyBAQCB2b2lkIExlZ2FjeUVsbGlwc2lzQm94OjpwYWludChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2ZmcwogICAgIH0KIAogICAg
IC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBhbHdheXMgTFRSPyBGaXggYnkgcGFzc2luZyBjb3JyZWN0
IHRleHQgcnVuIGZsYWdzIGJlbG93LgotICAgIGNvbnRleHQuZHJhd1RleHQoZm9udCwgUmVuZGVy
QmxvY2s6OmNvbnN0cnVjdFRleHRSdW4obV9zdHIsIGxpbmVTdHlsZSwgQWxsb3dSaWdodEV4cGFu
c2lvbiksIExheW91dFBvaW50KHgoKSArIHBhaW50T2Zmc2V0LngoKSwgeSgpICsgcGFpbnRPZmZz
ZXQueSgpICsgbGluZVN0eWxlLmZvbnRNZXRyaWNzKCkuYXNjZW50KCkpKTsKKyAgICBjb250ZXh0
LmRyYXdUZXh0KGZvbnQsIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKG1fc3RyLCBsaW5l
U3R5bGUsIEFsbG93UmlnaHRFeHBhbnNpb24pLCBMYXlvdXRQb2ludCh4KCkgKyBwYWludE9mZnNl
dC54KCksIHkoKSArIHBhaW50T2Zmc2V0LnkoKSArIGxpbmVTdHlsZS5mb250TWV0cmljc09mUHJp
bWFyeUZvbnQoKS5hc2NlbnQoKSkpOwogCiAgICAgLy8gUmVzdG9yZSB0aGUgcmVndWxhciBmaWxs
IGNvbG9yLgogICAgIGlmICh0ZXh0Q29sb3IgIT0gY29udGV4dC5maWxsQ29sb3IoKSkKQEAgLTEw
OCw3ICsxMDgsNyBAQCB2b2lkIExlZ2FjeUVsbGlwc2lzQm94OjpwYWludE1hcmt1cEJveChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmCiAKICAgICBMYXlvdXRQb2ludCBh
ZGp1c3RlZFBhaW50T2Zmc2V0ID0gcGFpbnRPZmZzZXQ7CiAgICAgYWRqdXN0ZWRQYWludE9mZnNl
dC5tb3ZlKHgoKSArIGxvZ2ljYWxXaWR0aCgpIC0gbWFya3VwQm94LT54KCksCi0gICAgICAgIHko
KSArIHN0eWxlLmZvbnRNZXRyaWNzKCkuYXNjZW50KCkgLSAobWFya3VwQm94LT55KCkgKyBtYXJr
dXBCb3gtPmxpbmVTdHlsZSgpLmZvbnRNZXRyaWNzKCkuYXNjZW50KCkpKTsKKyAgICAgICAgeSgp
ICsgc3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50KCkgLSAobWFya3VwQm94
LT55KCkgKyBtYXJrdXBCb3gtPmxpbmVTdHlsZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgp
LmFzY2VudCgpKSk7CiAgICAgbWFya3VwQm94LT5wYWludChwYWludEluZm8sIGFkanVzdGVkUGFp
bnRPZmZzZXQsIGxpbmVUb3AsIGxpbmVCb3R0b20pOwogfQogCkBAIC0xNTMsNyArMTUzLDcgQEAg
Ym9vbCBMZWdhY3lFbGxpcHNpc0JveDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3Qm
IHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQKICAgICBpZiAoTGVnYWN5SW5saW5lQm94KiBtYXJrdXBC
b3ggPSB0aGlzLT5tYXJrdXBCb3goKSkgewogICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgbGlu
ZVN0eWxlID0gdGhpcy0+bGluZVN0eWxlKCk7CiAgICAgICAgIExheW91dFVuaXQgbXR4IHsgYWRq
dXN0ZWRMb2NhdGlvbi54KCkgKyBsb2dpY2FsV2lkdGgoKSAtIG1hcmt1cEJveC0+eCgpIH07Ci0g
ICAgICAgIExheW91dFVuaXQgbXR5IHsgYWRqdXN0ZWRMb2NhdGlvbi55KCkgKyBsaW5lU3R5bGUu
Zm9udE1ldHJpY3MoKS5hc2NlbnQoKSAtIChtYXJrdXBCb3gtPnkoKSArIG1hcmt1cEJveC0+bGlu
ZVN0eWxlKCkuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSkgfTsKKyAgICAgICAgTGF5b3V0VW5pdCBt
dHkgeyBhZGp1c3RlZExvY2F0aW9uLnkoKSArIGxpbmVTdHlsZS5mb250TWV0cmljc09mUHJpbWFy
eUZvbnQoKS5hc2NlbnQoKSAtIChtYXJrdXBCb3gtPnkoKSArIG1hcmt1cEJveC0+bGluZVN0eWxl
KCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50KCkpIH07CiAgICAgICAgIGlmICht
YXJrdXBCb3gtPm5vZGVBdFBvaW50KHJlcXVlc3QsIHJlc3VsdCwgbG9jYXRpb25JbkNvbnRhaW5l
ciwgTGF5b3V0UG9pbnQobXR4LCBtdHkpLCBsaW5lVG9wLCBsaW5lQm90dG9tLCBoaXRUZXN0QWN0
aW9uKSkgewogICAgICAgICAgICAgYmxvY2tGbG93KCkudXBkYXRlSGl0VGVzdFJlc3VsdChyZXN1
bHQsIGxvY2F0aW9uSW5Db250YWluZXIucG9pbnQoKSAtIExheW91dFNpemUobXR4LCBtdHkpKTsK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0xlZ2FjeUlubGluZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVn
YWN5SW5saW5lQm94LmNwcAppbmRleCA4NmY0MWVmN2ZiMDU2Y2NkNjE1ZTU3NzFhMDgzYzJkOTg4
YzBmMTBjLi5mYWZlYTM2NjkzMWU2ZTkyOTNjOTU5NjQxZTcyY2I5NTdjZGU4MDJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lQm94LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lQm94LmNwcApAQCAtMTM2LDEzICsx
MzYsMTMgQEAgZmxvYXQgTGVnYWN5SW5saW5lQm94Ojpsb2dpY2FsSGVpZ2h0KCkgY29uc3QKIAog
ICAgIGNvbnN0IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUgPSB0aGlzLT5saW5lU3R5bGUoKTsKICAg
ICBpZiAocmVuZGVyZXIoKS5pc1RleHRPckxpbmVCcmVhaygpKQotICAgICAgICByZXR1cm4gbGlu
ZVN0eWxlLmZvbnRNZXRyaWNzKCkuaGVpZ2h0KCk7CisgICAgICAgIHJldHVybiBsaW5lU3R5bGUu
Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuaGVpZ2h0KCk7CiAgICAgaWYgKGlzPFJlbmRlckJv
eD4ocmVuZGVyZXIoKSkgJiYgcGFyZW50KCkpCiAgICAgICAgIHJldHVybiBpc0hvcml6b250YWwo
KSA/IGRvd25jYXN0PFJlbmRlckJveD4ocmVuZGVyZXIoKSkuaGVpZ2h0KCkgOiBkb3duY2FzdDxS
ZW5kZXJCb3g+KHJlbmRlcmVyKCkpLndpZHRoKCk7CiAKICAgICBBU1NFUlQoaXNJbmxpbmVGbG93
Qm94KCkpOwogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBmbG93T2JqZWN0ID0gYm94TW9kZWxP
YmplY3QoKTsKLSAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MgPSBsaW5lU3R5bGUu
Zm9udE1ldHJpY3MoKTsKKyAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MgPSBsaW5l
U3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCk7CiAgICAgZmxvYXQgcmVzdWx0ID0gZm9u
dE1ldHJpY3MuaGVpZ2h0KCk7CiAgICAgaWYgKHBhcmVudCgpKQogICAgICAgICByZXN1bHQgKz0g
Zmxvd09iamVjdC0+Ym9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVGbG93Qm94LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVGbG93Qm94LmNwcAppbmRleCA4MDU3NTJi
MjkyYTY1OTA5OWU1ZjBkN2VkYzg0OTRlYWIwYWMyNTQxLi42N2VjODhjNWUxZmRjODRkMjM1ZTZm
NzU5ZjhiYmU0MjU0YmU1MzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
TGVnYWN5SW5saW5lRmxvd0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xl
Z2FjeUlubGluZUZsb3dCb3guY3BwCkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBMZWdhY3lJbmxp
bmVGbG93Qm94OjphZGRUb0xpbmUoTGVnYWN5SW5saW5lQm94KiBjaGlsZCkKICAgICAgICAgICAg
IHNob3VsZENsZWFyRGVzY2VuZGFudHNIYXZlU2FtZUxpbmVIZWlnaHRBbmRCYXNlbGluZSA9IHRy
dWU7CiAgICAgICAgIGVsc2UgaWYgKGNoaWxkLT5iZWhhdmVzTGlrZVRleHQoKSkgewogICAgICAg
ICAgICAgaWYgKGNoaWxkLT5yZW5kZXJlcigpLmlzTGluZUJyZWFrKCkgfHwgY2hpbGQtPnJlbmRl
cmVyKCkucGFyZW50KCkgIT0gJnJlbmRlcmVyKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXBh
cmVudFN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKS5oYXNJZGVudGljYWxBc2NlbnRE
ZXNjZW50QW5kTGluZUdhcChjaGlsZFN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKSkK
KyAgICAgICAgICAgICAgICBpZiAoIXBhcmVudFN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJp
Y3NPZlByaW1hcnlGb250KCkuaGFzSWRlbnRpY2FsQXNjZW50RGVzY2VudEFuZExpbmVHYXAoY2hp
bGRTdHlsZS5mb250Q2FzY2FkZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpKQogICAgICAg
ICAgICAgICAgICAgICB8fCBwYXJlbnRTdHlsZS5saW5lSGVpZ2h0KCkgIT0gY2hpbGRTdHlsZS5s
aW5lSGVpZ2h0KCkKICAgICAgICAgICAgICAgICAgICAgfHwgKHBhcmVudFN0eWxlLnZlcnRpY2Fs
QWxpZ24oKSAhPSBWZXJ0aWNhbEFsaWduOjpCYXNlbGluZSAmJiAhaXNSb290SW5saW5lQm94KCkp
IHx8IGNoaWxkU3R5bGUudmVydGljYWxBbGlnbigpICE9IFZlcnRpY2FsQWxpZ246OkJhc2VsaW5l
KQogICAgICAgICAgICAgICAgICAgICBzaG91bGRDbGVhckRlc2NlbmRhbnRzSGF2ZVNhbWVMaW5l
SGVpZ2h0QW5kQmFzZWxpbmUgPSB0cnVlOwpAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgTGVnYWN5
SW5saW5lRmxvd0JveDo6YWRkVG9MaW5lKExlZ2FjeUlubGluZUJveCogY2hpbGQpCiAgICAgICAg
ICAgICAgICAgYXV0byYgY2hpbGRGbG93Qm94ID0gZG93bmNhc3Q8TGVnYWN5SW5saW5lRmxvd0Jv
eD4oKmNoaWxkKTsKICAgICAgICAgICAgICAgICAvLyBDaGVjayB0aGUgY2hpbGQncyBiaXQsIGFu
ZCB0aGVuIGFsc28gY2hlY2sgZm9yIGRpZmZlcmVuY2VzIGluIGZvbnQsIGxpbmUtaGVpZ2h0LCB2
ZXJ0aWNhbC1hbGlnbgogICAgICAgICAgICAgICAgIGlmICghY2hpbGRGbG93Qm94LmRlc2NlbmRh
bnRzSGF2ZVNhbWVMaW5lSGVpZ2h0QW5kQmFzZWxpbmUoKQotICAgICAgICAgICAgICAgICAgICB8
fCAhcGFyZW50U3R5bGUuZm9udENhc2NhZGUoKS5mb250TWV0cmljcygpLmhhc0lkZW50aWNhbEFz
Y2VudERlc2NlbnRBbmRMaW5lR2FwKGNoaWxkU3R5bGUuZm9udENhc2NhZGUoKS5mb250TWV0cmlj
cygpKQorICAgICAgICAgICAgICAgICAgICB8fCAhcGFyZW50U3R5bGUuZm9udENhc2NhZGUoKS5m
b250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5oYXNJZGVudGljYWxBc2NlbnREZXNjZW50QW5kTGlu
ZUdhcChjaGlsZFN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkp
CiAgICAgICAgICAgICAgICAgICAgIHx8IHBhcmVudFN0eWxlLmxpbmVIZWlnaHQoKSAhPSBjaGls
ZFN0eWxlLmxpbmVIZWlnaHQoKQogICAgICAgICAgICAgICAgICAgICB8fCAocGFyZW50U3R5bGUu
dmVydGljYWxBbGlnbigpICE9IFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lICYmICFpc1Jvb3RJbmxp
bmVCb3goKSkgfHwgY2hpbGRTdHlsZS52ZXJ0aWNhbEFsaWduKCkgIT0gVmVydGljYWxBbGlnbjo6
QmFzZWxpbmUKICAgICAgICAgICAgICAgICAgICAgfHwgY2hpbGRTdHlsZS5oYXNCb3JkZXIoKSB8
fCBjaGlsZFN0eWxlLmhhc1BhZGRpbmcoKSB8fCBjaGlsZFN0eWxlLmhhc1RleHRDb21iaW5lKCkp
CkBAIC02ODksNyArNjg5LDcgQEAgc3RhdGljIHZvaWQgcGxhY2VDaGlsZElubGluZUJveGVzSW5C
bG9ja0RpcmVjdGlvbihMZWdhY3lJbmxpbmVGbG93Qm94JiBpbmxpbmVCb3gKIAogICAgICAgICBj
b25zdCBSZW5kZXJTdHlsZSYgY2hpbGRMaW5lU3R5bGUgPSBjaGlsZC0+bGluZVN0eWxlKCk7CiAg
ICAgICAgIGlmIChjaGlsZC0+YmVoYXZlc0xpa2VUZXh0KCkgfHwgaXM8TGVnYWN5SW5saW5lRmxv
d0JveD4oKmNoaWxkKSkgewotICAgICAgICAgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRy
aWNzID0gY2hpbGRMaW5lU3R5bGUuZm9udE1ldHJpY3MoKTsKKyAgICAgICAgICAgIGNvbnN0IEZv
bnRNZXRyaWNzJiBmb250TWV0cmljcyA9IGNoaWxkTGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmlt
YXJ5Rm9udCgpOwogICAgICAgICAgICAgbmV3TG9naWNhbFRvcCArPSBjaGlsZC0+YmFzZWxpbmVQ
b3NpdGlvbihiYXNlbGluZVR5cGUpIC0gZm9udE1ldHJpY3MuYXNjZW50KGJhc2VsaW5lVHlwZSk7
CiAgICAgICAgICAgICBpZiAoaXM8TGVnYWN5SW5saW5lRmxvd0JveD4oKmNoaWxkKSkgewogICAg
ICAgICAgICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0JiBib3hPYmplY3QgPSBkb3duY2FzdDxM
ZWdhY3lJbmxpbmVGbG93Qm94PigqY2hpbGQpLnJlbmRlcmVyKCk7CkBAIC03NjMsNyArNzYzLDcg
QEAgdm9pZCBMZWdhY3lJbmxpbmVGbG93Qm94OjpwbGFjZUJveGVzSW5CbG9ja0RpcmVjdGlvbihM
YXlvdXRVbml0IHRvcCwgTGF5b3V0VW5pdAogewogICAgIGJvb2wgaXNSb290Qm94ID0gaXNSb290
SW5saW5lQm94KCk7CiAgICAgaWYgKGlzUm9vdEJveCkKLSAgICAgICAgc2V0TG9naWNhbFRvcCh0
b3AgKyBtYXhBc2NlbnQgLSBsaW5lU3R5bGUoKS5mb250TWV0cmljcygpLmFzY2VudChiYXNlbGlu
ZVR5cGUpKTsKKyAgICAgICAgc2V0TG9naWNhbFRvcCh0b3AgKyBtYXhBc2NlbnQgLSBsaW5lU3R5
bGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoYmFzZWxpbmVUeXBlKSk7CiAK
ICAgICBwbGFjZUNoaWxkSW5saW5lQm94ZXNJbkJsb2NrRGlyZWN0aW9uKCp0aGlzLCB0b3AsIG1h
eEhlaWdodCwgbWF4QXNjZW50LCBzdHJpY3RNb2RlLCBsaW5lVG9wLCBsaW5lQm90dG9tLCBzZXRM
aW5lVG9wLCBsaW5lVG9wSW5jbHVkaW5nTWFyZ2lucywgbGluZUJvdHRvbUluY2x1ZGluZ01hcmdp
bnMsIGhhc0Fubm90YXRpb25zQmVmb3JlLCBoYXNBbm5vdGF0aW9uc0FmdGVyLCBiYXNlbGluZVR5
cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5TGluZUxh
eW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5jcHAK
aW5kZXggODdkMGNiYWRkYjRmZDU1MzZjZmNhMzI0YTU4NzIxYmFmMGZiYzg3ZS4uZDg3ZTNkNTlj
YjFhOGYxZDIyM2ViYmE5ODVhMWI4OTI4NmRlNDE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0LmNwcApAQCAtNDc4LDEwICs0NzgsMTAgQEAgc3RhdGlj
IGlubGluZSB2b2lkIHNldExvZ2ljYWxXaWR0aEZvclRleHRSdW4oTGVnYWN5Um9vdElubGluZUJv
eCogbGluZUJveCwgQmlkaVIKICAgICAgICAgLy8gd2lsbCBrZWVwIHVzIGZyb20gY29tcHV0aW5n
IGdseXBoIGJvdW5kcyBpbiBuZWFybHkgYWxsIGNhc2VzLgogICAgICAgICBib29sIGluY2x1ZGVS
b290TGluZSA9IGxpbmVCb3gtPmluY2x1ZGVzUm9vdExpbmVCb3hGb250T3JMZWFkaW5nKCk7CiAg
ICAgICAgIGludCBiYXNlbGluZVNoaWZ0ID0gbGluZUJveC0+dmVydGljYWxQb3NpdGlvbkZvckJv
eChydW4tPmJveCgpLCB2ZXJ0aWNhbFBvc2l0aW9uQ2FjaGUpOwotICAgICAgICBpbnQgcm9vdERl
c2NlbnQgPSBpbmNsdWRlUm9vdExpbmUgPyBmb250LmZvbnRNZXRyaWNzKCkuZGVzY2VudCgpIDog
MDsKLSAgICAgICAgaW50IHJvb3RBc2NlbnQgPSBpbmNsdWRlUm9vdExpbmUgPyBmb250LmZvbnRN
ZXRyaWNzKCkuYXNjZW50KCkgOiAwOwotICAgICAgICBpbnQgYm94QXNjZW50ID0gZm9udC5mb250
TWV0cmljcygpLmFzY2VudCgpIC0gYmFzZWxpbmVTaGlmdDsKLSAgICAgICAgaW50IGJveERlc2Nl
bnQgPSBmb250LmZvbnRNZXRyaWNzKCkuZGVzY2VudCgpICsgYmFzZWxpbmVTaGlmdDsKKyAgICAg
ICAgaW50IHJvb3REZXNjZW50ID0gaW5jbHVkZVJvb3RMaW5lID8gZm9udC5mb250TWV0cmljc09m
UHJpbWFyeUZvbnQoKS5kZXNjZW50KCkgOiAwOworICAgICAgICBpbnQgcm9vdEFzY2VudCA9IGlu
Y2x1ZGVSb290TGluZSA/IGZvbnQuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50KCkg
OiAwOworICAgICAgICBpbnQgYm94QXNjZW50ID0gZm9udC5mb250TWV0cmljc09mUHJpbWFyeUZv
bnQoKS5hc2NlbnQoKSAtIGJhc2VsaW5lU2hpZnQ7CisgICAgICAgIGludCBib3hEZXNjZW50ID0g
Zm9udC5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5kZXNjZW50KCkgKyBiYXNlbGluZVNoaWZ0
OwogICAgICAgICBpZiAoYm94QXNjZW50ID4gcm9vdERlc2NlbnQgfHwgIGJveERlc2NlbnQgPiBy
b290QXNjZW50KQogICAgICAgICAgICAgZ2x5cGhPdmVyZmxvdy5jb21wdXRlQm91bmRzID0gdHJ1
ZTsgCiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeVJv
b3RJbmxpbmVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeVJvb3RJbmxp
bmVCb3guY3BwCmluZGV4IGU4OTVjYmI2NzE3MGI2NDQ3ZWNjNzEzYmE1MWNiM2ZiYjZlOTA2ZWYu
LjMxYmU3ZDk2YmY5ZDc2OWViODkzNTY4MWVlOTdlY2QyODA5ZTI4ZDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lSb290SW5saW5lQm94LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5Um9vdElubGluZUJveC5jcHAKQEAgLTM2MywxNCAr
MzYzLDE0IEBAIExheW91dFVuaXQgTGVnYWN5Um9vdElubGluZUJveDo6bGluZVNuYXBBZGp1c3Rt
ZW50KExheW91dFVuaXQgZGVsdGEpIGNvbnN0CiAgICAgaWYgKCFncmlkTGluZUhlaWdodCkKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICBMYXlvdXRVbml0IGxpbmVHcmlkRm9udEFzY2VudCA9IGxp
bmVHcmlkLT5zdHlsZSgpLmZvbnRNZXRyaWNzKCkuYXNjZW50KGJhc2VsaW5lVHlwZSgpKTsKKyAg
ICBMYXlvdXRVbml0IGxpbmVHcmlkRm9udEFzY2VudCA9IGxpbmVHcmlkLT5zdHlsZSgpLmZvbnRN
ZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudChiYXNlbGluZVR5cGUoKSk7CiAgICAgTGF5b3V0
VW5pdCBsaW5lR3JpZEZvbnRIZWlnaHQgeyBsaW5lR3JpZEJveC0+bG9naWNhbEhlaWdodCgpIH07
CiAgICAgTGF5b3V0VW5pdCBmaXJzdFRleHRUb3AgeyBsaW5lR3JpZEJsb2NrT2Zmc2V0ICsgbGlu
ZUdyaWRCb3gtPmxvZ2ljYWxUb3AoKSB9OwogICAgIExheW91dFVuaXQgZmlyc3RMaW5lVG9wV2l0
aExlYWRpbmcgPSBsaW5lR3JpZEJsb2NrT2Zmc2V0ICsgbGluZUdyaWRCb3gtPmxpbmVCb3hUb3Ao
KTsKICAgICBMYXlvdXRVbml0IGZpcnN0QmFzZWxpbmVQb3NpdGlvbiA9IGZpcnN0VGV4dFRvcCAr
IGxpbmVHcmlkRm9udEFzY2VudDsKIAogICAgIExheW91dFVuaXQgY3VycmVudFRleHRUb3AgeyBi
bG9ja09mZnNldCArIGxvZ2ljYWxUb3AoKSArIGRlbHRhIH07Ci0gICAgTGF5b3V0VW5pdCBjdXJy
ZW50Rm9udEFzY2VudCA9IGJsb2NrRmxvdygpLnN0eWxlKCkuZm9udE1ldHJpY3MoKS5hc2NlbnQo
YmFzZWxpbmVUeXBlKCkpOworICAgIExheW91dFVuaXQgY3VycmVudEZvbnRBc2NlbnQgPSBibG9j
a0Zsb3coKS5zdHlsZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudChiYXNlbGlu
ZVR5cGUoKSk7CiAgICAgTGF5b3V0VW5pdCBjdXJyZW50QmFzZWxpbmVQb3NpdGlvbiA9IGN1cnJl
bnRUZXh0VG9wICsgY3VycmVudEZvbnRBc2NlbnQ7CiAKICAgICBMYXlvdXRVbml0IGxpbmVHcmlk
UGFnaW5hdGlvbk9yaWdpbiA9IGlzSG9yaXpvbnRhbCgpID8gbGF5b3V0U3RhdGUtPmxpbmVHcmlk
UGFnaW5hdGlvbk9yaWdpbigpLmhlaWdodCgpIDogbGF5b3V0U3RhdGUtPmxpbmVHcmlkUGFnaW5h
dGlvbk9yaWdpbigpLndpZHRoKCk7CkBAIC03NDMsOCArNzQzLDggQEAgdm9pZCBMZWdhY3lSb290
SW5saW5lQm94Ojphc2NlbnRBbmREZXNjZW50Rm9yQm94KExlZ2FjeUlubGluZUJveCYgYm94LCBH
bHlwaE92ZXIKICAgICB9CiAgICAgCiAgICAgaWYgKGluY2x1ZGVGb250Rm9yQm94KGJveCkgJiYg
IXNldFVzZWRGb250KSB7Ci0gICAgICAgIExheW91dFVuaXQgZm9udEFzY2VudCB7IGJveExpbmVT
dHlsZS5mb250TWV0cmljcygpLmFzY2VudChiYXNlbGluZVR5cGUoKSkgfTsKLSAgICAgICAgTGF5
b3V0VW5pdCBmb250RGVzY2VudCB7IGJveExpbmVTdHlsZS5mb250TWV0cmljcygpLmRlc2NlbnQo
YmFzZWxpbmVUeXBlKCkpIH07CisgICAgICAgIExheW91dFVuaXQgZm9udEFzY2VudCB7IGJveExp
bmVTdHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoYmFzZWxpbmVUeXBlKCkp
IH07CisgICAgICAgIExheW91dFVuaXQgZm9udERlc2NlbnQgeyBib3hMaW5lU3R5bGUuZm9udE1l
dHJpY3NPZlByaW1hcnlGb250KCkuZGVzY2VudChiYXNlbGluZVR5cGUoKSkgfTsKICAgICAgICAg
c2V0QXNjZW50QW5kRGVzY2VudChhc2NlbnQsIGRlc2NlbnQsIGZvbnRBc2NlbnQsIGZvbnREZXNj
ZW50LCBhc2NlbnREZXNjZW50U2V0KTsKICAgICAgICAgYWZmZWN0c0FzY2VudCA9IGZvbnRBc2Nl
bnQgLSBib3gubG9naWNhbFRvcCgpID4gMDsKICAgICAgICAgYWZmZWN0c0Rlc2NlbnQgPSBmb250
RGVzY2VudCArIGJveC5sb2dpY2FsVG9wKCkgPiAwOwpAQCAtNzU0LDI2ICs3NTQsMjYgQEAgdm9p
ZCBMZWdhY3lSb290SW5saW5lQm94Ojphc2NlbnRBbmREZXNjZW50Rm9yQm94KExlZ2FjeUlubGlu
ZUJveCYgYm94LCBHbHlwaE92ZXIKICAgICAgICAgc2V0QXNjZW50QW5kRGVzY2VudChhc2NlbnQs
IGRlc2NlbnQsIGdseXBoT3ZlcmZsb3ctPnRvcCwgZ2x5cGhPdmVyZmxvdy0+Ym90dG9tLCBhc2Nl
bnREZXNjZW50U2V0KTsKICAgICAgICAgYWZmZWN0c0FzY2VudCA9IGdseXBoT3ZlcmZsb3ctPnRv
cCAtIGJveC5sb2dpY2FsVG9wKCkgPiAwOwogICAgICAgICBhZmZlY3RzRGVzY2VudCA9IGdseXBo
T3ZlcmZsb3ctPmJvdHRvbSArIGJveC5sb2dpY2FsVG9wKCkgPiAwOwotICAgICAgICBnbHlwaE92
ZXJmbG93LT50b3AgPSBzdGQ6Om1pbihnbHlwaE92ZXJmbG93LT50b3AsIHN0ZDo6bWF4KDBfbHUs
IGdseXBoT3ZlcmZsb3ctPnRvcCAtIGJveExpbmVTdHlsZS5mb250TWV0cmljcygpLmFzY2VudChi
YXNlbGluZVR5cGUoKSkpKTsKLSAgICAgICAgZ2x5cGhPdmVyZmxvdy0+Ym90dG9tID0gc3RkOjpt
aW4oZ2x5cGhPdmVyZmxvdy0+Ym90dG9tLCBzdGQ6Om1heCgwX2x1LCBnbHlwaE92ZXJmbG93LT5i
b3R0b20gLSBib3hMaW5lU3R5bGUuZm9udE1ldHJpY3MoKS5kZXNjZW50KGJhc2VsaW5lVHlwZSgp
KSkpOworICAgICAgICBnbHlwaE92ZXJmbG93LT50b3AgPSBzdGQ6Om1pbihnbHlwaE92ZXJmbG93
LT50b3AsIHN0ZDo6bWF4KDBfbHUsIGdseXBoT3ZlcmZsb3ctPnRvcCAtIGJveExpbmVTdHlsZS5m
b250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoYmFzZWxpbmVUeXBlKCkpKSk7CisgICAg
ICAgIGdseXBoT3ZlcmZsb3ctPmJvdHRvbSA9IHN0ZDo6bWluKGdseXBoT3ZlcmZsb3ctPmJvdHRv
bSwgc3RkOjptYXgoMF9sdSwgZ2x5cGhPdmVyZmxvdy0+Ym90dG9tIC0gYm94TGluZVN0eWxlLmZv
bnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmRlc2NlbnQoYmFzZWxpbmVUeXBlKCkpKSk7CiAgICAg
fQogICAgIAogICAgIGlmIChpbmNsdWRlSW5pdGlhbExldHRlckZvckJveChib3gpKSB7CiAgICAg
ICAgIGJvb2wgY2FuVXNlR2x5cGhzID0gZ2x5cGhPdmVyZmxvdyAmJiBnbHlwaE92ZXJmbG93LT5j
b21wdXRlQm91bmRzOwotICAgICAgICBhdXRvIGxldHRlckFzY2VudCB7IGJhc2VsaW5lVHlwZSgp
ID09IEFscGhhYmV0aWNCYXNlbGluZSA/IExheW91dFVuaXQoYm94TGluZVN0eWxlLmZvbnRNZXRy
aWNzKCkuY2FwSGVpZ2h0KCkpIDogKGNhblVzZUdseXBocyA/IGdseXBoT3ZlcmZsb3ctPnRvcCA6
IExheW91dFVuaXQoYm94TGluZVN0eWxlLmZvbnRNZXRyaWNzKCkuYXNjZW50KGJhc2VsaW5lVHlw
ZSgpKSkpIH07Ci0gICAgICAgIGF1dG8gbGV0dGVyRGVzY2VudCB7IGNhblVzZUdseXBocyA/IGds
eXBoT3ZlcmZsb3ctPmJvdHRvbSA6IChib3guaXNSb290SW5saW5lQm94KCkgPyAwX2x1IDogTGF5
b3V0VW5pdChib3hMaW5lU3R5bGUuZm9udE1ldHJpY3MoKS5kZXNjZW50KGJhc2VsaW5lVHlwZSgp
KSkpIH07CisgICAgICAgIGF1dG8gbGV0dGVyQXNjZW50IHsgYmFzZWxpbmVUeXBlKCkgPT0gQWxw
aGFiZXRpY0Jhc2VsaW5lID8gTGF5b3V0VW5pdChib3hMaW5lU3R5bGUuZm9udE1ldHJpY3NPZlBy
aW1hcnlGb250KCkuY2FwSGVpZ2h0KCkpIDogKGNhblVzZUdseXBocyA/IGdseXBoT3ZlcmZsb3ct
PnRvcCA6IExheW91dFVuaXQoYm94TGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgp
LmFzY2VudChiYXNlbGluZVR5cGUoKSkpKSB9OworICAgICAgICBhdXRvIGxldHRlckRlc2NlbnQg
eyBjYW5Vc2VHbHlwaHMgPyBnbHlwaE92ZXJmbG93LT5ib3R0b20gOiAoYm94LmlzUm9vdElubGlu
ZUJveCgpID8gMF9sdSA6IExheW91dFVuaXQoYm94TGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmlt
YXJ5Rm9udCgpLmRlc2NlbnQoYmFzZWxpbmVUeXBlKCkpKSkgfTsKICAgICAgICAgc2V0QXNjZW50
QW5kRGVzY2VudChhc2NlbnQsIGRlc2NlbnQsIGxldHRlckFzY2VudCwgbGV0dGVyRGVzY2VudCwg
YXNjZW50RGVzY2VudFNldCk7CiAgICAgICAgIGFmZmVjdHNBc2NlbnQgPSBsZXR0ZXJBc2NlbnQg
LSBib3gubG9naWNhbFRvcCgpID4gMDsKICAgICAgICAgYWZmZWN0c0Rlc2NlbnQgPSBsZXR0ZXJE
ZXNjZW50ICsgYm94LmxvZ2ljYWxUb3AoKSA+IDA7CiAgICAgICAgIGlmIChjYW5Vc2VHbHlwaHMp
IHsKLSAgICAgICAgICAgIGdseXBoT3ZlcmZsb3ctPnRvcCA9IHN0ZDo6bWluKGdseXBoT3ZlcmZs
b3ctPnRvcCwgc3RkOjptYXgoMF9sdSwgZ2x5cGhPdmVyZmxvdy0+dG9wIC0gYm94TGluZVN0eWxl
LmZvbnRNZXRyaWNzKCkuYXNjZW50KGJhc2VsaW5lVHlwZSgpKSkpOwotICAgICAgICAgICAgZ2x5
cGhPdmVyZmxvdy0+Ym90dG9tID0gc3RkOjptaW4oZ2x5cGhPdmVyZmxvdy0+Ym90dG9tLCBzdGQ6
Om1heCgwX2x1LCBnbHlwaE92ZXJmbG93LT5ib3R0b20gLSBib3hMaW5lU3R5bGUuZm9udE1ldHJp
Y3MoKS5kZXNjZW50KGJhc2VsaW5lVHlwZSgpKSkpOworICAgICAgICAgICAgZ2x5cGhPdmVyZmxv
dy0+dG9wID0gc3RkOjptaW4oZ2x5cGhPdmVyZmxvdy0+dG9wLCBzdGQ6Om1heCgwX2x1LCBnbHlw
aE92ZXJmbG93LT50b3AgLSBib3hMaW5lU3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCku
YXNjZW50KGJhc2VsaW5lVHlwZSgpKSkpOworICAgICAgICAgICAgZ2x5cGhPdmVyZmxvdy0+Ym90
dG9tID0gc3RkOjptaW4oZ2x5cGhPdmVyZmxvdy0+Ym90dG9tLCBzdGQ6Om1heCgwX2x1LCBnbHlw
aE92ZXJmbG93LT5ib3R0b20gLSBib3hMaW5lU3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250
KCkuZGVzY2VudChiYXNlbGluZVR5cGUoKSkpKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlm
IChpbmNsdWRlTWFyZ2luRm9yQm94KGJveCkpIHsKLSAgICAgICAgTGF5b3V0VW5pdCBhc2NlbnRX
aXRoTWFyZ2luID0gYm94TGluZVN0eWxlLmZvbnRNZXRyaWNzKCkuYXNjZW50KGJhc2VsaW5lVHlw
ZSgpKTsKLSAgICAgICAgTGF5b3V0VW5pdCBkZXNjZW50V2l0aE1hcmdpbiA9IGJveExpbmVTdHls
ZS5mb250TWV0cmljcygpLmRlc2NlbnQoYmFzZWxpbmVUeXBlKCkpOworICAgICAgICBMYXlvdXRV
bml0IGFzY2VudFdpdGhNYXJnaW4gPSBib3hMaW5lU3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlG
b250KCkuYXNjZW50KGJhc2VsaW5lVHlwZSgpKTsKKyAgICAgICAgTGF5b3V0VW5pdCBkZXNjZW50
V2l0aE1hcmdpbiA9IGJveExpbmVTdHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5kZXNj
ZW50KGJhc2VsaW5lVHlwZSgpKTsKICAgICAgICAgaWYgKGJveC5wYXJlbnQoKSAmJiAhYm94LnJl
bmRlcmVyKCkuaXNUZXh0T3JMaW5lQnJlYWsoKSkgewogICAgICAgICAgICAgYXNjZW50V2l0aE1h
cmdpbiArPSBib3guYm94TW9kZWxPYmplY3QoKS0+Ym9yZGVyQW5kUGFkZGluZ0JlZm9yZSgpICsg
Ym94LmJveE1vZGVsT2JqZWN0KCktPm1hcmdpbkJlZm9yZSgpOwogICAgICAgICAgICAgZGVzY2Vu
dFdpdGhNYXJnaW4gKz0gYm94LmJveE1vZGVsT2JqZWN0KCktPmJvcmRlckFuZFBhZGRpbmdBZnRl
cigpICsgYm94LmJveE1vZGVsT2JqZWN0KCktPm1hcmdpbkFmdGVyKCk7CkBAIC04MjEsNyArODIx
LDcgQEAgTGF5b3V0VW5pdCBMZWdhY3lSb290SW5saW5lQm94Ojp2ZXJ0aWNhbFBvc2l0aW9uRm9y
Qm94KExlZ2FjeUlubGluZUJveCogYm94LCBWZXIKICAgICBpZiAodmVydGljYWxBbGlnbiAhPSBW
ZXJ0aWNhbEFsaWduOjpCYXNlbGluZSkgewogICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgcGFy
ZW50TGluZVN0eWxlID0gZmlyc3RMaW5lID8gcGFyZW50LT5maXJzdExpbmVTdHlsZSgpIDogcGFy
ZW50LT5zdHlsZSgpOwogICAgICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHBhcmVudExp
bmVTdHlsZS5mb250Q2FzY2FkZSgpOwotICAgICAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1l
dHJpY3MgPSBmb250LmZvbnRNZXRyaWNzKCk7CisgICAgICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBm
b250TWV0cmljcyA9IGZvbnQuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCk7CiAgICAgICAgIGlu
dCBmb250U2l6ZSA9IGZvbnQucGl4ZWxTaXplKCk7CiAKICAgICAgICAgTGluZURpcmVjdGlvbk1v
ZGUgbGluZURpcmVjdGlvbiA9IHBhcmVudC0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IEhv
cml6b250YWxMaW5lIDogVmVydGljYWxMaW5lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHAKaW5kZXggYjEzZTk3YTExNmFlM2ExN2FmYmM1MDM2ZTI2MzlmYTVhNWEyMzIy
ZS4uOGVhMTk5YzI5MThiYjExMzNhNTQ0ZTViNTI3YjYxNmNmNDhmMjE4ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0yNDk2LDcgKzI0OTYsNyBAQCBMYXlv
dXRVbml0IFJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGlu
ZVR5cGUsIGJvb2wgZmlyc3RMaQogICAgIH0KIAogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSA9IGZpcnN0TGluZSA/IGZpcnN0TGluZVN0eWxlKCkgOiB0aGlzLT5zdHlsZSgpOwotICAgIGNv
bnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxlLmZvbnRNZXRyaWNzKCk7CisgICAg
Y29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gc3R5bGUuZm9udE1ldHJpY3NPZlByaW1h
cnlGb250KCk7CiAgICAgcmV0dXJuIExheW91dFVuaXQgeyBmb250TWV0cmljcy5hc2NlbnQoYmFz
ZWxpbmVUeXBlKSArIChsaW5lSGVpZ2h0KGZpcnN0TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9zaXRp
b25Nb2RlKSAtIGZvbnRNZXRyaWNzLmhlaWdodCgpKSAvIDIgfS50b0ludCgpOwogfQogCkBAIC0y
NTQ4LDcgKzI1NDgsNyBAQCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJsb2NrOjpp
bmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlIGxpbgogICAgIH0KIAogICAgIGlm
ICghaGF2ZU5vcm1hbEZsb3dDaGlsZCAmJiBoYXNMaW5lSWZFbXB0eSgpKSB7Ci0gICAgICAgIGF1
dG8mIGZvbnRNZXRyaWNzID0gZmlyc3RMaW5lU3R5bGUoKS5mb250TWV0cmljcygpOworICAgICAg
ICBhdXRvJiBmb250TWV0cmljcyA9IGZpcnN0TGluZVN0eWxlKCkuZm9udE1ldHJpY3NPZlByaW1h
cnlGb250KCk7CiAgICAgICAgIHJldHVybiBMYXlvdXRVbml0IHsgTGF5b3V0VW5pdChmb250TWV0
cmljcy5hc2NlbnQoKQogICAgICAgICAgICAgKyAobGluZUhlaWdodCh0cnVlLCBsaW5lRGlyZWN0
aW9uLCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpIC0gZm9udE1ldHJpY3MuaGVpZ2h0KCkp
IC8gMgogICAgICAgICAgICAgKyAobGluZURpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IGJv
cmRlclRvcCgpICsgcGFkZGluZ1RvcCgpIDogYm9yZGVyUmlnaHQoKSArIHBhZGRpbmdSaWdodCgp
KSkudG9JbnQoKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93
LmNwcAppbmRleCA5N2M2ODY1M2U1ZjBlZmY0YmE5YTA3NDM4ZjQzOWI0MTNiNmQxNTBiLi43YzU2
M2NmOWZjNmE5Yjc0OTY5NzdkODA1ZDU4NTBiM2U4ODFiYzNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAtMjQwMSw3ICsyNDAxLDcgQEAgdm9p
ZCBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVMb2dpY2FsTG9jYXRpb25Gb3JGbG9hdChGbG9hdGlu
Z09iamVjdCYgZmxvYXRpbmdPYmoKIHZvaWQgUmVuZGVyQmxvY2tGbG93OjphZGp1c3RJbml0aWFs
TGV0dGVyUG9zaXRpb24oUmVuZGVyQm94JiBjaGlsZEJveCwgTGF5b3V0VW5pdCYgbG9naWNhbFRv
cE9mZnNldCwgTGF5b3V0VW5pdCYgbWFyZ2luQmVmb3JlT2Zmc2V0KQogewogICAgIGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSA9IGZpcnN0TGluZVN0eWxlKCk7Ci0gICAgY29uc3QgRm9udE1ldHJp
Y3MmIGZvbnRNZXRyaWNzID0gc3R5bGUuZm9udE1ldHJpY3MoKTsKKyAgICBjb25zdCBGb250TWV0
cmljcyYgZm9udE1ldHJpY3MgPSBzdHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsKICAg
ICBpZiAoIWZvbnRNZXRyaWNzLmhhc0NhcEhlaWdodCgpKQogICAgICAgICByZXR1cm47CiAKQEAg
LTI5NjMsOCArMjk2Myw4IEBAIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQmxvY2tG
bG93OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiAKICAgICBBU1NFUlQoZmlyc3RSb290Qm94
KCkpOwogICAgIGlmIChzdHlsZSgpLmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSkKLSAgICAg
ICAgcmV0dXJuIExheW91dFVuaXQgeyBmaXJzdFJvb3RCb3goKS0+bG9naWNhbFRvcCgpICsgZmly
c3RMaW5lU3R5bGUoKS5mb250TWV0cmljcygpLmRlc2NlbnQoZmlyc3RSb290Qm94KCktPmJhc2Vs
aW5lVHlwZSgpKSB9OwotICAgIHJldHVybiBMYXlvdXRVbml0IHsgZmlyc3RSb290Qm94KCktPmxv
Z2ljYWxUb3AoKSArIGZpcnN0TGluZVN0eWxlKCkuZm9udE1ldHJpY3MoKS5hc2NlbnQoZmlyc3RS
b290Qm94KCktPmJhc2VsaW5lVHlwZSgpKSB9OworICAgICAgICByZXR1cm4gTGF5b3V0VW5pdCB7
IGZpcnN0Um9vdEJveCgpLT5sb2dpY2FsVG9wKCkgKyBmaXJzdExpbmVTdHlsZSgpLmZvbnRNZXRy
aWNzT2ZQcmltYXJ5Rm9udCgpLmRlc2NlbnQoZmlyc3RSb290Qm94KCktPmJhc2VsaW5lVHlwZSgp
KSB9OworICAgIHJldHVybiBMYXlvdXRVbml0IHsgZmlyc3RSb290Qm94KCktPmxvZ2ljYWxUb3Ao
KSArIGZpcnN0TGluZVN0eWxlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50KGZp
cnN0Um9vdEJveCgpLT5iYXNlbGluZVR5cGUoKSkgfTsKIH0KIAogc3RkOjpvcHRpb25hbDxMYXlv
dXRVbml0PiBSZW5kZXJCbG9ja0Zsb3c6OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlv
bk1vZGUgbGluZURpcmVjdGlvbikgY29uc3QKQEAgLTI5OTQsNyArMjk5NCw3IEBAIHN0ZDo6b3B0
aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQmxvY2tGbG93OjppbmxpbmVCbG9ja0Jhc2VsaW5lKExp
bmVEaXJlY3Rpb25Nb2RlCiAgICAgICAgIGlmICghaGFzTGluZXMoKSkgewogICAgICAgICAgICAg
aWYgKCFoYXNMaW5lSWZFbXB0eSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7Ci0gICAgICAgICAgICBjb25zdCBhdXRvJiBmb250TWV0cmljcyA9IGZpcnN0TGluZVN0eWxl
KCkuZm9udE1ldHJpY3MoKTsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8mIGZvbnRNZXRyaWNzID0g
Zmlyc3RMaW5lU3R5bGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsKICAgICAgICAgICAg
IHJldHVybiBMYXlvdXRVbml0IHsgTGF5b3V0VW5pdChmb250TWV0cmljcy5hc2NlbnQoKQogICAg
ICAgICAgICAgICAgICsgKGxpbmVIZWlnaHQodHJ1ZSwgbGluZURpcmVjdGlvbiwgUG9zaXRpb25P
ZkludGVyaW9yTGluZUJveGVzKSAtIGZvbnRNZXRyaWNzLmhlaWdodCgpKSAvIDIKICAgICAgICAg
ICAgICAgICArIChsaW5lRGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8gYm9yZGVyVG9wKCkg
KyBwYWRkaW5nVG9wKCkgOiBib3JkZXJSaWdodCgpICsgcGFkZGluZ1JpZ2h0KCkpKS50b0ludCgp
IH07CkBAIC0zMDA0LDcgKzMwMDQsNyBAQCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRl
ckJsb2NrRmxvdzo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZQogICAgICAg
ICAgICAgYm9vbCBpc0ZpcnN0TGluZSA9IGxhc3RSb290Qm94KCkgPT0gZmlyc3RSb290Qm94KCk7
CiAgICAgICAgICAgICBjb25zdCBhdXRvJiBzdHlsZSA9IGlzRmlyc3RMaW5lID8gZmlyc3RMaW5l
U3R5bGUoKSA6IHRoaXMtPnN0eWxlKCk7CiAgICAgICAgICAgICAvLyBMZWdhY3lJbmxpbmVGbG93
Qm94OjpwbGFjZUJveGVzSW5CbG9ja0RpcmVjdGlvbiB3aWxsIGZsaXAgbGluZXMgaW4gY2FzZSBv
ZiB2ZXJ0aWNhbExSIG1vZGUsIHNvIHdlIGNhbiBhc3N1bWUgdmVydGljYWxSTCBmb3Igbm93Lgot
ICAgICAgICAgICAgbGFzdEJhc2VsaW5lID0gc3R5bGUuZm9udE1ldHJpY3MoKS5hc2NlbnQobGFz
dFJvb3RCb3goKS0+YmFzZWxpbmVUeXBlKCkpCisgICAgICAgICAgICBsYXN0QmFzZWxpbmUgPSBz
dHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2NlbnQobGFzdFJvb3RCb3goKS0+YmFz
ZWxpbmVUeXBlKCkpCiAgICAgICAgICAgICAgICAgKyAoc3R5bGUuaXNGbGlwcGVkTGluZXNXcml0
aW5nTW9kZSgpID8gbG9naWNhbEhlaWdodCgpIC0gbGFzdFJvb3RCb3goKS0+bG9naWNhbEJvdHRv
bSgpIDogbGFzdFJvb3RCb3goKS0+bG9naWNhbFRvcCgpKTsKICAgICAgICAgfQogI2lmIEVOQUJM
RShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKaW5kZXggZGRiZTlhNDE2ZjNmOTdlZmYzMjMy
MDJkNjA4NDBmMjAyNzY4N2I1ZC4uNzFlNzczOWQxYzk2NGQyYjQ1ODljNTE4NzI0NDJmYjM4ZDg5
MGRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVk
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRP
YmplY3QuY3BwCkBAIC0yNTYsNyArMjU2LDcgQEAgdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6
cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQKICAg
ICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcygyKTsKICAgICBjb250ZXh0LnN0cm9rZVBhdGgo
c3Ryb2tlUGF0aCk7CiAKLSAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MgPSBmb250
LmZvbnRNZXRyaWNzKCk7CisgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gZm9u
dC5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsKICAgICBmbG9hdCBsYWJlbFggPSByb3VuZGYo
cmVwbGFjZW1lbnRUZXh0UmVjdC5sb2NhdGlvbigpLngoKSArIHJlcGxhY2VtZW50VGV4dFJvdW5k
ZWRSZWN0TGVmdFRleHRNYXJnaW4pOwogICAgIGZsb2F0IGxhYmVsWSA9IHJvdW5kZihyZXBsYWNl
bWVudFRleHRSZWN0LmxvY2F0aW9uKCkueSgpICsgKHJlcGxhY2VtZW50VGV4dFJlY3Quc2l6ZSgp
LmhlaWdodCgpIC0gZm9udE1ldHJpY3MuaGVpZ2h0KCkpIC8gMiArIGZvbnRNZXRyaWNzLmFzY2Vu
dCgpICsgcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RUb3BUZXh0TWFyZ2luKTsKICAgICBjb250
ZXh0LnNldEZpbGxDb2xvcihyZXBsYWNlbWVudFRleHRDb2xvcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRleCAwNTAwZjg5NWZlMGY4MzVhMjRhYTFlN2MzMTUz
NjBkMmZlZDg0ZThjLi5iYjEzOWYyZjU3MjA2NmI4OWFkNGM2ZjJkYjljNTIyNTA3YWNmNjk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTIxMCw3ICsyMTAs
NyBAQCBJbWFnZVNpemVDaGFuZ2VUeXBlIFJlbmRlckltYWdlOjpzZXRJbWFnZVNpemVGb3JBbHRU
ZXh0KENhY2hlZEltYWdlKiBuZXdJbWFnZSAvKgogICAgIC8vIHdlIGhhdmUgYW4gYWx0IGFuZCB0
aGUgdXNlciBtZWFudCBpdCAoaXRzIG5vdCBhIHRleHQgd2UgaW52ZW50ZWQpCiAgICAgaWYgKCFt
X2FsdFRleHQuaXNFbXB0eSgpKSB7CiAgICAgICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250ID0g
c3R5bGUoKS5mb250Q2FzY2FkZSgpOwotICAgICAgICBJbnRTaXplIHBhZGRlZFRleHRTaXplKHBh
ZGRpbmdXaWR0aCArIHN0ZDo6bWluKGNlaWxmKGZvbnQud2lkdGgoUmVuZGVyQmxvY2s6OmNvbnN0
cnVjdFRleHRSdW4obV9hbHRUZXh0LCBzdHlsZSgpKSkpLCBtYXhBbHRUZXh0V2lkdGgpLCBwYWRk
aW5nSGVpZ2h0ICsgc3RkOjptaW4oZm9udC5mb250TWV0cmljcygpLmhlaWdodCgpLCBtYXhBbHRU
ZXh0SGVpZ2h0KSk7CisgICAgICAgIEludFNpemUgcGFkZGVkVGV4dFNpemUocGFkZGluZ1dpZHRo
ICsgc3RkOjptaW4oY2VpbGYoZm9udC53aWR0aChSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1
bihtX2FsdFRleHQsIHN0eWxlKCkpKSksIG1heEFsdFRleHRXaWR0aCksIHBhZGRpbmdIZWlnaHQg
KyBzdGQ6Om1pbihmb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmhlaWdodCgpLCBtYXhB
bHRUZXh0SGVpZ2h0KSk7CiAgICAgICAgIGltYWdlU2l6ZSA9IGltYWdlU2l6ZS5leHBhbmRlZFRv
KHBhZGRlZFRleHRTaXplKTsKICAgICB9CiAKQEAgLTUzMiw3ICs1MzIsNyBAQCB2b2lkIFJlbmRl
ckltYWdlOjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQ
b2ludCYgcGFpbnRPZgogICAgICAgICAgICAgICAgIFN0cmluZyB0ZXh0ID0gZG9jdW1lbnQoKS5k
aXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKG1fYWx0VGV4dCk7CiAgICAgICAgICAgICAg
ICAgY29udGV4dC5zZXRGaWxsQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRo
Q29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlDb2xvcikpOwogICAgICAgICAgICAgICAgIGNvbnN0IEZv
bnRDYXNjYWRlJiBmb250ID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpOwotICAgICAgICAgICAgICAg
IGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IGZvbnQuZm9udE1ldHJpY3MoKTsKKyAg
ICAgICAgICAgICAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MgPSBmb250LmZvbnRN
ZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwogICAgICAgICAgICAgICAgIExheW91dFVuaXQgYXNjZW50
ID0gZm9udE1ldHJpY3MuYXNjZW50KCk7CiAgICAgICAgICAgICAgICAgTGF5b3V0UG9pbnQgYWx0
VGV4dE9mZnNldCA9IHBhaW50T2Zmc2V0OwogICAgICAgICAgICAgICAgIGFsdFRleHRPZmZzZXQu
bW92ZShsZWZ0Qm9yZGVyICsgbGVmdFBhZCArIChwYWRkaW5nV2lkdGggLyAyKSAtIG1pc3NpbmdJ
bWFnZUJvcmRlcldpZHRoLCB0b3BCb3JkZXIgKyB0b3BQYWQgKyBhc2NlbnQgKyAocGFkZGluZ0hl
aWdodCAvIDIpIC0gbWlzc2luZ0ltYWdlQm9yZGVyV2lkdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW5saW5lLmNwcAppbmRleCA2YTlhMzkxMDAzZjJlMDA4YjJhZWFjZjc3ZjI0
Zjg3YWQzZWE1MjFlLi4wYTA5ZjQ4YmNlNjUxNWMwODk3NmE2ODQzZGMwMjExZmJlNzFiYTM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcApAQCAtMjEwLDcgKzIx
MCw3IEBAIGJvb2wgUmVuZGVySW5saW5lOjptYXlBZmZlY3RMYXlvdXQoKSBjb25zdAogICAgICAg
ICB8fCAocGFyZW50UmVuZGVySW5saW5lICYmIHBhcmVudFN0eWxlLT52ZXJ0aWNhbEFsaWduKCkg
IT0gVmVydGljYWxBbGlnbjo6QmFzZWxpbmUpCiAgICAgICAgIHx8IHN0eWxlKCkudmVydGljYWxB
bGlnbigpICE9IFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lCiAgICAgICAgIHx8IHN0eWxlKCkudGV4
dEVtcGhhc2lzTWFyaygpICE9IFRleHRFbXBoYXNpc01hcms6Ok5vbmUKLSAgICAgICAgfHwgKGNo
ZWNrRm9udHMgJiYgKCFwYXJlbnRTdHlsZS0+Zm9udENhc2NhZGUoKS5mb250TWV0cmljcygpLmhh
c0lkZW50aWNhbEFzY2VudERlc2NlbnRBbmRMaW5lR2FwKHN0eWxlKCkuZm9udENhc2NhZGUoKS5m
b250TWV0cmljcygpKQorICAgICAgICB8fCAoY2hlY2tGb250cyAmJiAoIXBhcmVudFN0eWxlLT5m
b250Q2FzY2FkZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmhhc0lkZW50aWNhbEFzY2Vu
dERlc2NlbnRBbmRMaW5lR2FwKHN0eWxlKCkuZm9udENhc2NhZGUoKS5mb250TWV0cmljc09mUHJp
bWFyeUZvbnQoKSkKICAgICAgICAgfHwgcGFyZW50U3R5bGUtPmxpbmVIZWlnaHQoKSAhPSBzdHls
ZSgpLmxpbmVIZWlnaHQoKSkpCiAgICAgICAgIHx8IGhhc0hhcmRMaW5lQnJlYWtDaGlsZE9ubHk7
CiAKQEAgLTIxOCw3ICsyMTgsNyBAQCBib29sIFJlbmRlcklubGluZTo6bWF5QWZmZWN0TGF5b3V0
KCkgY29uc3QKICAgICAgICAgLy8gSGF2ZSB0byBjaGVjayB0aGUgZmlyc3QgbGluZSBzdHlsZSBh
cyB3ZWxsLgogICAgICAgICBwYXJlbnRTdHlsZSA9ICZwYXJlbnQoKS0+Zmlyc3RMaW5lU3R5bGUo
KTsKICAgICAgICAgYXV0byYgY2hpbGRTdHlsZSA9IGZpcnN0TGluZVN0eWxlKCk7Ci0gICAgICAg
IG1heUFmZmVjdExheW91dCA9ICFwYXJlbnRTdHlsZS0+Zm9udENhc2NhZGUoKS5mb250TWV0cmlj
cygpLmhhc0lkZW50aWNhbEFzY2VudERlc2NlbnRBbmRMaW5lR2FwKGNoaWxkU3R5bGUuZm9udENh
c2NhZGUoKS5mb250TWV0cmljcygpKQorICAgICAgICBtYXlBZmZlY3RMYXlvdXQgPSAhcGFyZW50
U3R5bGUtPmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuaGFzSWRlbnRp
Y2FsQXNjZW50RGVzY2VudEFuZExpbmVHYXAoY2hpbGRTdHlsZS5mb250Q2FzY2FkZSgpLmZvbnRN
ZXRyaWNzT2ZQcmltYXJ5Rm9udCgpKQogICAgICAgICAgICAgfHwgY2hpbGRTdHlsZS52ZXJ0aWNh
bEFsaWduKCkgIT0gVmVydGljYWxBbGlnbjo6QmFzZWxpbmUKICAgICAgICAgICAgIHx8IHBhcmVu
dFN0eWxlLT5saW5lSGVpZ2h0KCkgIT0gY2hpbGRTdHlsZS5saW5lSGVpZ2h0KCk7CiAgICAgfQpA
QCAtODU1LDcgKzg1NSw3IEBAIExheW91dFVuaXQgUmVuZGVySW5saW5lOjpsaW5lSGVpZ2h0KGJv
b2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSAvKmRpcmVjdGlvCiBMYXlvdXRVbml0IFJl
bmRlcklubGluZTo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBi
b29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25N
b2RlIGxpbmVQb3NpdGlvbk1vZGUpIGNvbnN0CiB7CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlID0gZmlyc3RMaW5lID8gZmlyc3RMaW5lU3R5bGUoKSA6IHRoaXMtPnN0eWxlKCk7Ci0gICAg
Y29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gc3R5bGUuZm9udE1ldHJpY3MoKTsKKyAg
ICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MgPSBzdHlsZS5mb250TWV0cmljc09mUHJp
bWFyeUZvbnQoKTsKICAgICByZXR1cm4gTGF5b3V0VW5pdCB7IChmb250TWV0cmljcy5hc2NlbnQo
YmFzZWxpbmVUeXBlKSArIChsaW5lSGVpZ2h0KGZpcnN0TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9z
aXRpb25Nb2RlKSAtIGZvbnRNZXRyaWNzLmhlaWdodCgpKSAvIDIpLnRvSW50KCkgfTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcAppbmRleCBhMjM5
NDY1MTVhOGVkYTdjODc5YTMyYWI5MjBmOWZiYzJjNzQ1YTU1Li5mNzVlZTc5ZWY3NzJkMjNiMDQ0
YWUyYWUzOTQ3MGQxOTk5ZTg1Y2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGluZUJyZWFrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGluZUJyZWFrLmNwcApAQCAtODAsNyArODAsNyBAQCBMYXlvdXRVbml0IFJlbmRlckxpbmVC
cmVhazo6bGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgLypkaXJl
YwogTGF5b3V0VW5pdCBSZW5kZXJMaW5lQnJlYWs6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2Vs
aW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVj
dGlvbiwgTGluZVBvc2l0aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdAogewogICAgIGNv
bnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IGZpcnN0TGluZSA/IGZpcnN0TGluZVN0eWxlKCkgOiB0
aGlzLT5zdHlsZSgpOwotICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxl
LmZvbnRNZXRyaWNzKCk7CisgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gc3R5
bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCk7CiAgICAgcmV0dXJuIExheW91dFVuaXQgeyAo
Zm9udE1ldHJpY3MuYXNjZW50KGJhc2VsaW5lVHlwZSkgKyAobGluZUhlaWdodChmaXJzdExpbmUs
IGRpcmVjdGlvbiwgbGluZVBvc2l0aW9uTW9kZSkgLSBmb250TWV0cmljcy5oZWlnaHQoKSkgLyAy
KS50b0ludCgpIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94
LmNwcAppbmRleCAyZTliNTg1NmQyOGM5NGU3NmM0OWIzNzliZmM1YjhjYWZkNDc4ZDYzLi5hOWIy
MmM1ZTU1ZWFmYzRkMzhkYzA2YzUwNjdiNjFmNTdiOWNmMmIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC0zNzgsNyArMzc4LDcgQEAgc3RhdGljIExh
eW91dFNpemUgaXRlbU9mZnNldEZvckFsaWdubWVudChUZXh0UnVuIHRleHRSdW4sIGNvbnN0IFJl
bmRlclN0eWxlKiBpdGUKICAgICBpZiAoYWN0dWFsQWxpZ25tZW50ID09IFRleHRBbGlnbk1vZGU6
OlN0YXJ0IHx8IGFjdHVhbEFsaWdubWVudCA9PSBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5KQogICAg
ICAgICBhY3R1YWxBbGlnbm1lbnQgPSBpdGVtU3R5bGUtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24o
KSA/IFRleHRBbGlnbk1vZGU6OkxlZnQgOiBUZXh0QWxpZ25Nb2RlOjpSaWdodDsKIAotICAgIExh
eW91dFNpemUgb2Zmc2V0ID0gTGF5b3V0U2l6ZSgwLCBpdGVtRm9udC5mb250TWV0cmljcygpLmFz
Y2VudCgpKTsKKyAgICBMYXlvdXRTaXplIG9mZnNldCA9IExheW91dFNpemUoMCwgaXRlbUZvbnQu
Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50KCkpOwogICAgIGlmIChhY3R1YWxBbGln
bm1lbnQgPT0gVGV4dEFsaWduTW9kZTo6UmlnaHQgfHwgYWN0dWFsQWxpZ25tZW50ID09IFRleHRB
bGlnbk1vZGU6OldlYktpdFJpZ2h0KSB7CiAgICAgICAgIGZsb2F0IHRleHRXaWR0aCA9IGl0ZW1G
b250LndpZHRoKHRleHRSdW4pOwogICAgICAgICBvZmZzZXQuc2V0V2lkdGgoaXRlbUJvdWRpbmdC
b3gud2lkdGgoKSAtIHRleHRXaWR0aCAtIG9wdGlvbnNTcGFjaW5nSG9yaXpvbnRhbCk7CkBAIC03
MDQsNyArNzA0LDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjpzY3JvbGxUbyhpbnQgbmV3T2Zmc2V0
KQogCiBMYXlvdXRVbml0IFJlbmRlckxpc3RCb3g6Oml0ZW1IZWlnaHQoKSBjb25zdAogewotICAg
IHJldHVybiBzdHlsZSgpLmZvbnRNZXRyaWNzKCkuaGVpZ2h0KCkgKyByb3dTcGFjaW5nOworICAg
IHJldHVybiBzdHlsZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmhlaWdodCgpICsgcm93
U3BhY2luZzsKIH0KIAogaW50IFJlbmRlckxpc3RCb3g6OnZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RN
YXJrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3Bw
CmluZGV4IDAxZTVkY2U4ZTc1MmYzOTAxOGFjODY3MWY2Njg1ZWMyNjBiODRkMTYuLjhmNzE1YTQ2
MWNmZTBhMWZhMThlMTYyZmNiYmY5NDJhN2NkZjAxMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKQEAgLTE2NDgsNyArMTY0OCw3IEBAIHZvaWQg
UmVuZGVyTGlzdE1hcmtlcjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50JiBwYWludE9mZnNlCiAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKC1tYXJrZXJSZWN0
LngoKSwgLW1hcmtlclJlY3QubWF4WSgpKTsKICAgICB9CiAKLSAgICBGbG9hdFBvaW50IHRleHRP
cmlnaW4gPSBGbG9hdFBvaW50KG1hcmtlclJlY3QueCgpLCBtYXJrZXJSZWN0LnkoKSArIHN0eWxl
KCkuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSk7CisgICAgRmxvYXRQb2ludCB0ZXh0T3JpZ2luID0g
RmxvYXRQb2ludChtYXJrZXJSZWN0LngoKSwgbWFya2VyUmVjdC55KCkgKyBzdHlsZSgpLmZvbnRN
ZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudCgpKTsKICAgICB0ZXh0T3JpZ2luID0gcm91bmRQ
b2ludFRvRGV2aWNlUGl4ZWxzKExheW91dFBvaW50KHRleHRPcmlnaW4pLCBkb2N1bWVudCgpLmRl
dmljZVNjYWxlRmFjdG9yKCksIHN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKTsKICAg
ICBjb250ZXh0LmRyYXdUZXh0KHN0eWxlKCkuZm9udENhc2NhZGUoKSwgdGV4dFJ1bigpLCB0ZXh0
T3JpZ2luKTsKIH0KQEAgLTE3ODAsNyArMTc4MCw3IEBAIHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6
bGF5b3V0KCkKICAgICAgICAgc2V0SGVpZ2h0KG1faW1hZ2UtPmltYWdlU2l6ZSh0aGlzLCBzdHls
ZSgpLmVmZmVjdGl2ZVpvb20oKSkuaGVpZ2h0KCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHNl
dExvZ2ljYWxXaWR0aChtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSk7Ci0gICAgICAgIHNldExv
Z2ljYWxIZWlnaHQoc3R5bGUoKS5mb250TWV0cmljcygpLmhlaWdodCgpKTsKKyAgICAgICAgc2V0
TG9naWNhbEhlaWdodChzdHlsZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmhlaWdodCgp
KTsKICAgICB9CiAKICAgICBzZXRNYXJnaW5TdGFydCgwKTsKQEAgLTE4MjAsNyArMTgyMCw3IEBA
IHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6dXBkYXRlQ29udGVudCgpCiAgICAgaWYgKGlzSW1hZ2Uo
KSkgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIHNvbWV3aGF0IGFyYml0cmFyeSB3aWR0
aC4gIEdlbmVyYXRlZCBpbWFnZXMgZm9yIG1hcmtlcnMgcmVhbGx5IHdvbid0IGJlY29tZSBwYXJ0
aWN1bGFybHkgdXNlZnVsCiAgICAgICAgIC8vIHVudGlsIHdlIHN1cHBvcnQgdGhlIENTUzMgbWFy
a2VyIHBzZXVkb2NsYXNzIHRvIGFsbG93IGNvbnRyb2wgb3ZlciB0aGUgd2lkdGggYW5kIGhlaWdo
dCBvZiB0aGUgbWFya2VyIGJveC4KLSAgICAgICAgTGF5b3V0VW5pdCBidWxsZXRXaWR0aCA9IHN0
eWxlKCkuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSAvIDJfbHU7CisgICAgICAgIExheW91dFVuaXQg
YnVsbGV0V2lkdGggPSBzdHlsZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudCgp
IC8gMl9sdTsKICAgICAgICAgTGF5b3V0U2l6ZSBkZWZhdWx0QnVsbGV0U2l6ZShidWxsZXRXaWR0
aCwgYnVsbGV0V2lkdGgpOwogICAgICAgICBMYXlvdXRTaXplIGltYWdlU2l6ZSA9IGNhbGN1bGF0
ZUltYWdlSW50cmluc2ljRGltZW5zaW9ucyhtX2ltYWdlLmdldCgpLCBkZWZhdWx0QnVsbGV0U2l6
ZSwgRG9Ob3RTY2FsZUJ5RWZmZWN0aXZlWm9vbSk7CiAgICAgICAgIG1faW1hZ2UtPnNldENvbnRh
aW5lckNvbnRleHRGb3JSZW5kZXJlcigqdGhpcywgaW1hZ2VTaXplLCBzdHlsZSgpLmVmZmVjdGl2
ZVpvb20oKSk7CkBAIC0xODY3LDcgKzE4NjcsNyBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OmNv
bXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkKICAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNp
cmNsZToKICAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkRpc2M6CiAgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpTcXVhcmU6Ci0gICAgICAgIGxvZ2ljYWxXaWR0aCA9IChmb250LmZvbnRNZXRyaWNzKCku
YXNjZW50KCkgKiAyIC8gMyArIDEpIC8gMiArIDI7CisgICAgICAgIGxvZ2ljYWxXaWR0aCA9IChm
b250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudCgpICogMiAvIDMgKyAxKSAvIDIg
KyAyOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBpZiAoIW1fdGV4dFdp
dGhTdWZmaXguaXNFbXB0eSgpKQpAQCAtMTg4NSw3ICsxODg1LDcgQEAgdm9pZCBSZW5kZXJMaXN0
TWFya2VyOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpCiAKIHZvaWQgUmVuZGVyTGlz
dE1hcmtlcjo6dXBkYXRlTWFyZ2lucygpCiB7Ci0gICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRN
ZXRyaWNzID0gc3R5bGUoKS5mb250TWV0cmljcygpOworICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBm
b250TWV0cmljcyA9IHN0eWxlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCk7CiAKICAgICBM
YXlvdXRVbml0IG1hcmdpblN0YXJ0OwogICAgIExheW91dFVuaXQgbWFyZ2luRW5kOwpAQCAtMTk2
MSw3ICsxOTYxLDcgQEAgRmxvYXRSZWN0IFJlbmRlckxpc3RNYXJrZXI6OnJlbGF0aXZlTWFya2Vy
UmVjdCgpCiAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDaXJjbGU6CiAgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpTcXVhcmU6IHsKICAgICAgICAgLy8gRklYTUU6IEFyZSB0aGVzZSBwYXJ0aWN1bGFy
IHJvdW5kaW5nIHJ1bGVzIG5lY2Vzc2FyeT8KLSAgICAgICAgY29uc3QgRm9udE1ldHJpY3MmIGZv
bnRNZXRyaWNzID0gc3R5bGUoKS5mb250TWV0cmljcygpOworICAgICAgICBjb25zdCBGb250TWV0
cmljcyYgZm9udE1ldHJpY3MgPSBzdHlsZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwog
ICAgICAgICBpbnQgYXNjZW50ID0gZm9udE1ldHJpY3MuYXNjZW50KCk7CiAgICAgICAgIGludCBi
dWxsZXRXaWR0aCA9IChhc2NlbnQgKiAyIC8gMyArIDEpIC8gMjsKICAgICAgICAgcmVsYXRpdmVS
ZWN0ID0gRmxvYXRSZWN0KDEsIDMgKiAoYXNjZW50IC0gYXNjZW50ICogMiAvIDMpIC8gMiwgYnVs
bGV0V2lkdGgsIGJ1bGxldFdpZHRoKTsKQEAgLTE5NzEsNyArMTk3MSw3IEBAIEZsb2F0UmVjdCBS
ZW5kZXJMaXN0TWFya2VyOjpyZWxhdGl2ZU1hcmtlclJlY3QoKQogICAgICAgICBpZiAobV90ZXh0
V2l0aFN1ZmZpeC5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gRmxvYXRSZWN0KCk7CiAg
ICAgICAgIGF1dG8mIGZvbnQgPSBzdHlsZSgpLmZvbnRDYXNjYWRlKCk7Ci0gICAgICAgIHJlbGF0
aXZlUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCBmb250LndpZHRoKHRleHRSdW4oKSksIGZvbnQuZm9u
dE1ldHJpY3MoKS5oZWlnaHQoKSk7CisgICAgICAgIHJlbGF0aXZlUmVjdCA9IEZsb2F0UmVjdCgw
LCAwLCBmb250LndpZHRoKHRleHRSdW4oKSksIGZvbnQuZm9udE1ldHJpY3NPZlByaW1hcnlGb250
KCkuaGVpZ2h0KCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSdWJ5UnVuLmNwcAppbmRleCA1YTExNWY1NzFjYTI2ODY3Y2U2YWQwMjM2
Mjg2ZTI0NDhlOWZlNWJiLi5hNWI4MTIxYWVlMWExOGY2MmRhOWM5ZDdmZjRiMmY4MWU3ZGExMTNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3BwCkBAIC0xNjUs
NyArMTY1LDcgQEAgdm9pZCBSZW5kZXJSdWJ5UnVuOjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0
Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUhlaWdodCkKICAgICAgICAgLy8gQm9wb21vZm8uIFdl
IG5lZWQgdG8gbW92ZSB0aGUgUmVuZGVyUnVieVRleHQgb3ZlciB0byB0aGUgcmlnaHQgc2lkZSBh
bmQgY2VudGVyIGl0CiAgICAgICAgIC8vIHZlcnRpY2FsbHkgcmVsYXRpdmUgdG8gdGhlIGJhc2Uu
CiAgICAgICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250ID0gc3R5bGUoKS5mb250Q2FzY2FkZSgp
OwotICAgICAgICBmbG9hdCBkaXN0YW5jZUJldHdlZW5CYXNlID0gc3RkOjptYXgoZm9udC5sZXR0
ZXJTcGFjaW5nKCksIDIuMGYgKiBydC0+c3R5bGUoKS5mb250Q2FzY2FkZSgpLmZvbnRNZXRyaWNz
KCkuaGVpZ2h0KCkpOworICAgICAgICBmbG9hdCBkaXN0YW5jZUJldHdlZW5CYXNlID0gc3RkOjpt
YXgoZm9udC5sZXR0ZXJTcGFjaW5nKCksIDIuMGYgKiBydC0+c3R5bGUoKS5mb250Q2FzY2FkZSgp
LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmhlaWdodCgpKTsKICAgICAgICAgc2V0V2lkdGgo
d2lkdGgoKSArIGRpc3RhbmNlQmV0d2VlbkJhc2UgLSBmb250LmxldHRlclNwYWNpbmcoKSk7CiAg
ICAgICAgIGlmIChSZW5kZXJSdWJ5QmFzZSogcmIgPSBydWJ5QmFzZSgpKSB7CiAgICAgICAgICAg
ICBMYXlvdXRVbml0IGZpcnN0TGluZVRvcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4
dEJveFBhaW50ZXIuY3BwCmluZGV4IGNhNWI3NDBkOTA0NGJkNjVlMzY2YjU3ZDc2YzM0MjhjM2Y5
ZWUzZjYuLjM0YWQyYjhmZDQ0ZmFlNjk4ZTY3OTNhZGRiYjhhOGI3OTRjODE0YTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcApAQCAtMzI0LDcgKzMyNCw3
IEBAIHZvaWQgVGV4dEJveFBhaW50ZXI6OnBhaW50Rm9yZWdyb3VuZChjb25zdCBTdHlsZWRNYXJr
ZWRUZXh0JiBtYXJrZWRUZXh0KQogICAgIGZsb2F0IGVtcGhhc2lzTWFya09mZnNldCA9IDA7CiAg
ICAgY29uc3QgQXRvbVN0cmluZyYgZW1waGFzaXNNYXJrID0gbV9lbXBoYXNpc01hcmtFeGlzdHNB
bmRJc0Fib3ZlID8gbV9zdHlsZS50ZXh0RW1waGFzaXNNYXJrU3RyaW5nKCkgOiBudWxsQXRvbSgp
OwogICAgIGlmICghZW1waGFzaXNNYXJrLmlzRW1wdHkoKSkKLSAgICAgICAgZW1waGFzaXNNYXJr
T2Zmc2V0ID0gKm1fZW1waGFzaXNNYXJrRXhpc3RzQW5kSXNBYm92ZSA/IC1mb250LmZvbnRNZXRy
aWNzKCkuYXNjZW50KCkgLSBmb250LmVtcGhhc2lzTWFya0Rlc2NlbnQoZW1waGFzaXNNYXJrKSA6
IGZvbnQuZm9udE1ldHJpY3MoKS5kZXNjZW50KCkgKyBmb250LmVtcGhhc2lzTWFya0FzY2VudChl
bXBoYXNpc01hcmspOworICAgICAgICBlbXBoYXNpc01hcmtPZmZzZXQgPSAqbV9lbXBoYXNpc01h
cmtFeGlzdHNBbmRJc0Fib3ZlID8gLWZvbnQuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNj
ZW50KCkgLSBmb250LmVtcGhhc2lzTWFya0Rlc2NlbnQoZW1waGFzaXNNYXJrKSA6IGZvbnQuZm9u
dE1ldHJpY3NPZlByaW1hcnlGb250KCkuZGVzY2VudCgpICsgZm9udC5lbXBoYXNpc01hcmtBc2Nl
bnQoZW1waGFzaXNNYXJrKTsKIAogICAgIFRleHRQYWludGVyIHRleHRQYWludGVyIHsgY29udGV4
dCB9OwogICAgIHRleHRQYWludGVyLnNldEZvbnQoZm9udCk7CkBAIC00ODAsNyArNDgwLDcgQEAg
dm9pZCBUZXh0Qm94UGFpbnRlcjo6cGFpbnRDb21wb3NpdGlvblVuZGVybGluZShjb25zdCBDb21w
b3NpdGlvblVuZGVybGluZSYgdW5kZXIKICAgICAvLyBBbGwgb3RoZXIgbWFya2VkIHRleHQgdW5k
ZXJsaW5lcyBhcmUgMXB4IHRoaWNrLgogICAgIC8vIElmIHRoZXJlJ3Mgbm90IGVub3VnaCBzcGFj
ZSB0aGUgdW5kZXJsaW5lIHdpbGwgdG91Y2ggb3Igb3ZlcmxhcCBjaGFyYWN0ZXJzLgogICAgIGlu
dCBsaW5lVGhpY2tuZXNzID0gMTsKLSAgICBpbnQgYmFzZWxpbmUgPSBtX3N0eWxlLmZvbnRNZXRy
aWNzKCkuYXNjZW50KCk7CisgICAgaW50IGJhc2VsaW5lID0gbV9zdHlsZS5mb250TWV0cmljc09m
UHJpbWFyeUZvbnQoKS5hc2NlbnQoKTsKICAgICBpZiAodW5kZXJsaW5lLnRoaWNrICYmIHRleHRC
b3goKS5sb2dpY2FsSGVpZ2h0KCkgLSBiYXNlbGluZSA+PSAyKQogICAgICAgICBsaW5lVGhpY2tu
ZXNzID0gMjsKIApAQCAtNTkwLDcgKzU5MCw3IEBAIEZsb2F0UmVjdCBUZXh0Qm94UGFpbnRlcjo6
Y29tcHV0ZVBhaW50UmVjdChjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiBGbG9hdFJl
Y3QgVGV4dEJveFBhaW50ZXI6OmNhbGN1bGF0ZURvY3VtZW50TWFya2VyQm91bmRzKGNvbnN0IElu
bGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3ImIHRleHRCb3gsIGNvbnN0IE1hcmtlZFRleHQm
IG1hcmtlZFRleHQpCiB7CiAgICAgYXV0byYgZm9udCA9IHRleHRCb3gtPmZvbnRDYXNjYWRlKCk7
Ci0gICAgYXV0byBhc2NlbnQgPSBmb250LmZvbnRNZXRyaWNzKCkuYXNjZW50KCk7CisgICAgYXV0
byBhc2NlbnQgPSBmb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudCgpOwogICAg
IGF1dG8gZm9udFNpemUgPSBzdGQ6Om1pbihzdGQ6Om1heChmb250LnNpemUoKSwgMTAuMGYpLCA0
MC4wZik7CiAgICAgYXV0byB5ID0gYXNjZW50ICsgMC4xMTAzNSAqIGZvbnRTaXplOwogICAgIGF1
dG8gaGVpZ2h0ID0gMC4xMzI0NyAqIGZvbnRTaXplOwpAQCAtNjIxLDcgKzYyMSw3IEBAIGNvbnN0
IEZvbnRDYXNjYWRlJiBUZXh0Qm94UGFpbnRlcjo6Zm9udENhc2NhZGUoKSBjb25zdAogCiBGbG9h
dFBvaW50IFRleHRCb3hQYWludGVyOjp0ZXh0T3JpZ2luRnJvbVBhaW50UmVjdChjb25zdCBGbG9h
dFJlY3QmIHBhaW50UmVjdCkgY29uc3QKIHsKLSAgICBGbG9hdFBvaW50IHRleHRPcmlnaW4geyBw
YWludFJlY3QueCgpLCBwYWludFJlY3QueSgpICsgZm9udENhc2NhZGUoKS5mb250TWV0cmljcygp
LmFzY2VudCgpIH07CisgICAgRmxvYXRQb2ludCB0ZXh0T3JpZ2luIHsgcGFpbnRSZWN0LngoKSwg
cGFpbnRSZWN0LnkoKSArIGZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCku
YXNjZW50KCkgfTsKICAgICBpZiAodGV4dEJveCgpLmlzQ29tYmluZWRUZXh0KCkpIHsKICAgICAg
ICAgaWYgKGF1dG8gbmV3T3JpZ2luID0gZG93bmNhc3Q8UmVuZGVyQ29tYmluZVRleHQ+KG1fcmVu
ZGVyZXIpLmNvbXB1dGVUZXh0T3JpZ2luKHBhaW50UmVjdCkpCiAgICAgICAgICAgICB0ZXh0T3Jp
Z2luID0gbmV3T3JpZ2luLnZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwCmluZGV4IDRmZjQ4MTZmYzQzZWNlNzhlZTg5Nzcx
ZTE2ZDg1NWZhMDVmZmQxYzkuLjE2MzE5ODFiNmNhOWZmM2Q4MTVkZGZjMWEzMGU2ODliMjFmMGY2
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBh
aW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBh
aW50ZXIuY3BwCkBAIC0yMDQsNyArMjA0LDcgQEAgVGV4dERlY29yYXRpb25QYWludGVyOjpUZXh0
RGVjb3JhdGlvblBhaW50ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBPcHRpb25TZXQKIC8v
IFBhaW50IHRleHQtc2hhZG93LCB1bmRlcmxpbmUsIG92ZXJsaW5lCiB2b2lkIFRleHREZWNvcmF0
aW9uUGFpbnRlcjo6cGFpbnRCYWNrZ3JvdW5kRGVjb3JhdGlvbnMoY29uc3QgVGV4dFJ1biYgdGV4
dFJ1biwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgY29uc3QgRmxvYXRQb2ludCYgYm94
T3JpZ2luKQogewotICAgIGNvbnN0IGF1dG8mIGZvbnRNZXRyaWNzID0gbV9saW5lU3R5bGUuZm9u
dE1ldHJpY3MoKTsKKyAgICBjb25zdCBhdXRvJiBmb250TWV0cmljcyA9IG1fbGluZVN0eWxlLmZv
bnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwogICAgIGZsb2F0IHRleHREZWNvcmF0aW9uVGhpY2tu
ZXNzID0gbV9saW5lU3R5bGUudGV4dERlY29yYXRpb25UaGlja25lc3MoKS5yZXNvbHZlKG1fbGlu
ZVN0eWxlLmNvbXB1dGVkRm9udFNpemUoKSwgZm9udE1ldHJpY3MpOwogICAgIEZsb2F0UG9pbnQg
bG9jYWxPcmlnaW4gPSBib3hPcmlnaW47CiAKQEAgLTI3OSw3ICsyNzksNyBAQCB2b2lkIFRleHRE
ZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRCYWNrZ3JvdW5kRGVjb3JhdGlvbnMoY29uc3QgVGV4dFJ1
biYgdGV4dFJ1biwgYwogICAgICAgICBpZiAobV9kZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVj
b3JhdGlvbkxpbmU6OlVuZGVybGluZSkpIHsKICAgICAgICAgICAgIGZsb2F0IHRleHREZWNvcmF0
aW9uQmFzZUZvbnRTaXplID0gMTY7CiAgICAgICAgICAgICBhdXRvIGRlZmF1bHRHYXAgPSBtX2xp
bmVTdHlsZS5jb21wdXRlZEZvbnRTaXplKCkgLyB0ZXh0RGVjb3JhdGlvbkJhc2VGb250U2l6ZTsK
LSAgICAgICAgICAgIGZsb2F0IG9mZnNldCA9IGNvbXB1dGVVbmRlcmxpbmVPZmZzZXQobV9saW5l
U3R5bGUudGV4dFVuZGVybGluZVBvc2l0aW9uKCksIG1fbGluZVN0eWxlLnRleHRVbmRlcmxpbmVP
ZmZzZXQoKSwgbV9saW5lU3R5bGUuZm9udE1ldHJpY3MoKSwgbV90ZXh0Qm94LCBkZWZhdWx0R2Fw
KTsKKyAgICAgICAgICAgIGZsb2F0IG9mZnNldCA9IGNvbXB1dGVVbmRlcmxpbmVPZmZzZXQobV9s
aW5lU3R5bGUudGV4dFVuZGVybGluZVBvc2l0aW9uKCksIG1fbGluZVN0eWxlLnRleHRVbmRlcmxp
bmVPZmZzZXQoKSwgbV9saW5lU3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCksIG1fdGV4
dEJveCwgZGVmYXVsdEdhcCk7CiAgICAgICAgICAgICBmbG9hdCB3YXZ5T2Zmc2V0ID0gbV9zdHls
ZXMudW5kZXJsaW5lU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZTo6V2F2eSA/IG1fd2F2eU9m
ZnNldCA6IDA7CiAgICAgICAgICAgICBGbG9hdFJlY3QgcmVjdChsb2NhbE9yaWdpbiwgRmxvYXRT
aXplKG1fd2lkdGgsIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzKSk7CiAgICAgICAgICAgICByZWN0
Lm1vdmUoMCwgb2Zmc2V0ICsgd2F2eU9mZnNldCk7CkBAIC0zMTAsMTMgKzMxMCwxMyBAQCB2b2lk
IFRleHREZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRGb3JlZ3JvdW5kRGVjb3JhdGlvbnMoY29uc3Qg
RmxvYXRQb2ludCYgYm94T3JpZwogICAgIGlmICghbV9kZWNvcmF0aW9ucy5jb250YWlucyhUZXh0
RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZmxv
YXQgdGV4dERlY29yYXRpb25UaGlja25lc3MgPSBtX2xpbmVTdHlsZS50ZXh0RGVjb3JhdGlvblRo
aWNrbmVzcygpLnJlc29sdmUobV9saW5lU3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpLCBtX2xpbmVT
dHlsZS5mb250TWV0cmljcygpKTsKKyAgICBmbG9hdCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcyA9
IG1fbGluZVN0eWxlLnRleHREZWNvcmF0aW9uVGhpY2tuZXNzKCkucmVzb2x2ZShtX2xpbmVTdHls
ZS5jb21wdXRlZEZvbnRTaXplKCksIG1fbGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9u
dCgpKTsKICAgICBwYWludExpbmVUaHJvdWdoKG1fc3R5bGVzLmxpbmV0aHJvdWdoQ29sb3IsIHRl
eHREZWNvcmF0aW9uVGhpY2tuZXNzLCBib3hPcmlnaW4pOwogfQogCiB2b2lkIFRleHREZWNvcmF0
aW9uUGFpbnRlcjo6cGFpbnRMaW5lVGhyb3VnaChjb25zdCBDb2xvciYgY29sb3IsIGZsb2F0IHRo
aWNrbmVzcywgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxPcmlnaW4pCiB7Ci0gICAgY29uc3QgYXV0
byYgZm9udE1ldHJpY3MgPSBtX2xpbmVTdHlsZS5mb250TWV0cmljcygpOworICAgIGNvbnN0IGF1
dG8mIGZvbnRNZXRyaWNzID0gbV9saW5lU3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCk7
CiAgICAgRmxvYXRSZWN0IHJlY3QobG9jYWxPcmlnaW4sIEZsb2F0U2l6ZShtX3dpZHRoLCB0aGlj
a25lc3MpKTsKICAgICBmbG9hdCBhdXRvVGV4dERlY29yYXRpb25UaGlja25lc3MgPSBUZXh0RGVj
b3JhdGlvblRoaWNrbmVzczo6Y3JlYXRlV2l0aEF1dG8oKS5yZXNvbHZlKG1fbGluZVN0eWxlLmNv
bXB1dGVkRm9udFNpemUoKSwgZm9udE1ldHJpY3MpOwogICAgIGF1dG8gY2VudGVyID0gMiAqIGZv
bnRNZXRyaWNzLmZsb2F0QXNjZW50KCkgLyAzICsgYXV0b1RleHREZWNvcmF0aW9uVGhpY2tuZXNz
IC8gMjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwCmluZGV4IGE1OWVl
ZDQ0ZjRhYTM0NDYzNzI4ZmI2ZTI2MTE1ZDg5NWU1NDQ3OWMuLmZmYTdhN2ExNGM3YWJhOTA4YmZm
Y2I2ZmQ1MDFlMTI3ZTkwMzhhYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9UZXh0UGFpbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWlu
dGVyLmNwcApAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgVGV4dFBhaW50ZXI6OnBhaW50VGV4dEFu
ZEVtcGhhc2lzTWFya3NJZk5lZWRlZChjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjb25zCiAgICAg
dXBkYXRlR3JhcGhpY3NDb250ZXh0KG1fY29udGV4dCwgcGFpbnRTdHlsZSwgVXNlRW1waGFzaXNN
YXJrQ29sb3IpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUZXh0UnVuPiBvYmplY3RSZXBs
YWNlbWVudENoYXJhY3RlclRleHRSdW4oU3RyaW5nVmlldygmb2JqZWN0UmVwbGFjZW1lbnRDaGFy
YWN0ZXIsIDEpKTsKICAgICBjb25zdCBUZXh0UnVuJiBlbXBoYXNpc01hcmtUZXh0UnVuID0gbV9j
b21iaW5lZFRleHQgPyBvYmplY3RSZXBsYWNlbWVudENoYXJhY3RlclRleHRSdW4uZ2V0KCkgOiB0
ZXh0UnVuOwotICAgIEZsb2F0UG9pbnQgZW1waGFzaXNNYXJrVGV4dE9yaWdpbiA9IG1fY29tYmlu
ZWRUZXh0ID8gRmxvYXRQb2ludChib3hPcmlnaW4ueCgpICsgYm94UmVjdC53aWR0aCgpIC8gMiwg
Ym94T3JpZ2luLnkoKSArIG1fZm9udC0+Zm9udE1ldHJpY3MoKS5hc2NlbnQoKSkgOiB0ZXh0T3Jp
Z2luOworICAgIEZsb2F0UG9pbnQgZW1waGFzaXNNYXJrVGV4dE9yaWdpbiA9IG1fY29tYmluZWRU
ZXh0ID8gRmxvYXRQb2ludChib3hPcmlnaW4ueCgpICsgYm94UmVjdC53aWR0aCgpIC8gMiwgYm94
T3JpZ2luLnkoKSArIG1fZm9udC0+Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50KCkp
IDogdGV4dE9yaWdpbjsKICAgICBpZiAobV9jb21iaW5lZFRleHQpCiAgICAgICAgIG1fY29udGV4
dC5jb25jYXRDVE0ocm90YXRpb24oYm94UmVjdCwgQ2xvY2t3aXNlKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVJbmxpbmVIZWFkZXJzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lSW5saW5lSGVhZGVycy5oCmluZGV4IGMyNGQ1
Y2FhOGVlODk0ZjNlYjU5MmM3NzM2NzNjNGFhMTIwNWFjZjIuLjVhOTZjNTg5ZjRlZDkzYzE4MDVh
ODQ4YWYxZDFiMzg3OTc4MjkyYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9saW5lL0xpbmVJbmxpbmVIZWFkZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L2xpbmUvTGluZUlubGluZUhlYWRlcnMuaApAQCAtNTYsNyArNTYsNyBAQCBpbmxpbmUgYm9vbCBy
ZXF1aXJlc0xpbmVCb3hGb3JDb250ZW50KGNvbnN0IFJlbmRlcklubGluZSYgZmxvdywgY29uc3Qg
TGluZUluZm8mCiAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSA9IGxpbmVT
dHlsZSgqcGFyZW50LCBsaW5lSW5mbyk7CiAgICAgICAgIGlmIChmbG93U3R5bGUubGluZUhlaWdo
dCgpICE9IHBhcmVudFN0eWxlLmxpbmVIZWlnaHQoKQogICAgICAgICAgICAgfHwgZmxvd1N0eWxl
LnZlcnRpY2FsQWxpZ24oKSAhPSBwYXJlbnRTdHlsZS52ZXJ0aWNhbEFsaWduKCkKLSAgICAgICAg
ICAgIHx8ICFwYXJlbnRTdHlsZS5mb250Q2FzY2FkZSgpLmZvbnRNZXRyaWNzKCkuaGFzSWRlbnRp
Y2FsQXNjZW50RGVzY2VudEFuZExpbmVHYXAoZmxvd1N0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1l
dHJpY3MoKSkpCisgICAgICAgICAgICB8fCAhcGFyZW50U3R5bGUuZm9udENhc2NhZGUoKS5mb250
TWV0cmljc09mUHJpbWFyeUZvbnQoKS5oYXNJZGVudGljYWxBc2NlbnREZXNjZW50QW5kTGluZUdh
cChmbG93U3R5bGUuZm9udENhc2NhZGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKSkpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCmlu
ZGV4IGVkOGYyMGY5ODViYWEyNTQ3NDg0MWIyNjhhNDU0OTc5NjRlZjJlYmUuLmQwNWJhNDc2OTQz
NDhjMWYzMGViMWNhMDI2ZWNkZTQ1OWFlZmViMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCkBAIC03OSw3ICs3OSw3
IEBAIHN0YXRpYyBMYXlvdXRVbml0IGF4aXNIZWlnaHQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
KQogCiAgICAgLy8gT3RoZXJ3aXNlLCB0aGUgaWRlYSBpcyB0byB0cnkgYW5kIHVzZSB0aGUgbWlk
ZGxlIG9mIG9wZXJhdG9ycyBhcyB0aGUgbWF0aCBheGlzIHdoaWNoIHdlIHRodXMgYXBwcm94aW1h
dGUgYnkgImhhbGYgb2YgdGhlIHgtaGVpZ2h0Ii4KICAgICAvLyBOb3RlIHRoYXQgR2Vja28gaGFz
IGEgc2xvd2VyIGJ1dCBtb3JlIGFjY3VyYXRlIHZlcnNpb24gdGhhdCBtZWFzdXJlcyBoYWxmIG9m
IHRoZSBoZWlnaHQgb2YgVSsyMjEyIE1JTlVTIFNJR04uCi0gICAgcmV0dXJuIExheW91dFVuaXQo
c3R5bGUuZm9udE1ldHJpY3MoKS54SGVpZ2h0KCkgLyAyKTsKKyAgICByZXR1cm4gTGF5b3V0VW5p
dChzdHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS54SGVpZ2h0KCkgLyAyKTsKIH0KIAog
TGF5b3V0VW5pdCBSZW5kZXJNYXRoTUxCbG9jazo6bWF0aEF4aXNIZWlnaHQoKSBjb25zdApAQCAt
MTYxLDcgKzE2MSw3IEBAIExheW91dFVuaXQgdG9Vc2VyVW5pdHMoY29uc3QgTWF0aE1MRWxlbWVu
dDo6TGVuZ3RoJiBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiBzCiAgICAgY2FzZSBNYXRoTUxF
bGVtZW50OjpMZW5ndGhUeXBlOjpFbToKICAgICAgICAgcmV0dXJuIExheW91dFVuaXQobGVuZ3Ro
LnZhbHVlICogc3R5bGUuZm9udENhc2NhZGUoKS5zaXplKCkpOwogICAgIGNhc2UgTWF0aE1MRWxl
bWVudDo6TGVuZ3RoVHlwZTo6RXg6Ci0gICAgICAgIHJldHVybiBMYXlvdXRVbml0KGxlbmd0aC52
YWx1ZSAqIHN0eWxlLmZvbnRNZXRyaWNzKCkueEhlaWdodCgpKTsKKyAgICAgICAgcmV0dXJuIExh
eW91dFVuaXQobGVuZ3RoLnZhbHVlICogc3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCku
eEhlaWdodCgpKTsKICAgICBjYXNlIE1hdGhNTEVsZW1lbnQ6Okxlbmd0aFR5cGU6Ok1hdGhVbml0
OgogICAgICAgICByZXR1cm4gTGF5b3V0VW5pdChsZW5ndGgudmFsdWUgKiBzdHlsZS5mb250Q2Fz
Y2FkZSgpLnNpemUoKSAvIDE4KTsKICAgICBjYXNlIE1hdGhNTEVsZW1lbnQ6Okxlbmd0aFR5cGU6
OlBlcmNlbnRhZ2U6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFJvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxSb290LmNwcAppbmRleCAyYTM4YTY4YzAzZWI3ODQwYmQwMjhiZjkwZmViZTI0
MDc3YTRjODBiLi5jNmNhMTJlNTNlMWVkZTIyMDNiMzZmOTQyNmZhNzlkNDUwZWU3ZTk1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9v
dC5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCBSZW5kZXJNYXRoTUxSb290OjpWZXJ0aWNhbFBhcmFt
ZXRlcnMgUmVuZGVyTWF0aE1MUm9vdDo6dmVydGljYWxQYXJhbWV0ZXJzKCkKICAgICAgICAgLy8g
UmFkaWNhbERlZ3JlZUJvdHRvbVJhaXNlUGVyY2VudDogU3VnZ2VzdGVkIHZhbHVlIGlzIDYwJS4K
ICAgICAgICAgcGFyYW1ldGVycy5ydWxlVGhpY2tuZXNzID0gcnVsZVRoaWNrbmVzc0ZhbGxiYWNr
KCk7CiAgICAgICAgIGlmIChzdHlsZSgpLm1hdGhTdHlsZSgpID09IE1hdGhTdHlsZTo6Tm9ybWFs
KQotICAgICAgICAgICAgcGFyYW1ldGVycy52ZXJ0aWNhbEdhcCA9IHBhcmFtZXRlcnMucnVsZVRo
aWNrbmVzcyArIHN0eWxlKCkuZm9udE1ldHJpY3MoKS54SGVpZ2h0KCkgLyA0OworICAgICAgICAg
ICAgcGFyYW1ldGVycy52ZXJ0aWNhbEdhcCA9IHBhcmFtZXRlcnMucnVsZVRoaWNrbmVzcyArIHN0
eWxlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkueEhlaWdodCgpIC8gNDsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgcGFyYW1ldGVycy52ZXJ0aWNhbEdhcCA9IDUgKiBwYXJhbWV0ZXJz
LnJ1bGVUaGlja25lc3MgLyA0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcAppbmRleCA2MDk0Mzg4YTMxYjJjMWQx
YTkyNTg5MjI5NzJlMGYxMWQ4YzlhOGFjLi40MjgyOTczMjFmY2QyNGQxMGEwMGQ4MTliZDNkMDZi
OTk0YmI2NjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFNjcmlwdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAKQEAgLTI0MiwxNCArMjQyLDE0IEBAIGF1dG8gUmVu
ZGVyTWF0aE1MU2NyaXB0czo6dmVydGljYWxQYXJhbWV0ZXJzKCkgY29uc3QgLT4gVmVydGljYWxQ
YXJhbWV0ZXJzCiAgICAgICAgIHBhcmFtZXRlcnMuc3VwZXJzY3JpcHRCb3R0b21NYXhXaXRoU3Vi
c2NyaXB0ID0gbWF0aERhdGEtPmdldE1hdGhDb25zdGFudChwcmltYXJ5Rm9udCwgT3BlblR5cGVN
YXRoRGF0YTo6U3VwZXJzY3JpcHRCb3R0b21NYXhXaXRoU3Vic2NyaXB0KTsKICAgICB9IGVsc2Ug
ewogICAgICAgICAvLyBEZWZhdWx0IGhldXJpc3RpYyB2YWx1ZXMgd2hlbiB5b3UgZG8gbm90IGhh
dmUgYSBmb250LgotICAgICAgICBwYXJhbWV0ZXJzLnN1YnNjcmlwdFNoaWZ0RG93biA9IHN0eWxl
KCkuZm9udE1ldHJpY3MoKS54SGVpZ2h0KCkgLyAzOwotICAgICAgICBwYXJhbWV0ZXJzLnN1cGVy
c2NyaXB0U2hpZnRVcCA9IHN0eWxlKCkuZm9udE1ldHJpY3MoKS54SGVpZ2h0KCk7Ci0gICAgICAg
IHBhcmFtZXRlcnMuc3Vic2NyaXB0QmFzZWxpbmVEcm9wTWluID0gc3R5bGUoKS5mb250TWV0cmlj
cygpLnhIZWlnaHQoKSAvIDI7Ci0gICAgICAgIHBhcmFtZXRlcnMuc3VwZXJTY3JpcHRCYXNlbGlu
ZURyb3BNYXggPSBzdHlsZSgpLmZvbnRNZXRyaWNzKCkueEhlaWdodCgpIC8gMjsKKyAgICAgICAg
cGFyYW1ldGVycy5zdWJzY3JpcHRTaGlmdERvd24gPSBzdHlsZSgpLmZvbnRNZXRyaWNzT2ZQcmlt
YXJ5Rm9udCgpLnhIZWlnaHQoKSAvIDM7CisgICAgICAgIHBhcmFtZXRlcnMuc3VwZXJzY3JpcHRT
aGlmdFVwID0gc3R5bGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS54SGVpZ2h0KCk7Cisg
ICAgICAgIHBhcmFtZXRlcnMuc3Vic2NyaXB0QmFzZWxpbmVEcm9wTWluID0gc3R5bGUoKS5mb250
TWV0cmljc09mUHJpbWFyeUZvbnQoKS54SGVpZ2h0KCkgLyAyOworICAgICAgICBwYXJhbWV0ZXJz
LnN1cGVyU2NyaXB0QmFzZWxpbmVEcm9wTWF4ID0gc3R5bGUoKS5mb250TWV0cmljc09mUHJpbWFy
eUZvbnQoKS54SGVpZ2h0KCkgLyAyOwogICAgICAgICBwYXJhbWV0ZXJzLnN1YlN1cGVyc2NyaXB0
R2FwTWluID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpLnNpemUoKSAvIDU7Ci0gICAgICAgIHBhcmFt
ZXRlcnMuc3VwZXJzY3JpcHRCb3R0b21NaW4gPSBzdHlsZSgpLmZvbnRNZXRyaWNzKCkueEhlaWdo
dCgpIC8gNDsKLSAgICAgICAgcGFyYW1ldGVycy5zdWJzY3JpcHRUb3BNYXggPSA0ICogc3R5bGUo
KS5mb250TWV0cmljcygpLnhIZWlnaHQoKSAvIDU7Ci0gICAgICAgIHBhcmFtZXRlcnMuc3VwZXJz
Y3JpcHRCb3R0b21NYXhXaXRoU3Vic2NyaXB0ID0gNCAqIHN0eWxlKCkuZm9udE1ldHJpY3MoKS54
SGVpZ2h0KCkgLyA1OworICAgICAgICBwYXJhbWV0ZXJzLnN1cGVyc2NyaXB0Qm90dG9tTWluID0g
c3R5bGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS54SGVpZ2h0KCkgLyA0OworICAgICAg
ICBwYXJhbWV0ZXJzLnN1YnNjcmlwdFRvcE1heCA9IDQgKiBzdHlsZSgpLmZvbnRNZXRyaWNzT2ZQ
cmltYXJ5Rm9udCgpLnhIZWlnaHQoKSAvIDU7CisgICAgICAgIHBhcmFtZXRlcnMuc3VwZXJzY3Jp
cHRCb3R0b21NYXhXaXRoU3Vic2NyaXB0ID0gNCAqIHN0eWxlKCkuZm9udE1ldHJpY3NPZlByaW1h
cnlGb250KCkueEhlaWdodCgpIC8gNTsKICAgICB9CiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFVuZGVyT3Zlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFVuZGVyT3Zlci5jcHAKaW5kZXggYzcwMzJjNTViNzkwNTY5ZWNmN2NhZDMxMTY0NjQwZjc3
ZjQ0MmM5ZC4uOThhMmI5MjE3ZDI0NmQ2ZWRiZTg5NTRjOGFmNGMxYjlmN2U5YTRiOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
VW5kZXJPdmVyLmNwcApAQCAtMjQ4LDcgKzI0OCw3IEBAIFJlbmRlck1hdGhNTFVuZGVyT3Zlcjo6
VmVydGljYWxQYXJhbWV0ZXJzIFJlbmRlck1hdGhNTFVuZGVyT3Zlcjo6dmVydGljYWxQYXJhbWV0
CiAgICAgICAgIHBhcmFtZXRlcnMub3ZlckdhcE1pbiA9IDMgKiBkZWZhdWx0TGluZVRoaWNrbmVz
czsKICAgICAgICAgcGFyYW1ldGVycy51bmRlckV4dHJhRGVzY2VuZGVyID0gZGVmYXVsdExpbmVU
aGlja25lc3M7CiAgICAgICAgIHBhcmFtZXRlcnMub3ZlckV4dHJhQXNjZW5kZXIgPSBkZWZhdWx0
TGluZVRoaWNrbmVzczsKLSAgICAgICAgcGFyYW1ldGVycy5hY2NlbnRCYXNlSGVpZ2h0ID0gc3R5
bGUoKS5mb250TWV0cmljcygpLnhIZWlnaHQoKTsKKyAgICAgICAgcGFyYW1ldGVycy5hY2NlbnRC
YXNlSGVpZ2h0ID0gc3R5bGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS54SGVpZ2h0KCk7
CiAgICAgICAgIHBhcmFtZXRlcnMudXNlVW5kZXJPdmVyQmFyRmFsbEJhY2sgPSB0cnVlOwogICAg
ICAgICByZXR1cm4gcGFyYW1ldGVyczsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCA1NmYwMzNlNDU3Y2I3ODI0MTQzZDVlMTgy
NDk4ZTBkZjA4NGViOTcyLi5lNjgwNDc1ZDc3ODZiZTVmYzk0MzMzMTBkNDM1OWUyOWYzMjIyZjdh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAK
QEAgLTE4MTUsOSArMTgxNSw5IEBAIGNvbnN0IEZvbnRDYXNjYWRlJiBSZW5kZXJTdHlsZTo6Zm9u
dENhc2NhZGUoKSBjb25zdAogICAgIHJldHVybiBtX2luaGVyaXRlZERhdGEtPmZvbnRDYXNjYWRl
OwogfQogCi1jb25zdCBGb250TWV0cmljcyYgUmVuZGVyU3R5bGU6OmZvbnRNZXRyaWNzKCkgY29u
c3QKK2NvbnN0IEZvbnRNZXRyaWNzJiBSZW5kZXJTdHlsZTo6Zm9udE1ldHJpY3NPZlByaW1hcnlG
b250KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbmhlcml0ZWREYXRhLT5mb250Q2FzY2FkZS5m
b250TWV0cmljcygpOworICAgIHJldHVybiBtX2luaGVyaXRlZERhdGEtPmZvbnRDYXNjYWRlLmZv
bnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwogfQogCiBjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0
aW9uJiBSZW5kZXJTdHlsZTo6Zm9udERlc2NyaXB0aW9uKCkgY29uc3QKQEAgLTE4OTYsNyArMTg5
Niw3IEBAIGludCBSZW5kZXJTdHlsZTo6Y29tcHV0ZUxpbmVIZWlnaHQoY29uc3QgTGVuZ3RoJiBs
aW5lSGVpZ2h0TGVuZ3RoKSBjb25zdAogewogICAgIC8vIE5lZ2F0aXZlIHZhbHVlIG1lYW5zIHRo
ZSBsaW5lIGhlaWdodCBpcyBub3Qgc2V0LiBVc2UgdGhlIGZvbnQncyBidWlsdC1pbiBzcGFjaW5n
LgogICAgIGlmIChsaW5lSGVpZ2h0TGVuZ3RoLmlzTmVnYXRpdmUoKSkKLSAgICAgICAgcmV0dXJu
IGZvbnRNZXRyaWNzKCkubGluZVNwYWNpbmcoKTsKKyAgICAgICAgcmV0dXJuIGZvbnRNZXRyaWNz
T2ZQcmltYXJ5Rm9udCgpLmxpbmVTcGFjaW5nKCk7CiAKICAgICBpZiAobGluZUhlaWdodExlbmd0
aC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkKICAgICAgICAgcmV0dXJuIG1pbmltdW1WYWx1ZUZv
ckxlbmd0aChsaW5lSGVpZ2h0TGVuZ3RoLCBjb21wdXRlZEZvbnRQaXhlbFNpemUoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDQ4ODc1MTc5
NzYzMTcwMzUzZmFhMTlkZGFlNDc3MDBiOGM1MDA1MjAuLjE5YWJjNjhjMGRiYzJjZTM5MmMxM2Mw
MDI5OGI5MjVlNTA4YWM4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5oCkBAIC0zNTYsNyArMzU2LDcgQEAgcHVibGljOgogICAgIFRhYmxlTGF5b3V0
VHlwZSB0YWJsZUxheW91dCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRhYmxlTGF5b3V0
VHlwZT4obV9ub25Jbmhlcml0ZWRGbGFncy50YWJsZUxheW91dCk7IH0KIAogICAgIFdFQkNPUkVf
RVhQT1JUIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250Q2FzY2FkZSgpIGNvbnN0OwotICAgIFdFQkNP
UkVfRVhQT1JUIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcygpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljc09mUHJpbWFyeUZvbnQo
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9u
JiBmb250RGVzY3JpcHRpb24oKSBjb25zdDsKICAgICBmbG9hdCBzcGVjaWZpZWRGb250U2l6ZSgp
IGNvbnN0OwogICAgIGZsb2F0IGNvbXB1dGVkRm9udFNpemUoKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwCmluZGV4
IDlhMzliZDFiNGUzZmNlZDdjMTkzMzFhYzc4MTI0OTRhZjIzMTk3MjUuLjk1MjZhY2VjOGMxZTRl
MDFiNTlhZjkzMDBiYzhmZGI3ZmUxMGZhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcApAQCAtMTU1LDcgKzE1NSw3IEBA
IFZpc2libGVQb3NpdGlvbiBSZW5kZXJTVkdJbmxpbmVUZXh0Ojpwb3NpdGlvbkZvclBvaW50KGNv
bnN0IExheW91dFBvaW50JiBwb2ludCwKICAgICBpZiAoIWZpcnN0VGV4dEJveCgpIHx8IHRleHQo
KS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb24oMCwgQWZm
aW5pdHk6OkRvd25zdHJlYW0pOwogCi0gICAgZmxvYXQgYmFzZWxpbmUgPSBtX3NjYWxlZEZvbnQu
Zm9udE1ldHJpY3MoKS5mbG9hdEFzY2VudCgpOworICAgIGZsb2F0IGJhc2VsaW5lID0gbV9zY2Fs
ZWRGb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmZsb2F0QXNjZW50KCk7CiAKICAgICBS
ZW5kZXJCbG9jayogY29udGFpbmluZ0Jsb2NrID0gdGhpcy0+Y29udGFpbmluZ0Jsb2NrKCk7CiAg
ICAgQVNTRVJUKGNvbnRhaW5pbmdCbG9jayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAppbmRleCA0ZDMyYTgxOGJmODdhZmFmN2Y5MzNm
MDUzOTI4NjE2OGJiZWRhZTNmLi5jODA0MjM2M2FlMjMyODQ4NWM2YTNkYzA5NmU2MzhjODczZTU5
NzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRl
eHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4
dEJveC5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBGbG9hdFJlY3QgU1ZHSW5saW5lVGV4dEJveDo6
c2VsZWN0aW9uUmVjdEZvclRleHRGcmFnbWVudChjb25zdCBTVkdUZXh0RnJhZ21lbnQmCiAgICAg
QVNTRVJUKHNjYWxpbmdGYWN0b3IpOwogCiAgICAgY29uc3QgRm9udENhc2NhZGUmIHNjYWxlZEZv
bnQgPSByZW5kZXJlcigpLnNjYWxlZEZvbnQoKTsKLSAgICBjb25zdCBGb250TWV0cmljcyYgc2Nh
bGVkRm9udE1ldHJpY3MgPSBzY2FsZWRGb250LmZvbnRNZXRyaWNzKCk7CisgICAgY29uc3QgRm9u
dE1ldHJpY3MmIHNjYWxlZEZvbnRNZXRyaWNzID0gc2NhbGVkRm9udC5mb250TWV0cmljc09mUHJp
bWFyeUZvbnQoKTsKICAgICBGbG9hdFBvaW50IHRleHRPcmlnaW4oZnJhZ21lbnQueCwgZnJhZ21l
bnQueSk7CiAgICAgaWYgKHNjYWxpbmdGYWN0b3IgIT0gMSkKICAgICAgICAgdGV4dE9yaWdpbi5z
Y2FsZShzY2FsaW5nRmFjdG9yKTsKQEAgLTUxMSw3ICs1MTEsNyBAQCB2b2lkIFNWR0lubGluZVRl
eHRCb3g6OnBhaW50RGVjb3JhdGlvbldpdGhTdHlsZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IE9wdGlvbgogCiAgICAgRmxvYXRQb2ludCBkZWNvcmF0aW9uT3JpZ2luKGZyYWdtZW50LngsIGZy
YWdtZW50LnkpOwogICAgIGZsb2F0IHdpZHRoID0gZnJhZ21lbnQud2lkdGg7Ci0gICAgY29uc3Qg
Rm9udE1ldHJpY3MmIHNjYWxlZEZvbnRNZXRyaWNzID0gc2NhbGVkRm9udC5mb250TWV0cmljcygp
OworICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBzY2FsZWRGb250TWV0cmljcyA9IHNjYWxlZEZvbnQu
Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCk7CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAgICAgaWYgKHNjYWxpbmdGYWN0b3IgIT0gMSkgewpA
QCAtNTQ2LDcgKzU0Niw3IEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0V2l0aFNo
YWRvd3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBSZW5kCiAgICAgICAgIHRleHRT
aXplLnNjYWxlKHNjYWxpbmdGYWN0b3IpOwogICAgIH0KIAotICAgIEZsb2F0UmVjdCBzaGFkb3dS
ZWN0KEZsb2F0UG9pbnQodGV4dE9yaWdpbi54KCksIHRleHRPcmlnaW4ueSgpIC0gc2NhbGVkRm9u
dC5mb250TWV0cmljcygpLmZsb2F0QXNjZW50KCkpLCB0ZXh0U2l6ZSk7CisgICAgRmxvYXRSZWN0
IHNoYWRvd1JlY3QoRmxvYXRQb2ludCh0ZXh0T3JpZ2luLngoKSwgdGV4dE9yaWdpbi55KCkgLSBz
Y2FsZWRGb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmZsb2F0QXNjZW50KCkpLCB0ZXh0
U2l6ZSk7CiAKICAgICBHcmFwaGljc0NvbnRleHQqIHVzZWRDb250ZXh0ID0gJmNvbnRleHQ7CiAg
ICAgZG8gewpAQCAtNjEzLDcgKzYxMyw3IEBAIEZsb2F0UmVjdCBTVkdJbmxpbmVUZXh0Qm94Ojpj
YWxjdWxhdGVCb3VuZGFyaWVzKCkgY29uc3QKICAgICBmbG9hdCBzY2FsaW5nRmFjdG9yID0gcmVu
ZGVyZXIoKS5zY2FsaW5nRmFjdG9yKCk7CiAgICAgQVNTRVJUKHNjYWxpbmdGYWN0b3IpOwogCi0g
ICAgZmxvYXQgYmFzZWxpbmUgPSByZW5kZXJlcigpLnNjYWxlZEZvbnQoKS5mb250TWV0cmljcygp
LmZsb2F0QXNjZW50KCkgLyBzY2FsaW5nRmFjdG9yOworICAgIGZsb2F0IGJhc2VsaW5lID0gcmVu
ZGVyZXIoKS5zY2FsZWRGb250KCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuZmxvYXRBc2Nl
bnQoKSAvIHNjYWxpbmdGYWN0b3I7CiAKICAgICBBZmZpbmVUcmFuc2Zvcm0gZnJhZ21lbnRUcmFu
c2Zvcm07CiAgICAgdW5zaWduZWQgdGV4dEZyYWdtZW50c1NpemUgPSBtX3RleHRGcmFnbWVudHMu
c2l6ZSgpOwpAQCAtNjQ4LDcgKzY0OCw3IEBAIGJvb2wgU1ZHSW5saW5lVGV4dEJveDo6bm9kZUF0
UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmCiAgICAg
ICAgICAgICAgICAgZmxvYXQgc2NhbGluZ0ZhY3RvciA9IHJlbmRlcmVyKCkuc2NhbGluZ0ZhY3Rv
cigpOwogICAgICAgICAgICAgICAgIEFTU0VSVChzY2FsaW5nRmFjdG9yKTsKICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICBmbG9hdCBiYXNlbGluZSA9IHJlbmRlcmVyKCkuc2NhbGVk
Rm9udCgpLmZvbnRNZXRyaWNzKCkuZmxvYXRBc2NlbnQoKSAvIHNjYWxpbmdGYWN0b3I7CisgICAg
ICAgICAgICAgICAgZmxvYXQgYmFzZWxpbmUgPSByZW5kZXJlcigpLnNjYWxlZEZvbnQoKS5mb250
TWV0cmljc09mUHJpbWFyeUZvbnQoKS5mbG9hdEFzY2VudCgpIC8gc2NhbGluZ0ZhY3RvcjsKIAog
ICAgICAgICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBmcmFnbWVudFRyYW5zZm9ybTsKICAgICAg
ICAgICAgICAgICBmb3IgKGF1dG8mIGZyYWdtZW50IDogbV90ZXh0RnJhZ21lbnRzKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRFbmdpbmVC
YXNlbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRF
bmdpbmVCYXNlbGluZS5jcHAKaW5kZXggN2JlMjBkODQxMzgxZGU4NWUwMjQ1NDg4ZmU1ZWU1OWE2
ZjcxMmM3ZC4uNmMyMjU0ZDFmZjgxNjM3MTcyNjY2ZTcxNWYxZWI1YzY4NGU5MmI2OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lQmFz
ZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91
dEVuZ2luZUJhc2VsaW5lLmNwcApAQCAtNDgsOSArNDgsOSBAQCBmbG9hdCBTVkdUZXh0TGF5b3V0
RW5naW5lQmFzZWxpbmU6OmNhbGN1bGF0ZUJhc2VsaW5lU2hpZnQoY29uc3QgU1ZHUmVuZGVyU3R5
bGUmCiAgICAgY2FzZSBCYXNlbGluZVNoaWZ0OjpCYXNlbGluZToKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgY2FzZSBCYXNlbGluZVNoaWZ0OjpTdWI6Ci0gICAgICAgIHJldHVybiAtbV9mb250LmZv
bnRNZXRyaWNzKCkuZmxvYXRIZWlnaHQoKSAvIDI7CisgICAgICAgIHJldHVybiAtbV9mb250LmZv
bnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmZsb2F0SGVpZ2h0KCkgLyAyOwogICAgIGNhc2UgQmFz
ZWxpbmVTaGlmdDo6U3VwZXI6Ci0gICAgICAgIHJldHVybiBtX2ZvbnQuZm9udE1ldHJpY3MoKS5m
bG9hdEhlaWdodCgpIC8gMjsKKyAgICAgICAgcmV0dXJuIG1fZm9udC5mb250TWV0cmljc09mUHJp
bWFyeUZvbnQoKS5mbG9hdEhlaWdodCgpIC8gMjsKICAgICBjYXNlIEJhc2VsaW5lU2hpZnQ6Okxl
bmd0aDoKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTE0LDcgKzExNCw3IEBAIGZsb2F0IFNW
R1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZTo6Y2FsY3VsYXRlQWxpZ25tZW50QmFzZWxpbmVTaGlm
dChib29sIGlzVmVydGljCiAgICAgICAgIEFTU0VSVChiYXNlbGluZSAhPSBBbGlnbm1lbnRCYXNl
bGluZTo6QXV0byk7CiAgICAgfQogCi0gICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNz
ID0gbV9mb250LmZvbnRNZXRyaWNzKCk7CisgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRy
aWNzID0gbV9mb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwogCiAgICAgLy8gTm90ZTog
aHR0cDovL3dpa2kuYXBhY2hlLm9yZy94bWxncmFwaGljcy1mb3AvTGluZUxheW91dC9BbGlnbm1l
bnRIYW5kbGluZwogICAgIHN3aXRjaCAoYmFzZWxpbmUpIHsKQEAgLTE5NSw3ICsxOTUsNyBAQCBm
bG9hdCBTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmU6OmNhbGN1bGF0ZUdseXBoQWR2YW5jZUFu
ZE9yaWVudGF0aW9uKGJvb2wgaXNWZQogICAgIC8vIFNwZWM6IElmIGlmIHRoZSAnZ2x5cGgtb3Jp
ZW50YXRpb24tdmVydGljYWwnIHJlc3VsdHMgaW4gYW4gb3JpZW50YXRpb24gYW5nbGUgdGhhdCBp
cyBub3QgYSBtdWx0aXBsZSBvZgogICAgIC8vIDE4MCBkZWdyZWVzLCB0aGVuIHRoZSBjdXJyZW50
IHRleHQgcG9zaXRpb24gaXMgaW5jcmVtZW50ZWQgYWNjb3JkaW5nIHRvIHRoZSBob3Jpem9udGFs
IG1ldHJpY3Mgb2YgdGhlIGdseXBoLgogCi0gICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRy
aWNzID0gbV9mb250LmZvbnRNZXRyaWNzKCk7CisgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRN
ZXRyaWNzID0gbV9mb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwogCiAgICAgLy8gVmVy
dGljYWwgb3JpZW50YXRpb24gaGFuZGxpbmcuCiAgICAgaWYgKGlzVmVydGljYWxUZXh0KSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3MuY3BwCmluZGV4
IDM5MDkxZWY4YWYzZDliMzA0OGRjN2IyYjJjZjQ4MjExOTk2NWZjNWIuLmYxZjMwM2Q2ZDMwMzY0
OWJjZDc3MzU1ZmZiMzUxMDcxMDFkZjYwNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHVGV4dE1ldHJpY3MuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFNWR1RleHRNZXRy
aWNzOjpTVkdUZXh0TWV0cmljcyhSZW5kZXJTVkdJbmxpbmVUZXh0JiB0ZXh0UmVuZGVyZXIsIGNv
bnN0IFRleHRSdW4mCiAgICAgbV93aWR0aCA9IHNjYWxlZEZvbnQud2lkdGgocnVuKSAvIHNjYWxp
bmdGYWN0b3I7CiAgICAgbGVuZ3RoID0gcnVuLmxlbmd0aCgpOwogICAgIG1fZ2x5cGgubmFtZSA9
IGVtcHR5U3RyaW5nKCk7Ci0gICAgbV9oZWlnaHQgPSBzY2FsZWRGb250LmZvbnRNZXRyaWNzKCku
ZmxvYXRIZWlnaHQoKSAvIHNjYWxpbmdGYWN0b3I7CisgICAgbV9oZWlnaHQgPSBzY2FsZWRGb250
LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmZsb2F0SGVpZ2h0KCkgLyBzY2FsaW5nRmFjdG9y
OwogCiAgICAgbV9nbHlwaC51bmljb2RlU3RyaW5nID0gcnVuLmlzOEJpdCgpID8gU3RyaW5nKHJ1
bi5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgpIDogU3RyaW5nKHJ1bi5jaGFyYWN0ZXJzMTYoKSwgbGVu
Z3RoKTsKICAgICBtX2dseXBoLmlzVmFsaWQgPSB0cnVlOwpAQCAtODYsNyArODYsNyBAQCBTVkdU
ZXh0TWV0cmljczo6U1ZHVGV4dE1ldHJpY3MoUmVuZGVyU1ZHSW5saW5lVGV4dCYgdGV4dCwgdW5z
aWduZWQgbGVuZ3RoLCBmbG9hdAogICAgIEFTU0VSVChzY2FsaW5nRmFjdG9yKTsKIAogICAgIG1f
d2lkdGggPSB3aWR0aCAvIHNjYWxpbmdGYWN0b3I7Ci0gICAgbV9oZWlnaHQgPSB0ZXh0LnNjYWxl
ZEZvbnQoKS5mb250TWV0cmljcygpLmZsb2F0SGVpZ2h0KCkgLyBzY2FsaW5nRmFjdG9yOworICAg
IG1faGVpZ2h0ID0gdGV4dC5zY2FsZWRGb250KCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCku
ZmxvYXRIZWlnaHQoKSAvIHNjYWxpbmdGYWN0b3I7CiAKICAgICBtX2xlbmd0aCA9IGxlbmd0aDsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFF1ZXJ5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFF1ZXJ5LmNwcAppbmRl
eCBkZTllYjE5MTdmZGE3OTRhNzAxMzUwM2JkNTVmMjllN2M3ODg1NWI0Li43YzljYTk5OTYzNTY5
ZWNjNGZkMDkwNGI2NzdiNTIwM2UyM2FkNGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1RleHRRdWVyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdUZXh0UXVlcnkuY3BwCkBAIC00NjMsNyArNDYzLDcgQEAgc3RhdGljIGlubGlu
ZSB2b2lkIGNhbGN1bGF0ZUdseXBoQm91bmRhcmllcyhTVkdUZXh0UXVlcnk6OkRhdGEqIHF1ZXJ5
RGF0YSwgY29uc3QKICAgICBmbG9hdCBzY2FsaW5nRmFjdG9yID0gcXVlcnlEYXRhLT50ZXh0UmVu
ZGVyZXItPnNjYWxpbmdGYWN0b3IoKTsKICAgICBBU1NFUlQoc2NhbGluZ0ZhY3Rvcik7CiAKLSAg
ICBleHRlbnQuc2V0TG9jYXRpb24oRmxvYXRQb2ludChmcmFnbWVudC54LCBmcmFnbWVudC55IC0g
cXVlcnlEYXRhLT50ZXh0UmVuZGVyZXItPnNjYWxlZEZvbnQoKS5mb250TWV0cmljcygpLmZsb2F0
QXNjZW50KCkgLyBzY2FsaW5nRmFjdG9yKSk7CisgICAgZXh0ZW50LnNldExvY2F0aW9uKEZsb2F0
UG9pbnQoZnJhZ21lbnQueCwgZnJhZ21lbnQueSAtIHF1ZXJ5RGF0YS0+dGV4dFJlbmRlcmVyLT5z
Y2FsZWRGb250KCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuZmxvYXRBc2NlbnQoKSAvIHNj
YWxpbmdGYWN0b3IpKTsKIAogICAgIGlmIChzdGFydFBvc2l0aW9uKSB7CiAgICAgICAgIFNWR1Rl
eHRNZXRyaWNzIG1ldHJpY3MgPSBTVkdUZXh0TWV0cmljczo6bWVhc3VyZUNoYXJhY3RlclJhbmdl
KCpxdWVyeURhdGEtPnRleHRSZW5kZXJlciwgZnJhZ21lbnQuY2hhcmFjdGVyT2Zmc2V0LCBzdGFy
dFBvc2l0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGlu
Zy9SZW5kZXJUcmVlQnVpbGRlckZpcnN0TGV0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlckZpcnN0TGV0dGVyLmNwcAppbmRleCAyNWM5
NjBmMGUwYWZjMTAyNTFjNmQzNjRkMjdkNDQ3Y2Y2NGNlZjcxLi5mNzJlZjkwZDI0Mjc5Njg5MzYx
ZWQzMzE5ZTgyMDEwNDM0MDU0NDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJGaXJzdExldHRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyRmlyc3RMZXR0ZXIu
Y3BwCkBAIC01MSw3ICs1MSw3IEBAIHN0YXRpYyBSZW5kZXJTdHlsZSBzdHlsZUZvckZpcnN0TGV0
dGVyKGNvbnN0IFJlbmRlckJsb2NrJiBmaXJzdExldHRlckJsb2NrLCBjb25zCiAKICAgICAvLyBX
ZSBoYXZlIHRvIGNvbXB1dGUgdGhlIGNvcnJlY3QgZm9udC1zaXplIGZvciB0aGUgZmlyc3QtbGV0
dGVyIGlmIGl0IGhhcyBhbiBpbml0aWFsIGxldHRlciBoZWlnaHQgc2V0LgogICAgIGF1dG8qIHBh
cmFncmFwaCA9IGZpcnN0TGV0dGVyQ29udGFpbmVyLmlzUmVuZGVyQmxvY2tGbG93KCkgPyAmZmly
c3RMZXR0ZXJDb250YWluZXIgOiBmaXJzdExldHRlckNvbnRhaW5lci5jb250YWluaW5nQmxvY2so
KTsKLSAgICBpZiAoZmlyc3RMZXR0ZXJTdHlsZS5pbml0aWFsTGV0dGVySGVpZ2h0KCkgPj0gMSAm
JiBmaXJzdExldHRlclN0eWxlLmZvbnRNZXRyaWNzKCkuaGFzQ2FwSGVpZ2h0KCkgJiYgcGFyYWdy
YXBoLT5zdHlsZSgpLmZvbnRNZXRyaWNzKCkuaGFzQ2FwSGVpZ2h0KCkpIHsKKyAgICBpZiAoZmly
c3RMZXR0ZXJTdHlsZS5pbml0aWFsTGV0dGVySGVpZ2h0KCkgPj0gMSAmJiBmaXJzdExldHRlclN0
eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmhhc0NhcEhlaWdodCgpICYmIHBhcmFncmFw
aC0+c3R5bGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5oYXNDYXBIZWlnaHQoKSkgewog
ICAgICAgICAvLyBGSVhNRTogRm9yIGlkZW9ncmFwaGljIGJhc2VsaW5lcywgd2Ugd2FudCB0byBn
byBmcm9tIGxpbmUgZWRnZSB0byBsaW5lIGVkZ2UuIFRoaXMgaXMgZXF1aXZhbGVudCB0byAoTi0x
KSpsaW5lLWhlaWdodCArIHRoZSBmb250IGhlaWdodC4KICAgICAgICAgLy8gV2UgZG9uJ3QgeWV0
IHN1cHBvcnQgaWRlb2dyYXBoaWMgYmFzZWxpbmVzLgogICAgICAgICAvLyBGb3IgYW4gTi1saW5l
IGZpcnN0LWxldHRlciBhbmQgZm9yIGFscGhhYmV0aWMgYmFzZWxpbmVzLCB0aGUgY2FwLWhlaWdo
dCBvZiB0aGUgZmlyc3QgbGV0dGVyIG5lZWRzIHRvIGVxdWFsIChOLTEpKmxpbmUtaGVpZ2h0IG9m
IHBhcmFncmFwaCBsaW5lcyArIGNhcC1oZWlnaHQgb2YgdGhlIHBhcmFncmFwaApAQCAtNjMsMjIg
KzYzLDIyIEBAIHN0YXRpYyBSZW5kZXJTdHlsZSBzdHlsZUZvckZpcnN0TGV0dGVyKGNvbnN0IFJl
bmRlckJsb2NrJiBmaXJzdExldHRlckJsb2NrLCBjb25zCiAgICAgICAgIC8vIFNldCB0aGUgZm9u
dCB0byBiZSBvbmUgbGluZSB0b28gYmlnIGFuZCB0aGVuIHJhdGNoZXQgYmFjayB0byBnZXQgdG8g
YSBwcmVjaXNlIGZpdC4gV2UgY2FuJ3QganVzdCBzZXQgdGhlIGRlc2lyZWQgZm9udCBzaXplIGJh
c2VkIG9mZiBmb250IGhlaWdodCBtZXRyaWNzCiAgICAgICAgIC8vIGJlY2F1c2UgbWFueSBmb250
cyBiYWtlIGFzY2VudCBpbnRvIHRoZSBmb250IG1ldHJpY3MuIFRoZXJlZm9yZSB3ZSBoYXZlIHRv
IGxvb2sgYXQgYWN0dWFsIG1lYXN1cmVkIGNhcCBoZWlnaHQgdmFsdWVzIGluIG9yZGVyIHRvIGtu
b3cgd2hlbiB3ZSBoYXZlIGEgZ29vZCBmaXQuCiAgICAgICAgIGF1dG8gbmV3Rm9udERlc2NyaXB0
aW9uID0gZmlyc3RMZXR0ZXJTdHlsZS5mb250RGVzY3JpcHRpb24oKTsKLSAgICAgICAgZmxvYXQg
Y2FwUmF0aW8gPSBmaXJzdExldHRlclN0eWxlLmZvbnRNZXRyaWNzKCkuZmxvYXRDYXBIZWlnaHQo
KSAvIGZpcnN0TGV0dGVyU3R5bGUuY29tcHV0ZWRGb250UGl4ZWxTaXplKCk7Ci0gICAgICAgIGZs
b2F0IHN0YXJ0aW5nRm9udFNpemUgPSAoKGZpcnN0TGV0dGVyU3R5bGUuaW5pdGlhbExldHRlckhl
aWdodCgpIC0gMSkgKiBsaW5lSGVpZ2h0ICsgcGFyYWdyYXBoLT5zdHlsZSgpLmZvbnRNZXRyaWNz
KCkuY2FwSGVpZ2h0KCkpIC8gY2FwUmF0aW87CisgICAgICAgIGZsb2F0IGNhcFJhdGlvID0gZmly
c3RMZXR0ZXJTdHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5mbG9hdENhcEhlaWdodCgp
IC8gZmlyc3RMZXR0ZXJTdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKTsKKyAgICAgICAgZmxv
YXQgc3RhcnRpbmdGb250U2l6ZSA9ICgoZmlyc3RMZXR0ZXJTdHlsZS5pbml0aWFsTGV0dGVySGVp
Z2h0KCkgLSAxKSAqIGxpbmVIZWlnaHQgKyBwYXJhZ3JhcGgtPnN0eWxlKCkuZm9udE1ldHJpY3NP
ZlByaW1hcnlGb250KCkuY2FwSGVpZ2h0KCkpIC8gY2FwUmF0aW87CiAgICAgICAgIG5ld0ZvbnRE
ZXNjcmlwdGlvbi5zZXRTcGVjaWZpZWRTaXplKHN0YXJ0aW5nRm9udFNpemUpOwogICAgICAgICBu
ZXdGb250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKHN0YXJ0aW5nRm9udFNpemUpOwogICAg
ICAgICBmaXJzdExldHRlclN0eWxlLnNldEZvbnREZXNjcmlwdGlvbihXVEZNb3ZlKG5ld0ZvbnRE
ZXNjcmlwdGlvbikpOwogICAgICAgICBmaXJzdExldHRlclN0eWxlLmZvbnRDYXNjYWRlKCkudXBk
YXRlKGZpcnN0TGV0dGVyU3R5bGUuZm9udENhc2NhZGUoKS5mb250U2VsZWN0b3IoKSk7CiAKLSAg
ICAgICAgaW50IGRlc2lyZWRDYXBIZWlnaHQgPSAoZmlyc3RMZXR0ZXJTdHlsZS5pbml0aWFsTGV0
dGVySGVpZ2h0KCkgLSAxKSAqIGxpbmVIZWlnaHQgKyBwYXJhZ3JhcGgtPnN0eWxlKCkuZm9udE1l
dHJpY3MoKS5jYXBIZWlnaHQoKTsKLSAgICAgICAgaW50IGFjdHVhbENhcEhlaWdodCA9IGZpcnN0
TGV0dGVyU3R5bGUuZm9udE1ldHJpY3MoKS5jYXBIZWlnaHQoKTsKKyAgICAgICAgaW50IGRlc2ly
ZWRDYXBIZWlnaHQgPSAoZmlyc3RMZXR0ZXJTdHlsZS5pbml0aWFsTGV0dGVySGVpZ2h0KCkgLSAx
KSAqIGxpbmVIZWlnaHQgKyBwYXJhZ3JhcGgtPnN0eWxlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlG
b250KCkuY2FwSGVpZ2h0KCk7CisgICAgICAgIGludCBhY3R1YWxDYXBIZWlnaHQgPSBmaXJzdExl
dHRlclN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmNhcEhlaWdodCgpOwogICAgICAg
ICB3aGlsZSAoYWN0dWFsQ2FwSGVpZ2h0ID4gZGVzaXJlZENhcEhlaWdodCkgewogICAgICAgICAg
ICAgYXV0byBuZXdGb250RGVzY3JpcHRpb24gPSBmaXJzdExldHRlclN0eWxlLmZvbnREZXNjcmlw
dGlvbigpOwogICAgICAgICAgICAgbmV3Rm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUo
bmV3Rm9udERlc2NyaXB0aW9uLnNwZWNpZmllZFNpemUoKSAtIDEpOwogICAgICAgICAgICAgbmV3
Rm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShuZXdGb250RGVzY3JpcHRpb24uY29tcHV0
ZWRTaXplKCkgLTEpOwogICAgICAgICAgICAgZmlyc3RMZXR0ZXJTdHlsZS5zZXRGb250RGVzY3Jp
cHRpb24oV1RGTW92ZShuZXdGb250RGVzY3JpcHRpb24pKTsKICAgICAgICAgICAgIGZpcnN0TGV0
dGVyU3R5bGUuZm9udENhc2NhZGUoKS51cGRhdGUoZmlyc3RMZXR0ZXJTdHlsZS5mb250Q2FzY2Fk
ZSgpLmZvbnRTZWxlY3RvcigpKTsKLSAgICAgICAgICAgIGFjdHVhbENhcEhlaWdodCA9IGZpcnN0
TGV0dGVyU3R5bGUuZm9udE1ldHJpY3MoKS5jYXBIZWlnaHQoKTsKKyAgICAgICAgICAgIGFjdHVh
bENhcEhlaWdodCA9IGZpcnN0TGV0dGVyU3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCku
Y2FwSGVpZ2h0KCk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9J
bmxpbmVUZXh0Qm94U3R5bGUuY3BwCmluZGV4IGU4Y2U1N2RmMDM3ZTM5ZGVhN2Y0ZWY1MTFhZmQz
YjBkYzZkYTZiMTcuLjRlOGM1ODdlMjI5ODQ0MDc5MGY3MzVkNDNjMTM4N2YzMDliYzYxNGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcApAQCAtMTczLDEy
ICsxNzMsMTIgQEAgR2x5cGhPdmVyZmxvdyB2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKGNv
bnN0IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUsIGNvbnN0IEkKICAgICBpZiAoZGVjb3JhdGlvbi5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBHbHlwaE92ZXJmbG93KCk7CiAKLSAgICBmbG9hdCBz
dHJva2VUaGlja25lc3MgPSBsaW5lU3R5bGUudGV4dERlY29yYXRpb25UaGlja25lc3MoKS5yZXNv
bHZlKGxpbmVTdHlsZS5jb21wdXRlZEZvbnRTaXplKCksIGxpbmVTdHlsZS5mb250TWV0cmljcygp
KTsKKyAgICBmbG9hdCBzdHJva2VUaGlja25lc3MgPSBsaW5lU3R5bGUudGV4dERlY29yYXRpb25U
aGlja25lc3MoKS5yZXNvbHZlKGxpbmVTdHlsZS5jb21wdXRlZEZvbnRTaXplKCksIGxpbmVTdHls
ZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKSk7CiAgICAgV2F2eVN0cm9rZVBhcmFtZXRlcnMg
d2F2eVN0cm9rZVBhcmFtZXRlcnM7CiAgICAgZmxvYXQgd2F2eU9mZnNldCA9IDA7CiAgICAgICAg
IAogICAgIFRleHREZWNvcmF0aW9uU3R5bGUgZGVjb3JhdGlvblN0eWxlID0gbGluZVN0eWxlLnRl
eHREZWNvcmF0aW9uU3R5bGUoKTsKLSAgICBmbG9hdCBoZWlnaHQgPSBsaW5lU3R5bGUuZm9udENh
c2NhZGUoKS5mb250TWV0cmljcygpLmZsb2F0SGVpZ2h0KCk7CisgICAgZmxvYXQgaGVpZ2h0ID0g
bGluZVN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuZmxvYXRI
ZWlnaHQoKTsKICAgICBHbHlwaE92ZXJmbG93IG92ZXJmbG93UmVzdWx0OwogICAgIAogICAgIGlm
IChkZWNvcmF0aW9uU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZTo6V2F2eSkgewpAQCAtMTk1
LDcgKzE5NSw3IEBAIEdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhj
b25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlLCBjb25zdCBJCiAgICAgICAgIGludCB1bmRlcmxp
bmVPZmZzZXQgPSAxOwogICAgICAgICBmbG9hdCB0ZXh0RGVjb3JhdGlvbkJhc2VGb250U2l6ZSA9
IDE2OwogICAgICAgICBhdXRvIGRlZmF1bHRHYXAgPSBsaW5lU3R5bGUuY29tcHV0ZWRGb250U2l6
ZSgpIC8gdGV4dERlY29yYXRpb25CYXNlRm9udFNpemU7Ci0gICAgICAgIHVuZGVybGluZU9mZnNl
dCArPSBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KGxpbmVTdHlsZS50ZXh0VW5kZXJsaW5lUG9zaXRp
b24oKSwgbGluZVN0eWxlLnRleHRVbmRlcmxpbmVPZmZzZXQoKSwgbGluZVN0eWxlLmZvbnRNZXRy
aWNzKCksIHRleHRSdW4sIGRlZmF1bHRHYXApOworICAgICAgICB1bmRlcmxpbmVPZmZzZXQgKz0g
Y29tcHV0ZVVuZGVybGluZU9mZnNldChsaW5lU3R5bGUudGV4dFVuZGVybGluZVBvc2l0aW9uKCks
IGxpbmVTdHlsZS50ZXh0VW5kZXJsaW5lT2Zmc2V0KCksIGxpbmVTdHlsZS5mb250TWV0cmljc09m
UHJpbWFyeUZvbnQoKSwgdGV4dFJ1biwgZGVmYXVsdEdhcCk7CiAgICAgICAgIGlmIChkZWNvcmF0
aW9uU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZTo6V2F2eSkgewogICAgICAgICAgICAgb3Zl
cmZsb3dSZXN1bHQuZXh0ZW5kQm90dG9tKHVuZGVybGluZU9mZnNldCArIHdhdnlPZmZzZXQgKyB3
YXZ5U3Ryb2tlUGFyYW1ldGVycy5jb250cm9sUG9pbnREaXN0YW5jZSArIHN0cm9rZVRoaWNrbmVz
cyAtIGhlaWdodCk7CiAgICAgICAgICAgICBvdmVyZmxvd1Jlc3VsdC5leHRlbmRUb3AoLSh1bmRl
cmxpbmVPZmZzZXQgKyB3YXZ5T2Zmc2V0IC0gd2F2eVN0cm9rZVBhcmFtZXRlcnMuY29udHJvbFBv
aW50RGlzdGFuY2UgLSBzdHJva2VUaGlja25lc3MpKTsKQEAgLTIwNiw3ICsyMDYsNyBAQCBHbHlw
aE92ZXJmbG93IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyU3R5bGUm
IGxpbmVTdHlsZSwgY29uc3QgSQogICAgIH0KICAgICBpZiAoZGVjb3JhdGlvbiAmIFRleHREZWNv
cmF0aW9uTGluZTo6T3ZlcmxpbmUpIHsKICAgICAgICAgRmxvYXRSZWN0IHJlY3QoRmxvYXRQb2lu
dCgpLCBGbG9hdFNpemUoMSwgc3Ryb2tlVGhpY2tuZXNzKSk7Ci0gICAgICAgIGZsb2F0IGF1dG9U
ZXh0RGVjb3JhdGlvblRoaWNrbmVzcyA9IFRleHREZWNvcmF0aW9uVGhpY2tuZXNzOjpjcmVhdGVX
aXRoQXV0bygpLnJlc29sdmUobGluZVN0eWxlLmNvbXB1dGVkRm9udFNpemUoKSwgbGluZVN0eWxl
LmZvbnRNZXRyaWNzKCkpOworICAgICAgICBmbG9hdCBhdXRvVGV4dERlY29yYXRpb25UaGlja25l
c3MgPSBUZXh0RGVjb3JhdGlvblRoaWNrbmVzczo6Y3JlYXRlV2l0aEF1dG8oKS5yZXNvbHZlKGxp
bmVTdHlsZS5jb21wdXRlZEZvbnRTaXplKCksIGxpbmVTdHlsZS5mb250TWV0cmljc09mUHJpbWFy
eUZvbnQoKSk7CiAgICAgICAgIHJlY3QubW92ZSgwLCBhdXRvVGV4dERlY29yYXRpb25UaGlja25l
c3MgLSBzdHJva2VUaGlja25lc3MgLSB3YXZ5T2Zmc2V0KTsKICAgICAgICAgaWYgKGRlY29yYXRp
b25TdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpXYXZ5KSB7CiAgICAgICAgICAgICBGbG9h
dEJveEV4dGVudCB3YXZ5RXhwYW5zaW9uOwpAQCAtMjE5LDggKzIxOSw4IEBAIEdseXBoT3ZlcmZs
b3cgdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0
eWxlLCBjb25zdCBJCiAgICAgfQogICAgIGlmIChkZWNvcmF0aW9uICYgVGV4dERlY29yYXRpb25M
aW5lOjpMaW5lVGhyb3VnaCkgewogICAgICAgICBGbG9hdFJlY3QgcmVjdChGbG9hdFBvaW50KCks
IEZsb2F0U2l6ZSgxLCBzdHJva2VUaGlja25lc3MpKTsKLSAgICAgICAgZmxvYXQgYXV0b1RleHRE
ZWNvcmF0aW9uVGhpY2tuZXNzID0gVGV4dERlY29yYXRpb25UaGlja25lc3M6OmNyZWF0ZVdpdGhB
dXRvKCkucmVzb2x2ZShsaW5lU3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpLCBsaW5lU3R5bGUuZm9u
dE1ldHJpY3MoKSk7Ci0gICAgICAgIGF1dG8gY2VudGVyID0gMiAqIGxpbmVTdHlsZS5mb250TWV0
cmljcygpLmZsb2F0QXNjZW50KCkgLyAzICsgYXV0b1RleHREZWNvcmF0aW9uVGhpY2tuZXNzIC8g
MjsKKyAgICAgICAgZmxvYXQgYXV0b1RleHREZWNvcmF0aW9uVGhpY2tuZXNzID0gVGV4dERlY29y
YXRpb25UaGlja25lc3M6OmNyZWF0ZVdpdGhBdXRvKCkucmVzb2x2ZShsaW5lU3R5bGUuY29tcHV0
ZWRGb250U2l6ZSgpLCBsaW5lU3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkpOworICAg
ICAgICBhdXRvIGNlbnRlciA9IDIgKiBsaW5lU3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250
KCkuZmxvYXRBc2NlbnQoKSAvIDMgKyBhdXRvVGV4dERlY29yYXRpb25UaGlja25lc3MgLyAyOwog
ICAgICAgICByZWN0Lm1vdmUoMCwgY2VudGVyIC0gc3Ryb2tlVGhpY2tuZXNzIC8gMik7CiAgICAg
ICAgIGlmIChkZWNvcmF0aW9uU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZTo6V2F2eSkgewog
ICAgICAgICAgICAgRmxvYXRCb3hFeHRlbnQgd2F2eUV4cGFuc2lvbjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRm9udFJhdy5jcHAKaW5kZXggMzQxNzE0ZTlkNmM4
NmU5NjI1YzY5M2U0ZTg3MDA2ZmVlMmI3MGIzNy4uYjYyNDU3ZDM2N2YwNDZlZWRkYmY1OTkyMmU4
ZGEzN2Q4NmYyY2U3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNv
bHZlRm9yRm9udFJhdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZl
Rm9yRm9udFJhdy5jcHAKQEAgLTIwNyw3ICsyMDcsNyBAQCBzdGQ6Om9wdGlvbmFsPEZvbnRDYXNj
YWRlPiByZXNvbHZlRm9yRm9udFJhdyhjb25zdCBGb250UmF3JiBmb250UmF3LCBGb250Q2FzY2Fk
ZQogICAgICAgICAgICAgLy8gICAgICAgIEl0J3MgdW5jbGVhciBpbiB0aGUgc3BlY2lmaWNhdGlv
biBpZiB0aGV5J3JlIGV4cGVjdGVkIHRvIHdvcmsgb24gT2Zmc2NyZWVuQ2FudmFzLCBnaXZlbgog
ICAgICAgICAgICAgLy8gICAgICAgIHRoYXQgaXQncyBvZmYtc2NyZWVuIGFuZCB0aGVyZWZvcmUg
ZG9lc24ndCBzdHJpY3RseSBoYXZlIGFuIGFzc29jaWF0ZWQgdmlld3BvcnQuCiAgICAgICAgICAg
ICAvLyAgICAgICAgVGhpcyBuZWVkcyBjbGFyaWZpY2F0aW9uIGFuZCBwb3NzaWJseSBmaXhpbmcu
Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KENTU1ByaW1pdGl2ZVZhbHVl
Ojpjb21wdXRlVW56b29tZWROb25DYWxjTGVuZ3RoRG91YmxlKGxlbmd0aC50eXBlLCBsZW5ndGgu
dmFsdWUsIENTU1Byb3BlcnR5Rm9udFNpemUsICZmb250Q2FzY2FkZS5mb250TWV0cmljcygpLCAm
Zm9udENhc2NhZGUuZm9udERlc2NyaXB0aW9uKCksICZmb250Q2FzY2FkZS5mb250RGVzY3JpcHRp
b24oKSwgaXM8RG9jdW1lbnQ+KGNvbnRleHQpID8gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQp
LnJlbmRlclZpZXcoKSA6IG51bGxwdHIpKTsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxmbG9hdD4oQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVVbnpvb21lZE5vbkNhbGNMZW5ndGhE
b3VibGUobGVuZ3RoLnR5cGUsIGxlbmd0aC52YWx1ZSwgQ1NTUHJvcGVydHlGb250U2l6ZSwgJmZv
bnRDYXNjYWRlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLCAmZm9udENhc2NhZGUuZm9udERl
c2NyaXB0aW9uKCksICZmb250Q2FzY2FkZS5mb250RGVzY3JpcHRpb24oKSwgaXM8RG9jdW1lbnQ+
KGNvbnRleHQpID8gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLnJlbmRlclZpZXcoKSA6IG51
bGxwdHIpKTsKICAgICAgICAgfSwgWyZdIChjb25zdCBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6
OlBlcmNlbnRSYXcmIHBlcmNlbnRhZ2UpIHsKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxmbG9hdD4oKHBhcmVudFNpemUgKiBwZXJjZW50YWdlLnZhbHVlKSAvIDEwMC4wKTsKICAgICAg
ICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoQ29udGV4dC5jcHAKaW5kZXggMGRkYWI5
ODAxZjE2Yzg4MDBlNDA5MTQzN2E3ZjcyOGUzNGYwZDAxNC4uMTU0ZThkYTExODBkZTRlNjk1ODcw
OGUyMmI4ZjFlZTgwYjQzMGFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xl
bmd0aENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhDb250ZXh0
LmNwcApAQCAtMjY3LDcgKzI2Nyw3IEBAIEV4Y2VwdGlvbk9yPGZsb2F0PiBTVkdMZW5ndGhDb250
ZXh0Ojpjb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzVG9FWFMoZmxvYXQgdmFsdWUpCiAKICAgICAv
LyBVc2Ugb2YgY2VpbCBhbGxvd3MgYSBwaXhlbCBtYXRjaCB0byB0aGUgVzNDcyBleHBlY3RlZCBv
dXRwdXQgb2YgY29vcmRzLXVuaXRzLTAzLWIuc3ZnCiAgICAgLy8gaWYgdGhpcyBjYXVzZXMgcHJv
YmxlbXMgaW4gcmVhbCB3b3JsZCBjYXNlcyBtYXliZSBpdCB3b3VsZCBiZSBiZXN0IHRvIHJlbW92
ZSB0aGlzCi0gICAgZmxvYXQgeEhlaWdodCA9IHN0ZDo6Y2VpbChzdHlsZS0+Zm9udE1ldHJpY3Mo
KS54SGVpZ2h0KCkpOworICAgIGZsb2F0IHhIZWlnaHQgPSBzdGQ6OmNlaWwoc3R5bGUtPmZvbnRN
ZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLnhIZWlnaHQoKSk7CiAgICAgaWYgKCF4SGVpZ2h0KQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKIApAQCAtMjgyLDcg
KzI4Miw3IEBAIEV4Y2VwdGlvbk9yPGZsb2F0PiBTVkdMZW5ndGhDb250ZXh0Ojpjb252ZXJ0VmFs
dWVGcm9tRVhTVG9Vc2VyVW5pdHMoZmxvYXQgdmFsdWUpCiAKICAgICAvLyBVc2Ugb2YgY2VpbCBh
bGxvd3MgYSBwaXhlbCBtYXRjaCB0byB0aGUgVzNDcyBleHBlY3RlZCBvdXRwdXQgb2YgY29vcmRz
LXVuaXRzLTAzLWIuc3ZnCiAgICAgLy8gaWYgdGhpcyBjYXVzZXMgcHJvYmxlbXMgaW4gcmVhbCB3
b3JsZCBjYXNlcyBtYXliZSBpdCB3b3VsZCBiZSBiZXN0IHRvIHJlbW92ZSB0aGlzCi0gICAgcmV0
dXJuIHZhbHVlICogc3RkOjpjZWlsKHN0eWxlLT5mb250TWV0cmljcygpLnhIZWlnaHQoKSk7Cisg
ICAgcmV0dXJuIHZhbHVlICogc3RkOjpjZWlsKHN0eWxlLT5mb250TWV0cmljc09mUHJpbWFyeUZv
bnQoKS54SGVpZ2h0KCkpOwogfQogCiBib29sIFNWR0xlbmd0aENvbnRleHQ6OmRldGVybWluZVZp
ZXdwb3J0KEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCmluZGV4IDM0
NTZiZWYzNjcxN2FmYTI3ZmJkOTVhM2EyNDY5ODY4NjBhYzhlNTEuLjNhYjg0NDYzOTVhOWRkOWY5
ZDc2OTFkY2ZjNDJiNWQ1M2FkZmM5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KQEAgLTE3Niw3ICsxNzYsNyBA
QCBEaWN0aW9uYXJ5UG9wdXBJbmZvIFdlYlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5n
ZShGcmFtZSYgZnJhbWUsIGNvbnN0IFNpbQogICAgIEludFJlY3QgcmFuZ2VSZWN0ID0gZnJhbWUu
dmlldygpLT5jb250ZW50c1RvV2luZG93KHF1YWRzWzBdLmVuY2xvc2luZ0JvdW5kaW5nQm94KCkp
OwogCiAgICAgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlID0gcmFuZ2Uuc3RhcnRDb250YWluZXIo
KS5yZW5kZXJTdHlsZSgpOwotICAgIGZsb2F0IHNjYWxlZEFzY2VudCA9IHN0eWxlID8gc3R5bGUt
PmZvbnRNZXRyaWNzKCkuYXNjZW50KCkgKiBwYWdlU2NhbGVGYWN0b3IoKSA6IDA7CisgICAgZmxv
YXQgc2NhbGVkQXNjZW50ID0gc3R5bGUgPyBzdHlsZS0+Zm9udE1ldHJpY3NPZlByaW1hcnlGb250
KCkuYXNjZW50KCkgKiBwYWdlU2NhbGVGYWN0b3IoKSA6IDA7CiAgICAgZGljdGlvbmFyeVBvcHVw
SW5mby5vcmlnaW4gPSBGbG9hdFBvaW50KHJhbmdlUmVjdC54KCksIHJhbmdlUmVjdC55KCkgKyBz
Y2FsZWRBc2NlbnQpOwogICAgIGRpY3Rpb25hcnlQb3B1cEluZm8ub3B0aW9ucyA9IG9wdGlvbnM7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRp
YXRlQWN0aW9uQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQppbmRleCBmMmFmYjA4MDc2YTY1ZDNjMGFm
M2U0N2MxOTBiYjAzYTE5N2U4MjNkLi5iNjg2ZWNiOTkzOGI5ZjY5ZTExZThjOTkzY2Q2NmZlNGRl
ZTJhMGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYklt
bWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCkBAIC01MjMsNyArNTIzLDcg
QEAgc3RhdGljIFdlYkNvcmU6OkludFJlY3QgZWxlbWVudEJvdW5kaW5nQm94SW5XaW5kb3dDb29y
ZGluYXRlc0Zyb21Ob2RlKFdlYkNvcmU6Ok4KICAgICB9CiAKICAgICBhdXRvIHN0eWxlID0gcmFu
Z2Uuc3RhcnQuY29udGFpbmVyLT5yZW5kZXJTdHlsZSgpOwotICAgIGZsb2F0IHNjYWxlZERlc2Nl
bnQgPSBzdHlsZSA/IHN0eWxlLT5mb250TWV0cmljcygpLmRlc2NlbnQoKSAqIGZyYW1lLT5wYWdl
KCktPnBhZ2VTY2FsZUZhY3RvcigpIDogMDsKKyAgICBmbG9hdCBzY2FsZWREZXNjZW50ID0gc3R5
bGUgPyBzdHlsZS0+Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuZGVzY2VudCgpICogZnJhbWUt
PnBhZ2UoKS0+cGFnZVNjYWxlRmFjdG9yKCkgOiAwOwogCiAgICAgYXV0byBxdWFkcyA9IFdlYkNv
cmU6OlJlbmRlck9iamVjdDo6YWJzb2x1dGVUZXh0UXVhZHMocmFuZ2UpOwogICAgIGlmIChxdWFk
cy5pc0VtcHR5KCkpIHsK
</data>
<flag name="commit-queue"
          id="476903"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450494</attachid>
            <date>2022-01-31 20:49:05 -0800</date>
            <delta_ts>2022-01-31 21:39:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235938-20220131204904.patch</filename>
            <type>text/plain</type>
            <size>103333</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4ODY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTAxNDllMjkwZDY2N2Rh
MWEyYzAxNjAxMjc4YTgyOGJlZjRkNTQ1Yi4uZmFkOGQ5OGY2ZGMxMjgzM2MzZmE5Y2QxZDUwZDM2
MjhjMDk0MTU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2MCBAQAorMjAyMi0wMS0zMSAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBG
b250Q2FzY2FkZTo6Zm9udE1ldHJpY3MoKSBhbmQgUmVuZGVyU3R5bGU6OmZvbnRNZXRyaWNzKCkg
dG8gZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTkzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEl0J3MgcHJvYmFibHkgZ29vZCB0byByZW1pbmQgcGVvcGxl
IHRoYXQgd2hlbiB0aGV5IGNhbGwgdGhpcyBmdW5jdGlvbiwKKyAgICAgICAgdGhleSBtaWdodCBu
b3QgYmUgZ2V0dGluZyB3aGF0IHRoZXkgbWlnaHQgdGhpbmsgdGhleSdyZSBnZXR0aW5nLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4K
KworICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZU5vbkNhbGNMZW5ndGhEb3VibGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmVxdWFsRm9yTGVuZ3RoUmVzb2x1dGlvbik6
CisgICAgICAgICogZGlzcGxheS9jc3MvRGlzcGxheUJveFBhaW50ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheTo6Qm94UGFpbnRlcjo6cGFpbnRCb3hDb250ZW50KToKKyAgICAgICAg
KiBkaXNwbGF5L2Nzcy9EaXNwbGF5U3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OlN0eWxlOjpmb250TWV0cmljc09mUHJpbWFyeUZvbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheTo6U3R5bGU6OmZvbnRNZXRyaWNzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0
RWxlbWVudDo6Y3JlYXRlSW5uZXJUZXh0U3R5bGUpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Rm9udFByb3h5Ojpmb250TWV0cmljc09mUHJpbWFyeUZv
bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZTo6ZHJhd1RleHRVbmNoZWNrZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6bWVhc3VyZVRleHRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjp0ZXh0T2Zmc2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OkZvbnRQcm94eTo6Zm9udE1ldHJpY3Mg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2UuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpkcmF3UnVsZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6OmRyYXdFbGVtZW50VGl0bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6ZXhwZWN0ZWRTaXplRm9yTGF5b3V0TGFiZWwpOgorICAgICAgICAoV2ViQ29y
ZTo6ZHJhd0xheW91dExhYmVsKToKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVGb3JtYXR0aW5nUXVpcmtzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6SW5saW5lRm9ybWF0dGluZ1F1aXJrczo6aW5pdGlhbExpbmVIZWlnaHQgY29uc3QpOgor
ICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxldmVsQm94
Lmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om1fc3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVMZXZlbEJveDo6cHJlZmVycmVkTGluZUhlaWdodCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUxldmVsQm94OjpwcmltYXJ5Zm9udE1ldHJp
Y3NPZlByaW1hcnlGb250IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5l
TGV2ZWxCb3g6OnByaW1hcnlGb250TWV0cmljcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmxvZ2ljYWxSZWN0Rm9yVGV4dFJ1biBjb25z
dCk6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGlu
ZUJveEJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRl
cjo6c2V0VmVydGljYWxHZW9tZXRyeUZvckxpbmVCcmVha0JveCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hCdWlsZGVyOjpzZXRJbml0aWFsVmVydGljYWxHZW9tZXRy
eUZvcklubGluZUJveCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkxpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OmNvbXB1dGVMaW5lQm94TG9naWNh
bEhlaWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hWZXJ0aWNh
bEFsaWduZXI6OmNvbXB1dGVSb290SW5saW5lQm94VmVydGljYWxQb3NpdGlvbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OmFsaWduSW5s
aW5lTGV2ZWxCb3hlcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
c2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmZsb2F0V2lkdGhGb3JT
aW1wbGVUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpmbG9hdFdp
ZHRoRm9yQ29tcGxleFRleHQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYXNjYWRlLmg6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6Zm9udE1ldHJpY3NP
ZlByaW1hcnlGb250IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpmb250
TWV0cmljcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL0NhcmV0UmVjdENv
bXB1dGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVDYXJldFJlY3RGb3JFbXB0
eUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUNhcmV0UmVjdEZvckJveCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL0xlZ2FjeUVsbGlwc2lzQm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeUVsbGlwc2lzQm94OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lF
bGxpcHNpc0JveDo6cGFpbnRNYXJrdXBCb3gpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5RWxs
aXBzaXNCb3g6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvTGVnYWN5SW5saW5l
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUJveDo6bG9naWNhbEhlaWdo
dCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL0xlZ2FjeUlubGluZUZsb3dCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6YWRkVG9MaW5lKToKKyAgICAg
ICAgKFdlYkNvcmU6OnBsYWNlQ2hpbGRJbmxpbmVCb3hlc0luQmxvY2tEaXJlY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0luQmxvY2tEaXJl
Y3Rpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnNldExvZ2ljYWxXaWR0aEZvclRleHRSdW4pOgorICAgICAgICAqIHJlbmRl
cmluZy9MZWdhY3lSb290SW5saW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJv
b3RJbmxpbmVCb3g6OmxpbmVTbmFwQWRqdXN0bWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lSb290SW5saW5lQm94Ojphc2NlbnRBbmREZXNjZW50Rm9yQm94IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6OnZlcnRpY2FsUG9zaXRpb25Gb3JC
b3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6aW5saW5lQmxvY2tCYXNlbGluZSBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9ja0Zsb3c6OmFkanVzdEluaXRpYWxMZXR0ZXJQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9ja0Zsb3c6OmZpcnN0TGluZUJhc2VsaW5lIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6aW5saW5lQmxvY2tCYXNlbGluZSBjb25zdCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnNl
dEltYWdlU2l6ZUZvckFsdFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnBh
aW50UmVwbGFjZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjptYXlBZmZlY3RMYXlvdXQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxpbmVCcmVhazo6YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXRlbU9mZnNldEZv
ckFsaWdubWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjppdGVtSGVpZ2h0
IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpwYWludCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMaXN0TWFya2VyOjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlz
dE1hcmtlcjo6dXBkYXRlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0TWFy
a2VyOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMaXN0TWFya2VyOjp1cGRhdGVNYXJnaW5zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxpc3RNYXJrZXI6OnJlbGF0aXZlTWFya2VyUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclJ1YnlSdW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUnVieVJ1bjo6bGF5b3V0
QmxvY2spOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0Qm94UGFpbnRlcjo6cGFpbnRGb3JlZ3JvdW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRCb3hQYWludGVyOjpwYWludENvbXBvc2l0aW9uVW5kZXJsaW5lKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRCb3hQYWludGVyOjpjYWxjdWxhdGVEb2N1bWVudE1hcmtlckJvdW5k
cyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Qm94UGFpbnRlcjo6dGV4dE9yaWdpbkZyb21QYWlu
dFJlY3QgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dERlY29yYXRpb25QYWludGVyOjpwYWludEJhY2tn
cm91bmREZWNvcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblBhaW50
ZXI6OnBhaW50Rm9yZWdyb3VuZERlY29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRE
ZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRMaW5lVGhyb3VnaCk6CisgICAgICAgICogcmVuZGVyaW5n
L1RleHRQYWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRQYWludGVyOjpwYWludFRl
eHRBbmRFbXBoYXNpc01hcmtzSWZOZWVkZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9saW5lL0xp
bmVJbmxpbmVIZWFkZXJzLmg6CisgICAgICAgIChXZWJDb3JlOjpyZXF1aXJlc0xpbmVCb3hGb3JD
b250ZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmF4aXNIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6dG9V
c2VyVW5pdHMpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxSb290Ojp2ZXJ0aWNhbFBhcmFtZXRl
cnMpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTY3JpcHRzOjp2ZXJ0aWNhbFBhcmFtZXRl
cnMgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJP
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFVuZGVyT3Zlcjo6dmVydGlj
YWxQYXJhbWV0ZXJzIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmZvbnRNZXRyaWNzT2ZQcmlt
YXJ5Rm9udCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y29tcHV0ZUxp
bmVIZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmZvbnRNZXRy
aWNzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lVGV4dDo6cG9zaXRpb25Gb3JQb2ludCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnNlbGVjdGlvblJlY3RGb3JUZXh0RnJhZ21lbnQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0
aW9uV2l0aFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50
VGV4dFdpdGhTaGFkb3dzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OmNh
bGN1bGF0ZUJvdW5kYXJpZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4
dEJveDo6bm9kZUF0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91
dEVuZ2luZUJhc2VsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRMYXlvdXRFbmdp
bmVCYXNlbGluZTo6Y2FsY3VsYXRlQmFzZWxpbmVTaGlmdCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmU6OmNhbGN1bGF0ZUFsaWdubWVudEJhc2Vs
aW5lU2hpZnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dExheW91dEVuZ2luZUJh
c2VsaW5lOjpjYWxjdWxhdGVHbHlwaEFkdmFuY2VBbmRPcmllbnRhdGlvbiBjb25zdCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdUZXh0TWV0cmljczo6U1ZHVGV4dE1ldHJpY3MpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvU1ZHVGV4dFF1ZXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGN1bGF0ZUdseXBoQm91
bmRhcmllcyk6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVy
Rmlyc3RMZXR0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3R5bGVGb3JGaXJzdExldHRlcik6
CisgICAgICAgICogc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMpOgorICAgICAgICAqIHN0eWxlL1N0eWxl
UmVzb2x2ZUZvckZvbnRSYXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OnJlc29sdmVG
b3JGb250UmF3KToKKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3RoQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdMZW5ndGhDb250ZXh0Ojpjb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzVG9F
WFMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZh
bHVlRnJvbUVYU1RvVXNlclVuaXRzIGNvbnN0KToKKwogMjAyMi0wMS0zMSAgU2FpZCBBYm91LUhh
bGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIFBhdHRlcm4g
c2hvdWxkIGhvbGQgU291cmNlSW1hZ2Ugd2hpY2ggY2FuIGJlIGNvbnZlcnRlZCB0byBhIE5hdGl2
ZUltYWdlIG9ubHkgd2hlbiBuZWVkZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggM2FmNzJiMzhmNDRmMDE1ZjM0NDRj
NTJmYmQ1ZjYzZGRhYjY1NGYwMS4uZGE2MzE0YzllMzc5NTc2NzY4MzE3NDc1ODEzN2RkYTBlNjQ2
NzNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMS0zMSAgTXlsZXMgQy4gTWF4
ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBGb250Q2FzY2Fk
ZTo6Zm9udE1ldHJpY3MoKSBhbmQgUmVuZGVyU3R5bGU6OmZvbnRNZXRyaWNzKCkgdG8gZm9udE1l
dHJpY3NPZlByaW1hcnlGb250KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNTkzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlKToK
KwogMjAyMi0wMS0zMSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbR1BVIFByb2Nlc3NdIFBhdHRlcm4gc2hvdWxkIGhvbGQgU291cmNlSW1hZ2Ugd2hpY2gg
Y2FuIGJlIGNvbnZlcnRlZCB0byBhIE5hdGl2ZUltYWdlIG9ubHkgd2hlbiBuZWVkZWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBhOGVjNWRlZGUxMjFmZDcwMDhmNGJmNmRlN2E0NmQw
NzZjMTA3YWEyLi5mZWVhZTA3Y2VkYTk5MDc0ZGE4Nzc2YjU3NjU2NDM5NWU0NTcwNDY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDEtMzEgIE15
bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUg
Rm9udENhc2NhZGU6OmZvbnRNZXRyaWNzKCkgYW5kIFJlbmRlclN0eWxlOjpmb250TWV0cmljcygp
IHRvIGZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU5MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJv
bGxlci5tbToKKyAgICAgICAgKCtbV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciBfZGljdGlv
bmFyeVBvcHVwSW5mb0ZvclJhbmdlOmluRnJhbWU6d2l0aExvb2t1cE9wdGlvbnM6aW5kaWNhdG9y
T3B0aW9uczp0cmFuc2l0aW9uOl0pOgorCiAyMDIyLTAxLTMwICBSeW9zdWtlIE5pd2EgIDxybml3
YUB3ZWJraXQub3JnPgogCiAgICAgICAgIERlbGV0ZSBydW50aW1lIHByZWZlcmVuY2UgZm9yIGVu
YWJsaW5nIGtleWdlbiBlbGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAK
aW5kZXggNDZlZTMzMDI2M2UxOGJmMDk4YTdlZDU2OTMzM2YyMDhhODE0OTI2ZS4uNGM3YmMxNThi
NTM3MTljNmRiZWMyMDdlMTIwNzhiNDc2ZjE5Mjg4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRl
cmZhY2VUZXh0LmNwcApAQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMgaW50IGJhc2VsaW5lUG9zaXRp
b25Gb3JSZW5kZXJPYmplY3QoUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QpCiAgICAgLy8gRklY
TUU6IFRoaXMgaW1wbGVtZW50YXRpb24gb2YgYmFzZWxpbmVQb3NpdGlvbiBvcmlnaW5hdGVzIGZy
b20gUmVuZGVyT2JqZWN0LmNwcCBhbmQgd2FzCiAgICAgLy8gcmVtb3ZlZCBpbiByNzAwNzIuIFRo
ZSBpbXBsZW1lbnRhdGlvbiBsb29rcyBpbmNvcnJlY3QgdGhvdWdoLCBiZWNhdXNlIHRoaXMgaXMg
bm90IHRoZQogICAgIC8vIGJhc2VsaW5lIG9mIHRoZSB1bmRlcmx5aW5nIFJlbmRlck9iamVjdCwg
YnV0IG9mIHRoZSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LgotICAgIGNvbnN0IEZvbnRNZXRy
aWNzJiBmb250TWV0cmljcyA9IHJlbmRlck9iamVjdC0+Zmlyc3RMaW5lU3R5bGUoKS5mb250TWV0
cmljcygpOworICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHJlbmRlck9iamVj
dC0+Zmlyc3RMaW5lU3R5bGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsKICAgICByZXR1
cm4gZm9udE1ldHJpY3MuYXNjZW50KCkgKyAocmVuZGVyT2JqZWN0LT5maXJzdExpbmVTdHlsZSgp
LmNvbXB1dGVkTGluZUhlaWdodCgpIC0gZm9udE1ldHJpY3MuaGVpZ2h0KCkpIC8gMjsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKaW5kZXggMDA3Y2FlZDc4ZTEy
OTQ3YmJkN2JjZWRkOGJkMTZhMmY5YjE0OTQwOC4uZjY0MjY1YTAzMjc5OWI3ZWYzMzhkNzY5NzQ2
Y2MzZjljYWIzOGZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2
ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3Bw
CkBAIC04MTQsNyArODE0LDcgQEAgZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTm9u
Q2FsY0xlbmd0aERvdWJsZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb24KICAgICAgICAgLy8g
V2UgcmVhbGx5IG5lZWQgdG8gY29tcHV0ZSBFWCB1c2luZyBmb250TWV0cmljcyBmb3IgdGhlIG9y
aWdpbmFsIHNwZWNpZmllZFNpemUgYW5kIG5vdCB1c2UKICAgICAgICAgLy8gb3VyIGFjdHVhbCBj
b25zdHJ1Y3RlZCByZW5kZXJpbmcgZm9udC4KICAgICAgICAgQVNTRVJUKGNvbnZlcnNpb25EYXRh
LnN0eWxlKCkpOwotICAgICAgICB2YWx1ZSA9IGNvbXB1dGVVbnpvb21lZE5vbkNhbGNMZW5ndGhE
b3VibGUocHJpbWl0aXZlVHlwZSwgdmFsdWUsIGNvbnZlcnNpb25EYXRhLnByb3BlcnR5VG9Db21w
dXRlKCksICZjb252ZXJzaW9uRGF0YS5zdHlsZSgpLT5mb250TWV0cmljcygpLCAmY29udmVyc2lv
bkRhdGEuc3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCkpOworICAgICAgICB2YWx1ZSA9IGNvbXB1
dGVVbnpvb21lZE5vbkNhbGNMZW5ndGhEb3VibGUocHJpbWl0aXZlVHlwZSwgdmFsdWUsIGNvbnZl
cnNpb25EYXRhLnByb3BlcnR5VG9Db21wdXRlKCksICZjb252ZXJzaW9uRGF0YS5zdHlsZSgpLT5m
b250TWV0cmljc09mUHJpbWFyeUZvbnQoKSwgJmNvbnZlcnNpb25EYXRhLnN0eWxlKCktPmZvbnRE
ZXNjcmlwdGlvbigpKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIENTU1VuaXRUeXBlOjpD
U1NfUkVNUzoKQEAgLTgyNCw3ICs4MjQsNyBAQCBkb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmNv
bXB1dGVOb25DYWxjTGVuZ3RoRG91YmxlKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbgogICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DSFM6CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0lD
OgogICAgICAgICBBU1NFUlQoY29udmVyc2lvbkRhdGEuc3R5bGUoKSk7Ci0gICAgICAgIHZhbHVl
ID0gY29tcHV0ZVVuem9vbWVkTm9uQ2FsY0xlbmd0aERvdWJsZShwcmltaXRpdmVUeXBlLCB2YWx1
ZSwgY29udmVyc2lvbkRhdGEucHJvcGVydHlUb0NvbXB1dGUoKSwgJmNvbnZlcnNpb25EYXRhLnN0
eWxlKCktPmZvbnRNZXRyaWNzKCkpOworICAgICAgICB2YWx1ZSA9IGNvbXB1dGVVbnpvb21lZE5v
bkNhbGNMZW5ndGhEb3VibGUocHJpbWl0aXZlVHlwZSwgdmFsdWUsIGNvbnZlcnNpb25EYXRhLnBy
b3BlcnR5VG9Db21wdXRlKCksICZjb252ZXJzaW9uRGF0YS5zdHlsZSgpLT5mb250TWV0cmljc09m
UHJpbWFyeUZvbnQoKSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDU1NVbml0VHlwZTo6
Q1NTX1BYOgpAQCAtOTE1LDcgKzkxNSw3IEBAIGRvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6Y29t
cHV0ZU5vbkNhbGNMZW5ndGhEb3VibGUoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uCiAgICAg
ICAgIEFTU0VSVChjb252ZXJzaW9uRGF0YS5zdHlsZSgpKTsKICAgICAgICAgaWYgKGNvbnZlcnNp
b25EYXRhLmNvbXB1dGluZ0xpbmVIZWlnaHQoKSB8fCBjb252ZXJzaW9uRGF0YS5jb21wdXRpbmdG
b250U2l6ZSgpKSB7CiAgICAgICAgICAgICAvLyBUcnkgdG8gZ2V0IHRoZSBwYXJlbnQncyBjb21w
dXRlZCBsaW5lLWhlaWdodCwgb3IgZmFsbCBiYWNrIHRvIHRoZSBpbml0aWFsIGxpbmUtaGVpZ2h0
IG9mIHRoaXMgZWxlbWVudCdzIGZvbnQgc3BhY2luZy4KLSAgICAgICAgICAgIHZhbHVlICo9IGNv
bnZlcnNpb25EYXRhLnBhcmVudFN0eWxlKCkgPyBjb252ZXJzaW9uRGF0YS5wYXJlbnRTdHlsZSgp
LT5jb21wdXRlZExpbmVIZWlnaHQoKSA6IGNvbnZlcnNpb25EYXRhLnN0eWxlKCktPmZvbnRNZXRy
aWNzKCkubGluZVNwYWNpbmcoKTsKKyAgICAgICAgICAgIHZhbHVlICo9IGNvbnZlcnNpb25EYXRh
LnBhcmVudFN0eWxlKCkgPyBjb252ZXJzaW9uRGF0YS5wYXJlbnRTdHlsZSgpLT5jb21wdXRlZExp
bmVIZWlnaHQoKSA6IGNvbnZlcnNpb25EYXRhLnN0eWxlKCktPmZvbnRNZXRyaWNzT2ZQcmltYXJ5
Rm9udCgpLmxpbmVTcGFjaW5nKCk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgdmFsdWUg
Kj0gY29udmVyc2lvbkRhdGEuc3R5bGUoKS0+Y29tcHV0ZWRMaW5lSGVpZ2h0KCk7CiAgICAgICAg
IGJyZWFrOwpAQCAtOTUxLDkgKzk1MSw5IEBAIGJvb2wgQ1NTUHJpbWl0aXZlVmFsdWU6OmVxdWFs
Rm9yTGVuZ3RoUmVzb2x1dGlvbihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGVBLCBjb25zCiAgICAg
aWYgKHN0eWxlQS5mb250RGVzY3JpcHRpb24oKS5zcGVjaWZpZWRTaXplKCkgIT0gc3R5bGVCLmZv
bnREZXNjcmlwdGlvbigpLnNwZWNpZmllZFNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgaWYgKHN0eWxlQS5mb250TWV0cmljcygpLnhIZWlnaHQoKSAhPSBzdHlsZUIuZm9udE1l
dHJpY3MoKS54SGVpZ2h0KCkpCisgICAgaWYgKHN0eWxlQS5mb250TWV0cmljc09mUHJpbWFyeUZv
bnQoKS54SGVpZ2h0KCkgIT0gc3R5bGVCLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLnhIZWln
aHQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChzdHlsZUEuZm9udE1ldHJpY3Mo
KS56ZXJvV2lkdGgoKSAhPSBzdHlsZUIuZm9udE1ldHJpY3MoKS56ZXJvV2lkdGgoKSkKKyAgICBp
ZiAoc3R5bGVBLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLnplcm9XaWR0aCgpICE9IHN0eWxl
Qi5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS56ZXJvV2lkdGgoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgaWYgKHN0eWxlQS56b29tKCkgIT0gc3R5bGVCLnpvb20oKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hQYWludGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hQYWludGVyLmNwcAppbmRleCAy
YzYzYWU4YzRhZWViZWYwYzEwYTZlZDI1MThkNTBhYzNiZTI1Yzc0Li41OTVlMGNlNTc0YzE0MWYy
YWMwMGVkZWJjNzE3MTc5MWYwMWUyMjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kaXNw
bGF5L2Nzcy9EaXNwbGF5Qm94UGFpbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxh
eS9jc3MvRGlzcGxheUJveFBhaW50ZXIuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgQm94UGFp
bnRlcjo6cGFpbnRCb3hDb250ZW50KGNvbnN0IEJveCYgYm94LCBQYWludGluZ0NvbnRleHQmIHBh
aW50aW5nQ29udGV4CiAgICAgICAgIHBhaW50aW5nQ29udGV4dC5jb250ZXh0LnNldEZpbGxDb2xv
cihzdHlsZS5jb2xvcigpKTsKIAogICAgICAgICAvLyBGSVhNRTogQWRkIG5vbi1iYXNlbGluZSBh
bGlnbiBwYWludGluZwotICAgICAgICBhdXRvIGJhc2VsaW5lID0gdGV4dFJlY3QueSgpICsgc3R5
bGUuZm9udE1ldHJpY3MoKS5hc2NlbnQoKTsKKyAgICAgICAgYXV0byBiYXNlbGluZSA9IHRleHRS
ZWN0LnkoKSArIHN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudCgpOwogICAg
ICAgICBhdXRvIGV4cGFuc2lvbiA9IHRleHRCb3guZXhwYW5zaW9uKCk7CiAKICAgICAgICAgYXV0
byB0ZXh0UnVuID0gVGV4dFJ1biB7IHRleHRCb3gudGV4dCgpLm9yaWdpbmFsQ29udGVudCgpLCB0
ZXh0UmVjdC54KCksIGV4cGFuc2lvbi5ob3Jpem9udGFsRXhwYW5zaW9uLCBleHBhbnNpb24uYmVo
YXZpb3IgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlT
dHlsZS5oIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVN0eWxlLmgKaW5kZXgg
N2VlMzBhM2UxMzEyOTRhM2Q1NWFjZWY0Y2FhMGE3MWMzZDEwYWQ1OC4uZmRiNGEyZTQ1NjgzZTVi
ZTliNTAyZmZhNzFhYTZmZTk4MTI5NjBjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlz
cGxheS9jc3MvRGlzcGxheVN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3Mv
RGlzcGxheVN0eWxlLmgKQEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogICAgIGJvb2wgcGFydGlj
aXBhdGVzSW5aT3JkZXJTb3J0aW5nKCkgY29uc3QgeyByZXR1cm4gaXNQb3NpdGlvbmVkKCkgfHwg
aXNTdGFja2luZ0NvbnRleHQoKTsgfQogCiAgICAgY29uc3QgRm9udENhc2NhZGUmIGZvbnRDYXNj
YWRlKCkgY29uc3QgeyByZXR1cm4gbV9mb250Q2FzY2FkZTsgfQotICAgIGNvbnN0IEZvbnRNZXRy
aWNzJiBmb250TWV0cmljcygpIGNvbnN0IHsgcmV0dXJuIG1fZm9udENhc2NhZGUuZm9udE1ldHJp
Y3MoKTsgfQorICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljc09mUHJpbWFyeUZvbnQo
KSBjb25zdCB7IHJldHVybiBtX2ZvbnRDYXNjYWRlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgp
OyB9CiAgICAgCiAgICAgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BhY2l0eTsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCBkMDc2MWVl
YzlmM2MyODU5M2EyODYzYzAwYzkzNTdhMWY3NmE3ODJlLi4wNWM1ZmM0ZDkyNmMxOTUwZDU1YjZi
ZTA3NjBmMjdmMmU3OWJhZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHAKQEAgLTIxNzgsNyArMjE3OCw3IEBAIFJlbmRlclN0eWxlIEhUTUxJbnB1dEVsZW1lbnQ6
OmNyZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKICAgICB9CiAK
ICAgICAvLyBEbyBub3QgYWxsb3cgbGluZS1oZWlnaHQgdG8gYmUgc21hbGxlciB0aGFuIG91ciBk
ZWZhdWx0LgotICAgIGlmICh0ZXh0QmxvY2tTdHlsZS5mb250TWV0cmljcygpLmxpbmVTcGFjaW5n
KCkgPiBzdHlsZS5jb21wdXRlZExpbmVIZWlnaHQoKSkKKyAgICBpZiAodGV4dEJsb2NrU3R5bGUu
Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkubGluZVNwYWNpbmcoKSA+IHN0eWxlLmNvbXB1dGVk
TGluZUhlaWdodCgpKQogICAgICAgICB0ZXh0QmxvY2tTdHlsZS5zZXRMaW5lSGVpZ2h0KFJlbmRl
clN0eWxlOjppbml0aWFsTGluZUhlaWdodCgpKTsKIAogICAgIHJldHVybiB0ZXh0QmxvY2tTdHls
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggYjg5ZTc3ZmI2MDBlMGVjYTkzZjAxOTI0Mzll
NDEwNzNjOTVhZDEzOC4uZDllY2Y2NmQ2ZDZhMTRlZWMzN2ZlMTJmZmM5MWY3N2YyZWIxZjgwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTQwNCw5ICs0MDQsOSBAQCB2b2lkIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2U6OkZvbnRQcm94eTo6aW5pdGlhbGl6ZShGb250U2VsZWN0b3Im
IGZvbnRTZWxlYwogICAgIG1fZm9udC5mb250U2VsZWN0b3IoKS0+cmVnaXN0ZXJGb3JJbnZhbGlk
YXRpb25DYWxsYmFja3MoKnRoaXMpOwogfQogCi1jb25zdCBGb250TWV0cmljcyYgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZTo6Rm9udFByb3h5Ojpmb250TWV0cmljcygpIGNvbnN0Citjb25z
dCBGb250TWV0cmljcyYgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Rm9udFByb3h5Ojpm
b250TWV0cmljc09mUHJpbWFyeUZvbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX2ZvbnQuZm9u
dE1ldHJpY3MoKTsKKyAgICByZXR1cm4gbV9mb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgp
OwogfQogCiBjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpGb250UHJveHk6OmZvbnREZXNjcmlwdGlvbigpIGNvbnN0CkBAIC0yNDA3LDcg
KzI0MDcsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdUZXh0VW5j
aGVja2VkKGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGRvdQogewogICAgIGF1dG8qIGMgPSBkcmF3
aW5nQ29udGV4dCgpOwogICAgIGF1dG8mIGZvbnRQcm94eSA9ICp0aGlzLT5mb250UHJveHkoKTsK
LSAgICBjb25zdCBhdXRvJiBmb250TWV0cmljcyA9IGZvbnRQcm94eS5mb250TWV0cmljcygpOwor
ICAgIGNvbnN0IGF1dG8mIGZvbnRNZXRyaWNzID0gZm9udFByb3h5LmZvbnRNZXRyaWNzT2ZQcmlt
YXJ5Rm9udCgpOwogCiAgICAgLy8gRklYTUU6IE5lZWQgdG8gdHVybiBvZmYgZm9udCBzbW9vdGhp
bmcuCiAKQEAgLTI1MzAsNyArMjUzMCw3IEBAIFJlZjxUZXh0TWV0cmljcz4gQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZTo6bWVhc3VyZVRleHRJbnRlcm5hbChjb25zdCBUZXh0UnVuCiAgICAg
UmVmPFRleHRNZXRyaWNzPiBtZXRyaWNzID0gVGV4dE1ldHJpY3M6OmNyZWF0ZSgpOwogCiAgICAg
YXV0byYgZm9udCA9ICpmb250UHJveHkoKTsKLSAgICBhdXRvJiBmb250TWV0cmljcyA9IGZvbnQu
Zm9udE1ldHJpY3MoKTsKKyAgICBhdXRvJiBmb250TWV0cmljcyA9IGZvbnQuZm9udE1ldHJpY3NP
ZlByaW1hcnlGb250KCk7CiAKICAgICBHbHlwaE92ZXJmbG93IGdseXBoT3ZlcmZsb3c7CiAgICAg
Z2x5cGhPdmVyZmxvdy5jb21wdXRlQm91bmRzID0gdHJ1ZTsKQEAgLTI1NTcsNyArMjU1Nyw3IEBA
IFJlZjxUZXh0TWV0cmljcz4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6bWVhc3VyZVRl
eHRJbnRlcm5hbChjb25zdCBUZXh0UnVuCiAKIEZsb2F0UG9pbnQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZTo6dGV4dE9mZnNldChmbG9hdCB3aWR0aCwgVGV4dERpcmVjdGlvbiBkaXJlY3Rp
b24pCiB7Ci0gICAgYXV0byYgZm9udE1ldHJpY3MgPSBmb250UHJveHkoKS0+Zm9udE1ldHJpY3Mo
KTsKKyAgICBhdXRvJiBmb250TWV0cmljcyA9IGZvbnRQcm94eSgpLT5mb250TWV0cmljc09mUHJp
bWFyeUZvbnQoKTsKICAgICBGbG9hdFBvaW50IG9mZnNldDsKIAogICAgIHN3aXRjaCAoc3RhdGUo
KS50ZXh0QmFzZWxpbmUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaAppbmRleCBkNGFlMGU0MTBjYzk1M2U5
YjZhODdlNDI2YzNlOWYzZWZmMzQyNDQ2Li5kNGM1YTRkN2IzMDBiZTRlOTRjYmJiZGQ4NjQyMDA4
ZDNhMGNkYzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oCkBAIC0yMzQsNyArMjM0LDcgQEAgcHVibGlj
OgogCiAgICAgICAgIGJvb2wgcmVhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2ZvbnQuZm9udFNl
bGVjdG9yKCk7IH0KICAgICAgICAgdm9pZCBpbml0aWFsaXplKEZvbnRTZWxlY3RvciYsIGNvbnN0
IEZvbnRDYXNjYWRlJik7Ci0gICAgICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcygp
IGNvbnN0OworICAgICAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3NPZlByaW1hcnlG
b250KCkgY29uc3Q7CiAgICAgICAgIGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIGZvbnRE
ZXNjcmlwdGlvbigpIGNvbnN0OwogICAgICAgICBmbG9hdCB3aWR0aChjb25zdCBUZXh0UnVuJiwg
R2x5cGhPdmVyZmxvdyogPSAwKSBjb25zdDsKICAgICAgICAgdm9pZCBkcmF3QmlkaVRleHQoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250Q2Fz
Y2FkZTo6Q3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAppbmRleCAyYTA0ZjAwMDgzYmZjMGYzY2Vi
NmQzYWJmMDg3ZWU4MzUyZmQxNTRiLi41MGFjZmFjNDgzYjQ4MzEzZGIwZmZjNWQxZDM3Mzk2MjVi
YjM3NDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zl
cmxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXku
Y3BwCkBAIC04NjksNyArODY5LDcgQEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpkcmF3UnVsZXJz
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW5zcGVjdG9yT3ZlcmwKIAogICAgICAg
ICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgdmVydGljYWxMYWJlbFN0YXRlU2F2
ZXIoY29udGV4dCk7CiAgICAgICAgICAgICAgICAgY29udGV4dC50cmFuc2xhdGUoem9vbSh4KSAr
IDAuNWYsIHNjcm9sbFkpOwotICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd1RleHQoZm9udCwg
VGV4dFJ1bihTdHJpbmc6Om51bWJlcih4KSksIHsgMiwgZHJhd1RvcEVkZ2UgPyBydWxlckxhYmVs
U2l6ZSA6IHJ1bGVyTGFiZWxTaXplIC0gcnVsZXJTaXplICsgZm9udC5mb250TWV0cmljcygpLmhl
aWdodCgpIC0gMS4wZiB9KTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdUZXh0KGZvbnQs
IFRleHRSdW4oU3RyaW5nOjpudW1iZXIoeCkpLCB7IDIsIGRyYXdUb3BFZGdlID8gcnVsZXJMYWJl
bFNpemUgOiBydWxlckxhYmVsU2l6ZSAtIHJ1bGVyU2l6ZSArIGZvbnQuZm9udE1ldHJpY3NPZlBy
aW1hcnlGb250KCkuaGVpZ2h0KCkgLSAxLjBmIH0pOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAKQEAgLTkyOCw3ICs5MjgsNyBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmRyYXdSdWxlcnMo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnNwZWN0b3JPdmVybAogICAgICAgICBj
b25zdCBmbG9hdCBwYWRkaW5nID0gMjsKICAgICAgICAgY29uc3QgZmxvYXQgcmFkaXVzID0gNDsK
ICAgICAgICAgZmxvYXQgZm9udFdpZHRoID0gZm9udC53aWR0aCh2aWV3cG9ydFRleHRSdW4pOwot
ICAgICAgICBmbG9hdCBmb250SGVpZ2h0ID0gZm9udC5mb250TWV0cmljcygpLmZsb2F0SGVpZ2h0
KCk7CisgICAgICAgIGZsb2F0IGZvbnRIZWlnaHQgPSBmb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5
Rm9udCgpLmZsb2F0SGVpZ2h0KCk7CiAgICAgICAgIEZsb2F0UmVjdCB2aWV3cG9ydFRleHRSZWN0
KG1hcmdpbiwgbWFyZ2luLCAocGFkZGluZyAqIDIuMGYpICsgZm9udFdpZHRoLCAocGFkZGluZyAq
IDIuMGYpICsgZm9udEhlaWdodCk7CiAgICAgICAgIGNvbnN0IGF1dG8gdmlld3BvcnRUZXh0UmVj
dENlbnRlciA9IHZpZXdwb3J0VGV4dFJlY3QuY2VudGVyKCk7CiAKQEAgLTk2Niw3ICs5NjYsNyBA
QCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmRyYXdSdWxlcnMoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBJbnNwZWN0b3JPdmVybAogICAgICAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVj
dChGbG9hdFJvdW5kZWRSZWN0KHZpZXdwb3J0VGV4dFJlY3QsIEZsb2F0Um91bmRlZFJlY3Q6OlJh
ZGlpKHJhZGl1cykpLCBydWxlckJhY2tncm91bmRDb2xvcik7CiAKICAgICAgICAgY29udGV4dC5z
ZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrKTsKLSAgICAgICAgY29udGV4dC5kcmF3VGV4dChmb250
LCB2aWV3cG9ydFRleHRSdW4sIHttYXJnaW4gKyAgcGFkZGluZywgbWFyZ2luICsgcGFkZGluZyAr
IGZvbnRIZWlnaHQgLSBmb250LmZvbnRNZXRyaWNzKCkuZGVzY2VudCgpIH0pOworICAgICAgICBj
b250ZXh0LmRyYXdUZXh0KGZvbnQsIHZpZXdwb3J0VGV4dFJ1biwgeyBtYXJnaW4gKyAgcGFkZGlu
ZywgbWFyZ2luICsgcGFkZGluZyArIGZvbnRIZWlnaHQgLSBmb250LmZvbnRNZXRyaWNzT2ZQcmlt
YXJ5Rm9udCgpLmRlc2NlbnQoKSB9KTsKICAgICB9CiB9CiAKQEAgLTEwNDAsNyArMTA0MCw3IEBA
IFBhdGggSW5zcGVjdG9yT3ZlcmxheTo6ZHJhd0VsZW1lbnRUaXRsZShHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIE5vZGUmIG5vZGUsIGNvCiAgICAgRm9udENhc2NhZGUgZm9udChXVEZNb3ZlKGZv
bnREZXNjcmlwdGlvbiksIDAsIDApOwogICAgIGZvbnQudXBkYXRlKG51bGxwdHIpOwogCi0gICAg
aW50IGZvbnRIZWlnaHQgPSBmb250LmZvbnRNZXRyaWNzKCkuaGVpZ2h0KCk7CisgICAgaW50IGZv
bnRIZWlnaHQgPSBmb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmhlaWdodCgpOwogCiAg
ICAgZmxvYXQgZWxlbWVudERhdGFXaWR0aDsKICAgICBmbG9hdCBlbGVtZW50RGF0YUhlaWdodCA9
IGZvbnRIZWlnaHQ7CkBAIC0xMzQ4LDcgKzEzNDgsNyBAQCBzdGF0aWMgRmxvYXRTaXplIGV4cGVj
dGVkU2l6ZUZvckxheW91dExhYmVsKFN0cmluZyBsYWJlbCwgSW5zcGVjdG9yT3ZlcmxheTo6TGFi
ZQogewogICAgIGF1dG8gZm9udCA9IGZvbnRGb3JMYXlvdXRMYWJlbCgpOwogCi0gICAgZmxvYXQg
dGV4dEhlaWdodCA9IGZvbnQuZm9udE1ldHJpY3MoKS5mbG9hdEhlaWdodCgpOworICAgIGZsb2F0
IHRleHRIZWlnaHQgPSBmb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmZsb2F0SGVpZ2h0
KCk7CiAgICAgZmxvYXQgdGV4dFdpZHRoID0gZm9udC53aWR0aChUZXh0UnVuKGxhYmVsKSk7CiAg
ICAgaWYgKG1heGltdW1XaWR0aCAmJiB0ZXh0V2lkdGggKyAobGF5b3V0TGFiZWxQYWRkaW5nICog
MikgPiBtYXhpbXVtV2lkdGgpCiAgICAgICAgIHRleHRXaWR0aCA9IG1heGltdW1XaWR0aDsKQEAg
LTEzNzYsOCArMTM3Niw4IEBAIHN0YXRpYyB2b2lkIGRyYXdMYXlvdXRMYWJlbChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIFN0cmluZyBsYWJlbCwgRmxvYXRQb2ludCBwCiAgICAgY29udGV4dC50
cmFuc2xhdGUocG9pbnQpOwogCiAgICAgYXV0byBmb250ID0gZm9udEZvckxheW91dExhYmVsKCk7
Ci0gICAgZmxvYXQgdGV4dEhlaWdodCA9IGZvbnQuZm9udE1ldHJpY3MoKS5mbG9hdEhlaWdodCgp
OwotICAgIGZsb2F0IHRleHREZXNjZW50ID0gZm9udC5mb250TWV0cmljcygpLmZsb2F0RGVzY2Vu
dCgpOworICAgIGZsb2F0IHRleHRIZWlnaHQgPSBmb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9u
dCgpLmZsb2F0SGVpZ2h0KCk7CisgICAgZmxvYXQgdGV4dERlc2NlbnQgPSBmb250LmZvbnRNZXRy
aWNzT2ZQcmltYXJ5Rm9udCgpLmZsb2F0RGVzY2VudCgpOwogICAgIAogICAgIGZsb2F0IHRleHRX
aWR0aCA9IGZvbnQud2lkdGgoVGV4dFJ1bihsYWJlbCkpOwogICAgIGlmIChtYXhpbXVtV2lkdGgg
JiYgdGV4dFdpZHRoICsgKGxheW91dExhYmVsUGFkZGluZyAqIDIpID4gbWF4aW11bVdpZHRoKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVGb3JtYXR0aW5nUXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdRdWlya3MuY3BwCmluZGV4
IDljOGU4YzlhODc3MjAyNzg3YjA1ZWIwM2FmYjczMzgxNDNjNjUwYzkuLjU5ZTg3YTNhYzUyNDRk
MDg5OTY3NTNhYjVjYmE3Y2ZjODA0NTQxOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdRdWlya3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUZvcm1hdHRpbmdRdWlya3MuY3BwCkBAIC00NCw3ICs0NCw3IEBAIElubGluZUxheW91dFVu
aXQgSW5saW5lRm9ybWF0dGluZ1F1aXJrczo6aW5pdGlhbExpbmVIZWlnaHQoKSBjb25zdAogICAg
IEFTU0VSVCghbGF5b3V0U3RhdGUoKS5pblN0YW5kYXJkc01vZGUoKSk7CiAgICAgLy8gTmVnYXRp
dmUgbGluZUhlaWdodCB2YWx1ZSBtZWFucyB0aGUgbGluZS1oZWlnaHQgaXMgbm90IHNldAogICAg
IGF1dG8mIHJvb3RTdHlsZSA9IGZvcm1hdHRpbmdDb250ZXh0KCkucm9vdCgpLnN0eWxlKCk7Ci0g
ICAgcmV0dXJuIHJvb3RTdHlsZS5saW5lSGVpZ2h0KCkuaXNOZWdhdGl2ZSgpID8gcm9vdFN0eWxl
LmZvbnRNZXRyaWNzKCkuZmxvYXRIZWlnaHQoKSA6IHJvb3RTdHlsZS5jb21wdXRlZExpbmVIZWln
aHQoKTsKKyAgICByZXR1cm4gcm9vdFN0eWxlLmxpbmVIZWlnaHQoKS5pc05lZ2F0aXZlKCkgPyBy
b290U3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuZmxvYXRIZWlnaHQoKSA6IHJvb3RT
dHlsZS5jb21wdXRlZExpbmVIZWlnaHQoKTsKIH0KIAogYm9vbCBJbmxpbmVGb3JtYXR0aW5nUXVp
cmtzOjppbmxpbmVMZXZlbEJveEFmZmVjdHNMaW5lQm94KGNvbnN0IElubGluZUxldmVsQm94JiBp
bmxpbmVMZXZlbEJveCwgY29uc3QgTGluZUJveCYgbGluZUJveCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxl
dmVsQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVMZXZlbEJveC5oCmluZGV4IDUyOWEyMThlNTJkNTEwODEyZDhlZTk3ZTVjZjFhM2I0
ODRjMDUxMDQuLmQ3MDAzNDQ1N2FiZGRlZGQxMDY0ODkxZTdkNzUxN2U3ZmU3Zjc1MGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUxldmVsQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lTGV2ZWxCb3guaApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAg
ICAgVmVydGljYWxBbGlnbm1lbnQgdmVydGljYWxBbGlnbigpIGNvbnN0OwogICAgIElubGluZUxh
eW91dFVuaXQgcHJlZmVycmVkTGluZUhlaWdodCgpIGNvbnN0OwogICAgIGJvb2wgaXNQcmVmZXJy
ZWRMaW5lSGVpZ2h0Rm9udE1ldHJpY3NCYXNlZCgpIGNvbnN0OwotICAgIGNvbnN0IEZvbnRNZXRy
aWNzJiBwcmltYXJ5Rm9udE1ldHJpY3MoKSBjb25zdDsKKyAgICBjb25zdCBGb250TWV0cmljcyYg
cHJpbWFyeWZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpIGNvbnN0OwogICAgIElubGluZUxheW91
dFVuaXQgZm9udFNpemUoKSBjb25zdDsKIAogICAgIGJvb2wgaXNJbmxpbmVCb3goKSBjb25zdCB7
IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6SW5saW5lQm94IHx8IGlzUm9vdElubGluZUJveCgpIHx8
IGlzTGluZVNwYW5uaW5nSW5saW5lQm94KCk7IH0KQEAgLTE1NCw3ICsxNTQsNyBAQCBpbmxpbmUg
SW5saW5lTGV2ZWxCb3g6OklubGluZUxldmVsQm94KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25z
dCBSZW5kZXJTdHlsZSYgcwogICAgICwgbV9pc0ZpcnN0V2l0aGluTGF5b3V0Qm94KHBvc2l0aW9u
V2l0aGluTGF5b3V0Qm94LmNvbnRhaW5zKFBvc2l0aW9uV2l0aGluTGF5b3V0Qm94OjpGaXJzdCkp
CiAgICAgLCBtX2lzTGFzdFdpdGhpbkxheW91dEJveChwb3NpdGlvbldpdGhpbkxheW91dEJveC5j
b250YWlucyhQb3NpdGlvbldpdGhpbkxheW91dEJveDo6TGFzdCkpCiAgICAgLCBtX3R5cGUodHlw
ZSkKLSAgICAsIG1fc3R5bGUoeyBzdHlsZS5mb250Q2FzY2FkZSgpLnByaW1hcnlGb250KCkuZm9u
dE1ldHJpY3MoKSwgc3R5bGUubGluZUhlaWdodCgpLCBJbmxpbmVMYXlvdXRVbml0KHN0eWxlLmZv
bnRDYXNjYWRlKCkuZm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRQaXhlbFNpemUoKSksIHsgfSB9
KQorICAgICwgbV9zdHlsZSh7IHN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3NPZlByaW1h
cnlGb250KCksIHN0eWxlLmxpbmVIZWlnaHQoKSwgSW5saW5lTGF5b3V0VW5pdChzdHlsZS5mb250
Q2FzY2FkZSgpLmZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkUGl4ZWxTaXplKCkpLCB7IH0gfSkK
IHsKICAgICBtX3N0eWxlLnZlcnRpY2FsQWxpZ25tZW50LnR5cGUgPSBzdHlsZS52ZXJ0aWNhbEFs
aWduKCk7CiAgICAgaWYgKG1fc3R5bGUudmVydGljYWxBbGlnbm1lbnQudHlwZSA9PSBWZXJ0aWNh
bEFsaWduOjpMZW5ndGgpCkBAIC0xNzIsNyArMTcyLDcgQEAgaW5saW5lIElubGluZUxheW91dFVu
aXQgSW5saW5lTGV2ZWxCb3g6OnByZWZlcnJlZExpbmVIZWlnaHQoKSBjb25zdAogewogICAgIC8v
IEZJWE1FOiBSZW1vdmUgaW50ZWdyYWwgZmxvb3Jpbmcgd2hlbiBsZWdhY3kgbGluZSBsYXlvdXQg
c3RvcHMgdXNpbmcgaXQuCiAgICAgaWYgKGlzUHJlZmVycmVkTGluZUhlaWdodEZvbnRNZXRyaWNz
QmFzZWQoKSkKLSAgICAgICAgcmV0dXJuIHByaW1hcnlGb250TWV0cmljcygpLmxpbmVTcGFjaW5n
KCk7CisgICAgICAgIHJldHVybiBwcmltYXJ5Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkubGlu
ZVNwYWNpbmcoKTsKIAogICAgIGlmIChtX3N0eWxlLmxpbmVIZWlnaHQuaXNQZXJjZW50T3JDYWxj
dWxhdGVkKCkpCiAgICAgICAgIHJldHVybiBmbG9vcmYobWluaW11bVZhbHVlRm9yTGVuZ3RoKG1f
c3R5bGUubGluZUhlaWdodCwgZm9udFNpemUoKSkpOwpAQCAtMTk1LDcgKzE5NSw3IEBAIGlubGlu
ZSBib29sIElubGluZUxldmVsQm94Ojppc1ByZWZlcnJlZExpbmVIZWlnaHRGb250TWV0cmljc0Jh
c2VkKCkgY29uc3QKICAgICByZXR1cm4gbV9zdHlsZS5saW5lSGVpZ2h0LmlzTmVnYXRpdmUoKTsK
IH0KIAotaW5saW5lIGNvbnN0IEZvbnRNZXRyaWNzJiBJbmxpbmVMZXZlbEJveDo6cHJpbWFyeUZv
bnRNZXRyaWNzKCkgY29uc3QKK2lubGluZSBjb25zdCBGb250TWV0cmljcyYgSW5saW5lTGV2ZWxC
b3g6OnByaW1hcnlmb250TWV0cmljc09mUHJpbWFyeUZvbnQoKSBjb25zdAogewogICAgIHJldHVy
biBtX3N0eWxlLnByaW1hcnlGb250TWV0cmljczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGlu
ZUJveC5jcHAKaW5kZXggNmUyMDg2MDEwOWRhZGUxZDQ3ZGZjNjVmYmI4NGIzMzY0Yjc4NTJkNi4u
NmQyMzY1MzdkYzU2MTNhOTVhMGRjN2Y5MjZlMzM5MjM5NjYwNTU4ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJv
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lTGluZUJveC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgSW5saW5lUmVjdCBMaW5lQm94
Ojpsb2dpY2FsUmVjdEZvclRleHRSdW4oY29uc3QgTGluZTo6UnVuJiBydW4pIGNvbnN0CiAgICAg
QVNTRVJUKHJ1bi5pc1RleHQoKSB8fCBydW4uaXNTb2Z0TGluZUJyZWFrKCkpOwogICAgIGF1dG8q
IHBhcmVudElubGluZUJveCA9ICZpbmxpbmVMZXZlbEJveEZvckxheW91dEJveChydW4ubGF5b3V0
Qm94KCkucGFyZW50KCkpOwogICAgIEFTU0VSVChwYXJlbnRJbmxpbmVCb3gtPmlzSW5saW5lQm94
KCkpOwotICAgIGF1dG8mIGZvbnRNZXRyaWNzID0gcGFyZW50SW5saW5lQm94LT5wcmltYXJ5Rm9u
dE1ldHJpY3MoKTsKKyAgICBhdXRvJiBmb250TWV0cmljcyA9IHBhcmVudElubGluZUJveC0+cHJp
bWFyeWZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwogICAgIGF1dG8gcnVubG9naWNhbFRvcCA9
IHBhcmVudElubGluZUJveC0+bG9naWNhbFRvcCgpICsgcGFyZW50SW5saW5lQm94LT5iYXNlbGlu
ZSgpIC0gZm9udE1ldHJpY3MuYXNjZW50KCk7CiAKICAgICB3aGlsZSAocGFyZW50SW5saW5lQm94
ICE9ICZtX3Jvb3RJbmxpbmVCb3ggJiYgIXBhcmVudElubGluZUJveC0+aGFzTGluZUJveFJlbGF0
aXZlQWxpZ25tZW50KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWls
ZGVyLmNwcAppbmRleCA5MWYzMGQ1ZWJjYjcyNDFiYThlMTU2YmE3OWY0YzUzNmFkMGVkMzA2Li5k
NDU3MGJmZDY4Zjg4MDc0NTFjMjIyZTNjMWExOGFjMDFjOTUyYjdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94
QnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAgdm9p
ZCBMaW5lQm94QnVpbGRlcjo6c2V0VmVydGljYWxHZW9tZXRyeUZvckxpbmVCcmVha0JveChJbmxp
bmVMZXZlbEJveCYgbGluZUJyZWEKICAgICBBU1NFUlQobGluZUJyZWFrQm94LmlzTGluZUJyZWFr
Qm94KCkpOwogICAgIEFTU0VSVChwYXJlbnRJbmxpbmVCb3guaXNJbmxpbmVCb3goKSk7CiAKLSAg
ICBhdXRvJiBmb250TWV0cmljcyA9IHBhcmVudElubGluZUJveC5wcmltYXJ5Rm9udE1ldHJpY3Mo
KTsKKyAgICBhdXRvJiBmb250TWV0cmljcyA9IHBhcmVudElubGluZUJveC5wcmltYXJ5Zm9udE1l
dHJpY3NPZlByaW1hcnlGb250KCk7CiAgICAgYXV0byBwcmVmZXJyZWRMaW5lSGVpZ2h0ID0gcGFy
ZW50SW5saW5lQm94LmlzUHJlZmVycmVkTGluZUhlaWdodEZvbnRNZXRyaWNzQmFzZWQoKSA/IHN0
ZDo6bnVsbG9wdCA6IHN0ZDo6bWFrZV9vcHRpb25hbChwYXJlbnRJbmxpbmVCb3gucHJlZmVycmVk
TGluZUhlaWdodCgpKTsKICAgICBhdXRvIGhlaWdodEFuZExheW91dEJvdW5kcyA9IGNvbXB1dGVk
SGVpZ2h0QW5kTGF5b3V0Qm91bmRzKGZvbnRNZXRyaWNzLCBwcmVmZXJyZWRMaW5lSGVpZ2h0KTsK
IApAQCAtMTk0LDcgKzE5NCw3IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OnNldEluaXRpYWxWZXJ0
aWNhbEdlb21ldHJ5Rm9ySW5saW5lQm94KElubGluZUxldmVsQm94JiBpbmxpCiAgICAgLy8gV2Ug
bmVlZCBmbG9vci9jZWlsIHRvIG1hdGNoIGxlZ2FjeSBsYXlvdXQgaW50ZWdyYWwgcG9zaXRpb25p
bmcuCiAgICAgQVNTRVJUKGlubGluZUJveC5pc0lubGluZUJveCgpKTsKIAotICAgIGF1dG8mIGZv
bnRNZXRyaWNzID0gaW5saW5lQm94LnByaW1hcnlGb250TWV0cmljcygpOworICAgIGF1dG8mIGZv
bnRNZXRyaWNzID0gaW5saW5lQm94LnByaW1hcnlmb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsK
ICAgICBhdXRvIHByZWZlcnJlZExpbmVIZWlnaHQgPSBpbmxpbmVCb3guaXNQcmVmZXJyZWRMaW5l
SGVpZ2h0Rm9udE1ldHJpY3NCYXNlZCgpID8gc3RkOjpudWxsb3B0IDogc3RkOjptYWtlX29wdGlv
bmFsKGlubGluZUJveC5wcmVmZXJyZWRMaW5lSGVpZ2h0KCkpOwogICAgIGF1dG8gaGVpZ2h0QW5k
TGF5b3V0Qm91bmRzID0gY29tcHV0ZWRIZWlnaHRBbmRMYXlvdXRCb3VuZHMoZm9udE1ldHJpY3Ms
IHByZWZlcnJlZExpbmVIZWlnaHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94VmVydGljYWxBbGlnbmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuY3BwCmluZGV4IDE4MjM1MDg0Y2I5Mzc1MTA1OGE0
MzQ5ZGI5ZjYzOTQ3NWU1OTJjNTIuLjNhNzM1ZmMwYTE0YmJhYzk5MzJmZTBmY2QwZjhiOGQxYzk1
YzI1OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0
aWNhbEFsaWduZXIuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgSW5saW5lTGF5b3V0VW5pdCBMaW5l
Qm94VmVydGljYWxBbGlnbmVyOjpjb21wdXRlTGluZUJveExvZ2ljYWxIZWlnaHQoTGluZUJveCYg
bGkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgVmVydGljYWxB
bGlnbjo6TWlkZGxlOiB7Ci0gICAgICAgICAgICBhdXRvIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFy
ZW50QmFzZWxpbmUgPSBpbmxpbmVMZXZlbEJveC5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKSAvIDIg
KyBwYXJlbnRJbmxpbmVCb3gucHJpbWFyeUZvbnRNZXRyaWNzKCkueEhlaWdodCgpIC8gMjsKKyAg
ICAgICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGlubGlu
ZUxldmVsQm94LmxheW91dEJvdW5kcygpLmhlaWdodCgpIC8gMiArIHBhcmVudElubGluZUJveC5w
cmltYXJ5Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkueEhlaWdodCgpIC8gMjsKICAgICAgICAg
ICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCkuYXNjZW50IC0g
bG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CkBAIC0yNDIsNyArMjQyLDcgQEAgdm9pZCBMaW5lQm94VmVydGljYWxBbGlnbmVy
Ojpjb21wdXRlUm9vdElubGluZUJveFZlcnRpY2FsUG9zaXRpb24oTGluZUJveCYgbGluZUIKICAg
ICAgICAgICAgICAgICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IHsgfTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6TWlk
ZGxlOiB7Ci0gICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJh
c2VsaW5lID0gKGlubGluZUxldmVsQm94LmxheW91dEJvdW5kcygpLmhlaWdodCgpIC8gMiArIHBh
cmVudElubGluZUJveC5wcmltYXJ5Rm9udE1ldHJpY3MoKS54SGVpZ2h0KCkgLyAyKTsKKyAgICAg
ICAgICAgICAgICBhdXRvIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSAoaW5s
aW5lTGV2ZWxCb3gubGF5b3V0Qm91bmRzKCkuaGVpZ2h0KCkgLyAyICsgcGFyZW50SW5saW5lQm94
LnByaW1hcnlmb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS54SGVpZ2h0KCkgLyAyKTsKICAgICAg
ICAgICAgICAgICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGxvZ2ljYWxUb3BP
ZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgLSBpbmxpbmVMZXZlbEJveC5sYXlvdXRCb3VuZHMoKS5h
c2NlbnQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0zMjEsNyAr
MzIxLDcgQEAgdm9pZCBMaW5lQm94VmVydGljYWxBbGlnbmVyOjphbGlnbklubGluZUxldmVsQm94
ZXMoTGluZUJveCYgbGluZUJveCwgSW5saW5lTGF5b3UKICAgICAgICAgICAgIGxvZ2ljYWxUb3Ag
PSBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAtIGlubGluZUxldmVsQm94LmJhc2VsaW5lKCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpNaWRkbGU6
IHsKLSAgICAgICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9
IChpbmxpbmVMZXZlbEJveC5sb2dpY2FsSGVpZ2h0KCkgLyAyICsgcGFyZW50SW5saW5lQm94LnBy
aW1hcnlGb250TWV0cmljcygpLnhIZWlnaHQoKSAvIDIpOworICAgICAgICAgICAgYXV0byBsb2dp
Y2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gKGlubGluZUxldmVsQm94LmxvZ2ljYWxI
ZWlnaHQoKSAvIDIgKyBwYXJlbnRJbmxpbmVCb3gucHJpbWFyeWZvbnRNZXRyaWNzT2ZQcmltYXJ5
Rm9udCgpLnhIZWlnaHQoKSAvIDIpOwogICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElu
bGluZUJveC5iYXNlbGluZSgpIC0gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKaW5kZXggMmE3NjEzNjJjODNmYTY4NWI1MWM2
ZWUwNTJjNmIxMzVjMDI1ZjlhMC4uMTdlZWU1NWNiZWUxMTZkMDIwZDRkNTI3ZWViYzI2MDBjNDcx
ZjYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
c2NhZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNj
YWRlLmNwcApAQCAtMTQxMyw4ICsxNDEzLDggQEAgZmxvYXQgRm9udENhc2NhZGU6OmZsb2F0V2lk
dGhGb3JTaW1wbGVUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgSGFzaFNldDxjb25zdCBGb24KICAg
ICBpdC5maW5hbGl6ZShnbHlwaEJ1ZmZlcik7CiAKICAgICBpZiAoZ2x5cGhPdmVyZmxvdykgewot
ICAgICAgICBnbHlwaE92ZXJmbG93LT50b3AgPSBzdGQ6Om1heDxpbnQ+KGdseXBoT3ZlcmZsb3ct
PnRvcCwgY2VpbGYoLWl0Lm1pbkdseXBoQm91bmRpbmdCb3hZKCkpIC0gKGdseXBoT3ZlcmZsb3ct
PmNvbXB1dGVCb3VuZHMgPyAwIDogZm9udE1ldHJpY3MoKS5hc2NlbnQoKSkpOwotICAgICAgICBn
bHlwaE92ZXJmbG93LT5ib3R0b20gPSBzdGQ6Om1heDxpbnQ+KGdseXBoT3ZlcmZsb3ctPmJvdHRv
bSwgY2VpbGYoaXQubWF4R2x5cGhCb3VuZGluZ0JveFkoKSkgLSAoZ2x5cGhPdmVyZmxvdy0+Y29t
cHV0ZUJvdW5kcyA/IDAgOiBmb250TWV0cmljcygpLmRlc2NlbnQoKSkpOworICAgICAgICBnbHlw
aE92ZXJmbG93LT50b3AgPSBzdGQ6Om1heDxpbnQ+KGdseXBoT3ZlcmZsb3ctPnRvcCwgY2VpbGYo
LWl0Lm1pbkdseXBoQm91bmRpbmdCb3hZKCkpIC0gKGdseXBoT3ZlcmZsb3ctPmNvbXB1dGVCb3Vu
ZHMgPyAwIDogZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50KCkpKTsKKyAgICAgICAg
Z2x5cGhPdmVyZmxvdy0+Ym90dG9tID0gc3RkOjptYXg8aW50PihnbHlwaE92ZXJmbG93LT5ib3R0
b20sIGNlaWxmKGl0Lm1heEdseXBoQm91bmRpbmdCb3hZKCkpIC0gKGdseXBoT3ZlcmZsb3ctPmNv
bXB1dGVCb3VuZHMgPyAwIDogZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuZGVzY2VudCgpKSk7
CiAgICAgICAgIGdseXBoT3ZlcmZsb3ctPmxlZnQgPSBjZWlsZihpdC5maXJzdEdseXBoT3ZlcmZs
b3coKSk7CiAgICAgICAgIGdseXBoT3ZlcmZsb3ctPnJpZ2h0ID0gY2VpbGYoaXQubGFzdEdseXBo
T3ZlcmZsb3coKSk7CiAgICAgfQpAQCAtMTQyNiw4ICsxNDI2LDggQEAgZmxvYXQgRm9udENhc2Nh
ZGU6OmZsb2F0V2lkdGhGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIEhhc2hTZXQ8
Y29uc3QgRm8KIHsKICAgICBDb21wbGV4VGV4dENvbnRyb2xsZXIgY29udHJvbGxlcigqdGhpcywg
cnVuLCB0cnVlLCBmYWxsYmFja0ZvbnRzKTsKICAgICBpZiAoZ2x5cGhPdmVyZmxvdykgewotICAg
ICAgICBnbHlwaE92ZXJmbG93LT50b3AgPSBzdGQ6Om1heDxpbnQ+KGdseXBoT3ZlcmZsb3ctPnRv
cCwgY2VpbGYoLWNvbnRyb2xsZXIubWluR2x5cGhCb3VuZGluZ0JveFkoKSkgLSAoZ2x5cGhPdmVy
Zmxvdy0+Y29tcHV0ZUJvdW5kcyA/IDAgOiBmb250TWV0cmljcygpLmFzY2VudCgpKSk7Ci0gICAg
ICAgIGdseXBoT3ZlcmZsb3ctPmJvdHRvbSA9IHN0ZDo6bWF4PGludD4oZ2x5cGhPdmVyZmxvdy0+
Ym90dG9tLCBjZWlsZihjb250cm9sbGVyLm1heEdseXBoQm91bmRpbmdCb3hZKCkpIC0gKGdseXBo
T3ZlcmZsb3ctPmNvbXB1dGVCb3VuZHMgPyAwIDogZm9udE1ldHJpY3MoKS5kZXNjZW50KCkpKTsK
KyAgICAgICAgZ2x5cGhPdmVyZmxvdy0+dG9wID0gc3RkOjptYXg8aW50PihnbHlwaE92ZXJmbG93
LT50b3AsIGNlaWxmKC1jb250cm9sbGVyLm1pbkdseXBoQm91bmRpbmdCb3hZKCkpIC0gKGdseXBo
T3ZlcmZsb3ctPmNvbXB1dGVCb3VuZHMgPyAwIDogZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCku
YXNjZW50KCkpKTsKKyAgICAgICAgZ2x5cGhPdmVyZmxvdy0+Ym90dG9tID0gc3RkOjptYXg8aW50
PihnbHlwaE92ZXJmbG93LT5ib3R0b20sIGNlaWxmKGNvbnRyb2xsZXIubWF4R2x5cGhCb3VuZGlu
Z0JveFkoKSkgLSAoZ2x5cGhPdmVyZmxvdy0+Y29tcHV0ZUJvdW5kcyA/IDAgOiBmb250TWV0cmlj
c09mUHJpbWFyeUZvbnQoKS5kZXNjZW50KCkpKTsKICAgICAgICAgZ2x5cGhPdmVyZmxvdy0+bGVm
dCA9IHN0ZDo6bWF4PGludD4oMCwgY2VpbGYoLWNvbnRyb2xsZXIubWluR2x5cGhCb3VuZGluZ0Jv
eFgoKSkpOwogICAgICAgICBnbHlwaE92ZXJmbG93LT5yaWdodCA9IHN0ZDo6bWF4PGludD4oMCwg
Y2VpbGYoY29udHJvbGxlci5tYXhHbHlwaEJvdW5kaW5nQm94WCgpIC0gY29udHJvbGxlci50b3Rh
bEFkdmFuY2UoKS53aWR0aCgpKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKaW5kZXggYmFiZTk2Njg0ZTdjMTVjYjljYTk2OTNiYTM1
NjBhOGFhM2QyYzk2Yy4uNmM2MzcyMTZiZmQ0MDQ5NjNhNzExZjE2OWY5MTliMTVkZTYwYjZiZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCkBA
IC0xNjMsNyArMTYzLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1BsYXRmb3JtRm9udCgpIGNv
bnN0IHsgcmV0dXJuIG1fZm9udHMtPmlzRm9yUGxhdGZvcm1Gb250KCk7IH0KIAotICAgIGNvbnN0
IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcygpIGNvbnN0IHsgcmV0dXJuIHByaW1hcnlGb250KCku
Zm9udE1ldHJpY3MoKTsgfQorICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljc09mUHJp
bWFyeUZvbnQoKSBjb25zdCB7IHJldHVybiBwcmltYXJ5Rm9udCgpLmZvbnRNZXRyaWNzKCk7IH0K
ICAgICBmbG9hdCBzcGFjZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gcHJpbWFyeUZvbnQoKS5zcGFj
ZVdpZHRoKCkgKyBtX2xldHRlclNwYWNpbmc7IH0KICAgICBmbG9hdCB0YWJXaWR0aChjb25zdCBG
b250JiwgY29uc3QgVGFiU2l6ZSYsIGZsb2F0KSBjb25zdDsKICAgICBmbG9hdCB0YWJXaWR0aChj
b25zdCBUYWJTaXplJiB0YWJTaXplLCBmbG9hdCBwb3NpdGlvbikgY29uc3QgeyByZXR1cm4gdGFi
V2lkdGgocHJpbWFyeUZvbnQoKSwgdGFiU2l6ZSwgcG9zaXRpb24pOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2FyZXRSZWN0Q29tcHV0YXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0NhcmV0UmVjdENvbXB1dGF0aW9uLmNwcAppbmRleCBjZTdmNTQy
ZGQ5N2I4NTM4NjFlMjNhY2Y4MWY4OWY4ZDIxNjc5NzA1Li45YTg2ZmYzMDI4ODg4NjQyNmRmZjlj
NzRlNjI2NDViNTQ4ZWVhNmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
Q2FyZXRSZWN0Q29tcHV0YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9D
YXJldFJlY3RDb21wdXRhdGlvbi5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgc3RhdGljIExheW91dFJl
Y3QgY29tcHV0ZUNhcmV0UmVjdEZvckVtcHR5RWxlbWVudChjb25zdCBSZW5kZXJCb3hNb2RlbE9i
amVjdCYgcmUKICAgICB4ID0gc3RkOjptaW4oeCwgc3RkOjptYXg8TGF5b3V0VW5pdD4obWF4WCAt
IGNhcmV0V2lkdGgsIDApKTsKIAogICAgIGF1dG8gbGluZUhlaWdodCA9IHJlbmRlcmVyLmxpbmVI
ZWlnaHQodHJ1ZSwgY3VycmVudFN0eWxlLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jp
em9udGFsTGluZSA6IFZlcnRpY2FsTGluZSwgUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKTsK
LSAgICBhdXRvIGhlaWdodCA9IHN0ZDo6bWluKGxpbmVIZWlnaHQsIExheW91dFVuaXQgeyBjdXJy
ZW50U3R5bGUuZm9udE1ldHJpY3MoKS5oZWlnaHQoKSB9KTsKKyAgICBhdXRvIGhlaWdodCA9IHN0
ZDo6bWluKGxpbmVIZWlnaHQsIExheW91dFVuaXQgeyBjdXJyZW50U3R5bGUuZm9udE1ldHJpY3NP
ZlByaW1hcnlGb250KCkuaGVpZ2h0KCkgfSk7CiAgICAgYXV0byB5ID0gcmVuZGVyZXIucGFkZGlu
Z1RvcCgpICsgcmVuZGVyZXIuYm9yZGVyVG9wKCkgKyAobGluZUhlaWdodCA+IGhlaWdodCA/IChs
aW5lSGVpZ2h0IC0gaGVpZ2h0KSAvIDIgOiBMYXlvdXRVbml0IHsgfSk7CiAKICAgICBhdXRvIHJl
Y3QgPSBMYXlvdXRSZWN0KHgsIHksIGNhcmV0V2lkdGgsIGhlaWdodCk7CkBAIC0yNDEsNyArMjQx
LDcgQEAgc3RhdGljIExheW91dFJlY3QgY29tcHV0ZUNhcmV0UmVjdEZvckJveChjb25zdCBSZW5k
ZXJCb3gmIHJlbmRlcmVyLCBjb25zdCBJbmxpbmUKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vMzc3
NzgwND4gRGVsZXRpbmcgYWxsIGNvbnRlbnQgaW4gYSBkb2N1bWVudCBjYW4gcmVzdWx0IGluIGdp
YW50IHRhbGwtYXMtd2luZG93IGluc2VydGlvbiBwb2ludAogICAgIC8vCiAgICAgLy8gRklYTUU6
IGlnbm9yaW5nIDpmaXJzdC1saW5lLCBtaXNzaW5nIGdvb2QgcmVhc29uIHRvIHRha2UgY2FyZSBv
ZgotICAgIExheW91dFVuaXQgZm9udEhlaWdodCA9IHJlbmRlcmVyLnN0eWxlKCkuZm9udE1ldHJp
Y3MoKS5oZWlnaHQoKTsKKyAgICBMYXlvdXRVbml0IGZvbnRIZWlnaHQgPSByZW5kZXJlci5zdHls
ZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmhlaWdodCgpOwogICAgIGlmIChmb250SGVp
Z2h0ID4gcmVjdC5oZWlnaHQoKSB8fCAoIXJlbmRlcmVyLmlzUmVwbGFjZWRPcklubGluZUJsb2Nr
KCkgJiYgIXJlbmRlcmVyLmlzVGFibGUoKSkpCiAgICAgICAgIHJlY3Quc2V0SGVpZ2h0KGZvbnRI
ZWlnaHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5RWxs
aXBzaXNCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUVsbGlwc2lzQm94
LmNwcAppbmRleCA0NmRjZDQ2ZmY3ZGUyOTg2NmI0OTk4ZTNmYzZjNzUwNjlkYmVlYjQ3Li5lOTcx
NjgwNTcwNzBjY2Q0ZjI4NmEwYThiMGVkNDQ2YTJlMTViYjE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5RWxsaXBzaXNCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9MZWdhY3lFbGxpcHNpc0JveC5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgdm9p
ZCBMZWdhY3lFbGxpcHNpc0JveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JiBwYWludE9mZnMKICAgICB9CiAKICAgICAvLyBGSVhNRTogV2h5IGlzIHRoaXMg
YWx3YXlzIExUUj8gRml4IGJ5IHBhc3NpbmcgY29ycmVjdCB0ZXh0IHJ1biBmbGFncyBiZWxvdy4K
LSAgICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVu
KG1fc3RyLCBsaW5lU3R5bGUsIEFsbG93UmlnaHRFeHBhbnNpb24pLCBMYXlvdXRQb2ludCh4KCkg
KyBwYWludE9mZnNldC54KCksIHkoKSArIHBhaW50T2Zmc2V0LnkoKSArIGxpbmVTdHlsZS5mb250
TWV0cmljcygpLmFzY2VudCgpKSk7CisgICAgY29udGV4dC5kcmF3VGV4dChmb250LCBSZW5kZXJC
bG9jazo6Y29uc3RydWN0VGV4dFJ1bihtX3N0ciwgbGluZVN0eWxlLCBBbGxvd1JpZ2h0RXhwYW5z
aW9uKSwgTGF5b3V0UG9pbnQoeCgpICsgcGFpbnRPZmZzZXQueCgpLCB5KCkgKyBwYWludE9mZnNl
dC55KCkgKyBsaW5lU3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50KCkpKTsK
IAogICAgIC8vIFJlc3RvcmUgdGhlIHJlZ3VsYXIgZmlsbCBjb2xvci4KICAgICBpZiAodGV4dENv
bG9yICE9IGNvbnRleHQuZmlsbENvbG9yKCkpCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBMZWdh
Y3lFbGxpcHNpc0JveDo6cGFpbnRNYXJrdXBCb3goUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JgogCiAgICAgTGF5b3V0UG9pbnQgYWRqdXN0ZWRQYWludE9mZnNldCA9IHBh
aW50T2Zmc2V0OwogICAgIGFkanVzdGVkUGFpbnRPZmZzZXQubW92ZSh4KCkgKyBsb2dpY2FsV2lk
dGgoKSAtIG1hcmt1cEJveC0+eCgpLAotICAgICAgICB5KCkgKyBzdHlsZS5mb250TWV0cmljcygp
LmFzY2VudCgpIC0gKG1hcmt1cEJveC0+eSgpICsgbWFya3VwQm94LT5saW5lU3R5bGUoKS5mb250
TWV0cmljcygpLmFzY2VudCgpKSk7CisgICAgICAgIHkoKSArIHN0eWxlLmZvbnRNZXRyaWNzT2ZQ
cmltYXJ5Rm9udCgpLmFzY2VudCgpIC0gKG1hcmt1cEJveC0+eSgpICsgbWFya3VwQm94LT5saW5l
U3R5bGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoKSkpOwogICAgIG1hcmt1
cEJveC0+cGFpbnQocGFpbnRJbmZvLCBhZGp1c3RlZFBhaW50T2Zmc2V0LCBsaW5lVG9wLCBsaW5l
Qm90dG9tKTsKIH0KIApAQCAtMTUzLDcgKzE1Myw3IEBAIGJvb2wgTGVnYWN5RWxsaXBzaXNCb3g6
Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0
CiAgICAgaWYgKExlZ2FjeUlubGluZUJveCogbWFya3VwQm94ID0gdGhpcy0+bWFya3VwQm94KCkp
IHsKICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIGxpbmVTdHlsZSA9IHRoaXMtPmxpbmVTdHls
ZSgpOwogICAgICAgICBMYXlvdXRVbml0IG10eCB7IGFkanVzdGVkTG9jYXRpb24ueCgpICsgbG9n
aWNhbFdpZHRoKCkgLSBtYXJrdXBCb3gtPngoKSB9OwotICAgICAgICBMYXlvdXRVbml0IG10eSB7
IGFkanVzdGVkTG9jYXRpb24ueSgpICsgbGluZVN0eWxlLmZvbnRNZXRyaWNzKCkuYXNjZW50KCkg
LSAobWFya3VwQm94LT55KCkgKyBtYXJrdXBCb3gtPmxpbmVTdHlsZSgpLmZvbnRNZXRyaWNzKCku
YXNjZW50KCkpIH07CisgICAgICAgIExheW91dFVuaXQgbXR5IHsgYWRqdXN0ZWRMb2NhdGlvbi55
KCkgKyBsaW5lU3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50KCkgLSAobWFy
a3VwQm94LT55KCkgKyBtYXJrdXBCb3gtPmxpbmVTdHlsZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5
Rm9udCgpLmFzY2VudCgpKSB9OwogICAgICAgICBpZiAobWFya3VwQm94LT5ub2RlQXRQb2ludChy
ZXF1ZXN0LCByZXN1bHQsIGxvY2F0aW9uSW5Db250YWluZXIsIExheW91dFBvaW50KG10eCwgbXR5
KSwgbGluZVRvcCwgbGluZUJvdHRvbSwgaGl0VGVzdEFjdGlvbikpIHsKICAgICAgICAgICAgIGJs
b2NrRmxvdygpLnVwZGF0ZUhpdFRlc3RSZXN1bHQocmVzdWx0LCBsb2NhdGlvbkluQ29udGFpbmVy
LnBvaW50KCkgLSBMYXlvdXRTaXplKG10eCwgbXR5KSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVCb3gu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUJveC5jcHAKaW5kZXgg
ODZmNDFlZjdmYjA1NmNjZDYxNWU1NzcxYTA4M2MyZDk4OGMwZjEwYy4uZmFmZWEzNjY5MzFlNmU5
MjkzYzk1OTY0MWU3MmNiOTU3Y2RlODAyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0xlZ2FjeUlubGluZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0xlZ2FjeUlubGluZUJveC5jcHAKQEAgLTEzNiwxMyArMTM2LDEzIEBAIGZsb2F0IExlZ2FjeUlu
bGluZUJveDo6bG9naWNhbEhlaWdodCgpIGNvbnN0CiAKICAgICBjb25zdCBSZW5kZXJTdHlsZSYg
bGluZVN0eWxlID0gdGhpcy0+bGluZVN0eWxlKCk7CiAgICAgaWYgKHJlbmRlcmVyKCkuaXNUZXh0
T3JMaW5lQnJlYWsoKSkKLSAgICAgICAgcmV0dXJuIGxpbmVTdHlsZS5mb250TWV0cmljcygpLmhl
aWdodCgpOworICAgICAgICByZXR1cm4gbGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9u
dCgpLmhlaWdodCgpOwogICAgIGlmIChpczxSZW5kZXJCb3g+KHJlbmRlcmVyKCkpICYmIHBhcmVu
dCgpKQogICAgICAgICByZXR1cm4gaXNIb3Jpem9udGFsKCkgPyBkb3duY2FzdDxSZW5kZXJCb3g+
KHJlbmRlcmVyKCkpLmhlaWdodCgpIDogZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJlcigpKS53
aWR0aCgpOwogCiAgICAgQVNTRVJUKGlzSW5saW5lRmxvd0JveCgpKTsKICAgICBSZW5kZXJCb3hN
b2RlbE9iamVjdCogZmxvd09iamVjdCA9IGJveE1vZGVsT2JqZWN0KCk7Ci0gICAgY29uc3QgRm9u
dE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gbGluZVN0eWxlLmZvbnRNZXRyaWNzKCk7CisgICAgY29u
c3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gbGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmlt
YXJ5Rm9udCgpOwogICAgIGZsb2F0IHJlc3VsdCA9IGZvbnRNZXRyaWNzLmhlaWdodCgpOwogICAg
IGlmIChwYXJlbnQoKSkKICAgICAgICAgcmVzdWx0ICs9IGZsb3dPYmplY3QtPmJvcmRlckFuZFBh
ZGRpbmdMb2dpY2FsSGVpZ2h0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvTGVnYWN5SW5saW5lRmxvd0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVn
YWN5SW5saW5lRmxvd0JveC5jcHAKaW5kZXggODA1NzUyYjI5MmE2NTkwOTllNWYwZDdlZGM4NDk0
ZWFiMGFjMjU0MS4uNjdlYzg4YzVlMWZkYzg0ZDIzNWU2Zjc1OWY4YmJlNDI1NGJlNTMzOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUZsb3dCb3guY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVGbG93Qm94LmNwcApA
QCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgTGVnYWN5SW5saW5lRmxvd0JveDo6YWRkVG9MaW5lKExl
Z2FjeUlubGluZUJveCogY2hpbGQpCiAgICAgICAgICAgICBzaG91bGRDbGVhckRlc2NlbmRhbnRz
SGF2ZVNhbWVMaW5lSGVpZ2h0QW5kQmFzZWxpbmUgPSB0cnVlOwogICAgICAgICBlbHNlIGlmIChj
aGlsZC0+YmVoYXZlc0xpa2VUZXh0KCkpIHsKICAgICAgICAgICAgIGlmIChjaGlsZC0+cmVuZGVy
ZXIoKS5pc0xpbmVCcmVhaygpIHx8IGNoaWxkLT5yZW5kZXJlcigpLnBhcmVudCgpICE9ICZyZW5k
ZXJlcigpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFwYXJlbnRTdHlsZS5mb250Q2FzY2FkZSgp
LmZvbnRNZXRyaWNzKCkuaGFzSWRlbnRpY2FsQXNjZW50RGVzY2VudEFuZExpbmVHYXAoY2hpbGRT
dHlsZS5mb250Q2FzY2FkZSgpLmZvbnRNZXRyaWNzKCkpCisgICAgICAgICAgICAgICAgaWYgKCFw
YXJlbnRTdHlsZS5mb250Q2FzY2FkZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmhhc0lk
ZW50aWNhbEFzY2VudERlc2NlbnRBbmRMaW5lR2FwKGNoaWxkU3R5bGUuZm9udENhc2NhZGUoKS5m
b250TWV0cmljc09mUHJpbWFyeUZvbnQoKSkKICAgICAgICAgICAgICAgICAgICAgfHwgcGFyZW50
U3R5bGUubGluZUhlaWdodCgpICE9IGNoaWxkU3R5bGUubGluZUhlaWdodCgpCiAgICAgICAgICAg
ICAgICAgICAgIHx8IChwYXJlbnRTdHlsZS52ZXJ0aWNhbEFsaWduKCkgIT0gVmVydGljYWxBbGln
bjo6QmFzZWxpbmUgJiYgIWlzUm9vdElubGluZUJveCgpKSB8fCBjaGlsZFN0eWxlLnZlcnRpY2Fs
QWxpZ24oKSAhPSBWZXJ0aWNhbEFsaWduOjpCYXNlbGluZSkKICAgICAgICAgICAgICAgICAgICAg
c2hvdWxkQ2xlYXJEZXNjZW5kYW50c0hhdmVTYW1lTGluZUhlaWdodEFuZEJhc2VsaW5lID0gdHJ1
ZTsKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIExlZ2FjeUlubGluZUZsb3dCb3g6OmFkZFRvTGlu
ZShMZWdhY3lJbmxpbmVCb3gqIGNoaWxkKQogICAgICAgICAgICAgICAgIGF1dG8mIGNoaWxkRmxv
d0JveCA9IGRvd25jYXN0PExlZ2FjeUlubGluZUZsb3dCb3g+KCpjaGlsZCk7CiAgICAgICAgICAg
ICAgICAgLy8gQ2hlY2sgdGhlIGNoaWxkJ3MgYml0LCBhbmQgdGhlbiBhbHNvIGNoZWNrIGZvciBk
aWZmZXJlbmNlcyBpbiBmb250LCBsaW5lLWhlaWdodCwgdmVydGljYWwtYWxpZ24KICAgICAgICAg
ICAgICAgICBpZiAoIWNoaWxkRmxvd0JveC5kZXNjZW5kYW50c0hhdmVTYW1lTGluZUhlaWdodEFu
ZEJhc2VsaW5lKCkKLSAgICAgICAgICAgICAgICAgICAgfHwgIXBhcmVudFN0eWxlLmZvbnRDYXNj
YWRlKCkuZm9udE1ldHJpY3MoKS5oYXNJZGVudGljYWxBc2NlbnREZXNjZW50QW5kTGluZUdhcChj
aGlsZFN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKSkKKyAgICAgICAgICAgICAgICAg
ICAgfHwgIXBhcmVudFN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250
KCkuaGFzSWRlbnRpY2FsQXNjZW50RGVzY2VudEFuZExpbmVHYXAoY2hpbGRTdHlsZS5mb250Q2Fz
Y2FkZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpKQogICAgICAgICAgICAgICAgICAgICB8
fCBwYXJlbnRTdHlsZS5saW5lSGVpZ2h0KCkgIT0gY2hpbGRTdHlsZS5saW5lSGVpZ2h0KCkKICAg
ICAgICAgICAgICAgICAgICAgfHwgKHBhcmVudFN0eWxlLnZlcnRpY2FsQWxpZ24oKSAhPSBWZXJ0
aWNhbEFsaWduOjpCYXNlbGluZSAmJiAhaXNSb290SW5saW5lQm94KCkpIHx8IGNoaWxkU3R5bGUu
dmVydGljYWxBbGlnbigpICE9IFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lCiAgICAgICAgICAgICAg
ICAgICAgIHx8IGNoaWxkU3R5bGUuaGFzQm9yZGVyKCkgfHwgY2hpbGRTdHlsZS5oYXNQYWRkaW5n
KCkgfHwgY2hpbGRTdHlsZS5oYXNUZXh0Q29tYmluZSgpKQpAQCAtNjg5LDcgKzY4OSw3IEBAIHN0
YXRpYyB2b2lkIHBsYWNlQ2hpbGRJbmxpbmVCb3hlc0luQmxvY2tEaXJlY3Rpb24oTGVnYWN5SW5s
aW5lRmxvd0JveCYgaW5saW5lQm94CiAKICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIGNoaWxk
TGluZVN0eWxlID0gY2hpbGQtPmxpbmVTdHlsZSgpOwogICAgICAgICBpZiAoY2hpbGQtPmJlaGF2
ZXNMaWtlVGV4dCgpIHx8IGlzPExlZ2FjeUlubGluZUZsb3dCb3g+KCpjaGlsZCkpIHsKLSAgICAg
ICAgICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IGNoaWxkTGluZVN0eWxlLmZv
bnRNZXRyaWNzKCk7CisgICAgICAgICAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3Mg
PSBjaGlsZExpbmVTdHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsKICAgICAgICAgICAg
IG5ld0xvZ2ljYWxUb3AgKz0gY2hpbGQtPmJhc2VsaW5lUG9zaXRpb24oYmFzZWxpbmVUeXBlKSAt
IGZvbnRNZXRyaWNzLmFzY2VudChiYXNlbGluZVR5cGUpOwogICAgICAgICAgICAgaWYgKGlzPExl
Z2FjeUlubGluZUZsb3dCb3g+KCpjaGlsZCkpIHsKICAgICAgICAgICAgICAgICBSZW5kZXJCb3hN
b2RlbE9iamVjdCYgYm94T2JqZWN0ID0gZG93bmNhc3Q8TGVnYWN5SW5saW5lRmxvd0JveD4oKmNo
aWxkKS5yZW5kZXJlcigpOwpAQCAtNzYzLDcgKzc2Myw3IEBAIHZvaWQgTGVnYWN5SW5saW5lRmxv
d0JveDo6cGxhY2VCb3hlc0luQmxvY2tEaXJlY3Rpb24oTGF5b3V0VW5pdCB0b3AsIExheW91dFVu
aXQKIHsKICAgICBib29sIGlzUm9vdEJveCA9IGlzUm9vdElubGluZUJveCgpOwogICAgIGlmIChp
c1Jvb3RCb3gpCi0gICAgICAgIHNldExvZ2ljYWxUb3AodG9wICsgbWF4QXNjZW50IC0gbGluZVN0
eWxlKCkuZm9udE1ldHJpY3MoKS5hc2NlbnQoYmFzZWxpbmVUeXBlKSk7CisgICAgICAgIHNldExv
Z2ljYWxUb3AodG9wICsgbWF4QXNjZW50IC0gbGluZVN0eWxlKCkuZm9udE1ldHJpY3NPZlByaW1h
cnlGb250KCkuYXNjZW50KGJhc2VsaW5lVHlwZSkpOwogCiAgICAgcGxhY2VDaGlsZElubGluZUJv
eGVzSW5CbG9ja0RpcmVjdGlvbigqdGhpcywgdG9wLCBtYXhIZWlnaHQsIG1heEFzY2VudCwgc3Ry
aWN0TW9kZSwgbGluZVRvcCwgbGluZUJvdHRvbSwgc2V0TGluZVRvcCwgbGluZVRvcEluY2x1ZGlu
Z01hcmdpbnMsIGxpbmVCb3R0b21JbmNsdWRpbmdNYXJnaW5zLCBoYXNBbm5vdGF0aW9uc0JlZm9y
ZSwgaGFzQW5ub3RhdGlvbnNBZnRlciwgYmFzZWxpbmVUeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlvdXQuY3BwCmluZGV4IDg3ZDBjYmFkZGI0ZmQ1NTM2
Y2ZjYTMyNGE1ODcyMWJhZjBmYmM4N2UuLmQ4N2UzZDU5Y2IxYThmMWQyMjNlYmJhOTg1YTFiODky
ODZkZTQxNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lMaW5l
TGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5TGluZUxheW91
dC5jcHAKQEAgLTQ3OCwxMCArNDc4LDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRMb2dpY2Fs
V2lkdGhGb3JUZXh0UnVuKExlZ2FjeVJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsIEJpZGlSCiAgICAg
ICAgIC8vIHdpbGwga2VlcCB1cyBmcm9tIGNvbXB1dGluZyBnbHlwaCBib3VuZHMgaW4gbmVhcmx5
IGFsbCBjYXNlcy4KICAgICAgICAgYm9vbCBpbmNsdWRlUm9vdExpbmUgPSBsaW5lQm94LT5pbmNs
dWRlc1Jvb3RMaW5lQm94Rm9udE9yTGVhZGluZygpOwogICAgICAgICBpbnQgYmFzZWxpbmVTaGlm
dCA9IGxpbmVCb3gtPnZlcnRpY2FsUG9zaXRpb25Gb3JCb3gocnVuLT5ib3goKSwgdmVydGljYWxQ
b3NpdGlvbkNhY2hlKTsKLSAgICAgICAgaW50IHJvb3REZXNjZW50ID0gaW5jbHVkZVJvb3RMaW5l
ID8gZm9udC5mb250TWV0cmljcygpLmRlc2NlbnQoKSA6IDA7Ci0gICAgICAgIGludCByb290QXNj
ZW50ID0gaW5jbHVkZVJvb3RMaW5lID8gZm9udC5mb250TWV0cmljcygpLmFzY2VudCgpIDogMDsK
LSAgICAgICAgaW50IGJveEFzY2VudCA9IGZvbnQuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSAtIGJh
c2VsaW5lU2hpZnQ7Ci0gICAgICAgIGludCBib3hEZXNjZW50ID0gZm9udC5mb250TWV0cmljcygp
LmRlc2NlbnQoKSArIGJhc2VsaW5lU2hpZnQ7CisgICAgICAgIGludCByb290RGVzY2VudCA9IGlu
Y2x1ZGVSb290TGluZSA/IGZvbnQuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuZGVzY2VudCgp
IDogMDsKKyAgICAgICAgaW50IHJvb3RBc2NlbnQgPSBpbmNsdWRlUm9vdExpbmUgPyBmb250LmZv
bnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudCgpIDogMDsKKyAgICAgICAgaW50IGJveEFz
Y2VudCA9IGZvbnQuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50KCkgLSBiYXNlbGlu
ZVNoaWZ0OworICAgICAgICBpbnQgYm94RGVzY2VudCA9IGZvbnQuZm9udE1ldHJpY3NPZlByaW1h
cnlGb250KCkuZGVzY2VudCgpICsgYmFzZWxpbmVTaGlmdDsKICAgICAgICAgaWYgKGJveEFzY2Vu
dCA+IHJvb3REZXNjZW50IHx8ICBib3hEZXNjZW50ID4gcm9vdEFzY2VudCkKICAgICAgICAgICAg
IGdseXBoT3ZlcmZsb3cuY29tcHV0ZUJvdW5kcyA9IHRydWU7IAogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lSb290SW5saW5lQm94LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lSb290SW5saW5lQm94LmNwcAppbmRleCBlODk1Y2Ji
NjcxNzBiNjQ0N2VjYzcxM2JhNTFjYjNmYmI2ZTkwNmVmLi4zMWJlN2Q5NmJmOWQ3NjllYjg5MzU2
ODFlZTk3ZWNkMjgwOWUyOGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
TGVnYWN5Um9vdElubGluZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xl
Z2FjeVJvb3RJbmxpbmVCb3guY3BwCkBAIC0zNjMsMTQgKzM2MywxNCBAQCBMYXlvdXRVbml0IExl
Z2FjeVJvb3RJbmxpbmVCb3g6OmxpbmVTbmFwQWRqdXN0bWVudChMYXlvdXRVbml0IGRlbHRhKSBj
b25zdAogICAgIGlmICghZ3JpZExpbmVIZWlnaHQpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg
TGF5b3V0VW5pdCBsaW5lR3JpZEZvbnRBc2NlbnQgPSBsaW5lR3JpZC0+c3R5bGUoKS5mb250TWV0
cmljcygpLmFzY2VudChiYXNlbGluZVR5cGUoKSk7CisgICAgTGF5b3V0VW5pdCBsaW5lR3JpZEZv
bnRBc2NlbnQgPSBsaW5lR3JpZC0+c3R5bGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5h
c2NlbnQoYmFzZWxpbmVUeXBlKCkpOwogICAgIExheW91dFVuaXQgbGluZUdyaWRGb250SGVpZ2h0
IHsgbGluZUdyaWRCb3gtPmxvZ2ljYWxIZWlnaHQoKSB9OwogICAgIExheW91dFVuaXQgZmlyc3RU
ZXh0VG9wIHsgbGluZUdyaWRCbG9ja09mZnNldCArIGxpbmVHcmlkQm94LT5sb2dpY2FsVG9wKCkg
fTsKICAgICBMYXlvdXRVbml0IGZpcnN0TGluZVRvcFdpdGhMZWFkaW5nID0gbGluZUdyaWRCbG9j
a09mZnNldCArIGxpbmVHcmlkQm94LT5saW5lQm94VG9wKCk7CiAgICAgTGF5b3V0VW5pdCBmaXJz
dEJhc2VsaW5lUG9zaXRpb24gPSBmaXJzdFRleHRUb3AgKyBsaW5lR3JpZEZvbnRBc2NlbnQ7CiAK
ICAgICBMYXlvdXRVbml0IGN1cnJlbnRUZXh0VG9wIHsgYmxvY2tPZmZzZXQgKyBsb2dpY2FsVG9w
KCkgKyBkZWx0YSB9OwotICAgIExheW91dFVuaXQgY3VycmVudEZvbnRBc2NlbnQgPSBibG9ja0Zs
b3coKS5zdHlsZSgpLmZvbnRNZXRyaWNzKCkuYXNjZW50KGJhc2VsaW5lVHlwZSgpKTsKKyAgICBM
YXlvdXRVbml0IGN1cnJlbnRGb250QXNjZW50ID0gYmxvY2tGbG93KCkuc3R5bGUoKS5mb250TWV0
cmljc09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoYmFzZWxpbmVUeXBlKCkpOwogICAgIExheW91dFVu
aXQgY3VycmVudEJhc2VsaW5lUG9zaXRpb24gPSBjdXJyZW50VGV4dFRvcCArIGN1cnJlbnRGb250
QXNjZW50OwogCiAgICAgTGF5b3V0VW5pdCBsaW5lR3JpZFBhZ2luYXRpb25PcmlnaW4gPSBpc0hv
cml6b250YWwoKSA/IGxheW91dFN0YXRlLT5saW5lR3JpZFBhZ2luYXRpb25PcmlnaW4oKS5oZWln
aHQoKSA6IGxheW91dFN0YXRlLT5saW5lR3JpZFBhZ2luYXRpb25PcmlnaW4oKS53aWR0aCgpOwpA
QCAtNzQzLDggKzc0Myw4IEBAIHZvaWQgTGVnYWN5Um9vdElubGluZUJveDo6YXNjZW50QW5kRGVz
Y2VudEZvckJveChMZWdhY3lJbmxpbmVCb3gmIGJveCwgR2x5cGhPdmVyCiAgICAgfQogICAgIAog
ICAgIGlmIChpbmNsdWRlRm9udEZvckJveChib3gpICYmICFzZXRVc2VkRm9udCkgewotICAgICAg
ICBMYXlvdXRVbml0IGZvbnRBc2NlbnQgeyBib3hMaW5lU3R5bGUuZm9udE1ldHJpY3MoKS5hc2Nl
bnQoYmFzZWxpbmVUeXBlKCkpIH07Ci0gICAgICAgIExheW91dFVuaXQgZm9udERlc2NlbnQgeyBi
b3hMaW5lU3R5bGUuZm9udE1ldHJpY3MoKS5kZXNjZW50KGJhc2VsaW5lVHlwZSgpKSB9OworICAg
ICAgICBMYXlvdXRVbml0IGZvbnRBc2NlbnQgeyBib3hMaW5lU3R5bGUuZm9udE1ldHJpY3NPZlBy
aW1hcnlGb250KCkuYXNjZW50KGJhc2VsaW5lVHlwZSgpKSB9OworICAgICAgICBMYXlvdXRVbml0
IGZvbnREZXNjZW50IHsgYm94TGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmRl
c2NlbnQoYmFzZWxpbmVUeXBlKCkpIH07CiAgICAgICAgIHNldEFzY2VudEFuZERlc2NlbnQoYXNj
ZW50LCBkZXNjZW50LCBmb250QXNjZW50LCBmb250RGVzY2VudCwgYXNjZW50RGVzY2VudFNldCk7
CiAgICAgICAgIGFmZmVjdHNBc2NlbnQgPSBmb250QXNjZW50IC0gYm94LmxvZ2ljYWxUb3AoKSA+
IDA7CiAgICAgICAgIGFmZmVjdHNEZXNjZW50ID0gZm9udERlc2NlbnQgKyBib3gubG9naWNhbFRv
cCgpID4gMDsKQEAgLTc1NCwyNiArNzU0LDI2IEBAIHZvaWQgTGVnYWN5Um9vdElubGluZUJveDo6
YXNjZW50QW5kRGVzY2VudEZvckJveChMZWdhY3lJbmxpbmVCb3gmIGJveCwgR2x5cGhPdmVyCiAg
ICAgICAgIHNldEFzY2VudEFuZERlc2NlbnQoYXNjZW50LCBkZXNjZW50LCBnbHlwaE92ZXJmbG93
LT50b3AsIGdseXBoT3ZlcmZsb3ctPmJvdHRvbSwgYXNjZW50RGVzY2VudFNldCk7CiAgICAgICAg
IGFmZmVjdHNBc2NlbnQgPSBnbHlwaE92ZXJmbG93LT50b3AgLSBib3gubG9naWNhbFRvcCgpID4g
MDsKICAgICAgICAgYWZmZWN0c0Rlc2NlbnQgPSBnbHlwaE92ZXJmbG93LT5ib3R0b20gKyBib3gu
bG9naWNhbFRvcCgpID4gMDsKLSAgICAgICAgZ2x5cGhPdmVyZmxvdy0+dG9wID0gc3RkOjptaW4o
Z2x5cGhPdmVyZmxvdy0+dG9wLCBzdGQ6Om1heCgwX2x1LCBnbHlwaE92ZXJmbG93LT50b3AgLSBi
b3hMaW5lU3R5bGUuZm9udE1ldHJpY3MoKS5hc2NlbnQoYmFzZWxpbmVUeXBlKCkpKSk7Ci0gICAg
ICAgIGdseXBoT3ZlcmZsb3ctPmJvdHRvbSA9IHN0ZDo6bWluKGdseXBoT3ZlcmZsb3ctPmJvdHRv
bSwgc3RkOjptYXgoMF9sdSwgZ2x5cGhPdmVyZmxvdy0+Ym90dG9tIC0gYm94TGluZVN0eWxlLmZv
bnRNZXRyaWNzKCkuZGVzY2VudChiYXNlbGluZVR5cGUoKSkpKTsKKyAgICAgICAgZ2x5cGhPdmVy
Zmxvdy0+dG9wID0gc3RkOjptaW4oZ2x5cGhPdmVyZmxvdy0+dG9wLCBzdGQ6Om1heCgwX2x1LCBn
bHlwaE92ZXJmbG93LT50b3AgLSBib3hMaW5lU3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250
KCkuYXNjZW50KGJhc2VsaW5lVHlwZSgpKSkpOworICAgICAgICBnbHlwaE92ZXJmbG93LT5ib3R0
b20gPSBzdGQ6Om1pbihnbHlwaE92ZXJmbG93LT5ib3R0b20sIHN0ZDo6bWF4KDBfbHUsIGdseXBo
T3ZlcmZsb3ctPmJvdHRvbSAtIGJveExpbmVTdHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQo
KS5kZXNjZW50KGJhc2VsaW5lVHlwZSgpKSkpOwogICAgIH0KICAgICAKICAgICBpZiAoaW5jbHVk
ZUluaXRpYWxMZXR0ZXJGb3JCb3goYm94KSkgewogICAgICAgICBib29sIGNhblVzZUdseXBocyA9
IGdseXBoT3ZlcmZsb3cgJiYgZ2x5cGhPdmVyZmxvdy0+Y29tcHV0ZUJvdW5kczsKLSAgICAgICAg
YXV0byBsZXR0ZXJBc2NlbnQgeyBiYXNlbGluZVR5cGUoKSA9PSBBbHBoYWJldGljQmFzZWxpbmUg
PyBMYXlvdXRVbml0KGJveExpbmVTdHlsZS5mb250TWV0cmljcygpLmNhcEhlaWdodCgpKSA6IChj
YW5Vc2VHbHlwaHMgPyBnbHlwaE92ZXJmbG93LT50b3AgOiBMYXlvdXRVbml0KGJveExpbmVTdHls
ZS5mb250TWV0cmljcygpLmFzY2VudChiYXNlbGluZVR5cGUoKSkpKSB9OwotICAgICAgICBhdXRv
IGxldHRlckRlc2NlbnQgeyBjYW5Vc2VHbHlwaHMgPyBnbHlwaE92ZXJmbG93LT5ib3R0b20gOiAo
Ym94LmlzUm9vdElubGluZUJveCgpID8gMF9sdSA6IExheW91dFVuaXQoYm94TGluZVN0eWxlLmZv
bnRNZXRyaWNzKCkuZGVzY2VudChiYXNlbGluZVR5cGUoKSkpKSB9OworICAgICAgICBhdXRvIGxl
dHRlckFzY2VudCB7IGJhc2VsaW5lVHlwZSgpID09IEFscGhhYmV0aWNCYXNlbGluZSA/IExheW91
dFVuaXQoYm94TGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmNhcEhlaWdodCgp
KSA6IChjYW5Vc2VHbHlwaHMgPyBnbHlwaE92ZXJmbG93LT50b3AgOiBMYXlvdXRVbml0KGJveExp
bmVTdHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoYmFzZWxpbmVUeXBlKCkp
KSkgfTsKKyAgICAgICAgYXV0byBsZXR0ZXJEZXNjZW50IHsgY2FuVXNlR2x5cGhzID8gZ2x5cGhP
dmVyZmxvdy0+Ym90dG9tIDogKGJveC5pc1Jvb3RJbmxpbmVCb3goKSA/IDBfbHUgOiBMYXlvdXRV
bml0KGJveExpbmVTdHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5kZXNjZW50KGJhc2Vs
aW5lVHlwZSgpKSkpIH07CiAgICAgICAgIHNldEFzY2VudEFuZERlc2NlbnQoYXNjZW50LCBkZXNj
ZW50LCBsZXR0ZXJBc2NlbnQsIGxldHRlckRlc2NlbnQsIGFzY2VudERlc2NlbnRTZXQpOwogICAg
ICAgICBhZmZlY3RzQXNjZW50ID0gbGV0dGVyQXNjZW50IC0gYm94LmxvZ2ljYWxUb3AoKSA+IDA7
CiAgICAgICAgIGFmZmVjdHNEZXNjZW50ID0gbGV0dGVyRGVzY2VudCArIGJveC5sb2dpY2FsVG9w
KCkgPiAwOwogICAgICAgICBpZiAoY2FuVXNlR2x5cGhzKSB7Ci0gICAgICAgICAgICBnbHlwaE92
ZXJmbG93LT50b3AgPSBzdGQ6Om1pbihnbHlwaE92ZXJmbG93LT50b3AsIHN0ZDo6bWF4KDBfbHUs
IGdseXBoT3ZlcmZsb3ctPnRvcCAtIGJveExpbmVTdHlsZS5mb250TWV0cmljcygpLmFzY2VudChi
YXNlbGluZVR5cGUoKSkpKTsKLSAgICAgICAgICAgIGdseXBoT3ZlcmZsb3ctPmJvdHRvbSA9IHN0
ZDo6bWluKGdseXBoT3ZlcmZsb3ctPmJvdHRvbSwgc3RkOjptYXgoMF9sdSwgZ2x5cGhPdmVyZmxv
dy0+Ym90dG9tIC0gYm94TGluZVN0eWxlLmZvbnRNZXRyaWNzKCkuZGVzY2VudChiYXNlbGluZVR5
cGUoKSkpKTsKKyAgICAgICAgICAgIGdseXBoT3ZlcmZsb3ctPnRvcCA9IHN0ZDo6bWluKGdseXBo
T3ZlcmZsb3ctPnRvcCwgc3RkOjptYXgoMF9sdSwgZ2x5cGhPdmVyZmxvdy0+dG9wIC0gYm94TGlu
ZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudChiYXNlbGluZVR5cGUoKSkp
KTsKKyAgICAgICAgICAgIGdseXBoT3ZlcmZsb3ctPmJvdHRvbSA9IHN0ZDo6bWluKGdseXBoT3Zl
cmZsb3ctPmJvdHRvbSwgc3RkOjptYXgoMF9sdSwgZ2x5cGhPdmVyZmxvdy0+Ym90dG9tIC0gYm94
TGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmRlc2NlbnQoYmFzZWxpbmVUeXBl
KCkpKSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoaW5jbHVkZU1hcmdpbkZvckJveChi
b3gpKSB7Ci0gICAgICAgIExheW91dFVuaXQgYXNjZW50V2l0aE1hcmdpbiA9IGJveExpbmVTdHls
ZS5mb250TWV0cmljcygpLmFzY2VudChiYXNlbGluZVR5cGUoKSk7Ci0gICAgICAgIExheW91dFVu
aXQgZGVzY2VudFdpdGhNYXJnaW4gPSBib3hMaW5lU3R5bGUuZm9udE1ldHJpY3MoKS5kZXNjZW50
KGJhc2VsaW5lVHlwZSgpKTsKKyAgICAgICAgTGF5b3V0VW5pdCBhc2NlbnRXaXRoTWFyZ2luID0g
Ym94TGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudChiYXNlbGluZVR5
cGUoKSk7CisgICAgICAgIExheW91dFVuaXQgZGVzY2VudFdpdGhNYXJnaW4gPSBib3hMaW5lU3R5
bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuZGVzY2VudChiYXNlbGluZVR5cGUoKSk7CiAg
ICAgICAgIGlmIChib3gucGFyZW50KCkgJiYgIWJveC5yZW5kZXJlcigpLmlzVGV4dE9yTGluZUJy
ZWFrKCkpIHsKICAgICAgICAgICAgIGFzY2VudFdpdGhNYXJnaW4gKz0gYm94LmJveE1vZGVsT2Jq
ZWN0KCktPmJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKSArIGJveC5ib3hNb2RlbE9iamVjdCgpLT5t
YXJnaW5CZWZvcmUoKTsKICAgICAgICAgICAgIGRlc2NlbnRXaXRoTWFyZ2luICs9IGJveC5ib3hN
b2RlbE9iamVjdCgpLT5ib3JkZXJBbmRQYWRkaW5nQWZ0ZXIoKSArIGJveC5ib3hNb2RlbE9iamVj
dCgpLT5tYXJnaW5BZnRlcigpOwpAQCAtODIxLDcgKzgyMSw3IEBAIExheW91dFVuaXQgTGVnYWN5
Um9vdElubGluZUJveDo6dmVydGljYWxQb3NpdGlvbkZvckJveChMZWdhY3lJbmxpbmVCb3gqIGJv
eCwgVmVyCiAgICAgaWYgKHZlcnRpY2FsQWxpZ24gIT0gVmVydGljYWxBbGlnbjo6QmFzZWxpbmUp
IHsKICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudExpbmVTdHlsZSA9IGZpcnN0TGlu
ZSA/IHBhcmVudC0+Zmlyc3RMaW5lU3R5bGUoKSA6IHBhcmVudC0+c3R5bGUoKTsKICAgICAgICAg
Y29uc3QgRm9udENhc2NhZGUmIGZvbnQgPSBwYXJlbnRMaW5lU3R5bGUuZm9udENhc2NhZGUoKTsK
LSAgICAgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gZm9udC5mb250TWV0cmlj
cygpOworICAgICAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MgPSBmb250LmZvbnRN
ZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwogICAgICAgICBpbnQgZm9udFNpemUgPSBmb250LnBpeGVs
U2l6ZSgpOwogCiAgICAgICAgIExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVEaXJlY3Rpb24gPSBwYXJl
bnQtPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2Fs
TGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IGIxM2U5
N2ExMTZhZTNhMTdhZmJjNTAzNmUyNjM5ZmE1YTVhMjMyMmUuLjhlYTE5OWMyOTE4YmIxMTMzYTU0
NGU1YjUyN2I2MTZjZjQ4ZjIxOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcApAQCAtMjQ5Niw3ICsyNDk2LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6YmFz
ZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGZpcnN0TGkKICAg
ICB9CiAKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSBmaXJzdExpbmUgPyBmaXJzdExp
bmVTdHlsZSgpIDogdGhpcy0+c3R5bGUoKTsKLSAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1l
dHJpY3MgPSBzdHlsZS5mb250TWV0cmljcygpOworICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250
TWV0cmljcyA9IHN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwogICAgIHJldHVybiBM
YXlvdXRVbml0IHsgZm9udE1ldHJpY3MuYXNjZW50KGJhc2VsaW5lVHlwZSkgKyAobGluZUhlaWdo
dChmaXJzdExpbmUsIGRpcmVjdGlvbiwgbGluZVBvc2l0aW9uTW9kZSkgLSBmb250TWV0cmljcy5o
ZWlnaHQoKSkgLyAyIH0udG9JbnQoKTsKIH0KIApAQCAtMjU0OCw3ICsyNTQ4LDcgQEAgc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9jazo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5l
RGlyZWN0aW9uTW9kZSBsaW4KICAgICB9CiAKICAgICBpZiAoIWhhdmVOb3JtYWxGbG93Q2hpbGQg
JiYgaGFzTGluZUlmRW1wdHkoKSkgewotICAgICAgICBhdXRvJiBmb250TWV0cmljcyA9IGZpcnN0
TGluZVN0eWxlKCkuZm9udE1ldHJpY3MoKTsKKyAgICAgICAgYXV0byYgZm9udE1ldHJpY3MgPSBm
aXJzdExpbmVTdHlsZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwogICAgICAgICByZXR1
cm4gTGF5b3V0VW5pdCB7IExheW91dFVuaXQoZm9udE1ldHJpY3MuYXNjZW50KCkKICAgICAgICAg
ICAgICsgKGxpbmVIZWlnaHQodHJ1ZSwgbGluZURpcmVjdGlvbiwgUG9zaXRpb25PZkludGVyaW9y
TGluZUJveGVzKSAtIGZvbnRNZXRyaWNzLmhlaWdodCgpKSAvIDIKICAgICAgICAgICAgICsgKGxp
bmVEaXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUgPyBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3Ao
KSA6IGJvcmRlclJpZ2h0KCkgKyBwYWRkaW5nUmlnaHQoKSkpLnRvSW50KCkgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggOTdjNjg2NTNlNWYw
ZWZmNGJhOWEwNzQzOGY0MzliNDEzYjZkMTUwYi4uN2M1NjNjZjlmYzZhOWI3NDk2OTc3ZDgwNWQ1
ODUwYjNlODgxYmMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
Rmxvdy5jcHAKQEAgLTI0MDEsNyArMjQwMSw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojpjb21w
dXRlTG9naWNhbExvY2F0aW9uRm9yRmxvYXQoRmxvYXRpbmdPYmplY3QmIGZsb2F0aW5nT2JqCiB2
b2lkIFJlbmRlckJsb2NrRmxvdzo6YWRqdXN0SW5pdGlhbExldHRlclBvc2l0aW9uKFJlbmRlckJv
eCYgY2hpbGRCb3gsIExheW91dFVuaXQmIGxvZ2ljYWxUb3BPZmZzZXQsIExheW91dFVuaXQmIG1h
cmdpbkJlZm9yZU9mZnNldCkKIHsKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSBmaXJz
dExpbmVTdHlsZSgpOwotICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxl
LmZvbnRNZXRyaWNzKCk7CisgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gc3R5
bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCk7CiAgICAgaWYgKCFmb250TWV0cmljcy5oYXND
YXBIZWlnaHQoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yOTYzLDggKzI5NjMsOCBAQCBzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJsb2NrRmxvdzo6Zmlyc3RMaW5lQmFzZWxpbmUo
KSBjb25zdAogCiAgICAgQVNTRVJUKGZpcnN0Um9vdEJveCgpKTsKICAgICBpZiAoc3R5bGUoKS5p
c0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkpCi0gICAgICAgIHJldHVybiBMYXlvdXRVbml0IHsg
Zmlyc3RSb290Qm94KCktPmxvZ2ljYWxUb3AoKSArIGZpcnN0TGluZVN0eWxlKCkuZm9udE1ldHJp
Y3MoKS5kZXNjZW50KGZpcnN0Um9vdEJveCgpLT5iYXNlbGluZVR5cGUoKSkgfTsKLSAgICByZXR1
cm4gTGF5b3V0VW5pdCB7IGZpcnN0Um9vdEJveCgpLT5sb2dpY2FsVG9wKCkgKyBmaXJzdExpbmVT
dHlsZSgpLmZvbnRNZXRyaWNzKCkuYXNjZW50KGZpcnN0Um9vdEJveCgpLT5iYXNlbGluZVR5cGUo
KSkgfTsKKyAgICAgICAgcmV0dXJuIExheW91dFVuaXQgeyBmaXJzdFJvb3RCb3goKS0+bG9naWNh
bFRvcCgpICsgZmlyc3RMaW5lU3R5bGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5kZXNj
ZW50KGZpcnN0Um9vdEJveCgpLT5iYXNlbGluZVR5cGUoKSkgfTsKKyAgICByZXR1cm4gTGF5b3V0
VW5pdCB7IGZpcnN0Um9vdEJveCgpLT5sb2dpY2FsVG9wKCkgKyBmaXJzdExpbmVTdHlsZSgpLmZv
bnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudChmaXJzdFJvb3RCb3goKS0+YmFzZWxpbmVU
eXBlKCkpIH07CiB9CiAKIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQmxvY2tGbG93
OjppbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVEaXJlY3Rpb24pIGNv
bnN0CkBAIC0yOTk0LDcgKzI5OTQsNyBAQCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRl
ckJsb2NrRmxvdzo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZQogICAgICAg
ICBpZiAoIWhhc0xpbmVzKCkpIHsKICAgICAgICAgICAgIGlmICghaGFzTGluZUlmRW1wdHkoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICAgICAgY29uc3Qg
YXV0byYgZm9udE1ldHJpY3MgPSBmaXJzdExpbmVTdHlsZSgpLmZvbnRNZXRyaWNzKCk7CisgICAg
ICAgICAgICBjb25zdCBhdXRvJiBmb250TWV0cmljcyA9IGZpcnN0TGluZVN0eWxlKCkuZm9udE1l
dHJpY3NPZlByaW1hcnlGb250KCk7CiAgICAgICAgICAgICByZXR1cm4gTGF5b3V0VW5pdCB7IExh
eW91dFVuaXQoZm9udE1ldHJpY3MuYXNjZW50KCkKICAgICAgICAgICAgICAgICArIChsaW5lSGVp
Z2h0KHRydWUsIGxpbmVEaXJlY3Rpb24sIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcykgLSBm
b250TWV0cmljcy5oZWlnaHQoKSkgLyAyCiAgICAgICAgICAgICAgICAgKyAobGluZURpcmVjdGlv
biA9PSBIb3Jpem9udGFsTGluZSA/IGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpIDogYm9yZGVy
UmlnaHQoKSArIHBhZGRpbmdSaWdodCgpKSkudG9JbnQoKSB9OwpAQCAtMzAwNCw3ICszMDA0LDcg
QEAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9ja0Zsb3c6OmlubGluZUJsb2Nr
QmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUKICAgICAgICAgICAgIGJvb2wgaXNGaXJzdExpbmUg
PSBsYXN0Um9vdEJveCgpID09IGZpcnN0Um9vdEJveCgpOwogICAgICAgICAgICAgY29uc3QgYXV0
byYgc3R5bGUgPSBpc0ZpcnN0TGluZSA/IGZpcnN0TGluZVN0eWxlKCkgOiB0aGlzLT5zdHlsZSgp
OwogICAgICAgICAgICAgLy8gTGVnYWN5SW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0luQmxvY2tE
aXJlY3Rpb24gd2lsbCBmbGlwIGxpbmVzIGluIGNhc2Ugb2YgdmVydGljYWxMUiBtb2RlLCBzbyB3
ZSBjYW4gYXNzdW1lIHZlcnRpY2FsUkwgZm9yIG5vdy4KLSAgICAgICAgICAgIGxhc3RCYXNlbGlu
ZSA9IHN0eWxlLmZvbnRNZXRyaWNzKCkuYXNjZW50KGxhc3RSb290Qm94KCktPmJhc2VsaW5lVHlw
ZSgpKQorICAgICAgICAgICAgbGFzdEJhc2VsaW5lID0gc3R5bGUuZm9udE1ldHJpY3NPZlByaW1h
cnlGb250KCkuYXNjZW50KGxhc3RSb290Qm94KCktPmJhc2VsaW5lVHlwZSgpKQogICAgICAgICAg
ICAgICAgICsgKHN0eWxlLmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSA/IGxvZ2ljYWxIZWln
aHQoKSAtIGxhc3RSb290Qm94KCktPmxvZ2ljYWxCb3R0b20oKSA6IGxhc3RSb290Qm94KCktPmxv
Z2ljYWxUb3AoKSk7CiAgICAgICAgIH0KICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09O
VEVYVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRl
ZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmpl
Y3QuY3BwCmluZGV4IGRkYmU5YTQxNmYzZjk3ZWZmMzIzMjAyZDYwODQwZjIwMjc2ODdiNWQuLjcx
ZTc3MzlkMWM5NjRkMmI0NTg5YzUxODcyNDQyZmIzOGQ4OTBkYTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcApAQCAtMjU2LDcgKzI1
Niw3IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50CiAgICAgY29udGV4dC5zZXRTdHJva2VUaGlj
a25lc3MoMik7CiAgICAgY29udGV4dC5zdHJva2VQYXRoKHN0cm9rZVBhdGgpOwogCi0gICAgY29u
c3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gZm9udC5mb250TWV0cmljcygpOworICAgIGNv
bnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IGZvbnQuZm9udE1ldHJpY3NPZlByaW1hcnlG
b250KCk7CiAgICAgZmxvYXQgbGFiZWxYID0gcm91bmRmKHJlcGxhY2VtZW50VGV4dFJlY3QubG9j
YXRpb24oKS54KCkgKyByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdExlZnRUZXh0TWFyZ2luKTsK
ICAgICBmbG9hdCBsYWJlbFkgPSByb3VuZGYocmVwbGFjZW1lbnRUZXh0UmVjdC5sb2NhdGlvbigp
LnkoKSArIChyZXBsYWNlbWVudFRleHRSZWN0LnNpemUoKS5oZWlnaHQoKSAtIGZvbnRNZXRyaWNz
LmhlaWdodCgpKSAvIDIgKyBmb250TWV0cmljcy5hc2NlbnQoKSArIHJlcGxhY2VtZW50VGV4dFJv
dW5kZWRSZWN0VG9wVGV4dE1hcmdpbik7CiAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IocmVwbGFj
ZW1lbnRUZXh0Q29sb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAK
aW5kZXggMDUwMGY4OTVmZTBmODM1YTI0YWExZTdjMzE1MzYwZDJmZWQ4NGU4Yy4uYmIxMzlmMmY1
NzIwNjZiODlhZDRjNmYyZGI5YzUyMjUwN2FjZjY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW1hZ2UuY3BwCkBAIC0yMTAsNyArMjEwLDcgQEAgSW1hZ2VTaXplQ2hhbmdlVHlw
ZSBSZW5kZXJJbWFnZTo6c2V0SW1hZ2VTaXplRm9yQWx0VGV4dChDYWNoZWRJbWFnZSogbmV3SW1h
Z2UgLyoKICAgICAvLyB3ZSBoYXZlIGFuIGFsdCBhbmQgdGhlIHVzZXIgbWVhbnQgaXQgKGl0cyBu
b3QgYSB0ZXh0IHdlIGludmVudGVkKQogICAgIGlmICghbV9hbHRUZXh0LmlzRW1wdHkoKSkgewog
ICAgICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKTsK
LSAgICAgICAgSW50U2l6ZSBwYWRkZWRUZXh0U2l6ZShwYWRkaW5nV2lkdGggKyBzdGQ6Om1pbihj
ZWlsZihmb250LndpZHRoKFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKG1fYWx0VGV4dCwg
c3R5bGUoKSkpKSwgbWF4QWx0VGV4dFdpZHRoKSwgcGFkZGluZ0hlaWdodCArIHN0ZDo6bWluKGZv
bnQuZm9udE1ldHJpY3MoKS5oZWlnaHQoKSwgbWF4QWx0VGV4dEhlaWdodCkpOworICAgICAgICBJ
bnRTaXplIHBhZGRlZFRleHRTaXplKHBhZGRpbmdXaWR0aCArIHN0ZDo6bWluKGNlaWxmKGZvbnQu
d2lkdGgoUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4obV9hbHRUZXh0LCBzdHlsZSgpKSkp
LCBtYXhBbHRUZXh0V2lkdGgpLCBwYWRkaW5nSGVpZ2h0ICsgc3RkOjptaW4oZm9udC5mb250TWV0
cmljc09mUHJpbWFyeUZvbnQoKS5oZWlnaHQoKSwgbWF4QWx0VGV4dEhlaWdodCkpOwogICAgICAg
ICBpbWFnZVNpemUgPSBpbWFnZVNpemUuZXhwYW5kZWRUbyhwYWRkZWRUZXh0U2l6ZSk7CiAgICAg
fQogCkBAIC01MzIsNyArNTMyLDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICAgICAg
ICAgICAgICBTdHJpbmcgdGV4dCA9IGRvY3VtZW50KCkuZGlzcGxheVN0cmluZ01vZGlmaWVkQnlF
bmNvZGluZyhtX2FsdFRleHQpOwogICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9y
KHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5
Q29sb3IpKTsKICAgICAgICAgICAgICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxl
KCkuZm9udENhc2NhZGUoKTsKLSAgICAgICAgICAgICAgICBjb25zdCBGb250TWV0cmljcyYgZm9u
dE1ldHJpY3MgPSBmb250LmZvbnRNZXRyaWNzKCk7CisgICAgICAgICAgICAgICAgY29uc3QgRm9u
dE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gZm9udC5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsK
ICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGFzY2VudCA9IGZvbnRNZXRyaWNzLmFzY2VudCgp
OwogICAgICAgICAgICAgICAgIExheW91dFBvaW50IGFsdFRleHRPZmZzZXQgPSBwYWludE9mZnNl
dDsKICAgICAgICAgICAgICAgICBhbHRUZXh0T2Zmc2V0Lm1vdmUobGVmdEJvcmRlciArIGxlZnRQ
YWQgKyAocGFkZGluZ1dpZHRoIC8gMikgLSBtaXNzaW5nSW1hZ2VCb3JkZXJXaWR0aCwgdG9wQm9y
ZGVyICsgdG9wUGFkICsgYXNjZW50ICsgKHBhZGRpbmdIZWlnaHQgLyAyKSAtIG1pc3NpbmdJbWFn
ZUJvcmRlcldpZHRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAK
aW5kZXggNmE5YTM5MTAwM2YyZTAwOGIyYWVhY2Y3N2YyNGY4N2FkM2VhNTIxZS4uMGEwOWY0OGJj
ZTY1MTVjMDg5NzZhNjg0M2RjMDIxMWZiZTcxYmEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcklubGluZS5jcHAKQEAgLTIxMCw3ICsyMTAsNyBAQCBib29sIFJlbmRlcklubGlu
ZTo6bWF5QWZmZWN0TGF5b3V0KCkgY29uc3QKICAgICAgICAgfHwgKHBhcmVudFJlbmRlcklubGlu
ZSAmJiBwYXJlbnRTdHlsZS0+dmVydGljYWxBbGlnbigpICE9IFZlcnRpY2FsQWxpZ246OkJhc2Vs
aW5lKQogICAgICAgICB8fCBzdHlsZSgpLnZlcnRpY2FsQWxpZ24oKSAhPSBWZXJ0aWNhbEFsaWdu
OjpCYXNlbGluZQogICAgICAgICB8fCBzdHlsZSgpLnRleHRFbXBoYXNpc01hcmsoKSAhPSBUZXh0
RW1waGFzaXNNYXJrOjpOb25lCi0gICAgICAgIHx8IChjaGVja0ZvbnRzICYmICghcGFyZW50U3R5
bGUtPmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKS5oYXNJZGVudGljYWxBc2NlbnREZXNjZW50
QW5kTGluZUdhcChzdHlsZSgpLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKSkKKyAgICAgICAg
fHwgKGNoZWNrRm9udHMgJiYgKCFwYXJlbnRTdHlsZS0+Zm9udENhc2NhZGUoKS5mb250TWV0cmlj
c09mUHJpbWFyeUZvbnQoKS5oYXNJZGVudGljYWxBc2NlbnREZXNjZW50QW5kTGluZUdhcChzdHls
ZSgpLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkpCiAgICAgICAgIHx8
IHBhcmVudFN0eWxlLT5saW5lSGVpZ2h0KCkgIT0gc3R5bGUoKS5saW5lSGVpZ2h0KCkpKQogICAg
ICAgICB8fCBoYXNIYXJkTGluZUJyZWFrQ2hpbGRPbmx5OwogCkBAIC0yMTgsNyArMjE4LDcgQEAg
Ym9vbCBSZW5kZXJJbmxpbmU6Om1heUFmZmVjdExheW91dCgpIGNvbnN0CiAgICAgICAgIC8vIEhh
dmUgdG8gY2hlY2sgdGhlIGZpcnN0IGxpbmUgc3R5bGUgYXMgd2VsbC4KICAgICAgICAgcGFyZW50
U3R5bGUgPSAmcGFyZW50KCktPmZpcnN0TGluZVN0eWxlKCk7CiAgICAgICAgIGF1dG8mIGNoaWxk
U3R5bGUgPSBmaXJzdExpbmVTdHlsZSgpOwotICAgICAgICBtYXlBZmZlY3RMYXlvdXQgPSAhcGFy
ZW50U3R5bGUtPmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKS5oYXNJZGVudGljYWxBc2NlbnRE
ZXNjZW50QW5kTGluZUdhcChjaGlsZFN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKSkK
KyAgICAgICAgbWF5QWZmZWN0TGF5b3V0ID0gIXBhcmVudFN0eWxlLT5mb250Q2FzY2FkZSgpLmZv
bnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmhhc0lkZW50aWNhbEFzY2VudERlc2NlbnRBbmRMaW5l
R2FwKGNoaWxkU3R5bGUuZm9udENhc2NhZGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKSkK
ICAgICAgICAgICAgIHx8IGNoaWxkU3R5bGUudmVydGljYWxBbGlnbigpICE9IFZlcnRpY2FsQWxp
Z246OkJhc2VsaW5lCiAgICAgICAgICAgICB8fCBwYXJlbnRTdHlsZS0+bGluZUhlaWdodCgpICE9
IGNoaWxkU3R5bGUubGluZUhlaWdodCgpOwogICAgIH0KQEAgLTg1NSw3ICs4NTUsNyBAQCBMYXlv
dXRVbml0IFJlbmRlcklubGluZTo6bGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVj
dGlvbk1vZGUgLypkaXJlY3RpbwogTGF5b3V0VW5pdCBSZW5kZXJJbmxpbmU6OmJhc2VsaW5lUG9z
aXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJl
Y3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBj
b25zdAogewogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IGZpcnN0TGluZSA/IGZpcnN0
TGluZVN0eWxlKCkgOiB0aGlzLT5zdHlsZSgpOwotICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250
TWV0cmljcyA9IHN0eWxlLmZvbnRNZXRyaWNzKCk7CisgICAgY29uc3QgRm9udE1ldHJpY3MmIGZv
bnRNZXRyaWNzID0gc3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCk7CiAgICAgcmV0dXJu
IExheW91dFVuaXQgeyAoZm9udE1ldHJpY3MuYXNjZW50KGJhc2VsaW5lVHlwZSkgKyAobGluZUhl
aWdodChmaXJzdExpbmUsIGRpcmVjdGlvbiwgbGluZVBvc2l0aW9uTW9kZSkgLSBmb250TWV0cmlj
cy5oZWlnaHQoKSkgLyAyKS50b0ludCgpIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpbmVCcmVhay5jcHAKaW5kZXggYTIzOTQ2NTE1YThlZGE3Yzg3OWEzMmFiOTIw
ZjlmYmMyYzc0NWE1NS4uZjc1ZWU3OWVmNzcyZDIzYjA0NGFlMmFlMzk0NzBkMTk5OWU4NWNkZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKQEAgLTgw
LDcgKzgwLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJMaW5lQnJlYWs6OmxpbmVIZWlnaHQoYm9vbCBm
aXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIC8qZGlyZWMKIExheW91dFVuaXQgUmVuZGVyTGlu
ZUJyZWFrOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wg
Zmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUg
bGluZVBvc2l0aW9uTW9kZSkgY29uc3QKIHsKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUg
PSBmaXJzdExpbmUgPyBmaXJzdExpbmVTdHlsZSgpIDogdGhpcy0+c3R5bGUoKTsKLSAgICBjb25z
dCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MgPSBzdHlsZS5mb250TWV0cmljcygpOworICAgIGNv
bnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5
Rm9udCgpOwogICAgIHJldHVybiBMYXlvdXRVbml0IHsgKGZvbnRNZXRyaWNzLmFzY2VudChiYXNl
bGluZVR5cGUpICsgKGxpbmVIZWlnaHQoZmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlv
bk1vZGUpIC0gZm9udE1ldHJpY3MuaGVpZ2h0KCkpIC8gMikudG9JbnQoKSB9OwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXggMmU5YjU4NTZkMjhj
OTRlNzZjNDliMzc5YmZjNWI4Y2FmZDQ3OGQ2My4uYTliMjJjNWU1NWVhZmM0ZDM4ZGMwNmM1MDY3
YjYxZjU3YjljZjJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94
LmNwcApAQCAtMzc4LDcgKzM3OCw3IEBAIHN0YXRpYyBMYXlvdXRTaXplIGl0ZW1PZmZzZXRGb3JB
bGlnbm1lbnQoVGV4dFJ1biB0ZXh0UnVuLCBjb25zdCBSZW5kZXJTdHlsZSogaXRlCiAgICAgaWYg
KGFjdHVhbEFsaWdubWVudCA9PSBUZXh0QWxpZ25Nb2RlOjpTdGFydCB8fCBhY3R1YWxBbGlnbm1l
bnQgPT0gVGV4dEFsaWduTW9kZTo6SnVzdGlmeSkKICAgICAgICAgYWN0dWFsQWxpZ25tZW50ID0g
aXRlbVN0eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBUZXh0QWxpZ25Nb2RlOjpMZWZ0
IDogVGV4dEFsaWduTW9kZTo6UmlnaHQ7CiAKLSAgICBMYXlvdXRTaXplIG9mZnNldCA9IExheW91
dFNpemUoMCwgaXRlbUZvbnQuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSk7CisgICAgTGF5b3V0U2l6
ZSBvZmZzZXQgPSBMYXlvdXRTaXplKDAsIGl0ZW1Gb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9u
dCgpLmFzY2VudCgpKTsKICAgICBpZiAoYWN0dWFsQWxpZ25tZW50ID09IFRleHRBbGlnbk1vZGU6
OlJpZ2h0IHx8IGFjdHVhbEFsaWdubWVudCA9PSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRSaWdodCkg
ewogICAgICAgICBmbG9hdCB0ZXh0V2lkdGggPSBpdGVtRm9udC53aWR0aCh0ZXh0UnVuKTsKICAg
ICAgICAgb2Zmc2V0LnNldFdpZHRoKGl0ZW1Cb3VkaW5nQm94LndpZHRoKCkgLSB0ZXh0V2lkdGgg
LSBvcHRpb25zU3BhY2luZ0hvcml6b250YWwpOwpAQCAtNzA0LDcgKzcwNCw3IEBAIHZvaWQgUmVu
ZGVyTGlzdEJveDo6c2Nyb2xsVG8oaW50IG5ld09mZnNldCkKIAogTGF5b3V0VW5pdCBSZW5kZXJM
aXN0Qm94OjppdGVtSGVpZ2h0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3R5bGUoKS5mb250TWV0
cmljcygpLmhlaWdodCgpICsgcm93U3BhY2luZzsKKyAgICByZXR1cm4gc3R5bGUoKS5mb250TWV0
cmljc09mUHJpbWFyeUZvbnQoKS5oZWlnaHQoKSArIHJvd1NwYWNpbmc7CiB9CiAKIGludCBSZW5k
ZXJMaXN0Qm94Ojp2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAppbmRleCAwMWU1ZGNlOGU3NTJmMzkw
MThhYzg2NzFmNjY4NWVjMjYwYjg0ZDE2Li44ZjcxNWE0NjFjZmUwYTFmYTE4ZTE2MmZjYmJmOTQy
YTdjZGYwMTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dE1hcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJr
ZXIuY3BwCkBAIC0xNjQ4LDcgKzE2NDgsNyBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBhaW50
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZQogICAg
ICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtbWFya2VyUmVjdC54KCksIC1tYXJrZXJSZWN0Lm1heFko
KSk7CiAgICAgfQogCi0gICAgRmxvYXRQb2ludCB0ZXh0T3JpZ2luID0gRmxvYXRQb2ludChtYXJr
ZXJSZWN0LngoKSwgbWFya2VyUmVjdC55KCkgKyBzdHlsZSgpLmZvbnRNZXRyaWNzKCkuYXNjZW50
KCkpOworICAgIEZsb2F0UG9pbnQgdGV4dE9yaWdpbiA9IEZsb2F0UG9pbnQobWFya2VyUmVjdC54
KCksIG1hcmtlclJlY3QueSgpICsgc3R5bGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5h
c2NlbnQoKSk7CiAgICAgdGV4dE9yaWdpbiA9IHJvdW5kUG9pbnRUb0RldmljZVBpeGVscyhMYXlv
dXRQb2ludCh0ZXh0T3JpZ2luKSwgZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCBzdHls
ZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSk7CiAgICAgY29udGV4dC5kcmF3VGV4dChzdHls
ZSgpLmZvbnRDYXNjYWRlKCksIHRleHRSdW4oKSwgdGV4dE9yaWdpbik7CiB9CkBAIC0xNzgwLDcg
KzE3ODAsNyBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OmxheW91dCgpCiAgICAgICAgIHNldEhl
aWdodChtX2ltYWdlLT5pbWFnZVNpemUodGhpcywgc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpLmhl
aWdodCgpKTsKICAgICB9IGVsc2UgewogICAgICAgICBzZXRMb2dpY2FsV2lkdGgobWluUHJlZmVy
cmVkTG9naWNhbFdpZHRoKCkpOwotICAgICAgICBzZXRMb2dpY2FsSGVpZ2h0KHN0eWxlKCkuZm9u
dE1ldHJpY3MoKS5oZWlnaHQoKSk7CisgICAgICAgIHNldExvZ2ljYWxIZWlnaHQoc3R5bGUoKS5m
b250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5oZWlnaHQoKSk7CiAgICAgfQogCiAgICAgc2V0TWFy
Z2luU3RhcnQoMCk7CkBAIC0xODIwLDcgKzE4MjAsNyBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6
OnVwZGF0ZUNvbnRlbnQoKQogICAgIGlmIChpc0ltYWdlKCkpIHsKICAgICAgICAgLy8gRklYTUU6
IFRoaXMgaXMgYSBzb21ld2hhdCBhcmJpdHJhcnkgd2lkdGguICBHZW5lcmF0ZWQgaW1hZ2VzIGZv
ciBtYXJrZXJzIHJlYWxseSB3b24ndCBiZWNvbWUgcGFydGljdWxhcmx5IHVzZWZ1bAogICAgICAg
ICAvLyB1bnRpbCB3ZSBzdXBwb3J0IHRoZSBDU1MzIG1hcmtlciBwc2V1ZG9jbGFzcyB0byBhbGxv
dyBjb250cm9sIG92ZXIgdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIG1hcmtlciBib3guCi0g
ICAgICAgIExheW91dFVuaXQgYnVsbGV0V2lkdGggPSBzdHlsZSgpLmZvbnRNZXRyaWNzKCkuYXNj
ZW50KCkgLyAyX2x1OworICAgICAgICBMYXlvdXRVbml0IGJ1bGxldFdpZHRoID0gc3R5bGUoKS5m
b250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoKSAvIDJfbHU7CiAgICAgICAgIExheW91
dFNpemUgZGVmYXVsdEJ1bGxldFNpemUoYnVsbGV0V2lkdGgsIGJ1bGxldFdpZHRoKTsKICAgICAg
ICAgTGF5b3V0U2l6ZSBpbWFnZVNpemUgPSBjYWxjdWxhdGVJbWFnZUludHJpbnNpY0RpbWVuc2lv
bnMobV9pbWFnZS5nZXQoKSwgZGVmYXVsdEJ1bGxldFNpemUsIERvTm90U2NhbGVCeUVmZmVjdGl2
ZVpvb20pOwogICAgICAgICBtX2ltYWdlLT5zZXRDb250YWluZXJDb250ZXh0Rm9yUmVuZGVyZXIo
KnRoaXMsIGltYWdlU2l6ZSwgc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpOwpAQCAtMTg2Nyw3ICsx
ODY3LDcgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdp
ZHRocygpCiAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDaXJjbGU6CiAgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpEaXNjOgogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6U3F1YXJlOgotICAgICAgICBs
b2dpY2FsV2lkdGggPSAoZm9udC5mb250TWV0cmljcygpLmFzY2VudCgpICogMiAvIDMgKyAxKSAv
IDIgKyAyOworICAgICAgICBsb2dpY2FsV2lkdGggPSAoZm9udC5mb250TWV0cmljc09mUHJpbWFy
eUZvbnQoKS5hc2NlbnQoKSAqIDIgLyAzICsgMSkgLyAyICsgMjsKICAgICAgICAgYnJlYWs7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgaWYgKCFtX3RleHRXaXRoU3VmZml4LmlzRW1wdHkoKSkKQEAg
LTE4ODUsNyArMTg4NSw3IEBAIHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6Y29tcHV0ZVByZWZlcnJl
ZExvZ2ljYWxXaWR0aHMoKQogCiB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnVwZGF0ZU1hcmdpbnMo
KQogewotICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxlKCkuZm9udE1l
dHJpY3MoKTsKKyAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MgPSBzdHlsZSgpLmZv
bnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwogCiAgICAgTGF5b3V0VW5pdCBtYXJnaW5TdGFydDsK
ICAgICBMYXlvdXRVbml0IG1hcmdpbkVuZDsKQEAgLTE5NjEsNyArMTk2MSw3IEBAIEZsb2F0UmVj
dCBSZW5kZXJMaXN0TWFya2VyOjpyZWxhdGl2ZU1hcmtlclJlY3QoKQogICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6Q2lyY2xlOgogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6U3F1YXJlOiB7CiAgICAg
ICAgIC8vIEZJWE1FOiBBcmUgdGhlc2UgcGFydGljdWxhciByb3VuZGluZyBydWxlcyBuZWNlc3Nh
cnk/Ci0gICAgICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxlKCkuZm9u
dE1ldHJpY3MoKTsKKyAgICAgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gc3R5
bGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsKICAgICAgICAgaW50IGFzY2VudCA9IGZv
bnRNZXRyaWNzLmFzY2VudCgpOwogICAgICAgICBpbnQgYnVsbGV0V2lkdGggPSAoYXNjZW50ICog
MiAvIDMgKyAxKSAvIDI7CiAgICAgICAgIHJlbGF0aXZlUmVjdCA9IEZsb2F0UmVjdCgxLCAzICog
KGFzY2VudCAtIGFzY2VudCAqIDIgLyAzKSAvIDIsIGJ1bGxldFdpZHRoLCBidWxsZXRXaWR0aCk7
CkBAIC0xOTcxLDcgKzE5NzEsNyBAQCBGbG9hdFJlY3QgUmVuZGVyTGlzdE1hcmtlcjo6cmVsYXRp
dmVNYXJrZXJSZWN0KCkKICAgICAgICAgaWYgKG1fdGV4dFdpdGhTdWZmaXguaXNFbXB0eSgpKQog
ICAgICAgICAgICAgcmV0dXJuIEZsb2F0UmVjdCgpOwogICAgICAgICBhdXRvJiBmb250ID0gc3R5
bGUoKS5mb250Q2FzY2FkZSgpOwotICAgICAgICByZWxhdGl2ZVJlY3QgPSBGbG9hdFJlY3QoMCwg
MCwgZm9udC53aWR0aCh0ZXh0UnVuKCkpLCBmb250LmZvbnRNZXRyaWNzKCkuaGVpZ2h0KCkpOwor
ICAgICAgICByZWxhdGl2ZVJlY3QgPSBGbG9hdFJlY3QoMCwgMCwgZm9udC53aWR0aCh0ZXh0UnVu
KCkpLCBmb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmhlaWdodCgpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUnVieVJ1bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5j
cHAKaW5kZXggNWExMTVmNTcxY2EyNjg2N2NlNmFkMDIzNjI4NmUyNDQ4ZTlmZTViYi4uYTViODEy
MWFlZTFhMThmNjJkYTljOWQ3ZmY0YjJmODFlN2RhMTEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSdWJ5UnVuLmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgUmVuZGVy
UnVieVJ1bjo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBh
Z2VIZWlnaHQpCiAgICAgICAgIC8vIEJvcG9tb2ZvLiBXZSBuZWVkIHRvIG1vdmUgdGhlIFJlbmRl
clJ1YnlUZXh0IG92ZXIgdG8gdGhlIHJpZ2h0IHNpZGUgYW5kIGNlbnRlciBpdAogICAgICAgICAv
LyB2ZXJ0aWNhbGx5IHJlbGF0aXZlIHRvIHRoZSBiYXNlLgogICAgICAgICBjb25zdCBGb250Q2Fz
Y2FkZSYgZm9udCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKTsKLSAgICAgICAgZmxvYXQgZGlzdGFu
Y2VCZXR3ZWVuQmFzZSA9IHN0ZDo6bWF4KGZvbnQubGV0dGVyU3BhY2luZygpLCAyLjBmICogcnQt
PnN0eWxlKCkuZm9udENhc2NhZGUoKS5mb250TWV0cmljcygpLmhlaWdodCgpKTsKKyAgICAgICAg
ZmxvYXQgZGlzdGFuY2VCZXR3ZWVuQmFzZSA9IHN0ZDo6bWF4KGZvbnQubGV0dGVyU3BhY2luZygp
LCAyLjBmICogcnQtPnN0eWxlKCkuZm9udENhc2NhZGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZv
bnQoKS5oZWlnaHQoKSk7CiAgICAgICAgIHNldFdpZHRoKHdpZHRoKCkgKyBkaXN0YW5jZUJldHdl
ZW5CYXNlIC0gZm9udC5sZXR0ZXJTcGFjaW5nKCkpOwogICAgICAgICBpZiAoUmVuZGVyUnVieUJh
c2UqIHJiID0gcnVieUJhc2UoKSkgewogICAgICAgICAgICAgTGF5b3V0VW5pdCBmaXJzdExpbmVU
b3A7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcAppbmRleCBj
YTViNzQwZDkwNDRiZDY1ZTM2NmI1N2Q3NmMzNDI4YzNmOWVlM2Y2Li4zNGFkMmI4ZmQ0NGZhZTY5
OGU2NzkzYWRkYmI4YThiNzk0YzgxNGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9U
ZXh0Qm94UGFpbnRlci5jcHAKQEAgLTMyNCw3ICszMjQsNyBAQCB2b2lkIFRleHRCb3hQYWludGVy
OjpwYWludEZvcmVncm91bmQoY29uc3QgU3R5bGVkTWFya2VkVGV4dCYgbWFya2VkVGV4dCkKICAg
ICBmbG9hdCBlbXBoYXNpc01hcmtPZmZzZXQgPSAwOwogICAgIGNvbnN0IEF0b21TdHJpbmcmIGVt
cGhhc2lzTWFyayA9IG1fZW1waGFzaXNNYXJrRXhpc3RzQW5kSXNBYm92ZSA/IG1fc3R5bGUudGV4
dEVtcGhhc2lzTWFya1N0cmluZygpIDogbnVsbEF0b20oKTsKICAgICBpZiAoIWVtcGhhc2lzTWFy
ay5pc0VtcHR5KCkpCi0gICAgICAgIGVtcGhhc2lzTWFya09mZnNldCA9ICptX2VtcGhhc2lzTWFy
a0V4aXN0c0FuZElzQWJvdmUgPyAtZm9udC5mb250TWV0cmljcygpLmFzY2VudCgpIC0gZm9udC5l
bXBoYXNpc01hcmtEZXNjZW50KGVtcGhhc2lzTWFyaykgOiBmb250LmZvbnRNZXRyaWNzKCkuZGVz
Y2VudCgpICsgZm9udC5lbXBoYXNpc01hcmtBc2NlbnQoZW1waGFzaXNNYXJrKTsKKyAgICAgICAg
ZW1waGFzaXNNYXJrT2Zmc2V0ID0gKm1fZW1waGFzaXNNYXJrRXhpc3RzQW5kSXNBYm92ZSA/IC1m
b250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudCgpIC0gZm9udC5lbXBoYXNpc01h
cmtEZXNjZW50KGVtcGhhc2lzTWFyaykgOiBmb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgp
LmRlc2NlbnQoKSArIGZvbnQuZW1waGFzaXNNYXJrQXNjZW50KGVtcGhhc2lzTWFyayk7CiAKICAg
ICBUZXh0UGFpbnRlciB0ZXh0UGFpbnRlciB7IGNvbnRleHQgfTsKICAgICB0ZXh0UGFpbnRlci5z
ZXRGb250KGZvbnQpOwpAQCAtNDgwLDcgKzQ4MCw3IEBAIHZvaWQgVGV4dEJveFBhaW50ZXI6OnBh
aW50Q29tcG9zaXRpb25VbmRlcmxpbmUoY29uc3QgQ29tcG9zaXRpb25VbmRlcmxpbmUmIHVuZGVy
CiAgICAgLy8gQWxsIG90aGVyIG1hcmtlZCB0ZXh0IHVuZGVybGluZXMgYXJlIDFweCB0aGljay4K
ICAgICAvLyBJZiB0aGVyZSdzIG5vdCBlbm91Z2ggc3BhY2UgdGhlIHVuZGVybGluZSB3aWxsIHRv
dWNoIG9yIG92ZXJsYXAgY2hhcmFjdGVycy4KICAgICBpbnQgbGluZVRoaWNrbmVzcyA9IDE7Ci0g
ICAgaW50IGJhc2VsaW5lID0gbV9zdHlsZS5mb250TWV0cmljcygpLmFzY2VudCgpOworICAgIGlu
dCBiYXNlbGluZSA9IG1fc3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50KCk7
CiAgICAgaWYgKHVuZGVybGluZS50aGljayAmJiB0ZXh0Qm94KCkubG9naWNhbEhlaWdodCgpIC0g
YmFzZWxpbmUgPj0gMikKICAgICAgICAgbGluZVRoaWNrbmVzcyA9IDI7CiAKQEAgLTU5MCw3ICs1
OTAsNyBAQCBGbG9hdFJlY3QgVGV4dEJveFBhaW50ZXI6OmNvbXB1dGVQYWludFJlY3QoY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogRmxvYXRSZWN0IFRleHRCb3hQYWludGVyOjpjYWxj
dWxhdGVEb2N1bWVudE1hcmtlckJvdW5kcyhjb25zdCBJbmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0
ZXJhdG9yJiB0ZXh0Qm94LCBjb25zdCBNYXJrZWRUZXh0JiBtYXJrZWRUZXh0KQogewogICAgIGF1
dG8mIGZvbnQgPSB0ZXh0Qm94LT5mb250Q2FzY2FkZSgpOwotICAgIGF1dG8gYXNjZW50ID0gZm9u
dC5mb250TWV0cmljcygpLmFzY2VudCgpOworICAgIGF1dG8gYXNjZW50ID0gZm9udC5mb250TWV0
cmljc09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoKTsKICAgICBhdXRvIGZvbnRTaXplID0gc3RkOjpt
aW4oc3RkOjptYXgoZm9udC5zaXplKCksIDEwLjBmKSwgNDAuMGYpOwogICAgIGF1dG8geSA9IGFz
Y2VudCArIDAuMTEwMzUgKiBmb250U2l6ZTsKICAgICBhdXRvIGhlaWdodCA9IDAuMTMyNDcgKiBm
b250U2l6ZTsKQEAgLTYyMSw3ICs2MjEsNyBAQCBjb25zdCBGb250Q2FzY2FkZSYgVGV4dEJveFBh
aW50ZXI6OmZvbnRDYXNjYWRlKCkgY29uc3QKIAogRmxvYXRQb2ludCBUZXh0Qm94UGFpbnRlcjo6
dGV4dE9yaWdpbkZyb21QYWludFJlY3QoY29uc3QgRmxvYXRSZWN0JiBwYWludFJlY3QpIGNvbnN0
CiB7Ci0gICAgRmxvYXRQb2ludCB0ZXh0T3JpZ2luIHsgcGFpbnRSZWN0LngoKSwgcGFpbnRSZWN0
LnkoKSArIGZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSB9OworICAgIEZsb2F0
UG9pbnQgdGV4dE9yaWdpbiB7IHBhaW50UmVjdC54KCksIHBhaW50UmVjdC55KCkgKyBmb250Q2Fz
Y2FkZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudCgpIH07CiAgICAgaWYgKHRl
eHRCb3goKS5pc0NvbWJpbmVkVGV4dCgpKSB7CiAgICAgICAgIGlmIChhdXRvIG5ld09yaWdpbiA9
IGRvd25jYXN0PFJlbmRlckNvbWJpbmVUZXh0PihtX3JlbmRlcmVyKS5jb21wdXRlVGV4dE9yaWdp
bihwYWludFJlY3QpKQogICAgICAgICAgICAgdGV4dE9yaWdpbiA9IG5ld09yaWdpbi52YWx1ZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFp
bnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVy
LmNwcAppbmRleCA0ZmY0ODE2ZmM0M2VjZTc4ZWU4OTc3MWUxNmQ4NTVmYTA1ZmZkMWM5Li4xNjMx
OTgxYjZjYTlmZjNkODE1ZGRmYzFhMzBlNjg5YjIxZjBmNjE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcApAQCAtMjA0LDcgKzIw
NCw3IEBAIFRleHREZWNvcmF0aW9uUGFpbnRlcjo6VGV4dERlY29yYXRpb25QYWludGVyKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgT3B0aW9uU2V0CiAvLyBQYWludCB0ZXh0LXNoYWRvdywgdW5k
ZXJsaW5lLCBvdmVybGluZQogdm9pZCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50QmFja2dy
b3VuZERlY29yYXRpb25zKGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IEZsb2F0UG9pbnQm
IHRleHRPcmlnaW4sIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbikKIHsKLSAgICBjb25zdCBh
dXRvJiBmb250TWV0cmljcyA9IG1fbGluZVN0eWxlLmZvbnRNZXRyaWNzKCk7CisgICAgY29uc3Qg
YXV0byYgZm9udE1ldHJpY3MgPSBtX2xpbmVTdHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQo
KTsKICAgICBmbG9hdCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcyA9IG1fbGluZVN0eWxlLnRleHRE
ZWNvcmF0aW9uVGhpY2tuZXNzKCkucmVzb2x2ZShtX2xpbmVTdHlsZS5jb21wdXRlZEZvbnRTaXpl
KCksIGZvbnRNZXRyaWNzKTsKICAgICBGbG9hdFBvaW50IGxvY2FsT3JpZ2luID0gYm94T3JpZ2lu
OwogCkBAIC0yNzksNyArMjc5LDcgQEAgdm9pZCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50
QmFja2dyb3VuZERlY29yYXRpb25zKGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGMKICAgICAgICAg
aWYgKG1fZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUp
KSB7CiAgICAgICAgICAgICBmbG9hdCB0ZXh0RGVjb3JhdGlvbkJhc2VGb250U2l6ZSA9IDE2Owog
ICAgICAgICAgICAgYXV0byBkZWZhdWx0R2FwID0gbV9saW5lU3R5bGUuY29tcHV0ZWRGb250U2l6
ZSgpIC8gdGV4dERlY29yYXRpb25CYXNlRm9udFNpemU7Ci0gICAgICAgICAgICBmbG9hdCBvZmZz
ZXQgPSBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KG1fbGluZVN0eWxlLnRleHRVbmRlcmxpbmVQb3Np
dGlvbigpLCBtX2xpbmVTdHlsZS50ZXh0VW5kZXJsaW5lT2Zmc2V0KCksIG1fbGluZVN0eWxlLmZv
bnRNZXRyaWNzKCksIG1fdGV4dEJveCwgZGVmYXVsdEdhcCk7CisgICAgICAgICAgICBmbG9hdCBv
ZmZzZXQgPSBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KG1fbGluZVN0eWxlLnRleHRVbmRlcmxpbmVQ
b3NpdGlvbigpLCBtX2xpbmVTdHlsZS50ZXh0VW5kZXJsaW5lT2Zmc2V0KCksIG1fbGluZVN0eWxl
LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLCBtX3RleHRCb3gsIGRlZmF1bHRHYXApOwogICAg
ICAgICAgICAgZmxvYXQgd2F2eU9mZnNldCA9IG1fc3R5bGVzLnVuZGVybGluZVN0eWxlID09IFRl
eHREZWNvcmF0aW9uU3R5bGU6OldhdnkgPyBtX3dhdnlPZmZzZXQgOiAwOwogICAgICAgICAgICAg
RmxvYXRSZWN0IHJlY3QobG9jYWxPcmlnaW4sIEZsb2F0U2l6ZShtX3dpZHRoLCB0ZXh0RGVjb3Jh
dGlvblRoaWNrbmVzcykpOwogICAgICAgICAgICAgcmVjdC5tb3ZlKDAsIG9mZnNldCArIHdhdnlP
ZmZzZXQpOwpAQCAtMzEwLDEzICszMTAsMTMgQEAgdm9pZCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6
OnBhaW50Rm9yZWdyb3VuZERlY29yYXRpb25zKGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWcKICAg
ICBpZiAoIW1fZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpMaW5lVGhy
b3VnaCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZsb2F0IHRleHREZWNvcmF0aW9uVGhpY2tu
ZXNzID0gbV9saW5lU3R5bGUudGV4dERlY29yYXRpb25UaGlja25lc3MoKS5yZXNvbHZlKG1fbGlu
ZVN0eWxlLmNvbXB1dGVkRm9udFNpemUoKSwgbV9saW5lU3R5bGUuZm9udE1ldHJpY3MoKSk7Cisg
ICAgZmxvYXQgdGV4dERlY29yYXRpb25UaGlja25lc3MgPSBtX2xpbmVTdHlsZS50ZXh0RGVjb3Jh
dGlvblRoaWNrbmVzcygpLnJlc29sdmUobV9saW5lU3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpLCBt
X2xpbmVTdHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKSk7CiAgICAgcGFpbnRMaW5lVGhy
b3VnaChtX3N0eWxlcy5saW5ldGhyb3VnaENvbG9yLCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcywg
Ym94T3JpZ2luKTsKIH0KIAogdm9pZCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50TGluZVRo
cm91Z2goY29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCB0aGlja25lc3MsIGNvbnN0IEZsb2F0UG9p
bnQmIGxvY2FsT3JpZ2luKQogewotICAgIGNvbnN0IGF1dG8mIGZvbnRNZXRyaWNzID0gbV9saW5l
U3R5bGUuZm9udE1ldHJpY3MoKTsKKyAgICBjb25zdCBhdXRvJiBmb250TWV0cmljcyA9IG1fbGlu
ZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwogICAgIEZsb2F0UmVjdCByZWN0KGxv
Y2FsT3JpZ2luLCBGbG9hdFNpemUobV93aWR0aCwgdGhpY2tuZXNzKSk7CiAgICAgZmxvYXQgYXV0
b1RleHREZWNvcmF0aW9uVGhpY2tuZXNzID0gVGV4dERlY29yYXRpb25UaGlja25lc3M6OmNyZWF0
ZVdpdGhBdXRvKCkucmVzb2x2ZShtX2xpbmVTdHlsZS5jb21wdXRlZEZvbnRTaXplKCksIGZvbnRN
ZXRyaWNzKTsKICAgICBhdXRvIGNlbnRlciA9IDIgKiBmb250TWV0cmljcy5mbG9hdEFzY2VudCgp
IC8gMyArIGF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyAvIDI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1RleHRQYWludGVyLmNwcAppbmRleCBhNTllZWQ0NGY0YWEzNDQ2MzcyOGZiNmUyNjEx
NWQ4OTVlNTQ0NzljLi5mZmE3YTdhMTRjN2FiYTkwOGJmZmNiNmZkNTAxZTEyN2U5MDM4YWMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAKQEAgLTE5OCw3ICsxOTgs
NyBAQCB2b2lkIFRleHRQYWludGVyOjpwYWludFRleHRBbmRFbXBoYXNpc01hcmtzSWZOZWVkZWQo
Y29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgY29ucwogICAgIHVwZGF0ZUdyYXBoaWNzQ29udGV4dCht
X2NvbnRleHQsIHBhaW50U3R5bGUsIFVzZUVtcGhhc2lzTWFya0NvbG9yKTsKICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8VGV4dFJ1bj4gb2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXJUZXh0UnVu
KFN0cmluZ1ZpZXcoJm9iamVjdFJlcGxhY2VtZW50Q2hhcmFjdGVyLCAxKSk7CiAgICAgY29uc3Qg
VGV4dFJ1biYgZW1waGFzaXNNYXJrVGV4dFJ1biA9IG1fY29tYmluZWRUZXh0ID8gb2JqZWN0UmVw
bGFjZW1lbnRDaGFyYWN0ZXJUZXh0UnVuLmdldCgpIDogdGV4dFJ1bjsKLSAgICBGbG9hdFBvaW50
IGVtcGhhc2lzTWFya1RleHRPcmlnaW4gPSBtX2NvbWJpbmVkVGV4dCA/IEZsb2F0UG9pbnQoYm94
T3JpZ2luLngoKSArIGJveFJlY3Qud2lkdGgoKSAvIDIsIGJveE9yaWdpbi55KCkgKyBtX2ZvbnQt
PmZvbnRNZXRyaWNzKCkuYXNjZW50KCkpIDogdGV4dE9yaWdpbjsKKyAgICBGbG9hdFBvaW50IGVt
cGhhc2lzTWFya1RleHRPcmlnaW4gPSBtX2NvbWJpbmVkVGV4dCA/IEZsb2F0UG9pbnQoYm94T3Jp
Z2luLngoKSArIGJveFJlY3Qud2lkdGgoKSAvIDIsIGJveE9yaWdpbi55KCkgKyBtX2ZvbnQtPmZv
bnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudCgpKSA6IHRleHRPcmlnaW47CiAgICAgaWYg
KG1fY29tYmluZWRUZXh0KQogICAgICAgICBtX2NvbnRleHQuY29uY2F0Q1RNKHJvdGF0aW9uKGJv
eFJlY3QsIENsb2Nrd2lzZSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbGluZS9MaW5lSW5saW5lSGVhZGVycy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xp
bmUvTGluZUlubGluZUhlYWRlcnMuaAppbmRleCBjMjRkNWNhYThlZTg5NGYzZWI1OTJjNzczNjcz
YzRhYTEyMDVhY2YyLi41YTk2YzU4OWY0ZWQ5M2MxODA1YTg0OGFmMWQxYjM4Nzk3ODI5MmIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lSW5saW5lSGVhZGVy
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVJbmxpbmVIZWFkZXJz
LmgKQEAgLTU2LDcgKzU2LDcgQEAgaW5saW5lIGJvb2wgcmVxdWlyZXNMaW5lQm94Rm9yQ29udGVu
dChjb25zdCBSZW5kZXJJbmxpbmUmIGZsb3csIGNvbnN0IExpbmVJbmZvJgogICAgICAgICBjb25z
dCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUgPSBsaW5lU3R5bGUoKnBhcmVudCwgbGluZUluZm8p
OwogICAgICAgICBpZiAoZmxvd1N0eWxlLmxpbmVIZWlnaHQoKSAhPSBwYXJlbnRTdHlsZS5saW5l
SGVpZ2h0KCkKICAgICAgICAgICAgIHx8IGZsb3dTdHlsZS52ZXJ0aWNhbEFsaWduKCkgIT0gcGFy
ZW50U3R5bGUudmVydGljYWxBbGlnbigpCi0gICAgICAgICAgICB8fCAhcGFyZW50U3R5bGUuZm9u
dENhc2NhZGUoKS5mb250TWV0cmljcygpLmhhc0lkZW50aWNhbEFzY2VudERlc2NlbnRBbmRMaW5l
R2FwKGZsb3dTdHlsZS5mb250Q2FzY2FkZSgpLmZvbnRNZXRyaWNzKCkpKQorICAgICAgICAgICAg
fHwgIXBhcmVudFN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCku
aGFzSWRlbnRpY2FsQXNjZW50RGVzY2VudEFuZExpbmVHYXAoZmxvd1N0eWxlLmZvbnRDYXNjYWRl
KCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcAppbmRleCBlZDhmMjBmOTg1YmFhMjU0NzQ4
NDFiMjY4YTQ1NDk3OTY0ZWYyZWJlLi5kMDViYTQ3Njk0MzQ4YzFmMzBlYjFjYTAyNmVjZGU0NTlh
ZWZlYjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTEJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTEJsb2NrLmNwcApAQCAtNzksNyArNzksNyBAQCBzdGF0aWMgTGF5b3V0VW5pdCBh
eGlzSGVpZ2h0KGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIAogICAgIC8vIE90aGVyd2lzZSwg
dGhlIGlkZWEgaXMgdG8gdHJ5IGFuZCB1c2UgdGhlIG1pZGRsZSBvZiBvcGVyYXRvcnMgYXMgdGhl
IG1hdGggYXhpcyB3aGljaCB3ZSB0aHVzIGFwcHJveGltYXRlIGJ5ICJoYWxmIG9mIHRoZSB4LWhl
aWdodCIuCiAgICAgLy8gTm90ZSB0aGF0IEdlY2tvIGhhcyBhIHNsb3dlciBidXQgbW9yZSBhY2N1
cmF0ZSB2ZXJzaW9uIHRoYXQgbWVhc3VyZXMgaGFsZiBvZiB0aGUgaGVpZ2h0IG9mIFUrMjIxMiBN
SU5VUyBTSUdOLgotICAgIHJldHVybiBMYXlvdXRVbml0KHN0eWxlLmZvbnRNZXRyaWNzKCkueEhl
aWdodCgpIC8gMik7CisgICAgcmV0dXJuIExheW91dFVuaXQoc3R5bGUuZm9udE1ldHJpY3NPZlBy
aW1hcnlGb250KCkueEhlaWdodCgpIC8gMik7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyTWF0aE1M
QmxvY2s6Om1hdGhBeGlzSGVpZ2h0KCkgY29uc3QKQEAgLTE2MSw3ICsxNjEsNyBAQCBMYXlvdXRV
bml0IHRvVXNlclVuaXRzKGNvbnN0IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCYgbGVuZ3RoLCBjb25z
dCBSZW5kZXJTdHlsZSYgcwogICAgIGNhc2UgTWF0aE1MRWxlbWVudDo6TGVuZ3RoVHlwZTo6RW06
CiAgICAgICAgIHJldHVybiBMYXlvdXRVbml0KGxlbmd0aC52YWx1ZSAqIHN0eWxlLmZvbnRDYXNj
YWRlKCkuc2l6ZSgpKTsKICAgICBjYXNlIE1hdGhNTEVsZW1lbnQ6Okxlbmd0aFR5cGU6OkV4Ogot
ICAgICAgICByZXR1cm4gTGF5b3V0VW5pdChsZW5ndGgudmFsdWUgKiBzdHlsZS5mb250TWV0cmlj
cygpLnhIZWlnaHQoKSk7CisgICAgICAgIHJldHVybiBMYXlvdXRVbml0KGxlbmd0aC52YWx1ZSAq
IHN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLnhIZWlnaHQoKSk7CiAgICAgY2FzZSBN
YXRoTUxFbGVtZW50OjpMZW5ndGhUeXBlOjpNYXRoVW5pdDoKICAgICAgICAgcmV0dXJuIExheW91
dFVuaXQobGVuZ3RoLnZhbHVlICogc3R5bGUuZm9udENhc2NhZGUoKS5zaXplKCkgLyAxOCk7CiAg
ICAgY2FzZSBNYXRoTUxFbGVtZW50OjpMZW5ndGhUeXBlOjpQZXJjZW50YWdlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAKaW5k
ZXggMmEzOGE2OGMwM2ViNzg0MGJkMDI4YmY5MGZlYmUyNDA3N2E0YzgwYi4uYzZjYTEyZTUzZTFl
ZGUyMjAzYjM2Zjk0MjZmYTc5ZDQ1MGVlN2U5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwCkBAIC0xMzksNyArMTM5LDcg
QEAgUmVuZGVyTWF0aE1MUm9vdDo6VmVydGljYWxQYXJhbWV0ZXJzIFJlbmRlck1hdGhNTFJvb3Q6
OnZlcnRpY2FsUGFyYW1ldGVycygpCiAgICAgICAgIC8vIFJhZGljYWxEZWdyZWVCb3R0b21SYWlz
ZVBlcmNlbnQ6IFN1Z2dlc3RlZCB2YWx1ZSBpcyA2MCUuCiAgICAgICAgIHBhcmFtZXRlcnMucnVs
ZVRoaWNrbmVzcyA9IHJ1bGVUaGlja25lc3NGYWxsYmFjaygpOwogICAgICAgICBpZiAoc3R5bGUo
KS5tYXRoU3R5bGUoKSA9PSBNYXRoU3R5bGU6Ok5vcm1hbCkKLSAgICAgICAgICAgIHBhcmFtZXRl
cnMudmVydGljYWxHYXAgPSBwYXJhbWV0ZXJzLnJ1bGVUaGlja25lc3MgKyBzdHlsZSgpLmZvbnRN
ZXRyaWNzKCkueEhlaWdodCgpIC8gNDsKKyAgICAgICAgICAgIHBhcmFtZXRlcnMudmVydGljYWxH
YXAgPSBwYXJhbWV0ZXJzLnJ1bGVUaGlja25lc3MgKyBzdHlsZSgpLmZvbnRNZXRyaWNzT2ZQcmlt
YXJ5Rm9udCgpLnhIZWlnaHQoKSAvIDQ7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBhcmFt
ZXRlcnMudmVydGljYWxHYXAgPSA1ICogcGFyYW1ldGVycy5ydWxlVGhpY2tuZXNzIC8gNDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxT
Y3JpcHRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
U2NyaXB0cy5jcHAKaW5kZXggNjA5NDM4OGEzMWIyYzFkMWE5MjU4OTIyOTcyZTBmMTFkOGM5YThh
Yy4uNDI4Mjk3MzIxZmNkMjRkMTBhMDBkODE5YmQzZDA2Yjk5NGJiNjY1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMu
Y3BwCkBAIC0yNDIsMTQgKzI0MiwxNCBAQCBhdXRvIFJlbmRlck1hdGhNTFNjcmlwdHM6OnZlcnRp
Y2FsUGFyYW1ldGVycygpIGNvbnN0IC0+IFZlcnRpY2FsUGFyYW1ldGVycwogICAgICAgICBwYXJh
bWV0ZXJzLnN1cGVyc2NyaXB0Qm90dG9tTWF4V2l0aFN1YnNjcmlwdCA9IG1hdGhEYXRhLT5nZXRN
YXRoQ29uc3RhbnQocHJpbWFyeUZvbnQsIE9wZW5UeXBlTWF0aERhdGE6OlN1cGVyc2NyaXB0Qm90
dG9tTWF4V2l0aFN1YnNjcmlwdCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gRGVmYXVsdCBo
ZXVyaXN0aWMgdmFsdWVzIHdoZW4geW91IGRvIG5vdCBoYXZlIGEgZm9udC4KLSAgICAgICAgcGFy
YW1ldGVycy5zdWJzY3JpcHRTaGlmdERvd24gPSBzdHlsZSgpLmZvbnRNZXRyaWNzKCkueEhlaWdo
dCgpIC8gMzsKLSAgICAgICAgcGFyYW1ldGVycy5zdXBlcnNjcmlwdFNoaWZ0VXAgPSBzdHlsZSgp
LmZvbnRNZXRyaWNzKCkueEhlaWdodCgpOwotICAgICAgICBwYXJhbWV0ZXJzLnN1YnNjcmlwdEJh
c2VsaW5lRHJvcE1pbiA9IHN0eWxlKCkuZm9udE1ldHJpY3MoKS54SGVpZ2h0KCkgLyAyOwotICAg
ICAgICBwYXJhbWV0ZXJzLnN1cGVyU2NyaXB0QmFzZWxpbmVEcm9wTWF4ID0gc3R5bGUoKS5mb250
TWV0cmljcygpLnhIZWlnaHQoKSAvIDI7CisgICAgICAgIHBhcmFtZXRlcnMuc3Vic2NyaXB0U2hp
ZnREb3duID0gc3R5bGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS54SGVpZ2h0KCkgLyAz
OworICAgICAgICBwYXJhbWV0ZXJzLnN1cGVyc2NyaXB0U2hpZnRVcCA9IHN0eWxlKCkuZm9udE1l
dHJpY3NPZlByaW1hcnlGb250KCkueEhlaWdodCgpOworICAgICAgICBwYXJhbWV0ZXJzLnN1YnNj
cmlwdEJhc2VsaW5lRHJvcE1pbiA9IHN0eWxlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCku
eEhlaWdodCgpIC8gMjsKKyAgICAgICAgcGFyYW1ldGVycy5zdXBlclNjcmlwdEJhc2VsaW5lRHJv
cE1heCA9IHN0eWxlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkueEhlaWdodCgpIC8gMjsK
ICAgICAgICAgcGFyYW1ldGVycy5zdWJTdXBlcnNjcmlwdEdhcE1pbiA9IHN0eWxlKCkuZm9udENh
c2NhZGUoKS5zaXplKCkgLyA1OwotICAgICAgICBwYXJhbWV0ZXJzLnN1cGVyc2NyaXB0Qm90dG9t
TWluID0gc3R5bGUoKS5mb250TWV0cmljcygpLnhIZWlnaHQoKSAvIDQ7Ci0gICAgICAgIHBhcmFt
ZXRlcnMuc3Vic2NyaXB0VG9wTWF4ID0gNCAqIHN0eWxlKCkuZm9udE1ldHJpY3MoKS54SGVpZ2h0
KCkgLyA1OwotICAgICAgICBwYXJhbWV0ZXJzLnN1cGVyc2NyaXB0Qm90dG9tTWF4V2l0aFN1YnNj
cmlwdCA9IDQgKiBzdHlsZSgpLmZvbnRNZXRyaWNzKCkueEhlaWdodCgpIC8gNTsKKyAgICAgICAg
cGFyYW1ldGVycy5zdXBlcnNjcmlwdEJvdHRvbU1pbiA9IHN0eWxlKCkuZm9udE1ldHJpY3NPZlBy
aW1hcnlGb250KCkueEhlaWdodCgpIC8gNDsKKyAgICAgICAgcGFyYW1ldGVycy5zdWJzY3JpcHRU
b3BNYXggPSA0ICogc3R5bGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS54SGVpZ2h0KCkg
LyA1OworICAgICAgICBwYXJhbWV0ZXJzLnN1cGVyc2NyaXB0Qm90dG9tTWF4V2l0aFN1YnNjcmlw
dCA9IDQgKiBzdHlsZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLnhIZWlnaHQoKSAvIDU7
CiAgICAgfQogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwCmluZGV4
IGM3MDMyYzU1Yjc5MDU2OWVjZjdjYWQzMTE2NDY0MGY3N2Y0NDJjOWQuLjk4YTJiOTIxN2QyNDZk
NmVkYmU4OTU0YzhhZjRjMWI5ZjdlOWE0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHAKQEAgLTI0OCw3
ICsyNDgsNyBAQCBSZW5kZXJNYXRoTUxVbmRlck92ZXI6OlZlcnRpY2FsUGFyYW1ldGVycyBSZW5k
ZXJNYXRoTUxVbmRlck92ZXI6OnZlcnRpY2FsUGFyYW1ldAogICAgICAgICBwYXJhbWV0ZXJzLm92
ZXJHYXBNaW4gPSAzICogZGVmYXVsdExpbmVUaGlja25lc3M7CiAgICAgICAgIHBhcmFtZXRlcnMu
dW5kZXJFeHRyYURlc2NlbmRlciA9IGRlZmF1bHRMaW5lVGhpY2tuZXNzOwogICAgICAgICBwYXJh
bWV0ZXJzLm92ZXJFeHRyYUFzY2VuZGVyID0gZGVmYXVsdExpbmVUaGlja25lc3M7Ci0gICAgICAg
IHBhcmFtZXRlcnMuYWNjZW50QmFzZUhlaWdodCA9IHN0eWxlKCkuZm9udE1ldHJpY3MoKS54SGVp
Z2h0KCk7CisgICAgICAgIHBhcmFtZXRlcnMuYWNjZW50QmFzZUhlaWdodCA9IHN0eWxlKCkuZm9u
dE1ldHJpY3NPZlByaW1hcnlGb250KCkueEhlaWdodCgpOwogICAgICAgICBwYXJhbWV0ZXJzLnVz
ZVVuZGVyT3ZlckJhckZhbGxCYWNrID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIHBhcmFtZXRlcnM7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5j
cHAKaW5kZXggNTZmMDMzZTQ1N2NiNzgyNDE0M2Q1ZTE4MjQ5OGUwZGYwODRlYjk3Mi4uZTY4MDQ3
NWQ3Nzg2YmU1ZmM5NDMzMzEwZDQzNTllMjlmMzIyMmY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC0xODE1LDkgKzE4MTUsOSBAQCBj
b25zdCBGb250Q2FzY2FkZSYgUmVuZGVyU3R5bGU6OmZvbnRDYXNjYWRlKCkgY29uc3QKICAgICBy
ZXR1cm4gbV9pbmhlcml0ZWREYXRhLT5mb250Q2FzY2FkZTsKIH0KIAotY29uc3QgRm9udE1ldHJp
Y3MmIFJlbmRlclN0eWxlOjpmb250TWV0cmljcygpIGNvbnN0Citjb25zdCBGb250TWV0cmljcyYg
UmVuZGVyU3R5bGU6OmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1faW5oZXJpdGVkRGF0YS0+Zm9udENhc2NhZGUuZm9udE1ldHJpY3MoKTsKKyAgICByZXR1
cm4gbV9pbmhlcml0ZWREYXRhLT5mb250Q2FzY2FkZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQo
KTsKIH0KIAogY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYgUmVuZGVyU3R5bGU6OmZvbnRE
ZXNjcmlwdGlvbigpIGNvbnN0CkBAIC0xODk2LDcgKzE4OTYsNyBAQCBpbnQgUmVuZGVyU3R5bGU6
OmNvbXB1dGVMaW5lSGVpZ2h0KGNvbnN0IExlbmd0aCYgbGluZUhlaWdodExlbmd0aCkgY29uc3QK
IHsKICAgICAvLyBOZWdhdGl2ZSB2YWx1ZSBtZWFucyB0aGUgbGluZSBoZWlnaHQgaXMgbm90IHNl
dC4gVXNlIHRoZSBmb250J3MgYnVpbHQtaW4gc3BhY2luZy4KICAgICBpZiAobGluZUhlaWdodExl
bmd0aC5pc05lZ2F0aXZlKCkpCi0gICAgICAgIHJldHVybiBmb250TWV0cmljcygpLmxpbmVTcGFj
aW5nKCk7CisgICAgICAgIHJldHVybiBmb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5saW5lU3Bh
Y2luZygpOwogCiAgICAgaWYgKGxpbmVIZWlnaHRMZW5ndGguaXNQZXJjZW50T3JDYWxjdWxhdGVk
KCkpCiAgICAgICAgIHJldHVybiBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobGluZUhlaWdodExlbmd0
aCwgY29tcHV0ZWRGb250UGl4ZWxTaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCA0ODg3NTE3OTc2MzE3MDM1M2ZhYTE5ZGRhZTQ3NzAw
YjhjNTAwNTIwLi4xOWFiYzY4YzBkYmMyY2UzOTJjMTNjMDAyOThiOTI1ZTUwOGFjODVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtMzU2LDcg
KzM1Niw3IEBAIHB1YmxpYzoKICAgICBUYWJsZUxheW91dFR5cGUgdGFibGVMYXlvdXQoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxUYWJsZUxheW91dFR5cGU+KG1fbm9uSW5oZXJpdGVkRmxh
Z3MudGFibGVMYXlvdXQpOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBGb250Q2FzY2Fk
ZSYgZm9udENhc2NhZGUoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBGb250TWV0
cmljcyYgZm9udE1ldHJpY3MoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBGb250
TWV0cmljcyYgZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9F
WFBPUlQgY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uKCkgY29u
c3Q7CiAgICAgZmxvYXQgc3BlY2lmaWVkRm9udFNpemUoKSBjb25zdDsKICAgICBmbG9hdCBjb21w
dXRlZEZvbnRTaXplKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcAppbmRleCA5YTM5YmQxYjRlM2ZjZWQ3YzE5MzMx
YWM3ODEyNDk0YWYyMzE5NzI1Li45NTI2YWNlYzhjMWU0ZTAxYjU5YWY5MzAwYmM4ZmRiN2ZlMTBm
YWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lu
bGluZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
SW5saW5lVGV4dC5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVy
U1ZHSW5saW5lVGV4dDo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQs
CiAgICAgaWYgKCFmaXJzdFRleHRCb3goKSB8fCB0ZXh0KCkuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uKDAsIEFmZmluaXR5OjpEb3duc3RyZWFtKTsKIAot
ICAgIGZsb2F0IGJhc2VsaW5lID0gbV9zY2FsZWRGb250LmZvbnRNZXRyaWNzKCkuZmxvYXRBc2Nl
bnQoKTsKKyAgICBmbG9hdCBiYXNlbGluZSA9IG1fc2NhbGVkRm9udC5mb250TWV0cmljc09mUHJp
bWFyeUZvbnQoKS5mbG9hdEFzY2VudCgpOwogCiAgICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdC
bG9jayA9IHRoaXMtPmNvbnRhaW5pbmdCbG9jaygpOwogICAgIEFTU0VSVChjb250YWluaW5nQmxv
Y2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVU
ZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJv
eC5jcHAKaW5kZXggNGQzMmE4MThiZjg3YWZhZjdmOTMzZjA1MzkyODYxNjhiYmVkYWUzZi4uYzgw
NDIzNjNhZTIzMjg0ODVjNmEzZGMwOTZlNjM4Yzg3M2U1OTcwNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCkBAIC0xMDQsNyArMTA0
LDcgQEAgRmxvYXRSZWN0IFNWR0lubGluZVRleHRCb3g6OnNlbGVjdGlvblJlY3RGb3JUZXh0RnJh
Z21lbnQoY29uc3QgU1ZHVGV4dEZyYWdtZW50JgogICAgIEFTU0VSVChzY2FsaW5nRmFjdG9yKTsK
IAogICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBzY2FsZWRGb250ID0gcmVuZGVyZXIoKS5zY2FsZWRG
b250KCk7Ci0gICAgY29uc3QgRm9udE1ldHJpY3MmIHNjYWxlZEZvbnRNZXRyaWNzID0gc2NhbGVk
Rm9udC5mb250TWV0cmljcygpOworICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBzY2FsZWRGb250TWV0
cmljcyA9IHNjYWxlZEZvbnQuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCk7CiAgICAgRmxvYXRQ
b2ludCB0ZXh0T3JpZ2luKGZyYWdtZW50LngsIGZyYWdtZW50LnkpOwogICAgIGlmIChzY2FsaW5n
RmFjdG9yICE9IDEpCiAgICAgICAgIHRleHRPcmlnaW4uc2NhbGUoc2NhbGluZ0ZhY3Rvcik7CkBA
IC01MTEsNyArNTExLDcgQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb25X
aXRoU3R5bGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBPcHRpb24KIAogICAgIEZsb2F0UG9p
bnQgZGVjb3JhdGlvbk9yaWdpbihmcmFnbWVudC54LCBmcmFnbWVudC55KTsKICAgICBmbG9hdCB3
aWR0aCA9IGZyYWdtZW50LndpZHRoOwotICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBzY2FsZWRGb250
TWV0cmljcyA9IHNjYWxlZEZvbnQuZm9udE1ldHJpY3MoKTsKKyAgICBjb25zdCBGb250TWV0cmlj
cyYgc2NhbGVkRm9udE1ldHJpY3MgPSBzY2FsZWRGb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9u
dCgpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQp
OwogICAgIGlmIChzY2FsaW5nRmFjdG9yICE9IDEpIHsKQEAgLTU0Niw3ICs1NDYsNyBAQCB2b2lk
IFNWR0lubGluZVRleHRCb3g6OnBhaW50VGV4dFdpdGhTaGFkb3dzKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgUmVuZAogICAgICAgICB0ZXh0U2l6ZS5zY2FsZShzY2FsaW5nRmFjdG9y
KTsKICAgICB9CiAKLSAgICBGbG9hdFJlY3Qgc2hhZG93UmVjdChGbG9hdFBvaW50KHRleHRPcmln
aW4ueCgpLCB0ZXh0T3JpZ2luLnkoKSAtIHNjYWxlZEZvbnQuZm9udE1ldHJpY3MoKS5mbG9hdEFz
Y2VudCgpKSwgdGV4dFNpemUpOworICAgIEZsb2F0UmVjdCBzaGFkb3dSZWN0KEZsb2F0UG9pbnQo
dGV4dE9yaWdpbi54KCksIHRleHRPcmlnaW4ueSgpIC0gc2NhbGVkRm9udC5mb250TWV0cmljc09m
UHJpbWFyeUZvbnQoKS5mbG9hdEFzY2VudCgpKSwgdGV4dFNpemUpOwogCiAgICAgR3JhcGhpY3ND
b250ZXh0KiB1c2VkQ29udGV4dCA9ICZjb250ZXh0OwogICAgIGRvIHsKQEAgLTYxMyw3ICs2MTMs
NyBAQCBGbG9hdFJlY3QgU1ZHSW5saW5lVGV4dEJveDo6Y2FsY3VsYXRlQm91bmRhcmllcygpIGNv
bnN0CiAgICAgZmxvYXQgc2NhbGluZ0ZhY3RvciA9IHJlbmRlcmVyKCkuc2NhbGluZ0ZhY3Rvcigp
OwogICAgIEFTU0VSVChzY2FsaW5nRmFjdG9yKTsKIAotICAgIGZsb2F0IGJhc2VsaW5lID0gcmVu
ZGVyZXIoKS5zY2FsZWRGb250KCkuZm9udE1ldHJpY3MoKS5mbG9hdEFzY2VudCgpIC8gc2NhbGlu
Z0ZhY3RvcjsKKyAgICBmbG9hdCBiYXNlbGluZSA9IHJlbmRlcmVyKCkuc2NhbGVkRm9udCgpLmZv
bnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmZsb2F0QXNjZW50KCkgLyBzY2FsaW5nRmFjdG9yOwog
CiAgICAgQWZmaW5lVHJhbnNmb3JtIGZyYWdtZW50VHJhbnNmb3JtOwogICAgIHVuc2lnbmVkIHRl
eHRGcmFnbWVudHNTaXplID0gbV90ZXh0RnJhZ21lbnRzLnNpemUoKTsKQEAgLTY0OCw3ICs2NDgs
NyBAQCBib29sIFNWR0lubGluZVRleHRCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1
ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JgogICAgICAgICAgICAgICAgIGZsb2F0IHNjYWxp
bmdGYWN0b3IgPSByZW5kZXJlcigpLnNjYWxpbmdGYWN0b3IoKTsKICAgICAgICAgICAgICAgICBB
U1NFUlQoc2NhbGluZ0ZhY3Rvcik7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
ZmxvYXQgYmFzZWxpbmUgPSByZW5kZXJlcigpLnNjYWxlZEZvbnQoKS5mb250TWV0cmljcygpLmZs
b2F0QXNjZW50KCkgLyBzY2FsaW5nRmFjdG9yOworICAgICAgICAgICAgICAgIGZsb2F0IGJhc2Vs
aW5lID0gcmVuZGVyZXIoKS5zY2FsZWRGb250KCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCku
ZmxvYXRBc2NlbnQoKSAvIHNjYWxpbmdGYWN0b3I7CiAKICAgICAgICAgICAgICAgICBBZmZpbmVU
cmFuc2Zvcm0gZnJhZ21lbnRUcmFuc2Zvcm07CiAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBm
cmFnbWVudCA6IG1fdGV4dEZyYWdtZW50cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmUuY3BwCmluZGV4
IDdiZTIwZDg0MTM4MWRlODVlMDI0NTQ4OGZlNWVlNTlhNmY3MTJjN2QuLjZjMjI1NGQxZmY4MTYz
NzE3MjY2NmU3MTVmMWViNWM2ODRlOTJiNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZS5jcHAKQEAg
LTQ4LDkgKzQ4LDkgQEAgZmxvYXQgU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lOjpjYWxjdWxh
dGVCYXNlbGluZVNoaWZ0KGNvbnN0IFNWR1JlbmRlclN0eWxlJgogICAgIGNhc2UgQmFzZWxpbmVT
aGlmdDo6QmFzZWxpbmU6CiAgICAgICAgIHJldHVybiAwOwogICAgIGNhc2UgQmFzZWxpbmVTaGlm
dDo6U3ViOgotICAgICAgICByZXR1cm4gLW1fZm9udC5mb250TWV0cmljcygpLmZsb2F0SGVpZ2h0
KCkgLyAyOworICAgICAgICByZXR1cm4gLW1fZm9udC5mb250TWV0cmljc09mUHJpbWFyeUZvbnQo
KS5mbG9hdEhlaWdodCgpIC8gMjsKICAgICBjYXNlIEJhc2VsaW5lU2hpZnQ6OlN1cGVyOgotICAg
ICAgICByZXR1cm4gbV9mb250LmZvbnRNZXRyaWNzKCkuZmxvYXRIZWlnaHQoKSAvIDI7CisgICAg
ICAgIHJldHVybiBtX2ZvbnQuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuZmxvYXRIZWlnaHQo
KSAvIDI7CiAgICAgY2FzZSBCYXNlbGluZVNoaWZ0OjpMZW5ndGg6CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KQEAgLTExNCw3ICsxMTQsNyBAQCBmbG9hdCBTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxp
bmU6OmNhbGN1bGF0ZUFsaWdubWVudEJhc2VsaW5lU2hpZnQoYm9vbCBpc1ZlcnRpYwogICAgICAg
ICBBU1NFUlQoYmFzZWxpbmUgIT0gQWxpZ25tZW50QmFzZWxpbmU6OkF1dG8pOwogICAgIH0KIAot
ICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IG1fZm9udC5mb250TWV0cmljcygp
OworICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IG1fZm9udC5mb250TWV0cmlj
c09mUHJpbWFyeUZvbnQoKTsKIAogICAgIC8vIE5vdGU6IGh0dHA6Ly93aWtpLmFwYWNoZS5vcmcv
eG1sZ3JhcGhpY3MtZm9wL0xpbmVMYXlvdXQvQWxpZ25tZW50SGFuZGxpbmcKICAgICBzd2l0Y2gg
KGJhc2VsaW5lKSB7CkBAIC0xOTUsNyArMTk1LDcgQEAgZmxvYXQgU1ZHVGV4dExheW91dEVuZ2lu
ZUJhc2VsaW5lOjpjYWxjdWxhdGVHbHlwaEFkdmFuY2VBbmRPcmllbnRhdGlvbihib29sIGlzVmUK
ICAgICAvLyBTcGVjOiBJZiBpZiB0aGUgJ2dseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsJyByZXN1
bHRzIGluIGFuIG9yaWVudGF0aW9uIGFuZ2xlIHRoYXQgaXMgbm90IGEgbXVsdGlwbGUgb2YKICAg
ICAvLyAxODAgZGVncmVlcywgdGhlbiB0aGUgY3VycmVudCB0ZXh0IHBvc2l0aW9uIGlzIGluY3Jl
bWVudGVkIGFjY29yZGluZyB0byB0aGUgaG9yaXpvbnRhbCBtZXRyaWNzIG9mIHRoZSBnbHlwaC4K
IAotICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IG1fZm9udC5mb250TWV0cmlj
cygpOworICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IG1fZm9udC5mb250TWV0
cmljc09mUHJpbWFyeUZvbnQoKTsKIAogICAgIC8vIFZlcnRpY2FsIG9yaWVudGF0aW9uIGhhbmRs
aW5nLgogICAgIGlmIChpc1ZlcnRpY2FsVGV4dCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzLmNwcAppbmRleCAzOTA5MWVmOGFmM2Q5YjMwNDhkYzdi
MmIyY2Y0ODIxMTk5NjVmYzViLi5mMWYzMDNkNmQzMDM2NDliY2Q3NzM1NWZmYjM1MTA3MTAxZGY2
MDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRy
aWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNz
LmNwcApAQCAtNTAsNyArNTAsNyBAQCBTVkdUZXh0TWV0cmljczo6U1ZHVGV4dE1ldHJpY3MoUmVu
ZGVyU1ZHSW5saW5lVGV4dCYgdGV4dFJlbmRlcmVyLCBjb25zdCBUZXh0UnVuJgogICAgIG1fd2lk
dGggPSBzY2FsZWRGb250LndpZHRoKHJ1bikgLyBzY2FsaW5nRmFjdG9yOwogICAgIGxlbmd0aCA9
IHJ1bi5sZW5ndGgoKTsKICAgICBtX2dseXBoLm5hbWUgPSBlbXB0eVN0cmluZygpOwotICAgIG1f
aGVpZ2h0ID0gc2NhbGVkRm9udC5mb250TWV0cmljcygpLmZsb2F0SGVpZ2h0KCkgLyBzY2FsaW5n
RmFjdG9yOworICAgIG1faGVpZ2h0ID0gc2NhbGVkRm9udC5mb250TWV0cmljc09mUHJpbWFyeUZv
bnQoKS5mbG9hdEhlaWdodCgpIC8gc2NhbGluZ0ZhY3RvcjsKIAogICAgIG1fZ2x5cGgudW5pY29k
ZVN0cmluZyA9IHJ1bi5pczhCaXQoKSA/IFN0cmluZyhydW4uY2hhcmFjdGVyczgoKSwgbGVuZ3Ro
KSA6IFN0cmluZyhydW4uY2hhcmFjdGVyczE2KCksIGxlbmd0aCk7CiAgICAgbV9nbHlwaC5pc1Zh
bGlkID0gdHJ1ZTsKQEAgLTg2LDcgKzg2LDcgQEAgU1ZHVGV4dE1ldHJpY3M6OlNWR1RleHRNZXRy
aWNzKFJlbmRlclNWR0lubGluZVRleHQmIHRleHQsIHVuc2lnbmVkIGxlbmd0aCwgZmxvYXQKICAg
ICBBU1NFUlQoc2NhbGluZ0ZhY3Rvcik7CiAKICAgICBtX3dpZHRoID0gd2lkdGggLyBzY2FsaW5n
RmFjdG9yOwotICAgIG1faGVpZ2h0ID0gdGV4dC5zY2FsZWRGb250KCkuZm9udE1ldHJpY3MoKS5m
bG9hdEhlaWdodCgpIC8gc2NhbGluZ0ZhY3RvcjsKKyAgICBtX2hlaWdodCA9IHRleHQuc2NhbGVk
Rm9udCgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmZsb2F0SGVpZ2h0KCkgLyBzY2FsaW5n
RmFjdG9yOwogCiAgICAgbV9sZW5ndGggPSBsZW5ndGg7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRRdWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1RleHRRdWVyeS5jcHAKaW5kZXggZGU5ZWIxOTE3ZmRhNzk0YTcwMTM1
MDNiZDU1ZjI5ZTdjNzg4NTViNC4uN2M5Y2E5OTk2MzU2OWVjYzRmZDA5MDRiNjc3YjUyMDNlMjNh
ZDRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UXVl
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFF1ZXJ5LmNw
cApAQCAtNDYzLDcgKzQ2Myw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjYWxjdWxhdGVHbHlwaEJv
dW5kYXJpZXMoU1ZHVGV4dFF1ZXJ5OjpEYXRhKiBxdWVyeURhdGEsIGNvbnN0CiAgICAgZmxvYXQg
c2NhbGluZ0ZhY3RvciA9IHF1ZXJ5RGF0YS0+dGV4dFJlbmRlcmVyLT5zY2FsaW5nRmFjdG9yKCk7
CiAgICAgQVNTRVJUKHNjYWxpbmdGYWN0b3IpOwogCi0gICAgZXh0ZW50LnNldExvY2F0aW9uKEZs
b2F0UG9pbnQoZnJhZ21lbnQueCwgZnJhZ21lbnQueSAtIHF1ZXJ5RGF0YS0+dGV4dFJlbmRlcmVy
LT5zY2FsZWRGb250KCkuZm9udE1ldHJpY3MoKS5mbG9hdEFzY2VudCgpIC8gc2NhbGluZ0ZhY3Rv
cikpOworICAgIGV4dGVudC5zZXRMb2NhdGlvbihGbG9hdFBvaW50KGZyYWdtZW50LngsIGZyYWdt
ZW50LnkgLSBxdWVyeURhdGEtPnRleHRSZW5kZXJlci0+c2NhbGVkRm9udCgpLmZvbnRNZXRyaWNz
T2ZQcmltYXJ5Rm9udCgpLmZsb2F0QXNjZW50KCkgLyBzY2FsaW5nRmFjdG9yKSk7CiAKICAgICBp
ZiAoc3RhcnRQb3NpdGlvbikgewogICAgICAgICBTVkdUZXh0TWV0cmljcyBtZXRyaWNzID0gU1ZH
VGV4dE1ldHJpY3M6Om1lYXN1cmVDaGFyYWN0ZXJSYW5nZSgqcXVlcnlEYXRhLT50ZXh0UmVuZGVy
ZXIsIGZyYWdtZW50LmNoYXJhY3Rlck9mZnNldCwgc3RhcnRQb3NpdGlvbik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJGaXJz
dExldHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJl
ZUJ1aWxkZXJGaXJzdExldHRlci5jcHAKaW5kZXggMjVjOTYwZjBlMGFmYzEwMjUxYzZkMzY0ZDI3
ZDQ0N2NmNjRjZWY3MS4uZjcyZWY5MGQyNDI3OTY4OTM2MWVkMzMxOWU4MjAxMDQzNDA1NDQzYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVC
dWlsZGVyRmlyc3RMZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRh
dGluZy9SZW5kZXJUcmVlQnVpbGRlckZpcnN0TGV0dGVyLmNwcApAQCAtNTEsNyArNTEsNyBAQCBz
dGF0aWMgUmVuZGVyU3R5bGUgc3R5bGVGb3JGaXJzdExldHRlcihjb25zdCBSZW5kZXJCbG9jayYg
Zmlyc3RMZXR0ZXJCbG9jaywgY29ucwogCiAgICAgLy8gV2UgaGF2ZSB0byBjb21wdXRlIHRoZSBj
b3JyZWN0IGZvbnQtc2l6ZSBmb3IgdGhlIGZpcnN0LWxldHRlciBpZiBpdCBoYXMgYW4gaW5pdGlh
bCBsZXR0ZXIgaGVpZ2h0IHNldC4KICAgICBhdXRvKiBwYXJhZ3JhcGggPSBmaXJzdExldHRlckNv
bnRhaW5lci5pc1JlbmRlckJsb2NrRmxvdygpID8gJmZpcnN0TGV0dGVyQ29udGFpbmVyIDogZmly
c3RMZXR0ZXJDb250YWluZXIuY29udGFpbmluZ0Jsb2NrKCk7Ci0gICAgaWYgKGZpcnN0TGV0dGVy
U3R5bGUuaW5pdGlhbExldHRlckhlaWdodCgpID49IDEgJiYgZmlyc3RMZXR0ZXJTdHlsZS5mb250
TWV0cmljcygpLmhhc0NhcEhlaWdodCgpICYmIHBhcmFncmFwaC0+c3R5bGUoKS5mb250TWV0cmlj
cygpLmhhc0NhcEhlaWdodCgpKSB7CisgICAgaWYgKGZpcnN0TGV0dGVyU3R5bGUuaW5pdGlhbExl
dHRlckhlaWdodCgpID49IDEgJiYgZmlyc3RMZXR0ZXJTdHlsZS5mb250TWV0cmljc09mUHJpbWFy
eUZvbnQoKS5oYXNDYXBIZWlnaHQoKSAmJiBwYXJhZ3JhcGgtPnN0eWxlKCkuZm9udE1ldHJpY3NP
ZlByaW1hcnlGb250KCkuaGFzQ2FwSGVpZ2h0KCkpIHsKICAgICAgICAgLy8gRklYTUU6IEZvciBp
ZGVvZ3JhcGhpYyBiYXNlbGluZXMsIHdlIHdhbnQgdG8gZ28gZnJvbSBsaW5lIGVkZ2UgdG8gbGlu
ZSBlZGdlLiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gKE4tMSkqbGluZS1oZWlnaHQgKyB0aGUgZm9u
dCBoZWlnaHQuCiAgICAgICAgIC8vIFdlIGRvbid0IHlldCBzdXBwb3J0IGlkZW9ncmFwaGljIGJh
c2VsaW5lcy4KICAgICAgICAgLy8gRm9yIGFuIE4tbGluZSBmaXJzdC1sZXR0ZXIgYW5kIGZvciBh
bHBoYWJldGljIGJhc2VsaW5lcywgdGhlIGNhcC1oZWlnaHQgb2YgdGhlIGZpcnN0IGxldHRlciBu
ZWVkcyB0byBlcXVhbCAoTi0xKSpsaW5lLWhlaWdodCBvZiBwYXJhZ3JhcGggbGluZXMgKyBjYXAt
aGVpZ2h0IG9mIHRoZSBwYXJhZ3JhcGgKQEAgLTYzLDIyICs2MywyMiBAQCBzdGF0aWMgUmVuZGVy
U3R5bGUgc3R5bGVGb3JGaXJzdExldHRlcihjb25zdCBSZW5kZXJCbG9jayYgZmlyc3RMZXR0ZXJC
bG9jaywgY29ucwogICAgICAgICAvLyBTZXQgdGhlIGZvbnQgdG8gYmUgb25lIGxpbmUgdG9vIGJp
ZyBhbmQgdGhlbiByYXRjaGV0IGJhY2sgdG8gZ2V0IHRvIGEgcHJlY2lzZSBmaXQuIFdlIGNhbid0
IGp1c3Qgc2V0IHRoZSBkZXNpcmVkIGZvbnQgc2l6ZSBiYXNlZCBvZmYgZm9udCBoZWlnaHQgbWV0
cmljcwogICAgICAgICAvLyBiZWNhdXNlIG1hbnkgZm9udHMgYmFrZSBhc2NlbnQgaW50byB0aGUg
Zm9udCBtZXRyaWNzLiBUaGVyZWZvcmUgd2UgaGF2ZSB0byBsb29rIGF0IGFjdHVhbCBtZWFzdXJl
ZCBjYXAgaGVpZ2h0IHZhbHVlcyBpbiBvcmRlciB0byBrbm93IHdoZW4gd2UgaGF2ZSBhIGdvb2Qg
Zml0LgogICAgICAgICBhdXRvIG5ld0ZvbnREZXNjcmlwdGlvbiA9IGZpcnN0TGV0dGVyU3R5bGUu
Zm9udERlc2NyaXB0aW9uKCk7Ci0gICAgICAgIGZsb2F0IGNhcFJhdGlvID0gZmlyc3RMZXR0ZXJT
dHlsZS5mb250TWV0cmljcygpLmZsb2F0Q2FwSGVpZ2h0KCkgLyBmaXJzdExldHRlclN0eWxlLmNv
bXB1dGVkRm9udFBpeGVsU2l6ZSgpOwotICAgICAgICBmbG9hdCBzdGFydGluZ0ZvbnRTaXplID0g
KChmaXJzdExldHRlclN0eWxlLmluaXRpYWxMZXR0ZXJIZWlnaHQoKSAtIDEpICogbGluZUhlaWdo
dCArIHBhcmFncmFwaC0+c3R5bGUoKS5mb250TWV0cmljcygpLmNhcEhlaWdodCgpKSAvIGNhcFJh
dGlvOworICAgICAgICBmbG9hdCBjYXBSYXRpbyA9IGZpcnN0TGV0dGVyU3R5bGUuZm9udE1ldHJp
Y3NPZlByaW1hcnlGb250KCkuZmxvYXRDYXBIZWlnaHQoKSAvIGZpcnN0TGV0dGVyU3R5bGUuY29t
cHV0ZWRGb250UGl4ZWxTaXplKCk7CisgICAgICAgIGZsb2F0IHN0YXJ0aW5nRm9udFNpemUgPSAo
KGZpcnN0TGV0dGVyU3R5bGUuaW5pdGlhbExldHRlckhlaWdodCgpIC0gMSkgKiBsaW5lSGVpZ2h0
ICsgcGFyYWdyYXBoLT5zdHlsZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmNhcEhlaWdo
dCgpKSAvIGNhcFJhdGlvOwogICAgICAgICBuZXdGb250RGVzY3JpcHRpb24uc2V0U3BlY2lmaWVk
U2l6ZShzdGFydGluZ0ZvbnRTaXplKTsKICAgICAgICAgbmV3Rm9udERlc2NyaXB0aW9uLnNldENv
bXB1dGVkU2l6ZShzdGFydGluZ0ZvbnRTaXplKTsKICAgICAgICAgZmlyc3RMZXR0ZXJTdHlsZS5z
ZXRGb250RGVzY3JpcHRpb24oV1RGTW92ZShuZXdGb250RGVzY3JpcHRpb24pKTsKICAgICAgICAg
Zmlyc3RMZXR0ZXJTdHlsZS5mb250Q2FzY2FkZSgpLnVwZGF0ZShmaXJzdExldHRlclN0eWxlLmZv
bnRDYXNjYWRlKCkuZm9udFNlbGVjdG9yKCkpOwogCi0gICAgICAgIGludCBkZXNpcmVkQ2FwSGVp
Z2h0ID0gKGZpcnN0TGV0dGVyU3R5bGUuaW5pdGlhbExldHRlckhlaWdodCgpIC0gMSkgKiBsaW5l
SGVpZ2h0ICsgcGFyYWdyYXBoLT5zdHlsZSgpLmZvbnRNZXRyaWNzKCkuY2FwSGVpZ2h0KCk7Ci0g
ICAgICAgIGludCBhY3R1YWxDYXBIZWlnaHQgPSBmaXJzdExldHRlclN0eWxlLmZvbnRNZXRyaWNz
KCkuY2FwSGVpZ2h0KCk7CisgICAgICAgIGludCBkZXNpcmVkQ2FwSGVpZ2h0ID0gKGZpcnN0TGV0
dGVyU3R5bGUuaW5pdGlhbExldHRlckhlaWdodCgpIC0gMSkgKiBsaW5lSGVpZ2h0ICsgcGFyYWdy
YXBoLT5zdHlsZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmNhcEhlaWdodCgpOworICAg
ICAgICBpbnQgYWN0dWFsQ2FwSGVpZ2h0ID0gZmlyc3RMZXR0ZXJTdHlsZS5mb250TWV0cmljc09m
UHJpbWFyeUZvbnQoKS5jYXBIZWlnaHQoKTsKICAgICAgICAgd2hpbGUgKGFjdHVhbENhcEhlaWdo
dCA+IGRlc2lyZWRDYXBIZWlnaHQpIHsKICAgICAgICAgICAgIGF1dG8gbmV3Rm9udERlc2NyaXB0
aW9uID0gZmlyc3RMZXR0ZXJTdHlsZS5mb250RGVzY3JpcHRpb24oKTsKICAgICAgICAgICAgIG5l
d0ZvbnREZXNjcmlwdGlvbi5zZXRTcGVjaWZpZWRTaXplKG5ld0ZvbnREZXNjcmlwdGlvbi5zcGVj
aWZpZWRTaXplKCkgLSAxKTsKICAgICAgICAgICAgIG5ld0ZvbnREZXNjcmlwdGlvbi5zZXRDb21w
dXRlZFNpemUobmV3Rm9udERlc2NyaXB0aW9uLmNvbXB1dGVkU2l6ZSgpIC0xKTsKICAgICAgICAg
ICAgIGZpcnN0TGV0dGVyU3R5bGUuc2V0Rm9udERlc2NyaXB0aW9uKFdURk1vdmUobmV3Rm9udERl
c2NyaXB0aW9uKSk7CiAgICAgICAgICAgICBmaXJzdExldHRlclN0eWxlLmZvbnRDYXNjYWRlKCku
dXBkYXRlKGZpcnN0TGV0dGVyU3R5bGUuZm9udENhc2NhZGUoKS5mb250U2VsZWN0b3IoKSk7Ci0g
ICAgICAgICAgICBhY3R1YWxDYXBIZWlnaHQgPSBmaXJzdExldHRlclN0eWxlLmZvbnRNZXRyaWNz
KCkuY2FwSGVpZ2h0KCk7CisgICAgICAgICAgICBhY3R1YWxDYXBIZWlnaHQgPSBmaXJzdExldHRl
clN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmNhcEhlaWdodCgpOwogICAgICAgICB9
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94
U3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcApp
bmRleCBlOGNlNTdkZjAzN2UzOWRlYTdmNGVmNTExYWZkM2IwZGM2ZGE2YjE3Li40ZThjNTg3ZTIy
OTg0NDA3OTBmNzM1ZDQzYzEzODdmMzA5YmM2MTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L0lubGluZVRleHRCb3hTdHlsZS5jcHAKQEAgLTE3MywxMiArMTczLDEyIEBAIEdseXBoT3ZlcmZs
b3cgdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0
eWxlLCBjb25zdCBJCiAgICAgaWYgKGRlY29yYXRpb24uaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gR2x5cGhPdmVyZmxvdygpOwogCi0gICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzID0gbGluZVN0
eWxlLnRleHREZWNvcmF0aW9uVGhpY2tuZXNzKCkucmVzb2x2ZShsaW5lU3R5bGUuY29tcHV0ZWRG
b250U2l6ZSgpLCBsaW5lU3R5bGUuZm9udE1ldHJpY3MoKSk7CisgICAgZmxvYXQgc3Ryb2tlVGhp
Y2tuZXNzID0gbGluZVN0eWxlLnRleHREZWNvcmF0aW9uVGhpY2tuZXNzKCkucmVzb2x2ZShsaW5l
U3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpLCBsaW5lU3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlG
b250KCkpOwogICAgIFdhdnlTdHJva2VQYXJhbWV0ZXJzIHdhdnlTdHJva2VQYXJhbWV0ZXJzOwog
ICAgIGZsb2F0IHdhdnlPZmZzZXQgPSAwOwogICAgICAgICAKICAgICBUZXh0RGVjb3JhdGlvblN0
eWxlIGRlY29yYXRpb25TdHlsZSA9IGxpbmVTdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxlKCk7Ci0g
ICAgZmxvYXQgaGVpZ2h0ID0gbGluZVN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKS5m
bG9hdEhlaWdodCgpOworICAgIGZsb2F0IGhlaWdodCA9IGxpbmVTdHlsZS5mb250Q2FzY2FkZSgp
LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmZsb2F0SGVpZ2h0KCk7CiAgICAgR2x5cGhPdmVy
ZmxvdyBvdmVyZmxvd1Jlc3VsdDsKICAgICAKICAgICBpZiAoZGVjb3JhdGlvblN0eWxlID09IFRl
eHREZWNvcmF0aW9uU3R5bGU6OldhdnkpIHsKQEAgLTE5NSw3ICsxOTUsNyBAQCBHbHlwaE92ZXJm
bG93IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyU3R5bGUmIGxpbmVT
dHlsZSwgY29uc3QgSQogICAgICAgICBpbnQgdW5kZXJsaW5lT2Zmc2V0ID0gMTsKICAgICAgICAg
ZmxvYXQgdGV4dERlY29yYXRpb25CYXNlRm9udFNpemUgPSAxNjsKICAgICAgICAgYXV0byBkZWZh
dWx0R2FwID0gbGluZVN0eWxlLmNvbXB1dGVkRm9udFNpemUoKSAvIHRleHREZWNvcmF0aW9uQmFz
ZUZvbnRTaXplOwotICAgICAgICB1bmRlcmxpbmVPZmZzZXQgKz0gY29tcHV0ZVVuZGVybGluZU9m
ZnNldChsaW5lU3R5bGUudGV4dFVuZGVybGluZVBvc2l0aW9uKCksIGxpbmVTdHlsZS50ZXh0VW5k
ZXJsaW5lT2Zmc2V0KCksIGxpbmVTdHlsZS5mb250TWV0cmljcygpLCB0ZXh0UnVuLCBkZWZhdWx0
R2FwKTsKKyAgICAgICAgdW5kZXJsaW5lT2Zmc2V0ICs9IGNvbXB1dGVVbmRlcmxpbmVPZmZzZXQo
bGluZVN0eWxlLnRleHRVbmRlcmxpbmVQb3NpdGlvbigpLCBsaW5lU3R5bGUudGV4dFVuZGVybGlu
ZU9mZnNldCgpLCBsaW5lU3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCksIHRleHRSdW4s
IGRlZmF1bHRHYXApOwogICAgICAgICBpZiAoZGVjb3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0
aW9uU3R5bGU6OldhdnkpIHsKICAgICAgICAgICAgIG92ZXJmbG93UmVzdWx0LmV4dGVuZEJvdHRv
bSh1bmRlcmxpbmVPZmZzZXQgKyB3YXZ5T2Zmc2V0ICsgd2F2eVN0cm9rZVBhcmFtZXRlcnMuY29u
dHJvbFBvaW50RGlzdGFuY2UgKyBzdHJva2VUaGlja25lc3MgLSBoZWlnaHQpOwogICAgICAgICAg
ICAgb3ZlcmZsb3dSZXN1bHQuZXh0ZW5kVG9wKC0odW5kZXJsaW5lT2Zmc2V0ICsgd2F2eU9mZnNl
dCAtIHdhdnlTdHJva2VQYXJhbWV0ZXJzLmNvbnRyb2xQb2ludERpc3RhbmNlIC0gc3Ryb2tlVGhp
Y2tuZXNzKSk7CkBAIC0yMDYsNyArMjA2LDcgQEAgR2x5cGhPdmVyZmxvdyB2aXN1YWxPdmVyZmxv
d0ZvckRlY29yYXRpb25zKGNvbnN0IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUsIGNvbnN0IEkKICAg
ICB9CiAgICAgaWYgKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lKSB7
CiAgICAgICAgIEZsb2F0UmVjdCByZWN0KEZsb2F0UG9pbnQoKSwgRmxvYXRTaXplKDEsIHN0cm9r
ZVRoaWNrbmVzcykpOwotICAgICAgICBmbG9hdCBhdXRvVGV4dERlY29yYXRpb25UaGlja25lc3Mg
PSBUZXh0RGVjb3JhdGlvblRoaWNrbmVzczo6Y3JlYXRlV2l0aEF1dG8oKS5yZXNvbHZlKGxpbmVT
dHlsZS5jb21wdXRlZEZvbnRTaXplKCksIGxpbmVTdHlsZS5mb250TWV0cmljcygpKTsKKyAgICAg
ICAgZmxvYXQgYXV0b1RleHREZWNvcmF0aW9uVGhpY2tuZXNzID0gVGV4dERlY29yYXRpb25UaGlj
a25lc3M6OmNyZWF0ZVdpdGhBdXRvKCkucmVzb2x2ZShsaW5lU3R5bGUuY29tcHV0ZWRGb250U2l6
ZSgpLCBsaW5lU3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkpOwogICAgICAgICByZWN0
Lm1vdmUoMCwgYXV0b1RleHREZWNvcmF0aW9uVGhpY2tuZXNzIC0gc3Ryb2tlVGhpY2tuZXNzIC0g
d2F2eU9mZnNldCk7CiAgICAgICAgIGlmIChkZWNvcmF0aW9uU3R5bGUgPT0gVGV4dERlY29yYXRp
b25TdHlsZTo6V2F2eSkgewogICAgICAgICAgICAgRmxvYXRCb3hFeHRlbnQgd2F2eUV4cGFuc2lv
bjsKQEAgLTIxOSw4ICsyMTksOCBAQCBHbHlwaE92ZXJmbG93IHZpc3VhbE92ZXJmbG93Rm9yRGVj
b3JhdGlvbnMoY29uc3QgUmVuZGVyU3R5bGUmIGxpbmVTdHlsZSwgY29uc3QgSQogICAgIH0KICAg
ICBpZiAoZGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2gpIHsKICAg
ICAgICAgRmxvYXRSZWN0IHJlY3QoRmxvYXRQb2ludCgpLCBGbG9hdFNpemUoMSwgc3Ryb2tlVGhp
Y2tuZXNzKSk7Ci0gICAgICAgIGZsb2F0IGF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyA9IFRl
eHREZWNvcmF0aW9uVGhpY2tuZXNzOjpjcmVhdGVXaXRoQXV0bygpLnJlc29sdmUobGluZVN0eWxl
LmNvbXB1dGVkRm9udFNpemUoKSwgbGluZVN0eWxlLmZvbnRNZXRyaWNzKCkpOwotICAgICAgICBh
dXRvIGNlbnRlciA9IDIgKiBsaW5lU3R5bGUuZm9udE1ldHJpY3MoKS5mbG9hdEFzY2VudCgpIC8g
MyArIGF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyAvIDI7CisgICAgICAgIGZsb2F0IGF1dG9U
ZXh0RGVjb3JhdGlvblRoaWNrbmVzcyA9IFRleHREZWNvcmF0aW9uVGhpY2tuZXNzOjpjcmVhdGVX
aXRoQXV0bygpLnJlc29sdmUobGluZVN0eWxlLmNvbXB1dGVkRm9udFNpemUoKSwgbGluZVN0eWxl
LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpKTsKKyAgICAgICAgYXV0byBjZW50ZXIgPSAyICog
bGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmZsb2F0QXNjZW50KCkgLyAzICsg
YXV0b1RleHREZWNvcmF0aW9uVGhpY2tuZXNzIC8gMjsKICAgICAgICAgcmVjdC5tb3ZlKDAsIGNl
bnRlciAtIHN0cm9rZVRoaWNrbmVzcyAvIDIpOwogICAgICAgICBpZiAoZGVjb3JhdGlvblN0eWxl
ID09IFRleHREZWNvcmF0aW9uU3R5bGU6OldhdnkpIHsKICAgICAgICAgICAgIEZsb2F0Qm94RXh0
ZW50IHdhdnlFeHBhbnNpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZVJlc29sdmVGb3JGb250UmF3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2
ZUZvckZvbnRSYXcuY3BwCmluZGV4IDM0MTcxNGU5ZDZjODZlOTYyNWM2OTNlNGU4NzAwNmZlZTJi
NzBiMzcuLmI2MjQ1N2QzNjdmMDQ2ZWVkZGJmNTk5MjJlOGRhMzdkODZmMmNlNzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3BwCkBAIC0yMDcs
NyArMjA3LDcgQEAgc3RkOjpvcHRpb25hbDxGb250Q2FzY2FkZT4gcmVzb2x2ZUZvckZvbnRSYXco
Y29uc3QgRm9udFJhdyYgZm9udFJhdywgRm9udENhc2NhZGUKICAgICAgICAgICAgIC8vICAgICAg
ICBJdCdzIHVuY2xlYXIgaW4gdGhlIHNwZWNpZmljYXRpb24gaWYgdGhleSdyZSBleHBlY3RlZCB0
byB3b3JrIG9uIE9mZnNjcmVlbkNhbnZhcywgZ2l2ZW4KICAgICAgICAgICAgIC8vICAgICAgICB0
aGF0IGl0J3Mgb2ZmLXNjcmVlbiBhbmQgdGhlcmVmb3JlIGRvZXNuJ3Qgc3RyaWN0bHkgaGF2ZSBh
biBhc3NvY2lhdGVkIHZpZXdwb3J0LgogICAgICAgICAgICAgLy8gICAgICAgIFRoaXMgbmVlZHMg
Y2xhcmlmaWNhdGlvbiBhbmQgcG9zc2libHkgZml4aW5nLgotICAgICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGZsb2F0PihDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZVVuem9vbWVkTm9uQ2Fs
Y0xlbmd0aERvdWJsZShsZW5ndGgudHlwZSwgbGVuZ3RoLnZhbHVlLCBDU1NQcm9wZXJ0eUZvbnRT
aXplLCAmZm9udENhc2NhZGUuZm9udE1ldHJpY3MoKSwgJmZvbnRDYXNjYWRlLmZvbnREZXNjcmlw
dGlvbigpLCAmZm9udENhc2NhZGUuZm9udERlc2NyaXB0aW9uKCksIGlzPERvY3VtZW50Pihjb250
ZXh0KSA/IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5yZW5kZXJWaWV3KCkgOiBudWxscHRy
KSk7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KENTU1ByaW1pdGl2ZVZh
bHVlOjpjb21wdXRlVW56b29tZWROb25DYWxjTGVuZ3RoRG91YmxlKGxlbmd0aC50eXBlLCBsZW5n
dGgudmFsdWUsIENTU1Byb3BlcnR5Rm9udFNpemUsICZmb250Q2FzY2FkZS5mb250TWV0cmljc09m
UHJpbWFyeUZvbnQoKSwgJmZvbnRDYXNjYWRlLmZvbnREZXNjcmlwdGlvbigpLCAmZm9udENhc2Nh
ZGUuZm9udERlc2NyaXB0aW9uKCksIGlzPERvY3VtZW50Pihjb250ZXh0KSA/IGRvd25jYXN0PERv
Y3VtZW50Pihjb250ZXh0KS5yZW5kZXJWaWV3KCkgOiBudWxscHRyKSk7CiAgICAgICAgIH0sIFsm
XSAoY29uc3QgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpQZXJjZW50UmF3JiBwZXJjZW50YWdl
KSB7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KChwYXJlbnRTaXplICog
cGVyY2VudGFnZS52YWx1ZSkgLyAxMDAuMCk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0xlbmd0aENvbnRleHQuY3BwCmluZGV4IDBkZGFiOTgwMWYxNmM4ODAwZTQwOTE0MzdhN2Y3
MjhlMzRmMGQwMTQuLjE1NGU4ZGExMTgwZGU0ZTY5NTg3MDhlMjJiOGYxZWU4MGI0MzBhYjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoQ29udGV4dC5jcHAKQEAgLTI2Nyw3ICsyNjcsNyBA
QCBFeGNlcHRpb25PcjxmbG9hdD4gU1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlRnJvbVVz
ZXJVbml0c1RvRVhTKGZsb2F0IHZhbHVlKQogCiAgICAgLy8gVXNlIG9mIGNlaWwgYWxsb3dzIGEg
cGl4ZWwgbWF0Y2ggdG8gdGhlIFczQ3MgZXhwZWN0ZWQgb3V0cHV0IG9mIGNvb3Jkcy11bml0cy0w
My1iLnN2ZwogICAgIC8vIGlmIHRoaXMgY2F1c2VzIHByb2JsZW1zIGluIHJlYWwgd29ybGQgY2Fz
ZXMgbWF5YmUgaXQgd291bGQgYmUgYmVzdCB0byByZW1vdmUgdGhpcwotICAgIGZsb2F0IHhIZWln
aHQgPSBzdGQ6OmNlaWwoc3R5bGUtPmZvbnRNZXRyaWNzKCkueEhlaWdodCgpKTsKKyAgICBmbG9h
dCB4SGVpZ2h0ID0gc3RkOjpjZWlsKHN0eWxlLT5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS54
SGVpZ2h0KCkpOwogICAgIGlmICgheEhlaWdodCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IE5vdFN1cHBvcnRlZEVycm9yIH07CiAKQEAgLTI4Miw3ICsyODIsNyBAQCBFeGNlcHRpb25Pcjxm
bG9hdD4gU1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlRnJvbUVYU1RvVXNlclVuaXRzKGZs
b2F0IHZhbHVlKQogCiAgICAgLy8gVXNlIG9mIGNlaWwgYWxsb3dzIGEgcGl4ZWwgbWF0Y2ggdG8g
dGhlIFczQ3MgZXhwZWN0ZWQgb3V0cHV0IG9mIGNvb3Jkcy11bml0cy0wMy1iLnN2ZwogICAgIC8v
IGlmIHRoaXMgY2F1c2VzIHByb2JsZW1zIGluIHJlYWwgd29ybGQgY2FzZXMgbWF5YmUgaXQgd291
bGQgYmUgYmVzdCB0byByZW1vdmUgdGhpcwotICAgIHJldHVybiB2YWx1ZSAqIHN0ZDo6Y2VpbChz
dHlsZS0+Zm9udE1ldHJpY3MoKS54SGVpZ2h0KCkpOworICAgIHJldHVybiB2YWx1ZSAqIHN0ZDo6
Y2VpbChzdHlsZS0+Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkueEhlaWdodCgpKTsKIH0KIAog
Ym9vbCBTVkdMZW5ndGhDb250ZXh0OjpkZXRlcm1pbmVWaWV3cG9ydChGbG9hdFNpemUmIHZpZXdw
b3J0U2l6ZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQppbmRleCAzNDU2YmVmMzY3MTdhZmEyN2ZiZDk1YTNh
MjQ2OTg2ODYwYWM4ZTUxLi4zYWI4NDQ2Mzk1YTlkZDlmOWQ3NjkxZGNmYzQyYjVkNTNhZGZjOTI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQ
YWdlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2Ev
V2ViUGFnZUNvY29hLm1tCkBAIC0xNzYsNyArMTc2LDcgQEAgRGljdGlvbmFyeVBvcHVwSW5mbyBX
ZWJQYWdlOjpkaWN0aW9uYXJ5UG9wdXBJbmZvRm9yUmFuZ2UoRnJhbWUmIGZyYW1lLCBjb25zdCBT
aW0KICAgICBJbnRSZWN0IHJhbmdlUmVjdCA9IGZyYW1lLnZpZXcoKS0+Y29udGVudHNUb1dpbmRv
dyhxdWFkc1swXS5lbmNsb3NpbmdCb3VuZGluZ0JveCgpKTsKIAogICAgIGNvbnN0IFJlbmRlclN0
eWxlKiBzdHlsZSA9IHJhbmdlLnN0YXJ0Q29udGFpbmVyKCkucmVuZGVyU3R5bGUoKTsKLSAgICBm
bG9hdCBzY2FsZWRBc2NlbnQgPSBzdHlsZSA/IHN0eWxlLT5mb250TWV0cmljcygpLmFzY2VudCgp
ICogcGFnZVNjYWxlRmFjdG9yKCkgOiAwOworICAgIGZsb2F0IHNjYWxlZEFzY2VudCA9IHN0eWxl
ID8gc3R5bGUtPmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudCgpICogcGFnZVNjYWxl
RmFjdG9yKCkgOiAwOwogICAgIGRpY3Rpb25hcnlQb3B1cEluZm8ub3JpZ2luID0gRmxvYXRQb2lu
dChyYW5nZVJlY3QueCgpLCByYW5nZVJlY3QueSgpICsgc2NhbGVkQXNjZW50KTsKICAgICBkaWN0
aW9uYXJ5UG9wdXBJbmZvLm9wdGlvbnMgPSBvcHRpb25zOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRy
b2xsZXIubW0KaW5kZXggZjJhZmIwODA3NmE2NWQzYzBhZjNlNDdjMTkwYmIwM2ExOTdlODIzZC4u
YjY4NmVjYjk5MzhiOWY2OWUxMWU4Yzk5M2NkNjZmZTRkZWUyYTBlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0
aW9uQ29udHJvbGxlci5tbQpAQCAtNTIzLDcgKzUyMyw3IEBAIHN0YXRpYyBXZWJDb3JlOjpJbnRS
ZWN0IGVsZW1lbnRCb3VuZGluZ0JveEluV2luZG93Q29vcmRpbmF0ZXNGcm9tTm9kZShXZWJDb3Jl
OjpOCiAgICAgfQogCiAgICAgYXV0byBzdHlsZSA9IHJhbmdlLnN0YXJ0LmNvbnRhaW5lci0+cmVu
ZGVyU3R5bGUoKTsKLSAgICBmbG9hdCBzY2FsZWREZXNjZW50ID0gc3R5bGUgPyBzdHlsZS0+Zm9u
dE1ldHJpY3MoKS5kZXNjZW50KCkgKiBmcmFtZS0+cGFnZSgpLT5wYWdlU2NhbGVGYWN0b3IoKSA6
IDA7CisgICAgZmxvYXQgc2NhbGVkRGVzY2VudCA9IHN0eWxlID8gc3R5bGUtPmZvbnRNZXRyaWNz
T2ZQcmltYXJ5Rm9udCgpLmRlc2NlbnQoKSAqIGZyYW1lLT5wYWdlKCktPnBhZ2VTY2FsZUZhY3Rv
cigpIDogMDsKIAogICAgIGF1dG8gcXVhZHMgPSBXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFic29s
dXRlVGV4dFF1YWRzKHJhbmdlKTsKICAgICBpZiAocXVhZHMuaXNFbXB0eSgpKSB7Cg==
</data>
<flag name="review"
          id="476897"
          type_id="1"
          status="+"
          setter="zalan"
    />
    <flag name="commit-queue"
          id="476900"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450495</attachid>
            <date>2022-01-31 20:59:11 -0800</date>
            <delta_ts>2022-01-31 22:05:28 -0800</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-235938-20220131205910.patch</filename>
            <type>text/plain</type>
            <size>105496</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4ODY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTAxNDllMjkwZDY2N2Rh
MWEyYzAxNjAxMjc4YTgyOGJlZjRkNTQ1Yi4uNTg1NjQ0MGIyNGY2ZmNlZDhkOGQ1NmQwNzc0ZGIw
Njk1YjJlYWI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2MCBAQAorMjAyMi0wMS0zMSAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBG
b250Q2FzY2FkZTo6Zm9udE1ldHJpY3MoKSBhbmQgUmVuZGVyU3R5bGU6OmZvbnRNZXRyaWNzKCkg
dG8gZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTkzOAorCisgICAgICAgIFJldmlld2VkIGJ5IEFsYW4g
QnVqdGFzLgorCisgICAgICAgIEl0J3MgcHJvYmFibHkgZ29vZCB0byByZW1pbmQgcGVvcGxlIHRo
YXQgd2hlbiB0aGV5IGNhbGwgdGhpcyBmdW5jdGlvbiwKKyAgICAgICAgdGhleSBtaWdodCBub3Qg
YmUgZ2V0dGluZyB3aGF0IHRoZXkgbWlnaHQgdGhpbmsgdGhleSdyZSBnZXR0aW5nLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKwor
ICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZU5vbkNhbGNMZW5ndGhEb3VibGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmVxdWFsRm9yTGVuZ3RoUmVzb2x1dGlvbik6Cisg
ICAgICAgICogZGlzcGxheS9jc3MvRGlzcGxheUJveFBhaW50ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheTo6Qm94UGFpbnRlcjo6cGFpbnRCb3hDb250ZW50KToKKyAgICAgICAgKiBk
aXNwbGF5L2Nzcy9EaXNwbGF5U3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlN0
eWxlOjpmb250TWV0cmljc09mUHJpbWFyeUZvbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheTo6U3R5bGU6OmZvbnRNZXRyaWNzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBo
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxl
bWVudDo6Y3JlYXRlSW5uZXJUZXh0U3R5bGUpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZTo6Rm9udFByb3h5Ojpmb250TWV0cmljc09mUHJpbWFyeUZvbnQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6
ZHJhd1RleHRVbmNoZWNrZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZTo6bWVhc3VyZVRleHRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjp0ZXh0T2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OkZvbnRQcm94eTo6Zm9udE1ldHJpY3MgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2UuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpkcmF3UnVsZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6OmRyYXdFbGVtZW50VGl0bGUpOgorICAgICAgICAo
V2ViQ29yZTo6ZXhwZWN0ZWRTaXplRm9yTGF5b3V0TGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6
ZHJhd0xheW91dExhYmVsKToKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVGb3JtYXR0aW5nUXVpcmtzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6SW5saW5lRm9ybWF0dGluZ1F1aXJrczo6aW5pdGlhbExpbmVIZWlnaHQgY29uc3QpOgorICAg
ICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxldmVsQm94Lmg6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om1fc3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpJbmxpbmVMZXZlbEJveDo6cHJlZmVycmVkTGluZUhlaWdodCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUxldmVsQm94OjpwcmltYXJ5Zm9udE1ldHJpY3NP
ZlByaW1hcnlGb250IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGV2
ZWxCb3g6OnByaW1hcnlGb250TWV0cmljcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmxvZ2ljYWxSZWN0Rm9yVGV4dFJ1biBjb25zdCk6
CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJv
eEJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRlcjo6
c2V0VmVydGljYWxHZW9tZXRyeUZvckxpbmVCcmVha0JveCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkxpbmVCb3hCdWlsZGVyOjpzZXRJbml0aWFsVmVydGljYWxHZW9tZXRyeUZv
cklubGluZUJveCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkxpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OmNvbXB1dGVMaW5lQm94TG9naWNhbEhl
aWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hWZXJ0aWNhbEFs
aWduZXI6OmNvbXB1dGVSb290SW5saW5lQm94VmVydGljYWxQb3NpdGlvbiBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OmFsaWduSW5saW5l
TGV2ZWxCb3hlcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2Nh
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmZsb2F0V2lkdGhGb3JTaW1w
bGVUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpmbG9hdFdpZHRo
Rm9yQ29tcGxleFRleHQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YXNjYWRlLmg6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6Zm9udE1ldHJpY3NPZlBy
aW1hcnlGb250IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpmb250TWV0
cmljcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL0NhcmV0UmVjdENvbXB1
dGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVDYXJldFJlY3RGb3JFbXB0eUVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUNhcmV0UmVjdEZvckJveCk6CisgICAg
ICAgICogcmVuZGVyaW5nL0xlZ2FjeUVsbGlwc2lzQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeUVsbGlwc2lzQm94OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lFbGxp
cHNpc0JveDo6cGFpbnRNYXJrdXBCb3gpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5RWxsaXBz
aXNCb3g6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvTGVnYWN5SW5saW5lQm94
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUJveDo6bG9naWNhbEhlaWdodCBj
b25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL0xlZ2FjeUlubGluZUZsb3dCb3guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6YWRkVG9MaW5lKToKKyAgICAgICAg
KFdlYkNvcmU6OnBsYWNlQ2hpbGRJbmxpbmVCb3hlc0luQmxvY2tEaXJlY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0luQmxvY2tEaXJlY3Rp
b24pOgorICAgICAgICAqIHJlbmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnNldExvZ2ljYWxXaWR0aEZvclRleHRSdW4pOgorICAgICAgICAqIHJlbmRlcmlu
Zy9MZWdhY3lSb290SW5saW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJ
bmxpbmVCb3g6OmxpbmVTbmFwQWRqdXN0bWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
ZWdhY3lSb290SW5saW5lQm94Ojphc2NlbnRBbmREZXNjZW50Rm9yQm94IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6OnZlcnRpY2FsUG9zaXRpb25Gb3JCb3gp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9jazo6YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9jazo6aW5saW5lQmxvY2tCYXNlbGluZSBjb25zdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
a0Zsb3c6OmFkanVzdEluaXRpYWxMZXR0ZXJQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9ja0Zsb3c6OmZpcnN0TGluZUJhc2VsaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrRmxvdzo6aW5saW5lQmxvY2tCYXNlbGluZSBjb25zdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnNldElt
YWdlU2l6ZUZvckFsdFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnBhaW50
UmVwbGFjZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjptYXlBZmZlY3RMYXlvdXQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxpbmVCcmVhazo6YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXRlbU9mZnNldEZvckFs
aWdubWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjppdGVtSGVpZ2h0IGNv
bnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMaXN0TWFya2VyOjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdE1h
cmtlcjo6dXBkYXRlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2Vy
Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMaXN0TWFya2VyOjp1cGRhdGVNYXJnaW5zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxp
c3RNYXJrZXI6OnJlbGF0aXZlTWFya2VyUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clJ1YnlSdW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUnVieVJ1bjo6bGF5b3V0Qmxv
Y2spOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0Qm94UGFpbnRlcjo6cGFpbnRGb3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRCb3hQYWludGVyOjpwYWludENvbXBvc2l0aW9uVW5kZXJsaW5lKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRCb3hQYWludGVyOjpjYWxjdWxhdGVEb2N1bWVudE1hcmtlckJvdW5kcyk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0Qm94UGFpbnRlcjo6dGV4dE9yaWdpbkZyb21QYWludFJl
Y3QgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dERlY29yYXRpb25QYWludGVyOjpwYWludEJhY2tncm91
bmREZWNvcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblBhaW50ZXI6
OnBhaW50Rm9yZWdyb3VuZERlY29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHREZWNv
cmF0aW9uUGFpbnRlcjo6cGFpbnRMaW5lVGhyb3VnaCk6CisgICAgICAgICogcmVuZGVyaW5nL1Rl
eHRQYWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRQYWludGVyOjpwYWludFRleHRB
bmRFbXBoYXNpc01hcmtzSWZOZWVkZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9saW5lL0xpbmVJ
bmxpbmVIZWFkZXJzLmg6CisgICAgICAgIChXZWJDb3JlOjpyZXF1aXJlc0xpbmVCb3hGb3JDb250
ZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmF4aXNIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6dG9Vc2Vy
VW5pdHMpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxSb290Ojp2ZXJ0aWNhbFBhcmFtZXRlcnMp
OgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTY3JpcHRzOjp2ZXJ0aWNhbFBhcmFtZXRlcnMg
Y29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFVuZGVyT3Zlcjo6dmVydGljYWxQ
YXJhbWV0ZXJzIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmZvbnRNZXRyaWNzT2ZQcmltYXJ5
Rm9udCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y29tcHV0ZUxpbmVI
ZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmZvbnRNZXRyaWNz
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lVGV4dDo6cG9zaXRpb25Gb3JQb2ludCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnNlbGVjdGlvblJlY3RGb3JUZXh0RnJhZ21lbnQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9u
V2l0aFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50VGV4
dFdpdGhTaGFkb3dzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OmNhbGN1
bGF0ZUJvdW5kYXJpZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJv
eDo6bm9kZUF0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEVu
Z2luZUJhc2VsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRMYXlvdXRFbmdpbmVC
YXNlbGluZTo6Y2FsY3VsYXRlQmFzZWxpbmVTaGlmdCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmU6OmNhbGN1bGF0ZUFsaWdubWVudEJhc2VsaW5l
U2hpZnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dExheW91dEVuZ2luZUJhc2Vs
aW5lOjpjYWxjdWxhdGVHbHlwaEFkdmFuY2VBbmRPcmllbnRhdGlvbiBjb25zdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdUZXh0TWV0cmljczo6U1ZHVGV4dE1ldHJpY3MpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
U1ZHVGV4dFF1ZXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGN1bGF0ZUdseXBoQm91bmRh
cmllcyk6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyRmly
c3RMZXR0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3R5bGVGb3JGaXJzdExldHRlcik6Cisg
ICAgICAgICogc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMpOgorICAgICAgICAqIHN0eWxlL1N0eWxlUmVz
b2x2ZUZvckZvbnRSYXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OnJlc29sdmVGb3JG
b250UmF3KToKKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3RoQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdMZW5ndGhDb250ZXh0Ojpjb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzVG9FWFMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVl
RnJvbUVYU1RvVXNlclVuaXRzIGNvbnN0KToKKwogMjAyMi0wMS0zMSAgU2FpZCBBYm91LUhhbGxh
d2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIFBhdHRlcm4gc2hv
dWxkIGhvbGQgU291cmNlSW1hZ2Ugd2hpY2ggY2FuIGJlIGNvbnZlcnRlZCB0byBhIE5hdGl2ZUlt
YWdlIG9ubHkgd2hlbiBuZWVkZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggM2FmNzJiMzhmNDRmMDE1ZjM0NDRjNTJm
YmQ1ZjYzZGRhYjY1NGYwMS4uMDg3NzAyNDkyOTljN2U2YzYzYjdhNjU5M2ZmZjZhN2FiODdjYzY1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMS0zMSAgTXlsZXMgQy4gTWF4Zmll
bGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBGb250Q2FzY2FkZTo6
Zm9udE1ldHJpY3MoKSBhbmQgUmVuZGVyU3R5bGU6OmZvbnRNZXRyaWNzKCkgdG8gZm9udE1ldHJp
Y3NPZlByaW1hcnlGb250KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNTkzOAorCisgICAgICAgIFJldmlld2VkIGJ5IEFsYW4gQnVqdGFzLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6ZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlKToKKwogMjAy
Mi0wMS0zMSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBb
R1BVIFByb2Nlc3NdIFBhdHRlcm4gc2hvdWxkIGhvbGQgU291cmNlSW1hZ2Ugd2hpY2ggY2FuIGJl
IGNvbnZlcnRlZCB0byBhIE5hdGl2ZUltYWdlIG9ubHkgd2hlbiBuZWVkZWQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwppbmRleCBhOGVjNWRlZGUxMjFmZDcwMDhmNGJmNmRlN2E0NmQwNzZjMTA3
YWEyLi5jZTJkMTY5M2ZlOWJhOTM0NjJkNTU3Nzc4YzU0NjMyZGE2ODgxNDA0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDEtMzEgIE15bGVzIEMu
IE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgRm9udENh
c2NhZGU6OmZvbnRNZXRyaWNzKCkgYW5kIFJlbmRlclN0eWxlOjpmb250TWV0cmljcygpIHRvIGZv
bnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzU5MzgKKworICAgICAgICBSZXZpZXdlZCBieSBBbGFuIEJ1anRh
cy4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbToK
KyAgICAgICAgKCtbV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciBfZGljdGlvbmFyeVBvcHVw
SW5mb0ZvclJhbmdlOmluRnJhbWU6d2l0aExvb2t1cE9wdGlvbnM6aW5kaWNhdG9yT3B0aW9uczp0
cmFuc2l0aW9uOl0pOgorCiAyMDIyLTAxLTMwICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIERlbGV0ZSBydW50aW1lIHByZWZlcmVuY2UgZm9yIGVuYWJsaW5nIGtl
eWdlbiBlbGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0
ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAKaW5kZXggNDZl
ZTMzMDI2M2UxOGJmMDk4YTdlZDU2OTMzM2YyMDhhODE0OTI2ZS4uNGM3YmMxNThiNTM3MTljNmRi
ZWMyMDdlMTIwNzhiNDc2ZjE5Mjg4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0
LmNwcApAQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMgaW50IGJhc2VsaW5lUG9zaXRpb25Gb3JSZW5k
ZXJPYmplY3QoUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QpCiAgICAgLy8gRklYTUU6IFRoaXMg
aW1wbGVtZW50YXRpb24gb2YgYmFzZWxpbmVQb3NpdGlvbiBvcmlnaW5hdGVzIGZyb20gUmVuZGVy
T2JqZWN0LmNwcCBhbmQgd2FzCiAgICAgLy8gcmVtb3ZlZCBpbiByNzAwNzIuIFRoZSBpbXBsZW1l
bnRhdGlvbiBsb29rcyBpbmNvcnJlY3QgdGhvdWdoLCBiZWNhdXNlIHRoaXMgaXMgbm90IHRoZQog
ICAgIC8vIGJhc2VsaW5lIG9mIHRoZSB1bmRlcmx5aW5nIFJlbmRlck9iamVjdCwgYnV0IG9mIHRo
ZSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LgotICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250
TWV0cmljcyA9IHJlbmRlck9iamVjdC0+Zmlyc3RMaW5lU3R5bGUoKS5mb250TWV0cmljcygpOwor
ICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHJlbmRlck9iamVjdC0+Zmlyc3RM
aW5lU3R5bGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsKICAgICByZXR1cm4gZm9udE1l
dHJpY3MuYXNjZW50KCkgKyAocmVuZGVyT2JqZWN0LT5maXJzdExpbmVTdHlsZSgpLmNvbXB1dGVk
TGluZUhlaWdodCgpIC0gZm9udE1ldHJpY3MuaGVpZ2h0KCkpIC8gMjsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKaW5kZXggMDA3Y2FlZDc4ZTEyOTQ3YmJkN2Jj
ZWRkOGJkMTZhMmY5YjE0OTQwOC4uZjY0MjY1YTAzMjc5OWI3ZWYzMzhkNzY5NzQ2Y2MzZjljYWIz
OGZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCkBAIC04MTQs
NyArODE0LDcgQEAgZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTm9uQ2FsY0xlbmd0
aERvdWJsZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb24KICAgICAgICAgLy8gV2UgcmVhbGx5
IG5lZWQgdG8gY29tcHV0ZSBFWCB1c2luZyBmb250TWV0cmljcyBmb3IgdGhlIG9yaWdpbmFsIHNw
ZWNpZmllZFNpemUgYW5kIG5vdCB1c2UKICAgICAgICAgLy8gb3VyIGFjdHVhbCBjb25zdHJ1Y3Rl
ZCByZW5kZXJpbmcgZm9udC4KICAgICAgICAgQVNTRVJUKGNvbnZlcnNpb25EYXRhLnN0eWxlKCkp
OwotICAgICAgICB2YWx1ZSA9IGNvbXB1dGVVbnpvb21lZE5vbkNhbGNMZW5ndGhEb3VibGUocHJp
bWl0aXZlVHlwZSwgdmFsdWUsIGNvbnZlcnNpb25EYXRhLnByb3BlcnR5VG9Db21wdXRlKCksICZj
b252ZXJzaW9uRGF0YS5zdHlsZSgpLT5mb250TWV0cmljcygpLCAmY29udmVyc2lvbkRhdGEuc3R5
bGUoKS0+Zm9udERlc2NyaXB0aW9uKCkpOworICAgICAgICB2YWx1ZSA9IGNvbXB1dGVVbnpvb21l
ZE5vbkNhbGNMZW5ndGhEb3VibGUocHJpbWl0aXZlVHlwZSwgdmFsdWUsIGNvbnZlcnNpb25EYXRh
LnByb3BlcnR5VG9Db21wdXRlKCksICZjb252ZXJzaW9uRGF0YS5zdHlsZSgpLT5mb250TWV0cmlj
c09mUHJpbWFyeUZvbnQoKSwgJmNvbnZlcnNpb25EYXRhLnN0eWxlKCktPmZvbnREZXNjcmlwdGlv
bigpKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkVNUzoK
QEAgLTgyNCw3ICs4MjQsNyBAQCBkb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVOb25D
YWxjTGVuZ3RoRG91YmxlKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbgogICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkNTU19DSFM6CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0lDOgogICAgICAg
ICBBU1NFUlQoY29udmVyc2lvbkRhdGEuc3R5bGUoKSk7Ci0gICAgICAgIHZhbHVlID0gY29tcHV0
ZVVuem9vbWVkTm9uQ2FsY0xlbmd0aERvdWJsZShwcmltaXRpdmVUeXBlLCB2YWx1ZSwgY29udmVy
c2lvbkRhdGEucHJvcGVydHlUb0NvbXB1dGUoKSwgJmNvbnZlcnNpb25EYXRhLnN0eWxlKCktPmZv
bnRNZXRyaWNzKCkpOworICAgICAgICB2YWx1ZSA9IGNvbXB1dGVVbnpvb21lZE5vbkNhbGNMZW5n
dGhEb3VibGUocHJpbWl0aXZlVHlwZSwgdmFsdWUsIGNvbnZlcnNpb25EYXRhLnByb3BlcnR5VG9D
b21wdXRlKCksICZjb252ZXJzaW9uRGF0YS5zdHlsZSgpLT5mb250TWV0cmljc09mUHJpbWFyeUZv
bnQoKSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BYOgpA
QCAtOTE1LDcgKzkxNSw3IEBAIGRvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZU5vbkNh
bGNMZW5ndGhEb3VibGUoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uCiAgICAgICAgIEFTU0VS
VChjb252ZXJzaW9uRGF0YS5zdHlsZSgpKTsKICAgICAgICAgaWYgKGNvbnZlcnNpb25EYXRhLmNv
bXB1dGluZ0xpbmVIZWlnaHQoKSB8fCBjb252ZXJzaW9uRGF0YS5jb21wdXRpbmdGb250U2l6ZSgp
KSB7CiAgICAgICAgICAgICAvLyBUcnkgdG8gZ2V0IHRoZSBwYXJlbnQncyBjb21wdXRlZCBsaW5l
LWhlaWdodCwgb3IgZmFsbCBiYWNrIHRvIHRoZSBpbml0aWFsIGxpbmUtaGVpZ2h0IG9mIHRoaXMg
ZWxlbWVudCdzIGZvbnQgc3BhY2luZy4KLSAgICAgICAgICAgIHZhbHVlICo9IGNvbnZlcnNpb25E
YXRhLnBhcmVudFN0eWxlKCkgPyBjb252ZXJzaW9uRGF0YS5wYXJlbnRTdHlsZSgpLT5jb21wdXRl
ZExpbmVIZWlnaHQoKSA6IGNvbnZlcnNpb25EYXRhLnN0eWxlKCktPmZvbnRNZXRyaWNzKCkubGlu
ZVNwYWNpbmcoKTsKKyAgICAgICAgICAgIHZhbHVlICo9IGNvbnZlcnNpb25EYXRhLnBhcmVudFN0
eWxlKCkgPyBjb252ZXJzaW9uRGF0YS5wYXJlbnRTdHlsZSgpLT5jb21wdXRlZExpbmVIZWlnaHQo
KSA6IGNvbnZlcnNpb25EYXRhLnN0eWxlKCktPmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmxp
bmVTcGFjaW5nKCk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgdmFsdWUgKj0gY29udmVy
c2lvbkRhdGEuc3R5bGUoKS0+Y29tcHV0ZWRMaW5lSGVpZ2h0KCk7CiAgICAgICAgIGJyZWFrOwpA
QCAtOTUxLDkgKzk1MSw5IEBAIGJvb2wgQ1NTUHJpbWl0aXZlVmFsdWU6OmVxdWFsRm9yTGVuZ3Ro
UmVzb2x1dGlvbihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGVBLCBjb25zCiAgICAgaWYgKHN0eWxl
QS5mb250RGVzY3JpcHRpb24oKS5zcGVjaWZpZWRTaXplKCkgIT0gc3R5bGVCLmZvbnREZXNjcmlw
dGlvbigpLnNwZWNpZmllZFNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYg
KHN0eWxlQS5mb250TWV0cmljcygpLnhIZWlnaHQoKSAhPSBzdHlsZUIuZm9udE1ldHJpY3MoKS54
SGVpZ2h0KCkpCisgICAgaWYgKHN0eWxlQS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS54SGVp
Z2h0KCkgIT0gc3R5bGVCLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLnhIZWlnaHQoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChzdHlsZUEuZm9udE1ldHJpY3MoKS56ZXJvV2lk
dGgoKSAhPSBzdHlsZUIuZm9udE1ldHJpY3MoKS56ZXJvV2lkdGgoKSkKKyAgICBpZiAoc3R5bGVB
LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLnplcm9XaWR0aCgpICE9IHN0eWxlQi5mb250TWV0
cmljc09mUHJpbWFyeUZvbnQoKS56ZXJvV2lkdGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgaWYgKHN0eWxlQS56b29tKCkgIT0gc3R5bGVCLnpvb20oKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hQYWludGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hQYWludGVyLmNwcAppbmRleCAyYzYzYWU4YzRh
ZWViZWYwYzEwYTZlZDI1MThkNTBhYzNiZTI1Yzc0Li41OTVlMGNlNTc0YzE0MWYyYWMwMGVkZWJj
NzE3MTc5MWYwMWUyMjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9E
aXNwbGF5Qm94UGFpbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlz
cGxheUJveFBhaW50ZXIuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgQm94UGFpbnRlcjo6cGFp
bnRCb3hDb250ZW50KGNvbnN0IEJveCYgYm94LCBQYWludGluZ0NvbnRleHQmIHBhaW50aW5nQ29u
dGV4CiAgICAgICAgIHBhaW50aW5nQ29udGV4dC5jb250ZXh0LnNldEZpbGxDb2xvcihzdHlsZS5j
b2xvcigpKTsKIAogICAgICAgICAvLyBGSVhNRTogQWRkIG5vbi1iYXNlbGluZSBhbGlnbiBwYWlu
dGluZwotICAgICAgICBhdXRvIGJhc2VsaW5lID0gdGV4dFJlY3QueSgpICsgc3R5bGUuZm9udE1l
dHJpY3MoKS5hc2NlbnQoKTsKKyAgICAgICAgYXV0byBiYXNlbGluZSA9IHRleHRSZWN0LnkoKSAr
IHN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudCgpOwogICAgICAgICBhdXRv
IGV4cGFuc2lvbiA9IHRleHRCb3guZXhwYW5zaW9uKCk7CiAKICAgICAgICAgYXV0byB0ZXh0UnVu
ID0gVGV4dFJ1biB7IHRleHRCb3gudGV4dCgpLm9yaWdpbmFsQ29udGVudCgpLCB0ZXh0UmVjdC54
KCksIGV4cGFuc2lvbi5ob3Jpem9udGFsRXhwYW5zaW9uLCBleHBhbnNpb24uYmVoYXZpb3IgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlTdHlsZS5oIGIv
U291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVN0eWxlLmgKaW5kZXggN2VlMzBhM2Ux
MzEyOTRhM2Q1NWFjZWY0Y2FhMGE3MWMzZDEwYWQ1OC4uZmRiNGEyZTQ1NjgzZTViZTliNTAyZmZh
NzFhYTZmZTk4MTI5NjBjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3Mv
RGlzcGxheVN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVN0
eWxlLmgKQEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogICAgIGJvb2wgcGFydGljaXBhdGVzSW5a
T3JkZXJTb3J0aW5nKCkgY29uc3QgeyByZXR1cm4gaXNQb3NpdGlvbmVkKCkgfHwgaXNTdGFja2lu
Z0NvbnRleHQoKTsgfQogCiAgICAgY29uc3QgRm9udENhc2NhZGUmIGZvbnRDYXNjYWRlKCkgY29u
c3QgeyByZXR1cm4gbV9mb250Q2FzY2FkZTsgfQotICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250
TWV0cmljcygpIGNvbnN0IHsgcmV0dXJuIG1fZm9udENhc2NhZGUuZm9udE1ldHJpY3MoKTsgfQor
ICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljc09mUHJpbWFyeUZvbnQoKSBjb25zdCB7
IHJldHVybiBtX2ZvbnRDYXNjYWRlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOyB9CiAgICAg
CiAgICAgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BhY2l0eTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCBkMDc2MWVlYzlmM2MyODU5
M2EyODYzYzAwYzkzNTdhMWY3NmE3ODJlLi4wNWM1ZmM0ZDkyNmMxOTUwZDU1YjZiZTA3NjBmMjdm
MmU3OWJhZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAg
LTIxNzgsNyArMjE3OCw3IEBAIFJlbmRlclN0eWxlIEhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZUlu
bmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKICAgICB9CiAKICAgICAvLyBE
byBub3QgYWxsb3cgbGluZS1oZWlnaHQgdG8gYmUgc21hbGxlciB0aGFuIG91ciBkZWZhdWx0Lgot
ICAgIGlmICh0ZXh0QmxvY2tTdHlsZS5mb250TWV0cmljcygpLmxpbmVTcGFjaW5nKCkgPiBzdHls
ZS5jb21wdXRlZExpbmVIZWlnaHQoKSkKKyAgICBpZiAodGV4dEJsb2NrU3R5bGUuZm9udE1ldHJp
Y3NPZlByaW1hcnlGb250KCkubGluZVNwYWNpbmcoKSA+IHN0eWxlLmNvbXB1dGVkTGluZUhlaWdo
dCgpKQogICAgICAgICB0ZXh0QmxvY2tTdHlsZS5zZXRMaW5lSGVpZ2h0KFJlbmRlclN0eWxlOjpp
bml0aWFsTGluZUhlaWdodCgpKTsKIAogICAgIHJldHVybiB0ZXh0QmxvY2tTdHlsZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZS5jcHAKaW5kZXggYjg5ZTc3ZmI2MDBlMGVjYTkzZjAxOTI0MzllNDEwNzNjOTVh
ZDEzOC4uZDllY2Y2NmQ2ZDZhMTRlZWMzN2ZlMTJmZmM5MWY3N2YyZWIxZjgwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZS5jcHAKQEAgLTQwNCw5ICs0MDQsOSBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2U6OkZvbnRQcm94eTo6aW5pdGlhbGl6ZShGb250U2VsZWN0b3ImIGZvbnRTZWxl
YwogICAgIG1fZm9udC5mb250U2VsZWN0b3IoKS0+cmVnaXN0ZXJGb3JJbnZhbGlkYXRpb25DYWxs
YmFja3MoKnRoaXMpOwogfQogCi1jb25zdCBGb250TWV0cmljcyYgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZTo6Rm9udFByb3h5Ojpmb250TWV0cmljcygpIGNvbnN0Citjb25zdCBGb250TWV0
cmljcyYgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Rm9udFByb3h5Ojpmb250TWV0cmlj
c09mUHJpbWFyeUZvbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX2ZvbnQuZm9udE1ldHJpY3Mo
KTsKKyAgICByZXR1cm4gbV9mb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwogfQogCiBj
b25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
OjpGb250UHJveHk6OmZvbnREZXNjcmlwdGlvbigpIGNvbnN0CkBAIC0yNDA3LDcgKzI0MDcsNyBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdUZXh0VW5jaGVja2VkKGNv
bnN0IFRleHRSdW4mIHRleHRSdW4sIGRvdQogewogICAgIGF1dG8qIGMgPSBkcmF3aW5nQ29udGV4
dCgpOwogICAgIGF1dG8mIGZvbnRQcm94eSA9ICp0aGlzLT5mb250UHJveHkoKTsKLSAgICBjb25z
dCBhdXRvJiBmb250TWV0cmljcyA9IGZvbnRQcm94eS5mb250TWV0cmljcygpOworICAgIGNvbnN0
IGF1dG8mIGZvbnRNZXRyaWNzID0gZm9udFByb3h5LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgp
OwogCiAgICAgLy8gRklYTUU6IE5lZWQgdG8gdHVybiBvZmYgZm9udCBzbW9vdGhpbmcuCiAKQEAg
LTI1MzAsNyArMjUzMCw3IEBAIFJlZjxUZXh0TWV0cmljcz4gQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZTo6bWVhc3VyZVRleHRJbnRlcm5hbChjb25zdCBUZXh0UnVuCiAgICAgUmVmPFRleHRN
ZXRyaWNzPiBtZXRyaWNzID0gVGV4dE1ldHJpY3M6OmNyZWF0ZSgpOwogCiAgICAgYXV0byYgZm9u
dCA9ICpmb250UHJveHkoKTsKLSAgICBhdXRvJiBmb250TWV0cmljcyA9IGZvbnQuZm9udE1ldHJp
Y3MoKTsKKyAgICBhdXRvJiBmb250TWV0cmljcyA9IGZvbnQuZm9udE1ldHJpY3NPZlByaW1hcnlG
b250KCk7CiAKICAgICBHbHlwaE92ZXJmbG93IGdseXBoT3ZlcmZsb3c7CiAgICAgZ2x5cGhPdmVy
Zmxvdy5jb21wdXRlQm91bmRzID0gdHJ1ZTsKQEAgLTI1NTcsNyArMjU1Nyw3IEBAIFJlZjxUZXh0
TWV0cmljcz4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6bWVhc3VyZVRleHRJbnRlcm5h
bChjb25zdCBUZXh0UnVuCiAKIEZsb2F0UG9pbnQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZTo6dGV4dE9mZnNldChmbG9hdCB3aWR0aCwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCiB7Ci0g
ICAgYXV0byYgZm9udE1ldHJpY3MgPSBmb250UHJveHkoKS0+Zm9udE1ldHJpY3MoKTsKKyAgICBh
dXRvJiBmb250TWV0cmljcyA9IGZvbnRQcm94eSgpLT5mb250TWV0cmljc09mUHJpbWFyeUZvbnQo
KTsKICAgICBGbG9hdFBvaW50IG9mZnNldDsKIAogICAgIHN3aXRjaCAoc3RhdGUoKS50ZXh0QmFz
ZWxpbmUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaAppbmRleCBkNGFlMGU0MTBjYzk1M2U5YjZhODdlNDI2
YzNlOWYzZWZmMzQyNDQ2Li5kNGM1YTRkN2IzMDBiZTRlOTRjYmJiZGQ4NjQyMDA4ZDNhMGNkYzhi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZS5oCkBAIC0yMzQsNyArMjM0LDcgQEAgcHVibGljOgogCiAgICAg
ICAgIGJvb2wgcmVhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2ZvbnQuZm9udFNlbGVjdG9yKCk7
IH0KICAgICAgICAgdm9pZCBpbml0aWFsaXplKEZvbnRTZWxlY3RvciYsIGNvbnN0IEZvbnRDYXNj
YWRlJik7Ci0gICAgICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcygpIGNvbnN0Owor
ICAgICAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkgY29u
c3Q7CiAgICAgICAgIGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlv
bigpIGNvbnN0OwogICAgICAgICBmbG9hdCB3aWR0aChjb25zdCBUZXh0UnVuJiwgR2x5cGhPdmVy
ZmxvdyogPSAwKSBjb25zdDsKICAgICAgICAgdm9pZCBkcmF3QmlkaVRleHQoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250Q2FzY2FkZTo6Q3Vz
dG9tRm9udE5vdFJlYWR5QWN0aW9uKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JPdmVybGF5LmNwcAppbmRleCAyYTA0ZjAwMDgzYmZjMGYzY2ViNmQzYWJmMDg3
ZWU4MzUyZmQxNTRiLi41MGFjZmFjNDgzYjQ4MzEzZGIwZmZjNWQxZDM3Mzk2MjViYjM3NDEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCkBAIC04
NjksNyArODY5LDcgQEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpkcmF3UnVsZXJzKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgSW5zcGVjdG9yT3ZlcmwKIAogICAgICAgICAgICAgICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgdmVydGljYWxMYWJlbFN0YXRlU2F2ZXIoY29udGV4
dCk7CiAgICAgICAgICAgICAgICAgY29udGV4dC50cmFuc2xhdGUoem9vbSh4KSArIDAuNWYsIHNj
cm9sbFkpOwotICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd1RleHQoZm9udCwgVGV4dFJ1bihT
dHJpbmc6Om51bWJlcih4KSksIHsgMiwgZHJhd1RvcEVkZ2UgPyBydWxlckxhYmVsU2l6ZSA6IHJ1
bGVyTGFiZWxTaXplIC0gcnVsZXJTaXplICsgZm9udC5mb250TWV0cmljcygpLmhlaWdodCgpIC0g
MS4wZiB9KTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIFRleHRSdW4o
U3RyaW5nOjpudW1iZXIoeCkpLCB7IDIsIGRyYXdUb3BFZGdlID8gcnVsZXJMYWJlbFNpemUgOiBy
dWxlckxhYmVsU2l6ZSAtIHJ1bGVyU2l6ZSArIGZvbnQuZm9udE1ldHJpY3NPZlByaW1hcnlGb250
KCkuaGVpZ2h0KCkgLSAxLjBmIH0pOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTky
OCw3ICs5MjgsNyBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmRyYXdSdWxlcnMoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnNwZWN0b3JPdmVybAogICAgICAgICBjb25zdCBmbG9h
dCBwYWRkaW5nID0gMjsKICAgICAgICAgY29uc3QgZmxvYXQgcmFkaXVzID0gNDsKICAgICAgICAg
ZmxvYXQgZm9udFdpZHRoID0gZm9udC53aWR0aCh2aWV3cG9ydFRleHRSdW4pOwotICAgICAgICBm
bG9hdCBmb250SGVpZ2h0ID0gZm9udC5mb250TWV0cmljcygpLmZsb2F0SGVpZ2h0KCk7CisgICAg
ICAgIGZsb2F0IGZvbnRIZWlnaHQgPSBmb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmZs
b2F0SGVpZ2h0KCk7CiAgICAgICAgIEZsb2F0UmVjdCB2aWV3cG9ydFRleHRSZWN0KG1hcmdpbiwg
bWFyZ2luLCAocGFkZGluZyAqIDIuMGYpICsgZm9udFdpZHRoLCAocGFkZGluZyAqIDIuMGYpICsg
Zm9udEhlaWdodCk7CiAgICAgICAgIGNvbnN0IGF1dG8gdmlld3BvcnRUZXh0UmVjdENlbnRlciA9
IHZpZXdwb3J0VGV4dFJlY3QuY2VudGVyKCk7CiAKQEAgLTk2Niw3ICs5NjYsNyBAQCB2b2lkIElu
c3BlY3Rvck92ZXJsYXk6OmRyYXdSdWxlcnMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBJbnNwZWN0b3JPdmVybAogICAgICAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJv
dW5kZWRSZWN0KHZpZXdwb3J0VGV4dFJlY3QsIEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpKHJhZGl1
cykpLCBydWxlckJhY2tncm91bmRDb2xvcik7CiAKICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29s
b3IoQ29sb3I6OmJsYWNrKTsKLSAgICAgICAgY29udGV4dC5kcmF3VGV4dChmb250LCB2aWV3cG9y
dFRleHRSdW4sIHttYXJnaW4gKyAgcGFkZGluZywgbWFyZ2luICsgcGFkZGluZyArIGZvbnRIZWln
aHQgLSBmb250LmZvbnRNZXRyaWNzKCkuZGVzY2VudCgpIH0pOworICAgICAgICBjb250ZXh0LmRy
YXdUZXh0KGZvbnQsIHZpZXdwb3J0VGV4dFJ1biwgeyBtYXJnaW4gKyAgcGFkZGluZywgbWFyZ2lu
ICsgcGFkZGluZyArIGZvbnRIZWlnaHQgLSBmb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgp
LmRlc2NlbnQoKSB9KTsKICAgICB9CiB9CiAKQEAgLTEwNDAsNyArMTA0MCw3IEBAIFBhdGggSW5z
cGVjdG9yT3ZlcmxheTo6ZHJhd0VsZW1lbnRUaXRsZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IE5vZGUmIG5vZGUsIGNvCiAgICAgRm9udENhc2NhZGUgZm9udChXVEZNb3ZlKGZvbnREZXNjcmlw
dGlvbiksIDAsIDApOwogICAgIGZvbnQudXBkYXRlKG51bGxwdHIpOwogCi0gICAgaW50IGZvbnRI
ZWlnaHQgPSBmb250LmZvbnRNZXRyaWNzKCkuaGVpZ2h0KCk7CisgICAgaW50IGZvbnRIZWlnaHQg
PSBmb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmhlaWdodCgpOwogCiAgICAgZmxvYXQg
ZWxlbWVudERhdGFXaWR0aDsKICAgICBmbG9hdCBlbGVtZW50RGF0YUhlaWdodCA9IGZvbnRIZWln
aHQ7CkBAIC0xMzQ4LDcgKzEzNDgsNyBAQCBzdGF0aWMgRmxvYXRTaXplIGV4cGVjdGVkU2l6ZUZv
ckxheW91dExhYmVsKFN0cmluZyBsYWJlbCwgSW5zcGVjdG9yT3ZlcmxheTo6TGFiZQogewogICAg
IGF1dG8gZm9udCA9IGZvbnRGb3JMYXlvdXRMYWJlbCgpOwogCi0gICAgZmxvYXQgdGV4dEhlaWdo
dCA9IGZvbnQuZm9udE1ldHJpY3MoKS5mbG9hdEhlaWdodCgpOworICAgIGZsb2F0IHRleHRIZWln
aHQgPSBmb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmZsb2F0SGVpZ2h0KCk7CiAgICAg
ZmxvYXQgdGV4dFdpZHRoID0gZm9udC53aWR0aChUZXh0UnVuKGxhYmVsKSk7CiAgICAgaWYgKG1h
eGltdW1XaWR0aCAmJiB0ZXh0V2lkdGggKyAobGF5b3V0TGFiZWxQYWRkaW5nICogMikgPiBtYXhp
bXVtV2lkdGgpCiAgICAgICAgIHRleHRXaWR0aCA9IG1heGltdW1XaWR0aDsKQEAgLTEzNzYsOCAr
MTM3Niw4IEBAIHN0YXRpYyB2b2lkIGRyYXdMYXlvdXRMYWJlbChHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIFN0cmluZyBsYWJlbCwgRmxvYXRQb2ludCBwCiAgICAgY29udGV4dC50cmFuc2xhdGUo
cG9pbnQpOwogCiAgICAgYXV0byBmb250ID0gZm9udEZvckxheW91dExhYmVsKCk7Ci0gICAgZmxv
YXQgdGV4dEhlaWdodCA9IGZvbnQuZm9udE1ldHJpY3MoKS5mbG9hdEhlaWdodCgpOwotICAgIGZs
b2F0IHRleHREZXNjZW50ID0gZm9udC5mb250TWV0cmljcygpLmZsb2F0RGVzY2VudCgpOworICAg
IGZsb2F0IHRleHRIZWlnaHQgPSBmb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmZsb2F0
SGVpZ2h0KCk7CisgICAgZmxvYXQgdGV4dERlc2NlbnQgPSBmb250LmZvbnRNZXRyaWNzT2ZQcmlt
YXJ5Rm9udCgpLmZsb2F0RGVzY2VudCgpOwogICAgIAogICAgIGZsb2F0IHRleHRXaWR0aCA9IGZv
bnQud2lkdGgoVGV4dFJ1bihsYWJlbCkpOwogICAgIGlmIChtYXhpbXVtV2lkdGggJiYgdGV4dFdp
ZHRoICsgKGxheW91dExhYmVsUGFkZGluZyAqIDIpID4gbWF4aW11bVdpZHRoKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVGb3JtYXR0aW5nUXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdRdWlya3MuY3BwCmluZGV4IDljOGU4Yzlh
ODc3MjAyNzg3YjA1ZWIwM2FmYjczMzgxNDNjNjUwYzkuLjU5ZTg3YTNhYzUyNDRkMDg5OTY3NTNh
YjVjYmE3Y2ZjODA0NTQxOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdRdWlya3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1h
dHRpbmdRdWlya3MuY3BwCkBAIC00NCw3ICs0NCw3IEBAIElubGluZUxheW91dFVuaXQgSW5saW5l
Rm9ybWF0dGluZ1F1aXJrczo6aW5pdGlhbExpbmVIZWlnaHQoKSBjb25zdAogICAgIEFTU0VSVCgh
bGF5b3V0U3RhdGUoKS5pblN0YW5kYXJkc01vZGUoKSk7CiAgICAgLy8gTmVnYXRpdmUgbGluZUhl
aWdodCB2YWx1ZSBtZWFucyB0aGUgbGluZS1oZWlnaHQgaXMgbm90IHNldAogICAgIGF1dG8mIHJv
b3RTdHlsZSA9IGZvcm1hdHRpbmdDb250ZXh0KCkucm9vdCgpLnN0eWxlKCk7Ci0gICAgcmV0dXJu
IHJvb3RTdHlsZS5saW5lSGVpZ2h0KCkuaXNOZWdhdGl2ZSgpID8gcm9vdFN0eWxlLmZvbnRNZXRy
aWNzKCkuZmxvYXRIZWlnaHQoKSA6IHJvb3RTdHlsZS5jb21wdXRlZExpbmVIZWlnaHQoKTsKKyAg
ICByZXR1cm4gcm9vdFN0eWxlLmxpbmVIZWlnaHQoKS5pc05lZ2F0aXZlKCkgPyByb290U3R5bGUu
Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuZmxvYXRIZWlnaHQoKSA6IHJvb3RTdHlsZS5jb21w
dXRlZExpbmVIZWlnaHQoKTsKIH0KIAogYm9vbCBJbmxpbmVGb3JtYXR0aW5nUXVpcmtzOjppbmxp
bmVMZXZlbEJveEFmZmVjdHNMaW5lQm94KGNvbnN0IElubGluZUxldmVsQm94JiBpbmxpbmVMZXZl
bEJveCwgY29uc3QgTGluZUJveCYgbGluZUJveCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxldmVsQm94Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVM
ZXZlbEJveC5oCmluZGV4IDUyOWEyMThlNTJkNTEwODEyZDhlZTk3ZTVjZjFhM2I0ODRjMDUxMDQu
LmQ3MDAzNDQ1N2FiZGRlZGQxMDY0ODkxZTdkNzUxN2U3ZmU3Zjc1MGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxldmVs
Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lTGV2ZWxCb3guaApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgVmVydGlj
YWxBbGlnbm1lbnQgdmVydGljYWxBbGlnbigpIGNvbnN0OwogICAgIElubGluZUxheW91dFVuaXQg
cHJlZmVycmVkTGluZUhlaWdodCgpIGNvbnN0OwogICAgIGJvb2wgaXNQcmVmZXJyZWRMaW5lSGVp
Z2h0Rm9udE1ldHJpY3NCYXNlZCgpIGNvbnN0OwotICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBwcmlt
YXJ5Rm9udE1ldHJpY3MoKSBjb25zdDsKKyAgICBjb25zdCBGb250TWV0cmljcyYgcHJpbWFyeWZv
bnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpIGNvbnN0OwogICAgIElubGluZUxheW91dFVuaXQgZm9u
dFNpemUoKSBjb25zdDsKIAogICAgIGJvb2wgaXNJbmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBt
X3R5cGUgPT0gVHlwZTo6SW5saW5lQm94IHx8IGlzUm9vdElubGluZUJveCgpIHx8IGlzTGluZVNw
YW5uaW5nSW5saW5lQm94KCk7IH0KQEAgLTE1NCw3ICsxNTQsNyBAQCBpbmxpbmUgSW5saW5lTGV2
ZWxCb3g6OklubGluZUxldmVsQm94KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBSZW5kZXJT
dHlsZSYgcwogICAgICwgbV9pc0ZpcnN0V2l0aGluTGF5b3V0Qm94KHBvc2l0aW9uV2l0aGluTGF5
b3V0Qm94LmNvbnRhaW5zKFBvc2l0aW9uV2l0aGluTGF5b3V0Qm94OjpGaXJzdCkpCiAgICAgLCBt
X2lzTGFzdFdpdGhpbkxheW91dEJveChwb3NpdGlvbldpdGhpbkxheW91dEJveC5jb250YWlucyhQ
b3NpdGlvbldpdGhpbkxheW91dEJveDo6TGFzdCkpCiAgICAgLCBtX3R5cGUodHlwZSkKLSAgICAs
IG1fc3R5bGUoeyBzdHlsZS5mb250Q2FzY2FkZSgpLnByaW1hcnlGb250KCkuZm9udE1ldHJpY3Mo
KSwgc3R5bGUubGluZUhlaWdodCgpLCBJbmxpbmVMYXlvdXRVbml0KHN0eWxlLmZvbnRDYXNjYWRl
KCkuZm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRQaXhlbFNpemUoKSksIHsgfSB9KQorICAgICwg
bV9zdHlsZSh7IHN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCks
IHN0eWxlLmxpbmVIZWlnaHQoKSwgSW5saW5lTGF5b3V0VW5pdChzdHlsZS5mb250Q2FzY2FkZSgp
LmZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkUGl4ZWxTaXplKCkpLCB7IH0gfSkKIHsKICAgICBt
X3N0eWxlLnZlcnRpY2FsQWxpZ25tZW50LnR5cGUgPSBzdHlsZS52ZXJ0aWNhbEFsaWduKCk7CiAg
ICAgaWYgKG1fc3R5bGUudmVydGljYWxBbGlnbm1lbnQudHlwZSA9PSBWZXJ0aWNhbEFsaWduOjpM
ZW5ndGgpCkBAIC0xNzIsNyArMTcyLDcgQEAgaW5saW5lIElubGluZUxheW91dFVuaXQgSW5saW5l
TGV2ZWxCb3g6OnByZWZlcnJlZExpbmVIZWlnaHQoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBS
ZW1vdmUgaW50ZWdyYWwgZmxvb3Jpbmcgd2hlbiBsZWdhY3kgbGluZSBsYXlvdXQgc3RvcHMgdXNp
bmcgaXQuCiAgICAgaWYgKGlzUHJlZmVycmVkTGluZUhlaWdodEZvbnRNZXRyaWNzQmFzZWQoKSkK
LSAgICAgICAgcmV0dXJuIHByaW1hcnlGb250TWV0cmljcygpLmxpbmVTcGFjaW5nKCk7CisgICAg
ICAgIHJldHVybiBwcmltYXJ5Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkubGluZVNwYWNpbmco
KTsKIAogICAgIGlmIChtX3N0eWxlLmxpbmVIZWlnaHQuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkp
CiAgICAgICAgIHJldHVybiBmbG9vcmYobWluaW11bVZhbHVlRm9yTGVuZ3RoKG1fc3R5bGUubGlu
ZUhlaWdodCwgZm9udFNpemUoKSkpOwpAQCAtMTk1LDcgKzE5NSw3IEBAIGlubGluZSBib29sIElu
bGluZUxldmVsQm94Ojppc1ByZWZlcnJlZExpbmVIZWlnaHRGb250TWV0cmljc0Jhc2VkKCkgY29u
c3QKICAgICByZXR1cm4gbV9zdHlsZS5saW5lSGVpZ2h0LmlzTmVnYXRpdmUoKTsKIH0KIAotaW5s
aW5lIGNvbnN0IEZvbnRNZXRyaWNzJiBJbmxpbmVMZXZlbEJveDo6cHJpbWFyeUZvbnRNZXRyaWNz
KCkgY29uc3QKK2lubGluZSBjb25zdCBGb250TWV0cmljcyYgSW5saW5lTGV2ZWxCb3g6OnByaW1h
cnlmb250TWV0cmljc09mUHJpbWFyeUZvbnQoKSBjb25zdAogewogICAgIHJldHVybiBtX3N0eWxl
LnByaW1hcnlGb250TWV0cmljczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveC5jcHAK
aW5kZXggNmUyMDg2MDEwOWRhZGUxZDQ3ZGZjNjVmYmI4NGIzMzY0Yjc4NTJkNi4uNmQyMzY1Mzdk
YzU2MTNhOTVhMGRjN2Y5MjZlMzM5MjM5NjYwNTU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGluZUJveC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgSW5saW5lUmVjdCBMaW5lQm94Ojpsb2dpY2Fs
UmVjdEZvclRleHRSdW4oY29uc3QgTGluZTo6UnVuJiBydW4pIGNvbnN0CiAgICAgQVNTRVJUKHJ1
bi5pc1RleHQoKSB8fCBydW4uaXNTb2Z0TGluZUJyZWFrKCkpOwogICAgIGF1dG8qIHBhcmVudElu
bGluZUJveCA9ICZpbmxpbmVMZXZlbEJveEZvckxheW91dEJveChydW4ubGF5b3V0Qm94KCkucGFy
ZW50KCkpOwogICAgIEFTU0VSVChwYXJlbnRJbmxpbmVCb3gtPmlzSW5saW5lQm94KCkpOwotICAg
IGF1dG8mIGZvbnRNZXRyaWNzID0gcGFyZW50SW5saW5lQm94LT5wcmltYXJ5Rm9udE1ldHJpY3Mo
KTsKKyAgICBhdXRvJiBmb250TWV0cmljcyA9IHBhcmVudElubGluZUJveC0+cHJpbWFyeWZvbnRN
ZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwogICAgIGF1dG8gcnVubG9naWNhbFRvcCA9IHBhcmVudElu
bGluZUJveC0+bG9naWNhbFRvcCgpICsgcGFyZW50SW5saW5lQm94LT5iYXNlbGluZSgpIC0gZm9u
dE1ldHJpY3MuYXNjZW50KCk7CiAKICAgICB3aGlsZSAocGFyZW50SW5saW5lQm94ICE9ICZtX3Jv
b3RJbmxpbmVCb3ggJiYgIXBhcmVudElubGluZUJveC0+aGFzTGluZUJveFJlbGF0aXZlQWxpZ25t
ZW50KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcApp
bmRleCA5MWYzMGQ1ZWJjYjcyNDFiYThlMTU2YmE3OWY0YzUzNmFkMGVkMzA2Li5kNDU3MGJmZDY4
Zjg4MDc0NTFjMjIyZTNjMWExOGFjMDFjOTUyYjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lTGluZUJveEJ1aWxkZXIuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAgdm9pZCBMaW5lQm94
QnVpbGRlcjo6c2V0VmVydGljYWxHZW9tZXRyeUZvckxpbmVCcmVha0JveChJbmxpbmVMZXZlbEJv
eCYgbGluZUJyZWEKICAgICBBU1NFUlQobGluZUJyZWFrQm94LmlzTGluZUJyZWFrQm94KCkpOwog
ICAgIEFTU0VSVChwYXJlbnRJbmxpbmVCb3guaXNJbmxpbmVCb3goKSk7CiAKLSAgICBhdXRvJiBm
b250TWV0cmljcyA9IHBhcmVudElubGluZUJveC5wcmltYXJ5Rm9udE1ldHJpY3MoKTsKKyAgICBh
dXRvJiBmb250TWV0cmljcyA9IHBhcmVudElubGluZUJveC5wcmltYXJ5Zm9udE1ldHJpY3NPZlBy
aW1hcnlGb250KCk7CiAgICAgYXV0byBwcmVmZXJyZWRMaW5lSGVpZ2h0ID0gcGFyZW50SW5saW5l
Qm94LmlzUHJlZmVycmVkTGluZUhlaWdodEZvbnRNZXRyaWNzQmFzZWQoKSA/IHN0ZDo6bnVsbG9w
dCA6IHN0ZDo6bWFrZV9vcHRpb25hbChwYXJlbnRJbmxpbmVCb3gucHJlZmVycmVkTGluZUhlaWdo
dCgpKTsKICAgICBhdXRvIGhlaWdodEFuZExheW91dEJvdW5kcyA9IGNvbXB1dGVkSGVpZ2h0QW5k
TGF5b3V0Qm91bmRzKGZvbnRNZXRyaWNzLCBwcmVmZXJyZWRMaW5lSGVpZ2h0KTsKIApAQCAtMTk0
LDcgKzE5NCw3IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OnNldEluaXRpYWxWZXJ0aWNhbEdlb21l
dHJ5Rm9ySW5saW5lQm94KElubGluZUxldmVsQm94JiBpbmxpCiAgICAgLy8gV2UgbmVlZCBmbG9v
ci9jZWlsIHRvIG1hdGNoIGxlZ2FjeSBsYXlvdXQgaW50ZWdyYWwgcG9zaXRpb25pbmcuCiAgICAg
QVNTRVJUKGlubGluZUJveC5pc0lubGluZUJveCgpKTsKIAotICAgIGF1dG8mIGZvbnRNZXRyaWNz
ID0gaW5saW5lQm94LnByaW1hcnlGb250TWV0cmljcygpOworICAgIGF1dG8mIGZvbnRNZXRyaWNz
ID0gaW5saW5lQm94LnByaW1hcnlmb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsKICAgICBhdXRv
IHByZWZlcnJlZExpbmVIZWlnaHQgPSBpbmxpbmVCb3guaXNQcmVmZXJyZWRMaW5lSGVpZ2h0Rm9u
dE1ldHJpY3NCYXNlZCgpID8gc3RkOjpudWxsb3B0IDogc3RkOjptYWtlX29wdGlvbmFsKGlubGlu
ZUJveC5wcmVmZXJyZWRMaW5lSGVpZ2h0KCkpOwogICAgIGF1dG8gaGVpZ2h0QW5kTGF5b3V0Qm91
bmRzID0gY29tcHV0ZWRIZWlnaHRBbmRMYXlvdXRCb3VuZHMoZm9udE1ldHJpY3MsIHByZWZlcnJl
ZExpbmVIZWlnaHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94VmVydGljYWxBbGlnbmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVC
b3hWZXJ0aWNhbEFsaWduZXIuY3BwCmluZGV4IDE4MjM1MDg0Y2I5Mzc1MTA1OGE0MzQ5ZGI5ZjYz
OTQ3NWU1OTJjNTIuLjNhNzM1ZmMwYTE0YmJhYzk5MzJmZTBmY2QwZjhiOGQxYzk1YzI1OGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWdu
ZXIuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgSW5saW5lTGF5b3V0VW5pdCBMaW5lQm94VmVydGlj
YWxBbGlnbmVyOjpjb21wdXRlTGluZUJveExvZ2ljYWxIZWlnaHQoTGluZUJveCYgbGkKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6TWlk
ZGxlOiB7Ci0gICAgICAgICAgICBhdXRvIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxp
bmUgPSBpbmxpbmVMZXZlbEJveC5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKSAvIDIgKyBwYXJlbnRJ
bmxpbmVCb3gucHJpbWFyeUZvbnRNZXRyaWNzKCkueEhlaWdodCgpIC8gMjsKKyAgICAgICAgICAg
IGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGlubGluZUxldmVsQm94
LmxheW91dEJvdW5kcygpLmhlaWdodCgpIC8gMiArIHBhcmVudElubGluZUJveC5wcmltYXJ5Zm9u
dE1ldHJpY3NPZlByaW1hcnlGb250KCkueEhlaWdodCgpIC8gMjsKICAgICAgICAgICAgIGxvZ2lj
YWxUb3AgPSBwYXJlbnRJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCkuYXNjZW50IC0gbG9naWNhbFRv
cE9mZnNldEZyb21QYXJlbnRCYXNlbGluZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CkBAIC0yNDIsNyArMjQyLDcgQEAgdm9pZCBMaW5lQm94VmVydGljYWxBbGlnbmVyOjpjb21wdXRl
Um9vdElubGluZUJveFZlcnRpY2FsUG9zaXRpb24oTGluZUJveCYgbGluZUIKICAgICAgICAgICAg
ICAgICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IHsgfTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6TWlkZGxlOiB7Ci0g
ICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0g
KGlubGluZUxldmVsQm94LmxheW91dEJvdW5kcygpLmhlaWdodCgpIC8gMiArIHBhcmVudElubGlu
ZUJveC5wcmltYXJ5Rm9udE1ldHJpY3MoKS54SGVpZ2h0KCkgLyAyKTsKKyAgICAgICAgICAgICAg
ICBhdXRvIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSAoaW5saW5lTGV2ZWxC
b3gubGF5b3V0Qm91bmRzKCkuaGVpZ2h0KCkgLyAyICsgcGFyZW50SW5saW5lQm94LnByaW1hcnlm
b250TWV0cmljc09mUHJpbWFyeUZvbnQoKS54SGVpZ2h0KCkgLyAyKTsKICAgICAgICAgICAgICAg
ICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGxvZ2ljYWxUb3BPZmZzZXRGcm9t
UGFyZW50QmFzZWxpbmUgLSBpbmxpbmVMZXZlbEJveC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQ7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0zMjEsNyArMzIxLDcgQEAg
dm9pZCBMaW5lQm94VmVydGljYWxBbGlnbmVyOjphbGlnbklubGluZUxldmVsQm94ZXMoTGluZUJv
eCYgbGluZUJveCwgSW5saW5lTGF5b3UKICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJ
bmxpbmVCb3guYmFzZWxpbmUoKSAtIGlubGluZUxldmVsQm94LmJhc2VsaW5lKCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpNaWRkbGU6IHsKLSAgICAg
ICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IChpbmxpbmVM
ZXZlbEJveC5sb2dpY2FsSGVpZ2h0KCkgLyAyICsgcGFyZW50SW5saW5lQm94LnByaW1hcnlGb250
TWV0cmljcygpLnhIZWlnaHQoKSAvIDIpOworICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wT2Zm
c2V0RnJvbVBhcmVudEJhc2VsaW5lID0gKGlubGluZUxldmVsQm94LmxvZ2ljYWxIZWlnaHQoKSAv
IDIgKyBwYXJlbnRJbmxpbmVCb3gucHJpbWFyeWZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLnhI
ZWlnaHQoKSAvIDIpOwogICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC5i
YXNlbGluZSgpIC0gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FzY2FkZS5jcHAKaW5kZXggMmE3NjEzNjJjODNmYTY4NWI1MWM2ZWUwNTJjNmIx
MzVjMDI1ZjlhMC4uMTdlZWU1NWNiZWUxMTZkMDIwZDRkNTI3ZWViYzI2MDBjNDcxZjYzNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApA
QCAtMTQxMyw4ICsxNDEzLDggQEAgZmxvYXQgRm9udENhc2NhZGU6OmZsb2F0V2lkdGhGb3JTaW1w
bGVUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgSGFzaFNldDxjb25zdCBGb24KICAgICBpdC5maW5h
bGl6ZShnbHlwaEJ1ZmZlcik7CiAKICAgICBpZiAoZ2x5cGhPdmVyZmxvdykgewotICAgICAgICBn
bHlwaE92ZXJmbG93LT50b3AgPSBzdGQ6Om1heDxpbnQ+KGdseXBoT3ZlcmZsb3ctPnRvcCwgY2Vp
bGYoLWl0Lm1pbkdseXBoQm91bmRpbmdCb3hZKCkpIC0gKGdseXBoT3ZlcmZsb3ctPmNvbXB1dGVC
b3VuZHMgPyAwIDogZm9udE1ldHJpY3MoKS5hc2NlbnQoKSkpOwotICAgICAgICBnbHlwaE92ZXJm
bG93LT5ib3R0b20gPSBzdGQ6Om1heDxpbnQ+KGdseXBoT3ZlcmZsb3ctPmJvdHRvbSwgY2VpbGYo
aXQubWF4R2x5cGhCb3VuZGluZ0JveFkoKSkgLSAoZ2x5cGhPdmVyZmxvdy0+Y29tcHV0ZUJvdW5k
cyA/IDAgOiBmb250TWV0cmljcygpLmRlc2NlbnQoKSkpOworICAgICAgICBnbHlwaE92ZXJmbG93
LT50b3AgPSBzdGQ6Om1heDxpbnQ+KGdseXBoT3ZlcmZsb3ctPnRvcCwgY2VpbGYoLWl0Lm1pbkds
eXBoQm91bmRpbmdCb3hZKCkpIC0gKGdseXBoT3ZlcmZsb3ctPmNvbXB1dGVCb3VuZHMgPyAwIDog
Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50KCkpKTsKKyAgICAgICAgZ2x5cGhPdmVy
Zmxvdy0+Ym90dG9tID0gc3RkOjptYXg8aW50PihnbHlwaE92ZXJmbG93LT5ib3R0b20sIGNlaWxm
KGl0Lm1heEdseXBoQm91bmRpbmdCb3hZKCkpIC0gKGdseXBoT3ZlcmZsb3ctPmNvbXB1dGVCb3Vu
ZHMgPyAwIDogZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuZGVzY2VudCgpKSk7CiAgICAgICAg
IGdseXBoT3ZlcmZsb3ctPmxlZnQgPSBjZWlsZihpdC5maXJzdEdseXBoT3ZlcmZsb3coKSk7CiAg
ICAgICAgIGdseXBoT3ZlcmZsb3ctPnJpZ2h0ID0gY2VpbGYoaXQubGFzdEdseXBoT3ZlcmZsb3co
KSk7CiAgICAgfQpAQCAtMTQyNiw4ICsxNDI2LDggQEAgZmxvYXQgRm9udENhc2NhZGU6OmZsb2F0
V2lkdGhGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIEhhc2hTZXQ8Y29uc3QgRm8K
IHsKICAgICBDb21wbGV4VGV4dENvbnRyb2xsZXIgY29udHJvbGxlcigqdGhpcywgcnVuLCB0cnVl
LCBmYWxsYmFja0ZvbnRzKTsKICAgICBpZiAoZ2x5cGhPdmVyZmxvdykgewotICAgICAgICBnbHlw
aE92ZXJmbG93LT50b3AgPSBzdGQ6Om1heDxpbnQ+KGdseXBoT3ZlcmZsb3ctPnRvcCwgY2VpbGYo
LWNvbnRyb2xsZXIubWluR2x5cGhCb3VuZGluZ0JveFkoKSkgLSAoZ2x5cGhPdmVyZmxvdy0+Y29t
cHV0ZUJvdW5kcyA/IDAgOiBmb250TWV0cmljcygpLmFzY2VudCgpKSk7Ci0gICAgICAgIGdseXBo
T3ZlcmZsb3ctPmJvdHRvbSA9IHN0ZDo6bWF4PGludD4oZ2x5cGhPdmVyZmxvdy0+Ym90dG9tLCBj
ZWlsZihjb250cm9sbGVyLm1heEdseXBoQm91bmRpbmdCb3hZKCkpIC0gKGdseXBoT3ZlcmZsb3ct
PmNvbXB1dGVCb3VuZHMgPyAwIDogZm9udE1ldHJpY3MoKS5kZXNjZW50KCkpKTsKKyAgICAgICAg
Z2x5cGhPdmVyZmxvdy0+dG9wID0gc3RkOjptYXg8aW50PihnbHlwaE92ZXJmbG93LT50b3AsIGNl
aWxmKC1jb250cm9sbGVyLm1pbkdseXBoQm91bmRpbmdCb3hZKCkpIC0gKGdseXBoT3ZlcmZsb3ct
PmNvbXB1dGVCb3VuZHMgPyAwIDogZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50KCkp
KTsKKyAgICAgICAgZ2x5cGhPdmVyZmxvdy0+Ym90dG9tID0gc3RkOjptYXg8aW50PihnbHlwaE92
ZXJmbG93LT5ib3R0b20sIGNlaWxmKGNvbnRyb2xsZXIubWF4R2x5cGhCb3VuZGluZ0JveFkoKSkg
LSAoZ2x5cGhPdmVyZmxvdy0+Y29tcHV0ZUJvdW5kcyA/IDAgOiBmb250TWV0cmljc09mUHJpbWFy
eUZvbnQoKS5kZXNjZW50KCkpKTsKICAgICAgICAgZ2x5cGhPdmVyZmxvdy0+bGVmdCA9IHN0ZDo6
bWF4PGludD4oMCwgY2VpbGYoLWNvbnRyb2xsZXIubWluR2x5cGhCb3VuZGluZ0JveFgoKSkpOwog
ICAgICAgICBnbHlwaE92ZXJmbG93LT5yaWdodCA9IHN0ZDo6bWF4PGludD4oMCwgY2VpbGYoY29u
dHJvbGxlci5tYXhHbHlwaEJvdW5kaW5nQm94WCgpIC0gY29udHJvbGxlci50b3RhbEFkdmFuY2Uo
KS53aWR0aCgpKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhc2NhZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYXNjYWRlLmgKaW5kZXggYmFiZTk2Njg0ZTdjMTVjYjljYTk2OTNiYTM1NjBhOGFhM2Qy
Yzk2Yy4uNmM2MzcyMTZiZmQ0MDQ5NjNhNzExZjE2OWY5MTliMTVkZTYwYjZiZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCkBAIC0xNjMsNyAr
MTYzLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1BsYXRmb3JtRm9udCgpIGNvbnN0IHsgcmV0
dXJuIG1fZm9udHMtPmlzRm9yUGxhdGZvcm1Gb250KCk7IH0KIAotICAgIGNvbnN0IEZvbnRNZXRy
aWNzJiBmb250TWV0cmljcygpIGNvbnN0IHsgcmV0dXJuIHByaW1hcnlGb250KCkuZm9udE1ldHJp
Y3MoKTsgfQorICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljc09mUHJpbWFyeUZvbnQo
KSBjb25zdCB7IHJldHVybiBwcmltYXJ5Rm9udCgpLmZvbnRNZXRyaWNzKCk7IH0KICAgICBmbG9h
dCBzcGFjZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gcHJpbWFyeUZvbnQoKS5zcGFjZVdpZHRoKCkg
KyBtX2xldHRlclNwYWNpbmc7IH0KICAgICBmbG9hdCB0YWJXaWR0aChjb25zdCBGb250JiwgY29u
c3QgVGFiU2l6ZSYsIGZsb2F0KSBjb25zdDsKICAgICBmbG9hdCB0YWJXaWR0aChjb25zdCBUYWJT
aXplJiB0YWJTaXplLCBmbG9hdCBwb3NpdGlvbikgY29uc3QgeyByZXR1cm4gdGFiV2lkdGgocHJp
bWFyeUZvbnQoKSwgdGFiU2l6ZSwgcG9zaXRpb24pOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwCmluZGV4IGVjZTUwYTgyMzM5ZjBmZjIwNDkzNGE4OTI2
ZDJkODA3NGMwZGUwZDIuLjNiMTg4YmQ3YTFiOTIwNDVjZTIyOTcxMmVmOTAxYzllZjFhNTU5MTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwCkBAIC0x
NTMsNyArMTUzLDcgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoRWxlbWVu
dCYsIFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGluTGFiZWwsIFQKICAgICAvLyBGaXJzdCBzdGVw
IGluIGRyYXdpbmcgdGhlIGxpbmsgZHJhZyBpbWFnZSB3aWR0aC4KICAgICBUZXh0UnVuIGxhYmVs
UnVuKGxhYmVsKTsKICAgICBUZXh0UnVuIHVybFJ1bih1cmxTdHJpbmcpOwotICAgIEludFNpemUg
bGFiZWxTaXplKGxhYmVsRm9udC0+d2lkdGgobGFiZWxSdW4pLCBsYWJlbEZvbnQtPmZvbnRNZXRy
aWNzKCkuYXNjZW50KCkgKyBsYWJlbEZvbnQtPmZvbnRNZXRyaWNzKCkuZGVzY2VudCgpKTsKKyAg
ICBJbnRTaXplIGxhYmVsU2l6ZShsYWJlbEZvbnQtPndpZHRoKGxhYmVsUnVuKSwgbGFiZWxGb250
LT5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoKSArIGxhYmVsRm9udC0+Zm9udE1l
dHJpY3NPZlByaW1hcnlGb250KCkuZGVzY2VudCgpKTsKIAogICAgIGlmIChsYWJlbFNpemUud2lk
dGgoKSA+IE1heERyYWdMYWJlbFN0cmluZ1dpZHRoKSB7CiAgICAgICAgIGxhYmVsU2l6ZS5zZXRX
aWR0aChNYXhEcmFnTGFiZWxTdHJpbmdXaWR0aCk7CkBAIC0xNjUsNyArMTY1LDcgQEAgRHJhZ0lt
YWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoRWxlbWVudCYsIFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIGluTGFiZWwsIFQKIAogICAgIGlmIChkcmF3VVJMU3RyaW5nKSB7CiAgICAgICAgIHVy
bFN0cmluZ1NpemUuc2V0V2lkdGgodXJsRm9udC0+d2lkdGgodXJsUnVuKSk7Ci0gICAgICAgIHVy
bFN0cmluZ1NpemUuc2V0SGVpZ2h0KHVybEZvbnQtPmZvbnRNZXRyaWNzKCkuYXNjZW50KCkgKyB1
cmxGb250LT5mb250TWV0cmljcygpLmRlc2NlbnQoKSk7IAorICAgICAgICB1cmxTdHJpbmdTaXpl
LnNldEhlaWdodCh1cmxGb250LT5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoKSAr
IHVybEZvbnQtPmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmRlc2NlbnQoKSk7IAogICAgICAg
ICBpbWFnZVNpemUuc2V0SGVpZ2h0KGltYWdlU2l6ZS5oZWlnaHQoKSArIHVybFN0cmluZ1NpemUu
aGVpZ2h0KCkpOwogICAgICAgICBpZiAodXJsU3RyaW5nU2l6ZS53aWR0aCgpID4gTWF4RHJhZ0xh
YmVsU3RyaW5nV2lkdGgpIHsKICAgICAgICAgICAgIGltYWdlU2l6ZS5zZXRXaWR0aChNYXhEcmFn
TGFiZWxXaWR0aCk7CkBAIC0yMDEsNyArMjAxLDcgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJ
bWFnZUZvckxpbmsoRWxlbWVudCYsIFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGluTGFiZWwsIFQK
ICAgICBpZiAoZHJhd1VSTFN0cmluZykgewogICAgICAgICBpZiAoY2xpcFVSTFN0cmluZykKICAg
ICAgICAgICAgIHVybFN0cmluZyA9IFN0cmluZ1RydW5jYXRvcjo6cmlnaHRUcnVuY2F0ZSh1cmxT
dHJpbmcsIGltYWdlU2l6ZS53aWR0aCgpIC0gKERyYWdMYWJlbEJvcmRlclggKiAyLjBmKSwgKnVy
bEZvbnQpOwotICAgICAgICBJbnRQb2ludCB0ZXh0UG9zKERyYWdMYWJlbEJvcmRlclgsIGltYWdl
U2l6ZS5oZWlnaHQoKSAtIChMYWJlbEJvcmRlcllPZmZzZXQgKyB1cmxGb250LT5mb250TWV0cmlj
cygpLmRlc2NlbnQoKSkpOworICAgICAgICBJbnRQb2ludCB0ZXh0UG9zKERyYWdMYWJlbEJvcmRl
clgsIGltYWdlU2l6ZS5oZWlnaHQoKSAtIChMYWJlbEJvcmRlcllPZmZzZXQgKyB1cmxGb250LT5m
b250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5kZXNjZW50KCkpKTsKICAgICAgICAgV2ViQ29yZURy
YXdEb3VibGVkVGV4dEF0UG9pbnQoY29udGV4dCwgdXJsU3RyaW5nLCB0ZXh0UG9zLCAqdXJsRm9u
dCwgdG9wQ29sb3IsIGJvdHRvbUNvbG9yKTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2FyZXRSZWN0Q29tcHV0YXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0NhcmV0UmVjdENvbXB1dGF0aW9uLmNwcAppbmRleCBjZTdmNTQyZGQ5
N2I4NTM4NjFlMjNhY2Y4MWY4OWY4ZDIxNjc5NzA1Li45YTg2ZmYzMDI4ODg4NjQyNmRmZjljNzRl
NjI2NDViNTQ4ZWVhNmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2Fy
ZXRSZWN0Q29tcHV0YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DYXJl
dFJlY3RDb21wdXRhdGlvbi5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgc3RhdGljIExheW91dFJlY3Qg
Y29tcHV0ZUNhcmV0UmVjdEZvckVtcHR5RWxlbWVudChjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVj
dCYgcmUKICAgICB4ID0gc3RkOjptaW4oeCwgc3RkOjptYXg8TGF5b3V0VW5pdD4obWF4WCAtIGNh
cmV0V2lkdGgsIDApKTsKIAogICAgIGF1dG8gbGluZUhlaWdodCA9IHJlbmRlcmVyLmxpbmVIZWln
aHQodHJ1ZSwgY3VycmVudFN0eWxlLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9u
dGFsTGluZSA6IFZlcnRpY2FsTGluZSwgUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKTsKLSAg
ICBhdXRvIGhlaWdodCA9IHN0ZDo6bWluKGxpbmVIZWlnaHQsIExheW91dFVuaXQgeyBjdXJyZW50
U3R5bGUuZm9udE1ldHJpY3MoKS5oZWlnaHQoKSB9KTsKKyAgICBhdXRvIGhlaWdodCA9IHN0ZDo6
bWluKGxpbmVIZWlnaHQsIExheW91dFVuaXQgeyBjdXJyZW50U3R5bGUuZm9udE1ldHJpY3NPZlBy
aW1hcnlGb250KCkuaGVpZ2h0KCkgfSk7CiAgICAgYXV0byB5ID0gcmVuZGVyZXIucGFkZGluZ1Rv
cCgpICsgcmVuZGVyZXIuYm9yZGVyVG9wKCkgKyAobGluZUhlaWdodCA+IGhlaWdodCA/IChsaW5l
SGVpZ2h0IC0gaGVpZ2h0KSAvIDIgOiBMYXlvdXRVbml0IHsgfSk7CiAKICAgICBhdXRvIHJlY3Qg
PSBMYXlvdXRSZWN0KHgsIHksIGNhcmV0V2lkdGgsIGhlaWdodCk7CkBAIC0yNDEsNyArMjQxLDcg
QEAgc3RhdGljIExheW91dFJlY3QgY29tcHV0ZUNhcmV0UmVjdEZvckJveChjb25zdCBSZW5kZXJC
b3gmIHJlbmRlcmVyLCBjb25zdCBJbmxpbmUKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vMzc3Nzgw
ND4gRGVsZXRpbmcgYWxsIGNvbnRlbnQgaW4gYSBkb2N1bWVudCBjYW4gcmVzdWx0IGluIGdpYW50
IHRhbGwtYXMtd2luZG93IGluc2VydGlvbiBwb2ludAogICAgIC8vCiAgICAgLy8gRklYTUU6IGln
bm9yaW5nIDpmaXJzdC1saW5lLCBtaXNzaW5nIGdvb2QgcmVhc29uIHRvIHRha2UgY2FyZSBvZgot
ICAgIExheW91dFVuaXQgZm9udEhlaWdodCA9IHJlbmRlcmVyLnN0eWxlKCkuZm9udE1ldHJpY3Mo
KS5oZWlnaHQoKTsKKyAgICBMYXlvdXRVbml0IGZvbnRIZWlnaHQgPSByZW5kZXJlci5zdHlsZSgp
LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmhlaWdodCgpOwogICAgIGlmIChmb250SGVpZ2h0
ID4gcmVjdC5oZWlnaHQoKSB8fCAoIXJlbmRlcmVyLmlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkg
JiYgIXJlbmRlcmVyLmlzVGFibGUoKSkpCiAgICAgICAgIHJlY3Quc2V0SGVpZ2h0KGZvbnRIZWln
aHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5RWxsaXBz
aXNCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUVsbGlwc2lzQm94LmNw
cAppbmRleCA0NmRjZDQ2ZmY3ZGUyOTg2NmI0OTk4ZTNmYzZjNzUwNjlkYmVlYjQ3Li5lOTcxNjgw
NTcwNzBjY2Q0ZjI4NmEwYThiMGVkNDQ2YTJlMTViYjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvTGVnYWN5RWxsaXBzaXNCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9MZWdhY3lFbGxpcHNpc0JveC5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBM
ZWdhY3lFbGxpcHNpc0JveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50JiBwYWludE9mZnMKICAgICB9CiAKICAgICAvLyBGSVhNRTogV2h5IGlzIHRoaXMgYWx3
YXlzIExUUj8gRml4IGJ5IHBhc3NpbmcgY29ycmVjdCB0ZXh0IHJ1biBmbGFncyBiZWxvdy4KLSAg
ICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKG1f
c3RyLCBsaW5lU3R5bGUsIEFsbG93UmlnaHRFeHBhbnNpb24pLCBMYXlvdXRQb2ludCh4KCkgKyBw
YWludE9mZnNldC54KCksIHkoKSArIHBhaW50T2Zmc2V0LnkoKSArIGxpbmVTdHlsZS5mb250TWV0
cmljcygpLmFzY2VudCgpKSk7CisgICAgY29udGV4dC5kcmF3VGV4dChmb250LCBSZW5kZXJCbG9j
azo6Y29uc3RydWN0VGV4dFJ1bihtX3N0ciwgbGluZVN0eWxlLCBBbGxvd1JpZ2h0RXhwYW5zaW9u
KSwgTGF5b3V0UG9pbnQoeCgpICsgcGFpbnRPZmZzZXQueCgpLCB5KCkgKyBwYWludE9mZnNldC55
KCkgKyBsaW5lU3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50KCkpKTsKIAog
ICAgIC8vIFJlc3RvcmUgdGhlIHJlZ3VsYXIgZmlsbCBjb2xvci4KICAgICBpZiAodGV4dENvbG9y
ICE9IGNvbnRleHQuZmlsbENvbG9yKCkpCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBMZWdhY3lF
bGxpcHNpc0JveDo6cGFpbnRNYXJrdXBCb3goUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JgogCiAgICAgTGF5b3V0UG9pbnQgYWRqdXN0ZWRQYWludE9mZnNldCA9IHBhaW50
T2Zmc2V0OwogICAgIGFkanVzdGVkUGFpbnRPZmZzZXQubW92ZSh4KCkgKyBsb2dpY2FsV2lkdGgo
KSAtIG1hcmt1cEJveC0+eCgpLAotICAgICAgICB5KCkgKyBzdHlsZS5mb250TWV0cmljcygpLmFz
Y2VudCgpIC0gKG1hcmt1cEJveC0+eSgpICsgbWFya3VwQm94LT5saW5lU3R5bGUoKS5mb250TWV0
cmljcygpLmFzY2VudCgpKSk7CisgICAgICAgIHkoKSArIHN0eWxlLmZvbnRNZXRyaWNzT2ZQcmlt
YXJ5Rm9udCgpLmFzY2VudCgpIC0gKG1hcmt1cEJveC0+eSgpICsgbWFya3VwQm94LT5saW5lU3R5
bGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoKSkpOwogICAgIG1hcmt1cEJv
eC0+cGFpbnQocGFpbnRJbmZvLCBhZGp1c3RlZFBhaW50T2Zmc2V0LCBsaW5lVG9wLCBsaW5lQm90
dG9tKTsKIH0KIApAQCAtMTUzLDcgKzE1Myw3IEBAIGJvb2wgTGVnYWN5RWxsaXBzaXNCb3g6Om5v
ZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0CiAg
ICAgaWYgKExlZ2FjeUlubGluZUJveCogbWFya3VwQm94ID0gdGhpcy0+bWFya3VwQm94KCkpIHsK
ICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIGxpbmVTdHlsZSA9IHRoaXMtPmxpbmVTdHlsZSgp
OwogICAgICAgICBMYXlvdXRVbml0IG10eCB7IGFkanVzdGVkTG9jYXRpb24ueCgpICsgbG9naWNh
bFdpZHRoKCkgLSBtYXJrdXBCb3gtPngoKSB9OwotICAgICAgICBMYXlvdXRVbml0IG10eSB7IGFk
anVzdGVkTG9jYXRpb24ueSgpICsgbGluZVN0eWxlLmZvbnRNZXRyaWNzKCkuYXNjZW50KCkgLSAo
bWFya3VwQm94LT55KCkgKyBtYXJrdXBCb3gtPmxpbmVTdHlsZSgpLmZvbnRNZXRyaWNzKCkuYXNj
ZW50KCkpIH07CisgICAgICAgIExheW91dFVuaXQgbXR5IHsgYWRqdXN0ZWRMb2NhdGlvbi55KCkg
KyBsaW5lU3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50KCkgLSAobWFya3Vw
Qm94LT55KCkgKyBtYXJrdXBCb3gtPmxpbmVTdHlsZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9u
dCgpLmFzY2VudCgpKSB9OwogICAgICAgICBpZiAobWFya3VwQm94LT5ub2RlQXRQb2ludChyZXF1
ZXN0LCByZXN1bHQsIGxvY2F0aW9uSW5Db250YWluZXIsIExheW91dFBvaW50KG10eCwgbXR5KSwg
bGluZVRvcCwgbGluZUJvdHRvbSwgaGl0VGVzdEFjdGlvbikpIHsKICAgICAgICAgICAgIGJsb2Nr
RmxvdygpLnVwZGF0ZUhpdFRlc3RSZXN1bHQocmVzdWx0LCBsb2NhdGlvbkluQ29udGFpbmVyLnBv
aW50KCkgLSBMYXlvdXRTaXplKG10eCwgbXR5KSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVCb3guY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUJveC5jcHAKaW5kZXggODZm
NDFlZjdmYjA1NmNjZDYxNWU1NzcxYTA4M2MyZDk4OGMwZjEwYy4uZmFmZWEzNjY5MzFlNmU5Mjkz
Yzk1OTY0MWU3MmNiOTU3Y2RlODAyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0xlZ2FjeUlubGluZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xl
Z2FjeUlubGluZUJveC5jcHAKQEAgLTEzNiwxMyArMTM2LDEzIEBAIGZsb2F0IExlZ2FjeUlubGlu
ZUJveDo6bG9naWNhbEhlaWdodCgpIGNvbnN0CiAKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgbGlu
ZVN0eWxlID0gdGhpcy0+bGluZVN0eWxlKCk7CiAgICAgaWYgKHJlbmRlcmVyKCkuaXNUZXh0T3JM
aW5lQnJlYWsoKSkKLSAgICAgICAgcmV0dXJuIGxpbmVTdHlsZS5mb250TWV0cmljcygpLmhlaWdo
dCgpOworICAgICAgICByZXR1cm4gbGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgp
LmhlaWdodCgpOwogICAgIGlmIChpczxSZW5kZXJCb3g+KHJlbmRlcmVyKCkpICYmIHBhcmVudCgp
KQogICAgICAgICByZXR1cm4gaXNIb3Jpem9udGFsKCkgPyBkb3duY2FzdDxSZW5kZXJCb3g+KHJl
bmRlcmVyKCkpLmhlaWdodCgpIDogZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJlcigpKS53aWR0
aCgpOwogCiAgICAgQVNTRVJUKGlzSW5saW5lRmxvd0JveCgpKTsKICAgICBSZW5kZXJCb3hNb2Rl
bE9iamVjdCogZmxvd09iamVjdCA9IGJveE1vZGVsT2JqZWN0KCk7Ci0gICAgY29uc3QgRm9udE1l
dHJpY3MmIGZvbnRNZXRyaWNzID0gbGluZVN0eWxlLmZvbnRNZXRyaWNzKCk7CisgICAgY29uc3Qg
Rm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gbGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5
Rm9udCgpOwogICAgIGZsb2F0IHJlc3VsdCA9IGZvbnRNZXRyaWNzLmhlaWdodCgpOwogICAgIGlm
IChwYXJlbnQoKSkKICAgICAgICAgcmVzdWx0ICs9IGZsb3dPYmplY3QtPmJvcmRlckFuZFBhZGRp
bmdMb2dpY2FsSGVpZ2h0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
TGVnYWN5SW5saW5lRmxvd0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5
SW5saW5lRmxvd0JveC5jcHAKaW5kZXggODA1NzUyYjI5MmE2NTkwOTllNWYwZDdlZGM4NDk0ZWFi
MGFjMjU0MS4uNjdlYzg4YzVlMWZkYzg0ZDIzNWU2Zjc1OWY4YmJlNDI1NGJlNTMzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUZsb3dCb3guY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVGbG93Qm94LmNwcApAQCAt
MTI4LDcgKzEyOCw3IEBAIHZvaWQgTGVnYWN5SW5saW5lRmxvd0JveDo6YWRkVG9MaW5lKExlZ2Fj
eUlubGluZUJveCogY2hpbGQpCiAgICAgICAgICAgICBzaG91bGRDbGVhckRlc2NlbmRhbnRzSGF2
ZVNhbWVMaW5lSGVpZ2h0QW5kQmFzZWxpbmUgPSB0cnVlOwogICAgICAgICBlbHNlIGlmIChjaGls
ZC0+YmVoYXZlc0xpa2VUZXh0KCkpIHsKICAgICAgICAgICAgIGlmIChjaGlsZC0+cmVuZGVyZXIo
KS5pc0xpbmVCcmVhaygpIHx8IGNoaWxkLT5yZW5kZXJlcigpLnBhcmVudCgpICE9ICZyZW5kZXJl
cigpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFwYXJlbnRTdHlsZS5mb250Q2FzY2FkZSgpLmZv
bnRNZXRyaWNzKCkuaGFzSWRlbnRpY2FsQXNjZW50RGVzY2VudEFuZExpbmVHYXAoY2hpbGRTdHls
ZS5mb250Q2FzY2FkZSgpLmZvbnRNZXRyaWNzKCkpCisgICAgICAgICAgICAgICAgaWYgKCFwYXJl
bnRTdHlsZS5mb250Q2FzY2FkZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmhhc0lkZW50
aWNhbEFzY2VudERlc2NlbnRBbmRMaW5lR2FwKGNoaWxkU3R5bGUuZm9udENhc2NhZGUoKS5mb250
TWV0cmljc09mUHJpbWFyeUZvbnQoKSkKICAgICAgICAgICAgICAgICAgICAgfHwgcGFyZW50U3R5
bGUubGluZUhlaWdodCgpICE9IGNoaWxkU3R5bGUubGluZUhlaWdodCgpCiAgICAgICAgICAgICAg
ICAgICAgIHx8IChwYXJlbnRTdHlsZS52ZXJ0aWNhbEFsaWduKCkgIT0gVmVydGljYWxBbGlnbjo6
QmFzZWxpbmUgJiYgIWlzUm9vdElubGluZUJveCgpKSB8fCBjaGlsZFN0eWxlLnZlcnRpY2FsQWxp
Z24oKSAhPSBWZXJ0aWNhbEFsaWduOjpCYXNlbGluZSkKICAgICAgICAgICAgICAgICAgICAgc2hv
dWxkQ2xlYXJEZXNjZW5kYW50c0hhdmVTYW1lTGluZUhlaWdodEFuZEJhc2VsaW5lID0gdHJ1ZTsK
QEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIExlZ2FjeUlubGluZUZsb3dCb3g6OmFkZFRvTGluZShM
ZWdhY3lJbmxpbmVCb3gqIGNoaWxkKQogICAgICAgICAgICAgICAgIGF1dG8mIGNoaWxkRmxvd0Jv
eCA9IGRvd25jYXN0PExlZ2FjeUlubGluZUZsb3dCb3g+KCpjaGlsZCk7CiAgICAgICAgICAgICAg
ICAgLy8gQ2hlY2sgdGhlIGNoaWxkJ3MgYml0LCBhbmQgdGhlbiBhbHNvIGNoZWNrIGZvciBkaWZm
ZXJlbmNlcyBpbiBmb250LCBsaW5lLWhlaWdodCwgdmVydGljYWwtYWxpZ24KICAgICAgICAgICAg
ICAgICBpZiAoIWNoaWxkRmxvd0JveC5kZXNjZW5kYW50c0hhdmVTYW1lTGluZUhlaWdodEFuZEJh
c2VsaW5lKCkKLSAgICAgICAgICAgICAgICAgICAgfHwgIXBhcmVudFN0eWxlLmZvbnRDYXNjYWRl
KCkuZm9udE1ldHJpY3MoKS5oYXNJZGVudGljYWxBc2NlbnREZXNjZW50QW5kTGluZUdhcChjaGls
ZFN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKSkKKyAgICAgICAgICAgICAgICAgICAg
fHwgIXBhcmVudFN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCku
aGFzSWRlbnRpY2FsQXNjZW50RGVzY2VudEFuZExpbmVHYXAoY2hpbGRTdHlsZS5mb250Q2FzY2Fk
ZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpKQogICAgICAgICAgICAgICAgICAgICB8fCBw
YXJlbnRTdHlsZS5saW5lSGVpZ2h0KCkgIT0gY2hpbGRTdHlsZS5saW5lSGVpZ2h0KCkKICAgICAg
ICAgICAgICAgICAgICAgfHwgKHBhcmVudFN0eWxlLnZlcnRpY2FsQWxpZ24oKSAhPSBWZXJ0aWNh
bEFsaWduOjpCYXNlbGluZSAmJiAhaXNSb290SW5saW5lQm94KCkpIHx8IGNoaWxkU3R5bGUudmVy
dGljYWxBbGlnbigpICE9IFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lCiAgICAgICAgICAgICAgICAg
ICAgIHx8IGNoaWxkU3R5bGUuaGFzQm9yZGVyKCkgfHwgY2hpbGRTdHlsZS5oYXNQYWRkaW5nKCkg
fHwgY2hpbGRTdHlsZS5oYXNUZXh0Q29tYmluZSgpKQpAQCAtNjg5LDcgKzY4OSw3IEBAIHN0YXRp
YyB2b2lkIHBsYWNlQ2hpbGRJbmxpbmVCb3hlc0luQmxvY2tEaXJlY3Rpb24oTGVnYWN5SW5saW5l
Rmxvd0JveCYgaW5saW5lQm94CiAKICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIGNoaWxkTGlu
ZVN0eWxlID0gY2hpbGQtPmxpbmVTdHlsZSgpOwogICAgICAgICBpZiAoY2hpbGQtPmJlaGF2ZXNM
aWtlVGV4dCgpIHx8IGlzPExlZ2FjeUlubGluZUZsb3dCb3g+KCpjaGlsZCkpIHsKLSAgICAgICAg
ICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IGNoaWxkTGluZVN0eWxlLmZvbnRN
ZXRyaWNzKCk7CisgICAgICAgICAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MgPSBj
aGlsZExpbmVTdHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsKICAgICAgICAgICAgIG5l
d0xvZ2ljYWxUb3AgKz0gY2hpbGQtPmJhc2VsaW5lUG9zaXRpb24oYmFzZWxpbmVUeXBlKSAtIGZv
bnRNZXRyaWNzLmFzY2VudChiYXNlbGluZVR5cGUpOwogICAgICAgICAgICAgaWYgKGlzPExlZ2Fj
eUlubGluZUZsb3dCb3g+KCpjaGlsZCkpIHsKICAgICAgICAgICAgICAgICBSZW5kZXJCb3hNb2Rl
bE9iamVjdCYgYm94T2JqZWN0ID0gZG93bmNhc3Q8TGVnYWN5SW5saW5lRmxvd0JveD4oKmNoaWxk
KS5yZW5kZXJlcigpOwpAQCAtNzYzLDcgKzc2Myw3IEBAIHZvaWQgTGVnYWN5SW5saW5lRmxvd0Jv
eDo6cGxhY2VCb3hlc0luQmxvY2tEaXJlY3Rpb24oTGF5b3V0VW5pdCB0b3AsIExheW91dFVuaXQK
IHsKICAgICBib29sIGlzUm9vdEJveCA9IGlzUm9vdElubGluZUJveCgpOwogICAgIGlmIChpc1Jv
b3RCb3gpCi0gICAgICAgIHNldExvZ2ljYWxUb3AodG9wICsgbWF4QXNjZW50IC0gbGluZVN0eWxl
KCkuZm9udE1ldHJpY3MoKS5hc2NlbnQoYmFzZWxpbmVUeXBlKSk7CisgICAgICAgIHNldExvZ2lj
YWxUb3AodG9wICsgbWF4QXNjZW50IC0gbGluZVN0eWxlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlG
b250KCkuYXNjZW50KGJhc2VsaW5lVHlwZSkpOwogCiAgICAgcGxhY2VDaGlsZElubGluZUJveGVz
SW5CbG9ja0RpcmVjdGlvbigqdGhpcywgdG9wLCBtYXhIZWlnaHQsIG1heEFzY2VudCwgc3RyaWN0
TW9kZSwgbGluZVRvcCwgbGluZUJvdHRvbSwgc2V0TGluZVRvcCwgbGluZVRvcEluY2x1ZGluZ01h
cmdpbnMsIGxpbmVCb3R0b21JbmNsdWRpbmdNYXJnaW5zLCBoYXNBbm5vdGF0aW9uc0JlZm9yZSwg
aGFzQW5ub3RhdGlvbnNBZnRlciwgYmFzZWxpbmVUeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlvdXQuY3BwCmluZGV4IDg3ZDBjYmFkZGI0ZmQ1NTM2Y2Zj
YTMyNGE1ODcyMWJhZjBmYmM4N2UuLmQ4N2UzZDU5Y2IxYThmMWQyMjNlYmJhOTg1YTFiODkyODZk
ZTQxNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lMaW5lTGF5
b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5j
cHAKQEAgLTQ3OCwxMCArNDc4LDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRMb2dpY2FsV2lk
dGhGb3JUZXh0UnVuKExlZ2FjeVJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsIEJpZGlSCiAgICAgICAg
IC8vIHdpbGwga2VlcCB1cyBmcm9tIGNvbXB1dGluZyBnbHlwaCBib3VuZHMgaW4gbmVhcmx5IGFs
bCBjYXNlcy4KICAgICAgICAgYm9vbCBpbmNsdWRlUm9vdExpbmUgPSBsaW5lQm94LT5pbmNsdWRl
c1Jvb3RMaW5lQm94Rm9udE9yTGVhZGluZygpOwogICAgICAgICBpbnQgYmFzZWxpbmVTaGlmdCA9
IGxpbmVCb3gtPnZlcnRpY2FsUG9zaXRpb25Gb3JCb3gocnVuLT5ib3goKSwgdmVydGljYWxQb3Np
dGlvbkNhY2hlKTsKLSAgICAgICAgaW50IHJvb3REZXNjZW50ID0gaW5jbHVkZVJvb3RMaW5lID8g
Zm9udC5mb250TWV0cmljcygpLmRlc2NlbnQoKSA6IDA7Ci0gICAgICAgIGludCByb290QXNjZW50
ID0gaW5jbHVkZVJvb3RMaW5lID8gZm9udC5mb250TWV0cmljcygpLmFzY2VudCgpIDogMDsKLSAg
ICAgICAgaW50IGJveEFzY2VudCA9IGZvbnQuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSAtIGJhc2Vs
aW5lU2hpZnQ7Ci0gICAgICAgIGludCBib3hEZXNjZW50ID0gZm9udC5mb250TWV0cmljcygpLmRl
c2NlbnQoKSArIGJhc2VsaW5lU2hpZnQ7CisgICAgICAgIGludCByb290RGVzY2VudCA9IGluY2x1
ZGVSb290TGluZSA/IGZvbnQuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuZGVzY2VudCgpIDog
MDsKKyAgICAgICAgaW50IHJvb3RBc2NlbnQgPSBpbmNsdWRlUm9vdExpbmUgPyBmb250LmZvbnRN
ZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudCgpIDogMDsKKyAgICAgICAgaW50IGJveEFzY2Vu
dCA9IGZvbnQuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50KCkgLSBiYXNlbGluZVNo
aWZ0OworICAgICAgICBpbnQgYm94RGVzY2VudCA9IGZvbnQuZm9udE1ldHJpY3NPZlByaW1hcnlG
b250KCkuZGVzY2VudCgpICsgYmFzZWxpbmVTaGlmdDsKICAgICAgICAgaWYgKGJveEFzY2VudCA+
IHJvb3REZXNjZW50IHx8ICBib3hEZXNjZW50ID4gcm9vdEFzY2VudCkKICAgICAgICAgICAgIGds
eXBoT3ZlcmZsb3cuY29tcHV0ZUJvdW5kcyA9IHRydWU7IAogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lSb290SW5saW5lQm94LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lSb290SW5saW5lQm94LmNwcAppbmRleCBlODk1Y2JiNjcx
NzBiNjQ0N2VjYzcxM2JhNTFjYjNmYmI2ZTkwNmVmLi4zMWJlN2Q5NmJmOWQ3NjllYjg5MzU2ODFl
ZTk3ZWNkMjgwOWUyOGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVn
YWN5Um9vdElubGluZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2Fj
eVJvb3RJbmxpbmVCb3guY3BwCkBAIC0zNjMsMTQgKzM2MywxNCBAQCBMYXlvdXRVbml0IExlZ2Fj
eVJvb3RJbmxpbmVCb3g6OmxpbmVTbmFwQWRqdXN0bWVudChMYXlvdXRVbml0IGRlbHRhKSBjb25z
dAogICAgIGlmICghZ3JpZExpbmVIZWlnaHQpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgTGF5
b3V0VW5pdCBsaW5lR3JpZEZvbnRBc2NlbnQgPSBsaW5lR3JpZC0+c3R5bGUoKS5mb250TWV0cmlj
cygpLmFzY2VudChiYXNlbGluZVR5cGUoKSk7CisgICAgTGF5b3V0VW5pdCBsaW5lR3JpZEZvbnRB
c2NlbnQgPSBsaW5lR3JpZC0+c3R5bGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2Nl
bnQoYmFzZWxpbmVUeXBlKCkpOwogICAgIExheW91dFVuaXQgbGluZUdyaWRGb250SGVpZ2h0IHsg
bGluZUdyaWRCb3gtPmxvZ2ljYWxIZWlnaHQoKSB9OwogICAgIExheW91dFVuaXQgZmlyc3RUZXh0
VG9wIHsgbGluZUdyaWRCbG9ja09mZnNldCArIGxpbmVHcmlkQm94LT5sb2dpY2FsVG9wKCkgfTsK
ICAgICBMYXlvdXRVbml0IGZpcnN0TGluZVRvcFdpdGhMZWFkaW5nID0gbGluZUdyaWRCbG9ja09m
ZnNldCArIGxpbmVHcmlkQm94LT5saW5lQm94VG9wKCk7CiAgICAgTGF5b3V0VW5pdCBmaXJzdEJh
c2VsaW5lUG9zaXRpb24gPSBmaXJzdFRleHRUb3AgKyBsaW5lR3JpZEZvbnRBc2NlbnQ7CiAKICAg
ICBMYXlvdXRVbml0IGN1cnJlbnRUZXh0VG9wIHsgYmxvY2tPZmZzZXQgKyBsb2dpY2FsVG9wKCkg
KyBkZWx0YSB9OwotICAgIExheW91dFVuaXQgY3VycmVudEZvbnRBc2NlbnQgPSBibG9ja0Zsb3co
KS5zdHlsZSgpLmZvbnRNZXRyaWNzKCkuYXNjZW50KGJhc2VsaW5lVHlwZSgpKTsKKyAgICBMYXlv
dXRVbml0IGN1cnJlbnRGb250QXNjZW50ID0gYmxvY2tGbG93KCkuc3R5bGUoKS5mb250TWV0cmlj
c09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoYmFzZWxpbmVUeXBlKCkpOwogICAgIExheW91dFVuaXQg
Y3VycmVudEJhc2VsaW5lUG9zaXRpb24gPSBjdXJyZW50VGV4dFRvcCArIGN1cnJlbnRGb250QXNj
ZW50OwogCiAgICAgTGF5b3V0VW5pdCBsaW5lR3JpZFBhZ2luYXRpb25PcmlnaW4gPSBpc0hvcml6
b250YWwoKSA/IGxheW91dFN0YXRlLT5saW5lR3JpZFBhZ2luYXRpb25PcmlnaW4oKS5oZWlnaHQo
KSA6IGxheW91dFN0YXRlLT5saW5lR3JpZFBhZ2luYXRpb25PcmlnaW4oKS53aWR0aCgpOwpAQCAt
NzQzLDggKzc0Myw4IEBAIHZvaWQgTGVnYWN5Um9vdElubGluZUJveDo6YXNjZW50QW5kRGVzY2Vu
dEZvckJveChMZWdhY3lJbmxpbmVCb3gmIGJveCwgR2x5cGhPdmVyCiAgICAgfQogICAgIAogICAg
IGlmIChpbmNsdWRlRm9udEZvckJveChib3gpICYmICFzZXRVc2VkRm9udCkgewotICAgICAgICBM
YXlvdXRVbml0IGZvbnRBc2NlbnQgeyBib3hMaW5lU3R5bGUuZm9udE1ldHJpY3MoKS5hc2NlbnQo
YmFzZWxpbmVUeXBlKCkpIH07Ci0gICAgICAgIExheW91dFVuaXQgZm9udERlc2NlbnQgeyBib3hM
aW5lU3R5bGUuZm9udE1ldHJpY3MoKS5kZXNjZW50KGJhc2VsaW5lVHlwZSgpKSB9OworICAgICAg
ICBMYXlvdXRVbml0IGZvbnRBc2NlbnQgeyBib3hMaW5lU3R5bGUuZm9udE1ldHJpY3NPZlByaW1h
cnlGb250KCkuYXNjZW50KGJhc2VsaW5lVHlwZSgpKSB9OworICAgICAgICBMYXlvdXRVbml0IGZv
bnREZXNjZW50IHsgYm94TGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmRlc2Nl
bnQoYmFzZWxpbmVUeXBlKCkpIH07CiAgICAgICAgIHNldEFzY2VudEFuZERlc2NlbnQoYXNjZW50
LCBkZXNjZW50LCBmb250QXNjZW50LCBmb250RGVzY2VudCwgYXNjZW50RGVzY2VudFNldCk7CiAg
ICAgICAgIGFmZmVjdHNBc2NlbnQgPSBmb250QXNjZW50IC0gYm94LmxvZ2ljYWxUb3AoKSA+IDA7
CiAgICAgICAgIGFmZmVjdHNEZXNjZW50ID0gZm9udERlc2NlbnQgKyBib3gubG9naWNhbFRvcCgp
ID4gMDsKQEAgLTc1NCwyNiArNzU0LDI2IEBAIHZvaWQgTGVnYWN5Um9vdElubGluZUJveDo6YXNj
ZW50QW5kRGVzY2VudEZvckJveChMZWdhY3lJbmxpbmVCb3gmIGJveCwgR2x5cGhPdmVyCiAgICAg
ICAgIHNldEFzY2VudEFuZERlc2NlbnQoYXNjZW50LCBkZXNjZW50LCBnbHlwaE92ZXJmbG93LT50
b3AsIGdseXBoT3ZlcmZsb3ctPmJvdHRvbSwgYXNjZW50RGVzY2VudFNldCk7CiAgICAgICAgIGFm
ZmVjdHNBc2NlbnQgPSBnbHlwaE92ZXJmbG93LT50b3AgLSBib3gubG9naWNhbFRvcCgpID4gMDsK
ICAgICAgICAgYWZmZWN0c0Rlc2NlbnQgPSBnbHlwaE92ZXJmbG93LT5ib3R0b20gKyBib3gubG9n
aWNhbFRvcCgpID4gMDsKLSAgICAgICAgZ2x5cGhPdmVyZmxvdy0+dG9wID0gc3RkOjptaW4oZ2x5
cGhPdmVyZmxvdy0+dG9wLCBzdGQ6Om1heCgwX2x1LCBnbHlwaE92ZXJmbG93LT50b3AgLSBib3hM
aW5lU3R5bGUuZm9udE1ldHJpY3MoKS5hc2NlbnQoYmFzZWxpbmVUeXBlKCkpKSk7Ci0gICAgICAg
IGdseXBoT3ZlcmZsb3ctPmJvdHRvbSA9IHN0ZDo6bWluKGdseXBoT3ZlcmZsb3ctPmJvdHRvbSwg
c3RkOjptYXgoMF9sdSwgZ2x5cGhPdmVyZmxvdy0+Ym90dG9tIC0gYm94TGluZVN0eWxlLmZvbnRN
ZXRyaWNzKCkuZGVzY2VudChiYXNlbGluZVR5cGUoKSkpKTsKKyAgICAgICAgZ2x5cGhPdmVyZmxv
dy0+dG9wID0gc3RkOjptaW4oZ2x5cGhPdmVyZmxvdy0+dG9wLCBzdGQ6Om1heCgwX2x1LCBnbHlw
aE92ZXJmbG93LT50b3AgLSBib3hMaW5lU3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCku
YXNjZW50KGJhc2VsaW5lVHlwZSgpKSkpOworICAgICAgICBnbHlwaE92ZXJmbG93LT5ib3R0b20g
PSBzdGQ6Om1pbihnbHlwaE92ZXJmbG93LT5ib3R0b20sIHN0ZDo6bWF4KDBfbHUsIGdseXBoT3Zl
cmZsb3ctPmJvdHRvbSAtIGJveExpbmVTdHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5k
ZXNjZW50KGJhc2VsaW5lVHlwZSgpKSkpOwogICAgIH0KICAgICAKICAgICBpZiAoaW5jbHVkZUlu
aXRpYWxMZXR0ZXJGb3JCb3goYm94KSkgewogICAgICAgICBib29sIGNhblVzZUdseXBocyA9IGds
eXBoT3ZlcmZsb3cgJiYgZ2x5cGhPdmVyZmxvdy0+Y29tcHV0ZUJvdW5kczsKLSAgICAgICAgYXV0
byBsZXR0ZXJBc2NlbnQgeyBiYXNlbGluZVR5cGUoKSA9PSBBbHBoYWJldGljQmFzZWxpbmUgPyBM
YXlvdXRVbml0KGJveExpbmVTdHlsZS5mb250TWV0cmljcygpLmNhcEhlaWdodCgpKSA6IChjYW5V
c2VHbHlwaHMgPyBnbHlwaE92ZXJmbG93LT50b3AgOiBMYXlvdXRVbml0KGJveExpbmVTdHlsZS5m
b250TWV0cmljcygpLmFzY2VudChiYXNlbGluZVR5cGUoKSkpKSB9OwotICAgICAgICBhdXRvIGxl
dHRlckRlc2NlbnQgeyBjYW5Vc2VHbHlwaHMgPyBnbHlwaE92ZXJmbG93LT5ib3R0b20gOiAoYm94
LmlzUm9vdElubGluZUJveCgpID8gMF9sdSA6IExheW91dFVuaXQoYm94TGluZVN0eWxlLmZvbnRN
ZXRyaWNzKCkuZGVzY2VudChiYXNlbGluZVR5cGUoKSkpKSB9OworICAgICAgICBhdXRvIGxldHRl
ckFzY2VudCB7IGJhc2VsaW5lVHlwZSgpID09IEFscGhhYmV0aWNCYXNlbGluZSA/IExheW91dFVu
aXQoYm94TGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmNhcEhlaWdodCgpKSA6
IChjYW5Vc2VHbHlwaHMgPyBnbHlwaE92ZXJmbG93LT50b3AgOiBMYXlvdXRVbml0KGJveExpbmVT
dHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoYmFzZWxpbmVUeXBlKCkpKSkg
fTsKKyAgICAgICAgYXV0byBsZXR0ZXJEZXNjZW50IHsgY2FuVXNlR2x5cGhzID8gZ2x5cGhPdmVy
Zmxvdy0+Ym90dG9tIDogKGJveC5pc1Jvb3RJbmxpbmVCb3goKSA/IDBfbHUgOiBMYXlvdXRVbml0
KGJveExpbmVTdHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5kZXNjZW50KGJhc2VsaW5l
VHlwZSgpKSkpIH07CiAgICAgICAgIHNldEFzY2VudEFuZERlc2NlbnQoYXNjZW50LCBkZXNjZW50
LCBsZXR0ZXJBc2NlbnQsIGxldHRlckRlc2NlbnQsIGFzY2VudERlc2NlbnRTZXQpOwogICAgICAg
ICBhZmZlY3RzQXNjZW50ID0gbGV0dGVyQXNjZW50IC0gYm94LmxvZ2ljYWxUb3AoKSA+IDA7CiAg
ICAgICAgIGFmZmVjdHNEZXNjZW50ID0gbGV0dGVyRGVzY2VudCArIGJveC5sb2dpY2FsVG9wKCkg
PiAwOwogICAgICAgICBpZiAoY2FuVXNlR2x5cGhzKSB7Ci0gICAgICAgICAgICBnbHlwaE92ZXJm
bG93LT50b3AgPSBzdGQ6Om1pbihnbHlwaE92ZXJmbG93LT50b3AsIHN0ZDo6bWF4KDBfbHUsIGds
eXBoT3ZlcmZsb3ctPnRvcCAtIGJveExpbmVTdHlsZS5mb250TWV0cmljcygpLmFzY2VudChiYXNl
bGluZVR5cGUoKSkpKTsKLSAgICAgICAgICAgIGdseXBoT3ZlcmZsb3ctPmJvdHRvbSA9IHN0ZDo6
bWluKGdseXBoT3ZlcmZsb3ctPmJvdHRvbSwgc3RkOjptYXgoMF9sdSwgZ2x5cGhPdmVyZmxvdy0+
Ym90dG9tIC0gYm94TGluZVN0eWxlLmZvbnRNZXRyaWNzKCkuZGVzY2VudChiYXNlbGluZVR5cGUo
KSkpKTsKKyAgICAgICAgICAgIGdseXBoT3ZlcmZsb3ctPnRvcCA9IHN0ZDo6bWluKGdseXBoT3Zl
cmZsb3ctPnRvcCwgc3RkOjptYXgoMF9sdSwgZ2x5cGhPdmVyZmxvdy0+dG9wIC0gYm94TGluZVN0
eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudChiYXNlbGluZVR5cGUoKSkpKTsK
KyAgICAgICAgICAgIGdseXBoT3ZlcmZsb3ctPmJvdHRvbSA9IHN0ZDo6bWluKGdseXBoT3ZlcmZs
b3ctPmJvdHRvbSwgc3RkOjptYXgoMF9sdSwgZ2x5cGhPdmVyZmxvdy0+Ym90dG9tIC0gYm94TGlu
ZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmRlc2NlbnQoYmFzZWxpbmVUeXBlKCkp
KSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoaW5jbHVkZU1hcmdpbkZvckJveChib3gp
KSB7Ci0gICAgICAgIExheW91dFVuaXQgYXNjZW50V2l0aE1hcmdpbiA9IGJveExpbmVTdHlsZS5m
b250TWV0cmljcygpLmFzY2VudChiYXNlbGluZVR5cGUoKSk7Ci0gICAgICAgIExheW91dFVuaXQg
ZGVzY2VudFdpdGhNYXJnaW4gPSBib3hMaW5lU3R5bGUuZm9udE1ldHJpY3MoKS5kZXNjZW50KGJh
c2VsaW5lVHlwZSgpKTsKKyAgICAgICAgTGF5b3V0VW5pdCBhc2NlbnRXaXRoTWFyZ2luID0gYm94
TGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudChiYXNlbGluZVR5cGUo
KSk7CisgICAgICAgIExheW91dFVuaXQgZGVzY2VudFdpdGhNYXJnaW4gPSBib3hMaW5lU3R5bGUu
Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuZGVzY2VudChiYXNlbGluZVR5cGUoKSk7CiAgICAg
ICAgIGlmIChib3gucGFyZW50KCkgJiYgIWJveC5yZW5kZXJlcigpLmlzVGV4dE9yTGluZUJyZWFr
KCkpIHsKICAgICAgICAgICAgIGFzY2VudFdpdGhNYXJnaW4gKz0gYm94LmJveE1vZGVsT2JqZWN0
KCktPmJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKSArIGJveC5ib3hNb2RlbE9iamVjdCgpLT5tYXJn
aW5CZWZvcmUoKTsKICAgICAgICAgICAgIGRlc2NlbnRXaXRoTWFyZ2luICs9IGJveC5ib3hNb2Rl
bE9iamVjdCgpLT5ib3JkZXJBbmRQYWRkaW5nQWZ0ZXIoKSArIGJveC5ib3hNb2RlbE9iamVjdCgp
LT5tYXJnaW5BZnRlcigpOwpAQCAtODIxLDcgKzgyMSw3IEBAIExheW91dFVuaXQgTGVnYWN5Um9v
dElubGluZUJveDo6dmVydGljYWxQb3NpdGlvbkZvckJveChMZWdhY3lJbmxpbmVCb3gqIGJveCwg
VmVyCiAgICAgaWYgKHZlcnRpY2FsQWxpZ24gIT0gVmVydGljYWxBbGlnbjo6QmFzZWxpbmUpIHsK
ICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudExpbmVTdHlsZSA9IGZpcnN0TGluZSA/
IHBhcmVudC0+Zmlyc3RMaW5lU3R5bGUoKSA6IHBhcmVudC0+c3R5bGUoKTsKICAgICAgICAgY29u
c3QgRm9udENhc2NhZGUmIGZvbnQgPSBwYXJlbnRMaW5lU3R5bGUuZm9udENhc2NhZGUoKTsKLSAg
ICAgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gZm9udC5mb250TWV0cmljcygp
OworICAgICAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MgPSBmb250LmZvbnRNZXRy
aWNzT2ZQcmltYXJ5Rm9udCgpOwogICAgICAgICBpbnQgZm9udFNpemUgPSBmb250LnBpeGVsU2l6
ZSgpOwogCiAgICAgICAgIExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVEaXJlY3Rpb24gPSBwYXJlbnQt
PmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGlu
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IGIxM2U5N2Ex
MTZhZTNhMTdhZmJjNTAzNmUyNjM5ZmE1YTVhMjMyMmUuLjhlYTE5OWMyOTE4YmIxMTMzYTU0NGU1
YjUyN2I2MTZjZjQ4ZjIxOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmNwcApAQCAtMjQ5Niw3ICsyNDk2LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6YmFzZWxp
bmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGZpcnN0TGkKICAgICB9
CiAKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSBmaXJzdExpbmUgPyBmaXJzdExpbmVT
dHlsZSgpIDogdGhpcy0+c3R5bGUoKTsKLSAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJp
Y3MgPSBzdHlsZS5mb250TWV0cmljcygpOworICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0
cmljcyA9IHN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwogICAgIHJldHVybiBMYXlv
dXRVbml0IHsgZm9udE1ldHJpY3MuYXNjZW50KGJhc2VsaW5lVHlwZSkgKyAobGluZUhlaWdodChm
aXJzdExpbmUsIGRpcmVjdGlvbiwgbGluZVBvc2l0aW9uTW9kZSkgLSBmb250TWV0cmljcy5oZWln
aHQoKSkgLyAyIH0udG9JbnQoKTsKIH0KIApAQCAtMjU0OCw3ICsyNTQ4LDcgQEAgc3RkOjpvcHRp
b25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9jazo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGly
ZWN0aW9uTW9kZSBsaW4KICAgICB9CiAKICAgICBpZiAoIWhhdmVOb3JtYWxGbG93Q2hpbGQgJiYg
aGFzTGluZUlmRW1wdHkoKSkgewotICAgICAgICBhdXRvJiBmb250TWV0cmljcyA9IGZpcnN0TGlu
ZVN0eWxlKCkuZm9udE1ldHJpY3MoKTsKKyAgICAgICAgYXV0byYgZm9udE1ldHJpY3MgPSBmaXJz
dExpbmVTdHlsZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwogICAgICAgICByZXR1cm4g
TGF5b3V0VW5pdCB7IExheW91dFVuaXQoZm9udE1ldHJpY3MuYXNjZW50KCkKICAgICAgICAgICAg
ICsgKGxpbmVIZWlnaHQodHJ1ZSwgbGluZURpcmVjdGlvbiwgUG9zaXRpb25PZkludGVyaW9yTGlu
ZUJveGVzKSAtIGZvbnRNZXRyaWNzLmhlaWdodCgpKSAvIDIKICAgICAgICAgICAgICsgKGxpbmVE
aXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUgPyBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSA6
IGJvcmRlclJpZ2h0KCkgKyBwYWRkaW5nUmlnaHQoKSkpLnRvSW50KCkgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggOTdjNjg2NTNlNWYwZWZm
NGJhOWEwNzQzOGY0MzliNDEzYjZkMTUwYi4uN2M1NjNjZjlmYzZhOWI3NDk2OTc3ZDgwNWQ1ODUw
YjNlODgxYmMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxv
dy5jcHAKQEAgLTI0MDEsNyArMjQwMSw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRl
TG9naWNhbExvY2F0aW9uRm9yRmxvYXQoRmxvYXRpbmdPYmplY3QmIGZsb2F0aW5nT2JqCiB2b2lk
IFJlbmRlckJsb2NrRmxvdzo6YWRqdXN0SW5pdGlhbExldHRlclBvc2l0aW9uKFJlbmRlckJveCYg
Y2hpbGRCb3gsIExheW91dFVuaXQmIGxvZ2ljYWxUb3BPZmZzZXQsIExheW91dFVuaXQmIG1hcmdp
bkJlZm9yZU9mZnNldCkKIHsKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSBmaXJzdExp
bmVTdHlsZSgpOwotICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxlLmZv
bnRNZXRyaWNzKCk7CisgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gc3R5bGUu
Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCk7CiAgICAgaWYgKCFmb250TWV0cmljcy5oYXNDYXBI
ZWlnaHQoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yOTYzLDggKzI5NjMsOCBAQCBzdGQ6Om9w
dGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJsb2NrRmxvdzo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBj
b25zdAogCiAgICAgQVNTRVJUKGZpcnN0Um9vdEJveCgpKTsKICAgICBpZiAoc3R5bGUoKS5pc0Zs
aXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkpCi0gICAgICAgIHJldHVybiBMYXlvdXRVbml0IHsgZmly
c3RSb290Qm94KCktPmxvZ2ljYWxUb3AoKSArIGZpcnN0TGluZVN0eWxlKCkuZm9udE1ldHJpY3Mo
KS5kZXNjZW50KGZpcnN0Um9vdEJveCgpLT5iYXNlbGluZVR5cGUoKSkgfTsKLSAgICByZXR1cm4g
TGF5b3V0VW5pdCB7IGZpcnN0Um9vdEJveCgpLT5sb2dpY2FsVG9wKCkgKyBmaXJzdExpbmVTdHls
ZSgpLmZvbnRNZXRyaWNzKCkuYXNjZW50KGZpcnN0Um9vdEJveCgpLT5iYXNlbGluZVR5cGUoKSkg
fTsKKyAgICAgICAgcmV0dXJuIExheW91dFVuaXQgeyBmaXJzdFJvb3RCb3goKS0+bG9naWNhbFRv
cCgpICsgZmlyc3RMaW5lU3R5bGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5kZXNjZW50
KGZpcnN0Um9vdEJveCgpLT5iYXNlbGluZVR5cGUoKSkgfTsKKyAgICByZXR1cm4gTGF5b3V0VW5p
dCB7IGZpcnN0Um9vdEJveCgpLT5sb2dpY2FsVG9wKCkgKyBmaXJzdExpbmVTdHlsZSgpLmZvbnRN
ZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudChmaXJzdFJvb3RCb3goKS0+YmFzZWxpbmVUeXBl
KCkpIH07CiB9CiAKIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQmxvY2tGbG93Ojpp
bmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVEaXJlY3Rpb24pIGNvbnN0
CkBAIC0yOTk0LDcgKzI5OTQsNyBAQCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJs
b2NrRmxvdzo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZQogICAgICAgICBp
ZiAoIWhhc0xpbmVzKCkpIHsKICAgICAgICAgICAgIGlmICghaGFzTGluZUlmRW1wdHkoKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICAgICAgY29uc3QgYXV0
byYgZm9udE1ldHJpY3MgPSBmaXJzdExpbmVTdHlsZSgpLmZvbnRNZXRyaWNzKCk7CisgICAgICAg
ICAgICBjb25zdCBhdXRvJiBmb250TWV0cmljcyA9IGZpcnN0TGluZVN0eWxlKCkuZm9udE1ldHJp
Y3NPZlByaW1hcnlGb250KCk7CiAgICAgICAgICAgICByZXR1cm4gTGF5b3V0VW5pdCB7IExheW91
dFVuaXQoZm9udE1ldHJpY3MuYXNjZW50KCkKICAgICAgICAgICAgICAgICArIChsaW5lSGVpZ2h0
KHRydWUsIGxpbmVEaXJlY3Rpb24sIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcykgLSBmb250
TWV0cmljcy5oZWlnaHQoKSkgLyAyCiAgICAgICAgICAgICAgICAgKyAobGluZURpcmVjdGlvbiA9
PSBIb3Jpem9udGFsTGluZSA/IGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpIDogYm9yZGVyUmln
aHQoKSArIHBhZGRpbmdSaWdodCgpKSkudG9JbnQoKSB9OwpAQCAtMzAwNCw3ICszMDA0LDcgQEAg
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9ja0Zsb3c6OmlubGluZUJsb2NrQmFz
ZWxpbmUoTGluZURpcmVjdGlvbk1vZGUKICAgICAgICAgICAgIGJvb2wgaXNGaXJzdExpbmUgPSBs
YXN0Um9vdEJveCgpID09IGZpcnN0Um9vdEJveCgpOwogICAgICAgICAgICAgY29uc3QgYXV0byYg
c3R5bGUgPSBpc0ZpcnN0TGluZSA/IGZpcnN0TGluZVN0eWxlKCkgOiB0aGlzLT5zdHlsZSgpOwog
ICAgICAgICAgICAgLy8gTGVnYWN5SW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0luQmxvY2tEaXJl
Y3Rpb24gd2lsbCBmbGlwIGxpbmVzIGluIGNhc2Ugb2YgdmVydGljYWxMUiBtb2RlLCBzbyB3ZSBj
YW4gYXNzdW1lIHZlcnRpY2FsUkwgZm9yIG5vdy4KLSAgICAgICAgICAgIGxhc3RCYXNlbGluZSA9
IHN0eWxlLmZvbnRNZXRyaWNzKCkuYXNjZW50KGxhc3RSb290Qm94KCktPmJhc2VsaW5lVHlwZSgp
KQorICAgICAgICAgICAgbGFzdEJhc2VsaW5lID0gc3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlG
b250KCkuYXNjZW50KGxhc3RSb290Qm94KCktPmJhc2VsaW5lVHlwZSgpKQogICAgICAgICAgICAg
ICAgICsgKHN0eWxlLmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSA/IGxvZ2ljYWxIZWlnaHQo
KSAtIGxhc3RSb290Qm94KCktPmxvZ2ljYWxCb3R0b20oKSA6IGxhc3RSb290Qm94KCktPmxvZ2lj
YWxUb3AoKSk7CiAgICAgICAgIH0KICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVY
VCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3Qu
Y3BwCmluZGV4IGRkYmU5YTQxNmYzZjk3ZWZmMzIzMjAyZDYwODQwZjIwMjc2ODdiNWQuLjcxZTc3
MzlkMWM5NjRkMmI0NTg5YzUxODcyNDQyZmIzOGQ4OTBkYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcApAQCAtMjU2LDcgKzI1Niw3
IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50CiAgICAgY29udGV4dC5zZXRTdHJva2VUaGlja25l
c3MoMik7CiAgICAgY29udGV4dC5zdHJva2VQYXRoKHN0cm9rZVBhdGgpOwogCi0gICAgY29uc3Qg
Rm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gZm9udC5mb250TWV0cmljcygpOworICAgIGNvbnN0
IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IGZvbnQuZm9udE1ldHJpY3NPZlByaW1hcnlGb250
KCk7CiAgICAgZmxvYXQgbGFiZWxYID0gcm91bmRmKHJlcGxhY2VtZW50VGV4dFJlY3QubG9jYXRp
b24oKS54KCkgKyByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdExlZnRUZXh0TWFyZ2luKTsKICAg
ICBmbG9hdCBsYWJlbFkgPSByb3VuZGYocmVwbGFjZW1lbnRUZXh0UmVjdC5sb2NhdGlvbigpLnko
KSArIChyZXBsYWNlbWVudFRleHRSZWN0LnNpemUoKS5oZWlnaHQoKSAtIGZvbnRNZXRyaWNzLmhl
aWdodCgpKSAvIDIgKyBmb250TWV0cmljcy5hc2NlbnQoKSArIHJlcGxhY2VtZW50VGV4dFJvdW5k
ZWRSZWN0VG9wVGV4dE1hcmdpbik7CiAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IocmVwbGFjZW1l
bnRUZXh0Q29sb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5k
ZXggMDUwMGY4OTVmZTBmODM1YTI0YWExZTdjMzE1MzYwZDJmZWQ4NGU4Yy4uYmIxMzlmMmY1NzIw
NjZiODlhZDRjNmYyZGI5YzUyMjUwN2FjZjY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2UuY3BwCkBAIC0yMTAsNyArMjEwLDcgQEAgSW1hZ2VTaXplQ2hhbmdlVHlwZSBS
ZW5kZXJJbWFnZTo6c2V0SW1hZ2VTaXplRm9yQWx0VGV4dChDYWNoZWRJbWFnZSogbmV3SW1hZ2Ug
LyoKICAgICAvLyB3ZSBoYXZlIGFuIGFsdCBhbmQgdGhlIHVzZXIgbWVhbnQgaXQgKGl0cyBub3Qg
YSB0ZXh0IHdlIGludmVudGVkKQogICAgIGlmICghbV9hbHRUZXh0LmlzRW1wdHkoKSkgewogICAg
ICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKTsKLSAg
ICAgICAgSW50U2l6ZSBwYWRkZWRUZXh0U2l6ZShwYWRkaW5nV2lkdGggKyBzdGQ6Om1pbihjZWls
Zihmb250LndpZHRoKFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKG1fYWx0VGV4dCwgc3R5
bGUoKSkpKSwgbWF4QWx0VGV4dFdpZHRoKSwgcGFkZGluZ0hlaWdodCArIHN0ZDo6bWluKGZvbnQu
Zm9udE1ldHJpY3MoKS5oZWlnaHQoKSwgbWF4QWx0VGV4dEhlaWdodCkpOworICAgICAgICBJbnRT
aXplIHBhZGRlZFRleHRTaXplKHBhZGRpbmdXaWR0aCArIHN0ZDo6bWluKGNlaWxmKGZvbnQud2lk
dGgoUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4obV9hbHRUZXh0LCBzdHlsZSgpKSkpLCBt
YXhBbHRUZXh0V2lkdGgpLCBwYWRkaW5nSGVpZ2h0ICsgc3RkOjptaW4oZm9udC5mb250TWV0cmlj
c09mUHJpbWFyeUZvbnQoKS5oZWlnaHQoKSwgbWF4QWx0VGV4dEhlaWdodCkpOwogICAgICAgICBp
bWFnZVNpemUgPSBpbWFnZVNpemUuZXhwYW5kZWRUbyhwYWRkZWRUZXh0U2l6ZSk7CiAgICAgfQog
CkBAIC01MzIsNyArNTMyLDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICAgICAgICAg
ICAgICBTdHJpbmcgdGV4dCA9IGRvY3VtZW50KCkuZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNv
ZGluZyhtX2FsdFRleHQpOwogICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHN0
eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5Q29s
b3IpKTsKICAgICAgICAgICAgICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlKCku
Zm9udENhc2NhZGUoKTsKLSAgICAgICAgICAgICAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1l
dHJpY3MgPSBmb250LmZvbnRNZXRyaWNzKCk7CisgICAgICAgICAgICAgICAgY29uc3QgRm9udE1l
dHJpY3MmIGZvbnRNZXRyaWNzID0gZm9udC5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsKICAg
ICAgICAgICAgICAgICBMYXlvdXRVbml0IGFzY2VudCA9IGZvbnRNZXRyaWNzLmFzY2VudCgpOwog
ICAgICAgICAgICAgICAgIExheW91dFBvaW50IGFsdFRleHRPZmZzZXQgPSBwYWludE9mZnNldDsK
ICAgICAgICAgICAgICAgICBhbHRUZXh0T2Zmc2V0Lm1vdmUobGVmdEJvcmRlciArIGxlZnRQYWQg
KyAocGFkZGluZ1dpZHRoIC8gMikgLSBtaXNzaW5nSW1hZ2VCb3JkZXJXaWR0aCwgdG9wQm9yZGVy
ICsgdG9wUGFkICsgYXNjZW50ICsgKHBhZGRpbmdIZWlnaHQgLyAyKSAtIG1pc3NpbmdJbWFnZUJv
cmRlcldpZHRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKaW5k
ZXggNmE5YTM5MTAwM2YyZTAwOGIyYWVhY2Y3N2YyNGY4N2FkM2VhNTIxZS4uMGEwOWY0OGJjZTY1
MTVjMDg5NzZhNjg0M2RjMDIxMWZiZTcxYmEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklubGluZS5jcHAKQEAgLTIxMCw3ICsyMTAsNyBAQCBib29sIFJlbmRlcklubGluZTo6
bWF5QWZmZWN0TGF5b3V0KCkgY29uc3QKICAgICAgICAgfHwgKHBhcmVudFJlbmRlcklubGluZSAm
JiBwYXJlbnRTdHlsZS0+dmVydGljYWxBbGlnbigpICE9IFZlcnRpY2FsQWxpZ246OkJhc2VsaW5l
KQogICAgICAgICB8fCBzdHlsZSgpLnZlcnRpY2FsQWxpZ24oKSAhPSBWZXJ0aWNhbEFsaWduOjpC
YXNlbGluZQogICAgICAgICB8fCBzdHlsZSgpLnRleHRFbXBoYXNpc01hcmsoKSAhPSBUZXh0RW1w
aGFzaXNNYXJrOjpOb25lCi0gICAgICAgIHx8IChjaGVja0ZvbnRzICYmICghcGFyZW50U3R5bGUt
PmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKS5oYXNJZGVudGljYWxBc2NlbnREZXNjZW50QW5k
TGluZUdhcChzdHlsZSgpLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKSkKKyAgICAgICAgfHwg
KGNoZWNrRm9udHMgJiYgKCFwYXJlbnRTdHlsZS0+Zm9udENhc2NhZGUoKS5mb250TWV0cmljc09m
UHJpbWFyeUZvbnQoKS5oYXNJZGVudGljYWxBc2NlbnREZXNjZW50QW5kTGluZUdhcChzdHlsZSgp
LmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkpCiAgICAgICAgIHx8IHBh
cmVudFN0eWxlLT5saW5lSGVpZ2h0KCkgIT0gc3R5bGUoKS5saW5lSGVpZ2h0KCkpKQogICAgICAg
ICB8fCBoYXNIYXJkTGluZUJyZWFrQ2hpbGRPbmx5OwogCkBAIC0yMTgsNyArMjE4LDcgQEAgYm9v
bCBSZW5kZXJJbmxpbmU6Om1heUFmZmVjdExheW91dCgpIGNvbnN0CiAgICAgICAgIC8vIEhhdmUg
dG8gY2hlY2sgdGhlIGZpcnN0IGxpbmUgc3R5bGUgYXMgd2VsbC4KICAgICAgICAgcGFyZW50U3R5
bGUgPSAmcGFyZW50KCktPmZpcnN0TGluZVN0eWxlKCk7CiAgICAgICAgIGF1dG8mIGNoaWxkU3R5
bGUgPSBmaXJzdExpbmVTdHlsZSgpOwotICAgICAgICBtYXlBZmZlY3RMYXlvdXQgPSAhcGFyZW50
U3R5bGUtPmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKS5oYXNJZGVudGljYWxBc2NlbnREZXNj
ZW50QW5kTGluZUdhcChjaGlsZFN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKSkKKyAg
ICAgICAgbWF5QWZmZWN0TGF5b3V0ID0gIXBhcmVudFN0eWxlLT5mb250Q2FzY2FkZSgpLmZvbnRN
ZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmhhc0lkZW50aWNhbEFzY2VudERlc2NlbnRBbmRMaW5lR2Fw
KGNoaWxkU3R5bGUuZm9udENhc2NhZGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKSkKICAg
ICAgICAgICAgIHx8IGNoaWxkU3R5bGUudmVydGljYWxBbGlnbigpICE9IFZlcnRpY2FsQWxpZ246
OkJhc2VsaW5lCiAgICAgICAgICAgICB8fCBwYXJlbnRTdHlsZS0+bGluZUhlaWdodCgpICE9IGNo
aWxkU3R5bGUubGluZUhlaWdodCgpOwogICAgIH0KQEAgLTg1NSw3ICs4NTUsNyBAQCBMYXlvdXRV
bml0IFJlbmRlcklubGluZTo6bGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlv
bk1vZGUgLypkaXJlY3RpbwogTGF5b3V0VW5pdCBSZW5kZXJJbmxpbmU6OmJhc2VsaW5lUG9zaXRp
b24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rp
b25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25z
dAogewogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IGZpcnN0TGluZSA/IGZpcnN0TGlu
ZVN0eWxlKCkgOiB0aGlzLT5zdHlsZSgpOwotICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0
cmljcyA9IHN0eWxlLmZvbnRNZXRyaWNzKCk7CisgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRN
ZXRyaWNzID0gc3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCk7CiAgICAgcmV0dXJuIExh
eW91dFVuaXQgeyAoZm9udE1ldHJpY3MuYXNjZW50KGJhc2VsaW5lVHlwZSkgKyAobGluZUhlaWdo
dChmaXJzdExpbmUsIGRpcmVjdGlvbiwgbGluZVBvc2l0aW9uTW9kZSkgLSBmb250TWV0cmljcy5o
ZWlnaHQoKSkgLyAyKS50b0ludCgpIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpbmVCcmVhay5jcHAKaW5kZXggYTIzOTQ2NTE1YThlZGE3Yzg3OWEzMmFiOTIwZjlm
YmMyYzc0NWE1NS4uZjc1ZWU3OWVmNzcyZDIzYjA0NGFlMmFlMzk0NzBkMTk5OWU4NWNkZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKQEAgLTgwLDcg
KzgwLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJMaW5lQnJlYWs6OmxpbmVIZWlnaHQoYm9vbCBmaXJz
dExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIC8qZGlyZWMKIExheW91dFVuaXQgUmVuZGVyTGluZUJy
ZWFrOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmly
c3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbGlu
ZVBvc2l0aW9uTW9kZSkgY29uc3QKIHsKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSBm
aXJzdExpbmUgPyBmaXJzdExpbmVTdHlsZSgpIDogdGhpcy0+c3R5bGUoKTsKLSAgICBjb25zdCBG
b250TWV0cmljcyYgZm9udE1ldHJpY3MgPSBzdHlsZS5mb250TWV0cmljcygpOworICAgIGNvbnN0
IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9u
dCgpOwogICAgIHJldHVybiBMYXlvdXRVbml0IHsgKGZvbnRNZXRyaWNzLmFzY2VudChiYXNlbGlu
ZVR5cGUpICsgKGxpbmVIZWlnaHQoZmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1v
ZGUpIC0gZm9udE1ldHJpY3MuaGVpZ2h0KCkpIC8gMikudG9JbnQoKSB9OwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXggMmU5YjU4NTZkMjhjOTRl
NzZjNDliMzc5YmZjNWI4Y2FmZDQ3OGQ2My4uYTliMjJjNWU1NWVhZmM0ZDM4ZGMwNmM1MDY3YjYx
ZjU3YjljZjJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNw
cApAQCAtMzc4LDcgKzM3OCw3IEBAIHN0YXRpYyBMYXlvdXRTaXplIGl0ZW1PZmZzZXRGb3JBbGln
bm1lbnQoVGV4dFJ1biB0ZXh0UnVuLCBjb25zdCBSZW5kZXJTdHlsZSogaXRlCiAgICAgaWYgKGFj
dHVhbEFsaWdubWVudCA9PSBUZXh0QWxpZ25Nb2RlOjpTdGFydCB8fCBhY3R1YWxBbGlnbm1lbnQg
PT0gVGV4dEFsaWduTW9kZTo6SnVzdGlmeSkKICAgICAgICAgYWN0dWFsQWxpZ25tZW50ID0gaXRl
bVN0eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBUZXh0QWxpZ25Nb2RlOjpMZWZ0IDog
VGV4dEFsaWduTW9kZTo6UmlnaHQ7CiAKLSAgICBMYXlvdXRTaXplIG9mZnNldCA9IExheW91dFNp
emUoMCwgaXRlbUZvbnQuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSk7CisgICAgTGF5b3V0U2l6ZSBv
ZmZzZXQgPSBMYXlvdXRTaXplKDAsIGl0ZW1Gb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgp
LmFzY2VudCgpKTsKICAgICBpZiAoYWN0dWFsQWxpZ25tZW50ID09IFRleHRBbGlnbk1vZGU6OlJp
Z2h0IHx8IGFjdHVhbEFsaWdubWVudCA9PSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRSaWdodCkgewog
ICAgICAgICBmbG9hdCB0ZXh0V2lkdGggPSBpdGVtRm9udC53aWR0aCh0ZXh0UnVuKTsKICAgICAg
ICAgb2Zmc2V0LnNldFdpZHRoKGl0ZW1Cb3VkaW5nQm94LndpZHRoKCkgLSB0ZXh0V2lkdGggLSBv
cHRpb25zU3BhY2luZ0hvcml6b250YWwpOwpAQCAtNzA0LDcgKzcwNCw3IEBAIHZvaWQgUmVuZGVy
TGlzdEJveDo6c2Nyb2xsVG8oaW50IG5ld09mZnNldCkKIAogTGF5b3V0VW5pdCBSZW5kZXJMaXN0
Qm94OjppdGVtSGVpZ2h0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3R5bGUoKS5mb250TWV0cmlj
cygpLmhlaWdodCgpICsgcm93U3BhY2luZzsKKyAgICByZXR1cm4gc3R5bGUoKS5mb250TWV0cmlj
c09mUHJpbWFyeUZvbnQoKS5oZWlnaHQoKSArIHJvd1NwYWNpbmc7CiB9CiAKIGludCBSZW5kZXJM
aXN0Qm94Ojp2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAppbmRleCAwMWU1ZGNlOGU3NTJmMzkwMThh
Yzg2NzFmNjY4NWVjMjYwYjg0ZDE2Li44ZjcxNWE0NjFjZmUwYTFmYTE4ZTE2MmZjYmJmOTQyYTdj
ZGYwMTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1h
cmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIu
Y3BwCkBAIC0xNjQ4LDcgKzE2NDgsNyBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBhaW50KFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZQogICAgICAg
ICBjb250ZXh0LnRyYW5zbGF0ZSgtbWFya2VyUmVjdC54KCksIC1tYXJrZXJSZWN0Lm1heFkoKSk7
CiAgICAgfQogCi0gICAgRmxvYXRQb2ludCB0ZXh0T3JpZ2luID0gRmxvYXRQb2ludChtYXJrZXJS
ZWN0LngoKSwgbWFya2VyUmVjdC55KCkgKyBzdHlsZSgpLmZvbnRNZXRyaWNzKCkuYXNjZW50KCkp
OworICAgIEZsb2F0UG9pbnQgdGV4dE9yaWdpbiA9IEZsb2F0UG9pbnQobWFya2VyUmVjdC54KCks
IG1hcmtlclJlY3QueSgpICsgc3R5bGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2Nl
bnQoKSk7CiAgICAgdGV4dE9yaWdpbiA9IHJvdW5kUG9pbnRUb0RldmljZVBpeGVscyhMYXlvdXRQ
b2ludCh0ZXh0T3JpZ2luKSwgZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCBzdHlsZSgp
LmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSk7CiAgICAgY29udGV4dC5kcmF3VGV4dChzdHlsZSgp
LmZvbnRDYXNjYWRlKCksIHRleHRSdW4oKSwgdGV4dE9yaWdpbik7CiB9CkBAIC0xNzgwLDcgKzE3
ODAsNyBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OmxheW91dCgpCiAgICAgICAgIHNldEhlaWdo
dChtX2ltYWdlLT5pbWFnZVNpemUodGhpcywgc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpLmhlaWdo
dCgpKTsKICAgICB9IGVsc2UgewogICAgICAgICBzZXRMb2dpY2FsV2lkdGgobWluUHJlZmVycmVk
TG9naWNhbFdpZHRoKCkpOwotICAgICAgICBzZXRMb2dpY2FsSGVpZ2h0KHN0eWxlKCkuZm9udE1l
dHJpY3MoKS5oZWlnaHQoKSk7CisgICAgICAgIHNldExvZ2ljYWxIZWlnaHQoc3R5bGUoKS5mb250
TWV0cmljc09mUHJpbWFyeUZvbnQoKS5oZWlnaHQoKSk7CiAgICAgfQogCiAgICAgc2V0TWFyZ2lu
U3RhcnQoMCk7CkBAIC0xODIwLDcgKzE4MjAsNyBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnVw
ZGF0ZUNvbnRlbnQoKQogICAgIGlmIChpc0ltYWdlKCkpIHsKICAgICAgICAgLy8gRklYTUU6IFRo
aXMgaXMgYSBzb21ld2hhdCBhcmJpdHJhcnkgd2lkdGguICBHZW5lcmF0ZWQgaW1hZ2VzIGZvciBt
YXJrZXJzIHJlYWxseSB3b24ndCBiZWNvbWUgcGFydGljdWxhcmx5IHVzZWZ1bAogICAgICAgICAv
LyB1bnRpbCB3ZSBzdXBwb3J0IHRoZSBDU1MzIG1hcmtlciBwc2V1ZG9jbGFzcyB0byBhbGxvdyBj
b250cm9sIG92ZXIgdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIG1hcmtlciBib3guCi0gICAg
ICAgIExheW91dFVuaXQgYnVsbGV0V2lkdGggPSBzdHlsZSgpLmZvbnRNZXRyaWNzKCkuYXNjZW50
KCkgLyAyX2x1OworICAgICAgICBMYXlvdXRVbml0IGJ1bGxldFdpZHRoID0gc3R5bGUoKS5mb250
TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoKSAvIDJfbHU7CiAgICAgICAgIExheW91dFNp
emUgZGVmYXVsdEJ1bGxldFNpemUoYnVsbGV0V2lkdGgsIGJ1bGxldFdpZHRoKTsKICAgICAgICAg
TGF5b3V0U2l6ZSBpbWFnZVNpemUgPSBjYWxjdWxhdGVJbWFnZUludHJpbnNpY0RpbWVuc2lvbnMo
bV9pbWFnZS5nZXQoKSwgZGVmYXVsdEJ1bGxldFNpemUsIERvTm90U2NhbGVCeUVmZmVjdGl2ZVpv
b20pOwogICAgICAgICBtX2ltYWdlLT5zZXRDb250YWluZXJDb250ZXh0Rm9yUmVuZGVyZXIoKnRo
aXMsIGltYWdlU2l6ZSwgc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpOwpAQCAtMTg2Nyw3ICsxODY3
LDcgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRo
cygpCiAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDaXJjbGU6CiAgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpEaXNjOgogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6U3F1YXJlOgotICAgICAgICBsb2dp
Y2FsV2lkdGggPSAoZm9udC5mb250TWV0cmljcygpLmFzY2VudCgpICogMiAvIDMgKyAxKSAvIDIg
KyAyOworICAgICAgICBsb2dpY2FsV2lkdGggPSAoZm9udC5mb250TWV0cmljc09mUHJpbWFyeUZv
bnQoKS5hc2NlbnQoKSAqIDIgLyAzICsgMSkgLyAyICsgMjsKICAgICAgICAgYnJlYWs7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgaWYgKCFtX3RleHRXaXRoU3VmZml4LmlzRW1wdHkoKSkKQEAgLTE4
ODUsNyArMTg4NSw3IEBAIHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6Y29tcHV0ZVByZWZlcnJlZExv
Z2ljYWxXaWR0aHMoKQogCiB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnVwZGF0ZU1hcmdpbnMoKQog
ewotICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxlKCkuZm9udE1ldHJp
Y3MoKTsKKyAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MgPSBzdHlsZSgpLmZvbnRN
ZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwogCiAgICAgTGF5b3V0VW5pdCBtYXJnaW5TdGFydDsKICAg
ICBMYXlvdXRVbml0IG1hcmdpbkVuZDsKQEAgLTE5NjEsNyArMTk2MSw3IEBAIEZsb2F0UmVjdCBS
ZW5kZXJMaXN0TWFya2VyOjpyZWxhdGl2ZU1hcmtlclJlY3QoKQogICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6Q2lyY2xlOgogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6U3F1YXJlOiB7CiAgICAgICAg
IC8vIEZJWE1FOiBBcmUgdGhlc2UgcGFydGljdWxhciByb3VuZGluZyBydWxlcyBuZWNlc3Nhcnk/
Ci0gICAgICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxlKCkuZm9udE1l
dHJpY3MoKTsKKyAgICAgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gc3R5bGUo
KS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsKICAgICAgICAgaW50IGFzY2VudCA9IGZvbnRN
ZXRyaWNzLmFzY2VudCgpOwogICAgICAgICBpbnQgYnVsbGV0V2lkdGggPSAoYXNjZW50ICogMiAv
IDMgKyAxKSAvIDI7CiAgICAgICAgIHJlbGF0aXZlUmVjdCA9IEZsb2F0UmVjdCgxLCAzICogKGFz
Y2VudCAtIGFzY2VudCAqIDIgLyAzKSAvIDIsIGJ1bGxldFdpZHRoLCBidWxsZXRXaWR0aCk7CkBA
IC0xOTcxLDcgKzE5NzEsNyBAQCBGbG9hdFJlY3QgUmVuZGVyTGlzdE1hcmtlcjo6cmVsYXRpdmVN
YXJrZXJSZWN0KCkKICAgICAgICAgaWYgKG1fdGV4dFdpdGhTdWZmaXguaXNFbXB0eSgpKQogICAg
ICAgICAgICAgcmV0dXJuIEZsb2F0UmVjdCgpOwogICAgICAgICBhdXRvJiBmb250ID0gc3R5bGUo
KS5mb250Q2FzY2FkZSgpOwotICAgICAgICByZWxhdGl2ZVJlY3QgPSBGbG9hdFJlY3QoMCwgMCwg
Zm9udC53aWR0aCh0ZXh0UnVuKCkpLCBmb250LmZvbnRNZXRyaWNzKCkuaGVpZ2h0KCkpOworICAg
ICAgICByZWxhdGl2ZVJlY3QgPSBGbG9hdFJlY3QoMCwgMCwgZm9udC53aWR0aCh0ZXh0UnVuKCkp
LCBmb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmhlaWdodCgpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UnVieVJ1bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5jcHAK
aW5kZXggNWExMTVmNTcxY2EyNjg2N2NlNmFkMDIzNjI4NmUyNDQ4ZTlmZTViYi4uYTViODEyMWFl
ZTFhMThmNjJkYTljOWQ3ZmY0YjJmODFlN2RhMTEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSdWJ5UnVuLmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgUmVuZGVyUnVi
eVJ1bjo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VI
ZWlnaHQpCiAgICAgICAgIC8vIEJvcG9tb2ZvLiBXZSBuZWVkIHRvIG1vdmUgdGhlIFJlbmRlclJ1
YnlUZXh0IG92ZXIgdG8gdGhlIHJpZ2h0IHNpZGUgYW5kIGNlbnRlciBpdAogICAgICAgICAvLyB2
ZXJ0aWNhbGx5IHJlbGF0aXZlIHRvIHRoZSBiYXNlLgogICAgICAgICBjb25zdCBGb250Q2FzY2Fk
ZSYgZm9udCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKTsKLSAgICAgICAgZmxvYXQgZGlzdGFuY2VC
ZXR3ZWVuQmFzZSA9IHN0ZDo6bWF4KGZvbnQubGV0dGVyU3BhY2luZygpLCAyLjBmICogcnQtPnN0
eWxlKCkuZm9udENhc2NhZGUoKS5mb250TWV0cmljcygpLmhlaWdodCgpKTsKKyAgICAgICAgZmxv
YXQgZGlzdGFuY2VCZXR3ZWVuQmFzZSA9IHN0ZDo6bWF4KGZvbnQubGV0dGVyU3BhY2luZygpLCAy
LjBmICogcnQtPnN0eWxlKCkuZm9udENhc2NhZGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQo
KS5oZWlnaHQoKSk7CiAgICAgICAgIHNldFdpZHRoKHdpZHRoKCkgKyBkaXN0YW5jZUJldHdlZW5C
YXNlIC0gZm9udC5sZXR0ZXJTcGFjaW5nKCkpOwogICAgICAgICBpZiAoUmVuZGVyUnVieUJhc2Uq
IHJiID0gcnVieUJhc2UoKSkgewogICAgICAgICAgICAgTGF5b3V0VW5pdCBmaXJzdExpbmVUb3A7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcAppbmRleCBjYTVi
NzQwZDkwNDRiZDY1ZTM2NmI1N2Q3NmMzNDI4YzNmOWVlM2Y2Li4zNGFkMmI4ZmQ0NGZhZTY5OGU2
NzkzYWRkYmI4YThiNzk0YzgxNGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvVGV4dEJveFBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0
Qm94UGFpbnRlci5jcHAKQEAgLTMyNCw3ICszMjQsNyBAQCB2b2lkIFRleHRCb3hQYWludGVyOjpw
YWludEZvcmVncm91bmQoY29uc3QgU3R5bGVkTWFya2VkVGV4dCYgbWFya2VkVGV4dCkKICAgICBm
bG9hdCBlbXBoYXNpc01hcmtPZmZzZXQgPSAwOwogICAgIGNvbnN0IEF0b21TdHJpbmcmIGVtcGhh
c2lzTWFyayA9IG1fZW1waGFzaXNNYXJrRXhpc3RzQW5kSXNBYm92ZSA/IG1fc3R5bGUudGV4dEVt
cGhhc2lzTWFya1N0cmluZygpIDogbnVsbEF0b20oKTsKICAgICBpZiAoIWVtcGhhc2lzTWFyay5p
c0VtcHR5KCkpCi0gICAgICAgIGVtcGhhc2lzTWFya09mZnNldCA9ICptX2VtcGhhc2lzTWFya0V4
aXN0c0FuZElzQWJvdmUgPyAtZm9udC5mb250TWV0cmljcygpLmFzY2VudCgpIC0gZm9udC5lbXBo
YXNpc01hcmtEZXNjZW50KGVtcGhhc2lzTWFyaykgOiBmb250LmZvbnRNZXRyaWNzKCkuZGVzY2Vu
dCgpICsgZm9udC5lbXBoYXNpc01hcmtBc2NlbnQoZW1waGFzaXNNYXJrKTsKKyAgICAgICAgZW1w
aGFzaXNNYXJrT2Zmc2V0ID0gKm1fZW1waGFzaXNNYXJrRXhpc3RzQW5kSXNBYm92ZSA/IC1mb250
LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudCgpIC0gZm9udC5lbXBoYXNpc01hcmtE
ZXNjZW50KGVtcGhhc2lzTWFyaykgOiBmb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmRl
c2NlbnQoKSArIGZvbnQuZW1waGFzaXNNYXJrQXNjZW50KGVtcGhhc2lzTWFyayk7CiAKICAgICBU
ZXh0UGFpbnRlciB0ZXh0UGFpbnRlciB7IGNvbnRleHQgfTsKICAgICB0ZXh0UGFpbnRlci5zZXRG
b250KGZvbnQpOwpAQCAtNDgwLDcgKzQ4MCw3IEBAIHZvaWQgVGV4dEJveFBhaW50ZXI6OnBhaW50
Q29tcG9zaXRpb25VbmRlcmxpbmUoY29uc3QgQ29tcG9zaXRpb25VbmRlcmxpbmUmIHVuZGVyCiAg
ICAgLy8gQWxsIG90aGVyIG1hcmtlZCB0ZXh0IHVuZGVybGluZXMgYXJlIDFweCB0aGljay4KICAg
ICAvLyBJZiB0aGVyZSdzIG5vdCBlbm91Z2ggc3BhY2UgdGhlIHVuZGVybGluZSB3aWxsIHRvdWNo
IG9yIG92ZXJsYXAgY2hhcmFjdGVycy4KICAgICBpbnQgbGluZVRoaWNrbmVzcyA9IDE7Ci0gICAg
aW50IGJhc2VsaW5lID0gbV9zdHlsZS5mb250TWV0cmljcygpLmFzY2VudCgpOworICAgIGludCBi
YXNlbGluZSA9IG1fc3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50KCk7CiAg
ICAgaWYgKHVuZGVybGluZS50aGljayAmJiB0ZXh0Qm94KCkubG9naWNhbEhlaWdodCgpIC0gYmFz
ZWxpbmUgPj0gMikKICAgICAgICAgbGluZVRoaWNrbmVzcyA9IDI7CiAKQEAgLTU5MCw3ICs1OTAs
NyBAQCBGbG9hdFJlY3QgVGV4dEJveFBhaW50ZXI6OmNvbXB1dGVQYWludFJlY3QoY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogRmxvYXRSZWN0IFRleHRCb3hQYWludGVyOjpjYWxjdWxh
dGVEb2N1bWVudE1hcmtlckJvdW5kcyhjb25zdCBJbmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJh
dG9yJiB0ZXh0Qm94LCBjb25zdCBNYXJrZWRUZXh0JiBtYXJrZWRUZXh0KQogewogICAgIGF1dG8m
IGZvbnQgPSB0ZXh0Qm94LT5mb250Q2FzY2FkZSgpOwotICAgIGF1dG8gYXNjZW50ID0gZm9udC5m
b250TWV0cmljcygpLmFzY2VudCgpOworICAgIGF1dG8gYXNjZW50ID0gZm9udC5mb250TWV0cmlj
c09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoKTsKICAgICBhdXRvIGZvbnRTaXplID0gc3RkOjptaW4o
c3RkOjptYXgoZm9udC5zaXplKCksIDEwLjBmKSwgNDAuMGYpOwogICAgIGF1dG8geSA9IGFzY2Vu
dCArIDAuMTEwMzUgKiBmb250U2l6ZTsKICAgICBhdXRvIGhlaWdodCA9IDAuMTMyNDcgKiBmb250
U2l6ZTsKQEAgLTYyMSw3ICs2MjEsNyBAQCBjb25zdCBGb250Q2FzY2FkZSYgVGV4dEJveFBhaW50
ZXI6OmZvbnRDYXNjYWRlKCkgY29uc3QKIAogRmxvYXRQb2ludCBUZXh0Qm94UGFpbnRlcjo6dGV4
dE9yaWdpbkZyb21QYWludFJlY3QoY29uc3QgRmxvYXRSZWN0JiBwYWludFJlY3QpIGNvbnN0CiB7
Ci0gICAgRmxvYXRQb2ludCB0ZXh0T3JpZ2luIHsgcGFpbnRSZWN0LngoKSwgcGFpbnRSZWN0Lnko
KSArIGZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSB9OworICAgIEZsb2F0UG9p
bnQgdGV4dE9yaWdpbiB7IHBhaW50UmVjdC54KCksIHBhaW50UmVjdC55KCkgKyBmb250Q2FzY2Fk
ZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudCgpIH07CiAgICAgaWYgKHRleHRC
b3goKS5pc0NvbWJpbmVkVGV4dCgpKSB7CiAgICAgICAgIGlmIChhdXRvIG5ld09yaWdpbiA9IGRv
d25jYXN0PFJlbmRlckNvbWJpbmVUZXh0PihtX3JlbmRlcmVyKS5jb21wdXRlVGV4dE9yaWdpbihw
YWludFJlY3QpKQogICAgICAgICAgICAgdGV4dE9yaWdpbiA9IG5ld09yaWdpbi52YWx1ZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNw
cAppbmRleCA0ZmY0ODE2ZmM0M2VjZTc4ZWU4OTc3MWUxNmQ4NTVmYTA1ZmZkMWM5Li4xNjMxOTgx
YjZjYTlmZjNkODE1ZGRmYzFhMzBlNjg5YjIxZjBmNjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcApAQCAtMjA0LDcgKzIwNCw3
IEBAIFRleHREZWNvcmF0aW9uUGFpbnRlcjo6VGV4dERlY29yYXRpb25QYWludGVyKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgT3B0aW9uU2V0CiAvLyBQYWludCB0ZXh0LXNoYWRvdywgdW5kZXJs
aW5lLCBvdmVybGluZQogdm9pZCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50QmFja2dyb3Vu
ZERlY29yYXRpb25zKGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IEZsb2F0UG9pbnQmIHRl
eHRPcmlnaW4sIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbikKIHsKLSAgICBjb25zdCBhdXRv
JiBmb250TWV0cmljcyA9IG1fbGluZVN0eWxlLmZvbnRNZXRyaWNzKCk7CisgICAgY29uc3QgYXV0
byYgZm9udE1ldHJpY3MgPSBtX2xpbmVTdHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsK
ICAgICBmbG9hdCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcyA9IG1fbGluZVN0eWxlLnRleHREZWNv
cmF0aW9uVGhpY2tuZXNzKCkucmVzb2x2ZShtX2xpbmVTdHlsZS5jb21wdXRlZEZvbnRTaXplKCks
IGZvbnRNZXRyaWNzKTsKICAgICBGbG9hdFBvaW50IGxvY2FsT3JpZ2luID0gYm94T3JpZ2luOwog
CkBAIC0yNzksNyArMjc5LDcgQEAgdm9pZCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50QmFj
a2dyb3VuZERlY29yYXRpb25zKGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGMKICAgICAgICAgaWYg
KG1fZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpKSB7
CiAgICAgICAgICAgICBmbG9hdCB0ZXh0RGVjb3JhdGlvbkJhc2VGb250U2l6ZSA9IDE2OwogICAg
ICAgICAgICAgYXV0byBkZWZhdWx0R2FwID0gbV9saW5lU3R5bGUuY29tcHV0ZWRGb250U2l6ZSgp
IC8gdGV4dERlY29yYXRpb25CYXNlRm9udFNpemU7Ci0gICAgICAgICAgICBmbG9hdCBvZmZzZXQg
PSBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KG1fbGluZVN0eWxlLnRleHRVbmRlcmxpbmVQb3NpdGlv
bigpLCBtX2xpbmVTdHlsZS50ZXh0VW5kZXJsaW5lT2Zmc2V0KCksIG1fbGluZVN0eWxlLmZvbnRN
ZXRyaWNzKCksIG1fdGV4dEJveCwgZGVmYXVsdEdhcCk7CisgICAgICAgICAgICBmbG9hdCBvZmZz
ZXQgPSBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KG1fbGluZVN0eWxlLnRleHRVbmRlcmxpbmVQb3Np
dGlvbigpLCBtX2xpbmVTdHlsZS50ZXh0VW5kZXJsaW5lT2Zmc2V0KCksIG1fbGluZVN0eWxlLmZv
bnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLCBtX3RleHRCb3gsIGRlZmF1bHRHYXApOwogICAgICAg
ICAgICAgZmxvYXQgd2F2eU9mZnNldCA9IG1fc3R5bGVzLnVuZGVybGluZVN0eWxlID09IFRleHRE
ZWNvcmF0aW9uU3R5bGU6OldhdnkgPyBtX3dhdnlPZmZzZXQgOiAwOwogICAgICAgICAgICAgRmxv
YXRSZWN0IHJlY3QobG9jYWxPcmlnaW4sIEZsb2F0U2l6ZShtX3dpZHRoLCB0ZXh0RGVjb3JhdGlv
blRoaWNrbmVzcykpOwogICAgICAgICAgICAgcmVjdC5tb3ZlKDAsIG9mZnNldCArIHdhdnlPZmZz
ZXQpOwpAQCAtMzEwLDEzICszMTAsMTMgQEAgdm9pZCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBh
aW50Rm9yZWdyb3VuZERlY29yYXRpb25zKGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWcKICAgICBp
ZiAoIW1fZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3Vn
aCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZsb2F0IHRleHREZWNvcmF0aW9uVGhpY2tuZXNz
ID0gbV9saW5lU3R5bGUudGV4dERlY29yYXRpb25UaGlja25lc3MoKS5yZXNvbHZlKG1fbGluZVN0
eWxlLmNvbXB1dGVkRm9udFNpemUoKSwgbV9saW5lU3R5bGUuZm9udE1ldHJpY3MoKSk7CisgICAg
ZmxvYXQgdGV4dERlY29yYXRpb25UaGlja25lc3MgPSBtX2xpbmVTdHlsZS50ZXh0RGVjb3JhdGlv
blRoaWNrbmVzcygpLnJlc29sdmUobV9saW5lU3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpLCBtX2xp
bmVTdHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKSk7CiAgICAgcGFpbnRMaW5lVGhyb3Vn
aChtX3N0eWxlcy5saW5ldGhyb3VnaENvbG9yLCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcywgYm94
T3JpZ2luKTsKIH0KIAogdm9pZCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50TGluZVRocm91
Z2goY29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCB0aGlja25lc3MsIGNvbnN0IEZsb2F0UG9pbnQm
IGxvY2FsT3JpZ2luKQogewotICAgIGNvbnN0IGF1dG8mIGZvbnRNZXRyaWNzID0gbV9saW5lU3R5
bGUuZm9udE1ldHJpY3MoKTsKKyAgICBjb25zdCBhdXRvJiBmb250TWV0cmljcyA9IG1fbGluZVN0
eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwogICAgIEZsb2F0UmVjdCByZWN0KGxvY2Fs
T3JpZ2luLCBGbG9hdFNpemUobV93aWR0aCwgdGhpY2tuZXNzKSk7CiAgICAgZmxvYXQgYXV0b1Rl
eHREZWNvcmF0aW9uVGhpY2tuZXNzID0gVGV4dERlY29yYXRpb25UaGlja25lc3M6OmNyZWF0ZVdp
dGhBdXRvKCkucmVzb2x2ZShtX2xpbmVTdHlsZS5jb21wdXRlZEZvbnRTaXplKCksIGZvbnRNZXRy
aWNzKTsKICAgICBhdXRvIGNlbnRlciA9IDIgKiBmb250TWV0cmljcy5mbG9hdEFzY2VudCgpIC8g
MyArIGF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyAvIDI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1RleHRQYWludGVyLmNwcAppbmRleCBhNTllZWQ0NGY0YWEzNDQ2MzcyOGZiNmUyNjExNWQ4
OTVlNTQ0NzljLi5mZmE3YTdhMTRjN2FiYTkwOGJmZmNiNmZkNTAxZTEyN2U5MDM4YWMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAKQEAgLTE5OCw3ICsxOTgsNyBA
QCB2b2lkIFRleHRQYWludGVyOjpwYWludFRleHRBbmRFbXBoYXNpc01hcmtzSWZOZWVkZWQoY29u
c3QgVGV4dFJ1biYgdGV4dFJ1biwgY29ucwogICAgIHVwZGF0ZUdyYXBoaWNzQ29udGV4dChtX2Nv
bnRleHQsIHBhaW50U3R5bGUsIFVzZUVtcGhhc2lzTWFya0NvbG9yKTsKICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8VGV4dFJ1bj4gb2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXJUZXh0UnVuKFN0
cmluZ1ZpZXcoJm9iamVjdFJlcGxhY2VtZW50Q2hhcmFjdGVyLCAxKSk7CiAgICAgY29uc3QgVGV4
dFJ1biYgZW1waGFzaXNNYXJrVGV4dFJ1biA9IG1fY29tYmluZWRUZXh0ID8gb2JqZWN0UmVwbGFj
ZW1lbnRDaGFyYWN0ZXJUZXh0UnVuLmdldCgpIDogdGV4dFJ1bjsKLSAgICBGbG9hdFBvaW50IGVt
cGhhc2lzTWFya1RleHRPcmlnaW4gPSBtX2NvbWJpbmVkVGV4dCA/IEZsb2F0UG9pbnQoYm94T3Jp
Z2luLngoKSArIGJveFJlY3Qud2lkdGgoKSAvIDIsIGJveE9yaWdpbi55KCkgKyBtX2ZvbnQtPmZv
bnRNZXRyaWNzKCkuYXNjZW50KCkpIDogdGV4dE9yaWdpbjsKKyAgICBGbG9hdFBvaW50IGVtcGhh
c2lzTWFya1RleHRPcmlnaW4gPSBtX2NvbWJpbmVkVGV4dCA/IEZsb2F0UG9pbnQoYm94T3JpZ2lu
LngoKSArIGJveFJlY3Qud2lkdGgoKSAvIDIsIGJveE9yaWdpbi55KCkgKyBtX2ZvbnQtPmZvbnRN
ZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudCgpKSA6IHRleHRPcmlnaW47CiAgICAgaWYgKG1f
Y29tYmluZWRUZXh0KQogICAgICAgICBtX2NvbnRleHQuY29uY2F0Q1RNKHJvdGF0aW9uKGJveFJl
Y3QsIENsb2Nrd2lzZSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bGluZS9MaW5lSW5saW5lSGVhZGVycy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUv
TGluZUlubGluZUhlYWRlcnMuaAppbmRleCBjMjRkNWNhYThlZTg5NGYzZWI1OTJjNzczNjczYzRh
YTEyMDVhY2YyLi41YTk2YzU4OWY0ZWQ5M2MxODA1YTg0OGFmMWQxYjM4Nzk3ODI5MmIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lSW5saW5lSGVhZGVycy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVJbmxpbmVIZWFkZXJzLmgK
QEAgLTU2LDcgKzU2LDcgQEAgaW5saW5lIGJvb2wgcmVxdWlyZXNMaW5lQm94Rm9yQ29udGVudChj
b25zdCBSZW5kZXJJbmxpbmUmIGZsb3csIGNvbnN0IExpbmVJbmZvJgogICAgICAgICBjb25zdCBS
ZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUgPSBsaW5lU3R5bGUoKnBhcmVudCwgbGluZUluZm8pOwog
ICAgICAgICBpZiAoZmxvd1N0eWxlLmxpbmVIZWlnaHQoKSAhPSBwYXJlbnRTdHlsZS5saW5lSGVp
Z2h0KCkKICAgICAgICAgICAgIHx8IGZsb3dTdHlsZS52ZXJ0aWNhbEFsaWduKCkgIT0gcGFyZW50
U3R5bGUudmVydGljYWxBbGlnbigpCi0gICAgICAgICAgICB8fCAhcGFyZW50U3R5bGUuZm9udENh
c2NhZGUoKS5mb250TWV0cmljcygpLmhhc0lkZW50aWNhbEFzY2VudERlc2NlbnRBbmRMaW5lR2Fw
KGZsb3dTdHlsZS5mb250Q2FzY2FkZSgpLmZvbnRNZXRyaWNzKCkpKQorICAgICAgICAgICAgfHwg
IXBhcmVudFN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuaGFz
SWRlbnRpY2FsQXNjZW50RGVzY2VudEFuZExpbmVHYXAoZmxvd1N0eWxlLmZvbnRDYXNjYWRlKCku
Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcAppbmRleCBlZDhmMjBmOTg1YmFhMjU0NzQ4NDFi
MjY4YTQ1NDk3OTY0ZWYyZWJlLi5kMDViYTQ3Njk0MzQ4YzFmMzBlYjFjYTAyNmVjZGU0NTlhZWZl
YjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTEJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTEJsb2NrLmNwcApAQCAtNzksNyArNzksNyBAQCBzdGF0aWMgTGF5b3V0VW5pdCBheGlz
SGVpZ2h0KGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIAogICAgIC8vIE90aGVyd2lzZSwgdGhl
IGlkZWEgaXMgdG8gdHJ5IGFuZCB1c2UgdGhlIG1pZGRsZSBvZiBvcGVyYXRvcnMgYXMgdGhlIG1h
dGggYXhpcyB3aGljaCB3ZSB0aHVzIGFwcHJveGltYXRlIGJ5ICJoYWxmIG9mIHRoZSB4LWhlaWdo
dCIuCiAgICAgLy8gTm90ZSB0aGF0IEdlY2tvIGhhcyBhIHNsb3dlciBidXQgbW9yZSBhY2N1cmF0
ZSB2ZXJzaW9uIHRoYXQgbWVhc3VyZXMgaGFsZiBvZiB0aGUgaGVpZ2h0IG9mIFUrMjIxMiBNSU5V
UyBTSUdOLgotICAgIHJldHVybiBMYXlvdXRVbml0KHN0eWxlLmZvbnRNZXRyaWNzKCkueEhlaWdo
dCgpIC8gMik7CisgICAgcmV0dXJuIExheW91dFVuaXQoc3R5bGUuZm9udE1ldHJpY3NPZlByaW1h
cnlGb250KCkueEhlaWdodCgpIC8gMik7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyTWF0aE1MQmxv
Y2s6Om1hdGhBeGlzSGVpZ2h0KCkgY29uc3QKQEAgLTE2MSw3ICsxNjEsNyBAQCBMYXlvdXRVbml0
IHRvVXNlclVuaXRzKGNvbnN0IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCYgbGVuZ3RoLCBjb25zdCBS
ZW5kZXJTdHlsZSYgcwogICAgIGNhc2UgTWF0aE1MRWxlbWVudDo6TGVuZ3RoVHlwZTo6RW06CiAg
ICAgICAgIHJldHVybiBMYXlvdXRVbml0KGxlbmd0aC52YWx1ZSAqIHN0eWxlLmZvbnRDYXNjYWRl
KCkuc2l6ZSgpKTsKICAgICBjYXNlIE1hdGhNTEVsZW1lbnQ6Okxlbmd0aFR5cGU6OkV4OgotICAg
ICAgICByZXR1cm4gTGF5b3V0VW5pdChsZW5ndGgudmFsdWUgKiBzdHlsZS5mb250TWV0cmljcygp
LnhIZWlnaHQoKSk7CisgICAgICAgIHJldHVybiBMYXlvdXRVbml0KGxlbmd0aC52YWx1ZSAqIHN0
eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLnhIZWlnaHQoKSk7CiAgICAgY2FzZSBNYXRo
TUxFbGVtZW50OjpMZW5ndGhUeXBlOjpNYXRoVW5pdDoKICAgICAgICAgcmV0dXJuIExheW91dFVu
aXQobGVuZ3RoLnZhbHVlICogc3R5bGUuZm9udENhc2NhZGUoKS5zaXplKCkgLyAxOCk7CiAgICAg
Y2FzZSBNYXRoTUxFbGVtZW50OjpMZW5ndGhUeXBlOjpQZXJjZW50YWdlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAKaW5kZXgg
MmEzOGE2OGMwM2ViNzg0MGJkMDI4YmY5MGZlYmUyNDA3N2E0YzgwYi4uYzZjYTEyZTUzZTFlZGUy
MjAzYjM2Zjk0MjZmYTc5ZDQ1MGVlN2U5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAg
UmVuZGVyTWF0aE1MUm9vdDo6VmVydGljYWxQYXJhbWV0ZXJzIFJlbmRlck1hdGhNTFJvb3Q6OnZl
cnRpY2FsUGFyYW1ldGVycygpCiAgICAgICAgIC8vIFJhZGljYWxEZWdyZWVCb3R0b21SYWlzZVBl
cmNlbnQ6IFN1Z2dlc3RlZCB2YWx1ZSBpcyA2MCUuCiAgICAgICAgIHBhcmFtZXRlcnMucnVsZVRo
aWNrbmVzcyA9IHJ1bGVUaGlja25lc3NGYWxsYmFjaygpOwogICAgICAgICBpZiAoc3R5bGUoKS5t
YXRoU3R5bGUoKSA9PSBNYXRoU3R5bGU6Ok5vcm1hbCkKLSAgICAgICAgICAgIHBhcmFtZXRlcnMu
dmVydGljYWxHYXAgPSBwYXJhbWV0ZXJzLnJ1bGVUaGlja25lc3MgKyBzdHlsZSgpLmZvbnRNZXRy
aWNzKCkueEhlaWdodCgpIC8gNDsKKyAgICAgICAgICAgIHBhcmFtZXRlcnMudmVydGljYWxHYXAg
PSBwYXJhbWV0ZXJzLnJ1bGVUaGlja25lc3MgKyBzdHlsZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5
Rm9udCgpLnhIZWlnaHQoKSAvIDQ7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBhcmFtZXRl
cnMudmVydGljYWxHYXAgPSA1ICogcGFyYW1ldGVycy5ydWxlVGhpY2tuZXNzIC8gNDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3Jp
cHRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2Ny
aXB0cy5jcHAKaW5kZXggNjA5NDM4OGEzMWIyYzFkMWE5MjU4OTIyOTcyZTBmMTFkOGM5YThhYy4u
NDI4Mjk3MzIxZmNkMjRkMTBhMDBkODE5YmQzZDA2Yjk5NGJiNjY1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3Bw
CkBAIC0yNDIsMTQgKzI0MiwxNCBAQCBhdXRvIFJlbmRlck1hdGhNTFNjcmlwdHM6OnZlcnRpY2Fs
UGFyYW1ldGVycygpIGNvbnN0IC0+IFZlcnRpY2FsUGFyYW1ldGVycwogICAgICAgICBwYXJhbWV0
ZXJzLnN1cGVyc2NyaXB0Qm90dG9tTWF4V2l0aFN1YnNjcmlwdCA9IG1hdGhEYXRhLT5nZXRNYXRo
Q29uc3RhbnQocHJpbWFyeUZvbnQsIE9wZW5UeXBlTWF0aERhdGE6OlN1cGVyc2NyaXB0Qm90dG9t
TWF4V2l0aFN1YnNjcmlwdCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gRGVmYXVsdCBoZXVy
aXN0aWMgdmFsdWVzIHdoZW4geW91IGRvIG5vdCBoYXZlIGEgZm9udC4KLSAgICAgICAgcGFyYW1l
dGVycy5zdWJzY3JpcHRTaGlmdERvd24gPSBzdHlsZSgpLmZvbnRNZXRyaWNzKCkueEhlaWdodCgp
IC8gMzsKLSAgICAgICAgcGFyYW1ldGVycy5zdXBlcnNjcmlwdFNoaWZ0VXAgPSBzdHlsZSgpLmZv
bnRNZXRyaWNzKCkueEhlaWdodCgpOwotICAgICAgICBwYXJhbWV0ZXJzLnN1YnNjcmlwdEJhc2Vs
aW5lRHJvcE1pbiA9IHN0eWxlKCkuZm9udE1ldHJpY3MoKS54SGVpZ2h0KCkgLyAyOwotICAgICAg
ICBwYXJhbWV0ZXJzLnN1cGVyU2NyaXB0QmFzZWxpbmVEcm9wTWF4ID0gc3R5bGUoKS5mb250TWV0
cmljcygpLnhIZWlnaHQoKSAvIDI7CisgICAgICAgIHBhcmFtZXRlcnMuc3Vic2NyaXB0U2hpZnRE
b3duID0gc3R5bGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS54SGVpZ2h0KCkgLyAzOwor
ICAgICAgICBwYXJhbWV0ZXJzLnN1cGVyc2NyaXB0U2hpZnRVcCA9IHN0eWxlKCkuZm9udE1ldHJp
Y3NPZlByaW1hcnlGb250KCkueEhlaWdodCgpOworICAgICAgICBwYXJhbWV0ZXJzLnN1YnNjcmlw
dEJhc2VsaW5lRHJvcE1pbiA9IHN0eWxlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkueEhl
aWdodCgpIC8gMjsKKyAgICAgICAgcGFyYW1ldGVycy5zdXBlclNjcmlwdEJhc2VsaW5lRHJvcE1h
eCA9IHN0eWxlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkueEhlaWdodCgpIC8gMjsKICAg
ICAgICAgcGFyYW1ldGVycy5zdWJTdXBlcnNjcmlwdEdhcE1pbiA9IHN0eWxlKCkuZm9udENhc2Nh
ZGUoKS5zaXplKCkgLyA1OwotICAgICAgICBwYXJhbWV0ZXJzLnN1cGVyc2NyaXB0Qm90dG9tTWlu
ID0gc3R5bGUoKS5mb250TWV0cmljcygpLnhIZWlnaHQoKSAvIDQ7Ci0gICAgICAgIHBhcmFtZXRl
cnMuc3Vic2NyaXB0VG9wTWF4ID0gNCAqIHN0eWxlKCkuZm9udE1ldHJpY3MoKS54SGVpZ2h0KCkg
LyA1OwotICAgICAgICBwYXJhbWV0ZXJzLnN1cGVyc2NyaXB0Qm90dG9tTWF4V2l0aFN1YnNjcmlw
dCA9IDQgKiBzdHlsZSgpLmZvbnRNZXRyaWNzKCkueEhlaWdodCgpIC8gNTsKKyAgICAgICAgcGFy
YW1ldGVycy5zdXBlcnNjcmlwdEJvdHRvbU1pbiA9IHN0eWxlKCkuZm9udE1ldHJpY3NPZlByaW1h
cnlGb250KCkueEhlaWdodCgpIC8gNDsKKyAgICAgICAgcGFyYW1ldGVycy5zdWJzY3JpcHRUb3BN
YXggPSA0ICogc3R5bGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS54SGVpZ2h0KCkgLyA1
OworICAgICAgICBwYXJhbWV0ZXJzLnN1cGVyc2NyaXB0Qm90dG9tTWF4V2l0aFN1YnNjcmlwdCA9
IDQgKiBzdHlsZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLnhIZWlnaHQoKSAvIDU7CiAg
ICAgfQogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwCmluZGV4IGM3
MDMyYzU1Yjc5MDU2OWVjZjdjYWQzMTE2NDY0MGY3N2Y0NDJjOWQuLjk4YTJiOTIxN2QyNDZkNmVk
YmU4OTU0YzhhZjRjMWI5ZjdlOWE0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHAKQEAgLTI0OCw3ICsy
NDgsNyBAQCBSZW5kZXJNYXRoTUxVbmRlck92ZXI6OlZlcnRpY2FsUGFyYW1ldGVycyBSZW5kZXJN
YXRoTUxVbmRlck92ZXI6OnZlcnRpY2FsUGFyYW1ldAogICAgICAgICBwYXJhbWV0ZXJzLm92ZXJH
YXBNaW4gPSAzICogZGVmYXVsdExpbmVUaGlja25lc3M7CiAgICAgICAgIHBhcmFtZXRlcnMudW5k
ZXJFeHRyYURlc2NlbmRlciA9IGRlZmF1bHRMaW5lVGhpY2tuZXNzOwogICAgICAgICBwYXJhbWV0
ZXJzLm92ZXJFeHRyYUFzY2VuZGVyID0gZGVmYXVsdExpbmVUaGlja25lc3M7Ci0gICAgICAgIHBh
cmFtZXRlcnMuYWNjZW50QmFzZUhlaWdodCA9IHN0eWxlKCkuZm9udE1ldHJpY3MoKS54SGVpZ2h0
KCk7CisgICAgICAgIHBhcmFtZXRlcnMuYWNjZW50QmFzZUhlaWdodCA9IHN0eWxlKCkuZm9udE1l
dHJpY3NPZlByaW1hcnlGb250KCkueEhlaWdodCgpOwogICAgICAgICBwYXJhbWV0ZXJzLnVzZVVu
ZGVyT3ZlckJhckZhbGxCYWNrID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAK
aW5kZXggNTZmMDMzZTQ1N2NiNzgyNDE0M2Q1ZTE4MjQ5OGUwZGYwODRlYjk3Mi4uZTY4MDQ3NWQ3
Nzg2YmU1ZmM5NDMzMzEwZDQzNTllMjlmMzIyMmY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC0xODE1LDkgKzE4MTUsOSBAQCBjb25z
dCBGb250Q2FzY2FkZSYgUmVuZGVyU3R5bGU6OmZvbnRDYXNjYWRlKCkgY29uc3QKICAgICByZXR1
cm4gbV9pbmhlcml0ZWREYXRhLT5mb250Q2FzY2FkZTsKIH0KIAotY29uc3QgRm9udE1ldHJpY3Mm
IFJlbmRlclN0eWxlOjpmb250TWV0cmljcygpIGNvbnN0Citjb25zdCBGb250TWV0cmljcyYgUmVu
ZGVyU3R5bGU6OmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1faW5oZXJpdGVkRGF0YS0+Zm9udENhc2NhZGUuZm9udE1ldHJpY3MoKTsKKyAgICByZXR1cm4g
bV9pbmhlcml0ZWREYXRhLT5mb250Q2FzY2FkZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsK
IH0KIAogY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYgUmVuZGVyU3R5bGU6OmZvbnREZXNj
cmlwdGlvbigpIGNvbnN0CkBAIC0xODk2LDcgKzE4OTYsNyBAQCBpbnQgUmVuZGVyU3R5bGU6OmNv
bXB1dGVMaW5lSGVpZ2h0KGNvbnN0IExlbmd0aCYgbGluZUhlaWdodExlbmd0aCkgY29uc3QKIHsK
ICAgICAvLyBOZWdhdGl2ZSB2YWx1ZSBtZWFucyB0aGUgbGluZSBoZWlnaHQgaXMgbm90IHNldC4g
VXNlIHRoZSBmb250J3MgYnVpbHQtaW4gc3BhY2luZy4KICAgICBpZiAobGluZUhlaWdodExlbmd0
aC5pc05lZ2F0aXZlKCkpCi0gICAgICAgIHJldHVybiBmb250TWV0cmljcygpLmxpbmVTcGFjaW5n
KCk7CisgICAgICAgIHJldHVybiBmb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5saW5lU3BhY2lu
ZygpOwogCiAgICAgaWYgKGxpbmVIZWlnaHRMZW5ndGguaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkp
CiAgICAgICAgIHJldHVybiBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobGluZUhlaWdodExlbmd0aCwg
Y29tcHV0ZWRGb250UGl4ZWxTaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaAppbmRleCA0ODg3NTE3OTc2MzE3MDM1M2ZhYTE5ZGRhZTQ3NzAwYjhj
NTAwNTIwLi4xOWFiYzY4YzBkYmMyY2UzOTJjMTNjMDAyOThiOTI1ZTUwOGFjODVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtMzU2LDcgKzM1
Niw3IEBAIHB1YmxpYzoKICAgICBUYWJsZUxheW91dFR5cGUgdGFibGVMYXlvdXQoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxUYWJsZUxheW91dFR5cGU+KG1fbm9uSW5oZXJpdGVkRmxhZ3Mu
dGFibGVMYXlvdXQpOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBGb250Q2FzY2FkZSYg
Zm9udENhc2NhZGUoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBGb250TWV0cmlj
cyYgZm9udE1ldHJpY3MoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBGb250TWV0
cmljcyYgZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBP
UlQgY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uKCkgY29uc3Q7
CiAgICAgZmxvYXQgc3BlY2lmaWVkRm9udFNpemUoKSBjb25zdDsKICAgICBmbG9hdCBjb21wdXRl
ZEZvbnRTaXplKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcAppbmRleCA5YTM5YmQxYjRlM2ZjZWQ3YzE5MzMxYWM3
ODEyNDk0YWYyMzE5NzI1Li45NTI2YWNlYzhjMWU0ZTAxYjU5YWY5MzAwYmM4ZmRiN2ZlMTBmYWM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGlu
ZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5s
aW5lVGV4dC5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyU1ZH
SW5saW5lVGV4dDo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsCiAg
ICAgaWYgKCFmaXJzdFRleHRCb3goKSB8fCB0ZXh0KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uKDAsIEFmZmluaXR5OjpEb3duc3RyZWFtKTsKIAotICAg
IGZsb2F0IGJhc2VsaW5lID0gbV9zY2FsZWRGb250LmZvbnRNZXRyaWNzKCkuZmxvYXRBc2NlbnQo
KTsKKyAgICBmbG9hdCBiYXNlbGluZSA9IG1fc2NhbGVkRm9udC5mb250TWV0cmljc09mUHJpbWFy
eUZvbnQoKS5mbG9hdEFzY2VudCgpOwogCiAgICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9j
ayA9IHRoaXMtPmNvbnRhaW5pbmdCbG9jaygpOwogICAgIEFTU0VSVChjb250YWluaW5nQmxvY2sp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0
Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5j
cHAKaW5kZXggNGQzMmE4MThiZjg3YWZhZjdmOTMzZjA1MzkyODYxNjhiYmVkYWUzZi4uYzgwNDIz
NjNhZTIzMjg0ODVjNmEzZGMwOTZlNjM4Yzg3M2U1OTcwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCkBAIC0xMDQsNyArMTA0LDcg
QEAgRmxvYXRSZWN0IFNWR0lubGluZVRleHRCb3g6OnNlbGVjdGlvblJlY3RGb3JUZXh0RnJhZ21l
bnQoY29uc3QgU1ZHVGV4dEZyYWdtZW50JgogICAgIEFTU0VSVChzY2FsaW5nRmFjdG9yKTsKIAog
ICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBzY2FsZWRGb250ID0gcmVuZGVyZXIoKS5zY2FsZWRGb250
KCk7Ci0gICAgY29uc3QgRm9udE1ldHJpY3MmIHNjYWxlZEZvbnRNZXRyaWNzID0gc2NhbGVkRm9u
dC5mb250TWV0cmljcygpOworICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBzY2FsZWRGb250TWV0cmlj
cyA9IHNjYWxlZEZvbnQuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCk7CiAgICAgRmxvYXRQb2lu
dCB0ZXh0T3JpZ2luKGZyYWdtZW50LngsIGZyYWdtZW50LnkpOwogICAgIGlmIChzY2FsaW5nRmFj
dG9yICE9IDEpCiAgICAgICAgIHRleHRPcmlnaW4uc2NhbGUoc2NhbGluZ0ZhY3Rvcik7CkBAIC01
MTEsNyArNTExLDcgQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb25XaXRo
U3R5bGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBPcHRpb24KIAogICAgIEZsb2F0UG9pbnQg
ZGVjb3JhdGlvbk9yaWdpbihmcmFnbWVudC54LCBmcmFnbWVudC55KTsKICAgICBmbG9hdCB3aWR0
aCA9IGZyYWdtZW50LndpZHRoOwotICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBzY2FsZWRGb250TWV0
cmljcyA9IHNjYWxlZEZvbnQuZm9udE1ldHJpY3MoKTsKKyAgICBjb25zdCBGb250TWV0cmljcyYg
c2NhbGVkRm9udE1ldHJpY3MgPSBzY2FsZWRGb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgp
OwogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwog
ICAgIGlmIChzY2FsaW5nRmFjdG9yICE9IDEpIHsKQEAgLTU0Niw3ICs1NDYsNyBAQCB2b2lkIFNW
R0lubGluZVRleHRCb3g6OnBhaW50VGV4dFdpdGhTaGFkb3dzKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgUmVuZAogICAgICAgICB0ZXh0U2l6ZS5zY2FsZShzY2FsaW5nRmFjdG9yKTsK
ICAgICB9CiAKLSAgICBGbG9hdFJlY3Qgc2hhZG93UmVjdChGbG9hdFBvaW50KHRleHRPcmlnaW4u
eCgpLCB0ZXh0T3JpZ2luLnkoKSAtIHNjYWxlZEZvbnQuZm9udE1ldHJpY3MoKS5mbG9hdEFzY2Vu
dCgpKSwgdGV4dFNpemUpOworICAgIEZsb2F0UmVjdCBzaGFkb3dSZWN0KEZsb2F0UG9pbnQodGV4
dE9yaWdpbi54KCksIHRleHRPcmlnaW4ueSgpIC0gc2NhbGVkRm9udC5mb250TWV0cmljc09mUHJp
bWFyeUZvbnQoKS5mbG9hdEFzY2VudCgpKSwgdGV4dFNpemUpOwogCiAgICAgR3JhcGhpY3NDb250
ZXh0KiB1c2VkQ29udGV4dCA9ICZjb250ZXh0OwogICAgIGRvIHsKQEAgLTYxMyw3ICs2MTMsNyBA
QCBGbG9hdFJlY3QgU1ZHSW5saW5lVGV4dEJveDo6Y2FsY3VsYXRlQm91bmRhcmllcygpIGNvbnN0
CiAgICAgZmxvYXQgc2NhbGluZ0ZhY3RvciA9IHJlbmRlcmVyKCkuc2NhbGluZ0ZhY3RvcigpOwog
ICAgIEFTU0VSVChzY2FsaW5nRmFjdG9yKTsKIAotICAgIGZsb2F0IGJhc2VsaW5lID0gcmVuZGVy
ZXIoKS5zY2FsZWRGb250KCkuZm9udE1ldHJpY3MoKS5mbG9hdEFzY2VudCgpIC8gc2NhbGluZ0Zh
Y3RvcjsKKyAgICBmbG9hdCBiYXNlbGluZSA9IHJlbmRlcmVyKCkuc2NhbGVkRm9udCgpLmZvbnRN
ZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmZsb2F0QXNjZW50KCkgLyBzY2FsaW5nRmFjdG9yOwogCiAg
ICAgQWZmaW5lVHJhbnNmb3JtIGZyYWdtZW50VHJhbnNmb3JtOwogICAgIHVuc2lnbmVkIHRleHRG
cmFnbWVudHNTaXplID0gbV90ZXh0RnJhZ21lbnRzLnNpemUoKTsKQEAgLTY0OCw3ICs2NDgsNyBA
QCBib29sIFNWR0lubGluZVRleHRCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0
JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JgogICAgICAgICAgICAgICAgIGZsb2F0IHNjYWxpbmdG
YWN0b3IgPSByZW5kZXJlcigpLnNjYWxpbmdGYWN0b3IoKTsKICAgICAgICAgICAgICAgICBBU1NF
UlQoc2NhbGluZ0ZhY3Rvcik7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgZmxv
YXQgYmFzZWxpbmUgPSByZW5kZXJlcigpLnNjYWxlZEZvbnQoKS5mb250TWV0cmljcygpLmZsb2F0
QXNjZW50KCkgLyBzY2FsaW5nRmFjdG9yOworICAgICAgICAgICAgICAgIGZsb2F0IGJhc2VsaW5l
ID0gcmVuZGVyZXIoKS5zY2FsZWRGb250KCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuZmxv
YXRBc2NlbnQoKSAvIHNjYWxpbmdGYWN0b3I7CiAKICAgICAgICAgICAgICAgICBBZmZpbmVUcmFu
c2Zvcm0gZnJhZ21lbnRUcmFuc2Zvcm07CiAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBmcmFn
bWVudCA6IG1fdGV4dEZyYWdtZW50cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmUuY3BwCmluZGV4IDdi
ZTIwZDg0MTM4MWRlODVlMDI0NTQ4OGZlNWVlNTlhNmY3MTJjN2QuLjZjMjI1NGQxZmY4MTYzNzE3
MjY2NmU3MTVmMWViNWM2ODRlOTJiNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZS5jcHAKQEAgLTQ4
LDkgKzQ4LDkgQEAgZmxvYXQgU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lOjpjYWxjdWxhdGVC
YXNlbGluZVNoaWZ0KGNvbnN0IFNWR1JlbmRlclN0eWxlJgogICAgIGNhc2UgQmFzZWxpbmVTaGlm
dDo6QmFzZWxpbmU6CiAgICAgICAgIHJldHVybiAwOwogICAgIGNhc2UgQmFzZWxpbmVTaGlmdDo6
U3ViOgotICAgICAgICByZXR1cm4gLW1fZm9udC5mb250TWV0cmljcygpLmZsb2F0SGVpZ2h0KCkg
LyAyOworICAgICAgICByZXR1cm4gLW1fZm9udC5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5m
bG9hdEhlaWdodCgpIC8gMjsKICAgICBjYXNlIEJhc2VsaW5lU2hpZnQ6OlN1cGVyOgotICAgICAg
ICByZXR1cm4gbV9mb250LmZvbnRNZXRyaWNzKCkuZmxvYXRIZWlnaHQoKSAvIDI7CisgICAgICAg
IHJldHVybiBtX2ZvbnQuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuZmxvYXRIZWlnaHQoKSAv
IDI7CiAgICAgY2FzZSBCYXNlbGluZVNoaWZ0OjpMZW5ndGg6CiAgICAgICAgIGJyZWFrOwogICAg
IH0KQEAgLTExNCw3ICsxMTQsNyBAQCBmbG9hdCBTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmU6
OmNhbGN1bGF0ZUFsaWdubWVudEJhc2VsaW5lU2hpZnQoYm9vbCBpc1ZlcnRpYwogICAgICAgICBB
U1NFUlQoYmFzZWxpbmUgIT0gQWxpZ25tZW50QmFzZWxpbmU6OkF1dG8pOwogICAgIH0KIAotICAg
IGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IG1fZm9udC5mb250TWV0cmljcygpOwor
ICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IG1fZm9udC5mb250TWV0cmljc09m
UHJpbWFyeUZvbnQoKTsKIAogICAgIC8vIE5vdGU6IGh0dHA6Ly93aWtpLmFwYWNoZS5vcmcveG1s
Z3JhcGhpY3MtZm9wL0xpbmVMYXlvdXQvQWxpZ25tZW50SGFuZGxpbmcKICAgICBzd2l0Y2ggKGJh
c2VsaW5lKSB7CkBAIC0xOTUsNyArMTk1LDcgQEAgZmxvYXQgU1ZHVGV4dExheW91dEVuZ2luZUJh
c2VsaW5lOjpjYWxjdWxhdGVHbHlwaEFkdmFuY2VBbmRPcmllbnRhdGlvbihib29sIGlzVmUKICAg
ICAvLyBTcGVjOiBJZiBpZiB0aGUgJ2dseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsJyByZXN1bHRz
IGluIGFuIG9yaWVudGF0aW9uIGFuZ2xlIHRoYXQgaXMgbm90IGEgbXVsdGlwbGUgb2YKICAgICAv
LyAxODAgZGVncmVlcywgdGhlbiB0aGUgY3VycmVudCB0ZXh0IHBvc2l0aW9uIGlzIGluY3JlbWVu
dGVkIGFjY29yZGluZyB0byB0aGUgaG9yaXpvbnRhbCBtZXRyaWNzIG9mIHRoZSBnbHlwaC4KIAot
ICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IG1fZm9udC5mb250TWV0cmljcygp
OworICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IG1fZm9udC5mb250TWV0cmlj
c09mUHJpbWFyeUZvbnQoKTsKIAogICAgIC8vIFZlcnRpY2FsIG9yaWVudGF0aW9uIGhhbmRsaW5n
LgogICAgIGlmIChpc1ZlcnRpY2FsVGV4dCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1RleHRNZXRyaWNzLmNwcAppbmRleCAzOTA5MWVmOGFmM2Q5YjMwNDhkYzdiMmIy
Y2Y0ODIxMTk5NjVmYzViLi5mMWYzMDNkNmQzMDM2NDliY2Q3NzM1NWZmYjM1MTA3MTAxZGY2MDQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzLmNw
cApAQCAtNTAsNyArNTAsNyBAQCBTVkdUZXh0TWV0cmljczo6U1ZHVGV4dE1ldHJpY3MoUmVuZGVy
U1ZHSW5saW5lVGV4dCYgdGV4dFJlbmRlcmVyLCBjb25zdCBUZXh0UnVuJgogICAgIG1fd2lkdGgg
PSBzY2FsZWRGb250LndpZHRoKHJ1bikgLyBzY2FsaW5nRmFjdG9yOwogICAgIGxlbmd0aCA9IHJ1
bi5sZW5ndGgoKTsKICAgICBtX2dseXBoLm5hbWUgPSBlbXB0eVN0cmluZygpOwotICAgIG1faGVp
Z2h0ID0gc2NhbGVkRm9udC5mb250TWV0cmljcygpLmZsb2F0SGVpZ2h0KCkgLyBzY2FsaW5nRmFj
dG9yOworICAgIG1faGVpZ2h0ID0gc2NhbGVkRm9udC5mb250TWV0cmljc09mUHJpbWFyeUZvbnQo
KS5mbG9hdEhlaWdodCgpIC8gc2NhbGluZ0ZhY3RvcjsKIAogICAgIG1fZ2x5cGgudW5pY29kZVN0
cmluZyA9IHJ1bi5pczhCaXQoKSA/IFN0cmluZyhydW4uY2hhcmFjdGVyczgoKSwgbGVuZ3RoKSA6
IFN0cmluZyhydW4uY2hhcmFjdGVyczE2KCksIGxlbmd0aCk7CiAgICAgbV9nbHlwaC5pc1ZhbGlk
ID0gdHJ1ZTsKQEAgLTg2LDcgKzg2LDcgQEAgU1ZHVGV4dE1ldHJpY3M6OlNWR1RleHRNZXRyaWNz
KFJlbmRlclNWR0lubGluZVRleHQmIHRleHQsIHVuc2lnbmVkIGxlbmd0aCwgZmxvYXQKICAgICBB
U1NFUlQoc2NhbGluZ0ZhY3Rvcik7CiAKICAgICBtX3dpZHRoID0gd2lkdGggLyBzY2FsaW5nRmFj
dG9yOwotICAgIG1faGVpZ2h0ID0gdGV4dC5zY2FsZWRGb250KCkuZm9udE1ldHJpY3MoKS5mbG9h
dEhlaWdodCgpIC8gc2NhbGluZ0ZhY3RvcjsKKyAgICBtX2hlaWdodCA9IHRleHQuc2NhbGVkRm9u
dCgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmZsb2F0SGVpZ2h0KCkgLyBzY2FsaW5nRmFj
dG9yOwogCiAgICAgbV9sZW5ndGggPSBsZW5ndGg7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRRdWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1RleHRRdWVyeS5jcHAKaW5kZXggZGU5ZWIxOTE3ZmRhNzk0YTcwMTM1MDNi
ZDU1ZjI5ZTdjNzg4NTViNC4uN2M5Y2E5OTk2MzU2OWVjYzRmZDA5MDRiNjc3YjUyMDNlMjNhZDRl
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UXVlcnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFF1ZXJ5LmNwcApA
QCAtNDYzLDcgKzQ2Myw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjYWxjdWxhdGVHbHlwaEJvdW5k
YXJpZXMoU1ZHVGV4dFF1ZXJ5OjpEYXRhKiBxdWVyeURhdGEsIGNvbnN0CiAgICAgZmxvYXQgc2Nh
bGluZ0ZhY3RvciA9IHF1ZXJ5RGF0YS0+dGV4dFJlbmRlcmVyLT5zY2FsaW5nRmFjdG9yKCk7CiAg
ICAgQVNTRVJUKHNjYWxpbmdGYWN0b3IpOwogCi0gICAgZXh0ZW50LnNldExvY2F0aW9uKEZsb2F0
UG9pbnQoZnJhZ21lbnQueCwgZnJhZ21lbnQueSAtIHF1ZXJ5RGF0YS0+dGV4dFJlbmRlcmVyLT5z
Y2FsZWRGb250KCkuZm9udE1ldHJpY3MoKS5mbG9hdEFzY2VudCgpIC8gc2NhbGluZ0ZhY3Rvcikp
OworICAgIGV4dGVudC5zZXRMb2NhdGlvbihGbG9hdFBvaW50KGZyYWdtZW50LngsIGZyYWdtZW50
LnkgLSBxdWVyeURhdGEtPnRleHRSZW5kZXJlci0+c2NhbGVkRm9udCgpLmZvbnRNZXRyaWNzT2ZQ
cmltYXJ5Rm9udCgpLmZsb2F0QXNjZW50KCkgLyBzY2FsaW5nRmFjdG9yKSk7CiAKICAgICBpZiAo
c3RhcnRQb3NpdGlvbikgewogICAgICAgICBTVkdUZXh0TWV0cmljcyBtZXRyaWNzID0gU1ZHVGV4
dE1ldHJpY3M6Om1lYXN1cmVDaGFyYWN0ZXJSYW5nZSgqcXVlcnlEYXRhLT50ZXh0UmVuZGVyZXIs
IGZyYWdtZW50LmNoYXJhY3Rlck9mZnNldCwgc3RhcnRQb3NpdGlvbik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJGaXJzdExl
dHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1
aWxkZXJGaXJzdExldHRlci5jcHAKaW5kZXggMjVjOTYwZjBlMGFmYzEwMjUxYzZkMzY0ZDI3ZDQ0
N2NmNjRjZWY3MS4uZjcyZWY5MGQyNDI3OTY4OTM2MWVkMzMxOWU4MjAxMDQzNDA1NDQzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWls
ZGVyRmlyc3RMZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGlu
Zy9SZW5kZXJUcmVlQnVpbGRlckZpcnN0TGV0dGVyLmNwcApAQCAtNTEsNyArNTEsNyBAQCBzdGF0
aWMgUmVuZGVyU3R5bGUgc3R5bGVGb3JGaXJzdExldHRlcihjb25zdCBSZW5kZXJCbG9jayYgZmly
c3RMZXR0ZXJCbG9jaywgY29ucwogCiAgICAgLy8gV2UgaGF2ZSB0byBjb21wdXRlIHRoZSBjb3Jy
ZWN0IGZvbnQtc2l6ZSBmb3IgdGhlIGZpcnN0LWxldHRlciBpZiBpdCBoYXMgYW4gaW5pdGlhbCBs
ZXR0ZXIgaGVpZ2h0IHNldC4KICAgICBhdXRvKiBwYXJhZ3JhcGggPSBmaXJzdExldHRlckNvbnRh
aW5lci5pc1JlbmRlckJsb2NrRmxvdygpID8gJmZpcnN0TGV0dGVyQ29udGFpbmVyIDogZmlyc3RM
ZXR0ZXJDb250YWluZXIuY29udGFpbmluZ0Jsb2NrKCk7Ci0gICAgaWYgKGZpcnN0TGV0dGVyU3R5
bGUuaW5pdGlhbExldHRlckhlaWdodCgpID49IDEgJiYgZmlyc3RMZXR0ZXJTdHlsZS5mb250TWV0
cmljcygpLmhhc0NhcEhlaWdodCgpICYmIHBhcmFncmFwaC0+c3R5bGUoKS5mb250TWV0cmljcygp
Lmhhc0NhcEhlaWdodCgpKSB7CisgICAgaWYgKGZpcnN0TGV0dGVyU3R5bGUuaW5pdGlhbExldHRl
ckhlaWdodCgpID49IDEgJiYgZmlyc3RMZXR0ZXJTdHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZv
bnQoKS5oYXNDYXBIZWlnaHQoKSAmJiBwYXJhZ3JhcGgtPnN0eWxlKCkuZm9udE1ldHJpY3NPZlBy
aW1hcnlGb250KCkuaGFzQ2FwSGVpZ2h0KCkpIHsKICAgICAgICAgLy8gRklYTUU6IEZvciBpZGVv
Z3JhcGhpYyBiYXNlbGluZXMsIHdlIHdhbnQgdG8gZ28gZnJvbSBsaW5lIGVkZ2UgdG8gbGluZSBl
ZGdlLiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gKE4tMSkqbGluZS1oZWlnaHQgKyB0aGUgZm9udCBo
ZWlnaHQuCiAgICAgICAgIC8vIFdlIGRvbid0IHlldCBzdXBwb3J0IGlkZW9ncmFwaGljIGJhc2Vs
aW5lcy4KICAgICAgICAgLy8gRm9yIGFuIE4tbGluZSBmaXJzdC1sZXR0ZXIgYW5kIGZvciBhbHBo
YWJldGljIGJhc2VsaW5lcywgdGhlIGNhcC1oZWlnaHQgb2YgdGhlIGZpcnN0IGxldHRlciBuZWVk
cyB0byBlcXVhbCAoTi0xKSpsaW5lLWhlaWdodCBvZiBwYXJhZ3JhcGggbGluZXMgKyBjYXAtaGVp
Z2h0IG9mIHRoZSBwYXJhZ3JhcGgKQEAgLTYzLDIyICs2MywyMiBAQCBzdGF0aWMgUmVuZGVyU3R5
bGUgc3R5bGVGb3JGaXJzdExldHRlcihjb25zdCBSZW5kZXJCbG9jayYgZmlyc3RMZXR0ZXJCbG9j
aywgY29ucwogICAgICAgICAvLyBTZXQgdGhlIGZvbnQgdG8gYmUgb25lIGxpbmUgdG9vIGJpZyBh
bmQgdGhlbiByYXRjaGV0IGJhY2sgdG8gZ2V0IHRvIGEgcHJlY2lzZSBmaXQuIFdlIGNhbid0IGp1
c3Qgc2V0IHRoZSBkZXNpcmVkIGZvbnQgc2l6ZSBiYXNlZCBvZmYgZm9udCBoZWlnaHQgbWV0cmlj
cwogICAgICAgICAvLyBiZWNhdXNlIG1hbnkgZm9udHMgYmFrZSBhc2NlbnQgaW50byB0aGUgZm9u
dCBtZXRyaWNzLiBUaGVyZWZvcmUgd2UgaGF2ZSB0byBsb29rIGF0IGFjdHVhbCBtZWFzdXJlZCBj
YXAgaGVpZ2h0IHZhbHVlcyBpbiBvcmRlciB0byBrbm93IHdoZW4gd2UgaGF2ZSBhIGdvb2QgZml0
LgogICAgICAgICBhdXRvIG5ld0ZvbnREZXNjcmlwdGlvbiA9IGZpcnN0TGV0dGVyU3R5bGUuZm9u
dERlc2NyaXB0aW9uKCk7Ci0gICAgICAgIGZsb2F0IGNhcFJhdGlvID0gZmlyc3RMZXR0ZXJTdHls
ZS5mb250TWV0cmljcygpLmZsb2F0Q2FwSGVpZ2h0KCkgLyBmaXJzdExldHRlclN0eWxlLmNvbXB1
dGVkRm9udFBpeGVsU2l6ZSgpOwotICAgICAgICBmbG9hdCBzdGFydGluZ0ZvbnRTaXplID0gKChm
aXJzdExldHRlclN0eWxlLmluaXRpYWxMZXR0ZXJIZWlnaHQoKSAtIDEpICogbGluZUhlaWdodCAr
IHBhcmFncmFwaC0+c3R5bGUoKS5mb250TWV0cmljcygpLmNhcEhlaWdodCgpKSAvIGNhcFJhdGlv
OworICAgICAgICBmbG9hdCBjYXBSYXRpbyA9IGZpcnN0TGV0dGVyU3R5bGUuZm9udE1ldHJpY3NP
ZlByaW1hcnlGb250KCkuZmxvYXRDYXBIZWlnaHQoKSAvIGZpcnN0TGV0dGVyU3R5bGUuY29tcHV0
ZWRGb250UGl4ZWxTaXplKCk7CisgICAgICAgIGZsb2F0IHN0YXJ0aW5nRm9udFNpemUgPSAoKGZp
cnN0TGV0dGVyU3R5bGUuaW5pdGlhbExldHRlckhlaWdodCgpIC0gMSkgKiBsaW5lSGVpZ2h0ICsg
cGFyYWdyYXBoLT5zdHlsZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmNhcEhlaWdodCgp
KSAvIGNhcFJhdGlvOwogICAgICAgICBuZXdGb250RGVzY3JpcHRpb24uc2V0U3BlY2lmaWVkU2l6
ZShzdGFydGluZ0ZvbnRTaXplKTsKICAgICAgICAgbmV3Rm9udERlc2NyaXB0aW9uLnNldENvbXB1
dGVkU2l6ZShzdGFydGluZ0ZvbnRTaXplKTsKICAgICAgICAgZmlyc3RMZXR0ZXJTdHlsZS5zZXRG
b250RGVzY3JpcHRpb24oV1RGTW92ZShuZXdGb250RGVzY3JpcHRpb24pKTsKICAgICAgICAgZmly
c3RMZXR0ZXJTdHlsZS5mb250Q2FzY2FkZSgpLnVwZGF0ZShmaXJzdExldHRlclN0eWxlLmZvbnRD
YXNjYWRlKCkuZm9udFNlbGVjdG9yKCkpOwogCi0gICAgICAgIGludCBkZXNpcmVkQ2FwSGVpZ2h0
ID0gKGZpcnN0TGV0dGVyU3R5bGUuaW5pdGlhbExldHRlckhlaWdodCgpIC0gMSkgKiBsaW5lSGVp
Z2h0ICsgcGFyYWdyYXBoLT5zdHlsZSgpLmZvbnRNZXRyaWNzKCkuY2FwSGVpZ2h0KCk7Ci0gICAg
ICAgIGludCBhY3R1YWxDYXBIZWlnaHQgPSBmaXJzdExldHRlclN0eWxlLmZvbnRNZXRyaWNzKCku
Y2FwSGVpZ2h0KCk7CisgICAgICAgIGludCBkZXNpcmVkQ2FwSGVpZ2h0ID0gKGZpcnN0TGV0dGVy
U3R5bGUuaW5pdGlhbExldHRlckhlaWdodCgpIC0gMSkgKiBsaW5lSGVpZ2h0ICsgcGFyYWdyYXBo
LT5zdHlsZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmNhcEhlaWdodCgpOworICAgICAg
ICBpbnQgYWN0dWFsQ2FwSGVpZ2h0ID0gZmlyc3RMZXR0ZXJTdHlsZS5mb250TWV0cmljc09mUHJp
bWFyeUZvbnQoKS5jYXBIZWlnaHQoKTsKICAgICAgICAgd2hpbGUgKGFjdHVhbENhcEhlaWdodCA+
IGRlc2lyZWRDYXBIZWlnaHQpIHsKICAgICAgICAgICAgIGF1dG8gbmV3Rm9udERlc2NyaXB0aW9u
ID0gZmlyc3RMZXR0ZXJTdHlsZS5mb250RGVzY3JpcHRpb24oKTsKICAgICAgICAgICAgIG5ld0Zv
bnREZXNjcmlwdGlvbi5zZXRTcGVjaWZpZWRTaXplKG5ld0ZvbnREZXNjcmlwdGlvbi5zcGVjaWZp
ZWRTaXplKCkgLSAxKTsKICAgICAgICAgICAgIG5ld0ZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRl
ZFNpemUobmV3Rm9udERlc2NyaXB0aW9uLmNvbXB1dGVkU2l6ZSgpIC0xKTsKICAgICAgICAgICAg
IGZpcnN0TGV0dGVyU3R5bGUuc2V0Rm9udERlc2NyaXB0aW9uKFdURk1vdmUobmV3Rm9udERlc2Ny
aXB0aW9uKSk7CiAgICAgICAgICAgICBmaXJzdExldHRlclN0eWxlLmZvbnRDYXNjYWRlKCkudXBk
YXRlKGZpcnN0TGV0dGVyU3R5bGUuZm9udENhc2NhZGUoKS5mb250U2VsZWN0b3IoKSk7Ci0gICAg
ICAgICAgICBhY3R1YWxDYXBIZWlnaHQgPSBmaXJzdExldHRlclN0eWxlLmZvbnRNZXRyaWNzKCku
Y2FwSGVpZ2h0KCk7CisgICAgICAgICAgICBhY3R1YWxDYXBIZWlnaHQgPSBmaXJzdExldHRlclN0
eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmNhcEhlaWdodCgpOwogICAgICAgICB9CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcAppbmRl
eCBlOGNlNTdkZjAzN2UzOWRlYTdmNGVmNTExYWZkM2IwZGM2ZGE2YjE3Li40ZThjNTg3ZTIyOTg0
NDA3OTBmNzM1ZDQzYzEzODdmMzA5YmM2MTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lu
bGluZVRleHRCb3hTdHlsZS5jcHAKQEAgLTE3MywxMiArMTczLDEyIEBAIEdseXBoT3ZlcmZsb3cg
dmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxl
LCBjb25zdCBJCiAgICAgaWYgKGRlY29yYXRpb24uaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
R2x5cGhPdmVyZmxvdygpOwogCi0gICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzID0gbGluZVN0eWxl
LnRleHREZWNvcmF0aW9uVGhpY2tuZXNzKCkucmVzb2x2ZShsaW5lU3R5bGUuY29tcHV0ZWRGb250
U2l6ZSgpLCBsaW5lU3R5bGUuZm9udE1ldHJpY3MoKSk7CisgICAgZmxvYXQgc3Ryb2tlVGhpY2tu
ZXNzID0gbGluZVN0eWxlLnRleHREZWNvcmF0aW9uVGhpY2tuZXNzKCkucmVzb2x2ZShsaW5lU3R5
bGUuY29tcHV0ZWRGb250U2l6ZSgpLCBsaW5lU3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250
KCkpOwogICAgIFdhdnlTdHJva2VQYXJhbWV0ZXJzIHdhdnlTdHJva2VQYXJhbWV0ZXJzOwogICAg
IGZsb2F0IHdhdnlPZmZzZXQgPSAwOwogICAgICAgICAKICAgICBUZXh0RGVjb3JhdGlvblN0eWxl
IGRlY29yYXRpb25TdHlsZSA9IGxpbmVTdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxlKCk7Ci0gICAg
ZmxvYXQgaGVpZ2h0ID0gbGluZVN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKS5mbG9h
dEhlaWdodCgpOworICAgIGZsb2F0IGhlaWdodCA9IGxpbmVTdHlsZS5mb250Q2FzY2FkZSgpLmZv
bnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmZsb2F0SGVpZ2h0KCk7CiAgICAgR2x5cGhPdmVyZmxv
dyBvdmVyZmxvd1Jlc3VsdDsKICAgICAKICAgICBpZiAoZGVjb3JhdGlvblN0eWxlID09IFRleHRE
ZWNvcmF0aW9uU3R5bGU6OldhdnkpIHsKQEAgLTE5NSw3ICsxOTUsNyBAQCBHbHlwaE92ZXJmbG93
IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyU3R5bGUmIGxpbmVTdHls
ZSwgY29uc3QgSQogICAgICAgICBpbnQgdW5kZXJsaW5lT2Zmc2V0ID0gMTsKICAgICAgICAgZmxv
YXQgdGV4dERlY29yYXRpb25CYXNlRm9udFNpemUgPSAxNjsKICAgICAgICAgYXV0byBkZWZhdWx0
R2FwID0gbGluZVN0eWxlLmNvbXB1dGVkRm9udFNpemUoKSAvIHRleHREZWNvcmF0aW9uQmFzZUZv
bnRTaXplOwotICAgICAgICB1bmRlcmxpbmVPZmZzZXQgKz0gY29tcHV0ZVVuZGVybGluZU9mZnNl
dChsaW5lU3R5bGUudGV4dFVuZGVybGluZVBvc2l0aW9uKCksIGxpbmVTdHlsZS50ZXh0VW5kZXJs
aW5lT2Zmc2V0KCksIGxpbmVTdHlsZS5mb250TWV0cmljcygpLCB0ZXh0UnVuLCBkZWZhdWx0R2Fw
KTsKKyAgICAgICAgdW5kZXJsaW5lT2Zmc2V0ICs9IGNvbXB1dGVVbmRlcmxpbmVPZmZzZXQobGlu
ZVN0eWxlLnRleHRVbmRlcmxpbmVQb3NpdGlvbigpLCBsaW5lU3R5bGUudGV4dFVuZGVybGluZU9m
ZnNldCgpLCBsaW5lU3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCksIHRleHRSdW4sIGRl
ZmF1bHRHYXApOwogICAgICAgICBpZiAoZGVjb3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0aW9u
U3R5bGU6OldhdnkpIHsKICAgICAgICAgICAgIG92ZXJmbG93UmVzdWx0LmV4dGVuZEJvdHRvbSh1
bmRlcmxpbmVPZmZzZXQgKyB3YXZ5T2Zmc2V0ICsgd2F2eVN0cm9rZVBhcmFtZXRlcnMuY29udHJv
bFBvaW50RGlzdGFuY2UgKyBzdHJva2VUaGlja25lc3MgLSBoZWlnaHQpOwogICAgICAgICAgICAg
b3ZlcmZsb3dSZXN1bHQuZXh0ZW5kVG9wKC0odW5kZXJsaW5lT2Zmc2V0ICsgd2F2eU9mZnNldCAt
IHdhdnlTdHJva2VQYXJhbWV0ZXJzLmNvbnRyb2xQb2ludERpc3RhbmNlIC0gc3Ryb2tlVGhpY2tu
ZXNzKSk7CkBAIC0yMDYsNyArMjA2LDcgQEAgR2x5cGhPdmVyZmxvdyB2aXN1YWxPdmVyZmxvd0Zv
ckRlY29yYXRpb25zKGNvbnN0IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUsIGNvbnN0IEkKICAgICB9
CiAgICAgaWYgKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lKSB7CiAg
ICAgICAgIEZsb2F0UmVjdCByZWN0KEZsb2F0UG9pbnQoKSwgRmxvYXRTaXplKDEsIHN0cm9rZVRo
aWNrbmVzcykpOwotICAgICAgICBmbG9hdCBhdXRvVGV4dERlY29yYXRpb25UaGlja25lc3MgPSBU
ZXh0RGVjb3JhdGlvblRoaWNrbmVzczo6Y3JlYXRlV2l0aEF1dG8oKS5yZXNvbHZlKGxpbmVTdHls
ZS5jb21wdXRlZEZvbnRTaXplKCksIGxpbmVTdHlsZS5mb250TWV0cmljcygpKTsKKyAgICAgICAg
ZmxvYXQgYXV0b1RleHREZWNvcmF0aW9uVGhpY2tuZXNzID0gVGV4dERlY29yYXRpb25UaGlja25l
c3M6OmNyZWF0ZVdpdGhBdXRvKCkucmVzb2x2ZShsaW5lU3R5bGUuY29tcHV0ZWRGb250U2l6ZSgp
LCBsaW5lU3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkpOwogICAgICAgICByZWN0Lm1v
dmUoMCwgYXV0b1RleHREZWNvcmF0aW9uVGhpY2tuZXNzIC0gc3Ryb2tlVGhpY2tuZXNzIC0gd2F2
eU9mZnNldCk7CiAgICAgICAgIGlmIChkZWNvcmF0aW9uU3R5bGUgPT0gVGV4dERlY29yYXRpb25T
dHlsZTo6V2F2eSkgewogICAgICAgICAgICAgRmxvYXRCb3hFeHRlbnQgd2F2eUV4cGFuc2lvbjsK
QEAgLTIxOSw4ICsyMTksOCBAQCBHbHlwaE92ZXJmbG93IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3Jh
dGlvbnMoY29uc3QgUmVuZGVyU3R5bGUmIGxpbmVTdHlsZSwgY29uc3QgSQogICAgIH0KICAgICBp
ZiAoZGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2gpIHsKICAgICAg
ICAgRmxvYXRSZWN0IHJlY3QoRmxvYXRQb2ludCgpLCBGbG9hdFNpemUoMSwgc3Ryb2tlVGhpY2tu
ZXNzKSk7Ci0gICAgICAgIGZsb2F0IGF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyA9IFRleHRE
ZWNvcmF0aW9uVGhpY2tuZXNzOjpjcmVhdGVXaXRoQXV0bygpLnJlc29sdmUobGluZVN0eWxlLmNv
bXB1dGVkRm9udFNpemUoKSwgbGluZVN0eWxlLmZvbnRNZXRyaWNzKCkpOwotICAgICAgICBhdXRv
IGNlbnRlciA9IDIgKiBsaW5lU3R5bGUuZm9udE1ldHJpY3MoKS5mbG9hdEFzY2VudCgpIC8gMyAr
IGF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyAvIDI7CisgICAgICAgIGZsb2F0IGF1dG9UZXh0
RGVjb3JhdGlvblRoaWNrbmVzcyA9IFRleHREZWNvcmF0aW9uVGhpY2tuZXNzOjpjcmVhdGVXaXRo
QXV0bygpLnJlc29sdmUobGluZVN0eWxlLmNvbXB1dGVkRm9udFNpemUoKSwgbGluZVN0eWxlLmZv
bnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpKTsKKyAgICAgICAgYXV0byBjZW50ZXIgPSAyICogbGlu
ZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmZsb2F0QXNjZW50KCkgLyAzICsgYXV0
b1RleHREZWNvcmF0aW9uVGhpY2tuZXNzIC8gMjsKICAgICAgICAgcmVjdC5tb3ZlKDAsIGNlbnRl
ciAtIHN0cm9rZVRoaWNrbmVzcyAvIDIpOwogICAgICAgICBpZiAoZGVjb3JhdGlvblN0eWxlID09
IFRleHREZWNvcmF0aW9uU3R5bGU6OldhdnkpIHsKICAgICAgICAgICAgIEZsb2F0Qm94RXh0ZW50
IHdhdnlFeHBhbnNpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJl
c29sdmVGb3JGb250UmF3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZv
ckZvbnRSYXcuY3BwCmluZGV4IDM0MTcxNGU5ZDZjODZlOTYyNWM2OTNlNGU4NzAwNmZlZTJiNzBi
MzcuLmI2MjQ1N2QzNjdmMDQ2ZWVkZGJmNTk5MjJlOGRhMzdkODZmMmNlNzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3BwCkBAIC0yMDcsNyAr
MjA3LDcgQEAgc3RkOjpvcHRpb25hbDxGb250Q2FzY2FkZT4gcmVzb2x2ZUZvckZvbnRSYXcoY29u
c3QgRm9udFJhdyYgZm9udFJhdywgRm9udENhc2NhZGUKICAgICAgICAgICAgIC8vICAgICAgICBJ
dCdzIHVuY2xlYXIgaW4gdGhlIHNwZWNpZmljYXRpb24gaWYgdGhleSdyZSBleHBlY3RlZCB0byB3
b3JrIG9uIE9mZnNjcmVlbkNhbnZhcywgZ2l2ZW4KICAgICAgICAgICAgIC8vICAgICAgICB0aGF0
IGl0J3Mgb2ZmLXNjcmVlbiBhbmQgdGhlcmVmb3JlIGRvZXNuJ3Qgc3RyaWN0bHkgaGF2ZSBhbiBh
c3NvY2lhdGVkIHZpZXdwb3J0LgogICAgICAgICAgICAgLy8gICAgICAgIFRoaXMgbmVlZHMgY2xh
cmlmaWNhdGlvbiBhbmQgcG9zc2libHkgZml4aW5nLgotICAgICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGZsb2F0PihDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZVVuem9vbWVkTm9uQ2FsY0xl
bmd0aERvdWJsZShsZW5ndGgudHlwZSwgbGVuZ3RoLnZhbHVlLCBDU1NQcm9wZXJ0eUZvbnRTaXpl
LCAmZm9udENhc2NhZGUuZm9udE1ldHJpY3MoKSwgJmZvbnRDYXNjYWRlLmZvbnREZXNjcmlwdGlv
bigpLCAmZm9udENhc2NhZGUuZm9udERlc2NyaXB0aW9uKCksIGlzPERvY3VtZW50Pihjb250ZXh0
KSA/IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5yZW5kZXJWaWV3KCkgOiBudWxscHRyKSk7
CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KENTU1ByaW1pdGl2ZVZhbHVl
Ojpjb21wdXRlVW56b29tZWROb25DYWxjTGVuZ3RoRG91YmxlKGxlbmd0aC50eXBlLCBsZW5ndGgu
dmFsdWUsIENTU1Byb3BlcnR5Rm9udFNpemUsICZmb250Q2FzY2FkZS5mb250TWV0cmljc09mUHJp
bWFyeUZvbnQoKSwgJmZvbnRDYXNjYWRlLmZvbnREZXNjcmlwdGlvbigpLCAmZm9udENhc2NhZGUu
Zm9udERlc2NyaXB0aW9uKCksIGlzPERvY3VtZW50Pihjb250ZXh0KSA/IGRvd25jYXN0PERvY3Vt
ZW50Pihjb250ZXh0KS5yZW5kZXJWaWV3KCkgOiBudWxscHRyKSk7CiAgICAgICAgIH0sIFsmXSAo
Y29uc3QgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpQZXJjZW50UmF3JiBwZXJjZW50YWdlKSB7
CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KChwYXJlbnRTaXplICogcGVy
Y2VudGFnZS52YWx1ZSkgLyAxMDAuMCk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0xlbmd0aENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0xlbmd0aENvbnRleHQuY3BwCmluZGV4IDBkZGFiOTgwMWYxNmM4ODAwZTQwOTE0MzdhN2Y3Mjhl
MzRmMGQwMTQuLjE1NGU4ZGExMTgwZGU0ZTY5NTg3MDhlMjJiOGYxZWU4MGI0MzBhYjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoQ29udGV4dC5jcHAKQEAgLTI2Nyw3ICsyNjcsNyBAQCBF
eGNlcHRpb25PcjxmbG9hdD4gU1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlRnJvbVVzZXJV
bml0c1RvRVhTKGZsb2F0IHZhbHVlKQogCiAgICAgLy8gVXNlIG9mIGNlaWwgYWxsb3dzIGEgcGl4
ZWwgbWF0Y2ggdG8gdGhlIFczQ3MgZXhwZWN0ZWQgb3V0cHV0IG9mIGNvb3Jkcy11bml0cy0wMy1i
LnN2ZwogICAgIC8vIGlmIHRoaXMgY2F1c2VzIHByb2JsZW1zIGluIHJlYWwgd29ybGQgY2FzZXMg
bWF5YmUgaXQgd291bGQgYmUgYmVzdCB0byByZW1vdmUgdGhpcwotICAgIGZsb2F0IHhIZWlnaHQg
PSBzdGQ6OmNlaWwoc3R5bGUtPmZvbnRNZXRyaWNzKCkueEhlaWdodCgpKTsKKyAgICBmbG9hdCB4
SGVpZ2h0ID0gc3RkOjpjZWlsKHN0eWxlLT5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS54SGVp
Z2h0KCkpOwogICAgIGlmICgheEhlaWdodCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5v
dFN1cHBvcnRlZEVycm9yIH07CiAKQEAgLTI4Miw3ICsyODIsNyBAQCBFeGNlcHRpb25PcjxmbG9h
dD4gU1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlRnJvbUVYU1RvVXNlclVuaXRzKGZsb2F0
IHZhbHVlKQogCiAgICAgLy8gVXNlIG9mIGNlaWwgYWxsb3dzIGEgcGl4ZWwgbWF0Y2ggdG8gdGhl
IFczQ3MgZXhwZWN0ZWQgb3V0cHV0IG9mIGNvb3Jkcy11bml0cy0wMy1iLnN2ZwogICAgIC8vIGlm
IHRoaXMgY2F1c2VzIHByb2JsZW1zIGluIHJlYWwgd29ybGQgY2FzZXMgbWF5YmUgaXQgd291bGQg
YmUgYmVzdCB0byByZW1vdmUgdGhpcwotICAgIHJldHVybiB2YWx1ZSAqIHN0ZDo6Y2VpbChzdHls
ZS0+Zm9udE1ldHJpY3MoKS54SGVpZ2h0KCkpOworICAgIHJldHVybiB2YWx1ZSAqIHN0ZDo6Y2Vp
bChzdHlsZS0+Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkueEhlaWdodCgpKTsKIH0KIAogYm9v
bCBTVkdMZW5ndGhDb250ZXh0OjpkZXRlcm1pbmVWaWV3cG9ydChGbG9hdFNpemUmIHZpZXdwb3J0
U2l6ZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0NvY29hL1dlYlBhZ2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0NvY29hL1dlYlBhZ2VDb2NvYS5tbQppbmRleCAzNDU2YmVmMzY3MTdhZmEyN2ZiZDk1YTNhMjQ2
OTg2ODYwYWM4ZTUxLi4zYWI4NDQ2Mzk1YTlkZDlmOWQ3NjkxZGNmYzQyYjVkNTNhZGZjOTI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdl
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2Vi
UGFnZUNvY29hLm1tCkBAIC0xNzYsNyArMTc2LDcgQEAgRGljdGlvbmFyeVBvcHVwSW5mbyBXZWJQ
YWdlOjpkaWN0aW9uYXJ5UG9wdXBJbmZvRm9yUmFuZ2UoRnJhbWUmIGZyYW1lLCBjb25zdCBTaW0K
ICAgICBJbnRSZWN0IHJhbmdlUmVjdCA9IGZyYW1lLnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhx
dWFkc1swXS5lbmNsb3NpbmdCb3VuZGluZ0JveCgpKTsKIAogICAgIGNvbnN0IFJlbmRlclN0eWxl
KiBzdHlsZSA9IHJhbmdlLnN0YXJ0Q29udGFpbmVyKCkucmVuZGVyU3R5bGUoKTsKLSAgICBmbG9h
dCBzY2FsZWRBc2NlbnQgPSBzdHlsZSA/IHN0eWxlLT5mb250TWV0cmljcygpLmFzY2VudCgpICog
cGFnZVNjYWxlRmFjdG9yKCkgOiAwOworICAgIGZsb2F0IHNjYWxlZEFzY2VudCA9IHN0eWxlID8g
c3R5bGUtPmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudCgpICogcGFnZVNjYWxlRmFj
dG9yKCkgOiAwOwogICAgIGRpY3Rpb25hcnlQb3B1cEluZm8ub3JpZ2luID0gRmxvYXRQb2ludChy
YW5nZVJlY3QueCgpLCByYW5nZVJlY3QueSgpICsgc2NhbGVkQXNjZW50KTsKICAgICBkaWN0aW9u
YXJ5UG9wdXBJbmZvLm9wdGlvbnMgPSBvcHRpb25zOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xs
ZXIubW0KaW5kZXggZjJhZmIwODA3NmE2NWQzYzBhZjNlNDdjMTkwYmIwM2ExOTdlODIzZC4uYjY4
NmVjYjk5MzhiOWY2OWUxMWU4Yzk5M2NkNjZmZTRkZWUyYTBlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9u
Q29udHJvbGxlci5tbQpAQCAtNTIzLDcgKzUyMyw3IEBAIHN0YXRpYyBXZWJDb3JlOjpJbnRSZWN0
IGVsZW1lbnRCb3VuZGluZ0JveEluV2luZG93Q29vcmRpbmF0ZXNGcm9tTm9kZShXZWJDb3JlOjpO
CiAgICAgfQogCiAgICAgYXV0byBzdHlsZSA9IHJhbmdlLnN0YXJ0LmNvbnRhaW5lci0+cmVuZGVy
U3R5bGUoKTsKLSAgICBmbG9hdCBzY2FsZWREZXNjZW50ID0gc3R5bGUgPyBzdHlsZS0+Zm9udE1l
dHJpY3MoKS5kZXNjZW50KCkgKiBmcmFtZS0+cGFnZSgpLT5wYWdlU2NhbGVGYWN0b3IoKSA6IDA7
CisgICAgZmxvYXQgc2NhbGVkRGVzY2VudCA9IHN0eWxlID8gc3R5bGUtPmZvbnRNZXRyaWNzT2ZQ
cmltYXJ5Rm9udCgpLmRlc2NlbnQoKSAqIGZyYW1lLT5wYWdlKCktPnBhZ2VTY2FsZUZhY3Rvcigp
IDogMDsKIAogICAgIGF1dG8gcXVhZHMgPSBXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFic29sdXRl
VGV4dFF1YWRzKHJhbmdlKTsKICAgICBpZiAocXVhZHMuaXNFbXB0eSgpKSB7Cg==
</data>
<flag name="commit-queue"
          id="476904"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450496</attachid>
            <date>2022-01-31 21:03:16 -0800</date>
            <delta_ts>2022-01-31 22:10:33 -0800</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-235938-20220131210315.patch</filename>
            <type>text/plain</type>
            <size>107644</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4ODY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTAxNDllMjkwZDY2N2Rh
MWEyYzAxNjAxMjc4YTgyOGJlZjRkNTQ1Yi4uNTg1NjQ0MGIyNGY2ZmNlZDhkOGQ1NmQwNzc0ZGIw
Njk1YjJlYWI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2MCBAQAorMjAyMi0wMS0zMSAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBG
b250Q2FzY2FkZTo6Zm9udE1ldHJpY3MoKSBhbmQgUmVuZGVyU3R5bGU6OmZvbnRNZXRyaWNzKCkg
dG8gZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTkzOAorCisgICAgICAgIFJldmlld2VkIGJ5IEFsYW4g
QnVqdGFzLgorCisgICAgICAgIEl0J3MgcHJvYmFibHkgZ29vZCB0byByZW1pbmQgcGVvcGxlIHRo
YXQgd2hlbiB0aGV5IGNhbGwgdGhpcyBmdW5jdGlvbiwKKyAgICAgICAgdGhleSBtaWdodCBub3Qg
YmUgZ2V0dGluZyB3aGF0IHRoZXkgbWlnaHQgdGhpbmsgdGhleSdyZSBnZXR0aW5nLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKwor
ICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZU5vbkNhbGNMZW5ndGhEb3VibGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmVxdWFsRm9yTGVuZ3RoUmVzb2x1dGlvbik6Cisg
ICAgICAgICogZGlzcGxheS9jc3MvRGlzcGxheUJveFBhaW50ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheTo6Qm94UGFpbnRlcjo6cGFpbnRCb3hDb250ZW50KToKKyAgICAgICAgKiBk
aXNwbGF5L2Nzcy9EaXNwbGF5U3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlN0
eWxlOjpmb250TWV0cmljc09mUHJpbWFyeUZvbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheTo6U3R5bGU6OmZvbnRNZXRyaWNzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBo
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxl
bWVudDo6Y3JlYXRlSW5uZXJUZXh0U3R5bGUpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZTo6Rm9udFByb3h5Ojpmb250TWV0cmljc09mUHJpbWFyeUZvbnQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6
ZHJhd1RleHRVbmNoZWNrZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZTo6bWVhc3VyZVRleHRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjp0ZXh0T2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OkZvbnRQcm94eTo6Zm9udE1ldHJpY3MgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2UuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpkcmF3UnVsZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6OmRyYXdFbGVtZW50VGl0bGUpOgorICAgICAgICAo
V2ViQ29yZTo6ZXhwZWN0ZWRTaXplRm9yTGF5b3V0TGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6
ZHJhd0xheW91dExhYmVsKToKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVGb3JtYXR0aW5nUXVpcmtzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6SW5saW5lRm9ybWF0dGluZ1F1aXJrczo6aW5pdGlhbExpbmVIZWlnaHQgY29uc3QpOgorICAg
ICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxldmVsQm94Lmg6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om1fc3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpJbmxpbmVMZXZlbEJveDo6cHJlZmVycmVkTGluZUhlaWdodCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUxldmVsQm94OjpwcmltYXJ5Zm9udE1ldHJpY3NP
ZlByaW1hcnlGb250IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGV2
ZWxCb3g6OnByaW1hcnlGb250TWV0cmljcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmxvZ2ljYWxSZWN0Rm9yVGV4dFJ1biBjb25zdCk6
CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJv
eEJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRlcjo6
c2V0VmVydGljYWxHZW9tZXRyeUZvckxpbmVCcmVha0JveCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkxpbmVCb3hCdWlsZGVyOjpzZXRJbml0aWFsVmVydGljYWxHZW9tZXRyeUZv
cklubGluZUJveCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkxpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OmNvbXB1dGVMaW5lQm94TG9naWNhbEhl
aWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hWZXJ0aWNhbEFs
aWduZXI6OmNvbXB1dGVSb290SW5saW5lQm94VmVydGljYWxQb3NpdGlvbiBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OmFsaWduSW5saW5l
TGV2ZWxCb3hlcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2Nh
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmZsb2F0V2lkdGhGb3JTaW1w
bGVUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpmbG9hdFdpZHRo
Rm9yQ29tcGxleFRleHQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YXNjYWRlLmg6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6Zm9udE1ldHJpY3NPZlBy
aW1hcnlGb250IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpmb250TWV0
cmljcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL0NhcmV0UmVjdENvbXB1
dGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVDYXJldFJlY3RGb3JFbXB0eUVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUNhcmV0UmVjdEZvckJveCk6CisgICAg
ICAgICogcmVuZGVyaW5nL0xlZ2FjeUVsbGlwc2lzQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeUVsbGlwc2lzQm94OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lFbGxp
cHNpc0JveDo6cGFpbnRNYXJrdXBCb3gpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5RWxsaXBz
aXNCb3g6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvTGVnYWN5SW5saW5lQm94
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUJveDo6bG9naWNhbEhlaWdodCBj
b25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL0xlZ2FjeUlubGluZUZsb3dCb3guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6YWRkVG9MaW5lKToKKyAgICAgICAg
KFdlYkNvcmU6OnBsYWNlQ2hpbGRJbmxpbmVCb3hlc0luQmxvY2tEaXJlY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0luQmxvY2tEaXJlY3Rp
b24pOgorICAgICAgICAqIHJlbmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnNldExvZ2ljYWxXaWR0aEZvclRleHRSdW4pOgorICAgICAgICAqIHJlbmRlcmlu
Zy9MZWdhY3lSb290SW5saW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJ
bmxpbmVCb3g6OmxpbmVTbmFwQWRqdXN0bWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
ZWdhY3lSb290SW5saW5lQm94Ojphc2NlbnRBbmREZXNjZW50Rm9yQm94IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6OnZlcnRpY2FsUG9zaXRpb25Gb3JCb3gp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9jazo6YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9jazo6aW5saW5lQmxvY2tCYXNlbGluZSBjb25zdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
a0Zsb3c6OmFkanVzdEluaXRpYWxMZXR0ZXJQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9ja0Zsb3c6OmZpcnN0TGluZUJhc2VsaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrRmxvdzo6aW5saW5lQmxvY2tCYXNlbGluZSBjb25zdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnNldElt
YWdlU2l6ZUZvckFsdFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnBhaW50
UmVwbGFjZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjptYXlBZmZlY3RMYXlvdXQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxpbmVCcmVhazo6YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXRlbU9mZnNldEZvckFs
aWdubWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjppdGVtSGVpZ2h0IGNv
bnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMaXN0TWFya2VyOjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdE1h
cmtlcjo6dXBkYXRlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2Vy
Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMaXN0TWFya2VyOjp1cGRhdGVNYXJnaW5zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxp
c3RNYXJrZXI6OnJlbGF0aXZlTWFya2VyUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clJ1YnlSdW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUnVieVJ1bjo6bGF5b3V0Qmxv
Y2spOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0Qm94UGFpbnRlcjo6cGFpbnRGb3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRCb3hQYWludGVyOjpwYWludENvbXBvc2l0aW9uVW5kZXJsaW5lKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRCb3hQYWludGVyOjpjYWxjdWxhdGVEb2N1bWVudE1hcmtlckJvdW5kcyk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0Qm94UGFpbnRlcjo6dGV4dE9yaWdpbkZyb21QYWludFJl
Y3QgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dERlY29yYXRpb25QYWludGVyOjpwYWludEJhY2tncm91
bmREZWNvcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblBhaW50ZXI6
OnBhaW50Rm9yZWdyb3VuZERlY29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHREZWNv
cmF0aW9uUGFpbnRlcjo6cGFpbnRMaW5lVGhyb3VnaCk6CisgICAgICAgICogcmVuZGVyaW5nL1Rl
eHRQYWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRQYWludGVyOjpwYWludFRleHRB
bmRFbXBoYXNpc01hcmtzSWZOZWVkZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9saW5lL0xpbmVJ
bmxpbmVIZWFkZXJzLmg6CisgICAgICAgIChXZWJDb3JlOjpyZXF1aXJlc0xpbmVCb3hGb3JDb250
ZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmF4aXNIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6dG9Vc2Vy
VW5pdHMpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxSb290Ojp2ZXJ0aWNhbFBhcmFtZXRlcnMp
OgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTY3JpcHRzOjp2ZXJ0aWNhbFBhcmFtZXRlcnMg
Y29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFVuZGVyT3Zlcjo6dmVydGljYWxQ
YXJhbWV0ZXJzIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmZvbnRNZXRyaWNzT2ZQcmltYXJ5
Rm9udCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y29tcHV0ZUxpbmVI
ZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmZvbnRNZXRyaWNz
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lVGV4dDo6cG9zaXRpb25Gb3JQb2ludCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnNlbGVjdGlvblJlY3RGb3JUZXh0RnJhZ21lbnQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9u
V2l0aFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50VGV4
dFdpdGhTaGFkb3dzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OmNhbGN1
bGF0ZUJvdW5kYXJpZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJv
eDo6bm9kZUF0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEVu
Z2luZUJhc2VsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRMYXlvdXRFbmdpbmVC
YXNlbGluZTo6Y2FsY3VsYXRlQmFzZWxpbmVTaGlmdCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmU6OmNhbGN1bGF0ZUFsaWdubWVudEJhc2VsaW5l
U2hpZnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dExheW91dEVuZ2luZUJhc2Vs
aW5lOjpjYWxjdWxhdGVHbHlwaEFkdmFuY2VBbmRPcmllbnRhdGlvbiBjb25zdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdUZXh0TWV0cmljczo6U1ZHVGV4dE1ldHJpY3MpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
U1ZHVGV4dFF1ZXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGN1bGF0ZUdseXBoQm91bmRh
cmllcyk6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyRmly
c3RMZXR0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3R5bGVGb3JGaXJzdExldHRlcik6Cisg
ICAgICAgICogc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMpOgorICAgICAgICAqIHN0eWxlL1N0eWxlUmVz
b2x2ZUZvckZvbnRSYXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OnJlc29sdmVGb3JG
b250UmF3KToKKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3RoQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdMZW5ndGhDb250ZXh0Ojpjb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzVG9FWFMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVl
RnJvbUVYU1RvVXNlclVuaXRzIGNvbnN0KToKKwogMjAyMi0wMS0zMSAgU2FpZCBBYm91LUhhbGxh
d2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIFBhdHRlcm4gc2hv
dWxkIGhvbGQgU291cmNlSW1hZ2Ugd2hpY2ggY2FuIGJlIGNvbnZlcnRlZCB0byBhIE5hdGl2ZUlt
YWdlIG9ubHkgd2hlbiBuZWVkZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggM2FmNzJiMzhmNDRmMDE1ZjM0NDRjNTJm
YmQ1ZjYzZGRhYjY1NGYwMS4uMDg3NzAyNDkyOTljN2U2YzYzYjdhNjU5M2ZmZjZhN2FiODdjYzY1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMS0zMSAgTXlsZXMgQy4gTWF4Zmll
bGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBGb250Q2FzY2FkZTo6
Zm9udE1ldHJpY3MoKSBhbmQgUmVuZGVyU3R5bGU6OmZvbnRNZXRyaWNzKCkgdG8gZm9udE1ldHJp
Y3NPZlByaW1hcnlGb250KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNTkzOAorCisgICAgICAgIFJldmlld2VkIGJ5IEFsYW4gQnVqdGFzLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6ZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlKToKKwogMjAy
Mi0wMS0zMSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBb
R1BVIFByb2Nlc3NdIFBhdHRlcm4gc2hvdWxkIGhvbGQgU291cmNlSW1hZ2Ugd2hpY2ggY2FuIGJl
IGNvbnZlcnRlZCB0byBhIE5hdGl2ZUltYWdlIG9ubHkgd2hlbiBuZWVkZWQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwppbmRleCBhOGVjNWRlZGUxMjFmZDcwMDhmNGJmNmRlN2E0NmQwNzZjMTA3
YWEyLi5jZTJkMTY5M2ZlOWJhOTM0NjJkNTU3Nzc4YzU0NjMyZGE2ODgxNDA0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDEtMzEgIE15bGVzIEMu
IE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgRm9udENh
c2NhZGU6OmZvbnRNZXRyaWNzKCkgYW5kIFJlbmRlclN0eWxlOjpmb250TWV0cmljcygpIHRvIGZv
bnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzU5MzgKKworICAgICAgICBSZXZpZXdlZCBieSBBbGFuIEJ1anRh
cy4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbToK
KyAgICAgICAgKCtbV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciBfZGljdGlvbmFyeVBvcHVw
SW5mb0ZvclJhbmdlOmluRnJhbWU6d2l0aExvb2t1cE9wdGlvbnM6aW5kaWNhdG9yT3B0aW9uczp0
cmFuc2l0aW9uOl0pOgorCiAyMDIyLTAxLTMwICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIERlbGV0ZSBydW50aW1lIHByZWZlcmVuY2UgZm9yIGVuYWJsaW5nIGtl
eWdlbiBlbGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0
ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAKaW5kZXggNDZl
ZTMzMDI2M2UxOGJmMDk4YTdlZDU2OTMzM2YyMDhhODE0OTI2ZS4uNGM3YmMxNThiNTM3MTljNmRi
ZWMyMDdlMTIwNzhiNDc2ZjE5Mjg4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0
LmNwcApAQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMgaW50IGJhc2VsaW5lUG9zaXRpb25Gb3JSZW5k
ZXJPYmplY3QoUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QpCiAgICAgLy8gRklYTUU6IFRoaXMg
aW1wbGVtZW50YXRpb24gb2YgYmFzZWxpbmVQb3NpdGlvbiBvcmlnaW5hdGVzIGZyb20gUmVuZGVy
T2JqZWN0LmNwcCBhbmQgd2FzCiAgICAgLy8gcmVtb3ZlZCBpbiByNzAwNzIuIFRoZSBpbXBsZW1l
bnRhdGlvbiBsb29rcyBpbmNvcnJlY3QgdGhvdWdoLCBiZWNhdXNlIHRoaXMgaXMgbm90IHRoZQog
ICAgIC8vIGJhc2VsaW5lIG9mIHRoZSB1bmRlcmx5aW5nIFJlbmRlck9iamVjdCwgYnV0IG9mIHRo
ZSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LgotICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250
TWV0cmljcyA9IHJlbmRlck9iamVjdC0+Zmlyc3RMaW5lU3R5bGUoKS5mb250TWV0cmljcygpOwor
ICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHJlbmRlck9iamVjdC0+Zmlyc3RM
aW5lU3R5bGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsKICAgICByZXR1cm4gZm9udE1l
dHJpY3MuYXNjZW50KCkgKyAocmVuZGVyT2JqZWN0LT5maXJzdExpbmVTdHlsZSgpLmNvbXB1dGVk
TGluZUhlaWdodCgpIC0gZm9udE1ldHJpY3MuaGVpZ2h0KCkpIC8gMjsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKaW5kZXggMDA3Y2FlZDc4ZTEyOTQ3YmJkN2Jj
ZWRkOGJkMTZhMmY5YjE0OTQwOC4uZjY0MjY1YTAzMjc5OWI3ZWYzMzhkNzY5NzQ2Y2MzZjljYWIz
OGZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCkBAIC04MTQs
NyArODE0LDcgQEAgZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTm9uQ2FsY0xlbmd0
aERvdWJsZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb24KICAgICAgICAgLy8gV2UgcmVhbGx5
IG5lZWQgdG8gY29tcHV0ZSBFWCB1c2luZyBmb250TWV0cmljcyBmb3IgdGhlIG9yaWdpbmFsIHNw
ZWNpZmllZFNpemUgYW5kIG5vdCB1c2UKICAgICAgICAgLy8gb3VyIGFjdHVhbCBjb25zdHJ1Y3Rl
ZCByZW5kZXJpbmcgZm9udC4KICAgICAgICAgQVNTRVJUKGNvbnZlcnNpb25EYXRhLnN0eWxlKCkp
OwotICAgICAgICB2YWx1ZSA9IGNvbXB1dGVVbnpvb21lZE5vbkNhbGNMZW5ndGhEb3VibGUocHJp
bWl0aXZlVHlwZSwgdmFsdWUsIGNvbnZlcnNpb25EYXRhLnByb3BlcnR5VG9Db21wdXRlKCksICZj
b252ZXJzaW9uRGF0YS5zdHlsZSgpLT5mb250TWV0cmljcygpLCAmY29udmVyc2lvbkRhdGEuc3R5
bGUoKS0+Zm9udERlc2NyaXB0aW9uKCkpOworICAgICAgICB2YWx1ZSA9IGNvbXB1dGVVbnpvb21l
ZE5vbkNhbGNMZW5ndGhEb3VibGUocHJpbWl0aXZlVHlwZSwgdmFsdWUsIGNvbnZlcnNpb25EYXRh
LnByb3BlcnR5VG9Db21wdXRlKCksICZjb252ZXJzaW9uRGF0YS5zdHlsZSgpLT5mb250TWV0cmlj
c09mUHJpbWFyeUZvbnQoKSwgJmNvbnZlcnNpb25EYXRhLnN0eWxlKCktPmZvbnREZXNjcmlwdGlv
bigpKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkVNUzoK
QEAgLTgyNCw3ICs4MjQsNyBAQCBkb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVOb25D
YWxjTGVuZ3RoRG91YmxlKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbgogICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkNTU19DSFM6CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0lDOgogICAgICAg
ICBBU1NFUlQoY29udmVyc2lvbkRhdGEuc3R5bGUoKSk7Ci0gICAgICAgIHZhbHVlID0gY29tcHV0
ZVVuem9vbWVkTm9uQ2FsY0xlbmd0aERvdWJsZShwcmltaXRpdmVUeXBlLCB2YWx1ZSwgY29udmVy
c2lvbkRhdGEucHJvcGVydHlUb0NvbXB1dGUoKSwgJmNvbnZlcnNpb25EYXRhLnN0eWxlKCktPmZv
bnRNZXRyaWNzKCkpOworICAgICAgICB2YWx1ZSA9IGNvbXB1dGVVbnpvb21lZE5vbkNhbGNMZW5n
dGhEb3VibGUocHJpbWl0aXZlVHlwZSwgdmFsdWUsIGNvbnZlcnNpb25EYXRhLnByb3BlcnR5VG9D
b21wdXRlKCksICZjb252ZXJzaW9uRGF0YS5zdHlsZSgpLT5mb250TWV0cmljc09mUHJpbWFyeUZv
bnQoKSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BYOgpA
QCAtOTE1LDcgKzkxNSw3IEBAIGRvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZU5vbkNh
bGNMZW5ndGhEb3VibGUoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uCiAgICAgICAgIEFTU0VS
VChjb252ZXJzaW9uRGF0YS5zdHlsZSgpKTsKICAgICAgICAgaWYgKGNvbnZlcnNpb25EYXRhLmNv
bXB1dGluZ0xpbmVIZWlnaHQoKSB8fCBjb252ZXJzaW9uRGF0YS5jb21wdXRpbmdGb250U2l6ZSgp
KSB7CiAgICAgICAgICAgICAvLyBUcnkgdG8gZ2V0IHRoZSBwYXJlbnQncyBjb21wdXRlZCBsaW5l
LWhlaWdodCwgb3IgZmFsbCBiYWNrIHRvIHRoZSBpbml0aWFsIGxpbmUtaGVpZ2h0IG9mIHRoaXMg
ZWxlbWVudCdzIGZvbnQgc3BhY2luZy4KLSAgICAgICAgICAgIHZhbHVlICo9IGNvbnZlcnNpb25E
YXRhLnBhcmVudFN0eWxlKCkgPyBjb252ZXJzaW9uRGF0YS5wYXJlbnRTdHlsZSgpLT5jb21wdXRl
ZExpbmVIZWlnaHQoKSA6IGNvbnZlcnNpb25EYXRhLnN0eWxlKCktPmZvbnRNZXRyaWNzKCkubGlu
ZVNwYWNpbmcoKTsKKyAgICAgICAgICAgIHZhbHVlICo9IGNvbnZlcnNpb25EYXRhLnBhcmVudFN0
eWxlKCkgPyBjb252ZXJzaW9uRGF0YS5wYXJlbnRTdHlsZSgpLT5jb21wdXRlZExpbmVIZWlnaHQo
KSA6IGNvbnZlcnNpb25EYXRhLnN0eWxlKCktPmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmxp
bmVTcGFjaW5nKCk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgdmFsdWUgKj0gY29udmVy
c2lvbkRhdGEuc3R5bGUoKS0+Y29tcHV0ZWRMaW5lSGVpZ2h0KCk7CiAgICAgICAgIGJyZWFrOwpA
QCAtOTUxLDkgKzk1MSw5IEBAIGJvb2wgQ1NTUHJpbWl0aXZlVmFsdWU6OmVxdWFsRm9yTGVuZ3Ro
UmVzb2x1dGlvbihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGVBLCBjb25zCiAgICAgaWYgKHN0eWxl
QS5mb250RGVzY3JpcHRpb24oKS5zcGVjaWZpZWRTaXplKCkgIT0gc3R5bGVCLmZvbnREZXNjcmlw
dGlvbigpLnNwZWNpZmllZFNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYg
KHN0eWxlQS5mb250TWV0cmljcygpLnhIZWlnaHQoKSAhPSBzdHlsZUIuZm9udE1ldHJpY3MoKS54
SGVpZ2h0KCkpCisgICAgaWYgKHN0eWxlQS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS54SGVp
Z2h0KCkgIT0gc3R5bGVCLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLnhIZWlnaHQoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChzdHlsZUEuZm9udE1ldHJpY3MoKS56ZXJvV2lk
dGgoKSAhPSBzdHlsZUIuZm9udE1ldHJpY3MoKS56ZXJvV2lkdGgoKSkKKyAgICBpZiAoc3R5bGVB
LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLnplcm9XaWR0aCgpICE9IHN0eWxlQi5mb250TWV0
cmljc09mUHJpbWFyeUZvbnQoKS56ZXJvV2lkdGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgaWYgKHN0eWxlQS56b29tKCkgIT0gc3R5bGVCLnpvb20oKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hQYWludGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hQYWludGVyLmNwcAppbmRleCAyYzYzYWU4YzRh
ZWViZWYwYzEwYTZlZDI1MThkNTBhYzNiZTI1Yzc0Li41OTVlMGNlNTc0YzE0MWYyYWMwMGVkZWJj
NzE3MTc5MWYwMWUyMjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9E
aXNwbGF5Qm94UGFpbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlz
cGxheUJveFBhaW50ZXIuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgQm94UGFpbnRlcjo6cGFp
bnRCb3hDb250ZW50KGNvbnN0IEJveCYgYm94LCBQYWludGluZ0NvbnRleHQmIHBhaW50aW5nQ29u
dGV4CiAgICAgICAgIHBhaW50aW5nQ29udGV4dC5jb250ZXh0LnNldEZpbGxDb2xvcihzdHlsZS5j
b2xvcigpKTsKIAogICAgICAgICAvLyBGSVhNRTogQWRkIG5vbi1iYXNlbGluZSBhbGlnbiBwYWlu
dGluZwotICAgICAgICBhdXRvIGJhc2VsaW5lID0gdGV4dFJlY3QueSgpICsgc3R5bGUuZm9udE1l
dHJpY3MoKS5hc2NlbnQoKTsKKyAgICAgICAgYXV0byBiYXNlbGluZSA9IHRleHRSZWN0LnkoKSAr
IHN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudCgpOwogICAgICAgICBhdXRv
IGV4cGFuc2lvbiA9IHRleHRCb3guZXhwYW5zaW9uKCk7CiAKICAgICAgICAgYXV0byB0ZXh0UnVu
ID0gVGV4dFJ1biB7IHRleHRCb3gudGV4dCgpLm9yaWdpbmFsQ29udGVudCgpLCB0ZXh0UmVjdC54
KCksIGV4cGFuc2lvbi5ob3Jpem9udGFsRXhwYW5zaW9uLCBleHBhbnNpb24uYmVoYXZpb3IgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlTdHlsZS5oIGIv
U291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVN0eWxlLmgKaW5kZXggN2VlMzBhM2Ux
MzEyOTRhM2Q1NWFjZWY0Y2FhMGE3MWMzZDEwYWQ1OC4uZmRiNGEyZTQ1NjgzZTViZTliNTAyZmZh
NzFhYTZmZTk4MTI5NjBjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3Mv
RGlzcGxheVN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVN0
eWxlLmgKQEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogICAgIGJvb2wgcGFydGljaXBhdGVzSW5a
T3JkZXJTb3J0aW5nKCkgY29uc3QgeyByZXR1cm4gaXNQb3NpdGlvbmVkKCkgfHwgaXNTdGFja2lu
Z0NvbnRleHQoKTsgfQogCiAgICAgY29uc3QgRm9udENhc2NhZGUmIGZvbnRDYXNjYWRlKCkgY29u
c3QgeyByZXR1cm4gbV9mb250Q2FzY2FkZTsgfQotICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250
TWV0cmljcygpIGNvbnN0IHsgcmV0dXJuIG1fZm9udENhc2NhZGUuZm9udE1ldHJpY3MoKTsgfQor
ICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljc09mUHJpbWFyeUZvbnQoKSBjb25zdCB7
IHJldHVybiBtX2ZvbnRDYXNjYWRlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOyB9CiAgICAg
CiAgICAgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BhY2l0eTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCBkMDc2MWVlYzlmM2MyODU5
M2EyODYzYzAwYzkzNTdhMWY3NmE3ODJlLi4wNWM1ZmM0ZDkyNmMxOTUwZDU1YjZiZTA3NjBmMjdm
MmU3OWJhZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAg
LTIxNzgsNyArMjE3OCw3IEBAIFJlbmRlclN0eWxlIEhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZUlu
bmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKICAgICB9CiAKICAgICAvLyBE
byBub3QgYWxsb3cgbGluZS1oZWlnaHQgdG8gYmUgc21hbGxlciB0aGFuIG91ciBkZWZhdWx0Lgot
ICAgIGlmICh0ZXh0QmxvY2tTdHlsZS5mb250TWV0cmljcygpLmxpbmVTcGFjaW5nKCkgPiBzdHls
ZS5jb21wdXRlZExpbmVIZWlnaHQoKSkKKyAgICBpZiAodGV4dEJsb2NrU3R5bGUuZm9udE1ldHJp
Y3NPZlByaW1hcnlGb250KCkubGluZVNwYWNpbmcoKSA+IHN0eWxlLmNvbXB1dGVkTGluZUhlaWdo
dCgpKQogICAgICAgICB0ZXh0QmxvY2tTdHlsZS5zZXRMaW5lSGVpZ2h0KFJlbmRlclN0eWxlOjpp
bml0aWFsTGluZUhlaWdodCgpKTsKIAogICAgIHJldHVybiB0ZXh0QmxvY2tTdHlsZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZS5jcHAKaW5kZXggYjg5ZTc3ZmI2MDBlMGVjYTkzZjAxOTI0MzllNDEwNzNjOTVh
ZDEzOC4uZDllY2Y2NmQ2ZDZhMTRlZWMzN2ZlMTJmZmM5MWY3N2YyZWIxZjgwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZS5jcHAKQEAgLTQwNCw5ICs0MDQsOSBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2U6OkZvbnRQcm94eTo6aW5pdGlhbGl6ZShGb250U2VsZWN0b3ImIGZvbnRTZWxl
YwogICAgIG1fZm9udC5mb250U2VsZWN0b3IoKS0+cmVnaXN0ZXJGb3JJbnZhbGlkYXRpb25DYWxs
YmFja3MoKnRoaXMpOwogfQogCi1jb25zdCBGb250TWV0cmljcyYgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZTo6Rm9udFByb3h5Ojpmb250TWV0cmljcygpIGNvbnN0Citjb25zdCBGb250TWV0
cmljcyYgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Rm9udFByb3h5Ojpmb250TWV0cmlj
c09mUHJpbWFyeUZvbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX2ZvbnQuZm9udE1ldHJpY3Mo
KTsKKyAgICByZXR1cm4gbV9mb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwogfQogCiBj
b25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
OjpGb250UHJveHk6OmZvbnREZXNjcmlwdGlvbigpIGNvbnN0CkBAIC0yNDA3LDcgKzI0MDcsNyBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdUZXh0VW5jaGVja2VkKGNv
bnN0IFRleHRSdW4mIHRleHRSdW4sIGRvdQogewogICAgIGF1dG8qIGMgPSBkcmF3aW5nQ29udGV4
dCgpOwogICAgIGF1dG8mIGZvbnRQcm94eSA9ICp0aGlzLT5mb250UHJveHkoKTsKLSAgICBjb25z
dCBhdXRvJiBmb250TWV0cmljcyA9IGZvbnRQcm94eS5mb250TWV0cmljcygpOworICAgIGNvbnN0
IGF1dG8mIGZvbnRNZXRyaWNzID0gZm9udFByb3h5LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgp
OwogCiAgICAgLy8gRklYTUU6IE5lZWQgdG8gdHVybiBvZmYgZm9udCBzbW9vdGhpbmcuCiAKQEAg
LTI1MzAsNyArMjUzMCw3IEBAIFJlZjxUZXh0TWV0cmljcz4gQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZTo6bWVhc3VyZVRleHRJbnRlcm5hbChjb25zdCBUZXh0UnVuCiAgICAgUmVmPFRleHRN
ZXRyaWNzPiBtZXRyaWNzID0gVGV4dE1ldHJpY3M6OmNyZWF0ZSgpOwogCiAgICAgYXV0byYgZm9u
dCA9ICpmb250UHJveHkoKTsKLSAgICBhdXRvJiBmb250TWV0cmljcyA9IGZvbnQuZm9udE1ldHJp
Y3MoKTsKKyAgICBhdXRvJiBmb250TWV0cmljcyA9IGZvbnQuZm9udE1ldHJpY3NPZlByaW1hcnlG
b250KCk7CiAKICAgICBHbHlwaE92ZXJmbG93IGdseXBoT3ZlcmZsb3c7CiAgICAgZ2x5cGhPdmVy
Zmxvdy5jb21wdXRlQm91bmRzID0gdHJ1ZTsKQEAgLTI1NTcsNyArMjU1Nyw3IEBAIFJlZjxUZXh0
TWV0cmljcz4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6bWVhc3VyZVRleHRJbnRlcm5h
bChjb25zdCBUZXh0UnVuCiAKIEZsb2F0UG9pbnQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZTo6dGV4dE9mZnNldChmbG9hdCB3aWR0aCwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCiB7Ci0g
ICAgYXV0byYgZm9udE1ldHJpY3MgPSBmb250UHJveHkoKS0+Zm9udE1ldHJpY3MoKTsKKyAgICBh
dXRvJiBmb250TWV0cmljcyA9IGZvbnRQcm94eSgpLT5mb250TWV0cmljc09mUHJpbWFyeUZvbnQo
KTsKICAgICBGbG9hdFBvaW50IG9mZnNldDsKIAogICAgIHN3aXRjaCAoc3RhdGUoKS50ZXh0QmFz
ZWxpbmUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaAppbmRleCBkNGFlMGU0MTBjYzk1M2U5YjZhODdlNDI2
YzNlOWYzZWZmMzQyNDQ2Li5kNGM1YTRkN2IzMDBiZTRlOTRjYmJiZGQ4NjQyMDA4ZDNhMGNkYzhi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZS5oCkBAIC0yMzQsNyArMjM0LDcgQEAgcHVibGljOgogCiAgICAg
ICAgIGJvb2wgcmVhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2ZvbnQuZm9udFNlbGVjdG9yKCk7
IH0KICAgICAgICAgdm9pZCBpbml0aWFsaXplKEZvbnRTZWxlY3RvciYsIGNvbnN0IEZvbnRDYXNj
YWRlJik7Ci0gICAgICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcygpIGNvbnN0Owor
ICAgICAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkgY29u
c3Q7CiAgICAgICAgIGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlv
bigpIGNvbnN0OwogICAgICAgICBmbG9hdCB3aWR0aChjb25zdCBUZXh0UnVuJiwgR2x5cGhPdmVy
ZmxvdyogPSAwKSBjb25zdDsKICAgICAgICAgdm9pZCBkcmF3QmlkaVRleHQoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250Q2FzY2FkZTo6Q3Vz
dG9tRm9udE5vdFJlYWR5QWN0aW9uKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JPdmVybGF5LmNwcAppbmRleCAyYTA0ZjAwMDgzYmZjMGYzY2ViNmQzYWJmMDg3
ZWU4MzUyZmQxNTRiLi41MGFjZmFjNDgzYjQ4MzEzZGIwZmZjNWQxZDM3Mzk2MjViYjM3NDEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCkBAIC04
NjksNyArODY5LDcgQEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpkcmF3UnVsZXJzKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgSW5zcGVjdG9yT3ZlcmwKIAogICAgICAgICAgICAgICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgdmVydGljYWxMYWJlbFN0YXRlU2F2ZXIoY29udGV4
dCk7CiAgICAgICAgICAgICAgICAgY29udGV4dC50cmFuc2xhdGUoem9vbSh4KSArIDAuNWYsIHNj
cm9sbFkpOwotICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd1RleHQoZm9udCwgVGV4dFJ1bihT
dHJpbmc6Om51bWJlcih4KSksIHsgMiwgZHJhd1RvcEVkZ2UgPyBydWxlckxhYmVsU2l6ZSA6IHJ1
bGVyTGFiZWxTaXplIC0gcnVsZXJTaXplICsgZm9udC5mb250TWV0cmljcygpLmhlaWdodCgpIC0g
MS4wZiB9KTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIFRleHRSdW4o
U3RyaW5nOjpudW1iZXIoeCkpLCB7IDIsIGRyYXdUb3BFZGdlID8gcnVsZXJMYWJlbFNpemUgOiBy
dWxlckxhYmVsU2l6ZSAtIHJ1bGVyU2l6ZSArIGZvbnQuZm9udE1ldHJpY3NPZlByaW1hcnlGb250
KCkuaGVpZ2h0KCkgLSAxLjBmIH0pOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTky
OCw3ICs5MjgsNyBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmRyYXdSdWxlcnMoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnNwZWN0b3JPdmVybAogICAgICAgICBjb25zdCBmbG9h
dCBwYWRkaW5nID0gMjsKICAgICAgICAgY29uc3QgZmxvYXQgcmFkaXVzID0gNDsKICAgICAgICAg
ZmxvYXQgZm9udFdpZHRoID0gZm9udC53aWR0aCh2aWV3cG9ydFRleHRSdW4pOwotICAgICAgICBm
bG9hdCBmb250SGVpZ2h0ID0gZm9udC5mb250TWV0cmljcygpLmZsb2F0SGVpZ2h0KCk7CisgICAg
ICAgIGZsb2F0IGZvbnRIZWlnaHQgPSBmb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmZs
b2F0SGVpZ2h0KCk7CiAgICAgICAgIEZsb2F0UmVjdCB2aWV3cG9ydFRleHRSZWN0KG1hcmdpbiwg
bWFyZ2luLCAocGFkZGluZyAqIDIuMGYpICsgZm9udFdpZHRoLCAocGFkZGluZyAqIDIuMGYpICsg
Zm9udEhlaWdodCk7CiAgICAgICAgIGNvbnN0IGF1dG8gdmlld3BvcnRUZXh0UmVjdENlbnRlciA9
IHZpZXdwb3J0VGV4dFJlY3QuY2VudGVyKCk7CiAKQEAgLTk2Niw3ICs5NjYsNyBAQCB2b2lkIElu
c3BlY3Rvck92ZXJsYXk6OmRyYXdSdWxlcnMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBJbnNwZWN0b3JPdmVybAogICAgICAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJv
dW5kZWRSZWN0KHZpZXdwb3J0VGV4dFJlY3QsIEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpKHJhZGl1
cykpLCBydWxlckJhY2tncm91bmRDb2xvcik7CiAKICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29s
b3IoQ29sb3I6OmJsYWNrKTsKLSAgICAgICAgY29udGV4dC5kcmF3VGV4dChmb250LCB2aWV3cG9y
dFRleHRSdW4sIHttYXJnaW4gKyAgcGFkZGluZywgbWFyZ2luICsgcGFkZGluZyArIGZvbnRIZWln
aHQgLSBmb250LmZvbnRNZXRyaWNzKCkuZGVzY2VudCgpIH0pOworICAgICAgICBjb250ZXh0LmRy
YXdUZXh0KGZvbnQsIHZpZXdwb3J0VGV4dFJ1biwgeyBtYXJnaW4gKyAgcGFkZGluZywgbWFyZ2lu
ICsgcGFkZGluZyArIGZvbnRIZWlnaHQgLSBmb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgp
LmRlc2NlbnQoKSB9KTsKICAgICB9CiB9CiAKQEAgLTEwNDAsNyArMTA0MCw3IEBAIFBhdGggSW5z
cGVjdG9yT3ZlcmxheTo6ZHJhd0VsZW1lbnRUaXRsZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IE5vZGUmIG5vZGUsIGNvCiAgICAgRm9udENhc2NhZGUgZm9udChXVEZNb3ZlKGZvbnREZXNjcmlw
dGlvbiksIDAsIDApOwogICAgIGZvbnQudXBkYXRlKG51bGxwdHIpOwogCi0gICAgaW50IGZvbnRI
ZWlnaHQgPSBmb250LmZvbnRNZXRyaWNzKCkuaGVpZ2h0KCk7CisgICAgaW50IGZvbnRIZWlnaHQg
PSBmb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmhlaWdodCgpOwogCiAgICAgZmxvYXQg
ZWxlbWVudERhdGFXaWR0aDsKICAgICBmbG9hdCBlbGVtZW50RGF0YUhlaWdodCA9IGZvbnRIZWln
aHQ7CkBAIC0xMzQ4LDcgKzEzNDgsNyBAQCBzdGF0aWMgRmxvYXRTaXplIGV4cGVjdGVkU2l6ZUZv
ckxheW91dExhYmVsKFN0cmluZyBsYWJlbCwgSW5zcGVjdG9yT3ZlcmxheTo6TGFiZQogewogICAg
IGF1dG8gZm9udCA9IGZvbnRGb3JMYXlvdXRMYWJlbCgpOwogCi0gICAgZmxvYXQgdGV4dEhlaWdo
dCA9IGZvbnQuZm9udE1ldHJpY3MoKS5mbG9hdEhlaWdodCgpOworICAgIGZsb2F0IHRleHRIZWln
aHQgPSBmb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmZsb2F0SGVpZ2h0KCk7CiAgICAg
ZmxvYXQgdGV4dFdpZHRoID0gZm9udC53aWR0aChUZXh0UnVuKGxhYmVsKSk7CiAgICAgaWYgKG1h
eGltdW1XaWR0aCAmJiB0ZXh0V2lkdGggKyAobGF5b3V0TGFiZWxQYWRkaW5nICogMikgPiBtYXhp
bXVtV2lkdGgpCiAgICAgICAgIHRleHRXaWR0aCA9IG1heGltdW1XaWR0aDsKQEAgLTEzNzYsOCAr
MTM3Niw4IEBAIHN0YXRpYyB2b2lkIGRyYXdMYXlvdXRMYWJlbChHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIFN0cmluZyBsYWJlbCwgRmxvYXRQb2ludCBwCiAgICAgY29udGV4dC50cmFuc2xhdGUo
cG9pbnQpOwogCiAgICAgYXV0byBmb250ID0gZm9udEZvckxheW91dExhYmVsKCk7Ci0gICAgZmxv
YXQgdGV4dEhlaWdodCA9IGZvbnQuZm9udE1ldHJpY3MoKS5mbG9hdEhlaWdodCgpOwotICAgIGZs
b2F0IHRleHREZXNjZW50ID0gZm9udC5mb250TWV0cmljcygpLmZsb2F0RGVzY2VudCgpOworICAg
IGZsb2F0IHRleHRIZWlnaHQgPSBmb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmZsb2F0
SGVpZ2h0KCk7CisgICAgZmxvYXQgdGV4dERlc2NlbnQgPSBmb250LmZvbnRNZXRyaWNzT2ZQcmlt
YXJ5Rm9udCgpLmZsb2F0RGVzY2VudCgpOwogICAgIAogICAgIGZsb2F0IHRleHRXaWR0aCA9IGZv
bnQud2lkdGgoVGV4dFJ1bihsYWJlbCkpOwogICAgIGlmIChtYXhpbXVtV2lkdGggJiYgdGV4dFdp
ZHRoICsgKGxheW91dExhYmVsUGFkZGluZyAqIDIpID4gbWF4aW11bVdpZHRoKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVGb3JtYXR0aW5nUXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdRdWlya3MuY3BwCmluZGV4IDljOGU4Yzlh
ODc3MjAyNzg3YjA1ZWIwM2FmYjczMzgxNDNjNjUwYzkuLjU5ZTg3YTNhYzUyNDRkMDg5OTY3NTNh
YjVjYmE3Y2ZjODA0NTQxOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdRdWlya3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1h
dHRpbmdRdWlya3MuY3BwCkBAIC00NCw3ICs0NCw3IEBAIElubGluZUxheW91dFVuaXQgSW5saW5l
Rm9ybWF0dGluZ1F1aXJrczo6aW5pdGlhbExpbmVIZWlnaHQoKSBjb25zdAogICAgIEFTU0VSVCgh
bGF5b3V0U3RhdGUoKS5pblN0YW5kYXJkc01vZGUoKSk7CiAgICAgLy8gTmVnYXRpdmUgbGluZUhl
aWdodCB2YWx1ZSBtZWFucyB0aGUgbGluZS1oZWlnaHQgaXMgbm90IHNldAogICAgIGF1dG8mIHJv
b3RTdHlsZSA9IGZvcm1hdHRpbmdDb250ZXh0KCkucm9vdCgpLnN0eWxlKCk7Ci0gICAgcmV0dXJu
IHJvb3RTdHlsZS5saW5lSGVpZ2h0KCkuaXNOZWdhdGl2ZSgpID8gcm9vdFN0eWxlLmZvbnRNZXRy
aWNzKCkuZmxvYXRIZWlnaHQoKSA6IHJvb3RTdHlsZS5jb21wdXRlZExpbmVIZWlnaHQoKTsKKyAg
ICByZXR1cm4gcm9vdFN0eWxlLmxpbmVIZWlnaHQoKS5pc05lZ2F0aXZlKCkgPyByb290U3R5bGUu
Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuZmxvYXRIZWlnaHQoKSA6IHJvb3RTdHlsZS5jb21w
dXRlZExpbmVIZWlnaHQoKTsKIH0KIAogYm9vbCBJbmxpbmVGb3JtYXR0aW5nUXVpcmtzOjppbmxp
bmVMZXZlbEJveEFmZmVjdHNMaW5lQm94KGNvbnN0IElubGluZUxldmVsQm94JiBpbmxpbmVMZXZl
bEJveCwgY29uc3QgTGluZUJveCYgbGluZUJveCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxldmVsQm94Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVM
ZXZlbEJveC5oCmluZGV4IDUyOWEyMThlNTJkNTEwODEyZDhlZTk3ZTVjZjFhM2I0ODRjMDUxMDQu
LmQ3MDAzNDQ1N2FiZGRlZGQxMDY0ODkxZTdkNzUxN2U3ZmU3Zjc1MGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxldmVs
Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lTGV2ZWxCb3guaApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgVmVydGlj
YWxBbGlnbm1lbnQgdmVydGljYWxBbGlnbigpIGNvbnN0OwogICAgIElubGluZUxheW91dFVuaXQg
cHJlZmVycmVkTGluZUhlaWdodCgpIGNvbnN0OwogICAgIGJvb2wgaXNQcmVmZXJyZWRMaW5lSGVp
Z2h0Rm9udE1ldHJpY3NCYXNlZCgpIGNvbnN0OwotICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBwcmlt
YXJ5Rm9udE1ldHJpY3MoKSBjb25zdDsKKyAgICBjb25zdCBGb250TWV0cmljcyYgcHJpbWFyeWZv
bnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpIGNvbnN0OwogICAgIElubGluZUxheW91dFVuaXQgZm9u
dFNpemUoKSBjb25zdDsKIAogICAgIGJvb2wgaXNJbmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBt
X3R5cGUgPT0gVHlwZTo6SW5saW5lQm94IHx8IGlzUm9vdElubGluZUJveCgpIHx8IGlzTGluZVNw
YW5uaW5nSW5saW5lQm94KCk7IH0KQEAgLTE1NCw3ICsxNTQsNyBAQCBpbmxpbmUgSW5saW5lTGV2
ZWxCb3g6OklubGluZUxldmVsQm94KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBSZW5kZXJT
dHlsZSYgcwogICAgICwgbV9pc0ZpcnN0V2l0aGluTGF5b3V0Qm94KHBvc2l0aW9uV2l0aGluTGF5
b3V0Qm94LmNvbnRhaW5zKFBvc2l0aW9uV2l0aGluTGF5b3V0Qm94OjpGaXJzdCkpCiAgICAgLCBt
X2lzTGFzdFdpdGhpbkxheW91dEJveChwb3NpdGlvbldpdGhpbkxheW91dEJveC5jb250YWlucyhQ
b3NpdGlvbldpdGhpbkxheW91dEJveDo6TGFzdCkpCiAgICAgLCBtX3R5cGUodHlwZSkKLSAgICAs
IG1fc3R5bGUoeyBzdHlsZS5mb250Q2FzY2FkZSgpLnByaW1hcnlGb250KCkuZm9udE1ldHJpY3Mo
KSwgc3R5bGUubGluZUhlaWdodCgpLCBJbmxpbmVMYXlvdXRVbml0KHN0eWxlLmZvbnRDYXNjYWRl
KCkuZm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRQaXhlbFNpemUoKSksIHsgfSB9KQorICAgICwg
bV9zdHlsZSh7IHN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCks
IHN0eWxlLmxpbmVIZWlnaHQoKSwgSW5saW5lTGF5b3V0VW5pdChzdHlsZS5mb250Q2FzY2FkZSgp
LmZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkUGl4ZWxTaXplKCkpLCB7IH0gfSkKIHsKICAgICBt
X3N0eWxlLnZlcnRpY2FsQWxpZ25tZW50LnR5cGUgPSBzdHlsZS52ZXJ0aWNhbEFsaWduKCk7CiAg
ICAgaWYgKG1fc3R5bGUudmVydGljYWxBbGlnbm1lbnQudHlwZSA9PSBWZXJ0aWNhbEFsaWduOjpM
ZW5ndGgpCkBAIC0xNzIsNyArMTcyLDcgQEAgaW5saW5lIElubGluZUxheW91dFVuaXQgSW5saW5l
TGV2ZWxCb3g6OnByZWZlcnJlZExpbmVIZWlnaHQoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBS
ZW1vdmUgaW50ZWdyYWwgZmxvb3Jpbmcgd2hlbiBsZWdhY3kgbGluZSBsYXlvdXQgc3RvcHMgdXNp
bmcgaXQuCiAgICAgaWYgKGlzUHJlZmVycmVkTGluZUhlaWdodEZvbnRNZXRyaWNzQmFzZWQoKSkK
LSAgICAgICAgcmV0dXJuIHByaW1hcnlGb250TWV0cmljcygpLmxpbmVTcGFjaW5nKCk7CisgICAg
ICAgIHJldHVybiBwcmltYXJ5Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkubGluZVNwYWNpbmco
KTsKIAogICAgIGlmIChtX3N0eWxlLmxpbmVIZWlnaHQuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkp
CiAgICAgICAgIHJldHVybiBmbG9vcmYobWluaW11bVZhbHVlRm9yTGVuZ3RoKG1fc3R5bGUubGlu
ZUhlaWdodCwgZm9udFNpemUoKSkpOwpAQCAtMTk1LDcgKzE5NSw3IEBAIGlubGluZSBib29sIElu
bGluZUxldmVsQm94Ojppc1ByZWZlcnJlZExpbmVIZWlnaHRGb250TWV0cmljc0Jhc2VkKCkgY29u
c3QKICAgICByZXR1cm4gbV9zdHlsZS5saW5lSGVpZ2h0LmlzTmVnYXRpdmUoKTsKIH0KIAotaW5s
aW5lIGNvbnN0IEZvbnRNZXRyaWNzJiBJbmxpbmVMZXZlbEJveDo6cHJpbWFyeUZvbnRNZXRyaWNz
KCkgY29uc3QKK2lubGluZSBjb25zdCBGb250TWV0cmljcyYgSW5saW5lTGV2ZWxCb3g6OnByaW1h
cnlmb250TWV0cmljc09mUHJpbWFyeUZvbnQoKSBjb25zdAogewogICAgIHJldHVybiBtX3N0eWxl
LnByaW1hcnlGb250TWV0cmljczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveC5jcHAK
aW5kZXggNmUyMDg2MDEwOWRhZGUxZDQ3ZGZjNjVmYmI4NGIzMzY0Yjc4NTJkNi4uNmQyMzY1Mzdk
YzU2MTNhOTVhMGRjN2Y5MjZlMzM5MjM5NjYwNTU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGluZUJveC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgSW5saW5lUmVjdCBMaW5lQm94Ojpsb2dpY2Fs
UmVjdEZvclRleHRSdW4oY29uc3QgTGluZTo6UnVuJiBydW4pIGNvbnN0CiAgICAgQVNTRVJUKHJ1
bi5pc1RleHQoKSB8fCBydW4uaXNTb2Z0TGluZUJyZWFrKCkpOwogICAgIGF1dG8qIHBhcmVudElu
bGluZUJveCA9ICZpbmxpbmVMZXZlbEJveEZvckxheW91dEJveChydW4ubGF5b3V0Qm94KCkucGFy
ZW50KCkpOwogICAgIEFTU0VSVChwYXJlbnRJbmxpbmVCb3gtPmlzSW5saW5lQm94KCkpOwotICAg
IGF1dG8mIGZvbnRNZXRyaWNzID0gcGFyZW50SW5saW5lQm94LT5wcmltYXJ5Rm9udE1ldHJpY3Mo
KTsKKyAgICBhdXRvJiBmb250TWV0cmljcyA9IHBhcmVudElubGluZUJveC0+cHJpbWFyeWZvbnRN
ZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwogICAgIGF1dG8gcnVubG9naWNhbFRvcCA9IHBhcmVudElu
bGluZUJveC0+bG9naWNhbFRvcCgpICsgcGFyZW50SW5saW5lQm94LT5iYXNlbGluZSgpIC0gZm9u
dE1ldHJpY3MuYXNjZW50KCk7CiAKICAgICB3aGlsZSAocGFyZW50SW5saW5lQm94ICE9ICZtX3Jv
b3RJbmxpbmVCb3ggJiYgIXBhcmVudElubGluZUJveC0+aGFzTGluZUJveFJlbGF0aXZlQWxpZ25t
ZW50KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcApp
bmRleCA5MWYzMGQ1ZWJjYjcyNDFiYThlMTU2YmE3OWY0YzUzNmFkMGVkMzA2Li5kNDU3MGJmZDY4
Zjg4MDc0NTFjMjIyZTNjMWExOGFjMDFjOTUyYjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lTGluZUJveEJ1aWxkZXIuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAgdm9pZCBMaW5lQm94
QnVpbGRlcjo6c2V0VmVydGljYWxHZW9tZXRyeUZvckxpbmVCcmVha0JveChJbmxpbmVMZXZlbEJv
eCYgbGluZUJyZWEKICAgICBBU1NFUlQobGluZUJyZWFrQm94LmlzTGluZUJyZWFrQm94KCkpOwog
ICAgIEFTU0VSVChwYXJlbnRJbmxpbmVCb3guaXNJbmxpbmVCb3goKSk7CiAKLSAgICBhdXRvJiBm
b250TWV0cmljcyA9IHBhcmVudElubGluZUJveC5wcmltYXJ5Rm9udE1ldHJpY3MoKTsKKyAgICBh
dXRvJiBmb250TWV0cmljcyA9IHBhcmVudElubGluZUJveC5wcmltYXJ5Zm9udE1ldHJpY3NPZlBy
aW1hcnlGb250KCk7CiAgICAgYXV0byBwcmVmZXJyZWRMaW5lSGVpZ2h0ID0gcGFyZW50SW5saW5l
Qm94LmlzUHJlZmVycmVkTGluZUhlaWdodEZvbnRNZXRyaWNzQmFzZWQoKSA/IHN0ZDo6bnVsbG9w
dCA6IHN0ZDo6bWFrZV9vcHRpb25hbChwYXJlbnRJbmxpbmVCb3gucHJlZmVycmVkTGluZUhlaWdo
dCgpKTsKICAgICBhdXRvIGhlaWdodEFuZExheW91dEJvdW5kcyA9IGNvbXB1dGVkSGVpZ2h0QW5k
TGF5b3V0Qm91bmRzKGZvbnRNZXRyaWNzLCBwcmVmZXJyZWRMaW5lSGVpZ2h0KTsKIApAQCAtMTk0
LDcgKzE5NCw3IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OnNldEluaXRpYWxWZXJ0aWNhbEdlb21l
dHJ5Rm9ySW5saW5lQm94KElubGluZUxldmVsQm94JiBpbmxpCiAgICAgLy8gV2UgbmVlZCBmbG9v
ci9jZWlsIHRvIG1hdGNoIGxlZ2FjeSBsYXlvdXQgaW50ZWdyYWwgcG9zaXRpb25pbmcuCiAgICAg
QVNTRVJUKGlubGluZUJveC5pc0lubGluZUJveCgpKTsKIAotICAgIGF1dG8mIGZvbnRNZXRyaWNz
ID0gaW5saW5lQm94LnByaW1hcnlGb250TWV0cmljcygpOworICAgIGF1dG8mIGZvbnRNZXRyaWNz
ID0gaW5saW5lQm94LnByaW1hcnlmb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsKICAgICBhdXRv
IHByZWZlcnJlZExpbmVIZWlnaHQgPSBpbmxpbmVCb3guaXNQcmVmZXJyZWRMaW5lSGVpZ2h0Rm9u
dE1ldHJpY3NCYXNlZCgpID8gc3RkOjpudWxsb3B0IDogc3RkOjptYWtlX29wdGlvbmFsKGlubGlu
ZUJveC5wcmVmZXJyZWRMaW5lSGVpZ2h0KCkpOwogICAgIGF1dG8gaGVpZ2h0QW5kTGF5b3V0Qm91
bmRzID0gY29tcHV0ZWRIZWlnaHRBbmRMYXlvdXRCb3VuZHMoZm9udE1ldHJpY3MsIHByZWZlcnJl
ZExpbmVIZWlnaHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94VmVydGljYWxBbGlnbmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVC
b3hWZXJ0aWNhbEFsaWduZXIuY3BwCmluZGV4IDE4MjM1MDg0Y2I5Mzc1MTA1OGE0MzQ5ZGI5ZjYz
OTQ3NWU1OTJjNTIuLjNhNzM1ZmMwYTE0YmJhYzk5MzJmZTBmY2QwZjhiOGQxYzk1YzI1OGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWdu
ZXIuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgSW5saW5lTGF5b3V0VW5pdCBMaW5lQm94VmVydGlj
YWxBbGlnbmVyOjpjb21wdXRlTGluZUJveExvZ2ljYWxIZWlnaHQoTGluZUJveCYgbGkKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6TWlk
ZGxlOiB7Ci0gICAgICAgICAgICBhdXRvIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxp
bmUgPSBpbmxpbmVMZXZlbEJveC5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKSAvIDIgKyBwYXJlbnRJ
bmxpbmVCb3gucHJpbWFyeUZvbnRNZXRyaWNzKCkueEhlaWdodCgpIC8gMjsKKyAgICAgICAgICAg
IGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGlubGluZUxldmVsQm94
LmxheW91dEJvdW5kcygpLmhlaWdodCgpIC8gMiArIHBhcmVudElubGluZUJveC5wcmltYXJ5Zm9u
dE1ldHJpY3NPZlByaW1hcnlGb250KCkueEhlaWdodCgpIC8gMjsKICAgICAgICAgICAgIGxvZ2lj
YWxUb3AgPSBwYXJlbnRJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCkuYXNjZW50IC0gbG9naWNhbFRv
cE9mZnNldEZyb21QYXJlbnRCYXNlbGluZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CkBAIC0yNDIsNyArMjQyLDcgQEAgdm9pZCBMaW5lQm94VmVydGljYWxBbGlnbmVyOjpjb21wdXRl
Um9vdElubGluZUJveFZlcnRpY2FsUG9zaXRpb24oTGluZUJveCYgbGluZUIKICAgICAgICAgICAg
ICAgICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IHsgfTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6TWlkZGxlOiB7Ci0g
ICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0g
KGlubGluZUxldmVsQm94LmxheW91dEJvdW5kcygpLmhlaWdodCgpIC8gMiArIHBhcmVudElubGlu
ZUJveC5wcmltYXJ5Rm9udE1ldHJpY3MoKS54SGVpZ2h0KCkgLyAyKTsKKyAgICAgICAgICAgICAg
ICBhdXRvIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSAoaW5saW5lTGV2ZWxC
b3gubGF5b3V0Qm91bmRzKCkuaGVpZ2h0KCkgLyAyICsgcGFyZW50SW5saW5lQm94LnByaW1hcnlm
b250TWV0cmljc09mUHJpbWFyeUZvbnQoKS54SGVpZ2h0KCkgLyAyKTsKICAgICAgICAgICAgICAg
ICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGxvZ2ljYWxUb3BPZmZzZXRGcm9t
UGFyZW50QmFzZWxpbmUgLSBpbmxpbmVMZXZlbEJveC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQ7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0zMjEsNyArMzIxLDcgQEAg
dm9pZCBMaW5lQm94VmVydGljYWxBbGlnbmVyOjphbGlnbklubGluZUxldmVsQm94ZXMoTGluZUJv
eCYgbGluZUJveCwgSW5saW5lTGF5b3UKICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJ
bmxpbmVCb3guYmFzZWxpbmUoKSAtIGlubGluZUxldmVsQm94LmJhc2VsaW5lKCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpNaWRkbGU6IHsKLSAgICAg
ICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IChpbmxpbmVM
ZXZlbEJveC5sb2dpY2FsSGVpZ2h0KCkgLyAyICsgcGFyZW50SW5saW5lQm94LnByaW1hcnlGb250
TWV0cmljcygpLnhIZWlnaHQoKSAvIDIpOworICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wT2Zm
c2V0RnJvbVBhcmVudEJhc2VsaW5lID0gKGlubGluZUxldmVsQm94LmxvZ2ljYWxIZWlnaHQoKSAv
IDIgKyBwYXJlbnRJbmxpbmVCb3gucHJpbWFyeWZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLnhI
ZWlnaHQoKSAvIDIpOwogICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC5i
YXNlbGluZSgpIC0gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FzY2FkZS5jcHAKaW5kZXggMmE3NjEzNjJjODNmYTY4NWI1MWM2ZWUwNTJjNmIx
MzVjMDI1ZjlhMC4uMTdlZWU1NWNiZWUxMTZkMDIwZDRkNTI3ZWViYzI2MDBjNDcxZjYzNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApA
QCAtMTQxMyw4ICsxNDEzLDggQEAgZmxvYXQgRm9udENhc2NhZGU6OmZsb2F0V2lkdGhGb3JTaW1w
bGVUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgSGFzaFNldDxjb25zdCBGb24KICAgICBpdC5maW5h
bGl6ZShnbHlwaEJ1ZmZlcik7CiAKICAgICBpZiAoZ2x5cGhPdmVyZmxvdykgewotICAgICAgICBn
bHlwaE92ZXJmbG93LT50b3AgPSBzdGQ6Om1heDxpbnQ+KGdseXBoT3ZlcmZsb3ctPnRvcCwgY2Vp
bGYoLWl0Lm1pbkdseXBoQm91bmRpbmdCb3hZKCkpIC0gKGdseXBoT3ZlcmZsb3ctPmNvbXB1dGVC
b3VuZHMgPyAwIDogZm9udE1ldHJpY3MoKS5hc2NlbnQoKSkpOwotICAgICAgICBnbHlwaE92ZXJm
bG93LT5ib3R0b20gPSBzdGQ6Om1heDxpbnQ+KGdseXBoT3ZlcmZsb3ctPmJvdHRvbSwgY2VpbGYo
aXQubWF4R2x5cGhCb3VuZGluZ0JveFkoKSkgLSAoZ2x5cGhPdmVyZmxvdy0+Y29tcHV0ZUJvdW5k
cyA/IDAgOiBmb250TWV0cmljcygpLmRlc2NlbnQoKSkpOworICAgICAgICBnbHlwaE92ZXJmbG93
LT50b3AgPSBzdGQ6Om1heDxpbnQ+KGdseXBoT3ZlcmZsb3ctPnRvcCwgY2VpbGYoLWl0Lm1pbkds
eXBoQm91bmRpbmdCb3hZKCkpIC0gKGdseXBoT3ZlcmZsb3ctPmNvbXB1dGVCb3VuZHMgPyAwIDog
Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50KCkpKTsKKyAgICAgICAgZ2x5cGhPdmVy
Zmxvdy0+Ym90dG9tID0gc3RkOjptYXg8aW50PihnbHlwaE92ZXJmbG93LT5ib3R0b20sIGNlaWxm
KGl0Lm1heEdseXBoQm91bmRpbmdCb3hZKCkpIC0gKGdseXBoT3ZlcmZsb3ctPmNvbXB1dGVCb3Vu
ZHMgPyAwIDogZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuZGVzY2VudCgpKSk7CiAgICAgICAg
IGdseXBoT3ZlcmZsb3ctPmxlZnQgPSBjZWlsZihpdC5maXJzdEdseXBoT3ZlcmZsb3coKSk7CiAg
ICAgICAgIGdseXBoT3ZlcmZsb3ctPnJpZ2h0ID0gY2VpbGYoaXQubGFzdEdseXBoT3ZlcmZsb3co
KSk7CiAgICAgfQpAQCAtMTQyNiw4ICsxNDI2LDggQEAgZmxvYXQgRm9udENhc2NhZGU6OmZsb2F0
V2lkdGhGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIEhhc2hTZXQ8Y29uc3QgRm8K
IHsKICAgICBDb21wbGV4VGV4dENvbnRyb2xsZXIgY29udHJvbGxlcigqdGhpcywgcnVuLCB0cnVl
LCBmYWxsYmFja0ZvbnRzKTsKICAgICBpZiAoZ2x5cGhPdmVyZmxvdykgewotICAgICAgICBnbHlw
aE92ZXJmbG93LT50b3AgPSBzdGQ6Om1heDxpbnQ+KGdseXBoT3ZlcmZsb3ctPnRvcCwgY2VpbGYo
LWNvbnRyb2xsZXIubWluR2x5cGhCb3VuZGluZ0JveFkoKSkgLSAoZ2x5cGhPdmVyZmxvdy0+Y29t
cHV0ZUJvdW5kcyA/IDAgOiBmb250TWV0cmljcygpLmFzY2VudCgpKSk7Ci0gICAgICAgIGdseXBo
T3ZlcmZsb3ctPmJvdHRvbSA9IHN0ZDo6bWF4PGludD4oZ2x5cGhPdmVyZmxvdy0+Ym90dG9tLCBj
ZWlsZihjb250cm9sbGVyLm1heEdseXBoQm91bmRpbmdCb3hZKCkpIC0gKGdseXBoT3ZlcmZsb3ct
PmNvbXB1dGVCb3VuZHMgPyAwIDogZm9udE1ldHJpY3MoKS5kZXNjZW50KCkpKTsKKyAgICAgICAg
Z2x5cGhPdmVyZmxvdy0+dG9wID0gc3RkOjptYXg8aW50PihnbHlwaE92ZXJmbG93LT50b3AsIGNl
aWxmKC1jb250cm9sbGVyLm1pbkdseXBoQm91bmRpbmdCb3hZKCkpIC0gKGdseXBoT3ZlcmZsb3ct
PmNvbXB1dGVCb3VuZHMgPyAwIDogZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50KCkp
KTsKKyAgICAgICAgZ2x5cGhPdmVyZmxvdy0+Ym90dG9tID0gc3RkOjptYXg8aW50PihnbHlwaE92
ZXJmbG93LT5ib3R0b20sIGNlaWxmKGNvbnRyb2xsZXIubWF4R2x5cGhCb3VuZGluZ0JveFkoKSkg
LSAoZ2x5cGhPdmVyZmxvdy0+Y29tcHV0ZUJvdW5kcyA/IDAgOiBmb250TWV0cmljc09mUHJpbWFy
eUZvbnQoKS5kZXNjZW50KCkpKTsKICAgICAgICAgZ2x5cGhPdmVyZmxvdy0+bGVmdCA9IHN0ZDo6
bWF4PGludD4oMCwgY2VpbGYoLWNvbnRyb2xsZXIubWluR2x5cGhCb3VuZGluZ0JveFgoKSkpOwog
ICAgICAgICBnbHlwaE92ZXJmbG93LT5yaWdodCA9IHN0ZDo6bWF4PGludD4oMCwgY2VpbGYoY29u
dHJvbGxlci5tYXhHbHlwaEJvdW5kaW5nQm94WCgpIC0gY29udHJvbGxlci50b3RhbEFkdmFuY2Uo
KS53aWR0aCgpKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhc2NhZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYXNjYWRlLmgKaW5kZXggYmFiZTk2Njg0ZTdjMTVjYjljYTk2OTNiYTM1NjBhOGFhM2Qy
Yzk2Yy4uNmM2MzcyMTZiZmQ0MDQ5NjNhNzExZjE2OWY5MTliMTVkZTYwYjZiZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCkBAIC0xNjMsNyAr
MTYzLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1BsYXRmb3JtRm9udCgpIGNvbnN0IHsgcmV0
dXJuIG1fZm9udHMtPmlzRm9yUGxhdGZvcm1Gb250KCk7IH0KIAotICAgIGNvbnN0IEZvbnRNZXRy
aWNzJiBmb250TWV0cmljcygpIGNvbnN0IHsgcmV0dXJuIHByaW1hcnlGb250KCkuZm9udE1ldHJp
Y3MoKTsgfQorICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljc09mUHJpbWFyeUZvbnQo
KSBjb25zdCB7IHJldHVybiBwcmltYXJ5Rm9udCgpLmZvbnRNZXRyaWNzKCk7IH0KICAgICBmbG9h
dCBzcGFjZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gcHJpbWFyeUZvbnQoKS5zcGFjZVdpZHRoKCkg
KyBtX2xldHRlclNwYWNpbmc7IH0KICAgICBmbG9hdCB0YWJXaWR0aChjb25zdCBGb250JiwgY29u
c3QgVGFiU2l6ZSYsIGZsb2F0KSBjb25zdDsKICAgICBmbG9hdCB0YWJXaWR0aChjb25zdCBUYWJT
aXplJiB0YWJTaXplLCBmbG9hdCBwb3NpdGlvbikgY29uc3QgeyByZXR1cm4gdGFiV2lkdGgocHJp
bWFyeUZvbnQoKSwgdGFiU2l6ZSwgcG9zaXRpb24pOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwCmluZGV4IGVjZTUwYTgyMzM5ZjBmZjIwNDkzNGE4OTI2
ZDJkODA3NGMwZGUwZDIuLjNiMTg4YmQ3YTFiOTIwNDVjZTIyOTcxMmVmOTAxYzllZjFhNTU5MTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwCkBAIC0x
NTMsNyArMTUzLDcgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoRWxlbWVu
dCYsIFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGluTGFiZWwsIFQKICAgICAvLyBGaXJzdCBzdGVw
IGluIGRyYXdpbmcgdGhlIGxpbmsgZHJhZyBpbWFnZSB3aWR0aC4KICAgICBUZXh0UnVuIGxhYmVs
UnVuKGxhYmVsKTsKICAgICBUZXh0UnVuIHVybFJ1bih1cmxTdHJpbmcpOwotICAgIEludFNpemUg
bGFiZWxTaXplKGxhYmVsRm9udC0+d2lkdGgobGFiZWxSdW4pLCBsYWJlbEZvbnQtPmZvbnRNZXRy
aWNzKCkuYXNjZW50KCkgKyBsYWJlbEZvbnQtPmZvbnRNZXRyaWNzKCkuZGVzY2VudCgpKTsKKyAg
ICBJbnRTaXplIGxhYmVsU2l6ZShsYWJlbEZvbnQtPndpZHRoKGxhYmVsUnVuKSwgbGFiZWxGb250
LT5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoKSArIGxhYmVsRm9udC0+Zm9udE1l
dHJpY3NPZlByaW1hcnlGb250KCkuZGVzY2VudCgpKTsKIAogICAgIGlmIChsYWJlbFNpemUud2lk
dGgoKSA+IE1heERyYWdMYWJlbFN0cmluZ1dpZHRoKSB7CiAgICAgICAgIGxhYmVsU2l6ZS5zZXRX
aWR0aChNYXhEcmFnTGFiZWxTdHJpbmdXaWR0aCk7CkBAIC0xNjUsNyArMTY1LDcgQEAgRHJhZ0lt
YWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoRWxlbWVudCYsIFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIGluTGFiZWwsIFQKIAogICAgIGlmIChkcmF3VVJMU3RyaW5nKSB7CiAgICAgICAgIHVy
bFN0cmluZ1NpemUuc2V0V2lkdGgodXJsRm9udC0+d2lkdGgodXJsUnVuKSk7Ci0gICAgICAgIHVy
bFN0cmluZ1NpemUuc2V0SGVpZ2h0KHVybEZvbnQtPmZvbnRNZXRyaWNzKCkuYXNjZW50KCkgKyB1
cmxGb250LT5mb250TWV0cmljcygpLmRlc2NlbnQoKSk7IAorICAgICAgICB1cmxTdHJpbmdTaXpl
LnNldEhlaWdodCh1cmxGb250LT5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoKSAr
IHVybEZvbnQtPmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmRlc2NlbnQoKSk7IAogICAgICAg
ICBpbWFnZVNpemUuc2V0SGVpZ2h0KGltYWdlU2l6ZS5oZWlnaHQoKSArIHVybFN0cmluZ1NpemUu
aGVpZ2h0KCkpOwogICAgICAgICBpZiAodXJsU3RyaW5nU2l6ZS53aWR0aCgpID4gTWF4RHJhZ0xh
YmVsU3RyaW5nV2lkdGgpIHsKICAgICAgICAgICAgIGltYWdlU2l6ZS5zZXRXaWR0aChNYXhEcmFn
TGFiZWxXaWR0aCk7CkBAIC0yMDEsNyArMjAxLDcgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJ
bWFnZUZvckxpbmsoRWxlbWVudCYsIFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGluTGFiZWwsIFQK
ICAgICBpZiAoZHJhd1VSTFN0cmluZykgewogICAgICAgICBpZiAoY2xpcFVSTFN0cmluZykKICAg
ICAgICAgICAgIHVybFN0cmluZyA9IFN0cmluZ1RydW5jYXRvcjo6cmlnaHRUcnVuY2F0ZSh1cmxT
dHJpbmcsIGltYWdlU2l6ZS53aWR0aCgpIC0gKERyYWdMYWJlbEJvcmRlclggKiAyLjBmKSwgKnVy
bEZvbnQpOwotICAgICAgICBJbnRQb2ludCB0ZXh0UG9zKERyYWdMYWJlbEJvcmRlclgsIGltYWdl
U2l6ZS5oZWlnaHQoKSAtIChMYWJlbEJvcmRlcllPZmZzZXQgKyB1cmxGb250LT5mb250TWV0cmlj
cygpLmRlc2NlbnQoKSkpOworICAgICAgICBJbnRQb2ludCB0ZXh0UG9zKERyYWdMYWJlbEJvcmRl
clgsIGltYWdlU2l6ZS5oZWlnaHQoKSAtIChMYWJlbEJvcmRlcllPZmZzZXQgKyB1cmxGb250LT5m
b250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5kZXNjZW50KCkpKTsKICAgICAgICAgV2ViQ29yZURy
YXdEb3VibGVkVGV4dEF0UG9pbnQoY29udGV4dCwgdXJsU3RyaW5nLCB0ZXh0UG9zLCAqdXJsRm9u
dCwgdG9wQ29sb3IsIGJvdHRvbUNvbG9yKTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCmluZGV4IGE4OTk5YmRlMWMzNjljYTU3N2Iz
NDMxNWMyNmFmNDY5YTMwNjNkNjcuLmEwMThiYzNkYmM0N2U0ZThkMjVjYzg0ZjZkYjVhYjYzZTJi
N2M5ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3Bw
CkBAIC0zMzAsNyArMzMwLDcgQEAgdm9pZCBQb3B1cE1lbnVXaW46OmNhbGN1bGF0ZVBvc2l0aW9u
QW5kU2l6ZShjb25zdCBJbnRSZWN0JiByLCBGcmFtZVZpZXcqIHYpCiAKICAgICAvLyBGaXJzdCwg
ZGV0ZXJtaW5lIHRoZSBwb3B1cCdzIGhlaWdodAogICAgIGludCBpdGVtQ291bnQgPSBjbGllbnQo
KS0+bGlzdFNpemUoKTsKLSAgICBtX2l0ZW1IZWlnaHQgPSBtX2ZvbnQuZm9udE1ldHJpY3MoKS5o
ZWlnaHQoKSArIG9wdGlvblNwYWNpbmdNaWRkbGU7CisgICAgbV9pdGVtSGVpZ2h0ID0gbV9mb250
LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmhlaWdodCgpICsgb3B0aW9uU3BhY2luZ01pZGRs
ZTsKIAogICAgIGludCBuYXR1cmFsSGVpZ2h0ID0gbV9pdGVtSGVpZ2h0ICogaXRlbUNvdW50Owog
ICAgIGludCBwb3B1cEhlaWdodCA9IHN0ZDo6bWluKG1heFBvcHVwSGVpZ2h0LCBuYXR1cmFsSGVp
Z2h0KTsKQEAgLTY2OCw3ICs2NjgsNyBAQCB2b2lkIFBvcHVwTWVudVdpbjo6cGFpbnQoY29uc3Qg
SW50UmVjdCYgZGFtYWdlUmVjdCwgSERDIGhkYykKICAgICAgICAgICAgICAgICBpZiAoUmVuZGVy
VGhlbWU6OnNpbmdsZXRvbigpLnBvcHVwT3B0aW9uU3VwcG9ydHNUZXh0SW5kZW50KCkpCiAgICAg
ICAgICAgICAgICAgICAgIHRleHRYIC09IG1pbmltdW1JbnRWYWx1ZUZvckxlbmd0aChpdGVtU3R5
bGUudGV4dEluZGVudCgpLCBpdGVtUmVjdC53aWR0aCgpKTsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGludCB0ZXh0WSA9IGl0ZW1SZWN0LnkoKSArIGl0ZW1Gb250LmZvbnRNZXRyaWNzKCku
YXNjZW50KCkgKyAoaXRlbVJlY3QuaGVpZ2h0KCkgLSBpdGVtRm9udC5mb250TWV0cmljcygpLmhl
aWdodCgpKSAvIDI7CisgICAgICAgICAgICBpbnQgdGV4dFkgPSBpdGVtUmVjdC55KCkgKyBpdGVt
Rm9udC5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoKSArIChpdGVtUmVjdC5oZWln
aHQoKSAtIGl0ZW1Gb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmhlaWdodCgpKSAvIDI7
CiAgICAgICAgICAgICBjb250ZXh0LmRyYXdCaWRpVGV4dChpdGVtRm9udCwgdGV4dFJ1biwgSW50
UG9pbnQodGV4dFgsIHRleHRZKSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2FyZXRSZWN0Q29tcHV0YXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0NhcmV0UmVjdENvbXB1dGF0aW9uLmNwcAppbmRleCBjZTdmNTQyZGQ5
N2I4NTM4NjFlMjNhY2Y4MWY4OWY4ZDIxNjc5NzA1Li45YTg2ZmYzMDI4ODg4NjQyNmRmZjljNzRl
NjI2NDViNTQ4ZWVhNmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2Fy
ZXRSZWN0Q29tcHV0YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DYXJl
dFJlY3RDb21wdXRhdGlvbi5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgc3RhdGljIExheW91dFJlY3Qg
Y29tcHV0ZUNhcmV0UmVjdEZvckVtcHR5RWxlbWVudChjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVj
dCYgcmUKICAgICB4ID0gc3RkOjptaW4oeCwgc3RkOjptYXg8TGF5b3V0VW5pdD4obWF4WCAtIGNh
cmV0V2lkdGgsIDApKTsKIAogICAgIGF1dG8gbGluZUhlaWdodCA9IHJlbmRlcmVyLmxpbmVIZWln
aHQodHJ1ZSwgY3VycmVudFN0eWxlLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9u
dGFsTGluZSA6IFZlcnRpY2FsTGluZSwgUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKTsKLSAg
ICBhdXRvIGhlaWdodCA9IHN0ZDo6bWluKGxpbmVIZWlnaHQsIExheW91dFVuaXQgeyBjdXJyZW50
U3R5bGUuZm9udE1ldHJpY3MoKS5oZWlnaHQoKSB9KTsKKyAgICBhdXRvIGhlaWdodCA9IHN0ZDo6
bWluKGxpbmVIZWlnaHQsIExheW91dFVuaXQgeyBjdXJyZW50U3R5bGUuZm9udE1ldHJpY3NPZlBy
aW1hcnlGb250KCkuaGVpZ2h0KCkgfSk7CiAgICAgYXV0byB5ID0gcmVuZGVyZXIucGFkZGluZ1Rv
cCgpICsgcmVuZGVyZXIuYm9yZGVyVG9wKCkgKyAobGluZUhlaWdodCA+IGhlaWdodCA/IChsaW5l
SGVpZ2h0IC0gaGVpZ2h0KSAvIDIgOiBMYXlvdXRVbml0IHsgfSk7CiAKICAgICBhdXRvIHJlY3Qg
PSBMYXlvdXRSZWN0KHgsIHksIGNhcmV0V2lkdGgsIGhlaWdodCk7CkBAIC0yNDEsNyArMjQxLDcg
QEAgc3RhdGljIExheW91dFJlY3QgY29tcHV0ZUNhcmV0UmVjdEZvckJveChjb25zdCBSZW5kZXJC
b3gmIHJlbmRlcmVyLCBjb25zdCBJbmxpbmUKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vMzc3Nzgw
ND4gRGVsZXRpbmcgYWxsIGNvbnRlbnQgaW4gYSBkb2N1bWVudCBjYW4gcmVzdWx0IGluIGdpYW50
IHRhbGwtYXMtd2luZG93IGluc2VydGlvbiBwb2ludAogICAgIC8vCiAgICAgLy8gRklYTUU6IGln
bm9yaW5nIDpmaXJzdC1saW5lLCBtaXNzaW5nIGdvb2QgcmVhc29uIHRvIHRha2UgY2FyZSBvZgot
ICAgIExheW91dFVuaXQgZm9udEhlaWdodCA9IHJlbmRlcmVyLnN0eWxlKCkuZm9udE1ldHJpY3Mo
KS5oZWlnaHQoKTsKKyAgICBMYXlvdXRVbml0IGZvbnRIZWlnaHQgPSByZW5kZXJlci5zdHlsZSgp
LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmhlaWdodCgpOwogICAgIGlmIChmb250SGVpZ2h0
ID4gcmVjdC5oZWlnaHQoKSB8fCAoIXJlbmRlcmVyLmlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkg
JiYgIXJlbmRlcmVyLmlzVGFibGUoKSkpCiAgICAgICAgIHJlY3Quc2V0SGVpZ2h0KGZvbnRIZWln
aHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5RWxsaXBz
aXNCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUVsbGlwc2lzQm94LmNw
cAppbmRleCA0NmRjZDQ2ZmY3ZGUyOTg2NmI0OTk4ZTNmYzZjNzUwNjlkYmVlYjQ3Li5lOTcxNjgw
NTcwNzBjY2Q0ZjI4NmEwYThiMGVkNDQ2YTJlMTViYjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvTGVnYWN5RWxsaXBzaXNCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9MZWdhY3lFbGxpcHNpc0JveC5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBM
ZWdhY3lFbGxpcHNpc0JveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50JiBwYWludE9mZnMKICAgICB9CiAKICAgICAvLyBGSVhNRTogV2h5IGlzIHRoaXMgYWx3
YXlzIExUUj8gRml4IGJ5IHBhc3NpbmcgY29ycmVjdCB0ZXh0IHJ1biBmbGFncyBiZWxvdy4KLSAg
ICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKG1f
c3RyLCBsaW5lU3R5bGUsIEFsbG93UmlnaHRFeHBhbnNpb24pLCBMYXlvdXRQb2ludCh4KCkgKyBw
YWludE9mZnNldC54KCksIHkoKSArIHBhaW50T2Zmc2V0LnkoKSArIGxpbmVTdHlsZS5mb250TWV0
cmljcygpLmFzY2VudCgpKSk7CisgICAgY29udGV4dC5kcmF3VGV4dChmb250LCBSZW5kZXJCbG9j
azo6Y29uc3RydWN0VGV4dFJ1bihtX3N0ciwgbGluZVN0eWxlLCBBbGxvd1JpZ2h0RXhwYW5zaW9u
KSwgTGF5b3V0UG9pbnQoeCgpICsgcGFpbnRPZmZzZXQueCgpLCB5KCkgKyBwYWludE9mZnNldC55
KCkgKyBsaW5lU3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50KCkpKTsKIAog
ICAgIC8vIFJlc3RvcmUgdGhlIHJlZ3VsYXIgZmlsbCBjb2xvci4KICAgICBpZiAodGV4dENvbG9y
ICE9IGNvbnRleHQuZmlsbENvbG9yKCkpCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBMZWdhY3lF
bGxpcHNpc0JveDo6cGFpbnRNYXJrdXBCb3goUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JgogCiAgICAgTGF5b3V0UG9pbnQgYWRqdXN0ZWRQYWludE9mZnNldCA9IHBhaW50
T2Zmc2V0OwogICAgIGFkanVzdGVkUGFpbnRPZmZzZXQubW92ZSh4KCkgKyBsb2dpY2FsV2lkdGgo
KSAtIG1hcmt1cEJveC0+eCgpLAotICAgICAgICB5KCkgKyBzdHlsZS5mb250TWV0cmljcygpLmFz
Y2VudCgpIC0gKG1hcmt1cEJveC0+eSgpICsgbWFya3VwQm94LT5saW5lU3R5bGUoKS5mb250TWV0
cmljcygpLmFzY2VudCgpKSk7CisgICAgICAgIHkoKSArIHN0eWxlLmZvbnRNZXRyaWNzT2ZQcmlt
YXJ5Rm9udCgpLmFzY2VudCgpIC0gKG1hcmt1cEJveC0+eSgpICsgbWFya3VwQm94LT5saW5lU3R5
bGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoKSkpOwogICAgIG1hcmt1cEJv
eC0+cGFpbnQocGFpbnRJbmZvLCBhZGp1c3RlZFBhaW50T2Zmc2V0LCBsaW5lVG9wLCBsaW5lQm90
dG9tKTsKIH0KIApAQCAtMTUzLDcgKzE1Myw3IEBAIGJvb2wgTGVnYWN5RWxsaXBzaXNCb3g6Om5v
ZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0CiAg
ICAgaWYgKExlZ2FjeUlubGluZUJveCogbWFya3VwQm94ID0gdGhpcy0+bWFya3VwQm94KCkpIHsK
ICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIGxpbmVTdHlsZSA9IHRoaXMtPmxpbmVTdHlsZSgp
OwogICAgICAgICBMYXlvdXRVbml0IG10eCB7IGFkanVzdGVkTG9jYXRpb24ueCgpICsgbG9naWNh
bFdpZHRoKCkgLSBtYXJrdXBCb3gtPngoKSB9OwotICAgICAgICBMYXlvdXRVbml0IG10eSB7IGFk
anVzdGVkTG9jYXRpb24ueSgpICsgbGluZVN0eWxlLmZvbnRNZXRyaWNzKCkuYXNjZW50KCkgLSAo
bWFya3VwQm94LT55KCkgKyBtYXJrdXBCb3gtPmxpbmVTdHlsZSgpLmZvbnRNZXRyaWNzKCkuYXNj
ZW50KCkpIH07CisgICAgICAgIExheW91dFVuaXQgbXR5IHsgYWRqdXN0ZWRMb2NhdGlvbi55KCkg
KyBsaW5lU3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50KCkgLSAobWFya3Vw
Qm94LT55KCkgKyBtYXJrdXBCb3gtPmxpbmVTdHlsZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9u
dCgpLmFzY2VudCgpKSB9OwogICAgICAgICBpZiAobWFya3VwQm94LT5ub2RlQXRQb2ludChyZXF1
ZXN0LCByZXN1bHQsIGxvY2F0aW9uSW5Db250YWluZXIsIExheW91dFBvaW50KG10eCwgbXR5KSwg
bGluZVRvcCwgbGluZUJvdHRvbSwgaGl0VGVzdEFjdGlvbikpIHsKICAgICAgICAgICAgIGJsb2Nr
RmxvdygpLnVwZGF0ZUhpdFRlc3RSZXN1bHQocmVzdWx0LCBsb2NhdGlvbkluQ29udGFpbmVyLnBv
aW50KCkgLSBMYXlvdXRTaXplKG10eCwgbXR5KSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVCb3guY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUJveC5jcHAKaW5kZXggODZm
NDFlZjdmYjA1NmNjZDYxNWU1NzcxYTA4M2MyZDk4OGMwZjEwYy4uZmFmZWEzNjY5MzFlNmU5Mjkz
Yzk1OTY0MWU3MmNiOTU3Y2RlODAyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0xlZ2FjeUlubGluZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xl
Z2FjeUlubGluZUJveC5jcHAKQEAgLTEzNiwxMyArMTM2LDEzIEBAIGZsb2F0IExlZ2FjeUlubGlu
ZUJveDo6bG9naWNhbEhlaWdodCgpIGNvbnN0CiAKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgbGlu
ZVN0eWxlID0gdGhpcy0+bGluZVN0eWxlKCk7CiAgICAgaWYgKHJlbmRlcmVyKCkuaXNUZXh0T3JM
aW5lQnJlYWsoKSkKLSAgICAgICAgcmV0dXJuIGxpbmVTdHlsZS5mb250TWV0cmljcygpLmhlaWdo
dCgpOworICAgICAgICByZXR1cm4gbGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgp
LmhlaWdodCgpOwogICAgIGlmIChpczxSZW5kZXJCb3g+KHJlbmRlcmVyKCkpICYmIHBhcmVudCgp
KQogICAgICAgICByZXR1cm4gaXNIb3Jpem9udGFsKCkgPyBkb3duY2FzdDxSZW5kZXJCb3g+KHJl
bmRlcmVyKCkpLmhlaWdodCgpIDogZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJlcigpKS53aWR0
aCgpOwogCiAgICAgQVNTRVJUKGlzSW5saW5lRmxvd0JveCgpKTsKICAgICBSZW5kZXJCb3hNb2Rl
bE9iamVjdCogZmxvd09iamVjdCA9IGJveE1vZGVsT2JqZWN0KCk7Ci0gICAgY29uc3QgRm9udE1l
dHJpY3MmIGZvbnRNZXRyaWNzID0gbGluZVN0eWxlLmZvbnRNZXRyaWNzKCk7CisgICAgY29uc3Qg
Rm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gbGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5
Rm9udCgpOwogICAgIGZsb2F0IHJlc3VsdCA9IGZvbnRNZXRyaWNzLmhlaWdodCgpOwogICAgIGlm
IChwYXJlbnQoKSkKICAgICAgICAgcmVzdWx0ICs9IGZsb3dPYmplY3QtPmJvcmRlckFuZFBhZGRp
bmdMb2dpY2FsSGVpZ2h0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
TGVnYWN5SW5saW5lRmxvd0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5
SW5saW5lRmxvd0JveC5jcHAKaW5kZXggODA1NzUyYjI5MmE2NTkwOTllNWYwZDdlZGM4NDk0ZWFi
MGFjMjU0MS4uNjdlYzg4YzVlMWZkYzg0ZDIzNWU2Zjc1OWY4YmJlNDI1NGJlNTMzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUZsb3dCb3guY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVGbG93Qm94LmNwcApAQCAt
MTI4LDcgKzEyOCw3IEBAIHZvaWQgTGVnYWN5SW5saW5lRmxvd0JveDo6YWRkVG9MaW5lKExlZ2Fj
eUlubGluZUJveCogY2hpbGQpCiAgICAgICAgICAgICBzaG91bGRDbGVhckRlc2NlbmRhbnRzSGF2
ZVNhbWVMaW5lSGVpZ2h0QW5kQmFzZWxpbmUgPSB0cnVlOwogICAgICAgICBlbHNlIGlmIChjaGls
ZC0+YmVoYXZlc0xpa2VUZXh0KCkpIHsKICAgICAgICAgICAgIGlmIChjaGlsZC0+cmVuZGVyZXIo
KS5pc0xpbmVCcmVhaygpIHx8IGNoaWxkLT5yZW5kZXJlcigpLnBhcmVudCgpICE9ICZyZW5kZXJl
cigpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFwYXJlbnRTdHlsZS5mb250Q2FzY2FkZSgpLmZv
bnRNZXRyaWNzKCkuaGFzSWRlbnRpY2FsQXNjZW50RGVzY2VudEFuZExpbmVHYXAoY2hpbGRTdHls
ZS5mb250Q2FzY2FkZSgpLmZvbnRNZXRyaWNzKCkpCisgICAgICAgICAgICAgICAgaWYgKCFwYXJl
bnRTdHlsZS5mb250Q2FzY2FkZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmhhc0lkZW50
aWNhbEFzY2VudERlc2NlbnRBbmRMaW5lR2FwKGNoaWxkU3R5bGUuZm9udENhc2NhZGUoKS5mb250
TWV0cmljc09mUHJpbWFyeUZvbnQoKSkKICAgICAgICAgICAgICAgICAgICAgfHwgcGFyZW50U3R5
bGUubGluZUhlaWdodCgpICE9IGNoaWxkU3R5bGUubGluZUhlaWdodCgpCiAgICAgICAgICAgICAg
ICAgICAgIHx8IChwYXJlbnRTdHlsZS52ZXJ0aWNhbEFsaWduKCkgIT0gVmVydGljYWxBbGlnbjo6
QmFzZWxpbmUgJiYgIWlzUm9vdElubGluZUJveCgpKSB8fCBjaGlsZFN0eWxlLnZlcnRpY2FsQWxp
Z24oKSAhPSBWZXJ0aWNhbEFsaWduOjpCYXNlbGluZSkKICAgICAgICAgICAgICAgICAgICAgc2hv
dWxkQ2xlYXJEZXNjZW5kYW50c0hhdmVTYW1lTGluZUhlaWdodEFuZEJhc2VsaW5lID0gdHJ1ZTsK
QEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIExlZ2FjeUlubGluZUZsb3dCb3g6OmFkZFRvTGluZShM
ZWdhY3lJbmxpbmVCb3gqIGNoaWxkKQogICAgICAgICAgICAgICAgIGF1dG8mIGNoaWxkRmxvd0Jv
eCA9IGRvd25jYXN0PExlZ2FjeUlubGluZUZsb3dCb3g+KCpjaGlsZCk7CiAgICAgICAgICAgICAg
ICAgLy8gQ2hlY2sgdGhlIGNoaWxkJ3MgYml0LCBhbmQgdGhlbiBhbHNvIGNoZWNrIGZvciBkaWZm
ZXJlbmNlcyBpbiBmb250LCBsaW5lLWhlaWdodCwgdmVydGljYWwtYWxpZ24KICAgICAgICAgICAg
ICAgICBpZiAoIWNoaWxkRmxvd0JveC5kZXNjZW5kYW50c0hhdmVTYW1lTGluZUhlaWdodEFuZEJh
c2VsaW5lKCkKLSAgICAgICAgICAgICAgICAgICAgfHwgIXBhcmVudFN0eWxlLmZvbnRDYXNjYWRl
KCkuZm9udE1ldHJpY3MoKS5oYXNJZGVudGljYWxBc2NlbnREZXNjZW50QW5kTGluZUdhcChjaGls
ZFN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKSkKKyAgICAgICAgICAgICAgICAgICAg
fHwgIXBhcmVudFN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCku
aGFzSWRlbnRpY2FsQXNjZW50RGVzY2VudEFuZExpbmVHYXAoY2hpbGRTdHlsZS5mb250Q2FzY2Fk
ZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpKQogICAgICAgICAgICAgICAgICAgICB8fCBw
YXJlbnRTdHlsZS5saW5lSGVpZ2h0KCkgIT0gY2hpbGRTdHlsZS5saW5lSGVpZ2h0KCkKICAgICAg
ICAgICAgICAgICAgICAgfHwgKHBhcmVudFN0eWxlLnZlcnRpY2FsQWxpZ24oKSAhPSBWZXJ0aWNh
bEFsaWduOjpCYXNlbGluZSAmJiAhaXNSb290SW5saW5lQm94KCkpIHx8IGNoaWxkU3R5bGUudmVy
dGljYWxBbGlnbigpICE9IFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lCiAgICAgICAgICAgICAgICAg
ICAgIHx8IGNoaWxkU3R5bGUuaGFzQm9yZGVyKCkgfHwgY2hpbGRTdHlsZS5oYXNQYWRkaW5nKCkg
fHwgY2hpbGRTdHlsZS5oYXNUZXh0Q29tYmluZSgpKQpAQCAtNjg5LDcgKzY4OSw3IEBAIHN0YXRp
YyB2b2lkIHBsYWNlQ2hpbGRJbmxpbmVCb3hlc0luQmxvY2tEaXJlY3Rpb24oTGVnYWN5SW5saW5l
Rmxvd0JveCYgaW5saW5lQm94CiAKICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIGNoaWxkTGlu
ZVN0eWxlID0gY2hpbGQtPmxpbmVTdHlsZSgpOwogICAgICAgICBpZiAoY2hpbGQtPmJlaGF2ZXNM
aWtlVGV4dCgpIHx8IGlzPExlZ2FjeUlubGluZUZsb3dCb3g+KCpjaGlsZCkpIHsKLSAgICAgICAg
ICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IGNoaWxkTGluZVN0eWxlLmZvbnRN
ZXRyaWNzKCk7CisgICAgICAgICAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MgPSBj
aGlsZExpbmVTdHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsKICAgICAgICAgICAgIG5l
d0xvZ2ljYWxUb3AgKz0gY2hpbGQtPmJhc2VsaW5lUG9zaXRpb24oYmFzZWxpbmVUeXBlKSAtIGZv
bnRNZXRyaWNzLmFzY2VudChiYXNlbGluZVR5cGUpOwogICAgICAgICAgICAgaWYgKGlzPExlZ2Fj
eUlubGluZUZsb3dCb3g+KCpjaGlsZCkpIHsKICAgICAgICAgICAgICAgICBSZW5kZXJCb3hNb2Rl
bE9iamVjdCYgYm94T2JqZWN0ID0gZG93bmNhc3Q8TGVnYWN5SW5saW5lRmxvd0JveD4oKmNoaWxk
KS5yZW5kZXJlcigpOwpAQCAtNzYzLDcgKzc2Myw3IEBAIHZvaWQgTGVnYWN5SW5saW5lRmxvd0Jv
eDo6cGxhY2VCb3hlc0luQmxvY2tEaXJlY3Rpb24oTGF5b3V0VW5pdCB0b3AsIExheW91dFVuaXQK
IHsKICAgICBib29sIGlzUm9vdEJveCA9IGlzUm9vdElubGluZUJveCgpOwogICAgIGlmIChpc1Jv
b3RCb3gpCi0gICAgICAgIHNldExvZ2ljYWxUb3AodG9wICsgbWF4QXNjZW50IC0gbGluZVN0eWxl
KCkuZm9udE1ldHJpY3MoKS5hc2NlbnQoYmFzZWxpbmVUeXBlKSk7CisgICAgICAgIHNldExvZ2lj
YWxUb3AodG9wICsgbWF4QXNjZW50IC0gbGluZVN0eWxlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlG
b250KCkuYXNjZW50KGJhc2VsaW5lVHlwZSkpOwogCiAgICAgcGxhY2VDaGlsZElubGluZUJveGVz
SW5CbG9ja0RpcmVjdGlvbigqdGhpcywgdG9wLCBtYXhIZWlnaHQsIG1heEFzY2VudCwgc3RyaWN0
TW9kZSwgbGluZVRvcCwgbGluZUJvdHRvbSwgc2V0TGluZVRvcCwgbGluZVRvcEluY2x1ZGluZ01h
cmdpbnMsIGxpbmVCb3R0b21JbmNsdWRpbmdNYXJnaW5zLCBoYXNBbm5vdGF0aW9uc0JlZm9yZSwg
aGFzQW5ub3RhdGlvbnNBZnRlciwgYmFzZWxpbmVUeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlvdXQuY3BwCmluZGV4IDg3ZDBjYmFkZGI0ZmQ1NTM2Y2Zj
YTMyNGE1ODcyMWJhZjBmYmM4N2UuLmQ4N2UzZDU5Y2IxYThmMWQyMjNlYmJhOTg1YTFiODkyODZk
ZTQxNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lMaW5lTGF5
b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5j
cHAKQEAgLTQ3OCwxMCArNDc4LDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRMb2dpY2FsV2lk
dGhGb3JUZXh0UnVuKExlZ2FjeVJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsIEJpZGlSCiAgICAgICAg
IC8vIHdpbGwga2VlcCB1cyBmcm9tIGNvbXB1dGluZyBnbHlwaCBib3VuZHMgaW4gbmVhcmx5IGFs
bCBjYXNlcy4KICAgICAgICAgYm9vbCBpbmNsdWRlUm9vdExpbmUgPSBsaW5lQm94LT5pbmNsdWRl
c1Jvb3RMaW5lQm94Rm9udE9yTGVhZGluZygpOwogICAgICAgICBpbnQgYmFzZWxpbmVTaGlmdCA9
IGxpbmVCb3gtPnZlcnRpY2FsUG9zaXRpb25Gb3JCb3gocnVuLT5ib3goKSwgdmVydGljYWxQb3Np
dGlvbkNhY2hlKTsKLSAgICAgICAgaW50IHJvb3REZXNjZW50ID0gaW5jbHVkZVJvb3RMaW5lID8g
Zm9udC5mb250TWV0cmljcygpLmRlc2NlbnQoKSA6IDA7Ci0gICAgICAgIGludCByb290QXNjZW50
ID0gaW5jbHVkZVJvb3RMaW5lID8gZm9udC5mb250TWV0cmljcygpLmFzY2VudCgpIDogMDsKLSAg
ICAgICAgaW50IGJveEFzY2VudCA9IGZvbnQuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSAtIGJhc2Vs
aW5lU2hpZnQ7Ci0gICAgICAgIGludCBib3hEZXNjZW50ID0gZm9udC5mb250TWV0cmljcygpLmRl
c2NlbnQoKSArIGJhc2VsaW5lU2hpZnQ7CisgICAgICAgIGludCByb290RGVzY2VudCA9IGluY2x1
ZGVSb290TGluZSA/IGZvbnQuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuZGVzY2VudCgpIDog
MDsKKyAgICAgICAgaW50IHJvb3RBc2NlbnQgPSBpbmNsdWRlUm9vdExpbmUgPyBmb250LmZvbnRN
ZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudCgpIDogMDsKKyAgICAgICAgaW50IGJveEFzY2Vu
dCA9IGZvbnQuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50KCkgLSBiYXNlbGluZVNo
aWZ0OworICAgICAgICBpbnQgYm94RGVzY2VudCA9IGZvbnQuZm9udE1ldHJpY3NPZlByaW1hcnlG
b250KCkuZGVzY2VudCgpICsgYmFzZWxpbmVTaGlmdDsKICAgICAgICAgaWYgKGJveEFzY2VudCA+
IHJvb3REZXNjZW50IHx8ICBib3hEZXNjZW50ID4gcm9vdEFzY2VudCkKICAgICAgICAgICAgIGds
eXBoT3ZlcmZsb3cuY29tcHV0ZUJvdW5kcyA9IHRydWU7IAogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lSb290SW5saW5lQm94LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lSb290SW5saW5lQm94LmNwcAppbmRleCBlODk1Y2JiNjcx
NzBiNjQ0N2VjYzcxM2JhNTFjYjNmYmI2ZTkwNmVmLi4zMWJlN2Q5NmJmOWQ3NjllYjg5MzU2ODFl
ZTk3ZWNkMjgwOWUyOGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVn
YWN5Um9vdElubGluZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2Fj
eVJvb3RJbmxpbmVCb3guY3BwCkBAIC0zNjMsMTQgKzM2MywxNCBAQCBMYXlvdXRVbml0IExlZ2Fj
eVJvb3RJbmxpbmVCb3g6OmxpbmVTbmFwQWRqdXN0bWVudChMYXlvdXRVbml0IGRlbHRhKSBjb25z
dAogICAgIGlmICghZ3JpZExpbmVIZWlnaHQpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgTGF5
b3V0VW5pdCBsaW5lR3JpZEZvbnRBc2NlbnQgPSBsaW5lR3JpZC0+c3R5bGUoKS5mb250TWV0cmlj
cygpLmFzY2VudChiYXNlbGluZVR5cGUoKSk7CisgICAgTGF5b3V0VW5pdCBsaW5lR3JpZEZvbnRB
c2NlbnQgPSBsaW5lR3JpZC0+c3R5bGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2Nl
bnQoYmFzZWxpbmVUeXBlKCkpOwogICAgIExheW91dFVuaXQgbGluZUdyaWRGb250SGVpZ2h0IHsg
bGluZUdyaWRCb3gtPmxvZ2ljYWxIZWlnaHQoKSB9OwogICAgIExheW91dFVuaXQgZmlyc3RUZXh0
VG9wIHsgbGluZUdyaWRCbG9ja09mZnNldCArIGxpbmVHcmlkQm94LT5sb2dpY2FsVG9wKCkgfTsK
ICAgICBMYXlvdXRVbml0IGZpcnN0TGluZVRvcFdpdGhMZWFkaW5nID0gbGluZUdyaWRCbG9ja09m
ZnNldCArIGxpbmVHcmlkQm94LT5saW5lQm94VG9wKCk7CiAgICAgTGF5b3V0VW5pdCBmaXJzdEJh
c2VsaW5lUG9zaXRpb24gPSBmaXJzdFRleHRUb3AgKyBsaW5lR3JpZEZvbnRBc2NlbnQ7CiAKICAg
ICBMYXlvdXRVbml0IGN1cnJlbnRUZXh0VG9wIHsgYmxvY2tPZmZzZXQgKyBsb2dpY2FsVG9wKCkg
KyBkZWx0YSB9OwotICAgIExheW91dFVuaXQgY3VycmVudEZvbnRBc2NlbnQgPSBibG9ja0Zsb3co
KS5zdHlsZSgpLmZvbnRNZXRyaWNzKCkuYXNjZW50KGJhc2VsaW5lVHlwZSgpKTsKKyAgICBMYXlv
dXRVbml0IGN1cnJlbnRGb250QXNjZW50ID0gYmxvY2tGbG93KCkuc3R5bGUoKS5mb250TWV0cmlj
c09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoYmFzZWxpbmVUeXBlKCkpOwogICAgIExheW91dFVuaXQg
Y3VycmVudEJhc2VsaW5lUG9zaXRpb24gPSBjdXJyZW50VGV4dFRvcCArIGN1cnJlbnRGb250QXNj
ZW50OwogCiAgICAgTGF5b3V0VW5pdCBsaW5lR3JpZFBhZ2luYXRpb25PcmlnaW4gPSBpc0hvcml6
b250YWwoKSA/IGxheW91dFN0YXRlLT5saW5lR3JpZFBhZ2luYXRpb25PcmlnaW4oKS5oZWlnaHQo
KSA6IGxheW91dFN0YXRlLT5saW5lR3JpZFBhZ2luYXRpb25PcmlnaW4oKS53aWR0aCgpOwpAQCAt
NzQzLDggKzc0Myw4IEBAIHZvaWQgTGVnYWN5Um9vdElubGluZUJveDo6YXNjZW50QW5kRGVzY2Vu
dEZvckJveChMZWdhY3lJbmxpbmVCb3gmIGJveCwgR2x5cGhPdmVyCiAgICAgfQogICAgIAogICAg
IGlmIChpbmNsdWRlRm9udEZvckJveChib3gpICYmICFzZXRVc2VkRm9udCkgewotICAgICAgICBM
YXlvdXRVbml0IGZvbnRBc2NlbnQgeyBib3hMaW5lU3R5bGUuZm9udE1ldHJpY3MoKS5hc2NlbnQo
YmFzZWxpbmVUeXBlKCkpIH07Ci0gICAgICAgIExheW91dFVuaXQgZm9udERlc2NlbnQgeyBib3hM
aW5lU3R5bGUuZm9udE1ldHJpY3MoKS5kZXNjZW50KGJhc2VsaW5lVHlwZSgpKSB9OworICAgICAg
ICBMYXlvdXRVbml0IGZvbnRBc2NlbnQgeyBib3hMaW5lU3R5bGUuZm9udE1ldHJpY3NPZlByaW1h
cnlGb250KCkuYXNjZW50KGJhc2VsaW5lVHlwZSgpKSB9OworICAgICAgICBMYXlvdXRVbml0IGZv
bnREZXNjZW50IHsgYm94TGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmRlc2Nl
bnQoYmFzZWxpbmVUeXBlKCkpIH07CiAgICAgICAgIHNldEFzY2VudEFuZERlc2NlbnQoYXNjZW50
LCBkZXNjZW50LCBmb250QXNjZW50LCBmb250RGVzY2VudCwgYXNjZW50RGVzY2VudFNldCk7CiAg
ICAgICAgIGFmZmVjdHNBc2NlbnQgPSBmb250QXNjZW50IC0gYm94LmxvZ2ljYWxUb3AoKSA+IDA7
CiAgICAgICAgIGFmZmVjdHNEZXNjZW50ID0gZm9udERlc2NlbnQgKyBib3gubG9naWNhbFRvcCgp
ID4gMDsKQEAgLTc1NCwyNiArNzU0LDI2IEBAIHZvaWQgTGVnYWN5Um9vdElubGluZUJveDo6YXNj
ZW50QW5kRGVzY2VudEZvckJveChMZWdhY3lJbmxpbmVCb3gmIGJveCwgR2x5cGhPdmVyCiAgICAg
ICAgIHNldEFzY2VudEFuZERlc2NlbnQoYXNjZW50LCBkZXNjZW50LCBnbHlwaE92ZXJmbG93LT50
b3AsIGdseXBoT3ZlcmZsb3ctPmJvdHRvbSwgYXNjZW50RGVzY2VudFNldCk7CiAgICAgICAgIGFm
ZmVjdHNBc2NlbnQgPSBnbHlwaE92ZXJmbG93LT50b3AgLSBib3gubG9naWNhbFRvcCgpID4gMDsK
ICAgICAgICAgYWZmZWN0c0Rlc2NlbnQgPSBnbHlwaE92ZXJmbG93LT5ib3R0b20gKyBib3gubG9n
aWNhbFRvcCgpID4gMDsKLSAgICAgICAgZ2x5cGhPdmVyZmxvdy0+dG9wID0gc3RkOjptaW4oZ2x5
cGhPdmVyZmxvdy0+dG9wLCBzdGQ6Om1heCgwX2x1LCBnbHlwaE92ZXJmbG93LT50b3AgLSBib3hM
aW5lU3R5bGUuZm9udE1ldHJpY3MoKS5hc2NlbnQoYmFzZWxpbmVUeXBlKCkpKSk7Ci0gICAgICAg
IGdseXBoT3ZlcmZsb3ctPmJvdHRvbSA9IHN0ZDo6bWluKGdseXBoT3ZlcmZsb3ctPmJvdHRvbSwg
c3RkOjptYXgoMF9sdSwgZ2x5cGhPdmVyZmxvdy0+Ym90dG9tIC0gYm94TGluZVN0eWxlLmZvbnRN
ZXRyaWNzKCkuZGVzY2VudChiYXNlbGluZVR5cGUoKSkpKTsKKyAgICAgICAgZ2x5cGhPdmVyZmxv
dy0+dG9wID0gc3RkOjptaW4oZ2x5cGhPdmVyZmxvdy0+dG9wLCBzdGQ6Om1heCgwX2x1LCBnbHlw
aE92ZXJmbG93LT50b3AgLSBib3hMaW5lU3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCku
YXNjZW50KGJhc2VsaW5lVHlwZSgpKSkpOworICAgICAgICBnbHlwaE92ZXJmbG93LT5ib3R0b20g
PSBzdGQ6Om1pbihnbHlwaE92ZXJmbG93LT5ib3R0b20sIHN0ZDo6bWF4KDBfbHUsIGdseXBoT3Zl
cmZsb3ctPmJvdHRvbSAtIGJveExpbmVTdHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5k
ZXNjZW50KGJhc2VsaW5lVHlwZSgpKSkpOwogICAgIH0KICAgICAKICAgICBpZiAoaW5jbHVkZUlu
aXRpYWxMZXR0ZXJGb3JCb3goYm94KSkgewogICAgICAgICBib29sIGNhblVzZUdseXBocyA9IGds
eXBoT3ZlcmZsb3cgJiYgZ2x5cGhPdmVyZmxvdy0+Y29tcHV0ZUJvdW5kczsKLSAgICAgICAgYXV0
byBsZXR0ZXJBc2NlbnQgeyBiYXNlbGluZVR5cGUoKSA9PSBBbHBoYWJldGljQmFzZWxpbmUgPyBM
YXlvdXRVbml0KGJveExpbmVTdHlsZS5mb250TWV0cmljcygpLmNhcEhlaWdodCgpKSA6IChjYW5V
c2VHbHlwaHMgPyBnbHlwaE92ZXJmbG93LT50b3AgOiBMYXlvdXRVbml0KGJveExpbmVTdHlsZS5m
b250TWV0cmljcygpLmFzY2VudChiYXNlbGluZVR5cGUoKSkpKSB9OwotICAgICAgICBhdXRvIGxl
dHRlckRlc2NlbnQgeyBjYW5Vc2VHbHlwaHMgPyBnbHlwaE92ZXJmbG93LT5ib3R0b20gOiAoYm94
LmlzUm9vdElubGluZUJveCgpID8gMF9sdSA6IExheW91dFVuaXQoYm94TGluZVN0eWxlLmZvbnRN
ZXRyaWNzKCkuZGVzY2VudChiYXNlbGluZVR5cGUoKSkpKSB9OworICAgICAgICBhdXRvIGxldHRl
ckFzY2VudCB7IGJhc2VsaW5lVHlwZSgpID09IEFscGhhYmV0aWNCYXNlbGluZSA/IExheW91dFVu
aXQoYm94TGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmNhcEhlaWdodCgpKSA6
IChjYW5Vc2VHbHlwaHMgPyBnbHlwaE92ZXJmbG93LT50b3AgOiBMYXlvdXRVbml0KGJveExpbmVT
dHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoYmFzZWxpbmVUeXBlKCkpKSkg
fTsKKyAgICAgICAgYXV0byBsZXR0ZXJEZXNjZW50IHsgY2FuVXNlR2x5cGhzID8gZ2x5cGhPdmVy
Zmxvdy0+Ym90dG9tIDogKGJveC5pc1Jvb3RJbmxpbmVCb3goKSA/IDBfbHUgOiBMYXlvdXRVbml0
KGJveExpbmVTdHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5kZXNjZW50KGJhc2VsaW5l
VHlwZSgpKSkpIH07CiAgICAgICAgIHNldEFzY2VudEFuZERlc2NlbnQoYXNjZW50LCBkZXNjZW50
LCBsZXR0ZXJBc2NlbnQsIGxldHRlckRlc2NlbnQsIGFzY2VudERlc2NlbnRTZXQpOwogICAgICAg
ICBhZmZlY3RzQXNjZW50ID0gbGV0dGVyQXNjZW50IC0gYm94LmxvZ2ljYWxUb3AoKSA+IDA7CiAg
ICAgICAgIGFmZmVjdHNEZXNjZW50ID0gbGV0dGVyRGVzY2VudCArIGJveC5sb2dpY2FsVG9wKCkg
PiAwOwogICAgICAgICBpZiAoY2FuVXNlR2x5cGhzKSB7Ci0gICAgICAgICAgICBnbHlwaE92ZXJm
bG93LT50b3AgPSBzdGQ6Om1pbihnbHlwaE92ZXJmbG93LT50b3AsIHN0ZDo6bWF4KDBfbHUsIGds
eXBoT3ZlcmZsb3ctPnRvcCAtIGJveExpbmVTdHlsZS5mb250TWV0cmljcygpLmFzY2VudChiYXNl
bGluZVR5cGUoKSkpKTsKLSAgICAgICAgICAgIGdseXBoT3ZlcmZsb3ctPmJvdHRvbSA9IHN0ZDo6
bWluKGdseXBoT3ZlcmZsb3ctPmJvdHRvbSwgc3RkOjptYXgoMF9sdSwgZ2x5cGhPdmVyZmxvdy0+
Ym90dG9tIC0gYm94TGluZVN0eWxlLmZvbnRNZXRyaWNzKCkuZGVzY2VudChiYXNlbGluZVR5cGUo
KSkpKTsKKyAgICAgICAgICAgIGdseXBoT3ZlcmZsb3ctPnRvcCA9IHN0ZDo6bWluKGdseXBoT3Zl
cmZsb3ctPnRvcCwgc3RkOjptYXgoMF9sdSwgZ2x5cGhPdmVyZmxvdy0+dG9wIC0gYm94TGluZVN0
eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudChiYXNlbGluZVR5cGUoKSkpKTsK
KyAgICAgICAgICAgIGdseXBoT3ZlcmZsb3ctPmJvdHRvbSA9IHN0ZDo6bWluKGdseXBoT3ZlcmZs
b3ctPmJvdHRvbSwgc3RkOjptYXgoMF9sdSwgZ2x5cGhPdmVyZmxvdy0+Ym90dG9tIC0gYm94TGlu
ZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmRlc2NlbnQoYmFzZWxpbmVUeXBlKCkp
KSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoaW5jbHVkZU1hcmdpbkZvckJveChib3gp
KSB7Ci0gICAgICAgIExheW91dFVuaXQgYXNjZW50V2l0aE1hcmdpbiA9IGJveExpbmVTdHlsZS5m
b250TWV0cmljcygpLmFzY2VudChiYXNlbGluZVR5cGUoKSk7Ci0gICAgICAgIExheW91dFVuaXQg
ZGVzY2VudFdpdGhNYXJnaW4gPSBib3hMaW5lU3R5bGUuZm9udE1ldHJpY3MoKS5kZXNjZW50KGJh
c2VsaW5lVHlwZSgpKTsKKyAgICAgICAgTGF5b3V0VW5pdCBhc2NlbnRXaXRoTWFyZ2luID0gYm94
TGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudChiYXNlbGluZVR5cGUo
KSk7CisgICAgICAgIExheW91dFVuaXQgZGVzY2VudFdpdGhNYXJnaW4gPSBib3hMaW5lU3R5bGUu
Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuZGVzY2VudChiYXNlbGluZVR5cGUoKSk7CiAgICAg
ICAgIGlmIChib3gucGFyZW50KCkgJiYgIWJveC5yZW5kZXJlcigpLmlzVGV4dE9yTGluZUJyZWFr
KCkpIHsKICAgICAgICAgICAgIGFzY2VudFdpdGhNYXJnaW4gKz0gYm94LmJveE1vZGVsT2JqZWN0
KCktPmJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKSArIGJveC5ib3hNb2RlbE9iamVjdCgpLT5tYXJn
aW5CZWZvcmUoKTsKICAgICAgICAgICAgIGRlc2NlbnRXaXRoTWFyZ2luICs9IGJveC5ib3hNb2Rl
bE9iamVjdCgpLT5ib3JkZXJBbmRQYWRkaW5nQWZ0ZXIoKSArIGJveC5ib3hNb2RlbE9iamVjdCgp
LT5tYXJnaW5BZnRlcigpOwpAQCAtODIxLDcgKzgyMSw3IEBAIExheW91dFVuaXQgTGVnYWN5Um9v
dElubGluZUJveDo6dmVydGljYWxQb3NpdGlvbkZvckJveChMZWdhY3lJbmxpbmVCb3gqIGJveCwg
VmVyCiAgICAgaWYgKHZlcnRpY2FsQWxpZ24gIT0gVmVydGljYWxBbGlnbjo6QmFzZWxpbmUpIHsK
ICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudExpbmVTdHlsZSA9IGZpcnN0TGluZSA/
IHBhcmVudC0+Zmlyc3RMaW5lU3R5bGUoKSA6IHBhcmVudC0+c3R5bGUoKTsKICAgICAgICAgY29u
c3QgRm9udENhc2NhZGUmIGZvbnQgPSBwYXJlbnRMaW5lU3R5bGUuZm9udENhc2NhZGUoKTsKLSAg
ICAgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gZm9udC5mb250TWV0cmljcygp
OworICAgICAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MgPSBmb250LmZvbnRNZXRy
aWNzT2ZQcmltYXJ5Rm9udCgpOwogICAgICAgICBpbnQgZm9udFNpemUgPSBmb250LnBpeGVsU2l6
ZSgpOwogCiAgICAgICAgIExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVEaXJlY3Rpb24gPSBwYXJlbnQt
PmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGlu
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IGIxM2U5N2Ex
MTZhZTNhMTdhZmJjNTAzNmUyNjM5ZmE1YTVhMjMyMmUuLjhlYTE5OWMyOTE4YmIxMTMzYTU0NGU1
YjUyN2I2MTZjZjQ4ZjIxOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmNwcApAQCAtMjQ5Niw3ICsyNDk2LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6YmFzZWxp
bmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGZpcnN0TGkKICAgICB9
CiAKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSBmaXJzdExpbmUgPyBmaXJzdExpbmVT
dHlsZSgpIDogdGhpcy0+c3R5bGUoKTsKLSAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJp
Y3MgPSBzdHlsZS5mb250TWV0cmljcygpOworICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0
cmljcyA9IHN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwogICAgIHJldHVybiBMYXlv
dXRVbml0IHsgZm9udE1ldHJpY3MuYXNjZW50KGJhc2VsaW5lVHlwZSkgKyAobGluZUhlaWdodChm
aXJzdExpbmUsIGRpcmVjdGlvbiwgbGluZVBvc2l0aW9uTW9kZSkgLSBmb250TWV0cmljcy5oZWln
aHQoKSkgLyAyIH0udG9JbnQoKTsKIH0KIApAQCAtMjU0OCw3ICsyNTQ4LDcgQEAgc3RkOjpvcHRp
b25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9jazo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGly
ZWN0aW9uTW9kZSBsaW4KICAgICB9CiAKICAgICBpZiAoIWhhdmVOb3JtYWxGbG93Q2hpbGQgJiYg
aGFzTGluZUlmRW1wdHkoKSkgewotICAgICAgICBhdXRvJiBmb250TWV0cmljcyA9IGZpcnN0TGlu
ZVN0eWxlKCkuZm9udE1ldHJpY3MoKTsKKyAgICAgICAgYXV0byYgZm9udE1ldHJpY3MgPSBmaXJz
dExpbmVTdHlsZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwogICAgICAgICByZXR1cm4g
TGF5b3V0VW5pdCB7IExheW91dFVuaXQoZm9udE1ldHJpY3MuYXNjZW50KCkKICAgICAgICAgICAg
ICsgKGxpbmVIZWlnaHQodHJ1ZSwgbGluZURpcmVjdGlvbiwgUG9zaXRpb25PZkludGVyaW9yTGlu
ZUJveGVzKSAtIGZvbnRNZXRyaWNzLmhlaWdodCgpKSAvIDIKICAgICAgICAgICAgICsgKGxpbmVE
aXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUgPyBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSA6
IGJvcmRlclJpZ2h0KCkgKyBwYWRkaW5nUmlnaHQoKSkpLnRvSW50KCkgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggOTdjNjg2NTNlNWYwZWZm
NGJhOWEwNzQzOGY0MzliNDEzYjZkMTUwYi4uN2M1NjNjZjlmYzZhOWI3NDk2OTc3ZDgwNWQ1ODUw
YjNlODgxYmMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxv
dy5jcHAKQEAgLTI0MDEsNyArMjQwMSw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRl
TG9naWNhbExvY2F0aW9uRm9yRmxvYXQoRmxvYXRpbmdPYmplY3QmIGZsb2F0aW5nT2JqCiB2b2lk
IFJlbmRlckJsb2NrRmxvdzo6YWRqdXN0SW5pdGlhbExldHRlclBvc2l0aW9uKFJlbmRlckJveCYg
Y2hpbGRCb3gsIExheW91dFVuaXQmIGxvZ2ljYWxUb3BPZmZzZXQsIExheW91dFVuaXQmIG1hcmdp
bkJlZm9yZU9mZnNldCkKIHsKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSBmaXJzdExp
bmVTdHlsZSgpOwotICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxlLmZv
bnRNZXRyaWNzKCk7CisgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gc3R5bGUu
Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCk7CiAgICAgaWYgKCFmb250TWV0cmljcy5oYXNDYXBI
ZWlnaHQoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yOTYzLDggKzI5NjMsOCBAQCBzdGQ6Om9w
dGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJsb2NrRmxvdzo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBj
b25zdAogCiAgICAgQVNTRVJUKGZpcnN0Um9vdEJveCgpKTsKICAgICBpZiAoc3R5bGUoKS5pc0Zs
aXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkpCi0gICAgICAgIHJldHVybiBMYXlvdXRVbml0IHsgZmly
c3RSb290Qm94KCktPmxvZ2ljYWxUb3AoKSArIGZpcnN0TGluZVN0eWxlKCkuZm9udE1ldHJpY3Mo
KS5kZXNjZW50KGZpcnN0Um9vdEJveCgpLT5iYXNlbGluZVR5cGUoKSkgfTsKLSAgICByZXR1cm4g
TGF5b3V0VW5pdCB7IGZpcnN0Um9vdEJveCgpLT5sb2dpY2FsVG9wKCkgKyBmaXJzdExpbmVTdHls
ZSgpLmZvbnRNZXRyaWNzKCkuYXNjZW50KGZpcnN0Um9vdEJveCgpLT5iYXNlbGluZVR5cGUoKSkg
fTsKKyAgICAgICAgcmV0dXJuIExheW91dFVuaXQgeyBmaXJzdFJvb3RCb3goKS0+bG9naWNhbFRv
cCgpICsgZmlyc3RMaW5lU3R5bGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5kZXNjZW50
KGZpcnN0Um9vdEJveCgpLT5iYXNlbGluZVR5cGUoKSkgfTsKKyAgICByZXR1cm4gTGF5b3V0VW5p
dCB7IGZpcnN0Um9vdEJveCgpLT5sb2dpY2FsVG9wKCkgKyBmaXJzdExpbmVTdHlsZSgpLmZvbnRN
ZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudChmaXJzdFJvb3RCb3goKS0+YmFzZWxpbmVUeXBl
KCkpIH07CiB9CiAKIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQmxvY2tGbG93Ojpp
bmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVEaXJlY3Rpb24pIGNvbnN0
CkBAIC0yOTk0LDcgKzI5OTQsNyBAQCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJs
b2NrRmxvdzo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZQogICAgICAgICBp
ZiAoIWhhc0xpbmVzKCkpIHsKICAgICAgICAgICAgIGlmICghaGFzTGluZUlmRW1wdHkoKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICAgICAgY29uc3QgYXV0
byYgZm9udE1ldHJpY3MgPSBmaXJzdExpbmVTdHlsZSgpLmZvbnRNZXRyaWNzKCk7CisgICAgICAg
ICAgICBjb25zdCBhdXRvJiBmb250TWV0cmljcyA9IGZpcnN0TGluZVN0eWxlKCkuZm9udE1ldHJp
Y3NPZlByaW1hcnlGb250KCk7CiAgICAgICAgICAgICByZXR1cm4gTGF5b3V0VW5pdCB7IExheW91
dFVuaXQoZm9udE1ldHJpY3MuYXNjZW50KCkKICAgICAgICAgICAgICAgICArIChsaW5lSGVpZ2h0
KHRydWUsIGxpbmVEaXJlY3Rpb24sIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcykgLSBmb250
TWV0cmljcy5oZWlnaHQoKSkgLyAyCiAgICAgICAgICAgICAgICAgKyAobGluZURpcmVjdGlvbiA9
PSBIb3Jpem9udGFsTGluZSA/IGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpIDogYm9yZGVyUmln
aHQoKSArIHBhZGRpbmdSaWdodCgpKSkudG9JbnQoKSB9OwpAQCAtMzAwNCw3ICszMDA0LDcgQEAg
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9ja0Zsb3c6OmlubGluZUJsb2NrQmFz
ZWxpbmUoTGluZURpcmVjdGlvbk1vZGUKICAgICAgICAgICAgIGJvb2wgaXNGaXJzdExpbmUgPSBs
YXN0Um9vdEJveCgpID09IGZpcnN0Um9vdEJveCgpOwogICAgICAgICAgICAgY29uc3QgYXV0byYg
c3R5bGUgPSBpc0ZpcnN0TGluZSA/IGZpcnN0TGluZVN0eWxlKCkgOiB0aGlzLT5zdHlsZSgpOwog
ICAgICAgICAgICAgLy8gTGVnYWN5SW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0luQmxvY2tEaXJl
Y3Rpb24gd2lsbCBmbGlwIGxpbmVzIGluIGNhc2Ugb2YgdmVydGljYWxMUiBtb2RlLCBzbyB3ZSBj
YW4gYXNzdW1lIHZlcnRpY2FsUkwgZm9yIG5vdy4KLSAgICAgICAgICAgIGxhc3RCYXNlbGluZSA9
IHN0eWxlLmZvbnRNZXRyaWNzKCkuYXNjZW50KGxhc3RSb290Qm94KCktPmJhc2VsaW5lVHlwZSgp
KQorICAgICAgICAgICAgbGFzdEJhc2VsaW5lID0gc3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlG
b250KCkuYXNjZW50KGxhc3RSb290Qm94KCktPmJhc2VsaW5lVHlwZSgpKQogICAgICAgICAgICAg
ICAgICsgKHN0eWxlLmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSA/IGxvZ2ljYWxIZWlnaHQo
KSAtIGxhc3RSb290Qm94KCktPmxvZ2ljYWxCb3R0b20oKSA6IGxhc3RSb290Qm94KCktPmxvZ2lj
YWxUb3AoKSk7CiAgICAgICAgIH0KICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVY
VCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3Qu
Y3BwCmluZGV4IGRkYmU5YTQxNmYzZjk3ZWZmMzIzMjAyZDYwODQwZjIwMjc2ODdiNWQuLjcxZTc3
MzlkMWM5NjRkMmI0NTg5YzUxODcyNDQyZmIzOGQ4OTBkYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcApAQCAtMjU2LDcgKzI1Niw3
IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50CiAgICAgY29udGV4dC5zZXRTdHJva2VUaGlja25l
c3MoMik7CiAgICAgY29udGV4dC5zdHJva2VQYXRoKHN0cm9rZVBhdGgpOwogCi0gICAgY29uc3Qg
Rm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gZm9udC5mb250TWV0cmljcygpOworICAgIGNvbnN0
IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IGZvbnQuZm9udE1ldHJpY3NPZlByaW1hcnlGb250
KCk7CiAgICAgZmxvYXQgbGFiZWxYID0gcm91bmRmKHJlcGxhY2VtZW50VGV4dFJlY3QubG9jYXRp
b24oKS54KCkgKyByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdExlZnRUZXh0TWFyZ2luKTsKICAg
ICBmbG9hdCBsYWJlbFkgPSByb3VuZGYocmVwbGFjZW1lbnRUZXh0UmVjdC5sb2NhdGlvbigpLnko
KSArIChyZXBsYWNlbWVudFRleHRSZWN0LnNpemUoKS5oZWlnaHQoKSAtIGZvbnRNZXRyaWNzLmhl
aWdodCgpKSAvIDIgKyBmb250TWV0cmljcy5hc2NlbnQoKSArIHJlcGxhY2VtZW50VGV4dFJvdW5k
ZWRSZWN0VG9wVGV4dE1hcmdpbik7CiAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IocmVwbGFjZW1l
bnRUZXh0Q29sb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5k
ZXggMDUwMGY4OTVmZTBmODM1YTI0YWExZTdjMzE1MzYwZDJmZWQ4NGU4Yy4uYmIxMzlmMmY1NzIw
NjZiODlhZDRjNmYyZGI5YzUyMjUwN2FjZjY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2UuY3BwCkBAIC0yMTAsNyArMjEwLDcgQEAgSW1hZ2VTaXplQ2hhbmdlVHlwZSBS
ZW5kZXJJbWFnZTo6c2V0SW1hZ2VTaXplRm9yQWx0VGV4dChDYWNoZWRJbWFnZSogbmV3SW1hZ2Ug
LyoKICAgICAvLyB3ZSBoYXZlIGFuIGFsdCBhbmQgdGhlIHVzZXIgbWVhbnQgaXQgKGl0cyBub3Qg
YSB0ZXh0IHdlIGludmVudGVkKQogICAgIGlmICghbV9hbHRUZXh0LmlzRW1wdHkoKSkgewogICAg
ICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKTsKLSAg
ICAgICAgSW50U2l6ZSBwYWRkZWRUZXh0U2l6ZShwYWRkaW5nV2lkdGggKyBzdGQ6Om1pbihjZWls
Zihmb250LndpZHRoKFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKG1fYWx0VGV4dCwgc3R5
bGUoKSkpKSwgbWF4QWx0VGV4dFdpZHRoKSwgcGFkZGluZ0hlaWdodCArIHN0ZDo6bWluKGZvbnQu
Zm9udE1ldHJpY3MoKS5oZWlnaHQoKSwgbWF4QWx0VGV4dEhlaWdodCkpOworICAgICAgICBJbnRT
aXplIHBhZGRlZFRleHRTaXplKHBhZGRpbmdXaWR0aCArIHN0ZDo6bWluKGNlaWxmKGZvbnQud2lk
dGgoUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4obV9hbHRUZXh0LCBzdHlsZSgpKSkpLCBt
YXhBbHRUZXh0V2lkdGgpLCBwYWRkaW5nSGVpZ2h0ICsgc3RkOjptaW4oZm9udC5mb250TWV0cmlj
c09mUHJpbWFyeUZvbnQoKS5oZWlnaHQoKSwgbWF4QWx0VGV4dEhlaWdodCkpOwogICAgICAgICBp
bWFnZVNpemUgPSBpbWFnZVNpemUuZXhwYW5kZWRUbyhwYWRkZWRUZXh0U2l6ZSk7CiAgICAgfQog
CkBAIC01MzIsNyArNTMyLDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICAgICAgICAg
ICAgICBTdHJpbmcgdGV4dCA9IGRvY3VtZW50KCkuZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNv
ZGluZyhtX2FsdFRleHQpOwogICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHN0
eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5Q29s
b3IpKTsKICAgICAgICAgICAgICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlKCku
Zm9udENhc2NhZGUoKTsKLSAgICAgICAgICAgICAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1l
dHJpY3MgPSBmb250LmZvbnRNZXRyaWNzKCk7CisgICAgICAgICAgICAgICAgY29uc3QgRm9udE1l
dHJpY3MmIGZvbnRNZXRyaWNzID0gZm9udC5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsKICAg
ICAgICAgICAgICAgICBMYXlvdXRVbml0IGFzY2VudCA9IGZvbnRNZXRyaWNzLmFzY2VudCgpOwog
ICAgICAgICAgICAgICAgIExheW91dFBvaW50IGFsdFRleHRPZmZzZXQgPSBwYWludE9mZnNldDsK
ICAgICAgICAgICAgICAgICBhbHRUZXh0T2Zmc2V0Lm1vdmUobGVmdEJvcmRlciArIGxlZnRQYWQg
KyAocGFkZGluZ1dpZHRoIC8gMikgLSBtaXNzaW5nSW1hZ2VCb3JkZXJXaWR0aCwgdG9wQm9yZGVy
ICsgdG9wUGFkICsgYXNjZW50ICsgKHBhZGRpbmdIZWlnaHQgLyAyKSAtIG1pc3NpbmdJbWFnZUJv
cmRlcldpZHRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKaW5k
ZXggNmE5YTM5MTAwM2YyZTAwOGIyYWVhY2Y3N2YyNGY4N2FkM2VhNTIxZS4uMGEwOWY0OGJjZTY1
MTVjMDg5NzZhNjg0M2RjMDIxMWZiZTcxYmEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklubGluZS5jcHAKQEAgLTIxMCw3ICsyMTAsNyBAQCBib29sIFJlbmRlcklubGluZTo6
bWF5QWZmZWN0TGF5b3V0KCkgY29uc3QKICAgICAgICAgfHwgKHBhcmVudFJlbmRlcklubGluZSAm
JiBwYXJlbnRTdHlsZS0+dmVydGljYWxBbGlnbigpICE9IFZlcnRpY2FsQWxpZ246OkJhc2VsaW5l
KQogICAgICAgICB8fCBzdHlsZSgpLnZlcnRpY2FsQWxpZ24oKSAhPSBWZXJ0aWNhbEFsaWduOjpC
YXNlbGluZQogICAgICAgICB8fCBzdHlsZSgpLnRleHRFbXBoYXNpc01hcmsoKSAhPSBUZXh0RW1w
aGFzaXNNYXJrOjpOb25lCi0gICAgICAgIHx8IChjaGVja0ZvbnRzICYmICghcGFyZW50U3R5bGUt
PmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKS5oYXNJZGVudGljYWxBc2NlbnREZXNjZW50QW5k
TGluZUdhcChzdHlsZSgpLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKSkKKyAgICAgICAgfHwg
KGNoZWNrRm9udHMgJiYgKCFwYXJlbnRTdHlsZS0+Zm9udENhc2NhZGUoKS5mb250TWV0cmljc09m
UHJpbWFyeUZvbnQoKS5oYXNJZGVudGljYWxBc2NlbnREZXNjZW50QW5kTGluZUdhcChzdHlsZSgp
LmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkpCiAgICAgICAgIHx8IHBh
cmVudFN0eWxlLT5saW5lSGVpZ2h0KCkgIT0gc3R5bGUoKS5saW5lSGVpZ2h0KCkpKQogICAgICAg
ICB8fCBoYXNIYXJkTGluZUJyZWFrQ2hpbGRPbmx5OwogCkBAIC0yMTgsNyArMjE4LDcgQEAgYm9v
bCBSZW5kZXJJbmxpbmU6Om1heUFmZmVjdExheW91dCgpIGNvbnN0CiAgICAgICAgIC8vIEhhdmUg
dG8gY2hlY2sgdGhlIGZpcnN0IGxpbmUgc3R5bGUgYXMgd2VsbC4KICAgICAgICAgcGFyZW50U3R5
bGUgPSAmcGFyZW50KCktPmZpcnN0TGluZVN0eWxlKCk7CiAgICAgICAgIGF1dG8mIGNoaWxkU3R5
bGUgPSBmaXJzdExpbmVTdHlsZSgpOwotICAgICAgICBtYXlBZmZlY3RMYXlvdXQgPSAhcGFyZW50
U3R5bGUtPmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKS5oYXNJZGVudGljYWxBc2NlbnREZXNj
ZW50QW5kTGluZUdhcChjaGlsZFN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKSkKKyAg
ICAgICAgbWF5QWZmZWN0TGF5b3V0ID0gIXBhcmVudFN0eWxlLT5mb250Q2FzY2FkZSgpLmZvbnRN
ZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmhhc0lkZW50aWNhbEFzY2VudERlc2NlbnRBbmRMaW5lR2Fw
KGNoaWxkU3R5bGUuZm9udENhc2NhZGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKSkKICAg
ICAgICAgICAgIHx8IGNoaWxkU3R5bGUudmVydGljYWxBbGlnbigpICE9IFZlcnRpY2FsQWxpZ246
OkJhc2VsaW5lCiAgICAgICAgICAgICB8fCBwYXJlbnRTdHlsZS0+bGluZUhlaWdodCgpICE9IGNo
aWxkU3R5bGUubGluZUhlaWdodCgpOwogICAgIH0KQEAgLTg1NSw3ICs4NTUsNyBAQCBMYXlvdXRV
bml0IFJlbmRlcklubGluZTo6bGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlv
bk1vZGUgLypkaXJlY3RpbwogTGF5b3V0VW5pdCBSZW5kZXJJbmxpbmU6OmJhc2VsaW5lUG9zaXRp
b24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rp
b25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25z
dAogewogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IGZpcnN0TGluZSA/IGZpcnN0TGlu
ZVN0eWxlKCkgOiB0aGlzLT5zdHlsZSgpOwotICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0
cmljcyA9IHN0eWxlLmZvbnRNZXRyaWNzKCk7CisgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRN
ZXRyaWNzID0gc3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCk7CiAgICAgcmV0dXJuIExh
eW91dFVuaXQgeyAoZm9udE1ldHJpY3MuYXNjZW50KGJhc2VsaW5lVHlwZSkgKyAobGluZUhlaWdo
dChmaXJzdExpbmUsIGRpcmVjdGlvbiwgbGluZVBvc2l0aW9uTW9kZSkgLSBmb250TWV0cmljcy5o
ZWlnaHQoKSkgLyAyKS50b0ludCgpIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpbmVCcmVhay5jcHAKaW5kZXggYTIzOTQ2NTE1YThlZGE3Yzg3OWEzMmFiOTIwZjlm
YmMyYzc0NWE1NS4uZjc1ZWU3OWVmNzcyZDIzYjA0NGFlMmFlMzk0NzBkMTk5OWU4NWNkZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKQEAgLTgwLDcg
KzgwLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJMaW5lQnJlYWs6OmxpbmVIZWlnaHQoYm9vbCBmaXJz
dExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIC8qZGlyZWMKIExheW91dFVuaXQgUmVuZGVyTGluZUJy
ZWFrOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmly
c3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbGlu
ZVBvc2l0aW9uTW9kZSkgY29uc3QKIHsKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSBm
aXJzdExpbmUgPyBmaXJzdExpbmVTdHlsZSgpIDogdGhpcy0+c3R5bGUoKTsKLSAgICBjb25zdCBG
b250TWV0cmljcyYgZm9udE1ldHJpY3MgPSBzdHlsZS5mb250TWV0cmljcygpOworICAgIGNvbnN0
IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9u
dCgpOwogICAgIHJldHVybiBMYXlvdXRVbml0IHsgKGZvbnRNZXRyaWNzLmFzY2VudChiYXNlbGlu
ZVR5cGUpICsgKGxpbmVIZWlnaHQoZmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1v
ZGUpIC0gZm9udE1ldHJpY3MuaGVpZ2h0KCkpIC8gMikudG9JbnQoKSB9OwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXggMmU5YjU4NTZkMjhjOTRl
NzZjNDliMzc5YmZjNWI4Y2FmZDQ3OGQ2My4uYTliMjJjNWU1NWVhZmM0ZDM4ZGMwNmM1MDY3YjYx
ZjU3YjljZjJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNw
cApAQCAtMzc4LDcgKzM3OCw3IEBAIHN0YXRpYyBMYXlvdXRTaXplIGl0ZW1PZmZzZXRGb3JBbGln
bm1lbnQoVGV4dFJ1biB0ZXh0UnVuLCBjb25zdCBSZW5kZXJTdHlsZSogaXRlCiAgICAgaWYgKGFj
dHVhbEFsaWdubWVudCA9PSBUZXh0QWxpZ25Nb2RlOjpTdGFydCB8fCBhY3R1YWxBbGlnbm1lbnQg
PT0gVGV4dEFsaWduTW9kZTo6SnVzdGlmeSkKICAgICAgICAgYWN0dWFsQWxpZ25tZW50ID0gaXRl
bVN0eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBUZXh0QWxpZ25Nb2RlOjpMZWZ0IDog
VGV4dEFsaWduTW9kZTo6UmlnaHQ7CiAKLSAgICBMYXlvdXRTaXplIG9mZnNldCA9IExheW91dFNp
emUoMCwgaXRlbUZvbnQuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSk7CisgICAgTGF5b3V0U2l6ZSBv
ZmZzZXQgPSBMYXlvdXRTaXplKDAsIGl0ZW1Gb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgp
LmFzY2VudCgpKTsKICAgICBpZiAoYWN0dWFsQWxpZ25tZW50ID09IFRleHRBbGlnbk1vZGU6OlJp
Z2h0IHx8IGFjdHVhbEFsaWdubWVudCA9PSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRSaWdodCkgewog
ICAgICAgICBmbG9hdCB0ZXh0V2lkdGggPSBpdGVtRm9udC53aWR0aCh0ZXh0UnVuKTsKICAgICAg
ICAgb2Zmc2V0LnNldFdpZHRoKGl0ZW1Cb3VkaW5nQm94LndpZHRoKCkgLSB0ZXh0V2lkdGggLSBv
cHRpb25zU3BhY2luZ0hvcml6b250YWwpOwpAQCAtNzA0LDcgKzcwNCw3IEBAIHZvaWQgUmVuZGVy
TGlzdEJveDo6c2Nyb2xsVG8oaW50IG5ld09mZnNldCkKIAogTGF5b3V0VW5pdCBSZW5kZXJMaXN0
Qm94OjppdGVtSGVpZ2h0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3R5bGUoKS5mb250TWV0cmlj
cygpLmhlaWdodCgpICsgcm93U3BhY2luZzsKKyAgICByZXR1cm4gc3R5bGUoKS5mb250TWV0cmlj
c09mUHJpbWFyeUZvbnQoKS5oZWlnaHQoKSArIHJvd1NwYWNpbmc7CiB9CiAKIGludCBSZW5kZXJM
aXN0Qm94Ojp2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAppbmRleCAwMWU1ZGNlOGU3NTJmMzkwMThh
Yzg2NzFmNjY4NWVjMjYwYjg0ZDE2Li44ZjcxNWE0NjFjZmUwYTFmYTE4ZTE2MmZjYmJmOTQyYTdj
ZGYwMTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1h
cmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIu
Y3BwCkBAIC0xNjQ4LDcgKzE2NDgsNyBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBhaW50KFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZQogICAgICAg
ICBjb250ZXh0LnRyYW5zbGF0ZSgtbWFya2VyUmVjdC54KCksIC1tYXJrZXJSZWN0Lm1heFkoKSk7
CiAgICAgfQogCi0gICAgRmxvYXRQb2ludCB0ZXh0T3JpZ2luID0gRmxvYXRQb2ludChtYXJrZXJS
ZWN0LngoKSwgbWFya2VyUmVjdC55KCkgKyBzdHlsZSgpLmZvbnRNZXRyaWNzKCkuYXNjZW50KCkp
OworICAgIEZsb2F0UG9pbnQgdGV4dE9yaWdpbiA9IEZsb2F0UG9pbnQobWFya2VyUmVjdC54KCks
IG1hcmtlclJlY3QueSgpICsgc3R5bGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2Nl
bnQoKSk7CiAgICAgdGV4dE9yaWdpbiA9IHJvdW5kUG9pbnRUb0RldmljZVBpeGVscyhMYXlvdXRQ
b2ludCh0ZXh0T3JpZ2luKSwgZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCBzdHlsZSgp
LmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSk7CiAgICAgY29udGV4dC5kcmF3VGV4dChzdHlsZSgp
LmZvbnRDYXNjYWRlKCksIHRleHRSdW4oKSwgdGV4dE9yaWdpbik7CiB9CkBAIC0xNzgwLDcgKzE3
ODAsNyBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OmxheW91dCgpCiAgICAgICAgIHNldEhlaWdo
dChtX2ltYWdlLT5pbWFnZVNpemUodGhpcywgc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpLmhlaWdo
dCgpKTsKICAgICB9IGVsc2UgewogICAgICAgICBzZXRMb2dpY2FsV2lkdGgobWluUHJlZmVycmVk
TG9naWNhbFdpZHRoKCkpOwotICAgICAgICBzZXRMb2dpY2FsSGVpZ2h0KHN0eWxlKCkuZm9udE1l
dHJpY3MoKS5oZWlnaHQoKSk7CisgICAgICAgIHNldExvZ2ljYWxIZWlnaHQoc3R5bGUoKS5mb250
TWV0cmljc09mUHJpbWFyeUZvbnQoKS5oZWlnaHQoKSk7CiAgICAgfQogCiAgICAgc2V0TWFyZ2lu
U3RhcnQoMCk7CkBAIC0xODIwLDcgKzE4MjAsNyBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnVw
ZGF0ZUNvbnRlbnQoKQogICAgIGlmIChpc0ltYWdlKCkpIHsKICAgICAgICAgLy8gRklYTUU6IFRo
aXMgaXMgYSBzb21ld2hhdCBhcmJpdHJhcnkgd2lkdGguICBHZW5lcmF0ZWQgaW1hZ2VzIGZvciBt
YXJrZXJzIHJlYWxseSB3b24ndCBiZWNvbWUgcGFydGljdWxhcmx5IHVzZWZ1bAogICAgICAgICAv
LyB1bnRpbCB3ZSBzdXBwb3J0IHRoZSBDU1MzIG1hcmtlciBwc2V1ZG9jbGFzcyB0byBhbGxvdyBj
b250cm9sIG92ZXIgdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIG1hcmtlciBib3guCi0gICAg
ICAgIExheW91dFVuaXQgYnVsbGV0V2lkdGggPSBzdHlsZSgpLmZvbnRNZXRyaWNzKCkuYXNjZW50
KCkgLyAyX2x1OworICAgICAgICBMYXlvdXRVbml0IGJ1bGxldFdpZHRoID0gc3R5bGUoKS5mb250
TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoKSAvIDJfbHU7CiAgICAgICAgIExheW91dFNp
emUgZGVmYXVsdEJ1bGxldFNpemUoYnVsbGV0V2lkdGgsIGJ1bGxldFdpZHRoKTsKICAgICAgICAg
TGF5b3V0U2l6ZSBpbWFnZVNpemUgPSBjYWxjdWxhdGVJbWFnZUludHJpbnNpY0RpbWVuc2lvbnMo
bV9pbWFnZS5nZXQoKSwgZGVmYXVsdEJ1bGxldFNpemUsIERvTm90U2NhbGVCeUVmZmVjdGl2ZVpv
b20pOwogICAgICAgICBtX2ltYWdlLT5zZXRDb250YWluZXJDb250ZXh0Rm9yUmVuZGVyZXIoKnRo
aXMsIGltYWdlU2l6ZSwgc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpOwpAQCAtMTg2Nyw3ICsxODY3
LDcgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRo
cygpCiAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDaXJjbGU6CiAgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpEaXNjOgogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6U3F1YXJlOgotICAgICAgICBsb2dp
Y2FsV2lkdGggPSAoZm9udC5mb250TWV0cmljcygpLmFzY2VudCgpICogMiAvIDMgKyAxKSAvIDIg
KyAyOworICAgICAgICBsb2dpY2FsV2lkdGggPSAoZm9udC5mb250TWV0cmljc09mUHJpbWFyeUZv
bnQoKS5hc2NlbnQoKSAqIDIgLyAzICsgMSkgLyAyICsgMjsKICAgICAgICAgYnJlYWs7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgaWYgKCFtX3RleHRXaXRoU3VmZml4LmlzRW1wdHkoKSkKQEAgLTE4
ODUsNyArMTg4NSw3IEBAIHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6Y29tcHV0ZVByZWZlcnJlZExv
Z2ljYWxXaWR0aHMoKQogCiB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnVwZGF0ZU1hcmdpbnMoKQog
ewotICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxlKCkuZm9udE1ldHJp
Y3MoKTsKKyAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MgPSBzdHlsZSgpLmZvbnRN
ZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwogCiAgICAgTGF5b3V0VW5pdCBtYXJnaW5TdGFydDsKICAg
ICBMYXlvdXRVbml0IG1hcmdpbkVuZDsKQEAgLTE5NjEsNyArMTk2MSw3IEBAIEZsb2F0UmVjdCBS
ZW5kZXJMaXN0TWFya2VyOjpyZWxhdGl2ZU1hcmtlclJlY3QoKQogICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6Q2lyY2xlOgogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6U3F1YXJlOiB7CiAgICAgICAg
IC8vIEZJWE1FOiBBcmUgdGhlc2UgcGFydGljdWxhciByb3VuZGluZyBydWxlcyBuZWNlc3Nhcnk/
Ci0gICAgICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxlKCkuZm9udE1l
dHJpY3MoKTsKKyAgICAgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gc3R5bGUo
KS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsKICAgICAgICAgaW50IGFzY2VudCA9IGZvbnRN
ZXRyaWNzLmFzY2VudCgpOwogICAgICAgICBpbnQgYnVsbGV0V2lkdGggPSAoYXNjZW50ICogMiAv
IDMgKyAxKSAvIDI7CiAgICAgICAgIHJlbGF0aXZlUmVjdCA9IEZsb2F0UmVjdCgxLCAzICogKGFz
Y2VudCAtIGFzY2VudCAqIDIgLyAzKSAvIDIsIGJ1bGxldFdpZHRoLCBidWxsZXRXaWR0aCk7CkBA
IC0xOTcxLDcgKzE5NzEsNyBAQCBGbG9hdFJlY3QgUmVuZGVyTGlzdE1hcmtlcjo6cmVsYXRpdmVN
YXJrZXJSZWN0KCkKICAgICAgICAgaWYgKG1fdGV4dFdpdGhTdWZmaXguaXNFbXB0eSgpKQogICAg
ICAgICAgICAgcmV0dXJuIEZsb2F0UmVjdCgpOwogICAgICAgICBhdXRvJiBmb250ID0gc3R5bGUo
KS5mb250Q2FzY2FkZSgpOwotICAgICAgICByZWxhdGl2ZVJlY3QgPSBGbG9hdFJlY3QoMCwgMCwg
Zm9udC53aWR0aCh0ZXh0UnVuKCkpLCBmb250LmZvbnRNZXRyaWNzKCkuaGVpZ2h0KCkpOworICAg
ICAgICByZWxhdGl2ZVJlY3QgPSBGbG9hdFJlY3QoMCwgMCwgZm9udC53aWR0aCh0ZXh0UnVuKCkp
LCBmb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmhlaWdodCgpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UnVieVJ1bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5jcHAK
aW5kZXggNWExMTVmNTcxY2EyNjg2N2NlNmFkMDIzNjI4NmUyNDQ4ZTlmZTViYi4uYTViODEyMWFl
ZTFhMThmNjJkYTljOWQ3ZmY0YjJmODFlN2RhMTEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSdWJ5UnVuLmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgUmVuZGVyUnVi
eVJ1bjo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VI
ZWlnaHQpCiAgICAgICAgIC8vIEJvcG9tb2ZvLiBXZSBuZWVkIHRvIG1vdmUgdGhlIFJlbmRlclJ1
YnlUZXh0IG92ZXIgdG8gdGhlIHJpZ2h0IHNpZGUgYW5kIGNlbnRlciBpdAogICAgICAgICAvLyB2
ZXJ0aWNhbGx5IHJlbGF0aXZlIHRvIHRoZSBiYXNlLgogICAgICAgICBjb25zdCBGb250Q2FzY2Fk
ZSYgZm9udCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKTsKLSAgICAgICAgZmxvYXQgZGlzdGFuY2VC
ZXR3ZWVuQmFzZSA9IHN0ZDo6bWF4KGZvbnQubGV0dGVyU3BhY2luZygpLCAyLjBmICogcnQtPnN0
eWxlKCkuZm9udENhc2NhZGUoKS5mb250TWV0cmljcygpLmhlaWdodCgpKTsKKyAgICAgICAgZmxv
YXQgZGlzdGFuY2VCZXR3ZWVuQmFzZSA9IHN0ZDo6bWF4KGZvbnQubGV0dGVyU3BhY2luZygpLCAy
LjBmICogcnQtPnN0eWxlKCkuZm9udENhc2NhZGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQo
KS5oZWlnaHQoKSk7CiAgICAgICAgIHNldFdpZHRoKHdpZHRoKCkgKyBkaXN0YW5jZUJldHdlZW5C
YXNlIC0gZm9udC5sZXR0ZXJTcGFjaW5nKCkpOwogICAgICAgICBpZiAoUmVuZGVyUnVieUJhc2Uq
IHJiID0gcnVieUJhc2UoKSkgewogICAgICAgICAgICAgTGF5b3V0VW5pdCBmaXJzdExpbmVUb3A7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAppbmRleCA3NzAz
MTQ1NGFmOGZhNGI5MWRjZDdiM2Q5ZmE2NzQ2ZGJhZGZiNjFiLi5iZGI5ZTA4YzNkZTY4YjA3NTEy
NmY4ZWEyYTk0ODg4ZDhiNzA3NmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZVdpbi5jcHAKQEAgLTc3MCw3ICs3NzAsNyBAQCB2b2lkIFJlbmRlclRoZW1lV2luOjph
ZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRWxlbWVu
dAogICAgIHN0eWxlLnNldEhlaWdodChMZW5ndGgoTGVuZ3RoVHlwZTo6QXV0bykpOwogCiAgICAg
Ly8gQ2FsY3VsYXRlIG91ciBtaW4taGVpZ2h0Ci0gICAgaW50IG1pbkhlaWdodCA9IHN0eWxlLmZv
bnRNZXRyaWNzKCkuaGVpZ2h0KCk7CisgICAgaW50IG1pbkhlaWdodCA9IHN0eWxlLmZvbnRNZXRy
aWNzT2ZQcmltYXJ5Rm9udCgpLmhlaWdodCgpOwogICAgIG1pbkhlaWdodCA9IHN0ZDo6bWF4KG1p
bkhlaWdodCwgZHJvcERvd25Cb3hNaW5IZWlnaHQpOwogCiAgICAgc3R5bGUuc2V0TWluSGVpZ2h0
KExlbmd0aChtaW5IZWlnaHQsIExlbmd0aFR5cGU6OkZpeGVkKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcAppbmRleCBjYTViNzQwZDkwNDRiZDY1ZTM2NmI1
N2Q3NmMzNDI4YzNmOWVlM2Y2Li4zNGFkMmI4ZmQ0NGZhZTY5OGU2NzkzYWRkYmI4YThiNzk0Yzgx
NGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAKQEAg
LTMyNCw3ICszMjQsNyBAQCB2b2lkIFRleHRCb3hQYWludGVyOjpwYWludEZvcmVncm91bmQoY29u
c3QgU3R5bGVkTWFya2VkVGV4dCYgbWFya2VkVGV4dCkKICAgICBmbG9hdCBlbXBoYXNpc01hcmtP
ZmZzZXQgPSAwOwogICAgIGNvbnN0IEF0b21TdHJpbmcmIGVtcGhhc2lzTWFyayA9IG1fZW1waGFz
aXNNYXJrRXhpc3RzQW5kSXNBYm92ZSA/IG1fc3R5bGUudGV4dEVtcGhhc2lzTWFya1N0cmluZygp
IDogbnVsbEF0b20oKTsKICAgICBpZiAoIWVtcGhhc2lzTWFyay5pc0VtcHR5KCkpCi0gICAgICAg
IGVtcGhhc2lzTWFya09mZnNldCA9ICptX2VtcGhhc2lzTWFya0V4aXN0c0FuZElzQWJvdmUgPyAt
Zm9udC5mb250TWV0cmljcygpLmFzY2VudCgpIC0gZm9udC5lbXBoYXNpc01hcmtEZXNjZW50KGVt
cGhhc2lzTWFyaykgOiBmb250LmZvbnRNZXRyaWNzKCkuZGVzY2VudCgpICsgZm9udC5lbXBoYXNp
c01hcmtBc2NlbnQoZW1waGFzaXNNYXJrKTsKKyAgICAgICAgZW1waGFzaXNNYXJrT2Zmc2V0ID0g
Km1fZW1waGFzaXNNYXJrRXhpc3RzQW5kSXNBYm92ZSA/IC1mb250LmZvbnRNZXRyaWNzT2ZQcmlt
YXJ5Rm9udCgpLmFzY2VudCgpIC0gZm9udC5lbXBoYXNpc01hcmtEZXNjZW50KGVtcGhhc2lzTWFy
aykgOiBmb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmRlc2NlbnQoKSArIGZvbnQuZW1w
aGFzaXNNYXJrQXNjZW50KGVtcGhhc2lzTWFyayk7CiAKICAgICBUZXh0UGFpbnRlciB0ZXh0UGFp
bnRlciB7IGNvbnRleHQgfTsKICAgICB0ZXh0UGFpbnRlci5zZXRGb250KGZvbnQpOwpAQCAtNDgw
LDcgKzQ4MCw3IEBAIHZvaWQgVGV4dEJveFBhaW50ZXI6OnBhaW50Q29tcG9zaXRpb25VbmRlcmxp
bmUoY29uc3QgQ29tcG9zaXRpb25VbmRlcmxpbmUmIHVuZGVyCiAgICAgLy8gQWxsIG90aGVyIG1h
cmtlZCB0ZXh0IHVuZGVybGluZXMgYXJlIDFweCB0aGljay4KICAgICAvLyBJZiB0aGVyZSdzIG5v
dCBlbm91Z2ggc3BhY2UgdGhlIHVuZGVybGluZSB3aWxsIHRvdWNoIG9yIG92ZXJsYXAgY2hhcmFj
dGVycy4KICAgICBpbnQgbGluZVRoaWNrbmVzcyA9IDE7Ci0gICAgaW50IGJhc2VsaW5lID0gbV9z
dHlsZS5mb250TWV0cmljcygpLmFzY2VudCgpOworICAgIGludCBiYXNlbGluZSA9IG1fc3R5bGUu
Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50KCk7CiAgICAgaWYgKHVuZGVybGluZS50
aGljayAmJiB0ZXh0Qm94KCkubG9naWNhbEhlaWdodCgpIC0gYmFzZWxpbmUgPj0gMikKICAgICAg
ICAgbGluZVRoaWNrbmVzcyA9IDI7CiAKQEAgLTU5MCw3ICs1OTAsNyBAQCBGbG9hdFJlY3QgVGV4
dEJveFBhaW50ZXI6OmNvbXB1dGVQYWludFJlY3QoY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zm
c2V0KQogRmxvYXRSZWN0IFRleHRCb3hQYWludGVyOjpjYWxjdWxhdGVEb2N1bWVudE1hcmtlckJv
dW5kcyhjb25zdCBJbmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yJiB0ZXh0Qm94LCBjb25z
dCBNYXJrZWRUZXh0JiBtYXJrZWRUZXh0KQogewogICAgIGF1dG8mIGZvbnQgPSB0ZXh0Qm94LT5m
b250Q2FzY2FkZSgpOwotICAgIGF1dG8gYXNjZW50ID0gZm9udC5mb250TWV0cmljcygpLmFzY2Vu
dCgpOworICAgIGF1dG8gYXNjZW50ID0gZm9udC5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5h
c2NlbnQoKTsKICAgICBhdXRvIGZvbnRTaXplID0gc3RkOjptaW4oc3RkOjptYXgoZm9udC5zaXpl
KCksIDEwLjBmKSwgNDAuMGYpOwogICAgIGF1dG8geSA9IGFzY2VudCArIDAuMTEwMzUgKiBmb250
U2l6ZTsKICAgICBhdXRvIGhlaWdodCA9IDAuMTMyNDcgKiBmb250U2l6ZTsKQEAgLTYyMSw3ICs2
MjEsNyBAQCBjb25zdCBGb250Q2FzY2FkZSYgVGV4dEJveFBhaW50ZXI6OmZvbnRDYXNjYWRlKCkg
Y29uc3QKIAogRmxvYXRQb2ludCBUZXh0Qm94UGFpbnRlcjo6dGV4dE9yaWdpbkZyb21QYWludFJl
Y3QoY29uc3QgRmxvYXRSZWN0JiBwYWludFJlY3QpIGNvbnN0CiB7Ci0gICAgRmxvYXRQb2ludCB0
ZXh0T3JpZ2luIHsgcGFpbnRSZWN0LngoKSwgcGFpbnRSZWN0LnkoKSArIGZvbnRDYXNjYWRlKCku
Zm9udE1ldHJpY3MoKS5hc2NlbnQoKSB9OworICAgIEZsb2F0UG9pbnQgdGV4dE9yaWdpbiB7IHBh
aW50UmVjdC54KCksIHBhaW50UmVjdC55KCkgKyBmb250Q2FzY2FkZSgpLmZvbnRNZXRyaWNzT2ZQ
cmltYXJ5Rm9udCgpLmFzY2VudCgpIH07CiAgICAgaWYgKHRleHRCb3goKS5pc0NvbWJpbmVkVGV4
dCgpKSB7CiAgICAgICAgIGlmIChhdXRvIG5ld09yaWdpbiA9IGRvd25jYXN0PFJlbmRlckNvbWJp
bmVUZXh0PihtX3JlbmRlcmVyKS5jb21wdXRlVGV4dE9yaWdpbihwYWludFJlY3QpKQogICAgICAg
ICAgICAgdGV4dE9yaWdpbiA9IG5ld09yaWdpbi52YWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcAppbmRleCA0ZmY0ODE2ZmM0
M2VjZTc4ZWU4OTc3MWUxNmQ4NTVmYTA1ZmZkMWM5Li4xNjMxOTgxYjZjYTlmZjNkODE1ZGRmYzFh
MzBlNjg5YjIxZjBmNjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4
dERlY29yYXRpb25QYWludGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4
dERlY29yYXRpb25QYWludGVyLmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIFRleHREZWNvcmF0aW9u
UGFpbnRlcjo6VGV4dERlY29yYXRpb25QYWludGVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
T3B0aW9uU2V0CiAvLyBQYWludCB0ZXh0LXNoYWRvdywgdW5kZXJsaW5lLCBvdmVybGluZQogdm9p
ZCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50QmFja2dyb3VuZERlY29yYXRpb25zKGNvbnN0
IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIGNvbnN0IEZs
b2F0UG9pbnQmIGJveE9yaWdpbikKIHsKLSAgICBjb25zdCBhdXRvJiBmb250TWV0cmljcyA9IG1f
bGluZVN0eWxlLmZvbnRNZXRyaWNzKCk7CisgICAgY29uc3QgYXV0byYgZm9udE1ldHJpY3MgPSBt
X2xpbmVTdHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsKICAgICBmbG9hdCB0ZXh0RGVj
b3JhdGlvblRoaWNrbmVzcyA9IG1fbGluZVN0eWxlLnRleHREZWNvcmF0aW9uVGhpY2tuZXNzKCku
cmVzb2x2ZShtX2xpbmVTdHlsZS5jb21wdXRlZEZvbnRTaXplKCksIGZvbnRNZXRyaWNzKTsKICAg
ICBGbG9hdFBvaW50IGxvY2FsT3JpZ2luID0gYm94T3JpZ2luOwogCkBAIC0yNzksNyArMjc5LDcg
QEAgdm9pZCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50QmFja2dyb3VuZERlY29yYXRpb25z
KGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGMKICAgICAgICAgaWYgKG1fZGVjb3JhdGlvbnMuY29u
dGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpKSB7CiAgICAgICAgICAgICBmbG9h
dCB0ZXh0RGVjb3JhdGlvbkJhc2VGb250U2l6ZSA9IDE2OwogICAgICAgICAgICAgYXV0byBkZWZh
dWx0R2FwID0gbV9saW5lU3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpIC8gdGV4dERlY29yYXRpb25C
YXNlRm9udFNpemU7Ci0gICAgICAgICAgICBmbG9hdCBvZmZzZXQgPSBjb21wdXRlVW5kZXJsaW5l
T2Zmc2V0KG1fbGluZVN0eWxlLnRleHRVbmRlcmxpbmVQb3NpdGlvbigpLCBtX2xpbmVTdHlsZS50
ZXh0VW5kZXJsaW5lT2Zmc2V0KCksIG1fbGluZVN0eWxlLmZvbnRNZXRyaWNzKCksIG1fdGV4dEJv
eCwgZGVmYXVsdEdhcCk7CisgICAgICAgICAgICBmbG9hdCBvZmZzZXQgPSBjb21wdXRlVW5kZXJs
aW5lT2Zmc2V0KG1fbGluZVN0eWxlLnRleHRVbmRlcmxpbmVQb3NpdGlvbigpLCBtX2xpbmVTdHls
ZS50ZXh0VW5kZXJsaW5lT2Zmc2V0KCksIG1fbGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5
Rm9udCgpLCBtX3RleHRCb3gsIGRlZmF1bHRHYXApOwogICAgICAgICAgICAgZmxvYXQgd2F2eU9m
ZnNldCA9IG1fc3R5bGVzLnVuZGVybGluZVN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6Oldh
dnkgPyBtX3dhdnlPZmZzZXQgOiAwOwogICAgICAgICAgICAgRmxvYXRSZWN0IHJlY3QobG9jYWxP
cmlnaW4sIEZsb2F0U2l6ZShtX3dpZHRoLCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcykpOwogICAg
ICAgICAgICAgcmVjdC5tb3ZlKDAsIG9mZnNldCArIHdhdnlPZmZzZXQpOwpAQCAtMzEwLDEzICsz
MTAsMTMgQEAgdm9pZCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50Rm9yZWdyb3VuZERlY29y
YXRpb25zKGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWcKICAgICBpZiAoIW1fZGVjb3JhdGlvbnMu
Y29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3VnaCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGZsb2F0IHRleHREZWNvcmF0aW9uVGhpY2tuZXNzID0gbV9saW5lU3R5bGUudGV4
dERlY29yYXRpb25UaGlja25lc3MoKS5yZXNvbHZlKG1fbGluZVN0eWxlLmNvbXB1dGVkRm9udFNp
emUoKSwgbV9saW5lU3R5bGUuZm9udE1ldHJpY3MoKSk7CisgICAgZmxvYXQgdGV4dERlY29yYXRp
b25UaGlja25lc3MgPSBtX2xpbmVTdHlsZS50ZXh0RGVjb3JhdGlvblRoaWNrbmVzcygpLnJlc29s
dmUobV9saW5lU3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpLCBtX2xpbmVTdHlsZS5mb250TWV0cmlj
c09mUHJpbWFyeUZvbnQoKSk7CiAgICAgcGFpbnRMaW5lVGhyb3VnaChtX3N0eWxlcy5saW5ldGhy
b3VnaENvbG9yLCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcywgYm94T3JpZ2luKTsKIH0KIAogdm9p
ZCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50TGluZVRocm91Z2goY29uc3QgQ29sb3ImIGNv
bG9yLCBmbG9hdCB0aGlja25lc3MsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsT3JpZ2luKQogewot
ICAgIGNvbnN0IGF1dG8mIGZvbnRNZXRyaWNzID0gbV9saW5lU3R5bGUuZm9udE1ldHJpY3MoKTsK
KyAgICBjb25zdCBhdXRvJiBmb250TWV0cmljcyA9IG1fbGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQ
cmltYXJ5Rm9udCgpOwogICAgIEZsb2F0UmVjdCByZWN0KGxvY2FsT3JpZ2luLCBGbG9hdFNpemUo
bV93aWR0aCwgdGhpY2tuZXNzKSk7CiAgICAgZmxvYXQgYXV0b1RleHREZWNvcmF0aW9uVGhpY2tu
ZXNzID0gVGV4dERlY29yYXRpb25UaGlja25lc3M6OmNyZWF0ZVdpdGhBdXRvKCkucmVzb2x2ZSht
X2xpbmVTdHlsZS5jb21wdXRlZEZvbnRTaXplKCksIGZvbnRNZXRyaWNzKTsKICAgICBhdXRvIGNl
bnRlciA9IDIgKiBmb250TWV0cmljcy5mbG9hdEFzY2VudCgpIC8gMyArIGF1dG9UZXh0RGVjb3Jh
dGlvblRoaWNrbmVzcyAvIDI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
VGV4dFBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmNw
cAppbmRleCBhNTllZWQ0NGY0YWEzNDQ2MzcyOGZiNmUyNjExNWQ4OTVlNTQ0NzljLi5mZmE3YTdh
MTRjN2FiYTkwOGJmZmNiNmZkNTAxZTEyN2U5MDM4YWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9UZXh0UGFpbnRlci5jcHAKQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIFRleHRQYWludGVy
OjpwYWludFRleHRBbmRFbXBoYXNpc01hcmtzSWZOZWVkZWQoY29uc3QgVGV4dFJ1biYgdGV4dFJ1
biwgY29ucwogICAgIHVwZGF0ZUdyYXBoaWNzQ29udGV4dChtX2NvbnRleHQsIHBhaW50U3R5bGUs
IFVzZUVtcGhhc2lzTWFya0NvbG9yKTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGV4dFJ1
bj4gb2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXJUZXh0UnVuKFN0cmluZ1ZpZXcoJm9iamVjdFJl
cGxhY2VtZW50Q2hhcmFjdGVyLCAxKSk7CiAgICAgY29uc3QgVGV4dFJ1biYgZW1waGFzaXNNYXJr
VGV4dFJ1biA9IG1fY29tYmluZWRUZXh0ID8gb2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXJUZXh0
UnVuLmdldCgpIDogdGV4dFJ1bjsKLSAgICBGbG9hdFBvaW50IGVtcGhhc2lzTWFya1RleHRPcmln
aW4gPSBtX2NvbWJpbmVkVGV4dCA/IEZsb2F0UG9pbnQoYm94T3JpZ2luLngoKSArIGJveFJlY3Qu
d2lkdGgoKSAvIDIsIGJveE9yaWdpbi55KCkgKyBtX2ZvbnQtPmZvbnRNZXRyaWNzKCkuYXNjZW50
KCkpIDogdGV4dE9yaWdpbjsKKyAgICBGbG9hdFBvaW50IGVtcGhhc2lzTWFya1RleHRPcmlnaW4g
PSBtX2NvbWJpbmVkVGV4dCA/IEZsb2F0UG9pbnQoYm94T3JpZ2luLngoKSArIGJveFJlY3Qud2lk
dGgoKSAvIDIsIGJveE9yaWdpbi55KCkgKyBtX2ZvbnQtPmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9u
dCgpLmFzY2VudCgpKSA6IHRleHRPcmlnaW47CiAgICAgaWYgKG1fY29tYmluZWRUZXh0KQogICAg
ICAgICBtX2NvbnRleHQuY29uY2F0Q1RNKHJvdGF0aW9uKGJveFJlY3QsIENsb2Nrd2lzZSkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lSW5saW5lSGVh
ZGVycy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUlubGluZUhlYWRlcnMu
aAppbmRleCBjMjRkNWNhYThlZTg5NGYzZWI1OTJjNzczNjczYzRhYTEyMDVhY2YyLi41YTk2YzU4
OWY0ZWQ5M2MxODA1YTg0OGFmMWQxYjM4Nzk3ODI5MmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbGluZS9MaW5lSW5saW5lSGVhZGVycy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9saW5lL0xpbmVJbmxpbmVIZWFkZXJzLmgKQEAgLTU2LDcgKzU2LDcgQEAg
aW5saW5lIGJvb2wgcmVxdWlyZXNMaW5lQm94Rm9yQ29udGVudChjb25zdCBSZW5kZXJJbmxpbmUm
IGZsb3csIGNvbnN0IExpbmVJbmZvJgogICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50
U3R5bGUgPSBsaW5lU3R5bGUoKnBhcmVudCwgbGluZUluZm8pOwogICAgICAgICBpZiAoZmxvd1N0
eWxlLmxpbmVIZWlnaHQoKSAhPSBwYXJlbnRTdHlsZS5saW5lSGVpZ2h0KCkKICAgICAgICAgICAg
IHx8IGZsb3dTdHlsZS52ZXJ0aWNhbEFsaWduKCkgIT0gcGFyZW50U3R5bGUudmVydGljYWxBbGln
bigpCi0gICAgICAgICAgICB8fCAhcGFyZW50U3R5bGUuZm9udENhc2NhZGUoKS5mb250TWV0cmlj
cygpLmhhc0lkZW50aWNhbEFzY2VudERlc2NlbnRBbmRMaW5lR2FwKGZsb3dTdHlsZS5mb250Q2Fz
Y2FkZSgpLmZvbnRNZXRyaWNzKCkpKQorICAgICAgICAgICAgfHwgIXBhcmVudFN0eWxlLmZvbnRD
YXNjYWRlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuaGFzSWRlbnRpY2FsQXNjZW50RGVz
Y2VudEFuZExpbmVHYXAoZmxvd1N0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3NPZlByaW1h
cnlGb250KCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TEJsb2NrLmNwcAppbmRleCBlZDhmMjBmOTg1YmFhMjU0NzQ4NDFiMjY4YTQ1NDk3OTY0ZWYyZWJl
Li5kMDViYTQ3Njk0MzQ4YzFmMzBlYjFjYTAyNmVjZGU0NTlhZWZlYjEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcApA
QCAtNzksNyArNzksNyBAQCBzdGF0aWMgTGF5b3V0VW5pdCBheGlzSGVpZ2h0KGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSkKIAogICAgIC8vIE90aGVyd2lzZSwgdGhlIGlkZWEgaXMgdG8gdHJ5IGFu
ZCB1c2UgdGhlIG1pZGRsZSBvZiBvcGVyYXRvcnMgYXMgdGhlIG1hdGggYXhpcyB3aGljaCB3ZSB0
aHVzIGFwcHJveGltYXRlIGJ5ICJoYWxmIG9mIHRoZSB4LWhlaWdodCIuCiAgICAgLy8gTm90ZSB0
aGF0IEdlY2tvIGhhcyBhIHNsb3dlciBidXQgbW9yZSBhY2N1cmF0ZSB2ZXJzaW9uIHRoYXQgbWVh
c3VyZXMgaGFsZiBvZiB0aGUgaGVpZ2h0IG9mIFUrMjIxMiBNSU5VUyBTSUdOLgotICAgIHJldHVy
biBMYXlvdXRVbml0KHN0eWxlLmZvbnRNZXRyaWNzKCkueEhlaWdodCgpIC8gMik7CisgICAgcmV0
dXJuIExheW91dFVuaXQoc3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkueEhlaWdodCgp
IC8gMik7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyTWF0aE1MQmxvY2s6Om1hdGhBeGlzSGVpZ2h0
KCkgY29uc3QKQEAgLTE2MSw3ICsxNjEsNyBAQCBMYXlvdXRVbml0IHRvVXNlclVuaXRzKGNvbnN0
IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCYgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYgcwogICAg
IGNhc2UgTWF0aE1MRWxlbWVudDo6TGVuZ3RoVHlwZTo6RW06CiAgICAgICAgIHJldHVybiBMYXlv
dXRVbml0KGxlbmd0aC52YWx1ZSAqIHN0eWxlLmZvbnRDYXNjYWRlKCkuc2l6ZSgpKTsKICAgICBj
YXNlIE1hdGhNTEVsZW1lbnQ6Okxlbmd0aFR5cGU6OkV4OgotICAgICAgICByZXR1cm4gTGF5b3V0
VW5pdChsZW5ndGgudmFsdWUgKiBzdHlsZS5mb250TWV0cmljcygpLnhIZWlnaHQoKSk7CisgICAg
ICAgIHJldHVybiBMYXlvdXRVbml0KGxlbmd0aC52YWx1ZSAqIHN0eWxlLmZvbnRNZXRyaWNzT2ZQ
cmltYXJ5Rm9udCgpLnhIZWlnaHQoKSk7CiAgICAgY2FzZSBNYXRoTUxFbGVtZW50OjpMZW5ndGhU
eXBlOjpNYXRoVW5pdDoKICAgICAgICAgcmV0dXJuIExheW91dFVuaXQobGVuZ3RoLnZhbHVlICog
c3R5bGUuZm9udENhc2NhZGUoKS5zaXplKCkgLyAxOCk7CiAgICAgY2FzZSBNYXRoTUxFbGVtZW50
OjpMZW5ndGhUeXBlOjpQZXJjZW50YWdlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAKaW5kZXggMmEzOGE2OGMwM2ViNzg0MGJk
MDI4YmY5MGZlYmUyNDA3N2E0YzgwYi4uYzZjYTEyZTUzZTFlZGUyMjAzYjM2Zjk0MjZmYTc5ZDQ1
MGVlN2U5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFJvb3QuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgUmVuZGVyTWF0aE1MUm9vdDo6
VmVydGljYWxQYXJhbWV0ZXJzIFJlbmRlck1hdGhNTFJvb3Q6OnZlcnRpY2FsUGFyYW1ldGVycygp
CiAgICAgICAgIC8vIFJhZGljYWxEZWdyZWVCb3R0b21SYWlzZVBlcmNlbnQ6IFN1Z2dlc3RlZCB2
YWx1ZSBpcyA2MCUuCiAgICAgICAgIHBhcmFtZXRlcnMucnVsZVRoaWNrbmVzcyA9IHJ1bGVUaGlj
a25lc3NGYWxsYmFjaygpOwogICAgICAgICBpZiAoc3R5bGUoKS5tYXRoU3R5bGUoKSA9PSBNYXRo
U3R5bGU6Ok5vcm1hbCkKLSAgICAgICAgICAgIHBhcmFtZXRlcnMudmVydGljYWxHYXAgPSBwYXJh
bWV0ZXJzLnJ1bGVUaGlja25lc3MgKyBzdHlsZSgpLmZvbnRNZXRyaWNzKCkueEhlaWdodCgpIC8g
NDsKKyAgICAgICAgICAgIHBhcmFtZXRlcnMudmVydGljYWxHYXAgPSBwYXJhbWV0ZXJzLnJ1bGVU
aGlja25lc3MgKyBzdHlsZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLnhIZWlnaHQoKSAv
IDQ7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBhcmFtZXRlcnMudmVydGljYWxHYXAgPSA1
ICogcGFyYW1ldGVycy5ydWxlVGhpY2tuZXNzIC8gNDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAKaW5kZXggNjA5
NDM4OGEzMWIyYzFkMWE5MjU4OTIyOTcyZTBmMTFkOGM5YThhYy4uNDI4Mjk3MzIxZmNkMjRkMTBh
MDBkODE5YmQzZDA2Yjk5NGJiNjY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwCkBAIC0yNDIsMTQgKzI0Miwx
NCBAQCBhdXRvIFJlbmRlck1hdGhNTFNjcmlwdHM6OnZlcnRpY2FsUGFyYW1ldGVycygpIGNvbnN0
IC0+IFZlcnRpY2FsUGFyYW1ldGVycwogICAgICAgICBwYXJhbWV0ZXJzLnN1cGVyc2NyaXB0Qm90
dG9tTWF4V2l0aFN1YnNjcmlwdCA9IG1hdGhEYXRhLT5nZXRNYXRoQ29uc3RhbnQocHJpbWFyeUZv
bnQsIE9wZW5UeXBlTWF0aERhdGE6OlN1cGVyc2NyaXB0Qm90dG9tTWF4V2l0aFN1YnNjcmlwdCk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gRGVmYXVsdCBoZXVyaXN0aWMgdmFsdWVzIHdoZW4g
eW91IGRvIG5vdCBoYXZlIGEgZm9udC4KLSAgICAgICAgcGFyYW1ldGVycy5zdWJzY3JpcHRTaGlm
dERvd24gPSBzdHlsZSgpLmZvbnRNZXRyaWNzKCkueEhlaWdodCgpIC8gMzsKLSAgICAgICAgcGFy
YW1ldGVycy5zdXBlcnNjcmlwdFNoaWZ0VXAgPSBzdHlsZSgpLmZvbnRNZXRyaWNzKCkueEhlaWdo
dCgpOwotICAgICAgICBwYXJhbWV0ZXJzLnN1YnNjcmlwdEJhc2VsaW5lRHJvcE1pbiA9IHN0eWxl
KCkuZm9udE1ldHJpY3MoKS54SGVpZ2h0KCkgLyAyOwotICAgICAgICBwYXJhbWV0ZXJzLnN1cGVy
U2NyaXB0QmFzZWxpbmVEcm9wTWF4ID0gc3R5bGUoKS5mb250TWV0cmljcygpLnhIZWlnaHQoKSAv
IDI7CisgICAgICAgIHBhcmFtZXRlcnMuc3Vic2NyaXB0U2hpZnREb3duID0gc3R5bGUoKS5mb250
TWV0cmljc09mUHJpbWFyeUZvbnQoKS54SGVpZ2h0KCkgLyAzOworICAgICAgICBwYXJhbWV0ZXJz
LnN1cGVyc2NyaXB0U2hpZnRVcCA9IHN0eWxlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCku
eEhlaWdodCgpOworICAgICAgICBwYXJhbWV0ZXJzLnN1YnNjcmlwdEJhc2VsaW5lRHJvcE1pbiA9
IHN0eWxlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkueEhlaWdodCgpIC8gMjsKKyAgICAg
ICAgcGFyYW1ldGVycy5zdXBlclNjcmlwdEJhc2VsaW5lRHJvcE1heCA9IHN0eWxlKCkuZm9udE1l
dHJpY3NPZlByaW1hcnlGb250KCkueEhlaWdodCgpIC8gMjsKICAgICAgICAgcGFyYW1ldGVycy5z
dWJTdXBlcnNjcmlwdEdhcE1pbiA9IHN0eWxlKCkuZm9udENhc2NhZGUoKS5zaXplKCkgLyA1Owot
ICAgICAgICBwYXJhbWV0ZXJzLnN1cGVyc2NyaXB0Qm90dG9tTWluID0gc3R5bGUoKS5mb250TWV0
cmljcygpLnhIZWlnaHQoKSAvIDQ7Ci0gICAgICAgIHBhcmFtZXRlcnMuc3Vic2NyaXB0VG9wTWF4
ID0gNCAqIHN0eWxlKCkuZm9udE1ldHJpY3MoKS54SGVpZ2h0KCkgLyA1OwotICAgICAgICBwYXJh
bWV0ZXJzLnN1cGVyc2NyaXB0Qm90dG9tTWF4V2l0aFN1YnNjcmlwdCA9IDQgKiBzdHlsZSgpLmZv
bnRNZXRyaWNzKCkueEhlaWdodCgpIC8gNTsKKyAgICAgICAgcGFyYW1ldGVycy5zdXBlcnNjcmlw
dEJvdHRvbU1pbiA9IHN0eWxlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkueEhlaWdodCgp
IC8gNDsKKyAgICAgICAgcGFyYW1ldGVycy5zdWJzY3JpcHRUb3BNYXggPSA0ICogc3R5bGUoKS5m
b250TWV0cmljc09mUHJpbWFyeUZvbnQoKS54SGVpZ2h0KCkgLyA1OworICAgICAgICBwYXJhbWV0
ZXJzLnN1cGVyc2NyaXB0Qm90dG9tTWF4V2l0aFN1YnNjcmlwdCA9IDQgKiBzdHlsZSgpLmZvbnRN
ZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLnhIZWlnaHQoKSAvIDU7CiAgICAgfQogICAgIHJldHVybiBw
YXJhbWV0ZXJzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwCmluZGV4IGM3MDMyYzU1Yjc5MDU2OWVjZjdj
YWQzMTE2NDY0MGY3N2Y0NDJjOWQuLjk4YTJiOTIxN2QyNDZkNmVkYmU4OTU0YzhhZjRjMWI5Zjdl
OWE0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MVW5kZXJPdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHAKQEAgLTI0OCw3ICsyNDgsNyBAQCBSZW5kZXJNYXRo
TUxVbmRlck92ZXI6OlZlcnRpY2FsUGFyYW1ldGVycyBSZW5kZXJNYXRoTUxVbmRlck92ZXI6OnZl
cnRpY2FsUGFyYW1ldAogICAgICAgICBwYXJhbWV0ZXJzLm92ZXJHYXBNaW4gPSAzICogZGVmYXVs
dExpbmVUaGlja25lc3M7CiAgICAgICAgIHBhcmFtZXRlcnMudW5kZXJFeHRyYURlc2NlbmRlciA9
IGRlZmF1bHRMaW5lVGhpY2tuZXNzOwogICAgICAgICBwYXJhbWV0ZXJzLm92ZXJFeHRyYUFzY2Vu
ZGVyID0gZGVmYXVsdExpbmVUaGlja25lc3M7Ci0gICAgICAgIHBhcmFtZXRlcnMuYWNjZW50QmFz
ZUhlaWdodCA9IHN0eWxlKCkuZm9udE1ldHJpY3MoKS54SGVpZ2h0KCk7CisgICAgICAgIHBhcmFt
ZXRlcnMuYWNjZW50QmFzZUhlaWdodCA9IHN0eWxlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250
KCkueEhlaWdodCgpOwogICAgICAgICBwYXJhbWV0ZXJzLnVzZVVuZGVyT3ZlckJhckZhbGxCYWNr
ID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggNTZmMDMzZTQ1N2Ni
NzgyNDE0M2Q1ZTE4MjQ5OGUwZGYwODRlYjk3Mi4uZTY4MDQ3NWQ3Nzg2YmU1ZmM5NDMzMzEwZDQz
NTllMjlmMzIyMmY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuY3BwCkBAIC0xODE1LDkgKzE4MTUsOSBAQCBjb25zdCBGb250Q2FzY2FkZSYgUmVu
ZGVyU3R5bGU6OmZvbnRDYXNjYWRlKCkgY29uc3QKICAgICByZXR1cm4gbV9pbmhlcml0ZWREYXRh
LT5mb250Q2FzY2FkZTsKIH0KIAotY29uc3QgRm9udE1ldHJpY3MmIFJlbmRlclN0eWxlOjpmb250
TWV0cmljcygpIGNvbnN0Citjb25zdCBGb250TWV0cmljcyYgUmVuZGVyU3R5bGU6OmZvbnRNZXRy
aWNzT2ZQcmltYXJ5Rm9udCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5oZXJpdGVkRGF0YS0+
Zm9udENhc2NhZGUuZm9udE1ldHJpY3MoKTsKKyAgICByZXR1cm4gbV9pbmhlcml0ZWREYXRhLT5m
b250Q2FzY2FkZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsKIH0KIAogY29uc3QgRm9udENh
c2NhZGVEZXNjcmlwdGlvbiYgUmVuZGVyU3R5bGU6OmZvbnREZXNjcmlwdGlvbigpIGNvbnN0CkBA
IC0xODk2LDcgKzE4OTYsNyBAQCBpbnQgUmVuZGVyU3R5bGU6OmNvbXB1dGVMaW5lSGVpZ2h0KGNv
bnN0IExlbmd0aCYgbGluZUhlaWdodExlbmd0aCkgY29uc3QKIHsKICAgICAvLyBOZWdhdGl2ZSB2
YWx1ZSBtZWFucyB0aGUgbGluZSBoZWlnaHQgaXMgbm90IHNldC4gVXNlIHRoZSBmb250J3MgYnVp
bHQtaW4gc3BhY2luZy4KICAgICBpZiAobGluZUhlaWdodExlbmd0aC5pc05lZ2F0aXZlKCkpCi0g
ICAgICAgIHJldHVybiBmb250TWV0cmljcygpLmxpbmVTcGFjaW5nKCk7CisgICAgICAgIHJldHVy
biBmb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5saW5lU3BhY2luZygpOwogCiAgICAgaWYgKGxp
bmVIZWlnaHRMZW5ndGguaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpCiAgICAgICAgIHJldHVybiBt
aW5pbXVtVmFsdWVGb3JMZW5ndGgobGluZUhlaWdodExlbmd0aCwgY29tcHV0ZWRGb250UGl4ZWxT
aXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApp
bmRleCA0ODg3NTE3OTc2MzE3MDM1M2ZhYTE5ZGRhZTQ3NzAwYjhjNTAwNTIwLi4xOWFiYzY4YzBk
YmMyY2UzOTJjMTNjMDAyOThiOTI1ZTUwOGFjODVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtMzU2LDcgKzM1Niw3IEBAIHB1YmxpYzoKICAg
ICBUYWJsZUxheW91dFR5cGUgdGFibGVMYXlvdXQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxUYWJsZUxheW91dFR5cGU+KG1fbm9uSW5oZXJpdGVkRmxhZ3MudGFibGVMYXlvdXQpOyB9CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBGb250Q2FzY2FkZSYgZm9udENhc2NhZGUoKSBjb25z
dDsKLSAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3NP
ZlByaW1hcnlGb250KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgRm9udENhc2Nh
ZGVEZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uKCkgY29uc3Q7CiAgICAgZmxvYXQgc3BlY2lm
aWVkRm9udFNpemUoKSBjb25zdDsKICAgICBmbG9hdCBjb21wdXRlZEZvbnRTaXplKCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGlu
ZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVU
ZXh0LmNwcAppbmRleCA5YTM5YmQxYjRlM2ZjZWQ3YzE5MzMxYWM3ODEyNDk0YWYyMzE5NzI1Li45
NTI2YWNlYzhjMWU0ZTAxYjU5YWY5MzAwYmM4ZmRiN2ZlMTBmYWM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAKQEAgLTE1
NSw3ICsxNTUsNyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyU1ZHSW5saW5lVGV4dDo6cG9zaXRp
b25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsCiAgICAgaWYgKCFmaXJzdFRleHRC
b3goKSB8fCB0ZXh0KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBv
c2l0aW9uKDAsIEFmZmluaXR5OjpEb3duc3RyZWFtKTsKIAotICAgIGZsb2F0IGJhc2VsaW5lID0g
bV9zY2FsZWRGb250LmZvbnRNZXRyaWNzKCkuZmxvYXRBc2NlbnQoKTsKKyAgICBmbG9hdCBiYXNl
bGluZSA9IG1fc2NhbGVkRm9udC5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5mbG9hdEFzY2Vu
dCgpOwogCiAgICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9jayA9IHRoaXMtPmNvbnRhaW5p
bmdCbG9jaygpOwogICAgIEFTU0VSVChjb250YWluaW5nQmxvY2spOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKaW5kZXggNGQzMmE4MThi
Zjg3YWZhZjdmOTMzZjA1MzkyODYxNjhiYmVkYWUzZi4uYzgwNDIzNjNhZTIzMjg0ODVjNmEzZGMw
OTZlNjM4Yzg3M2U1OTcwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR0lubGluZVRleHRCb3guY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgRmxvYXRSZWN0IFNWR0lu
bGluZVRleHRCb3g6OnNlbGVjdGlvblJlY3RGb3JUZXh0RnJhZ21lbnQoY29uc3QgU1ZHVGV4dEZy
YWdtZW50JgogICAgIEFTU0VSVChzY2FsaW5nRmFjdG9yKTsKIAogICAgIGNvbnN0IEZvbnRDYXNj
YWRlJiBzY2FsZWRGb250ID0gcmVuZGVyZXIoKS5zY2FsZWRGb250KCk7Ci0gICAgY29uc3QgRm9u
dE1ldHJpY3MmIHNjYWxlZEZvbnRNZXRyaWNzID0gc2NhbGVkRm9udC5mb250TWV0cmljcygpOwor
ICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBzY2FsZWRGb250TWV0cmljcyA9IHNjYWxlZEZvbnQuZm9u
dE1ldHJpY3NPZlByaW1hcnlGb250KCk7CiAgICAgRmxvYXRQb2ludCB0ZXh0T3JpZ2luKGZyYWdt
ZW50LngsIGZyYWdtZW50LnkpOwogICAgIGlmIChzY2FsaW5nRmFjdG9yICE9IDEpCiAgICAgICAg
IHRleHRPcmlnaW4uc2NhbGUoc2NhbGluZ0ZhY3Rvcik7CkBAIC01MTEsNyArNTExLDcgQEAgdm9p
ZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb25XaXRoU3R5bGUoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBPcHRpb24KIAogICAgIEZsb2F0UG9pbnQgZGVjb3JhdGlvbk9yaWdpbihm
cmFnbWVudC54LCBmcmFnbWVudC55KTsKICAgICBmbG9hdCB3aWR0aCA9IGZyYWdtZW50LndpZHRo
OwotICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBzY2FsZWRGb250TWV0cmljcyA9IHNjYWxlZEZvbnQu
Zm9udE1ldHJpY3MoKTsKKyAgICBjb25zdCBGb250TWV0cmljcyYgc2NhbGVkRm9udE1ldHJpY3Mg
PSBzY2FsZWRGb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwogCiAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgIGlmIChzY2FsaW5nRmFj
dG9yICE9IDEpIHsKQEAgLTU0Niw3ICs1NDYsNyBAQCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBh
aW50VGV4dFdpdGhTaGFkb3dzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgUmVuZAog
ICAgICAgICB0ZXh0U2l6ZS5zY2FsZShzY2FsaW5nRmFjdG9yKTsKICAgICB9CiAKLSAgICBGbG9h
dFJlY3Qgc2hhZG93UmVjdChGbG9hdFBvaW50KHRleHRPcmlnaW4ueCgpLCB0ZXh0T3JpZ2luLnko
KSAtIHNjYWxlZEZvbnQuZm9udE1ldHJpY3MoKS5mbG9hdEFzY2VudCgpKSwgdGV4dFNpemUpOwor
ICAgIEZsb2F0UmVjdCBzaGFkb3dSZWN0KEZsb2F0UG9pbnQodGV4dE9yaWdpbi54KCksIHRleHRP
cmlnaW4ueSgpIC0gc2NhbGVkRm9udC5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5mbG9hdEFz
Y2VudCgpKSwgdGV4dFNpemUpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0KiB1c2VkQ29udGV4dCA9
ICZjb250ZXh0OwogICAgIGRvIHsKQEAgLTYxMyw3ICs2MTMsNyBAQCBGbG9hdFJlY3QgU1ZHSW5s
aW5lVGV4dEJveDo6Y2FsY3VsYXRlQm91bmRhcmllcygpIGNvbnN0CiAgICAgZmxvYXQgc2NhbGlu
Z0ZhY3RvciA9IHJlbmRlcmVyKCkuc2NhbGluZ0ZhY3RvcigpOwogICAgIEFTU0VSVChzY2FsaW5n
RmFjdG9yKTsKIAotICAgIGZsb2F0IGJhc2VsaW5lID0gcmVuZGVyZXIoKS5zY2FsZWRGb250KCku
Zm9udE1ldHJpY3MoKS5mbG9hdEFzY2VudCgpIC8gc2NhbGluZ0ZhY3RvcjsKKyAgICBmbG9hdCBi
YXNlbGluZSA9IHJlbmRlcmVyKCkuc2NhbGVkRm9udCgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9u
dCgpLmZsb2F0QXNjZW50KCkgLyBzY2FsaW5nRmFjdG9yOwogCiAgICAgQWZmaW5lVHJhbnNmb3Jt
IGZyYWdtZW50VHJhbnNmb3JtOwogICAgIHVuc2lnbmVkIHRleHRGcmFnbWVudHNTaXplID0gbV90
ZXh0RnJhZ21lbnRzLnNpemUoKTsKQEAgLTY0OCw3ICs2NDgsNyBAQCBib29sIFNWR0lubGluZVRl
eHRCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0
UmVzdWx0JgogICAgICAgICAgICAgICAgIGZsb2F0IHNjYWxpbmdGYWN0b3IgPSByZW5kZXJlcigp
LnNjYWxpbmdGYWN0b3IoKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoc2NhbGluZ0ZhY3Rvcik7
CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgZmxvYXQgYmFzZWxpbmUgPSByZW5k
ZXJlcigpLnNjYWxlZEZvbnQoKS5mb250TWV0cmljcygpLmZsb2F0QXNjZW50KCkgLyBzY2FsaW5n
RmFjdG9yOworICAgICAgICAgICAgICAgIGZsb2F0IGJhc2VsaW5lID0gcmVuZGVyZXIoKS5zY2Fs
ZWRGb250KCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuZmxvYXRBc2NlbnQoKSAvIHNjYWxp
bmdGYWN0b3I7CiAKICAgICAgICAgICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gZnJhZ21lbnRUcmFu
c2Zvcm07CiAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBmcmFnbWVudCA6IG1fdGV4dEZyYWdt
ZW50cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0
TGF5b3V0RW5naW5lQmFzZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmUuY3BwCmluZGV4IDdiZTIwZDg0MTM4MWRlODVlMDI0
NTQ4OGZlNWVlNTlhNmY3MTJjN2QuLjZjMjI1NGQxZmY4MTYzNzE3MjY2NmU3MTVmMWViNWM2ODRl
OTJiNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExh
eW91dEVuZ2luZUJhc2VsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZS5jcHAKQEAgLTQ4LDkgKzQ4LDkgQEAgZmxvYXQg
U1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lOjpjYWxjdWxhdGVCYXNlbGluZVNoaWZ0KGNvbnN0
IFNWR1JlbmRlclN0eWxlJgogICAgIGNhc2UgQmFzZWxpbmVTaGlmdDo6QmFzZWxpbmU6CiAgICAg
ICAgIHJldHVybiAwOwogICAgIGNhc2UgQmFzZWxpbmVTaGlmdDo6U3ViOgotICAgICAgICByZXR1
cm4gLW1fZm9udC5mb250TWV0cmljcygpLmZsb2F0SGVpZ2h0KCkgLyAyOworICAgICAgICByZXR1
cm4gLW1fZm9udC5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5mbG9hdEhlaWdodCgpIC8gMjsK
ICAgICBjYXNlIEJhc2VsaW5lU2hpZnQ6OlN1cGVyOgotICAgICAgICByZXR1cm4gbV9mb250LmZv
bnRNZXRyaWNzKCkuZmxvYXRIZWlnaHQoKSAvIDI7CisgICAgICAgIHJldHVybiBtX2ZvbnQuZm9u
dE1ldHJpY3NPZlByaW1hcnlGb250KCkuZmxvYXRIZWlnaHQoKSAvIDI7CiAgICAgY2FzZSBCYXNl
bGluZVNoaWZ0OjpMZW5ndGg6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTExNCw3ICsxMTQs
NyBAQCBmbG9hdCBTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmU6OmNhbGN1bGF0ZUFsaWdubWVu
dEJhc2VsaW5lU2hpZnQoYm9vbCBpc1ZlcnRpYwogICAgICAgICBBU1NFUlQoYmFzZWxpbmUgIT0g
QWxpZ25tZW50QmFzZWxpbmU6OkF1dG8pOwogICAgIH0KIAotICAgIGNvbnN0IEZvbnRNZXRyaWNz
JiBmb250TWV0cmljcyA9IG1fZm9udC5mb250TWV0cmljcygpOworICAgIGNvbnN0IEZvbnRNZXRy
aWNzJiBmb250TWV0cmljcyA9IG1fZm9udC5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsKIAog
ICAgIC8vIE5vdGU6IGh0dHA6Ly93aWtpLmFwYWNoZS5vcmcveG1sZ3JhcGhpY3MtZm9wL0xpbmVM
YXlvdXQvQWxpZ25tZW50SGFuZGxpbmcKICAgICBzd2l0Y2ggKGJhc2VsaW5lKSB7CkBAIC0xOTUs
NyArMTk1LDcgQEAgZmxvYXQgU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lOjpjYWxjdWxhdGVH
bHlwaEFkdmFuY2VBbmRPcmllbnRhdGlvbihib29sIGlzVmUKICAgICAvLyBTcGVjOiBJZiBpZiB0
aGUgJ2dseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsJyByZXN1bHRzIGluIGFuIG9yaWVudGF0aW9u
IGFuZ2xlIHRoYXQgaXMgbm90IGEgbXVsdGlwbGUgb2YKICAgICAvLyAxODAgZGVncmVlcywgdGhl
biB0aGUgY3VycmVudCB0ZXh0IHBvc2l0aW9uIGlzIGluY3JlbWVudGVkIGFjY29yZGluZyB0byB0
aGUgaG9yaXpvbnRhbCBtZXRyaWNzIG9mIHRoZSBnbHlwaC4KIAotICAgIGNvbnN0IEZvbnRNZXRy
aWNzJiBmb250TWV0cmljcyA9IG1fZm9udC5mb250TWV0cmljcygpOworICAgIGNvbnN0IEZvbnRN
ZXRyaWNzJiBmb250TWV0cmljcyA9IG1fZm9udC5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsK
IAogICAgIC8vIFZlcnRpY2FsIG9yaWVudGF0aW9uIGhhbmRsaW5nLgogICAgIGlmIChpc1ZlcnRp
Y2FsVGV4dCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdU
ZXh0TWV0cmljcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRy
aWNzLmNwcAppbmRleCAzOTA5MWVmOGFmM2Q5YjMwNDhkYzdiMmIyY2Y0ODIxMTk5NjVmYzViLi5m
MWYzMDNkNmQzMDM2NDliY2Q3NzM1NWZmYjM1MTA3MTAxZGY2MDQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzLmNwcApAQCAtNTAsNyArNTAsNyBA
QCBTVkdUZXh0TWV0cmljczo6U1ZHVGV4dE1ldHJpY3MoUmVuZGVyU1ZHSW5saW5lVGV4dCYgdGV4
dFJlbmRlcmVyLCBjb25zdCBUZXh0UnVuJgogICAgIG1fd2lkdGggPSBzY2FsZWRGb250LndpZHRo
KHJ1bikgLyBzY2FsaW5nRmFjdG9yOwogICAgIGxlbmd0aCA9IHJ1bi5sZW5ndGgoKTsKICAgICBt
X2dseXBoLm5hbWUgPSBlbXB0eVN0cmluZygpOwotICAgIG1faGVpZ2h0ID0gc2NhbGVkRm9udC5m
b250TWV0cmljcygpLmZsb2F0SGVpZ2h0KCkgLyBzY2FsaW5nRmFjdG9yOworICAgIG1faGVpZ2h0
ID0gc2NhbGVkRm9udC5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5mbG9hdEhlaWdodCgpIC8g
c2NhbGluZ0ZhY3RvcjsKIAogICAgIG1fZ2x5cGgudW5pY29kZVN0cmluZyA9IHJ1bi5pczhCaXQo
KSA/IFN0cmluZyhydW4uY2hhcmFjdGVyczgoKSwgbGVuZ3RoKSA6IFN0cmluZyhydW4uY2hhcmFj
dGVyczE2KCksIGxlbmd0aCk7CiAgICAgbV9nbHlwaC5pc1ZhbGlkID0gdHJ1ZTsKQEAgLTg2LDcg
Kzg2LDcgQEAgU1ZHVGV4dE1ldHJpY3M6OlNWR1RleHRNZXRyaWNzKFJlbmRlclNWR0lubGluZVRl
eHQmIHRleHQsIHVuc2lnbmVkIGxlbmd0aCwgZmxvYXQKICAgICBBU1NFUlQoc2NhbGluZ0ZhY3Rv
cik7CiAKICAgICBtX3dpZHRoID0gd2lkdGggLyBzY2FsaW5nRmFjdG9yOwotICAgIG1faGVpZ2h0
ID0gdGV4dC5zY2FsZWRGb250KCkuZm9udE1ldHJpY3MoKS5mbG9hdEhlaWdodCgpIC8gc2NhbGlu
Z0ZhY3RvcjsKKyAgICBtX2hlaWdodCA9IHRleHQuc2NhbGVkRm9udCgpLmZvbnRNZXRyaWNzT2ZQ
cmltYXJ5Rm9udCgpLmZsb2F0SGVpZ2h0KCkgLyBzY2FsaW5nRmFjdG9yOwogCiAgICAgbV9sZW5n
dGggPSBsZW5ndGg7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1RleHRRdWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRR
dWVyeS5jcHAKaW5kZXggZGU5ZWIxOTE3ZmRhNzk0YTcwMTM1MDNiZDU1ZjI5ZTdjNzg4NTViNC4u
N2M5Y2E5OTk2MzU2OWVjYzRmZDA5MDRiNjc3YjUyMDNlMjNhZDRlNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UXVlcnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFF1ZXJ5LmNwcApAQCAtNDYzLDcgKzQ2Myw3IEBA
IHN0YXRpYyBpbmxpbmUgdm9pZCBjYWxjdWxhdGVHbHlwaEJvdW5kYXJpZXMoU1ZHVGV4dFF1ZXJ5
OjpEYXRhKiBxdWVyeURhdGEsIGNvbnN0CiAgICAgZmxvYXQgc2NhbGluZ0ZhY3RvciA9IHF1ZXJ5
RGF0YS0+dGV4dFJlbmRlcmVyLT5zY2FsaW5nRmFjdG9yKCk7CiAgICAgQVNTRVJUKHNjYWxpbmdG
YWN0b3IpOwogCi0gICAgZXh0ZW50LnNldExvY2F0aW9uKEZsb2F0UG9pbnQoZnJhZ21lbnQueCwg
ZnJhZ21lbnQueSAtIHF1ZXJ5RGF0YS0+dGV4dFJlbmRlcmVyLT5zY2FsZWRGb250KCkuZm9udE1l
dHJpY3MoKS5mbG9hdEFzY2VudCgpIC8gc2NhbGluZ0ZhY3RvcikpOworICAgIGV4dGVudC5zZXRM
b2NhdGlvbihGbG9hdFBvaW50KGZyYWdtZW50LngsIGZyYWdtZW50LnkgLSBxdWVyeURhdGEtPnRl
eHRSZW5kZXJlci0+c2NhbGVkRm9udCgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmZsb2F0
QXNjZW50KCkgLyBzY2FsaW5nRmFjdG9yKSk7CiAKICAgICBpZiAoc3RhcnRQb3NpdGlvbikgewog
ICAgICAgICBTVkdUZXh0TWV0cmljcyBtZXRyaWNzID0gU1ZHVGV4dE1ldHJpY3M6Om1lYXN1cmVD
aGFyYWN0ZXJSYW5nZSgqcXVlcnlEYXRhLT50ZXh0UmVuZGVyZXIsIGZyYWdtZW50LmNoYXJhY3Rl
ck9mZnNldCwgc3RhcnRQb3NpdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJGaXJzdExldHRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJGaXJzdExldHRlci5j
cHAKaW5kZXggMjVjOTYwZjBlMGFmYzEwMjUxYzZkMzY0ZDI3ZDQ0N2NmNjRjZWY3MS4uZjcyZWY5
MGQyNDI3OTY4OTM2MWVkMzMxOWU4MjAxMDQzNDA1NDQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyRmlyc3RMZXR0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRl
ckZpcnN0TGV0dGVyLmNwcApAQCAtNTEsNyArNTEsNyBAQCBzdGF0aWMgUmVuZGVyU3R5bGUgc3R5
bGVGb3JGaXJzdExldHRlcihjb25zdCBSZW5kZXJCbG9jayYgZmlyc3RMZXR0ZXJCbG9jaywgY29u
cwogCiAgICAgLy8gV2UgaGF2ZSB0byBjb21wdXRlIHRoZSBjb3JyZWN0IGZvbnQtc2l6ZSBmb3Ig
dGhlIGZpcnN0LWxldHRlciBpZiBpdCBoYXMgYW4gaW5pdGlhbCBsZXR0ZXIgaGVpZ2h0IHNldC4K
ICAgICBhdXRvKiBwYXJhZ3JhcGggPSBmaXJzdExldHRlckNvbnRhaW5lci5pc1JlbmRlckJsb2Nr
RmxvdygpID8gJmZpcnN0TGV0dGVyQ29udGFpbmVyIDogZmlyc3RMZXR0ZXJDb250YWluZXIuY29u
dGFpbmluZ0Jsb2NrKCk7Ci0gICAgaWYgKGZpcnN0TGV0dGVyU3R5bGUuaW5pdGlhbExldHRlckhl
aWdodCgpID49IDEgJiYgZmlyc3RMZXR0ZXJTdHlsZS5mb250TWV0cmljcygpLmhhc0NhcEhlaWdo
dCgpICYmIHBhcmFncmFwaC0+c3R5bGUoKS5mb250TWV0cmljcygpLmhhc0NhcEhlaWdodCgpKSB7
CisgICAgaWYgKGZpcnN0TGV0dGVyU3R5bGUuaW5pdGlhbExldHRlckhlaWdodCgpID49IDEgJiYg
Zmlyc3RMZXR0ZXJTdHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5oYXNDYXBIZWlnaHQo
KSAmJiBwYXJhZ3JhcGgtPnN0eWxlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuaGFzQ2Fw
SGVpZ2h0KCkpIHsKICAgICAgICAgLy8gRklYTUU6IEZvciBpZGVvZ3JhcGhpYyBiYXNlbGluZXMs
IHdlIHdhbnQgdG8gZ28gZnJvbSBsaW5lIGVkZ2UgdG8gbGluZSBlZGdlLiBUaGlzIGlzIGVxdWl2
YWxlbnQgdG8gKE4tMSkqbGluZS1oZWlnaHQgKyB0aGUgZm9udCBoZWlnaHQuCiAgICAgICAgIC8v
IFdlIGRvbid0IHlldCBzdXBwb3J0IGlkZW9ncmFwaGljIGJhc2VsaW5lcy4KICAgICAgICAgLy8g
Rm9yIGFuIE4tbGluZSBmaXJzdC1sZXR0ZXIgYW5kIGZvciBhbHBoYWJldGljIGJhc2VsaW5lcywg
dGhlIGNhcC1oZWlnaHQgb2YgdGhlIGZpcnN0IGxldHRlciBuZWVkcyB0byBlcXVhbCAoTi0xKSps
aW5lLWhlaWdodCBvZiBwYXJhZ3JhcGggbGluZXMgKyBjYXAtaGVpZ2h0IG9mIHRoZSBwYXJhZ3Jh
cGgKQEAgLTYzLDIyICs2MywyMiBAQCBzdGF0aWMgUmVuZGVyU3R5bGUgc3R5bGVGb3JGaXJzdExl
dHRlcihjb25zdCBSZW5kZXJCbG9jayYgZmlyc3RMZXR0ZXJCbG9jaywgY29ucwogICAgICAgICAv
LyBTZXQgdGhlIGZvbnQgdG8gYmUgb25lIGxpbmUgdG9vIGJpZyBhbmQgdGhlbiByYXRjaGV0IGJh
Y2sgdG8gZ2V0IHRvIGEgcHJlY2lzZSBmaXQuIFdlIGNhbid0IGp1c3Qgc2V0IHRoZSBkZXNpcmVk
IGZvbnQgc2l6ZSBiYXNlZCBvZmYgZm9udCBoZWlnaHQgbWV0cmljcwogICAgICAgICAvLyBiZWNh
dXNlIG1hbnkgZm9udHMgYmFrZSBhc2NlbnQgaW50byB0aGUgZm9udCBtZXRyaWNzLiBUaGVyZWZv
cmUgd2UgaGF2ZSB0byBsb29rIGF0IGFjdHVhbCBtZWFzdXJlZCBjYXAgaGVpZ2h0IHZhbHVlcyBp
biBvcmRlciB0byBrbm93IHdoZW4gd2UgaGF2ZSBhIGdvb2QgZml0LgogICAgICAgICBhdXRvIG5l
d0ZvbnREZXNjcmlwdGlvbiA9IGZpcnN0TGV0dGVyU3R5bGUuZm9udERlc2NyaXB0aW9uKCk7Ci0g
ICAgICAgIGZsb2F0IGNhcFJhdGlvID0gZmlyc3RMZXR0ZXJTdHlsZS5mb250TWV0cmljcygpLmZs
b2F0Q2FwSGVpZ2h0KCkgLyBmaXJzdExldHRlclN0eWxlLmNvbXB1dGVkRm9udFBpeGVsU2l6ZSgp
OwotICAgICAgICBmbG9hdCBzdGFydGluZ0ZvbnRTaXplID0gKChmaXJzdExldHRlclN0eWxlLmlu
aXRpYWxMZXR0ZXJIZWlnaHQoKSAtIDEpICogbGluZUhlaWdodCArIHBhcmFncmFwaC0+c3R5bGUo
KS5mb250TWV0cmljcygpLmNhcEhlaWdodCgpKSAvIGNhcFJhdGlvOworICAgICAgICBmbG9hdCBj
YXBSYXRpbyA9IGZpcnN0TGV0dGVyU3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuZmxv
YXRDYXBIZWlnaHQoKSAvIGZpcnN0TGV0dGVyU3R5bGUuY29tcHV0ZWRGb250UGl4ZWxTaXplKCk7
CisgICAgICAgIGZsb2F0IHN0YXJ0aW5nRm9udFNpemUgPSAoKGZpcnN0TGV0dGVyU3R5bGUuaW5p
dGlhbExldHRlckhlaWdodCgpIC0gMSkgKiBsaW5lSGVpZ2h0ICsgcGFyYWdyYXBoLT5zdHlsZSgp
LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmNhcEhlaWdodCgpKSAvIGNhcFJhdGlvOwogICAg
ICAgICBuZXdGb250RGVzY3JpcHRpb24uc2V0U3BlY2lmaWVkU2l6ZShzdGFydGluZ0ZvbnRTaXpl
KTsKICAgICAgICAgbmV3Rm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShzdGFydGluZ0Zv
bnRTaXplKTsKICAgICAgICAgZmlyc3RMZXR0ZXJTdHlsZS5zZXRGb250RGVzY3JpcHRpb24oV1RG
TW92ZShuZXdGb250RGVzY3JpcHRpb24pKTsKICAgICAgICAgZmlyc3RMZXR0ZXJTdHlsZS5mb250
Q2FzY2FkZSgpLnVwZGF0ZShmaXJzdExldHRlclN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udFNlbGVj
dG9yKCkpOwogCi0gICAgICAgIGludCBkZXNpcmVkQ2FwSGVpZ2h0ID0gKGZpcnN0TGV0dGVyU3R5
bGUuaW5pdGlhbExldHRlckhlaWdodCgpIC0gMSkgKiBsaW5lSGVpZ2h0ICsgcGFyYWdyYXBoLT5z
dHlsZSgpLmZvbnRNZXRyaWNzKCkuY2FwSGVpZ2h0KCk7Ci0gICAgICAgIGludCBhY3R1YWxDYXBI
ZWlnaHQgPSBmaXJzdExldHRlclN0eWxlLmZvbnRNZXRyaWNzKCkuY2FwSGVpZ2h0KCk7CisgICAg
ICAgIGludCBkZXNpcmVkQ2FwSGVpZ2h0ID0gKGZpcnN0TGV0dGVyU3R5bGUuaW5pdGlhbExldHRl
ckhlaWdodCgpIC0gMSkgKiBsaW5lSGVpZ2h0ICsgcGFyYWdyYXBoLT5zdHlsZSgpLmZvbnRNZXRy
aWNzT2ZQcmltYXJ5Rm9udCgpLmNhcEhlaWdodCgpOworICAgICAgICBpbnQgYWN0dWFsQ2FwSGVp
Z2h0ID0gZmlyc3RMZXR0ZXJTdHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5jYXBIZWln
aHQoKTsKICAgICAgICAgd2hpbGUgKGFjdHVhbENhcEhlaWdodCA+IGRlc2lyZWRDYXBIZWlnaHQp
IHsKICAgICAgICAgICAgIGF1dG8gbmV3Rm9udERlc2NyaXB0aW9uID0gZmlyc3RMZXR0ZXJTdHls
ZS5mb250RGVzY3JpcHRpb24oKTsKICAgICAgICAgICAgIG5ld0ZvbnREZXNjcmlwdGlvbi5zZXRT
cGVjaWZpZWRTaXplKG5ld0ZvbnREZXNjcmlwdGlvbi5zcGVjaWZpZWRTaXplKCkgLSAxKTsKICAg
ICAgICAgICAgIG5ld0ZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUobmV3Rm9udERlc2Ny
aXB0aW9uLmNvbXB1dGVkU2l6ZSgpIC0xKTsKICAgICAgICAgICAgIGZpcnN0TGV0dGVyU3R5bGUu
c2V0Rm9udERlc2NyaXB0aW9uKFdURk1vdmUobmV3Rm9udERlc2NyaXB0aW9uKSk7CiAgICAgICAg
ICAgICBmaXJzdExldHRlclN0eWxlLmZvbnRDYXNjYWRlKCkudXBkYXRlKGZpcnN0TGV0dGVyU3R5
bGUuZm9udENhc2NhZGUoKS5mb250U2VsZWN0b3IoKSk7Ci0gICAgICAgICAgICBhY3R1YWxDYXBI
ZWlnaHQgPSBmaXJzdExldHRlclN0eWxlLmZvbnRNZXRyaWNzKCkuY2FwSGVpZ2h0KCk7CisgICAg
ICAgICAgICBhY3R1YWxDYXBIZWlnaHQgPSBmaXJzdExldHRlclN0eWxlLmZvbnRNZXRyaWNzT2ZQ
cmltYXJ5Rm9udCgpLmNhcEhlaWdodCgpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcAppbmRleCBlOGNlNTdkZjAzN2UzOWRl
YTdmNGVmNTExYWZkM2IwZGM2ZGE2YjE3Li40ZThjNTg3ZTIyOTg0NDA3OTBmNzM1ZDQzYzEzODdm
MzA5YmM2MTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94
U3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5j
cHAKQEAgLTE3MywxMiArMTczLDEyIEBAIEdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JE
ZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlLCBjb25zdCBJCiAgICAgaWYg
KGRlY29yYXRpb24uaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gR2x5cGhPdmVyZmxvdygpOwog
Ci0gICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzID0gbGluZVN0eWxlLnRleHREZWNvcmF0aW9uVGhp
Y2tuZXNzKCkucmVzb2x2ZShsaW5lU3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpLCBsaW5lU3R5bGUu
Zm9udE1ldHJpY3MoKSk7CisgICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzID0gbGluZVN0eWxlLnRl
eHREZWNvcmF0aW9uVGhpY2tuZXNzKCkucmVzb2x2ZShsaW5lU3R5bGUuY29tcHV0ZWRGb250U2l6
ZSgpLCBsaW5lU3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkpOwogICAgIFdhdnlTdHJv
a2VQYXJhbWV0ZXJzIHdhdnlTdHJva2VQYXJhbWV0ZXJzOwogICAgIGZsb2F0IHdhdnlPZmZzZXQg
PSAwOwogICAgICAgICAKICAgICBUZXh0RGVjb3JhdGlvblN0eWxlIGRlY29yYXRpb25TdHlsZSA9
IGxpbmVTdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxlKCk7Ci0gICAgZmxvYXQgaGVpZ2h0ID0gbGlu
ZVN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKS5mbG9hdEhlaWdodCgpOworICAgIGZs
b2F0IGhlaWdodCA9IGxpbmVTdHlsZS5mb250Q2FzY2FkZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5
Rm9udCgpLmZsb2F0SGVpZ2h0KCk7CiAgICAgR2x5cGhPdmVyZmxvdyBvdmVyZmxvd1Jlc3VsdDsK
ICAgICAKICAgICBpZiAoZGVjb3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6Oldh
dnkpIHsKQEAgLTE5NSw3ICsxOTUsNyBAQCBHbHlwaE92ZXJmbG93IHZpc3VhbE92ZXJmbG93Rm9y
RGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyU3R5bGUmIGxpbmVTdHlsZSwgY29uc3QgSQogICAgICAg
ICBpbnQgdW5kZXJsaW5lT2Zmc2V0ID0gMTsKICAgICAgICAgZmxvYXQgdGV4dERlY29yYXRpb25C
YXNlRm9udFNpemUgPSAxNjsKICAgICAgICAgYXV0byBkZWZhdWx0R2FwID0gbGluZVN0eWxlLmNv
bXB1dGVkRm9udFNpemUoKSAvIHRleHREZWNvcmF0aW9uQmFzZUZvbnRTaXplOwotICAgICAgICB1
bmRlcmxpbmVPZmZzZXQgKz0gY29tcHV0ZVVuZGVybGluZU9mZnNldChsaW5lU3R5bGUudGV4dFVu
ZGVybGluZVBvc2l0aW9uKCksIGxpbmVTdHlsZS50ZXh0VW5kZXJsaW5lT2Zmc2V0KCksIGxpbmVT
dHlsZS5mb250TWV0cmljcygpLCB0ZXh0UnVuLCBkZWZhdWx0R2FwKTsKKyAgICAgICAgdW5kZXJs
aW5lT2Zmc2V0ICs9IGNvbXB1dGVVbmRlcmxpbmVPZmZzZXQobGluZVN0eWxlLnRleHRVbmRlcmxp
bmVQb3NpdGlvbigpLCBsaW5lU3R5bGUudGV4dFVuZGVybGluZU9mZnNldCgpLCBsaW5lU3R5bGUu
Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCksIHRleHRSdW4sIGRlZmF1bHRHYXApOwogICAgICAg
ICBpZiAoZGVjb3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6OldhdnkpIHsKICAg
ICAgICAgICAgIG92ZXJmbG93UmVzdWx0LmV4dGVuZEJvdHRvbSh1bmRlcmxpbmVPZmZzZXQgKyB3
YXZ5T2Zmc2V0ICsgd2F2eVN0cm9rZVBhcmFtZXRlcnMuY29udHJvbFBvaW50RGlzdGFuY2UgKyBz
dHJva2VUaGlja25lc3MgLSBoZWlnaHQpOwogICAgICAgICAgICAgb3ZlcmZsb3dSZXN1bHQuZXh0
ZW5kVG9wKC0odW5kZXJsaW5lT2Zmc2V0ICsgd2F2eU9mZnNldCAtIHdhdnlTdHJva2VQYXJhbWV0
ZXJzLmNvbnRyb2xQb2ludERpc3RhbmNlIC0gc3Ryb2tlVGhpY2tuZXNzKSk7CkBAIC0yMDYsNyAr
MjA2LDcgQEAgR2x5cGhPdmVyZmxvdyB2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKGNvbnN0
IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUsIGNvbnN0IEkKICAgICB9CiAgICAgaWYgKGRlY29yYXRp
b24gJiBUZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lKSB7CiAgICAgICAgIEZsb2F0UmVjdCBy
ZWN0KEZsb2F0UG9pbnQoKSwgRmxvYXRTaXplKDEsIHN0cm9rZVRoaWNrbmVzcykpOwotICAgICAg
ICBmbG9hdCBhdXRvVGV4dERlY29yYXRpb25UaGlja25lc3MgPSBUZXh0RGVjb3JhdGlvblRoaWNr
bmVzczo6Y3JlYXRlV2l0aEF1dG8oKS5yZXNvbHZlKGxpbmVTdHlsZS5jb21wdXRlZEZvbnRTaXpl
KCksIGxpbmVTdHlsZS5mb250TWV0cmljcygpKTsKKyAgICAgICAgZmxvYXQgYXV0b1RleHREZWNv
cmF0aW9uVGhpY2tuZXNzID0gVGV4dERlY29yYXRpb25UaGlja25lc3M6OmNyZWF0ZVdpdGhBdXRv
KCkucmVzb2x2ZShsaW5lU3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpLCBsaW5lU3R5bGUuZm9udE1l
dHJpY3NPZlByaW1hcnlGb250KCkpOwogICAgICAgICByZWN0Lm1vdmUoMCwgYXV0b1RleHREZWNv
cmF0aW9uVGhpY2tuZXNzIC0gc3Ryb2tlVGhpY2tuZXNzIC0gd2F2eU9mZnNldCk7CiAgICAgICAg
IGlmIChkZWNvcmF0aW9uU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZTo6V2F2eSkgewogICAg
ICAgICAgICAgRmxvYXRCb3hFeHRlbnQgd2F2eUV4cGFuc2lvbjsKQEAgLTIxOSw4ICsyMTksOCBA
QCBHbHlwaE92ZXJmbG93IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVy
U3R5bGUmIGxpbmVTdHlsZSwgY29uc3QgSQogICAgIH0KICAgICBpZiAoZGVjb3JhdGlvbiAmIFRl
eHREZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2gpIHsKICAgICAgICAgRmxvYXRSZWN0IHJlY3Qo
RmxvYXRQb2ludCgpLCBGbG9hdFNpemUoMSwgc3Ryb2tlVGhpY2tuZXNzKSk7Ci0gICAgICAgIGZs
b2F0IGF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyA9IFRleHREZWNvcmF0aW9uVGhpY2tuZXNz
OjpjcmVhdGVXaXRoQXV0bygpLnJlc29sdmUobGluZVN0eWxlLmNvbXB1dGVkRm9udFNpemUoKSwg
bGluZVN0eWxlLmZvbnRNZXRyaWNzKCkpOwotICAgICAgICBhdXRvIGNlbnRlciA9IDIgKiBsaW5l
U3R5bGUuZm9udE1ldHJpY3MoKS5mbG9hdEFzY2VudCgpIC8gMyArIGF1dG9UZXh0RGVjb3JhdGlv
blRoaWNrbmVzcyAvIDI7CisgICAgICAgIGZsb2F0IGF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVz
cyA9IFRleHREZWNvcmF0aW9uVGhpY2tuZXNzOjpjcmVhdGVXaXRoQXV0bygpLnJlc29sdmUobGlu
ZVN0eWxlLmNvbXB1dGVkRm9udFNpemUoKSwgbGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5
Rm9udCgpKTsKKyAgICAgICAgYXV0byBjZW50ZXIgPSAyICogbGluZVN0eWxlLmZvbnRNZXRyaWNz
T2ZQcmltYXJ5Rm9udCgpLmZsb2F0QXNjZW50KCkgLyAzICsgYXV0b1RleHREZWNvcmF0aW9uVGhp
Y2tuZXNzIC8gMjsKICAgICAgICAgcmVjdC5tb3ZlKDAsIGNlbnRlciAtIHN0cm9rZVRoaWNrbmVz
cyAvIDIpOwogICAgICAgICBpZiAoZGVjb3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5
bGU6OldhdnkpIHsKICAgICAgICAgICAgIEZsb2F0Qm94RXh0ZW50IHdhdnlFeHBhbnNpb247CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JGb250UmF3LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3BwCmluZGV4
IDM0MTcxNGU5ZDZjODZlOTYyNWM2OTNlNGU4NzAwNmZlZTJiNzBiMzcuLmI2MjQ1N2QzNjdmMDQ2
ZWVkZGJmNTk5MjJlOGRhMzdkODZmMmNlNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3BwCkBAIC0yMDcsNyArMjA3LDcgQEAgc3RkOjpvcHRp
b25hbDxGb250Q2FzY2FkZT4gcmVzb2x2ZUZvckZvbnRSYXcoY29uc3QgRm9udFJhdyYgZm9udFJh
dywgRm9udENhc2NhZGUKICAgICAgICAgICAgIC8vICAgICAgICBJdCdzIHVuY2xlYXIgaW4gdGhl
IHNwZWNpZmljYXRpb24gaWYgdGhleSdyZSBleHBlY3RlZCB0byB3b3JrIG9uIE9mZnNjcmVlbkNh
bnZhcywgZ2l2ZW4KICAgICAgICAgICAgIC8vICAgICAgICB0aGF0IGl0J3Mgb2ZmLXNjcmVlbiBh
bmQgdGhlcmVmb3JlIGRvZXNuJ3Qgc3RyaWN0bHkgaGF2ZSBhbiBhc3NvY2lhdGVkIHZpZXdwb3J0
LgogICAgICAgICAgICAgLy8gICAgICAgIFRoaXMgbmVlZHMgY2xhcmlmaWNhdGlvbiBhbmQgcG9z
c2libHkgZml4aW5nLgotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihDU1NQ
cmltaXRpdmVWYWx1ZTo6Y29tcHV0ZVVuem9vbWVkTm9uQ2FsY0xlbmd0aERvdWJsZShsZW5ndGgu
dHlwZSwgbGVuZ3RoLnZhbHVlLCBDU1NQcm9wZXJ0eUZvbnRTaXplLCAmZm9udENhc2NhZGUuZm9u
dE1ldHJpY3MoKSwgJmZvbnRDYXNjYWRlLmZvbnREZXNjcmlwdGlvbigpLCAmZm9udENhc2NhZGUu
Zm9udERlc2NyaXB0aW9uKCksIGlzPERvY3VtZW50Pihjb250ZXh0KSA/IGRvd25jYXN0PERvY3Vt
ZW50Pihjb250ZXh0KS5yZW5kZXJWaWV3KCkgOiBudWxscHRyKSk7CisgICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlVW56b29tZWRO
b25DYWxjTGVuZ3RoRG91YmxlKGxlbmd0aC50eXBlLCBsZW5ndGgudmFsdWUsIENTU1Byb3BlcnR5
Rm9udFNpemUsICZmb250Q2FzY2FkZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKSwgJmZvbnRD
YXNjYWRlLmZvbnREZXNjcmlwdGlvbigpLCAmZm9udENhc2NhZGUuZm9udERlc2NyaXB0aW9uKCks
IGlzPERvY3VtZW50Pihjb250ZXh0KSA/IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5yZW5k
ZXJWaWV3KCkgOiBudWxscHRyKSk7CiAgICAgICAgIH0sIFsmXSAoY29uc3QgQ1NTUHJvcGVydHlQ
YXJzZXJIZWxwZXJzOjpQZXJjZW50UmF3JiBwZXJjZW50YWdlKSB7CiAgICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KChwYXJlbnRTaXplICogcGVyY2VudGFnZS52YWx1ZSkgLyAx
MDAuMCk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xl
bmd0aENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aENvbnRleHQuY3Bw
CmluZGV4IDBkZGFiOTgwMWYxNmM4ODAwZTQwOTE0MzdhN2Y3MjhlMzRmMGQwMTQuLjE1NGU4ZGEx
MTgwZGU0ZTY5NTg3MDhlMjJiOGYxZWU4MGI0MzBhYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdMZW5ndGhDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TGVuZ3RoQ29udGV4dC5jcHAKQEAgLTI2Nyw3ICsyNjcsNyBAQCBFeGNlcHRpb25PcjxmbG9hdD4g
U1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlRnJvbVVzZXJVbml0c1RvRVhTKGZsb2F0IHZh
bHVlKQogCiAgICAgLy8gVXNlIG9mIGNlaWwgYWxsb3dzIGEgcGl4ZWwgbWF0Y2ggdG8gdGhlIFcz
Q3MgZXhwZWN0ZWQgb3V0cHV0IG9mIGNvb3Jkcy11bml0cy0wMy1iLnN2ZwogICAgIC8vIGlmIHRo
aXMgY2F1c2VzIHByb2JsZW1zIGluIHJlYWwgd29ybGQgY2FzZXMgbWF5YmUgaXQgd291bGQgYmUg
YmVzdCB0byByZW1vdmUgdGhpcwotICAgIGZsb2F0IHhIZWlnaHQgPSBzdGQ6OmNlaWwoc3R5bGUt
PmZvbnRNZXRyaWNzKCkueEhlaWdodCgpKTsKKyAgICBmbG9hdCB4SGVpZ2h0ID0gc3RkOjpjZWls
KHN0eWxlLT5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS54SGVpZ2h0KCkpOwogICAgIGlmICgh
eEhlaWdodCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07
CiAKQEAgLTI4Miw3ICsyODIsNyBAQCBFeGNlcHRpb25PcjxmbG9hdD4gU1ZHTGVuZ3RoQ29udGV4
dDo6Y29udmVydFZhbHVlRnJvbUVYU1RvVXNlclVuaXRzKGZsb2F0IHZhbHVlKQogCiAgICAgLy8g
VXNlIG9mIGNlaWwgYWxsb3dzIGEgcGl4ZWwgbWF0Y2ggdG8gdGhlIFczQ3MgZXhwZWN0ZWQgb3V0
cHV0IG9mIGNvb3Jkcy11bml0cy0wMy1iLnN2ZwogICAgIC8vIGlmIHRoaXMgY2F1c2VzIHByb2Js
ZW1zIGluIHJlYWwgd29ybGQgY2FzZXMgbWF5YmUgaXQgd291bGQgYmUgYmVzdCB0byByZW1vdmUg
dGhpcwotICAgIHJldHVybiB2YWx1ZSAqIHN0ZDo6Y2VpbChzdHlsZS0+Zm9udE1ldHJpY3MoKS54
SGVpZ2h0KCkpOworICAgIHJldHVybiB2YWx1ZSAqIHN0ZDo6Y2VpbChzdHlsZS0+Zm9udE1ldHJp
Y3NPZlByaW1hcnlGb250KCkueEhlaWdodCgpKTsKIH0KIAogYm9vbCBTVkdMZW5ndGhDb250ZXh0
OjpkZXRlcm1pbmVWaWV3cG9ydChGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2Nv
YS5tbQppbmRleCAzNDU2YmVmMzY3MTdhZmEyN2ZiZDk1YTNhMjQ2OTg2ODYwYWM4ZTUxLi4zYWI4
NDQ2Mzk1YTlkZDlmOWQ3NjkxZGNmYzQyYjVkNTNhZGZjOTI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCkBAIC0x
NzYsNyArMTc2LDcgQEAgRGljdGlvbmFyeVBvcHVwSW5mbyBXZWJQYWdlOjpkaWN0aW9uYXJ5UG9w
dXBJbmZvRm9yUmFuZ2UoRnJhbWUmIGZyYW1lLCBjb25zdCBTaW0KICAgICBJbnRSZWN0IHJhbmdl
UmVjdCA9IGZyYW1lLnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhxdWFkc1swXS5lbmNsb3NpbmdC
b3VuZGluZ0JveCgpKTsKIAogICAgIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSA9IHJhbmdlLnN0
YXJ0Q29udGFpbmVyKCkucmVuZGVyU3R5bGUoKTsKLSAgICBmbG9hdCBzY2FsZWRBc2NlbnQgPSBz
dHlsZSA/IHN0eWxlLT5mb250TWV0cmljcygpLmFzY2VudCgpICogcGFnZVNjYWxlRmFjdG9yKCkg
OiAwOworICAgIGZsb2F0IHNjYWxlZEFzY2VudCA9IHN0eWxlID8gc3R5bGUtPmZvbnRNZXRyaWNz
T2ZQcmltYXJ5Rm9udCgpLmFzY2VudCgpICogcGFnZVNjYWxlRmFjdG9yKCkgOiAwOwogICAgIGRp
Y3Rpb25hcnlQb3B1cEluZm8ub3JpZ2luID0gRmxvYXRQb2ludChyYW5nZVJlY3QueCgpLCByYW5n
ZVJlY3QueSgpICsgc2NhbGVkQXNjZW50KTsKICAgICBkaWN0aW9uYXJ5UG9wdXBJbmZvLm9wdGlv
bnMgPSBvcHRpb25zOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KaW5kZXggZjJhZmIw
ODA3NmE2NWQzYzBhZjNlNDdjMTkwYmIwM2ExOTdlODIzZC4uYjY4NmVjYjk5MzhiOWY2OWUxMWU4
Yzk5M2NkNjZmZTRkZWUyYTBlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQpAQCAt
NTIzLDcgKzUyMyw3IEBAIHN0YXRpYyBXZWJDb3JlOjpJbnRSZWN0IGVsZW1lbnRCb3VuZGluZ0Jv
eEluV2luZG93Q29vcmRpbmF0ZXNGcm9tTm9kZShXZWJDb3JlOjpOCiAgICAgfQogCiAgICAgYXV0
byBzdHlsZSA9IHJhbmdlLnN0YXJ0LmNvbnRhaW5lci0+cmVuZGVyU3R5bGUoKTsKLSAgICBmbG9h
dCBzY2FsZWREZXNjZW50ID0gc3R5bGUgPyBzdHlsZS0+Zm9udE1ldHJpY3MoKS5kZXNjZW50KCkg
KiBmcmFtZS0+cGFnZSgpLT5wYWdlU2NhbGVGYWN0b3IoKSA6IDA7CisgICAgZmxvYXQgc2NhbGVk
RGVzY2VudCA9IHN0eWxlID8gc3R5bGUtPmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmRlc2Nl
bnQoKSAqIGZyYW1lLT5wYWdlKCktPnBhZ2VTY2FsZUZhY3RvcigpIDogMDsKIAogICAgIGF1dG8g
cXVhZHMgPSBXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFic29sdXRlVGV4dFF1YWRzKHJhbmdlKTsK
ICAgICBpZiAocXVhZHMuaXNFbXB0eSgpKSB7Cg==
</data>
<flag name="commit-queue"
          id="476905"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450497</attachid>
            <date>2022-01-31 21:29:43 -0800</date>
            <delta_ts>2022-01-31 22:56:26 -0800</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-235938-20220131212942.patch</filename>
            <type>text/plain</type>
            <size>108511</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4ODY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTAxNDllMjkwZDY2N2Rh
MWEyYzAxNjAxMjc4YTgyOGJlZjRkNTQ1Yi4uNTg1NjQ0MGIyNGY2ZmNlZDhkOGQ1NmQwNzc0ZGIw
Njk1YjJlYWI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2MCBAQAorMjAyMi0wMS0zMSAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBG
b250Q2FzY2FkZTo6Zm9udE1ldHJpY3MoKSBhbmQgUmVuZGVyU3R5bGU6OmZvbnRNZXRyaWNzKCkg
dG8gZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTkzOAorCisgICAgICAgIFJldmlld2VkIGJ5IEFsYW4g
QnVqdGFzLgorCisgICAgICAgIEl0J3MgcHJvYmFibHkgZ29vZCB0byByZW1pbmQgcGVvcGxlIHRo
YXQgd2hlbiB0aGV5IGNhbGwgdGhpcyBmdW5jdGlvbiwKKyAgICAgICAgdGhleSBtaWdodCBub3Qg
YmUgZ2V0dGluZyB3aGF0IHRoZXkgbWlnaHQgdGhpbmsgdGhleSdyZSBnZXR0aW5nLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKwor
ICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZU5vbkNhbGNMZW5ndGhEb3VibGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmVxdWFsRm9yTGVuZ3RoUmVzb2x1dGlvbik6Cisg
ICAgICAgICogZGlzcGxheS9jc3MvRGlzcGxheUJveFBhaW50ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheTo6Qm94UGFpbnRlcjo6cGFpbnRCb3hDb250ZW50KToKKyAgICAgICAgKiBk
aXNwbGF5L2Nzcy9EaXNwbGF5U3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlN0
eWxlOjpmb250TWV0cmljc09mUHJpbWFyeUZvbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheTo6U3R5bGU6OmZvbnRNZXRyaWNzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBo
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxl
bWVudDo6Y3JlYXRlSW5uZXJUZXh0U3R5bGUpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZTo6Rm9udFByb3h5Ojpmb250TWV0cmljc09mUHJpbWFyeUZvbnQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6
ZHJhd1RleHRVbmNoZWNrZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZTo6bWVhc3VyZVRleHRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjp0ZXh0T2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OkZvbnRQcm94eTo6Zm9udE1ldHJpY3MgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2UuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpkcmF3UnVsZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6OmRyYXdFbGVtZW50VGl0bGUpOgorICAgICAgICAo
V2ViQ29yZTo6ZXhwZWN0ZWRTaXplRm9yTGF5b3V0TGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6
ZHJhd0xheW91dExhYmVsKToKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVGb3JtYXR0aW5nUXVpcmtzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6SW5saW5lRm9ybWF0dGluZ1F1aXJrczo6aW5pdGlhbExpbmVIZWlnaHQgY29uc3QpOgorICAg
ICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxldmVsQm94Lmg6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om1fc3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpJbmxpbmVMZXZlbEJveDo6cHJlZmVycmVkTGluZUhlaWdodCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUxldmVsQm94OjpwcmltYXJ5Zm9udE1ldHJpY3NP
ZlByaW1hcnlGb250IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGV2
ZWxCb3g6OnByaW1hcnlGb250TWV0cmljcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmxvZ2ljYWxSZWN0Rm9yVGV4dFJ1biBjb25zdCk6
CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJv
eEJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRlcjo6
c2V0VmVydGljYWxHZW9tZXRyeUZvckxpbmVCcmVha0JveCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkxpbmVCb3hCdWlsZGVyOjpzZXRJbml0aWFsVmVydGljYWxHZW9tZXRyeUZv
cklubGluZUJveCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkxpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OmNvbXB1dGVMaW5lQm94TG9naWNhbEhl
aWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hWZXJ0aWNhbEFs
aWduZXI6OmNvbXB1dGVSb290SW5saW5lQm94VmVydGljYWxQb3NpdGlvbiBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OmFsaWduSW5saW5l
TGV2ZWxCb3hlcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2Nh
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmZsb2F0V2lkdGhGb3JTaW1w
bGVUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpmbG9hdFdpZHRo
Rm9yQ29tcGxleFRleHQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YXNjYWRlLmg6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6Zm9udE1ldHJpY3NPZlBy
aW1hcnlGb250IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpmb250TWV0
cmljcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL0NhcmV0UmVjdENvbXB1
dGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVDYXJldFJlY3RGb3JFbXB0eUVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUNhcmV0UmVjdEZvckJveCk6CisgICAg
ICAgICogcmVuZGVyaW5nL0xlZ2FjeUVsbGlwc2lzQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeUVsbGlwc2lzQm94OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lFbGxp
cHNpc0JveDo6cGFpbnRNYXJrdXBCb3gpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5RWxsaXBz
aXNCb3g6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvTGVnYWN5SW5saW5lQm94
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUJveDo6bG9naWNhbEhlaWdodCBj
b25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL0xlZ2FjeUlubGluZUZsb3dCb3guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6YWRkVG9MaW5lKToKKyAgICAgICAg
KFdlYkNvcmU6OnBsYWNlQ2hpbGRJbmxpbmVCb3hlc0luQmxvY2tEaXJlY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0luQmxvY2tEaXJlY3Rp
b24pOgorICAgICAgICAqIHJlbmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnNldExvZ2ljYWxXaWR0aEZvclRleHRSdW4pOgorICAgICAgICAqIHJlbmRlcmlu
Zy9MZWdhY3lSb290SW5saW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJ
bmxpbmVCb3g6OmxpbmVTbmFwQWRqdXN0bWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
ZWdhY3lSb290SW5saW5lQm94Ojphc2NlbnRBbmREZXNjZW50Rm9yQm94IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6OnZlcnRpY2FsUG9zaXRpb25Gb3JCb3gp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9jazo6YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9jazo6aW5saW5lQmxvY2tCYXNlbGluZSBjb25zdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
a0Zsb3c6OmFkanVzdEluaXRpYWxMZXR0ZXJQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9ja0Zsb3c6OmZpcnN0TGluZUJhc2VsaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrRmxvdzo6aW5saW5lQmxvY2tCYXNlbGluZSBjb25zdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnNldElt
YWdlU2l6ZUZvckFsdFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnBhaW50
UmVwbGFjZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjptYXlBZmZlY3RMYXlvdXQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxpbmVCcmVhazo6YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXRlbU9mZnNldEZvckFs
aWdubWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjppdGVtSGVpZ2h0IGNv
bnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMaXN0TWFya2VyOjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdE1h
cmtlcjo6dXBkYXRlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2Vy
Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMaXN0TWFya2VyOjp1cGRhdGVNYXJnaW5zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxp
c3RNYXJrZXI6OnJlbGF0aXZlTWFya2VyUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clJ1YnlSdW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUnVieVJ1bjo6bGF5b3V0Qmxv
Y2spOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0Qm94UGFpbnRlcjo6cGFpbnRGb3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRCb3hQYWludGVyOjpwYWludENvbXBvc2l0aW9uVW5kZXJsaW5lKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRCb3hQYWludGVyOjpjYWxjdWxhdGVEb2N1bWVudE1hcmtlckJvdW5kcyk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0Qm94UGFpbnRlcjo6dGV4dE9yaWdpbkZyb21QYWludFJl
Y3QgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dERlY29yYXRpb25QYWludGVyOjpwYWludEJhY2tncm91
bmREZWNvcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblBhaW50ZXI6
OnBhaW50Rm9yZWdyb3VuZERlY29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHREZWNv
cmF0aW9uUGFpbnRlcjo6cGFpbnRMaW5lVGhyb3VnaCk6CisgICAgICAgICogcmVuZGVyaW5nL1Rl
eHRQYWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRQYWludGVyOjpwYWludFRleHRB
bmRFbXBoYXNpc01hcmtzSWZOZWVkZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9saW5lL0xpbmVJ
bmxpbmVIZWFkZXJzLmg6CisgICAgICAgIChXZWJDb3JlOjpyZXF1aXJlc0xpbmVCb3hGb3JDb250
ZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmF4aXNIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6dG9Vc2Vy
VW5pdHMpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxSb290Ojp2ZXJ0aWNhbFBhcmFtZXRlcnMp
OgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTY3JpcHRzOjp2ZXJ0aWNhbFBhcmFtZXRlcnMg
Y29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFVuZGVyT3Zlcjo6dmVydGljYWxQ
YXJhbWV0ZXJzIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmZvbnRNZXRyaWNzT2ZQcmltYXJ5
Rm9udCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y29tcHV0ZUxpbmVI
ZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmZvbnRNZXRyaWNz
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lVGV4dDo6cG9zaXRpb25Gb3JQb2ludCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnNlbGVjdGlvblJlY3RGb3JUZXh0RnJhZ21lbnQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9u
V2l0aFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50VGV4
dFdpdGhTaGFkb3dzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OmNhbGN1
bGF0ZUJvdW5kYXJpZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJv
eDo6bm9kZUF0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEVu
Z2luZUJhc2VsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRMYXlvdXRFbmdpbmVC
YXNlbGluZTo6Y2FsY3VsYXRlQmFzZWxpbmVTaGlmdCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmU6OmNhbGN1bGF0ZUFsaWdubWVudEJhc2VsaW5l
U2hpZnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dExheW91dEVuZ2luZUJhc2Vs
aW5lOjpjYWxjdWxhdGVHbHlwaEFkdmFuY2VBbmRPcmllbnRhdGlvbiBjb25zdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdUZXh0TWV0cmljczo6U1ZHVGV4dE1ldHJpY3MpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
U1ZHVGV4dFF1ZXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGN1bGF0ZUdseXBoQm91bmRh
cmllcyk6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyRmly
c3RMZXR0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3R5bGVGb3JGaXJzdExldHRlcik6Cisg
ICAgICAgICogc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMpOgorICAgICAgICAqIHN0eWxlL1N0eWxlUmVz
b2x2ZUZvckZvbnRSYXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OnJlc29sdmVGb3JG
b250UmF3KToKKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3RoQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdMZW5ndGhDb250ZXh0Ojpjb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzVG9FWFMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVl
RnJvbUVYU1RvVXNlclVuaXRzIGNvbnN0KToKKwogMjAyMi0wMS0zMSAgU2FpZCBBYm91LUhhbGxh
d2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIFBhdHRlcm4gc2hv
dWxkIGhvbGQgU291cmNlSW1hZ2Ugd2hpY2ggY2FuIGJlIGNvbnZlcnRlZCB0byBhIE5hdGl2ZUlt
YWdlIG9ubHkgd2hlbiBuZWVkZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggM2FmNzJiMzhmNDRmMDE1ZjM0NDRjNTJm
YmQ1ZjYzZGRhYjY1NGYwMS4uMDg3NzAyNDkyOTljN2U2YzYzYjdhNjU5M2ZmZjZhN2FiODdjYzY1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMS0zMSAgTXlsZXMgQy4gTWF4Zmll
bGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBGb250Q2FzY2FkZTo6
Zm9udE1ldHJpY3MoKSBhbmQgUmVuZGVyU3R5bGU6OmZvbnRNZXRyaWNzKCkgdG8gZm9udE1ldHJp
Y3NPZlByaW1hcnlGb250KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNTkzOAorCisgICAgICAgIFJldmlld2VkIGJ5IEFsYW4gQnVqdGFzLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6ZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlKToKKwogMjAy
Mi0wMS0zMSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBb
R1BVIFByb2Nlc3NdIFBhdHRlcm4gc2hvdWxkIGhvbGQgU291cmNlSW1hZ2Ugd2hpY2ggY2FuIGJl
IGNvbnZlcnRlZCB0byBhIE5hdGl2ZUltYWdlIG9ubHkgd2hlbiBuZWVkZWQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwppbmRleCBhOGVjNWRlZGUxMjFmZDcwMDhmNGJmNmRlN2E0NmQwNzZjMTA3
YWEyLi5jZTJkMTY5M2ZlOWJhOTM0NjJkNTU3Nzc4YzU0NjMyZGE2ODgxNDA0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDEtMzEgIE15bGVzIEMu
IE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgRm9udENh
c2NhZGU6OmZvbnRNZXRyaWNzKCkgYW5kIFJlbmRlclN0eWxlOjpmb250TWV0cmljcygpIHRvIGZv
bnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzU5MzgKKworICAgICAgICBSZXZpZXdlZCBieSBBbGFuIEJ1anRh
cy4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbToK
KyAgICAgICAgKCtbV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciBfZGljdGlvbmFyeVBvcHVw
SW5mb0ZvclJhbmdlOmluRnJhbWU6d2l0aExvb2t1cE9wdGlvbnM6aW5kaWNhdG9yT3B0aW9uczp0
cmFuc2l0aW9uOl0pOgorCiAyMDIyLTAxLTMwICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIERlbGV0ZSBydW50aW1lIHByZWZlcmVuY2UgZm9yIGVuYWJsaW5nIGtl
eWdlbiBlbGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0
ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAKaW5kZXggNDZl
ZTMzMDI2M2UxOGJmMDk4YTdlZDU2OTMzM2YyMDhhODE0OTI2ZS4uNGM3YmMxNThiNTM3MTljNmRi
ZWMyMDdlMTIwNzhiNDc2ZjE5Mjg4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0
LmNwcApAQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMgaW50IGJhc2VsaW5lUG9zaXRpb25Gb3JSZW5k
ZXJPYmplY3QoUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QpCiAgICAgLy8gRklYTUU6IFRoaXMg
aW1wbGVtZW50YXRpb24gb2YgYmFzZWxpbmVQb3NpdGlvbiBvcmlnaW5hdGVzIGZyb20gUmVuZGVy
T2JqZWN0LmNwcCBhbmQgd2FzCiAgICAgLy8gcmVtb3ZlZCBpbiByNzAwNzIuIFRoZSBpbXBsZW1l
bnRhdGlvbiBsb29rcyBpbmNvcnJlY3QgdGhvdWdoLCBiZWNhdXNlIHRoaXMgaXMgbm90IHRoZQog
ICAgIC8vIGJhc2VsaW5lIG9mIHRoZSB1bmRlcmx5aW5nIFJlbmRlck9iamVjdCwgYnV0IG9mIHRo
ZSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LgotICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250
TWV0cmljcyA9IHJlbmRlck9iamVjdC0+Zmlyc3RMaW5lU3R5bGUoKS5mb250TWV0cmljcygpOwor
ICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHJlbmRlck9iamVjdC0+Zmlyc3RM
aW5lU3R5bGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsKICAgICByZXR1cm4gZm9udE1l
dHJpY3MuYXNjZW50KCkgKyAocmVuZGVyT2JqZWN0LT5maXJzdExpbmVTdHlsZSgpLmNvbXB1dGVk
TGluZUhlaWdodCgpIC0gZm9udE1ldHJpY3MuaGVpZ2h0KCkpIC8gMjsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKaW5kZXggMDA3Y2FlZDc4ZTEyOTQ3YmJkN2Jj
ZWRkOGJkMTZhMmY5YjE0OTQwOC4uZjY0MjY1YTAzMjc5OWI3ZWYzMzhkNzY5NzQ2Y2MzZjljYWIz
OGZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCkBAIC04MTQs
NyArODE0LDcgQEAgZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTm9uQ2FsY0xlbmd0
aERvdWJsZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb24KICAgICAgICAgLy8gV2UgcmVhbGx5
IG5lZWQgdG8gY29tcHV0ZSBFWCB1c2luZyBmb250TWV0cmljcyBmb3IgdGhlIG9yaWdpbmFsIHNw
ZWNpZmllZFNpemUgYW5kIG5vdCB1c2UKICAgICAgICAgLy8gb3VyIGFjdHVhbCBjb25zdHJ1Y3Rl
ZCByZW5kZXJpbmcgZm9udC4KICAgICAgICAgQVNTRVJUKGNvbnZlcnNpb25EYXRhLnN0eWxlKCkp
OwotICAgICAgICB2YWx1ZSA9IGNvbXB1dGVVbnpvb21lZE5vbkNhbGNMZW5ndGhEb3VibGUocHJp
bWl0aXZlVHlwZSwgdmFsdWUsIGNvbnZlcnNpb25EYXRhLnByb3BlcnR5VG9Db21wdXRlKCksICZj
b252ZXJzaW9uRGF0YS5zdHlsZSgpLT5mb250TWV0cmljcygpLCAmY29udmVyc2lvbkRhdGEuc3R5
bGUoKS0+Zm9udERlc2NyaXB0aW9uKCkpOworICAgICAgICB2YWx1ZSA9IGNvbXB1dGVVbnpvb21l
ZE5vbkNhbGNMZW5ndGhEb3VibGUocHJpbWl0aXZlVHlwZSwgdmFsdWUsIGNvbnZlcnNpb25EYXRh
LnByb3BlcnR5VG9Db21wdXRlKCksICZjb252ZXJzaW9uRGF0YS5zdHlsZSgpLT5mb250TWV0cmlj
c09mUHJpbWFyeUZvbnQoKSwgJmNvbnZlcnNpb25EYXRhLnN0eWxlKCktPmZvbnREZXNjcmlwdGlv
bigpKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkVNUzoK
QEAgLTgyNCw3ICs4MjQsNyBAQCBkb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVOb25D
YWxjTGVuZ3RoRG91YmxlKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbgogICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkNTU19DSFM6CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0lDOgogICAgICAg
ICBBU1NFUlQoY29udmVyc2lvbkRhdGEuc3R5bGUoKSk7Ci0gICAgICAgIHZhbHVlID0gY29tcHV0
ZVVuem9vbWVkTm9uQ2FsY0xlbmd0aERvdWJsZShwcmltaXRpdmVUeXBlLCB2YWx1ZSwgY29udmVy
c2lvbkRhdGEucHJvcGVydHlUb0NvbXB1dGUoKSwgJmNvbnZlcnNpb25EYXRhLnN0eWxlKCktPmZv
bnRNZXRyaWNzKCkpOworICAgICAgICB2YWx1ZSA9IGNvbXB1dGVVbnpvb21lZE5vbkNhbGNMZW5n
dGhEb3VibGUocHJpbWl0aXZlVHlwZSwgdmFsdWUsIGNvbnZlcnNpb25EYXRhLnByb3BlcnR5VG9D
b21wdXRlKCksICZjb252ZXJzaW9uRGF0YS5zdHlsZSgpLT5mb250TWV0cmljc09mUHJpbWFyeUZv
bnQoKSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BYOgpA
QCAtOTE1LDcgKzkxNSw3IEBAIGRvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZU5vbkNh
bGNMZW5ndGhEb3VibGUoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uCiAgICAgICAgIEFTU0VS
VChjb252ZXJzaW9uRGF0YS5zdHlsZSgpKTsKICAgICAgICAgaWYgKGNvbnZlcnNpb25EYXRhLmNv
bXB1dGluZ0xpbmVIZWlnaHQoKSB8fCBjb252ZXJzaW9uRGF0YS5jb21wdXRpbmdGb250U2l6ZSgp
KSB7CiAgICAgICAgICAgICAvLyBUcnkgdG8gZ2V0IHRoZSBwYXJlbnQncyBjb21wdXRlZCBsaW5l
LWhlaWdodCwgb3IgZmFsbCBiYWNrIHRvIHRoZSBpbml0aWFsIGxpbmUtaGVpZ2h0IG9mIHRoaXMg
ZWxlbWVudCdzIGZvbnQgc3BhY2luZy4KLSAgICAgICAgICAgIHZhbHVlICo9IGNvbnZlcnNpb25E
YXRhLnBhcmVudFN0eWxlKCkgPyBjb252ZXJzaW9uRGF0YS5wYXJlbnRTdHlsZSgpLT5jb21wdXRl
ZExpbmVIZWlnaHQoKSA6IGNvbnZlcnNpb25EYXRhLnN0eWxlKCktPmZvbnRNZXRyaWNzKCkubGlu
ZVNwYWNpbmcoKTsKKyAgICAgICAgICAgIHZhbHVlICo9IGNvbnZlcnNpb25EYXRhLnBhcmVudFN0
eWxlKCkgPyBjb252ZXJzaW9uRGF0YS5wYXJlbnRTdHlsZSgpLT5jb21wdXRlZExpbmVIZWlnaHQo
KSA6IGNvbnZlcnNpb25EYXRhLnN0eWxlKCktPmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmxp
bmVTcGFjaW5nKCk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgdmFsdWUgKj0gY29udmVy
c2lvbkRhdGEuc3R5bGUoKS0+Y29tcHV0ZWRMaW5lSGVpZ2h0KCk7CiAgICAgICAgIGJyZWFrOwpA
QCAtOTUxLDkgKzk1MSw5IEBAIGJvb2wgQ1NTUHJpbWl0aXZlVmFsdWU6OmVxdWFsRm9yTGVuZ3Ro
UmVzb2x1dGlvbihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGVBLCBjb25zCiAgICAgaWYgKHN0eWxl
QS5mb250RGVzY3JpcHRpb24oKS5zcGVjaWZpZWRTaXplKCkgIT0gc3R5bGVCLmZvbnREZXNjcmlw
dGlvbigpLnNwZWNpZmllZFNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYg
KHN0eWxlQS5mb250TWV0cmljcygpLnhIZWlnaHQoKSAhPSBzdHlsZUIuZm9udE1ldHJpY3MoKS54
SGVpZ2h0KCkpCisgICAgaWYgKHN0eWxlQS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS54SGVp
Z2h0KCkgIT0gc3R5bGVCLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLnhIZWlnaHQoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChzdHlsZUEuZm9udE1ldHJpY3MoKS56ZXJvV2lk
dGgoKSAhPSBzdHlsZUIuZm9udE1ldHJpY3MoKS56ZXJvV2lkdGgoKSkKKyAgICBpZiAoc3R5bGVB
LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLnplcm9XaWR0aCgpICE9IHN0eWxlQi5mb250TWV0
cmljc09mUHJpbWFyeUZvbnQoKS56ZXJvV2lkdGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgaWYgKHN0eWxlQS56b29tKCkgIT0gc3R5bGVCLnpvb20oKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hQYWludGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hQYWludGVyLmNwcAppbmRleCAyYzYzYWU4YzRh
ZWViZWYwYzEwYTZlZDI1MThkNTBhYzNiZTI1Yzc0Li41OTVlMGNlNTc0YzE0MWYyYWMwMGVkZWJj
NzE3MTc5MWYwMWUyMjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9E
aXNwbGF5Qm94UGFpbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlz
cGxheUJveFBhaW50ZXIuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgQm94UGFpbnRlcjo6cGFp
bnRCb3hDb250ZW50KGNvbnN0IEJveCYgYm94LCBQYWludGluZ0NvbnRleHQmIHBhaW50aW5nQ29u
dGV4CiAgICAgICAgIHBhaW50aW5nQ29udGV4dC5jb250ZXh0LnNldEZpbGxDb2xvcihzdHlsZS5j
b2xvcigpKTsKIAogICAgICAgICAvLyBGSVhNRTogQWRkIG5vbi1iYXNlbGluZSBhbGlnbiBwYWlu
dGluZwotICAgICAgICBhdXRvIGJhc2VsaW5lID0gdGV4dFJlY3QueSgpICsgc3R5bGUuZm9udE1l
dHJpY3MoKS5hc2NlbnQoKTsKKyAgICAgICAgYXV0byBiYXNlbGluZSA9IHRleHRSZWN0LnkoKSAr
IHN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudCgpOwogICAgICAgICBhdXRv
IGV4cGFuc2lvbiA9IHRleHRCb3guZXhwYW5zaW9uKCk7CiAKICAgICAgICAgYXV0byB0ZXh0UnVu
ID0gVGV4dFJ1biB7IHRleHRCb3gudGV4dCgpLm9yaWdpbmFsQ29udGVudCgpLCB0ZXh0UmVjdC54
KCksIGV4cGFuc2lvbi5ob3Jpem9udGFsRXhwYW5zaW9uLCBleHBhbnNpb24uYmVoYXZpb3IgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlTdHlsZS5oIGIv
U291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVN0eWxlLmgKaW5kZXggN2VlMzBhM2Ux
MzEyOTRhM2Q1NWFjZWY0Y2FhMGE3MWMzZDEwYWQ1OC4uZmRiNGEyZTQ1NjgzZTViZTliNTAyZmZh
NzFhYTZmZTk4MTI5NjBjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3Mv
RGlzcGxheVN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVN0
eWxlLmgKQEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogICAgIGJvb2wgcGFydGljaXBhdGVzSW5a
T3JkZXJTb3J0aW5nKCkgY29uc3QgeyByZXR1cm4gaXNQb3NpdGlvbmVkKCkgfHwgaXNTdGFja2lu
Z0NvbnRleHQoKTsgfQogCiAgICAgY29uc3QgRm9udENhc2NhZGUmIGZvbnRDYXNjYWRlKCkgY29u
c3QgeyByZXR1cm4gbV9mb250Q2FzY2FkZTsgfQotICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250
TWV0cmljcygpIGNvbnN0IHsgcmV0dXJuIG1fZm9udENhc2NhZGUuZm9udE1ldHJpY3MoKTsgfQor
ICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljc09mUHJpbWFyeUZvbnQoKSBjb25zdCB7
IHJldHVybiBtX2ZvbnRDYXNjYWRlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOyB9CiAgICAg
CiAgICAgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BhY2l0eTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCBkMDc2MWVlYzlmM2MyODU5
M2EyODYzYzAwYzkzNTdhMWY3NmE3ODJlLi4wNWM1ZmM0ZDkyNmMxOTUwZDU1YjZiZTA3NjBmMjdm
MmU3OWJhZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAg
LTIxNzgsNyArMjE3OCw3IEBAIFJlbmRlclN0eWxlIEhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZUlu
bmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKICAgICB9CiAKICAgICAvLyBE
byBub3QgYWxsb3cgbGluZS1oZWlnaHQgdG8gYmUgc21hbGxlciB0aGFuIG91ciBkZWZhdWx0Lgot
ICAgIGlmICh0ZXh0QmxvY2tTdHlsZS5mb250TWV0cmljcygpLmxpbmVTcGFjaW5nKCkgPiBzdHls
ZS5jb21wdXRlZExpbmVIZWlnaHQoKSkKKyAgICBpZiAodGV4dEJsb2NrU3R5bGUuZm9udE1ldHJp
Y3NPZlByaW1hcnlGb250KCkubGluZVNwYWNpbmcoKSA+IHN0eWxlLmNvbXB1dGVkTGluZUhlaWdo
dCgpKQogICAgICAgICB0ZXh0QmxvY2tTdHlsZS5zZXRMaW5lSGVpZ2h0KFJlbmRlclN0eWxlOjpp
bml0aWFsTGluZUhlaWdodCgpKTsKIAogICAgIHJldHVybiB0ZXh0QmxvY2tTdHlsZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZS5jcHAKaW5kZXggYjg5ZTc3ZmI2MDBlMGVjYTkzZjAxOTI0MzllNDEwNzNjOTVh
ZDEzOC4uZDllY2Y2NmQ2ZDZhMTRlZWMzN2ZlMTJmZmM5MWY3N2YyZWIxZjgwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZS5jcHAKQEAgLTQwNCw5ICs0MDQsOSBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2U6OkZvbnRQcm94eTo6aW5pdGlhbGl6ZShGb250U2VsZWN0b3ImIGZvbnRTZWxl
YwogICAgIG1fZm9udC5mb250U2VsZWN0b3IoKS0+cmVnaXN0ZXJGb3JJbnZhbGlkYXRpb25DYWxs
YmFja3MoKnRoaXMpOwogfQogCi1jb25zdCBGb250TWV0cmljcyYgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZTo6Rm9udFByb3h5Ojpmb250TWV0cmljcygpIGNvbnN0Citjb25zdCBGb250TWV0
cmljcyYgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Rm9udFByb3h5Ojpmb250TWV0cmlj
c09mUHJpbWFyeUZvbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX2ZvbnQuZm9udE1ldHJpY3Mo
KTsKKyAgICByZXR1cm4gbV9mb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwogfQogCiBj
b25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
OjpGb250UHJveHk6OmZvbnREZXNjcmlwdGlvbigpIGNvbnN0CkBAIC0yNDA3LDcgKzI0MDcsNyBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdUZXh0VW5jaGVja2VkKGNv
bnN0IFRleHRSdW4mIHRleHRSdW4sIGRvdQogewogICAgIGF1dG8qIGMgPSBkcmF3aW5nQ29udGV4
dCgpOwogICAgIGF1dG8mIGZvbnRQcm94eSA9ICp0aGlzLT5mb250UHJveHkoKTsKLSAgICBjb25z
dCBhdXRvJiBmb250TWV0cmljcyA9IGZvbnRQcm94eS5mb250TWV0cmljcygpOworICAgIGNvbnN0
IGF1dG8mIGZvbnRNZXRyaWNzID0gZm9udFByb3h5LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgp
OwogCiAgICAgLy8gRklYTUU6IE5lZWQgdG8gdHVybiBvZmYgZm9udCBzbW9vdGhpbmcuCiAKQEAg
LTI1MzAsNyArMjUzMCw3IEBAIFJlZjxUZXh0TWV0cmljcz4gQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZTo6bWVhc3VyZVRleHRJbnRlcm5hbChjb25zdCBUZXh0UnVuCiAgICAgUmVmPFRleHRN
ZXRyaWNzPiBtZXRyaWNzID0gVGV4dE1ldHJpY3M6OmNyZWF0ZSgpOwogCiAgICAgYXV0byYgZm9u
dCA9ICpmb250UHJveHkoKTsKLSAgICBhdXRvJiBmb250TWV0cmljcyA9IGZvbnQuZm9udE1ldHJp
Y3MoKTsKKyAgICBhdXRvJiBmb250TWV0cmljcyA9IGZvbnQuZm9udE1ldHJpY3NPZlByaW1hcnlG
b250KCk7CiAKICAgICBHbHlwaE92ZXJmbG93IGdseXBoT3ZlcmZsb3c7CiAgICAgZ2x5cGhPdmVy
Zmxvdy5jb21wdXRlQm91bmRzID0gdHJ1ZTsKQEAgLTI1NTcsNyArMjU1Nyw3IEBAIFJlZjxUZXh0
TWV0cmljcz4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6bWVhc3VyZVRleHRJbnRlcm5h
bChjb25zdCBUZXh0UnVuCiAKIEZsb2F0UG9pbnQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZTo6dGV4dE9mZnNldChmbG9hdCB3aWR0aCwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCiB7Ci0g
ICAgYXV0byYgZm9udE1ldHJpY3MgPSBmb250UHJveHkoKS0+Zm9udE1ldHJpY3MoKTsKKyAgICBh
dXRvJiBmb250TWV0cmljcyA9IGZvbnRQcm94eSgpLT5mb250TWV0cmljc09mUHJpbWFyeUZvbnQo
KTsKICAgICBGbG9hdFBvaW50IG9mZnNldDsKIAogICAgIHN3aXRjaCAoc3RhdGUoKS50ZXh0QmFz
ZWxpbmUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaAppbmRleCBkNGFlMGU0MTBjYzk1M2U5YjZhODdlNDI2
YzNlOWYzZWZmMzQyNDQ2Li5kNGM1YTRkN2IzMDBiZTRlOTRjYmJiZGQ4NjQyMDA4ZDNhMGNkYzhi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZS5oCkBAIC0yMzQsNyArMjM0LDcgQEAgcHVibGljOgogCiAgICAg
ICAgIGJvb2wgcmVhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2ZvbnQuZm9udFNlbGVjdG9yKCk7
IH0KICAgICAgICAgdm9pZCBpbml0aWFsaXplKEZvbnRTZWxlY3RvciYsIGNvbnN0IEZvbnRDYXNj
YWRlJik7Ci0gICAgICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcygpIGNvbnN0Owor
ICAgICAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkgY29u
c3Q7CiAgICAgICAgIGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlv
bigpIGNvbnN0OwogICAgICAgICBmbG9hdCB3aWR0aChjb25zdCBUZXh0UnVuJiwgR2x5cGhPdmVy
ZmxvdyogPSAwKSBjb25zdDsKICAgICAgICAgdm9pZCBkcmF3QmlkaVRleHQoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250Q2FzY2FkZTo6Q3Vz
dG9tRm9udE5vdFJlYWR5QWN0aW9uKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JPdmVybGF5LmNwcAppbmRleCAyYTA0ZjAwMDgzYmZjMGYzY2ViNmQzYWJmMDg3
ZWU4MzUyZmQxNTRiLi41MGFjZmFjNDgzYjQ4MzEzZGIwZmZjNWQxZDM3Mzk2MjViYjM3NDEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCkBAIC04
NjksNyArODY5LDcgQEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpkcmF3UnVsZXJzKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgSW5zcGVjdG9yT3ZlcmwKIAogICAgICAgICAgICAgICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgdmVydGljYWxMYWJlbFN0YXRlU2F2ZXIoY29udGV4
dCk7CiAgICAgICAgICAgICAgICAgY29udGV4dC50cmFuc2xhdGUoem9vbSh4KSArIDAuNWYsIHNj
cm9sbFkpOwotICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd1RleHQoZm9udCwgVGV4dFJ1bihT
dHJpbmc6Om51bWJlcih4KSksIHsgMiwgZHJhd1RvcEVkZ2UgPyBydWxlckxhYmVsU2l6ZSA6IHJ1
bGVyTGFiZWxTaXplIC0gcnVsZXJTaXplICsgZm9udC5mb250TWV0cmljcygpLmhlaWdodCgpIC0g
MS4wZiB9KTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIFRleHRSdW4o
U3RyaW5nOjpudW1iZXIoeCkpLCB7IDIsIGRyYXdUb3BFZGdlID8gcnVsZXJMYWJlbFNpemUgOiBy
dWxlckxhYmVsU2l6ZSAtIHJ1bGVyU2l6ZSArIGZvbnQuZm9udE1ldHJpY3NPZlByaW1hcnlGb250
KCkuaGVpZ2h0KCkgLSAxLjBmIH0pOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTky
OCw3ICs5MjgsNyBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmRyYXdSdWxlcnMoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnNwZWN0b3JPdmVybAogICAgICAgICBjb25zdCBmbG9h
dCBwYWRkaW5nID0gMjsKICAgICAgICAgY29uc3QgZmxvYXQgcmFkaXVzID0gNDsKICAgICAgICAg
ZmxvYXQgZm9udFdpZHRoID0gZm9udC53aWR0aCh2aWV3cG9ydFRleHRSdW4pOwotICAgICAgICBm
bG9hdCBmb250SGVpZ2h0ID0gZm9udC5mb250TWV0cmljcygpLmZsb2F0SGVpZ2h0KCk7CisgICAg
ICAgIGZsb2F0IGZvbnRIZWlnaHQgPSBmb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmZs
b2F0SGVpZ2h0KCk7CiAgICAgICAgIEZsb2F0UmVjdCB2aWV3cG9ydFRleHRSZWN0KG1hcmdpbiwg
bWFyZ2luLCAocGFkZGluZyAqIDIuMGYpICsgZm9udFdpZHRoLCAocGFkZGluZyAqIDIuMGYpICsg
Zm9udEhlaWdodCk7CiAgICAgICAgIGNvbnN0IGF1dG8gdmlld3BvcnRUZXh0UmVjdENlbnRlciA9
IHZpZXdwb3J0VGV4dFJlY3QuY2VudGVyKCk7CiAKQEAgLTk2Niw3ICs5NjYsNyBAQCB2b2lkIElu
c3BlY3Rvck92ZXJsYXk6OmRyYXdSdWxlcnMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBJbnNwZWN0b3JPdmVybAogICAgICAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJv
dW5kZWRSZWN0KHZpZXdwb3J0VGV4dFJlY3QsIEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpKHJhZGl1
cykpLCBydWxlckJhY2tncm91bmRDb2xvcik7CiAKICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29s
b3IoQ29sb3I6OmJsYWNrKTsKLSAgICAgICAgY29udGV4dC5kcmF3VGV4dChmb250LCB2aWV3cG9y
dFRleHRSdW4sIHttYXJnaW4gKyAgcGFkZGluZywgbWFyZ2luICsgcGFkZGluZyArIGZvbnRIZWln
aHQgLSBmb250LmZvbnRNZXRyaWNzKCkuZGVzY2VudCgpIH0pOworICAgICAgICBjb250ZXh0LmRy
YXdUZXh0KGZvbnQsIHZpZXdwb3J0VGV4dFJ1biwgeyBtYXJnaW4gKyAgcGFkZGluZywgbWFyZ2lu
ICsgcGFkZGluZyArIGZvbnRIZWlnaHQgLSBmb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgp
LmRlc2NlbnQoKSB9KTsKICAgICB9CiB9CiAKQEAgLTEwNDAsNyArMTA0MCw3IEBAIFBhdGggSW5z
cGVjdG9yT3ZlcmxheTo6ZHJhd0VsZW1lbnRUaXRsZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IE5vZGUmIG5vZGUsIGNvCiAgICAgRm9udENhc2NhZGUgZm9udChXVEZNb3ZlKGZvbnREZXNjcmlw
dGlvbiksIDAsIDApOwogICAgIGZvbnQudXBkYXRlKG51bGxwdHIpOwogCi0gICAgaW50IGZvbnRI
ZWlnaHQgPSBmb250LmZvbnRNZXRyaWNzKCkuaGVpZ2h0KCk7CisgICAgaW50IGZvbnRIZWlnaHQg
PSBmb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmhlaWdodCgpOwogCiAgICAgZmxvYXQg
ZWxlbWVudERhdGFXaWR0aDsKICAgICBmbG9hdCBlbGVtZW50RGF0YUhlaWdodCA9IGZvbnRIZWln
aHQ7CkBAIC0xMzQ4LDcgKzEzNDgsNyBAQCBzdGF0aWMgRmxvYXRTaXplIGV4cGVjdGVkU2l6ZUZv
ckxheW91dExhYmVsKFN0cmluZyBsYWJlbCwgSW5zcGVjdG9yT3ZlcmxheTo6TGFiZQogewogICAg
IGF1dG8gZm9udCA9IGZvbnRGb3JMYXlvdXRMYWJlbCgpOwogCi0gICAgZmxvYXQgdGV4dEhlaWdo
dCA9IGZvbnQuZm9udE1ldHJpY3MoKS5mbG9hdEhlaWdodCgpOworICAgIGZsb2F0IHRleHRIZWln
aHQgPSBmb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmZsb2F0SGVpZ2h0KCk7CiAgICAg
ZmxvYXQgdGV4dFdpZHRoID0gZm9udC53aWR0aChUZXh0UnVuKGxhYmVsKSk7CiAgICAgaWYgKG1h
eGltdW1XaWR0aCAmJiB0ZXh0V2lkdGggKyAobGF5b3V0TGFiZWxQYWRkaW5nICogMikgPiBtYXhp
bXVtV2lkdGgpCiAgICAgICAgIHRleHRXaWR0aCA9IG1heGltdW1XaWR0aDsKQEAgLTEzNzYsOCAr
MTM3Niw4IEBAIHN0YXRpYyB2b2lkIGRyYXdMYXlvdXRMYWJlbChHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIFN0cmluZyBsYWJlbCwgRmxvYXRQb2ludCBwCiAgICAgY29udGV4dC50cmFuc2xhdGUo
cG9pbnQpOwogCiAgICAgYXV0byBmb250ID0gZm9udEZvckxheW91dExhYmVsKCk7Ci0gICAgZmxv
YXQgdGV4dEhlaWdodCA9IGZvbnQuZm9udE1ldHJpY3MoKS5mbG9hdEhlaWdodCgpOwotICAgIGZs
b2F0IHRleHREZXNjZW50ID0gZm9udC5mb250TWV0cmljcygpLmZsb2F0RGVzY2VudCgpOworICAg
IGZsb2F0IHRleHRIZWlnaHQgPSBmb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmZsb2F0
SGVpZ2h0KCk7CisgICAgZmxvYXQgdGV4dERlc2NlbnQgPSBmb250LmZvbnRNZXRyaWNzT2ZQcmlt
YXJ5Rm9udCgpLmZsb2F0RGVzY2VudCgpOwogICAgIAogICAgIGZsb2F0IHRleHRXaWR0aCA9IGZv
bnQud2lkdGgoVGV4dFJ1bihsYWJlbCkpOwogICAgIGlmIChtYXhpbXVtV2lkdGggJiYgdGV4dFdp
ZHRoICsgKGxheW91dExhYmVsUGFkZGluZyAqIDIpID4gbWF4aW11bVdpZHRoKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVGb3JtYXR0aW5nUXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdRdWlya3MuY3BwCmluZGV4IDljOGU4Yzlh
ODc3MjAyNzg3YjA1ZWIwM2FmYjczMzgxNDNjNjUwYzkuLjU5ZTg3YTNhYzUyNDRkMDg5OTY3NTNh
YjVjYmE3Y2ZjODA0NTQxOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdRdWlya3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1h
dHRpbmdRdWlya3MuY3BwCkBAIC00NCw3ICs0NCw3IEBAIElubGluZUxheW91dFVuaXQgSW5saW5l
Rm9ybWF0dGluZ1F1aXJrczo6aW5pdGlhbExpbmVIZWlnaHQoKSBjb25zdAogICAgIEFTU0VSVCgh
bGF5b3V0U3RhdGUoKS5pblN0YW5kYXJkc01vZGUoKSk7CiAgICAgLy8gTmVnYXRpdmUgbGluZUhl
aWdodCB2YWx1ZSBtZWFucyB0aGUgbGluZS1oZWlnaHQgaXMgbm90IHNldAogICAgIGF1dG8mIHJv
b3RTdHlsZSA9IGZvcm1hdHRpbmdDb250ZXh0KCkucm9vdCgpLnN0eWxlKCk7Ci0gICAgcmV0dXJu
IHJvb3RTdHlsZS5saW5lSGVpZ2h0KCkuaXNOZWdhdGl2ZSgpID8gcm9vdFN0eWxlLmZvbnRNZXRy
aWNzKCkuZmxvYXRIZWlnaHQoKSA6IHJvb3RTdHlsZS5jb21wdXRlZExpbmVIZWlnaHQoKTsKKyAg
ICByZXR1cm4gcm9vdFN0eWxlLmxpbmVIZWlnaHQoKS5pc05lZ2F0aXZlKCkgPyByb290U3R5bGUu
Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuZmxvYXRIZWlnaHQoKSA6IHJvb3RTdHlsZS5jb21w
dXRlZExpbmVIZWlnaHQoKTsKIH0KIAogYm9vbCBJbmxpbmVGb3JtYXR0aW5nUXVpcmtzOjppbmxp
bmVMZXZlbEJveEFmZmVjdHNMaW5lQm94KGNvbnN0IElubGluZUxldmVsQm94JiBpbmxpbmVMZXZl
bEJveCwgY29uc3QgTGluZUJveCYgbGluZUJveCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxldmVsQm94Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVM
ZXZlbEJveC5oCmluZGV4IDUyOWEyMThlNTJkNTEwODEyZDhlZTk3ZTVjZjFhM2I0ODRjMDUxMDQu
LmQ3MDAzNDQ1N2FiZGRlZGQxMDY0ODkxZTdkNzUxN2U3ZmU3Zjc1MGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxldmVs
Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lTGV2ZWxCb3guaApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgVmVydGlj
YWxBbGlnbm1lbnQgdmVydGljYWxBbGlnbigpIGNvbnN0OwogICAgIElubGluZUxheW91dFVuaXQg
cHJlZmVycmVkTGluZUhlaWdodCgpIGNvbnN0OwogICAgIGJvb2wgaXNQcmVmZXJyZWRMaW5lSGVp
Z2h0Rm9udE1ldHJpY3NCYXNlZCgpIGNvbnN0OwotICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBwcmlt
YXJ5Rm9udE1ldHJpY3MoKSBjb25zdDsKKyAgICBjb25zdCBGb250TWV0cmljcyYgcHJpbWFyeWZv
bnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpIGNvbnN0OwogICAgIElubGluZUxheW91dFVuaXQgZm9u
dFNpemUoKSBjb25zdDsKIAogICAgIGJvb2wgaXNJbmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBt
X3R5cGUgPT0gVHlwZTo6SW5saW5lQm94IHx8IGlzUm9vdElubGluZUJveCgpIHx8IGlzTGluZVNw
YW5uaW5nSW5saW5lQm94KCk7IH0KQEAgLTE1NCw3ICsxNTQsNyBAQCBpbmxpbmUgSW5saW5lTGV2
ZWxCb3g6OklubGluZUxldmVsQm94KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBSZW5kZXJT
dHlsZSYgcwogICAgICwgbV9pc0ZpcnN0V2l0aGluTGF5b3V0Qm94KHBvc2l0aW9uV2l0aGluTGF5
b3V0Qm94LmNvbnRhaW5zKFBvc2l0aW9uV2l0aGluTGF5b3V0Qm94OjpGaXJzdCkpCiAgICAgLCBt
X2lzTGFzdFdpdGhpbkxheW91dEJveChwb3NpdGlvbldpdGhpbkxheW91dEJveC5jb250YWlucyhQ
b3NpdGlvbldpdGhpbkxheW91dEJveDo6TGFzdCkpCiAgICAgLCBtX3R5cGUodHlwZSkKLSAgICAs
IG1fc3R5bGUoeyBzdHlsZS5mb250Q2FzY2FkZSgpLnByaW1hcnlGb250KCkuZm9udE1ldHJpY3Mo
KSwgc3R5bGUubGluZUhlaWdodCgpLCBJbmxpbmVMYXlvdXRVbml0KHN0eWxlLmZvbnRDYXNjYWRl
KCkuZm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRQaXhlbFNpemUoKSksIHsgfSB9KQorICAgICwg
bV9zdHlsZSh7IHN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCks
IHN0eWxlLmxpbmVIZWlnaHQoKSwgSW5saW5lTGF5b3V0VW5pdChzdHlsZS5mb250Q2FzY2FkZSgp
LmZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkUGl4ZWxTaXplKCkpLCB7IH0gfSkKIHsKICAgICBt
X3N0eWxlLnZlcnRpY2FsQWxpZ25tZW50LnR5cGUgPSBzdHlsZS52ZXJ0aWNhbEFsaWduKCk7CiAg
ICAgaWYgKG1fc3R5bGUudmVydGljYWxBbGlnbm1lbnQudHlwZSA9PSBWZXJ0aWNhbEFsaWduOjpM
ZW5ndGgpCkBAIC0xNzIsNyArMTcyLDcgQEAgaW5saW5lIElubGluZUxheW91dFVuaXQgSW5saW5l
TGV2ZWxCb3g6OnByZWZlcnJlZExpbmVIZWlnaHQoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBS
ZW1vdmUgaW50ZWdyYWwgZmxvb3Jpbmcgd2hlbiBsZWdhY3kgbGluZSBsYXlvdXQgc3RvcHMgdXNp
bmcgaXQuCiAgICAgaWYgKGlzUHJlZmVycmVkTGluZUhlaWdodEZvbnRNZXRyaWNzQmFzZWQoKSkK
LSAgICAgICAgcmV0dXJuIHByaW1hcnlGb250TWV0cmljcygpLmxpbmVTcGFjaW5nKCk7CisgICAg
ICAgIHJldHVybiBwcmltYXJ5Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkubGluZVNwYWNpbmco
KTsKIAogICAgIGlmIChtX3N0eWxlLmxpbmVIZWlnaHQuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkp
CiAgICAgICAgIHJldHVybiBmbG9vcmYobWluaW11bVZhbHVlRm9yTGVuZ3RoKG1fc3R5bGUubGlu
ZUhlaWdodCwgZm9udFNpemUoKSkpOwpAQCAtMTk1LDcgKzE5NSw3IEBAIGlubGluZSBib29sIElu
bGluZUxldmVsQm94Ojppc1ByZWZlcnJlZExpbmVIZWlnaHRGb250TWV0cmljc0Jhc2VkKCkgY29u
c3QKICAgICByZXR1cm4gbV9zdHlsZS5saW5lSGVpZ2h0LmlzTmVnYXRpdmUoKTsKIH0KIAotaW5s
aW5lIGNvbnN0IEZvbnRNZXRyaWNzJiBJbmxpbmVMZXZlbEJveDo6cHJpbWFyeUZvbnRNZXRyaWNz
KCkgY29uc3QKK2lubGluZSBjb25zdCBGb250TWV0cmljcyYgSW5saW5lTGV2ZWxCb3g6OnByaW1h
cnlmb250TWV0cmljc09mUHJpbWFyeUZvbnQoKSBjb25zdAogewogICAgIHJldHVybiBtX3N0eWxl
LnByaW1hcnlGb250TWV0cmljczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveC5jcHAK
aW5kZXggNmUyMDg2MDEwOWRhZGUxZDQ3ZGZjNjVmYmI4NGIzMzY0Yjc4NTJkNi4uNmQyMzY1Mzdk
YzU2MTNhOTVhMGRjN2Y5MjZlMzM5MjM5NjYwNTU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGluZUJveC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgSW5saW5lUmVjdCBMaW5lQm94Ojpsb2dpY2Fs
UmVjdEZvclRleHRSdW4oY29uc3QgTGluZTo6UnVuJiBydW4pIGNvbnN0CiAgICAgQVNTRVJUKHJ1
bi5pc1RleHQoKSB8fCBydW4uaXNTb2Z0TGluZUJyZWFrKCkpOwogICAgIGF1dG8qIHBhcmVudElu
bGluZUJveCA9ICZpbmxpbmVMZXZlbEJveEZvckxheW91dEJveChydW4ubGF5b3V0Qm94KCkucGFy
ZW50KCkpOwogICAgIEFTU0VSVChwYXJlbnRJbmxpbmVCb3gtPmlzSW5saW5lQm94KCkpOwotICAg
IGF1dG8mIGZvbnRNZXRyaWNzID0gcGFyZW50SW5saW5lQm94LT5wcmltYXJ5Rm9udE1ldHJpY3Mo
KTsKKyAgICBhdXRvJiBmb250TWV0cmljcyA9IHBhcmVudElubGluZUJveC0+cHJpbWFyeWZvbnRN
ZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwogICAgIGF1dG8gcnVubG9naWNhbFRvcCA9IHBhcmVudElu
bGluZUJveC0+bG9naWNhbFRvcCgpICsgcGFyZW50SW5saW5lQm94LT5iYXNlbGluZSgpIC0gZm9u
dE1ldHJpY3MuYXNjZW50KCk7CiAKICAgICB3aGlsZSAocGFyZW50SW5saW5lQm94ICE9ICZtX3Jv
b3RJbmxpbmVCb3ggJiYgIXBhcmVudElubGluZUJveC0+aGFzTGluZUJveFJlbGF0aXZlQWxpZ25t
ZW50KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcApp
bmRleCA5MWYzMGQ1ZWJjYjcyNDFiYThlMTU2YmE3OWY0YzUzNmFkMGVkMzA2Li5kNDU3MGJmZDY4
Zjg4MDc0NTFjMjIyZTNjMWExOGFjMDFjOTUyYjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lTGluZUJveEJ1aWxkZXIuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAgdm9pZCBMaW5lQm94
QnVpbGRlcjo6c2V0VmVydGljYWxHZW9tZXRyeUZvckxpbmVCcmVha0JveChJbmxpbmVMZXZlbEJv
eCYgbGluZUJyZWEKICAgICBBU1NFUlQobGluZUJyZWFrQm94LmlzTGluZUJyZWFrQm94KCkpOwog
ICAgIEFTU0VSVChwYXJlbnRJbmxpbmVCb3guaXNJbmxpbmVCb3goKSk7CiAKLSAgICBhdXRvJiBm
b250TWV0cmljcyA9IHBhcmVudElubGluZUJveC5wcmltYXJ5Rm9udE1ldHJpY3MoKTsKKyAgICBh
dXRvJiBmb250TWV0cmljcyA9IHBhcmVudElubGluZUJveC5wcmltYXJ5Zm9udE1ldHJpY3NPZlBy
aW1hcnlGb250KCk7CiAgICAgYXV0byBwcmVmZXJyZWRMaW5lSGVpZ2h0ID0gcGFyZW50SW5saW5l
Qm94LmlzUHJlZmVycmVkTGluZUhlaWdodEZvbnRNZXRyaWNzQmFzZWQoKSA/IHN0ZDo6bnVsbG9w
dCA6IHN0ZDo6bWFrZV9vcHRpb25hbChwYXJlbnRJbmxpbmVCb3gucHJlZmVycmVkTGluZUhlaWdo
dCgpKTsKICAgICBhdXRvIGhlaWdodEFuZExheW91dEJvdW5kcyA9IGNvbXB1dGVkSGVpZ2h0QW5k
TGF5b3V0Qm91bmRzKGZvbnRNZXRyaWNzLCBwcmVmZXJyZWRMaW5lSGVpZ2h0KTsKIApAQCAtMTk0
LDcgKzE5NCw3IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OnNldEluaXRpYWxWZXJ0aWNhbEdlb21l
dHJ5Rm9ySW5saW5lQm94KElubGluZUxldmVsQm94JiBpbmxpCiAgICAgLy8gV2UgbmVlZCBmbG9v
ci9jZWlsIHRvIG1hdGNoIGxlZ2FjeSBsYXlvdXQgaW50ZWdyYWwgcG9zaXRpb25pbmcuCiAgICAg
QVNTRVJUKGlubGluZUJveC5pc0lubGluZUJveCgpKTsKIAotICAgIGF1dG8mIGZvbnRNZXRyaWNz
ID0gaW5saW5lQm94LnByaW1hcnlGb250TWV0cmljcygpOworICAgIGF1dG8mIGZvbnRNZXRyaWNz
ID0gaW5saW5lQm94LnByaW1hcnlmb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsKICAgICBhdXRv
IHByZWZlcnJlZExpbmVIZWlnaHQgPSBpbmxpbmVCb3guaXNQcmVmZXJyZWRMaW5lSGVpZ2h0Rm9u
dE1ldHJpY3NCYXNlZCgpID8gc3RkOjpudWxsb3B0IDogc3RkOjptYWtlX29wdGlvbmFsKGlubGlu
ZUJveC5wcmVmZXJyZWRMaW5lSGVpZ2h0KCkpOwogICAgIGF1dG8gaGVpZ2h0QW5kTGF5b3V0Qm91
bmRzID0gY29tcHV0ZWRIZWlnaHRBbmRMYXlvdXRCb3VuZHMoZm9udE1ldHJpY3MsIHByZWZlcnJl
ZExpbmVIZWlnaHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94VmVydGljYWxBbGlnbmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVC
b3hWZXJ0aWNhbEFsaWduZXIuY3BwCmluZGV4IDE4MjM1MDg0Y2I5Mzc1MTA1OGE0MzQ5ZGI5ZjYz
OTQ3NWU1OTJjNTIuLjNhNzM1ZmMwYTE0YmJhYzk5MzJmZTBmY2QwZjhiOGQxYzk1YzI1OGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWdu
ZXIuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgSW5saW5lTGF5b3V0VW5pdCBMaW5lQm94VmVydGlj
YWxBbGlnbmVyOjpjb21wdXRlTGluZUJveExvZ2ljYWxIZWlnaHQoTGluZUJveCYgbGkKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6TWlk
ZGxlOiB7Ci0gICAgICAgICAgICBhdXRvIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxp
bmUgPSBpbmxpbmVMZXZlbEJveC5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKSAvIDIgKyBwYXJlbnRJ
bmxpbmVCb3gucHJpbWFyeUZvbnRNZXRyaWNzKCkueEhlaWdodCgpIC8gMjsKKyAgICAgICAgICAg
IGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGlubGluZUxldmVsQm94
LmxheW91dEJvdW5kcygpLmhlaWdodCgpIC8gMiArIHBhcmVudElubGluZUJveC5wcmltYXJ5Zm9u
dE1ldHJpY3NPZlByaW1hcnlGb250KCkueEhlaWdodCgpIC8gMjsKICAgICAgICAgICAgIGxvZ2lj
YWxUb3AgPSBwYXJlbnRJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCkuYXNjZW50IC0gbG9naWNhbFRv
cE9mZnNldEZyb21QYXJlbnRCYXNlbGluZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CkBAIC0yNDIsNyArMjQyLDcgQEAgdm9pZCBMaW5lQm94VmVydGljYWxBbGlnbmVyOjpjb21wdXRl
Um9vdElubGluZUJveFZlcnRpY2FsUG9zaXRpb24oTGluZUJveCYgbGluZUIKICAgICAgICAgICAg
ICAgICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IHsgfTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6TWlkZGxlOiB7Ci0g
ICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0g
KGlubGluZUxldmVsQm94LmxheW91dEJvdW5kcygpLmhlaWdodCgpIC8gMiArIHBhcmVudElubGlu
ZUJveC5wcmltYXJ5Rm9udE1ldHJpY3MoKS54SGVpZ2h0KCkgLyAyKTsKKyAgICAgICAgICAgICAg
ICBhdXRvIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSAoaW5saW5lTGV2ZWxC
b3gubGF5b3V0Qm91bmRzKCkuaGVpZ2h0KCkgLyAyICsgcGFyZW50SW5saW5lQm94LnByaW1hcnlm
b250TWV0cmljc09mUHJpbWFyeUZvbnQoKS54SGVpZ2h0KCkgLyAyKTsKICAgICAgICAgICAgICAg
ICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGxvZ2ljYWxUb3BPZmZzZXRGcm9t
UGFyZW50QmFzZWxpbmUgLSBpbmxpbmVMZXZlbEJveC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQ7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0zMjEsNyArMzIxLDcgQEAg
dm9pZCBMaW5lQm94VmVydGljYWxBbGlnbmVyOjphbGlnbklubGluZUxldmVsQm94ZXMoTGluZUJv
eCYgbGluZUJveCwgSW5saW5lTGF5b3UKICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJ
bmxpbmVCb3guYmFzZWxpbmUoKSAtIGlubGluZUxldmVsQm94LmJhc2VsaW5lKCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpNaWRkbGU6IHsKLSAgICAg
ICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IChpbmxpbmVM
ZXZlbEJveC5sb2dpY2FsSGVpZ2h0KCkgLyAyICsgcGFyZW50SW5saW5lQm94LnByaW1hcnlGb250
TWV0cmljcygpLnhIZWlnaHQoKSAvIDIpOworICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wT2Zm
c2V0RnJvbVBhcmVudEJhc2VsaW5lID0gKGlubGluZUxldmVsQm94LmxvZ2ljYWxIZWlnaHQoKSAv
IDIgKyBwYXJlbnRJbmxpbmVCb3gucHJpbWFyeWZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLnhI
ZWlnaHQoKSAvIDIpOwogICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC5i
YXNlbGluZSgpIC0gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FzY2FkZS5jcHAKaW5kZXggMmE3NjEzNjJjODNmYTY4NWI1MWM2ZWUwNTJjNmIx
MzVjMDI1ZjlhMC4uMTdlZWU1NWNiZWUxMTZkMDIwZDRkNTI3ZWViYzI2MDBjNDcxZjYzNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApA
QCAtMTQxMyw4ICsxNDEzLDggQEAgZmxvYXQgRm9udENhc2NhZGU6OmZsb2F0V2lkdGhGb3JTaW1w
bGVUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgSGFzaFNldDxjb25zdCBGb24KICAgICBpdC5maW5h
bGl6ZShnbHlwaEJ1ZmZlcik7CiAKICAgICBpZiAoZ2x5cGhPdmVyZmxvdykgewotICAgICAgICBn
bHlwaE92ZXJmbG93LT50b3AgPSBzdGQ6Om1heDxpbnQ+KGdseXBoT3ZlcmZsb3ctPnRvcCwgY2Vp
bGYoLWl0Lm1pbkdseXBoQm91bmRpbmdCb3hZKCkpIC0gKGdseXBoT3ZlcmZsb3ctPmNvbXB1dGVC
b3VuZHMgPyAwIDogZm9udE1ldHJpY3MoKS5hc2NlbnQoKSkpOwotICAgICAgICBnbHlwaE92ZXJm
bG93LT5ib3R0b20gPSBzdGQ6Om1heDxpbnQ+KGdseXBoT3ZlcmZsb3ctPmJvdHRvbSwgY2VpbGYo
aXQubWF4R2x5cGhCb3VuZGluZ0JveFkoKSkgLSAoZ2x5cGhPdmVyZmxvdy0+Y29tcHV0ZUJvdW5k
cyA/IDAgOiBmb250TWV0cmljcygpLmRlc2NlbnQoKSkpOworICAgICAgICBnbHlwaE92ZXJmbG93
LT50b3AgPSBzdGQ6Om1heDxpbnQ+KGdseXBoT3ZlcmZsb3ctPnRvcCwgY2VpbGYoLWl0Lm1pbkds
eXBoQm91bmRpbmdCb3hZKCkpIC0gKGdseXBoT3ZlcmZsb3ctPmNvbXB1dGVCb3VuZHMgPyAwIDog
Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50KCkpKTsKKyAgICAgICAgZ2x5cGhPdmVy
Zmxvdy0+Ym90dG9tID0gc3RkOjptYXg8aW50PihnbHlwaE92ZXJmbG93LT5ib3R0b20sIGNlaWxm
KGl0Lm1heEdseXBoQm91bmRpbmdCb3hZKCkpIC0gKGdseXBoT3ZlcmZsb3ctPmNvbXB1dGVCb3Vu
ZHMgPyAwIDogZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuZGVzY2VudCgpKSk7CiAgICAgICAg
IGdseXBoT3ZlcmZsb3ctPmxlZnQgPSBjZWlsZihpdC5maXJzdEdseXBoT3ZlcmZsb3coKSk7CiAg
ICAgICAgIGdseXBoT3ZlcmZsb3ctPnJpZ2h0ID0gY2VpbGYoaXQubGFzdEdseXBoT3ZlcmZsb3co
KSk7CiAgICAgfQpAQCAtMTQyNiw4ICsxNDI2LDggQEAgZmxvYXQgRm9udENhc2NhZGU6OmZsb2F0
V2lkdGhGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIEhhc2hTZXQ8Y29uc3QgRm8K
IHsKICAgICBDb21wbGV4VGV4dENvbnRyb2xsZXIgY29udHJvbGxlcigqdGhpcywgcnVuLCB0cnVl
LCBmYWxsYmFja0ZvbnRzKTsKICAgICBpZiAoZ2x5cGhPdmVyZmxvdykgewotICAgICAgICBnbHlw
aE92ZXJmbG93LT50b3AgPSBzdGQ6Om1heDxpbnQ+KGdseXBoT3ZlcmZsb3ctPnRvcCwgY2VpbGYo
LWNvbnRyb2xsZXIubWluR2x5cGhCb3VuZGluZ0JveFkoKSkgLSAoZ2x5cGhPdmVyZmxvdy0+Y29t
cHV0ZUJvdW5kcyA/IDAgOiBmb250TWV0cmljcygpLmFzY2VudCgpKSk7Ci0gICAgICAgIGdseXBo
T3ZlcmZsb3ctPmJvdHRvbSA9IHN0ZDo6bWF4PGludD4oZ2x5cGhPdmVyZmxvdy0+Ym90dG9tLCBj
ZWlsZihjb250cm9sbGVyLm1heEdseXBoQm91bmRpbmdCb3hZKCkpIC0gKGdseXBoT3ZlcmZsb3ct
PmNvbXB1dGVCb3VuZHMgPyAwIDogZm9udE1ldHJpY3MoKS5kZXNjZW50KCkpKTsKKyAgICAgICAg
Z2x5cGhPdmVyZmxvdy0+dG9wID0gc3RkOjptYXg8aW50PihnbHlwaE92ZXJmbG93LT50b3AsIGNl
aWxmKC1jb250cm9sbGVyLm1pbkdseXBoQm91bmRpbmdCb3hZKCkpIC0gKGdseXBoT3ZlcmZsb3ct
PmNvbXB1dGVCb3VuZHMgPyAwIDogZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50KCkp
KTsKKyAgICAgICAgZ2x5cGhPdmVyZmxvdy0+Ym90dG9tID0gc3RkOjptYXg8aW50PihnbHlwaE92
ZXJmbG93LT5ib3R0b20sIGNlaWxmKGNvbnRyb2xsZXIubWF4R2x5cGhCb3VuZGluZ0JveFkoKSkg
LSAoZ2x5cGhPdmVyZmxvdy0+Y29tcHV0ZUJvdW5kcyA/IDAgOiBmb250TWV0cmljc09mUHJpbWFy
eUZvbnQoKS5kZXNjZW50KCkpKTsKICAgICAgICAgZ2x5cGhPdmVyZmxvdy0+bGVmdCA9IHN0ZDo6
bWF4PGludD4oMCwgY2VpbGYoLWNvbnRyb2xsZXIubWluR2x5cGhCb3VuZGluZ0JveFgoKSkpOwog
ICAgICAgICBnbHlwaE92ZXJmbG93LT5yaWdodCA9IHN0ZDo6bWF4PGludD4oMCwgY2VpbGYoY29u
dHJvbGxlci5tYXhHbHlwaEJvdW5kaW5nQm94WCgpIC0gY29udHJvbGxlci50b3RhbEFkdmFuY2Uo
KS53aWR0aCgpKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhc2NhZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYXNjYWRlLmgKaW5kZXggYmFiZTk2Njg0ZTdjMTVjYjljYTk2OTNiYTM1NjBhOGFhM2Qy
Yzk2Yy4uNmM2MzcyMTZiZmQ0MDQ5NjNhNzExZjE2OWY5MTliMTVkZTYwYjZiZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCkBAIC0xNjMsNyAr
MTYzLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1BsYXRmb3JtRm9udCgpIGNvbnN0IHsgcmV0
dXJuIG1fZm9udHMtPmlzRm9yUGxhdGZvcm1Gb250KCk7IH0KIAotICAgIGNvbnN0IEZvbnRNZXRy
aWNzJiBmb250TWV0cmljcygpIGNvbnN0IHsgcmV0dXJuIHByaW1hcnlGb250KCkuZm9udE1ldHJp
Y3MoKTsgfQorICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljc09mUHJpbWFyeUZvbnQo
KSBjb25zdCB7IHJldHVybiBwcmltYXJ5Rm9udCgpLmZvbnRNZXRyaWNzKCk7IH0KICAgICBmbG9h
dCBzcGFjZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gcHJpbWFyeUZvbnQoKS5zcGFjZVdpZHRoKCkg
KyBtX2xldHRlclNwYWNpbmc7IH0KICAgICBmbG9hdCB0YWJXaWR0aChjb25zdCBGb250JiwgY29u
c3QgVGFiU2l6ZSYsIGZsb2F0KSBjb25zdDsKICAgICBmbG9hdCB0YWJXaWR0aChjb25zdCBUYWJT
aXplJiB0YWJTaXplLCBmbG9hdCBwb3NpdGlvbikgY29uc3QgeyByZXR1cm4gdGFiV2lkdGgocHJp
bWFyeUZvbnQoKSwgdGFiU2l6ZSwgcG9zaXRpb24pOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwCmluZGV4IGVjZTUwYTgyMzM5ZjBmZjIwNDkzNGE4OTI2
ZDJkODA3NGMwZGUwZDIuLjNiMTg4YmQ3YTFiOTIwNDVjZTIyOTcxMmVmOTAxYzllZjFhNTU5MTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwCkBAIC0x
NTMsNyArMTUzLDcgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoRWxlbWVu
dCYsIFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGluTGFiZWwsIFQKICAgICAvLyBGaXJzdCBzdGVw
IGluIGRyYXdpbmcgdGhlIGxpbmsgZHJhZyBpbWFnZSB3aWR0aC4KICAgICBUZXh0UnVuIGxhYmVs
UnVuKGxhYmVsKTsKICAgICBUZXh0UnVuIHVybFJ1bih1cmxTdHJpbmcpOwotICAgIEludFNpemUg
bGFiZWxTaXplKGxhYmVsRm9udC0+d2lkdGgobGFiZWxSdW4pLCBsYWJlbEZvbnQtPmZvbnRNZXRy
aWNzKCkuYXNjZW50KCkgKyBsYWJlbEZvbnQtPmZvbnRNZXRyaWNzKCkuZGVzY2VudCgpKTsKKyAg
ICBJbnRTaXplIGxhYmVsU2l6ZShsYWJlbEZvbnQtPndpZHRoKGxhYmVsUnVuKSwgbGFiZWxGb250
LT5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoKSArIGxhYmVsRm9udC0+Zm9udE1l
dHJpY3NPZlByaW1hcnlGb250KCkuZGVzY2VudCgpKTsKIAogICAgIGlmIChsYWJlbFNpemUud2lk
dGgoKSA+IE1heERyYWdMYWJlbFN0cmluZ1dpZHRoKSB7CiAgICAgICAgIGxhYmVsU2l6ZS5zZXRX
aWR0aChNYXhEcmFnTGFiZWxTdHJpbmdXaWR0aCk7CkBAIC0xNjUsNyArMTY1LDcgQEAgRHJhZ0lt
YWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoRWxlbWVudCYsIFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIGluTGFiZWwsIFQKIAogICAgIGlmIChkcmF3VVJMU3RyaW5nKSB7CiAgICAgICAgIHVy
bFN0cmluZ1NpemUuc2V0V2lkdGgodXJsRm9udC0+d2lkdGgodXJsUnVuKSk7Ci0gICAgICAgIHVy
bFN0cmluZ1NpemUuc2V0SGVpZ2h0KHVybEZvbnQtPmZvbnRNZXRyaWNzKCkuYXNjZW50KCkgKyB1
cmxGb250LT5mb250TWV0cmljcygpLmRlc2NlbnQoKSk7IAorICAgICAgICB1cmxTdHJpbmdTaXpl
LnNldEhlaWdodCh1cmxGb250LT5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoKSAr
IHVybEZvbnQtPmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmRlc2NlbnQoKSk7IAogICAgICAg
ICBpbWFnZVNpemUuc2V0SGVpZ2h0KGltYWdlU2l6ZS5oZWlnaHQoKSArIHVybFN0cmluZ1NpemUu
aGVpZ2h0KCkpOwogICAgICAgICBpZiAodXJsU3RyaW5nU2l6ZS53aWR0aCgpID4gTWF4RHJhZ0xh
YmVsU3RyaW5nV2lkdGgpIHsKICAgICAgICAgICAgIGltYWdlU2l6ZS5zZXRXaWR0aChNYXhEcmFn
TGFiZWxXaWR0aCk7CkBAIC0yMDEsNyArMjAxLDcgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJ
bWFnZUZvckxpbmsoRWxlbWVudCYsIFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGluTGFiZWwsIFQK
ICAgICBpZiAoZHJhd1VSTFN0cmluZykgewogICAgICAgICBpZiAoY2xpcFVSTFN0cmluZykKICAg
ICAgICAgICAgIHVybFN0cmluZyA9IFN0cmluZ1RydW5jYXRvcjo6cmlnaHRUcnVuY2F0ZSh1cmxT
dHJpbmcsIGltYWdlU2l6ZS53aWR0aCgpIC0gKERyYWdMYWJlbEJvcmRlclggKiAyLjBmKSwgKnVy
bEZvbnQpOwotICAgICAgICBJbnRQb2ludCB0ZXh0UG9zKERyYWdMYWJlbEJvcmRlclgsIGltYWdl
U2l6ZS5oZWlnaHQoKSAtIChMYWJlbEJvcmRlcllPZmZzZXQgKyB1cmxGb250LT5mb250TWV0cmlj
cygpLmRlc2NlbnQoKSkpOworICAgICAgICBJbnRQb2ludCB0ZXh0UG9zKERyYWdMYWJlbEJvcmRl
clgsIGltYWdlU2l6ZS5oZWlnaHQoKSAtIChMYWJlbEJvcmRlcllPZmZzZXQgKyB1cmxGb250LT5m
b250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5kZXNjZW50KCkpKTsKICAgICAgICAgV2ViQ29yZURy
YXdEb3VibGVkVGV4dEF0UG9pbnQoY29udGV4dCwgdXJsU3RyaW5nLCB0ZXh0UG9zLCAqdXJsRm9u
dCwgdG9wQ29sb3IsIGJvdHRvbUNvbG9yKTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCmluZGV4IGE4OTk5YmRlMWMzNjljYTU3N2Iz
NDMxNWMyNmFmNDY5YTMwNjNkNjcuLmEwMThiYzNkYmM0N2U0ZThkMjVjYzg0ZjZkYjVhYjYzZTJi
N2M5ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3Bw
CkBAIC0zMzAsNyArMzMwLDcgQEAgdm9pZCBQb3B1cE1lbnVXaW46OmNhbGN1bGF0ZVBvc2l0aW9u
QW5kU2l6ZShjb25zdCBJbnRSZWN0JiByLCBGcmFtZVZpZXcqIHYpCiAKICAgICAvLyBGaXJzdCwg
ZGV0ZXJtaW5lIHRoZSBwb3B1cCdzIGhlaWdodAogICAgIGludCBpdGVtQ291bnQgPSBjbGllbnQo
KS0+bGlzdFNpemUoKTsKLSAgICBtX2l0ZW1IZWlnaHQgPSBtX2ZvbnQuZm9udE1ldHJpY3MoKS5o
ZWlnaHQoKSArIG9wdGlvblNwYWNpbmdNaWRkbGU7CisgICAgbV9pdGVtSGVpZ2h0ID0gbV9mb250
LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmhlaWdodCgpICsgb3B0aW9uU3BhY2luZ01pZGRs
ZTsKIAogICAgIGludCBuYXR1cmFsSGVpZ2h0ID0gbV9pdGVtSGVpZ2h0ICogaXRlbUNvdW50Owog
ICAgIGludCBwb3B1cEhlaWdodCA9IHN0ZDo6bWluKG1heFBvcHVwSGVpZ2h0LCBuYXR1cmFsSGVp
Z2h0KTsKQEAgLTY2OCw3ICs2NjgsNyBAQCB2b2lkIFBvcHVwTWVudVdpbjo6cGFpbnQoY29uc3Qg
SW50UmVjdCYgZGFtYWdlUmVjdCwgSERDIGhkYykKICAgICAgICAgICAgICAgICBpZiAoUmVuZGVy
VGhlbWU6OnNpbmdsZXRvbigpLnBvcHVwT3B0aW9uU3VwcG9ydHNUZXh0SW5kZW50KCkpCiAgICAg
ICAgICAgICAgICAgICAgIHRleHRYIC09IG1pbmltdW1JbnRWYWx1ZUZvckxlbmd0aChpdGVtU3R5
bGUudGV4dEluZGVudCgpLCBpdGVtUmVjdC53aWR0aCgpKTsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGludCB0ZXh0WSA9IGl0ZW1SZWN0LnkoKSArIGl0ZW1Gb250LmZvbnRNZXRyaWNzKCku
YXNjZW50KCkgKyAoaXRlbVJlY3QuaGVpZ2h0KCkgLSBpdGVtRm9udC5mb250TWV0cmljcygpLmhl
aWdodCgpKSAvIDI7CisgICAgICAgICAgICBpbnQgdGV4dFkgPSBpdGVtUmVjdC55KCkgKyBpdGVt
Rm9udC5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoKSArIChpdGVtUmVjdC5oZWln
aHQoKSAtIGl0ZW1Gb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmhlaWdodCgpKSAvIDI7
CiAgICAgICAgICAgICBjb250ZXh0LmRyYXdCaWRpVGV4dChpdGVtRm9udCwgdGV4dFJ1biwgSW50
UG9pbnQodGV4dFgsIHRleHRZKSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2FyZXRSZWN0Q29tcHV0YXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0NhcmV0UmVjdENvbXB1dGF0aW9uLmNwcAppbmRleCBjZTdmNTQyZGQ5
N2I4NTM4NjFlMjNhY2Y4MWY4OWY4ZDIxNjc5NzA1Li45YTg2ZmYzMDI4ODg4NjQyNmRmZjljNzRl
NjI2NDViNTQ4ZWVhNmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2Fy
ZXRSZWN0Q29tcHV0YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DYXJl
dFJlY3RDb21wdXRhdGlvbi5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgc3RhdGljIExheW91dFJlY3Qg
Y29tcHV0ZUNhcmV0UmVjdEZvckVtcHR5RWxlbWVudChjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVj
dCYgcmUKICAgICB4ID0gc3RkOjptaW4oeCwgc3RkOjptYXg8TGF5b3V0VW5pdD4obWF4WCAtIGNh
cmV0V2lkdGgsIDApKTsKIAogICAgIGF1dG8gbGluZUhlaWdodCA9IHJlbmRlcmVyLmxpbmVIZWln
aHQodHJ1ZSwgY3VycmVudFN0eWxlLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9u
dGFsTGluZSA6IFZlcnRpY2FsTGluZSwgUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKTsKLSAg
ICBhdXRvIGhlaWdodCA9IHN0ZDo6bWluKGxpbmVIZWlnaHQsIExheW91dFVuaXQgeyBjdXJyZW50
U3R5bGUuZm9udE1ldHJpY3MoKS5oZWlnaHQoKSB9KTsKKyAgICBhdXRvIGhlaWdodCA9IHN0ZDo6
bWluKGxpbmVIZWlnaHQsIExheW91dFVuaXQgeyBjdXJyZW50U3R5bGUuZm9udE1ldHJpY3NPZlBy
aW1hcnlGb250KCkuaGVpZ2h0KCkgfSk7CiAgICAgYXV0byB5ID0gcmVuZGVyZXIucGFkZGluZ1Rv
cCgpICsgcmVuZGVyZXIuYm9yZGVyVG9wKCkgKyAobGluZUhlaWdodCA+IGhlaWdodCA/IChsaW5l
SGVpZ2h0IC0gaGVpZ2h0KSAvIDIgOiBMYXlvdXRVbml0IHsgfSk7CiAKICAgICBhdXRvIHJlY3Qg
PSBMYXlvdXRSZWN0KHgsIHksIGNhcmV0V2lkdGgsIGhlaWdodCk7CkBAIC0yNDEsNyArMjQxLDcg
QEAgc3RhdGljIExheW91dFJlY3QgY29tcHV0ZUNhcmV0UmVjdEZvckJveChjb25zdCBSZW5kZXJC
b3gmIHJlbmRlcmVyLCBjb25zdCBJbmxpbmUKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vMzc3Nzgw
ND4gRGVsZXRpbmcgYWxsIGNvbnRlbnQgaW4gYSBkb2N1bWVudCBjYW4gcmVzdWx0IGluIGdpYW50
IHRhbGwtYXMtd2luZG93IGluc2VydGlvbiBwb2ludAogICAgIC8vCiAgICAgLy8gRklYTUU6IGln
bm9yaW5nIDpmaXJzdC1saW5lLCBtaXNzaW5nIGdvb2QgcmVhc29uIHRvIHRha2UgY2FyZSBvZgot
ICAgIExheW91dFVuaXQgZm9udEhlaWdodCA9IHJlbmRlcmVyLnN0eWxlKCkuZm9udE1ldHJpY3Mo
KS5oZWlnaHQoKTsKKyAgICBMYXlvdXRVbml0IGZvbnRIZWlnaHQgPSByZW5kZXJlci5zdHlsZSgp
LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmhlaWdodCgpOwogICAgIGlmIChmb250SGVpZ2h0
ID4gcmVjdC5oZWlnaHQoKSB8fCAoIXJlbmRlcmVyLmlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkg
JiYgIXJlbmRlcmVyLmlzVGFibGUoKSkpCiAgICAgICAgIHJlY3Quc2V0SGVpZ2h0KGZvbnRIZWln
aHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5RWxsaXBz
aXNCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUVsbGlwc2lzQm94LmNw
cAppbmRleCA0NmRjZDQ2ZmY3ZGUyOTg2NmI0OTk4ZTNmYzZjNzUwNjlkYmVlYjQ3Li5lOTcxNjgw
NTcwNzBjY2Q0ZjI4NmEwYThiMGVkNDQ2YTJlMTViYjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvTGVnYWN5RWxsaXBzaXNCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9MZWdhY3lFbGxpcHNpc0JveC5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBM
ZWdhY3lFbGxpcHNpc0JveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50JiBwYWludE9mZnMKICAgICB9CiAKICAgICAvLyBGSVhNRTogV2h5IGlzIHRoaXMgYWx3
YXlzIExUUj8gRml4IGJ5IHBhc3NpbmcgY29ycmVjdCB0ZXh0IHJ1biBmbGFncyBiZWxvdy4KLSAg
ICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKG1f
c3RyLCBsaW5lU3R5bGUsIEFsbG93UmlnaHRFeHBhbnNpb24pLCBMYXlvdXRQb2ludCh4KCkgKyBw
YWludE9mZnNldC54KCksIHkoKSArIHBhaW50T2Zmc2V0LnkoKSArIGxpbmVTdHlsZS5mb250TWV0
cmljcygpLmFzY2VudCgpKSk7CisgICAgY29udGV4dC5kcmF3VGV4dChmb250LCBSZW5kZXJCbG9j
azo6Y29uc3RydWN0VGV4dFJ1bihtX3N0ciwgbGluZVN0eWxlLCBBbGxvd1JpZ2h0RXhwYW5zaW9u
KSwgTGF5b3V0UG9pbnQoeCgpICsgcGFpbnRPZmZzZXQueCgpLCB5KCkgKyBwYWludE9mZnNldC55
KCkgKyBsaW5lU3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50KCkpKTsKIAog
ICAgIC8vIFJlc3RvcmUgdGhlIHJlZ3VsYXIgZmlsbCBjb2xvci4KICAgICBpZiAodGV4dENvbG9y
ICE9IGNvbnRleHQuZmlsbENvbG9yKCkpCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBMZWdhY3lF
bGxpcHNpc0JveDo6cGFpbnRNYXJrdXBCb3goUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JgogCiAgICAgTGF5b3V0UG9pbnQgYWRqdXN0ZWRQYWludE9mZnNldCA9IHBhaW50
T2Zmc2V0OwogICAgIGFkanVzdGVkUGFpbnRPZmZzZXQubW92ZSh4KCkgKyBsb2dpY2FsV2lkdGgo
KSAtIG1hcmt1cEJveC0+eCgpLAotICAgICAgICB5KCkgKyBzdHlsZS5mb250TWV0cmljcygpLmFz
Y2VudCgpIC0gKG1hcmt1cEJveC0+eSgpICsgbWFya3VwQm94LT5saW5lU3R5bGUoKS5mb250TWV0
cmljcygpLmFzY2VudCgpKSk7CisgICAgICAgIHkoKSArIHN0eWxlLmZvbnRNZXRyaWNzT2ZQcmlt
YXJ5Rm9udCgpLmFzY2VudCgpIC0gKG1hcmt1cEJveC0+eSgpICsgbWFya3VwQm94LT5saW5lU3R5
bGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoKSkpOwogICAgIG1hcmt1cEJv
eC0+cGFpbnQocGFpbnRJbmZvLCBhZGp1c3RlZFBhaW50T2Zmc2V0LCBsaW5lVG9wLCBsaW5lQm90
dG9tKTsKIH0KIApAQCAtMTUzLDcgKzE1Myw3IEBAIGJvb2wgTGVnYWN5RWxsaXBzaXNCb3g6Om5v
ZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0CiAg
ICAgaWYgKExlZ2FjeUlubGluZUJveCogbWFya3VwQm94ID0gdGhpcy0+bWFya3VwQm94KCkpIHsK
ICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIGxpbmVTdHlsZSA9IHRoaXMtPmxpbmVTdHlsZSgp
OwogICAgICAgICBMYXlvdXRVbml0IG10eCB7IGFkanVzdGVkTG9jYXRpb24ueCgpICsgbG9naWNh
bFdpZHRoKCkgLSBtYXJrdXBCb3gtPngoKSB9OwotICAgICAgICBMYXlvdXRVbml0IG10eSB7IGFk
anVzdGVkTG9jYXRpb24ueSgpICsgbGluZVN0eWxlLmZvbnRNZXRyaWNzKCkuYXNjZW50KCkgLSAo
bWFya3VwQm94LT55KCkgKyBtYXJrdXBCb3gtPmxpbmVTdHlsZSgpLmZvbnRNZXRyaWNzKCkuYXNj
ZW50KCkpIH07CisgICAgICAgIExheW91dFVuaXQgbXR5IHsgYWRqdXN0ZWRMb2NhdGlvbi55KCkg
KyBsaW5lU3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50KCkgLSAobWFya3Vw
Qm94LT55KCkgKyBtYXJrdXBCb3gtPmxpbmVTdHlsZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9u
dCgpLmFzY2VudCgpKSB9OwogICAgICAgICBpZiAobWFya3VwQm94LT5ub2RlQXRQb2ludChyZXF1
ZXN0LCByZXN1bHQsIGxvY2F0aW9uSW5Db250YWluZXIsIExheW91dFBvaW50KG10eCwgbXR5KSwg
bGluZVRvcCwgbGluZUJvdHRvbSwgaGl0VGVzdEFjdGlvbikpIHsKICAgICAgICAgICAgIGJsb2Nr
RmxvdygpLnVwZGF0ZUhpdFRlc3RSZXN1bHQocmVzdWx0LCBsb2NhdGlvbkluQ29udGFpbmVyLnBv
aW50KCkgLSBMYXlvdXRTaXplKG10eCwgbXR5KSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVCb3guY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUJveC5jcHAKaW5kZXggODZm
NDFlZjdmYjA1NmNjZDYxNWU1NzcxYTA4M2MyZDk4OGMwZjEwYy4uZmFmZWEzNjY5MzFlNmU5Mjkz
Yzk1OTY0MWU3MmNiOTU3Y2RlODAyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0xlZ2FjeUlubGluZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xl
Z2FjeUlubGluZUJveC5jcHAKQEAgLTEzNiwxMyArMTM2LDEzIEBAIGZsb2F0IExlZ2FjeUlubGlu
ZUJveDo6bG9naWNhbEhlaWdodCgpIGNvbnN0CiAKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgbGlu
ZVN0eWxlID0gdGhpcy0+bGluZVN0eWxlKCk7CiAgICAgaWYgKHJlbmRlcmVyKCkuaXNUZXh0T3JM
aW5lQnJlYWsoKSkKLSAgICAgICAgcmV0dXJuIGxpbmVTdHlsZS5mb250TWV0cmljcygpLmhlaWdo
dCgpOworICAgICAgICByZXR1cm4gbGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgp
LmhlaWdodCgpOwogICAgIGlmIChpczxSZW5kZXJCb3g+KHJlbmRlcmVyKCkpICYmIHBhcmVudCgp
KQogICAgICAgICByZXR1cm4gaXNIb3Jpem9udGFsKCkgPyBkb3duY2FzdDxSZW5kZXJCb3g+KHJl
bmRlcmVyKCkpLmhlaWdodCgpIDogZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJlcigpKS53aWR0
aCgpOwogCiAgICAgQVNTRVJUKGlzSW5saW5lRmxvd0JveCgpKTsKICAgICBSZW5kZXJCb3hNb2Rl
bE9iamVjdCogZmxvd09iamVjdCA9IGJveE1vZGVsT2JqZWN0KCk7Ci0gICAgY29uc3QgRm9udE1l
dHJpY3MmIGZvbnRNZXRyaWNzID0gbGluZVN0eWxlLmZvbnRNZXRyaWNzKCk7CisgICAgY29uc3Qg
Rm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gbGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5
Rm9udCgpOwogICAgIGZsb2F0IHJlc3VsdCA9IGZvbnRNZXRyaWNzLmhlaWdodCgpOwogICAgIGlm
IChwYXJlbnQoKSkKICAgICAgICAgcmVzdWx0ICs9IGZsb3dPYmplY3QtPmJvcmRlckFuZFBhZGRp
bmdMb2dpY2FsSGVpZ2h0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
TGVnYWN5SW5saW5lRmxvd0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5
SW5saW5lRmxvd0JveC5jcHAKaW5kZXggODA1NzUyYjI5MmE2NTkwOTllNWYwZDdlZGM4NDk0ZWFi
MGFjMjU0MS4uNjdlYzg4YzVlMWZkYzg0ZDIzNWU2Zjc1OWY4YmJlNDI1NGJlNTMzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUZsb3dCb3guY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVGbG93Qm94LmNwcApAQCAt
MTI4LDcgKzEyOCw3IEBAIHZvaWQgTGVnYWN5SW5saW5lRmxvd0JveDo6YWRkVG9MaW5lKExlZ2Fj
eUlubGluZUJveCogY2hpbGQpCiAgICAgICAgICAgICBzaG91bGRDbGVhckRlc2NlbmRhbnRzSGF2
ZVNhbWVMaW5lSGVpZ2h0QW5kQmFzZWxpbmUgPSB0cnVlOwogICAgICAgICBlbHNlIGlmIChjaGls
ZC0+YmVoYXZlc0xpa2VUZXh0KCkpIHsKICAgICAgICAgICAgIGlmIChjaGlsZC0+cmVuZGVyZXIo
KS5pc0xpbmVCcmVhaygpIHx8IGNoaWxkLT5yZW5kZXJlcigpLnBhcmVudCgpICE9ICZyZW5kZXJl
cigpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFwYXJlbnRTdHlsZS5mb250Q2FzY2FkZSgpLmZv
bnRNZXRyaWNzKCkuaGFzSWRlbnRpY2FsQXNjZW50RGVzY2VudEFuZExpbmVHYXAoY2hpbGRTdHls
ZS5mb250Q2FzY2FkZSgpLmZvbnRNZXRyaWNzKCkpCisgICAgICAgICAgICAgICAgaWYgKCFwYXJl
bnRTdHlsZS5mb250Q2FzY2FkZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmhhc0lkZW50
aWNhbEFzY2VudERlc2NlbnRBbmRMaW5lR2FwKGNoaWxkU3R5bGUuZm9udENhc2NhZGUoKS5mb250
TWV0cmljc09mUHJpbWFyeUZvbnQoKSkKICAgICAgICAgICAgICAgICAgICAgfHwgcGFyZW50U3R5
bGUubGluZUhlaWdodCgpICE9IGNoaWxkU3R5bGUubGluZUhlaWdodCgpCiAgICAgICAgICAgICAg
ICAgICAgIHx8IChwYXJlbnRTdHlsZS52ZXJ0aWNhbEFsaWduKCkgIT0gVmVydGljYWxBbGlnbjo6
QmFzZWxpbmUgJiYgIWlzUm9vdElubGluZUJveCgpKSB8fCBjaGlsZFN0eWxlLnZlcnRpY2FsQWxp
Z24oKSAhPSBWZXJ0aWNhbEFsaWduOjpCYXNlbGluZSkKICAgICAgICAgICAgICAgICAgICAgc2hv
dWxkQ2xlYXJEZXNjZW5kYW50c0hhdmVTYW1lTGluZUhlaWdodEFuZEJhc2VsaW5lID0gdHJ1ZTsK
QEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIExlZ2FjeUlubGluZUZsb3dCb3g6OmFkZFRvTGluZShM
ZWdhY3lJbmxpbmVCb3gqIGNoaWxkKQogICAgICAgICAgICAgICAgIGF1dG8mIGNoaWxkRmxvd0Jv
eCA9IGRvd25jYXN0PExlZ2FjeUlubGluZUZsb3dCb3g+KCpjaGlsZCk7CiAgICAgICAgICAgICAg
ICAgLy8gQ2hlY2sgdGhlIGNoaWxkJ3MgYml0LCBhbmQgdGhlbiBhbHNvIGNoZWNrIGZvciBkaWZm
ZXJlbmNlcyBpbiBmb250LCBsaW5lLWhlaWdodCwgdmVydGljYWwtYWxpZ24KICAgICAgICAgICAg
ICAgICBpZiAoIWNoaWxkRmxvd0JveC5kZXNjZW5kYW50c0hhdmVTYW1lTGluZUhlaWdodEFuZEJh
c2VsaW5lKCkKLSAgICAgICAgICAgICAgICAgICAgfHwgIXBhcmVudFN0eWxlLmZvbnRDYXNjYWRl
KCkuZm9udE1ldHJpY3MoKS5oYXNJZGVudGljYWxBc2NlbnREZXNjZW50QW5kTGluZUdhcChjaGls
ZFN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKSkKKyAgICAgICAgICAgICAgICAgICAg
fHwgIXBhcmVudFN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCku
aGFzSWRlbnRpY2FsQXNjZW50RGVzY2VudEFuZExpbmVHYXAoY2hpbGRTdHlsZS5mb250Q2FzY2Fk
ZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpKQogICAgICAgICAgICAgICAgICAgICB8fCBw
YXJlbnRTdHlsZS5saW5lSGVpZ2h0KCkgIT0gY2hpbGRTdHlsZS5saW5lSGVpZ2h0KCkKICAgICAg
ICAgICAgICAgICAgICAgfHwgKHBhcmVudFN0eWxlLnZlcnRpY2FsQWxpZ24oKSAhPSBWZXJ0aWNh
bEFsaWduOjpCYXNlbGluZSAmJiAhaXNSb290SW5saW5lQm94KCkpIHx8IGNoaWxkU3R5bGUudmVy
dGljYWxBbGlnbigpICE9IFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lCiAgICAgICAgICAgICAgICAg
ICAgIHx8IGNoaWxkU3R5bGUuaGFzQm9yZGVyKCkgfHwgY2hpbGRTdHlsZS5oYXNQYWRkaW5nKCkg
fHwgY2hpbGRTdHlsZS5oYXNUZXh0Q29tYmluZSgpKQpAQCAtNjg5LDcgKzY4OSw3IEBAIHN0YXRp
YyB2b2lkIHBsYWNlQ2hpbGRJbmxpbmVCb3hlc0luQmxvY2tEaXJlY3Rpb24oTGVnYWN5SW5saW5l
Rmxvd0JveCYgaW5saW5lQm94CiAKICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIGNoaWxkTGlu
ZVN0eWxlID0gY2hpbGQtPmxpbmVTdHlsZSgpOwogICAgICAgICBpZiAoY2hpbGQtPmJlaGF2ZXNM
aWtlVGV4dCgpIHx8IGlzPExlZ2FjeUlubGluZUZsb3dCb3g+KCpjaGlsZCkpIHsKLSAgICAgICAg
ICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IGNoaWxkTGluZVN0eWxlLmZvbnRN
ZXRyaWNzKCk7CisgICAgICAgICAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MgPSBj
aGlsZExpbmVTdHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsKICAgICAgICAgICAgIG5l
d0xvZ2ljYWxUb3AgKz0gY2hpbGQtPmJhc2VsaW5lUG9zaXRpb24oYmFzZWxpbmVUeXBlKSAtIGZv
bnRNZXRyaWNzLmFzY2VudChiYXNlbGluZVR5cGUpOwogICAgICAgICAgICAgaWYgKGlzPExlZ2Fj
eUlubGluZUZsb3dCb3g+KCpjaGlsZCkpIHsKICAgICAgICAgICAgICAgICBSZW5kZXJCb3hNb2Rl
bE9iamVjdCYgYm94T2JqZWN0ID0gZG93bmNhc3Q8TGVnYWN5SW5saW5lRmxvd0JveD4oKmNoaWxk
KS5yZW5kZXJlcigpOwpAQCAtNzYzLDcgKzc2Myw3IEBAIHZvaWQgTGVnYWN5SW5saW5lRmxvd0Jv
eDo6cGxhY2VCb3hlc0luQmxvY2tEaXJlY3Rpb24oTGF5b3V0VW5pdCB0b3AsIExheW91dFVuaXQK
IHsKICAgICBib29sIGlzUm9vdEJveCA9IGlzUm9vdElubGluZUJveCgpOwogICAgIGlmIChpc1Jv
b3RCb3gpCi0gICAgICAgIHNldExvZ2ljYWxUb3AodG9wICsgbWF4QXNjZW50IC0gbGluZVN0eWxl
KCkuZm9udE1ldHJpY3MoKS5hc2NlbnQoYmFzZWxpbmVUeXBlKSk7CisgICAgICAgIHNldExvZ2lj
YWxUb3AodG9wICsgbWF4QXNjZW50IC0gbGluZVN0eWxlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlG
b250KCkuYXNjZW50KGJhc2VsaW5lVHlwZSkpOwogCiAgICAgcGxhY2VDaGlsZElubGluZUJveGVz
SW5CbG9ja0RpcmVjdGlvbigqdGhpcywgdG9wLCBtYXhIZWlnaHQsIG1heEFzY2VudCwgc3RyaWN0
TW9kZSwgbGluZVRvcCwgbGluZUJvdHRvbSwgc2V0TGluZVRvcCwgbGluZVRvcEluY2x1ZGluZ01h
cmdpbnMsIGxpbmVCb3R0b21JbmNsdWRpbmdNYXJnaW5zLCBoYXNBbm5vdGF0aW9uc0JlZm9yZSwg
aGFzQW5ub3RhdGlvbnNBZnRlciwgYmFzZWxpbmVUeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlvdXQuY3BwCmluZGV4IDg3ZDBjYmFkZGI0ZmQ1NTM2Y2Zj
YTMyNGE1ODcyMWJhZjBmYmM4N2UuLmQ4N2UzZDU5Y2IxYThmMWQyMjNlYmJhOTg1YTFiODkyODZk
ZTQxNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lMaW5lTGF5
b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5j
cHAKQEAgLTQ3OCwxMCArNDc4LDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRMb2dpY2FsV2lk
dGhGb3JUZXh0UnVuKExlZ2FjeVJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsIEJpZGlSCiAgICAgICAg
IC8vIHdpbGwga2VlcCB1cyBmcm9tIGNvbXB1dGluZyBnbHlwaCBib3VuZHMgaW4gbmVhcmx5IGFs
bCBjYXNlcy4KICAgICAgICAgYm9vbCBpbmNsdWRlUm9vdExpbmUgPSBsaW5lQm94LT5pbmNsdWRl
c1Jvb3RMaW5lQm94Rm9udE9yTGVhZGluZygpOwogICAgICAgICBpbnQgYmFzZWxpbmVTaGlmdCA9
IGxpbmVCb3gtPnZlcnRpY2FsUG9zaXRpb25Gb3JCb3gocnVuLT5ib3goKSwgdmVydGljYWxQb3Np
dGlvbkNhY2hlKTsKLSAgICAgICAgaW50IHJvb3REZXNjZW50ID0gaW5jbHVkZVJvb3RMaW5lID8g
Zm9udC5mb250TWV0cmljcygpLmRlc2NlbnQoKSA6IDA7Ci0gICAgICAgIGludCByb290QXNjZW50
ID0gaW5jbHVkZVJvb3RMaW5lID8gZm9udC5mb250TWV0cmljcygpLmFzY2VudCgpIDogMDsKLSAg
ICAgICAgaW50IGJveEFzY2VudCA9IGZvbnQuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSAtIGJhc2Vs
aW5lU2hpZnQ7Ci0gICAgICAgIGludCBib3hEZXNjZW50ID0gZm9udC5mb250TWV0cmljcygpLmRl
c2NlbnQoKSArIGJhc2VsaW5lU2hpZnQ7CisgICAgICAgIGludCByb290RGVzY2VudCA9IGluY2x1
ZGVSb290TGluZSA/IGZvbnQuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuZGVzY2VudCgpIDog
MDsKKyAgICAgICAgaW50IHJvb3RBc2NlbnQgPSBpbmNsdWRlUm9vdExpbmUgPyBmb250LmZvbnRN
ZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudCgpIDogMDsKKyAgICAgICAgaW50IGJveEFzY2Vu
dCA9IGZvbnQuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50KCkgLSBiYXNlbGluZVNo
aWZ0OworICAgICAgICBpbnQgYm94RGVzY2VudCA9IGZvbnQuZm9udE1ldHJpY3NPZlByaW1hcnlG
b250KCkuZGVzY2VudCgpICsgYmFzZWxpbmVTaGlmdDsKICAgICAgICAgaWYgKGJveEFzY2VudCA+
IHJvb3REZXNjZW50IHx8ICBib3hEZXNjZW50ID4gcm9vdEFzY2VudCkKICAgICAgICAgICAgIGds
eXBoT3ZlcmZsb3cuY29tcHV0ZUJvdW5kcyA9IHRydWU7IAogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lSb290SW5saW5lQm94LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lSb290SW5saW5lQm94LmNwcAppbmRleCBlODk1Y2JiNjcx
NzBiNjQ0N2VjYzcxM2JhNTFjYjNmYmI2ZTkwNmVmLi4zMWJlN2Q5NmJmOWQ3NjllYjg5MzU2ODFl
ZTk3ZWNkMjgwOWUyOGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVn
YWN5Um9vdElubGluZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2Fj
eVJvb3RJbmxpbmVCb3guY3BwCkBAIC0zNjMsMTQgKzM2MywxNCBAQCBMYXlvdXRVbml0IExlZ2Fj
eVJvb3RJbmxpbmVCb3g6OmxpbmVTbmFwQWRqdXN0bWVudChMYXlvdXRVbml0IGRlbHRhKSBjb25z
dAogICAgIGlmICghZ3JpZExpbmVIZWlnaHQpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgTGF5
b3V0VW5pdCBsaW5lR3JpZEZvbnRBc2NlbnQgPSBsaW5lR3JpZC0+c3R5bGUoKS5mb250TWV0cmlj
cygpLmFzY2VudChiYXNlbGluZVR5cGUoKSk7CisgICAgTGF5b3V0VW5pdCBsaW5lR3JpZEZvbnRB
c2NlbnQgPSBsaW5lR3JpZC0+c3R5bGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2Nl
bnQoYmFzZWxpbmVUeXBlKCkpOwogICAgIExheW91dFVuaXQgbGluZUdyaWRGb250SGVpZ2h0IHsg
bGluZUdyaWRCb3gtPmxvZ2ljYWxIZWlnaHQoKSB9OwogICAgIExheW91dFVuaXQgZmlyc3RUZXh0
VG9wIHsgbGluZUdyaWRCbG9ja09mZnNldCArIGxpbmVHcmlkQm94LT5sb2dpY2FsVG9wKCkgfTsK
ICAgICBMYXlvdXRVbml0IGZpcnN0TGluZVRvcFdpdGhMZWFkaW5nID0gbGluZUdyaWRCbG9ja09m
ZnNldCArIGxpbmVHcmlkQm94LT5saW5lQm94VG9wKCk7CiAgICAgTGF5b3V0VW5pdCBmaXJzdEJh
c2VsaW5lUG9zaXRpb24gPSBmaXJzdFRleHRUb3AgKyBsaW5lR3JpZEZvbnRBc2NlbnQ7CiAKICAg
ICBMYXlvdXRVbml0IGN1cnJlbnRUZXh0VG9wIHsgYmxvY2tPZmZzZXQgKyBsb2dpY2FsVG9wKCkg
KyBkZWx0YSB9OwotICAgIExheW91dFVuaXQgY3VycmVudEZvbnRBc2NlbnQgPSBibG9ja0Zsb3co
KS5zdHlsZSgpLmZvbnRNZXRyaWNzKCkuYXNjZW50KGJhc2VsaW5lVHlwZSgpKTsKKyAgICBMYXlv
dXRVbml0IGN1cnJlbnRGb250QXNjZW50ID0gYmxvY2tGbG93KCkuc3R5bGUoKS5mb250TWV0cmlj
c09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoYmFzZWxpbmVUeXBlKCkpOwogICAgIExheW91dFVuaXQg
Y3VycmVudEJhc2VsaW5lUG9zaXRpb24gPSBjdXJyZW50VGV4dFRvcCArIGN1cnJlbnRGb250QXNj
ZW50OwogCiAgICAgTGF5b3V0VW5pdCBsaW5lR3JpZFBhZ2luYXRpb25PcmlnaW4gPSBpc0hvcml6
b250YWwoKSA/IGxheW91dFN0YXRlLT5saW5lR3JpZFBhZ2luYXRpb25PcmlnaW4oKS5oZWlnaHQo
KSA6IGxheW91dFN0YXRlLT5saW5lR3JpZFBhZ2luYXRpb25PcmlnaW4oKS53aWR0aCgpOwpAQCAt
NzQzLDggKzc0Myw4IEBAIHZvaWQgTGVnYWN5Um9vdElubGluZUJveDo6YXNjZW50QW5kRGVzY2Vu
dEZvckJveChMZWdhY3lJbmxpbmVCb3gmIGJveCwgR2x5cGhPdmVyCiAgICAgfQogICAgIAogICAg
IGlmIChpbmNsdWRlRm9udEZvckJveChib3gpICYmICFzZXRVc2VkRm9udCkgewotICAgICAgICBM
YXlvdXRVbml0IGZvbnRBc2NlbnQgeyBib3hMaW5lU3R5bGUuZm9udE1ldHJpY3MoKS5hc2NlbnQo
YmFzZWxpbmVUeXBlKCkpIH07Ci0gICAgICAgIExheW91dFVuaXQgZm9udERlc2NlbnQgeyBib3hM
aW5lU3R5bGUuZm9udE1ldHJpY3MoKS5kZXNjZW50KGJhc2VsaW5lVHlwZSgpKSB9OworICAgICAg
ICBMYXlvdXRVbml0IGZvbnRBc2NlbnQgeyBib3hMaW5lU3R5bGUuZm9udE1ldHJpY3NPZlByaW1h
cnlGb250KCkuYXNjZW50KGJhc2VsaW5lVHlwZSgpKSB9OworICAgICAgICBMYXlvdXRVbml0IGZv
bnREZXNjZW50IHsgYm94TGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmRlc2Nl
bnQoYmFzZWxpbmVUeXBlKCkpIH07CiAgICAgICAgIHNldEFzY2VudEFuZERlc2NlbnQoYXNjZW50
LCBkZXNjZW50LCBmb250QXNjZW50LCBmb250RGVzY2VudCwgYXNjZW50RGVzY2VudFNldCk7CiAg
ICAgICAgIGFmZmVjdHNBc2NlbnQgPSBmb250QXNjZW50IC0gYm94LmxvZ2ljYWxUb3AoKSA+IDA7
CiAgICAgICAgIGFmZmVjdHNEZXNjZW50ID0gZm9udERlc2NlbnQgKyBib3gubG9naWNhbFRvcCgp
ID4gMDsKQEAgLTc1NCwyNiArNzU0LDI2IEBAIHZvaWQgTGVnYWN5Um9vdElubGluZUJveDo6YXNj
ZW50QW5kRGVzY2VudEZvckJveChMZWdhY3lJbmxpbmVCb3gmIGJveCwgR2x5cGhPdmVyCiAgICAg
ICAgIHNldEFzY2VudEFuZERlc2NlbnQoYXNjZW50LCBkZXNjZW50LCBnbHlwaE92ZXJmbG93LT50
b3AsIGdseXBoT3ZlcmZsb3ctPmJvdHRvbSwgYXNjZW50RGVzY2VudFNldCk7CiAgICAgICAgIGFm
ZmVjdHNBc2NlbnQgPSBnbHlwaE92ZXJmbG93LT50b3AgLSBib3gubG9naWNhbFRvcCgpID4gMDsK
ICAgICAgICAgYWZmZWN0c0Rlc2NlbnQgPSBnbHlwaE92ZXJmbG93LT5ib3R0b20gKyBib3gubG9n
aWNhbFRvcCgpID4gMDsKLSAgICAgICAgZ2x5cGhPdmVyZmxvdy0+dG9wID0gc3RkOjptaW4oZ2x5
cGhPdmVyZmxvdy0+dG9wLCBzdGQ6Om1heCgwX2x1LCBnbHlwaE92ZXJmbG93LT50b3AgLSBib3hM
aW5lU3R5bGUuZm9udE1ldHJpY3MoKS5hc2NlbnQoYmFzZWxpbmVUeXBlKCkpKSk7Ci0gICAgICAg
IGdseXBoT3ZlcmZsb3ctPmJvdHRvbSA9IHN0ZDo6bWluKGdseXBoT3ZlcmZsb3ctPmJvdHRvbSwg
c3RkOjptYXgoMF9sdSwgZ2x5cGhPdmVyZmxvdy0+Ym90dG9tIC0gYm94TGluZVN0eWxlLmZvbnRN
ZXRyaWNzKCkuZGVzY2VudChiYXNlbGluZVR5cGUoKSkpKTsKKyAgICAgICAgZ2x5cGhPdmVyZmxv
dy0+dG9wID0gc3RkOjptaW4oZ2x5cGhPdmVyZmxvdy0+dG9wLCBzdGQ6Om1heCgwX2x1LCBnbHlw
aE92ZXJmbG93LT50b3AgLSBib3hMaW5lU3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCku
YXNjZW50KGJhc2VsaW5lVHlwZSgpKSkpOworICAgICAgICBnbHlwaE92ZXJmbG93LT5ib3R0b20g
PSBzdGQ6Om1pbihnbHlwaE92ZXJmbG93LT5ib3R0b20sIHN0ZDo6bWF4KDBfbHUsIGdseXBoT3Zl
cmZsb3ctPmJvdHRvbSAtIGJveExpbmVTdHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5k
ZXNjZW50KGJhc2VsaW5lVHlwZSgpKSkpOwogICAgIH0KICAgICAKICAgICBpZiAoaW5jbHVkZUlu
aXRpYWxMZXR0ZXJGb3JCb3goYm94KSkgewogICAgICAgICBib29sIGNhblVzZUdseXBocyA9IGds
eXBoT3ZlcmZsb3cgJiYgZ2x5cGhPdmVyZmxvdy0+Y29tcHV0ZUJvdW5kczsKLSAgICAgICAgYXV0
byBsZXR0ZXJBc2NlbnQgeyBiYXNlbGluZVR5cGUoKSA9PSBBbHBoYWJldGljQmFzZWxpbmUgPyBM
YXlvdXRVbml0KGJveExpbmVTdHlsZS5mb250TWV0cmljcygpLmNhcEhlaWdodCgpKSA6IChjYW5V
c2VHbHlwaHMgPyBnbHlwaE92ZXJmbG93LT50b3AgOiBMYXlvdXRVbml0KGJveExpbmVTdHlsZS5m
b250TWV0cmljcygpLmFzY2VudChiYXNlbGluZVR5cGUoKSkpKSB9OwotICAgICAgICBhdXRvIGxl
dHRlckRlc2NlbnQgeyBjYW5Vc2VHbHlwaHMgPyBnbHlwaE92ZXJmbG93LT5ib3R0b20gOiAoYm94
LmlzUm9vdElubGluZUJveCgpID8gMF9sdSA6IExheW91dFVuaXQoYm94TGluZVN0eWxlLmZvbnRN
ZXRyaWNzKCkuZGVzY2VudChiYXNlbGluZVR5cGUoKSkpKSB9OworICAgICAgICBhdXRvIGxldHRl
ckFzY2VudCB7IGJhc2VsaW5lVHlwZSgpID09IEFscGhhYmV0aWNCYXNlbGluZSA/IExheW91dFVu
aXQoYm94TGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmNhcEhlaWdodCgpKSA6
IChjYW5Vc2VHbHlwaHMgPyBnbHlwaE92ZXJmbG93LT50b3AgOiBMYXlvdXRVbml0KGJveExpbmVT
dHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoYmFzZWxpbmVUeXBlKCkpKSkg
fTsKKyAgICAgICAgYXV0byBsZXR0ZXJEZXNjZW50IHsgY2FuVXNlR2x5cGhzID8gZ2x5cGhPdmVy
Zmxvdy0+Ym90dG9tIDogKGJveC5pc1Jvb3RJbmxpbmVCb3goKSA/IDBfbHUgOiBMYXlvdXRVbml0
KGJveExpbmVTdHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5kZXNjZW50KGJhc2VsaW5l
VHlwZSgpKSkpIH07CiAgICAgICAgIHNldEFzY2VudEFuZERlc2NlbnQoYXNjZW50LCBkZXNjZW50
LCBsZXR0ZXJBc2NlbnQsIGxldHRlckRlc2NlbnQsIGFzY2VudERlc2NlbnRTZXQpOwogICAgICAg
ICBhZmZlY3RzQXNjZW50ID0gbGV0dGVyQXNjZW50IC0gYm94LmxvZ2ljYWxUb3AoKSA+IDA7CiAg
ICAgICAgIGFmZmVjdHNEZXNjZW50ID0gbGV0dGVyRGVzY2VudCArIGJveC5sb2dpY2FsVG9wKCkg
PiAwOwogICAgICAgICBpZiAoY2FuVXNlR2x5cGhzKSB7Ci0gICAgICAgICAgICBnbHlwaE92ZXJm
bG93LT50b3AgPSBzdGQ6Om1pbihnbHlwaE92ZXJmbG93LT50b3AsIHN0ZDo6bWF4KDBfbHUsIGds
eXBoT3ZlcmZsb3ctPnRvcCAtIGJveExpbmVTdHlsZS5mb250TWV0cmljcygpLmFzY2VudChiYXNl
bGluZVR5cGUoKSkpKTsKLSAgICAgICAgICAgIGdseXBoT3ZlcmZsb3ctPmJvdHRvbSA9IHN0ZDo6
bWluKGdseXBoT3ZlcmZsb3ctPmJvdHRvbSwgc3RkOjptYXgoMF9sdSwgZ2x5cGhPdmVyZmxvdy0+
Ym90dG9tIC0gYm94TGluZVN0eWxlLmZvbnRNZXRyaWNzKCkuZGVzY2VudChiYXNlbGluZVR5cGUo
KSkpKTsKKyAgICAgICAgICAgIGdseXBoT3ZlcmZsb3ctPnRvcCA9IHN0ZDo6bWluKGdseXBoT3Zl
cmZsb3ctPnRvcCwgc3RkOjptYXgoMF9sdSwgZ2x5cGhPdmVyZmxvdy0+dG9wIC0gYm94TGluZVN0
eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudChiYXNlbGluZVR5cGUoKSkpKTsK
KyAgICAgICAgICAgIGdseXBoT3ZlcmZsb3ctPmJvdHRvbSA9IHN0ZDo6bWluKGdseXBoT3ZlcmZs
b3ctPmJvdHRvbSwgc3RkOjptYXgoMF9sdSwgZ2x5cGhPdmVyZmxvdy0+Ym90dG9tIC0gYm94TGlu
ZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmRlc2NlbnQoYmFzZWxpbmVUeXBlKCkp
KSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoaW5jbHVkZU1hcmdpbkZvckJveChib3gp
KSB7Ci0gICAgICAgIExheW91dFVuaXQgYXNjZW50V2l0aE1hcmdpbiA9IGJveExpbmVTdHlsZS5m
b250TWV0cmljcygpLmFzY2VudChiYXNlbGluZVR5cGUoKSk7Ci0gICAgICAgIExheW91dFVuaXQg
ZGVzY2VudFdpdGhNYXJnaW4gPSBib3hMaW5lU3R5bGUuZm9udE1ldHJpY3MoKS5kZXNjZW50KGJh
c2VsaW5lVHlwZSgpKTsKKyAgICAgICAgTGF5b3V0VW5pdCBhc2NlbnRXaXRoTWFyZ2luID0gYm94
TGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudChiYXNlbGluZVR5cGUo
KSk7CisgICAgICAgIExheW91dFVuaXQgZGVzY2VudFdpdGhNYXJnaW4gPSBib3hMaW5lU3R5bGUu
Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuZGVzY2VudChiYXNlbGluZVR5cGUoKSk7CiAgICAg
ICAgIGlmIChib3gucGFyZW50KCkgJiYgIWJveC5yZW5kZXJlcigpLmlzVGV4dE9yTGluZUJyZWFr
KCkpIHsKICAgICAgICAgICAgIGFzY2VudFdpdGhNYXJnaW4gKz0gYm94LmJveE1vZGVsT2JqZWN0
KCktPmJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKSArIGJveC5ib3hNb2RlbE9iamVjdCgpLT5tYXJn
aW5CZWZvcmUoKTsKICAgICAgICAgICAgIGRlc2NlbnRXaXRoTWFyZ2luICs9IGJveC5ib3hNb2Rl
bE9iamVjdCgpLT5ib3JkZXJBbmRQYWRkaW5nQWZ0ZXIoKSArIGJveC5ib3hNb2RlbE9iamVjdCgp
LT5tYXJnaW5BZnRlcigpOwpAQCAtODIxLDcgKzgyMSw3IEBAIExheW91dFVuaXQgTGVnYWN5Um9v
dElubGluZUJveDo6dmVydGljYWxQb3NpdGlvbkZvckJveChMZWdhY3lJbmxpbmVCb3gqIGJveCwg
VmVyCiAgICAgaWYgKHZlcnRpY2FsQWxpZ24gIT0gVmVydGljYWxBbGlnbjo6QmFzZWxpbmUpIHsK
ICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudExpbmVTdHlsZSA9IGZpcnN0TGluZSA/
IHBhcmVudC0+Zmlyc3RMaW5lU3R5bGUoKSA6IHBhcmVudC0+c3R5bGUoKTsKICAgICAgICAgY29u
c3QgRm9udENhc2NhZGUmIGZvbnQgPSBwYXJlbnRMaW5lU3R5bGUuZm9udENhc2NhZGUoKTsKLSAg
ICAgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gZm9udC5mb250TWV0cmljcygp
OworICAgICAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MgPSBmb250LmZvbnRNZXRy
aWNzT2ZQcmltYXJ5Rm9udCgpOwogICAgICAgICBpbnQgZm9udFNpemUgPSBmb250LnBpeGVsU2l6
ZSgpOwogCiAgICAgICAgIExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVEaXJlY3Rpb24gPSBwYXJlbnQt
PmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGlu
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IGIxM2U5N2Ex
MTZhZTNhMTdhZmJjNTAzNmUyNjM5ZmE1YTVhMjMyMmUuLjhlYTE5OWMyOTE4YmIxMTMzYTU0NGU1
YjUyN2I2MTZjZjQ4ZjIxOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmNwcApAQCAtMjQ5Niw3ICsyNDk2LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6YmFzZWxp
bmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGZpcnN0TGkKICAgICB9
CiAKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSBmaXJzdExpbmUgPyBmaXJzdExpbmVT
dHlsZSgpIDogdGhpcy0+c3R5bGUoKTsKLSAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJp
Y3MgPSBzdHlsZS5mb250TWV0cmljcygpOworICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0
cmljcyA9IHN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwogICAgIHJldHVybiBMYXlv
dXRVbml0IHsgZm9udE1ldHJpY3MuYXNjZW50KGJhc2VsaW5lVHlwZSkgKyAobGluZUhlaWdodChm
aXJzdExpbmUsIGRpcmVjdGlvbiwgbGluZVBvc2l0aW9uTW9kZSkgLSBmb250TWV0cmljcy5oZWln
aHQoKSkgLyAyIH0udG9JbnQoKTsKIH0KIApAQCAtMjU0OCw3ICsyNTQ4LDcgQEAgc3RkOjpvcHRp
b25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9jazo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGly
ZWN0aW9uTW9kZSBsaW4KICAgICB9CiAKICAgICBpZiAoIWhhdmVOb3JtYWxGbG93Q2hpbGQgJiYg
aGFzTGluZUlmRW1wdHkoKSkgewotICAgICAgICBhdXRvJiBmb250TWV0cmljcyA9IGZpcnN0TGlu
ZVN0eWxlKCkuZm9udE1ldHJpY3MoKTsKKyAgICAgICAgYXV0byYgZm9udE1ldHJpY3MgPSBmaXJz
dExpbmVTdHlsZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwogICAgICAgICByZXR1cm4g
TGF5b3V0VW5pdCB7IExheW91dFVuaXQoZm9udE1ldHJpY3MuYXNjZW50KCkKICAgICAgICAgICAg
ICsgKGxpbmVIZWlnaHQodHJ1ZSwgbGluZURpcmVjdGlvbiwgUG9zaXRpb25PZkludGVyaW9yTGlu
ZUJveGVzKSAtIGZvbnRNZXRyaWNzLmhlaWdodCgpKSAvIDIKICAgICAgICAgICAgICsgKGxpbmVE
aXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUgPyBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSA6
IGJvcmRlclJpZ2h0KCkgKyBwYWRkaW5nUmlnaHQoKSkpLnRvSW50KCkgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggOTdjNjg2NTNlNWYwZWZm
NGJhOWEwNzQzOGY0MzliNDEzYjZkMTUwYi4uN2M1NjNjZjlmYzZhOWI3NDk2OTc3ZDgwNWQ1ODUw
YjNlODgxYmMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxv
dy5jcHAKQEAgLTI0MDEsNyArMjQwMSw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRl
TG9naWNhbExvY2F0aW9uRm9yRmxvYXQoRmxvYXRpbmdPYmplY3QmIGZsb2F0aW5nT2JqCiB2b2lk
IFJlbmRlckJsb2NrRmxvdzo6YWRqdXN0SW5pdGlhbExldHRlclBvc2l0aW9uKFJlbmRlckJveCYg
Y2hpbGRCb3gsIExheW91dFVuaXQmIGxvZ2ljYWxUb3BPZmZzZXQsIExheW91dFVuaXQmIG1hcmdp
bkJlZm9yZU9mZnNldCkKIHsKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSBmaXJzdExp
bmVTdHlsZSgpOwotICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxlLmZv
bnRNZXRyaWNzKCk7CisgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gc3R5bGUu
Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCk7CiAgICAgaWYgKCFmb250TWV0cmljcy5oYXNDYXBI
ZWlnaHQoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yOTYzLDggKzI5NjMsOCBAQCBzdGQ6Om9w
dGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJsb2NrRmxvdzo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBj
b25zdAogCiAgICAgQVNTRVJUKGZpcnN0Um9vdEJveCgpKTsKICAgICBpZiAoc3R5bGUoKS5pc0Zs
aXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkpCi0gICAgICAgIHJldHVybiBMYXlvdXRVbml0IHsgZmly
c3RSb290Qm94KCktPmxvZ2ljYWxUb3AoKSArIGZpcnN0TGluZVN0eWxlKCkuZm9udE1ldHJpY3Mo
KS5kZXNjZW50KGZpcnN0Um9vdEJveCgpLT5iYXNlbGluZVR5cGUoKSkgfTsKLSAgICByZXR1cm4g
TGF5b3V0VW5pdCB7IGZpcnN0Um9vdEJveCgpLT5sb2dpY2FsVG9wKCkgKyBmaXJzdExpbmVTdHls
ZSgpLmZvbnRNZXRyaWNzKCkuYXNjZW50KGZpcnN0Um9vdEJveCgpLT5iYXNlbGluZVR5cGUoKSkg
fTsKKyAgICAgICAgcmV0dXJuIExheW91dFVuaXQgeyBmaXJzdFJvb3RCb3goKS0+bG9naWNhbFRv
cCgpICsgZmlyc3RMaW5lU3R5bGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5kZXNjZW50
KGZpcnN0Um9vdEJveCgpLT5iYXNlbGluZVR5cGUoKSkgfTsKKyAgICByZXR1cm4gTGF5b3V0VW5p
dCB7IGZpcnN0Um9vdEJveCgpLT5sb2dpY2FsVG9wKCkgKyBmaXJzdExpbmVTdHlsZSgpLmZvbnRN
ZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudChmaXJzdFJvb3RCb3goKS0+YmFzZWxpbmVUeXBl
KCkpIH07CiB9CiAKIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQmxvY2tGbG93Ojpp
bmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVEaXJlY3Rpb24pIGNvbnN0
CkBAIC0yOTk0LDcgKzI5OTQsNyBAQCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJs
b2NrRmxvdzo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZQogICAgICAgICBp
ZiAoIWhhc0xpbmVzKCkpIHsKICAgICAgICAgICAgIGlmICghaGFzTGluZUlmRW1wdHkoKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICAgICAgY29uc3QgYXV0
byYgZm9udE1ldHJpY3MgPSBmaXJzdExpbmVTdHlsZSgpLmZvbnRNZXRyaWNzKCk7CisgICAgICAg
ICAgICBjb25zdCBhdXRvJiBmb250TWV0cmljcyA9IGZpcnN0TGluZVN0eWxlKCkuZm9udE1ldHJp
Y3NPZlByaW1hcnlGb250KCk7CiAgICAgICAgICAgICByZXR1cm4gTGF5b3V0VW5pdCB7IExheW91
dFVuaXQoZm9udE1ldHJpY3MuYXNjZW50KCkKICAgICAgICAgICAgICAgICArIChsaW5lSGVpZ2h0
KHRydWUsIGxpbmVEaXJlY3Rpb24sIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcykgLSBmb250
TWV0cmljcy5oZWlnaHQoKSkgLyAyCiAgICAgICAgICAgICAgICAgKyAobGluZURpcmVjdGlvbiA9
PSBIb3Jpem9udGFsTGluZSA/IGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpIDogYm9yZGVyUmln
aHQoKSArIHBhZGRpbmdSaWdodCgpKSkudG9JbnQoKSB9OwpAQCAtMzAwNCw3ICszMDA0LDcgQEAg
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9ja0Zsb3c6OmlubGluZUJsb2NrQmFz
ZWxpbmUoTGluZURpcmVjdGlvbk1vZGUKICAgICAgICAgICAgIGJvb2wgaXNGaXJzdExpbmUgPSBs
YXN0Um9vdEJveCgpID09IGZpcnN0Um9vdEJveCgpOwogICAgICAgICAgICAgY29uc3QgYXV0byYg
c3R5bGUgPSBpc0ZpcnN0TGluZSA/IGZpcnN0TGluZVN0eWxlKCkgOiB0aGlzLT5zdHlsZSgpOwog
ICAgICAgICAgICAgLy8gTGVnYWN5SW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0luQmxvY2tEaXJl
Y3Rpb24gd2lsbCBmbGlwIGxpbmVzIGluIGNhc2Ugb2YgdmVydGljYWxMUiBtb2RlLCBzbyB3ZSBj
YW4gYXNzdW1lIHZlcnRpY2FsUkwgZm9yIG5vdy4KLSAgICAgICAgICAgIGxhc3RCYXNlbGluZSA9
IHN0eWxlLmZvbnRNZXRyaWNzKCkuYXNjZW50KGxhc3RSb290Qm94KCktPmJhc2VsaW5lVHlwZSgp
KQorICAgICAgICAgICAgbGFzdEJhc2VsaW5lID0gc3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlG
b250KCkuYXNjZW50KGxhc3RSb290Qm94KCktPmJhc2VsaW5lVHlwZSgpKQogICAgICAgICAgICAg
ICAgICsgKHN0eWxlLmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSA/IGxvZ2ljYWxIZWlnaHQo
KSAtIGxhc3RSb290Qm94KCktPmxvZ2ljYWxCb3R0b20oKSA6IGxhc3RSb290Qm94KCktPmxvZ2lj
YWxUb3AoKSk7CiAgICAgICAgIH0KICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVY
VCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3Qu
Y3BwCmluZGV4IGRkYmU5YTQxNmYzZjk3ZWZmMzIzMjAyZDYwODQwZjIwMjc2ODdiNWQuLjcxZTc3
MzlkMWM5NjRkMmI0NTg5YzUxODcyNDQyZmIzOGQ4OTBkYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcApAQCAtMjU2LDcgKzI1Niw3
IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50CiAgICAgY29udGV4dC5zZXRTdHJva2VUaGlja25l
c3MoMik7CiAgICAgY29udGV4dC5zdHJva2VQYXRoKHN0cm9rZVBhdGgpOwogCi0gICAgY29uc3Qg
Rm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gZm9udC5mb250TWV0cmljcygpOworICAgIGNvbnN0
IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IGZvbnQuZm9udE1ldHJpY3NPZlByaW1hcnlGb250
KCk7CiAgICAgZmxvYXQgbGFiZWxYID0gcm91bmRmKHJlcGxhY2VtZW50VGV4dFJlY3QubG9jYXRp
b24oKS54KCkgKyByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdExlZnRUZXh0TWFyZ2luKTsKICAg
ICBmbG9hdCBsYWJlbFkgPSByb3VuZGYocmVwbGFjZW1lbnRUZXh0UmVjdC5sb2NhdGlvbigpLnko
KSArIChyZXBsYWNlbWVudFRleHRSZWN0LnNpemUoKS5oZWlnaHQoKSAtIGZvbnRNZXRyaWNzLmhl
aWdodCgpKSAvIDIgKyBmb250TWV0cmljcy5hc2NlbnQoKSArIHJlcGxhY2VtZW50VGV4dFJvdW5k
ZWRSZWN0VG9wVGV4dE1hcmdpbik7CiAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IocmVwbGFjZW1l
bnRUZXh0Q29sb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5k
ZXggMDUwMGY4OTVmZTBmODM1YTI0YWExZTdjMzE1MzYwZDJmZWQ4NGU4Yy4uYmIxMzlmMmY1NzIw
NjZiODlhZDRjNmYyZGI5YzUyMjUwN2FjZjY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2UuY3BwCkBAIC0yMTAsNyArMjEwLDcgQEAgSW1hZ2VTaXplQ2hhbmdlVHlwZSBS
ZW5kZXJJbWFnZTo6c2V0SW1hZ2VTaXplRm9yQWx0VGV4dChDYWNoZWRJbWFnZSogbmV3SW1hZ2Ug
LyoKICAgICAvLyB3ZSBoYXZlIGFuIGFsdCBhbmQgdGhlIHVzZXIgbWVhbnQgaXQgKGl0cyBub3Qg
YSB0ZXh0IHdlIGludmVudGVkKQogICAgIGlmICghbV9hbHRUZXh0LmlzRW1wdHkoKSkgewogICAg
ICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKTsKLSAg
ICAgICAgSW50U2l6ZSBwYWRkZWRUZXh0U2l6ZShwYWRkaW5nV2lkdGggKyBzdGQ6Om1pbihjZWls
Zihmb250LndpZHRoKFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKG1fYWx0VGV4dCwgc3R5
bGUoKSkpKSwgbWF4QWx0VGV4dFdpZHRoKSwgcGFkZGluZ0hlaWdodCArIHN0ZDo6bWluKGZvbnQu
Zm9udE1ldHJpY3MoKS5oZWlnaHQoKSwgbWF4QWx0VGV4dEhlaWdodCkpOworICAgICAgICBJbnRT
aXplIHBhZGRlZFRleHRTaXplKHBhZGRpbmdXaWR0aCArIHN0ZDo6bWluKGNlaWxmKGZvbnQud2lk
dGgoUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4obV9hbHRUZXh0LCBzdHlsZSgpKSkpLCBt
YXhBbHRUZXh0V2lkdGgpLCBwYWRkaW5nSGVpZ2h0ICsgc3RkOjptaW4oZm9udC5mb250TWV0cmlj
c09mUHJpbWFyeUZvbnQoKS5oZWlnaHQoKSwgbWF4QWx0VGV4dEhlaWdodCkpOwogICAgICAgICBp
bWFnZVNpemUgPSBpbWFnZVNpemUuZXhwYW5kZWRUbyhwYWRkZWRUZXh0U2l6ZSk7CiAgICAgfQog
CkBAIC01MzIsNyArNTMyLDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICAgICAgICAg
ICAgICBTdHJpbmcgdGV4dCA9IGRvY3VtZW50KCkuZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNv
ZGluZyhtX2FsdFRleHQpOwogICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHN0
eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5Q29s
b3IpKTsKICAgICAgICAgICAgICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlKCku
Zm9udENhc2NhZGUoKTsKLSAgICAgICAgICAgICAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1l
dHJpY3MgPSBmb250LmZvbnRNZXRyaWNzKCk7CisgICAgICAgICAgICAgICAgY29uc3QgRm9udE1l
dHJpY3MmIGZvbnRNZXRyaWNzID0gZm9udC5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsKICAg
ICAgICAgICAgICAgICBMYXlvdXRVbml0IGFzY2VudCA9IGZvbnRNZXRyaWNzLmFzY2VudCgpOwog
ICAgICAgICAgICAgICAgIExheW91dFBvaW50IGFsdFRleHRPZmZzZXQgPSBwYWludE9mZnNldDsK
ICAgICAgICAgICAgICAgICBhbHRUZXh0T2Zmc2V0Lm1vdmUobGVmdEJvcmRlciArIGxlZnRQYWQg
KyAocGFkZGluZ1dpZHRoIC8gMikgLSBtaXNzaW5nSW1hZ2VCb3JkZXJXaWR0aCwgdG9wQm9yZGVy
ICsgdG9wUGFkICsgYXNjZW50ICsgKHBhZGRpbmdIZWlnaHQgLyAyKSAtIG1pc3NpbmdJbWFnZUJv
cmRlcldpZHRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKaW5k
ZXggNmE5YTM5MTAwM2YyZTAwOGIyYWVhY2Y3N2YyNGY4N2FkM2VhNTIxZS4uMGEwOWY0OGJjZTY1
MTVjMDg5NzZhNjg0M2RjMDIxMWZiZTcxYmEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklubGluZS5jcHAKQEAgLTIxMCw3ICsyMTAsNyBAQCBib29sIFJlbmRlcklubGluZTo6
bWF5QWZmZWN0TGF5b3V0KCkgY29uc3QKICAgICAgICAgfHwgKHBhcmVudFJlbmRlcklubGluZSAm
JiBwYXJlbnRTdHlsZS0+dmVydGljYWxBbGlnbigpICE9IFZlcnRpY2FsQWxpZ246OkJhc2VsaW5l
KQogICAgICAgICB8fCBzdHlsZSgpLnZlcnRpY2FsQWxpZ24oKSAhPSBWZXJ0aWNhbEFsaWduOjpC
YXNlbGluZQogICAgICAgICB8fCBzdHlsZSgpLnRleHRFbXBoYXNpc01hcmsoKSAhPSBUZXh0RW1w
aGFzaXNNYXJrOjpOb25lCi0gICAgICAgIHx8IChjaGVja0ZvbnRzICYmICghcGFyZW50U3R5bGUt
PmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKS5oYXNJZGVudGljYWxBc2NlbnREZXNjZW50QW5k
TGluZUdhcChzdHlsZSgpLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKSkKKyAgICAgICAgfHwg
KGNoZWNrRm9udHMgJiYgKCFwYXJlbnRTdHlsZS0+Zm9udENhc2NhZGUoKS5mb250TWV0cmljc09m
UHJpbWFyeUZvbnQoKS5oYXNJZGVudGljYWxBc2NlbnREZXNjZW50QW5kTGluZUdhcChzdHlsZSgp
LmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkpCiAgICAgICAgIHx8IHBh
cmVudFN0eWxlLT5saW5lSGVpZ2h0KCkgIT0gc3R5bGUoKS5saW5lSGVpZ2h0KCkpKQogICAgICAg
ICB8fCBoYXNIYXJkTGluZUJyZWFrQ2hpbGRPbmx5OwogCkBAIC0yMTgsNyArMjE4LDcgQEAgYm9v
bCBSZW5kZXJJbmxpbmU6Om1heUFmZmVjdExheW91dCgpIGNvbnN0CiAgICAgICAgIC8vIEhhdmUg
dG8gY2hlY2sgdGhlIGZpcnN0IGxpbmUgc3R5bGUgYXMgd2VsbC4KICAgICAgICAgcGFyZW50U3R5
bGUgPSAmcGFyZW50KCktPmZpcnN0TGluZVN0eWxlKCk7CiAgICAgICAgIGF1dG8mIGNoaWxkU3R5
bGUgPSBmaXJzdExpbmVTdHlsZSgpOwotICAgICAgICBtYXlBZmZlY3RMYXlvdXQgPSAhcGFyZW50
U3R5bGUtPmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKS5oYXNJZGVudGljYWxBc2NlbnREZXNj
ZW50QW5kTGluZUdhcChjaGlsZFN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKSkKKyAg
ICAgICAgbWF5QWZmZWN0TGF5b3V0ID0gIXBhcmVudFN0eWxlLT5mb250Q2FzY2FkZSgpLmZvbnRN
ZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmhhc0lkZW50aWNhbEFzY2VudERlc2NlbnRBbmRMaW5lR2Fw
KGNoaWxkU3R5bGUuZm9udENhc2NhZGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKSkKICAg
ICAgICAgICAgIHx8IGNoaWxkU3R5bGUudmVydGljYWxBbGlnbigpICE9IFZlcnRpY2FsQWxpZ246
OkJhc2VsaW5lCiAgICAgICAgICAgICB8fCBwYXJlbnRTdHlsZS0+bGluZUhlaWdodCgpICE9IGNo
aWxkU3R5bGUubGluZUhlaWdodCgpOwogICAgIH0KQEAgLTg1NSw3ICs4NTUsNyBAQCBMYXlvdXRV
bml0IFJlbmRlcklubGluZTo6bGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlv
bk1vZGUgLypkaXJlY3RpbwogTGF5b3V0VW5pdCBSZW5kZXJJbmxpbmU6OmJhc2VsaW5lUG9zaXRp
b24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rp
b25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25z
dAogewogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IGZpcnN0TGluZSA/IGZpcnN0TGlu
ZVN0eWxlKCkgOiB0aGlzLT5zdHlsZSgpOwotICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0
cmljcyA9IHN0eWxlLmZvbnRNZXRyaWNzKCk7CisgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRN
ZXRyaWNzID0gc3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCk7CiAgICAgcmV0dXJuIExh
eW91dFVuaXQgeyAoZm9udE1ldHJpY3MuYXNjZW50KGJhc2VsaW5lVHlwZSkgKyAobGluZUhlaWdo
dChmaXJzdExpbmUsIGRpcmVjdGlvbiwgbGluZVBvc2l0aW9uTW9kZSkgLSBmb250TWV0cmljcy5o
ZWlnaHQoKSkgLyAyKS50b0ludCgpIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpbmVCcmVhay5jcHAKaW5kZXggYTIzOTQ2NTE1YThlZGE3Yzg3OWEzMmFiOTIwZjlm
YmMyYzc0NWE1NS4uZjc1ZWU3OWVmNzcyZDIzYjA0NGFlMmFlMzk0NzBkMTk5OWU4NWNkZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKQEAgLTgwLDcg
KzgwLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJMaW5lQnJlYWs6OmxpbmVIZWlnaHQoYm9vbCBmaXJz
dExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIC8qZGlyZWMKIExheW91dFVuaXQgUmVuZGVyTGluZUJy
ZWFrOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmly
c3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbGlu
ZVBvc2l0aW9uTW9kZSkgY29uc3QKIHsKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSBm
aXJzdExpbmUgPyBmaXJzdExpbmVTdHlsZSgpIDogdGhpcy0+c3R5bGUoKTsKLSAgICBjb25zdCBG
b250TWV0cmljcyYgZm9udE1ldHJpY3MgPSBzdHlsZS5mb250TWV0cmljcygpOworICAgIGNvbnN0
IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9u
dCgpOwogICAgIHJldHVybiBMYXlvdXRVbml0IHsgKGZvbnRNZXRyaWNzLmFzY2VudChiYXNlbGlu
ZVR5cGUpICsgKGxpbmVIZWlnaHQoZmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1v
ZGUpIC0gZm9udE1ldHJpY3MuaGVpZ2h0KCkpIC8gMikudG9JbnQoKSB9OwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXggMmU5YjU4NTZkMjhjOTRl
NzZjNDliMzc5YmZjNWI4Y2FmZDQ3OGQ2My4uYTliMjJjNWU1NWVhZmM0ZDM4ZGMwNmM1MDY3YjYx
ZjU3YjljZjJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNw
cApAQCAtMzc4LDcgKzM3OCw3IEBAIHN0YXRpYyBMYXlvdXRTaXplIGl0ZW1PZmZzZXRGb3JBbGln
bm1lbnQoVGV4dFJ1biB0ZXh0UnVuLCBjb25zdCBSZW5kZXJTdHlsZSogaXRlCiAgICAgaWYgKGFj
dHVhbEFsaWdubWVudCA9PSBUZXh0QWxpZ25Nb2RlOjpTdGFydCB8fCBhY3R1YWxBbGlnbm1lbnQg
PT0gVGV4dEFsaWduTW9kZTo6SnVzdGlmeSkKICAgICAgICAgYWN0dWFsQWxpZ25tZW50ID0gaXRl
bVN0eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBUZXh0QWxpZ25Nb2RlOjpMZWZ0IDog
VGV4dEFsaWduTW9kZTo6UmlnaHQ7CiAKLSAgICBMYXlvdXRTaXplIG9mZnNldCA9IExheW91dFNp
emUoMCwgaXRlbUZvbnQuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSk7CisgICAgTGF5b3V0U2l6ZSBv
ZmZzZXQgPSBMYXlvdXRTaXplKDAsIGl0ZW1Gb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgp
LmFzY2VudCgpKTsKICAgICBpZiAoYWN0dWFsQWxpZ25tZW50ID09IFRleHRBbGlnbk1vZGU6OlJp
Z2h0IHx8IGFjdHVhbEFsaWdubWVudCA9PSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRSaWdodCkgewog
ICAgICAgICBmbG9hdCB0ZXh0V2lkdGggPSBpdGVtRm9udC53aWR0aCh0ZXh0UnVuKTsKICAgICAg
ICAgb2Zmc2V0LnNldFdpZHRoKGl0ZW1Cb3VkaW5nQm94LndpZHRoKCkgLSB0ZXh0V2lkdGggLSBv
cHRpb25zU3BhY2luZ0hvcml6b250YWwpOwpAQCAtNzA0LDcgKzcwNCw3IEBAIHZvaWQgUmVuZGVy
TGlzdEJveDo6c2Nyb2xsVG8oaW50IG5ld09mZnNldCkKIAogTGF5b3V0VW5pdCBSZW5kZXJMaXN0
Qm94OjppdGVtSGVpZ2h0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3R5bGUoKS5mb250TWV0cmlj
cygpLmhlaWdodCgpICsgcm93U3BhY2luZzsKKyAgICByZXR1cm4gc3R5bGUoKS5mb250TWV0cmlj
c09mUHJpbWFyeUZvbnQoKS5oZWlnaHQoKSArIHJvd1NwYWNpbmc7CiB9CiAKIGludCBSZW5kZXJM
aXN0Qm94Ojp2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAppbmRleCAwMWU1ZGNlOGU3NTJmMzkwMThh
Yzg2NzFmNjY4NWVjMjYwYjg0ZDE2Li44ZjcxNWE0NjFjZmUwYTFmYTE4ZTE2MmZjYmJmOTQyYTdj
ZGYwMTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1h
cmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIu
Y3BwCkBAIC0xNjQ4LDcgKzE2NDgsNyBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBhaW50KFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZQogICAgICAg
ICBjb250ZXh0LnRyYW5zbGF0ZSgtbWFya2VyUmVjdC54KCksIC1tYXJrZXJSZWN0Lm1heFkoKSk7
CiAgICAgfQogCi0gICAgRmxvYXRQb2ludCB0ZXh0T3JpZ2luID0gRmxvYXRQb2ludChtYXJrZXJS
ZWN0LngoKSwgbWFya2VyUmVjdC55KCkgKyBzdHlsZSgpLmZvbnRNZXRyaWNzKCkuYXNjZW50KCkp
OworICAgIEZsb2F0UG9pbnQgdGV4dE9yaWdpbiA9IEZsb2F0UG9pbnQobWFya2VyUmVjdC54KCks
IG1hcmtlclJlY3QueSgpICsgc3R5bGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2Nl
bnQoKSk7CiAgICAgdGV4dE9yaWdpbiA9IHJvdW5kUG9pbnRUb0RldmljZVBpeGVscyhMYXlvdXRQ
b2ludCh0ZXh0T3JpZ2luKSwgZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCBzdHlsZSgp
LmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSk7CiAgICAgY29udGV4dC5kcmF3VGV4dChzdHlsZSgp
LmZvbnRDYXNjYWRlKCksIHRleHRSdW4oKSwgdGV4dE9yaWdpbik7CiB9CkBAIC0xNzgwLDcgKzE3
ODAsNyBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OmxheW91dCgpCiAgICAgICAgIHNldEhlaWdo
dChtX2ltYWdlLT5pbWFnZVNpemUodGhpcywgc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpLmhlaWdo
dCgpKTsKICAgICB9IGVsc2UgewogICAgICAgICBzZXRMb2dpY2FsV2lkdGgobWluUHJlZmVycmVk
TG9naWNhbFdpZHRoKCkpOwotICAgICAgICBzZXRMb2dpY2FsSGVpZ2h0KHN0eWxlKCkuZm9udE1l
dHJpY3MoKS5oZWlnaHQoKSk7CisgICAgICAgIHNldExvZ2ljYWxIZWlnaHQoc3R5bGUoKS5mb250
TWV0cmljc09mUHJpbWFyeUZvbnQoKS5oZWlnaHQoKSk7CiAgICAgfQogCiAgICAgc2V0TWFyZ2lu
U3RhcnQoMCk7CkBAIC0xODIwLDcgKzE4MjAsNyBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnVw
ZGF0ZUNvbnRlbnQoKQogICAgIGlmIChpc0ltYWdlKCkpIHsKICAgICAgICAgLy8gRklYTUU6IFRo
aXMgaXMgYSBzb21ld2hhdCBhcmJpdHJhcnkgd2lkdGguICBHZW5lcmF0ZWQgaW1hZ2VzIGZvciBt
YXJrZXJzIHJlYWxseSB3b24ndCBiZWNvbWUgcGFydGljdWxhcmx5IHVzZWZ1bAogICAgICAgICAv
LyB1bnRpbCB3ZSBzdXBwb3J0IHRoZSBDU1MzIG1hcmtlciBwc2V1ZG9jbGFzcyB0byBhbGxvdyBj
b250cm9sIG92ZXIgdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIG1hcmtlciBib3guCi0gICAg
ICAgIExheW91dFVuaXQgYnVsbGV0V2lkdGggPSBzdHlsZSgpLmZvbnRNZXRyaWNzKCkuYXNjZW50
KCkgLyAyX2x1OworICAgICAgICBMYXlvdXRVbml0IGJ1bGxldFdpZHRoID0gc3R5bGUoKS5mb250
TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoKSAvIDJfbHU7CiAgICAgICAgIExheW91dFNp
emUgZGVmYXVsdEJ1bGxldFNpemUoYnVsbGV0V2lkdGgsIGJ1bGxldFdpZHRoKTsKICAgICAgICAg
TGF5b3V0U2l6ZSBpbWFnZVNpemUgPSBjYWxjdWxhdGVJbWFnZUludHJpbnNpY0RpbWVuc2lvbnMo
bV9pbWFnZS5nZXQoKSwgZGVmYXVsdEJ1bGxldFNpemUsIERvTm90U2NhbGVCeUVmZmVjdGl2ZVpv
b20pOwogICAgICAgICBtX2ltYWdlLT5zZXRDb250YWluZXJDb250ZXh0Rm9yUmVuZGVyZXIoKnRo
aXMsIGltYWdlU2l6ZSwgc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpOwpAQCAtMTg2Nyw3ICsxODY3
LDcgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRo
cygpCiAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDaXJjbGU6CiAgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpEaXNjOgogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6U3F1YXJlOgotICAgICAgICBsb2dp
Y2FsV2lkdGggPSAoZm9udC5mb250TWV0cmljcygpLmFzY2VudCgpICogMiAvIDMgKyAxKSAvIDIg
KyAyOworICAgICAgICBsb2dpY2FsV2lkdGggPSAoZm9udC5mb250TWV0cmljc09mUHJpbWFyeUZv
bnQoKS5hc2NlbnQoKSAqIDIgLyAzICsgMSkgLyAyICsgMjsKICAgICAgICAgYnJlYWs7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgaWYgKCFtX3RleHRXaXRoU3VmZml4LmlzRW1wdHkoKSkKQEAgLTE4
ODUsNyArMTg4NSw3IEBAIHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6Y29tcHV0ZVByZWZlcnJlZExv
Z2ljYWxXaWR0aHMoKQogCiB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnVwZGF0ZU1hcmdpbnMoKQog
ewotICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxlKCkuZm9udE1ldHJp
Y3MoKTsKKyAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MgPSBzdHlsZSgpLmZvbnRN
ZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwogCiAgICAgTGF5b3V0VW5pdCBtYXJnaW5TdGFydDsKICAg
ICBMYXlvdXRVbml0IG1hcmdpbkVuZDsKQEAgLTE5NjEsNyArMTk2MSw3IEBAIEZsb2F0UmVjdCBS
ZW5kZXJMaXN0TWFya2VyOjpyZWxhdGl2ZU1hcmtlclJlY3QoKQogICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6Q2lyY2xlOgogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6U3F1YXJlOiB7CiAgICAgICAg
IC8vIEZJWE1FOiBBcmUgdGhlc2UgcGFydGljdWxhciByb3VuZGluZyBydWxlcyBuZWNlc3Nhcnk/
Ci0gICAgICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxlKCkuZm9udE1l
dHJpY3MoKTsKKyAgICAgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gc3R5bGUo
KS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsKICAgICAgICAgaW50IGFzY2VudCA9IGZvbnRN
ZXRyaWNzLmFzY2VudCgpOwogICAgICAgICBpbnQgYnVsbGV0V2lkdGggPSAoYXNjZW50ICogMiAv
IDMgKyAxKSAvIDI7CiAgICAgICAgIHJlbGF0aXZlUmVjdCA9IEZsb2F0UmVjdCgxLCAzICogKGFz
Y2VudCAtIGFzY2VudCAqIDIgLyAzKSAvIDIsIGJ1bGxldFdpZHRoLCBidWxsZXRXaWR0aCk7CkBA
IC0xOTcxLDcgKzE5NzEsNyBAQCBGbG9hdFJlY3QgUmVuZGVyTGlzdE1hcmtlcjo6cmVsYXRpdmVN
YXJrZXJSZWN0KCkKICAgICAgICAgaWYgKG1fdGV4dFdpdGhTdWZmaXguaXNFbXB0eSgpKQogICAg
ICAgICAgICAgcmV0dXJuIEZsb2F0UmVjdCgpOwogICAgICAgICBhdXRvJiBmb250ID0gc3R5bGUo
KS5mb250Q2FzY2FkZSgpOwotICAgICAgICByZWxhdGl2ZVJlY3QgPSBGbG9hdFJlY3QoMCwgMCwg
Zm9udC53aWR0aCh0ZXh0UnVuKCkpLCBmb250LmZvbnRNZXRyaWNzKCkuaGVpZ2h0KCkpOworICAg
ICAgICByZWxhdGl2ZVJlY3QgPSBGbG9hdFJlY3QoMCwgMCwgZm9udC53aWR0aCh0ZXh0UnVuKCkp
LCBmb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmhlaWdodCgpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UnVieVJ1bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5jcHAK
aW5kZXggNWExMTVmNTcxY2EyNjg2N2NlNmFkMDIzNjI4NmUyNDQ4ZTlmZTViYi4uYTViODEyMWFl
ZTFhMThmNjJkYTljOWQ3ZmY0YjJmODFlN2RhMTEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSdWJ5UnVuLmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgUmVuZGVyUnVi
eVJ1bjo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VI
ZWlnaHQpCiAgICAgICAgIC8vIEJvcG9tb2ZvLiBXZSBuZWVkIHRvIG1vdmUgdGhlIFJlbmRlclJ1
YnlUZXh0IG92ZXIgdG8gdGhlIHJpZ2h0IHNpZGUgYW5kIGNlbnRlciBpdAogICAgICAgICAvLyB2
ZXJ0aWNhbGx5IHJlbGF0aXZlIHRvIHRoZSBiYXNlLgogICAgICAgICBjb25zdCBGb250Q2FzY2Fk
ZSYgZm9udCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKTsKLSAgICAgICAgZmxvYXQgZGlzdGFuY2VC
ZXR3ZWVuQmFzZSA9IHN0ZDo6bWF4KGZvbnQubGV0dGVyU3BhY2luZygpLCAyLjBmICogcnQtPnN0
eWxlKCkuZm9udENhc2NhZGUoKS5mb250TWV0cmljcygpLmhlaWdodCgpKTsKKyAgICAgICAgZmxv
YXQgZGlzdGFuY2VCZXR3ZWVuQmFzZSA9IHN0ZDo6bWF4KGZvbnQubGV0dGVyU3BhY2luZygpLCAy
LjBmICogcnQtPnN0eWxlKCkuZm9udENhc2NhZGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQo
KS5oZWlnaHQoKSk7CiAgICAgICAgIHNldFdpZHRoKHdpZHRoKCkgKyBkaXN0YW5jZUJldHdlZW5C
YXNlIC0gZm9udC5sZXR0ZXJTcGFjaW5nKCkpOwogICAgICAgICBpZiAoUmVuZGVyUnVieUJhc2Uq
IHJiID0gcnVieUJhc2UoKSkgewogICAgICAgICAgICAgTGF5b3V0VW5pdCBmaXJzdExpbmVUb3A7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAppbmRleCA3NzAz
MTQ1NGFmOGZhNGI5MWRjZDdiM2Q5ZmE2NzQ2ZGJhZGZiNjFiLi5iZGI5ZTA4YzNkZTY4YjA3NTEy
NmY4ZWEyYTk0ODg4ZDhiNzA3NmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZVdpbi5jcHAKQEAgLTc3MCw3ICs3NzAsNyBAQCB2b2lkIFJlbmRlclRoZW1lV2luOjph
ZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRWxlbWVu
dAogICAgIHN0eWxlLnNldEhlaWdodChMZW5ndGgoTGVuZ3RoVHlwZTo6QXV0bykpOwogCiAgICAg
Ly8gQ2FsY3VsYXRlIG91ciBtaW4taGVpZ2h0Ci0gICAgaW50IG1pbkhlaWdodCA9IHN0eWxlLmZv
bnRNZXRyaWNzKCkuaGVpZ2h0KCk7CisgICAgaW50IG1pbkhlaWdodCA9IHN0eWxlLmZvbnRNZXRy
aWNzT2ZQcmltYXJ5Rm9udCgpLmhlaWdodCgpOwogICAgIG1pbkhlaWdodCA9IHN0ZDo6bWF4KG1p
bkhlaWdodCwgZHJvcERvd25Cb3hNaW5IZWlnaHQpOwogCiAgICAgc3R5bGUuc2V0TWluSGVpZ2h0
KExlbmd0aChtaW5IZWlnaHQsIExlbmd0aFR5cGU6OkZpeGVkKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcAppbmRleCBjYTViNzQwZDkwNDRiZDY1ZTM2NmI1
N2Q3NmMzNDI4YzNmOWVlM2Y2Li4zNGFkMmI4ZmQ0NGZhZTY5OGU2NzkzYWRkYmI4YThiNzk0Yzgx
NGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAKQEAg
LTMyNCw3ICszMjQsNyBAQCB2b2lkIFRleHRCb3hQYWludGVyOjpwYWludEZvcmVncm91bmQoY29u
c3QgU3R5bGVkTWFya2VkVGV4dCYgbWFya2VkVGV4dCkKICAgICBmbG9hdCBlbXBoYXNpc01hcmtP
ZmZzZXQgPSAwOwogICAgIGNvbnN0IEF0b21TdHJpbmcmIGVtcGhhc2lzTWFyayA9IG1fZW1waGFz
aXNNYXJrRXhpc3RzQW5kSXNBYm92ZSA/IG1fc3R5bGUudGV4dEVtcGhhc2lzTWFya1N0cmluZygp
IDogbnVsbEF0b20oKTsKICAgICBpZiAoIWVtcGhhc2lzTWFyay5pc0VtcHR5KCkpCi0gICAgICAg
IGVtcGhhc2lzTWFya09mZnNldCA9ICptX2VtcGhhc2lzTWFya0V4aXN0c0FuZElzQWJvdmUgPyAt
Zm9udC5mb250TWV0cmljcygpLmFzY2VudCgpIC0gZm9udC5lbXBoYXNpc01hcmtEZXNjZW50KGVt
cGhhc2lzTWFyaykgOiBmb250LmZvbnRNZXRyaWNzKCkuZGVzY2VudCgpICsgZm9udC5lbXBoYXNp
c01hcmtBc2NlbnQoZW1waGFzaXNNYXJrKTsKKyAgICAgICAgZW1waGFzaXNNYXJrT2Zmc2V0ID0g
Km1fZW1waGFzaXNNYXJrRXhpc3RzQW5kSXNBYm92ZSA/IC1mb250LmZvbnRNZXRyaWNzT2ZQcmlt
YXJ5Rm9udCgpLmFzY2VudCgpIC0gZm9udC5lbXBoYXNpc01hcmtEZXNjZW50KGVtcGhhc2lzTWFy
aykgOiBmb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmRlc2NlbnQoKSArIGZvbnQuZW1w
aGFzaXNNYXJrQXNjZW50KGVtcGhhc2lzTWFyayk7CiAKICAgICBUZXh0UGFpbnRlciB0ZXh0UGFp
bnRlciB7IGNvbnRleHQgfTsKICAgICB0ZXh0UGFpbnRlci5zZXRGb250KGZvbnQpOwpAQCAtNDgw
LDcgKzQ4MCw3IEBAIHZvaWQgVGV4dEJveFBhaW50ZXI6OnBhaW50Q29tcG9zaXRpb25VbmRlcmxp
bmUoY29uc3QgQ29tcG9zaXRpb25VbmRlcmxpbmUmIHVuZGVyCiAgICAgLy8gQWxsIG90aGVyIG1h
cmtlZCB0ZXh0IHVuZGVybGluZXMgYXJlIDFweCB0aGljay4KICAgICAvLyBJZiB0aGVyZSdzIG5v
dCBlbm91Z2ggc3BhY2UgdGhlIHVuZGVybGluZSB3aWxsIHRvdWNoIG9yIG92ZXJsYXAgY2hhcmFj
dGVycy4KICAgICBpbnQgbGluZVRoaWNrbmVzcyA9IDE7Ci0gICAgaW50IGJhc2VsaW5lID0gbV9z
dHlsZS5mb250TWV0cmljcygpLmFzY2VudCgpOworICAgIGludCBiYXNlbGluZSA9IG1fc3R5bGUu
Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50KCk7CiAgICAgaWYgKHVuZGVybGluZS50
aGljayAmJiB0ZXh0Qm94KCkubG9naWNhbEhlaWdodCgpIC0gYmFzZWxpbmUgPj0gMikKICAgICAg
ICAgbGluZVRoaWNrbmVzcyA9IDI7CiAKQEAgLTU5MCw3ICs1OTAsNyBAQCBGbG9hdFJlY3QgVGV4
dEJveFBhaW50ZXI6OmNvbXB1dGVQYWludFJlY3QoY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zm
c2V0KQogRmxvYXRSZWN0IFRleHRCb3hQYWludGVyOjpjYWxjdWxhdGVEb2N1bWVudE1hcmtlckJv
dW5kcyhjb25zdCBJbmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yJiB0ZXh0Qm94LCBjb25z
dCBNYXJrZWRUZXh0JiBtYXJrZWRUZXh0KQogewogICAgIGF1dG8mIGZvbnQgPSB0ZXh0Qm94LT5m
b250Q2FzY2FkZSgpOwotICAgIGF1dG8gYXNjZW50ID0gZm9udC5mb250TWV0cmljcygpLmFzY2Vu
dCgpOworICAgIGF1dG8gYXNjZW50ID0gZm9udC5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5h
c2NlbnQoKTsKICAgICBhdXRvIGZvbnRTaXplID0gc3RkOjptaW4oc3RkOjptYXgoZm9udC5zaXpl
KCksIDEwLjBmKSwgNDAuMGYpOwogICAgIGF1dG8geSA9IGFzY2VudCArIDAuMTEwMzUgKiBmb250
U2l6ZTsKICAgICBhdXRvIGhlaWdodCA9IDAuMTMyNDcgKiBmb250U2l6ZTsKQEAgLTYyMSw3ICs2
MjEsNyBAQCBjb25zdCBGb250Q2FzY2FkZSYgVGV4dEJveFBhaW50ZXI6OmZvbnRDYXNjYWRlKCkg
Y29uc3QKIAogRmxvYXRQb2ludCBUZXh0Qm94UGFpbnRlcjo6dGV4dE9yaWdpbkZyb21QYWludFJl
Y3QoY29uc3QgRmxvYXRSZWN0JiBwYWludFJlY3QpIGNvbnN0CiB7Ci0gICAgRmxvYXRQb2ludCB0
ZXh0T3JpZ2luIHsgcGFpbnRSZWN0LngoKSwgcGFpbnRSZWN0LnkoKSArIGZvbnRDYXNjYWRlKCku
Zm9udE1ldHJpY3MoKS5hc2NlbnQoKSB9OworICAgIEZsb2F0UG9pbnQgdGV4dE9yaWdpbiB7IHBh
aW50UmVjdC54KCksIHBhaW50UmVjdC55KCkgKyBmb250Q2FzY2FkZSgpLmZvbnRNZXRyaWNzT2ZQ
cmltYXJ5Rm9udCgpLmFzY2VudCgpIH07CiAgICAgaWYgKHRleHRCb3goKS5pc0NvbWJpbmVkVGV4
dCgpKSB7CiAgICAgICAgIGlmIChhdXRvIG5ld09yaWdpbiA9IGRvd25jYXN0PFJlbmRlckNvbWJp
bmVUZXh0PihtX3JlbmRlcmVyKS5jb21wdXRlVGV4dE9yaWdpbihwYWludFJlY3QpKQogICAgICAg
ICAgICAgdGV4dE9yaWdpbiA9IG5ld09yaWdpbi52YWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcAppbmRleCA0ZmY0ODE2ZmM0
M2VjZTc4ZWU4OTc3MWUxNmQ4NTVmYTA1ZmZkMWM5Li4xNjMxOTgxYjZjYTlmZjNkODE1ZGRmYzFh
MzBlNjg5YjIxZjBmNjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4
dERlY29yYXRpb25QYWludGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4
dERlY29yYXRpb25QYWludGVyLmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIFRleHREZWNvcmF0aW9u
UGFpbnRlcjo6VGV4dERlY29yYXRpb25QYWludGVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
T3B0aW9uU2V0CiAvLyBQYWludCB0ZXh0LXNoYWRvdywgdW5kZXJsaW5lLCBvdmVybGluZQogdm9p
ZCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50QmFja2dyb3VuZERlY29yYXRpb25zKGNvbnN0
IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIGNvbnN0IEZs
b2F0UG9pbnQmIGJveE9yaWdpbikKIHsKLSAgICBjb25zdCBhdXRvJiBmb250TWV0cmljcyA9IG1f
bGluZVN0eWxlLmZvbnRNZXRyaWNzKCk7CisgICAgY29uc3QgYXV0byYgZm9udE1ldHJpY3MgPSBt
X2xpbmVTdHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsKICAgICBmbG9hdCB0ZXh0RGVj
b3JhdGlvblRoaWNrbmVzcyA9IG1fbGluZVN0eWxlLnRleHREZWNvcmF0aW9uVGhpY2tuZXNzKCku
cmVzb2x2ZShtX2xpbmVTdHlsZS5jb21wdXRlZEZvbnRTaXplKCksIGZvbnRNZXRyaWNzKTsKICAg
ICBGbG9hdFBvaW50IGxvY2FsT3JpZ2luID0gYm94T3JpZ2luOwogCkBAIC0yNzksNyArMjc5LDcg
QEAgdm9pZCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50QmFja2dyb3VuZERlY29yYXRpb25z
KGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGMKICAgICAgICAgaWYgKG1fZGVjb3JhdGlvbnMuY29u
dGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpKSB7CiAgICAgICAgICAgICBmbG9h
dCB0ZXh0RGVjb3JhdGlvbkJhc2VGb250U2l6ZSA9IDE2OwogICAgICAgICAgICAgYXV0byBkZWZh
dWx0R2FwID0gbV9saW5lU3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpIC8gdGV4dERlY29yYXRpb25C
YXNlRm9udFNpemU7Ci0gICAgICAgICAgICBmbG9hdCBvZmZzZXQgPSBjb21wdXRlVW5kZXJsaW5l
T2Zmc2V0KG1fbGluZVN0eWxlLnRleHRVbmRlcmxpbmVQb3NpdGlvbigpLCBtX2xpbmVTdHlsZS50
ZXh0VW5kZXJsaW5lT2Zmc2V0KCksIG1fbGluZVN0eWxlLmZvbnRNZXRyaWNzKCksIG1fdGV4dEJv
eCwgZGVmYXVsdEdhcCk7CisgICAgICAgICAgICBmbG9hdCBvZmZzZXQgPSBjb21wdXRlVW5kZXJs
aW5lT2Zmc2V0KG1fbGluZVN0eWxlLnRleHRVbmRlcmxpbmVQb3NpdGlvbigpLCBtX2xpbmVTdHls
ZS50ZXh0VW5kZXJsaW5lT2Zmc2V0KCksIG1fbGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5
Rm9udCgpLCBtX3RleHRCb3gsIGRlZmF1bHRHYXApOwogICAgICAgICAgICAgZmxvYXQgd2F2eU9m
ZnNldCA9IG1fc3R5bGVzLnVuZGVybGluZVN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6Oldh
dnkgPyBtX3dhdnlPZmZzZXQgOiAwOwogICAgICAgICAgICAgRmxvYXRSZWN0IHJlY3QobG9jYWxP
cmlnaW4sIEZsb2F0U2l6ZShtX3dpZHRoLCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcykpOwogICAg
ICAgICAgICAgcmVjdC5tb3ZlKDAsIG9mZnNldCArIHdhdnlPZmZzZXQpOwpAQCAtMzEwLDEzICsz
MTAsMTMgQEAgdm9pZCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50Rm9yZWdyb3VuZERlY29y
YXRpb25zKGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWcKICAgICBpZiAoIW1fZGVjb3JhdGlvbnMu
Y29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3VnaCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGZsb2F0IHRleHREZWNvcmF0aW9uVGhpY2tuZXNzID0gbV9saW5lU3R5bGUudGV4
dERlY29yYXRpb25UaGlja25lc3MoKS5yZXNvbHZlKG1fbGluZVN0eWxlLmNvbXB1dGVkRm9udFNp
emUoKSwgbV9saW5lU3R5bGUuZm9udE1ldHJpY3MoKSk7CisgICAgZmxvYXQgdGV4dERlY29yYXRp
b25UaGlja25lc3MgPSBtX2xpbmVTdHlsZS50ZXh0RGVjb3JhdGlvblRoaWNrbmVzcygpLnJlc29s
dmUobV9saW5lU3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpLCBtX2xpbmVTdHlsZS5mb250TWV0cmlj
c09mUHJpbWFyeUZvbnQoKSk7CiAgICAgcGFpbnRMaW5lVGhyb3VnaChtX3N0eWxlcy5saW5ldGhy
b3VnaENvbG9yLCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcywgYm94T3JpZ2luKTsKIH0KIAogdm9p
ZCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50TGluZVRocm91Z2goY29uc3QgQ29sb3ImIGNv
bG9yLCBmbG9hdCB0aGlja25lc3MsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsT3JpZ2luKQogewot
ICAgIGNvbnN0IGF1dG8mIGZvbnRNZXRyaWNzID0gbV9saW5lU3R5bGUuZm9udE1ldHJpY3MoKTsK
KyAgICBjb25zdCBhdXRvJiBmb250TWV0cmljcyA9IG1fbGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQ
cmltYXJ5Rm9udCgpOwogICAgIEZsb2F0UmVjdCByZWN0KGxvY2FsT3JpZ2luLCBGbG9hdFNpemUo
bV93aWR0aCwgdGhpY2tuZXNzKSk7CiAgICAgZmxvYXQgYXV0b1RleHREZWNvcmF0aW9uVGhpY2tu
ZXNzID0gVGV4dERlY29yYXRpb25UaGlja25lc3M6OmNyZWF0ZVdpdGhBdXRvKCkucmVzb2x2ZSht
X2xpbmVTdHlsZS5jb21wdXRlZEZvbnRTaXplKCksIGZvbnRNZXRyaWNzKTsKICAgICBhdXRvIGNl
bnRlciA9IDIgKiBmb250TWV0cmljcy5mbG9hdEFzY2VudCgpIC8gMyArIGF1dG9UZXh0RGVjb3Jh
dGlvblRoaWNrbmVzcyAvIDI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
VGV4dFBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmNw
cAppbmRleCBhNTllZWQ0NGY0YWEzNDQ2MzcyOGZiNmUyNjExNWQ4OTVlNTQ0NzljLi5mZmE3YTdh
MTRjN2FiYTkwOGJmZmNiNmZkNTAxZTEyN2U5MDM4YWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9UZXh0UGFpbnRlci5jcHAKQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIFRleHRQYWludGVy
OjpwYWludFRleHRBbmRFbXBoYXNpc01hcmtzSWZOZWVkZWQoY29uc3QgVGV4dFJ1biYgdGV4dFJ1
biwgY29ucwogICAgIHVwZGF0ZUdyYXBoaWNzQ29udGV4dChtX2NvbnRleHQsIHBhaW50U3R5bGUs
IFVzZUVtcGhhc2lzTWFya0NvbG9yKTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGV4dFJ1
bj4gb2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXJUZXh0UnVuKFN0cmluZ1ZpZXcoJm9iamVjdFJl
cGxhY2VtZW50Q2hhcmFjdGVyLCAxKSk7CiAgICAgY29uc3QgVGV4dFJ1biYgZW1waGFzaXNNYXJr
VGV4dFJ1biA9IG1fY29tYmluZWRUZXh0ID8gb2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXJUZXh0
UnVuLmdldCgpIDogdGV4dFJ1bjsKLSAgICBGbG9hdFBvaW50IGVtcGhhc2lzTWFya1RleHRPcmln
aW4gPSBtX2NvbWJpbmVkVGV4dCA/IEZsb2F0UG9pbnQoYm94T3JpZ2luLngoKSArIGJveFJlY3Qu
d2lkdGgoKSAvIDIsIGJveE9yaWdpbi55KCkgKyBtX2ZvbnQtPmZvbnRNZXRyaWNzKCkuYXNjZW50
KCkpIDogdGV4dE9yaWdpbjsKKyAgICBGbG9hdFBvaW50IGVtcGhhc2lzTWFya1RleHRPcmlnaW4g
PSBtX2NvbWJpbmVkVGV4dCA/IEZsb2F0UG9pbnQoYm94T3JpZ2luLngoKSArIGJveFJlY3Qud2lk
dGgoKSAvIDIsIGJveE9yaWdpbi55KCkgKyBtX2ZvbnQtPmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9u
dCgpLmFzY2VudCgpKSA6IHRleHRPcmlnaW47CiAgICAgaWYgKG1fY29tYmluZWRUZXh0KQogICAg
ICAgICBtX2NvbnRleHQuY29uY2F0Q1RNKHJvdGF0aW9uKGJveFJlY3QsIENsb2Nrd2lzZSkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lSW5saW5lSGVh
ZGVycy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUlubGluZUhlYWRlcnMu
aAppbmRleCBjMjRkNWNhYThlZTg5NGYzZWI1OTJjNzczNjczYzRhYTEyMDVhY2YyLi41YTk2YzU4
OWY0ZWQ5M2MxODA1YTg0OGFmMWQxYjM4Nzk3ODI5MmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbGluZS9MaW5lSW5saW5lSGVhZGVycy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9saW5lL0xpbmVJbmxpbmVIZWFkZXJzLmgKQEAgLTU2LDcgKzU2LDcgQEAg
aW5saW5lIGJvb2wgcmVxdWlyZXNMaW5lQm94Rm9yQ29udGVudChjb25zdCBSZW5kZXJJbmxpbmUm
IGZsb3csIGNvbnN0IExpbmVJbmZvJgogICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50
U3R5bGUgPSBsaW5lU3R5bGUoKnBhcmVudCwgbGluZUluZm8pOwogICAgICAgICBpZiAoZmxvd1N0
eWxlLmxpbmVIZWlnaHQoKSAhPSBwYXJlbnRTdHlsZS5saW5lSGVpZ2h0KCkKICAgICAgICAgICAg
IHx8IGZsb3dTdHlsZS52ZXJ0aWNhbEFsaWduKCkgIT0gcGFyZW50U3R5bGUudmVydGljYWxBbGln
bigpCi0gICAgICAgICAgICB8fCAhcGFyZW50U3R5bGUuZm9udENhc2NhZGUoKS5mb250TWV0cmlj
cygpLmhhc0lkZW50aWNhbEFzY2VudERlc2NlbnRBbmRMaW5lR2FwKGZsb3dTdHlsZS5mb250Q2Fz
Y2FkZSgpLmZvbnRNZXRyaWNzKCkpKQorICAgICAgICAgICAgfHwgIXBhcmVudFN0eWxlLmZvbnRD
YXNjYWRlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuaGFzSWRlbnRpY2FsQXNjZW50RGVz
Y2VudEFuZExpbmVHYXAoZmxvd1N0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3NPZlByaW1h
cnlGb250KCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TEJsb2NrLmNwcAppbmRleCBlZDhmMjBmOTg1YmFhMjU0NzQ4NDFiMjY4YTQ1NDk3OTY0ZWYyZWJl
Li5kMDViYTQ3Njk0MzQ4YzFmMzBlYjFjYTAyNmVjZGU0NTlhZWZlYjEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcApA
QCAtNzksNyArNzksNyBAQCBzdGF0aWMgTGF5b3V0VW5pdCBheGlzSGVpZ2h0KGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSkKIAogICAgIC8vIE90aGVyd2lzZSwgdGhlIGlkZWEgaXMgdG8gdHJ5IGFu
ZCB1c2UgdGhlIG1pZGRsZSBvZiBvcGVyYXRvcnMgYXMgdGhlIG1hdGggYXhpcyB3aGljaCB3ZSB0
aHVzIGFwcHJveGltYXRlIGJ5ICJoYWxmIG9mIHRoZSB4LWhlaWdodCIuCiAgICAgLy8gTm90ZSB0
aGF0IEdlY2tvIGhhcyBhIHNsb3dlciBidXQgbW9yZSBhY2N1cmF0ZSB2ZXJzaW9uIHRoYXQgbWVh
c3VyZXMgaGFsZiBvZiB0aGUgaGVpZ2h0IG9mIFUrMjIxMiBNSU5VUyBTSUdOLgotICAgIHJldHVy
biBMYXlvdXRVbml0KHN0eWxlLmZvbnRNZXRyaWNzKCkueEhlaWdodCgpIC8gMik7CisgICAgcmV0
dXJuIExheW91dFVuaXQoc3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkueEhlaWdodCgp
IC8gMik7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyTWF0aE1MQmxvY2s6Om1hdGhBeGlzSGVpZ2h0
KCkgY29uc3QKQEAgLTE2MSw3ICsxNjEsNyBAQCBMYXlvdXRVbml0IHRvVXNlclVuaXRzKGNvbnN0
IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCYgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYgcwogICAg
IGNhc2UgTWF0aE1MRWxlbWVudDo6TGVuZ3RoVHlwZTo6RW06CiAgICAgICAgIHJldHVybiBMYXlv
dXRVbml0KGxlbmd0aC52YWx1ZSAqIHN0eWxlLmZvbnRDYXNjYWRlKCkuc2l6ZSgpKTsKICAgICBj
YXNlIE1hdGhNTEVsZW1lbnQ6Okxlbmd0aFR5cGU6OkV4OgotICAgICAgICByZXR1cm4gTGF5b3V0
VW5pdChsZW5ndGgudmFsdWUgKiBzdHlsZS5mb250TWV0cmljcygpLnhIZWlnaHQoKSk7CisgICAg
ICAgIHJldHVybiBMYXlvdXRVbml0KGxlbmd0aC52YWx1ZSAqIHN0eWxlLmZvbnRNZXRyaWNzT2ZQ
cmltYXJ5Rm9udCgpLnhIZWlnaHQoKSk7CiAgICAgY2FzZSBNYXRoTUxFbGVtZW50OjpMZW5ndGhU
eXBlOjpNYXRoVW5pdDoKICAgICAgICAgcmV0dXJuIExheW91dFVuaXQobGVuZ3RoLnZhbHVlICog
c3R5bGUuZm9udENhc2NhZGUoKS5zaXplKCkgLyAxOCk7CiAgICAgY2FzZSBNYXRoTUxFbGVtZW50
OjpMZW5ndGhUeXBlOjpQZXJjZW50YWdlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAKaW5kZXggMmEzOGE2OGMwM2ViNzg0MGJk
MDI4YmY5MGZlYmUyNDA3N2E0YzgwYi4uYzZjYTEyZTUzZTFlZGUyMjAzYjM2Zjk0MjZmYTc5ZDQ1
MGVlN2U5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFJvb3QuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgUmVuZGVyTWF0aE1MUm9vdDo6
VmVydGljYWxQYXJhbWV0ZXJzIFJlbmRlck1hdGhNTFJvb3Q6OnZlcnRpY2FsUGFyYW1ldGVycygp
CiAgICAgICAgIC8vIFJhZGljYWxEZWdyZWVCb3R0b21SYWlzZVBlcmNlbnQ6IFN1Z2dlc3RlZCB2
YWx1ZSBpcyA2MCUuCiAgICAgICAgIHBhcmFtZXRlcnMucnVsZVRoaWNrbmVzcyA9IHJ1bGVUaGlj
a25lc3NGYWxsYmFjaygpOwogICAgICAgICBpZiAoc3R5bGUoKS5tYXRoU3R5bGUoKSA9PSBNYXRo
U3R5bGU6Ok5vcm1hbCkKLSAgICAgICAgICAgIHBhcmFtZXRlcnMudmVydGljYWxHYXAgPSBwYXJh
bWV0ZXJzLnJ1bGVUaGlja25lc3MgKyBzdHlsZSgpLmZvbnRNZXRyaWNzKCkueEhlaWdodCgpIC8g
NDsKKyAgICAgICAgICAgIHBhcmFtZXRlcnMudmVydGljYWxHYXAgPSBwYXJhbWV0ZXJzLnJ1bGVU
aGlja25lc3MgKyBzdHlsZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLnhIZWlnaHQoKSAv
IDQ7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBhcmFtZXRlcnMudmVydGljYWxHYXAgPSA1
ICogcGFyYW1ldGVycy5ydWxlVGhpY2tuZXNzIC8gNDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAKaW5kZXggNjA5
NDM4OGEzMWIyYzFkMWE5MjU4OTIyOTcyZTBmMTFkOGM5YThhYy4uNDI4Mjk3MzIxZmNkMjRkMTBh
MDBkODE5YmQzZDA2Yjk5NGJiNjY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwCkBAIC0yNDIsMTQgKzI0Miwx
NCBAQCBhdXRvIFJlbmRlck1hdGhNTFNjcmlwdHM6OnZlcnRpY2FsUGFyYW1ldGVycygpIGNvbnN0
IC0+IFZlcnRpY2FsUGFyYW1ldGVycwogICAgICAgICBwYXJhbWV0ZXJzLnN1cGVyc2NyaXB0Qm90
dG9tTWF4V2l0aFN1YnNjcmlwdCA9IG1hdGhEYXRhLT5nZXRNYXRoQ29uc3RhbnQocHJpbWFyeUZv
bnQsIE9wZW5UeXBlTWF0aERhdGE6OlN1cGVyc2NyaXB0Qm90dG9tTWF4V2l0aFN1YnNjcmlwdCk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gRGVmYXVsdCBoZXVyaXN0aWMgdmFsdWVzIHdoZW4g
eW91IGRvIG5vdCBoYXZlIGEgZm9udC4KLSAgICAgICAgcGFyYW1ldGVycy5zdWJzY3JpcHRTaGlm
dERvd24gPSBzdHlsZSgpLmZvbnRNZXRyaWNzKCkueEhlaWdodCgpIC8gMzsKLSAgICAgICAgcGFy
YW1ldGVycy5zdXBlcnNjcmlwdFNoaWZ0VXAgPSBzdHlsZSgpLmZvbnRNZXRyaWNzKCkueEhlaWdo
dCgpOwotICAgICAgICBwYXJhbWV0ZXJzLnN1YnNjcmlwdEJhc2VsaW5lRHJvcE1pbiA9IHN0eWxl
KCkuZm9udE1ldHJpY3MoKS54SGVpZ2h0KCkgLyAyOwotICAgICAgICBwYXJhbWV0ZXJzLnN1cGVy
U2NyaXB0QmFzZWxpbmVEcm9wTWF4ID0gc3R5bGUoKS5mb250TWV0cmljcygpLnhIZWlnaHQoKSAv
IDI7CisgICAgICAgIHBhcmFtZXRlcnMuc3Vic2NyaXB0U2hpZnREb3duID0gc3R5bGUoKS5mb250
TWV0cmljc09mUHJpbWFyeUZvbnQoKS54SGVpZ2h0KCkgLyAzOworICAgICAgICBwYXJhbWV0ZXJz
LnN1cGVyc2NyaXB0U2hpZnRVcCA9IHN0eWxlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCku
eEhlaWdodCgpOworICAgICAgICBwYXJhbWV0ZXJzLnN1YnNjcmlwdEJhc2VsaW5lRHJvcE1pbiA9
IHN0eWxlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkueEhlaWdodCgpIC8gMjsKKyAgICAg
ICAgcGFyYW1ldGVycy5zdXBlclNjcmlwdEJhc2VsaW5lRHJvcE1heCA9IHN0eWxlKCkuZm9udE1l
dHJpY3NPZlByaW1hcnlGb250KCkueEhlaWdodCgpIC8gMjsKICAgICAgICAgcGFyYW1ldGVycy5z
dWJTdXBlcnNjcmlwdEdhcE1pbiA9IHN0eWxlKCkuZm9udENhc2NhZGUoKS5zaXplKCkgLyA1Owot
ICAgICAgICBwYXJhbWV0ZXJzLnN1cGVyc2NyaXB0Qm90dG9tTWluID0gc3R5bGUoKS5mb250TWV0
cmljcygpLnhIZWlnaHQoKSAvIDQ7Ci0gICAgICAgIHBhcmFtZXRlcnMuc3Vic2NyaXB0VG9wTWF4
ID0gNCAqIHN0eWxlKCkuZm9udE1ldHJpY3MoKS54SGVpZ2h0KCkgLyA1OwotICAgICAgICBwYXJh
bWV0ZXJzLnN1cGVyc2NyaXB0Qm90dG9tTWF4V2l0aFN1YnNjcmlwdCA9IDQgKiBzdHlsZSgpLmZv
bnRNZXRyaWNzKCkueEhlaWdodCgpIC8gNTsKKyAgICAgICAgcGFyYW1ldGVycy5zdXBlcnNjcmlw
dEJvdHRvbU1pbiA9IHN0eWxlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkueEhlaWdodCgp
IC8gNDsKKyAgICAgICAgcGFyYW1ldGVycy5zdWJzY3JpcHRUb3BNYXggPSA0ICogc3R5bGUoKS5m
b250TWV0cmljc09mUHJpbWFyeUZvbnQoKS54SGVpZ2h0KCkgLyA1OworICAgICAgICBwYXJhbWV0
ZXJzLnN1cGVyc2NyaXB0Qm90dG9tTWF4V2l0aFN1YnNjcmlwdCA9IDQgKiBzdHlsZSgpLmZvbnRN
ZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLnhIZWlnaHQoKSAvIDU7CiAgICAgfQogICAgIHJldHVybiBw
YXJhbWV0ZXJzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwCmluZGV4IGM3MDMyYzU1Yjc5MDU2OWVjZjdj
YWQzMTE2NDY0MGY3N2Y0NDJjOWQuLjk4YTJiOTIxN2QyNDZkNmVkYmU4OTU0YzhhZjRjMWI5Zjdl
OWE0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MVW5kZXJPdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHAKQEAgLTI0OCw3ICsyNDgsNyBAQCBSZW5kZXJNYXRo
TUxVbmRlck92ZXI6OlZlcnRpY2FsUGFyYW1ldGVycyBSZW5kZXJNYXRoTUxVbmRlck92ZXI6OnZl
cnRpY2FsUGFyYW1ldAogICAgICAgICBwYXJhbWV0ZXJzLm92ZXJHYXBNaW4gPSAzICogZGVmYXVs
dExpbmVUaGlja25lc3M7CiAgICAgICAgIHBhcmFtZXRlcnMudW5kZXJFeHRyYURlc2NlbmRlciA9
IGRlZmF1bHRMaW5lVGhpY2tuZXNzOwogICAgICAgICBwYXJhbWV0ZXJzLm92ZXJFeHRyYUFzY2Vu
ZGVyID0gZGVmYXVsdExpbmVUaGlja25lc3M7Ci0gICAgICAgIHBhcmFtZXRlcnMuYWNjZW50QmFz
ZUhlaWdodCA9IHN0eWxlKCkuZm9udE1ldHJpY3MoKS54SGVpZ2h0KCk7CisgICAgICAgIHBhcmFt
ZXRlcnMuYWNjZW50QmFzZUhlaWdodCA9IHN0eWxlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250
KCkueEhlaWdodCgpOwogICAgICAgICBwYXJhbWV0ZXJzLnVzZVVuZGVyT3ZlckJhckZhbGxCYWNr
ID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggNTZmMDMzZTQ1N2Ni
NzgyNDE0M2Q1ZTE4MjQ5OGUwZGYwODRlYjk3Mi4uZTY4MDQ3NWQ3Nzg2YmU1ZmM5NDMzMzEwZDQz
NTllMjlmMzIyMmY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuY3BwCkBAIC0xODE1LDkgKzE4MTUsOSBAQCBjb25zdCBGb250Q2FzY2FkZSYgUmVu
ZGVyU3R5bGU6OmZvbnRDYXNjYWRlKCkgY29uc3QKICAgICByZXR1cm4gbV9pbmhlcml0ZWREYXRh
LT5mb250Q2FzY2FkZTsKIH0KIAotY29uc3QgRm9udE1ldHJpY3MmIFJlbmRlclN0eWxlOjpmb250
TWV0cmljcygpIGNvbnN0Citjb25zdCBGb250TWV0cmljcyYgUmVuZGVyU3R5bGU6OmZvbnRNZXRy
aWNzT2ZQcmltYXJ5Rm9udCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5oZXJpdGVkRGF0YS0+
Zm9udENhc2NhZGUuZm9udE1ldHJpY3MoKTsKKyAgICByZXR1cm4gbV9pbmhlcml0ZWREYXRhLT5m
b250Q2FzY2FkZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsKIH0KIAogY29uc3QgRm9udENh
c2NhZGVEZXNjcmlwdGlvbiYgUmVuZGVyU3R5bGU6OmZvbnREZXNjcmlwdGlvbigpIGNvbnN0CkBA
IC0xODk2LDcgKzE4OTYsNyBAQCBpbnQgUmVuZGVyU3R5bGU6OmNvbXB1dGVMaW5lSGVpZ2h0KGNv
bnN0IExlbmd0aCYgbGluZUhlaWdodExlbmd0aCkgY29uc3QKIHsKICAgICAvLyBOZWdhdGl2ZSB2
YWx1ZSBtZWFucyB0aGUgbGluZSBoZWlnaHQgaXMgbm90IHNldC4gVXNlIHRoZSBmb250J3MgYnVp
bHQtaW4gc3BhY2luZy4KICAgICBpZiAobGluZUhlaWdodExlbmd0aC5pc05lZ2F0aXZlKCkpCi0g
ICAgICAgIHJldHVybiBmb250TWV0cmljcygpLmxpbmVTcGFjaW5nKCk7CisgICAgICAgIHJldHVy
biBmb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5saW5lU3BhY2luZygpOwogCiAgICAgaWYgKGxp
bmVIZWlnaHRMZW5ndGguaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpCiAgICAgICAgIHJldHVybiBt
aW5pbXVtVmFsdWVGb3JMZW5ndGgobGluZUhlaWdodExlbmd0aCwgY29tcHV0ZWRGb250UGl4ZWxT
aXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApp
bmRleCA0ODg3NTE3OTc2MzE3MDM1M2ZhYTE5ZGRhZTQ3NzAwYjhjNTAwNTIwLi4xOWFiYzY4YzBk
YmMyY2UzOTJjMTNjMDAyOThiOTI1ZTUwOGFjODVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtMzU2LDcgKzM1Niw3IEBAIHB1YmxpYzoKICAg
ICBUYWJsZUxheW91dFR5cGUgdGFibGVMYXlvdXQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxUYWJsZUxheW91dFR5cGU+KG1fbm9uSW5oZXJpdGVkRmxhZ3MudGFibGVMYXlvdXQpOyB9CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBGb250Q2FzY2FkZSYgZm9udENhc2NhZGUoKSBjb25z
dDsKLSAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3NP
ZlByaW1hcnlGb250KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgRm9udENhc2Nh
ZGVEZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uKCkgY29uc3Q7CiAgICAgZmxvYXQgc3BlY2lm
aWVkRm9udFNpemUoKSBjb25zdDsKICAgICBmbG9hdCBjb21wdXRlZEZvbnRTaXplKCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGlu
ZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVU
ZXh0LmNwcAppbmRleCA5YTM5YmQxYjRlM2ZjZWQ3YzE5MzMxYWM3ODEyNDk0YWYyMzE5NzI1Li45
NTI2YWNlYzhjMWU0ZTAxYjU5YWY5MzAwYmM4ZmRiN2ZlMTBmYWM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAKQEAgLTE1
NSw3ICsxNTUsNyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyU1ZHSW5saW5lVGV4dDo6cG9zaXRp
b25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsCiAgICAgaWYgKCFmaXJzdFRleHRC
b3goKSB8fCB0ZXh0KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBv
c2l0aW9uKDAsIEFmZmluaXR5OjpEb3duc3RyZWFtKTsKIAotICAgIGZsb2F0IGJhc2VsaW5lID0g
bV9zY2FsZWRGb250LmZvbnRNZXRyaWNzKCkuZmxvYXRBc2NlbnQoKTsKKyAgICBmbG9hdCBiYXNl
bGluZSA9IG1fc2NhbGVkRm9udC5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5mbG9hdEFzY2Vu
dCgpOwogCiAgICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9jayA9IHRoaXMtPmNvbnRhaW5p
bmdCbG9jaygpOwogICAgIEFTU0VSVChjb250YWluaW5nQmxvY2spOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKaW5kZXggNGQzMmE4MThi
Zjg3YWZhZjdmOTMzZjA1MzkyODYxNjhiYmVkYWUzZi4uYzgwNDIzNjNhZTIzMjg0ODVjNmEzZGMw
OTZlNjM4Yzg3M2U1OTcwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR0lubGluZVRleHRCb3guY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgRmxvYXRSZWN0IFNWR0lu
bGluZVRleHRCb3g6OnNlbGVjdGlvblJlY3RGb3JUZXh0RnJhZ21lbnQoY29uc3QgU1ZHVGV4dEZy
YWdtZW50JgogICAgIEFTU0VSVChzY2FsaW5nRmFjdG9yKTsKIAogICAgIGNvbnN0IEZvbnRDYXNj
YWRlJiBzY2FsZWRGb250ID0gcmVuZGVyZXIoKS5zY2FsZWRGb250KCk7Ci0gICAgY29uc3QgRm9u
dE1ldHJpY3MmIHNjYWxlZEZvbnRNZXRyaWNzID0gc2NhbGVkRm9udC5mb250TWV0cmljcygpOwor
ICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBzY2FsZWRGb250TWV0cmljcyA9IHNjYWxlZEZvbnQuZm9u
dE1ldHJpY3NPZlByaW1hcnlGb250KCk7CiAgICAgRmxvYXRQb2ludCB0ZXh0T3JpZ2luKGZyYWdt
ZW50LngsIGZyYWdtZW50LnkpOwogICAgIGlmIChzY2FsaW5nRmFjdG9yICE9IDEpCiAgICAgICAg
IHRleHRPcmlnaW4uc2NhbGUoc2NhbGluZ0ZhY3Rvcik7CkBAIC01MTEsNyArNTExLDcgQEAgdm9p
ZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb25XaXRoU3R5bGUoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBPcHRpb24KIAogICAgIEZsb2F0UG9pbnQgZGVjb3JhdGlvbk9yaWdpbihm
cmFnbWVudC54LCBmcmFnbWVudC55KTsKICAgICBmbG9hdCB3aWR0aCA9IGZyYWdtZW50LndpZHRo
OwotICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBzY2FsZWRGb250TWV0cmljcyA9IHNjYWxlZEZvbnQu
Zm9udE1ldHJpY3MoKTsKKyAgICBjb25zdCBGb250TWV0cmljcyYgc2NhbGVkRm9udE1ldHJpY3Mg
PSBzY2FsZWRGb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwogCiAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgIGlmIChzY2FsaW5nRmFj
dG9yICE9IDEpIHsKQEAgLTU0Niw3ICs1NDYsNyBAQCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBh
aW50VGV4dFdpdGhTaGFkb3dzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgUmVuZAog
ICAgICAgICB0ZXh0U2l6ZS5zY2FsZShzY2FsaW5nRmFjdG9yKTsKICAgICB9CiAKLSAgICBGbG9h
dFJlY3Qgc2hhZG93UmVjdChGbG9hdFBvaW50KHRleHRPcmlnaW4ueCgpLCB0ZXh0T3JpZ2luLnko
KSAtIHNjYWxlZEZvbnQuZm9udE1ldHJpY3MoKS5mbG9hdEFzY2VudCgpKSwgdGV4dFNpemUpOwor
ICAgIEZsb2F0UmVjdCBzaGFkb3dSZWN0KEZsb2F0UG9pbnQodGV4dE9yaWdpbi54KCksIHRleHRP
cmlnaW4ueSgpIC0gc2NhbGVkRm9udC5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5mbG9hdEFz
Y2VudCgpKSwgdGV4dFNpemUpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0KiB1c2VkQ29udGV4dCA9
ICZjb250ZXh0OwogICAgIGRvIHsKQEAgLTYxMyw3ICs2MTMsNyBAQCBGbG9hdFJlY3QgU1ZHSW5s
aW5lVGV4dEJveDo6Y2FsY3VsYXRlQm91bmRhcmllcygpIGNvbnN0CiAgICAgZmxvYXQgc2NhbGlu
Z0ZhY3RvciA9IHJlbmRlcmVyKCkuc2NhbGluZ0ZhY3RvcigpOwogICAgIEFTU0VSVChzY2FsaW5n
RmFjdG9yKTsKIAotICAgIGZsb2F0IGJhc2VsaW5lID0gcmVuZGVyZXIoKS5zY2FsZWRGb250KCku
Zm9udE1ldHJpY3MoKS5mbG9hdEFzY2VudCgpIC8gc2NhbGluZ0ZhY3RvcjsKKyAgICBmbG9hdCBi
YXNlbGluZSA9IHJlbmRlcmVyKCkuc2NhbGVkRm9udCgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9u
dCgpLmZsb2F0QXNjZW50KCkgLyBzY2FsaW5nRmFjdG9yOwogCiAgICAgQWZmaW5lVHJhbnNmb3Jt
IGZyYWdtZW50VHJhbnNmb3JtOwogICAgIHVuc2lnbmVkIHRleHRGcmFnbWVudHNTaXplID0gbV90
ZXh0RnJhZ21lbnRzLnNpemUoKTsKQEAgLTY0OCw3ICs2NDgsNyBAQCBib29sIFNWR0lubGluZVRl
eHRCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0
UmVzdWx0JgogICAgICAgICAgICAgICAgIGZsb2F0IHNjYWxpbmdGYWN0b3IgPSByZW5kZXJlcigp
LnNjYWxpbmdGYWN0b3IoKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoc2NhbGluZ0ZhY3Rvcik7
CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgZmxvYXQgYmFzZWxpbmUgPSByZW5k
ZXJlcigpLnNjYWxlZEZvbnQoKS5mb250TWV0cmljcygpLmZsb2F0QXNjZW50KCkgLyBzY2FsaW5n
RmFjdG9yOworICAgICAgICAgICAgICAgIGZsb2F0IGJhc2VsaW5lID0gcmVuZGVyZXIoKS5zY2Fs
ZWRGb250KCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuZmxvYXRBc2NlbnQoKSAvIHNjYWxp
bmdGYWN0b3I7CiAKICAgICAgICAgICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gZnJhZ21lbnRUcmFu
c2Zvcm07CiAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBmcmFnbWVudCA6IG1fdGV4dEZyYWdt
ZW50cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0
TGF5b3V0RW5naW5lQmFzZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmUuY3BwCmluZGV4IDdiZTIwZDg0MTM4MWRlODVlMDI0
NTQ4OGZlNWVlNTlhNmY3MTJjN2QuLjZjMjI1NGQxZmY4MTYzNzE3MjY2NmU3MTVmMWViNWM2ODRl
OTJiNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExh
eW91dEVuZ2luZUJhc2VsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZS5jcHAKQEAgLTQ4LDkgKzQ4LDkgQEAgZmxvYXQg
U1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lOjpjYWxjdWxhdGVCYXNlbGluZVNoaWZ0KGNvbnN0
IFNWR1JlbmRlclN0eWxlJgogICAgIGNhc2UgQmFzZWxpbmVTaGlmdDo6QmFzZWxpbmU6CiAgICAg
ICAgIHJldHVybiAwOwogICAgIGNhc2UgQmFzZWxpbmVTaGlmdDo6U3ViOgotICAgICAgICByZXR1
cm4gLW1fZm9udC5mb250TWV0cmljcygpLmZsb2F0SGVpZ2h0KCkgLyAyOworICAgICAgICByZXR1
cm4gLW1fZm9udC5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5mbG9hdEhlaWdodCgpIC8gMjsK
ICAgICBjYXNlIEJhc2VsaW5lU2hpZnQ6OlN1cGVyOgotICAgICAgICByZXR1cm4gbV9mb250LmZv
bnRNZXRyaWNzKCkuZmxvYXRIZWlnaHQoKSAvIDI7CisgICAgICAgIHJldHVybiBtX2ZvbnQuZm9u
dE1ldHJpY3NPZlByaW1hcnlGb250KCkuZmxvYXRIZWlnaHQoKSAvIDI7CiAgICAgY2FzZSBCYXNl
bGluZVNoaWZ0OjpMZW5ndGg6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTExNCw3ICsxMTQs
NyBAQCBmbG9hdCBTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmU6OmNhbGN1bGF0ZUFsaWdubWVu
dEJhc2VsaW5lU2hpZnQoYm9vbCBpc1ZlcnRpYwogICAgICAgICBBU1NFUlQoYmFzZWxpbmUgIT0g
QWxpZ25tZW50QmFzZWxpbmU6OkF1dG8pOwogICAgIH0KIAotICAgIGNvbnN0IEZvbnRNZXRyaWNz
JiBmb250TWV0cmljcyA9IG1fZm9udC5mb250TWV0cmljcygpOworICAgIGNvbnN0IEZvbnRNZXRy
aWNzJiBmb250TWV0cmljcyA9IG1fZm9udC5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsKIAog
ICAgIC8vIE5vdGU6IGh0dHA6Ly93aWtpLmFwYWNoZS5vcmcveG1sZ3JhcGhpY3MtZm9wL0xpbmVM
YXlvdXQvQWxpZ25tZW50SGFuZGxpbmcKICAgICBzd2l0Y2ggKGJhc2VsaW5lKSB7CkBAIC0xOTUs
NyArMTk1LDcgQEAgZmxvYXQgU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lOjpjYWxjdWxhdGVH
bHlwaEFkdmFuY2VBbmRPcmllbnRhdGlvbihib29sIGlzVmUKICAgICAvLyBTcGVjOiBJZiBpZiB0
aGUgJ2dseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsJyByZXN1bHRzIGluIGFuIG9yaWVudGF0aW9u
IGFuZ2xlIHRoYXQgaXMgbm90IGEgbXVsdGlwbGUgb2YKICAgICAvLyAxODAgZGVncmVlcywgdGhl
biB0aGUgY3VycmVudCB0ZXh0IHBvc2l0aW9uIGlzIGluY3JlbWVudGVkIGFjY29yZGluZyB0byB0
aGUgaG9yaXpvbnRhbCBtZXRyaWNzIG9mIHRoZSBnbHlwaC4KIAotICAgIGNvbnN0IEZvbnRNZXRy
aWNzJiBmb250TWV0cmljcyA9IG1fZm9udC5mb250TWV0cmljcygpOworICAgIGNvbnN0IEZvbnRN
ZXRyaWNzJiBmb250TWV0cmljcyA9IG1fZm9udC5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsK
IAogICAgIC8vIFZlcnRpY2FsIG9yaWVudGF0aW9uIGhhbmRsaW5nLgogICAgIGlmIChpc1ZlcnRp
Y2FsVGV4dCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdU
ZXh0TWV0cmljcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRy
aWNzLmNwcAppbmRleCAzOTA5MWVmOGFmM2Q5YjMwNDhkYzdiMmIyY2Y0ODIxMTk5NjVmYzViLi5m
MWYzMDNkNmQzMDM2NDliY2Q3NzM1NWZmYjM1MTA3MTAxZGY2MDQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzLmNwcApAQCAtNTAsNyArNTAsNyBA
QCBTVkdUZXh0TWV0cmljczo6U1ZHVGV4dE1ldHJpY3MoUmVuZGVyU1ZHSW5saW5lVGV4dCYgdGV4
dFJlbmRlcmVyLCBjb25zdCBUZXh0UnVuJgogICAgIG1fd2lkdGggPSBzY2FsZWRGb250LndpZHRo
KHJ1bikgLyBzY2FsaW5nRmFjdG9yOwogICAgIGxlbmd0aCA9IHJ1bi5sZW5ndGgoKTsKICAgICBt
X2dseXBoLm5hbWUgPSBlbXB0eVN0cmluZygpOwotICAgIG1faGVpZ2h0ID0gc2NhbGVkRm9udC5m
b250TWV0cmljcygpLmZsb2F0SGVpZ2h0KCkgLyBzY2FsaW5nRmFjdG9yOworICAgIG1faGVpZ2h0
ID0gc2NhbGVkRm9udC5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5mbG9hdEhlaWdodCgpIC8g
c2NhbGluZ0ZhY3RvcjsKIAogICAgIG1fZ2x5cGgudW5pY29kZVN0cmluZyA9IHJ1bi5pczhCaXQo
KSA/IFN0cmluZyhydW4uY2hhcmFjdGVyczgoKSwgbGVuZ3RoKSA6IFN0cmluZyhydW4uY2hhcmFj
dGVyczE2KCksIGxlbmd0aCk7CiAgICAgbV9nbHlwaC5pc1ZhbGlkID0gdHJ1ZTsKQEAgLTg2LDcg
Kzg2LDcgQEAgU1ZHVGV4dE1ldHJpY3M6OlNWR1RleHRNZXRyaWNzKFJlbmRlclNWR0lubGluZVRl
eHQmIHRleHQsIHVuc2lnbmVkIGxlbmd0aCwgZmxvYXQKICAgICBBU1NFUlQoc2NhbGluZ0ZhY3Rv
cik7CiAKICAgICBtX3dpZHRoID0gd2lkdGggLyBzY2FsaW5nRmFjdG9yOwotICAgIG1faGVpZ2h0
ID0gdGV4dC5zY2FsZWRGb250KCkuZm9udE1ldHJpY3MoKS5mbG9hdEhlaWdodCgpIC8gc2NhbGlu
Z0ZhY3RvcjsKKyAgICBtX2hlaWdodCA9IHRleHQuc2NhbGVkRm9udCgpLmZvbnRNZXRyaWNzT2ZQ
cmltYXJ5Rm9udCgpLmZsb2F0SGVpZ2h0KCkgLyBzY2FsaW5nRmFjdG9yOwogCiAgICAgbV9sZW5n
dGggPSBsZW5ndGg7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1RleHRRdWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRR
dWVyeS5jcHAKaW5kZXggZGU5ZWIxOTE3ZmRhNzk0YTcwMTM1MDNiZDU1ZjI5ZTdjNzg4NTViNC4u
N2M5Y2E5OTk2MzU2OWVjYzRmZDA5MDRiNjc3YjUyMDNlMjNhZDRlNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UXVlcnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFF1ZXJ5LmNwcApAQCAtNDYzLDcgKzQ2Myw3IEBA
IHN0YXRpYyBpbmxpbmUgdm9pZCBjYWxjdWxhdGVHbHlwaEJvdW5kYXJpZXMoU1ZHVGV4dFF1ZXJ5
OjpEYXRhKiBxdWVyeURhdGEsIGNvbnN0CiAgICAgZmxvYXQgc2NhbGluZ0ZhY3RvciA9IHF1ZXJ5
RGF0YS0+dGV4dFJlbmRlcmVyLT5zY2FsaW5nRmFjdG9yKCk7CiAgICAgQVNTRVJUKHNjYWxpbmdG
YWN0b3IpOwogCi0gICAgZXh0ZW50LnNldExvY2F0aW9uKEZsb2F0UG9pbnQoZnJhZ21lbnQueCwg
ZnJhZ21lbnQueSAtIHF1ZXJ5RGF0YS0+dGV4dFJlbmRlcmVyLT5zY2FsZWRGb250KCkuZm9udE1l
dHJpY3MoKS5mbG9hdEFzY2VudCgpIC8gc2NhbGluZ0ZhY3RvcikpOworICAgIGV4dGVudC5zZXRM
b2NhdGlvbihGbG9hdFBvaW50KGZyYWdtZW50LngsIGZyYWdtZW50LnkgLSBxdWVyeURhdGEtPnRl
eHRSZW5kZXJlci0+c2NhbGVkRm9udCgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmZsb2F0
QXNjZW50KCkgLyBzY2FsaW5nRmFjdG9yKSk7CiAKICAgICBpZiAoc3RhcnRQb3NpdGlvbikgewog
ICAgICAgICBTVkdUZXh0TWV0cmljcyBtZXRyaWNzID0gU1ZHVGV4dE1ldHJpY3M6Om1lYXN1cmVD
aGFyYWN0ZXJSYW5nZSgqcXVlcnlEYXRhLT50ZXh0UmVuZGVyZXIsIGZyYWdtZW50LmNoYXJhY3Rl
ck9mZnNldCwgc3RhcnRQb3NpdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJGaXJzdExldHRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJGaXJzdExldHRlci5j
cHAKaW5kZXggMjVjOTYwZjBlMGFmYzEwMjUxYzZkMzY0ZDI3ZDQ0N2NmNjRjZWY3MS4uZjcyZWY5
MGQyNDI3OTY4OTM2MWVkMzMxOWU4MjAxMDQzNDA1NDQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyRmlyc3RMZXR0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRl
ckZpcnN0TGV0dGVyLmNwcApAQCAtNTEsNyArNTEsNyBAQCBzdGF0aWMgUmVuZGVyU3R5bGUgc3R5
bGVGb3JGaXJzdExldHRlcihjb25zdCBSZW5kZXJCbG9jayYgZmlyc3RMZXR0ZXJCbG9jaywgY29u
cwogCiAgICAgLy8gV2UgaGF2ZSB0byBjb21wdXRlIHRoZSBjb3JyZWN0IGZvbnQtc2l6ZSBmb3Ig
dGhlIGZpcnN0LWxldHRlciBpZiBpdCBoYXMgYW4gaW5pdGlhbCBsZXR0ZXIgaGVpZ2h0IHNldC4K
ICAgICBhdXRvKiBwYXJhZ3JhcGggPSBmaXJzdExldHRlckNvbnRhaW5lci5pc1JlbmRlckJsb2Nr
RmxvdygpID8gJmZpcnN0TGV0dGVyQ29udGFpbmVyIDogZmlyc3RMZXR0ZXJDb250YWluZXIuY29u
dGFpbmluZ0Jsb2NrKCk7Ci0gICAgaWYgKGZpcnN0TGV0dGVyU3R5bGUuaW5pdGlhbExldHRlckhl
aWdodCgpID49IDEgJiYgZmlyc3RMZXR0ZXJTdHlsZS5mb250TWV0cmljcygpLmhhc0NhcEhlaWdo
dCgpICYmIHBhcmFncmFwaC0+c3R5bGUoKS5mb250TWV0cmljcygpLmhhc0NhcEhlaWdodCgpKSB7
CisgICAgaWYgKGZpcnN0TGV0dGVyU3R5bGUuaW5pdGlhbExldHRlckhlaWdodCgpID49IDEgJiYg
Zmlyc3RMZXR0ZXJTdHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5oYXNDYXBIZWlnaHQo
KSAmJiBwYXJhZ3JhcGgtPnN0eWxlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuaGFzQ2Fw
SGVpZ2h0KCkpIHsKICAgICAgICAgLy8gRklYTUU6IEZvciBpZGVvZ3JhcGhpYyBiYXNlbGluZXMs
IHdlIHdhbnQgdG8gZ28gZnJvbSBsaW5lIGVkZ2UgdG8gbGluZSBlZGdlLiBUaGlzIGlzIGVxdWl2
YWxlbnQgdG8gKE4tMSkqbGluZS1oZWlnaHQgKyB0aGUgZm9udCBoZWlnaHQuCiAgICAgICAgIC8v
IFdlIGRvbid0IHlldCBzdXBwb3J0IGlkZW9ncmFwaGljIGJhc2VsaW5lcy4KICAgICAgICAgLy8g
Rm9yIGFuIE4tbGluZSBmaXJzdC1sZXR0ZXIgYW5kIGZvciBhbHBoYWJldGljIGJhc2VsaW5lcywg
dGhlIGNhcC1oZWlnaHQgb2YgdGhlIGZpcnN0IGxldHRlciBuZWVkcyB0byBlcXVhbCAoTi0xKSps
aW5lLWhlaWdodCBvZiBwYXJhZ3JhcGggbGluZXMgKyBjYXAtaGVpZ2h0IG9mIHRoZSBwYXJhZ3Jh
cGgKQEAgLTYzLDIyICs2MywyMiBAQCBzdGF0aWMgUmVuZGVyU3R5bGUgc3R5bGVGb3JGaXJzdExl
dHRlcihjb25zdCBSZW5kZXJCbG9jayYgZmlyc3RMZXR0ZXJCbG9jaywgY29ucwogICAgICAgICAv
LyBTZXQgdGhlIGZvbnQgdG8gYmUgb25lIGxpbmUgdG9vIGJpZyBhbmQgdGhlbiByYXRjaGV0IGJh
Y2sgdG8gZ2V0IHRvIGEgcHJlY2lzZSBmaXQuIFdlIGNhbid0IGp1c3Qgc2V0IHRoZSBkZXNpcmVk
IGZvbnQgc2l6ZSBiYXNlZCBvZmYgZm9udCBoZWlnaHQgbWV0cmljcwogICAgICAgICAvLyBiZWNh
dXNlIG1hbnkgZm9udHMgYmFrZSBhc2NlbnQgaW50byB0aGUgZm9udCBtZXRyaWNzLiBUaGVyZWZv
cmUgd2UgaGF2ZSB0byBsb29rIGF0IGFjdHVhbCBtZWFzdXJlZCBjYXAgaGVpZ2h0IHZhbHVlcyBp
biBvcmRlciB0byBrbm93IHdoZW4gd2UgaGF2ZSBhIGdvb2QgZml0LgogICAgICAgICBhdXRvIG5l
d0ZvbnREZXNjcmlwdGlvbiA9IGZpcnN0TGV0dGVyU3R5bGUuZm9udERlc2NyaXB0aW9uKCk7Ci0g
ICAgICAgIGZsb2F0IGNhcFJhdGlvID0gZmlyc3RMZXR0ZXJTdHlsZS5mb250TWV0cmljcygpLmZs
b2F0Q2FwSGVpZ2h0KCkgLyBmaXJzdExldHRlclN0eWxlLmNvbXB1dGVkRm9udFBpeGVsU2l6ZSgp
OwotICAgICAgICBmbG9hdCBzdGFydGluZ0ZvbnRTaXplID0gKChmaXJzdExldHRlclN0eWxlLmlu
aXRpYWxMZXR0ZXJIZWlnaHQoKSAtIDEpICogbGluZUhlaWdodCArIHBhcmFncmFwaC0+c3R5bGUo
KS5mb250TWV0cmljcygpLmNhcEhlaWdodCgpKSAvIGNhcFJhdGlvOworICAgICAgICBmbG9hdCBj
YXBSYXRpbyA9IGZpcnN0TGV0dGVyU3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuZmxv
YXRDYXBIZWlnaHQoKSAvIGZpcnN0TGV0dGVyU3R5bGUuY29tcHV0ZWRGb250UGl4ZWxTaXplKCk7
CisgICAgICAgIGZsb2F0IHN0YXJ0aW5nRm9udFNpemUgPSAoKGZpcnN0TGV0dGVyU3R5bGUuaW5p
dGlhbExldHRlckhlaWdodCgpIC0gMSkgKiBsaW5lSGVpZ2h0ICsgcGFyYWdyYXBoLT5zdHlsZSgp
LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmNhcEhlaWdodCgpKSAvIGNhcFJhdGlvOwogICAg
ICAgICBuZXdGb250RGVzY3JpcHRpb24uc2V0U3BlY2lmaWVkU2l6ZShzdGFydGluZ0ZvbnRTaXpl
KTsKICAgICAgICAgbmV3Rm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShzdGFydGluZ0Zv
bnRTaXplKTsKICAgICAgICAgZmlyc3RMZXR0ZXJTdHlsZS5zZXRGb250RGVzY3JpcHRpb24oV1RG
TW92ZShuZXdGb250RGVzY3JpcHRpb24pKTsKICAgICAgICAgZmlyc3RMZXR0ZXJTdHlsZS5mb250
Q2FzY2FkZSgpLnVwZGF0ZShmaXJzdExldHRlclN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udFNlbGVj
dG9yKCkpOwogCi0gICAgICAgIGludCBkZXNpcmVkQ2FwSGVpZ2h0ID0gKGZpcnN0TGV0dGVyU3R5
bGUuaW5pdGlhbExldHRlckhlaWdodCgpIC0gMSkgKiBsaW5lSGVpZ2h0ICsgcGFyYWdyYXBoLT5z
dHlsZSgpLmZvbnRNZXRyaWNzKCkuY2FwSGVpZ2h0KCk7Ci0gICAgICAgIGludCBhY3R1YWxDYXBI
ZWlnaHQgPSBmaXJzdExldHRlclN0eWxlLmZvbnRNZXRyaWNzKCkuY2FwSGVpZ2h0KCk7CisgICAg
ICAgIGludCBkZXNpcmVkQ2FwSGVpZ2h0ID0gKGZpcnN0TGV0dGVyU3R5bGUuaW5pdGlhbExldHRl
ckhlaWdodCgpIC0gMSkgKiBsaW5lSGVpZ2h0ICsgcGFyYWdyYXBoLT5zdHlsZSgpLmZvbnRNZXRy
aWNzT2ZQcmltYXJ5Rm9udCgpLmNhcEhlaWdodCgpOworICAgICAgICBpbnQgYWN0dWFsQ2FwSGVp
Z2h0ID0gZmlyc3RMZXR0ZXJTdHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5jYXBIZWln
aHQoKTsKICAgICAgICAgd2hpbGUgKGFjdHVhbENhcEhlaWdodCA+IGRlc2lyZWRDYXBIZWlnaHQp
IHsKICAgICAgICAgICAgIGF1dG8gbmV3Rm9udERlc2NyaXB0aW9uID0gZmlyc3RMZXR0ZXJTdHls
ZS5mb250RGVzY3JpcHRpb24oKTsKICAgICAgICAgICAgIG5ld0ZvbnREZXNjcmlwdGlvbi5zZXRT
cGVjaWZpZWRTaXplKG5ld0ZvbnREZXNjcmlwdGlvbi5zcGVjaWZpZWRTaXplKCkgLSAxKTsKICAg
ICAgICAgICAgIG5ld0ZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUobmV3Rm9udERlc2Ny
aXB0aW9uLmNvbXB1dGVkU2l6ZSgpIC0xKTsKICAgICAgICAgICAgIGZpcnN0TGV0dGVyU3R5bGUu
c2V0Rm9udERlc2NyaXB0aW9uKFdURk1vdmUobmV3Rm9udERlc2NyaXB0aW9uKSk7CiAgICAgICAg
ICAgICBmaXJzdExldHRlclN0eWxlLmZvbnRDYXNjYWRlKCkudXBkYXRlKGZpcnN0TGV0dGVyU3R5
bGUuZm9udENhc2NhZGUoKS5mb250U2VsZWN0b3IoKSk7Ci0gICAgICAgICAgICBhY3R1YWxDYXBI
ZWlnaHQgPSBmaXJzdExldHRlclN0eWxlLmZvbnRNZXRyaWNzKCkuY2FwSGVpZ2h0KCk7CisgICAg
ICAgICAgICBhY3R1YWxDYXBIZWlnaHQgPSBmaXJzdExldHRlclN0eWxlLmZvbnRNZXRyaWNzT2ZQ
cmltYXJ5Rm9udCgpLmNhcEhlaWdodCgpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcAppbmRleCBlOGNlNTdkZjAzN2UzOWRl
YTdmNGVmNTExYWZkM2IwZGM2ZGE2YjE3Li40ZThjNTg3ZTIyOTg0NDA3OTBmNzM1ZDQzYzEzODdm
MzA5YmM2MTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94
U3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5j
cHAKQEAgLTE3MywxMiArMTczLDEyIEBAIEdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JE
ZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlLCBjb25zdCBJCiAgICAgaWYg
KGRlY29yYXRpb24uaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gR2x5cGhPdmVyZmxvdygpOwog
Ci0gICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzID0gbGluZVN0eWxlLnRleHREZWNvcmF0aW9uVGhp
Y2tuZXNzKCkucmVzb2x2ZShsaW5lU3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpLCBsaW5lU3R5bGUu
Zm9udE1ldHJpY3MoKSk7CisgICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzID0gbGluZVN0eWxlLnRl
eHREZWNvcmF0aW9uVGhpY2tuZXNzKCkucmVzb2x2ZShsaW5lU3R5bGUuY29tcHV0ZWRGb250U2l6
ZSgpLCBsaW5lU3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkpOwogICAgIFdhdnlTdHJv
a2VQYXJhbWV0ZXJzIHdhdnlTdHJva2VQYXJhbWV0ZXJzOwogICAgIGZsb2F0IHdhdnlPZmZzZXQg
PSAwOwogICAgICAgICAKICAgICBUZXh0RGVjb3JhdGlvblN0eWxlIGRlY29yYXRpb25TdHlsZSA9
IGxpbmVTdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxlKCk7Ci0gICAgZmxvYXQgaGVpZ2h0ID0gbGlu
ZVN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKS5mbG9hdEhlaWdodCgpOworICAgIGZs
b2F0IGhlaWdodCA9IGxpbmVTdHlsZS5mb250Q2FzY2FkZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5
Rm9udCgpLmZsb2F0SGVpZ2h0KCk7CiAgICAgR2x5cGhPdmVyZmxvdyBvdmVyZmxvd1Jlc3VsdDsK
ICAgICAKICAgICBpZiAoZGVjb3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6Oldh
dnkpIHsKQEAgLTE5NSw3ICsxOTUsNyBAQCBHbHlwaE92ZXJmbG93IHZpc3VhbE92ZXJmbG93Rm9y
RGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyU3R5bGUmIGxpbmVTdHlsZSwgY29uc3QgSQogICAgICAg
ICBpbnQgdW5kZXJsaW5lT2Zmc2V0ID0gMTsKICAgICAgICAgZmxvYXQgdGV4dERlY29yYXRpb25C
YXNlRm9udFNpemUgPSAxNjsKICAgICAgICAgYXV0byBkZWZhdWx0R2FwID0gbGluZVN0eWxlLmNv
bXB1dGVkRm9udFNpemUoKSAvIHRleHREZWNvcmF0aW9uQmFzZUZvbnRTaXplOwotICAgICAgICB1
bmRlcmxpbmVPZmZzZXQgKz0gY29tcHV0ZVVuZGVybGluZU9mZnNldChsaW5lU3R5bGUudGV4dFVu
ZGVybGluZVBvc2l0aW9uKCksIGxpbmVTdHlsZS50ZXh0VW5kZXJsaW5lT2Zmc2V0KCksIGxpbmVT
dHlsZS5mb250TWV0cmljcygpLCB0ZXh0UnVuLCBkZWZhdWx0R2FwKTsKKyAgICAgICAgdW5kZXJs
aW5lT2Zmc2V0ICs9IGNvbXB1dGVVbmRlcmxpbmVPZmZzZXQobGluZVN0eWxlLnRleHRVbmRlcmxp
bmVQb3NpdGlvbigpLCBsaW5lU3R5bGUudGV4dFVuZGVybGluZU9mZnNldCgpLCBsaW5lU3R5bGUu
Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCksIHRleHRSdW4sIGRlZmF1bHRHYXApOwogICAgICAg
ICBpZiAoZGVjb3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6OldhdnkpIHsKICAg
ICAgICAgICAgIG92ZXJmbG93UmVzdWx0LmV4dGVuZEJvdHRvbSh1bmRlcmxpbmVPZmZzZXQgKyB3
YXZ5T2Zmc2V0ICsgd2F2eVN0cm9rZVBhcmFtZXRlcnMuY29udHJvbFBvaW50RGlzdGFuY2UgKyBz
dHJva2VUaGlja25lc3MgLSBoZWlnaHQpOwogICAgICAgICAgICAgb3ZlcmZsb3dSZXN1bHQuZXh0
ZW5kVG9wKC0odW5kZXJsaW5lT2Zmc2V0ICsgd2F2eU9mZnNldCAtIHdhdnlTdHJva2VQYXJhbWV0
ZXJzLmNvbnRyb2xQb2ludERpc3RhbmNlIC0gc3Ryb2tlVGhpY2tuZXNzKSk7CkBAIC0yMDYsNyAr
MjA2LDcgQEAgR2x5cGhPdmVyZmxvdyB2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKGNvbnN0
IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUsIGNvbnN0IEkKICAgICB9CiAgICAgaWYgKGRlY29yYXRp
b24gJiBUZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lKSB7CiAgICAgICAgIEZsb2F0UmVjdCBy
ZWN0KEZsb2F0UG9pbnQoKSwgRmxvYXRTaXplKDEsIHN0cm9rZVRoaWNrbmVzcykpOwotICAgICAg
ICBmbG9hdCBhdXRvVGV4dERlY29yYXRpb25UaGlja25lc3MgPSBUZXh0RGVjb3JhdGlvblRoaWNr
bmVzczo6Y3JlYXRlV2l0aEF1dG8oKS5yZXNvbHZlKGxpbmVTdHlsZS5jb21wdXRlZEZvbnRTaXpl
KCksIGxpbmVTdHlsZS5mb250TWV0cmljcygpKTsKKyAgICAgICAgZmxvYXQgYXV0b1RleHREZWNv
cmF0aW9uVGhpY2tuZXNzID0gVGV4dERlY29yYXRpb25UaGlja25lc3M6OmNyZWF0ZVdpdGhBdXRv
KCkucmVzb2x2ZShsaW5lU3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpLCBsaW5lU3R5bGUuZm9udE1l
dHJpY3NPZlByaW1hcnlGb250KCkpOwogICAgICAgICByZWN0Lm1vdmUoMCwgYXV0b1RleHREZWNv
cmF0aW9uVGhpY2tuZXNzIC0gc3Ryb2tlVGhpY2tuZXNzIC0gd2F2eU9mZnNldCk7CiAgICAgICAg
IGlmIChkZWNvcmF0aW9uU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZTo6V2F2eSkgewogICAg
ICAgICAgICAgRmxvYXRCb3hFeHRlbnQgd2F2eUV4cGFuc2lvbjsKQEAgLTIxOSw4ICsyMTksOCBA
QCBHbHlwaE92ZXJmbG93IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVy
U3R5bGUmIGxpbmVTdHlsZSwgY29uc3QgSQogICAgIH0KICAgICBpZiAoZGVjb3JhdGlvbiAmIFRl
eHREZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2gpIHsKICAgICAgICAgRmxvYXRSZWN0IHJlY3Qo
RmxvYXRQb2ludCgpLCBGbG9hdFNpemUoMSwgc3Ryb2tlVGhpY2tuZXNzKSk7Ci0gICAgICAgIGZs
b2F0IGF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyA9IFRleHREZWNvcmF0aW9uVGhpY2tuZXNz
OjpjcmVhdGVXaXRoQXV0bygpLnJlc29sdmUobGluZVN0eWxlLmNvbXB1dGVkRm9udFNpemUoKSwg
bGluZVN0eWxlLmZvbnRNZXRyaWNzKCkpOwotICAgICAgICBhdXRvIGNlbnRlciA9IDIgKiBsaW5l
U3R5bGUuZm9udE1ldHJpY3MoKS5mbG9hdEFzY2VudCgpIC8gMyArIGF1dG9UZXh0RGVjb3JhdGlv
blRoaWNrbmVzcyAvIDI7CisgICAgICAgIGZsb2F0IGF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVz
cyA9IFRleHREZWNvcmF0aW9uVGhpY2tuZXNzOjpjcmVhdGVXaXRoQXV0bygpLnJlc29sdmUobGlu
ZVN0eWxlLmNvbXB1dGVkRm9udFNpemUoKSwgbGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5
Rm9udCgpKTsKKyAgICAgICAgYXV0byBjZW50ZXIgPSAyICogbGluZVN0eWxlLmZvbnRNZXRyaWNz
T2ZQcmltYXJ5Rm9udCgpLmZsb2F0QXNjZW50KCkgLyAzICsgYXV0b1RleHREZWNvcmF0aW9uVGhp
Y2tuZXNzIC8gMjsKICAgICAgICAgcmVjdC5tb3ZlKDAsIGNlbnRlciAtIHN0cm9rZVRoaWNrbmVz
cyAvIDIpOwogICAgICAgICBpZiAoZGVjb3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5
bGU6OldhdnkpIHsKICAgICAgICAgICAgIEZsb2F0Qm94RXh0ZW50IHdhdnlFeHBhbnNpb247CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JGb250UmF3LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3BwCmluZGV4
IDM0MTcxNGU5ZDZjODZlOTYyNWM2OTNlNGU4NzAwNmZlZTJiNzBiMzcuLmI2MjQ1N2QzNjdmMDQ2
ZWVkZGJmNTk5MjJlOGRhMzdkODZmMmNlNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3BwCkBAIC0yMDcsNyArMjA3LDcgQEAgc3RkOjpvcHRp
b25hbDxGb250Q2FzY2FkZT4gcmVzb2x2ZUZvckZvbnRSYXcoY29uc3QgRm9udFJhdyYgZm9udFJh
dywgRm9udENhc2NhZGUKICAgICAgICAgICAgIC8vICAgICAgICBJdCdzIHVuY2xlYXIgaW4gdGhl
IHNwZWNpZmljYXRpb24gaWYgdGhleSdyZSBleHBlY3RlZCB0byB3b3JrIG9uIE9mZnNjcmVlbkNh
bnZhcywgZ2l2ZW4KICAgICAgICAgICAgIC8vICAgICAgICB0aGF0IGl0J3Mgb2ZmLXNjcmVlbiBh
bmQgdGhlcmVmb3JlIGRvZXNuJ3Qgc3RyaWN0bHkgaGF2ZSBhbiBhc3NvY2lhdGVkIHZpZXdwb3J0
LgogICAgICAgICAgICAgLy8gICAgICAgIFRoaXMgbmVlZHMgY2xhcmlmaWNhdGlvbiBhbmQgcG9z
c2libHkgZml4aW5nLgotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihDU1NQ
cmltaXRpdmVWYWx1ZTo6Y29tcHV0ZVVuem9vbWVkTm9uQ2FsY0xlbmd0aERvdWJsZShsZW5ndGgu
dHlwZSwgbGVuZ3RoLnZhbHVlLCBDU1NQcm9wZXJ0eUZvbnRTaXplLCAmZm9udENhc2NhZGUuZm9u
dE1ldHJpY3MoKSwgJmZvbnRDYXNjYWRlLmZvbnREZXNjcmlwdGlvbigpLCAmZm9udENhc2NhZGUu
Zm9udERlc2NyaXB0aW9uKCksIGlzPERvY3VtZW50Pihjb250ZXh0KSA/IGRvd25jYXN0PERvY3Vt
ZW50Pihjb250ZXh0KS5yZW5kZXJWaWV3KCkgOiBudWxscHRyKSk7CisgICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlVW56b29tZWRO
b25DYWxjTGVuZ3RoRG91YmxlKGxlbmd0aC50eXBlLCBsZW5ndGgudmFsdWUsIENTU1Byb3BlcnR5
Rm9udFNpemUsICZmb250Q2FzY2FkZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKSwgJmZvbnRD
YXNjYWRlLmZvbnREZXNjcmlwdGlvbigpLCAmZm9udENhc2NhZGUuZm9udERlc2NyaXB0aW9uKCks
IGlzPERvY3VtZW50Pihjb250ZXh0KSA/IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5yZW5k
ZXJWaWV3KCkgOiBudWxscHRyKSk7CiAgICAgICAgIH0sIFsmXSAoY29uc3QgQ1NTUHJvcGVydHlQ
YXJzZXJIZWxwZXJzOjpQZXJjZW50UmF3JiBwZXJjZW50YWdlKSB7CiAgICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KChwYXJlbnRTaXplICogcGVyY2VudGFnZS52YWx1ZSkgLyAx
MDAuMCk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xl
bmd0aENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aENvbnRleHQuY3Bw
CmluZGV4IDBkZGFiOTgwMWYxNmM4ODAwZTQwOTE0MzdhN2Y3MjhlMzRmMGQwMTQuLjE1NGU4ZGEx
MTgwZGU0ZTY5NTg3MDhlMjJiOGYxZWU4MGI0MzBhYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdMZW5ndGhDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TGVuZ3RoQ29udGV4dC5jcHAKQEAgLTI2Nyw3ICsyNjcsNyBAQCBFeGNlcHRpb25PcjxmbG9hdD4g
U1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlRnJvbVVzZXJVbml0c1RvRVhTKGZsb2F0IHZh
bHVlKQogCiAgICAgLy8gVXNlIG9mIGNlaWwgYWxsb3dzIGEgcGl4ZWwgbWF0Y2ggdG8gdGhlIFcz
Q3MgZXhwZWN0ZWQgb3V0cHV0IG9mIGNvb3Jkcy11bml0cy0wMy1iLnN2ZwogICAgIC8vIGlmIHRo
aXMgY2F1c2VzIHByb2JsZW1zIGluIHJlYWwgd29ybGQgY2FzZXMgbWF5YmUgaXQgd291bGQgYmUg
YmVzdCB0byByZW1vdmUgdGhpcwotICAgIGZsb2F0IHhIZWlnaHQgPSBzdGQ6OmNlaWwoc3R5bGUt
PmZvbnRNZXRyaWNzKCkueEhlaWdodCgpKTsKKyAgICBmbG9hdCB4SGVpZ2h0ID0gc3RkOjpjZWls
KHN0eWxlLT5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS54SGVpZ2h0KCkpOwogICAgIGlmICgh
eEhlaWdodCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07
CiAKQEAgLTI4Miw3ICsyODIsNyBAQCBFeGNlcHRpb25PcjxmbG9hdD4gU1ZHTGVuZ3RoQ29udGV4
dDo6Y29udmVydFZhbHVlRnJvbUVYU1RvVXNlclVuaXRzKGZsb2F0IHZhbHVlKQogCiAgICAgLy8g
VXNlIG9mIGNlaWwgYWxsb3dzIGEgcGl4ZWwgbWF0Y2ggdG8gdGhlIFczQ3MgZXhwZWN0ZWQgb3V0
cHV0IG9mIGNvb3Jkcy11bml0cy0wMy1iLnN2ZwogICAgIC8vIGlmIHRoaXMgY2F1c2VzIHByb2Js
ZW1zIGluIHJlYWwgd29ybGQgY2FzZXMgbWF5YmUgaXQgd291bGQgYmUgYmVzdCB0byByZW1vdmUg
dGhpcwotICAgIHJldHVybiB2YWx1ZSAqIHN0ZDo6Y2VpbChzdHlsZS0+Zm9udE1ldHJpY3MoKS54
SGVpZ2h0KCkpOworICAgIHJldHVybiB2YWx1ZSAqIHN0ZDo6Y2VpbChzdHlsZS0+Zm9udE1ldHJp
Y3NPZlByaW1hcnlGb250KCkueEhlaWdodCgpKTsKIH0KIAogYm9vbCBTVkdMZW5ndGhDb250ZXh0
OjpkZXRlcm1pbmVWaWV3cG9ydChGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2Nv
YS5tbQppbmRleCAzNDU2YmVmMzY3MTdhZmEyN2ZiZDk1YTNhMjQ2OTg2ODYwYWM4ZTUxLi4zYWI4
NDQ2Mzk1YTlkZDlmOWQ3NjkxZGNmYzQyYjVkNTNhZGZjOTI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCkBAIC0x
NzYsNyArMTc2LDcgQEAgRGljdGlvbmFyeVBvcHVwSW5mbyBXZWJQYWdlOjpkaWN0aW9uYXJ5UG9w
dXBJbmZvRm9yUmFuZ2UoRnJhbWUmIGZyYW1lLCBjb25zdCBTaW0KICAgICBJbnRSZWN0IHJhbmdl
UmVjdCA9IGZyYW1lLnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhxdWFkc1swXS5lbmNsb3NpbmdC
b3VuZGluZ0JveCgpKTsKIAogICAgIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSA9IHJhbmdlLnN0
YXJ0Q29udGFpbmVyKCkucmVuZGVyU3R5bGUoKTsKLSAgICBmbG9hdCBzY2FsZWRBc2NlbnQgPSBz
dHlsZSA/IHN0eWxlLT5mb250TWV0cmljcygpLmFzY2VudCgpICogcGFnZVNjYWxlRmFjdG9yKCkg
OiAwOworICAgIGZsb2F0IHNjYWxlZEFzY2VudCA9IHN0eWxlID8gc3R5bGUtPmZvbnRNZXRyaWNz
T2ZQcmltYXJ5Rm9udCgpLmFzY2VudCgpICogcGFnZVNjYWxlRmFjdG9yKCkgOiAwOwogICAgIGRp
Y3Rpb25hcnlQb3B1cEluZm8ub3JpZ2luID0gRmxvYXRQb2ludChyYW5nZVJlY3QueCgpLCByYW5n
ZVJlY3QueSgpICsgc2NhbGVkQXNjZW50KTsKICAgICBkaWN0aW9uYXJ5UG9wdXBJbmZvLm9wdGlv
bnMgPSBvcHRpb25zOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KaW5kZXggZjJhZmIw
ODA3NmE2NWQzYzBhZjNlNDdjMTkwYmIwM2ExOTdlODIzZC4uYjY4NmVjYjk5MzhiOWY2OWUxMWU4
Yzk5M2NkNjZmZTRkZWUyYTBlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQpAQCAt
NTIzLDcgKzUyMyw3IEBAIHN0YXRpYyBXZWJDb3JlOjpJbnRSZWN0IGVsZW1lbnRCb3VuZGluZ0Jv
eEluV2luZG93Q29vcmRpbmF0ZXNGcm9tTm9kZShXZWJDb3JlOjpOCiAgICAgfQogCiAgICAgYXV0
byBzdHlsZSA9IHJhbmdlLnN0YXJ0LmNvbnRhaW5lci0+cmVuZGVyU3R5bGUoKTsKLSAgICBmbG9h
dCBzY2FsZWREZXNjZW50ID0gc3R5bGUgPyBzdHlsZS0+Zm9udE1ldHJpY3MoKS5kZXNjZW50KCkg
KiBmcmFtZS0+cGFnZSgpLT5wYWdlU2NhbGVGYWN0b3IoKSA6IDA7CisgICAgZmxvYXQgc2NhbGVk
RGVzY2VudCA9IHN0eWxlID8gc3R5bGUtPmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmRlc2Nl
bnQoKSAqIGZyYW1lLT5wYWdlKCktPnBhZ2VTY2FsZUZhY3RvcigpIDogMDsKIAogICAgIGF1dG8g
cXVhZHMgPSBXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFic29sdXRlVGV4dFF1YWRzKHJhbmdlKTsK
ICAgICBpZiAocXVhZHMuaXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCmluZGV4IDViZThhNDFhMGMwNDAy
NTE1NjJjYmVhODJkMTY0ZGVjN2QzYTk5ZTcuLjlkZjUwNWNhN2RjNjI5M2VhYzA4ZjBlZjQ0Mzdi
NmFiODkwZDZmOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0Z1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0Z1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCkBAIC01MzUsNyArNTM1LDcgQEAgdm9pZCBGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyOjpkcmF3KCkKICAgICAvLyB0aGUgdGV4dCBhdCB0aGUgY2VudGVy
IG9mIHRoZSBzbGlkZXIuCiAgICAgLy8gTGVmdCBzdHJpbmcKICAgICBzID0gdGltZVRvU3RyaW5n
KGN1cnJlbnRUaW1lKCkpOwotICAgIGludCBmb250SGVpZ2h0ID0gZm9udC5mb250TWV0cmljcygp
LmhlaWdodCgpOworICAgIGludCBmb250SGVpZ2h0ID0gZm9udC5mb250TWV0cmljc09mUHJpbWFy
eUZvbnQoKS5oZWlnaHQoKTsKICAgICBUZXh0UnVuIGxlZnRUZXh0KHMpOwogICAgIGNvbnRleHQu
c2V0RmlsbENvbG9yKENvbG9yKHRleHRDb2xvcikpOwogICAgIGNvbnRleHQuZHJhd1RleHQoZm9u
dCwgbGVmdFRleHQsIEludFBvaW50KHdpbmRvd1dpZHRoIC8gMiAtIHRpbWVTbGlkZXJXaWR0aCAv
IDIgLSBtYXJnaW4gLSBmb250LndpZHRoKGxlZnRUZXh0KSwgd2luZG93SGVpZ2h0IC0gbWFyZ2lu
IC0gc2xpZGVySGVpZ2h0IC8gMiArIGZvbnRIZWlnaHQgLyA0KSk7Cg==
</data>
<flag name="commit-queue"
          id="476909"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450499</attachid>
            <date>2022-01-31 21:56:45 -0800</date>
            <delta_ts>2022-01-31 23:45:20 -0800</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-235938-20220131215644.patch</filename>
            <type>text/plain</type>
            <size>110221</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4ODY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTAxNDllMjkwZDY2N2Rh
MWEyYzAxNjAxMjc4YTgyOGJlZjRkNTQ1Yi4uNTg1NjQ0MGIyNGY2ZmNlZDhkOGQ1NmQwNzc0ZGIw
Njk1YjJlYWI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2MCBAQAorMjAyMi0wMS0zMSAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBG
b250Q2FzY2FkZTo6Zm9udE1ldHJpY3MoKSBhbmQgUmVuZGVyU3R5bGU6OmZvbnRNZXRyaWNzKCkg
dG8gZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTkzOAorCisgICAgICAgIFJldmlld2VkIGJ5IEFsYW4g
QnVqdGFzLgorCisgICAgICAgIEl0J3MgcHJvYmFibHkgZ29vZCB0byByZW1pbmQgcGVvcGxlIHRo
YXQgd2hlbiB0aGV5IGNhbGwgdGhpcyBmdW5jdGlvbiwKKyAgICAgICAgdGhleSBtaWdodCBub3Qg
YmUgZ2V0dGluZyB3aGF0IHRoZXkgbWlnaHQgdGhpbmsgdGhleSdyZSBnZXR0aW5nLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKwor
ICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZU5vbkNhbGNMZW5ndGhEb3VibGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmVxdWFsRm9yTGVuZ3RoUmVzb2x1dGlvbik6Cisg
ICAgICAgICogZGlzcGxheS9jc3MvRGlzcGxheUJveFBhaW50ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheTo6Qm94UGFpbnRlcjo6cGFpbnRCb3hDb250ZW50KToKKyAgICAgICAgKiBk
aXNwbGF5L2Nzcy9EaXNwbGF5U3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlN0
eWxlOjpmb250TWV0cmljc09mUHJpbWFyeUZvbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheTo6U3R5bGU6OmZvbnRNZXRyaWNzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBo
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxl
bWVudDo6Y3JlYXRlSW5uZXJUZXh0U3R5bGUpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZTo6Rm9udFByb3h5Ojpmb250TWV0cmljc09mUHJpbWFyeUZvbnQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6
ZHJhd1RleHRVbmNoZWNrZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZTo6bWVhc3VyZVRleHRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjp0ZXh0T2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OkZvbnRQcm94eTo6Zm9udE1ldHJpY3MgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2UuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpkcmF3UnVsZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6OmRyYXdFbGVtZW50VGl0bGUpOgorICAgICAgICAo
V2ViQ29yZTo6ZXhwZWN0ZWRTaXplRm9yTGF5b3V0TGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6
ZHJhd0xheW91dExhYmVsKToKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVGb3JtYXR0aW5nUXVpcmtzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6SW5saW5lRm9ybWF0dGluZ1F1aXJrczo6aW5pdGlhbExpbmVIZWlnaHQgY29uc3QpOgorICAg
ICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxldmVsQm94Lmg6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om1fc3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpJbmxpbmVMZXZlbEJveDo6cHJlZmVycmVkTGluZUhlaWdodCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUxldmVsQm94OjpwcmltYXJ5Zm9udE1ldHJpY3NP
ZlByaW1hcnlGb250IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGV2
ZWxCb3g6OnByaW1hcnlGb250TWV0cmljcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmxvZ2ljYWxSZWN0Rm9yVGV4dFJ1biBjb25zdCk6
CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJv
eEJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRlcjo6
c2V0VmVydGljYWxHZW9tZXRyeUZvckxpbmVCcmVha0JveCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkxpbmVCb3hCdWlsZGVyOjpzZXRJbml0aWFsVmVydGljYWxHZW9tZXRyeUZv
cklubGluZUJveCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkxpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OmNvbXB1dGVMaW5lQm94TG9naWNhbEhl
aWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hWZXJ0aWNhbEFs
aWduZXI6OmNvbXB1dGVSb290SW5saW5lQm94VmVydGljYWxQb3NpdGlvbiBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OmFsaWduSW5saW5l
TGV2ZWxCb3hlcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2Nh
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmZsb2F0V2lkdGhGb3JTaW1w
bGVUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpmbG9hdFdpZHRo
Rm9yQ29tcGxleFRleHQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YXNjYWRlLmg6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6Zm9udE1ldHJpY3NPZlBy
aW1hcnlGb250IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpmb250TWV0
cmljcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL0NhcmV0UmVjdENvbXB1
dGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVDYXJldFJlY3RGb3JFbXB0eUVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUNhcmV0UmVjdEZvckJveCk6CisgICAg
ICAgICogcmVuZGVyaW5nL0xlZ2FjeUVsbGlwc2lzQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeUVsbGlwc2lzQm94OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lFbGxp
cHNpc0JveDo6cGFpbnRNYXJrdXBCb3gpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5RWxsaXBz
aXNCb3g6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvTGVnYWN5SW5saW5lQm94
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUJveDo6bG9naWNhbEhlaWdodCBj
b25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL0xlZ2FjeUlubGluZUZsb3dCb3guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6YWRkVG9MaW5lKToKKyAgICAgICAg
KFdlYkNvcmU6OnBsYWNlQ2hpbGRJbmxpbmVCb3hlc0luQmxvY2tEaXJlY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0luQmxvY2tEaXJlY3Rp
b24pOgorICAgICAgICAqIHJlbmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnNldExvZ2ljYWxXaWR0aEZvclRleHRSdW4pOgorICAgICAgICAqIHJlbmRlcmlu
Zy9MZWdhY3lSb290SW5saW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJ
bmxpbmVCb3g6OmxpbmVTbmFwQWRqdXN0bWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
ZWdhY3lSb290SW5saW5lQm94Ojphc2NlbnRBbmREZXNjZW50Rm9yQm94IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6OnZlcnRpY2FsUG9zaXRpb25Gb3JCb3gp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9jazo6YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9jazo6aW5saW5lQmxvY2tCYXNlbGluZSBjb25zdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
a0Zsb3c6OmFkanVzdEluaXRpYWxMZXR0ZXJQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9ja0Zsb3c6OmZpcnN0TGluZUJhc2VsaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrRmxvdzo6aW5saW5lQmxvY2tCYXNlbGluZSBjb25zdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnNldElt
YWdlU2l6ZUZvckFsdFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnBhaW50
UmVwbGFjZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjptYXlBZmZlY3RMYXlvdXQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxpbmVCcmVhazo6YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXRlbU9mZnNldEZvckFs
aWdubWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjppdGVtSGVpZ2h0IGNv
bnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMaXN0TWFya2VyOjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdE1h
cmtlcjo6dXBkYXRlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2Vy
Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMaXN0TWFya2VyOjp1cGRhdGVNYXJnaW5zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxp
c3RNYXJrZXI6OnJlbGF0aXZlTWFya2VyUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clJ1YnlSdW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUnVieVJ1bjo6bGF5b3V0Qmxv
Y2spOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0Qm94UGFpbnRlcjo6cGFpbnRGb3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRCb3hQYWludGVyOjpwYWludENvbXBvc2l0aW9uVW5kZXJsaW5lKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRCb3hQYWludGVyOjpjYWxjdWxhdGVEb2N1bWVudE1hcmtlckJvdW5kcyk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0Qm94UGFpbnRlcjo6dGV4dE9yaWdpbkZyb21QYWludFJl
Y3QgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dERlY29yYXRpb25QYWludGVyOjpwYWludEJhY2tncm91
bmREZWNvcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblBhaW50ZXI6
OnBhaW50Rm9yZWdyb3VuZERlY29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHREZWNv
cmF0aW9uUGFpbnRlcjo6cGFpbnRMaW5lVGhyb3VnaCk6CisgICAgICAgICogcmVuZGVyaW5nL1Rl
eHRQYWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRQYWludGVyOjpwYWludFRleHRB
bmRFbXBoYXNpc01hcmtzSWZOZWVkZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9saW5lL0xpbmVJ
bmxpbmVIZWFkZXJzLmg6CisgICAgICAgIChXZWJDb3JlOjpyZXF1aXJlc0xpbmVCb3hGb3JDb250
ZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmF4aXNIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6dG9Vc2Vy
VW5pdHMpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxSb290Ojp2ZXJ0aWNhbFBhcmFtZXRlcnMp
OgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTY3JpcHRzOjp2ZXJ0aWNhbFBhcmFtZXRlcnMg
Y29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFVuZGVyT3Zlcjo6dmVydGljYWxQ
YXJhbWV0ZXJzIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmZvbnRNZXRyaWNzT2ZQcmltYXJ5
Rm9udCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y29tcHV0ZUxpbmVI
ZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmZvbnRNZXRyaWNz
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lVGV4dDo6cG9zaXRpb25Gb3JQb2ludCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnNlbGVjdGlvblJlY3RGb3JUZXh0RnJhZ21lbnQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9u
V2l0aFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50VGV4
dFdpdGhTaGFkb3dzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OmNhbGN1
bGF0ZUJvdW5kYXJpZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJv
eDo6bm9kZUF0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEVu
Z2luZUJhc2VsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRMYXlvdXRFbmdpbmVC
YXNlbGluZTo6Y2FsY3VsYXRlQmFzZWxpbmVTaGlmdCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmU6OmNhbGN1bGF0ZUFsaWdubWVudEJhc2VsaW5l
U2hpZnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dExheW91dEVuZ2luZUJhc2Vs
aW5lOjpjYWxjdWxhdGVHbHlwaEFkdmFuY2VBbmRPcmllbnRhdGlvbiBjb25zdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdUZXh0TWV0cmljczo6U1ZHVGV4dE1ldHJpY3MpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
U1ZHVGV4dFF1ZXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGN1bGF0ZUdseXBoQm91bmRh
cmllcyk6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyRmly
c3RMZXR0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3R5bGVGb3JGaXJzdExldHRlcik6Cisg
ICAgICAgICogc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMpOgorICAgICAgICAqIHN0eWxlL1N0eWxlUmVz
b2x2ZUZvckZvbnRSYXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OnJlc29sdmVGb3JG
b250UmF3KToKKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3RoQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdMZW5ndGhDb250ZXh0Ojpjb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzVG9FWFMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVl
RnJvbUVYU1RvVXNlclVuaXRzIGNvbnN0KToKKwogMjAyMi0wMS0zMSAgU2FpZCBBYm91LUhhbGxh
d2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIFBhdHRlcm4gc2hv
dWxkIGhvbGQgU291cmNlSW1hZ2Ugd2hpY2ggY2FuIGJlIGNvbnZlcnRlZCB0byBhIE5hdGl2ZUlt
YWdlIG9ubHkgd2hlbiBuZWVkZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggM2FmNzJiMzhmNDRmMDE1ZjM0NDRjNTJm
YmQ1ZjYzZGRhYjY1NGYwMS4uMDg3NzAyNDkyOTljN2U2YzYzYjdhNjU5M2ZmZjZhN2FiODdjYzY1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMS0zMSAgTXlsZXMgQy4gTWF4Zmll
bGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBGb250Q2FzY2FkZTo6
Zm9udE1ldHJpY3MoKSBhbmQgUmVuZGVyU3R5bGU6OmZvbnRNZXRyaWNzKCkgdG8gZm9udE1ldHJp
Y3NPZlByaW1hcnlGb250KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNTkzOAorCisgICAgICAgIFJldmlld2VkIGJ5IEFsYW4gQnVqdGFzLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6ZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlKToKKwogMjAy
Mi0wMS0zMSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBb
R1BVIFByb2Nlc3NdIFBhdHRlcm4gc2hvdWxkIGhvbGQgU291cmNlSW1hZ2Ugd2hpY2ggY2FuIGJl
IGNvbnZlcnRlZCB0byBhIE5hdGl2ZUltYWdlIG9ubHkgd2hlbiBuZWVkZWQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwppbmRleCBhOGVjNWRlZGUxMjFmZDcwMDhmNGJmNmRlN2E0NmQwNzZjMTA3
YWEyLi5jZTJkMTY5M2ZlOWJhOTM0NjJkNTU3Nzc4YzU0NjMyZGE2ODgxNDA0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDEtMzEgIE15bGVzIEMu
IE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgRm9udENh
c2NhZGU6OmZvbnRNZXRyaWNzKCkgYW5kIFJlbmRlclN0eWxlOjpmb250TWV0cmljcygpIHRvIGZv
bnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzU5MzgKKworICAgICAgICBSZXZpZXdlZCBieSBBbGFuIEJ1anRh
cy4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbToK
KyAgICAgICAgKCtbV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciBfZGljdGlvbmFyeVBvcHVw
SW5mb0ZvclJhbmdlOmluRnJhbWU6d2l0aExvb2t1cE9wdGlvbnM6aW5kaWNhdG9yT3B0aW9uczp0
cmFuc2l0aW9uOl0pOgorCiAyMDIyLTAxLTMwICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIERlbGV0ZSBydW50aW1lIHByZWZlcmVuY2UgZm9yIGVuYWJsaW5nIGtl
eWdlbiBlbGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0
ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAKaW5kZXggNDZl
ZTMzMDI2M2UxOGJmMDk4YTdlZDU2OTMzM2YyMDhhODE0OTI2ZS4uNGM3YmMxNThiNTM3MTljNmRi
ZWMyMDdlMTIwNzhiNDc2ZjE5Mjg4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0
LmNwcApAQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMgaW50IGJhc2VsaW5lUG9zaXRpb25Gb3JSZW5k
ZXJPYmplY3QoUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QpCiAgICAgLy8gRklYTUU6IFRoaXMg
aW1wbGVtZW50YXRpb24gb2YgYmFzZWxpbmVQb3NpdGlvbiBvcmlnaW5hdGVzIGZyb20gUmVuZGVy
T2JqZWN0LmNwcCBhbmQgd2FzCiAgICAgLy8gcmVtb3ZlZCBpbiByNzAwNzIuIFRoZSBpbXBsZW1l
bnRhdGlvbiBsb29rcyBpbmNvcnJlY3QgdGhvdWdoLCBiZWNhdXNlIHRoaXMgaXMgbm90IHRoZQog
ICAgIC8vIGJhc2VsaW5lIG9mIHRoZSB1bmRlcmx5aW5nIFJlbmRlck9iamVjdCwgYnV0IG9mIHRo
ZSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LgotICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250
TWV0cmljcyA9IHJlbmRlck9iamVjdC0+Zmlyc3RMaW5lU3R5bGUoKS5mb250TWV0cmljcygpOwor
ICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHJlbmRlck9iamVjdC0+Zmlyc3RM
aW5lU3R5bGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsKICAgICByZXR1cm4gZm9udE1l
dHJpY3MuYXNjZW50KCkgKyAocmVuZGVyT2JqZWN0LT5maXJzdExpbmVTdHlsZSgpLmNvbXB1dGVk
TGluZUhlaWdodCgpIC0gZm9udE1ldHJpY3MuaGVpZ2h0KCkpIC8gMjsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKaW5kZXggMDA3Y2FlZDc4ZTEyOTQ3YmJkN2Jj
ZWRkOGJkMTZhMmY5YjE0OTQwOC4uZjY0MjY1YTAzMjc5OWI3ZWYzMzhkNzY5NzQ2Y2MzZjljYWIz
OGZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCkBAIC04MTQs
NyArODE0LDcgQEAgZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTm9uQ2FsY0xlbmd0
aERvdWJsZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb24KICAgICAgICAgLy8gV2UgcmVhbGx5
IG5lZWQgdG8gY29tcHV0ZSBFWCB1c2luZyBmb250TWV0cmljcyBmb3IgdGhlIG9yaWdpbmFsIHNw
ZWNpZmllZFNpemUgYW5kIG5vdCB1c2UKICAgICAgICAgLy8gb3VyIGFjdHVhbCBjb25zdHJ1Y3Rl
ZCByZW5kZXJpbmcgZm9udC4KICAgICAgICAgQVNTRVJUKGNvbnZlcnNpb25EYXRhLnN0eWxlKCkp
OwotICAgICAgICB2YWx1ZSA9IGNvbXB1dGVVbnpvb21lZE5vbkNhbGNMZW5ndGhEb3VibGUocHJp
bWl0aXZlVHlwZSwgdmFsdWUsIGNvbnZlcnNpb25EYXRhLnByb3BlcnR5VG9Db21wdXRlKCksICZj
b252ZXJzaW9uRGF0YS5zdHlsZSgpLT5mb250TWV0cmljcygpLCAmY29udmVyc2lvbkRhdGEuc3R5
bGUoKS0+Zm9udERlc2NyaXB0aW9uKCkpOworICAgICAgICB2YWx1ZSA9IGNvbXB1dGVVbnpvb21l
ZE5vbkNhbGNMZW5ndGhEb3VibGUocHJpbWl0aXZlVHlwZSwgdmFsdWUsIGNvbnZlcnNpb25EYXRh
LnByb3BlcnR5VG9Db21wdXRlKCksICZjb252ZXJzaW9uRGF0YS5zdHlsZSgpLT5mb250TWV0cmlj
c09mUHJpbWFyeUZvbnQoKSwgJmNvbnZlcnNpb25EYXRhLnN0eWxlKCktPmZvbnREZXNjcmlwdGlv
bigpKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkVNUzoK
QEAgLTgyNCw3ICs4MjQsNyBAQCBkb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVOb25D
YWxjTGVuZ3RoRG91YmxlKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbgogICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkNTU19DSFM6CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0lDOgogICAgICAg
ICBBU1NFUlQoY29udmVyc2lvbkRhdGEuc3R5bGUoKSk7Ci0gICAgICAgIHZhbHVlID0gY29tcHV0
ZVVuem9vbWVkTm9uQ2FsY0xlbmd0aERvdWJsZShwcmltaXRpdmVUeXBlLCB2YWx1ZSwgY29udmVy
c2lvbkRhdGEucHJvcGVydHlUb0NvbXB1dGUoKSwgJmNvbnZlcnNpb25EYXRhLnN0eWxlKCktPmZv
bnRNZXRyaWNzKCkpOworICAgICAgICB2YWx1ZSA9IGNvbXB1dGVVbnpvb21lZE5vbkNhbGNMZW5n
dGhEb3VibGUocHJpbWl0aXZlVHlwZSwgdmFsdWUsIGNvbnZlcnNpb25EYXRhLnByb3BlcnR5VG9D
b21wdXRlKCksICZjb252ZXJzaW9uRGF0YS5zdHlsZSgpLT5mb250TWV0cmljc09mUHJpbWFyeUZv
bnQoKSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BYOgpA
QCAtOTE1LDcgKzkxNSw3IEBAIGRvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZU5vbkNh
bGNMZW5ndGhEb3VibGUoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uCiAgICAgICAgIEFTU0VS
VChjb252ZXJzaW9uRGF0YS5zdHlsZSgpKTsKICAgICAgICAgaWYgKGNvbnZlcnNpb25EYXRhLmNv
bXB1dGluZ0xpbmVIZWlnaHQoKSB8fCBjb252ZXJzaW9uRGF0YS5jb21wdXRpbmdGb250U2l6ZSgp
KSB7CiAgICAgICAgICAgICAvLyBUcnkgdG8gZ2V0IHRoZSBwYXJlbnQncyBjb21wdXRlZCBsaW5l
LWhlaWdodCwgb3IgZmFsbCBiYWNrIHRvIHRoZSBpbml0aWFsIGxpbmUtaGVpZ2h0IG9mIHRoaXMg
ZWxlbWVudCdzIGZvbnQgc3BhY2luZy4KLSAgICAgICAgICAgIHZhbHVlICo9IGNvbnZlcnNpb25E
YXRhLnBhcmVudFN0eWxlKCkgPyBjb252ZXJzaW9uRGF0YS5wYXJlbnRTdHlsZSgpLT5jb21wdXRl
ZExpbmVIZWlnaHQoKSA6IGNvbnZlcnNpb25EYXRhLnN0eWxlKCktPmZvbnRNZXRyaWNzKCkubGlu
ZVNwYWNpbmcoKTsKKyAgICAgICAgICAgIHZhbHVlICo9IGNvbnZlcnNpb25EYXRhLnBhcmVudFN0
eWxlKCkgPyBjb252ZXJzaW9uRGF0YS5wYXJlbnRTdHlsZSgpLT5jb21wdXRlZExpbmVIZWlnaHQo
KSA6IGNvbnZlcnNpb25EYXRhLnN0eWxlKCktPmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmxp
bmVTcGFjaW5nKCk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgdmFsdWUgKj0gY29udmVy
c2lvbkRhdGEuc3R5bGUoKS0+Y29tcHV0ZWRMaW5lSGVpZ2h0KCk7CiAgICAgICAgIGJyZWFrOwpA
QCAtOTUxLDkgKzk1MSw5IEBAIGJvb2wgQ1NTUHJpbWl0aXZlVmFsdWU6OmVxdWFsRm9yTGVuZ3Ro
UmVzb2x1dGlvbihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGVBLCBjb25zCiAgICAgaWYgKHN0eWxl
QS5mb250RGVzY3JpcHRpb24oKS5zcGVjaWZpZWRTaXplKCkgIT0gc3R5bGVCLmZvbnREZXNjcmlw
dGlvbigpLnNwZWNpZmllZFNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYg
KHN0eWxlQS5mb250TWV0cmljcygpLnhIZWlnaHQoKSAhPSBzdHlsZUIuZm9udE1ldHJpY3MoKS54
SGVpZ2h0KCkpCisgICAgaWYgKHN0eWxlQS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS54SGVp
Z2h0KCkgIT0gc3R5bGVCLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLnhIZWlnaHQoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChzdHlsZUEuZm9udE1ldHJpY3MoKS56ZXJvV2lk
dGgoKSAhPSBzdHlsZUIuZm9udE1ldHJpY3MoKS56ZXJvV2lkdGgoKSkKKyAgICBpZiAoc3R5bGVB
LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLnplcm9XaWR0aCgpICE9IHN0eWxlQi5mb250TWV0
cmljc09mUHJpbWFyeUZvbnQoKS56ZXJvV2lkdGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgaWYgKHN0eWxlQS56b29tKCkgIT0gc3R5bGVCLnpvb20oKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hQYWludGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hQYWludGVyLmNwcAppbmRleCAyYzYzYWU4YzRh
ZWViZWYwYzEwYTZlZDI1MThkNTBhYzNiZTI1Yzc0Li41OTVlMGNlNTc0YzE0MWYyYWMwMGVkZWJj
NzE3MTc5MWYwMWUyMjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9E
aXNwbGF5Qm94UGFpbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlz
cGxheUJveFBhaW50ZXIuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgQm94UGFpbnRlcjo6cGFp
bnRCb3hDb250ZW50KGNvbnN0IEJveCYgYm94LCBQYWludGluZ0NvbnRleHQmIHBhaW50aW5nQ29u
dGV4CiAgICAgICAgIHBhaW50aW5nQ29udGV4dC5jb250ZXh0LnNldEZpbGxDb2xvcihzdHlsZS5j
b2xvcigpKTsKIAogICAgICAgICAvLyBGSVhNRTogQWRkIG5vbi1iYXNlbGluZSBhbGlnbiBwYWlu
dGluZwotICAgICAgICBhdXRvIGJhc2VsaW5lID0gdGV4dFJlY3QueSgpICsgc3R5bGUuZm9udE1l
dHJpY3MoKS5hc2NlbnQoKTsKKyAgICAgICAgYXV0byBiYXNlbGluZSA9IHRleHRSZWN0LnkoKSAr
IHN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudCgpOwogICAgICAgICBhdXRv
IGV4cGFuc2lvbiA9IHRleHRCb3guZXhwYW5zaW9uKCk7CiAKICAgICAgICAgYXV0byB0ZXh0UnVu
ID0gVGV4dFJ1biB7IHRleHRCb3gudGV4dCgpLm9yaWdpbmFsQ29udGVudCgpLCB0ZXh0UmVjdC54
KCksIGV4cGFuc2lvbi5ob3Jpem9udGFsRXhwYW5zaW9uLCBleHBhbnNpb24uYmVoYXZpb3IgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlTdHlsZS5oIGIv
U291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVN0eWxlLmgKaW5kZXggN2VlMzBhM2Ux
MzEyOTRhM2Q1NWFjZWY0Y2FhMGE3MWMzZDEwYWQ1OC4uZmRiNGEyZTQ1NjgzZTViZTliNTAyZmZh
NzFhYTZmZTk4MTI5NjBjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3Mv
RGlzcGxheVN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVN0
eWxlLmgKQEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogICAgIGJvb2wgcGFydGljaXBhdGVzSW5a
T3JkZXJTb3J0aW5nKCkgY29uc3QgeyByZXR1cm4gaXNQb3NpdGlvbmVkKCkgfHwgaXNTdGFja2lu
Z0NvbnRleHQoKTsgfQogCiAgICAgY29uc3QgRm9udENhc2NhZGUmIGZvbnRDYXNjYWRlKCkgY29u
c3QgeyByZXR1cm4gbV9mb250Q2FzY2FkZTsgfQotICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250
TWV0cmljcygpIGNvbnN0IHsgcmV0dXJuIG1fZm9udENhc2NhZGUuZm9udE1ldHJpY3MoKTsgfQor
ICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljc09mUHJpbWFyeUZvbnQoKSBjb25zdCB7
IHJldHVybiBtX2ZvbnRDYXNjYWRlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOyB9CiAgICAg
CiAgICAgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BhY2l0eTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCBkMDc2MWVlYzlmM2MyODU5
M2EyODYzYzAwYzkzNTdhMWY3NmE3ODJlLi4wNWM1ZmM0ZDkyNmMxOTUwZDU1YjZiZTA3NjBmMjdm
MmU3OWJhZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAg
LTIxNzgsNyArMjE3OCw3IEBAIFJlbmRlclN0eWxlIEhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZUlu
bmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKICAgICB9CiAKICAgICAvLyBE
byBub3QgYWxsb3cgbGluZS1oZWlnaHQgdG8gYmUgc21hbGxlciB0aGFuIG91ciBkZWZhdWx0Lgot
ICAgIGlmICh0ZXh0QmxvY2tTdHlsZS5mb250TWV0cmljcygpLmxpbmVTcGFjaW5nKCkgPiBzdHls
ZS5jb21wdXRlZExpbmVIZWlnaHQoKSkKKyAgICBpZiAodGV4dEJsb2NrU3R5bGUuZm9udE1ldHJp
Y3NPZlByaW1hcnlGb250KCkubGluZVNwYWNpbmcoKSA+IHN0eWxlLmNvbXB1dGVkTGluZUhlaWdo
dCgpKQogICAgICAgICB0ZXh0QmxvY2tTdHlsZS5zZXRMaW5lSGVpZ2h0KFJlbmRlclN0eWxlOjpp
bml0aWFsTGluZUhlaWdodCgpKTsKIAogICAgIHJldHVybiB0ZXh0QmxvY2tTdHlsZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZS5jcHAKaW5kZXggYjg5ZTc3ZmI2MDBlMGVjYTkzZjAxOTI0MzllNDEwNzNjOTVh
ZDEzOC4uZDllY2Y2NmQ2ZDZhMTRlZWMzN2ZlMTJmZmM5MWY3N2YyZWIxZjgwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZS5jcHAKQEAgLTQwNCw5ICs0MDQsOSBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2U6OkZvbnRQcm94eTo6aW5pdGlhbGl6ZShGb250U2VsZWN0b3ImIGZvbnRTZWxl
YwogICAgIG1fZm9udC5mb250U2VsZWN0b3IoKS0+cmVnaXN0ZXJGb3JJbnZhbGlkYXRpb25DYWxs
YmFja3MoKnRoaXMpOwogfQogCi1jb25zdCBGb250TWV0cmljcyYgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZTo6Rm9udFByb3h5Ojpmb250TWV0cmljcygpIGNvbnN0Citjb25zdCBGb250TWV0
cmljcyYgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Rm9udFByb3h5Ojpmb250TWV0cmlj
c09mUHJpbWFyeUZvbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX2ZvbnQuZm9udE1ldHJpY3Mo
KTsKKyAgICByZXR1cm4gbV9mb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwogfQogCiBj
b25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
OjpGb250UHJveHk6OmZvbnREZXNjcmlwdGlvbigpIGNvbnN0CkBAIC0yNDA3LDcgKzI0MDcsNyBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdUZXh0VW5jaGVja2VkKGNv
bnN0IFRleHRSdW4mIHRleHRSdW4sIGRvdQogewogICAgIGF1dG8qIGMgPSBkcmF3aW5nQ29udGV4
dCgpOwogICAgIGF1dG8mIGZvbnRQcm94eSA9ICp0aGlzLT5mb250UHJveHkoKTsKLSAgICBjb25z
dCBhdXRvJiBmb250TWV0cmljcyA9IGZvbnRQcm94eS5mb250TWV0cmljcygpOworICAgIGNvbnN0
IGF1dG8mIGZvbnRNZXRyaWNzID0gZm9udFByb3h5LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgp
OwogCiAgICAgLy8gRklYTUU6IE5lZWQgdG8gdHVybiBvZmYgZm9udCBzbW9vdGhpbmcuCiAKQEAg
LTI1MzAsNyArMjUzMCw3IEBAIFJlZjxUZXh0TWV0cmljcz4gQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZTo6bWVhc3VyZVRleHRJbnRlcm5hbChjb25zdCBUZXh0UnVuCiAgICAgUmVmPFRleHRN
ZXRyaWNzPiBtZXRyaWNzID0gVGV4dE1ldHJpY3M6OmNyZWF0ZSgpOwogCiAgICAgYXV0byYgZm9u
dCA9ICpmb250UHJveHkoKTsKLSAgICBhdXRvJiBmb250TWV0cmljcyA9IGZvbnQuZm9udE1ldHJp
Y3MoKTsKKyAgICBhdXRvJiBmb250TWV0cmljcyA9IGZvbnQuZm9udE1ldHJpY3NPZlByaW1hcnlG
b250KCk7CiAKICAgICBHbHlwaE92ZXJmbG93IGdseXBoT3ZlcmZsb3c7CiAgICAgZ2x5cGhPdmVy
Zmxvdy5jb21wdXRlQm91bmRzID0gdHJ1ZTsKQEAgLTI1NTcsNyArMjU1Nyw3IEBAIFJlZjxUZXh0
TWV0cmljcz4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6bWVhc3VyZVRleHRJbnRlcm5h
bChjb25zdCBUZXh0UnVuCiAKIEZsb2F0UG9pbnQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZTo6dGV4dE9mZnNldChmbG9hdCB3aWR0aCwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCiB7Ci0g
ICAgYXV0byYgZm9udE1ldHJpY3MgPSBmb250UHJveHkoKS0+Zm9udE1ldHJpY3MoKTsKKyAgICBh
dXRvJiBmb250TWV0cmljcyA9IGZvbnRQcm94eSgpLT5mb250TWV0cmljc09mUHJpbWFyeUZvbnQo
KTsKICAgICBGbG9hdFBvaW50IG9mZnNldDsKIAogICAgIHN3aXRjaCAoc3RhdGUoKS50ZXh0QmFz
ZWxpbmUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaAppbmRleCBkNGFlMGU0MTBjYzk1M2U5YjZhODdlNDI2
YzNlOWYzZWZmMzQyNDQ2Li5kNGM1YTRkN2IzMDBiZTRlOTRjYmJiZGQ4NjQyMDA4ZDNhMGNkYzhi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZS5oCkBAIC0yMzQsNyArMjM0LDcgQEAgcHVibGljOgogCiAgICAg
ICAgIGJvb2wgcmVhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2ZvbnQuZm9udFNlbGVjdG9yKCk7
IH0KICAgICAgICAgdm9pZCBpbml0aWFsaXplKEZvbnRTZWxlY3RvciYsIGNvbnN0IEZvbnRDYXNj
YWRlJik7Ci0gICAgICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcygpIGNvbnN0Owor
ICAgICAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkgY29u
c3Q7CiAgICAgICAgIGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlv
bigpIGNvbnN0OwogICAgICAgICBmbG9hdCB3aWR0aChjb25zdCBUZXh0UnVuJiwgR2x5cGhPdmVy
ZmxvdyogPSAwKSBjb25zdDsKICAgICAgICAgdm9pZCBkcmF3QmlkaVRleHQoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250Q2FzY2FkZTo6Q3Vz
dG9tRm9udE5vdFJlYWR5QWN0aW9uKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JPdmVybGF5LmNwcAppbmRleCAyYTA0ZjAwMDgzYmZjMGYzY2ViNmQzYWJmMDg3
ZWU4MzUyZmQxNTRiLi41MGFjZmFjNDgzYjQ4MzEzZGIwZmZjNWQxZDM3Mzk2MjViYjM3NDEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCkBAIC04
NjksNyArODY5LDcgQEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpkcmF3UnVsZXJzKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgSW5zcGVjdG9yT3ZlcmwKIAogICAgICAgICAgICAgICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgdmVydGljYWxMYWJlbFN0YXRlU2F2ZXIoY29udGV4
dCk7CiAgICAgICAgICAgICAgICAgY29udGV4dC50cmFuc2xhdGUoem9vbSh4KSArIDAuNWYsIHNj
cm9sbFkpOwotICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd1RleHQoZm9udCwgVGV4dFJ1bihT
dHJpbmc6Om51bWJlcih4KSksIHsgMiwgZHJhd1RvcEVkZ2UgPyBydWxlckxhYmVsU2l6ZSA6IHJ1
bGVyTGFiZWxTaXplIC0gcnVsZXJTaXplICsgZm9udC5mb250TWV0cmljcygpLmhlaWdodCgpIC0g
MS4wZiB9KTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIFRleHRSdW4o
U3RyaW5nOjpudW1iZXIoeCkpLCB7IDIsIGRyYXdUb3BFZGdlID8gcnVsZXJMYWJlbFNpemUgOiBy
dWxlckxhYmVsU2l6ZSAtIHJ1bGVyU2l6ZSArIGZvbnQuZm9udE1ldHJpY3NPZlByaW1hcnlGb250
KCkuaGVpZ2h0KCkgLSAxLjBmIH0pOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTky
OCw3ICs5MjgsNyBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmRyYXdSdWxlcnMoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnNwZWN0b3JPdmVybAogICAgICAgICBjb25zdCBmbG9h
dCBwYWRkaW5nID0gMjsKICAgICAgICAgY29uc3QgZmxvYXQgcmFkaXVzID0gNDsKICAgICAgICAg
ZmxvYXQgZm9udFdpZHRoID0gZm9udC53aWR0aCh2aWV3cG9ydFRleHRSdW4pOwotICAgICAgICBm
bG9hdCBmb250SGVpZ2h0ID0gZm9udC5mb250TWV0cmljcygpLmZsb2F0SGVpZ2h0KCk7CisgICAg
ICAgIGZsb2F0IGZvbnRIZWlnaHQgPSBmb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmZs
b2F0SGVpZ2h0KCk7CiAgICAgICAgIEZsb2F0UmVjdCB2aWV3cG9ydFRleHRSZWN0KG1hcmdpbiwg
bWFyZ2luLCAocGFkZGluZyAqIDIuMGYpICsgZm9udFdpZHRoLCAocGFkZGluZyAqIDIuMGYpICsg
Zm9udEhlaWdodCk7CiAgICAgICAgIGNvbnN0IGF1dG8gdmlld3BvcnRUZXh0UmVjdENlbnRlciA9
IHZpZXdwb3J0VGV4dFJlY3QuY2VudGVyKCk7CiAKQEAgLTk2Niw3ICs5NjYsNyBAQCB2b2lkIElu
c3BlY3Rvck92ZXJsYXk6OmRyYXdSdWxlcnMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBJbnNwZWN0b3JPdmVybAogICAgICAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJv
dW5kZWRSZWN0KHZpZXdwb3J0VGV4dFJlY3QsIEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpKHJhZGl1
cykpLCBydWxlckJhY2tncm91bmRDb2xvcik7CiAKICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29s
b3IoQ29sb3I6OmJsYWNrKTsKLSAgICAgICAgY29udGV4dC5kcmF3VGV4dChmb250LCB2aWV3cG9y
dFRleHRSdW4sIHttYXJnaW4gKyAgcGFkZGluZywgbWFyZ2luICsgcGFkZGluZyArIGZvbnRIZWln
aHQgLSBmb250LmZvbnRNZXRyaWNzKCkuZGVzY2VudCgpIH0pOworICAgICAgICBjb250ZXh0LmRy
YXdUZXh0KGZvbnQsIHZpZXdwb3J0VGV4dFJ1biwgeyBtYXJnaW4gKyAgcGFkZGluZywgbWFyZ2lu
ICsgcGFkZGluZyArIGZvbnRIZWlnaHQgLSBmb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgp
LmRlc2NlbnQoKSB9KTsKICAgICB9CiB9CiAKQEAgLTEwNDAsNyArMTA0MCw3IEBAIFBhdGggSW5z
cGVjdG9yT3ZlcmxheTo6ZHJhd0VsZW1lbnRUaXRsZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IE5vZGUmIG5vZGUsIGNvCiAgICAgRm9udENhc2NhZGUgZm9udChXVEZNb3ZlKGZvbnREZXNjcmlw
dGlvbiksIDAsIDApOwogICAgIGZvbnQudXBkYXRlKG51bGxwdHIpOwogCi0gICAgaW50IGZvbnRI
ZWlnaHQgPSBmb250LmZvbnRNZXRyaWNzKCkuaGVpZ2h0KCk7CisgICAgaW50IGZvbnRIZWlnaHQg
PSBmb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmhlaWdodCgpOwogCiAgICAgZmxvYXQg
ZWxlbWVudERhdGFXaWR0aDsKICAgICBmbG9hdCBlbGVtZW50RGF0YUhlaWdodCA9IGZvbnRIZWln
aHQ7CkBAIC0xMzQ4LDcgKzEzNDgsNyBAQCBzdGF0aWMgRmxvYXRTaXplIGV4cGVjdGVkU2l6ZUZv
ckxheW91dExhYmVsKFN0cmluZyBsYWJlbCwgSW5zcGVjdG9yT3ZlcmxheTo6TGFiZQogewogICAg
IGF1dG8gZm9udCA9IGZvbnRGb3JMYXlvdXRMYWJlbCgpOwogCi0gICAgZmxvYXQgdGV4dEhlaWdo
dCA9IGZvbnQuZm9udE1ldHJpY3MoKS5mbG9hdEhlaWdodCgpOworICAgIGZsb2F0IHRleHRIZWln
aHQgPSBmb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmZsb2F0SGVpZ2h0KCk7CiAgICAg
ZmxvYXQgdGV4dFdpZHRoID0gZm9udC53aWR0aChUZXh0UnVuKGxhYmVsKSk7CiAgICAgaWYgKG1h
eGltdW1XaWR0aCAmJiB0ZXh0V2lkdGggKyAobGF5b3V0TGFiZWxQYWRkaW5nICogMikgPiBtYXhp
bXVtV2lkdGgpCiAgICAgICAgIHRleHRXaWR0aCA9IG1heGltdW1XaWR0aDsKQEAgLTEzNzYsOCAr
MTM3Niw4IEBAIHN0YXRpYyB2b2lkIGRyYXdMYXlvdXRMYWJlbChHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIFN0cmluZyBsYWJlbCwgRmxvYXRQb2ludCBwCiAgICAgY29udGV4dC50cmFuc2xhdGUo
cG9pbnQpOwogCiAgICAgYXV0byBmb250ID0gZm9udEZvckxheW91dExhYmVsKCk7Ci0gICAgZmxv
YXQgdGV4dEhlaWdodCA9IGZvbnQuZm9udE1ldHJpY3MoKS5mbG9hdEhlaWdodCgpOwotICAgIGZs
b2F0IHRleHREZXNjZW50ID0gZm9udC5mb250TWV0cmljcygpLmZsb2F0RGVzY2VudCgpOworICAg
IGZsb2F0IHRleHRIZWlnaHQgPSBmb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmZsb2F0
SGVpZ2h0KCk7CisgICAgZmxvYXQgdGV4dERlc2NlbnQgPSBmb250LmZvbnRNZXRyaWNzT2ZQcmlt
YXJ5Rm9udCgpLmZsb2F0RGVzY2VudCgpOwogICAgIAogICAgIGZsb2F0IHRleHRXaWR0aCA9IGZv
bnQud2lkdGgoVGV4dFJ1bihsYWJlbCkpOwogICAgIGlmIChtYXhpbXVtV2lkdGggJiYgdGV4dFdp
ZHRoICsgKGxheW91dExhYmVsUGFkZGluZyAqIDIpID4gbWF4aW11bVdpZHRoKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVGb3JtYXR0aW5nUXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdRdWlya3MuY3BwCmluZGV4IDljOGU4Yzlh
ODc3MjAyNzg3YjA1ZWIwM2FmYjczMzgxNDNjNjUwYzkuLjU5ZTg3YTNhYzUyNDRkMDg5OTY3NTNh
YjVjYmE3Y2ZjODA0NTQxOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdRdWlya3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1h
dHRpbmdRdWlya3MuY3BwCkBAIC00NCw3ICs0NCw3IEBAIElubGluZUxheW91dFVuaXQgSW5saW5l
Rm9ybWF0dGluZ1F1aXJrczo6aW5pdGlhbExpbmVIZWlnaHQoKSBjb25zdAogICAgIEFTU0VSVCgh
bGF5b3V0U3RhdGUoKS5pblN0YW5kYXJkc01vZGUoKSk7CiAgICAgLy8gTmVnYXRpdmUgbGluZUhl
aWdodCB2YWx1ZSBtZWFucyB0aGUgbGluZS1oZWlnaHQgaXMgbm90IHNldAogICAgIGF1dG8mIHJv
b3RTdHlsZSA9IGZvcm1hdHRpbmdDb250ZXh0KCkucm9vdCgpLnN0eWxlKCk7Ci0gICAgcmV0dXJu
IHJvb3RTdHlsZS5saW5lSGVpZ2h0KCkuaXNOZWdhdGl2ZSgpID8gcm9vdFN0eWxlLmZvbnRNZXRy
aWNzKCkuZmxvYXRIZWlnaHQoKSA6IHJvb3RTdHlsZS5jb21wdXRlZExpbmVIZWlnaHQoKTsKKyAg
ICByZXR1cm4gcm9vdFN0eWxlLmxpbmVIZWlnaHQoKS5pc05lZ2F0aXZlKCkgPyByb290U3R5bGUu
Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuZmxvYXRIZWlnaHQoKSA6IHJvb3RTdHlsZS5jb21w
dXRlZExpbmVIZWlnaHQoKTsKIH0KIAogYm9vbCBJbmxpbmVGb3JtYXR0aW5nUXVpcmtzOjppbmxp
bmVMZXZlbEJveEFmZmVjdHNMaW5lQm94KGNvbnN0IElubGluZUxldmVsQm94JiBpbmxpbmVMZXZl
bEJveCwgY29uc3QgTGluZUJveCYgbGluZUJveCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxldmVsQm94Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVM
ZXZlbEJveC5oCmluZGV4IDUyOWEyMThlNTJkNTEwODEyZDhlZTk3ZTVjZjFhM2I0ODRjMDUxMDQu
LmQ3MDAzNDQ1N2FiZGRlZGQxMDY0ODkxZTdkNzUxN2U3ZmU3Zjc1MGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxldmVs
Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lTGV2ZWxCb3guaApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgVmVydGlj
YWxBbGlnbm1lbnQgdmVydGljYWxBbGlnbigpIGNvbnN0OwogICAgIElubGluZUxheW91dFVuaXQg
cHJlZmVycmVkTGluZUhlaWdodCgpIGNvbnN0OwogICAgIGJvb2wgaXNQcmVmZXJyZWRMaW5lSGVp
Z2h0Rm9udE1ldHJpY3NCYXNlZCgpIGNvbnN0OwotICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBwcmlt
YXJ5Rm9udE1ldHJpY3MoKSBjb25zdDsKKyAgICBjb25zdCBGb250TWV0cmljcyYgcHJpbWFyeWZv
bnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpIGNvbnN0OwogICAgIElubGluZUxheW91dFVuaXQgZm9u
dFNpemUoKSBjb25zdDsKIAogICAgIGJvb2wgaXNJbmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBt
X3R5cGUgPT0gVHlwZTo6SW5saW5lQm94IHx8IGlzUm9vdElubGluZUJveCgpIHx8IGlzTGluZVNw
YW5uaW5nSW5saW5lQm94KCk7IH0KQEAgLTE1NCw3ICsxNTQsNyBAQCBpbmxpbmUgSW5saW5lTGV2
ZWxCb3g6OklubGluZUxldmVsQm94KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBSZW5kZXJT
dHlsZSYgcwogICAgICwgbV9pc0ZpcnN0V2l0aGluTGF5b3V0Qm94KHBvc2l0aW9uV2l0aGluTGF5
b3V0Qm94LmNvbnRhaW5zKFBvc2l0aW9uV2l0aGluTGF5b3V0Qm94OjpGaXJzdCkpCiAgICAgLCBt
X2lzTGFzdFdpdGhpbkxheW91dEJveChwb3NpdGlvbldpdGhpbkxheW91dEJveC5jb250YWlucyhQ
b3NpdGlvbldpdGhpbkxheW91dEJveDo6TGFzdCkpCiAgICAgLCBtX3R5cGUodHlwZSkKLSAgICAs
IG1fc3R5bGUoeyBzdHlsZS5mb250Q2FzY2FkZSgpLnByaW1hcnlGb250KCkuZm9udE1ldHJpY3Mo
KSwgc3R5bGUubGluZUhlaWdodCgpLCBJbmxpbmVMYXlvdXRVbml0KHN0eWxlLmZvbnRDYXNjYWRl
KCkuZm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRQaXhlbFNpemUoKSksIHsgfSB9KQorICAgICwg
bV9zdHlsZSh7IHN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCks
IHN0eWxlLmxpbmVIZWlnaHQoKSwgSW5saW5lTGF5b3V0VW5pdChzdHlsZS5mb250Q2FzY2FkZSgp
LmZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkUGl4ZWxTaXplKCkpLCB7IH0gfSkKIHsKICAgICBt
X3N0eWxlLnZlcnRpY2FsQWxpZ25tZW50LnR5cGUgPSBzdHlsZS52ZXJ0aWNhbEFsaWduKCk7CiAg
ICAgaWYgKG1fc3R5bGUudmVydGljYWxBbGlnbm1lbnQudHlwZSA9PSBWZXJ0aWNhbEFsaWduOjpM
ZW5ndGgpCkBAIC0xNzIsNyArMTcyLDcgQEAgaW5saW5lIElubGluZUxheW91dFVuaXQgSW5saW5l
TGV2ZWxCb3g6OnByZWZlcnJlZExpbmVIZWlnaHQoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBS
ZW1vdmUgaW50ZWdyYWwgZmxvb3Jpbmcgd2hlbiBsZWdhY3kgbGluZSBsYXlvdXQgc3RvcHMgdXNp
bmcgaXQuCiAgICAgaWYgKGlzUHJlZmVycmVkTGluZUhlaWdodEZvbnRNZXRyaWNzQmFzZWQoKSkK
LSAgICAgICAgcmV0dXJuIHByaW1hcnlGb250TWV0cmljcygpLmxpbmVTcGFjaW5nKCk7CisgICAg
ICAgIHJldHVybiBwcmltYXJ5Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkubGluZVNwYWNpbmco
KTsKIAogICAgIGlmIChtX3N0eWxlLmxpbmVIZWlnaHQuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkp
CiAgICAgICAgIHJldHVybiBmbG9vcmYobWluaW11bVZhbHVlRm9yTGVuZ3RoKG1fc3R5bGUubGlu
ZUhlaWdodCwgZm9udFNpemUoKSkpOwpAQCAtMTk1LDcgKzE5NSw3IEBAIGlubGluZSBib29sIElu
bGluZUxldmVsQm94Ojppc1ByZWZlcnJlZExpbmVIZWlnaHRGb250TWV0cmljc0Jhc2VkKCkgY29u
c3QKICAgICByZXR1cm4gbV9zdHlsZS5saW5lSGVpZ2h0LmlzTmVnYXRpdmUoKTsKIH0KIAotaW5s
aW5lIGNvbnN0IEZvbnRNZXRyaWNzJiBJbmxpbmVMZXZlbEJveDo6cHJpbWFyeUZvbnRNZXRyaWNz
KCkgY29uc3QKK2lubGluZSBjb25zdCBGb250TWV0cmljcyYgSW5saW5lTGV2ZWxCb3g6OnByaW1h
cnlmb250TWV0cmljc09mUHJpbWFyeUZvbnQoKSBjb25zdAogewogICAgIHJldHVybiBtX3N0eWxl
LnByaW1hcnlGb250TWV0cmljczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveC5jcHAK
aW5kZXggNmUyMDg2MDEwOWRhZGUxZDQ3ZGZjNjVmYmI4NGIzMzY0Yjc4NTJkNi4uNmQyMzY1Mzdk
YzU2MTNhOTVhMGRjN2Y5MjZlMzM5MjM5NjYwNTU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGluZUJveC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgSW5saW5lUmVjdCBMaW5lQm94Ojpsb2dpY2Fs
UmVjdEZvclRleHRSdW4oY29uc3QgTGluZTo6UnVuJiBydW4pIGNvbnN0CiAgICAgQVNTRVJUKHJ1
bi5pc1RleHQoKSB8fCBydW4uaXNTb2Z0TGluZUJyZWFrKCkpOwogICAgIGF1dG8qIHBhcmVudElu
bGluZUJveCA9ICZpbmxpbmVMZXZlbEJveEZvckxheW91dEJveChydW4ubGF5b3V0Qm94KCkucGFy
ZW50KCkpOwogICAgIEFTU0VSVChwYXJlbnRJbmxpbmVCb3gtPmlzSW5saW5lQm94KCkpOwotICAg
IGF1dG8mIGZvbnRNZXRyaWNzID0gcGFyZW50SW5saW5lQm94LT5wcmltYXJ5Rm9udE1ldHJpY3Mo
KTsKKyAgICBhdXRvJiBmb250TWV0cmljcyA9IHBhcmVudElubGluZUJveC0+cHJpbWFyeWZvbnRN
ZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwogICAgIGF1dG8gcnVubG9naWNhbFRvcCA9IHBhcmVudElu
bGluZUJveC0+bG9naWNhbFRvcCgpICsgcGFyZW50SW5saW5lQm94LT5iYXNlbGluZSgpIC0gZm9u
dE1ldHJpY3MuYXNjZW50KCk7CiAKICAgICB3aGlsZSAocGFyZW50SW5saW5lQm94ICE9ICZtX3Jv
b3RJbmxpbmVCb3ggJiYgIXBhcmVudElubGluZUJveC0+aGFzTGluZUJveFJlbGF0aXZlQWxpZ25t
ZW50KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcApp
bmRleCA5MWYzMGQ1ZWJjYjcyNDFiYThlMTU2YmE3OWY0YzUzNmFkMGVkMzA2Li5kNDU3MGJmZDY4
Zjg4MDc0NTFjMjIyZTNjMWExOGFjMDFjOTUyYjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lTGluZUJveEJ1aWxkZXIuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAgdm9pZCBMaW5lQm94
QnVpbGRlcjo6c2V0VmVydGljYWxHZW9tZXRyeUZvckxpbmVCcmVha0JveChJbmxpbmVMZXZlbEJv
eCYgbGluZUJyZWEKICAgICBBU1NFUlQobGluZUJyZWFrQm94LmlzTGluZUJyZWFrQm94KCkpOwog
ICAgIEFTU0VSVChwYXJlbnRJbmxpbmVCb3guaXNJbmxpbmVCb3goKSk7CiAKLSAgICBhdXRvJiBm
b250TWV0cmljcyA9IHBhcmVudElubGluZUJveC5wcmltYXJ5Rm9udE1ldHJpY3MoKTsKKyAgICBh
dXRvJiBmb250TWV0cmljcyA9IHBhcmVudElubGluZUJveC5wcmltYXJ5Zm9udE1ldHJpY3NPZlBy
aW1hcnlGb250KCk7CiAgICAgYXV0byBwcmVmZXJyZWRMaW5lSGVpZ2h0ID0gcGFyZW50SW5saW5l
Qm94LmlzUHJlZmVycmVkTGluZUhlaWdodEZvbnRNZXRyaWNzQmFzZWQoKSA/IHN0ZDo6bnVsbG9w
dCA6IHN0ZDo6bWFrZV9vcHRpb25hbChwYXJlbnRJbmxpbmVCb3gucHJlZmVycmVkTGluZUhlaWdo
dCgpKTsKICAgICBhdXRvIGhlaWdodEFuZExheW91dEJvdW5kcyA9IGNvbXB1dGVkSGVpZ2h0QW5k
TGF5b3V0Qm91bmRzKGZvbnRNZXRyaWNzLCBwcmVmZXJyZWRMaW5lSGVpZ2h0KTsKIApAQCAtMTk0
LDcgKzE5NCw3IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OnNldEluaXRpYWxWZXJ0aWNhbEdlb21l
dHJ5Rm9ySW5saW5lQm94KElubGluZUxldmVsQm94JiBpbmxpCiAgICAgLy8gV2UgbmVlZCBmbG9v
ci9jZWlsIHRvIG1hdGNoIGxlZ2FjeSBsYXlvdXQgaW50ZWdyYWwgcG9zaXRpb25pbmcuCiAgICAg
QVNTRVJUKGlubGluZUJveC5pc0lubGluZUJveCgpKTsKIAotICAgIGF1dG8mIGZvbnRNZXRyaWNz
ID0gaW5saW5lQm94LnByaW1hcnlGb250TWV0cmljcygpOworICAgIGF1dG8mIGZvbnRNZXRyaWNz
ID0gaW5saW5lQm94LnByaW1hcnlmb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsKICAgICBhdXRv
IHByZWZlcnJlZExpbmVIZWlnaHQgPSBpbmxpbmVCb3guaXNQcmVmZXJyZWRMaW5lSGVpZ2h0Rm9u
dE1ldHJpY3NCYXNlZCgpID8gc3RkOjpudWxsb3B0IDogc3RkOjptYWtlX29wdGlvbmFsKGlubGlu
ZUJveC5wcmVmZXJyZWRMaW5lSGVpZ2h0KCkpOwogICAgIGF1dG8gaGVpZ2h0QW5kTGF5b3V0Qm91
bmRzID0gY29tcHV0ZWRIZWlnaHRBbmRMYXlvdXRCb3VuZHMoZm9udE1ldHJpY3MsIHByZWZlcnJl
ZExpbmVIZWlnaHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94VmVydGljYWxBbGlnbmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVC
b3hWZXJ0aWNhbEFsaWduZXIuY3BwCmluZGV4IDE4MjM1MDg0Y2I5Mzc1MTA1OGE0MzQ5ZGI5ZjYz
OTQ3NWU1OTJjNTIuLjNhNzM1ZmMwYTE0YmJhYzk5MzJmZTBmY2QwZjhiOGQxYzk1YzI1OGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWdu
ZXIuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgSW5saW5lTGF5b3V0VW5pdCBMaW5lQm94VmVydGlj
YWxBbGlnbmVyOjpjb21wdXRlTGluZUJveExvZ2ljYWxIZWlnaHQoTGluZUJveCYgbGkKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6TWlk
ZGxlOiB7Ci0gICAgICAgICAgICBhdXRvIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxp
bmUgPSBpbmxpbmVMZXZlbEJveC5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKSAvIDIgKyBwYXJlbnRJ
bmxpbmVCb3gucHJpbWFyeUZvbnRNZXRyaWNzKCkueEhlaWdodCgpIC8gMjsKKyAgICAgICAgICAg
IGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGlubGluZUxldmVsQm94
LmxheW91dEJvdW5kcygpLmhlaWdodCgpIC8gMiArIHBhcmVudElubGluZUJveC5wcmltYXJ5Zm9u
dE1ldHJpY3NPZlByaW1hcnlGb250KCkueEhlaWdodCgpIC8gMjsKICAgICAgICAgICAgIGxvZ2lj
YWxUb3AgPSBwYXJlbnRJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCkuYXNjZW50IC0gbG9naWNhbFRv
cE9mZnNldEZyb21QYXJlbnRCYXNlbGluZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CkBAIC0yNDIsNyArMjQyLDcgQEAgdm9pZCBMaW5lQm94VmVydGljYWxBbGlnbmVyOjpjb21wdXRl
Um9vdElubGluZUJveFZlcnRpY2FsUG9zaXRpb24oTGluZUJveCYgbGluZUIKICAgICAgICAgICAg
ICAgICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IHsgfTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6TWlkZGxlOiB7Ci0g
ICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0g
KGlubGluZUxldmVsQm94LmxheW91dEJvdW5kcygpLmhlaWdodCgpIC8gMiArIHBhcmVudElubGlu
ZUJveC5wcmltYXJ5Rm9udE1ldHJpY3MoKS54SGVpZ2h0KCkgLyAyKTsKKyAgICAgICAgICAgICAg
ICBhdXRvIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSAoaW5saW5lTGV2ZWxC
b3gubGF5b3V0Qm91bmRzKCkuaGVpZ2h0KCkgLyAyICsgcGFyZW50SW5saW5lQm94LnByaW1hcnlm
b250TWV0cmljc09mUHJpbWFyeUZvbnQoKS54SGVpZ2h0KCkgLyAyKTsKICAgICAgICAgICAgICAg
ICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGxvZ2ljYWxUb3BPZmZzZXRGcm9t
UGFyZW50QmFzZWxpbmUgLSBpbmxpbmVMZXZlbEJveC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQ7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0zMjEsNyArMzIxLDcgQEAg
dm9pZCBMaW5lQm94VmVydGljYWxBbGlnbmVyOjphbGlnbklubGluZUxldmVsQm94ZXMoTGluZUJv
eCYgbGluZUJveCwgSW5saW5lTGF5b3UKICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJ
bmxpbmVCb3guYmFzZWxpbmUoKSAtIGlubGluZUxldmVsQm94LmJhc2VsaW5lKCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpNaWRkbGU6IHsKLSAgICAg
ICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IChpbmxpbmVM
ZXZlbEJveC5sb2dpY2FsSGVpZ2h0KCkgLyAyICsgcGFyZW50SW5saW5lQm94LnByaW1hcnlGb250
TWV0cmljcygpLnhIZWlnaHQoKSAvIDIpOworICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wT2Zm
c2V0RnJvbVBhcmVudEJhc2VsaW5lID0gKGlubGluZUxldmVsQm94LmxvZ2ljYWxIZWlnaHQoKSAv
IDIgKyBwYXJlbnRJbmxpbmVCb3gucHJpbWFyeWZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLnhI
ZWlnaHQoKSAvIDIpOwogICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC5i
YXNlbGluZSgpIC0gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FzY2FkZS5jcHAKaW5kZXggMmE3NjEzNjJjODNmYTY4NWI1MWM2ZWUwNTJjNmIx
MzVjMDI1ZjlhMC4uMTdlZWU1NWNiZWUxMTZkMDIwZDRkNTI3ZWViYzI2MDBjNDcxZjYzNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApA
QCAtMTQxMyw4ICsxNDEzLDggQEAgZmxvYXQgRm9udENhc2NhZGU6OmZsb2F0V2lkdGhGb3JTaW1w
bGVUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgSGFzaFNldDxjb25zdCBGb24KICAgICBpdC5maW5h
bGl6ZShnbHlwaEJ1ZmZlcik7CiAKICAgICBpZiAoZ2x5cGhPdmVyZmxvdykgewotICAgICAgICBn
bHlwaE92ZXJmbG93LT50b3AgPSBzdGQ6Om1heDxpbnQ+KGdseXBoT3ZlcmZsb3ctPnRvcCwgY2Vp
bGYoLWl0Lm1pbkdseXBoQm91bmRpbmdCb3hZKCkpIC0gKGdseXBoT3ZlcmZsb3ctPmNvbXB1dGVC
b3VuZHMgPyAwIDogZm9udE1ldHJpY3MoKS5hc2NlbnQoKSkpOwotICAgICAgICBnbHlwaE92ZXJm
bG93LT5ib3R0b20gPSBzdGQ6Om1heDxpbnQ+KGdseXBoT3ZlcmZsb3ctPmJvdHRvbSwgY2VpbGYo
aXQubWF4R2x5cGhCb3VuZGluZ0JveFkoKSkgLSAoZ2x5cGhPdmVyZmxvdy0+Y29tcHV0ZUJvdW5k
cyA/IDAgOiBmb250TWV0cmljcygpLmRlc2NlbnQoKSkpOworICAgICAgICBnbHlwaE92ZXJmbG93
LT50b3AgPSBzdGQ6Om1heDxpbnQ+KGdseXBoT3ZlcmZsb3ctPnRvcCwgY2VpbGYoLWl0Lm1pbkds
eXBoQm91bmRpbmdCb3hZKCkpIC0gKGdseXBoT3ZlcmZsb3ctPmNvbXB1dGVCb3VuZHMgPyAwIDog
Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50KCkpKTsKKyAgICAgICAgZ2x5cGhPdmVy
Zmxvdy0+Ym90dG9tID0gc3RkOjptYXg8aW50PihnbHlwaE92ZXJmbG93LT5ib3R0b20sIGNlaWxm
KGl0Lm1heEdseXBoQm91bmRpbmdCb3hZKCkpIC0gKGdseXBoT3ZlcmZsb3ctPmNvbXB1dGVCb3Vu
ZHMgPyAwIDogZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuZGVzY2VudCgpKSk7CiAgICAgICAg
IGdseXBoT3ZlcmZsb3ctPmxlZnQgPSBjZWlsZihpdC5maXJzdEdseXBoT3ZlcmZsb3coKSk7CiAg
ICAgICAgIGdseXBoT3ZlcmZsb3ctPnJpZ2h0ID0gY2VpbGYoaXQubGFzdEdseXBoT3ZlcmZsb3co
KSk7CiAgICAgfQpAQCAtMTQyNiw4ICsxNDI2LDggQEAgZmxvYXQgRm9udENhc2NhZGU6OmZsb2F0
V2lkdGhGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIEhhc2hTZXQ8Y29uc3QgRm8K
IHsKICAgICBDb21wbGV4VGV4dENvbnRyb2xsZXIgY29udHJvbGxlcigqdGhpcywgcnVuLCB0cnVl
LCBmYWxsYmFja0ZvbnRzKTsKICAgICBpZiAoZ2x5cGhPdmVyZmxvdykgewotICAgICAgICBnbHlw
aE92ZXJmbG93LT50b3AgPSBzdGQ6Om1heDxpbnQ+KGdseXBoT3ZlcmZsb3ctPnRvcCwgY2VpbGYo
LWNvbnRyb2xsZXIubWluR2x5cGhCb3VuZGluZ0JveFkoKSkgLSAoZ2x5cGhPdmVyZmxvdy0+Y29t
cHV0ZUJvdW5kcyA/IDAgOiBmb250TWV0cmljcygpLmFzY2VudCgpKSk7Ci0gICAgICAgIGdseXBo
T3ZlcmZsb3ctPmJvdHRvbSA9IHN0ZDo6bWF4PGludD4oZ2x5cGhPdmVyZmxvdy0+Ym90dG9tLCBj
ZWlsZihjb250cm9sbGVyLm1heEdseXBoQm91bmRpbmdCb3hZKCkpIC0gKGdseXBoT3ZlcmZsb3ct
PmNvbXB1dGVCb3VuZHMgPyAwIDogZm9udE1ldHJpY3MoKS5kZXNjZW50KCkpKTsKKyAgICAgICAg
Z2x5cGhPdmVyZmxvdy0+dG9wID0gc3RkOjptYXg8aW50PihnbHlwaE92ZXJmbG93LT50b3AsIGNl
aWxmKC1jb250cm9sbGVyLm1pbkdseXBoQm91bmRpbmdCb3hZKCkpIC0gKGdseXBoT3ZlcmZsb3ct
PmNvbXB1dGVCb3VuZHMgPyAwIDogZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50KCkp
KTsKKyAgICAgICAgZ2x5cGhPdmVyZmxvdy0+Ym90dG9tID0gc3RkOjptYXg8aW50PihnbHlwaE92
ZXJmbG93LT5ib3R0b20sIGNlaWxmKGNvbnRyb2xsZXIubWF4R2x5cGhCb3VuZGluZ0JveFkoKSkg
LSAoZ2x5cGhPdmVyZmxvdy0+Y29tcHV0ZUJvdW5kcyA/IDAgOiBmb250TWV0cmljc09mUHJpbWFy
eUZvbnQoKS5kZXNjZW50KCkpKTsKICAgICAgICAgZ2x5cGhPdmVyZmxvdy0+bGVmdCA9IHN0ZDo6
bWF4PGludD4oMCwgY2VpbGYoLWNvbnRyb2xsZXIubWluR2x5cGhCb3VuZGluZ0JveFgoKSkpOwog
ICAgICAgICBnbHlwaE92ZXJmbG93LT5yaWdodCA9IHN0ZDo6bWF4PGludD4oMCwgY2VpbGYoY29u
dHJvbGxlci5tYXhHbHlwaEJvdW5kaW5nQm94WCgpIC0gY29udHJvbGxlci50b3RhbEFkdmFuY2Uo
KS53aWR0aCgpKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhc2NhZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYXNjYWRlLmgKaW5kZXggYmFiZTk2Njg0ZTdjMTVjYjljYTk2OTNiYTM1NjBhOGFhM2Qy
Yzk2Yy4uNmM2MzcyMTZiZmQ0MDQ5NjNhNzExZjE2OWY5MTliMTVkZTYwYjZiZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCkBAIC0xNjMsNyAr
MTYzLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1BsYXRmb3JtRm9udCgpIGNvbnN0IHsgcmV0
dXJuIG1fZm9udHMtPmlzRm9yUGxhdGZvcm1Gb250KCk7IH0KIAotICAgIGNvbnN0IEZvbnRNZXRy
aWNzJiBmb250TWV0cmljcygpIGNvbnN0IHsgcmV0dXJuIHByaW1hcnlGb250KCkuZm9udE1ldHJp
Y3MoKTsgfQorICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljc09mUHJpbWFyeUZvbnQo
KSBjb25zdCB7IHJldHVybiBwcmltYXJ5Rm9udCgpLmZvbnRNZXRyaWNzKCk7IH0KICAgICBmbG9h
dCBzcGFjZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gcHJpbWFyeUZvbnQoKS5zcGFjZVdpZHRoKCkg
KyBtX2xldHRlclNwYWNpbmc7IH0KICAgICBmbG9hdCB0YWJXaWR0aChjb25zdCBGb250JiwgY29u
c3QgVGFiU2l6ZSYsIGZsb2F0KSBjb25zdDsKICAgICBmbG9hdCB0YWJXaWR0aChjb25zdCBUYWJT
aXplJiB0YWJTaXplLCBmbG9hdCBwb3NpdGlvbikgY29uc3QgeyByZXR1cm4gdGFiV2lkdGgocHJp
bWFyeUZvbnQoKSwgdGFiU2l6ZSwgcG9zaXRpb24pOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwCmluZGV4IGVjZTUwYTgyMzM5ZjBmZjIwNDkzNGE4OTI2
ZDJkODA3NGMwZGUwZDIuLjNiMTg4YmQ3YTFiOTIwNDVjZTIyOTcxMmVmOTAxYzllZjFhNTU5MTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwCkBAIC0x
NTMsNyArMTUzLDcgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoRWxlbWVu
dCYsIFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGluTGFiZWwsIFQKICAgICAvLyBGaXJzdCBzdGVw
IGluIGRyYXdpbmcgdGhlIGxpbmsgZHJhZyBpbWFnZSB3aWR0aC4KICAgICBUZXh0UnVuIGxhYmVs
UnVuKGxhYmVsKTsKICAgICBUZXh0UnVuIHVybFJ1bih1cmxTdHJpbmcpOwotICAgIEludFNpemUg
bGFiZWxTaXplKGxhYmVsRm9udC0+d2lkdGgobGFiZWxSdW4pLCBsYWJlbEZvbnQtPmZvbnRNZXRy
aWNzKCkuYXNjZW50KCkgKyBsYWJlbEZvbnQtPmZvbnRNZXRyaWNzKCkuZGVzY2VudCgpKTsKKyAg
ICBJbnRTaXplIGxhYmVsU2l6ZShsYWJlbEZvbnQtPndpZHRoKGxhYmVsUnVuKSwgbGFiZWxGb250
LT5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoKSArIGxhYmVsRm9udC0+Zm9udE1l
dHJpY3NPZlByaW1hcnlGb250KCkuZGVzY2VudCgpKTsKIAogICAgIGlmIChsYWJlbFNpemUud2lk
dGgoKSA+IE1heERyYWdMYWJlbFN0cmluZ1dpZHRoKSB7CiAgICAgICAgIGxhYmVsU2l6ZS5zZXRX
aWR0aChNYXhEcmFnTGFiZWxTdHJpbmdXaWR0aCk7CkBAIC0xNjUsNyArMTY1LDcgQEAgRHJhZ0lt
YWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoRWxlbWVudCYsIFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIGluTGFiZWwsIFQKIAogICAgIGlmIChkcmF3VVJMU3RyaW5nKSB7CiAgICAgICAgIHVy
bFN0cmluZ1NpemUuc2V0V2lkdGgodXJsRm9udC0+d2lkdGgodXJsUnVuKSk7Ci0gICAgICAgIHVy
bFN0cmluZ1NpemUuc2V0SGVpZ2h0KHVybEZvbnQtPmZvbnRNZXRyaWNzKCkuYXNjZW50KCkgKyB1
cmxGb250LT5mb250TWV0cmljcygpLmRlc2NlbnQoKSk7IAorICAgICAgICB1cmxTdHJpbmdTaXpl
LnNldEhlaWdodCh1cmxGb250LT5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoKSAr
IHVybEZvbnQtPmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmRlc2NlbnQoKSk7IAogICAgICAg
ICBpbWFnZVNpemUuc2V0SGVpZ2h0KGltYWdlU2l6ZS5oZWlnaHQoKSArIHVybFN0cmluZ1NpemUu
aGVpZ2h0KCkpOwogICAgICAgICBpZiAodXJsU3RyaW5nU2l6ZS53aWR0aCgpID4gTWF4RHJhZ0xh
YmVsU3RyaW5nV2lkdGgpIHsKICAgICAgICAgICAgIGltYWdlU2l6ZS5zZXRXaWR0aChNYXhEcmFn
TGFiZWxXaWR0aCk7CkBAIC0yMDEsNyArMjAxLDcgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJ
bWFnZUZvckxpbmsoRWxlbWVudCYsIFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGluTGFiZWwsIFQK
ICAgICBpZiAoZHJhd1VSTFN0cmluZykgewogICAgICAgICBpZiAoY2xpcFVSTFN0cmluZykKICAg
ICAgICAgICAgIHVybFN0cmluZyA9IFN0cmluZ1RydW5jYXRvcjo6cmlnaHRUcnVuY2F0ZSh1cmxT
dHJpbmcsIGltYWdlU2l6ZS53aWR0aCgpIC0gKERyYWdMYWJlbEJvcmRlclggKiAyLjBmKSwgKnVy
bEZvbnQpOwotICAgICAgICBJbnRQb2ludCB0ZXh0UG9zKERyYWdMYWJlbEJvcmRlclgsIGltYWdl
U2l6ZS5oZWlnaHQoKSAtIChMYWJlbEJvcmRlcllPZmZzZXQgKyB1cmxGb250LT5mb250TWV0cmlj
cygpLmRlc2NlbnQoKSkpOworICAgICAgICBJbnRQb2ludCB0ZXh0UG9zKERyYWdMYWJlbEJvcmRl
clgsIGltYWdlU2l6ZS5oZWlnaHQoKSAtIChMYWJlbEJvcmRlcllPZmZzZXQgKyB1cmxGb250LT5m
b250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5kZXNjZW50KCkpKTsKICAgICAgICAgV2ViQ29yZURy
YXdEb3VibGVkVGV4dEF0UG9pbnQoY29udGV4dCwgdXJsU3RyaW5nLCB0ZXh0UG9zLCAqdXJsRm9u
dCwgdG9wQ29sb3IsIGJvdHRvbUNvbG9yKTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCmluZGV4IGE4OTk5YmRlMWMzNjljYTU3N2Iz
NDMxNWMyNmFmNDY5YTMwNjNkNjcuLmEwMThiYzNkYmM0N2U0ZThkMjVjYzg0ZjZkYjVhYjYzZTJi
N2M5ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3Bw
CkBAIC0zMzAsNyArMzMwLDcgQEAgdm9pZCBQb3B1cE1lbnVXaW46OmNhbGN1bGF0ZVBvc2l0aW9u
QW5kU2l6ZShjb25zdCBJbnRSZWN0JiByLCBGcmFtZVZpZXcqIHYpCiAKICAgICAvLyBGaXJzdCwg
ZGV0ZXJtaW5lIHRoZSBwb3B1cCdzIGhlaWdodAogICAgIGludCBpdGVtQ291bnQgPSBjbGllbnQo
KS0+bGlzdFNpemUoKTsKLSAgICBtX2l0ZW1IZWlnaHQgPSBtX2ZvbnQuZm9udE1ldHJpY3MoKS5o
ZWlnaHQoKSArIG9wdGlvblNwYWNpbmdNaWRkbGU7CisgICAgbV9pdGVtSGVpZ2h0ID0gbV9mb250
LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmhlaWdodCgpICsgb3B0aW9uU3BhY2luZ01pZGRs
ZTsKIAogICAgIGludCBuYXR1cmFsSGVpZ2h0ID0gbV9pdGVtSGVpZ2h0ICogaXRlbUNvdW50Owog
ICAgIGludCBwb3B1cEhlaWdodCA9IHN0ZDo6bWluKG1heFBvcHVwSGVpZ2h0LCBuYXR1cmFsSGVp
Z2h0KTsKQEAgLTY2OCw3ICs2NjgsNyBAQCB2b2lkIFBvcHVwTWVudVdpbjo6cGFpbnQoY29uc3Qg
SW50UmVjdCYgZGFtYWdlUmVjdCwgSERDIGhkYykKICAgICAgICAgICAgICAgICBpZiAoUmVuZGVy
VGhlbWU6OnNpbmdsZXRvbigpLnBvcHVwT3B0aW9uU3VwcG9ydHNUZXh0SW5kZW50KCkpCiAgICAg
ICAgICAgICAgICAgICAgIHRleHRYIC09IG1pbmltdW1JbnRWYWx1ZUZvckxlbmd0aChpdGVtU3R5
bGUudGV4dEluZGVudCgpLCBpdGVtUmVjdC53aWR0aCgpKTsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGludCB0ZXh0WSA9IGl0ZW1SZWN0LnkoKSArIGl0ZW1Gb250LmZvbnRNZXRyaWNzKCku
YXNjZW50KCkgKyAoaXRlbVJlY3QuaGVpZ2h0KCkgLSBpdGVtRm9udC5mb250TWV0cmljcygpLmhl
aWdodCgpKSAvIDI7CisgICAgICAgICAgICBpbnQgdGV4dFkgPSBpdGVtUmVjdC55KCkgKyBpdGVt
Rm9udC5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoKSArIChpdGVtUmVjdC5oZWln
aHQoKSAtIGl0ZW1Gb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmhlaWdodCgpKSAvIDI7
CiAgICAgICAgICAgICBjb250ZXh0LmRyYXdCaWRpVGV4dChpdGVtRm9udCwgdGV4dFJ1biwgSW50
UG9pbnQodGV4dFgsIHRleHRZKSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2FyZXRSZWN0Q29tcHV0YXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0NhcmV0UmVjdENvbXB1dGF0aW9uLmNwcAppbmRleCBjZTdmNTQyZGQ5
N2I4NTM4NjFlMjNhY2Y4MWY4OWY4ZDIxNjc5NzA1Li45YTg2ZmYzMDI4ODg4NjQyNmRmZjljNzRl
NjI2NDViNTQ4ZWVhNmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2Fy
ZXRSZWN0Q29tcHV0YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DYXJl
dFJlY3RDb21wdXRhdGlvbi5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgc3RhdGljIExheW91dFJlY3Qg
Y29tcHV0ZUNhcmV0UmVjdEZvckVtcHR5RWxlbWVudChjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVj
dCYgcmUKICAgICB4ID0gc3RkOjptaW4oeCwgc3RkOjptYXg8TGF5b3V0VW5pdD4obWF4WCAtIGNh
cmV0V2lkdGgsIDApKTsKIAogICAgIGF1dG8gbGluZUhlaWdodCA9IHJlbmRlcmVyLmxpbmVIZWln
aHQodHJ1ZSwgY3VycmVudFN0eWxlLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9u
dGFsTGluZSA6IFZlcnRpY2FsTGluZSwgUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKTsKLSAg
ICBhdXRvIGhlaWdodCA9IHN0ZDo6bWluKGxpbmVIZWlnaHQsIExheW91dFVuaXQgeyBjdXJyZW50
U3R5bGUuZm9udE1ldHJpY3MoKS5oZWlnaHQoKSB9KTsKKyAgICBhdXRvIGhlaWdodCA9IHN0ZDo6
bWluKGxpbmVIZWlnaHQsIExheW91dFVuaXQgeyBjdXJyZW50U3R5bGUuZm9udE1ldHJpY3NPZlBy
aW1hcnlGb250KCkuaGVpZ2h0KCkgfSk7CiAgICAgYXV0byB5ID0gcmVuZGVyZXIucGFkZGluZ1Rv
cCgpICsgcmVuZGVyZXIuYm9yZGVyVG9wKCkgKyAobGluZUhlaWdodCA+IGhlaWdodCA/IChsaW5l
SGVpZ2h0IC0gaGVpZ2h0KSAvIDIgOiBMYXlvdXRVbml0IHsgfSk7CiAKICAgICBhdXRvIHJlY3Qg
PSBMYXlvdXRSZWN0KHgsIHksIGNhcmV0V2lkdGgsIGhlaWdodCk7CkBAIC0yNDEsNyArMjQxLDcg
QEAgc3RhdGljIExheW91dFJlY3QgY29tcHV0ZUNhcmV0UmVjdEZvckJveChjb25zdCBSZW5kZXJC
b3gmIHJlbmRlcmVyLCBjb25zdCBJbmxpbmUKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vMzc3Nzgw
ND4gRGVsZXRpbmcgYWxsIGNvbnRlbnQgaW4gYSBkb2N1bWVudCBjYW4gcmVzdWx0IGluIGdpYW50
IHRhbGwtYXMtd2luZG93IGluc2VydGlvbiBwb2ludAogICAgIC8vCiAgICAgLy8gRklYTUU6IGln
bm9yaW5nIDpmaXJzdC1saW5lLCBtaXNzaW5nIGdvb2QgcmVhc29uIHRvIHRha2UgY2FyZSBvZgot
ICAgIExheW91dFVuaXQgZm9udEhlaWdodCA9IHJlbmRlcmVyLnN0eWxlKCkuZm9udE1ldHJpY3Mo
KS5oZWlnaHQoKTsKKyAgICBMYXlvdXRVbml0IGZvbnRIZWlnaHQgPSByZW5kZXJlci5zdHlsZSgp
LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmhlaWdodCgpOwogICAgIGlmIChmb250SGVpZ2h0
ID4gcmVjdC5oZWlnaHQoKSB8fCAoIXJlbmRlcmVyLmlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkg
JiYgIXJlbmRlcmVyLmlzVGFibGUoKSkpCiAgICAgICAgIHJlY3Quc2V0SGVpZ2h0KGZvbnRIZWln
aHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5RWxsaXBz
aXNCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUVsbGlwc2lzQm94LmNw
cAppbmRleCA0NmRjZDQ2ZmY3ZGUyOTg2NmI0OTk4ZTNmYzZjNzUwNjlkYmVlYjQ3Li5lOTcxNjgw
NTcwNzBjY2Q0ZjI4NmEwYThiMGVkNDQ2YTJlMTViYjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvTGVnYWN5RWxsaXBzaXNCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9MZWdhY3lFbGxpcHNpc0JveC5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBM
ZWdhY3lFbGxpcHNpc0JveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50JiBwYWludE9mZnMKICAgICB9CiAKICAgICAvLyBGSVhNRTogV2h5IGlzIHRoaXMgYWx3
YXlzIExUUj8gRml4IGJ5IHBhc3NpbmcgY29ycmVjdCB0ZXh0IHJ1biBmbGFncyBiZWxvdy4KLSAg
ICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKG1f
c3RyLCBsaW5lU3R5bGUsIEFsbG93UmlnaHRFeHBhbnNpb24pLCBMYXlvdXRQb2ludCh4KCkgKyBw
YWludE9mZnNldC54KCksIHkoKSArIHBhaW50T2Zmc2V0LnkoKSArIGxpbmVTdHlsZS5mb250TWV0
cmljcygpLmFzY2VudCgpKSk7CisgICAgY29udGV4dC5kcmF3VGV4dChmb250LCBSZW5kZXJCbG9j
azo6Y29uc3RydWN0VGV4dFJ1bihtX3N0ciwgbGluZVN0eWxlLCBBbGxvd1JpZ2h0RXhwYW5zaW9u
KSwgTGF5b3V0UG9pbnQoeCgpICsgcGFpbnRPZmZzZXQueCgpLCB5KCkgKyBwYWludE9mZnNldC55
KCkgKyBsaW5lU3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50KCkpKTsKIAog
ICAgIC8vIFJlc3RvcmUgdGhlIHJlZ3VsYXIgZmlsbCBjb2xvci4KICAgICBpZiAodGV4dENvbG9y
ICE9IGNvbnRleHQuZmlsbENvbG9yKCkpCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBMZWdhY3lF
bGxpcHNpc0JveDo6cGFpbnRNYXJrdXBCb3goUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JgogCiAgICAgTGF5b3V0UG9pbnQgYWRqdXN0ZWRQYWludE9mZnNldCA9IHBhaW50
T2Zmc2V0OwogICAgIGFkanVzdGVkUGFpbnRPZmZzZXQubW92ZSh4KCkgKyBsb2dpY2FsV2lkdGgo
KSAtIG1hcmt1cEJveC0+eCgpLAotICAgICAgICB5KCkgKyBzdHlsZS5mb250TWV0cmljcygpLmFz
Y2VudCgpIC0gKG1hcmt1cEJveC0+eSgpICsgbWFya3VwQm94LT5saW5lU3R5bGUoKS5mb250TWV0
cmljcygpLmFzY2VudCgpKSk7CisgICAgICAgIHkoKSArIHN0eWxlLmZvbnRNZXRyaWNzT2ZQcmlt
YXJ5Rm9udCgpLmFzY2VudCgpIC0gKG1hcmt1cEJveC0+eSgpICsgbWFya3VwQm94LT5saW5lU3R5
bGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoKSkpOwogICAgIG1hcmt1cEJv
eC0+cGFpbnQocGFpbnRJbmZvLCBhZGp1c3RlZFBhaW50T2Zmc2V0LCBsaW5lVG9wLCBsaW5lQm90
dG9tKTsKIH0KIApAQCAtMTUzLDcgKzE1Myw3IEBAIGJvb2wgTGVnYWN5RWxsaXBzaXNCb3g6Om5v
ZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0CiAg
ICAgaWYgKExlZ2FjeUlubGluZUJveCogbWFya3VwQm94ID0gdGhpcy0+bWFya3VwQm94KCkpIHsK
ICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIGxpbmVTdHlsZSA9IHRoaXMtPmxpbmVTdHlsZSgp
OwogICAgICAgICBMYXlvdXRVbml0IG10eCB7IGFkanVzdGVkTG9jYXRpb24ueCgpICsgbG9naWNh
bFdpZHRoKCkgLSBtYXJrdXBCb3gtPngoKSB9OwotICAgICAgICBMYXlvdXRVbml0IG10eSB7IGFk
anVzdGVkTG9jYXRpb24ueSgpICsgbGluZVN0eWxlLmZvbnRNZXRyaWNzKCkuYXNjZW50KCkgLSAo
bWFya3VwQm94LT55KCkgKyBtYXJrdXBCb3gtPmxpbmVTdHlsZSgpLmZvbnRNZXRyaWNzKCkuYXNj
ZW50KCkpIH07CisgICAgICAgIExheW91dFVuaXQgbXR5IHsgYWRqdXN0ZWRMb2NhdGlvbi55KCkg
KyBsaW5lU3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50KCkgLSAobWFya3Vw
Qm94LT55KCkgKyBtYXJrdXBCb3gtPmxpbmVTdHlsZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9u
dCgpLmFzY2VudCgpKSB9OwogICAgICAgICBpZiAobWFya3VwQm94LT5ub2RlQXRQb2ludChyZXF1
ZXN0LCByZXN1bHQsIGxvY2F0aW9uSW5Db250YWluZXIsIExheW91dFBvaW50KG10eCwgbXR5KSwg
bGluZVRvcCwgbGluZUJvdHRvbSwgaGl0VGVzdEFjdGlvbikpIHsKICAgICAgICAgICAgIGJsb2Nr
RmxvdygpLnVwZGF0ZUhpdFRlc3RSZXN1bHQocmVzdWx0LCBsb2NhdGlvbkluQ29udGFpbmVyLnBv
aW50KCkgLSBMYXlvdXRTaXplKG10eCwgbXR5KSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVCb3guY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUJveC5jcHAKaW5kZXggODZm
NDFlZjdmYjA1NmNjZDYxNWU1NzcxYTA4M2MyZDk4OGMwZjEwYy4uZmFmZWEzNjY5MzFlNmU5Mjkz
Yzk1OTY0MWU3MmNiOTU3Y2RlODAyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0xlZ2FjeUlubGluZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xl
Z2FjeUlubGluZUJveC5jcHAKQEAgLTEzNiwxMyArMTM2LDEzIEBAIGZsb2F0IExlZ2FjeUlubGlu
ZUJveDo6bG9naWNhbEhlaWdodCgpIGNvbnN0CiAKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgbGlu
ZVN0eWxlID0gdGhpcy0+bGluZVN0eWxlKCk7CiAgICAgaWYgKHJlbmRlcmVyKCkuaXNUZXh0T3JM
aW5lQnJlYWsoKSkKLSAgICAgICAgcmV0dXJuIGxpbmVTdHlsZS5mb250TWV0cmljcygpLmhlaWdo
dCgpOworICAgICAgICByZXR1cm4gbGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgp
LmhlaWdodCgpOwogICAgIGlmIChpczxSZW5kZXJCb3g+KHJlbmRlcmVyKCkpICYmIHBhcmVudCgp
KQogICAgICAgICByZXR1cm4gaXNIb3Jpem9udGFsKCkgPyBkb3duY2FzdDxSZW5kZXJCb3g+KHJl
bmRlcmVyKCkpLmhlaWdodCgpIDogZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJlcigpKS53aWR0
aCgpOwogCiAgICAgQVNTRVJUKGlzSW5saW5lRmxvd0JveCgpKTsKICAgICBSZW5kZXJCb3hNb2Rl
bE9iamVjdCogZmxvd09iamVjdCA9IGJveE1vZGVsT2JqZWN0KCk7Ci0gICAgY29uc3QgRm9udE1l
dHJpY3MmIGZvbnRNZXRyaWNzID0gbGluZVN0eWxlLmZvbnRNZXRyaWNzKCk7CisgICAgY29uc3Qg
Rm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gbGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5
Rm9udCgpOwogICAgIGZsb2F0IHJlc3VsdCA9IGZvbnRNZXRyaWNzLmhlaWdodCgpOwogICAgIGlm
IChwYXJlbnQoKSkKICAgICAgICAgcmVzdWx0ICs9IGZsb3dPYmplY3QtPmJvcmRlckFuZFBhZGRp
bmdMb2dpY2FsSGVpZ2h0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
TGVnYWN5SW5saW5lRmxvd0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5
SW5saW5lRmxvd0JveC5jcHAKaW5kZXggODA1NzUyYjI5MmE2NTkwOTllNWYwZDdlZGM4NDk0ZWFi
MGFjMjU0MS4uNjdlYzg4YzVlMWZkYzg0ZDIzNWU2Zjc1OWY4YmJlNDI1NGJlNTMzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUZsb3dCb3guY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVGbG93Qm94LmNwcApAQCAt
MTI4LDcgKzEyOCw3IEBAIHZvaWQgTGVnYWN5SW5saW5lRmxvd0JveDo6YWRkVG9MaW5lKExlZ2Fj
eUlubGluZUJveCogY2hpbGQpCiAgICAgICAgICAgICBzaG91bGRDbGVhckRlc2NlbmRhbnRzSGF2
ZVNhbWVMaW5lSGVpZ2h0QW5kQmFzZWxpbmUgPSB0cnVlOwogICAgICAgICBlbHNlIGlmIChjaGls
ZC0+YmVoYXZlc0xpa2VUZXh0KCkpIHsKICAgICAgICAgICAgIGlmIChjaGlsZC0+cmVuZGVyZXIo
KS5pc0xpbmVCcmVhaygpIHx8IGNoaWxkLT5yZW5kZXJlcigpLnBhcmVudCgpICE9ICZyZW5kZXJl
cigpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFwYXJlbnRTdHlsZS5mb250Q2FzY2FkZSgpLmZv
bnRNZXRyaWNzKCkuaGFzSWRlbnRpY2FsQXNjZW50RGVzY2VudEFuZExpbmVHYXAoY2hpbGRTdHls
ZS5mb250Q2FzY2FkZSgpLmZvbnRNZXRyaWNzKCkpCisgICAgICAgICAgICAgICAgaWYgKCFwYXJl
bnRTdHlsZS5mb250Q2FzY2FkZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmhhc0lkZW50
aWNhbEFzY2VudERlc2NlbnRBbmRMaW5lR2FwKGNoaWxkU3R5bGUuZm9udENhc2NhZGUoKS5mb250
TWV0cmljc09mUHJpbWFyeUZvbnQoKSkKICAgICAgICAgICAgICAgICAgICAgfHwgcGFyZW50U3R5
bGUubGluZUhlaWdodCgpICE9IGNoaWxkU3R5bGUubGluZUhlaWdodCgpCiAgICAgICAgICAgICAg
ICAgICAgIHx8IChwYXJlbnRTdHlsZS52ZXJ0aWNhbEFsaWduKCkgIT0gVmVydGljYWxBbGlnbjo6
QmFzZWxpbmUgJiYgIWlzUm9vdElubGluZUJveCgpKSB8fCBjaGlsZFN0eWxlLnZlcnRpY2FsQWxp
Z24oKSAhPSBWZXJ0aWNhbEFsaWduOjpCYXNlbGluZSkKICAgICAgICAgICAgICAgICAgICAgc2hv
dWxkQ2xlYXJEZXNjZW5kYW50c0hhdmVTYW1lTGluZUhlaWdodEFuZEJhc2VsaW5lID0gdHJ1ZTsK
QEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIExlZ2FjeUlubGluZUZsb3dCb3g6OmFkZFRvTGluZShM
ZWdhY3lJbmxpbmVCb3gqIGNoaWxkKQogICAgICAgICAgICAgICAgIGF1dG8mIGNoaWxkRmxvd0Jv
eCA9IGRvd25jYXN0PExlZ2FjeUlubGluZUZsb3dCb3g+KCpjaGlsZCk7CiAgICAgICAgICAgICAg
ICAgLy8gQ2hlY2sgdGhlIGNoaWxkJ3MgYml0LCBhbmQgdGhlbiBhbHNvIGNoZWNrIGZvciBkaWZm
ZXJlbmNlcyBpbiBmb250LCBsaW5lLWhlaWdodCwgdmVydGljYWwtYWxpZ24KICAgICAgICAgICAg
ICAgICBpZiAoIWNoaWxkRmxvd0JveC5kZXNjZW5kYW50c0hhdmVTYW1lTGluZUhlaWdodEFuZEJh
c2VsaW5lKCkKLSAgICAgICAgICAgICAgICAgICAgfHwgIXBhcmVudFN0eWxlLmZvbnRDYXNjYWRl
KCkuZm9udE1ldHJpY3MoKS5oYXNJZGVudGljYWxBc2NlbnREZXNjZW50QW5kTGluZUdhcChjaGls
ZFN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKSkKKyAgICAgICAgICAgICAgICAgICAg
fHwgIXBhcmVudFN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCku
aGFzSWRlbnRpY2FsQXNjZW50RGVzY2VudEFuZExpbmVHYXAoY2hpbGRTdHlsZS5mb250Q2FzY2Fk
ZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpKQogICAgICAgICAgICAgICAgICAgICB8fCBw
YXJlbnRTdHlsZS5saW5lSGVpZ2h0KCkgIT0gY2hpbGRTdHlsZS5saW5lSGVpZ2h0KCkKICAgICAg
ICAgICAgICAgICAgICAgfHwgKHBhcmVudFN0eWxlLnZlcnRpY2FsQWxpZ24oKSAhPSBWZXJ0aWNh
bEFsaWduOjpCYXNlbGluZSAmJiAhaXNSb290SW5saW5lQm94KCkpIHx8IGNoaWxkU3R5bGUudmVy
dGljYWxBbGlnbigpICE9IFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lCiAgICAgICAgICAgICAgICAg
ICAgIHx8IGNoaWxkU3R5bGUuaGFzQm9yZGVyKCkgfHwgY2hpbGRTdHlsZS5oYXNQYWRkaW5nKCkg
fHwgY2hpbGRTdHlsZS5oYXNUZXh0Q29tYmluZSgpKQpAQCAtNjg5LDcgKzY4OSw3IEBAIHN0YXRp
YyB2b2lkIHBsYWNlQ2hpbGRJbmxpbmVCb3hlc0luQmxvY2tEaXJlY3Rpb24oTGVnYWN5SW5saW5l
Rmxvd0JveCYgaW5saW5lQm94CiAKICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIGNoaWxkTGlu
ZVN0eWxlID0gY2hpbGQtPmxpbmVTdHlsZSgpOwogICAgICAgICBpZiAoY2hpbGQtPmJlaGF2ZXNM
aWtlVGV4dCgpIHx8IGlzPExlZ2FjeUlubGluZUZsb3dCb3g+KCpjaGlsZCkpIHsKLSAgICAgICAg
ICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IGNoaWxkTGluZVN0eWxlLmZvbnRN
ZXRyaWNzKCk7CisgICAgICAgICAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MgPSBj
aGlsZExpbmVTdHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsKICAgICAgICAgICAgIG5l
d0xvZ2ljYWxUb3AgKz0gY2hpbGQtPmJhc2VsaW5lUG9zaXRpb24oYmFzZWxpbmVUeXBlKSAtIGZv
bnRNZXRyaWNzLmFzY2VudChiYXNlbGluZVR5cGUpOwogICAgICAgICAgICAgaWYgKGlzPExlZ2Fj
eUlubGluZUZsb3dCb3g+KCpjaGlsZCkpIHsKICAgICAgICAgICAgICAgICBSZW5kZXJCb3hNb2Rl
bE9iamVjdCYgYm94T2JqZWN0ID0gZG93bmNhc3Q8TGVnYWN5SW5saW5lRmxvd0JveD4oKmNoaWxk
KS5yZW5kZXJlcigpOwpAQCAtNzYzLDcgKzc2Myw3IEBAIHZvaWQgTGVnYWN5SW5saW5lRmxvd0Jv
eDo6cGxhY2VCb3hlc0luQmxvY2tEaXJlY3Rpb24oTGF5b3V0VW5pdCB0b3AsIExheW91dFVuaXQK
IHsKICAgICBib29sIGlzUm9vdEJveCA9IGlzUm9vdElubGluZUJveCgpOwogICAgIGlmIChpc1Jv
b3RCb3gpCi0gICAgICAgIHNldExvZ2ljYWxUb3AodG9wICsgbWF4QXNjZW50IC0gbGluZVN0eWxl
KCkuZm9udE1ldHJpY3MoKS5hc2NlbnQoYmFzZWxpbmVUeXBlKSk7CisgICAgICAgIHNldExvZ2lj
YWxUb3AodG9wICsgbWF4QXNjZW50IC0gbGluZVN0eWxlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlG
b250KCkuYXNjZW50KGJhc2VsaW5lVHlwZSkpOwogCiAgICAgcGxhY2VDaGlsZElubGluZUJveGVz
SW5CbG9ja0RpcmVjdGlvbigqdGhpcywgdG9wLCBtYXhIZWlnaHQsIG1heEFzY2VudCwgc3RyaWN0
TW9kZSwgbGluZVRvcCwgbGluZUJvdHRvbSwgc2V0TGluZVRvcCwgbGluZVRvcEluY2x1ZGluZ01h
cmdpbnMsIGxpbmVCb3R0b21JbmNsdWRpbmdNYXJnaW5zLCBoYXNBbm5vdGF0aW9uc0JlZm9yZSwg
aGFzQW5ub3RhdGlvbnNBZnRlciwgYmFzZWxpbmVUeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlvdXQuY3BwCmluZGV4IDg3ZDBjYmFkZGI0ZmQ1NTM2Y2Zj
YTMyNGE1ODcyMWJhZjBmYmM4N2UuLmQ4N2UzZDU5Y2IxYThmMWQyMjNlYmJhOTg1YTFiODkyODZk
ZTQxNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lMaW5lTGF5
b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5j
cHAKQEAgLTQ3OCwxMCArNDc4LDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRMb2dpY2FsV2lk
dGhGb3JUZXh0UnVuKExlZ2FjeVJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsIEJpZGlSCiAgICAgICAg
IC8vIHdpbGwga2VlcCB1cyBmcm9tIGNvbXB1dGluZyBnbHlwaCBib3VuZHMgaW4gbmVhcmx5IGFs
bCBjYXNlcy4KICAgICAgICAgYm9vbCBpbmNsdWRlUm9vdExpbmUgPSBsaW5lQm94LT5pbmNsdWRl
c1Jvb3RMaW5lQm94Rm9udE9yTGVhZGluZygpOwogICAgICAgICBpbnQgYmFzZWxpbmVTaGlmdCA9
IGxpbmVCb3gtPnZlcnRpY2FsUG9zaXRpb25Gb3JCb3gocnVuLT5ib3goKSwgdmVydGljYWxQb3Np
dGlvbkNhY2hlKTsKLSAgICAgICAgaW50IHJvb3REZXNjZW50ID0gaW5jbHVkZVJvb3RMaW5lID8g
Zm9udC5mb250TWV0cmljcygpLmRlc2NlbnQoKSA6IDA7Ci0gICAgICAgIGludCByb290QXNjZW50
ID0gaW5jbHVkZVJvb3RMaW5lID8gZm9udC5mb250TWV0cmljcygpLmFzY2VudCgpIDogMDsKLSAg
ICAgICAgaW50IGJveEFzY2VudCA9IGZvbnQuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSAtIGJhc2Vs
aW5lU2hpZnQ7Ci0gICAgICAgIGludCBib3hEZXNjZW50ID0gZm9udC5mb250TWV0cmljcygpLmRl
c2NlbnQoKSArIGJhc2VsaW5lU2hpZnQ7CisgICAgICAgIGludCByb290RGVzY2VudCA9IGluY2x1
ZGVSb290TGluZSA/IGZvbnQuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuZGVzY2VudCgpIDog
MDsKKyAgICAgICAgaW50IHJvb3RBc2NlbnQgPSBpbmNsdWRlUm9vdExpbmUgPyBmb250LmZvbnRN
ZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudCgpIDogMDsKKyAgICAgICAgaW50IGJveEFzY2Vu
dCA9IGZvbnQuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50KCkgLSBiYXNlbGluZVNo
aWZ0OworICAgICAgICBpbnQgYm94RGVzY2VudCA9IGZvbnQuZm9udE1ldHJpY3NPZlByaW1hcnlG
b250KCkuZGVzY2VudCgpICsgYmFzZWxpbmVTaGlmdDsKICAgICAgICAgaWYgKGJveEFzY2VudCA+
IHJvb3REZXNjZW50IHx8ICBib3hEZXNjZW50ID4gcm9vdEFzY2VudCkKICAgICAgICAgICAgIGds
eXBoT3ZlcmZsb3cuY29tcHV0ZUJvdW5kcyA9IHRydWU7IAogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lSb290SW5saW5lQm94LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lSb290SW5saW5lQm94LmNwcAppbmRleCBlODk1Y2JiNjcx
NzBiNjQ0N2VjYzcxM2JhNTFjYjNmYmI2ZTkwNmVmLi4zMWJlN2Q5NmJmOWQ3NjllYjg5MzU2ODFl
ZTk3ZWNkMjgwOWUyOGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVn
YWN5Um9vdElubGluZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2Fj
eVJvb3RJbmxpbmVCb3guY3BwCkBAIC0zNjMsMTQgKzM2MywxNCBAQCBMYXlvdXRVbml0IExlZ2Fj
eVJvb3RJbmxpbmVCb3g6OmxpbmVTbmFwQWRqdXN0bWVudChMYXlvdXRVbml0IGRlbHRhKSBjb25z
dAogICAgIGlmICghZ3JpZExpbmVIZWlnaHQpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgTGF5
b3V0VW5pdCBsaW5lR3JpZEZvbnRBc2NlbnQgPSBsaW5lR3JpZC0+c3R5bGUoKS5mb250TWV0cmlj
cygpLmFzY2VudChiYXNlbGluZVR5cGUoKSk7CisgICAgTGF5b3V0VW5pdCBsaW5lR3JpZEZvbnRB
c2NlbnQgPSBsaW5lR3JpZC0+c3R5bGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2Nl
bnQoYmFzZWxpbmVUeXBlKCkpOwogICAgIExheW91dFVuaXQgbGluZUdyaWRGb250SGVpZ2h0IHsg
bGluZUdyaWRCb3gtPmxvZ2ljYWxIZWlnaHQoKSB9OwogICAgIExheW91dFVuaXQgZmlyc3RUZXh0
VG9wIHsgbGluZUdyaWRCbG9ja09mZnNldCArIGxpbmVHcmlkQm94LT5sb2dpY2FsVG9wKCkgfTsK
ICAgICBMYXlvdXRVbml0IGZpcnN0TGluZVRvcFdpdGhMZWFkaW5nID0gbGluZUdyaWRCbG9ja09m
ZnNldCArIGxpbmVHcmlkQm94LT5saW5lQm94VG9wKCk7CiAgICAgTGF5b3V0VW5pdCBmaXJzdEJh
c2VsaW5lUG9zaXRpb24gPSBmaXJzdFRleHRUb3AgKyBsaW5lR3JpZEZvbnRBc2NlbnQ7CiAKICAg
ICBMYXlvdXRVbml0IGN1cnJlbnRUZXh0VG9wIHsgYmxvY2tPZmZzZXQgKyBsb2dpY2FsVG9wKCkg
KyBkZWx0YSB9OwotICAgIExheW91dFVuaXQgY3VycmVudEZvbnRBc2NlbnQgPSBibG9ja0Zsb3co
KS5zdHlsZSgpLmZvbnRNZXRyaWNzKCkuYXNjZW50KGJhc2VsaW5lVHlwZSgpKTsKKyAgICBMYXlv
dXRVbml0IGN1cnJlbnRGb250QXNjZW50ID0gYmxvY2tGbG93KCkuc3R5bGUoKS5mb250TWV0cmlj
c09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoYmFzZWxpbmVUeXBlKCkpOwogICAgIExheW91dFVuaXQg
Y3VycmVudEJhc2VsaW5lUG9zaXRpb24gPSBjdXJyZW50VGV4dFRvcCArIGN1cnJlbnRGb250QXNj
ZW50OwogCiAgICAgTGF5b3V0VW5pdCBsaW5lR3JpZFBhZ2luYXRpb25PcmlnaW4gPSBpc0hvcml6
b250YWwoKSA/IGxheW91dFN0YXRlLT5saW5lR3JpZFBhZ2luYXRpb25PcmlnaW4oKS5oZWlnaHQo
KSA6IGxheW91dFN0YXRlLT5saW5lR3JpZFBhZ2luYXRpb25PcmlnaW4oKS53aWR0aCgpOwpAQCAt
NzQzLDggKzc0Myw4IEBAIHZvaWQgTGVnYWN5Um9vdElubGluZUJveDo6YXNjZW50QW5kRGVzY2Vu
dEZvckJveChMZWdhY3lJbmxpbmVCb3gmIGJveCwgR2x5cGhPdmVyCiAgICAgfQogICAgIAogICAg
IGlmIChpbmNsdWRlRm9udEZvckJveChib3gpICYmICFzZXRVc2VkRm9udCkgewotICAgICAgICBM
YXlvdXRVbml0IGZvbnRBc2NlbnQgeyBib3hMaW5lU3R5bGUuZm9udE1ldHJpY3MoKS5hc2NlbnQo
YmFzZWxpbmVUeXBlKCkpIH07Ci0gICAgICAgIExheW91dFVuaXQgZm9udERlc2NlbnQgeyBib3hM
aW5lU3R5bGUuZm9udE1ldHJpY3MoKS5kZXNjZW50KGJhc2VsaW5lVHlwZSgpKSB9OworICAgICAg
ICBMYXlvdXRVbml0IGZvbnRBc2NlbnQgeyBib3hMaW5lU3R5bGUuZm9udE1ldHJpY3NPZlByaW1h
cnlGb250KCkuYXNjZW50KGJhc2VsaW5lVHlwZSgpKSB9OworICAgICAgICBMYXlvdXRVbml0IGZv
bnREZXNjZW50IHsgYm94TGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmRlc2Nl
bnQoYmFzZWxpbmVUeXBlKCkpIH07CiAgICAgICAgIHNldEFzY2VudEFuZERlc2NlbnQoYXNjZW50
LCBkZXNjZW50LCBmb250QXNjZW50LCBmb250RGVzY2VudCwgYXNjZW50RGVzY2VudFNldCk7CiAg
ICAgICAgIGFmZmVjdHNBc2NlbnQgPSBmb250QXNjZW50IC0gYm94LmxvZ2ljYWxUb3AoKSA+IDA7
CiAgICAgICAgIGFmZmVjdHNEZXNjZW50ID0gZm9udERlc2NlbnQgKyBib3gubG9naWNhbFRvcCgp
ID4gMDsKQEAgLTc1NCwyNiArNzU0LDI2IEBAIHZvaWQgTGVnYWN5Um9vdElubGluZUJveDo6YXNj
ZW50QW5kRGVzY2VudEZvckJveChMZWdhY3lJbmxpbmVCb3gmIGJveCwgR2x5cGhPdmVyCiAgICAg
ICAgIHNldEFzY2VudEFuZERlc2NlbnQoYXNjZW50LCBkZXNjZW50LCBnbHlwaE92ZXJmbG93LT50
b3AsIGdseXBoT3ZlcmZsb3ctPmJvdHRvbSwgYXNjZW50RGVzY2VudFNldCk7CiAgICAgICAgIGFm
ZmVjdHNBc2NlbnQgPSBnbHlwaE92ZXJmbG93LT50b3AgLSBib3gubG9naWNhbFRvcCgpID4gMDsK
ICAgICAgICAgYWZmZWN0c0Rlc2NlbnQgPSBnbHlwaE92ZXJmbG93LT5ib3R0b20gKyBib3gubG9n
aWNhbFRvcCgpID4gMDsKLSAgICAgICAgZ2x5cGhPdmVyZmxvdy0+dG9wID0gc3RkOjptaW4oZ2x5
cGhPdmVyZmxvdy0+dG9wLCBzdGQ6Om1heCgwX2x1LCBnbHlwaE92ZXJmbG93LT50b3AgLSBib3hM
aW5lU3R5bGUuZm9udE1ldHJpY3MoKS5hc2NlbnQoYmFzZWxpbmVUeXBlKCkpKSk7Ci0gICAgICAg
IGdseXBoT3ZlcmZsb3ctPmJvdHRvbSA9IHN0ZDo6bWluKGdseXBoT3ZlcmZsb3ctPmJvdHRvbSwg
c3RkOjptYXgoMF9sdSwgZ2x5cGhPdmVyZmxvdy0+Ym90dG9tIC0gYm94TGluZVN0eWxlLmZvbnRN
ZXRyaWNzKCkuZGVzY2VudChiYXNlbGluZVR5cGUoKSkpKTsKKyAgICAgICAgZ2x5cGhPdmVyZmxv
dy0+dG9wID0gc3RkOjptaW4oZ2x5cGhPdmVyZmxvdy0+dG9wLCBzdGQ6Om1heCgwX2x1LCBnbHlw
aE92ZXJmbG93LT50b3AgLSBib3hMaW5lU3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCku
YXNjZW50KGJhc2VsaW5lVHlwZSgpKSkpOworICAgICAgICBnbHlwaE92ZXJmbG93LT5ib3R0b20g
PSBzdGQ6Om1pbihnbHlwaE92ZXJmbG93LT5ib3R0b20sIHN0ZDo6bWF4KDBfbHUsIGdseXBoT3Zl
cmZsb3ctPmJvdHRvbSAtIGJveExpbmVTdHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5k
ZXNjZW50KGJhc2VsaW5lVHlwZSgpKSkpOwogICAgIH0KICAgICAKICAgICBpZiAoaW5jbHVkZUlu
aXRpYWxMZXR0ZXJGb3JCb3goYm94KSkgewogICAgICAgICBib29sIGNhblVzZUdseXBocyA9IGds
eXBoT3ZlcmZsb3cgJiYgZ2x5cGhPdmVyZmxvdy0+Y29tcHV0ZUJvdW5kczsKLSAgICAgICAgYXV0
byBsZXR0ZXJBc2NlbnQgeyBiYXNlbGluZVR5cGUoKSA9PSBBbHBoYWJldGljQmFzZWxpbmUgPyBM
YXlvdXRVbml0KGJveExpbmVTdHlsZS5mb250TWV0cmljcygpLmNhcEhlaWdodCgpKSA6IChjYW5V
c2VHbHlwaHMgPyBnbHlwaE92ZXJmbG93LT50b3AgOiBMYXlvdXRVbml0KGJveExpbmVTdHlsZS5m
b250TWV0cmljcygpLmFzY2VudChiYXNlbGluZVR5cGUoKSkpKSB9OwotICAgICAgICBhdXRvIGxl
dHRlckRlc2NlbnQgeyBjYW5Vc2VHbHlwaHMgPyBnbHlwaE92ZXJmbG93LT5ib3R0b20gOiAoYm94
LmlzUm9vdElubGluZUJveCgpID8gMF9sdSA6IExheW91dFVuaXQoYm94TGluZVN0eWxlLmZvbnRN
ZXRyaWNzKCkuZGVzY2VudChiYXNlbGluZVR5cGUoKSkpKSB9OworICAgICAgICBhdXRvIGxldHRl
ckFzY2VudCB7IGJhc2VsaW5lVHlwZSgpID09IEFscGhhYmV0aWNCYXNlbGluZSA/IExheW91dFVu
aXQoYm94TGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmNhcEhlaWdodCgpKSA6
IChjYW5Vc2VHbHlwaHMgPyBnbHlwaE92ZXJmbG93LT50b3AgOiBMYXlvdXRVbml0KGJveExpbmVT
dHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoYmFzZWxpbmVUeXBlKCkpKSkg
fTsKKyAgICAgICAgYXV0byBsZXR0ZXJEZXNjZW50IHsgY2FuVXNlR2x5cGhzID8gZ2x5cGhPdmVy
Zmxvdy0+Ym90dG9tIDogKGJveC5pc1Jvb3RJbmxpbmVCb3goKSA/IDBfbHUgOiBMYXlvdXRVbml0
KGJveExpbmVTdHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5kZXNjZW50KGJhc2VsaW5l
VHlwZSgpKSkpIH07CiAgICAgICAgIHNldEFzY2VudEFuZERlc2NlbnQoYXNjZW50LCBkZXNjZW50
LCBsZXR0ZXJBc2NlbnQsIGxldHRlckRlc2NlbnQsIGFzY2VudERlc2NlbnRTZXQpOwogICAgICAg
ICBhZmZlY3RzQXNjZW50ID0gbGV0dGVyQXNjZW50IC0gYm94LmxvZ2ljYWxUb3AoKSA+IDA7CiAg
ICAgICAgIGFmZmVjdHNEZXNjZW50ID0gbGV0dGVyRGVzY2VudCArIGJveC5sb2dpY2FsVG9wKCkg
PiAwOwogICAgICAgICBpZiAoY2FuVXNlR2x5cGhzKSB7Ci0gICAgICAgICAgICBnbHlwaE92ZXJm
bG93LT50b3AgPSBzdGQ6Om1pbihnbHlwaE92ZXJmbG93LT50b3AsIHN0ZDo6bWF4KDBfbHUsIGds
eXBoT3ZlcmZsb3ctPnRvcCAtIGJveExpbmVTdHlsZS5mb250TWV0cmljcygpLmFzY2VudChiYXNl
bGluZVR5cGUoKSkpKTsKLSAgICAgICAgICAgIGdseXBoT3ZlcmZsb3ctPmJvdHRvbSA9IHN0ZDo6
bWluKGdseXBoT3ZlcmZsb3ctPmJvdHRvbSwgc3RkOjptYXgoMF9sdSwgZ2x5cGhPdmVyZmxvdy0+
Ym90dG9tIC0gYm94TGluZVN0eWxlLmZvbnRNZXRyaWNzKCkuZGVzY2VudChiYXNlbGluZVR5cGUo
KSkpKTsKKyAgICAgICAgICAgIGdseXBoT3ZlcmZsb3ctPnRvcCA9IHN0ZDo6bWluKGdseXBoT3Zl
cmZsb3ctPnRvcCwgc3RkOjptYXgoMF9sdSwgZ2x5cGhPdmVyZmxvdy0+dG9wIC0gYm94TGluZVN0
eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudChiYXNlbGluZVR5cGUoKSkpKTsK
KyAgICAgICAgICAgIGdseXBoT3ZlcmZsb3ctPmJvdHRvbSA9IHN0ZDo6bWluKGdseXBoT3ZlcmZs
b3ctPmJvdHRvbSwgc3RkOjptYXgoMF9sdSwgZ2x5cGhPdmVyZmxvdy0+Ym90dG9tIC0gYm94TGlu
ZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmRlc2NlbnQoYmFzZWxpbmVUeXBlKCkp
KSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoaW5jbHVkZU1hcmdpbkZvckJveChib3gp
KSB7Ci0gICAgICAgIExheW91dFVuaXQgYXNjZW50V2l0aE1hcmdpbiA9IGJveExpbmVTdHlsZS5m
b250TWV0cmljcygpLmFzY2VudChiYXNlbGluZVR5cGUoKSk7Ci0gICAgICAgIExheW91dFVuaXQg
ZGVzY2VudFdpdGhNYXJnaW4gPSBib3hMaW5lU3R5bGUuZm9udE1ldHJpY3MoKS5kZXNjZW50KGJh
c2VsaW5lVHlwZSgpKTsKKyAgICAgICAgTGF5b3V0VW5pdCBhc2NlbnRXaXRoTWFyZ2luID0gYm94
TGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudChiYXNlbGluZVR5cGUo
KSk7CisgICAgICAgIExheW91dFVuaXQgZGVzY2VudFdpdGhNYXJnaW4gPSBib3hMaW5lU3R5bGUu
Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuZGVzY2VudChiYXNlbGluZVR5cGUoKSk7CiAgICAg
ICAgIGlmIChib3gucGFyZW50KCkgJiYgIWJveC5yZW5kZXJlcigpLmlzVGV4dE9yTGluZUJyZWFr
KCkpIHsKICAgICAgICAgICAgIGFzY2VudFdpdGhNYXJnaW4gKz0gYm94LmJveE1vZGVsT2JqZWN0
KCktPmJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKSArIGJveC5ib3hNb2RlbE9iamVjdCgpLT5tYXJn
aW5CZWZvcmUoKTsKICAgICAgICAgICAgIGRlc2NlbnRXaXRoTWFyZ2luICs9IGJveC5ib3hNb2Rl
bE9iamVjdCgpLT5ib3JkZXJBbmRQYWRkaW5nQWZ0ZXIoKSArIGJveC5ib3hNb2RlbE9iamVjdCgp
LT5tYXJnaW5BZnRlcigpOwpAQCAtODIxLDcgKzgyMSw3IEBAIExheW91dFVuaXQgTGVnYWN5Um9v
dElubGluZUJveDo6dmVydGljYWxQb3NpdGlvbkZvckJveChMZWdhY3lJbmxpbmVCb3gqIGJveCwg
VmVyCiAgICAgaWYgKHZlcnRpY2FsQWxpZ24gIT0gVmVydGljYWxBbGlnbjo6QmFzZWxpbmUpIHsK
ICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudExpbmVTdHlsZSA9IGZpcnN0TGluZSA/
IHBhcmVudC0+Zmlyc3RMaW5lU3R5bGUoKSA6IHBhcmVudC0+c3R5bGUoKTsKICAgICAgICAgY29u
c3QgRm9udENhc2NhZGUmIGZvbnQgPSBwYXJlbnRMaW5lU3R5bGUuZm9udENhc2NhZGUoKTsKLSAg
ICAgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gZm9udC5mb250TWV0cmljcygp
OworICAgICAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MgPSBmb250LmZvbnRNZXRy
aWNzT2ZQcmltYXJ5Rm9udCgpOwogICAgICAgICBpbnQgZm9udFNpemUgPSBmb250LnBpeGVsU2l6
ZSgpOwogCiAgICAgICAgIExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVEaXJlY3Rpb24gPSBwYXJlbnQt
PmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGlu
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IGIxM2U5N2Ex
MTZhZTNhMTdhZmJjNTAzNmUyNjM5ZmE1YTVhMjMyMmUuLjhlYTE5OWMyOTE4YmIxMTMzYTU0NGU1
YjUyN2I2MTZjZjQ4ZjIxOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmNwcApAQCAtMjQ5Niw3ICsyNDk2LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6YmFzZWxp
bmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGZpcnN0TGkKICAgICB9
CiAKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSBmaXJzdExpbmUgPyBmaXJzdExpbmVT
dHlsZSgpIDogdGhpcy0+c3R5bGUoKTsKLSAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJp
Y3MgPSBzdHlsZS5mb250TWV0cmljcygpOworICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0
cmljcyA9IHN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwogICAgIHJldHVybiBMYXlv
dXRVbml0IHsgZm9udE1ldHJpY3MuYXNjZW50KGJhc2VsaW5lVHlwZSkgKyAobGluZUhlaWdodChm
aXJzdExpbmUsIGRpcmVjdGlvbiwgbGluZVBvc2l0aW9uTW9kZSkgLSBmb250TWV0cmljcy5oZWln
aHQoKSkgLyAyIH0udG9JbnQoKTsKIH0KIApAQCAtMjU0OCw3ICsyNTQ4LDcgQEAgc3RkOjpvcHRp
b25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9jazo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGly
ZWN0aW9uTW9kZSBsaW4KICAgICB9CiAKICAgICBpZiAoIWhhdmVOb3JtYWxGbG93Q2hpbGQgJiYg
aGFzTGluZUlmRW1wdHkoKSkgewotICAgICAgICBhdXRvJiBmb250TWV0cmljcyA9IGZpcnN0TGlu
ZVN0eWxlKCkuZm9udE1ldHJpY3MoKTsKKyAgICAgICAgYXV0byYgZm9udE1ldHJpY3MgPSBmaXJz
dExpbmVTdHlsZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwogICAgICAgICByZXR1cm4g
TGF5b3V0VW5pdCB7IExheW91dFVuaXQoZm9udE1ldHJpY3MuYXNjZW50KCkKICAgICAgICAgICAg
ICsgKGxpbmVIZWlnaHQodHJ1ZSwgbGluZURpcmVjdGlvbiwgUG9zaXRpb25PZkludGVyaW9yTGlu
ZUJveGVzKSAtIGZvbnRNZXRyaWNzLmhlaWdodCgpKSAvIDIKICAgICAgICAgICAgICsgKGxpbmVE
aXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUgPyBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSA6
IGJvcmRlclJpZ2h0KCkgKyBwYWRkaW5nUmlnaHQoKSkpLnRvSW50KCkgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggOTdjNjg2NTNlNWYwZWZm
NGJhOWEwNzQzOGY0MzliNDEzYjZkMTUwYi4uN2M1NjNjZjlmYzZhOWI3NDk2OTc3ZDgwNWQ1ODUw
YjNlODgxYmMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxv
dy5jcHAKQEAgLTI0MDEsNyArMjQwMSw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRl
TG9naWNhbExvY2F0aW9uRm9yRmxvYXQoRmxvYXRpbmdPYmplY3QmIGZsb2F0aW5nT2JqCiB2b2lk
IFJlbmRlckJsb2NrRmxvdzo6YWRqdXN0SW5pdGlhbExldHRlclBvc2l0aW9uKFJlbmRlckJveCYg
Y2hpbGRCb3gsIExheW91dFVuaXQmIGxvZ2ljYWxUb3BPZmZzZXQsIExheW91dFVuaXQmIG1hcmdp
bkJlZm9yZU9mZnNldCkKIHsKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSBmaXJzdExp
bmVTdHlsZSgpOwotICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxlLmZv
bnRNZXRyaWNzKCk7CisgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gc3R5bGUu
Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCk7CiAgICAgaWYgKCFmb250TWV0cmljcy5oYXNDYXBI
ZWlnaHQoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yOTYzLDggKzI5NjMsOCBAQCBzdGQ6Om9w
dGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJsb2NrRmxvdzo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBj
b25zdAogCiAgICAgQVNTRVJUKGZpcnN0Um9vdEJveCgpKTsKICAgICBpZiAoc3R5bGUoKS5pc0Zs
aXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkpCi0gICAgICAgIHJldHVybiBMYXlvdXRVbml0IHsgZmly
c3RSb290Qm94KCktPmxvZ2ljYWxUb3AoKSArIGZpcnN0TGluZVN0eWxlKCkuZm9udE1ldHJpY3Mo
KS5kZXNjZW50KGZpcnN0Um9vdEJveCgpLT5iYXNlbGluZVR5cGUoKSkgfTsKLSAgICByZXR1cm4g
TGF5b3V0VW5pdCB7IGZpcnN0Um9vdEJveCgpLT5sb2dpY2FsVG9wKCkgKyBmaXJzdExpbmVTdHls
ZSgpLmZvbnRNZXRyaWNzKCkuYXNjZW50KGZpcnN0Um9vdEJveCgpLT5iYXNlbGluZVR5cGUoKSkg
fTsKKyAgICAgICAgcmV0dXJuIExheW91dFVuaXQgeyBmaXJzdFJvb3RCb3goKS0+bG9naWNhbFRv
cCgpICsgZmlyc3RMaW5lU3R5bGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5kZXNjZW50
KGZpcnN0Um9vdEJveCgpLT5iYXNlbGluZVR5cGUoKSkgfTsKKyAgICByZXR1cm4gTGF5b3V0VW5p
dCB7IGZpcnN0Um9vdEJveCgpLT5sb2dpY2FsVG9wKCkgKyBmaXJzdExpbmVTdHlsZSgpLmZvbnRN
ZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudChmaXJzdFJvb3RCb3goKS0+YmFzZWxpbmVUeXBl
KCkpIH07CiB9CiAKIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQmxvY2tGbG93Ojpp
bmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVEaXJlY3Rpb24pIGNvbnN0
CkBAIC0yOTk0LDcgKzI5OTQsNyBAQCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJs
b2NrRmxvdzo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZQogICAgICAgICBp
ZiAoIWhhc0xpbmVzKCkpIHsKICAgICAgICAgICAgIGlmICghaGFzTGluZUlmRW1wdHkoKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICAgICAgY29uc3QgYXV0
byYgZm9udE1ldHJpY3MgPSBmaXJzdExpbmVTdHlsZSgpLmZvbnRNZXRyaWNzKCk7CisgICAgICAg
ICAgICBjb25zdCBhdXRvJiBmb250TWV0cmljcyA9IGZpcnN0TGluZVN0eWxlKCkuZm9udE1ldHJp
Y3NPZlByaW1hcnlGb250KCk7CiAgICAgICAgICAgICByZXR1cm4gTGF5b3V0VW5pdCB7IExheW91
dFVuaXQoZm9udE1ldHJpY3MuYXNjZW50KCkKICAgICAgICAgICAgICAgICArIChsaW5lSGVpZ2h0
KHRydWUsIGxpbmVEaXJlY3Rpb24sIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcykgLSBmb250
TWV0cmljcy5oZWlnaHQoKSkgLyAyCiAgICAgICAgICAgICAgICAgKyAobGluZURpcmVjdGlvbiA9
PSBIb3Jpem9udGFsTGluZSA/IGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpIDogYm9yZGVyUmln
aHQoKSArIHBhZGRpbmdSaWdodCgpKSkudG9JbnQoKSB9OwpAQCAtMzAwNCw3ICszMDA0LDcgQEAg
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9ja0Zsb3c6OmlubGluZUJsb2NrQmFz
ZWxpbmUoTGluZURpcmVjdGlvbk1vZGUKICAgICAgICAgICAgIGJvb2wgaXNGaXJzdExpbmUgPSBs
YXN0Um9vdEJveCgpID09IGZpcnN0Um9vdEJveCgpOwogICAgICAgICAgICAgY29uc3QgYXV0byYg
c3R5bGUgPSBpc0ZpcnN0TGluZSA/IGZpcnN0TGluZVN0eWxlKCkgOiB0aGlzLT5zdHlsZSgpOwog
ICAgICAgICAgICAgLy8gTGVnYWN5SW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0luQmxvY2tEaXJl
Y3Rpb24gd2lsbCBmbGlwIGxpbmVzIGluIGNhc2Ugb2YgdmVydGljYWxMUiBtb2RlLCBzbyB3ZSBj
YW4gYXNzdW1lIHZlcnRpY2FsUkwgZm9yIG5vdy4KLSAgICAgICAgICAgIGxhc3RCYXNlbGluZSA9
IHN0eWxlLmZvbnRNZXRyaWNzKCkuYXNjZW50KGxhc3RSb290Qm94KCktPmJhc2VsaW5lVHlwZSgp
KQorICAgICAgICAgICAgbGFzdEJhc2VsaW5lID0gc3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlG
b250KCkuYXNjZW50KGxhc3RSb290Qm94KCktPmJhc2VsaW5lVHlwZSgpKQogICAgICAgICAgICAg
ICAgICsgKHN0eWxlLmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSA/IGxvZ2ljYWxIZWlnaHQo
KSAtIGxhc3RSb290Qm94KCktPmxvZ2ljYWxCb3R0b20oKSA6IGxhc3RSb290Qm94KCktPmxvZ2lj
YWxUb3AoKSk7CiAgICAgICAgIH0KICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVY
VCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3Qu
Y3BwCmluZGV4IGRkYmU5YTQxNmYzZjk3ZWZmMzIzMjAyZDYwODQwZjIwMjc2ODdiNWQuLjcxZTc3
MzlkMWM5NjRkMmI0NTg5YzUxODcyNDQyZmIzOGQ4OTBkYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcApAQCAtMjU2LDcgKzI1Niw3
IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50CiAgICAgY29udGV4dC5zZXRTdHJva2VUaGlja25l
c3MoMik7CiAgICAgY29udGV4dC5zdHJva2VQYXRoKHN0cm9rZVBhdGgpOwogCi0gICAgY29uc3Qg
Rm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gZm9udC5mb250TWV0cmljcygpOworICAgIGNvbnN0
IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IGZvbnQuZm9udE1ldHJpY3NPZlByaW1hcnlGb250
KCk7CiAgICAgZmxvYXQgbGFiZWxYID0gcm91bmRmKHJlcGxhY2VtZW50VGV4dFJlY3QubG9jYXRp
b24oKS54KCkgKyByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdExlZnRUZXh0TWFyZ2luKTsKICAg
ICBmbG9hdCBsYWJlbFkgPSByb3VuZGYocmVwbGFjZW1lbnRUZXh0UmVjdC5sb2NhdGlvbigpLnko
KSArIChyZXBsYWNlbWVudFRleHRSZWN0LnNpemUoKS5oZWlnaHQoKSAtIGZvbnRNZXRyaWNzLmhl
aWdodCgpKSAvIDIgKyBmb250TWV0cmljcy5hc2NlbnQoKSArIHJlcGxhY2VtZW50VGV4dFJvdW5k
ZWRSZWN0VG9wVGV4dE1hcmdpbik7CiAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IocmVwbGFjZW1l
bnRUZXh0Q29sb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5k
ZXggMDUwMGY4OTVmZTBmODM1YTI0YWExZTdjMzE1MzYwZDJmZWQ4NGU4Yy4uYmIxMzlmMmY1NzIw
NjZiODlhZDRjNmYyZGI5YzUyMjUwN2FjZjY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2UuY3BwCkBAIC0yMTAsNyArMjEwLDcgQEAgSW1hZ2VTaXplQ2hhbmdlVHlwZSBS
ZW5kZXJJbWFnZTo6c2V0SW1hZ2VTaXplRm9yQWx0VGV4dChDYWNoZWRJbWFnZSogbmV3SW1hZ2Ug
LyoKICAgICAvLyB3ZSBoYXZlIGFuIGFsdCBhbmQgdGhlIHVzZXIgbWVhbnQgaXQgKGl0cyBub3Qg
YSB0ZXh0IHdlIGludmVudGVkKQogICAgIGlmICghbV9hbHRUZXh0LmlzRW1wdHkoKSkgewogICAg
ICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKTsKLSAg
ICAgICAgSW50U2l6ZSBwYWRkZWRUZXh0U2l6ZShwYWRkaW5nV2lkdGggKyBzdGQ6Om1pbihjZWls
Zihmb250LndpZHRoKFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKG1fYWx0VGV4dCwgc3R5
bGUoKSkpKSwgbWF4QWx0VGV4dFdpZHRoKSwgcGFkZGluZ0hlaWdodCArIHN0ZDo6bWluKGZvbnQu
Zm9udE1ldHJpY3MoKS5oZWlnaHQoKSwgbWF4QWx0VGV4dEhlaWdodCkpOworICAgICAgICBJbnRT
aXplIHBhZGRlZFRleHRTaXplKHBhZGRpbmdXaWR0aCArIHN0ZDo6bWluKGNlaWxmKGZvbnQud2lk
dGgoUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4obV9hbHRUZXh0LCBzdHlsZSgpKSkpLCBt
YXhBbHRUZXh0V2lkdGgpLCBwYWRkaW5nSGVpZ2h0ICsgc3RkOjptaW4oZm9udC5mb250TWV0cmlj
c09mUHJpbWFyeUZvbnQoKS5oZWlnaHQoKSwgbWF4QWx0VGV4dEhlaWdodCkpOwogICAgICAgICBp
bWFnZVNpemUgPSBpbWFnZVNpemUuZXhwYW5kZWRUbyhwYWRkZWRUZXh0U2l6ZSk7CiAgICAgfQog
CkBAIC01MzIsNyArNTMyLDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICAgICAgICAg
ICAgICBTdHJpbmcgdGV4dCA9IGRvY3VtZW50KCkuZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNv
ZGluZyhtX2FsdFRleHQpOwogICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHN0
eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5Q29s
b3IpKTsKICAgICAgICAgICAgICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlKCku
Zm9udENhc2NhZGUoKTsKLSAgICAgICAgICAgICAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1l
dHJpY3MgPSBmb250LmZvbnRNZXRyaWNzKCk7CisgICAgICAgICAgICAgICAgY29uc3QgRm9udE1l
dHJpY3MmIGZvbnRNZXRyaWNzID0gZm9udC5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsKICAg
ICAgICAgICAgICAgICBMYXlvdXRVbml0IGFzY2VudCA9IGZvbnRNZXRyaWNzLmFzY2VudCgpOwog
ICAgICAgICAgICAgICAgIExheW91dFBvaW50IGFsdFRleHRPZmZzZXQgPSBwYWludE9mZnNldDsK
ICAgICAgICAgICAgICAgICBhbHRUZXh0T2Zmc2V0Lm1vdmUobGVmdEJvcmRlciArIGxlZnRQYWQg
KyAocGFkZGluZ1dpZHRoIC8gMikgLSBtaXNzaW5nSW1hZ2VCb3JkZXJXaWR0aCwgdG9wQm9yZGVy
ICsgdG9wUGFkICsgYXNjZW50ICsgKHBhZGRpbmdIZWlnaHQgLyAyKSAtIG1pc3NpbmdJbWFnZUJv
cmRlcldpZHRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKaW5k
ZXggNmE5YTM5MTAwM2YyZTAwOGIyYWVhY2Y3N2YyNGY4N2FkM2VhNTIxZS4uMGEwOWY0OGJjZTY1
MTVjMDg5NzZhNjg0M2RjMDIxMWZiZTcxYmEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklubGluZS5jcHAKQEAgLTIxMCw3ICsyMTAsNyBAQCBib29sIFJlbmRlcklubGluZTo6
bWF5QWZmZWN0TGF5b3V0KCkgY29uc3QKICAgICAgICAgfHwgKHBhcmVudFJlbmRlcklubGluZSAm
JiBwYXJlbnRTdHlsZS0+dmVydGljYWxBbGlnbigpICE9IFZlcnRpY2FsQWxpZ246OkJhc2VsaW5l
KQogICAgICAgICB8fCBzdHlsZSgpLnZlcnRpY2FsQWxpZ24oKSAhPSBWZXJ0aWNhbEFsaWduOjpC
YXNlbGluZQogICAgICAgICB8fCBzdHlsZSgpLnRleHRFbXBoYXNpc01hcmsoKSAhPSBUZXh0RW1w
aGFzaXNNYXJrOjpOb25lCi0gICAgICAgIHx8IChjaGVja0ZvbnRzICYmICghcGFyZW50U3R5bGUt
PmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKS5oYXNJZGVudGljYWxBc2NlbnREZXNjZW50QW5k
TGluZUdhcChzdHlsZSgpLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKSkKKyAgICAgICAgfHwg
KGNoZWNrRm9udHMgJiYgKCFwYXJlbnRTdHlsZS0+Zm9udENhc2NhZGUoKS5mb250TWV0cmljc09m
UHJpbWFyeUZvbnQoKS5oYXNJZGVudGljYWxBc2NlbnREZXNjZW50QW5kTGluZUdhcChzdHlsZSgp
LmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkpCiAgICAgICAgIHx8IHBh
cmVudFN0eWxlLT5saW5lSGVpZ2h0KCkgIT0gc3R5bGUoKS5saW5lSGVpZ2h0KCkpKQogICAgICAg
ICB8fCBoYXNIYXJkTGluZUJyZWFrQ2hpbGRPbmx5OwogCkBAIC0yMTgsNyArMjE4LDcgQEAgYm9v
bCBSZW5kZXJJbmxpbmU6Om1heUFmZmVjdExheW91dCgpIGNvbnN0CiAgICAgICAgIC8vIEhhdmUg
dG8gY2hlY2sgdGhlIGZpcnN0IGxpbmUgc3R5bGUgYXMgd2VsbC4KICAgICAgICAgcGFyZW50U3R5
bGUgPSAmcGFyZW50KCktPmZpcnN0TGluZVN0eWxlKCk7CiAgICAgICAgIGF1dG8mIGNoaWxkU3R5
bGUgPSBmaXJzdExpbmVTdHlsZSgpOwotICAgICAgICBtYXlBZmZlY3RMYXlvdXQgPSAhcGFyZW50
U3R5bGUtPmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKS5oYXNJZGVudGljYWxBc2NlbnREZXNj
ZW50QW5kTGluZUdhcChjaGlsZFN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKSkKKyAg
ICAgICAgbWF5QWZmZWN0TGF5b3V0ID0gIXBhcmVudFN0eWxlLT5mb250Q2FzY2FkZSgpLmZvbnRN
ZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmhhc0lkZW50aWNhbEFzY2VudERlc2NlbnRBbmRMaW5lR2Fw
KGNoaWxkU3R5bGUuZm9udENhc2NhZGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKSkKICAg
ICAgICAgICAgIHx8IGNoaWxkU3R5bGUudmVydGljYWxBbGlnbigpICE9IFZlcnRpY2FsQWxpZ246
OkJhc2VsaW5lCiAgICAgICAgICAgICB8fCBwYXJlbnRTdHlsZS0+bGluZUhlaWdodCgpICE9IGNo
aWxkU3R5bGUubGluZUhlaWdodCgpOwogICAgIH0KQEAgLTg1NSw3ICs4NTUsNyBAQCBMYXlvdXRV
bml0IFJlbmRlcklubGluZTo6bGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlv
bk1vZGUgLypkaXJlY3RpbwogTGF5b3V0VW5pdCBSZW5kZXJJbmxpbmU6OmJhc2VsaW5lUG9zaXRp
b24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rp
b25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25z
dAogewogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IGZpcnN0TGluZSA/IGZpcnN0TGlu
ZVN0eWxlKCkgOiB0aGlzLT5zdHlsZSgpOwotICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0
cmljcyA9IHN0eWxlLmZvbnRNZXRyaWNzKCk7CisgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRN
ZXRyaWNzID0gc3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCk7CiAgICAgcmV0dXJuIExh
eW91dFVuaXQgeyAoZm9udE1ldHJpY3MuYXNjZW50KGJhc2VsaW5lVHlwZSkgKyAobGluZUhlaWdo
dChmaXJzdExpbmUsIGRpcmVjdGlvbiwgbGluZVBvc2l0aW9uTW9kZSkgLSBmb250TWV0cmljcy5o
ZWlnaHQoKSkgLyAyKS50b0ludCgpIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpbmVCcmVhay5jcHAKaW5kZXggYTIzOTQ2NTE1YThlZGE3Yzg3OWEzMmFiOTIwZjlm
YmMyYzc0NWE1NS4uZjc1ZWU3OWVmNzcyZDIzYjA0NGFlMmFlMzk0NzBkMTk5OWU4NWNkZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKQEAgLTgwLDcg
KzgwLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJMaW5lQnJlYWs6OmxpbmVIZWlnaHQoYm9vbCBmaXJz
dExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIC8qZGlyZWMKIExheW91dFVuaXQgUmVuZGVyTGluZUJy
ZWFrOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmly
c3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbGlu
ZVBvc2l0aW9uTW9kZSkgY29uc3QKIHsKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSBm
aXJzdExpbmUgPyBmaXJzdExpbmVTdHlsZSgpIDogdGhpcy0+c3R5bGUoKTsKLSAgICBjb25zdCBG
b250TWV0cmljcyYgZm9udE1ldHJpY3MgPSBzdHlsZS5mb250TWV0cmljcygpOworICAgIGNvbnN0
IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9u
dCgpOwogICAgIHJldHVybiBMYXlvdXRVbml0IHsgKGZvbnRNZXRyaWNzLmFzY2VudChiYXNlbGlu
ZVR5cGUpICsgKGxpbmVIZWlnaHQoZmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1v
ZGUpIC0gZm9udE1ldHJpY3MuaGVpZ2h0KCkpIC8gMikudG9JbnQoKSB9OwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXggMmU5YjU4NTZkMjhjOTRl
NzZjNDliMzc5YmZjNWI4Y2FmZDQ3OGQ2My4uYTliMjJjNWU1NWVhZmM0ZDM4ZGMwNmM1MDY3YjYx
ZjU3YjljZjJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNw
cApAQCAtMzc4LDcgKzM3OCw3IEBAIHN0YXRpYyBMYXlvdXRTaXplIGl0ZW1PZmZzZXRGb3JBbGln
bm1lbnQoVGV4dFJ1biB0ZXh0UnVuLCBjb25zdCBSZW5kZXJTdHlsZSogaXRlCiAgICAgaWYgKGFj
dHVhbEFsaWdubWVudCA9PSBUZXh0QWxpZ25Nb2RlOjpTdGFydCB8fCBhY3R1YWxBbGlnbm1lbnQg
PT0gVGV4dEFsaWduTW9kZTo6SnVzdGlmeSkKICAgICAgICAgYWN0dWFsQWxpZ25tZW50ID0gaXRl
bVN0eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBUZXh0QWxpZ25Nb2RlOjpMZWZ0IDog
VGV4dEFsaWduTW9kZTo6UmlnaHQ7CiAKLSAgICBMYXlvdXRTaXplIG9mZnNldCA9IExheW91dFNp
emUoMCwgaXRlbUZvbnQuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSk7CisgICAgTGF5b3V0U2l6ZSBv
ZmZzZXQgPSBMYXlvdXRTaXplKDAsIGl0ZW1Gb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgp
LmFzY2VudCgpKTsKICAgICBpZiAoYWN0dWFsQWxpZ25tZW50ID09IFRleHRBbGlnbk1vZGU6OlJp
Z2h0IHx8IGFjdHVhbEFsaWdubWVudCA9PSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRSaWdodCkgewog
ICAgICAgICBmbG9hdCB0ZXh0V2lkdGggPSBpdGVtRm9udC53aWR0aCh0ZXh0UnVuKTsKICAgICAg
ICAgb2Zmc2V0LnNldFdpZHRoKGl0ZW1Cb3VkaW5nQm94LndpZHRoKCkgLSB0ZXh0V2lkdGggLSBv
cHRpb25zU3BhY2luZ0hvcml6b250YWwpOwpAQCAtNzA0LDcgKzcwNCw3IEBAIHZvaWQgUmVuZGVy
TGlzdEJveDo6c2Nyb2xsVG8oaW50IG5ld09mZnNldCkKIAogTGF5b3V0VW5pdCBSZW5kZXJMaXN0
Qm94OjppdGVtSGVpZ2h0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3R5bGUoKS5mb250TWV0cmlj
cygpLmhlaWdodCgpICsgcm93U3BhY2luZzsKKyAgICByZXR1cm4gc3R5bGUoKS5mb250TWV0cmlj
c09mUHJpbWFyeUZvbnQoKS5oZWlnaHQoKSArIHJvd1NwYWNpbmc7CiB9CiAKIGludCBSZW5kZXJM
aXN0Qm94Ojp2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAppbmRleCAwMWU1ZGNlOGU3NTJmMzkwMThh
Yzg2NzFmNjY4NWVjMjYwYjg0ZDE2Li44ZjcxNWE0NjFjZmUwYTFmYTE4ZTE2MmZjYmJmOTQyYTdj
ZGYwMTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1h
cmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIu
Y3BwCkBAIC0xNjQ4LDcgKzE2NDgsNyBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBhaW50KFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZQogICAgICAg
ICBjb250ZXh0LnRyYW5zbGF0ZSgtbWFya2VyUmVjdC54KCksIC1tYXJrZXJSZWN0Lm1heFkoKSk7
CiAgICAgfQogCi0gICAgRmxvYXRQb2ludCB0ZXh0T3JpZ2luID0gRmxvYXRQb2ludChtYXJrZXJS
ZWN0LngoKSwgbWFya2VyUmVjdC55KCkgKyBzdHlsZSgpLmZvbnRNZXRyaWNzKCkuYXNjZW50KCkp
OworICAgIEZsb2F0UG9pbnQgdGV4dE9yaWdpbiA9IEZsb2F0UG9pbnQobWFya2VyUmVjdC54KCks
IG1hcmtlclJlY3QueSgpICsgc3R5bGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2Nl
bnQoKSk7CiAgICAgdGV4dE9yaWdpbiA9IHJvdW5kUG9pbnRUb0RldmljZVBpeGVscyhMYXlvdXRQ
b2ludCh0ZXh0T3JpZ2luKSwgZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCBzdHlsZSgp
LmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSk7CiAgICAgY29udGV4dC5kcmF3VGV4dChzdHlsZSgp
LmZvbnRDYXNjYWRlKCksIHRleHRSdW4oKSwgdGV4dE9yaWdpbik7CiB9CkBAIC0xNzgwLDcgKzE3
ODAsNyBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OmxheW91dCgpCiAgICAgICAgIHNldEhlaWdo
dChtX2ltYWdlLT5pbWFnZVNpemUodGhpcywgc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpLmhlaWdo
dCgpKTsKICAgICB9IGVsc2UgewogICAgICAgICBzZXRMb2dpY2FsV2lkdGgobWluUHJlZmVycmVk
TG9naWNhbFdpZHRoKCkpOwotICAgICAgICBzZXRMb2dpY2FsSGVpZ2h0KHN0eWxlKCkuZm9udE1l
dHJpY3MoKS5oZWlnaHQoKSk7CisgICAgICAgIHNldExvZ2ljYWxIZWlnaHQoc3R5bGUoKS5mb250
TWV0cmljc09mUHJpbWFyeUZvbnQoKS5oZWlnaHQoKSk7CiAgICAgfQogCiAgICAgc2V0TWFyZ2lu
U3RhcnQoMCk7CkBAIC0xODIwLDcgKzE4MjAsNyBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnVw
ZGF0ZUNvbnRlbnQoKQogICAgIGlmIChpc0ltYWdlKCkpIHsKICAgICAgICAgLy8gRklYTUU6IFRo
aXMgaXMgYSBzb21ld2hhdCBhcmJpdHJhcnkgd2lkdGguICBHZW5lcmF0ZWQgaW1hZ2VzIGZvciBt
YXJrZXJzIHJlYWxseSB3b24ndCBiZWNvbWUgcGFydGljdWxhcmx5IHVzZWZ1bAogICAgICAgICAv
LyB1bnRpbCB3ZSBzdXBwb3J0IHRoZSBDU1MzIG1hcmtlciBwc2V1ZG9jbGFzcyB0byBhbGxvdyBj
b250cm9sIG92ZXIgdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIG1hcmtlciBib3guCi0gICAg
ICAgIExheW91dFVuaXQgYnVsbGV0V2lkdGggPSBzdHlsZSgpLmZvbnRNZXRyaWNzKCkuYXNjZW50
KCkgLyAyX2x1OworICAgICAgICBMYXlvdXRVbml0IGJ1bGxldFdpZHRoID0gc3R5bGUoKS5mb250
TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoKSAvIDJfbHU7CiAgICAgICAgIExheW91dFNp
emUgZGVmYXVsdEJ1bGxldFNpemUoYnVsbGV0V2lkdGgsIGJ1bGxldFdpZHRoKTsKICAgICAgICAg
TGF5b3V0U2l6ZSBpbWFnZVNpemUgPSBjYWxjdWxhdGVJbWFnZUludHJpbnNpY0RpbWVuc2lvbnMo
bV9pbWFnZS5nZXQoKSwgZGVmYXVsdEJ1bGxldFNpemUsIERvTm90U2NhbGVCeUVmZmVjdGl2ZVpv
b20pOwogICAgICAgICBtX2ltYWdlLT5zZXRDb250YWluZXJDb250ZXh0Rm9yUmVuZGVyZXIoKnRo
aXMsIGltYWdlU2l6ZSwgc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpOwpAQCAtMTg2Nyw3ICsxODY3
LDcgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRo
cygpCiAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDaXJjbGU6CiAgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpEaXNjOgogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6U3F1YXJlOgotICAgICAgICBsb2dp
Y2FsV2lkdGggPSAoZm9udC5mb250TWV0cmljcygpLmFzY2VudCgpICogMiAvIDMgKyAxKSAvIDIg
KyAyOworICAgICAgICBsb2dpY2FsV2lkdGggPSAoZm9udC5mb250TWV0cmljc09mUHJpbWFyeUZv
bnQoKS5hc2NlbnQoKSAqIDIgLyAzICsgMSkgLyAyICsgMjsKICAgICAgICAgYnJlYWs7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgaWYgKCFtX3RleHRXaXRoU3VmZml4LmlzRW1wdHkoKSkKQEAgLTE4
ODUsNyArMTg4NSw3IEBAIHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6Y29tcHV0ZVByZWZlcnJlZExv
Z2ljYWxXaWR0aHMoKQogCiB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnVwZGF0ZU1hcmdpbnMoKQog
ewotICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxlKCkuZm9udE1ldHJp
Y3MoKTsKKyAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MgPSBzdHlsZSgpLmZvbnRN
ZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwogCiAgICAgTGF5b3V0VW5pdCBtYXJnaW5TdGFydDsKICAg
ICBMYXlvdXRVbml0IG1hcmdpbkVuZDsKQEAgLTE5NjEsNyArMTk2MSw3IEBAIEZsb2F0UmVjdCBS
ZW5kZXJMaXN0TWFya2VyOjpyZWxhdGl2ZU1hcmtlclJlY3QoKQogICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6Q2lyY2xlOgogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6U3F1YXJlOiB7CiAgICAgICAg
IC8vIEZJWE1FOiBBcmUgdGhlc2UgcGFydGljdWxhciByb3VuZGluZyBydWxlcyBuZWNlc3Nhcnk/
Ci0gICAgICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxlKCkuZm9udE1l
dHJpY3MoKTsKKyAgICAgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gc3R5bGUo
KS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsKICAgICAgICAgaW50IGFzY2VudCA9IGZvbnRN
ZXRyaWNzLmFzY2VudCgpOwogICAgICAgICBpbnQgYnVsbGV0V2lkdGggPSAoYXNjZW50ICogMiAv
IDMgKyAxKSAvIDI7CiAgICAgICAgIHJlbGF0aXZlUmVjdCA9IEZsb2F0UmVjdCgxLCAzICogKGFz
Y2VudCAtIGFzY2VudCAqIDIgLyAzKSAvIDIsIGJ1bGxldFdpZHRoLCBidWxsZXRXaWR0aCk7CkBA
IC0xOTcxLDcgKzE5NzEsNyBAQCBGbG9hdFJlY3QgUmVuZGVyTGlzdE1hcmtlcjo6cmVsYXRpdmVN
YXJrZXJSZWN0KCkKICAgICAgICAgaWYgKG1fdGV4dFdpdGhTdWZmaXguaXNFbXB0eSgpKQogICAg
ICAgICAgICAgcmV0dXJuIEZsb2F0UmVjdCgpOwogICAgICAgICBhdXRvJiBmb250ID0gc3R5bGUo
KS5mb250Q2FzY2FkZSgpOwotICAgICAgICByZWxhdGl2ZVJlY3QgPSBGbG9hdFJlY3QoMCwgMCwg
Zm9udC53aWR0aCh0ZXh0UnVuKCkpLCBmb250LmZvbnRNZXRyaWNzKCkuaGVpZ2h0KCkpOworICAg
ICAgICByZWxhdGl2ZVJlY3QgPSBGbG9hdFJlY3QoMCwgMCwgZm9udC53aWR0aCh0ZXh0UnVuKCkp
LCBmb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmhlaWdodCgpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UnVieVJ1bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5jcHAK
aW5kZXggNWExMTVmNTcxY2EyNjg2N2NlNmFkMDIzNjI4NmUyNDQ4ZTlmZTViYi4uYTViODEyMWFl
ZTFhMThmNjJkYTljOWQ3ZmY0YjJmODFlN2RhMTEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSdWJ5UnVuLmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgUmVuZGVyUnVi
eVJ1bjo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VI
ZWlnaHQpCiAgICAgICAgIC8vIEJvcG9tb2ZvLiBXZSBuZWVkIHRvIG1vdmUgdGhlIFJlbmRlclJ1
YnlUZXh0IG92ZXIgdG8gdGhlIHJpZ2h0IHNpZGUgYW5kIGNlbnRlciBpdAogICAgICAgICAvLyB2
ZXJ0aWNhbGx5IHJlbGF0aXZlIHRvIHRoZSBiYXNlLgogICAgICAgICBjb25zdCBGb250Q2FzY2Fk
ZSYgZm9udCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKTsKLSAgICAgICAgZmxvYXQgZGlzdGFuY2VC
ZXR3ZWVuQmFzZSA9IHN0ZDo6bWF4KGZvbnQubGV0dGVyU3BhY2luZygpLCAyLjBmICogcnQtPnN0
eWxlKCkuZm9udENhc2NhZGUoKS5mb250TWV0cmljcygpLmhlaWdodCgpKTsKKyAgICAgICAgZmxv
YXQgZGlzdGFuY2VCZXR3ZWVuQmFzZSA9IHN0ZDo6bWF4KGZvbnQubGV0dGVyU3BhY2luZygpLCAy
LjBmICogcnQtPnN0eWxlKCkuZm9udENhc2NhZGUoKS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQo
KS5oZWlnaHQoKSk7CiAgICAgICAgIHNldFdpZHRoKHdpZHRoKCkgKyBkaXN0YW5jZUJldHdlZW5C
YXNlIC0gZm9udC5sZXR0ZXJTcGFjaW5nKCkpOwogICAgICAgICBpZiAoUmVuZGVyUnVieUJhc2Uq
IHJiID0gcnVieUJhc2UoKSkgewogICAgICAgICAgICAgTGF5b3V0VW5pdCBmaXJzdExpbmVUb3A7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAppbmRleCA3NzAz
MTQ1NGFmOGZhNGI5MWRjZDdiM2Q5ZmE2NzQ2ZGJhZGZiNjFiLi5iZGI5ZTA4YzNkZTY4YjA3NTEy
NmY4ZWEyYTk0ODg4ZDhiNzA3NmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZVdpbi5jcHAKQEAgLTc3MCw3ICs3NzAsNyBAQCB2b2lkIFJlbmRlclRoZW1lV2luOjph
ZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRWxlbWVu
dAogICAgIHN0eWxlLnNldEhlaWdodChMZW5ndGgoTGVuZ3RoVHlwZTo6QXV0bykpOwogCiAgICAg
Ly8gQ2FsY3VsYXRlIG91ciBtaW4taGVpZ2h0Ci0gICAgaW50IG1pbkhlaWdodCA9IHN0eWxlLmZv
bnRNZXRyaWNzKCkuaGVpZ2h0KCk7CisgICAgaW50IG1pbkhlaWdodCA9IHN0eWxlLmZvbnRNZXRy
aWNzT2ZQcmltYXJ5Rm9udCgpLmhlaWdodCgpOwogICAgIG1pbkhlaWdodCA9IHN0ZDo6bWF4KG1p
bkhlaWdodCwgZHJvcERvd25Cb3hNaW5IZWlnaHQpOwogCiAgICAgc3R5bGUuc2V0TWluSGVpZ2h0
KExlbmd0aChtaW5IZWlnaHQsIExlbmd0aFR5cGU6OkZpeGVkKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcAppbmRleCBjYTViNzQwZDkwNDRiZDY1ZTM2NmI1
N2Q3NmMzNDI4YzNmOWVlM2Y2Li4zNGFkMmI4ZmQ0NGZhZTY5OGU2NzkzYWRkYmI4YThiNzk0Yzgx
NGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAKQEAg
LTMyNCw3ICszMjQsNyBAQCB2b2lkIFRleHRCb3hQYWludGVyOjpwYWludEZvcmVncm91bmQoY29u
c3QgU3R5bGVkTWFya2VkVGV4dCYgbWFya2VkVGV4dCkKICAgICBmbG9hdCBlbXBoYXNpc01hcmtP
ZmZzZXQgPSAwOwogICAgIGNvbnN0IEF0b21TdHJpbmcmIGVtcGhhc2lzTWFyayA9IG1fZW1waGFz
aXNNYXJrRXhpc3RzQW5kSXNBYm92ZSA/IG1fc3R5bGUudGV4dEVtcGhhc2lzTWFya1N0cmluZygp
IDogbnVsbEF0b20oKTsKICAgICBpZiAoIWVtcGhhc2lzTWFyay5pc0VtcHR5KCkpCi0gICAgICAg
IGVtcGhhc2lzTWFya09mZnNldCA9ICptX2VtcGhhc2lzTWFya0V4aXN0c0FuZElzQWJvdmUgPyAt
Zm9udC5mb250TWV0cmljcygpLmFzY2VudCgpIC0gZm9udC5lbXBoYXNpc01hcmtEZXNjZW50KGVt
cGhhc2lzTWFyaykgOiBmb250LmZvbnRNZXRyaWNzKCkuZGVzY2VudCgpICsgZm9udC5lbXBoYXNp
c01hcmtBc2NlbnQoZW1waGFzaXNNYXJrKTsKKyAgICAgICAgZW1waGFzaXNNYXJrT2Zmc2V0ID0g
Km1fZW1waGFzaXNNYXJrRXhpc3RzQW5kSXNBYm92ZSA/IC1mb250LmZvbnRNZXRyaWNzT2ZQcmlt
YXJ5Rm9udCgpLmFzY2VudCgpIC0gZm9udC5lbXBoYXNpc01hcmtEZXNjZW50KGVtcGhhc2lzTWFy
aykgOiBmb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmRlc2NlbnQoKSArIGZvbnQuZW1w
aGFzaXNNYXJrQXNjZW50KGVtcGhhc2lzTWFyayk7CiAKICAgICBUZXh0UGFpbnRlciB0ZXh0UGFp
bnRlciB7IGNvbnRleHQgfTsKICAgICB0ZXh0UGFpbnRlci5zZXRGb250KGZvbnQpOwpAQCAtNDgw
LDcgKzQ4MCw3IEBAIHZvaWQgVGV4dEJveFBhaW50ZXI6OnBhaW50Q29tcG9zaXRpb25VbmRlcmxp
bmUoY29uc3QgQ29tcG9zaXRpb25VbmRlcmxpbmUmIHVuZGVyCiAgICAgLy8gQWxsIG90aGVyIG1h
cmtlZCB0ZXh0IHVuZGVybGluZXMgYXJlIDFweCB0aGljay4KICAgICAvLyBJZiB0aGVyZSdzIG5v
dCBlbm91Z2ggc3BhY2UgdGhlIHVuZGVybGluZSB3aWxsIHRvdWNoIG9yIG92ZXJsYXAgY2hhcmFj
dGVycy4KICAgICBpbnQgbGluZVRoaWNrbmVzcyA9IDE7Ci0gICAgaW50IGJhc2VsaW5lID0gbV9z
dHlsZS5mb250TWV0cmljcygpLmFzY2VudCgpOworICAgIGludCBiYXNlbGluZSA9IG1fc3R5bGUu
Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50KCk7CiAgICAgaWYgKHVuZGVybGluZS50
aGljayAmJiB0ZXh0Qm94KCkubG9naWNhbEhlaWdodCgpIC0gYmFzZWxpbmUgPj0gMikKICAgICAg
ICAgbGluZVRoaWNrbmVzcyA9IDI7CiAKQEAgLTU5MCw3ICs1OTAsNyBAQCBGbG9hdFJlY3QgVGV4
dEJveFBhaW50ZXI6OmNvbXB1dGVQYWludFJlY3QoY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zm
c2V0KQogRmxvYXRSZWN0IFRleHRCb3hQYWludGVyOjpjYWxjdWxhdGVEb2N1bWVudE1hcmtlckJv
dW5kcyhjb25zdCBJbmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yJiB0ZXh0Qm94LCBjb25z
dCBNYXJrZWRUZXh0JiBtYXJrZWRUZXh0KQogewogICAgIGF1dG8mIGZvbnQgPSB0ZXh0Qm94LT5m
b250Q2FzY2FkZSgpOwotICAgIGF1dG8gYXNjZW50ID0gZm9udC5mb250TWV0cmljcygpLmFzY2Vu
dCgpOworICAgIGF1dG8gYXNjZW50ID0gZm9udC5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5h
c2NlbnQoKTsKICAgICBhdXRvIGZvbnRTaXplID0gc3RkOjptaW4oc3RkOjptYXgoZm9udC5zaXpl
KCksIDEwLjBmKSwgNDAuMGYpOwogICAgIGF1dG8geSA9IGFzY2VudCArIDAuMTEwMzUgKiBmb250
U2l6ZTsKICAgICBhdXRvIGhlaWdodCA9IDAuMTMyNDcgKiBmb250U2l6ZTsKQEAgLTYyMSw3ICs2
MjEsNyBAQCBjb25zdCBGb250Q2FzY2FkZSYgVGV4dEJveFBhaW50ZXI6OmZvbnRDYXNjYWRlKCkg
Y29uc3QKIAogRmxvYXRQb2ludCBUZXh0Qm94UGFpbnRlcjo6dGV4dE9yaWdpbkZyb21QYWludFJl
Y3QoY29uc3QgRmxvYXRSZWN0JiBwYWludFJlY3QpIGNvbnN0CiB7Ci0gICAgRmxvYXRQb2ludCB0
ZXh0T3JpZ2luIHsgcGFpbnRSZWN0LngoKSwgcGFpbnRSZWN0LnkoKSArIGZvbnRDYXNjYWRlKCku
Zm9udE1ldHJpY3MoKS5hc2NlbnQoKSB9OworICAgIEZsb2F0UG9pbnQgdGV4dE9yaWdpbiB7IHBh
aW50UmVjdC54KCksIHBhaW50UmVjdC55KCkgKyBmb250Q2FzY2FkZSgpLmZvbnRNZXRyaWNzT2ZQ
cmltYXJ5Rm9udCgpLmFzY2VudCgpIH07CiAgICAgaWYgKHRleHRCb3goKS5pc0NvbWJpbmVkVGV4
dCgpKSB7CiAgICAgICAgIGlmIChhdXRvIG5ld09yaWdpbiA9IGRvd25jYXN0PFJlbmRlckNvbWJp
bmVUZXh0PihtX3JlbmRlcmVyKS5jb21wdXRlVGV4dE9yaWdpbihwYWludFJlY3QpKQogICAgICAg
ICAgICAgdGV4dE9yaWdpbiA9IG5ld09yaWdpbi52YWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcAppbmRleCA0ZmY0ODE2ZmM0
M2VjZTc4ZWU4OTc3MWUxNmQ4NTVmYTA1ZmZkMWM5Li4xNjMxOTgxYjZjYTlmZjNkODE1ZGRmYzFh
MzBlNjg5YjIxZjBmNjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4
dERlY29yYXRpb25QYWludGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4
dERlY29yYXRpb25QYWludGVyLmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIFRleHREZWNvcmF0aW9u
UGFpbnRlcjo6VGV4dERlY29yYXRpb25QYWludGVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
T3B0aW9uU2V0CiAvLyBQYWludCB0ZXh0LXNoYWRvdywgdW5kZXJsaW5lLCBvdmVybGluZQogdm9p
ZCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50QmFja2dyb3VuZERlY29yYXRpb25zKGNvbnN0
IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIGNvbnN0IEZs
b2F0UG9pbnQmIGJveE9yaWdpbikKIHsKLSAgICBjb25zdCBhdXRvJiBmb250TWV0cmljcyA9IG1f
bGluZVN0eWxlLmZvbnRNZXRyaWNzKCk7CisgICAgY29uc3QgYXV0byYgZm9udE1ldHJpY3MgPSBt
X2xpbmVTdHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsKICAgICBmbG9hdCB0ZXh0RGVj
b3JhdGlvblRoaWNrbmVzcyA9IG1fbGluZVN0eWxlLnRleHREZWNvcmF0aW9uVGhpY2tuZXNzKCku
cmVzb2x2ZShtX2xpbmVTdHlsZS5jb21wdXRlZEZvbnRTaXplKCksIGZvbnRNZXRyaWNzKTsKICAg
ICBGbG9hdFBvaW50IGxvY2FsT3JpZ2luID0gYm94T3JpZ2luOwogCkBAIC0yNzksNyArMjc5LDcg
QEAgdm9pZCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50QmFja2dyb3VuZERlY29yYXRpb25z
KGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGMKICAgICAgICAgaWYgKG1fZGVjb3JhdGlvbnMuY29u
dGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpKSB7CiAgICAgICAgICAgICBmbG9h
dCB0ZXh0RGVjb3JhdGlvbkJhc2VGb250U2l6ZSA9IDE2OwogICAgICAgICAgICAgYXV0byBkZWZh
dWx0R2FwID0gbV9saW5lU3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpIC8gdGV4dERlY29yYXRpb25C
YXNlRm9udFNpemU7Ci0gICAgICAgICAgICBmbG9hdCBvZmZzZXQgPSBjb21wdXRlVW5kZXJsaW5l
T2Zmc2V0KG1fbGluZVN0eWxlLnRleHRVbmRlcmxpbmVQb3NpdGlvbigpLCBtX2xpbmVTdHlsZS50
ZXh0VW5kZXJsaW5lT2Zmc2V0KCksIG1fbGluZVN0eWxlLmZvbnRNZXRyaWNzKCksIG1fdGV4dEJv
eCwgZGVmYXVsdEdhcCk7CisgICAgICAgICAgICBmbG9hdCBvZmZzZXQgPSBjb21wdXRlVW5kZXJs
aW5lT2Zmc2V0KG1fbGluZVN0eWxlLnRleHRVbmRlcmxpbmVQb3NpdGlvbigpLCBtX2xpbmVTdHls
ZS50ZXh0VW5kZXJsaW5lT2Zmc2V0KCksIG1fbGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5
Rm9udCgpLCBtX3RleHRCb3gsIGRlZmF1bHRHYXApOwogICAgICAgICAgICAgZmxvYXQgd2F2eU9m
ZnNldCA9IG1fc3R5bGVzLnVuZGVybGluZVN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6Oldh
dnkgPyBtX3dhdnlPZmZzZXQgOiAwOwogICAgICAgICAgICAgRmxvYXRSZWN0IHJlY3QobG9jYWxP
cmlnaW4sIEZsb2F0U2l6ZShtX3dpZHRoLCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcykpOwogICAg
ICAgICAgICAgcmVjdC5tb3ZlKDAsIG9mZnNldCArIHdhdnlPZmZzZXQpOwpAQCAtMzEwLDEzICsz
MTAsMTMgQEAgdm9pZCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50Rm9yZWdyb3VuZERlY29y
YXRpb25zKGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWcKICAgICBpZiAoIW1fZGVjb3JhdGlvbnMu
Y29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3VnaCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGZsb2F0IHRleHREZWNvcmF0aW9uVGhpY2tuZXNzID0gbV9saW5lU3R5bGUudGV4
dERlY29yYXRpb25UaGlja25lc3MoKS5yZXNvbHZlKG1fbGluZVN0eWxlLmNvbXB1dGVkRm9udFNp
emUoKSwgbV9saW5lU3R5bGUuZm9udE1ldHJpY3MoKSk7CisgICAgZmxvYXQgdGV4dERlY29yYXRp
b25UaGlja25lc3MgPSBtX2xpbmVTdHlsZS50ZXh0RGVjb3JhdGlvblRoaWNrbmVzcygpLnJlc29s
dmUobV9saW5lU3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpLCBtX2xpbmVTdHlsZS5mb250TWV0cmlj
c09mUHJpbWFyeUZvbnQoKSk7CiAgICAgcGFpbnRMaW5lVGhyb3VnaChtX3N0eWxlcy5saW5ldGhy
b3VnaENvbG9yLCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcywgYm94T3JpZ2luKTsKIH0KIAogdm9p
ZCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50TGluZVRocm91Z2goY29uc3QgQ29sb3ImIGNv
bG9yLCBmbG9hdCB0aGlja25lc3MsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsT3JpZ2luKQogewot
ICAgIGNvbnN0IGF1dG8mIGZvbnRNZXRyaWNzID0gbV9saW5lU3R5bGUuZm9udE1ldHJpY3MoKTsK
KyAgICBjb25zdCBhdXRvJiBmb250TWV0cmljcyA9IG1fbGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQ
cmltYXJ5Rm9udCgpOwogICAgIEZsb2F0UmVjdCByZWN0KGxvY2FsT3JpZ2luLCBGbG9hdFNpemUo
bV93aWR0aCwgdGhpY2tuZXNzKSk7CiAgICAgZmxvYXQgYXV0b1RleHREZWNvcmF0aW9uVGhpY2tu
ZXNzID0gVGV4dERlY29yYXRpb25UaGlja25lc3M6OmNyZWF0ZVdpdGhBdXRvKCkucmVzb2x2ZSht
X2xpbmVTdHlsZS5jb21wdXRlZEZvbnRTaXplKCksIGZvbnRNZXRyaWNzKTsKICAgICBhdXRvIGNl
bnRlciA9IDIgKiBmb250TWV0cmljcy5mbG9hdEFzY2VudCgpIC8gMyArIGF1dG9UZXh0RGVjb3Jh
dGlvblRoaWNrbmVzcyAvIDI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
VGV4dFBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmNw
cAppbmRleCBhNTllZWQ0NGY0YWEzNDQ2MzcyOGZiNmUyNjExNWQ4OTVlNTQ0NzljLi5mZmE3YTdh
MTRjN2FiYTkwOGJmZmNiNmZkNTAxZTEyN2U5MDM4YWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9UZXh0UGFpbnRlci5jcHAKQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIFRleHRQYWludGVy
OjpwYWludFRleHRBbmRFbXBoYXNpc01hcmtzSWZOZWVkZWQoY29uc3QgVGV4dFJ1biYgdGV4dFJ1
biwgY29ucwogICAgIHVwZGF0ZUdyYXBoaWNzQ29udGV4dChtX2NvbnRleHQsIHBhaW50U3R5bGUs
IFVzZUVtcGhhc2lzTWFya0NvbG9yKTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGV4dFJ1
bj4gb2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXJUZXh0UnVuKFN0cmluZ1ZpZXcoJm9iamVjdFJl
cGxhY2VtZW50Q2hhcmFjdGVyLCAxKSk7CiAgICAgY29uc3QgVGV4dFJ1biYgZW1waGFzaXNNYXJr
VGV4dFJ1biA9IG1fY29tYmluZWRUZXh0ID8gb2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXJUZXh0
UnVuLmdldCgpIDogdGV4dFJ1bjsKLSAgICBGbG9hdFBvaW50IGVtcGhhc2lzTWFya1RleHRPcmln
aW4gPSBtX2NvbWJpbmVkVGV4dCA/IEZsb2F0UG9pbnQoYm94T3JpZ2luLngoKSArIGJveFJlY3Qu
d2lkdGgoKSAvIDIsIGJveE9yaWdpbi55KCkgKyBtX2ZvbnQtPmZvbnRNZXRyaWNzKCkuYXNjZW50
KCkpIDogdGV4dE9yaWdpbjsKKyAgICBGbG9hdFBvaW50IGVtcGhhc2lzTWFya1RleHRPcmlnaW4g
PSBtX2NvbWJpbmVkVGV4dCA/IEZsb2F0UG9pbnQoYm94T3JpZ2luLngoKSArIGJveFJlY3Qud2lk
dGgoKSAvIDIsIGJveE9yaWdpbi55KCkgKyBtX2ZvbnQtPmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9u
dCgpLmFzY2VudCgpKSA6IHRleHRPcmlnaW47CiAgICAgaWYgKG1fY29tYmluZWRUZXh0KQogICAg
ICAgICBtX2NvbnRleHQuY29uY2F0Q1RNKHJvdGF0aW9uKGJveFJlY3QsIENsb2Nrd2lzZSkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lSW5saW5lSGVh
ZGVycy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUlubGluZUhlYWRlcnMu
aAppbmRleCBjMjRkNWNhYThlZTg5NGYzZWI1OTJjNzczNjczYzRhYTEyMDVhY2YyLi41YTk2YzU4
OWY0ZWQ5M2MxODA1YTg0OGFmMWQxYjM4Nzk3ODI5MmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbGluZS9MaW5lSW5saW5lSGVhZGVycy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9saW5lL0xpbmVJbmxpbmVIZWFkZXJzLmgKQEAgLTU2LDcgKzU2LDcgQEAg
aW5saW5lIGJvb2wgcmVxdWlyZXNMaW5lQm94Rm9yQ29udGVudChjb25zdCBSZW5kZXJJbmxpbmUm
IGZsb3csIGNvbnN0IExpbmVJbmZvJgogICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50
U3R5bGUgPSBsaW5lU3R5bGUoKnBhcmVudCwgbGluZUluZm8pOwogICAgICAgICBpZiAoZmxvd1N0
eWxlLmxpbmVIZWlnaHQoKSAhPSBwYXJlbnRTdHlsZS5saW5lSGVpZ2h0KCkKICAgICAgICAgICAg
IHx8IGZsb3dTdHlsZS52ZXJ0aWNhbEFsaWduKCkgIT0gcGFyZW50U3R5bGUudmVydGljYWxBbGln
bigpCi0gICAgICAgICAgICB8fCAhcGFyZW50U3R5bGUuZm9udENhc2NhZGUoKS5mb250TWV0cmlj
cygpLmhhc0lkZW50aWNhbEFzY2VudERlc2NlbnRBbmRMaW5lR2FwKGZsb3dTdHlsZS5mb250Q2Fz
Y2FkZSgpLmZvbnRNZXRyaWNzKCkpKQorICAgICAgICAgICAgfHwgIXBhcmVudFN0eWxlLmZvbnRD
YXNjYWRlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuaGFzSWRlbnRpY2FsQXNjZW50RGVz
Y2VudEFuZExpbmVHYXAoZmxvd1N0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3NPZlByaW1h
cnlGb250KCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TEJsb2NrLmNwcAppbmRleCBlZDhmMjBmOTg1YmFhMjU0NzQ4NDFiMjY4YTQ1NDk3OTY0ZWYyZWJl
Li5kMDViYTQ3Njk0MzQ4YzFmMzBlYjFjYTAyNmVjZGU0NTlhZWZlYjEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcApA
QCAtNzksNyArNzksNyBAQCBzdGF0aWMgTGF5b3V0VW5pdCBheGlzSGVpZ2h0KGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSkKIAogICAgIC8vIE90aGVyd2lzZSwgdGhlIGlkZWEgaXMgdG8gdHJ5IGFu
ZCB1c2UgdGhlIG1pZGRsZSBvZiBvcGVyYXRvcnMgYXMgdGhlIG1hdGggYXhpcyB3aGljaCB3ZSB0
aHVzIGFwcHJveGltYXRlIGJ5ICJoYWxmIG9mIHRoZSB4LWhlaWdodCIuCiAgICAgLy8gTm90ZSB0
aGF0IEdlY2tvIGhhcyBhIHNsb3dlciBidXQgbW9yZSBhY2N1cmF0ZSB2ZXJzaW9uIHRoYXQgbWVh
c3VyZXMgaGFsZiBvZiB0aGUgaGVpZ2h0IG9mIFUrMjIxMiBNSU5VUyBTSUdOLgotICAgIHJldHVy
biBMYXlvdXRVbml0KHN0eWxlLmZvbnRNZXRyaWNzKCkueEhlaWdodCgpIC8gMik7CisgICAgcmV0
dXJuIExheW91dFVuaXQoc3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkueEhlaWdodCgp
IC8gMik7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyTWF0aE1MQmxvY2s6Om1hdGhBeGlzSGVpZ2h0
KCkgY29uc3QKQEAgLTE2MSw3ICsxNjEsNyBAQCBMYXlvdXRVbml0IHRvVXNlclVuaXRzKGNvbnN0
IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCYgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYgcwogICAg
IGNhc2UgTWF0aE1MRWxlbWVudDo6TGVuZ3RoVHlwZTo6RW06CiAgICAgICAgIHJldHVybiBMYXlv
dXRVbml0KGxlbmd0aC52YWx1ZSAqIHN0eWxlLmZvbnRDYXNjYWRlKCkuc2l6ZSgpKTsKICAgICBj
YXNlIE1hdGhNTEVsZW1lbnQ6Okxlbmd0aFR5cGU6OkV4OgotICAgICAgICByZXR1cm4gTGF5b3V0
VW5pdChsZW5ndGgudmFsdWUgKiBzdHlsZS5mb250TWV0cmljcygpLnhIZWlnaHQoKSk7CisgICAg
ICAgIHJldHVybiBMYXlvdXRVbml0KGxlbmd0aC52YWx1ZSAqIHN0eWxlLmZvbnRNZXRyaWNzT2ZQ
cmltYXJ5Rm9udCgpLnhIZWlnaHQoKSk7CiAgICAgY2FzZSBNYXRoTUxFbGVtZW50OjpMZW5ndGhU
eXBlOjpNYXRoVW5pdDoKICAgICAgICAgcmV0dXJuIExheW91dFVuaXQobGVuZ3RoLnZhbHVlICog
c3R5bGUuZm9udENhc2NhZGUoKS5zaXplKCkgLyAxOCk7CiAgICAgY2FzZSBNYXRoTUxFbGVtZW50
OjpMZW5ndGhUeXBlOjpQZXJjZW50YWdlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAKaW5kZXggMmEzOGE2OGMwM2ViNzg0MGJk
MDI4YmY5MGZlYmUyNDA3N2E0YzgwYi4uYzZjYTEyZTUzZTFlZGUyMjAzYjM2Zjk0MjZmYTc5ZDQ1
MGVlN2U5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFJvb3QuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgUmVuZGVyTWF0aE1MUm9vdDo6
VmVydGljYWxQYXJhbWV0ZXJzIFJlbmRlck1hdGhNTFJvb3Q6OnZlcnRpY2FsUGFyYW1ldGVycygp
CiAgICAgICAgIC8vIFJhZGljYWxEZWdyZWVCb3R0b21SYWlzZVBlcmNlbnQ6IFN1Z2dlc3RlZCB2
YWx1ZSBpcyA2MCUuCiAgICAgICAgIHBhcmFtZXRlcnMucnVsZVRoaWNrbmVzcyA9IHJ1bGVUaGlj
a25lc3NGYWxsYmFjaygpOwogICAgICAgICBpZiAoc3R5bGUoKS5tYXRoU3R5bGUoKSA9PSBNYXRo
U3R5bGU6Ok5vcm1hbCkKLSAgICAgICAgICAgIHBhcmFtZXRlcnMudmVydGljYWxHYXAgPSBwYXJh
bWV0ZXJzLnJ1bGVUaGlja25lc3MgKyBzdHlsZSgpLmZvbnRNZXRyaWNzKCkueEhlaWdodCgpIC8g
NDsKKyAgICAgICAgICAgIHBhcmFtZXRlcnMudmVydGljYWxHYXAgPSBwYXJhbWV0ZXJzLnJ1bGVU
aGlja25lc3MgKyBzdHlsZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLnhIZWlnaHQoKSAv
IDQ7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBhcmFtZXRlcnMudmVydGljYWxHYXAgPSA1
ICogcGFyYW1ldGVycy5ydWxlVGhpY2tuZXNzIC8gNDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAKaW5kZXggNjA5
NDM4OGEzMWIyYzFkMWE5MjU4OTIyOTcyZTBmMTFkOGM5YThhYy4uNDI4Mjk3MzIxZmNkMjRkMTBh
MDBkODE5YmQzZDA2Yjk5NGJiNjY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwCkBAIC0yNDIsMTQgKzI0Miwx
NCBAQCBhdXRvIFJlbmRlck1hdGhNTFNjcmlwdHM6OnZlcnRpY2FsUGFyYW1ldGVycygpIGNvbnN0
IC0+IFZlcnRpY2FsUGFyYW1ldGVycwogICAgICAgICBwYXJhbWV0ZXJzLnN1cGVyc2NyaXB0Qm90
dG9tTWF4V2l0aFN1YnNjcmlwdCA9IG1hdGhEYXRhLT5nZXRNYXRoQ29uc3RhbnQocHJpbWFyeUZv
bnQsIE9wZW5UeXBlTWF0aERhdGE6OlN1cGVyc2NyaXB0Qm90dG9tTWF4V2l0aFN1YnNjcmlwdCk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gRGVmYXVsdCBoZXVyaXN0aWMgdmFsdWVzIHdoZW4g
eW91IGRvIG5vdCBoYXZlIGEgZm9udC4KLSAgICAgICAgcGFyYW1ldGVycy5zdWJzY3JpcHRTaGlm
dERvd24gPSBzdHlsZSgpLmZvbnRNZXRyaWNzKCkueEhlaWdodCgpIC8gMzsKLSAgICAgICAgcGFy
YW1ldGVycy5zdXBlcnNjcmlwdFNoaWZ0VXAgPSBzdHlsZSgpLmZvbnRNZXRyaWNzKCkueEhlaWdo
dCgpOwotICAgICAgICBwYXJhbWV0ZXJzLnN1YnNjcmlwdEJhc2VsaW5lRHJvcE1pbiA9IHN0eWxl
KCkuZm9udE1ldHJpY3MoKS54SGVpZ2h0KCkgLyAyOwotICAgICAgICBwYXJhbWV0ZXJzLnN1cGVy
U2NyaXB0QmFzZWxpbmVEcm9wTWF4ID0gc3R5bGUoKS5mb250TWV0cmljcygpLnhIZWlnaHQoKSAv
IDI7CisgICAgICAgIHBhcmFtZXRlcnMuc3Vic2NyaXB0U2hpZnREb3duID0gc3R5bGUoKS5mb250
TWV0cmljc09mUHJpbWFyeUZvbnQoKS54SGVpZ2h0KCkgLyAzOworICAgICAgICBwYXJhbWV0ZXJz
LnN1cGVyc2NyaXB0U2hpZnRVcCA9IHN0eWxlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCku
eEhlaWdodCgpOworICAgICAgICBwYXJhbWV0ZXJzLnN1YnNjcmlwdEJhc2VsaW5lRHJvcE1pbiA9
IHN0eWxlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkueEhlaWdodCgpIC8gMjsKKyAgICAg
ICAgcGFyYW1ldGVycy5zdXBlclNjcmlwdEJhc2VsaW5lRHJvcE1heCA9IHN0eWxlKCkuZm9udE1l
dHJpY3NPZlByaW1hcnlGb250KCkueEhlaWdodCgpIC8gMjsKICAgICAgICAgcGFyYW1ldGVycy5z
dWJTdXBlcnNjcmlwdEdhcE1pbiA9IHN0eWxlKCkuZm9udENhc2NhZGUoKS5zaXplKCkgLyA1Owot
ICAgICAgICBwYXJhbWV0ZXJzLnN1cGVyc2NyaXB0Qm90dG9tTWluID0gc3R5bGUoKS5mb250TWV0
cmljcygpLnhIZWlnaHQoKSAvIDQ7Ci0gICAgICAgIHBhcmFtZXRlcnMuc3Vic2NyaXB0VG9wTWF4
ID0gNCAqIHN0eWxlKCkuZm9udE1ldHJpY3MoKS54SGVpZ2h0KCkgLyA1OwotICAgICAgICBwYXJh
bWV0ZXJzLnN1cGVyc2NyaXB0Qm90dG9tTWF4V2l0aFN1YnNjcmlwdCA9IDQgKiBzdHlsZSgpLmZv
bnRNZXRyaWNzKCkueEhlaWdodCgpIC8gNTsKKyAgICAgICAgcGFyYW1ldGVycy5zdXBlcnNjcmlw
dEJvdHRvbU1pbiA9IHN0eWxlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkueEhlaWdodCgp
IC8gNDsKKyAgICAgICAgcGFyYW1ldGVycy5zdWJzY3JpcHRUb3BNYXggPSA0ICogc3R5bGUoKS5m
b250TWV0cmljc09mUHJpbWFyeUZvbnQoKS54SGVpZ2h0KCkgLyA1OworICAgICAgICBwYXJhbWV0
ZXJzLnN1cGVyc2NyaXB0Qm90dG9tTWF4V2l0aFN1YnNjcmlwdCA9IDQgKiBzdHlsZSgpLmZvbnRN
ZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLnhIZWlnaHQoKSAvIDU7CiAgICAgfQogICAgIHJldHVybiBw
YXJhbWV0ZXJzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwCmluZGV4IGM3MDMyYzU1Yjc5MDU2OWVjZjdj
YWQzMTE2NDY0MGY3N2Y0NDJjOWQuLjk4YTJiOTIxN2QyNDZkNmVkYmU4OTU0YzhhZjRjMWI5Zjdl
OWE0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MVW5kZXJPdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHAKQEAgLTI0OCw3ICsyNDgsNyBAQCBSZW5kZXJNYXRo
TUxVbmRlck92ZXI6OlZlcnRpY2FsUGFyYW1ldGVycyBSZW5kZXJNYXRoTUxVbmRlck92ZXI6OnZl
cnRpY2FsUGFyYW1ldAogICAgICAgICBwYXJhbWV0ZXJzLm92ZXJHYXBNaW4gPSAzICogZGVmYXVs
dExpbmVUaGlja25lc3M7CiAgICAgICAgIHBhcmFtZXRlcnMudW5kZXJFeHRyYURlc2NlbmRlciA9
IGRlZmF1bHRMaW5lVGhpY2tuZXNzOwogICAgICAgICBwYXJhbWV0ZXJzLm92ZXJFeHRyYUFzY2Vu
ZGVyID0gZGVmYXVsdExpbmVUaGlja25lc3M7Ci0gICAgICAgIHBhcmFtZXRlcnMuYWNjZW50QmFz
ZUhlaWdodCA9IHN0eWxlKCkuZm9udE1ldHJpY3MoKS54SGVpZ2h0KCk7CisgICAgICAgIHBhcmFt
ZXRlcnMuYWNjZW50QmFzZUhlaWdodCA9IHN0eWxlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250
KCkueEhlaWdodCgpOwogICAgICAgICBwYXJhbWV0ZXJzLnVzZVVuZGVyT3ZlckJhckZhbGxCYWNr
ID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggNTZmMDMzZTQ1N2Ni
NzgyNDE0M2Q1ZTE4MjQ5OGUwZGYwODRlYjk3Mi4uZTY4MDQ3NWQ3Nzg2YmU1ZmM5NDMzMzEwZDQz
NTllMjlmMzIyMmY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuY3BwCkBAIC0xODE1LDkgKzE4MTUsOSBAQCBjb25zdCBGb250Q2FzY2FkZSYgUmVu
ZGVyU3R5bGU6OmZvbnRDYXNjYWRlKCkgY29uc3QKICAgICByZXR1cm4gbV9pbmhlcml0ZWREYXRh
LT5mb250Q2FzY2FkZTsKIH0KIAotY29uc3QgRm9udE1ldHJpY3MmIFJlbmRlclN0eWxlOjpmb250
TWV0cmljcygpIGNvbnN0Citjb25zdCBGb250TWV0cmljcyYgUmVuZGVyU3R5bGU6OmZvbnRNZXRy
aWNzT2ZQcmltYXJ5Rm9udCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5oZXJpdGVkRGF0YS0+
Zm9udENhc2NhZGUuZm9udE1ldHJpY3MoKTsKKyAgICByZXR1cm4gbV9pbmhlcml0ZWREYXRhLT5m
b250Q2FzY2FkZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsKIH0KIAogY29uc3QgRm9udENh
c2NhZGVEZXNjcmlwdGlvbiYgUmVuZGVyU3R5bGU6OmZvbnREZXNjcmlwdGlvbigpIGNvbnN0CkBA
IC0xODk2LDcgKzE4OTYsNyBAQCBpbnQgUmVuZGVyU3R5bGU6OmNvbXB1dGVMaW5lSGVpZ2h0KGNv
bnN0IExlbmd0aCYgbGluZUhlaWdodExlbmd0aCkgY29uc3QKIHsKICAgICAvLyBOZWdhdGl2ZSB2
YWx1ZSBtZWFucyB0aGUgbGluZSBoZWlnaHQgaXMgbm90IHNldC4gVXNlIHRoZSBmb250J3MgYnVp
bHQtaW4gc3BhY2luZy4KICAgICBpZiAobGluZUhlaWdodExlbmd0aC5pc05lZ2F0aXZlKCkpCi0g
ICAgICAgIHJldHVybiBmb250TWV0cmljcygpLmxpbmVTcGFjaW5nKCk7CisgICAgICAgIHJldHVy
biBmb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5saW5lU3BhY2luZygpOwogCiAgICAgaWYgKGxp
bmVIZWlnaHRMZW5ndGguaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpCiAgICAgICAgIHJldHVybiBt
aW5pbXVtVmFsdWVGb3JMZW5ndGgobGluZUhlaWdodExlbmd0aCwgY29tcHV0ZWRGb250UGl4ZWxT
aXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApp
bmRleCA0ODg3NTE3OTc2MzE3MDM1M2ZhYTE5ZGRhZTQ3NzAwYjhjNTAwNTIwLi4xOWFiYzY4YzBk
YmMyY2UzOTJjMTNjMDAyOThiOTI1ZTUwOGFjODVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtMzU2LDcgKzM1Niw3IEBAIHB1YmxpYzoKICAg
ICBUYWJsZUxheW91dFR5cGUgdGFibGVMYXlvdXQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxUYWJsZUxheW91dFR5cGU+KG1fbm9uSW5oZXJpdGVkRmxhZ3MudGFibGVMYXlvdXQpOyB9CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBGb250Q2FzY2FkZSYgZm9udENhc2NhZGUoKSBjb25z
dDsKLSAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3NP
ZlByaW1hcnlGb250KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgRm9udENhc2Nh
ZGVEZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uKCkgY29uc3Q7CiAgICAgZmxvYXQgc3BlY2lm
aWVkRm9udFNpemUoKSBjb25zdDsKICAgICBmbG9hdCBjb21wdXRlZEZvbnRTaXplKCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGlu
ZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVU
ZXh0LmNwcAppbmRleCA5YTM5YmQxYjRlM2ZjZWQ3YzE5MzMxYWM3ODEyNDk0YWYyMzE5NzI1Li45
NTI2YWNlYzhjMWU0ZTAxYjU5YWY5MzAwYmM4ZmRiN2ZlMTBmYWM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAKQEAgLTE1
NSw3ICsxNTUsNyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyU1ZHSW5saW5lVGV4dDo6cG9zaXRp
b25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsCiAgICAgaWYgKCFmaXJzdFRleHRC
b3goKSB8fCB0ZXh0KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBv
c2l0aW9uKDAsIEFmZmluaXR5OjpEb3duc3RyZWFtKTsKIAotICAgIGZsb2F0IGJhc2VsaW5lID0g
bV9zY2FsZWRGb250LmZvbnRNZXRyaWNzKCkuZmxvYXRBc2NlbnQoKTsKKyAgICBmbG9hdCBiYXNl
bGluZSA9IG1fc2NhbGVkRm9udC5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5mbG9hdEFzY2Vu
dCgpOwogCiAgICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9jayA9IHRoaXMtPmNvbnRhaW5p
bmdCbG9jaygpOwogICAgIEFTU0VSVChjb250YWluaW5nQmxvY2spOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKaW5kZXggNGQzMmE4MThi
Zjg3YWZhZjdmOTMzZjA1MzkyODYxNjhiYmVkYWUzZi4uYzgwNDIzNjNhZTIzMjg0ODVjNmEzZGMw
OTZlNjM4Yzg3M2U1OTcwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR0lubGluZVRleHRCb3guY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgRmxvYXRSZWN0IFNWR0lu
bGluZVRleHRCb3g6OnNlbGVjdGlvblJlY3RGb3JUZXh0RnJhZ21lbnQoY29uc3QgU1ZHVGV4dEZy
YWdtZW50JgogICAgIEFTU0VSVChzY2FsaW5nRmFjdG9yKTsKIAogICAgIGNvbnN0IEZvbnRDYXNj
YWRlJiBzY2FsZWRGb250ID0gcmVuZGVyZXIoKS5zY2FsZWRGb250KCk7Ci0gICAgY29uc3QgRm9u
dE1ldHJpY3MmIHNjYWxlZEZvbnRNZXRyaWNzID0gc2NhbGVkRm9udC5mb250TWV0cmljcygpOwor
ICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBzY2FsZWRGb250TWV0cmljcyA9IHNjYWxlZEZvbnQuZm9u
dE1ldHJpY3NPZlByaW1hcnlGb250KCk7CiAgICAgRmxvYXRQb2ludCB0ZXh0T3JpZ2luKGZyYWdt
ZW50LngsIGZyYWdtZW50LnkpOwogICAgIGlmIChzY2FsaW5nRmFjdG9yICE9IDEpCiAgICAgICAg
IHRleHRPcmlnaW4uc2NhbGUoc2NhbGluZ0ZhY3Rvcik7CkBAIC01MTEsNyArNTExLDcgQEAgdm9p
ZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb25XaXRoU3R5bGUoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBPcHRpb24KIAogICAgIEZsb2F0UG9pbnQgZGVjb3JhdGlvbk9yaWdpbihm
cmFnbWVudC54LCBmcmFnbWVudC55KTsKICAgICBmbG9hdCB3aWR0aCA9IGZyYWdtZW50LndpZHRo
OwotICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBzY2FsZWRGb250TWV0cmljcyA9IHNjYWxlZEZvbnQu
Zm9udE1ldHJpY3MoKTsKKyAgICBjb25zdCBGb250TWV0cmljcyYgc2NhbGVkRm9udE1ldHJpY3Mg
PSBzY2FsZWRGb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwogCiAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgIGlmIChzY2FsaW5nRmFj
dG9yICE9IDEpIHsKQEAgLTU0Niw3ICs1NDYsNyBAQCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBh
aW50VGV4dFdpdGhTaGFkb3dzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgUmVuZAog
ICAgICAgICB0ZXh0U2l6ZS5zY2FsZShzY2FsaW5nRmFjdG9yKTsKICAgICB9CiAKLSAgICBGbG9h
dFJlY3Qgc2hhZG93UmVjdChGbG9hdFBvaW50KHRleHRPcmlnaW4ueCgpLCB0ZXh0T3JpZ2luLnko
KSAtIHNjYWxlZEZvbnQuZm9udE1ldHJpY3MoKS5mbG9hdEFzY2VudCgpKSwgdGV4dFNpemUpOwor
ICAgIEZsb2F0UmVjdCBzaGFkb3dSZWN0KEZsb2F0UG9pbnQodGV4dE9yaWdpbi54KCksIHRleHRP
cmlnaW4ueSgpIC0gc2NhbGVkRm9udC5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5mbG9hdEFz
Y2VudCgpKSwgdGV4dFNpemUpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0KiB1c2VkQ29udGV4dCA9
ICZjb250ZXh0OwogICAgIGRvIHsKQEAgLTYxMyw3ICs2MTMsNyBAQCBGbG9hdFJlY3QgU1ZHSW5s
aW5lVGV4dEJveDo6Y2FsY3VsYXRlQm91bmRhcmllcygpIGNvbnN0CiAgICAgZmxvYXQgc2NhbGlu
Z0ZhY3RvciA9IHJlbmRlcmVyKCkuc2NhbGluZ0ZhY3RvcigpOwogICAgIEFTU0VSVChzY2FsaW5n
RmFjdG9yKTsKIAotICAgIGZsb2F0IGJhc2VsaW5lID0gcmVuZGVyZXIoKS5zY2FsZWRGb250KCku
Zm9udE1ldHJpY3MoKS5mbG9hdEFzY2VudCgpIC8gc2NhbGluZ0ZhY3RvcjsKKyAgICBmbG9hdCBi
YXNlbGluZSA9IHJlbmRlcmVyKCkuc2NhbGVkRm9udCgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9u
dCgpLmZsb2F0QXNjZW50KCkgLyBzY2FsaW5nRmFjdG9yOwogCiAgICAgQWZmaW5lVHJhbnNmb3Jt
IGZyYWdtZW50VHJhbnNmb3JtOwogICAgIHVuc2lnbmVkIHRleHRGcmFnbWVudHNTaXplID0gbV90
ZXh0RnJhZ21lbnRzLnNpemUoKTsKQEAgLTY0OCw3ICs2NDgsNyBAQCBib29sIFNWR0lubGluZVRl
eHRCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0
UmVzdWx0JgogICAgICAgICAgICAgICAgIGZsb2F0IHNjYWxpbmdGYWN0b3IgPSByZW5kZXJlcigp
LnNjYWxpbmdGYWN0b3IoKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoc2NhbGluZ0ZhY3Rvcik7
CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgZmxvYXQgYmFzZWxpbmUgPSByZW5k
ZXJlcigpLnNjYWxlZEZvbnQoKS5mb250TWV0cmljcygpLmZsb2F0QXNjZW50KCkgLyBzY2FsaW5n
RmFjdG9yOworICAgICAgICAgICAgICAgIGZsb2F0IGJhc2VsaW5lID0gcmVuZGVyZXIoKS5zY2Fs
ZWRGb250KCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuZmxvYXRBc2NlbnQoKSAvIHNjYWxp
bmdGYWN0b3I7CiAKICAgICAgICAgICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gZnJhZ21lbnRUcmFu
c2Zvcm07CiAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBmcmFnbWVudCA6IG1fdGV4dEZyYWdt
ZW50cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0
TGF5b3V0RW5naW5lQmFzZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmUuY3BwCmluZGV4IDdiZTIwZDg0MTM4MWRlODVlMDI0
NTQ4OGZlNWVlNTlhNmY3MTJjN2QuLjZjMjI1NGQxZmY4MTYzNzE3MjY2NmU3MTVmMWViNWM2ODRl
OTJiNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExh
eW91dEVuZ2luZUJhc2VsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZS5jcHAKQEAgLTQ4LDkgKzQ4LDkgQEAgZmxvYXQg
U1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lOjpjYWxjdWxhdGVCYXNlbGluZVNoaWZ0KGNvbnN0
IFNWR1JlbmRlclN0eWxlJgogICAgIGNhc2UgQmFzZWxpbmVTaGlmdDo6QmFzZWxpbmU6CiAgICAg
ICAgIHJldHVybiAwOwogICAgIGNhc2UgQmFzZWxpbmVTaGlmdDo6U3ViOgotICAgICAgICByZXR1
cm4gLW1fZm9udC5mb250TWV0cmljcygpLmZsb2F0SGVpZ2h0KCkgLyAyOworICAgICAgICByZXR1
cm4gLW1fZm9udC5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5mbG9hdEhlaWdodCgpIC8gMjsK
ICAgICBjYXNlIEJhc2VsaW5lU2hpZnQ6OlN1cGVyOgotICAgICAgICByZXR1cm4gbV9mb250LmZv
bnRNZXRyaWNzKCkuZmxvYXRIZWlnaHQoKSAvIDI7CisgICAgICAgIHJldHVybiBtX2ZvbnQuZm9u
dE1ldHJpY3NPZlByaW1hcnlGb250KCkuZmxvYXRIZWlnaHQoKSAvIDI7CiAgICAgY2FzZSBCYXNl
bGluZVNoaWZ0OjpMZW5ndGg6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTExNCw3ICsxMTQs
NyBAQCBmbG9hdCBTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmU6OmNhbGN1bGF0ZUFsaWdubWVu
dEJhc2VsaW5lU2hpZnQoYm9vbCBpc1ZlcnRpYwogICAgICAgICBBU1NFUlQoYmFzZWxpbmUgIT0g
QWxpZ25tZW50QmFzZWxpbmU6OkF1dG8pOwogICAgIH0KIAotICAgIGNvbnN0IEZvbnRNZXRyaWNz
JiBmb250TWV0cmljcyA9IG1fZm9udC5mb250TWV0cmljcygpOworICAgIGNvbnN0IEZvbnRNZXRy
aWNzJiBmb250TWV0cmljcyA9IG1fZm9udC5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsKIAog
ICAgIC8vIE5vdGU6IGh0dHA6Ly93aWtpLmFwYWNoZS5vcmcveG1sZ3JhcGhpY3MtZm9wL0xpbmVM
YXlvdXQvQWxpZ25tZW50SGFuZGxpbmcKICAgICBzd2l0Y2ggKGJhc2VsaW5lKSB7CkBAIC0xOTUs
NyArMTk1LDcgQEAgZmxvYXQgU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lOjpjYWxjdWxhdGVH
bHlwaEFkdmFuY2VBbmRPcmllbnRhdGlvbihib29sIGlzVmUKICAgICAvLyBTcGVjOiBJZiBpZiB0
aGUgJ2dseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsJyByZXN1bHRzIGluIGFuIG9yaWVudGF0aW9u
IGFuZ2xlIHRoYXQgaXMgbm90IGEgbXVsdGlwbGUgb2YKICAgICAvLyAxODAgZGVncmVlcywgdGhl
biB0aGUgY3VycmVudCB0ZXh0IHBvc2l0aW9uIGlzIGluY3JlbWVudGVkIGFjY29yZGluZyB0byB0
aGUgaG9yaXpvbnRhbCBtZXRyaWNzIG9mIHRoZSBnbHlwaC4KIAotICAgIGNvbnN0IEZvbnRNZXRy
aWNzJiBmb250TWV0cmljcyA9IG1fZm9udC5mb250TWV0cmljcygpOworICAgIGNvbnN0IEZvbnRN
ZXRyaWNzJiBmb250TWV0cmljcyA9IG1fZm9udC5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKTsK
IAogICAgIC8vIFZlcnRpY2FsIG9yaWVudGF0aW9uIGhhbmRsaW5nLgogICAgIGlmIChpc1ZlcnRp
Y2FsVGV4dCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdU
ZXh0TWV0cmljcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRy
aWNzLmNwcAppbmRleCAzOTA5MWVmOGFmM2Q5YjMwNDhkYzdiMmIyY2Y0ODIxMTk5NjVmYzViLi5m
MWYzMDNkNmQzMDM2NDliY2Q3NzM1NWZmYjM1MTA3MTAxZGY2MDQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzLmNwcApAQCAtNTAsNyArNTAsNyBA
QCBTVkdUZXh0TWV0cmljczo6U1ZHVGV4dE1ldHJpY3MoUmVuZGVyU1ZHSW5saW5lVGV4dCYgdGV4
dFJlbmRlcmVyLCBjb25zdCBUZXh0UnVuJgogICAgIG1fd2lkdGggPSBzY2FsZWRGb250LndpZHRo
KHJ1bikgLyBzY2FsaW5nRmFjdG9yOwogICAgIGxlbmd0aCA9IHJ1bi5sZW5ndGgoKTsKICAgICBt
X2dseXBoLm5hbWUgPSBlbXB0eVN0cmluZygpOwotICAgIG1faGVpZ2h0ID0gc2NhbGVkRm9udC5m
b250TWV0cmljcygpLmZsb2F0SGVpZ2h0KCkgLyBzY2FsaW5nRmFjdG9yOworICAgIG1faGVpZ2h0
ID0gc2NhbGVkRm9udC5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5mbG9hdEhlaWdodCgpIC8g
c2NhbGluZ0ZhY3RvcjsKIAogICAgIG1fZ2x5cGgudW5pY29kZVN0cmluZyA9IHJ1bi5pczhCaXQo
KSA/IFN0cmluZyhydW4uY2hhcmFjdGVyczgoKSwgbGVuZ3RoKSA6IFN0cmluZyhydW4uY2hhcmFj
dGVyczE2KCksIGxlbmd0aCk7CiAgICAgbV9nbHlwaC5pc1ZhbGlkID0gdHJ1ZTsKQEAgLTg2LDcg
Kzg2LDcgQEAgU1ZHVGV4dE1ldHJpY3M6OlNWR1RleHRNZXRyaWNzKFJlbmRlclNWR0lubGluZVRl
eHQmIHRleHQsIHVuc2lnbmVkIGxlbmd0aCwgZmxvYXQKICAgICBBU1NFUlQoc2NhbGluZ0ZhY3Rv
cik7CiAKICAgICBtX3dpZHRoID0gd2lkdGggLyBzY2FsaW5nRmFjdG9yOwotICAgIG1faGVpZ2h0
ID0gdGV4dC5zY2FsZWRGb250KCkuZm9udE1ldHJpY3MoKS5mbG9hdEhlaWdodCgpIC8gc2NhbGlu
Z0ZhY3RvcjsKKyAgICBtX2hlaWdodCA9IHRleHQuc2NhbGVkRm9udCgpLmZvbnRNZXRyaWNzT2ZQ
cmltYXJ5Rm9udCgpLmZsb2F0SGVpZ2h0KCkgLyBzY2FsaW5nRmFjdG9yOwogCiAgICAgbV9sZW5n
dGggPSBsZW5ndGg7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1RleHRRdWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRR
dWVyeS5jcHAKaW5kZXggZGU5ZWIxOTE3ZmRhNzk0YTcwMTM1MDNiZDU1ZjI5ZTdjNzg4NTViNC4u
N2M5Y2E5OTk2MzU2OWVjYzRmZDA5MDRiNjc3YjUyMDNlMjNhZDRlNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UXVlcnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFF1ZXJ5LmNwcApAQCAtNDYzLDcgKzQ2Myw3IEBA
IHN0YXRpYyBpbmxpbmUgdm9pZCBjYWxjdWxhdGVHbHlwaEJvdW5kYXJpZXMoU1ZHVGV4dFF1ZXJ5
OjpEYXRhKiBxdWVyeURhdGEsIGNvbnN0CiAgICAgZmxvYXQgc2NhbGluZ0ZhY3RvciA9IHF1ZXJ5
RGF0YS0+dGV4dFJlbmRlcmVyLT5zY2FsaW5nRmFjdG9yKCk7CiAgICAgQVNTRVJUKHNjYWxpbmdG
YWN0b3IpOwogCi0gICAgZXh0ZW50LnNldExvY2F0aW9uKEZsb2F0UG9pbnQoZnJhZ21lbnQueCwg
ZnJhZ21lbnQueSAtIHF1ZXJ5RGF0YS0+dGV4dFJlbmRlcmVyLT5zY2FsZWRGb250KCkuZm9udE1l
dHJpY3MoKS5mbG9hdEFzY2VudCgpIC8gc2NhbGluZ0ZhY3RvcikpOworICAgIGV4dGVudC5zZXRM
b2NhdGlvbihGbG9hdFBvaW50KGZyYWdtZW50LngsIGZyYWdtZW50LnkgLSBxdWVyeURhdGEtPnRl
eHRSZW5kZXJlci0+c2NhbGVkRm9udCgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmZsb2F0
QXNjZW50KCkgLyBzY2FsaW5nRmFjdG9yKSk7CiAKICAgICBpZiAoc3RhcnRQb3NpdGlvbikgewog
ICAgICAgICBTVkdUZXh0TWV0cmljcyBtZXRyaWNzID0gU1ZHVGV4dE1ldHJpY3M6Om1lYXN1cmVD
aGFyYWN0ZXJSYW5nZSgqcXVlcnlEYXRhLT50ZXh0UmVuZGVyZXIsIGZyYWdtZW50LmNoYXJhY3Rl
ck9mZnNldCwgc3RhcnRQb3NpdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJGaXJzdExldHRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJGaXJzdExldHRlci5j
cHAKaW5kZXggMjVjOTYwZjBlMGFmYzEwMjUxYzZkMzY0ZDI3ZDQ0N2NmNjRjZWY3MS4uZjcyZWY5
MGQyNDI3OTY4OTM2MWVkMzMxOWU4MjAxMDQzNDA1NDQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyRmlyc3RMZXR0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRl
ckZpcnN0TGV0dGVyLmNwcApAQCAtNTEsNyArNTEsNyBAQCBzdGF0aWMgUmVuZGVyU3R5bGUgc3R5
bGVGb3JGaXJzdExldHRlcihjb25zdCBSZW5kZXJCbG9jayYgZmlyc3RMZXR0ZXJCbG9jaywgY29u
cwogCiAgICAgLy8gV2UgaGF2ZSB0byBjb21wdXRlIHRoZSBjb3JyZWN0IGZvbnQtc2l6ZSBmb3Ig
dGhlIGZpcnN0LWxldHRlciBpZiBpdCBoYXMgYW4gaW5pdGlhbCBsZXR0ZXIgaGVpZ2h0IHNldC4K
ICAgICBhdXRvKiBwYXJhZ3JhcGggPSBmaXJzdExldHRlckNvbnRhaW5lci5pc1JlbmRlckJsb2Nr
RmxvdygpID8gJmZpcnN0TGV0dGVyQ29udGFpbmVyIDogZmlyc3RMZXR0ZXJDb250YWluZXIuY29u
dGFpbmluZ0Jsb2NrKCk7Ci0gICAgaWYgKGZpcnN0TGV0dGVyU3R5bGUuaW5pdGlhbExldHRlckhl
aWdodCgpID49IDEgJiYgZmlyc3RMZXR0ZXJTdHlsZS5mb250TWV0cmljcygpLmhhc0NhcEhlaWdo
dCgpICYmIHBhcmFncmFwaC0+c3R5bGUoKS5mb250TWV0cmljcygpLmhhc0NhcEhlaWdodCgpKSB7
CisgICAgaWYgKGZpcnN0TGV0dGVyU3R5bGUuaW5pdGlhbExldHRlckhlaWdodCgpID49IDEgJiYg
Zmlyc3RMZXR0ZXJTdHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5oYXNDYXBIZWlnaHQo
KSAmJiBwYXJhZ3JhcGgtPnN0eWxlKCkuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuaGFzQ2Fw
SGVpZ2h0KCkpIHsKICAgICAgICAgLy8gRklYTUU6IEZvciBpZGVvZ3JhcGhpYyBiYXNlbGluZXMs
IHdlIHdhbnQgdG8gZ28gZnJvbSBsaW5lIGVkZ2UgdG8gbGluZSBlZGdlLiBUaGlzIGlzIGVxdWl2
YWxlbnQgdG8gKE4tMSkqbGluZS1oZWlnaHQgKyB0aGUgZm9udCBoZWlnaHQuCiAgICAgICAgIC8v
IFdlIGRvbid0IHlldCBzdXBwb3J0IGlkZW9ncmFwaGljIGJhc2VsaW5lcy4KICAgICAgICAgLy8g
Rm9yIGFuIE4tbGluZSBmaXJzdC1sZXR0ZXIgYW5kIGZvciBhbHBoYWJldGljIGJhc2VsaW5lcywg
dGhlIGNhcC1oZWlnaHQgb2YgdGhlIGZpcnN0IGxldHRlciBuZWVkcyB0byBlcXVhbCAoTi0xKSps
aW5lLWhlaWdodCBvZiBwYXJhZ3JhcGggbGluZXMgKyBjYXAtaGVpZ2h0IG9mIHRoZSBwYXJhZ3Jh
cGgKQEAgLTYzLDIyICs2MywyMiBAQCBzdGF0aWMgUmVuZGVyU3R5bGUgc3R5bGVGb3JGaXJzdExl
dHRlcihjb25zdCBSZW5kZXJCbG9jayYgZmlyc3RMZXR0ZXJCbG9jaywgY29ucwogICAgICAgICAv
LyBTZXQgdGhlIGZvbnQgdG8gYmUgb25lIGxpbmUgdG9vIGJpZyBhbmQgdGhlbiByYXRjaGV0IGJh
Y2sgdG8gZ2V0IHRvIGEgcHJlY2lzZSBmaXQuIFdlIGNhbid0IGp1c3Qgc2V0IHRoZSBkZXNpcmVk
IGZvbnQgc2l6ZSBiYXNlZCBvZmYgZm9udCBoZWlnaHQgbWV0cmljcwogICAgICAgICAvLyBiZWNh
dXNlIG1hbnkgZm9udHMgYmFrZSBhc2NlbnQgaW50byB0aGUgZm9udCBtZXRyaWNzLiBUaGVyZWZv
cmUgd2UgaGF2ZSB0byBsb29rIGF0IGFjdHVhbCBtZWFzdXJlZCBjYXAgaGVpZ2h0IHZhbHVlcyBp
biBvcmRlciB0byBrbm93IHdoZW4gd2UgaGF2ZSBhIGdvb2QgZml0LgogICAgICAgICBhdXRvIG5l
d0ZvbnREZXNjcmlwdGlvbiA9IGZpcnN0TGV0dGVyU3R5bGUuZm9udERlc2NyaXB0aW9uKCk7Ci0g
ICAgICAgIGZsb2F0IGNhcFJhdGlvID0gZmlyc3RMZXR0ZXJTdHlsZS5mb250TWV0cmljcygpLmZs
b2F0Q2FwSGVpZ2h0KCkgLyBmaXJzdExldHRlclN0eWxlLmNvbXB1dGVkRm9udFBpeGVsU2l6ZSgp
OwotICAgICAgICBmbG9hdCBzdGFydGluZ0ZvbnRTaXplID0gKChmaXJzdExldHRlclN0eWxlLmlu
aXRpYWxMZXR0ZXJIZWlnaHQoKSAtIDEpICogbGluZUhlaWdodCArIHBhcmFncmFwaC0+c3R5bGUo
KS5mb250TWV0cmljcygpLmNhcEhlaWdodCgpKSAvIGNhcFJhdGlvOworICAgICAgICBmbG9hdCBj
YXBSYXRpbyA9IGZpcnN0TGV0dGVyU3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkuZmxv
YXRDYXBIZWlnaHQoKSAvIGZpcnN0TGV0dGVyU3R5bGUuY29tcHV0ZWRGb250UGl4ZWxTaXplKCk7
CisgICAgICAgIGZsb2F0IHN0YXJ0aW5nRm9udFNpemUgPSAoKGZpcnN0TGV0dGVyU3R5bGUuaW5p
dGlhbExldHRlckhlaWdodCgpIC0gMSkgKiBsaW5lSGVpZ2h0ICsgcGFyYWdyYXBoLT5zdHlsZSgp
LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmNhcEhlaWdodCgpKSAvIGNhcFJhdGlvOwogICAg
ICAgICBuZXdGb250RGVzY3JpcHRpb24uc2V0U3BlY2lmaWVkU2l6ZShzdGFydGluZ0ZvbnRTaXpl
KTsKICAgICAgICAgbmV3Rm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShzdGFydGluZ0Zv
bnRTaXplKTsKICAgICAgICAgZmlyc3RMZXR0ZXJTdHlsZS5zZXRGb250RGVzY3JpcHRpb24oV1RG
TW92ZShuZXdGb250RGVzY3JpcHRpb24pKTsKICAgICAgICAgZmlyc3RMZXR0ZXJTdHlsZS5mb250
Q2FzY2FkZSgpLnVwZGF0ZShmaXJzdExldHRlclN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udFNlbGVj
dG9yKCkpOwogCi0gICAgICAgIGludCBkZXNpcmVkQ2FwSGVpZ2h0ID0gKGZpcnN0TGV0dGVyU3R5
bGUuaW5pdGlhbExldHRlckhlaWdodCgpIC0gMSkgKiBsaW5lSGVpZ2h0ICsgcGFyYWdyYXBoLT5z
dHlsZSgpLmZvbnRNZXRyaWNzKCkuY2FwSGVpZ2h0KCk7Ci0gICAgICAgIGludCBhY3R1YWxDYXBI
ZWlnaHQgPSBmaXJzdExldHRlclN0eWxlLmZvbnRNZXRyaWNzKCkuY2FwSGVpZ2h0KCk7CisgICAg
ICAgIGludCBkZXNpcmVkQ2FwSGVpZ2h0ID0gKGZpcnN0TGV0dGVyU3R5bGUuaW5pdGlhbExldHRl
ckhlaWdodCgpIC0gMSkgKiBsaW5lSGVpZ2h0ICsgcGFyYWdyYXBoLT5zdHlsZSgpLmZvbnRNZXRy
aWNzT2ZQcmltYXJ5Rm9udCgpLmNhcEhlaWdodCgpOworICAgICAgICBpbnQgYWN0dWFsQ2FwSGVp
Z2h0ID0gZmlyc3RMZXR0ZXJTdHlsZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5jYXBIZWln
aHQoKTsKICAgICAgICAgd2hpbGUgKGFjdHVhbENhcEhlaWdodCA+IGRlc2lyZWRDYXBIZWlnaHQp
IHsKICAgICAgICAgICAgIGF1dG8gbmV3Rm9udERlc2NyaXB0aW9uID0gZmlyc3RMZXR0ZXJTdHls
ZS5mb250RGVzY3JpcHRpb24oKTsKICAgICAgICAgICAgIG5ld0ZvbnREZXNjcmlwdGlvbi5zZXRT
cGVjaWZpZWRTaXplKG5ld0ZvbnREZXNjcmlwdGlvbi5zcGVjaWZpZWRTaXplKCkgLSAxKTsKICAg
ICAgICAgICAgIG5ld0ZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUobmV3Rm9udERlc2Ny
aXB0aW9uLmNvbXB1dGVkU2l6ZSgpIC0xKTsKICAgICAgICAgICAgIGZpcnN0TGV0dGVyU3R5bGUu
c2V0Rm9udERlc2NyaXB0aW9uKFdURk1vdmUobmV3Rm9udERlc2NyaXB0aW9uKSk7CiAgICAgICAg
ICAgICBmaXJzdExldHRlclN0eWxlLmZvbnRDYXNjYWRlKCkudXBkYXRlKGZpcnN0TGV0dGVyU3R5
bGUuZm9udENhc2NhZGUoKS5mb250U2VsZWN0b3IoKSk7Ci0gICAgICAgICAgICBhY3R1YWxDYXBI
ZWlnaHQgPSBmaXJzdExldHRlclN0eWxlLmZvbnRNZXRyaWNzKCkuY2FwSGVpZ2h0KCk7CisgICAg
ICAgICAgICBhY3R1YWxDYXBIZWlnaHQgPSBmaXJzdExldHRlclN0eWxlLmZvbnRNZXRyaWNzT2ZQ
cmltYXJ5Rm9udCgpLmNhcEhlaWdodCgpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcAppbmRleCBlOGNlNTdkZjAzN2UzOWRl
YTdmNGVmNTExYWZkM2IwZGM2ZGE2YjE3Li40ZThjNTg3ZTIyOTg0NDA3OTBmNzM1ZDQzYzEzODdm
MzA5YmM2MTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94
U3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5j
cHAKQEAgLTE3MywxMiArMTczLDEyIEBAIEdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JE
ZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlLCBjb25zdCBJCiAgICAgaWYg
KGRlY29yYXRpb24uaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gR2x5cGhPdmVyZmxvdygpOwog
Ci0gICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzID0gbGluZVN0eWxlLnRleHREZWNvcmF0aW9uVGhp
Y2tuZXNzKCkucmVzb2x2ZShsaW5lU3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpLCBsaW5lU3R5bGUu
Zm9udE1ldHJpY3MoKSk7CisgICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzID0gbGluZVN0eWxlLnRl
eHREZWNvcmF0aW9uVGhpY2tuZXNzKCkucmVzb2x2ZShsaW5lU3R5bGUuY29tcHV0ZWRGb250U2l6
ZSgpLCBsaW5lU3R5bGUuZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkpOwogICAgIFdhdnlTdHJv
a2VQYXJhbWV0ZXJzIHdhdnlTdHJva2VQYXJhbWV0ZXJzOwogICAgIGZsb2F0IHdhdnlPZmZzZXQg
PSAwOwogICAgICAgICAKICAgICBUZXh0RGVjb3JhdGlvblN0eWxlIGRlY29yYXRpb25TdHlsZSA9
IGxpbmVTdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxlKCk7Ci0gICAgZmxvYXQgaGVpZ2h0ID0gbGlu
ZVN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKS5mbG9hdEhlaWdodCgpOworICAgIGZs
b2F0IGhlaWdodCA9IGxpbmVTdHlsZS5mb250Q2FzY2FkZSgpLmZvbnRNZXRyaWNzT2ZQcmltYXJ5
Rm9udCgpLmZsb2F0SGVpZ2h0KCk7CiAgICAgR2x5cGhPdmVyZmxvdyBvdmVyZmxvd1Jlc3VsdDsK
ICAgICAKICAgICBpZiAoZGVjb3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6Oldh
dnkpIHsKQEAgLTE5NSw3ICsxOTUsNyBAQCBHbHlwaE92ZXJmbG93IHZpc3VhbE92ZXJmbG93Rm9y
RGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyU3R5bGUmIGxpbmVTdHlsZSwgY29uc3QgSQogICAgICAg
ICBpbnQgdW5kZXJsaW5lT2Zmc2V0ID0gMTsKICAgICAgICAgZmxvYXQgdGV4dERlY29yYXRpb25C
YXNlRm9udFNpemUgPSAxNjsKICAgICAgICAgYXV0byBkZWZhdWx0R2FwID0gbGluZVN0eWxlLmNv
bXB1dGVkRm9udFNpemUoKSAvIHRleHREZWNvcmF0aW9uQmFzZUZvbnRTaXplOwotICAgICAgICB1
bmRlcmxpbmVPZmZzZXQgKz0gY29tcHV0ZVVuZGVybGluZU9mZnNldChsaW5lU3R5bGUudGV4dFVu
ZGVybGluZVBvc2l0aW9uKCksIGxpbmVTdHlsZS50ZXh0VW5kZXJsaW5lT2Zmc2V0KCksIGxpbmVT
dHlsZS5mb250TWV0cmljcygpLCB0ZXh0UnVuLCBkZWZhdWx0R2FwKTsKKyAgICAgICAgdW5kZXJs
aW5lT2Zmc2V0ICs9IGNvbXB1dGVVbmRlcmxpbmVPZmZzZXQobGluZVN0eWxlLnRleHRVbmRlcmxp
bmVQb3NpdGlvbigpLCBsaW5lU3R5bGUudGV4dFVuZGVybGluZU9mZnNldCgpLCBsaW5lU3R5bGUu
Zm9udE1ldHJpY3NPZlByaW1hcnlGb250KCksIHRleHRSdW4sIGRlZmF1bHRHYXApOwogICAgICAg
ICBpZiAoZGVjb3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6OldhdnkpIHsKICAg
ICAgICAgICAgIG92ZXJmbG93UmVzdWx0LmV4dGVuZEJvdHRvbSh1bmRlcmxpbmVPZmZzZXQgKyB3
YXZ5T2Zmc2V0ICsgd2F2eVN0cm9rZVBhcmFtZXRlcnMuY29udHJvbFBvaW50RGlzdGFuY2UgKyBz
dHJva2VUaGlja25lc3MgLSBoZWlnaHQpOwogICAgICAgICAgICAgb3ZlcmZsb3dSZXN1bHQuZXh0
ZW5kVG9wKC0odW5kZXJsaW5lT2Zmc2V0ICsgd2F2eU9mZnNldCAtIHdhdnlTdHJva2VQYXJhbWV0
ZXJzLmNvbnRyb2xQb2ludERpc3RhbmNlIC0gc3Ryb2tlVGhpY2tuZXNzKSk7CkBAIC0yMDYsNyAr
MjA2LDcgQEAgR2x5cGhPdmVyZmxvdyB2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKGNvbnN0
IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUsIGNvbnN0IEkKICAgICB9CiAgICAgaWYgKGRlY29yYXRp
b24gJiBUZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lKSB7CiAgICAgICAgIEZsb2F0UmVjdCBy
ZWN0KEZsb2F0UG9pbnQoKSwgRmxvYXRTaXplKDEsIHN0cm9rZVRoaWNrbmVzcykpOwotICAgICAg
ICBmbG9hdCBhdXRvVGV4dERlY29yYXRpb25UaGlja25lc3MgPSBUZXh0RGVjb3JhdGlvblRoaWNr
bmVzczo6Y3JlYXRlV2l0aEF1dG8oKS5yZXNvbHZlKGxpbmVTdHlsZS5jb21wdXRlZEZvbnRTaXpl
KCksIGxpbmVTdHlsZS5mb250TWV0cmljcygpKTsKKyAgICAgICAgZmxvYXQgYXV0b1RleHREZWNv
cmF0aW9uVGhpY2tuZXNzID0gVGV4dERlY29yYXRpb25UaGlja25lc3M6OmNyZWF0ZVdpdGhBdXRv
KCkucmVzb2x2ZShsaW5lU3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpLCBsaW5lU3R5bGUuZm9udE1l
dHJpY3NPZlByaW1hcnlGb250KCkpOwogICAgICAgICByZWN0Lm1vdmUoMCwgYXV0b1RleHREZWNv
cmF0aW9uVGhpY2tuZXNzIC0gc3Ryb2tlVGhpY2tuZXNzIC0gd2F2eU9mZnNldCk7CiAgICAgICAg
IGlmIChkZWNvcmF0aW9uU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZTo6V2F2eSkgewogICAg
ICAgICAgICAgRmxvYXRCb3hFeHRlbnQgd2F2eUV4cGFuc2lvbjsKQEAgLTIxOSw4ICsyMTksOCBA
QCBHbHlwaE92ZXJmbG93IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVy
U3R5bGUmIGxpbmVTdHlsZSwgY29uc3QgSQogICAgIH0KICAgICBpZiAoZGVjb3JhdGlvbiAmIFRl
eHREZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2gpIHsKICAgICAgICAgRmxvYXRSZWN0IHJlY3Qo
RmxvYXRQb2ludCgpLCBGbG9hdFNpemUoMSwgc3Ryb2tlVGhpY2tuZXNzKSk7Ci0gICAgICAgIGZs
b2F0IGF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyA9IFRleHREZWNvcmF0aW9uVGhpY2tuZXNz
OjpjcmVhdGVXaXRoQXV0bygpLnJlc29sdmUobGluZVN0eWxlLmNvbXB1dGVkRm9udFNpemUoKSwg
bGluZVN0eWxlLmZvbnRNZXRyaWNzKCkpOwotICAgICAgICBhdXRvIGNlbnRlciA9IDIgKiBsaW5l
U3R5bGUuZm9udE1ldHJpY3MoKS5mbG9hdEFzY2VudCgpIC8gMyArIGF1dG9UZXh0RGVjb3JhdGlv
blRoaWNrbmVzcyAvIDI7CisgICAgICAgIGZsb2F0IGF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVz
cyA9IFRleHREZWNvcmF0aW9uVGhpY2tuZXNzOjpjcmVhdGVXaXRoQXV0bygpLnJlc29sdmUobGlu
ZVN0eWxlLmNvbXB1dGVkRm9udFNpemUoKSwgbGluZVN0eWxlLmZvbnRNZXRyaWNzT2ZQcmltYXJ5
Rm9udCgpKTsKKyAgICAgICAgYXV0byBjZW50ZXIgPSAyICogbGluZVN0eWxlLmZvbnRNZXRyaWNz
T2ZQcmltYXJ5Rm9udCgpLmZsb2F0QXNjZW50KCkgLyAzICsgYXV0b1RleHREZWNvcmF0aW9uVGhp
Y2tuZXNzIC8gMjsKICAgICAgICAgcmVjdC5tb3ZlKDAsIGNlbnRlciAtIHN0cm9rZVRoaWNrbmVz
cyAvIDIpOwogICAgICAgICBpZiAoZGVjb3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5
bGU6OldhdnkpIHsKICAgICAgICAgICAgIEZsb2F0Qm94RXh0ZW50IHdhdnlFeHBhbnNpb247CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JGb250UmF3LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3BwCmluZGV4
IDM0MTcxNGU5ZDZjODZlOTYyNWM2OTNlNGU4NzAwNmZlZTJiNzBiMzcuLmI2MjQ1N2QzNjdmMDQ2
ZWVkZGJmNTk5MjJlOGRhMzdkODZmMmNlNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3BwCkBAIC0yMDcsNyArMjA3LDcgQEAgc3RkOjpvcHRp
b25hbDxGb250Q2FzY2FkZT4gcmVzb2x2ZUZvckZvbnRSYXcoY29uc3QgRm9udFJhdyYgZm9udFJh
dywgRm9udENhc2NhZGUKICAgICAgICAgICAgIC8vICAgICAgICBJdCdzIHVuY2xlYXIgaW4gdGhl
IHNwZWNpZmljYXRpb24gaWYgdGhleSdyZSBleHBlY3RlZCB0byB3b3JrIG9uIE9mZnNjcmVlbkNh
bnZhcywgZ2l2ZW4KICAgICAgICAgICAgIC8vICAgICAgICB0aGF0IGl0J3Mgb2ZmLXNjcmVlbiBh
bmQgdGhlcmVmb3JlIGRvZXNuJ3Qgc3RyaWN0bHkgaGF2ZSBhbiBhc3NvY2lhdGVkIHZpZXdwb3J0
LgogICAgICAgICAgICAgLy8gICAgICAgIFRoaXMgbmVlZHMgY2xhcmlmaWNhdGlvbiBhbmQgcG9z
c2libHkgZml4aW5nLgotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihDU1NQ
cmltaXRpdmVWYWx1ZTo6Y29tcHV0ZVVuem9vbWVkTm9uQ2FsY0xlbmd0aERvdWJsZShsZW5ndGgu
dHlwZSwgbGVuZ3RoLnZhbHVlLCBDU1NQcm9wZXJ0eUZvbnRTaXplLCAmZm9udENhc2NhZGUuZm9u
dE1ldHJpY3MoKSwgJmZvbnRDYXNjYWRlLmZvbnREZXNjcmlwdGlvbigpLCAmZm9udENhc2NhZGUu
Zm9udERlc2NyaXB0aW9uKCksIGlzPERvY3VtZW50Pihjb250ZXh0KSA/IGRvd25jYXN0PERvY3Vt
ZW50Pihjb250ZXh0KS5yZW5kZXJWaWV3KCkgOiBudWxscHRyKSk7CisgICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlVW56b29tZWRO
b25DYWxjTGVuZ3RoRG91YmxlKGxlbmd0aC50eXBlLCBsZW5ndGgudmFsdWUsIENTU1Byb3BlcnR5
Rm9udFNpemUsICZmb250Q2FzY2FkZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKSwgJmZvbnRD
YXNjYWRlLmZvbnREZXNjcmlwdGlvbigpLCAmZm9udENhc2NhZGUuZm9udERlc2NyaXB0aW9uKCks
IGlzPERvY3VtZW50Pihjb250ZXh0KSA/IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5yZW5k
ZXJWaWV3KCkgOiBudWxscHRyKSk7CiAgICAgICAgIH0sIFsmXSAoY29uc3QgQ1NTUHJvcGVydHlQ
YXJzZXJIZWxwZXJzOjpQZXJjZW50UmF3JiBwZXJjZW50YWdlKSB7CiAgICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KChwYXJlbnRTaXplICogcGVyY2VudGFnZS52YWx1ZSkgLyAx
MDAuMCk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xl
bmd0aENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aENvbnRleHQuY3Bw
CmluZGV4IDBkZGFiOTgwMWYxNmM4ODAwZTQwOTE0MzdhN2Y3MjhlMzRmMGQwMTQuLjE1NGU4ZGEx
MTgwZGU0ZTY5NTg3MDhlMjJiOGYxZWU4MGI0MzBhYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdMZW5ndGhDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TGVuZ3RoQ29udGV4dC5jcHAKQEAgLTI2Nyw3ICsyNjcsNyBAQCBFeGNlcHRpb25PcjxmbG9hdD4g
U1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlRnJvbVVzZXJVbml0c1RvRVhTKGZsb2F0IHZh
bHVlKQogCiAgICAgLy8gVXNlIG9mIGNlaWwgYWxsb3dzIGEgcGl4ZWwgbWF0Y2ggdG8gdGhlIFcz
Q3MgZXhwZWN0ZWQgb3V0cHV0IG9mIGNvb3Jkcy11bml0cy0wMy1iLnN2ZwogICAgIC8vIGlmIHRo
aXMgY2F1c2VzIHByb2JsZW1zIGluIHJlYWwgd29ybGQgY2FzZXMgbWF5YmUgaXQgd291bGQgYmUg
YmVzdCB0byByZW1vdmUgdGhpcwotICAgIGZsb2F0IHhIZWlnaHQgPSBzdGQ6OmNlaWwoc3R5bGUt
PmZvbnRNZXRyaWNzKCkueEhlaWdodCgpKTsKKyAgICBmbG9hdCB4SGVpZ2h0ID0gc3RkOjpjZWls
KHN0eWxlLT5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS54SGVpZ2h0KCkpOwogICAgIGlmICgh
eEhlaWdodCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07
CiAKQEAgLTI4Miw3ICsyODIsNyBAQCBFeGNlcHRpb25PcjxmbG9hdD4gU1ZHTGVuZ3RoQ29udGV4
dDo6Y29udmVydFZhbHVlRnJvbUVYU1RvVXNlclVuaXRzKGZsb2F0IHZhbHVlKQogCiAgICAgLy8g
VXNlIG9mIGNlaWwgYWxsb3dzIGEgcGl4ZWwgbWF0Y2ggdG8gdGhlIFczQ3MgZXhwZWN0ZWQgb3V0
cHV0IG9mIGNvb3Jkcy11bml0cy0wMy1iLnN2ZwogICAgIC8vIGlmIHRoaXMgY2F1c2VzIHByb2Js
ZW1zIGluIHJlYWwgd29ybGQgY2FzZXMgbWF5YmUgaXQgd291bGQgYmUgYmVzdCB0byByZW1vdmUg
dGhpcwotICAgIHJldHVybiB2YWx1ZSAqIHN0ZDo6Y2VpbChzdHlsZS0+Zm9udE1ldHJpY3MoKS54
SGVpZ2h0KCkpOworICAgIHJldHVybiB2YWx1ZSAqIHN0ZDo6Y2VpbChzdHlsZS0+Zm9udE1ldHJp
Y3NPZlByaW1hcnlGb250KCkueEhlaWdodCgpKTsKIH0KIAogYm9vbCBTVkdMZW5ndGhDb250ZXh0
OjpkZXRlcm1pbmVWaWV3cG9ydChGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93aW4vV2ViUG9w
dXBNZW51V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93
aW4vV2ViUG9wdXBNZW51V2luLmNwcAppbmRleCAyY2EzNTc0MjY3YTZkODJlMDlhYjlkMzY4MzM3
ZWJlYWFkNzQ0MzhiLi41MGMzZTFkM2Y0Mzk2NzkzYWViNjY5ODAxM2FjMDkxODFiMTkzNDQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dl
YlBvcHVwTWVudVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L3dpbi9XZWJQb3B1cE1lbnVXaW4uY3BwCkBAIC00OCw3ICs0OCw3IEBAIHZvaWQgV2Vi
UG9wdXBNZW51OjpzZXRVcFBsYXRmb3JtRGF0YShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBwYWdl
Q29vcmRpbmF0ZXMsIFBsCiAgICAgZGF0YS5tX2NsaWVudFBhZGRpbmdSaWdodCA9IG1fcG9wdXBD
bGllbnQtPmNsaWVudFBhZGRpbmdSaWdodCgpOwogICAgIGRhdGEubV9jbGllbnRJbnNldExlZnQg
PSBtX3BvcHVwQ2xpZW50LT5jbGllbnRJbnNldExlZnQoKTsKICAgICBkYXRhLm1fY2xpZW50SW5z
ZXRSaWdodCA9IG1fcG9wdXBDbGllbnQtPmNsaWVudEluc2V0UmlnaHQoKTsKLSAgICBkYXRhLm1f
aXRlbUhlaWdodCA9IGZvbnQuZm9udE1ldHJpY3MoKS5oZWlnaHQoKSArIDE7CisgICAgZGF0YS5t
X2l0ZW1IZWlnaHQgPSBmb250LmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmhlaWdodCgpICsg
MTsKIAogICAgIGludCBwb3B1cFdpZHRoID0gMDsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGl0ZW1Db3VudDsgKytpKSB7CkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBXZWJQb3B1cE1lbnU6
OnNldFVwUGxhdGZvcm1EYXRhKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHBhZ2VDb29yZGluYXRl
cywgUGwKICAgICAgICAgICAgICAgICBpZiAoUmVuZGVyVGhlbWU6OnNpbmdsZXRvbigpLnBvcHVw
T3B0aW9uU3VwcG9ydHNUZXh0SW5kZW50KCkpCiAgICAgICAgICAgICAgICAgICAgIHRleHRYIC09
IG1pbmltdW1JbnRWYWx1ZUZvckxlbmd0aChpdGVtU3R5bGUudGV4dEluZGVudCgpLCBpdGVtUmVj
dC53aWR0aCgpKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGludCB0ZXh0WSA9IGl0ZW1S
ZWN0LnkoKSArIGl0ZW1Gb250Q2FzY2FkZS5mb250TWV0cmljcygpLmFzY2VudCgpICsgKGl0ZW1S
ZWN0LmhlaWdodCgpIC0gaXRlbUZvbnRDYXNjYWRlLmZvbnRNZXRyaWNzKCkuaGVpZ2h0KCkpIC8g
MjsKKyAgICAgICAgICAgIGludCB0ZXh0WSA9IGl0ZW1SZWN0LnkoKSArIGl0ZW1Gb250Q2FzY2Fk
ZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoKSArIChpdGVtUmVjdC5oZWlnaHQo
KSAtIGl0ZW1Gb250Q2FzY2FkZS5mb250TWV0cmljc09mUHJpbWFyeUZvbnQoKS5oZWlnaHQoKSkg
LyAyOwogCiAgICAgICAgICAgICBub3RTZWxlY3RlZEJhY2tpbmdTdG9yZUNvbnRleHQtPmRyYXdC
aWRpVGV4dChpdGVtRm9udENhc2NhZGUsIHRleHRSdW4sIEludFBvaW50KHRleHRYLCB0ZXh0WSkp
OwogICAgICAgICAgICAgc2VsZWN0ZWRCYWNraW5nU3RvcmVDb250ZXh0LT5kcmF3QmlkaVRleHQo
aXRlbUZvbnRDYXNjYWRlLCB0ZXh0UnVuLCBJbnRQb2ludCh0ZXh0WCwgdGV4dFkpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2Nv
YS5tbQppbmRleCAzNDU2YmVmMzY3MTdhZmEyN2ZiZDk1YTNhMjQ2OTg2ODYwYWM4ZTUxLi4zYWI4
NDQ2Mzk1YTlkZDlmOWQ3NjkxZGNmYzQyYjVkNTNhZGZjOTI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCkBAIC0x
NzYsNyArMTc2LDcgQEAgRGljdGlvbmFyeVBvcHVwSW5mbyBXZWJQYWdlOjpkaWN0aW9uYXJ5UG9w
dXBJbmZvRm9yUmFuZ2UoRnJhbWUmIGZyYW1lLCBjb25zdCBTaW0KICAgICBJbnRSZWN0IHJhbmdl
UmVjdCA9IGZyYW1lLnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhxdWFkc1swXS5lbmNsb3NpbmdC
b3VuZGluZ0JveCgpKTsKIAogICAgIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSA9IHJhbmdlLnN0
YXJ0Q29udGFpbmVyKCkucmVuZGVyU3R5bGUoKTsKLSAgICBmbG9hdCBzY2FsZWRBc2NlbnQgPSBz
dHlsZSA/IHN0eWxlLT5mb250TWV0cmljcygpLmFzY2VudCgpICogcGFnZVNjYWxlRmFjdG9yKCkg
OiAwOworICAgIGZsb2F0IHNjYWxlZEFzY2VudCA9IHN0eWxlID8gc3R5bGUtPmZvbnRNZXRyaWNz
T2ZQcmltYXJ5Rm9udCgpLmFzY2VudCgpICogcGFnZVNjYWxlRmFjdG9yKCkgOiAwOwogICAgIGRp
Y3Rpb25hcnlQb3B1cEluZm8ub3JpZ2luID0gRmxvYXRQb2ludChyYW5nZVJlY3QueCgpLCByYW5n
ZVJlY3QueSgpICsgc2NhbGVkQXNjZW50KTsKICAgICBkaWN0aW9uYXJ5UG9wdXBJbmZvLm9wdGlv
bnMgPSBvcHRpb25zOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KaW5kZXggZjJhZmIw
ODA3NmE2NWQzYzBhZjNlNDdjMTkwYmIwM2ExOTdlODIzZC4uYjY4NmVjYjk5MzhiOWY2OWUxMWU4
Yzk5M2NkNjZmZTRkZWUyYTBlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQpAQCAt
NTIzLDcgKzUyMyw3IEBAIHN0YXRpYyBXZWJDb3JlOjpJbnRSZWN0IGVsZW1lbnRCb3VuZGluZ0Jv
eEluV2luZG93Q29vcmRpbmF0ZXNGcm9tTm9kZShXZWJDb3JlOjpOCiAgICAgfQogCiAgICAgYXV0
byBzdHlsZSA9IHJhbmdlLnN0YXJ0LmNvbnRhaW5lci0+cmVuZGVyU3R5bGUoKTsKLSAgICBmbG9h
dCBzY2FsZWREZXNjZW50ID0gc3R5bGUgPyBzdHlsZS0+Zm9udE1ldHJpY3MoKS5kZXNjZW50KCkg
KiBmcmFtZS0+cGFnZSgpLT5wYWdlU2NhbGVGYWN0b3IoKSA6IDA7CisgICAgZmxvYXQgc2NhbGVk
RGVzY2VudCA9IHN0eWxlID8gc3R5bGUtPmZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmRlc2Nl
bnQoKSAqIGZyYW1lLT5wYWdlKCktPnBhZ2VTY2FsZUZhY3RvcigpIDogMDsKIAogICAgIGF1dG8g
cXVhZHMgPSBXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFic29sdXRlVGV4dFF1YWRzKHJhbmdlKTsK
ICAgICBpZiAocXVhZHMuaXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCmluZGV4IDViZThhNDFhMGMwNDAy
NTE1NjJjYmVhODJkMTY0ZGVjN2QzYTk5ZTcuLjlkZjUwNWNhN2RjNjI5M2VhYzA4ZjBlZjQ0Mzdi
NmFiODkwZDZmOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0Z1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0Z1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCkBAIC01MzUsNyArNTM1LDcgQEAgdm9pZCBGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyOjpkcmF3KCkKICAgICAvLyB0aGUgdGV4dCBhdCB0aGUgY2VudGVy
IG9mIHRoZSBzbGlkZXIuCiAgICAgLy8gTGVmdCBzdHJpbmcKICAgICBzID0gdGltZVRvU3RyaW5n
KGN1cnJlbnRUaW1lKCkpOwotICAgIGludCBmb250SGVpZ2h0ID0gZm9udC5mb250TWV0cmljcygp
LmhlaWdodCgpOworICAgIGludCBmb250SGVpZ2h0ID0gZm9udC5mb250TWV0cmljc09mUHJpbWFy
eUZvbnQoKS5oZWlnaHQoKTsKICAgICBUZXh0UnVuIGxlZnRUZXh0KHMpOwogICAgIGNvbnRleHQu
c2V0RmlsbENvbG9yKENvbG9yKHRleHRDb2xvcikpOwogICAgIGNvbnRleHQuZHJhd1RleHQoZm9u
dCwgbGVmdFRleHQsIEludFBvaW50KHdpbmRvd1dpZHRoIC8gMiAtIHRpbWVTbGlkZXJXaWR0aCAv
IDIgLSBtYXJnaW4gLSBmb250LndpZHRoKGxlZnRUZXh0KSwgd2luZG93SGVpZ2h0IC0gbWFyZ2lu
IC0gc2xpZGVySGVpZ2h0IC8gMiArIGZvbnRIZWlnaHQgLyA0KSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>