XHN1YnN1YnNlY3Rpb257QWJzdHJhY3R9DQpEaWdpdGFsIHRlbGV2aXNpb24gYWxsb3dzIGludGVyYWN0aXZlIGNvbnRlbnQgdG8gYWNjb21wYW55IHN0YW5kYXJkIGJyb2FkY2FzdHMuIFRoZSBkZXZlbG9wbWVudCBvZiBiZXNwb2tlIGludGVyYWN0aXZlIGNvbnRlbnQgaXMgZXhwZW5zaXZlLiBZb3UgYXJlIHRvIGRlc2lnbiBhIHN5c3RlbSB0aGF0IHdpbGwgYWxsb3cgdGhlIG5vbi10ZWNobmljYWwgcHJvZHVjZXJzIG9mIHRlbGV2aXNpb24gcHJvZ3JhbW1lcyB0byBidWlsZCBpbnRlcmFjdGl2ZSBjb250ZW50IGZyb20gYSBzZXQgb2YgaGlnaC1sZXZlbCBidWlsZGluZyBibG9ja3MuDQpJbiBlZmZlY3QsIHlvdSB3aWxsIGNyZWF0ZSBhIG1vZGVsbGluZyBsYW5ndWFnZSAobWV0YW1vZGVsLCBydWxlcyBhbmQgc3ltYm9scyksIGEgdG9vbCBzdXBwb3J0aW5nIGl0LCBhbmQgYSBnZW5lcmF0b3IuDQoNClxzdWJzdWJzZWN0aW9ue0JhY2tncm91bmR9DQpEaWdpdGFsIHRlbGV2aXNpb24gaXMgYmVjb21pbmcgaW5jcmVhc2luZ2x5IHBvcHVsYXIgaW4gdGhlIFVLLiBJbiBhZGRpdGlvbiB0byBwcm92aWRpbmcgaGlnaGVyIHF1YWxpdHkgdmlkZW8gYW5kIGluY3JlYXNlZCBjaGFubmVsIGNhcGFjaXR5LCBpdCBhbGxvd3MgaW50ZXJhY3RpdmUgY29udGVudCB0byBhY2NvbXBhbnkgc3RhbmRhcmQgYnJvYWRjYXN0cy4gSW50ZXJhY3RpdmUgYXBwbGljYXRpb25zIGhhdmUgYmVlbiB1c2VkIHRvIGVuaGFuY2UgdHJhZGl0aW9uYWwgYnJvYWRjYXN0cyBpbiBtYW55IHdheXM6DQoNClxiZWdpbntpdGVtaXplfQ0KCVxpdGVtIFZpZXdlcnMgY2FuIHBsYXkgYWxvbmcgd2l0aCBxdWl6emVzIChGaWd1cmUgXHJlZntmaWc6TUREVElGRmlndXJlMX0pLg0KCVxpdGVtIFZpZXdlcnMgY2FuIGNob29zZSBkaWZmZXJlbnQgY2FtZXJhIGFuZ2xlcyBkdXJpbmcgc3BvcnRpbmcgZXZlbnRzDQoJXGl0ZW0gVmlld2VycyBjYW4gdGFrZSBwYXJ0IGluIGRpc2N1c3Npb25zIGFuZCBjb21tZW50IG9uIGV2ZW50cyB0aG91Z2ggbWVzc2FnZSBib2FyZHMuDQoJXGl0ZW0gVmlld2VycyBjYW4gcmVtaW5kIHRoZW1zZWx2ZXMgb2YgdGhlIGltcG9ydGFudCBkZXZlbG9wbWVudHMgaW4gYSBkcmFtYSdzIHBsb3QgKEZpZ3VyZSBccmVme2ZpZzpNRERUSUZGaWd1cmUyfSkuDQpcZW5ke2l0ZW1pemV9DQoNClxiZWdpbntmaWd1cmV9DQoJXGNlbnRlcmluZw0KCQlcaW5jbHVkZWdyYXBoaWNzW3dpZHRoPTFcdGV4dHdpZHRoXXtpbWFnZXMvTUREVElGRmlndXJlMS5wbmd9DQoJXGNhcHRpb257UGxheWluZyBhbG9uZyB3aXRoIFRlc3QgdGhlIE5hdGlvbn0NCglcbGFiZWx7ZmlnOk1ERFRJRkZpZ3VyZTF9DQpcZW5ke2ZpZ3VyZX0NCg0KXGJlZ2lue2ZpZ3VyZX0NCglcY2VudGVyaW5nDQoJCVxpbmNsdWRlZ3JhcGhpY3Nbd2lkdGg9MVx0ZXh0d2lkdGhde2ltYWdlcy9NRERUSUZGaWd1cmUyLnBuZ30NCglcY2FwdGlvbntWaWV3aW5nIGRldmVsb3BtZW50cyBpbiBUaGUgTXVyZGVyIEdhbWV9DQoJXGxhYmVse2ZpZzpNRERUSUZGaWd1cmUyfQ0KXGVuZHtmaWd1cmV9DQoNClxzdWJzdWJzZWN0aW9ue1Byb2JsZW19DQpDdXJyZW50bHksIGVhY2ggaW50ZXJhY3RpdmUgYXBwbGljYXRpb24gaXMgYmVzcG9rZS4gVGhpcyBncmVhdGx5IGxpbWl0cyB0aGUgbnVtYmVyIG9mIHByb2dyYW1tZXMgdGhhdCBjYW4gYmUgYWNjb21wYW5pZWQgYnkgaW50ZXJhY3RpdmUgY29udGVudCwgYXMgdGhlIGFwcGxpY2F0aW9ucyBhcmUgZXhwZW5zaXZlIHRvIGRldmVsb3AuIFRoZSByZXN1bHRpbmcgVUkgaXMgYWxzbyBkaWZmZXJlbnQgZm9yIGRpZmZlcmVudCBwcm9ncmFtbWVzLCB3aGljaCBpcyBjb25mdXNpbmcgdG8gdXNlcnMuIFlvdSBhcmUgdG8gZGVzaWduIGEgc3lzdGVtIHRoYXQgd2lsbCBhbGxvdyBub24tdGVjaG5pY2FsIHByb2R1Y2VycyB0byBidWlsZCBhcHBsaWNhdGlvbnMgdG8gYWNjb21wYW55IHRoZWlyIHByb2dyYW1tZXMuDQoNClRoZSBhcHBsaWNhdGlvbiB3aWxsIHNpdCBvbiB0aGUgcmlnaHQgaGFuZCBzaWRlIG9mIHRoZSBzY3JlZW4gKEZpZ3VyZSBccmVme2ZpZzpNRERUSUZGaWd1cmUzfSksIGFuZCBkaXNwbGF5IG9uZSBvZiB0aGUgZm9sbG93aW5nIHBpZWNlcyBvZiBjb250ZW50Og0KDQpcYmVnaW57aXRlbWl6ZX0NCglcaXRlbSBBIHBhZ2Ugb2YgdGV4dCwgdG8gYmUgdXNlZCBmb3IgbmV3cyBzdG9yaWVzLCBiYWNrZ3JvdW5kIGluZm9ybWF0aW9uIGV0Yy4NCglcaXRlbSBBIG11bHRpcGxlIGNob2ljZSB2b3RlLCBmb3IgZXhhbXBsZSBcZW1waHtNYW4gb2YgdGhlIG1hdGNofSBpbiBhIGZvb3RiYWxsIG1hdGNoLg0KCVxpdGVtIEEgbWVudSB0aGF0IGFsbG93cyB0aGUgdXNlciB0byB2aWV3IGl0ZW1zIG9mIGNvbnRlbnQsIGluY2x1ZGluZyBzdWItbWVudXMuDQpcZW5ke2l0ZW1pemV9DQoNClRoZSBiYXNpYyBvbi1zY3JlZW4gbGF5b3V0IGFuZCBuYXZpZ2F0aW9uYWwgc3RydWN0dXJlIG9mIHRoZSBhcHBsaWNhdGlvbiBoYXMgYmVlbiBkZWZpbmVkIGJ5IHRoZSB1c2VyIGV4cGVyaWVuY2UgZGVwYXJ0bWVudCwgYW5kIHByb2R1Y2VycyBhcmUgbm90IGFibGUgdG8gY2hhbmdlIGl0Lg0KDQpcYmVnaW57ZmlndXJlfQ0KCVxjZW50ZXJpbmcNCgkJXGluY2x1ZGVncmFwaGljc1t3aWR0aD0xXHRleHR3aWR0aF17aW1hZ2VzL01ERFRJRkZpZ3VyZTMucG5nfQ0KCVxjYXB0aW9ue0RpZmZlcmVudCB0eXBlcyBvZiBjb250ZW50fQ0KCVxsYWJlbHtmaWc6TUREVElGRmlndXJlM30NClxlbmR7ZmlndXJlfQ0KDQpcc3Vic3Vic2VjdGlvbntVc2UgY2FzZXN9DQpUaGUgZm9sbG93aW5nIHNldCBvZiB1c2UgY2FzZXMgZW1lcmdlZCBkdXJpbmcgZGlzY3Vzc2lvbnMgd2l0aCB0aGUgcHJvZHVjZXJzLiBUaGV5IGFyZSBvcmRlcmVkIGJ5IHRoZWlyIHZhbHVlIHRvIHRoZSBwcm9kdWNlcnMsIHdpdGggdGhlIHVzZSBjYXNlIGdpdmluZyB0aGUgbW9zdCB2YWx1ZSBmaXJzdC4NCg0KXHBhcmFncmFwaHtDYXNlIDF9DQpBIHByb2R1Y2VyIHdvdWxkIGxpa2UgdG8gYnVpbGQgYW4gYXBwbGljYXRpb24gZm9yIHRoZSBzb2NjZXIgd29ybGQgY3VwIGZpbmFscywgbGlzdGluZyB0aGUgdGVhbXMgYW5kIGluZm9ybWF0aW9uIGFib3V0IGVhY2gsIGFuZCBhbGxvd2luZyB2aWV3ZXJzIHRvIHZvdGUgZm9yIHRoZSBtb3N0IGxpa2VseSB3aW5uZXIuDQoNClxwYXJhZ3JhcGh7Q2FzZSAyfQ0KQXMgQ2FzZSAxLCBidXQgdGhlIHRlYW1zIHNob3VsZCBiZSBsaXN0ZWQgYnkgZ3JvdXAgKGUuZy4gZm91ciB0ZWFtcyBpbiB0aHJlZSBncm91cHMpLiBBcyB0aGUNCnRlYW1zIGFyZSBrbm93biBiZWZvcmUgdGhlaXIgZGl2aXNpb24gaW50byBncm91cHMgYnkgbG90cywgaXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIGRlZmluZSB0aGUNCmNvbnRlbnQgZm9yIHRoZSB0ZWFtcyBmaXJzdCwgYW5kIHF1aWNrbHkgYWRkIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGdyb3Vwcywgc28gdGhhdCB0aGUgYXBwbGljYXRpb24NCmNhbiBiZSBydW5uaW5nIGZvciB1c2VycyBhcyBzb29uIGFzIHBvc3NpYmxlIGR1cmluZyB0aGUgcHJvZ3JhbSB0aGF0IGJyb2FkY2FzdHMgdGhlIGRpdmlzaW9uDQpieSBsb3RzLg0KDQpccGFyYWdyYXBoe0Nhc2UgM30NCkEgcHJvZHVjZXIgd291bGQgbGlrZSB0byB1c2UgYSBwYWdlIG9mIHRleHQgdG8gcHJvdmlkZSBhbmFseXNpcyBvZiB0aGUgcmVjZW50IGV2ZW50cyBpbiBhIHJ1Z2J5DQptYXRjaC4gQSBqb3VybmFsaXN0IHdpdGggYSBsYXB0b3Agd2lsbCBuZWVkIHRvIGNoYW5nZSB0aGUgdGV4dCBvbiB0aGUgcGFnZSB0aHJvdWdob3V0IHRoZQ0KbWF0Y2guIFRoZSB1c2VyIGludGVyZmFjZSB1c2VkIGJ5IHRoZSBqb3VybmFsaXN0IHNob3VsZCBub3QgYWxsb3cgaGltIHRvIGNoYW5nZSB0aGUgc3RydWN0dXJlDQpvZiB0aGUgd2hvbGUgYXBwbGljYXRpb24sIG9ubHkgZWRpdCB0aGUgdGV4dC4NCg0KXHBhcmFncmFwaHtDYXNlIDR9DQpBIHByb2R1Y2VyIGhhcyBkZWNpZGVkIHRoYXQgdGhlIHdvcmRpbmcgb2YgYSBwYXJ0aWN1bGFyIHRleHQgcGFnZSB3YXMgYmV0dGVyIGJlZm9yZSB0aGUgbGFzdA0Kc2V0IG9mIGNoYW5nZXMsIGFuZCB3b3VsZCBsaWtlIHRvIHJldmVydCBpdC4NCg0KXHN1YnN1YnNlY3Rpb257SW50ZXJhY3RpdmUgYXBwbGljYXRpb24gYXJjaGl0ZWN0dXJlfQ0KRGVzaWduaW5nIGludGVyYWN0aXZlIGFwcGxpY2F0aW9ucyByZXF1aXJlcyByZWxhdGl2ZWx5IGRldGFpbGVkIGtub3dsZWRnZSBvZiB0aGUgc3RhbmRhcmRzIGZvcg0KZWFjaCBwbGF0Zm9ybS4gRm9yIHRoaXMgcmVhc29uLCB5b3Ugc2hvdWxkIGNvbmNlbnRyYXRlIG9uIHRoZSBzeXN0ZW0gdXNlZCBieSBwcm9kdWNlcnMgdG8NCmRlZmluZSB0aGUgYXBwbGljYXRpb24gY29udGVudCwgYW5kIGl0cyBpbnRlcmZhY2VzIHRvIGJsYWNrIGJveCBjb21wb25lbnRzIHRoYXQgYnVpbGQgdGhlDQphY3R1YWwgYXBwbGljYXRpb24uIFRvIGRlZmluZSB0aGVzZSBpbnRlcmZhY2VzLCB5b3Ugd2lsbCBuZWVkIHNvbWUga25vd2xlZGdlIG9mIHRoZSBiYXNpYw0KYXJjaGl0ZWN0dXJlIG9mIGludGVyYWN0aXZlIGFwcGxpY2F0aW9ucy4gVGhlIGZvbGxvd2luZyBjcmFzaC1jb3Vyc2Ugc2hvdWxkIHN1ZmZpY2UuDQpEaWdpdGFsIHRlbGV2aXNpb25zIGNvbnRhaW4gYSBiYXNpYyBvcGVyYXRpbmcgc3lzdGVtLCBhbmQgYSBzZXQgb2YgbGlicmFyaWVzIHByb3ZpZGluZyBmdW5jdGlvbnMNCnRvIGRpc3BsYXkgdGV4dCBhbmQgZ3JhcGhpY3MsIGNoYW5nZSB0aGUgY3VycmVudGx5IGRpc3BsYXllZCB2aWRlbyBzdHJlYW0sIGV0Yy4gQXBwbGljYXRpb25zDQphcmUgZGVzaWduZWQgYW5kIHNwZWNpZmllZCB3aXRoIGEgZG9tYWluLXNwZWNpZmljIG1vZGVsbGluZyBsYW5ndWFnZSAodGhhdCB5b3UgZGV2ZWxvcCkNCmFuZCBkZWxpdmVyZWQgdG8gZGlnaXRhbCB0ZWxldmlzaW9ucyBieSBpbnNlcnRpbmcgaXQgYXMgWE1MIGludG8gdGhlIHNhbWUgYnJvYWRjYXN0IHN0cmVhbSB0aGF0DQpjb250YWlucyB0aGUgdmlkZW8gYW5kIGF1ZGlvIGNvbnRlbnQuIE9uY2UgcnVubmluZywgYW4gYXBwbGljYXRpb24gY2FuIGJlIHVwZGF0ZWQgYnkNCmNoYW5naW5nIHRoZSBYTUwgaW4gdGhlIGJyb2FkY2FzdCBzdHJlYW0uIEFwcGxpY2F0aW9ucyBjYW4gc2VuZCByZXBseSBtZXNzYWdlcyB0byB5b3VyDQpzeXN0ZW0sIHVzdWFsbHkgdmlhIGEgc3RhbmRhcmQgbW9kZW0gYnVpbHQgaW50byB0aGUgdGVsZXZpc2lvbi4gU2VuZGluZyB0aGVzZSByZXBseSBtZXNzYWdlcw0KaXMgdmVyeSBzbG93LCBhbmQgaW52b2x2ZXMgdGhlIHZpZXdlciBwYXlpbmcgY2FsbCBjaGFyZ2VzLiBGb3IgdGhlc2UgcmVhc29ucywgcmVwbHkNCm1lc3NhZ2VzIGNhbiBvbmx5IGJlIHVzZWQgZm9yIHZpZXdlciBpbml0aWF0ZWQgYWN0aW9ucywgc3VjaCBhcyByZXNwb25kaW5nIHRvIGEgdm90ZS4NCg0KXHN1YnN1YnNlY3Rpb257Q29kZSBnZW5lcmF0aW9ufQ0KWW91IHNob3VsZCBnZW5lcmF0ZSBjb2RlIGxpa2UgdGhlIGZvbGxvd2luZyBhcyBwbGFpbiB0ZXh0LCByYXRoZXIgdGhhbiB1c2luZyBhbnkgc3BlY2lhbA0KbWV0aG9kIGZvciBzYXZpbmcgbW9kZWxzIGFzIFhNTC4gVGhpcyBwdXRzIHRoZSB2YXJpb3VzIHRvb2xzIG9uIGFuIGV2ZW4gZm9vdGluZywgYW5kDQpkZW1vbnN0cmF0ZXMgdGhlIGNvZGUgZ2VuZXJhdGlvbiBmYWNpbGl0aWVzIGJldHRlciBmb3IgYWxsIGtpbmRzIG9mIGNvZGUgYW5kIG90aGVyIG91dHB1dCBmaWxlcy4NCkhhbmRsaW5nIHdoaXRlIHNwYWNlIGFuZCBlbmNvZGluZ3MgaXMgbm90IHZpdGFsLCBidXQgdGhlIHJlc3VsdHMgc2hvdWxkIGJlIG1hY2hpbmUgYW5kDQpodW1hbi1yZWFkYWJsZS4NCg0KXGJlZ2lue2xzdGxpc3Rpbmd9W2Zsb2F0PXRicCwgYmFzaWNzdHlsZT1cdHRmYW1pbHlcZm9vdG5vdGVzaXplLCBmbGV4aWJsZWNvbHVtbnM9dHJ1ZSwgbnVtYmVycz1ub25lLCBub2xvbD10cnVlLCBjYXB0aW9uPVNhbXBsZSBHZW5lcmF0ZWQgWE1MLCBsYWJlbD1sc3Q6TUREVElGWE1MLCBsYW5ndWFnZT1YTUwsIHRhYnNpemU9Ml0NCjxUVkFwcCBuYW1lPZRXb3JsZCBDdXAgMjAxMJQ+DQoJPE1lbnUgbmFtZT2UV29ybGQgQ3VwlD4NCgkJPFZvdGUgbmFtZT2UV2hvIHdpbGwgd2luP5Q+DQoJCQk8Q2hvaWNlIG5hbWU9lEVzdG9uaWGULz4NCgkJCTxDaG9pY2UgbmFtZT2UTGl0aHVhbmlhlC8+DQoJCTwvVm90ZT4NCgkJPFRleHQgbmFtZT2UV29ybGQgQ3VwIHRyaXZpYZQ+VHJpbmlkYWQgJmFtcDsgDQoJCQlUb2JhZ28gd2VyZSB0aGUgZmlyc3QgLi4uPC9UZXh0Pg0KCQk8TWVudSBuYW1lPZRUZWFtc5Q+DQoJCYUNCgkJPC9NZW51Pg0KCTwvTWVudT4NCjwvVFZBcHA+DQpcZW5ke2xzdGxpc3Rpbmd9DQo=