T29wcyEgRm9yZ290IHNvbWUgcGllY2VzLi4uIEFuZCB1c2VkIGEgd3JvbmcgYWRkcmVzcy4uLgoK CkluIHRoZSBsaW5rZXItc2NyaXB0OgoKX1NFQ09OREFSWV9FTlRSWV9QVCA9IDB4QkZDMDJGMDA7 Ck1FTU9SWQoJewoJLi4uCgkvKiBEbyBub3QgZm9yZ2V0IHRvIHJlZHVjZSBrc2VnMF9wcm9ncmFt X21lbSB0byBleGNsdWRlIHRoZSBieXRlcyBvZgp0aGUgc2VjdGlvbiBiZWxvdyAqLwoJc2Vjb25k YXJ5X2VudHJ5X3B0IDogT1JJR0lOID0gMHhCRkMwMkYwMCwgTEVOR1RIID3CoMKgwqDCoCAweDEw CgkuLi4KCX0KU0VDVElPTlMKCXsKCS4uLgoJLnNlY29uZGFyeV9lbnRyeV9wdCBfU0VDT05EQVJZ X0VOVFJZX1BUIDoKCQl7CgkJS0VFUCgqKC5zZWNvbmRhcnlfZW50cnlfcHQuKikpCgkJS0VFUCgq KC5zZWNvbmRhcnlfZW50cnlfcHQpKQoJCX0gPiBzZWNvbmRhcnlfZW50cnlfcHQKCS4uLgoJfQoK CkVudHJ5UG9pbnQuUzoKCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCsKgwqDCoCDCoMKgwqAgLnNl dMKgwqDCoCDCoMKgwqAgbm9taXBzMTYKwqDCoMKgIMKgwqDCoCAuc2V0wqDCoMKgIMKgwqDCoCBu b3Jlb3JkZXIKwqDCoMKgIMKgwqDCoCAuc2V0IMKgwqDCoCDCoMKgwqAgbm9hdAovKj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0qLwrCoMKgwqAgwqDCoMKgIC5leHRlcm7CoMKgwqAgRW50cnlQb2ludArCoMKg wqAgwqDCoMKgIC5nbG9iYWzCoMKgwqAgU2Vjb25kYXJ5RW50cnlQb2ludAoKwqDCoMKgIMKgwqDC oCAuc2VjdGlvbiAuc2Vjb25kYXJ5X2VudHJ5X3B0LGNvZGUsa2VlcAoKwqDCoMKgIMKgwqDCoCAu ZW50wqDCoMKgIFNlY29uZGFyeUVudHJ5UG9pbnQKClNlY29uZGFyeUVudHJ5UG9pbnQ6CsKgwqDC oCDCoMKgwqAgbGHCoMKgwqAgwqDCoMKgICRrMCxFbnRyeVBvaW50CsKgwqDCoCDCoMKgwqAganLC oMKgwqAgwqDCoMKgICRrMArCoMKgwqAgwqDCoMKgIG5vcAoKwqDCoMKgIMKgwqDCoCAuZW5kwqDC oMKgIFNlY29uZGFyeUVudHJ5UG9pbnQKLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KClNvbWV3aGVy ZS5jOgoKdm9pZCBFbnRyeVBvaW50KCB2b2lkICkKCXsKCS4uLgoJfQoKCgpFbSAwOS8wMS8yMDE4 IDEyOjMxLCBIYXJvbGQgSGFsbGlrYWluZW4gZXNjcmV2ZXU6Cj4gVGhhbmtzISBBcHBhcmVudGx5 IHRoYXQgZG9lcyBub3cgd29yayBpbiB0aGUgYm9vdCBzZWN0aW9uIG9mIGZsYXNoLiBJIHNhdwo+ IHRoYXQgd3JpdHRlbiBzb21ld2hlcmUgb25saW5lIHllc3RlcmRheS4gSSB0cmllZCBpdCBhbnl3 YXkgYW5kIGdvdAo+ICJhZGRyZXNzIGF0dHJpYnV0ZSBpZ25vcmVkLiIKPgo+IFRoYW5rcyEgTW9y ZSBpZGVhcz8KPgo+IEhhcm9sZAo+Cj4+IFlvdSBjYW4gZG8gaXQgd2l0aG91dCBjaGFuZ2luZyB0 aGUgbGlua2VyIHNjcmlwdDoKPj4KPj4gX19hdHRyaWJ1dGVfXygoYWRkcmVzcyg8eW91cl9hZGRy ZXNzX2hlcmU+KSkpIDxyZXR1cm5fdHlwZT4KPj4gPGZ1bmN0aW9uX25hbWU+KCA8YXJndW1lbnRz PiApey4uLgo+Pgo+PiBDaGVlcnMsCj4+Cj4+IElzYWFjCj4+Cj4+Cj4+Cj4+IEVtIDA5LzAxLzIw MTggMDM6MjEsIEhhcm9sZCBIYWxsaWthaW5lbiBlc2NyZXZldToKPj4+IEknbSBmaW5kaW5nIGxp bmtlciBzY3JpcHRzIHRvIGJlIHByZXR0eSBjcnlwdGljLCBhbmQgdGhlIGRvY3VtZW50YXRpb24K Pj4+IGZyb20gTWljcm9jaGlwIG9ubHkgc2xpZ2h0bHkgbGVzcyBzby4KPj4+Cj4+PiBJIGhhdmUg YSBjb3VwbGUgZnVuY3Rpb25zIHRoYXQgSSd2ZSBtYW5hZ2VkIHRvIGdldCBpbnRvIGJvb3QgZmxh c2gsIGJ1dAo+Pj4gSSdkIGxpa2UgdG8gc2V0IHRoZSBhZGRyZXNzZXMgb2YgdGhlc2UgZnVuY3Rp b25zLiBIb3cgZG8gSSBkbyB0aGF0Pwo+Pj4KPj4+IFRoYW5rcyEKPj4+Cj4+PiBIYXJvbGQKPj4+ Cj4+Pgo+Pj4KPj4KPj4gLS0tCj4+IEVzdGUgZW1haWwgZm9pIGVzY2FuZWFkbyBwZWxvIEF2YXN0 IGFudGl2w4PCrXJ1cy4KPj4gaHR0cHM6Ly93d3cuYXZhc3QuY29tL2FudGl2aXJ1cwo+Pgo+Pgo+ PiAtLQo+PiBodHRwOi8vd3d3LnBpY2xpc3QuY29tL3RlY2hyZWYvcGljbGlzdCBQSUMvU1ggRkFR ICYgbGlzdCBhcmNoaXZlCj4+IFZpZXcvY2hhbmdlIHlvdXIgbWVtYmVyc2hpcCBvcHRpb25zIGF0 Cj4+IGh0dHA6Ly9tYWlsbWFuLm1pdC5lZHUvbWFpbG1hbi9saXN0aW5mby9waWNsaXN0Cj4+Cj4K CgotLS0KRXN0ZSBlbWFpbCBmb2kgZXNjYW5lYWRvIHBlbG8gQXZhc3QgYW50aXbDrXJ1cy4KaHR0 cHM6Ly93d3cuYXZhc3QuY29tL2FudGl2aXJ1cwoKLS0gCmh0dHA6Ly93d3cucGljbGlzdC5jb20v dGVjaHJlZi9waWNsaXN0IFBJQy9TWCBGQVEgJiBsaXN0IGFyY2hpdmUKVmlldy9jaGFuZ2UgeW91 ciBtZW1iZXJzaGlwIG9wdGlvbnMgYXQKaHR0cDovL21haWxtYW4ubWl0LmVkdS9tYWlsbWFuL2xp c3RpbmZvL3BpY2xpc3QK .