PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IHBpY2xpc3QtYm91bmNlc0BtaXQu ZWR1IFttYWlsdG86cGljbGlzdC1ib3VuY2VzQG1pdC5lZHVdIE9uIEJlaGFsZgo+IE9mIE1pY2hh ZWwgRGlwcGVyc3RlaW4KPiBTZW50OiBUaHVyc2RheSwgRmVicnVhcnkgMjMsIDIwMDYgNzo0NSBQ TQo+IFRvOiBNaWNyb2NvbnRyb2xsZXIgZGlzY3Vzc2lvbiBsaXN0IC0gUHVibGljLgo+IFN1Ympl Y3Q6IFJFOiBbUElDXSAyIHF1ZXN0aW9ucyBhYm91dCAxOGY0NTUwLgo+IAo+ID4gSXQgZG9lcyBu b3QgbmVlZCBhIHJldHVybi4KPiA+IFlvdSBhcmUgaW5kZWVkIGNvcnJlY3QuICBUaGF0IGlzIG15 IGVudGlyZSBwb2ludC4KPiA+Cj4gPiBCdXQsIGhvdyBkb2VzIHRoZSBjb21waWxlciBrbm93IHRo YXQ/ICBIb3cgZG9lcyBpdCBrbm93IHRoYXQgaXQgY2FuCj4gPiBhcHByb3ByaWF0ZWx5IG5vdCBn ZW5lcmF0ZSBhbnkgZW50cmFuY2UgYW5kIGV4aXQgY29kZT8gIEJlY2F1c2UgeW91Cj4gPiB3cm90 ZSB0aGUgZnVuY3Rpb24gbGlrZSB0aGF0PyAgV2hhdCBpZiB0aGF0IGlzIGFuIGVycm9yIGFuZCB5 b3Ugd291bGQKPiA+IGhhdmUgd2FudGVkIGEgd2FybmluZyBhYm91dCAnbm9uIHJlYWNoYWJsZSBj b2RlJyBvciAnZnVuY3Rpb24gZG9lcyBub3QKPiA+IGV4aXQnLiBTdXJlIGluIGEgbm9uIG11bHRp dGFza2luZyB3b3JkIHRoYXQgaXMgc29tZXRpbWVzICdqdXN0IG9uZQo+ID4gZnVuY3Rpb24nLiAg SW4gYSBtdWx0aS10YXNraW5nIHdvcmxkIGl0IGlzIG5vdC4gIFF1aXRlIGEgZmV3IHRpbWVzCj4g SSd2ZQo+ID4gc3R1bWJsZWQgYWNyb3NzIGFwcGxpY2F0aW9ucyAtIHN1Y2ggYXMgdGhlIHNsb3Qg bWFjaGluZSBJIGFtIHdvcmtpbmcKPiBvbgo+ID4gbm93IC0gdGhhdCBoYXMgcXVpdGUgYSBmZXcg bGF5ZXJzIG9mIGZ1bmN0aW9ucyBjYWxsZWQgYmVmb3JlIHlvdSBldmVuCj4gPiBnZXQgaW50byB0 aGUgb25lIHRoYXQgaGFzIHRoZSBlbmRsZXNzIGxvb3AuICBUaGlzIGlzIGEgUElDIGxpc3QgYnV0 Cj4gdGhlCj4gPiBpc3N1ZSBpcyByZWxldmFudCBtb3JlIHRvIG5vbiBQSUMgY2hpcHMgaW4gdGhp cyBjYXNlLgo+IAo+IEkndmUgc2VlbiB0aGlzIGhhbmRsZWQgdHdvIHdheXM6Cj4gMSkgSXNzdWUg YSB3YXJuaW5nIGFuZCBnZW5lcmF0ZSBub24tcmV0dXJuaW5nIGNvZGUgYW55d2F5Cj4gMikgSW5j bHVkZSBhIHNwZWNpYWwgZGlyZWN0aXZlIGZvciB0aGUgY29tcGlsZXIKPiAKPiBJIGp1c3Qgc3Rh cnRlZCB3b3JraW5nIHdpdGggSUFSIEMgZm9yIHRoZSBBVlIgYW5kIGl0IHVzZXMgYXBwcm9hY2gg IzIuCj4gSWYgSSByZW1lbWJlciByaWdodCB0aGV5IGhhdmUgdHdvIHdheXMgb2YgZGVhbGluZyB3 aXRoIGl0LiAgQW4gQU5TSQo+IGNvbXBsaWFudCAjcHJhZ21hIGFuZCBhbiBleHRlbmRlZCBfX25v cmV0dXJuIG1vZGlmZXIuCj4gCj4gLU1pa2UKClRoZSBlbnRpcmUgcG9pbnQgaGFzIGJlZW4sICJp dCB3b3VsZCBiZSBuaWNlIGlmIHRoZSBJU08gY29tbWl0dGVlIHJlY29tbWVuZGVkIGEgJ3N0YW5k YXJkJyBzcGVjaWFsIGRpcmVjdGl2ZSBmb3Igbm9uLXJldHVybmluZyBmdW5jdGlvbnMiLiAgT2Yg Y291cnNlIHRoYXQgbGVhZHMgdG8gc29tZSBwb3J0YWJpbGl0eSBub3QgYWNyb3NzIHBsYXRmb3Jt cyBidXQgYWNyb3NzIGNvbXBpbGVycyAtIHNvbWUgdmVuZG9ycyBtaWdodCB0cmVtYmxlIGF0IHRo YXQuICBTb21lIHNtYWxsIGNvZGUgc3BhY2Ugc2F2aW5ncyB0aGF0IGlzIG1vcmUgc2lnbmlmaWNh bnQgb24gc21hbGwgbWljcm9jb250cm9sbGVycyB0aGFuIGxhcmdlciBvbmVzIHdpdGggbGFyZ2Vy IGFkZHJlc3Mgc3BhY2VzLiAgUGx1cyBhIGJpdCBvZiB0aGF0IGNsaWNow6lkIHNlbGYtZG9jdW1l bnRhdGlvbiB0byBjb2RlLgoKT3RoZXJzIHdlcmUgc29ydCBvZiBoaW50aW5nIGF0IHRoYXQgYXMg d2VsbCBidXQgbm90IGFsd2F5cyBhY3R1YWxseSBzYXlpbmcgc3VjaC4KCkZldyBvZiB0aGUgY29t cGlsZXJzIEknZXYgdXNlZCBoYWQgc3VjaCBkaXJlY3RpdmVzIC0gbWlnaHQgYmUgdGhhdCBJJ3Zl IHNwZW50IGZhciBtb3JlIEMgb3IgQysrIHRpbWUgb24gcHJvY2Vzc29ycyBub3QgbmVjZXNzYXJp bHkgZGVzdGluZWQgZm9yIGVtYmVkZGVkIHVzZSBsaWtlIHRoZSBzZXZlcmFsIFJJU0MsIGN1cnJl bnQgSW50ZWwgYW5kIDY4SyBmYW1pbGllcy4KCgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSAgTm90aWNlIG9mIENvbmZpZGVudGlhbGl0eSAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRoaXMgZW1haWwgYW5kIGFu eSBmaWxlcyB0cmFuc21pdHRlZCB3aXRoIGl0IGFyZSBjb25maWRlbnRpYWwgYW5kIGludGVuZGVk IHNvbGVseSBmb3IgdGhlIHVzZSBvZiB0aGUgCmluZGl2aWR1YWwgb3IgZW50aXR5IHRvIHdob20g dGhleSBhcmUgYWRkcmVzc2VkLiBJZiB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIGVtYWlsIGluIGVy cm9yIHBsZWFzZSBub3RpZnkgCnBvc3RtYXN0ZXJAdmd0Lm5ldC4gVGhpcyBtZXNzYWdlIGNvbnRh aW5zIGNvbmZpZGVudGlhbCBpbmZvcm1hdGlvbiBhbmQgaXMgaW50ZW5kZWQgb25seSBmb3IgdGhl IAppbmRpdmlkdWFsIG5hbWVkLiBJZiB5b3UgYXJlIG5vdCB0aGUgbmFtZWQgYWRkcmVzc2VlIHlv dSBzaG91bGQgbm90IGRpc3NlbWluYXRlLCBkaXN0cmlidXRlIG9yIApjb3B5IHRoaXMgZS1tYWls LiBQbGVhc2Ugbm90aWZ5IHRoZSBzZW5kZXIgaW1tZWRpYXRlbHkgYnkgZS1tYWlsIGlmIHlvdSBo YXZlIHJlY2VpdmVkIHRoaXMgZS1tYWlsIGJ5IAptaXN0YWtlIGFuZCBkZWxldGUgdGhpcyBlLW1h aWwgZnJvbSB5b3VyIHN5c3RlbS4gSWYgeW91IGFyZSBub3QgdGhlIGludGVuZGVkIHJlY2lwaWVu dCB5b3UgYXJlIG5vdGlmaWVkIAp0aGF0IGRpc2Nsb3NpbmcsIGNvcHlpbmcsIGRpc3RyaWJ1dGlu ZyBvciB0YWtpbmcgYW55IGFjdGlvbiBpbiByZWxpYW5jZSBvbiB0aGUgY29udGVudHMgb2YgdGhp cyBpbmZvcm1hdGlvbiAKaXMgc3RyaWN0bHkgcHJvaGliaXRlZC4KCi0tIApodHRwOi8vd3d3LnBp Y2xpc3QuY29tIFBJQy9TWCBGQVEgJiBsaXN0IGFyY2hpdmUKVmlldy9jaGFuZ2UgeW91ciBtZW1i ZXJzaGlwIG9wdGlvbnMgYXQKaHR0cDovL21haWxtYW4ubWl0LmVkdS9tYWlsbWFuL2xpc3RpbmZv L3BpY2xpc3QK