SSBiZWxpZXZlIG15IG9yaWdpbmFsIGVtYWlsIGFkZHJlc3NlZCBhbGwgYnV0IG9uZSBvZiB0aGUg cG9pbnRzIHlvdQptYWRlLgoKVG8gZmxlc2ggb3V0IHdoYXQgQWxsZW4gc2FpZCwgSSBwdXQgdGhl IFtQSUNdIHRvcGljIHRhZyBvbiBhZG1pbgphbm5vdW5jZW1lbnRzIGluIG9yZGVyIHRvIGJyb2Fk Y2FzdCB0byBhbGwgUGljbGlzdCBtZW1iZXJzLiBNeQphbm5vdW5jbWVudCB3YXMgbm90IGluIGFu c3dlciB0bywgb3IgaW50ZW5kZWQgdG8gc3RhcnQsIGEgZGlzY3Vzc2lvbgphYm91dCBzcGFtLgoK QmVzdCByZWdhcmRzLCBCb2IKCk9uIFNhdCwgQXByIDI1LCAyMDE1LCBhdCAxMToyNyBQTSwgzrxy dCB3cm90ZToKPiBIZWxsbyBCb2IsCj4gCj4gSSB1bmRlcnN0YW5kIHRoYXQgd2l0aCBnbWFpbCB5 b3UgY2FuIHVzZSBhIHBsdXMgc2lnbiAiKyIgdG8gc29ydCB5b3VyCj4gZW1haWxzLiBCdXQgbW9z dCBvZiB0aGUgZW1haWwgYWRkcmVzcyByZWNlcHRvciAoRkUgLSBGcm9udCBFbmRzOyB3ZWIKPiBm b3JtcywKPiBzY3JpcHRzIGJlaGluZCBmb3JtcykgcmVqZWN0ICIrIiBhcyBhIHZhbGlkIGNoYXJh Y3RlciBpbiBlbWFpbHMuIFRoZXkKPiBkb24ndAo+IHdpc2ggdG8gcmVhZCB0aGUgUkZDIGFuZCB5 b3UgZG9uJ3QgaGF2ZSBhIGNob2ljZSB0byBlbmZvcmNlIHlvdXIgZW1haWwKPiBhZGRyZXNzIHdp dGggYSAiKyIgdG8gdGhlbS4KPiAKPiBJIGRvbid0IGJlbGlldmUgdGhhdCBhZGRpbmcgYSAiKyIg aW4geW91ciBlbWFpbCBhZGRyZXNzIHdpbGwgZ2l2ZSB5b3UgYQo+IHVuaXF1ZSBlbWFpbCBhZGRy ZXNzIHBlciBzaXRlICh3aGVyZSB5b3Ugc3Vic2NyaWJlIC0gdW5pbnRlbnRpb25hbGx5KSBhcwo+ IHRoZSBzcGFtbWVycyBrbm93IHRoYXQgdGhpcyBpcyBhIGZlYXR1cmUgd2l0aCBnbWFpbC4KPiAK PiBMYXN0bHkgZGV0ZXJyaW5nIG9yIHJlY292ZXJpbmcgZnJvbSBTUEFNIGRpc2N1c3Npb24gc2hv dWxkIGJlIGluIFtPVF0gYnV0Cj4gbm90IGluIFtQSUNdLgo+IAo+IAo+IAo+IE9uIFR1ZSwgQXBy IDcsIDIwMTUgYXQgODo0OCBBTSwgQm9iIEJsaWNrIDxib2JibGlja0BmdG1sLm5ldD4gd3JvdGU6 Cj4gCj4gPgo+ID4gQSB3aGlsZSBhZ28gd2UgZ290IHNvbWUgc3BhbSBkdWUgdG8gdGhlIGltcHJv cGVyIGhhbmRsaW5nIG9mIHRoZSBwbHVzCj4gPiBzaWduIGJ5IG91ciBsaXN0IHNvZnR3YXJlLiBJ IHRob3VnaHQgSSBmaXhlZCBpdCwgYnV0IHRvZGF5IGFub3RoZXIgb25lCj4gPiBnb3QgdGhyb3Vn aC4gSSBoYWQgdG8gZGlzYWJsZSB0aGUgdXNlcidzIGFjY291bnQuCj4gPgo+ID4gU28ganVzdCBh biBGWUksIHJlZ2lzdGVyaW5nIGZvciB0aGUgUGljbGlzdCB1c2luZyB0aGUgcGx1cyBzaWduICIr IiBpbgo+ID4geW91ciBlbWFpbCBhZGRyZXNzIGFzIGEgd2F5IHRvIHByZXNvcnQgeW91ciBlbWFp bHMgd2lsbCBub3Qgd29yaywgYW5kIGlzCj4gPiBhIHBhdGh3YXkgZm9yIHNwYW0uCj4gPgo+ID4g Qm9iCgotLSAKaHR0cDovL3d3dy5mYXN0bWFpbC5jb20gLSBBY2Nlc3MgeW91ciBlbWFpbCBmcm9t IGhvbWUgYW5kIHRoZSB3ZWIKCgotLSAKaHR0cDovL3d3dy5waWNsaXN0LmNvbS90ZWNocmVmL3Bp Y2xpc3QgUElDL1NYIEZBUSAmIGxpc3QgYXJjaGl2ZQpWaWV3L2NoYW5nZSB5b3VyIG1lbWJlcnNo aXAgb3B0aW9ucyBhdApodHRwOi8vbWFpbG1hbi5taXQuZWR1L21haWxtYW4vbGlzdGluZm8vcGlj bGlzdAo= .