Tm9ybWFsbHkgdGhlcmUgYXJlIHR3byB3YXlzIGEgYmxvY2sgY2FuIGhhdmUgYW4gZXJyb3I6IHJl Y292ZXJhYmxlIGFuZAp1bnJlY292ZXJhYmxlLiBUaGUgZm9ybWVyIG1lYW5zIHRoZSBkYXRhIGlz buKAmXQgY29tcGxldGVseSBpbnRhY3QgYnV0CnRoZSBlcnJvci1jb3JyZWN0aW5nIGNvZGUgd2Fz IHN1ZmZpY2llbnQgdG8gZ2V0IHRoZSBvcmlnaW5hbCBkYXRhIGJhY2suClRoZSBsYXR0ZXIgbWVh bnMgdGhlIGJsb2NrIGlzIGNvbXBsZXRlbHkgdW5yZWFkYWJsZS4gSW4gdGhlIHJlY292ZXJhYmxl CmNhc2UsIHRoZSBPUyB3aWxsIGJlIGFibGUgdG8gcmVhZCB0aGUgYmxvY2ssIGFuZCBJIGJlbGll dmUgdGhlIGRyaXZlCndpbGwgdXN1YWxseSB3cml0ZSBhIGZyZXNoIGNvcHkgb2YgdGhlIGRhdGEg aW4gdGhlIHNhbWUgcGxhY2UgKGFuZApwcm9iYWJseSB2ZXJpZnkgaXQgYWZ0ZXIgd3JpdGluZykg YXV0b21hdGljYWxseS4gSXQgc2hvdWxkIGFsc28KaW5jcmVtZW50IGEgY291bnRlciBpbiB0aGUg U01BUlQgYXR0cmlidXRlcy4KCldoZW4gdGhlIGJsb2NrIGlzIHVucmVjb3ZlcmFibGUsIHRoYXTi gJlzIHdoZW4geW91IGdldCBhbiBPUy1sZXZlbCBlcnJvci4KV3JpdGluZyBuZXcgZGF0YSB0byB0 aGF0IGJsb2NrICh3aGljaCBpcyB3aGF0IHlvdeKAmXJlIGRvaW5nIHdpdGgKYmFkYmxvY2tzIC13 KSB3aWxsLCBJIGJlbGlldmUsIHRyeSB0byB3cml0ZSB0aGUgZGF0YSBpbnRvIHRoZSBzYW1lCnBs YWNlIGZpcnN0IChJICp0aGluayogSSBoYXZlIHNlZW4gYSBjYXNlIHdoZXJlIHRoZXJl4oCZcyBh biB1bnJlYWRhYmxlCmJsb2NrLCBJIG92ZXJ3cml0ZSBpdCwgYW5kIHRoZSByZW1hcHBlZCBibG9j a3MgY291bnQgZG9lc27igJl0IGNoYW5nZSkuCkFnYWluLCBpdCBwcm9iYWJseSB2ZXJpZmllcyB0 aGUgZGF0YSBhdXRvbWF0aWNhbGx5IGFmdGVyIHdyaXRpbmcuCgpUaGUgcmVhc29uIEkgc2F5IHRo ZSBkcml2ZXMgZmlyc3QgdHJ5IHdyaXRpbmcgaW4gdGhlIHNhbWUgcGxhY2UgaXMKYmVjYXVzZSB0 aGVyZSBjb3VsZCBiZSByZWFzb25zIG90aGVyIHRoYW4gcGxhdHRlciBkZWZlY3RzIHRoYXQgbGVh ZCB0bwp1bnJlYWRhYmxlIGRhdGEsIGxpa2UgcGVyaGFwcyB0aGUgZHJpdmUgbG9zaW5nIHBvd2Vy IHdoaWxlIHdyaXRpbmcKd2hpY2ggY291bGQgbGVhZCB0byBhIHBlcmZlY3RseSBpbnRhY3QgcGxh dHRlciBjb250YWluaW5nIGEgYmxvY2sgb3IKdHdvIHdpdGggaW1wcm9wZXIgQ1JDcy4gWW91IHdv dWxkbuKAmXQgd2FudCB0byB3YXN0ZSBzcGFyZSBibG9ja3Mgb24gdGhhdAooYWxvbmcgd2l0aCB0 aGUgY29ycmVzcG9uZGluZyBwZXJmb3JtYW5jZSBsb3NzIGR1ZSB0byB0aGUgYmxvY2tzIG5vdApi ZWluZyBjb250aWd1b3VzIGFueSBtb3JlKS4KCldoZW4sIGV4YWN0bHksIHRoZSBkcml2ZSBkZWNp ZGVzIHRvIGFjdHVhbGx5IHJlbWFwIHRoZSBibG9jaywgSeKAmW0gbm90CmNvbXBsZXRlbHkgc3Vy ZS4gSSBkb27igJl0IHRoaW5rIHlvdSBoYXZlIHRvIGRvIGEgU01BUlQgc2NhbjsgSSB0aGluawpp dOKAmXMgZG9uZSBhdXRvbWF0aWNhbGx5IHdoaWxlIHRoZSBkcml2ZSBpcyB1c2VkLiBNYXliZSBp ZiBpdCB0cmllcwp3cml0aW5nIGRhdGEgYWZ0ZXIgYW4gZXJyb3IgYW5kIGl0IHN0aWxsIGRvZXNu 4oCZdCByZWFkIGJhY2sgcHJvcGVybHkuIEkKYmVsaWV2ZSBiYWRibG9ja3MgLXcgd2lsbCBwcm9i YWJseSB0cmlnZ2VyIHRoaXMsIGJlY2F1c2UgaXQgd2lsbCBmaXJzdAp3cml0ZSBkYXRhIHRvIHRo ZSBkcml2ZSB0aGVuIHRyeSB0byByZWFkIGl0IGJhY2suIER1cmluZyB0aGUgcmVhZApwaGFzZSwg dGhhdCB3aWxsIGxldCB0aGUgZHJpdmUgZGlzY292ZXIgYW55IHVucmVhZGFibGUgYmxvY2tzIGFu ZCB0cnkKdG8gd29yayBvbiB0aGVtLiBSZWNvdmVyYWJsZSBibG9ja3MgdGhhdCBoYXZlIHNvbWUg bWVkaWEgZGFtYWdlIHNvIHRoZXkKY2Fu4oCZdCBiZSB1c2VkIHJlbGlhYmx5IHdvdWxkIHByb2Jh Ymx5IGdldCByZW1hcHBlZCBpbW1lZGlhdGVseSwgd2hpbGUKdW5yZWNvdmVyYWJsZSBibG9ja3Mg d291bGQgYmUgcmVwb3J0ZWQgdG8gdGhlIE9TIGFzIHJlYWQgZXJyb3JzICh3aGljaApiYWRibG9j a3Mgd2lsbCByZXBvcnQgYXMgYmFkIGJsb2NrcykgYW5kIHF1ZXVlZCBmb3IgcmVtYXBwaW5nLiBJ ZiB5b3UKaGF2ZSBzb21lIGJhZCBibG9ja3MsIEkgc3VzcGVjdCBydW5uaW5nIGJhZGJsb2NrcyBt b3JlIHRoYW4gb25jZSB3aWxsCmV4cG9zZSB0aGlzIGJlaGF2aW91cjogeW91IG1pZ2h0IHNlZSBh IHJlYWQgZXJyb3Igb24gYSBwYXJ0aWN1bGFyIGJsb2NrCm9uIHRoZSBmaXJzdCBzY2FuLCBidXQg aXQgbWlnaHQgZGlzYXBwZWFyIG9uIHRoZSBzZWNvbmQgc2NhbiBiZWNhdXNlCml04oCZcyBiZWVu IHJlbWFwcGVkLgoKWW91IGNhbiBhbHdheXMgZG8gdGhlIFNNQVJUIEV4dGVuZGVkIFNlbGYgVGVz dCB0aG91Z2guIFRoYXQgc2hvdWxkIGJlCmd1YXJhbnRlZWQgdG8gZmluZCBhbmQgcmVtYXAgYW55 dGhpbmcgdGhhdCBuZWVkcyBpdCwgSSB0aGluay4KCkNocmlzCgpPbiBUdWUsIDIzIE9jdCAyMDEy IDIxOjEzOjQ1IC0wNDAwClYgRyA8eC5zb2xhcndpbmQueEBnbWFpbC5jb20+IHdyb3RlOgoKPiBI aSBhbGwsCj4gCj4gSWYgSSBydW4gYGJhZGJsb2NrcyAtd3N2IC9kZXYvc2RkYCBvbiBMaW51eCAo Zm9yIGV4YW1wbGUpLCB3aGljaCBkb2VzCj4gYSBmaWxlc3lzdGVtLWxldmVsIGJhZC1ibG9jayBz Y2FuIG9uIGEgaGFyZCBkaXNrIHVzaW5nIGEgd3JpdGUtcmVhZAo+IC1jb21wYXJlIG1ldGhvZCwg d291bGQgaXQgdHJpZ2dlciB0aGUgaGFyZCBkaXNrJ3Mgb3duIGludGVybmFsIGJhZAo+IGJsb2Nr IGZsYWdnaW5nL3JlbWFwcGluZyBtZWNoYW5pc20/IElmIG5vdCwgaG93IHdvdWxkIEkgZ28gYWJv dXQKPiB0cmlnZ2VyaW5nIHRoZSBoYXJkIGRpc2sncyBpbnRlcm5hbCBoYXJkd2FyZSBiYWQgYmxv Y2sgZmxhZ2dpbmcKPiBtZWNoYW5pc20/IFdvdWxkIGEgbGVuZ3RoeSBTTUFSVCBzY2FuIGRvIHRo ZSBqb2I/IE9yIGRvZXMgaXQKPiBnZW5lcmFsbHkgd29yayBhdXRvbWF0aWNhbGx5IHdoZW4gYSBy ZWFkL3dyaXRlIGVycm9yIGlzICJkZXRlY3RlZCI/CgotLSAKaHR0cDovL3d3dy5waWNsaXN0LmNv bSBQSUMvU1ggRkFRICYgbGlzdCBhcmNoaXZlClZpZXcvY2hhbmdlIHlvdXIgbWVtYmVyc2hpcCBv cHRpb25zIGF0Cmh0dHA6Ly9tYWlsbWFuLm1pdC5lZHUvbWFpbG1hbi9saXN0aW5mby9waWNsaXN0 Cg== .