com php/gtk-src: Finish fixing segfaults and do the support for custom signals and properties: ext/gtk+/gdk.overrides main/php_gtk .h main/phpg_closure.c main/phpg_gobject.c main /phpg_support.c

[email protected] (Elizabeth Marie Smith) Wed, 18 Jul 2012 02:57:37 +0000
Newsgroups php.gtk.cvs
Message-ID <[email protected]>
--7194303ed6d323fcfd0dfaa0523b4e17aeca1d67
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable

Commit:    7d73feb32c54325a3c249756999b3e56942de5f6=0AAuthor:    Elizabeth =
M Smith <[email protected]>         Tue, 17 Jul 2012 22:57:37 -0400=
=0AParents:   f5c24b08990e369a198854ba4c2965faf3572ac9=0ABranches:  master=
=0A=0ALink:       http://git.php.net/?p=3Dphp/gtk-src.git;a=3Dcommitdiff;h=
=3D7d73feb32c54325a3c249756999b3e56942de5f6=0A=0ALog:=0AFinish fixing segfa=
ults and do the support for custom=0Asignals and properties=0A=0APHP 5.4 su=
pport is now complete - still working on removing=0Aall the rest of the TSR=
MLS_FETCH calls (why so many...)=0A=0AChanged paths:=0A  M  ext/gtk+/gdk.ov=
errides=0A  M  main/php_gtk.h=0A  M  main/phpg_closure.c=0A  M  main/phpg_g=
object.c=0A  M  main/phpg_support.c=0A=0A
--7194303ed6d323fcfd0dfaa0523b4e17aeca1d67
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="diff_7d73feb32c54325a3c249756999b3e56942de5f6.txt"

ZGlmZiAtLWdpdCBhL2V4dC9ndGsrL2dkay5vdmVycmlkZXMgYi9leHQvZ3RrKy9nZGsub3ZlcnJp
ZGVzCmluZGV4IGI0YWE4MjMuLjI3YzY0YzMgMTAwNjQ0Ci0tLSBhL2V4dC9ndGsrL2dkay5vdmVy
cmlkZXMKKysrIGIvZXh0L2d0aysvZ2RrLm92ZXJyaWRlcwpAQCAtMzE5LDYgKzMxOSwxMSBAQCBI
YXNoVGFibGUqIHBocGdfZ2RrY29sb3JfZ2V0X3Byb3BlcnRpZXNfaGFuZGxlcih6dmFsICpvYmpl
Y3QgVFNSTUxTX0RDKQogewogICAgIHBocGdfaGVhZF90ICpwb2ggPSBOVUxMOwogICAgIHBvaCA9
IChwaHBnX2hlYWRfdCAqKSB6ZW5kX29iamVjdF9zdG9yZV9nZXRfb2JqZWN0KG9iamVjdCBUU1JN
TFNfQ0MpOworI2lmIFBIUF9WRVJTSU9OX0lEID4gNTAzOTkKKwlpZiAoIXBvaC0+em9iai5wcm9w
ZXJ0aWVzKSB7CisJCXJlYnVpbGRfb2JqZWN0X3Byb3BlcnRpZXMoJnBvaC0+em9iaik7CisJfQor
I2VuZGlmCiAgICAgcGhwZ19nZXRfcHJvcGVydGllc19oZWxwZXIob2JqZWN0LCBwb2gtPnpvYmou
cHJvcGVydGllcyBUU1JNTFNfQ0MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RS
UyhyZWQpLCBTVFJTKGdyZWVuKSwgU1RSUyhibHVlKSwgU1RSUyhwaXhlbCksIE5VTEwpOwogCkBA
IC03ODksNyArNzk0LDcgQEAgUEhQX01FVEhPRAogCiAlJQogb3ZlcnJpZGUtaGFuZGxlciBHZGtF
dmVudCByZWFkX3Byb3BlcnR5Ci1zdGF0aWMgenZhbCogcGhwZ19nZGtldmVudF9yZWFkX3Byb3Bl
cnR5X2hhbmRsZXIoenZhbCAqb2JqZWN0LCB6dmFsICptZW1iZXIsIGludCB0eXBlIFRTUk1MU19E
QykKK3N0YXRpYyB6dmFsKiBwaHBnX2dka2V2ZW50X3JlYWRfcHJvcGVydHlfaGFuZGxlcih6dmFs
ICpvYmplY3QsIHp2YWwgKm1lbWJlciwgaW50IHR5cGUgUEhQR1RLX1BST1BFUlRZX0VORCkKIHsK
ICAgICB6dmFsIHRtcF9tZW1iZXI7CiAgICAgenZhbCAqcmVzdWx0ID0gTlVMTDsKQEAgLTExODcs
NiArMTE5MiwxMiBAQCBIYXNoVGFibGUqIHBocGdfZ2RrZXZlbnRfZ2V0X3Byb3BlcnRpZXNfaGFu
ZGxlcih6dmFsICpvYmplY3QgVFNSTUxTX0RDKQogCiAgICAgcG9oID0gKHBocGdfaGVhZF90ICop
IHplbmRfb2JqZWN0X3N0b3JlX2dldF9vYmplY3Qob2JqZWN0IFRTUk1MU19DQyk7CiAKKyNpZiBQ
SFBfVkVSU0lPTl9JRCA+IDUwMzk5CisJaWYgKCFwb2gtPnpvYmoucHJvcGVydGllcykgeworCQly
ZWJ1aWxkX29iamVjdF9wcm9wZXJ0aWVzKCZwb2gtPnpvYmopOworCX0KKyNlbmRpZgorCiAgICAg
c3dpdGNoIChldmVudC0+dHlwZSkgewogCiAgICAgICAgIGNhc2UgR0RLX05PVEhJTkc6CkBAIC0x
MjEwLDYgKzEyMjEsNyBAQCBIYXNoVGFibGUqIHBocGdfZ2RrZXZlbnRfZ2V0X3Byb3BlcnRpZXNf
aGFuZGxlcih6dmFsICpvYmplY3QgVFNSTUxTX0RDKQogICAgICAgICBjYXNlIEdES18yQlVUVE9O
X1BSRVNTOgogICAgICAgICBjYXNlIEdES18zQlVUVE9OX1BSRVNTOgogICAgICAgICBjYXNlIEdE
S19CVVRUT05fUkVMRUFTRToKKwogICAgICAgICAgICAgcGhwZ19nZXRfcHJvcGVydGllc19oZWxw
ZXIob2JqZWN0LCBwb2gtPnpvYmoucHJvcGVydGllcyBUU1JNTFNfQ0MsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTVFJTKHRpbWUpLCBTVFJTKHgpLCBTVFJTKHkpLCBT
VFJTKGF4ZXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RSUyhz
dGF0ZSksIFNUUlMoYnV0dG9uKSwgU1RSUyhkZXZpY2UpLApkaWZmIC0tZ2l0IGEvbWFpbi9waHBf
Z3RrLmggYi9tYWluL3BocF9ndGsuaAppbmRleCA0ZGUwMTcyLi4wZTMxZTJlIDEwMDY0NAotLS0g
YS9tYWluL3BocF9ndGsuaAorKysgYi9tYWluL3BocF9ndGsuaApAQCAtNzAsNiArNzAsMTMgQEAK
ICMgZGVmaW5lIFBIUEdUS19aRU5EX0lTX0NBTExBQkxFCiAjZW5kaWYKIAorLyogcmVhZF9wcm9w
ZXJ0eSwgd3JpdGVfcHJvcGVydHkgYW5kIGdldF9wcm9wZXJ0eV9wdHJfcHRyIGFsbCBoYXZlIGxp
dGVyYWwgYXQgdGhlIGVuZCBub3cgKi8KKyNpZiBQSFBfVkVSU0lPTl9JRCA8IDUwMzk5CisjIGRl
ZmluZSBQSFBHVEtfUFJPUEVSVFlfRU5EIFRTUk1MU19EQworI2Vsc2UKKyMgZGVmaW5lIFBIUEdU
S19QUk9QRVJUWV9FTkQgLCBjb25zdCB6ZW5kX2xpdGVyYWwgKmtleSBUU1JNTFNfREMKKyNlbmRp
ZgorCiAjaWYgSEFWRV9QSFBfR1RLCiAKICNpbmNsdWRlICJ6ZW5kX29iamVjdHNfQVBJLmgiCkBA
IC0yOTMsOSArMzAwLDkgQEAgZXh0ZXJuIFBIUF9HVEtfQVBJIHplbmRfb2JqZWN0X2hhbmRsZXJz
IHBocGdfZ29iamVjdF9oYW5kbGVyczsKIGludCBwaHBfZ3RrX3N0YXJ0dXBfYWxsX2V4dGVuc2lv
bnMoaW50IG1vZHVsZV9udW1iZXIpOwogaW50IHBocF9ndGtfc3RhcnR1cF9leHRlbnNpb25zKHBo
cF9ndGtfZXh0X2VudHJ5ICoqZXh0LCBpbnQgZXh0X2NvdW50LCBpbnQgbW9kdWxlX251bWJlcik7
CiAKLXp2YWwgKnBocGdfcmVhZF9wcm9wZXJ0eSh6dmFsICpvYmplY3QsIHp2YWwgKm1lbWJlciwg
aW50IHR5cGUgVFNSTUxTX0RDKTsKLXZvaWQgcGhwZ193cml0ZV9wcm9wZXJ0eSh6dmFsICpvYmpl
Y3QsIHp2YWwgKm1lbWJlciwgenZhbCAqdmFsdWUgVFNSTUxTX0RDKTsKLXp2YWwgKipwaHBnX2dl
dF9wcm9wZXJ0eV9wdHJfcHRyKHp2YWwgKm9iamVjdCwgenZhbCAqbWVtYmVyIFRTUk1MU19EQyk7
Cit6dmFsICpwaHBnX3JlYWRfcHJvcGVydHkoenZhbCAqb2JqZWN0LCB6dmFsICptZW1iZXIsIGlu
dCB0eXBlIFBIUEdUS19QUk9QRVJUWV9FTkQpOwordm9pZCBwaHBnX3dyaXRlX3Byb3BlcnR5KHp2
YWwgKm9iamVjdCwgenZhbCAqbWVtYmVyLCB6dmFsICp2YWx1ZSBQSFBHVEtfUFJPUEVSVFlfRU5E
KTsKK3p2YWwgKipwaHBnX2dldF9wcm9wZXJ0eV9wdHJfcHRyKHp2YWwgKm9iamVjdCwgenZhbCAq
bWVtYmVyIFBIUEdUS19QUk9QRVJUWV9FTkQpOwogSGFzaFRhYmxlKiBwaHBnX2dldF9wcm9wZXJ0
aWVzKHp2YWwgKm9iamVjdCBUU1JNTFNfREMpOwogUEhQX0dUS19BUEkgdm9pZCBwaHBnX2dldF9w
cm9wZXJ0aWVzX2hlbHBlcih6dmFsICpvYmplY3QsIEhhc2hUYWJsZSAqaHQgVFNSTUxTX0RDLCAu
Li4pOwogCkBAIC01NTIsNyArNTU5LDcgQEAgc3RhdGljIGlubGluZSBwaHBnX3BhcmFtc3BlY190
KiBwaHBnX2dwYXJhbXNwZWNfZ2V0KHp2YWwgKnpvYmogVFNSTUxTX0RDKQogLyogQ2xvc3VyZXMg
Ki8KIFBIUF9HVEtfQVBJIEdDbG9zdXJlKiBwaHBnX2Nsb3N1cmVfbmV3KHp2YWwgKmNhbGxiYWNr
LCB6dmFsICp1c2VyX2FyZ3MsIGludCBjb25uZWN0X3R5cGUsIHp2YWwgKnJlcGxhY2Vfb2JqZWN0
IFRTUk1MU19EQyk7CiBQSFBfR1RLX0FQSSB2b2lkIHBocGdfd2F0Y2hfY2xvc3VyZSh6dmFsICpv
YmosIEdDbG9zdXJlICpjbG9zdXJlIFRTUk1MU19EQyk7Ci1QSFBfR1RLX0FQSSBHQ2xvc3VyZSog
cGhwZ19nZXRfc2lnbmFsX2NsYXNzX2Nsb3N1cmUoKTsKK1BIUF9HVEtfQVBJIEdDbG9zdXJlKiBw
aHBnX2dldF9zaWduYWxfY2xhc3NfY2xvc3VyZShUU1JNTFNfRCk7CiAKIFBIUF9HVEtfQVBJIGV4
dGVybiBQSFBfR1RLX0VYUE9SVF9DRShndHlwZV9jZSk7CiBQSFBfR1RLX0FQSSBleHRlcm4gUEhQ
X0dUS19FWFBPUlRfQ0UoZ29iamVjdF9jZSk7CmRpZmYgLS1naXQgYS9tYWluL3BocGdfY2xvc3Vy
ZS5jIGIvbWFpbi9waHBnX2Nsb3N1cmUuYwppbmRleCBmMTZhZDhjLi4yMTkxMjVhIDEwMDY0NAot
LS0gYS9tYWluL3BocGdfY2xvc3VyZS5jCisrKyBiL21haW4vcGhwZ19jbG9zdXJlLmMKQEAgLTIy
Nyw4ICsyMjcsNyBAQCBzdGF0aWMgdm9pZCBwaHBnX3NpZ25hbF9jbGFzc19jbG9zdXJlX21hcnNo
YWwoR0Nsb3N1cmUgICAgICpjbG9zdXJlLAogCXBocGdfZ2JveGVkX3QgKmJveGVkX2l0ZW07CiAJ
aW50IGksIGs7CiAjaWZkZWYgWlRTCi0JcGhwZ19jbG9zdXJlX3QgKnBocGdfY2xvc3VyZSA9IChw
aHBnX2Nsb3N1cmVfdCAqKWNsb3N1cmU7Ci0JVFNSTUxTX0QgPSBwaHBnX2Nsb3N1cmUtPlRTUk1M
U19DOworCVRTUk1MU19EID0gY2xvc3VyZS0+ZGF0YTsKICNlbmRpZjsKIAogCXBocGdfcmV0dXJu
X2lmX2ZhaWwoaW52b2NhdGlvbl9oaW50ICE9IE5VTEwpOwpAQCAtMjYwLDcgKzI1OSw3IEBAIHN0
YXRpYyB2b2lkIHBocGdfc2lnbmFsX2NsYXNzX2Nsb3N1cmVfbWFyc2hhbChHQ2xvc3VyZSAgICAg
KmNsb3N1cmUsCiAJCQkmJiAoZnVuYyA9IFpfT0JKX0hUX1AocGhwX29iamVjdCktPmdldF9tZXRo
b2QoJnBocF9vYmplY3QsIG1ldGhvZF9uYW1lLCBtZXRob2RfbmFtZV9sZW4gVFNSTUxTX0NDKSkg
IT0gTlVMTCkgewogCQkjZWxzZQogCQkJJiYgKGZ1bmMgPSBaX09CSl9IVF9QKHBocF9vYmplY3Qp
LT5nZXRfbWV0aG9kKCZwaHBfb2JqZWN0LCBtZXRob2RfbmFtZSwgbWV0aG9kX25hbWVfbGVuLCBO
VUxMIFRTUk1MU19DQykpICE9IE5VTEwpIHsKLQkJI2VuZGlmCQkJCisJCSNlbmRpZgogCQkJaWYg
KGZ1bmMtPnR5cGUgPT0gWkVORF9JTlRFUk5BTF9GVU5DVElPTgogCQkJCSYmICgoemVuZF9pbnRl
cm5hbF9mdW5jdGlvbiopZnVuYyktPmhhbmRsZXIgPT0gemVuZF9zdGRfY2FsbF91c2VyX2NhbGwK
IAkJCSAgICkgewpAQCAtMzI0LDE4ICszMjMsMjIgQEAgZXJyX2NsYXNzX2Nsb3N1cmVfbWFyc2hh
bDoKIH0KIAogCi1QSFBfR1RLX0FQSSBHQ2xvc3VyZSogcGhwZ19nZXRfc2lnbmFsX2NsYXNzX2Ns
b3N1cmUoKQorUEhQX0dUS19BUEkgR0Nsb3N1cmUqIHBocGdfZ2V0X3NpZ25hbF9jbGFzc19jbG9z
dXJlKFRTUk1MU19EKQogewogCXN0YXRpYyBHQ2xvc3VyZSAqY2xvc3VyZSA9IE5VTEw7Ci0JCisK
IAlpZiAoY2xvc3VyZSA9PSBOVUxMKSB7CisjaWZkZWYgWlRTCisJCWNsb3N1cmUgPSBnX2Nsb3N1
cmVfbmV3X3NpbXBsZShzaXplb2YoR0Nsb3N1cmUpICsgc2l6ZW9mKFRTUk1MU19DKSwgVFNSTUxT
X0MpOworI2Vsc2UKIAkJY2xvc3VyZSA9IGdfY2xvc3VyZV9uZXdfc2ltcGxlKHNpemVvZihHQ2xv
c3VyZSksIE5VTEwpOworI2VuZGlmCiAJCWdfY2xvc3VyZV9zZXRfbWFyc2hhbChjbG9zdXJlLCBw
aHBnX3NpZ25hbF9jbGFzc19jbG9zdXJlX21hcnNoYWwpOwotCQorCiAJCWdfY2xvc3VyZV9yZWYo
Y2xvc3VyZSk7CiAJCWdfY2xvc3VyZV9zaW5rKGNsb3N1cmUpOwogCX0KLQkKKwogCXJldHVybiBj
bG9zdXJlOwogfQogCmRpZmYgLS1naXQgYS9tYWluL3BocGdfZ29iamVjdC5jIGIvbWFpbi9waHBn
X2dvYmplY3QuYwppbmRleCA0MzdmNTBlLi40MzlhMDYxIDEwMDY0NAotLS0gYS9tYWluL3BocGdf
Z29iamVjdC5jCisrKyBiL21haW4vcGhwZ19nb2JqZWN0LmMKQEAgLTEyMzcsMjMgKzEyMzcsMjEg
QEAgc3RhdGljIGludCBwaHBnX3JlZ2lzdGVyX3Byb3BlcnRpZXMoR1R5cGUgdHlwZSwgenZhbCAq
cHJvcGVydGllcykKICAgICByZXR1cm4gcmV0dmFsOwogfQogCi1zdGF0aWMgaW50IHBocGdfb3Zl
cnJpZGVfc2lnbmFsKEdUeXBlIHR5cGUsIGNvbnN0IGNoYXIgKnNpZ25hbF9uYW1lKQorc3RhdGlj
IGludCBwaHBnX292ZXJyaWRlX3NpZ25hbChHVHlwZSB0eXBlLCBjb25zdCBjaGFyICpzaWduYWxf
bmFtZSBUU1JNTFNfREMpCiB7CiAgICAgZ3VpbnQgc2lnbmFsX2lkOwogCi0JVFNSTUxTX0ZFVENI
KCk7Ci0KICAgICBzaWduYWxfaWQgPSBnX3NpZ25hbF9sb29rdXAoc2lnbmFsX25hbWUsIHR5cGUp
OwogICAgIGlmICghc2lnbmFsX2lkKSB7CiAgICAgICAgIHBocF9lcnJvcl9kb2NyZWYoTlVMTCBU
U1JNTFNfQ0MsIEVfV0FSTklORywgImNvdWxkIG5vdCBmaW5kIHNpZ25hbCAnJXMnIiwgc2lnbmFs
X25hbWUpOwogICAgICAgICByZXR1cm4gRkFJTFVSRTsKICAgICB9CiAKLSAgICBnX3NpZ25hbF9v
dmVycmlkZV9jbGFzc19jbG9zdXJlKHNpZ25hbF9pZCwgdHlwZSwgcGhwZ19nZXRfc2lnbmFsX2Ns
YXNzX2Nsb3N1cmUoKSk7CisgICAgZ19zaWduYWxfb3ZlcnJpZGVfY2xhc3NfY2xvc3VyZShzaWdu
YWxfaWQsIHR5cGUsIHBocGdfZ2V0X3NpZ25hbF9jbGFzc19jbG9zdXJlKFRTUk1MU19DKSk7CiAg
ICAgcmV0dXJuIFNVQ0NFU1M7CiB9CiAKLXN0YXRpYyBpbnQgcGhwZ19jcmVhdGVfc2lnbmFsKEdU
eXBlIHR5cGUsIGNvbnN0IGNoYXIgKnNpZ25hbF9uYW1lLCB6dmFsICpkYXRhKQorc3RhdGljIGlu
dCBwaHBnX2NyZWF0ZV9zaWduYWwoR1R5cGUgdHlwZSwgY29uc3QgY2hhciAqc2lnbmFsX25hbWUs
IHp2YWwgKmRhdGEgVFNSTUxTX0RDKQogewogICAgIGxvbmcgc2lnbmFsX2ZsYWdzOwogICAgIHp2
YWwgKnBocF9yZXR1cm5fdHlwZTsKQEAgLTEyNjMsOCArMTI2MSw2IEBAIHN0YXRpYyBpbnQgcGhw
Z19jcmVhdGVfc2lnbmFsKEdUeXBlIHR5cGUsIGNvbnN0IGNoYXIgKnNpZ25hbF9uYW1lLCB6dmFs
ICpkYXRhKQogICAgIGd1aW50IG5fcGFyYW1zLCBpLCBzaWduYWxfaWQ7CiAgICAgenZhbCAqKml0
ZW07CiAKLQlUU1JNTFNfRkVUQ0goKTsKLQogICAgIGlmICghcGhwX2d0a19wYXJzZV9hcmdzX2hh
c2goZGF0YSwgImxWYSIsICZzaWduYWxfZmxhZ3MsICZwaHBfcmV0dXJuX3R5cGUsICZwaHBfcGFy
YW1fdHlwZXMpKSB7CiAgICAgICAgIHBocF9lcnJvcl9kb2NyZWYoTlVMTCBUU1JNTFNfQ0MsIEVf
V0FSTklORywgImluY29ycmVjdCBmb3JtYXQgZm9yICclcycgc2lnbmFsIHNwZWMiLCBzaWduYWxf
bmFtZSk7CiAgICAgICAgIHJldHVybiBGQUlMVVJFOwpAQCAtMTI4OSw3ICsxMjg1LDcgQEAgc3Rh
dGljIGludCBwaHBnX2NyZWF0ZV9zaWduYWwoR1R5cGUgdHlwZSwgY29uc3QgY2hhciAqc2lnbmFs
X25hbWUsIHp2YWwgKmRhdGEpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBzaWduYWxfaWQgPSBn
X3NpZ25hbF9uZXd2KHNpZ25hbF9uYW1lLCB0eXBlLCBzaWduYWxfZmxhZ3MsIHBocGdfZ2V0X3Np
Z25hbF9jbGFzc19jbG9zdXJlKCksIAorICAgIHNpZ25hbF9pZCA9IGdfc2lnbmFsX25ld3Yoc2ln
bmFsX25hbWUsIHR5cGUsIHNpZ25hbF9mbGFncywgcGhwZ19nZXRfc2lnbmFsX2NsYXNzX2Nsb3N1
cmUoVFNSTUxTX0MpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHU2lnbmFsQWNj
dW11bGF0b3IpMCwgTlVMTCwgKEdTaWduYWxDTWFyc2hhbGxlcikwLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuX3R5cGUsIG5fcGFyYW1zLCBwYXJhbV90eXBlcyk7CiAgICAg
ZWZyZWUocGFyYW1fdHlwZXMpOwpAQCAtMTMwMiw3ICsxMjk4LDcgQEAgc3RhdGljIGludCBwaHBn
X2NyZWF0ZV9zaWduYWwoR1R5cGUgdHlwZSwgY29uc3QgY2hhciAqc2lnbmFsX25hbWUsIHp2YWwg
KmRhdGEpCiAgICAgcmV0dXJuIFNVQ0NFU1M7CiB9CiAKLXN0YXRpYyBpbnQgcGhwZ19yZWdpc3Rl
cl9zaWduYWxzKEdUeXBlIHR5cGUsIHp2YWwgKnNpZ25hbHMpCitzdGF0aWMgaW50IHBocGdfcmVn
aXN0ZXJfc2lnbmFscyhHVHlwZSB0eXBlLCB6dmFsICpzaWduYWxzIFRTUk1MU19EQykKIHsKICAg
ICBHT2JqZWN0Q2xhc3MgKm9jbGFzczsKICAgICB6dmFsICoqZGF0YTsKQEAgLTEzMTEsOCArMTMw
Nyw2IEBAIHN0YXRpYyBpbnQgcGhwZ19yZWdpc3Rlcl9zaWduYWxzKEdUeXBlIHR5cGUsIHp2YWwg
KnNpZ25hbHMpCiAgICAgdWxvbmcgbnVtX2tleTsKICAgICBpbnQgcmV0dmFsID0gU1VDQ0VTUzsK
IAotCVRTUk1MU19GRVRDSCgpOwotCiAgICAgb2NsYXNzID0gZ190eXBlX2NsYXNzX3JlZih0eXBl
KTsKICAgICBpZiAoIW9jbGFzcykgewogICAgICAgICBwaHBfZXJyb3JfZG9jcmVmKE5VTEwgVFNS
TUxTX0NDLCBFX1dBUk5JTkcsICJjb3V1bGQgbm90IGdldCBhIHJlZmVyZW5jZSB0byB0eXBlIGNs
YXNzIik7CkBAIC0xMzMxLDkgKzEzMjUsOSBAQCBzdGF0aWMgaW50IHBocGdfcmVnaXN0ZXJfc2ln
bmFscyhHVHlwZSB0eXBlLCB6dmFsICpzaWduYWxzKQogICAgICAgICBpZiAoWl9UWVBFX1BQKGRh
dGEpID09IElTX05VTEwgfHwKICAgICAgICAgICAgIChaX1RZUEVfUFAoZGF0YSkgPT0gSVNfU1RS
SU5HICYmCiAgICAgICAgICAgICAgIXN0cmNtcChaX1NUUlZBTF9QUChkYXRhKSwgIm92ZXJyaWRl
IikpKSB7Ci0gICAgICAgICAgICByZXR2YWwgPSBwaHBnX292ZXJyaWRlX3NpZ25hbCh0eXBlLCBz
dHJfa2V5KTsKKyAgICAgICAgICAgIHJldHZhbCA9IHBocGdfb3ZlcnJpZGVfc2lnbmFsKHR5cGUs
IHN0cl9rZXkgVFNSTUxTX0NDKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHZh
bCA9IHBocGdfY3JlYXRlX3NpZ25hbCh0eXBlLCBzdHJfa2V5LCAqZGF0YSk7CisgICAgICAgICAg
ICByZXR2YWwgPSBwaHBnX2NyZWF0ZV9zaWduYWwodHlwZSwgc3RyX2tleSwgKmRhdGEgVFNSTUxT
X0NDKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChyZXR2YWwgPT0gRkFJTFVSRSkgewpAQCAt
MTM0NywxMTQgKzEzNDEsMTczIEBAIHN0YXRpYyBpbnQgcGhwZ19yZWdpc3Rlcl9zaWduYWxzKEdU
eXBlIHR5cGUsIHp2YWwgKnNpZ25hbHMpCiAKIHN0YXRpYyBQSFBfTUVUSE9EKEdPYmplY3QsIHJl
Z2lzdGVyX3R5cGUpCiB7Ci0gICAgemVuZF9jbGFzc19lbnRyeSAqY2xhc3MgPSBnb2JqZWN0X2Nl
OwotICAgIEdUeXBlIHBhcmVudF90eXBlLCBuZXdfdHlwZTsKLSAgICBHVHlwZVF1ZXJ5IHF1ZXJ5
OwotICAgIGdjaGFyICp0eXBlX25hbWU7Ci0gICAgenZhbCAqKnByb3BfZGVjbHMsICoqc2lnbmFs
X2RlY2xzOwotICAgIGdjaGFyICoqc3BsaXRfbmFtZTsKLSAgICBpbnQgZnJlZV9uYW1lID0gMDsK
LQotICAgIEdUeXBlSW5mbyB0eXBlX2luZm8gPSB7Ci0gICAgICAgIDAsICAgIC8qIGNsYXNzX3Np
emUgKi8KLQotICAgICAgICAoR0Jhc2VJbml0RnVuYykgTlVMTCwKLSAgICAgICAgKEdCYXNlRmlu
YWxpemVGdW5jKSBOVUxMLAotCi0gICAgICAgIChHQ2xhc3NJbml0RnVuYykgcGhwZ19vYmplY3Rf
Y2xhc3NfaW5pdCwKLSAgICAgICAgKEdDbGFzc0ZpbmFsaXplRnVuYykgTlVMTCwKLSAgICAgICAg
TlVMTCwgLyogY2xhc3NfZGF0YSAqLwotCi0gICAgICAgIDAsICAgIC8qIGluc3RhbmNlX3NpemUg
Ki8KLSAgICAgICAgMCwgICAgLyogbl9wcmVhbGxvY3MgKi8KLSAgICAgICAgKEdJbnN0YW5jZUlu
aXRGdW5jKSBOVUxMCi0gICAgfTsKLQotICAgIGlmICghcGhwX2d0a19wYXJzZV9hcmdzKFpFTkRf
TlVNX0FSR1MoKSwgIkMiLCAmY2xhc3MpKSB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisJemVu
ZF9jbGFzc19lbnRyeSAqY2UgPSBnb2JqZWN0X2NlOworCUdUeXBlIHBhcmVudF90eXBlLCBuZXdf
dHlwZTsKKwlHVHlwZVF1ZXJ5IHF1ZXJ5OworCWdjaGFyICp0eXBlX25hbWU7CisJZ2NoYXIgKipz
cGxpdF9uYW1lOworCWludCBmcmVlX25hbWUgPSAwOwogCi0gICAgcGFyZW50X3R5cGUgPSBwaHBn
X2d0eXBlX2Zyb21fY2xhc3MoY2xhc3MgVFNSTUxTX0NDKTsKLSAgICBpZiAoIXBhcmVudF90eXBl
KSB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisjaWYgUEhQX1ZFUlNJT05fSUQgPCA1MDM5OQor
CXp2YWwgKipwcm9wX2RlY2xzLCAqKnNpZ25hbF9kZWNsczsKKyNlbHNlCisJenZhbCAqcHJvcGVy
dHkgPSBOVUxMOworCXplbmRfcHJvcGVydHlfaW5mbyAqcHJvcGVydHlfaW5mb19wdHI7CisJdWxv
bmcgaF9zaWduYWxzID0gemVuZF9nZXRfaGFzaF92YWx1ZSgiX19nc2lnbmFscyIsIHNpemVvZigi
X19nc2lnbmFscyIpKTsKKwl1bG9uZyBoX3Byb3BlcnRpZXMgPSB6ZW5kX2dldF9oYXNoX3ZhbHVl
KCJfX2dwcm9wZXJ0aWVzIiwgc2l6ZW9mKCJfX2dwcm9wZXJ0aWVzIikpOworI2VuZGlmCiAKLSAg
ICB0eXBlX25hbWUgPSBjbGFzcy0+bmFtZTsKLQkvKiBJZiB0aGlzIGlzIGEgbmFtZXNwYWNlZCBj
bGFzcyB3ZSB3aWxsIGhhdmUgaXNzdWVzLCBzaW5jZSBcIGlzIG5vdCBhbGxvd2VkLCBzbyBjb3B5
IGFuZCByZXBsYWNlIFwgd2l0aCBfICovCQotICAgIGlmICgoc3BsaXRfbmFtZSA9IGdfc3Ryc3Bs
aXQoY2xhc3MtPm5hbWUsICJcXCIsIDApKSkgewotICAgICAgICBmcmVlX25hbWUgPSAxOwotICAg
ICAgICB0eXBlX25hbWUgPSBnX3N0cmpvaW52KCJfXyIsIHNwbGl0X25hbWUpOwotICAgICAgICBn
X3N0cmZyZWV2KHNwbGl0X25hbWUpOwkJCi0gICAgfQorCUdUeXBlSW5mbyB0eXBlX2luZm8gPSB7
CisJCTAsICAgIC8qIGNsYXNzX3NpemUgKi8KIAotICAgIGlmIChnX3R5cGVfZnJvbV9uYW1lKHR5
cGVfbmFtZSkgIT0gMCkgewotICAgICAgICBwaHBfZXJyb3JfZG9jcmVmKE5VTEwgVFNSTUxTX0ND
LCBFX1dBUk5JTkcsICJ0eXBlICclcycgYWxyZWFkeSBleGlzdHM/IiwgdHlwZV9uYW1lKTsKLSAg
ICAgICAgCi0gICAgICAgIGlmIChmcmVlX25hbWUpIHsKLSAgICAgICAgICAgIGdfZnJlZSh0eXBl
X25hbWUpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisJCShHQmFzZUluaXRG
dW5jKSBOVUxMLAorCQkoR0Jhc2VGaW5hbGl6ZUZ1bmMpIE5VTEwsCiAKLSAgICB0eXBlX2luZm8u
Y2xhc3NfZGF0YSA9IGNsYXNzOwotICAgIGdfdHlwZV9xdWVyeShwYXJlbnRfdHlwZSwgJnF1ZXJ5
KTsKLSAgICB0eXBlX2luZm8uY2xhc3Nfc2l6ZSA9IHF1ZXJ5LmNsYXNzX3NpemU7Ci0gICAgdHlw
ZV9pbmZvLmluc3RhbmNlX3NpemUgPSBxdWVyeS5pbnN0YW5jZV9zaXplOworCQkoR0NsYXNzSW5p
dEZ1bmMpIHBocGdfb2JqZWN0X2NsYXNzX2luaXQsCisJCShHQ2xhc3NGaW5hbGl6ZUZ1bmMpIE5V
TEwsCisJCU5VTEwsIC8qIGNsYXNzX2RhdGEgKi8KIAotICAgIG5ld190eXBlID0gZ190eXBlX3Jl
Z2lzdGVyX3N0YXRpYyhwYXJlbnRfdHlwZSwgdHlwZV9uYW1lLCAmdHlwZV9pbmZvLCAwKTsKLSAg
ICBpZiAobmV3X3R5cGUgPT0gMCkgewotICAgICAgICBwaHBfZXJyb3JfZG9jcmVmKE5VTEwgVFNS
TUxTX0NDLCBFX1dBUk5JTkcsICJjb3VsZCBub3QgY3JlYXRlIG5ldyBHVHlwZSIpOwotICAgICAg
ICAKLSAgICAgICAgaWYgKGZyZWVfbmFtZSkgewotICAgICAgICAgICAgZ19mcmVlKHR5cGVfbmFt
ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KKwkJMCwgICAgLyogaW5zdGFu
Y2Vfc2l6ZSAqLworCQkwLCAgICAvKiBuX3ByZWFsbG9jcyAqLworCQkoR0luc3RhbmNlSW5pdEZ1
bmMpIE5VTEwKKwl9OworCisJaWYgKCFwaHBfZ3RrX3BhcnNlX2FyZ3MoWkVORF9OVU1fQVJHUygp
LCAiQyIsICZjZSkpIHsKKwkJcmV0dXJuOworCX0KKworCXBhcmVudF90eXBlID0gcGhwZ19ndHlw
ZV9mcm9tX2NsYXNzKGNlIFRTUk1MU19DQyk7CisJaWYgKCFwYXJlbnRfdHlwZSkgeworCQlyZXR1
cm47CisJfQorCisJdHlwZV9uYW1lID0gY2UtPm5hbWU7CisKKwkvKiBJZiB0aGlzIGlzIGEgbmFt
ZXNwYWNlZCBjbGFzcyB3ZSB3aWxsIGhhdmUgaXNzdWVzCisJc2luY2UgXCBpcyBub3QgYWxsb3dl
ZCwgc28gY29weSBhbmQgcmVwbGFjZSBcIHdpdGggXyAqLworCWlmICgoc3BsaXRfbmFtZSA9IGdf
c3Ryc3BsaXQoY2UtPm5hbWUsICJcXCIsIDApKSkgeworCQlmcmVlX25hbWUgPSAxOworCQl0eXBl
X25hbWUgPSBnX3N0cmpvaW52KCJfXyIsIHNwbGl0X25hbWUpOworCQlnX3N0cmZyZWV2KHNwbGl0
X25hbWUpOworCX0KKworCWlmIChnX3R5cGVfZnJvbV9uYW1lKHR5cGVfbmFtZSkgIT0gMCkgewor
CQlwaHBfZXJyb3JfZG9jcmVmKE5VTEwgVFNSTUxTX0NDLCBFX1dBUk5JTkcsICJ0eXBlICclcycg
YWxyZWFkeSBleGlzdHM/IiwgdHlwZV9uYW1lKTsKKwkJCisJCWlmIChmcmVlX25hbWUpIHsKKwkJ
CWdfZnJlZSh0eXBlX25hbWUpOworCQl9CisJCXJldHVybjsKKwl9CisKKwl0eXBlX2luZm8uY2xh
c3NfZGF0YSA9IGNlOworCWdfdHlwZV9xdWVyeShwYXJlbnRfdHlwZSwgJnF1ZXJ5KTsKKwl0eXBl
X2luZm8uY2xhc3Nfc2l6ZSA9IHF1ZXJ5LmNsYXNzX3NpemU7CisJdHlwZV9pbmZvLmluc3RhbmNl
X3NpemUgPSBxdWVyeS5pbnN0YW5jZV9zaXplOworCisJbmV3X3R5cGUgPSBnX3R5cGVfcmVnaXN0
ZXJfc3RhdGljKHBhcmVudF90eXBlLCB0eXBlX25hbWUsICZ0eXBlX2luZm8sIDApOworCWlmIChu
ZXdfdHlwZSA9PSAwKSB7CisJCXBocF9lcnJvcl9kb2NyZWYoTlVMTCBUU1JNTFNfQ0MsIEVfV0FS
TklORywgImNvdWxkIG5vdCBjcmVhdGUgbmV3IEdUeXBlIik7CisJCQorCQlpZiAoZnJlZV9uYW1l
KSB7CisJCQlnX2ZyZWUodHlwZV9uYW1lKTsKKwkJfQorCQlyZXR1cm47CisJfQogCiAJaWYgKCFw
aHBnX2NsYXNzX2tleSkgewogCQlwaHBnX2NsYXNzX2tleSA9IGdfcXVhcmtfZnJvbV9zdGF0aWNf
c3RyaW5nKHBocGdfY2xhc3NfaWQpOwogCX0KIAotICAgIGdfdHlwZV9zZXRfcWRhdGEobmV3X3R5
cGUsIHBocGdfY2xhc3Nfa2V5LCBjbGFzcyk7Ci0gICAgemVuZF9kZWNsYXJlX2NsYXNzX2NvbnN0
YW50X2xvbmcoY2xhc3MsICJndHlwZSIsIHNpemVvZigiZ3R5cGUiKS0xLCBuZXdfdHlwZSBUU1JN
TFNfQ0MpOworCWdfdHlwZV9zZXRfcWRhdGEobmV3X3R5cGUsIHBocGdfY2xhc3Nfa2V5LCBjZSk7
CisJemVuZF9kZWNsYXJlX2NsYXNzX2NvbnN0YW50X2xvbmcoY2UsICJndHlwZSIsIHNpemVvZigi
Z3R5cGUiKS0xLCBuZXdfdHlwZSBUU1JNTFNfQ0MpOworCisJemVuZF91cGRhdGVfY2xhc3NfY29u
c3RhbnRzKGNlIFRTUk1MU19DQyk7CiAKLSAgICB6ZW5kX3VwZGF0ZV9jbGFzc19jb25zdGFudHMo
Y2xhc3MgVFNSTUxTX0NDKTsKICNpZiBQSFBfVkVSU0lPTl9JRCA8IDUwMzk5Ci0gICAgLyogcmVn
aXN0ZXIgcHJvcGVydGllcyAqLwotICAgIGlmICh6ZW5kX2hhc2hfZmluZCgmY2xhc3MtPmRlZmF1
bHRfcHJvcGVydGllcywgIl9fZ3Byb3BlcnRpZXMiLCBzaXplb2YoIl9fZ3Byb3BlcnRpZXMiKSwg
KHZvaWQqKikmcHJvcF9kZWNscykgPT0gU1VDQ0VTUykgewotICAgICAgICBpZiAoWl9UWVBFX1BQ
KHByb3BfZGVjbHMpICE9IElTX0FSUkFZKSB7Ci0gICAgICAgICAgICBwaHBfZXJyb3JfZG9jcmVm
KE5VTEwgVFNSTUxTX0NDLCBFX1dBUk5JTkcsICJfX2dwcm9wZXJ0aWVzIHZhcmlhYmxlIGhhcyB0
byBiZSBhbiBhcnJheSIpOwotICAgICAgICAgICAgaWYgKGZyZWVfbmFtZSkgewotICAgICAgICAg
ICAgICAgIGdfZnJlZSh0eXBlX25hbWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChwaHBnX3JlZ2lzdGVyX3Byb3BlcnRpZXMobmV3
X3R5cGUsICpwcm9wX2RlY2xzKSA9PSBGQUlMVVJFKSB7Ci0gICAgICAgICAgICBpZiAoZnJlZV9u
YW1lKSB7Ci0gICAgICAgICAgICAgICAgZ19mcmVlKHR5cGVfbmFtZSk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgemVuZF9oYXNoX2RlbCgm
Y2xhc3MtPmRlZmF1bHRfcHJvcGVydGllcywgIl9fZ3Byb3BlcnRpZXMiLCBzaXplb2YoIl9fZ3By
b3BlcnRpZXMiKSk7Ci0gICAgfQorCS8qIHJlZ2lzdGVyIHByb3BlcnRpZXMgKi8KKwlpZiAoemVu
ZF9oYXNoX2ZpbmQoJmNlLT5kZWZhdWx0X3Byb3BlcnRpZXMsICJfX2dwcm9wZXJ0aWVzIiwgc2l6
ZW9mKCJfX2dwcm9wZXJ0aWVzIiksICh2b2lkKiopJnByb3BfZGVjbHMpID09IFNVQ0NFU1MpIHsK
KwkJaWYgKFpfVFlQRV9QUChwcm9wX2RlY2xzKSAhPSBJU19BUlJBWSkgeworCQkJcGhwX2Vycm9y
X2RvY3JlZihOVUxMIFRTUk1MU19DQywgRV9XQVJOSU5HLCAiX19ncHJvcGVydGllcyB2YXJpYWJs
ZSBoYXMgdG8gYmUgYW4gYXJyYXkiKTsKKwkJCWlmIChmcmVlX25hbWUpIHsKKwkJCQlnX2ZyZWUo
dHlwZV9uYW1lKTsKKwkJCX0KKwkJCXJldHVybjsKKwkJfQorCQlpZiAocGhwZ19yZWdpc3Rlcl9w
cm9wZXJ0aWVzKG5ld190eXBlLCAqcHJvcF9kZWNscykgPT0gRkFJTFVSRSkgeworCQkJaWYgKGZy
ZWVfbmFtZSkgeworCQkJCWdfZnJlZSh0eXBlX25hbWUpOworCQkJfQorCQkJcmV0dXJuOworCQl9
CisJCXplbmRfaGFzaF9kZWwoJmNlLT5kZWZhdWx0X3Byb3BlcnRpZXMsICJfX2dwcm9wZXJ0aWVz
Iiwgc2l6ZW9mKCJfX2dwcm9wZXJ0aWVzIikpOworCX0KIAotICAgIC8qIHJlZ2lzdGVyIHNpZ25h
bHMgKi8KLSAgICBpZiAoemVuZF9oYXNoX2ZpbmQoJmNsYXNzLT5kZWZhdWx0X3Byb3BlcnRpZXMs
ICJfX2dzaWduYWxzIiwgc2l6ZW9mKCJfX2dzaWduYWxzIiksICh2b2lkKiopJnNpZ25hbF9kZWNs
cykgPT0gU1VDQ0VTUykgewotICAgICAgICBpZiAoWl9UWVBFX1BQKHNpZ25hbF9kZWNscykgIT0g
SVNfQVJSQVkpIHsKLSAgICAgICAgICAgIHBocF9lcnJvcl9kb2NyZWYoTlVMTCBUU1JNTFNfQ0Ms
IEVfV0FSTklORywgIl9fZ3NpZ25hbHMgdmFyaWFibGUgaGFzIHRvIGJlIGFuIGFycmF5Iik7Ci0g
ICAgICAgICAgICBpZiAoZnJlZV9uYW1lKSB7Ci0gICAgICAgICAgICAgICAgZ19mcmVlKHR5cGVf
bmFtZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKHBocGdfcmVnaXN0ZXJfc2lnbmFscyhuZXdfdHlwZSwgKnNpZ25hbF9kZWNscykg
PT0gRkFJTFVSRSkgewotICAgICAgICAgICAgaWYgKGZyZWVfbmFtZSkgewotICAgICAgICAgICAg
ICAgIGdfZnJlZSh0eXBlX25hbWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgICAgIHplbmRfaGFzaF9kZWwoJmNsYXNzLT5kZWZhdWx0X3Byb3Bl
cnRpZXMsICJfX2dzaWduYWxzIiwgc2l6ZW9mKCJfX2dzaWduYWxzIikpOwotICAgIH0KKwkvKiBy
ZWdpc3RlciBzaWduYWxzICovCisJaWYgKHplbmRfaGFzaF9maW5kKCZjZS0+ZGVmYXVsdF9wcm9w
ZXJ0aWVzLCAiX19nc2lnbmFscyIsIHNpemVvZigiX19nc2lnbmFscyIpLCAodm9pZCoqKSZzaWdu
YWxfZGVjbHMpID09IFNVQ0NFU1MpIHsKKwkJaWYgKFpfVFlQRV9QUChzaWduYWxfZGVjbHMpICE9
IElTX0FSUkFZKSB7CisJCQlwaHBfZXJyb3JfZG9jcmVmKE5VTEwgVFNSTUxTX0NDLCBFX1dBUk5J
TkcsICJfX2dzaWduYWxzIHZhcmlhYmxlIGhhcyB0byBiZSBhbiBhcnJheSIpOworCQkJaWYgKGZy
ZWVfbmFtZSkgeworCQkJCWdfZnJlZSh0eXBlX25hbWUpOworCQkJfQorCQkJcmV0dXJuOworCQl9
CisJCWlmIChwaHBnX3JlZ2lzdGVyX3NpZ25hbHMobmV3X3R5cGUsICpzaWduYWxfZGVjbHMgVFNS
TUxTX0NDKSA9PSBGQUlMVVJFKSB7CisJCQlpZiAoZnJlZV9uYW1lKSB7CisJCQkJZ19mcmVlKHR5
cGVfbmFtZSk7CisJCQl9CisJCQlyZXR1cm47CisJCX0KKwkJemVuZF9oYXNoX2RlbCgmY2UtPmRl
ZmF1bHRfcHJvcGVydGllcywgIl9fZ3NpZ25hbHMiLCBzaXplb2YoIl9fZ3NpZ25hbHMiKSk7CisJ
fQorI2Vsc2UKKy8qIFRoaXMgaXMgaG9ycmlibHkgcGFpbmZ1bCBpbiA1LjQgKi8KKworCWlmICh6
ZW5kX2hhc2hfcXVpY2tfZmluZCgmY2UtPnByb3BlcnRpZXNfaW5mbywgIl9fZ3Byb3BlcnRpZXMi
LCBzaXplb2YoIl9fZ3Byb3BlcnRpZXMiKSwKKwkJCQkJCQkgaF9wcm9wZXJ0aWVzLCAodm9pZCoq
KSZwcm9wZXJ0eV9pbmZvX3B0cikgPT0gU1VDQ0VTUyAmJgorCQkocHJvcGVydHlfaW5mb19wdHIt
PmZsYWdzICYgWkVORF9BQ0NfU1RBVElDKSA9PSAwKSB7CisKKwkJCXByb3BlcnR5ID0gY2UtPmRl
ZmF1bHRfcHJvcGVydGllc190YWJsZVtwcm9wZXJ0eV9pbmZvX3B0ci0+b2Zmc2V0XTsKKwkJCWlm
IChaX1RZUEVfUChwcm9wZXJ0eSkgIT0gSVNfQVJSQVkpIHsKKwkJCQlwaHBfZXJyb3JfZG9jcmVm
KE5VTEwgVFNSTUxTX0NDLCBFX1dBUk5JTkcsICJfX2dwcm9wZXJ0aWVzIHZhcmlhYmxlIGhhcyB0
byBiZSBhbiBhcnJheSIpOworCQkJCWlmIChmcmVlX25hbWUpIHsKKwkJCQkJZ19mcmVlKHR5cGVf
bmFtZSk7CisJCQkJfQorCQkJCXJldHVybjsKKwkJCX0KKwkJCWlmIChwaHBnX3JlZ2lzdGVyX3By
b3BlcnRpZXMobmV3X3R5cGUsIHByb3BlcnR5KSA9PSBGQUlMVVJFKSB7CisJCQkJaWYgKGZyZWVf
bmFtZSkgeworCQkJCQlnX2ZyZWUodHlwZV9uYW1lKTsKKwkJCQl9CisJCQkJcmV0dXJuOworCQkJ
fQorCisJCQl6ZW5kX2hhc2hfcXVpY2tfZGVsKCZjZS0+cHJvcGVydGllc19pbmZvLCAiX19ncHJv
cGVydGllcyIsCisJCQkJCQkJCXNpemVvZigiX19ncHJvcGVydGllcyIpLCBoX3Byb3BlcnRpZXMp
OworICAgIH0KKworCWlmICh6ZW5kX2hhc2hfcXVpY2tfZmluZCgmY2UtPnByb3BlcnRpZXNfaW5m
bywgIl9fZ3NpZ25hbHMiLCBzaXplb2YoIl9fZ3NpZ25hbHMiKSwKKwkJCQkJCQkgaF9zaWduYWxz
LCAodm9pZCoqKSZwcm9wZXJ0eV9pbmZvX3B0cikgPT0gU1VDQ0VTUyAmJgorCQkocHJvcGVydHlf
aW5mb19wdHItPmZsYWdzICYgWkVORF9BQ0NfU1RBVElDKSA9PSAwKSB7CisKKwkJCXByb3BlcnR5
ID0gY2UtPmRlZmF1bHRfcHJvcGVydGllc190YWJsZVtwcm9wZXJ0eV9pbmZvX3B0ci0+b2Zmc2V0
XTsKKwkJCWlmIChaX1RZUEVfUChwcm9wZXJ0eSkgIT0gSVNfQVJSQVkpIHsKKwkJCQlwaHBfZXJy
b3JfZG9jcmVmKE5VTEwgVFNSTUxTX0NDLCBFX1dBUk5JTkcsICJfX2dzaWduYWxzIHZhcmlhYmxl
IGhhcyB0byBiZSBhbiBhcnJheSIpOworCQkJCWlmIChmcmVlX25hbWUpIHsKKwkJCQkJZ19mcmVl
KHR5cGVfbmFtZSk7CisJCQkJfQorCQkJCXJldHVybjsKKwkJCX0KKwkJCWlmIChwaHBnX3JlZ2lz
dGVyX3NpZ25hbHMobmV3X3R5cGUsIHByb3BlcnR5IFRTUk1MU19DQykgPT0gRkFJTFVSRSkgewor
CQkJCWlmIChmcmVlX25hbWUpIHsKKwkJCQkJZ19mcmVlKHR5cGVfbmFtZSk7CisJCQkJfQorCQkJ
CXJldHVybjsKKwkJCX0KKworCQkJemVuZF9oYXNoX3F1aWNrX2RlbCgmY2UtPnByb3BlcnRpZXNf
aW5mbywgIl9fZ3NpZ25hbHMiLAorCQkJCQkJCQlzaXplb2YoIl9fZ3NpZ25hbHMiKSwgaF9zaWdu
YWxzKTsKKwl9CiAjZW5kaWYKICAgICBpZiAoZnJlZV9uYW1lKSB7CiAgICAgICAgIGdfZnJlZSh0
eXBlX25hbWUpOwpkaWZmIC0tZ2l0IGEvbWFpbi9waHBnX3N1cHBvcnQuYyBiL21haW4vcGhwZ19z
dXBwb3J0LmMKaW5kZXggNjk1OTAyZS4uZGIxZTk0ZCAxMDA2NDQKLS0tIGEvbWFpbi9waHBnX3N1
cHBvcnQuYworKysgYi9tYWluL3BocGdfc3VwcG9ydC5jCkBAIC0yNyw3ICsyNyw3IEBACiAgKi8K
IAogLyoge3t7IHBocGdfcmVhZF9wcm9wZXJ0eSgpICovCi16dmFsKiBwaHBnX3JlYWRfcHJvcGVy
dHkoenZhbCAqb2JqZWN0LCB6dmFsICptZW1iZXIsIGludCB0eXBlIFRTUk1MU19EQykKK3p2YWwq
IHBocGdfcmVhZF9wcm9wZXJ0eSh6dmFsICpvYmplY3QsIHp2YWwgKm1lbWJlciwgaW50IHR5cGUg
UEhQR1RLX1BST1BFUlRZX0VORCkKIHsKIAlwaHBnX2hlYWRfdCAqcG9oID0gTlVMTDsKIAl6dmFs
IHRtcF9tZW1iZXI7CkBAIC03OSw3ICs3OSw3IEBAIHp2YWwqIHBocGdfcmVhZF9wcm9wZXJ0eSh6
dmFsICpvYmplY3QsIHp2YWwgKm1lbWJlciwgaW50IHR5cGUgVFNSTUxTX0RDKQogLyogfX19ICov
CiAKIC8qIHt7eyBwaHBnX3dyaXRlX3Byb3BlcnR5KCkgKi8KLXZvaWQgcGhwZ193cml0ZV9wcm9w
ZXJ0eSh6dmFsICpvYmplY3QsIHp2YWwgKm1lbWJlciwgenZhbCAqdmFsdWUgVFNSTUxTX0RDKQor
dm9pZCBwaHBnX3dyaXRlX3Byb3BlcnR5KHp2YWwgKm9iamVjdCwgenZhbCAqbWVtYmVyLCB6dmFs
ICp2YWx1ZSBQSFBHVEtfUFJPUEVSVFlfRU5EKQogewogCXBocGdfaGVhZF90ICpwb2ggPSBOVUxM
OwogCXp2YWwgdG1wX21lbWJlcjsKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIHBocGdfd3JpdGVf
cHJvcGVydHkoenZhbCAqb2JqZWN0LCB6dmFsICptZW1iZXIsIHp2YWwgKnZhbHVlIFRTUk1MU19E
QykKIC8qIH19fSAqLwogCiAvKiB7e3sgcGhwZ19nZXRfcHJvcGVydHlfcHRyX3B0cigpICovCi16
dmFsICoqcGhwZ19nZXRfcHJvcGVydHlfcHRyX3B0cih6dmFsICpvYmplY3QsIHp2YWwgKm1lbWJl
ciBUU1JNTFNfREMpCit6dmFsICoqcGhwZ19nZXRfcHJvcGVydHlfcHRyX3B0cih6dmFsICpvYmpl
Y3QsIHp2YWwgKm1lbWJlciBQSFBHVEtfUFJPUEVSVFlfRU5EKQogewogICAgIHBocGdfaGVhZF90
ICpwb2ggPSBOVUxMOwogICAgIHp2YWwgdG1wX21lbWJlcjsKQEAgLTI0OCw3ICsyNDgsOCBAQCBQ
SFBfR1RLX0FQSSB2b2lkIHBocGdfZ2V0X3Byb3BlcnRpZXNfaGVscGVyKHp2YWwgKm9iamVjdCwg
SGFzaFRhYmxlICpodCBUU1JNTFNfRAogI2VuZGlmCiAgICAgd2hpbGUgKChwcm9wID0gdmFfYXJn
KHZhLCBjaGFyICopKSAhPSBOVUxMKSB7CiAgICAgICAgIHByb3BfbGVuID0gdmFfYXJnKHZhLCBp
bnQpOwotICAgICAgICByZXN1bHQgPSB6ZW5kX3JlYWRfcHJvcGVydHkoY2UsIG9iamVjdCwgcHJv
cCwgcHJvcF9sZW4sIDEgVFNSTUxTX0NDKTsKKwkJcmVzdWx0ID0gemVuZF9yZWFkX3Byb3BlcnR5
KGNlLCBvYmplY3QsIHByb3AsIHByb3BfbGVuLCAxIFRTUk1MU19DQyk7CisKICAgICAgICAgLyoK
ICAgICAgICAgICogemVuZF9yZWFkX3Byb3BlcnR5IHdpbGwgcmV0dXJuIGEgdGVtcG9yYXJ5IHp2
YWwsIHNvIHdlIG5lZWQgdG8KICAgICAgICAgICogaW5pdGlhbGl6ZSBpdCBpbiBvcmRlciB0byBr
ZWVwIGl0IGFyb3VuZC4=

--7194303ed6d323fcfd0dfaa0523b4e17aeca1d67--