V2hhdCB5b3Ugd2FudCB0byBkbyBpcyB0byBpc3N1ZSBzeXN0ZW0gY2FsbHMgd2l0aCBQSFAuIFRo YXQgaXM6IG9uIExpbnV4DQp1c2UgUEhQIHRvIGV4ZWN1dGUgYSBjb21tYW5kIGxpbmUgcHJvZ3Jh bSB0aGF0IGNhbiBzZW5kIHRoZSBtaWRpIGNvbW1hbmRzLg0KDQpJZiB5b3UgaGF2ZSBwcmlvciBM aW51eC9Vbml4IGV4cGVyaWVuY2UsIGl0IHNob3VsZG4ndCBiZSB0b28gaGFyZCB0byBwdWxsDQpv ZmYuDQoNCkEgcXVpY2sgZ29vZ2xlIGZvciAiY29tbWFuZCBsaW5lIG1pZGkiIGdpdmVzOg0KWzFd IFNlbmRNSURJLCBodHRwczovL2dpdGh1Yi5jb20vZ2JldmluL1NlbmRNSURJDQpbMl0gTWlkaXNo LCBodHRwOi8vd3d3Lm1pZGlzaC5vcmcvDQoNClNvIHlvdSB3b3VsZCAoMSkgZmlndXJlIG91dCB3 aGF0IGV4YWN0IG1pZGkgY29tbWFuZHMgbmVlZCB0byBiZSBzZW50LiAoMikNCmluc3RhbGwgb25l IG9mIHRoZSByZWZlcmVuY2VkIHByb2dyYW1zIG9uIHlvdXIgbGludXggY29tcHV0ZXIgdy8gbWlk aQ0KaW50ZXJmYWNlICgzKSBGaWd1cmUgb3V0IHdoYXQgdGhlIGFyZ3VtZW50cy9jb25maWd1cmF0 aW9uIGZvciB0aGUgbWlkaQ0KY29tbWFuZCBsaW5lIHByb2dyYW0gbmVlZGVkIGluIG9yZGVyIHRv IHNlbmQgdGhvc2UgY29tbWFuZHM7IHRlc3QgaXQgYnkNCm1hbnVhbGx5IGludm9raW5nIHRoZSBt aWRpIHByb2dyYW0gZnJvbSB0aGUgY29tbWFuZCBsaW5lLiAoNCkgV3JpdGUgYSBQSFANCnNjcmlw dCB3aGljaCBpc3N1ZXMgdGhvc2Ugc2FtZSBjb21tYW5kLWxpbmUgY2FsbHMgd2hlbiB0aGUgdXNl ciBQT1NUcyBkYXRhDQpmcm9tIGEgd2ViIGZvcm0uDQoNCk5vdyB5b3UgbWlnaHQgd2FudCB0byBj aGFuZ2UgdGhlIGNvbW1hbmQgZGF0YSBiYXNlZCBvZmYgb2Ygd2hhdCB0aGUgdXNlcg0KZW50ZXJz LCBidXQgdGhhdCBpcyB3ZWxsIGRvY3VtZW50ZWQgb24gdGhlIGludGVybmV0Lg0KDQpPbiBTYXQs IEF1ZyAxOSwgMjAxNyBhdCAyOjIxIFBNLCBub25hbWUgPGFyamVuX3JAaG90bWFpbC5jb20+IHdy b3RlOg0KDQo+IEkgZmVhciB0aGlzIGlzIGdldHRpbmcgb2ZmIHRvcGljLCBidXQgY291bGQgeW91 IHBvaW50IG1lIGluIGEgZGlyZWN0aW9uDQo+IHdoZXJlIEkgY2FuIGZpbmQgYSBzb3J0IG9mIG1p ZGkgbGlicmFyeSBJIGNvdWxkIHVzZSBpbiBjb21iaW5hdGlvbiB3aXRoIFBIUD8NCj4NCj4NCj4g VG8gYmUgbW9yZSBwcmVjaXNlLCBteSBpZGVhIGlzIHRvIGltcGxlbWVudCBhIHdlYnNlcnZlciBp biB0aGUgcmFzcGJlcnJ5DQo+IHplcm8sIHdpdGggYnV0dG9ucyBmb3IgbXkgZmxvb3Jib2FyZCBl ZmZlY3RzIGluIHdoaWNoIEkgY2FuIHR1cm4ga25vYnMgb3INCj4gZmlsbCBpbiBmaWVsZHMgd2l0 aCB0aGUgZGVzaXJlZCB2YWx1ZXMgZm9yIHRoZSByZXNwZWN0aXZlIGVmZmVjdHMgKGxpa2UNCj4g ZGlzdG9ydGlvbiwgY2hvcnVzLCBkZWxheS9yZXZlcmIuIGVxdWFsaXplciwgbWFzdGVyIHZvbHVt ZSkuIEkgdGhlbiBuZWVkIHRvDQo+IHNlbmQgYSB3aG9sZSBidW5jaCBvZiBieXRlcyBpbiBhIHN5 c2V4IG1lc3NhZ2UgKDM1IGJ5dGVzKSB0byB0aGUgZmxvb3Jib2FyZA0KPiAodGhpcyBpcyBkb25l IHZpYSBzZXJhbCBjb21tKSBhbmQgbWF5YmUgcXVlcnkgaXQgYWdhaW4gdG8gY2hlY2sgd2hldGhl ciBpdA0KPiBhcnJpdmVkIGNvcnJlY3RseSAobm8gY2hlY2tzdW0gaW4gdGhlIGNvbW1hbmQpLg0K Pg0KPiBPdGhlciBmZWF0dXJlcyB3b3VsZCBiZSB0byBzYXZlIHRoZSBjdXJyZW50IHNldHRpbmdz IG9mIHRoZSBmbG9vcmJvYXJkLA0KPiBhbmQgdG8gY2hvb3NlIHdoaWNoIHByZXNldCBwYXRjaCBJ IHdhbnQuDQo+DQo+DQo+IE9yIG1heWJlIChhbmQgSSBob3BlIHNvKSB0aGlzIGFscmVhZHkgZXhp c3RzIGluIHNvbWUgZm9ybT8gSSBjb3VsZCBub3QgYmUNCj4gdGhlIGZpcnN0IHRvIHRoaW5rIG9m IHRoaXMgaWRlYS4NCj4NCj4NCj4gUmVnYXJkcw0KPg0KPiBBcmplbg0KPg0KPg0KPg0KPg0KPg0K PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiBWYW46IHBpY2xpc3QtYm91bmNl c0BtaXQuZWR1IDxwaWNsaXN0LWJvdW5jZXNAbWl0LmVkdT4gbmFtZW5zIEJ5cm9uIEplZmYgPA0K PiBieXJvbmplZmZAY2xheXRvbi5lZHU+DQo+IFZlcnpvbmRlbjogemF0ZXJkYWcgMTkgYXVndXN0 dXMgMjAxNyAxNDowNA0KPiBBYW46IE1pY3JvY29udHJvbGxlciBkaXNjdXNzaW9uIGxpc3QgLSBQ dWJsaWMuDQo+IE9uZGVyd2VycDogUmU6IFtQSUNdIFN0YW5kYWxvbmUgd2Vic2VydmVyKD8pIGJh c2VkIHBpYzE4IGhhcmR3YXJlIFVTQiBvbmx5DQo+DQo+IE9uIFNhdCwgQXVnIDE5LCAyMDE3IGF0 IDAxOjExOjI4UE0gKzAwMDAsIG5vbmFtZSB3cm90ZToNCj4gPiBEZWFyIGZvcnVtDQo+ID4NCj4g PiBTb21ld2hhdCBteXN0ZXJpb3VzIHRpdGxlLCBJIGRpZCBub3QgZmluZCBhIGNvbXBhY3QgZGVz Y3JpcHRpb24gZm9yIG15DQo+IHF1ZXN0aW9uOw0KPiA+DQo+ID4NCj4NCj4gPiBIZXJlwrRzIHRo ZSBwcm9qZWN0OiBJIHJlY2VudGx5IGFjcXVpcmVkIGEgZ3VpdGFyIG11bHRpLWVmZmVjdCBmbG9v cmJvYXJkLg0KPiA+IEl0IGlzIGZvcm0gdGhlIDgwcyBhbmQgY2FuIGJlIHF1ZXJpZWQgYW5kIHBy b2dyYW1tZWQgdGhyb3VnaCBNSURJLiBNSURJDQo+ID4gaXMgYW4gUlMyMzItbGlrZSBwcm90b2Nv bCB0byBjb250cm9sIGFsbCBraW5kcyBvZiBtdXNpY2FsIGluc3RydW1lbnRzDQo+ID4gKE1JREkg PSBNdXNpY2FsIEluc3RydW1lbnQgRGlnaXRhbCBJbnRlcmZhY2UpLiBUaGUgwrRtb2Rlcm7CtCBN SURJIG5vd2FkYXlzDQo+ID4gY29ubmVjdHMgdmlhIFVTQiwgYnV0IGluIHRoZSBiZWdpbm5pbmcg aXQgd2FzIGNvbm5lY3RlZCB0aHJvdWdoIERJTiA1LXBpbg0KPiA+IHBsdWdzIGFuZCB0aGUgc291 bmRjYXJkIFNVQkQxNSBjb25uZWN0b3Igb2YgeW91ciBjb21wdXRlci4gWW91IGd1ZXNzZWQNCj4g PiBpdDogbXkgZmxvb3Jib2FyZCBmcm9tIHRoZSA4MHMgaGFzIHRoZSBvcmlnaW5hbCBESU4gY29u bmVjdG9ycy4NCj4NCj4gSSBzdGlsbCBoYXZlIHF1aXRlIGEgZmV3IHBpZWNlcyB0aGF0IGhhdmUg dGhhdCBvcmlnaW5hbCBESU4gY29ubmVjdG9yLg0KPg0KPiA+IE5vdyBJIGNvdWxkIHdyaXRlIGEg UVQgcHJvZ3JhbSBvciBWaXN1YWwgQmFzaWMgb3IgYW55IG90aGVyIGxhbmd1YWdlDQo+ID4gYXBw bGljYXRpb24gdGhhdCBydW5zIG9uIG15IGNvbXB1dGVyIHRvIGNvbnRyb2wgdGhlIHNldHRpbmdz IG9mIG15DQo+ID4gZmxvb3Jib2FyZCwgYnV0IHdoYXQgSSB3YW50IGlzIGEgcGllY2Ugb2YgaGFy ZHdhcmUgdGhhdCBwbHVncyBpbiBteQ0KPiA+IGZsb29yYm9hcmQgYW5kIG15IFVTQiBpbnB1dCBm cm9tIHRoZSBjb21wdXRlci4NCj4NCj4gRG9lcyBpdCBoYXZlIHRvIGJlIFVTQiBmb3IgdGhlIGlu dGVyZmFjZT8NCj4NCj4gPiBJIHdhbnQgdGhlIGhhcmR3YXJlIHRvIGJlIHN0YW5kYWxvbmUsIHNv IEkgZG8gbm90IHdhbnQgYW55IGRyaXZlcnMNCj4gPiBpbnN0YWxsZWQgbm9yIHNvZnR3YXJlIG9u IG15IGNvbXB1dGVyIHRvIGNvbnRyb2wgdGhlIGZsb29yYm9hcmQgKHRoZW4gSQ0KPiA+IGNvdWxk IHdyaXRlIHNvbWUgUVQgcHJvZ3JhbSB3b27CtHQgSSkuDQo+DQo+IFVuZGVyc3Rvb2QuDQo+DQo+ ID4NCj4gPiBObyBJIHdhbnQgYSBzb3J0IG9mIHdlYnNlcnZlciBpbiBteSBoYXJkd2FyZSB0aGF0 IEkgY2FuIGFkZHJlc3MgdmlhIGENCj4gPiBub3JtYWwgd2ViYnJvd3Nlci4gVGhlIHdlYnNlcnZl ciBzaG91bGQgaGF2ZSBhIHdlYnBhZ2Ugd2l0aCBidXR0b25zIGFuZA0KPiA+IHRoZSBsaWtlIHRv IHByb2dyYW0gbXkgZmxvb3Jib2FyZC4gSSBkbyBub3Qgd2FudCBhbiBldGhlcm5ldCBwaWVjZSBv Zg0KPiA+IGhhcmR3YXJlLCB0aGF0IHdvdWxkIHJlcXVpcmUgc3BlY2lhbCBjcm9zcy1jYWJsZXMg aWYgSSB3YW50IHRvIGNvbm5lY3QNCj4gPiBkaXJlY3RseSB0byBhIGxhcHRvcC4NCj4NCj4gV2hh dCBhYm91dCB3aXJlbGVzcz8gT3IgQmx1ZXRvb3RoPw0KPg0KPiA+DQo+ID4NCj4gPiBMb25nIGlu dHJvZHVjdGlvbiwgc29ycnkgYWJvdXQgdGhhdC4NCj4NCj4gTm8gd29ycmllcy4gSXQncyBhbHdh eXMgaGVscGZ1bCB0byBoYXZlIGEgY29tcGxldGUgc3BlY2lmaWNhdGlvbi4NCj4NCj4gPg0KPiA+ IFdoYXQgSSB3YW50IGlzIGhhcmR3YXJlIHRoYXQgY29ubmVjdHMgdG8gdGhlIFVTQiBwb3J0IG9m IGFueSBsYXB0b3AuIFRoZQ0KPiA+IGhhcmR3YXJlIHRoZW4gc2VydmVzIHRoZSBsYXB0b3Agd2l0 aCBhbGwgdGhlIHNvZnR3YXJlIG5lZWRlZCwgSSBkbyBub3QNCj4gPiB3YW50IGFueSBzb2Z0d2Fy ZSBvbiBteSBsYXB0b3AuIEkgd2FzIHRoaW5raW5nIG9mIGEgc29ydCBvZiBUQ1AvSVAgc3RhY2sN Cj4gPiBpbiBhIFBJQyBjb250cm9sbGVyLCBidXQgdGhlbiBvdmVyIFVTQi4gSSBxdWVyaWVkIHRo ZSBpbnRlcm5ldCB3aXRoIHN1Y2gNCj4gPiBrZXl3b3JkcyB0byBubyBhdmFpbC4NCj4NCj4gSSBi ZWxpZXZlIHlvdSBtYXkgYmUgdGhpbmtpbmcgYWJvdXQgaGFyZHdhcmUgYXQgdGhlIGluY29ycmVj dCBsZXZlbCBmb3INCj4geW91ciBwcm9qZWN0Lg0KPg0KPiA+DQo+ID4gSXMgaXQgcG9zc2libGUg dG8gY29ubmVjdCBhIFBJQyBjb250cm9sbGVyIHNvbGVseSB0aHJvdWdoIFVTQiB0aGF0IHNlcnZl cw0KPiA+IGFzIGEga2luZCBvZiB3ZWJzZXJ2ZXI/IFRoZSBsYXB0b3AgdGhlbiBvbmx5IGhhcyB0 byBhZGRyZXNzIHRoZSB3ZWJwYWdlDQo+ID4gb2YgdGhlIFBJQyBjb250cm9sbGVyICh2aWEgVVPw n5iOIGFuZCBjYW4gcmVhZGlseSBwcm9ncmFtIG15IGZsb29yYm9hcmQuDQo+ID4NCj4NCj4gSXQn cyBwb3NzaWJsZS4gVGhlIHByb2JsZW0gaXMgdGhhdCB5b3UnbGwgc3RpbGwgbmVlZCBhIFVTQiBu ZXR3b3JrIGRyaXZlcg0KPiB0byBhY2Nlc3MgaXQuIFRoYXQncyB3aHkgSSBhc2tlZCBhYm91dCB3 aXJlbGVzcyBvciBibHVldG9vdGguDQo+DQo+ID4NCj4gPiBBIDJuZCBmdW5jdGlvbiB3b3VsZCBi ZSB0byBkb3dubG9hZCBhbGwgc2V0dGluZ3MgZnJvbSB0aGUgZmxvb3Jib2FyZCB0bw0KPiBhIGZp bGUgb24gdGhlIGNvbXB1dGVyLg0KPg0KPiBPSy4NCj4NCj4gPg0KPiA+DQo+ID4gSSBoYXZlIGEg UElDMThGMjU1MCB3b3VsZCBpdCBiZSBwb3NzaWJsZSB3aXRoIHRoYXQgY29udHJvbGxlcj8NCj4N Cj4gWWVzIGJ1dCBpdCB3b3VsZCBiZSBhIGxvdCBvZiB3b3JrIHRvIHB1bGwgb2ZmLiBTbyBoZXJl J3MgdGhlIGJpZyByZXZlYWw6DQo+DQo+IFVzZSBhIFJhc3BiZXJyeSBQaSBaZXJvIFcgKHdpcmVs ZXNzKSBmb3IgeW91ciBwcm9qZWN0LiBIZXJlJ3Mgd2h5Og0KPg0KPiAtIFVTQiwgV2lyZWxlc3Ms IGFuZCBCbHVldG9vdGggc3RhY2tzIGFscmVhZHkgaW1wbGVtZW50ZWQuDQo+IC0gQWxyZWFkeSBo YXMgc29mdHdhcmUgYW5kIGRyaXZlcnMgZm9yIG9yaWdpbmFsIE1JREkgdmlhIHRoZSBvbmJvYXJk IFVBUlQuDQo+ICAgVGhlIG9ubHkgYWRkaXRpb25hbCBoYXJkd2FyZSBpcyBhbiBvcHRvY291cGxl ciBhbmQgYSBoYW5kZnVsIG9mDQo+ICAgcmVzaXN0b3JzLg0KPiAtIEJ1aWx0IGluIHdlYnNlcnZl ciB3aXRoIFB5dGhvbiBhbmQgUEhQIGJhY2tlbmRzIGFscmVhZHkgaW1wbGVtZW50ZWQuDQo+IC0g T25seSBhZGRpdGlvbmFsIGhhcmR3YXJlIHRvIGdldCBnb2luZyBpcyBhIG1pY3JvU0QgY2FyZCBh bmQgYWNjZXNzIHRvDQo+ICAgYW4gSERNSSBjYXBhYmxlIFRWL01vbml0b3IuDQo+IC0gRWFzaWx5 IHBvd2VyZWQgYnkgYSAxMCB3YXR0IFVTQiBwaG9uZSBjaGFyZ2VyLg0KPiAtIENvc3QgaXMgJDEw IFVTRC4NCj4NCj4gSSBqdXQgaGFwcGVuZWQgdG8gYmUgcmVzZWFyY2hpbmcgcmFzcGJlcnJ5IHBp IGJhc2VkIE1JREkgc2VxdWVuY2VycyBpbiB0aGUNCj4gbGFzdCBtb250aCBvciBzbywgYW5kIHRo aXMgd2FzIHRoZSBoYXJkd2FyZSBzb2x1dGlvbiBJIHNldHRsZWQgb24gZm9yDQo+IHByZWNpc2Vs eSB0aGUgcmVhc29ucyBzdGF0ZWQgYWJvdmUuDQo+DQo+IEl0J3MganVzdCBlYXNpZXIgdG8gZGV2 ZWxvcCBhcHBsaWNhdGlvbnMgd2hlbiBhbGwgb2YgdGhlIHN5c3RlbXMgc3R1ZmYNCj4gKHdlYnNl cnZlciwgZHJpdmVycywgZXRjLikgYXJlIGFscmVhZHkgaW4gcGxhY2UuDQo+DQo+IEhvcGUgdGhp cyBoZWxwcywNCj4NCj4gQkFKDQo+DQo+ID4NCj4gPg0KPiA+IFJlZ2FyZHMNCj4gPg0KPiA+IEFy amVuDQo+ID4NCj4gPiAtLQ0KPiA+IGh0dHA6Ly93d3cucGljbGlzdC5jb20vdGVjaHJlZi9waWNs aXN0IFBJQy9TWCBGQVEgJiBsaXN0IGFyY2hpdmUNCj4gUElDbGlzdCwgTWljcm9jaGlwIFBJQzxo dHRwOi8vd3d3LnBpY2xpc3QuY29tL3RlY2hyZWYvcGljbGlzdD4NCj4gd3d3LnBpY2xpc3QuY29t DQo+IFRoZSBQSUNMaXN0IGlzIGEgY29sbGVjdGlvbiBvZiBwZW9wbGUgaW50ZXJlc3RlZCBpbiB0 aGUgTWljcm9jaGlwIFBJQw0KPiBwcm9jZXNzb3IuDQo+DQo+DQo+ID4gVmlldy9jaGFuZ2UgeW91 ciBtZW1iZXJzaGlwIG9wdGlvbnMgYXQNCj4gPiBodHRwOi8vbWFpbG1hbi5taXQuZWR1L21haWxt YW4vbGlzdGluZm8vcGljbGlzdA0KPg0KPiAtLQ0KPiBCeXJvbiBBLiBKZWZmDQo+IEFzc29jaWF0 ZSBQcm9mZXNzb3I6IERlcGFydG1lbnQgb2YgQ29tcHV0ZXIgU2NpZW5jZSBhbmQgSW5mb3JtYXRp b24NCj4gVGVjaG5vbG9neQ0KPiBDb2xsZWdlIG9mIEluZm9ybWF0aW9uIGFuZCBNYXRoZW1hdGlj YWwgU2NpZW5jZXMNCj4gQ2xheXRvbiBTdGF0ZSBVbml2ZXJzaXR5DQo+IGh0dHA6Ly9mYWN1bHR5 LmNsYXl0b24uZWR1L2JqZWZmDQo+IEJ5cm9uIEplZmYgLSBDbGF5dG9uIFN0YXRlIFVuaXZlcnNp dHk8aHR0cDovL2ZhY3VsdHkuY2xheXRvbi5lZHUvYmplZmY+DQo+IGZhY3VsdHkuY2xheXRvbi5l ZHUNCj4gQnlyb24gSmVmZiBFLW1haWw6IGJ5cm9uamVmZkBjbGF5dG9uLmVkdSBQaG9uZTogNjc4 LTQ2Ni00NDExIE9mZmljZTogVUMNCj4gMzI0IE9mZmljZSBob3VyczogTVcgMjowMCAtIDM6MTUg UE0sIG9wZW4gZG9vciBvciBieSBhcHBvaW50bWVudCAodmlhDQo+IEUtbWFpbCkuDQo+DQo+DQo+ IC0tDQo+IGh0dHA6Ly93d3cucGljbGlzdC5jb20vdGVjaHJlZi9waWNsaXN0IFBJQy9TWCBGQVEg JiBsaXN0IGFyY2hpdmUNCj4gUElDbGlzdCwgTWljcm9jaGlwIFBJQzxodHRwOi8vd3d3LnBpY2xp c3QuY29tL3RlY2hyZWYvcGljbGlzdD4NCj4gd3d3LnBpY2xpc3QuY29tDQo+IFRoZSBQSUNMaXN0 IGlzIGEgY29sbGVjdGlvbiBvZiBwZW9wbGUgaW50ZXJlc3RlZCBpbiB0aGUgTWljcm9jaGlwIFBJ Qw0KPiBwcm9jZXNzb3IuDQo+DQo+DQo+IFZpZXcvY2hhbmdlIHlvdXIgbWVtYmVyc2hpcCBvcHRp b25zIGF0DQo+IGh0dHA6Ly9tYWlsbWFuLm1pdC5lZHUvbWFpbG1hbi9saXN0aW5mby9waWNsaXN0 DQo+IC0tDQo+IGh0dHA6Ly93d3cucGljbGlzdC5jb20vdGVjaHJlZi9waWNsaXN0IFBJQy9TWCBG QVEgJiBsaXN0IGFyY2hpdmUNCj4gVmlldy9jaGFuZ2UgeW91ciBtZW1iZXJzaGlwIG9wdGlvbnMg YXQNCj4gaHR0cDovL21haWxtYW4ubWl0LmVkdS9tYWlsbWFuL2xpc3RpbmZvL3BpY2xpc3QNCj4N Cg0KDQoNCi0tDQpKYXNvbiBXaGl0ZQ0KLS0NCmh0dHA6Ly93d3cucGljbGlzdC5jb20vdGVjaHJl Zi9waWNsaXN0IFBJQy9TWCBGQVEgJiBsaXN0IGFyY2hpdmUNClZpZXcvY2hhbmdlIHlvdXIgbWVt YmVyc2hpcCBvcHRpb25zIGF0DQpodHRwOi8vbWFpbG1hbi5taXQuZWR1L21haWxtYW4vbGlzdGlu Zm8vcGljbGlzdA0K .