<?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>91816</bug_id>
          
          <creation_ts>2012-07-19 21:30:37 -0700</creation_ts>
          <short_desc>The ATSUI-based complex text code is unused</short_desc>
          <delta_ts>2012-07-19 23:01:42 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Text</component>
          <version>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to>mitz</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>674140</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2012-07-19 21:30:37 -0700</bug_when>
    <thetext>The ATSUI-based complex text code is unused</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674142</commentid>
    <comment_count>1</comment_count>
    <who name="">mitz</who>
    <bug_when>2012-07-19 21:31:44 -0700</bug_when>
    <thetext>As of r123161, no port defines WTF_USE_ATSUI to a non-zero value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674150</commentid>
    <comment_count>2</comment_count>
      <attachid>153403</attachid>
    <who name="">mitz</who>
    <bug_when>2012-07-19 21:39:51 -0700</bug_when>
    <thetext>Created attachment 153403
Removed ATSUI-only code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674195</commentid>
    <comment_count>3</comment_count>
      <attachid>153403</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-07-19 22:59:31 -0700</bug_when>
    <thetext>Comment on attachment 153403
Removed ATSUI-only code

Begone beast!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674197</commentid>
    <comment_count>4</comment_count>
    <who name="">mitz</who>
    <bug_when>2012-07-19 23:01:42 -0700</bug_when>
    <thetext>Fixed in &lt;http://trac.webkit.org/123181&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153403</attachid>
            <date>2012-07-19 21:39:51 -0700</date>
            <delta_ts>2012-07-19 22:59:30 -0700</delta_ts>
            <desc>Removed ATSUI-only code</desc>
            <filename>bug-91816-20120719213947.patch</filename>
            <type>text/plain</type>
            <size>73078</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxMjMxNzYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA3LTE5ICBEYW4gQmVybnN0ZWluICA8bWl0
ekBhcHBsZS5jb20+CisKKyAgICAgICAgVGhlIEFUU1VJLWJhc2VkIGNvbXBsZXggdGV4dCBjb2Rl
IGlzIHVudXNlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTE4MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZW1vdmVkIGRlZmluaXRpb25zIG9mIFdURl9VU0VfQVRTVUkgYW5kIFdURl9VU0VfQ09SRV9U
RVhULgorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTItMDctMTkgIFdlaSBKYW1l
cyAgPGphbWVzLndlaUBpbnRlbC5jb20+CiAKICAgICAgICAgZW5hYmxlIFdlYiBBdWRpbyBmb3Ig
Y2hyb21pdW0gYW5kcm9pZCBwb3J0CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDEyMzE2OCkK
KysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2Niw4ICs0
NjYsNiBAQAogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogI2lmIE9TKERBUldJTikKICNkZWZpbmUg
V1RGX1VTRV9TS0lBIDEKLSNkZWZpbmUgV1RGX1VTRV9BVFNVSSAwCi0jZGVmaW5lIFdURl9VU0Vf
Q09SRV9URVhUIDEKICNkZWZpbmUgV1RGX1VTRV9JQ0NKUEVHIDEKICNkZWZpbmUgV1RGX1VTRV9R
Q01TTElCIDEKICNlbGlmIE9TKEFORFJPSUQpCkBAIC02NDQsNyArNjQyLDYgQEAKICNkZWZpbmUg
RU5BQkxFX0xMSU5UIDAKICNpZiBPUyhEQVJXSU4pCiAjZGVmaW5lIFdURl9VU0VfQ0YgMQotI2Rl
ZmluZSBXVEZfVVNFX0NPUkVfVEVYVCAxCiAjZGVmaW5lIEVOQUJMRV9XRUJfQVJDSElWRSAxCiAj
ZW5kaWYKICNlbmRpZgpAQCAtOTk3LDEyICs5OTQsNiBAQAogI2VuZGlmCiAjZW5kaWYKIAotI2lm
IFBMQVRGT1JNKE1BQykKLS8qIENvbXBsZXggdGV4dCBmcmFtZXdvcmsgKi8KLSNkZWZpbmUgV1RG
X1VTRV9BVFNVSSAwCi0jZGVmaW5lIFdURl9VU0VfQ09SRV9URVhUIDEKLSNlbmRpZgotCiAvKiBB
Y2NlbGVyYXRlZCBjb21wb3NpdGluZyAqLwogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0o
SU9TKSB8fCBQTEFURk9STShRVCkgfHwgKFBMQVRGT1JNKFdJTikgJiYgIU9TKFdJTkNFKSAmJiAh
UExBVEZPUk0oV0lOX0NBSVJPKSkKICNkZWZpbmUgV1RGX1VTRV9BQ0NFTEVSQVRFRF9DT01QT1NJ
VElORyAxCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjMxNzYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNSBAQAorMjAxMi0wNy0xOSAg
RGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgorCisgICAgICAgIFRoZSBBVFNVSS1iYXNl
ZCBjb21wbGV4IHRleHQgY29kZSBpcyB1bnVzZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IFJlbW92ZWQgcmVmZXJlbmNlcyB0
byB0aGUgZmlsZXMgZGVsZXRlZCBpbiB0aGlzIGNoYW5nZS4KKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYWNoZS5oOgorICAgICAgICAoRm9udENhY2hlKTogUmVwbGFjZWQgVVNFKENPUkVf
VEVYVCkgd2l0aCBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKENIUk9NSVVNKSAmJiBPUyhEQVJX
SU4pLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmg6CisgICAg
ICAgIChTaW1wbGVGb250RGF0YSk6IFJlbW92ZWQgVVNFKEFUU1VJKS1vbmx5IGNvZGUsIHJlcGxh
Y2VkIFVTRShDT1JFX1RFWFQpIHdpdGgKKyAgICAgICAgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBP
UyhEQVJXSU4pKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRD
b250cm9sbGVyLmNwcDogUmVtb3ZlZCBVU0UoQVRTVUkpLW9ubHkgY29kZS4gTW92ZWQKKyAgICAg
ICAgY29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNoYXJhY3RlcnMoKSBhbmQgdGhlIENvbXBsZXhU
ZXh0UnVuIGNvbnN0cnVjdG9yIG91dCBvZiB0aGlzIGZpbGUuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5oOiBSZW1vdmVkIFVTRShBVFNVSSkt
b25seSBjb2RlIGFuZCByZW1vdmVkCisgICAgICAgICNpZiBVU0UoQ09SRV9URVhUKSBiZWNhdXNl
IGFueW9uZSBpbmNsdWRpbmcgdGhpcyBoZWFkZXIgaXMgdXNpbmcgQ29yZSBUZXh0LgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJBVFNVSS5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29u
dHJvbGxlckNvcmVUZXh0Lm1tOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRleHRDb250cm9s
bGVyOjpDb21wbGV4VGV4dFJ1bjo6Q29tcGxleFRleHRSdW4pOiBNb3ZlZCBmcm9tCisgICAgICAg
IENvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAgaW50byB0aGlzIGZpbGUgYW5kIG1lcmdlZCB3aXRo
IGNyZWF0ZVRleHRSdW5Gcm9tRm9udERhdGFDb3JlVGV4dCgpLgorICAgICAgICAoV2ViQ29yZTo6
Q29tcGxleFRleHRDb250cm9sbGVyOjpjb2xsZWN0Q29tcGxleFRleHRSdW5zRm9yQ2hhcmFjdGVy
cyk6IE1vdmVkIGZyb20KKyAgICAgICAgQ29tcGxleFRleHRDb250cm9sbGVyLmNwcCBpbnRvIHRo
aXMgZmlsZSBhbmQgbWVyZ2VkIHdpdGgKKyAgICAgICAgY29sbGVjdENvbXBsZXhUZXh0UnVuc0Zv
ckNoYXJhY3RlcnNDb3JlVGV4dCgpLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9T
aW1wbGVGb250RGF0YUFUU1VJLm1tOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL21hYy9TaW1wbGVGb250RGF0YU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUZv
bnREYXRhOjpwbGF0Zm9ybUluaXQpOiBSZW1vdmUgVVNFKEFUU1VJKS1vbmx5IGNvZGUuCisgICAg
ICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6cGxhdGZvcm1EZXN0cm95KTogRGl0dG8uCisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC9tYWMvU2hhcGVBcmFiaWMuYzogUmVtb3ZlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS90ZXh0L21hYy9TaGFwZUFyYWJpYy5oOiBSZW1vdmVkLgorCiAyMDEyLTA3
LTE5ICBXZWkgSmFtZXMgIDxqYW1lcy53ZWlAaW50ZWwuY29tPgogCiAgICAgICAgIGVuYWJsZSBX
ZWIgQXVkaW8gZm9yIGNocm9taXVtIGFuZHJvaWQgcG9ydApJbmRleDogU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQko
cmV2aXNpb24gMTIzMTY4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5n
IGNvcHkpCkBAIC0zNzg4LDcgKzM3ODgsNiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9Db2xvck1hYy5tbScsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuaCcsCi0gICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckFUU1VJLmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1t
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRmxvYXRQb2ludE1hYy5tbScs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zsb2F0UmVjdE1hYy5tbScsCkBA
IC0zODA4LDcgKzM4MDcsNiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL21hYy9J
bnRTaXplTWFjLm1tJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvU2ltcGxlRm9udERhdGFBVFNVSS5tbScsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFNYWMubW0nLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJHTExheWVyLmgnLApAQCAtNDQ0NSw4ICs0NDQzLDYg
QEAKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0nLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsaXplZERhdGVNYWMuY3BwJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGl6ZWROdW1iZXJNYWMubW0nLAotICAgICAgICAg
ICAgJ3BsYXRmb3JtL3RleHQvbWFjL1NoYXBlQXJhYmljLmMnLAotICAgICAgICAgICAgJ3BsYXRm
b3JtL3RleHQvbWFjL1NoYXBlQXJhYmljLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQv
bWFjL1N0cmluZ0ltcGxNYWMubW0nLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvbWFjL1N0
cmluZ01hYy5tbScsCiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJp
ZXMubW0nLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMTIzMTY4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNTEsNyArMzUx
LDYgQEAKIAkJMTVEMTdEMjExNDcyMzFFQjAwNUVCQ0E2IC8qIEluc3BlY3RvckZpbGVTeXN0ZW1B
Z2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
NUQxN0QxRTE0NzIzMUVCMDA1RUJDQTYgLyogSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcCAq
LzsgfTsKIAkJMTVEMTdEMjIxNDcyMzFFQjAwNUVCQ0E2IC8qIEluc3BlY3RvckZpbGVTeXN0ZW1B
Z2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTVE
MTdEMUYxNDcyMzFFQjAwNUVCQ0E2IC8qIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oICovOyB9
OwogCQkxNjNFODhGNzExOEEzOUQyMDBFRDkyMzEgLyogU2ltcGxlRm9udERhdGFDb3JlVGV4dC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNjNFODhG
NTExOEEzOUQyMDBFRDkyMzEgLyogU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAgKi87IH07Ci0J
CTE2M0U4QjEzMTE4QjNBREQwMEVEOTIzMSAvKiBTaW1wbGVGb250RGF0YUFUU1VJLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTYzRThCMTIxMThCM0FE
RDAwRUQ5MjMxIC8qIFNpbXBsZUZvbnREYXRhQVRTVUkubW0gKi87IH07CiAJCTE4NUJDRjI4MEYz
Mjc5Q0UwMDBFQTI2MiAvKiBUaHJlYWRUaW1lcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTg1QkNGMjYwRjMyNzlDRTAwMEVBMjYyIC8qIFRocmVh
ZFRpbWVycy5jcHAgKi87IH07CiAJCTE4NUJDRjI5MEYzMjc5Q0UwMDBFQTI2MiAvKiBUaHJlYWRU
aW1lcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE4
NUJDRjI3MEYzMjc5Q0UwMDBFQTI2MiAvKiBUaHJlYWRUaW1lcnMuaCAqLzsgfTsKIAkJMTg4NjA0
QjMwRjJFNjU0QTAwMEI2NDQzIC8qIERPTVRpbWVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE4ODYwNEIxMEYyRTY1NEEwMDBCNjQ0MyAvKiBET01U
aW1lci5jcHAgKi87IH07CkBAIC05OTIsNyArOTkxLDYgQEAKIAkJMzdDMjM2MEIxMDk3RURFRDAw
RUY5RjcyIC8qIEZvbnRDb21wbGV4VGV4dE1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0MyMzYwQTEwOTdFREVEMDBFRjlGNzIgLyogRm9udENv
bXBsZXhUZXh0TWFjLmNwcCAqLzsgfTsKIAkJMzdDMjM2MTAxMDk3RUU3NzAwRUY5RjcyIC8qIENv
bXBsZXhUZXh0Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzN0MyMzYwRTEwOTdFRTc3MDBFRjlGNzIgLyogQ29tcGxleFRleHRDb250
cm9sbGVyLmNwcCAqLzsgfTsKIAkJMzdDMjM2MTExMDk3RUU3NzAwRUY5RjcyIC8qIENvbXBsZXhU
ZXh0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzdDMjM2MEYxMDk3RUU3NzAwRUY5RjcyIC8qIENvbXBsZXhUZXh0Q29udHJvbGxlci5o
ICovOyB9OwotCQkzN0MyMzgyMTEwOThDODQyMDBFRjlGNzIgLyogQ29tcGxleFRleHRDb250cm9s
bGVyQVRTVUkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzdDMjM4MUYxMDk4Qzg0MjAwRUY5RjcyIC8qIENvbXBsZXhUZXh0Q29udHJvbGxlckFUU1VJ
LmNwcCAqLzsgfTsKIAkJMzdDMjM4MjIxMDk4Qzg0MjAwRUY5RjcyIC8qIENvbXBsZXhUZXh0Q29u
dHJvbGxlckNvcmVUZXh0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzdDMjM4MjAxMDk4Qzg0MjAwRUY5RjcyIC8qIENvbXBsZXhUZXh0Q29udHJvbGxl
ckNvcmVUZXh0Lm1tICovOyB9OwogCQkzN0MyOEE2ODEwRjY1OUNDMDA4Qzc4MTMgLyogVHlwZXNl
dHRpbmdGZWF0dXJlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzdDMjhBNjcxMEY2NTlDQzAwOEM3ODEzIC8qIFR5cGVzZXR0aW5nRmVhdHVyZXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzN0M2MUYw
MTEyMDk1Qzg3MDA3QTNDNjcgLyogQXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdDNjFGMDAxMjA5NUM4NzAw
N0EzQzY3IC8qIEF0b21pY1N0cmluZ0tleWVkTVJVQ2FjaGUuaCAqLzsgfTsKQEAgLTQ4NjMsOCAr
NDg2MSw2IEBACiAJCUIyQUZGQzdGMEQwMEE1QzEwMDMwMDc0RCAvKiBTaW1wbGVGb250RGF0YU1h
Yy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyQUZG
Qzc3MEQwMEE1QzEwMDMwMDc0RCAvKiBTaW1wbGVGb250RGF0YU1hYy5tbSAqLzsgfTsKIAkJQjJB
RkZDODAwRDAwQTVDMTAwMzAwNzREIC8qIEZvbnRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkFGRkM3ODBEMDBBNUMxMDAzMDA3NEQgLyogRm9u
dE1hYy5tbSAqLzsgfTsKIAkJQjJBRkZDODMwRDAwQTVDMTAwMzAwNzREIC8qIEdseXBoUGFnZVRy
ZWVOb2RlTWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEIyQUZGQzdCMEQwMEE1QzEwMDMwMDc0RCAvKiBHbHlwaFBhZ2VUcmVlTm9kZU1hYy5jcHAg
Ki87IH07Ci0JCUIyQUZGQzkzMEQwMEE1REYwMDMwMDc0RCAvKiBTaGFwZUFyYWJpYy5jIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJBRkZDODgwRDAwQTVE
RjAwMzAwNzREIC8qIFNoYXBlQXJhYmljLmMgKi87IH07Ci0JCUIyQUZGQzk0MEQwMEE1REYwMDMw
MDc0RCAvKiBTaGFwZUFyYWJpYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjJBRkZDODkwRDAwQTVERjAwMzAwNzREIC8qIFNoYXBlQXJhYmljLmggKi87
IH07CiAJCUIyQUZGQzk1MEQwMEE1REYwMDMwMDc0RCAvKiBTdHJpbmdJbXBsTWFjLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJBRkZDOEEwRDAwQTVE
RjAwMzAwNzREIC8qIFN0cmluZ0ltcGxNYWMubW0gKi87IH07CiAJCUIyQUZGQzk2MEQwMEE1REYw
MDMwMDc0RCAvKiBTdHJpbmdNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMkFGRkM4QjBEMDBBNURGMDAzMDA3NEQgLyogU3RyaW5nTWFjLm1tICov
OyB9OwogCQlCMkFGRkM5NzBEMDBBNURGMDAzMDA3NEQgLyogVGV4dEJvdW5kYXJpZXMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkFGRkM4QzBEMDBB
NURGMDAzMDA3NEQgLyogVGV4dEJvdW5kYXJpZXMubW0gKi87IH07CkBAIC03MzM1LDcgKzczMzEs
NiBAQAogCQkxNUQxN0QxRTE0NzIzMUVCMDA1RUJDQTYgLyogSW5zcGVjdG9yRmlsZVN5c3RlbUFn
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckZp
bGVTeXN0ZW1BZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE1RDE3RDFG
MTQ3MjMxRUIwMDVFQkNBNiAvKiBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE2M0U4OEY1MTE4QTM5RDIwMEVEOTIzMSAvKiBTaW1w
bGVGb250RGF0YUNvcmVUZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkxNjNFOEIxMjExOEIzQUREMDBFRDkyMzEgLyogU2ltcGxlRm9udERhdGFBVFNVSS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNpbXBsZUZvbnREYXRhQVRT
VUkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE4NUJDRjI2MEYzMjc5Q0UwMDBF
QTI2MiAvKiBUaHJlYWRUaW1lcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gVGhyZWFkVGltZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTg1
QkNGMjcwRjMyNzlDRTAwMEVBMjYyIC8qIFRocmVhZFRpbWVycy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUaHJlYWRUaW1lcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMTg4NjA0QjEwRjJFNjU0QTAwMEI2NDQzIC8qIERPTVRpbWVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVRpbWVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTgwMzQsNyArODAyOSw2IEBACiAJCTM3QzIzNjBBMTA5N0VERUQwMEVG
OUY3MiAvKiBGb250Q29tcGxleFRleHRNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRm9udENvbXBsZXhUZXh0TWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzdDMjM2MEUxMDk3RUU3NzAwRUY5RjcyIC8qIENvbXBsZXhUZXh0Q29udHJvbGxl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21wbGV4VGV4dENv
bnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzN0MyMzYwRjEwOTdF
RTc3MDBFRjlGNzIgLyogQ29tcGxleFRleHRDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvbXBsZXhUZXh0Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkzN0MyMzgxRjEwOThDODQyMDBFRjlGNzIgLyogQ29tcGxleFRleHRDb250
cm9sbGVyQVRTVUkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29t
cGxleFRleHRDb250cm9sbGVyQVRTVUkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzN0MyMzgyMDEwOThDODQyMDBFRjlGNzIgLyogQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRl
eHQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb21wbGV4VGV4
dENvbnRyb2xsZXJDb3JlVGV4dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFn
ZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5vYmpjcHA7IH07CiAJCTM3QzI4
QTY3MTBGNjU5Q0MwMDhDNzgxMyAvKiBUeXBlc2V0dGluZ0ZlYXR1cmVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVzZXR0aW5nRmVhdHVyZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzdDNjFGMDAxMjA5NUM4NzAwN0EzQzY3IC8qIEF0b21pY1N0cmlu
Z0tleWVkTVJVQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXRvbWlj
U3RyaW5nS2V5ZWRNUlVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIw
NjEsOCArMTIwNTUsNiBAQAogCQlCMkFGRkM4NTBEMDBBNURGMDAzMDA3NEQgLyogY2hhcmFjdGVy
LXNldHMudHh0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSAiY2hhcmFjdGVyLXNldHMudHh0Ijsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJBRkZDODYwRDAwQTVERjAwMzAwNzREIC8q
IG1hYy1lbmNvZGluZ3MudHh0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSAibWFjLWVuY29kaW5n
cy50eHQiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkFGRkM4NzBEMDBBNURGMDAz
MDA3NEQgLyogbWFrZS1jaGFyc2V0LXRhYmxlLnBsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBl
cmw7IHBhdGggPSAibWFrZS1jaGFyc2V0LXRhYmxlLnBsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQjJBRkZDODgwRDAwQTVERjAwMzAwNzREIC8qIFNoYXBlQXJhYmljLmMgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmM7IHBhdGggPSBTaGFwZUFyYWJpYy5jOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlCMkFGRkM4OTBEMDBBNURGMDAzMDA3NEQgLyogU2hhcGVBcmFiaWMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXBlQXJhYmljLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyQUZGQzhBMEQwMEE1REYwMDMwMDc0RCAvKiBTdHJp
bmdJbXBsTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN0
cmluZ0ltcGxNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyQUZGQzhCMEQw
MEE1REYwMDMwMDc0RCAvKiBTdHJpbmdNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gU3RyaW5nTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCMkFGRkM4QzBEMDBBNURGMDAzMDA3NEQgLyogVGV4dEJvdW5kYXJpZXMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGV4dEJvdW5kYXJpZXMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTU3NCw3ICsxOTU2Niw2IEBACiAJCQkJQjI3NTM1
NEEwQjA1MzgxNDAwMkNFNjRGIC8qIENvbG9yTWFjLm1tICovLAogCQkJCTM3QzIzNjBFMTA5N0VF
NzcwMEVGOUY3MiAvKiBDb21wbGV4VGV4dENvbnRyb2xsZXIuY3BwICovLAogCQkJCTM3QzIzNjBG
MTA5N0VFNzcwMEVGOUY3MiAvKiBDb21wbGV4VGV4dENvbnRyb2xsZXIuaCAqLywKLQkJCQkzN0My
MzgxRjEwOThDODQyMDBFRjlGNzIgLyogQ29tcGxleFRleHRDb250cm9sbGVyQVRTVUkuY3BwICov
LAogCQkJCTM3QzIzODIwMTA5OEM4NDIwMEVGOUY3MiAvKiBDb21wbGV4VGV4dENvbnRyb2xsZXJD
b3JlVGV4dC5tbSAqLywKIAkJCQk0OUFGMkQ2QjE0NDM1RDIxMDAxNkE3ODQgLyogRGlzcGxheVJl
ZnJlc2hNb25pdG9yTWFjLmNwcCAqLywKIAkJCQlCMjc1MzU0QjBCMDUzODE0MDAyQ0U2NEYgLyog
RmxvYXRQb2ludE1hYy5tbSAqLywKQEAgLTE5NTk2LDcgKzE5NTg3LDYgQEAKIAkJCQlFNEI0MUUx
MDBDQkY5MEVGMDBBRjJFQ0UgLyogTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaCAqLywKIAkJCQlF
NEI0MUUxMTBDQkY5MEVGMDBBRjJFQ0UgLyogTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0gKi8s
CiAJCQkJMDczNUVFNjkwRjQwQzVFNDAwNEEyNjA0IC8qIE1lZGlhUGxheWVyUHJveHkuaCAqLywK
LQkJCQkxNjNFOEIxMjExOEIzQUREMDBFRDkyMzEgLyogU2ltcGxlRm9udERhdGFBVFNVSS5tbSAq
LywKIAkJCQkxNjNFODhGNTExOEEzOUQyMDBFRDkyMzEgLyogU2ltcGxlRm9udERhdGFDb3JlVGV4
dC5jcHAgKi8sCiAJCQkJQjJBRkZDNzcwRDAwQTVDMTAwMzAwNzREIC8qIFNpbXBsZUZvbnREYXRh
TWFjLm1tICovLAogCQkJCTQ5RkZCRjNEMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmgg
Ki8sCkBAIC0xOTg0Nyw4ICsxOTgzNyw2IEBACiAJCQkJRjVDQzQyREIxMkY4MDFDQTAwRDVGN0Uz
IC8qIExvY2FsaXplZE51bWJlck1hYy5tbSAqLywKIAkJCQlCMkFGRkM4NjBEMDBBNURGMDAzMDA3
NEQgLyogbWFjLWVuY29kaW5ncy50eHQgKi8sCiAJCQkJQjJBRkZDODcwRDAwQTVERjAwMzAwNzRE
IC8qIG1ha2UtY2hhcnNldC10YWJsZS5wbCAqLywKLQkJCQlCMkFGRkM4ODBEMDBBNURGMDAzMDA3
NEQgLyogU2hhcGVBcmFiaWMuYyAqLywKLQkJCQlCMkFGRkM4OTBEMDBBNURGMDAzMDA3NEQgLyog
U2hhcGVBcmFiaWMuaCAqLywKIAkJCQlCMkFGRkM4QTBEMDBBNURGMDAzMDA3NEQgLyogU3RyaW5n
SW1wbE1hYy5tbSAqLywKIAkJCQlCMkFGRkM4QjBEMDBBNURGMDAzMDA3NEQgLyogU3RyaW5nTWFj
Lm1tICovLAogCQkJCUIyQUZGQzhDMEQwMEE1REYwMDMwMDc0RCAvKiBUZXh0Qm91bmRhcmllcy5t
bSAqLywKQEAgLTI0NjA5LDcgKzI0NTk3LDYgQEAKIAkJCQlCQzVFQjhDNDBFODIwMzFCMDBCMjU5
NjUgLyogU2hhZG93RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTZEMTY5NjQxMzQ2QjRDMTAw
MEVCNzcwIC8qIFNoYWRvd1Jvb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2Q0U4MEExOTg5
Q0EwMDdGQjhDNSAvKiBTaGFkb3dWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQjJBRkZDOTQw
RDAwQTVERjAwMzAwNzREIC8qIFNoYXBlQXJhYmljLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTRB
OTU0RTBCNEVEQ0NCMDAyRDhDM0MgLyogU2hhcmVkQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5N0IxRjAyRjEzQjAyNUQyMDBGNTEwM0YgLyogU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTkzMzA5RUEzMDk5RUI3OEMwMDU2RTU4MSAvKiBTaGFyZWRUaW1l
ci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTc2MSw3ICsyNTc0OCw2IEBACiAJCQkJQjI3NTM1Nzcw
QjA1MzgxNDAwMkNFNjRGIC8qIENvbG9yTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNjU1MEI2
QTEwOTlERjAyNzAwOTBENzgxIC8qIENvbW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdD
MjM2MTAxMDk3RUU3NzAwRUY5RjcyIC8qIENvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQkzN0MyMzgyMTEwOThDODQyMDBFRjlGNzIgLyogQ29tcGxleFRleHRDb250
cm9sbGVyQVRTVUkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdDMjM4MjIxMDk4Qzg0MjAwRUY5
RjcyIC8qIENvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNEE2QTBDNUIxNTIzMkYyNDAwQjA5QzZFIC8qIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTZGRTExNTBFNkUxREE3MDBCRjYwODggLyogQ29tcG9z
aXRlQW5pbWF0aW9uLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjc3OTEsNyArMjc3NzcsNiBAQAog
CQkJCUJDNUVCOEMzMEU4MjAzMUIwMEIyNTk2NSAvKiBTaGFkb3dEYXRhLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE2RDE2OTYyMTM0NkI0OUIwMDBFQjc3MCAvKiBTaGFkb3dSb290LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE4MEU2Q0Y0MEExOTg5Q0EwMDdGQjhDNSAvKiBTaGFkb3dWYWx1ZS5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQlCMkFGRkM5MzBEMDBBNURGMDAzMDA3NEQgLyogU2hhcGVB
cmFiaWMuYyBpbiBTb3VyY2VzICovLAogCQkJCTFBNEE5NTREMEI0RURDQ0IwMDJEOEMzQyAvKiBT
aGFyZWRCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEyREQ4RTMwRDkxRTJCNDAwMEY4
OUVFIC8qIFNoYXJlZEJ1ZmZlckNGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3QjFGMDJFMTNC
MDI1Q0EwMEY1MTAzRiAvKiBTaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTI3ODAxLDcgKzI3Nzg2LDYgQEAKIAkJCQk0MUQxNjhFNzEwMjI2RTg5MDA5QkM4Mjcg
LyogU2hhcmVkV29ya2VyQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MUQxNjhFRDEw
MjI2RTg5MDA5QkM4MjcgLyogU2hhcmVkV29ya2VyVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUIyQzNEQTY0MEQwMDZDRDYwMEVGNkYyNiAvKiBTaW1wbGVGb250RGF0YS5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQkxNjNFOEIxMzExOEIzQUREMDBFRDkyMzEgLyogU2ltcGxlRm9udERhdGFB
VFNVSS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTE2M0U4OEY3MTE4QTM5RDIwMEVEOTIzMSAvKiBT
aW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyQUZGQzdGMEQw
MEE1QzEwMDMwMDc0RCAvKiBTaW1wbGVGb250RGF0YU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUM1QTFFQTdDMTUyQkNGMDQwMDREMDBCNiAvKiBTaW1wbGlmeU1hcmt1cENvbW1hbmQuY3BwIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FjaGUuaAkocmV2aXNpb24gMTIzMTY4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw3ICsxMzAsNyBAQCBw
cml2YXRlOgogICAgIC8vIERvbid0IHB1cmdlIGlmIHRoaXMgY291bnQgaXMgPiAwOwogICAgIGlu
dCBtX3B1cmdlUHJldmVudENvdW50OwogCi0jaWYgVVNFKENPUkVfVEVYVCkgfHwgT1MoQU5EUk9J
RCkKKyNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoREFSV0lO
KSkgfHwgT1MoQU5EUk9JRCkKICAgICBmcmllbmQgY2xhc3MgQ29tcGxleFRleHRDb250cm9sbGVy
OwogI2VuZGlmCiAgICAgZnJpZW5kIGNsYXNzIFNpbXBsZUZvbnREYXRhOyAvLyBGb3IgZ2V0Q2Fj
aGVkRm9udERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSopCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmgJKHJldmlzaW9uIDEy
MzE2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRh
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDExICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKLSNpZiBVU0UoQVRT
VUkpCi10eXBlZGVmIHN0cnVjdCBPcGFxdWVBVFNVU3R5bGUqIEFUU1VTdHlsZTsKLSNlbmRpZgot
Ci0jaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ09SRV9URVhUKQorI2lmIFBMQVRGT1JNKE1BQykg
fHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBPUyhEQVJXSU4pKQogI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KICNlbmRpZgogCkBAIC0xNzYsMjQgKzE3MiwxMSBAQCBwdWJsaWM6CiAgICAgTlNG
b250KiBnZXROU0ZvbnQoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtRGF0YS5uc0ZvbnQoKTsg
fQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDT1JFX1RFWFQpCi0gICAgQ0ZE
aWN0aW9uYXJ5UmVmIGdldENGU3RyaW5nQXR0cmlidXRlcyhUeXBlc2V0dGluZ0ZlYXR1cmVzLCBG
b250T3JpZW50YXRpb24pIGNvbnN0OwotI2VuZGlmCi0KICNpZiBQTEFURk9STShNQUMpIHx8IChQ
TEFURk9STShDSFJPTUlVTSkgJiYgT1MoREFSV0lOKSkKKyAgICBDRkRpY3Rpb25hcnlSZWYgZ2V0
Q0ZTdHJpbmdBdHRyaWJ1dGVzKFR5cGVzZXR0aW5nRmVhdHVyZXMsIEZvbnRPcmllbnRhdGlvbikg
Y29uc3Q7CiAgICAgYm9vbCBjYW5SZW5kZXJDb21iaW5pbmdDaGFyYWN0ZXJTZXF1ZW5jZShjb25z
dCBVQ2hhciosIHNpemVfdCkgY29uc3Q7CiAjZW5kaWYKIAotI2lmIFVTRShBVFNVSSkKLSAgICB2
b2lkIGNoZWNrU2hhcGVzQXJhYmljKCkgY29uc3Q7Ci0gICAgYm9vbCBzaGFwZXNBcmFiaWMoKSBj
b25zdAotICAgIHsKLSAgICAgICAgaWYgKCFtX2NoZWNrZWRTaGFwZXNBcmFiaWMpCi0gICAgICAg
ICAgICBjaGVja1NoYXBlc0FyYWJpYygpOwotICAgICAgICByZXR1cm4gbV9zaGFwZXNBcmFiaWM7
Ci0gICAgfQotI2VuZGlmCi0KICNpZiBQTEFURk9STShRVCkKICNpZiAhSEFWRShRUkFXRk9OVCkK
ICAgICBRRm9udCBnZXRRdEZvbnQoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtRGF0YS5mb250
KCk7IH0KQEAgLTI5MCwyMiArMjczLDggQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX3N5bnRoZXRp
Y0JvbGRPZmZzZXQ7CiAjZW5kaWYKIAotCi0jaWYgVVNFKEFUU1VJKQotcHVibGljOgotICAgIG11
dGFibGUgSGFzaE1hcDx1bnNpZ25lZCwgQVRTVVN0eWxlPiBtX0FUU1VTdHlsZU1hcDsKLSAgICBt
dXRhYmxlIGJvb2wgbV9BVFNVTWlycm9yczsKLSAgICBtdXRhYmxlIGJvb2wgbV9jaGVja2VkU2hh
cGVzQXJhYmljOwotICAgIG11dGFibGUgYm9vbCBtX3NoYXBlc0FyYWJpYzsKLQotcHJpdmF0ZToK
LSNlbmRpZgotCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ09SRV9URVhUKQotICAgIG11dGFi
bGUgSGFzaE1hcDx1bnNpZ25lZCwgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gPiBtX0NGU3Ry
aW5nQXR0cmlidXRlczsKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0o
Q0hST01JVU0pICYmIE9TKERBUldJTikpCisgICAgbXV0YWJsZSBIYXNoTWFwPHVuc2lnbmVkLCBS
ZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiA+IG1fQ0ZTdHJpbmdBdHRyaWJ1dGVzOwogICAgIG11
dGFibGUgT3duUHRyPEhhc2hNYXA8U3RyaW5nLCBib29sPiA+IG1fY29tYmluaW5nQ2hhcmFjdGVy
U2VxdWVuY2VTdXBwb3J0OwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIu
Y3BwCShyZXZpc2lvbiAxMjMxNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTEg
KzMzLDYgQEAKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3Vu
aWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAotI2lmIChQTEFURk9STShNQUMpIHx8IFBMQVRGT1JN
KENIUk9NSVVNKSkgJiYgIVBMQVRGT1JNKElPUykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA9PSAxMDUwCi0vLyBVbmRlZmluZWQgd2hlbiBjb21waWxpbmcgYWdhaW5zIHRoZSAx
MC41IFNESy4KLSNkZWZpbmUga0NUVmVyc2lvbk51bWJlcjEwXzYgMHgwMDAzMDAwMAotI2VuZGlm
Ci0KIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTMxNiw2
OCArMzExLDkgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OmNvbGxlY3RDb21wbAogICAg
ICAgICBtX2NvbXBsZXhUZXh0UnVucy5yZXZlcnNlKCk7CiB9CiAKLSNpZiBVU0UoQ09SRV9URVhU
KSAmJiBVU0UoQVRTVUkpCi1zdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkVXNlQVRTVUlBUEkoKQot
ewotICAgIGVudW0gVHlwZVJlbmRlcmluZ0FQSVRvVXNlIHsgVW5Jbml0aWFsaXplZCwgVXNlQVRT
VUksIFVzZUNvcmVUZXh0IH07Ci0gICAgc3RhdGljIFR5cGVSZW5kZXJpbmdBUElUb1VzZSBhcGlU
b1VzZSA9IFVuSW5pdGlhbGl6ZWQ7Ci0KLSAgICBpZiAoVU5MSUtFTFkoYXBpVG9Vc2UgPT0gVW5J
bml0aWFsaXplZCkpIHsKLSAgICAgICAgaWYgKCZDVEdldENvcmVUZXh0VmVyc2lvbiAhPSAwICYm
IENUR2V0Q29yZVRleHRWZXJzaW9uKCkgPj0ga0NUVmVyc2lvbk51bWJlcjEwXzYpCi0gICAgICAg
ICAgICBhcGlUb1VzZSA9IFVzZUNvcmVUZXh0OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBh
cGlUb1VzZSA9IFVzZUFUU1VJOwotICAgIH0KLQotICAgIHJldHVybiBhcGlUb1VzZSA9PSBVc2VB
VFNVSTsKLX0KLSNlbmRpZgotCiBDRkluZGV4IENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxl
eFRleHRSdW46OmluZGV4QXQoc2l6ZV90IGkpIGNvbnN0CiB7Ci0jaWYgVVNFKENPUkVfVEVYVCkg
JiYgVVNFKEFUU1VJKQotICAgIHJldHVybiBzaG91bGRVc2VBVFNVSUFQSSgpID8gbV9hdHN1aUlu
ZGljZXNbaV0gOiBtX2NvcmVUZXh0SW5kaWNlc1tpXTsKLSNlbGlmIFVTRShBVFNVSSkKLSAgICBy
ZXR1cm4gbV9hdHN1aUluZGljZXNbaV07Ci0jZWxpZiBVU0UoQ09SRV9URVhUKQogICAgIHJldHVy
biBtX2NvcmVUZXh0SW5kaWNlc1tpXTsKLSNlbmRpZgotfQotCi12b2lkIENvbXBsZXhUZXh0Q29u
dHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNoYXJhY3RlcnMoY29uc3QgVUNoYXIq
IGNwLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHN0cmluZ0xvY2F0aW9uLCBjb25zdCBTaW1w
bGVGb250RGF0YSogZm9udERhdGEpCi17Ci0gICAgaWYgKCFmb250RGF0YSkgewotICAgICAgICAv
LyBDcmVhdGUgYSBydW4gb2YgbWlzc2luZyBnbHlwaHMgZnJvbSB0aGUgcHJpbWFyeSBmb250Lgot
ICAgICAgICBtX2NvbXBsZXhUZXh0UnVucy5hcHBlbmQoQ29tcGxleFRleHRSdW46OmNyZWF0ZSht
X2ZvbnQucHJpbWFyeUZvbnQoKSwgY3AsIHN0cmluZ0xvY2F0aW9uLCBsZW5ndGgsIG1fcnVuLmx0
cigpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSNpZiBVU0UoQ09SRV9URVhUKSAmJiBV
U0UoQVRTVUkpCi0gICAgaWYgKHNob3VsZFVzZUFUU1VJQVBJKCkpCi0gICAgICAgIHJldHVybiBj
b2xsZWN0Q29tcGxleFRleHRSdW5zRm9yQ2hhcmFjdGVyc0FUU1VJKGNwLCBsZW5ndGgsIHN0cmlu
Z0xvY2F0aW9uLCBmb250RGF0YSk7Ci0gICAgcmV0dXJuIGNvbGxlY3RDb21wbGV4VGV4dFJ1bnNG
b3JDaGFyYWN0ZXJzQ29yZVRleHQoY3AsIGxlbmd0aCwgc3RyaW5nTG9jYXRpb24sIGZvbnREYXRh
KTsKLSNlbGlmIFVTRShBVFNVSSkKLSAgICByZXR1cm4gY29sbGVjdENvbXBsZXhUZXh0UnVuc0Zv
ckNoYXJhY3RlcnNBVFNVSShjcCwgbGVuZ3RoLCBzdHJpbmdMb2NhdGlvbiwgZm9udERhdGEpOwot
I2VsaWYgVVNFKENPUkVfVEVYVCkKLSAgICByZXR1cm4gY29sbGVjdENvbXBsZXhUZXh0UnVuc0Zv
ckNoYXJhY3RlcnNDb3JlVGV4dChjcCwgbGVuZ3RoLCBzdHJpbmdMb2NhdGlvbiwgZm9udERhdGEp
OwotI2VuZGlmCi19Ci0KLUNvbXBsZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxleFRleHRSdW46OkNv
bXBsZXhUZXh0UnVuKGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250RGF0YSwgY29uc3QgVUNoYXIq
IGNoYXJhY3RlcnMsIHVuc2lnbmVkIHN0cmluZ0xvY2F0aW9uLCBzaXplX3Qgc3RyaW5nTGVuZ3Ro
LCBib29sIGx0cikKLSAgICA6IG1fZm9udERhdGEoZm9udERhdGEpCi0gICAgLCBtX2NoYXJhY3Rl
cnMoY2hhcmFjdGVycykKLSAgICAsIG1fc3RyaW5nTG9jYXRpb24oc3RyaW5nTG9jYXRpb24pCi0g
ICAgLCBtX3N0cmluZ0xlbmd0aChzdHJpbmdMZW5ndGgpCi0gICAgLCBtX2luZGV4RW5kKHN0cmlu
Z0xlbmd0aCkKLSAgICAsIG1faXNNb25vdG9uaWModHJ1ZSkKLXsKLSNpZiBVU0UoQ09SRV9URVhU
KSAmJiBVU0UoQVRTVUkpCi0gICAgc2hvdWxkVXNlQVRTVUlBUEkoKSA/IGNyZWF0ZVRleHRSdW5G
cm9tRm9udERhdGFBVFNVSShsdHIpIDogY3JlYXRlVGV4dFJ1bkZyb21Gb250RGF0YUNvcmVUZXh0
KGx0cik7Ci0jZWxpZiBVU0UoQVRTVUkpCi0gICAgY3JlYXRlVGV4dFJ1bkZyb21Gb250RGF0YUFU
U1VJKGx0cik7Ci0jZWxpZiBVU0UoQ09SRV9URVhUKQotICAgIGNyZWF0ZVRleHRSdW5Gcm9tRm9u
dERhdGFDb3JlVGV4dChsdHIpOwotI2VuZGlmCiB9CiAKIHZvaWQgQ29tcGxleFRleHRDb250cm9s
bGVyOjpDb21wbGV4VGV4dFJ1bjo6c2V0SXNOb25Nb25vdG9uaWMoKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4
dENvbnRyb2xsZXIuaAkocmV2aXNpb24gMTIzMTY4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSwxNiArMzUsOCBAQAogCiB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IENHR2x5cGg7CiAKLSNp
ZiBVU0UoQ09SRV9URVhUKQogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DVFJ1biAqIENUUnVuUmVm
OwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DVExpbmUgKiBDVExpbmVSZWY7Ci0jZW5kaWYKLSNp
ZiBVU0UoQVRTVUkpCi10eXBlZGVmIHN0cnVjdCBPcGFxdWVBVFNVVGV4dExheW91dCogICAgQVRT
VVRleHRMYXlvdXQ7Ci10eXBlZGVmIHN0cnVjdCBBVFNHbHlwaFZlY3RvciogICAgICAgICAgQVRT
VUxpbmVSZWY7Ci10eXBlZGVmIFVJbnQzMiBBVFNVTGF5b3V0T3BlcmF0aW9uU2VsZWN0b3I7Ci10
eXBlZGVmIFVJbnQzMiBBVFNVTGF5b3V0T3BlcmF0aW9uQ2FsbGJhY2tTdGF0dXM7Ci0jZW5kaWYK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NCw5ICs0Niw2IEBAIGNsYXNzIFRleHRSdW47
CiAKIC8vIENvbXBsZXhUZXh0Q29udHJvbGxlciBpcyByZXNwb25zaWJsZSBmb3IgcmVuZGVyaW5n
IGFuZCBtZWFzdXJpbmcgZ2x5cGhzIGZvcgogLy8gY29tcGxleCBzY3JpcHRzIG9uIE9TIFguCi0v
LyBUaGUgdW5kZXJseWluZyBBUEkgY2FuIGJlIHNlbGVjdGVkIGF0IGNvbXBpbGUgdGltZSBiYXNl
ZCBvbiBVU0UoQVRTVUkpIGFuZAotLy8gVVNFKENPUkVfVEVYVCkuICBJZiBib3RoIGFyZSBkZWZp
bmVkIHRoZW4gdGhlIENvcmUgVGV4dCBBUElzIGFyZSB1c2VkIGZvcgotLy8gT1MgVmVyc2lvbnMg
Pj0gMTAuNiwgQVRTVUkgaXMgdXNlZCBvdGhlcndpc2UuCiBjbGFzcyBDb21wbGV4VGV4dENvbnRy
b2xsZXIgewogcHVibGljOgogICAgIENvbXBsZXhUZXh0Q29udHJvbGxlcihjb25zdCBGb250Kiwg
Y29uc3QgVGV4dFJ1biYsIGJvb2wgbWF5VXNlTmF0dXJhbFdyaXRpbmdEaXJlY3Rpb24gPSBmYWxz
ZSwgSGFzaFNldDxjb25zdCBTaW1wbGVGb250RGF0YSo+KiBmYWxsYmFja0ZvbnRzID0gMCwgYm9v
bCBmb3JUZXh0RW1waGFzaXMgPSBmYWxzZSk7CkBAIC04NCwxOCArNzMsMTEgQEAgcHJpdmF0ZToK
IAogICAgIGNsYXNzIENvbXBsZXhUZXh0UnVuIDogcHVibGljIFJlZkNvdW50ZWQ8Q29tcGxleFRl
eHRSdW4+IHsKICAgICBwdWJsaWM6Ci0jaWYgVVNFKENPUkVfVEVYVCkKICAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8Q29tcGxleFRleHRSdW4+IGNyZWF0ZShDVFJ1blJlZiBjdFJ1biwgY29uc3Qg
U2ltcGxlRm9udERhdGEqIGZvbnREYXRhLCBjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWdu
ZWQgc3RyaW5nTG9jYXRpb24sIHNpemVfdCBzdHJpbmdMZW5ndGgsIENGUmFuZ2UgcnVuUmFuZ2Up
CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29tcGxleFRleHRS
dW4oY3RSdW4sIGZvbnREYXRhLCBjaGFyYWN0ZXJzLCBzdHJpbmdMb2NhdGlvbiwgc3RyaW5nTGVu
Z3RoLCBydW5SYW5nZSkpOwogICAgICAgICB9Ci0jZW5kaWYKLSNpZiBVU0UoQVRTVUkpCi0gICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvbXBsZXhUZXh0UnVuPiBjcmVhdGUoQVRTVVRleHRMYXlv
dXQgYXRzdVRleHRMYXlvdXQsIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250RGF0YSwgY29uc3Qg
VUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIHN0cmluZ0xvY2F0aW9uLCBzaXplX3Qgc3RyaW5n
TGVuZ3RoLCBib29sIGx0ciwgYm9vbCBkaXJlY3Rpb25hbE92ZXJyaWRlKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvbXBsZXhUZXh0UnVuKGF0c3VUZXh0TGF5
b3V0LCBmb250RGF0YSwgY2hhcmFjdGVycywgc3RyaW5nTG9jYXRpb24sIHN0cmluZ0xlbmd0aCwg
bHRyLCBkaXJlY3Rpb25hbE92ZXJyaWRlKSk7Ci0gICAgICAgIH0KLSNlbmRpZgorCiAgICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPENvbXBsZXhUZXh0UnVuPiBjcmVhdGUoY29uc3QgU2ltcGxlRm9u
dERhdGEqIGZvbnREYXRhLCBjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgc3RyaW5n
TG9jYXRpb24sIHNpemVfdCBzdHJpbmdMZW5ndGgsIGJvb2wgbHRyKQogICAgICAgICB7CiAgICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvbXBsZXhUZXh0UnVuKGZvbnREYXRhLCBjaGFy
YWN0ZXJzLCBzdHJpbmdMb2NhdGlvbiwgc3RyaW5nTGVuZ3RoLCBsdHIpKTsKQEAgLTExNSw1MSAr
OTcsMjggQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBzZXRJc05vbk1vbm90b25pYygpOwogCiAg
ICAgcHJpdmF0ZToKLSNpZiBVU0UoQ09SRV9URVhUKQogICAgICAgICBDb21wbGV4VGV4dFJ1bihD
VFJ1blJlZiwgY29uc3QgU2ltcGxlRm9udERhdGEqLCBjb25zdCBVQ2hhciogY2hhcmFjdGVycywg
dW5zaWduZWQgc3RyaW5nTG9jYXRpb24sIHNpemVfdCBzdHJpbmdMZW5ndGgsIENGUmFuZ2UgcnVu
UmFuZ2UpOwotICAgICAgICB2b2lkIGNyZWF0ZVRleHRSdW5Gcm9tRm9udERhdGFDb3JlVGV4dChi
b29sIGx0cik7Ci0jZW5kaWYKLSNpZiBVU0UoQVRTVUkpCi0gICAgICAgIENvbXBsZXhUZXh0UnVu
KEFUU1VUZXh0TGF5b3V0LCBjb25zdCBTaW1wbGVGb250RGF0YSosIGNvbnN0IFVDaGFyKiBjaGFy
YWN0ZXJzLCB1bnNpZ25lZCBzdHJpbmdMb2NhdGlvbiwgc2l6ZV90IHN0cmluZ0xlbmd0aCwgYm9v
bCBsdHIsIGJvb2wgZGlyZWN0aW9uYWxPdmVycmlkZSk7Ci0gICAgICAgIHZvaWQgY3JlYXRlVGV4
dFJ1bkZyb21Gb250RGF0YUFUU1VJKGJvb2wgbHRyKTsKLSNlbmRpZgogICAgICAgICBDb21wbGV4
VGV4dFJ1bihjb25zdCBTaW1wbGVGb250RGF0YSosIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1
bnNpZ25lZCBzdHJpbmdMb2NhdGlvbiwgc2l6ZV90IHN0cmluZ0xlbmd0aCwgYm9vbCBsdHIpOwog
Ci0jaWYgVVNFKEFUU1VJKQotICAgICAgICBzdGF0aWMgT1NTdGF0dXMgb3ZlcnJpZGVMYXlvdXRP
cGVyYXRpb24oQVRTVUxheW91dE9wZXJhdGlvblNlbGVjdG9yLCBBVFNVTGluZVJlZiwgVVJlZkNv
biwgdm9pZCosIEFUU1VMYXlvdXRPcGVyYXRpb25DYWxsYmFja1N0YXR1cyopOwotI2VuZGlmCi0K
ICAgICAgICAgdW5zaWduZWQgbV9nbHlwaENvdW50OwogICAgICAgICBjb25zdCBTaW1wbGVGb250
RGF0YSogbV9mb250RGF0YTsKICAgICAgICAgY29uc3QgVUNoYXIqIG1fY2hhcmFjdGVyczsKICAg
ICAgICAgdW5zaWduZWQgbV9zdHJpbmdMb2NhdGlvbjsKICAgICAgICAgc2l6ZV90IG1fc3RyaW5n
TGVuZ3RoOwotI2lmIFVTRShDT1JFX1RFWFQpCiAgICAgICAgIFZlY3RvcjxDRkluZGV4LCA2ND4g
bV9jb3JlVGV4dEluZGljZXNWZWN0b3I7CiAgICAgICAgIGNvbnN0IENGSW5kZXgqIG1fY29yZVRl
eHRJbmRpY2VzOwotI2VuZGlmCi0jaWYgVVNFKEFUU1VJKQotICAgICAgICBWZWN0b3I8Q0ZJbmRl
eCwgNjQ+IG1fYXRzdWlJbmRpY2VzOwotI2VuZGlmCiAgICAgICAgIENGSW5kZXggbV9pbmRleEVu
ZDsKICAgICAgICAgVmVjdG9yPENGSW5kZXgsIDY0PiBtX2dseXBoRW5kT2Zmc2V0czsKICAgICAg
ICAgVmVjdG9yPENHR2x5cGgsIDY0PiBtX2dseXBoc1ZlY3RvcjsKICAgICAgICAgY29uc3QgQ0dH
bHlwaCogbV9nbHlwaHM7CiAgICAgICAgIFZlY3RvcjxDR1NpemUsIDY0PiBtX2FkdmFuY2VzVmVj
dG9yOwogICAgICAgICBjb25zdCBDR1NpemUqIG1fYWR2YW5jZXM7Ci0jaWYgVVNFKEFUU1VJKQot
ICAgICAgICBib29sIG1fZGlyZWN0aW9uYWxPdmVycmlkZTsKLSNlbmRpZgogICAgICAgICBib29s
IG1faXNNb25vdG9uaWM7CiAgICAgfTsKIAogICAgIHZvaWQgY29sbGVjdENvbXBsZXhUZXh0UnVu
cygpOwogCi0gICAgLy8gY29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNoYXJhY3RlcnMoKSBpcyBh
IHN0dWIgZnVuY3Rpb24gdGhhdCBjYWxscyB0aHJvdWdoIHRvIHRoZSBBVFNVSSBvciBDb3JlIFRl
eHQgdmFyaWFudHMgYmFzZWQKLSAgICAvLyBvbiB0aGUgQVBJIGluIHVzZS4KICAgICB2b2lkIGNv
bGxlY3RDb21wbGV4VGV4dFJ1bnNGb3JDaGFyYWN0ZXJzKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQg
bGVuZ3RoLCB1bnNpZ25lZCBzdHJpbmdMb2NhdGlvbiwgY29uc3QgU2ltcGxlRm9udERhdGEqKTsK
LSAgICB2b2lkIGNvbGxlY3RDb21wbGV4VGV4dFJ1bnNGb3JDaGFyYWN0ZXJzQVRTVUkoY29uc3Qg
VUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHN0cmluZ0xvY2F0aW9uLCBjb25zdCBT
aW1wbGVGb250RGF0YSopOwotICAgIHZvaWQgY29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNoYXJh
Y3RlcnNDb3JlVGV4dChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3Ry
aW5nTG9jYXRpb24sIGNvbnN0IFNpbXBsZUZvbnREYXRhKik7CiAgICAgdm9pZCBhZGp1c3RHbHlw
aHNBbmRBZHZhbmNlcygpOwogCiAgICAgY29uc3QgRm9udCYgbV9mb250OwpAQCAtMTY5LDEwICsx
MjgsOCBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPFVDaGFyLCAyNTY+IG1fc21hbGxDYXBzQnVm
ZmVyOwogCi0jaWYgVVNFKENPUkVfVEVYVCkKICAgICAvLyBSZXRhaW4gbGluZXMgcmF0aGVyIHRo
YW4gdGhlaXIgcnVucyBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLgogICAgIFZlY3RvcjxSZXRhaW5Q
dHI8Q1RMaW5lUmVmPiA+IG1fY29yZVRleHRMaW5lczsKLSNlbmRpZgogICAgIFZlY3RvcjxSZWZQ
dHI8Q29tcGxleFRleHRSdW4+LCAxNj4gbV9jb21wbGV4VGV4dFJ1bnM7CiAgICAgVmVjdG9yPENH
U2l6ZSwgMjU2PiBtX2FkanVzdGVkQWR2YW5jZXM7CiAgICAgVmVjdG9yPENHR2x5cGgsIDI1Nj4g
bV9hZGp1c3RlZEdseXBoczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJBVFNVSS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckFUU1VJ
LmNwcAkocmV2aXNpb24gMTIzMTY4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckFUU1VJLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSwzNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9s
bEBrZGUub3JnKQotICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0
b0BrZGUub3JnKQotICogICAgICAgICAgIChDKSAyMDAwIERpcmsgTXVlbGxlciAobXVlbGxlckBr
ZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkNvbXBsZXhUZXh0Q29udHJvbGxlci5oIgotCi0jaWYgVVNFKEFUU1VJKQotCi0jaW5jbHVk
ZSAiRm9udC5oIgotI2luY2x1ZGUgIlNoYXBlQXJhYmljLmgiCi0jaW5jbHVkZSAiVGV4dFJ1bi5o
IgotI2luY2x1ZGUgPEFwcGxpY2F0aW9uU2VydmljZXMvQXBwbGljYXRpb25TZXJ2aWNlcy5oPgot
I2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+Ci0KLSNpZmRlZiBfX0xQNjRf
XwotLy8gQVRTVVRleHRJbnNlcnRlZCgpIGlzIFNQSSBpbiA2NC1iaXQuCi1leHRlcm4gIkMiIHsK
LU9TU3RhdHVzIEFUU1VUZXh0SW5zZXJ0ZWQoQVRTVVRleHRMYXlvdXQgaVRleHRMYXlvdXQsICBV
bmlDaGFyQXJyYXlPZmZzZXQgaUluc2VydGlvbkxvY2F0aW9uLCBVbmlDaGFyQ291bnQgaUluc2Vy
dGlvbkxlbmd0aCk7Ci19Ci0jZW5kaWYKLQotdXNpbmcgbmFtZXNwYWNlIFdURjo6VW5pY29kZTsK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1PU1N0YXR1cyBDb21wbGV4VGV4dENvbnRyb2xsZXI6
OkNvbXBsZXhUZXh0UnVuOjpvdmVycmlkZUxheW91dE9wZXJhdGlvbihBVFNVTGF5b3V0T3BlcmF0
aW9uU2VsZWN0b3IsIEFUU1VMaW5lUmVmIGF0c3VMaW5lUmVmLCBVUmVmQ29uIHJlZkNvbiwgdm9p
ZCosIEFUU1VMYXlvdXRPcGVyYXRpb25DYWxsYmFja1N0YXR1cyogY2FsbGJhY2tTdGF0dXMpCi17
Ci0gICAgQ29tcGxleFRleHRSdW4qIGNvbXBsZXhUZXh0UnVuID0gcmVpbnRlcnByZXRfY2FzdDxD
b21wbGV4VGV4dFJ1bio+KHJlZkNvbik7Ci0gICAgT1NTdGF0dXMgc3RhdHVzOwotICAgIEl0ZW1D
b3VudCBjb3VudDsKLSAgICBBVFNMYXlvdXRSZWNvcmQqIGxheW91dFJlY29yZHM7Ci0KLSAgICBz
dGF0dXMgPSBBVFNVRGlyZWN0R2V0TGF5b3V0RGF0YUFycmF5UHRyRnJvbUxpbmVSZWYoYXRzdUxp
bmVSZWYsIGtBVFNVRGlyZWN0RGF0YUxheW91dFJlY29yZEFUU0xheW91dFJlY29yZEN1cnJlbnQs
IHRydWUsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmbGF5b3V0UmVjb3JkcyksICZjb3VudCk7
Ci0gICAgaWYgKHN0YXR1cyAhPSBub0VycikgewotICAgICAgICAqY2FsbGJhY2tTdGF0dXMgPSBr
QVRTVUxheW91dE9wZXJhdGlvbkNhbGxiYWNrU3RhdHVzQ29udGludWU7Ci0gICAgICAgIHJldHVy
biBzdGF0dXM7Ci0gICAgfQotCi0gICAgY291bnQtLTsKLSAgICBJdGVtQ291bnQgaiA9IDA7Ci0g
ICAgQ0ZJbmRleCBpbmRleE9mZnNldCA9IDA7Ci0KLSAgICBpZiAoY29tcGxleFRleHRSdW4tPm1f
ZGlyZWN0aW9uYWxPdmVycmlkZSkgewotICAgICAgICBqKys7Ci0gICAgICAgIGNvdW50IC09IDI7
Ci0gICAgICAgIGluZGV4T2Zmc2V0ID0gLTE7Ci0gICAgfQotCi0gICAgY29tcGxleFRleHRSdW4t
Pm1fZ2x5cGhDb3VudCA9IGNvdW50OwotICAgIGNvbXBsZXhUZXh0UnVuLT5tX2dseXBoc1ZlY3Rv
ci5yZXNlcnZlQ2FwYWNpdHkoY291bnQpOwotICAgIGNvbXBsZXhUZXh0UnVuLT5tX2FkdmFuY2Vz
VmVjdG9yLnJlc2VydmVDYXBhY2l0eShjb3VudCk7Ci0gICAgY29tcGxleFRleHRSdW4tPm1fYXRz
dWlJbmRpY2VzLnJlc2VydmVDYXBhY2l0eShjb3VudCk7Ci0KLSAgICBib29sIGF0QmVnaW5uaW5n
ID0gdHJ1ZTsKLSAgICBDR0Zsb2F0IGxhc3RYID0gMDsKLQotICAgIGZvciAoSXRlbUNvdW50IGkg
PSAwOyBpIDwgY291bnQ7ICsraSwgKytqKSB7Ci0gICAgICAgIGlmIChsYXlvdXRSZWNvcmRzW2pd
LmdseXBoSUQgPT0ga0FUU0RlbGV0ZWRHbHlwaGNvZGUpIHsKLSAgICAgICAgICAgIGNvbXBsZXhU
ZXh0UnVuLT5tX2dseXBoQ291bnQtLTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9
Ci0gICAgICAgIGNvbXBsZXhUZXh0UnVuLT5tX2dseXBoc1ZlY3Rvci51bmNoZWNrZWRBcHBlbmQo
bGF5b3V0UmVjb3Jkc1tqXS5nbHlwaElEKTsKLSAgICAgICAgY29tcGxleFRleHRSdW4tPm1fYXRz
dWlJbmRpY2VzLnVuY2hlY2tlZEFwcGVuZChsYXlvdXRSZWNvcmRzW2pdLm9yaWdpbmFsT2Zmc2V0
IC8gMiArIGluZGV4T2Zmc2V0KTsKLSAgICAgICAgQ0dGbG9hdCB4ID0gRml4ZWRUb0Zsb2F0KGxh
eW91dFJlY29yZHNbal0ucmVhbFBvcyk7Ci0gICAgICAgIGlmICghYXRCZWdpbm5pbmcpCi0gICAg
ICAgICAgICBjb21wbGV4VGV4dFJ1bi0+bV9hZHZhbmNlc1ZlY3Rvci51bmNoZWNrZWRBcHBlbmQo
Q0dTaXplTWFrZSh4IC0gbGFzdFgsIDApKTsKLSAgICAgICAgbGFzdFggPSB4OwotICAgICAgICBh
dEJlZ2lubmluZyA9IGZhbHNlOwotICAgIH0KLQotICAgIGNvbXBsZXhUZXh0UnVuLT5tX2FkdmFu
Y2VzVmVjdG9yLnVuY2hlY2tlZEFwcGVuZChDR1NpemVNYWtlKEZpeGVkVG9GbG9hdChsYXlvdXRS
ZWNvcmRzW2pdLnJlYWxQb3MpIC0gbGFzdFgsIDApKTsKLQotICAgIGNvbXBsZXhUZXh0UnVuLT5t
X2dseXBocyA9IGNvbXBsZXhUZXh0UnVuLT5tX2dseXBoc1ZlY3Rvci5kYXRhKCk7Ci0gICAgY29t
cGxleFRleHRSdW4tPm1fYWR2YW5jZXMgPSBjb21wbGV4VGV4dFJ1bi0+bV9hZHZhbmNlc1ZlY3Rv
ci5kYXRhKCk7Ci0KLSAgICBzdGF0dXMgPSBBVFNVRGlyZWN0UmVsZWFzZUxheW91dERhdGFBcnJh
eVB0cihhdHN1TGluZVJlZiwga0FUU1VEaXJlY3REYXRhTGF5b3V0UmVjb3JkQVRTTGF5b3V0UmVj
b3JkQ3VycmVudCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZsYXlvdXRSZWNvcmRzKSk7Ci0g
ICAgKmNhbGxiYWNrU3RhdHVzID0ga0FUU1VMYXlvdXRPcGVyYXRpb25DYWxsYmFja1N0YXR1c0Nv
bnRpbnVlOwotICAgIHJldHVybiBub0VycjsKLX0KLQotc3RhdGljIGlubGluZSBib29sIGlzQXJh
YmljTGFtV2l0aEFsZWZMaWdhdHVyZShVQ2hhciBjKQotewotICAgIHJldHVybiBjID49IDB4ZmVm
NSAmJiBjIDw9IDB4ZmVmYzsKLX0KLQotc3RhdGljIHZvaWQgc2hhcGVBcmFiaWMoY29uc3QgVUNo
YXIqIHNvdXJjZSwgVUNoYXIqIGRlc3QsIHVuc2lnbmVkIHRvdGFsTGVuZ3RoKQotewotICAgIHVu
c2lnbmVkIHNoYXBpbmdTdGFydCA9IDA7Ci0gICAgd2hpbGUgKHNoYXBpbmdTdGFydCA8IHRvdGFs
TGVuZ3RoKSB7Ci0gICAgICAgIHVuc2lnbmVkIHNoYXBpbmdFbmQ7Ci0gICAgICAgIC8vIFdlIGRv
IG5vdCB3YW50IHRvIHBhc3MgYSBMYW0gd2l0aCBBbGVmIGxpZ2F0dXJlIGZvbGxvd2VkIGJ5IGEg
c3BhY2UgdG8gdGhlIHNoYXBlciwKLSAgICAgICAgLy8gc2luY2Ugd2Ugd2FudCB0byBiZSBhYmxl
IHRvIGlkZW50aWZ5IHRoaXMgc2VxdWVuY2UgYXMgdGhlIHJlc3VsdCBvZiBzaGFwaW5nIGEgTGFt
Ci0gICAgICAgIC8vIGZvbGxvd2VkIGJ5IGFuIEFsZWYgYW5kIHBhZGRpbmcgd2l0aCBhIHNwYWNl
LgotICAgICAgICBib29sIGZvdW5kTGlnYXR1cmVTcGFjZSA9IGZhbHNlOwotICAgICAgICBmb3Ig
KHNoYXBpbmdFbmQgPSBzaGFwaW5nU3RhcnQ7ICFmb3VuZExpZ2F0dXJlU3BhY2UgJiYgc2hhcGlu
Z0VuZCA8IHRvdGFsTGVuZ3RoIC0gMTsgKytzaGFwaW5nRW5kKQotICAgICAgICAgICAgZm91bmRM
aWdhdHVyZVNwYWNlID0gaXNBcmFiaWNMYW1XaXRoQWxlZkxpZ2F0dXJlKHNvdXJjZVtzaGFwaW5n
RW5kXSkgJiYgc291cmNlW3NoYXBpbmdFbmQgKyAxXSA9PSAnICc7Ci0gICAgICAgIHNoYXBpbmdF
bmQrKzsKLQotICAgICAgICBVRXJyb3JDb2RlIHNoYXBpbmdFcnJvciA9IFVfWkVST19FUlJPUjsK
LSAgICAgICAgdW5zaWduZWQgY2hhcnNXcml0dGVuID0gc2hhcGVBcmFiaWMoc291cmNlICsgc2hh
cGluZ1N0YXJ0LCBzaGFwaW5nRW5kIC0gc2hhcGluZ1N0YXJ0LCBkZXN0ICsgc2hhcGluZ1N0YXJ0
LCBzaGFwaW5nRW5kIC0gc2hhcGluZ1N0YXJ0LCBVX1NIQVBFX0xFVFRFUlNfU0hBUEUgfCBVX1NI
QVBFX0xFTkdUSF9GSVhFRF9TUEFDRVNfTkVBUiwgJnNoYXBpbmdFcnJvcik7Ci0KLSAgICAgICAg
aWYgKFVfU1VDQ0VTUyhzaGFwaW5nRXJyb3IpICYmIGNoYXJzV3JpdHRlbiA9PSBzaGFwaW5nRW5k
IC0gc2hhcGluZ1N0YXJ0KSB7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSBzaGFwaW5n
U3RhcnQ7IGogPCBzaGFwaW5nRW5kIC0gMTsgKytqKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGlz
QXJhYmljTGFtV2l0aEFsZWZMaWdhdHVyZShkZXN0W2pdKSAmJiBkZXN0W2ogKyAxXSA9PSAnICcp
Ci0gICAgICAgICAgICAgICAgICAgIGRlc3RbKytqXSA9IHplcm9XaWR0aFNwYWNlOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgaWYgKGZvdW5kTGlnYXR1cmVTcGFjZSkgewotICAgICAgICAg
ICAgICAgIGRlc3Rbc2hhcGluZ0VuZF0gPSAnICc7Ci0gICAgICAgICAgICAgICAgc2hhcGluZ0Vu
ZCsrOwotICAgICAgICAgICAgfSBlbHNlIGlmIChpc0FyYWJpY0xhbVdpdGhBbGVmTGlnYXR1cmUo
ZGVzdFtzaGFwaW5nRW5kIC0gMV0pKSB7Ci0gICAgICAgICAgICAgICAgLy8gdV9zaGFwZUFyYWJp
YyBxdWlyazogaWYgdGhlIGxhc3QgdHdvIGNoYXJhY3RlcnMgaW4gdGhlIHNvdXJjZSBzdHJpbmcg
YXJlIGEgTGFtIGFuZCBhbiBBbGVmLAotICAgICAgICAgICAgICAgIC8vIHRoZSBzcGFjZSBpcyBw
dXQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nLCBkZXNwaXRlIFVfU0hBUEVfTEVOR1RI
X0ZJWEVEX1NQQUNFU19ORUFSLgotICAgICAgICAgICAgICAgIEFTU0VSVChkZXN0W3NoYXBpbmdT
dGFydF0gPT0gJyAnKTsKLSAgICAgICAgICAgICAgICBkZXN0W3NoYXBpbmdTdGFydF0gPSB6ZXJv
V2lkdGhTcGFjZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IC8vIFNvbWV0aGluZyB3ZW50IHdyb25nLiBBYmFuZG9uIHNoYXBpbmcgYW5kIGp1c3QgY29weSB0
aGUgcmVzdCBvZiB0aGUgYnVmZmVyLgotICAgICAgICAgICAgTE9HX0VSUk9SKCJ1X3NoYXBlQXJh
YmljIGZhaWxlZCglZCkiLCBzaGFwaW5nRXJyb3IpOwotICAgICAgICAgICAgc2hhcGluZ0VuZCA9
IHRvdGFsTGVuZ3RoOwotICAgICAgICAgICAgbWVtY3B5KGRlc3QgKyBzaGFwaW5nU3RhcnQsIHNv
dXJjZSArIHNoYXBpbmdTdGFydCwgKHNoYXBpbmdFbmQgLSBzaGFwaW5nU3RhcnQpICogc2l6ZW9m
KFVDaGFyKSk7Ci0gICAgICAgIH0KLSAgICAgICAgc2hhcGluZ1N0YXJ0ID0gc2hhcGluZ0VuZDsK
LSAgICB9Ci19Ci0KLUNvbXBsZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxleFRleHRSdW46OkNvbXBs
ZXhUZXh0UnVuKEFUU1VUZXh0TGF5b3V0IGF0c3VUZXh0TGF5b3V0LCBjb25zdCBTaW1wbGVGb250
RGF0YSogZm9udERhdGEsIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBzdHJpbmdM
b2NhdGlvbiwgc2l6ZV90IHN0cmluZ0xlbmd0aCwgYm9vbCBsdHIsIGJvb2wgZGlyZWN0aW9uYWxP
dmVycmlkZSkKLSAgICA6IG1fZm9udERhdGEoZm9udERhdGEpCi0gICAgLCBtX2NoYXJhY3RlcnMo
Y2hhcmFjdGVycykKLSAgICAsIG1fc3RyaW5nTG9jYXRpb24oc3RyaW5nTG9jYXRpb24pCi0gICAg
LCBtX3N0cmluZ0xlbmd0aChzdHJpbmdMZW5ndGgpCi0gICAgLCBtX2luZGV4RW5kKHN0cmluZ0xl
bmd0aCkKLSAgICAsIG1fZGlyZWN0aW9uYWxPdmVycmlkZShkaXJlY3Rpb25hbE92ZXJyaWRlKQot
ICAgICwgbV9pc01vbm90b25pYyh0cnVlKQotewotICAgIE9TU3RhdHVzIHN0YXR1czsKLQotICAg
IHN0YXR1cyA9IEFUU1VTZXRUZXh0TGF5b3V0UmVmQ29uKGF0c3VUZXh0TGF5b3V0LCByZWludGVy
cHJldF9jYXN0PFVSZWZDb24+KHRoaXMpKTsKLQotICAgIEFUU0xpbmVMYXlvdXRPcHRpb25zIGxp
bmVMYXlvdXRPcHRpb25zID0ga0FUU0xpbmVLZWVwU3BhY2VzT3V0T2ZNYXJnaW4gfCBrQVRTTGlu
ZUhhc05vSGFuZ2VyczsKLQotICAgIEJvb2xlYW4gcnRsID0gIWx0cjsKLQotICAgIFZlY3RvcjxV
Q2hhciwgMjU2PiBzdWJzdGl0dXRlQ2hhcmFjdGVyczsKLSAgICBib29sIHNob3VsZENoZWNrRm9y
TWlycm9yaW5nID0gIWx0ciAmJiAhZm9udERhdGEtPm1fQVRTVU1pcnJvcnM7Ci0gICAgYm9vbCBz
aG91bGRDaGVja0ZvckFyYWJpYyA9ICFmb250RGF0YS0+c2hhcGVzQXJhYmljKCk7Ci0gICAgYm9v
bCBzaG91bGRTaGFwZUFyYWJpYyA9IGZhbHNlOwotCi0gICAgYm9vbCBtaXJyb3JlZCA9IGZhbHNl
OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RyaW5nTGVuZ3RoOyArK2kpIHsKLSAgICAg
ICAgaWYgKHNob3VsZENoZWNrRm9yTWlycm9yaW5nKSB7Ci0gICAgICAgICAgICBVQ2hhciBtaXJy
b3JlZENoYXIgPSB1X2NoYXJNaXJyb3IoY2hhcmFjdGVyc1tpXSk7Ci0gICAgICAgICAgICBpZiAo
bWlycm9yZWRDaGFyICE9IGNoYXJhY3RlcnNbaV0pIHsKLSAgICAgICAgICAgICAgICBpZiAoIW1p
cnJvcmVkKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1pcnJvcmVkID0gdHJ1ZTsKLSAgICAgICAg
ICAgICAgICAgICAgc3Vic3RpdHV0ZUNoYXJhY3RlcnMuZ3JvdyhzdHJpbmdMZW5ndGgpOwotICAg
ICAgICAgICAgICAgICAgICBtZW1jcHkoc3Vic3RpdHV0ZUNoYXJhY3RlcnMuZGF0YSgpLCBjaGFy
YWN0ZXJzLCBzdHJpbmdMZW5ndGggKiBzaXplb2YoVUNoYXIpKTsKLSAgICAgICAgICAgICAgICAg
ICAgQVRTVVRleHRNb3ZlZChhdHN1VGV4dExheW91dCwgc3Vic3RpdHV0ZUNoYXJhY3RlcnMuZGF0
YSgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc3Vic3RpdHV0ZUNoYXJh
Y3RlcnNbaV0gPSBtaXJyb3JlZENoYXI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAg
ICAgaWYgKHNob3VsZENoZWNrRm9yQXJhYmljICYmIGlzQXJhYmljQ2hhcihjaGFyYWN0ZXJzW2ld
KSkgewotICAgICAgICAgICAgc2hvdWxkQ2hlY2tGb3JBcmFiaWMgPSBmYWxzZTsKLSAgICAgICAg
ICAgIHNob3VsZFNoYXBlQXJhYmljID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlm
IChzaG91bGRTaGFwZUFyYWJpYykgewotICAgICAgICBWZWN0b3I8VUNoYXIsIDI1Nj4gc2hhcGVk
QXJhYmljKHN0cmluZ0xlbmd0aCk7Ci0gICAgICAgIHNoYXBlQXJhYmljKHN1YnN0aXR1dGVDaGFy
YWN0ZXJzLmlzRW1wdHkoKSA/IGNoYXJhY3RlcnMgOiBzdWJzdGl0dXRlQ2hhcmFjdGVycy5kYXRh
KCksIHNoYXBlZEFyYWJpYy5kYXRhKCksIHN0cmluZ0xlbmd0aCk7Ci0gICAgICAgIHN1YnN0aXR1
dGVDaGFyYWN0ZXJzLnN3YXAoc2hhcGVkQXJhYmljKTsKLSAgICAgICAgQVRTVVRleHRNb3ZlZChh
dHN1VGV4dExheW91dCwgc3Vic3RpdHV0ZUNoYXJhY3RlcnMuZGF0YSgpKTsKLSAgICB9Ci0KLSAg
ICBpZiAoZGlyZWN0aW9uYWxPdmVycmlkZSkgewotICAgICAgICBVQ2hhciBvdmVycmlkZSA9IGx0
ciA/IGxlZnRUb1JpZ2h0T3ZlcnJpZGUgOiByaWdodFRvTGVmdE92ZXJyaWRlOwotICAgICAgICBp
ZiAoc3Vic3RpdHV0ZUNoYXJhY3RlcnMuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBzdWJzdGl0
dXRlQ2hhcmFjdGVycy5ncm93KHN0cmluZ0xlbmd0aCArIDIpOwotICAgICAgICAgICAgc3Vic3Rp
dHV0ZUNoYXJhY3RlcnNbMF0gPSBvdmVycmlkZTsKLSAgICAgICAgICAgIG1lbWNweShzdWJzdGl0
dXRlQ2hhcmFjdGVycy5kYXRhKCkgKyAxLCBjaGFyYWN0ZXJzLCBzdHJpbmdMZW5ndGggKiBzaXpl
b2YoVUNoYXIpKTsKLSAgICAgICAgICAgIHN1YnN0aXR1dGVDaGFyYWN0ZXJzW3N0cmluZ0xlbmd0
aCArIDFdID0gcG9wRGlyZWN0aW9uYWxGb3JtYXR0aW5nOwotICAgICAgICAgICAgQVRTVVRleHRN
b3ZlZChhdHN1VGV4dExheW91dCwgc3Vic3RpdHV0ZUNoYXJhY3RlcnMuZGF0YSgpKTsKLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHN1YnN0aXR1dGVDaGFyYWN0ZXJzLnByZXBlbmQob3Zl
cnJpZGUpOwotICAgICAgICAgICAgc3Vic3RpdHV0ZUNoYXJhY3RlcnMuYXBwZW5kKHBvcERpcmVj
dGlvbmFsRm9ybWF0dGluZyk7Ci0gICAgICAgIH0KLSAgICAgICAgQVRTVVRleHRJbnNlcnRlZChh
dHN1VGV4dExheW91dCwgMCwgMik7Ci0gICAgfQotCi0gICAgQVRTVUxheW91dE9wZXJhdGlvbk92
ZXJyaWRlU3BlY2lmaWVyIG92ZXJyaWRlU3BlY2lmaWVyOwotICAgIG92ZXJyaWRlU3BlY2lmaWVy
Lm9wZXJhdGlvblNlbGVjdG9yID0ga0FUU1VMYXlvdXRPcGVyYXRpb25Qb3N0TGF5b3V0QWRqdXN0
bWVudDsKLSAgICBvdmVycmlkZVNwZWNpZmllci5vdmVycmlkZVVQUCA9IG92ZXJyaWRlTGF5b3V0
T3BlcmF0aW9uOwotCi0gICAgQVRTVUF0dHJpYnV0ZVRhZyB0YWdzW10gPSB7IGtBVFNVTGluZUxh
eW91dE9wdGlvbnNUYWcsIGtBVFNVTGluZURpcmVjdGlvblRhZywga0FUU1VMYXlvdXRPcGVyYXRp
b25PdmVycmlkZVRhZyB9OwotICAgIEJ5dGVDb3VudCBzaXplc1tdID0geyBzaXplb2YoQVRTTGlu
ZUxheW91dE9wdGlvbnMpLCBzaXplb2YoQm9vbGVhbiksIHNpemVvZihBVFNVTGF5b3V0T3BlcmF0
aW9uT3ZlcnJpZGVTcGVjaWZpZXIpIH07Ci0gICAgQVRTVUF0dHJpYnV0ZVZhbHVlUHRyIHZhbHVl
c1tdID0geyAmbGluZUxheW91dE9wdGlvbnMsICZydGwsICZvdmVycmlkZVNwZWNpZmllciB9Owot
Ci0gICAgc3RhdHVzID0gQVRTVVNldExheW91dENvbnRyb2xzKGF0c3VUZXh0TGF5b3V0LCAzLCB0
YWdzLCBzaXplcywgdmFsdWVzKTsKLQotICAgIEl0ZW1Db3VudCBib3VuZHNDb3VudDsKLSAgICBz
dGF0dXMgPSBBVFNVR2V0R2x5cGhCb3VuZHMoYXRzdVRleHRMYXlvdXQsIDAsIDAsIDAsIG1fc3Ry
aW5nTGVuZ3RoLCBrQVRTVXNlRnJhY3Rpb25hbE9yaWdpbnMsIDAsIDAsICZib3VuZHNDb3VudCk7
Ci0KLSAgICBzdGF0dXMgPSBBVFNVRGlzcG9zZVRleHRMYXlvdXQoYXRzdVRleHRMYXlvdXQpOwot
fQotCi12b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxleFRleHRSdW46OmNyZWF0ZVRl
eHRSdW5Gcm9tRm9udERhdGFBVFNVSShib29sIGx0cikKLXsKLSAgICBtX2F0c3VpSW5kaWNlcy5y
ZXNlcnZlQ2FwYWNpdHkobV9zdHJpbmdMZW5ndGgpOwotICAgIHVuc2lnbmVkIHIgPSAwOwotICAg
IHdoaWxlIChyIDwgbV9zdHJpbmdMZW5ndGgpIHsKLSAgICAgICAgbV9hdHN1aUluZGljZXMudW5j
aGVja2VkQXBwZW5kKHIpOwotICAgICAgICBpZiAoVV9JU19TVVJST0dBVEUobV9jaGFyYWN0ZXJz
W3JdKSkgewotICAgICAgICAgICAgQVNTRVJUKHIgKyAxIDwgbV9zdHJpbmdMZW5ndGgpOwotICAg
ICAgICAgICAgQVNTRVJUKFVfSVNfU1VSUk9HQVRFX0xFQUQobV9jaGFyYWN0ZXJzW3JdKSk7Ci0g
ICAgICAgICAgICBBU1NFUlQoVV9JU19UUkFJTChtX2NoYXJhY3RlcnNbciArIDFdKSk7Ci0gICAg
ICAgICAgICByICs9IDI7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcisrOwotICAgIH0K
LSAgICBtX2dseXBoQ291bnQgPSBtX2F0c3VpSW5kaWNlcy5zaXplKCk7Ci0gICAgaWYgKCFsdHIp
IHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCByID0gMCwgZW5kID0gbV9nbHlwaENvdW50IC0gMTsg
ciA8IG1fZ2x5cGhDb3VudCAvIDI7ICsrciwgLS1lbmQpCi0gICAgICAgICAgICBzdGQ6OnN3YXAo
bV9hdHN1aUluZGljZXNbcl0sIG1fYXRzdWlJbmRpY2VzW2VuZF0pOwotICAgIH0KLQotICAgIG1f
Z2x5cGhzVmVjdG9yLmZpbGwoMCwgbV9nbHlwaENvdW50KTsKLSAgICBtX2dseXBocyA9IG1fZ2x5
cGhzVmVjdG9yLmRhdGEoKTsKLSAgICBtX2FkdmFuY2VzVmVjdG9yLmZpbGwoQ0dTaXplTWFrZSht
X2ZvbnREYXRhLT53aWR0aEZvckdseXBoKDApLCAwKSwgbV9nbHlwaENvdW50KTsKLSAgICBtX2Fk
dmFuY2VzID0gbV9hZHZhbmNlc1ZlY3Rvci5kYXRhKCk7Ci19Ci0KLXN0YXRpYyBib29sIGZvbnRI
YXNNaXJyb3JpbmdJbmZvKEFUU1VGb250SUQgZm9udElEKQotewotICAgIEJ5dGVDb3VudCBwcm9w
VGFibGVTaXplOwotICAgIE9TU3RhdHVzIHN0YXR1cyA9IEFUU0ZvbnRHZXRUYWJsZShmb250SUQs
ICdwcm9wJywgMCwgMCwgMCwgJnByb3BUYWJsZVNpemUpOwotICAgIGlmIChzdGF0dXMgPT0gbm9F
cnIpICAgIC8vIG5haXZlbHkgYXNzdW1lIHRoYXQgaWYgYSAncHJvcCcgdGFibGUgZXhpc3RzIHRo
ZW4gaXQgY29udGFpbnMgbWlycm9yaW5nIGluZm8KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ZWxzZSBpZiAoc3RhdHVzICE9IGtBVFNJbnZhbGlkRm9udFRhYmxlQWNjZXNzKSAvLyBhbnl0aGlu
ZyBvdGhlciB0aGFuIGEgbWlzc2luZyB0YWJsZSBpcyBsb2dnZWQgYXMgYW4gZXJyb3IKLSAgICAg
ICAgTE9HX0VSUk9SKCJBVFNGb250R2V0VGFibGUgZmFpbGVkICglZCkiLCBzdGF0aWNfY2FzdDxp
bnQ+KHN0YXR1cykpOwotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1zdGF0aWMgdm9pZCBkaXNh
YmxlTGlnYXR1cmVzKGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250RGF0YSwgQVRTVVN0eWxlIGF0
c3VTdHlsZSwgVHlwZXNldHRpbmdGZWF0dXJlcyB0eXBlc2V0dGluZ0ZlYXR1cmVzKQotewotICAg
IC8vIERvbid0IGJlIHRvbyBhZ2dyZXNzaXZlOiBpZiB0aGUgZm9udCBkb2Vzbid0IGNvbnRhaW4g
J2EnLCB0aGVuIGFzc3VtZSB0aGF0IGFueSBsaWdhdHVyZXMgaXQgY29udGFpbnMgYXJlCi0gICAg
Ly8gaW4gY2hhcmFjdGVycyB0aGF0IGFsd2F5cyBnbyB0aHJvdWdoIEFUU1VJLCBhbmQgdGhlcmVm
b3JlIGFsbG93IHRoZW0uIEdlZXphIFBybyBpcyBhbiBleGFtcGxlLgotICAgIC8vIFNlZSBidWd6
aWxsYSA1MTY2LgotICAgIGlmICgodHlwZXNldHRpbmdGZWF0dXJlcyAmIExpZ2F0dXJlcykgfHwg
KGZvbnREYXRhLT5wbGF0Zm9ybURhdGEoKS5vcmllbnRhdGlvbigpID09IEhvcml6b250YWwgJiYg
Zm9udERhdGEtPnBsYXRmb3JtRGF0YSgpLmFsbG93c0xpZ2F0dXJlcygpKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgQVRTVUZvbnRGZWF0dXJlVHlwZSBmZWF0dXJlVHlwZXNbXSA9IHsga0xpZ2F0
dXJlc1R5cGUgfTsKLSAgICBBVFNVRm9udEZlYXR1cmVTZWxlY3RvciBmZWF0dXJlU2VsZWN0b3Jz
W10gPSB7IGtDb21tb25MaWdhdHVyZXNPZmZTZWxlY3RvciB9OwotICAgIE9TU3RhdHVzIHN0YXR1
cyA9IEFUU1VTZXRGb250RmVhdHVyZXMoYXRzdVN0eWxlLCAxLCBmZWF0dXJlVHlwZXMsIGZlYXR1
cmVTZWxlY3RvcnMpOwotICAgIGlmIChzdGF0dXMgIT0gbm9FcnIpCi0gICAgICAgIExPR19FUlJP
UigiQVRTVVNldEZvbnRGZWF0dXJlcyBmYWlsZWQgKCVkKSAtLSBsaWdhdHVyZXMgcmVtYWluIGVu
YWJsZWQiLCBzdGF0aWNfY2FzdDxpbnQ+KHN0YXR1cykpOwotfQotCi1zdGF0aWMgQVRTVVN0eWxl
IGluaXRpYWxpemVBVFNVU3R5bGUoY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnREYXRhLCBUeXBl
c2V0dGluZ0ZlYXR1cmVzIHR5cGVzZXR0aW5nRmVhdHVyZXMpCi17Ci0gICAgdW5zaWduZWQga2V5
ID0gdHlwZXNldHRpbmdGZWF0dXJlcyArIDE7Ci0gICAgSGFzaE1hcDx1bnNpZ25lZCwgQVRTVVN0
eWxlPjo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IGZvbnREYXRhLT5tX0FUU1VTdHlsZU1hcC5hZGQo
a2V5LCAwKTsKLSAgICBBVFNVU3R5bGUmIGF0c3VTdHlsZSA9IGFkZFJlc3VsdC5pdGVyYXRvci0+
c2Vjb25kOwotICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIHJldHVybiBh
dHN1U3R5bGU7Ci0KLSAgICBBVFNVRm9udElEIGZvbnRJRCA9IGZvbnREYXRhLT5wbGF0Zm9ybURh
dGEoKS5jdEZvbnQoKSA/IENURm9udEdldFBsYXRmb3JtRm9udChmb250RGF0YS0+cGxhdGZvcm1E
YXRhKCkuY3RGb250KCksIDApIDogMDsKLSAgICBpZiAoIWZvbnRJRCkgewotICAgICAgICBMT0df
RVJST1IoInVuYWJsZSB0byBnZXQgQVRTVUZvbnRJRCBmb3IgJXAiLCBmb250RGF0YS0+cGxhdGZv
cm1EYXRhKCkuZm9udCgpKTsKLSAgICAgICAgZm9udERhdGEtPm1fQVRTVVN0eWxlTWFwLnJlbW92
ZShhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAg
IE9TU3RhdHVzIHN0YXR1cyA9IEFUU1VDcmVhdGVTdHlsZSgmYXRzdVN0eWxlKTsKLSAgICBpZiAo
c3RhdHVzICE9IG5vRXJyKQotICAgICAgICBMT0dfRVJST1IoIkFUU1VDcmVhdGVTdHlsZSBmYWls
ZWQgKCVkKSIsIHN0YXRpY19jYXN0PGludD4oc3RhdHVzKSk7Ci0KLSAgICBGaXhlZCBmb250U2l6
ZSA9IEZsb2F0VG9GaXhlZChmb250RGF0YS0+cGxhdGZvcm1EYXRhKCkubV9zaXplKTsKLSAgICBG
cmFjdCBrZXJuaW5nSW5oaWJpdEZhY3RvciA9IEZsb2F0VG9GcmFjdCgxKTsKLSAgICBzdGF0aWMg
Q0dBZmZpbmVUcmFuc2Zvcm0gdmVydGljYWxGbGlwID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlU2Nh
bGUoMSwgLTEpOwotCi0gICAgQnl0ZUNvdW50IHN0eWxlU2l6ZXNbNF0gPSB7IHNpemVvZihmb250
U2l6ZSksIHNpemVvZihmb250SUQpLCBzaXplb2YodmVydGljYWxGbGlwKSwgc2l6ZW9mKGtlcm5p
bmdJbmhpYml0RmFjdG9yKSB9OwotICAgIEFUU1VBdHRyaWJ1dGVUYWcgc3R5bGVUYWdzWzRdID0g
eyBrQVRTVVNpemVUYWcsIGtBVFNVRm9udFRhZywga0FUU1VGb250TWF0cml4VGFnLCBrQVRTVUtl
cm5pbmdJbmhpYml0RmFjdG9yVGFnIH07Ci0gICAgQVRTVUF0dHJpYnV0ZVZhbHVlUHRyIHN0eWxl
VmFsdWVzWzRdID0geyAmZm9udFNpemUsICZmb250SUQsICZ2ZXJ0aWNhbEZsaXAsICZrZXJuaW5n
SW5oaWJpdEZhY3RvciB9OwotCi0gICAgYm9vbCBhbGxvd0tlcm5pbmcgPSB0eXBlc2V0dGluZ0Zl
YXR1cmVzICYgS2VybmluZzsKLSAgICBzdGF0dXMgPSBBVFNVU2V0QXR0cmlidXRlcyhhdHN1U3R5
bGUsIGFsbG93S2VybmluZyA/IDMgOiA0LCBzdHlsZVRhZ3MsIHN0eWxlU2l6ZXMsIHN0eWxlVmFs
dWVzKTsKLSAgICBpZiAoc3RhdHVzICE9IG5vRXJyKQotICAgICAgICBMT0dfRVJST1IoIkFUU1VT
ZXRBdHRyaWJ1dGVzIGZhaWxlZCAoJWQpIiwgc3RhdGljX2Nhc3Q8aW50PihzdGF0dXMpKTsKLQot
ICAgIGZvbnREYXRhLT5tX0FUU1VNaXJyb3JzID0gZm9udEhhc01pcnJvcmluZ0luZm8oZm9udElE
KTsKLQotICAgIGRpc2FibGVMaWdhdHVyZXMoZm9udERhdGEsIGF0c3VTdHlsZSwgdHlwZXNldHRp
bmdGZWF0dXJlcyk7Ci0gICAgcmV0dXJuIGF0c3VTdHlsZTsKLX0KLQotdm9pZCBDb21wbGV4VGV4
dENvbnRyb2xsZXI6OmNvbGxlY3RDb21wbGV4VGV4dFJ1bnNGb3JDaGFyYWN0ZXJzQVRTVUkoY29u
c3QgVUNoYXIqIGNwLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHN0cmluZ0xvY2F0aW9uLCBj
b25zdCBTaW1wbGVGb250RGF0YSogZm9udERhdGEpCi17Ci0gICAgQVNTRVJUX0FSRyhmb250RGF0
YSwgZm9udERhdGEpOwotCi0gICAgaWYgKGZvbnREYXRhID09IHN5c3RlbUZhbGxiYWNrRm9udERh
dGEoKSkKLSAgICAgICAgZm9udERhdGEgPSBtX2ZvbnQucHJpbWFyeUZvbnQoKTsKLQotICAgIGlm
IChtX2ZhbGxiYWNrRm9udHMgJiYgZm9udERhdGEgIT0gbV9mb250LnByaW1hcnlGb250KCkpCi0g
ICAgICAgIG1fZmFsbGJhY2tGb250cy0+YWRkKGZvbnREYXRhKTsKLQotICAgIEFUU1VTdHlsZSBh
dHN1U3R5bGUgPSBpbml0aWFsaXplQVRTVVN0eWxlKGZvbnREYXRhLCBtX2ZvbnQudHlwZXNldHRp
bmdGZWF0dXJlcygpKTsKLQotICAgIE9TU3RhdHVzIHN0YXR1czsKLSAgICBBVFNVVGV4dExheW91
dCBhdHN1VGV4dExheW91dDsKLSAgICBVbmlDaGFyQ291bnQgcnVuTGVuZ3RoID0gbGVuZ3RoOwot
Ci0gICAgc3RhdHVzID0gQVRTVUNyZWF0ZVRleHRMYXlvdXRXaXRoVGV4dFB0cihjcCwgMCwgbGVu
Z3RoLCBsZW5ndGgsIDEsICZydW5MZW5ndGgsICZhdHN1U3R5bGUsICZhdHN1VGV4dExheW91dCk7
Ci0gICAgaWYgKHN0YXR1cyAhPSBub0VycikgewotICAgICAgICBMT0dfRVJST1IoIkFUU1VDcmVh
dGVUZXh0TGF5b3V0V2l0aFRleHRQdHIgZmFpbGVkIHdpdGggZXJyb3IgJWQiLCBzdGF0aWNfY2Fz
dDxpbnQ+KHN0YXR1cykpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fY29tcGxleFRl
eHRSdW5zLmFwcGVuZChDb21wbGV4VGV4dFJ1bjo6Y3JlYXRlKGF0c3VUZXh0TGF5b3V0LCBmb250
RGF0YSwgY3AsIHN0cmluZ0xvY2F0aW9uLCBsZW5ndGgsIG1fcnVuLmx0cigpLCBtX3J1bi5kaXJl
Y3Rpb25hbE92ZXJyaWRlKCkpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gVVNFKEFUU1VJKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3Jl
VGV4dC5tbQkocmV2aXNpb24gMTIzMTY4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yNCw4ICsyNCw2IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2lmIFVTRShDT1JF
X1RFWFQpCi0KICNpbmNsdWRlICJDb21wbGV4VGV4dENvbnRyb2xsZXIuaCIKIAogI2luY2x1ZGUg
IkZvbnQuaCIKQEAgLTEzNSw3ICsxMzMsMTMgQEAgQ29tcGxleFRleHRDb250cm9sbGVyOjpDb21w
bGV4VGV4dFJ1bjo6QwogCiAvLyBNaXNzaW5nIGdseXBocyBydW4gY29uc3RydWN0b3IuIENvcmUg
VGV4dCB3aWxsIG5vdCBnZW5lcmF0ZSBhIHJ1biBvZiBtaXNzaW5nIGdseXBocywgaW5zdGVhZCBm
YWxsaW5nIGJhY2sgb24KIC8vIGdseXBocyBmcm9tIExhc3RSZXNvcnQuIFdlIHdhbnQgdG8gdXNl
IHRoZSBwcmltYXJ5IGZvbnQncyBtaXNzaW5nIGdseXBoIGluIG9yZGVyIHRvIG1hdGNoIHRoZSBm
YXN0IHRleHQgY29kZSBwYXRoLgotdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhU
ZXh0UnVuOjpjcmVhdGVUZXh0UnVuRnJvbUZvbnREYXRhQ29yZVRleHQoYm9vbCBsdHIpCitDb21w
bGV4VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0UnVuOjpDb21wbGV4VGV4dFJ1bihjb25zdCBT
aW1wbGVGb250RGF0YSogZm9udERhdGEsIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25l
ZCBzdHJpbmdMb2NhdGlvbiwgc2l6ZV90IHN0cmluZ0xlbmd0aCwgYm9vbCBsdHIpCisgICAgOiBt
X2ZvbnREYXRhKGZvbnREYXRhKQorICAgICwgbV9jaGFyYWN0ZXJzKGNoYXJhY3RlcnMpCisgICAg
LCBtX3N0cmluZ0xvY2F0aW9uKHN0cmluZ0xvY2F0aW9uKQorICAgICwgbV9zdHJpbmdMZW5ndGgo
c3RyaW5nTGVuZ3RoKQorICAgICwgbV9pbmRleEVuZChzdHJpbmdMZW5ndGgpCisgICAgLCBtX2lz
TW9ub3RvbmljKHRydWUpCiB7CiAgICAgbV9jb3JlVGV4dEluZGljZXNWZWN0b3IucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShtX3N0cmluZ0xlbmd0aCk7CiAgICAgdW5zaWduZWQgciA9IDA7CkBAIC0x
ODAsOSArMTg0LDEzIEBAIHN0YXRpYyBjb25zdCBVbmlDaGFyKiBwcm92aWRlU3RyaW5nQW5kQXQK
ICAgICByZXR1cm4gaW5mby0+Y3AgKyBzdHJpbmdJbmRleDsKIH0KIAotdm9pZCBDb21wbGV4VGV4
dENvbnRyb2xsZXI6OmNvbGxlY3RDb21wbGV4VGV4dFJ1bnNGb3JDaGFyYWN0ZXJzQ29yZVRleHQo
Y29uc3QgVUNoYXIqIGNwLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHN0cmluZ0xvY2F0aW9u
LCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udERhdGEpCit2b2lkIENvbXBsZXhUZXh0Q29udHJv
bGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNoYXJhY3RlcnMoY29uc3QgVUNoYXIqIGNw
LCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHN0cmluZ0xvY2F0aW9uLCBjb25zdCBTaW1wbGVG
b250RGF0YSogZm9udERhdGEpCiB7Ci0gICAgQVNTRVJUX0FSRyhmb250RGF0YSwgZm9udERhdGEp
OworICAgIGlmICghZm9udERhdGEpIHsKKyAgICAgICAgLy8gQ3JlYXRlIGEgcnVuIG9mIG1pc3Np
bmcgZ2x5cGhzIGZyb20gdGhlIHByaW1hcnkgZm9udC4KKyAgICAgICAgbV9jb21wbGV4VGV4dFJ1
bnMuYXBwZW5kKENvbXBsZXhUZXh0UnVuOjpjcmVhdGUobV9mb250LnByaW1hcnlGb250KCksIGNw
LCBzdHJpbmdMb2NhdGlvbiwgbGVuZ3RoLCBtX3J1bi5sdHIoKSkpOworICAgICAgICByZXR1cm47
CisgICAgfQogCiAgICAgYm9vbCBpc1N5c3RlbUZhbGxiYWNrID0gZmFsc2U7CiAKQEAgLTI5NSw1
ICszMDMsMyBAQCB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsCiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFVTRShDT1JFX1RFWFQpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFBVFNV
SS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
U2ltcGxlRm9udERhdGFBVFNVSS5tbQkocmV2aXNpb24gMTIzMTY4KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQVRTVUkubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTEsNzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiBB
cHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAo
QykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhl
IG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0
ICJTaW1wbGVGb250RGF0YS5oIgotCi0jaWYgVVNFKEFUU1VJKQotCi0jaW1wb3J0ICJGb250Lmgi
Ci0jaW1wb3J0ICJGb250Q2FjaGUuaCIKLSNpbXBvcnQgIkZvbnREZXNjcmlwdGlvbi5oIgotI2lt
cG9ydCA8QXBwbGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+Ci0jaW1wb3J0
IDxBcHBLaXQvQXBwS2l0Lmg+Ci0jaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgotCi11c2luZyBu
YW1lc3BhY2Ugc3RkOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgU2ltcGxlRm9udERh
dGE6OmNoZWNrU2hhcGVzQXJhYmljKCkgY29uc3QKLXsKLSAgICBBU1NFUlQoIW1fY2hlY2tlZFNo
YXBlc0FyYWJpYyk7Ci0KLSAgICBtX2NoZWNrZWRTaGFwZXNBcmFiaWMgPSB0cnVlOwotCi0gICAg
QVRTVUZvbnRJRCBmb250SUQgPSBtX3BsYXRmb3JtRGF0YS5jdEZvbnQoKSA/IENURm9udEdldFBs
YXRmb3JtRm9udChtX3BsYXRmb3JtRGF0YS5jdEZvbnQoKSwgMCkgOiAwOwotICAgIGlmICghZm9u
dElEKSB7Ci0gICAgICAgIExPR19FUlJPUigidW5hYmxlIHRvIGdldCBBVFNVRm9udElEIGZvciAl
QCIsIG1fcGxhdGZvcm1EYXRhLmZvbnQoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmx5IG9uIGZvbnRzIHRoYXQgY29udGFpbiBB
cmFiaWMgZ2x5cGhzLiBPdXIKLSAgICAvLyBoZXVyaXN0aWMgaXMgdGhhdCBpZiBzdWNoIGEgZm9u
dCBoYXMgYSBnbHlwaCBtZXRhbW9ycGhvc2lzIHRhYmxlLCB0aGVuCi0gICAgLy8gaXQgaW5jbHVk
ZXMgc2hhcGluZyBpbmZvcm1hdGlvbiBmb3IgQXJhYmljLgotICAgIEZvdXJDaGFyQ29kZSB0YWJs
ZXNbXSA9IHsgJ21vcngnLCAnbW9ydCcgfTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFdU
Rl9BUlJBWV9MRU5HVEgodGFibGVzKTsgKytpKSB7Ci0gICAgICAgIEJ5dGVDb3VudCB0YWJsZVNp
emU7Ci0gICAgICAgIE9TU3RhdHVzIHN0YXR1cyA9IEFUU0ZvbnRHZXRUYWJsZShmb250SUQsIHRh
Ymxlc1tpXSwgMCwgMCwgMCwgJnRhYmxlU2l6ZSk7Ci0gICAgICAgIGlmIChzdGF0dXMgPT0gbm9F
cnIpIHsKLSAgICAgICAgICAgIG1fc2hhcGVzQXJhYmljID0gdHJ1ZTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChzdGF0dXMgIT0ga0FUU0ludmFsaWRGb250
VGFibGVBY2Nlc3MpCi0gICAgICAgICAgICBMT0dfRVJST1IoIkFUU0ZvbnRHZXRUYWJsZSBmYWls
ZWQgKCVkKSIsIHN0YXR1cyk7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBs
ZUZvbnREYXRhTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9TaW1wbGVGb250RGF0YU1hYy5tbQkocmV2aXNpb24gMTIzMTY4KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDIsMTIgKzE0Miw2IEBAIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBT
aW1wbGVGb250RGF0YTo6Z2UKIAogdm9pZCBTaW1wbGVGb250RGF0YTo6cGxhdGZvcm1Jbml0KCkK
IHsKLSNpZiBVU0UoQVRTVUkpCi0gICAgbV9BVFNVTWlycm9ycyA9IGZhbHNlOwotICAgIG1fY2hl
Y2tlZFNoYXBlc0FyYWJpYyA9IGZhbHNlOwotICAgIG1fc2hhcGVzQXJhYmljID0gZmFsc2U7Ci0j
ZW5kaWYKLQogICAgIG1fc3ludGhldGljQm9sZE9mZnNldCA9IG1fcGxhdGZvcm1EYXRhLm1fc3lu
dGhldGljQm9sZCA/IDEuMGYgOiAwLmY7CiAKICAgICBib29sIGZhaWxlZFNldHVwID0gZmFsc2U7
CkBAIC0zMTksMTIgKzMxMyw2IEBAIHZvaWQgU2ltcGxlRm9udERhdGE6OnBsYXRmb3JtRGVzdHJv
eSgpCiAgICAgICAgIGlmIChtX2Rlcml2ZWRGb250RGF0YS0+ZW1waGFzaXNNYXJrKQogICAgICAg
ICAgICAgZm9udENhY2hlKCktPnJlbGVhc2VGb250RGF0YShtX2Rlcml2ZWRGb250RGF0YS0+ZW1w
aGFzaXNNYXJrLmxlYWtQdHIoKSk7CiAgICAgfQotCi0jaWYgVVNFKEFUU1VJKQotICAgIEhhc2hN
YXA8dW5zaWduZWQsIEFUU1VTdHlsZT46Oml0ZXJhdG9yIGVuZCA9IG1fQVRTVVN0eWxlTWFwLmVu
ZCgpOwotICAgIGZvciAoSGFzaE1hcDx1bnNpZ25lZCwgQVRTVVN0eWxlPjo6aXRlcmF0b3IgaXQg
PSBtX0FUU1VTdHlsZU1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIEFUU1VE
aXNwb3NlU3R5bGUoaXQtPnNlY29uZCk7Ci0jZW5kaWYKIH0KIAogUGFzc093blB0cjxTaW1wbGVG
b250RGF0YT4gU2ltcGxlRm9udERhdGE6OmNyZWF0ZVNjYWxlZEZvbnREYXRhKGNvbnN0IEZvbnRE
ZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBmbG9hdCBzY2FsZUZhY3RvcikgY29uc3QKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1NoYXBlQXJhYmljLmMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvU2hhcGVBcmFiaWMuYwko
cmV2aXNpb24gMTIzMTY4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvU2hh
cGVBcmFiaWMuYwkod29ya2luZyBjb3B5KQpAQCAtMSw1NTYgKzAsMCBAQAotLyoKLSoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKgotKgotKiAgIENvcHlyaWdodCAoQykgMjAwMC0yMDA0LCBJbnRlcm5hdGlv
bmFsIEJ1c2luZXNzIE1hY2hpbmVzCi0qICAgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KLSogICBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotKgotKiAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUg
b2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YgdGhpcwotKiAgIHNv
ZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUi
KSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUKLSogICB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNs
dWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnks
Ci0qICAgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0
aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucwotKiAgIHRvIHdob20gdGhlIFNvZnR3
YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUgY29weXJp
Z2h0IG5vdGljZShzKQotKiAgIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBh
bGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSBhbmQgdGhhdCBib3RoIHRoZSBhYm92ZQotKiAgIGNv
cHlyaWdodCBub3RpY2UocykgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyIGluIHN1
cHBvcnRpbmcgZG9jdW1lbnRhdGlvbi4KLSoKLSogICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQg
IkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUiBJTVBMSUVE
LAotKiAgIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSogICBQVVJQT1NFIEFORCBO
T05JTkZSSU5HRU1FTlQgT0YgVEhJUkQgUEFSVFkgUklHSFRTLiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUIEhPTERFUgotKiAgIE9SIEhPTERFUlMgSU5DTFVERUQgSU4gVEhJUyBOT1RJ
Q0UgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIE9SIEFOWSBTUEVDSUFMIElORElSRUNUIE9SCi0q
ICAgQ09OU0VRVUVOVElBTCBEQU1BR0VTLCBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VM
VElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SCi0qICAgUFJPRklUUywgV0hFVEhFUiBJTiBB
TiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9O
LCBBUklTSU5HCi0qICAgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBF
UkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCi0qCi0qICAgRXhjZXB0IGFzIGNvbnRhaW5lZCBp
biB0aGlzIG5vdGljZSwgdGhlIG5hbWUgb2YgYSBjb3B5cmlnaHQgaG9sZGVyIHNoYWxsIG5vdCBi
ZSB1c2VkIGluCi0qICAgYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlIHNh
bGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlCi0qICAgd2l0aG91dCBw
cmlvciB3cml0dGVuIGF1dGhvcml6YXRpb24gb2YgdGhlIGNvcHlyaWdodCBob2xkZXIuCi0qCi0q
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioKLSoKLSogICBBcmFiaWMgbGV0dGVyIHNoYXBpbmcgaW1wbGVt
ZW50ZWQgYnkgQXltYW4gUm9zaGR5Ci0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBV
U0UoQVRTVUkpCi0KLSNpbmNsdWRlICJTaGFwZUFyYWJpYy5oIgotCi0jaW5jbHVkZSA8c3RkYm9v
bC5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPHVuaWNvZGUvdXR5cGVzLmg+Ci0j
aW5jbHVkZSA8dW5pY29kZS91Y2hhci5oPgotI2luY2x1ZGUgPHVuaWNvZGUvdXN0cmluZy5oPgot
I2luY2x1ZGUgPHVuaWNvZGUvdXNoYXBlLmg+Ci0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4K
LQotLyoKLSAqICMjIyBUT0RPIGluIGdlbmVyYWwgZm9yIGxldHRlciBzaGFwaW5nOgotICogLSB0
aGUgbGV0dGVyIHNoYXBpbmcgY29kZSBpcyBVVEYtMTYtdW5hd2FyZTsgbmVlZHMgdXBkYXRlCi0g
KiAgICsgZXNwZWNpYWxseSBpbnZlcnRCdWZmZXIoKT8hCi0gKiAtIG5lZWRzIHRvIGhhbmRsZSB0
aGUgIkFyYWJpYyBUYWlsIiB0aGF0IGlzIHVzZWQgaW4gc29tZSBsZWdhY3kgY29kZXBhZ2VzCi0g
KiAgIGFzIGEgZ2x5cGggZnJhZ21lbnQgb2Ygd2lkZS1nbHlwaCBsZXR0ZXJzCi0gKiAgICsgSUJN
IFVuaWNvZGUgY29udmVyc2lvbiB0YWJsZXMgbWFwIGl0IHRvIFUrMjAwQiAoWldTUCkKLSAqICAg
KyBJQk0gRWd5cHQgaGFzIHByb3Bvc2VkIHRvIGVuY29kZSB0aGUgdGFpbCBpbiBVbmljb2RlIGFt
b25nIEFyYWJpYyBQcmVzZW50YXRpb24gRm9ybXMKLSAqLwotCi0vKiBkZWZpbml0aW9ucyBmb3Ig
QXJhYmljIGxldHRlciBzaGFwaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSAqLwotCi0jZGVmaW5lIElSUkVMRVZBTlQgNAotI2RlZmluZSBMQU1UWVBFICAgIDE2Ci0jZGVm
aW5lIEFMRUZUWVBFICAgMzIKLSNkZWZpbmUgTElOS1IgICAgICAxCi0jZGVmaW5lIExJTktMICAg
ICAgMgotCi1zdGF0aWMgY29uc3QgVUNoYXIgSXJyZWxldmFudFBvc1tdID0gewotICAgIDB4MCwg
MHgyLCAweDQsIDB4NiwKLSAgICAweDgsIDB4QSwgMHhDLCAweEUsCi19OwotCi1zdGF0aWMgY29u
c3QgVUNoYXIgYXJhTGlua1sxNzhdPQotewotICAxICAgICAgICAgICArIDMyICsgMjU2ICogMHgx
MSwvKjB4MDYyMiovCi0gIDEgICAgICAgICAgICsgMzIgKyAyNTYgKiAweDEzLC8qMHgwNjIzKi8K
LSAgMSAgICAgICAgICAgICAgICArIDI1NiAqIDB4MTUsLyoweDA2MjQqLwotICAxICAgICAgICAg
ICArIDMyICsgMjU2ICogMHgxNywvKjB4MDYyNSovCi0gIDEgKyAyICAgICAgICAgICAgKyAyNTYg
KiAweDE5LC8qMHgwNjI2Ki8KLSAgMSAgICAgICAgICAgKyAzMiArIDI1NiAqIDB4MUQsLyoweDA2
MjcqLwotICAxICsgMiAgICAgICAgICAgICsgMjU2ICogMHgxRiwvKjB4MDYyOCovCi0gIDEgICAg
ICAgICAgICAgICAgKyAyNTYgKiAweDIzLC8qMHgwNjI5Ki8KLSAgMSArIDIgICAgICAgICAgICAr
IDI1NiAqIDB4MjUsLyoweDA2MkEqLwotICAxICsgMiAgICAgICAgICAgICsgMjU2ICogMHgyOSwv
KjB4MDYyQiovCi0gIDEgKyAyICAgICAgICAgICAgKyAyNTYgKiAweDJELC8qMHgwNjJDKi8KLSAg
MSArIDIgICAgICAgICAgICArIDI1NiAqIDB4MzEsLyoweDA2MkQqLwotICAxICsgMiAgICAgICAg
ICAgICsgMjU2ICogMHgzNSwvKjB4MDYyRSovCi0gIDEgICAgICAgICAgICAgICAgKyAyNTYgKiAw
eDM5LC8qMHgwNjJGKi8KLSAgMSAgICAgICAgICAgICAgICArIDI1NiAqIDB4M0IsLyoweDA2MzAq
LwotICAxICAgICAgICAgICAgICAgICsgMjU2ICogMHgzRCwvKjB4MDYzMSovCi0gIDEgICAgICAg
ICAgICAgICAgKyAyNTYgKiAweDNGLC8qMHgwNjMyKi8KLSAgMSArIDIgICAgICAgICAgICArIDI1
NiAqIDB4NDEsLyoweDA2MzMqLwotICAxICsgMiAgICAgICAgICAgICsgMjU2ICogMHg0NSwvKjB4
MDYzNCovCi0gIDEgKyAyICAgICAgICAgICAgKyAyNTYgKiAweDQ5LC8qMHgwNjM1Ki8KLSAgMSAr
IDIgICAgICAgICAgICArIDI1NiAqIDB4NEQsLyoweDA2MzYqLwotICAxICsgMiAgICAgICAgICAg
ICsgMjU2ICogMHg1MSwvKjB4MDYzNyovCi0gIDEgKyAyICAgICAgICAgICAgKyAyNTYgKiAweDU1
LC8qMHgwNjM4Ki8KLSAgMSArIDIgICAgICAgICAgICArIDI1NiAqIDB4NTksLyoweDA2MzkqLwot
ICAxICsgMiAgICAgICAgICAgICsgMjU2ICogMHg1RCwvKjB4MDYzQSovCi0gIDAsIDAsIDAsIDAs
IDAsICAgICAgICAgICAgICAgIC8qMHgwNjNCLTB4MDYzRiovCi0gIDEgKyAyLCAgICAgICAgICAg
ICAgICAgICAgICAgIC8qMHgwNjQwKi8KLSAgMSArIDIgICAgICAgICAgICArIDI1NiAqIDB4NjEs
LyoweDA2NDEqLwotICAxICsgMiAgICAgICAgICAgICsgMjU2ICogMHg2NSwvKjB4MDY0MiovCi0g
IDEgKyAyICAgICAgICAgICAgKyAyNTYgKiAweDY5LC8qMHgwNjQzKi8KLSAgMSArIDIgICAgICAg
KyAxNiArIDI1NiAqIDB4NkQsLyoweDA2NDQqLwotICAxICsgMiAgICAgICAgICAgICsgMjU2ICog
MHg3MSwvKjB4MDY0NSovCi0gIDEgKyAyICAgICAgICAgICAgKyAyNTYgKiAweDc1LC8qMHgwNjQ2
Ki8KLSAgMSArIDIgICAgICAgICAgICArIDI1NiAqIDB4NzksLyoweDA2NDcqLwotICAxICAgICAg
ICAgICAgICAgICsgMjU2ICogMHg3RCwvKjB4MDY0OCovCi0gIDEgICAgICAgICAgICAgICAgKyAy
NTYgKiAweDdGLC8qMHgwNjQ5Ki8KLSAgMSArIDIgICAgICAgICAgICArIDI1NiAqIDB4ODEsLyow
eDA2NEEqLwotICA0LCA0LCA0LCA0LCAgICAgICAgICAgICAgICAgICAvKjB4MDY0Qi0weDA2NEUq
LwotICA0LCA0LCA0LCA0LCAgICAgICAgICAgICAgICAgICAvKjB4MDY0Ri0weDA2NTIqLwotICA0
LCA0LCA0LCAwLCAwLCAgICAgICAgICAgICAgICAvKjB4MDY1My0weDA2NTcqLwotICAwLCAwLCAw
LCAwLCAgICAgICAgICAgICAgICAgICAvKjB4MDY1OC0weDA2NUIqLwotICAxICAgICAgICAgICAg
ICAgICsgMjU2ICogMHg4NSwvKjB4MDY1QyovCi0gIDEgICAgICAgICAgICAgICAgKyAyNTYgKiAw
eDg3LC8qMHgwNjVEKi8KLSAgMSAgICAgICAgICAgICAgICArIDI1NiAqIDB4ODksLyoweDA2NUUq
LwotICAxICAgICAgICAgICAgICAgICsgMjU2ICogMHg4QiwvKjB4MDY1RiovCi0gIDAsIDAsIDAs
IDAsIDAsICAgICAgICAgICAgICAgIC8qMHgwNjYwLTB4MDY2NCovCi0gIDAsIDAsIDAsIDAsIDAs
ICAgICAgICAgICAgICAgIC8qMHgwNjY1LTB4MDY2OSovCi0gIDAsIDAsIDAsIDAsIDAsIDAsICAg
ICAgICAgICAgIC8qMHgwNjZBLTB4MDY2RiovCi0gIDQsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qMHgwNjcwKi8KLSAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoweDA2NzEq
LwotICAxICAgICAgICAgICArIDMyLCAgICAgICAgICAgICAvKjB4MDY3MiovCi0gIDEgICAgICAg
ICAgICsgMzIsICAgICAgICAgICAgIC8qMHgwNjczKi8KLSAgMCwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyoweDA2NzQqLwotICAxICAgICAgICAgICArIDMyLCAgICAgICAgICAgICAvKjB4
MDY3NSovCi0gIDEsIDEsICAgICAgICAgICAgICAgICAgICAgICAgIC8qMHgwNjc2LTB4MDY3Nyov
Ci0gIDErMiwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMHgwNjc4Ki8KLSAgMSsyICAgICAg
ICAgICAgICArIDI1NiAqIDB4MTYsLyoweDA2NzkqLwotICAxKzIgICAgICAgICAgICAgICsgMjU2
ICogMHgwRSwvKjB4MDY3QSovCi0gIDErMiAgICAgICAgICAgICAgKyAyNTYgKiAweDAyLC8qMHgw
NjdCKi8KLSAgMSsyLCAxKzIsICAgICAgICAgICAgICAgICAgICAgLyoweDA2N0MtMHgwNjdEKi8K
LSAgMSsyICAgICAgICAgICAgICArIDI1NiAqIDB4MDYsLyoweDA2N0UqLwotICAxKzIgICAgICAg
ICAgICAgICsgMjU2ICogMHgxMiwvKjB4MDY3RiovCi0gIDErMiAgICAgICAgICAgICAgKyAyNTYg
KiAweDBBLC8qMHgwNjgwKi8KLSAgMSsyLCAxKzIsICAgICAgICAgICAgICAgICAgICAgLyoweDA2
ODEtMHgwNjgyKi8KLSAgMSsyICAgICAgICAgICAgICArIDI1NiAqIDB4MjYsLyoweDA2ODMqLwot
ICAxKzIgICAgICAgICAgICAgICsgMjU2ICogMHgyMiwvKjB4MDY4NCovCi0gIDErMiwgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qMHgwNjg1Ki8KLSAgMSsyICAgICAgICAgICAgICArIDI1NiAq
IDB4MkEsLyoweDA2ODYqLwotICAxKzIgICAgICAgICAgICAgICsgMjU2ICogMHgyRSwvKjB4MDY4
NyovCi0gIDEgICAgICAgICAgICAgICAgKyAyNTYgKiAweDM4LC8qMHgwNjg4Ki8KLSAgMSwgMSwg
MSwgICAgICAgICAgICAgICAgICAgICAgLyoweDA2ODktMHgwNjhCKi8KLSAgMSAgICAgICAgICAg
ICAgICArIDI1NiAqIDB4MzQsLyoweDA2OEMqLwotICAxICAgICAgICAgICAgICAgICsgMjU2ICog
MHgzMiwvKjB4MDY4RCovCi0gIDEgICAgICAgICAgICAgICAgKyAyNTYgKiAweDM2LC8qMHgwNjhF
Ki8KLSAgMSwgMSwgICAgICAgICAgICAgICAgICAgICAgICAgLyoweDA2OEYtMHgwNjkwKi8KLSAg
MSAgICAgICAgICAgICAgICArIDI1NiAqIDB4M0MsLyoweDA2OTEqLwotICAxLCAxLCAxLCAxLCAx
LCAxLCAgICAgICAgICAgICAvKjB4MDY5Mi0weDA2OTcqLwotICAxICAgICAgICAgICAgICAgICsg
MjU2ICogMHgzQSwvKjB4MDY5OCovCi0gIDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
MHgwNjk5Ki8KLSAgMSsyLCAxKzIsIDErMiwgMSsyLCAxKzIsIDErMiwgLyoweDA2OUEtMHgwNjlG
Ki8KLSAgMSsyLCAxKzIsIDErMiwgMSsyLCAgICAgICAgICAgLyoweDA2QTAtMHgwNkEzKi8KLSAg
MSsyICAgICAgICAgICAgICArIDI1NiAqIDB4MkUsLyoweDA2QTQqLwotICAxKzIsICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKjB4MDZBNSovCi0gIDErMiAgICAgICAgICAgICAgKyAyNTYgKiAw
eDFFLC8qMHgwNkE2Ki8KLSAgMSsyLCAxKzIsICAgICAgICAgICAgICAgICAgICAgLyoweDA2QTct
MHgwNkE4Ki8KLSAgMSsyICAgICAgICAgICAgICArIDI1NiAqIDB4M0UsLyoweDA2QTkqLwotICAx
KzIsIDErMiwgMSsyLCAgICAgICAgICAgICAgICAvKjB4MDZBQS0weDA2QUMqLwotICAxKzIgICAg
ICAgICAgICAgICsgMjU2ICogMHg4MywvKjB4MDZBRCovCi0gIDErMiwgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qMHgwNkFFKi8KLSAgMSsyICAgICAgICAgICAgICArIDI1NiAqIDB4NDIsLyow
eDA2QUYqLwotICAxKzIsICAgICAgICAgICAgICAgICAgICAgICAgICAvKjB4MDZCMCovCi0gIDEr
MiAgICAgICAgICAgICAgKyAyNTYgKiAweDRBLC8qMHgwNkIxKi8KLSAgMSsyLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyoweDA2QjIqLwotICAxKzIgICAgICAgICAgICAgICsgMjU2ICogMHg0
NiwvKjB4MDZCMyovCi0gIDErMiwgMSsyLCAxKzIsIDErMiwgMSsyLCAxKzIsIC8qMHgwNkI0LTB4
MDZCOSovCi0gIDErMiwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMHgwNkJBKi8gICAgICAg
ICAgLy8gRklYTUU6IFNlZW1zIHRvIGhhdmUgYSBmaW5hbCBmb3JtCi0gIDErMiAgICAgICAgICAg
ICAgKyAyNTYgKiAweDUwLC8qMHgwNkJCKi8KLSAgMSsyLCAxKzIsICAgICAgICAgICAgICAgICAg
ICAgLyoweDA2QkMtMHgwNkJEKi8KLSAgMSsyICAgICAgICAgICAgICArIDI1NiAqIDB4NUEsLyow
eDA2QkUqLwotICAxKzIsICAgICAgICAgICAgICAgICAgICAgICAgICAvKjB4MDZCRiovCi0gIDEs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMHgwNkMwKi8KLSAgMSsyICAgICAgICAgICAg
ICArIDI1NiAqIDB4NTYsLyoweDA2QzEqLwotICAxKzIsICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKjB4MDZDMiovCi0gIDEsIDEsICAgICAgICAgICAgICAgICAgICAgICAgIC8qMHgwNkMzLTB4
MDZDNCovCi0gIDEgICAgICAgICAgICAgICAgKyAyNTYgKiAweDkwLC8qMHgwNkM1Ki8KLSAgMSAg
ICAgICAgICAgICAgICArIDI1NiAqIDB4ODksLyoweDA2QzYqLwotICAxICAgICAgICAgICAgICAg
ICsgMjU2ICogMHg4NywvKjB4MDZDNyovCi0gIDEgICAgICAgICAgICAgICAgKyAyNTYgKiAweDhC
LC8qMHgwNkM4Ki8KLSAgMSAgICAgICAgICAgICAgICArIDI1NiAqIDB4OTIsLyoweDA2QzkqLwot
ICAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjB4MDZDQSovCi0gIDEgICAgICAgICAg
ICAgICAgKyAyNTYgKiAweDhFLC8qMHgwNkNCKi8KLSAgMSsyICAgICAgICAgICAgICArIDI1NiAq
IDB4QUMsLyoweDA2Q0MqLwotICAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjB4MDZD
RCovCi0gIDErMiwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMHgwNkNFKi8KLSAgMSwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyoweDA2Q0YqLwotICAxKzIgICAgICAgICAgICAgICsg
MjU2ICogMHg5NCwvKjB4MDZEMCovCi0gIDErMiwgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
MHgwNkQxKi8KLSAgMSAgICAgICAgICAgICAgICArIDI1NiAqIDB4NUUsLyoweDA2RDIqLwotICAx
ICAgICAgICAgICAgICAgICsgMjU2ICogMHg2MCAvKjB4MDZEMyovCi19OwotCi1zdGF0aWMgY29u
c3QgVUNoYXIgcHJlc0xpbmtbMTQxXT0KLXsKLSAgMSArIDIsICAgICAgICAgICAgICAgICAgICAg
ICAgLyoweEZFNzAqLwotICAxICsgMiwgICAgICAgICAgICAgICAgICAgICAgICAvKjB4RkU3MSov
Ci0gIDEgKyAyLCAwLCAxKyAyLCAwLCAxKyAyLCAgICAgIC8qMHhGRTcyLTB4RkU3NiovCi0gIDEg
KyAyLCAgICAgICAgICAgICAgICAgICAgICAgIC8qMHhGRTc3Ki8KLSAgMSsgMiwgMSArIDIsIDEr
MiwgMSArIDIsICAgICAgLyoweEZFNzgtMHhGRTgxKi8KLSAgMSsgMiwgMSArIDIsIDErMiwgMSAr
IDIsICAgICAgLyoweEZFODItMHhGRTg1Ki8KLSAgMCwgMCArIDMyLCAxICsgMzIsIDAgKyAzMiwg
ICAgLyoweEZFODYtMHhGRTg5Ki8KLSAgMSArIDMyLCAwLCAxLCAgMCArIDMyLCAgICAgICAgLyow
eEZFOEEtMHhGRThEKi8KLSAgMSArIDMyLCAwLCAyLCAgMSArIDIsICAgICAgICAgLyoweEZFOEUt
MHhGRTkxKi8KLSAgMSwgMCArIDMyLCAxICsgMzIsIDAsICAgICAgICAgLyoweEZFOTItMHhGRTk1
Ki8KLSAgMiwgMSArIDIsIDEsIDAsICAgICAgICAgICAgICAgLyoweEZFOTYtMHhGRTk5Ki8KLSAg
MSwgMCwgMiwgMSArIDIsICAgICAgICAgICAgICAgLyoweEZFOUEtMHhGRTlEKi8KLSAgMSwgMCwg
MiwgMSArIDIsICAgICAgICAgICAgICAgLyoweEZFOUUtMHhGRUExKi8KLSAgMSwgMCwgMiwgMSAr
IDIsICAgICAgICAgICAgICAgLyoweEZFQTItMHhGRUE1Ki8KLSAgMSwgMCwgMiwgMSArIDIsICAg
ICAgICAgICAgICAgLyoweEZFQTYtMHhGRUE5Ki8KLSAgMSwgMCwgMiwgMSArIDIsICAgICAgICAg
ICAgICAgLyoweEZFQUEtMHhGRUFEKi8KLSAgMSwgMCwgMSwgMCwgICAgICAgICAgICAgICAgICAg
LyoweEZFQUUtMHhGRUIxKi8KLSAgMSwgMCwgMSwgMCwgICAgICAgICAgICAgICAgICAgLyoweEZF
QjItMHhGRUI1Ki8KLSAgMSwgMCwgMiwgMSsyLCAgICAgICAgICAgICAgICAgLyoweEZFQjYtMHhG
RUI5Ki8KLSAgMSwgMCwgMiwgMSsyLCAgICAgICAgICAgICAgICAgLyoweEZFQkEtMHhGRUJEKi8K
LSAgMSwgMCwgMiwgMSsyLCAgICAgICAgICAgICAgICAgLyoweEZFQkUtMHhGRUMxKi8KLSAgMSwg
MCwgMiwgMSsyLCAgICAgICAgICAgICAgICAgLyoweEZFQzItMHhGRUM1Ki8KLSAgMSwgMCwgMiwg
MSsyLCAgICAgICAgICAgICAgICAgLyoweEZFQzYtMHhGRUM5Ki8KLSAgMSwgMCwgMiwgMSsyLCAg
ICAgICAgICAgICAgICAgLyoweEZFQ0EtMHhGRUNEKi8KLSAgMSwgMCwgMiwgMSsyLCAgICAgICAg
ICAgICAgICAgLyoweEZFQ0UtMHhGRUQxKi8KLSAgMSwgMCwgMiwgMSsyLCAgICAgICAgICAgICAg
ICAgLyoweEZFRDItMHhGRUQ1Ki8KLSAgMSwgMCwgMiwgMSsyLCAgICAgICAgICAgICAgICAgLyow
eEZFRDYtMHhGRUQ5Ki8KLSAgMSwgMCwgMiwgMSsyLCAgICAgICAgICAgICAgICAgLyoweEZFREEt
MHhGRUREKi8KLSAgMSwgMCwgMiwgMSsyLCAgICAgICAgICAgICAgICAgLyoweEZFREUtMHhGRUUx
Ki8KLSAgMSwgMCArIDE2LCAyICsgMTYsIDEgKyAyICsxNiwgLyoweEZFRTItMHhGRUU1Ki8KLSAg
MSArIDE2LCAwLCAyLCAxKzIsICAgICAgICAgICAgLyoweEZFRTYtMHhGRUU5Ki8KLSAgMSwgMCwg
MiwgMSsyLCAgICAgICAgICAgICAgICAgLyoweEZFRUEtMHhGRUVEKi8KLSAgMSwgMCwgMiwgMSsy
LCAgICAgICAgICAgICAgICAgLyoweEZFRUUtMHhGRUYxKi8KLSAgMSwgMCwgMSwgMCwgICAgICAg
ICAgICAgICAgICAgLyoweEZFRjItMHhGRUY1Ki8KLSAgMSwgMCwgMiwgMSsyLCAgICAgICAgICAg
ICAgICAgLyoweEZFRjYtMHhGRUY5Ki8KLSAgMSwgMCwgMSwgMCwgICAgICAgICAgICAgICAgICAg
LyoweEZFRkEtMHhGRUZEKi8KLSAgMSwgMCwgMSwgMCwKLSAgMQotfTsKLQotc3RhdGljIGNvbnN0
IFVDaGFyIGNvbnZlcnRGRXRvMDZbXSA9Ci17Ci0vKioqKioqKioqKiowKioqKioqMSoqKioqKjIq
KioqKiozKioqKioqNCoqKioqKjUqKioqKio2KioqKioqNyoqKioqKjgqKioqKio5KioqKioqQSoq
KioqKkIqKioqKipDKioqKioqRCoqKioqKkUqKioqKipGKioqLwotLypGRTcqLyAgIDB4NjRCLCAw
eDY0QiwgMHg2NEMsIDB4NjRDLCAweDY0RCwgMHg2NEQsIDB4NjRFLCAweDY0RSwgMHg2NEYsIDB4
NjRGLCAweDY1MCwgMHg2NTAsIDB4NjUxLCAweDY1MSwgMHg2NTIsIDB4NjUyLAotLypGRTgqLyAg
IDB4NjIxLCAweDYyMiwgMHg2MjIsIDB4NjIzLCAweDYyMywgMHg2MjQsIDB4NjI0LCAweDYyNSwg
MHg2MjUsIDB4NjI2LCAweDYyNiwgMHg2MjYsIDB4NjI2LCAweDYyNywgMHg2MjcsIDB4NjI4LAot
LypGRTkqLyAgIDB4NjI4LCAweDYyOCwgMHg2MjgsIDB4NjI5LCAweDYyOSwgMHg2MkEsIDB4NjJB
LCAweDYyQSwgMHg2MkEsIDB4NjJCLCAweDYyQiwgMHg2MkIsIDB4NjJCLCAweDYyQywgMHg2MkMs
IDB4NjJDLAotLypGRUEqLyAgIDB4NjJDLCAweDYyRCwgMHg2MkQsIDB4NjJELCAweDYyRCwgMHg2
MkUsIDB4NjJFLCAweDYyRSwgMHg2MkUsIDB4NjJGLCAweDYyRiwgMHg2MzAsIDB4NjMwLCAweDYz
MSwgMHg2MzEsIDB4NjMyLAotLypGRUIqLyAgIDB4NjMyLCAweDYzMywgMHg2MzMsIDB4NjMzLCAw
eDYzMywgMHg2MzQsIDB4NjM0LCAweDYzNCwgMHg2MzQsIDB4NjM1LCAweDYzNSwgMHg2MzUsIDB4
NjM1LCAweDYzNiwgMHg2MzYsIDB4NjM2LAotLypGRUMqLyAgIDB4NjM2LCAweDYzNywgMHg2Mzcs
IDB4NjM3LCAweDYzNywgMHg2MzgsIDB4NjM4LCAweDYzOCwgMHg2MzgsIDB4NjM5LCAweDYzOSwg
MHg2MzksIDB4NjM5LCAweDYzQSwgMHg2M0EsIDB4NjNBLAotLypGRUQqLyAgIDB4NjNBLCAweDY0
MSwgMHg2NDEsIDB4NjQxLCAweDY0MSwgMHg2NDIsIDB4NjQyLCAweDY0MiwgMHg2NDIsIDB4NjQz
LCAweDY0MywgMHg2NDMsIDB4NjQzLCAweDY0NCwgMHg2NDQsIDB4NjQ0LAotLypGRUUqLyAgIDB4
NjQ0LCAweDY0NSwgMHg2NDUsIDB4NjQ1LCAweDY0NSwgMHg2NDYsIDB4NjQ2LCAweDY0NiwgMHg2
NDYsIDB4NjQ3LCAweDY0NywgMHg2NDcsIDB4NjQ3LCAweDY0OCwgMHg2NDgsIDB4NjQ5LAotLypG
RUYqLyAgIDB4NjQ5LCAweDY0QSwgMHg2NEEsIDB4NjRBLCAweDY0QSwgMHg2NUMsIDB4NjVDLCAw
eDY1RCwgMHg2NUQsIDB4NjVFLCAweDY1RSwgMHg2NUYsIDB4NjVGCi19OwotCi1zdGF0aWMgY29u
c3QgVUNoYXIgc2hhcGVUYWJsZVs0XVs0XVs0XT0KLXsKLSAgeyB7MCwwLDAsMH0sIHswLDAsMCww
fSwgezAsMSwwLDN9LCB7MCwxLDAsMX0gfSwKLSAgeyB7MCwwLDIsMn0sIHswLDAsMSwyfSwgezAs
MSwxLDJ9LCB7MCwxLDEsM30gfSwKLSAgeyB7MCwwLDAsMH0sIHswLDAsMCwwfSwgezAsMSwwLDN9
LCB7MCwxLDAsM30gfSwKLSAgeyB7MCwwLDEsMn0sIHswLDAsMSwyfSwgezAsMSwxLDJ9LCB7MCwx
LDEsM30gfQotfTsKLQotLyoKLSAqTmFtZSAgICAgOiBjaGFuZ2VMYW1BbGVmCi0gKkZ1bmN0aW9u
IDogQ29udmVydHMgdGhlIEFsZWYgY2hhcmFjdGVycyBpbnRvIGFuIGVxdWl2YWxlbnQKLSAqICAg
ICAgICAgICBMYW1BbGVmIGxvY2F0aW9uIGluIHRoZSAweDA2eHggUmFuZ2UsIHRoaXMgaXMgYW4K
LSAqICAgICAgICAgICBpbnRlcm1lZGlhdGUgc3RhZ2UgaW4gdGhlIG9wZXJhdGlvbiBvZiB0aGUg
cHJvZ3JhbQotICogICAgICAgICAgIGxhdGVyIGl0J2xsIGJlIGNvbnZlcnRlZCBpbnRvIHRoZSAw
eEZFeHggTGFtQWxlZnMKLSAqICAgICAgICAgICBpbiB0aGUgc2hhcGluZyBmdW5jdGlvbi4KLSAq
Lwotc3RhdGljIFVDaGFyCi1jaGFuZ2VMYW1BbGVmKFVDaGFyIGNoKSB7Ci0KLSAgICBzd2l0Y2go
Y2gpIHsKLSAgICBjYXNlIDB4MDYyMiA6Ci0gICAgICAgIHJldHVybigweDA2NUMpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIDB4MDYyMyA6Ci0gICAgICAgIHJldHVybigweDA2NUQpOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIDB4MDYyNSA6Ci0gICAgICAgIHJldHVybigweDA2NUUpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIDB4MDYyNyA6Ci0gICAgICAgIHJldHVybigweDA2NUYp
OwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0IDoKLSAgICAgICAgcmV0dXJuKDApOwotICAg
ICAgICBicmVhazsKLSAgICB9Ci19Ci0KLS8qCi0gKk5hbWUgICAgIDogc3BlY2lhbENoYXIKLSAq
RnVuY3Rpb24gOiBTcGVjaWFsIEFyYWJpYyBjaGFyYWN0ZXJzIG5lZWQgc3BlY2lhbCBoYW5kbGlu
ZyBpbiB0aGUgc2hhcGVVbmljb2RlCi0gKiAgICAgICAgICAgZnVuY3Rpb24sIHRoaXMgZnVuY3Rp
b24gcmV0dXJucyAxIG9yIDIgZm9yIHRoZXNlIHNwZWNpYWwgY2hhcmFjdGVycwotICovCi1zdGF0
aWMgaW50MzJfdAotc3BlY2lhbENoYXIoVUNoYXIgY2gpIHsKLQotICAgIGlmKCAoY2g+MHgwNjIx
ICYmIGNoPDB4MDYyNil8fChjaD09MHgwNjI3KXx8KGNoPjB4MDYyZSAmJiBjaDwweDA2MzMpfHwK
LSAgICAgICAgKGNoPjB4MDY0NyAmJiBjaDwweDA2NGEpfHwoY2g9PTB4MDYyOSkgKSB7Ci0gICAg
ICAgIHJldHVybiAoMSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICBpZiggY2g+PTB4MDY0QiAmJiBj
aDw9IDB4MDY1MiApCi0gICAgICAgIHJldHVybiAoMik7Ci0gICAgZWxzZQotICAgIGlmKCAoY2g+
PTB4MDY1MyAmJiBjaDw9IDB4MDY1NSkgfHwgY2ggPT0gMHgwNjcwIHx8Ci0gICAgICAgIChjaD49
MHhGRTcwICYmIGNoPD0gMHhGRTdGKSApCi0gICAgICAgIHJldHVybiAoMyk7Ci0gICAgZWxzZQot
ICAgICAgICByZXR1cm4gKDApOwotfQotCi0vKgotICpOYW1lICAgICA6IGdldExpbmsKLSAqRnVu
Y3Rpb24gOiBSZXNvbHZlcyB0aGUgbGluayBiZXR3ZWVuIHRoZSBjaGFyYWN0ZXJzIGFzCi0gKiAg
ICAgICAgICAgQXJhYmljIGNoYXJhY3RlcnMgaGF2ZSBmb3VyIGZvcm1zIDoKLSAqICAgICAgICAg
ICBJc29sYXRlZCwgSW5pdGlhbCwgTWlkZGxlIGFuZCBGaW5hbCBGb3JtCi0gKi8KLXN0YXRpYyBV
Q2hhcgotZ2V0TGluayhVQ2hhciBjaCkgewotCi0gICAgaWYoY2ggPj0gMHgwNjIyICYmIGNoIDw9
IDB4MDZEMykgewotICAgICAgICByZXR1cm4oYXJhTGlua1tjaC0weDA2MjJdKTsKLSAgICB9IGVs
c2UgaWYoY2ggPT0gMHgyMDBEKSB7Ci0gICAgICAgIHJldHVybigzKTsKLSAgICB9IGVsc2UgaWYo
Y2ggPj0gMHgyMDZEICYmIGNoIDw9IDB4MjA2RikgewotICAgICAgICByZXR1cm4oNCk7Ci0gICAg
fSBlbHNlIGlmKGNoID49IDB4RkU3MCAmJiBjaCA8PSAweEZFRkMpIHsKLSAgICAgICAgcmV0dXJu
KHByZXNMaW5rW2NoLTB4RkU3MF0pOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHJldHVybigwKTsK
LSAgICB9Ci19Ci0KLS8qCi0gKk5hbWUgICAgIDogaXNUYXNoa2VlbENoYXIKLSAqRnVuY3Rpb24g
OiBSZXR1cm5zIDEgZm9yIFRhc2hrZWVsIGNoYXJhY3RlcnMgZWxzZSByZXR1cm4gMAotICovCi1z
dGF0aWMgaW50MzJfdAotaXNUYXNoa2VlbENoYXIoVUNoYXIgY2gpIHsKLQotICAgIGlmKCBjaD49
MHgwNjRCICYmIGNoPD0gMHgwNjUyICkKLSAgICAgICAgcmV0dXJuICgxKTsKLSAgICBlbHNlCi0g
ICAgICAgIHJldHVybiAoMCk7Ci19Ci0KLS8qCi0gKk5hbWUgICAgIDogc2hhcGVVbmljb2RlCi0g
KkZ1bmN0aW9uIDogQ29udmVydHMgYW4gQXJhYmljIFVuaWNvZGUgYnVmZmVyIGluIDA2eHggUmFu
Z2UgaW50byBhIHNoYXBlZAotICogICAgICAgICAgIGFyYWJpYyBVbmljb2RlIGJ1ZmZlciBpbiBG
RXh4IFJhbmdlCi0gKi8KLXN0YXRpYyBpbnQzMl90Ci1zaGFwZVVuaWNvZGUoVUNoYXIgKmRlc3Qs
IGludDMyX3Qgc291cmNlTGVuZ3RoLAotICAgICAgICAgICAgIGludDMyX3QgZGVzdFNpemUsCi0g
ICAgICAgICAgICAgaW50IHRhc2hrZWVsRmxhZykgewotCi0gICAgaW50MzJfdCAgICAgICAgICBp
LCBpZW5kOwotICAgIGludDMyX3QgICAgICAgICAgcHJldlBvcywgbGFzdFBvcyxOeCwgTnc7Ci0g
ICAgdW5zaWduZWQgaW50ICAgICBTaGFwZTsKLSAgICBpbnQzMl90ICAgICAgICAgIGZsYWc7Ci0g
ICAgaW50MzJfdCAgICAgICAgICBsYW1hbGVmX2ZvdW5kID0gMDsKLSAgICBVQ2hhciAgICAgICAg
ICAgIHByZXZMaW5rID0gMCwgbGFzdExpbmsgPSAwLCBjdXJyTGluaywgbmV4dExpbmsgPSAwOwot
ICAgIFVDaGFyICAgICAgICAgICAgd0xhbWFsZWY7Ci0KLSAgICAvKgotICAgICAqIENvbnZlcnRz
IHRoZSBpbnB1dCBidWZmZXIgZnJvbSBGRXh4IFJhbmdlIGludG8gMDZ4eCBSYW5nZQotICAgICAq
IHRvIG1ha2Ugc3VyZSB0aGF0IGFsbCBjaGFyYWN0ZXJzIGFyZSBpbiB0aGUgMDZ4eCByYW5nZQot
ICAgICAqIGV2ZW4gdGhlIGxhbWFsZWYgaXMgY29udmVydGVkIHRvIHRoZSBzcGVjaWFsIHJlZ2lv
biBpbgotICAgICAqIHRoZSAwNnh4IHJhbmdlCi0gICAgICovCi0gICAgZm9yIChpID0gMDsgaSA8
IHNvdXJjZUxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIFVDaGFyIGlucHV0Q2hhciA9IGRlc3RbaV07
Ci0gICAgICAgIGlmICggKGlucHV0Q2hhciA+PSAweEZFNzApICYmIChpbnB1dENoYXIgPD0gMHhG
RUZDKSkgewotICAgICAgICAgICAgZGVzdFtpXSA9IGNvbnZlcnRGRXRvMDYgWyAoaW5wdXRDaGFy
IC0gMHhGRTcwKSBdIDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qIHNldHMgdGhlIGluZGV4
IHRvIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciwgdG9nZXRoZXIgd2l0aCB0aGUgc3RlcCBwb2ludCB0
byAtMSAqLwotICAgIGkgPSAwOwotICAgIGllbmQgPSBzb3VyY2VMZW5ndGg7Ci0KLSAgICAvKgot
ICAgICAqIFRoaXMgZnVuY3Rpb24gcmVzb2x2ZXMgdGhlIGxpbmsgYmV0d2VlbiB0aGUgY2hhcmFj
dGVycyAuCi0gICAgICogQXJhYmljIGNoYXJhY3RlcnMgaGF2ZSBmb3VyIGZvcm1zIDoKLSAgICAg
KiBJc29sYXRlZCBGb3JtLCBJbml0aWFsIEZvcm0sIE1pZGRsZSBGb3JtIGFuZCBGaW5hbCBGb3Jt
Ci0gICAgICovCi0gICAgY3VyckxpbmsgPSBnZXRMaW5rKGRlc3RbaV0pOwotCi0gICAgcHJldlBv
cyA9IGk7Ci0gICAgbGFzdFBvcyA9IGk7Ci0gICAgTnggPSBzb3VyY2VMZW5ndGggKyAyLCBOdyA9
IDA7Ci0KLSAgICB3aGlsZSAoaSAhPSBpZW5kKSB7Ci0gICAgICAgIC8qIElmIGhpZ2ggYnl0ZSBv
ZiBjdXJyTGluayA+IDAgdGhlbiBtb3JlIHRoYW4gb25lIHNoYXBlICovCi0gICAgICAgIGlmICgo
Y3VyckxpbmsgJiAweEZGMDApID4gMCB8fCBpc1Rhc2hrZWVsQ2hhcihkZXN0W2ldKSkgewotICAg
ICAgICAgICAgTncgPSBpICsgMTsKLSAgICAgICAgICAgIHdoaWxlIChOeCA+PSBzb3VyY2VMZW5n
dGgpIHsgICAgICAgICAvKiB3ZSBuZWVkIHRvIGtub3cgYWJvdXQgbmV4dCBjaGFyICovCi0gICAg
ICAgICAgICAgICAgaWYoTncgPT0gaWVuZCkgewotICAgICAgICAgICAgICAgICAgICBuZXh0TGlu
ayA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIE54ID0gLTE7Ci0gICAgICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgbmV4dExpbmsgPSBnZXRMaW5rKGRlc3RbTnddKTsK
LSAgICAgICAgICAgICAgICAgICAgaWYoKG5leHRMaW5rICYgSVJSRUxFVkFOVCkgPT0gMCkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgTnggPSBOdzsKLSAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIE53ID0gTncgKyAxOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBpZiAoICgoY3VyckxpbmsgJiBBTEVGVFlQRSkgPiAwKSAgJiYgICgobGFzdExpbmsgJiBMQU1U
WVBFKSA+IDApICkgewotICAgICAgICAgICAgICAgIGxhbWFsZWZfZm91bmQgPSAxOwotICAgICAg
ICAgICAgICAgIHdMYW1hbGVmID0gY2hhbmdlTGFtQWxlZihkZXN0W2ldKTsgLypnZXQgZnJvbSAw
eDA2NUMtMHgwNjVmICovCi0gICAgICAgICAgICAgICAgaWYgKCB3TGFtYWxlZiAhPSAwKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGRlc3RbaV0gPSAnICc7ICAgICAgICAgICAgICAgLyogVGhlIGRl
ZmF1bHQgY2FzZSBpcyB0byBkcm9wIHRoZSBBbGVmIGFuZCByZXBsYWNlICovCi0gICAgICAgICAg
ICAgICAgICAgIGRlc3RbbGFzdFBvc10gPXdMYW1hbGVmOyAgICAgLyogaXQgYnkgYSBzcGFjZS4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgICAg
IGk9bGFzdFBvczsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbGFzdExpbmsg
PSBwcmV2TGluazsKLSAgICAgICAgICAgICAgICBjdXJyTGluayA9IGdldExpbmsod0xhbWFsZWYp
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIGdldCB0aGUg
cHJvcGVyIHNoYXBlIGFjY29yZGluZyB0byBsaW5rIGFiaWxpdHkgb2YgbmVpZ2hib3JzCi0gICAg
ICAgICAgICAgKiBhbmQgb2YgY2hhcmFjdGVyOyBkZXBlbmRzIG9uIHRoZSBvcmRlciBvZiB0aGUg
c2hhcGVzCi0gICAgICAgICAgICAgKiAoaXNvbGF0ZWQsIGluaXRpYWwsIG1pZGRsZSwgZmluYWwp
IGluIHRoZSBjb21wYXRpYmlsaXR5IGFyZWEKLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAg
IGZsYWcgID0gc3BlY2lhbENoYXIoZGVzdFtpXSk7Ci0KLSAgICAgICAgICAgICBTaGFwZSA9IHNo
YXBlVGFibGVbbmV4dExpbmsgJiAoTElOS1IgKyBMSU5LTCldCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgW2xhc3RMaW5rICYgKExJTktSICsgTElOS0wpXQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFtjdXJyTGluayAmIChMSU5LUiArIExJTktMKV07Ci0KLSAgICAgICAg
ICAgICBpZiAoZmxhZyA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgIFNoYXBlID0gKFNoYXBlID09
IDEgfHwgU2hhcGUgPT0gMykgPyAxIDogMDsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgIGlmKGZsYWcgPT0gMikgewotICAgICAgICAgICAgICAgICBpZigg
KGxhc3RMaW5rICYgTElOS0wpICYmIChuZXh0TGluayAmIExJTktSKSAmJiAodGFzaGtlZWxGbGFn
ID09IDEpICYmCi0gICAgICAgICAgICAgICAgICAgICAgZGVzdFtpXSAhPSAweDA2NEMgJiYgZGVz
dFtpXSAhPSAweDA2NEQgKSB7Ci0gICAgICAgICAgICAgICAgICAgICBTaGFwZSA9IDE7Ci0gICAg
ICAgICAgICAgICAgICAgICBpZiggKG5leHRMaW5rJkFMRUZUWVBFKSA9PSBBTEVGVFlQRSAmJiAo
bGFzdExpbmsmTEFNVFlQRSkgPT0gTEFNVFlQRSApCi0gICAgICAgICAgICAgICAgICAgICAgICAg
U2hhcGUgPSAwOwotICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgICAgICAgICAgU2hhcGUgPSAwOwotICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgaWYoZmxhZyA9PSAyKSB7Ci0gICAgICAgICAgICAg
ICAgIGRlc3RbaV0gPSAgMHhGRTcwICsgSXJyZWxldmFudFBvc1soZGVzdFtpXSAtIDB4MDY0Qild
ICsgU2hhcGU7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICAgZGVzdFtpXSA9IChVQ2hhcikoKGRlc3RbaV0gPCAweDA2NzAgPyAweEZFNzAgOiAweEZC
NTApICsgKGN1cnJMaW5rID4+IDgpICsgU2hhcGUpOwotICAgICAgICB9Ci0KLSAgICAgICAgLyog
bW92ZSBvbmUgbm90Y2ggZm9yd2FyZCAqLwotICAgICAgICBpZiAoKGN1cnJMaW5rICYgSVJSRUxF
VkFOVCkgPT0gMCkgewotICAgICAgICAgICAgICBwcmV2TGluayA9IGxhc3RMaW5rOwotICAgICAg
ICAgICAgICBsYXN0TGluayA9IGN1cnJMaW5rOwotICAgICAgICAgICAgICBwcmV2UG9zID0gbGFz
dFBvczsKLSAgICAgICAgICAgICAgbGFzdFBvcyA9IGk7Ci0gICAgICAgIH0KLQotICAgICAgICBp
Kys7Ci0gICAgICAgIGlmIChpID09IE54KSB7Ci0gICAgICAgICAgICBjdXJyTGluayA9IG5leHRM
aW5rOwotICAgICAgICAgICAgTnggPSBzb3VyY2VMZW5ndGggKyAyOwotICAgICAgICB9Ci0gICAg
ICAgIGVsc2UgaWYoaSAhPSBpZW5kKSB7Ci0gICAgICAgICAgICBjdXJyTGluayA9IGdldExpbmso
ZGVzdFtpXSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBkZXN0U2l6ZSA9IHNvdXJjZUxlbmd0
aDsKLQotICAgIHJldHVybiBkZXN0U2l6ZTsKLX0KLQotaW50MzJfdCBzaGFwZUFyYWJpYyhjb25z
dCBVQ2hhciAqc291cmNlLCBpbnQzMl90IHNvdXJjZUxlbmd0aCwgVUNoYXIgKmRlc3QsIGludDMy
X3QgZGVzdENhcGFjaXR5LCB1aW50MzJfdCBvcHRpb25zLCBVRXJyb3JDb2RlICpwRXJyb3JDb2Rl
KSB7Ci0gICAgaW50MzJfdCBkZXN0TGVuZ3RoOwotCi0gICAgLyogdXN1YWwgZXJyb3IgY2hlY2tp
bmcgKi8KLSAgICBpZihwRXJyb3JDb2RlPT1OVUxMIHx8IFVfRkFJTFVSRSgqcEVycm9yQ29kZSkp
IHsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgLyogbWFrZSBzdXJlIHRoYXQgbm8g
cmVzZXJ2ZWQgb3B0aW9ucyB2YWx1ZXMgYXJlIHVzZWQ7IGFsbG93IGRlc3Q9PU5VTEwgb25seSBm
b3IgcHJlZmxpZ2h0aW5nICovCi0gICAgaWYoIHNvdXJjZT09TlVMTCB8fCBzb3VyY2VMZW5ndGg8
LTEgfHwKLSAgICAgICAgKGRlc3Q9PU5VTEwgJiYgZGVzdENhcGFjaXR5IT0wKSB8fCBkZXN0Q2Fw
YWNpdHk8MCB8fAotICAgICAgICBvcHRpb25zPj1VX1NIQVBFX0RJR0lUX1RZUEVfUkVTRVJWRUQg
fHwKLSAgICAgICAgKG9wdGlvbnMmVV9TSEFQRV9ESUdJVFNfTUFTSyk+PVVfU0hBUEVfRElHSVRT
X1JFU0VSVkVECi0gICAgKSB7Ci0gICAgICAgICpwRXJyb3JDb2RlPVVfSUxMRUdBTF9BUkdVTUVO
VF9FUlJPUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgLyogZGV0ZXJtaW5lIHRo
ZSBzb3VyY2UgbGVuZ3RoICovCi0gICAgaWYoc291cmNlTGVuZ3RoPT0tMSkgewotICAgICAgICBz
b3VyY2VMZW5ndGg9dV9zdHJsZW4oc291cmNlKTsKLSAgICB9Ci0gICAgaWYoc291cmNlTGVuZ3Ro
PT0wKSB7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIC8qIGNoZWNrIHRoYXQgc291
cmNlIGFuZCBkZXN0aW5hdGlvbiBkbyBub3Qgb3ZlcmxhcCAqLwotICAgIGlmKCBkZXN0IT1OVUxM
ICYmCi0gICAgICAgICgoc291cmNlPD1kZXN0ICYmIGRlc3Q8c291cmNlK3NvdXJjZUxlbmd0aCkg
fHwKLSAgICAgICAgIChkZXN0PD1zb3VyY2UgJiYgc291cmNlPGRlc3QrZGVzdENhcGFjaXR5KSkK
LSAgICApIHsKLSAgICAgICAgKnBFcnJvckNvZGU9VV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SOwot
ICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZigob3B0aW9ucyZVX1NIQVBFX0xFVFRF
UlNfTUFTSykhPVVfU0hBUEVfTEVUVEVSU19OT09QKSB7Ci0gICAgICAgIGludDMyX3Qgb3V0cHV0
U2l6ZSA9IHNvdXJjZUxlbmd0aDsKLQotICAgICAgICAvKiBjYWxjdWxhdGUgZGVzdGluYXRpb24g
c2l6ZSAqLwotICAgICAgICAvKiBUT0RPOiBkbyB3ZSBldmVyIG5lZWQgdG8gZG8gdGhpcyBwdXJl
IHByZWZsaWdodGluZz8gKi8KLSAgICAgICAgQVNTRVJUKChvcHRpb25zJlVfU0hBUEVfTEVOR1RI
X01BU0spICE9IFVfU0hBUEVfTEVOR1RIX0dST1dfU0hSSU5LKTsKLQotICAgICAgICBpZihvdXRw
dXRTaXplPmRlc3RDYXBhY2l0eSkgewotICAgICAgICAgICAgKnBFcnJvckNvZGU9VV9CVUZGRVJf
T1ZFUkZMT1dfRVJST1I7Ci0gICAgICAgICAgICByZXR1cm4gb3V0cHV0U2l6ZTsKLSAgICAgICAg
fQotCi0gICAgICAgIC8qIFN0YXJ0IG9mIEFyYWJpYyBsZXR0ZXIgc2hhcGluZyBwYXJ0ICovCi0g
ICAgICAgIG1lbWNweShkZXN0LCBzb3VyY2UsIHNvdXJjZUxlbmd0aCpVX1NJWkVPRl9VQ0hBUik7
Ci0KLSAgICAgICAgQVNTRVJUKChvcHRpb25zJlVfU0hBUEVfVEVYVF9ESVJFQ1RJT05fTUFTSykg
PT0gVV9TSEFQRV9URVhUX0RJUkVDVElPTl9MT0dJQ0FMKTsKLQotICAgICAgICBzd2l0Y2gob3B0
aW9ucyZVX1NIQVBFX0xFVFRFUlNfTUFTSykgewotICAgICAgICBjYXNlIFVfU0hBUEVfTEVUVEVS
U19TSEFQRSA6Ci0gICAgICAgICAgICAvKiBDYWxsIHRoZSBzaGFwaW5nIGZ1bmN0aW9uIHdpdGgg
dGFzaGtlZWwgZmxhZyA9PSAxICovCi0gICAgICAgICAgICBkZXN0TGVuZ3RoID0gc2hhcGVVbmlj
b2RlKGRlc3Qsc291cmNlTGVuZ3RoLGRlc3RDYXBhY2l0eSwxKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIFVfU0hBUEVfTEVUVEVSU19TSEFQRV9UQVNIS0VFTF9JU09MQVRFRCA6
Ci0gICAgICAgICAgICAvKiBDYWxsIHRoZSBzaGFwaW5nIGZ1bmN0aW9uIHdpdGggdGFzaGtlZWwg
ZmxhZyA9PSAwICovCi0gICAgICAgICAgICBkZXN0TGVuZ3RoID0gc2hhcGVVbmljb2RlKGRlc3Qs
c291cmNlTGVuZ3RoLGRlc3RDYXBhY2l0eSwwKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIFVfU0hBUEVfTEVUVEVSU19VTlNIQVBFIDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQgOgotICAgICAg
ICAgICAgLyogd2lsbCBuZXZlciBvY2N1ciBiZWNhdXNlIG9mIHZhbGlkaXR5IGNoZWNrcyBhYm92
ZSAqLwotICAgICAgICAgICAgZGVzdExlbmd0aCA9IDA7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQotCi0gICAgICAgIC8qIEVuZCBvZiBBcmFiaWMgbGV0dGVyIHNoYXBpbmcgcGFydCAq
LwotICAgIH0gZWxzZQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLQotICAgIEFTU0VS
VCgob3B0aW9ucyAmIFVfU0hBUEVfRElHSVRTX01BU0spID09IFVfU0hBUEVfRElHSVRTX05PT1Ap
OyAKLQotICAgIHJldHVybiBzb3VyY2VMZW5ndGg7Ci19Ci0KLSNlbmRpZiAvLyBVU0UoQVRTVUkp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9TaGFwZUFyYWJpYy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1NoYXBlQXJhYmlj
LmgJKHJldmlzaW9uIDEyMzE2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFj
L1NoYXBlQXJhYmljLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNDQgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBTaGFwZUFyYWJp
Y19oCi0jZGVmaW5lIFNoYXBlQXJhYmljX2gKLQotI2lmIFVTRShBVFNVSSkKLQotI2luY2x1ZGUg
PHVuaWNvZGUvdXNoYXBlLmg+Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0j
ZW5kaWYKLQotaW50MzJfdCBzaGFwZUFyYWJpYyhjb25zdCBVQ2hhciAqc291cmNlLCBpbnQzMl90
IHNvdXJjZUxlbmd0aCwgVUNoYXIgKmRlc3QsIGludDMyX3QgZGVzdENhcGFjaXR5LCB1aW50MzJf
dCBvcHRpb25zLCBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVz
Ci19Ci0jZW5kaWYKLQotI2VuZGlmIC8vIFVTRShBVFNVSSkKLSNlbmRpZiAvLyBTaGFwZUFyYWJp
Y19oCg==
</data>
<flag name="review"
          id="162344"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>