[Mailman-Developers] Python standard SMTPLib patch.

The Dragon De Monsyne dragondm@delta.integral.org
Sat, 29 Aug 1998 02:30:47 -0500 (CDT)


  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

---1395546950-1591827097-904375847=:10023
Content-Type: TEXT/PLAIN; charset=US-ASCII


	Ok, this patch changes mailman to use the smtplib.py included
here, instead of the current one. 

	The smtplib.py included here is the most recent version of the
smtplib included in the Python 1.5.1 distribution. This exact version will
likely be included in the python 1.5.2 distribution

	Having Mailman use this smtplib is good b'cause any
improvements/bugfixes made to it because of mailman can then be folded
back into tyhe Python distribution. Plus this lib has esmtp support, which
could be usefull for DSN tweaking.

	To aply this:
	-Remove the smtplib in the Mailman package
	-Put this smplib.py in your PYTHONPATH. (If you have 1.5.1,
         replace the smtplib that came with the python distribution with
         this one, it has a few bugfixes)
        -apply the two included patches. Ones for the Mailman package,
         ones a very minor one for the contact_transport script. 
 
	-The Dragon De Monsyne

---1395546950-1591827097-904375847=:10023
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="smtplib.py"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.3.96.980829023047.10023H@delta.integral.org>
Content-Description: smtplib.py

IyEvdXNyL2Jpbi9weXRob24NCiIiIlNNVFAvRVNNVFAgY2xpZW50IGNsYXNz
Lg0KDQpBdXRob3I6IFRoZSBEcmFnb24gRGUgTW9uc3luZSA8ZHJhZ29uZG1A
aW50ZWdyYWwub3JnPg0KRVNNVFAgc3VwcG9ydCwgdGVzdCBjb2RlIGFuZCBk
b2MgZml4ZXMgYWRkZWQgYnkNCiAgICBFcmljIFMuIFJheW1vbmQgPGVzckB0
aHlyc3VzLmNvbT4NCkJldHRlciBSRkMgODIxIGNvbXBsaWFuY2UgKE1BSUwg
YW5kIFJDUFQsIGFuZCBDUkxGIGluIGRhdGEpDQogICAgYnkgQ2FyZXkgRXZh
bnMgPGMuZXZhbnNAY2xlYXIubmV0Lm56PiwgZm9yIHBpY2t5IG1haWwgc2Vy
dmVycy4NCiAgIA0KKFRoaXMgd2FzIG1vZGlmaWVkIGZyb20gdGhlIFB5dGhv
biAxLjUgbGlicmFyeSBIVFRQIGxpYi4pDQoNClRoaXMgc2hvdWxkIGZvbGxv
dyBSRkMgODIxIChTTVRQKSBhbmQgUkZDIDE4NjkgKEVTTVRQKS4NCg0KTm90
ZXM6DQoJUGxlYXNlIHJlbWVtYmVyLCB3aGVuIGRvaW5nIEVTTVRQLCB0aGF0
IHRoZSBuYW1lcyBvZiB0aGUgU01UUCBzZXJ2aWNlIA0KZXh0ZW50aW9ucyAg
YXJlIE5PVCB0aGUgc2FtZSB0aGluZyBhcyB0aGUgb3B0aW9uIGtleW9yZHMg
Zm9yIHRoZSBSQ1BUIGFuZCBNQUlMDQpjb21tYW5kcyEgDQoNCkV4YW1wbGU6
DQoNCj4+PiBpbXBvcnQgc210cGxpYg0KPj4+IHM9c210cGxpYi5TTVRQKCJs
b2NhbGhvc3QiKQ0KPj4+IHByaW50IHMuaGVscCgpDQpUaGlzIGlzIFNlbmRt
YWlsIHZlcnNpb24gOC44LjQNClRvcGljczoNCiAgICBIRUxPICAgIEVITE8g
ICAgTUFJTCAgICBSQ1BUICAgIERBVEENCiAgICBSU0VUICAgIE5PT1AgICAg
UVVJVCAgICBIRUxQICAgIFZSRlkNCiAgICBFWFBOICAgIFZFUkIgICAgRVRS
TiAgICBEU04NCkZvciBtb3JlIGluZm8gdXNlICJIRUxQIDx0b3BpYz4iLg0K
VG8gcmVwb3J0IGJ1Z3MgaW4gdGhlIGltcGxlbWVudGF0aW9uIHNlbmQgZW1h
aWwgdG8NCiAgICBzZW5kbWFpbC1idWdzQHNlbmRtYWlsLm9yZy4NCkZvciBs
b2NhbCBpbmZvcm1hdGlvbiBzZW5kIGVtYWlsIHRvIFBvc3RtYXN0ZXIgYXQg
eW91ciBzaXRlLg0KRW5kIG9mIEhFTFAgaW5mbw0KPj4+IHMucHV0Y21kKCJ2
cmZ5Iiwic29tZW9uZUBoZXJlIikNCj4+PiBzLmdldHJlcGx5KCkNCigyNTAs
ICJTb21lYm9keSBPdmVySGVyZSA8c29tZWJvZHlAaGVyZS5teS5vcmc+IikN
Cj4+PiBzLnF1aXQoKQ0KDQoiIiINCg0KaW1wb3J0IHNvY2tldA0KaW1wb3J0
IHN0cmluZyxyZSxyZmM4MjINCg0KU01UUF9QT1JUID0gMjUNCkNSTEY9Ilxy
XG4iDQoNCiMgdXNlZCBmb3IgZXhjZXB0aW9ucyANClNNVFBTZXJ2ZXJEaXNj
b25uZWN0ZWQ9IlNlcnZlciBub3QgY29ubmVjdGVkIg0KU01UUFNlbmRlclJl
ZnVzZWQ9IlNlbmRlciBhZGRyZXNzIHJlZnVzZWQiDQpTTVRQUmVjaXBpZW50
c1JlZnVzZWQ9IkFsbCBSZWNpcGllbnRzIHJlZnVzZWQiDQpTTVRQRGF0YUVy
cm9yPSJFcnJvciB0cmFuc21pdHRpbmcgbWVzc2FnZSBkYXRhIg0KDQpkZWYg
cXVvdGVhZGRyKGFkZHIpOg0KICAgICIiIlF1b3RlIGEgc3Vic2V0IG9mIHRo
ZSBlbWFpbCBhZGRyZXNzZXMgZGVmaW5lZCBieSBSRkMgODIxLg0KDQogICAg
U2hvdWxkIGJlIGFibGUgdG8gaGFuZGxlIGFueXRoaW5nIHJmYzgyMi5wYXJz
ZWFkZHIgY2FuIGhhbmRsZS4iIiINCg0KICAgIG09Tm9uZQ0KICAgIHRyeToN
CiAgICAgICAgbT1yZmM4MjIucGFyc2VhZGRyKGFkZHIpWzFdDQogICAgZXhj
ZXB0IEF0dHJpYnV0ZUVycm9yOg0KICAgICAgICBwYXNzDQogICAgaWYgbm90
IG06DQogICAgICAgICNzb21ldGhpbmcgd2VpcmQgaGVyZS4uIHB1bnQgLWRk
bQ0KICAgICAgICByZXR1cm4gYWRkcg0KICAgIGVsc2U6DQogICAgICAgIHJl
dHVybiAiPCVzPiIgJSBtDQoNCmRlZiBxdW90ZWRhdGEoZGF0YSk6DQogICAg
IiIiUXVvdGUgZGF0YSBmb3IgZW1haWwuDQoNCiAgICBEb3VibGUgbGVhZGlu
ZyAnLicsIGFuZCBjaGFuZ2UgVW5peCBuZXdsaW5lICdcbicsIG9yIE1hYyAn
XHInIGludG8NCiAgICBJbnRlcm5ldCBDUkxGIGVuZC1vZi1saW5lLiIiIg0K
ICAgIHJldHVybiByZS5zdWIocicoP20pXlwuJywgJy4uJywNCiAgICAgICAg
cmUuc3ViKHInKD86XHJcbnxcbnxccig/IVxuKSknLCBDUkxGLCBkYXRhKSkN
Cg0KY2xhc3MgU01UUDoNCiAgICAiIiJUaGlzIGNsYXNzIG1hbmFnZXMgYSBj
b25uZWN0aW9uIHRvIGFuIFNNVFAgb3IgRVNNVFAgc2VydmVyLg0KICAgIFNN
VFAgT2JqZWN0czoNCiAgICAgICAgU01UUCBvYmplY3RzIGhhdmUgdGhlIGZv
bGxvd2luZyBhdHRyaWJ1dGVzOiAgICANCiAgICAgICAgICAgIGhlbG9fcmVz
cCANCiAgICAgICAgICAgICAgICBUaGlzIGlzIHRoZSBtZXNzYWdlIGdpdmVu
IGJ5IHRoZSBzZXJ2ZXIgaW4gcmVzcG9uY2UgdG8gdGhlIA0KICAgICAgICAg
ICAgICAgIG1vc3QgcmVjZW50IEhFTE8gY29tbWFuZC4NCiAgICAgICAgICAg
ICAgICANCiAgICAgICAgICAgIGVobG9fcmVzcA0KICAgICAgICAgICAgICAg
IFRoaXMgaXMgdGhlIG1lc3NhZ2UgZ2l2ZW4gYnkgdGhlIHNlcnZlciBpbiBy
ZXNwb25jZSB0byB0aGUgDQogICAgICAgICAgICAgICAgbW9zdCByZWNlbnQg
RUhMTyBjb21tYW5kLiBUaGlzIGlzIHVzdWFsbHkgbXVsdGlsaW5lLg0KDQog
ICAgICAgICAgICBkb2VzX2VzbXRwIA0KICAgICAgICAgICAgICAgIFRoaXMg
aXMgYSBUcnVlIHZhbHVlIF9hZnRlciB5b3UgZG8gYW4gRUhMTyBjb21tYW5k
XywgaWYgdGhlDQogICAgICAgICAgICAgICAgc2VydmVyIHN1cHBvcnRzIEVT
TVRQLg0KDQogICAgICAgICAgICBlc210cF9mZWF0dXJlcyANCiAgICAgICAg
ICAgICAgICBUaGlzIGlzIGEgZGljdGlvbmFyeSwgd2hpY2gsIGlmIHRoZSBz
ZXJ2ZXIgc3VwcG9ydHMgRVNNVFAsDQogICAgICAgICAgICAgICAgd2lsbCAg
X2FmdGVyIHlvdSBkbyBhbiBFSExPIGNvbW1hbmRfLCBjb250YWluIHRoZSBu
YW1lcyBvZiB0aGUNCiAgICAgICAgICAgICAgICBTTVRQIHNlcnZpY2UgIGV4
dGVudGlvbnMgdGhpcyBzZXJ2ZXIgc3VwcG9ydHMsIGFuZCB0aGVpciANCiAg
ICAgICAgICAgICAgICBwYXJhbWV0ZXJzIChpZiBhbnkpLg0KICAgICAgICAg
ICAgICAgIE5vdGUsIGFsbCBleHRlbnRpb24gbmFtZXMgYXJlIG1hcHBlZCB0
byBsb3dlciBjYXNlIGluIHRoZSANCiAgICAgICAgICAgICAgICBkaWN0aW9u
YXJ5LiANCg0KICAgICAgICBGb3IgbWV0aG9kIGRvY3MsIHNlZSBlYWNoIG1l
dGhvZCdzIGRvY3N0cmluZ3MuIEluIGdlbmVyYWwsIHRoZXJlIGlzIA0KICAg
ICAgICAgICAgYSBtZXRob2Qgb2YgdGhlIHNhbWUgbmFtZSB0byBwcmVmb3Jt
IGVhY2ggU01UUCBjb21hbmQsIGFuZCB0aGVyZSANCiAgICAgICAgICAgIGlz
IGEgbWV0aG9kIGNhbGxlZCAnc2VuZG1haWwnIHRoYXQgd2lsbCBkbyBhbiBl
bnRpZXJlIG1haWwgDQogICAgICAgICAgICB0cmFuc2FjdGlvbi4iIiINCg0K
ICAgIGRlYnVnbGV2ZWwgPSAwDQogICAgZmlsZSA9IE5vbmUNCiAgICBoZWxv
X3Jlc3AgPSBOb25lDQogICAgZWhsb19yZXNwID0gTm9uZQ0KICAgIGRvZXNf
ZXNtdHAgPSAwDQoNCiAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCA9ICcn
LCBwb3J0ID0gMCk6DQogICAgICAgICIiIkluaXRpYWxpemUgYSBuZXcgaW5z
dGFuY2UuDQoNCiAgICAgICAgSWYgc3BlY2lmaWVkLCBgaG9zdCcgaXMgdGhl
IG5hbWUgb2YgdGhlIHJlbW90ZSBob3N0IHRvIHdoaWNoDQogICAgICAgIHRv
IGNvbm5lY3QuICBJZiBzcGVjaWZpZWQsIGBwb3J0JyBzcGVjaWZpZXMgdGhl
IHBvcnQgdG8gd2hpY2gNCiAgICAgICAgdG8gY29ubmVjdC4gIEJ5IGRlZmF1
bHQsIHNtdHBsaWIuU01UUF9QT1JUIGlzIHVzZWQuDQoNCiAgICAgICAgIiIi
DQogICAgICAgIHNlbGYuZXNtdHBfZmVhdHVyZXMgPSB7fQ0KICAgICAgICBp
ZiBob3N0OiBzZWxmLmNvbm5lY3QoaG9zdCwgcG9ydCkNCiAgICANCiAgICBk
ZWYgc2V0X2RlYnVnbGV2ZWwoc2VsZiwgZGVidWdsZXZlbCk6DQogICAgICAg
ICIiIlNldCB0aGUgZGVidWcgb3V0cHV0IGxldmVsLg0KDQogICAgICAgIEEg
bm9uLWZhbHNlIHZhbHVlIHJlc3VsdHMgaW4gZGVidWcgbWVzc2FnZXMgZm9y
IGNvbm5lY3Rpb24gYW5kDQogICAgICAgIGZvciBhbGwgbWVzc2FnZXMgc2Vu
dCB0byBhbmQgcmVjZWl2ZWQgZnJvbSB0aGUgc2VydmVyLg0KDQogICAgICAg
ICIiIg0KICAgICAgICBzZWxmLmRlYnVnbGV2ZWwgPSBkZWJ1Z2xldmVsDQoN
CiAgICBkZWYgY29ubmVjdChzZWxmLCBob3N0PSdsb2NhbGhvc3QnLCBwb3J0
ID0gMCk6DQogICAgICAgICIiIkNvbm5lY3QgdG8gYSBob3N0IG9uIGEgZ2l2
ZW4gcG9ydC4NCg0KICAgICAgICBJZiB0aGUgaG9zdG5hbWUgZW5kcyB3aXRo
IGEgY29sb24gKGA6JykgZm9sbG93ZWQgYnkgYSBudW1iZXIsDQoJYW5kIHRo
ZXJlIGlzIG5vIHBvcnQgc3BlY2lmaWVkLCAgdGhhdCBzdWZmaXggd2lsbCBi
ZSBzdHJpcHBlZCANCiAgICAgICAgb2ZmIGFuZCB0aGUgbnVtYmVyIGludGVy
cHJldGVkIGFzIHRoZSBwb3J0IG51bWJlciB0byB1c2UuDQoNCiAgICAgICAg
Tm90ZTogIFRoaXMgbWV0aG9kIGlzIGF1dG9tYXRpY2FsbHkgaW52b2tlZCBi
eSBfX2luaXRfXywNCiAgICAgICAgaWYgYSBob3N0IGlzIHNwZWNpZmllZCBk
dXJpbmcgaW5zdGFudGlhdGlvbi4NCg0KICAgICAgICAiIiINCiAgICAgICAg
aWYgbm90IHBvcnQ6DQogICAgICAgICAgICBpID0gc3RyaW5nLmZpbmQoaG9z
dCwgJzonKQ0KICAgICAgICAgICAgaWYgaSA+PSAwOg0KICAgICAgICAgICAg
ICAgIGhvc3QsIHBvcnQgPSBob3N0WzppXSwgaG9zdFtpKzE6XQ0KICAgICAg
ICAgICAgICAgIHRyeTogcG9ydCA9IHN0cmluZy5hdG9pKHBvcnQpDQogICAg
ICAgICAgICAgICAgZXhjZXB0IHN0cmluZy5hdG9pX2Vycm9yOg0KICAgICAg
ICAgICAgICAgICAgICByYWlzZSBzb2NrZXQuZXJyb3IsICJub25udW1lcmlj
IHBvcnQiDQogICAgICAgIGlmIG5vdCBwb3J0OiBwb3J0ID0gU01UUF9QT1JU
DQogICAgICAgIHNlbGYuc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFG
X0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkNCiAgICAgICAgaWYgc2VsZi5k
ZWJ1Z2xldmVsID4gMDogcHJpbnQgJ2Nvbm5lY3Q6JywgKGhvc3QsIHBvcnQp
DQogICAgICAgIHNlbGYuc29jay5jb25uZWN0KGhvc3QsIHBvcnQpDQogICAg
ICAgIChjb2RlLG1zZyk9c2VsZi5nZXRyZXBseSgpDQogICAgICAgIGlmIHNl
bGYuZGVidWdsZXZlbCA+MCA6IHByaW50ICJjb25uZWN0OiIsIG1zZw0KICAg
ICAgICByZXR1cm4gbXNnDQogICAgDQogICAgZGVmIHNlbmQoc2VsZiwgc3Ry
KToNCiAgICAgICAgIiIiU2VuZCBgc3RyJyB0byB0aGUgc2VydmVyLiIiIg0K
ICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOiBwcmludCAnc2VuZDon
LCBgc3RyYA0KICAgICAgICBpZiBzZWxmLnNvY2s6DQoJICAgIHRyeToNCiAg
ICAgICAgICAgICAgICBzZWxmLnNvY2suc2VuZChzdHIpDQoJICAgIGV4Y2Vw
dCBzb2NrZXQuZXJyb3I6DQogICAgICAgICAgICAgICAgcmFpc2UgU01UUFNl
cnZlckRpc2Nvbm5lY3RlZA0KICAgICAgICBlbHNlOg0KICAgICAgICAgICAg
cmFpc2UgU01UUFNlcnZlckRpc2Nvbm5lY3RlZA0KIA0KICAgIGRlZiBwdXRj
bWQoc2VsZiwgY21kLCBhcmdzPSIiKToNCiAgICAgICAgIiIiU2VuZCBhIGNv
bW1hbmQgdG8gdGhlIHNlcnZlci4NCiAgICAgICAgIiIiDQogICAgICAgIHN0
ciA9ICclcyAlcyVzJyAlIChjbWQsIGFyZ3MsIENSTEYpDQogICAgICAgIHNl
bGYuc2VuZChzdHIpDQogICAgDQogICAgZGVmIGdldHJlcGx5KHNlbGYpOg0K
ICAgICAgICAiIiJHZXQgYSByZXBseSBmcm9tIHRoZSBzZXJ2ZXIuDQogICAg
ICAgIA0KICAgICAgICBSZXR1cm5zIGEgdHVwbGUgY29uc2lzdGluZyBvZjoN
CiAgICAgICAgLSBzZXJ2ZXIgcmVzcG9uc2UgY29kZSAoZS5nLiAnMjUwJywg
b3Igc3VjaCwgaWYgYWxsIGdvZXMgd2VsbCkNCiAgICAgICAgICBOb3RlOiBy
ZXR1cm5zIC0xIGlmIGl0IGNhbid0IHJlYWQgcmVzcG9uc2UgY29kZS4NCiAg
ICAgICAgLSBzZXJ2ZXIgcmVzcG9uc2Ugc3RyaW5nIGNvcnJlc3BvbmRpbmcg
dG8gcmVzcG9uc2UgY29kZQ0KICAgICAgICAgICAgICAgIChub3RlIDogbXVs
dGlsaW5lIHJlc3BvbnNlcyBjb252ZXJ0ZWQgdG8gYSBzaW5nbGUsIA0KICAg
ICAgICAgICAgICAgICBtdWx0aWxpbmUgc3RyaW5nKQ0KICAgICAgICAiIiIN
CiAgICAgICAgcmVzcD1bXQ0KICAgICAgICBzZWxmLmZpbGUgPSBzZWxmLnNv
Y2subWFrZWZpbGUoJ3JiJykNCiAgICAgICAgd2hpbGUgMToNCiAgICAgICAg
ICAgIGxpbmUgPSBzZWxmLmZpbGUucmVhZGxpbmUoKQ0KICAgICAgICAgICAg
aWYgc2VsZi5kZWJ1Z2xldmVsID4gMDogcHJpbnQgJ3JlcGx5OicsIGBsaW5l
YA0KICAgICAgICAgICAgcmVzcC5hcHBlbmQoc3RyaW5nLnN0cmlwKGxpbmVb
NDpdKSkNCiAgICAgICAgICAgIGNvZGU9bGluZVs6M10NCiAgICAgICAgICAg
ICNjaGVjayBpZiBtdWx0aWxpbmUgcmVzcA0KICAgICAgICAgICAgaWYgbGlu
ZVszOjRdIT0iLSI6DQogICAgICAgICAgICAgICAgYnJlYWsNCiAgICAgICAg
dHJ5Og0KICAgICAgICAgICAgZXJyY29kZSA9IHN0cmluZy5hdG9pKGNvZGUp
DQogICAgICAgIGV4Y2VwdChWYWx1ZUVycm9yKToNCiAgICAgICAgICAgIGVy
cmNvZGUgPSAtMQ0KDQogICAgICAgIGVycm1zZyA9IHN0cmluZy5qb2luKHJl
c3AsIlxuIikNCiAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDogDQog
ICAgICAgICAgICBwcmludCAncmVwbHk6IHJldGNvZGUgKCVzKTsgTXNnOiAl
cycgJSAoZXJyY29kZSxlcnJtc2cpDQogICAgICAgIHJldHVybiBlcnJjb2Rl
LCBlcnJtc2cNCiAgICANCiAgICBkZWYgZG9jbWQoc2VsZiwgY21kLCBhcmdz
PSIiKToNCiAgICAgICAgIiIiIFNlbmQgYSBjb21tYW5kLCBhbmQgcmV0dXJu
IGl0cyByZXNwb25zZSBjb2RlICIiIg0KICAgICAgICANCiAgICAgICAgc2Vs
Zi5wdXRjbWQoY21kLGFyZ3MpDQogICAgICAgIChjb2RlLG1zZyk9c2VsZi5n
ZXRyZXBseSgpDQogICAgICAgIHJldHVybiBjb2RlDQojIHN0ZCBzbXRwIGNv
bW1hbmRzDQoNCiAgICBkZWYgaGVsbyhzZWxmLCBuYW1lPScnKToNCiAgICAg
ICAgIiIiIFNNVFAgJ2hlbG8nIGNvbW1hbmQuIEhvc3RuYW1lIHRvIHNlbmQg
Zm9yIHRoaXMgY29tbWFuZCAgDQogICAgICAgIGRlZmF1bHRzIHRvIHRoZSBG
UUROIG9mIHRoZSBsb2NhbCBob3N0ICIiIg0KICAgICAgICBuYW1lPXN0cmlu
Zy5zdHJpcChuYW1lKQ0KICAgICAgICBpZiBsZW4obmFtZSk9PTA6DQogICAg
ICAgICAgICAgICAgbmFtZT1zb2NrZXQuZ2V0aG9zdGJ5YWRkcihzb2NrZXQu
Z2V0aG9zdG5hbWUoKSlbMF0NCiAgICAgICAgc2VsZi5wdXRjbWQoImhlbG8i
LG5hbWUpDQogICAgICAgIChjb2RlLG1zZyk9c2VsZi5nZXRyZXBseSgpDQog
ICAgICAgIHNlbGYuaGVsb19yZXNwPW1zZw0KICAgICAgICByZXR1cm4gY29k
ZQ0KDQogICAgZGVmIGVobG8oc2VsZiwgbmFtZT0nJyk6DQogICAgICAgICIi
IiBTTVRQICdlaGxvJyBjb21tYW5kLiBIb3N0bmFtZSB0byBzZW5kIGZvciB0
aGlzIGNvbW1hbmQgIA0KICAgICAgICBkZWZhdWx0cyB0byB0aGUgRlFETiBv
ZiB0aGUgbG9jYWwgaG9zdC4gICIiIg0KICAgICAgICBuYW1lPXN0cmluZy5z
dHJpcChuYW1lKQ0KICAgICAgICBpZiBsZW4obmFtZSk9PTA6DQogICAgICAg
ICAgICAgICAgbmFtZT1zb2NrZXQuZ2V0aG9zdGJ5YWRkcihzb2NrZXQuZ2V0
aG9zdG5hbWUoKSlbMF0NCiAgICAgICAgc2VsZi5wdXRjbWQoImVobG8iLG5h
bWUpDQogICAgICAgIChjb2RlLG1zZyk9c2VsZi5nZXRyZXBseSgpDQogICAg
ICAgICMgQWNjb3JkaW5nIHRvIFJGQzE4Njkgc29tZSAoYmFkbHkgd3JpdHRl
bikgDQogICAgICAgICMgTVRBJ3Mgd2lsbCBkaXNjb25uZWN0IG9uIGFuIGVo
bG8uIFRvc3MgYW4gZXhjZXB0aW9uIGlmIA0KICAgICAgICAjIHRoYXQgaGFw
cGVucyAtZGRtDQogICAgICAgIGlmIGNvZGUgPT0gLTEgYW5kIGxlbihtc2cp
ID09IDA6DQogICAgICAgICAgICByYWlzZSBTTVRQU2VydmVyRGlzY29ubmVj
dGVkDQogICAgICAgIHNlbGYuZWhsb19yZXNwPW1zZw0KICAgICAgICBpZiBj
b2RlPD4yNTA6DQogICAgICAgICAgICByZXR1cm4gY29kZQ0KICAgICAgICBz
ZWxmLmRvZXNfZXNtdHA9MQ0KICAgICAgICAjcGFyc2UgdGhlIGVobG8gcmVz
cG9uY2UgLWRkbQ0KCXJlc3A9c3RyaW5nLnNwbGl0KHNlbGYuZWhsb19yZXNw
LCdcbicpDQogICAgICAgIGRlbCByZXNwWzBdDQoJZm9yIGVhY2ggaW4gcmVz
cDoNCiAgICAgICAgICAgIG09cmUubWF0Y2gocicoP1A8ZmVhdHVyZT5bQS1a
YS16MC05XVtBLVphLXowLTlcLV0qKScsZWFjaCkNCiAgICAgICAgICAgIGlm
IG06DQogICAgICAgICAgICAgICAgZmVhdHVyZT1zdHJpbmcubG93ZXIobS5n
cm91cCgiZmVhdHVyZSIpKQ0KICAgICAgICAgICAgICAgIHBhcmFtcz1zdHJp
bmcuc3RyaXAobS5zdHJpbmdbbS5lbmQoImZlYXR1cmUiKTpdKQ0KICAgICAg
ICAgICAgICAgIHNlbGYuZXNtdHBfZmVhdHVyZXNbZmVhdHVyZV09cGFyYW1z
DQogICAgICAgIHJldHVybiBjb2RlDQoNCiAgICBkZWYgaGFzX2V4dG4oc2Vs
Ziwgb3B0KToNCiAgICAgICAgIiIiRG9lcyB0aGUgc2VydmVyIHN1cHBvcnQg
YSBnaXZlbiBTTVRQIHNlcnZpY2UgZXh0ZW5zaW9uPyIiIg0KICAgICAgICBy
ZXR1cm4gc2VsZi5lc210cF9mZWF0dXJlcy5oYXNfa2V5KHN0cmluZy5sb3dl
cihvcHQpKQ0KDQogICAgZGVmIGhlbHAoc2VsZiwgYXJncz0nJyk6DQogICAg
ICAgICIiIiBTTVRQICdoZWxwJyBjb21tYW5kLiBSZXR1cm5zIGhlbHAgdGV4
dCBmcm9tIHNlcnZlciAiIiINCiAgICAgICAgc2VsZi5wdXRjbWQoImhlbHAi
LCBhcmdzKQ0KICAgICAgICAoY29kZSxtc2cpPXNlbGYuZ2V0cmVwbHkoKQ0K
ICAgICAgICByZXR1cm4gbXNnDQoNCiAgICBkZWYgcnNldChzZWxmKToNCiAg
ICAgICAgIiIiIFNNVFAgJ3JzZXQnIGNvbW1hbmQuIFJlc2V0cyBzZXNzaW9u
LiAiIiINCiAgICAgICAgY29kZT1zZWxmLmRvY21kKCJyc2V0IikNCiAgICAg
ICAgcmV0dXJuIGNvZGUNCg0KICAgIGRlZiBub29wKHNlbGYpOg0KICAgICAg
ICAiIiIgU01UUCAnbm9vcCcgY29tbWFuZC4gRG9lc24ndCBkbyBhbnl0aGlu
ZyA6PiAiIiINCiAgICAgICAgY29kZT1zZWxmLmRvY21kKCJub29wIikNCiAg
ICAgICAgcmV0dXJuIGNvZGUNCg0KICAgIGRlZiBtYWlsKHNlbGYsc2VuZGVy
LG9wdGlvbnM9W10pOg0KICAgICAgICAiIiIgU01UUCAnbWFpbCcgY29tbWFu
ZC4gQmVnaW5zIG1haWwgeGZlciBzZXNzaW9uLiAiIiINCiAgICAgICAgb3B0
aW9ubGlzdCA9ICcnDQogICAgICAgIGlmIG9wdGlvbnMgYW5kIHNlbGYuZG9l
c19lc210cDoNCiAgICAgICAgICAgIG9wdGlvbmxpc3QgPSBzdHJpbmcuam9p
bihvcHRpb25zLCAnICcpDQogICAgICAgIHNlbGYucHV0Y21kKCJtYWlsIiwg
IkZST006JXMgJXMiICUgKHF1b3RlYWRkcihzZW5kZXIpICxvcHRpb25saXN0
KSkNCiAgICAgICAgcmV0dXJuIHNlbGYuZ2V0cmVwbHkoKQ0KDQogICAgZGVm
IHJjcHQoc2VsZixyZWNpcCxvcHRpb25zPVtdKToNCiAgICAgICAgIiIiIFNN
VFAgJ3JjcHQnIGNvbW1hbmQuIEluZGljYXRlcyAxIHJlY2lwaWVudCBmb3Ig
dGhpcyBtYWlsLiAiIiINCiAgICAgICAgb3B0aW9ubGlzdCA9ICcnDQogICAg
ICAgIGlmIG9wdGlvbnMgYW5kIHNlbGYuZG9lc19lc210cDoNCiAgICAgICAg
ICAgIG9wdGlvbmxpc3QgPSBzdHJpbmcuam9pbihvcHRpb25zLCAnICcpDQog
ICAgICAgIHNlbGYucHV0Y21kKCJyY3B0IiwiVE86JXMgJXMiICUgKHF1b3Rl
YWRkcihyZWNpcCksb3B0aW9ubGlzdCkpDQogICAgICAgIHJldHVybiBzZWxm
LmdldHJlcGx5KCkNCg0KICAgIGRlZiBkYXRhKHNlbGYsbXNnKToNCiAgICAg
ICAgIiIiIFNNVFAgJ0RBVEEnIGNvbW1hbmQuIFNlbmRzIG1lc3NhZ2UgZGF0
YSB0byBzZXJ2ZXIuIA0KICAgICAgICAgICAgQXV0b21hdGljYWxseSBxdW90
ZXMgbGluZXMgYmVnaW5uaW5nIHdpdGggYSBwZXJpb2QgcGVyIHJmYzgyMS4g
IiIiDQogICAgICAgIHNlbGYucHV0Y21kKCJkYXRhIikNCiAgICAgICAgKGNv
ZGUscmVwbCk9c2VsZi5nZXRyZXBseSgpDQogICAgICAgIGlmIHNlbGYuZGVi
dWdsZXZlbCA+MCA6IHByaW50ICJkYXRhOiIsIChjb2RlLHJlcGwpDQogICAg
ICAgIGlmIGNvZGUgPD4gMzU0Og0KICAgICAgICAgICAgcmV0dXJuIC0xDQog
ICAgICAgIGVsc2U6DQogICAgICAgICAgICBzZWxmLnNlbmQocXVvdGVkYXRh
KG1zZykpDQogICAgICAgICAgICBzZWxmLnNlbmQoIiVzLiVzIiAlIChDUkxG
LCBDUkxGKSkNCiAgICAgICAgICAgIChjb2RlLG1zZyk9c2VsZi5nZXRyZXBs
eSgpDQogICAgICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPjAgOiBwcmlu
dCAiZGF0YToiLCAoY29kZSxtc2cpDQogICAgICAgICAgICByZXR1cm4gY29k
ZQ0KDQogICAgZGVmIHZyZnkoc2VsZiwgYWRkcmVzcyk6DQogICAgICAgIHJl
dHVybiBzZWxmLnZlcmlmeShhZGRyZXNzKQ0KDQogICAgZGVmIHZlcmlmeShz
ZWxmLCBhZGRyZXNzKToNCiAgICAgICAgIiIiIFNNVFAgJ3ZlcmlmeScgY29t
bWFuZC4gQ2hlY2tzIGZvciBhZGRyZXNzIHZhbGlkaXR5LiAiIiINCiAgICAg
ICAgc2VsZi5wdXRjbWQoInZyZnkiLCBxdW90ZWFkZHIoYWRkcmVzcykpDQog
ICAgICAgIHJldHVybiBzZWxmLmdldHJlcGx5KCkNCg0KICAgIGRlZiBleHBu
KHNlbGYsIGFkZHJlc3MpOg0KICAgICAgICAiIiIgU01UUCAndmVyaWZ5JyBj
b21tYW5kLiBDaGVja3MgZm9yIGFkZHJlc3MgdmFsaWRpdHkuICIiIg0KICAg
ICAgICBzZWxmLnB1dGNtZCgiZXhwbiIsIHF1b3RlYWRkcihhZGRyZXNzKSkN
CiAgICAgICAgcmV0dXJuIHNlbGYuZ2V0cmVwbHkoKQ0KDQoNCiNzb21lIHVz
ZWZ1bCBtZXRob2RzDQogICAgZGVmIHNlbmRtYWlsKHNlbGYsZnJvbV9hZGRy
LHRvX2FkZHJzLG1zZyxtYWlsX29wdGlvbnM9W10scmNwdF9vcHRpb25zPVtd
KToNCiAgICAgICAgIiIiIFRoaXMgY29tbWFuZCBwZXJmb3JtcyBhbiBlbnRp
cmUgbWFpbCB0cmFuc2FjdGlvbi4gDQogICAgICAgICAgICBUaGUgYXJndW1l
bnRzIGFyZTogDQogICAgICAgICAgICAgICAtIGZyb21fYWRkciA6IFRoZSBh
ZGRyZXNzIHNlbmRpbmcgdGhpcyBtYWlsLg0KICAgICAgICAgICAgICAgLSB0
b19hZGRycyA6ICBhIGxpc3Qgb2YgYWRkcmVzc2VzIHRvIHNlbmQgdGhpcyBt
YWlsIHRvDQogICAgICAgICAgICAgICAtIG1zZyA6IHRoZSBtZXNzYWdlIHRv
IHNlbmQuIA0KICAgICAgICAgICAgICAgLSBtYWlsX29wdGlvbnMgOiBsaXN0
IG9mIEVTTVRQIG9wdGlvbnMgKHN1Y2ggYXMgOGJpdG1pbWUpDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgbWFpbCBjb21tYW5k
DQogICAgICAgICAgICAgICAtIHJjcHRfb3B0aW9ucyA6IExpc3Qgb2YgRVNN
VFAgb3B0aW9ucyAoc3VjaCBhcyBEU04gY29tbWFuZHMpDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZm9yIGFsbCB0aGUgcmNwdCBjb21tYW5k
cw0KCUlmIHRoZXJlIGhhcyBiZWVuIG5vIHByZXZpb3VzIEVITE8gb3IgSEVM
TyBjb21tYW5kIHRoaXMgc2Vzc2lvbiwNCgl0aGlzIG1ldGhvZCB0cmllcyBF
U01UUCBFSExPIGZpcnN0LiBJZiB0aGUgc2VydmVyIGRvZXMgRVNNVFAsIG1l
c3NhZ2UNCiAgICAgICAgc2l6ZSBhbmQgZWFjaCBvZiB0aGUgc3BlY2lmaWVk
IG9wdGlvbnMgd2lsbCBiZSBwYXNzZWQgdG8gaXQuICANCiAgICAgICAgSWYg
RUhMTyBmYWlscywgSEVMTyB3aWxsIGJlIHRyaWVkIGFuZCBFU01UUCBvcHRp
b25zIHN1cHByZXNzZWQuDQoNCiAgICAgICAgVGhpcyBtZXRob2Qgd2lsbCBy
ZXR1cm4gbm9ybWFsbHkgaWYgdGhlIG1haWwgaXMgYWNjZXB0ZWQgZm9yIGF0
IGxlYXN0IA0KICAgICAgICBvbmUgcmVjaXBpZW50LiBPdGhlcndpc2UgaXQg
d2lsbCB0aHJvdyBhbiBleGNlcHRpb24gKGVpdGhlcg0KICAgICAgICBTTVRQ
U2VuZGVyUmVmdXNlZCwgU01UUFJlY2lwaWVudHNSZWZ1c2VkLCBvciBTTVRQ
RGF0YUVycm9yKQ0KICAgICAgICBUaGF0IGlzLCBpZiB0aGlzIG1ldGhvZCBk
b2VzIG5vdCB0aHJvdyBhbiBleGNlcHRpb24sIHRoZW4gc29tZW9uZSANCiAg
ICAgICAgc2hvdWxkIGdldCB5b3VyIG1haWwuICBJZiB0aGlzIG1ldGhvZCBk
b2VzIG5vdCB0aHJvdyBhbiBleGNlcHRpb24sDQogICAgICAgIGl0IHJldHVy
bnMgYSBkaWN0aW9uYXJ5LCB3aXRoIG9uZSBlbnRyeSBmb3IgZWFjaCByZWNp
cGllbnQgdGhhdCB3YXMgDQogICAgICAgIHJlZnVzZWQuIA0KDQogICAgICAg
IEV4YW1wbGU6DQogICAgICANCiAgICAgICAgID4+PiBpbXBvcnQgc210cGxp
Yg0KICAgICAgICAgPj4+IHM9c210cGxpYi5TTVRQKCJsb2NhbGhvc3QiKQ0K
ICAgICAgICAgPj4+IHRvbGlzdD1bIm9uZUBvbmUub3JnIiwidHdvQHR3by5v
cmciLCJ0aHJlZUB0aHJlZS5vcmciLCJmb3VyQGZvdXIub3JnIl0NCiAgICAg
ICAgID4+PiBtc2cgPSAnJycNCiAgICAgICAgIC4uLiBGcm9tOiBNZUBteS5v
cmcNCiAgICAgICAgIC4uLiBTdWJqZWN0OiB0ZXN0aW4nLi4uDQogICAgICAg
ICAuLi4NCiAgICAgICAgIC4uLiBUaGlzIGlzIGEgdGVzdCAnJycNCiAgICAg
ICAgID4+PiBzLnNlbmRtYWlsKCJtZUBteS5vcmciLHRvbGlzdCxtc2cpDQog
ICAgICAgICB7ICJ0aHJlZUB0aHJlZS5vcmciIDogKCA1NTAgLCJVc2VyIHVu
a25vd24iICkgfQ0KICAgICAgICAgPj4+IHMucXVpdCgpDQogICAgICAgIA0K
ICAgICAgICAgSW4gdGhlIGFib3ZlIGV4YW1wbGUsIHRoZSBtZXNzYWdlIHdh
cyBhY2NlcHRlZCBmb3IgZGVsaXZlcnkgdG8gDQogICAgICAgICB0aHJlZSBv
ZiB0aGUgZm91ciBhZGRyZXNzZXMsIGFuZCBvbmUgd2FzIHJlamVjdGVkLCB3
aXRoIHRoZSBlcnJvcg0KICAgICAgICAgY29kZSA1NTAuIElmIGFsbCBhZGRy
ZXNzZXMgYXJlIGFjY2VwdGVkLCB0aGVuIHRoZSBtZXRob2QNCiAgICAgICAg
IHdpbGwgcmV0dXJuIGFuIGVtcHR5IGRpY3Rpb25hcnkuICANCiAgICAgICAg
ICIiIg0KICAgICAgICBpZiBub3Qgc2VsZi5oZWxvX3Jlc3AgYW5kIG5vdCBz
ZWxmLmVobG9fcmVzcDoNCiAgICAgICAgICAgIGlmIHNlbGYuZWhsbygpID49
IDQwMDoNCiAgICAgICAgICAgICAgICBzZWxmLmhlbG8oKQ0KICAgICAgICBl
c210cF9vcHRzID0gW10NCiAgICAgICAgaWYgc2VsZi5kb2VzX2VzbXRwOg0K
ICAgICAgICAgICAgIyBIbW1tPyB3aGF0J3MgdGhpcz8gLWRkbQ0KICAgICAg
ICAgICAgIyBzZWxmLmVzbXRwX2ZlYXR1cmVzWyc3Yml0J109IiINCiAgICAg
ICAgICAgIGlmIHNlbGYuaGFzX2V4dG4oJ3NpemUnKToNCiAgICAgICAgICAg
ICAgICBlc210cF9vcHRzLmFwcGVuZCgic2l6ZT0iICsgYGxlbihtc2cpYCkN
CiAgICAgICAgICAgIGZvciBvcHRpb24gaW4gbWFpbF9vcHRpb25zOg0KICAg
ICAgICAgICAgICAgIGVzbXRwX29wdHMuYXBwZW5kKG9wdGlvbikNCg0KICAg
ICAgICAoY29kZSxyZXNwKSA9IHNlbGYubWFpbChmcm9tX2FkZHIsIGVzbXRw
X29wdHMpDQogICAgICAgIGlmIGNvZGUgPD4gMjUwOg0KICAgICAgICAgICAg
c2VsZi5yc2V0KCkNCiAgICAgICAgICAgIHJhaXNlIFNNVFBTZW5kZXJSZWZ1
c2VkDQogICAgICAgIHNlbmRlcnJzPXt9DQogICAgICAgIGZvciBlYWNoIGlu
IHRvX2FkZHJzOg0KICAgICAgICAgICAgKGNvZGUscmVzcCk9c2VsZi5yY3B0
KGVhY2gsIHJjcHRfb3B0aW9ucykNCiAgICAgICAgICAgIGlmIChjb2RlIDw+
IDI1MCkgYW5kIChjb2RlIDw+IDI1MSk6DQogICAgICAgICAgICAgICAgc2Vu
ZGVycnNbZWFjaF09KGNvZGUscmVzcCkNCiAgICAgICAgaWYgbGVuKHNlbmRl
cnJzKT09bGVuKHRvX2FkZHJzKToNCiAgICAgICAgICAgICMgdGhlIHNlcnZl
ciByZWZ1c2VkIGFsbCBvdXIgcmVjaXBpZW50cw0KICAgICAgICAgICAgc2Vs
Zi5yc2V0KCkNCiAgICAgICAgICAgIHJhaXNlIFNNVFBSZWNpcGllbnRzUmVm
dXNlZA0KICAgICAgICBjb2RlPXNlbGYuZGF0YShtc2cpDQogICAgICAgIGlm
IGNvZGUgPD4yNTAgOg0KICAgICAgICAgICAgc2VsZi5yc2V0KCkNCiAgICAg
ICAgICAgIHJhaXNlIFNNVFBEYXRhRXJyb3INCiAgICAgICAgI2lmIHdlIGdv
dCBoZXJlIHRoZW4gc29tZWJvZHkgZ290IG91ciBtYWlsDQogICAgICAgIHJl
dHVybiBzZW5kZXJycyAgICAgICAgIA0KDQoNCiAgICBkZWYgY2xvc2Uoc2Vs
Zik6DQogICAgICAgICIiIkNsb3NlIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBT
TVRQIHNlcnZlci4iIiINCiAgICAgICAgaWYgc2VsZi5maWxlOg0KICAgICAg
ICAgICAgc2VsZi5maWxlLmNsb3NlKCkNCiAgICAgICAgc2VsZi5maWxlID0g
Tm9uZQ0KICAgICAgICBpZiBzZWxmLnNvY2s6DQogICAgICAgICAgICBzZWxm
LnNvY2suY2xvc2UoKQ0KICAgICAgICBzZWxmLnNvY2sgPSBOb25lDQoNCg0K
ICAgIGRlZiBxdWl0KHNlbGYpOg0KICAgICAgICAiIiJUZXJtaW5hdGUgdGhl
IFNNVFAgc2Vzc2lvbi4iIiINCiAgICAgICAgc2VsZi5kb2NtZCgicXVpdCIp
DQogICAgICAgIHNlbGYuY2xvc2UoKQ0KDQojIFRlc3QgdGhlIHNlbmRtYWls
IG1ldGhvZCwgd2hpY2ggdGVzdHMgbW9zdCBvZiB0aGUgb3RoZXJzLg0KIyBO
b3RlOiBUaGlzIGFsd2F5cyBzZW5kcyB0byBsb2NhbGhvc3QuDQppZiBfX25h
bWVfXyA9PSAnX19tYWluX18nOg0KICAgIGltcG9ydCBzeXMsIHJmYzgyMg0K
DQogICAgZGVmIHByb21wdChwcm9tcHQpOg0KICAgICAgICBzeXMuc3Rkb3V0
LndyaXRlKHByb21wdCArICI6ICIpDQogICAgICAgIHJldHVybiBzdHJpbmcu
c3RyaXAoc3lzLnN0ZGluLnJlYWRsaW5lKCkpDQoNCiAgICBmcm9tYWRkciA9
IHByb21wdCgiRnJvbSIpDQogICAgdG9hZGRycyAgPSBzdHJpbmcuc3BsaXRm
aWVsZHMocHJvbXB0KCJUbyIpLCAnLCcpDQogICAgcHJpbnQgIkVudGVyIG1l
c3NhZ2UsIGVuZCB3aXRoIF5EOiINCiAgICBtc2cgPSAnJw0KICAgIHdoaWxl
IDE6DQogICAgICAgIGxpbmUgPSBzeXMuc3RkaW4ucmVhZGxpbmUoKQ0KICAg
ICAgICBpZiBub3QgbGluZToNCiAgICAgICAgICAgIGJyZWFrDQogICAgICAg
IG1zZyA9IG1zZyArIGxpbmUNCiAgICBwcmludCAiTWVzc2FnZSBsZW5ndGgg
aXMgIiArIGBsZW4obXNnKWANCg0KICAgIHNlcnZlciA9IFNNVFAoJ2xvY2Fs
aG9zdCcpDQogICAgc2VydmVyLnNldF9kZWJ1Z2xldmVsKDEpDQogICAgc2Vy
dmVyLnNlbmRtYWlsKGZyb21hZGRyLCB0b2FkZHJzLCBtc2cpDQogICAgc2Vy
dmVyLnF1aXQoKQ0KDQoNCg0K
---1395546950-1591827097-904375847=:10023
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="patch.smtplib"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.3.96.980829023047.10023I@delta.integral.org>
Content-Description: Mailman patch

ZGlmZiAtYyAvdXNyL3NyYy9tYWlsbWFuLTEuMGI1L01haWxtYW4vQm91bmNl
ci5weSBNYWlsbWFuL0JvdW5jZXIucHkNCioqKiAvdXNyL3NyYy9tYWlsbWFu
LTEuMGI1L01haWxtYW4vQm91bmNlci5weQlNb24gSnVsIDI3IDE3OjQ4OjMx
IDE5OTgNCi0tLSBNYWlsbWFuL0JvdW5jZXIucHkJU2F0IEF1ZyAyOSAwMDox
MToxMCAxOTk4DQoqKioqKioqKioqKioqKioNCioqKiAyMDIsMjA4ICoqKioN
CiAgICAgICAgICAgICAgIyAnYm91bmNlLnR4dCcgaGFzIGEgdHJhaWxpbmcg
bmV3bGluZQ0KICAgICAgICAgICAgICB0ZXh0ID0gdGV4dCArIFwNCiAgICAg
ICAgICAgICAgICAgICAgIHN0cmluZy5qb2luKG1zZy5oZWFkZXJzLCAnJykg
KyAnXG4nICsgXA0KISAgICAgICAgICAgICAgICAgICAgVXRpbHMuUXVvdGVQ
ZXJpb2RzKG1zZy5ib2R5KSArICdcbicgKyBcDQogICAgICAgICAgICAgICAg
ICAgICAnLS0nICsgYm91bmRhcnkgKyAnLS0nDQogIA0KICAgICAgICAgICAg
ICBpZiBuZWdhdGl2ZToNCi0tLSAyMDIsMjA4IC0tLS0NCiAgICAgICAgICAg
ICAgIyAnYm91bmNlLnR4dCcgaGFzIGEgdHJhaWxpbmcgbmV3bGluZQ0KICAg
ICAgICAgICAgICB0ZXh0ID0gdGV4dCArIFwNCiAgICAgICAgICAgICAgICAg
ICAgIHN0cmluZy5qb2luKG1zZy5oZWFkZXJzLCAnJykgKyAnXG4nICsgXA0K
ISAgICAgICAgICAgICAgICAgICAgbXNnLmJvZHkgKyAnXG4nICsgXA0KICAg
ICAgICAgICAgICAgICAgICAgJy0tJyArIGJvdW5kYXJ5ICsgJy0tJw0KICAN
CiAgICAgICAgICAgICAgaWYgbmVnYXRpdmU6DQpkaWZmIC1jIC91c3Ivc3Jj
L21haWxtYW4tMS4wYjUvTWFpbG1hbi9EZWxpdmVyZXIucHkgTWFpbG1hbi9E
ZWxpdmVyZXIucHkNCioqKiAvdXNyL3NyYy9tYWlsbWFuLTEuMGI1L01haWxt
YW4vRGVsaXZlcmVyLnB5CU1vbiBKdWwgMjcgMTc6NDg6MzEgMTk5OA0KLS0t
IE1haWxtYW4vRGVsaXZlcmVyLnB5CVNhdCBBdWcgMjkgMDA6MTI6MDkgMTk5
OA0KKioqKioqKioqKioqKioqDQoqKiogNDMsNTAgKioqKg0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2hlYWRlcnM9WydFcnJvcnMt
VG86ICVzXG4nDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJSBTZWxmLkdldEFkbWluRW1haWwoKV0pDQogIA0KISAg
ICAgZGVmIFF1b3RlUGVyaW9kcyhzZWxmLCB0ZXh0KToNCiEgCXJldHVybiBz
dHJpbmcuam9pbihzdHJpbmcuc3BsaXQodGV4dCwgJ1xuLlxuJyksICdcbiAu
XG4nKQ0KICAgICAgZGVmIERlbGl2ZXJUb0xpc3Qoc2VsZiwgbXNnLCByZWNp
cGllbnRzLCANCiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcj0iIiwg
Zm9vdGVyPSIiLCByZW1vdmVfdG89MCwgdG1wZmlsZV9wcmVmaXggPSAiIik6
DQogIAlpZiBub3QobGVuKHJlY2lwaWVudHMpKToNCi0tLSA0Myw1MCAtLS0t
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfaGVhZGVy
cz1bJ0Vycm9ycy1UbzogJXNcbicNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAlIFNlbGYuR2V0QWRtaW5FbWFpbCgp
XSkNCiAgDQohICMgICAgZGVmIFF1b3RlUGVyaW9kcyhzZWxmLCB0ZXh0KToN
CiEgIwlyZXR1cm4gc3RyaW5nLmpvaW4oc3RyaW5nLnNwbGl0KHRleHQsICdc
bi5cbicpLCAnXG4gLlxuJykNCiAgICAgIGRlZiBEZWxpdmVyVG9MaXN0KHNl
bGYsIG1zZywgcmVjaXBpZW50cywgDQogICAgICAgICAgICAgICAgICAgICAg
ICBoZWFkZXI9IiIsIGZvb3Rlcj0iIiwgcmVtb3ZlX3RvPTAsIHRtcGZpbGVf
cHJlZml4ID0gIiIpOg0KICAJaWYgbm90KGxlbihyZWNpcGllbnRzKSk6DQoq
KioqKioqKioqKioqKioNCioqKiA3NSw4MSAqKioqDQogICAgICAgICAgY21k
cHJvYy53cml0ZShzdHJpbmcuam9pbihtc2cuaGVhZGVycywgJycpICsgIlxu
IikNCiAgCWlmIGhlYWRlcjogICAgICAgICAgICAgICAgICAgICAgIyBUaGUg
KmJvZHkqIGhlYWRlcjoNCiAgCSAgICBjbWRwcm9jLndyaXRlKGhlYWRlciAr
ICJcbiIpDQohIAljbWRwcm9jLndyaXRlKHNlbGYuUXVvdGVQZXJpb2RzKG1z
Zy5ib2R5KSkNCiAgCWlmIGZvb3RlcjoNCiAgCSAgICBjbWRwcm9jLndyaXRl
KGZvb3RlcikNCiAgDQotLS0gNzUsODEgLS0tLQ0KICAgICAgICAgIGNtZHBy
b2Mud3JpdGUoc3RyaW5nLmpvaW4obXNnLmhlYWRlcnMsICcnKSArICJcbiIp
DQogIAlpZiBoZWFkZXI6ICAgICAgICAgICAgICAgICAgICAgICMgVGhlICpi
b2R5KiBoZWFkZXI6DQogIAkgICAgY21kcHJvYy53cml0ZShoZWFkZXIgKyAi
XG4iKQ0KISAJY21kcHJvYy53cml0ZShtc2cuYm9keSkNCiAgCWlmIGZvb3Rl
cjoNCiAgCSAgICBjbWRwcm9jLndyaXRlKGZvb3RlcikNCiAgDQpkaWZmIC1j
IC91c3Ivc3JjL21haWxtYW4tMS4wYjUvTWFpbG1hbi9PdXRnb2luZ1F1ZXVl
LnB5IE1haWxtYW4vT3V0Z29pbmdRdWV1ZS5weQ0KKioqIC91c3Ivc3JjL21h
aWxtYW4tMS4wYjUvTWFpbG1hbi9PdXRnb2luZ1F1ZXVlLnB5CU1vbiBKdWwg
MjcgMTc6NDg6MzEgMTk5OA0KLS0tIE1haWxtYW4vT3V0Z29pbmdRdWV1ZS5w
eQlGcmkgQXVnIDI4IDIwOjUwOjUxIDE5OTgNCioqKioqKioqKioqKioqKg0K
KioqIDI1LDMxICoqKioNCiAgICAgIG9zLnVubGluayhtc2cpDQogIA0KICBk
ZWYgcHJvY2Vzc1F1ZXVlKCk6DQohICAgICBpbXBvcnQgb3MsIHNtdHBsaWIN
CiAgICAgIGZpbGVzID0gb3MubGlzdGRpcihtbV9jZmcuREFUQV9ESVIpDQog
ICAgICBmb3IgZmlsZSBpbiBmaWxlczoNCiAgICAgICAgICBpZiBURU1QTEFU
RSA8PiBmaWxlWzpsZW4oVEVNUExBVEUpXToNCi0tLSAyNSwzMSAtLS0tDQog
ICAgICBvcy51bmxpbmsobXNnKQ0KICANCiAgZGVmIHByb2Nlc3NRdWV1ZSgp
Og0KISAgICAgaW1wb3J0IG9zDQogICAgICBmaWxlcyA9IG9zLmxpc3RkaXIo
bW1fY2ZnLkRBVEFfRElSKQ0KICAgICAgZm9yIGZpbGUgaW4gZmlsZXM6DQog
ICAgICAgICAgaWYgVEVNUExBVEUgPD4gZmlsZVs6bGVuKFRFTVBMQVRFKV06
DQpkaWZmIC1jIC91c3Ivc3JjL21haWxtYW4tMS4wYjUvTWFpbG1hbi9VdGls
cy5weSBNYWlsbWFuL1V0aWxzLnB5DQoqKiogL3Vzci9zcmMvbWFpbG1hbi0x
LjBiNS9NYWlsbWFuL1V0aWxzLnB5CU1vbiBKdWwgMjcgMTc6NDg6MzEgMTk5
OA0KLS0tIE1haWxtYW4vVXRpbHMucHkJU2F0IEF1ZyAyOSAwMDoyNDo1NiAx
OTk4DQoqKioqKioqKioqKioqKioNCioqKiAxNTQsMTYwICoqKioNCiAgICAg
IG1zZyA9IE1lc3NhZ2UuT3V0Z29pbmdNZXNzYWdlKCkNCiAgICAgIG1zZy5T
ZXRTZW5kZXIoc2VuZGVyKQ0KICAgICAgbXNnLlNldEhlYWRlcignU3ViamVj
dCcsIHN1YmplY3QsIDEpDQohICAgICBtc2cuU2V0Qm9keShRdW90ZVBlcmlv
ZHModGV4dCkpDQogICAgICBEZWxpdmVyVG9Vc2VyKG1zZywgcmVjaXBpZW50
LCBhZGRfaGVhZGVycz1hZGRfaGVhZGVycykNCiAgDQogIGRlZiBEZWxpdmVy
VG9Vc2VyKG1zZywgcmVjaXBpZW50LCBhZGRfaGVhZGVycz1bXSk6DQotLS0g
MTU0LDE2MCAtLS0tDQogICAgICBtc2cgPSBNZXNzYWdlLk91dGdvaW5nTWVz
c2FnZSgpDQogICAgICBtc2cuU2V0U2VuZGVyKHNlbmRlcikNCiAgICAgIG1z
Zy5TZXRIZWFkZXIoJ1N1YmplY3QnLCBzdWJqZWN0LCAxKQ0KISAgICAgbXNn
LlNldEJvZHkodGV4dCkNCiAgICAgIERlbGl2ZXJUb1VzZXIobXNnLCByZWNp
cGllbnQsIGFkZF9oZWFkZXJzPWFkZF9oZWFkZXJzKQ0KICANCiAgZGVmIERl
bGl2ZXJUb1VzZXIobXNnLCByZWNpcGllbnQsIGFkZF9oZWFkZXJzPVtdKToN
CioqKioqKioqKioqKioqKg0KKioqIDE4NCwyMTIgKioqKg0KICAgICAgICAg
ICAgICAgIGkgPSBpICsgJ1xuJw0KICAgICAgICAgICAgICBtc2cuaGVhZGVy
cy5hcHBlbmQoaSkNCiAgDQohICAgICAgICAgdGV4dCA9IHN0cmluZy5qb2lu
KG1zZy5oZWFkZXJzLCAnJykrICdcbicrIFF1b3RlUGVyaW9kcyhtc2cuYm9k
eSkNCiAgICAgICAgICBpbXBvcnQgT3V0Z29pbmdRdWV1ZQ0KISAgICAgICAg
IHF1ZXVlX2lkID0gT3V0Z29pbmdRdWV1ZS5lbnF1ZXVlTWVzc2FnZShzZW5k
ZXIsIHJlY2lwaWVudCwgdGV4dCkNCiEgICAgICAgICBUcnlTTVRQRGVsaXZl
cnkocmVjaXBpZW50LHNlbmRlcix0ZXh0LHF1ZXVlX2lkKQ0KICAgICAgICAg
ICMgSnVzdCBpbiBjYXNlIHRoZXJlJ3Mgc3RpbGwgc29tZXRoaW5nIHdhaXRp
bmcgdG8gYmUgc2VudC4uLg0KICAgICAgICAgIE91dGdvaW5nUXVldWUucHJv
Y2Vzc1F1ZXVlKCkNCiAgICAgIGZpbmFsbHk6DQogICAgICAgICAgb3MuX2V4
aXQoMCkNCiAgDQogIGRlZiBUcnlTTVRQRGVsaXZlcnkocmVjaXBpZW50LCBz
ZW5kZXIsIHRleHQsIHF1ZXVlX2VudHJ5KToNCiEgICAgIGltcG9ydCBzbXRw
bGliDQogICAgICB0cnk6DQohICAgICAgICAgY29uID0gc210cGxpYi5TbXRw
Q29ubmVjdGlvbihtbV9jZmcuU01UUEhPU1QpDQohICAgICAgICAgY29uLmhl
bG8obW1fY2ZnLkRFRkFVTFRfSE9TVF9OQU1FKQ0KISAgICAgICAgIGNvbi5z
ZW5kKHRvPXJlY2lwaWVudCxmcm09c2VuZGVyLHRleHQ9dGV4dCkNCiAgICAg
ICAgICBjb24ucXVpdCgpDQogICAgICAgICAgaW1wb3J0IE91dGdvaW5nUXVl
dWUNCiAgICAgICAgICBPdXRnb2luZ1F1ZXVlLmRlcXVldWVNZXNzYWdlKHF1
ZXVlX2VudHJ5KQ0KICAgICAgZmluYWxseToNCiAgIyAgICBleGNlcHQ6ICMg
VG9kbzogVGhpcyBtaWdodCB3YW50IHRvIGhhbmRsZSBzcGVjaWFsIGNhc2Vz
LiAgICANCiAgICAgICAgICBwYXNzICMgSnVzdCB0cnkgYWdhaW4gbGF0ZXIu
DQohIGRlZiBRdW90ZVBlcmlvZHModGV4dCk6DQohICAgICByZXR1cm4gc3Ry
aW5nLmpvaW4oc3RyaW5nLnNwbGl0KHRleHQsICdcbi5cbicpLCAnXG4gLlxu
JykNCiAgDQogIGRlZiBWYWxpZEVtYWlsKHN0cik6DQogICAgICAiIiJWZXJp
ZnkgdGhhdCB0aGUgYW4gZW1haWwgYWRkcmVzcyBpc24ndCBncm9zc2x5IGlu
dmFsaWQuIiIiDQotLS0gMTg0LDI0MCAtLS0tDQogICAgICAgICAgICAgICAg
aSA9IGkgKyAnXG4nDQogICAgICAgICAgICAgIG1zZy5oZWFkZXJzLmFwcGVu
ZChpKQ0KICANCiEgICAgICAgICB0ZXh0ID0gc3RyaW5nLmpvaW4obXNnLmhl
YWRlcnMsICcnKSsgJ1xuJysgbXNnLmJvZHkNCiAgICAgICAgICBpbXBvcnQg
T3V0Z29pbmdRdWV1ZQ0KISAgICAgICAgIHF1ZXVlX2lkID0gT3V0Z29pbmdR
dWV1ZS5lbnF1ZXVlTWVzc2FnZShzZW5kZXIsIFtyZWNpcGllbnRdLCB0ZXh0
KQ0KISAgICAgICAgIFRyeVNNVFBEZWxpdmVyeShbcmVjaXBpZW50XSxzZW5k
ZXIsdGV4dCxxdWV1ZV9pZCkNCiAgICAgICAgICAjIEp1c3QgaW4gY2FzZSB0
aGVyZSdzIHN0aWxsIHNvbWV0aGluZyB3YWl0aW5nIHRvIGJlIHNlbnQuLi4N
CiAgICAgICAgICBPdXRnb2luZ1F1ZXVlLnByb2Nlc3NRdWV1ZSgpDQogICAg
ICBmaW5hbGx5Og0KICAgICAgICAgIG9zLl9leGl0KDApDQogIA0KKyAjIERP
IG1ha2Ugc3VyZSByZWNpcGllbnQgaXMgYSBsaXN0ISAtZGRtDQogIGRlZiBU
cnlTTVRQRGVsaXZlcnkocmVjaXBpZW50LCBzZW5kZXIsIHRleHQsIHF1ZXVl
X2VudHJ5KToNCiEgICAgIGltcG9ydCBzbXRwbGliLHN5cw0KISAgICAgI2Zy
b20gTWFpbG1hbi5Mb2dnaW5nLlN0YW1wZWRMb2dnZXIgaW1wb3J0IFN0YW1w
ZWRMb2dnZXINCiEgICAgICNzdGRvdXRfbG9jYWw9c3lzLnN0ZG91dA0KISAg
ICAgYmFkX2FkZHJzPXt9IA0KISAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMj
I1JlbW92ZSB0aGlzISEgIyMjIyMjIyMjIyMjIyMjIw0KISAgICAgIyBUaGlz
IGlzIGEgdGVtcG9yYXJ5IGhhY2ssIHRvIG1ha2Ugb2xkIHEnZCBtZXNzYWdl
cyB3b3JrISEhISEhISEhIC1kZG0NCiEgICAgIGlmIHR5cGUocmVjaXBpZW50
KSA9PSB0eXBlKCJzdHJpbmciKToNCiEgICAgICAgICByZWNpcGllbnQgPSBb
cmVjaXBpZW50XQ0KISAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAgdHJ5Og0KISAjICAg
ICAgICBjb24gPSBzbXRwbGliLlNtdHBDb25uZWN0aW9uKG1tX2NmZy5TTVRQ
SE9TVCkNCiEgIyAgICAgICAgY29uLmhlbG8obW1fY2ZnLkRFRkFVTFRfSE9T
VF9OQU1FKQ0KISAjICAgICAgICBjb24uc2VuZCh0bz1yZWNpcGllbnQsZnJt
PXNlbmRlcix0ZXh0PXRleHQpDQohICMgICAgICAgIGNvbi5xdWl0KCkNCiEg
ICAgICAgICANCiEgIyAgICAgICAgc3lzLnN0ZG91dD1TdGFtcGVkTG9nZ2Vy
KCdzbXRwbGliX2RlYnVnJywNCiEgIyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGFiZWw9c3lzLmFyZ3ZbMF0sDQohICMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbF9yZXByaW1lPTEsDQoh
ICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZmFpbD0w
KQ0KISANCiEgICAgICAgICBjb24gPSBzbXRwbGliLlNNVFAobW1fY2ZnLlNN
VFBIT1NUKQ0KISAjICAgICAgICBjb24uc2V0X2RlYnVnbGV2ZWwoMSkNCiEg
ICAgICAgICBpZiBjb24uZWhsbyhtbV9jZmcuREVGQVVMVF9IT1NUX05BTUUp
ID49IDQwMDoNCiEgICAgICAgICAgICAgY29uLmhlbG8obW1fY2ZnLkRFRkFV
TFRfSE9TVF9OQU1FKQ0KISAgICAgICAgIHRyeToNCiEgICAgICAgICAgICAg
YmFkX2FkZHJzPWNvbi5zZW5kbWFpbCh0b19hZGRycyA9IHJlY2lwaWVudCwg
ZnJvbV9hZGRyID0gc2VuZGVyLCBtc2cgPSB0ZXh0KQ0KISAgICAgICAgIGV4
Y2VwdCBzbXRwbGliLlNNVFBSZWNpcGllbnRzUmVmdXNlZDoNCiEgICAgICAg
ICAgICAgZm9yIGVhY2ggaW4gcmVjaXBpZW50Og0KISAgICAgICAgICAgICAg
ICAgYmFkX2FkZHJzW2VhY2hdPSg1MDAsIlJlZnVzZWQgW3NtdHBsaWJdIikN
CiAgICAgICAgICBjb24ucXVpdCgpDQorIA0KICAgICAgICAgIGltcG9ydCBP
dXRnb2luZ1F1ZXVlDQogICAgICAgICAgT3V0Z29pbmdRdWV1ZS5kZXF1ZXVl
TWVzc2FnZShxdWV1ZV9lbnRyeSkNCiAgICAgIGZpbmFsbHk6DQorICMgICAg
ICAgIHN5cy5zdGRvdXQ9c3Rkb3V0X2xvY2FsDQogICMgICAgZXhjZXB0OiAj
IFRvZG86IFRoaXMgbWlnaHQgd2FudCB0byBoYW5kbGUgc3BlY2lhbCBjYXNl
cy4gICAgDQogICAgICAgICAgcGFzcyAjIEp1c3QgdHJ5IGFnYWluIGxhdGVy
Lg0KISANCiEgI2RlZiBRdW90ZVBlcmlvZHModGV4dCk6DQohICMgICAgcmV0
dXJuIHN0cmluZy5qb2luKHN0cmluZy5zcGxpdCh0ZXh0LCAnXG4uXG4nKSwg
J1xuIC5cbicpDQogIA0KICBkZWYgVmFsaWRFbWFpbChzdHIpOg0KICAgICAg
IiIiVmVyaWZ5IHRoYXQgdGhlIGFuIGVtYWlsIGFkZHJlc3MgaXNuJ3QgZ3Jv
c3NseSBpbnZhbGlkLiIiIg0K
---1395546950-1591827097-904375847=:10023
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="contact_transport.patch"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.3.96.980829023047.10023J@delta.integral.org>
Content-Description: contact_transportpatch

KioqIC91c3Ivc3JjL21haWxtYW4tMS4wYjUvbWFpbC9jb250YWN0X3RyYW5z
cG9ydAlNb24gSnVsIDI3IDE3OjQ4OjMzIDE5OTgNCi0tLSBjb250YWN0X3Ry
YW5zcG9ydAlGcmkgQXVnIDI4IDIwOjM3OjA3IDE5OTgNCioqKioqKioqKioq
KioqKg0KKioqIDMxLDM3ICoqKioNCiAgDQogICMgWFhYOiB0aGlzIHJlYWxs
eSBzaG91bGQgYmUgbWVyZ2VkIHdpdGggUHl0aG9uJ3Mgc3RhbmRhcmQgc210
cGxpYiBsaWJyYXJ5DQogIGZyb20gTWFpbG1hbiBpbXBvcnQgbW1fY2ZnDQoh
IGZyb20gTWFpbG1hbiBpbXBvcnQgc210cGxpYg0KICBmcm9tIE1haWxtYW4g
aW1wb3J0IFV0aWxzDQogIGZyb20gTWFpbG1hbiBpbXBvcnQgT3V0Z29pbmdR
dWV1ZQ0KICANCi0tLSAzMSwzNyAtLS0tDQogIA0KICAjIFhYWDogdGhpcyBy
ZWFsbHkgc2hvdWxkIGJlIG1lcmdlZCB3aXRoIFB5dGhvbidzIHN0YW5kYXJk
IHNtdHBsaWIgbGlicmFyeQ0KICBmcm9tIE1haWxtYW4gaW1wb3J0IG1tX2Nm
Zw0KISAjZnJvbSBNYWlsbWFuIGltcG9ydCBzbXRwbGliDQogIGZyb20gTWFp
bG1hbiBpbXBvcnQgVXRpbHMNCiAgZnJvbSBNYWlsbWFuIGltcG9ydCBPdXRn
b2luZ1F1ZXVlDQogIA0K
---1395546950-1591827097-904375847=:10023--