<?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>190120</bug_id>
          
          <creation_ts>2018-09-30 15:36:25 -0700</creation_ts>
          <short_desc>[macOS] [WK2] NSFontPanel UI (font color, text decorations, font shadow) doesn&apos;t update on selection change</short_desc>
          <delta_ts>2022-01-12 15:00:19 -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>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>234770</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>ap</cc>
    
    <cc>bdakin</cc>
    
    <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mifenton</cc>
    
    <cc>mitz</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1464881</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-09-30 15:36:25 -0700</bug_when>
    <thetext>To reproduce:

1. Load &quot;data:text/html,&lt;body contenteditable&gt;&quot; in a WKWebView (e.g. using MiniBrowser)
2. Typing some text, select all, and open the font panel (CMD+T)
3. Modify some of the font attributes (e.g. add a font shadow, strike-through, underline, and change the font color)
4. Change the selection to any other part of the text

Observed: font attributes are default values.
Expected: font attributes should reflect attributes at the current selection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1464882</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-30 15:36:52 -0700</bug_when>
    <thetext>&lt;rdar://problem/44897405&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1464887</commentid>
    <comment_count>2</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-09-30 18:54:35 -0700</bug_when>
    <thetext>WebViewImpl::updateFontPanelIfNeeded already updates NSFontManager&apos;s selected font, but this isn&apos;t enough; we also need to call -setSelectedAttributes:isMultiple:.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466704</commentid>
    <comment_count>3</comment_count>
      <attachid>351677</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-10-05 09:42:18 -0700</bug_when>
    <thetext>Created attachment 351677
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795260</commentid>
    <comment_count>4</comment_count>
      <attachid>351677</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-09-20 13:45:24 -0700</bug_when>
    <thetext>Comment on attachment 351677
Patch

(Removing r?, as this patch is terribly out of date)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827376</commentid>
    <comment_count>5</comment_count>
      <attachid>448137</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-12-31 15:57:12 -0800</bug_when>
    <thetext>Created attachment 448137
Depends on #234770</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827452</commentid>
    <comment_count>6</comment_count>
      <attachid>448162</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-01 13:28:17 -0800</bug_when>
    <thetext>Created attachment 448162
Rebase on trunk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829902</commentid>
    <comment_count>7</comment_count>
      <attachid>448162</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-11 13:32:44 -0800</bug_when>
    <thetext>Comment on attachment 448162
Rebase on trunk

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

&gt; Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm:3060
&gt; +        auto attributesDictionary = attributes.createDictionary();
&gt; +        if (NSFont *nsFont = [attributesDictionary objectForKey:NSFontAttributeName]) {

Seems a small waste to build the whole dictionary just to get the font.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830122</commentid>
    <comment_count>8</comment_count>
      <attachid>448162</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-12 07:54:07 -0800</bug_when>
    <thetext>Comment on attachment 448162
Rebase on trunk

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

Thanks for the review!

&gt;&gt; Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm:3060
&gt;&gt; +        if (NSFont *nsFont = [attributesDictionary objectForKey:NSFontAttributeName]) {
&gt; 
&gt; Seems a small waste to build the whole dictionary just to get the font.

Good point — changed this so that we only create the attributes dictionary in the case where the platform NSFont exists.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830178</commentid>
    <comment_count>9</comment_count>
      <attachid>448957</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-12 09:51:07 -0800</bug_when>
    <thetext>Created attachment 448957
For landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830359</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-12 15:00:15 -0800</bug_when>
    <thetext>Committed r287953 (245982@main): &lt;https://commits.webkit.org/245982@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 448957.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351677</attachid>
            <date>2018-10-05 09:42:18 -0700</date>
            <delta_ts>2021-12-31 15:57:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190120-20181005094218.patch</filename>
            <type>text/plain</type>
            <size>45525</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2ODc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDFjZWJlYTcxZWRjNGI2
MzgzZjM2YzE0ZjNjOTMwZDhkMTI2NDNhOS4uNzc3N2NlNTNhYTc5N2YxNGYyZWQ5Y2Q3YzI3MmE0
MjY1M2JlNmQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDE4LTEwLTA1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gW1dL
Ml0gTlNGb250UGFuZWwgVUkgKGZvbnQgY29sb3IsIHRleHQgZGVjb3JhdGlvbnMsIGZvbnQgc2hh
ZG93KSBkb2Vzbid0IHVwZGF0ZSBvbiBzZWxlY3Rpb24gY2hhbmdlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAxMjAKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzQ0ODk3NDA1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEN1cnJlbnRseSwgaW4gV2ViS2l0MiwgdGhlcmUgaXMgbm8gbWVjaGFuaXNtIGZv
ciB1cGRhdGluZyB0aGUgTlNGb250TWFuYWdlciB3aXRoIG5ldyBmb250IGF0dHJpYnV0ZXMgd2hl
biB0aGUKKyAgICAgICAgc2VsZWN0aW9uIGNoYW5nZXMuIFdoaWxlIHdlIGRvIHVwZGF0ZSB0aGUg
c2VsZWN0ZWQgTlNGb250LCB3ZSBkbyBzbyBieSByZXF1ZXN0aW5nIGZvbnQgZmFtaWx5IGFuZCBm
b250IHNpemUgdmlhCisgICAgICAgIGFuIElQQyByZXF1ZXN0LCBgRm9udEF0U2VsZWN0aW9uYCwg
YnV0IHRoaXMgZG9lcyBub3QgaW5jbHVkZSBhdHRyaWJ1dGVzIGxpa2UgdW5kZXJsaW5lLCBzdHJp
a2UtdGhyb3VnaCwgY29sb3IsCisgICAgICAgIGFuZCB0ZXh0IHNoYWRvd3MuCisKKyAgICAgICAg
SW5zdGVhZCwgd2UgY2FuIHJlbW92ZSB0aGlzIGBGb250QXRTZWxlY3Rpb25gIElQQyByZXF1ZXN0
IG1lY2hhbmlzbSBlbnRpcmVseSwgYW5kIHJlcXVlc3QgYEZvbnRBdHRyaWJ1dGVzYC4gVGhpcwor
ICAgICAgICBhbGxvd3MgdXMgdG8gc2V0IHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgTlNGb250IG9u
IHRoZSBOU0ZvbnRNYW5hZ2VyLCBhbmQgYWxzbyB1cGRhdGUgdGhlIGZvbnQgbWFuYWdlciB3aXRo
IHRoZQorICAgICAgICBmdWxsIGRpY3Rpb25hcnkgb2YgZm9udCBhdHRyaWJ1dGVzLgorCisgICAg
ICAgIFRlc3Q6IFR5cGluZ0F0dHJpYnV0ZXMuVHlwaW5nQXR0cmlidXRlc0FmdGVyQ2hhbmdpbmdT
ZWxlY3Rpb24KKworICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6YWRkUGxhdGZvcm1Gb250VG9Gb250QXR0cmlidXRlcyBjb25zdCk6CisKKyAg
ICAgICAgUmVuYW1lZCBmcm9tIHBsYXRmb3JtRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0
LiBUaGlzIHBsYXRmb3JtIGhvb2sgaXMgbm93IG9ubHkgcmVzcG9uc2libGUgZm9yIGFkZGluZyBp
bmZvCisgICAgICAgIGFib3V0IGEgRm9udCB0byBGb250QXR0cmlidXRlcy4gT24gaU9TIGFuZCBt
YWNPUywgdGhpcyB0YWtlcyB0aGUgZm9ybSBvZiBhIGZvbnQgYXR0cmlidXRlIGRpY3Rpb25hcnku
CisKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Zm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0
YXJ0IGNvbnN0KToKKworICAgICAgICBDb21wdXRlIGFuZCBzZXQgd2hldGhlciBvciBub3QgdGhl
cmUgYXJlIG11bHRpcGxlIGZvbnRzIGluIHRoZSBzZWxlY3Rpb24sIHVzaW5nIGBwcmltYXJ5Rm9u
dEluU2VsZWN0ZWRSYW5nZWAuCisKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Zm9udEZvclNl
bGVjdGlvbiBjb25zdCk6CisKKyAgICAgICAgUHVsbCB0aGUgc2Vjb25kIHBhcnQgb2YgdGhpcyBm
dW5jdGlvbiBvdXQgaW50byBhIHNlcGFyYXRlIHByaXZhdGUgaGVscGVyIChzZWUgYmVsb3cpLgor
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnByaW1hcnlGb250SW5TZWxlY3RlZFJhbmdlIGNv
bnN0KToKKworICAgICAgICBQcml2YXRlIGhlbHBlciB0aGF0IGl0ZXJhdGVzIG92ZXIgdGV4dCBp
biB0aGUgY3VycmVudCBzZWxlY3Rpb24gcmFuZ2UgYW5kIHJldHVybnMgdGhlIHByaW1hcnkgZm9u
dCAoaS5lLiB0aGUKKyAgICAgICAgZmlyc3QgZm9udCBlbmNvdW50ZXJlZCksIGFzIHdlbGwgYXMg
d2hldGhlciBvciBub3QgdGhlcmUgYXJlIG11bHRpcGxlIGZvbnRzLgorCisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3I6OnBsYXRmb3JtRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRp
bmcvRm9udEF0dHJpYnV0ZXMuaDoKKworICAgICAgICBJbnN0ZWFkIG9mIG1haW50YWluaW5nIGEg
VUlGb250IG9yIE5TRm9udCBpbiBgRm9udEF0dHJpYnV0ZXNgLCBrZWVwIGEgZGljdGlvbmFyeSBv
ZiBmb250IGF0dHJpYnV0ZXMgaW5zdGVhZC4KKyAgICAgICAgVGhpcyBhbGxvd3MgSVBDIGVuY29k
aW5nIGFuZCBkZWNvZGluZyB0byBzdWNjZWVkIGZvciBgRm9udEF0dHJpYnV0ZXNgLCBldmVuIGlu
IGNhc2VzIHdoZXJlIHRoZSBVSSBwcm9jZXNzIGRvZXMKKyAgICAgICAgbm90IGtub3cgYWJvdXQg
dGhlIGZvbnQuIFRoaXMgc2NlbmFyaW8gaXMgZXhlcmNpc2VkIGJ5IGxheW91dCB0ZXN0cyB3aGlj
aCB1c2UgdGhlICJBaGVtIiBmb250IGZhbWlseSBhbmQgbW92ZQorICAgICAgICB0aGUgc2VsZWN0
aW9uIGludG8gYSByaWNobHkgY29udGVudGVkaXRhYmxlIGVsZW1lbnQuCisKKyAgICAgICAgKiBl
ZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjph
ZGRQbGF0Zm9ybUZvbnRUb0ZvbnRBdHRyaWJ1dGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6cGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRm9udEF0dHJpYnV0ZXNDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzOjpjcmVhdGVEaWN0aW9uYXJ5IGNvbnN0
KToKKworICAgICAgICBBZGp1c3QgY29kZSBmb3IgY3JlYXRpbmcgYW4gTlNEaWN0aW9uYXJ5IGZy
b20gRm9udEF0dHJpYnV0ZXMgdG8gY3JlYXRlIGFuIE5TRm9udCBvciBVSUZvbnQgZnJvbSB0aGUg
Zm9udAorICAgICAgICBhdHRyaWJ1dGUgZGljdGlvbmFyeS4KKwogMjAxOC0xMC0wNSAgUnlhbiBI
YWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByMjM2ODY2LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggY2U1ODcwYzlkNWJkMTljYmUz
ZWI1YWFkODAxOGEzOGE5ZWE0MTQ3Zi4uZTA1ZjJjZGFmNGEyNjUyZmVkMmFlZmM5YTBkOTBmYWY3
ZjFhNzJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTgtMTAtMDUg
IFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09T
XSBbV0syXSBOU0ZvbnRQYW5lbCBVSSAoZm9udCBjb2xvciwgdGV4dCBkZWNvcmF0aW9ucywgZm9u
dCBzaGFkb3cpIGRvZXNuJ3QgdXBkYXRlIG9uIHNlbGVjdGlvbiBjaGFuZ2UKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDEyMAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNDQ4OTc0MDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIFVJRm9udCBhbmQgVUlGb250RGVzY3JpcHRvciB0byB0aGUgVUlL
aXQgc29mdCBsaW5raW5nIGhlYWRlci4KKworICAgICAgICAqIHBhbC9pb3MvVUlLaXRTb2Z0TGlu
ay5oOgorICAgICAgICAqIHBhbC9pb3MvVUlLaXRTb2Z0TGluay5tbToKKwogMjAxOC0xMC0wNSAg
UnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMjM2ODY2LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0OThlNmE2NjlmMTFjM2EyNjg5MzE1
MTBjMWMzZGU5MWVmMTgxZDJjLi5jZWY0NmFiOWZiYmE0NTBhOGU0OGI3YTA5M2E0MGE3NTIyNjM0
MzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDE4LTEwLTA1ICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gW1dLMl0gTlNGb250
UGFuZWwgVUkgKGZvbnQgY29sb3IsIHRleHQgZGVjb3JhdGlvbnMsIGZvbnQgc2hhZG93KSBkb2Vz
bid0IHVwZGF0ZSBvbiBzZWxlY3Rpb24gY2hhbmdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAxMjAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ0
ODk3NDA1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNlZSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWlsLgorCisgICAgICAg
ICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8Rm9udEF0dHJpYnV0ZXM+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPEZvbnRBdHRyaWJ1dGVzPjo6ZGVjb2RlKToKKworICAgICAgICBBZGQgYSBgaGFzTXVs
dGlwbGVGb250c2AgZmxhZyB0byBGb250QXR0cmlidXRlcy4gQWRkaXRpb25hbGx5LCBjaGFuZ2Ug
dGhlIGVuY29kaW5nL2RlY29kaW5nIGxvZ2ljIGhlcmUgdG8gdXNlCisgICAgICAgIGBGb250SW5m
b2AgdG8gc2VyaWFsaXplIGFuZCBkZXNlcmlhbGl6ZSB0aGUgZm9udCBhdHRyaWJ1dGUgZGljdGlv
bmFyeS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnVwZGF0ZUZvbnRNYW5hZ2VySWZOZWVkZWQpOgorCisg
ICAgICAgIFJhdGhlciB0aGFuIGdyYWJiaW5nIGp1c3QgdGhlIGZvbnQgZmFtaWx5IGFuZCBmb250
IHNpemUgdXNpbmcgYGZvbnRBdFNlbGVjdGlvbmAsIHJlcXVlc3QgRm9udEF0dHJpYnV0ZXMgaW5z
dGVhZCwKKyAgICAgICAgYW5kIGNvbnZlcnQgaXQgdG8gYSBOU0RpY3Rpb25hcnkgdG8gY2FsbCBg
LVtOU0ZvbnRNYW5hZ2VyIHNldFNlbGVjdGVkQXR0cmlidXRlczppc011bHRpcGxlOl1gLgorCisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpjaGFuZ2VGb250QXR0cmlidXRlc0Zyb21TZW5k
ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Y2hhbmdlRm9udEZyb21Gb250TWFu
YWdlcik6CisKKyAgICAgICAgUmVtb3ZlIGNvZGUgdG8gdXBkYXRlIHRoZSBmb250IG1hbmFnZXIg
YWZ0ZXIgY2hhbmdpbmcgZm9udCBhdHRyaWJ1dGVzLiBUaGlzIGlzIHVubmVjZXNzYXJ5IGJlY2F1
c2UgdGhlIHByb2Nlc3MKKyAgICAgICAgb2YgZXhlY3V0aW5nIGFuIGVkaXQgY29tbWFuZCBpbiBv
cmRlciB0byBjaGFuZ2UgdHlwaW5nIHN0eWxlIHdpbGwgdHJpZ2dlciBhbiBlZGl0b3Igc3RhdGUg
dXBkYXRlIGFueXdheXMsIHdoaWNoCisgICAgICAgIHRoZW4gY2F1c2VzIHVzIHRvIHJlcXVlc3Qg
bmV3IGZvbnQgYXR0cmlidXRlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RGb250QXR0cmlidXRl
c0F0U2VsZWN0aW9uU3RhcnQpOgorCisgICAgICAgIE1vdmUgdGhlIGNoZWNrIGZvciBjYWNoZWQg
Zm9udGF0dHJpYnV0ZXMgdG8gV2ViUGFnZVByb3h5LCBmcm9tIFdlYlZpZXdJbXBsLiBUaGlzIGFs
bG93cyB1cyB0byBnZXQgcmlkIG9mIGEKKyAgICAgICAgaGVscGVyIGZ1bmN0aW9uIG9uIFdlYlBh
Z2VQcm94eSB0byBncmFiIHRoZSBjdXJyZW50IGNhY2hlZCBmb250IGF0dHJpYnV0ZXMuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAgICBSZW1vdmUgYEZvbnRBdFNlbGVjdGlv
bkNhbGxiYWNrYC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmVkaXRvclN0YXRlQ2hhbmdlZCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6Y2hhbmdlRm9udEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmNoYW5nZUZvbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmVkaXRvclN0YXRlQ2hhbmdlZCk6CisKKyAgICAgICAgU2V0IGNhY2hlZCBGb250QXR0cmli
dXRlcyAoaWYgcHJlc2VudCkgcHJpb3IgdG8gZGlzcGF0Y2hpbmcgYSBzZWxlY3Rpb24gY2hhbmdl
LiBUaGlzIGFsbG93cyBhbnkgc3Vic2VxdWVudAorICAgICAgICByZXF1ZXN0IGZvciBmb250IGF0
dHJpYnV0ZXMgYXQgdGhlIHNlbGVjdGlvbiB0byByZXR1cm4gaW1tZWRpYXRlbHkgd2l0aCB0aGUg
cmVzdWx0LgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Zm9udEF0U2VsZWN0aW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpmb250QXRTZWxlY3Rp
b25DYWxsYmFjayk6IERlbGV0ZWQuCisKKyAgICAgICAgUmVtb3ZlIElQQyBwbHVtYmluZyBmb3Ig
Z3JhYmJpbmcgdGhlIGZvbnQgZmFtaWx5IGFuZCBmb250IHNpemUgYXQgdGhlIGN1cnJlbnQgc2Vs
ZWN0aW9uLiBUaGlzIGNvZGVwYXRoIHdhcworICAgICAgICBwcmV2aW91c2x5IG9ubHkgZXhlcmNp
c2VkIHdoZW4gdXBkYXRpbmcgdGhlIGZvbnQgcGFuZWwgb24gbWFjT1MuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorCisgICAgICAgIFJlbW92ZSBgRm9udEF0U2Vs
ZWN0aW9uQ2FsbGJhY2tgLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFj
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb250QXRTZWxlY3Rpb24pOiBEZWxldGVk
LgorCiAyMDE4LTEwLTA1ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzY4NjYuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2lvcy9VSUtpdFNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2lvcy9VSUtpdFNvZnRMaW5rLmgKaW5kZXggOTEzZDcyZThlYmY4Y2Y5N2JiOTRhMGUw
YjQzNTViMjVmZmU1Y2UwNS4uNTk0ODMyMDMzYTQ2ZjZjMTBiMjliMzczOTAzMDA1ZjJmYzQ5YTlk
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9pb3MvVUlLaXRTb2Z0TGluay5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvaW9zL1VJS2l0U29mdExpbmsuaApAQCAtMzYs
NiArMzYsOCBAQCBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFVJS2l0LCBOU1NoYWRv
dykKIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgVUlLaXQsIFVJQXBwbGljYXRpb24p
CiBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFVJS2l0LCBVSVNjcmVlbikKIFNPRlRf
TElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgVUlLaXQsIFVJQ29sb3IpCitTT0ZUX0xJTktfQ0xB
U1NfRk9SX0hFQURFUihQQUwsIFVJS2l0LCBVSUZvbnQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hF
QURFUihQQUwsIFVJS2l0LCBVSUZvbnREZXNjcmlwdG9yKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9IRUFERVIoUEFMLCBVSUtpdCwgVUlBY2Nlc3NpYmlsaXR5SXNHcmF5c2NhbGVFbmFibGVkLCBC
T09MLCAodm9pZCksICgpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBVSUtp
dCwgVUlBY2Nlc3NpYmlsaXR5SXNJbnZlcnRDb2xvcnNFbmFibGVkLCBCT09MLCAodm9pZCksICgp
KQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2lvcy9VSUtpdFNvZnRMaW5r
Lm1tIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9pb3MvVUlLaXRTb2Z0TGluay5tbQppbmRleCBj
MGI0NTc5OTRkOTczMjg5ZDBhYTcyNmY3ZWUxYjNiZTVkYjE1OTI4Li4yNDI1ODYyNDUwNGQ5MTdh
NWNjOGUwMGZmZjAzMDlkOTliNzUwNzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2lvcy9VSUtpdFNvZnRMaW5rLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvaW9z
L1VJS2l0U29mdExpbmsubW0KQEAgLTM2LDYgKzM2LDggQEAgU09GVF9MSU5LX0NMQVNTX0ZPUl9T
T1VSQ0UoUEFMLCBVSUtpdCwgTlNTaGFkb3cpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRShQ
QUwsIFVJS2l0LCBVSUFwcGxpY2F0aW9uKQogU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0UoUEFM
LCBVSUtpdCwgVUlTY3JlZW4pCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRShQQUwsIFVJS2l0
LCBVSUNvbG9yKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0UoUEFMLCBVSUtpdCwgVUlGb250
KQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0UoUEFMLCBVSUtpdCwgVUlGb250RGVzY3JpcHRv
cikKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgVUlLaXQsIFVJQWNjZXNzaWJp
bGl0eUlzR3JheXNjYWxlRW5hYmxlZCwgQk9PTCwgKHZvaWQpLCAoKSkKIFNPRlRfTElOS19GVU5D
VElPTl9GT1JfU09VUkNFKFBBTCwgVUlLaXQsIFVJQWNjZXNzaWJpbGl0eUlzSW52ZXJ0Q29sb3Jz
RW5hYmxlZCwgQk9PTCwgKHZvaWQpLCAoKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmlu
ZGV4IGI3ZjNlOGMxM2IyOTZjOTYxMjExYWZhOGJkMDJmOTA1OTNjOTMxMTcuLjdiZjJlNWU2NWVh
ZjA2ZWQzN2I3ZTM1N2NkNTZhODM4NzgyNmIzODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAKQEAgLTM4NjEsNyArMzg2MSw3IEBAIHZvaWQgRWRpdG9yOjpzY2hlZHVsZUVkaXRvclVJVXBk
YXRlKCkKIAogI2lmICFQTEFURk9STShDT0NPQSkKIAotdm9pZCBFZGl0b3I6OnBsYXRmb3JtRm9u
dEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZvbnRBdHRyaWJ1dGVzJiwgY29uc3QgUmVuZGVy
U3R5bGUmKSBjb25zdAordm9pZCBFZGl0b3I6OmFkZFBsYXRmb3JtRm9udFRvRm9udEF0dHJpYnV0
ZXMoRm9udEF0dHJpYnV0ZXMmLCBjb25zdCBGb250JikgY29uc3QKIHsKIH0KIApAQCAtMzg3OCw3
ICszODc4LDggQEAgRm9udEF0dHJpYnV0ZXMgRWRpdG9yOjpmb250QXR0cmlidXRlc0F0U2VsZWN0
aW9uU3RhcnQoKSBjb25zdAogICAgICAgICByZXR1cm4gYXR0cmlidXRlczsKICAgICB9CiAKLSAg
ICBwbGF0Zm9ybUZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydChhdHRyaWJ1dGVzLCAqc3R5
bGUpOworICAgIGlmIChhdXRvKiBwcmltYXJ5Rm9udCA9IG1fZnJhbWUuc2VsZWN0aW9uKCkuaXNS
YW5nZSgpID8gcHJpbWFyeUZvbnRJblNlbGVjdGVkUmFuZ2UoYXR0cmlidXRlcy5oYXNNdWx0aXBs
ZUZvbnRzKSA6ICZzdHlsZS0+Zm9udENhc2NhZGUoKS5wcmltYXJ5Rm9udCgpKQorICAgICAgICBh
ZGRQbGF0Zm9ybUZvbnRUb0ZvbnRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMsICpwcmltYXJ5Rm9udCk7
CiAKICAgICAvLyBGSVhNRTogZm9yIG5vdywgYWx3YXlzIHJlcG9ydCB0aGUgY29sb3JzIGFmdGVy
IGFwcGx5aW5nIC1hcHBsZS1jb2xvci1maWx0ZXIuIEluIGZ1dHVyZSBub3QgYWxsIGNsaWVudHMK
ICAgICAvLyBtYXkgd2FudCB0aGlzLCBzbyB3ZSBtYXkgaGF2ZSB0byBhZGQgYSBzZXR0aW5nIHRv
IGNvbnRyb2wgaXQuIFNlZSBhbHNvIGVkaXRpbmdBdHRyaWJ1dGVkU3RyaW5nRnJvbVJhbmdlKCku
CkBAIC00MTMwLDcgKzQxMzEsMTcgQEAgY29uc3QgRm9udCogRWRpdG9yOjpmb250Rm9yU2VsZWN0
aW9uKGJvb2wmIGhhc011bHRpcGxlRm9udHMpIGNvbnN0CiAgICAgICAgIHJldHVybiBmb250Owog
ICAgIH0KIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBtX2ZyYW1lLnNlbGVjdGlvbigpLnRv
Tm9ybWFsaXplZFJhbmdlKCk7CisgICAgcmV0dXJuIHByaW1hcnlGb250SW5TZWxlY3RlZFJhbmdl
KGhhc011bHRpcGxlRm9udHMpOworfQorCitjb25zdCBGb250KiBFZGl0b3I6OnByaW1hcnlGb250
SW5TZWxlY3RlZFJhbmdlKGJvb2wmIGhhc011bHRpcGxlRm9udHMpIGNvbnN0Cit7CisgICAgaGFz
TXVsdGlwbGVGb250cyA9IGZhbHNlOworCisgICAgaWYgKCFtX2ZyYW1lLnNlbGVjdGlvbigpLmlz
UmFuZ2UoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIHJhbmdlID0gbV9m
cmFtZS5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpOwogICAgIGlmICghcmFuZ2UpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCA2ZmYy
ODY2YjE0OGZkZjRmZjkyMDVjZDNkZmY5NGVkMDJiZWM5NTNiLi4wNWM5MzQzMzU3MTBkMjI4MzU0
NzA2ZTk5ZDE5ZDBmOWQzNGVlZjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTU1NCw2
ICs1NTQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgdW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCgp
IGNvbnN0OwogCiAgICAgUmVmUHRyPFJhbmdlPiBhZGp1c3RlZFNlbGVjdGlvblJhbmdlKCk7Cisg
ICAgY29uc3QgRm9udCogcHJpbWFyeUZvbnRJblNlbGVjdGVkUmFuZ2UoYm9vbCYgaGFzTXVsdGlw
bGVGb250cykgY29uc3Q7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKTsKQEAgLTU2Myw3ICs1NjQsNyBA
QCBwcml2YXRlOgogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9y
bWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKICAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKICNlbmRpZgotICAgIHZv
aWQgcGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0dHJpYnV0ZXMm
LCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OworICAgIHZvaWQgYWRkUGxhdGZvcm1Gb250VG9G
b250QXR0cmlidXRlcyhGb250QXR0cmlidXRlcyYsIGNvbnN0IEZvbnQmKSBjb25zdDsKIAogICAg
IHZvaWQgc2NoZWR1bGVFZGl0b3JVSVVwZGF0ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0ZvbnRBdHRyaWJ1dGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zv
bnRBdHRyaWJ1dGVzLmgKaW5kZXggZmIyZGI0ZmY1M2NhMWZmNWYxNDA0Yjc5MGM2NTBhMjhkNjg3
ZWI4YS4uODUxNTRlZWNjMjA1Mzc5OGMxMGY5NzY0ODEwMjFlN2FiMTVlMDNjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRlcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0ZXMuaApAQCAtMjksOCArMjksNiBAQAogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogT0JKQ19DTEFTUyBOU0RpY3Rpb25hcnk7Ci1PQkpDX0NM
QVNTIE5TRm9udDsKLU9CSkNfQ0xBU1MgVUlGb250OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTM5LDEyICszNyw3IEBAIGVudW0gY2xhc3MgU3Vic2NyaXB0T3JTdXBlcnNjcmlwdCA6IHVp
bnQ4X3QgeyBOb25lLCBTdWJzY3JpcHQsIFN1cGVyc2NyaXB0IH07CiBzdHJ1Y3QgRm9udEF0dHJp
YnV0ZXMgewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0
cjxOU0RpY3Rpb25hcnk+IGNyZWF0ZURpY3Rpb25hcnkoKSBjb25zdDsKLSNlbmRpZgotCi0jaWYg
UExBVEZPUk0oTUFDKQotICAgIFJldGFpblB0cjxOU0ZvbnQ+IGZvbnQ7Ci0jZWxpZiBQTEFURk9S
TShJT1MpCi0gICAgUmV0YWluUHRyPFVJRm9udD4gZm9udDsKKyAgICBSZXRhaW5QdHI8Q0ZEaWN0
aW9uYXJ5UmVmPiBmb250QXR0cmlidXRlRGljdGlvbmFyeTsKICNlbmRpZgogICAgIENvbG9yIGJh
Y2tncm91bmRDb2xvcjsKICAgICBDb2xvciBmb3JlZ3JvdW5kQ29sb3I7CkBAIC01Miw2ICs0NSw3
IEBAIHN0cnVjdCBGb250QXR0cmlidXRlcyB7CiAgICAgU3Vic2NyaXB0T3JTdXBlcnNjcmlwdCBz
dWJzY3JpcHRPclN1cGVyc2NyaXB0IHsgU3Vic2NyaXB0T3JTdXBlcnNjcmlwdDo6Tm9uZSB9Owog
ICAgIGJvb2wgaGFzVW5kZXJsaW5lIHsgZmFsc2UgfTsKICAgICBib29sIGhhc1N0cmlrZVRocm91
Z2ggeyBmYWxzZSB9OworICAgIGJvb2wgaGFzTXVsdGlwbGVGb250cyB7IGZhbHNlIH07CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0VkaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9F
ZGl0b3JDb2NvYS5tbQppbmRleCBhYmUzZGIzZjNhOTZlZDE0YjY0MGM5YWY0NDkzM2YyZDIzMTFi
M2E4Li5kMTRkYzViNjFiNGFhOTYzNDM2NDBlZmNkZWUxYzczNmE2YTM1NDBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KQEAgLTU0LDE2ICs1NCwyMSBA
QAogI2ltcG9ydCAiV2ViQ29udGVudFJlYWRlci5oIgogI2ltcG9ydCAiV2ViQ29yZU5TVVJMRXh0
cmFzLmgiCiAjaW1wb3J0ICJtYXJrdXAuaCIKKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvQ29yZVRl
eHRTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmg+
CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQSS5oPgogI2ltcG9ydCA8
d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lk
IEVkaXRvcjo6cGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0dHJp
YnV0ZXMmIGF0dHJpYnV0ZXMsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkgY29uc3QKK3ZvaWQg
RWRpdG9yOjphZGRQbGF0Zm9ybUZvbnRUb0ZvbnRBdHRyaWJ1dGVzKEZvbnRBdHRyaWJ1dGVzJiBh
dHRyaWJ1dGVzLCBjb25zdCBGb250JiBmb250KSBjb25zdAogewotICAgIGlmIChhdXRvIGN0Rm9u
dCA9IHN0eWxlLmZvbnRDYXNjYWRlKCkucHJpbWFyeUZvbnQoKS5nZXRDVEZvbnQoKSkKLSAgICAg
ICAgYXR0cmlidXRlcy5mb250ID0gKF9fYnJpZGdlIGlkKWN0Rm9udDsKKyAgICBhdXRvIHBsYXRm
b3JtRm9udCA9IGZvbnQuZ2V0Q1RGb250KCk7CisgICAgaWYgKCFwbGF0Zm9ybUZvbnQpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmIChhdXRvIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZv
bnRDb3B5Rm9udERlc2NyaXB0b3IocGxhdGZvcm1Gb250KSkpCisgICAgICAgIGF0dHJpYnV0ZXMu
Zm9udEF0dHJpYnV0ZURpY3Rpb25hcnkgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDb3B5QXR0
cmlidXRlcyhmb250RGVzY3JpcHRvci5nZXQoKSkpOwogfQogCiBzdGF0aWMgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYXJjaGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJp
bmcgKmF0dHJpYnV0ZWRTdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0ZvbnRBdHRyaWJ1dGVzQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0ZvbnRBdHRyaWJ1dGVzQ29jb2EubW0KaW5kZXggYWFiZWIyMGI4OTU1MTA2ZTVjZGMyMDli
ZmRmMTA4OGEzYmRjMzFkOC4uMTViZDk5YjM4MzZlZGZhZTZiNGVkZWUyOWZmMDk2YmU3MDI4NWNj
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9Gb250QXR0cmlidXRl
c0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRm9udEF0dHJpYnV0
ZXNDb2NvYS5tbQpAQCAtMjgsMTMgKzI4LDI5IEBACiAKICNpbXBvcnQgIkNvbG9yQ29jb2EuaCIK
IAorI2lmIFBMQVRGT1JNKElPUykKKyNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgor
I2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmV0YWluUHRyPE5TRGljdGlvbmFyeT4g
Rm9udEF0dHJpYnV0ZXM6OmNyZWF0ZURpY3Rpb25hcnkoKSBjb25zdAogewogICAgIE5TTXV0YWJs
ZURpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5
XTsKLSAgICBpZiAoZm9udCkKLSAgICAgICAgYXR0cmlidXRlc1tOU0ZvbnRBdHRyaWJ1dGVOYW1l
XSA9IGZvbnQuZ2V0KCk7CisKKyAgICBpZiAoZm9udEF0dHJpYnV0ZURpY3Rpb25hcnkpIHsKKyNp
ZiBQTEFURk9STShNQUMpCisgICAgICAgIENsYXNzIGZvbnREZXNjcmlwdG9yQ2xhc3MgPSBOU0Zv
bnREZXNjcmlwdG9yLmNsYXNzOworICAgICAgICBDbGFzcyBmb250Q2xhc3MgPSBOU0ZvbnQuY2xh
c3M7CisjZWxzZQorICAgICAgICBDbGFzcyBmb250RGVzY3JpcHRvckNsYXNzID0gUEFMOjpnZXRf
VUlLaXRfVUlGb250RGVzY3JpcHRvckNsYXNzKCk7CisgICAgICAgIENsYXNzIGZvbnRDbGFzcyA9
IFBBTDo6Z2V0X1VJS2l0X1VJRm9udENsYXNzKCk7CisjZW5kaWYKKyAgICAgICAgaWYgKGlkIGRl
c2NyaXB0b3IgPSBbZm9udERlc2NyaXB0b3JDbGFzcyBmb250RGVzY3JpcHRvcldpdGhGb250QXR0
cmlidXRlczooX19icmlkZ2UgTlNEaWN0aW9uYXJ5ICopZm9udEF0dHJpYnV0ZURpY3Rpb25hcnku
Z2V0KCldKSB7CisgICAgICAgICAgICBpZiAoaWQgZm9udCA9IFtmb250Q2xhc3MgZm9udFdpdGhE
ZXNjcmlwdG9yOmRlc2NyaXB0b3Igc2l6ZTowXSkKKyAgICAgICAgICAgICAgICBhdHRyaWJ1dGVz
W05TRm9udEF0dHJpYnV0ZU5hbWVdID0gZm9udDsKKyAgICAgICAgfQorICAgIH0KIAogICAgIGlm
IChmb3JlZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKQogICAgICAgICBhdHRyaWJ1dGVzW05TRm9yZWdy
b3VuZENvbG9yQXR0cmlidXRlTmFtZV0gPSBwbGF0Zm9ybUNvbG9yKGZvcmVncm91bmRDb2xvcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRl
eCA4NjM0OGZkYTQ1Nzg1NTBlYWVhOTJkNWJiMTA3MDNiZGE5YWI5NmM2Li5iODc2M2E4NjY0MjJi
N2MzNmYzMzRhZjAwYzUzZmViMDFhMTFkNzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJX
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKIAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNp
bmNsdWRlICJGb250SW5mby5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0Jsb2JQYXJ0Lmg+CkBAIC0yOTg0LDExICsyOTg1LDkgQEAgdm9pZCBBcmd1bWVudENvZGVyPEZv
bnRBdHRyaWJ1dGVzPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEZvbnRBdHRyaWJ1
dGUKIHsKICAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuYmFja2dyb3VuZENvbG9yIDw8IGF0dHJp
YnV0ZXMuZm9yZWdyb3VuZENvbG9yIDw8IGF0dHJpYnV0ZXMuZm9udFNoYWRvdyA8PCBhdHRyaWJ1
dGVzLmhhc1VuZGVybGluZSA8PCBhdHRyaWJ1dGVzLmhhc1N0cmlrZVRocm91Z2g7CiAgICAgZW5j
b2Rlci5lbmNvZGVFbnVtKGF0dHJpYnV0ZXMuc3Vic2NyaXB0T3JTdXBlcnNjcmlwdCk7CisgICAg
ZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmhhc011bHRpcGxlRm9udHM7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCi0gICAgYm9vbCBoYXNGb250ID0gYXR0cmlidXRlcy5mb250OwotICAgIGVuY29kZXIgPDwg
aGFzRm9udDsKLSAgICBpZiAoaGFzRm9udCkKLSAgICAgICAgSVBDOjplbmNvZGUoZW5jb2Rlciwg
YXR0cmlidXRlcy5mb250LmdldCgpKTsKKyAgICBlbmNvZGVyIDw8IEZvbnRJbmZvIHsgYXR0cmli
dXRlcy5mb250QXR0cmlidXRlRGljdGlvbmFyeSB9OwogI2VuZGlmCiB9CiAKQEAgLTMwMTQsMTUg
KzMwMTMsMTYgQEAgc3RkOjpvcHRpb25hbDxGb250QXR0cmlidXRlcz4gQXJndW1lbnRDb2RlcjxG
b250QXR0cmlidXRlcz46OmRlY29kZShEZWNvZGVyJiBkZWMKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlRW51bShhdHRyaWJ1dGVzLnN1YnNjcmlwdE9yU3VwZXJzY3JpcHQpKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgYm9vbCBoYXNGb250
ID0gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNGb250KSkKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuaGFzTXVsdGlwbGVGb250cykpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKLSAgICBpZiAoaGFzRm9udCAmJiAhSVBDOjpkZWNvZGUoZGVjb2Rl
ciwgYXR0cmlidXRlcy5mb250KSkKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBGb250SW5mbyBm
b250SW5mbzsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZvbnRJbmZvKSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLSNlbmRpZgogCisgICAgYXR0cmlidXRlcy5mb250QXR0cmlidXRl
RGljdGlvbmFyeSA9IFdURk1vdmUoZm9udEluZm8uZm9udEF0dHJpYnV0ZURpY3Rpb25hcnkpOwor
I2VuZGlmCiAgICAgcmV0dXJuIGF0dHJpYnV0ZXM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggNWFhZGNmNjdkMTVlMGZmNGE3NzQxYjg1
ZTlkZTI3YTQ5NzIyMjlmMi4uZjkyNDVhMzcyMDZiODkwMzFkMTUxZTIxOGQ0N2E1YWQ5OTYxYTAz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAg
LTI3OTMsMjAgKzI3OTMsMTkgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dXBkYXRlRm9udE1hbmFnZXJJ
Zk5lZWRlZCgpCiAgICAgaWYgKCFmb250UGFuZWxJc1Zpc2libGUgJiYgIW1fcGFnZS0+ZWRpdG9y
U3RhdGUoKS5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9wYWdlLT5mb250QXRTZWxlY3Rpb24oW10oY29uc3QgU3RyaW5nJiBmb250TmFtZSwgZG91Ymxl
IGZvbnRTaXplLCBib29sIHNlbGVjdGlvbkhhc011bHRpcGxlRm9udHMsIFdlYktpdDo6Q2FsbGJh
Y2tCYXNlOjpFcnJvciBlcnJvcikgewotICAgICAgICBpZiAoTlNGb250ICpmb250ID0gW05TRm9u
dCBmb250V2l0aE5hbWU6Zm9udE5hbWUgc2l6ZTpmb250U2l6ZV0pCi0gICAgICAgICAgICBbTlNG
b250TWFuYWdlci5zaGFyZWRGb250TWFuYWdlciBzZXRTZWxlY3RlZEZvbnQ6Zm9udCBpc011bHRp
cGxlOnNlbGVjdGlvbkhhc011bHRpcGxlRm9udHNdOworICAgIG1fcGFnZS0+cmVxdWVzdEZvbnRB
dHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydChbXSAoYXV0byYgYXR0cmlidXRlcywgYXV0byBlcnJv
cikgeworICAgICAgICBpZiAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBhdXRvIGF0dHJpYnV0ZXNEaWN0aW9uYXJ5ID0g
YXR0cmlidXRlcy5jcmVhdGVEaWN0aW9uYXJ5KCk7CisgICAgICAgIE5TRm9udE1hbmFnZXIgKmZv
bnRNYW5hZ2VyID0gTlNGb250TWFuYWdlci5zaGFyZWRGb250TWFuYWdlcjsKKyAgICAgICAgW2Zv
bnRNYW5hZ2VyIHNldFNlbGVjdGVkRm9udDpbYXR0cmlidXRlc0RpY3Rpb25hcnkgb2JqZWN0Rm9y
S2V5Ok5TRm9udEF0dHJpYnV0ZU5hbWVdIGlzTXVsdGlwbGU6YXR0cmlidXRlcy5oYXNNdWx0aXBs
ZUZvbnRzXTsKKyAgICAgICAgW2ZvbnRNYW5hZ2VyIHNldFNlbGVjdGVkQXR0cmlidXRlczphdHRy
aWJ1dGVzRGljdGlvbmFyeS5nZXQoKSBpc011bHRpcGxlOmF0dHJpYnV0ZXMuaGFzTXVsdGlwbGVG
b250c107CiAgICAgfSk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OnR5cGluZ0F0dHJpYnV0ZXNX
aXRoQ29tcGxldGlvbkhhbmRsZXIodm9pZCheY29tcGxldGlvbikoTlNEaWN0aW9uYXJ5PE5TU3Ry
aW5nICosIGlkPiAqKSkKIHsKLSAgICBpZiAoYXV0byBhdHRyaWJ1dGVzID0gbV9wYWdlLT5jYWNo
ZWRGb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoKSkgewotICAgICAgICBhdXRvIGF0dHJp
YnV0ZXNBc0RpY3Rpb25hcnkgPSBhdHRyaWJ1dGVzLT5jcmVhdGVEaWN0aW9uYXJ5KCk7Ci0gICAg
ICAgIGNvbXBsZXRpb24oYXR0cmlidXRlc0FzRGljdGlvbmFyeS5nZXQoKSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KICAgICBtX3BhZ2UtPnJlcXVlc3RGb250QXR0cmlidXRlc0F0U2VsZWN0
aW9uU3RhcnQoW2NvbXBsZXRpb24gPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbildIChjb25zdCBX
ZWJDb3JlOjpGb250QXR0cmlidXRlcyYgYXR0cmlidXRlcywgQ2FsbGJhY2tCYXNlOjpFcnJvciBl
cnJvcikgewogICAgICAgICBpZiAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkg
ewogICAgICAgICAgICAgY29tcGxldGlvbihuaWwpOwpAQCAtMjg0Myw3ICsyODQyLDYgQEAgdm9p
ZCBXZWJWaWV3SW1wbDo6Y2hhbmdlRm9udEF0dHJpYnV0ZXNGcm9tU2VuZGVyKGlkIHNlbmRlcikK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9wYWdlLT5jaGFuZ2VGb250QXR0cmlidXRlcyhXZWJD
b3JlOjpjb21wdXRlZEZvbnRBdHRyaWJ1dGVDaGFuZ2VzKE5TRm9udE1hbmFnZXIuc2hhcmVkRm9u
dE1hbmFnZXIsIHNlbmRlcikpOwotICAgIHVwZGF0ZUZvbnRNYW5hZ2VySWZOZWVkZWQoKTsKIH0K
IAogdm9pZCBXZWJWaWV3SW1wbDo6Y2hhbmdlRm9udEZyb21Gb250TWFuYWdlcigpCkBAIC0yODUz
LDcgKzI4NTEsNiBAQCB2b2lkIFdlYlZpZXdJbXBsOjpjaGFuZ2VGb250RnJvbUZvbnRNYW5hZ2Vy
KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9wYWdlLT5jaGFuZ2VGb250KFdlYkNvcmU6OmNv
bXB1dGVkRm9udENoYW5nZXMoTlNGb250TWFuYWdlci5zaGFyZWRGb250TWFuYWdlcikpOwotICAg
IHVwZGF0ZUZvbnRNYW5hZ2VySWZOZWVkZWQoKTsKIH0KIAogc3RhdGljIE5TTWVudUl0ZW0gKm1l
bnVJdGVtKGlkIDxOU1ZhbGlkYXRlZFVzZXJJbnRlcmZhY2VJdGVtPiBpdGVtKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZjQ2N2MxNzBiYzIyMGU5MTViMzhj
MTZkYmMzYjc5MmM1OGI0ZjI0ZS4uNDkzMjVkZjAzYTg4ZTBhOGYyNTA5YzNiMWM2ZjQzNGM4MTU1
NDM3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xODA1
LDYgKzE4MDUsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RGb250QXR0cmlidXRlc0F0
U2VsZWN0aW9uU3RhcnQoRnVuY3Rpb248dm9pZChjb25zdCBXZWIKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAorICAgIGlmIChhdXRvIGF0dHJpYnV0ZXMgPSBtX2NhY2hlZEZvbnRBdHRyaWJ1dGVz
QXRTZWxlY3Rpb25TdGFydCkgeworICAgICAgICBjYWxsYmFjaygqYXR0cmlidXRlcywgQ2FsbGJh
Y2tCYXNlOjpFcnJvcjo6Tm9uZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBhdXRv
IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0Rm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlv
blN0YXJ0KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCmluZGV4IDQ4MGQwZWE3MWViODAzZWEzZWNhZDgxMTJjZDE0NTY2ZmNiNmM1
NTEuLmJjZjMzZDEzYzkzODU3NGRlYTQ2NTlhMjAxY2YyMjY1MDY1YjBhMDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0zMDEsNyArMzAxLDYgQEAgdHlwZWRlZiBH
ZW5lcmljQ2FsbGJhY2s8Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1h
bmlmZXN0PiY+IEFwcGwKIAogI2lmIFBMQVRGT1JNKE1BQykKIHR5cGVkZWYgR2VuZXJpY0NhbGxi
YWNrPGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmLCBjb25zdCBFZGl0aW5nUmFuZ2UmPiBBdHRyaWJ1
dGVkU3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjazsKLXR5cGVkZWYgR2VuZXJpY0NhbGxi
YWNrPGNvbnN0IFN0cmluZyYsIGRvdWJsZSwgYm9vbD4gRm9udEF0U2VsZWN0aW9uQ2FsbGJhY2s7
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTU0NCw4ICs1NDMsNiBAQCBwdWJsaWM6
CiAgICAgYm9vbCBoYXNTZWxlY3RlZFJhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9lZGl0b3JTdGF0
ZS5zZWxlY3Rpb25Jc1JhbmdlOyB9CiAgICAgYm9vbCBpc0NvbnRlbnRFZGl0YWJsZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZWRpdG9yU3RhdGUuaXNDb250ZW50RWRpdGFibGU7IH0KIAotICAgIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXM+IGNhY2hlZEZvbnRBdHRyaWJ1dGVzQXRT
ZWxlY3Rpb25TdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkRm9udEF0dHJpYnV0ZXNBdFNl
bGVjdGlvblN0YXJ0OyB9Ci0KICNpZiBQTEFURk9STShDT0NPQSkKICAgICBjb25zdCBUb3VjaEJh
ck1lbnVEYXRhJiB0b3VjaEJhck1lbnVEYXRhKCkgY29uc3QgeyByZXR1cm4gbV90b3VjaEJhck1l
bnVEYXRhOyB9CiAjZW5kaWYKQEAgLTE2NjIsNyArMTY1OSw2IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCByZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jiwg
Y29uc3QgRWRpdGluZ1JhbmdlJiwgQ2FsbGJhY2tJRCk7CiAjaWYgUExBVEZPUk0oTUFDKQogICAg
IHZvaWQgYXR0cmlidXRlZFN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soY29uc3QgQXR0
cmlidXRlZFN0cmluZyYsIGNvbnN0IEVkaXRpbmdSYW5nZSYsIENhbGxiYWNrSUQpOwotICAgIHZv
aWQgZm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soY29uc3QgU3RyaW5nJiwgZG91YmxlLCBib29sLCBD
YWxsYmFja0lEKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKElPUykKICAgICB2b2lkIGdlc3R1cmVD
YWxsYmFjayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1
aW50MzJfdCBnZXN0dXJlU3RhdGUsIHVpbnQzMl90IGZsYWdzLCBDYWxsYmFja0lEKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBl
ZmJiNGIxZjg3YzQ3OGZiMDM4MzI2Yjk5NDAyN2YyMmE3ODBkNWE0Li41MmQzYjJjNmI1NDkzYTdh
NTlhM2Q4MThiYTczZDcyOGY5OTYzYjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xODQsNyArMTg0LDYgQEAgbWVzc2FnZXMg
LT4gV2ViUGFnZVByb3h5IHsKICNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBBdHRyaWJ1
dGVkU3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhzdHJ1Y3QgV2ViS2l0OjpBdHRyaWJ1
dGVkU3RyaW5nIHN0cmluZywgc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIGFjdHVhbFJhbmdl
LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICBGb250QXRTZWxlY3Rpb25DYWxs
YmFjayhTdHJpbmcgZm9udE5hbWUsIGRvdWJsZSBmb250U2l6ZSwgYm9vbCBzZWxlY3Rpb0hhc011
bHRpcGxlRm9udHMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogI2VuZGlmCiAgICAg
Rm9udEF0dHJpYnV0ZXNDYWxsYmFjayhzdHJ1Y3QgV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXMgYXR0
cmlidXRlcywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAjaWYgUExBVEZPUk0oSU9T
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5k
ZXggMzk0YTU2NTI1M2I2OThhNDY4NDA0Yzk1YTViYTY3ODlkYzY0MzA2Zi4uMWMyMmY3YTQ5YmJm
NTUwZjE3NDJhNzU1NGQ2MDc2OGM2NzE3MjQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xMDYxLDEwICsxMDYxLDEwIEBAIHZvaWQg
V2ViUGFnZVByb3h5OjplZGl0b3JTdGF0ZUNoYW5nZWQoY29uc3QgRWRpdG9yU3RhdGUmIGVkaXRv
clN0YXRlKQogICAgIGlmIChlZGl0b3JTdGF0ZS5zaG91bGRJZ25vcmVTZWxlY3Rpb25DaGFuZ2Vz
KQogICAgICAgICByZXR1cm47CiAgICAgCisgICAgdXBkYXRlRm9udEF0dHJpYnV0ZXNBZnRlckVk
aXRvclN0YXRlQ2hhbmdlKCk7CiAgICAgLy8gV2UgYWx3YXlzIG5lZWQgdG8gbm90aWZ5IHRoZSBj
bGllbnQgb24gaU9TIHRvIG1ha2Ugc3VyZSB0aGUgc2VsZWN0aW9uIGlzIHJlZHJhd24sCiAgICAg
Ly8gZXZlbiBkdXJpbmcgY29tcG9zaXRpb24gdG8gc3VwcG9ydCBwaHJhc2UgYm91bmRhcnkgZ2Vz
dHVyZS4KICAgICBwYWdlQ2xpZW50KCkuc2VsZWN0aW9uRGlkQ2hhbmdlKCk7Ci0gICAgdXBkYXRl
Rm9udEF0dHJpYnV0ZXNBZnRlckVkaXRvclN0YXRlQ2hhbmdlKCk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpzaG93VmFsaWRhdGlvbk1lc3NhZ2UoY29uc3QgSW50UmVjdCYgYW5jaG9yQ2xpZW50
UmVjdCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggYjU1Y2U5ZThmMzljZjU2YzkxMjU0MGMzMGI4
Y2NjZjU2NjI3MGQxOS4uOGZhMWU5Y2I4M2UwYjNjOWQ4NDk0NzdjOWRlYWMxNDdlNmVkNDZmNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBA
IC0yMzUsMzAgKzIzNSw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjphdHRyaWJ1dGVkU3RyaW5nRm9y
Q2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhjb25zdCBBdHRyaWJ1dGVkU3RyCiAgICAgY2FsbGJhY2st
PnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShzdHJpbmcsIGFjdHVhbFJhbmdlKTsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OmZvbnRBdFNlbGVjdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQg
KGNvbnN0IFN0cmluZyYsIGRvdWJsZSwgYm9vbCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2Fs
bGJhY2tGdW5jdGlvbikKLXsKLSAgICBpZiAoIWlzVmFsaWQoKSkgewotICAgICAgICBjYWxsYmFj
a0Z1bmN0aW9uKFN0cmluZygpLCAwLCBmYWxzZSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93
bik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgYXV0byBjYWxsYmFja0lEID0g
bV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgCi0gICAgcHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvbnRBdFNlbGVjdGlvbihjYWxsYmFja0lEKSwgbV9w
YWdlSUQpOwotfQotCi12b2lkIFdlYlBhZ2VQcm94eTo6Zm9udEF0U2VsZWN0aW9uQ2FsbGJhY2so
Y29uc3QgU3RyaW5nJiBmb250TmFtZSwgZG91YmxlIGZvbnRTaXplLCBib29sIHNlbGVjdGlvbkhh
c011bHRpcGxlRm9udHMsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLXsKLSAgICBhdXRvIGNhbGxi
YWNrID0gbV9jYWxsYmFja3MudGFrZTxGb250QXRTZWxlY3Rpb25DYWxsYmFjaz4oY2FsbGJhY2tJ
RCk7Ci0gICAgaWYgKCFjYWxsYmFjaykgewotICAgICAgICAvLyBGSVhNRTogTG9nIGVycm9yIG9y
IGFzc2VydC4KLSAgICAgICAgLy8gdGhpcyBjYW4gdmFsaWRseSBoYXBwZW4gaWYgYSBsb2FkIGlu
dmFsaWRhdGVkIHRoZSBjYWxsYmFjaywgdGhvdWdoCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgCi0gICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShmb250TmFt
ZSwgZm9udFNpemUsIHNlbGVjdGlvbkhhc011bHRpcGxlRm9udHMpOwotfQotCiBTdHJpbmcgV2Vi
UGFnZVByb3h5OjpzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkKIHsKICAgICBTdHJpbmcg
dmFsdWU7CkBAIC02NDEsOCArNjE3LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmVkaXRvclN0YXRl
Q2hhbmdlZChjb25zdCBFZGl0b3JTdGF0ZSYgZWRpdG9yU3RhdGUpCiAgICAgaWYgKGVkaXRvclN0
YXRlLnNob3VsZElnbm9yZVNlbGVjdGlvbkNoYW5nZXMpCiAgICAgICAgIHJldHVybjsKICAgICAK
LSAgICBwYWdlQ2xpZW50KCkuc2VsZWN0aW9uRGlkQ2hhbmdlKCk7CiAgICAgdXBkYXRlRm9udEF0
dHJpYnV0ZXNBZnRlckVkaXRvclN0YXRlQ2hhbmdlKCk7CisgICAgcGFnZUNsaWVudCgpLnNlbGVj
dGlvbkRpZENoYW5nZSgpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3RhcnRXaW5kb3dEcmFn
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBkMDFj
OWFlOTgxZWU1NTRiN2JiNjBkODMxYWVlY2IwOTgwOTdlZjFhLi5mYTQzOTZjMGJkODlhMWM0NTM4
ZmY2MGU5MGI2OTc5ODE2MTNlNDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCkBAIC03NjAsNyArNzYwLDYgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1B
QykKICAgICB2b2lkIGluc2VydERpY3RhdGVkVGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwg
Y29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdlLCBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucywg
Ym9vbCByZWdpc3RlclVuZG9Hcm91cCA9IGZhbHNlKTsKICAgICB2b2lkIGF0dHJpYnV0ZWRTdWJz
dHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYsIENhbGxiYWNr
SUQpOwotICAgIHZvaWQgZm9udEF0U2VsZWN0aW9uKENhbGxiYWNrSUQpOwogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRl
eCBhMGExNGVmMmRiZTBjZWQ2ZWUzMDg5ZWEzMzZjMjZkZjA4ODZjMTJiLi5lODE5ZTQ4OWQ5YWNm
ZWMwNzUwN2MxN2I0ODliYjM2M2I2NDhmYjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTQxNSw3ICs0MTUsNiBA
QCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICNpZiBQTEFURk9STShNQUMp
CiAgICAgSW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoU3RyaW5nIHRleHQsIHN0cnVjdCBXZWJLaXQ6
OkVkaXRpbmdSYW5nZSByZXBsYWNlbWVudFJhbmdlLCBWZWN0b3I8V2ViQ29yZTo6RGljdGF0aW9u
QWx0ZXJuYXRpdmU+IGRpY3RhdGlvbkFsdGVybmF0aXZlcywgYm9vbCByZWdpc3RlclVuZG9Hcm91
cCkKICAgICBBdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhzdHJ1Y3Qg
V2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KTsKLSAgICBGb250QXRTZWxlY3Rpb24oV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOwog
I2VuZGlmCiAKICAgICBTZXRBbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlcihib29sIGFsd2F5
c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCA2MjMzYmY5NmExYzY5ODE3NmQ1YTBi
YTUxMWFlNDM1MDZhZDAyOGJlLi5jYWRhNTlhZWI5Zjk2NDllY2Q4MjFjOTIzMjJiN2I3ZDExNWMy
NjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbQpAQCAtMzcxLDI0ICszNzEsNiBAQCB2b2lkIFdlYlBhZ2U6OmF0dHJpYnV0ZWRT
dWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYgZWRpdAog
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QXR0cmlidXRlZFN0cmluZ0ZvckNoYXJh
Y3RlclJhbmdlQ2FsbGJhY2socmVzdWx0LCByYW5nZVRvU2VuZCwgY2FsbGJhY2tJRCkpOwogfQog
Ci12b2lkIFdlYlBhZ2U6OmZvbnRBdFNlbGVjdGlvbihDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi17
Ci0gICAgU3RyaW5nIGZvbnROYW1lOwotICAgIGRvdWJsZSBmb250U2l6ZSA9IDA7Ci0gICAgYm9v
bCBzZWxlY3Rpb25IYXNNdWx0aXBsZUZvbnRzID0gZmFsc2U7Ci0gICAgRnJhbWUmIGZyYW1lID0g
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICAKLSAg
ICBpZiAoIWZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzTm9uZSgpKSB7Ci0gICAgICAg
IGlmIChhdXRvKiBmb250ID0gZnJhbWUuZWRpdG9yKCkuZm9udEZvclNlbGVjdGlvbihzZWxlY3Rp
b25IYXNNdWx0aXBsZUZvbnRzKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gY3RGb250ID0gZm9u
dC0+Z2V0Q1RGb250KCkpIHsKLSAgICAgICAgICAgICAgICBmb250TmFtZSA9IGFkb3B0Q0YoQ1RG
b250Q29weVBvc3RTY3JpcHROYW1lKGN0Rm9udCkpLmdldCgpOwotICAgICAgICAgICAgICAgIGZv
bnRTaXplID0gQ1RGb250R2V0U2l6ZShjdEZvbnQpOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgfQotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Rm9udEF0U2VsZWN0aW9u
Q2FsbGJhY2soZm9udE5hbWUsIGZvbnRTaXplLCBzZWxlY3Rpb25IYXNNdWx0aXBsZUZvbnRzLCBj
YWxsYmFja0lEKSk7Ci19Ci0gICAgCiB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1EaWN0aW9uYXJ5TG9v
a3VwQXRMb2NhdGlvbihjb25zdCBGbG9hdFBvaW50JiBmbG9hdFBvaW50KQogewogICAgIGlmIChh
dXRvKiBwbHVnaW5WaWV3ID0gcGx1Z2luVmlld0ZvckZyYW1lKCZtX3BhZ2UtPm1haW5GcmFtZSgp
KSkgewpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IGJlYWY2ZTdmNmJjNjU0ZDI2MjgxOGZjZjYyM2E4N2JkMDU4MjA5MjUuLmFiMjc3ZDA1N2E0ZGZl
Y2NlYjFkZGZiNTZkNGJhOTFhMTdhYzZiODIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAxOC0xMC0wNSAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdIFtXSzJd
IE5TRm9udFBhbmVsIFVJIChmb250IGNvbG9yLCB0ZXh0IGRlY29yYXRpb25zLCBmb250IHNoYWRv
dykgZG9lc24ndCB1cGRhdGUgb24gc2VsZWN0aW9uIGNoYW5nZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMTIwCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS80NDg5NzQwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGp1c3QgYW4gZXhpc3RpbmcgQVBJIHRlc3QgdG8gYWRkaXRpb25hbGx5IGNoZWNr
IE5TRm9udE1hbmFnZXIgYW5kIE5TRm9udFBhbmVsIHN0YXRlIG9uIG1hY09TLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UeXBpbmdBdHRyaWJ1dGVzLm1tOgor
ICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRm9udE1h
bmFnZXJUZXN0cy5tbToKKworICAgICAgICBBZGp1c3QgYW4gZXhpc3RpbmcgQVBJIHRlc3QgdG8g
YWxzbyB2YXJ5IHRoZSBsZW5ndGggb2YgZm9udCBzaGFkb3dzLiBVcGRhdGluZyBmb250IGF0dHJp
YnV0ZXMgb24gdGhlIGZvbnQKKyAgICAgICAgbWFuYWdlciBleHBvc2VkIGFuIGlzc3VlIHdpdGgg
dGhpcyBBUEkgdGVzdCAoQ2hhbmdlQXR0cmlidXRlc1dpdGhGb250RWZmZWN0c0JveCkgd2hlcmUs
IGJlY2F1c2UgdGhlIGZvbnQgcGFuZWwncworICAgICAgICBhdHRyaWJ1dGVzIGFyZSBuZXZlciB1
cGRhdGVkLCB0aGUgdmFsdWUgb2YgdGhlIHNoYWRvdyBsZW5ndGggc2xpZGVyIHJlbWFpbnMgYXQg
dGhlIGRlZmF1bHQgdmFsdWUgb2YgMC4xMjUsCisgICAgICAgIHByb2R1Y2luZyBhIHNoYWRvdyBs
ZW5ndGggb2YgMXB4LiBIb3dldmVyLCBub3cgdGhhdCB0aGUgc2VsZWN0aW9uIG1vdmVzIHRvIG5v
bi1zaGFkb3dlZCB0ZXh0IGJlZm9yZSBtb3ZpbmcgdG8KKyAgICAgICAgc2hhZG93ZWQgdGV4dCBh
Z2Fpbiwgd2UgbmVlZCB0byBleHBsaWNpdGx5IHNldCB0aGUgc2hhZG93IGxlbmd0aCBzbGlkZXIn
cyB2YWx1ZSB3aGVuIHRlc3RpbmcgdGhlIHNlY29uZCBzaGFkb3dlZAorICAgICAgICB0ZXh0IHNl
bGVjdGlvbi4KKworICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9tYWMvTlNGb250UGFuZWxUZXN0aW5nLmg6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9tYWMvTlNGb250UGFuZWxUZXN0aW5nLm1tOgorCisgICAgICAgIEFkZCBzb21lIGFkZGl0
aW9uYWwgdGVzdGluZyBoZWxwZXJzIHRvIHF1ZXJ5IHRoZSBzdGF0ZSBvZiBjb250cm9scyBpbiB0
aGUgZm9udCBwYW5lbCAoZS5nLiBmb250IHNoYWRvdyBzbGlkZXJzLAorICAgICAgICBmb3JlZ3Jv
dW5kIGNvbG9yIHdlbGwsIGFuZCBzdHJpa2UtdGhyb3VnaC91bmRlcmxpbmUgcG9wdXAgbWVudSBz
dGF0ZSkuCisKKyAgICAgICAgKC1bTlNGb250UGFuZWwgdW5kZXJsaW5lVG9vbGJhckJ1dHRvbl0p
OgorICAgICAgICAoLVtOU0ZvbnRQYW5lbCBzdHJpa2VUaHJvdWdoVG9vbGJhckJ1dHRvbl0pOgor
ICAgICAgICAoLVtOU0ZvbnRQYW5lbCBmb3JlZ3JvdW5kQ29sb3JUb29sYmFyQ29sb3JXZWxsXSk6
CisgICAgICAgICgtW05TRm9udFBhbmVsIGNob29zZVVuZGVybGluZU1lbnVJdGVtV2l0aFRpdGxl
Ol0pOgorICAgICAgICAoLVtOU0ZvbnRQYW5lbCBjaG9vc2VTdHJpa2VUaHJvdWdoTWVudUl0ZW1X
aXRoVGl0bGU6XSk6CisgICAgICAgICgtW05TRm9udFBhbmVsIHNoYWRvd0xlbmd0aFNsaWRlcl0p
OgorICAgICAgICAoLVtOU0ZvbnRQYW5lbCBoYXNTaGFkb3ddKToKKyAgICAgICAgKC1bTlNGb250
UGFuZWwgc2hhZG93TGVuZ3RoXSk6CisgICAgICAgICgtW05TRm9udFBhbmVsIHNldFNoYWRvd0xl
bmd0aDpdKToKKyAgICAgICAgKC1bTlNGb250UGFuZWwgaGFzVW5kZXJsaW5lXSk6CisgICAgICAg
ICgtW05TRm9udFBhbmVsIGhhc1N0cmlrZVRocm91Z2hdKToKKyAgICAgICAgKC1bTlNGb250UGFu
ZWwgZm9yZWdyb3VuZENvbG9yXSk6CisKIDIwMTgtMTAtMDUgIFJ5YW4gSGFkZGFkICA8cnlhbmhh
ZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzNjg2
Ni4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRm9u
dEF0dHJpYnV0ZXMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Zv
bnRBdHRyaWJ1dGVzLm1tCmluZGV4IDBiOThiMzlhZWFkM2UwOWU3NjE4OWE3NDk2ODkyNjY0ODVl
YjVlZDAuLjM2N2UzN2JmNjk3NDg2NjMwYjU0ZmJmMDQ3MjU4N2RlMDNmZjljZTQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRm9udEF0dHJpYnV0ZXMu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Gb250QXR0cmli
dXRlcy5tbQpAQCAtMTc4LDYgKzE3OCwxMSBAQCBzdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZp
ZXc+IHdlYlZpZXdGb3JUZXN0aW5nRm9udEF0dHJpYnV0ZXMoKQogICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgMzIwLCA1MDApXSk7CiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFn
ZU5hbWVkOkAicmljaC10ZXh0LWF0dHJpYnV0ZXMiXTsKICAgICBbd2ViVmlldyBzdHJpbmdCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5mb2N1cygpIl07CisjaWYgUExBVEZP
Uk0oTUFDKQorICAgIE5TRm9udE1hbmFnZXIgKmZvbnRNYW5hZ2VyID0gTlNGb250TWFuYWdlci5z
aGFyZWRGb250TWFuYWdlcjsKKyAgICBbW2ZvbnRNYW5hZ2VyIGZvbnRQYW5lbDpZRVNdIHNldElz
VmlzaWJsZTpZRVNdOworICAgIGZvbnRNYW5hZ2VyLnRhcmdldCA9IHdlYlZpZXcuZ2V0KCk7Cisj
ZW5kaWYKICAgICByZXR1cm4gd2ViVmlldzsKIH0KIApAQCAtMTg3LDYgKzE5MiwzMSBAQCBURVNU
KEZvbnRBdHRyaWJ1dGVzLCBGb250QXR0cmlidXRlc0FmdGVyQ2hhbmdpbmdTZWxlY3Rpb24pCiAg
ICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvclRlc3RpbmdGb250QXR0cmlidXRlcygpOwogICAg
IFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCisgICAgYXV0byBleHBl
Y3RGb250TWFuYWdlclN0YXRlID0gW10gKEZvbnRFeHBlY3RhdGlvbiYmIGV4cGVjdGVkRm9udCwg
Q29sb3JFeHBlY3RhdGlvbiYmIGV4cGVjdGVkQ29sb3IsIFNoYWRvd0V4cGVjdGF0aW9uJiYgZXhw
ZWN0ZWRTaGFkb3csIEJPT0wgdW5kZXJsaW5lLCBCT09MIHN0cmlrZVRocm91Z2gsIEJPT0wgZXhw
ZWN0TXVsdGlwbGVGb250cykgeworI2lmIFBMQVRGT1JNKE1BQykKKyAgICAgICAgTlNGb250TWFu
YWdlciAqZm9udE1hbmFnZXIgPSBOU0ZvbnRNYW5hZ2VyLnNoYXJlZEZvbnRNYW5hZ2VyOworICAg
ICAgICBOU0ZvbnRQYW5lbCAqZm9udFBhbmVsID0gTlNGb250UGFuZWwuc2hhcmVkRm9udFBhbmVs
OworICAgICAgICBpZiAoZXhwZWN0ZWRTaGFkb3cubnVsbGl0eSA9PSBOdWxsaXR5OjpOb25OdWxs
KSB7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShmb250UGFuZWwuaGFzU2hhZG93KTsKKyAgICAg
ICAgICAgIEVYUEVDVF9MVChzdGQ6OmFicyhleHBlY3RlZFNoYWRvdy5vcGFjaXR5IC0gZm9udFBh
bmVsLnNoYWRvd09wYWNpdHkpLCAwLjAwMDEpOworICAgICAgICAgICAgRVhQRUNUX0VRKGV4cGVj
dGVkU2hhZG93LmJsdXJSYWRpdXMsIGZvbnRQYW5lbC5zaGFkb3dCbHVyKTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoZm9udFBhbmVsLmhhc1NoYWRvdyk7CisgICAg
ICAgIEVYUEVDVF9FUSh1bmRlcmxpbmUsIGZvbnRQYW5lbC5oYXNVbmRlcmxpbmUpOworICAgICAg
ICBFWFBFQ1RfRVEoc3RyaWtlVGhyb3VnaCwgZm9udFBhbmVsLmhhc1N0cmlrZVRocm91Z2gpOwor
ICAgICAgICBjaGVja0NvbG9yKFtmb250UGFuZWwuZm9yZWdyb3VuZENvbG9yIGNvbG9yVXNpbmdD
b2xvclNwYWNlOk5TQ29sb3JTcGFjZS5zUkdCQ29sb3JTcGFjZV0sIFdURk1vdmUoZXhwZWN0ZWRD
b2xvcikpOworICAgICAgICBjaGVja0ZvbnQoZm9udE1hbmFnZXIuc2VsZWN0ZWRGb250LCBXVEZN
b3ZlKGV4cGVjdGVkRm9udCkpOworICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0TXVsdGlwbGVGb250
cywgZm9udE1hbmFnZXIubXVsdGlwbGUpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKGV4
cGVjdGVkRm9udCk7CisgICAgICAgIFVOVVNFRF9QQVJBTShleHBlY3RlZENvbG9yKTsKKyAgICAg
ICAgVU5VU0VEX1BBUkFNKGV4cGVjdGVkU2hhZG93KTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHVu
ZGVybGluZSk7CisgICAgICAgIFVOVVNFRF9QQVJBTShzdHJpa2VUaHJvdWdoKTsKKyAgICAgICAg
VU5VU0VEX1BBUkFNKGV4cGVjdE11bHRpcGxlRm9udHMpOworI2VuZGlmCisgICAgfTsKKwogICAg
IHsKICAgICAgICAgW3dlYlZpZXcgc2VsZWN0RWxlbWVudFdpdGhJZGVudGlmaWVyOkAib25lIl07
CiAgICAgICAgIE5TRGljdGlvbmFyeSAqYXR0cmlidXRlcyA9IFt3ZWJWaWV3IGZvbnRBdHRyaWJ1
dGVzQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKQEAgLTE5Nyw2ICsyMjcsNyBAQCBURVNU
KEZvbnRBdHRyaWJ1dGVzLCBGb250QXR0cmlidXRlc0FmdGVyQ2hhbmdpbmdTZWxlY3Rpb24pCiAg
ICAgICAgIEVYUEVDVF9FUShOU1VuZGVybGluZVN0eWxlU2luZ2xlLCBbYXR0cmlidXRlc1tOU1N0
cmlrZXRocm91Z2hTdHlsZUF0dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOwogICAgICAgICBF
WFBFQ1RfRVEoTlNVbmRlcmxpbmVTdHlsZU5vbmUsIFthdHRyaWJ1dGVzW05TVW5kZXJsaW5lU3R5
bGVBdHRyaWJ1dGVOYW1lXSBpbnRlZ2VyVmFsdWVdKTsKICAgICAgICAgRVhQRUNUX0VRKDAsIFth
dHRyaWJ1dGVzW05TU3VwZXJzY3JpcHRBdHRyaWJ1dGVOYW1lXSBpbnRlZ2VyVmFsdWVdKTsKKyAg
ICAgICAgZXhwZWN0Rm9udE1hbmFnZXJTdGF0ZSh7ICJIZWx2ZXRpY2EtQm9sZCIsIDQ4IH0sIHsg
MjI3LCAzNiwgMCwgMSB9LCB7IH0sIE5PLCBZRVMsIE5PKTsKICAgICB9CiAgICAgewogICAgICAg
ICBbd2ViVmlldyBzZWxlY3RFbGVtZW50V2l0aElkZW50aWZpZXI6QCJ0d28iXTsKQEAgLTIwOCw2
ICsyMzksNyBAQCBURVNUKEZvbnRBdHRyaWJ1dGVzLCBGb250QXR0cmlidXRlc0FmdGVyQ2hhbmdp
bmdTZWxlY3Rpb24pCiAgICAgICAgIEVYUEVDVF9FUShOU1VuZGVybGluZVN0eWxlTm9uZSwgW2F0
dHJpYnV0ZXNbTlNTdHJpa2V0aHJvdWdoU3R5bGVBdHRyaWJ1dGVOYW1lXSBpbnRlZ2VyVmFsdWVd
KTsKICAgICAgICAgRVhQRUNUX0VRKE5TVW5kZXJsaW5lU3R5bGVTaW5nbGUsIFthdHRyaWJ1dGVz
W05TVW5kZXJsaW5lU3R5bGVBdHRyaWJ1dGVOYW1lXSBpbnRlZ2VyVmFsdWVdKTsKICAgICAgICAg
RVhQRUNUX0VRKDAsIFthdHRyaWJ1dGVzW05TU3VwZXJzY3JpcHRBdHRyaWJ1dGVOYW1lXSBpbnRl
Z2VyVmFsdWVdKTsKKyAgICAgICAgZXhwZWN0Rm9udE1hbmFnZXJTdGF0ZSh7ICJIZWx2ZXRpY2Et
Qm9sZCIsIDQ4IH0sIHsgMTAyLCAxNTcsIDUyLCAxIH0sIHsgMC40NzA1ODgsIDUgfSwgWUVTLCBO
TywgTk8pOwogICAgIH0KICAgICB7CiAgICAgICAgIFt3ZWJWaWV3IHNlbGVjdEVsZW1lbnRXaXRo
SWRlbnRpZmllcjpAInRocmVlIl07CkBAIC0yMTksNiArMjUxLDcgQEAgVEVTVChGb250QXR0cmli
dXRlcywgRm9udEF0dHJpYnV0ZXNBZnRlckNoYW5naW5nU2VsZWN0aW9uKQogICAgICAgICBFWFBF
Q1RfRVEoTlNVbmRlcmxpbmVTdHlsZU5vbmUsIFthdHRyaWJ1dGVzW05TU3RyaWtldGhyb3VnaFN0
eWxlQXR0cmlidXRlTmFtZV0gaW50ZWdlclZhbHVlXSk7CiAgICAgICAgIEVYUEVDVF9FUShOU1Vu
ZGVybGluZVN0eWxlTm9uZSwgW2F0dHJpYnV0ZXNbTlNVbmRlcmxpbmVTdHlsZUF0dHJpYnV0ZU5h
bWVdIGludGVnZXJWYWx1ZV0pOwogICAgICAgICBFWFBFQ1RfRVEoMCwgW2F0dHJpYnV0ZXNbTlNT
dXBlcnNjcmlwdEF0dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOworICAgICAgICBleHBlY3RG
b250TWFuYWdlclN0YXRlKHsgIk1lbmxvLUl0YWxpYyIsIDE4IH0sIHsgMjU1LCAxMDYsIDAsIDEg
fSwgeyB9LCBOTywgTk8sIE5PKTsKICAgICB9CiAgICAgewogICAgICAgICBbd2ViVmlldyBzZWxl
Y3RFbGVtZW50V2l0aElkZW50aWZpZXI6QCJmb3VyIl07CkBAIC0yMzAsNiArMjYzLDcgQEAgVEVT
VChGb250QXR0cmlidXRlcywgRm9udEF0dHJpYnV0ZXNBZnRlckNoYW5naW5nU2VsZWN0aW9uKQog
ICAgICAgICBFWFBFQ1RfRVEoTlNVbmRlcmxpbmVTdHlsZU5vbmUsIFthdHRyaWJ1dGVzW05TU3Ry
aWtldGhyb3VnaFN0eWxlQXR0cmlidXRlTmFtZV0gaW50ZWdlclZhbHVlXSk7CiAgICAgICAgIEVY
UEVDVF9FUShOU1VuZGVybGluZVN0eWxlTm9uZSwgW2F0dHJpYnV0ZXNbTlNVbmRlcmxpbmVTdHls
ZUF0dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOwogICAgICAgICBFWFBFQ1RfRVEoMCwgW2F0
dHJpYnV0ZXNbTlNTdXBlcnNjcmlwdEF0dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOworICAg
ICAgICBleHBlY3RGb250TWFuYWdlclN0YXRlKHsgIkF2ZW5pci1Cb29rIiwgMjQgfSwgeyAyNTUs
IDI1NSwgMjU1LCAxIH0sIHsgfSwgTk8sIE5PLCBOTyk7CiAgICAgfQogICAgIHsKICAgICAgICAg
W3dlYlZpZXcgc2VsZWN0RWxlbWVudFdpdGhJZGVudGlmaWVyOkAiZml2ZSJdOwpAQCAtMjQxLDYg
KzI3NSw3IEBAIFRFU1QoRm9udEF0dHJpYnV0ZXMsIEZvbnRBdHRyaWJ1dGVzQWZ0ZXJDaGFuZ2lu
Z1NlbGVjdGlvbikKICAgICAgICAgRVhQRUNUX0VRKE5TVW5kZXJsaW5lU3R5bGVOb25lLCBbYXR0
cmlidXRlc1tOU1N0cmlrZXRocm91Z2hTdHlsZUF0dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0p
OwogICAgICAgICBFWFBFQ1RfRVEoTlNVbmRlcmxpbmVTdHlsZU5vbmUsIFthdHRyaWJ1dGVzW05T
VW5kZXJsaW5lU3R5bGVBdHRyaWJ1dGVOYW1lXSBpbnRlZ2VyVmFsdWVdKTsKICAgICAgICAgRVhQ
RUNUX0VRKDAsIFthdHRyaWJ1dGVzW05TU3VwZXJzY3JpcHRBdHRyaWJ1dGVOYW1lXSBpbnRlZ2Vy
VmFsdWVdKTsKKyAgICAgICAgZXhwZWN0Rm9udE1hbmFnZXJTdGF0ZSh7ICJUaW1lc05ld1JvbWFu
UFMtQm9sZE1UIiwgMjQgfSwgeyAxMzEsIDE2LCAwLCAxIH0sIHsgfSwgTk8sIE5PLCBOTyk7CiAg
ICAgfQogICAgIHsKICAgICAgICAgW3dlYlZpZXcgc2VsZWN0RWxlbWVudFdpdGhJZGVudGlmaWVy
OkAic2l4Il07CkBAIC0yNTIsNiArMjg3LDcgQEAgVEVTVChGb250QXR0cmlidXRlcywgRm9udEF0
dHJpYnV0ZXNBZnRlckNoYW5naW5nU2VsZWN0aW9uKQogICAgICAgICBFWFBFQ1RfRVEoTlNVbmRl
cmxpbmVTdHlsZU5vbmUsIFthdHRyaWJ1dGVzW05TU3RyaWtldGhyb3VnaFN0eWxlQXR0cmlidXRl
TmFtZV0gaW50ZWdlclZhbHVlXSk7CiAgICAgICAgIEVYUEVDVF9FUShOU1VuZGVybGluZVN0eWxl
Tm9uZSwgW2F0dHJpYnV0ZXNbTlNVbmRlcmxpbmVTdHlsZUF0dHJpYnV0ZU5hbWVdIGludGVnZXJW
YWx1ZV0pOwogICAgICAgICBFWFBFQ1RfRVEoMCwgW2F0dHJpYnV0ZXNbTlNTdXBlcnNjcmlwdEF0
dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOworICAgICAgICBleHBlY3RGb250TWFuYWdlclN0
YXRlKHsgIkF2ZW5pci1CbGFjayIsIDE4IH0sIHsgMjU1LCA2NCwgMTksIDEgfSwgeyB9LCBOTywg
Tk8sIE5PKTsKICAgICB9CiAgICAgewogICAgICAgICBbd2ViVmlldyBzZWxlY3RFbGVtZW50V2l0
aElkZW50aWZpZXI6QCJzZXZlbiJdOwpAQCAtMjYzLDYgKzI5OSw3IEBAIFRFU1QoRm9udEF0dHJp
YnV0ZXMsIEZvbnRBdHRyaWJ1dGVzQWZ0ZXJDaGFuZ2luZ1NlbGVjdGlvbikKICAgICAgICAgRVhQ
RUNUX0VRKE5TVW5kZXJsaW5lU3R5bGVOb25lLCBbYXR0cmlidXRlc1tOU1N0cmlrZXRocm91Z2hT
dHlsZUF0dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOwogICAgICAgICBFWFBFQ1RfRVEoTlNV
bmRlcmxpbmVTdHlsZU5vbmUsIFthdHRyaWJ1dGVzW05TVW5kZXJsaW5lU3R5bGVBdHRyaWJ1dGVO
YW1lXSBpbnRlZ2VyVmFsdWVdKTsKICAgICAgICAgRVhQRUNUX0VRKC0xLCBbYXR0cmlidXRlc1tO
U1N1cGVyc2NyaXB0QXR0cmlidXRlTmFtZV0gaW50ZWdlclZhbHVlXSk7CisgICAgICAgIGV4cGVj
dEZvbnRNYW5hZ2VyU3RhdGUoeyAiQXZlbmlyLUJvb2tPYmxpcXVlIiwgMTIgfSwgeyAyMzUsIDIz
NSwgMjM1LCAxIH0sIHsgfSwgTk8sIE5PLCBOTyk7CiAgICAgfQogICAgIHsKICAgICAgICAgW3dl
YlZpZXcgc2VsZWN0RWxlbWVudFdpdGhJZGVudGlmaWVyOkAiZWlnaHQiXTsKQEAgLTI3NCw2ICsz
MTEsNyBAQCBURVNUKEZvbnRBdHRyaWJ1dGVzLCBGb250QXR0cmlidXRlc0FmdGVyQ2hhbmdpbmdT
ZWxlY3Rpb24pCiAgICAgICAgIEVYUEVDVF9FUShOU1VuZGVybGluZVN0eWxlTm9uZSwgW2F0dHJp
YnV0ZXNbTlNTdHJpa2V0aHJvdWdoU3R5bGVBdHRyaWJ1dGVOYW1lXSBpbnRlZ2VyVmFsdWVdKTsK
ICAgICAgICAgRVhQRUNUX0VRKE5TVW5kZXJsaW5lU3R5bGVOb25lLCBbYXR0cmlidXRlc1tOU1Vu
ZGVybGluZVN0eWxlQXR0cmlidXRlTmFtZV0gaW50ZWdlclZhbHVlXSk7CiAgICAgICAgIEVYUEVD
VF9FUSgxLCBbYXR0cmlidXRlc1tOU1N1cGVyc2NyaXB0QXR0cmlidXRlTmFtZV0gaW50ZWdlclZh
bHVlXSk7CisgICAgICAgIGV4cGVjdEZvbnRNYW5hZ2VyU3RhdGUoeyAiQXZlbmlyLUJvb2siLCAx
MiB9LCB7IDAsIDAsIDAsIDEgfSwgeyB9LCBOTywgTk8sIE5PKTsKICAgICB9CiAgICAgewogICAg
ICAgICBbd2ViVmlldyBzZWxlY3RFbGVtZW50V2l0aElkZW50aWZpZXI6QCJuaW5lIl07CkBAIC0y
ODUsNiArMzIzLDcgQEAgVEVTVChGb250QXR0cmlidXRlcywgRm9udEF0dHJpYnV0ZXNBZnRlckNo
YW5naW5nU2VsZWN0aW9uKQogICAgICAgICBFWFBFQ1RfRVEoTlNVbmRlcmxpbmVTdHlsZU5vbmUs
IFthdHRyaWJ1dGVzW05TU3RyaWtldGhyb3VnaFN0eWxlQXR0cmlidXRlTmFtZV0gaW50ZWdlclZh
bHVlXSk7CiAgICAgICAgIEVYUEVDVF9FUShOU1VuZGVybGluZVN0eWxlTm9uZSwgW2F0dHJpYnV0
ZXNbTlNVbmRlcmxpbmVTdHlsZUF0dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOwogICAgICAg
ICBFWFBFQ1RfRVEoMCwgW2F0dHJpYnV0ZXNbTlNTdXBlcnNjcmlwdEF0dHJpYnV0ZU5hbWVdIGlu
dGVnZXJWYWx1ZV0pOworICAgICAgICBleHBlY3RGb250TWFuYWdlclN0YXRlKHsgIkdlb3JnaWEi
LCAzNiB9LCB7IDAsIDAsIDAsIDEgfSwgeyAwLjY1ODgyNCwgOSB9LCBOTywgTk8sIE5PKTsKICAg
ICB9CiAgICAgewogICAgICAgICBbd2ViVmlldyBzZWxlY3RFbGVtZW50V2l0aElkZW50aWZpZXI6
QCJ0ZW4iXTsKQEAgLTI5Niw3ICszMzUsMTUgQEAgVEVTVChGb250QXR0cmlidXRlcywgRm9udEF0
dHJpYnV0ZXNBZnRlckNoYW5naW5nU2VsZWN0aW9uKQogICAgICAgICBFWFBFQ1RfRVEoTlNVbmRl
cmxpbmVTdHlsZU5vbmUsIFthdHRyaWJ1dGVzW05TU3RyaWtldGhyb3VnaFN0eWxlQXR0cmlidXRl
TmFtZV0gaW50ZWdlclZhbHVlXSk7CiAgICAgICAgIEVYUEVDVF9FUShOU1VuZGVybGluZVN0eWxl
Tm9uZSwgW2F0dHJpYnV0ZXNbTlNVbmRlcmxpbmVTdHlsZUF0dHJpYnV0ZU5hbWVdIGludGVnZXJW
YWx1ZV0pOwogICAgICAgICBFWFBFQ1RfRVEoMCwgW2F0dHJpYnV0ZXNbTlNTdXBlcnNjcmlwdEF0
dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOworICAgICAgICBleHBlY3RGb250TWFuYWdlclN0
YXRlKHsgIkF2ZW5pci1Cb29rT2JsaXF1ZSIsIDE4IH0sIHsgMCwgMCwgMCwgMSB9LCB7IH0sIE5P
LCBOTywgTk8pOwogICAgIH0KKyNpZiBQTEFURk9STShNQUMpCisgICAgeworICAgICAgICBbd2Vi
VmlldyBzZWxlY3RBbGw6bmlsXTsKKyAgICAgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50
YXRpb25VcGRhdGVdOworICAgICAgICBFWFBFQ1RfVFJVRShOU0ZvbnRNYW5hZ2VyLnNoYXJlZEZv
bnRNYW5hZ2VyLm11bHRpcGxlKTsKKyAgICB9CisjZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMv
Rm9udE1hbmFnZXJUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0ZvbnRN
YW5hZ2VyVGVzdHMubW0KaW5kZXggNGJjYmVjNDhmYjQ5MTUxMzFjYjQwMjkxODhjYzVlNzgyYzAx
MmRmMi4uMWRkZjZhOTAwNzAyNTczNTU2YjY5NzY0YTlhYjk3MzhkM2NlMmZlZiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRm9udE1hbmFnZXJUZXN0cy5tbQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Gb250TWFuYWdlclRlc3RzLm1tCkBAIC0y
NzcsNiArMjc3LDcgQEAgVEVTVChGb250TWFuYWdlclRlc3RzLCBDaGFuZ2VBdHRyaWJ1dGVzV2l0
aEZvbnRFZmZlY3RzQm94KQogICAgIFt3ZWJWaWV3IHNlbGVjdE5leHRXb3JkXTsKICAgICBmb250
UGFuZWwuc2hhZG93Qmx1ciA9IDg7CiAgICAgZm9udFBhbmVsLnNoYWRvd09wYWNpdHkgPSAxOwor
ICAgIGZvbnRQYW5lbC5zaGFkb3dMZW5ndGggPSAwLjEyNTsKICAgICBbZm9udFBhbmVsIHRvZ2ds
ZVNoYWRvd107CiAgICAgRVhQRUNUX1dLX1NUUkVRKCJiYXoiLCBbd2ViVmlldyBzZWxlY3RlZFRl
eHRdKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoInJnYigwLCAwLCAwKSAwcHggMXB4IDhweCIsIHRl
eHRTaGFkb3dBcm91bmRTZWxlY3Rpb24oKSk7CkBAIC0yOTYsMTEgKzI5NywxMiBAQCBURVNUKEZv
bnRNYW5hZ2VyVGVzdHMsIENoYW5nZUF0dHJpYnV0ZXNXaXRoRm9udEVmZmVjdHNCb3gpCiAgICAg
W3dlYlZpZXcgc2VsZWN0QWxsOm5pbF07CiAgICAgZm9udFBhbmVsLnNoYWRvd0JsdXIgPSA1Owog
ICAgIGZvbnRQYW5lbC5zaGFkb3dPcGFjaXR5ID0gMC4yOworICAgIGZvbnRQYW5lbC5zaGFkb3dM
ZW5ndGggPSAwLjI1OwogICAgIFtmb250UGFuZWwgdG9nZ2xlU2hhZG93XTsKICAgICBbZm9udFBh
bmVsIGNob29zZVVuZGVybGluZU1lbnVJdGVtV2l0aFRpdGxlOkAic2luZ2xlIl07CiAgICAgW2Zv
bnRQYW5lbCBjaG9vc2VTdHJpa2VUaHJvdWdoTWVudUl0ZW1XaXRoVGl0bGU6QCJzaW5nbGUiXTsK
ICAgICBFWFBFQ1RfV0tfU1RSRVEoImZvbyBiYXIgYmF6IiwgW3dlYlZpZXcgc2VsZWN0ZWRUZXh0
XSk7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKCJyZ2JhKDAsIDAsIDAsIDAuMikgMHB4IDFweCA1cHgi
LCB0ZXh0U2hhZG93QXJvdW5kU2VsZWN0aW9uKCkpOworICAgIEVYUEVDVF9XS19TVFJFUSgicmdi
YSgwLCAwLCAwLCAwLjIpIDBweCAycHggNXB4IiwgdGV4dFNoYWRvd0Fyb3VuZFNlbGVjdGlvbigp
KTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoInVuZGVybGluZSBsaW5lLXRocm91Z2giLCB0ZXh0RGVj
b3JhdGlvbnNBcm91bmRTZWxlY3Rpb24oKSk7CiAgICAgewogICAgICAgICBOU0RpY3Rpb25hcnkg
KnR5cGluZ0F0dHJpYnV0ZXMgPSBbd2ViVmlldyB0eXBpbmdBdHRyaWJ1dGVzXTsKQEAgLTMwOSw3
ICszMTEsNyBAQCBURVNUKEZvbnRNYW5hZ2VyVGVzdHMsIENoYW5nZUF0dHJpYnV0ZXNXaXRoRm9u
dEVmZmVjdHNCb3gpCiAKICAgICAgICAgTlNTaGFkb3cgKnNoYWRvdyA9IHR5cGluZ0F0dHJpYnV0
ZXNbTlNTaGFkb3dBdHRyaWJ1dGVOYW1lXTsKICAgICAgICAgRVhQRUNUX0VRKHNoYWRvdy5zaGFk
b3dPZmZzZXQud2lkdGgsIDApOwotICAgICAgICBFWFBFQ1RfRVEoc2hhZG93LnNoYWRvd09mZnNl
dC5oZWlnaHQsIDEpOworICAgICAgICBFWFBFQ1RfRVEoc2hhZG93LnNoYWRvd09mZnNldC5oZWln
aHQsIDIpOwogICAgICAgICBFWFBFQ1RfRVEoc2hhZG93LnNoYWRvd0JsdXJSYWRpdXMsIDUpOwog
ICAgICAgICBFWFBFQ1RfVFJVRShbc2hhZG93LnNoYWRvd0NvbG9yIGlzRXF1YWw6W05TQ29sb3Ig
Y29sb3JXaXRoUmVkOjAgZ3JlZW46MCBibHVlOjAgYWxwaGE6MC4yXV0pOwogICAgIH0KZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL05TRm9udFBhbmVsVGVzdGluZy5oIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9tYWMvTlNGb250UGFuZWxUZXN0aW5nLmgKaW5kZXggMGIwNGQ0OGYz
ZTk4NWZhMjIxZGE2MWM2OWRhMWJlYjI4NjE0MWQ5Yi4uOGI4Y2Y5YjMwNWEyMTc3YjhlYTdiNDc4
Y2EyMjgwZjA3YWE2ZGY3YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvTlNG
b250UGFuZWxUZXN0aW5nLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvTlNGb250UGFu
ZWxUZXN0aW5nLmgKQEAgLTMzLDYgKzMzLDEyIEBACiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBk
b3VibGUgc2hhZG93T3BhY2l0eTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBkb3VibGUgc2hhZG93
Qmx1cjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBkb3VibGUgc2hhZG93TGVuZ3RoOworCitAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgaGFzU2hhZG93OworQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5KSBCT09MIGhhc1VuZGVybGluZTsKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSkgQk9PTCBoYXNTdHJpa2VUaHJvdWdoOworQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5KSBOU0NvbG9yICpmb3JlZ3JvdW5kQ29sb3I7CiAKIC0gKHZvaWQpdG9nZ2xl
U2hhZG93OwogLSAodm9pZCljaG9vc2VVbmRlcmxpbmVNZW51SXRlbVdpdGhUaXRsZTooTlNTdHJp
bmcgKilpdGVtVGl0bGU7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9OU0Zv
bnRQYW5lbFRlc3RpbmcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9OU0ZvbnRQYW5lbFRl
c3RpbmcubW0KaW5kZXggNjgxZDFkNTc4YjBhMmZmNDQxZmQxOTBlNzc5MTliMTdjYmRkZWQ3Zi4u
M2QwZWJlNmRmNzg3Mzc5MjljNTExNzk5OGVjNTMxYzUzMDM3NzY3MiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9tYWMvTlNGb250UGFuZWxUZXN0aW5nLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvbWFjL05TRm9udFBhbmVsVGVzdGluZy5tbQpAQCAtNzAsOSArNzAsMjQgQEAg
c3RhdGljIE5TTWVudUl0ZW0gKmZpbmRNZW51SXRlbVdpdGhUaXRsZShOU1BvcFVwQnV0dG9uICpi
dXR0b24sIE5TU3RyaW5nICp0aXRsZSkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TlNCb3ggKj4o
cmVzdWx0KTsKIH0KIAorLSAoTlNQb3BVcEJ1dHRvbiAqKXVuZGVybGluZVRvb2xiYXJCdXR0b24K
K3sKKyAgICByZXR1cm4gKE5TUG9wVXBCdXR0b24gKilbc2VsZiBfdG9vbGJhckl0ZW1XaXRoSWRl
bnRpZmllcjpAIk5TRm9udFBhbmVsVW5kZXJsaW5lVG9vbGJhckl0ZW0iXS52aWV3OworfQorCist
IChOU1BvcFVwQnV0dG9uICopc3RyaWtlVGhyb3VnaFRvb2xiYXJCdXR0b24KK3sKKyAgICByZXR1
cm4gKE5TUG9wVXBCdXR0b24gKilbc2VsZiBfdG9vbGJhckl0ZW1XaXRoSWRlbnRpZmllcjpAIk5T
Rm9udFBhbmVsU3RyaWtldGhyb3VnaFRvb2xiYXJJdGVtIl0udmlldzsKK30KKworLSAoTlNDb2xv
cldlbGwgKilmb3JlZ3JvdW5kQ29sb3JUb29sYmFyQ29sb3JXZWxsCit7CisgICAgcmV0dXJuIChO
U0NvbG9yV2VsbCAqKVtzZWxmIF90b29sYmFySXRlbVdpdGhJZGVudGlmaWVyOkAiTlNGb250UGFu
ZWxUZXh0Q29sb3JUb29sYmFySXRlbSJdLnZpZXc7Cit9CisKIC0gKHZvaWQpY2hvb3NlVW5kZXJs
aW5lTWVudUl0ZW1XaXRoVGl0bGU6KE5TU3RyaW5nICopaXRlbVRpdGxlCiB7Ci0gICAgTlNQb3BV
cEJ1dHRvbiAqYnV0dG9uID0gKE5TUG9wVXBCdXR0b24gKilbc2VsZiBfdG9vbGJhckl0ZW1XaXRo
SWRlbnRpZmllcjpAIk5TRm9udFBhbmVsVW5kZXJsaW5lVG9vbGJhckl0ZW0iXS52aWV3OworICAg
IE5TUG9wVXBCdXR0b24gKmJ1dHRvbiA9IFtzZWxmIHVuZGVybGluZVRvb2xiYXJCdXR0b25dOwog
ICAgIFtidXR0b24gc2VsZWN0SXRlbTpmaW5kTWVudUl0ZW1XaXRoVGl0bGUoYnV0dG9uLCBpdGVt
VGl0bGUpXTsKICAgICBbc2VsZi5mb250RWZmZWN0c0JveCBfb3BlbkVmZmVjdHNCdXR0b246YnV0
dG9uXTsKICAgICBbc2VsZiBfZGlkQ2hhbmdlQXR0cmlidXRlc107CkBAIC04MCw3ICs5NSw3IEBA
IHN0YXRpYyBOU01lbnVJdGVtICpmaW5kTWVudUl0ZW1XaXRoVGl0bGUoTlNQb3BVcEJ1dHRvbiAq
YnV0dG9uLCBOU1N0cmluZyAqdGl0bGUpCiAKIC0gKHZvaWQpY2hvb3NlU3RyaWtlVGhyb3VnaE1l
bnVJdGVtV2l0aFRpdGxlOihOU1N0cmluZyAqKWl0ZW1UaXRsZQogewotICAgIE5TUG9wVXBCdXR0
b24gKmJ1dHRvbiA9IChOU1BvcFVwQnV0dG9uICopW3NlbGYgX3Rvb2xiYXJJdGVtV2l0aElkZW50
aWZpZXI6QCJOU0ZvbnRQYW5lbFN0cmlrZXRocm91Z2hUb29sYmFySXRlbSJdLnZpZXc7CisgICAg
TlNQb3BVcEJ1dHRvbiAqYnV0dG9uID0gW3NlbGYgc3RyaWtlVGhyb3VnaFRvb2xiYXJCdXR0b25d
OwogICAgIFtidXR0b24gc2VsZWN0SXRlbTpmaW5kTWVudUl0ZW1XaXRoVGl0bGUoYnV0dG9uLCBp
dGVtVGl0bGUpXTsKICAgICBbc2VsZi5mb250RWZmZWN0c0JveCBfb3BlbkVmZmVjdHNCdXR0b246
YnV0dG9uXTsKICAgICBbc2VsZiBfZGlkQ2hhbmdlQXR0cmlidXRlc107CkBAIC0xMDMsMTEgKzEx
OCwyMSBAQCBzdGF0aWMgTlNNZW51SXRlbSAqZmluZE1lbnVJdGVtV2l0aFRpdGxlKE5TUG9wVXBC
dXR0b24gKmJ1dHRvbiwgTlNTdHJpbmcgKnRpdGxlKQogICAgIHJldHVybiAoTlNTbGlkZXIgKilm
aW5kU3Vidmlld09mQ2xhc3MoW3NlbGYgX3Rvb2xiYXJJdGVtV2l0aElkZW50aWZpZXI6QCJOU0Zv
bnRQYW5lbFNoYWRvd09wYWNpdHlUb29sYmFySXRlbSJdLnZpZXcsIE5TU2xpZGVyLmNsYXNzKTsK
IH0KIAorLSAoTlNTbGlkZXIgKilzaGFkb3dMZW5ndGhTbGlkZXIKK3sKKyAgICByZXR1cm4gKE5T
U2xpZGVyICopZmluZFN1YnZpZXdPZkNsYXNzKFtzZWxmIF90b29sYmFySXRlbVdpdGhJZGVudGlm
aWVyOkAiTlNGb250UGFuZWxTaGFkb3dPZmZzZXRUb29sYmFySXRlbSJdLnZpZXcsIE5TU2xpZGVy
LmNsYXNzKTsKK30KKwogLSAoTlNCdXR0b24gKilzaGFkb3dUb2dnbGVCdXR0b24KIHsKICAgICBy
ZXR1cm4gKE5TQnV0dG9uICopW3NlbGYgX3Rvb2xiYXJJdGVtV2l0aElkZW50aWZpZXI6QCJOU0Zv
bnRQYW5lbFNoYWRvd1RvZ2dsZVRvb2xiYXJJdGVtIl0udmlldzsKIH0KIAorLSAoQk9PTCloYXNT
aGFkb3cKK3sKKyAgICByZXR1cm4gc2VsZi5zaGFkb3dUb2dnbGVCdXR0b24uc3RhdGUgPT0gTlND
b250cm9sU3RhdGVWYWx1ZU9uOworfQorCiAtICh2b2lkKXRvZ2dsZVNoYWRvdwogewogICAgIE5T
QnV0dG9uICpzaGFkb3dUb2dnbGVCdXR0b24gPSBzZWxmLnNoYWRvd1RvZ2dsZUJ1dHRvbjsKQEAg
LTExNSw2ICsxNDAsMTYgQEAgc3RhdGljIE5TTWVudUl0ZW0gKmZpbmRNZW51SXRlbVdpdGhUaXRs
ZShOU1BvcFVwQnV0dG9uICpidXR0b24sIE5TU3RyaW5nICp0aXRsZSkKICAgICBbc2VsZiBfZGlk
Q2hhbmdlQXR0cmlidXRlc107CiB9CiAKKy0gKGRvdWJsZSlzaGFkb3dMZW5ndGgKK3sKKyAgICBy
ZXR1cm4gc2VsZi5zaGFkb3dMZW5ndGhTbGlkZXIuZG91YmxlVmFsdWU7Cit9CisKKy0gKHZvaWQp
c2V0U2hhZG93TGVuZ3RoOihkb3VibGUpc2hhZG93TGVuZ3RoCit7CisgICAgc2VsZi5zaGFkb3dM
ZW5ndGhTbGlkZXIuZG91YmxlVmFsdWUgPSBzaGFkb3dMZW5ndGg7Cit9CisKIC0gKGRvdWJsZSlz
aGFkb3dPcGFjaXR5CiB7CiAgICAgcmV0dXJuIHNlbGYuc2hhZG93T3BhY2l0eVNsaWRlci5kb3Vi
bGVWYWx1ZTsKQEAgLTE0OCw2ICsxODMsMjMgQEAgc3RhdGljIE5TTWVudUl0ZW0gKmZpbmRNZW51
SXRlbVdpdGhUaXRsZShOU1BvcFVwQnV0dG9uICpidXR0b24sIE5TU3RyaW5nICp0aXRsZSkKICAg
ICByZXR1cm4gbmlsOwogfQogCistIChCT09MKWhhc1VuZGVybGluZQoreworICAgIE5TTWVudUl0
ZW0gKnNpbmdsZVVuZGVybGluZU1lbnVJdGVtID0gW3NlbGYudW5kZXJsaW5lVG9vbGJhckJ1dHRv
biBpdGVtQXRJbmRleDoyXTsKKyAgICByZXR1cm4gc2luZ2xlVW5kZXJsaW5lTWVudUl0ZW0uc3Rh
dGUgPT0gTlNDb250cm9sU3RhdGVWYWx1ZU9uOworfQorCistIChCT09MKWhhc1N0cmlrZVRocm91
Z2gKK3sKKyAgICBOU01lbnVJdGVtICpzaW5nbGVTdHJpa2VUaHJvdWdoTWVudUl0ZW0gPSBbc2Vs
Zi5zdHJpa2VUaHJvdWdoVG9vbGJhckJ1dHRvbiBpdGVtQXRJbmRleDoyXTsKKyAgICByZXR1cm4g
c2luZ2xlU3RyaWtlVGhyb3VnaE1lbnVJdGVtLnN0YXRlID09IE5TQ29udHJvbFN0YXRlVmFsdWVP
bjsKK30KKworLSAoTlNDb2xvciAqKWZvcmVncm91bmRDb2xvcgoreworICAgIHJldHVybiBzZWxm
LmZvcmVncm91bmRDb2xvclRvb2xiYXJDb2xvcldlbGwuY29sb3I7Cit9CisKIEBlbmQKIAogI2Vu
ZGlmIC8vIFBMQVRGT1JNKE1BQykgJiYgV0tfQVBJX0VOQUJMRUQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448137</attachid>
            <date>2021-12-31 15:57:12 -0800</date>
            <delta_ts>2022-01-01 13:28:15 -0800</delta_ts>
            <desc>Depends on #234770</desc>
            <filename>bug-190120-20211231155711.patch</filename>
            <type>text/plain</type>
            <size>42751</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NDk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDllNWFjMTY5MDFlOTFj
NzdiNjkxNDcxZDE5NmRlZGM1Yzc0MWM0ZC4uNzc5NmU2OTAyMDBiNWZiYjcwMTk3MjFiZTNlYTA1
MmExNjViN2JjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTEyLTMxICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gW1dL
Ml0gTlNGb250UGFuZWwgVUkgKGZvbnQgY29sb3IsIHRleHQgZGVjb3JhdGlvbnMsIGZvbnQgc2hh
ZG93KSBkb2Vzbid0IHVwZGF0ZSBvbiBzZWxlY3Rpb24gY2hhbmdlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAxMjAKKyAgICAgICAgcmRhcjovLzQ0
ODk3NDA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIGEgYm9vbGVhbiBgaGFzTXVsdGlwbGVGb250c2AgZmxhZyB0byBGb250QXR0cmlidXRlcywg
YW5kIHBhc3MgaXQgYXMgYW4gb3V0LXJlZmVyZW5jZSB3aGVuIGNvbXB1dGluZyB0aGUKKyAgICAg
ICAgZm9udCBhdCB0aGUgY3VycmVudCBzZWxlY3Rpb24uIFNlZSBXZWJLaXQvQ2hhbmdlTG9nIGZv
ciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3I6OmZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydCk6CisgICAg
ICAgICogZWRpdGluZy9Gb250QXR0cmlidXRlcy5oOgorCiAyMDIxLTEyLTMxICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZmFjdG9yIHNvbWUgQ29j
b2Etc3BlY2lmaWMgY29kZSBpbiBXZWJDb3JlOjpGb250QXR0cmlidXRlcyB0byBiZSBwbGF0Zm9y
bS1hZ25vc3RpYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCBkMGM2MTZhNTYyNWZjZWI2YmEyMzA2NjM2NzEzMzA1ODhh
MjU5NzI5Li5mNjk3YzNjZjlkNzAxZmNhM2M3ZmNiYjYyZTg2NjM2YmRiNTY5NjY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDcxIEBACisyMDIxLTEyLTMxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNp
ZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gW1dLMl0gTlNGb250UGFuZWwgVUkgKGZv
bnQgY29sb3IsIHRleHQgZGVjb3JhdGlvbnMsIGZvbnQgc2hhZG93KSBkb2Vzbid0IHVwZGF0ZSBv
biBzZWxlY3Rpb24gY2hhbmdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTAxMjAKKyAgICAgICAgcmRhcjovLzQ0ODk3NDA1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudGx5LCBpbiBXZWJLaXQy
LCB0aGVyZSBpcyBubyBtZWNoYW5pc20gZm9yIHVwZGF0aW5nIHRoZSBOU0ZvbnRNYW5hZ2VyIHdp
dGggbmV3IGZvbnQgYXR0cmlidXRlcyB3aGVuIHRoZQorICAgICAgICBzZWxlY3Rpb24gY2hhbmdl
cy4gV2hpbGUgd2UgZG8gdXBkYXRlIHRoZSBzZWxlY3RlZCBOU0ZvbnQsIHdlIGRvIHNvIGJ5IHJl
cXVlc3RpbmcgZm9udCBmYW1pbHkgYW5kIGZvbnQgc2l6ZSB2aWEKKyAgICAgICAgYW4gSVBDIHJl
cXVlc3QsIGBGb250QXRTZWxlY3Rpb25gLCBidXQgdGhpcyBkb2VzIG5vdCBpbmNsdWRlIGF0dHJp
YnV0ZXMgbGlrZSB1bmRlcmxpbmUsIHN0cmlrZS10aHJvdWdoLCBjb2xvciwKKyAgICAgICAgYW5k
IHRleHQgc2hhZG93cy4KKworICAgICAgICBJbnN0ZWFkLCB3ZSBjYW4gcmVtb3ZlIHRoaXMgYEZv
bnRBdFNlbGVjdGlvbmAgSVBDIHJlcXVlc3QgbWVjaGFuaXNtIGVudGlyZWx5LCBhbmQgcmVxdWVz
dCBgRm9udEF0dHJpYnV0ZXNgLiBUaGlzCisgICAgICAgIGFsbG93cyB1cyB0byBzZXQgdGhlIGN1
cnJlbnRseSBzZWxlY3RlZCBOU0ZvbnQgb24gdGhlIE5TRm9udE1hbmFnZXIsIGFuZCBhbHNvIHVw
ZGF0ZSB0aGUgZm9udCBtYW5hZ2VyIHdpdGggdGhlCisgICAgICAgIGZ1bGwgZGljdGlvbmFyeSBv
ZiBmb250IGF0dHJpYnV0ZXMuCisKKyAgICAgICAgVGVzdDogRm9udEF0dHJpYnV0ZXMuRm9udEF0
dHJpYnV0ZXNBZnRlckNoYW5naW5nU2VsZWN0aW9uCisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxGb250QXR0
cmlidXRlcz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Rm9udEF0dHJp
YnV0ZXM+OjpkZWNvZGUpOgorCisgICAgICAgIEVuY29kZSBhbmQgZGVjb2RlIHRoZSBuZXcgYGhh
c011bHRpcGxlRm9udHNgIGZsYWcgaW4gRm9udEF0dHJpYnV0ZXMuIEFkZGl0aW9uYWxseSwgdGFr
ZSB0aGlzIG9wcG9ydHVuaXR5IHRvCisgICAgICAgIG1vZGVybml6ZSBzb21lIG9mIHRoZSBkZWNv
ZGluZy1zaWRlIGxvZ2ljIGJ5IGRlY29kaW5nIGVhY2ggbWVtYmVyIGludG8gYSBgc3RkOjpvcHRp
b25hbGAgYW5kIGNyZWF0aW5nIHRoZSBmaW5hbAorICAgICAgICBkZXNlcmlhbGl6ZWQgRm9udEF0
dHJpYnV0ZXMgYXQgdGhlIGVuZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnVwZGF0ZUZvbnRNYW5hZ2Vy
SWZOZWVkZWQpOgorCisgICAgICAgIFJhdGhlciB0aGFuIGdyYWJiaW5nIGp1c3QgdGhlIGZvbnQg
ZmFtaWx5IGFuZCBmb250IHNpemUgdXNpbmcgYGZvbnRBdFNlbGVjdGlvbmAsIHJlcXVlc3QgRm9u
dEF0dHJpYnV0ZXMgaW5zdGVhZAorICAgICAgICBhbmQgY29udmVydCBpdCB0byBhIE5TRGljdGlv
bmFyeSB0byBjYWxsIGAtW05TRm9udE1hbmFnZXIgc2V0U2VsZWN0ZWRBdHRyaWJ1dGVzOmlzTXVs
dGlwbGU6XWAuCisKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnR5cGluZ0F0dHJpYnV0
ZXNXaXRoQ29tcGxldGlvbkhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
Y2hhbmdlRm9udEF0dHJpYnV0ZXNGcm9tU2VuZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OmNoYW5nZUZvbnRGcm9tRm9udE1hbmFnZXIpOgorCisgICAgICAgIFJlbW92ZSBjb2Rl
IHRvIHVwZGF0ZSB0aGUgZm9udCBtYW5hZ2VyIGFmdGVyIGNoYW5naW5nIGZvbnQgYXR0cmlidXRl
cy4gVGhpcyBpcyB1bm5lY2Vzc2FyeSBiZWNhdXNlIHRoZSBwcm9jZXNzCisgICAgICAgIG9mIGV4
ZWN1dGluZyBhbiBlZGl0IGNvbW1hbmQgaW4gb3JkZXIgdG8gY2hhbmdlIHR5cGluZyBzdHlsZSB3
aWxsIHRyaWdnZXIgYW4gZWRpdG9yIHN0YXRlIHVwZGF0ZSBhbnl3YXlzLCB3aGljaAorICAgICAg
ICB0aGVuIGNhdXNlcyB1cyB0byByZXF1ZXN0IG5ldyBmb250IGF0dHJpYnV0ZXMuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpyZXF1ZXN0Rm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KToKKworICAgICAg
ICBNb3ZlIHRoZSBjaGVjayBmb3IgY2FjaGVkIGZvbnRhdHRyaWJ1dGVzIHRvIFdlYlBhZ2VQcm94
eSwgZnJvbSBXZWJWaWV3SW1wbC4gVGhpcyBhbGxvd3MgdXMgdG8gZ2V0IHJpZCBvZiBhCisgICAg
ICAgIGhlbHBlciBmdW5jdGlvbiBvbiBXZWJQYWdlUHJveHkgdG8gZ3JhYiB0aGUgY3VycmVudCBj
YWNoZWQgZm9udCBhdHRyaWJ1dGVzLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFVwZGF0ZUVkaXRvclN0YXRlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkaWRVcGRhdGVFZGl0b3JTdGF0ZSk6CisKKyAgICAgICAgU2V0IGNhY2hlZCBG
b250QXR0cmlidXRlcyAoaWYgcHJlc2VudCkgKnByaW9yKiB0byBkaXNwYXRjaGluZyBhIHNlbGVj
dGlvbiBjaGFuZ2UuIFRoaXMgYWxsb3dzIGFueSBzdWJzZXF1ZW50CisgICAgICAgIHJlcXVlc3Qg
Zm9yIGZvbnQgYXR0cmlidXRlcyBhdCB0aGUgc2VsZWN0aW9uIHRvIHJldHVybiBpbW1lZGlhdGVs
eSB3aXRoIHRoZSByZXN1bHQuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpmb250
QXRTZWxlY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46
CisKKyAgICAgICAgUmVtb3ZlIHRoZSBgRm9udEF0U2VsZWN0aW9uQ2FsbGJhY2tgIElQQyBtZXNz
YWdlIChhbmQgYWxsIGFzc29jaWF0ZWQgY29kZSkuIFRoaXMgY29kZXBhdGggd2FzIHByZXZpb3Vz
bHkgb25seQorICAgICAgICBleGVyY2lzZWQgd2hlbiB1cGRhdGluZyB0aGUgZm9udCBwYW5lbCBv
biBtYWNPUywgYW5kIGlzIG5vIGxvbmdlciBuZWNlc3NhcnkgYmVjYXVzZSB3ZSBqdXN0IHVzZQor
ICAgICAgICBgcmVxdWVzdEZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydGAgaW5zdGVhZCwg
d2hpY2ggYWxsb3dzIHVzIHRvIGdyYWIgbm90IG9ubHkgdGhlIE5TRm9udCwgYnV0IGFsc28gYWxs
CisgICAgICAgIHBsYXRmb3JtIHR5cGluZyBhdHRyaWJ1dGVzIGF0IHRoZSBzZWxlY3Rpb24uCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OmZvbnRBdFNlbGVjdGlvbik6IERlbGV0ZWQuCisKIDIwMjEtMTIt
MzEgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVm
YWN0b3Igc29tZSBDb2NvYS1zcGVjaWZpYyBjb2RlIGluIFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVz
IHRvIGJlIHBsYXRmb3JtLWFnbm9zdGljCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXgg
YzUyN2UyNzczOTA4ODliZWI4NTEzNDI0YjMxNzk1YWFlMWQxMDE1OC4uMGRmYWI2ZmJmZmM0ODM2
OGVkOWVhNjU3ZWNiOGQ4YjMxMWNhZTEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApA
QCAtNDA0MSw4ICs0MDQxLDcgQEAgc3RhdGljIFZlY3RvcjxUZXh0TGlzdD4gZWRpdGFibGVUZXh0
TGlzdHNBdFBvc2l0aW9uSW5EZXNjZW5kaW5nT3JkZXIoY29uc3QgUG9zaXQKIEZvbnRBdHRyaWJ1
dGVzIEVkaXRvcjo6Zm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KCkKIHsKICAgICBGb250
QXR0cmlidXRlcyBhdHRyaWJ1dGVzOwotICAgIGJvb2wgaGFzTXVsdGlwbGVGb250cyA9IGZhbHNl
OyAvLyBGSVhNRSAoMTkwMTIwKTogQWRkIGBoYXNNdWx0aXBsZUZvbnRzYCBhcyBhIG1lbWJlciBp
biBgRm9udEF0dHJpYnV0ZXNgLgotICAgIGF0dHJpYnV0ZXMuZm9udCA9IGZvbnRGb3JTZWxlY3Rp
b24oaGFzTXVsdGlwbGVGb250cyk7CisgICAgYXR0cmlidXRlcy5mb250ID0gZm9udEZvclNlbGVj
dGlvbihhdHRyaWJ1dGVzLmhhc011bHRpcGxlRm9udHMpOwogCiAgICAgUmVmUHRyPE5vZGU+IG5v
ZGVUb1JlbW92ZTsKICAgICBhdXRvIG5vZGVSZW1vdmFsU2NvcGUgPSBtYWtlU2NvcGVFeGl0KFsm
bm9kZVRvUmVtb3ZlXSgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9u
dEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0ZXMuaApp
bmRleCA5MWRlNDQ1MzBjMWQ4YWYzNTVkZGFiYzNkYWYxMDBlZGUxOTViMTIzLi42NzQ1ZjEwN2Yx
YjA4MTNiODAwZDgwNTZmMWM4NGM3YWUwNTJhZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0ZvbnRBdHRyaWJ1dGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9G
b250QXR0cmlidXRlcy5oCkBAIC05MCw2ICs5MCw3IEBAIHN0cnVjdCBGb250QXR0cmlidXRlcyB7
CiAgICAgVmVjdG9yPFRleHRMaXN0PiB0ZXh0TGlzdHM7CiAgICAgYm9vbCBoYXNVbmRlcmxpbmUg
eyBmYWxzZSB9OwogICAgIGJvb2wgaGFzU3RyaWtlVGhyb3VnaCB7IGZhbHNlIH07CisgICAgYm9v
bCBoYXNNdWx0aXBsZUZvbnRzIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmlu
ZGV4IGVhNTlmMDg5MTZkZDczZTcyNzc4Yjc4ZGVlOTY3MDcxMTg1NDg1ZWIuLjYwMzVkMDExN2M5
NjJkYWY2Y2Q1Nzg3NzkwODBlMWMyYWFiOTAzZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMjkzMiw3ICsyOTMyLDEzIEBAIHN0ZDo6
b3B0aW9uYWw8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+Pjo6ZGVjCiAKIHZvaWQgQXJndW1lbnRDb2RlcjxGb250QXR0cmlidXRlcz46
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBGb250QXR0cmlidXRlcyYgYXR0cmlidXRl
cykKIHsKLSAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuYmFja2dyb3VuZENvbG9yIDw8IGF0dHJp
YnV0ZXMuZm9yZWdyb3VuZENvbG9yIDw8IGF0dHJpYnV0ZXMuZm9udFNoYWRvdyA8PCBhdHRyaWJ1
dGVzLmhhc1VuZGVybGluZSA8PCBhdHRyaWJ1dGVzLmhhc1N0cmlrZVRocm91Z2ggPDwgYXR0cmli
dXRlcy50ZXh0TGlzdHM7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmJhY2tncm91bmRDb2xv
cjsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuZm9yZWdyb3VuZENvbG9yOworICAgIGVuY29k
ZXIgPDwgYXR0cmlidXRlcy5mb250U2hhZG93OworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5o
YXNVbmRlcmxpbmU7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmhhc1N0cmlrZVRocm91Z2g7
CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmhhc011bHRpcGxlRm9udHM7CisgICAgZW5jb2Rl
ciA8PCBhdHRyaWJ1dGVzLnRleHRMaXN0czsKICAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuaG9y
aXpvbnRhbEFsaWdubWVudDsKICAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuc3Vic2NyaXB0T3JT
dXBlcnNjcmlwdDsKICAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuZm9udDsKQEAgLTI5NDAsMzAg
KzI5NDYsNDkgQEAgdm9pZCBBcmd1bWVudENvZGVyPEZvbnRBdHRyaWJ1dGVzPjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IEZvbnRBdHRyaWJ1dGUKIAogc3RkOjpvcHRpb25hbDxGb250
QXR0cmlidXRlcz4gQXJndW1lbnRDb2RlcjxGb250QXR0cmlidXRlcz46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogewotICAgIEZvbnRBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7CisgICAgc3RkOjpv
cHRpb25hbDxDb2xvcj4gYmFja2dyb3VuZENvbG9yOworICAgIGRlY29kZXIgPj4gYmFja2dyb3Vu
ZENvbG9yOworICAgIGlmICghYmFja2dyb3VuZENvbG9yKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmJhY2tncm91bmRD
b2xvcikpCisgICAgc3RkOjpvcHRpb25hbDxDb2xvcj4gZm9yZWdyb3VuZENvbG9yOworICAgIGRl
Y29kZXIgPj4gZm9yZWdyb3VuZENvbG9yOworICAgIGlmICghZm9yZWdyb3VuZENvbG9yKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRy
aWJ1dGVzLmZvcmVncm91bmRDb2xvcikpCisgICAgc3RkOjpvcHRpb25hbDxGb250U2hhZG93PiBm
b250U2hhZG93OworICAgIGRlY29kZXIgPj4gZm9udFNoYWRvdzsKKyAgICBpZiAoIWZvbnRTaGFk
b3cpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGF0dHJpYnV0ZXMuZm9udFNoYWRvdykpCisgICAgc3RkOjpvcHRpb25hbDxib29sPiBoYXNV
bmRlcmxpbmU7CisgICAgZGVjb2RlciA+PiBoYXNVbmRlcmxpbmU7CisgICAgaWYgKCFoYXNVbmRl
cmxpbmUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGF0dHJpYnV0ZXMuaGFzVW5kZXJsaW5lKSkKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+
IGhhc1N0cmlrZVRocm91Z2g7CisgICAgZGVjb2RlciA+PiBoYXNTdHJpa2VUaHJvdWdoOworICAg
IGlmICghaGFzU3RyaWtlVGhyb3VnaCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5oYXNTdHJpa2VUaHJvdWdoKSkKKyAg
ICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGhhc011bHRpcGxlRm9udHM7CisgICAgZGVjb2RlciA+PiBo
YXNNdWx0aXBsZUZvbnRzOworICAgIGlmICghaGFzTXVsdGlwbGVGb250cykKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy50
ZXh0TGlzdHMpKQorICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFRleHRMaXN0Pj4gdGV4dExpc3Rz
OworICAgIGRlY29kZXIgPj4gdGV4dExpc3RzOworICAgIGlmICghdGV4dExpc3RzKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1
dGVzLmhvcml6b250YWxBbGlnbm1lbnQpKQorICAgIHN0ZDo6b3B0aW9uYWw8Rm9udEF0dHJpYnV0
ZXM6Okhvcml6b250YWxBbGlnbm1lbnQ+IGhvcml6b250YWxBbGlnbm1lbnQ7CisgICAgZGVjb2Rl
ciA+PiBob3Jpem9udGFsQWxpZ25tZW50OworICAgIGlmICghaG9yaXpvbnRhbEFsaWdubWVudCkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
YXR0cmlidXRlcy5zdWJzY3JpcHRPclN1cGVyc2NyaXB0KSkKKyAgICBzdGQ6Om9wdGlvbmFsPEZv
bnRBdHRyaWJ1dGVzOjpTdWJzY3JpcHRPclN1cGVyc2NyaXB0PiBzdWJzY3JpcHRPclN1cGVyc2Ny
aXB0OworICAgIGRlY29kZXIgPj4gc3Vic2NyaXB0T3JTdXBlcnNjcmlwdDsKKyAgICBpZiAoIXN1
YnNjcmlwdE9yU3VwZXJzY3JpcHQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxGb250Pj4gZm9udDsKQEAgLTI5NzEsOSArMjk5Niw3IEBA
IHN0ZDo6b3B0aW9uYWw8Rm9udEF0dHJpYnV0ZXM+IEFyZ3VtZW50Q29kZXI8Rm9udEF0dHJpYnV0
ZXM+OjpkZWNvZGUoRGVjb2RlciYgZGVjCiAgICAgaWYgKCFmb250KQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCi0gICAgYXR0cmlidXRlcy5mb250ID0gV1RGTW92ZSgqZm9udCk7Ci0K
LSAgICByZXR1cm4gYXR0cmlidXRlczsKKyAgICByZXR1cm4geyB7IFdURk1vdmUoKmZvbnQpLCBX
VEZNb3ZlKCpiYWNrZ3JvdW5kQ29sb3IpLCBXVEZNb3ZlKCpmb3JlZ3JvdW5kQ29sb3IpLCBXVEZN
b3ZlKCpmb250U2hhZG93KSwgKnN1YnNjcmlwdE9yU3VwZXJzY3JpcHQsICpob3Jpem9udGFsQWxp
Z25tZW50LCBXVEZNb3ZlKCp0ZXh0TGlzdHMpLCAqaGFzVW5kZXJsaW5lLCAqaGFzU3RyaWtlVGhy
b3VnaCwgKmhhc011bHRpcGxlRm9udHMgfSB9OwogfQogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRf
RUxFTUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0K
aW5kZXggMjkwMjYzMjkzNjRkODRjM2RkYzE5ODJmM2E0MDkzZDEwMDI0NDMwOC4uNTE0ZDJmMjQ5
ZDhkM2YxNDAwYjEzYTQ1YjQ0NjM2NjFkMTM0MzU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTMwNTUsMzIgKzMwNTUsMTcgQEAgdm9pZCBX
ZWJWaWV3SW1wbDo6dXBkYXRlRm9udE1hbmFnZXJJZk5lZWRlZCgpCiAgICAgaWYgKCFmb250UGFu
ZWxJc1Zpc2libGUgJiYgIW1fcGFnZS0+ZWRpdG9yU3RhdGUoKS5pc0NvbnRlbnRSaWNobHlFZGl0
YWJsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLT5mb250QXRTZWxlY3Rpb24oW10o
Y29uc3QgRm9udEluZm8mIGZvbnRJbmZvLCBkb3VibGUgZm9udFNpemUsIGJvb2wgc2VsZWN0aW9u
SGFzTXVsdGlwbGVGb250cykgewotCi0gICAgICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwotCi0gICAgICAgIE5TRGljdGlvbmFyeSAqYXR0cmlidXRlRGljdGlvbmFyeSA9IChfX2JyaWRn
ZSBOU0RpY3Rpb25hcnkgKilmb250SW5mby5mb250QXR0cmlidXRlRGljdGlvbmFyeS5nZXQoKTsK
LSAgICAgICAgaWYgKCFhdHRyaWJ1dGVEaWN0aW9uYXJ5KQotICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIGF1dG8gZm9udCA9IGZvbnRXaXRoQXR0cmlidXRlcyhhdHRyaWJ1dGVEaWN0aW9u
YXJ5LCBmb250U2l6ZSk7Ci0gICAgICAgIGlmICghZm9udCkKLSAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICBbTlNGb250TWFuYWdlci5zaGFyZWRGb250TWFuYWdlciBzZXRTZWxlY3RlZEZv
bnQ6Zm9udCBpc011bHRpcGxlOnNlbGVjdGlvbkhhc011bHRpcGxlRm9udHNdOwotCi0gICAgICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBtX3BhZ2UtPnJlcXVlc3RGb250QXR0cmli
dXRlc0F0U2VsZWN0aW9uU3RhcnQoW10gKGF1dG8mIGF0dHJpYnV0ZXMpIHsKKyAgICAgICAgYXV0
byBhdHRyaWJ1dGVzRGljdGlvbmFyeSA9IGF0dHJpYnV0ZXMuY3JlYXRlRGljdGlvbmFyeSgpOwor
ICAgICAgICBpZiAoTlNGb250ICpuc0ZvbnQgPSBbYXR0cmlidXRlc0RpY3Rpb25hcnkgb2JqZWN0
Rm9yS2V5Ok5TRm9udEF0dHJpYnV0ZU5hbWVdKSB7CisgICAgICAgICAgICBbTlNGb250TWFuYWdl
ci5zaGFyZWRGb250TWFuYWdlciBzZXRTZWxlY3RlZEZvbnQ6bnNGb250IGlzTXVsdGlwbGU6YXR0
cmlidXRlcy5oYXNNdWx0aXBsZUZvbnRzXTsKKyAgICAgICAgICAgIFtOU0ZvbnRNYW5hZ2VyLnNo
YXJlZEZvbnRNYW5hZ2VyIHNldFNlbGVjdGVkQXR0cmlidXRlczphdHRyaWJ1dGVzRGljdGlvbmFy
eS5nZXQoKSBpc011bHRpcGxlOmF0dHJpYnV0ZXMuaGFzTXVsdGlwbGVGb250c107CisgICAgICAg
IH0KICAgICB9KTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6dHlwaW5nQXR0cmlidXRlc1dpdGhD
b21wbGV0aW9uSGFuZGxlcih2b2lkKF5jb21wbGV0aW9uKShOU0RpY3Rpb25hcnk8TlNTdHJpbmcg
KiwgaWQ+ICopKQogewotICAgIGlmIChhdXRvIGF0dHJpYnV0ZXMgPSBtX3BhZ2UtPmNhY2hlZEZv
bnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydCgpKSB7Ci0gICAgICAgIGF1dG8gYXR0cmlidXRl
c0FzRGljdGlvbmFyeSA9IGF0dHJpYnV0ZXMtPmNyZWF0ZURpY3Rpb25hcnkoKTsKLSAgICAgICAg
Y29tcGxldGlvbihhdHRyaWJ1dGVzQXNEaWN0aW9uYXJ5LmdldCgpKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQogICAgIG1fcGFnZS0+cmVxdWVzdEZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25T
dGFydChbY29tcGxldGlvbiA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uKV0gKGNvbnN0IFdlYkNv
cmU6OkZvbnRBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKSB7CiAgICAgICAgIGF1dG8gYXR0cmlidXRl
c0FzRGljdGlvbmFyeSA9IGF0dHJpYnV0ZXMuY3JlYXRlRGljdGlvbmFyeSgpOwogICAgICAgICBj
b21wbGV0aW9uKGF0dHJpYnV0ZXNBc0RpY3Rpb25hcnkuZ2V0KCkpOwpAQCAtMzExMiw3ICszMDk3
LDYgQEAgdm9pZCBXZWJWaWV3SW1wbDo6Y2hhbmdlRm9udEF0dHJpYnV0ZXNGcm9tU2VuZGVyKGlk
IHNlbmRlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9wYWdlLT5jaGFuZ2VGb250QXR0cmli
dXRlcyhXZWJDb3JlOjpjb21wdXRlZEZvbnRBdHRyaWJ1dGVDaGFuZ2VzKE5TRm9udE1hbmFnZXIu
c2hhcmVkRm9udE1hbmFnZXIsIHNlbmRlcikpOwotICAgIHVwZGF0ZUZvbnRNYW5hZ2VySWZOZWVk
ZWQoKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6Y2hhbmdlRm9udEZyb21Gb250TWFuYWdlcigp
CkBAIC0zMTIyLDcgKzMxMDYsNiBAQCB2b2lkIFdlYlZpZXdJbXBsOjpjaGFuZ2VGb250RnJvbUZv
bnRNYW5hZ2VyKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9wYWdlLT5jaGFuZ2VGb250KFdl
YkNvcmU6OmNvbXB1dGVkRm9udENoYW5nZXMoTlNGb250TWFuYWdlci5zaGFyZWRGb250TWFuYWdl
cikpOwotICAgIHVwZGF0ZUZvbnRNYW5hZ2VySWZOZWVkZWQoKTsKIH0KIAogc3RhdGljIE5TTWVu
dUl0ZW0gKm1lbnVJdGVtKGlkIDxOU1ZhbGlkYXRlZFVzZXJJbnRlcmZhY2VJdGVtPiBpdGVtKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYjc5MDMyOTUyMjFk
NzFkOTc5ZjQ4YjZkNjZmNmZhYTc3NTEyN2IwMi4uNTE3ZjYyMDdkYzU2OWIxYWY0OWNiNjRhODAy
MjQ1ZjAyNDY5M2Q0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CkBAIC0yNTYyLDYgKzI1NjIsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RGb250QXR0
cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgKICAgICBpZiAo
IWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybiBjYWxsYmFjayh7IH0pOwogCisg
ICAgaWYgKGF1dG8gYXR0cmlidXRlcyA9IG1fY2FjaGVkRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlv
blN0YXJ0KSB7CisgICAgICAgIGNhbGxiYWNrKCphdHRyaWJ1dGVzKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKwogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6UmVx
dWVzdEZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydCgpLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH0sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChjb25zdCBX
ZWJDb3JlOjpGb250QXR0cmlidXRlcyYgYXR0cmlidXRlcykgbXV0YWJsZSB7CiAgICAgICAgIG1f
Y2FjaGVkRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0ID0gYXR0cmlidXRlczsKICAgICAg
ICAgY2FsbGJhY2soYXR0cmlidXRlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IDY2YjQxMjY5MWNmNzQ0NzExNDQ4MDE0ZDU4OTkzN2Y2OWY2ODk3ZTAuLjZmMzU0
OTMzYjExZmFhMDg1NzU1NTIyYzQ3YmY3ZWUzMTdmZTk3MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC03OTIsOCArNzkyLDYgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihXZWJDb3JlOjpXcml0aW5nRGlyZWN0aW9uKTsKIAot
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXM+IGNhY2hlZEZvbnRBdHRy
aWJ1dGVzQXRTZWxlY3Rpb25TdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkRm9udEF0dHJp
YnV0ZXNBdFNlbGVjdGlvblN0YXJ0OyB9Ci0KICNpZiBIQVZFKFRPVUNIX0JBUikKICAgICBjb25z
dCBUb3VjaEJhck1lbnVEYXRhJiB0b3VjaEJhck1lbnVEYXRhKCkgY29uc3QgeyByZXR1cm4gbV90
b3VjaEJhck1lbnVEYXRhOyB9CiAjZW5kaWYKQEAgLTk5NSw3ICs5OTMsNiBAQCBwdWJsaWM6CiAK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBhdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFj
dGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmcmLCBjb25zdCBFZGl0aW5nUmFuZ2UmKT4m
Jik7Ci0gICAgdm9pZCBmb250QXRTZWxlY3Rpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBGb250SW5mbyYsIGRvdWJsZSwgYm9vbCk+JiYpOwogCiAgICAgdm9pZCBzdGFydFdpbmRvd0Ry
YWcoKTsKICAgICBOU1dpbmRvdyAqcGxhdGZvcm1XaW5kb3coKTsKQEAgLTIzNTMsOSArMjM1MCw2
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZFJlY2VpdmVFdmVudCh1aW50MzJfdCBvcGFxdWVU
eXBlLCBib29sIGhhbmRsZWQpOwogICAgIHZvaWQgZGlkVXBkYXRlUmVuZGVyaW5nQWZ0ZXJDb21t
aXR0aW5nTG9hZCgpOwotI2lmIFBMQVRGT1JNKE1BQykKLSAgICB2b2lkIGZvbnRBdFNlbGVjdGlv
bkNhbGxiYWNrKGNvbnN0IEZvbnRJbmZvJiwgZG91YmxlLCBib29sLCBDYWxsYmFja0lEKTsKLSNl
bmRpZgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBpbnRlcnByZXRLZXlFdmVu
dChjb25zdCBFZGl0b3JTdGF0ZSYsIGJvb2wgaXNDaGFyRXZlbnQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wg
aGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJDb3JlOjpS
b3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggODI5OGJlYjg1N2MyYzVhN2JmNjRj
MTg0ZmFkOGEwZWVjZTMyMGExMC4uYTEzYjcyY2JlZTBmYTIxODJmYWY3MWNlZWViZWRhY2I1YTdl
YWFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tCkBAIC0xMDUxLDEwICsxMDUxLDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRVcGRhdGVF
ZGl0b3JTdGF0ZShjb25zdCBFZGl0b3JTdGF0ZSYgb2xkRWRpdG9yU3RhdGUsIGNvbnN0CiAgICAg
aWYgKG5ld0VkaXRvclN0YXRlLnNob3VsZElnbm9yZVNlbGVjdGlvbkNoYW5nZXMpCiAgICAgICAg
IHJldHVybjsKICAgICAKKyAgICB1cGRhdGVGb250QXR0cmlidXRlc0FmdGVyRWRpdG9yU3RhdGVD
aGFuZ2UoKTsKICAgICAvLyBXZSBhbHdheXMgbmVlZCB0byBub3RpZnkgdGhlIGNsaWVudCBvbiBp
T1MgdG8gbWFrZSBzdXJlIHRoZSBzZWxlY3Rpb24gaXMgcmVkcmF3biwKICAgICAvLyBldmVuIGR1
cmluZyBjb21wb3NpdGlvbiB0byBzdXBwb3J0IHBocmFzZSBib3VuZGFyeSBnZXN0dXJlLgogICAg
IHBhZ2VDbGllbnQoKS5zZWxlY3Rpb25EaWRDaGFuZ2UoKTsKLSAgICB1cGRhdGVGb250QXR0cmli
dXRlc0FmdGVyRWRpdG9yU3RhdGVDaGFuZ2UoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRp
c3BhdGNoRGlkVXBkYXRlRWRpdG9yU3RhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggNmE0MTZkMzA5MjM5NzU3ZDk3M2YwNDU2MWY0
M2NjY2FmYjhiYTNmZi4uYjc4YzcxODc1MTllYjFlZmQyZGQ3YzUyMzgxYmRjZTFjZjYwYjI3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBA
IC0yMDYsMTYgKzIwNiw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjphdHRyaWJ1dGVkU3Vic3RyaW5n
Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmCiAgICAgc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpBdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFj
dGVyUmFuZ2VBc3luYyhyYW5nZSksIFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogfQogCi12
b2lkIFdlYlBhZ2VQcm94eTo6Zm9udEF0U2VsZWN0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgRm9udEluZm8mLCBkb3VibGUsIGJvb2wpPiYmIGNhbGxiYWNrKQotewotICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBjYWxsYmFjayh7IH0sIDAsIGZhbHNlKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6V2ViUGFnZTo6Rm9udEF0U2VsZWN0aW9uKCksIFdURk1vdmUoY2FsbGJhY2spKTsKLX0KLQog
U3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiB7CiAg
ICAgU3RyaW5nIHZhbHVlOwpAQCAtNTczLDkgKzU2Myw5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRVcGRhdGVFZGl0b3JTdGF0ZShjb25zdCBFZGl0b3JTdGF0ZSYgb2xkRWRpdG9yU3RhdGUsIGNv
bnN0CiAgICAgCiAgICAgaWYgKG5ld0VkaXRvclN0YXRlLnNob3VsZElnbm9yZVNlbGVjdGlvbkNo
YW5nZXMpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBwYWdlQ2xpZW50KCkuc2VsZWN0aW9u
RGlkQ2hhbmdlKCk7CisKICAgICB1cGRhdGVGb250QXR0cmlidXRlc0FmdGVyRWRpdG9yU3RhdGVD
aGFuZ2UoKTsKKyAgICBwYWdlQ2xpZW50KCkuc2VsZWN0aW9uRGlkQ2hhbmdlKCk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpzdGFydFdpbmRvd0RyYWcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGE5NGI1YjlkN2ZlMzJmMjRhODZkYWFhZDQ0ODQy
YjBjZGQwYWViMmYuLjVlYTY0ZmU0MDY1N2QxMTQwYTA1YjYzZjZlYjVhMjc0NGZiMDg4OTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTk1Niw3ICs5
NTYsNiBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBhdHRyaWJ1dGVk
U3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmcmLCBjb25z
dCBFZGl0aW5nUmFuZ2UmKT4mJik7Ci0gICAgdm9pZCBmb250QXRTZWxlY3Rpb24oQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBGb250SW5mbyYsIGRvdWJsZSwgYm9vbCk+JiYpOwogICAgIHZv
aWQgcmVxdWVzdEFjY2VwdHNGaXJzdE1vdXNlKGludCBldmVudE51bWJlciwgY29uc3QgV2ViS2l0
OjpXZWJNb3VzZUV2ZW50Jik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggYjI3MjI5NDcxZWFlODZl
ZTU5ODE5ODNkZDU3YjVlN2E4MjkxY2Q0Yi4uZmIwNzhkMDE3NGJjNzAzOTk0MGNiNGM3NjVlNTc3
MjdiMDQ3N2FlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00NzEsNyArNDcxLDYgQEAgR2VuZXJhdGVTeW50aGV0
aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29t
bWFuZFR5cGUKICNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBBdHRyaWJ1dGVkU3Vic3Ry
aW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmFu
Z2UpIC0+IChzdHJ1Y3QgV2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZyBzdHJpbmcsIHN0cnVjdCBX
ZWJLaXQ6OkVkaXRpbmdSYW5nZSByYW5nZSkgQXN5bmMKLSAgICBGb250QXRTZWxlY3Rpb24oKSAt
PiAoc3RydWN0IFdlYktpdDo6Rm9udEluZm8gZm9udEluZm8sIGRvdWJsZSBmb250U2l6ZSwgYm9v
bCBzZWxlY3Rpb25IYXNNdWx0aXBsZUZvbnRzKSBBc3luYwogICAgIFJlcXVlc3RBY2NlcHRzRmly
c3RNb3VzZShpbnQgZXZlbnROdW1iZXIsIFdlYktpdDo6V2ViTW91c2VFdmVudCBldmVudCkKICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQ
YWdlTWFjLm1tCmluZGV4IGIxZWUwMTNlOGIwZjUzYjBkN2M1ZDhlMTE3MDkzY2JkMDFhZGI1YTku
LjNlMzQwOWZiOTQ4ZTBiZTcxMGUzMTI0NzJlN2VmNGQwNzZiZWE0ZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC0zNTks
MzkgKzM1OSw2IEBAIHZvaWQgV2ViUGFnZTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3Rl
clJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiBlZGl0CiAgICAgY29tcGxldGlvbkhhbmRs
ZXIoeyBXVEZNb3ZlKGF0dHJpYnV0ZWRTdHJpbmcpLCBuaWwgfSwgcmFuZ2VUb1NlbmQpOwogfQog
Ci12b2lkIFdlYlBhZ2U6OmZvbnRBdFNlbGVjdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IEZvbnRJbmZvJiwgZG91YmxlLCBib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAg
ICBib29sIHNlbGVjdGlvbkhhc011bHRpcGxlRm9udHMgPSBmYWxzZTsKLSAgICBhdXRvJiBmcmFt
ZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0KLSAg
ICBpZiAoZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNOb25lKCkpIHsKLSAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoeyB9LCAwLCBmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBhdXRvIGZvbnQgPSBmcmFtZS5lZGl0b3IoKS5mb250Rm9yU2VsZWN0aW9uKHNlbGVj
dGlvbkhhc011bHRpcGxlRm9udHMpOwotICAgIGlmICghZm9udCkgewotICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcih7IH0sIDAsIGZhbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGF1dG8gY3RGb250ID0gZm9udC0+Z2V0Q1RGb250KCk7Ci0gICAgaWYgKCFjdEZvbnQpIHsKLSAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCAwLCBmYWxzZSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBhdXRvIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnRDb3B5Rm9u
dERlc2NyaXB0b3IoY3RGb250KSk7Ci0gICAgaWYgKCFmb250RGVzY3JpcHRvcikgewotICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIDAsIGZhbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ29w
eUF0dHJpYnV0ZXMoZm9udERlc2NyaXB0b3IuZ2V0KCkpKSB9LCBDVEZvbnRHZXRTaXplKGN0Rm9u
dCksIHNlbGVjdGlvbkhhc011bHRpcGxlRm9udHMpOwotfQotICAgIAotCi0KICNpZiBFTkFCTEUo
UERGS0lUX1BMVUdJTikKIAogRGljdGlvbmFyeVBvcHVwSW5mbyBXZWJQYWdlOjpkaWN0aW9uYXJ5
UG9wdXBJbmZvRm9yU2VsZWN0aW9uSW5QREZQbHVnaW4oUERGU2VsZWN0aW9uICpzZWxlY3Rpb24s
IFBERlBsdWdpbiYgcGRmUGx1Z2luLCBOU0RpY3Rpb25hcnkgKm9wdGlvbnMsIFdlYkNvcmU6OlRl
eHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uIHByZXNlbnRhdGlvblRyYW5zaXRpb24p
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2Y5
NGI5ZDNmNjBjZjZhY2I4MTcxMWE3ZTRlOThiZmIwNTgxN2JkYS4uZDBjMzYwMjg5MTcyNmYxNTkz
M2JjNTU5Y2I4ZDYwYWJhYTRkZWM2MyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIxLTEyLTMxICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gW1dLMl0gTlNG
b250UGFuZWwgVUkgKGZvbnQgY29sb3IsIHRleHQgZGVjb3JhdGlvbnMsIGZvbnQgc2hhZG93KSBk
b2Vzbid0IHVwZGF0ZSBvbiBzZWxlY3Rpb24gY2hhbmdlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAxMjAKKyAgICAgICAgcmRhcjovLzQ0ODk3NDA1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXVnbWVu
dCBhbmQgYWRqdXN0IHNvbWUgZXhpc3RpbmcgQVBJIHRlc3RzLiBTZWUgV2ViS2l0L0NoYW5nZUxv
ZyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvRm9udEF0dHJpYnV0ZXMubW06CisKKyAgICAgICAgQXVnbWVudCBhbiBleGlz
dGluZyBBUEkgdGVzdCwgRm9udEF0dHJpYnV0ZXMuRm9udEF0dHJpYnV0ZXNBZnRlckNoYW5naW5n
U2VsZWN0aW9uLCB0byBhZGRpdGlvbmFsbHkgY2hlY2sgc2hhcmVkCisgICAgICAgIE5TRm9udE1h
bmFnZXIgc3RhdGUgKGZvcmVncm91bmQvYmFja2dyb3VuZCBjb2xvciwgc2hhZG93IGNvbG9yIGFu
ZCByYWRpdXMsIGV0Yy4pIG9uIG1hY09TLgorCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp3ZWJW
aWV3Rm9yVGVzdGluZ0ZvbnRBdHRyaWJ1dGVzKToKKworICAgICAgICBPbiBtYWNPUywgYWRkaXRp
b25hbGx5IG1ha2UgdGhlIGZvbnQgcGFuZWwgdmlzaWJsZSBzbyB0aGF0IHdlIGNhbiB0ZXN0IGZv
bnQgcGFuZWwgc3RhdGUuCisKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0ZvbnRNYW5hZ2VyVGVzdHMubW06CisKKyAgICAg
ICAgUmVsYXggc29tZSBjb25zdHJhaW50cyBvbiBGb250TWFuYWdlclRlc3RzLkNoYW5nZUZvbnRX
aXRoUGFuZWwsIHNvIHRoYXQgaXQgdmVyaWZpZXMgdGhhdCB0aGUgcGxhdGZvcm0gZm9udCBpbgor
ICAgICAgICB0aGUgTlNGb250TWFuYWdlciBoYXMgYWxsIG9mIHRoZSBzYW1lIGF0dHJpYnV0ZXMg
YXMgdGhlIGV4cGVjdGF0aW9uLCByYXRoZXIgdGhhbiBiZWluZyBlcXVhbCB0byB0aGUgZXhhY3Qg
c2FtZQorICAgICAgICBmb250IG9iamVjdC4KKworICAgICAgICBBZGp1c3QgYW4gZXhpc3Rpbmcg
QVBJIHRlc3QsIEZvbnRNYW5hZ2VyVGVzdHMuQ2hhbmdlQXR0cmlidXRlc1dpdGhGb250RWZmZWN0
c0JveCwgdG8gYWxzbyB2YXJ5IHRoZSBsZW5ndGggb2YKKyAgICAgICAgZm9udCBzaGFkb3dzLiBV
cGRhdGluZyBmb250IGF0dHJpYnV0ZXMgb24gdGhlIGZvbnQgbWFuYWdlciBleHBvc2VkIGFuIGlz
c3VlIHdpdGggdGhpcyBBUEkgdGVzdCB3aGVyZSwgYmVjYXVzZQorICAgICAgICB0aGUgZm9udCBw
YW5lbCdzIGF0dHJpYnV0ZXMgYXJlIG5ldmVyIHVwZGF0ZWQsIHRoZSB2YWx1ZSBvZiB0aGUgc2hh
ZG93IGxlbmd0aCBzbGlkZXIgcmVtYWlucyBhdCB0aGUgZGVmYXVsdAorICAgICAgICB2YWx1ZSBv
ZiAwLjEyNSwgcHJvZHVjaW5nIGEgc2hhZG93IGxlbmd0aCBvZiAxLjI1cHguIEhvd2V2ZXIsIG5v
dyB0aGF0IHRoZSBzZWxlY3Rpb24gbW92ZXMgdG8gbm9uLXNoYWRvd2VkIHRleHQKKyAgICAgICAg
YmVmb3JlIG1vdmluZyB0byBzaGFkb3dlZCB0ZXh0IGFnYWluLCB3ZSBuZWVkIHRvIGV4cGxpY2l0
bHkgc2V0IHRoZSBzaGFkb3cgbGVuZ3RoIHNsaWRlcidzIHZhbHVlIHdoZW4gdGVzdGluZworICAg
ICAgICB0aGUgc2Vjb25kIHNoYWRvd2VkIHRleHQgc2VsZWN0aW9uLgorCisgICAgICAgICh3ZWJW
aWV3Rm9yRm9udE1hbmFnZXJUZXN0aW5nKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvbWFjL05TRm9udFBhbmVsVGVzdGluZy5oOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvbWFjL05TRm9udFBhbmVsVGVzdGluZy5tbToKKworICAgICAg
ICBBZGQgc29tZSBhZGRpdGlvbmFsIHRlc3RpbmcgaGVscGVycyB0byBxdWVyeSB0aGUgc3RhdGUg
b2YgY29udHJvbHMgaW4gdGhlIGZvbnQgcGFuZWwgKGUuZy4gZm9udCBzaGFkb3cgc2xpZGVycywK
KyAgICAgICAgZm9yZWdyb3VuZCBjb2xvciB3ZWxsLCBhbmQgc3RyaWtlLXRocm91Z2gvdW5kZXJs
aW5lIHBvcHVwIG1lbnUgc3RhdGUpLgorCisgICAgICAgICgtW05TRm9udFBhbmVsIHVuZGVybGlu
ZVRvb2xiYXJCdXR0b25dKToKKyAgICAgICAgKC1bTlNGb250UGFuZWwgc3RyaWtlVGhyb3VnaFRv
b2xiYXJCdXR0b25dKToKKyAgICAgICAgKC1bTlNGb250UGFuZWwgZm9yZWdyb3VuZENvbG9yVG9v
bGJhckNvbG9yV2VsbF0pOgorICAgICAgICAoLVtOU0ZvbnRQYW5lbCBjaG9vc2VVbmRlcmxpbmVN
ZW51SXRlbVdpdGhUaXRsZTpdKToKKyAgICAgICAgKC1bTlNGb250UGFuZWwgY2hvb3NlU3RyaWtl
VGhyb3VnaE1lbnVJdGVtV2l0aFRpdGxlOl0pOgorICAgICAgICAoLVtOU0ZvbnRQYW5lbCBzaGFk
b3dMZW5ndGhTbGlkZXJdKToKKyAgICAgICAgKC1bTlNGb250UGFuZWwgaGFzU2hhZG93XSk6Cisg
ICAgICAgICgtW05TRm9udFBhbmVsIHNoYWRvd0xlbmd0aF0pOgorICAgICAgICAoLVtOU0ZvbnRQ
YW5lbCBzZXRTaGFkb3dMZW5ndGg6XSk6CisgICAgICAgICgtW05TRm9udFBhbmVsIGhhc1VuZGVy
bGluZV0pOgorICAgICAgICAoLVtOU0ZvbnRQYW5lbCBoYXNTdHJpa2VUaHJvdWdoXSk6CisgICAg
ICAgICgtW05TRm9udFBhbmVsIGZvcmVncm91bmRDb2xvcl0pOgorCiAyMDIxLTEyLTMxICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gU2lt
cGxpZnkgc29tZSBGb250QXR0cmlidXRlcyBBUEkgdGVzdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRm9udEF0dHJpYnV0ZXMubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ZvbnRBdHRyaWJ1dGVzLm1tCmluZGV4IDAz
NWQ2M2M3MGZjOTYyZWZlYzA2ZWZkZGM1ZDA1YTYzNWE2YzJjYzUuLjljYWJiODZmOTg0Mjg1ZTU0
ZjEzZTE0NTkzMmYwNTdhZGQwNmE0NjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvRm9udEF0dHJpYnV0ZXMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Gb250QXR0cmlidXRlcy5tbQpAQCAtMTc3LDYgKzE3Nywx
MSBAQCBzdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXdGb3JUZXN0aW5nRm9u
dEF0dHJpYnV0ZXMoTlNTdHJpbmcgKnRlc3RQYQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMzIw
LCA1MDApXSk7CiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOnRl
c3RQYWdlTmFtZV07CiAgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
ImRvY3VtZW50LmJvZHkuZm9jdXMoKSJdOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBOU0ZvbnRN
YW5hZ2VyICpmb250TWFuYWdlciA9IE5TRm9udE1hbmFnZXIuc2hhcmVkRm9udE1hbmFnZXI7Cisg
ICAgW1tmb250TWFuYWdlciBmb250UGFuZWw6WUVTXSBzZXRJc1Zpc2libGU6WUVTXTsKKyAgICBm
b250TWFuYWdlci50YXJnZXQgPSB3ZWJWaWV3LmdldCgpOworI2VuZGlmCiAgICAgcmV0dXJuIHdl
YlZpZXc7CiB9CiAKQEAgLTE4Niw2ICsxOTEsMzEgQEAgVEVTVChGb250QXR0cmlidXRlcywgRm9u
dEF0dHJpYnV0ZXNBZnRlckNoYW5naW5nU2VsZWN0aW9uKQogICAgIGF1dG8gd2ViVmlldyA9IHdl
YlZpZXdGb3JUZXN0aW5nRm9udEF0dHJpYnV0ZXMoQCJyaWNoLXRleHQtYXR0cmlidXRlcyIpOwog
ICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCisgICAgYXV0byBl
eHBlY3RGb250TWFuYWdlclN0YXRlID0gW10gKEZvbnRFeHBlY3RhdGlvbiYmIGV4cGVjdGVkRm9u
dCwgQ29sb3JFeHBlY3RhdGlvbiYmIGV4cGVjdGVkQ29sb3IsIHN0ZDo6b3B0aW9uYWw8U2hhZG93
RXhwZWN0YXRpb24+JiYgZXhwZWN0ZWRTaGFkb3csIEJPT0wgdW5kZXJsaW5lLCBCT09MIHN0cmlr
ZVRocm91Z2gsIEJPT0wgZXhwZWN0TXVsdGlwbGVGb250cykgeworI2lmIFBMQVRGT1JNKE1BQykK
KyAgICAgICAgTlNGb250TWFuYWdlciAqZm9udE1hbmFnZXIgPSBOU0ZvbnRNYW5hZ2VyLnNoYXJl
ZEZvbnRNYW5hZ2VyOworICAgICAgICBOU0ZvbnRQYW5lbCAqZm9udFBhbmVsID0gTlNGb250UGFu
ZWwuc2hhcmVkRm9udFBhbmVsOworICAgICAgICBpZiAoZXhwZWN0ZWRTaGFkb3cpIHsKKyAgICAg
ICAgICAgIEVYUEVDVF9UUlVFKGZvbnRQYW5lbC5oYXNTaGFkb3cpOworICAgICAgICAgICAgRVhQ
RUNUX0xUKHN0ZDo6YWJzKGV4cGVjdGVkU2hhZG93LT5vcGFjaXR5IC0gZm9udFBhbmVsLnNoYWRv
d09wYWNpdHkpLCAwLjAwMDEpOworICAgICAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkU2hhZG93
LT5ibHVyUmFkaXVzLCBmb250UGFuZWwuc2hhZG93Qmx1cik7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgRVhQRUNUX0ZBTFNFKGZvbnRQYW5lbC5oYXNTaGFkb3cpOworICAgICAgICBFWFBF
Q1RfRVEodW5kZXJsaW5lLCBmb250UGFuZWwuaGFzVW5kZXJsaW5lKTsKKyAgICAgICAgRVhQRUNU
X0VRKHN0cmlrZVRocm91Z2gsIGZvbnRQYW5lbC5oYXNTdHJpa2VUaHJvdWdoKTsKKyAgICAgICAg
Y2hlY2tDb2xvcihbZm9udFBhbmVsLmZvcmVncm91bmRDb2xvciBjb2xvclVzaW5nQ29sb3JTcGFj
ZTpOU0NvbG9yU3BhY2Uuc1JHQkNvbG9yU3BhY2VdLCB7IFdURk1vdmUoZXhwZWN0ZWRDb2xvcikg
fSk7CisgICAgICAgIGNoZWNrRm9udChmb250TWFuYWdlci5zZWxlY3RlZEZvbnQsIFdURk1vdmUo
ZXhwZWN0ZWRGb250KSk7CisgICAgICAgIEVYUEVDVF9FUShleHBlY3RNdWx0aXBsZUZvbnRzLCBm
b250TWFuYWdlci5tdWx0aXBsZSk7CisjZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0oZXhwZWN0
ZWRGb250KTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKGV4cGVjdGVkQ29sb3IpOworICAgICAgICBV
TlVTRURfUEFSQU0oZXhwZWN0ZWRTaGFkb3cpOworICAgICAgICBVTlVTRURfUEFSQU0odW5kZXJs
aW5lKTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHN0cmlrZVRocm91Z2gpOworICAgICAgICBVTlVT
RURfUEFSQU0oZXhwZWN0TXVsdGlwbGVGb250cyk7CisjZW5kaWYKKyAgICB9OworCiAgICAgewog
ICAgICAgICBbd2ViVmlldyBzZWxlY3RFbGVtZW50V2l0aElkZW50aWZpZXI6QCJvbmUiXTsKICAg
ICAgICAgTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzID0gW3dlYlZpZXcgZm9udEF0dHJpYnV0ZXNB
ZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGVdOwpAQCAtMTk3LDYgKzIyNyw3IEBAIFRFU1QoRm9u
dEF0dHJpYnV0ZXMsIEZvbnRBdHRyaWJ1dGVzQWZ0ZXJDaGFuZ2luZ1NlbGVjdGlvbikKICAgICAg
ICAgRVhQRUNUX0VRKE5TVW5kZXJsaW5lU3R5bGVTaW5nbGUsIFthdHRyaWJ1dGVzW05TU3RyaWtl
dGhyb3VnaFN0eWxlQXR0cmlidXRlTmFtZV0gaW50ZWdlclZhbHVlXSk7CiAgICAgICAgIEVYUEVD
VF9FUShOU1VuZGVybGluZVN0eWxlTm9uZSwgW2F0dHJpYnV0ZXNbTlNVbmRlcmxpbmVTdHlsZUF0
dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOwogICAgICAgICBFWFBFQ1RfRVEoMCwgW2F0dHJp
YnV0ZXNbTlNTdXBlcnNjcmlwdEF0dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOworICAgICAg
ICBleHBlY3RGb250TWFuYWdlclN0YXRlKHsgIkhlbHZldGljYS1Cb2xkIiwgNDggfSwgeyAyMjcs
IDM2LCAwLCAxIH0sIHN0ZDo6bnVsbG9wdCwgTk8sIFlFUywgTk8pOwogICAgIH0KICAgICB7CiAg
ICAgICAgIFt3ZWJWaWV3IHNlbGVjdEVsZW1lbnRXaXRoSWRlbnRpZmllcjpAInR3byJdOwpAQCAt
MjA5LDYgKzI0MCw3IEBAIFRFU1QoRm9udEF0dHJpYnV0ZXMsIEZvbnRBdHRyaWJ1dGVzQWZ0ZXJD
aGFuZ2luZ1NlbGVjdGlvbikKICAgICAgICAgRVhQRUNUX0VRKE5TVW5kZXJsaW5lU3R5bGVOb25l
LCBbYXR0cmlidXRlc1tOU1N0cmlrZXRocm91Z2hTdHlsZUF0dHJpYnV0ZU5hbWVdIGludGVnZXJW
YWx1ZV0pOwogICAgICAgICBFWFBFQ1RfRVEoTlNVbmRlcmxpbmVTdHlsZVNpbmdsZSwgW2F0dHJp
YnV0ZXNbTlNVbmRlcmxpbmVTdHlsZUF0dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOwogICAg
ICAgICBFWFBFQ1RfRVEoMCwgW2F0dHJpYnV0ZXNbTlNTdXBlcnNjcmlwdEF0dHJpYnV0ZU5hbWVd
IGludGVnZXJWYWx1ZV0pOworICAgICAgICBleHBlY3RGb250TWFuYWdlclN0YXRlKHsgIkhlbHZl
dGljYS1Cb2xkIiwgNDggfSwgeyAxMDIsIDE1NywgNTIsIDEgfSwgeyB7IDAuNDcwNTg4LCA1IH0g
fSwgWUVTLCBOTywgTk8pOwogICAgIH0KICAgICB7CiAgICAgICAgIFt3ZWJWaWV3IHNlbGVjdEVs
ZW1lbnRXaXRoSWRlbnRpZmllcjpAInRocmVlIl07CkBAIC0yMjEsNiArMjUzLDcgQEAgVEVTVChG
b250QXR0cmlidXRlcywgRm9udEF0dHJpYnV0ZXNBZnRlckNoYW5naW5nU2VsZWN0aW9uKQogICAg
ICAgICBFWFBFQ1RfRVEoTlNVbmRlcmxpbmVTdHlsZU5vbmUsIFthdHRyaWJ1dGVzW05TU3RyaWtl
dGhyb3VnaFN0eWxlQXR0cmlidXRlTmFtZV0gaW50ZWdlclZhbHVlXSk7CiAgICAgICAgIEVYUEVD
VF9FUShOU1VuZGVybGluZVN0eWxlTm9uZSwgW2F0dHJpYnV0ZXNbTlNVbmRlcmxpbmVTdHlsZUF0
dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOwogICAgICAgICBFWFBFQ1RfRVEoMCwgW2F0dHJp
YnV0ZXNbTlNTdXBlcnNjcmlwdEF0dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOworICAgICAg
ICBleHBlY3RGb250TWFuYWdlclN0YXRlKHsgIk1lbmxvLUl0YWxpYyIsIDE4IH0sIHsgMjU1LCAx
MDYsIDAsIDEgfSwgc3RkOjpudWxsb3B0LCBOTywgTk8sIE5PKTsKICAgICB9CiAgICAgewogICAg
ICAgICBbd2ViVmlldyBzZWxlY3RFbGVtZW50V2l0aElkZW50aWZpZXI6QCJmb3VyIl07CkBAIC0y
MzMsNiArMjY2LDcgQEAgVEVTVChGb250QXR0cmlidXRlcywgRm9udEF0dHJpYnV0ZXNBZnRlckNo
YW5naW5nU2VsZWN0aW9uKQogICAgICAgICBFWFBFQ1RfRVEoTlNVbmRlcmxpbmVTdHlsZU5vbmUs
IFthdHRyaWJ1dGVzW05TU3RyaWtldGhyb3VnaFN0eWxlQXR0cmlidXRlTmFtZV0gaW50ZWdlclZh
bHVlXSk7CiAgICAgICAgIEVYUEVDVF9FUShOU1VuZGVybGluZVN0eWxlTm9uZSwgW2F0dHJpYnV0
ZXNbTlNVbmRlcmxpbmVTdHlsZUF0dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOwogICAgICAg
ICBFWFBFQ1RfRVEoMCwgW2F0dHJpYnV0ZXNbTlNTdXBlcnNjcmlwdEF0dHJpYnV0ZU5hbWVdIGlu
dGVnZXJWYWx1ZV0pOworICAgICAgICBleHBlY3RGb250TWFuYWdlclN0YXRlKHsgIkF2ZW5pci1C
b29rIiwgMjQgfSwgeyAyNTUsIDI1NSwgMjU1LCAxIH0sIHN0ZDo6bnVsbG9wdCwgTk8sIE5PLCBO
Tyk7CiAgICAgfQogICAgIHsKICAgICAgICAgW3dlYlZpZXcgc2VsZWN0RWxlbWVudFdpdGhJZGVu
dGlmaWVyOkAiZml2ZSJdOwpAQCAtMjQ1LDYgKzI3OSw3IEBAIFRFU1QoRm9udEF0dHJpYnV0ZXMs
IEZvbnRBdHRyaWJ1dGVzQWZ0ZXJDaGFuZ2luZ1NlbGVjdGlvbikKICAgICAgICAgRVhQRUNUX0VR
KE5TVW5kZXJsaW5lU3R5bGVOb25lLCBbYXR0cmlidXRlc1tOU1N0cmlrZXRocm91Z2hTdHlsZUF0
dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOwogICAgICAgICBFWFBFQ1RfRVEoTlNVbmRlcmxp
bmVTdHlsZU5vbmUsIFthdHRyaWJ1dGVzW05TVW5kZXJsaW5lU3R5bGVBdHRyaWJ1dGVOYW1lXSBp
bnRlZ2VyVmFsdWVdKTsKICAgICAgICAgRVhQRUNUX0VRKDAsIFthdHRyaWJ1dGVzW05TU3VwZXJz
Y3JpcHRBdHRyaWJ1dGVOYW1lXSBpbnRlZ2VyVmFsdWVdKTsKKyAgICAgICAgZXhwZWN0Rm9udE1h
bmFnZXJTdGF0ZSh7ICJUaW1lc05ld1JvbWFuUFMtQm9sZE1UIiwgMjQgfSwgeyAxMzEsIDE2LCAw
LCAxIH0sIHN0ZDo6bnVsbG9wdCwgTk8sIE5PLCBOTyk7CiAgICAgfQogICAgIHsKICAgICAgICAg
W3dlYlZpZXcgc2VsZWN0RWxlbWVudFdpdGhJZGVudGlmaWVyOkAic2l4Il07CkBAIC0yNTcsNiAr
MjkyLDcgQEAgVEVTVChGb250QXR0cmlidXRlcywgRm9udEF0dHJpYnV0ZXNBZnRlckNoYW5naW5n
U2VsZWN0aW9uKQogICAgICAgICBFWFBFQ1RfRVEoTlNVbmRlcmxpbmVTdHlsZU5vbmUsIFthdHRy
aWJ1dGVzW05TU3RyaWtldGhyb3VnaFN0eWxlQXR0cmlidXRlTmFtZV0gaW50ZWdlclZhbHVlXSk7
CiAgICAgICAgIEVYUEVDVF9FUShOU1VuZGVybGluZVN0eWxlTm9uZSwgW2F0dHJpYnV0ZXNbTlNV
bmRlcmxpbmVTdHlsZUF0dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOwogICAgICAgICBFWFBF
Q1RfRVEoMCwgW2F0dHJpYnV0ZXNbTlNTdXBlcnNjcmlwdEF0dHJpYnV0ZU5hbWVdIGludGVnZXJW
YWx1ZV0pOworICAgICAgICBleHBlY3RGb250TWFuYWdlclN0YXRlKHsgIkF2ZW5pci1CbGFjayIs
IDE4IH0sIHsgMjU1LCA2NCwgMTksIDEgfSwgc3RkOjpudWxsb3B0LCBOTywgTk8sIE5PKTsKICAg
ICB9CiAgICAgewogICAgICAgICBbd2ViVmlldyBzZWxlY3RFbGVtZW50V2l0aElkZW50aWZpZXI6
QCJzZXZlbiJdOwpAQCAtMjY5LDYgKzMwNSw3IEBAIFRFU1QoRm9udEF0dHJpYnV0ZXMsIEZvbnRB
dHRyaWJ1dGVzQWZ0ZXJDaGFuZ2luZ1NlbGVjdGlvbikKICAgICAgICAgRVhQRUNUX0VRKE5TVW5k
ZXJsaW5lU3R5bGVOb25lLCBbYXR0cmlidXRlc1tOU1N0cmlrZXRocm91Z2hTdHlsZUF0dHJpYnV0
ZU5hbWVdIGludGVnZXJWYWx1ZV0pOwogICAgICAgICBFWFBFQ1RfRVEoTlNVbmRlcmxpbmVTdHls
ZU5vbmUsIFthdHRyaWJ1dGVzW05TVW5kZXJsaW5lU3R5bGVBdHRyaWJ1dGVOYW1lXSBpbnRlZ2Vy
VmFsdWVdKTsKICAgICAgICAgRVhQRUNUX0VRKC0xLCBbYXR0cmlidXRlc1tOU1N1cGVyc2NyaXB0
QXR0cmlidXRlTmFtZV0gaW50ZWdlclZhbHVlXSk7CisgICAgICAgIGV4cGVjdEZvbnRNYW5hZ2Vy
U3RhdGUoeyAiQXZlbmlyLUJvb2tPYmxpcXVlIiwgMTIgfSwgeyAyMzUsIDIzNSwgMjM1LCAxIH0s
IHN0ZDo6bnVsbG9wdCwgTk8sIE5PLCBOTyk7CiAgICAgfQogICAgIHsKICAgICAgICAgW3dlYlZp
ZXcgc2VsZWN0RWxlbWVudFdpdGhJZGVudGlmaWVyOkAiZWlnaHQiXTsKQEAgLTI4MSw2ICszMTgs
NyBAQCBURVNUKEZvbnRBdHRyaWJ1dGVzLCBGb250QXR0cmlidXRlc0FmdGVyQ2hhbmdpbmdTZWxl
Y3Rpb24pCiAgICAgICAgIEVYUEVDVF9FUShOU1VuZGVybGluZVN0eWxlTm9uZSwgW2F0dHJpYnV0
ZXNbTlNTdHJpa2V0aHJvdWdoU3R5bGVBdHRyaWJ1dGVOYW1lXSBpbnRlZ2VyVmFsdWVdKTsKICAg
ICAgICAgRVhQRUNUX0VRKE5TVW5kZXJsaW5lU3R5bGVOb25lLCBbYXR0cmlidXRlc1tOU1VuZGVy
bGluZVN0eWxlQXR0cmlidXRlTmFtZV0gaW50ZWdlclZhbHVlXSk7CiAgICAgICAgIEVYUEVDVF9F
USgxLCBbYXR0cmlidXRlc1tOU1N1cGVyc2NyaXB0QXR0cmlidXRlTmFtZV0gaW50ZWdlclZhbHVl
XSk7CisgICAgICAgIGV4cGVjdEZvbnRNYW5hZ2VyU3RhdGUoeyAiQXZlbmlyLUJvb2siLCAxMiB9
LCB7IDAsIDAsIDAsIDEgfSwgc3RkOjpudWxsb3B0LCBOTywgTk8sIE5PKTsKICAgICB9CiAgICAg
ewogICAgICAgICBbd2ViVmlldyBzZWxlY3RFbGVtZW50V2l0aElkZW50aWZpZXI6QCJuaW5lIl07
CkBAIC0yOTMsNiArMzMxLDcgQEAgVEVTVChGb250QXR0cmlidXRlcywgRm9udEF0dHJpYnV0ZXNB
ZnRlckNoYW5naW5nU2VsZWN0aW9uKQogICAgICAgICBFWFBFQ1RfRVEoTlNVbmRlcmxpbmVTdHls
ZU5vbmUsIFthdHRyaWJ1dGVzW05TU3RyaWtldGhyb3VnaFN0eWxlQXR0cmlidXRlTmFtZV0gaW50
ZWdlclZhbHVlXSk7CiAgICAgICAgIEVYUEVDVF9FUShOU1VuZGVybGluZVN0eWxlTm9uZSwgW2F0
dHJpYnV0ZXNbTlNVbmRlcmxpbmVTdHlsZUF0dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOwog
ICAgICAgICBFWFBFQ1RfRVEoMCwgW2F0dHJpYnV0ZXNbTlNTdXBlcnNjcmlwdEF0dHJpYnV0ZU5h
bWVdIGludGVnZXJWYWx1ZV0pOworICAgICAgICBleHBlY3RGb250TWFuYWdlclN0YXRlKHsgIkdl
b3JnaWEiLCAzNiB9LCB7IDAsIDAsIDAsIDEgfSwgeyB7IDAuNjU4ODI0LCA5IH0gfSwgTk8sIE5P
LCBOTyk7CiAgICAgfQogICAgIHsKICAgICAgICAgW3dlYlZpZXcgc2VsZWN0RWxlbWVudFdpdGhJ
ZGVudGlmaWVyOkAidGVuIl07CkBAIC0zMDUsNiArMzQ0LDcgQEAgVEVTVChGb250QXR0cmlidXRl
cywgRm9udEF0dHJpYnV0ZXNBZnRlckNoYW5naW5nU2VsZWN0aW9uKQogICAgICAgICBFWFBFQ1Rf
RVEoTlNVbmRlcmxpbmVTdHlsZU5vbmUsIFthdHRyaWJ1dGVzW05TU3RyaWtldGhyb3VnaFN0eWxl
QXR0cmlidXRlTmFtZV0gaW50ZWdlclZhbHVlXSk7CiAgICAgICAgIEVYUEVDVF9FUShOU1VuZGVy
bGluZVN0eWxlTm9uZSwgW2F0dHJpYnV0ZXNbTlNVbmRlcmxpbmVTdHlsZUF0dHJpYnV0ZU5hbWVd
IGludGVnZXJWYWx1ZV0pOwogICAgICAgICBFWFBFQ1RfRVEoMCwgW2F0dHJpYnV0ZXNbTlNTdXBl
cnNjcmlwdEF0dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOworICAgICAgICBleHBlY3RGb250
TWFuYWdlclN0YXRlKHsgIkF2ZW5pci1Cb29rT2JsaXF1ZSIsIDE4IH0sIHsgMCwgMCwgMCwgMSB9
LCBzdGQ6Om51bGxvcHQsIE5PLCBOTywgTk8pOwogICAgIH0KICAgICB7CiAgICAgICAgIFt3ZWJW
aWV3IHNlbGVjdEVsZW1lbnRXaXRoSWRlbnRpZmllcjpAImVsZXZlbiJdOwpAQCAtMzE3LDcgKzM1
NywxMyBAQCBURVNUKEZvbnRBdHRyaWJ1dGVzLCBGb250QXR0cmlidXRlc0FmdGVyQ2hhbmdpbmdT
ZWxlY3Rpb24pCiAgICAgICAgIEVYUEVDVF9FUShOU1VuZGVybGluZVN0eWxlTm9uZSwgW2F0dHJp
YnV0ZXNbTlNTdHJpa2V0aHJvdWdoU3R5bGVBdHRyaWJ1dGVOYW1lXSBpbnRlZ2VyVmFsdWVdKTsK
ICAgICAgICAgRVhQRUNUX0VRKE5TVW5kZXJsaW5lU3R5bGVOb25lLCBbYXR0cmlidXRlc1tOU1Vu
ZGVybGluZVN0eWxlQXR0cmlidXRlTmFtZV0gaW50ZWdlclZhbHVlXSk7CiAgICAgICAgIEVYUEVD
VF9FUSgwLCBbYXR0cmlidXRlc1tOU1N1cGVyc2NyaXB0QXR0cmlidXRlTmFtZV0gaW50ZWdlclZh
bHVlXSk7CisgICAgICAgIGV4cGVjdEZvbnRNYW5hZ2VyU3RhdGUoeyAiTWVubG8tUmVndWxhciIs
IDIwIH0sIHsgMCwgMCwgMCwgMSB9LCBzdGQ6Om51bGxvcHQsIE5PLCBOTywgTk8pOwogICAgIH0K
KyNpZiBQTEFURk9STShNQUMpCisgICAgW3dlYlZpZXcgc2VsZWN0QWxsOm5pbF07CisgICAgW3dl
YlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworICAgIEVYUEVDVF9UUlVFKE5T
Rm9udE1hbmFnZXIuc2hhcmVkRm9udE1hbmFnZXIubXVsdGlwbGUpOworI2VuZGlmCiB9CiAKIFRF
U1QoRm9udEF0dHJpYnV0ZXMsIE5lc3RlZFRleHRMaXN0c1dpdGhIb3Jpem9udGFsQWxpZ25tZW50
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRm9udE1hbmFnZXJU
ZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0ZvbnRNYW5hZ2VyVGVzdHMu
bW0KaW5kZXggMWE3Y2FkYWYxODNjNzNmMzM4ZDc5ZjRmOWYxMzg5YjYyMGQyMTJlNy4uNDMwOGVj
NDFiZmE3NWYwMGE2NTRlYTkwZTJjNWU4OTc3YzRmYTFlZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9tYWMvRm9udE1hbmFnZXJUZXN0cy5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL21hYy9Gb250TWFuYWdlclRlc3RzLm1tCkBAIC05NCw2ICs5NCw3IEBA
IHN0YXRpYyBSZXRhaW5QdHI8Rm9udE1hbmFnZXJUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3Rm9yRm9u
dE1hbmFnZXJUZXN0aW5nKE5TRm9udE1hCiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRI
VE1MU3RyaW5nOm1hcmt1cF07CiAgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAImRvY3VtZW50LmJvZHkuZm9jdXMoKSJdOwogICAgIFt3ZWJWaWV3IF9zZXRFZGl0YWJs
ZTpZRVNdOworICAgIFtbZm9udE1hbmFnZXIgZm9udFBhbmVsOllFU10gc2V0SXNWaXNpYmxlOllF
U107CiAgICAgZm9udE1hbmFnZXIudGFyZ2V0ID0gd2ViVmlldy5nZXQoKTsKICAgICByZXR1cm4g
d2ViVmlldzsKIH0KQEAgLTE5Niw2ICsxOTcsMTUgQEAgVEVTVChGb250TWFuYWdlclRlc3RzLCBD
aGFuZ2VGb250V2l0aFBhbmVsKQogICAgIFtmb250UGFuZWwgc2V0SXNWaXNpYmxlOllFU107CiAg
ICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOwogCisgICAgYXV0byBl
eHBlY3RTYW1lQXR0cmlidXRlcyA9IFtdKE5TRm9udCAqZm9udDEsIE5TRm9udCAqZm9udDIpIHsK
KyAgICAgICAgYXV0byBmb250QXR0cmlidXRlczEgPSBmb250MS5mb250RGVzY3JpcHRvci5mb250
QXR0cmlidXRlczsKKyAgICAgICAgYXV0byBmb250QXR0cmlidXRlczIgPSBmb250Mi5mb250RGVz
Y3JpcHRvci5mb250QXR0cmlidXRlczsKKyAgICAgICAgQk9PTCBhdHRyaWJ1dGVzQXJlRXF1YWwg
PSBbZm9udEF0dHJpYnV0ZXMxIGlzRXF1YWxUb0RpY3Rpb25hcnk6Zm9udEF0dHJpYnV0ZXMyXTsK
KyAgICAgICAgRVhQRUNUX1RSVUUoYXR0cmlidXRlc0FyZUVxdWFsKTsKKyAgICAgICAgaWYgKCFh
dHRyaWJ1dGVzQXJlRXF1YWwpCisgICAgICAgICAgICBOU0xvZyhAIkV4cGVjdGVkICVAIHRvIGhh
dmUgdGhlIHNhbWUgYXR0cmlidXRlcyBhcyAlQCIsIGZvbnQxLCBmb250Mik7CisgICAgfTsKKwog
ICAgIE5TRm9udCAqbGFyZ2VIZWx2ZXRpY2FGb250ID0gW05TRm9udCBmb250V2l0aE5hbWU6QCJI
ZWx2ZXRpY2EiIHNpemU6MjBdOwogICAgIFtmb250UGFuZWwgc2V0UGFuZWxGb250OmxhcmdlSGVs
dmV0aWNhRm9udCBpc011bHRpcGxlOk5PXTsKICAgICBbd2ViVmlldyBzZWxlY3RXb3JkOm5pbF07
CkBAIC0yMDQsNyArMjE0LDcgQEAgVEVTVChGb250TWFuYWdlclRlc3RzLCBDaGFuZ2VGb250V2l0
aFBhbmVsKQogICAgIEVYUEVDVF9XS19TVFJFUSgiSGVsdmV0aWNhIiwgW3dlYlZpZXcgc3R5bGVQ
cm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LWZhbWlseSJdKTsKICAgICBFWFBFQ1RfV0tf
U1RSRVEoIjIwcHgiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZv
bnQtc2l6ZSJdKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoIjQwMCIsIFt3ZWJWaWV3IHN0eWxlUHJv
cGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9udC13ZWlnaHQiXSk7Ci0gICAgRVhQRUNUX0VRKGxh
cmdlSGVsdmV0aWNhRm9udCwgZm9udE1hbmFnZXIuc2VsZWN0ZWRGb250KTsKKyAgICBleHBlY3RT
YW1lQXR0cmlidXRlcyhsYXJnZUhlbHZldGljYUZvbnQsIGZvbnRNYW5hZ2VyLnNlbGVjdGVkRm9u
dCk7CiAKICAgICBOU0ZvbnQgKnNtYWxsQm9sZFRpbWVzRm9udCA9IFtmb250TWFuYWdlciBmb250
V2l0aEZhbWlseTpAIlRpbWVzIE5ldyBSb21hbiIgdHJhaXRzOk5TQm9sZEZvbnRNYXNrIHdlaWdo
dDpOU0ZvbnRXZWlnaHRCb2xkIHNpemU6MTBdOwogICAgIFtmb250UGFuZWwgc2V0UGFuZWxGb250
OnNtYWxsQm9sZFRpbWVzRm9udCBpc011bHRpcGxlOk5PXTsKQEAgLTIxNCw3ICsyMjQsNyBAQCBU
RVNUKEZvbnRNYW5hZ2VyVGVzdHMsIENoYW5nZUZvbnRXaXRoUGFuZWwpCiAgICAgRVhQRUNUX1dL
X1NUUkVRKCJcIlRpbWVzIE5ldyBSb21hblwiIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2Vs
ZWN0aW9uU3RhcnQ6QCJmb250LWZhbWlseSJdKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoIjEwcHgi
LCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtc2l6ZSJdKTsK
ICAgICBFWFBFQ1RfV0tfU1RSRVEoIjcwMCIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVj
dGlvblN0YXJ0OkAiZm9udC13ZWlnaHQiXSk7Ci0gICAgRVhQRUNUX0VRKHNtYWxsQm9sZFRpbWVz
Rm9udCwgZm9udE1hbmFnZXIuc2VsZWN0ZWRGb250KTsKKyAgICBleHBlY3RTYW1lQXR0cmlidXRl
cyhzbWFsbEJvbGRUaW1lc0ZvbnQsIGZvbnRNYW5hZ2VyLnNlbGVjdGVkRm9udCk7CiAKICAgICBO
U0ZvbnQgKmJvbGRJdGFsaWNBcmlhbEZvbnQgPSBbZm9udE1hbmFnZXIgZm9udFdpdGhGYW1pbHk6
QCJBcmlhbCIgdHJhaXRzOk5TQm9sZEZvbnRNYXNrIHwgTlNJdGFsaWNGb250TWFzayB3ZWlnaHQ6
TlNGb250V2VpZ2h0Qm9sZCBzaXplOjE0XTsKICAgICBbZm9udFBhbmVsIHNldFBhbmVsRm9udDpi
b2xkSXRhbGljQXJpYWxGb250IGlzTXVsdGlwbGU6Tk9dOwpAQCAtMjI0LDcgKzIzNCw3IEBAIFRF
U1QoRm9udE1hbmFnZXJUZXN0cywgQ2hhbmdlRm9udFdpdGhQYW5lbCkKICAgICBFWFBFQ1RfV0tf
U1RSRVEoIkFyaWFsIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJm
b250LWZhbWlseSJdKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoIjE0cHgiLCBbd2ViVmlldyBzdHls
ZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtc2l6ZSJdKTsKICAgICBFWFBFQ1RfV0tf
U1RSRVEoIjcwMCIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9u
dC13ZWlnaHQiXSk7Ci0gICAgRVhQRUNUX0VRKGJvbGRJdGFsaWNBcmlhbEZvbnQsIGZvbnRNYW5h
Z2VyLnNlbGVjdGVkRm9udCk7CisgICAgZXhwZWN0U2FtZUF0dHJpYnV0ZXMoYm9sZEl0YWxpY0Fy
aWFsRm9udCwgZm9udE1hbmFnZXIuc2VsZWN0ZWRGb250KTsKIAogICAgIE5TRm9udCAqbGFyZ2VJ
dGFsaWNMaWdodEF2ZW5pckZvbnQgPSBbZm9udE1hbmFnZXIgZm9udFdpdGhGYW1pbHk6QCJBdmVu
aXIiIHRyYWl0czpOU0l0YWxpY0ZvbnRNYXNrIHdlaWdodDpOU0ZvbnRXZWlnaHRMaWdodCBzaXpl
OjI0XTsKICAgICBbZm9udFBhbmVsIHNldFBhbmVsRm9udDpsYXJnZUl0YWxpY0xpZ2h0QXZlbmly
Rm9udCBpc011bHRpcGxlOk5PXTsKQEAgLTIzNCw3ICsyNDQsNyBAQCBURVNUKEZvbnRNYW5hZ2Vy
VGVzdHMsIENoYW5nZUZvbnRXaXRoUGFuZWwpCiAgICAgRVhQRUNUX1dLX1NUUkVRKCJBdmVuaXIt
TGlnaHRPYmxpcXVlIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJm
b250LWZhbWlseSJdKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoIjI0cHgiLCBbd2ViVmlldyBzdHls
ZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtc2l6ZSJdKTsKICAgICBFWFBFQ1RfV0tf
U1RSRVEoIjQwMCIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9u
dC13ZWlnaHQiXSk7Ci0gICAgRVhQRUNUX0VRKGxhcmdlSXRhbGljTGlnaHRBdmVuaXJGb250LCBm
b250TWFuYWdlci5zZWxlY3RlZEZvbnQpOworICAgIGV4cGVjdFNhbWVBdHRyaWJ1dGVzKGxhcmdl
SXRhbGljTGlnaHRBdmVuaXJGb250LCBmb250TWFuYWdlci5zZWxlY3RlZEZvbnQpOwogfQogCiBU
RVNUKEZvbnRNYW5hZ2VyVGVzdHMsIENoYW5nZUF0dHJpYnV0ZXNXaXRoRm9udEVmZmVjdHNCb3gp
CkBAIC0yODMsMTMgKzI5MywxNCBAQCBURVNUKEZvbnRNYW5hZ2VyVGVzdHMsIENoYW5nZUF0dHJp
YnV0ZXNXaXRoRm9udEVmZmVjdHNCb3gpCiAgICAgW3dlYlZpZXcgc2VsZWN0TmV4dFdvcmRdOwog
ICAgIGZvbnRQYW5lbC5zaGFkb3dCbHVyID0gODsKICAgICBmb250UGFuZWwuc2hhZG93T3BhY2l0
eSA9IDE7CisgICAgZm9udFBhbmVsLnNoYWRvd0xlbmd0aCA9IDAuMjU7CiAgICAgW2ZvbnRQYW5l
bCB0b2dnbGVTaGFkb3ddOwogICAgIEVYUEVDVF9XS19TVFJFUSgiYmF6IiwgW3dlYlZpZXcgc2Vs
ZWN0ZWRUZXh0XSk7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKCJyZ2IoMCwgMCwgMCkgMHB4IDEuMjVw
eCA4cHgiLCB0ZXh0U2hhZG93QXJvdW5kU2VsZWN0aW9uKCkpOworICAgIEVYUEVDVF9XS19TVFJF
USgicmdiKDAsIDAsIDApIDBweCAyLjVweCA4cHgiLCB0ZXh0U2hhZG93QXJvdW5kU2VsZWN0aW9u
KCkpOwogICAgIHsKICAgICAgICAgTlNTaGFkb3cgKnNoYWRvdyA9IFt3ZWJWaWV3IHR5cGluZ0F0
dHJpYnV0ZXNdW05TU2hhZG93QXR0cmlidXRlTmFtZV07CiAgICAgICAgIEVYUEVDVF9FUShzaGFk
b3cuc2hhZG93T2Zmc2V0LndpZHRoLCAwKTsKLSAgICAgICAgRVhQRUNUX0VRKHNoYWRvdy5zaGFk
b3dPZmZzZXQuaGVpZ2h0LCAxLjI1KTsKKyAgICAgICAgRVhQRUNUX0VRKHNoYWRvdy5zaGFkb3dP
ZmZzZXQuaGVpZ2h0LCAyLjUpOwogICAgICAgICBFWFBFQ1RfRVEoc2hhZG93LnNoYWRvd0JsdXJS
YWRpdXMsIDgpOwogICAgICAgICBFWFBFQ1RfVFJVRShbc2hhZG93LnNoYWRvd0NvbG9yIGlzRXF1
YWw6W05TQ29sb3IgY29sb3JXaXRoUmVkOjAgZ3JlZW46MCBibHVlOjAgYWxwaGE6MV1dKTsKICAg
ICB9CkBAIC0zMDIsMTEgKzMxMywxMiBAQCBURVNUKEZvbnRNYW5hZ2VyVGVzdHMsIENoYW5nZUF0
dHJpYnV0ZXNXaXRoRm9udEVmZmVjdHNCb3gpCiAgICAgW3dlYlZpZXcgc2VsZWN0QWxsOm5pbF07
CiAgICAgZm9udFBhbmVsLnNoYWRvd0JsdXIgPSA1OwogICAgIGZvbnRQYW5lbC5zaGFkb3dPcGFj
aXR5ID0gMC4yOworICAgIGZvbnRQYW5lbC5zaGFkb3dMZW5ndGggPSAwLjU7CiAgICAgW2ZvbnRQ
YW5lbCB0b2dnbGVTaGFkb3ddOwogICAgIFtmb250UGFuZWwgY2hvb3NlVW5kZXJsaW5lTWVudUl0
ZW1XaXRoVGl0bGU6QCJzaW5nbGUiXTsKICAgICBbZm9udFBhbmVsIGNob29zZVN0cmlrZVRocm91
Z2hNZW51SXRlbVdpdGhUaXRsZTpAInNpbmdsZSJdOwogICAgIEVYUEVDVF9XS19TVFJFUSgiZm9v
IGJhciBiYXoiLCBbd2ViVmlldyBzZWxlY3RlZFRleHRdKTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEo
InJnYmEoMCwgMCwgMCwgMC4yKSAwcHggMS4yNXB4IDVweCIsIHRleHRTaGFkb3dBcm91bmRTZWxl
Y3Rpb24oKSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJyZ2JhKDAsIDAsIDAsIDAuMikgMHB4IDVw
eCA1cHgiLCB0ZXh0U2hhZG93QXJvdW5kU2VsZWN0aW9uKCkpOwogICAgIEVYUEVDVF9XS19TVFJF
USgidW5kZXJsaW5lIGxpbmUtdGhyb3VnaCIsIHRleHREZWNvcmF0aW9uc0Fyb3VuZFNlbGVjdGlv
bigpKTsKICAgICB7CiAgICAgICAgIE5TRGljdGlvbmFyeSAqdHlwaW5nQXR0cmlidXRlcyA9IFt3
ZWJWaWV3IHR5cGluZ0F0dHJpYnV0ZXNdOwpAQCAtMzE1LDcgKzMyNyw3IEBAIFRFU1QoRm9udE1h
bmFnZXJUZXN0cywgQ2hhbmdlQXR0cmlidXRlc1dpdGhGb250RWZmZWN0c0JveCkKIAogICAgICAg
ICBOU1NoYWRvdyAqc2hhZG93ID0gdHlwaW5nQXR0cmlidXRlc1tOU1NoYWRvd0F0dHJpYnV0ZU5h
bWVdOwogICAgICAgICBFWFBFQ1RfRVEoc2hhZG93LnNoYWRvd09mZnNldC53aWR0aCwgMCk7Ci0g
ICAgICAgIEVYUEVDVF9FUShzaGFkb3cuc2hhZG93T2Zmc2V0LmhlaWdodCwgMS4yNSk7CisgICAg
ICAgIEVYUEVDVF9FUShzaGFkb3cuc2hhZG93T2Zmc2V0LmhlaWdodCwgNSk7CiAgICAgICAgIEVY
UEVDVF9FUShzaGFkb3cuc2hhZG93Qmx1clJhZGl1cywgNSk7CiAgICAgICAgIEVYUEVDVF9UUlVF
KFtzaGFkb3cuc2hhZG93Q29sb3IgaXNFcXVhbDpbTlNDb2xvciBjb2xvcldpdGhSZWQ6MCBncmVl
bjowIGJsdWU6MCBhbHBoYTowLjJdXSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9tYWMvTlNGb250UGFuZWxUZXN0aW5nLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL21h
Yy9OU0ZvbnRQYW5lbFRlc3RpbmcuaAppbmRleCBjZjQxMjgxMDFlNzZkZGQ0YzhiNTExMmY4OTVi
YjBlMmZlYmMzY2ZhLi4zZTFlMGVjODFjMTlmMWIwZWI0Mjg4M2E4MDIyNzMxZmJkNzJiMmExIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9OU0ZvbnRQYW5lbFRlc3RpbmcuaAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9OU0ZvbnRQYW5lbFRlc3RpbmcuaApAQCAtMzEs
NiArMzEsMTIgQEAKIAogQHByb3BlcnR5IChub25hdG9taWMpIGRvdWJsZSBzaGFkb3dPcGFjaXR5
OwogQHByb3BlcnR5IChub25hdG9taWMpIGRvdWJsZSBzaGFkb3dCbHVyOworQHByb3BlcnR5IChu
b25hdG9taWMpIGRvdWJsZSBzaGFkb3dMZW5ndGg7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSkgQk9PTCBoYXNTaGFkb3c7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkp
IEJPT0wgaGFzVW5kZXJsaW5lOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09M
IGhhc1N0cmlrZVRocm91Z2g7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TQ29s
b3IgKmZvcmVncm91bmRDb2xvcjsKIAogLSAodm9pZCl0b2dnbGVTaGFkb3c7CiAtICh2b2lkKWNo
b29zZVVuZGVybGluZU1lbnVJdGVtV2l0aFRpdGxlOihOU1N0cmluZyAqKWl0ZW1UaXRsZTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL05TRm9udFBhbmVsVGVzdGluZy5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL05TRm9udFBhbmVsVGVzdGluZy5tbQppbmRleCAyMzI5
NTBjZGJkZWUyMDNhNTFjNmIwNjdkNjhmOWYxOTQ3Mzc4OTljLi43MTNkMDFmYzJkOTZmZmI2NGY5
N2I0OWU1YzFmZjJjNmYyMGFmOGE3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL21h
Yy9OU0ZvbnRQYW5lbFRlc3RpbmcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvTlNG
b250UGFuZWxUZXN0aW5nLm1tCkBAIC02NSw5ICs2NSwyNCBAQCBzdGF0aWMgTlNNZW51SXRlbSAq
ZmluZE1lbnVJdGVtV2l0aFRpdGxlKE5TUG9wVXBCdXR0b24gKmJ1dHRvbiwgTlNTdHJpbmcgKnRp
dGxlKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxOU0JveCAqPihyZXN1bHQpOwogfQogCistIChO
U1BvcFVwQnV0dG9uICopdW5kZXJsaW5lVG9vbGJhckJ1dHRvbgoreworICAgIHJldHVybiAoTlNQ
b3BVcEJ1dHRvbiAqKVtzZWxmIF90b29sYmFySXRlbVdpdGhJZGVudGlmaWVyOkAiTlNGb250UGFu
ZWxVbmRlcmxpbmVUb29sYmFySXRlbSJdLnZpZXc7Cit9CisKKy0gKE5TUG9wVXBCdXR0b24gKilz
dHJpa2VUaHJvdWdoVG9vbGJhckJ1dHRvbgoreworICAgIHJldHVybiAoTlNQb3BVcEJ1dHRvbiAq
KVtzZWxmIF90b29sYmFySXRlbVdpdGhJZGVudGlmaWVyOkAiTlNGb250UGFuZWxTdHJpa2V0aHJv
dWdoVG9vbGJhckl0ZW0iXS52aWV3OworfQorCistIChOU0NvbG9yV2VsbCAqKWZvcmVncm91bmRD
b2xvclRvb2xiYXJDb2xvcldlbGwKK3sKKyAgICByZXR1cm4gKE5TQ29sb3JXZWxsICopW3NlbGYg
X3Rvb2xiYXJJdGVtV2l0aElkZW50aWZpZXI6QCJOU0ZvbnRQYW5lbFRleHRDb2xvclRvb2xiYXJJ
dGVtIl0udmlldzsKK30KKwogLSAodm9pZCljaG9vc2VVbmRlcmxpbmVNZW51SXRlbVdpdGhUaXRs
ZTooTlNTdHJpbmcgKilpdGVtVGl0bGUKIHsKLSAgICBOU1BvcFVwQnV0dG9uICpidXR0b24gPSAo
TlNQb3BVcEJ1dHRvbiAqKVtzZWxmIF90b29sYmFySXRlbVdpdGhJZGVudGlmaWVyOkAiTlNGb250
UGFuZWxVbmRlcmxpbmVUb29sYmFySXRlbSJdLnZpZXc7CisgICAgTlNQb3BVcEJ1dHRvbiAqYnV0
dG9uID0gW3NlbGYgdW5kZXJsaW5lVG9vbGJhckJ1dHRvbl07CiAgICAgW2J1dHRvbiBzZWxlY3RJ
dGVtOmZpbmRNZW51SXRlbVdpdGhUaXRsZShidXR0b24sIGl0ZW1UaXRsZSldOwogICAgIFtzZWxm
LmZvbnRFZmZlY3RzQm94IF9vcGVuRWZmZWN0c0J1dHRvbjpidXR0b25dOwogICAgIFtzZWxmIF9k
aWRDaGFuZ2VBdHRyaWJ1dGVzXTsKQEAgLTc1LDcgKzkwLDcgQEAgc3RhdGljIE5TTWVudUl0ZW0g
KmZpbmRNZW51SXRlbVdpdGhUaXRsZShOU1BvcFVwQnV0dG9uICpidXR0b24sIE5TU3RyaW5nICp0
aXRsZSkKIAogLSAodm9pZCljaG9vc2VTdHJpa2VUaHJvdWdoTWVudUl0ZW1XaXRoVGl0bGU6KE5T
U3RyaW5nICopaXRlbVRpdGxlCiB7Ci0gICAgTlNQb3BVcEJ1dHRvbiAqYnV0dG9uID0gKE5TUG9w
VXBCdXR0b24gKilbc2VsZiBfdG9vbGJhckl0ZW1XaXRoSWRlbnRpZmllcjpAIk5TRm9udFBhbmVs
U3RyaWtldGhyb3VnaFRvb2xiYXJJdGVtIl0udmlldzsKKyAgICBOU1BvcFVwQnV0dG9uICpidXR0
b24gPSBbc2VsZiBzdHJpa2VUaHJvdWdoVG9vbGJhckJ1dHRvbl07CiAgICAgW2J1dHRvbiBzZWxl
Y3RJdGVtOmZpbmRNZW51SXRlbVdpdGhUaXRsZShidXR0b24sIGl0ZW1UaXRsZSldOwogICAgIFtz
ZWxmLmZvbnRFZmZlY3RzQm94IF9vcGVuRWZmZWN0c0J1dHRvbjpidXR0b25dOwogICAgIFtzZWxm
IF9kaWRDaGFuZ2VBdHRyaWJ1dGVzXTsKQEAgLTk4LDExICsxMTMsMjEgQEAgc3RhdGljIE5TTWVu
dUl0ZW0gKmZpbmRNZW51SXRlbVdpdGhUaXRsZShOU1BvcFVwQnV0dG9uICpidXR0b24sIE5TU3Ry
aW5nICp0aXRsZSkKICAgICByZXR1cm4gKE5TU2xpZGVyICopZmluZFN1YnZpZXdPZkNsYXNzKFtz
ZWxmIF90b29sYmFySXRlbVdpdGhJZGVudGlmaWVyOkAiTlNGb250UGFuZWxTaGFkb3dPcGFjaXR5
VG9vbGJhckl0ZW0iXS52aWV3LCBOU1NsaWRlci5jbGFzcyk7CiB9CiAKKy0gKE5TU2xpZGVyICop
c2hhZG93TGVuZ3RoU2xpZGVyCit7CisgICAgcmV0dXJuIChOU1NsaWRlciAqKWZpbmRTdWJ2aWV3
T2ZDbGFzcyhbc2VsZiBfdG9vbGJhckl0ZW1XaXRoSWRlbnRpZmllcjpAIk5TRm9udFBhbmVsU2hh
ZG93T2Zmc2V0VG9vbGJhckl0ZW0iXS52aWV3LCBOU1NsaWRlci5jbGFzcyk7Cit9CisKIC0gKE5T
QnV0dG9uICopc2hhZG93VG9nZ2xlQnV0dG9uCiB7CiAgICAgcmV0dXJuIChOU0J1dHRvbiAqKVtz
ZWxmIF90b29sYmFySXRlbVdpdGhJZGVudGlmaWVyOkAiTlNGb250UGFuZWxTaGFkb3dUb2dnbGVU
b29sYmFySXRlbSJdLnZpZXc7CiB9CiAKKy0gKEJPT0wpaGFzU2hhZG93Cit7CisgICAgcmV0dXJu
IHNlbGYuc2hhZG93VG9nZ2xlQnV0dG9uLnN0YXRlID09IE5TQ29udHJvbFN0YXRlVmFsdWVPbjsK
K30KKwogLSAodm9pZCl0b2dnbGVTaGFkb3cKIHsKICAgICBOU0J1dHRvbiAqc2hhZG93VG9nZ2xl
QnV0dG9uID0gc2VsZi5zaGFkb3dUb2dnbGVCdXR0b247CkBAIC0xMTAsNiArMTM1LDE2IEBAIHN0
YXRpYyBOU01lbnVJdGVtICpmaW5kTWVudUl0ZW1XaXRoVGl0bGUoTlNQb3BVcEJ1dHRvbiAqYnV0
dG9uLCBOU1N0cmluZyAqdGl0bGUpCiAgICAgW3NlbGYgX2RpZENoYW5nZUF0dHJpYnV0ZXNdOwog
fQogCistIChkb3VibGUpc2hhZG93TGVuZ3RoCit7CisgICAgcmV0dXJuIHNlbGYuc2hhZG93TGVu
Z3RoU2xpZGVyLmRvdWJsZVZhbHVlOworfQorCistICh2b2lkKXNldFNoYWRvd0xlbmd0aDooZG91
YmxlKXNoYWRvd0xlbmd0aAoreworICAgIHNlbGYuc2hhZG93TGVuZ3RoU2xpZGVyLmRvdWJsZVZh
bHVlID0gc2hhZG93TGVuZ3RoOworfQorCiAtIChkb3VibGUpc2hhZG93T3BhY2l0eQogewogICAg
IHJldHVybiBzZWxmLnNoYWRvd09wYWNpdHlTbGlkZXIuZG91YmxlVmFsdWU7CkBAIC0xNDMsNiAr
MTc4LDIzIEBAIHN0YXRpYyBOU01lbnVJdGVtICpmaW5kTWVudUl0ZW1XaXRoVGl0bGUoTlNQb3BV
cEJ1dHRvbiAqYnV0dG9uLCBOU1N0cmluZyAqdGl0bGUpCiAgICAgcmV0dXJuIG5pbDsKIH0KIAor
LSAoQk9PTCloYXNVbmRlcmxpbmUKK3sKKyAgICBOU01lbnVJdGVtICpzaW5nbGVVbmRlcmxpbmVN
ZW51SXRlbSA9IFtzZWxmLnVuZGVybGluZVRvb2xiYXJCdXR0b24gaXRlbUF0SW5kZXg6Ml07Cisg
ICAgcmV0dXJuIHNpbmdsZVVuZGVybGluZU1lbnVJdGVtLnN0YXRlID09IE5TQ29udHJvbFN0YXRl
VmFsdWVPbjsKK30KKworLSAoQk9PTCloYXNTdHJpa2VUaHJvdWdoCit7CisgICAgTlNNZW51SXRl
bSAqc2luZ2xlU3RyaWtlVGhyb3VnaE1lbnVJdGVtID0gW3NlbGYuc3RyaWtlVGhyb3VnaFRvb2xi
YXJCdXR0b24gaXRlbUF0SW5kZXg6Ml07CisgICAgcmV0dXJuIHNpbmdsZVN0cmlrZVRocm91Z2hN
ZW51SXRlbS5zdGF0ZSA9PSBOU0NvbnRyb2xTdGF0ZVZhbHVlT247Cit9CisKKy0gKE5TQ29sb3Ig
Kilmb3JlZ3JvdW5kQ29sb3IKK3sKKyAgICByZXR1cm4gc2VsZi5mb3JlZ3JvdW5kQ29sb3JUb29s
YmFyQ29sb3JXZWxsLmNvbG9yOworfQorCiBAZW5kCiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448162</attachid>
            <date>2022-01-01 13:28:17 -0800</date>
            <delta_ts>2022-01-12 09:51:05 -0800</delta_ts>
            <desc>Rebase on trunk</desc>
            <filename>bug-190120-20220101132816.patch</filename>
            <type>text/plain</type>
            <size>42760</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGJmMmQ4MTg5NTA2ZTk5
N2QwNzRmYzVjZWQ2OGQ1MWI3NmIxMDhmNS4uMzRhNjQ2NGYxNzNjODA5NDUyMmY5NDI4M2ZmMTRh
MzdkM2YxMmI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIyLTAxLTAxICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gW1dL
Ml0gTlNGb250UGFuZWwgVUkgKGZvbnQgY29sb3IsIHRleHQgZGVjb3JhdGlvbnMsIGZvbnQgc2hh
ZG93KSBkb2Vzbid0IHVwZGF0ZSBvbiBzZWxlY3Rpb24gY2hhbmdlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAxMjAKKyAgICAgICAgcmRhcjovLzQ0
ODk3NDA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIGEgYm9vbGVhbiBgaGFzTXVsdGlwbGVGb250c2AgZmxhZyB0byBGb250QXR0cmlidXRlcywg
YW5kIHBhc3MgaXQgYXMgYW4gb3V0LXJlZmVyZW5jZSB3aGVuIGNvbXB1dGluZyB0aGUKKyAgICAg
ICAgZm9udCBhdCB0aGUgY3VycmVudCBzZWxlY3Rpb24uIFNlZSBXZWJLaXQvQ2hhbmdlTG9nIGZv
ciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3I6OmZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydCk6CisgICAg
ICAgICogZWRpdGluZy9Gb250QXR0cmlidXRlcy5oOgorCiAyMDIyLTAxLTAxICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIE1vZGFsIGNvbnRhaW5lcnMg
YXJlIGluY29ycmVjdGx5IGRldGVjdGVkIGluIG5hdmlnYXRpb24gZWxlbWVudHMgYW5kIGZpeGVk
IGRvY3VtZW50IGVsZW1lbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDgzNTMwYTkxYzEwMDlhZjY4NTVjYTVjM2Fi
ZGIwNjA1Y2E5ODdjMzUuLjMyZjFiYzVkODk2NzA4ZWVmNTU0MmNiNzA5NjJlZmI4ZmRjOTI5M2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNzEgQEAKKzIwMjItMDEtMDEgIFdlbnNvbiBIc2llaCAgPHdl
bnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXSBbV0syXSBOU0ZvbnRQYW5l
bCBVSSAoZm9udCBjb2xvciwgdGV4dCBkZWNvcmF0aW9ucywgZm9udCBzaGFkb3cpIGRvZXNuJ3Qg
dXBkYXRlIG9uIHNlbGVjdGlvbiBjaGFuZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MDEyMAorICAgICAgICByZGFyOi8vNDQ4OTc0MDUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHksIGlu
IFdlYktpdDIsIHRoZXJlIGlzIG5vIG1lY2hhbmlzbSBmb3IgdXBkYXRpbmcgdGhlIE5TRm9udE1h
bmFnZXIgd2l0aCBuZXcgZm9udCBhdHRyaWJ1dGVzIHdoZW4gdGhlCisgICAgICAgIHNlbGVjdGlv
biBjaGFuZ2VzLiBXaGlsZSB3ZSBkbyB1cGRhdGUgdGhlIHNlbGVjdGVkIE5TRm9udCwgd2UgZG8g
c28gYnkgcmVxdWVzdGluZyBmb250IGZhbWlseSBhbmQgZm9udCBzaXplIHZpYQorICAgICAgICBh
biBJUEMgcmVxdWVzdCwgYEZvbnRBdFNlbGVjdGlvbmAsIGJ1dCB0aGlzIGRvZXMgbm90IGluY2x1
ZGUgYXR0cmlidXRlcyBsaWtlIHVuZGVybGluZSwgc3RyaWtlLXRocm91Z2gsIGNvbG9yLAorICAg
ICAgICBhbmQgdGV4dCBzaGFkb3dzLgorCisgICAgICAgIEluc3RlYWQsIHdlIGNhbiByZW1vdmUg
dGhpcyBgRm9udEF0U2VsZWN0aW9uYCBJUEMgcmVxdWVzdCBtZWNoYW5pc20gZW50aXJlbHksIGFu
ZCByZXF1ZXN0IGBGb250QXR0cmlidXRlc2AuIFRoaXMKKyAgICAgICAgYWxsb3dzIHVzIHRvIHNl
dCB0aGUgY3VycmVudGx5IHNlbGVjdGVkIE5TRm9udCBvbiB0aGUgTlNGb250TWFuYWdlciwgYW5k
IGFsc28gdXBkYXRlIHRoZSBmb250IG1hbmFnZXIgd2l0aCB0aGUKKyAgICAgICAgZnVsbCBkaWN0
aW9uYXJ5IG9mIGZvbnQgYXR0cmlidXRlcy4KKworICAgICAgICBUZXN0OiBGb250QXR0cmlidXRl
cy5Gb250QXR0cmlidXRlc0FmdGVyQ2hhbmdpbmdTZWxlY3Rpb24KKworICAgICAgICAqIFNoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PEZvbnRBdHRyaWJ1dGVzPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxG
b250QXR0cmlidXRlcz46OmRlY29kZSk6CisKKyAgICAgICAgRW5jb2RlIGFuZCBkZWNvZGUgdGhl
IG5ldyBgaGFzTXVsdGlwbGVGb250c2AgZmxhZyBpbiBGb250QXR0cmlidXRlcy4gQWRkaXRpb25h
bGx5LCB0YWtlIHRoaXMgb3Bwb3J0dW5pdHkgdG8KKyAgICAgICAgbW9kZXJuaXplIHNvbWUgb2Yg
dGhlIGRlY29kaW5nLXNpZGUgbG9naWMgYnkgZGVjb2RpbmcgZWFjaCBtZW1iZXIgaW50byBhIGBz
dGQ6Om9wdGlvbmFsYCBhbmQgY3JlYXRpbmcgdGhlIGZpbmFsCisgICAgICAgIGRlc2VyaWFsaXpl
ZCBGb250QXR0cmlidXRlcyBhdCB0aGUgZW5kLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dXBkYXRlRm9u
dE1hbmFnZXJJZk5lZWRlZCk6CisKKyAgICAgICAgUmF0aGVyIHRoYW4gZ3JhYmJpbmcganVzdCB0
aGUgZm9udCBmYW1pbHkgYW5kIGZvbnQgc2l6ZSB1c2luZyBgZm9udEF0U2VsZWN0aW9uYCwgcmVx
dWVzdCBGb250QXR0cmlidXRlcyBpbnN0ZWFkCisgICAgICAgIGFuZCBjb252ZXJ0IGl0IHRvIGEg
TlNEaWN0aW9uYXJ5IHRvIGNhbGwgYC1bTlNGb250TWFuYWdlciBzZXRTZWxlY3RlZEF0dHJpYnV0
ZXM6aXNNdWx0aXBsZTpdYC4KKworICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dHlwaW5n
QXR0cmlidXRlc1dpdGhDb21wbGV0aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpjaGFuZ2VGb250QXR0cmlidXRlc0Zyb21TZW5kZXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6Y2hhbmdlRm9udEZyb21Gb250TWFuYWdlcik6CisKKyAgICAgICAgUmVt
b3ZlIGNvZGUgdG8gdXBkYXRlIHRoZSBmb250IG1hbmFnZXIgYWZ0ZXIgY2hhbmdpbmcgZm9udCBh
dHRyaWJ1dGVzLiBUaGlzIGlzIHVubmVjZXNzYXJ5IGJlY2F1c2UgdGhlIHByb2Nlc3MKKyAgICAg
ICAgb2YgZXhlY3V0aW5nIGFuIGVkaXQgY29tbWFuZCBpbiBvcmRlciB0byBjaGFuZ2UgdHlwaW5n
IHN0eWxlIHdpbGwgdHJpZ2dlciBhbiBlZGl0b3Igc3RhdGUgdXBkYXRlIGFueXdheXMsIHdoaWNo
CisgICAgICAgIHRoZW4gY2F1c2VzIHVzIHRvIHJlcXVlc3QgbmV3IGZvbnQgYXR0cmlidXRlcy4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RGb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQpOgor
CisgICAgICAgIE1vdmUgdGhlIGNoZWNrIGZvciBjYWNoZWQgZm9udGF0dHJpYnV0ZXMgdG8gV2Vi
UGFnZVByb3h5LCBmcm9tIFdlYlZpZXdJbXBsLiBUaGlzIGFsbG93cyB1cyB0byBnZXQgcmlkIG9m
IGEKKyAgICAgICAgaGVscGVyIGZ1bmN0aW9uIG9uIFdlYlBhZ2VQcm94eSB0byBncmFiIHRoZSBj
dXJyZW50IGNhY2hlZCBmb250IGF0dHJpYnV0ZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkVXBkYXRlRWRpdG9yU3RhdGUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRpZFVwZGF0ZUVkaXRvclN0YXRlKToKKworICAgICAgICBTZXQg
Y2FjaGVkIEZvbnRBdHRyaWJ1dGVzIChpZiBwcmVzZW50KSAqcHJpb3IqIHRvIGRpc3BhdGNoaW5n
IGEgc2VsZWN0aW9uIGNoYW5nZS4gVGhpcyBhbGxvd3MgYW55IHN1YnNlcXVlbnQKKyAgICAgICAg
cmVxdWVzdCBmb3IgZm9udCBhdHRyaWJ1dGVzIGF0IHRoZSBzZWxlY3Rpb24gdG8gcmV0dXJuIGlt
bWVkaWF0ZWx5IHdpdGggdGhlIHJlc3VsdC4KKworICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmZvbnRBdFNlbGVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbjoKKworICAgICAgICBSZW1vdmUgdGhlIGBGb250QXRTZWxlY3Rpb25DYWxsYmFja2Ag
SVBDIG1lc3NhZ2UgKGFuZCBhbGwgYXNzb2NpYXRlZCBjb2RlKS4gVGhpcyBjb2RlcGF0aCB3YXMg
cHJldmlvdXNseSBvbmx5CisgICAgICAgIGV4ZXJjaXNlZCB3aGVuIHVwZGF0aW5nIHRoZSBmb250
IHBhbmVsIG9uIG1hY09TLCBhbmQgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSBiZWNhdXNlIHdlIGp1
c3QgdXNlCisgICAgICAgIGByZXF1ZXN0Rm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0YCBp
bnN0ZWFkLCB3aGljaCBhbGxvd3MgdXMgdG8gZ3JhYiBub3Qgb25seSB0aGUgTlNGb250LCBidXQg
YWxzbyBhbGwKKyAgICAgICAgcGxhdGZvcm0gdHlwaW5nIGF0dHJpYnV0ZXMgYXQgdGhlIHNlbGVj
dGlvbi4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Zm9udEF0U2VsZWN0aW9uKTogRGVsZXRlZC4KKwog
MjAyMi0wMS0wMSAgSmVmZiBNaWxsZXIgIDxqZWZmbUBhcHBsZS5jb20+CiAKICAgICAgICAgVXBk
YXRlIHVzZXItdmlzaWJsZSBjb3B5cmlnaHQgc3RyaW5ncyB0byBpbmNsdWRlIDIwMjIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCBjNTI3ZTI3NzM5MDg4OWJlYjg1MTM0MjRiMzE3OTVh
YWUxZDEwMTU4Li4wZGZhYjZmYmZmYzQ4MzY4ZWQ5ZWE2NTdlY2I4ZDhiMzExY2FlMTNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC00MDQxLDggKzQwNDEsNyBAQCBzdGF0aWMgVmVj
dG9yPFRleHRMaXN0PiBlZGl0YWJsZVRleHRMaXN0c0F0UG9zaXRpb25JbkRlc2NlbmRpbmdPcmRl
cihjb25zdCBQb3NpdAogRm9udEF0dHJpYnV0ZXMgRWRpdG9yOjpmb250QXR0cmlidXRlc0F0U2Vs
ZWN0aW9uU3RhcnQoKQogewogICAgIEZvbnRBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7Ci0gICAgYm9v
bCBoYXNNdWx0aXBsZUZvbnRzID0gZmFsc2U7IC8vIEZJWE1FICgxOTAxMjApOiBBZGQgYGhhc011
bHRpcGxlRm9udHNgIGFzIGEgbWVtYmVyIGluIGBGb250QXR0cmlidXRlc2AuCi0gICAgYXR0cmli
dXRlcy5mb250ID0gZm9udEZvclNlbGVjdGlvbihoYXNNdWx0aXBsZUZvbnRzKTsKKyAgICBhdHRy
aWJ1dGVzLmZvbnQgPSBmb250Rm9yU2VsZWN0aW9uKGF0dHJpYnV0ZXMuaGFzTXVsdGlwbGVGb250
cyk7CiAKICAgICBSZWZQdHI8Tm9kZT4gbm9kZVRvUmVtb3ZlOwogICAgIGF1dG8gbm9kZVJlbW92
YWxTY29wZSA9IG1ha2VTY29wZUV4aXQoWyZub2RlVG9SZW1vdmVdKCkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRlcy5oIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9Gb250QXR0cmlidXRlcy5oCmluZGV4IDkxZGU0NDUzMGMxZDhhZjM1NWRkYWJjM2Rh
ZjEwMGVkZTE5NWIxMjMuLjY3NDVmMTA3ZjFiMDgxM2I4MDBkODA1NmYxYzg0YzdhZTA1MmFmYmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0ZXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZvbnRBdHRyaWJ1dGVzLmgKQEAgLTkwLDYgKzkwLDcg
QEAgc3RydWN0IEZvbnRBdHRyaWJ1dGVzIHsKICAgICBWZWN0b3I8VGV4dExpc3Q+IHRleHRMaXN0
czsKICAgICBib29sIGhhc1VuZGVybGluZSB7IGZhbHNlIH07CiAgICAgYm9vbCBoYXNTdHJpa2VU
aHJvdWdoIHsgZmFsc2UgfTsKKyAgICBib29sIGhhc011bHRpcGxlRm9udHMgeyBmYWxzZSB9Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggZWE1OWYwODkxNmRkNzNlNzI3NzhiNzhkZWU5
NjcwNzExODU0ODVlYi4uNjAzNWQwMTE3Yzk2MmRhZjZjZDU3ODc3OTA4MGUxYzJhYWI5MDNmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBA
IC0yOTMyLDcgKzI5MzIsMTMgQEAgc3RkOjpvcHRpb25hbDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
PiBBcmd1bWVudENvZGVyPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+OjpkZWMKIAogdm9pZCBBcmd1
bWVudENvZGVyPEZvbnRBdHRyaWJ1dGVzPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IEZvbnRBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQogewotICAgIGVuY29kZXIgPDwgYXR0cmlidXRl
cy5iYWNrZ3JvdW5kQ29sb3IgPDwgYXR0cmlidXRlcy5mb3JlZ3JvdW5kQ29sb3IgPDwgYXR0cmli
dXRlcy5mb250U2hhZG93IDw8IGF0dHJpYnV0ZXMuaGFzVW5kZXJsaW5lIDw8IGF0dHJpYnV0ZXMu
aGFzU3RyaWtlVGhyb3VnaCA8PCBhdHRyaWJ1dGVzLnRleHRMaXN0czsKKyAgICBlbmNvZGVyIDw8
IGF0dHJpYnV0ZXMuYmFja2dyb3VuZENvbG9yOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5m
b3JlZ3JvdW5kQ29sb3I7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmZvbnRTaGFkb3c7Cisg
ICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmhhc1VuZGVybGluZTsKKyAgICBlbmNvZGVyIDw8IGF0
dHJpYnV0ZXMuaGFzU3RyaWtlVGhyb3VnaDsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuaGFz
TXVsdGlwbGVGb250czsKKyAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMudGV4dExpc3RzOwogICAg
IGVuY29kZXIgPDwgYXR0cmlidXRlcy5ob3Jpem9udGFsQWxpZ25tZW50OwogICAgIGVuY29kZXIg
PDwgYXR0cmlidXRlcy5zdWJzY3JpcHRPclN1cGVyc2NyaXB0OwogICAgIGVuY29kZXIgPDwgYXR0
cmlidXRlcy5mb250OwpAQCAtMjk0MCwzMCArMjk0Niw0OSBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8
Rm9udEF0dHJpYnV0ZXM+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRm9udEF0dHJp
YnV0ZQogCiBzdGQ6Om9wdGlvbmFsPEZvbnRBdHRyaWJ1dGVzPiBBcmd1bWVudENvZGVyPEZvbnRB
dHRyaWJ1dGVzPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgRm9udEF0dHJpYnV0
ZXMgYXR0cmlidXRlczsKKyAgICBzdGQ6Om9wdGlvbmFsPENvbG9yPiBiYWNrZ3JvdW5kQ29sb3I7
CisgICAgZGVjb2RlciA+PiBiYWNrZ3JvdW5kQ29sb3I7CisgICAgaWYgKCFiYWNrZ3JvdW5kQ29s
b3IpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGF0dHJpYnV0ZXMuYmFja2dyb3VuZENvbG9yKSkKKyAgICBzdGQ6Om9wdGlvbmFsPENvbG9y
PiBmb3JlZ3JvdW5kQ29sb3I7CisgICAgZGVjb2RlciA+PiBmb3JlZ3JvdW5kQ29sb3I7CisgICAg
aWYgKCFmb3JlZ3JvdW5kQ29sb3IpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuZm9yZWdyb3VuZENvbG9yKSkKKyAgICBz
dGQ6Om9wdGlvbmFsPEZvbnRTaGFkb3c+IGZvbnRTaGFkb3c7CisgICAgZGVjb2RlciA+PiBmb250
U2hhZG93OworICAgIGlmICghZm9udFNoYWRvdykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5mb250U2hhZG93KSkKKyAg
ICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGhhc1VuZGVybGluZTsKKyAgICBkZWNvZGVyID4+IGhhc1Vu
ZGVybGluZTsKKyAgICBpZiAoIWhhc1VuZGVybGluZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5oYXNVbmRlcmxpbmUp
KQorICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaGFzU3RyaWtlVGhyb3VnaDsKKyAgICBkZWNvZGVy
ID4+IGhhc1N0cmlrZVRocm91Z2g7CisgICAgaWYgKCFoYXNTdHJpa2VUaHJvdWdoKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1
dGVzLmhhc1N0cmlrZVRocm91Z2gpKQorICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaGFzTXVsdGlw
bGVGb250czsKKyAgICBkZWNvZGVyID4+IGhhc011bHRpcGxlRm9udHM7CisgICAgaWYgKCFoYXNN
dWx0aXBsZUZvbnRzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnRleHRMaXN0cykpCisgICAgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8VGV4dExpc3Q+PiB0ZXh0TGlzdHM7CisgICAgZGVjb2RlciA+PiB0ZXh0TGlzdHM7Cisg
ICAgaWYgKCF0ZXh0TGlzdHMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuaG9yaXpvbnRhbEFsaWdubWVudCkpCisgICAg
c3RkOjpvcHRpb25hbDxGb250QXR0cmlidXRlczo6SG9yaXpvbnRhbEFsaWdubWVudD4gaG9yaXpv
bnRhbEFsaWdubWVudDsKKyAgICBkZWNvZGVyID4+IGhvcml6b250YWxBbGlnbm1lbnQ7CisgICAg
aWYgKCFob3Jpem9udGFsQWxpZ25tZW50KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnN1YnNjcmlwdE9yU3VwZXJzY3Jp
cHQpKQorICAgIHN0ZDo6b3B0aW9uYWw8Rm9udEF0dHJpYnV0ZXM6OlN1YnNjcmlwdE9yU3VwZXJz
Y3JpcHQ+IHN1YnNjcmlwdE9yU3VwZXJzY3JpcHQ7CisgICAgZGVjb2RlciA+PiBzdWJzY3JpcHRP
clN1cGVyc2NyaXB0OworICAgIGlmICghc3Vic2NyaXB0T3JTdXBlcnNjcmlwdCkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPEZvbnQ+PiBm
b250OwpAQCAtMjk3MSw5ICsyOTk2LDcgQEAgc3RkOjpvcHRpb25hbDxGb250QXR0cmlidXRlcz4g
QXJndW1lbnRDb2RlcjxGb250QXR0cmlidXRlcz46OmRlY29kZShEZWNvZGVyJiBkZWMKICAgICBp
ZiAoIWZvbnQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBhdHRyaWJ1dGVz
LmZvbnQgPSBXVEZNb3ZlKCpmb250KTsKLQotICAgIHJldHVybiBhdHRyaWJ1dGVzOworICAgIHJl
dHVybiB7IHsgV1RGTW92ZSgqZm9udCksIFdURk1vdmUoKmJhY2tncm91bmRDb2xvciksIFdURk1v
dmUoKmZvcmVncm91bmRDb2xvciksIFdURk1vdmUoKmZvbnRTaGFkb3cpLCAqc3Vic2NyaXB0T3JT
dXBlcnNjcmlwdCwgKmhvcml6b250YWxBbGlnbm1lbnQsIFdURk1vdmUoKnRleHRMaXN0cyksICpo
YXNVbmRlcmxpbmUsICpoYXNTdHJpa2VUaHJvdWdoLCAqaGFzTXVsdGlwbGVGb250cyB9IH07CiB9
CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAyOTAyNjMyOTM2NGQ4NGMzZGRjMTk4MmYz
YTQwOTNkMTAwMjQ0MzA4Li41MTRkMmYyNDlkOGQzZjE0MDBiMTNhNDViNDQ2MzY2MWQxMzQzNTVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAt
MzA1NSwzMiArMzA1NSwxNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjp1cGRhdGVGb250TWFuYWdlcklm
TmVlZGVkKCkKICAgICBpZiAoIWZvbnRQYW5lbElzVmlzaWJsZSAmJiAhbV9wYWdlLT5lZGl0b3JT
dGF0ZSgpLmlzQ29udGVudFJpY2hseUVkaXRhYmxlKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3BhZ2UtPmZvbnRBdFNlbGVjdGlvbihbXShjb25zdCBGb250SW5mbyYgZm9udEluZm8sIGRvdWJs
ZSBmb250U2l6ZSwgYm9vbCBzZWxlY3Rpb25IYXNNdWx0aXBsZUZvbnRzKSB7Ci0KLSAgICAgICAg
QkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICAgICAgTlNEaWN0aW9uYXJ5ICphdHRy
aWJ1dGVEaWN0aW9uYXJ5ID0gKF9fYnJpZGdlIE5TRGljdGlvbmFyeSAqKWZvbnRJbmZvLmZvbnRB
dHRyaWJ1dGVEaWN0aW9uYXJ5LmdldCgpOwotICAgICAgICBpZiAoIWF0dHJpYnV0ZURpY3Rpb25h
cnkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgYXV0byBmb250ID0gZm9udFdpdGhB
dHRyaWJ1dGVzKGF0dHJpYnV0ZURpY3Rpb25hcnksIGZvbnRTaXplKTsKLSAgICAgICAgaWYgKCFm
b250KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIFtOU0ZvbnRNYW5hZ2VyLnNoYXJl
ZEZvbnRNYW5hZ2VyIHNldFNlbGVjdGVkRm9udDpmb250IGlzTXVsdGlwbGU6c2VsZWN0aW9uSGFz
TXVsdGlwbGVGb250c107Ci0KLSAgICAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAg
IG1fcGFnZS0+cmVxdWVzdEZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydChbXSAoYXV0byYg
YXR0cmlidXRlcykgeworICAgICAgICBhdXRvIGF0dHJpYnV0ZXNEaWN0aW9uYXJ5ID0gYXR0cmli
dXRlcy5jcmVhdGVEaWN0aW9uYXJ5KCk7CisgICAgICAgIGlmIChOU0ZvbnQgKm5zRm9udCA9IFth
dHRyaWJ1dGVzRGljdGlvbmFyeSBvYmplY3RGb3JLZXk6TlNGb250QXR0cmlidXRlTmFtZV0pIHsK
KyAgICAgICAgICAgIFtOU0ZvbnRNYW5hZ2VyLnNoYXJlZEZvbnRNYW5hZ2VyIHNldFNlbGVjdGVk
Rm9udDpuc0ZvbnQgaXNNdWx0aXBsZTphdHRyaWJ1dGVzLmhhc011bHRpcGxlRm9udHNdOworICAg
ICAgICAgICAgW05TRm9udE1hbmFnZXIuc2hhcmVkRm9udE1hbmFnZXIgc2V0U2VsZWN0ZWRBdHRy
aWJ1dGVzOmF0dHJpYnV0ZXNEaWN0aW9uYXJ5LmdldCgpIGlzTXVsdGlwbGU6YXR0cmlidXRlcy5o
YXNNdWx0aXBsZUZvbnRzXTsKKyAgICAgICAgfQogICAgIH0pOwogfQogCiB2b2lkIFdlYlZpZXdJ
bXBsOjp0eXBpbmdBdHRyaWJ1dGVzV2l0aENvbXBsZXRpb25IYW5kbGVyKHZvaWQoXmNvbXBsZXRp
b24pKE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKikpCiB7Ci0gICAgaWYgKGF1dG8gYXR0
cmlidXRlcyA9IG1fcGFnZS0+Y2FjaGVkRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KCkp
IHsKLSAgICAgICAgYXV0byBhdHRyaWJ1dGVzQXNEaWN0aW9uYXJ5ID0gYXR0cmlidXRlcy0+Y3Jl
YXRlRGljdGlvbmFyeSgpOwotICAgICAgICBjb21wbGV0aW9uKGF0dHJpYnV0ZXNBc0RpY3Rpb25h
cnkuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgbV9wYWdlLT5yZXF1ZXN0
Rm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KFtjb21wbGV0aW9uID0gbWFrZUJsb2NrUHRy
KGNvbXBsZXRpb24pXSAoY29uc3QgV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMp
IHsKICAgICAgICAgYXV0byBhdHRyaWJ1dGVzQXNEaWN0aW9uYXJ5ID0gYXR0cmlidXRlcy5jcmVh
dGVEaWN0aW9uYXJ5KCk7CiAgICAgICAgIGNvbXBsZXRpb24oYXR0cmlidXRlc0FzRGljdGlvbmFy
eS5nZXQoKSk7CkBAIC0zMTEyLDcgKzMwOTcsNiBAQCB2b2lkIFdlYlZpZXdJbXBsOjpjaGFuZ2VG
b250QXR0cmlidXRlc0Zyb21TZW5kZXIoaWQgc2VuZGVyKQogICAgICAgICByZXR1cm47CiAKICAg
ICBtX3BhZ2UtPmNoYW5nZUZvbnRBdHRyaWJ1dGVzKFdlYkNvcmU6OmNvbXB1dGVkRm9udEF0dHJp
YnV0ZUNoYW5nZXMoTlNGb250TWFuYWdlci5zaGFyZWRGb250TWFuYWdlciwgc2VuZGVyKSk7Ci0g
ICAgdXBkYXRlRm9udE1hbmFnZXJJZk5lZWRlZCgpOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjpj
aGFuZ2VGb250RnJvbUZvbnRNYW5hZ2VyKCkKQEAgLTMxMjIsNyArMzEwNiw2IEBAIHZvaWQgV2Vi
Vmlld0ltcGw6OmNoYW5nZUZvbnRGcm9tRm9udE1hbmFnZXIoKQogICAgICAgICByZXR1cm47CiAK
ICAgICBtX3BhZ2UtPmNoYW5nZUZvbnQoV2ViQ29yZTo6Y29tcHV0ZWRGb250Q2hhbmdlcyhOU0Zv
bnRNYW5hZ2VyLnNoYXJlZEZvbnRNYW5hZ2VyKSk7Ci0gICAgdXBkYXRlRm9udE1hbmFnZXJJZk5l
ZWRlZCgpOwogfQogCiBzdGF0aWMgTlNNZW51SXRlbSAqbWVudUl0ZW0oaWQgPE5TVmFsaWRhdGVk
VXNlckludGVyZmFjZUl0ZW0+IGl0ZW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAppbmRleCBiNzkwMzI5NTIyMWQ3MWQ5NzlmNDhiNmQ2NmY2ZmFhNzc1MTI3YjAyLi41
MTdmNjIwN2RjNTY5YjFhZjQ5Y2I2NGE4MDIyNDVmMDI0NjkzZDRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTI1NjIsNiArMjU2MiwxMSBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6cmVxdWVzdEZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydChDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAg
cmV0dXJuIGNhbGxiYWNrKHsgfSk7CiAKKyAgICBpZiAoYXV0byBhdHRyaWJ1dGVzID0gbV9jYWNo
ZWRGb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQpIHsKKyAgICAgICAgY2FsbGJhY2soKmF0
dHJpYnV0ZXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0Rm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0
YXJ0KCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0gKGNvbnN0IFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzJiBhdHRyaWJ1
dGVzKSBtdXRhYmxlIHsKICAgICAgICAgbV9jYWNoZWRGb250QXR0cmlidXRlc0F0U2VsZWN0aW9u
U3RhcnQgPSBhdHRyaWJ1dGVzOwogICAgICAgICBjYWxsYmFjayhhdHRyaWJ1dGVzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNjZiNDEyNjkxY2Y3NDQ3MTE0NDgw
MTRkNTg5OTM3ZjY5ZjY4OTdlMC4uNmYzNTQ5MzNiMTFmYWEwODU3NTU1MjJjNDdiZjdlZTMxN2Zl
OTcwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTc5Miw4ICs3
OTIsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFdlYkNv
cmU6OldyaXRpbmdEaXJlY3Rpb24pOwogCi0gICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGb250
QXR0cmlidXRlcz4gY2FjaGVkRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KCkgY29uc3Qg
eyByZXR1cm4gbV9jYWNoZWRGb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQ7IH0KLQogI2lm
IEhBVkUoVE9VQ0hfQkFSKQogICAgIGNvbnN0IFRvdWNoQmFyTWVudURhdGEmIHRvdWNoQmFyTWVu
dURhdGEoKSBjb25zdCB7IHJldHVybiBtX3RvdWNoQmFyTWVudURhdGE7IH0KICNlbmRpZgpAQCAt
OTk1LDcgKzk5Myw2IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIGF0
dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5n
ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6QXR0cmlidXRlZFN0cmlu
ZyYsIGNvbnN0IEVkaXRpbmdSYW5nZSYpPiYmKTsKLSAgICB2b2lkIGZvbnRBdFNlbGVjdGlvbihD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEZvbnRJbmZvJiwgZG91YmxlLCBib29sKT4mJik7
CiAKICAgICB2b2lkIHN0YXJ0V2luZG93RHJhZygpOwogICAgIE5TV2luZG93ICpwbGF0Zm9ybVdp
bmRvdygpOwpAQCAtMjM1Myw5ICsyMzUwLDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkUmVj
ZWl2ZUV2ZW50KHVpbnQzMl90IG9wYXF1ZVR5cGUsIGJvb2wgaGFuZGxlZCk7CiAgICAgdm9pZCBk
aWRVcGRhdGVSZW5kZXJpbmdBZnRlckNvbW1pdHRpbmdMb2FkKCk7Ci0jaWYgUExBVEZPUk0oTUFD
KQotICAgIHZvaWQgZm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soY29uc3QgRm9udEluZm8mLCBkb3Vi
bGUsIGJvb2wsIENhbGxiYWNrSUQpOwotI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICB2b2lkIGludGVycHJldEtleUV2ZW50KGNvbnN0IEVkaXRvclN0YXRlJiwgYm9vbCBpc0No
YXJFdmVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBzaG93
UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgZWxlbWVudFJlY3QsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSwgY29uc3QgU3RyaW5n
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5
SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpp
bmRleCA4Mjk4YmViODU3YzJjNWE3YmY2NGMxODRmYWQ4YTBlZWNlMzIwYTEwLi5hMTNiNzJjYmVl
MGZhMjE4MmZhZjcxY2VlZWJlZGFjYjVhN2VhYWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTEwNTEsMTAgKzEwNTEsMTAgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZFVwZGF0ZUVkaXRvclN0YXRlKGNvbnN0IEVkaXRvclN0YXRlJiBv
bGRFZGl0b3JTdGF0ZSwgY29uc3QKICAgICBpZiAobmV3RWRpdG9yU3RhdGUuc2hvdWxkSWdub3Jl
U2VsZWN0aW9uQ2hhbmdlcykKICAgICAgICAgcmV0dXJuOwogICAgIAorICAgIHVwZGF0ZUZvbnRB
dHRyaWJ1dGVzQWZ0ZXJFZGl0b3JTdGF0ZUNoYW5nZSgpOwogICAgIC8vIFdlIGFsd2F5cyBuZWVk
IHRvIG5vdGlmeSB0aGUgY2xpZW50IG9uIGlPUyB0byBtYWtlIHN1cmUgdGhlIHNlbGVjdGlvbiBp
cyByZWRyYXduLAogICAgIC8vIGV2ZW4gZHVyaW5nIGNvbXBvc2l0aW9uIHRvIHN1cHBvcnQgcGhy
YXNlIGJvdW5kYXJ5IGdlc3R1cmUuCiAgICAgcGFnZUNsaWVudCgpLnNlbGVjdGlvbkRpZENoYW5n
ZSgpOwotICAgIHVwZGF0ZUZvbnRBdHRyaWJ1dGVzQWZ0ZXJFZGl0b3JTdGF0ZUNoYW5nZSgpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hEaWRVcGRhdGVFZGl0b3JTdGF0ZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCA2
YTQxNmQzMDkyMzk3NTdkOTczZjA0NTYxZjQzY2NjYWZiOGJhM2ZmLi5iNzhjNzE4NzUxOWViMWVm
ZDJkZDdjNTIzODFiZGNlMWNmNjBiMjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTIwNiwxNiArMjA2LDYgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVk
aXRpbmdSYW5nZSYKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkF0
dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKHJhbmdlKSwgV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpmb250QXRTZWxlY3Rp
b24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBGb250SW5mbyYsIGRvdWJsZSwgYm9vbCk+
JiYgY2FsbGJhY2spCi17Ci0gICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7Ci0gICAgICAg
IGNhbGxiYWNrKHsgfSwgMCwgZmFsc2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpGb250QXRTZWxlY3Rpb24oKSwg
V1RGTW92ZShjYWxsYmFjaykpOwotfQotCiBTdHJpbmcgV2ViUGFnZVByb3h5OjpzdHJpbmdTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKCkKIHsKICAgICBTdHJpbmcgdmFsdWU7CkBAIC01NzMsOSArNTYz
LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFVwZGF0ZUVkaXRvclN0YXRlKGNvbnN0IEVkaXRv
clN0YXRlJiBvbGRFZGl0b3JTdGF0ZSwgY29uc3QKICAgICAKICAgICBpZiAobmV3RWRpdG9yU3Rh
dGUuc2hvdWxkSWdub3JlU2VsZWN0aW9uQ2hhbmdlcykKICAgICAgICAgcmV0dXJuOwotICAgIAot
ICAgIHBhZ2VDbGllbnQoKS5zZWxlY3Rpb25EaWRDaGFuZ2UoKTsKKwogICAgIHVwZGF0ZUZvbnRB
dHRyaWJ1dGVzQWZ0ZXJFZGl0b3JTdGF0ZUNoYW5nZSgpOworICAgIHBhZ2VDbGllbnQoKS5zZWxl
Y3Rpb25EaWRDaGFuZ2UoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnN0YXJ0V2luZG93RHJh
ZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYTk0
YjViOWQ3ZmUzMmYyNGE4NmRhYWFkNDQ4NDJiMGNkZDBhZWIyZi4uNWVhNjRmZTQwNjU3ZDExNDBh
MDViNjNmNmViNWEyNzQ0ZmIwODg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaApAQCAtOTU2LDcgKzk1Niw2IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JN
KE1BQykKICAgICB2b2lkIGF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5j
KGNvbnN0IEVkaXRpbmdSYW5nZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29y
ZTo6QXR0cmlidXRlZFN0cmluZyYsIGNvbnN0IEVkaXRpbmdSYW5nZSYpPiYmKTsKLSAgICB2b2lk
IGZvbnRBdFNlbGVjdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEZvbnRJbmZvJiwg
ZG91YmxlLCBib29sKT4mJik7CiAgICAgdm9pZCByZXF1ZXN0QWNjZXB0c0ZpcnN0TW91c2UoaW50
IGV2ZW50TnVtYmVyLCBjb25zdCBXZWJLaXQ6OldlYk1vdXNlRXZlbnQmKTsKICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgppbmRleCBiMjcyMjk0NzFlYWU4NmVlNTk4MTk4M2RkNTdiNWU3YTgyOTFjZDRiLi5mYjA3
OGQwMTc0YmM3MDM5OTQwY2I0Yzc2NWU1NzcyN2IwNDc3YWU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTQ3MSw3
ICs0NzEsNiBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBX
ZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogI2VuZGlmCiAjaWYgUExBVEZPUk0o
TUFDKQogICAgIEF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKHN0cnVj
dCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSByYW5nZSkgLT4gKHN0cnVjdCBXZWJDb3JlOjpBdHRyaWJ1
dGVkU3RyaW5nIHN0cmluZywgc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJhbmdlKSBBc3lu
YwotICAgIEZvbnRBdFNlbGVjdGlvbigpIC0+IChzdHJ1Y3QgV2ViS2l0OjpGb250SW5mbyBmb250
SW5mbywgZG91YmxlIGZvbnRTaXplLCBib29sIHNlbGVjdGlvbkhhc011bHRpcGxlRm9udHMpIEFz
eW5jCiAgICAgUmVxdWVzdEFjY2VwdHNGaXJzdE1vdXNlKGludCBldmVudE51bWJlciwgV2ViS2l0
OjpXZWJNb3VzZUV2ZW50IGV2ZW50KQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggYjFlZTAxM2U4YjBmNTNi
MGQ3YzVkOGUxMTcwOTNjYmQwMWFkYjVhOS4uM2UzNDA5ZmI5NDhlMGJlNzEwZTMxMjQ3MmU3ZWY0
ZDA3NmJlYTRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dlYlBhZ2VNYWMubW0KQEAgLTM1OSwzOSArMzU5LDYgQEAgdm9pZCBXZWJQYWdlOjphdHRy
aWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2Um
IGVkaXQKICAgICBjb21wbGV0aW9uSGFuZGxlcih7IFdURk1vdmUoYXR0cmlidXRlZFN0cmluZyks
IG5pbCB9LCByYW5nZVRvU2VuZCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Zm9udEF0U2VsZWN0aW9u
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRm9udEluZm8mLCBkb3VibGUsIGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGJvb2wgc2VsZWN0aW9uSGFzTXVsdGlwbGVGb250
cyA9IGZhbHNlOwotICAgIGF1dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKLQotICAgIGlmIChmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rp
b24oKS5pc05vbmUoKSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIDAsIGZhbHNl
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8gZm9udCA9IGZyYW1lLmVkaXRv
cigpLmZvbnRGb3JTZWxlY3Rpb24oc2VsZWN0aW9uSGFzTXVsdGlwbGVGb250cyk7Ci0gICAgaWYg
KCFmb250KSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgMCwgZmFsc2UpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byBjdEZvbnQgPSBmb250LT5nZXRDVEZvbnQo
KTsKLSAgICBpZiAoIWN0Rm9udCkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIDAs
IGZhbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8gZm9udERlc2NyaXB0
b3IgPSBhZG9wdENGKENURm9udENvcHlGb250RGVzY3JpcHRvcihjdEZvbnQpKTsKLSAgICBpZiAo
IWZvbnREZXNjcmlwdG9yKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgMCwgZmFs
c2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY29tcGxldGlvbkhhbmRsZXIoeyBh
ZG9wdENGKENURm9udERlc2NyaXB0b3JDb3B5QXR0cmlidXRlcyhmb250RGVzY3JpcHRvci5nZXQo
KSkpIH0sIENURm9udEdldFNpemUoY3RGb250KSwgc2VsZWN0aW9uSGFzTXVsdGlwbGVGb250cyk7
Ci19Ci0gICAgCi0KLQogI2lmIEVOQUJMRShQREZLSVRfUExVR0lOKQogCiBEaWN0aW9uYXJ5UG9w
dXBJbmZvIFdlYlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JTZWxlY3Rpb25JblBERlBsdWdp
bihQREZTZWxlY3Rpb24gKnNlbGVjdGlvbiwgUERGUGx1Z2luJiBwZGZQbHVnaW4sIE5TRGljdGlv
bmFyeSAqb3B0aW9ucywgV2ViQ29yZTo6VGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRp
b24gcHJlc2VudGF0aW9uVHJhbnNpdGlvbikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyYWUwMmNiZjg4NDc1NjlhZjFkNTI1YzViNDg1ZDlhYjY5
NmU2YjY5Li4wOWUxMGQwYTBjMmFlZGE2ZTMxYzNmM2FkNTEwZjRmYjg0NzI5YzUwIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTcg
QEAKKzIwMjItMDEtMDEgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisK
KyAgICAgICAgW21hY09TXSBbV0syXSBOU0ZvbnRQYW5lbCBVSSAoZm9udCBjb2xvciwgdGV4dCBk
ZWNvcmF0aW9ucywgZm9udCBzaGFkb3cpIGRvZXNuJ3QgdXBkYXRlIG9uIHNlbGVjdGlvbiBjaGFu
Z2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDEy
MAorICAgICAgICByZGFyOi8vNDQ4OTc0MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBdWdtZW50IGFuZCBhZGp1c3Qgc29tZSBleGlzdGluZyBBUEkg
dGVzdHMuIFNlZSBXZWJLaXQvQ2hhbmdlTG9nIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Gb250QXR0cmlidXRlcy5tbToK
KworICAgICAgICBBdWdtZW50IGFuIGV4aXN0aW5nIEFQSSB0ZXN0LCBGb250QXR0cmlidXRlcy5G
b250QXR0cmlidXRlc0FmdGVyQ2hhbmdpbmdTZWxlY3Rpb24sIHRvIGFkZGl0aW9uYWxseSBjaGVj
ayBzaGFyZWQKKyAgICAgICAgTlNGb250TWFuYWdlciBzdGF0ZSAoZm9yZWdyb3VuZC9iYWNrZ3Jv
dW5kIGNvbG9yLCBzaGFkb3cgY29sb3IgYW5kIHJhZGl1cywgZXRjLikgb24gbWFjT1MuCisKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OndlYlZpZXdGb3JUZXN0aW5nRm9udEF0dHJpYnV0ZXMpOgor
CisgICAgICAgIE9uIG1hY09TLCBhZGRpdGlvbmFsbHkgbWFrZSB0aGUgZm9udCBwYW5lbCB2aXNp
YmxlIHNvIHRoYXQgd2UgY2FuIHRlc3QgZm9udCBwYW5lbCBzdGF0ZS4KKworICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRm9u
dE1hbmFnZXJUZXN0cy5tbToKKworICAgICAgICBSZWxheCBzb21lIGNvbnN0cmFpbnRzIG9uIEZv
bnRNYW5hZ2VyVGVzdHMuQ2hhbmdlRm9udFdpdGhQYW5lbCwgc28gdGhhdCBpdCB2ZXJpZmllcyB0
aGF0IHRoZSBwbGF0Zm9ybSBmb250IGluCisgICAgICAgIHRoZSBOU0ZvbnRNYW5hZ2VyIGhhcyBh
bGwgb2YgdGhlIHNhbWUgYXR0cmlidXRlcyBhcyB0aGUgZXhwZWN0YXRpb24sIHJhdGhlciB0aGFu
IGJlaW5nIGVxdWFsIHRvIHRoZSBleGFjdCBzYW1lCisgICAgICAgIGZvbnQgb2JqZWN0LgorCisg
ICAgICAgIEFkanVzdCBhbiBleGlzdGluZyBBUEkgdGVzdCwgRm9udE1hbmFnZXJUZXN0cy5DaGFu
Z2VBdHRyaWJ1dGVzV2l0aEZvbnRFZmZlY3RzQm94LCB0byBhbHNvIHZhcnkgdGhlIGxlbmd0aCBv
ZgorICAgICAgICBmb250IHNoYWRvd3MuIFVwZGF0aW5nIGZvbnQgYXR0cmlidXRlcyBvbiB0aGUg
Zm9udCBtYW5hZ2VyIGV4cG9zZWQgYW4gaXNzdWUgd2l0aCB0aGlzIEFQSSB0ZXN0IHdoZXJlLCBi
ZWNhdXNlCisgICAgICAgIHRoZSBmb250IHBhbmVsJ3MgYXR0cmlidXRlcyBhcmUgbmV2ZXIgdXBk
YXRlZCwgdGhlIHZhbHVlIG9mIHRoZSBzaGFkb3cgbGVuZ3RoIHNsaWRlciByZW1haW5zIGF0IHRo
ZSBkZWZhdWx0CisgICAgICAgIHZhbHVlIG9mIDAuMTI1LCBwcm9kdWNpbmcgYSBzaGFkb3cgbGVu
Z3RoIG9mIDEuMjVweC4gSG93ZXZlciwgbm93IHRoYXQgdGhlIHNlbGVjdGlvbiBtb3ZlcyB0byBu
b24tc2hhZG93ZWQgdGV4dAorICAgICAgICBiZWZvcmUgbW92aW5nIHRvIHNoYWRvd2VkIHRleHQg
YWdhaW4sIHdlIG5lZWQgdG8gZXhwbGljaXRseSBzZXQgdGhlIHNoYWRvdyBsZW5ndGggc2xpZGVy
J3MgdmFsdWUgd2hlbiB0ZXN0aW5nCisgICAgICAgIHRoZSBzZWNvbmQgc2hhZG93ZWQgdGV4dCBz
ZWxlY3Rpb24uCisKKyAgICAgICAgKHdlYlZpZXdGb3JGb250TWFuYWdlclRlc3RpbmcpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9tYWMv
TlNGb250UGFuZWxUZXN0aW5nLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9tYWMvTlNGb250
UGFuZWxUZXN0aW5nLm1tOgorCisgICAgICAgIEFkZCBzb21lIGFkZGl0aW9uYWwgdGVzdGluZyBo
ZWxwZXJzIHRvIHF1ZXJ5IHRoZSBzdGF0ZSBvZiBjb250cm9scyBpbiB0aGUgZm9udCBwYW5lbCAo
ZS5nLiBmb250IHNoYWRvdyBzbGlkZXJzLAorICAgICAgICBmb3JlZ3JvdW5kIGNvbG9yIHdlbGws
IGFuZCBzdHJpa2UtdGhyb3VnaC91bmRlcmxpbmUgcG9wdXAgbWVudSBzdGF0ZSkuCisKKyAgICAg
ICAgKC1bTlNGb250UGFuZWwgdW5kZXJsaW5lVG9vbGJhckJ1dHRvbl0pOgorICAgICAgICAoLVtO
U0ZvbnRQYW5lbCBzdHJpa2VUaHJvdWdoVG9vbGJhckJ1dHRvbl0pOgorICAgICAgICAoLVtOU0Zv
bnRQYW5lbCBmb3JlZ3JvdW5kQ29sb3JUb29sYmFyQ29sb3JXZWxsXSk6CisgICAgICAgICgtW05T
Rm9udFBhbmVsIGNob29zZVVuZGVybGluZU1lbnVJdGVtV2l0aFRpdGxlOl0pOgorICAgICAgICAo
LVtOU0ZvbnRQYW5lbCBjaG9vc2VTdHJpa2VUaHJvdWdoTWVudUl0ZW1XaXRoVGl0bGU6XSk6Cisg
ICAgICAgICgtW05TRm9udFBhbmVsIHNoYWRvd0xlbmd0aFNsaWRlcl0pOgorICAgICAgICAoLVtO
U0ZvbnRQYW5lbCBoYXNTaGFkb3ddKToKKyAgICAgICAgKC1bTlNGb250UGFuZWwgc2hhZG93TGVu
Z3RoXSk6CisgICAgICAgICgtW05TRm9udFBhbmVsIHNldFNoYWRvd0xlbmd0aDpdKToKKyAgICAg
ICAgKC1bTlNGb250UGFuZWwgaGFzVW5kZXJsaW5lXSk6CisgICAgICAgICgtW05TRm9udFBhbmVs
IGhhc1N0cmlrZVRocm91Z2hdKToKKyAgICAgICAgKC1bTlNGb250UGFuZWwgZm9yZWdyb3VuZENv
bG9yXSk6CisKIDIwMjItMDEtMDEgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CiAKICAgICAgICAgTW9kYWwgY29udGFpbmVycyBhcmUgaW5jb3JyZWN0bHkgZGV0ZWN0ZWQg
aW4gbmF2aWdhdGlvbiBlbGVtZW50cyBhbmQgZml4ZWQgZG9jdW1lbnQgZWxlbWVudHMKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRm9udEF0dHJpYnV0
ZXMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ZvbnRBdHRyaWJ1
dGVzLm1tCmluZGV4IDQwNWE1ZjkwOWJhNzYzZDY2ZjUyMDAwOTkwM2YwZTk0NzZjODY1ZDIuLmY5
ZmU5M2Q0YzdjNWZjZTNmZjY2NDZhOTliOGUwOWE1YWIxNDJhMjcgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRm9udEF0dHJpYnV0ZXMubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Gb250QXR0cmlidXRlcy5tbQpA
QCAtMTc3LDYgKzE3NywxMSBAQCBzdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZp
ZXdGb3JUZXN0aW5nRm9udEF0dHJpYnV0ZXMoTlNTdHJpbmcgKnRlc3RQYQogICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgMzIwLCA1MDApXSk7CiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRU
ZXN0UGFnZU5hbWVkOnRlc3RQYWdlTmFtZV07CiAgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuZm9jdXMoKSJdOworI2lmIFBMQVRGT1JNKE1B
QykKKyAgICBOU0ZvbnRNYW5hZ2VyICpmb250TWFuYWdlciA9IE5TRm9udE1hbmFnZXIuc2hhcmVk
Rm9udE1hbmFnZXI7CisgICAgW1tmb250TWFuYWdlciBmb250UGFuZWw6WUVTXSBzZXRJc1Zpc2li
bGU6WUVTXTsKKyAgICBmb250TWFuYWdlci50YXJnZXQgPSB3ZWJWaWV3LmdldCgpOworI2VuZGlm
CiAgICAgcmV0dXJuIHdlYlZpZXc7CiB9CiAKQEAgLTE4Niw2ICsxOTEsMzEgQEAgVEVTVChGb250
QXR0cmlidXRlcywgRm9udEF0dHJpYnV0ZXNBZnRlckNoYW5naW5nU2VsZWN0aW9uKQogICAgIGF1
dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JUZXN0aW5nRm9udEF0dHJpYnV0ZXMoQCJyaWNoLXRleHQt
YXR0cmlidXRlcyIpOwogICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCld
OwogCisgICAgYXV0byBleHBlY3RGb250TWFuYWdlclN0YXRlID0gW10gKEZvbnRFeHBlY3RhdGlv
biBleHBlY3RlZEZvbnQsIENvbG9yRXhwZWN0YXRpb24gZXhwZWN0ZWRDb2xvciwgc3RkOjpvcHRp
b25hbDxTaGFkb3dFeHBlY3RhdGlvbj4gZXhwZWN0ZWRTaGFkb3csIEJPT0wgdW5kZXJsaW5lLCBC
T09MIHN0cmlrZVRocm91Z2gsIEJPT0wgZXhwZWN0TXVsdGlwbGVGb250cykgeworI2lmIFBMQVRG
T1JNKE1BQykKKyAgICAgICAgTlNGb250TWFuYWdlciAqZm9udE1hbmFnZXIgPSBOU0ZvbnRNYW5h
Z2VyLnNoYXJlZEZvbnRNYW5hZ2VyOworICAgICAgICBOU0ZvbnRQYW5lbCAqZm9udFBhbmVsID0g
TlNGb250UGFuZWwuc2hhcmVkRm9udFBhbmVsOworICAgICAgICBpZiAoZXhwZWN0ZWRTaGFkb3cp
IHsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGZvbnRQYW5lbC5oYXNTaGFkb3cpOworICAgICAg
ICAgICAgRVhQRUNUX0xUKHN0ZDo6YWJzKGV4cGVjdGVkU2hhZG93LT5vcGFjaXR5IC0gZm9udFBh
bmVsLnNoYWRvd09wYWNpdHkpLCAwLjAwMDEpOworICAgICAgICAgICAgRVhQRUNUX0VRKGV4cGVj
dGVkU2hhZG93LT5ibHVyUmFkaXVzLCBmb250UGFuZWwuc2hhZG93Qmx1cik7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGZvbnRQYW5lbC5oYXNTaGFkb3cpOworICAg
ICAgICBFWFBFQ1RfRVEodW5kZXJsaW5lLCBmb250UGFuZWwuaGFzVW5kZXJsaW5lKTsKKyAgICAg
ICAgRVhQRUNUX0VRKHN0cmlrZVRocm91Z2gsIGZvbnRQYW5lbC5oYXNTdHJpa2VUaHJvdWdoKTsK
KyAgICAgICAgY2hlY2tDb2xvcihbZm9udFBhbmVsLmZvcmVncm91bmRDb2xvciBjb2xvclVzaW5n
Q29sb3JTcGFjZTpOU0NvbG9yU3BhY2Uuc1JHQkNvbG9yU3BhY2VdLCB7IFdURk1vdmUoZXhwZWN0
ZWRDb2xvcikgfSk7CisgICAgICAgIGNoZWNrRm9udChmb250TWFuYWdlci5zZWxlY3RlZEZvbnQs
IFdURk1vdmUoZXhwZWN0ZWRGb250KSk7CisgICAgICAgIEVYUEVDVF9FUShleHBlY3RNdWx0aXBs
ZUZvbnRzLCBmb250TWFuYWdlci5tdWx0aXBsZSk7CisjZWxzZQorICAgICAgICBVTlVTRURfUEFS
QU0oZXhwZWN0ZWRGb250KTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKGV4cGVjdGVkQ29sb3IpOwor
ICAgICAgICBVTlVTRURfUEFSQU0oZXhwZWN0ZWRTaGFkb3cpOworICAgICAgICBVTlVTRURfUEFS
QU0odW5kZXJsaW5lKTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHN0cmlrZVRocm91Z2gpOworICAg
ICAgICBVTlVTRURfUEFSQU0oZXhwZWN0TXVsdGlwbGVGb250cyk7CisjZW5kaWYKKyAgICB9Owor
CiAgICAgewogICAgICAgICBbd2ViVmlldyBzZWxlY3RFbGVtZW50V2l0aElkZW50aWZpZXI6QCJv
bmUiXTsKICAgICAgICAgTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzID0gW3dlYlZpZXcgZm9udEF0
dHJpYnV0ZXNBZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGVdOwpAQCAtMTk3LDYgKzIyNyw3IEBA
IFRFU1QoRm9udEF0dHJpYnV0ZXMsIEZvbnRBdHRyaWJ1dGVzQWZ0ZXJDaGFuZ2luZ1NlbGVjdGlv
bikKICAgICAgICAgRVhQRUNUX0VRKE5TVW5kZXJsaW5lU3R5bGVTaW5nbGUsIFthdHRyaWJ1dGVz
W05TU3RyaWtldGhyb3VnaFN0eWxlQXR0cmlidXRlTmFtZV0gaW50ZWdlclZhbHVlXSk7CiAgICAg
ICAgIEVYUEVDVF9FUShOU1VuZGVybGluZVN0eWxlTm9uZSwgW2F0dHJpYnV0ZXNbTlNVbmRlcmxp
bmVTdHlsZUF0dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOwogICAgICAgICBFWFBFQ1RfRVEo
MCwgW2F0dHJpYnV0ZXNbTlNTdXBlcnNjcmlwdEF0dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0p
OworICAgICAgICBleHBlY3RGb250TWFuYWdlclN0YXRlKHsgIkhlbHZldGljYS1Cb2xkIiwgNDgg
fSwgeyAyMjcsIDM2LCAwLCAxIH0sIHN0ZDo6bnVsbG9wdCwgTk8sIFlFUywgTk8pOwogICAgIH0K
ICAgICB7CiAgICAgICAgIFt3ZWJWaWV3IHNlbGVjdEVsZW1lbnRXaXRoSWRlbnRpZmllcjpAInR3
byJdOwpAQCAtMjA5LDYgKzI0MCw3IEBAIFRFU1QoRm9udEF0dHJpYnV0ZXMsIEZvbnRBdHRyaWJ1
dGVzQWZ0ZXJDaGFuZ2luZ1NlbGVjdGlvbikKICAgICAgICAgRVhQRUNUX0VRKE5TVW5kZXJsaW5l
U3R5bGVOb25lLCBbYXR0cmlidXRlc1tOU1N0cmlrZXRocm91Z2hTdHlsZUF0dHJpYnV0ZU5hbWVd
IGludGVnZXJWYWx1ZV0pOwogICAgICAgICBFWFBFQ1RfRVEoTlNVbmRlcmxpbmVTdHlsZVNpbmds
ZSwgW2F0dHJpYnV0ZXNbTlNVbmRlcmxpbmVTdHlsZUF0dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1
ZV0pOwogICAgICAgICBFWFBFQ1RfRVEoMCwgW2F0dHJpYnV0ZXNbTlNTdXBlcnNjcmlwdEF0dHJp
YnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOworICAgICAgICBleHBlY3RGb250TWFuYWdlclN0YXRl
KHsgIkhlbHZldGljYS1Cb2xkIiwgNDggfSwgeyAxMDIsIDE1NywgNTIsIDEgfSwgeyB7IDAuNDcw
NTg4LCA1IH0gfSwgWUVTLCBOTywgTk8pOwogICAgIH0KICAgICB7CiAgICAgICAgIFt3ZWJWaWV3
IHNlbGVjdEVsZW1lbnRXaXRoSWRlbnRpZmllcjpAInRocmVlIl07CkBAIC0yMjEsNiArMjUzLDcg
QEAgVEVTVChGb250QXR0cmlidXRlcywgRm9udEF0dHJpYnV0ZXNBZnRlckNoYW5naW5nU2VsZWN0
aW9uKQogICAgICAgICBFWFBFQ1RfRVEoTlNVbmRlcmxpbmVTdHlsZU5vbmUsIFthdHRyaWJ1dGVz
W05TU3RyaWtldGhyb3VnaFN0eWxlQXR0cmlidXRlTmFtZV0gaW50ZWdlclZhbHVlXSk7CiAgICAg
ICAgIEVYUEVDVF9FUShOU1VuZGVybGluZVN0eWxlTm9uZSwgW2F0dHJpYnV0ZXNbTlNVbmRlcmxp
bmVTdHlsZUF0dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOwogICAgICAgICBFWFBFQ1RfRVEo
MCwgW2F0dHJpYnV0ZXNbTlNTdXBlcnNjcmlwdEF0dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0p
OworICAgICAgICBleHBlY3RGb250TWFuYWdlclN0YXRlKHsgIk1lbmxvLUl0YWxpYyIsIDE4IH0s
IHsgMjU1LCAxMDYsIDAsIDEgfSwgc3RkOjpudWxsb3B0LCBOTywgTk8sIE5PKTsKICAgICB9CiAg
ICAgewogICAgICAgICBbd2ViVmlldyBzZWxlY3RFbGVtZW50V2l0aElkZW50aWZpZXI6QCJmb3Vy
Il07CkBAIC0yMzMsNiArMjY2LDcgQEAgVEVTVChGb250QXR0cmlidXRlcywgRm9udEF0dHJpYnV0
ZXNBZnRlckNoYW5naW5nU2VsZWN0aW9uKQogICAgICAgICBFWFBFQ1RfRVEoTlNVbmRlcmxpbmVT
dHlsZU5vbmUsIFthdHRyaWJ1dGVzW05TU3RyaWtldGhyb3VnaFN0eWxlQXR0cmlidXRlTmFtZV0g
aW50ZWdlclZhbHVlXSk7CiAgICAgICAgIEVYUEVDVF9FUShOU1VuZGVybGluZVN0eWxlTm9uZSwg
W2F0dHJpYnV0ZXNbTlNVbmRlcmxpbmVTdHlsZUF0dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0p
OwogICAgICAgICBFWFBFQ1RfRVEoMCwgW2F0dHJpYnV0ZXNbTlNTdXBlcnNjcmlwdEF0dHJpYnV0
ZU5hbWVdIGludGVnZXJWYWx1ZV0pOworICAgICAgICBleHBlY3RGb250TWFuYWdlclN0YXRlKHsg
IkF2ZW5pci1Cb29rIiwgMjQgfSwgeyAyNTUsIDI1NSwgMjU1LCAxIH0sIHN0ZDo6bnVsbG9wdCwg
Tk8sIE5PLCBOTyk7CiAgICAgfQogICAgIHsKICAgICAgICAgW3dlYlZpZXcgc2VsZWN0RWxlbWVu
dFdpdGhJZGVudGlmaWVyOkAiZml2ZSJdOwpAQCAtMjQ1LDYgKzI3OSw3IEBAIFRFU1QoRm9udEF0
dHJpYnV0ZXMsIEZvbnRBdHRyaWJ1dGVzQWZ0ZXJDaGFuZ2luZ1NlbGVjdGlvbikKICAgICAgICAg
RVhQRUNUX0VRKE5TVW5kZXJsaW5lU3R5bGVOb25lLCBbYXR0cmlidXRlc1tOU1N0cmlrZXRocm91
Z2hTdHlsZUF0dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOwogICAgICAgICBFWFBFQ1RfRVEo
TlNVbmRlcmxpbmVTdHlsZU5vbmUsIFthdHRyaWJ1dGVzW05TVW5kZXJsaW5lU3R5bGVBdHRyaWJ1
dGVOYW1lXSBpbnRlZ2VyVmFsdWVdKTsKICAgICAgICAgRVhQRUNUX0VRKDAsIFthdHRyaWJ1dGVz
W05TU3VwZXJzY3JpcHRBdHRyaWJ1dGVOYW1lXSBpbnRlZ2VyVmFsdWVdKTsKKyAgICAgICAgZXhw
ZWN0Rm9udE1hbmFnZXJTdGF0ZSh7ICJUaW1lc05ld1JvbWFuUFMtQm9sZE1UIiwgMjQgfSwgeyAx
MzEsIDE2LCAwLCAxIH0sIHN0ZDo6bnVsbG9wdCwgTk8sIE5PLCBOTyk7CiAgICAgfQogICAgIHsK
ICAgICAgICAgW3dlYlZpZXcgc2VsZWN0RWxlbWVudFdpdGhJZGVudGlmaWVyOkAic2l4Il07CkBA
IC0yNTcsNiArMjkyLDcgQEAgVEVTVChGb250QXR0cmlidXRlcywgRm9udEF0dHJpYnV0ZXNBZnRl
ckNoYW5naW5nU2VsZWN0aW9uKQogICAgICAgICBFWFBFQ1RfRVEoTlNVbmRlcmxpbmVTdHlsZU5v
bmUsIFthdHRyaWJ1dGVzW05TU3RyaWtldGhyb3VnaFN0eWxlQXR0cmlidXRlTmFtZV0gaW50ZWdl
clZhbHVlXSk7CiAgICAgICAgIEVYUEVDVF9FUShOU1VuZGVybGluZVN0eWxlTm9uZSwgW2F0dHJp
YnV0ZXNbTlNVbmRlcmxpbmVTdHlsZUF0dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOwogICAg
ICAgICBFWFBFQ1RfRVEoMCwgW2F0dHJpYnV0ZXNbTlNTdXBlcnNjcmlwdEF0dHJpYnV0ZU5hbWVd
IGludGVnZXJWYWx1ZV0pOworICAgICAgICBleHBlY3RGb250TWFuYWdlclN0YXRlKHsgIkF2ZW5p
ci1CbGFjayIsIDE4IH0sIHsgMjU1LCA2NCwgMTksIDEgfSwgc3RkOjpudWxsb3B0LCBOTywgTk8s
IE5PKTsKICAgICB9CiAgICAgewogICAgICAgICBbd2ViVmlldyBzZWxlY3RFbGVtZW50V2l0aElk
ZW50aWZpZXI6QCJzZXZlbiJdOwpAQCAtMjY5LDYgKzMwNSw3IEBAIFRFU1QoRm9udEF0dHJpYnV0
ZXMsIEZvbnRBdHRyaWJ1dGVzQWZ0ZXJDaGFuZ2luZ1NlbGVjdGlvbikKICAgICAgICAgRVhQRUNU
X0VRKE5TVW5kZXJsaW5lU3R5bGVOb25lLCBbYXR0cmlidXRlc1tOU1N0cmlrZXRocm91Z2hTdHls
ZUF0dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOwogICAgICAgICBFWFBFQ1RfRVEoTlNVbmRl
cmxpbmVTdHlsZU5vbmUsIFthdHRyaWJ1dGVzW05TVW5kZXJsaW5lU3R5bGVBdHRyaWJ1dGVOYW1l
XSBpbnRlZ2VyVmFsdWVdKTsKICAgICAgICAgRVhQRUNUX0VRKC0xLCBbYXR0cmlidXRlc1tOU1N1
cGVyc2NyaXB0QXR0cmlidXRlTmFtZV0gaW50ZWdlclZhbHVlXSk7CisgICAgICAgIGV4cGVjdEZv
bnRNYW5hZ2VyU3RhdGUoeyAiQXZlbmlyLUJvb2tPYmxpcXVlIiwgMTIgfSwgeyAyMzUsIDIzNSwg
MjM1LCAxIH0sIHN0ZDo6bnVsbG9wdCwgTk8sIE5PLCBOTyk7CiAgICAgfQogICAgIHsKICAgICAg
ICAgW3dlYlZpZXcgc2VsZWN0RWxlbWVudFdpdGhJZGVudGlmaWVyOkAiZWlnaHQiXTsKQEAgLTI4
MSw2ICszMTgsNyBAQCBURVNUKEZvbnRBdHRyaWJ1dGVzLCBGb250QXR0cmlidXRlc0FmdGVyQ2hh
bmdpbmdTZWxlY3Rpb24pCiAgICAgICAgIEVYUEVDVF9FUShOU1VuZGVybGluZVN0eWxlTm9uZSwg
W2F0dHJpYnV0ZXNbTlNTdHJpa2V0aHJvdWdoU3R5bGVBdHRyaWJ1dGVOYW1lXSBpbnRlZ2VyVmFs
dWVdKTsKICAgICAgICAgRVhQRUNUX0VRKE5TVW5kZXJsaW5lU3R5bGVOb25lLCBbYXR0cmlidXRl
c1tOU1VuZGVybGluZVN0eWxlQXR0cmlidXRlTmFtZV0gaW50ZWdlclZhbHVlXSk7CiAgICAgICAg
IEVYUEVDVF9FUSgxLCBbYXR0cmlidXRlc1tOU1N1cGVyc2NyaXB0QXR0cmlidXRlTmFtZV0gaW50
ZWdlclZhbHVlXSk7CisgICAgICAgIGV4cGVjdEZvbnRNYW5hZ2VyU3RhdGUoeyAiQXZlbmlyLUJv
b2siLCAxMiB9LCB7IDAsIDAsIDAsIDEgfSwgc3RkOjpudWxsb3B0LCBOTywgTk8sIE5PKTsKICAg
ICB9CiAgICAgewogICAgICAgICBbd2ViVmlldyBzZWxlY3RFbGVtZW50V2l0aElkZW50aWZpZXI6
QCJuaW5lIl07CkBAIC0yOTMsNiArMzMxLDcgQEAgVEVTVChGb250QXR0cmlidXRlcywgRm9udEF0
dHJpYnV0ZXNBZnRlckNoYW5naW5nU2VsZWN0aW9uKQogICAgICAgICBFWFBFQ1RfRVEoTlNVbmRl
cmxpbmVTdHlsZU5vbmUsIFthdHRyaWJ1dGVzW05TU3RyaWtldGhyb3VnaFN0eWxlQXR0cmlidXRl
TmFtZV0gaW50ZWdlclZhbHVlXSk7CiAgICAgICAgIEVYUEVDVF9FUShOU1VuZGVybGluZVN0eWxl
Tm9uZSwgW2F0dHJpYnV0ZXNbTlNVbmRlcmxpbmVTdHlsZUF0dHJpYnV0ZU5hbWVdIGludGVnZXJW
YWx1ZV0pOwogICAgICAgICBFWFBFQ1RfRVEoMCwgW2F0dHJpYnV0ZXNbTlNTdXBlcnNjcmlwdEF0
dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOworICAgICAgICBleHBlY3RGb250TWFuYWdlclN0
YXRlKHsgIkdlb3JnaWEiLCAzNiB9LCB7IDAsIDAsIDAsIDEgfSwgeyB7IDAuNjU4ODI0LCA5IH0g
fSwgTk8sIE5PLCBOTyk7CiAgICAgfQogICAgIHsKICAgICAgICAgW3dlYlZpZXcgc2VsZWN0RWxl
bWVudFdpdGhJZGVudGlmaWVyOkAidGVuIl07CkBAIC0zMDUsNiArMzQ0LDcgQEAgVEVTVChGb250
QXR0cmlidXRlcywgRm9udEF0dHJpYnV0ZXNBZnRlckNoYW5naW5nU2VsZWN0aW9uKQogICAgICAg
ICBFWFBFQ1RfRVEoTlNVbmRlcmxpbmVTdHlsZU5vbmUsIFthdHRyaWJ1dGVzW05TU3RyaWtldGhy
b3VnaFN0eWxlQXR0cmlidXRlTmFtZV0gaW50ZWdlclZhbHVlXSk7CiAgICAgICAgIEVYUEVDVF9F
UShOU1VuZGVybGluZVN0eWxlTm9uZSwgW2F0dHJpYnV0ZXNbTlNVbmRlcmxpbmVTdHlsZUF0dHJp
YnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOwogICAgICAgICBFWFBFQ1RfRVEoMCwgW2F0dHJpYnV0
ZXNbTlNTdXBlcnNjcmlwdEF0dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOworICAgICAgICBl
eHBlY3RGb250TWFuYWdlclN0YXRlKHsgIkF2ZW5pci1Cb29rT2JsaXF1ZSIsIDE4IH0sIHsgMCwg
MCwgMCwgMSB9LCBzdGQ6Om51bGxvcHQsIE5PLCBOTywgTk8pOwogICAgIH0KICAgICB7CiAgICAg
ICAgIFt3ZWJWaWV3IHNlbGVjdEVsZW1lbnRXaXRoSWRlbnRpZmllcjpAImVsZXZlbiJdOwpAQCAt
MzE3LDcgKzM1NywxMyBAQCBURVNUKEZvbnRBdHRyaWJ1dGVzLCBGb250QXR0cmlidXRlc0FmdGVy
Q2hhbmdpbmdTZWxlY3Rpb24pCiAgICAgICAgIEVYUEVDVF9FUShOU1VuZGVybGluZVN0eWxlTm9u
ZSwgW2F0dHJpYnV0ZXNbTlNTdHJpa2V0aHJvdWdoU3R5bGVBdHRyaWJ1dGVOYW1lXSBpbnRlZ2Vy
VmFsdWVdKTsKICAgICAgICAgRVhQRUNUX0VRKE5TVW5kZXJsaW5lU3R5bGVOb25lLCBbYXR0cmli
dXRlc1tOU1VuZGVybGluZVN0eWxlQXR0cmlidXRlTmFtZV0gaW50ZWdlclZhbHVlXSk7CiAgICAg
ICAgIEVYUEVDVF9FUSgwLCBbYXR0cmlidXRlc1tOU1N1cGVyc2NyaXB0QXR0cmlidXRlTmFtZV0g
aW50ZWdlclZhbHVlXSk7CisgICAgICAgIGV4cGVjdEZvbnRNYW5hZ2VyU3RhdGUoeyAiTWVubG8t
UmVndWxhciIsIDIwIH0sIHsgMCwgMCwgMCwgMSB9LCBzdGQ6Om51bGxvcHQsIE5PLCBOTywgTk8p
OwogICAgIH0KKyNpZiBQTEFURk9STShNQUMpCisgICAgW3dlYlZpZXcgc2VsZWN0QWxsOm5pbF07
CisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworICAgIEVYUEVD
VF9UUlVFKE5TRm9udE1hbmFnZXIuc2hhcmVkRm9udE1hbmFnZXIubXVsdGlwbGUpOworI2VuZGlm
CiB9CiAKIFRFU1QoRm9udEF0dHJpYnV0ZXMsIE5lc3RlZFRleHRMaXN0c1dpdGhIb3Jpem9udGFs
QWxpZ25tZW50KQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRm9u
dE1hbmFnZXJUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0ZvbnRNYW5h
Z2VyVGVzdHMubW0KaW5kZXggMWE3Y2FkYWYxODNjNzNmMzM4ZDc5ZjRmOWYxMzg5YjYyMGQyMTJl
Ny4uNDMwOGVjNDFiZmE3NWYwMGE2NTRlYTkwZTJjNWU4OTc3YzRmYTFlZCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRm9udE1hbmFnZXJUZXN0cy5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Gb250TWFuYWdlclRlc3RzLm1tCkBAIC05NCw2
ICs5NCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Rm9udE1hbmFnZXJUZXN0V0tXZWJWaWV3PiB3ZWJW
aWV3Rm9yRm9udE1hbmFnZXJUZXN0aW5nKE5TRm9udE1hCiAgICAgW3dlYlZpZXcgc3luY2hyb25v
dXNseUxvYWRIVE1MU3RyaW5nOm1hcmt1cF07CiAgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuZm9jdXMoKSJdOwogICAgIFt3ZWJWaWV3IF9z
ZXRFZGl0YWJsZTpZRVNdOworICAgIFtbZm9udE1hbmFnZXIgZm9udFBhbmVsOllFU10gc2V0SXNW
aXNpYmxlOllFU107CiAgICAgZm9udE1hbmFnZXIudGFyZ2V0ID0gd2ViVmlldy5nZXQoKTsKICAg
ICByZXR1cm4gd2ViVmlldzsKIH0KQEAgLTE5Niw2ICsxOTcsMTUgQEAgVEVTVChGb250TWFuYWdl
clRlc3RzLCBDaGFuZ2VGb250V2l0aFBhbmVsKQogICAgIFtmb250UGFuZWwgc2V0SXNWaXNpYmxl
OllFU107CiAgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOwogCisg
ICAgYXV0byBleHBlY3RTYW1lQXR0cmlidXRlcyA9IFtdKE5TRm9udCAqZm9udDEsIE5TRm9udCAq
Zm9udDIpIHsKKyAgICAgICAgYXV0byBmb250QXR0cmlidXRlczEgPSBmb250MS5mb250RGVzY3Jp
cHRvci5mb250QXR0cmlidXRlczsKKyAgICAgICAgYXV0byBmb250QXR0cmlidXRlczIgPSBmb250
Mi5mb250RGVzY3JpcHRvci5mb250QXR0cmlidXRlczsKKyAgICAgICAgQk9PTCBhdHRyaWJ1dGVz
QXJlRXF1YWwgPSBbZm9udEF0dHJpYnV0ZXMxIGlzRXF1YWxUb0RpY3Rpb25hcnk6Zm9udEF0dHJp
YnV0ZXMyXTsKKyAgICAgICAgRVhQRUNUX1RSVUUoYXR0cmlidXRlc0FyZUVxdWFsKTsKKyAgICAg
ICAgaWYgKCFhdHRyaWJ1dGVzQXJlRXF1YWwpCisgICAgICAgICAgICBOU0xvZyhAIkV4cGVjdGVk
ICVAIHRvIGhhdmUgdGhlIHNhbWUgYXR0cmlidXRlcyBhcyAlQCIsIGZvbnQxLCBmb250Mik7Cisg
ICAgfTsKKwogICAgIE5TRm9udCAqbGFyZ2VIZWx2ZXRpY2FGb250ID0gW05TRm9udCBmb250V2l0
aE5hbWU6QCJIZWx2ZXRpY2EiIHNpemU6MjBdOwogICAgIFtmb250UGFuZWwgc2V0UGFuZWxGb250
OmxhcmdlSGVsdmV0aWNhRm9udCBpc011bHRpcGxlOk5PXTsKICAgICBbd2ViVmlldyBzZWxlY3RX
b3JkOm5pbF07CkBAIC0yMDQsNyArMjE0LDcgQEAgVEVTVChGb250TWFuYWdlclRlc3RzLCBDaGFu
Z2VGb250V2l0aFBhbmVsKQogICAgIEVYUEVDVF9XS19TVFJFUSgiSGVsdmV0aWNhIiwgW3dlYlZp
ZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LWZhbWlseSJdKTsKICAgICBF
WFBFQ1RfV0tfU1RSRVEoIjIwcHgiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25T
dGFydDpAImZvbnQtc2l6ZSJdKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoIjQwMCIsIFt3ZWJWaWV3
IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9udC13ZWlnaHQiXSk7Ci0gICAgRVhQ
RUNUX0VRKGxhcmdlSGVsdmV0aWNhRm9udCwgZm9udE1hbmFnZXIuc2VsZWN0ZWRGb250KTsKKyAg
ICBleHBlY3RTYW1lQXR0cmlidXRlcyhsYXJnZUhlbHZldGljYUZvbnQsIGZvbnRNYW5hZ2VyLnNl
bGVjdGVkRm9udCk7CiAKICAgICBOU0ZvbnQgKnNtYWxsQm9sZFRpbWVzRm9udCA9IFtmb250TWFu
YWdlciBmb250V2l0aEZhbWlseTpAIlRpbWVzIE5ldyBSb21hbiIgdHJhaXRzOk5TQm9sZEZvbnRN
YXNrIHdlaWdodDpOU0ZvbnRXZWlnaHRCb2xkIHNpemU6MTBdOwogICAgIFtmb250UGFuZWwgc2V0
UGFuZWxGb250OnNtYWxsQm9sZFRpbWVzRm9udCBpc011bHRpcGxlOk5PXTsKQEAgLTIxNCw3ICsy
MjQsNyBAQCBURVNUKEZvbnRNYW5hZ2VyVGVzdHMsIENoYW5nZUZvbnRXaXRoUGFuZWwpCiAgICAg
RVhQRUNUX1dLX1NUUkVRKCJcIlRpbWVzIE5ldyBSb21hblwiIiwgW3dlYlZpZXcgc3R5bGVQcm9w
ZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LWZhbWlseSJdKTsKICAgICBFWFBFQ1RfV0tfU1RS
RVEoIjEwcHgiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQt
c2l6ZSJdKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoIjcwMCIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVy
dHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9udC13ZWlnaHQiXSk7Ci0gICAgRVhQRUNUX0VRKHNtYWxs
Qm9sZFRpbWVzRm9udCwgZm9udE1hbmFnZXIuc2VsZWN0ZWRGb250KTsKKyAgICBleHBlY3RTYW1l
QXR0cmlidXRlcyhzbWFsbEJvbGRUaW1lc0ZvbnQsIGZvbnRNYW5hZ2VyLnNlbGVjdGVkRm9udCk7
CiAKICAgICBOU0ZvbnQgKmJvbGRJdGFsaWNBcmlhbEZvbnQgPSBbZm9udE1hbmFnZXIgZm9udFdp
dGhGYW1pbHk6QCJBcmlhbCIgdHJhaXRzOk5TQm9sZEZvbnRNYXNrIHwgTlNJdGFsaWNGb250TWFz
ayB3ZWlnaHQ6TlNGb250V2VpZ2h0Qm9sZCBzaXplOjE0XTsKICAgICBbZm9udFBhbmVsIHNldFBh
bmVsRm9udDpib2xkSXRhbGljQXJpYWxGb250IGlzTXVsdGlwbGU6Tk9dOwpAQCAtMjI0LDcgKzIz
NCw3IEBAIFRFU1QoRm9udE1hbmFnZXJUZXN0cywgQ2hhbmdlRm9udFdpdGhQYW5lbCkKICAgICBF
WFBFQ1RfV0tfU1RSRVEoIkFyaWFsIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9u
U3RhcnQ6QCJmb250LWZhbWlseSJdKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoIjE0cHgiLCBbd2Vi
VmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtc2l6ZSJdKTsKICAgICBF
WFBFQ1RfV0tfU1RSRVEoIjcwMCIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0
YXJ0OkAiZm9udC13ZWlnaHQiXSk7Ci0gICAgRVhQRUNUX0VRKGJvbGRJdGFsaWNBcmlhbEZvbnQs
IGZvbnRNYW5hZ2VyLnNlbGVjdGVkRm9udCk7CisgICAgZXhwZWN0U2FtZUF0dHJpYnV0ZXMoYm9s
ZEl0YWxpY0FyaWFsRm9udCwgZm9udE1hbmFnZXIuc2VsZWN0ZWRGb250KTsKIAogICAgIE5TRm9u
dCAqbGFyZ2VJdGFsaWNMaWdodEF2ZW5pckZvbnQgPSBbZm9udE1hbmFnZXIgZm9udFdpdGhGYW1p
bHk6QCJBdmVuaXIiIHRyYWl0czpOU0l0YWxpY0ZvbnRNYXNrIHdlaWdodDpOU0ZvbnRXZWlnaHRM
aWdodCBzaXplOjI0XTsKICAgICBbZm9udFBhbmVsIHNldFBhbmVsRm9udDpsYXJnZUl0YWxpY0xp
Z2h0QXZlbmlyRm9udCBpc011bHRpcGxlOk5PXTsKQEAgLTIzNCw3ICsyNDQsNyBAQCBURVNUKEZv
bnRNYW5hZ2VyVGVzdHMsIENoYW5nZUZvbnRXaXRoUGFuZWwpCiAgICAgRVhQRUNUX1dLX1NUUkVR
KCJBdmVuaXItTGlnaHRPYmxpcXVlIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9u
U3RhcnQ6QCJmb250LWZhbWlseSJdKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoIjI0cHgiLCBbd2Vi
VmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtc2l6ZSJdKTsKICAgICBF
WFBFQ1RfV0tfU1RSRVEoIjQwMCIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0
YXJ0OkAiZm9udC13ZWlnaHQiXSk7Ci0gICAgRVhQRUNUX0VRKGxhcmdlSXRhbGljTGlnaHRBdmVu
aXJGb250LCBmb250TWFuYWdlci5zZWxlY3RlZEZvbnQpOworICAgIGV4cGVjdFNhbWVBdHRyaWJ1
dGVzKGxhcmdlSXRhbGljTGlnaHRBdmVuaXJGb250LCBmb250TWFuYWdlci5zZWxlY3RlZEZvbnQp
OwogfQogCiBURVNUKEZvbnRNYW5hZ2VyVGVzdHMsIENoYW5nZUF0dHJpYnV0ZXNXaXRoRm9udEVm
ZmVjdHNCb3gpCkBAIC0yODMsMTMgKzI5MywxNCBAQCBURVNUKEZvbnRNYW5hZ2VyVGVzdHMsIENo
YW5nZUF0dHJpYnV0ZXNXaXRoRm9udEVmZmVjdHNCb3gpCiAgICAgW3dlYlZpZXcgc2VsZWN0TmV4
dFdvcmRdOwogICAgIGZvbnRQYW5lbC5zaGFkb3dCbHVyID0gODsKICAgICBmb250UGFuZWwuc2hh
ZG93T3BhY2l0eSA9IDE7CisgICAgZm9udFBhbmVsLnNoYWRvd0xlbmd0aCA9IDAuMjU7CiAgICAg
W2ZvbnRQYW5lbCB0b2dnbGVTaGFkb3ddOwogICAgIEVYUEVDVF9XS19TVFJFUSgiYmF6IiwgW3dl
YlZpZXcgc2VsZWN0ZWRUZXh0XSk7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKCJyZ2IoMCwgMCwgMCkg
MHB4IDEuMjVweCA4cHgiLCB0ZXh0U2hhZG93QXJvdW5kU2VsZWN0aW9uKCkpOworICAgIEVYUEVD
VF9XS19TVFJFUSgicmdiKDAsIDAsIDApIDBweCAyLjVweCA4cHgiLCB0ZXh0U2hhZG93QXJvdW5k
U2VsZWN0aW9uKCkpOwogICAgIHsKICAgICAgICAgTlNTaGFkb3cgKnNoYWRvdyA9IFt3ZWJWaWV3
IHR5cGluZ0F0dHJpYnV0ZXNdW05TU2hhZG93QXR0cmlidXRlTmFtZV07CiAgICAgICAgIEVYUEVD
VF9FUShzaGFkb3cuc2hhZG93T2Zmc2V0LndpZHRoLCAwKTsKLSAgICAgICAgRVhQRUNUX0VRKHNo
YWRvdy5zaGFkb3dPZmZzZXQuaGVpZ2h0LCAxLjI1KTsKKyAgICAgICAgRVhQRUNUX0VRKHNoYWRv
dy5zaGFkb3dPZmZzZXQuaGVpZ2h0LCAyLjUpOwogICAgICAgICBFWFBFQ1RfRVEoc2hhZG93LnNo
YWRvd0JsdXJSYWRpdXMsIDgpOwogICAgICAgICBFWFBFQ1RfVFJVRShbc2hhZG93LnNoYWRvd0Nv
bG9yIGlzRXF1YWw6W05TQ29sb3IgY29sb3JXaXRoUmVkOjAgZ3JlZW46MCBibHVlOjAgYWxwaGE6
MV1dKTsKICAgICB9CkBAIC0zMDIsMTEgKzMxMywxMiBAQCBURVNUKEZvbnRNYW5hZ2VyVGVzdHMs
IENoYW5nZUF0dHJpYnV0ZXNXaXRoRm9udEVmZmVjdHNCb3gpCiAgICAgW3dlYlZpZXcgc2VsZWN0
QWxsOm5pbF07CiAgICAgZm9udFBhbmVsLnNoYWRvd0JsdXIgPSA1OwogICAgIGZvbnRQYW5lbC5z
aGFkb3dPcGFjaXR5ID0gMC4yOworICAgIGZvbnRQYW5lbC5zaGFkb3dMZW5ndGggPSAwLjU7CiAg
ICAgW2ZvbnRQYW5lbCB0b2dnbGVTaGFkb3ddOwogICAgIFtmb250UGFuZWwgY2hvb3NlVW5kZXJs
aW5lTWVudUl0ZW1XaXRoVGl0bGU6QCJzaW5nbGUiXTsKICAgICBbZm9udFBhbmVsIGNob29zZVN0
cmlrZVRocm91Z2hNZW51SXRlbVdpdGhUaXRsZTpAInNpbmdsZSJdOwogICAgIEVYUEVDVF9XS19T
VFJFUSgiZm9vIGJhciBiYXoiLCBbd2ViVmlldyBzZWxlY3RlZFRleHRdKTsKLSAgICBFWFBFQ1Rf
V0tfU1RSRVEoInJnYmEoMCwgMCwgMCwgMC4yKSAwcHggMS4yNXB4IDVweCIsIHRleHRTaGFkb3dB
cm91bmRTZWxlY3Rpb24oKSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJyZ2JhKDAsIDAsIDAsIDAu
MikgMHB4IDVweCA1cHgiLCB0ZXh0U2hhZG93QXJvdW5kU2VsZWN0aW9uKCkpOwogICAgIEVYUEVD
VF9XS19TVFJFUSgidW5kZXJsaW5lIGxpbmUtdGhyb3VnaCIsIHRleHREZWNvcmF0aW9uc0Fyb3Vu
ZFNlbGVjdGlvbigpKTsKICAgICB7CiAgICAgICAgIE5TRGljdGlvbmFyeSAqdHlwaW5nQXR0cmli
dXRlcyA9IFt3ZWJWaWV3IHR5cGluZ0F0dHJpYnV0ZXNdOwpAQCAtMzE1LDcgKzMyNyw3IEBAIFRF
U1QoRm9udE1hbmFnZXJUZXN0cywgQ2hhbmdlQXR0cmlidXRlc1dpdGhGb250RWZmZWN0c0JveCkK
IAogICAgICAgICBOU1NoYWRvdyAqc2hhZG93ID0gdHlwaW5nQXR0cmlidXRlc1tOU1NoYWRvd0F0
dHJpYnV0ZU5hbWVdOwogICAgICAgICBFWFBFQ1RfRVEoc2hhZG93LnNoYWRvd09mZnNldC53aWR0
aCwgMCk7Ci0gICAgICAgIEVYUEVDVF9FUShzaGFkb3cuc2hhZG93T2Zmc2V0LmhlaWdodCwgMS4y
NSk7CisgICAgICAgIEVYUEVDVF9FUShzaGFkb3cuc2hhZG93T2Zmc2V0LmhlaWdodCwgNSk7CiAg
ICAgICAgIEVYUEVDVF9FUShzaGFkb3cuc2hhZG93Qmx1clJhZGl1cywgNSk7CiAgICAgICAgIEVY
UEVDVF9UUlVFKFtzaGFkb3cuc2hhZG93Q29sb3IgaXNFcXVhbDpbTlNDb2xvciBjb2xvcldpdGhS
ZWQ6MCBncmVlbjowIGJsdWU6MCBhbHBoYTowLjJdXSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9tYWMvTlNGb250UGFuZWxUZXN0aW5nLmggYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL21hYy9OU0ZvbnRQYW5lbFRlc3RpbmcuaAppbmRleCBjZjQxMjgxMDFlNzZkZGQ0Yzhi
NTExMmY4OTViYjBlMmZlYmMzY2ZhLi4zZTFlMGVjODFjMTlmMWIwZWI0Mjg4M2E4MDIyNzMxZmJk
NzJiMmExIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9OU0ZvbnRQYW5lbFRl
c3RpbmcuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9OU0ZvbnRQYW5lbFRlc3Rpbmcu
aApAQCAtMzEsNiArMzEsMTIgQEAKIAogQHByb3BlcnR5IChub25hdG9taWMpIGRvdWJsZSBzaGFk
b3dPcGFjaXR5OwogQHByb3BlcnR5IChub25hdG9taWMpIGRvdWJsZSBzaGFkb3dCbHVyOworQHBy
b3BlcnR5IChub25hdG9taWMpIGRvdWJsZSBzaGFkb3dMZW5ndGg7CisKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSkgQk9PTCBoYXNTaGFkb3c7CitAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHkpIEJPT0wgaGFzVW5kZXJsaW5lOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5KSBCT09MIGhhc1N0cmlrZVRocm91Z2g7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHkpIE5TQ29sb3IgKmZvcmVncm91bmRDb2xvcjsKIAogLSAodm9pZCl0b2dnbGVTaGFkb3c7CiAt
ICh2b2lkKWNob29zZVVuZGVybGluZU1lbnVJdGVtV2l0aFRpdGxlOihOU1N0cmluZyAqKWl0ZW1U
aXRsZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL05TRm9udFBhbmVsVGVz
dGluZy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL05TRm9udFBhbmVsVGVzdGluZy5tbQpp
bmRleCAyMzI5NTBjZGJkZWUyMDNhNTFjNmIwNjdkNjhmOWYxOTQ3Mzc4OTljLi43MTNkMDFmYzJk
OTZmZmI2NGY5N2I0OWU1YzFmZjJjNmYyMGFmOGE3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL21hYy9OU0ZvbnRQYW5lbFRlc3RpbmcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9tYWMvTlNGb250UGFuZWxUZXN0aW5nLm1tCkBAIC02NSw5ICs2NSwyNCBAQCBzdGF0aWMgTlNN
ZW51SXRlbSAqZmluZE1lbnVJdGVtV2l0aFRpdGxlKE5TUG9wVXBCdXR0b24gKmJ1dHRvbiwgTlNT
dHJpbmcgKnRpdGxlKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxOU0JveCAqPihyZXN1bHQpOwog
fQogCistIChOU1BvcFVwQnV0dG9uICopdW5kZXJsaW5lVG9vbGJhckJ1dHRvbgoreworICAgIHJl
dHVybiAoTlNQb3BVcEJ1dHRvbiAqKVtzZWxmIF90b29sYmFySXRlbVdpdGhJZGVudGlmaWVyOkAi
TlNGb250UGFuZWxVbmRlcmxpbmVUb29sYmFySXRlbSJdLnZpZXc7Cit9CisKKy0gKE5TUG9wVXBC
dXR0b24gKilzdHJpa2VUaHJvdWdoVG9vbGJhckJ1dHRvbgoreworICAgIHJldHVybiAoTlNQb3BV
cEJ1dHRvbiAqKVtzZWxmIF90b29sYmFySXRlbVdpdGhJZGVudGlmaWVyOkAiTlNGb250UGFuZWxT
dHJpa2V0aHJvdWdoVG9vbGJhckl0ZW0iXS52aWV3OworfQorCistIChOU0NvbG9yV2VsbCAqKWZv
cmVncm91bmRDb2xvclRvb2xiYXJDb2xvcldlbGwKK3sKKyAgICByZXR1cm4gKE5TQ29sb3JXZWxs
ICopW3NlbGYgX3Rvb2xiYXJJdGVtV2l0aElkZW50aWZpZXI6QCJOU0ZvbnRQYW5lbFRleHRDb2xv
clRvb2xiYXJJdGVtIl0udmlldzsKK30KKwogLSAodm9pZCljaG9vc2VVbmRlcmxpbmVNZW51SXRl
bVdpdGhUaXRsZTooTlNTdHJpbmcgKilpdGVtVGl0bGUKIHsKLSAgICBOU1BvcFVwQnV0dG9uICpi
dXR0b24gPSAoTlNQb3BVcEJ1dHRvbiAqKVtzZWxmIF90b29sYmFySXRlbVdpdGhJZGVudGlmaWVy
OkAiTlNGb250UGFuZWxVbmRlcmxpbmVUb29sYmFySXRlbSJdLnZpZXc7CisgICAgTlNQb3BVcEJ1
dHRvbiAqYnV0dG9uID0gW3NlbGYgdW5kZXJsaW5lVG9vbGJhckJ1dHRvbl07CiAgICAgW2J1dHRv
biBzZWxlY3RJdGVtOmZpbmRNZW51SXRlbVdpdGhUaXRsZShidXR0b24sIGl0ZW1UaXRsZSldOwog
ICAgIFtzZWxmLmZvbnRFZmZlY3RzQm94IF9vcGVuRWZmZWN0c0J1dHRvbjpidXR0b25dOwogICAg
IFtzZWxmIF9kaWRDaGFuZ2VBdHRyaWJ1dGVzXTsKQEAgLTc1LDcgKzkwLDcgQEAgc3RhdGljIE5T
TWVudUl0ZW0gKmZpbmRNZW51SXRlbVdpdGhUaXRsZShOU1BvcFVwQnV0dG9uICpidXR0b24sIE5T
U3RyaW5nICp0aXRsZSkKIAogLSAodm9pZCljaG9vc2VTdHJpa2VUaHJvdWdoTWVudUl0ZW1XaXRo
VGl0bGU6KE5TU3RyaW5nICopaXRlbVRpdGxlCiB7Ci0gICAgTlNQb3BVcEJ1dHRvbiAqYnV0dG9u
ID0gKE5TUG9wVXBCdXR0b24gKilbc2VsZiBfdG9vbGJhckl0ZW1XaXRoSWRlbnRpZmllcjpAIk5T
Rm9udFBhbmVsU3RyaWtldGhyb3VnaFRvb2xiYXJJdGVtIl0udmlldzsKKyAgICBOU1BvcFVwQnV0
dG9uICpidXR0b24gPSBbc2VsZiBzdHJpa2VUaHJvdWdoVG9vbGJhckJ1dHRvbl07CiAgICAgW2J1
dHRvbiBzZWxlY3RJdGVtOmZpbmRNZW51SXRlbVdpdGhUaXRsZShidXR0b24sIGl0ZW1UaXRsZSld
OwogICAgIFtzZWxmLmZvbnRFZmZlY3RzQm94IF9vcGVuRWZmZWN0c0J1dHRvbjpidXR0b25dOwog
ICAgIFtzZWxmIF9kaWRDaGFuZ2VBdHRyaWJ1dGVzXTsKQEAgLTk4LDExICsxMTMsMjEgQEAgc3Rh
dGljIE5TTWVudUl0ZW0gKmZpbmRNZW51SXRlbVdpdGhUaXRsZShOU1BvcFVwQnV0dG9uICpidXR0
b24sIE5TU3RyaW5nICp0aXRsZSkKICAgICByZXR1cm4gKE5TU2xpZGVyICopZmluZFN1YnZpZXdP
ZkNsYXNzKFtzZWxmIF90b29sYmFySXRlbVdpdGhJZGVudGlmaWVyOkAiTlNGb250UGFuZWxTaGFk
b3dPcGFjaXR5VG9vbGJhckl0ZW0iXS52aWV3LCBOU1NsaWRlci5jbGFzcyk7CiB9CiAKKy0gKE5T
U2xpZGVyICopc2hhZG93TGVuZ3RoU2xpZGVyCit7CisgICAgcmV0dXJuIChOU1NsaWRlciAqKWZp
bmRTdWJ2aWV3T2ZDbGFzcyhbc2VsZiBfdG9vbGJhckl0ZW1XaXRoSWRlbnRpZmllcjpAIk5TRm9u
dFBhbmVsU2hhZG93T2Zmc2V0VG9vbGJhckl0ZW0iXS52aWV3LCBOU1NsaWRlci5jbGFzcyk7Cit9
CisKIC0gKE5TQnV0dG9uICopc2hhZG93VG9nZ2xlQnV0dG9uCiB7CiAgICAgcmV0dXJuIChOU0J1
dHRvbiAqKVtzZWxmIF90b29sYmFySXRlbVdpdGhJZGVudGlmaWVyOkAiTlNGb250UGFuZWxTaGFk
b3dUb2dnbGVUb29sYmFySXRlbSJdLnZpZXc7CiB9CiAKKy0gKEJPT0wpaGFzU2hhZG93Cit7Cisg
ICAgcmV0dXJuIHNlbGYuc2hhZG93VG9nZ2xlQnV0dG9uLnN0YXRlID09IE5TQ29udHJvbFN0YXRl
VmFsdWVPbjsKK30KKwogLSAodm9pZCl0b2dnbGVTaGFkb3cKIHsKICAgICBOU0J1dHRvbiAqc2hh
ZG93VG9nZ2xlQnV0dG9uID0gc2VsZi5zaGFkb3dUb2dnbGVCdXR0b247CkBAIC0xMTAsNiArMTM1
LDE2IEBAIHN0YXRpYyBOU01lbnVJdGVtICpmaW5kTWVudUl0ZW1XaXRoVGl0bGUoTlNQb3BVcEJ1
dHRvbiAqYnV0dG9uLCBOU1N0cmluZyAqdGl0bGUpCiAgICAgW3NlbGYgX2RpZENoYW5nZUF0dHJp
YnV0ZXNdOwogfQogCistIChkb3VibGUpc2hhZG93TGVuZ3RoCit7CisgICAgcmV0dXJuIHNlbGYu
c2hhZG93TGVuZ3RoU2xpZGVyLmRvdWJsZVZhbHVlOworfQorCistICh2b2lkKXNldFNoYWRvd0xl
bmd0aDooZG91YmxlKXNoYWRvd0xlbmd0aAoreworICAgIHNlbGYuc2hhZG93TGVuZ3RoU2xpZGVy
LmRvdWJsZVZhbHVlID0gc2hhZG93TGVuZ3RoOworfQorCiAtIChkb3VibGUpc2hhZG93T3BhY2l0
eQogewogICAgIHJldHVybiBzZWxmLnNoYWRvd09wYWNpdHlTbGlkZXIuZG91YmxlVmFsdWU7CkBA
IC0xNDMsNiArMTc4LDIzIEBAIHN0YXRpYyBOU01lbnVJdGVtICpmaW5kTWVudUl0ZW1XaXRoVGl0
bGUoTlNQb3BVcEJ1dHRvbiAqYnV0dG9uLCBOU1N0cmluZyAqdGl0bGUpCiAgICAgcmV0dXJuIG5p
bDsKIH0KIAorLSAoQk9PTCloYXNVbmRlcmxpbmUKK3sKKyAgICBOU01lbnVJdGVtICpzaW5nbGVV
bmRlcmxpbmVNZW51SXRlbSA9IFtzZWxmLnVuZGVybGluZVRvb2xiYXJCdXR0b24gaXRlbUF0SW5k
ZXg6Ml07CisgICAgcmV0dXJuIHNpbmdsZVVuZGVybGluZU1lbnVJdGVtLnN0YXRlID09IE5TQ29u
dHJvbFN0YXRlVmFsdWVPbjsKK30KKworLSAoQk9PTCloYXNTdHJpa2VUaHJvdWdoCit7CisgICAg
TlNNZW51SXRlbSAqc2luZ2xlU3RyaWtlVGhyb3VnaE1lbnVJdGVtID0gW3NlbGYuc3RyaWtlVGhy
b3VnaFRvb2xiYXJCdXR0b24gaXRlbUF0SW5kZXg6Ml07CisgICAgcmV0dXJuIHNpbmdsZVN0cmlr
ZVRocm91Z2hNZW51SXRlbS5zdGF0ZSA9PSBOU0NvbnRyb2xTdGF0ZVZhbHVlT247Cit9CisKKy0g
KE5TQ29sb3IgKilmb3JlZ3JvdW5kQ29sb3IKK3sKKyAgICByZXR1cm4gc2VsZi5mb3JlZ3JvdW5k
Q29sb3JUb29sYmFyQ29sb3JXZWxsLmNvbG9yOworfQorCiBAZW5kCiAKICNlbmRpZiAvLyBQTEFU
Rk9STShNQUMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448957</attachid>
            <date>2022-01-12 09:51:07 -0800</date>
            <delta_ts>2022-01-12 15:00:18 -0800</delta_ts>
            <desc>For landing</desc>
            <filename>bug-190120-20220112095106.patch</filename>
            <type>text/plain</type>
            <size>42540</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3OTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGIwMGE2YWU5YTViMDc5
OTIyOTcyN2I2OTU5MzFhM2U2YmRhNWRlMy4uMWNlMTg4Nzc4N2NkZTlhMWVkN2FlZjYwMGY2ZTI4
ZjE2YWQxZjc0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIyLTAxLTExICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gW1dL
Ml0gTlNGb250UGFuZWwgVUkgKGZvbnQgY29sb3IsIHRleHQgZGVjb3JhdGlvbnMsIGZvbnQgc2hh
ZG93KSBkb2Vzbid0IHVwZGF0ZSBvbiBzZWxlY3Rpb24gY2hhbmdlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAxMjAKKyAgICAgICAgcmRhcjovLzQ0
ODk3NDA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRk
IGEgYm9vbGVhbiBgaGFzTXVsdGlwbGVGb250c2AgZmxhZyB0byBGb250QXR0cmlidXRlcywgYW5k
IHBhc3MgaXQgYXMgYW4gb3V0LXJlZmVyZW5jZSB3aGVuIGNvbXB1dGluZyB0aGUKKyAgICAgICAg
Zm9udCBhdCB0aGUgY3VycmVudCBzZWxlY3Rpb24uIFNlZSBXZWJLaXQvQ2hhbmdlTG9nIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3I6OmZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydCk6CisgICAgICAg
ICogZWRpdGluZy9Gb250QXR0cmlidXRlcy5oOgorCiAyMDIxLTExLTI5IFNpbW9uIEZyYXNlciAg
PHNpbW9uLmZyYXNlckBhcHBsZS5jb20+IAogCiAgICAgICAgIFNlcmlhbGl6ZSBDU1MgPG51bWJl
cj4gdmFsdWVzIHdpdGggcm91bmRpbmcsIGxpbWl0ZWQgZGVjaW1hbCBwcmVjaXNpb24sIGFuZCBu
byBleHBvbmVudHMgcGVyLXNwZWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggODFmYWJkNDEzODQ5MWU3ZmRkZDJkMjg5
OGFjN2M5YWRlOGYxNTU3Mi4uZDg1MDJiMjFiZTFlOGJhNTRjYjhhMTg3ZDdlN2ZjODg4N2YxMmFj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MSBAQAorMjAyMi0wMS0xMSAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdIFtXSzJdIE5TRm9udFBh
bmVsIFVJIChmb250IGNvbG9yLCB0ZXh0IGRlY29yYXRpb25zLCBmb250IHNoYWRvdykgZG9lc24n
dCB1cGRhdGUgb24gc2VsZWN0aW9uIGNoYW5nZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMTIwCisgICAgICAgIHJkYXI6Ly80NDg5NzQwNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEN1cnJlbnRseSwgaW4g
V2ViS2l0MiwgdGhlcmUgaXMgbm8gbWVjaGFuaXNtIGZvciB1cGRhdGluZyB0aGUgTlNGb250TWFu
YWdlciB3aXRoIG5ldyBmb250IGF0dHJpYnV0ZXMgd2hlbiB0aGUKKyAgICAgICAgc2VsZWN0aW9u
IGNoYW5nZXMuIFdoaWxlIHdlIGRvIHVwZGF0ZSB0aGUgc2VsZWN0ZWQgTlNGb250LCB3ZSBkbyBz
byBieSByZXF1ZXN0aW5nIGZvbnQgZmFtaWx5IGFuZCBmb250IHNpemUgdmlhCisgICAgICAgIGFu
IElQQyByZXF1ZXN0LCBgRm9udEF0U2VsZWN0aW9uYCwgYnV0IHRoaXMgZG9lcyBub3QgaW5jbHVk
ZSBhdHRyaWJ1dGVzIGxpa2UgdW5kZXJsaW5lLCBzdHJpa2UtdGhyb3VnaCwgY29sb3IsCisgICAg
ICAgIGFuZCB0ZXh0IHNoYWRvd3MuCisKKyAgICAgICAgSW5zdGVhZCwgd2UgY2FuIHJlbW92ZSB0
aGlzIGBGb250QXRTZWxlY3Rpb25gIElQQyByZXF1ZXN0IG1lY2hhbmlzbSBlbnRpcmVseSwgYW5k
IHJlcXVlc3QgYEZvbnRBdHRyaWJ1dGVzYC4gVGhpcworICAgICAgICBhbGxvd3MgdXMgdG8gc2V0
IHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgTlNGb250IG9uIHRoZSBOU0ZvbnRNYW5hZ2VyLCBhbmQg
YWxzbyB1cGRhdGUgdGhlIGZvbnQgbWFuYWdlciB3aXRoIHRoZQorICAgICAgICBmdWxsIGRpY3Rp
b25hcnkgb2YgZm9udCBhdHRyaWJ1dGVzLgorCisgICAgICAgIFRlc3Q6IEZvbnRBdHRyaWJ1dGVz
LkZvbnRBdHRyaWJ1dGVzQWZ0ZXJDaGFuZ2luZ1NlbGVjdGlvbgorCisgICAgICAgICogU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
Rm9udEF0dHJpYnV0ZXM+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPEZv
bnRBdHRyaWJ1dGVzPjo6ZGVjb2RlKToKKworICAgICAgICBFbmNvZGUgYW5kIGRlY29kZSB0aGUg
bmV3IGBoYXNNdWx0aXBsZUZvbnRzYCBmbGFnIGluIEZvbnRBdHRyaWJ1dGVzLiBBZGRpdGlvbmFs
bHksIHRha2UgdGhpcyBvcHBvcnR1bml0eSB0bworICAgICAgICBtb2Rlcm5pemUgc29tZSBvZiB0
aGUgZGVjb2Rpbmctc2lkZSBsb2dpYyBieSBkZWNvZGluZyBlYWNoIG1lbWJlciBpbnRvIGEgYHN0
ZDo6b3B0aW9uYWxgIGFuZCBjcmVhdGluZyB0aGUgZmluYWwKKyAgICAgICAgZGVzZXJpYWxpemVk
IEZvbnRBdHRyaWJ1dGVzIGF0IHRoZSBlbmQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp1cGRhdGVGb250
TWFuYWdlcklmTmVlZGVkKToKKworICAgICAgICBSYXRoZXIgdGhhbiBncmFiYmluZyBqdXN0IHRo
ZSBmb250IGZhbWlseSBhbmQgZm9udCBzaXplIHVzaW5nIGBmb250QXRTZWxlY3Rpb25gLCByZXF1
ZXN0IEZvbnRBdHRyaWJ1dGVzIGluc3RlYWQKKyAgICAgICAgYW5kIGNvbnZlcnQgaXQgdG8gYSBO
U0RpY3Rpb25hcnkgdG8gY2FsbCBgLVtOU0ZvbnRNYW5hZ2VyIHNldFNlbGVjdGVkQXR0cmlidXRl
czppc011bHRpcGxlOl1gLgorCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp0eXBpbmdB
dHRyaWJ1dGVzV2l0aENvbXBsZXRpb25IYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OmNoYW5nZUZvbnRBdHRyaWJ1dGVzRnJvbVNlbmRlcik6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpjaGFuZ2VGb250RnJvbUZvbnRNYW5hZ2VyKToKKworICAgICAgICBSZW1v
dmUgY29kZSB0byB1cGRhdGUgdGhlIGZvbnQgbWFuYWdlciBhZnRlciBjaGFuZ2luZyBmb250IGF0
dHJpYnV0ZXMuIFRoaXMgaXMgdW5uZWNlc3NhcnkgYmVjYXVzZSB0aGUgcHJvY2VzcworICAgICAg
ICBvZiBleGVjdXRpbmcgYW4gZWRpdCBjb21tYW5kIGluIG9yZGVyIHRvIGNoYW5nZSB0eXBpbmcg
c3R5bGUgd2lsbCB0cmlnZ2VyIGFuIGVkaXRvciBzdGF0ZSB1cGRhdGUgYW55d2F5cywgd2hpY2gK
KyAgICAgICAgdGhlbiBjYXVzZXMgdXMgdG8gcmVxdWVzdCBuZXcgZm9udCBhdHRyaWJ1dGVzLgor
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6cmVxdWVzdEZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydCk6CisK
KyAgICAgICAgTW92ZSB0aGUgY2hlY2sgZm9yIGNhY2hlZCBmb250YXR0cmlidXRlcyB0byBXZWJQ
YWdlUHJveHksIGZyb20gV2ViVmlld0ltcGwuIFRoaXMgYWxsb3dzIHVzIHRvIGdldCByaWQgb2Yg
YQorICAgICAgICBoZWxwZXIgZnVuY3Rpb24gb24gV2ViUGFnZVByb3h5IHRvIGdyYWIgdGhlIGN1
cnJlbnQgY2FjaGVkIGZvbnQgYXR0cmlidXRlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRVcGRhdGVFZGl0b3JTdGF0ZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZGlkVXBkYXRlRWRpdG9yU3RhdGUpOgorCisgICAgICAgIFNldCBj
YWNoZWQgRm9udEF0dHJpYnV0ZXMgKGlmIHByZXNlbnQpICpwcmlvciogdG8gZGlzcGF0Y2hpbmcg
YSBzZWxlY3Rpb24gY2hhbmdlLiBUaGlzIGFsbG93cyBhbnkgc3Vic2VxdWVudAorICAgICAgICBy
ZXF1ZXN0IGZvciBmb250IGF0dHJpYnV0ZXMgYXQgdGhlIHNlbGVjdGlvbiB0byByZXR1cm4gaW1t
ZWRpYXRlbHkgd2l0aCB0aGUgcmVzdWx0LgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6Zm9udEF0U2VsZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluOgorCisgICAgICAgIFJlbW92ZSB0aGUgYEZvbnRBdFNlbGVjdGlvbkNhbGxiYWNrYCBJ
UEMgbWVzc2FnZSAoYW5kIGFsbCBhc3NvY2lhdGVkIGNvZGUpLiBUaGlzIGNvZGVwYXRoIHdhcyBw
cmV2aW91c2x5IG9ubHkKKyAgICAgICAgZXhlcmNpc2VkIHdoZW4gdXBkYXRpbmcgdGhlIGZvbnQg
cGFuZWwgb24gbWFjT1MsIGFuZCBpcyBubyBsb25nZXIgbmVjZXNzYXJ5IGJlY2F1c2Ugd2UganVz
dCB1c2UKKyAgICAgICAgYHJlcXVlc3RGb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnRgIGlu
c3RlYWQsIHdoaWNoIGFsbG93cyB1cyB0byBncmFiIG5vdCBvbmx5IHRoZSBOU0ZvbnQsIGJ1dCBh
bHNvIGFsbAorICAgICAgICBwbGF0Zm9ybSB0eXBpbmcgYXR0cmlidXRlcyBhdCB0aGUgc2VsZWN0
aW9uLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb250QXRTZWxlY3Rpb24pOiBEZWxldGVkLgorCiAy
MDIyLTAxLTExICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViUGFnZVByb3h5IGRlc3RydWN0aW9uIHNob3VsZCBub3QgbGF1bmNoIGEgbmV0d29yayBwcm9j
ZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggYzUyN2UyNzczOTA4ODliZWI4NTEz
NDI0YjMxNzk1YWFlMWQxMDE1OC4uMGRmYWI2ZmJmZmM0ODM2OGVkOWVhNjU3ZWNiOGQ4YjMxMWNh
ZTEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDA0MSw4ICs0MDQxLDcgQEAg
c3RhdGljIFZlY3RvcjxUZXh0TGlzdD4gZWRpdGFibGVUZXh0TGlzdHNBdFBvc2l0aW9uSW5EZXNj
ZW5kaW5nT3JkZXIoY29uc3QgUG9zaXQKIEZvbnRBdHRyaWJ1dGVzIEVkaXRvcjo6Zm9udEF0dHJp
YnV0ZXNBdFNlbGVjdGlvblN0YXJ0KCkKIHsKICAgICBGb250QXR0cmlidXRlcyBhdHRyaWJ1dGVz
OwotICAgIGJvb2wgaGFzTXVsdGlwbGVGb250cyA9IGZhbHNlOyAvLyBGSVhNRSAoMTkwMTIwKTog
QWRkIGBoYXNNdWx0aXBsZUZvbnRzYCBhcyBhIG1lbWJlciBpbiBgRm9udEF0dHJpYnV0ZXNgLgot
ICAgIGF0dHJpYnV0ZXMuZm9udCA9IGZvbnRGb3JTZWxlY3Rpb24oaGFzTXVsdGlwbGVGb250cyk7
CisgICAgYXR0cmlidXRlcy5mb250ID0gZm9udEZvclNlbGVjdGlvbihhdHRyaWJ1dGVzLmhhc011
bHRpcGxlRm9udHMpOwogCiAgICAgUmVmUHRyPE5vZGU+IG5vZGVUb1JlbW92ZTsKICAgICBhdXRv
IG5vZGVSZW1vdmFsU2NvcGUgPSBtYWtlU2NvcGVFeGl0KFsmbm9kZVRvUmVtb3ZlXSgpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0ZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0ZXMuaAppbmRleCA5MWRlNDQ1MzBjMWQ4YWYz
NTVkZGFiYzNkYWYxMDBlZGUxOTViMTIzLi42NzQ1ZjEwN2YxYjA4MTNiODAwZDgwNTZmMWM4NGM3
YWUwNTJhZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZvbnRBdHRyaWJ1
dGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRlcy5oCkBAIC05
MCw2ICs5MCw3IEBAIHN0cnVjdCBGb250QXR0cmlidXRlcyB7CiAgICAgVmVjdG9yPFRleHRMaXN0
PiB0ZXh0TGlzdHM7CiAgICAgYm9vbCBoYXNVbmRlcmxpbmUgeyBmYWxzZSB9OwogICAgIGJvb2wg
aGFzU3RyaWtlVGhyb3VnaCB7IGZhbHNlIH07CisgICAgYm9vbCBoYXNNdWx0aXBsZUZvbnRzIHsg
ZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDQ1ZWNlNTFhNTAzNjZkYTM0
ZmY5MGU5MWQ1N2U1YTg4ZTJkYjg4NTAuLjI4MzQ1MDA0ZTVkMTgyZGJmZDQzNTg0ZjU5ODQ2ZTg2
YWFlOGQ3YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcApAQCAtMjkzMCw3ICsyOTMwLDEzIEBAIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+Pjo6ZGVjCiAK
IHZvaWQgQXJndW1lbnRDb2RlcjxGb250QXR0cmlidXRlcz46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBGb250QXR0cmlidXRlcyYgYXR0cmlidXRlcykKIHsKLSAgICBlbmNvZGVyIDw8
IGF0dHJpYnV0ZXMuYmFja2dyb3VuZENvbG9yIDw8IGF0dHJpYnV0ZXMuZm9yZWdyb3VuZENvbG9y
IDw8IGF0dHJpYnV0ZXMuZm9udFNoYWRvdyA8PCBhdHRyaWJ1dGVzLmhhc1VuZGVybGluZSA8PCBh
dHRyaWJ1dGVzLmhhc1N0cmlrZVRocm91Z2ggPDwgYXR0cmlidXRlcy50ZXh0TGlzdHM7CisgICAg
ZW5jb2RlciA8PCBhdHRyaWJ1dGVzLmJhY2tncm91bmRDb2xvcjsKKyAgICBlbmNvZGVyIDw8IGF0
dHJpYnV0ZXMuZm9yZWdyb3VuZENvbG9yOworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5mb250
U2hhZG93OworICAgIGVuY29kZXIgPDwgYXR0cmlidXRlcy5oYXNVbmRlcmxpbmU7CisgICAgZW5j
b2RlciA8PCBhdHRyaWJ1dGVzLmhhc1N0cmlrZVRocm91Z2g7CisgICAgZW5jb2RlciA8PCBhdHRy
aWJ1dGVzLmhhc011bHRpcGxlRm9udHM7CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVzLnRleHRM
aXN0czsKICAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuaG9yaXpvbnRhbEFsaWdubWVudDsKICAg
ICBlbmNvZGVyIDw8IGF0dHJpYnV0ZXMuc3Vic2NyaXB0T3JTdXBlcnNjcmlwdDsKICAgICBlbmNv
ZGVyIDw8IGF0dHJpYnV0ZXMuZm9udDsKQEAgLTI5MzgsMzAgKzI5NDQsNDkgQEAgdm9pZCBBcmd1
bWVudENvZGVyPEZvbnRBdHRyaWJ1dGVzPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IEZvbnRBdHRyaWJ1dGUKIAogc3RkOjpvcHRpb25hbDxGb250QXR0cmlidXRlcz4gQXJndW1lbnRD
b2RlcjxGb250QXR0cmlidXRlcz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIEZv
bnRBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7CisgICAgc3RkOjpvcHRpb25hbDxDb2xvcj4gYmFja2dy
b3VuZENvbG9yOworICAgIGRlY29kZXIgPj4gYmFja2dyb3VuZENvbG9yOworICAgIGlmICghYmFj
a2dyb3VuZENvbG9yKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmJhY2tncm91bmRDb2xvcikpCisgICAgc3RkOjpvcHRp
b25hbDxDb2xvcj4gZm9yZWdyb3VuZENvbG9yOworICAgIGRlY29kZXIgPj4gZm9yZWdyb3VuZENv
bG9yOworICAgIGlmICghZm9yZWdyb3VuZENvbG9yKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmZvcmVncm91bmRDb2xv
cikpCisgICAgc3RkOjpvcHRpb25hbDxGb250U2hhZG93PiBmb250U2hhZG93OworICAgIGRlY29k
ZXIgPj4gZm9udFNoYWRvdzsKKyAgICBpZiAoIWZvbnRTaGFkb3cpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuZm9udFNo
YWRvdykpCisgICAgc3RkOjpvcHRpb25hbDxib29sPiBoYXNVbmRlcmxpbmU7CisgICAgZGVjb2Rl
ciA+PiBoYXNVbmRlcmxpbmU7CisgICAgaWYgKCFoYXNVbmRlcmxpbmUpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuaGFz
VW5kZXJsaW5lKSkKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGhhc1N0cmlrZVRocm91Z2g7Cisg
ICAgZGVjb2RlciA+PiBoYXNTdHJpa2VUaHJvdWdoOworICAgIGlmICghaGFzU3RyaWtlVGhyb3Vn
aCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoYXR0cmlidXRlcy5oYXNTdHJpa2VUaHJvdWdoKSkKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+
IGhhc011bHRpcGxlRm9udHM7CisgICAgZGVjb2RlciA+PiBoYXNNdWx0aXBsZUZvbnRzOworICAg
IGlmICghaGFzTXVsdGlwbGVGb250cykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy50ZXh0TGlzdHMpKQorICAgIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPFRleHRMaXN0Pj4gdGV4dExpc3RzOworICAgIGRlY29kZXIgPj4gdGV4
dExpc3RzOworICAgIGlmICghdGV4dExpc3RzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmhvcml6b250YWxBbGlnbm1l
bnQpKQorICAgIHN0ZDo6b3B0aW9uYWw8Rm9udEF0dHJpYnV0ZXM6Okhvcml6b250YWxBbGlnbm1l
bnQ+IGhvcml6b250YWxBbGlnbm1lbnQ7CisgICAgZGVjb2RlciA+PiBob3Jpem9udGFsQWxpZ25t
ZW50OworICAgIGlmICghaG9yaXpvbnRhbEFsaWdubWVudCkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5zdWJzY3JpcHRP
clN1cGVyc2NyaXB0KSkKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRBdHRyaWJ1dGVzOjpTdWJzY3Jp
cHRPclN1cGVyc2NyaXB0PiBzdWJzY3JpcHRPclN1cGVyc2NyaXB0OworICAgIGRlY29kZXIgPj4g
c3Vic2NyaXB0T3JTdXBlcnNjcmlwdDsKKyAgICBpZiAoIXN1YnNjcmlwdE9yU3VwZXJzY3JpcHQp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBzdGQ6Om9wdGlvbmFsPFJlZlB0
cjxGb250Pj4gZm9udDsKQEAgLTI5NjksOSArMjk5NCw3IEBAIHN0ZDo6b3B0aW9uYWw8Rm9udEF0
dHJpYnV0ZXM+IEFyZ3VtZW50Q29kZXI8Rm9udEF0dHJpYnV0ZXM+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjCiAgICAgaWYgKCFmb250KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
YXR0cmlidXRlcy5mb250ID0gV1RGTW92ZSgqZm9udCk7Ci0KLSAgICByZXR1cm4gYXR0cmlidXRl
czsKKyAgICByZXR1cm4geyB7IFdURk1vdmUoKmZvbnQpLCBXVEZNb3ZlKCpiYWNrZ3JvdW5kQ29s
b3IpLCBXVEZNb3ZlKCpmb3JlZ3JvdW5kQ29sb3IpLCBXVEZNb3ZlKCpmb250U2hhZG93KSwgKnN1
YnNjcmlwdE9yU3VwZXJzY3JpcHQsICpob3Jpem9udGFsQWxpZ25tZW50LCBXVEZNb3ZlKCp0ZXh0
TGlzdHMpLCAqaGFzVW5kZXJsaW5lLCAqaGFzU3RyaWtlVGhyb3VnaCwgKmhhc011bHRpcGxlRm9u
dHMgfSB9OwogfQogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggMmY4MGJmNjEyZDhkNWEz
ODdiNTBhMTcwNGEyYTYyMjQwZDQ2NmQ2Ny4uZTRiM2FhZmVkYTcyYWRjMjUwYmI0ZmUyMWU0NTk1
ODZmNWNjNWM0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwubW0KQEAgLTMwNTUsMzIgKzMwNTUsMjEgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dXBkYXRlRm9u
dE1hbmFnZXJJZk5lZWRlZCgpCiAgICAgaWYgKCFmb250UGFuZWxJc1Zpc2libGUgJiYgIW1fcGFn
ZS0+ZWRpdG9yU3RhdGUoKS5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9wYWdlLT5mb250QXRTZWxlY3Rpb24oW10oY29uc3QgRm9udEluZm8mIGZvbnRJ
bmZvLCBkb3VibGUgZm9udFNpemUsIGJvb2wgc2VsZWN0aW9uSGFzTXVsdGlwbGVGb250cykgewot
Ci0gICAgICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgICAgIE5TRGljdGlv
bmFyeSAqYXR0cmlidXRlRGljdGlvbmFyeSA9IChfX2JyaWRnZSBOU0RpY3Rpb25hcnkgKilmb250
SW5mby5mb250QXR0cmlidXRlRGljdGlvbmFyeS5nZXQoKTsKLSAgICAgICAgaWYgKCFhdHRyaWJ1
dGVEaWN0aW9uYXJ5KQorICAgIG1fcGFnZS0+cmVxdWVzdEZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rp
b25TdGFydChbXSAoYXV0byYgYXR0cmlidXRlcykgeworICAgICAgICBpZiAoIWF0dHJpYnV0ZXMu
Zm9udCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBhdXRvIGZvbnQgPSBmb250V2l0
aEF0dHJpYnV0ZXMoYXR0cmlidXRlRGljdGlvbmFyeSwgZm9udFNpemUpOwotICAgICAgICBpZiAo
IWZvbnQpCisgICAgICAgIGF1dG8gbnNGb250ID0gKF9fYnJpZGdlIE5TRm9udCAqKWF0dHJpYnV0
ZXMuZm9udC0+Z2V0Q1RGb250KCk7CisgICAgICAgIGlmICghbnNGb250KQogICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIFtOU0ZvbnRNYW5hZ2VyLnNoYXJlZEZvbnRNYW5hZ2VyIHNldFNl
bGVjdGVkRm9udDpmb250IGlzTXVsdGlwbGU6c2VsZWN0aW9uSGFzTXVsdGlwbGVGb250c107Ci0K
LSAgICAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgICAgICBbTlNGb250TWFuYWdl
ci5zaGFyZWRGb250TWFuYWdlciBzZXRTZWxlY3RlZEZvbnQ6bnNGb250IGlzTXVsdGlwbGU6YXR0
cmlidXRlcy5oYXNNdWx0aXBsZUZvbnRzXTsKKyAgICAgICAgW05TRm9udE1hbmFnZXIuc2hhcmVk
Rm9udE1hbmFnZXIgc2V0U2VsZWN0ZWRBdHRyaWJ1dGVzOmF0dHJpYnV0ZXMuY3JlYXRlRGljdGlv
bmFyeSgpLmdldCgpIGlzTXVsdGlwbGU6YXR0cmlidXRlcy5oYXNNdWx0aXBsZUZvbnRzXTsKICAg
ICB9KTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6dHlwaW5nQXR0cmlidXRlc1dpdGhDb21wbGV0
aW9uSGFuZGxlcih2b2lkKF5jb21wbGV0aW9uKShOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+
ICopKQogewotICAgIGlmIChhdXRvIGF0dHJpYnV0ZXMgPSBtX3BhZ2UtPmNhY2hlZEZvbnRBdHRy
aWJ1dGVzQXRTZWxlY3Rpb25TdGFydCgpKSB7Ci0gICAgICAgIGF1dG8gYXR0cmlidXRlc0FzRGlj
dGlvbmFyeSA9IGF0dHJpYnV0ZXMtPmNyZWF0ZURpY3Rpb25hcnkoKTsKLSAgICAgICAgY29tcGxl
dGlvbihhdHRyaWJ1dGVzQXNEaWN0aW9uYXJ5LmdldCgpKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQogICAgIG1fcGFnZS0+cmVxdWVzdEZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydChb
Y29tcGxldGlvbiA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uKV0gKGNvbnN0IFdlYkNvcmU6OkZv
bnRBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKSB7CiAgICAgICAgIGF1dG8gYXR0cmlidXRlc0FzRGlj
dGlvbmFyeSA9IGF0dHJpYnV0ZXMuY3JlYXRlRGljdGlvbmFyeSgpOwogICAgICAgICBjb21wbGV0
aW9uKGF0dHJpYnV0ZXNBc0RpY3Rpb25hcnkuZ2V0KCkpOwpAQCAtMzExMiw3ICszMTAxLDYgQEAg
dm9pZCBXZWJWaWV3SW1wbDo6Y2hhbmdlRm9udEF0dHJpYnV0ZXNGcm9tU2VuZGVyKGlkIHNlbmRl
cikKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9wYWdlLT5jaGFuZ2VGb250QXR0cmlidXRlcyhX
ZWJDb3JlOjpjb21wdXRlZEZvbnRBdHRyaWJ1dGVDaGFuZ2VzKE5TRm9udE1hbmFnZXIuc2hhcmVk
Rm9udE1hbmFnZXIsIHNlbmRlcikpOwotICAgIHVwZGF0ZUZvbnRNYW5hZ2VySWZOZWVkZWQoKTsK
IH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6Y2hhbmdlRm9udEZyb21Gb250TWFuYWdlcigpCkBAIC0z
MTIyLDcgKzMxMTAsNiBAQCB2b2lkIFdlYlZpZXdJbXBsOjpjaGFuZ2VGb250RnJvbUZvbnRNYW5h
Z2VyKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9wYWdlLT5jaGFuZ2VGb250KFdlYkNvcmU6
OmNvbXB1dGVkRm9udENoYW5nZXMoTlNGb250TWFuYWdlci5zaGFyZWRGb250TWFuYWdlcikpOwot
ICAgIHVwZGF0ZUZvbnRNYW5hZ2VySWZOZWVkZWQoKTsKIH0KIAogc3RhdGljIE5TTWVudUl0ZW0g
Km1lbnVJdGVtKGlkIDxOU1ZhbGlkYXRlZFVzZXJJbnRlcmZhY2VJdGVtPiBpdGVtKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMTRmOGIzMjJhNTFjNmRkNGU3
MTU5N2EzNjM4N2M4ODNmNzQ5NmI2Mi4uOThmYWM3ZTgwMjE3MGQxNjZkNTI2YmZmZjM0ZDVkNGIw
YWVkMTRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0y
NTU5LDYgKzI1NTksMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RGb250QXR0cmlidXRl
c0F0U2VsZWN0aW9uU3RhcnQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybiBjYWxsYmFjayh7IH0pOwogCisgICAgaWYg
KGF1dG8gYXR0cmlidXRlcyA9IG1fY2FjaGVkRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0
KSB7CisgICAgICAgIGNhbGxiYWNrKCphdHRyaWJ1dGVzKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKwogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEZv
bnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydCgpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChjb25zdCBXZWJDb3Jl
OjpGb250QXR0cmlidXRlcyYgYXR0cmlidXRlcykgbXV0YWJsZSB7CiAgICAgICAgIG1fY2FjaGVk
Rm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0ID0gYXR0cmlidXRlczsKICAgICAgICAgY2Fs
bGJhY2soYXR0cmlidXRlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmlu
ZGV4IDA1NTJiN2JhNWU1YzY1NzM4YjZiYzQ4NTlhOWIzY2ZiMzk3OTBiOGMuLjA4NWI4MTc0NjJh
N2JjNjIwZTAzNzQ2MGUyN2NmNGI3M2I5N2UzODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCkBAIC03ODgsOCArNzg4LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRC
YXNlV3JpdGluZ0RpcmVjdGlvbihXZWJDb3JlOjpXcml0aW5nRGlyZWN0aW9uKTsKIAotICAgIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXM+IGNhY2hlZEZvbnRBdHRyaWJ1dGVz
QXRTZWxlY3Rpb25TdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkRm9udEF0dHJpYnV0ZXNB
dFNlbGVjdGlvblN0YXJ0OyB9Ci0KICNpZiBIQVZFKFRPVUNIX0JBUikKICAgICBjb25zdCBUb3Vj
aEJhck1lbnVEYXRhJiB0b3VjaEJhck1lbnVEYXRhKCkgY29uc3QgeyByZXR1cm4gbV90b3VjaEJh
ck1lbnVEYXRhOyB9CiAjZW5kaWYKQEAgLTk5MSw3ICs5ODksNiBAQCBwdWJsaWM6CiAKICNpZiBQ
TEFURk9STShNQUMpCiAgICAgdm9pZCBhdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFu
Z2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmcmLCBjb25zdCBFZGl0aW5nUmFuZ2UmKT4mJik7Ci0g
ICAgdm9pZCBmb250QXRTZWxlY3Rpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBGb250
SW5mbyYsIGRvdWJsZSwgYm9vbCk+JiYpOwogCiAgICAgdm9pZCBzdGFydFdpbmRvd0RyYWcoKTsK
ICAgICBOU1dpbmRvdyAqcGxhdGZvcm1XaW5kb3coKTsKQEAgLTIzNDUsOSArMjM0Miw2IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIGRpZFJlY2VpdmVFdmVudCh1aW50MzJfdCBvcGFxdWVUeXBlLCBi
b29sIGhhbmRsZWQpOwogICAgIHZvaWQgZGlkVXBkYXRlUmVuZGVyaW5nQWZ0ZXJDb21taXR0aW5n
TG9hZCgpOwotI2lmIFBMQVRGT1JNKE1BQykKLSAgICB2b2lkIGZvbnRBdFNlbGVjdGlvbkNhbGxi
YWNrKGNvbnN0IEZvbnRJbmZvJiwgZG91YmxlLCBib29sLCBDYWxsYmFja0lEKTsKLSNlbmRpZgog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBpbnRlcnByZXRLZXlFdmVudChjb25z
dCBFZGl0b3JTdGF0ZSYsIGJvb2wgaXNDaGFyRXZlbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOwogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlk
ZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJDb3JlOjpSb3V0ZVNo
YXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggODIzOThjNzQ2MTQ5M2MyNDA5OTIzMjViNGVl
OTk3YWFhNTExOTdlNi4uODNhMDBkN2MzYmFlZWU2OTAyOGU0NDZiYWMwYTIxMWYyZDBlNmJmNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBA
IC0xMDUxLDEwICsxMDUxLDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRVcGRhdGVFZGl0b3JT
dGF0ZShjb25zdCBFZGl0b3JTdGF0ZSYgb2xkRWRpdG9yU3RhdGUsIGNvbnN0CiAgICAgaWYgKG5l
d0VkaXRvclN0YXRlLnNob3VsZElnbm9yZVNlbGVjdGlvbkNoYW5nZXMpCiAgICAgICAgIHJldHVy
bjsKICAgICAKKyAgICB1cGRhdGVGb250QXR0cmlidXRlc0FmdGVyRWRpdG9yU3RhdGVDaGFuZ2Uo
KTsKICAgICAvLyBXZSBhbHdheXMgbmVlZCB0byBub3RpZnkgdGhlIGNsaWVudCBvbiBpT1MgdG8g
bWFrZSBzdXJlIHRoZSBzZWxlY3Rpb24gaXMgcmVkcmF3biwKICAgICAvLyBldmVuIGR1cmluZyBj
b21wb3NpdGlvbiB0byBzdXBwb3J0IHBocmFzZSBib3VuZGFyeSBnZXN0dXJlLgogICAgIHBhZ2VD
bGllbnQoKS5zZWxlY3Rpb25EaWRDaGFuZ2UoKTsKLSAgICB1cGRhdGVGb250QXR0cmlidXRlc0Fm
dGVyRWRpdG9yU3RhdGVDaGFuZ2UoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpc3BhdGNo
RGlkVXBkYXRlRWRpdG9yU3RhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
ZWJQYWdlUHJveHlNYWMubW0KaW5kZXggNmE0MTZkMzA5MjM5NzU3ZDk3M2YwNDU2MWY0M2NjY2Fm
YjhiYTNmZi4uYjc4YzcxODc1MTllYjFlZmQyZGQ3YzUyMzgxYmRjZTFjZjYwYjI3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC0yMDYs
MTYgKzIwNiw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjphdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hh
cmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmCiAgICAgc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpBdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFu
Z2VBc3luYyhyYW5nZSksIFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6Zm9udEF0U2VsZWN0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
Rm9udEluZm8mLCBkb3VibGUsIGJvb2wpPiYmIGNhbGxiYWNrKQotewotICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBjYWxsYmFjayh7IH0sIDAsIGZhbHNlKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2Vi
UGFnZTo6Rm9udEF0U2VsZWN0aW9uKCksIFdURk1vdmUoY2FsbGJhY2spKTsKLX0KLQogU3RyaW5n
IFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiB7CiAgICAgU3Ry
aW5nIHZhbHVlOwpAQCAtNTczLDkgKzU2Myw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRVcGRh
dGVFZGl0b3JTdGF0ZShjb25zdCBFZGl0b3JTdGF0ZSYgb2xkRWRpdG9yU3RhdGUsIGNvbnN0CiAg
ICAgCiAgICAgaWYgKG5ld0VkaXRvclN0YXRlLnNob3VsZElnbm9yZVNlbGVjdGlvbkNoYW5nZXMp
CiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBwYWdlQ2xpZW50KCkuc2VsZWN0aW9uRGlkQ2hh
bmdlKCk7CisKICAgICB1cGRhdGVGb250QXR0cmlidXRlc0FmdGVyRWRpdG9yU3RhdGVDaGFuZ2Uo
KTsKKyAgICBwYWdlQ2xpZW50KCkuc2VsZWN0aW9uRGlkQ2hhbmdlKCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpzdGFydFdpbmRvd0RyYWcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCmluZGV4IDA2N2YxYmIzZTNkMjBmOGVmYTgzY2FmZDJlM2ZhZTRmYzkx
OTNlYTguLjc4YmZmNjk5ZWQxZTY2NTQzZGUzZGIwMzlkNTY5Mzk0MDdmOWI2NjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTk1Myw3ICs5NTMsNiBA
QCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBhdHRyaWJ1dGVkU3Vic3Ry
aW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmcmLCBjb25zdCBFZGl0
aW5nUmFuZ2UmKT4mJik7Ci0gICAgdm9pZCBmb250QXRTZWxlY3Rpb24oQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBGb250SW5mbyYsIGRvdWJsZSwgYm9vbCk+JiYpOwogICAgIHZvaWQgcmVx
dWVzdEFjY2VwdHNGaXJzdE1vdXNlKGludCBldmVudE51bWJlciwgY29uc3QgV2ViS2l0OjpXZWJN
b3VzZUV2ZW50Jik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggYzAyYTkwYWE2NTI4OGJlMjc2M2M2
ODRiMjY4ZTQ1OTk2YzJkOGRlNi4uNmY5MWEyYTc3NDE2NmNkMmI4ODZkZmViYjRiYmE4ZjUxZmVm
OGYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCkBAIC00NjcsNyArNDY3LDYgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0
aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5
cGUKICNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBBdHRyaWJ1dGVkU3Vic3RyaW5nRm9y
Q2hhcmFjdGVyUmFuZ2VBc3luYyhzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmFuZ2UpIC0+
IChzdHJ1Y3QgV2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZyBzdHJpbmcsIHN0cnVjdCBXZWJLaXQ6
OkVkaXRpbmdSYW5nZSByYW5nZSkgQXN5bmMKLSAgICBGb250QXRTZWxlY3Rpb24oKSAtPiAoc3Ry
dWN0IFdlYktpdDo6Rm9udEluZm8gZm9udEluZm8sIGRvdWJsZSBmb250U2l6ZSwgYm9vbCBzZWxl
Y3Rpb25IYXNNdWx0aXBsZUZvbnRzKSBBc3luYwogICAgIFJlcXVlc3RBY2NlcHRzRmlyc3RNb3Vz
ZShpbnQgZXZlbnROdW1iZXIsIFdlYktpdDo6V2ViTW91c2VFdmVudCBldmVudCkKICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFj
Lm1tCmluZGV4IGIxZWUwMTNlOGIwZjUzYjBkN2M1ZDhlMTE3MDkzY2JkMDFhZGI1YTkuLjNlMzQw
OWZiOTQ4ZTBiZTcxMGUzMTI0NzJlN2VmNGQwNzZiZWE0ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC0zNTksMzkgKzM1
OSw2IEBAIHZvaWQgV2ViUGFnZTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdl
QXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiBlZGl0CiAgICAgY29tcGxldGlvbkhhbmRsZXIoeyBX
VEZNb3ZlKGF0dHJpYnV0ZWRTdHJpbmcpLCBuaWwgfSwgcmFuZ2VUb1NlbmQpOwogfQogCi12b2lk
IFdlYlBhZ2U6OmZvbnRBdFNlbGVjdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEZv
bnRJbmZvJiwgZG91YmxlLCBib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBib29s
IHNlbGVjdGlvbkhhc011bHRpcGxlRm9udHMgPSBmYWxzZTsKLSAgICBhdXRvJiBmcmFtZSA9IG1f
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0KLSAgICBpZiAo
ZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNOb25lKCkpIHsKLSAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoeyB9LCAwLCBmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBhdXRvIGZvbnQgPSBmcmFtZS5lZGl0b3IoKS5mb250Rm9yU2VsZWN0aW9uKHNlbGVjdGlvbkhh
c011bHRpcGxlRm9udHMpOwotICAgIGlmICghZm9udCkgewotICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcih7IH0sIDAsIGZhbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8g
Y3RGb250ID0gZm9udC0+Z2V0Q1RGb250KCk7Ci0gICAgaWYgKCFjdEZvbnQpIHsKLSAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoeyB9LCAwLCBmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBhdXRvIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnRDb3B5Rm9udERlc2Ny
aXB0b3IoY3RGb250KSk7Ci0gICAgaWYgKCFmb250RGVzY3JpcHRvcikgewotICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcih7IH0sIDAsIGZhbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ29weUF0dHJp
YnV0ZXMoZm9udERlc2NyaXB0b3IuZ2V0KCkpKSB9LCBDVEZvbnRHZXRTaXplKGN0Rm9udCksIHNl
bGVjdGlvbkhhc011bHRpcGxlRm9udHMpOwotfQotICAgIAotCi0KICNpZiBFTkFCTEUoUERGS0lU
X1BMVUdJTikKIAogRGljdGlvbmFyeVBvcHVwSW5mbyBXZWJQYWdlOjpkaWN0aW9uYXJ5UG9wdXBJ
bmZvRm9yU2VsZWN0aW9uSW5QREZQbHVnaW4oUERGU2VsZWN0aW9uICpzZWxlY3Rpb24sIFBERlBs
dWdpbiYgcGRmUGx1Z2luLCBOU0RpY3Rpb25hcnkgKm9wdGlvbnMsIFdlYkNvcmU6OlRleHRJbmRp
Y2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uIHByZXNlbnRhdGlvblRyYW5zaXRpb24pCmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggM2QxMzZlMWU3
ZDM5ZmRmNjk4Y2Y0NmY1N2ZkZjZkYmRmNGFiMzFjYS4uOTk0NjY4OTIxNDJkMTYzZjZkMzc3ZWI0
MzNiMzIzZDhkM2FlOWI5ZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIyLTAxLTExICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gW1dLMl0gTlNGb250UGFu
ZWwgVUkgKGZvbnQgY29sb3IsIHRleHQgZGVjb3JhdGlvbnMsIGZvbnQgc2hhZG93KSBkb2Vzbid0
IHVwZGF0ZSBvbiBzZWxlY3Rpb24gY2hhbmdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAxMjAKKyAgICAgICAgcmRhcjovLzQ0ODk3NDA1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQXVnbWVudCBhbmQgYWRq
dXN0IHNvbWUgZXhpc3RpbmcgQVBJIHRlc3RzLiBTZWUgV2ViS2l0L0NoYW5nZUxvZyBmb3IgbW9y
ZSBpbmZvcm1hdGlvbi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvRm9udEF0dHJpYnV0ZXMubW06CisKKyAgICAgICAgQXVnbWVudCBhbiBleGlzdGluZyBBUEkg
dGVzdCwgRm9udEF0dHJpYnV0ZXMuRm9udEF0dHJpYnV0ZXNBZnRlckNoYW5naW5nU2VsZWN0aW9u
LCB0byBhZGRpdGlvbmFsbHkgY2hlY2sgc2hhcmVkCisgICAgICAgIE5TRm9udE1hbmFnZXIgc3Rh
dGUgKGZvcmVncm91bmQvYmFja2dyb3VuZCBjb2xvciwgc2hhZG93IGNvbG9yIGFuZCByYWRpdXMs
IGV0Yy4pIG9uIG1hY09TLgorCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp3ZWJWaWV3Rm9yVGVz
dGluZ0ZvbnRBdHRyaWJ1dGVzKToKKworICAgICAgICBPbiBtYWNPUywgYWRkaXRpb25hbGx5IG1h
a2UgdGhlIGZvbnQgcGFuZWwgdmlzaWJsZSBzbyB0aGF0IHdlIGNhbiB0ZXN0IGZvbnQgcGFuZWwg
c3RhdGUuCisKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvbWFjL0ZvbnRNYW5hZ2VyVGVzdHMubW06CisKKyAgICAgICAgUmVsYXgg
c29tZSBjb25zdHJhaW50cyBvbiBGb250TWFuYWdlclRlc3RzLkNoYW5nZUZvbnRXaXRoUGFuZWws
IHNvIHRoYXQgaXQgdmVyaWZpZXMgdGhhdCB0aGUgcGxhdGZvcm0gZm9udCBpbgorICAgICAgICB0
aGUgTlNGb250TWFuYWdlciBoYXMgYWxsIG9mIHRoZSBzYW1lIGF0dHJpYnV0ZXMgYXMgdGhlIGV4
cGVjdGF0aW9uLCByYXRoZXIgdGhhbiBiZWluZyBlcXVhbCB0byB0aGUgZXhhY3Qgc2FtZQorICAg
ICAgICBmb250IG9iamVjdC4KKworICAgICAgICBBZGp1c3QgYW4gZXhpc3RpbmcgQVBJIHRlc3Qs
IEZvbnRNYW5hZ2VyVGVzdHMuQ2hhbmdlQXR0cmlidXRlc1dpdGhGb250RWZmZWN0c0JveCwgdG8g
YWxzbyB2YXJ5IHRoZSBsZW5ndGggb2YKKyAgICAgICAgZm9udCBzaGFkb3dzLiBVcGRhdGluZyBm
b250IGF0dHJpYnV0ZXMgb24gdGhlIGZvbnQgbWFuYWdlciBleHBvc2VkIGFuIGlzc3VlIHdpdGgg
dGhpcyBBUEkgdGVzdCB3aGVyZSwgYmVjYXVzZQorICAgICAgICB0aGUgZm9udCBwYW5lbCdzIGF0
dHJpYnV0ZXMgYXJlIG5ldmVyIHVwZGF0ZWQsIHRoZSB2YWx1ZSBvZiB0aGUgc2hhZG93IGxlbmd0
aCBzbGlkZXIgcmVtYWlucyBhdCB0aGUgZGVmYXVsdAorICAgICAgICB2YWx1ZSBvZiAwLjEyNSwg
cHJvZHVjaW5nIGEgc2hhZG93IGxlbmd0aCBvZiAxLjI1cHguIEhvd2V2ZXIsIG5vdyB0aGF0IHRo
ZSBzZWxlY3Rpb24gbW92ZXMgdG8gbm9uLXNoYWRvd2VkIHRleHQKKyAgICAgICAgYmVmb3JlIG1v
dmluZyB0byBzaGFkb3dlZCB0ZXh0IGFnYWluLCB3ZSBuZWVkIHRvIGV4cGxpY2l0bHkgc2V0IHRo
ZSBzaGFkb3cgbGVuZ3RoIHNsaWRlcidzIHZhbHVlIHdoZW4gdGVzdGluZworICAgICAgICB0aGUg
c2Vjb25kIHNoYWRvd2VkIHRleHQgc2VsZWN0aW9uLgorCisgICAgICAgICh3ZWJWaWV3Rm9yRm9u
dE1hbmFnZXJUZXN0aW5nKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvbWFjL05TRm9udFBhbmVsVGVzdGluZy5oOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvbWFjL05TRm9udFBhbmVsVGVzdGluZy5tbToKKworICAgICAgICBBZGQgc29t
ZSBhZGRpdGlvbmFsIHRlc3RpbmcgaGVscGVycyB0byBxdWVyeSB0aGUgc3RhdGUgb2YgY29udHJv
bHMgaW4gdGhlIGZvbnQgcGFuZWwgKGUuZy4gZm9udCBzaGFkb3cgc2xpZGVycywKKyAgICAgICAg
Zm9yZWdyb3VuZCBjb2xvciB3ZWxsLCBhbmQgc3RyaWtlLXRocm91Z2gvdW5kZXJsaW5lIHBvcHVw
IG1lbnUgc3RhdGUpLgorCisgICAgICAgICgtW05TRm9udFBhbmVsIHVuZGVybGluZVRvb2xiYXJC
dXR0b25dKToKKyAgICAgICAgKC1bTlNGb250UGFuZWwgc3RyaWtlVGhyb3VnaFRvb2xiYXJCdXR0
b25dKToKKyAgICAgICAgKC1bTlNGb250UGFuZWwgZm9yZWdyb3VuZENvbG9yVG9vbGJhckNvbG9y
V2VsbF0pOgorICAgICAgICAoLVtOU0ZvbnRQYW5lbCBjaG9vc2VVbmRlcmxpbmVNZW51SXRlbVdp
dGhUaXRsZTpdKToKKyAgICAgICAgKC1bTlNGb250UGFuZWwgY2hvb3NlU3RyaWtlVGhyb3VnaE1l
bnVJdGVtV2l0aFRpdGxlOl0pOgorICAgICAgICAoLVtOU0ZvbnRQYW5lbCBzaGFkb3dMZW5ndGhT
bGlkZXJdKToKKyAgICAgICAgKC1bTlNGb250UGFuZWwgaGFzU2hhZG93XSk6CisgICAgICAgICgt
W05TRm9udFBhbmVsIHNoYWRvd0xlbmd0aF0pOgorICAgICAgICAoLVtOU0ZvbnRQYW5lbCBzZXRT
aGFkb3dMZW5ndGg6XSk6CisgICAgICAgICgtW05TRm9udFBhbmVsIGhhc1VuZGVybGluZV0pOgor
ICAgICAgICAoLVtOU0ZvbnRQYW5lbCBoYXNTdHJpa2VUaHJvdWdoXSk6CisgICAgICAgICgtW05T
Rm9udFBhbmVsIGZvcmVncm91bmRDb2xvcl0pOgorCiAyMDIyLTAxLTExICBHZW9mZnJleSBHYXJl
biAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViUGFnZVByb3h5IGRlc3RydWN0aW9u
IHNob3VsZCBub3QgbGF1bmNoIGEgbmV0d29yayBwcm9jZXNzCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ZvbnRBdHRyaWJ1dGVzLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Gb250QXR0cmlidXRlcy5tbQppbmRleCA0
MDVhNWY5MDliYTc2M2Q2NmY1MjAwMDk5MDNmMGU5NDc2Yzg2NWQyLi5mOWZlOTNkNGM3YzVmY2Uz
ZmY2NjQ2YTk5YjhlMDlhNWFiMTQyYTI3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0ZvbnRBdHRyaWJ1dGVzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRm9udEF0dHJpYnV0ZXMubW0KQEAgLTE3Nyw2ICsxNzcs
MTEgQEAgc3RhdGljIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3Rm9yVGVzdGluZ0Zv
bnRBdHRyaWJ1dGVzKE5TU3RyaW5nICp0ZXN0UGEKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDMy
MCwgNTAwKV0pOwogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDp0
ZXN0UGFnZU5hbWVdOwogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
QCJkb2N1bWVudC5ib2R5LmZvY3VzKCkiXTsKKyNpZiBQTEFURk9STShNQUMpCisgICAgTlNGb250
TWFuYWdlciAqZm9udE1hbmFnZXIgPSBOU0ZvbnRNYW5hZ2VyLnNoYXJlZEZvbnRNYW5hZ2VyOwor
ICAgIFtbZm9udE1hbmFnZXIgZm9udFBhbmVsOllFU10gc2V0SXNWaXNpYmxlOllFU107CisgICAg
Zm9udE1hbmFnZXIudGFyZ2V0ID0gd2ViVmlldy5nZXQoKTsKKyNlbmRpZgogICAgIHJldHVybiB3
ZWJWaWV3OwogfQogCkBAIC0xODYsNiArMTkxLDMxIEBAIFRFU1QoRm9udEF0dHJpYnV0ZXMsIEZv
bnRBdHRyaWJ1dGVzQWZ0ZXJDaGFuZ2luZ1NlbGVjdGlvbikKICAgICBhdXRvIHdlYlZpZXcgPSB3
ZWJWaWV3Rm9yVGVzdGluZ0ZvbnRBdHRyaWJ1dGVzKEAicmljaC10ZXh0LWF0dHJpYnV0ZXMiKTsK
ICAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAorICAgIGF1dG8g
ZXhwZWN0Rm9udE1hbmFnZXJTdGF0ZSA9IFtdIChGb250RXhwZWN0YXRpb24gZXhwZWN0ZWRGb250
LCBDb2xvckV4cGVjdGF0aW9uIGV4cGVjdGVkQ29sb3IsIHN0ZDo6b3B0aW9uYWw8U2hhZG93RXhw
ZWN0YXRpb24+IGV4cGVjdGVkU2hhZG93LCBCT09MIHVuZGVybGluZSwgQk9PTCBzdHJpa2VUaHJv
dWdoLCBCT09MIGV4cGVjdE11bHRpcGxlRm9udHMpIHsKKyNpZiBQTEFURk9STShNQUMpCisgICAg
ICAgIE5TRm9udE1hbmFnZXIgKmZvbnRNYW5hZ2VyID0gTlNGb250TWFuYWdlci5zaGFyZWRGb250
TWFuYWdlcjsKKyAgICAgICAgTlNGb250UGFuZWwgKmZvbnRQYW5lbCA9IE5TRm9udFBhbmVsLnNo
YXJlZEZvbnRQYW5lbDsKKyAgICAgICAgaWYgKGV4cGVjdGVkU2hhZG93KSB7CisgICAgICAgICAg
ICBFWFBFQ1RfVFJVRShmb250UGFuZWwuaGFzU2hhZG93KTsKKyAgICAgICAgICAgIEVYUEVDVF9M
VChzdGQ6OmFicyhleHBlY3RlZFNoYWRvdy0+b3BhY2l0eSAtIGZvbnRQYW5lbC5zaGFkb3dPcGFj
aXR5KSwgMC4wMDAxKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZFNoYWRvdy0+Ymx1
clJhZGl1cywgZm9udFBhbmVsLnNoYWRvd0JsdXIpOworICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgIEVYUEVDVF9GQUxTRShmb250UGFuZWwuaGFzU2hhZG93KTsKKyAgICAgICAgRVhQRUNUX0VR
KHVuZGVybGluZSwgZm9udFBhbmVsLmhhc1VuZGVybGluZSk7CisgICAgICAgIEVYUEVDVF9FUShz
dHJpa2VUaHJvdWdoLCBmb250UGFuZWwuaGFzU3RyaWtlVGhyb3VnaCk7CisgICAgICAgIGNoZWNr
Q29sb3IoW2ZvbnRQYW5lbC5mb3JlZ3JvdW5kQ29sb3IgY29sb3JVc2luZ0NvbG9yU3BhY2U6TlND
b2xvclNwYWNlLnNSR0JDb2xvclNwYWNlXSwgeyBXVEZNb3ZlKGV4cGVjdGVkQ29sb3IpIH0pOwor
ICAgICAgICBjaGVja0ZvbnQoZm9udE1hbmFnZXIuc2VsZWN0ZWRGb250LCBXVEZNb3ZlKGV4cGVj
dGVkRm9udCkpOworICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0TXVsdGlwbGVGb250cywgZm9udE1h
bmFnZXIubXVsdGlwbGUpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKGV4cGVjdGVkRm9u
dCk7CisgICAgICAgIFVOVVNFRF9QQVJBTShleHBlY3RlZENvbG9yKTsKKyAgICAgICAgVU5VU0VE
X1BBUkFNKGV4cGVjdGVkU2hhZG93KTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHVuZGVybGluZSk7
CisgICAgICAgIFVOVVNFRF9QQVJBTShzdHJpa2VUaHJvdWdoKTsKKyAgICAgICAgVU5VU0VEX1BB
UkFNKGV4cGVjdE11bHRpcGxlRm9udHMpOworI2VuZGlmCisgICAgfTsKKwogICAgIHsKICAgICAg
ICAgW3dlYlZpZXcgc2VsZWN0RWxlbWVudFdpdGhJZGVudGlmaWVyOkAib25lIl07CiAgICAgICAg
IE5TRGljdGlvbmFyeSAqYXR0cmlidXRlcyA9IFt3ZWJWaWV3IGZvbnRBdHRyaWJ1dGVzQWZ0ZXJO
ZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKQEAgLTE5Nyw2ICsyMjcsNyBAQCBURVNUKEZvbnRBdHRy
aWJ1dGVzLCBGb250QXR0cmlidXRlc0FmdGVyQ2hhbmdpbmdTZWxlY3Rpb24pCiAgICAgICAgIEVY
UEVDVF9FUShOU1VuZGVybGluZVN0eWxlU2luZ2xlLCBbYXR0cmlidXRlc1tOU1N0cmlrZXRocm91
Z2hTdHlsZUF0dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOwogICAgICAgICBFWFBFQ1RfRVEo
TlNVbmRlcmxpbmVTdHlsZU5vbmUsIFthdHRyaWJ1dGVzW05TVW5kZXJsaW5lU3R5bGVBdHRyaWJ1
dGVOYW1lXSBpbnRlZ2VyVmFsdWVdKTsKICAgICAgICAgRVhQRUNUX0VRKDAsIFthdHRyaWJ1dGVz
W05TU3VwZXJzY3JpcHRBdHRyaWJ1dGVOYW1lXSBpbnRlZ2VyVmFsdWVdKTsKKyAgICAgICAgZXhw
ZWN0Rm9udE1hbmFnZXJTdGF0ZSh7ICJIZWx2ZXRpY2EtQm9sZCIsIDQ4IH0sIHsgMjI3LCAzNiwg
MCwgMSB9LCBzdGQ6Om51bGxvcHQsIE5PLCBZRVMsIE5PKTsKICAgICB9CiAgICAgewogICAgICAg
ICBbd2ViVmlldyBzZWxlY3RFbGVtZW50V2l0aElkZW50aWZpZXI6QCJ0d28iXTsKQEAgLTIwOSw2
ICsyNDAsNyBAQCBURVNUKEZvbnRBdHRyaWJ1dGVzLCBGb250QXR0cmlidXRlc0FmdGVyQ2hhbmdp
bmdTZWxlY3Rpb24pCiAgICAgICAgIEVYUEVDVF9FUShOU1VuZGVybGluZVN0eWxlTm9uZSwgW2F0
dHJpYnV0ZXNbTlNTdHJpa2V0aHJvdWdoU3R5bGVBdHRyaWJ1dGVOYW1lXSBpbnRlZ2VyVmFsdWVd
KTsKICAgICAgICAgRVhQRUNUX0VRKE5TVW5kZXJsaW5lU3R5bGVTaW5nbGUsIFthdHRyaWJ1dGVz
W05TVW5kZXJsaW5lU3R5bGVBdHRyaWJ1dGVOYW1lXSBpbnRlZ2VyVmFsdWVdKTsKICAgICAgICAg
RVhQRUNUX0VRKDAsIFthdHRyaWJ1dGVzW05TU3VwZXJzY3JpcHRBdHRyaWJ1dGVOYW1lXSBpbnRl
Z2VyVmFsdWVdKTsKKyAgICAgICAgZXhwZWN0Rm9udE1hbmFnZXJTdGF0ZSh7ICJIZWx2ZXRpY2Et
Qm9sZCIsIDQ4IH0sIHsgMTAyLCAxNTcsIDUyLCAxIH0sIHsgeyAwLjQ3MDU4OCwgNSB9IH0sIFlF
UywgTk8sIE5PKTsKICAgICB9CiAgICAgewogICAgICAgICBbd2ViVmlldyBzZWxlY3RFbGVtZW50
V2l0aElkZW50aWZpZXI6QCJ0aHJlZSJdOwpAQCAtMjIxLDYgKzI1Myw3IEBAIFRFU1QoRm9udEF0
dHJpYnV0ZXMsIEZvbnRBdHRyaWJ1dGVzQWZ0ZXJDaGFuZ2luZ1NlbGVjdGlvbikKICAgICAgICAg
RVhQRUNUX0VRKE5TVW5kZXJsaW5lU3R5bGVOb25lLCBbYXR0cmlidXRlc1tOU1N0cmlrZXRocm91
Z2hTdHlsZUF0dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOwogICAgICAgICBFWFBFQ1RfRVEo
TlNVbmRlcmxpbmVTdHlsZU5vbmUsIFthdHRyaWJ1dGVzW05TVW5kZXJsaW5lU3R5bGVBdHRyaWJ1
dGVOYW1lXSBpbnRlZ2VyVmFsdWVdKTsKICAgICAgICAgRVhQRUNUX0VRKDAsIFthdHRyaWJ1dGVz
W05TU3VwZXJzY3JpcHRBdHRyaWJ1dGVOYW1lXSBpbnRlZ2VyVmFsdWVdKTsKKyAgICAgICAgZXhw
ZWN0Rm9udE1hbmFnZXJTdGF0ZSh7ICJNZW5sby1JdGFsaWMiLCAxOCB9LCB7IDI1NSwgMTA2LCAw
LCAxIH0sIHN0ZDo6bnVsbG9wdCwgTk8sIE5PLCBOTyk7CiAgICAgfQogICAgIHsKICAgICAgICAg
W3dlYlZpZXcgc2VsZWN0RWxlbWVudFdpdGhJZGVudGlmaWVyOkAiZm91ciJdOwpAQCAtMjMzLDYg
KzI2Niw3IEBAIFRFU1QoRm9udEF0dHJpYnV0ZXMsIEZvbnRBdHRyaWJ1dGVzQWZ0ZXJDaGFuZ2lu
Z1NlbGVjdGlvbikKICAgICAgICAgRVhQRUNUX0VRKE5TVW5kZXJsaW5lU3R5bGVOb25lLCBbYXR0
cmlidXRlc1tOU1N0cmlrZXRocm91Z2hTdHlsZUF0dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0p
OwogICAgICAgICBFWFBFQ1RfRVEoTlNVbmRlcmxpbmVTdHlsZU5vbmUsIFthdHRyaWJ1dGVzW05T
VW5kZXJsaW5lU3R5bGVBdHRyaWJ1dGVOYW1lXSBpbnRlZ2VyVmFsdWVdKTsKICAgICAgICAgRVhQ
RUNUX0VRKDAsIFthdHRyaWJ1dGVzW05TU3VwZXJzY3JpcHRBdHRyaWJ1dGVOYW1lXSBpbnRlZ2Vy
VmFsdWVdKTsKKyAgICAgICAgZXhwZWN0Rm9udE1hbmFnZXJTdGF0ZSh7ICJBdmVuaXItQm9vayIs
IDI0IH0sIHsgMjU1LCAyNTUsIDI1NSwgMSB9LCBzdGQ6Om51bGxvcHQsIE5PLCBOTywgTk8pOwog
ICAgIH0KICAgICB7CiAgICAgICAgIFt3ZWJWaWV3IHNlbGVjdEVsZW1lbnRXaXRoSWRlbnRpZmll
cjpAImZpdmUiXTsKQEAgLTI0NSw2ICsyNzksNyBAQCBURVNUKEZvbnRBdHRyaWJ1dGVzLCBGb250
QXR0cmlidXRlc0FmdGVyQ2hhbmdpbmdTZWxlY3Rpb24pCiAgICAgICAgIEVYUEVDVF9FUShOU1Vu
ZGVybGluZVN0eWxlTm9uZSwgW2F0dHJpYnV0ZXNbTlNTdHJpa2V0aHJvdWdoU3R5bGVBdHRyaWJ1
dGVOYW1lXSBpbnRlZ2VyVmFsdWVdKTsKICAgICAgICAgRVhQRUNUX0VRKE5TVW5kZXJsaW5lU3R5
bGVOb25lLCBbYXR0cmlidXRlc1tOU1VuZGVybGluZVN0eWxlQXR0cmlidXRlTmFtZV0gaW50ZWdl
clZhbHVlXSk7CiAgICAgICAgIEVYUEVDVF9FUSgwLCBbYXR0cmlidXRlc1tOU1N1cGVyc2NyaXB0
QXR0cmlidXRlTmFtZV0gaW50ZWdlclZhbHVlXSk7CisgICAgICAgIGV4cGVjdEZvbnRNYW5hZ2Vy
U3RhdGUoeyAiVGltZXNOZXdSb21hblBTLUJvbGRNVCIsIDI0IH0sIHsgMTMxLCAxNiwgMCwgMSB9
LCBzdGQ6Om51bGxvcHQsIE5PLCBOTywgTk8pOwogICAgIH0KICAgICB7CiAgICAgICAgIFt3ZWJW
aWV3IHNlbGVjdEVsZW1lbnRXaXRoSWRlbnRpZmllcjpAInNpeCJdOwpAQCAtMjU3LDYgKzI5Miw3
IEBAIFRFU1QoRm9udEF0dHJpYnV0ZXMsIEZvbnRBdHRyaWJ1dGVzQWZ0ZXJDaGFuZ2luZ1NlbGVj
dGlvbikKICAgICAgICAgRVhQRUNUX0VRKE5TVW5kZXJsaW5lU3R5bGVOb25lLCBbYXR0cmlidXRl
c1tOU1N0cmlrZXRocm91Z2hTdHlsZUF0dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOwogICAg
ICAgICBFWFBFQ1RfRVEoTlNVbmRlcmxpbmVTdHlsZU5vbmUsIFthdHRyaWJ1dGVzW05TVW5kZXJs
aW5lU3R5bGVBdHRyaWJ1dGVOYW1lXSBpbnRlZ2VyVmFsdWVdKTsKICAgICAgICAgRVhQRUNUX0VR
KDAsIFthdHRyaWJ1dGVzW05TU3VwZXJzY3JpcHRBdHRyaWJ1dGVOYW1lXSBpbnRlZ2VyVmFsdWVd
KTsKKyAgICAgICAgZXhwZWN0Rm9udE1hbmFnZXJTdGF0ZSh7ICJBdmVuaXItQmxhY2siLCAxOCB9
LCB7IDI1NSwgNjQsIDE5LCAxIH0sIHN0ZDo6bnVsbG9wdCwgTk8sIE5PLCBOTyk7CiAgICAgfQog
ICAgIHsKICAgICAgICAgW3dlYlZpZXcgc2VsZWN0RWxlbWVudFdpdGhJZGVudGlmaWVyOkAic2V2
ZW4iXTsKQEAgLTI2OSw2ICszMDUsNyBAQCBURVNUKEZvbnRBdHRyaWJ1dGVzLCBGb250QXR0cmli
dXRlc0FmdGVyQ2hhbmdpbmdTZWxlY3Rpb24pCiAgICAgICAgIEVYUEVDVF9FUShOU1VuZGVybGlu
ZVN0eWxlTm9uZSwgW2F0dHJpYnV0ZXNbTlNTdHJpa2V0aHJvdWdoU3R5bGVBdHRyaWJ1dGVOYW1l
XSBpbnRlZ2VyVmFsdWVdKTsKICAgICAgICAgRVhQRUNUX0VRKE5TVW5kZXJsaW5lU3R5bGVOb25l
LCBbYXR0cmlidXRlc1tOU1VuZGVybGluZVN0eWxlQXR0cmlidXRlTmFtZV0gaW50ZWdlclZhbHVl
XSk7CiAgICAgICAgIEVYUEVDVF9FUSgtMSwgW2F0dHJpYnV0ZXNbTlNTdXBlcnNjcmlwdEF0dHJp
YnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOworICAgICAgICBleHBlY3RGb250TWFuYWdlclN0YXRl
KHsgIkF2ZW5pci1Cb29rT2JsaXF1ZSIsIDEyIH0sIHsgMjM1LCAyMzUsIDIzNSwgMSB9LCBzdGQ6
Om51bGxvcHQsIE5PLCBOTywgTk8pOwogICAgIH0KICAgICB7CiAgICAgICAgIFt3ZWJWaWV3IHNl
bGVjdEVsZW1lbnRXaXRoSWRlbnRpZmllcjpAImVpZ2h0Il07CkBAIC0yODEsNiArMzE4LDcgQEAg
VEVTVChGb250QXR0cmlidXRlcywgRm9udEF0dHJpYnV0ZXNBZnRlckNoYW5naW5nU2VsZWN0aW9u
KQogICAgICAgICBFWFBFQ1RfRVEoTlNVbmRlcmxpbmVTdHlsZU5vbmUsIFthdHRyaWJ1dGVzW05T
U3RyaWtldGhyb3VnaFN0eWxlQXR0cmlidXRlTmFtZV0gaW50ZWdlclZhbHVlXSk7CiAgICAgICAg
IEVYUEVDVF9FUShOU1VuZGVybGluZVN0eWxlTm9uZSwgW2F0dHJpYnV0ZXNbTlNVbmRlcmxpbmVT
dHlsZUF0dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOwogICAgICAgICBFWFBFQ1RfRVEoMSwg
W2F0dHJpYnV0ZXNbTlNTdXBlcnNjcmlwdEF0dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOwor
ICAgICAgICBleHBlY3RGb250TWFuYWdlclN0YXRlKHsgIkF2ZW5pci1Cb29rIiwgMTIgfSwgeyAw
LCAwLCAwLCAxIH0sIHN0ZDo6bnVsbG9wdCwgTk8sIE5PLCBOTyk7CiAgICAgfQogICAgIHsKICAg
ICAgICAgW3dlYlZpZXcgc2VsZWN0RWxlbWVudFdpdGhJZGVudGlmaWVyOkAibmluZSJdOwpAQCAt
MjkzLDYgKzMzMSw3IEBAIFRFU1QoRm9udEF0dHJpYnV0ZXMsIEZvbnRBdHRyaWJ1dGVzQWZ0ZXJD
aGFuZ2luZ1NlbGVjdGlvbikKICAgICAgICAgRVhQRUNUX0VRKE5TVW5kZXJsaW5lU3R5bGVOb25l
LCBbYXR0cmlidXRlc1tOU1N0cmlrZXRocm91Z2hTdHlsZUF0dHJpYnV0ZU5hbWVdIGludGVnZXJW
YWx1ZV0pOwogICAgICAgICBFWFBFQ1RfRVEoTlNVbmRlcmxpbmVTdHlsZU5vbmUsIFthdHRyaWJ1
dGVzW05TVW5kZXJsaW5lU3R5bGVBdHRyaWJ1dGVOYW1lXSBpbnRlZ2VyVmFsdWVdKTsKICAgICAg
ICAgRVhQRUNUX0VRKDAsIFthdHRyaWJ1dGVzW05TU3VwZXJzY3JpcHRBdHRyaWJ1dGVOYW1lXSBp
bnRlZ2VyVmFsdWVdKTsKKyAgICAgICAgZXhwZWN0Rm9udE1hbmFnZXJTdGF0ZSh7ICJHZW9yZ2lh
IiwgMzYgfSwgeyAwLCAwLCAwLCAxIH0sIHsgeyAwLjY1ODgyNCwgOSB9IH0sIE5PLCBOTywgTk8p
OwogICAgIH0KICAgICB7CiAgICAgICAgIFt3ZWJWaWV3IHNlbGVjdEVsZW1lbnRXaXRoSWRlbnRp
ZmllcjpAInRlbiJdOwpAQCAtMzA1LDYgKzM0NCw3IEBAIFRFU1QoRm9udEF0dHJpYnV0ZXMsIEZv
bnRBdHRyaWJ1dGVzQWZ0ZXJDaGFuZ2luZ1NlbGVjdGlvbikKICAgICAgICAgRVhQRUNUX0VRKE5T
VW5kZXJsaW5lU3R5bGVOb25lLCBbYXR0cmlidXRlc1tOU1N0cmlrZXRocm91Z2hTdHlsZUF0dHJp
YnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOwogICAgICAgICBFWFBFQ1RfRVEoTlNVbmRlcmxpbmVT
dHlsZU5vbmUsIFthdHRyaWJ1dGVzW05TVW5kZXJsaW5lU3R5bGVBdHRyaWJ1dGVOYW1lXSBpbnRl
Z2VyVmFsdWVdKTsKICAgICAgICAgRVhQRUNUX0VRKDAsIFthdHRyaWJ1dGVzW05TU3VwZXJzY3Jp
cHRBdHRyaWJ1dGVOYW1lXSBpbnRlZ2VyVmFsdWVdKTsKKyAgICAgICAgZXhwZWN0Rm9udE1hbmFn
ZXJTdGF0ZSh7ICJBdmVuaXItQm9va09ibGlxdWUiLCAxOCB9LCB7IDAsIDAsIDAsIDEgfSwgc3Rk
OjpudWxsb3B0LCBOTywgTk8sIE5PKTsKICAgICB9CiAgICAgewogICAgICAgICBbd2ViVmlldyBz
ZWxlY3RFbGVtZW50V2l0aElkZW50aWZpZXI6QCJlbGV2ZW4iXTsKQEAgLTMxNyw3ICszNTcsMTMg
QEAgVEVTVChGb250QXR0cmlidXRlcywgRm9udEF0dHJpYnV0ZXNBZnRlckNoYW5naW5nU2VsZWN0
aW9uKQogICAgICAgICBFWFBFQ1RfRVEoTlNVbmRlcmxpbmVTdHlsZU5vbmUsIFthdHRyaWJ1dGVz
W05TU3RyaWtldGhyb3VnaFN0eWxlQXR0cmlidXRlTmFtZV0gaW50ZWdlclZhbHVlXSk7CiAgICAg
ICAgIEVYUEVDVF9FUShOU1VuZGVybGluZVN0eWxlTm9uZSwgW2F0dHJpYnV0ZXNbTlNVbmRlcmxp
bmVTdHlsZUF0dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOwogICAgICAgICBFWFBFQ1RfRVEo
MCwgW2F0dHJpYnV0ZXNbTlNTdXBlcnNjcmlwdEF0dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0p
OworICAgICAgICBleHBlY3RGb250TWFuYWdlclN0YXRlKHsgIk1lbmxvLVJlZ3VsYXIiLCAyMCB9
LCB7IDAsIDAsIDAsIDEgfSwgc3RkOjpudWxsb3B0LCBOTywgTk8sIE5PKTsKICAgICB9CisjaWYg
UExBVEZPUk0oTUFDKQorICAgIFt3ZWJWaWV3IHNlbGVjdEFsbDpuaWxdOworICAgIFt3ZWJWaWV3
IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKyAgICBFWFBFQ1RfVFJVRShOU0ZvbnRN
YW5hZ2VyLnNoYXJlZEZvbnRNYW5hZ2VyLm11bHRpcGxlKTsKKyNlbmRpZgogfQogCiBURVNUKEZv
bnRBdHRyaWJ1dGVzLCBOZXN0ZWRUZXh0TGlzdHNXaXRoSG9yaXpvbnRhbEFsaWdubWVudCkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0ZvbnRNYW5hZ2VyVGVzdHMu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Gb250TWFuYWdlclRlc3RzLm1tCmlu
ZGV4IDFhN2NhZGFmMTgzYzczZjMzOGQ3OWY0ZjlmMTM4OWI2MjBkMjEyZTcuLjQzMDhlYzQxYmZh
NzVmMDBhNjU0ZWE5MGUyYzVlODk3N2M0ZmExZWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvbWFjL0ZvbnRNYW5hZ2VyVGVzdHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9tYWMvRm9udE1hbmFnZXJUZXN0cy5tbQpAQCAtOTQsNiArOTQsNyBAQCBzdGF0
aWMgUmV0YWluUHRyPEZvbnRNYW5hZ2VyVGVzdFdLV2ViVmlldz4gd2ViVmlld0ZvckZvbnRNYW5h
Z2VyVGVzdGluZyhOU0ZvbnRNYQogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0
cmluZzptYXJrdXBdOwogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
QCJkb2N1bWVudC5ib2R5LmZvY3VzKCkiXTsKICAgICBbd2ViVmlldyBfc2V0RWRpdGFibGU6WUVT
XTsKKyAgICBbW2ZvbnRNYW5hZ2VyIGZvbnRQYW5lbDpZRVNdIHNldElzVmlzaWJsZTpZRVNdOwog
ICAgIGZvbnRNYW5hZ2VyLnRhcmdldCA9IHdlYlZpZXcuZ2V0KCk7CiAgICAgcmV0dXJuIHdlYlZp
ZXc7CiB9CkBAIC0xOTYsNiArMTk3LDE1IEBAIFRFU1QoRm9udE1hbmFnZXJUZXN0cywgQ2hhbmdl
Rm9udFdpdGhQYW5lbCkKICAgICBbZm9udFBhbmVsIHNldElzVmlzaWJsZTpZRVNdOwogICAgIFt3
ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKIAorICAgIGF1dG8gZXhwZWN0
U2FtZUF0dHJpYnV0ZXMgPSBbXShOU0ZvbnQgKmZvbnQxLCBOU0ZvbnQgKmZvbnQyKSB7CisgICAg
ICAgIGF1dG8gZm9udEF0dHJpYnV0ZXMxID0gZm9udDEuZm9udERlc2NyaXB0b3IuZm9udEF0dHJp
YnV0ZXM7CisgICAgICAgIGF1dG8gZm9udEF0dHJpYnV0ZXMyID0gZm9udDIuZm9udERlc2NyaXB0
b3IuZm9udEF0dHJpYnV0ZXM7CisgICAgICAgIEJPT0wgYXR0cmlidXRlc0FyZUVxdWFsID0gW2Zv
bnRBdHRyaWJ1dGVzMSBpc0VxdWFsVG9EaWN0aW9uYXJ5OmZvbnRBdHRyaWJ1dGVzMl07CisgICAg
ICAgIEVYUEVDVF9UUlVFKGF0dHJpYnV0ZXNBcmVFcXVhbCk7CisgICAgICAgIGlmICghYXR0cmli
dXRlc0FyZUVxdWFsKQorICAgICAgICAgICAgTlNMb2coQCJFeHBlY3RlZCAlQCB0byBoYXZlIHRo
ZSBzYW1lIGF0dHJpYnV0ZXMgYXMgJUAiLCBmb250MSwgZm9udDIpOworICAgIH07CisKICAgICBO
U0ZvbnQgKmxhcmdlSGVsdmV0aWNhRm9udCA9IFtOU0ZvbnQgZm9udFdpdGhOYW1lOkAiSGVsdmV0
aWNhIiBzaXplOjIwXTsKICAgICBbZm9udFBhbmVsIHNldFBhbmVsRm9udDpsYXJnZUhlbHZldGlj
YUZvbnQgaXNNdWx0aXBsZTpOT107CiAgICAgW3dlYlZpZXcgc2VsZWN0V29yZDpuaWxdOwpAQCAt
MjA0LDcgKzIxNCw3IEBAIFRFU1QoRm9udE1hbmFnZXJUZXN0cywgQ2hhbmdlRm9udFdpdGhQYW5l
bCkKICAgICBFWFBFQ1RfV0tfU1RSRVEoIkhlbHZldGljYSIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVy
dHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9udC1mYW1pbHkiXSk7CiAgICAgRVhQRUNUX1dLX1NUUkVR
KCIyMHB4IiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LXNp
emUiXSk7CiAgICAgRVhQRUNUX1dLX1NUUkVRKCI0MDAiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5
QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtd2VpZ2h0Il0pOwotICAgIEVYUEVDVF9FUShsYXJnZUhl
bHZldGljYUZvbnQsIGZvbnRNYW5hZ2VyLnNlbGVjdGVkRm9udCk7CisgICAgZXhwZWN0U2FtZUF0
dHJpYnV0ZXMobGFyZ2VIZWx2ZXRpY2FGb250LCBmb250TWFuYWdlci5zZWxlY3RlZEZvbnQpOwog
CiAgICAgTlNGb250ICpzbWFsbEJvbGRUaW1lc0ZvbnQgPSBbZm9udE1hbmFnZXIgZm9udFdpdGhG
YW1pbHk6QCJUaW1lcyBOZXcgUm9tYW4iIHRyYWl0czpOU0JvbGRGb250TWFzayB3ZWlnaHQ6TlNG
b250V2VpZ2h0Qm9sZCBzaXplOjEwXTsKICAgICBbZm9udFBhbmVsIHNldFBhbmVsRm9udDpzbWFs
bEJvbGRUaW1lc0ZvbnQgaXNNdWx0aXBsZTpOT107CkBAIC0yMTQsNyArMjI0LDcgQEAgVEVTVChG
b250TWFuYWdlclRlc3RzLCBDaGFuZ2VGb250V2l0aFBhbmVsKQogICAgIEVYUEVDVF9XS19TVFJF
USgiXCJUaW1lcyBOZXcgUm9tYW5cIiIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlv
blN0YXJ0OkAiZm9udC1mYW1pbHkiXSk7CiAgICAgRVhQRUNUX1dLX1NUUkVRKCIxMHB4IiwgW3dl
YlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LXNpemUiXSk7CiAgICAg
RVhQRUNUX1dLX1NUUkVRKCI3MDAiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25T
dGFydDpAImZvbnQtd2VpZ2h0Il0pOwotICAgIEVYUEVDVF9FUShzbWFsbEJvbGRUaW1lc0ZvbnQs
IGZvbnRNYW5hZ2VyLnNlbGVjdGVkRm9udCk7CisgICAgZXhwZWN0U2FtZUF0dHJpYnV0ZXMoc21h
bGxCb2xkVGltZXNGb250LCBmb250TWFuYWdlci5zZWxlY3RlZEZvbnQpOwogCiAgICAgTlNGb250
ICpib2xkSXRhbGljQXJpYWxGb250ID0gW2ZvbnRNYW5hZ2VyIGZvbnRXaXRoRmFtaWx5OkAiQXJp
YWwiIHRyYWl0czpOU0JvbGRGb250TWFzayB8IE5TSXRhbGljRm9udE1hc2sgd2VpZ2h0Ok5TRm9u
dFdlaWdodEJvbGQgc2l6ZToxNF07CiAgICAgW2ZvbnRQYW5lbCBzZXRQYW5lbEZvbnQ6Ym9sZEl0
YWxpY0FyaWFsRm9udCBpc011bHRpcGxlOk5PXTsKQEAgLTIyNCw3ICsyMzQsNyBAQCBURVNUKEZv
bnRNYW5hZ2VyVGVzdHMsIENoYW5nZUZvbnRXaXRoUGFuZWwpCiAgICAgRVhQRUNUX1dLX1NUUkVR
KCJBcmlhbCIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9udC1m
YW1pbHkiXSk7CiAgICAgRVhQRUNUX1dLX1NUUkVRKCIxNHB4IiwgW3dlYlZpZXcgc3R5bGVQcm9w
ZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LXNpemUiXSk7CiAgICAgRVhQRUNUX1dLX1NUUkVR
KCI3MDAiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtd2Vp
Z2h0Il0pOwotICAgIEVYUEVDVF9FUShib2xkSXRhbGljQXJpYWxGb250LCBmb250TWFuYWdlci5z
ZWxlY3RlZEZvbnQpOworICAgIGV4cGVjdFNhbWVBdHRyaWJ1dGVzKGJvbGRJdGFsaWNBcmlhbEZv
bnQsIGZvbnRNYW5hZ2VyLnNlbGVjdGVkRm9udCk7CiAKICAgICBOU0ZvbnQgKmxhcmdlSXRhbGlj
TGlnaHRBdmVuaXJGb250ID0gW2ZvbnRNYW5hZ2VyIGZvbnRXaXRoRmFtaWx5OkAiQXZlbmlyIiB0
cmFpdHM6TlNJdGFsaWNGb250TWFzayB3ZWlnaHQ6TlNGb250V2VpZ2h0TGlnaHQgc2l6ZToyNF07
CiAgICAgW2ZvbnRQYW5lbCBzZXRQYW5lbEZvbnQ6bGFyZ2VJdGFsaWNMaWdodEF2ZW5pckZvbnQg
aXNNdWx0aXBsZTpOT107CkBAIC0yMzQsNyArMjQ0LDcgQEAgVEVTVChGb250TWFuYWdlclRlc3Rz
LCBDaGFuZ2VGb250V2l0aFBhbmVsKQogICAgIEVYUEVDVF9XS19TVFJFUSgiQXZlbmlyLUxpZ2h0
T2JsaXF1ZSIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9udC1m
YW1pbHkiXSk7CiAgICAgRVhQRUNUX1dLX1NUUkVRKCIyNHB4IiwgW3dlYlZpZXcgc3R5bGVQcm9w
ZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LXNpemUiXSk7CiAgICAgRVhQRUNUX1dLX1NUUkVR
KCI0MDAiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtd2Vp
Z2h0Il0pOwotICAgIEVYUEVDVF9FUShsYXJnZUl0YWxpY0xpZ2h0QXZlbmlyRm9udCwgZm9udE1h
bmFnZXIuc2VsZWN0ZWRGb250KTsKKyAgICBleHBlY3RTYW1lQXR0cmlidXRlcyhsYXJnZUl0YWxp
Y0xpZ2h0QXZlbmlyRm9udCwgZm9udE1hbmFnZXIuc2VsZWN0ZWRGb250KTsKIH0KIAogVEVTVChG
b250TWFuYWdlclRlc3RzLCBDaGFuZ2VBdHRyaWJ1dGVzV2l0aEZvbnRFZmZlY3RzQm94KQpAQCAt
MjgzLDEzICsyOTMsMTQgQEAgVEVTVChGb250TWFuYWdlclRlc3RzLCBDaGFuZ2VBdHRyaWJ1dGVz
V2l0aEZvbnRFZmZlY3RzQm94KQogICAgIFt3ZWJWaWV3IHNlbGVjdE5leHRXb3JkXTsKICAgICBm
b250UGFuZWwuc2hhZG93Qmx1ciA9IDg7CiAgICAgZm9udFBhbmVsLnNoYWRvd09wYWNpdHkgPSAx
OworICAgIGZvbnRQYW5lbC5zaGFkb3dMZW5ndGggPSAwLjI1OwogICAgIFtmb250UGFuZWwgdG9n
Z2xlU2hhZG93XTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoImJheiIsIFt3ZWJWaWV3IHNlbGVjdGVk
VGV4dF0pOwotICAgIEVYUEVDVF9XS19TVFJFUSgicmdiKDAsIDAsIDApIDBweCAxLjI1cHggOHB4
IiwgdGV4dFNoYWRvd0Fyb3VuZFNlbGVjdGlvbigpKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoInJn
YigwLCAwLCAwKSAwcHggMi41cHggOHB4IiwgdGV4dFNoYWRvd0Fyb3VuZFNlbGVjdGlvbigpKTsK
ICAgICB7CiAgICAgICAgIE5TU2hhZG93ICpzaGFkb3cgPSBbd2ViVmlldyB0eXBpbmdBdHRyaWJ1
dGVzXVtOU1NoYWRvd0F0dHJpYnV0ZU5hbWVdOwogICAgICAgICBFWFBFQ1RfRVEoc2hhZG93LnNo
YWRvd09mZnNldC53aWR0aCwgMCk7Ci0gICAgICAgIEVYUEVDVF9FUShzaGFkb3cuc2hhZG93T2Zm
c2V0LmhlaWdodCwgMS4yNSk7CisgICAgICAgIEVYUEVDVF9FUShzaGFkb3cuc2hhZG93T2Zmc2V0
LmhlaWdodCwgMi41KTsKICAgICAgICAgRVhQRUNUX0VRKHNoYWRvdy5zaGFkb3dCbHVyUmFkaXVz
LCA4KTsKICAgICAgICAgRVhQRUNUX1RSVUUoW3NoYWRvdy5zaGFkb3dDb2xvciBpc0VxdWFsOltO
U0NvbG9yIGNvbG9yV2l0aFJlZDowIGdyZWVuOjAgYmx1ZTowIGFscGhhOjFdXSk7CiAgICAgfQpA
QCAtMzAyLDExICszMTMsMTIgQEAgVEVTVChGb250TWFuYWdlclRlc3RzLCBDaGFuZ2VBdHRyaWJ1
dGVzV2l0aEZvbnRFZmZlY3RzQm94KQogICAgIFt3ZWJWaWV3IHNlbGVjdEFsbDpuaWxdOwogICAg
IGZvbnRQYW5lbC5zaGFkb3dCbHVyID0gNTsKICAgICBmb250UGFuZWwuc2hhZG93T3BhY2l0eSA9
IDAuMjsKKyAgICBmb250UGFuZWwuc2hhZG93TGVuZ3RoID0gMC41OwogICAgIFtmb250UGFuZWwg
dG9nZ2xlU2hhZG93XTsKICAgICBbZm9udFBhbmVsIGNob29zZVVuZGVybGluZU1lbnVJdGVtV2l0
aFRpdGxlOkAic2luZ2xlIl07CiAgICAgW2ZvbnRQYW5lbCBjaG9vc2VTdHJpa2VUaHJvdWdoTWVu
dUl0ZW1XaXRoVGl0bGU6QCJzaW5nbGUiXTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoImZvbyBiYXIg
YmF6IiwgW3dlYlZpZXcgc2VsZWN0ZWRUZXh0XSk7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKCJyZ2Jh
KDAsIDAsIDAsIDAuMikgMHB4IDEuMjVweCA1cHgiLCB0ZXh0U2hhZG93QXJvdW5kU2VsZWN0aW9u
KCkpOworICAgIEVYUEVDVF9XS19TVFJFUSgicmdiYSgwLCAwLCAwLCAwLjIpIDBweCA1cHggNXB4
IiwgdGV4dFNoYWRvd0Fyb3VuZFNlbGVjdGlvbigpKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoInVu
ZGVybGluZSBsaW5lLXRocm91Z2giLCB0ZXh0RGVjb3JhdGlvbnNBcm91bmRTZWxlY3Rpb24oKSk7
CiAgICAgewogICAgICAgICBOU0RpY3Rpb25hcnkgKnR5cGluZ0F0dHJpYnV0ZXMgPSBbd2ViVmll
dyB0eXBpbmdBdHRyaWJ1dGVzXTsKQEAgLTMxNSw3ICszMjcsNyBAQCBURVNUKEZvbnRNYW5hZ2Vy
VGVzdHMsIENoYW5nZUF0dHJpYnV0ZXNXaXRoRm9udEVmZmVjdHNCb3gpCiAKICAgICAgICAgTlNT
aGFkb3cgKnNoYWRvdyA9IHR5cGluZ0F0dHJpYnV0ZXNbTlNTaGFkb3dBdHRyaWJ1dGVOYW1lXTsK
ICAgICAgICAgRVhQRUNUX0VRKHNoYWRvdy5zaGFkb3dPZmZzZXQud2lkdGgsIDApOwotICAgICAg
ICBFWFBFQ1RfRVEoc2hhZG93LnNoYWRvd09mZnNldC5oZWlnaHQsIDEuMjUpOworICAgICAgICBF
WFBFQ1RfRVEoc2hhZG93LnNoYWRvd09mZnNldC5oZWlnaHQsIDUpOwogICAgICAgICBFWFBFQ1Rf
RVEoc2hhZG93LnNoYWRvd0JsdXJSYWRpdXMsIDUpOwogICAgICAgICBFWFBFQ1RfVFJVRShbc2hh
ZG93LnNoYWRvd0NvbG9yIGlzRXF1YWw6W05TQ29sb3IgY29sb3JXaXRoUmVkOjAgZ3JlZW46MCBi
bHVlOjAgYWxwaGE6MC4yXV0pOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvbWFjL05TRm9udFBhbmVsVGVzdGluZy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvTlNG
b250UGFuZWxUZXN0aW5nLmgKaW5kZXggY2Y0MTI4MTAxZTc2ZGRkNGM4YjUxMTJmODk1YmIwZTJm
ZWJjM2NmYS4uM2UxZTBlYzgxYzE5ZjFiMGViNDI4ODNhODAyMjczMWZiZDcyYjJhMSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvTlNGb250UGFuZWxUZXN0aW5nLmgKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvTlNGb250UGFuZWxUZXN0aW5nLmgKQEAgLTMxLDYgKzMx
LDEyIEBAIEBpbnRlcmZhY2UgTlNGb250UGFuZWwgKFRlc3RXZWJLaXRBUEkpCiAKIEBwcm9wZXJ0
eSAobm9uYXRvbWljKSBkb3VibGUgc2hhZG93T3BhY2l0eTsKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
KSBkb3VibGUgc2hhZG93Qmx1cjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBkb3VibGUgc2hhZG93
TGVuZ3RoOworCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgaGFzU2hhZG93
OworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIGhhc1VuZGVybGluZTsKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBoYXNTdHJpa2VUaHJvdWdoOworQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0NvbG9yICpmb3JlZ3JvdW5kQ29sb3I7CiAK
IC0gKHZvaWQpdG9nZ2xlU2hhZG93OwogLSAodm9pZCljaG9vc2VVbmRlcmxpbmVNZW51SXRlbVdp
dGhUaXRsZTooTlNTdHJpbmcgKilpdGVtVGl0bGU7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL21hYy9OU0ZvbnRQYW5lbFRlc3RpbmcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL21h
Yy9OU0ZvbnRQYW5lbFRlc3RpbmcubW0KaW5kZXggMjMyOTUwY2RiZGVlMjAzYTUxYzZiMDY3ZDY4
ZjlmMTk0NzM3ODk5Yy4uNzEzZDAxZmMyZDk2ZmZiNjRmOTdiNDllNWMxZmYyYzZmMjBhZjhhNyAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvTlNGb250UGFuZWxUZXN0aW5nLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL05TRm9udFBhbmVsVGVzdGluZy5tbQpAQCAt
NjUsOSArNjUsMjQgQEAgLSAoTlNCb3ggKilmb250RWZmZWN0c0JveAogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxOU0JveCAqPihyZXN1bHQpOwogfQogCistIChOU1BvcFVwQnV0dG9uICopdW5kZXJs
aW5lVG9vbGJhckJ1dHRvbgoreworICAgIHJldHVybiAoTlNQb3BVcEJ1dHRvbiAqKVtzZWxmIF90
b29sYmFySXRlbVdpdGhJZGVudGlmaWVyOkAiTlNGb250UGFuZWxVbmRlcmxpbmVUb29sYmFySXRl
bSJdLnZpZXc7Cit9CisKKy0gKE5TUG9wVXBCdXR0b24gKilzdHJpa2VUaHJvdWdoVG9vbGJhckJ1
dHRvbgoreworICAgIHJldHVybiAoTlNQb3BVcEJ1dHRvbiAqKVtzZWxmIF90b29sYmFySXRlbVdp
dGhJZGVudGlmaWVyOkAiTlNGb250UGFuZWxTdHJpa2V0aHJvdWdoVG9vbGJhckl0ZW0iXS52aWV3
OworfQorCistIChOU0NvbG9yV2VsbCAqKWZvcmVncm91bmRDb2xvclRvb2xiYXJDb2xvcldlbGwK
K3sKKyAgICByZXR1cm4gKE5TQ29sb3JXZWxsICopW3NlbGYgX3Rvb2xiYXJJdGVtV2l0aElkZW50
aWZpZXI6QCJOU0ZvbnRQYW5lbFRleHRDb2xvclRvb2xiYXJJdGVtIl0udmlldzsKK30KKwogLSAo
dm9pZCljaG9vc2VVbmRlcmxpbmVNZW51SXRlbVdpdGhUaXRsZTooTlNTdHJpbmcgKilpdGVtVGl0
bGUKIHsKLSAgICBOU1BvcFVwQnV0dG9uICpidXR0b24gPSAoTlNQb3BVcEJ1dHRvbiAqKVtzZWxm
IF90b29sYmFySXRlbVdpdGhJZGVudGlmaWVyOkAiTlNGb250UGFuZWxVbmRlcmxpbmVUb29sYmFy
SXRlbSJdLnZpZXc7CisgICAgTlNQb3BVcEJ1dHRvbiAqYnV0dG9uID0gW3NlbGYgdW5kZXJsaW5l
VG9vbGJhckJ1dHRvbl07CiAgICAgW2J1dHRvbiBzZWxlY3RJdGVtOmZpbmRNZW51SXRlbVdpdGhU
aXRsZShidXR0b24sIGl0ZW1UaXRsZSldOwogICAgIFtzZWxmLmZvbnRFZmZlY3RzQm94IF9vcGVu
RWZmZWN0c0J1dHRvbjpidXR0b25dOwogICAgIFtzZWxmIF9kaWRDaGFuZ2VBdHRyaWJ1dGVzXTsK
QEAgLTc1LDcgKzkwLDcgQEAgLSAodm9pZCljaG9vc2VVbmRlcmxpbmVNZW51SXRlbVdpdGhUaXRs
ZTooTlNTdHJpbmcgKilpdGVtVGl0bGUKIAogLSAodm9pZCljaG9vc2VTdHJpa2VUaHJvdWdoTWVu
dUl0ZW1XaXRoVGl0bGU6KE5TU3RyaW5nICopaXRlbVRpdGxlCiB7Ci0gICAgTlNQb3BVcEJ1dHRv
biAqYnV0dG9uID0gKE5TUG9wVXBCdXR0b24gKilbc2VsZiBfdG9vbGJhckl0ZW1XaXRoSWRlbnRp
ZmllcjpAIk5TRm9udFBhbmVsU3RyaWtldGhyb3VnaFRvb2xiYXJJdGVtIl0udmlldzsKKyAgICBO
U1BvcFVwQnV0dG9uICpidXR0b24gPSBbc2VsZiBzdHJpa2VUaHJvdWdoVG9vbGJhckJ1dHRvbl07
CiAgICAgW2J1dHRvbiBzZWxlY3RJdGVtOmZpbmRNZW51SXRlbVdpdGhUaXRsZShidXR0b24sIGl0
ZW1UaXRsZSldOwogICAgIFtzZWxmLmZvbnRFZmZlY3RzQm94IF9vcGVuRWZmZWN0c0J1dHRvbjpi
dXR0b25dOwogICAgIFtzZWxmIF9kaWRDaGFuZ2VBdHRyaWJ1dGVzXTsKQEAgLTk4LDExICsxMTMs
MjEgQEAgLSAoTlNTbGlkZXIgKilzaGFkb3dPcGFjaXR5U2xpZGVyCiAgICAgcmV0dXJuIChOU1Ns
aWRlciAqKWZpbmRTdWJ2aWV3T2ZDbGFzcyhbc2VsZiBfdG9vbGJhckl0ZW1XaXRoSWRlbnRpZmll
cjpAIk5TRm9udFBhbmVsU2hhZG93T3BhY2l0eVRvb2xiYXJJdGVtIl0udmlldywgTlNTbGlkZXIu
Y2xhc3MpOwogfQogCistIChOU1NsaWRlciAqKXNoYWRvd0xlbmd0aFNsaWRlcgoreworICAgIHJl
dHVybiAoTlNTbGlkZXIgKilmaW5kU3Vidmlld09mQ2xhc3MoW3NlbGYgX3Rvb2xiYXJJdGVtV2l0
aElkZW50aWZpZXI6QCJOU0ZvbnRQYW5lbFNoYWRvd09mZnNldFRvb2xiYXJJdGVtIl0udmlldywg
TlNTbGlkZXIuY2xhc3MpOworfQorCiAtIChOU0J1dHRvbiAqKXNoYWRvd1RvZ2dsZUJ1dHRvbgog
ewogICAgIHJldHVybiAoTlNCdXR0b24gKilbc2VsZiBfdG9vbGJhckl0ZW1XaXRoSWRlbnRpZmll
cjpAIk5TRm9udFBhbmVsU2hhZG93VG9nZ2xlVG9vbGJhckl0ZW0iXS52aWV3OwogfQogCistIChC
T09MKWhhc1NoYWRvdworeworICAgIHJldHVybiBzZWxmLnNoYWRvd1RvZ2dsZUJ1dHRvbi5zdGF0
ZSA9PSBOU0NvbnRyb2xTdGF0ZVZhbHVlT247Cit9CisKIC0gKHZvaWQpdG9nZ2xlU2hhZG93CiB7
CiAgICAgTlNCdXR0b24gKnNoYWRvd1RvZ2dsZUJ1dHRvbiA9IHNlbGYuc2hhZG93VG9nZ2xlQnV0
dG9uOwpAQCAtMTEwLDYgKzEzNSwxNiBAQCAtICh2b2lkKXRvZ2dsZVNoYWRvdwogICAgIFtzZWxm
IF9kaWRDaGFuZ2VBdHRyaWJ1dGVzXTsKIH0KIAorLSAoZG91YmxlKXNoYWRvd0xlbmd0aAorewor
ICAgIHJldHVybiBzZWxmLnNoYWRvd0xlbmd0aFNsaWRlci5kb3VibGVWYWx1ZTsKK30KKworLSAo
dm9pZClzZXRTaGFkb3dMZW5ndGg6KGRvdWJsZSlzaGFkb3dMZW5ndGgKK3sKKyAgICBzZWxmLnNo
YWRvd0xlbmd0aFNsaWRlci5kb3VibGVWYWx1ZSA9IHNoYWRvd0xlbmd0aDsKK30KKwogLSAoZG91
YmxlKXNoYWRvd09wYWNpdHkKIHsKICAgICByZXR1cm4gc2VsZi5zaGFkb3dPcGFjaXR5U2xpZGVy
LmRvdWJsZVZhbHVlOwpAQCAtMTQzLDYgKzE3OCwyMyBAQCAtIChOU1Rvb2xiYXJJdGVtICopX3Rv
b2xiYXJJdGVtV2l0aElkZW50aWZpZXI6KE5TU3RyaW5nICopaXRlbUlkZW50aWZpZXIKICAgICBy
ZXR1cm4gbmlsOwogfQogCistIChCT09MKWhhc1VuZGVybGluZQoreworICAgIE5TTWVudUl0ZW0g
KnNpbmdsZVVuZGVybGluZU1lbnVJdGVtID0gW3NlbGYudW5kZXJsaW5lVG9vbGJhckJ1dHRvbiBp
dGVtQXRJbmRleDoyXTsKKyAgICByZXR1cm4gc2luZ2xlVW5kZXJsaW5lTWVudUl0ZW0uc3RhdGUg
PT0gTlNDb250cm9sU3RhdGVWYWx1ZU9uOworfQorCistIChCT09MKWhhc1N0cmlrZVRocm91Z2gK
K3sKKyAgICBOU01lbnVJdGVtICpzaW5nbGVTdHJpa2VUaHJvdWdoTWVudUl0ZW0gPSBbc2VsZi5z
dHJpa2VUaHJvdWdoVG9vbGJhckJ1dHRvbiBpdGVtQXRJbmRleDoyXTsKKyAgICByZXR1cm4gc2lu
Z2xlU3RyaWtlVGhyb3VnaE1lbnVJdGVtLnN0YXRlID09IE5TQ29udHJvbFN0YXRlVmFsdWVPbjsK
K30KKworLSAoTlNDb2xvciAqKWZvcmVncm91bmRDb2xvcgoreworICAgIHJldHVybiBzZWxmLmZv
cmVncm91bmRDb2xvclRvb2xiYXJDb2xvcldlbGwuY29sb3I7Cit9CisKIEBlbmQKIAogI2VuZGlm
IC8vIFBMQVRGT1JNKE1BQykK
</data>

          </attachment>
      

    </bug>

</bugzilla>