[OpenAFS-devel] windows client crypt patches

Volker Holfeld volker.holfeld@e-technik.tu-chemnitz.de
Wed, 04 Apr 2001 10:26:26 +0200 (MEST)


This message is in MIME format.

---MOQ9863727866e69b54a461a9ceb3234069dbfdba7bd
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit

here are some patches to enable the "fs setcrypt" "fs getcrypt" features
for the windows client. it also introduces a new registry parameter
"SecurityLevel" as a DWORD which may be used to enable crypted fileserver 
connections at client startup, it has to be set by hand to "1" for now to use 
encryption by default.
another patch deals with the missing "GlobalAutoMapper" registry key, it
will be now created if it is missing when a global drive is defined with the 
gui.
all patches are against the vanilla openafs-1.0.3 distribution.

-volker.

---MOQ9863727866e69b54a461a9ceb3234069dbfdba7bd
Content-Type: application/octet-stream; name="openafs-winnt-crypt.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="openafs-winnt-crypt.patch"

ZGlmZiAtdSAtciAvYWZzL2Nzbi12NjQudHUtY2hlbW5pdHouZGUvb3BlbmFmcy9zcmMvV0lOTlQv
YWZzZC9hZnNkX2luaXQuYyBzcmMvV0lOTlQvYWZzZC9hZnNkX2luaXQuYwotLS0gL2Fmcy9jc24t
djY0LnR1LWNoZW1uaXR6LmRlL29wZW5hZnMvc3JjL1dJTk5UL2Fmc2QvYWZzZF9pbml0LmMJU2F0
IE5vdiAgNCAxMTowMTozNSAyMDAwCisrKyBzcmMvV0lOTlQvYWZzZC9hZnNkX2luaXQuYwlUdWUg
QXByICAzIDE2OjU3OjMzIDIwMDEKQEAgLTMxLDYgKzMxLDggQEAKIGV4dGVybiBpbnQgUlhBRlND
Ql9FeGVjdXRlUmVxdWVzdCgpOwogZXh0ZXJuIGludCBSWFNUQVRTX0V4ZWN1dGVSZXF1ZXN0KCk7
CiAKK2V4dGVybiBhZnNfaW50MzIgY3J5cHRhbGw7CisKIGNoYXIgQUZTQ29uZmlnS2V5TmFtZVtd
ID0KIAkiU1lTVEVNXFxDdXJyZW50Q29udHJvbFNldFxcU2VydmljZXNcXFRyYW5zYXJjQUZTRGFl
bW9uXFxQYXJhbWV0ZXJzIjsKIApAQCAtMzc4LDYgKzM4MCwxNiBAQAogCWVsc2UgewogCQlzdHJj
YXQoY21fc3lzTmFtZSwgImkzODZfbnQ0MCIpOwogCQlhZnNpX2xvZygiRGVmYXVsdCBzeXMgbmFt
ZSAlcyIsIGNtX3N5c05hbWUpOworCX0KKworCWR1bW15TGVuID0gc2l6ZW9mKGNyeXB0YWxsKTsK
Kwljb2RlID0gUmVnUXVlcnlWYWx1ZUV4KHBhcm1LZXksICJTZWN1cml0eUxldmVsIiwgTlVMTCwg
TlVMTCwKKwkJCQkoQllURSAqKSAmY3J5cHRhbGwsICZkdW1teUxlbik7CisJaWYgKGNvZGUgPT0g
RVJST1JfU1VDQ0VTUykKKwkJYWZzaV9sb2coIlNlY3VyaXR5TGV2ZWwgaXMgJXMiLCBjcnlwdGFs
bD8iY3J5cHQiOiJjbGVhciIpOworCWVsc2UgeworCQljcnlwdGFsbCA9IHJ4a2FkX2NsZWFyOwor
CQlhZnNpX2xvZygiRGVmYXVsdCBTZWN1cml0eUxldmVsIGlzIGNsZWFyIik7CiAJfQogCiAJUmVn
Q2xvc2VLZXkgKHBhcm1LZXkpOwpkaWZmIC11IC1yIC9hZnMvY3NuLXY2NC50dS1jaGVtbml0ei5k
ZS9vcGVuYWZzL3NyYy9XSU5OVC9hZnNkL2NtX2Nvbm4uYyBzcmMvV0lOTlQvYWZzZC9jbV9jb25u
LmMKLS0tIC9hZnMvY3NuLXY2NC50dS1jaGVtbml0ei5kZS9vcGVuYWZzL3NyYy9XSU5OVC9hZnNk
L2NtX2Nvbm4uYwlTYXQgTm92ICA0IDExOjAxOjM3IDIwMDAKKysrIHNyYy9XSU5OVC9hZnNkL2Nt
X2Nvbm4uYwlUdWUgQXByICAzIDE1OjQ3OjA2IDIwMDEKQEAgLTIzLDYgKzIzLDggQEAKIAogbG9u
ZyBSRFJ0aW1lb3V0ID0gQ01fQ09OTl9ERUZBVUxUUkRSVElNRU9VVDsKIAorYWZzX2ludDMyIGNy
eXB0YWxsID0gMDsKKwogdm9pZCBjbV9QdXRDb25uKGNtX2Nvbm5fdCAqY29ubnApCiB7CiAJbG9j
a19PYnRhaW5Xcml0ZSgmY21fY29ubkxvY2spOwpAQCAtMzI5LDYgKzMzMSw3IEBACiAgICAgICAg
IGludCBzZXJ2aWNlSUQ7CiAgICAgICAgIGludCBzZWNJbmRleDsKICAgICAgICAgc3RydWN0IHJ4
X3NlY3VyaXR5Q2xhc3MgKnNlY09ianA7CisJYWZzX2ludDMyIGxldmVsOwogCiAJaWYgKHNlcnZl
cnAtPnR5cGUgPT0gQ01fU0VSVkVSX1ZMREIpIHsKIAkJcG9ydCA9IGh0b25zKDcwMDMpOwpAQCAt
MzQxLDcgKzM0NCwxMyBAQAogICAgICAgICB9CiAJaWYgKHVjZWxscC0+ZmxhZ3MgJiBDTV9VQ0VM
TEZMQUdfUlhLQUQpIHsKIAkJc2VjSW5kZXggPSAyOwotICAgICAgICAgICAgICAgIHNlY09ianAg
PSByeGthZF9OZXdDbGllbnRTZWN1cml0eU9iamVjdChyeGthZF9jbGVhciwKKwkJaWYgKGNyeXB0
YWxsKSB7CisJCQlsZXZlbCA9IHJ4a2FkX2NyeXB0OworCQkJdGNwLT5jcnlwdGxldmVsID0gcnhr
YWRfY3J5cHQ7CisJCX0gZWxzZSB7CisJCQlsZXZlbCA9IHJ4a2FkX2NsZWFyOworCQl9CisgICAg
ICAgICAgICAgICAgc2VjT2JqcCA9IHJ4a2FkX05ld0NsaWVudFNlY3VyaXR5T2JqZWN0KGxldmVs
LAogCQkJJnVjZWxscC0+c2Vzc2lvbktleSwgdWNlbGxwLT5rdm5vLAogCQkJdWNlbGxwLT50aWNr
ZXRMZW4sIHVjZWxscC0+dGlja2V0cCk7CiAgICAgICAgIH0KQEAgLTM4MiwxMSArMzkxLDEzIEBA
CiAgICAgICAgICAgICAgICAgY21fSG9sZFVzZXIodXNlcnApOwogICAgICAgICAgICAgICAgIGxv
Y2tfSW5pdGlhbGl6ZU11dGV4KCZ0Y3AtPm14LCAiY21fY29ubl90IG11dGV4Iik7CiAgICAgICAg
ICAgICAgICAgdGNwLT5zZXJ2ZXJwID0gc2VydmVycDsKKwkJdGNwLT5jcnlwdGxldmVsID0gcnhr
YWRfY2xlYXI7CiAJCWNtX05ld1JYQ29ubmVjdGlvbih0Y3AsIHVjZWxscCwgc2VydmVycCk7CiAJ
CXRjcC0+cmVmQ291bnQgPSAxOwogICAgICAgICB9CiAJZWxzZSB7Ci0JCWlmICh0Y3AtPnVjZ2Vu
IDwgdWNlbGxwLT5nZW4pIHsKKwkJaWYgKCh0Y3AtPnVjZ2VuIDwgdWNlbGxwLT5nZW4pIHx8ICh0
Y3AtPmNyeXB0bGV2ZWwgIT0gY3J5cHRhbGwpKQorCQl7CiAJCQlyeF9EZXN0cm95Q29ubmVjdGlv
bih0Y3AtPmNhbGxwKTsKIAkJCWNtX05ld1JYQ29ubmVjdGlvbih0Y3AsIHVjZWxscCwgc2VydmVy
cCk7CiAJCX0KZGlmZiAtdSAtciAvYWZzL2Nzbi12NjQudHUtY2hlbW5pdHouZGUvb3BlbmFmcy9z
cmMvV0lOTlQvYWZzZC9jbV9jb25uLmggc3JjL1dJTk5UL2Fmc2QvY21fY29ubi5oCi0tLSAvYWZz
L2Nzbi12NjQudHUtY2hlbW5pdHouZGUvb3BlbmFmcy9zcmMvV0lOTlQvYWZzZC9jbV9jb25uLmgJ
U2F0IE5vdiAgNCAxMTowMTozOCAyMDAwCisrKyBzcmMvV0lOTlQvYWZzZC9jbV9jb25uLmgJVHVl
IEFwciAgMyAxNTo0MDo0MSAyMDAxCkBAIC0yMyw2ICsyMyw3IEBACiAgICAgICAgIGludCByZWZD
b3VudDsJCQkvKiBsb2NrZWQgYnkgY21fY29ubkxvY2sgKi8KIAlpbnQgdWNnZW47CQkJLyogdWNl
bGxwJ3MgZ2VuZXJhdGlvbiBudW1iZXIgKi8KICAgICAgICAgbG9uZyBmbGFnczsJCQkvKiBsb2Nr
ZWQgYnkgbXggKi8KKwlpbnQgY3J5cHRsZXZlbDsJCQkvKiBlbmNyeXRpb24gc3RhdHVzICovCiB9
IGNtX2Nvbm5fdDsKIAogLyogc3RydWN0dXJlIHVzZWQgZm9yIHRyYWNraW5nIFJQQyBwcm9ncmVz
cyAqLwpkaWZmIC11IC1yIC9hZnMvY3NuLXY2NC50dS1jaGVtbml0ei5kZS9vcGVuYWZzL3NyYy9X
SU5OVC9hZnNkL2NtX2lvY3RsLmMgc3JjL1dJTk5UL2Fmc2QvY21faW9jdGwuYwotLS0gL2Fmcy9j
c24tdjY0LnR1LWNoZW1uaXR6LmRlL29wZW5hZnMvc3JjL1dJTk5UL2Fmc2QvY21faW9jdGwuYwlT
YXQgTm92ICA0IDExOjAxOjM4IDIwMDAKKysrIHNyYy9XSU5OVC9hZnNkL2NtX2lvY3RsLmMJVHVl
IEFwciAgMyAxNDozMzoyMSAyMDAxCkBAIC0zNSw2ICszNSw4IEBACiAKIG9zaV9tdXRleF90IGNt
X0Fmc2RzYm10X0xvY2s7CiAKK2V4dGVybiBhZnNfaW50MzIgY3J5cHRhbGw7CisKIHZvaWQgY21f
SW5pdElvY3RsKHZvaWQpCiB7CiAJbG9ja19Jbml0aWFsaXplTXV0ZXgoJmNtX0Fmc2RzYm10X0xv
Y2ssICJBRlNEU0JNVC5JTkkgQWNjZXNzIExvY2siKTsKQEAgLTE3ODgsMyArMTc5MCwxOSBAQAog
CXJldHVybiAwOwogfQogCitsb25nIGNtX0lvY3RsR2V0UnhrY3J5cHQoc21iX2lvY3RsX3QgKmlv
Y3RscCwgY21fdXNlcl90ICp1c2VycCkKK3sKKwltZW1jcHkoaW9jdGxwLT5vdXREYXRhcCwgJmNy
eXB0YWxsLCBzaXplb2YoY3J5cHRhbGwpKTsKKyAgICAgICAgaW9jdGxwLT5vdXREYXRhcCArPSBz
aXplb2YoY3J5cHRhbGwpOworCisJcmV0dXJuIDA7Cit9CisKK2xvbmcgY21fSW9jdGxTZXRSeGtj
cnlwdChzbWJfaW9jdGxfdCAqaW9jdGxwLCBjbV91c2VyX3QgKnVzZXJwKQoreworCWNtX1NraXBJ
b2N0bFBhdGgoaW9jdGxwKTsKKworCW1lbWNweSgmY3J5cHRhbGwsIGlvY3RscC0+aW5EYXRhcCwg
c2l6ZW9mKGNyeXB0YWxsKSk7CisKKwlyZXR1cm4gMDsKK30KZGlmZiAtdSAtciAvYWZzL2Nzbi12
NjQudHUtY2hlbW5pdHouZGUvb3BlbmFmcy9zcmMvV0lOTlQvYWZzZC9jbV9pb2N0bC5oIHNyYy9X
SU5OVC9hZnNkL2NtX2lvY3RsLmgKLS0tIC9hZnMvY3NuLXY2NC50dS1jaGVtbml0ei5kZS9vcGVu
YWZzL3NyYy9XSU5OVC9hZnNkL2NtX2lvY3RsLmgJU2F0IE5vdiAgNCAxMTowMTozOSAyMDAwCisr
KyBzcmMvV0lOTlQvYWZzZC9jbV9pb2N0bC5oCVR1ZSBBcHIgIDMgMTQ6MTU6MDYgMjAwMQpAQCAt
MTE5LDYgKzExOSwxMCBAQAogCiBleHRlcm4gbG9uZyBjbV9Jb2N0bE1ha2VTdWJtb3VudChzbWJf
aW9jdGxfdCAqaW9jdGxwLCBjbV91c2VyX3QgKnVzZXJwKTsKIAorZXh0ZXJuIGxvbmcgY21fSW9j
dGxHZXRSeGtjcnlwdChzbWJfaW9jdGxfdCAqaW9jdGxwLCBjbV91c2VyX3QgKnVzZXJwKTsKKwor
ZXh0ZXJuIGxvbmcgY21fSW9jdGxTZXRSeGtjcnlwdChzbWJfaW9jdGxfdCAqaW9jdGxwLCBjbV91
c2VyX3QgKnVzZXJwKTsKKwogI2VuZGlmIC8qIF9fQ01fSU9DVExfSU5URVJGQUNFU19PTkxZX18g
Ki8KIAogI2VuZGlmIC8qICBfX0NNX0lPQ1RMX0hfRU5WX18gKi8KZGlmZiAtdSAtciAvYWZzL2Nz
bi12NjQudHUtY2hlbW5pdHouZGUvb3BlbmFmcy9zcmMvV0lOTlQvYWZzZC9mcy5jIHNyYy9XSU5O
VC9hZnNkL2ZzLmMKLS0tIC9hZnMvY3NuLXY2NC50dS1jaGVtbml0ei5kZS9vcGVuYWZzL3NyYy9X
SU5OVC9hZnNkL2ZzLmMJU2F0IE5vdiAgNCAxMTowMTo0MSAyMDAwCisrKyBzcmMvV0lOTlQvYWZz
ZC9mcy5jCVR1ZSBBcHIgIDMgMTQ6NTU6MDcgMjAwMQpAQCAtMjYyMSw2ICsyNjIxLDU5IEBACiAg
ICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBhZnNfaW50MzIgU2V0Q3J5cHRDbWQoYXMpCisgICAg
c3RydWN0IGNtZF9zeW5kZXNjICphczsKK3sKKyAgICBhZnNfaW50MzIgY29kZSA9IDAsIGZsYWc7
CisgICAgc3RydWN0IFZpY2VJb2N0bCBibG9iOworICAgIGNoYXIgKnRwOworIAorICAgIHRwID0g
YXMtPnBhcm1zWzBdLml0ZW1zLT5kYXRhOworICAgIGlmIChzdHJjbXAodHAsICJvbiIpID09IDAp
CisgICAgICBmbGFnID0gMTsKKyAgICBlbHNlIGlmIChzdHJjbXAodHAsICJvZmYiKSA9PSAwKQor
ICAgICAgZmxhZyA9IDA7CisgICAgZWxzZSB7CisgICAgICBmcHJpbnRmIChzdGRlcnIsICIlczog
JXMgbXVzdCBiZSBcIm9uXCIgb3IgXCJvZmZcIi5cbiIsIHBuLCB0cCk7CisgICAgICByZXR1cm4g
RUlOVkFMOworICAgIH0KKworICAgIGJsb2IuaW4gPSAoY2hhciAqKSAmZmxhZzsKKyAgICBibG9i
LmluX3NpemUgPSBzaXplb2YoZmxhZyk7CisgICAgYmxvYi5vdXRfc2l6ZSA9IDA7CisgICAgY29k
ZSA9IHBpb2N0bCgwLCBWSU9DX1NFVFJYS0NSWVBULCAmYmxvYiwgMSk7CisgICAgaWYgKGNvZGUp
CisgICAgICBEaWUoY29kZSwgKGNoYXIgKikgMCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRp
YyBhZnNfaW50MzIgR2V0Q3J5cHRDbWQoYXMpCisgICAgc3RydWN0IGNtZF9zeW5kZXNjICphczsK
K3sKKyAgICBhZnNfaW50MzIgY29kZSA9IDAsIGZsYWc7CisgICAgc3RydWN0IFZpY2VJb2N0bCBi
bG9iOworICAgIGNoYXIgKnRwOworIAorICAgIGJsb2IuaW4gPSAoY2hhciAqKSAwOworICAgIGJs
b2IuaW5fc2l6ZSA9IDA7CisgICAgYmxvYi5vdXRfc2l6ZSA9IHNpemVvZihmbGFnKTsKKyAgICBi
bG9iLm91dCA9IHNwYWNlOworCisgICAgY29kZSA9IHBpb2N0bCgwLCBWSU9DX0dFVFJYS0NSWVBU
LCAmYmxvYiwgMSk7CisKKyAgICBpZiAoY29kZSkgRGllKGNvZGUsIChjaGFyICopIDApOworICAg
IGVsc2UgeworICAgICAgdHAgPSBzcGFjZTsKKyAgICAgIGJjb3B5KHRwLCAmZmxhZywgc2l6ZW9m
KGFmc19pbnQzMikpOworICAgICAgcHJpbnRmKCJTZWN1cml0eSBsZXZlbCBpcyBjdXJyZW50bHkg
Iik7CisgICAgICBpZiAoZmxhZyA9PSAxKQorICAgICAgICBwcmludGYoImNyeXB0IChkYXRhIHNl
Y3VyaXR5KS5cbiIpOworICAgICAgZWxzZQorICAgICAgICBwcmludGYoImNsZWFyLlxuIik7Cisg
ICAgfQorICAgIHJldHVybiAwOworfQorCiBtYWluKGFyZ2MsIGFyZ3YpCiBpbnQgYXJnYzsKIGNo
YXIgKiphcmd2OyB7CkBAIC0yODM4LDcgKzI4OTEsMTIgQEAKICAgICBjbWRfQWRkUGFybSh0cywg
Ii1maWxlcyIsIENNRF9MSVNULCBDTURfT1BUSU9OQUwsICJzcGVjaWZpYyBwYXRobmFtZXMiKTsK
ICAgICBjbWRfQWRkUGFybSh0cywgIi1hbGxmaWxlcyIsIENNRF9TSU5HTEUsIENNRF9PUFRJT05B
TCwgIm5ldyBkZWZhdWx0IChLQikiKTsKICAgICBjbWRfQ3JlYXRlQWxpYXModHMsICJzYiIpOwot
ICAgIAorCisgICAgdHMgPSBjbWRfQ3JlYXRlU3ludGF4KCJzZXRjcnlwdCIsIFNldENyeXB0Q21k
LCAwLCAic2V0IGNhY2hlIG1hbmFnZXIgZW5jcnlwdGlvbiBmbGFnIik7CisgICAgY21kX0FkZFBh
cm0odHMsICItY3J5cHQiLCBDTURfU0lOR0xFLCAwLCAib24gb3Igb2ZmIik7CisKKyAgICB0cyA9
IGNtZF9DcmVhdGVTeW50YXgoImdldGNyeXB0IiwgR2V0Q3J5cHRDbWQsIDAsICJnZXQgY2FjaGUg
bWFuYWdlciBlbmNyeXB0aW9uIGZsYWciKTsKKwogICAgIHRzID0gY21kX0NyZWF0ZVN5bnRheCgi
dHJhY2UiLCBUcmFjZUNtZCwgMCwgImVuYWJsZSBvciBkaXNhYmxlIENNIHRyYWNpbmciKTsKICAg
ICBjbWRfQWRkUGFybSh0cywgIi1vbiIsIENNRF9GTEFHLCBDTURfT1BUSU9OQUwsICJlbmFibGUg
dHJhY2luZyIpOwogICAgIGNtZF9BZGRQYXJtKHRzLCAiLW9mZiIsIENNRF9GTEFHLCBDTURfT1BU
SU9OQUwsICJkaXNhYmxlIHRyYWNpbmciKTsKZGlmZiAtdSAtciAvYWZzL2Nzbi12NjQudHUtY2hl
bW5pdHouZGUvb3BlbmFmcy9zcmMvV0lOTlQvYWZzZC9zbWJfaW9jb25zLmggc3JjL1dJTk5UL2Fm
c2Qvc21iX2lvY29ucy5oCi0tLSAvYWZzL2Nzbi12NjQudHUtY2hlbW5pdHouZGUvb3BlbmFmcy9z
cmMvV0lOTlQvYWZzZC9zbWJfaW9jb25zLmgJU2F0IE5vdiAgNCAxMTowMTo0NSAyMDAwCisrKyBz
cmMvV0lOTlQvYWZzZC9zbWJfaW9jb25zLmgJVHVlIEFwciAgMyAxMzo1NToxMyAyMDAxCkBAIC04
OCw0ICs4OCw3IEBACiAjZGVmaW5lIFZJT0NfREVMU1lNTElOSwkJCTB4MjUKICNkZWZpbmUgVklP
Q19NQUtFU1VCTU9VTlQJCTB4MjYKIAorI2RlZmluZSBWSU9DX0dFVFJYS0NSWVBUCQkweDI3Cisj
ZGVmaW5lIFZJT0NfU0VUUlhLQ1JZUFQJCTB4MjgKKwogI2VuZGlmIC8qICBfX1NNQl9JT0NPTlNf
SF9FTlZfICovCmRpZmYgLXUgLXIgL2Fmcy9jc24tdjY0LnR1LWNoZW1uaXR6LmRlL29wZW5hZnMv
c3JjL1dJTk5UL2Fmc2Qvc21iX2lvY3RsLmMgc3JjL1dJTk5UL2Fmc2Qvc21iX2lvY3RsLmMKLS0t
IC9hZnMvY3NuLXY2NC50dS1jaGVtbml0ei5kZS9vcGVuYWZzL3NyYy9XSU5OVC9hZnNkL3NtYl9p
b2N0bC5jCVNhdCBOb3YgIDQgMTE6MDE6NDUgMjAwMAorKysgc3JjL1dJTk5UL2Fmc2Qvc21iX2lv
Y3RsLmMJVHVlIEFwciAgMyAxNDowODowMyAyMDAxCkBAIC02Miw2ICs2Miw4IEBACiAJc21iX2lv
Y3RsUHJvY3NwW1ZJT0NfTElTVFNZTUxJTktdID0gY21fSW9jdGxMaXN0bGluazsKIAlzbWJfaW9j
dGxQcm9jc3BbVklPQ19ERUxTWU1MSU5LXSA9IGNtX0lvY3RsRGVsZXRlbGluazsKIAlzbWJfaW9j
dGxQcm9jc3BbVklPQ19NQUtFU1VCTU9VTlRdID0gY21fSW9jdGxNYWtlU3VibW91bnQ7CisJc21i
X2lvY3RsUHJvY3NwW1ZJT0NfR0VUUlhLQ1JZUFRdID0gY21fSW9jdGxHZXRSeGtjcnlwdDsKKwlz
bWJfaW9jdGxQcm9jc3BbVklPQ19TRVRSWEtDUllQVF0gPSBjbV9Jb2N0bFNldFJ4a2NyeXB0Owog
fQogCiAvKiBjYWxsZWQgdG8gbWFrZSBhIGZpZCBzdHJ1Y3R1cmUgaW50byBhbiBJT0NUTCBmaWQg
c3RydWN0dXJlICovCmRpZmYgLXUgLXIgL2Fmcy9jc24tdjY0LnR1LWNoZW1uaXR6LmRlL29wZW5h
ZnMvc3JjL1dJTk5UL2NsaWVudF9jb25maWcvZGxnX2F1dG9tYXAuY3BwIHNyYy9XSU5OVC9jbGll
bnRfY29uZmlnL2RsZ19hdXRvbWFwLmNwcAotLS0gL2Fmcy9jc24tdjY0LnR1LWNoZW1uaXR6LmRl
L29wZW5hZnMvc3JjL1dJTk5UL2NsaWVudF9jb25maWcvZGxnX2F1dG9tYXAuY3BwCVNhdCBOb3Yg
IDQgMTE6MDI6MzcgMjAwMAorKysgc3JjL1dJTk5UL2NsaWVudF9jb25maWcvZGxnX2F1dG9tYXAu
Y3BwCVR1ZSBBcHIgIDMgMTY6Mjk6NDQgMjAwMQpAQCAtMjEyLDEzICsyMTIsMTQgQEAKICAgIFRD
SEFSIHN6VmFsdWVOYW1lWzEyOF07CiAgICBIS0VZIGhLZXk7CiAgICBMT05HIHJlc3VsdDsKKyAg
IERXT1JEIGR3RGlzcG87CiAKICAgIGlmICghcERyaXZlKQogICAgICAgcmV0dXJuIEZBTFNFOwog
CiAgICBfc3RwcmludGYoc3pLZXlOYW1lLCBURVhUKCIlc1xcR2xvYmFsQXV0b01hcHBlciIpLCBB
RlNDb25maWdLZXlOYW1lKTsKIAotICAgaWYgKFJlZ09wZW5LZXlFeChIS0VZX0xPQ0FMX01BQ0hJ
TkUsIHN6S2V5TmFtZSwgMCwgS0VZX1NFVF9WQUxVRSwgJmhLZXkpICE9IEVSUk9SX1NVQ0NFU1Mp
CisgICBpZiAoUmVnQ3JlYXRlS2V5RXgoSEtFWV9MT0NBTF9NQUNISU5FLCBzektleU5hbWUsIDAs
IE5VTEwsIFJFR19PUFRJT05fTk9OX1ZPTEFUSUxFLCBLRVlfU0VUX1ZBTFVFLCBOVUxMLCAmaEtl
eSwgJmR3RGlzcG8pICE9IEVSUk9SX1NVQ0NFU1MpCiAgICAgICByZXR1cm4gRkFMU0U7CiAKICAg
IF9zdHByaW50ZihzelZhbHVlTmFtZSwgVEVYVCgiJWM6IiksIHBEcml2ZS0+Y2hEcml2ZSk7Cg==


---MOQ9863727866e69b54a461a9ceb3234069dbfdba7bd--