TWFueSBwb2ludGVycyBJIGhhdmUgb3BlbmVkIHNpbXBseSBoYXZlIHRoZSBsYXNlciBhbmQgYSBy ZXNpc3Rvci4KCk9uIFdlZCwgU2VwIDEyLCAyMDE4LCA3OjI5IEFNIENsaW50IEpheSA8Y2pheXNo YXJwQGdtYWlsLmNvbT4gd3JvdGU6Cgo+IFRoYXTigJlzIG15IHVuZGVyc3RhbmRpbmcgb2YgaXQu IFdpdGhvdXQgdGhhdCBwaW4gdGhleSBjYW4gYmUgYSBoYW5keSBzb3VyY2UKPiBvZiBzaW5nbGUg c2hvdCB1bHRyYSBmYXN0IHJpc2UgdGltZSBwdWxzZXMgYnV0IHVuZm9ydHVuYXRlbHkgYW5kIHJh dGhlcgo+IGluY29udmVuaWVudGx5IHRoZXkgcmVxdWlyZSByZXBsYWNlbWVudCBhZnRlciBldmVy eSBwdWxzZS4KPgo+IE9uIFdlZCwgMTIgU2VwIDIwMTggYXQgMTQ6MTYsIEpvZSBNY0NhdWxleSA8 UE1DQ1VMRVlAdGNkLmllPiB3cm90ZToKPgo+ID4gSSdtIG9wZW4gdG8gY29ycmVjdGlvbiBvbiB0 aGlzLCBidXQgaXMgdGhlIG1vbml0b3IgcGhvdG9kaW9kZSBub3QgdGhlcmUKPiB0bwo+ID4gcHJv dmlkZSBmZWVkYmFjayB0byB0aGUgZHJpdmVyIGNpcmN1aXQ/IEFzIGZhciBhcyBJIGtub3cgdGhp bmdzIGNhbiBnbwo+ID4gd3JvbmcgZWFzaWx5IGlmIHlvdSBkb24ndCBoYXZlIHRoaXMuIEF0IHRo ZSB2ZXJ5IGxlYXN0LCBvdXRwdXQgd2lsbCBiZQo+IHZlcnkKPiA+IHZhcmlhYmxlLgo+ID4KPiA+ IEFueSBkaW9kZXMgSSd2ZSB1c2VkIGhhdmUgdGhpcyBidWlsdCBpbnRvIHRoZSBwYWNrYWdlLgo+ ID4KPiA+IEpvZQo+ID4KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gPiBGcm9tOiBw aWNsaXN0LWJvdW5jZXNAbWl0LmVkdSA8cGljbGlzdC1ib3VuY2VzQG1pdC5lZHU+IE9uIEJlaGFs ZiBPZgo+ID4gRGF2aWQgVmFuIEhvcm4KPiA+IFNlbnQ6IFRodXJzZGF5IDYgU2VwdGVtYmVyIDIw MTggMDA6MjMKPiA+IFRvOiBNaWNyb2NvbnRyb2xsZXIgZGlzY3Vzc2lvbiBsaXN0IC0gUHVibGlj LiA8cGljbGlzdEBtaXQuZWR1Pgo+ID4gU3ViamVjdDogUkU6IFtFRV0gTGFzZXIgZGlvZGUgc291 cmNlcwo+ID4KPiA+IExpZmV0aW1lLCBhdCBsZWFzdCBodW5kcmVkcyBvZiBob3VycyBwb3dlciBv bi4KPiA+IFRlbXBlcmF0dXJlLCAtMjAgdG8gNDBDCj4gPiBObyBtb25pdG9yIG5lZWRlZC4KPiA+ IFZpc2libGUgcmVkLCBubyBwYXJ0aWN1bGFyIHdhdmVsZW5ndGggdGhvdWdoIHNob3J0ZXIgaXMg YmV0dGVyLgo+ID4KPiA+Cj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ID4gRnJvbTog cGljbGlzdC1ib3VuY2VzQG1pdC5lZHUgPHBpY2xpc3QtYm91bmNlc0BtaXQuZWR1PiBPbiBCZWhh bGYgT2YgQm9iCj4gPiBCbGljawo+ID4gU2VudDogV2VkbmVzZGF5LCBTZXB0ZW1iZXIgNSwgMjAx OCA1OjA1IFBNCj4gPiBUbzogTWljcm9jb250cm9sbGVyIGRpc2N1c3Npb24gbGlzdCAtIFB1Ymxp Yy4gPHBpY2xpc3RAbWl0LmVkdT4KPiA+IFN1YmplY3Q6IFJlOiBbRUVdIExhc2VyIGRpb2RlIHNv dXJjZXMKPiA+Cj4gPiBIaSBEYXZpZCwKPiA+Cj4gPiBXaGF0IHNvcnQgb2YgbGlmZXRpbWUsIHdo YXQgdGVtcGVyYXR1cmUgcmFuZ2UsIGFuZCBkbyB5b3UgbmVlZCBpdCB0byBoYXZlCj4gPiBhIG1v bml0b3IgcGhvdG9kaW9kZT8KPiA+Cj4gPiBGcmllbmRseSByZWdhcmRzLCBCb2IKPiA+IF9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+IEZyb206IHBpY2xpc3QtYm91 bmNlc0BtaXQuZWR1IDxwaWNsaXN0LWJvdW5jZXNAbWl0LmVkdT4gb24gYmVoYWxmIG9mCj4gPiBE YXZpZCBWYW4gSG9ybgo+ID4gU2VudDogV2VkbmVzZGF5LCBTZXB0ZW1iZXIgNSwgMjAxOCA4OjUy IEFNCj4gPiBUbzogcGljbGlzdEBtaXQuZWR1Cj4gPiBTdWJqZWN0OiBbRUVdIExhc2VyIGRpb2Rl IHNvdXJjZXMKPiA+Cj4gPiBJIGp1c3QgbG9va2VkIG9uIERpZ2lrZXkgZm9yIExhc2VyIGRpb2Rl cywgYW5kIHRoZSBsZWFzdCBleHBlbnNpdmUgSQo+IGNvdWxkCj4gPiBmaW5kLCB3YXMgYWJvdXQg JDUgaW4gUSA1MCwwMDAhCj4gPgo+ID4gV2hlcmUgY2FuIEkgc291cmNlIHNtYWxsLCB2ZXJ5IGlu ZXhwZW5zaXZlIHZpc2libGUgbGFzZXIgZGlvZGVzPyAgMSB0byA1Cj4gPiBtVyB3b3VsZCBiZSBm aW5lLiAgTm8gb3RoZXIgcGFydGljdWxhciByZXF1aXJlbWVudHMuCj4gPiBJIG1pZ2h0IGV2ZW4g Z28gYXMgZmFyIGFzIGJhcmUgY2hpcHMgZm9yIGEgQ09CIGRlc2lnbi4KPiA+Cj4gPiAtLQo+ID4g aHR0cDovL3d3dy5waWNsaXN0LmNvbS90ZWNocmVmL3BpY2xpc3QgUElDL1NYIEZBUSAmIGxpc3Qg YXJjaGl2ZQo+ID4gVmlldy9jaGFuZ2UgeW91ciBtZW1iZXJzaGlwIG9wdGlvbnMgYXQKPiA+IGh0 dHA6Ly9tYWlsbWFuLm1pdC5lZHUvbWFpbG1hbi9saXN0aW5mby9waWNsaXN0Cj4gPgo+ID4gLS0K PiA+IGh0dHA6Ly93d3cucGljbGlzdC5jb20vdGVjaHJlZi9waWNsaXN0IFBJQy9TWCBGQVEgJiBs aXN0IGFyY2hpdmUKPiA+IFZpZXcvY2hhbmdlIHlvdXIgbWVtYmVyc2hpcCBvcHRpb25zIGF0Cj4g PiBodHRwOi8vbWFpbG1hbi5taXQuZWR1L21haWxtYW4vbGlzdGluZm8vcGljbGlzdAo+ID4KPiA+ IC0tCj4gPiBodHRwOi8vd3d3LnBpY2xpc3QuY29tL3RlY2hyZWYvcGljbGlzdCBQSUMvU1ggRkFR ICYgbGlzdCBhcmNoaXZlCj4gPiBWaWV3L2NoYW5nZSB5b3VyIG1lbWJlcnNoaXAgb3B0aW9ucyBh dAo+ID4gaHR0cDovL21haWxtYW4ubWl0LmVkdS9tYWlsbWFuL2xpc3RpbmZvL3BpY2xpc3QKPiA+ Cj4gLS0KPiBDbGludC4gTTBVQVcgSU84Mwo+Cj4gKk5vIHRyZWVzIHdlcmUgaGFybWVkIGluIHRo ZSBzZW5kaW5nIG9mIHRoaXMgbWFpbC4gSG93ZXZlciwgYSBsYXJnZSBudW1iZXIKPiBvZiBlbGVj dHJvbnMgd2VyZSBncmVhdGx5IGluY29udmVuaWVuY2VkLioKPiAtLQo+IGh0dHA6Ly93d3cucGlj bGlzdC5jb20vdGVjaHJlZi9waWNsaXN0IFBJQy9TWCBGQVEgJiBsaXN0IGFyY2hpdmUKPiBWaWV3 L2NoYW5nZSB5b3VyIG1lbWJlcnNoaXAgb3B0aW9ucyBhdAo+IGh0dHA6Ly9tYWlsbWFuLm1pdC5l ZHUvbWFpbG1hbi9saXN0aW5mby9waWNsaXN0Cj4KLS0gCmh0dHA6Ly93d3cucGljbGlzdC5jb20v dGVjaHJlZi9waWNsaXN0IFBJQy9TWCBGQVEgJiBsaXN0IGFyY2hpdmUKVmlldy9jaGFuZ2UgeW91 ciBtZW1iZXJzaGlwIG9wdGlvbnMgYXQKaHR0cDovL21haWxtYW4ubWl0LmVkdS9tYWlsbWFuL2xp c3RpbmZvL3BpY2xpc3QK .