<?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>134752</bug_id>
          
          <creation_ts>2014-07-08 22:08:34 -0700</creation_ts>
          <short_desc>Get rid of WebFontCache</short_desc>
          <delta_ts>2014-11-14 16:03:31 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (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>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>enrica</cc>
    
    <cc>hyatt</cc>
    
    <cc>jonlee</cc>
    
    <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1021287</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-07-08 22:08:34 -0700</bug_when>
    <thetext>No reason it should be around</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024327</commentid>
    <comment_count>1</comment_count>
      <attachid>235378</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-07-23 14:24:05 -0700</bug_when>
    <thetext>Created attachment 235378
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024328</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-07-23 14:25:16 -0700</bug_when>
    <thetext>Attachment 235378 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/mac/FontCacheMac.mm:32:  Found header this file implements after a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024331</commentid>
    <comment_count>3</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-07-23 14:27:47 -0700</bug_when>
    <thetext>Style is a false negative.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047992</commentid>
    <comment_count>4</comment_count>
      <attachid>235378</attachid>
    <who name="">mitz</who>
    <bug_when>2014-11-11 15:18:23 -0800</bug_when>
    <thetext>Comment on attachment 235378
Patch

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

&gt; Source/WebCore/platform/graphics/mac/FontCacheMac.mm:213
&gt; +#pragma clang diagnostic ignored &quot;-Wglobal-constructors&quot;

WebCore is not allowed to include global constructors, which is why we have enabled this warning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047993</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-11-11 15:18:56 -0800</bug_when>
    <thetext>&lt;rdar://problem/18947048&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048904</commentid>
    <comment_count>6</comment_count>
      <attachid>241635</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-11-14 15:49:18 -0800</bug_when>
    <thetext>Created attachment 241635
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048908</commentid>
    <comment_count>7</comment_count>
      <attachid>241635</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2014-11-14 15:57:19 -0800</bug_when>
    <thetext>Comment on attachment 241635
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048912</commentid>
    <comment_count>8</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-11-14 16:03:31 -0800</bug_when>
    <thetext>https://trac.webkit.org/r176146</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235378</attachid>
            <date>2014-07-23 14:24:05 -0700</date>
            <delta_ts>2014-11-14 15:49:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134752-20140723142350.patch</filename>
            <type>text/plain</type>
            <size>34840</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcxNDgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDBhMTU4YjgwOTYzNzhh
ZmFlYTFlMWM4NzY1MzEyNWZmZjNiMzc0NC4uN2Y2NjNhYTFlMDViOWRlY2UwMjdmNzJlZTVmYWU0
ZjA1MmQxM2VjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE0LTA3LTIzICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0IHJpZCBv
ZiBXZWJGb250Q2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzNDc1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIElmIGEgdGhpcmQtcGFydHkgY2FsbHMgZnVuY3Rpb25zIGluIFdlYkZvbnRDYWNoZSwg
bG9nIGFuIGVycm9yLCB0aGVuIHJ1biB0aGUgZnVuY3Rpb24KKyAgICAgICAgYXMgdXN1YWwuIElm
IGEgdGhpcmQtcGFydHkgb3ZlcnJpZGVzIGZ1bmN0aW9ucyBpbiBXZWJGb250Q2FjaGUsIGxvZyB0
aGUgc2FtZSBlcnJvciwKKyAgICAgICAgdGhlbiBydW4gdGhlaXIgb3ZlcnJpZGluZyBmdW5jdGlv
bi4gV2UgY2FuIGRldGVjdCB0aGlzIGJ5IGNvbXBhcmluZyB0aGUgaW1wbGVtZW50YXRpb24KKyAg
ICAgICAgb2YgdGhlIFdlYkZvbnRDYWNoZSBzZWxlY3RvciB0byB3aGF0IGl0IHdhcyBkdXJpbmcg
bGlicmFyeSBsb2FkIHRpbWUgKHVzaW5nIGEgc3RhdGljCisgICAgICAgIGluaXRpYWxpemVyKS4K
KworICAgICAgICBJIGFsc28gbW92ZWQgdGhlIHJlbGV2YW50IGNvZGUgZnJvbSBXZWJGb250Q2Fj
aGUgaW50byBGb250Q2FjaGVNYWMuCisKKyAgICAgICAgVGhpcyBpcyBhIGZpcnN0IHN0ZXAgdG8g
dW5pZnlpbmcgT1MgWCdzIGFuZCBpT1MncyBmb250IGNhY2hlcy4KKworICAgICAgICBObyBuZXcg
dGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCBhIG5ldyBoZWFkZXIgZm9yIGdl
dEZvbnRXaXRoRmFtaWx5KCkgd2hpY2gKKyAgICAgICAgY2FuJ3QgYmUgZGVjbGFyZWQgaW4gRm9u
dENhY2hlLmggYmVjYXVzZSB0aGF0IGhlYWRlciBpcyBpbmNsdWRlZCBmcm9tIEMrKyBmaWxlcywK
KyAgICAgICAgYW5kIGdldEZvbnRXaXRoRmFtaWx5KCkgdXNlcyBPYmplY3RpdmUtQyB0eXBlcy4K
KyAgICAgICAgKiBjc3MvQ1NTRm9udFNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0ZvbnRTZWxlY3Rvcjo6YWRkRm9udEZhY2VSdWxlKTogTWFrZSBnZXRUcmFpdHNJbkZhbWlseSgp
IHN0YXRpYy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaDogRGl0dG8u
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5oOiBBZGRlZC4g
RGVjbGFyZSBnZXRGb250V2l0aEZhbWlseSgpLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L21hYy9Gb250Q2FjaGVNYWMubW06IE1vdmVkIGltcGxlbWVudGF0aW9uIG9mIE1hYydzIGZvbnQg
Y2FjaGUgaGVyZS4KKyAgICAgICAgKFdlYkNvcmU6OnRvVHJhaXRzTWFzayk6CisgICAgICAgIChX
ZWJDb3JlOjpGb250Q2FjaGU6OmdldFRyYWl0c0luRmFtaWx5KTogQmVmb3JlIHJ1bm5pbmcgdGhp
cyBmdW5jdGlvbiwgc2VlIGlmIHNvbWVvbmUgaGFzCisgICAgICAgIG92ZXJyaWRkZW4gYW4gaW1w
bGVtZW50YXRpb24gaW4gV2ViRm9udENhY2hlLgorICAgICAgICAoV2ViQ29yZTo6YWNjZXB0YWJs
ZUNob2ljZSk6IE1vdmVkIGZyb20gV2ViRm9udENhY2hlLgorICAgICAgICAoV2ViQ29yZTo6YmV0
dGVyQ2hvaWNlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjppbnRlcm5hbEZvbnRXaXRoRmFt
aWx5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpnZXRGb250V2l0aEZhbWlseSk6IEJlZm9y
ZSBydW5uaW5nIHRoaXMgZnVuY3Rpb24sIHNlZSBpZiBzb21lb25lIGhhcyBvdmVycmlkZGVuCisg
ICAgICAgIGFuIGltcGxlbWVudGF0aW9uIGluIFdlYkZvbnRDYWNoZS4KKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL1dlYkZvbnRDYWNoZS5tbToKKyAgICAgICAgKCtbV2ViRm9udENhY2hlIGZvbnRXaXRo
RmFtaWx5OnRyYWl0czp3ZWlnaHQ6c2l6ZTpdKTogQ2FsbCBGb250Q2FjaGUncyBpbXBsZW1lbnRh
dGlvbgorICAgICAgICBpbnN0ZWFkLgorICAgICAgICAoK1tXZWJGb250Q2FjaGUgZm9udFdpdGhG
YW1pbHk6dHJhaXRzOnNpemU6XSk6IERpdHRvLgorICAgICAgICAoYWNjZXB0YWJsZUNob2ljZSk6
IE1vdmVkIHRvIEZvbnRDYWNoZS4KKyAgICAgICAgKGJldHRlckNob2ljZSk6IERpdHRvLgorICAg
ICAgICAodG9UcmFpdHNNYXNrKTogRGl0dG8KKyAgICAgICAgKCtbV2ViRm9udENhY2hlIGdldFRy
YWl0czppbkZhbWlseTpdKTogQ2FsbCBGb250Q2FjaGUncyBpbXBsZW1lbnRhdGlvbi4KKyAgICAg
ICAgKCtbV2ViRm9udENhY2hlIGludGVybmFsRm9udFdpdGhGYW1pbHk6dHJhaXRzOndlaWdodDpz
aXplOl0pOiBNb3ZlZCB0byBGb250Q2FjaGUuCisKIDIwMTQtMDctMjMgIEJyZW50IEZ1bGdoYW0g
IDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gVXNlIE5PX1JFVFVSTl9EVUVf
VE9fQ1JBU0ggb24gV2luZG93cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1ZjZjOWZlMGNkYjIwNzk5MWI0MmFjMWQ3ZjJjMDJl
NThiMDU3MjU4Li45ZjUxMDJiMDNkZTI1MTFmYmRkZGM5YjQ5ODM5NzlhNWUzMTcyNTdkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC03OTA3LDYgKzc5MDcsNyBAQAogCQkxQzRDOEYwMDBBRDg1RDg3MDA5NDc1Q0UgLyogRGVsZXRl
QnV0dG9uQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWxl
dGVCdXR0b25Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0g
ODsgdXNlc1RhYnMgPSAwOyB9OwogCQkxQzRDOEY2MzBBRDg2NTVEMDA5NDc1Q0UgLyogRGVsZXRl
QnV0dG9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlbGV0ZUJ1
dHRvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMg
PSAwOyB9OwogCQkxQzRDOEY2NDBBRDg2NTVEMDA5NDc1Q0UgLyogRGVsZXRlQnV0dG9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlbGV0ZUJ1dHRvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKKwkJMUM1NjQ4NEYx
OTgwNTVCMzAwMzMzNTNBIC8qIEZvbnRDYWNoZU1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250Q2Fj
aGVNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4MUI5NTYwRTk3MzMwODAw
MjY2RTA3IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5zcGVjdG9yQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQzgxQjk1NzBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JDb250cm9sbGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4MUI5NTgwRTk3MzMwODAwMjY2
RTA3IC8qIEluc3BlY3RvckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbnNwZWN0b3JDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwMzUx
LDYgKzIwMzUyLDcgQEAKIAkJCQk0OUZGQkYzRTExQzkzRUUzMDA2QTcxMTggLyogV2ViR0xMYXll
ci5tbSAqLywKIAkJCQkwRkNGMzMyQjBGMkI5QTI1MDA0QjY3OTUgLyogV2ViTGF5ZXIuaCAqLywK
IAkJCQkwRkNGMzMyQTBGMkI5QTI1MDA0QjY3OTUgLyogV2ViTGF5ZXIubW0gKi8sCisJCQkJMUM1
NjQ4NEYxOTgwNTVCMzAwMzMzNTNBIC8qIEZvbnRDYWNoZU1hYy5oICovLAogCQkJKTsKIAkJCXBh
dGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udFNlbGVjdG9yLmNwcAppbmRleCBmNzgxNWVmNWNlMGRkMzQ5NjVhMmNiNjY4ODk4ODE3NGNm
NjRkYjk4Li5iY2I2MWIwOTM0ZjljZWQ0NzZmNDkyYjA1MDcyM2JmMDJlZjVkYWM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcApAQCAtMzAwLDcgKzMwMCw3IEBAIHZvaWQg
Q1NTRm9udFNlbGVjdG9yOjphZGRGb250RmFjZVJ1bGUoY29uc3QgU3R5bGVSdWxlRm9udEZhY2Uq
IGZvbnRGYWNlUnVsZSkKICAgICAgICAgICAgIEFTU0VSVCghbV9sb2NhbGx5SW5zdGFsbGVkRm9u
dEZhY2VzLmNvbnRhaW5zKGZhbWlseU5hbWUpKTsKIAogICAgICAgICAgICAgVmVjdG9yPHVuc2ln
bmVkPiBsb2NhbGx5SW5zdGFsbGVkRm9udHNUcmFpdHNNYXNrczsKLSAgICAgICAgICAgIGZvbnRD
YWNoZSgpLmdldFRyYWl0c0luRmFtaWx5KGZhbWlseU5hbWUsIGxvY2FsbHlJbnN0YWxsZWRGb250
c1RyYWl0c01hc2tzKTsKKyAgICAgICAgICAgIEZvbnRDYWNoZTo6Z2V0VHJhaXRzSW5GYW1pbHko
ZmFtaWx5TmFtZSwgbG9jYWxseUluc3RhbGxlZEZvbnRzVHJhaXRzTWFza3MpOwogICAgICAgICAg
ICAgaWYgKHVuc2lnbmVkIG51bUxvY2FsbHlJbnN0YWxsZWRGYWNlcyA9IGxvY2FsbHlJbnN0YWxs
ZWRGb250c1RyYWl0c01hc2tzLnNpemUoKSkgewogICAgICAgICAgICAgICAgIGF1dG8gZmFtaWx5
TG9jYWxseUluc3RhbGxlZEZhY2VzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UmVmUHRyPENT
U0ZvbnRGYWNlPj4+KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhY2hlLmgKaW5kZXggMWIxNTk0NWE1MDNiYTkzZjY0MjE2YWM5NjUzMmJmZDdkOTMxN2Q4OC4u
ZjdhYWU1YTk5NjNkZDhiMzAyNDg3MTQ2NTNlODhiZjNkMWM2YmFkMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKQEAgLTEzMSw3ICsxMzEsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIElNdWx0aUxhbmd1YWdlKiBnZXRNdWx0aUxhbmd1YWdlSW50ZXJm
YWNlKCk7CiAjZW5kaWYKIAotICAgIHZvaWQgZ2V0VHJhaXRzSW5GYW1pbHkoY29uc3QgQXRvbWlj
U3RyaW5nJiwgVmVjdG9yPHVuc2lnbmVkPiYpOworICAgIHN0YXRpYyB2b2lkIGdldFRyYWl0c0lu
RmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYsIFZlY3Rvcjx1bnNpZ25lZD4mKTsKIAogICAgIFBh
c3NSZWZQdHI8U2ltcGxlRm9udERhdGE+IGdldENhY2hlZEZvbnREYXRhKGNvbnN0IEZvbnREZXNj
cmlwdGlvbiYsIGNvbnN0IEF0b21pY1N0cmluZyYsIGJvb2wgY2hlY2tpbmdBbHRlcm5hdGVOYW1l
ID0gZmFsc2UsIFNob3VsZFJldGFpbiA9IFJldGFpbik7CiAgICAgUGFzc1JlZlB0cjxTaW1wbGVG
b250RGF0YT4gZ2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udChjb25zdCBGb250RGVzY3JpcHRpb24m
LCBTaG91bGRSZXRhaW4gPSBSZXRhaW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyZTA0ODMxODE4Yjdh
OGE5OTVkZmNjMjVhZjBhMDAyNDZjMTY5MjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFjLmgKQEAgLTAsMCArMSwzOSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IEZvbnRDYWNoZU1hY19oCisjZGVmaW5lIEZvbnRDYWNoZU1hY19oCisKKyNpZiBQTEFURk9STShN
QUMpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTlNGb250KiBnZXRGb250V2l0aEZhbWlseShT
dHJpbmcgZGVzaXJlZEZhbWlseSwgTlNGb250VHJhaXRNYXNrIGRlc2lyZWRUcmFpdHMsIGludCBk
ZXNpcmVkV2VpZ2h0LCBmbG9hdCBzaXplKTsKKworfQorCisjZW5kaWYKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5t
bQppbmRleCA2OTAyMWE1MTI1ZmRmNTk2NDRhYzBkYzk2MzdlMDYxMDZiMTE2NzFiLi5mNTRiODE5
MjI5N2JiNTY3NTI5YzBkYTNmZTNjYTNlMThlN2JhYTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q2FjaGVNYWMubW0KQEAgLTI5LDE5ICsy
OSwyMSBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkZvbnRDYWNoZS5oIgorI2lt
cG9ydCAiRm9udENhY2hlTWFjLmgiCiAKICNpZiAhUExBVEZPUk0oSU9TKQogCiAjaW1wb3J0ICJG
b250LmgiCi0jaW1wb3J0ICJTaW1wbGVGb250RGF0YS5oIgogI2ltcG9ydCAiRm9udFBsYXRmb3Jt
RGF0YS5oIgorI2ltcG9ydCAiU2ltcGxlRm9udERhdGEuaCIKKyNpbXBvcnQgIldlYkNvcmVOU1N0
cmluZ0V4dHJhcy5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9y
dCAiV2ViRm9udENhY2hlLmgiCiAjaW1wb3J0IDxBcHBLaXQvQXBwS2l0Lmg+CisjaW1wb3J0IDxv
YmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYv
U3RkTGliRXh0cmFzLmg+CiAKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBUaGUgInZvaWQq
IiBwYXJhbWV0ZXIgbWFrZXMgdGhlIGZ1bmN0aW9uIG1hdGNoIHRoZSBwcm90b3R5cGUgZm9yIGNh
bGxiYWNrcyBmcm9tIGNhbGxPbk1haW5UaHJlYWQuCkBAIC0xOTIsOSArMTk0LDI2NSBAQCBQYXNz
UmVmUHRyPFNpbXBsZUZvbnREYXRhPiBGb250Q2FjaGU6OmdldExhc3RSZXNvcnRGYWxsYmFja0Zv
bnQoY29uc3QgRm9udERlc2NyaQogICAgIHJldHVybiBnZXRDYWNoZWRGb250RGF0YShmb250RGVz
Y3JpcHRpb24sIGx1Y2lkYUdyYW5kZVN0ciwgZmFsc2UsIHNob3VsZFJldGFpbik7CiB9CiAKLXZv
aWQgRm9udENhY2hlOjpnZXRUcmFpdHNJbkZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWls
eU5hbWUsIFZlY3Rvcjx1bnNpZ25lZD4mIHRyYWl0c01hc2tzKQorc3RhdGljIGlubGluZSBGb250
VHJhaXRzTWFzayB0b1RyYWl0c01hc2soTlNGb250VHJhaXRNYXNrIGFwcEtpdFRyYWl0cywgTlNJ
bnRlZ2VyIGFwcEtpdFdlaWdodCkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Rm9udFRyYWl0
c01hc2s+KCgoYXBwS2l0VHJhaXRzICYgTlNGb250SXRhbGljVHJhaXQpID8gRm9udFN0eWxlSXRh
bGljTWFzayA6IEZvbnRTdHlsZU5vcm1hbE1hc2spCisgICAgICAgIHwgRm9udFZhcmlhbnROb3Jt
YWxNYXNrCisgICAgICAgIHwgKGFwcEtpdFdlaWdodCA9PSAxID8gRm9udFdlaWdodDEwME1hc2sg
OgorICAgICAgICAgICAgYXBwS2l0V2VpZ2h0ID09IDIgPyBGb250V2VpZ2h0MjAwTWFzayA6Cisg
ICAgICAgICAgICBhcHBLaXRXZWlnaHQgPD0gNCA/IEZvbnRXZWlnaHQzMDBNYXNrIDoKKyAgICAg
ICAgICAgIGFwcEtpdFdlaWdodCA9PSA1ID8gRm9udFdlaWdodDQwME1hc2sgOgorICAgICAgICAg
ICAgYXBwS2l0V2VpZ2h0ID09IDYgPyBGb250V2VpZ2h0NTAwTWFzayA6CisgICAgICAgICAgICBh
cHBLaXRXZWlnaHQgPD0gOCA/IEZvbnRXZWlnaHQ2MDBNYXNrIDoKKyAgICAgICAgICAgIGFwcEtp
dFdlaWdodCA9PSA5ID8gRm9udFdlaWdodDcwME1hc2sgOgorICAgICAgICAgICAgYXBwS2l0V2Vp
Z2h0IDw9IDExID8gRm9udFdlaWdodDgwME1hc2sgOgorICAgICAgICAgICAgRm9udFdlaWdodDkw
ME1hc2spKTsKK30KKworI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2dsb2JhbC1jb25zdHJ1Y3RvcnMiCitzdGF0aWMgSU1Q
IG9yaWdpbmFsR2V0VHJhaXRzSW5GYW1pbHlJbXBsZW1lbnRhdGlvbiA9IG1ldGhvZF9nZXRJbXBs
ZW1lbnRhdGlvbihjbGFzc19nZXRJbnN0YW5jZU1ldGhvZChvYmpjX2dldENsYXNzKCJXZWJGb250
Q2FjaGUiKSwgQHNlbGVjdG9yKGdldFRyYWl0czppbkZhbWlseTopKSk7CitzdGF0aWMgSU1QIG9y
aWdpbmFsR2V0Rm9udFdpdGhGYW1pbHlJbXBsZW1lbnRhdGlvbiA9IG1ldGhvZF9nZXRJbXBsZW1l
bnRhdGlvbihjbGFzc19nZXRJbnN0YW5jZU1ldGhvZChvYmpjX2dldENsYXNzKCJXZWJGb250Q2Fj
aGUiKSwgQHNlbGVjdG9yKGZvbnRXaXRoRmFtaWx5OnRyYWl0czp3ZWlnaHQ6c2l6ZTopKSk7Cisj
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisKK3ZvaWQgRm9udENhY2hlOjpnZXRUcmFpdHNJ
bkZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmIGRlc2lyZWRGYW1pbHksIFZlY3Rvcjx1bnNpZ25l
ZD4mIHRyYWl0c01hc2tzKQoreworICAgIC8vIFNlZSBpZiBhbnlvbmUgaGFzIG92ZXJyaWRkZW4g
dGhlIGltcGxlbWVudGF0aW9uIGZvciBXZWJGb250Q2FjaGUKKyAgICBpZiAobWV0aG9kX2dldElt
cGxlbWVudGF0aW9uKGNsYXNzX2dldEluc3RhbmNlTWV0aG9kKG9iamNfZ2V0Q2xhc3MoIldlYkZv
bnRDYWNoZSIpLCBAc2VsZWN0b3IoZ2V0VHJhaXRzOmluRmFtaWx5OikpKSAhPSBvcmlnaW5hbEdl
dFRyYWl0c0luRmFtaWx5SW1wbGVtZW50YXRpb24pIHsKKyAgICAgICAgTE9HX0VSUk9SKCJQbGVh
c2UgZG8gbm90IHVzZSBXZWJGb250Q2FjaGUsIGFzIGl0IHdpbGwgYmUgZ29pbmcgYXdheSBzb29u
LiIpOworICAgICAgICBbV2ViRm9udENhY2hlIGdldFRyYWl0czp0cmFpdHNNYXNrcyBpbkZhbWls
eTpkZXNpcmVkRmFtaWx5XTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE5TRm9udE1h
bmFnZXIgKmZvbnRNYW5hZ2VyID0gW05TRm9udE1hbmFnZXIgc2hhcmVkRm9udE1hbmFnZXJdOwor
CisgICAgTlNFbnVtZXJhdG9yICplID0gW1tmb250TWFuYWdlciBhdmFpbGFibGVGb250RmFtaWxp
ZXNdIG9iamVjdEVudW1lcmF0b3JdOworICAgIE5TU3RyaW5nICphdmFpbGFibGVGYW1pbHk7Cisg
ICAgd2hpbGUgKChhdmFpbGFibGVGYW1pbHkgPSBbZSBuZXh0T2JqZWN0XSkpIHsKKyAgICAgICAg
aWYgKHN0cmluZ0lzQ2FzZUluc2Vuc2l0aXZlRXF1YWxUb1N0cmluZyhkZXNpcmVkRmFtaWx5LCBh
dmFpbGFibGVGYW1pbHkpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKCFh
dmFpbGFibGVGYW1pbHkpIHsKKyAgICAgICAgLy8gTWF0Y2ggYnkgUG9zdFNjcmlwdCBuYW1lLgor
ICAgICAgICBOU0VudW1lcmF0b3IgKmF2YWlsYWJsZUZvbnRzID0gW1tmb250TWFuYWdlciBhdmFp
bGFibGVGb250c10gb2JqZWN0RW51bWVyYXRvcl07CisgICAgICAgIE5TU3RyaW5nICphdmFpbGFi
bGVGb250OworICAgICAgICB3aGlsZSAoKGF2YWlsYWJsZUZvbnQgPSBbYXZhaWxhYmxlRm9udHMg
bmV4dE9iamVjdF0pKSB7CisgICAgICAgICAgICBpZiAoc3RyaW5nSXNDYXNlSW5zZW5zaXRpdmVF
cXVhbFRvU3RyaW5nKGRlc2lyZWRGYW1pbHksIGF2YWlsYWJsZUZvbnQpKSB7CisgICAgICAgICAg
ICAgICAgTlNGb250ICpmb250ID0gW05TRm9udCBmb250V2l0aE5hbWU6YXZhaWxhYmxlRm9udCBz
aXplOjEwXTsKKyAgICAgICAgICAgICAgICBOU0ludGVnZXIgd2VpZ2h0ID0gW2ZvbnRNYW5hZ2Vy
IHdlaWdodE9mRm9udDpmb250XTsKKyAgICAgICAgICAgICAgICB0cmFpdHNNYXNrcy5hcHBlbmQo
dG9UcmFpdHNNYXNrKFtmb250TWFuYWdlciB0cmFpdHNPZkZvbnQ6Zm9udF0sIHdlaWdodCkpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBOU0FycmF5ICpmb250cyA9IFtmb250TWFuYWdlciBhdmFp
bGFibGVNZW1iZXJzT2ZGb250RmFtaWx5OmF2YWlsYWJsZUZhbWlseV07ICAgIAorICAgIHVuc2ln
bmVkIG4gPSBbZm9udHMgY291bnRdOworICAgIHVuc2lnbmVkIGk7CisgICAgZm9yIChpID0gMDsg
aSA8IG47IGkrKykgeworICAgICAgICBOU0FycmF5ICpmb250SW5mbyA9IFtmb250cyBvYmplY3RB
dEluZGV4OmldOworICAgICAgICAvLyBBcnJheSBpbmRpY2VzIG11c3QgYmUgaGFyZCBjb2RlZCBi
ZWNhdXNlIG9mIGxhbWUgQXBwS2l0IEFQSS4KKyAgICAgICAgTlNJbnRlZ2VyIGZvbnRXZWlnaHQg
PSBbW2ZvbnRJbmZvIG9iamVjdEF0SW5kZXg6Ml0gaW50VmFsdWVdOworICAgICAgICBOU0ZvbnRU
cmFpdE1hc2sgZm9udFRyYWl0cyA9IFtbZm9udEluZm8gb2JqZWN0QXRJbmRleDozXSB1bnNpZ25l
ZEludFZhbHVlXTsKKyAgICAgICAgdHJhaXRzTWFza3MuYXBwZW5kKHRvVHJhaXRzTWFzayhmb250
VHJhaXRzLCBmb250V2VpZ2h0KSk7CisgICAgfQorfQorCisjZGVmaW5lIFNZTlRIRVNJWkVEX0ZP
TlRfVFJBSVRTIChOU0JvbGRGb250TWFzayB8IE5TSXRhbGljRm9udE1hc2spCisKKyNkZWZpbmUg
SU1QT1JUQU5UX0ZPTlRfVFJBSVRTICgwIFwKKyAgICB8IE5TQ29tcHJlc3NlZEZvbnRNYXNrIFwK
KyAgICB8IE5TQ29uZGVuc2VkRm9udE1hc2sgXAorICAgIHwgTlNFeHBhbmRlZEZvbnRNYXNrIFwK
KyAgICB8IE5TSXRhbGljRm9udE1hc2sgXAorICAgIHwgTlNOYXJyb3dGb250TWFzayBcCisgICAg
fCBOU1Bvc3RlckZvbnRNYXNrIFwKKyAgICB8IE5TU21hbGxDYXBzRm9udE1hc2sgXAorKQorCitz
dGF0aWMgQk9PTCBhY2NlcHRhYmxlQ2hvaWNlKE5TRm9udFRyYWl0TWFzayBkZXNpcmVkVHJhaXRz
LCBOU0ZvbnRUcmFpdE1hc2sgY2FuZGlkYXRlVHJhaXRzKQoreworICAgIGRlc2lyZWRUcmFpdHMg
Jj0gflNZTlRIRVNJWkVEX0ZPTlRfVFJBSVRTOworICAgIHJldHVybiAoY2FuZGlkYXRlVHJhaXRz
ICYgZGVzaXJlZFRyYWl0cykgPT0gZGVzaXJlZFRyYWl0czsKK30KKworc3RhdGljIGJvb2wgYmV0
dGVyQ2hvaWNlKE5TRm9udFRyYWl0TWFzayBkZXNpcmVkVHJhaXRzLCBpbnQgZGVzaXJlZFdlaWdo
dCwKKyAgICBOU0ZvbnRUcmFpdE1hc2sgY2hvc2VuVHJhaXRzLCBpbnQgY2hvc2VuV2VpZ2h0LAor
ICAgIE5TRm9udFRyYWl0TWFzayBjYW5kaWRhdGVUcmFpdHMsIGludCBjYW5kaWRhdGVXZWlnaHQp
Cit7CisgICAgaWYgKCFhY2NlcHRhYmxlQ2hvaWNlKGRlc2lyZWRUcmFpdHMsIGNhbmRpZGF0ZVRy
YWl0cykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEEgbGlzdCBvZiB0aGUgdHJh
aXRzIHdlIGNhcmUgYWJvdXQuCisgICAgLy8gVGhlIHRvcCBpdGVtIGluIHRoZSBsaXN0IGlzIHRo
ZSB3b3JzdCB0cmFpdCB0byBtaXNtYXRjaDsgaWYgYSBmb250IGhhcyB0aGlzCisgICAgLy8gYW5k
IHdlIGRpZG4ndCBhc2sgZm9yIGl0LCB3ZSdkIHByZWZlciBhbnkgb3RoZXIgZm9udCBpbiB0aGUg
ZmFtaWx5LgorICAgIGNvbnN0IE5TRm9udFRyYWl0TWFzayBtYXNrc1tdID0geworICAgICAgICBO
U1Bvc3RlckZvbnRNYXNrLAorICAgICAgICBOU1NtYWxsQ2Fwc0ZvbnRNYXNrLAorICAgICAgICBO
U0l0YWxpY0ZvbnRNYXNrLAorICAgICAgICBOU0NvbXByZXNzZWRGb250TWFzaywKKyAgICAgICAg
TlNDb25kZW5zZWRGb250TWFzaywKKyAgICAgICAgTlNFeHBhbmRlZEZvbnRNYXNrLAorICAgICAg
ICBOU05hcnJvd0ZvbnRNYXNrLAorICAgICAgICAwCisgICAgfTsKKworICAgIGludCBpID0gMDsK
KyAgICBOU0ZvbnRUcmFpdE1hc2sgbWFzazsKKyAgICB3aGlsZSAoKG1hc2sgPSBtYXNrc1tpKytd
KSkgeworICAgICAgICBib29sIGRlc2lyZWQgPSBkZXNpcmVkVHJhaXRzICYgbWFzazsKKyAgICAg
ICAgYm9vbCBjaG9zZW5IYXNVbndhbnRlZFRyYWl0ID0gZGVzaXJlZCAhPSBzdGF0aWNfY2FzdDxi
b29sPihjaG9zZW5UcmFpdHMgJiBtYXNrKTsKKyAgICAgICAgYm9vbCBjYW5kaWRhdGVIYXNVbndh
bnRlZFRyYWl0ID0gZGVzaXJlZCAhPSBzdGF0aWNfY2FzdDxib29sPihjYW5kaWRhdGVUcmFpdHMg
JiBtYXNrKTsKKyAgICAgICAgaWYgKCFjYW5kaWRhdGVIYXNVbndhbnRlZFRyYWl0ICYmIGNob3Nl
bkhhc1Vud2FudGVkVHJhaXQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYg
KCFjaG9zZW5IYXNVbndhbnRlZFRyYWl0ICYmIGNhbmRpZGF0ZUhhc1Vud2FudGVkVHJhaXQpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaW50IGNob3NlbldlaWdodERl
bHRhTWFnbml0dWRlID0gYWJzKGNob3NlbldlaWdodCAtIGRlc2lyZWRXZWlnaHQpOworICAgIGlu
dCBjYW5kaWRhdGVXZWlnaHREZWx0YU1hZ25pdHVkZSA9IGFicyhjYW5kaWRhdGVXZWlnaHQgLSBk
ZXNpcmVkV2VpZ2h0KTsKKworICAgIC8vIElmIGJvdGggYXJlIHRoZSBzYW1lIGRpc3RhbmNlIGZy
b20gdGhlIGRlc2lyZWQgd2VpZ2h0LCBwcmVmZXIgdGhlIGNhbmRpZGF0ZSBpZiBpdCBpcyBmdXJ0
aGVyIGZyb20gbWVkaXVtLgorICAgIGlmIChjaG9zZW5XZWlnaHREZWx0YU1hZ25pdHVkZSA9PSBj
YW5kaWRhdGVXZWlnaHREZWx0YU1hZ25pdHVkZSkKKyAgICAgICAgcmV0dXJuIGFicyhjYW5kaWRh
dGVXZWlnaHQgLSA2KSA+IGFicyhjaG9zZW5XZWlnaHQgLSA2KTsKKworICAgIC8vIE90aGVyd2lz
ZSwgcHJlZmVyIHRoZSBvbmUgY2xvc2VyIHRvIHRoZSBkZXNpcmVkIHdlaWdodC4KKyAgICByZXR1
cm4gY2FuZGlkYXRlV2VpZ2h0RGVsdGFNYWduaXR1ZGUgPCBjaG9zZW5XZWlnaHREZWx0YU1hZ25p
dHVkZTsKK30KKworLy8gRmFtaWx5IG5hbWUgaXMgc29tZXdoYXQgb2YgYSBtaXNub21lciBoZXJl
LiBXZSBmaXJzdCBhdHRlbXB0IHRvIGZpbmQgYW4gZXhhY3QgbWF0Y2gKKy8vIGNvbXBhcmluZyB0
aGUgZGVzaXJlZEZhbWlseSB0byB0aGUgUG9zdFNjcmlwdCBuYW1lIG9mIHRoZSBpbnN0YWxsZWQg
Zm9udHMuIElmIHRoYXQgZmFpbHMKKy8vIHdlIHRoZW4gZG8gYSBzZWFyY2ggYmFzZWQgb24gdGhl
IGZhbWlseSBuYW1lcyBvZiB0aGUgaW5zdGFsbGVkIGZvbnRzLgorc3RhdGljIE5TRm9udCogaW50
ZXJuYWxGb250V2l0aEZhbWlseShTdHJpbmcgZGVzaXJlZEZhbWlseSwgTlNGb250VHJhaXRNYXNr
IGRlc2lyZWRUcmFpdHMsIGludCBkZXNpcmVkV2VpZ2h0LCBmbG9hdCBzaXplKQoreworICAgIGlm
IChzdHJpbmdJc0Nhc2VJbnNlbnNpdGl2ZUVxdWFsVG9TdHJpbmcoZGVzaXJlZEZhbWlseSwgQCIt
d2Via2l0LXN5c3RlbS1mb250IikKKyAgICAgICAgfHwgc3RyaW5nSXNDYXNlSW5zZW5zaXRpdmVF
cXVhbFRvU3RyaW5nKGRlc2lyZWRGYW1pbHksIEAiLWFwcGxlLXN5c3RlbS1mb250IikpIHsKKyAg
ICAgICAgLy8gV2UgaWdub3JlIGl0YWxpYyBmb3Igc3lzdGVtIGZvbnQuCisgICAgICAgIHJldHVy
biAoZGVzaXJlZFdlaWdodCA+PSA3KSA/IFtOU0ZvbnQgYm9sZFN5c3RlbUZvbnRPZlNpemU6c2l6
ZV0gOiBbTlNGb250IHN5c3RlbUZvbnRPZlNpemU6c2l6ZV07CisgICAgfQorCisgICAgTlNGb250
TWFuYWdlciAqZm9udE1hbmFnZXIgPSBbTlNGb250TWFuYWdlciBzaGFyZWRGb250TWFuYWdlcl07
CisKKyAgICAvLyBEbyBhIHNpbXBsZSBjYXNlIGluc2Vuc2l0aXZlIHNlYXJjaCBmb3IgYSBtYXRj
aGluZyBmb250IGZhbWlseS4KKyAgICAvLyBOU0ZvbnRNYW5hZ2VyIHJlcXVpcmVzIGV4YWN0IG5h
bWUgbWF0Y2hlcy4KKyAgICAvLyBUaGlzIGFkZHJlc3NlcyB0aGUgcHJvYmxlbSBvZiBtYXRjaGlu
ZyBhcmlhbCB0byBBcmlhbCwgZXRjLiwgYnV0IHBlcmhhcHMgbm90IGFsbCB0aGUgaXNzdWVzLgor
ICAgIE5TRW51bWVyYXRvciAqZSA9IFtbZm9udE1hbmFnZXIgYXZhaWxhYmxlRm9udEZhbWlsaWVz
XSBvYmplY3RFbnVtZXJhdG9yXTsKKyAgICBOU1N0cmluZyAqYXZhaWxhYmxlRmFtaWx5OworICAg
IHdoaWxlICgoYXZhaWxhYmxlRmFtaWx5ID0gW2UgbmV4dE9iamVjdF0pKSB7CisgICAgICAgIGlm
IChzdHJpbmdJc0Nhc2VJbnNlbnNpdGl2ZUVxdWFsVG9TdHJpbmcoZGVzaXJlZEZhbWlseSwgYXZh
aWxhYmxlRmFtaWx5KSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmICghYXZh
aWxhYmxlRmFtaWx5KSB7CisgICAgICAgIC8vIE1hdGNoIGJ5IFBvc3RTY3JpcHQgbmFtZS4KKyAg
ICAgICAgTlNFbnVtZXJhdG9yICphdmFpbGFibGVGb250cyA9IFtbZm9udE1hbmFnZXIgYXZhaWxh
YmxlRm9udHNdIG9iamVjdEVudW1lcmF0b3JdOworICAgICAgICBOU1N0cmluZyAqYXZhaWxhYmxl
Rm9udDsKKyAgICAgICAgTlNGb250ICpuYW1lTWF0Y2hlZEZvbnQgPSBuaWw7CisgICAgICAgIE5T
Rm9udFRyYWl0TWFzayBkZXNpcmVkVHJhaXRzRm9yTmFtZU1hdGNoID0gZGVzaXJlZFRyYWl0cyB8
IChkZXNpcmVkV2VpZ2h0ID49IDcgPyBOU0JvbGRGb250TWFzayA6IDApOworICAgICAgICB3aGls
ZSAoKGF2YWlsYWJsZUZvbnQgPSBbYXZhaWxhYmxlRm9udHMgbmV4dE9iamVjdF0pKSB7CisgICAg
ICAgICAgICBpZiAoc3RyaW5nSXNDYXNlSW5zZW5zaXRpdmVFcXVhbFRvU3RyaW5nKGRlc2lyZWRG
YW1pbHksIGF2YWlsYWJsZUZvbnQpKSB7CisgICAgICAgICAgICAgICAgbmFtZU1hdGNoZWRGb250
ID0gW05TRm9udCBmb250V2l0aE5hbWU6YXZhaWxhYmxlRm9udCBzaXplOnNpemVdOworCisgICAg
ICAgICAgICAgICAgLy8gU3BlY2lhbCBjYXNlIE9zYWthLU1vbm8uIEFjY29yZGluZyB0byA8cmRh
cjovL3Byb2JsZW0vMzk5OTQ2Nz4sIHdlIG5lZWQgdG8KKyAgICAgICAgICAgICAgICAvLyB0cmVh
dCBPc2FrYS1Nb25vIGFzIGZpeGVkIHBpdGNoLgorICAgICAgICAgICAgICAgIGlmIChzdHJpbmdJ
c0Nhc2VJbnNlbnNpdGl2ZUVxdWFsVG9TdHJpbmcoZGVzaXJlZEZhbWlseSwgQCJPc2FrYS1Nb25v
IikgJiYgZGVzaXJlZFRyYWl0c0Zvck5hbWVNYXRjaCA9PSBzdGF0aWNfY2FzdDxOU0ZvbnRUcmFp
dE1hc2s+KDApKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmFtZU1hdGNoZWRGb250Owor
CisgICAgICAgICAgICAgICAgTlNGb250VHJhaXRNYXNrIHRyYWl0cyA9IFtmb250TWFuYWdlciB0
cmFpdHNPZkZvbnQ6bmFtZU1hdGNoZWRGb250XTsKKyAgICAgICAgICAgICAgICBpZiAoKHRyYWl0
cyAmIGRlc2lyZWRUcmFpdHNGb3JOYW1lTWF0Y2gpID09IGRlc2lyZWRUcmFpdHNGb3JOYW1lTWF0
Y2gpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBbZm9udE1hbmFnZXIgY29udmVydEZvbnQ6
bmFtZU1hdGNoZWRGb250IHRvSGF2ZVRyYWl0OmRlc2lyZWRUcmFpdHNGb3JOYW1lTWF0Y2hdOwor
CisgICAgICAgICAgICAgICAgYXZhaWxhYmxlRmFtaWx5ID0gW25hbWVNYXRjaGVkRm9udCBmYW1p
bHlOYW1lXTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKworICAgIC8vIEZvdW5kIGEgZmFtaWx5LCBub3cgZmlndXJlIG91dCB3aGF0IHdl
aWdodCBhbmQgdHJhaXRzIHRvIHVzZS4KKyAgICBCT09MIGNob3NlRm9udCA9IGZhbHNlOworICAg
IGludCBjaG9zZW5XZWlnaHQgPSAwOworICAgIE5TRm9udFRyYWl0TWFzayBjaG9zZW5UcmFpdHMg
PSAwOworICAgIE5TU3RyaW5nICpjaG9zZW5GdWxsTmFtZSA9IDA7CisKKyAgICBOU0FycmF5ICpm
b250cyA9IFtmb250TWFuYWdlciBhdmFpbGFibGVNZW1iZXJzT2ZGb250RmFtaWx5OmF2YWlsYWJs
ZUZhbWlseV07ICAgIAorICAgIHVuc2lnbmVkIG4gPSBbZm9udHMgY291bnRdOworICAgIHVuc2ln
bmVkIGk7CisgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgICAgICBOU0FycmF5ICpm
b250SW5mbyA9IFtmb250cyBvYmplY3RBdEluZGV4OmldOworCisgICAgICAgIC8vIEFycmF5IGlu
ZGljZXMgbXVzdCBiZSBoYXJkIGNvZGVkIGJlY2F1c2Ugb2YgbGFtZSBBcHBLaXQgQVBJLgorICAg
ICAgICBOU1N0cmluZyAqZm9udEZ1bGxOYW1lID0gW2ZvbnRJbmZvIG9iamVjdEF0SW5kZXg6MF07
CisgICAgICAgIE5TSW50ZWdlciBmb250V2VpZ2h0ID0gW1tmb250SW5mbyBvYmplY3RBdEluZGV4
OjJdIGludFZhbHVlXTsKKyAgICAgICAgTlNGb250VHJhaXRNYXNrIGZvbnRUcmFpdHMgPSBbW2Zv
bnRJbmZvIG9iamVjdEF0SW5kZXg6M10gdW5zaWduZWRJbnRWYWx1ZV07CisKKyAgICAgICAgQk9P
TCBuZXdXaW5uZXI7CisgICAgICAgIGlmICghY2hvc2VGb250KQorICAgICAgICAgICAgbmV3V2lu
bmVyID0gYWNjZXB0YWJsZUNob2ljZShkZXNpcmVkVHJhaXRzLCBmb250VHJhaXRzKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgbmV3V2lubmVyID0gYmV0dGVyQ2hvaWNlKGRlc2lyZWRUcmFp
dHMsIGRlc2lyZWRXZWlnaHQsIGNob3NlblRyYWl0cywgY2hvc2VuV2VpZ2h0LCBmb250VHJhaXRz
LCBmb250V2VpZ2h0KTsKKworICAgICAgICBpZiAobmV3V2lubmVyKSB7CisgICAgICAgICAgICBj
aG9zZUZvbnQgPSBZRVM7CisgICAgICAgICAgICBjaG9zZW5XZWlnaHQgPSBmb250V2VpZ2h0Owor
ICAgICAgICAgICAgY2hvc2VuVHJhaXRzID0gZm9udFRyYWl0czsKKyAgICAgICAgICAgIGNob3Nl
bkZ1bGxOYW1lID0gZm9udEZ1bGxOYW1lOworCisgICAgICAgICAgICBpZiAoY2hvc2VuV2VpZ2h0
ID09IGRlc2lyZWRXZWlnaHQgJiYgKGNob3NlblRyYWl0cyAmIElNUE9SVEFOVF9GT05UX1RSQUlU
UykgPT0gKGRlc2lyZWRUcmFpdHMgJiBJTVBPUlRBTlRfRk9OVF9UUkFJVFMpKQorICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFjaG9zZUZvbnQpCisg
ICAgICAgIHJldHVybiBuaWw7CisKKyAgICBOU0ZvbnQgKmZvbnQgPSBbTlNGb250IGZvbnRXaXRo
TmFtZTpjaG9zZW5GdWxsTmFtZSBzaXplOnNpemVdOworCisgICAgaWYgKCFmb250KQorICAgICAg
ICByZXR1cm4gbmlsOworCisgICAgTlNGb250VHJhaXRNYXNrIGFjdHVhbFRyYWl0cyA9IDA7Cisg
ICAgaWYgKGRlc2lyZWRUcmFpdHMgJiBOU0ZvbnRJdGFsaWNUcmFpdCkKKyAgICAgICAgYWN0dWFs
VHJhaXRzID0gW2ZvbnRNYW5hZ2VyIHRyYWl0c09mRm9udDpmb250XTsKKyAgICBpbnQgYWN0dWFs
V2VpZ2h0ID0gW2ZvbnRNYW5hZ2VyIHdlaWdodE9mRm9udDpmb250XTsKKworICAgIGJvb2wgc3lu
dGhldGljQm9sZCA9IGRlc2lyZWRXZWlnaHQgPj0gNyAmJiBhY3R1YWxXZWlnaHQgPCA3OworICAg
IGJvb2wgc3ludGhldGljT2JsaXF1ZSA9IChkZXNpcmVkVHJhaXRzICYgTlNGb250SXRhbGljVHJh
aXQpICYmICEoYWN0dWFsVHJhaXRzICYgTlNGb250SXRhbGljVHJhaXQpOworCisgICAgLy8gVGhl
cmUgYXJlIHNvbWUgbWFsZm9ybWVkIGZvbnRzIHRoYXQgd2lsbCBiZSBjb3JyZWN0bHkgcmV0dXJu
ZWQgYnkgLWZvbnRXaXRoRmFtaWx5OnRyYWl0czp3ZWlnaHQ6c2l6ZTogYXMgYSBtYXRjaCBmb3Ig
YSBwYXJ0aWN1bGFyIHRyYWl0LAorICAgIC8vIHRob3VnaCAtW05TRm9udE1hbmFnZXIgdHJhaXRz
T2ZGb250Ol0gaW5jb3JyZWN0bHkgY2xhaW1zIHRoZSBmb250IGRvZXMgbm90IGhhdmUgdGhlIHNw
ZWNpZmllZCB0cmFpdC4gVGhpcyBjb3VsZCByZXN1bHQgaW4gYXBwbHlpbmcgCisgICAgLy8gc3lu
dGhldGljIGJvbGQgb24gdG9wIG9mIGFuIGFscmVhZHktYm9sZCBmb250LCBhcyByZXBvcnRlZCBp
biA8aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE0Nj4uIFRvIHdvcmsg
YXJvdW5kIHRoaXMKKyAgICAvLyBwcm9ibGVtLCBpZiB3ZSBnb3QgYW4gYXBwYXJlbnQgZXhhY3Qg
bWF0Y2gsIGJ1dCB0aGUgcmVxdWVzdGVkIHRyYWl0cyBhcmVuJ3QgcHJlc2VudCBpbiB0aGUgbWF0
Y2hlZCBmb250LCB3ZSdsbCB0cnkgdG8gZ2V0IGEgZm9udCBmcm9tIAorICAgIC8vIHRoZSBzYW1l
IGZhbWlseSB3aXRob3V0IHRob3NlIHRyYWl0cyAodG8gYXBwbHkgdGhlIHN5bnRoZXRpYyB0cmFp
dHMgdG8gbGF0ZXIpLgorICAgIE5TRm9udFRyYWl0TWFzayBub25TeW50aGV0aWNUcmFpdHMgPSBk
ZXNpcmVkVHJhaXRzOworCisgICAgaWYgKHN5bnRoZXRpY0JvbGQpCisgICAgICAgIG5vblN5bnRo
ZXRpY1RyYWl0cyAmPSB+TlNCb2xkRm9udE1hc2s7CisKKyAgICBpZiAoc3ludGhldGljT2JsaXF1
ZSkKKyAgICAgICAgbm9uU3ludGhldGljVHJhaXRzICY9IH5OU0l0YWxpY0ZvbnRNYXNrOworCisg
ICAgaWYgKG5vblN5bnRoZXRpY1RyYWl0cyAhPSBkZXNpcmVkVHJhaXRzKSB7CisgICAgICAgIE5T
Rm9udCAqZm9udFdpdGhvdXRTeW50aGV0aWNUcmFpdHMgPSBbZm9udE1hbmFnZXIgZm9udFdpdGhG
YW1pbHk6YXZhaWxhYmxlRmFtaWx5IHRyYWl0czpub25TeW50aGV0aWNUcmFpdHMgd2VpZ2h0OmNo
b3NlbldlaWdodCBzaXplOnNpemVdOworICAgICAgICBpZiAoZm9udFdpdGhvdXRTeW50aGV0aWNU
cmFpdHMpCisgICAgICAgICAgICBmb250ID0gZm9udFdpdGhvdXRTeW50aGV0aWNUcmFpdHM7Cisg
ICAgfQorCisgICAgcmV0dXJuIGZvbnQ7Cit9CisKK05TRm9udCogZ2V0Rm9udFdpdGhGYW1pbHko
U3RyaW5nIGRlc2lyZWRGYW1pbHksIE5TRm9udFRyYWl0TWFzayBkZXNpcmVkVHJhaXRzLCBpbnQg
ZGVzaXJlZFdlaWdodCwgZmxvYXQgc2l6ZSkKIHsKLSAgICBbV2ViRm9udENhY2hlIGdldFRyYWl0
czp0cmFpdHNNYXNrcyBpbkZhbWlseTpmYW1pbHlOYW1lXTsKKyAgICBOU0ZvbnQgKmZvbnQgPSBp
bnRlcm5hbEZvbnRXaXRoRmFtaWx5KGRlc2lyZWRGYW1pbHksIGRlc2lyZWRUcmFpdHMsIGRlc2ly
ZWRXZWlnaHQsIHNpemUpOworICAgIGlmIChmb250KQorICAgICAgICByZXR1cm4gZm9udDsKKwor
ICAgIC8vIEF1dG8gYWN0aXZhdGUgdGhlIGZvbnQgYmVmb3JlIGxvb2tpbmcgZm9yIGl0IGEgc2Vj
b25kIHRpbWUuCisgICAgLy8gSWdub3JlIHRoZSByZXN1bHQgYmVjYXVzZSB3ZSB3YW50IHRvIHVz
ZSBvdXIgb3duIGFsZ29yaXRobSB0byBhY3R1YWxseSBmaW5kIHRoZSBmb250LgorICAgIFtOU0Zv
bnQgZm9udFdpdGhOYW1lOmRlc2lyZWRGYW1pbHkgc2l6ZTpzaXplXTsKKworICAgIHJldHVybiBp
bnRlcm5hbEZvbnRXaXRoRmFtaWx5KGRlc2lyZWRGYW1pbHksIGRlc2lyZWRUcmFpdHMsIGRlc2ly
ZWRXZWlnaHQsIHNpemUpOwogfQogCiBQYXNzT3duUHRyPEZvbnRQbGF0Zm9ybURhdGE+IEZvbnRD
YWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnRE
ZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCkBAIC0yMDMsNyArNDYxLDE0
IEBAIFBhc3NPd25QdHI8Rm9udFBsYXRmb3JtRGF0YT4gRm9udENhY2hlOjpjcmVhdGVGb250UGxh
dGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwCiAgICAgTlNJbnRlZ2VyIHdlaWdodCA9IHRvQXBw
S2l0Rm9udFdlaWdodChmb250RGVzY3JpcHRpb24ud2VpZ2h0KCkpOwogICAgIGZsb2F0IHNpemUg
PSBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKTsKIAotICAgIE5TRm9udCAqbnNG
b250ID0gW1dlYkZvbnRDYWNoZSBmb250V2l0aEZhbWlseTpmYW1pbHkgdHJhaXRzOnRyYWl0cyB3
ZWlnaHQ6d2VpZ2h0IHNpemU6c2l6ZV07CisgICAgTlNGb250ICpuc0ZvbnQ7CisgICAgLy8gU2Vl
IGlmIGFueW9uZSBoYXMgb3ZlcnJpZGRlbiB0aGUgaW1wbGVtZW50YXRpb24gZm9yIFdlYkZvbnRD
YWNoZQorICAgIGlmIChtZXRob2RfZ2V0SW1wbGVtZW50YXRpb24oY2xhc3NfZ2V0SW5zdGFuY2VN
ZXRob2Qob2JqY19nZXRDbGFzcygiV2ViRm9udENhY2hlIiksIEBzZWxlY3Rvcihmb250V2l0aEZh
bWlseTp0cmFpdHM6d2VpZ2h0OnNpemU6KSkpICE9IG9yaWdpbmFsR2V0Rm9udFdpdGhGYW1pbHlJ
bXBsZW1lbnRhdGlvbikgeworICAgICAgICBMT0dfRVJST1IoIlBsZWFzZSBkbyBub3QgdXNlIFdl
YkZvbnRDYWNoZSwgYXMgaXQgd2lsbCBiZSBnb2luZyBhd2F5IHNvb24uIik7CisgICAgICAgIG5z
Rm9udCA9IFtXZWJGb250Q2FjaGUgZm9udFdpdGhGYW1pbHk6ZmFtaWx5IHRyYWl0czp0cmFpdHMg
d2VpZ2h0OndlaWdodCBzaXplOnNpemVdOworICAgIH0gZWxzZQorICAgICAgICBuc0ZvbnQgPSBn
ZXRGb250V2l0aEZhbWlseShmYW1pbHksIHRyYWl0cywgd2VpZ2h0LCBzaXplKTsKKwogICAgIGlm
ICghbnNGb250KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkZvbnRDYWNoZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9XZWJGb250Q2FjaGUubW0KaW5kZXggZTM0NjBiNDZiMmI1YTYxMmYwM2E0MTg5
YjgyZTEyNDMxOTgxMzE2MC4uYzA0YWNlMjk0ZWNlODBjMzIzZDM3Njc0ZmU3OGVhNmJjM2NkZWNj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkZvbnRDYWNoZS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViRm9udENhY2hlLm1tCkBAIC0z
MCw2ICszMCw4IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldlYkZvbnRDYWNoZS5o
IgogCisjaW1wb3J0ICJGb250Q2FjaGUuaCIKKyNpbXBvcnQgIkZvbnRDYWNoZU1hYy5oIgogI2lt
cG9ydCAiRm9udFRyYWl0c01hc2suaCIKICNpbXBvcnQgIldlYkNvcmVOU1N0cmluZ0V4dHJhcy5o
IgogI2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5oPgpAQCAtMzgsMjYxICs0MCwyNSBAQAogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotI2RlZmluZSBTWU5USEVTSVpFRF9GT05UX1RSQUlUUyAo
TlNCb2xkRm9udE1hc2sgfCBOU0l0YWxpY0ZvbnRNYXNrKQotCi0jZGVmaW5lIElNUE9SVEFOVF9G
T05UX1RSQUlUUyAoMCBcCi0gICAgfCBOU0NvbXByZXNzZWRGb250TWFzayBcCi0gICAgfCBOU0Nv
bmRlbnNlZEZvbnRNYXNrIFwKLSAgICB8IE5TRXhwYW5kZWRGb250TWFzayBcCi0gICAgfCBOU0l0
YWxpY0ZvbnRNYXNrIFwKLSAgICB8IE5TTmFycm93Rm9udE1hc2sgXAotICAgIHwgTlNQb3N0ZXJG
b250TWFzayBcCi0gICAgfCBOU1NtYWxsQ2Fwc0ZvbnRNYXNrIFwKLSkKLQotc3RhdGljIEJPT0wg
YWNjZXB0YWJsZUNob2ljZShOU0ZvbnRUcmFpdE1hc2sgZGVzaXJlZFRyYWl0cywgTlNGb250VHJh
aXRNYXNrIGNhbmRpZGF0ZVRyYWl0cykKLXsKLSAgICBkZXNpcmVkVHJhaXRzICY9IH5TWU5USEVT
SVpFRF9GT05UX1RSQUlUUzsKLSAgICByZXR1cm4gKGNhbmRpZGF0ZVRyYWl0cyAmIGRlc2lyZWRU
cmFpdHMpID09IGRlc2lyZWRUcmFpdHM7Ci19Ci0KLXN0YXRpYyBCT09MIGJldHRlckNob2ljZShO
U0ZvbnRUcmFpdE1hc2sgZGVzaXJlZFRyYWl0cywgaW50IGRlc2lyZWRXZWlnaHQsCi0gICAgTlNG
b250VHJhaXRNYXNrIGNob3NlblRyYWl0cywgaW50IGNob3NlbldlaWdodCwKLSAgICBOU0ZvbnRU
cmFpdE1hc2sgY2FuZGlkYXRlVHJhaXRzLCBpbnQgY2FuZGlkYXRlV2VpZ2h0KQotewotICAgIGlm
ICghYWNjZXB0YWJsZUNob2ljZShkZXNpcmVkVHJhaXRzLCBjYW5kaWRhdGVUcmFpdHMpKQotICAg
ICAgICByZXR1cm4gTk87Ci0KLSAgICAvLyBBIGxpc3Qgb2YgdGhlIHRyYWl0cyB3ZSBjYXJlIGFi
b3V0LgotICAgIC8vIFRoZSB0b3AgaXRlbSBpbiB0aGUgbGlzdCBpcyB0aGUgd29yc3QgdHJhaXQg
dG8gbWlzbWF0Y2g7IGlmIGEgZm9udCBoYXMgdGhpcwotICAgIC8vIGFuZCB3ZSBkaWRuJ3QgYXNr
IGZvciBpdCwgd2UnZCBwcmVmZXIgYW55IG90aGVyIGZvbnQgaW4gdGhlIGZhbWlseS4KLSAgICBj
b25zdCBOU0ZvbnRUcmFpdE1hc2sgbWFza3NbXSA9IHsKLSAgICAgICAgTlNQb3N0ZXJGb250TWFz
aywKLSAgICAgICAgTlNTbWFsbENhcHNGb250TWFzaywKLSAgICAgICAgTlNJdGFsaWNGb250TWFz
aywKLSAgICAgICAgTlNDb21wcmVzc2VkRm9udE1hc2ssCi0gICAgICAgIE5TQ29uZGVuc2VkRm9u
dE1hc2ssCi0gICAgICAgIE5TRXhwYW5kZWRGb250TWFzaywKLSAgICAgICAgTlNOYXJyb3dGb250
TWFzaywKLSAgICAgICAgMAotICAgIH07Ci0KLSAgICBpbnQgaSA9IDA7Ci0gICAgTlNGb250VHJh
aXRNYXNrIG1hc2s7Ci0gICAgd2hpbGUgKChtYXNrID0gbWFza3NbaSsrXSkpIHsKLSAgICAgICAg
Qk9PTCBkZXNpcmVkID0gKGRlc2lyZWRUcmFpdHMgJiBtYXNrKSAhPSAwOwotICAgICAgICBCT09M
IGNob3Nlbkhhc1Vud2FudGVkVHJhaXQgPSBkZXNpcmVkICE9ICgoY2hvc2VuVHJhaXRzICYgbWFz
aykgIT0gMCk7Ci0gICAgICAgIEJPT0wgY2FuZGlkYXRlSGFzVW53YW50ZWRUcmFpdCA9IGRlc2ly
ZWQgIT0gKChjYW5kaWRhdGVUcmFpdHMgJiBtYXNrKSAhPSAwKTsKLSAgICAgICAgaWYgKCFjYW5k
aWRhdGVIYXNVbndhbnRlZFRyYWl0ICYmIGNob3Nlbkhhc1Vud2FudGVkVHJhaXQpCi0gICAgICAg
ICAgICByZXR1cm4gWUVTOwotICAgICAgICBpZiAoIWNob3Nlbkhhc1Vud2FudGVkVHJhaXQgJiYg
Y2FuZGlkYXRlSGFzVW53YW50ZWRUcmFpdCkKLSAgICAgICAgICAgIHJldHVybiBOTzsKLSAgICB9
Ci0KLSAgICBpbnQgY2hvc2VuV2VpZ2h0RGVsdGFNYWduaXR1ZGUgPSBhYnMoY2hvc2VuV2VpZ2h0
IC0gZGVzaXJlZFdlaWdodCk7Ci0gICAgaW50IGNhbmRpZGF0ZVdlaWdodERlbHRhTWFnbml0dWRl
ID0gYWJzKGNhbmRpZGF0ZVdlaWdodCAtIGRlc2lyZWRXZWlnaHQpOwotCi0gICAgLy8gSWYgYm90
aCBhcmUgdGhlIHNhbWUgZGlzdGFuY2UgZnJvbSB0aGUgZGVzaXJlZCB3ZWlnaHQsIHByZWZlciB0
aGUgY2FuZGlkYXRlIGlmIGl0IGlzIGZ1cnRoZXIgZnJvbSBtZWRpdW0uCi0gICAgaWYgKGNob3Nl
bldlaWdodERlbHRhTWFnbml0dWRlID09IGNhbmRpZGF0ZVdlaWdodERlbHRhTWFnbml0dWRlKQot
ICAgICAgICByZXR1cm4gYWJzKGNhbmRpZGF0ZVdlaWdodCAtIDYpID4gYWJzKGNob3NlbldlaWdo
dCAtIDYpOwotCi0gICAgLy8gT3RoZXJ3aXNlLCBwcmVmZXIgdGhlIG9uZSBjbG9zZXIgdG8gdGhl
IGRlc2lyZWQgd2VpZ2h0LgotICAgIHJldHVybiBjYW5kaWRhdGVXZWlnaHREZWx0YU1hZ25pdHVk
ZSA8IGNob3NlbldlaWdodERlbHRhTWFnbml0dWRlOwotfQotCi1zdGF0aWMgaW5saW5lIEZvbnRU
cmFpdHNNYXNrIHRvVHJhaXRzTWFzayhOU0ZvbnRUcmFpdE1hc2sgYXBwS2l0VHJhaXRzLCBOU0lu
dGVnZXIgYXBwS2l0V2VpZ2h0KQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxGb250VHJhaXRz
TWFzaz4oKChhcHBLaXRUcmFpdHMgJiBOU0ZvbnRJdGFsaWNUcmFpdCkgPyBGb250U3R5bGVJdGFs
aWNNYXNrIDogRm9udFN0eWxlTm9ybWFsTWFzaykKLSAgICAgICAgfCBGb250VmFyaWFudE5vcm1h
bE1hc2sKLSAgICAgICAgfCAoYXBwS2l0V2VpZ2h0ID09IDEgPyBGb250V2VpZ2h0MTAwTWFzayA6
Ci0gICAgICAgICAgICAgIGFwcEtpdFdlaWdodCA9PSAyID8gRm9udFdlaWdodDIwME1hc2sgOgot
ICAgICAgICAgICAgICBhcHBLaXRXZWlnaHQgPD0gNCA/IEZvbnRXZWlnaHQzMDBNYXNrIDoKLSAg
ICAgICAgICAgICAgYXBwS2l0V2VpZ2h0ID09IDUgPyBGb250V2VpZ2h0NDAwTWFzayA6Ci0gICAg
ICAgICAgICAgIGFwcEtpdFdlaWdodCA9PSA2ID8gRm9udFdlaWdodDUwME1hc2sgOgotICAgICAg
ICAgICAgICBhcHBLaXRXZWlnaHQgPD0gOCA/IEZvbnRXZWlnaHQ2MDBNYXNrIDoKLSAgICAgICAg
ICAgICAgYXBwS2l0V2VpZ2h0ID09IDkgPyBGb250V2VpZ2h0NzAwTWFzayA6Ci0gICAgICAgICAg
ICAgIGFwcEtpdFdlaWdodCA8PSAxMSA/IEZvbnRXZWlnaHQ4MDBNYXNrIDoKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRm9udFdlaWdodDkwME1hc2spKTsKLX0KLQogQGltcGxl
bWVudGF0aW9uIFdlYkZvbnRDYWNoZQogCiArICh2b2lkKWdldFRyYWl0czooVmVjdG9yPHVuc2ln
bmVkPiYpdHJhaXRzTWFza3MgaW5GYW1pbHk6KE5TU3RyaW5nICopZGVzaXJlZEZhbWlseQogewot
ICAgIE5TRm9udE1hbmFnZXIgKmZvbnRNYW5hZ2VyID0gW05TRm9udE1hbmFnZXIgc2hhcmVkRm9u
dE1hbmFnZXJdOwotCi0gICAgTlNFbnVtZXJhdG9yICplID0gW1tmb250TWFuYWdlciBhdmFpbGFi
bGVGb250RmFtaWxpZXNdIG9iamVjdEVudW1lcmF0b3JdOwotICAgIE5TU3RyaW5nICphdmFpbGFi
bGVGYW1pbHk7Ci0gICAgd2hpbGUgKChhdmFpbGFibGVGYW1pbHkgPSBbZSBuZXh0T2JqZWN0XSkp
IHsKLSAgICAgICAgaWYgKFtkZXNpcmVkRmFtaWx5IGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU6YXZh
aWxhYmxlRmFtaWx5XSA9PSBOU09yZGVyZWRTYW1lKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
fQotCi0gICAgaWYgKCFhdmFpbGFibGVGYW1pbHkpIHsKLSAgICAgICAgLy8gTWF0Y2ggYnkgUG9z
dFNjcmlwdCBuYW1lLgotICAgICAgICBOU0VudW1lcmF0b3IgKmF2YWlsYWJsZUZvbnRzID0gW1tm
b250TWFuYWdlciBhdmFpbGFibGVGb250c10gb2JqZWN0RW51bWVyYXRvcl07Ci0gICAgICAgIE5T
U3RyaW5nICphdmFpbGFibGVGb250OwotICAgICAgICB3aGlsZSAoKGF2YWlsYWJsZUZvbnQgPSBb
YXZhaWxhYmxlRm9udHMgbmV4dE9iamVjdF0pKSB7Ci0gICAgICAgICAgICBpZiAoW2Rlc2lyZWRG
YW1pbHkgY2FzZUluc2Vuc2l0aXZlQ29tcGFyZTphdmFpbGFibGVGb250XSA9PSBOU09yZGVyZWRT
YW1lKSB7Ci0gICAgICAgICAgICAgICAgTlNGb250ICpmb250ID0gW05TRm9udCBmb250V2l0aE5h
bWU6YXZhaWxhYmxlRm9udCBzaXplOjEwXTsKLSAgICAgICAgICAgICAgICBOU0ludGVnZXIgd2Vp
Z2h0ID0gW2ZvbnRNYW5hZ2VyIHdlaWdodE9mRm9udDpmb250XTsKLSAgICAgICAgICAgICAgICB0
cmFpdHNNYXNrcy5hcHBlbmQodG9UcmFpdHNNYXNrKFtmb250TWFuYWdlciB0cmFpdHNPZkZvbnQ6
Zm9udF0sIHdlaWdodCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBOU0FycmF5ICpmb250cyA9
IFtmb250TWFuYWdlciBhdmFpbGFibGVNZW1iZXJzT2ZGb250RmFtaWx5OmF2YWlsYWJsZUZhbWls
eV07ICAgIAotICAgIHVuc2lnbmVkIG4gPSBbZm9udHMgY291bnRdOwotICAgIHVuc2lnbmVkIGk7
Ci0gICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewotICAgICAgICBOU0FycmF5ICpmb250SW5m
byA9IFtmb250cyBvYmplY3RBdEluZGV4OmldOwotICAgICAgICAvLyBBcnJheSBpbmRpY2VzIG11
c3QgYmUgaGFyZCBjb2RlZCBiZWNhdXNlIG9mIGxhbWUgQXBwS2l0IEFQSS4KLSAgICAgICAgTlNJ
bnRlZ2VyIGZvbnRXZWlnaHQgPSBbW2ZvbnRJbmZvIG9iamVjdEF0SW5kZXg6Ml0gaW50VmFsdWVd
OwotICAgICAgICBOU0ZvbnRUcmFpdE1hc2sgZm9udFRyYWl0cyA9IFtbZm9udEluZm8gb2JqZWN0
QXRJbmRleDozXSB1bnNpZ25lZEludFZhbHVlXTsKLSAgICAgICAgdHJhaXRzTWFza3MuYXBwZW5k
KHRvVHJhaXRzTWFzayhmb250VHJhaXRzLCBmb250V2VpZ2h0KSk7Ci0gICAgfQotfQotCi0vLyBG
YW1pbHkgbmFtZSBpcyBzb21ld2hhdCBvZiBhIG1pc25vbWVyIGhlcmUuICBXZSBmaXJzdCBhdHRl
bXB0IHRvIGZpbmQgYW4gZXhhY3QgbWF0Y2gKLS8vIGNvbXBhcmluZyB0aGUgZGVzaXJlZEZhbWls
eSB0byB0aGUgUG9zdFNjcmlwdCBuYW1lIG9mIHRoZSBpbnN0YWxsZWQgZm9udHMuICBJZiB0aGF0
IGZhaWxzCi0vLyB3ZSB0aGVuIGRvIGEgc2VhcmNoIGJhc2VkIG9uIHRoZSBmYW1pbHkgbmFtZXMg
b2YgdGhlIGluc3RhbGxlZCBmb250cy4KLSsgKE5TRm9udCAqKWludGVybmFsRm9udFdpdGhGYW1p
bHk6KE5TU3RyaW5nICopZGVzaXJlZEZhbWlseSB0cmFpdHM6KE5TRm9udFRyYWl0TWFzaylkZXNp
cmVkVHJhaXRzIHdlaWdodDooaW50KWRlc2lyZWRXZWlnaHQgc2l6ZTooZmxvYXQpc2l6ZQotewot
Ci0gICAgaWYgKHN0cmluZ0lzQ2FzZUluc2Vuc2l0aXZlRXF1YWxUb1N0cmluZyhkZXNpcmVkRmFt
aWx5LCBAIi13ZWJraXQtc3lzdGVtLWZvbnQiKQotICAgICAgICB8fCBzdHJpbmdJc0Nhc2VJbnNl
bnNpdGl2ZUVxdWFsVG9TdHJpbmcoZGVzaXJlZEZhbWlseSwgQCItYXBwbGUtc3lzdGVtLWZvbnQi
KSkgewotICAgICAgICAvLyBXZSBpZ25vcmUgaXRhbGljIGZvciBzeXN0ZW0gZm9udC4KLSAgICAg
ICAgcmV0dXJuIChkZXNpcmVkV2VpZ2h0ID49IDcpID8gW05TRm9udCBib2xkU3lzdGVtRm9udE9m
U2l6ZTpzaXplXSA6IFtOU0ZvbnQgc3lzdGVtRm9udE9mU2l6ZTpzaXplXTsKLSAgICB9Ci0KLSAg
ICBOU0ZvbnRNYW5hZ2VyICpmb250TWFuYWdlciA9IFtOU0ZvbnRNYW5hZ2VyIHNoYXJlZEZvbnRN
YW5hZ2VyXTsKLQotICAgIC8vIERvIGEgc2ltcGxlIGNhc2UgaW5zZW5zaXRpdmUgc2VhcmNoIGZv
ciBhIG1hdGNoaW5nIGZvbnQgZmFtaWx5LgotICAgIC8vIE5TRm9udE1hbmFnZXIgcmVxdWlyZXMg
ZXhhY3QgbmFtZSBtYXRjaGVzLgotICAgIC8vIFRoaXMgYWRkcmVzc2VzIHRoZSBwcm9ibGVtIG9m
IG1hdGNoaW5nIGFyaWFsIHRvIEFyaWFsLCBldGMuLCBidXQgcGVyaGFwcyBub3QgYWxsIHRoZSBp
c3N1ZXMuCi0gICAgTlNFbnVtZXJhdG9yICplID0gW1tmb250TWFuYWdlciBhdmFpbGFibGVGb250
RmFtaWxpZXNdIG9iamVjdEVudW1lcmF0b3JdOwotICAgIE5TU3RyaW5nICphdmFpbGFibGVGYW1p
bHk7Ci0gICAgd2hpbGUgKChhdmFpbGFibGVGYW1pbHkgPSBbZSBuZXh0T2JqZWN0XSkpIHsKLSAg
ICAgICAgaWYgKFtkZXNpcmVkRmFtaWx5IGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU6YXZhaWxhYmxl
RmFtaWx5XSA9PSBOU09yZGVyZWRTYW1lKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0g
ICAgaWYgKCFhdmFpbGFibGVGYW1pbHkpIHsKLSAgICAgICAgLy8gTWF0Y2ggYnkgUG9zdFNjcmlw
dCBuYW1lLgotICAgICAgICBOU0VudW1lcmF0b3IgKmF2YWlsYWJsZUZvbnRzID0gW1tmb250TWFu
YWdlciBhdmFpbGFibGVGb250c10gb2JqZWN0RW51bWVyYXRvcl07Ci0gICAgICAgIE5TU3RyaW5n
ICphdmFpbGFibGVGb250OwotICAgICAgICBOU0ZvbnQgKm5hbWVNYXRjaGVkRm9udCA9IG5pbDsK
LSAgICAgICAgTlNGb250VHJhaXRNYXNrIGRlc2lyZWRUcmFpdHNGb3JOYW1lTWF0Y2ggPSBkZXNp
cmVkVHJhaXRzIHwgKGRlc2lyZWRXZWlnaHQgPj0gNyA/IE5TQm9sZEZvbnRNYXNrIDogMCk7Ci0g
ICAgICAgIHdoaWxlICgoYXZhaWxhYmxlRm9udCA9IFthdmFpbGFibGVGb250cyBuZXh0T2JqZWN0
XSkpIHsKLSAgICAgICAgICAgIGlmIChbZGVzaXJlZEZhbWlseSBjYXNlSW5zZW5zaXRpdmVDb21w
YXJlOmF2YWlsYWJsZUZvbnRdID09IE5TT3JkZXJlZFNhbWUpIHsKLSAgICAgICAgICAgICAgICBu
YW1lTWF0Y2hlZEZvbnQgPSBbTlNGb250IGZvbnRXaXRoTmFtZTphdmFpbGFibGVGb250IHNpemU6
c2l6ZV07Ci0KLSAgICAgICAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UgT3Nha2EtTW9uby4gIEFj
Y29yZGluZyB0byA8cmRhcjovL3Byb2JsZW0vMzk5OTQ2Nz4sIHdlIG5lZWQgdG8gCi0gICAgICAg
ICAgICAgICAgLy8gdHJlYXQgT3Nha2EtTW9ubyBhcyBmaXhlZCBwaXRjaC4KLSAgICAgICAgICAg
ICAgICBpZiAoW2Rlc2lyZWRGYW1pbHkgY2FzZUluc2Vuc2l0aXZlQ29tcGFyZTpAIk9zYWthLU1v
bm8iXSA9PSBOU09yZGVyZWRTYW1lICYmIGRlc2lyZWRUcmFpdHNGb3JOYW1lTWF0Y2ggPT0gMCkK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5hbWVNYXRjaGVkRm9udDsKLQotICAgICAgICAg
ICAgICAgIE5TRm9udFRyYWl0TWFzayB0cmFpdHMgPSBbZm9udE1hbmFnZXIgdHJhaXRzT2ZGb250
Om5hbWVNYXRjaGVkRm9udF07Ci0gICAgICAgICAgICAgICAgaWYgKCh0cmFpdHMgJiBkZXNpcmVk
VHJhaXRzRm9yTmFtZU1hdGNoKSA9PSBkZXNpcmVkVHJhaXRzRm9yTmFtZU1hdGNoKQotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gW2ZvbnRNYW5hZ2VyIGNvbnZlcnRGb250Om5hbWVNYXRjaGVk
Rm9udCB0b0hhdmVUcmFpdDpkZXNpcmVkVHJhaXRzRm9yTmFtZU1hdGNoXTsKLQotICAgICAgICAg
ICAgICAgIGF2YWlsYWJsZUZhbWlseSA9IFtuYW1lTWF0Y2hlZEZvbnQgZmFtaWx5TmFtZV07Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICAvLyBGb3VuZCBhIGZhbWlseSwgbm93IGZpZ3VyZSBvdXQgd2hhdCB3ZWlnaHQgYW5kIHRy
YWl0cyB0byB1c2UuCi0gICAgQk9PTCBjaG9zZUZvbnQgPSBmYWxzZTsKLSAgICBpbnQgY2hvc2Vu
V2VpZ2h0ID0gMDsKLSAgICBOU0ZvbnRUcmFpdE1hc2sgY2hvc2VuVHJhaXRzID0gMDsKLSAgICBO
U1N0cmluZyAqY2hvc2VuRnVsbE5hbWUgPSAwOwotCi0gICAgTlNBcnJheSAqZm9udHMgPSBbZm9u
dE1hbmFnZXIgYXZhaWxhYmxlTWVtYmVyc09mRm9udEZhbWlseTphdmFpbGFibGVGYW1pbHldOyAg
ICAKLSAgICB1bnNpZ25lZCBuID0gW2ZvbnRzIGNvdW50XTsKLSAgICB1bnNpZ25lZCBpOwotICAg
IGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLSAgICAgICAgTlNBcnJheSAqZm9udEluZm8gPSBb
Zm9udHMgb2JqZWN0QXRJbmRleDppXTsKLQotICAgICAgICAvLyBBcnJheSBpbmRpY2VzIG11c3Qg
YmUgaGFyZCBjb2RlZCBiZWNhdXNlIG9mIGxhbWUgQXBwS2l0IEFQSS4KLSAgICAgICAgTlNTdHJp
bmcgKmZvbnRGdWxsTmFtZSA9IFtmb250SW5mbyBvYmplY3RBdEluZGV4OjBdOwotICAgICAgICBO
U0ludGVnZXIgZm9udFdlaWdodCA9IFtbZm9udEluZm8gb2JqZWN0QXRJbmRleDoyXSBpbnRWYWx1
ZV07Ci0gICAgICAgIE5TRm9udFRyYWl0TWFzayBmb250VHJhaXRzID0gW1tmb250SW5mbyBvYmpl
Y3RBdEluZGV4OjNdIHVuc2lnbmVkSW50VmFsdWVdOwotCi0gICAgICAgIEJPT0wgbmV3V2lubmVy
OwotICAgICAgICBpZiAoIWNob3NlRm9udCkKLSAgICAgICAgICAgIG5ld1dpbm5lciA9IGFjY2Vw
dGFibGVDaG9pY2UoZGVzaXJlZFRyYWl0cywgZm9udFRyYWl0cyk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIG5ld1dpbm5lciA9IGJldHRlckNob2ljZShkZXNpcmVkVHJhaXRzLCBkZXNpcmVk
V2VpZ2h0LCBjaG9zZW5UcmFpdHMsIGNob3NlbldlaWdodCwgZm9udFRyYWl0cywgZm9udFdlaWdo
dCk7Ci0KLSAgICAgICAgaWYgKG5ld1dpbm5lcikgewotICAgICAgICAgICAgY2hvc2VGb250ID0g
WUVTOwotICAgICAgICAgICAgY2hvc2VuV2VpZ2h0ID0gZm9udFdlaWdodDsKLSAgICAgICAgICAg
IGNob3NlblRyYWl0cyA9IGZvbnRUcmFpdHM7Ci0gICAgICAgICAgICBjaG9zZW5GdWxsTmFtZSA9
IGZvbnRGdWxsTmFtZTsKLQotICAgICAgICAgICAgaWYgKGNob3NlbldlaWdodCA9PSBkZXNpcmVk
V2VpZ2h0ICYmIChjaG9zZW5UcmFpdHMgJiBJTVBPUlRBTlRfRk9OVF9UUkFJVFMpID09IChkZXNp
cmVkVHJhaXRzICYgSU1QT1JUQU5UX0ZPTlRfVFJBSVRTKSkKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICghY2hvc2VGb250KQotICAgICAgICByZXR1
cm4gbmlsOwotCi0gICAgTlNGb250ICpmb250ID0gW05TRm9udCBmb250V2l0aE5hbWU6Y2hvc2Vu
RnVsbE5hbWUgc2l6ZTpzaXplXTsKLQotICAgIGlmICghZm9udCkKLSAgICAgICAgcmV0dXJuIG5p
bDsKLQotICAgIE5TRm9udFRyYWl0TWFzayBhY3R1YWxUcmFpdHMgPSAwOwotICAgIGlmIChkZXNp
cmVkVHJhaXRzICYgTlNGb250SXRhbGljVHJhaXQpCi0gICAgICAgIGFjdHVhbFRyYWl0cyA9IFtm
b250TWFuYWdlciB0cmFpdHNPZkZvbnQ6Zm9udF07Ci0gICAgaW50IGFjdHVhbFdlaWdodCA9IFtm
b250TWFuYWdlciB3ZWlnaHRPZkZvbnQ6Zm9udF07Ci0KLSAgICBib29sIHN5bnRoZXRpY0JvbGQg
PSBkZXNpcmVkV2VpZ2h0ID49IDcgJiYgYWN0dWFsV2VpZ2h0IDwgNzsKLSAgICBib29sIHN5bnRo
ZXRpY09ibGlxdWUgPSAoZGVzaXJlZFRyYWl0cyAmIE5TRm9udEl0YWxpY1RyYWl0KSAmJiAhKGFj
dHVhbFRyYWl0cyAmIE5TRm9udEl0YWxpY1RyYWl0KTsKLQotICAgIC8vIFRoZXJlIGFyZSBzb21l
IG1hbGZvcm1lZCBmb250cyB0aGF0IHdpbGwgYmUgY29ycmVjdGx5IHJldHVybmVkIGJ5IC1mb250
V2l0aEZhbWlseTp0cmFpdHM6d2VpZ2h0OnNpemU6IGFzIGEgbWF0Y2ggZm9yIGEgcGFydGljdWxh
ciB0cmFpdCwKLSAgICAvLyB0aG91Z2ggLVtOU0ZvbnRNYW5hZ2VyIHRyYWl0c09mRm9udDpdIGlu
Y29ycmVjdGx5IGNsYWltcyB0aGUgZm9udCBkb2VzIG5vdCBoYXZlIHRoZSBzcGVjaWZpZWQgdHJh
aXQuIFRoaXMgY291bGQgcmVzdWx0IGluIGFwcGx5aW5nIAotICAgIC8vIHN5bnRoZXRpYyBib2xk
IG9uIHRvcCBvZiBhbiBhbHJlYWR5LWJvbGQgZm9udCwgYXMgcmVwb3J0ZWQgaW4gPGh0dHA6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxNDY+LiBUbyB3b3JrIGFyb3VuZCB0aGlz
Ci0gICAgLy8gcHJvYmxlbSwgaWYgd2UgZ290IGFuIGFwcGFyZW50IGV4YWN0IG1hdGNoLCBidXQg
dGhlIHJlcXVlc3RlZCB0cmFpdHMgYXJlbid0IHByZXNlbnQgaW4gdGhlIG1hdGNoZWQgZm9udCwg
d2UnbGwgdHJ5IHRvIGdldCBhIGZvbnQgZnJvbSAKLSAgICAvLyB0aGUgc2FtZSBmYW1pbHkgd2l0
aG91dCB0aG9zZSB0cmFpdHMgKHRvIGFwcGx5IHRoZSBzeW50aGV0aWMgdHJhaXRzIHRvIGxhdGVy
KS4KLSAgICBOU0ZvbnRUcmFpdE1hc2sgbm9uU3ludGhldGljVHJhaXRzID0gZGVzaXJlZFRyYWl0
czsKLQotICAgIGlmIChzeW50aGV0aWNCb2xkKQotICAgICAgICBub25TeW50aGV0aWNUcmFpdHMg
Jj0gfk5TQm9sZEZvbnRNYXNrOwotCi0gICAgaWYgKHN5bnRoZXRpY09ibGlxdWUpCi0gICAgICAg
IG5vblN5bnRoZXRpY1RyYWl0cyAmPSB+TlNJdGFsaWNGb250TWFzazsKLQotICAgIGlmIChub25T
eW50aGV0aWNUcmFpdHMgIT0gZGVzaXJlZFRyYWl0cykgewotICAgICAgICBOU0ZvbnQgKmZvbnRX
aXRob3V0U3ludGhldGljVHJhaXRzID0gW2ZvbnRNYW5hZ2VyIGZvbnRXaXRoRmFtaWx5OmF2YWls
YWJsZUZhbWlseSB0cmFpdHM6bm9uU3ludGhldGljVHJhaXRzIHdlaWdodDpjaG9zZW5XZWlnaHQg
c2l6ZTpzaXplXTsKLSAgICAgICAgaWYgKGZvbnRXaXRob3V0U3ludGhldGljVHJhaXRzKQotICAg
ICAgICAgICAgZm9udCA9IGZvbnRXaXRob3V0U3ludGhldGljVHJhaXRzOwotICAgIH0KLQotICAg
IHJldHVybiBmb250OworICAgIExPR19FUlJPUigiUGxlYXNlIGRvIG5vdCB1c2UgV2ViRm9udENh
Y2hlLCBhcyBpdCB3aWxsIGJlIGdvaW5nIGF3YXkgc29vbi4iKTsKKyAgICByZXR1cm4gRm9udENh
Y2hlOjpnZXRUcmFpdHNJbkZhbWlseShTdHJpbmcoZGVzaXJlZEZhbWlseSksIHRyYWl0c01hc2tz
KTsKIH0KIAogKyAoTlNGb250ICopZm9udFdpdGhGYW1pbHk6KE5TU3RyaW5nICopZGVzaXJlZEZh
bWlseSB0cmFpdHM6KE5TRm9udFRyYWl0TWFzaylkZXNpcmVkVHJhaXRzIHdlaWdodDooaW50KWRl
c2lyZWRXZWlnaHQgc2l6ZTooZmxvYXQpc2l6ZQogewotICAgIE5TRm9udCAqZm9udCA9IFtzZWxm
IGludGVybmFsRm9udFdpdGhGYW1pbHk6ZGVzaXJlZEZhbWlseSB0cmFpdHM6ZGVzaXJlZFRyYWl0
cyB3ZWlnaHQ6ZGVzaXJlZFdlaWdodCBzaXplOnNpemVdOwotICAgIGlmIChmb250KQotICAgICAg
ICByZXR1cm4gZm9udDsKLQotICAgIC8vIEF1dG8gYWN0aXZhdGUgdGhlIGZvbnQgYmVmb3JlIGxv
b2tpbmcgZm9yIGl0IGEgc2Vjb25kIHRpbWUuCi0gICAgLy8gSWdub3JlIHRoZSByZXN1bHQgYmVj
YXVzZSB3ZSB3YW50IHRvIHVzZSBvdXIgb3duIGFsZ29yaXRobSB0byBhY3R1YWxseSBmaW5kIHRo
ZSBmb250LgotICAgIFtOU0ZvbnQgZm9udFdpdGhOYW1lOmRlc2lyZWRGYW1pbHkgc2l6ZTpzaXpl
XTsKLQotICAgIHJldHVybiBbc2VsZiBpbnRlcm5hbEZvbnRXaXRoRmFtaWx5OmRlc2lyZWRGYW1p
bHkgdHJhaXRzOmRlc2lyZWRUcmFpdHMgd2VpZ2h0OmRlc2lyZWRXZWlnaHQgc2l6ZTpzaXplXTsK
KyAgICBMT0dfRVJST1IoIlBsZWFzZSBkbyBub3QgdXNlIFdlYkZvbnRDYWNoZSwgYXMgaXQgd2ls
bCBiZSBnb2luZyBhd2F5IHNvb24uIik7CisgICAgcmV0dXJuIGdldEZvbnRXaXRoRmFtaWx5KFN0
cmluZyhkZXNpcmVkRmFtaWx5KSwgZGVzaXJlZFRyYWl0cywgZGVzaXJlZFdlaWdodCwgc2l6ZSk7
CiB9CiAKICsgKE5TRm9udCAqKWZvbnRXaXRoRmFtaWx5OihOU1N0cmluZyAqKWRlc2lyZWRGYW1p
bHkgdHJhaXRzOihOU0ZvbnRUcmFpdE1hc2spZGVzaXJlZFRyYWl0cyBzaXplOihmbG9hdClzaXpl
CiB7CisgICAgTE9HX0VSUk9SKCJQbGVhc2UgZG8gbm90IHVzZSBXZWJGb250Q2FjaGUsIGFzIGl0
IHdpbGwgYmUgZ29pbmcgYXdheSBzb29uLiIpOwogICAgIGludCBkZXNpcmVkV2VpZ2h0ID0gKGRl
c2lyZWRUcmFpdHMgJiBOU0JvbGRGb250TWFzaykgPyA5IDogNTsKLSAgICByZXR1cm4gW3NlbGYg
Zm9udFdpdGhGYW1pbHk6ZGVzaXJlZEZhbWlseSB0cmFpdHM6ZGVzaXJlZFRyYWl0cyB3ZWlnaHQ6
ZGVzaXJlZFdlaWdodCBzaXplOnNpemVdOworICAgIHJldHVybiBnZXRGb250V2l0aEZhbWlseShT
dHJpbmcoZGVzaXJlZEZhbWlseSksIGRlc2lyZWRUcmFpdHMsIGRlc2lyZWRXZWlnaHQsIHNpemUp
OwogfQogCiBAZW5kCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241635</attachid>
            <date>2014-11-14 15:49:18 -0800</date>
            <delta_ts>2014-11-14 15:57:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134752-20141114154925.patch</filename>
            <type>text/plain</type>
            <size>45612</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc2MTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTA2MGYzNDdhMDEzNzhh
NDhmYTMxNTA5Y2UyMzk5ZDU5YzMzZWViMi4uODNjMTE3NTdmMzFjODVkNTEwOWVmMjkyNGRiMjdh
YWJmMzM1NTYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE0LTExLTE0ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0IHJpZCBv
ZiBXZWJGb250Q2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzNDc1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4K
KworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWc6CisgICAgICAgICog
UGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICog
V2ViQ29yZS5vcmRlcjoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OmFjY2VwdGFibGVDaG9pY2UpOgorICAgICAgICAoV2ViQ29yZTo6YmV0
dGVyQ2hvaWNlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvVHJhaXRzTWFzayk6CisgICAgICAgIChX
ZWJDb3JlOjpkZXNpcmVkRmFtaWx5VG9BdmFpbGFibGVGYW1pbHlEaWN0aW9uYXJ5KToKKyAgICAg
ICAgKFdlYkNvcmU6OnJlbWVtYmVyRGVzaXJlZEZhbWlseVRvQXZhaWxhYmxlRmFtaWx5TWFwcGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpmb250V2l0aEZhbWlseSk6CisgICAgICAgIChXZWJDb3Jl
OjppbnZhbGlkYXRlRm9udENhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Z2V0
VHJhaXRzSW5GYW1pbHkpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpjcmVhdGVGb250
UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViRm9udENhY2hlLmg6IFJl
bW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkZvbnRDYWNoZS5tbTogUmVtb3ZlZC4K
KwogMjAxNC0xMS0xNCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAg
ICAgW2lPU10gQ29yZUdyYXBoaWNzIFNQSSBub3QgYXZhaWxhYmxlIGluIHB1YmxpYyBTREsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwppbmRleCBlMTRhNjczYjZiZTU0MDY2ODIwYTliMDE5YTM2YjEzMDBlMWE4Zjgx
Li43YmE2ZWI2OWFiNzgyNGQ0ZWU1NGFhZmZkNWNlOGZhYTYzOGY4NDczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTQtMTEtMTQgIE15bGVzIEMuIE1heGZpZWxkICA8bW1h
eGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBHZXQgcmlkIG9mIFdlYkZvbnRDYWNoZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0NzUyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tOgorCiAyMDE0LTExLTE0ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNv
bT4KIAogICAgICAgICBXSzE6IFdlYnBhZ2UgcHJldmlldyBjYW4gY29tZSB1cCBpbiB3cm9uZyBs
b2NhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvV2ViQ29y
ZS54Y2NvbmZpZyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25m
aWcKaW5kZXggMzZkZGY0MDFkZmVlZGY5YmQzNzg5NDI3YmRhMmM4OGJkYTlkNGI2ZS4uNzdmOGQ4
OTA5MTgyMzg4ODJkZTgxMTE2Mjk3ODA3MzIxNjJhNTE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Db25maWd1cmF0aW9ucy9XZWJDb3JlLnhjY29uZmlnCkBAIC0xMjIsNiArMTIyLDYgQEAgRVhD
TFVERURfU09VUkNFX0ZJTEVfTkFNRVNfRk9SX0dFU1RVUkVfRVZFTlRTID0gJChFWENMVURFRF9T
T1VSQ0VfRklMRV9OQU1FU19GT1IKIEVYQ0xVREVEX1NPVVJDRV9GSUxFX05BTUVTX0ZPUl9HRVNU
VVJFX0VWRU5UU19JRl9FTkFCTEVEXyA9IEpTR2VzdHVyZSogRE9NR2VzdHVyZSo7CiAKIEVYQ0xV
REVEX1NPVVJDRV9GSUxFX05BTUVTID0gJChFWENMVURFRF9TT1VSQ0VfRklMRV9OQU1FU18kKFBM
QVRGT1JNX05BTUUpKTsKLUVYQ0xVREVEX1NPVVJDRV9GSUxFX05BTUVTX2lwaG9uZW9zID0gKi50
aWZmICpDdXJzb3IucG5nIEFjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0gQVhPYmplY3RDYWNoZU1h
Yy5tbSBDb2xvck1hYy5tbSBDdXJzb3IuY3BwIEN1cnNvck1hYy5tbSBEYXRhVHJhbnNmZXJNYWMu
bW0gRWRpdG9yTWFjLm1tIEV2ZW50SGFuZGxlck1hYy5tbSBFdmVudExvb3BNYWMubW0gR2VvbG9j
YXRpb25TZXJ2aWNlTWFjLm1tIEdyYXBoaWNzQ29udGV4dDNET3BlbkdMRVMuY3BwIEljb25EYXRh
YmFzZS5jcHAgSWNvbk1hYy5tbSBLaWxsUmluZ01hYy5tbSBMb2NhbEN1cnJlbnRHcmFwaGljc0Nv
bnRleHQubW0gTUlNRVR5cGVSZWdpc3RyeU1hYy5tbSBNZWRpYVBsYXllclByaXZhdGVRVEtpdC5t
bSBOU1Njcm9sbGVySW1wRGV0YWlscy5tbSBOZXR3b3JrU3RhdGVOb3RpZmllck1hYy5jcHAgUGFz
dGVib2FyZE1hYy5tbSBQbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbSBQbGF0Zm9ybU1vdXNlRXZl
bnRNYWMubW0gUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIFBsYXRmb3JtU2NyZWVuTWFjLm1tIFBs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW0gUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlci5j
cHAgUnVuTG9vcE1hYy5tbSBTU0xLZXlHZW5lcmF0b3JNYWMuY3BwIFNjcm9sbFZpZXdNYWMubW0g
U2Nyb2xsYmFyVGhlbWVNYWMubW0gU2hhcmVkVGltZXJNYWMubW0gU291bmRNYWMubW0gU3lzdGVt
VGltZU1hYy5jcHAgVGhlbWVNYWMubW0gVGhyZWFkQ2hlY2subW0gVXNlckFnZW50TWFjLm1tIFdl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uu
bW0gV2ViQ29yZVZpZXcubSBXZWJGb250Q2FjaGUubW0gV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlci5tbSBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tIFdlYldpbmRv
d0FuaW1hdGlvbi5tbSBXaWRnZXRNYWMubW0gRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcCAk
KEVYQ0xVREVEX1NPVVJDRV9GSUxFX05BTUVTX0ZPUl9UT1VDSF9FVkVOVFMpICQoRVhDTFVERURf
U09VUkNFX0ZJTEVfTkFNRVNfRk9SX0dFU1RVUkVfRVZFTlRTKTsKK0VYQ0xVREVEX1NPVVJDRV9G
SUxFX05BTUVTX2lwaG9uZW9zID0gKi50aWZmICpDdXJzb3IucG5nIEFjY2Vzc2liaWxpdHlPYmpl
Y3RNYWMubW0gQVhPYmplY3RDYWNoZU1hYy5tbSBDb2xvck1hYy5tbSBDdXJzb3IuY3BwIEN1cnNv
ck1hYy5tbSBEYXRhVHJhbnNmZXJNYWMubW0gRWRpdG9yTWFjLm1tIEV2ZW50SGFuZGxlck1hYy5t
bSBFdmVudExvb3BNYWMubW0gR2VvbG9jYXRpb25TZXJ2aWNlTWFjLm1tIEdyYXBoaWNzQ29udGV4
dDNET3BlbkdMRVMuY3BwIEljb25EYXRhYmFzZS5jcHAgSWNvbk1hYy5tbSBLaWxsUmluZ01hYy5t
bSBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQubW0gTUlNRVR5cGVSZWdpc3RyeU1hYy5tbSBN
ZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbSBOU1Njcm9sbGVySW1wRGV0YWlscy5tbSBOZXR3b3Jr
U3RhdGVOb3RpZmllck1hYy5jcHAgUGFzdGVib2FyZE1hYy5tbSBQbGF0Zm9ybUV2ZW50RmFjdG9y
eU1hYy5tbSBQbGF0Zm9ybU1vdXNlRXZlbnRNYWMubW0gUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1t
IFBsYXRmb3JtU2NyZWVuTWFjLm1tIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW0gUGx1
Z2luTWFpblRocmVhZFNjaGVkdWxlci5jcHAgUnVuTG9vcE1hYy5tbSBTU0xLZXlHZW5lcmF0b3JN
YWMuY3BwIFNjcm9sbFZpZXdNYWMubW0gU2Nyb2xsYmFyVGhlbWVNYWMubW0gU2hhcmVkVGltZXJN
YWMubW0gU291bmRNYWMubW0gU3lzdGVtVGltZU1hYy5jcHAgVGhlbWVNYWMubW0gVGhyZWFkQ2hl
Y2subW0gVXNlckFnZW50TWFjLm1tIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1t
IFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0gV2ViQ29yZVZpZXcubSBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyLm1tIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0g
V2ViV2luZG93QW5pbWF0aW9uLm1tIFdpZGdldE1hYy5tbSBEaXNwbGF5UmVmcmVzaE1vbml0b3JN
YWMuY3BwICQoRVhDTFVERURfU09VUkNFX0ZJTEVfTkFNRVNfRk9SX1RPVUNIX0VWRU5UUykgJChF
WENMVURFRF9TT1VSQ0VfRklMRV9OQU1FU19GT1JfR0VTVFVSRV9FVkVOVFMpOwogRVhDTFVERURf
U09VUkNFX0ZJTEVfTkFNRVNfaXBob25lc2ltdWxhdG9yID0gJChFWENMVURFRF9TT1VSQ0VfRklM
RV9OQU1FU19pcGhvbmVvcyk7CiBFWENMVURFRF9TT1VSQ0VfRklMRV9OQU1FU19tYWNvc3ggPSAq
SU9TLmggKklPUy5jcHAgKklPUy5tbSBLaWxsUmluZ05vbmUuY3BwIFdBS0FwcEtpdFN0dWJzLmgg
V0FLQ2xpcFZpZXcuaCBXQUtSZXNwb25kZXIuaCBXQUtTY3JvbGxWaWV3LmggV0FLVmlldy5oIFdB
S1ZpZXdQcml2YXRlLmggV0FLV2luZG93LmggV0tDb250ZW50T2JzZXJ2YXRpb24uaCBXS0dyYXBo
aWNzLmggV0tUeXBlcy5oIFdLVXRpbGl0aWVzLmggV0tWaWV3LmggV0tWaWV3UHJpdmF0ZS5oIFdl
YkNvcmVUaHJlYWQuaCBXZWJDb3JlVGhyZWFkTWVzc2FnZS5oIFdlYkNvcmVUaHJlYWRSdW4uaCBX
ZWJDb3JlVGhyZWFkU3lzdGVtSW50ZXJmYWNlLmggJChFWENMVURFRF9TT1VSQ0VfRklMRV9OQU1F
U19GT1JfVE9VQ0hfRVZFTlRTKSAkKEVYQ0xVREVEX1NPVVJDRV9GSUxFX05BTUVTX0ZPUl9HRVNU
VVJFX0VWRU5UUyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFr
ZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDU2YjQ4NzIzNjkwMjQy
Y2IzMGVlZDU0NjQ0YjgzMmRlN2Q4MzNiNGIuLjM5MzllYjBjZWE2NGQ1YmE3NDFlMzIxOTMwOTIw
OWYwNWM4MjcyZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtl
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0xNDcsNyArMTQ3LDYg
QEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbWFjL1dlYkNvcmVP
YmpDRXh0cmFzLm1tCiAgICAgcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0K
ICAgICBwbGF0Zm9ybS9tYWMvV2ViQ29yZVZpZXcubQotICAgIHBsYXRmb3JtL21hYy9XZWJGb250
Q2FjaGUubW0KICAgICBwbGF0Zm9ybS9tYWMvV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLm1t
CiAgICAgcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0KICAgICBw
bGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgppbmRleCBhM2NmNDc1OWZmODNlYmE0YWQyODFjZmQyNWY0NjU2MWYwZmVh
MWQyLi5kMWYyNWJiNDZjMThmOGEzNjlmMGEzNzA0YzllNWFkNGYwNzc0YzIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgpAQCAtMjI4MSw3ICsyMjgxLDYgQEAgX19aTjdXZWJDb3JlMzZpbml0aWFsaXpl
TG9nZ2luZ0NoYW5uZWxzSWZOZWNlc3NhcnlFdgogLm9iamNfY2xhc3NfbmFtZV9XZWJDb3JlRnVs
bFNjcmVlblBsYWNlaG9sZGVyVmlldwogLm9iamNfY2xhc3NfbmFtZV9XZWJDb3JlRnVsbFNjcmVl
bldhcm5pbmdWaWV3CiAub2JqY19jbGFzc19uYW1lX1dlYkNvcmVGdWxsU2NyZWVuV2luZG93Ci0u
b2JqY19jbGFzc19uYW1lX1dlYkZvbnRDYWNoZQogLm9iamNfY2xhc3NfbmFtZV9XZWJXaW5kb3dG
YWRlQW5pbWF0aW9uCiAub2JqY19jbGFzc19uYW1lX1dlYldpbmRvd1NjYWxlQW5pbWF0aW9uCiBf
X1pON1dlYkNvcmUxMEZsb2F0UG9pbnRDMUVSSzhfTlNQb2ludApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5vcmRlciBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKaW5k
ZXggNzRjOTRhMjgxYzc4ZjhlNzRlNzBmZGFkNGJkNzc0MDZmMmJmMzEwMy4uZGE4ODU4YjI1MWRl
NTkyMjQ2YzQwODAzNWU0MGExZGVhNTM1NmQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5vcmRlcgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBAIC00NzIx
LDggKzQ3MjEsNiBAQCBfX1pOM1dURjlIYXNoVGFibGVJTjdXZWJDb3JlMjRGb250UGxhdGZvcm1E
YXRhQ2FjaGVLZXlFTlNfMTJLZXlWYWx1ZVBhaXJJUzJfTlNfNgogX19aTjNXVEY5SGFzaFRhYmxl
SU43V2ViQ29yZTI0Rm9udFBsYXRmb3JtRGF0YUNhY2hlS2V5RU5TXzEyS2V5VmFsdWVQYWlySVMy
X05TXzZPd25QdHJJTlMxXzE2Rm9udFBsYXRmb3JtRGF0YUVFRUVFTlNfMjRLZXlWYWx1ZVBhaXJL
ZXlFeHRyYWN0b3JJUzdfRUVOUzFfMjhGb250UGxhdGZvcm1EYXRhQ2FjaGVLZXlIYXNoRU5TXzE4
SGFzaE1hcFZhbHVlVHJhaXRzSU5TMV8zMEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleVRyYWl0c0VO
U18xMEhhc2hUcmFpdHNJUzZfRUVFRVNDX0U2bG9va3VwSU5TXzIySWRlbnRpdHlIYXNoVHJhbnNs
YXRvcklTQV9FRVMyX0VFUFM3X1JLVDBfCiBfX1pOM1dURjlIYXNoVGFibGVJTjdXZWJDb3JlMjRG
b250UGxhdGZvcm1EYXRhQ2FjaGVLZXlFTlNfMTJLZXlWYWx1ZVBhaXJJUzJfTlNfNk93blB0cklO
UzFfMTZGb250UGxhdGZvcm1EYXRhRUVFRUVOU18yNEtleVZhbHVlUGFpcktleUV4dHJhY3RvcklT
N19FRU5TMV8yOEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleUhhc2hFTlNfMThIYXNoTWFwVmFsdWVU
cmFpdHNJTlMxXzMwRm9udFBsYXRmb3JtRGF0YUNhY2hlS2V5VHJhaXRzRU5TXzEwSGFzaFRyYWl0
c0lTNl9FRUVFU0NfRTZyZWhhc2hFaQogX19aTjdXZWJDb3JlOUZvbnRDYWNoZTIyY3JlYXRlRm9u
dFBsYXRmb3JtRGF0YUVSS05TXzE1Rm9udERlc2NyaXB0aW9uRVJLTjNXVEYxMkF0b21pY1N0cmlu
Z0UKLStbV2ViRm9udENhY2hlIGZvbnRXaXRoRmFtaWx5OnRyYWl0czp3ZWlnaHQ6c2l6ZTpdCi0r
W1dlYkZvbnRDYWNoZSBpbnRlcm5hbEZvbnRXaXRoRmFtaWx5OnRyYWl0czp3ZWlnaHQ6c2l6ZTpd
CiBfX1pOSzdXZWJDb3JlMTRTaW1wbGVGb250RGF0YTlpc0xvYWRpbmdFdgogX19aTks3V2ViQ29y
ZTExRm9udE1ldHJpY3MzNWhhc0lkZW50aWNhbEFzY2VudERlc2NlbnRBbmRMaW5lR2FwRVJLUzBf
CiBfX1pOSzdXZWJDb3JlMTFSZW5kZXJTdHlsZTEwbGluZUhlaWdodEV2CkBAIC04MjM1LDcgKzgy
MzMsNiBAQCBfX1pOM1dURjlIYXNoVGFibGVJTlNfNlN0cmluZ0VOU18xMktleVZhbHVlUGFpcklT
MV9OU182T3duUHRySU5TXzZWZWN0b3JJTlNfNlJlZgogX19aTjNXVEY5SGFzaFRhYmxlSU5TXzZT
dHJpbmdFTlNfMTJLZXlWYWx1ZVBhaXJJUzFfTlNfNk93blB0cklOU182VmVjdG9ySU5TXzZSZWZQ
dHJJTjdXZWJDb3JlMTFDU1NGb250RmFjZUVFRUxtMEVOU18xNUNyYXNoT25PdmVyZmxvd0VFRUVF
RUVOU18yNEtleVZhbHVlUGFpcktleUV4dHJhY3RvcklTQ19FRU5TXzE1Q2FzZUZvbGRpbmdIYXNo
RU5TXzE4SGFzaE1hcFZhbHVlVHJhaXRzSU5TXzEwSGFzaFRyYWl0c0lTMV9FRU5TSF9JU0JfRUVF
RVNJX0U2cmVoYXNoRWkKIF9fWk4zV1RGMTdIYXNoTWFwVHJhbnNsYXRvcklOU18xOEhhc2hNYXBW
YWx1ZVRyYWl0c0lOU18xMEhhc2hUcmFpdHNJTlNfNlN0cmluZ0VFRU5TMl9JTlNfNk93blB0cklO
U182VmVjdG9ySU5TXzZSZWZQdHJJTjdXZWJDb3JlMTFDU1NGb250RmFjZUVFRUxtMEVOU18xNUNy
YXNoT25PdmVyZmxvd0VFRUVFRUVFRU5TXzE1Q2FzZUZvbGRpbmdIYXNoRUU5dHJhbnNsYXRlSU5T
XzEyS2V5VmFsdWVQYWlySVMzX1NEX0VFUzNfTlNfMTBQYXNzT3duUHRySVNDX0VFRUV2UlRfUktU
MF9SS1QxXwogX19aTjdXZWJDb3JlOUZvbnRDYWNoZTE3Z2V0VHJhaXRzSW5GYW1pbHlFUktOM1dU
RjEyQXRvbWljU3RyaW5nRVJOUzFfNlZlY3RvcklqTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxvd0VF
RQotK1tXZWJGb250Q2FjaGUgZ2V0VHJhaXRzOmluRmFtaWx5Ol0KIF9fWk5LN1dlYkNvcmUxMlJl
bmRlck9iamVjdDE0bmV4dEluUHJlT3JkZXJFdgogX19aTks3V2ViQ29yZTEwUmVuZGVyVGV4dDE2
bGluZXNCb3VuZGluZ0JveEV2CiBfX1pOSzdXZWJDb3JlNFRleHQyM2NhbkNvbnRhaW5SYW5nZUVu
ZFBvaW50RXYKQEAgLTIwNTIyLDggKzIwNTE5LDYgQEAgX09CSkNfQ0xBU1NfJF9XZWJDb3JlRnVs
bFNjcmVlbldhcm5pbmdWaWV3CiBfT0JKQ19NRVRBQ0xBU1NfJF9XZWJDb3JlRnVsbFNjcmVlbldh
cm5pbmdWaWV3CiBfT0JKQ19DTEFTU18kX1dlYkNvcmVGdWxsU2NyZWVuV2luZG93CiBfT0JKQ19N
RVRBQ0xBU1NfJF9XZWJDb3JlRnVsbFNjcmVlbldpbmRvdwotX09CSkNfTUVUQUNMQVNTXyRfV2Vi
Rm9udENhY2hlCi1fT0JKQ19DTEFTU18kX1dlYkZvbnRDYWNoZQogX09CSkNfQ0xBU1NfJF9XZWJH
TExheWVyCiBfT0JKQ19NRVRBQ0xBU1NfJF9XZWJHTExheWVyCiBfT0JKQ19DTEFTU18kX1dlYkxh
eWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggNmRlMDI0ZTJiODBlYmUyODBhYTY5MGE1OTdjYjAzOTA3Yzk5MzVlMi4uMTgxMTM5
ZGQ1Mzg5MzJhMDkyZGViYjcxMjNlYmM2NTU4Njg0MzJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTIwMSw4ICs1MjAxLDYg
QEAKIAkJQkM2RDQ0RUMwQzA3RjJFRDAwNzJEMkM5IC8qIEpTSFRNTEVtYmVkRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzZENDRFQTBD
MDdGMkVEMDA3MkQyQzkgLyogSlNIVE1MRW1iZWRFbGVtZW50LmNwcCAqLzsgfTsKIAkJQkM2RDQ0
RUQwQzA3RjJFRDAwNzJEMkM5IC8qIEpTSFRNTEVtYmVkRWxlbWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2RDQ0RUIwQzA3RjJFRDAwNzJEMkM5
IC8qIEpTSFRNTEVtYmVkRWxlbWVudC5oICovOyB9OwogCQlCQzZENkUyNjA5QUY5NDM1MDBGNTk3
NTkgLyogU2Nyb2xsVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkM2RDZFMjUwOUFGOTQzNTAwRjU5NzU5IC8qIFNjcm9sbFZpZXcuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlCQzZEQURFRjBBMTk1
RkRGMDBFNUNEMTQgLyogV2ViRm9udENhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzZEQURFRTBBMTk1RkRGMDBFNUNEMTQgLyogV2ViRm9udENh
Y2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
QkM2REFERkEwQTE5NjAyQjAwRTVDRDE0IC8qIFdlYkZvbnRDYWNoZS5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNkRBREY5MEExOTYwMkIwMEU1Q0Qx
NCAvKiBXZWJGb250Q2FjaGUubW0gKi87IH07CiAJCUJDNzREQTM3MTAxM0YzRjcwMDc5ODdBRCAv
KiBSR0JDb2xvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkM3NERBMzUxMDEzRjNGNzAwNzk4N0FEIC8qIFJHQkNvbG9yLmggKi87IH07CiAJCUJDNzRE
QTM4MTAxM0YzRjcwMDc5ODdBRCAvKiBSR0JDb2xvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzc0REEzNjEwMTNGM0Y3MDA3OTg3QUQgLyogUkdC
Q29sb3IuY3BwICovOyB9OwogCQlCQzc0REE0ODEwMTNGNDY4MDA3OTg3QUQgLyogSlNSR0JDb2xv
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzc0
REE0NjEwMTNGNDY4MDA3OTg3QUQgLyogSlNSR0JDb2xvci5jcHAgKi87IH07CkBAIC0xMjU5NCw4
ICsxMjU5Miw2IEBACiAJCUJDNkQ0NEVBMEMwN0YyRUQwMDcyRDJDOSAvKiBKU0hUTUxFbWJlZEVs
ZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTEVt
YmVkRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNkQ0NEVCMEMw
N0YyRUQwMDcyRDJDOSAvKiBKU0hUTUxFbWJlZEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTSFRNTEVtYmVkRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQzZENkUyNTA5QUY5NDM1MDBGNTk3NTkgLyogU2Nyb2xsVmlldy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsVmlldy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlCQzZEQURFRTBBMTk1RkRGMDBFNUNEMTQgLyogV2ViRm9udENhY2hl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJGb250Q2FjaGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkM2REFERjkwQTE5NjAyQjAwRTVDRDE0IC8qIFdl
YkZvbnRDYWNoZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
ZWJGb250Q2FjaGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNzREQTM1MTAx
M0YzRjcwMDc5ODdBRCAvKiBSR0JDb2xvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSR0JDb2xvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzc0REEzNjEw
MTNGM0Y3MDA3OTg3QUQgLyogUkdCQ29sb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUkdCQ29sb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
Qzc0REE0NjEwMTNGNDY4MDA3OTg3QUQgLyogSlNSR0JDb2xvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JHQkNvbG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE2NDc3LDggKzE2NDczLDYgQEAKIAkJCQk5M0VCMTY5NDA5Rjg4MEIwMDA5
MUY4RkYgLyogV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbSAqLywKIAkJCQlCRTg1NUY3RjA3MDFF
ODM1MDAyMzk3NjkgLyogV2ViQ29yZVZpZXcuaCAqLywKIAkJCQlCRTg1NjA1MTA3MDFGOTExMDAy
Mzk3NjkgLyogV2ViQ29yZVZpZXcubSAqLywKLQkJCQlCQzZEQURFRTBBMTk1RkRGMDBFNUNEMTQg
LyogV2ViRm9udENhY2hlLmggKi8sCi0JCQkJQkM2REFERjkwQTE5NjAyQjAwRTVDRDE0IC8qIFdl
YkZvbnRDYWNoZS5tbSAqLywKIAkJCQlFMUEzMTYyQjEzNEJDMzJEMDA3QzlBNEYgLyogV2ViTlNB
dHRyaWJ1dGVkU3RyaW5nRXh0cmFzLmggKi8sCiAJCQkJRTFBMzE2MkMxMzRCQzMyRDAwN0M5QTRG
IC8qIFdlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5tbSAqLywKIAkJCQlDRDgyMDMwNjEzOTVB
QjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oICovLApAQCAtMjY1
OTEsNyArMjY1ODUsNiBAQAogCQkJCUE1RTYxNjc0MTg5NDU4MUYwMDlBREY1MCAvKiBXZWJEZWJ1
Z2dlckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTBEODRFOTEwNDg0MzQ4MDAxQTE3OUUg
LyogV2ViRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTIyNUExNkI1MEQ1QzExRTkwMDA5MDI5
NSAvKiBXZWJFdmVudFJlZ2lvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQkM2REFERUYwQTE5NUZE
RjAwRTVDRDE0IC8qIFdlYkZvbnRDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEMjBGNkQx
MDdGNDM4QjAwQTgwMzkyIC8qIFdlYkdMQWN0aXZlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDlDN0I5QzkxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdMQnVmZmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3RTY2RTIzNDE2RDZFQjZDMDBGN0U3RkYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFU
Qy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTg3MCw3ICsyOTg2Myw2IEBACiAJCQkJQTVFNjE2NzMx
ODk0NTgxRjAwOUFERjUwIC8qIFdlYkRlYnVnZ2VyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRkUwRDg0RUIxMDQ4NDM2RTAwMUExNzlFIC8qIFdlYkV2ZW50Lm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMjI1QTE2QjYwRDVDMTFFOTAwMDkwMjk1IC8qIFdlYkV2ZW50UmVnaW9uLm1tIGluIFNv
dXJjZXMgKi8sCi0JCQkJQkM2REFERkEwQTE5NjAyQjAwRTVDRDE0IC8qIFdlYkZvbnRDYWNoZS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTQ5QzdCOUM4MTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTEJ1
ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RTY2RTIzMzE2RDZFQjZDMDBGN0U3RkYgLyog
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RTY2RTIz
MzE3RTZFQjZDMDBGN0U3RkYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmNwcCBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0ZvbnRDYWNoZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Gb250Q2FjaGVNYWMubW0KaW5kZXggOTAyYThmYWZjNTRkMjU1N2I5MDJiOThkM2I3NDM5ZDkx
ZmJjOWJiYi4uMWYyYjdmZWNiZjVhNzQ2YjFmNjY1ZmVlMTlhZjU3ODhkNDdlNzZkMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFj
Lm1tCkBAIC0zNyw4ICszNyw4IEBACiAjaW1wb3J0ICJTaW1wbGVGb250RGF0YS5oIgogI2ltcG9y
dCAiRm9udFBsYXRmb3JtRGF0YS5oIgogI2ltcG9ydCAiTlNGb250U1BJLmgiCisjaW1wb3J0ICJX
ZWJDb3JlTlNTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uu
aCIKLSNpbXBvcnQgIldlYkZvbnRDYWNoZS5oIgogI2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5oPgog
I2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgpAQCAtNDgsNiArNDgsMjI5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorI2RlZmluZSBT
WU5USEVTSVpFRF9GT05UX1RSQUlUUyAoTlNCb2xkRm9udE1hc2sgfCBOU0l0YWxpY0ZvbnRNYXNr
KQorCisjZGVmaW5lIElNUE9SVEFOVF9GT05UX1RSQUlUUyAoMCBcCisgICAgfCBOU0NvbXByZXNz
ZWRGb250TWFzayBcCisgICAgfCBOU0NvbmRlbnNlZEZvbnRNYXNrIFwKKyAgICB8IE5TRXhwYW5k
ZWRGb250TWFzayBcCisgICAgfCBOU0l0YWxpY0ZvbnRNYXNrIFwKKyAgICB8IE5TTmFycm93Rm9u
dE1hc2sgXAorICAgIHwgTlNQb3N0ZXJGb250TWFzayBcCisgICAgfCBOU1NtYWxsQ2Fwc0ZvbnRN
YXNrIFwKKykKKworc3RhdGljIGJvb2wgYWNjZXB0YWJsZUNob2ljZShOU0ZvbnRUcmFpdE1hc2sg
ZGVzaXJlZFRyYWl0cywgTlNGb250VHJhaXRNYXNrIGNhbmRpZGF0ZVRyYWl0cykKK3sKKyAgICBk
ZXNpcmVkVHJhaXRzICY9IH5TWU5USEVTSVpFRF9GT05UX1RSQUlUUzsKKyAgICByZXR1cm4gKGNh
bmRpZGF0ZVRyYWl0cyAmIGRlc2lyZWRUcmFpdHMpID09IGRlc2lyZWRUcmFpdHM7Cit9CisKK3N0
YXRpYyBib29sIGJldHRlckNob2ljZShOU0ZvbnRUcmFpdE1hc2sgZGVzaXJlZFRyYWl0cywgaW50
IGRlc2lyZWRXZWlnaHQsIE5TRm9udFRyYWl0TWFzayBjaG9zZW5UcmFpdHMsIGludCBjaG9zZW5X
ZWlnaHQsIE5TRm9udFRyYWl0TWFzayBjYW5kaWRhdGVUcmFpdHMsIGludCBjYW5kaWRhdGVXZWln
aHQpCit7CisgICAgaWYgKCFhY2NlcHRhYmxlQ2hvaWNlKGRlc2lyZWRUcmFpdHMsIGNhbmRpZGF0
ZVRyYWl0cykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEEgbGlzdCBvZiB0aGUg
dHJhaXRzIHdlIGNhcmUgYWJvdXQuCisgICAgLy8gVGhlIHRvcCBpdGVtIGluIHRoZSBsaXN0IGlz
IHRoZSB3b3JzdCB0cmFpdCB0byBtaXNtYXRjaDsgaWYgYSBmb250IGhhcyB0aGlzCisgICAgLy8g
YW5kIHdlIGRpZG4ndCBhc2sgZm9yIGl0LCB3ZSdkIHByZWZlciBhbnkgb3RoZXIgZm9udCBpbiB0
aGUgZmFtaWx5LgorICAgIGNvbnN0IE5TRm9udFRyYWl0TWFzayBtYXNrc1tdID0geworICAgICAg
ICBOU1Bvc3RlckZvbnRNYXNrLAorICAgICAgICBOU1NtYWxsQ2Fwc0ZvbnRNYXNrLAorICAgICAg
ICBOU0l0YWxpY0ZvbnRNYXNrLAorICAgICAgICBOU0NvbXByZXNzZWRGb250TWFzaywKKyAgICAg
ICAgTlNDb25kZW5zZWRGb250TWFzaywKKyAgICAgICAgTlNFeHBhbmRlZEZvbnRNYXNrLAorICAg
ICAgICBOU05hcnJvd0ZvbnRNYXNrLAorICAgICAgICAwCisgICAgfTsKKworICAgIGludCBpID0g
MDsKKyAgICBOU0ZvbnRUcmFpdE1hc2sgbWFzazsKKyAgICB3aGlsZSAoKG1hc2sgPSBtYXNrc1tp
KytdKSkgeworICAgICAgICBib29sIGRlc2lyZWQgPSBkZXNpcmVkVHJhaXRzICYgbWFzazsKKyAg
ICAgICAgYm9vbCBjaG9zZW5IYXNVbndhbnRlZFRyYWl0ID0gZGVzaXJlZCAhPSAoY2hvc2VuVHJh
aXRzICYgbWFzayk7CisgICAgICAgIGJvb2wgY2FuZGlkYXRlSGFzVW53YW50ZWRUcmFpdCA9IGRl
c2lyZWQgIT0gKGNhbmRpZGF0ZVRyYWl0cyAmIG1hc2spOworICAgICAgICBpZiAoIWNhbmRpZGF0
ZUhhc1Vud2FudGVkVHJhaXQgJiYgY2hvc2VuSGFzVW53YW50ZWRUcmFpdCkKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICBpZiAoIWNob3Nlbkhhc1Vud2FudGVkVHJhaXQgJiYgY2Fu
ZGlkYXRlSGFzVW53YW50ZWRUcmFpdCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBpbnQgY2hvc2VuV2VpZ2h0RGVsdGFNYWduaXR1ZGUgPSBhYnMoY2hvc2VuV2VpZ2h0
IC0gZGVzaXJlZFdlaWdodCk7CisgICAgaW50IGNhbmRpZGF0ZVdlaWdodERlbHRhTWFnbml0dWRl
ID0gYWJzKGNhbmRpZGF0ZVdlaWdodCAtIGRlc2lyZWRXZWlnaHQpOworCisgICAgLy8gSWYgYm90
aCBhcmUgdGhlIHNhbWUgZGlzdGFuY2UgZnJvbSB0aGUgZGVzaXJlZCB3ZWlnaHQsIHByZWZlciB0
aGUgY2FuZGlkYXRlIGlmIGl0IGlzIGZ1cnRoZXIgZnJvbSBtZWRpdW0uCisgICAgaWYgKGNob3Nl
bldlaWdodERlbHRhTWFnbml0dWRlID09IGNhbmRpZGF0ZVdlaWdodERlbHRhTWFnbml0dWRlKQor
ICAgICAgICByZXR1cm4gYWJzKGNhbmRpZGF0ZVdlaWdodCAtIDYpID4gYWJzKGNob3NlbldlaWdo
dCAtIDYpOworCisgICAgLy8gT3RoZXJ3aXNlLCBwcmVmZXIgdGhlIG9uZSBjbG9zZXIgdG8gdGhl
IGRlc2lyZWQgd2VpZ2h0LgorICAgIHJldHVybiBjYW5kaWRhdGVXZWlnaHREZWx0YU1hZ25pdHVk
ZSA8IGNob3NlbldlaWdodERlbHRhTWFnbml0dWRlOworfQorCitzdGF0aWMgaW5saW5lIEZvbnRU
cmFpdHNNYXNrIHRvVHJhaXRzTWFzayhOU0ZvbnRUcmFpdE1hc2sgYXBwS2l0VHJhaXRzLCBOU0lu
dGVnZXIgYXBwS2l0V2VpZ2h0KQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxGb250VHJhaXRz
TWFzaz4oKChhcHBLaXRUcmFpdHMgJiBOU0ZvbnRJdGFsaWNUcmFpdCkgPyBGb250U3R5bGVJdGFs
aWNNYXNrIDogRm9udFN0eWxlTm9ybWFsTWFzaykKKyAgICAgICAgfCBGb250VmFyaWFudE5vcm1h
bE1hc2sKKyAgICAgICAgfCAoYXBwS2l0V2VpZ2h0ID09IDEgPyBGb250V2VpZ2h0MTAwTWFzayA6
CisgICAgICAgICAgICBhcHBLaXRXZWlnaHQgPT0gMiA/IEZvbnRXZWlnaHQyMDBNYXNrIDoKKyAg
ICAgICAgICAgIGFwcEtpdFdlaWdodCA8PSA0ID8gRm9udFdlaWdodDMwME1hc2sgOgorICAgICAg
ICAgICAgYXBwS2l0V2VpZ2h0ID09IDUgPyBGb250V2VpZ2h0NDAwTWFzayA6CisgICAgICAgICAg
ICBhcHBLaXRXZWlnaHQgPT0gNiA/IEZvbnRXZWlnaHQ1MDBNYXNrIDoKKyAgICAgICAgICAgIGFw
cEtpdFdlaWdodCA8PSA4ID8gRm9udFdlaWdodDYwME1hc2sgOgorICAgICAgICAgICAgYXBwS2l0
V2VpZ2h0ID09IDkgPyBGb250V2VpZ2h0NzAwTWFzayA6CisgICAgICAgICAgICBhcHBLaXRXZWln
aHQgPD0gMTEgPyBGb250V2VpZ2h0ODAwTWFzayA6CisgICAgICAgICAgICAgICAgRm9udFdlaWdo
dDkwME1hc2spKTsKK30KKworLy8gS2VlcCBhIGNhY2hlIGZvciBtYXBwaW5nIGRlc2lyZWQgZm9u
dCBmYW1pbGllcyB0byBmb250IGZhbWlsaWVzIGFjdHVhbGx5CisvLyBhdmFpbGFibGUgb24gdGhl
IHN5c3RlbSBmb3IgcGVyZm9ybWFuY2UuCitzdGF0aWMgTlNNdXRhYmxlRGljdGlvbmFyeSogZGVz
aXJlZEZhbWlseVRvQXZhaWxhYmxlRmFtaWx5RGljdGlvbmFyeSgpCit7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBzdGF0aWMgTlNNdXRhYmxlRGljdGlvbmFyeSAqZGljdGlvbmFy
eSA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07CisgICAgcmV0dXJuIGRpY3Rp
b25hcnk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCByZW1lbWJlckRlc2lyZWRGYW1pbHlUb0F2
YWlsYWJsZUZhbWlseU1hcHBpbmcoTlNTdHJpbmcqIGRlc2lyZWRGYW1pbHksIE5TU3RyaW5nKiBh
dmFpbGFibGVGYW1pbHkpCit7CisgICAgc3RhdGljIGNvbnN0IE5TVUludGVnZXIgbWF4Q2FjaGVT
aXplID0gMTI4OworICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmZhbWlseU1hcHBpbmcgPSBkZXNp
cmVkRmFtaWx5VG9BdmFpbGFibGVGYW1pbHlEaWN0aW9uYXJ5KCk7CisgICAgQVNTRVJUKFtmYW1p
bHlNYXBwaW5nIGNvdW50XSA8PSBtYXhDYWNoZVNpemUpOworICAgIGlmIChbZmFtaWx5TWFwcGlu
ZyBjb3VudF0gPT0gbWF4Q2FjaGVTaXplKSB7CisgICAgICAgIGZvciAoTlNTdHJpbmcgKmtleSBp
biBmYW1pbHlNYXBwaW5nKSB7CisgICAgICAgICAgICBbZmFtaWx5TWFwcGluZyByZW1vdmVPYmpl
Y3RGb3JLZXk6a2V5XTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAg
IGlkIHZhbHVlID0gYXZhaWxhYmxlRmFtaWx5ID8gYXZhaWxhYmxlRmFtaWx5IDogW05TTnVsbCBu
dWxsXTsKKyAgICBbZmFtaWx5TWFwcGluZyBzZXRPYmplY3Q6dmFsdWUgZm9yS2V5OmRlc2lyZWRG
YW1pbHldOworfQorCisvLyBGYW1pbHkgbmFtZSBpcyBzb21ld2hhdCBvZiBhIG1pc25vbWVyIGhl
cmUuIFdlIGZpcnN0IGF0dGVtcHQgdG8gZmluZCBhbiBleGFjdCBtYXRjaAorLy8gY29tcGFyaW5n
IHRoZSBkZXNpcmVkRmFtaWx5IHRvIHRoZSBQb3N0U2NyaXB0IG5hbWUgb2YgdGhlIGluc3RhbGxl
ZCBmb250cy4gSWYgdGhhdCBmYWlscworLy8gd2UgdGhlbiBkbyBhIHNlYXJjaCBiYXNlZCBvbiB0
aGUgZmFtaWx5IG5hbWVzIG9mIHRoZSBpbnN0YWxsZWQgZm9udHMuCitzdGF0aWMgTlNGb250ICpm
b250V2l0aEZhbWlseShOU1N0cmluZyAqZGVzaXJlZEZhbWlseSwgTlNGb250VHJhaXRNYXNrIGRl
c2lyZWRUcmFpdHMsIGludCBkZXNpcmVkV2VpZ2h0LCBmbG9hdCBzaXplKQoreworICAgIGlmIChz
dHJpbmdJc0Nhc2VJbnNlbnNpdGl2ZUVxdWFsVG9TdHJpbmcoZGVzaXJlZEZhbWlseSwgQCItd2Vi
a2l0LXN5c3RlbS1mb250IikKKyAgICAgICAgfHwgc3RyaW5nSXNDYXNlSW5zZW5zaXRpdmVFcXVh
bFRvU3RyaW5nKGRlc2lyZWRGYW1pbHksIEAiLWFwcGxlLXN5c3RlbS1mb250IikpIHsKKyAgICAg
ICAgLy8gV2UgaWdub3JlIGl0YWxpYyBmb3Igc3lzdGVtIGZvbnQuCisgICAgICAgIHJldHVybiAo
ZGVzaXJlZFdlaWdodCA+PSA3KSA/IFtOU0ZvbnQgYm9sZFN5c3RlbUZvbnRPZlNpemU6c2l6ZV0g
OiBbTlNGb250IHN5c3RlbUZvbnRPZlNpemU6c2l6ZV07CisgICAgfQorCisgICAgaWQgY2FjaGVk
QXZhaWxhYmxlRmFtaWx5ID0gW2Rlc2lyZWRGYW1pbHlUb0F2YWlsYWJsZUZhbWlseURpY3Rpb25h
cnkoKSBvYmplY3RGb3JLZXk6ZGVzaXJlZEZhbWlseV07CisgICAgaWYgKGNhY2hlZEF2YWlsYWJs
ZUZhbWlseSA9PSBbTlNOdWxsIG51bGxdKSB7CisgICAgICAgIC8vIFdlIGFscmVhZHkga25vdyB0
aGlzIGZvbnQgaXMgbm90IGF2YWlsYWJsZS4KKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisK
KyAgICBOU0ZvbnRNYW5hZ2VyICpmb250TWFuYWdlciA9IFtOU0ZvbnRNYW5hZ2VyIHNoYXJlZEZv
bnRNYW5hZ2VyXTsKKyAgICBOU1N0cmluZyAqYXZhaWxhYmxlRmFtaWx5ID0gY2FjaGVkQXZhaWxh
YmxlRmFtaWx5OworICAgIGlmICghYXZhaWxhYmxlRmFtaWx5KSB7CisgICAgICAgIC8vIERvIGEg
c2ltcGxlIGNhc2UgaW5zZW5zaXRpdmUgc2VhcmNoIGZvciBhIG1hdGNoaW5nIGZvbnQgZmFtaWx5
LgorICAgICAgICAvLyBOU0ZvbnRNYW5hZ2VyIHJlcXVpcmVzIGV4YWN0IG5hbWUgbWF0Y2hlcy4K
KyAgICAgICAgLy8gVGhpcyBhZGRyZXNzZXMgdGhlIHByb2JsZW0gb2YgbWF0Y2hpbmcgYXJpYWwg
dG8gQXJpYWwsIGV0Yy4sIGJ1dCBwZXJoYXBzIG5vdCBhbGwgdGhlIGlzc3Vlcy4KKyAgICAgICAg
Zm9yIChhdmFpbGFibGVGYW1pbHkgaW4gW2ZvbnRNYW5hZ2VyIGF2YWlsYWJsZUZvbnRGYW1pbGll
c10pIHsKKyAgICAgICAgICAgIGlmIChbZGVzaXJlZEZhbWlseSBjYXNlSW5zZW5zaXRpdmVDb21w
YXJlOmF2YWlsYWJsZUZhbWlseV0gPT0gTlNPcmRlcmVkU2FtZSkKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghYXZhaWxhYmxlRmFtaWx5KSB7CisgICAg
ICAgICAgICAvLyBNYXRjaCBieSBQb3N0U2NyaXB0IG5hbWUuCisgICAgICAgICAgICBOU0ZvbnQg
Km5hbWVNYXRjaGVkRm9udCA9IG5pbDsKKyAgICAgICAgICAgIE5TRm9udFRyYWl0TWFzayBkZXNp
cmVkVHJhaXRzRm9yTmFtZU1hdGNoID0gZGVzaXJlZFRyYWl0cyB8IChkZXNpcmVkV2VpZ2h0ID49
IDcgPyBOU0JvbGRGb250TWFzayA6IDApOworICAgICAgICAgICAgZm9yIChOU1N0cmluZyAqYXZh
aWxhYmxlRm9udCBpbiBbZm9udE1hbmFnZXIgYXZhaWxhYmxlRm9udHNdKSB7CisgICAgICAgICAg
ICAgICAgaWYgKFtkZXNpcmVkRmFtaWx5IGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU6YXZhaWxhYmxl
Rm9udF0gPT0gTlNPcmRlcmVkU2FtZSkgeworICAgICAgICAgICAgICAgICAgICBuYW1lTWF0Y2hl
ZEZvbnQgPSBbTlNGb250IGZvbnRXaXRoTmFtZTphdmFpbGFibGVGb250IHNpemU6c2l6ZV07CisK
KyAgICAgICAgICAgICAgICAgICAgLy8gU3BlY2lhbCBjYXNlIE9zYWthLU1vbm8uIEFjY29yZGlu
ZyB0byA8cmRhcjovL3Byb2JsZW0vMzk5OTQ2Nz4sIHdlIG5lZWQgdG8KKyAgICAgICAgICAgICAg
ICAgICAgLy8gdHJlYXQgT3Nha2EtTW9ubyBhcyBmaXhlZCBwaXRjaC4KKyAgICAgICAgICAgICAg
ICAgICAgaWYgKFtkZXNpcmVkRmFtaWx5IGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU6QCJPc2FrYS1N
b25vIl0gPT0gTlNPcmRlcmVkU2FtZSAmJiAhZGVzaXJlZFRyYWl0c0Zvck5hbWVNYXRjaCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuYW1lTWF0Y2hlZEZvbnQ7CisKKyAgICAgICAg
ICAgICAgICAgICAgTlNGb250VHJhaXRNYXNrIHRyYWl0cyA9IFtmb250TWFuYWdlciB0cmFpdHNP
ZkZvbnQ6bmFtZU1hdGNoZWRGb250XTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCh0cmFpdHMg
JiBkZXNpcmVkVHJhaXRzRm9yTmFtZU1hdGNoKSA9PSBkZXNpcmVkVHJhaXRzRm9yTmFtZU1hdGNo
KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtmb250TWFuYWdlciBjb252ZXJ0Rm9u
dDpuYW1lTWF0Y2hlZEZvbnQgdG9IYXZlVHJhaXQ6ZGVzaXJlZFRyYWl0c0Zvck5hbWVNYXRjaF07
CisKKyAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlRmFtaWx5ID0gW25hbWVNYXRjaGVkRm9u
dCBmYW1pbHlOYW1lXTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmVtZW1iZXJEZXNpcmVk
RmFtaWx5VG9BdmFpbGFibGVGYW1pbHlNYXBwaW5nKGRlc2lyZWRGYW1pbHksIGF2YWlsYWJsZUZh
bWlseSk7CisgICAgICAgIGlmICghYXZhaWxhYmxlRmFtaWx5KQorICAgICAgICAgICAgcmV0dXJu
IG5pbDsKKyAgICB9CisKKyAgICAvLyBGb3VuZCBhIGZhbWlseSwgbm93IGZpZ3VyZSBvdXQgd2hh
dCB3ZWlnaHQgYW5kIHRyYWl0cyB0byB1c2UuCisgICAgYm9vbCBjaG9zZUZvbnQgPSBmYWxzZTsK
KyAgICBpbnQgY2hvc2VuV2VpZ2h0ID0gMDsKKyAgICBOU0ZvbnRUcmFpdE1hc2sgY2hvc2VuVHJh
aXRzID0gMDsKKyAgICBOU1N0cmluZyAqY2hvc2VuRnVsbE5hbWUgPSAwOworCisgICAgTlNBcnJh
eSAqZm9udHMgPSBbZm9udE1hbmFnZXIgYXZhaWxhYmxlTWVtYmVyc09mRm9udEZhbWlseTphdmFp
bGFibGVGYW1pbHldOworICAgIGZvciAoTlNBcnJheSAqZm9udEluZm8gaW4gZm9udHMpIHsKKyAg
ICAgICAgLy8gQXJyYXkgaW5kaWNlcyBtdXN0IGJlIGhhcmQgY29kZWQgYmVjYXVzZSBvZiBsYW1l
IEFwcEtpdCBBUEkuCisgICAgICAgIE5TU3RyaW5nICpmb250RnVsbE5hbWUgPSBbZm9udEluZm8g
b2JqZWN0QXRJbmRleDowXTsKKyAgICAgICAgTlNJbnRlZ2VyIGZvbnRXZWlnaHQgPSBbW2ZvbnRJ
bmZvIG9iamVjdEF0SW5kZXg6Ml0gaW50VmFsdWVdOworICAgICAgICBOU0ZvbnRUcmFpdE1hc2sg
Zm9udFRyYWl0cyA9IFtbZm9udEluZm8gb2JqZWN0QXRJbmRleDozXSB1bnNpZ25lZEludFZhbHVl
XTsKKworICAgICAgICBCT09MIG5ld1dpbm5lcjsKKyAgICAgICAgaWYgKCFjaG9zZUZvbnQpCisg
ICAgICAgICAgICBuZXdXaW5uZXIgPSBhY2NlcHRhYmxlQ2hvaWNlKGRlc2lyZWRUcmFpdHMsIGZv
bnRUcmFpdHMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBuZXdXaW5uZXIgPSBiZXR0ZXJD
aG9pY2UoZGVzaXJlZFRyYWl0cywgZGVzaXJlZFdlaWdodCwgY2hvc2VuVHJhaXRzLCBjaG9zZW5X
ZWlnaHQsIGZvbnRUcmFpdHMsIGZvbnRXZWlnaHQpOworCisgICAgICAgIGlmIChuZXdXaW5uZXIp
IHsKKyAgICAgICAgICAgIGNob3NlRm9udCA9IFlFUzsKKyAgICAgICAgICAgIGNob3NlbldlaWdo
dCA9IGZvbnRXZWlnaHQ7CisgICAgICAgICAgICBjaG9zZW5UcmFpdHMgPSBmb250VHJhaXRzOwor
ICAgICAgICAgICAgY2hvc2VuRnVsbE5hbWUgPSBmb250RnVsbE5hbWU7CisKKyAgICAgICAgICAg
IGlmIChjaG9zZW5XZWlnaHQgPT0gZGVzaXJlZFdlaWdodCAmJiAoY2hvc2VuVHJhaXRzICYgSU1Q
T1JUQU5UX0ZPTlRfVFJBSVRTKSA9PSAoZGVzaXJlZFRyYWl0cyAmIElNUE9SVEFOVF9GT05UX1RS
QUlUUykpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBp
ZiAoIWNob3NlRm9udCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIE5TRm9udCAqZm9udCA9
IFtOU0ZvbnQgZm9udFdpdGhOYW1lOmNob3NlbkZ1bGxOYW1lIHNpemU6c2l6ZV07CisKKyAgICBp
ZiAoIWZvbnQpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBOU0ZvbnRUcmFpdE1hc2sgYWN0
dWFsVHJhaXRzID0gMDsKKyAgICBpZiAoZGVzaXJlZFRyYWl0cyAmIE5TRm9udEl0YWxpY1RyYWl0
KQorICAgICAgICBhY3R1YWxUcmFpdHMgPSBbZm9udE1hbmFnZXIgdHJhaXRzT2ZGb250OmZvbnRd
OworICAgIGludCBhY3R1YWxXZWlnaHQgPSBbZm9udE1hbmFnZXIgd2VpZ2h0T2ZGb250OmZvbnRd
OworCisgICAgYm9vbCBzeW50aGV0aWNCb2xkID0gZGVzaXJlZFdlaWdodCA+PSA3ICYmIGFjdHVh
bFdlaWdodCA8IDc7CisgICAgYm9vbCBzeW50aGV0aWNPYmxpcXVlID0gKGRlc2lyZWRUcmFpdHMg
JiBOU0ZvbnRJdGFsaWNUcmFpdCkgJiYgIShhY3R1YWxUcmFpdHMgJiBOU0ZvbnRJdGFsaWNUcmFp
dCk7CisKKyAgICAvLyBUaGVyZSBhcmUgc29tZSBtYWxmb3JtZWQgZm9udHMgdGhhdCB3aWxsIGJl
IGNvcnJlY3RseSByZXR1cm5lZCBieSAtZm9udFdpdGhGYW1pbHk6dHJhaXRzOndlaWdodDpzaXpl
OiBhcyBhIG1hdGNoIGZvciBhIHBhcnRpY3VsYXIgdHJhaXQsCisgICAgLy8gdGhvdWdoIC1bTlNG
b250TWFuYWdlciB0cmFpdHNPZkZvbnQ6XSBpbmNvcnJlY3RseSBjbGFpbXMgdGhlIGZvbnQgZG9l
cyBub3QgaGF2ZSB0aGUgc3BlY2lmaWVkIHRyYWl0LiBUaGlzIGNvdWxkIHJlc3VsdCBpbiBhcHBs
eWluZyAKKyAgICAvLyBzeW50aGV0aWMgYm9sZCBvbiB0b3Agb2YgYW4gYWxyZWFkeS1ib2xkIGZv
bnQsIGFzIHJlcG9ydGVkIGluIDxodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02MTQ2Pi4gVG8gd29yayBhcm91bmQgdGhpcworICAgIC8vIHByb2JsZW0sIGlmIHdlIGdvdCBh
biBhcHBhcmVudCBleGFjdCBtYXRjaCwgYnV0IHRoZSByZXF1ZXN0ZWQgdHJhaXRzIGFyZW4ndCBw
cmVzZW50IGluIHRoZSBtYXRjaGVkIGZvbnQsIHdlJ2xsIHRyeSB0byBnZXQgYSBmb250IGZyb20g
CisgICAgLy8gdGhlIHNhbWUgZmFtaWx5IHdpdGhvdXQgdGhvc2UgdHJhaXRzICh0byBhcHBseSB0
aGUgc3ludGhldGljIHRyYWl0cyB0byBsYXRlcikuCisgICAgTlNGb250VHJhaXRNYXNrIG5vblN5
bnRoZXRpY1RyYWl0cyA9IGRlc2lyZWRUcmFpdHM7CisKKyAgICBpZiAoc3ludGhldGljQm9sZCkK
KyAgICAgICAgbm9uU3ludGhldGljVHJhaXRzICY9IH5OU0JvbGRGb250TWFzazsKKworICAgIGlm
IChzeW50aGV0aWNPYmxpcXVlKQorICAgICAgICBub25TeW50aGV0aWNUcmFpdHMgJj0gfk5TSXRh
bGljRm9udE1hc2s7CisKKyAgICBpZiAobm9uU3ludGhldGljVHJhaXRzICE9IGRlc2lyZWRUcmFp
dHMpIHsKKyAgICAgICAgTlNGb250ICpmb250V2l0aG91dFN5bnRoZXRpY1RyYWl0cyA9IFtmb250
TWFuYWdlciBmb250V2l0aEZhbWlseTphdmFpbGFibGVGYW1pbHkgdHJhaXRzOm5vblN5bnRoZXRp
Y1RyYWl0cyB3ZWlnaHQ6Y2hvc2VuV2VpZ2h0IHNpemU6c2l6ZV07CisgICAgICAgIGlmIChmb250
V2l0aG91dFN5bnRoZXRpY1RyYWl0cykKKyAgICAgICAgICAgIGZvbnQgPSBmb250V2l0aG91dFN5
bnRoZXRpY1RyYWl0czsKKyAgICB9CisKKyAgICByZXR1cm4gZm9udDsKK30KKwogLy8gVGhlICJ2
b2lkKiIgcGFyYW1ldGVyIG1ha2VzIHRoZSBmdW5jdGlvbiBtYXRjaCB0aGUgcHJvdG90eXBlIGZv
ciBjYWxsYmFja3MgZnJvbSBjYWxsT25NYWluVGhyZWFkLgogc3RhdGljIHZvaWQgaW52YWxpZGF0
ZUZvbnRDYWNoZSh2b2lkKikKIHsKQEAgLTU2LDcgKzI3OSw3IEBAIHN0YXRpYyB2b2lkIGludmFs
aWRhdGVGb250Q2FjaGUodm9pZCopCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgZm9udENh
Y2hlKCkuaW52YWxpZGF0ZSgpOwotICAgIFtXZWJGb250Q2FjaGUgaW52YWxpZGF0ZV07CisgICAg
W2Rlc2lyZWRGYW1pbHlUb0F2YWlsYWJsZUZhbWlseURpY3Rpb25hcnkoKSByZW1vdmVBbGxPYmpl
Y3RzXTsKIH0KIAogc3RhdGljIHZvaWQgZm9udENhY2hlUmVnaXN0ZXJlZEZvbnRzQ2hhbmdlZE5v
dGlmaWNhdGlvbkNhbGxiYWNrKENGTm90aWZpY2F0aW9uQ2VudGVyUmVmLCB2b2lkKiBvYnNlcnZl
ciwgQ0ZTdHJpbmdSZWYgbmFtZSwgY29uc3Qgdm9pZCAqLCBDRkRpY3Rpb25hcnlSZWYpCkBAIC0y
MjEsNyArNDQ0LDM1IEBAIFBhc3NSZWZQdHI8U2ltcGxlRm9udERhdGE+IEZvbnRDYWNoZTo6Z2V0
TGFzdFJlc29ydEZhbGxiYWNrRm9udChjb25zdCBGb250RGVzY3JpCiAKIHZvaWQgRm9udENhY2hl
OjpnZXRUcmFpdHNJbkZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseU5hbWUsIFZlY3Rv
cjx1bnNpZ25lZD4mIHRyYWl0c01hc2tzKQogewotICAgIFtXZWJGb250Q2FjaGUgZ2V0VHJhaXRz
OnRyYWl0c01hc2tzIGluRmFtaWx5OmZhbWlseU5hbWVdOworICAgIE5TRm9udE1hbmFnZXIgKmZv
bnRNYW5hZ2VyID0gW05TRm9udE1hbmFnZXIgc2hhcmVkRm9udE1hbmFnZXJdOworCisgICAgTlNT
dHJpbmcgKmF2YWlsYWJsZUZhbWlseTsKKyAgICBmb3IgKGF2YWlsYWJsZUZhbWlseSBpbiBbZm9u
dE1hbmFnZXIgYXZhaWxhYmxlRm9udEZhbWlsaWVzXSkgeworICAgICAgICBpZiAoW2ZhbWlseU5h
bWUgY2FzZUluc2Vuc2l0aXZlQ29tcGFyZTphdmFpbGFibGVGYW1pbHldID09IE5TT3JkZXJlZFNh
bWUpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoIWF2YWlsYWJsZUZhbWls
eSkgeworICAgICAgICAvLyBNYXRjaCBieSBQb3N0U2NyaXB0IG5hbWUuCisgICAgICAgIGZvciAo
TlNTdHJpbmcgKmF2YWlsYWJsZUZvbnQgaW4gW2ZvbnRNYW5hZ2VyIGF2YWlsYWJsZUZvbnRzXSkg
eworICAgICAgICAgICAgaWYgKFtmYW1pbHlOYW1lIGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU6YXZh
aWxhYmxlRm9udF0gPT0gTlNPcmRlcmVkU2FtZSkgeworICAgICAgICAgICAgICAgIE5TRm9udCAq
Zm9udCA9IFtOU0ZvbnQgZm9udFdpdGhOYW1lOmF2YWlsYWJsZUZvbnQgc2l6ZToxMF07CisgICAg
ICAgICAgICAgICAgTlNJbnRlZ2VyIHdlaWdodCA9IFtmb250TWFuYWdlciB3ZWlnaHRPZkZvbnQ6
Zm9udF07CisgICAgICAgICAgICAgICAgdHJhaXRzTWFza3MuYXBwZW5kKHRvVHJhaXRzTWFzayhb
Zm9udE1hbmFnZXIgdHJhaXRzT2ZGb250OmZvbnRdLCB3ZWlnaHQpKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgTlNBcnJheSAqZm9udHMgPSBbZm9udE1hbmFnZXIgYXZhaWxhYmxlTWVtYmVyc09m
Rm9udEZhbWlseTphdmFpbGFibGVGYW1pbHldOworICAgIHRyYWl0c01hc2tzLnJlc2VydmVDYXBh
Y2l0eShbZm9udHMgY291bnRdKTsKKyAgICBmb3IgKE5TQXJyYXkgKmZvbnRJbmZvIGluIGZvbnRz
KSB7CisgICAgICAgIC8vIEFycmF5IGluZGljZXMgbXVzdCBiZSBoYXJkIGNvZGVkIGJlY2F1c2Ug
b2YgbGFtZSBBcHBLaXQgQVBJLgorICAgICAgICBOU0ludGVnZXIgZm9udFdlaWdodCA9IFtbZm9u
dEluZm8gb2JqZWN0QXRJbmRleDoyXSBpbnRWYWx1ZV07CisgICAgICAgIE5TRm9udFRyYWl0TWFz
ayBmb250VHJhaXRzID0gW1tmb250SW5mbyBvYmplY3RBdEluZGV4OjNdIHVuc2lnbmVkSW50VmFs
dWVdOworICAgICAgICB0cmFpdHNNYXNrcy51bmNoZWNrZWRBcHBlbmQodG9UcmFpdHNNYXNrKGZv
bnRUcmFpdHMsIGZvbnRXZWlnaHQpKTsKKyAgICB9CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxGb250
UGxhdGZvcm1EYXRhPiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9u
dERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5
KQpAQCAtMjMwLDkgKzQ4MSwxOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udFBsYXRmb3JtRGF0YT4g
Rm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZQogICAgIE5TSW50
ZWdlciB3ZWlnaHQgPSB0b0FwcEtpdEZvbnRXZWlnaHQoZm9udERlc2NyaXB0aW9uLndlaWdodCgp
KTsKICAgICBmbG9hdCBzaXplID0gZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCk7
CiAKLSAgICBOU0ZvbnQgKm5zRm9udCA9IFtXZWJGb250Q2FjaGUgZm9udFdpdGhGYW1pbHk6ZmFt
aWx5IHRyYWl0czp0cmFpdHMgd2VpZ2h0OndlaWdodCBzaXplOnNpemUgc2hvdWxkQXV0b0FjdGl2
YXRlSWZOZWVkZWQ6c2hvdWxkQXV0b0FjdGl2YXRlRm9udElmTmVlZGVkKGZhbWlseSldOwotICAg
IGlmICghbnNGb250KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBOU0ZvbnQgKm5zRm9u
dCA9IGZvbnRXaXRoRmFtaWx5KGZhbWlseSwgdHJhaXRzLCB3ZWlnaHQsIHNpemUpOworICAgIGlm
ICghbnNGb250KSB7CisgICAgICAgIGlmICghc2hvdWxkQXV0b0FjdGl2YXRlRm9udElmTmVlZGVk
KGZhbWlseSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICAvLyBBdXRv
IGFjdGl2YXRlIHRoZSBmb250IGJlZm9yZSBsb29raW5nIGZvciBpdCBhIHNlY29uZCB0aW1lLgor
ICAgICAgICAvLyBJZ25vcmUgdGhlIHJlc3VsdCBiZWNhdXNlIHdlIHdhbnQgdG8gdXNlIG91ciBv
d24gYWxnb3JpdGhtIHRvIGFjdHVhbGx5IGZpbmQgdGhlIGZvbnQuCisgICAgICAgIFtOU0ZvbnQg
Zm9udFdpdGhOYW1lOmZhbWlseSBzaXplOnNpemVdOworCisgICAgICAgIG5zRm9udCA9IGZvbnRX
aXRoRmFtaWx5KGZhbWlseSwgdHJhaXRzLCB3ZWlnaHQsIHNpemUpOworICAgICAgICBpZiAoIW5z
Rm9udCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KIAogICAgIE5TRm9udE1h
bmFnZXIgKmZvbnRNYW5hZ2VyID0gW05TRm9udE1hbmFnZXIgc2hhcmVkRm9udE1hbmFnZXJdOwog
ICAgIE5TRm9udFRyYWl0TWFzayBhY3R1YWxUcmFpdHMgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkZvbnRDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1dlYkZvbnRDYWNoZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0
YzIwMTg0Y2ZjNmQ2OThmNzhmY2EzOWRkNWQxNDAxM2ZlY2VmMTVhLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XZWJGb250Q2FjaGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDYsIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqIENvcHlyaWdodCAoQykgMjAwNyBOaWNob2xhcyBTaGFua3MgPHdlYmtpdEBuaWNrc2hhbmtz
LmNvbT4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBv
cnQgPEFwcEtpdC9OU0ZvbnRNYW5hZ2VyLmg+Ci0jaW1wb3J0IDx3dGYvVmVjdG9yLmg+Ci0KLS8v
IFRoaXMgaW50ZXJmYWNlIGV4aXN0cyBzbyB0aGF0IHRoaXJkIHBhcnR5IHByb2R1Y3RzIChsaWtl
IFNpbGspIGNhbiBwYXRjaCBpbiB0byBhbiBPYmotQyBtZXRob2QgdG8gbWFuaXB1bGF0ZSBXZWJL
aXQncyBmb250IGNhY2hpbmcvc3Vic3RpdHV0aW9uLgotV0VCQ09SRV9FWFBPUlQgQGludGVyZmFj
ZSBXZWJGb250Q2FjaGUgOiBOU09iamVjdAotKyAoTlNGb250ICopZm9udFdpdGhGYW1pbHk6KE5T
U3RyaW5nICopZGVzaXJlZEZhbWlseSB0cmFpdHM6KE5TRm9udFRyYWl0TWFzaylkZXNpcmVkVHJh
aXRzIHdlaWdodDooaW50KWRlc2lyZWRXZWlnaHQgc2l6ZTooZmxvYXQpc2l6ZSBzaG91bGRBdXRv
QWN0aXZhdGVJZk5lZWRlZDooQk9PTClzaG91bGRBdXRvQWN0aXZhdGVJZk5lZWRlZDsKLSsgKE5T
Rm9udCAqKWZvbnRXaXRoRmFtaWx5OihOU1N0cmluZyAqKWRlc2lyZWRGYW1pbHkgdHJhaXRzOihO
U0ZvbnRUcmFpdE1hc2spZGVzaXJlZFRyYWl0cyB3ZWlnaHQ6KGludClkZXNpcmVkV2VpZ2h0IHNp
emU6KGZsb2F0KXNpemU7Ci0rICh2b2lkKWdldFRyYWl0czooVmVjdG9yPHVuc2lnbmVkPiYpdHJh
aXRzTWFza3MgaW5GYW1pbHk6KE5TU3RyaW5nICopZGVzaXJlZEZhbWlseTsKLSsgKHZvaWQpaW52
YWxpZGF0ZTsKLQotLy8gVGhpcyBvbGRlciB2ZXJzaW9uIG9mIHRoZSBpbnRlcmZhY2UgaXMgcmVs
aWVkIHVwb24gYnkgc29tZSBjbGllbnRzLiBXZWJDb3JlIGRvZXNuJ3QgdXNlIGl0LgotKyAoTlNG
b250ICopZm9udFdpdGhGYW1pbHk6KE5TU3RyaW5nICopZGVzaXJlZEZhbWlseSB0cmFpdHM6KE5T
Rm9udFRyYWl0TWFzaylkZXNpcmVkVHJhaXRzIHNpemU6KGZsb2F0KXNpemU7Ci1AZW5kCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViRm9udENhY2hlLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkZvbnRDYWNoZS5tbQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggOGY2Nzc0NTQ0N2FmY2U4YmU4ZjE0N2U2YmJkMWNkNTgxMTA4YzZkMC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvV2ViRm9udENhY2hlLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMzMw
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA3IE5pY2hv
bGFzIFNoYW5rcyA8d2Via2l0QG5pY2tzaGFua3MuY29tPgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0g
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0g
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5h
bWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0g
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJX
ZWJGb250Q2FjaGUuaCIKLQotI2ltcG9ydCAiRm9udFRyYWl0c01hc2suaCIKLSNpbXBvcnQgIldl
YkNvcmVOU1N0cmluZ0V4dHJhcy5oIgotI2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5oPgotI2ltcG9y
dCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+Ci0jaW1wb3J0IDxtYXRoLmg+Ci0jaW1wb3J0IDx3
dGYvTWFpblRocmVhZC5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotI2RlZmluZSBT
WU5USEVTSVpFRF9GT05UX1RSQUlUUyAoTlNCb2xkRm9udE1hc2sgfCBOU0l0YWxpY0ZvbnRNYXNr
KQotCi0jZGVmaW5lIElNUE9SVEFOVF9GT05UX1RSQUlUUyAoMCBcCi0gICAgfCBOU0NvbXByZXNz
ZWRGb250TWFzayBcCi0gICAgfCBOU0NvbmRlbnNlZEZvbnRNYXNrIFwKLSAgICB8IE5TRXhwYW5k
ZWRGb250TWFzayBcCi0gICAgfCBOU0l0YWxpY0ZvbnRNYXNrIFwKLSAgICB8IE5TTmFycm93Rm9u
dE1hc2sgXAotICAgIHwgTlNQb3N0ZXJGb250TWFzayBcCi0gICAgfCBOU1NtYWxsQ2Fwc0ZvbnRN
YXNrIFwKLSkKLQotc3RhdGljIEJPT0wgYWNjZXB0YWJsZUNob2ljZShOU0ZvbnRUcmFpdE1hc2sg
ZGVzaXJlZFRyYWl0cywgTlNGb250VHJhaXRNYXNrIGNhbmRpZGF0ZVRyYWl0cykKLXsKLSAgICBk
ZXNpcmVkVHJhaXRzICY9IH5TWU5USEVTSVpFRF9GT05UX1RSQUlUUzsKLSAgICByZXR1cm4gKGNh
bmRpZGF0ZVRyYWl0cyAmIGRlc2lyZWRUcmFpdHMpID09IGRlc2lyZWRUcmFpdHM7Ci19Ci0KLXN0
YXRpYyBCT09MIGJldHRlckNob2ljZShOU0ZvbnRUcmFpdE1hc2sgZGVzaXJlZFRyYWl0cywgaW50
IGRlc2lyZWRXZWlnaHQsCi0gICAgTlNGb250VHJhaXRNYXNrIGNob3NlblRyYWl0cywgaW50IGNo
b3NlbldlaWdodCwKLSAgICBOU0ZvbnRUcmFpdE1hc2sgY2FuZGlkYXRlVHJhaXRzLCBpbnQgY2Fu
ZGlkYXRlV2VpZ2h0KQotewotICAgIGlmICghYWNjZXB0YWJsZUNob2ljZShkZXNpcmVkVHJhaXRz
LCBjYW5kaWRhdGVUcmFpdHMpKQotICAgICAgICByZXR1cm4gTk87Ci0KLSAgICAvLyBBIGxpc3Qg
b2YgdGhlIHRyYWl0cyB3ZSBjYXJlIGFib3V0LgotICAgIC8vIFRoZSB0b3AgaXRlbSBpbiB0aGUg
bGlzdCBpcyB0aGUgd29yc3QgdHJhaXQgdG8gbWlzbWF0Y2g7IGlmIGEgZm9udCBoYXMgdGhpcwot
ICAgIC8vIGFuZCB3ZSBkaWRuJ3QgYXNrIGZvciBpdCwgd2UnZCBwcmVmZXIgYW55IG90aGVyIGZv
bnQgaW4gdGhlIGZhbWlseS4KLSAgICBjb25zdCBOU0ZvbnRUcmFpdE1hc2sgbWFza3NbXSA9IHsK
LSAgICAgICAgTlNQb3N0ZXJGb250TWFzaywKLSAgICAgICAgTlNTbWFsbENhcHNGb250TWFzaywK
LSAgICAgICAgTlNJdGFsaWNGb250TWFzaywKLSAgICAgICAgTlNDb21wcmVzc2VkRm9udE1hc2ss
Ci0gICAgICAgIE5TQ29uZGVuc2VkRm9udE1hc2ssCi0gICAgICAgIE5TRXhwYW5kZWRGb250TWFz
aywKLSAgICAgICAgTlNOYXJyb3dGb250TWFzaywKLSAgICAgICAgMAotICAgIH07Ci0KLSAgICBp
bnQgaSA9IDA7Ci0gICAgTlNGb250VHJhaXRNYXNrIG1hc2s7Ci0gICAgd2hpbGUgKChtYXNrID0g
bWFza3NbaSsrXSkpIHsKLSAgICAgICAgQk9PTCBkZXNpcmVkID0gKGRlc2lyZWRUcmFpdHMgJiBt
YXNrKSAhPSAwOwotICAgICAgICBCT09MIGNob3Nlbkhhc1Vud2FudGVkVHJhaXQgPSBkZXNpcmVk
ICE9ICgoY2hvc2VuVHJhaXRzICYgbWFzaykgIT0gMCk7Ci0gICAgICAgIEJPT0wgY2FuZGlkYXRl
SGFzVW53YW50ZWRUcmFpdCA9IGRlc2lyZWQgIT0gKChjYW5kaWRhdGVUcmFpdHMgJiBtYXNrKSAh
PSAwKTsKLSAgICAgICAgaWYgKCFjYW5kaWRhdGVIYXNVbndhbnRlZFRyYWl0ICYmIGNob3Nlbkhh
c1Vud2FudGVkVHJhaXQpCi0gICAgICAgICAgICByZXR1cm4gWUVTOwotICAgICAgICBpZiAoIWNo
b3Nlbkhhc1Vud2FudGVkVHJhaXQgJiYgY2FuZGlkYXRlSGFzVW53YW50ZWRUcmFpdCkKLSAgICAg
ICAgICAgIHJldHVybiBOTzsKLSAgICB9Ci0KLSAgICBpbnQgY2hvc2VuV2VpZ2h0RGVsdGFNYWdu
aXR1ZGUgPSBhYnMoY2hvc2VuV2VpZ2h0IC0gZGVzaXJlZFdlaWdodCk7Ci0gICAgaW50IGNhbmRp
ZGF0ZVdlaWdodERlbHRhTWFnbml0dWRlID0gYWJzKGNhbmRpZGF0ZVdlaWdodCAtIGRlc2lyZWRX
ZWlnaHQpOwotCi0gICAgLy8gSWYgYm90aCBhcmUgdGhlIHNhbWUgZGlzdGFuY2UgZnJvbSB0aGUg
ZGVzaXJlZCB3ZWlnaHQsIHByZWZlciB0aGUgY2FuZGlkYXRlIGlmIGl0IGlzIGZ1cnRoZXIgZnJv
bSBtZWRpdW0uCi0gICAgaWYgKGNob3NlbldlaWdodERlbHRhTWFnbml0dWRlID09IGNhbmRpZGF0
ZVdlaWdodERlbHRhTWFnbml0dWRlKQotICAgICAgICByZXR1cm4gYWJzKGNhbmRpZGF0ZVdlaWdo
dCAtIDYpID4gYWJzKGNob3NlbldlaWdodCAtIDYpOwotCi0gICAgLy8gT3RoZXJ3aXNlLCBwcmVm
ZXIgdGhlIG9uZSBjbG9zZXIgdG8gdGhlIGRlc2lyZWQgd2VpZ2h0LgotICAgIHJldHVybiBjYW5k
aWRhdGVXZWlnaHREZWx0YU1hZ25pdHVkZSA8IGNob3NlbldlaWdodERlbHRhTWFnbml0dWRlOwot
fQotCi1zdGF0aWMgaW5saW5lIEZvbnRUcmFpdHNNYXNrIHRvVHJhaXRzTWFzayhOU0ZvbnRUcmFp
dE1hc2sgYXBwS2l0VHJhaXRzLCBOU0ludGVnZXIgYXBwS2l0V2VpZ2h0KQotewotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxGb250VHJhaXRzTWFzaz4oKChhcHBLaXRUcmFpdHMgJiBOU0ZvbnRJdGFs
aWNUcmFpdCkgPyBGb250U3R5bGVJdGFsaWNNYXNrIDogRm9udFN0eWxlTm9ybWFsTWFzaykKLSAg
ICAgICAgfCBGb250VmFyaWFudE5vcm1hbE1hc2sKLSAgICAgICAgfCAoYXBwS2l0V2VpZ2h0ID09
IDEgPyBGb250V2VpZ2h0MTAwTWFzayA6Ci0gICAgICAgICAgICAgIGFwcEtpdFdlaWdodCA9PSAy
ID8gRm9udFdlaWdodDIwME1hc2sgOgotICAgICAgICAgICAgICBhcHBLaXRXZWlnaHQgPD0gNCA/
IEZvbnRXZWlnaHQzMDBNYXNrIDoKLSAgICAgICAgICAgICAgYXBwS2l0V2VpZ2h0ID09IDUgPyBG
b250V2VpZ2h0NDAwTWFzayA6Ci0gICAgICAgICAgICAgIGFwcEtpdFdlaWdodCA9PSA2ID8gRm9u
dFdlaWdodDUwME1hc2sgOgotICAgICAgICAgICAgICBhcHBLaXRXZWlnaHQgPD0gOCA/IEZvbnRX
ZWlnaHQ2MDBNYXNrIDoKLSAgICAgICAgICAgICAgYXBwS2l0V2VpZ2h0ID09IDkgPyBGb250V2Vp
Z2h0NzAwTWFzayA6Ci0gICAgICAgICAgICAgIGFwcEtpdFdlaWdodCA8PSAxMSA/IEZvbnRXZWln
aHQ4MDBNYXNrIDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9udFdlaWdo
dDkwME1hc2spKTsKLX0KLQotLy8gS2VlcCBhIGNhY2hlIGZvciBtYXBwaW5nIGRlc2lyZWQgZm9u
dCBmYW1pbGllcyB0byBmb250IGZhbWlsaWVzIGFjdHVhbGx5Ci0vLyBhdmFpbGFibGUgb24gdGhl
IHN5c3RlbSBmb3IgcGVyZm9ybWFuY2UuCi1zdGF0aWMgTlNNdXRhYmxlRGljdGlvbmFyeSogZGVz
aXJlZEZhbWlseVRvQXZhaWxhYmxlRmFtaWx5RGljdGlvbmFyeSgpCi17Ci0gICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKLSAgICBzdGF0aWMgTlNNdXRhYmxlRGljdGlvbmFyeSAqZGljdGlvbmFy
eSA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07Ci0gICAgcmV0dXJuIGRpY3Rp
b25hcnk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCByZW1lbWJlckRlc2lyZWRGYW1pbHlUb0F2
YWlsYWJsZUZhbWlseU1hcHBpbmcoTlNTdHJpbmcqIGRlc2lyZWRGYW1pbHksIE5TU3RyaW5nKiBh
dmFpbGFibGVGYW1pbHkpCi17Ci0gICAgc3RhdGljIGNvbnN0IE5TVUludGVnZXIgbWF4Q2FjaGVT
aXplID0gMTI4OwotICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmZhbWlseU1hcHBpbmcgPSBkZXNp
cmVkRmFtaWx5VG9BdmFpbGFibGVGYW1pbHlEaWN0aW9uYXJ5KCk7Ci0gICAgQVNTRVJUKFtmYW1p
bHlNYXBwaW5nIGNvdW50XSA8PSBtYXhDYWNoZVNpemUpOwotICAgIGlmIChbZmFtaWx5TWFwcGlu
ZyBjb3VudF0gPT0gbWF4Q2FjaGVTaXplKSB7Ci0gICAgICAgIGZvciAoTlNTdHJpbmcgKmtleSBp
biBmYW1pbHlNYXBwaW5nKSB7Ci0gICAgICAgICAgICBbZmFtaWx5TWFwcGluZyByZW1vdmVPYmpl
Y3RGb3JLZXk6a2V5XTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAg
IGlkIHZhbHVlID0gYXZhaWxhYmxlRmFtaWx5ID8gYXZhaWxhYmxlRmFtaWx5IDogW05TTnVsbCBu
dWxsXTsKLSAgICBbZmFtaWx5TWFwcGluZyBzZXRPYmplY3Q6dmFsdWUgZm9yS2V5OmRlc2lyZWRG
YW1pbHldOwotfQotCi1AaW1wbGVtZW50YXRpb24gV2ViRm9udENhY2hlCi0KLSsgKHZvaWQpZ2V0
VHJhaXRzOihWZWN0b3I8dW5zaWduZWQ+Jil0cmFpdHNNYXNrcyBpbkZhbWlseTooTlNTdHJpbmcg
KilkZXNpcmVkRmFtaWx5Ci17Ci0gICAgTlNGb250TWFuYWdlciAqZm9udE1hbmFnZXIgPSBbTlNG
b250TWFuYWdlciBzaGFyZWRGb250TWFuYWdlcl07Ci0KLSAgICBOU1N0cmluZyAqYXZhaWxhYmxl
RmFtaWx5OwotICAgIGZvciAoYXZhaWxhYmxlRmFtaWx5IGluIFtmb250TWFuYWdlciBhdmFpbGFi
bGVGb250RmFtaWxpZXNdKSB7Ci0gICAgICAgIGlmIChbZGVzaXJlZEZhbWlseSBjYXNlSW5zZW5z
aXRpdmVDb21wYXJlOmF2YWlsYWJsZUZhbWlseV0gPT0gTlNPcmRlcmVkU2FtZSkKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgIH0KLQotICAgIGlmICghYXZhaWxhYmxlRmFtaWx5KSB7Ci0gICAgICAg
IC8vIE1hdGNoIGJ5IFBvc3RTY3JpcHQgbmFtZS4KLSAgICAgICAgZm9yIChOU1N0cmluZyAqYXZh
aWxhYmxlRm9udCBpbiBbZm9udE1hbmFnZXIgYXZhaWxhYmxlRm9udHNdKSB7Ci0gICAgICAgICAg
ICBpZiAoW2Rlc2lyZWRGYW1pbHkgY2FzZUluc2Vuc2l0aXZlQ29tcGFyZTphdmFpbGFibGVGb250
XSA9PSBOU09yZGVyZWRTYW1lKSB7Ci0gICAgICAgICAgICAgICAgTlNGb250ICpmb250ID0gW05T
Rm9udCBmb250V2l0aE5hbWU6YXZhaWxhYmxlRm9udCBzaXplOjEwXTsKLSAgICAgICAgICAgICAg
ICBOU0ludGVnZXIgd2VpZ2h0ID0gW2ZvbnRNYW5hZ2VyIHdlaWdodE9mRm9udDpmb250XTsKLSAg
ICAgICAgICAgICAgICB0cmFpdHNNYXNrcy5hcHBlbmQodG9UcmFpdHNNYXNrKFtmb250TWFuYWdl
ciB0cmFpdHNPZkZvbnQ6Zm9udF0sIHdlaWdodCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBO
U0FycmF5ICpmb250cyA9IFtmb250TWFuYWdlciBhdmFpbGFibGVNZW1iZXJzT2ZGb250RmFtaWx5
OmF2YWlsYWJsZUZhbWlseV07Ci0gICAgdHJhaXRzTWFza3MucmVzZXJ2ZUNhcGFjaXR5KFtmb250
cyBjb3VudF0pOwotICAgIGZvciAoTlNBcnJheSAqZm9udEluZm8gaW4gZm9udHMpIHsKLSAgICAg
ICAgLy8gQXJyYXkgaW5kaWNlcyBtdXN0IGJlIGhhcmQgY29kZWQgYmVjYXVzZSBvZiBsYW1lIEFw
cEtpdCBBUEkuCi0gICAgICAgIE5TSW50ZWdlciBmb250V2VpZ2h0ID0gW1tmb250SW5mbyBvYmpl
Y3RBdEluZGV4OjJdIGludFZhbHVlXTsKLSAgICAgICAgTlNGb250VHJhaXRNYXNrIGZvbnRUcmFp
dHMgPSBbW2ZvbnRJbmZvIG9iamVjdEF0SW5kZXg6M10gdW5zaWduZWRJbnRWYWx1ZV07Ci0gICAg
ICAgIHRyYWl0c01hc2tzLnVuY2hlY2tlZEFwcGVuZCh0b1RyYWl0c01hc2soZm9udFRyYWl0cywg
Zm9udFdlaWdodCkpOwotICAgIH0KLX0KLQotLy8gRmFtaWx5IG5hbWUgaXMgc29tZXdoYXQgb2Yg
YSBtaXNub21lciBoZXJlLiAgV2UgZmlyc3QgYXR0ZW1wdCB0byBmaW5kIGFuIGV4YWN0IG1hdGNo
Ci0vLyBjb21wYXJpbmcgdGhlIGRlc2lyZWRGYW1pbHkgdG8gdGhlIFBvc3RTY3JpcHQgbmFtZSBv
ZiB0aGUgaW5zdGFsbGVkIGZvbnRzLiAgSWYgdGhhdCBmYWlscwotLy8gd2UgdGhlbiBkbyBhIHNl
YXJjaCBiYXNlZCBvbiB0aGUgZmFtaWx5IG5hbWVzIG9mIHRoZSBpbnN0YWxsZWQgZm9udHMuCi0r
IChOU0ZvbnQgKilpbnRlcm5hbEZvbnRXaXRoRmFtaWx5OihOU1N0cmluZyAqKWRlc2lyZWRGYW1p
bHkgdHJhaXRzOihOU0ZvbnRUcmFpdE1hc2spZGVzaXJlZFRyYWl0cyB3ZWlnaHQ6KGludClkZXNp
cmVkV2VpZ2h0IHNpemU6KGZsb2F0KXNpemUKLXsKLSAgICBpZiAoc3RyaW5nSXNDYXNlSW5zZW5z
aXRpdmVFcXVhbFRvU3RyaW5nKGRlc2lyZWRGYW1pbHksIEAiLXdlYmtpdC1zeXN0ZW0tZm9udCIp
Ci0gICAgICAgIHx8IHN0cmluZ0lzQ2FzZUluc2Vuc2l0aXZlRXF1YWxUb1N0cmluZyhkZXNpcmVk
RmFtaWx5LCBAIi1hcHBsZS1zeXN0ZW0tZm9udCIpKSB7Ci0gICAgICAgIC8vIFdlIGlnbm9yZSBp
dGFsaWMgZm9yIHN5c3RlbSBmb250LgotICAgICAgICByZXR1cm4gKGRlc2lyZWRXZWlnaHQgPj0g
NykgPyBbTlNGb250IGJvbGRTeXN0ZW1Gb250T2ZTaXplOnNpemVdIDogW05TRm9udCBzeXN0ZW1G
b250T2ZTaXplOnNpemVdOwotICAgIH0KLQotICAgIGlkIGNhY2hlZEF2YWlsYWJsZUZhbWlseSA9
IFtkZXNpcmVkRmFtaWx5VG9BdmFpbGFibGVGYW1pbHlEaWN0aW9uYXJ5KCkgb2JqZWN0Rm9yS2V5
OmRlc2lyZWRGYW1pbHldOwotICAgIGlmIChjYWNoZWRBdmFpbGFibGVGYW1pbHkgPT0gW05TTnVs
bCBudWxsXSkgewotICAgICAgICAvLyBXZSBhbHJlYWR5IGtub3cgdGhpcyBmb250IGlzIG5vdCBh
dmFpbGFibGUuCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotCi0gICAgTlNGb250TWFuYWdl
ciAqZm9udE1hbmFnZXIgPSBbTlNGb250TWFuYWdlciBzaGFyZWRGb250TWFuYWdlcl07Ci0gICAg
TlNTdHJpbmcgKmF2YWlsYWJsZUZhbWlseSA9IGNhY2hlZEF2YWlsYWJsZUZhbWlseTsKLSAgICBp
ZiAoIWF2YWlsYWJsZUZhbWlseSkgewotICAgICAgICAvLyBEbyBhIHNpbXBsZSBjYXNlIGluc2Vu
c2l0aXZlIHNlYXJjaCBmb3IgYSBtYXRjaGluZyBmb250IGZhbWlseS4KLSAgICAgICAgLy8gTlNG
b250TWFuYWdlciByZXF1aXJlcyBleGFjdCBuYW1lIG1hdGNoZXMuCi0gICAgICAgIC8vIFRoaXMg
YWRkcmVzc2VzIHRoZSBwcm9ibGVtIG9mIG1hdGNoaW5nIGFyaWFsIHRvIEFyaWFsLCBldGMuLCBi
dXQgcGVyaGFwcyBub3QgYWxsIHRoZSBpc3N1ZXMuCi0gICAgICAgIGZvciAoYXZhaWxhYmxlRmFt
aWx5IGluIFtmb250TWFuYWdlciBhdmFpbGFibGVGb250RmFtaWxpZXNdKSB7Ci0gICAgICAgICAg
ICBpZiAoW2Rlc2lyZWRGYW1pbHkgY2FzZUluc2Vuc2l0aXZlQ29tcGFyZTphdmFpbGFibGVGYW1p
bHldID09IE5TT3JkZXJlZFNhbWUpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LQotICAgICAgICBpZiAoIWF2YWlsYWJsZUZhbWlseSkgewotICAgICAgICAgICAgLy8gTWF0Y2gg
YnkgUG9zdFNjcmlwdCBuYW1lLgotICAgICAgICAgICAgTlNGb250ICpuYW1lTWF0Y2hlZEZvbnQg
PSBuaWw7Ci0gICAgICAgICAgICBOU0ZvbnRUcmFpdE1hc2sgZGVzaXJlZFRyYWl0c0Zvck5hbWVN
YXRjaCA9IGRlc2lyZWRUcmFpdHMgfCAoZGVzaXJlZFdlaWdodCA+PSA3ID8gTlNCb2xkRm9udE1h
c2sgOiAwKTsKLSAgICAgICAgICAgIGZvciAoTlNTdHJpbmcgKmF2YWlsYWJsZUZvbnQgaW4gW2Zv
bnRNYW5hZ2VyIGF2YWlsYWJsZUZvbnRzXSkgewotICAgICAgICAgICAgICAgIGlmIChbZGVzaXJl
ZEZhbWlseSBjYXNlSW5zZW5zaXRpdmVDb21wYXJlOmF2YWlsYWJsZUZvbnRdID09IE5TT3JkZXJl
ZFNhbWUpIHsKLSAgICAgICAgICAgICAgICAgICAgbmFtZU1hdGNoZWRGb250ID0gW05TRm9udCBm
b250V2l0aE5hbWU6YXZhaWxhYmxlRm9udCBzaXplOnNpemVdOwotCi0gICAgICAgICAgICAgICAg
ICAgIC8vIFNwZWNpYWwgY2FzZSBPc2FrYS1Nb25vLiBBY2NvcmRpbmcgdG8gPHJkYXI6Ly9wcm9i
bGVtLzM5OTk0Njc+LCB3ZSBuZWVkIHRvCi0gICAgICAgICAgICAgICAgICAgIC8vIHRyZWF0IE9z
YWthLU1vbm8gYXMgZml4ZWQgcGl0Y2guCi0gICAgICAgICAgICAgICAgICAgIGlmIChbZGVzaXJl
ZEZhbWlseSBjYXNlSW5zZW5zaXRpdmVDb21wYXJlOkAiT3Nha2EtTW9ubyJdID09IE5TT3JkZXJl
ZFNhbWUgJiYgIWRlc2lyZWRUcmFpdHNGb3JOYW1lTWF0Y2gpCi0gICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbmFtZU1hdGNoZWRGb250OwotCi0gICAgICAgICAgICAgICAgICAgIE5TRm9u
dFRyYWl0TWFzayB0cmFpdHMgPSBbZm9udE1hbmFnZXIgdHJhaXRzT2ZGb250Om5hbWVNYXRjaGVk
Rm9udF07Ci0gICAgICAgICAgICAgICAgICAgIGlmICgodHJhaXRzICYgZGVzaXJlZFRyYWl0c0Zv
ck5hbWVNYXRjaCkgPT0gZGVzaXJlZFRyYWl0c0Zvck5hbWVNYXRjaCkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBbZm9udE1hbmFnZXIgY29udmVydEZvbnQ6bmFtZU1hdGNoZWRGb250
IHRvSGF2ZVRyYWl0OmRlc2lyZWRUcmFpdHNGb3JOYW1lTWF0Y2hdOwotCi0gICAgICAgICAgICAg
ICAgICAgIGF2YWlsYWJsZUZhbWlseSA9IFtuYW1lTWF0Y2hlZEZvbnQgZmFtaWx5TmFtZV07Ci0g
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotCi0gICAgICAgIHJlbWVtYmVyRGVzaXJlZEZhbWlseVRvQXZhaWxhYmxl
RmFtaWx5TWFwcGluZyhkZXNpcmVkRmFtaWx5LCBhdmFpbGFibGVGYW1pbHkpOwotICAgICAgICBp
ZiAoIWF2YWlsYWJsZUZhbWlseSkKLSAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotCi0g
ICAgLy8gRm91bmQgYSBmYW1pbHksIG5vdyBmaWd1cmUgb3V0IHdoYXQgd2VpZ2h0IGFuZCB0cmFp
dHMgdG8gdXNlLgotICAgIEJPT0wgY2hvc2VGb250ID0gZmFsc2U7Ci0gICAgaW50IGNob3Nlbldl
aWdodCA9IDA7Ci0gICAgTlNGb250VHJhaXRNYXNrIGNob3NlblRyYWl0cyA9IDA7Ci0gICAgTlNT
dHJpbmcgKmNob3NlbkZ1bGxOYW1lID0gMDsKLQotICAgIE5TQXJyYXkgKmZvbnRzID0gW2ZvbnRN
YW5hZ2VyIGF2YWlsYWJsZU1lbWJlcnNPZkZvbnRGYW1pbHk6YXZhaWxhYmxlRmFtaWx5XTsKLSAg
ICBmb3IgKE5TQXJyYXkgKmZvbnRJbmZvIGluIGZvbnRzKSB7Ci0gICAgICAgIC8vIEFycmF5IGlu
ZGljZXMgbXVzdCBiZSBoYXJkIGNvZGVkIGJlY2F1c2Ugb2YgbGFtZSBBcHBLaXQgQVBJLgotICAg
ICAgICBOU1N0cmluZyAqZm9udEZ1bGxOYW1lID0gW2ZvbnRJbmZvIG9iamVjdEF0SW5kZXg6MF07
Ci0gICAgICAgIE5TSW50ZWdlciBmb250V2VpZ2h0ID0gW1tmb250SW5mbyBvYmplY3RBdEluZGV4
OjJdIGludFZhbHVlXTsKLSAgICAgICAgTlNGb250VHJhaXRNYXNrIGZvbnRUcmFpdHMgPSBbW2Zv
bnRJbmZvIG9iamVjdEF0SW5kZXg6M10gdW5zaWduZWRJbnRWYWx1ZV07Ci0KLSAgICAgICAgQk9P
TCBuZXdXaW5uZXI7Ci0gICAgICAgIGlmICghY2hvc2VGb250KQotICAgICAgICAgICAgbmV3V2lu
bmVyID0gYWNjZXB0YWJsZUNob2ljZShkZXNpcmVkVHJhaXRzLCBmb250VHJhaXRzKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgbmV3V2lubmVyID0gYmV0dGVyQ2hvaWNlKGRlc2lyZWRUcmFp
dHMsIGRlc2lyZWRXZWlnaHQsIGNob3NlblRyYWl0cywgY2hvc2VuV2VpZ2h0LCBmb250VHJhaXRz
LCBmb250V2VpZ2h0KTsKLQotICAgICAgICBpZiAobmV3V2lubmVyKSB7Ci0gICAgICAgICAgICBj
aG9zZUZvbnQgPSBZRVM7Ci0gICAgICAgICAgICBjaG9zZW5XZWlnaHQgPSBmb250V2VpZ2h0Owot
ICAgICAgICAgICAgY2hvc2VuVHJhaXRzID0gZm9udFRyYWl0czsKLSAgICAgICAgICAgIGNob3Nl
bkZ1bGxOYW1lID0gZm9udEZ1bGxOYW1lOwotCi0gICAgICAgICAgICBpZiAoY2hvc2VuV2VpZ2h0
ID09IGRlc2lyZWRXZWlnaHQgJiYgKGNob3NlblRyYWl0cyAmIElNUE9SVEFOVF9GT05UX1RSQUlU
UykgPT0gKGRlc2lyZWRUcmFpdHMgJiBJTVBPUlRBTlRfRk9OVF9UUkFJVFMpKQotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKCFjaG9zZUZvbnQpCi0g
ICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBOU0ZvbnQgKmZvbnQgPSBbTlNGb250IGZvbnRXaXRo
TmFtZTpjaG9zZW5GdWxsTmFtZSBzaXplOnNpemVdOwotCi0gICAgaWYgKCFmb250KQotICAgICAg
ICByZXR1cm4gbmlsOwotCi0gICAgTlNGb250VHJhaXRNYXNrIGFjdHVhbFRyYWl0cyA9IDA7Ci0g
ICAgaWYgKGRlc2lyZWRUcmFpdHMgJiBOU0ZvbnRJdGFsaWNUcmFpdCkKLSAgICAgICAgYWN0dWFs
VHJhaXRzID0gW2ZvbnRNYW5hZ2VyIHRyYWl0c09mRm9udDpmb250XTsKLSAgICBpbnQgYWN0dWFs
V2VpZ2h0ID0gW2ZvbnRNYW5hZ2VyIHdlaWdodE9mRm9udDpmb250XTsKLQotICAgIGJvb2wgc3lu
dGhldGljQm9sZCA9IGRlc2lyZWRXZWlnaHQgPj0gNyAmJiBhY3R1YWxXZWlnaHQgPCA3OwotICAg
IGJvb2wgc3ludGhldGljT2JsaXF1ZSA9IChkZXNpcmVkVHJhaXRzICYgTlNGb250SXRhbGljVHJh
aXQpICYmICEoYWN0dWFsVHJhaXRzICYgTlNGb250SXRhbGljVHJhaXQpOwotCi0gICAgLy8gVGhl
cmUgYXJlIHNvbWUgbWFsZm9ybWVkIGZvbnRzIHRoYXQgd2lsbCBiZSBjb3JyZWN0bHkgcmV0dXJu
ZWQgYnkgLWZvbnRXaXRoRmFtaWx5OnRyYWl0czp3ZWlnaHQ6c2l6ZTogYXMgYSBtYXRjaCBmb3Ig
YSBwYXJ0aWN1bGFyIHRyYWl0LAotICAgIC8vIHRob3VnaCAtW05TRm9udE1hbmFnZXIgdHJhaXRz
T2ZGb250Ol0gaW5jb3JyZWN0bHkgY2xhaW1zIHRoZSBmb250IGRvZXMgbm90IGhhdmUgdGhlIHNw
ZWNpZmllZCB0cmFpdC4gVGhpcyBjb3VsZCByZXN1bHQgaW4gYXBwbHlpbmcgCi0gICAgLy8gc3lu
dGhldGljIGJvbGQgb24gdG9wIG9mIGFuIGFscmVhZHktYm9sZCBmb250LCBhcyByZXBvcnRlZCBp
biA8aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE0Nj4uIFRvIHdvcmsg
YXJvdW5kIHRoaXMKLSAgICAvLyBwcm9ibGVtLCBpZiB3ZSBnb3QgYW4gYXBwYXJlbnQgZXhhY3Qg
bWF0Y2gsIGJ1dCB0aGUgcmVxdWVzdGVkIHRyYWl0cyBhcmVuJ3QgcHJlc2VudCBpbiB0aGUgbWF0
Y2hlZCBmb250LCB3ZSdsbCB0cnkgdG8gZ2V0IGEgZm9udCBmcm9tIAotICAgIC8vIHRoZSBzYW1l
IGZhbWlseSB3aXRob3V0IHRob3NlIHRyYWl0cyAodG8gYXBwbHkgdGhlIHN5bnRoZXRpYyB0cmFp
dHMgdG8gbGF0ZXIpLgotICAgIE5TRm9udFRyYWl0TWFzayBub25TeW50aGV0aWNUcmFpdHMgPSBk
ZXNpcmVkVHJhaXRzOwotCi0gICAgaWYgKHN5bnRoZXRpY0JvbGQpCi0gICAgICAgIG5vblN5bnRo
ZXRpY1RyYWl0cyAmPSB+TlNCb2xkRm9udE1hc2s7Ci0KLSAgICBpZiAoc3ludGhldGljT2JsaXF1
ZSkKLSAgICAgICAgbm9uU3ludGhldGljVHJhaXRzICY9IH5OU0l0YWxpY0ZvbnRNYXNrOwotCi0g
ICAgaWYgKG5vblN5bnRoZXRpY1RyYWl0cyAhPSBkZXNpcmVkVHJhaXRzKSB7Ci0gICAgICAgIE5T
Rm9udCAqZm9udFdpdGhvdXRTeW50aGV0aWNUcmFpdHMgPSBbZm9udE1hbmFnZXIgZm9udFdpdGhG
YW1pbHk6YXZhaWxhYmxlRmFtaWx5IHRyYWl0czpub25TeW50aGV0aWNUcmFpdHMgd2VpZ2h0OmNo
b3NlbldlaWdodCBzaXplOnNpemVdOwotICAgICAgICBpZiAoZm9udFdpdGhvdXRTeW50aGV0aWNU
cmFpdHMpCi0gICAgICAgICAgICBmb250ID0gZm9udFdpdGhvdXRTeW50aGV0aWNUcmFpdHM7Ci0g
ICAgfQotCi0gICAgcmV0dXJuIGZvbnQ7Ci19Ci0KLSsgKE5TRm9udCAqKWZvbnRXaXRoRmFtaWx5
OihOU1N0cmluZyAqKWRlc2lyZWRGYW1pbHkgdHJhaXRzOihOU0ZvbnRUcmFpdE1hc2spZGVzaXJl
ZFRyYWl0cyB3ZWlnaHQ6KGludClkZXNpcmVkV2VpZ2h0IHNpemU6KGZsb2F0KXNpemUgc2hvdWxk
QXV0b0FjdGl2YXRlSWZOZWVkZWQ6KEJPT0wpc2hvdWxkQXV0b0FjdGl2YXRlSWZOZWVkZWQKLXsK
LSAgICBOU0ZvbnQgKmZvbnQgPSBbc2VsZiBpbnRlcm5hbEZvbnRXaXRoRmFtaWx5OmRlc2lyZWRG
YW1pbHkgdHJhaXRzOmRlc2lyZWRUcmFpdHMgd2VpZ2h0OmRlc2lyZWRXZWlnaHQgc2l6ZTpzaXpl
XTsKLSAgICBpZiAoZm9udCB8fCAhc2hvdWxkQXV0b0FjdGl2YXRlSWZOZWVkZWQpCi0gICAgICAg
IHJldHVybiBmb250OwotCi0gICAgLy8gQXV0byBhY3RpdmF0ZSB0aGUgZm9udCBiZWZvcmUgbG9v
a2luZyBmb3IgaXQgYSBzZWNvbmQgdGltZS4KLSAgICAvLyBJZ25vcmUgdGhlIHJlc3VsdCBiZWNh
dXNlIHdlIHdhbnQgdG8gdXNlIG91ciBvd24gYWxnb3JpdGhtIHRvIGFjdHVhbGx5IGZpbmQgdGhl
IGZvbnQuCi0gICAgW05TRm9udCBmb250V2l0aE5hbWU6ZGVzaXJlZEZhbWlseSBzaXplOnNpemVd
OwotCi0gICAgcmV0dXJuIFtzZWxmIGludGVybmFsRm9udFdpdGhGYW1pbHk6ZGVzaXJlZEZhbWls
eSB0cmFpdHM6ZGVzaXJlZFRyYWl0cyB3ZWlnaHQ6ZGVzaXJlZFdlaWdodCBzaXplOnNpemVdOwot
fQotCi0rIChOU0ZvbnQgKilmb250V2l0aEZhbWlseTooTlNTdHJpbmcgKilkZXNpcmVkRmFtaWx5
IHRyYWl0czooTlNGb250VHJhaXRNYXNrKWRlc2lyZWRUcmFpdHMgd2VpZ2h0OihpbnQpZGVzaXJl
ZFdlaWdodCBzaXplOihmbG9hdClzaXplCi17Ci0gICAgcmV0dXJuIFtzZWxmIGZvbnRXaXRoRmFt
aWx5OmRlc2lyZWRGYW1pbHkgdHJhaXRzOmRlc2lyZWRUcmFpdHMgd2VpZ2h0OmRlc2lyZWRXZWln
aHQgc2l6ZTpzaXplIHNob3VsZEF1dG9BY3RpdmF0ZUlmTmVlZGVkOllFU107Ci19Ci0KLSsgKE5T
Rm9udCAqKWZvbnRXaXRoRmFtaWx5OihOU1N0cmluZyAqKWRlc2lyZWRGYW1pbHkgdHJhaXRzOihO
U0ZvbnRUcmFpdE1hc2spZGVzaXJlZFRyYWl0cyBzaXplOihmbG9hdClzaXplCi17Ci0gICAgaW50
IGRlc2lyZWRXZWlnaHQgPSAoZGVzaXJlZFRyYWl0cyAmIE5TQm9sZEZvbnRNYXNrKSA/IDkgOiA1
OwotICAgIHJldHVybiBbc2VsZiBmb250V2l0aEZhbWlseTpkZXNpcmVkRmFtaWx5IHRyYWl0czpk
ZXNpcmVkVHJhaXRzIHdlaWdodDpkZXNpcmVkV2VpZ2h0IHNpemU6c2l6ZSBzaG91bGRBdXRvQWN0
aXZhdGVJZk5lZWRlZDpZRVNdOwotfQotCi0rICh2b2lkKWludmFsaWRhdGUKLXsKLSAgICBbZGVz
aXJlZEZhbWlseVRvQXZhaWxhYmxlRmFtaWx5RGljdGlvbmFyeSgpIHJlbW92ZUFsbE9iamVjdHNd
OwotfQotQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1M
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXgg
N2E0NDk3YWNmZjEyZDM2Mjg5ZjY0NmNlNmZmNGJjMzg5ZDI5ZjUyMS4uMTU2ZjFmMTU1NjlmNzk1
MTgyZjZkY2NmZTkyZjJkN2YzZjVlYjhiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tCkBAIC0xMzUsNyArMTM1LDYgQEAKICNpbXBvcnQgPEFwcGxpY2F0aW9uU2Vy
dmljZXMvQXBwbGljYXRpb25TZXJ2aWNlcy5oPgogI2ltcG9ydCAiV2ViTlNFdmVudEV4dHJhcy5o
IgogI2ltcG9ydCAiV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLmgiCi0jaW1wb3J0IDxXZWJDb3JlL1dl
YkZvbnRDYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5o
PgogI2VuZGlmCiAK
</data>
<flag name="review"
          id="266498"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>