<?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>54035</bug_id>
          
          <creation_ts>2011-02-08 14:39:49 -0800</creation_ts>
          <short_desc>[GTK] Remove the last remnants of the Mozilla theme drawing code</short_desc>
          <delta_ts>2011-02-08 16:45:31 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gustavo</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>347694</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-02-08 14:39:49 -0800</bug_when>
    <thetext>All form control rendering is handled by native WebCore code now. We may remove all traces of the old Mozilla theme drawing code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347699</commentid>
    <comment_count>1</comment_count>
      <attachid>81695</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-02-08 14:42:06 -0800</bug_when>
    <thetext>Created attachment 81695
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347756</commentid>
    <comment_count>2</comment_count>
      <attachid>81695</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2011-02-08 15:51:15 -0800</bug_when>
    <thetext>Comment on attachment 81695
Patch

DIE YOU MONSTER.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347806</commentid>
    <comment_count>3</comment_count>
      <attachid>81695</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-02-08 16:45:29 -0800</bug_when>
    <thetext>Comment on attachment 81695
Patch

Clearing flags on attachment: 81695

Committed r77993: &lt;http://trac.webkit.org/changeset/77993&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347807</commentid>
    <comment_count>4</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-02-08 16:45:31 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81695</attachid>
            <date>2011-02-08 14:42:06 -0800</date>
            <delta_ts>2011-02-08 16:45:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54035-20110208144206.patch</filename>
            <type>text/plain</type>
            <size>38843</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzc5NzEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmZWJhMDMwYjM2NmQ1MWJj
NmEzNDJjNmI2NWRmOGFhMTMxOTQ2YjliLi40NjQ3MDU1NWIxMDdmMTBiMmRmZDcyMDE1YjQxMjc0
NzU1YTQ0YmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMDItMDggIE1hcnRp
biBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIFJlbW92ZSB0aGUgbGFzdCByZW1uYW50
cyBvZiB0aGUgTW96aWxsYSB0aGVtZSBkcmF3aW5nIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MDM1CisKKyAgICAgICAgUmVtb3ZlIGFsbCBN
b3ppbGxhIHRoZW1lIGRyYXdpbmcgY29kZS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRoaXMg
Y2hhbmdlIG9ubHkgcmVtb3ZlcyBkZWFkIGNvZGUuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5h
bTogUmVtb3ZlIE1vemlsbGEgZmlsZXMgZnJvbSB0aGUgc291cmNlIGxpc3QuCisgICAgICAgICog
cGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmg6IFJlbW92ZSBNb3ppbGxhLXRoZW1lLWRyYXdp
bmctcmVsYXRlZCBtZXRob2RzCisgICAgICAgIGFuZCBhZGQgbV9jb2xvcm1hcCB0byBob2xkIHRo
ZSBjdXJyZW50IGNvbG9ybWFwIG9mIHRoZSB3aWRnZXRzLgorICAgICAgICAqIHBsYXRmb3JtL2d0
ay9SZW5kZXJUaGVtZUd0azIuY3BwOiBSZW1vdmUgTW96aWxsYSBjb2RlLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVHdGs6OnBsYXRmb3JtSW5pdCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVHdGs6On5SZW5kZXJUaGVtZUd0ayk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6Omd0a0NvbnRhaW5lcik6IERpdHRvLgorICAgICAgICAq
IHBsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0azIuY3BwOiBEaXR0by4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ndGsvV2lkZ2V0UmVuZGVyaW5nQ29udGV4dC5jcHA6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6V2lkZ2V0UmVuZGVyaW5nQ29udGV4dDo6V2lkZ2V0UmVuZGVyaW5nQ29udGV4dCk6
IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9XaWRnZXRSZW5kZXJpbmdDb250ZXh0Lmg6
IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9ndGsyZHJhd2luZy5jOiBSZW1vdmVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2d0ay9ndGtkcmF3aW5nLmg6IFJlbW92ZWQuCisKIDIwMTEtMDIt
MDggIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0g
Yi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCAxNDc5M2U3ZjViM2ViZGQ0ZWRj
NTIyZWRlZWJhNGI2YWU5YTAxYjUxLi4wNGMwOTNlNzJjZDRjNDc3MWVmMTVlYTAxMTI4ZmM5NjY4
ODFkZWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMzc0MCw4ICszNzQwLDYgQEAgd2ViY29y
ZWd0a19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR093blB0ckd0
ay5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HUmVmUHRyR3RrLmggXAotCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9ndGsyZHJhd2luZy5jIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvZ3RrZHJhd2luZy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrUGx1Z2lu
V2lkZ2V0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1BsdWdpbldpZGdl
dC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVmVyc2lvbmluZy5jIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmgKaW5kZXggODYyMDEy
N2NhMDU1N2NkYzc5OWE2NzU2YTI0YjVlZmNiOTY1YzYzMS4uZjVlMDNhOWE4YmY1N2FkNmJkZDU0
M2ZlMTczZWU0YTc3ODZiY2I5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1JlbmRlclRoZW1lR3RrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Jl
bmRlclRoZW1lR3RrLmgKQEAgLTMxLDExICszMSw4IEBACiAjaW5jbHVkZSAiR1JlZlB0ci5oIgog
I2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAKLSNpZmRlZiBHVEtfQVBJX1ZFUlNJT05fMgotI2lu
Y2x1ZGUgImd0a2RyYXdpbmcuaCIKLSNlbmRpZgotCiB0eXBlZGVmIGd1bG9uZyBHVHlwZTsKK3R5
cGVkZWYgc3RydWN0IF9HZGtDb2xvcm1hcCBHZGtDb2xvcm1hcDsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC0xOTksMTIgKzE5NiwxMCBAQCBwcml2YXRlOgogCiAjaWZkZWYgR1RLX0FQSV9W
RVJTSU9OXzIKICAgICB2b2lkIHNldHVwV2lkZ2V0QW5kQWRkVG9Db250YWluZXIoR3RrV2lkZ2V0
KiwgR3RrV2lkZ2V0KikgY29uc3Q7Ci0gICAgYm9vbCBwYWludFJlbmRlck9iamVjdChHdGtUaGVt
ZVdpZGdldFR5cGUsIFJlbmRlck9iamVjdCosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJl
Y3QmLCBpbnQgZmxhZ3MgPSAwKTsKICAgICB2b2lkIHJlZnJlc2hDb21ib0JveENoaWxkcmVuKCkg
Y29uc3Q7CiAgICAgdm9pZCBnZXRDb21ib0JveFBhZGRpbmcoUmVuZGVyU3R5bGUqLCBpbnQmIGxl
ZnQsIGludCYgdG9wLCBpbnQmIHJpZ2h0LCBpbnQmIGJvdHRvbSkgY29uc3Q7CiAgICAgaW50IGdl
dENvbWJvQm94U2VwYXJhdG9yV2lkdGgoKSBjb25zdDsKICAgICBpbnQgY29tYm9Cb3hBcnJvd1Np
emUoUmVuZGVyU3R5bGUqKSBjb25zdDsKLSAgICBHdGtUaGVtZVBhcnRzIG1fdGhlbWVQYXJ0czsK
IAogICAgIEd0a1dpZGdldCogZ3RrQnV0dG9uKCkgY29uc3Q7CiAgICAgR3RrV2lkZ2V0KiBndGtF
bnRyeSgpIGNvbnN0OwpAQCAtMjIwLDYgKzIxNSw3IEBAIHByaXZhdGU6CiAgICAgR3RrV2lkZ2V0
KiBndGtDb21ib0JveEFycm93KCkgY29uc3Q7CiAgICAgR3RrV2lkZ2V0KiBndGtDb21ib0JveFNl
cGFyYXRvcigpIGNvbnN0OwogCisgICAgR2RrQ29sb3JtYXAqIG1fY29sb3JtYXA7CiAgICAgbXV0
YWJsZSBHdGtXaWRnZXQqIG1fZ3RrV2luZG93OwogICAgIG11dGFibGUgR3RrV2lkZ2V0KiBtX2d0
a0NvbnRhaW5lcjsKICAgICBtdXRhYmxlIEd0a1dpZGdldCogbV9ndGtCdXR0b247CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0azIuY3BwCmluZGV4IGIzNzAy
NTFjYzAxMDI5MGExN2ZhNzQ0MWJkMjRjNGI0ODMwMWE4MGUuLjUzNGFhOTdjNmVlZDJjYmNmZTkw
MGRkNmI3YzI4NTkyZTY1ZWY1M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9SZW5kZXJUaGVtZUd0azIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9SZW5kZXJUaGVtZUd0azIuY3BwCkBAIC00MSw3ICs0MSw2IEBACiAjaW5jbHVkZSAiVGV4dERp
cmVjdGlvbi5oIgogI2luY2x1ZGUgIlVzZXJBZ2VudFN0eWxlU2hlZXRzLmgiCiAjaW5jbHVkZSAi
V2lkZ2V0UmVuZGVyaW5nQ29udGV4dC5oIgotI2luY2x1ZGUgImd0a2RyYXdpbmcuaCIKICNpbmNs
dWRlIDxnZGsvZ2RrLmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogCkBAIC01MCw3ICs0OSw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIFRoaXMgaXMgbm90IGEgc3RhdGljIG1ldGhvZCwgYmVj
YXVzZSB3ZSB3YW50IHRvIGF2b2lkIGhhdmluZyBHVEsrIGhlYWRlcnMgaW4gUmVuZGVyVGhlbWVH
dGsuaC4KIGV4dGVybiBHdGtUZXh0RGlyZWN0aW9uIGd0a1RleHREaXJlY3Rpb24oVGV4dERpcmVj
dGlvbik7CiAKLXN0YXRpYyBpbnQgbW96R3RrUmVmQ291bnQgPSAwOwogdm9pZCBSZW5kZXJUaGVt
ZUd0azo6cGxhdGZvcm1Jbml0KCkKIHsKICAgICBtX3RoZW1lUGFydHNIYXZlUkdCQUNvbG9ybWFw
ID0gdHJ1ZTsKQEAgLTcxLDI5ICs2OSwxNSBAQCB2b2lkIFJlbmRlclRoZW1lR3RrOjpwbGF0Zm9y
bUluaXQoKQogICAgIG1fZ3RrVlNjcm9sbGJhciA9IDA7CiAgICAgbV9ndGtIU2Nyb2xsYmFyID0g
MDsKIAotICAgIG1lbXNldCgmbV90aGVtZVBhcnRzLCAwLCBzaXplb2YoR3RrVGhlbWVQYXJ0cykp
OwotICAgIEdka0NvbG9ybWFwKiBjb2xvcm1hcCA9IGdka19zY3JlZW5fZ2V0X3JnYmFfY29sb3Jt
YXAoZ2RrX3NjcmVlbl9nZXRfZGVmYXVsdCgpKTsKLSAgICBpZiAoIWNvbG9ybWFwKSB7CisgICAg
bV9jb2xvcm1hcCA9IGdka19zY3JlZW5fZ2V0X3JnYmFfY29sb3JtYXAoZ2RrX3NjcmVlbl9nZXRf
ZGVmYXVsdCgpKTsKKyAgICBpZiAoIW1fY29sb3JtYXApIHsKICAgICAgICAgbV90aGVtZVBhcnRz
SGF2ZVJHQkFDb2xvcm1hcCA9IGZhbHNlOwotICAgICAgICBjb2xvcm1hcCA9IGdka19zY3JlZW5f
Z2V0X2RlZmF1bHRfY29sb3JtYXAoZ2RrX3NjcmVlbl9nZXRfZGVmYXVsdCgpKTsKKyAgICAgICAg
bV9jb2xvcm1hcCA9IGdka19zY3JlZW5fZ2V0X2RlZmF1bHRfY29sb3JtYXAoZ2RrX3NjcmVlbl9n
ZXRfZGVmYXVsdCgpKTsKICAgICB9Ci0gICAgbV90aGVtZVBhcnRzLmNvbG9ybWFwID0gY29sb3Jt
YXA7Ci0KLSAgICAvLyBJbml0aWFsaXplIHRoZSBNb3ppbGxhIHRoZW1lIGRyYXdpbmcgY29kZS4K
LSAgICBpZiAoIW1vekd0a1JlZkNvdW50KSB7Ci0gICAgICAgIG1vel9ndGtfaW5pdCgpOwotICAg
ICAgICBtb3pfZ3RrX3VzZV90aGVtZV9wYXJ0cygmbV90aGVtZVBhcnRzKTsKLSAgICB9Ci0gICAg
Kyttb3pHdGtSZWZDb3VudDsKIH0KIAogUmVuZGVyVGhlbWVHdGs6On5SZW5kZXJUaGVtZUd0aygp
CiB7Ci0gICAgLS1tb3pHdGtSZWZDb3VudDsKLQotICAgIGlmICghbW96R3RrUmVmQ291bnQpCi0g
ICAgICAgIG1vel9ndGtfc2h1dGRvd24oKTsKLQogICAgIGlmIChtX2d0a1dpbmRvdykKICAgICAg
ICAgZ3RrX3dpZGdldF9kZXN0cm95KG1fZ3RrV2luZG93KTsKIH0KQEAgLTE0OSwzNCArMTMzLDYg
QEAgc3RhdGljIEd0a1N0YXRlVHlwZSBnZXRHdGtTdGF0ZVR5cGUoUmVuZGVyVGhlbWVHdGsqIHRo
ZW1lLCBSZW5kZXJPYmplY3QqIG9iamVjdCkKICAgICByZXR1cm4gR1RLX1NUQVRFX05PUk1BTDsK
IH0KIAotYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRSZW5kZXJPYmplY3QoR3RrVGhlbWVXaWRn
ZXRUeXBlIHR5cGUsIFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QsIGludCBmbGFncykKLXsKLSAgICAvLyBQYWlu
dGluZyBpcyBkaXNhYmxlZCBzbyBqdXN0IGNsYWltIHRvIGhhdmUgc3VjY2VlZGVkCi0gICAgaWYg
KGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgR3RrV2lkZ2V0U3RhdGUgd2lkZ2V0U3RhdGU7Ci0gICAgd2lkZ2V0U3RhdGUuYWN0aXZlID0g
aXNQcmVzc2VkKHJlbmRlck9iamVjdCk7Ci0gICAgd2lkZ2V0U3RhdGUuZm9jdXNlZCA9IGlzRm9j
dXNlZChyZW5kZXJPYmplY3QpOwotCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4MzY0Ci0gICAgLy8gVGhlIE1vemlsbGEgdGhlbWUgZHJhd2luZyBjb2Rl
LCBvbmx5IHBhaW50cyBhIGJ1dHRvbiBhcyBwcmVzc2VkIHdoZW4gaXQncyBwcmVzc2VkIAotICAg
IC8vIHdoaWxlIGhvdmVyZWQuIFVudGlsIHdlIG1vdmUgYXdheSBmcm9tIHRoZSBNb3ppbGEgY29k
ZSwgd29yay1hcm91bmQgdGhlIGlzc3VlIGJ5Ci0gICAgLy8gZm9yY2luZyBhIHByZXNzZWQgYnV0
dG9uIGludG8gdGhlIGhvdmVyZWQgc3RhdGUuIFRoaXMgZW5zdXJlcyB0aGF0IGJ1dHRvbnMgYWN0
aXZhdGVkCi0gICAgLy8gdmlhIHRoZSBrZXlib2FyZCBoYXZlIHRoZSBwcm9wZXIgcmVuZGVyaW5n
LgotICAgIHdpZGdldFN0YXRlLmluSG92ZXIgPSBpc0hvdmVyZWQocmVuZGVyT2JqZWN0KSB8fCAo
dHlwZSA9PSBNT1pfR1RLX0JVVFRPTiAmJiBpc1ByZXNzZWQocmVuZGVyT2JqZWN0KSk7Ci0KLSAg
ICAvLyBGSVhNRTogRGlzYWJsZWQgZG9lcyBub3QgYWx3YXlzIGdpdmUgdGhlIGNvcnJlY3QgYXBw
ZWFyYW5jZSBmb3IgUmVhZE9ubHkKLSAgICB3aWRnZXRTdGF0ZS5kaXNhYmxlZCA9ICFpc0VuYWJs
ZWQocmVuZGVyT2JqZWN0KSB8fCBpc1JlYWRPbmx5Q29udHJvbChyZW5kZXJPYmplY3QpOwotICAg
IHdpZGdldFN0YXRlLmlzRGVmYXVsdCA9IGZhbHNlOwotICAgIHdpZGdldFN0YXRlLmNhbkRlZmF1
bHQgPSBmYWxzZTsKLSAgICB3aWRnZXRTdGF0ZS5kZXByZXNzZWQgPSBmYWxzZTsKLQotICAgIFdp
ZGdldFJlbmRlcmluZ0NvbnRleHQgd2lkZ2V0Q29udGV4dChjb250ZXh0LCByZWN0KTsKLSAgICBy
ZXR1cm4gIXdpZGdldENvbnRleHQucGFpbnRNb3ppbGxhV2lkZ2V0KHR5cGUsICZ3aWRnZXRTdGF0
ZSwgZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
dGtUZXh0RGlyZWN0aW9uKHJlbmRlck9iamVjdC0+c3R5bGUoKS0+ZGlyZWN0aW9uKCkpKTsKLX0K
LQogc3RhdGljIHZvaWQgc2V0VG9nZ2xlU2l6ZShjb25zdCBSZW5kZXJUaGVtZUd0ayogdGhlbWUs
IFJlbmRlclN0eWxlKiBzdHlsZSwgR3RrV2lkZ2V0KiB3aWRnZXQpCiB7CiAgICAgLy8gVGhlIHdp
ZHRoIGFuZCBoZWlnaHQgYXJlIGJvdGggc3BlY2lmaWVkLCBzbyB3ZSBzaG91bGRuJ3QgY2hhbmdl
IHRoZW0uCkBAIC03MTksNyArNjc1LDcgQEAgR3RrV2lkZ2V0KiBSZW5kZXJUaGVtZUd0azo6Z3Rr
Q29udGFpbmVyKCkgY29uc3QKICAgICAgICAgcmV0dXJuIG1fZ3RrQ29udGFpbmVyOwogCiAgICAg
bV9ndGtXaW5kb3cgPSBndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1BPUFVQKTsKLSAgICBndGtf
d2lkZ2V0X3NldF9jb2xvcm1hcChtX2d0a1dpbmRvdywgbV90aGVtZVBhcnRzLmNvbG9ybWFwKTsK
KyAgICBndGtfd2lkZ2V0X3NldF9jb2xvcm1hcChtX2d0a1dpbmRvdywgbV9jb2xvcm1hcCk7CiAg
ICAgc2V0dXBXaWRnZXQobV9ndGtXaW5kb3cpOwogICAgIGd0a193aWRnZXRfc2V0X25hbWUobV9n
dGtXaW5kb3csICJNb3ppbGxhR3RrV2lkZ2V0Iik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0azIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrMi5jcHAKaW5kZXggN2EwY2RjZGJmYmVjNzA3
ZWNjNTRhOTFlYmIyNzQyMDVhYTE0NjFmNy4uZTFmZmE3MTllNzIyMDhjOWY0MTUwZjdmM2U3MjM0
M2YyMWZlYzg4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9s
bGJhclRoZW1lR3RrMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9s
bGJhclRoZW1lR3RrMi5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJTY3JvbGxWaWV3
LmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSAiV2lkZ2V0UmVuZGVyaW5nQ29u
dGV4dC5oIgotI2luY2x1ZGUgImd0a2RyYXdpbmcuaCIKICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9XaWRnZXRSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9XaWRnZXRSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCAwNjMyMjczZTdlNGQ0OTdkZGE5
Mjg3NzNhZjBkMmIwMWQzZmM4N2ZjLi45ZTY0MGY2ZmFiMzEzYmU1YWM0YzljY2Q2OWI2MDFmZjZl
OTExNTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2lkZ2V0UmVu
ZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdl
dFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0xMDMsOCArMTAzLDggQEAgV2lkZ2V0UmVuZGVyaW5n
Q29udGV4dDo6V2lkZ2V0UmVuZGVyaW5nQ29udGV4dChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwKICAgICAgICAgd2lkdGggPSAoMSArICh3aWR0aCA+PiA1KSkgPDwgNTsKICAgICAg
ICAgaGVpZ2h0ID0gKDEgKyAoaGVpZ2h0ID4+IDUpKSA8PCA1OwogCi0gICAgICAgIGdTY3JhdGNo
QnVmZmVyID0gZ2RrX3BpeG1hcF9uZXcoMCwgd2lkdGgsIGhlaWdodCwgZ2RrX2NvbG9ybWFwX2dl
dF92aXN1YWwodGhlbWUtPm1fdGhlbWVQYXJ0cy5jb2xvcm1hcCktPmRlcHRoKTsKLSAgICAgICAg
Z2RrX2RyYXdhYmxlX3NldF9jb2xvcm1hcChnU2NyYXRjaEJ1ZmZlciwgdGhlbWUtPm1fdGhlbWVQ
YXJ0cy5jb2xvcm1hcCk7CisgICAgICAgIGdTY3JhdGNoQnVmZmVyID0gZ2RrX3BpeG1hcF9uZXco
MCwgd2lkdGgsIGhlaWdodCwgZ2RrX2NvbG9ybWFwX2dldF92aXN1YWwodGhlbWUtPm1fY29sb3Jt
YXApLT5kZXB0aCk7CisgICAgICAgIGdka19kcmF3YWJsZV9zZXRfY29sb3JtYXAoZ1NjcmF0Y2hC
dWZmZXIsIHRoZW1lLT5tX2NvbG9ybWFwKTsKICAgICB9CiAgICAgbV90YXJnZXQgPSBnU2NyYXRj
aEJ1ZmZlcjsKIApAQCAtMTQzLDE1ICsxNDMsNiBAQCBXaWRnZXRSZW5kZXJpbmdDb250ZXh0Ojp+
V2lkZ2V0UmVuZGVyaW5nQ29udGV4dCgpCiAgICAgc2NoZWR1bGVTY3JhdGNoQnVmZmVyUHVyZ2Uo
KTsKIH0KIAotYm9vbCBXaWRnZXRSZW5kZXJpbmdDb250ZXh0OjpwYWludE1vemlsbGFXaWRnZXQo
R3RrVGhlbWVXaWRnZXRUeXBlIHR5cGUsIEd0a1dpZGdldFN0YXRlKiBzdGF0ZSwgaW50IGZsYWdz
LCBHdGtUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24pCi17Ci0gICAgLy8gU29tZXRpbWVzIG1v
el9ndGtfd2lkZ2V0X3BhaW50IG1vZGlmaWVzIHRoZSBjbGlwcGluZyByZWN0YW5nbGUsIHNvIHdl
IG11c3QgdXNlIGEgY29weS4KLSAgICBHZGtSZWN0YW5nbGUgY2xpcFJlY3QgPSBtX3BhaW50UmVj
dDsKLSAgICBtX2hhZEVycm9yID0gbW96X2d0a193aWRnZXRfcGFpbnQodHlwZSwgbV90YXJnZXQs
ICZjbGlwUmVjdCwgJm1fcGFpbnRSZWN0LAotICAgICAgICBzdGF0ZSwgZmxhZ3MsIHRleHREaXJl
Y3Rpb24pICE9IE1PWl9HVEtfU1VDQ0VTUzsKLSAgICByZXR1cm4gIW1faGFkRXJyb3I7Ci19Ci0K
IHZvaWQgV2lkZ2V0UmVuZGVyaW5nQ29udGV4dDo6Z3RrUGFpbnRCb3goY29uc3QgSW50UmVjdCYg
cmVjdCwgR3RrV2lkZ2V0KiB3aWRnZXQsIEd0a1N0YXRlVHlwZSBzdGF0ZVR5cGUsIEd0a1NoYWRv
d1R5cGUgc2hhZG93VHlwZSwgY29uc3QgZ2NoYXIqIGRldGFpbCkKIHsKICAgICBHZGtSZWN0YW5n
bGUgcGFpbnRSZWN0ID0geyBtX3BhaW50UmVjdC54ICsgcmVjdC54KCksIG1fcGFpbnRSZWN0Lnkg
KyByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2lkZ2V0UmVuZGVyaW5nQ29udGV4dC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdldFJlbmRlcmluZ0NvbnRleHQuaAppbmRleCBl
MjQ4ZjA0ZTcyNzNkZDM5YjEwZDY2YmIxZWI3M2ExY2RlY2VmYmY4Li44NjM5YTk4ZjFkYzJiYzlj
NWI1YjFkZTkzYzdiYWY3MmRhZTdkYTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvV2lkZ2V0UmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9XaWRnZXRSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTI1LDcgKzI1LDExIEBACiAj
aWZkZWYgR1RLX0FQSV9WRVJTSU9OXzIKIAogI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRl
ICJndGtkcmF3aW5nLmgiCisKKy8vIFVzdWFsbHkgdGhpcyBpcyB0b28gZXhwZW5zaXZlIHRvIGhh
dmUgaW4gaGVhZGVycywgYnV0IEd0a1N0YXRlVHlwZSBHdGtTaGFkb3dUeXBlIGFyZQorLy8gZW51
bXMgYW5kIGNhbm5vdCBiZSBmb3J3YXJkIGRlY2xhcmVkLiBXaWRnZXRSZW5kZXJpbmdDb250ZXh0
LmggaXMgY3VycmVudGx5IG9ubHkKKy8vIGluY2x1ZGVkIGluIFJlbmRlclRoZW1lR3RrMi5jcHAg
YW5kIFNjcm9sbGJhclRoZW1lR3RrMi5jcHAuCisjaW5jbHVkZSA8Z3RrL2d0ay5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM3LDcgKzQxLDYgQEAgcHVibGljOgogICAgIFdpZGdldFJl
bmRlcmluZ0NvbnRleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpOwogICAgIH5X
aWRnZXRSZW5kZXJpbmdDb250ZXh0KCk7CiAKLSAgICBib29sIHBhaW50TW96aWxsYVdpZGdldChH
dGtUaGVtZVdpZGdldFR5cGUsIEd0a1dpZGdldFN0YXRlKiwgaW50IGZsYWdzLCBHdGtUZXh0RGly
ZWN0aW9uID0gR1RLX1RFWFRfRElSX05PTkUpOwogICAgIHZvaWQgZ3RrUGFpbnRCb3goY29uc3Qg
SW50UmVjdCYsIEd0a1dpZGdldCosIEd0a1N0YXRlVHlwZSwgR3RrU2hhZG93VHlwZSwgY29uc3Qg
Z2NoYXIqKTsKICAgICB2b2lkIGd0a1BhaW50RmxhdEJveChjb25zdCBJbnRSZWN0JiwgR3RrV2lk
Z2V0KiwgR3RrU3RhdGVUeXBlLCBHdGtTaGFkb3dUeXBlLCBjb25zdCBnY2hhciopOwogICAgIHZv
aWQgZ3RrUGFpbnRGb2N1cyhjb25zdCBJbnRSZWN0JiwgR3RrV2lkZ2V0KiwgR3RrU3RhdGVUeXBl
LCBjb25zdCBnY2hhciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L2d0azJkcmF3aW5nLmMgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvZ3RrMmRyYXdpbmcu
YwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzk3OWI3ZjM2MTg5NDM5YTdlOWRiN2I4
YTA0NzI0NWU0NTI0MGM1YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvZ3RrMmRyYXdpbmcuYworKysgL2Rl
di9udWxsCkBAIC0xLDU1MiArMCwwIEBACi0vKiAtKi0gTW9kZTogQysrOyB0YWItd2lkdGg6IDQ7
IGluZGVudC10YWJzLW1vZGU6IG5pbDsgYy1iYXNpYy1vZmZzZXQ6IDQgLSotICovCi0vKiAqKioq
KiBCRUdJTiBMSUNFTlNFIEJMT0NLICoqKioqCi0gKiBWZXJzaW9uOiBNUEwgMS4xL0dQTCAyLjAv
TEdQTCAyLjEKLSAqCi0gKiBUaGUgY29udGVudHMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRv
IHRoZSBNb3ppbGxhIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24KLSAqIDEuMSAodGhlICJMaWNlbnNl
Iik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aAot
ICogdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAot
ICogaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvCi0gKgotICogU29mdHdhcmUgZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywK
LSAqIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxp
ZWQuIFNlZSB0aGUgTGljZW5zZQotICogZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcmlnaHRzIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUKLSAqIExpY2Vuc2UuCi0gKgotICog
VGhlIE9yaWdpbmFsIENvZGUgaXMgbW96aWxsYS5vcmcgY29kZS4KLSAqCi0gKiBUaGUgSW5pdGlh
bCBEZXZlbG9wZXIgb2YgdGhlIE9yaWdpbmFsIENvZGUgaXMKLSAqIE5ldHNjYXBlIENvbW11bmlj
YXRpb25zIENvcnBvcmF0aW9uLgotICogUG9ydGlvbnMgY3JlYXRlZCBieSB0aGUgSW5pdGlhbCBE
ZXZlbG9wZXIgYXJlIENvcHlyaWdodCAoQykgMjAwMgotICogdGhlIEluaXRpYWwgRGV2ZWxvcGVy
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIENvbnRyaWJ1dG9yKHMpOgotICogIEJyaWFu
IFJ5bmVyIDxicnluZXJAYnJpYW5yeW5lci5jb20+ICAoT3JpZ2luYWwgQXV0aG9yKQotICogIFBp
ZXJyZSBDaGFuaWFsIDxwX2NoQHZlcml6b24ubmV0PgotICogIE1pY2hhZWwgVmVudG5vciA8bS52
ZW50bm9yQGdtYWlsLmNvbT4KLSAqICBBbHAgVG9rZXIgPGFscEBudWFudGkuY29tPgotICoKLSAq
IEFsdGVybmF0aXZlbHksIHRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5k
ZXIgdGhlIHRlcm1zIG9mCi0gKiBlaXRoZXIgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IFZlcnNpb24gMiBvciBsYXRlciAodGhlICJHUEwiKSwgb3IKLSAqIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyLjEgb3IgbGF0ZXIgKHRoZSAiTEdQTCIpLAot
ICogaW4gd2hpY2ggY2FzZSB0aGUgcHJvdmlzaW9ucyBvZiB0aGUgR1BMIG9yIHRoZSBMR1BMIGFy
ZSBhcHBsaWNhYmxlIGluc3RlYWQKLSAqIG9mIHRob3NlIGFib3ZlLiBJZiB5b3Ugd2lzaCB0byBh
bGxvdyB1c2Ugb2YgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSBvbmx5Ci0gKiB1bmRlciB0aGUg
dGVybXMgb2YgZWl0aGVyIHRoZSBHUEwgb3IgdGhlIExHUEwsIGFuZCBub3QgdG8gYWxsb3cgb3Ro
ZXJzIHRvCi0gKiB1c2UgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIE1QTCwgaW5kaWNhdGUgeW91cgotICogZGVjaXNpb24gYnkgZGVsZXRpbmcgdGhlIHBy
b3Zpc2lvbnMgYWJvdmUgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIHRoZSBub3RpY2UKLSAqIGFuZCBv
dGhlciBwcm92aXNpb25zIHJlcXVpcmVkIGJ5IHRoZSBHUEwgb3IgdGhlIExHUEwuIElmIHlvdSBk
byBub3QgZGVsZXRlCi0gKiB0aGUgcHJvdmlzaW9ucyBhYm92ZSwgYSByZWNpcGllbnQgbWF5IHVz
ZSB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxlIHVuZGVyCi0gKiB0aGUgdGVybXMgb2YgYW55IG9u
ZSBvZiB0aGUgTVBMLCB0aGUgR1BMIG9yIHRoZSBMR1BMLgotICoKLSAqICoqKioqIEVORCBMSUNF
TlNFIEJMT0NLICoqKioqICovCi0KLS8qCi0gKiBUaGlzIGZpbGUgY29udGFpbnMgcGFpbnRpbmcg
ZnVuY3Rpb25zIGZvciBlYWNoIG9mIHRoZSBndGsyIHdpZGdldHMuCi0gKiBBZGFwdGVkIGZyb20g
dGhlIGd0a2RyYXdpbmcuYywgYW5kIGd0aysyLjAgc291cmNlLgotICovCi0KLSNpZmRlZiBHVEtf
QVBJX1ZFUlNJT05fMgotCi0jdW5kZWYgR1RLX0RJU0FCTEVfREVQUkVDQVRFRAotI3VuZGVmIEdE
S19ESVNBQkxFX0RFUFJFQ0FURUQKLQotI2luY2x1ZGUgPGdkay9nZGtwcml2YXRlLmg+Ci0jaW5j
bHVkZSAiZ3RrZHJhd2luZy5oIgotI2luY2x1ZGUgIkd0a1ZlcnNpb25pbmcuaCIKLSNpbmNsdWRl
IDxtYXRoLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0KLSNkZWZpbmUgWFRISUNLTkVTUyhzdHls
ZSkgKHN0eWxlLT54dGhpY2tuZXNzKQotI2RlZmluZSBZVEhJQ0tORVNTKHN0eWxlKSAoc3R5bGUt
Pnl0aGlja25lc3MpCi0KLXN0YXRpYyBHdGtUaGVtZVBhcnRzICpnUGFydHMgPSBOVUxMOwotc3Rh
dGljIHN0eWxlX3Byb3BfdCBzdHlsZV9wcm9wX2Z1bmM7Ci1zdGF0aWMgZ2Jvb2xlYW4gaXNfaW5p
dGlhbGl6ZWQ7Ci0KLXZvaWQKLW1vel9ndGtfdXNlX3RoZW1lX3BhcnRzKEd0a1RoZW1lUGFydHMq
IHBhcnRzKQotewotICAgIGdQYXJ0cyA9IHBhcnRzOwotfQotCi0vKiBCZWNhdXNlIHdlIGhhdmUg
c3VjaCBhbiB1bmNvbnZlbnRpb25hbCB3YXkgb2YgZHJhd2luZyB3aWRnZXRzLCBzaWduYWwgdG8g
dGhlIEdUSyB0aGVtZSBlbmdpbmUKLSAgIHRoYXQgdGhleSBhcmUgZHJhd2luZyBmb3IgTW96aWxs
YSBpbnN0ZWFkIG9mIGEgY29udmVudGlvbmFsIEdUSyBhcHAgc28gdGhleSBjYW4gZG8gYW55IHNw
ZWNpZmljCi0gICB0aGluZ3MgdGhleSBtYXkgd2FudCB0byBkby4gKi8KLXN0YXRpYyB2b2lkCi1t
b3pfZ3RrX3NldF93aWRnZXRfbmFtZShHdGtXaWRnZXQqIHdpZGdldCkKLXsKLSAgICBndGtfd2lk
Z2V0X3NldF9uYW1lKHdpZGdldCwgIk1vemlsbGFHdGtXaWRnZXQiKTsKLX0KLQotZ2ludAotbW96
X2d0a19lbmFibGVfc3R5bGVfcHJvcHMoc3R5bGVfcHJvcF90IHN0eWxlR2V0UHJvcCkKLXsKLSAg
ICBzdHlsZV9wcm9wX2Z1bmMgPSBzdHlsZUdldFByb3A7Ci0gICAgcmV0dXJuIE1PWl9HVEtfU1VD
Q0VTUzsKLX0KLQotc3RhdGljIGdpbnQKLWVuc3VyZV93aW5kb3dfd2lkZ2V0KCkKLXsKLSAgICBp
ZiAoIWdQYXJ0cy0+cHJvdG9XaW5kb3cpIHsKLSAgICAgICAgZ1BhcnRzLT5wcm90b1dpbmRvdyA9
IGd0a193aW5kb3dfbmV3KEdUS19XSU5ET1dfUE9QVVApOwotCi0gICAgICAgIGlmIChnUGFydHMt
PmNvbG9ybWFwKQotICAgICAgICAgICAgZ3RrX3dpZGdldF9zZXRfY29sb3JtYXAoZ1BhcnRzLT5w
cm90b1dpbmRvdywgZ1BhcnRzLT5jb2xvcm1hcCk7Ci0KLSAgICAgICAgZ3RrX3dpZGdldF9yZWFs
aXplKGdQYXJ0cy0+cHJvdG9XaW5kb3cpOwotICAgICAgICBtb3pfZ3RrX3NldF93aWRnZXRfbmFt
ZShnUGFydHMtPnByb3RvV2luZG93KTsKLSAgICB9Ci0gICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VT
UzsKLX0KLQotc3RhdGljIGdpbnQKLXNldHVwX3dpZGdldF9wcm90b3R5cGUoR3RrV2lkZ2V0KiB3
aWRnZXQpCi17Ci0gICAgZW5zdXJlX3dpbmRvd193aWRnZXQoKTsKLSAgICBpZiAoIWdQYXJ0cy0+
cHJvdG9MYXlvdXQpIHsKLSAgICAgICAgZ1BhcnRzLT5wcm90b0xheW91dCA9IGd0a19maXhlZF9u
ZXcoKTsKLSAgICAgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUihnUGFydHMtPnBy
b3RvV2luZG93KSwgZ1BhcnRzLT5wcm90b0xheW91dCk7Ci0gICAgfQotCi0gICAgZ3RrX2NvbnRh
aW5lcl9hZGQoR1RLX0NPTlRBSU5FUihnUGFydHMtPnByb3RvTGF5b3V0KSwgd2lkZ2V0KTsKLSAg
ICBndGtfd2lkZ2V0X3JlYWxpemUod2lkZ2V0KTsKLSAgICBnX29iamVjdF9zZXRfZGF0YShHX09C
SkVDVCh3aWRnZXQpLCAidHJhbnNwYXJlbnQtYmctaGludCIsIEdJTlRfVE9fUE9JTlRFUihUUlVF
KSk7Ci0gICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQotc3RhdGljIGdpbnQKLWVuc3Vy
ZV9zY3JvbGxiYXJfd2lkZ2V0KCkKLXsKLSAgICBpZiAoIWdQYXJ0cy0+dmVydFNjcm9sbGJhcldp
ZGdldCkgewotICAgICAgICBnUGFydHMtPnZlcnRTY3JvbGxiYXJXaWRnZXQgPSBndGtfdnNjcm9s
bGJhcl9uZXcoTlVMTCk7Ci0gICAgICAgIHNldHVwX3dpZGdldF9wcm90b3R5cGUoZ1BhcnRzLT52
ZXJ0U2Nyb2xsYmFyV2lkZ2V0KTsKLSAgICB9Ci0gICAgaWYgKCFnUGFydHMtPmhvcml6U2Nyb2xs
YmFyV2lkZ2V0KSB7Ci0gICAgICAgIGdQYXJ0cy0+aG9yaXpTY3JvbGxiYXJXaWRnZXQgPSBndGtf
aHNjcm9sbGJhcl9uZXcoTlVMTCk7Ci0gICAgICAgIHNldHVwX3dpZGdldF9wcm90b3R5cGUoZ1Bh
cnRzLT5ob3JpelNjcm9sbGJhcldpZGdldCk7Ci0gICAgfQotICAgIHJldHVybiBNT1pfR1RLX1NV
Q0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50Ci1lbnN1cmVfc2Nyb2xsZWRfd2luZG93X3dpZGdldCgp
Ci17Ci0gICAgaWYgKCFnUGFydHMtPnNjcm9sbGVkV2luZG93V2lkZ2V0KSB7Ci0gICAgICAgIGdQ
YXJ0cy0+c2Nyb2xsZWRXaW5kb3dXaWRnZXQgPSBndGtfc2Nyb2xsZWRfd2luZG93X25ldyhOVUxM
LCBOVUxMKTsKLSAgICAgICAgc2V0dXBfd2lkZ2V0X3Byb3RvdHlwZShnUGFydHMtPnNjcm9sbGVk
V2luZG93V2lkZ2V0KTsKLSAgICB9Ci0gICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQot
c3RhdGljIEd0a1N0YXRlVHlwZQotQ29udmVydEd0a1N0YXRlKEd0a1dpZGdldFN0YXRlKiBzdGF0
ZSkKLXsKLSAgICBpZiAoc3RhdGUtPmRpc2FibGVkKQotICAgICAgICByZXR1cm4gR1RLX1NUQVRF
X0lOU0VOU0lUSVZFOwotICAgIGVsc2UgaWYgKHN0YXRlLT5kZXByZXNzZWQpCi0gICAgICAgIHJl
dHVybiAoc3RhdGUtPmluSG92ZXIgPyBHVEtfU1RBVEVfUFJFTElHSFQgOiBHVEtfU1RBVEVfQUNU
SVZFKTsKLSAgICBlbHNlIGlmIChzdGF0ZS0+aW5Ib3ZlcikKLSAgICAgICAgcmV0dXJuIChzdGF0
ZS0+YWN0aXZlID8gR1RLX1NUQVRFX0FDVElWRSA6IEdUS19TVEFURV9QUkVMSUdIVCk7Ci0gICAg
ZWxzZQotICAgICAgICByZXR1cm4gR1RLX1NUQVRFX05PUk1BTDsKLX0KLQotc3RhdGljIGdpbnQK
LVRTT2Zmc2V0U3R5bGVHQ0FycmF5KEdka0dDKiogZ2NzLCBnaW50IHhvcmlnaW4sIGdpbnQgeW9y
aWdpbikKLXsKLSAgICBpbnQgaTsKLSAgICAvKiB0aGVyZSBhcmUgNSBnYydzIGluIGVhY2ggYXJy
YXksIGZvciBlYWNoIG9mIHRoZSB3aWRnZXQgc3RhdGVzICovCi0gICAgZm9yIChpID0gMDsgaSA8
IDU7ICsraSkKLSAgICAgICAgZ2RrX2djX3NldF90c19vcmlnaW4oZ2NzW2ldLCB4b3JpZ2luLCB5
b3JpZ2luKTsKLSAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwotfQotCi1zdGF0aWMgZ2ludAot
VFNPZmZzZXRTdHlsZUdDcyhHdGtTdHlsZSogc3R5bGUsIGdpbnQgeG9yaWdpbiwgZ2ludCB5b3Jp
Z2luKQotewotICAgIFRTT2Zmc2V0U3R5bGVHQ0FycmF5KHN0eWxlLT5mZ19nYywgeG9yaWdpbiwg
eW9yaWdpbik7Ci0gICAgVFNPZmZzZXRTdHlsZUdDQXJyYXkoc3R5bGUtPmJnX2djLCB4b3JpZ2lu
LCB5b3JpZ2luKTsKLSAgICBUU09mZnNldFN0eWxlR0NBcnJheShzdHlsZS0+bGlnaHRfZ2MsIHhv
cmlnaW4sIHlvcmlnaW4pOwotICAgIFRTT2Zmc2V0U3R5bGVHQ0FycmF5KHN0eWxlLT5kYXJrX2dj
LCB4b3JpZ2luLCB5b3JpZ2luKTsKLSAgICBUU09mZnNldFN0eWxlR0NBcnJheShzdHlsZS0+bWlk
X2djLCB4b3JpZ2luLCB5b3JpZ2luKTsKLSAgICBUU09mZnNldFN0eWxlR0NBcnJheShzdHlsZS0+
dGV4dF9nYywgeG9yaWdpbiwgeW9yaWdpbik7Ci0gICAgVFNPZmZzZXRTdHlsZUdDQXJyYXkoc3R5
bGUtPmJhc2VfZ2MsIHhvcmlnaW4sIHlvcmlnaW4pOwotICAgIGdka19nY19zZXRfdHNfb3JpZ2lu
KHN0eWxlLT5ibGFja19nYywgeG9yaWdpbiwgeW9yaWdpbik7Ci0gICAgZ2RrX2djX3NldF90c19v
cmlnaW4oc3R5bGUtPndoaXRlX2djLCB4b3JpZ2luLCB5b3JpZ2luKTsKLSAgICByZXR1cm4gTU9a
X0dUS19TVUNDRVNTOwotfQotCi1naW50Ci1tb3pfZ3RrX2luaXQoKQotewotICAgIEd0a1dpZGdl
dENsYXNzICplbnRyeV9jbGFzczsKLQotICAgIGlzX2luaXRpYWxpemVkID0gVFJVRTsKLQotICAg
IC8qIEFkZCBzdHlsZSBwcm9wZXJ0eSB0byBHdGtFbnRyeS4KLSAgICAgKiBBZGRpbmcgdGhlIHN0
eWxlIHByb3BlcnR5IHRvIHRoZSBub3JtYWwgR3RrRW50cnkgY2xhc3MgbWVhbnMgdGhhdCBpdAot
ICAgICAqIHdpbGwgd29yayB3aXRob3V0IGlzc3VlcyBpbnNpZGUgR3RrQ29tYm9Cb3ggYW5kIGZv
ciBTcGluYnV0dG9ucy4gKi8KLSAgICBlbnRyeV9jbGFzcyA9IGdfdHlwZV9jbGFzc19yZWYoR1RL
X1RZUEVfRU5UUlkpOwotICAgIGd0a193aWRnZXRfY2xhc3NfaW5zdGFsbF9zdHlsZV9wcm9wZXJ0
eShlbnRyeV9jbGFzcywKLSAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImhvbm9ycy10cmFu
c3BhcmVudC1iZy1oaW50IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRyYW5zcGFy
ZW50IEJHIGVuYWJsaW5nIGZsYWciLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSWYg
VFJVRSwgdGhlIHRoZW1lIGlzIGFibGUgdG8gZHJhdyB0aGUgR3RrRW50cnkgb24gbm9uLXByZWZp
bGxlZCBiYWNrZ3JvdW5kLiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSkpOwotCi0gICAg
cmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQotc3RhdGljIGdpbnQKLW1vel9ndGtfc2Nyb2xs
ZWRfd2luZG93X3BhaW50KEdka0RyYXdhYmxlKiBkcmF3YWJsZSwgR2RrUmVjdGFuZ2xlKiByZWN0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2RrUmVjdGFuZ2xlKiBjbGlwcmVjdCwg
R3RrV2lkZ2V0U3RhdGUqIHN0YXRlKQotewotICAgIEd0a1N0eWxlKiBzdHlsZTsKLSAgICBHdGtB
bGxvY2F0aW9uIGFsbG9jYXRpb247Ci0gICAgR3RrV2lkZ2V0KiB3aWRnZXQ7Ci0KLSAgICBlbnN1
cmVfc2Nyb2xsZWRfd2luZG93X3dpZGdldCgpOwotICAgIHdpZGdldCA9IGdQYXJ0cy0+c2Nyb2xs
ZWRXaW5kb3dXaWRnZXQ7Ci0KLSAgICBndGtfd2lkZ2V0X2dldF9hbGxvY2F0aW9uKHdpZGdldCwg
JmFsbG9jYXRpb24pOwotICAgIGFsbG9jYXRpb24ueCA9IHJlY3QtPng7Ci0gICAgYWxsb2NhdGlv
bi55ID0gcmVjdC0+eTsKLSAgICBhbGxvY2F0aW9uLndpZHRoID0gcmVjdC0+d2lkdGg7Ci0gICAg
YWxsb2NhdGlvbi5oZWlnaHQgPSByZWN0LT5oZWlnaHQ7Ci0gICAgZ3RrX3dpZGdldF9zZXRfYWxs
b2NhdGlvbih3aWRnZXQsICZhbGxvY2F0aW9uKTsKLQotICAgIHN0eWxlID0gZ3RrX3dpZGdldF9n
ZXRfc3R5bGUod2lkZ2V0KTsKLSAgICBUU09mZnNldFN0eWxlR0NzKHN0eWxlLCByZWN0LT54IC0g
MSwgcmVjdC0+eSAtIDEpOwotICAgIGd0a19wYWludF9zaGFkb3coc3R5bGUsIGRyYXdhYmxlLCBH
VEtfU1RBVEVfTk9STUFMLCBHVEtfU0hBRE9XX0lOLAotICAgICAgICAgICAgICAgICAgICAgY2xp
cHJlY3QsIGdQYXJ0cy0+c2Nyb2xsZWRXaW5kb3dXaWRnZXQsICJzY3JvbGxlZF93aW5kb3ciLAot
ICAgICAgICAgICAgICAgICAgICAgcmVjdC0+eCwgcmVjdC0+eSwgcmVjdC0+d2lkdGgsIHJlY3Qt
PmhlaWdodCk7Ci0gICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQotc3RhdGljIGdpbnQK
LW1vel9ndGtfc2Nyb2xsYmFyX2J1dHRvbl9wYWludChHZGtEcmF3YWJsZSogZHJhd2FibGUsIEdk
a1JlY3RhbmdsZSogcmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGtSZWN0
YW5nbGUqIGNsaXByZWN0LCBHdGtXaWRnZXRTdGF0ZSogc3RhdGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR3RrU2Nyb2xsYmFyQnV0dG9uRmxhZ3MgZmxhZ3MsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR3RrVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCi17Ci0gICAg
R3RrU3RhdGVUeXBlIHN0YXRlX3R5cGUgPSBDb252ZXJ0R3RrU3RhdGUoc3RhdGUpOwotICAgIEd0
a1NoYWRvd1R5cGUgc2hhZG93X3R5cGUgPSAoc3RhdGUtPmFjdGl2ZSkgPwotICAgICAgICBHVEtf
U0hBRE9XX0lOIDogR1RLX1NIQURPV19PVVQ7Ci0gICAgR2RrUmVjdGFuZ2xlIGFycm93X3JlY3Q7
Ci0gICAgR3RrU3R5bGUqIHN0eWxlOwotICAgIEd0a1dpZGdldCAqc2Nyb2xsYmFyOwotICAgIEd0
a0FsbG9jYXRpb24gYWxsb2NhdGlvbjsKLSAgICBHdGtBcnJvd1R5cGUgYXJyb3dfdHlwZTsKLSAg
ICBnaW50IGFycm93X2Rpc3BsYWNlbWVudF94LCBhcnJvd19kaXNwbGFjZW1lbnRfeTsKLSAgICBj
b25zdCBjaGFyKiBkZXRhaWwgPSAoZmxhZ3MgJiBNT1pfR1RLX1NURVBQRVJfVkVSVElDQUwpID8K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2c2Nyb2xsYmFyIiA6ICJoc2Nyb2xsYmFyIjsK
LQotICAgIGVuc3VyZV9zY3JvbGxiYXJfd2lkZ2V0KCk7Ci0KLSAgICBpZiAoZmxhZ3MgJiBNT1pf
R1RLX1NURVBQRVJfVkVSVElDQUwpCi0gICAgICAgIHNjcm9sbGJhciA9IGdQYXJ0cy0+dmVydFNj
cm9sbGJhcldpZGdldDsKLSAgICBlbHNlCi0gICAgICAgIHNjcm9sbGJhciA9IGdQYXJ0cy0+aG9y
aXpTY3JvbGxiYXJXaWRnZXQ7Ci0KLSAgICBndGtfd2lkZ2V0X3NldF9kaXJlY3Rpb24oc2Nyb2xs
YmFyLCBkaXJlY3Rpb24pOwotCi0gICAgLyogU29tZSB0aGVtZSBlbmdpbmVzIChpLmUuLCBDbGVh
ckxvb2tzKSBjaGVjayB0aGUgc2Nyb2xsYmFyJ3MgYWxsb2NhdGlvbgotICAgICAgIHRvIGRldGVy
bWluZSB3aGVyZSBpdCBzaG91bGQgcGFpbnQgcm91bmRlZCBjb3JuZXJzIG9uIHRoZSBidXR0b25z
LgotICAgICAgIFdlIG5lZWQgdG8gdHJpY2sgdGhlbSBpbnRvIGRyYXdpbmcgdGhlIGJ1dHRvbnMg
dGhlIHdheSB3ZSB3YW50IHRoZW0uICovCi0KLSAgICBndGtfd2lkZ2V0X2dldF9hbGxvY2F0aW9u
KHNjcm9sbGJhciwgJmFsbG9jYXRpb24pOwotICAgIGFsbG9jYXRpb24ueCA9IHJlY3QtPng7Ci0g
ICAgYWxsb2NhdGlvbi55ID0gcmVjdC0+eTsKLSAgICBhbGxvY2F0aW9uLndpZHRoID0gcmVjdC0+
d2lkdGg7Ci0gICAgYWxsb2NhdGlvbi5oZWlnaHQgPSByZWN0LT5oZWlnaHQ7Ci0KLSAgICBpZiAo
ZmxhZ3MgJiBNT1pfR1RLX1NURVBQRVJfVkVSVElDQUwpIHsKLSAgICAgICAgYWxsb2NhdGlvbi5o
ZWlnaHQgKj0gNTsKLSAgICAgICAgaWYgKGZsYWdzICYgTU9aX0dUS19TVEVQUEVSX0RPV04pIHsK
LSAgICAgICAgICAgIGFycm93X3R5cGUgPSBHVEtfQVJST1dfRE9XTjsKLSAgICAgICAgICAgIGlm
IChmbGFncyAmIE1PWl9HVEtfU1RFUFBFUl9CT1RUT00pCi0gICAgICAgICAgICAgICAgYWxsb2Nh
dGlvbi55IC09IDQgKiByZWN0LT5oZWlnaHQ7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgYWxsb2NhdGlvbi55IC09IHJlY3QtPmhlaWdodDsKLQotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgYXJyb3dfdHlwZSA9IEdUS19BUlJPV19VUDsKLSAgICAgICAgICAgIGlmIChm
bGFncyAmIE1PWl9HVEtfU1RFUFBFUl9CT1RUT00pCi0gICAgICAgICAgICAgICAgYWxsb2NhdGlv
bi55IC09IDMgKiByZWN0LT5oZWlnaHQ7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAg
ICBhbGxvY2F0aW9uLndpZHRoICo9IDU7Ci0gICAgICAgIGlmIChmbGFncyAmIE1PWl9HVEtfU1RF
UFBFUl9ET1dOKSB7Ci0gICAgICAgICAgICBhcnJvd190eXBlID0gR1RLX0FSUk9XX1JJR0hUOwot
ICAgICAgICAgICAgaWYgKGZsYWdzICYgTU9aX0dUS19TVEVQUEVSX0JPVFRPTSkKLSAgICAgICAg
ICAgICAgICBhbGxvY2F0aW9uLnggLT0gNCAqIHJlY3QtPndpZHRoOwotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIGFsbG9jYXRpb24ueCAtPSByZWN0LT53aWR0aDsKLSAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIGFycm93X3R5cGUgPSBHVEtfQVJST1dfTEVGVDsKLSAgICAg
ICAgICAgIGlmIChmbGFncyAmIE1PWl9HVEtfU1RFUFBFUl9CT1RUT00pCi0gICAgICAgICAgICAg
ICAgYWxsb2NhdGlvbi54IC09IDMgKiByZWN0LT53aWR0aDsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIGd0a193aWRnZXRfc2V0X2FsbG9jYXRpb24oc2Nyb2xsYmFyLCAmYWxsb2NhdGlvbik7Ci0g
ICAgc3R5bGUgPSBndGtfd2lkZ2V0X2dldF9zdHlsZShzY3JvbGxiYXIpOwotCi0gICAgVFNPZmZz
ZXRTdHlsZUdDcyhzdHlsZSwgcmVjdC0+eCwgcmVjdC0+eSk7Ci0KLSAgICBndGtfcGFpbnRfYm94
KHN0eWxlLCBkcmF3YWJsZSwgc3RhdGVfdHlwZSwgc2hhZG93X3R5cGUsIGNsaXByZWN0LAotICAg
ICAgICAgICAgICAgICAgc2Nyb2xsYmFyLCBkZXRhaWwsIHJlY3QtPngsIHJlY3QtPnksCi0gICAg
ICAgICAgICAgICAgICByZWN0LT53aWR0aCwgcmVjdC0+aGVpZ2h0KTsKLQotICAgIGFycm93X3Jl
Y3Qud2lkdGggPSByZWN0LT53aWR0aCAvIDI7Ci0gICAgYXJyb3dfcmVjdC5oZWlnaHQgPSByZWN0
LT5oZWlnaHQgLyAyOwotICAgIGFycm93X3JlY3QueCA9IHJlY3QtPnggKyAocmVjdC0+d2lkdGgg
LSBhcnJvd19yZWN0LndpZHRoKSAvIDI7Ci0gICAgYXJyb3dfcmVjdC55ID0gcmVjdC0+eSArIChy
ZWN0LT5oZWlnaHQgLSBhcnJvd19yZWN0LmhlaWdodCkgLyAyOwotCi0gICAgaWYgKHN0YXRlX3R5
cGUgPT0gR1RLX1NUQVRFX0FDVElWRSkgewotICAgICAgICBndGtfd2lkZ2V0X3N0eWxlX2dldChz
Y3JvbGxiYXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcnJvdy1kaXNwbGFjZW1l
bnQteCIsICZhcnJvd19kaXNwbGFjZW1lbnRfeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImFycm93LWRpc3BsYWNlbWVudC15IiwgJmFycm93X2Rpc3BsYWNlbWVudF95LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLQotICAgICAgICBhcnJvd19yZWN0LnggKz0g
YXJyb3dfZGlzcGxhY2VtZW50X3g7Ci0gICAgICAgIGFycm93X3JlY3QueSArPSBhcnJvd19kaXNw
bGFjZW1lbnRfeTsKLSAgICB9Ci0KLSAgICBndGtfcGFpbnRfYXJyb3coc3R5bGUsIGRyYXdhYmxl
LCBzdGF0ZV90eXBlLCBzaGFkb3dfdHlwZSwgY2xpcHJlY3QsCi0gICAgICAgICAgICAgICAgICAg
IHNjcm9sbGJhciwgZGV0YWlsLCBhcnJvd190eXBlLCBUUlVFLCBhcnJvd19yZWN0LngsCi0gICAg
ICAgICAgICAgICAgICAgIGFycm93X3JlY3QueSwgYXJyb3dfcmVjdC53aWR0aCwgYXJyb3dfcmVj
dC5oZWlnaHQpOwotCi0gICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQotc3RhdGljIGdp
bnQKLW1vel9ndGtfc2Nyb2xsYmFyX3Ryb3VnaF9wYWludChHdGtUaGVtZVdpZGdldFR5cGUgd2lk
Z2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdka0RyYXdhYmxlKiBkcmF3YWJs
ZSwgR2RrUmVjdGFuZ2xlKiByZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdk
a1JlY3RhbmdsZSogY2xpcHJlY3QsIEd0a1dpZGdldFN0YXRlKiBzdGF0ZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHdGtUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikKLXsKLSAgICBH
dGtTdHlsZSogc3R5bGU7Ci0gICAgR3RrU2Nyb2xsYmFyICpzY3JvbGxiYXI7Ci0KLSAgICBlbnN1
cmVfc2Nyb2xsYmFyX3dpZGdldCgpOwotCi0gICAgaWYgKHdpZGdldCA9PSAgTU9aX0dUS19TQ1JP
TExCQVJfVFJBQ0tfSE9SSVpPTlRBTCkKLSAgICAgICAgc2Nyb2xsYmFyID0gR1RLX1NDUk9MTEJB
UihnUGFydHMtPmhvcml6U2Nyb2xsYmFyV2lkZ2V0KTsKLSAgICBlbHNlCi0gICAgICAgIHNjcm9s
bGJhciA9IEdUS19TQ1JPTExCQVIoZ1BhcnRzLT52ZXJ0U2Nyb2xsYmFyV2lkZ2V0KTsKLQotICAg
IGd0a193aWRnZXRfc2V0X2RpcmVjdGlvbihHVEtfV0lER0VUKHNjcm9sbGJhciksIGRpcmVjdGlv
bik7Ci0KLSAgICBzdHlsZSA9IGd0a193aWRnZXRfZ2V0X3N0eWxlKEdUS19XSURHRVQoc2Nyb2xs
YmFyKSk7Ci0KLSAgICBUU09mZnNldFN0eWxlR0NzKHN0eWxlLCByZWN0LT54LCByZWN0LT55KTsK
LSAgICBndGtfcGFpbnRfYm94KHN0eWxlLCBkcmF3YWJsZSwgR1RLX1NUQVRFX0FDVElWRSwgR1RL
X1NIQURPV19JTiwgY2xpcHJlY3QsCi0gICAgICAgICAgICAgICAgICBHVEtfV0lER0VUKHNjcm9s
bGJhciksICJ0cm91Z2giLCByZWN0LT54LCByZWN0LT55LAotICAgICAgICAgICAgICAgICAgcmVj
dC0+d2lkdGgsIHJlY3QtPmhlaWdodCk7Ci0KLSAgICBpZiAoc3RhdGUtPmZvY3VzZWQpIHsKLSAg
ICAgICAgZ3RrX3BhaW50X2ZvY3VzKHN0eWxlLCBkcmF3YWJsZSwgR1RLX1NUQVRFX0FDVElWRSwg
Y2xpcHJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBHVEtfV0lER0VUKHNjcm9sbGJhciks
ICJ0cm91Z2giLAotICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC0+eCwgcmVjdC0+eSwgcmVj
dC0+d2lkdGgsIHJlY3QtPmhlaWdodCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIE1PWl9HVEtfU1VD
Q0VTUzsKLX0KLQotc3RhdGljIGdpbnQKLW1vel9ndGtfc2Nyb2xsYmFyX3RodW1iX3BhaW50KEd0
a1RoZW1lV2lkZ2V0VHlwZSB3aWRnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
ZGtEcmF3YWJsZSogZHJhd2FibGUsIEdka1JlY3RhbmdsZSogcmVjdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdka1JlY3RhbmdsZSogY2xpcHJlY3QsIEd0a1dpZGdldFN0YXRlKiBz
dGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEd0a1RleHREaXJlY3Rpb24gZGly
ZWN0aW9uKQotewotICAgIEd0a1N0YXRlVHlwZSBzdGF0ZV90eXBlID0gKHN0YXRlLT5pbkhvdmVy
IHx8IHN0YXRlLT5hY3RpdmUpID8KLSAgICAgICAgR1RLX1NUQVRFX1BSRUxJR0hUIDogR1RLX1NU
QVRFX05PUk1BTDsKLSAgICBHdGtTaGFkb3dUeXBlIHNoYWRvd190eXBlID0gR1RLX1NIQURPV19P
VVQ7Ci0gICAgR3RrU3R5bGUqIHN0eWxlOwotICAgIEd0a1Njcm9sbGJhciAqc2Nyb2xsYmFyOwot
ICAgIEd0a0FkanVzdG1lbnQgKmFkajsKLSAgICBnYm9vbGVhbiBhY3RpdmF0ZV9zbGlkZXI7Ci0K
LSAgICBlbnN1cmVfc2Nyb2xsYmFyX3dpZGdldCgpOwotCi0gICAgaWYgKHdpZGdldCA9PSBNT1pf
R1RLX1NDUk9MTEJBUl9USFVNQl9IT1JJWk9OVEFMKQotICAgICAgICBzY3JvbGxiYXIgPSBHVEtf
U0NST0xMQkFSKGdQYXJ0cy0+aG9yaXpTY3JvbGxiYXJXaWRnZXQpOwotICAgIGVsc2UKLSAgICAg
ICAgc2Nyb2xsYmFyID0gR1RLX1NDUk9MTEJBUihnUGFydHMtPnZlcnRTY3JvbGxiYXJXaWRnZXQp
OwotCi0gICAgZ3RrX3dpZGdldF9zZXRfZGlyZWN0aW9uKEdUS19XSURHRVQoc2Nyb2xsYmFyKSwg
ZGlyZWN0aW9uKTsKLQotICAgIC8qIE1ha2Ugc3VyZSB0byBzZXQgdGhlIHNjcm9sbGJhciByYW5n
ZSBiZWZvcmUgcGFpbnRpbmcgc28gdGhhdAotICAgICAgIGV2ZXJ5dGhpbmcgaXMgZHJhd24gcHJv
cGVybHkuICBBdCBsZWFzdCB0aGUgYmx1ZWN1cnZlIChhbmQKLSAgICAgICBtYXliZSBvdGhlcikg
dGhlbWVzIGRvbid0IGRyYXcgdGhlIHRvcCBvciBib3R0b20gYmxhY2sgbGluZQotICAgICAgIHN1
cnJvdW5kaW5nIHRoZSBzY3JvbGxiYXIgaWYgdGhlIHRoZW1lIHRoaW5rcyB0aGF0IGl0J3MgYnV0
dGVkCi0gICAgICAgdXAgYWdhaW5zdCB0aGUgc2Nyb2xsYmFyIGFycm93cy4gIE5vdGUgdGhlIGlu
Y3JlYXNlcyBvZiB0aGUKLSAgICAgICBjbGlwIHJlY3QgYmVsb3cuICovCi0gICAgLyogQ2hhbmdp
bmcgdGhlIGNsaXByZWN0IGlzIHByZXR0eSBib2d1cy4gVGhpcyBsZXRzIHRoZW1lcyBkcmF3Ci0g
ICAgICAgb3V0c2lkZSB0aGUgZnJhbWUsIHdoaWNoIG1lYW5zIHdlIGRvbid0IGludmFsaWRhdGUg
dGhlbQotICAgICAgIGNvcnJlY3RseS4gU2VlIGJ1ZyAyOTc1MDguIEJ1dCBzb21lIHRoZW1lcyBk
byBzZWVtIHRvIG5lZWQKLSAgICAgICBpdC4gU28gd2UgbW9kaWZ5IHRoZSBmcmFtZSdzIG92ZXJm
bG93IGFyZWEgdG8gYWNjb3VudCBmb3Igd2hhdAotICAgICAgIHdlJ3JlIGRvaW5nIGhlcmU7IHNl
ZSBuc05hdGl2ZVRoZW1lR1RLOjpHZXRXaWRnZXRPdmVyZmxvdy4gKi8KLSAgICBhZGogPSBndGtf
cmFuZ2VfZ2V0X2FkanVzdG1lbnQoR1RLX1JBTkdFKHNjcm9sbGJhcikpOwotCi0gICAgaWYgKHdp
ZGdldCA9PSBNT1pfR1RLX1NDUk9MTEJBUl9USFVNQl9IT1JJWk9OVEFMKSB7Ci0gICAgICAgIGNs
aXByZWN0LT54IC09IDE7Ci0gICAgICAgIGNsaXByZWN0LT53aWR0aCArPSAyOwotICAgICAgICBn
dGtfYWRqdXN0bWVudF9zZXRfcGFnZV9zaXplKGFkaiwgcmVjdC0+d2lkdGgpOwotICAgIH0KLSAg
ICBlbHNlIHsKLSAgICAgICAgY2xpcHJlY3QtPnkgLT0gMTsKLSAgICAgICAgY2xpcHJlY3QtPmhl
aWdodCArPSAyOwotICAgICAgICBndGtfYWRqdXN0bWVudF9zZXRfcGFnZV9zaXplKGFkaiwgcmVj
dC0+aGVpZ2h0KTsKLSAgICB9Ci0KLSNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAxNCwgMCkKLSAg
ICBndGtfYWRqdXN0bWVudF9jb25maWd1cmUoYWRqLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGF0ZS0+Y3VycG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+bWF4cG9zLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBndGtfYWRqdXN0bWVudF9nZXRfc3RlcF9pbmNyZW1lbnQoYWRqKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3RrX2FkanVzdG1lbnRfZ2V0X3BhZ2VfaW5jcmVt
ZW50KGFkaiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd0a19hZGp1c3RtZW50X2dl
dF9wYWdlX3NpemUoYWRqKSk7Ci0jZWxzZQotICAgIGFkai0+bG93ZXIgPSAwOwotICAgIGFkai0+
dmFsdWUgPSBzdGF0ZS0+Y3VycG9zOwotICAgIGFkai0+dXBwZXIgPSBzdGF0ZS0+bWF4cG9zOwot
ICAgIGd0a19hZGp1c3RtZW50X2NoYW5nZWQoYWRqKTsKLSNlbmRpZgotCi0gICAgc3R5bGUgPSBn
dGtfd2lkZ2V0X2dldF9zdHlsZShHVEtfV0lER0VUKHNjcm9sbGJhcikpOwotICAgIAotICAgIGd0
a193aWRnZXRfc3R5bGVfZ2V0KEdUS19XSURHRVQoc2Nyb2xsYmFyKSwgImFjdGl2YXRlLXNsaWRl
ciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJmFjdGl2YXRlX3NsaWRlciwgTlVMTCk7Ci0g
ICAgCi0gICAgaWYgKGFjdGl2YXRlX3NsaWRlciAmJiBzdGF0ZS0+YWN0aXZlKSB7Ci0gICAgICAg
IHNoYWRvd190eXBlID0gR1RLX1NIQURPV19JTjsKLSAgICAgICAgc3RhdGVfdHlwZSA9IEdUS19T
VEFURV9BQ1RJVkU7Ci0gICAgfQotCi0gICAgVFNPZmZzZXRTdHlsZUdDcyhzdHlsZSwgcmVjdC0+
eCwgcmVjdC0+eSk7Ci0KLSAgICBndGtfcGFpbnRfc2xpZGVyKHN0eWxlLCBkcmF3YWJsZSwgc3Rh
dGVfdHlwZSwgc2hhZG93X3R5cGUsIGNsaXByZWN0LAotICAgICAgICAgICAgICAgICAgICAgR1RL
X1dJREdFVChzY3JvbGxiYXIpLCAic2xpZGVyIiwgcmVjdC0+eCwgcmVjdC0+eSwKLSAgICAgICAg
ICAgICAgICAgICAgIHJlY3QtPndpZHRoLCAgcmVjdC0+aGVpZ2h0LAotICAgICAgICAgICAgICAg
ICAgICAgKHdpZGdldCA9PSBNT1pfR1RLX1NDUk9MTEJBUl9USFVNQl9IT1JJWk9OVEFMKSA/Ci0g
ICAgICAgICAgICAgICAgICAgICBHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCA6IEdUS19PUklF
TlRBVElPTl9WRVJUSUNBTCk7Ci0KLSAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwotfQotCi1n
aW50Ci1tb3pfZ3RrX2dldF93aWRnZXRfYm9yZGVyKEd0a1RoZW1lV2lkZ2V0VHlwZSB3aWRnZXQs
IGdpbnQqIGxlZnQsIGdpbnQqIHRvcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCog
cmlnaHQsIGdpbnQqIGJvdHRvbSwgR3RrVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGluaHRtbCkKLXsKLSAgICBHdGtXaWRnZXQqIHc7
Ci0gICAgR3RrU3R5bGUgKnN0eWxlOwotCi0gICAgc3dpdGNoICh3aWRnZXQpIHsKLSAgICAvKiBU
aGVzZSB3aWRnZXRzIGhhdmUgbm8gYm9yZGVycywgc2luY2UgdGhleSBhcmUgbm90IGNvbnRhaW5l
cnMuICovCi0gICAgY2FzZSBNT1pfR1RLX1NDUk9MTEJBUl9CVVRUT046Ci0gICAgY2FzZSBNT1pf
R1RLX1NDUk9MTEJBUl9UUkFDS19IT1JJWk9OVEFMOgotICAgIGNhc2UgTU9aX0dUS19TQ1JPTExC
QVJfVFJBQ0tfVkVSVElDQUw6Ci0gICAgY2FzZSBNT1pfR1RLX1NDUk9MTEJBUl9USFVNQl9IT1JJ
Wk9OVEFMOgotICAgIGNhc2UgTU9aX0dUS19TQ1JPTExCQVJfVEhVTUJfVkVSVElDQUw6Ci0gICAg
ICAgICpsZWZ0ID0gKnRvcCA9ICpyaWdodCA9ICpib3R0b20gPSAwOwotICAgICAgICByZXR1cm4g
TU9aX0dUS19TVUNDRVNTOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGdfd2FybmluZygiVW5zdXBw
b3J0ZWQgd2lkZ2V0IHR5cGU6ICVkIiwgd2lkZ2V0KTsKLSAgICAgICAgcmV0dXJuIE1PWl9HVEtf
VU5LTk9XTl9XSURHRVQ7Ci0gICAgfQotCi0gICAgc3R5bGUgPSBndGtfd2lkZ2V0X2dldF9zdHls
ZSh3KTsKLSAgICAqcmlnaHQgPSAqbGVmdCA9IFhUSElDS05FU1Moc3R5bGUpOwotICAgICpib3R0
b20gPSAqdG9wID0gWVRISUNLTkVTUyhzdHlsZSk7Ci0KLSAgICByZXR1cm4gTU9aX0dUS19TVUND
RVNTOwotfQotCi1naW50Ci1tb3pfZ3RrX2dldF9zY3JvbGxiYXJfbWV0cmljcyhNb3pHdGtTY3Jv
bGxiYXJNZXRyaWNzICptZXRyaWNzKQotewotICAgIGVuc3VyZV9zY3JvbGxiYXJfd2lkZ2V0KCk7
Ci0KLSAgICBndGtfd2lkZ2V0X3N0eWxlX2dldCAoZ1BhcnRzLT5ob3JpelNjcm9sbGJhcldpZGdl
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInNsaWRlcl93aWR0aCIsICZtZXRyaWNzLT5z
bGlkZXJfd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJ0cm91Z2hfYm9yZGVyIiwg
Jm1ldHJpY3MtPnRyb3VnaF9ib3JkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJzdGVw
cGVyX3NpemUiLCAmbWV0cmljcy0+c3RlcHBlcl9zaXplLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAic3RlcHBlcl9zcGFjaW5nIiwgJm1ldHJpY3MtPnN0ZXBwZXJfc3BhY2luZywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgInRyb3VnaF91bmRlcl9zdGVwcGVycyIsICZtZXRyaWNzLT50
cm91Z2hfdW5kZXJfc3RlcHBlcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNfc2Vj
b25kYXJ5X2ZvcndhcmRfc3RlcHBlciIsICZtZXRyaWNzLT5oYXNfc2Vjb25kYXJ5X2ZvcndhcmRf
c3RlcHBlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc19zZWNvbmRhcnlfYmFja3dh
cmRfc3RlcHBlciIsICZtZXRyaWNzLT5oYXNfc2Vjb25kYXJ5X2JhY2t3YXJkX3N0ZXBwZXIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotCi0gICAgbWV0cmljcy0+bWluX3NsaWRl
cl9zaXplID0gZ3RrX3JhbmdlX2dldF9taW5fc2xpZGVyX3NpemUoR1RLX1JBTkdFKGdQYXJ0cy0+
aG9yaXpTY3JvbGxiYXJXaWRnZXQpKTsKLQotICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19
Ci0KLWdpbnQKLW1vel9ndGtfd2lkZ2V0X3BhaW50KEd0a1RoZW1lV2lkZ2V0VHlwZSB3aWRnZXQs
IEdka0RyYXdhYmxlKiBkcmF3YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgIEdka1JlY3Rhbmds
ZSogcmVjdCwgR2RrUmVjdGFuZ2xlKiBjbGlwcmVjdCwKLSAgICAgICAgICAgICAgICAgICAgIEd0
a1dpZGdldFN0YXRlKiBzdGF0ZSwgZ2ludCBmbGFncywKLSAgICAgICAgICAgICAgICAgICAgIEd0
a1RleHREaXJlY3Rpb24gZGlyZWN0aW9uKQotewotICAgIHN3aXRjaCAod2lkZ2V0KSB7Ci0gICAg
Y2FzZSBNT1pfR1RLX1NDUk9MTEJBUl9CVVRUT046Ci0gICAgICAgIHJldHVybiBtb3pfZ3RrX3Nj
cm9sbGJhcl9idXR0b25fcGFpbnQoZHJhd2FibGUsIHJlY3QsIGNsaXByZWN0LCBzdGF0ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoR3RrU2Nyb2xsYmFy
QnV0dG9uRmxhZ3MpIGZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRpcmVjdGlvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTU9aX0dUS19T
Q1JPTExCQVJfVFJBQ0tfSE9SSVpPTlRBTDoKLSAgICBjYXNlIE1PWl9HVEtfU0NST0xMQkFSX1RS
QUNLX1ZFUlRJQ0FMOgotICAgICAgICByZXR1cm4gbW96X2d0a19zY3JvbGxiYXJfdHJvdWdoX3Bh
aW50KHdpZGdldCwgZHJhd2FibGUsIHJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2xpcHJlY3QsIHN0YXRlLCBkaXJlY3Rpb24pOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIE1PWl9HVEtfU0NST0xMQkFSX1RIVU1CX0hPUklaT05UQUw6Ci0gICAg
Y2FzZSBNT1pfR1RLX1NDUk9MTEJBUl9USFVNQl9WRVJUSUNBTDoKLSAgICAgICAgcmV0dXJuIG1v
el9ndGtfc2Nyb2xsYmFyX3RodW1iX3BhaW50KHdpZGdldCwgZHJhd2FibGUsIHJlY3QsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwcmVjdCwgc3RhdGUs
IGRpcmVjdGlvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTU9aX0dUS19TQ1JPTExFRF9X
SU5ET1c6Ci0gICAgICAgIHJldHVybiBtb3pfZ3RrX3Njcm9sbGVkX3dpbmRvd19wYWludChkcmF3
YWJsZSwgcmVjdCwgY2xpcHJlY3QsIHN0YXRlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVs
dDoKLSAgICAgICAgZ193YXJuaW5nKCJVbmtub3duIHdpZGdldCB0eXBlOiAlZCIsIHdpZGdldCk7
Ci0gICAgfQotCi0gICAgcmV0dXJuIE1PWl9HVEtfVU5LTk9XTl9XSURHRVQ7Ci19Ci0KLUd0a1dp
ZGdldCogbW96X2d0a19nZXRfc2Nyb2xsYmFyX3dpZGdldCh2b2lkKQotewotICAgIGlmICghaXNf
aW5pdGlhbGl6ZWQpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGVuc3VyZV9zY3JvbGxiYXJf
d2lkZ2V0KCk7Ci0gICAgcmV0dXJuIGdQYXJ0cy0+aG9yaXpTY3JvbGxiYXJXaWRnZXQ7Ci19Ci0K
LWdpbnQKLW1vel9ndGtfc2h1dGRvd24oKQotewotICAgIEd0a1dpZGdldENsYXNzICplbnRyeV9j
bGFzczsKLSAgICBlbnRyeV9jbGFzcyA9IGdfdHlwZV9jbGFzc19wZWVrKEdUS19UWVBFX0VOVFJZ
KTsKLSAgICBnX3R5cGVfY2xhc3NfdW5yZWYoZW50cnlfY2xhc3MpOwotCi0gICAgaXNfaW5pdGlh
bGl6ZWQgPSBGQUxTRTsKLQotICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXZvaWQg
bW96X2d0a19kZXN0cm95X3RoZW1lX3BhcnRzX3dpZGdldHMoR3RrVGhlbWVQYXJ0cyogcGFydHMp
Ci17Ci0gICAgaWYgKCFwYXJ0cykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHBhcnRzLT5w
cm90b1dpbmRvdykgewotICAgICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3kocGFydHMtPnByb3RvV2lu
ZG93KTsKLSAgICAgICAgcGFydHMtPnByb3RvV2luZG93ID0gTlVMTDsKLSAgICB9Ci19Ci0KLSNl
bmRpZiAvLyBHVEtfQVBJX1ZFUlNJT05fMgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL2d0a2RyYXdpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9ndGtk
cmF3aW5nLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkYjM0M2NkNGFmZWYyNGZj
OGYxMWQwMDNkZjVjMzM1ZjI3MWYwNjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL2d0a2RyYXdpbmcuaAor
KysgL2Rldi9udWxsCkBAIC0xLDIxNyArMCwwIEBACi0vKiAtKi0gTW9kZTogQzsgdGFiLXdpZHRo
OiAyOyBpbmRlbnQtdGFicy1tb2RlOiBuaWw7IGMtYmFzaWMtb2Zmc2V0OiAyIC0qLSAqLwotLyog
KioqKiogQkVHSU4gTElDRU5TRSBCTE9DSyAqKioqKgotICogVmVyc2lvbjogTVBMIDEuMS9HUEwg
Mi4wL0xHUEwgMi4xCi0gKgotICogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVj
dCB0byB0aGUgTW96aWxsYSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uCi0gKiAxLjEgKHRoZSAiTGlj
ZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGgKLSAqIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKLSAqIGh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBMLwotICoKLSAqIFNvZnR3YXJlIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFz
aXMsCi0gKiBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBp
bXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UKLSAqIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292
ZXJuaW5nIHJpZ2h0cyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlCi0gKiBMaWNlbnNlLgotICoK
LSAqIFRoZSBPcmlnaW5hbCBDb2RlIGlzIG1vemlsbGEub3JnIGNvZGUuCi0gKgotICogVGhlIElu
aXRpYWwgRGV2ZWxvcGVyIG9mIHRoZSBPcmlnaW5hbCBDb2RlIGlzCi0gKiBOZXRzY2FwZSBDb21t
dW5pY2F0aW9ucyBDb3Jwb3JhdGlvbi4KLSAqIFBvcnRpb25zIGNyZWF0ZWQgYnkgdGhlIEluaXRp
YWwgRGV2ZWxvcGVyIGFyZSBDb3B5cmlnaHQgKEMpIDIwMDIKLSAqIHRoZSBJbml0aWFsIERldmVs
b3Blci4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBDb250cmlidXRvcihzKToKLSAqICBC
cmlhbiBSeW5lciA8YnJ5bmVyQGJyaWFucnluZXIuY29tPiAgKE9yaWdpbmFsIEF1dGhvcikKLSAq
Ci0gKiBBbHRlcm5hdGl2ZWx5LCB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxlIG1heSBiZSB1c2Vk
IHVuZGVyIHRoZSB0ZXJtcyBvZgotICogZWl0aGVyIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBWZXJzaW9uIDIgb3IgbGF0ZXIgKHRoZSAiR1BMIiksIG9yCi0gKiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMi4xIG9yIGxhdGVyICh0aGUgIkxHUEwi
KSwKLSAqIGluIHdoaWNoIGNhc2UgdGhlIHByb3Zpc2lvbnMgb2YgdGhlIEdQTCBvciB0aGUgTEdQ
TCBhcmUgYXBwbGljYWJsZSBpbnN0ZWFkCi0gKiBvZiB0aG9zZSBhYm92ZS4gSWYgeW91IHdpc2gg
dG8gYWxsb3cgdXNlIG9mIHlvdXIgdmVyc2lvbiBvZiB0aGlzIGZpbGUgb25seQotICogdW5kZXIg
dGhlIHRlcm1zIG9mIGVpdGhlciB0aGUgR1BMIG9yIHRoZSBMR1BMLCBhbmQgbm90IHRvIGFsbG93
IG90aGVycyB0bwotICogdXNlIHlvdXIgdmVyc2lvbiBvZiB0aGlzIGZpbGUgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBNUEwsIGluZGljYXRlIHlvdXIKLSAqIGRlY2lzaW9uIGJ5IGRlbGV0aW5nIHRo
ZSBwcm92aXNpb25zIGFib3ZlIGFuZCByZXBsYWNlIHRoZW0gd2l0aCB0aGUgbm90aWNlCi0gKiBh
bmQgb3RoZXIgcHJvdmlzaW9ucyByZXF1aXJlZCBieSB0aGUgR1BMIG9yIHRoZSBMR1BMLiBJZiB5
b3UgZG8gbm90IGRlbGV0ZQotICogdGhlIHByb3Zpc2lvbnMgYWJvdmUsIGEgcmVjaXBpZW50IG1h
eSB1c2UgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlcgotICogdGhlIHRlcm1zIG9mIGFu
eSBvbmUgb2YgdGhlIE1QTCwgdGhlIEdQTCBvciB0aGUgTEdQTC4KLSAqCi0gKiAqKioqKiBFTkQg
TElDRU5TRSBCTE9DSyAqKioqKiAqLwotCi0vKioKLSAqIGd0a2RyYXdpbmcuaDogR1RLIHdpZGdl
dCByZW5kZXJpbmcgdXRpbGl0aWVzCi0gKgotICogZ3RrZHJhd2luZyBwcm92aWRlcyBhbiBBUEkg
Zm9yIHJlbmRlcmluZyBHVEsgd2lkZ2V0cyBpbiB0aGUKLSAqIGN1cnJlbnQgdGhlbWUgdG8gYSBw
aXhtYXAgb3Igd2luZG93LCB3aXRob3V0IHJlcXVpcmluZyBhbiBhY3R1YWwKLSAqIHdpZGdldCBp
bnN0YW50aWF0aW9uLCBzaW1pbGFyIHRvIHRoZSBNYWNpbnRvc2ggQXBwZWFyYW5jZSBNYW5hZ2Vy
Ci0gKiBvciBXaW5kb3dzIFhQJ3MgRHJhd1RoZW1lQmFja2dyb3VuZCgpIEFQSS4KLSAqLwotCi0j
aWZuZGVmIF9HVEtfRFJBV0lOR19IXwotI2RlZmluZSBfR1RLX0RSQVdJTkdfSF8KLQotI3VuZGVm
IEdUS19ESVNBQkxFX0RFUFJFQ0FURUQKLQotI2luY2x1ZGUgPGd0ay9ndGsuaD4KLQotI2lmZGVm
IF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLwotCi0v
KioqIHR5cGUgZGVmaW5pdGlvbnMgKioqLwotdHlwZWRlZiBzdHJ1Y3QgewotICBndWludDggYWN0
aXZlOwotICBndWludDggZm9jdXNlZDsKLSAgZ3VpbnQ4IGluSG92ZXI7Ci0gIGd1aW50OCBkaXNh
YmxlZDsKLSAgZ3VpbnQ4IGlzRGVmYXVsdDsKLSAgZ3VpbnQ4IGNhbkRlZmF1bHQ7Ci0gIC8qIFRo
ZSBkZXByZXNzZWQgc3RhdGUgaXMgZm9yIGJ1dHRvbnMgd2hpY2ggcmVtYWluIGFjdGl2ZSBmb3Ig
YSBsb25nZXIgcGVyaW9kOgotICAgKiBhY3RpdmF0ZWQgdG9nZ2xlIGJ1dHRvbnMgb3IgYnV0dG9u
cyBzaG93aW5nIGEgcG9wdXAgbWVudS4gKi8KLSAgZ3VpbnQ4IGRlcHJlc3NlZDsKLSAgZ2ludDMy
IGN1cnBvczsgLyogY3VycG9zIGFuZCBtYXhwb3MgYXJlIHVzZWQgZm9yIHNjcm9sbGJhcnMgKi8K
LSAgZ2ludDMyIG1heHBvczsKLX0gR3RrV2lkZ2V0U3RhdGU7Ci0KLXR5cGVkZWYgc3RydWN0IHsK
LSAgZ2ludCBzbGlkZXJfd2lkdGg7Ci0gIGdpbnQgdHJvdWdoX2JvcmRlcjsKLSAgZ2ludCBzdGVw
cGVyX3NpemU7Ci0gIGdpbnQgc3RlcHBlcl9zcGFjaW5nOwotICBnaW50IG1pbl9zbGlkZXJfc2l6
ZTsKLSAgZ2Jvb2xlYW4gdHJvdWdoX3VuZGVyX3N0ZXBwZXJzOwotICBnYm9vbGVhbiBoYXNfc2Vj
b25kYXJ5X2ZvcndhcmRfc3RlcHBlcjsKLSAgZ2Jvb2xlYW4gaGFzX3NlY29uZGFyeV9iYWNrd2Fy
ZF9zdGVwcGVyOwotfSBNb3pHdGtTY3JvbGxiYXJNZXRyaWNzOwotCi10eXBlZGVmIHN0cnVjdCBf
R3RrVGhlbWVQYXJ0cyB7Ci0gICAgR2RrQ29sb3JtYXAqIGNvbG9ybWFwOwotICAgIEd0a1dpZGdl
dCogcHJvdG9XaW5kb3c7Ci0gICAgR3RrV2lkZ2V0KiBwcm90b0xheW91dDsKLSAgICBHdGtXaWRn
ZXQqIGhvcml6U2Nyb2xsYmFyV2lkZ2V0OwotICAgIEd0a1dpZGdldCogdmVydFNjcm9sbGJhcldp
ZGdldDsKLSAgICBHdGtXaWRnZXQqIHNjcm9sbGVkV2luZG93V2lkZ2V0OwotfSBHdGtUaGVtZVBh
cnRzOwotCi10eXBlZGVmIGVudW0gewotICBNT1pfR1RLX1NURVBQRVJfRE9XTiAgICAgICAgPSAx
IDw8IDAsCi0gIE1PWl9HVEtfU1RFUFBFUl9CT1RUT00gICAgICA9IDEgPDwgMSwKLSAgTU9aX0dU
S19TVEVQUEVSX1ZFUlRJQ0FMICAgID0gMSA8PCAyCi19IEd0a1Njcm9sbGJhckJ1dHRvbkZsYWdz
OwotCi0vKiBmdW5jdGlvbiB0eXBlIGZvciBtb3pfZ3RrX2VuYWJsZV9zdHlsZV9wcm9wcyAqLwot
dHlwZWRlZiBnaW50ICgqc3R5bGVfcHJvcF90KShHdGtTdHlsZSosIGNvbnN0IGdjaGFyKiwgZ2lu
dCk7Ci0KLS8qKiogcmVzdWx0L2Vycm9yIGNvZGVzICoqKi8KLSNkZWZpbmUgTU9aX0dUS19TVUND
RVNTIDAKLSNkZWZpbmUgTU9aX0dUS19VTktOT1dOX1dJREdFVCAtMQotI2RlZmluZSBNT1pfR1RL
X1VOU0FGRV9USEVNRSAtMgotCi0vKioqIHdpZGdldCB0eXBlIGNvbnN0YW50cyAqKiovCi10eXBl
ZGVmIGVudW0gewotICAvKiBQYWludHMgYSBHdGtCdXR0b24uIGZsYWdzIGlzIGEgR3RrUmVsaWVm
U3R5bGUuICovCi0gIE1PWl9HVEtfQlVUVE9OLAotICAvKioKLSAgICogUGFpbnRzIHRoZSBidXR0
b24gb2YgYSBHdGtTY3JvbGxiYXIuIGZsYWdzIGlzIGEgR3RrQXJyb3dUeXBlIGdpdmluZwotICAg
KiB0aGUgYXJyb3cgZGlyZWN0aW9uLgotICAgKi8KLSAgTU9aX0dUS19TQ1JPTExCQVJfQlVUVE9O
LAotICAvKiBQYWludHMgdGhlIHRyb3VnaCAodHJhY2spIG9mIGEgR3RrU2Nyb2xsYmFyLiAqLwot
ICBNT1pfR1RLX1NDUk9MTEJBUl9UUkFDS19IT1JJWk9OVEFMLAotICBNT1pfR1RLX1NDUk9MTEJB
Ul9UUkFDS19WRVJUSUNBTCwKLSAgLyogUGFpbnRzIHRoZSBzbGlkZXIgKHRodW1iKSBvZiBhIEd0
a1Njcm9sbGJhci4gKi8KLSAgTU9aX0dUS19TQ1JPTExCQVJfVEhVTUJfSE9SSVpPTlRBTCwKLSAg
TU9aX0dUS19TQ1JPTExCQVJfVEhVTUJfVkVSVElDQUwsCi0gIC8qIFBhaW50cyB0aGUgYmFja2dy
b3VuZCBvZiBhIHNjcm9sbGVkIHdpbmRvdyAqLwotICBNT1pfR1RLX1NDUk9MTEVEX1dJTkRPVywK
LX0gR3RrVGhlbWVXaWRnZXRUeXBlOwotCi0vKioqIEdlbmVyYWwgbGlicmFyeSBmdW5jdGlvbnMg
KioqLwotLyoqCi0gKiBJbml0aWFsaXplcyB0aGUgZHJhd2luZyBsaWJyYXJ5LiAgWW91IG11c3Qg
Y2FsbCB0aGlzIGZ1bmN0aW9uCi0gKiBwcmlvciB0byB1c2luZyBhbnkgb3RoZXIgZnVuY3Rpb25h
bGl0eS4KLSAqIHJldHVybnM6IE1PWl9HVEtfU1VDQ0VTUyBpZiB0aGVyZSB3ZXJlIG5vIGVycm9y
cwotICogICAgICAgICAgTU9aX0dUS19VTlNBRkVfVEhFTUUgaWYgdGhlIGN1cnJlbnQgdGhlbWUg
ZW5naW5lIGlzIGtub3duCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBjcmFz
aCB3aXRoIGd0a2RyYXdpbmcuCi0gKi8KLWdpbnQgbW96X2d0a19pbml0KCk7Ci0KLS8qKgotICog
SW5zdHJ1Y3QgdGhlIGRyYXdpbmcgbGlicmFyeSB0byBkbyBhbGwgcmVuZGVyaW5nIGJhc2VkIG9u
Ci0gKiB0aGUgZ2l2ZW4gY29sbGVjdGlvbiBvZiB0aGVtZSBwYXJ0cy4gSWYgYW55IG1lbWJlcnMg
b2YgdGhlCi0gKiBHdGtUaGVtZVBhcnRzIHN0cnVjdCBhcmUgTlVMTCwgdGhleSB3aWxsIGJlIGNy
ZWF0ZWQgbGF6aWx5LgotICovCi12b2lkCi1tb3pfZ3RrX3VzZV90aGVtZV9wYXJ0cyhHdGtUaGVt
ZVBhcnRzKiBwYXJ0cyk7Ci0KLS8qKgotICogRW5hYmxlIEdUSysgMS4yLjkrIHRoZW1lIGVuaGFu
Y2VtZW50cy4gWW91IG11c3QgcHJvdmlkZSBhIHBvaW50ZXIKLSAqIHRvIHRoZSBHVEsrIDEuMi45
KyBmdW5jdGlvbiAiZ3RrX3N0eWxlX2dldF9wcm9wX2V4cGVyaW1lbnRhbCIuCi0gKiBzdHlsZUdl
dFByb3A6ICBwb2ludGVyIHRvIGd0a19zdHlsZV9nZXRfcHJvcF9leHBlcmltZW50YWwKLSAqIAot
ICogcmV0dXJuczogTU9aX0dUS19TVUNDRVNTIGlmIHRoZXJlIHdhcyBubyBlcnJvciwgYW4gZXJy
b3IgY29kZSBvdGhlcndpc2UKLSAqLwotZ2ludCBtb3pfZ3RrX2VuYWJsZV9zdHlsZV9wcm9wcyhz
dHlsZV9wcm9wX3Qgc3R5bGVHZXRQcm9wKTsKLQotLyoqCi0gKiBQZXJmb3JtIGNsZWFudXAgb2Yg
dGhlIGRyYXdpbmcgbGlicmFyeS4gWW91IHNob3VsZCBjYWxsIHRoaXMgZnVuY3Rpb24KLSAqIHdo
ZW4geW91ciBwcm9ncmFtIGV4aXRzLCBvciB5b3Ugbm8gbG9uZ2VyIG5lZWQgdGhlIGxpYnJhcnku
Ci0gKgotICogcmV0dXJuczogTU9aX0dUS19TVUNDRVNTIGlmIHRoZXJlIHdhcyBubyBlcnJvciwg
YW4gZXJyb3IgY29kZSBvdGhlcndpc2UKLSAqLwotZ2ludCBtb3pfZ3RrX3NodXRkb3duKCk7Ci0K
LS8qKgotICogRGVzdHJveSB0aGUgd2lkZ2V0cyBpbiB0aGUgZ2l2ZW4gR3RrVGhlbWVQYXJ0cywg
d2hpY2ggc2hvdWxkCi0gKiBiZSBkZXN0cm95ZWQgYmVmb3JlIHRoZSBHdGtUaGVtZVBhcnRzIGNh
biBiZSBmcmVlZC4KLSAqLwotdm9pZCBtb3pfZ3RrX2Rlc3Ryb3lfdGhlbWVfcGFydHNfd2lkZ2V0
cyhHdGtUaGVtZVBhcnRzKiBwYXJ0cyk7Ci0KLS8qKiogV2lkZ2V0IGRyYXdpbmcgKioqLwotLyoq
Ci0gKiBQYWludCBhIHdpZGdldCBpbiB0aGUgY3VycmVudCB0aGVtZS4KLSAqIHdpZGdldDogICAg
YSBjb25zdGFudCBnaXZpbmcgdGhlIHdpZGdldCB0byBwYWludAotICogcmVjdDogICAgICB0aGUg
Ym91bmRpbmcgcmVjdGFuZ2xlIGZvciB0aGUgd2lkZ2V0Ci0gKiBjbGlwcmVjdDogIGEgY2xpcHBy
ZWN0IHJlY3RhbmdsZSBmb3IgdGhpcyBwYWludGluZyBvcGVyYXRpb24KLSAqIHN0YXRlOiAgICAg
dGhlIHN0YXRlIG9mIHRoZSB3aWRnZXQuICBpZ25vcmVkIGZvciBzb21lIHdpZGdldHMuCi0gKiBm
bGFnczogICAgIHdpZGdldC1kZXBlbmRhbnQgZmxhZ3M7IHNlZSB0aGUgR3RrVGhlbWVXaWRnZXRU
eXBlIGRlZmluaXRpb24uCi0gKiBkaXJlY3Rpb246IHRoZSB0ZXh0IGRpcmVjdGlvbiwgdG8gZHJh
dyB0aGUgd2lkZ2V0IGNvcnJlY3RseSBMVFIgYW5kIFJUTC4KLSAqLwotZ2ludAotbW96X2d0a193
aWRnZXRfcGFpbnQoR3RrVGhlbWVXaWRnZXRUeXBlIHdpZGdldCwgR2RrRHJhd2FibGUqIGRyYXdh
YmxlLAotICAgICAgICAgICAgICAgICAgICAgR2RrUmVjdGFuZ2xlKiByZWN0LCBHZGtSZWN0YW5n
bGUqIGNsaXByZWN0LAotICAgICAgICAgICAgICAgICAgICAgR3RrV2lkZ2V0U3RhdGUqIHN0YXRl
LCBnaW50IGZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgR3RrVGV4dERpcmVjdGlvbiBkaXJl
Y3Rpb24pOwotCi0vKioqIFdpZGdldCBtZXRyaWNzICoqKi8KLS8qKgotICogR2V0IHRoZSBib3Jk
ZXIgc2l6ZSBvZiBhIHdpZGdldAotICogbGVmdC9yaWdodDogIFtPVVRdIHRoZSB3aWRnZXQncyBs
ZWZ0L3JpZ2h0IGJvcmRlcgotICogdG9wL2JvdHRvbTogIFtPVVRdIHRoZSB3aWRnZXQncyB0b3Av
Ym90dG9tIGJvcmRlcgotICogZGlyZWN0aW9uOiAgIHRoZSB0ZXh0IGRpcmVjdGlvbiBmb3IgdGhl
IHdpZGdldAotICogaW5odG1sOiAgICAgIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoaXMg
d2lkZ2V0IHdpbGwgYmUgZHJhd24gYXMgYSBIVE1MIGZvcm0gY29udHJvbCwKLSAqICAgICAgICAg
ICAgICBpbiBvcmRlciB0byB3b3JrYXJvdW5kIGEgc2l6ZSBpc3N1ZSAoTU9aX0dUS19CVVRUT04g
b25seSwgaWdub3JlZCBvdGhlcndpc2UpCi0gKgotICogcmV0dXJuczogICAgTU9aX0dUS19TVUND
RVNTIGlmIHRoZXJlIHdhcyBubyBlcnJvciwgYW4gZXJyb3IgY29kZSBvdGhlcndpc2UKLSAqLwot
Z2ludCBtb3pfZ3RrX2dldF93aWRnZXRfYm9yZGVyKEd0a1RoZW1lV2lkZ2V0VHlwZSB3aWRnZXQs
IGdpbnQqIGxlZnQsIGdpbnQqIHRvcCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2ludCogcmlnaHQsIGdpbnQqIGJvdHRvbSwgR3RrVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gaW5odG1sKTsKLS8qKgotICog
R2V0IHRoZSBkZXNpcmVkIG1ldHJpY3MgZm9yIGEgR3RrU2Nyb2xsYmFyCi0gKiBtZXRyaWNzOiAg
ICAgICAgICBbSU5dICBzdHJ1Y3Qgd2hpY2ggd2lsbCBjb250YWluIHRoZSBtZXRyaWNzCi0gKgot
ICogcmV0dXJuczogICAgTU9aX0dUS19TVUNDRVNTIGlmIHRoZXJlIHdhcyBubyBlcnJvciwgYW4g
ZXJyb3IgY29kZSBvdGhlcndpc2UKLSAqLwotZ2ludAotbW96X2d0a19nZXRfc2Nyb2xsYmFyX21l
dHJpY3MoTW96R3RrU2Nyb2xsYmFyTWV0cmljcyogbWV0cmljcyk7Ci0KLS8qKgotICogUmV0cmll
dmUgYW4gYWN0dWFsIEdUSyBzY3JvbGxiYXIgd2lkZ2V0IGZvciBzdHlsZSBhbmFseXNpcy4gSXQg
d2lsbCBub3QKLSAqIGJlIG1vZGlmaWVkLgotICovCi1HdGtXaWRnZXQqIG1vel9ndGtfZ2V0X3Nj
cm9sbGJhcl93aWRnZXQodm9pZCk7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmIC8q
IF9fY3BsdXNwbHVzICovCi0KLSNlbmRpZgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>