Re: Collating follow-up on the future of WSGI

Robert Collins <[email protected]> Wed, 20 Jan 2016 11:56:25 +1300
Newsgroups gmane.comp.python.web
Message-ID <CAJ3HoZ1Me53N76ec01m2b8UYDVVGpzCBd775Y9rVxzgXuoR1wQ@mail.gmail.com>
T24gMjAgSmFudWFyeSAyMDE2IGF0IDA1OjU1LCBDb3J5IEJlbmZpZWxkIDxjb3J5QGx1a2FzYS5j
by51az4gd3JvdGU6Cj4gQWxsLAo+Cj4gVGhhbmtzIHNvIG11Y2ggZm9yIHlvdXIgZmVlZGJhY2sg
dG8gbXkgb3JpZ2luYWwgcmVxdWVzdCBmb3IgY29tbWVudHMgb24gdGhlIGZ1dHVyZSBvZiBXU0dJ
LiBZb3UgcHJvdmlkZWQgYSB0b24gb2YgcmVhbGx5IHVzZWZ1bCBmZWVkYmFjazogd2hlbiBwcmlu
dGVkIG91dCBvbiBteSBwcmludGVyIGl0IGVuZGVkIHVwIGF0IGFib3V0IDUwIHBhZ2VzIG9mIGlu
Zm9ybWF0aW9uIHRoYXQgd2FzIHJlYWxseSBlbmdhZ2luZyByZWFkaW5nLiBJIGFsc28gd2FudCB0
byB0aGFuayB5b3UgYWxsIGZvciBrZWVwaW5nIHRoZSB0b25lIG9mIHRoZSBkaXNjdXNzaW9uIHNv
IHBvc2l0aXZlLiBPbiBhbiB0b3BpYyBsaWtlIHRoaXMgb25lIGl0IGNhbiBnZXQgdHJpY2t5IGFu
ZCBlbW90aW9uYWxseSBjaGFyZ2VkIHZlcnkgZWFzaWx5LCBhbmQgeW91IGRpZCBhIGdyZWF0IGpv
YiBvZiBhdm9pZGluZyB0aGF0IHByb2JsZW0uCj4KPiBJIHNwZW50IGEgZmV3IGhvdXJzIHRoaXMg
bW9ybmluZyBnb2luZyBvdmVyIHlvdXIgZmVlZGJhY2sgYW5kIHRyeWluZyB0byBleHRyYWN0IHNv
bWUgY29tbW9uIHRocmVhZHMuIEFsdG9nZXRoZXIgSSBiZWxpZXZlIHRoYXQgbW9zdCBwYXJ0aWNp
cGFudHMgd2VyZSBtb3N0bHkgaW4gYWdyZWVtZW50IG92ZXIgdGhlIGRpcmVjdGlvbiB3ZSBzaG91
bGQgdGFrZSwgd2l0aCBhIGZldyBvdXRsaWVycyBpbiBlYWNoIGNhc2UuIEnigJlkIGxpa2UgdG8g
c3VtbWFyaXNlIHdoYXQgSSBiZWxpZXZlIHdlcmUgdGhlIGJpZyB0YWtlLWF3YXlzIGZyb20gdGhh
dCBkaXNjdXNzaW9uIHRvIGNvbmZpcm0gdGhhdCBJ4oCZdmUgdW5kZXJzdG9vZCBldmVyeW9uZS4K
Pgo+IEnigJlkIGFsc28gbGlrZSB0aGUgbWVtYmVycyBvZiB0aGlzIFNJRyB0byB0YWtlIHRoaXMg
b3Bwb3J0dW5pdHkgdG8gZGlzY3VzcyB0aGVzZSBwcm9wb3NhbHMgbW9yZSBjb25jcmV0ZWx5LiBS
YXRoZXIgdGhhbiBleHByZXNzaW5nIG91ciBzZW50aW1lbnRzIGFib3V0IFdTR0kgYW5kIGl0cyBm
dXR1cmUgbW9yZSBnZW5lcmFsbHksIEkgd2FudCBwZW9wbGUgdG8gY3JpdGlxdWUgYW5kIG9mZmVy
IG9waW5pb25zIG9uICp0aGVzZSBzcGVjaWZpYyBwcm9wb3NhbHMqLiBUaGUgZ29hbCBoZXJlIGlz
IHRvIGdldCBhbiB1bmRlcnN0YW5kaW5nIG9mIHdoZXRoZXIgdGhlc2UgYXJlIHdvcnRoIGRvaW5n
LCBob3cgd2UgbmVlZCB0byBwcmlvcml0aXNlIHRoZSB3b3JrLCBhbmQgd2hldGhlciB0aGVyZeKA
mXMgYW55dGhpbmcgd2XigJlyZSBtaXNzaW5nLgo+Cj4gVGhlIGJlbG93IGlzIGZvcm1hdHRlZCBp
biByZXN0cnVjdHVyZWQgdGV4dCBmb3IgY2xhcml0eSwgYmVjYXVzZSBpdOKAmXMgcXVpdGUgYSBs
b3Qgb2YgaW5mb3JtYXRpb24uCj4KPgo+IENvbmNyZXRlIFByb3Bvc2Fscwo+ID09PT09PT09PT09
PT09PT09PQo+Cj4gV1NHSQo+IC0tLS0KPgo+IE92ZXJhbGwsIHRoZXJlIHdhcyBzdHJvbmcgYW5k
IGZhaXJseSB1bmFuaW1vdXMgc2VudGltZW50IHRoYXQgV1NHSSBpdHNlbGYgc2hvdWxkIG1vcmUg
b3IgbGVzcyBiZSBsZWZ0IGFsb25lLiBNaW5vciBhZGp1c3RtZW50cyB3b3VsZCBiZSB2YWx1YWJs
ZSwgYW5kIHdlIHNob3VsZCBwdXJzdWUgdGhlbSwgYnV0IHRoZSBjb250cmlidXRvcnMgZG8gbm90
IGJlbGlldmUgdGhhdCBtYWtpbmcgYSBzdWJzdGFudGlhbCByZXZpc2lvbiB0byBXU0dJIHdvdWxk
IGJlIGFkdmlzZWFibGUuCj4KPiBJIHRoZXJlZm9yZSBwcm9wb3NlIHdlIHJldmlzZSB0aGUgV1NH
SSBzcGVjaWZpY2F0aW9uIHRvIFdTR0kgMS4xIGFuZCB0aGVuIGNvbnNpZGVyIGl0ICJmaW5hbCIu
IFRoZSBmb2xsb3dpbmcgcG9pbnRzIHdlcmUgcmFpc2VkIGZvciByZXZpc2luZyBXU0dJLgoKU3Vy
ZS4KCj4gQXN5bmNocm9ub3VzIFdTR0kKPiB+fn5+fn5+fn5+fn5+fn5+fgo+Cj4gVGhpcyB3YXMg
Z2VuZXJhbGx5IHJlZ2FyZGVkIGFzIHRvbyBzdWJzdGFudGlhbCBhIGNoYW5nZSB0byBzaG9laG9y
biBpbnRvIFdTR0kuCj4KPiBCZW5vaXQgcHJvcG9zZWQgdGhhdCB3ZSBjb3VsZCBhY2hpZXZlIHRo
aXMgY2hhbmdlIGJ5IGFkZGluZyBhIGNvcnJlbGF0b3IgdG8gV1NHSS4gVGhpcyB3b3VsZCBhbGxv
dyBzZXJ2ZXJzIHRvIGFzc29jaWF0ZSBhIGdpdmVuIGNhbGwgdG8gYGB3cml0ZSgpYGAgd2l0aCBh
IHNwZWNpZmljIHJlcXVlc3QvcmVzcG9uc2UgKG1vc3QgdXNlZnVsIGluIEhUVFAvMiB3aGVyZSB0
aGlzIGNvdWxkIGNvcnJlc3BvbmQgdG8gYSBzdHJlYW0gSUQpLiBUaGlzIHdvdWxkIHRoZW4gYWxs
b3cgV1NHSSB0byB0cmFuc2l0aW9uIHRvIGEgcHVyZWx5IGNhbGxiYWNrLWJhc2VkIG1vZGVsIHRo
YXQgY291bGQgaW4gcHJpbmNpcGxlIGNvaGFiaXRhdGUgd2l0aCBhbiBhc3luYyBwcm90b2NvbCBp
biBQeXRob24uCgpVaCwgV1NHSSBkb2Vzbid0IG5lZWQgdG8gYmUgaW52b2x2ZWQgaW4gdGhpcy4g
U2VydmVycyBjYW4gYWxyZWFkeSBwYXNzCmFyYml0cmFyeSBvYmplY3RzIGFzIHdyaXRlLCBwZXJt
aXR0aW5nIGFueSBjb3JyZWxhdGlvbiB0aGV5IHdhbnQuICBJJ2QKd2FudCB0byBzZWUgc29tZXRo
aW5nIHZlcnkgc3BlY2lmaWMgdG8gY29uc2lkZXIgdGhlIGltcGFjdCBpbiB0ZXJtcyBvZgpXU0dJ
LCBvciBXU0dJLU5HIG9yIHdoYXRldmVyIHdlIGRvIGluIGZ1dHVyZS4KCj4gVGhpcyBwcm9wb3Nh
bCBpcyB3b3J0aCBoaWdobGlnaHRpbmcgbm90IGJlY3Vhc2UgSSB0aGluayB3ZSBzaG91bGQgcHVy
c3VlIGl0IHdpdGggb3VyIHJldmlzaW9uIG9mIFdTR0ksIGJ1dCBiZWNhdXNlIGl0J3Mgd29ydGgg
Y29uc2lkZXJpbmcgZm9yIGFueSBmdXR1cmUgc3BlY2lmaWNhdGlvbiB3ZSBjb21lIHVwIHdpdGgu
IE5vdGUgYWxzbyB0aGF0IEdyYWhhbSBwb2ludGVkIG91dCB0aGF0IHRoaXMgd291bGQgcmVxdWly
ZSBzb21lIGNhcmVmdWwgcmV0aGlua2luZyBvZiByZWFkcyBmcm9tIGBgd3NnaS5pbnB1dGBgLgoK
Cgo+IFNlcnZlciBQdXNoCj4gfn5+fn5+fn5+fn4KPgo+IFdlIGNhbiBzdXBwb3J0IEhUVFAvMiBz
ZXJ2ZXIgcHVzaCB1c2luZyBMaW5rIGhlYWRlcnMuIFRoaXMgY291bGQgb3B0aW9uYWxseSBiZSBz
dXBwbGVtZW50ZWQgYnkgZGVmaW5pbmcgYSBXU0dJIGV4dGVuc2lvbiB0aGF0IHByb3ZpZGVzIGEg
Y2FsbGFibGUgZm9yIGRvaW5nIHNlcnZlciBwdXNoLCB3aGljaCB3b3VsZCBiZSBhIG1pbGQgaW1w
cm92ZW1lbnQgb3ZlciB0aGUgTGluayBoZWFkZXIgYXBwcm9hY2guIEEgc2ltcGxlIHByb3Bvc2Fs
IGZvciBob3cgdG8gZG8gdGhpcyBjYW4gZWFzaWx5IGJlIGltcGxlbWVudGVkIHdpdGhvdXQgcmV2
aXNpbmcgdGhlIFdTR0kgc3BlY2lmaWNhdGlvbiwgYW5kIG1heSBub3QgZXZlbiBuZWVkIHRvIGJl
IGVuc2hyaW5lZCBpbiBhIFBFUC4gSG93ZXZlciwgaWYgd2UgcmV2aXNlIHRoZSBXU0dJIFBFUCB3
ZSBtYXkgd2FudCB0byBwcm92aWRlIGEgc21hbGwgc2VjdGlvbiB0aGF0IGluZGljYXRlcyBob3cg
dG8gYWRkIHRoZXNlIGhlYWRlcnMuCgpTaW5jZSB0aGUgcG9pbnQgb2YgV1NHSSBpcyBpbnRlcm9w
LCB3ZSBzaG91bGQgZG9jdW1lbnQgdGhlIGV4cGVjdGVkCmludGVyb3AgZmFzaGlvbiBmb3IgdGhp
cywgd2hhdGV2ZXIgaXQgaXMuCgo+IFNvY2tldCBFc2NhcGUgSGF0Y2gKPiB+fn5+fn5+fn5+fn5+
fn5+fn5+Cj4KPiBBc2lkZSBmcm9tIEJlbm9pdCwgc2VydmVyIG9wZXJhdG9ycyB3ZXJlIHVuYW5p
bW91c2x5IGRpc21pc3NpdmUgb2YgdGhlIGlkZWEgb2YgYSBzb2NrZXQgJ2VzY2FwZSBoYXRjaCcu
IEluIGdlbmVyYWwgaXQgc2VlbXMgbGlrZSBzZXJ2ZXJzIHdvdWxkIG5vdCBiZSBjYXBhYmxlIG9m
IGFjaGlldmluZyB0aGlzLiBJIHRoaW5rLCB0aGVyZWZvcmUsIHRoaXMgaWRlYSBpcyB1bndvcmth
YmxlLgoKSSB0aGluIEJlbm9pdCBpcyBtYWtpbmcgYXNzdW1wdGlvbnMgYWJvdXQgd2hhdCBhICdz
ZXJ2ZXInIGlzIHRoYXQgYXJlCm5vdCBpbXBsaWVkIGJ5IFdTR0kgLSBhbmQgdGhpcyBpcyBsZWFk
aW5nIHRvIHNvbWUgY29uZnVzaW9uLiBTZXJ2ZXJzCmFyZSBub3QgbmVjZXNzYXJpbHkgUHl0aG9u
IHByb2Nlc3NlcyA6KS4KCj4gQ2h1bmtlZCBUcmFuc2ZlciBFbmNvZGluZwo+IH5+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn4KPgo+IEl0IHdvdWxkIGJlIG5pY2UgdG8gZm9ybWFsaXNlIGNodW5rZWQg
dHJhbnNmZXIgZW5jb2RpbmcgaW4gV1NHSS4gQ3VycmVudGx5IHRoZXJlIGlzIG5vIHdheSB0byBz
aWduYWwgdG8gYXBwbGljYXRpb25zIHRoYXQgY2h1bmtlZCB0cmFuc2ZlciBlbmNvZGluZyBpcyBp
biB1c2UgYnkgdGhlIGNsaWVudCwgb3IgZm9yIHRoZSBhcHBsaWNhdGlvbiB0byByZXF1ZXN0IGl0
IGZyb20gdGhlIHNlcnZlci4KPgo+IFRoaXMgc2VlbWVkIHRvIGJlIGEgbG93IHByaW9yaXR5IHdv
cmsgaXRlbSwgYnV0IGlmIHdlIGNhbiBtYWtlIHRoaXMgZW5oYW5jZW1lbnQgZWFzaWx5IHRoZW4g
aXQncyB3b3J0aCBjb25zaWRlcmluZy4KCkknbSB2ZXJ5IG11Y2ggYWdhaW5zdCB0aGlzLiBJIHRo
aW5rIGl0cyBhbiBhYnN0cmFjdGlvbiB2aW9sYXRpb24uIEl0Cm1ha2VzIGFzIG11Y2ggc2Vuc2Ug
YXMgZXhwb3NpbmcgdGhlIGd1dHMgb2YgSFRUUC8yIGZyYW1pbmcgdG8gYW4KYXBwbGljYXRpb24u
IEEgd2F5IG9mIGRvaW5nIFRyYWlsZXJzIHdvdWxkIG1ha2Ugc2Vuc2UuCgo+IEJ5dGVzIGFuZCBV
bmljb2RlCj4gfn5+fn5+fn5+fn5+fn5+fn4KPgo+IFNldmVyYWwgY29udHJpYnV0b3JzIGV4cHJl
c3NlZCBkaXNzYXRpc2ZhY3Rpb24gZm9yIFBFUC0zMzMzJ3MgYXBwcm9hY2ggdG8gaGVhZGVycyAo
bmFtZWx5LCBMYXRpbi0xLWVuY29kZWQgVW5pY29kZSBzdHJpbmdzKSwgYW5kIGV4cHJlc3NlZCBh
IHByZWZlcmVuY2UgZm9yIHVzaW5nIGJ5dGVzdHJpbmdzLiBJZiB3ZSBhdHRlbXB0IHRoaXMgY2hh
bmdlLCB3ZSBoYXZlIGEgYmFja3dhcmQtY29tcGF0aWJpbGl0eSBjb25jZXJuLCBzbyB3ZSBtYXkg
aGF2ZSB0byBsaXZlIHdpdGggdGhpcyBkZWNpc2lvbi4KPgo+IFJlZ2FyZGxlc3MsIHRoaXMgc2hv
dWxkIGJlIHRha2VuIGFzIGEgd2FybmluZyBzaWduIGZvciBhbnkgb3RoZXIgc3BlY2lmaWNhdGlv
biB3ZSBhdHRlbXB0OiBtb3JlIG9uIHRoYXQgbGF0ZXIuCj4KPiBSRVFVRVNUX1VSSSBlbnZpcm9u
IHZhcmlhYmxlCj4gfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgo+Cj4gTXVsdGlwbGUgY29u
dHJpYnV0b3JzIGV4cHJlc3NlZCBhbiBpbnRlcmVzdCBpbiBicmluZ2luZyB0aGlzIGVudmlyb25t
ZW50IHZhcmlhYmxlIGludG8gV1NHSSBkaXJlY3RseSwgbWFraW5nIGl0IGEgcmVxdWlyZWQgcGFy
dCBvZiB0aGUgZW52aXJvbiBkaWN0aW9uYXJ5LiBBbiBhbHRlcm5hdGl2ZSBuYW1lIGZvciB0aGlz
IHdhcyBSQVdfVVJJLgoKSWYgaXRzIHJlYXNvbmFibGUgYXZhaWxhYmxlIHRvIGUuZy4gQXBhY2hl
IG1vZHVsZXMsIEkgY291bGQgc2VlIGRvaW5nCnRoaXMuIFRoYXQgc2FpZCwgd2h5IGhhdmUgdHdv
PyBXaHkgbm90IHJlcXVpcmUgdGhhdCBVUkkgYmUgdGhlICdSQVcnClVSST8gSSBkb24ndCBzZWUg
dGhlIGJlbmVmaXQgaW4gaGF2aW5nIHR3byBzZXBhcmF0ZSB2YXJpYWJsZXMuCgo+IENvbnRlbnQg
TGVuZ3Rocwo+IH5+fn5+fn5+fn5+fn5+fgo+Cj4gV2Ugc2hvdWxkIGNsYXJpZnkgaW4gdGhlIG5l
dyBzcGVjaWZpY2F0aW9uIHRoYXQgYW4gYXBwbGljYXRpb24gdGhhdCByZWFkcyBiZXlvbmQgdGhl
IGxvZ2ljYWwgbGVuZ3RoIG9mIHRoZSByZXF1ZXN0IGFzIGdpdmVuIGJ5IENPTlRFTlRfTEVOR1RI
IHdpbGwgaGF2ZSBpdHMgcmVhZHMgcmV0dXJuIGltbWVkaWF0ZWx5IHdpdGggdGhlIGVtcHR5IHN0
cmluZy4gU2VydmVycyBhcmUgcmVxdWlyZWQgdG8gcG9saWNlIHRoYXQgbG9naWMuIFRoaXMgaXMg
Y29kaWZ5aW5nIGV4aXN0aW5nIHByYWN0aWNlLCBhbmQgd291bGQgYWxzbyBtYWtlIENPTlRFTlRf
TEVOR1RIIHB1cmVseSBhZHZpc29yeS4KCkkgZG9uJ3QgdW5kZXJzdGFuZCB0aGlzIGJlaW5nIGEg
d29yayBpdGVtLiBQRVAtMzMzMyBhbHJlYWR5IGhhcyBhbGwKdGhpcyBpbiBpdDogLSBlLmcuICJB
IHNlcnZlciBzaG91bGQgcmV0dXJuIGVtcHR5IGJ5dGVzdHJpbmdzIGZyb20gYW55CmF0dGVtcHQg
dG8gcmVhZCBmcm9tIGFuIGVtcHR5IG9yIGV4aGF1c3RlZCBpbnB1dCBzdHJlYW0uICIKCj4gV2Vi
c29ja2V0cyBhbmQgSFRUUC8yCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4KPiBIZXJlLCB0aGUg
Y29uc2Vuc3VzIHNlZW1lZCB0byBiZSB0aGF0IHdlIHNob3VsZCBpbnZlc3RpZ2F0ZSB3aGV0aGVy
IHdlIGNhbiBjb21lIHVwIHdpdGggV1NHSS1lcXVpdmFsZW50IEFQSXMgZm9yIFdlYnNvY2tldHMg
YW5kIEhUVFAvMi4gVGhlIGdvYWwgaGVyZSB3b3VsZCBiZSB0byBhbGxvdyBzZXJ2ZXJzIHRoYXQg
YXJlIGludGVyZXN0ZWQgaW4gb2ZmZXJpbmcgcmljaGVyIEFQSXMgdGhhbiBXU0dJIGNhbiBwcm92
aWRlIHdvdWxkIGJlIGFibGUgdG8gZG8gc28uCj4KPiBUaGlzIGlzIHBhcnRpY3VsYXJseSB2YWx1
YWJsZSBmb3IgSFRUUC8yLCB3aGljaCBjYW4gZnVuY3Rpb24gdG90YWxseSBmaW5lIHdoZW4gdXNl
ZCB3aXRoIFdTR0kgYnV0IHdoaWNoIGNhbiBoYXZlIG11Y2ggcmljaGVyIGZ1bmN0aW9uYWxpdHkg
bWFkZSBhdmFpbGFibGUgdG8gdGhlIGFwcGxpY2F0aW9uIHZpYSBhIGRpZmZlcmVudCBBUEkgaWYg
dGhhdCBhcHBsaWNhdGlvbiByZXF1aXJlcyBpdC4KPgo+IEFzIGEgU0lHIHdlIHNob3VsZCBiZWdp
biB0byBjb25zaWRlciB3aGF0IHRoZXNlIEFQSXMgc2hvdWxkIGxvb2sgbGlrZS4gV2Ugc2hvdWxk
IGFsc28gYmVhciBpbiBtaW5kIHRoZSBtb3JlIGFkdmFuY2VkIGFzeW5jaHJvbm91cyBpbnRlcmZh
Y2VzIChzZWUgYmVsb3cpLCBhbmQgZW5zdXJlIHRoYXQgd2UgY2FuIGVhc2lseSBwcm94eSB0aGVz
ZSBBUElzIHRvIHRoZSBtb3JlIGFkdmFuY2VkIG9uZXMsIGFzIHdlIGNhbiB3aXRoIFdTR0kgdG8g
QVNHSS4KCkkgZG9uJ3Qgc2VlIHRoaXMgYmVsb25naW5nIGluIGEgV1NHSSAxLjEuIEluIGEgJzIu
MCcgb3IgYSAtTkcgb3Igc29tZQpvdGhlciBkaWZmZXJlbnRpYXRlZCB0aGluZywgc3VyZS4KCj4g
TWV0YSBBUEkKPiB+fn5+fn5+fgo+Cj4gR3JhaGFtIHN1Z2dlc3RlZCwgYWxvbmcgd2l0aCB0aGVz
ZSBtb3JlIGFkdmFuY2VkIEFQSXMsIHRoYXQgd2UgbWF5IHdhbnQgYSBtZXRhLUFQSSBvciBBUEkg
ZGlzY292ZXJ5IEFQSSB0aGF0IHdvdWxkIGFsbG93IHNlcnZlcnMgdG8gdGFyZ2V0IGEgc2luZ2xl
IGVudHJ5IHBvaW50IHdoaWNoIHRoZW4gcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBjYWxsYWJsZXMg
Zm9yIFdTR0ksIHRoZSBXZWJzb2NrZXRzIEFQSSwgYW5kIHRoZSBIVFRQLzIgQVBJLiBXZSBzaG91
bGQgYmVhciB0aGlzIGlkZWEgaW4gbWluZCwgYnV0IEkgZG9uJ3QgYmVsaWV2ZSB3ZSBzaG91bGQg
d29ycnkgdG9vIG11Y2ggYWJvdXQgd2hldGhlciB3ZSBhY3R1YWxseSBidWlsZCBpdCBvciBub3Qg
YXQgdGhpcyB0aW1lOiBpdCBjYW4gZGVmaW5pdGVseSBmb2xsb3cgdGhlIHByb3RvdHlwaW5nIHdv
cmsgb24gdGhlIEhUVFAvMiBzcGVjaWZpYyBBUElzLgoKWWVhaCwgSSdtIG5vdCBjbGVhciBvbiB3
aGF0IEdyYWhhbSB3YW50cyBoZXJlLiBJdHMgbm90IGEgbGFjayBJJ3ZlCmZlbHQgc28gZmFyIDop
LgoKPiBBc3luY2hyb25vdXMgUHl0aG9uCj4gLS0tLS0tLS0tLS0tLS0tLS0tLQo+Cj4gVGhlcmUg
d2FzIGFuIG92ZXJhbGwgcG9zaXRpdmUgcmVhY3Rpb24gdG8gaW50cm9kdWNpbmcgKnNvbWV0aGlu
ZyogdGhhdCBmaWxscyB0aGUgV1NHSSByb2xlIGZvciBhcHBsaWNhdGlvbnMgdGhhdCB1c2UgYXN5
bmNocm9ub3VzIFB5dGhvbiBmcmFtZXdvcmtzLgo+Cj4gRXhhY3RseSBob3cgdGhpcyB3b3VsZCBs
b29rIGlzIHVuY2xlYXIgYXQgdGhpcyBzdGFnZSwgYW5kIHRoaXMgc2hvdWxkIGJlIHRob3VnaHQg
b2YgYXMgYSBsb25nLXRlcm0gZ29hbCBmb3IgdGhpcyBTSUcuIEFtYmVyIEJyb3duIGlzIGNsZWFy
bHkgd29ya2luZyBvbiBhbiBpZGVhLCBhbmQgd2UgYWxzbyBoYXZlIEFuZHJldydzIHdvcmsgb24g
QVNHSSwgZWl0aGVyIG9mIHdoaWNoIGNvdWxkIGJlIHVzZWQgYXMgYSBiYXNpcyBmb3IgYSBmdXR1
cmUgUEVQLgoKR3VpZG8gYWxzbyBoYWQgc29tZSBjb21tZW50YXJ5IG9uIHRoaXMgYSB5ZWFyIG9y
IHNvIGJhY2ssIElJUkMuCgotUm9iCgoKLS0gClJvYmVydCBDb2xsaW5zIDxyYnRjb2xsaW5zQGhw
ZS5jb20+CkRpc3Rpbmd1aXNoZWQgVGVjaG5vbG9naXN0CkhQIENvbnZlcmdlZCBDbG91ZApfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpXZWItU0lHIG1haWxp
bmcgbGlzdApXZWItU0lHQHB5dGhvbi5vcmcKV2ViIFNJRzogaHR0cDovL3d3dy5weXRob24ub3Jn
L3NpZ3Mvd2ViLXNpZwpVbnN1YnNjcmliZTogaHR0cHM6Ly9tYWlsLnB5dGhvbi5vcmcvbWFpbG1h
bi9vcHRpb25zL3dlYi1zaWcvZ2Nwdy13ZWItc2lnJTQwbS5nbWFuZS5vcmcK