<?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>88802</bug_id>
          
          <creation_ts>2012-06-11 13:47:00 -0700</creation_ts>
          <short_desc>[Chromium] Let Android and Linux share WebFontRendering decl/impl</short_desc>
          <delta_ts>2012-06-13 20:28:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>89021</dependson>
          <blocked>66687</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Xianzhu Wang">wangxianzhu</reporter>
          <assigned_to name="Xianzhu Wang">wangxianzhu</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>klobag</cc>
    
    <cc>peter</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>646220</commentid>
    <comment_count>0</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-06-11 13:47:00 -0700</bug_when>
    <thetext>Some Linux-specific APIs under the following directories:

Source/WebKit/chromium/public/linux
Source/WebKit/chromium/public/platform/linux
Source/Platform/chromium/public/linux

can be shared with Android.

At least we need WebFontRendering to set some font rendering configurations from chromium on Android.
Other interfaces like WebFontRenderStyle, WebSandboxSupport, WebThemeEngine, WebFontInfo, etc. can also be shared.

We have some Android-specific changes in WebKit/WebCore for font configurations, but with the above APIs, we can move those changes into Chromium.

For example, in FontPlatformDataHarfBuzz.cpp:

#if OS(ANDROID)
// Slight hinting renders much better than normal hinting on Android.
static SkPaint::Hinting skiaHinting = SkPaint::kSlight_Hinting;
#else
static SkPaint::Hinting skiaHinting = SkPaint::kNormal_Hinting;
#endif

the change can be removed if we can use Source/WebKit/chromium/public/linux/WebFontRendering.h and Source/WebKit/chromium/src/linux/WebFontRendering.cpp on Android.

*/linux/* files are excluded on Android. Adding them back in gyp needs a tricky &apos;target_conditions&apos; section.

According to the rules defined in Chromium&apos;s build/filename_rules.gypi, we should name the directories &apos;linuxish&apos; if shared between Android and Linux.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646329</commentid>
    <comment_count>1</comment_count>
      <attachid>146930</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-06-11 15:32:23 -0700</bug_when>
    <thetext>Created attachment 146930
patch

Wondering if this is the correct way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646335</commentid>
    <comment_count>2</comment_count>
      <attachid>146930</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-06-11 15:36:06 -0700</bug_when>
    <thetext>Comment on attachment 146930
patch

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

Wondering if the commit queue could correctly handle the change:
A renamed to B
another A created

&gt; Source/WebKit/chromium/WebKit.gyp:-781
&gt; -                        [&apos;exclude&apos;, &apos;/linux/&apos;],

The rules have been in Chromium&apos;s build/filename_rules.gypi.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646411</commentid>
    <comment_count>3</comment_count>
      <attachid>146958</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-06-11 16:31:32 -0700</bug_when>
    <thetext>Created attachment 146958
patch v2 (try to fix patch issue)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646430</commentid>
    <comment_count>4</comment_count>
      <attachid>146964</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-06-11 16:49:18 -0700</bug_when>
    <thetext>Created attachment 146964
patch v3 (remove changes after move which break patch on bot)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646435</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-11 16:55:56 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647466</commentid>
    <comment_count>6</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-06-12 16:38:25 -0700</bug_when>
    <thetext>Will make a smaller change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647506</commentid>
    <comment_count>7</comment_count>
      <attachid>147197</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-06-12 17:13:29 -0700</bug_when>
    <thetext>Created attachment 147197
a much smaller patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647615</commentid>
    <comment_count>8</comment_count>
      <attachid>147197</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-06-12 19:46:59 -0700</bug_when>
    <thetext>Comment on attachment 147197
a much smaller patch

Ok.  I&apos;m not 100% confident in all of the changes you&apos;re making to the GYP file, but the compiler should tell us if we&apos;ve goofed up there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648163</commentid>
    <comment_count>9</comment_count>
      <attachid>147197</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-06-13 09:53:58 -0700</bug_when>
    <thetext>Comment on attachment 147197
a much smaller patch

Thanks Adam. I&apos;ve verified the patch on Chromium&apos;s try bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648189</commentid>
    <comment_count>10</comment_count>
      <attachid>147197</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-13 10:10:12 -0700</bug_when>
    <thetext>Comment on attachment 147197
a much smaller patch

Clearing flags on attachment: 147197

Committed r120220: &lt;http://trac.webkit.org/changeset/120220&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648190</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-13 10:10:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648245</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-13 10:52:46 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 89021</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648274</commentid>
    <comment_count>13</comment_count>
      <attachid>147367</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-06-13 11:19:09 -0700</bug_when>
    <thetext>Created attachment 147367
patch for re-applying with some changes in WebKit.gyp reverted</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648732</commentid>
    <comment_count>14</comment_count>
      <attachid>147367</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-13 20:28:30 -0700</bug_when>
    <thetext>Comment on attachment 147367
patch for re-applying with some changes in WebKit.gyp reverted

Clearing flags on attachment: 147367

Committed r120270: &lt;http://trac.webkit.org/changeset/120270&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648733</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-13 20:28:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146930</attachid>
            <date>2012-06-11 15:32:23 -0700</date>
            <delta_ts>2012-06-11 16:31:32 -0700</delta_ts>
            <desc>patch</desc>
            <filename>88802</filename>
            <type>text/plain</type>
            <size>73393</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTIwMDExKQorKysgU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDEyLTA2LTExICBYaWFu
emh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVt
XSBMZXQgQW5kcm9pZCBhbmQgTGludXggc2hhcmUgc29tZSBwbGF0Zm9ybS1zcGVjaWZpYyBBUElz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODgwMgor
CisgICAgICAgIEFkZGVkIHB1YmxpYy9saW51eGlzaCBhbmQgbW92ZWQgc2hhcmVhYmxlIGhlYWRl
ciBmaWxlcyBmcm9tIHB1YmxpYy9saW51eC4KKworICAgICAgICBDcmVhdGUgdGVtcG9yYXJ5IGZv
cndhcmRpbmcgaGVhZGVyIGZpbGVzIGluIHRoZSBvcmlnaW5hbCBwbGFjZXMuIAorICAgICAgICBX
aWxsIHJlbW92ZSB0aGVtIGFmdGVyIENocm9taXVtIHRyYW5zaXRpb24uCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvYW5k
cm9pZDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvYW5kcm9pZC9XZWJTYW5k
Ym94U3VwcG9ydC5oOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9hbmRyb2lk
L1dlYlRoZW1lRW5naW5lLmg6IFJlbW92ZWQuCisgICAgICAgICogY2hyb21pdW0vcHVibGljL2xp
bnV4L1dlYkZvbnRGYW1pbHkuaDogUmVwbGFjZWQuCisgICAgICAgICogY2hyb21pdW0vcHVibGlj
L2xpbnV4L1dlYlNhbmRib3hTdXBwb3J0Lmg6IFJlcGxhY2VkLgorICAgICAgICAqIGNocm9taXVt
L3B1YmxpYy9saW51eC9XZWJUaGVtZUVuZ2luZS5oOiBSZXBsYWNlZC4KKyAgICAgICAgKiBjaHJv
bWl1bS9wdWJsaWMvbGludXhpc2g6IEFkZGVkLgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9s
aW51eGlzaC9XZWJGb250RmFtaWx5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvbGludXgvV2ViRm9udEZhbWlseS5oLgorICAgICAgICAqIGNocm9taXVtL3B1
YmxpYy9saW51eGlzaC9XZWJTYW5kYm94U3VwcG9ydC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYlNhbmRib3hTdXBwb3J0LmguCisgICAgICAg
ICogY2hyb21pdW0vcHVibGljL2xpbnV4aXNoL1dlYlRoZW1lRW5naW5lLmg6IENvcGllZCBmcm9t
IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViVGhlbWVFbmdpbmUuaC4K
KwogMjAxMi0wNi0wOCAgRGF2aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFtDaHJvbWl1bV0gQ29tcG9zaXRvciBkb2Vzbid0IHN1cHBvcnQgdHJhbnNsdWNlbnQg
cm9vdCBsYXllcnMuCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL2FuZHJv
aWQvV2ViU2FuZGJveFN1cHBvcnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL2FuZHJvaWQvV2ViU2FuZGJveFN1cHBvcnQuaAkocmV2aXNpb24gMTIwMDEx
KQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9hbmRyb2lkL1dlYlNhbmRib3hT
dXBwb3J0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24u
Ci0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViU2FuZGJv
eFN1cHBvcnRfaAotI2RlZmluZSBXZWJTYW5kYm94U3VwcG9ydF9oCi0KLW5hbWVzcGFjZSBXZWJL
aXQgewotCi0vLyBFbXB0eSBjbGFzcywgYXMgd2UgbmVlZCBpdCB0byBjb21waWxlLgotY2xhc3Mg
V2ViU2FuZGJveFN1cHBvcnQgewotcHVibGljOgotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9hbmRyb2lk
L1dlYlRoZW1lRW5naW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9hbmRyb2lkL1dlYlRoZW1lRW5naW5lLmgJKHJldmlzaW9uIDEyMDAxMSkKKysrIFNv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvYW5kcm9pZC9XZWJUaGVtZUVuZ2luZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDE1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJUaGVtZUVuZ2luZV9oCi0j
ZGVmaW5lIFdlYlRoZW1lRW5naW5lX2gKLQotI2luY2x1ZGUgIi4uL1dlYkNhbnZhcy5oIgotI2lu
Y2x1ZGUgIi4uL1dlYkNvbG9yLmgiCi0jaW5jbHVkZSAiLi4vV2ViU2l6ZS5oIgotCi1uYW1lc3Bh
Y2UgV2ViS2l0IHsKLQotc3RydWN0IFdlYlJlY3Q7Ci0KLWNsYXNzIFdlYlRoZW1lRW5naW5lIHsK
LXB1YmxpYzoKLSAgICAvLyBUaGUgVUkgcGFydCB3aGljaCBpcyBiZWluZyBhY2Nlc3NlZC4KLSAg
ICBlbnVtIFBhcnQgewotICAgICAgICAvLyBTY3JvbGxiYXJUaGVtZSBwYXJ0cwotICAgICAgICBQ
YXJ0U2Nyb2xsYmFyRG93bkFycm93LAotICAgICAgICBQYXJ0U2Nyb2xsYmFyTGVmdEFycm93LAot
ICAgICAgICBQYXJ0U2Nyb2xsYmFyUmlnaHRBcnJvdywKLSAgICAgICAgUGFydFNjcm9sbGJhclVw
QXJyb3csCi0gICAgICAgIFBhcnRTY3JvbGxiYXJIb3Jpem9udGFsVGh1bWIsCi0gICAgICAgIFBh
cnRTY3JvbGxiYXJWZXJ0aWNhbFRodW1iLAotICAgICAgICBQYXJ0U2Nyb2xsYmFySG9yaXpvbnRh
bFRyYWNrLAotICAgICAgICBQYXJ0U2Nyb2xsYmFyVmVydGljYWxUcmFjaywKLQotICAgICAgICAv
LyBSZW5kZXJUaGVtZSBwYXJ0cwotICAgICAgICBQYXJ0Q2hlY2tib3gsCi0gICAgICAgIFBhcnRS
YWRpbywKLSAgICAgICAgUGFydEJ1dHRvbiwKLSAgICAgICAgUGFydFRleHRGaWVsZCwKLSAgICAg
ICAgUGFydE1lbnVMaXN0LAotICAgICAgICBQYXJ0U2xpZGVyVHJhY2ssCi0gICAgICAgIFBhcnRT
bGlkZXJUaHVtYiwKLSAgICAgICAgUGFydElubmVyU3BpbkJ1dHRvbiwKLSAgICAgICAgUGFydFBy
b2dyZXNzQmFyCi0gICAgfTsKLQotICAgIC8vIFRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBhc3Nv
Y2lhdGVkIFBhcnQuCi0gICAgZW51bSBTdGF0ZSB7Ci0gICAgICAgIFN0YXRlRGlzYWJsZWQsCi0g
ICAgICAgIFN0YXRlSG92ZXIsCi0gICAgICAgIFN0YXRlTm9ybWFsLAotICAgICAgICBTdGF0ZVBy
ZXNzZWQsCi0gICAgfTsKLQotICAgIC8vIEV4dHJhIHBhcmFtZXRlcnMgZm9yIGRyYXdpbmcgdGhl
IFBhcnRTY3JvbGxiYXJIb3Jpem9udGFsVHJhY2sgYW5kCi0gICAgLy8gUGFydFNjcm9sbGJhclZl
cnRpY2FsVHJhY2suCi0gICAgc3RydWN0IFNjcm9sbGJhclRyYWNrRXh0cmFQYXJhbXMgewotICAg
ICAgICAvLyBUaGUgYm91bmRzIG9mIHRoZSBlbnRpcmUgdHJhY2ssIGFzIG9wcG9zZWQgdG8gdGhl
IHBhcnQgYmVpbmcgcGFpbnRlZC4KLSAgICAgICAgaW50IHRyYWNrWDsKLSAgICAgICAgaW50IHRy
YWNrWTsKLSAgICAgICAgaW50IHRyYWNrV2lkdGg7Ci0gICAgICAgIGludCB0cmFja0hlaWdodDsK
LSAgICB9OwotCi0gICAgLy8gRXh0cmEgcGFyYW1ldGVycyBmb3IgUGFydENoZWNrYm94LCBQYXJ0
UHVzaEJ1dHRvbiBhbmQgUGFydFJhZGlvLgotICAgIHN0cnVjdCBCdXR0b25FeHRyYVBhcmFtcyB7
Ci0gICAgICAgIGJvb2wgY2hlY2tlZDsKLSAgICAgICAgYm9vbCBpbmRldGVybWluYXRlOyAvLyBX
aGV0aGVyIHRoZSBidXR0b24gc3RhdGUgaXMgaW5kZXRlcm1pbmF0ZS4KLSAgICAgICAgYm9vbCBp
c0RlZmF1bHQ7IC8vIFdoZXRoZXIgdGhlIGJ1dHRvbiBpcyBkZWZhdWx0IGJ1dHRvbi4KLSAgICAg
ICAgYm9vbCBoYXNCb3JkZXI7Ci0gICAgICAgIFdlYkNvbG9yIGJhY2tncm91bmRDb2xvcjsKLSAg
ICB9OwotCi0gICAgLy8gRXh0cmEgcGFyYW1ldGVycyBmb3IgUGFydFRleHRGaWVsZAotICAgIHN0
cnVjdCBUZXh0RmllbGRFeHRyYVBhcmFtcyB7Ci0gICAgICAgIGJvb2wgaXNUZXh0QXJlYTsKLSAg
ICAgICAgYm9vbCBpc0xpc3Rib3g7Ci0gICAgICAgIFdlYkNvbG9yIGJhY2tncm91bmRDb2xvcjsK
LSAgICB9OwotCi0gICAgLy8gRXh0cmEgcGFyYW1ldGVycyBmb3IgUGFydE1lbnVMaXN0Ci0gICAg
c3RydWN0IE1lbnVMaXN0RXh0cmFQYXJhbXMgewotICAgICAgICBib29sIGhhc0JvcmRlcjsKLSAg
ICAgICAgYm9vbCBoYXNCb3JkZXJSYWRpdXM7Ci0gICAgICAgIGludCBhcnJvd1g7Ci0gICAgICAg
IGludCBhcnJvd1k7Ci0gICAgICAgIFdlYkNvbG9yIGJhY2tncm91bmRDb2xvcjsKLSAgICB9Owot
Ci0gICAgLy8gRXh0cmEgcGFyYW1ldGVycyBmb3IgUGFydFNsaWRlclRyYWNrIGFuZCBQYXJ0U2xp
ZGVyVGh1bWIKLSAgICBzdHJ1Y3QgU2xpZGVyRXh0cmFQYXJhbXMgewotICAgICAgICBib29sIHZl
cnRpY2FsOwotICAgICAgICBib29sIGluRHJhZzsKLSAgICB9OwotCi0gICAgLy8gRXh0cmEgcGFy
YW1ldGVycyBmb3IgUGFydElubmVyU3BpbkJ1dHRvbgotICAgIHN0cnVjdCBJbm5lclNwaW5CdXR0
b25FeHRyYVBhcmFtcyB7Ci0gICAgICAgIGJvb2wgc3BpblVwOwotICAgICAgICBib29sIHJlYWRP
bmx5OwotICAgIH07Ci0KLSAgICAvLyBFeHRyYSBwYXJhbWV0ZXJzIGZvciBQYXJ0UHJvZ3Jlc3NC
YXIKLSAgICBzdHJ1Y3QgUHJvZ3Jlc3NCYXJFeHRyYVBhcmFtcyB7Ci0gICAgICAgIGJvb2wgZGV0
ZXJtaW5hdGU7Ci0gICAgICAgIGludCB2YWx1ZVJlY3RYOwotICAgICAgICBpbnQgdmFsdWVSZWN0
WTsKLSAgICAgICAgaW50IHZhbHVlUmVjdFdpZHRoOwotICAgICAgICBpbnQgdmFsdWVSZWN0SGVp
Z2h0OwotICAgIH07Ci0KLSAgICB1bmlvbiBFeHRyYVBhcmFtcyB7Ci0gICAgICAgIFNjcm9sbGJh
clRyYWNrRXh0cmFQYXJhbXMgc2Nyb2xsYmFyVHJhY2s7Ci0gICAgICAgIEJ1dHRvbkV4dHJhUGFy
YW1zIGJ1dHRvbjsKLSAgICAgICAgVGV4dEZpZWxkRXh0cmFQYXJhbXMgdGV4dEZpZWxkOwotICAg
ICAgICBNZW51TGlzdEV4dHJhUGFyYW1zIG1lbnVMaXN0OwotICAgICAgICBTbGlkZXJFeHRyYVBh
cmFtcyBzbGlkZXI7Ci0gICAgICAgIElubmVyU3BpbkJ1dHRvbkV4dHJhUGFyYW1zIGlubmVyU3Bp
bjsKLSAgICAgICAgUHJvZ3Jlc3NCYXJFeHRyYVBhcmFtcyBwcm9ncmVzc0JhcjsKLSAgICB9Owot
Ci0gICAgLy8gR2V0cyB0aGUgc2l6ZSBvZiB0aGUgZ2l2ZW4gdGhlbWUgcGFydC4gRm9yIHZhcmlh
YmxlIHNpemVkIGl0ZW1zCi0gICAgLy8gbGlrZSB2ZXJ0aWNhbCBzY3JvbGxiYXIgdGh1bWJzLCB0
aGUgd2lkdGggd2lsbCBiZSB0aGUgcmVxdWlyZWQgd2lkdGggb2YKLSAgICAvLyB0aGUgdHJhY2sg
d2hpbGUgdGhlIGhlaWdodCB3aWxsIGJlIHRoZSBtaW5pbXVtIGhlaWdodC4KLSAgICB2aXJ0dWFs
IFdlYlNpemUgZ2V0U2l6ZShQYXJ0KSB7IHJldHVybiBXZWJTaXplKCk7IH0KLSAgICAvLyBQYWlu
dCB0aGUgZ2l2ZW4gdGhlIGdpdmVuIHRoZW1lIHBhcnQuCi0gICAgdmlydHVhbCB2b2lkIHBhaW50
KFdlYkNhbnZhcyosIFBhcnQsIFN0YXRlLCBjb25zdCBXZWJSZWN0JiwgY29uc3QgRXh0cmFQYXJh
bXMqKSB7IH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKSW5kZXg6IFNv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViRm9udEZhbWlseS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViRm9udEZh
bWlseS5oCShyZXZpc2lvbiAxMjAwMDYpCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL2xpbnV4L1dlYkZvbnRGYW1pbHkuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjcsMjEgKzI3LDUgQEAK
ICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwotCi0jaWZuZGVmIFdlYkZvbnRG
YW1pbHlfaAotI2RlZmluZSBXZWJGb250RmFtaWx5X2gKLQotI2luY2x1ZGUgIi4uL1dlYkNTdHJp
bmcuaCIKLSNpbmNsdWRlICIuLi9XZWJDb21tb24uaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0K
LXN0cnVjdCBXZWJGb250RmFtaWx5IHsKLSAgICBXZWJDU3RyaW5nIG5hbWU7Ci0gICAgYm9vbCBp
c0JvbGQ7Ci0gICAgYm9vbCBpc0l0YWxpYzsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAot
Ci0jZW5kaWYgLy8gV2ViRm9udEZhbWlseV9oCisvLyBGSVhNRTogUmVtb3ZlIG9uY2UgaHR0cDov
L2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzEwNTQ0MTAzLyBpcyBsYW5kZWQuCisjaW5jbHVkZSAi
Li4vbGludXhpc2gvV2ViRm9udEZhbWlseS5oIgoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJGb250RmFtaWx5LmgKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9saW51eC9XZWJTYW5kYm94U3VwcG9ydC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViU2FuZGJveFN1cHBvcnQuaAko
cmV2aXNpb24gMTIwMDA2KQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9saW51
eC9XZWJTYW5kYm94U3VwcG9ydC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yNywzOSArMjcsNSBAQAogICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCi0KLSNpZm5kZWYgV2ViU2FuZGJveFN1
cHBvcnRfaAotI2RlZmluZSBXZWJTYW5kYm94U3VwcG9ydF9oCi0KLSNpbmNsdWRlICIuLi9XZWJD
b21tb24uaCIKLSNpbmNsdWRlICIuLi9XZWJTdHJpbmcuaCIKLSNpbmNsdWRlICJXZWJGb250RmFt
aWx5LmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgV2ViRm9udFJlbmRlclN0eWxl
OwotCi0vLyBQdXQgbWV0aG9kcyBoZXJlIHRoYXQgYXJlIHJlcXVpcmVkIGR1ZSB0byBzYW5kYm94
IHJlc3RyaWN0aW9ucy4KLWNsYXNzIFdlYlNhbmRib3hTdXBwb3J0IHsKLXB1YmxpYzoKLSAgICAv
LyBGb250cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLQotICAgIC8vIEdldCBhIGZvbnQgZmFtaWx5IHdoaWNoIGNvbnRhaW5z
IGdseXBocyBmb3IgdGhlIGdpdmVuIFVuaWNvZGUKLSAgICAvLyBjb2RlLXBvaW50cy4KLSAgICAv
LyAgIGNoYXJhY3RlcnM6IGEgVVRGLTE2IGVuY29kZWQgc3RyaW5nCi0gICAgLy8gICBudW1DaGFy
YWN0ZXJzOiB0aGUgbnVtYmVyIG9mIDE2LWJpdCB3b3JkcyBpbiB8Y2hhcmFjdGVyc3wKLSAgICAv
LyAgIHByZWZlcnJlZExvY2FsZTogcHJlZmVycmVkIGxvY2FsZSBpZGVudGlmaWVyIGZvciB0aGUg
fGNoYXJhY3RlcnN8Ci0gICAgLy8gICAgICAgICAgICAgICAgICAgIChlLmcuICJlbiIsICJqYSIs
ICJ6aC1DTiIpCi0gICAgLy8KLSAgICAvLyBSZXR1cm5zIGEgc3RyaW5nIHdpdGggdGhlIGZvbnQg
ZmFtaWx5IG9uIGFuIGVtcHR5IHN0cmluZyBpZiB0aGUKLSAgICAvLyByZXF1ZXN0IGNhbm5vdCBi
ZSBzYXRpc2ZpZWQuCi0gICAgLy8gUmV0dXJucyBhIFdlYkZvbnRGYW1pbHkgaW5zdGFuY2Ugd2l0
aCB0aGUgZm9udCBuYW1lLiBUaGUgaW5zdGFuY2UgaGFzIGVtcHR5IGZvbnQgbmFtZSBpZiB0aGUg
cmVxdWVzdCBjYW5ub3QgYmUgc2F0aXNmaWVkLgotICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgdG8g
YmUgYSBwdXJlIHZpcnR1YWwgZnVuY3Rpb24gYWZ0ZXIgdHJhbnNpdGlvbi4KLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0Rm9udEZhbWlseUZvckNoYXJhY3RlcnMoY29uc3QgV2ViVUNoYXIqIGNoYXJhY3Rl
cnMsIHNpemVfdCBudW1DaGFyYWN0ZXJzLCBjb25zdCBjaGFyKiBwcmVmZXJyZWRMb2NhbGUsIFdl
YkZvbnRGYW1pbHkqKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UmVuZGVyU3R5bGVGb3JT
dHJpa2UoY29uc3QgY2hhciogZmFtaWx5LCBpbnQgc2l6ZUFuZFN0eWxlLCBXZWJGb250UmVuZGVy
U3R5bGUqKSA9IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCisvLyBG
SVhNRTogUmVtb3ZlIG9uY2UgaHR0cDovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzEwNTQ0MTAz
LyBpcyBsYW5kZWQuCisjaW5jbHVkZSAiLi4vbGludXhpc2gvV2ViU2FuZGJveFN1cHBvcnQuaCIK
ClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvbGlu
dXgvV2ViU2FuZGJveFN1cHBvcnQuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAg
ICsgTEYKCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYlRo
ZW1lRW5naW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9saW51eC9XZWJUaGVtZUVuZ2luZS5oCShyZXZpc2lvbiAxMjAwMDYpCisrKyBTb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYlRoZW1lRW5naW5lLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
QEAgLTI3LDEyNiArMjcsNSBAQAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
Ci0KLSNpZm5kZWYgV2ViVGhlbWVFbmdpbmVfaAotI2RlZmluZSBXZWJUaGVtZUVuZ2luZV9oCi0K
LSNpbmNsdWRlICIuLi9XZWJDYW52YXMuaCIKLSNpbmNsdWRlICIuLi9XZWJDb2xvci5oIgotI2lu
Y2x1ZGUgIi4uL1dlYlNpemUuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBXZWJS
ZWN0OwotCi1jbGFzcyBXZWJUaGVtZUVuZ2luZSB7Ci1wdWJsaWM6Ci0gICAgLy8gVGhlIFVJIHBh
cnQgd2hpY2ggaXMgYmVpbmcgYWNjZXNzZWQuCi0gICAgZW51bSBQYXJ0IHsKLSAgICAgICAgLy8g
U2Nyb2xsYmFyVGhlbWUgcGFydHMKLSAgICAgICAgUGFydFNjcm9sbGJhckRvd25BcnJvdywKLSAg
ICAgICAgUGFydFNjcm9sbGJhckxlZnRBcnJvdywKLSAgICAgICAgUGFydFNjcm9sbGJhclJpZ2h0
QXJyb3csCi0gICAgICAgIFBhcnRTY3JvbGxiYXJVcEFycm93LAotICAgICAgICBQYXJ0U2Nyb2xs
YmFySG9yaXpvbnRhbFRodW1iLAotICAgICAgICBQYXJ0U2Nyb2xsYmFyVmVydGljYWxUaHVtYiwK
LSAgICAgICAgUGFydFNjcm9sbGJhckhvcml6b250YWxUcmFjaywKLSAgICAgICAgUGFydFNjcm9s
bGJhclZlcnRpY2FsVHJhY2ssCi0KLSAgICAgICAgLy8gUmVuZGVyVGhlbWUgcGFydHMKLSAgICAg
ICAgUGFydENoZWNrYm94LAotICAgICAgICBQYXJ0UmFkaW8sCi0gICAgICAgIFBhcnRCdXR0b24s
Ci0gICAgICAgIFBhcnRUZXh0RmllbGQsCi0gICAgICAgIFBhcnRNZW51TGlzdCwKLSAgICAgICAg
UGFydFNsaWRlclRyYWNrLAotICAgICAgICBQYXJ0U2xpZGVyVGh1bWIsCi0gICAgICAgIFBhcnRJ
bm5lclNwaW5CdXR0b24sCi0gICAgICAgIFBhcnRQcm9ncmVzc0JhcgotICAgIH07Ci0KLSAgICAv
LyBUaGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgYXNzb2NpYXRlZCBQYXJ0LgotICAgIGVudW0gU3Rh
dGUgewotICAgICAgICBTdGF0ZURpc2FibGVkLAotICAgICAgICBTdGF0ZUhvdmVyLAotICAgICAg
ICBTdGF0ZU5vcm1hbCwKLSAgICAgICAgU3RhdGVQcmVzc2VkLAotICAgIH07Ci0KLSAgICAvLyBF
eHRyYSBwYXJhbWV0ZXJzIGZvciBkcmF3aW5nIHRoZSBQYXJ0U2Nyb2xsYmFySG9yaXpvbnRhbFRy
YWNrIGFuZAotICAgIC8vIFBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRyYWNrLgotICAgIHN0cnVjdCBT
Y3JvbGxiYXJUcmFja0V4dHJhUGFyYW1zIHsKLSAgICAgICAgLy8gVGhlIGJvdW5kcyBvZiB0aGUg
ZW50aXJlIHRyYWNrLCBhcyBvcHBvc2VkIHRvIHRoZSBwYXJ0IGJlaW5nIHBhaW50ZWQuCi0gICAg
ICAgIGludCB0cmFja1g7Ci0gICAgICAgIGludCB0cmFja1k7Ci0gICAgICAgIGludCB0cmFja1dp
ZHRoOwotICAgICAgICBpbnQgdHJhY2tIZWlnaHQ7Ci0gICAgfTsKLQotICAgIC8vIEV4dHJhIHBh
cmFtZXRlcnMgZm9yIFBhcnRDaGVja2JveCwgUGFydFB1c2hCdXR0b24gYW5kIFBhcnRSYWRpby4K
LSAgICBzdHJ1Y3QgQnV0dG9uRXh0cmFQYXJhbXMgewotICAgICAgICBib29sIGNoZWNrZWQ7Ci0g
ICAgICAgIGJvb2wgaW5kZXRlcm1pbmF0ZTsgLy8gV2hldGhlciB0aGUgYnV0dG9uIHN0YXRlIGlz
IGluZGV0ZXJtaW5hdGUuCi0gICAgICAgIGJvb2wgaXNEZWZhdWx0OyAvLyBXaGV0aGVyIHRoZSBi
dXR0b24gaXMgZGVmYXVsdCBidXR0b24uCi0gICAgICAgIGJvb2wgaGFzQm9yZGVyOwotICAgICAg
ICBXZWJDb2xvciBiYWNrZ3JvdW5kQ29sb3I7Ci0gICAgfTsKLQotICAgIC8vIEV4dHJhIHBhcmFt
ZXRlcnMgZm9yIFBhcnRUZXh0RmllbGQKLSAgICBzdHJ1Y3QgVGV4dEZpZWxkRXh0cmFQYXJhbXMg
ewotICAgICAgICBib29sIGlzVGV4dEFyZWE7Ci0gICAgICAgIGJvb2wgaXNMaXN0Ym94OwotICAg
ICAgICBXZWJDb2xvciBiYWNrZ3JvdW5kQ29sb3I7Ci0gICAgfTsKLQotICAgIC8vIEV4dHJhIHBh
cmFtZXRlcnMgZm9yIFBhcnRNZW51TGlzdAotICAgIHN0cnVjdCBNZW51TGlzdEV4dHJhUGFyYW1z
IHsKLSAgICAgICAgYm9vbCBoYXNCb3JkZXI7Ci0gICAgICAgIGJvb2wgaGFzQm9yZGVyUmFkaXVz
OwotICAgICAgICBpbnQgYXJyb3dYOwotICAgICAgICBpbnQgYXJyb3dZOwotICAgICAgICBXZWJD
b2xvciBiYWNrZ3JvdW5kQ29sb3I7Ci0gICAgfTsKLQotICAgIC8vIEV4dHJhIHBhcmFtZXRlcnMg
Zm9yIFBhcnRTbGlkZXJUcmFjayBhbmQgUGFydFNsaWRlclRodW1iCi0gICAgc3RydWN0IFNsaWRl
ckV4dHJhUGFyYW1zIHsKLSAgICAgICAgYm9vbCB2ZXJ0aWNhbDsKLSAgICAgICAgYm9vbCBpbkRy
YWc7Ci0gICAgfTsKLQotICAgIC8vIEV4dHJhIHBhcmFtZXRlcnMgZm9yIFBhcnRJbm5lclNwaW5C
dXR0b24KLSAgICBzdHJ1Y3QgSW5uZXJTcGluQnV0dG9uRXh0cmFQYXJhbXMgewotICAgICAgICBi
b29sIHNwaW5VcDsKLSAgICAgICAgYm9vbCByZWFkT25seTsKLSAgICB9OwotCi0gICAgLy8gRXh0
cmEgcGFyYW1ldGVycyBmb3IgUGFydFByb2dyZXNzQmFyCi0gICAgc3RydWN0IFByb2dyZXNzQmFy
RXh0cmFQYXJhbXMgewotICAgICAgICBib29sIGRldGVybWluYXRlOwotICAgICAgICBpbnQgdmFs
dWVSZWN0WDsKLSAgICAgICAgaW50IHZhbHVlUmVjdFk7Ci0gICAgICAgIGludCB2YWx1ZVJlY3RX
aWR0aDsKLSAgICAgICAgaW50IHZhbHVlUmVjdEhlaWdodDsKLSAgICB9OwotCi0gICAgdW5pb24g
RXh0cmFQYXJhbXMgewotICAgICAgICBTY3JvbGxiYXJUcmFja0V4dHJhUGFyYW1zIHNjcm9sbGJh
clRyYWNrOwotICAgICAgICBCdXR0b25FeHRyYVBhcmFtcyBidXR0b247Ci0gICAgICAgIFRleHRG
aWVsZEV4dHJhUGFyYW1zIHRleHRGaWVsZDsKLSAgICAgICAgTWVudUxpc3RFeHRyYVBhcmFtcyBt
ZW51TGlzdDsKLSAgICAgICAgU2xpZGVyRXh0cmFQYXJhbXMgc2xpZGVyOwotICAgICAgICBJbm5l
clNwaW5CdXR0b25FeHRyYVBhcmFtcyBpbm5lclNwaW47Ci0gICAgICAgIFByb2dyZXNzQmFyRXh0
cmFQYXJhbXMgcHJvZ3Jlc3NCYXI7Ci0gICAgfTsKLQotICAgIC8vIEdldHMgdGhlIHNpemUgb2Yg
dGhlIGdpdmVuIHRoZW1lIHBhcnQuIEZvciB2YXJpYWJsZSBzaXplZCBpdGVtcwotICAgIC8vIGxp
a2UgdmVydGljYWwgc2Nyb2xsYmFyIHRodW1icywgdGhlIHdpZHRoIHdpbGwgYmUgdGhlIHJlcXVp
cmVkIHdpZHRoIG9mCi0gICAgLy8gdGhlIHRyYWNrIHdoaWxlIHRoZSBoZWlnaHQgd2lsbCBiZSB0
aGUgbWluaW11bSBoZWlnaHQuCi0gICAgdmlydHVhbCBXZWJTaXplIGdldFNpemUoUGFydCkgeyBy
ZXR1cm4gV2ViU2l6ZSgpOyB9Ci0gICAgLy8gUGFpbnQgdGhlIGdpdmVuIHRoZSBnaXZlbiB0aGVt
ZSBwYXJ0LgotICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJDYW52YXMqLCBQYXJ0LCBTdGF0ZSwg
Y29uc3QgV2ViUmVjdCYsIGNvbnN0IEV4dHJhUGFyYW1zKikgeyB9Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJLaXQKLQotI2VuZGlmCisvLyBGSVhNRTogUmVtb3ZlIG9uY2UgaHR0cDovL2NvZGVy
ZXZpZXcuY2hyb21pdW0ub3JnLzEwNTQ0MTAzLyBpcyBsYW5kZWQuCisjaW5jbHVkZSAiLi4vbGlu
dXhpc2gvV2ViVGhlbWVFbmdpbmUuaCIKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViVGhlbWVFbmdpbmUuaApfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFk
ZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL2xpbnV4aXNoL1dlYkZvbnRGYW1pbHkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL2xpbnV4aXNoL1dlYkZvbnRGYW1pbHkuaAkocmV2aXNp
b24gMTE5OTg2KQkoZnJvbSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL2xpbnV4L1dl
YkZvbnRGYW1pbHkuaDoxMTk5ODYpCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L2xpbnV4aXNoL1dlYkZvbnRGYW1pbHkuaAkod29ya2luZyBjb3B5KQpJbmRleDogU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9saW51eGlzaC9XZWJTYW5kYm94U3VwcG9ydC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvbGludXhpc2gvV2ViU2Fu
ZGJveFN1cHBvcnQuaAkocmV2aXNpb24gMTE5OTg2KQkoZnJvbSBTb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL2xpbnV4L1dlYlNhbmRib3hTdXBwb3J0Lmg6MTE5OTg2KQorKysgU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9saW51eGlzaC9XZWJTYW5kYm94U3VwcG9ydC5oCSh3
b3JraW5nIGNvcHkpCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL2xpbnV4
aXNoL1dlYlRoZW1lRW5naW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9saW51eGlzaC9XZWJUaGVtZUVuZ2luZS5oCShyZXZpc2lvbiAxMTk5ODYpCShm
cm9tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViVGhlbWVFbmdpbmUu
aDoxMTk5ODYpCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL2xpbnV4aXNoL1dl
YlRoZW1lRW5naW5lLmgJKHdvcmtpbmcgY29weSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCShyZXZpc2lvbiAxMjAwMTEpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDEyLTA2LTExICBYaWFuemh1IFdh
bmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBMZXQg
QW5kcm9pZCBhbmQgTGludXggc2hhcmUgc29tZSBwbGF0Zm9ybS1zcGVjaWZpYyBBUElzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODgwMgorCisgICAg
ICAgIEFkZGVkIHB1YmxpYy9saW51eGlzaCBhbmQgcHVibGljL3BsYXRmb3JtL2xpbnV4aXNoIGFu
ZCBtb3ZlZCBzaGFyZWFibGUKKyAgICAgICAgaGVhZGVyIGZpbGVzIGZyb20gcHVibGljL2xpbnV4
IGFuZCBwdWJsaWMvcGxhdGZvcm0vbGludXggdG8gdGhlIG5ldworICAgICAgICBkaXJlY3Rvcmll
cy4KKworICAgICAgICBDcmVhdGUgdGVtcG9yYXJ5IGZvcndhcmRpbmcgaGVhZGVyIGZpbGVzIGlu
IHRoZSBvcmlnaW5hbCBwbGFjZXMuCisgICAgICAgIFdpbGwgcmVtb3ZlIHRoZW0gYWZ0ZXIgQ2hy
b21pdW0gdHJhbnNpdGlvbi4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL2FuZHJvaWQvV2ViU2Fu
ZGJveFN1cHBvcnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwdWJsaWMvZ3RrL1dlYkZvbnRJbmZv
Lmg6IFJlbW92ZWQuCisgICAgICAgICogcHVibGljL2xpbnV4L1dlYkZvbnRJbmZvLmg6IFJlcGxh
Y2VkLgorICAgICAgICAqIHB1YmxpYy9saW51eC9XZWJGb250UmVuZGVyU3R5bGUuaDogUmVwbGFj
ZWQuCisgICAgICAgICogcHVibGljL2xpbnV4L1dlYkZvbnRSZW5kZXJpbmcuaDogUmVwbGFjZWQu
CisgICAgICAgICogcHVibGljL2xpbnV4L1dlYlJlbmRlclRoZW1lLmg6IFJlcGxhY2VkLgorICAg
ICAgICAqIHB1YmxpYy9saW51eC9XZWJTYW5kYm94U3VwcG9ydC5oOiBSZXBsYWNlZC4KKyAgICAg
ICAgKiBwdWJsaWMvbGludXhpc2g6IEFkZGVkLgorICAgICAgICAqIHB1YmxpYy9saW51eGlzaC9X
ZWJGb250SW5mby5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9s
aW51eC9XZWJGb250SW5mby5oLgorICAgICAgICAqIHB1YmxpYy9saW51eGlzaC9XZWJGb250UmVu
ZGVyU3R5bGUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGlu
dXgvV2ViRm9udFJlbmRlclN0eWxlLmguCisgICAgICAgICogcHVibGljL2xpbnV4aXNoL1dlYkZv
bnRSZW5kZXJpbmcuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
bGludXgvV2ViRm9udFJlbmRlcmluZy5oLgorICAgICAgICAqIHB1YmxpYy9saW51eGlzaC9XZWJS
ZW5kZXJUaGVtZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9s
aW51eC9XZWJSZW5kZXJUaGVtZS5oLgorICAgICAgICAqIHB1YmxpYy9saW51eGlzaC9XZWJTYW5k
Ym94U3VwcG9ydC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9s
aW51eC9XZWJTYW5kYm94U3VwcG9ydC5oLgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9hbmRy
b2lkOiBSZW1vdmVkLgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9hbmRyb2lkL1dlYlNhbmRi
b3hTdXBwb3J0Lmg6IFJlbW92ZWQuCisgICAgICAgICogcHVibGljL3BsYXRmb3JtL2FuZHJvaWQv
V2ViVGhlbWVFbmdpbmUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vbGlu
dXgvV2ViRm9udEZhbWlseS5oOiBSZXBsYWNlZC4KKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0v
bGludXgvV2ViU2FuZGJveFN1cHBvcnQuaDogUmVwbGFjZWQuCisgICAgICAgICogcHVibGljL3Bs
YXRmb3JtL2xpbnV4L1dlYlRoZW1lRW5naW5lLmg6IFJlcGxhY2VkLgorICAgICAgICAqIHB1Ymxp
Yy9wbGF0Zm9ybS9saW51eGlzaDogQWRkZWQuCisgICAgICAgICogcHVibGljL3BsYXRmb3JtL2xp
bnV4aXNoL1dlYkZvbnRGYW1pbHkuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvcGxhdGZvcm0vbGludXgvV2ViRm9udEZhbWlseS5oLgorICAgICAgICAqIHB1Ymxp
Yy9wbGF0Zm9ybS9saW51eGlzaC9XZWJTYW5kYm94U3VwcG9ydC5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9saW51eC9XZWJTYW5kYm94U3VwcG9y
dC5oLgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9saW51eGlzaC9XZWJUaGVtZUVuZ2luZS5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9saW51
eC9XZWJUaGVtZUVuZ2luZS5oLgorICAgICAgICAqIHNyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TdXBwb3J0OjpnZXRGb250RmFtaWx5Rm9yQ2hhcmFj
dGVycyk6IFJlbW92ZWQgQW5kcm9pZC1zcGVjaWZpYyBjb2RlCisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVN1cHBvcnQ6OmdldFJlbmRlclN0eWxlRm9yU3RyaWtlKTogUmVtb3ZlZCBBbmRyb2lk
LXNwZWNpZmljIGNvZGUKKyAgICAgICAgKiBzcmMvYW5kcm9pZC9XZWJGb250SW5mby5jcHA6IEFk
ZGVkLiBBbmRyb2lkLXNwZWNpZmljIGltcGxlbWVudGF0aW9uIG9mIFdlYkZvbnRJbmZvLgorICAg
ICAgICAqIHNyYy9saW51eC9XZWJGb250SW5mby5jcHA6CisgICAgICAgICogc3JjL2xpbnV4L1dl
YkZvbnRSZW5kZXJTdHlsZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3JjL2xpbnV4L1dlYkZv
bnRSZW5kZXJpbmcuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9saW51eC9XZWJSZW5kZXJU
aGVtZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3JjL2xpbnV4aXNoOiBBZGRlZC4KKyAgICAg
ICAgKiBzcmMvbGludXhpc2gvV2ViRm9udFJlbmRlclN0eWxlLmNwcDogQ29waWVkIGZyb20gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbGludXgvV2ViRm9udFJlbmRlclN0eWxlLmNwcC4KKyAg
ICAgICAgKiBzcmMvbGludXhpc2gvV2ViRm9udFJlbmRlcmluZy5jcHA6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2xpbnV4L1dlYkZvbnRSZW5kZXJpbmcuY3BwLgorICAg
ICAgICAqIHNyYy9saW51eGlzaC9XZWJSZW5kZXJUaGVtZS5jcHA6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL2xpbnV4L1dlYlJlbmRlclRoZW1lLmNwcC4KKwogMjAxMi0w
Ni0xMSAgU2hhd24gU2luZ2ggIDxzaGF3bnNpbmdoQGNocm9taXVtLm9yZz4KIAogICAgICAgICBb
Y2hyb21pdW1dIEltcGxlbWVudCBwb3NpdGlvbjpmaXhlZCBpbiBjb21wb3NpdG9yIHRocmVhZApJ
bmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24gMTIwMDExKQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC0yODMsOSAr
MjgzLDkgQEAKICAgICAgICAgICAgICAgICAncHVibGljL2FuZHJvaWQvV2ViSW5wdXRFdmVudEZh
Y3RvcnkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9hbmRyb2lkL1dlYlNhbmRib3hTdXBw
b3J0LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvZ3RrL1dlYklucHV0RXZlbnRGYWN0b3J5
LmgnLAotICAgICAgICAgICAgICAgICdwdWJsaWMvbGludXgvV2ViRm9udFJlbmRlclN0eWxlLmgn
LAotICAgICAgICAgICAgICAgICdwdWJsaWMvbGludXgvV2ViRm9udFJlbmRlcmluZy5oJywKLSAg
ICAgICAgICAgICAgICAncHVibGljL2xpbnV4L1dlYlJlbmRlclRoZW1lLmgnLAorICAgICAgICAg
ICAgICAgICdwdWJsaWMvbGludXhpc2gvV2ViRm9udFJlbmRlclN0eWxlLmgnLAorICAgICAgICAg
ICAgICAgICdwdWJsaWMvbGludXhpc2gvV2ViRm9udFJlbmRlcmluZy5oJywKKyAgICAgICAgICAg
ICAgICAncHVibGljL2xpbnV4aXNoL1dlYlJlbmRlclRoZW1lLmgnLAogICAgICAgICAgICAgICAg
ICdwdWJsaWMvbWFjL1dlYklucHV0RXZlbnRGYWN0b3J5LmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvbWFjL1dlYlNhbmRib3hTdXBwb3J0LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMv
bWFjL1dlYlNjcmVlbkluZm9GYWN0b3J5LmgnLApAQCAtNDI0LDExICs0MjQsMTIgQEAKICAgICAg
ICAgICAgICAgICAnc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5oJywKICAgICAgICAgICAg
ICAgICAnc3JjL1ByZXJlbmRlcmVyQ2xpZW50SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3Jj
L1ByZXJlbmRlcmVyQ2xpZW50SW1wbC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvYW5kcm9p
ZC9XZWJGb250SW5mby5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvYW5kcm9pZC9XZWJJbnB1
dEV2ZW50RmFjdG9yeS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvbGludXgvV2ViRm9udElu
Zm8uY3BwJywKLSAgICAgICAgICAgICAgICAnc3JjL2xpbnV4L1dlYkZvbnRSZW5kZXJpbmcuY3Bw
JywKLSAgICAgICAgICAgICAgICAnc3JjL2xpbnV4L1dlYkZvbnRSZW5kZXJTdHlsZS5jcHAnLAot
ICAgICAgICAgICAgICAgICdzcmMvbGludXgvV2ViUmVuZGVyVGhlbWUuY3BwJywKKyAgICAgICAg
ICAgICAgICAnc3JjL2xpbnV4aXNoL1dlYkZvbnRSZW5kZXJpbmcuY3BwJywKKyAgICAgICAgICAg
ICAgICAnc3JjL2xpbnV4aXNoL1dlYkZvbnRSZW5kZXJTdHlsZS5jcHAnLAorICAgICAgICAgICAg
ICAgICdzcmMvbGludXhpc2gvV2ViUmVuZGVyVGhlbWUuY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL3gxMS9XZWJTY3JlZW5JbmZvRmFjdG9yeS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMv
bWFjL1dlYklucHV0RXZlbnRGYWN0b3J5Lm1tJywKICAgICAgICAgICAgICAgICAnc3JjL21hYy9X
ZWJTY3JlZW5JbmZvRmFjdG9yeS5tbScsCkBAIC03NzQsMTEgKzc3NSw3IEBACiAgICAgICAgICAg
ICAgICAgICAgICdpbmNsdWRlX2RpcnMnOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAncHVi
bGljL3gxMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAncHVibGljL2xpbnV4JywKLSAgICAg
ICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LCB7ICMgZWxzZTogdXNlX3gxMSAh
PSAxCi0gICAgICAgICAgICAgICAgICAgICdzb3VyY2VzLyc6IFsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIFsnZXhjbHVkZScsICcveDExLyddLAotICAgICAgICAgICAgICAgICAgICAgICAgWydl
eGNsdWRlJywgJy9saW51eC8nXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdwdWJsaWMvbGlu
dXhpc2gnLAogICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgIH1dLAogICAg
ICAgICAgICAgICAgIFsndG9vbGtpdF91c2VzX2d0ayA9PSAxJywgewpAQCAtNzg4LDE4ICs3ODUs
MTEgQEAKICAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6IFsKICAgICAgICAgICAg
ICAgICAgICAgICAgICdwdWJsaWMvZ3RrJywKICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAg
ICAgICAgICAgICB9LCB7ICMgZWxzZTogdG9vbGtpdF91c2VzX2d0ayAhPSAxCi0gICAgICAgICAg
ICAgICAgICAgICdzb3VyY2VzLyc6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgIFsnZXhjbHVk
ZScsICcvZ3RrLyddLAotICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgIH1d
LAogICAgICAgICAgICAgICAgIFsnT1M9PSJhbmRyb2lkIicsIHsKICAgICAgICAgICAgICAgICAg
ICAgJ2luY2x1ZGVfZGlycyc6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICdwdWJsaWMvYW5k
cm9pZCcsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwgeyAjIGVs
c2U6IE9TIT0iYW5kcm9pZCIKLSAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMvJzogWwotICAg
ICAgICAgICAgICAgICAgICAgICAgWydleGNsdWRlJywgJy9hbmRyb2lkLyddLAorICAgICAgICAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9saW51eGlzaCcsCiAgICAgICAgICAgICAgICAgICAgIF0s
CiAgICAgICAgICAgICAgICAgfV0sCiAgICAgICAgICAgICAgICAgIyBUT0RPOiB3ZSBleGNsdWRl
IENHLmNwcCBvbiBib3RoIHNpZGVzIG9mIHRoZSBiZWxvdyBjb25kaXRpb25hbC4gTW92ZSBlbHNl
d2hlcmU/CkBAIC04MTIsNyArODAyLDYgQEAKICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAg
ICAgICAgICAgICB9LCB7ICMgZWxzZTogT1MhPSJtYWMiCiAgICAgICAgICAgICAgICAgICAgICdz
b3VyY2VzLyc6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgIFsnZXhjbHVkZScsICcvbWFjLydd
LAogICAgICAgICAgICAgICAgICAgICAgICAgWydleGNsdWRlJywgJ0NHXFwuY3BwJCddLAogICAg
ICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgIH1dLApAQCAtODIxLDcgKzgxMCw2
IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAncHVibGljL3dpbicsCiAgICAgICAgICAgICAg
ICAgICAgIF0sCiAgICAgICAgICAgICAgICAgfSwgeyAjIGVsc2U6IE9TIT0id2luIgotICAgICAg
ICAgICAgICAgICAgICAnc291cmNlcy8nOiBbWydleGNsdWRlJywgJy93aW4vJ11dLAogICAgICAg
ICAgICAgICAgICAgICAndmFyaWFibGVzJzogewogICAgICAgICAgICAgICAgICAgICAgICAgIyBG
SVhNRTogVHVybiBvbiB3YXJuaW5ncyBvbiBXaW5kb3dzLgogICAgICAgICAgICAgICAgICAgICAg
ICAgJ2Nocm9taXVtX2NvZGUnOiAxLApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvYW5kcm9pZC9XZWJTYW5kYm94U3VwcG9ydC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL2FuZHJvaWQvV2ViU2FuZGJveFN1cHBvcnQuaAkocmV2aXNpb24g
MTIwMDExKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvYW5kcm9pZC9XZWJTYW5k
Ym94U3VwcG9ydC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMzICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0
aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdFQktJ
VF9NSUdSQVRFX0hFQURFUlNfVE9fUExBVEZPUk0KLSNpbmNsdWRlICIuLi9wbGF0Zm9ybS9hbmRy
b2lkL1dlYlNhbmRib3hTdXBwb3J0LmgiCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL2d0ay9XZWJGb250SW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL2d0ay9XZWJGb250SW5mby5oCShyZXZpc2lvbiAxMjAwMTEpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9ndGsvV2ViRm9udEluZm8uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIFRoaXMgZmlsZSBjYW4gYmUgZGVsZXRlZCBvbmNlIGh0
dHA6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy84MDU0MDI1LwotLy8gZ2V0cyBjb21taXR0ZWQg
aW4gQ2hyb21pdW0uCi0jaW5jbHVkZSAiLi4vbGludXgvV2ViRm9udEluZm8uaCIKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYkZvbnRJbmZvLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViRm9udEluZm8uaAko
cmV2aXNpb24gMTIwMDA2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXgv
V2ViRm9udEluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjcsNTIgKzI3LDUgQEAKICAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwotCi0jaWZuZGVmIFdlYkZvbnRJbmZvX2gKLSNkZWZp
bmUgV2ViRm9udEluZm9faAotCi0jaW5jbHVkZSAiLi4vbGludXgvV2ViRm9udFJlbmRlclN0eWxl
LmgiCi0jaW5jbHVkZSAiLi4vcGxhdGZvcm0vV2ViQ1N0cmluZy5oIgotI2luY2x1ZGUgIi4uL3Bs
YXRmb3JtL2xpbnV4L1dlYkZvbnRGYW1pbHkuaCIKLQotI2luY2x1ZGUgPHN0cmluZy5oPgotI2lu
Y2x1ZGUgPHVuaXN0ZC5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViRm9udElu
Zm8gewotcHVibGljOgotICAgIC8vIFNldCBhIGdsb2JhbCBwcmVmZXJlbmNlIGRlc2NyaWJpbmcg
d2hldGhlciByZW5kZXJTdHlsZUZvclN0cmlrZSgpIHNob3VsZAotICAgIC8vIGVuYWJsZSBzdWJw
aXhlbCBwb3NpdGlvbmluZyBvciBub3QuIEZvbnRDb25maWcgZG9lc24ndCBjdXJyZW50bHkgcHJv
dmlkZQotICAgIC8vIGEgcGFyYW1ldGVyIGZvciBjb250cm9sbGluZyB0aGlzLgotICAgIFdFQktJ
VF9FWFBPUlQgc3RhdGljIHZvaWQgc2V0U3VicGl4ZWxQb3NpdGlvbmluZyhib29sKTsKLQotICAg
IC8vIFJldHVybiBhIGZvbnQgZmFtaWx5IHdoaWNoIHByb3ZpZGVzIGdseXBocyBmb3IgdGhlIFVu
aWNvZGUgY29kZSBwb2ludHMKLSAgICAvLyBzcGVjaWZpZWQgYnkgfHV0ZjE2fAotICAgIC8vICAg
Y2hhcmFjdGVyczogYSBuYXRpdmUtZW5kaWFuIFVURjE2IHN0cmluZwotICAgIC8vICAgbnVtQ2hh
cmFjdGVyczogdGhlIG51bWJlciBvZiAxNi1iaXQgd29yZHMgaW4gfHV0ZjE2fAotICAgIC8vICAg
cHJlZmVycmVkTG9jYWxlOiBwcmVmZXJyZWQgbG9jYWxlIGlkZW50aWZpZXIgZm9yIHRoZSB8Y2hh
cmFjdGVyc3wKLSAgICAvLyAgICAgICAgICAgICAgICAgICAgKGUuZy4gImVuIiwgImphIiwgInpo
LUNOIikKLSAgICAvLwotICAgIC8vIFJldHVybnM6IHRoZSBmb250IGZhbWlseSBvciBhbiBlbXB0
eSBzdHJpbmcgaWYgdGhlIHJlcXVlc3QgY291bGQgbm90IGJlCi0gICAgLy8gc2F0aXNmaWVkLgot
ICAgIC8vIFJldHVybnM6IHRoZSBmb250IGZhbWlseSBpbnN0YW5jZS4gVGhlIGluc3RhbmNlIGhh
cyBhbiBlbXB0eSBmb250IG5hbWUgaWYgdGhlIHJlcXVlc3QgY291bGQgbm90IGJlIHNhdGlzZmll
ZC4KLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lkIGZhbWlseUZvckNoYXJzKGNvbnN0IFdl
YlVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbnVtQ2hhcmFjdGVycywgY29uc3QgY2hhciogcHJl
ZmVycmVkTG9jYWxlLCBXZWJGb250RmFtaWx5Kik7Ci0KLSAgICAvLyBGaWxsIG91dCB0aGUgZ2l2
ZW4gV2ViRm9udFJlbmRlclN0eWxlIHdpdGggdGhlIHVzZXIncyBwcmVmZXJlbmNlcyBmb3IKLSAg
ICAvLyByZW5kZXJpbmcgdGhlIGdpdmVuIGZvbnQgYXQgdGhlIGdpdmVuIHNpemUuCi0gICAgLy8g
ICBmYW1pbHk6IGkuZS4gIlRpbWVzIE5ldyBSb21hbiIKLSAgICAvLyAgIHNpemVBbmRTdHlsZToK
LSAgICAvLyAgICAgIDMzMjIyMjIyMjIyMjExMTExMTExMTEKLSAgICAvLyAgICAgIDEwOTg3NjU0
MzIxMDk4NzY1NDMyMTA5ODc2NTQzMjEwCi0gICAgLy8gICAgICstLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSsKLSAgICAvLyAgICAgfC4uLi4uLi4uLi4uLi4uU2l6ZS4uLi4uLi4uLi4u
LklCfAotICAgIC8vICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAg
Ly8gICAgIEk6IGl0YWxpYyBmbGFnCi0gICAgLy8gICAgIEI6IGJvbGQgZmxhZwotICAgIFdFQktJ
VF9FWFBPUlQgc3RhdGljIHZvaWQgcmVuZGVyU3R5bGVGb3JTdHJpa2UoY29uc3QgY2hhciogZmFt
aWx5LCBpbnQgc2l6ZUFuZFN0eWxlLCBXZWJGb250UmVuZGVyU3R5bGUqIHJlc3VsdCk7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCisvLyBGSVhNRTogUmVtb3ZlIG9uY2Ug
aHR0cDovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzEwNTQ0MTAzLyBpcyBsYW5kZWQuCisjaW5j
bHVkZSAiLi4vbGludXhpc2gvV2ViRm9udEluZm8uaCIKClByb3BlcnR5IGNoYW5nZXMgb246IFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYkZvbnRJbmZvLmgKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvbGludXgvV2ViRm9udFJlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViRm9udFJlbmRlclN0eWxlLmgJKHJl
dmlzaW9uIDEyMDAwNikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4L1dl
YkZvbnRSZW5kZXJTdHlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yNywzOCArMjcsNSBAQAogICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCi0KLSNpZm5kZWYgV2ViRm9udFJlbmRlclN0
eWxlX2gKLSNkZWZpbmUgV2ViRm9udFJlbmRlclN0eWxlX2gKLQotI2luY2x1ZGUgIi4uL3BsYXRm
b3JtL1dlYkNvbW1vbi5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7IHN0cnVjdCBGb250UmVuZGVy
U3R5bGU7IH0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBXRUJLSVRfRVhQT1JUIFdl
YkZvbnRSZW5kZXJTdHlsZSB7Ci0gICAgLy8gRWFjaCBvZiB0aGUgdXNlKiBtZW1iZXJzIGJlbG93
IGNhbiB0YWtlIG9uZSBvZiB0aHJlZSB2YWx1ZXM6Ci0gICAgLy8gICAwOiBvZmYKLSAgICAvLyAg
IDE6IG9uCi0gICAgLy8gICAyOiBubyBwcmVmZXJlbmNlIGV4cHJlc3NlZAotICAgIGNoYXIgdXNl
Qml0bWFwczsgLy8gdXNlIGVtYmVkZGVkIGJpdG1hcCBzdHJpa2UgaWYgcG9zc2libGUKLSAgICBj
aGFyIHVzZUF1dG9IaW50OyAvLyB1c2UgJ2F1dG8nIGhpbnRpbmcgKEZyZWVUeXBlIHNwZWNpZmlj
KQotICAgIGNoYXIgdXNlSGludGluZzsgLy8gaGludCBnbHlwaHMgdG8gdGhlIHBpeGVsIGdyaWQK
LSAgICBjaGFyIGhpbnRTdHlsZTsgLy8gbGV2ZWwgb2YgaGludGluZywgMC4uMwotICAgIGNoYXIg
dXNlQW50aUFsaWFzOyAvLyBhbnRpYWxpYXMgZ2x5cGggc2hhcGVzCi0gICAgY2hhciB1c2VTdWJw
aXhlbDsgLy8gREVQUkVDQVRFRDogcmVwbGFjZWQgYnkgdXNlU3VicGl4ZWxSZW5kZXJpbmcKLSAg
ICBjaGFyIHVzZVN1YnBpeGVsUmVuZGVyaW5nOyAvLyB1c2Ugc3VicGl4ZWwgcmVuZGVyaW5nIChw
YXJ0aWFsbHktZmlsbGVkIHBpeGVscykKLSAgICBjaGFyIHVzZVN1YnBpeGVsUG9zaXRpb25pbmc7
IC8vIHVzZSBzdWJwaXhlbCBwb3NpdGlvbmluZyAoZnJhY3Rpb25hbCBYIHBvc2l0aW9ucyBmb3Ig
Z2x5cGhzKQotCi0jaWZkZWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgLy8gVHJhbnNsYXRl
cyB0aGUgbWVtYmVycyBvZiB0aGlzIHN0cnVjdCB0byBhIEZvbnRSZW5kZXJTdHlsZQotICAgIHZv
aWQgdG9Gb250UmVuZGVyU3R5bGUoV2ViQ29yZTo6Rm9udFJlbmRlclN0eWxlKik7Ci0jZW5kaWYK
LQotICAgIHZvaWQgc2V0RGVmYXVsdHMoKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAot
Ci0jZW5kaWYgLy8gV2ViRm9udFJlbmRlclN0eWxlX2gKKy8vIEZJWE1FOiBSZW1vdmUgb25jZSBo
dHRwOi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcvMTA1NDQxMDMvIGlzIGxhbmRlZC4KKyNpbmNs
dWRlICIuLi9saW51eGlzaC9XZWJGb250UmVuZGVyU3R5bGUuaCIKClByb3BlcnR5IGNoYW5nZXMg
b246IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYkZvbnRSZW5kZXJTdHls
ZS5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYkZvbnRSZW5kZXJpbmcuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJGb250UmVuZGVy
aW5nLmgJKHJldmlzaW9uIDEyMDAwNikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L2xpbnV4L1dlYkZvbnRSZW5kZXJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjcsMjkgKzI3LDUgQEAK
ICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwotCi0jaWZuZGVmIFdlYkZvbnRS
ZW5kZXJpbmdfaAotI2RlZmluZSBXZWJGb250UmVuZGVyaW5nX2gKLQotI2luY2x1ZGUgIi4uL3Bs
YXRmb3JtL1dlYkNvbW1vbi5oIgotI2luY2x1ZGUgPFNrRm9udEhvc3QuaD4KLSNpbmNsdWRlIDxT
a1BhaW50Lmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJGb250UmVuZGVyaW5n
IHsKLXB1YmxpYzoKLSAgICAvLyBTZXQgZ2xvYmFsIGZvbnQgcmVuZGVyZXJpbmcgcHJlZmVyZW5j
ZXMuCi0KLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lkIHNldEhpbnRpbmcoU2tQYWludDo6
SGludGluZyk7Ci0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRBbnRpQWxpYXMoYm9v
bCk7Ci0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRTdWJwaXhlbEdseXBocyhib29s
KTsgLy8gREVQUkVDQVRFRDogdXNlIHNldFN1YnBpeGVsUmVuZGVyaW5nIGluc3RlYWQKLSAgICBX
RUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lkIHNldFN1YnBpeGVsUmVuZGVyaW5nKGJvb2wpOwotICAg
IFdFQktJVF9FWFBPUlQgc3RhdGljIHZvaWQgc2V0U3VicGl4ZWxQb3NpdGlvbmluZyhib29sKTsK
LSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lkIHNldExDRE9yZGVyKFNrRm9udEhvc3Q6OkxD
RE9yZGVyKTsKLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lkIHNldExDRE9yaWVudGF0aW9u
KFNrRm9udEhvc3Q6OkxDRE9yaWVudGF0aW9uKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktp
dAotCi0jZW5kaWYKKy8vIEZJWE1FOiBSZW1vdmUgb25jZSBodHRwOi8vY29kZXJldmlldy5jaHJv
bWl1bS5vcmcvMTA1NDQxMDMvIGlzIGxhbmRlZC4KKyNpbmNsdWRlICIuLi9saW51eGlzaC9XZWJG
b250UmVuZGVyaW5nLmgiCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9saW51eC9XZWJGb250UmVuZGVyaW5nLmgKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3Zu
OmVvbC1zdHlsZQogICArIExGCgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
bGludXgvV2ViUmVuZGVyVGhlbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9saW51eC9XZWJSZW5kZXJUaGVtZS5oCShyZXZpc2lvbiAxMjAwMDYpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJSZW5kZXJUaGVtZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBKb2Vs
IFN0YW5sZXkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKQEAgLTI3LDE3ICsyNyw1IEBACiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KLQotI2lmbmRlZiBXZWJSZW5kZXJUaGVtZV9oCi0jZGVmaW5lIFdlYlJlbmRlclRo
ZW1lX2gKLQotI2luY2x1ZGUgIi4uL3BsYXRmb3JtL1dlYkNvbW1vbi5oIgotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotLy8gU2V0IGNhcmV0IGJsaW5rIGludGVydmFsIGZvciB0ZXh0IGlucHV0IGFy
ZWFzLgotV0VCS0lUX0VYUE9SVCB2b2lkIHNldENhcmV0QmxpbmtJbnRlcnZhbChkb3VibGUpOwot
Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCisvLyBGSVhNRTogUmVtb3ZlIG9uY2Ug
aHR0cDovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzEwNTQ0MTAzLyBpcyBsYW5kZWQuCisjaW5j
bHVkZSAiLi4vbGludXhpc2gvV2ViUmVuZGVyVGhlbWUuaCIKClByb3BlcnR5IGNoYW5nZXMgb246
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYlJlbmRlclRoZW1lLmgKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViU2FuZGJveFN1cHBvcnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJTYW5kYm94U3VwcG9ydC5o
CShyZXZpc2lvbiAxMjAwMDYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51
eC9XZWJTYW5kYm94U3VwcG9ydC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yNyw3ICsyNyw1IEBACiAgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KLQotI2lmbmRlZiBXRUJLSVRfTUlHUkFU
RV9IRUFERVJTX1RPX1BMQVRGT1JNCi0jaW5jbHVkZSAiLi4vcGxhdGZvcm0vbGludXgvV2ViU2Fu
ZGJveFN1cHBvcnQuaCIKLSNlbmRpZgorLy8gRklYTUU6IFJlbW92ZSBvbmNlIGh0dHA6Ly9jb2Rl
cmV2aWV3LmNocm9taXVtLm9yZy8xMDU0NDEwMy8gaXMgbGFuZGVkLgorI2luY2x1ZGUgIi4uL2xp
bnV4aXNoL1dlYlNhbmRib3hTdXBwb3J0LmgiCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJTYW5kYm94U3VwcG9ydC5oCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL2xpbnV4aXNoL1dlYkZvbnRJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXhpc2gvV2ViRm9udEluZm8uaAkocmV2aXNpb24g
MTE5OTg2KQkoZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJGb250
SW5mby5oOjExOTk4NikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4aXNo
L1dlYkZvbnRJbmZvLmgJKHdvcmtpbmcgY29weSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL2xpbnV4aXNoL1dlYkZvbnRJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXhpc2gvV2ViRm9udEluZm8uaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4aXNoL1dlYkZvbnRJbmZvLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDkgKzMxLDkgQEAKICNpZm5kZWYgV2ViRm9udEluZm9faAog
I2RlZmluZSBXZWJGb250SW5mb19oCiAKLSNpbmNsdWRlICIuLi9saW51eC9XZWJGb250UmVuZGVy
U3R5bGUuaCIKKyNpbmNsdWRlICIuLi9saW51eGlzaC9XZWJGb250UmVuZGVyU3R5bGUuaCIKICNp
bmNsdWRlICIuLi9wbGF0Zm9ybS9XZWJDU3RyaW5nLmgiCi0jaW5jbHVkZSAiLi4vcGxhdGZvcm0v
bGludXgvV2ViRm9udEZhbWlseS5oIgorI2luY2x1ZGUgIi4uL3BsYXRmb3JtL2xpbnV4aXNoL1dl
YkZvbnRGYW1pbHkuaCIKIAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHVuaXN0ZC5o
PgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXhpc2gvV2ViRm9udFJl
bmRlclN0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
bGludXhpc2gvV2ViRm9udFJlbmRlclN0eWxlLmgJKHJldmlzaW9uIDExOTk4NikJKGZyb20gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViRm9udFJlbmRlclN0eWxlLmg6MTE5
OTg2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXhpc2gvV2ViRm9udFJl
bmRlclN0eWxlLmgJKHdvcmtpbmcgY29weSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL2xpbnV4aXNoL1dlYkZvbnRSZW5kZXJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eGlzaC9XZWJGb250UmVuZGVyaW5nLmgJKHJldmlz
aW9uIDExOTk4NikJKGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2Vi
Rm9udFJlbmRlcmluZy5oOjExOTk4NikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L2xpbnV4aXNoL1dlYkZvbnRSZW5kZXJpbmcuaAkod29ya2luZyBjb3B5KQpJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXhpc2gvV2ViUmVuZGVyVGhlbWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eGlzaC9XZWJSZW5kZXJU
aGVtZS5oCShyZXZpc2lvbiAxMTk5ODYpCShmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL2xpbnV4L1dlYlJlbmRlclRoZW1lLmg6MTE5OTg2KQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvbGludXhpc2gvV2ViUmVuZGVyVGhlbWUuaAkod29ya2luZyBjb3B5KQpJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXhpc2gvV2ViU2FuZGJveFN1cHBv
cnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eGlz
aC9XZWJTYW5kYm94U3VwcG9ydC5oCShyZXZpc2lvbiAxMTk5ODYpCShmcm9tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYlNhbmRib3hTdXBwb3J0Lmg6MTE5OTg2KQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXhpc2gvV2ViU2FuZGJveFN1cHBvcnQu
aAkod29ya2luZyBjb3B5KQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGlu
dXhpc2gvV2ViU2FuZGJveFN1cHBvcnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9saW51eGlzaC9XZWJTYW5kYm94U3VwcG9ydC5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXhpc2gvV2ViU2FuZGJveFN1cHBv
cnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNSArMjksNSBAQAogICovCiAKICNpZm5kZWYgV0VC
S0lUX01JR1JBVEVfSEVBREVSU19UT19QTEFURk9STQotI2luY2x1ZGUgIi4uL3BsYXRmb3JtL2xp
bnV4L1dlYlNhbmRib3hTdXBwb3J0LmgiCisjaW5jbHVkZSAiLi4vcGxhdGZvcm0vbGludXhpc2gv
V2ViU2FuZGJveFN1cHBvcnQuaCIKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvcGxhdGZvcm0vYW5kcm9pZC9XZWJTYW5kYm94U3VwcG9ydC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL2FuZHJvaWQvV2ViU2Fu
ZGJveFN1cHBvcnQuaAkocmV2aXNpb24gMTIwMDExKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvcGxhdGZvcm0vYW5kcm9pZC9XZWJTYW5kYm94U3VwcG9ydC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiLi4vLi4vLi4vLi4vLi4vUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL2FuZHJvaWQvV2ViU2FuZGJveFN1cHBvcnQuaCIKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL2FuZHJvaWQvV2ViVGhlbWVFbmdpbmUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9hbmRy
b2lkL1dlYlRoZW1lRW5naW5lLmgJKHJldmlzaW9uIDEyMDAxMSkKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL3BsYXRmb3JtL2FuZHJvaWQvV2ViVGhlbWVFbmdpbmUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgIi4uLy4uLy4uLy4uLy4uL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9hbmRyb2lkL1dlYlRoZW1lRW5naW5lLmgiCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9saW51eC9XZWJGb250RmFtaWx5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vbGludXgv
V2ViRm9udEZhbWlseS5oCShyZXZpc2lvbiAxMjAwMDYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9wbGF0Zm9ybS9saW51eC9XZWJGb250RmFtaWx5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAg
LTI3LDUgKzI3LDUgQEAKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwotCi0j
aW5jbHVkZSAiLi4vLi4vLi4vLi4vLi4vUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL2xpbnV4L1dl
YkZvbnRGYW1pbHkuaCIKKy8vIEZJWE1FOiBSZW1vdmUgb25jZSBodHRwOi8vY29kZXJldmlldy5j
aHJvbWl1bS5vcmcvMTA1NDQxMDMvIGlzIGxhbmRlZC4KKyNpbmNsdWRlICIuLi9saW51eGlzaC9X
ZWJGb250RmFtaWx5LmgiCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9wbGF0Zm9ybS9saW51eC9XZWJGb250RmFtaWx5LmgKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRl
ZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvcGxhdGZvcm0vbGludXgvV2ViU2FuZGJveFN1cHBvcnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9saW51eC9XZWJTYW5kYm94U3Vw
cG9ydC5oCShyZXZpc2lvbiAxMjAwMDYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9wbGF0Zm9ybS9saW51eC9XZWJTYW5kYm94U3VwcG9ydC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yNyw1
ICsyNyw1IEBACiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KLQotI2luY2x1
ZGUgIi4uLy4uLy4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJTYW5k
Ym94U3VwcG9ydC5oIgorLy8gRklYTUU6IFJlbW92ZSBvbmNlIGh0dHA6Ly9jb2RlcmV2aWV3LmNo
cm9taXVtLm9yZy8xMDU0NDEwMy8gaXMgbGFuZGVkLgorI2luY2x1ZGUgIi4uL2xpbnV4aXNoL1dl
YlNhbmRib3hTdXBwb3J0LmgiCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9saW51eC9XZWJTYW5kYm94U3VwcG9ydC5oCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL3BsYXRmb3JtL2xpbnV4L1dlYlRoZW1lRW5naW5lLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vbGludXgvV2ViVGhlbWVF
bmdpbmUuaAkocmV2aXNpb24gMTIwMDA2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvcGxhdGZvcm0vbGludXgvV2ViVGhlbWVFbmdpbmUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjcsNSAr
MjcsNSBAQAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCi0KLSNpbmNsdWRl
ICIuLi8uLi8uLi8uLi8uLi9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViVGhlbWVF
bmdpbmUuaCIKKy8vIEZJWE1FOiBSZW1vdmUgb25jZSBodHRwOi8vY29kZXJldmlldy5jaHJvbWl1
bS5vcmcvMTA1NDQxMDMvIGlzIGxhbmRlZC4KKyNpbmNsdWRlICIuLi9saW51eGlzaC9XZWJUaGVt
ZUVuZ2luZS5oIgoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvcGxhdGZvcm0vbGludXgvV2ViVGhlbWVFbmdpbmUuaApfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBz
dm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9wbGF0Zm9ybS9saW51eGlzaC9XZWJGb250RmFtaWx5LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vbGludXhpc2gvV2ViRm9udEZhbWlseS5o
CShyZXZpc2lvbiAxMTk5ODYpCShmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3Bs
YXRmb3JtL2xpbnV4L1dlYkZvbnRGYW1pbHkuaDoxMTk5ODYpCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9saW51eGlzaC9XZWJGb250RmFtaWx5LmgJKHdvcmtpbmcg
Y29weSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL2xpbnV4
aXNoL1dlYkZvbnRGYW1pbHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9wbGF0Zm9ybS9saW51eGlzaC9XZWJGb250RmFtaWx5LmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9saW51eGlzaC9XZWJGb250
RmFtaWx5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDQgKzI4LDQgQEAKICAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotI2luY2x1ZGUgIi4uLy4uLy4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9saW51eC9XZWJGb250RmFtaWx5LmgiCisjaW5jbHVkZSAiLi4vLi4vLi4vLi4vLi4vUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL2xpbnV4aXNoL1dlYkZvbnRGYW1pbHkuaCIKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL2xpbnV4aXNoL1dlYlNhbmRib3hTdXBw
b3J0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZv
cm0vbGludXhpc2gvV2ViU2FuZGJveFN1cHBvcnQuaAkocmV2aXNpb24gMTE5OTg2KQkoZnJvbSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9saW51eC9XZWJTYW5kYm94U3Vw
cG9ydC5oOjExOTk4NikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3Jt
L2xpbnV4aXNoL1dlYlNhbmRib3hTdXBwb3J0LmgJKHdvcmtpbmcgY29weSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL2xpbnV4aXNoL1dlYlNhbmRib3hTdXBw
b3J0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZv
cm0vbGludXhpc2gvV2ViU2FuZGJveFN1cHBvcnQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL2xpbnV4aXNoL1dlYlNhbmRib3hTdXBwb3J0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDQgKzI4LDQgQEAKICAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotI2luY2x1ZGUgIi4uLy4uLy4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9saW51
eC9XZWJTYW5kYm94U3VwcG9ydC5oIgorI2luY2x1ZGUgIi4uLy4uLy4uLy4uLy4uL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9saW51eGlzaC9XZWJTYW5kYm94U3VwcG9ydC5oIgpJbmRleDogU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vbGludXhpc2gvV2ViVGhlbWVFbmdp
bmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9y
bS9saW51eGlzaC9XZWJUaGVtZUVuZ2luZS5oCShyZXZpc2lvbiAxMTk5ODYpCShmcm9tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL2xpbnV4L1dlYlRoZW1lRW5naW5lLmg6
MTE5OTg2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vbGludXhp
c2gvV2ViVGhlbWVFbmdpbmUuaAkod29ya2luZyBjb3B5KQpJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vbGludXhpc2gvV2ViVGhlbWVFbmdpbmUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9saW51eGlzaC9X
ZWJUaGVtZUVuZ2luZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvcGxhdGZvcm0vbGludXhpc2gvV2ViVGhlbWVFbmdpbmUuaAkod29ya2luZyBjb3B5KQpA
QCAtMjgsNCArMjgsNCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW5jbHVkZSAiLi4vLi4v
Li4vLi4vLi4vUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYlRoZW1lRW5naW5lLmgi
CisjaW5jbHVkZSAiLi4vLi4vLi4vLi4vLi4vUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL2xpbnV4
aXNoL1dlYlRoZW1lRW5naW5lLmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Q
bGF0Zm9ybVN1cHBvcnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAJKHJldmlzaW9uIDEyMDAxMSkKKysrIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4
LDEyICs2OCwxMCBAQAogCiAjaWYgT1MoREFSV0lOKQogI2luY2x1ZGUgPHB1YmxpYy9tYWMvV2Vi
VGhlbWVFbmdpbmUuaD4KLSNlbGlmIE9TKFVOSVgpICYmICFPUyhBTkRST0lEKQorI2VsaWYgT1Mo
VU5JWCkKICNpbmNsdWRlICJXZWJGb250SW5mby5oIgogI2luY2x1ZGUgIldlYkZvbnRSZW5kZXJT
dHlsZS5oIgotI2luY2x1ZGUgPHB1YmxpYy9saW51eC9XZWJUaGVtZUVuZ2luZS5oPgotI2VsaWYg
T1MoQU5EUk9JRCkKLSNpbmNsdWRlIDxwdWJsaWMvYW5kcm9pZC9XZWJUaGVtZUVuZ2luZS5oPgor
I2luY2x1ZGUgPHB1YmxpYy9saW51eGlzaC9XZWJUaGVtZUVuZ2luZS5oPgogI2VuZGlmCiAKICNp
bmNsdWRlICJOYXRpdmVJbWFnZVNraWEuaCIKQEAgLTI0NywxMyArMjQ1LDYgQEAgYm9vbCBQbGF0
Zm9ybVN1cHBvcnQ6OmxvYWRGb250KE5TRm9udCogcwogI2VsaWYgT1MoVU5JWCkKIHZvaWQgUGxh
dGZvcm1TdXBwb3J0OjpnZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyhjb25zdCBVQ2hhciogY2hh
cmFjdGVycywgc2l6ZV90IG51bUNoYXJhY3RlcnMsIGNvbnN0IGNoYXIqIHByZWZlcnJlZExvY2Fs
ZSwgRm9udEZhbWlseSogZmFtaWx5KQogewotI2lmIE9TKEFORFJPSUQpCi0gICAgLy8gRklYTUU6
IFdlIGRvIG5vdCB1c2UgZm9udGNvbmZpZyBvbiBBbmRyb2lkLCBzbyB1c2Ugc2ltcGxlIGxvZ2lj
IGZvciBub3cuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY3NTg3Ci0gICAgZmFtaWx5LT5uYW1lID0gIkFyaWFsIjsKLSAgICBmYW1pbHktPmlzQm9sZCA9
IGZhbHNlOwotICAgIGZhbWlseS0+aXNJdGFsaWMgPSBmYWxzZTsKLSNlbHNlCiAgICAgV2ViRm9u
dEZhbWlseSB3ZWJGYW1pbHk7CiAgICAgaWYgKFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+
c2FuZGJveFN1cHBvcnQoKSkKICAgICAgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5z
YW5kYm94U3VwcG9ydCgpLT5nZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyhjaGFyYWN0ZXJzLCBu
dW1DaGFyYWN0ZXJzLCBwcmVmZXJyZWRMb2NhbGUsICZ3ZWJGYW1pbHkpOwpAQCAtMjYyLDEyICsy
NTMsMTAgQEAgdm9pZCBQbGF0Zm9ybVN1cHBvcnQ6OmdldEZvbnRGYW1pbHlGb3JDaAogICAgIGZh
bWlseS0+bmFtZSA9IFN0cmluZzo6ZnJvbVVURjgod2ViRmFtaWx5Lm5hbWUuZGF0YSgpLCB3ZWJG
YW1pbHkubmFtZS5sZW5ndGgoKSk7CiAgICAgZmFtaWx5LT5pc0JvbGQgPSB3ZWJGYW1pbHkuaXNC
b2xkOwogICAgIGZhbWlseS0+aXNJdGFsaWMgPSB3ZWJGYW1pbHkuaXNJdGFsaWM7Ci0jZW5kaWYK
IH0KIAogdm9pZCBQbGF0Zm9ybVN1cHBvcnQ6OmdldFJlbmRlclN0eWxlRm9yU3RyaWtlKGNvbnN0
IGNoYXIqIGZvbnQsIGludCBzaXplQW5kU3R5bGUsIEZvbnRSZW5kZXJTdHlsZSogcmVzdWx0KQog
ewotI2lmICFPUyhBTkRST0lEKQogICAgIFdlYkZvbnRSZW5kZXJTdHlsZSBzdHlsZTsKIAogICAg
IGlmIChXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnNhbmRib3hTdXBwb3J0KCkpCkBAIC0y
NzYsNyArMjY1LDYgQEAgdm9pZCBQbGF0Zm9ybVN1cHBvcnQ6OmdldFJlbmRlclN0eWxlRm9yUwog
ICAgICAgICBXZWJGb250SW5mbzo6cmVuZGVyU3R5bGVGb3JTdHJpa2UoZm9udCwgc2l6ZUFuZFN0
eWxlLCAmc3R5bGUpOwogCiAgICAgc3R5bGUudG9Gb250UmVuZGVyU3R5bGUocmVzdWx0KTsKLSNl
bmRpZgogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2FuZHJv
aWQvV2ViRm9udEluZm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL2FuZHJvaWQvV2ViRm9udEluZm8uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvYW5kcm9pZC9XZWJGb250SW5mby5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViRm9udEluZm8uaCIK
KworI2luY2x1ZGUgIldlYkZvbnRSZW5kZXJTdHlsZS5oIgorI2luY2x1ZGUgInBsYXRmb3JtL2xp
bnV4aXNoL1dlYkZvbnRGYW1pbHkuaCIKKyNpbmNsdWRlIDxmb250Y29uZmlnL2ZvbnRjb25maWcu
aD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx1bmljb2RlL3V0ZjE2Lmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgYm9vbCB1c2VTdWJwaXhlbFBvc2l0aW9uaW5nID0g
ZmFsc2U7CisKK3ZvaWQgV2ViRm9udEluZm86OnNldFN1YnBpeGVsUG9zaXRpb25pbmcoYm9vbCBz
dWJwaXhlbFBvc2l0aW9uaW5nKQoreworICAgIHVzZVN1YnBpeGVsUG9zaXRpb25pbmcgPSBzdWJw
aXhlbFBvc2l0aW9uaW5nOworfQorCit2b2lkIFdlYkZvbnRJbmZvOjpmYW1pbHlGb3JDaGFycyhj
b25zdCBXZWJVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IG51bUNoYXJhY3RlcnMsIGNvbnN0IGNo
YXIqIHByZWZlcnJlZExvY2FsZSwgV2ViRm9udEZhbWlseSogZmFtaWx5KQoreworICAgIC8vIEZJ
WE1FOiBXZSBkbyBub3QgdXNlIGZvbnRjb25maWcgb24gQW5kcm9pZCwgc28gdXNlIHNpbXBsZSBs
b2dpYyBmb3Igbm93LgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NzU4NworICAgIGZhbWlseS0+bmFtZSA9ICJBcmlhbCI7CisgICAgZmFtaWx5LT5pc0Jv
bGQgPSBmYWxzZTsKKyAgICBmYW1pbHktPmlzSXRhbGljID0gZmFsc2U7Cit9CisKK3ZvaWQgV2Vi
Rm9udEluZm86OnJlbmRlclN0eWxlRm9yU3RyaWtlKGNvbnN0IGNoYXIqIGZhbWlseSwgaW50IHNp
emVBbmRTdHlsZSwgV2ViRm9udFJlbmRlclN0eWxlKiBvdXQpCit7CisgICAgLy8gRklYTUU6IFdl
IGRvIG5vdCB1c2UgZm9udGNvbmZpZyBvbiBBbmRyb2lkLCBzbyBqdXN0IHVzZSB0aGUgZGVmYXVs
dCBzZXR0aW5ncy4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Njc1ODcKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9hbmRyb2lkL1dlYkZvbnRJbmZvLmNwcApfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9saW51eC9XZWJGb250SW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvbGludXgvV2ViRm9udEluZm8uY3BwCShyZXZpc2lvbiAxMjAw
MTEpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9saW51eC9XZWJGb250SW5mby5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJXZWJGb250SW5mby5o
IgogCiAjaW5jbHVkZSAiV2ViRm9udFJlbmRlclN0eWxlLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0v
bGludXgvV2ViRm9udEZhbWlseS5oIgorI2luY2x1ZGUgInBsYXRmb3JtL2xpbnV4aXNoL1dlYkZv
bnRGYW1pbHkuaCIKICNpbmNsdWRlIDxmb250Y29uZmlnL2ZvbnRjb25maWcuaD4KICNpbmNsdWRl
IDxzdHJpbmcuaD4KICNpbmNsdWRlIDx1bmljb2RlL3V0ZjE2Lmg+CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9saW51eC9XZWJGb250UmVuZGVyU3R5bGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2xpbnV4L1dlYkZvbnRSZW5kZXJTdHlsZS5j
cHAJKHJldmlzaW9uIDEyMDAxMSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2xpbnV4
L1dlYkZvbnRSZW5kZXJTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNjMgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0g
KiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJGb250UmVuZGVyU3R5bGUuaCIKLQotI2lu
Y2x1ZGUgIkZvbnRSZW5kZXJTdHlsZS5oIgotCi11c2luZyBXZWJDb3JlOjpGb250UmVuZGVyU3R5
bGU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12b2lkIFdlYkZvbnRSZW5kZXJTdHlsZTo6dG9G
b250UmVuZGVyU3R5bGUoRm9udFJlbmRlclN0eWxlKiBvdXQpCi17Ci0gICAgb3V0LT51c2VCaXRt
YXBzID0gdXNlQml0bWFwczsKLSAgICBvdXQtPnVzZUF1dG9IaW50ID0gdXNlQXV0b0hpbnQ7Ci0g
ICAgb3V0LT51c2VIaW50aW5nID0gdXNlSGludGluZzsKLSAgICBvdXQtPmhpbnRTdHlsZSA9IGhp
bnRTdHlsZTsKLSAgICBvdXQtPnVzZUFudGlBbGlhcyA9IHVzZUFudGlBbGlhczsKLSAgICBvdXQt
PnVzZVN1YnBpeGVsUmVuZGVyaW5nID0gdXNlU3VicGl4ZWxSZW5kZXJpbmcgIT0gMiA/IHVzZVN1
YnBpeGVsUmVuZGVyaW5nIDogdXNlU3VicGl4ZWw7Ci0gICAgb3V0LT51c2VTdWJwaXhlbFBvc2l0
aW9uaW5nID0gdXNlU3VicGl4ZWxQb3NpdGlvbmluZzsKLX0KLQotdm9pZCBXZWJGb250UmVuZGVy
U3R5bGU6OnNldERlZmF1bHRzKCkKLXsKLSAgICB1c2VCaXRtYXBzID0gMjsKLSAgICB1c2VBdXRv
SGludCA9IDI7Ci0gICAgdXNlSGludGluZyA9IDI7Ci0gICAgaGludFN0eWxlID0gMDsKLSAgICB1
c2VBbnRpQWxpYXMgPSAyOwotICAgIHVzZVN1YnBpeGVsID0gMjsKLSAgICB1c2VTdWJwaXhlbFJl
bmRlcmluZyA9IDI7Ci0gICAgdXNlU3VicGl4ZWxQb3NpdGlvbmluZyA9IDI7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbGludXgv
V2ViRm9udFJlbmRlcmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvbGludXgvV2ViRm9udFJlbmRlcmluZy5jcHAJKHJldmlzaW9uIDEyMDAxMSkKKysrIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2xpbnV4L1dlYkZvbnRSZW5kZXJpbmcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDgyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
V2ViRm9udFJlbmRlcmluZy5oIgotCi0jaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgotCi11
c2luZyBXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
Ly8gc3RhdGljCi12b2lkIFdlYkZvbnRSZW5kZXJpbmc6OnNldEhpbnRpbmcoU2tQYWludDo6SGlu
dGluZyBoaW50aW5nKQotewotICAgIEZvbnRQbGF0Zm9ybURhdGE6OnNldEhpbnRpbmcoaGludGlu
Zyk7Ci19Ci0KLS8vIHN0YXRpYwotdm9pZCBXZWJGb250UmVuZGVyaW5nOjpzZXRBbnRpQWxpYXMo
Ym9vbCBpc0FudGlBbGlhcykKLXsKLSAgICBGb250UGxhdGZvcm1EYXRhOjpzZXRBbnRpQWxpYXMo
aXNBbnRpQWxpYXMpOwotfQotCi0vLyBzdGF0aWMKLXZvaWQgV2ViRm9udFJlbmRlcmluZzo6c2V0
U3VicGl4ZWxHbHlwaHMoYm9vbCBpc1N1YnBpeGVsR2x5cGhzKQotewotICAgIEZvbnRQbGF0Zm9y
bURhdGE6OnNldFN1YnBpeGVsUmVuZGVyaW5nKGlzU3VicGl4ZWxHbHlwaHMpOwotfQotCi0vLyBz
dGF0aWMKLXZvaWQgV2ViRm9udFJlbmRlcmluZzo6c2V0U3VicGl4ZWxSZW5kZXJpbmcoYm9vbCB1
c2VTdWJwaXhlbFJlbmRlcmluZykKLXsKLSAgICBGb250UGxhdGZvcm1EYXRhOjpzZXRTdWJwaXhl
bFJlbmRlcmluZyh1c2VTdWJwaXhlbFJlbmRlcmluZyk7Ci19Ci0KLS8vIHN0YXRpYwotdm9pZCBX
ZWJGb250UmVuZGVyaW5nOjpzZXRTdWJwaXhlbFBvc2l0aW9uaW5nKGJvb2wgdXNlU3VicGl4ZWxQ
b3NpdGlvbmluZykKLXsKLSAgICBGb250UGxhdGZvcm1EYXRhOjpzZXRTdWJwaXhlbFBvc2l0aW9u
aW5nKHVzZVN1YnBpeGVsUG9zaXRpb25pbmcpOwotfQotCi0vLyBzdGF0aWMKLXZvaWQgV2ViRm9u
dFJlbmRlcmluZzo6c2V0TENET3JkZXIoU2tGb250SG9zdDo6TENET3JkZXIgb3JkZXIpCi17Ci0g
ICAgU2tGb250SG9zdDo6U2V0U3VicGl4ZWxPcmRlcihvcmRlcik7Ci19Ci0KLS8vIHN0YXRpYwot
dm9pZCBXZWJGb250UmVuZGVyaW5nOjpzZXRMQ0RPcmllbnRhdGlvbihTa0ZvbnRIb3N0OjpMQ0RP
cmllbnRhdGlvbiBvcmllbnRhdGlvbikKLXsKLSAgICBTa0ZvbnRIb3N0OjpTZXRTdWJwaXhlbE9y
aWVudGF0aW9uKG9yaWVudGF0aW9uKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9saW51eC9XZWJSZW5kZXJUaGVtZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbGludXgvV2ViUmVuZGVyVGhl
bWUuY3BwCShyZXZpc2lvbiAxMjAwMTEpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9s
aW51eC9XZWJSZW5kZXJUaGVtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNDcgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBKb2VsIFN0YW5sZXkuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYlJlbmRlclRoZW1lLmgiCi0KLSNpbmNs
dWRlICJSZW5kZXJUaGVtZUNocm9taXVtTGludXguaCIKLSNpbmNsdWRlICJXZWJWaWV3LmgiCi0K
LXVzaW5nIFdlYkNvcmU6OlJlbmRlclRoZW1lOwotdXNpbmcgV2ViQ29yZTo6UmVuZGVyVGhlbWVD
aHJvbWl1bUxpbnV4OwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBzZXRDYXJldEJsaW5r
SW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQotewotICAgIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51
eDo6c2V0Q2FyZXRCbGlua0ludGVydmFsKGludGVydmFsKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9saW51eGlzaC9XZWJGb250
UmVuZGVyU3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L2xpbnV4aXNoL1dlYkZvbnRSZW5kZXJTdHlsZS5jcHAJKHJldmlzaW9uIDEyMDAwNikJKGZyb20g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbGludXgvV2ViRm9udFJlbmRlclN0eWxlLmNwcDox
MjAwMDYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9saW51eGlzaC9XZWJGb250UmVu
ZGVyU3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV2ViRm9udFJlbmRlclN0eWxlLmgiCisKKyNpbmNsdWRlICJGb250
UmVuZGVyU3R5bGUuaCIKKwordXNpbmcgV2ViQ29yZTo6Rm9udFJlbmRlclN0eWxlOworCituYW1l
c3BhY2UgV2ViS2l0IHsKKwordm9pZCBXZWJGb250UmVuZGVyU3R5bGU6OnRvRm9udFJlbmRlclN0
eWxlKEZvbnRSZW5kZXJTdHlsZSogb3V0KQoreworICAgIG91dC0+dXNlQml0bWFwcyA9IHVzZUJp
dG1hcHM7CisgICAgb3V0LT51c2VBdXRvSGludCA9IHVzZUF1dG9IaW50OworICAgIG91dC0+dXNl
SGludGluZyA9IHVzZUhpbnRpbmc7CisgICAgb3V0LT5oaW50U3R5bGUgPSBoaW50U3R5bGU7Cisg
ICAgb3V0LT51c2VBbnRpQWxpYXMgPSB1c2VBbnRpQWxpYXM7CisgICAgb3V0LT51c2VTdWJwaXhl
bFJlbmRlcmluZyA9IHVzZVN1YnBpeGVsUmVuZGVyaW5nICE9IDIgPyB1c2VTdWJwaXhlbFJlbmRl
cmluZyA6IHVzZVN1YnBpeGVsOworICAgIG91dC0+dXNlU3VicGl4ZWxQb3NpdGlvbmluZyA9IHVz
ZVN1YnBpeGVsUG9zaXRpb25pbmc7Cit9CisKK3ZvaWQgV2ViRm9udFJlbmRlclN0eWxlOjpzZXRE
ZWZhdWx0cygpCit7CisgICAgdXNlQml0bWFwcyA9IDI7CisgICAgdXNlQXV0b0hpbnQgPSAyOwor
ICAgIHVzZUhpbnRpbmcgPSAyOworICAgIGhpbnRTdHlsZSA9IDA7CisgICAgdXNlQW50aUFsaWFz
ID0gMjsKKyAgICB1c2VTdWJwaXhlbCA9IDI7CisgICAgdXNlU3VicGl4ZWxSZW5kZXJpbmcgPSAy
OworICAgIHVzZVN1YnBpeGVsUG9zaXRpb25pbmcgPSAyOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2xpbnV4aXNoL1dlYkZvbnRS
ZW5kZXJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2xp
bnV4aXNoL1dlYkZvbnRSZW5kZXJpbmcuY3BwCShyZXZpc2lvbiAxMjAwMDYpCShmcm9tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL2xpbnV4L1dlYkZvbnRSZW5kZXJpbmcuY3BwOjEyMDAwNikK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2xpbnV4aXNoL1dlYkZvbnRSZW5kZXJpbmcu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2ViRm9udFJlbmRlcmluZy5oIgorCisjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0
YS5oIgorCit1c2luZyBXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOworCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworLy8gc3RhdGljCit2b2lkIFdlYkZvbnRSZW5kZXJpbmc6OnNldEhpbnRpbmcoU2tQ
YWludDo6SGludGluZyBoaW50aW5nKQoreworICAgIEZvbnRQbGF0Zm9ybURhdGE6OnNldEhpbnRp
bmcoaGludGluZyk7Cit9CisKKy8vIHN0YXRpYwordm9pZCBXZWJGb250UmVuZGVyaW5nOjpzZXRB
bnRpQWxpYXMoYm9vbCBpc0FudGlBbGlhcykKK3sKKyAgICBGb250UGxhdGZvcm1EYXRhOjpzZXRB
bnRpQWxpYXMoaXNBbnRpQWxpYXMpOworfQorCisvLyBzdGF0aWMKK3ZvaWQgV2ViRm9udFJlbmRl
cmluZzo6c2V0U3VicGl4ZWxHbHlwaHMoYm9vbCBpc1N1YnBpeGVsR2x5cGhzKQoreworICAgIEZv
bnRQbGF0Zm9ybURhdGE6OnNldFN1YnBpeGVsUmVuZGVyaW5nKGlzU3VicGl4ZWxHbHlwaHMpOwor
fQorCisvLyBzdGF0aWMKK3ZvaWQgV2ViRm9udFJlbmRlcmluZzo6c2V0U3VicGl4ZWxSZW5kZXJp
bmcoYm9vbCB1c2VTdWJwaXhlbFJlbmRlcmluZykKK3sKKyAgICBGb250UGxhdGZvcm1EYXRhOjpz
ZXRTdWJwaXhlbFJlbmRlcmluZyh1c2VTdWJwaXhlbFJlbmRlcmluZyk7Cit9CisKKy8vIHN0YXRp
Ywordm9pZCBXZWJGb250UmVuZGVyaW5nOjpzZXRTdWJwaXhlbFBvc2l0aW9uaW5nKGJvb2wgdXNl
U3VicGl4ZWxQb3NpdGlvbmluZykKK3sKKyAgICBGb250UGxhdGZvcm1EYXRhOjpzZXRTdWJwaXhl
bFBvc2l0aW9uaW5nKHVzZVN1YnBpeGVsUG9zaXRpb25pbmcpOworfQorCisvLyBzdGF0aWMKK3Zv
aWQgV2ViRm9udFJlbmRlcmluZzo6c2V0TENET3JkZXIoU2tGb250SG9zdDo6TENET3JkZXIgb3Jk
ZXIpCit7CisgICAgU2tGb250SG9zdDo6U2V0U3VicGl4ZWxPcmRlcihvcmRlcik7Cit9CisKKy8v
IHN0YXRpYwordm9pZCBXZWJGb250UmVuZGVyaW5nOjpzZXRMQ0RPcmllbnRhdGlvbihTa0ZvbnRI
b3N0OjpMQ0RPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3sKKyAgICBTa0ZvbnRIb3N0OjpTZXRT
dWJwaXhlbE9yaWVudGF0aW9uKG9yaWVudGF0aW9uKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9saW51eGlzaC9XZWJSZW5kZXJU
aGVtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbGludXhp
c2gvV2ViUmVuZGVyVGhlbWUuY3BwCShyZXZpc2lvbiAxMjAwMDYpCShmcm9tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL2xpbnV4L1dlYlJlbmRlclRoZW1lLmNwcDoxMjAwMDYpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9saW51eGlzaC9XZWJSZW5kZXJUaGVtZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBKb2Vs
IFN0YW5sZXkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldlYlJlbmRlclRoZW1lLmgiCisKKyNpbmNsdWRlICJSZW5kZXJUaGVtZUNocm9taXVtTGludXgu
aCIKKyNpbmNsdWRlICJXZWJWaWV3LmgiCisKK3VzaW5nIFdlYkNvcmU6OlJlbmRlclRoZW1lOwor
dXNpbmcgV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OworCituYW1lc3BhY2UgV2Vi
S2l0IHsKKwordm9pZCBzZXRDYXJldEJsaW5rSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQorewor
ICAgIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6c2V0Q2FyZXRCbGlua0ludGVydmFsKGludGVy
dmFsKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146958</attachid>
            <date>2012-06-11 16:31:32 -0700</date>
            <delta_ts>2012-06-11 16:49:18 -0700</delta_ts>
            <desc>patch v2 (try to fix patch issue)</desc>
            <filename>88802b</filename>
            <type>text/plain</type>
            <size>92834</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTIwMDE4KQorKysgU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDEyLTA2LTExICBYaWFu
emh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVt
XSBMZXQgQW5kcm9pZCBhbmQgTGludXggc2hhcmUgc29tZSBwbGF0Zm9ybS1zcGVjaWZpYyBBUElz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODgwMgor
CisgICAgICAgIEFkZGVkIHB1YmxpYy9saW51eGlzaCBhbmQgbW92ZWQgc2hhcmVhYmxlIGhlYWRl
ciBmaWxlcyBmcm9tIHB1YmxpYy9saW51eC4KKworICAgICAgICBDcmVhdGUgdGVtcG9yYXJ5IGZv
cndhcmRpbmcgaGVhZGVyIGZpbGVzIGluIHRoZSBvcmlnaW5hbCBwbGFjZXMuIAorICAgICAgICBX
aWxsIHJlbW92ZSB0aGVtIGFmdGVyIENocm9taXVtIHRyYW5zaXRpb24uCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvYW5k
cm9pZDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvYW5kcm9pZC9XZWJTYW5k
Ym94U3VwcG9ydC5oOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9hbmRyb2lk
L1dlYlRoZW1lRW5naW5lLmg6IFJlbW92ZWQuCisgICAgICAgICogY2hyb21pdW0vcHVibGljL2xp
bnV4L1dlYkZvbnRGYW1pbHkuaDoKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvbGludXgvV2Vi
U2FuZGJveFN1cHBvcnQuaDoKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViVGhl
bWVFbmdpbmUuaDoKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvbGludXhpc2g6IEFkZGVkLgor
ICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9saW51eGlzaC9XZWJGb250RmFtaWx5Lmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViRm9udEZhbWls
eS5oLgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9saW51eGlzaC9XZWJTYW5kYm94U3VwcG9y
dC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL2xpbnV4L1dl
YlNhbmRib3hTdXBwb3J0LmguCisgICAgICAgICogY2hyb21pdW0vcHVibGljL2xpbnV4aXNoL1dl
YlRoZW1lRW5naW5lLmg6IENvcGllZCBmcm9tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvbGludXgvV2ViVGhlbWVFbmdpbmUuaC4KKwogMjAxMi0wNi0xMSAgRGFuYSBKYW5zZW5zICA8
ZGFuYWtqQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFNlcGFyYXRlIENDVmlk
ZW9EcmF3UXVhZCBhbmQgZnJvbSB0aGUgbGF5ZXIgdHJlZSBhbmQgdmlkZW8gcHJvdmlkZXIgYnkg
cmVtb3ZpbmcgTWFuYWdlZFRleHR1cmUgYW5kIFdlYlZpZGVvRnJhbWUgcG9pbnRlcnMgZnJvbSB0
aGUgcXVhZApJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9hbmRyb2lkL1dl
YlNhbmRib3hTdXBwb3J0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9hbmRyb2lkL1dlYlNhbmRib3hTdXBwb3J0LmgJKHJldmlzaW9uIDEyMDAxNykKKysr
IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvYW5kcm9pZC9XZWJTYW5kYm94U3VwcG9y
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlNhbmRib3hTdXBw
b3J0X2gKLSNkZWZpbmUgV2ViU2FuZGJveFN1cHBvcnRfaAotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotLy8gRW1wdHkgY2xhc3MsIGFzIHdlIG5lZWQgaXQgdG8gY29tcGlsZS4KLWNsYXNzIFdlYlNh
bmRib3hTdXBwb3J0IHsKLXB1YmxpYzoKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0j
ZW5kaWYKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvYW5kcm9pZC9XZWJU
aGVtZUVuZ2luZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvYW5kcm9pZC9XZWJUaGVtZUVuZ2luZS5oCShyZXZpc2lvbiAxMjAwMTcpCisrKyBTb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL2FuZHJvaWQvV2ViVGhlbWVFbmdpbmUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0g
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViVGhlbWVFbmdpbmVfaAotI2RlZmlu
ZSBXZWJUaGVtZUVuZ2luZV9oCi0KLSNpbmNsdWRlICIuLi9XZWJDYW52YXMuaCIKLSNpbmNsdWRl
ICIuLi9XZWJDb2xvci5oIgotI2luY2x1ZGUgIi4uL1dlYlNpemUuaCIKLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci0KLXN0cnVjdCBXZWJSZWN0OwotCi1jbGFzcyBXZWJUaGVtZUVuZ2luZSB7Ci1wdWJs
aWM6Ci0gICAgLy8gVGhlIFVJIHBhcnQgd2hpY2ggaXMgYmVpbmcgYWNjZXNzZWQuCi0gICAgZW51
bSBQYXJ0IHsKLSAgICAgICAgLy8gU2Nyb2xsYmFyVGhlbWUgcGFydHMKLSAgICAgICAgUGFydFNj
cm9sbGJhckRvd25BcnJvdywKLSAgICAgICAgUGFydFNjcm9sbGJhckxlZnRBcnJvdywKLSAgICAg
ICAgUGFydFNjcm9sbGJhclJpZ2h0QXJyb3csCi0gICAgICAgIFBhcnRTY3JvbGxiYXJVcEFycm93
LAotICAgICAgICBQYXJ0U2Nyb2xsYmFySG9yaXpvbnRhbFRodW1iLAotICAgICAgICBQYXJ0U2Ny
b2xsYmFyVmVydGljYWxUaHVtYiwKLSAgICAgICAgUGFydFNjcm9sbGJhckhvcml6b250YWxUcmFj
aywKLSAgICAgICAgUGFydFNjcm9sbGJhclZlcnRpY2FsVHJhY2ssCi0KLSAgICAgICAgLy8gUmVu
ZGVyVGhlbWUgcGFydHMKLSAgICAgICAgUGFydENoZWNrYm94LAotICAgICAgICBQYXJ0UmFkaW8s
Ci0gICAgICAgIFBhcnRCdXR0b24sCi0gICAgICAgIFBhcnRUZXh0RmllbGQsCi0gICAgICAgIFBh
cnRNZW51TGlzdCwKLSAgICAgICAgUGFydFNsaWRlclRyYWNrLAotICAgICAgICBQYXJ0U2xpZGVy
VGh1bWIsCi0gICAgICAgIFBhcnRJbm5lclNwaW5CdXR0b24sCi0gICAgICAgIFBhcnRQcm9ncmVz
c0JhcgotICAgIH07Ci0KLSAgICAvLyBUaGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgYXNzb2NpYXRl
ZCBQYXJ0LgotICAgIGVudW0gU3RhdGUgewotICAgICAgICBTdGF0ZURpc2FibGVkLAotICAgICAg
ICBTdGF0ZUhvdmVyLAotICAgICAgICBTdGF0ZU5vcm1hbCwKLSAgICAgICAgU3RhdGVQcmVzc2Vk
LAotICAgIH07Ci0KLSAgICAvLyBFeHRyYSBwYXJhbWV0ZXJzIGZvciBkcmF3aW5nIHRoZSBQYXJ0
U2Nyb2xsYmFySG9yaXpvbnRhbFRyYWNrIGFuZAotICAgIC8vIFBhcnRTY3JvbGxiYXJWZXJ0aWNh
bFRyYWNrLgotICAgIHN0cnVjdCBTY3JvbGxiYXJUcmFja0V4dHJhUGFyYW1zIHsKLSAgICAgICAg
Ly8gVGhlIGJvdW5kcyBvZiB0aGUgZW50aXJlIHRyYWNrLCBhcyBvcHBvc2VkIHRvIHRoZSBwYXJ0
IGJlaW5nIHBhaW50ZWQuCi0gICAgICAgIGludCB0cmFja1g7Ci0gICAgICAgIGludCB0cmFja1k7
Ci0gICAgICAgIGludCB0cmFja1dpZHRoOwotICAgICAgICBpbnQgdHJhY2tIZWlnaHQ7Ci0gICAg
fTsKLQotICAgIC8vIEV4dHJhIHBhcmFtZXRlcnMgZm9yIFBhcnRDaGVja2JveCwgUGFydFB1c2hC
dXR0b24gYW5kIFBhcnRSYWRpby4KLSAgICBzdHJ1Y3QgQnV0dG9uRXh0cmFQYXJhbXMgewotICAg
ICAgICBib29sIGNoZWNrZWQ7Ci0gICAgICAgIGJvb2wgaW5kZXRlcm1pbmF0ZTsgLy8gV2hldGhl
ciB0aGUgYnV0dG9uIHN0YXRlIGlzIGluZGV0ZXJtaW5hdGUuCi0gICAgICAgIGJvb2wgaXNEZWZh
dWx0OyAvLyBXaGV0aGVyIHRoZSBidXR0b24gaXMgZGVmYXVsdCBidXR0b24uCi0gICAgICAgIGJv
b2wgaGFzQm9yZGVyOwotICAgICAgICBXZWJDb2xvciBiYWNrZ3JvdW5kQ29sb3I7Ci0gICAgfTsK
LQotICAgIC8vIEV4dHJhIHBhcmFtZXRlcnMgZm9yIFBhcnRUZXh0RmllbGQKLSAgICBzdHJ1Y3Qg
VGV4dEZpZWxkRXh0cmFQYXJhbXMgewotICAgICAgICBib29sIGlzVGV4dEFyZWE7Ci0gICAgICAg
IGJvb2wgaXNMaXN0Ym94OwotICAgICAgICBXZWJDb2xvciBiYWNrZ3JvdW5kQ29sb3I7Ci0gICAg
fTsKLQotICAgIC8vIEV4dHJhIHBhcmFtZXRlcnMgZm9yIFBhcnRNZW51TGlzdAotICAgIHN0cnVj
dCBNZW51TGlzdEV4dHJhUGFyYW1zIHsKLSAgICAgICAgYm9vbCBoYXNCb3JkZXI7Ci0gICAgICAg
IGJvb2wgaGFzQm9yZGVyUmFkaXVzOwotICAgICAgICBpbnQgYXJyb3dYOwotICAgICAgICBpbnQg
YXJyb3dZOwotICAgICAgICBXZWJDb2xvciBiYWNrZ3JvdW5kQ29sb3I7Ci0gICAgfTsKLQotICAg
IC8vIEV4dHJhIHBhcmFtZXRlcnMgZm9yIFBhcnRTbGlkZXJUcmFjayBhbmQgUGFydFNsaWRlclRo
dW1iCi0gICAgc3RydWN0IFNsaWRlckV4dHJhUGFyYW1zIHsKLSAgICAgICAgYm9vbCB2ZXJ0aWNh
bDsKLSAgICAgICAgYm9vbCBpbkRyYWc7Ci0gICAgfTsKLQotICAgIC8vIEV4dHJhIHBhcmFtZXRl
cnMgZm9yIFBhcnRJbm5lclNwaW5CdXR0b24KLSAgICBzdHJ1Y3QgSW5uZXJTcGluQnV0dG9uRXh0
cmFQYXJhbXMgewotICAgICAgICBib29sIHNwaW5VcDsKLSAgICAgICAgYm9vbCByZWFkT25seTsK
LSAgICB9OwotCi0gICAgLy8gRXh0cmEgcGFyYW1ldGVycyBmb3IgUGFydFByb2dyZXNzQmFyCi0g
ICAgc3RydWN0IFByb2dyZXNzQmFyRXh0cmFQYXJhbXMgewotICAgICAgICBib29sIGRldGVybWlu
YXRlOwotICAgICAgICBpbnQgdmFsdWVSZWN0WDsKLSAgICAgICAgaW50IHZhbHVlUmVjdFk7Ci0g
ICAgICAgIGludCB2YWx1ZVJlY3RXaWR0aDsKLSAgICAgICAgaW50IHZhbHVlUmVjdEhlaWdodDsK
LSAgICB9OwotCi0gICAgdW5pb24gRXh0cmFQYXJhbXMgewotICAgICAgICBTY3JvbGxiYXJUcmFj
a0V4dHJhUGFyYW1zIHNjcm9sbGJhclRyYWNrOwotICAgICAgICBCdXR0b25FeHRyYVBhcmFtcyBi
dXR0b247Ci0gICAgICAgIFRleHRGaWVsZEV4dHJhUGFyYW1zIHRleHRGaWVsZDsKLSAgICAgICAg
TWVudUxpc3RFeHRyYVBhcmFtcyBtZW51TGlzdDsKLSAgICAgICAgU2xpZGVyRXh0cmFQYXJhbXMg
c2xpZGVyOwotICAgICAgICBJbm5lclNwaW5CdXR0b25FeHRyYVBhcmFtcyBpbm5lclNwaW47Ci0g
ICAgICAgIFByb2dyZXNzQmFyRXh0cmFQYXJhbXMgcHJvZ3Jlc3NCYXI7Ci0gICAgfTsKLQotICAg
IC8vIEdldHMgdGhlIHNpemUgb2YgdGhlIGdpdmVuIHRoZW1lIHBhcnQuIEZvciB2YXJpYWJsZSBz
aXplZCBpdGVtcwotICAgIC8vIGxpa2UgdmVydGljYWwgc2Nyb2xsYmFyIHRodW1icywgdGhlIHdp
ZHRoIHdpbGwgYmUgdGhlIHJlcXVpcmVkIHdpZHRoIG9mCi0gICAgLy8gdGhlIHRyYWNrIHdoaWxl
IHRoZSBoZWlnaHQgd2lsbCBiZSB0aGUgbWluaW11bSBoZWlnaHQuCi0gICAgdmlydHVhbCBXZWJT
aXplIGdldFNpemUoUGFydCkgeyByZXR1cm4gV2ViU2l6ZSgpOyB9Ci0gICAgLy8gUGFpbnQgdGhl
IGdpdmVuIHRoZSBnaXZlbiB0aGVtZSBwYXJ0LgotICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJD
YW52YXMqLCBQYXJ0LCBTdGF0ZSwgY29uc3QgV2ViUmVjdCYsIGNvbnN0IEV4dHJhUGFyYW1zKikg
eyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCkluZGV4OiBTb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYkZvbnRGYW1pbHkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYkZvbnRGYW1pbHku
aAkocmV2aXNpb24gMTIwMDE3KQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9s
aW51eC9XZWJGb250RmFtaWx5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI3LDIxICsyNyw1IEBACiAgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KLQotI2lmbmRlZiBXZWJGb250RmFtaWx5
X2gKLSNkZWZpbmUgV2ViRm9udEZhbWlseV9oCi0KLSNpbmNsdWRlICIuLi9XZWJDU3RyaW5nLmgi
Ci0jaW5jbHVkZSAiLi4vV2ViQ29tbW9uLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdHJ1
Y3QgV2ViRm9udEZhbWlseSB7Ci0gICAgV2ViQ1N0cmluZyBuYW1lOwotICAgIGJvb2wgaXNCb2xk
OwotICAgIGJvb2wgaXNJdGFsaWM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2Vu
ZGlmIC8vIFdlYkZvbnRGYW1pbHlfaAorLy8gRklYTUU6IFJlbW92ZSBvbmNlIGh0dHA6Ly9jb2Rl
cmV2aWV3LmNocm9taXVtLm9yZy8xMDU0NDEwMy8gaXMgbGFuZGVkLgorI2luY2x1ZGUgIi4uL2xp
bnV4aXNoL1dlYkZvbnRGYW1pbHkuaCIKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvbGludXgvV2ViU2FuZGJveFN1cHBvcnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYlNhbmRib3hTdXBwb3J0LmgJKHJldmlzaW9u
IDEyMDAxNykKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViU2Fu
ZGJveFN1cHBvcnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjcsMzkgKzI3LDUgQEAKICAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwotCi0jaWZuZGVmIFdlYlNhbmRib3hTdXBwb3J0X2gK
LSNkZWZpbmUgV2ViU2FuZGJveFN1cHBvcnRfaAotCi0jaW5jbHVkZSAiLi4vV2ViQ29tbW9uLmgi
Ci0jaW5jbHVkZSAiLi4vV2ViU3RyaW5nLmgiCi0jaW5jbHVkZSAiV2ViRm9udEZhbWlseS5oIgot
Ci1uYW1lc3BhY2UgV2ViS2l0IHsKLQotc3RydWN0IFdlYkZvbnRSZW5kZXJTdHlsZTsKLQotLy8g
UHV0IG1ldGhvZHMgaGVyZSB0aGF0IGFyZSByZXF1aXJlZCBkdWUgdG8gc2FuZGJveCByZXN0cmlj
dGlvbnMuCi1jbGFzcyBXZWJTYW5kYm94U3VwcG9ydCB7Ci1wdWJsaWM6Ci0gICAgLy8gRm9udHMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0KLSAgICAvLyBHZXQgYSBmb250IGZhbWlseSB3aGljaCBjb250YWlucyBnbHlwaHMg
Zm9yIHRoZSBnaXZlbiBVbmljb2RlCi0gICAgLy8gY29kZS1wb2ludHMuCi0gICAgLy8gICBjaGFy
YWN0ZXJzOiBhIFVURi0xNiBlbmNvZGVkIHN0cmluZwotICAgIC8vICAgbnVtQ2hhcmFjdGVyczog
dGhlIG51bWJlciBvZiAxNi1iaXQgd29yZHMgaW4gfGNoYXJhY3RlcnN8Ci0gICAgLy8gICBwcmVm
ZXJyZWRMb2NhbGU6IHByZWZlcnJlZCBsb2NhbGUgaWRlbnRpZmllciBmb3IgdGhlIHxjaGFyYWN0
ZXJzfAotICAgIC8vICAgICAgICAgICAgICAgICAgICAoZS5nLiAiZW4iLCAiamEiLCAiemgtQ04i
KQotICAgIC8vCi0gICAgLy8gUmV0dXJucyBhIHN0cmluZyB3aXRoIHRoZSBmb250IGZhbWlseSBv
biBhbiBlbXB0eSBzdHJpbmcgaWYgdGhlCi0gICAgLy8gcmVxdWVzdCBjYW5ub3QgYmUgc2F0aXNm
aWVkLgotICAgIC8vIFJldHVybnMgYSBXZWJGb250RmFtaWx5IGluc3RhbmNlIHdpdGggdGhlIGZv
bnQgbmFtZS4gVGhlIGluc3RhbmNlIGhhcyBlbXB0eSBmb250IG5hbWUgaWYgdGhlIHJlcXVlc3Qg
Y2Fubm90IGJlIHNhdGlzZmllZC4KLSAgICAvLyBGSVhNRTogTWFrZSB0aGlzIHRvIGJlIGEgcHVy
ZSB2aXJ0dWFsIGZ1bmN0aW9uIGFmdGVyIHRyYW5zaXRpb24uCi0gICAgdmlydHVhbCB2b2lkIGdl
dEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJzKGNvbnN0IFdlYlVDaGFyKiBjaGFyYWN0ZXJzLCBzaXpl
X3QgbnVtQ2hhcmFjdGVycywgY29uc3QgY2hhciogcHJlZmVycmVkTG9jYWxlLCBXZWJGb250RmFt
aWx5KikgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIGdldFJlbmRlclN0eWxlRm9yU3RyaWtlKGNv
bnN0IGNoYXIqIGZhbWlseSwgaW50IHNpemVBbmRTdHlsZSwgV2ViRm9udFJlbmRlclN0eWxlKikg
PSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgorLy8gRklYTUU6IFJl
bW92ZSBvbmNlIGh0dHA6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8xMDU0NDEwMy8gaXMgbGFu
ZGVkLgorI2luY2x1ZGUgIi4uL2xpbnV4aXNoL1dlYlNhbmRib3hTdXBwb3J0LmgiCkluZGV4OiBT
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYlRoZW1lRW5naW5lLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJUaGVt
ZUVuZ2luZS5oCShyZXZpc2lvbiAxMjAwMTcpCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL2xpbnV4L1dlYlRoZW1lRW5naW5lLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI3LDEyNiArMjcs
NSBAQAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCi0KLSNpZm5kZWYgV2Vi
VGhlbWVFbmdpbmVfaAotI2RlZmluZSBXZWJUaGVtZUVuZ2luZV9oCi0KLSNpbmNsdWRlICIuLi9X
ZWJDYW52YXMuaCIKLSNpbmNsdWRlICIuLi9XZWJDb2xvci5oIgotI2luY2x1ZGUgIi4uL1dlYlNp
emUuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBXZWJSZWN0OwotCi1jbGFzcyBX
ZWJUaGVtZUVuZ2luZSB7Ci1wdWJsaWM6Ci0gICAgLy8gVGhlIFVJIHBhcnQgd2hpY2ggaXMgYmVp
bmcgYWNjZXNzZWQuCi0gICAgZW51bSBQYXJ0IHsKLSAgICAgICAgLy8gU2Nyb2xsYmFyVGhlbWUg
cGFydHMKLSAgICAgICAgUGFydFNjcm9sbGJhckRvd25BcnJvdywKLSAgICAgICAgUGFydFNjcm9s
bGJhckxlZnRBcnJvdywKLSAgICAgICAgUGFydFNjcm9sbGJhclJpZ2h0QXJyb3csCi0gICAgICAg
IFBhcnRTY3JvbGxiYXJVcEFycm93LAotICAgICAgICBQYXJ0U2Nyb2xsYmFySG9yaXpvbnRhbFRo
dW1iLAotICAgICAgICBQYXJ0U2Nyb2xsYmFyVmVydGljYWxUaHVtYiwKLSAgICAgICAgUGFydFNj
cm9sbGJhckhvcml6b250YWxUcmFjaywKLSAgICAgICAgUGFydFNjcm9sbGJhclZlcnRpY2FsVHJh
Y2ssCi0KLSAgICAgICAgLy8gUmVuZGVyVGhlbWUgcGFydHMKLSAgICAgICAgUGFydENoZWNrYm94
LAotICAgICAgICBQYXJ0UmFkaW8sCi0gICAgICAgIFBhcnRCdXR0b24sCi0gICAgICAgIFBhcnRU
ZXh0RmllbGQsCi0gICAgICAgIFBhcnRNZW51TGlzdCwKLSAgICAgICAgUGFydFNsaWRlclRyYWNr
LAotICAgICAgICBQYXJ0U2xpZGVyVGh1bWIsCi0gICAgICAgIFBhcnRJbm5lclNwaW5CdXR0b24s
Ci0gICAgICAgIFBhcnRQcm9ncmVzc0JhcgotICAgIH07Ci0KLSAgICAvLyBUaGUgY3VycmVudCBz
dGF0ZSBvZiB0aGUgYXNzb2NpYXRlZCBQYXJ0LgotICAgIGVudW0gU3RhdGUgewotICAgICAgICBT
dGF0ZURpc2FibGVkLAotICAgICAgICBTdGF0ZUhvdmVyLAotICAgICAgICBTdGF0ZU5vcm1hbCwK
LSAgICAgICAgU3RhdGVQcmVzc2VkLAotICAgIH07Ci0KLSAgICAvLyBFeHRyYSBwYXJhbWV0ZXJz
IGZvciBkcmF3aW5nIHRoZSBQYXJ0U2Nyb2xsYmFySG9yaXpvbnRhbFRyYWNrIGFuZAotICAgIC8v
IFBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRyYWNrLgotICAgIHN0cnVjdCBTY3JvbGxiYXJUcmFja0V4
dHJhUGFyYW1zIHsKLSAgICAgICAgLy8gVGhlIGJvdW5kcyBvZiB0aGUgZW50aXJlIHRyYWNrLCBh
cyBvcHBvc2VkIHRvIHRoZSBwYXJ0IGJlaW5nIHBhaW50ZWQuCi0gICAgICAgIGludCB0cmFja1g7
Ci0gICAgICAgIGludCB0cmFja1k7Ci0gICAgICAgIGludCB0cmFja1dpZHRoOwotICAgICAgICBp
bnQgdHJhY2tIZWlnaHQ7Ci0gICAgfTsKLQotICAgIC8vIEV4dHJhIHBhcmFtZXRlcnMgZm9yIFBh
cnRDaGVja2JveCwgUGFydFB1c2hCdXR0b24gYW5kIFBhcnRSYWRpby4KLSAgICBzdHJ1Y3QgQnV0
dG9uRXh0cmFQYXJhbXMgewotICAgICAgICBib29sIGNoZWNrZWQ7Ci0gICAgICAgIGJvb2wgaW5k
ZXRlcm1pbmF0ZTsgLy8gV2hldGhlciB0aGUgYnV0dG9uIHN0YXRlIGlzIGluZGV0ZXJtaW5hdGUu
Ci0gICAgICAgIGJvb2wgaXNEZWZhdWx0OyAvLyBXaGV0aGVyIHRoZSBidXR0b24gaXMgZGVmYXVs
dCBidXR0b24uCi0gICAgICAgIGJvb2wgaGFzQm9yZGVyOwotICAgICAgICBXZWJDb2xvciBiYWNr
Z3JvdW5kQ29sb3I7Ci0gICAgfTsKLQotICAgIC8vIEV4dHJhIHBhcmFtZXRlcnMgZm9yIFBhcnRU
ZXh0RmllbGQKLSAgICBzdHJ1Y3QgVGV4dEZpZWxkRXh0cmFQYXJhbXMgewotICAgICAgICBib29s
IGlzVGV4dEFyZWE7Ci0gICAgICAgIGJvb2wgaXNMaXN0Ym94OwotICAgICAgICBXZWJDb2xvciBi
YWNrZ3JvdW5kQ29sb3I7Ci0gICAgfTsKLQotICAgIC8vIEV4dHJhIHBhcmFtZXRlcnMgZm9yIFBh
cnRNZW51TGlzdAotICAgIHN0cnVjdCBNZW51TGlzdEV4dHJhUGFyYW1zIHsKLSAgICAgICAgYm9v
bCBoYXNCb3JkZXI7Ci0gICAgICAgIGJvb2wgaGFzQm9yZGVyUmFkaXVzOwotICAgICAgICBpbnQg
YXJyb3dYOwotICAgICAgICBpbnQgYXJyb3dZOwotICAgICAgICBXZWJDb2xvciBiYWNrZ3JvdW5k
Q29sb3I7Ci0gICAgfTsKLQotICAgIC8vIEV4dHJhIHBhcmFtZXRlcnMgZm9yIFBhcnRTbGlkZXJU
cmFjayBhbmQgUGFydFNsaWRlclRodW1iCi0gICAgc3RydWN0IFNsaWRlckV4dHJhUGFyYW1zIHsK
LSAgICAgICAgYm9vbCB2ZXJ0aWNhbDsKLSAgICAgICAgYm9vbCBpbkRyYWc7Ci0gICAgfTsKLQot
ICAgIC8vIEV4dHJhIHBhcmFtZXRlcnMgZm9yIFBhcnRJbm5lclNwaW5CdXR0b24KLSAgICBzdHJ1
Y3QgSW5uZXJTcGluQnV0dG9uRXh0cmFQYXJhbXMgewotICAgICAgICBib29sIHNwaW5VcDsKLSAg
ICAgICAgYm9vbCByZWFkT25seTsKLSAgICB9OwotCi0gICAgLy8gRXh0cmEgcGFyYW1ldGVycyBm
b3IgUGFydFByb2dyZXNzQmFyCi0gICAgc3RydWN0IFByb2dyZXNzQmFyRXh0cmFQYXJhbXMgewot
ICAgICAgICBib29sIGRldGVybWluYXRlOwotICAgICAgICBpbnQgdmFsdWVSZWN0WDsKLSAgICAg
ICAgaW50IHZhbHVlUmVjdFk7Ci0gICAgICAgIGludCB2YWx1ZVJlY3RXaWR0aDsKLSAgICAgICAg
aW50IHZhbHVlUmVjdEhlaWdodDsKLSAgICB9OwotCi0gICAgdW5pb24gRXh0cmFQYXJhbXMgewot
ICAgICAgICBTY3JvbGxiYXJUcmFja0V4dHJhUGFyYW1zIHNjcm9sbGJhclRyYWNrOwotICAgICAg
ICBCdXR0b25FeHRyYVBhcmFtcyBidXR0b247Ci0gICAgICAgIFRleHRGaWVsZEV4dHJhUGFyYW1z
IHRleHRGaWVsZDsKLSAgICAgICAgTWVudUxpc3RFeHRyYVBhcmFtcyBtZW51TGlzdDsKLSAgICAg
ICAgU2xpZGVyRXh0cmFQYXJhbXMgc2xpZGVyOwotICAgICAgICBJbm5lclNwaW5CdXR0b25FeHRy
YVBhcmFtcyBpbm5lclNwaW47Ci0gICAgICAgIFByb2dyZXNzQmFyRXh0cmFQYXJhbXMgcHJvZ3Jl
c3NCYXI7Ci0gICAgfTsKLQotICAgIC8vIEdldHMgdGhlIHNpemUgb2YgdGhlIGdpdmVuIHRoZW1l
IHBhcnQuIEZvciB2YXJpYWJsZSBzaXplZCBpdGVtcwotICAgIC8vIGxpa2UgdmVydGljYWwgc2Ny
b2xsYmFyIHRodW1icywgdGhlIHdpZHRoIHdpbGwgYmUgdGhlIHJlcXVpcmVkIHdpZHRoIG9mCi0g
ICAgLy8gdGhlIHRyYWNrIHdoaWxlIHRoZSBoZWlnaHQgd2lsbCBiZSB0aGUgbWluaW11bSBoZWln
aHQuCi0gICAgdmlydHVhbCBXZWJTaXplIGdldFNpemUoUGFydCkgeyByZXR1cm4gV2ViU2l6ZSgp
OyB9Ci0gICAgLy8gUGFpbnQgdGhlIGdpdmVuIHRoZSBnaXZlbiB0aGVtZSBwYXJ0LgotICAgIHZp
cnR1YWwgdm9pZCBwYWludChXZWJDYW52YXMqLCBQYXJ0LCBTdGF0ZSwgY29uc3QgV2ViUmVjdCYs
IGNvbnN0IEV4dHJhUGFyYW1zKikgeyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
I2VuZGlmCisvLyBGSVhNRTogUmVtb3ZlIG9uY2UgaHR0cDovL2NvZGVyZXZpZXcuY2hyb21pdW0u
b3JnLzEwNTQ0MTAzLyBpcyBsYW5kZWQuCisjaW5jbHVkZSAiLi4vbGludXhpc2gvV2ViVGhlbWVF
bmdpbmUuaCIKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvbGludXhpc2gv
V2ViRm9udEZhbWlseS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvbGludXhpc2gvV2ViRm9udEZhbWlseS5oCShyZXZpc2lvbiAxMjAwMDYpCShmcm9tIFNv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViRm9udEZhbWlseS5oOjEyMDAw
NikKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvbGludXhpc2gvV2ViRm9udEZh
bWlseS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkZvbnRGYW1p
bHlfaAorI2RlZmluZSBXZWJGb250RmFtaWx5X2gKKworI2luY2x1ZGUgIi4uL1dlYkNTdHJpbmcu
aCIKKyNpbmNsdWRlICIuLi9XZWJDb21tb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0
cnVjdCBXZWJGb250RmFtaWx5IHsKKyAgICBXZWJDU3RyaW5nIG5hbWU7CisgICAgYm9vbCBpc0Jv
bGQ7CisgICAgYm9vbCBpc0l0YWxpYzsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gV2ViRm9udEZhbWlseV9oCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL2xpbnV4aXNoL1dlYlNhbmRib3hTdXBwb3J0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9saW51eGlzaC9XZWJTYW5kYm94U3VwcG9ydC5oCShy
ZXZpc2lvbiAxMjAwMDYpCShmcm9tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvbGlu
dXgvV2ViU2FuZGJveFN1cHBvcnQuaDoxMjAwMDYpCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL2xpbnV4aXNoL1dlYlNhbmRib3hTdXBwb3J0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViU2FuZGJveFN1cHBvcnRfaAorI2RlZmluZSBXZWJTYW5k
Ym94U3VwcG9ydF9oCisKKyNpbmNsdWRlICIuLi9XZWJDb21tb24uaCIKKyNpbmNsdWRlICIuLi9X
ZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJGb250RmFtaWx5LmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitzdHJ1Y3QgV2ViRm9udFJlbmRlclN0eWxlOworCisvLyBQdXQgbWV0aG9kcyBoZXJl
IHRoYXQgYXJlIHJlcXVpcmVkIGR1ZSB0byBzYW5kYm94IHJlc3RyaWN0aW9ucy4KK2NsYXNzIFdl
YlNhbmRib3hTdXBwb3J0IHsKK3B1YmxpYzoKKyAgICAvLyBGb250cyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8v
IEdldCBhIGZvbnQgZmFtaWx5IHdoaWNoIGNvbnRhaW5zIGdseXBocyBmb3IgdGhlIGdpdmVuIFVu
aWNvZGUKKyAgICAvLyBjb2RlLXBvaW50cy4KKyAgICAvLyAgIGNoYXJhY3RlcnM6IGEgVVRGLTE2
IGVuY29kZWQgc3RyaW5nCisgICAgLy8gICBudW1DaGFyYWN0ZXJzOiB0aGUgbnVtYmVyIG9mIDE2
LWJpdCB3b3JkcyBpbiB8Y2hhcmFjdGVyc3wKKyAgICAvLyAgIHByZWZlcnJlZExvY2FsZTogcHJl
ZmVycmVkIGxvY2FsZSBpZGVudGlmaWVyIGZvciB0aGUgfGNoYXJhY3RlcnN8CisgICAgLy8gICAg
ICAgICAgICAgICAgICAgIChlLmcuICJlbiIsICJqYSIsICJ6aC1DTiIpCisgICAgLy8KKyAgICAv
LyBSZXR1cm5zIGEgc3RyaW5nIHdpdGggdGhlIGZvbnQgZmFtaWx5IG9uIGFuIGVtcHR5IHN0cmlu
ZyBpZiB0aGUKKyAgICAvLyByZXF1ZXN0IGNhbm5vdCBiZSBzYXRpc2ZpZWQuCisgICAgLy8gUmV0
dXJucyBhIFdlYkZvbnRGYW1pbHkgaW5zdGFuY2Ugd2l0aCB0aGUgZm9udCBuYW1lLiBUaGUgaW5z
dGFuY2UgaGFzIGVtcHR5IGZvbnQgbmFtZSBpZiB0aGUgcmVxdWVzdCBjYW5ub3QgYmUgc2F0aXNm
aWVkLgorICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgdG8gYmUgYSBwdXJlIHZpcnR1YWwgZnVuY3Rp
b24gYWZ0ZXIgdHJhbnNpdGlvbi4KKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Rm9udEZhbWlseUZvckNo
YXJhY3RlcnMoY29uc3QgV2ViVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBudW1DaGFyYWN0ZXJz
LCBjb25zdCBjaGFyKiBwcmVmZXJyZWRMb2NhbGUsIFdlYkZvbnRGYW1pbHkqKSA9IDA7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgZ2V0UmVuZGVyU3R5bGVGb3JTdHJpa2UoY29uc3QgY2hhciogZmFtaWx5
LCBpbnQgc2l6ZUFuZFN0eWxlLCBXZWJGb250UmVuZGVyU3R5bGUqKSA9IDA7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL2xpbnV4aXNoL1dlYlRoZW1lRW5naW5lLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9saW51eGlzaC9XZWJUaGVtZUVuZ2luZS5oCShyZXZp
c2lvbiAxMjAwMDYpCShmcm9tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvbGludXgv
V2ViVGhlbWVFbmdpbmUuaDoxMjAwMDYpCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL2xpbnV4aXNoL1dlYlRoZW1lRW5naW5lLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
NTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdlYlRoZW1lRW5naW5lX2gKKyNkZWZpbmUgV2ViVGhlbWVFbmdpbmVfaAor
CisjaW5jbHVkZSAiLi4vV2ViQ2FudmFzLmgiCisjaW5jbHVkZSAiLi4vV2ViQ29sb3IuaCIKKyNp
bmNsdWRlICIuLi9XZWJTaXplLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgV2Vi
UmVjdDsKKworY2xhc3MgV2ViVGhlbWVFbmdpbmUgeworcHVibGljOgorICAgIC8vIFRoZSBVSSBw
YXJ0IHdoaWNoIGlzIGJlaW5nIGFjY2Vzc2VkLgorICAgIGVudW0gUGFydCB7CisgICAgICAgIC8v
IFNjcm9sbGJhclRoZW1lIHBhcnRzCisgICAgICAgIFBhcnRTY3JvbGxiYXJEb3duQXJyb3csCisg
ICAgICAgIFBhcnRTY3JvbGxiYXJMZWZ0QXJyb3csCisgICAgICAgIFBhcnRTY3JvbGxiYXJSaWdo
dEFycm93LAorICAgICAgICBQYXJ0U2Nyb2xsYmFyVXBBcnJvdywKKyAgICAgICAgUGFydFNjcm9s
bGJhckhvcml6b250YWxUaHVtYiwKKyAgICAgICAgUGFydFNjcm9sbGJhclZlcnRpY2FsVGh1bWIs
CisgICAgICAgIFBhcnRTY3JvbGxiYXJIb3Jpem9udGFsVHJhY2ssCisgICAgICAgIFBhcnRTY3Jv
bGxiYXJWZXJ0aWNhbFRyYWNrLAorCisgICAgICAgIC8vIFJlbmRlclRoZW1lIHBhcnRzCisgICAg
ICAgIFBhcnRDaGVja2JveCwKKyAgICAgICAgUGFydFJhZGlvLAorICAgICAgICBQYXJ0QnV0dG9u
LAorICAgICAgICBQYXJ0VGV4dEZpZWxkLAorICAgICAgICBQYXJ0TWVudUxpc3QsCisgICAgICAg
IFBhcnRTbGlkZXJUcmFjaywKKyAgICAgICAgUGFydFNsaWRlclRodW1iLAorICAgICAgICBQYXJ0
SW5uZXJTcGluQnV0dG9uLAorICAgICAgICBQYXJ0UHJvZ3Jlc3NCYXIKKyAgICB9OworCisgICAg
Ly8gVGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGFzc29jaWF0ZWQgUGFydC4KKyAgICBlbnVtIFN0
YXRlIHsKKyAgICAgICAgU3RhdGVEaXNhYmxlZCwKKyAgICAgICAgU3RhdGVIb3ZlciwKKyAgICAg
ICAgU3RhdGVOb3JtYWwsCisgICAgICAgIFN0YXRlUHJlc3NlZCwKKyAgICB9OworCisgICAgLy8g
RXh0cmEgcGFyYW1ldGVycyBmb3IgZHJhd2luZyB0aGUgUGFydFNjcm9sbGJhckhvcml6b250YWxU
cmFjayBhbmQKKyAgICAvLyBQYXJ0U2Nyb2xsYmFyVmVydGljYWxUcmFjay4KKyAgICBzdHJ1Y3Qg
U2Nyb2xsYmFyVHJhY2tFeHRyYVBhcmFtcyB7CisgICAgICAgIC8vIFRoZSBib3VuZHMgb2YgdGhl
IGVudGlyZSB0cmFjaywgYXMgb3Bwb3NlZCB0byB0aGUgcGFydCBiZWluZyBwYWludGVkLgorICAg
ICAgICBpbnQgdHJhY2tYOworICAgICAgICBpbnQgdHJhY2tZOworICAgICAgICBpbnQgdHJhY2tX
aWR0aDsKKyAgICAgICAgaW50IHRyYWNrSGVpZ2h0OworICAgIH07CisKKyAgICAvLyBFeHRyYSBw
YXJhbWV0ZXJzIGZvciBQYXJ0Q2hlY2tib3gsIFBhcnRQdXNoQnV0dG9uIGFuZCBQYXJ0UmFkaW8u
CisgICAgc3RydWN0IEJ1dHRvbkV4dHJhUGFyYW1zIHsKKyAgICAgICAgYm9vbCBjaGVja2VkOwor
ICAgICAgICBib29sIGluZGV0ZXJtaW5hdGU7IC8vIFdoZXRoZXIgdGhlIGJ1dHRvbiBzdGF0ZSBp
cyBpbmRldGVybWluYXRlLgorICAgICAgICBib29sIGlzRGVmYXVsdDsgLy8gV2hldGhlciB0aGUg
YnV0dG9uIGlzIGRlZmF1bHQgYnV0dG9uLgorICAgICAgICBib29sIGhhc0JvcmRlcjsKKyAgICAg
ICAgV2ViQ29sb3IgYmFja2dyb3VuZENvbG9yOworICAgIH07CisKKyAgICAvLyBFeHRyYSBwYXJh
bWV0ZXJzIGZvciBQYXJ0VGV4dEZpZWxkCisgICAgc3RydWN0IFRleHRGaWVsZEV4dHJhUGFyYW1z
IHsKKyAgICAgICAgYm9vbCBpc1RleHRBcmVhOworICAgICAgICBib29sIGlzTGlzdGJveDsKKyAg
ICAgICAgV2ViQ29sb3IgYmFja2dyb3VuZENvbG9yOworICAgIH07CisKKyAgICAvLyBFeHRyYSBw
YXJhbWV0ZXJzIGZvciBQYXJ0TWVudUxpc3QKKyAgICBzdHJ1Y3QgTWVudUxpc3RFeHRyYVBhcmFt
cyB7CisgICAgICAgIGJvb2wgaGFzQm9yZGVyOworICAgICAgICBib29sIGhhc0JvcmRlclJhZGl1
czsKKyAgICAgICAgaW50IGFycm93WDsKKyAgICAgICAgaW50IGFycm93WTsKKyAgICAgICAgV2Vi
Q29sb3IgYmFja2dyb3VuZENvbG9yOworICAgIH07CisKKyAgICAvLyBFeHRyYSBwYXJhbWV0ZXJz
IGZvciBQYXJ0U2xpZGVyVHJhY2sgYW5kIFBhcnRTbGlkZXJUaHVtYgorICAgIHN0cnVjdCBTbGlk
ZXJFeHRyYVBhcmFtcyB7CisgICAgICAgIGJvb2wgdmVydGljYWw7CisgICAgICAgIGJvb2wgaW5E
cmFnOworICAgIH07CisKKyAgICAvLyBFeHRyYSBwYXJhbWV0ZXJzIGZvciBQYXJ0SW5uZXJTcGlu
QnV0dG9uCisgICAgc3RydWN0IElubmVyU3BpbkJ1dHRvbkV4dHJhUGFyYW1zIHsKKyAgICAgICAg
Ym9vbCBzcGluVXA7CisgICAgICAgIGJvb2wgcmVhZE9ubHk7CisgICAgfTsKKworICAgIC8vIEV4
dHJhIHBhcmFtZXRlcnMgZm9yIFBhcnRQcm9ncmVzc0JhcgorICAgIHN0cnVjdCBQcm9ncmVzc0Jh
ckV4dHJhUGFyYW1zIHsKKyAgICAgICAgYm9vbCBkZXRlcm1pbmF0ZTsKKyAgICAgICAgaW50IHZh
bHVlUmVjdFg7CisgICAgICAgIGludCB2YWx1ZVJlY3RZOworICAgICAgICBpbnQgdmFsdWVSZWN0
V2lkdGg7CisgICAgICAgIGludCB2YWx1ZVJlY3RIZWlnaHQ7CisgICAgfTsKKworICAgIHVuaW9u
IEV4dHJhUGFyYW1zIHsKKyAgICAgICAgU2Nyb2xsYmFyVHJhY2tFeHRyYVBhcmFtcyBzY3JvbGxi
YXJUcmFjazsKKyAgICAgICAgQnV0dG9uRXh0cmFQYXJhbXMgYnV0dG9uOworICAgICAgICBUZXh0
RmllbGRFeHRyYVBhcmFtcyB0ZXh0RmllbGQ7CisgICAgICAgIE1lbnVMaXN0RXh0cmFQYXJhbXMg
bWVudUxpc3Q7CisgICAgICAgIFNsaWRlckV4dHJhUGFyYW1zIHNsaWRlcjsKKyAgICAgICAgSW5u
ZXJTcGluQnV0dG9uRXh0cmFQYXJhbXMgaW5uZXJTcGluOworICAgICAgICBQcm9ncmVzc0JhckV4
dHJhUGFyYW1zIHByb2dyZXNzQmFyOworICAgIH07CisKKyAgICAvLyBHZXRzIHRoZSBzaXplIG9m
IHRoZSBnaXZlbiB0aGVtZSBwYXJ0LiBGb3IgdmFyaWFibGUgc2l6ZWQgaXRlbXMKKyAgICAvLyBs
aWtlIHZlcnRpY2FsIHNjcm9sbGJhciB0aHVtYnMsIHRoZSB3aWR0aCB3aWxsIGJlIHRoZSByZXF1
aXJlZCB3aWR0aCBvZgorICAgIC8vIHRoZSB0cmFjayB3aGlsZSB0aGUgaGVpZ2h0IHdpbGwgYmUg
dGhlIG1pbmltdW0gaGVpZ2h0LgorICAgIHZpcnR1YWwgV2ViU2l6ZSBnZXRTaXplKFBhcnQpIHsg
cmV0dXJuIFdlYlNpemUoKTsgfQorICAgIC8vIFBhaW50IHRoZSBnaXZlbiB0aGUgZ2l2ZW4gdGhl
bWUgcGFydC4KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ2FudmFzKiwgUGFydCwgU3RhdGUs
IGNvbnN0IFdlYlJlY3QmLCBjb25zdCBFeHRyYVBhcmFtcyopIHsgfQorfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEyMDAxOCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTItMDYtMTEgIFhpYW56aHUgV2FuZyAgPHdh
bmd4aWFuemh1QGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIExldCBBbmRyb2lk
IGFuZCBMaW51eCBzaGFyZSBzb21lIHBsYXRmb3JtLXNwZWNpZmljIEFQSXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4ODAyCisKKyAgICAgICAgQWRk
ZWQgcHVibGljL2xpbnV4aXNoIGFuZCBwdWJsaWMvcGxhdGZvcm0vbGludXhpc2ggYW5kIG1vdmVk
IHNoYXJlYWJsZQorICAgICAgICBoZWFkZXIgZmlsZXMgZnJvbSBwdWJsaWMvbGludXggYW5kIHB1
YmxpYy9wbGF0Zm9ybS9saW51eCB0byB0aGUgbmV3CisgICAgICAgIGRpcmVjdG9yaWVzLgorCisg
ICAgICAgIENyZWF0ZSB0ZW1wb3JhcnkgZm9yd2FyZGluZyBoZWFkZXIgZmlsZXMgaW4gdGhlIG9y
aWdpbmFsIHBsYWNlcy4KKyAgICAgICAgV2lsbCByZW1vdmUgdGhlbSBhZnRlciBDaHJvbWl1bSB0
cmFuc2l0aW9uLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvYW5kcm9pZC9XZWJTYW5kYm94U3Vw
cG9ydC5oOgorICAgICAgICAqIHB1YmxpYy9ndGsvV2ViRm9udEluZm8uaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwdWJsaWMvbGludXgvV2ViRm9udEluZm8uaDoKKyAgICAgICAgKiBwdWJsaWMvbGlu
dXgvV2ViRm9udFJlbmRlclN0eWxlLmg6CisgICAgICAgICogcHVibGljL2xpbnV4L1dlYkZvbnRS
ZW5kZXJpbmcuaDoKKyAgICAgICAgKiBwdWJsaWMvbGludXgvV2ViUmVuZGVyVGhlbWUuaDoKKyAg
ICAgICAgKiBwdWJsaWMvbGludXgvV2ViU2FuZGJveFN1cHBvcnQuaDoKKyAgICAgICAgKiBwdWJs
aWMvbGludXhpc2g6IEFkZGVkLgorICAgICAgICAqIHB1YmxpYy9saW51eGlzaC9XZWJGb250SW5m
by5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJG
b250SW5mby5oLgorICAgICAgICAqIHB1YmxpYy9saW51eGlzaC9XZWJGb250UmVuZGVyU3R5bGUu
aDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViRm9u
dFJlbmRlclN0eWxlLmguCisgICAgICAgICogcHVibGljL2xpbnV4aXNoL1dlYkZvbnRSZW5kZXJp
bmcuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2Vi
Rm9udFJlbmRlcmluZy5oLgorICAgICAgICAqIHB1YmxpYy9saW51eGlzaC9XZWJSZW5kZXJUaGVt
ZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJS
ZW5kZXJUaGVtZS5oLgorICAgICAgICAqIHB1YmxpYy9saW51eGlzaC9XZWJTYW5kYm94U3VwcG9y
dC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJT
YW5kYm94U3VwcG9ydC5oLgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9hbmRyb2lkL1dlYlNh
bmRib3hTdXBwb3J0Lmg6CisgICAgICAgICogcHVibGljL3BsYXRmb3JtL2FuZHJvaWQvV2ViVGhl
bWVFbmdpbmUuaDoKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vbGludXgvV2ViRm9udEZhbWls
eS5oOgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9saW51eC9XZWJTYW5kYm94U3VwcG9ydC5o
OgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9saW51eC9XZWJUaGVtZUVuZ2luZS5oOgorICAg
ICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9saW51eGlzaDogQWRkZWQuCisgICAgICAgICogcHVibGlj
L3BsYXRmb3JtL2xpbnV4aXNoL1dlYkZvbnRGYW1pbHkuaDogQ29waWVkIGZyb20gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vbGludXgvV2ViRm9udEZhbWlseS5oLgorICAg
ICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9saW51eGlzaC9XZWJTYW5kYm94U3VwcG9ydC5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9saW51eC9XZWJT
YW5kYm94U3VwcG9ydC5oLgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9saW51eGlzaC9XZWJU
aGVtZUVuZ2luZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9w
bGF0Zm9ybS9saW51eC9XZWJUaGVtZUVuZ2luZS5oLgorICAgICAgICAqIHNyYy9QbGF0Zm9ybVN1
cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TdXBwb3J0OjpnZXRGb250RmFt
aWx5Rm9yQ2hhcmFjdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVN1cHBvcnQ6Omdl
dFJlbmRlclN0eWxlRm9yU3RyaWtlKToKKyAgICAgICAgKiBzcmMvYW5kcm9pZC9XZWJGb250SW5m
by5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRm9u
dEluZm86OnNldFN1YnBpeGVsUG9zaXRpb25pbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJGb250
SW5mbzo6ZmFtaWx5Rm9yQ2hhcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJGb250SW5mbzo6cmVu
ZGVyU3R5bGVGb3JTdHJpa2UpOgorICAgICAgICAqIHNyYy9saW51eC9XZWJGb250SW5mby5jcHA6
CisgICAgICAgICogc3JjL2xpbnV4L1dlYkZvbnRSZW5kZXJTdHlsZS5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogc3JjL2xpbnV4L1dlYkZvbnRSZW5kZXJpbmcuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIHNyYy9saW51eC9XZWJSZW5kZXJUaGVtZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3Jj
L2xpbnV4aXNoOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGludXhpc2gvV2ViRm9udFJlbmRlclN0
eWxlLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbGludXgvV2Vi
Rm9udFJlbmRlclN0eWxlLmNwcC4KKyAgICAgICAgKiBzcmMvbGludXhpc2gvV2ViRm9udFJlbmRl
cmluZy5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2xpbnV4L1dl
YkZvbnRSZW5kZXJpbmcuY3BwLgorICAgICAgICAqIHNyYy9saW51eGlzaC9XZWJSZW5kZXJUaGVt
ZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2xpbnV4L1dlYlJl
bmRlclRoZW1lLmNwcC4KKwogMjAxMi0wNi0xMSAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFNlcGFyYXRlIENDVmlkZW9EcmF3UXVhZCBh
bmQgZnJvbSB0aGUgbGF5ZXIgdHJlZSBhbmQgdmlkZW8gcHJvdmlkZXIgYnkgcmVtb3ZpbmcgTWFu
YWdlZFRleHR1cmUgYW5kIFdlYlZpZGVvRnJhbWUgcG9pbnRlcnMgZnJvbSB0aGUgcXVhZApJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24gMTIwMDE3KQorKysgU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC0yODMsOSArMjgz
LDkgQEAKICAgICAgICAgICAgICAgICAncHVibGljL2FuZHJvaWQvV2ViSW5wdXRFdmVudEZhY3Rv
cnkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9hbmRyb2lkL1dlYlNhbmRib3hTdXBwb3J0
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvZ3RrL1dlYklucHV0RXZlbnRGYWN0b3J5Lmgn
LAotICAgICAgICAgICAgICAgICdwdWJsaWMvbGludXgvV2ViRm9udFJlbmRlclN0eWxlLmgnLAot
ICAgICAgICAgICAgICAgICdwdWJsaWMvbGludXgvV2ViRm9udFJlbmRlcmluZy5oJywKLSAgICAg
ICAgICAgICAgICAncHVibGljL2xpbnV4L1dlYlJlbmRlclRoZW1lLmgnLAorICAgICAgICAgICAg
ICAgICdwdWJsaWMvbGludXhpc2gvV2ViRm9udFJlbmRlclN0eWxlLmgnLAorICAgICAgICAgICAg
ICAgICdwdWJsaWMvbGludXhpc2gvV2ViRm9udFJlbmRlcmluZy5oJywKKyAgICAgICAgICAgICAg
ICAncHVibGljL2xpbnV4aXNoL1dlYlJlbmRlclRoZW1lLmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvbWFjL1dlYklucHV0RXZlbnRGYWN0b3J5LmgnLAogICAgICAgICAgICAgICAgICdwdWJs
aWMvbWFjL1dlYlNhbmRib3hTdXBwb3J0LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvbWFj
L1dlYlNjcmVlbkluZm9GYWN0b3J5LmgnLApAQCAtNDI0LDExICs0MjQsMTIgQEAKICAgICAgICAg
ICAgICAgICAnc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5oJywKICAgICAgICAgICAgICAg
ICAnc3JjL1ByZXJlbmRlcmVyQ2xpZW50SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1By
ZXJlbmRlcmVyQ2xpZW50SW1wbC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvYW5kcm9pZC9X
ZWJGb250SW5mby5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvYW5kcm9pZC9XZWJJbnB1dEV2
ZW50RmFjdG9yeS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvbGludXgvV2ViRm9udEluZm8u
Y3BwJywKLSAgICAgICAgICAgICAgICAnc3JjL2xpbnV4L1dlYkZvbnRSZW5kZXJpbmcuY3BwJywK
LSAgICAgICAgICAgICAgICAnc3JjL2xpbnV4L1dlYkZvbnRSZW5kZXJTdHlsZS5jcHAnLAotICAg
ICAgICAgICAgICAgICdzcmMvbGludXgvV2ViUmVuZGVyVGhlbWUuY3BwJywKKyAgICAgICAgICAg
ICAgICAnc3JjL2xpbnV4aXNoL1dlYkZvbnRSZW5kZXJpbmcuY3BwJywKKyAgICAgICAgICAgICAg
ICAnc3JjL2xpbnV4aXNoL1dlYkZvbnRSZW5kZXJTdHlsZS5jcHAnLAorICAgICAgICAgICAgICAg
ICdzcmMvbGludXhpc2gvV2ViUmVuZGVyVGhlbWUuY3BwJywKICAgICAgICAgICAgICAgICAnc3Jj
L3gxMS9XZWJTY3JlZW5JbmZvRmFjdG9yeS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvbWFj
L1dlYklucHV0RXZlbnRGYWN0b3J5Lm1tJywKICAgICAgICAgICAgICAgICAnc3JjL21hYy9XZWJT
Y3JlZW5JbmZvRmFjdG9yeS5tbScsCkBAIC03NzQsMTEgKzc3NSwxMiBAQAogICAgICAgICAgICAg
ICAgICAgICAnaW5jbHVkZV9kaXJzJzogWwogICAgICAgICAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy94MTEnLAogICAgICAgICAgICAgICAgICAgICAgICAgJ3B1YmxpYy9saW51eCcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAncHVibGljL2xpbnV4aXNoJywKICAgICAgICAgICAgICAgICAgICAg
XSwKICAgICAgICAgICAgICAgICB9LCB7ICMgZWxzZTogdXNlX3gxMSAhPSAxCiAgICAgICAgICAg
ICAgICAgICAgICdzb3VyY2VzLyc6IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICMgRklYTUU6
IFB1dCB0aGlzIHJ1bGUgaW4gQ2hyb21pdW0ncyBidWlsZC9maWxlbmFtZV9ydWxlcy5neXBpLgog
ICAgICAgICAgICAgICAgICAgICAgICAgWydleGNsdWRlJywgJy94MTEvJ10sCi0gICAgICAgICAg
ICAgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAnL2xpbnV4LyddLAogICAgICAgICAgICAgICAgICAg
ICBdLAogICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgICAgIFsndG9vbGtpdF91c2Vz
X2d0ayA9PSAxJywgewpAQCAtNzg4LDE4ICs3OTAsMTEgQEAKICAgICAgICAgICAgICAgICAgICAg
J2luY2x1ZGVfZGlycyc6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICdwdWJsaWMvZ3RrJywK
ICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LCB7ICMgZWxzZTogdG9v
bGtpdF91c2VzX2d0ayAhPSAxCi0gICAgICAgICAgICAgICAgICAgICdzb3VyY2VzLyc6IFsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIFsnZXhjbHVkZScsICcvZ3RrLyddLAotICAgICAgICAgICAg
ICAgICAgICBdLAogICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgICAgIFsnT1M9PSJh
bmRyb2lkIicsIHsKICAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6IFsKICAgICAg
ICAgICAgICAgICAgICAgICAgICdwdWJsaWMvYW5kcm9pZCcsCi0gICAgICAgICAgICAgICAgICAg
IF0sCi0gICAgICAgICAgICAgICAgfSwgeyAjIGVsc2U6IE9TIT0iYW5kcm9pZCIKLSAgICAgICAg
ICAgICAgICAgICAgJ3NvdXJjZXMvJzogWwotICAgICAgICAgICAgICAgICAgICAgICAgWydleGNs
dWRlJywgJy9hbmRyb2lkLyddLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3B1YmxpYy9saW51
eGlzaCcsCiAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgfV0sCiAgICAg
ICAgICAgICAgICAgIyBUT0RPOiB3ZSBleGNsdWRlIENHLmNwcCBvbiBib3RoIHNpZGVzIG9mIHRo
ZSBiZWxvdyBjb25kaXRpb25hbC4gTW92ZSBlbHNld2hlcmU/CkBAIC04MTIsNyArODA3LDYgQEAK
ICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICB9LCB7ICMgZWxzZTogT1Mh
PSJtYWMiCiAgICAgICAgICAgICAgICAgICAgICdzb3VyY2VzLyc6IFsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIFsnZXhjbHVkZScsICcvbWFjLyddLAogICAgICAgICAgICAgICAgICAgICAgICAg
WydleGNsdWRlJywgJ0NHXFwuY3BwJCddLAogICAgICAgICAgICAgICAgICAgICBdLAogICAgICAg
ICAgICAgICAgIH1dLApAQCAtODIxLDcgKzgxNSw2IEBACiAgICAgICAgICAgICAgICAgICAgICAg
ICAncHVibGljL3dpbicsCiAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAg
fSwgeyAjIGVsc2U6IE9TIT0id2luIgotICAgICAgICAgICAgICAgICAgICAnc291cmNlcy8nOiBb
WydleGNsdWRlJywgJy93aW4vJ11dLAogICAgICAgICAgICAgICAgICAgICAndmFyaWFibGVzJzog
ewogICAgICAgICAgICAgICAgICAgICAgICAgIyBGSVhNRTogVHVybiBvbiB3YXJuaW5ncyBvbiBX
aW5kb3dzLgogICAgICAgICAgICAgICAgICAgICAgICAgJ2Nocm9taXVtX2NvZGUnOiAxLApJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvYW5kcm9pZC9XZWJTYW5kYm94U3VwcG9y
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2FuZHJvaWQv
V2ViU2FuZGJveFN1cHBvcnQuaAkocmV2aXNpb24gMTIwMDE3KQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvYW5kcm9pZC9XZWJTYW5kYm94U3VwcG9ydC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw3ICsyNyw1IEBACiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
LQotI2lmbmRlZiBXRUJLSVRfTUlHUkFURV9IRUFERVJTX1RPX1BMQVRGT1JNCi0jaW5jbHVkZSAi
Li4vcGxhdGZvcm0vYW5kcm9pZC9XZWJTYW5kYm94U3VwcG9ydC5oIgotI2VuZGlmCisvLyBGSVhN
RTogUmVtb3ZlIG9uY2UgaHR0cDovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzEwNTQ0MTAzLyBp
cyBsYW5kZWQuCisjaW5jbHVkZSAiLi4vbGludXhpc2gvV2ViU2FuZGJveFN1cHBvcnQuaCIKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2d0ay9XZWJGb250SW5mby5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2d0ay9XZWJGb250SW5mby5o
CShyZXZpc2lvbiAxMjAwMTcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9ndGsv
V2ViRm9udEluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMSwzMiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1
dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIFRoaXMgZmlsZSBj
YW4gYmUgZGVsZXRlZCBvbmNlIGh0dHA6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy84MDU0MDI1
LwotLy8gZ2V0cyBjb21taXR0ZWQgaW4gQ2hyb21pdW0uCi0jaW5jbHVkZSAiLi4vbGludXgvV2Vi
Rm9udEluZm8uaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4L1dl
YkZvbnRJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
bGludXgvV2ViRm9udEluZm8uaAkocmV2aXNpb24gMTIwMDE3KQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvbGludXgvV2ViRm9udEluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NTIgKzI3LDUgQEAKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwotCi0jaWZu
ZGVmIFdlYkZvbnRJbmZvX2gKLSNkZWZpbmUgV2ViRm9udEluZm9faAotCi0jaW5jbHVkZSAiLi4v
bGludXgvV2ViRm9udFJlbmRlclN0eWxlLmgiCi0jaW5jbHVkZSAiLi4vcGxhdGZvcm0vV2ViQ1N0
cmluZy5oIgotI2luY2x1ZGUgIi4uL3BsYXRmb3JtL2xpbnV4L1dlYkZvbnRGYW1pbHkuaCIKLQot
I2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLQotY2xhc3MgV2ViRm9udEluZm8gewotcHVibGljOgotICAgIC8vIFNldCBhIGdsb2Jh
bCBwcmVmZXJlbmNlIGRlc2NyaWJpbmcgd2hldGhlciByZW5kZXJTdHlsZUZvclN0cmlrZSgpIHNo
b3VsZAotICAgIC8vIGVuYWJsZSBzdWJwaXhlbCBwb3NpdGlvbmluZyBvciBub3QuIEZvbnRDb25m
aWcgZG9lc24ndCBjdXJyZW50bHkgcHJvdmlkZQotICAgIC8vIGEgcGFyYW1ldGVyIGZvciBjb250
cm9sbGluZyB0aGlzLgotICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIHZvaWQgc2V0U3VicGl4ZWxQ
b3NpdGlvbmluZyhib29sKTsKLQotICAgIC8vIFJldHVybiBhIGZvbnQgZmFtaWx5IHdoaWNoIHBy
b3ZpZGVzIGdseXBocyBmb3IgdGhlIFVuaWNvZGUgY29kZSBwb2ludHMKLSAgICAvLyBzcGVjaWZp
ZWQgYnkgfHV0ZjE2fAotICAgIC8vICAgY2hhcmFjdGVyczogYSBuYXRpdmUtZW5kaWFuIFVURjE2
IHN0cmluZwotICAgIC8vICAgbnVtQ2hhcmFjdGVyczogdGhlIG51bWJlciBvZiAxNi1iaXQgd29y
ZHMgaW4gfHV0ZjE2fAotICAgIC8vICAgcHJlZmVycmVkTG9jYWxlOiBwcmVmZXJyZWQgbG9jYWxl
IGlkZW50aWZpZXIgZm9yIHRoZSB8Y2hhcmFjdGVyc3wKLSAgICAvLyAgICAgICAgICAgICAgICAg
ICAgKGUuZy4gImVuIiwgImphIiwgInpoLUNOIikKLSAgICAvLwotICAgIC8vIFJldHVybnM6IHRo
ZSBmb250IGZhbWlseSBvciBhbiBlbXB0eSBzdHJpbmcgaWYgdGhlIHJlcXVlc3QgY291bGQgbm90
IGJlCi0gICAgLy8gc2F0aXNmaWVkLgotICAgIC8vIFJldHVybnM6IHRoZSBmb250IGZhbWlseSBp
bnN0YW5jZS4gVGhlIGluc3RhbmNlIGhhcyBhbiBlbXB0eSBmb250IG5hbWUgaWYgdGhlIHJlcXVl
c3QgY291bGQgbm90IGJlIHNhdGlzZmllZC4KLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lk
IGZhbWlseUZvckNoYXJzKGNvbnN0IFdlYlVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbnVtQ2hh
cmFjdGVycywgY29uc3QgY2hhciogcHJlZmVycmVkTG9jYWxlLCBXZWJGb250RmFtaWx5Kik7Ci0K
LSAgICAvLyBGaWxsIG91dCB0aGUgZ2l2ZW4gV2ViRm9udFJlbmRlclN0eWxlIHdpdGggdGhlIHVz
ZXIncyBwcmVmZXJlbmNlcyBmb3IKLSAgICAvLyByZW5kZXJpbmcgdGhlIGdpdmVuIGZvbnQgYXQg
dGhlIGdpdmVuIHNpemUuCi0gICAgLy8gICBmYW1pbHk6IGkuZS4gIlRpbWVzIE5ldyBSb21hbiIK
LSAgICAvLyAgIHNpemVBbmRTdHlsZToKLSAgICAvLyAgICAgIDMzMjIyMjIyMjIyMjExMTExMTEx
MTEKLSAgICAvLyAgICAgIDEwOTg3NjU0MzIxMDk4NzY1NDMyMTA5ODc2NTQzMjEwCi0gICAgLy8g
ICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgICAvLyAgICAgfC4uLi4u
Li4uLi4uLi4uU2l6ZS4uLi4uLi4uLi4uLklCfAotICAgIC8vICAgICArLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgLy8gICAgIEk6IGl0YWxpYyBmbGFnCi0gICAgLy8gICAg
IEI6IGJvbGQgZmxhZwotICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIHZvaWQgcmVuZGVyU3R5bGVG
b3JTdHJpa2UoY29uc3QgY2hhciogZmFtaWx5LCBpbnQgc2l6ZUFuZFN0eWxlLCBXZWJGb250UmVu
ZGVyU3R5bGUqIHJlc3VsdCk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlm
CisvLyBGSVhNRTogUmVtb3ZlIG9uY2UgaHR0cDovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzEw
NTQ0MTAzLyBpcyBsYW5kZWQuCisjaW5jbHVkZSAiLi4vbGludXhpc2gvV2ViRm9udEluZm8uaCIK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYkZvbnRSZW5kZXJT
dHlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4
L1dlYkZvbnRSZW5kZXJTdHlsZS5oCShyZXZpc2lvbiAxMjAwMTcpCisrKyBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJGb250UmVuZGVyU3R5bGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMjcsMzggKzI3LDUgQEAKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwotCi0jaWZuZGVmIFdlYkZvbnRSZW5kZXJTdHlsZV9oCi0jZGVmaW5lIFdlYkZvbnRSZW5kZXJT
dHlsZV9oCi0KLSNpbmNsdWRlICIuLi9wbGF0Zm9ybS9XZWJDb21tb24uaCIKLQotbmFtZXNwYWNl
IFdlYkNvcmUgeyBzdHJ1Y3QgRm9udFJlbmRlclN0eWxlOyB9Ci0KLW5hbWVzcGFjZSBXZWJLaXQg
ewotCi1zdHJ1Y3QgV0VCS0lUX0VYUE9SVCBXZWJGb250UmVuZGVyU3R5bGUgewotICAgIC8vIEVh
Y2ggb2YgdGhlIHVzZSogbWVtYmVycyBiZWxvdyBjYW4gdGFrZSBvbmUgb2YgdGhyZWUgdmFsdWVz
OgotICAgIC8vICAgMDogb2ZmCi0gICAgLy8gICAxOiBvbgotICAgIC8vICAgMjogbm8gcHJlZmVy
ZW5jZSBleHByZXNzZWQKLSAgICBjaGFyIHVzZUJpdG1hcHM7IC8vIHVzZSBlbWJlZGRlZCBiaXRt
YXAgc3RyaWtlIGlmIHBvc3NpYmxlCi0gICAgY2hhciB1c2VBdXRvSGludDsgLy8gdXNlICdhdXRv
JyBoaW50aW5nIChGcmVlVHlwZSBzcGVjaWZpYykKLSAgICBjaGFyIHVzZUhpbnRpbmc7IC8vIGhp
bnQgZ2x5cGhzIHRvIHRoZSBwaXhlbCBncmlkCi0gICAgY2hhciBoaW50U3R5bGU7IC8vIGxldmVs
IG9mIGhpbnRpbmcsIDAuLjMKLSAgICBjaGFyIHVzZUFudGlBbGlhczsgLy8gYW50aWFsaWFzIGds
eXBoIHNoYXBlcwotICAgIGNoYXIgdXNlU3VicGl4ZWw7IC8vIERFUFJFQ0FURUQ6IHJlcGxhY2Vk
IGJ5IHVzZVN1YnBpeGVsUmVuZGVyaW5nCi0gICAgY2hhciB1c2VTdWJwaXhlbFJlbmRlcmluZzsg
Ly8gdXNlIHN1YnBpeGVsIHJlbmRlcmluZyAocGFydGlhbGx5LWZpbGxlZCBwaXhlbHMpCi0gICAg
Y2hhciB1c2VTdWJwaXhlbFBvc2l0aW9uaW5nOyAvLyB1c2Ugc3VicGl4ZWwgcG9zaXRpb25pbmcg
KGZyYWN0aW9uYWwgWCBwb3NpdGlvbnMgZm9yIGdseXBocykKLQotI2lmZGVmIFdFQktJVF9JTVBM
RU1FTlRBVElPTgotICAgIC8vIFRyYW5zbGF0ZXMgdGhlIG1lbWJlcnMgb2YgdGhpcyBzdHJ1Y3Qg
dG8gYSBGb250UmVuZGVyU3R5bGUKLSAgICB2b2lkIHRvRm9udFJlbmRlclN0eWxlKFdlYkNvcmU6
OkZvbnRSZW5kZXJTdHlsZSopOwotI2VuZGlmCi0KLSAgICB2b2lkIHNldERlZmF1bHRzKCk7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYkZvbnRSZW5kZXJTdHls
ZV9oCisvLyBGSVhNRTogUmVtb3ZlIG9uY2UgaHR0cDovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3Jn
LzEwNTQ0MTAzLyBpcyBsYW5kZWQuCisjaW5jbHVkZSAiLi4vbGludXhpc2gvV2ViRm9udFJlbmRl
clN0eWxlLmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJG
b250UmVuZGVyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvbGludXgvV2ViRm9udFJlbmRlcmluZy5oCShyZXZpc2lvbiAxMjAwMTcpCisrKyBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJGb250UmVuZGVyaW5nLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDI5ICsyNyw1IEBACiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KLQotI2lmbmRlZiBXZWJGb250UmVuZGVyaW5nX2gKLSNkZWZpbmUgV2ViRm9udFJlbmRl
cmluZ19oCi0KLSNpbmNsdWRlICIuLi9wbGF0Zm9ybS9XZWJDb21tb24uaCIKLSNpbmNsdWRlIDxT
a0ZvbnRIb3N0Lmg+Ci0jaW5jbHVkZSA8U2tQYWludC5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotY2xhc3MgV2ViRm9udFJlbmRlcmluZyB7Ci1wdWJsaWM6Ci0gICAgLy8gU2V0IGdsb2JhbCBm
b250IHJlbmRlcmVyaW5nIHByZWZlcmVuY2VzLgotCi0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMg
dm9pZCBzZXRIaW50aW5nKFNrUGFpbnQ6OkhpbnRpbmcpOwotICAgIFdFQktJVF9FWFBPUlQgc3Rh
dGljIHZvaWQgc2V0QW50aUFsaWFzKGJvb2wpOwotICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIHZv
aWQgc2V0U3VicGl4ZWxHbHlwaHMoYm9vbCk7IC8vIERFUFJFQ0FURUQ6IHVzZSBzZXRTdWJwaXhl
bFJlbmRlcmluZyBpbnN0ZWFkCi0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRTdWJw
aXhlbFJlbmRlcmluZyhib29sKTsKLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lkIHNldFN1
YnBpeGVsUG9zaXRpb25pbmcoYm9vbCk7Ci0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBz
ZXRMQ0RPcmRlcihTa0ZvbnRIb3N0OjpMQ0RPcmRlcik7Ci0gICAgV0VCS0lUX0VYUE9SVCBzdGF0
aWMgdm9pZCBzZXRMQ0RPcmllbnRhdGlvbihTa0ZvbnRIb3N0OjpMQ0RPcmllbnRhdGlvbik7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCisvLyBGSVhNRTogUmVtb3ZlIG9u
Y2UgaHR0cDovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzEwNTQ0MTAzLyBpcyBsYW5kZWQuCisj
aW5jbHVkZSAiLi4vbGludXhpc2gvV2ViRm9udFJlbmRlcmluZy5oIgpJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViUmVuZGVyVGhlbWUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJSZW5kZXJUaGVtZS5oCShy
ZXZpc2lvbiAxMjAwMTcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9X
ZWJSZW5kZXJUaGVtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxNyArMjcsNSBAQAogICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCi0KLSNpZm5kZWYgV2ViUmVuZGVyVGhlbWVf
aAotI2RlZmluZSBXZWJSZW5kZXJUaGVtZV9oCi0KLSNpbmNsdWRlICIuLi9wbGF0Zm9ybS9XZWJD
b21tb24uaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLS8vIFNldCBjYXJldCBibGluayBpbnRl
cnZhbCBmb3IgdGV4dCBpbnB1dCBhcmVhcy4KLVdFQktJVF9FWFBPUlQgdm9pZCBzZXRDYXJldEJs
aW5rSW50ZXJ2YWwoZG91YmxlKTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgor
Ly8gRklYTUU6IFJlbW92ZSBvbmNlIGh0dHA6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8xMDU0
NDEwMy8gaXMgbGFuZGVkLgorI2luY2x1ZGUgIi4uL2xpbnV4aXNoL1dlYlJlbmRlclRoZW1lLmgi
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJTYW5kYm94U3Vw
cG9ydC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4
L1dlYlNhbmRib3hTdXBwb3J0LmgJKHJldmlzaW9uIDEyMDAxNykKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL2xpbnV4L1dlYlNhbmRib3hTdXBwb3J0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDcgKzI3LDUgQEAKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwot
Ci0jaWZuZGVmIFdFQktJVF9NSUdSQVRFX0hFQURFUlNfVE9fUExBVEZPUk0KLSNpbmNsdWRlICIu
Li9wbGF0Zm9ybS9saW51eC9XZWJTYW5kYm94U3VwcG9ydC5oIgotI2VuZGlmCisvLyBGSVhNRTog
UmVtb3ZlIG9uY2UgaHR0cDovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzEwNTQ0MTAzLyBpcyBs
YW5kZWQuCisjaW5jbHVkZSAiLi4vbGludXhpc2gvV2ViU2FuZGJveFN1cHBvcnQuaCIKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4aXNoL1dlYkZvbnRJbmZvLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXhpc2gvV2ViRm9u
dEluZm8uaAkocmV2aXNpb24gMTIwMDA2KQkoZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9saW51eC9XZWJGb250SW5mby5oOjEyMDAwNikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL2xpbnV4aXNoL1dlYkZvbnRJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgV2ViRm9udEluZm9faAorI2RlZmluZSBXZWJGb250SW5mb19oCisKKyNp
bmNsdWRlICIuLi9saW51eC9XZWJGb250UmVuZGVyU3R5bGUuaCIKKyNpbmNsdWRlICIuLi9wbGF0
Zm9ybS9XZWJDU3RyaW5nLmgiCisjaW5jbHVkZSAiLi4vcGxhdGZvcm0vbGludXgvV2ViRm9udEZh
bWlseS5oIgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJGb250SW5mbyB7CitwdWJsaWM6CisgICAgLy8g
U2V0IGEgZ2xvYmFsIHByZWZlcmVuY2UgZGVzY3JpYmluZyB3aGV0aGVyIHJlbmRlclN0eWxlRm9y
U3RyaWtlKCkgc2hvdWxkCisgICAgLy8gZW5hYmxlIHN1YnBpeGVsIHBvc2l0aW9uaW5nIG9yIG5v
dC4gRm9udENvbmZpZyBkb2Vzbid0IGN1cnJlbnRseSBwcm92aWRlCisgICAgLy8gYSBwYXJhbWV0
ZXIgZm9yIGNvbnRyb2xsaW5nIHRoaXMuCisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBz
ZXRTdWJwaXhlbFBvc2l0aW9uaW5nKGJvb2wpOworCisgICAgLy8gUmV0dXJuIGEgZm9udCBmYW1p
bHkgd2hpY2ggcHJvdmlkZXMgZ2x5cGhzIGZvciB0aGUgVW5pY29kZSBjb2RlIHBvaW50cworICAg
IC8vIHNwZWNpZmllZCBieSB8dXRmMTZ8CisgICAgLy8gICBjaGFyYWN0ZXJzOiBhIG5hdGl2ZS1l
bmRpYW4gVVRGMTYgc3RyaW5nCisgICAgLy8gICBudW1DaGFyYWN0ZXJzOiB0aGUgbnVtYmVyIG9m
IDE2LWJpdCB3b3JkcyBpbiB8dXRmMTZ8CisgICAgLy8gICBwcmVmZXJyZWRMb2NhbGU6IHByZWZl
cnJlZCBsb2NhbGUgaWRlbnRpZmllciBmb3IgdGhlIHxjaGFyYWN0ZXJzfAorICAgIC8vICAgICAg
ICAgICAgICAgICAgICAoZS5nLiAiZW4iLCAiamEiLCAiemgtQ04iKQorICAgIC8vCisgICAgLy8g
UmV0dXJuczogdGhlIGZvbnQgZmFtaWx5IG9yIGFuIGVtcHR5IHN0cmluZyBpZiB0aGUgcmVxdWVz
dCBjb3VsZCBub3QgYmUKKyAgICAvLyBzYXRpc2ZpZWQuCisgICAgLy8gUmV0dXJuczogdGhlIGZv
bnQgZmFtaWx5IGluc3RhbmNlLiBUaGUgaW5zdGFuY2UgaGFzIGFuIGVtcHR5IGZvbnQgbmFtZSBp
ZiB0aGUgcmVxdWVzdCBjb3VsZCBub3QgYmUgc2F0aXNmaWVkLgorICAgIFdFQktJVF9FWFBPUlQg
c3RhdGljIHZvaWQgZmFtaWx5Rm9yQ2hhcnMoY29uc3QgV2ViVUNoYXIqIGNoYXJhY3RlcnMsIHNp
emVfdCBudW1DaGFyYWN0ZXJzLCBjb25zdCBjaGFyKiBwcmVmZXJyZWRMb2NhbGUsIFdlYkZvbnRG
YW1pbHkqKTsKKworICAgIC8vIEZpbGwgb3V0IHRoZSBnaXZlbiBXZWJGb250UmVuZGVyU3R5bGUg
d2l0aCB0aGUgdXNlcidzIHByZWZlcmVuY2VzIGZvcgorICAgIC8vIHJlbmRlcmluZyB0aGUgZ2l2
ZW4gZm9udCBhdCB0aGUgZ2l2ZW4gc2l6ZS4KKyAgICAvLyAgIGZhbWlseTogaS5lLiAiVGltZXMg
TmV3IFJvbWFuIgorICAgIC8vICAgc2l6ZUFuZFN0eWxlOgorICAgIC8vICAgICAgMzMyMjIyMjIy
MjIyMTExMTExMTExMQorICAgIC8vICAgICAgMTA5ODc2NTQzMjEwOTg3NjU0MzIxMDk4NzY1NDMy
MTAKKyAgICAvLyAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgIC8v
ICAgICB8Li4uLi4uLi4uLi4uLi5TaXplLi4uLi4uLi4uLi4uSUJ8CisgICAgLy8gICAgICstLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAvLyAgICAgSTogaXRhbGljIGZsYWcK
KyAgICAvLyAgICAgQjogYm9sZCBmbGFnCisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBy
ZW5kZXJTdHlsZUZvclN0cmlrZShjb25zdCBjaGFyKiBmYW1pbHksIGludCBzaXplQW5kU3R5bGUs
IFdlYkZvbnRSZW5kZXJTdHlsZSogcmVzdWx0KTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4aXNo
L1dlYkZvbnRJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvbGludXhpc2gvV2ViRm9udEluZm8uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL2xpbnV4aXNoL1dlYkZvbnRJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDkgKzMxLDkgQEAKICNpZm5kZWYgV2ViRm9udEluZm9faAogI2RlZmluZSBXZWJGb250SW5m
b19oCiAKLSNpbmNsdWRlICIuLi9saW51eC9XZWJGb250UmVuZGVyU3R5bGUuaCIKKyNpbmNsdWRl
ICIuLi9saW51eGlzaC9XZWJGb250UmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICIuLi9wbGF0Zm9y
bS9XZWJDU3RyaW5nLmgiCi0jaW5jbHVkZSAiLi4vcGxhdGZvcm0vbGludXgvV2ViRm9udEZhbWls
eS5oIgorI2luY2x1ZGUgIi4uL3BsYXRmb3JtL2xpbnV4aXNoL1dlYkZvbnRGYW1pbHkuaCIKIAog
I2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgpJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXhpc2gvV2ViRm9udFJlbmRlclN0eWxlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXhpc2gvV2ViRm9udFJl
bmRlclN0eWxlLmgJKHJldmlzaW9uIDEyMDAwNikJKGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvbGludXgvV2ViRm9udFJlbmRlclN0eWxlLmg6MTIwMDA2KQorKysgU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXhpc2gvV2ViRm9udFJlbmRlclN0eWxlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRm9udFJlbmRlclN0eWxlX2gKKyNk
ZWZpbmUgV2ViRm9udFJlbmRlclN0eWxlX2gKKworI2luY2x1ZGUgIi4uL3BsYXRmb3JtL1dlYkNv
bW1vbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7IHN0cnVjdCBGb250UmVuZGVyU3R5bGU7IH0K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBXRUJLSVRfRVhQT1JUIFdlYkZvbnRSZW5k
ZXJTdHlsZSB7CisgICAgLy8gRWFjaCBvZiB0aGUgdXNlKiBtZW1iZXJzIGJlbG93IGNhbiB0YWtl
IG9uZSBvZiB0aHJlZSB2YWx1ZXM6CisgICAgLy8gICAwOiBvZmYKKyAgICAvLyAgIDE6IG9uCisg
ICAgLy8gICAyOiBubyBwcmVmZXJlbmNlIGV4cHJlc3NlZAorICAgIGNoYXIgdXNlQml0bWFwczsg
Ly8gdXNlIGVtYmVkZGVkIGJpdG1hcCBzdHJpa2UgaWYgcG9zc2libGUKKyAgICBjaGFyIHVzZUF1
dG9IaW50OyAvLyB1c2UgJ2F1dG8nIGhpbnRpbmcgKEZyZWVUeXBlIHNwZWNpZmljKQorICAgIGNo
YXIgdXNlSGludGluZzsgLy8gaGludCBnbHlwaHMgdG8gdGhlIHBpeGVsIGdyaWQKKyAgICBjaGFy
IGhpbnRTdHlsZTsgLy8gbGV2ZWwgb2YgaGludGluZywgMC4uMworICAgIGNoYXIgdXNlQW50aUFs
aWFzOyAvLyBhbnRpYWxpYXMgZ2x5cGggc2hhcGVzCisgICAgY2hhciB1c2VTdWJwaXhlbDsgLy8g
REVQUkVDQVRFRDogcmVwbGFjZWQgYnkgdXNlU3VicGl4ZWxSZW5kZXJpbmcKKyAgICBjaGFyIHVz
ZVN1YnBpeGVsUmVuZGVyaW5nOyAvLyB1c2Ugc3VicGl4ZWwgcmVuZGVyaW5nIChwYXJ0aWFsbHkt
ZmlsbGVkIHBpeGVscykKKyAgICBjaGFyIHVzZVN1YnBpeGVsUG9zaXRpb25pbmc7IC8vIHVzZSBz
dWJwaXhlbCBwb3NpdGlvbmluZyAoZnJhY3Rpb25hbCBYIHBvc2l0aW9ucyBmb3IgZ2x5cGhzKQor
CisjaWZkZWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgLy8gVHJhbnNsYXRlcyB0aGUgbWVt
YmVycyBvZiB0aGlzIHN0cnVjdCB0byBhIEZvbnRSZW5kZXJTdHlsZQorICAgIHZvaWQgdG9Gb250
UmVuZGVyU3R5bGUoV2ViQ29yZTo6Rm9udFJlbmRlclN0eWxlKik7CisjZW5kaWYKKworICAgIHZv
aWQgc2V0RGVmYXVsdHMoKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gV2ViRm9udFJlbmRlclN0eWxlX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL2xpbnV4aXNoL1dlYkZvbnRSZW5kZXJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9saW51eGlzaC9XZWJGb250UmVuZGVyaW5nLmgJKHJldmlzaW9u
IDEyMDAwNikJKGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViRm9u
dFJlbmRlcmluZy5oOjEyMDAwNikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xp
bnV4aXNoL1dlYkZvbnRSZW5kZXJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBXZWJGb250UmVuZGVyaW5nX2gKKyNkZWZpbmUgV2ViRm9udFJlbmRlcmluZ19oCisK
KyNpbmNsdWRlICIuLi9wbGF0Zm9ybS9XZWJDb21tb24uaCIKKyNpbmNsdWRlIDxTa0ZvbnRIb3N0
Lmg+CisjaW5jbHVkZSA8U2tQYWludC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
V2ViRm9udFJlbmRlcmluZyB7CitwdWJsaWM6CisgICAgLy8gU2V0IGdsb2JhbCBmb250IHJlbmRl
cmVyaW5nIHByZWZlcmVuY2VzLgorCisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRI
aW50aW5nKFNrUGFpbnQ6OkhpbnRpbmcpOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIHZvaWQg
c2V0QW50aUFsaWFzKGJvb2wpOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIHZvaWQgc2V0U3Vi
cGl4ZWxHbHlwaHMoYm9vbCk7IC8vIERFUFJFQ0FURUQ6IHVzZSBzZXRTdWJwaXhlbFJlbmRlcmlu
ZyBpbnN0ZWFkCisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRTdWJwaXhlbFJlbmRl
cmluZyhib29sKTsKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lkIHNldFN1YnBpeGVsUG9z
aXRpb25pbmcoYm9vbCk7CisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRMQ0RPcmRl
cihTa0ZvbnRIb3N0OjpMQ0RPcmRlcik7CisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBz
ZXRMQ0RPcmllbnRhdGlvbihTa0ZvbnRIb3N0OjpMQ0RPcmllbnRhdGlvbik7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9saW51eGlzaC9XZWJSZW5kZXJUaGVtZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4aXNoL1dlYlJlbmRlclRoZW1lLmgJKHJldmlzaW9u
IDEyMDAwNikJKGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViUmVu
ZGVyVGhlbWUuaDoxMjAwMDYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51
eGlzaC9XZWJSZW5kZXJUaGVtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSm9lbCBTdGFubGV5LiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgV2ViUmVuZGVyVGhlbWVfaAorI2RlZmluZSBXZWJSZW5kZXJUaGVtZV9oCisKKyNpbmNs
dWRlICIuLi9wbGF0Zm9ybS9XZWJDb21tb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8v
IFNldCBjYXJldCBibGluayBpbnRlcnZhbCBmb3IgdGV4dCBpbnB1dCBhcmVhcy4KK1dFQktJVF9F
WFBPUlQgdm9pZCBzZXRDYXJldEJsaW5rSW50ZXJ2YWwoZG91YmxlKTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
bGludXhpc2gvV2ViU2FuZGJveFN1cHBvcnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9saW51eGlzaC9XZWJTYW5kYm94U3VwcG9ydC5oCShyZXZpc2lvbiAx
MjAwMDYpCShmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYlNhbmRi
b3hTdXBwb3J0Lmg6MTIwMDA2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGlu
dXhpc2gvV2ViU2FuZGJveFN1cHBvcnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBXRUJLSVRfTUlHUkFURV9IRUFERVJTX1RPX1BMQVRGT1JNCisjaW5jbHVkZSAiLi4v
cGxhdGZvcm0vbGludXgvV2ViU2FuZGJveFN1cHBvcnQuaCIKKyNlbmRpZgpJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXhpc2gvV2ViU2FuZGJveFN1cHBvcnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eGlzaC9XZWJTYW5k
Ym94U3VwcG9ydC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvbGludXhpc2gvV2ViU2FuZGJveFN1cHBvcnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNSAr
MjksNSBAQAogICovCiAKICNpZm5kZWYgV0VCS0lUX01JR1JBVEVfSEVBREVSU19UT19QTEFURk9S
TQotI2luY2x1ZGUgIi4uL3BsYXRmb3JtL2xpbnV4L1dlYlNhbmRib3hTdXBwb3J0LmgiCisjaW5j
bHVkZSAiLi4vcGxhdGZvcm0vbGludXhpc2gvV2ViU2FuZGJveFN1cHBvcnQuaCIKICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vYW5kcm9pZC9XZWJT
YW5kYm94U3VwcG9ydC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL3BsYXRmb3JtL2FuZHJvaWQvV2ViU2FuZGJveFN1cHBvcnQuaAkocmV2aXNpb24gMTIwMDE3
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vYW5kcm9pZC9XZWJT
YW5kYm94U3VwcG9ydC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yNyw1ICsyNyw1IEBACiAgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KLQotI2luY2x1ZGUgIi4uLy4uLy4uLy4uLy4uL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9hbmRyb2lkL1dlYlNhbmRib3hTdXBwb3J0LmgiCisvLyBG
SVhNRTogUmVtb3ZlIG9uY2UgaHR0cDovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzEwNTQ0MTAz
LyBpcyBsYW5kZWQuCisjaW5jbHVkZSAiLi4vbGludXhpc2gvV2ViU2FuZGJveFN1cHBvcnQuaCIK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL2FuZHJvaWQvV2Vi
VGhlbWVFbmdpbmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9wbGF0Zm9ybS9hbmRyb2lkL1dlYlRoZW1lRW5naW5lLmgJKHJldmlzaW9uIDEyMDAxNykKKysr
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL2FuZHJvaWQvV2ViVGhlbWVF
bmdpbmUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjcsNSArMjcsNSBAQAogICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCi0KLSNpbmNsdWRlICIuLi8uLi8uLi8uLi8uLi9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvYW5kcm9pZC9XZWJUaGVtZUVuZ2luZS5oIgorLy8gRklYTUU6IFJlbW92
ZSBvbmNlIGh0dHA6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8xMDU0NDEwMy8gaXMgbGFuZGVk
LgorI2luY2x1ZGUgIi4uL2xpbnV4aXNoL1dlYlRoZW1lRW5naW5lLmgiCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9saW51eC9XZWJGb250RmFtaWx5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vbGludXgv
V2ViRm9udEZhbWlseS5oCShyZXZpc2lvbiAxMjAwMTcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9wbGF0Zm9ybS9saW51eC9XZWJGb250RmFtaWx5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDUgKzI3LDUgQEAKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwot
Ci0jaW5jbHVkZSAiLi4vLi4vLi4vLi4vLi4vUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL2xpbnV4
L1dlYkZvbnRGYW1pbHkuaCIKKy8vIEZJWE1FOiBSZW1vdmUgb25jZSBodHRwOi8vY29kZXJldmll
dy5jaHJvbWl1bS5vcmcvMTA1NDQxMDMvIGlzIGxhbmRlZC4KKyNpbmNsdWRlICIuLi9saW51eGlz
aC9XZWJGb250RmFtaWx5LmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9w
bGF0Zm9ybS9saW51eC9XZWJTYW5kYm94U3VwcG9ydC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL2xpbnV4L1dlYlNhbmRib3hTdXBwb3J0LmgJ
KHJldmlzaW9uIDEyMDAxNykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRm
b3JtL2xpbnV4L1dlYlNhbmRib3hTdXBwb3J0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDUgKzI3
LDUgQEAKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwotCi0jaW5jbHVkZSAi
Li4vLi4vLi4vLi4vLi4vUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYlNhbmRib3hT
dXBwb3J0LmgiCisvLyBGSVhNRTogUmVtb3ZlIG9uY2UgaHR0cDovL2NvZGVyZXZpZXcuY2hyb21p
dW0ub3JnLzEwNTQ0MTAzLyBpcyBsYW5kZWQuCisjaW5jbHVkZSAiLi4vbGludXhpc2gvV2ViU2Fu
ZGJveFN1cHBvcnQuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRm
b3JtL2xpbnV4L1dlYlRoZW1lRW5naW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vbGludXgvV2ViVGhlbWVFbmdpbmUuaAkocmV2aXNpb24g
MTIwMDE3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vbGludXgv
V2ViVGhlbWVFbmdpbmUuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNSArMjcsNSBAQAogICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCi0KLSNpbmNsdWRlICIuLi8uLi8uLi8uLi8u
Li9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViVGhlbWVFbmdpbmUuaCIKKy8vIEZJ
WE1FOiBSZW1vdmUgb25jZSBodHRwOi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcvMTA1NDQxMDMv
IGlzIGxhbmRlZC4KKyNpbmNsdWRlICIuLi9saW51eGlzaC9XZWJUaGVtZUVuZ2luZS5oIgpJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vbGludXhpc2gvV2ViRm9u
dEZhbWlseS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3Bs
YXRmb3JtL2xpbnV4aXNoL1dlYkZvbnRGYW1pbHkuaAkocmV2aXNpb24gMTIwMDA2KQkoZnJvbSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9saW51eC9XZWJGb250RmFtaWx5
Lmg6MTIwMDA2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vbGlu
dXhpc2gvV2ViRm9udEZhbWlseS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiLi4vLi4vLi4vLi4vLi4vUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYkZv
bnRGYW1pbHkuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3Jt
L2xpbnV4aXNoL1dlYkZvbnRGYW1pbHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9saW51eGlzaC9XZWJGb250RmFtaWx5LmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9saW51eGlzaC9X
ZWJGb250RmFtaWx5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDQgKzI4LDQgQEAKICAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotI2luY2x1ZGUgIi4uLy4uLy4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9saW51eC9XZWJGb250RmFtaWx5LmgiCisjaW5jbHVkZSAiLi4vLi4vLi4vLi4vLi4v
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL2xpbnV4aXNoL1dlYkZvbnRGYW1pbHkuaCIKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL2xpbnV4aXNoL1dlYlNhbmRi
b3hTdXBwb3J0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
cGxhdGZvcm0vbGludXhpc2gvV2ViU2FuZGJveFN1cHBvcnQuaAkocmV2aXNpb24gMTIwMDA2KQko
ZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9saW51eC9XZWJTYW5k
Ym94U3VwcG9ydC5oOjEyMDAwNikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3Bs
YXRmb3JtL2xpbnV4aXNoL1dlYlNhbmRib3hTdXBwb3J0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICIuLi8uLi8uLi8uLi8uLi9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvbGludXgvV2ViU2FuZGJveFN1cHBvcnQuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL3BsYXRmb3JtL2xpbnV4aXNoL1dlYlNhbmRib3hTdXBwb3J0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vbGludXhpc2gvV2Vi
U2FuZGJveFN1cHBvcnQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL3BsYXRmb3JtL2xpbnV4aXNoL1dlYlNhbmRib3hTdXBwb3J0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDQgKzI4LDQgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2luY2x1ZGUgIi4u
Ly4uLy4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJTYW5kYm94U3Vw
cG9ydC5oIgorI2luY2x1ZGUgIi4uLy4uLy4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9saW51eGlzaC9XZWJTYW5kYm94U3VwcG9ydC5oIgpJbmRleDogU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvcGxhdGZvcm0vbGludXhpc2gvV2ViVGhlbWVFbmdpbmUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9saW51eGlzaC9XZWJU
aGVtZUVuZ2luZS5oCShyZXZpc2lvbiAxMjAwMDYpCShmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL3BsYXRmb3JtL2xpbnV4L1dlYlRoZW1lRW5naW5lLmg6MTIwMDA2KQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vbGludXhpc2gvV2ViVGhlbWVFbmdp
bmUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIi4uLy4uLy4uLy4u
Ly4uL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJUaGVtZUVuZ2luZS5oIgpJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vbGludXhpc2gvV2ViVGhl
bWVFbmdpbmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9w
bGF0Zm9ybS9saW51eGlzaC9XZWJUaGVtZUVuZ2luZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vbGludXhpc2gvV2ViVGhlbWVFbmdpbmUu
aAkod29ya2luZyBjb3B5KQpAQCAtMjgsNCArMjgsNCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jaW5jbHVkZSAiLi4vLi4vLi4vLi4vLi4vUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL2xpbnV4
L1dlYlRoZW1lRW5naW5lLmgiCisjaW5jbHVkZSAiLi4vLi4vLi4vLi4vLi4vUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL2xpbnV4aXNoL1dlYlRoZW1lRW5naW5lLmgiCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAJKHJldmlzaW9uIDEyMDAx
NykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY4LDEyICs2OCwxMCBAQAogCiAjaWYgT1MoREFSV0lOKQogI2luY2x1
ZGUgPHB1YmxpYy9tYWMvV2ViVGhlbWVFbmdpbmUuaD4KLSNlbGlmIE9TKFVOSVgpICYmICFPUyhB
TkRST0lEKQorI2VsaWYgT1MoVU5JWCkKICNpbmNsdWRlICJXZWJGb250SW5mby5oIgogI2luY2x1
ZGUgIldlYkZvbnRSZW5kZXJTdHlsZS5oIgotI2luY2x1ZGUgPHB1YmxpYy9saW51eC9XZWJUaGVt
ZUVuZ2luZS5oPgotI2VsaWYgT1MoQU5EUk9JRCkKLSNpbmNsdWRlIDxwdWJsaWMvYW5kcm9pZC9X
ZWJUaGVtZUVuZ2luZS5oPgorI2luY2x1ZGUgPHB1YmxpYy9saW51eGlzaC9XZWJUaGVtZUVuZ2lu
ZS5oPgogI2VuZGlmCiAKICNpbmNsdWRlICJOYXRpdmVJbWFnZVNraWEuaCIKQEAgLTI0NywxMyAr
MjQ1LDYgQEAgYm9vbCBQbGF0Zm9ybVN1cHBvcnQ6OmxvYWRGb250KE5TRm9udCogcwogI2VsaWYg
T1MoVU5JWCkKIHZvaWQgUGxhdGZvcm1TdXBwb3J0OjpnZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVy
cyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IG51bUNoYXJhY3RlcnMsIGNvbnN0IGNo
YXIqIHByZWZlcnJlZExvY2FsZSwgRm9udEZhbWlseSogZmFtaWx5KQogewotI2lmIE9TKEFORFJP
SUQpCi0gICAgLy8gRklYTUU6IFdlIGRvIG5vdCB1c2UgZm9udGNvbmZpZyBvbiBBbmRyb2lkLCBz
byB1c2Ugc2ltcGxlIGxvZ2ljIGZvciBub3cuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY3NTg3Ci0gICAgZmFtaWx5LT5uYW1lID0gIkFyaWFsIjsKLSAg
ICBmYW1pbHktPmlzQm9sZCA9IGZhbHNlOwotICAgIGZhbWlseS0+aXNJdGFsaWMgPSBmYWxzZTsK
LSNlbHNlCiAgICAgV2ViRm9udEZhbWlseSB3ZWJGYW1pbHk7CiAgICAgaWYgKFdlYktpdDo6UGxh
dGZvcm06OmN1cnJlbnQoKS0+c2FuZGJveFN1cHBvcnQoKSkKICAgICAgICAgV2ViS2l0OjpQbGF0
Zm9ybTo6Y3VycmVudCgpLT5zYW5kYm94U3VwcG9ydCgpLT5nZXRGb250RmFtaWx5Rm9yQ2hhcmFj
dGVycyhjaGFyYWN0ZXJzLCBudW1DaGFyYWN0ZXJzLCBwcmVmZXJyZWRMb2NhbGUsICZ3ZWJGYW1p
bHkpOwpAQCAtMjYyLDEyICsyNTMsMTAgQEAgdm9pZCBQbGF0Zm9ybVN1cHBvcnQ6OmdldEZvbnRG
YW1pbHlGb3JDaAogICAgIGZhbWlseS0+bmFtZSA9IFN0cmluZzo6ZnJvbVVURjgod2ViRmFtaWx5
Lm5hbWUuZGF0YSgpLCB3ZWJGYW1pbHkubmFtZS5sZW5ndGgoKSk7CiAgICAgZmFtaWx5LT5pc0Jv
bGQgPSB3ZWJGYW1pbHkuaXNCb2xkOwogICAgIGZhbWlseS0+aXNJdGFsaWMgPSB3ZWJGYW1pbHku
aXNJdGFsaWM7Ci0jZW5kaWYKIH0KIAogdm9pZCBQbGF0Zm9ybVN1cHBvcnQ6OmdldFJlbmRlclN0
eWxlRm9yU3RyaWtlKGNvbnN0IGNoYXIqIGZvbnQsIGludCBzaXplQW5kU3R5bGUsIEZvbnRSZW5k
ZXJTdHlsZSogcmVzdWx0KQogewotI2lmICFPUyhBTkRST0lEKQogICAgIFdlYkZvbnRSZW5kZXJT
dHlsZSBzdHlsZTsKIAogICAgIGlmIChXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnNhbmRi
b3hTdXBwb3J0KCkpCkBAIC0yNzYsNyArMjY1LDYgQEAgdm9pZCBQbGF0Zm9ybVN1cHBvcnQ6Omdl
dFJlbmRlclN0eWxlRm9yUwogICAgICAgICBXZWJGb250SW5mbzo6cmVuZGVyU3R5bGVGb3JTdHJp
a2UoZm9udCwgc2l6ZUFuZFN0eWxlLCAmc3R5bGUpOwogCiAgICAgc3R5bGUudG9Gb250UmVuZGVy
U3R5bGUocmVzdWx0KTsKLSNlbmRpZgogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL2FuZHJvaWQvV2ViRm9udEluZm8uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL2FuZHJvaWQvV2ViRm9udEluZm8uY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvYW5kcm9pZC9XZWJGb250SW5mby5jcHAJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV2ViRm9udEluZm8uaCIKKworI2luY2x1ZGUgInBsYXRmb3JtL2xpbnV4aXNoL1dlYkZvbnRG
YW1pbHkuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCit2b2lkIFdlYkZvbnRJbmZvOjpzZXRTdWJwaXhlbFBvc2l0aW9uaW5nKGJvb2wgc3Vi
cGl4ZWxQb3NpdGlvbmluZykKK3sKK30KKwordm9pZCBXZWJGb250SW5mbzo6ZmFtaWx5Rm9yQ2hh
cnMoY29uc3QgV2ViVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBudW1DaGFyYWN0ZXJzLCBjb25z
dCBjaGFyKiBwcmVmZXJyZWRMb2NhbGUsIFdlYkZvbnRGYW1pbHkqIGZhbWlseSkKK3sKKyAgICAv
LyBGSVhNRTogV2UgZG8gbm90IHVzZSBmb250Y29uZmlnIG9uIEFuZHJvaWQsIHNvIHVzZSBzaW1w
bGUgbG9naWMgZm9yIG5vdy4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Njc1ODcKKyAgICBmYW1pbHktPm5hbWUgPSAiQXJpYWwiOworICAgIGZhbWlseS0+
aXNCb2xkID0gZmFsc2U7CisgICAgZmFtaWx5LT5pc0l0YWxpYyA9IGZhbHNlOworfQorCit2b2lk
IFdlYkZvbnRJbmZvOjpyZW5kZXJTdHlsZUZvclN0cmlrZShjb25zdCBjaGFyKiBmYW1pbHksIGlu
dCBzaXplQW5kU3R5bGUsIFdlYkZvbnRSZW5kZXJTdHlsZSogb3V0KQoreworICAgIC8vIEZJWE1F
OiBXZSBkbyBub3QgdXNlIGZvbnRjb25maWcgb24gQW5kcm9pZCwgc28ganVzdCB1c2UgdGhlIGRl
ZmF1bHQgc2V0dGluZ3MuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY3NTg3Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAoKUHJvcGVydHkgY2hhbmdl
cyBvbjogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvYW5kcm9pZC9XZWJGb250SW5mby5jcHAK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvbGludXgvV2ViRm9udEluZm8uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2xpbnV4L1dlYkZvbnRJbmZvLmNwcAkocmV2aXNpb24g
MTIwMDE3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbGludXgvV2ViRm9udEluZm8u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAiV2ViRm9udElu
Zm8uaCIKIAogI2luY2x1ZGUgIldlYkZvbnRSZW5kZXJTdHlsZS5oIgotI2luY2x1ZGUgInBsYXRm
b3JtL2xpbnV4L1dlYkZvbnRGYW1pbHkuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9saW51eGlzaC9X
ZWJGb250RmFtaWx5LmgiCiAjaW5jbHVkZSA8Zm9udGNvbmZpZy9mb250Y29uZmlnLmg+CiAjaW5j
bHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8dW5pY29kZS91dGYxNi5oPgpJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvbGludXgvV2ViRm9udFJlbmRlclN0eWxlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9saW51eC9XZWJGb250UmVuZGVyU3R5
bGUuY3BwCShyZXZpc2lvbiAxMjAwMTcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9s
aW51eC9XZWJGb250UmVuZGVyU3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYzICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViRm9udFJlbmRlclN0eWxlLmgiCi0K
LSNpbmNsdWRlICJGb250UmVuZGVyU3R5bGUuaCIKLQotdXNpbmcgV2ViQ29yZTo6Rm9udFJlbmRl
clN0eWxlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBXZWJGb250UmVuZGVyU3R5bGU6
OnRvRm9udFJlbmRlclN0eWxlKEZvbnRSZW5kZXJTdHlsZSogb3V0KQotewotICAgIG91dC0+dXNl
Qml0bWFwcyA9IHVzZUJpdG1hcHM7Ci0gICAgb3V0LT51c2VBdXRvSGludCA9IHVzZUF1dG9IaW50
OwotICAgIG91dC0+dXNlSGludGluZyA9IHVzZUhpbnRpbmc7Ci0gICAgb3V0LT5oaW50U3R5bGUg
PSBoaW50U3R5bGU7Ci0gICAgb3V0LT51c2VBbnRpQWxpYXMgPSB1c2VBbnRpQWxpYXM7Ci0gICAg
b3V0LT51c2VTdWJwaXhlbFJlbmRlcmluZyA9IHVzZVN1YnBpeGVsUmVuZGVyaW5nICE9IDIgPyB1
c2VTdWJwaXhlbFJlbmRlcmluZyA6IHVzZVN1YnBpeGVsOwotICAgIG91dC0+dXNlU3VicGl4ZWxQ
b3NpdGlvbmluZyA9IHVzZVN1YnBpeGVsUG9zaXRpb25pbmc7Ci19Ci0KLXZvaWQgV2ViRm9udFJl
bmRlclN0eWxlOjpzZXREZWZhdWx0cygpCi17Ci0gICAgdXNlQml0bWFwcyA9IDI7Ci0gICAgdXNl
QXV0b0hpbnQgPSAyOwotICAgIHVzZUhpbnRpbmcgPSAyOwotICAgIGhpbnRTdHlsZSA9IDA7Ci0g
ICAgdXNlQW50aUFsaWFzID0gMjsKLSAgICB1c2VTdWJwaXhlbCA9IDI7Ci0gICAgdXNlU3VicGl4
ZWxSZW5kZXJpbmcgPSAyOwotICAgIHVzZVN1YnBpeGVsUG9zaXRpb25pbmcgPSAyOwotfQotCi19
IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2xp
bnV4L1dlYkZvbnRSZW5kZXJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL2xpbnV4L1dlYkZvbnRSZW5kZXJpbmcuY3BwCShyZXZpc2lvbiAxMjAwMTcpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9saW51eC9XZWJGb250UmVuZGVyaW5nLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw4MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIldlYkZvbnRSZW5kZXJpbmcuaCIKLQotI2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGEuaCIK
LQotdXNpbmcgV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTsKLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLS8vIHN0YXRpYwotdm9pZCBXZWJGb250UmVuZGVyaW5nOjpzZXRIaW50aW5nKFNrUGFpbnQ6
OkhpbnRpbmcgaGludGluZykKLXsKLSAgICBGb250UGxhdGZvcm1EYXRhOjpzZXRIaW50aW5nKGhp
bnRpbmcpOwotfQotCi0vLyBzdGF0aWMKLXZvaWQgV2ViRm9udFJlbmRlcmluZzo6c2V0QW50aUFs
aWFzKGJvb2wgaXNBbnRpQWxpYXMpCi17Ci0gICAgRm9udFBsYXRmb3JtRGF0YTo6c2V0QW50aUFs
aWFzKGlzQW50aUFsaWFzKTsKLX0KLQotLy8gc3RhdGljCi12b2lkIFdlYkZvbnRSZW5kZXJpbmc6
OnNldFN1YnBpeGVsR2x5cGhzKGJvb2wgaXNTdWJwaXhlbEdseXBocykKLXsKLSAgICBGb250UGxh
dGZvcm1EYXRhOjpzZXRTdWJwaXhlbFJlbmRlcmluZyhpc1N1YnBpeGVsR2x5cGhzKTsKLX0KLQot
Ly8gc3RhdGljCi12b2lkIFdlYkZvbnRSZW5kZXJpbmc6OnNldFN1YnBpeGVsUmVuZGVyaW5nKGJv
b2wgdXNlU3VicGl4ZWxSZW5kZXJpbmcpCi17Ci0gICAgRm9udFBsYXRmb3JtRGF0YTo6c2V0U3Vi
cGl4ZWxSZW5kZXJpbmcodXNlU3VicGl4ZWxSZW5kZXJpbmcpOwotfQotCi0vLyBzdGF0aWMKLXZv
aWQgV2ViRm9udFJlbmRlcmluZzo6c2V0U3VicGl4ZWxQb3NpdGlvbmluZyhib29sIHVzZVN1YnBp
eGVsUG9zaXRpb25pbmcpCi17Ci0gICAgRm9udFBsYXRmb3JtRGF0YTo6c2V0U3VicGl4ZWxQb3Np
dGlvbmluZyh1c2VTdWJwaXhlbFBvc2l0aW9uaW5nKTsKLX0KLQotLy8gc3RhdGljCi12b2lkIFdl
YkZvbnRSZW5kZXJpbmc6OnNldExDRE9yZGVyKFNrRm9udEhvc3Q6OkxDRE9yZGVyIG9yZGVyKQot
ewotICAgIFNrRm9udEhvc3Q6OlNldFN1YnBpeGVsT3JkZXIob3JkZXIpOwotfQotCi0vLyBzdGF0
aWMKLXZvaWQgV2ViRm9udFJlbmRlcmluZzo6c2V0TENET3JpZW50YXRpb24oU2tGb250SG9zdDo6
TENET3JpZW50YXRpb24gb3JpZW50YXRpb24pCi17Ci0gICAgU2tGb250SG9zdDo6U2V0U3VicGl4
ZWxPcmllbnRhdGlvbihvcmllbnRhdGlvbik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApJ
bmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbGludXgvV2ViUmVuZGVyVGhlbWUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2xpbnV4L1dlYlJlbmRl
clRoZW1lLmNwcAkocmV2aXNpb24gMTIwMDE3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvbGludXgvV2ViUmVuZGVyVGhlbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ3ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSm9lbCBTdGFubGV5LiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoK
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJSZW5kZXJUaGVtZS5oIgotCi0j
aW5jbHVkZSAiUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmgiCi0jaW5jbHVkZSAiV2ViVmlldy5o
IgotCi11c2luZyBXZWJDb3JlOjpSZW5kZXJUaGVtZTsKLXVzaW5nIFdlYkNvcmU6OlJlbmRlclRo
ZW1lQ2hyb21pdW1MaW51eDsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXZvaWQgc2V0Q2FyZXRC
bGlua0ludGVydmFsKGRvdWJsZSBpbnRlcnZhbCkKLXsKLSAgICBSZW5kZXJUaGVtZUNocm9taXVt
TGludXg6OnNldENhcmV0QmxpbmtJbnRlcnZhbChpbnRlcnZhbCk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbGludXhpc2gvV2Vi
Rm9udFJlbmRlclN0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9saW51eGlzaC9XZWJGb250UmVuZGVyU3R5bGUuY3BwCShyZXZpc2lvbiAxMjAwMDYpCShm
cm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2xpbnV4L1dlYkZvbnRSZW5kZXJTdHlsZS5j
cHA6MTIwMDA2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbGludXhpc2gvV2ViRm9u
dFJlbmRlclN0eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkZvbnRSZW5kZXJTdHlsZS5oIgorCisjaW5jbHVkZSAi
Rm9udFJlbmRlclN0eWxlLmgiCisKK3VzaW5nIFdlYkNvcmU6OkZvbnRSZW5kZXJTdHlsZTsKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgV2ViRm9udFJlbmRlclN0eWxlOjp0b0ZvbnRSZW5k
ZXJTdHlsZShGb250UmVuZGVyU3R5bGUqIG91dCkKK3sKKyAgICBvdXQtPnVzZUJpdG1hcHMgPSB1
c2VCaXRtYXBzOworICAgIG91dC0+dXNlQXV0b0hpbnQgPSB1c2VBdXRvSGludDsKKyAgICBvdXQt
PnVzZUhpbnRpbmcgPSB1c2VIaW50aW5nOworICAgIG91dC0+aGludFN0eWxlID0gaGludFN0eWxl
OworICAgIG91dC0+dXNlQW50aUFsaWFzID0gdXNlQW50aUFsaWFzOworICAgIG91dC0+dXNlU3Vi
cGl4ZWxSZW5kZXJpbmcgPSB1c2VTdWJwaXhlbFJlbmRlcmluZyAhPSAyID8gdXNlU3VicGl4ZWxS
ZW5kZXJpbmcgOiB1c2VTdWJwaXhlbDsKKyAgICBvdXQtPnVzZVN1YnBpeGVsUG9zaXRpb25pbmcg
PSB1c2VTdWJwaXhlbFBvc2l0aW9uaW5nOworfQorCit2b2lkIFdlYkZvbnRSZW5kZXJTdHlsZTo6
c2V0RGVmYXVsdHMoKQoreworICAgIHVzZUJpdG1hcHMgPSAyOworICAgIHVzZUF1dG9IaW50ID0g
MjsKKyAgICB1c2VIaW50aW5nID0gMjsKKyAgICBoaW50U3R5bGUgPSAwOworICAgIHVzZUFudGlB
bGlhcyA9IDI7CisgICAgdXNlU3VicGl4ZWwgPSAyOworICAgIHVzZVN1YnBpeGVsUmVuZGVyaW5n
ID0gMjsKKyAgICB1c2VTdWJwaXhlbFBvc2l0aW9uaW5nID0gMjsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9saW51eGlzaC9XZWJG
b250UmVuZGVyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9saW51eGlzaC9XZWJGb250UmVuZGVyaW5nLmNwcAkocmV2aXNpb24gMTIwMDA2KQkoZnJvbSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9saW51eC9XZWJGb250UmVuZGVyaW5nLmNwcDoxMjAw
MDYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9saW51eGlzaC9XZWJGb250UmVuZGVy
aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIldlYkZvbnRSZW5kZXJpbmcuaCIKKworI2luY2x1ZGUgIkZvbnRQbGF0Zm9y
bURhdGEuaCIKKwordXNpbmcgV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTsKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKKy8vIHN0YXRpYwordm9pZCBXZWJGb250UmVuZGVyaW5nOjpzZXRIaW50aW5n
KFNrUGFpbnQ6OkhpbnRpbmcgaGludGluZykKK3sKKyAgICBGb250UGxhdGZvcm1EYXRhOjpzZXRI
aW50aW5nKGhpbnRpbmcpOworfQorCisvLyBzdGF0aWMKK3ZvaWQgV2ViRm9udFJlbmRlcmluZzo6
c2V0QW50aUFsaWFzKGJvb2wgaXNBbnRpQWxpYXMpCit7CisgICAgRm9udFBsYXRmb3JtRGF0YTo6
c2V0QW50aUFsaWFzKGlzQW50aUFsaWFzKTsKK30KKworLy8gc3RhdGljCit2b2lkIFdlYkZvbnRS
ZW5kZXJpbmc6OnNldFN1YnBpeGVsR2x5cGhzKGJvb2wgaXNTdWJwaXhlbEdseXBocykKK3sKKyAg
ICBGb250UGxhdGZvcm1EYXRhOjpzZXRTdWJwaXhlbFJlbmRlcmluZyhpc1N1YnBpeGVsR2x5cGhz
KTsKK30KKworLy8gc3RhdGljCit2b2lkIFdlYkZvbnRSZW5kZXJpbmc6OnNldFN1YnBpeGVsUmVu
ZGVyaW5nKGJvb2wgdXNlU3VicGl4ZWxSZW5kZXJpbmcpCit7CisgICAgRm9udFBsYXRmb3JtRGF0
YTo6c2V0U3VicGl4ZWxSZW5kZXJpbmcodXNlU3VicGl4ZWxSZW5kZXJpbmcpOworfQorCisvLyBz
dGF0aWMKK3ZvaWQgV2ViRm9udFJlbmRlcmluZzo6c2V0U3VicGl4ZWxQb3NpdGlvbmluZyhib29s
IHVzZVN1YnBpeGVsUG9zaXRpb25pbmcpCit7CisgICAgRm9udFBsYXRmb3JtRGF0YTo6c2V0U3Vi
cGl4ZWxQb3NpdGlvbmluZyh1c2VTdWJwaXhlbFBvc2l0aW9uaW5nKTsKK30KKworLy8gc3RhdGlj
Cit2b2lkIFdlYkZvbnRSZW5kZXJpbmc6OnNldExDRE9yZGVyKFNrRm9udEhvc3Q6OkxDRE9yZGVy
IG9yZGVyKQoreworICAgIFNrRm9udEhvc3Q6OlNldFN1YnBpeGVsT3JkZXIob3JkZXIpOworfQor
CisvLyBzdGF0aWMKK3ZvaWQgV2ViRm9udFJlbmRlcmluZzo6c2V0TENET3JpZW50YXRpb24oU2tG
b250SG9zdDo6TENET3JpZW50YXRpb24gb3JpZW50YXRpb24pCit7CisgICAgU2tGb250SG9zdDo6
U2V0U3VicGl4ZWxPcmllbnRhdGlvbihvcmllbnRhdGlvbik7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbGludXhpc2gvV2ViUmVu
ZGVyVGhlbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2xp
bnV4aXNoL1dlYlJlbmRlclRoZW1lLmNwcAkocmV2aXNpb24gMTIwMDA2KQkoZnJvbSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9saW51eC9XZWJSZW5kZXJUaGVtZS5jcHA6MTIwMDA2KQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbGludXhpc2gvV2ViUmVuZGVyVGhlbWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
Sm9lbCBTdGFubGV5LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXZWJSZW5kZXJUaGVtZS5oIgorCisjaW5jbHVkZSAiUmVuZGVyVGhlbWVDaHJvbWl1bUxp
bnV4LmgiCisjaW5jbHVkZSAiV2ViVmlldy5oIgorCit1c2luZyBXZWJDb3JlOjpSZW5kZXJUaGVt
ZTsKK3VzaW5nIFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDsKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK3ZvaWQgc2V0Q2FyZXRCbGlua0ludGVydmFsKGRvdWJsZSBpbnRlcnZhbCkK
K3sKKyAgICBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnNldENhcmV0QmxpbmtJbnRlcnZhbChp
bnRlcnZhbCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146964</attachid>
            <date>2012-06-11 16:49:18 -0700</date>
            <delta_ts>2012-06-12 17:13:29 -0700</delta_ts>
            <desc>patch v3 (remove changes after move which break patch on bot)</desc>
            <filename>88802b</filename>
            <type>text/plain</type>
            <size>89240</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTIwMDE4KQorKysgU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDEyLTA2LTExICBYaWFu
emh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVt
XSBMZXQgQW5kcm9pZCBhbmQgTGludXggc2hhcmUgc29tZSBwbGF0Zm9ybS1zcGVjaWZpYyBBUElz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODgwMgor
CisgICAgICAgIEFkZGVkIHB1YmxpYy9saW51eGlzaCBhbmQgbW92ZWQgc2hhcmVhYmxlIGhlYWRl
ciBmaWxlcyBmcm9tIHB1YmxpYy9saW51eC4KKworICAgICAgICBDcmVhdGUgdGVtcG9yYXJ5IGZv
cndhcmRpbmcgaGVhZGVyIGZpbGVzIGluIHRoZSBvcmlnaW5hbCBwbGFjZXMuIAorICAgICAgICBX
aWxsIHJlbW92ZSB0aGVtIGFmdGVyIENocm9taXVtIHRyYW5zaXRpb24uCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvYW5k
cm9pZDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvYW5kcm9pZC9XZWJTYW5k
Ym94U3VwcG9ydC5oOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9hbmRyb2lk
L1dlYlRoZW1lRW5naW5lLmg6IFJlbW92ZWQuCisgICAgICAgICogY2hyb21pdW0vcHVibGljL2xp
bnV4L1dlYkZvbnRGYW1pbHkuaDoKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvbGludXgvV2Vi
U2FuZGJveFN1cHBvcnQuaDoKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViVGhl
bWVFbmdpbmUuaDoKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvbGludXhpc2g6IEFkZGVkLgor
ICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9saW51eGlzaC9XZWJGb250RmFtaWx5Lmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViRm9udEZhbWls
eS5oLgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9saW51eGlzaC9XZWJTYW5kYm94U3VwcG9y
dC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL2xpbnV4L1dl
YlNhbmRib3hTdXBwb3J0LmguCisgICAgICAgICogY2hyb21pdW0vcHVibGljL2xpbnV4aXNoL1dl
YlRoZW1lRW5naW5lLmg6IENvcGllZCBmcm9tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvbGludXgvV2ViVGhlbWVFbmdpbmUuaC4KKwogMjAxMi0wNi0xMSAgRGFuYSBKYW5zZW5zICA8
ZGFuYWtqQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFNlcGFyYXRlIENDVmlk
ZW9EcmF3UXVhZCBhbmQgZnJvbSB0aGUgbGF5ZXIgdHJlZSBhbmQgdmlkZW8gcHJvdmlkZXIgYnkg
cmVtb3ZpbmcgTWFuYWdlZFRleHR1cmUgYW5kIFdlYlZpZGVvRnJhbWUgcG9pbnRlcnMgZnJvbSB0
aGUgcXVhZApJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9hbmRyb2lkL1dl
YlNhbmRib3hTdXBwb3J0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9hbmRyb2lkL1dlYlNhbmRib3hTdXBwb3J0LmgJKHJldmlzaW9uIDEyMDAxNykKKysr
IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvYW5kcm9pZC9XZWJTYW5kYm94U3VwcG9y
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlNhbmRib3hTdXBw
b3J0X2gKLSNkZWZpbmUgV2ViU2FuZGJveFN1cHBvcnRfaAotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotLy8gRW1wdHkgY2xhc3MsIGFzIHdlIG5lZWQgaXQgdG8gY29tcGlsZS4KLWNsYXNzIFdlYlNh
bmRib3hTdXBwb3J0IHsKLXB1YmxpYzoKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0j
ZW5kaWYKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvYW5kcm9pZC9XZWJU
aGVtZUVuZ2luZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvYW5kcm9pZC9XZWJUaGVtZUVuZ2luZS5oCShyZXZpc2lvbiAxMjAwMTcpCisrKyBTb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL2FuZHJvaWQvV2ViVGhlbWVFbmdpbmUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0g
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViVGhlbWVFbmdpbmVfaAotI2RlZmlu
ZSBXZWJUaGVtZUVuZ2luZV9oCi0KLSNpbmNsdWRlICIuLi9XZWJDYW52YXMuaCIKLSNpbmNsdWRl
ICIuLi9XZWJDb2xvci5oIgotI2luY2x1ZGUgIi4uL1dlYlNpemUuaCIKLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci0KLXN0cnVjdCBXZWJSZWN0OwotCi1jbGFzcyBXZWJUaGVtZUVuZ2luZSB7Ci1wdWJs
aWM6Ci0gICAgLy8gVGhlIFVJIHBhcnQgd2hpY2ggaXMgYmVpbmcgYWNjZXNzZWQuCi0gICAgZW51
bSBQYXJ0IHsKLSAgICAgICAgLy8gU2Nyb2xsYmFyVGhlbWUgcGFydHMKLSAgICAgICAgUGFydFNj
cm9sbGJhckRvd25BcnJvdywKLSAgICAgICAgUGFydFNjcm9sbGJhckxlZnRBcnJvdywKLSAgICAg
ICAgUGFydFNjcm9sbGJhclJpZ2h0QXJyb3csCi0gICAgICAgIFBhcnRTY3JvbGxiYXJVcEFycm93
LAotICAgICAgICBQYXJ0U2Nyb2xsYmFySG9yaXpvbnRhbFRodW1iLAotICAgICAgICBQYXJ0U2Ny
b2xsYmFyVmVydGljYWxUaHVtYiwKLSAgICAgICAgUGFydFNjcm9sbGJhckhvcml6b250YWxUcmFj
aywKLSAgICAgICAgUGFydFNjcm9sbGJhclZlcnRpY2FsVHJhY2ssCi0KLSAgICAgICAgLy8gUmVu
ZGVyVGhlbWUgcGFydHMKLSAgICAgICAgUGFydENoZWNrYm94LAotICAgICAgICBQYXJ0UmFkaW8s
Ci0gICAgICAgIFBhcnRCdXR0b24sCi0gICAgICAgIFBhcnRUZXh0RmllbGQsCi0gICAgICAgIFBh
cnRNZW51TGlzdCwKLSAgICAgICAgUGFydFNsaWRlclRyYWNrLAotICAgICAgICBQYXJ0U2xpZGVy
VGh1bWIsCi0gICAgICAgIFBhcnRJbm5lclNwaW5CdXR0b24sCi0gICAgICAgIFBhcnRQcm9ncmVz
c0JhcgotICAgIH07Ci0KLSAgICAvLyBUaGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgYXNzb2NpYXRl
ZCBQYXJ0LgotICAgIGVudW0gU3RhdGUgewotICAgICAgICBTdGF0ZURpc2FibGVkLAotICAgICAg
ICBTdGF0ZUhvdmVyLAotICAgICAgICBTdGF0ZU5vcm1hbCwKLSAgICAgICAgU3RhdGVQcmVzc2Vk
LAotICAgIH07Ci0KLSAgICAvLyBFeHRyYSBwYXJhbWV0ZXJzIGZvciBkcmF3aW5nIHRoZSBQYXJ0
U2Nyb2xsYmFySG9yaXpvbnRhbFRyYWNrIGFuZAotICAgIC8vIFBhcnRTY3JvbGxiYXJWZXJ0aWNh
bFRyYWNrLgotICAgIHN0cnVjdCBTY3JvbGxiYXJUcmFja0V4dHJhUGFyYW1zIHsKLSAgICAgICAg
Ly8gVGhlIGJvdW5kcyBvZiB0aGUgZW50aXJlIHRyYWNrLCBhcyBvcHBvc2VkIHRvIHRoZSBwYXJ0
IGJlaW5nIHBhaW50ZWQuCi0gICAgICAgIGludCB0cmFja1g7Ci0gICAgICAgIGludCB0cmFja1k7
Ci0gICAgICAgIGludCB0cmFja1dpZHRoOwotICAgICAgICBpbnQgdHJhY2tIZWlnaHQ7Ci0gICAg
fTsKLQotICAgIC8vIEV4dHJhIHBhcmFtZXRlcnMgZm9yIFBhcnRDaGVja2JveCwgUGFydFB1c2hC
dXR0b24gYW5kIFBhcnRSYWRpby4KLSAgICBzdHJ1Y3QgQnV0dG9uRXh0cmFQYXJhbXMgewotICAg
ICAgICBib29sIGNoZWNrZWQ7Ci0gICAgICAgIGJvb2wgaW5kZXRlcm1pbmF0ZTsgLy8gV2hldGhl
ciB0aGUgYnV0dG9uIHN0YXRlIGlzIGluZGV0ZXJtaW5hdGUuCi0gICAgICAgIGJvb2wgaXNEZWZh
dWx0OyAvLyBXaGV0aGVyIHRoZSBidXR0b24gaXMgZGVmYXVsdCBidXR0b24uCi0gICAgICAgIGJv
b2wgaGFzQm9yZGVyOwotICAgICAgICBXZWJDb2xvciBiYWNrZ3JvdW5kQ29sb3I7Ci0gICAgfTsK
LQotICAgIC8vIEV4dHJhIHBhcmFtZXRlcnMgZm9yIFBhcnRUZXh0RmllbGQKLSAgICBzdHJ1Y3Qg
VGV4dEZpZWxkRXh0cmFQYXJhbXMgewotICAgICAgICBib29sIGlzVGV4dEFyZWE7Ci0gICAgICAg
IGJvb2wgaXNMaXN0Ym94OwotICAgICAgICBXZWJDb2xvciBiYWNrZ3JvdW5kQ29sb3I7Ci0gICAg
fTsKLQotICAgIC8vIEV4dHJhIHBhcmFtZXRlcnMgZm9yIFBhcnRNZW51TGlzdAotICAgIHN0cnVj
dCBNZW51TGlzdEV4dHJhUGFyYW1zIHsKLSAgICAgICAgYm9vbCBoYXNCb3JkZXI7Ci0gICAgICAg
IGJvb2wgaGFzQm9yZGVyUmFkaXVzOwotICAgICAgICBpbnQgYXJyb3dYOwotICAgICAgICBpbnQg
YXJyb3dZOwotICAgICAgICBXZWJDb2xvciBiYWNrZ3JvdW5kQ29sb3I7Ci0gICAgfTsKLQotICAg
IC8vIEV4dHJhIHBhcmFtZXRlcnMgZm9yIFBhcnRTbGlkZXJUcmFjayBhbmQgUGFydFNsaWRlclRo
dW1iCi0gICAgc3RydWN0IFNsaWRlckV4dHJhUGFyYW1zIHsKLSAgICAgICAgYm9vbCB2ZXJ0aWNh
bDsKLSAgICAgICAgYm9vbCBpbkRyYWc7Ci0gICAgfTsKLQotICAgIC8vIEV4dHJhIHBhcmFtZXRl
cnMgZm9yIFBhcnRJbm5lclNwaW5CdXR0b24KLSAgICBzdHJ1Y3QgSW5uZXJTcGluQnV0dG9uRXh0
cmFQYXJhbXMgewotICAgICAgICBib29sIHNwaW5VcDsKLSAgICAgICAgYm9vbCByZWFkT25seTsK
LSAgICB9OwotCi0gICAgLy8gRXh0cmEgcGFyYW1ldGVycyBmb3IgUGFydFByb2dyZXNzQmFyCi0g
ICAgc3RydWN0IFByb2dyZXNzQmFyRXh0cmFQYXJhbXMgewotICAgICAgICBib29sIGRldGVybWlu
YXRlOwotICAgICAgICBpbnQgdmFsdWVSZWN0WDsKLSAgICAgICAgaW50IHZhbHVlUmVjdFk7Ci0g
ICAgICAgIGludCB2YWx1ZVJlY3RXaWR0aDsKLSAgICAgICAgaW50IHZhbHVlUmVjdEhlaWdodDsK
LSAgICB9OwotCi0gICAgdW5pb24gRXh0cmFQYXJhbXMgewotICAgICAgICBTY3JvbGxiYXJUcmFj
a0V4dHJhUGFyYW1zIHNjcm9sbGJhclRyYWNrOwotICAgICAgICBCdXR0b25FeHRyYVBhcmFtcyBi
dXR0b247Ci0gICAgICAgIFRleHRGaWVsZEV4dHJhUGFyYW1zIHRleHRGaWVsZDsKLSAgICAgICAg
TWVudUxpc3RFeHRyYVBhcmFtcyBtZW51TGlzdDsKLSAgICAgICAgU2xpZGVyRXh0cmFQYXJhbXMg
c2xpZGVyOwotICAgICAgICBJbm5lclNwaW5CdXR0b25FeHRyYVBhcmFtcyBpbm5lclNwaW47Ci0g
ICAgICAgIFByb2dyZXNzQmFyRXh0cmFQYXJhbXMgcHJvZ3Jlc3NCYXI7Ci0gICAgfTsKLQotICAg
IC8vIEdldHMgdGhlIHNpemUgb2YgdGhlIGdpdmVuIHRoZW1lIHBhcnQuIEZvciB2YXJpYWJsZSBz
aXplZCBpdGVtcwotICAgIC8vIGxpa2UgdmVydGljYWwgc2Nyb2xsYmFyIHRodW1icywgdGhlIHdp
ZHRoIHdpbGwgYmUgdGhlIHJlcXVpcmVkIHdpZHRoIG9mCi0gICAgLy8gdGhlIHRyYWNrIHdoaWxl
IHRoZSBoZWlnaHQgd2lsbCBiZSB0aGUgbWluaW11bSBoZWlnaHQuCi0gICAgdmlydHVhbCBXZWJT
aXplIGdldFNpemUoUGFydCkgeyByZXR1cm4gV2ViU2l6ZSgpOyB9Ci0gICAgLy8gUGFpbnQgdGhl
IGdpdmVuIHRoZSBnaXZlbiB0aGVtZSBwYXJ0LgotICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJD
YW52YXMqLCBQYXJ0LCBTdGF0ZSwgY29uc3QgV2ViUmVjdCYsIGNvbnN0IEV4dHJhUGFyYW1zKikg
eyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCkluZGV4OiBTb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYkZvbnRGYW1pbHkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYkZvbnRGYW1pbHku
aAkocmV2aXNpb24gMTIwMDE3KQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9s
aW51eC9XZWJGb250RmFtaWx5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDIxICsyNyw1IEBACiAg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KLQotI2lmbmRlZiBXZWJGb250RmFt
aWx5X2gKLSNkZWZpbmUgV2ViRm9udEZhbWlseV9oCi0KLSNpbmNsdWRlICIuLi9XZWJDU3RyaW5n
LmgiCi0jaW5jbHVkZSAiLi4vV2ViQ29tbW9uLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1z
dHJ1Y3QgV2ViRm9udEZhbWlseSB7Ci0gICAgV2ViQ1N0cmluZyBuYW1lOwotICAgIGJvb2wgaXNC
b2xkOwotICAgIGJvb2wgaXNJdGFsaWM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
I2VuZGlmIC8vIFdlYkZvbnRGYW1pbHlfaAorLy8gRklYTUU6IFJlbW92ZSBvbmNlIGh0dHA6Ly9j
b2RlcmV2aWV3LmNocm9taXVtLm9yZy8xMDU0NDEwMy8gaXMgbGFuZGVkLgorI2luY2x1ZGUgIi4u
L2xpbnV4aXNoL1dlYkZvbnRGYW1pbHkuaCIKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1
bS9wdWJsaWMvbGludXgvV2ViU2FuZGJveFN1cHBvcnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYlNhbmRib3hTdXBwb3J0LmgJKHJldmlz
aW9uIDEyMDAxNykKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2Vi
U2FuZGJveFN1cHBvcnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMzkgKzI3LDUgQEAKICAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwotCi0jaWZuZGVmIFdlYlNhbmRib3hTdXBw
b3J0X2gKLSNkZWZpbmUgV2ViU2FuZGJveFN1cHBvcnRfaAotCi0jaW5jbHVkZSAiLi4vV2ViQ29t
bW9uLmgiCi0jaW5jbHVkZSAiLi4vV2ViU3RyaW5nLmgiCi0jaW5jbHVkZSAiV2ViRm9udEZhbWls
eS5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotc3RydWN0IFdlYkZvbnRSZW5kZXJTdHlsZTsK
LQotLy8gUHV0IG1ldGhvZHMgaGVyZSB0aGF0IGFyZSByZXF1aXJlZCBkdWUgdG8gc2FuZGJveCBy
ZXN0cmljdGlvbnMuCi1jbGFzcyBXZWJTYW5kYm94U3VwcG9ydCB7Ci1wdWJsaWM6Ci0gICAgLy8g
Rm9udHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0KLSAgICAvLyBHZXQgYSBmb250IGZhbWlseSB3aGljaCBjb250YWlucyBn
bHlwaHMgZm9yIHRoZSBnaXZlbiBVbmljb2RlCi0gICAgLy8gY29kZS1wb2ludHMuCi0gICAgLy8g
ICBjaGFyYWN0ZXJzOiBhIFVURi0xNiBlbmNvZGVkIHN0cmluZwotICAgIC8vICAgbnVtQ2hhcmFj
dGVyczogdGhlIG51bWJlciBvZiAxNi1iaXQgd29yZHMgaW4gfGNoYXJhY3RlcnN8Ci0gICAgLy8g
ICBwcmVmZXJyZWRMb2NhbGU6IHByZWZlcnJlZCBsb2NhbGUgaWRlbnRpZmllciBmb3IgdGhlIHxj
aGFyYWN0ZXJzfAotICAgIC8vICAgICAgICAgICAgICAgICAgICAoZS5nLiAiZW4iLCAiamEiLCAi
emgtQ04iKQotICAgIC8vCi0gICAgLy8gUmV0dXJucyBhIHN0cmluZyB3aXRoIHRoZSBmb250IGZh
bWlseSBvbiBhbiBlbXB0eSBzdHJpbmcgaWYgdGhlCi0gICAgLy8gcmVxdWVzdCBjYW5ub3QgYmUg
c2F0aXNmaWVkLgotICAgIC8vIFJldHVybnMgYSBXZWJGb250RmFtaWx5IGluc3RhbmNlIHdpdGgg
dGhlIGZvbnQgbmFtZS4gVGhlIGluc3RhbmNlIGhhcyBlbXB0eSBmb250IG5hbWUgaWYgdGhlIHJl
cXVlc3QgY2Fubm90IGJlIHNhdGlzZmllZC4KLSAgICAvLyBGSVhNRTogTWFrZSB0aGlzIHRvIGJl
IGEgcHVyZSB2aXJ0dWFsIGZ1bmN0aW9uIGFmdGVyIHRyYW5zaXRpb24uCi0gICAgdmlydHVhbCB2
b2lkIGdldEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJzKGNvbnN0IFdlYlVDaGFyKiBjaGFyYWN0ZXJz
LCBzaXplX3QgbnVtQ2hhcmFjdGVycywgY29uc3QgY2hhciogcHJlZmVycmVkTG9jYWxlLCBXZWJG
b250RmFtaWx5KikgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIGdldFJlbmRlclN0eWxlRm9yU3Ry
aWtlKGNvbnN0IGNoYXIqIGZhbWlseSwgaW50IHNpemVBbmRTdHlsZSwgV2ViRm9udFJlbmRlclN0
eWxlKikgPSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgorLy8gRklY
TUU6IFJlbW92ZSBvbmNlIGh0dHA6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8xMDU0NDEwMy8g
aXMgbGFuZGVkLgorI2luY2x1ZGUgIi4uL2xpbnV4aXNoL1dlYlNhbmRib3hTdXBwb3J0LmgiCklu
ZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYlRoZW1lRW5naW5l
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9saW51eC9X
ZWJUaGVtZUVuZ2luZS5oCShyZXZpc2lvbiAxMjAwMTcpCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL2xpbnV4L1dlYlRoZW1lRW5naW5lLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDEyNiArMjcsNSBAQAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCi0KLSNp
Zm5kZWYgV2ViVGhlbWVFbmdpbmVfaAotI2RlZmluZSBXZWJUaGVtZUVuZ2luZV9oCi0KLSNpbmNs
dWRlICIuLi9XZWJDYW52YXMuaCIKLSNpbmNsdWRlICIuLi9XZWJDb2xvci5oIgotI2luY2x1ZGUg
Ii4uL1dlYlNpemUuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBXZWJSZWN0Owot
Ci1jbGFzcyBXZWJUaGVtZUVuZ2luZSB7Ci1wdWJsaWM6Ci0gICAgLy8gVGhlIFVJIHBhcnQgd2hp
Y2ggaXMgYmVpbmcgYWNjZXNzZWQuCi0gICAgZW51bSBQYXJ0IHsKLSAgICAgICAgLy8gU2Nyb2xs
YmFyVGhlbWUgcGFydHMKLSAgICAgICAgUGFydFNjcm9sbGJhckRvd25BcnJvdywKLSAgICAgICAg
UGFydFNjcm9sbGJhckxlZnRBcnJvdywKLSAgICAgICAgUGFydFNjcm9sbGJhclJpZ2h0QXJyb3cs
Ci0gICAgICAgIFBhcnRTY3JvbGxiYXJVcEFycm93LAotICAgICAgICBQYXJ0U2Nyb2xsYmFySG9y
aXpvbnRhbFRodW1iLAotICAgICAgICBQYXJ0U2Nyb2xsYmFyVmVydGljYWxUaHVtYiwKLSAgICAg
ICAgUGFydFNjcm9sbGJhckhvcml6b250YWxUcmFjaywKLSAgICAgICAgUGFydFNjcm9sbGJhclZl
cnRpY2FsVHJhY2ssCi0KLSAgICAgICAgLy8gUmVuZGVyVGhlbWUgcGFydHMKLSAgICAgICAgUGFy
dENoZWNrYm94LAotICAgICAgICBQYXJ0UmFkaW8sCi0gICAgICAgIFBhcnRCdXR0b24sCi0gICAg
ICAgIFBhcnRUZXh0RmllbGQsCi0gICAgICAgIFBhcnRNZW51TGlzdCwKLSAgICAgICAgUGFydFNs
aWRlclRyYWNrLAotICAgICAgICBQYXJ0U2xpZGVyVGh1bWIsCi0gICAgICAgIFBhcnRJbm5lclNw
aW5CdXR0b24sCi0gICAgICAgIFBhcnRQcm9ncmVzc0JhcgotICAgIH07Ci0KLSAgICAvLyBUaGUg
Y3VycmVudCBzdGF0ZSBvZiB0aGUgYXNzb2NpYXRlZCBQYXJ0LgotICAgIGVudW0gU3RhdGUgewot
ICAgICAgICBTdGF0ZURpc2FibGVkLAotICAgICAgICBTdGF0ZUhvdmVyLAotICAgICAgICBTdGF0
ZU5vcm1hbCwKLSAgICAgICAgU3RhdGVQcmVzc2VkLAotICAgIH07Ci0KLSAgICAvLyBFeHRyYSBw
YXJhbWV0ZXJzIGZvciBkcmF3aW5nIHRoZSBQYXJ0U2Nyb2xsYmFySG9yaXpvbnRhbFRyYWNrIGFu
ZAotICAgIC8vIFBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRyYWNrLgotICAgIHN0cnVjdCBTY3JvbGxi
YXJUcmFja0V4dHJhUGFyYW1zIHsKLSAgICAgICAgLy8gVGhlIGJvdW5kcyBvZiB0aGUgZW50aXJl
IHRyYWNrLCBhcyBvcHBvc2VkIHRvIHRoZSBwYXJ0IGJlaW5nIHBhaW50ZWQuCi0gICAgICAgIGlu
dCB0cmFja1g7Ci0gICAgICAgIGludCB0cmFja1k7Ci0gICAgICAgIGludCB0cmFja1dpZHRoOwot
ICAgICAgICBpbnQgdHJhY2tIZWlnaHQ7Ci0gICAgfTsKLQotICAgIC8vIEV4dHJhIHBhcmFtZXRl
cnMgZm9yIFBhcnRDaGVja2JveCwgUGFydFB1c2hCdXR0b24gYW5kIFBhcnRSYWRpby4KLSAgICBz
dHJ1Y3QgQnV0dG9uRXh0cmFQYXJhbXMgewotICAgICAgICBib29sIGNoZWNrZWQ7Ci0gICAgICAg
IGJvb2wgaW5kZXRlcm1pbmF0ZTsgLy8gV2hldGhlciB0aGUgYnV0dG9uIHN0YXRlIGlzIGluZGV0
ZXJtaW5hdGUuCi0gICAgICAgIGJvb2wgaXNEZWZhdWx0OyAvLyBXaGV0aGVyIHRoZSBidXR0b24g
aXMgZGVmYXVsdCBidXR0b24uCi0gICAgICAgIGJvb2wgaGFzQm9yZGVyOwotICAgICAgICBXZWJD
b2xvciBiYWNrZ3JvdW5kQ29sb3I7Ci0gICAgfTsKLQotICAgIC8vIEV4dHJhIHBhcmFtZXRlcnMg
Zm9yIFBhcnRUZXh0RmllbGQKLSAgICBzdHJ1Y3QgVGV4dEZpZWxkRXh0cmFQYXJhbXMgewotICAg
ICAgICBib29sIGlzVGV4dEFyZWE7Ci0gICAgICAgIGJvb2wgaXNMaXN0Ym94OwotICAgICAgICBX
ZWJDb2xvciBiYWNrZ3JvdW5kQ29sb3I7Ci0gICAgfTsKLQotICAgIC8vIEV4dHJhIHBhcmFtZXRl
cnMgZm9yIFBhcnRNZW51TGlzdAotICAgIHN0cnVjdCBNZW51TGlzdEV4dHJhUGFyYW1zIHsKLSAg
ICAgICAgYm9vbCBoYXNCb3JkZXI7Ci0gICAgICAgIGJvb2wgaGFzQm9yZGVyUmFkaXVzOwotICAg
ICAgICBpbnQgYXJyb3dYOwotICAgICAgICBpbnQgYXJyb3dZOwotICAgICAgICBXZWJDb2xvciBi
YWNrZ3JvdW5kQ29sb3I7Ci0gICAgfTsKLQotICAgIC8vIEV4dHJhIHBhcmFtZXRlcnMgZm9yIFBh
cnRTbGlkZXJUcmFjayBhbmQgUGFydFNsaWRlclRodW1iCi0gICAgc3RydWN0IFNsaWRlckV4dHJh
UGFyYW1zIHsKLSAgICAgICAgYm9vbCB2ZXJ0aWNhbDsKLSAgICAgICAgYm9vbCBpbkRyYWc7Ci0g
ICAgfTsKLQotICAgIC8vIEV4dHJhIHBhcmFtZXRlcnMgZm9yIFBhcnRJbm5lclNwaW5CdXR0b24K
LSAgICBzdHJ1Y3QgSW5uZXJTcGluQnV0dG9uRXh0cmFQYXJhbXMgewotICAgICAgICBib29sIHNw
aW5VcDsKLSAgICAgICAgYm9vbCByZWFkT25seTsKLSAgICB9OwotCi0gICAgLy8gRXh0cmEgcGFy
YW1ldGVycyBmb3IgUGFydFByb2dyZXNzQmFyCi0gICAgc3RydWN0IFByb2dyZXNzQmFyRXh0cmFQ
YXJhbXMgewotICAgICAgICBib29sIGRldGVybWluYXRlOwotICAgICAgICBpbnQgdmFsdWVSZWN0
WDsKLSAgICAgICAgaW50IHZhbHVlUmVjdFk7Ci0gICAgICAgIGludCB2YWx1ZVJlY3RXaWR0aDsK
LSAgICAgICAgaW50IHZhbHVlUmVjdEhlaWdodDsKLSAgICB9OwotCi0gICAgdW5pb24gRXh0cmFQ
YXJhbXMgewotICAgICAgICBTY3JvbGxiYXJUcmFja0V4dHJhUGFyYW1zIHNjcm9sbGJhclRyYWNr
OwotICAgICAgICBCdXR0b25FeHRyYVBhcmFtcyBidXR0b247Ci0gICAgICAgIFRleHRGaWVsZEV4
dHJhUGFyYW1zIHRleHRGaWVsZDsKLSAgICAgICAgTWVudUxpc3RFeHRyYVBhcmFtcyBtZW51TGlz
dDsKLSAgICAgICAgU2xpZGVyRXh0cmFQYXJhbXMgc2xpZGVyOwotICAgICAgICBJbm5lclNwaW5C
dXR0b25FeHRyYVBhcmFtcyBpbm5lclNwaW47Ci0gICAgICAgIFByb2dyZXNzQmFyRXh0cmFQYXJh
bXMgcHJvZ3Jlc3NCYXI7Ci0gICAgfTsKLQotICAgIC8vIEdldHMgdGhlIHNpemUgb2YgdGhlIGdp
dmVuIHRoZW1lIHBhcnQuIEZvciB2YXJpYWJsZSBzaXplZCBpdGVtcwotICAgIC8vIGxpa2UgdmVy
dGljYWwgc2Nyb2xsYmFyIHRodW1icywgdGhlIHdpZHRoIHdpbGwgYmUgdGhlIHJlcXVpcmVkIHdp
ZHRoIG9mCi0gICAgLy8gdGhlIHRyYWNrIHdoaWxlIHRoZSBoZWlnaHQgd2lsbCBiZSB0aGUgbWlu
aW11bSBoZWlnaHQuCi0gICAgdmlydHVhbCBXZWJTaXplIGdldFNpemUoUGFydCkgeyByZXR1cm4g
V2ViU2l6ZSgpOyB9Ci0gICAgLy8gUGFpbnQgdGhlIGdpdmVuIHRoZSBnaXZlbiB0aGVtZSBwYXJ0
LgotICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJDYW52YXMqLCBQYXJ0LCBTdGF0ZSwgY29uc3Qg
V2ViUmVjdCYsIGNvbnN0IEV4dHJhUGFyYW1zKikgeyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKLQotI2VuZGlmCisvLyBGSVhNRTogUmVtb3ZlIG9uY2UgaHR0cDovL2NvZGVyZXZpZXcu
Y2hyb21pdW0ub3JnLzEwNTQ0MTAzLyBpcyBsYW5kZWQuCisjaW5jbHVkZSAiLi4vbGludXhpc2gv
V2ViVGhlbWVFbmdpbmUuaCIKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
bGludXhpc2gvV2ViRm9udEZhbWlseS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvbGludXhpc2gvV2ViRm9udEZhbWlseS5oCShyZXZpc2lvbiAxMjAwMDYp
CShmcm9tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViRm9udEZhbWls
eS5oOjEyMDAwNikKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvbGludXhpc2gv
V2ViRm9udEZhbWlseS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdl
YkZvbnRGYW1pbHlfaAorI2RlZmluZSBXZWJGb250RmFtaWx5X2gKKworI2luY2x1ZGUgIi4uL1dl
YkNTdHJpbmcuaCIKKyNpbmNsdWRlICIuLi9XZWJDb21tb24uaCIKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK3N0cnVjdCBXZWJGb250RmFtaWx5IHsKKyAgICBXZWJDU3RyaW5nIG5hbWU7CisgICAg
Ym9vbCBpc0JvbGQ7CisgICAgYm9vbCBpc0l0YWxpYzsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gV2ViRm9udEZhbWlseV9oCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL2xpbnV4aXNoL1dlYlNhbmRib3hTdXBwb3J0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9saW51eGlzaC9XZWJTYW5kYm94U3Vw
cG9ydC5oCShyZXZpc2lvbiAxMjAwMDYpCShmcm9tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvbGludXgvV2ViU2FuZGJveFN1cHBvcnQuaDoxMjAwMDYpCisrKyBTb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL2xpbnV4aXNoL1dlYlNhbmRib3hTdXBwb3J0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU2FuZGJveFN1cHBvcnRfaAorI2RlZmlu
ZSBXZWJTYW5kYm94U3VwcG9ydF9oCisKKyNpbmNsdWRlICIuLi9XZWJDb21tb24uaCIKKyNpbmNs
dWRlICIuLi9XZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJGb250RmFtaWx5LmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgV2ViRm9udFJlbmRlclN0eWxlOworCisvLyBQdXQgbWV0
aG9kcyBoZXJlIHRoYXQgYXJlIHJlcXVpcmVkIGR1ZSB0byBzYW5kYm94IHJlc3RyaWN0aW9ucy4K
K2NsYXNzIFdlYlNhbmRib3hTdXBwb3J0IHsKK3B1YmxpYzoKKyAgICAvLyBGb250cyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworICAgIC8vIEdldCBhIGZvbnQgZmFtaWx5IHdoaWNoIGNvbnRhaW5zIGdseXBocyBmb3IgdGhl
IGdpdmVuIFVuaWNvZGUKKyAgICAvLyBjb2RlLXBvaW50cy4KKyAgICAvLyAgIGNoYXJhY3RlcnM6
IGEgVVRGLTE2IGVuY29kZWQgc3RyaW5nCisgICAgLy8gICBudW1DaGFyYWN0ZXJzOiB0aGUgbnVt
YmVyIG9mIDE2LWJpdCB3b3JkcyBpbiB8Y2hhcmFjdGVyc3wKKyAgICAvLyAgIHByZWZlcnJlZExv
Y2FsZTogcHJlZmVycmVkIGxvY2FsZSBpZGVudGlmaWVyIGZvciB0aGUgfGNoYXJhY3RlcnN8Cisg
ICAgLy8gICAgICAgICAgICAgICAgICAgIChlLmcuICJlbiIsICJqYSIsICJ6aC1DTiIpCisgICAg
Ly8KKyAgICAvLyBSZXR1cm5zIGEgc3RyaW5nIHdpdGggdGhlIGZvbnQgZmFtaWx5IG9uIGFuIGVt
cHR5IHN0cmluZyBpZiB0aGUKKyAgICAvLyByZXF1ZXN0IGNhbm5vdCBiZSBzYXRpc2ZpZWQuCisg
ICAgLy8gUmV0dXJucyBhIFdlYkZvbnRGYW1pbHkgaW5zdGFuY2Ugd2l0aCB0aGUgZm9udCBuYW1l
LiBUaGUgaW5zdGFuY2UgaGFzIGVtcHR5IGZvbnQgbmFtZSBpZiB0aGUgcmVxdWVzdCBjYW5ub3Qg
YmUgc2F0aXNmaWVkLgorICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgdG8gYmUgYSBwdXJlIHZpcnR1
YWwgZnVuY3Rpb24gYWZ0ZXIgdHJhbnNpdGlvbi4KKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Rm9udEZh
bWlseUZvckNoYXJhY3RlcnMoY29uc3QgV2ViVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBudW1D
aGFyYWN0ZXJzLCBjb25zdCBjaGFyKiBwcmVmZXJyZWRMb2NhbGUsIFdlYkZvbnRGYW1pbHkqKSA9
IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UmVuZGVyU3R5bGVGb3JTdHJpa2UoY29uc3QgY2hh
ciogZmFtaWx5LCBpbnQgc2l6ZUFuZFN0eWxlLCBXZWJGb250UmVuZGVyU3R5bGUqKSA9IDA7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL2xpbnV4aXNoL1dlYlRoZW1lRW5naW5lLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9saW51eGlzaC9XZWJUaGVtZUVuZ2lu
ZS5oCShyZXZpc2lvbiAxMjAwMDYpCShmcm9tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvbGludXgvV2ViVGhlbWVFbmdpbmUuaDoxMjAwMDYpCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL2xpbnV4aXNoL1dlYlRoZW1lRW5naW5lLmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlRoZW1lRW5naW5lX2gKKyNkZWZpbmUgV2ViVGhlbWVF
bmdpbmVfaAorCisjaW5jbHVkZSAiLi4vV2ViQ2FudmFzLmgiCisjaW5jbHVkZSAiLi4vV2ViQ29s
b3IuaCIKKyNpbmNsdWRlICIuLi9XZWJTaXplLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitz
dHJ1Y3QgV2ViUmVjdDsKKworY2xhc3MgV2ViVGhlbWVFbmdpbmUgeworcHVibGljOgorICAgIC8v
IFRoZSBVSSBwYXJ0IHdoaWNoIGlzIGJlaW5nIGFjY2Vzc2VkLgorICAgIGVudW0gUGFydCB7Cisg
ICAgICAgIC8vIFNjcm9sbGJhclRoZW1lIHBhcnRzCisgICAgICAgIFBhcnRTY3JvbGxiYXJEb3du
QXJyb3csCisgICAgICAgIFBhcnRTY3JvbGxiYXJMZWZ0QXJyb3csCisgICAgICAgIFBhcnRTY3Jv
bGxiYXJSaWdodEFycm93LAorICAgICAgICBQYXJ0U2Nyb2xsYmFyVXBBcnJvdywKKyAgICAgICAg
UGFydFNjcm9sbGJhckhvcml6b250YWxUaHVtYiwKKyAgICAgICAgUGFydFNjcm9sbGJhclZlcnRp
Y2FsVGh1bWIsCisgICAgICAgIFBhcnRTY3JvbGxiYXJIb3Jpem9udGFsVHJhY2ssCisgICAgICAg
IFBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRyYWNrLAorCisgICAgICAgIC8vIFJlbmRlclRoZW1lIHBh
cnRzCisgICAgICAgIFBhcnRDaGVja2JveCwKKyAgICAgICAgUGFydFJhZGlvLAorICAgICAgICBQ
YXJ0QnV0dG9uLAorICAgICAgICBQYXJ0VGV4dEZpZWxkLAorICAgICAgICBQYXJ0TWVudUxpc3Qs
CisgICAgICAgIFBhcnRTbGlkZXJUcmFjaywKKyAgICAgICAgUGFydFNsaWRlclRodW1iLAorICAg
ICAgICBQYXJ0SW5uZXJTcGluQnV0dG9uLAorICAgICAgICBQYXJ0UHJvZ3Jlc3NCYXIKKyAgICB9
OworCisgICAgLy8gVGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGFzc29jaWF0ZWQgUGFydC4KKyAg
ICBlbnVtIFN0YXRlIHsKKyAgICAgICAgU3RhdGVEaXNhYmxlZCwKKyAgICAgICAgU3RhdGVIb3Zl
ciwKKyAgICAgICAgU3RhdGVOb3JtYWwsCisgICAgICAgIFN0YXRlUHJlc3NlZCwKKyAgICB9Owor
CisgICAgLy8gRXh0cmEgcGFyYW1ldGVycyBmb3IgZHJhd2luZyB0aGUgUGFydFNjcm9sbGJhckhv
cml6b250YWxUcmFjayBhbmQKKyAgICAvLyBQYXJ0U2Nyb2xsYmFyVmVydGljYWxUcmFjay4KKyAg
ICBzdHJ1Y3QgU2Nyb2xsYmFyVHJhY2tFeHRyYVBhcmFtcyB7CisgICAgICAgIC8vIFRoZSBib3Vu
ZHMgb2YgdGhlIGVudGlyZSB0cmFjaywgYXMgb3Bwb3NlZCB0byB0aGUgcGFydCBiZWluZyBwYWlu
dGVkLgorICAgICAgICBpbnQgdHJhY2tYOworICAgICAgICBpbnQgdHJhY2tZOworICAgICAgICBp
bnQgdHJhY2tXaWR0aDsKKyAgICAgICAgaW50IHRyYWNrSGVpZ2h0OworICAgIH07CisKKyAgICAv
LyBFeHRyYSBwYXJhbWV0ZXJzIGZvciBQYXJ0Q2hlY2tib3gsIFBhcnRQdXNoQnV0dG9uIGFuZCBQ
YXJ0UmFkaW8uCisgICAgc3RydWN0IEJ1dHRvbkV4dHJhUGFyYW1zIHsKKyAgICAgICAgYm9vbCBj
aGVja2VkOworICAgICAgICBib29sIGluZGV0ZXJtaW5hdGU7IC8vIFdoZXRoZXIgdGhlIGJ1dHRv
biBzdGF0ZSBpcyBpbmRldGVybWluYXRlLgorICAgICAgICBib29sIGlzRGVmYXVsdDsgLy8gV2hl
dGhlciB0aGUgYnV0dG9uIGlzIGRlZmF1bHQgYnV0dG9uLgorICAgICAgICBib29sIGhhc0JvcmRl
cjsKKyAgICAgICAgV2ViQ29sb3IgYmFja2dyb3VuZENvbG9yOworICAgIH07CisKKyAgICAvLyBF
eHRyYSBwYXJhbWV0ZXJzIGZvciBQYXJ0VGV4dEZpZWxkCisgICAgc3RydWN0IFRleHRGaWVsZEV4
dHJhUGFyYW1zIHsKKyAgICAgICAgYm9vbCBpc1RleHRBcmVhOworICAgICAgICBib29sIGlzTGlz
dGJveDsKKyAgICAgICAgV2ViQ29sb3IgYmFja2dyb3VuZENvbG9yOworICAgIH07CisKKyAgICAv
LyBFeHRyYSBwYXJhbWV0ZXJzIGZvciBQYXJ0TWVudUxpc3QKKyAgICBzdHJ1Y3QgTWVudUxpc3RF
eHRyYVBhcmFtcyB7CisgICAgICAgIGJvb2wgaGFzQm9yZGVyOworICAgICAgICBib29sIGhhc0Jv
cmRlclJhZGl1czsKKyAgICAgICAgaW50IGFycm93WDsKKyAgICAgICAgaW50IGFycm93WTsKKyAg
ICAgICAgV2ViQ29sb3IgYmFja2dyb3VuZENvbG9yOworICAgIH07CisKKyAgICAvLyBFeHRyYSBw
YXJhbWV0ZXJzIGZvciBQYXJ0U2xpZGVyVHJhY2sgYW5kIFBhcnRTbGlkZXJUaHVtYgorICAgIHN0
cnVjdCBTbGlkZXJFeHRyYVBhcmFtcyB7CisgICAgICAgIGJvb2wgdmVydGljYWw7CisgICAgICAg
IGJvb2wgaW5EcmFnOworICAgIH07CisKKyAgICAvLyBFeHRyYSBwYXJhbWV0ZXJzIGZvciBQYXJ0
SW5uZXJTcGluQnV0dG9uCisgICAgc3RydWN0IElubmVyU3BpbkJ1dHRvbkV4dHJhUGFyYW1zIHsK
KyAgICAgICAgYm9vbCBzcGluVXA7CisgICAgICAgIGJvb2wgcmVhZE9ubHk7CisgICAgfTsKKwor
ICAgIC8vIEV4dHJhIHBhcmFtZXRlcnMgZm9yIFBhcnRQcm9ncmVzc0JhcgorICAgIHN0cnVjdCBQ
cm9ncmVzc0JhckV4dHJhUGFyYW1zIHsKKyAgICAgICAgYm9vbCBkZXRlcm1pbmF0ZTsKKyAgICAg
ICAgaW50IHZhbHVlUmVjdFg7CisgICAgICAgIGludCB2YWx1ZVJlY3RZOworICAgICAgICBpbnQg
dmFsdWVSZWN0V2lkdGg7CisgICAgICAgIGludCB2YWx1ZVJlY3RIZWlnaHQ7CisgICAgfTsKKwor
ICAgIHVuaW9uIEV4dHJhUGFyYW1zIHsKKyAgICAgICAgU2Nyb2xsYmFyVHJhY2tFeHRyYVBhcmFt
cyBzY3JvbGxiYXJUcmFjazsKKyAgICAgICAgQnV0dG9uRXh0cmFQYXJhbXMgYnV0dG9uOworICAg
ICAgICBUZXh0RmllbGRFeHRyYVBhcmFtcyB0ZXh0RmllbGQ7CisgICAgICAgIE1lbnVMaXN0RXh0
cmFQYXJhbXMgbWVudUxpc3Q7CisgICAgICAgIFNsaWRlckV4dHJhUGFyYW1zIHNsaWRlcjsKKyAg
ICAgICAgSW5uZXJTcGluQnV0dG9uRXh0cmFQYXJhbXMgaW5uZXJTcGluOworICAgICAgICBQcm9n
cmVzc0JhckV4dHJhUGFyYW1zIHByb2dyZXNzQmFyOworICAgIH07CisKKyAgICAvLyBHZXRzIHRo
ZSBzaXplIG9mIHRoZSBnaXZlbiB0aGVtZSBwYXJ0LiBGb3IgdmFyaWFibGUgc2l6ZWQgaXRlbXMK
KyAgICAvLyBsaWtlIHZlcnRpY2FsIHNjcm9sbGJhciB0aHVtYnMsIHRoZSB3aWR0aCB3aWxsIGJl
IHRoZSByZXF1aXJlZCB3aWR0aCBvZgorICAgIC8vIHRoZSB0cmFjayB3aGlsZSB0aGUgaGVpZ2h0
IHdpbGwgYmUgdGhlIG1pbmltdW0gaGVpZ2h0LgorICAgIHZpcnR1YWwgV2ViU2l6ZSBnZXRTaXpl
KFBhcnQpIHsgcmV0dXJuIFdlYlNpemUoKTsgfQorICAgIC8vIFBhaW50IHRoZSBnaXZlbiB0aGUg
Z2l2ZW4gdGhlbWUgcGFydC4KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ2FudmFzKiwgUGFy
dCwgU3RhdGUsIGNvbnN0IFdlYlJlY3QmLCBjb25zdCBFeHRyYVBhcmFtcyopIHsgfQorfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cJKHJldmlzaW9uIDEyMDAxOCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTItMDYtMTEgIFhpYW56aHUg
V2FuZyAgPHdhbmd4aWFuemh1QGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIExl
dCBBbmRyb2lkIGFuZCBMaW51eCBzaGFyZSBzb21lIHBsYXRmb3JtLXNwZWNpZmljIEFQSXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4ODAyCisKKyAg
ICAgICAgQWRkZWQgcHVibGljL2xpbnV4aXNoIGFuZCBwdWJsaWMvcGxhdGZvcm0vbGludXhpc2gg
YW5kIG1vdmVkIHNoYXJlYWJsZQorICAgICAgICBoZWFkZXIgZmlsZXMgZnJvbSBwdWJsaWMvbGlu
dXggYW5kIHB1YmxpYy9wbGF0Zm9ybS9saW51eCB0byB0aGUgbmV3CisgICAgICAgIGRpcmVjdG9y
aWVzLgorCisgICAgICAgIENyZWF0ZSB0ZW1wb3JhcnkgZm9yd2FyZGluZyBoZWFkZXIgZmlsZXMg
aW4gdGhlIG9yaWdpbmFsIHBsYWNlcy4KKyAgICAgICAgV2lsbCByZW1vdmUgdGhlbSBhZnRlciBD
aHJvbWl1bSB0cmFuc2l0aW9uLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvYW5kcm9pZC9XZWJT
YW5kYm94U3VwcG9ydC5oOgorICAgICAgICAqIHB1YmxpYy9ndGsvV2ViRm9udEluZm8uaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBwdWJsaWMvbGludXgvV2ViRm9udEluZm8uaDoKKyAgICAgICAgKiBw
dWJsaWMvbGludXgvV2ViRm9udFJlbmRlclN0eWxlLmg6CisgICAgICAgICogcHVibGljL2xpbnV4
L1dlYkZvbnRSZW5kZXJpbmcuaDoKKyAgICAgICAgKiBwdWJsaWMvbGludXgvV2ViUmVuZGVyVGhl
bWUuaDoKKyAgICAgICAgKiBwdWJsaWMvbGludXgvV2ViU2FuZGJveFN1cHBvcnQuaDoKKyAgICAg
ICAgKiBwdWJsaWMvbGludXhpc2g6IEFkZGVkLgorICAgICAgICAqIHB1YmxpYy9saW51eGlzaC9X
ZWJGb250SW5mby5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9s
aW51eC9XZWJGb250SW5mby5oLgorICAgICAgICAqIHB1YmxpYy9saW51eGlzaC9XZWJGb250UmVu
ZGVyU3R5bGUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGlu
dXgvV2ViRm9udFJlbmRlclN0eWxlLmguCisgICAgICAgICogcHVibGljL2xpbnV4aXNoL1dlYkZv
bnRSZW5kZXJpbmcuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
bGludXgvV2ViRm9udFJlbmRlcmluZy5oLgorICAgICAgICAqIHB1YmxpYy9saW51eGlzaC9XZWJS
ZW5kZXJUaGVtZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9s
aW51eC9XZWJSZW5kZXJUaGVtZS5oLgorICAgICAgICAqIHB1YmxpYy9saW51eGlzaC9XZWJTYW5k
Ym94U3VwcG9ydC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9s
aW51eC9XZWJTYW5kYm94U3VwcG9ydC5oLgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9hbmRy
b2lkL1dlYlNhbmRib3hTdXBwb3J0Lmg6CisgICAgICAgICogcHVibGljL3BsYXRmb3JtL2FuZHJv
aWQvV2ViVGhlbWVFbmdpbmUuaDoKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vbGludXgvV2Vi
Rm9udEZhbWlseS5oOgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9saW51eC9XZWJTYW5kYm94
U3VwcG9ydC5oOgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9saW51eC9XZWJUaGVtZUVuZ2lu
ZS5oOgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9saW51eGlzaDogQWRkZWQuCisgICAgICAg
ICogcHVibGljL3BsYXRmb3JtL2xpbnV4aXNoL1dlYkZvbnRGYW1pbHkuaDogQ29waWVkIGZyb20g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vbGludXgvV2ViRm9udEZhbWls
eS5oLgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9saW51eGlzaC9XZWJTYW5kYm94U3VwcG9y
dC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9s
aW51eC9XZWJTYW5kYm94U3VwcG9ydC5oLgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9saW51
eGlzaC9XZWJUaGVtZUVuZ2luZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9wbGF0Zm9ybS9saW51eC9XZWJUaGVtZUVuZ2luZS5oLgorICAgICAgICAqIHNyYy9Q
bGF0Zm9ybVN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TdXBwb3J0Ojpn
ZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVN1
cHBvcnQ6OmdldFJlbmRlclN0eWxlRm9yU3RyaWtlKToKKyAgICAgICAgKiBzcmMvYW5kcm9pZC9X
ZWJGb250SW5mby5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViRm9udEluZm86OnNldFN1YnBpeGVsUG9zaXRpb25pbmcpOgorICAgICAgICAoV2ViS2l0
OjpXZWJGb250SW5mbzo6ZmFtaWx5Rm9yQ2hhcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJGb250
SW5mbzo6cmVuZGVyU3R5bGVGb3JTdHJpa2UpOgorICAgICAgICAqIHNyYy9saW51eC9XZWJGb250
SW5mby5jcHA6CisgICAgICAgICogc3JjL2xpbnV4L1dlYkZvbnRSZW5kZXJTdHlsZS5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogc3JjL2xpbnV4L1dlYkZvbnRSZW5kZXJpbmcuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIHNyYy9saW51eC9XZWJSZW5kZXJUaGVtZS5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogc3JjL2xpbnV4aXNoOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGludXhpc2gvV2ViRm9u
dFJlbmRlclN0eWxlLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
bGludXgvV2ViRm9udFJlbmRlclN0eWxlLmNwcC4KKyAgICAgICAgKiBzcmMvbGludXhpc2gvV2Vi
Rm9udFJlbmRlcmluZy5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L2xpbnV4L1dlYkZvbnRSZW5kZXJpbmcuY3BwLgorICAgICAgICAqIHNyYy9saW51eGlzaC9XZWJS
ZW5kZXJUaGVtZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2xp
bnV4L1dlYlJlbmRlclRoZW1lLmNwcC4KKwogMjAxMi0wNi0xMSAgRGFuYSBKYW5zZW5zICA8ZGFu
YWtqQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFNlcGFyYXRlIENDVmlkZW9E
cmF3UXVhZCBhbmQgZnJvbSB0aGUgbGF5ZXIgdHJlZSBhbmQgdmlkZW8gcHJvdmlkZXIgYnkgcmVt
b3ZpbmcgTWFuYWdlZFRleHR1cmUgYW5kIFdlYlZpZGVvRnJhbWUgcG9pbnRlcnMgZnJvbSB0aGUg
cXVhZApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24gMTIwMDE3KQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC0y
ODMsOSArMjgzLDkgQEAKICAgICAgICAgICAgICAgICAncHVibGljL2FuZHJvaWQvV2ViSW5wdXRF
dmVudEZhY3RvcnkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9hbmRyb2lkL1dlYlNhbmRi
b3hTdXBwb3J0LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvZ3RrL1dlYklucHV0RXZlbnRG
YWN0b3J5LmgnLAotICAgICAgICAgICAgICAgICdwdWJsaWMvbGludXgvV2ViRm9udFJlbmRlclN0
eWxlLmgnLAotICAgICAgICAgICAgICAgICdwdWJsaWMvbGludXgvV2ViRm9udFJlbmRlcmluZy5o
JywKLSAgICAgICAgICAgICAgICAncHVibGljL2xpbnV4L1dlYlJlbmRlclRoZW1lLmgnLAorICAg
ICAgICAgICAgICAgICdwdWJsaWMvbGludXhpc2gvV2ViRm9udFJlbmRlclN0eWxlLmgnLAorICAg
ICAgICAgICAgICAgICdwdWJsaWMvbGludXhpc2gvV2ViRm9udFJlbmRlcmluZy5oJywKKyAgICAg
ICAgICAgICAgICAncHVibGljL2xpbnV4aXNoL1dlYlJlbmRlclRoZW1lLmgnLAogICAgICAgICAg
ICAgICAgICdwdWJsaWMvbWFjL1dlYklucHV0RXZlbnRGYWN0b3J5LmgnLAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvbWFjL1dlYlNhbmRib3hTdXBwb3J0LmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvbWFjL1dlYlNjcmVlbkluZm9GYWN0b3J5LmgnLApAQCAtNDI0LDExICs0MjQsMTIgQEAK
ICAgICAgICAgICAgICAgICAnc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5oJywKICAgICAg
ICAgICAgICAgICAnc3JjL1ByZXJlbmRlcmVyQ2xpZW50SW1wbC5oJywKICAgICAgICAgICAgICAg
ICAnc3JjL1ByZXJlbmRlcmVyQ2xpZW50SW1wbC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMv
YW5kcm9pZC9XZWJGb250SW5mby5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvYW5kcm9pZC9X
ZWJJbnB1dEV2ZW50RmFjdG9yeS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvbGludXgvV2Vi
Rm9udEluZm8uY3BwJywKLSAgICAgICAgICAgICAgICAnc3JjL2xpbnV4L1dlYkZvbnRSZW5kZXJp
bmcuY3BwJywKLSAgICAgICAgICAgICAgICAnc3JjL2xpbnV4L1dlYkZvbnRSZW5kZXJTdHlsZS5j
cHAnLAotICAgICAgICAgICAgICAgICdzcmMvbGludXgvV2ViUmVuZGVyVGhlbWUuY3BwJywKKyAg
ICAgICAgICAgICAgICAnc3JjL2xpbnV4aXNoL1dlYkZvbnRSZW5kZXJpbmcuY3BwJywKKyAgICAg
ICAgICAgICAgICAnc3JjL2xpbnV4aXNoL1dlYkZvbnRSZW5kZXJTdHlsZS5jcHAnLAorICAgICAg
ICAgICAgICAgICdzcmMvbGludXhpc2gvV2ViUmVuZGVyVGhlbWUuY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL3gxMS9XZWJTY3JlZW5JbmZvRmFjdG9yeS5jcHAnLAogICAgICAgICAgICAgICAg
ICdzcmMvbWFjL1dlYklucHV0RXZlbnRGYWN0b3J5Lm1tJywKICAgICAgICAgICAgICAgICAnc3Jj
L21hYy9XZWJTY3JlZW5JbmZvRmFjdG9yeS5tbScsCkBAIC03NzQsMTEgKzc3NSwxMiBAQAogICAg
ICAgICAgICAgICAgICAgICAnaW5jbHVkZV9kaXJzJzogWwogICAgICAgICAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy94MTEnLAogICAgICAgICAgICAgICAgICAgICAgICAgJ3B1YmxpYy9saW51eCcs
CisgICAgICAgICAgICAgICAgICAgICAgICAncHVibGljL2xpbnV4aXNoJywKICAgICAgICAgICAg
ICAgICAgICAgXSwKICAgICAgICAgICAgICAgICB9LCB7ICMgZWxzZTogdXNlX3gxMSAhPSAxCiAg
ICAgICAgICAgICAgICAgICAgICdzb3VyY2VzLyc6IFsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICMgRklYTUU6IFB1dCB0aGlzIHJ1bGUgaW4gQ2hyb21pdW0ncyBidWlsZC9maWxlbmFtZV9ydWxl
cy5neXBpLgogICAgICAgICAgICAgICAgICAgICAgICAgWydleGNsdWRlJywgJy94MTEvJ10sCi0g
ICAgICAgICAgICAgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAnL2xpbnV4LyddLAogICAgICAgICAg
ICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgICAgIFsndG9v
bGtpdF91c2VzX2d0ayA9PSAxJywgewpAQCAtNzg4LDE4ICs3OTAsMTEgQEAKICAgICAgICAgICAg
ICAgICAgICAgJ2luY2x1ZGVfZGlycyc6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICdwdWJs
aWMvZ3RrJywKICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LCB7ICMg
ZWxzZTogdG9vbGtpdF91c2VzX2d0ayAhPSAxCi0gICAgICAgICAgICAgICAgICAgICdzb3VyY2Vz
Lyc6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgIFsnZXhjbHVkZScsICcvZ3RrLyddLAotICAg
ICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgICAg
IFsnT1M9PSJhbmRyb2lkIicsIHsKICAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6
IFsKICAgICAgICAgICAgICAgICAgICAgICAgICdwdWJsaWMvYW5kcm9pZCcsCi0gICAgICAgICAg
ICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwgeyAjIGVsc2U6IE9TIT0iYW5kcm9pZCIK
LSAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMvJzogWwotICAgICAgICAgICAgICAgICAgICAg
ICAgWydleGNsdWRlJywgJy9hbmRyb2lkLyddLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9saW51eGlzaCcsCiAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAg
fV0sCiAgICAgICAgICAgICAgICAgIyBUT0RPOiB3ZSBleGNsdWRlIENHLmNwcCBvbiBib3RoIHNp
ZGVzIG9mIHRoZSBiZWxvdyBjb25kaXRpb25hbC4gTW92ZSBlbHNld2hlcmU/CkBAIC04MTIsNyAr
ODA3LDYgQEAKICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICB9LCB7ICMg
ZWxzZTogT1MhPSJtYWMiCiAgICAgICAgICAgICAgICAgICAgICdzb3VyY2VzLyc6IFsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIFsnZXhjbHVkZScsICcvbWFjLyddLAogICAgICAgICAgICAgICAg
ICAgICAgICAgWydleGNsdWRlJywgJ0NHXFwuY3BwJCddLAogICAgICAgICAgICAgICAgICAgICBd
LAogICAgICAgICAgICAgICAgIH1dLApAQCAtODIxLDcgKzgxNSw2IEBACiAgICAgICAgICAgICAg
ICAgICAgICAgICAncHVibGljL3dpbicsCiAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAg
ICAgICAgICAgfSwgeyAjIGVsc2U6IE9TIT0id2luIgotICAgICAgICAgICAgICAgICAgICAnc291
cmNlcy8nOiBbWydleGNsdWRlJywgJy93aW4vJ11dLAogICAgICAgICAgICAgICAgICAgICAndmFy
aWFibGVzJzogewogICAgICAgICAgICAgICAgICAgICAgICAgIyBGSVhNRTogVHVybiBvbiB3YXJu
aW5ncyBvbiBXaW5kb3dzLgogICAgICAgICAgICAgICAgICAgICAgICAgJ2Nocm9taXVtX2NvZGUn
OiAxLApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvYW5kcm9pZC9XZWJTYW5k
Ym94U3VwcG9ydC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L2FuZHJvaWQvV2ViU2FuZGJveFN1cHBvcnQuaAkocmV2aXNpb24gMTIwMDE3KQorKysgU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvYW5kcm9pZC9XZWJTYW5kYm94U3VwcG9ydC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw1IEBACiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KLQotI2lmbmRlZiBXRUJLSVRfTUlHUkFURV9IRUFERVJTX1RPX1BMQVRGT1JNCi0j
aW5jbHVkZSAiLi4vcGxhdGZvcm0vYW5kcm9pZC9XZWJTYW5kYm94U3VwcG9ydC5oIgotI2VuZGlm
CisvLyBGSVhNRTogUmVtb3ZlIG9uY2UgaHR0cDovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzEw
NTQ0MTAzLyBpcyBsYW5kZWQuCisjaW5jbHVkZSAiLi4vbGludXhpc2gvV2ViU2FuZGJveFN1cHBv
cnQuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2d0ay9XZWJGb250SW5m
by5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2d0ay9XZWJG
b250SW5mby5oCShyZXZpc2lvbiAxMjAwMTcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9ndGsvV2ViRm9udEluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMSwzMiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAq
IGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0g
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLS8vIFRo
aXMgZmlsZSBjYW4gYmUgZGVsZXRlZCBvbmNlIGh0dHA6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9y
Zy84MDU0MDI1LwotLy8gZ2V0cyBjb21taXR0ZWQgaW4gQ2hyb21pdW0uCi0jaW5jbHVkZSAiLi4v
bGludXgvV2ViRm9udEluZm8uaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L2xpbnV4L1dlYkZvbnRJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvbGludXgvV2ViRm9udEluZm8uaAkocmV2aXNpb24gMTIwMDE3KQorKysgU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViRm9udEluZm8uaAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNTIgKzI3LDUgQEAKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwotCi0jaWZuZGVmIFdlYkZvbnRJbmZvX2gKLSNkZWZpbmUgV2ViRm9udEluZm9faAotCi0jaW5j
bHVkZSAiLi4vbGludXgvV2ViRm9udFJlbmRlclN0eWxlLmgiCi0jaW5jbHVkZSAiLi4vcGxhdGZv
cm0vV2ViQ1N0cmluZy5oIgotI2luY2x1ZGUgIi4uL3BsYXRmb3JtL2xpbnV4L1dlYkZvbnRGYW1p
bHkuaCIKLQotI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotCi1uYW1l
c3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViRm9udEluZm8gewotcHVibGljOgotICAgIC8vIFNl
dCBhIGdsb2JhbCBwcmVmZXJlbmNlIGRlc2NyaWJpbmcgd2hldGhlciByZW5kZXJTdHlsZUZvclN0
cmlrZSgpIHNob3VsZAotICAgIC8vIGVuYWJsZSBzdWJwaXhlbCBwb3NpdGlvbmluZyBvciBub3Qu
IEZvbnRDb25maWcgZG9lc24ndCBjdXJyZW50bHkgcHJvdmlkZQotICAgIC8vIGEgcGFyYW1ldGVy
IGZvciBjb250cm9sbGluZyB0aGlzLgotICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIHZvaWQgc2V0
U3VicGl4ZWxQb3NpdGlvbmluZyhib29sKTsKLQotICAgIC8vIFJldHVybiBhIGZvbnQgZmFtaWx5
IHdoaWNoIHByb3ZpZGVzIGdseXBocyBmb3IgdGhlIFVuaWNvZGUgY29kZSBwb2ludHMKLSAgICAv
LyBzcGVjaWZpZWQgYnkgfHV0ZjE2fAotICAgIC8vICAgY2hhcmFjdGVyczogYSBuYXRpdmUtZW5k
aWFuIFVURjE2IHN0cmluZwotICAgIC8vICAgbnVtQ2hhcmFjdGVyczogdGhlIG51bWJlciBvZiAx
Ni1iaXQgd29yZHMgaW4gfHV0ZjE2fAotICAgIC8vICAgcHJlZmVycmVkTG9jYWxlOiBwcmVmZXJy
ZWQgbG9jYWxlIGlkZW50aWZpZXIgZm9yIHRoZSB8Y2hhcmFjdGVyc3wKLSAgICAvLyAgICAgICAg
ICAgICAgICAgICAgKGUuZy4gImVuIiwgImphIiwgInpoLUNOIikKLSAgICAvLwotICAgIC8vIFJl
dHVybnM6IHRoZSBmb250IGZhbWlseSBvciBhbiBlbXB0eSBzdHJpbmcgaWYgdGhlIHJlcXVlc3Qg
Y291bGQgbm90IGJlCi0gICAgLy8gc2F0aXNmaWVkLgotICAgIC8vIFJldHVybnM6IHRoZSBmb250
IGZhbWlseSBpbnN0YW5jZS4gVGhlIGluc3RhbmNlIGhhcyBhbiBlbXB0eSBmb250IG5hbWUgaWYg
dGhlIHJlcXVlc3QgY291bGQgbm90IGJlIHNhdGlzZmllZC4KLSAgICBXRUJLSVRfRVhQT1JUIHN0
YXRpYyB2b2lkIGZhbWlseUZvckNoYXJzKGNvbnN0IFdlYlVDaGFyKiBjaGFyYWN0ZXJzLCBzaXpl
X3QgbnVtQ2hhcmFjdGVycywgY29uc3QgY2hhciogcHJlZmVycmVkTG9jYWxlLCBXZWJGb250RmFt
aWx5Kik7Ci0KLSAgICAvLyBGaWxsIG91dCB0aGUgZ2l2ZW4gV2ViRm9udFJlbmRlclN0eWxlIHdp
dGggdGhlIHVzZXIncyBwcmVmZXJlbmNlcyBmb3IKLSAgICAvLyByZW5kZXJpbmcgdGhlIGdpdmVu
IGZvbnQgYXQgdGhlIGdpdmVuIHNpemUuCi0gICAgLy8gICBmYW1pbHk6IGkuZS4gIlRpbWVzIE5l
dyBSb21hbiIKLSAgICAvLyAgIHNpemVBbmRTdHlsZToKLSAgICAvLyAgICAgIDMzMjIyMjIyMjIy
MjExMTExMTExMTEKLSAgICAvLyAgICAgIDEwOTg3NjU0MzIxMDk4NzY1NDMyMTA5ODc2NTQzMjEw
Ci0gICAgLy8gICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgICAvLyAg
ICAgfC4uLi4uLi4uLi4uLi4uU2l6ZS4uLi4uLi4uLi4uLklCfAotICAgIC8vICAgICArLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgLy8gICAgIEk6IGl0YWxpYyBmbGFnCi0g
ICAgLy8gICAgIEI6IGJvbGQgZmxhZwotICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIHZvaWQgcmVu
ZGVyU3R5bGVGb3JTdHJpa2UoY29uc3QgY2hhciogZmFtaWx5LCBpbnQgc2l6ZUFuZFN0eWxlLCBX
ZWJGb250UmVuZGVyU3R5bGUqIHJlc3VsdCk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQK
LQotI2VuZGlmCisvLyBGSVhNRTogUmVtb3ZlIG9uY2UgaHR0cDovL2NvZGVyZXZpZXcuY2hyb21p
dW0ub3JnLzEwNTQ0MTAzLyBpcyBsYW5kZWQuCisjaW5jbHVkZSAiLi4vbGludXhpc2gvV2ViRm9u
dEluZm8uaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYkZv
bnRSZW5kZXJTdHlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL2xpbnV4L1dlYkZvbnRSZW5kZXJTdHlsZS5oCShyZXZpc2lvbiAxMjAwMTcpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJGb250UmVuZGVyU3R5bGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMjcsMzggKzI3LDUgQEAKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwotCi0jaWZuZGVmIFdlYkZvbnRSZW5kZXJTdHlsZV9oCi0jZGVmaW5lIFdlYkZv
bnRSZW5kZXJTdHlsZV9oCi0KLSNpbmNsdWRlICIuLi9wbGF0Zm9ybS9XZWJDb21tb24uaCIKLQot
bmFtZXNwYWNlIFdlYkNvcmUgeyBzdHJ1Y3QgRm9udFJlbmRlclN0eWxlOyB9Ci0KLW5hbWVzcGFj
ZSBXZWJLaXQgewotCi1zdHJ1Y3QgV0VCS0lUX0VYUE9SVCBXZWJGb250UmVuZGVyU3R5bGUgewot
ICAgIC8vIEVhY2ggb2YgdGhlIHVzZSogbWVtYmVycyBiZWxvdyBjYW4gdGFrZSBvbmUgb2YgdGhy
ZWUgdmFsdWVzOgotICAgIC8vICAgMDogb2ZmCi0gICAgLy8gICAxOiBvbgotICAgIC8vICAgMjog
bm8gcHJlZmVyZW5jZSBleHByZXNzZWQKLSAgICBjaGFyIHVzZUJpdG1hcHM7IC8vIHVzZSBlbWJl
ZGRlZCBiaXRtYXAgc3RyaWtlIGlmIHBvc3NpYmxlCi0gICAgY2hhciB1c2VBdXRvSGludDsgLy8g
dXNlICdhdXRvJyBoaW50aW5nIChGcmVlVHlwZSBzcGVjaWZpYykKLSAgICBjaGFyIHVzZUhpbnRp
bmc7IC8vIGhpbnQgZ2x5cGhzIHRvIHRoZSBwaXhlbCBncmlkCi0gICAgY2hhciBoaW50U3R5bGU7
IC8vIGxldmVsIG9mIGhpbnRpbmcsIDAuLjMKLSAgICBjaGFyIHVzZUFudGlBbGlhczsgLy8gYW50
aWFsaWFzIGdseXBoIHNoYXBlcwotICAgIGNoYXIgdXNlU3VicGl4ZWw7IC8vIERFUFJFQ0FURUQ6
IHJlcGxhY2VkIGJ5IHVzZVN1YnBpeGVsUmVuZGVyaW5nCi0gICAgY2hhciB1c2VTdWJwaXhlbFJl
bmRlcmluZzsgLy8gdXNlIHN1YnBpeGVsIHJlbmRlcmluZyAocGFydGlhbGx5LWZpbGxlZCBwaXhl
bHMpCi0gICAgY2hhciB1c2VTdWJwaXhlbFBvc2l0aW9uaW5nOyAvLyB1c2Ugc3VicGl4ZWwgcG9z
aXRpb25pbmcgKGZyYWN0aW9uYWwgWCBwb3NpdGlvbnMgZm9yIGdseXBocykKLQotI2lmZGVmIFdF
QktJVF9JTVBMRU1FTlRBVElPTgotICAgIC8vIFRyYW5zbGF0ZXMgdGhlIG1lbWJlcnMgb2YgdGhp
cyBzdHJ1Y3QgdG8gYSBGb250UmVuZGVyU3R5bGUKLSAgICB2b2lkIHRvRm9udFJlbmRlclN0eWxl
KFdlYkNvcmU6OkZvbnRSZW5kZXJTdHlsZSopOwotI2VuZGlmCi0KLSAgICB2b2lkIHNldERlZmF1
bHRzKCk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYkZvbnRS
ZW5kZXJTdHlsZV9oCisvLyBGSVhNRTogUmVtb3ZlIG9uY2UgaHR0cDovL2NvZGVyZXZpZXcuY2hy
b21pdW0ub3JnLzEwNTQ0MTAzLyBpcyBsYW5kZWQuCisjaW5jbHVkZSAiLi4vbGludXhpc2gvV2Vi
Rm9udFJlbmRlclN0eWxlLmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9s
aW51eC9XZWJGb250UmVuZGVyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvbGludXgvV2ViRm9udFJlbmRlcmluZy5oCShyZXZpc2lvbiAxMjAwMTcpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJGb250UmVuZGVyaW5nLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDI5ICsyNyw1IEBACiAgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KLQotI2lmbmRlZiBXZWJGb250UmVuZGVyaW5nX2gKLSNkZWZpbmUgV2Vi
Rm9udFJlbmRlcmluZ19oCi0KLSNpbmNsdWRlICIuLi9wbGF0Zm9ybS9XZWJDb21tb24uaCIKLSNp
bmNsdWRlIDxTa0ZvbnRIb3N0Lmg+Ci0jaW5jbHVkZSA8U2tQYWludC5oPgotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotY2xhc3MgV2ViRm9udFJlbmRlcmluZyB7Ci1wdWJsaWM6Ci0gICAgLy8gU2V0
IGdsb2JhbCBmb250IHJlbmRlcmVyaW5nIHByZWZlcmVuY2VzLgotCi0gICAgV0VCS0lUX0VYUE9S
VCBzdGF0aWMgdm9pZCBzZXRIaW50aW5nKFNrUGFpbnQ6OkhpbnRpbmcpOwotICAgIFdFQktJVF9F
WFBPUlQgc3RhdGljIHZvaWQgc2V0QW50aUFsaWFzKGJvb2wpOwotICAgIFdFQktJVF9FWFBPUlQg
c3RhdGljIHZvaWQgc2V0U3VicGl4ZWxHbHlwaHMoYm9vbCk7IC8vIERFUFJFQ0FURUQ6IHVzZSBz
ZXRTdWJwaXhlbFJlbmRlcmluZyBpbnN0ZWFkCi0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9p
ZCBzZXRTdWJwaXhlbFJlbmRlcmluZyhib29sKTsKLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2
b2lkIHNldFN1YnBpeGVsUG9zaXRpb25pbmcoYm9vbCk7Ci0gICAgV0VCS0lUX0VYUE9SVCBzdGF0
aWMgdm9pZCBzZXRMQ0RPcmRlcihTa0ZvbnRIb3N0OjpMQ0RPcmRlcik7Ci0gICAgV0VCS0lUX0VY
UE9SVCBzdGF0aWMgdm9pZCBzZXRMQ0RPcmllbnRhdGlvbihTa0ZvbnRIb3N0OjpMQ0RPcmllbnRh
dGlvbik7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCisvLyBGSVhNRTog
UmVtb3ZlIG9uY2UgaHR0cDovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzEwNTQ0MTAzLyBpcyBs
YW5kZWQuCisjaW5jbHVkZSAiLi4vbGludXhpc2gvV2ViRm9udFJlbmRlcmluZy5oIgpJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViUmVuZGVyVGhlbWUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJSZW5kZXJU
aGVtZS5oCShyZXZpc2lvbiAxMjAwMTcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9saW51eC9XZWJSZW5kZXJUaGVtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxNyArMjcsNSBA
QAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCi0KLSNpZm5kZWYgV2ViUmVu
ZGVyVGhlbWVfaAotI2RlZmluZSBXZWJSZW5kZXJUaGVtZV9oCi0KLSNpbmNsdWRlICIuLi9wbGF0
Zm9ybS9XZWJDb21tb24uaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLS8vIFNldCBjYXJldCBi
bGluayBpbnRlcnZhbCBmb3IgdGV4dCBpbnB1dCBhcmVhcy4KLVdFQktJVF9FWFBPUlQgdm9pZCBz
ZXRDYXJldEJsaW5rSW50ZXJ2YWwoZG91YmxlKTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0K
LSNlbmRpZgorLy8gRklYTUU6IFJlbW92ZSBvbmNlIGh0dHA6Ly9jb2RlcmV2aWV3LmNocm9taXVt
Lm9yZy8xMDU0NDEwMy8gaXMgbGFuZGVkLgorI2luY2x1ZGUgIi4uL2xpbnV4aXNoL1dlYlJlbmRl
clRoZW1lLmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJT
YW5kYm94U3VwcG9ydC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL2xpbnV4L1dlYlNhbmRib3hTdXBwb3J0LmgJKHJldmlzaW9uIDEyMDAxNykKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYlNhbmRib3hTdXBwb3J0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDcgKzI3LDUgQEAKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwotCi0jaWZuZGVmIFdFQktJVF9NSUdSQVRFX0hFQURFUlNfVE9fUExBVEZPUk0KLSNp
bmNsdWRlICIuLi9wbGF0Zm9ybS9saW51eC9XZWJTYW5kYm94U3VwcG9ydC5oIgotI2VuZGlmCisv
LyBGSVhNRTogUmVtb3ZlIG9uY2UgaHR0cDovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzEwNTQ0
MTAzLyBpcyBsYW5kZWQuCisjaW5jbHVkZSAiLi4vbGludXhpc2gvV2ViU2FuZGJveFN1cHBvcnQu
aCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4aXNoL1dlYkZvbnRJ
bmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXhp
c2gvV2ViRm9udEluZm8uaAkocmV2aXNpb24gMTIwMDA2KQkoZnJvbSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9saW51eC9XZWJGb250SW5mby5oOjEyMDAwNikKKysrIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL2xpbnV4aXNoL1dlYkZvbnRJbmZvLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRm9udEluZm9faAorI2RlZmluZSBXZWJGb250SW5m
b19oCisKKyNpbmNsdWRlICIuLi9saW51eC9XZWJGb250UmVuZGVyU3R5bGUuaCIKKyNpbmNsdWRl
ICIuLi9wbGF0Zm9ybS9XZWJDU3RyaW5nLmgiCisjaW5jbHVkZSAiLi4vcGxhdGZvcm0vbGludXgv
V2ViRm9udEZhbWlseS5oIgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dW5pc3Rk
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJGb250SW5mbyB7CitwdWJsaWM6
CisgICAgLy8gU2V0IGEgZ2xvYmFsIHByZWZlcmVuY2UgZGVzY3JpYmluZyB3aGV0aGVyIHJlbmRl
clN0eWxlRm9yU3RyaWtlKCkgc2hvdWxkCisgICAgLy8gZW5hYmxlIHN1YnBpeGVsIHBvc2l0aW9u
aW5nIG9yIG5vdC4gRm9udENvbmZpZyBkb2Vzbid0IGN1cnJlbnRseSBwcm92aWRlCisgICAgLy8g
YSBwYXJhbWV0ZXIgZm9yIGNvbnRyb2xsaW5nIHRoaXMuCisgICAgV0VCS0lUX0VYUE9SVCBzdGF0
aWMgdm9pZCBzZXRTdWJwaXhlbFBvc2l0aW9uaW5nKGJvb2wpOworCisgICAgLy8gUmV0dXJuIGEg
Zm9udCBmYW1pbHkgd2hpY2ggcHJvdmlkZXMgZ2x5cGhzIGZvciB0aGUgVW5pY29kZSBjb2RlIHBv
aW50cworICAgIC8vIHNwZWNpZmllZCBieSB8dXRmMTZ8CisgICAgLy8gICBjaGFyYWN0ZXJzOiBh
IG5hdGl2ZS1lbmRpYW4gVVRGMTYgc3RyaW5nCisgICAgLy8gICBudW1DaGFyYWN0ZXJzOiB0aGUg
bnVtYmVyIG9mIDE2LWJpdCB3b3JkcyBpbiB8dXRmMTZ8CisgICAgLy8gICBwcmVmZXJyZWRMb2Nh
bGU6IHByZWZlcnJlZCBsb2NhbGUgaWRlbnRpZmllciBmb3IgdGhlIHxjaGFyYWN0ZXJzfAorICAg
IC8vICAgICAgICAgICAgICAgICAgICAoZS5nLiAiZW4iLCAiamEiLCAiemgtQ04iKQorICAgIC8v
CisgICAgLy8gUmV0dXJuczogdGhlIGZvbnQgZmFtaWx5IG9yIGFuIGVtcHR5IHN0cmluZyBpZiB0
aGUgcmVxdWVzdCBjb3VsZCBub3QgYmUKKyAgICAvLyBzYXRpc2ZpZWQuCisgICAgLy8gUmV0dXJu
czogdGhlIGZvbnQgZmFtaWx5IGluc3RhbmNlLiBUaGUgaW5zdGFuY2UgaGFzIGFuIGVtcHR5IGZv
bnQgbmFtZSBpZiB0aGUgcmVxdWVzdCBjb3VsZCBub3QgYmUgc2F0aXNmaWVkLgorICAgIFdFQktJ
VF9FWFBPUlQgc3RhdGljIHZvaWQgZmFtaWx5Rm9yQ2hhcnMoY29uc3QgV2ViVUNoYXIqIGNoYXJh
Y3RlcnMsIHNpemVfdCBudW1DaGFyYWN0ZXJzLCBjb25zdCBjaGFyKiBwcmVmZXJyZWRMb2NhbGUs
IFdlYkZvbnRGYW1pbHkqKTsKKworICAgIC8vIEZpbGwgb3V0IHRoZSBnaXZlbiBXZWJGb250UmVu
ZGVyU3R5bGUgd2l0aCB0aGUgdXNlcidzIHByZWZlcmVuY2VzIGZvcgorICAgIC8vIHJlbmRlcmlu
ZyB0aGUgZ2l2ZW4gZm9udCBhdCB0aGUgZ2l2ZW4gc2l6ZS4KKyAgICAvLyAgIGZhbWlseTogaS5l
LiAiVGltZXMgTmV3IFJvbWFuIgorICAgIC8vICAgc2l6ZUFuZFN0eWxlOgorICAgIC8vICAgICAg
MzMyMjIyMjIyMjIyMTExMTExMTExMQorICAgIC8vICAgICAgMTA5ODc2NTQzMjEwOTg3NjU0MzIx
MDk4NzY1NDMyMTAKKyAgICAvLyAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
KworICAgIC8vICAgICB8Li4uLi4uLi4uLi4uLi5TaXplLi4uLi4uLi4uLi4uSUJ8CisgICAgLy8g
ICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAvLyAgICAgSTogaXRh
bGljIGZsYWcKKyAgICAvLyAgICAgQjogYm9sZCBmbGFnCisgICAgV0VCS0lUX0VYUE9SVCBzdGF0
aWMgdm9pZCByZW5kZXJTdHlsZUZvclN0cmlrZShjb25zdCBjaGFyKiBmYW1pbHksIGludCBzaXpl
QW5kU3R5bGUsIFdlYkZvbnRSZW5kZXJTdHlsZSogcmVzdWx0KTsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L2xpbnV4aXNoL1dlYkZvbnRSZW5kZXJTdHlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL2xpbnV4aXNoL1dlYkZvbnRSZW5kZXJTdHlsZS5oCShyZXZpc2lv
biAxMjAwMDYpCShmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYkZv
bnRSZW5kZXJTdHlsZS5oOjEyMDAwNikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L2xpbnV4aXNoL1dlYkZvbnRSZW5kZXJTdHlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdlYkZvbnRSZW5kZXJTdHlsZV9oCisjZGVmaW5lIFdlYkZvbnRSZW5kZXJT
dHlsZV9oCisKKyNpbmNsdWRlICIuLi9wbGF0Zm9ybS9XZWJDb21tb24uaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeyBzdHJ1Y3QgRm9udFJlbmRlclN0eWxlOyB9CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitzdHJ1Y3QgV0VCS0lUX0VYUE9SVCBXZWJGb250UmVuZGVyU3R5bGUgeworICAgIC8vIEVh
Y2ggb2YgdGhlIHVzZSogbWVtYmVycyBiZWxvdyBjYW4gdGFrZSBvbmUgb2YgdGhyZWUgdmFsdWVz
OgorICAgIC8vICAgMDogb2ZmCisgICAgLy8gICAxOiBvbgorICAgIC8vICAgMjogbm8gcHJlZmVy
ZW5jZSBleHByZXNzZWQKKyAgICBjaGFyIHVzZUJpdG1hcHM7IC8vIHVzZSBlbWJlZGRlZCBiaXRt
YXAgc3RyaWtlIGlmIHBvc3NpYmxlCisgICAgY2hhciB1c2VBdXRvSGludDsgLy8gdXNlICdhdXRv
JyBoaW50aW5nIChGcmVlVHlwZSBzcGVjaWZpYykKKyAgICBjaGFyIHVzZUhpbnRpbmc7IC8vIGhp
bnQgZ2x5cGhzIHRvIHRoZSBwaXhlbCBncmlkCisgICAgY2hhciBoaW50U3R5bGU7IC8vIGxldmVs
IG9mIGhpbnRpbmcsIDAuLjMKKyAgICBjaGFyIHVzZUFudGlBbGlhczsgLy8gYW50aWFsaWFzIGds
eXBoIHNoYXBlcworICAgIGNoYXIgdXNlU3VicGl4ZWw7IC8vIERFUFJFQ0FURUQ6IHJlcGxhY2Vk
IGJ5IHVzZVN1YnBpeGVsUmVuZGVyaW5nCisgICAgY2hhciB1c2VTdWJwaXhlbFJlbmRlcmluZzsg
Ly8gdXNlIHN1YnBpeGVsIHJlbmRlcmluZyAocGFydGlhbGx5LWZpbGxlZCBwaXhlbHMpCisgICAg
Y2hhciB1c2VTdWJwaXhlbFBvc2l0aW9uaW5nOyAvLyB1c2Ugc3VicGl4ZWwgcG9zaXRpb25pbmcg
KGZyYWN0aW9uYWwgWCBwb3NpdGlvbnMgZm9yIGdseXBocykKKworI2lmZGVmIFdFQktJVF9JTVBM
RU1FTlRBVElPTgorICAgIC8vIFRyYW5zbGF0ZXMgdGhlIG1lbWJlcnMgb2YgdGhpcyBzdHJ1Y3Qg
dG8gYSBGb250UmVuZGVyU3R5bGUKKyAgICB2b2lkIHRvRm9udFJlbmRlclN0eWxlKFdlYkNvcmU6
OkZvbnRSZW5kZXJTdHlsZSopOworI2VuZGlmCisKKyAgICB2b2lkIHNldERlZmF1bHRzKCk7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkZvbnRSZW5kZXJTdHls
ZV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eGlzaC9XZWJGb250
UmVuZGVyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
bGludXhpc2gvV2ViRm9udFJlbmRlcmluZy5oCShyZXZpc2lvbiAxMjAwMDYpCShmcm9tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYkZvbnRSZW5kZXJpbmcuaDoxMjAwMDYp
CisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eGlzaC9XZWJGb250UmVuZGVy
aW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRm9udFJlbmRl
cmluZ19oCisjZGVmaW5lIFdlYkZvbnRSZW5kZXJpbmdfaAorCisjaW5jbHVkZSAiLi4vcGxhdGZv
cm0vV2ViQ29tbW9uLmgiCisjaW5jbHVkZSA8U2tGb250SG9zdC5oPgorI2luY2x1ZGUgPFNrUGFp
bnQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkZvbnRSZW5kZXJpbmcgewor
cHVibGljOgorICAgIC8vIFNldCBnbG9iYWwgZm9udCByZW5kZXJlcmluZyBwcmVmZXJlbmNlcy4K
KworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIHZvaWQgc2V0SGludGluZyhTa1BhaW50OjpIaW50
aW5nKTsKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lkIHNldEFudGlBbGlhcyhib29sKTsK
KyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lkIHNldFN1YnBpeGVsR2x5cGhzKGJvb2wpOyAv
LyBERVBSRUNBVEVEOiB1c2Ugc2V0U3VicGl4ZWxSZW5kZXJpbmcgaW5zdGVhZAorICAgIFdFQktJ
VF9FWFBPUlQgc3RhdGljIHZvaWQgc2V0U3VicGl4ZWxSZW5kZXJpbmcoYm9vbCk7CisgICAgV0VC
S0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRTdWJwaXhlbFBvc2l0aW9uaW5nKGJvb2wpOworICAg
IFdFQktJVF9FWFBPUlQgc3RhdGljIHZvaWQgc2V0TENET3JkZXIoU2tGb250SG9zdDo6TENET3Jk
ZXIpOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIHZvaWQgc2V0TENET3JpZW50YXRpb24oU2tG
b250SG9zdDo6TENET3JpZW50YXRpb24pOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXhpc2gvV2Vi
UmVuZGVyVGhlbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9saW51eGlzaC9XZWJSZW5kZXJUaGVtZS5oCShyZXZpc2lvbiAxMjAwMDYpCShmcm9tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYlJlbmRlclRoZW1lLmg6MTIwMDA2KQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXhpc2gvV2ViUmVuZGVyVGhlbWUu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA5IEpvZWwgU3RhbmxleS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlJlbmRlclRoZW1l
X2gKKyNkZWZpbmUgV2ViUmVuZGVyVGhlbWVfaAorCisjaW5jbHVkZSAiLi4vcGxhdGZvcm0vV2Vi
Q29tbW9uLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBTZXQgY2FyZXQgYmxpbmsgaW50
ZXJ2YWwgZm9yIHRleHQgaW5wdXQgYXJlYXMuCitXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Q2FyZXRC
bGlua0ludGVydmFsKGRvdWJsZSk7CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4aXNoL1dlYlNhbmRib3hT
dXBwb3J0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGlu
dXhpc2gvV2ViU2FuZGJveFN1cHBvcnQuaAkocmV2aXNpb24gMTIwMDA2KQkoZnJvbSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJTYW5kYm94U3VwcG9ydC5oOjEyMDAwNikK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4aXNoL1dlYlNhbmRib3hTdXBw
b3J0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0VCS0lUX01JR1JB
VEVfSEVBREVSU19UT19QTEFURk9STQorI2luY2x1ZGUgIi4uL3BsYXRmb3JtL2xpbnV4L1dlYlNh
bmRib3hTdXBwb3J0LmgiCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL3BsYXRmb3JtL2FuZHJvaWQvV2ViU2FuZGJveFN1cHBvcnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9hbmRyb2lkL1dlYlNhbmRib3hT
dXBwb3J0LmgJKHJldmlzaW9uIDEyMDAxNykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL3BsYXRmb3JtL2FuZHJvaWQvV2ViU2FuZGJveFN1cHBvcnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAt
MjcsNSArMjcsNSBAQAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCi0KLSNp
bmNsdWRlICIuLi8uLi8uLi8uLi8uLi9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvYW5kcm9pZC9X
ZWJTYW5kYm94U3VwcG9ydC5oIgorLy8gRklYTUU6IFJlbW92ZSBvbmNlIGh0dHA6Ly9jb2RlcmV2
aWV3LmNocm9taXVtLm9yZy8xMDU0NDEwMy8gaXMgbGFuZGVkLgorI2luY2x1ZGUgIi4uL2xpbnV4
aXNoL1dlYlNhbmRib3hTdXBwb3J0LmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9wbGF0Zm9ybS9hbmRyb2lkL1dlYlRoZW1lRW5naW5lLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vYW5kcm9pZC9XZWJUaGVtZUVuZ2lu
ZS5oCShyZXZpc2lvbiAxMjAwMTcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9w
bGF0Zm9ybS9hbmRyb2lkL1dlYlRoZW1lRW5naW5lLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI3LDUgKzI3
LDUgQEAKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwotCi0jaW5jbHVkZSAi
Li4vLi4vLi4vLi4vLi4vUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL2FuZHJvaWQvV2ViVGhlbWVF
bmdpbmUuaCIKKy8vIEZJWE1FOiBSZW1vdmUgb25jZSBodHRwOi8vY29kZXJldmlldy5jaHJvbWl1
bS5vcmcvMTA1NDQxMDMvIGlzIGxhbmRlZC4KKyNpbmNsdWRlICIuLi9saW51eGlzaC9XZWJUaGVt
ZUVuZ2luZS5oIgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0v
bGludXgvV2ViRm9udEZhbWlseS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL3BsYXRmb3JtL2xpbnV4L1dlYkZvbnRGYW1pbHkuaAkocmV2aXNpb24gMTIwMDE3
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vbGludXgvV2ViRm9u
dEZhbWlseS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw1ICsyNyw1IEBACiAgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KLQotI2luY2x1ZGUgIi4uLy4uLy4uLy4uLy4uL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJGb250RmFtaWx5LmgiCisvLyBGSVhNRTogUmVt
b3ZlIG9uY2UgaHR0cDovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzEwNTQ0MTAzLyBpcyBsYW5k
ZWQuCisjaW5jbHVkZSAiLi4vbGludXhpc2gvV2ViRm9udEZhbWlseS5oIgpJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vbGludXgvV2ViU2FuZGJveFN1cHBvcnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9s
aW51eC9XZWJTYW5kYm94U3VwcG9ydC5oCShyZXZpc2lvbiAxMjAwMTcpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9saW51eC9XZWJTYW5kYm94U3VwcG9ydC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw1ICsyNyw1IEBACiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KLQotI2luY2x1ZGUgIi4uLy4uLy4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9saW51eC9XZWJTYW5kYm94U3VwcG9ydC5oIgorLy8gRklYTUU6IFJlbW92ZSBvbmNl
IGh0dHA6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8xMDU0NDEwMy8gaXMgbGFuZGVkLgorI2lu
Y2x1ZGUgIi4uL2xpbnV4aXNoL1dlYlNhbmRib3hTdXBwb3J0LmgiCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9saW51eC9XZWJUaGVtZUVuZ2luZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL2xpbnV4L1dl
YlRoZW1lRW5naW5lLmgJKHJldmlzaW9uIDEyMDAxNykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL3BsYXRmb3JtL2xpbnV4L1dlYlRoZW1lRW5naW5lLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDUgKzI3LDUgQEAKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwot
Ci0jaW5jbHVkZSAiLi4vLi4vLi4vLi4vLi4vUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL2xpbnV4
L1dlYlRoZW1lRW5naW5lLmgiCisvLyBGSVhNRTogUmVtb3ZlIG9uY2UgaHR0cDovL2NvZGVyZXZp
ZXcuY2hyb21pdW0ub3JnLzEwNTQ0MTAzLyBpcyBsYW5kZWQuCisjaW5jbHVkZSAiLi4vbGludXhp
c2gvV2ViVGhlbWVFbmdpbmUuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L3BsYXRmb3JtL2xpbnV4aXNoL1dlYkZvbnRGYW1pbHkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9saW51eGlzaC9XZWJGb250RmFtaWx5LmgJ
KHJldmlzaW9uIDEyMDAwNikJKGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxh
dGZvcm0vbGludXgvV2ViRm9udEZhbWlseS5oOjEyMDAwNikKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL3BsYXRmb3JtL2xpbnV4aXNoL1dlYkZvbnRGYW1pbHkuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIi4uLy4uLy4uLy4uLy4uL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9saW51eC9XZWJGb250RmFtaWx5LmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9saW51eGlzaC9XZWJTYW5kYm94U3VwcG9ydC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL2xpbnV4
aXNoL1dlYlNhbmRib3hTdXBwb3J0LmgJKHJldmlzaW9uIDEyMDAwNikJKGZyb20gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vbGludXgvV2ViU2FuZGJveFN1cHBvcnQuaDox
MjAwMDYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9saW51eGlz
aC9XZWJTYW5kYm94U3VwcG9ydC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiLi4vLi4vLi4vLi4vLi4vUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYlNh
bmRib3hTdXBwb3J0LmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0
Zm9ybS9saW51eGlzaC9XZWJUaGVtZUVuZ2luZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL2xpbnV4aXNoL1dlYlRoZW1lRW5naW5lLmgJKHJl
dmlzaW9uIDEyMDAwNikJKGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZv
cm0vbGludXgvV2ViVGhlbWVFbmdpbmUuaDoxMjAwMDYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9wbGF0Zm9ybS9saW51eGlzaC9XZWJUaGVtZUVuZ2luZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiLi4vLi4vLi4vLi4vLi4vUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL2xpbnV4L1dlYlRoZW1lRW5naW5lLmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAJKHJldmlzaW9uIDEyMDAxNykK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY4LDEyICs2OCwxMCBAQAogCiAjaWYgT1MoREFSV0lOKQogI2luY2x1ZGUg
PHB1YmxpYy9tYWMvV2ViVGhlbWVFbmdpbmUuaD4KLSNlbGlmIE9TKFVOSVgpICYmICFPUyhBTkRS
T0lEKQorI2VsaWYgT1MoVU5JWCkKICNpbmNsdWRlICJXZWJGb250SW5mby5oIgogI2luY2x1ZGUg
IldlYkZvbnRSZW5kZXJTdHlsZS5oIgotI2luY2x1ZGUgPHB1YmxpYy9saW51eC9XZWJUaGVtZUVu
Z2luZS5oPgotI2VsaWYgT1MoQU5EUk9JRCkKLSNpbmNsdWRlIDxwdWJsaWMvYW5kcm9pZC9XZWJU
aGVtZUVuZ2luZS5oPgorI2luY2x1ZGUgPHB1YmxpYy9saW51eGlzaC9XZWJUaGVtZUVuZ2luZS5o
PgogI2VuZGlmCiAKICNpbmNsdWRlICJOYXRpdmVJbWFnZVNraWEuaCIKQEAgLTI0NywxMyArMjQ1
LDYgQEAgYm9vbCBQbGF0Zm9ybVN1cHBvcnQ6OmxvYWRGb250KE5TRm9udCogcwogI2VsaWYgT1Mo
VU5JWCkKIHZvaWQgUGxhdGZvcm1TdXBwb3J0OjpnZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyhj
b25zdCBVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IG51bUNoYXJhY3RlcnMsIGNvbnN0IGNoYXIq
IHByZWZlcnJlZExvY2FsZSwgRm9udEZhbWlseSogZmFtaWx5KQogewotI2lmIE9TKEFORFJPSUQp
Ci0gICAgLy8gRklYTUU6IFdlIGRvIG5vdCB1c2UgZm9udGNvbmZpZyBvbiBBbmRyb2lkLCBzbyB1
c2Ugc2ltcGxlIGxvZ2ljIGZvciBub3cuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY3NTg3Ci0gICAgZmFtaWx5LT5uYW1lID0gIkFyaWFsIjsKLSAgICBm
YW1pbHktPmlzQm9sZCA9IGZhbHNlOwotICAgIGZhbWlseS0+aXNJdGFsaWMgPSBmYWxzZTsKLSNl
bHNlCiAgICAgV2ViRm9udEZhbWlseSB3ZWJGYW1pbHk7CiAgICAgaWYgKFdlYktpdDo6UGxhdGZv
cm06OmN1cnJlbnQoKS0+c2FuZGJveFN1cHBvcnQoKSkKICAgICAgICAgV2ViS2l0OjpQbGF0Zm9y
bTo6Y3VycmVudCgpLT5zYW5kYm94U3VwcG9ydCgpLT5nZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVy
cyhjaGFyYWN0ZXJzLCBudW1DaGFyYWN0ZXJzLCBwcmVmZXJyZWRMb2NhbGUsICZ3ZWJGYW1pbHkp
OwpAQCAtMjYyLDEyICsyNTMsMTAgQEAgdm9pZCBQbGF0Zm9ybVN1cHBvcnQ6OmdldEZvbnRGYW1p
bHlGb3JDaAogICAgIGZhbWlseS0+bmFtZSA9IFN0cmluZzo6ZnJvbVVURjgod2ViRmFtaWx5Lm5h
bWUuZGF0YSgpLCB3ZWJGYW1pbHkubmFtZS5sZW5ndGgoKSk7CiAgICAgZmFtaWx5LT5pc0JvbGQg
PSB3ZWJGYW1pbHkuaXNCb2xkOwogICAgIGZhbWlseS0+aXNJdGFsaWMgPSB3ZWJGYW1pbHkuaXNJ
dGFsaWM7Ci0jZW5kaWYKIH0KIAogdm9pZCBQbGF0Zm9ybVN1cHBvcnQ6OmdldFJlbmRlclN0eWxl
Rm9yU3RyaWtlKGNvbnN0IGNoYXIqIGZvbnQsIGludCBzaXplQW5kU3R5bGUsIEZvbnRSZW5kZXJT
dHlsZSogcmVzdWx0KQogewotI2lmICFPUyhBTkRST0lEKQogICAgIFdlYkZvbnRSZW5kZXJTdHls
ZSBzdHlsZTsKIAogICAgIGlmIChXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnNhbmRib3hT
dXBwb3J0KCkpCkBAIC0yNzYsNyArMjY1LDYgQEAgdm9pZCBQbGF0Zm9ybVN1cHBvcnQ6OmdldFJl
bmRlclN0eWxlRm9yUwogICAgICAgICBXZWJGb250SW5mbzo6cmVuZGVyU3R5bGVGb3JTdHJpa2Uo
Zm9udCwgc2l6ZUFuZFN0eWxlLCAmc3R5bGUpOwogCiAgICAgc3R5bGUudG9Gb250UmVuZGVyU3R5
bGUocmVzdWx0KTsKLSNlbmRpZgogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL2FuZHJvaWQvV2ViRm9udEluZm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL2FuZHJvaWQvV2ViRm9udEluZm8uY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvYW5kcm9pZC9XZWJGb250SW5mby5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2ViRm9udEluZm8uaCIKKworI2luY2x1ZGUgInBsYXRmb3JtL2xpbnV4aXNoL1dlYkZvbnRGYW1p
bHkuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCit2b2lkIFdlYkZvbnRJbmZvOjpzZXRTdWJwaXhlbFBvc2l0aW9uaW5nKGJvb2wgc3VicGl4
ZWxQb3NpdGlvbmluZykKK3sKK30KKwordm9pZCBXZWJGb250SW5mbzo6ZmFtaWx5Rm9yQ2hhcnMo
Y29uc3QgV2ViVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBudW1DaGFyYWN0ZXJzLCBjb25zdCBj
aGFyKiBwcmVmZXJyZWRMb2NhbGUsIFdlYkZvbnRGYW1pbHkqIGZhbWlseSkKK3sKKyAgICAvLyBG
SVhNRTogV2UgZG8gbm90IHVzZSBmb250Y29uZmlnIG9uIEFuZHJvaWQsIHNvIHVzZSBzaW1wbGUg
bG9naWMgZm9yIG5vdy4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Njc1ODcKKyAgICBmYW1pbHktPm5hbWUgPSAiQXJpYWwiOworICAgIGZhbWlseS0+aXNC
b2xkID0gZmFsc2U7CisgICAgZmFtaWx5LT5pc0l0YWxpYyA9IGZhbHNlOworfQorCit2b2lkIFdl
YkZvbnRJbmZvOjpyZW5kZXJTdHlsZUZvclN0cmlrZShjb25zdCBjaGFyKiBmYW1pbHksIGludCBz
aXplQW5kU3R5bGUsIFdlYkZvbnRSZW5kZXJTdHlsZSogb3V0KQoreworICAgIC8vIEZJWE1FOiBX
ZSBkbyBub3QgdXNlIGZvbnRjb25maWcgb24gQW5kcm9pZCwgc28ganVzdCB1c2UgdGhlIGRlZmF1
bHQgc2V0dGluZ3MuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY3NTg3Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAoKUHJvcGVydHkgY2hhbmdlcyBv
bjogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvYW5kcm9pZC9XZWJGb250SW5mby5jcHAKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvbGludXgvV2ViRm9udEluZm8uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL2xpbnV4L1dlYkZvbnRJbmZvLmNwcAkocmV2aXNpb24gMTIw
MDE3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbGludXgvV2ViRm9udEluZm8uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAiV2ViRm9udEluZm8u
aCIKIAogI2luY2x1ZGUgIldlYkZvbnRSZW5kZXJTdHlsZS5oIgotI2luY2x1ZGUgInBsYXRmb3Jt
L2xpbnV4L1dlYkZvbnRGYW1pbHkuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9saW51eGlzaC9XZWJG
b250RmFtaWx5LmgiCiAjaW5jbHVkZSA8Zm9udGNvbmZpZy9mb250Y29uZmlnLmg+CiAjaW5jbHVk
ZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8dW5pY29kZS91dGYxNi5oPgpJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvbGludXgvV2ViRm9udFJlbmRlclN0eWxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9saW51eC9XZWJGb250UmVuZGVyU3R5bGUu
Y3BwCShyZXZpc2lvbiAxMjAwMTcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9saW51
eC9XZWJGb250UmVuZGVyU3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYzICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
ICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViRm9udFJlbmRlclN0eWxlLmgiCi0KLSNp
bmNsdWRlICJGb250UmVuZGVyU3R5bGUuaCIKLQotdXNpbmcgV2ViQ29yZTo6Rm9udFJlbmRlclN0
eWxlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBXZWJGb250UmVuZGVyU3R5bGU6OnRv
Rm9udFJlbmRlclN0eWxlKEZvbnRSZW5kZXJTdHlsZSogb3V0KQotewotICAgIG91dC0+dXNlQml0
bWFwcyA9IHVzZUJpdG1hcHM7Ci0gICAgb3V0LT51c2VBdXRvSGludCA9IHVzZUF1dG9IaW50Owot
ICAgIG91dC0+dXNlSGludGluZyA9IHVzZUhpbnRpbmc7Ci0gICAgb3V0LT5oaW50U3R5bGUgPSBo
aW50U3R5bGU7Ci0gICAgb3V0LT51c2VBbnRpQWxpYXMgPSB1c2VBbnRpQWxpYXM7Ci0gICAgb3V0
LT51c2VTdWJwaXhlbFJlbmRlcmluZyA9IHVzZVN1YnBpeGVsUmVuZGVyaW5nICE9IDIgPyB1c2VT
dWJwaXhlbFJlbmRlcmluZyA6IHVzZVN1YnBpeGVsOwotICAgIG91dC0+dXNlU3VicGl4ZWxQb3Np
dGlvbmluZyA9IHVzZVN1YnBpeGVsUG9zaXRpb25pbmc7Ci19Ci0KLXZvaWQgV2ViRm9udFJlbmRl
clN0eWxlOjpzZXREZWZhdWx0cygpCi17Ci0gICAgdXNlQml0bWFwcyA9IDI7Ci0gICAgdXNlQXV0
b0hpbnQgPSAyOwotICAgIHVzZUhpbnRpbmcgPSAyOwotICAgIGhpbnRTdHlsZSA9IDA7Ci0gICAg
dXNlQW50aUFsaWFzID0gMjsKLSAgICB1c2VTdWJwaXhlbCA9IDI7Ci0gICAgdXNlU3VicGl4ZWxS
ZW5kZXJpbmcgPSAyOwotICAgIHVzZVN1YnBpeGVsUG9zaXRpb25pbmcgPSAyOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2xpbnV4
L1dlYkZvbnRSZW5kZXJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL2xpbnV4L1dlYkZvbnRSZW5kZXJpbmcuY3BwCShyZXZpc2lvbiAxMjAwMTcpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9saW51eC9XZWJGb250UmVuZGVyaW5nLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw4MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IldlYkZvbnRSZW5kZXJpbmcuaCIKLQotI2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGEuaCIKLQot
dXNpbmcgV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0K
LS8vIHN0YXRpYwotdm9pZCBXZWJGb250UmVuZGVyaW5nOjpzZXRIaW50aW5nKFNrUGFpbnQ6Okhp
bnRpbmcgaGludGluZykKLXsKLSAgICBGb250UGxhdGZvcm1EYXRhOjpzZXRIaW50aW5nKGhpbnRp
bmcpOwotfQotCi0vLyBzdGF0aWMKLXZvaWQgV2ViRm9udFJlbmRlcmluZzo6c2V0QW50aUFsaWFz
KGJvb2wgaXNBbnRpQWxpYXMpCi17Ci0gICAgRm9udFBsYXRmb3JtRGF0YTo6c2V0QW50aUFsaWFz
KGlzQW50aUFsaWFzKTsKLX0KLQotLy8gc3RhdGljCi12b2lkIFdlYkZvbnRSZW5kZXJpbmc6OnNl
dFN1YnBpeGVsR2x5cGhzKGJvb2wgaXNTdWJwaXhlbEdseXBocykKLXsKLSAgICBGb250UGxhdGZv
cm1EYXRhOjpzZXRTdWJwaXhlbFJlbmRlcmluZyhpc1N1YnBpeGVsR2x5cGhzKTsKLX0KLQotLy8g
c3RhdGljCi12b2lkIFdlYkZvbnRSZW5kZXJpbmc6OnNldFN1YnBpeGVsUmVuZGVyaW5nKGJvb2wg
dXNlU3VicGl4ZWxSZW5kZXJpbmcpCi17Ci0gICAgRm9udFBsYXRmb3JtRGF0YTo6c2V0U3VicGl4
ZWxSZW5kZXJpbmcodXNlU3VicGl4ZWxSZW5kZXJpbmcpOwotfQotCi0vLyBzdGF0aWMKLXZvaWQg
V2ViRm9udFJlbmRlcmluZzo6c2V0U3VicGl4ZWxQb3NpdGlvbmluZyhib29sIHVzZVN1YnBpeGVs
UG9zaXRpb25pbmcpCi17Ci0gICAgRm9udFBsYXRmb3JtRGF0YTo6c2V0U3VicGl4ZWxQb3NpdGlv
bmluZyh1c2VTdWJwaXhlbFBvc2l0aW9uaW5nKTsKLX0KLQotLy8gc3RhdGljCi12b2lkIFdlYkZv
bnRSZW5kZXJpbmc6OnNldExDRE9yZGVyKFNrRm9udEhvc3Q6OkxDRE9yZGVyIG9yZGVyKQotewot
ICAgIFNrRm9udEhvc3Q6OlNldFN1YnBpeGVsT3JkZXIob3JkZXIpOwotfQotCi0vLyBzdGF0aWMK
LXZvaWQgV2ViRm9udFJlbmRlcmluZzo6c2V0TENET3JpZW50YXRpb24oU2tGb250SG9zdDo6TENE
T3JpZW50YXRpb24gb3JpZW50YXRpb24pCi17Ci0gICAgU2tGb250SG9zdDo6U2V0U3VicGl4ZWxP
cmllbnRhdGlvbihvcmllbnRhdGlvbik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbGludXgvV2ViUmVuZGVyVGhlbWUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2xpbnV4L1dlYlJlbmRlclRo
ZW1lLmNwcAkocmV2aXNpb24gMTIwMDE3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
bGludXgvV2ViUmVuZGVyVGhlbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ3ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSm9lbCBTdGFubGV5LiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJSZW5kZXJUaGVtZS5oIgotCi0jaW5j
bHVkZSAiUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmgiCi0jaW5jbHVkZSAiV2ViVmlldy5oIgot
Ci11c2luZyBXZWJDb3JlOjpSZW5kZXJUaGVtZTsKLXVzaW5nIFdlYkNvcmU6OlJlbmRlclRoZW1l
Q2hyb21pdW1MaW51eDsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXZvaWQgc2V0Q2FyZXRCbGlu
a0ludGVydmFsKGRvdWJsZSBpbnRlcnZhbCkKLXsKLSAgICBSZW5kZXJUaGVtZUNocm9taXVtTGlu
dXg6OnNldENhcmV0QmxpbmtJbnRlcnZhbChpbnRlcnZhbCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbGludXhpc2gvV2ViRm9u
dFJlbmRlclN0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9saW51eGlzaC9XZWJGb250UmVuZGVyU3R5bGUuY3BwCShyZXZpc2lvbiAxMjAwMDYpCShmcm9t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2xpbnV4L1dlYkZvbnRSZW5kZXJTdHlsZS5jcHA6
MTIwMDA2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbGludXhpc2gvV2ViRm9udFJl
bmRlclN0eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYkZvbnRSZW5kZXJTdHlsZS5oIgorCisjaW5jbHVkZSAiRm9u
dFJlbmRlclN0eWxlLmgiCisKK3VzaW5nIFdlYkNvcmU6OkZvbnRSZW5kZXJTdHlsZTsKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgV2ViRm9udFJlbmRlclN0eWxlOjp0b0ZvbnRSZW5kZXJT
dHlsZShGb250UmVuZGVyU3R5bGUqIG91dCkKK3sKKyAgICBvdXQtPnVzZUJpdG1hcHMgPSB1c2VC
aXRtYXBzOworICAgIG91dC0+dXNlQXV0b0hpbnQgPSB1c2VBdXRvSGludDsKKyAgICBvdXQtPnVz
ZUhpbnRpbmcgPSB1c2VIaW50aW5nOworICAgIG91dC0+aGludFN0eWxlID0gaGludFN0eWxlOwor
ICAgIG91dC0+dXNlQW50aUFsaWFzID0gdXNlQW50aUFsaWFzOworICAgIG91dC0+dXNlU3VicGl4
ZWxSZW5kZXJpbmcgPSB1c2VTdWJwaXhlbFJlbmRlcmluZyAhPSAyID8gdXNlU3VicGl4ZWxSZW5k
ZXJpbmcgOiB1c2VTdWJwaXhlbDsKKyAgICBvdXQtPnVzZVN1YnBpeGVsUG9zaXRpb25pbmcgPSB1
c2VTdWJwaXhlbFBvc2l0aW9uaW5nOworfQorCit2b2lkIFdlYkZvbnRSZW5kZXJTdHlsZTo6c2V0
RGVmYXVsdHMoKQoreworICAgIHVzZUJpdG1hcHMgPSAyOworICAgIHVzZUF1dG9IaW50ID0gMjsK
KyAgICB1c2VIaW50aW5nID0gMjsKKyAgICBoaW50U3R5bGUgPSAwOworICAgIHVzZUFudGlBbGlh
cyA9IDI7CisgICAgdXNlU3VicGl4ZWwgPSAyOworICAgIHVzZVN1YnBpeGVsUmVuZGVyaW5nID0g
MjsKKyAgICB1c2VTdWJwaXhlbFBvc2l0aW9uaW5nID0gMjsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9saW51eGlzaC9XZWJGb250
UmVuZGVyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9s
aW51eGlzaC9XZWJGb250UmVuZGVyaW5nLmNwcAkocmV2aXNpb24gMTIwMDA2KQkoZnJvbSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9saW51eC9XZWJGb250UmVuZGVyaW5nLmNwcDoxMjAwMDYp
CisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9saW51eGlzaC9XZWJGb250UmVuZGVyaW5n
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIldlYkZvbnRSZW5kZXJpbmcuaCIKKworI2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURh
dGEuaCIKKwordXNpbmcgV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTsKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKKy8vIHN0YXRpYwordm9pZCBXZWJGb250UmVuZGVyaW5nOjpzZXRIaW50aW5nKFNr
UGFpbnQ6OkhpbnRpbmcgaGludGluZykKK3sKKyAgICBGb250UGxhdGZvcm1EYXRhOjpzZXRIaW50
aW5nKGhpbnRpbmcpOworfQorCisvLyBzdGF0aWMKK3ZvaWQgV2ViRm9udFJlbmRlcmluZzo6c2V0
QW50aUFsaWFzKGJvb2wgaXNBbnRpQWxpYXMpCit7CisgICAgRm9udFBsYXRmb3JtRGF0YTo6c2V0
QW50aUFsaWFzKGlzQW50aUFsaWFzKTsKK30KKworLy8gc3RhdGljCit2b2lkIFdlYkZvbnRSZW5k
ZXJpbmc6OnNldFN1YnBpeGVsR2x5cGhzKGJvb2wgaXNTdWJwaXhlbEdseXBocykKK3sKKyAgICBG
b250UGxhdGZvcm1EYXRhOjpzZXRTdWJwaXhlbFJlbmRlcmluZyhpc1N1YnBpeGVsR2x5cGhzKTsK
K30KKworLy8gc3RhdGljCit2b2lkIFdlYkZvbnRSZW5kZXJpbmc6OnNldFN1YnBpeGVsUmVuZGVy
aW5nKGJvb2wgdXNlU3VicGl4ZWxSZW5kZXJpbmcpCit7CisgICAgRm9udFBsYXRmb3JtRGF0YTo6
c2V0U3VicGl4ZWxSZW5kZXJpbmcodXNlU3VicGl4ZWxSZW5kZXJpbmcpOworfQorCisvLyBzdGF0
aWMKK3ZvaWQgV2ViRm9udFJlbmRlcmluZzo6c2V0U3VicGl4ZWxQb3NpdGlvbmluZyhib29sIHVz
ZVN1YnBpeGVsUG9zaXRpb25pbmcpCit7CisgICAgRm9udFBsYXRmb3JtRGF0YTo6c2V0U3VicGl4
ZWxQb3NpdGlvbmluZyh1c2VTdWJwaXhlbFBvc2l0aW9uaW5nKTsKK30KKworLy8gc3RhdGljCit2
b2lkIFdlYkZvbnRSZW5kZXJpbmc6OnNldExDRE9yZGVyKFNrRm9udEhvc3Q6OkxDRE9yZGVyIG9y
ZGVyKQoreworICAgIFNrRm9udEhvc3Q6OlNldFN1YnBpeGVsT3JkZXIob3JkZXIpOworfQorCisv
LyBzdGF0aWMKK3ZvaWQgV2ViRm9udFJlbmRlcmluZzo6c2V0TENET3JpZW50YXRpb24oU2tGb250
SG9zdDo6TENET3JpZW50YXRpb24gb3JpZW50YXRpb24pCit7CisgICAgU2tGb250SG9zdDo6U2V0
U3VicGl4ZWxPcmllbnRhdGlvbihvcmllbnRhdGlvbik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbGludXhpc2gvV2ViUmVuZGVy
VGhlbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2xpbnV4
aXNoL1dlYlJlbmRlclRoZW1lLmNwcAkocmV2aXNpb24gMTIwMDA2KQkoZnJvbSBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9saW51eC9XZWJSZW5kZXJUaGVtZS5jcHA6MTIwMDA2KQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbGludXhpc2gvV2ViUmVuZGVyVGhlbWUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSm9l
bCBTdGFubGV5LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJXZWJSZW5kZXJUaGVtZS5oIgorCisjaW5jbHVkZSAiUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4
LmgiCisjaW5jbHVkZSAiV2ViVmlldy5oIgorCit1c2luZyBXZWJDb3JlOjpSZW5kZXJUaGVtZTsK
K3VzaW5nIFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDsKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK3ZvaWQgc2V0Q2FyZXRCbGlua0ludGVydmFsKGRvdWJsZSBpbnRlcnZhbCkKK3sK
KyAgICBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnNldENhcmV0QmxpbmtJbnRlcnZhbChpbnRl
cnZhbCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147197</attachid>
            <date>2012-06-12 17:13:29 -0700</date>
            <delta_ts>2012-06-13 11:19:09 -0700</delta_ts>
            <desc>a much smaller patch</desc>
            <filename>88802c</filename>
            <type>text/plain</type>
            <size>14471</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjAxMzgpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4
IEBACisyMDEyLTA2LTExICBYaWFuemh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgW0Nocm9taXVtXSBMZXQgQW5kcm9pZCBhbmQgTGludXggc2hhcmUgV2ViRm9u
dFJlbmRlcmluZyBkZWNsL2ltcGwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04ODgwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvbGludXgvV2ViRm9u
dFJlbmRlcmluZy5oOiBUZW1wb3JhcmlseSBmb3J3YXJkcyB0byB0aGUgbmV3IGZpbGUgdW5kZXIg
bGludXhpc2guCisgICAgICAgICogcHVibGljL2xpbnV4aXNoOiBBZGRlZC4KKyAgICAgICAgKiBw
dWJsaWMvbGludXhpc2gvV2ViRm9udFJlbmRlcmluZy5oOiBDb3BpZWQgZnJvbSBjaHJvbWl1bS9w
dWJsaWMvbGludXgvV2ViRm9udFJlbmRlcmluZy5oLgorICAgICAgICAqIHNyYy9saW51eC9XZWJG
b250UmVuZGVyaW5nLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvbGludXhpc2g6IEFkZGVk
LgorICAgICAgICAqIHNyYy9saW51eGlzaC9XZWJGb250UmVuZGVyaW5nLmNwcDogQ29waWVkIGZy
b20gY2hyb21pdW0vc3JjL2xpbnV4L1dlYkZvbnRSZW5kZXJpbmcuY3BwLgorCiAyMDEyLTA2LTEy
ICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVt
XSBQYWludCBzY3JvbGxiYXJzIG9uIFdlYktpdCB0aHJlYWQgYW5kIGNvbXBvc2l0ZSB0aG9zZSB0
ZXh0dXJlcwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24gMTIwMTM4
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5nIGNvcHkpCkBA
IC0yODQsOCArMjg0LDggQEAKICAgICAgICAgICAgICAgICAncHVibGljL2FuZHJvaWQvV2ViU2Fu
ZGJveFN1cHBvcnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9ndGsvV2ViSW5wdXRFdmVu
dEZhY3RvcnkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9saW51eC9XZWJGb250UmVuZGVy
U3R5bGUuaCcsCi0gICAgICAgICAgICAgICAgJ3B1YmxpYy9saW51eC9XZWJGb250UmVuZGVyaW5n
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvbGludXgvV2ViUmVuZGVyVGhlbWUuaCcsCisg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9saW51eGlzaC9XZWJGb250UmVuZGVyaW5nLmgnLAogICAg
ICAgICAgICAgICAgICdwdWJsaWMvbWFjL1dlYklucHV0RXZlbnRGYWN0b3J5LmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvbWFjL1dlYlNhbmRib3hTdXBwb3J0LmgnLAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvbWFjL1dlYlNjcmVlbkluZm9GYWN0b3J5LmgnLApAQCAtNDI2LDkgKzQyNiw5
IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9QcmVyZW5kZXJlckNsaWVudEltcGwuY3BwJywKICAg
ICAgICAgICAgICAgICAnc3JjL2FuZHJvaWQvV2ViSW5wdXRFdmVudEZhY3RvcnkuY3BwJywKICAg
ICAgICAgICAgICAgICAnc3JjL2xpbnV4L1dlYkZvbnRJbmZvLmNwcCcsCi0gICAgICAgICAgICAg
ICAgJ3NyYy9saW51eC9XZWJGb250UmVuZGVyaW5nLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9saW51eC9XZWJGb250UmVuZGVyU3R5bGUuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL2xp
bnV4L1dlYlJlbmRlclRoZW1lLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9saW51eGlzaC9X
ZWJGb250UmVuZGVyaW5nLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy94MTEvV2ViU2NyZWVu
SW5mb0ZhY3RvcnkuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL21hYy9XZWJJbnB1dEV2ZW50
RmFjdG9yeS5tbScsCiAgICAgICAgICAgICAgICAgJ3NyYy9tYWMvV2ViU2NyZWVuSW5mb0ZhY3Rv
cnkubW0nLApAQCAtNzc0LDExICs3NzQsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgJ2luY2x1
ZGVfZGlycyc6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICdwdWJsaWMveDExJywKICAgICAg
ICAgICAgICAgICAgICAgICAgICdwdWJsaWMvbGludXgnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9saW51eGlzaCcsCiAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAg
ICAgICAgfSwgeyAjIGVsc2U6IHVzZV94MTEgIT0gMQogICAgICAgICAgICAgICAgICAgICAnc291
cmNlcy8nOiBbCisgICAgICAgICAgICAgICAgICAgICAgICAjIEZJWE1FOiBQdXQgdGhpcyBydWxl
IGluIENocm9taXVtJ3MgYnVpbGQvZmlsZW5hbWVfcnVsZXMuZ3lwaS4KICAgICAgICAgICAgICAg
ICAgICAgICAgIFsnZXhjbHVkZScsICcveDExLyddLAotICAgICAgICAgICAgICAgICAgICAgICAg
WydleGNsdWRlJywgJy9saW51eC8nXSwKICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAg
ICAgICAgICB9XSwKICAgICAgICAgICAgICAgICBbJ3Rvb2xraXRfdXNlc19ndGsgPT0gMScsIHsK
QEAgLTc4OCwxOCArNzg5LDExIEBACiAgICAgICAgICAgICAgICAgICAgICdpbmNsdWRlX2RpcnMn
OiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAncHVibGljL2d0aycsCiAgICAgICAgICAgICAg
ICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwgeyAjIGVsc2U6IHRvb2xraXRfdXNlc19ndGsg
IT0gMQotICAgICAgICAgICAgICAgICAgICAnc291cmNlcy8nOiBbCi0gICAgICAgICAgICAgICAg
ICAgICAgICBbJ2V4Y2x1ZGUnLCAnL2d0ay8nXSwKLSAgICAgICAgICAgICAgICAgICAgXSwKICAg
ICAgICAgICAgICAgICB9XSwKICAgICAgICAgICAgICAgICBbJ09TPT0iYW5kcm9pZCInLCB7CiAg
ICAgICAgICAgICAgICAgICAgICdpbmNsdWRlX2RpcnMnOiBbCiAgICAgICAgICAgICAgICAgICAg
ICAgICAncHVibGljL2FuZHJvaWQnLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAg
ICAgICAgIH0sIHsgIyBlbHNlOiBPUyE9ImFuZHJvaWQiCi0gICAgICAgICAgICAgICAgICAgICdz
b3VyY2VzLyc6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgIFsnZXhjbHVkZScsICcvYW5kcm9p
ZC8nXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdwdWJsaWMvbGludXhpc2gnLAogICAgICAg
ICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgICAgICMg
VE9ETzogd2UgZXhjbHVkZSBDRy5jcHAgb24gYm90aCBzaWRlcyBvZiB0aGUgYmVsb3cgY29uZGl0
aW9uYWwuIE1vdmUgZWxzZXdoZXJlPwpAQCAtODEyLDcgKzgwNiw2IEBACiAgICAgICAgICAgICAg
ICAgICAgIF0sCiAgICAgICAgICAgICAgICAgfSwgeyAjIGVsc2U6IE9TIT0ibWFjIgogICAgICAg
ICAgICAgICAgICAgICAnc291cmNlcy8nOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICBbJ2V4
Y2x1ZGUnLCAnL21hYy8nXSwKICAgICAgICAgICAgICAgICAgICAgICAgIFsnZXhjbHVkZScsICdD
R1xcLmNwcCQnXSwKICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICB9XSwK
QEAgLTgyMSw3ICs4MTQsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgJ3B1YmxpYy93aW4n
LAogICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgIH0sIHsgIyBlbHNlOiBP
UyE9IndpbiIKLSAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMvJzogW1snZXhjbHVkZScsICcv
d2luLyddXSwKICAgICAgICAgICAgICAgICAgICAgJ3ZhcmlhYmxlcyc6IHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICMgRklYTUU6IFR1cm4gb24gd2FybmluZ3Mgb24gV2luZG93cy4KICAgICAg
ICAgICAgICAgICAgICAgICAgICdjaHJvbWl1bV9jb2RlJzogMSwKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYkZvbnRSZW5kZXJpbmcuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJGb250UmVuZGVyaW5nLmgJ
KHJldmlzaW9uIDEyMDEzOCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4
L1dlYkZvbnRSZW5kZXJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMjkgKzI3LDUgQEAKICAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwotCi0jaWZuZGVmIFdlYkZvbnRSZW5k
ZXJpbmdfaAotI2RlZmluZSBXZWJGb250UmVuZGVyaW5nX2gKLQotI2luY2x1ZGUgIi4uL3BsYXRm
b3JtL1dlYkNvbW1vbi5oIgotI2luY2x1ZGUgPFNrRm9udEhvc3QuaD4KLSNpbmNsdWRlIDxTa1Bh
aW50Lmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJGb250UmVuZGVyaW5nIHsK
LXB1YmxpYzoKLSAgICAvLyBTZXQgZ2xvYmFsIGZvbnQgcmVuZGVyZXJpbmcgcHJlZmVyZW5jZXMu
Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lkIHNldEhpbnRpbmcoU2tQYWludDo6SGlu
dGluZyk7Ci0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRBbnRpQWxpYXMoYm9vbCk7
Ci0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRTdWJwaXhlbEdseXBocyhib29sKTsg
Ly8gREVQUkVDQVRFRDogdXNlIHNldFN1YnBpeGVsUmVuZGVyaW5nIGluc3RlYWQKLSAgICBXRUJL
SVRfRVhQT1JUIHN0YXRpYyB2b2lkIHNldFN1YnBpeGVsUmVuZGVyaW5nKGJvb2wpOwotICAgIFdF
QktJVF9FWFBPUlQgc3RhdGljIHZvaWQgc2V0U3VicGl4ZWxQb3NpdGlvbmluZyhib29sKTsKLSAg
ICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lkIHNldExDRE9yZGVyKFNrRm9udEhvc3Q6OkxDRE9y
ZGVyKTsKLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lkIHNldExDRE9yaWVudGF0aW9uKFNr
Rm9udEhvc3Q6OkxDRE9yaWVudGF0aW9uKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAot
Ci0jZW5kaWYKKy8vIEZJWE1FOiBSZW1vdmUgb25jZSBodHRwOi8vY29kZXJldmlldy5jaHJvbWl1
bS5vcmcvMTA1NDQxMDMvIGlzIGxhbmRlZC4KKyNpbmNsdWRlICIuLi9saW51eGlzaC9XZWJGb250
UmVuZGVyaW5nLmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eGlz
aC9XZWJGb250UmVuZGVyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvbGludXhpc2gvV2ViRm9udFJlbmRlcmluZy5oCShyZXZpc2lvbiAxMjAwMTcpCShm
cm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYkZvbnRSZW5kZXJpbmcu
aDoxMjAwMTcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eGlzaC9XZWJG
b250UmVuZGVyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2Vi
Rm9udFJlbmRlcmluZ19oCisjZGVmaW5lIFdlYkZvbnRSZW5kZXJpbmdfaAorCisjaW5jbHVkZSAi
Li4vcGxhdGZvcm0vV2ViQ29tbW9uLmgiCisjaW5jbHVkZSA8U2tGb250SG9zdC5oPgorI2luY2x1
ZGUgPFNrUGFpbnQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkZvbnRSZW5k
ZXJpbmcgeworcHVibGljOgorICAgIC8vIFNldCBnbG9iYWwgZm9udCByZW5kZXJlcmluZyBwcmVm
ZXJlbmNlcy4KKworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIHZvaWQgc2V0SGludGluZyhTa1Bh
aW50OjpIaW50aW5nKTsKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lkIHNldEFudGlBbGlh
cyhib29sKTsKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lkIHNldFN1YnBpeGVsR2x5cGhz
KGJvb2wpOyAvLyBERVBSRUNBVEVEOiB1c2Ugc2V0U3VicGl4ZWxSZW5kZXJpbmcgaW5zdGVhZAor
ICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIHZvaWQgc2V0U3VicGl4ZWxSZW5kZXJpbmcoYm9vbCk7
CisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRTdWJwaXhlbFBvc2l0aW9uaW5nKGJv
b2wpOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIHZvaWQgc2V0TENET3JkZXIoU2tGb250SG9z
dDo6TENET3JkZXIpOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIHZvaWQgc2V0TENET3JpZW50
YXRpb24oU2tGb250SG9zdDo6TENET3JpZW50YXRpb24pOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbGludXgv
V2ViRm9udFJlbmRlcmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvbGludXgvV2ViRm9udFJlbmRlcmluZy5jcHAJKHJldmlzaW9uIDEyMDEzOCkKKysrIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2xpbnV4L1dlYkZvbnRSZW5kZXJpbmcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDgyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
V2ViRm9udFJlbmRlcmluZy5oIgotCi0jaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgotCi11
c2luZyBXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
Ly8gc3RhdGljCi12b2lkIFdlYkZvbnRSZW5kZXJpbmc6OnNldEhpbnRpbmcoU2tQYWludDo6SGlu
dGluZyBoaW50aW5nKQotewotICAgIEZvbnRQbGF0Zm9ybURhdGE6OnNldEhpbnRpbmcoaGludGlu
Zyk7Ci19Ci0KLS8vIHN0YXRpYwotdm9pZCBXZWJGb250UmVuZGVyaW5nOjpzZXRBbnRpQWxpYXMo
Ym9vbCBpc0FudGlBbGlhcykKLXsKLSAgICBGb250UGxhdGZvcm1EYXRhOjpzZXRBbnRpQWxpYXMo
aXNBbnRpQWxpYXMpOwotfQotCi0vLyBzdGF0aWMKLXZvaWQgV2ViRm9udFJlbmRlcmluZzo6c2V0
U3VicGl4ZWxHbHlwaHMoYm9vbCBpc1N1YnBpeGVsR2x5cGhzKQotewotICAgIEZvbnRQbGF0Zm9y
bURhdGE6OnNldFN1YnBpeGVsUmVuZGVyaW5nKGlzU3VicGl4ZWxHbHlwaHMpOwotfQotCi0vLyBz
dGF0aWMKLXZvaWQgV2ViRm9udFJlbmRlcmluZzo6c2V0U3VicGl4ZWxSZW5kZXJpbmcoYm9vbCB1
c2VTdWJwaXhlbFJlbmRlcmluZykKLXsKLSAgICBGb250UGxhdGZvcm1EYXRhOjpzZXRTdWJwaXhl
bFJlbmRlcmluZyh1c2VTdWJwaXhlbFJlbmRlcmluZyk7Ci19Ci0KLS8vIHN0YXRpYwotdm9pZCBX
ZWJGb250UmVuZGVyaW5nOjpzZXRTdWJwaXhlbFBvc2l0aW9uaW5nKGJvb2wgdXNlU3VicGl4ZWxQ
b3NpdGlvbmluZykKLXsKLSAgICBGb250UGxhdGZvcm1EYXRhOjpzZXRTdWJwaXhlbFBvc2l0aW9u
aW5nKHVzZVN1YnBpeGVsUG9zaXRpb25pbmcpOwotfQotCi0vLyBzdGF0aWMKLXZvaWQgV2ViRm9u
dFJlbmRlcmluZzo6c2V0TENET3JkZXIoU2tGb250SG9zdDo6TENET3JkZXIgb3JkZXIpCi17Ci0g
ICAgU2tGb250SG9zdDo6U2V0U3VicGl4ZWxPcmRlcihvcmRlcik7Ci19Ci0KLS8vIHN0YXRpYwot
dm9pZCBXZWJGb250UmVuZGVyaW5nOjpzZXRMQ0RPcmllbnRhdGlvbihTa0ZvbnRIb3N0OjpMQ0RP
cmllbnRhdGlvbiBvcmllbnRhdGlvbikKLXsKLSAgICBTa0ZvbnRIb3N0OjpTZXRTdWJwaXhlbE9y
aWVudGF0aW9uKG9yaWVudGF0aW9uKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9saW51eGlzaC9XZWJGb250UmVuZGVyaW5nLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9saW51eGlzaC9XZWJG
b250UmVuZGVyaW5nLmNwcAkocmV2aXNpb24gMTIwMDE3KQkoZnJvbSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9saW51eC9XZWJGb250UmVuZGVyaW5nLmNwcDoxMjAwMTcpCisrKyBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9saW51eGlzaC9XZWJGb250UmVuZGVyaW5nLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldl
YkZvbnRSZW5kZXJpbmcuaCIKKworI2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGEuaCIKKwordXNp
bmcgV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8v
IHN0YXRpYwordm9pZCBXZWJGb250UmVuZGVyaW5nOjpzZXRIaW50aW5nKFNrUGFpbnQ6OkhpbnRp
bmcgaGludGluZykKK3sKKyAgICBGb250UGxhdGZvcm1EYXRhOjpzZXRIaW50aW5nKGhpbnRpbmcp
OworfQorCisvLyBzdGF0aWMKK3ZvaWQgV2ViRm9udFJlbmRlcmluZzo6c2V0QW50aUFsaWFzKGJv
b2wgaXNBbnRpQWxpYXMpCit7CisgICAgRm9udFBsYXRmb3JtRGF0YTo6c2V0QW50aUFsaWFzKGlz
QW50aUFsaWFzKTsKK30KKworLy8gc3RhdGljCit2b2lkIFdlYkZvbnRSZW5kZXJpbmc6OnNldFN1
YnBpeGVsR2x5cGhzKGJvb2wgaXNTdWJwaXhlbEdseXBocykKK3sKKyAgICBGb250UGxhdGZvcm1E
YXRhOjpzZXRTdWJwaXhlbFJlbmRlcmluZyhpc1N1YnBpeGVsR2x5cGhzKTsKK30KKworLy8gc3Rh
dGljCit2b2lkIFdlYkZvbnRSZW5kZXJpbmc6OnNldFN1YnBpeGVsUmVuZGVyaW5nKGJvb2wgdXNl
U3VicGl4ZWxSZW5kZXJpbmcpCit7CisgICAgRm9udFBsYXRmb3JtRGF0YTo6c2V0U3VicGl4ZWxS
ZW5kZXJpbmcodXNlU3VicGl4ZWxSZW5kZXJpbmcpOworfQorCisvLyBzdGF0aWMKK3ZvaWQgV2Vi
Rm9udFJlbmRlcmluZzo6c2V0U3VicGl4ZWxQb3NpdGlvbmluZyhib29sIHVzZVN1YnBpeGVsUG9z
aXRpb25pbmcpCit7CisgICAgRm9udFBsYXRmb3JtRGF0YTo6c2V0U3VicGl4ZWxQb3NpdGlvbmlu
Zyh1c2VTdWJwaXhlbFBvc2l0aW9uaW5nKTsKK30KKworLy8gc3RhdGljCit2b2lkIFdlYkZvbnRS
ZW5kZXJpbmc6OnNldExDRE9yZGVyKFNrRm9udEhvc3Q6OkxDRE9yZGVyIG9yZGVyKQoreworICAg
IFNrRm9udEhvc3Q6OlNldFN1YnBpeGVsT3JkZXIob3JkZXIpOworfQorCisvLyBzdGF0aWMKK3Zv
aWQgV2ViRm9udFJlbmRlcmluZzo6c2V0TENET3JpZW50YXRpb24oU2tGb250SG9zdDo6TENET3Jp
ZW50YXRpb24gb3JpZW50YXRpb24pCit7CisgICAgU2tGb250SG9zdDo6U2V0U3VicGl4ZWxPcmll
bnRhdGlvbihvcmllbnRhdGlvbik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147367</attachid>
            <date>2012-06-13 11:19:09 -0700</date>
            <delta_ts>2012-06-13 20:28:30 -0700</delta_ts>
            <desc>patch for re-applying with some changes in WebKit.gyp reverted</desc>
            <filename>88802d</filename>
            <type>text/plain</type>
            <size>13791</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjAyMjYpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4
IEBACisyMDEyLTA2LTEzICBYaWFuemh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgW0Nocm9taXVtXSBMZXQgQW5kcm9pZCBhbmQgTGludXggc2hhcmUgV2ViRm9u
dFJlbmRlcmluZyBkZWNsL2ltcGwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04ODgwMgorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisK
KyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9saW51eC9XZWJGb250UmVu
ZGVyaW5nLmg6IFRlbXBvcmFyaWx5IGZvcndhcmRzIHRvIHRoZSBuZXcgZmlsZSB1bmRlciBsaW51
eGlzaC4KKyAgICAgICAgKiBwdWJsaWMvbGludXhpc2g6IEFkZGVkLgorICAgICAgICAqIHB1Ymxp
Yy9saW51eGlzaC9XZWJGb250UmVuZGVyaW5nLmg6IENvcGllZCBmcm9tIGNocm9taXVtL3B1Ymxp
Yy9saW51eC9XZWJGb250UmVuZGVyaW5nLmguCisgICAgICAgICogc3JjL2xpbnV4L1dlYkZvbnRS
ZW5kZXJpbmcuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9saW51eGlzaDogQWRkZWQuCisg
ICAgICAgICogc3JjL2xpbnV4aXNoL1dlYkZvbnRSZW5kZXJpbmcuY3BwOiBDb3BpZWQgZnJvbSBj
aHJvbWl1bS9zcmMvbGludXgvV2ViRm9udFJlbmRlcmluZy5jcHAuCisKIDIwMTItMDYtMTMgIFNo
ZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjAyMjAuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwCShyZXZpc2lvbiAxMjAyMjYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXAJKHdvcmtpbmcgY29weSkKQEAgLTI4NCw4ICsyODQsOCBAQAogICAgICAgICAgICAgICAgICdw
dWJsaWMvYW5kcm9pZC9XZWJTYW5kYm94U3VwcG9ydC5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL2d0ay9XZWJJbnB1dEV2ZW50RmFjdG9yeS5oJywKICAgICAgICAgICAgICAgICAncHVibGlj
L2xpbnV4L1dlYkZvbnRSZW5kZXJTdHlsZS5oJywKLSAgICAgICAgICAgICAgICAncHVibGljL2xp
bnV4L1dlYkZvbnRSZW5kZXJpbmcuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9saW51eC9X
ZWJSZW5kZXJUaGVtZS5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL2xpbnV4aXNoL1dlYkZv
bnRSZW5kZXJpbmcuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9tYWMvV2ViSW5wdXRFdmVu
dEZhY3RvcnkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9tYWMvV2ViU2FuZGJveFN1cHBv
cnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9tYWMvV2ViU2NyZWVuSW5mb0ZhY3Rvcnku
aCcsCkBAIC00MjgsOSArNDI4LDkgQEAKICAgICAgICAgICAgICAgICAnc3JjL1ByZXJlbmRlcmVy
Q2xpZW50SW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvYW5kcm9pZC9XZWJJbnB1dEV2
ZW50RmFjdG9yeS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvbGludXgvV2ViRm9udEluZm8u
Y3BwJywKLSAgICAgICAgICAgICAgICAnc3JjL2xpbnV4L1dlYkZvbnRSZW5kZXJpbmcuY3BwJywK
ICAgICAgICAgICAgICAgICAnc3JjL2xpbnV4L1dlYkZvbnRSZW5kZXJTdHlsZS5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvbGludXgvV2ViUmVuZGVyVGhlbWUuY3BwJywKKyAgICAgICAgICAg
ICAgICAnc3JjL2xpbnV4aXNoL1dlYkZvbnRSZW5kZXJpbmcuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL3gxMS9XZWJTY3JlZW5JbmZvRmFjdG9yeS5jcHAnLAogICAgICAgICAgICAgICAgICdz
cmMvbWFjL1dlYklucHV0RXZlbnRGYWN0b3J5Lm1tJywKICAgICAgICAgICAgICAgICAnc3JjL21h
Yy9XZWJTY3JlZW5JbmZvRmFjdG9yeS5tbScsCkBAIC03NzYsNiArNzc2LDcgQEAKICAgICAgICAg
ICAgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICdw
dWJsaWMveDExJywKICAgICAgICAgICAgICAgICAgICAgICAgICdwdWJsaWMvbGludXgnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgJ3B1YmxpYy9saW51eGlzaCcsCiAgICAgICAgICAgICAgICAg
ICAgIF0sCiAgICAgICAgICAgICAgICAgfSwgeyAjIGVsc2U6IHVzZV94MTEgIT0gMQogICAgICAg
ICAgICAgICAgICAgICAnc291cmNlcy8nOiBbCkBAIC03OTgsMTIgKzc5OSwyMCBAQAogICAgICAg
ICAgICAgICAgIFsnT1M9PSJhbmRyb2lkIicsIHsKICAgICAgICAgICAgICAgICAgICAgJ2luY2x1
ZGVfZGlycyc6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICdwdWJsaWMvYW5kcm9pZCcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAncHVibGljL2xpbnV4aXNoJywKICAgICAgICAgICAgICAg
ICAgICAgXSwKICAgICAgICAgICAgICAgICB9LCB7ICMgZWxzZTogT1MhPSJhbmRyb2lkIgogICAg
ICAgICAgICAgICAgICAgICAnc291cmNlcy8nOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICBb
J2V4Y2x1ZGUnLCAnL2FuZHJvaWQvJ10sCiAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAg
ICAgICAgICAgfV0sCisgICAgICAgICAgICAgICAgIyBGSVhNRTogSGVyZSBhbmQgb3RoZXIgcGxh
Y2VzIGR1cGxpY2F0ZSBydWxlcyBpbiBDaHJvbWl1bSdzIGJ1aWxkL2ZpbGVuYW1lX3J1bGVzLmd5
cGkuCisgICAgICAgICAgICAgICAgIyBIb3dldmVyIHdpdGhvdXQgdGhlIGR1cGxpY2F0aW9uLCBn
eXBfd2Via2l0IGZhaWxzIGF0IGxlYXN0IG9uIGNocm9taXVtLXdpbi1yZWxlYXNlLgorICAgICAg
ICAgICAgICAgIFsnT1MhPSJhbmRyb2lkIiBhbmQgT1MhPSJsaW51eCIgYW5kIE9TIT0ib3BlbmJz
ZCIgYW5kIE9TIT0iZnJlZWJzZCInLCB7CisgICAgICAgICAgICAgICAgICAgICdzb3VyY2VzLyc6
IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIFsnZXhjbHVkZScsICcvbGludXhpc2gvJ10sCisg
ICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgfV0sCiAgICAgICAgICAgICAg
ICAgIyBUT0RPOiB3ZSBleGNsdWRlIENHLmNwcCBvbiBib3RoIHNpZGVzIG9mIHRoZSBiZWxvdyBj
b25kaXRpb25hbC4gTW92ZSBlbHNld2hlcmU/CiAgICAgICAgICAgICAgICAgWydPUz09Im1hYyIn
LCB7CiAgICAgICAgICAgICAgICAgICAgICdpbmNsdWRlX2RpcnMnOiBbCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJGb250UmVuZGVyaW5nLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViRm9udFJlbmRlcmlu
Zy5oCShyZXZpc2lvbiAxMjAyMjYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9s
aW51eC9XZWJGb250UmVuZGVyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDI5ICsyNyw1IEBA
CiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KLQotI2lmbmRlZiBXZWJGb250
UmVuZGVyaW5nX2gKLSNkZWZpbmUgV2ViRm9udFJlbmRlcmluZ19oCi0KLSNpbmNsdWRlICIuLi9w
bGF0Zm9ybS9XZWJDb21tb24uaCIKLSNpbmNsdWRlIDxTa0ZvbnRIb3N0Lmg+Ci0jaW5jbHVkZSA8
U2tQYWludC5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViRm9udFJlbmRlcmlu
ZyB7Ci1wdWJsaWM6Ci0gICAgLy8gU2V0IGdsb2JhbCBmb250IHJlbmRlcmVyaW5nIHByZWZlcmVu
Y2VzLgotCi0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRIaW50aW5nKFNrUGFpbnQ6
OkhpbnRpbmcpOwotICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIHZvaWQgc2V0QW50aUFsaWFzKGJv
b2wpOwotICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIHZvaWQgc2V0U3VicGl4ZWxHbHlwaHMoYm9v
bCk7IC8vIERFUFJFQ0FURUQ6IHVzZSBzZXRTdWJwaXhlbFJlbmRlcmluZyBpbnN0ZWFkCi0gICAg
V0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRTdWJwaXhlbFJlbmRlcmluZyhib29sKTsKLSAg
ICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lkIHNldFN1YnBpeGVsUG9zaXRpb25pbmcoYm9vbCk7
Ci0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRMQ0RPcmRlcihTa0ZvbnRIb3N0OjpM
Q0RPcmRlcik7Ci0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRMQ0RPcmllbnRhdGlv
bihTa0ZvbnRIb3N0OjpMQ0RPcmllbnRhdGlvbik7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKLQotI2VuZGlmCisvLyBGSVhNRTogUmVtb3ZlIG9uY2UgaHR0cDovL2NvZGVyZXZpZXcuY2hy
b21pdW0ub3JnLzEwNTQ0MTAzLyBpcyBsYW5kZWQuCisjaW5jbHVkZSAiLi4vbGludXhpc2gvV2Vi
Rm9udFJlbmRlcmluZy5oIgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGlu
dXhpc2gvV2ViRm9udFJlbmRlcmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL2xpbnV4aXNoL1dlYkZvbnRSZW5kZXJpbmcuaAkocmV2aXNpb24gMTIwMjI2
KQkoZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJGb250UmVuZGVy
aW5nLmg6MTIwMjI2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXhpc2gv
V2ViRm9udFJlbmRlcmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdlYkZvbnRSZW5kZXJpbmdfaAorI2RlZmluZSBXZWJGb250UmVuZGVyaW5nX2gKKworI2luY2x1
ZGUgIi4uL3BsYXRmb3JtL1dlYkNvbW1vbi5oIgorI2luY2x1ZGUgPFNrRm9udEhvc3QuaD4KKyNp
bmNsdWRlIDxTa1BhaW50Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJGb250
UmVuZGVyaW5nIHsKK3B1YmxpYzoKKyAgICAvLyBTZXQgZ2xvYmFsIGZvbnQgcmVuZGVyZXJpbmcg
cHJlZmVyZW5jZXMuCisKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lkIHNldEhpbnRpbmco
U2tQYWludDo6SGludGluZyk7CisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRBbnRp
QWxpYXMoYm9vbCk7CisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRTdWJwaXhlbEds
eXBocyhib29sKTsgLy8gREVQUkVDQVRFRDogdXNlIHNldFN1YnBpeGVsUmVuZGVyaW5nIGluc3Rl
YWQKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lkIHNldFN1YnBpeGVsUmVuZGVyaW5nKGJv
b2wpOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIHZvaWQgc2V0U3VicGl4ZWxQb3NpdGlvbmlu
Zyhib29sKTsKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lkIHNldExDRE9yZGVyKFNrRm9u
dEhvc3Q6OkxDRE9yZGVyKTsKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lkIHNldExDRE9y
aWVudGF0aW9uKFNrRm9udEhvc3Q6OkxDRE9yaWVudGF0aW9uKTsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2xp
bnV4L1dlYkZvbnRSZW5kZXJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL2xpbnV4L1dlYkZvbnRSZW5kZXJpbmcuY3BwCShyZXZpc2lvbiAxMjAyMjYpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9saW51eC9XZWJGb250UmVuZGVyaW5nLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw4MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIldlYkZvbnRSZW5kZXJpbmcuaCIKLQotI2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGEuaCIK
LQotdXNpbmcgV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTsKLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLS8vIHN0YXRpYwotdm9pZCBXZWJGb250UmVuZGVyaW5nOjpzZXRIaW50aW5nKFNrUGFpbnQ6
OkhpbnRpbmcgaGludGluZykKLXsKLSAgICBGb250UGxhdGZvcm1EYXRhOjpzZXRIaW50aW5nKGhp
bnRpbmcpOwotfQotCi0vLyBzdGF0aWMKLXZvaWQgV2ViRm9udFJlbmRlcmluZzo6c2V0QW50aUFs
aWFzKGJvb2wgaXNBbnRpQWxpYXMpCi17Ci0gICAgRm9udFBsYXRmb3JtRGF0YTo6c2V0QW50aUFs
aWFzKGlzQW50aUFsaWFzKTsKLX0KLQotLy8gc3RhdGljCi12b2lkIFdlYkZvbnRSZW5kZXJpbmc6
OnNldFN1YnBpeGVsR2x5cGhzKGJvb2wgaXNTdWJwaXhlbEdseXBocykKLXsKLSAgICBGb250UGxh
dGZvcm1EYXRhOjpzZXRTdWJwaXhlbFJlbmRlcmluZyhpc1N1YnBpeGVsR2x5cGhzKTsKLX0KLQot
Ly8gc3RhdGljCi12b2lkIFdlYkZvbnRSZW5kZXJpbmc6OnNldFN1YnBpeGVsUmVuZGVyaW5nKGJv
b2wgdXNlU3VicGl4ZWxSZW5kZXJpbmcpCi17Ci0gICAgRm9udFBsYXRmb3JtRGF0YTo6c2V0U3Vi
cGl4ZWxSZW5kZXJpbmcodXNlU3VicGl4ZWxSZW5kZXJpbmcpOwotfQotCi0vLyBzdGF0aWMKLXZv
aWQgV2ViRm9udFJlbmRlcmluZzo6c2V0U3VicGl4ZWxQb3NpdGlvbmluZyhib29sIHVzZVN1YnBp
eGVsUG9zaXRpb25pbmcpCi17Ci0gICAgRm9udFBsYXRmb3JtRGF0YTo6c2V0U3VicGl4ZWxQb3Np
dGlvbmluZyh1c2VTdWJwaXhlbFBvc2l0aW9uaW5nKTsKLX0KLQotLy8gc3RhdGljCi12b2lkIFdl
YkZvbnRSZW5kZXJpbmc6OnNldExDRE9yZGVyKFNrRm9udEhvc3Q6OkxDRE9yZGVyIG9yZGVyKQot
ewotICAgIFNrRm9udEhvc3Q6OlNldFN1YnBpeGVsT3JkZXIob3JkZXIpOwotfQotCi0vLyBzdGF0
aWMKLXZvaWQgV2ViRm9udFJlbmRlcmluZzo6c2V0TENET3JpZW50YXRpb24oU2tGb250SG9zdDo6
TENET3JpZW50YXRpb24gb3JpZW50YXRpb24pCi17Ci0gICAgU2tGb250SG9zdDo6U2V0U3VicGl4
ZWxPcmllbnRhdGlvbihvcmllbnRhdGlvbik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApJ
bmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbGludXhpc2gvV2ViRm9udFJlbmRlcmlu
Zy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbGludXhpc2gv
V2ViRm9udFJlbmRlcmluZy5jcHAJKHJldmlzaW9uIDEyMDIyNikJKGZyb20gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvbGludXgvV2ViRm9udFJlbmRlcmluZy5jcHA6MTIwMjI2KQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbGludXhpc2gvV2ViRm9udFJlbmRlcmluZy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJXZWJGb250UmVuZGVyaW5nLmgiCisKKyNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRhLmgiCisK
K3VzaW5nIFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE7CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CisvLyBzdGF0aWMKK3ZvaWQgV2ViRm9udFJlbmRlcmluZzo6c2V0SGludGluZyhTa1BhaW50OjpI
aW50aW5nIGhpbnRpbmcpCit7CisgICAgRm9udFBsYXRmb3JtRGF0YTo6c2V0SGludGluZyhoaW50
aW5nKTsKK30KKworLy8gc3RhdGljCit2b2lkIFdlYkZvbnRSZW5kZXJpbmc6OnNldEFudGlBbGlh
cyhib29sIGlzQW50aUFsaWFzKQoreworICAgIEZvbnRQbGF0Zm9ybURhdGE6OnNldEFudGlBbGlh
cyhpc0FudGlBbGlhcyk7Cit9CisKKy8vIHN0YXRpYwordm9pZCBXZWJGb250UmVuZGVyaW5nOjpz
ZXRTdWJwaXhlbEdseXBocyhib29sIGlzU3VicGl4ZWxHbHlwaHMpCit7CisgICAgRm9udFBsYXRm
b3JtRGF0YTo6c2V0U3VicGl4ZWxSZW5kZXJpbmcoaXNTdWJwaXhlbEdseXBocyk7Cit9CisKKy8v
IHN0YXRpYwordm9pZCBXZWJGb250UmVuZGVyaW5nOjpzZXRTdWJwaXhlbFJlbmRlcmluZyhib29s
IHVzZVN1YnBpeGVsUmVuZGVyaW5nKQoreworICAgIEZvbnRQbGF0Zm9ybURhdGE6OnNldFN1YnBp
eGVsUmVuZGVyaW5nKHVzZVN1YnBpeGVsUmVuZGVyaW5nKTsKK30KKworLy8gc3RhdGljCit2b2lk
IFdlYkZvbnRSZW5kZXJpbmc6OnNldFN1YnBpeGVsUG9zaXRpb25pbmcoYm9vbCB1c2VTdWJwaXhl
bFBvc2l0aW9uaW5nKQoreworICAgIEZvbnRQbGF0Zm9ybURhdGE6OnNldFN1YnBpeGVsUG9zaXRp
b25pbmcodXNlU3VicGl4ZWxQb3NpdGlvbmluZyk7Cit9CisKKy8vIHN0YXRpYwordm9pZCBXZWJG
b250UmVuZGVyaW5nOjpzZXRMQ0RPcmRlcihTa0ZvbnRIb3N0OjpMQ0RPcmRlciBvcmRlcikKK3sK
KyAgICBTa0ZvbnRIb3N0OjpTZXRTdWJwaXhlbE9yZGVyKG9yZGVyKTsKK30KKworLy8gc3RhdGlj
Cit2b2lkIFdlYkZvbnRSZW5kZXJpbmc6OnNldExDRE9yaWVudGF0aW9uKFNrRm9udEhvc3Q6OkxD
RE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQoreworICAgIFNrRm9udEhvc3Q6OlNldFN1YnBpeGVs
T3JpZW50YXRpb24ob3JpZW50YXRpb24pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
      

    </bug>

</bugzilla>