From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=49123 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OMlpx-0003sI-Jr for qemu-devel@nongnu.org; Thu, 10 Jun 2010 13:46:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OMlpu-0003EU-6r for qemu-devel@nongnu.org; Thu, 10 Jun 2010 13:46:41 -0400 Received: from mail-pv0-f173.google.com ([74.125.83.173]:35352) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OMlpt-0003EF-Jd for qemu-devel@nongnu.org; Thu, 10 Jun 2010 13:46:38 -0400 Received: by pvg3 with SMTP id 3so90386pvg.4 for ; Thu, 10 Jun 2010 10:46:36 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: <4F6AB6D9-39AF-42C9-9CC9-7A87F244A663@claunia.com> References: <4F6AB6D9-39AF-42C9-9CC9-7A87F244A663@claunia.com> From: Blue Swirl Date: Thu, 10 Jun 2010 17:46:16 +0000 Message-ID: Subject: Re: [Qemu-devel] [RFC PATCH 1/2] USB Video Class device emulation. Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Natalia Portillo Cc: qemu-devel Developers T24gVHVlLCBKdW4gOCwgMjAxMCBhdCAzOjM0IFBNLCBOYXRhbGlhIFBvcnRpbGxvIDxjbGF1bmlh QGNsYXVuaWEuY29tPiB3cm90ZToKClBsZWFzZSBhZGQgYSBzaG9ydCBkZXNjcmlwdGlvbiBvZiB0 aGUgcGF0Y2guCgo+IFNpZ25lZC1vZmYtYnk6IE5hdGFsaWEgUG9ydGlsbG8gPGNsYXVuaWFAY2xh dW5pYS5jb20+Cj4gLS0tCj4gwqBody91c2ItdXZjLmMgfCAxMDk2ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiDCoDEgZmlsZXMgY2hh bmdlZCwgMTA5NiBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQo+IMKgY3JlYXRlIG1vZGUg MTAwNjQ0IGh3L3VzYi11dmMuYwo+Cj4gZGlmZiAtLWdpdCBhL2h3L3VzYi11dmMuYyBiL2h3L3Vz Yi11dmMuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uYjcxMWY1MQo+ IC0tLSAvZGV2L251bGwKPiArKysgYi9ody91c2ItdXZjLmMKPiBAQCAtMCwwICsxLDEwOTYgQEAK PiArLyoKPiArICogVVNCIFZpZGVvIENsYXNzIERldmljZSBlbXVsYXRpb24uCj4gKyAqCj4gKyAq IENvcHlyaWdodCAoYykgMjAxMCBDbGF1bmlhLmNvbQo+ICsgKiBXcml0dGVuIGJ5IE5hdGFsaWEg UG9ydGlsbG8gPG5hdGFsaWFAY2xhdW5pYS5jb20+Cj4gKyAqCj4gKyAqIEJhc2VkIG9uIGh3L3Vz Yi1oaWQuYzoKPiArICogQ29weXJpZ2h0IChjKSAyMDA1IEZhYnJpY2UgQmVsbGFyZAo+ICsgKgo+ ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yCj4gKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzCj4gKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uIGluIGl0cyB2ZXJzaW9uIDIuCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgo+ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuIMKgU2VlIHRoZQo+ICsgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgo+ICsgKgo+ICsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwo+ICsgKiB3aXRoIHRoaXMgcHJv Z3JhbTsgaWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgo+ICsgKgo+ ICsgKi8KPiArI2luY2x1ZGUgImh3LmgiCj4gKyNpbmNsdWRlICJjb25zb2xlLmgiCj4gKyNpbmNs dWRlICJ1c2IuaCIKPiArI2luY2x1ZGUgInFlbXUtZXJyb3IuaCIKPiArI2luY2x1ZGUgPHN0ZGlv Lmg+Cj4gKyNpbmNsdWRlIDxmY250bC5oPgo+ICsjaW5jbHVkZSA8ZXJybm8uaD4KPiArLy8gVjRM MiBpb2N0bHMKPiArI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgo+ICsjaW5jbHVkZSA8bGludXgvdmlk ZW9kZXYyLmg+Cj4gKwo+ICsjZGVmaW5lIERFQlVHX1VWQwoKVGhpcyBzaG91bGQgYmUgY29tbWVu dGVkIG91dC4KCj4gKwo+ICsjaWZkZWYgREVCVUdfVVZDCj4gKyNkZWZpbmUgRFBSSU5URihmbXQs IC4uLikgXAo+ICtkbyB7IHByaW50ZigidXNiLXV2YzogIiBmbXQgLCAjIyBfX1ZBX0FSR1NfXyk7 IH0gd2hpbGUgKDApCj4gKyNlbHNlCj4gKyNkZWZpbmUgRFBSSU5URihmbXQsIC4uLikgZG8ge30g d2hpbGUoMCkKPiArI2VuZGlmCj4gKwo+ICsvKiBVU0IgVmlkZW8gQ2xhc3MgUmVxdWVzdCBjb2Rl cyAqLwo+ICsjZGVmaW5lIFVTQl9VVkNfUkNfVU5ERUZJTkVEIMKgIDB4MDAKPiArI2RlZmluZSBV U0JfVVZDX1NFVF9DVVIgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAweDAxCj4g KyNkZWZpbmUgVVNCX1VWQ19HRVRfQ1VSIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgMHg4MQo+ICsjZGVmaW5lIFVTQl9VVkNfR0VUX01JTiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoDB4ODIKPiArI2RlZmluZSBVU0JfVVZDX0dFVF9NQVggwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAweDgzCj4gKyNkZWZpbmUgVVNCX1VWQ19HRVRfUkVTIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgMHg4NAo+ICsjZGVmaW5lIFVTQl9VVkNf R0VUX0xFTiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDB4ODUKPiArI2RlZmlu ZSBVU0JfVVZDX0dFVF9JTkZPIMKgIMKgIMKgIMKgIMKgIMKgIMKgIDB4ODYKPiArI2RlZmluZSBV U0JfVVZDX0dFVF9ERUYgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAweDg3Cj4g Kwo+ICsvKiBVU0IgVmlkZW8gQ2xhc3MgUmVxdWVzdCB0eXBlcyAqLwo+ICsjZGVmaW5lIFVWQ1Nl dFZpZGVvQ29udHJvbCDCoCDCoCDCoCDCoCDCoCDCoCAweDIxMDAKPiArI2RlZmluZSBVVkNTZXRW aWRlb1N0cmVhbWluZyDCoCAweDIyMDAKPiArI2RlZmluZSBVVkNHZXRWaWRlb0NvbnRyb2wgwqAg wqAgwqAgwqAgwqAgwqAgMHhBMTAwCj4gKyNkZWZpbmUgVVZDR2V0VmlkZW9TdHJlYW1pbmcgwqAg MHhBMjAwCj4gKwo+ICt0eXBlZGVmIHN0cnVjdCBVU0JVVkNTdGF0ZSB7Cj4gKyDCoCDCoFVTQkRl dmljZSBkZXY7Cj4gKyDCoCDCoCDCoCBjaGFyIMKgIMKgY3VycmVudF9pbnB1dDsKClRoZSBmb3Jt YXR0aW5nIHNlZW1zIHRvIGJlIG9mZi4gUGxlYXNlIGNoZWNrIHRoYXQgaW5kZW50YXRpb24gaXMg NApzcGFjZXMsIG5vIHRhYnMuCgo+ICsgwqAgwqAgwqAgY2hhciDCoCDCoCp2NGwyX2RldmljZTsK PiArfSBVU0JVVkNTdGF0ZTsKPiArCj4gK3N0YXRpYyBpbnQgdjRsMl9mZDsKPiArc3RhdGljIGNo YXIgKmZyYW1lOwo+ICtzdGF0aWMgY2hhciAqZnJhbWVfc3RhcnQ7Cj4gK3N0YXRpYyBpbnQgZnJh bWVfbGVuZ3RoOwo+ICtzdGF0aWMgaW50IGZyYW1lX2lkOwo+ICtzdGF0aWMgaW50IGZpcnN0X2J1 bGtfcGFja2V0Owo+ICtzdGF0aWMgaW50IGZyYW1lX3JlbWFpbmluZ19ieXRlczsKPiArc3RhdGlj IGludCBmcmFtZV9tYXhfbGVuZ3RoOwoKQ291bGRuJ3QgdGhlc2UgYmVsb25nIHRvIFVTQlVWQ1N0 YXRlPwoKPiArCj4gK3N0YXRpYyBjb25zdCB1aW50OF90IHFlbXVfdXZjX2Rldl9kZXNjcmlwdG9y W10gPSB7Cj4gKyDCoCDCoCDCoCAweDEyLCDCoCDCoCDCoCAvKiDCoHU4IGJMZW5ndGg7ICovCj4g KyAgICAgICAweDAxLCAgICAgICAvKiAgdTggYkRlc2NyaXB0b3JUeXBlOyBEZXZpY2UgKi8KCkl0 IHdvdWxkIGJlIG1vcmUgcmVhZGFibGUgaWYgeW91IGRlZmluZWQgc3RydWN0dXJlcyBmb3IgYWxs IHRoZQpkZXNjcmlwdG9ycyBhbmQgc29tZSAjZGVmaW5lcyBvciBlbnVtcyBmb3IgdGhlIG1hZ2lj IG51bWJlcnMuIFRoZW4KdGhpcyB3b3VsZCBiZWNvbWUgc29tZXRoaW5nIGxpa2U6CiAgICAuYkxl bmd0aCA9IDB4MTIsCiAgICAuYkRlc2NyaXB0b3JUeXBlID0gVVNCX0RFU0NUWVBFX0RFVklDRSwK CnNvIHZlcnkgZmV3IGNvbW1lbnRzIHdvdWxkIGJlIG5lZWRlZCBhbnltb3JlLiBJdCdzIGEgYmln IHRhc2sgdGhvdWdoCmFuZCBjb3VsZCBiZSB0YWtlbiBhcyBsYXRlciBjbGVhbnVwLgoKPiArIMKg IMKgIMKgIDB4MDAsIDB4MDIsIC8qIMKgdTE2IGJjZFVTQjsgdjIuMCAqLwo+ICsKPiArIMKgIMKg IMKgIDB4RUYsIMKgIMKgIMKgIC8qIMKgdTggwqBiRGV2aWNlQ2xhc3M7ICovCj4gKyDCoCDCoCDC oCAweDAyLCDCoCDCoCDCoCAvKiDCoHU4IMKgYkRldmljZVN1YkNsYXNzOyAqLwo+ICsgwqAgwqAg wqAgMHgwMSwgwqAgwqAgwqAgLyogwqB1OCDCoGJEZXZpY2VQcm90b2NvbDsgWyBsb3cvZnVsbCBz cGVlZHMgb25seSBdICovCj4gKyDCoCDCoCDCoCAweDA4LCDCoCDCoCDCoCAvKiDCoHU4IMKgYk1h eFBhY2tldFNpemUwOyA4IEJ5dGVzICovCj4gKwo+ICsgwqAgwqAgwqAgLyogVmVuZG9yIGFuZCBw cm9kdWN0IGlkIGFyZSBhcmJpdHJhcnkuIMKgKi8KPiArIMKgIMKgIMKgIDB4MDAsIDB4MDAsIC8q IMKgdTE2IGlkVmVuZG9yOyAqLwo+ICsgwqAgwqAgwqAgMHgwMCwgMHgwMCwgLyogwqB1MTYgaWRQ cm9kdWN0OyAqLwo+ICsgwqAgwqAgwqAgMHgwMCwgMHgwMCwgLyogwqB1MTYgYmNkRGV2aWNlICov Cj4gKwo+ICsgwqAgwqAgwqAgMHgwMSwgwqAgwqAgwqAgLyogwqB1OCDCoGlNYW51ZmFjdHVyZXI7 ICovCj4gKyDCoCDCoCDCoCAweDAyLCDCoCDCoCDCoCAvKiDCoHU4IMKgaVByb2R1Y3Q7ICovCj4g KyDCoCDCoCDCoCAweDAwLCDCoCDCoCDCoCAvKiDCoHU4IMKgaVNlcmlhbE51bWJlcjsgKi8KPiAr IMKgIMKgIMKgIDB4MDEgwqAgwqAgwqAgwqAvKiDCoHU4IMKgYk51bUNvbmZpZ3VyYXRpb25zOyAq Lwo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHVpbnQ4X3QgcWVtdV91dmNfY29uZmlnX2Rlc2Ny aXB0b3JbXSA9IHsKPiArCj4gKyDCoCDCoCDCoCAvKiBvbmUgY29uZmlndXJhdGlvbiAqLwo+ICsg wqAgwqAgwqAgMHgwOSwgwqAgwqAgwqAgLyogwqB1OCDCoGJMZW5ndGg7ICovCj4gKyDCoCDCoCDC oCAweDAyLCDCoCDCoCDCoCAvKiDCoHU4IMKgYkRlc2NyaXB0b3JUeXBlOyBDb25maWd1cmF0aW9u ICovCj4gKyDCoCDCoCDCoCAweEI3LCAweDAwLCAvKiDCoHUxNiB3VG90YWxMZW5ndGg7ICovCgpJ J20gbm90IGZhbWlsaWFyIHdpdGggVVNCIGF0IGFsbCwgaXMgdGhlIGVuZGlhbm5lc3Mgc3BlY2lm aWVkIHRvIGJlCmxpdHRsZSBlbmRpYW4sIG9yIHNob3VsZCB0aGlzIGJlIGRpZmZlcmVudCBvbiBh IGJpZyBlbmRpYW4gaG9zdCBvcgpndWVzdD8KCj4gKyDCoCDCoCDCoCAweDAyLCDCoCDCoCDCoCAv KiDCoHU4IMKgYk51bUludGVyZmFjZXM7ICgyKSAqLwo+ICsgwqAgwqAgwqAgMHgwMSwgwqAgwqAg wqAgLyogwqB1OCDCoGJDb25maWd1cmF0aW9uVmFsdWU7ICovCj4gKyDCoCDCoCDCoCAweDAwLCDC oCDCoCDCoCAvKiDCoHU4IMKgaUNvbmZpZ3VyYXRpb247ICovCj4gKyDCoCDCoCDCoCAweDgwLCDC oCDCoCDCoCAvKiDCoHU4IMKgYm1BdHRyaWJ1dGVzOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBCaXQgNzogbXVzdCBiZSBzZXQsCj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDY6IFNlbGYtcG93ZXJlZCwK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgNTogUmVt b3RlIHdha2V1cCwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgNC4uMDogcmVzdmQgKi8KPiArIMKgIMKgIMKgIDB4RkEsIMKgIMKgIMKgIC8qIMKgdTgg wqBNYXhQb3dlcjsgKi8KPiArCj4gKyDCoCDCoCDCoCAvKiBpbnRlcmZhY2UgYXNzb2NpYXRpb24g Ki8KPiArIMKgIMKgIMKgIDB4MDgsIMKgIMKgIMKgIMKgIMKgIC8qIMKgdTggwqBpZmFfYkxlbmd0 aDsgKi8KPiArIMKgIMKgIMKgIDB4MEIsIMKgIMKgIMKgIMKgIMKgIC8qIMKgdTggwqBpZmFfYkRl c2NyaXB0b3JUeXBlOyBJbnRlcmZhY2UgQXNzb2NpYXRpb24gKi8KPiArIMKgIMKgIMKgIDB4MDAs IMKgIMKgIMKgIMKgIMKgIC8qIMKgdTggwqBpZmFfYkZpcnN0SW50ZXJmYWNlOyAqLwo+ICsgwqAg wqAgwqAgMHgwMiwgwqAgwqAgwqAgwqAgwqAgLyogwqB1OCDCoGlmYV9iSW50ZXJmYWNlQ291bnQ7 ICovCj4gKyDCoCDCoCDCoCAweDBFLCDCoCDCoCDCoCDCoCDCoCAvKiDCoHU4IMKgaWZhX2JGdW5j dGlvbkNsYXNzOyBDQ19WSURFTyAqLwo+ICsgwqAgwqAgwqAgMHgwMywgwqAgwqAgwqAgwqAgwqAg LyogwqB1OCDCoGlmYV9iRnVuY3Rpb25TdWJDbGFzczsgU1NfVklERU9fSU5URVJGQUNFX0NPTExF Q1RJT04gKi8KPiArIMKgIMKgIMKgIDB4MDAsIMKgIMKgIMKgIMKgIMKgIC8qIMKgdTggwqBpZmFf YkZ1bmN0aW9uUHJvdG9jb2w7IHVudXNlZCAqLwo+ICsgwqAgwqAgwqAgMHgwMiwgwqAgwqAgwqAg wqAgwqAgLyogwqB1OCDCoGlmYV9pRnVuY3Rpb247ICovCj4gKwo+ICsgwqAgwqAgwqAgLyogdmlk ZW8gY29udHJvbCBpbnRlcmZhY2UgKi8KPiArIMKgIMKgIMKgIDB4MDksIMKgIMKgIMKgIC8qIMKg dTggwqBpZl9iTGVuZ3RoOyAqLwo+ICsgwqAgwqAgwqAgMHgwNCwgwqAgwqAgwqAgLyogwqB1OCDC oGlmX2JEZXNjcmlwdG9yVHlwZTsgSW50ZXJmYWNlICovCj4gKyDCoCDCoCDCoCAweDAwLCDCoCDC oCDCoCAvKiDCoHU4IMKgaWZfYkludGVyZmFjZU51bWJlcjsgKi8KPiArIMKgIMKgIMKgIDB4MDAs IMKgIMKgIMKgIC8qIMKgdTggwqBpZl9iQWx0ZXJuYXRlU2V0dGluZzsgKi8KPiArIMKgIMKgIMKg IDB4MDEsIMKgIMKgIMKgIC8qIMKgdTggwqBpZl9iTnVtRW5kcG9pbnRzOyAqLwo+ICsgwqAgwqAg wqAgMHgwRSwgwqAgwqAgwqAgLyogwqB1OCDCoGlmX2JJbnRlcmZhY2VDbGFzczsgQ0NfVklERU8g Ki8KPiArIMKgIMKgIMKgIDB4MDEsIMKgIMKgIMKgIC8qIMKgdTggwqBpZl9iSW50ZXJmYWNlU3Vi Q2xhc3M7IFNDX1ZJREVPQ09OVFJPTCAqLwo+ICsgwqAgwqAgwqAgMHgwMCwgwqAgwqAgwqAgLyog wqB1OCDCoGlmX2JJbnRlcmZhY2VQcm90b2NvbDsgdW51c2VkICovCj4gKyDCoCDCoCDCoCAweDAy LCDCoCDCoCDCoCAvKiDCoHU4IMKgaWZfaUludGVyZmFjZTsgKi8KPiArCj4gKyDCoCDCoCDCoCAv KiBjbGFzcyBzcGVjaWZpYyB2YyBpbnRlcmZhY2UgZGVzY3JpcHRvciAqLwo+ICsgwqAgwqAgwqAg MHgwRCwgwqAgwqAgwqAgwqAgwqAgLyogwqB1OCDCoGNpZl9iTGVuZ3RoOyAqLwo+ICsgwqAgwqAg wqAgMHgyNCwgwqAgwqAgwqAgwqAgwqAgLyogwqB1OCDCoGNpZl9iRGVzY3JpcHRvclR5cGU7IENT X0lOVEVSRkFDRSAqLwo+ICsgwqAgwqAgwqAgMHgwMSwgwqAgwqAgwqAgwqAgwqAgLyogwqB1OCDC oGNpZl9iRGVzY3JpcHRvclN1YlR5cGU7IFZDX0hFQURFUiAqLwo+ICsgwqAgwqAgwqAgMHgwMCwg MHgwMSwgLyogwqB1MTYgY2lmX2JjZFVWQzsgMS4wICovCj4gKyDCoCDCoCDCoCAweDQyLCAweDAw LCAvKiDCoHUxNiBjaWZfd1RvdGFsTGVuZ3RoICovCj4gKyDCoCDCoCDCoCAweDgwLCAweDhELCAv KiDCoHUzMiBjaWZfZHdDbG9ja0ZyZXF1ZW5jeTsgRGVwcmVjYXRlZCwgNk1oeiAqLwoKSXQncyBN SHouCgo+ICsgwqAgwqAgwqAgMHg1QiwgMHgwMCwKPiArIMKgIMKgIMKgIDB4MDEsIMKgIMKgIMKg IMKgIMKgIC8qIMKgdTggwqBjaWZfYkluQ29sbGVjdGlvbjsgKi8KPiArIMKgIMKgIMKgIDB4MDEs IMKgIMKgIMKgIMKgIMKgIC8qIMKgdTggwqBjaWZfYmFJbnRlcmZhY2VOcjsgKi8KPiArCj4gKyDC oCDCoCDCoCAvKiBpbnB1dCB0ZXJtaW5hbCBkZXNjcmlwdG9yICovCj4gKyDCoCDCoCDCoCAweDEx LCDCoCDCoCDCoCDCoCDCoCAvKiDCoHU4IMKgaXRkX2JMZW5ndGg7ICovCj4gKyDCoCDCoCDCoCAw eDI0LCDCoCDCoCDCoCDCoCDCoCAvKiDCoHU4IMKgaXRkX2JEZXNjcmlwdG9yVHlwZTsgQ1NfSU5U RVJGQUNFICovCj4gKyDCoCDCoCDCoCAweDAyLCDCoCDCoCDCoCDCoCDCoCAvKiDCoHU4IMKgaXRk X2JEZXNjcmlwdG9yU3VidHlwZTsgVkNfSU5QVVRfVEVSTUlOQUwgKi8KPiArIMKgIMKgIMKgIDB4 MDEsIMKgIMKgIMKgIMKgIMKgIC8qIMKgdTggwqBpdGRfYlRlcm1pbmFsSUQ7ICovCj4gKyDCoCDC oCDCoCAweDAxLCAweDAyLCAvKiDCoHUxNiDCoGl0ZF93VGVybWluYWxUeXBlOyBJVFRfQ0FNRVJB ICovCj4gKyDCoCDCoCDCoCAweDAwLCDCoCDCoCDCoCDCoCDCoCAvKiDCoHU4IMKgaXRkX2JBc3Nv Y1Rlcm1pbmFsOyBObyBhc3NvY2lhdGlvbiAqLwo+ICsgwqAgwqAgwqAgMHgwMCwgwqAgwqAgwqAg wqAgwqAgLyogwqB1OCDCoGl0ZF9pVGVybWluYWw7IFVudXNlZCAqLwo+ICsgwqAgwqAgwqAgMHgw MCwgMHgwMCwgLyogwqB1MTYgwqBpdGRfd09iamVjdGl2ZUZvY2FsTGVuZ3RoTWluOyBObyBvcHRp Y2FsIHpvb20gKi8KPiArIMKgIMKgIMKgIDB4MDAsIDB4MDAsIC8qIMKgdTE2IMKgaXRkX3dPYmpl Y3RpdmVGb2NhbExlbmd0aE1heDsgTm8gb3B0aWNhbCB6b29tICovCj4gKyDCoCDCoCDCoCAweDAw LCAweDAwLCAvKiDCoHUxNiDCoGl0ZF93T2N1bGFyRm9jYWxMZW5ndGg7IE5vIG9wdGljYWwgem9v bSAqLwo+ICsgwqAgwqAgwqAgMHgwMiwgwqAgwqAgwqAgwqAgwqAgLyogwqB1OCDCoGl0ZF9iQ29u dHJvbFNpemU7IE5vIGNvbnRyb2xzIGltcGxlbWVudGVkICovCj4gKyDCoCDCoCDCoCAweDAwLCAw eDAwLCAvKiDCoHUxNiDCoGl0ZF9ibUNvbnRyb2xzOyBObyBjb250cm9scyBzdXBwb3J0ZWQgKi8K PiArCj4gKyDCoCDCoCDCoCAweDA4LCDCoCDCoCDCoCDCoCDCoCAvKiDCoCDCoCDCoHU4IMKgIMKg IMKgaXRkX2JMZW5ndGg7ICovCj4gKyDCoCDCoCDCoCAweDI0LCDCoCDCoCDCoCDCoCDCoCAvKiDC oCDCoCDCoHU4IMKgIMKgIMKgaXRkX2JEZXNjcmlwdG9yVHlwZTsgQ1NfSU5URVJGQUNFICovCj4g KyDCoCDCoCDCoCAweDAyLCDCoCDCoCDCoCDCoCDCoCAvKiDCoCDCoCDCoHU4IMKgIMKgIMKgaXRk X2JEZXNjcmlwdG9yU3VidHlwZTsgVkNfSU5QVVRfVEVSTUlOQUwgKi8KPiArIMKgIMKgIMKgIDB4 MDIsIMKgIMKgIMKgIMKgIMKgIC8qIMKgIMKgIMKgdTggwqAgwqAgwqBpdGRfYlRlcm1pbmFsSUQ7 ICovCj4gKyDCoCDCoCDCoCAweDAxLCAweDA0LCDCoCDCoCAvKiDCoCDCoCDCoHUxNiDCoCDCoCBp dGRfd1Rlcm1pbmFsVHlwZTsgSVRUX0NPTVBPU0lURSAqLwo+ICsgwqAgwqAgwqAgMHgwMCwgwqAg wqAgwqAgwqAgwqAgLyogwqAgwqAgwqB1OCDCoCDCoCDCoGl0ZF9iQXNzb2NUZXJtaW5hbDsgKi8K PiArIMKgIMKgIMKgIDB4MDAsIMKgIMKgIMKgIMKgIMKgIC8qIMKgIMKgIMKgdTggwqAgwqAgwqBp dGRfaVRlcm1pbmFsOyAqLwo+ICsKPiArIMKgIMKgIMKgIC8qIG91dHB1dCB0ZXJtaW5hbCBkZXNj cmlwdG9yICovCj4gKyDCoCDCoCDCoCAweDA5LCDCoCDCoCDCoCDCoCDCoCAvKiDCoCDCoCDCoHU4 IMKgIMKgIMKgb3RkX2JMZW5ndGg7ICovCj4gKyDCoCDCoCDCoCAweDI0LCDCoCDCoCDCoCDCoCDC oCAvKiDCoCDCoCDCoHU4IMKgIMKgIMKgb3RkX2JEZXNjcmlwdG9yVHlwZTsgQ1NfSU5URVJGQUNF ICovCj4gKyDCoCDCoCDCoCAweDAzLCDCoCDCoCDCoCDCoCDCoCAvKiDCoCDCoCDCoHU4IMKgIMKg IMKgb3RkX2JEZXNjcmlwdG9yU3VidHlwZTsgVkNfT1VUUFVUX1RFUk1JTkFMICovCj4gKyDCoCDC oCDCoCAweDAzLCDCoCDCoCDCoCDCoCDCoCAvKiDCoCDCoCDCoHU4IMKgIMKgIMKgb3RkX2JUZXJt aW5hbElEOyAqLwo+ICsgwqAgwqAgwqAgMHgwMSwgMHgwMSwgwqAgwqAgLyogwqAgwqAgwqB1MTYg wqAgwqAgb3RkX3dUZXJtaW5hbFR5cGU7IFRUX1NUUkVBTUlORyAqLwo+ICsgwqAgwqAgwqAgMHgw MCwgwqAgwqAgwqAgwqAgwqAgLyogwqAgwqAgwqB1OCDCoCDCoCDCoG90ZF9iQXNzb2NUZXJtaW5h bDsgTm8gYXNzb2NpYXRpb24gKi8KPiArIMKgIMKgIMKgIDB4MDUsIMKgIMKgIMKgIMKgIMKgIC8q IMKgIMKgIMKgdTggwqAgwqAgwqBvdGRfYlNvdXJjZUlEOyAqLwo+ICsgwqAgwqAgwqAgMHgwMCwg wqAgwqAgwqAgwqAgwqAgLyogwqAgwqAgwqB1OCDCoCDCoCDCoG90ZF9pVGVybWluYWw7ICovCj4g Kwo+ICsgwqAgwqAgwqAgLyogc2VsZWN0b3IgdW5pdCBkZXNjcmlwdG9yICovCj4gKyDCoCDCoCDC oCAweDA4LCDCoCDCoCDCoCDCoCDCoCAvKiDCoCDCoCDCoHU4IMKgIMKgIMKgc3VkX2JMZW5ndGg7 ICovCj4gKyDCoCDCoCDCoCAweDI0LCDCoCDCoCDCoCDCoCDCoCAvKiDCoCDCoCDCoHU4IMKgIMKg IMKgc3VkX2JEZXNjcmlwdG9yVHlwZTsgQ1NfSU5URVJGQUNFICovCj4gKyDCoCDCoCDCoCAweDA0 LCDCoCDCoCDCoCDCoCDCoCAvKiDCoCDCoCDCoHU4IMKgIMKgIMKgc3VkX2JEZXNjcmlwdG9yU3Vi dHlwZTsgVkNfU0VMRUNUT1JfVU5JVCAqLwo+ICsgwqAgwqAgwqAgMHgwNCwgwqAgwqAgwqAgwqAg wqAgLyogwqAgwqAgwqB1OCDCoCDCoCDCoHN1ZF9iVW5pdElEOyAqLwo+ICsgwqAgwqAgwqAgMHgw MiwgwqAgwqAgwqAgwqAgwqAgLyogwqAgwqAgwqB1OCDCoCDCoCDCoHN1ZF9iTnJJblBpbnM7ICov Cj4gKyDCoCDCoCDCoCAweDAxLCDCoCDCoCDCoCDCoCDCoCAvKiDCoCDCoCDCoHU4IMKgIMKgIMKg c3VkX2JhU291cmNlSUQ7ICovCj4gKyDCoCDCoCDCoCAweDAyLAo+ICsgwqAgwqAgwqAgMHgwMCwg wqAgwqAgwqAgwqAgwqAgLyogwqAgwqAgwqB1OCDCoCDCoCDCoHN1ZF9pU2VsZWN0b3I7ICovCj4g Kwo+ICsgwqAgwqAgwqAgLyogcHJvY2Vzc2luZyB1bml0IGRlc2NyaXB0b3IgKi8KPiArIMKgIMKg IMKgIDB4MEIsIMKgIMKgIMKgIMKgIMKgIC8qIMKgIMKgIMKgdTggwqAgwqAgwqBwdWRfYkxlbmd0 aDsgKi8KPiArIMKgIMKgIMKgIDB4MjQsIMKgIMKgIMKgIMKgIMKgIC8qIMKgIMKgIMKgdTggwqAg wqAgwqBwdWRfYkRlc2NyaXB0b3JUeXBlOyBDU19JTlRFUkZBQ0UgKi8KPiArIMKgIMKgIMKgIDB4 MDUsIMKgIMKgIMKgIMKgIMKgIC8qIMKgIMKgIMKgdTggwqAgwqAgwqBwdWRfYkRlc2NyaXB0b3JT dWJ0eXBlOyBWQ19QUk9DRVNTSU5HX1VOSVQgKi8KPiArIMKgIMKgIMKgIDB4MDUsIMKgIMKgIMKg IMKgIMKgIC8qIMKgIMKgIMKgdTggwqAgwqAgwqBwdWRfYlVuaXRJRDsgKi8KPiArIMKgIMKgIMKg IDB4MDQsIMKgIMKgIMKgIMKgIMKgIC8qIMKgIMKgIMKgdTggwqAgwqAgwqBwdWRfYlNvdXJjZUlE OyAqLwo+ICsgwqAgwqAgwqAgMHgwMCwgMHgwMCwgwqAgwqAgLyogwqAgwqAgwqB1MTYgwqAgwqAg cHVkX3dNYXhNdWx0aXBsaWVyOyAqLwo+ICsgwqAgwqAgwqAgMHgwMiwgwqAgwqAgwqAgwqAgwqAg LyogwqAgwqAgwqB1OCDCoCDCoCDCoHB1ZF9iQ29udHJvbFNpemU7ICovCj4gKyDCoCDCoCDCoCAw eDAxLCAweDAwLCDCoCDCoCAvKiDCoCDCoCDCoHUxNiDCoCDCoCBwdWRfYm1Db250cm9sczsgQnJp Z2h0bmVzcyBjb250cm9sIHN1cHBvcnRlZCAqLwo+ICsgwqAgwqAgwqAgMHgwMCwgwqAgwqAgwqAg wqAgwqAgLyogwqAgwqAgwqB1OCDCoCDCoCDCoHB1ZF9pUHJvY2Vzc2luZzsgKi8KPiArCj4gKyDC oCDCoCDCoCAvKiBzdGFuZGFyZCBpbnRlcnJ1cHQgZW5kcG9pbnQgKi8KPiArIMKgIMKgIMKgIDB4 MDcsIMKgIMKgIMKgIMKgIMKgIC8qIMKgIMKgIMKgdTggwqAgwqAgwqBlcF9iTGVuZ2h0OyAqLwo+ ICsgwqAgwqAgwqAgMHgwNSwgwqAgwqAgwqAgwqAgwqAgLyogwqAgwqAgwqB1OCDCoCDCoCDCoGVw X2JEZXNjcmlwdG9yVHlwZTsgRW5kcG9pbnQgKi8KPiArIMKgIMKgIMKgIDB4ODEsIMKgIMKgIMKg IMKgIMKgIC8qIMKgIMKgIMKgdTggwqAgwqAgwqBlcF9iRW5kcG9pbnRBZGRyZXNzOyBJTiBFbmRw b2ludCAxICovCj4gKyDCoCDCoCDCoCAweDAzLCDCoCDCoCDCoCDCoCDCoCAvKiDCoCDCoCDCoHU4 IMKgIMKgIMKgZXBfYm1BdHRyaWJ1dGVzOyBJbnRlcnJ1cHQgKi8KPiArIMKgIMKgIMKgIDB4MDgs IDB4MDAsIMKgIMKgIC8qIMKgIMKgIMKgdTggwqAgwqAgwqBlcF93TWF4UGFja2V0U2l6ZTsgOCBi eXRlcyAqLwo+ICsgwqAgwqAgwqAgMHhGRiwgwqAgwqAgwqAgwqAgwqAgLyogwqAgwqAgwqB1OCDC oCDCoCDCoGVwX2JJbnRlcnZhbDsgMzJtcyAqLwo+ICsKPiArIMKgIMKgIMKgIC8qIGNsYXNzLXNw ZWNpZmljIGludGVycnVwdCBlbmRwb2ludCAqLwo+ICsgwqAgwqAgwqAgMHgwNSwgwqAgwqAgwqAg wqAgwqAgLyogwqAgwqAgwqB1OCDCoCDCoCDCoGVwX2JMZW5naHQ7ICovCj4gKyDCoCDCoCDCoCAw eDI1LCDCoCDCoCDCoCDCoCDCoCAvKiDCoCDCoCDCoHU4IMKgIMKgIMKgZXBfYkRlc2NyaXB0b3JU eXBlOyBDU19FTkRQT0lOVCAqLwo+ICsgwqAgwqAgwqAgMHgwMywgwqAgwqAgwqAgwqAgwqAgLyog wqAgwqAgwqB1OCDCoCDCoCDCoGVwX2JtQXR0cmlidXRlczsgRVBfSU5URVJSVVBUICovCj4gKyDC oCDCoCDCoCAweDA4LCAweDAwLCDCoCDCoCAvKiDCoCDCoCDCoHU4IMKgIMKgIMKgZXBfd01heFBh Y2tldFNpemU7IDggYnl0ZXMgKi8KPiArCj4gKyDCoCDCoCDCoCAvKiBzdGFuZGFyZCB2cyBpbnRl cmZhY2UgZGVzY3JpcHRvciBhbHRlcm5hdGUgMCAqLwo+ICsgwqAgwqAgwqAgMHgwOSwgwqAgwqAg wqAgwqAgwqAgLyogwqAgwqAgwqB1OCDCoCDCoCDCoGJMZW5ndGg7ICovCj4gKyDCoCDCoCDCoCAw eDA0LCDCoCDCoCDCoCDCoCDCoCAvKiDCoCDCoCDCoHU4IMKgIMKgIMKgYkRlc2NyaXB0b3JUeXBl OyBJTlRFUkZBQ0UgKi8KPiArIMKgIMKgIMKgIDB4MDEsIMKgIMKgIMKgIMKgIMKgIC8qIMKgIMKg IMKgdTggwqAgwqAgwqBiSW50ZXJmYWNlTnVtYmVyOyAqLwo+ICsgwqAgwqAgwqAgMHgwMCwgwqAg wqAgwqAgwqAgwqAgLyogwqAgwqAgwqB1OCDCoCDCoCDCoGJBbHRlcm5hdGVTZXR0aW5nOyAqLwo+ ICsgwqAgwqAgwqAgMHgwMSwgwqAgwqAgwqAgwqAgwqAgLyogwqAgwqAgwqB1OCDCoCDCoCDCoGJO dW1FbmRwb2ludHM7ICovCj4gKyDCoCDCoCDCoCAweDBFLCDCoCDCoCDCoCDCoCDCoCAvKiDCoCDC oCDCoHU4IMKgIMKgIMKgYkludGVyZmFjZUNsYXNzOyBDQ19WSURFTyAqLwo+ICsgwqAgwqAgwqAg MHgwMiwgwqAgwqAgwqAgwqAgwqAgLyogwqAgwqAgwqB1OCDCoCDCoCDCoGJJbnRlcmZhY2VTdWJD bGFzczsgU0NfVklERU9fU1RSRUFNSU5HICovCj4gKyDCoCDCoCDCoCAweDAwLCDCoCDCoCDCoCDC oCDCoCAvKiDCoCDCoCDCoHU4IMKgIMKgIMKgYkludGVyZmFjZVByb3RvY29sOyBQQ19QUk9UT0NP TF9VTkRFRklORUQgKi8KPiArIMKgIMKgIMKgIDB4MDAsIMKgIMKgIMKgIMKgIMKgIC8qIMKgIMKg IMKgdTggwqAgwqAgwqBpSW50ZXJmYWNlOyBVbnVzZWQgKi8KPiArCj4gKyDCoCDCoCDCoCAvKiBj bGFzcy1zcGVjaWZpYyB2cyBoZWFkZXIgZGVzY3JpcHRvciBpbnB1dCBhbHRlcm5hdGUgMCAqLwo+ ICsgwqAgwqAgwqAgMHgwRSwgwqAgwqAgwqAgwqAgwqAgLyogwqAgwqAgwqB1OCDCoCDCoCDCoGJM ZW5ndGg7ICovCj4gKyDCoCDCoCDCoCAweDI0LCDCoCDCoCDCoCDCoCDCoCAvKiDCoCDCoCDCoHU4 IMKgIMKgIMKgYkRlc2NyaXB0b3JUeXBlOyBDU19JTlRFUkZBQ0UgKi8KPiArIMKgIMKgIMKgIDB4 MDEsIMKgIMKgIMKgIMKgIMKgIC8qIMKgIMKgIMKgdTggwqAgwqAgwqBiRGVzY3JpcHRvclN1YnR5 cGU7IFZTX0lOUFVUX0hFQURFUiAqLwo+ICsgwqAgwqAgwqAgMHgwMSwgwqAgwqAgwqAgwqAgwqAg LyogwqAgwqAgwqB1OCDCoCDCoCDCoGJOdW1Gb3JtYXRzOyAqLwo+ICsgwqAgwqAgwqAgMHg0Niwg MHgwMCwgwqAgwqAgLyogwqAgwqAgwqB1OCDCoCDCoCDCoHdUb3RhbExlbmd0aDsgKi8KPiArIMKg IMKgIMKgIDB4ODIsIMKgIMKgIMKgIMKgIMKgIC8qIMKgIMKgIMKgdTggwqAgwqAgwqBiRW5kcG9p bnRBZGRyZXNzOyAqLwo+ICsgwqAgwqAgwqAgMHgwMCwgwqAgwqAgwqAgwqAgwqAgLyogwqAgwqAg wqB1OCDCoCDCoCDCoGJtSW5mbzsgKi8KPiArIMKgIMKgIMKgIDB4MDMsIMKgIMKgIMKgIMKgIMKg IC8qIMKgIMKgIMKgdTggwqAgwqAgwqBiVGVybWluYWxMaW5rOyAqLwo+ICsgwqAgwqAgwqAgMHgw MCwgwqAgwqAgwqAgwqAgwqAgLyogwqAgwqAgwqB1OCDCoCDCoCDCoGJTdGlsbENhcHR1cmVNZXRo b2Q7ICovCj4gKyDCoCDCoCDCoCAweDAwLCDCoCDCoCDCoCDCoCDCoCAvKiDCoCDCoCDCoHU4IMKg IMKgIMKgYlRyaWdnZXJTdXBwb3J0OyAqLwo+ICsgwqAgwqAgwqAgMHgwMCwgwqAgwqAgwqAgwqAg wqAgLyogwqAgwqAgwqB1OCDCoCDCoCDCoGJUcmlnZ2VyVXNhZ2U7ICovCj4gKyDCoCDCoCDCoCAw eDAxLCDCoCDCoCDCoCDCoCDCoCAvKiDCoCDCoCDCoHU4IMKgIMKgIMKgYkNvbnRyb2xTaXplOyAq Lwo+ICsgwqAgwqAgwqAgMHgwMCwgwqAgwqAgwqAgwqAgwqAgLyogwqAgwqAgwqB1OCDCoCDCoCDC oGJtYUNvbnRyb2xzOyAqLwo+ICsKPiArIMKgIMKgIMKgIC8qIGNsYXNzLXNwZWNpZmljIHZzIGZv cm1hdCBkZXNjcmlwdG9yIGFsdGVybmF0ZSAwICovCj4gKyDCoCDCoCDCoCAweDBCLCDCoCDCoCDC oCDCoCDCoCAvKiDCoCDCoCDCoHU4IMKgIMKgIMKgYkxlbmd0aDsgKi8KPiArIMKgIMKgIMKgIDB4 MjQsIMKgIMKgIMKgIMKgIMKgIC8qIMKgIMKgIMKgdTggwqAgwqAgwqBiRGVzY3JpcHRvclR5cGU7 IENTX0lOVEVSRkFDRSAqLwo+ICsgwqAgwqAgwqAgMHgwNiwgwqAgwqAgwqAgwqAgwqAgLyogwqAg wqAgwqB1OCDCoCDCoCDCoGJEZXNjcmlwdG9yU3VidHlwZTsgVlNfRk9STUFUX01KUEVHICovCj4g KyDCoCDCoCDCoCAweDAxLCDCoCDCoCDCoCDCoCDCoCAvKiDCoCDCoCDCoHU4IMKgIMKgIMKgYkZv cm1hdEluZGV4OyAqLwo+ICsgwqAgwqAgwqAgMHgwMSwgwqAgwqAgwqAgwqAgwqAgLyogwqAgwqAg wqB1OCDCoCDCoCDCoGJOdW1GcmFtZURlc2NyaXB0b3JzOyAqLwo+ICsgwqAgwqAgwqAgMHgwMSwg wqAgwqAgwqAgwqAgwqAgLyogwqAgwqAgwqB1OCDCoCDCoCDCoGJtRmxhZ3M7ICovCj4gKyDCoCDC oCDCoCAweDAxLCDCoCDCoCDCoCDCoCDCoCAvKiDCoCDCoCDCoHU4IMKgIMKgIMKgYkRlZmF1bHRG cmFtZUluZGV4OyAqLwo+ICsgwqAgwqAgwqAgMHgwMCwgwqAgwqAgwqAgwqAgwqAgLyogwqAgwqAg wqB1OCDCoCDCoCDCoGJBc3BlY3RSYXRpb1g7ICovCj4gKyDCoCDCoCDCoCAweDAwLCDCoCDCoCDC oCDCoCDCoCAvKiDCoCDCoCDCoHU4IMKgIMKgIMKgYkFzcGVjdFJhdGlvWTsgKi8KPiArIMKgIMKg IMKgIDB4MDIsIMKgIMKgIMKgIMKgIMKgIC8qIMKgIMKgIMKgdTggwqAgwqAgwqBibUludGVybGFj ZUZsYWdzOyAqLwo+ICsgwqAgwqAgwqAgMHgwMCwgwqAgwqAgwqAgwqAgwqAgLyogwqAgwqAgwqB1 OCDCoCDCoCDCoGJDb3B5UHJvdGVjdDsgKi8KPiArCj4gKyDCoCDCoCDCoCAvKiBjbGFzcy1zcGVj aWZpYyB2cyBmcmFtZSBkZXNjcmlwdG9yIGFsdGVybmF0ZSAwICovCj4gKyDCoCDCoCDCoCAweDI2 LCDCoCDCoCDCoCDCoCDCoCAvKiDCoCDCoCDCoHU4IMKgIMKgIMKgYkxlbmd0aDsgKi8KPiArIMKg IMKgIMKgIDB4MjQsIMKgIMKgIMKgIMKgIMKgIC8qIMKgIMKgIMKgdTggwqAgwqAgwqBiRGVzY3Jp cHRvclR5cGU7IENTX0lOVEVSRkFDRSAqLwo+ICsgwqAgwqAgwqAgMHgwNywgwqAgwqAgwqAgwqAg wqAgLyogwqAgwqAgwqB1OCDCoCDCoCDCoGJEZXNjcmlwdG9yU3VidHlwZTsgVlNfRlJBTUVfTUpQ RUcgKi8KPiArIMKgIMKgIMKgIDB4MDEsIMKgIMKgIMKgIMKgIMKgIC8qIMKgIMKgIMKgdTggwqAg wqAgwqBiRnJhbWVJbmRleDsgKi8KPiArIMKgIMKgIMKgIDB4MDEsIMKgIMKgIMKgIMKgIMKgIC8q IMKgIMKgIMKgdTggwqAgwqAgwqBibUNhcGFiaWxpdGllczsgKi8KPiArIMKgIMKgIMKgIDB4NDAs IDB4MDEsIMKgIMKgIC8qIMKgIMKgIMKgdTggwqAgwqAgwqB3V2lkdGg7IDMyMCAqLwo+ICsgwqAg wqAgwqAgMHhGMCwgMHgwMCwgwqAgwqAgLyogwqAgwqAgwqB1OCDCoCDCoCDCoHdIZWlnaHQ7IDI0 MCAqLwo+ICsgwqAgwqAgwqAgMHgwMCwgMHhFQywKPiArIMKgIMKgIMKgIDB4MEQsIDB4MDAsIMKg IMKgIC8qIMKgIMKgIMKgdTMyIMKgIMKgIGR3TWluQml0UmF0ZTsgKi8KPiArIMKgIMKgIMKgIDB4 MDAsIDB4RUMsCj4gKyDCoCDCoCDCoCAweDBELCAweDAwLCDCoCDCoCAvKiDCoCDCoCDCoHUzMiDC oCDCoCBkd01heEJpdFJhdGU7ICovCj4gKyDCoCDCoCDCoCAweDcyLCAweENFLAo+ICsgwqAgwqAg wqAgMHgwMCwgMHgwMCwgwqAgwqAgLyogwqAgwqAgwqB1MzIgwqAgwqAgZHdNYXhWaWRlb0ZyYW1l QnVmU2l6ZTsgKi8KPiArIMKgIMKgIMKgIDB4MkEsIDB4MkMsCj4gKyDCoCDCoCDCoCAweDBBLCAw eDAwLCDCoCDCoCAvKiDCoCDCoCDCoHUzMiDCoCDCoCBkd0RlZmF1bHRGcmFtZUludGVydmFsOyAq Lwo+ICsgwqAgwqAgwqAgMHgwMCwgwqAgwqAgwqAgwqAgwqAgLyogwqAgwqAgwqB1OCDCoCDCoCDC oGJGcmFtZUludGVydmFsVHlwZTsgwqAgwqAgKi8KPiArIMKgIMKgIMKgIDB4MkEsIDB4MkMsCj4g KyDCoCDCoCDCoCAweDBBLCAweDAwLCDCoCDCoCAvKiDCoCDCoCDCoHUzMiDCoCDCoCBkd01pbkZy YW1lSW50ZXJ2YWw7ICovCj4gKyDCoCDCoCDCoCAweDJBLCAweDJDLAo+ICsgwqAgwqAgwqAgMHgw QSwgMHgwMCwgwqAgwqAgLyogwqAgwqAgwqB1MzIgwqAgwqAgZHdNYXhGcmFtZUludGVydmFsOyAq Lwo+ICsgwqAgwqAgwqAgMHgwMCwgMHgwMCwKPiArIMKgIMKgIMKgIDB4MDAsIDB4MDAsIMKgIMKg IC8qIMKgIMKgIMKgdTMyIMKgIMKgIGR3RnJhbWVJbnRlcnZhbFN0ZXA7ICovCj4gKwo+ICsgwqAg wqAgwqAgLyogc3RhbmRhcmQgdnMgaXNvY2hyb25vdXMgdmlkZW8gZGF0YSBlbmRwb2ludCBkZXNj cmlwdG9yICovCj4gKyDCoCDCoCDCoCAweDA3LCDCoCDCoCDCoCDCoCDCoCAvKiDCoCDCoCDCoHU4 IMKgIMKgIMKgYkxlbmd0aDsgKi8KPiArIMKgIMKgIMKgIDB4MDUsIMKgIMKgIMKgIMKgIMKgIC8q IMKgIMKgIMKgdTggwqAgwqAgwqBiRGVzY3JpcHRvclR5cGU7ICovCj4gKyDCoCDCoCDCoCAweDgy LCDCoCDCoCDCoCDCoCDCoCAvKiDCoCDCoCDCoHU4IMKgIMKgIMKgYkVuZHBvaW50QWRkcmVzczsg SU4gZW5kcG9pbnQgMiAqLwo+ICsgwqAgwqAgwqAgMHgwMiwgwqAgwqAgwqAgwqAgwqAgLyogwqAg wqAgwqB1OCDCoCDCoCDCoGJtQXR0cmlidXRlczsgSXNvY2hyb25vdXMgdHJhbnNmZXIsIGFzeW5j aHJvbm91cyBzeW5jICovCj4gKyDCoCDCoCDCoCAweDQwLCAweDAwLCDCoCDCoCAvKiDCoCDCoCDC oHUxNiDCoCDCoCB3TWF4UGFja2V0U2l6ZTsgNTEwIGJ5dGVzICovCj4gKyDCoCDCoCDCoCAweDAw IMKgIMKgIMKgIMKgIMKgIMKgLyogwqAgwqAgwqB1OCDCoCDCoCDCoGJJbnRlcnZhbDsgKi8KPiAr fTsKPiArCj4gK3N0YXRpYyB2b2lkIGdldF9mcmFtZV9yZWFkKHZvaWQpCj4gK3sKPiArIMKgIMKg IMKgIERQUklOVEYoIkdldHRpbmcgZnJhbWUuXG4iKTsKPiArIMKgIMKgIMKgIGZyYW1lID0gZnJh bWVfc3RhcnQ7Cj4gKyDCoCDCoCDCoCBmcmFtZV9sZW5ndGggPSByZWFkKHY0bDJfZmQsIGZyYW1l LCBmcmFtZV9tYXhfbGVuZ3RoKTsKPiArCj4gKyDCoCDCoCDCoCBpZihmcmFtZV9sZW5ndGggPT0g LTEpCj4gKyDCoCDCoCDCoCB7CgpUaGVyZSBtdXN0IGJlIGEgc3BhY2UgYmV0d2VlbiAnaWYnIGFu ZCAnKCcgYW5kIHRoZSBicmFjZXMgbXVzdCBiZSBvbgp0aGUgc2FtZSBsaW5lIGFzICdpZicgZXRj LiBQbGVhc2UgcmVhZCBDT0RJTkdfU1RZTEUgZG9jdW1lbnQuCgo+ICsgwqAgwqAgwqAgwqAgwqAg wqAgwqAgRFBSSU5URigiRXJyb3Igd2hpbGUgcmVhZGluZyBmcmFtZS5cbiIpOwo+ICsgwqAgwqAg wqAgwqAgwqAgwqAgwqAgZnJhbWVfbGVuZ3RoID0gMDsKPiArIMKgIMKgIMKgIH0KPiArIMKgIMKg IMKgIGVsc2UKPiArIMKgIMKgIMKgIHsKCn0gZWxzZSB7Cgo+ICsgwqAgwqAgwqAgwqAgwqAgwqAg wqAgZnJhbWVfaWQgPSBmcmFtZV9pZCBeIDE7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmaXJz dF9idWxrX3BhY2tldCA9IDE7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmcmFtZV9yZW1haW5p bmdfYnl0ZXMgPSBmcmFtZV9sZW5ndGg7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBEUFJJTlRG KCJHb3QgYSBmcmFtZSBvZiAlZCBieXRlcy5cbiIsIGZyYW1lX2xlbmd0aCk7Cj4gKyDCoCDCoCDC oCB9Cj4gKwo+ICsgwqAgwqAgwqAgcmV0dXJuOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCB1c2Jf dXZjX2hhbmRsZV9yZXNldChVU0JEZXZpY2UgKmRldikKPiArewo+ICsgwqAgwqAgwqAgRFBSSU5U RigiUmVzZXQgY2FsbGVkXG4iKTsKPiArfQo+ICsKPiArc3RhdGljIGludCB1c2JfdXZjX2hhbmRs ZV9jb250cm9sKFVTQkRldmljZSAqZGV2LCBpbnQgcmVxdWVzdCwgaW50IHZhbHVlLAo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaW50IGluZGV4LCBpbnQgbGVuZ3Ro LCB1aW50OF90ICpkYXRhKQo+ICt7Cj4gKyDCoCDCoCDCoCBpbnQgcmV0ID0gMDsKPiArIMKgIMKg IMKgIFVTQlVWQ1N0YXRlICpzID0gKFVTQlVWQ1N0YXRlICopZGV2Owo+ICsKPiArIMKgIMKgIMKg IERQUklOVEYoIkNvbnRyb2wgY2FsbGVkXG4iKTsKPiArIMKgIMKgIMKgIC8vIMKgIMKgIMKgRFBS SU5URigiUmVxdWVzdDogMHglMDhYXG4iLCByZXF1ZXN0KTsKPiArIMKgIMKgIMKgIC8vIMKgIMKg IMKgRFBSSU5URigiVmFsdWU6IDB4JTA4WFxuIiwgdmFsdWUpOwo+ICsgwqAgwqAgwqAgLy8gwqAg wqAgwqBEUFJJTlRGKCJJbmRleDogMHglMDhYXG4iLCBpbmRleCk7Cj4gKyDCoCDCoCDCoCAvLyDC oCDCoCDCoERQUklOVEYoIkxlbmd0aDogMHglMDhYXG4iLCBsZW5ndGgpOwoKQXJlIHRoZXNlIG5l ZWRlZD8gSWYgdGhleSBhcmUgb25seSB1c2VkIGluIHNwZWNpZmljIGRlYnVnZ2luZywgcGxlYXNl CmFkZCBhIHNlcGFyYXRlIERQUklOVEZfeHl6IGZ1bmN0aW9uIHdoaWNoIGNhbiBiZSBlbmFibGVk IHdpdGgKREVCVUdfeHl6LgoKPiArCj4gKyDCoCDCoCDCoCBzd2l0Y2gocmVxdWVzdCkKPiArIMKg IMKgIMKgIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNhc2UgRGV2aWNlUmVxdWVzdCB8IFVT Ql9SRVFfR0VUX1NUQVRVUzoKCkkgdGhpbmsgdGhlIGZvcm1hdHRpbmcgZm9yICdjYXNlJyBpcyBh bHNvIG5vdCBpbiBsaW5lLgoKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIERQ UklOVEYoIlVTQiBSZXF1ZXN0OiBHZXQgU3RhdHVzXG4iKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIGRhdGFbMF0gPSAoMSA8PCBVU0JfREVWSUNFX1NFTEZfUE9XRVJFRCkg fAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAoZGV2LT5yZW1vdGVfd2FrZXVwIDw8IFVTQl9ERVZJQ0Vf UkVNT1RFX1dBS0VVUCk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkYXRh WzFdID0gMHgwMDsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldCA9IDI7 Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBicmVhazsKPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIGNhc2UgRGV2aWNlT3V0UmVxdWVzdCB8IFVTQl9SRVFfQ0xFQVJfRkVBVFVS RToKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIERQUklOVEYoIlVTQiBSZXF1 ZXN0OiBDbGVhciBmZWF0dXJlXG4iKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIGlmICh2YWx1ZSA9PSBVU0JfREVWSUNFX1JFTU9URV9XQUtFVVApIHsKPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIERQUklOVEYoIlVTQiBSZXF1ZXN0 OiBVbnNldCByZW1vdGUgd2FrZXVwXG4iKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIGRldi0+cmVtb3RlX3dha2V1cCA9IDA7Cj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9IGVsc2Ugewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZ290byBmYWlsOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgfQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0 ID0gMDsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGJyZWFrOwo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgY2FzZSBEZXZpY2VPdXRSZXF1ZXN0IHwgVVNCX1JFUV9TRVRfRkVB VFVSRToKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIERQUklOVEYoIlVTQiBS ZXF1ZXN0OiBTZXQgZmVhdHVyZVxuIik7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCBpZiAodmFsdWUgPT0gVVNCX0RFVklDRV9SRU1PVEVfV0FLRVVQKSB7Cj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBEUFJJTlRGKCJVU0IgUmVxdWVz dDogU2V0IHJlbW90ZSB3YWtldXBcbiIpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgZGV2LT5yZW1vdGVfd2FrZXVwID0gMTsKPiArIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0gZWxzZSB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBnb3RvIGZhaWw7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCB9Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXQg PSAwOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYnJlYWs7Cj4gKyDCoCDC oCDCoCDCoCDCoCDCoCDCoCBjYXNlIERldmljZU91dFJlcXVlc3QgfCBVU0JfUkVRX1NFVF9BRERS RVNTOgo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgRFBSSU5URigiVVNCIFJl cXVlc3Q6IFNldCBhZGRyZXNzIHRvIDB4JTA4WFxuIiwgdmFsdWUpOwo+ICsgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgZGV2LT5hZGRyID0gdmFsdWU7Cj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCByZXQgPSAwOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgYnJlYWs7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjYXNlIERldmljZVJlcXVl c3QgfCBVU0JfUkVRX0dFVF9ERVNDUklQVE9SOgo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgRFBSSU5URigiVVNCIFJlcXVlc3Q6IEdldCBkZXNjcmlwdG9yXG4iKTsKPiArIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHN3aXRjaCh2YWx1ZSA+PiA4KSB7Cj4gKyDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjYXNlIFVTQl9EVF9E RVZJQ0U6Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCBEUFJJTlRGKCJVU0IgUmVxdWVzdDogR2V0IGRldmljZSBkZXNjcmlwdG9yXG4i KTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIG1lbWNweShkYXRhLCBxZW11X3V2Y19kZXZfZGVzY3JpcHRvciwKPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgc2l6ZW9mKHFlbXVfdXZjX2Rldl9kZXNjcmlwdG9yKSk7Cj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXQgPSBzaXpl b2YocWVtdV91dmNfZGV2X2Rlc2NyaXB0b3IpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYnJlYWs7Cj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjYXNlIFVTQl9EVF9DT05GSUc6Cj4gKyDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBE UFJJTlRGKCJVU0IgUmVxdWVzdDogR2V0IGNvbmZpZ3VyYXRpb24gZGVzY3JpcHRvclxuIik7Cj4g KyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCBtZW1jcHkoZGF0YSwgcWVtdV91dmNfY29uZmlnX2Rlc2NyaXB0b3IsCj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoHNpemVvZihxZW11X3V2Y19jb25maWdfZGVzY3JpcHRvcikpOwo+ICsgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0ID0gc2l6 ZW9mKHFlbXVfdXZjX2NvbmZpZ19kZXNjcmlwdG9yKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGJyZWFrOwo+ICsgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY2FzZSBVU0JfRFRfU1RSSU5HOgo+ ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgRFBSSU5URigiVVNCIFJlcXVlc3Q6IEdldCBkZXZpY2Ugc3RyaW5nc1xuIik7Cj4gKyDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzd2l0 Y2godmFsdWUgJiAweGZmKSB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjYXNlIDA6Cj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCBEUFJJTlRGKCJVU0IgUmVxdWVzdDogR2V0IGxhbmd1YWdlIElEc1xuIik7 Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAvKiBsYW5ndWFnZSBpZHMgKi8KPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIGRhdGFbMF0gPSA0Owo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgZGF0YVsxXSA9IDM7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkYXRhWzJdID0gMHgw OTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRhdGFbM10gPSAweDA0Owo+ICsgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgcmV0ID0gNDsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGJy ZWFrOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgY2FzZSAxOgo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg LyogdmVuZG9yIGRlc2NyaXB0aW9uICovCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBEUFJJ TlRGKCJVU0IgUmVxdWVzdDogR2V0IHZlbmRvciBzdHJpbmdcbiIpOwo+ICsgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgcmV0ID0gc2V0X3VzYl9zdHJpbmcoZGF0YSwgIlFFTVUgIiBRRU1VX1ZFUlNJ T04pOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYnJlYWs7Cj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBj YXNlIDI6Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAvKiBwcm9kdWN0IGRlc2NyaXB0aW9u ICovCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBEUFJJTlRGKCJVU0IgUmVxdWVzdDogR2V0 IHByb2R1Y3Qgc3RyaW5nXG4iKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldCA9IHNl dF91c2Jfc3RyaW5nKGRhdGEsICJRRU1VIFVTQiBWSURFTyBDTEFTUyAyIik7Cj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCBicmVhazsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNhc2UgMzoKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIC8qIHNlcmlhbCBudW1iZXIgKi8KPiArIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIERQUklOVEYoIlVTQiBSZXF1ZXN0OiBHZXQgc2VyaWFsIG51bWJlciBzdHJpbmdc biIpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0ID0gc2V0X3VzYl9zdHJpbmcoZGF0 YSwgIjEiKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGJyZWFrOwo+ICsgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgZGVmYXVsdDoKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGdvdG8gZmFpbDsKPiArIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0K PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIGJyZWFrOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgZGVmYXVsdDoKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIGdvdG8gZmFpbDsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIH0KPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGJyZWFrOwo+ICsg wqAgwqAgwqAgwqAgwqAgwqAgwqAgY2FzZSBEZXZpY2VSZXF1ZXN0IHwgVVNCX1JFUV9HRVRfQ09O RklHVVJBVElPTjoKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIERQUklOVEYo IlVTQiBSZXF1ZXN0OiBHZXQgY29uZmlndXJhdGlvblxuIik7Cj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCBkYXRhWzBdID0gMTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIHJldCA9IDE7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBi cmVhazsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNhc2UgRGV2aWNlT3V0UmVxdWVzdCB8IFVT Ql9SRVFfU0VUX0NPTkZJR1VSQVRJT046Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCBEUFJJTlRGKCJVU0IgUmVxdWVzdDogU2V0IGNvbmZpZ3VyYXRpb25cbiIpOwo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0ID0gMDsKPiArIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIGJyZWFrOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY2FzZSBE ZXZpY2VSZXF1ZXN0IHwgVVNCX1JFUV9HRVRfSU5URVJGQUNFOgo+ICsgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgRFBSSU5URigiVVNCIFJlcXVlc3Q6IEdldCBpbnRlcmZhY2VcbiIp Owo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGF0YVswXSA9IDA7Cj4gKyDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXQgPSAxOwo+ICsgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgYnJlYWs7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjYXNl IERldmljZU91dFJlcXVlc3QgfCBVU0JfUkVRX1NFVF9JTlRFUkZBQ0U6Cj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBEUFJJTlRGKCJVU0IgUmVxdWVzdDogU2V0IGludGVyZmFj ZVxuIik7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXQgPSAwOwo+ICsg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYnJlYWs7Cj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCBjYXNlIEVuZHBvaW50T3V0UmVxdWVzdCB8IFVTQl9SRVFfQ0xFQVJfRkVBVFVSRToK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIERQUklOVEYoIlVTQiBSZXF1ZXN0 OiBDbGVhciBlbmRwb2ludFxuIik7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCByZXQgPSAwOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYnJlYWs7Cj4g KyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjYXNlIEludGVyZmFjZU91dFJlcXVlc3QgfCBVU0JfUkVR X1NFVF9JTlRFUkZBQ0U6Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBEUFJJ TlRGKCJVU0IgUmVxdWVzdDogU2V0IGludGVyZmFjZVxuIik7Cj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCByZXQgPSAwOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgYnJlYWs7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAvKiBDbGFz cyBzcGVjaWZpYyByZXF1ZXN0cy4gwqAqLwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY2FzZSBV VkNHZXRWaWRlb0NvbnRyb2wgfCBVU0JfVVZDX0dFVF9DVVI6Cj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCByZXQgPSAwOwo+ICsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIGlmKChpbmRleCYweEZGKSA9PSAweDAxICYmICgodmFsdWUmMHhGRjAwKSA9PSAw eDAxMDAgfHwgKHZhbHVlJjB4RkYwMCkgPT0gMHgwMjAwKSkKClBsZWFzZSBhZGQgI2RlZmluZXMg b3IgZW51bXMgZm9yIHRoZSBtYWdpYyB2YWx1ZXMuIFRoZXJlIHNob3VsZCBiZQpzcGFjZXMgYXJv dW5kICcmJy4KCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB7Cj4gKyDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBEUFJJTlRGKCJVU0IgUmVx dWVzdDogR2V0IHZpZGVvIGNvbnRyb2wgY3VycmVudCBzZXR0aW5nIGF0dHJpYnV0ZSBmb3IgaW50 ZXJmYWNlICVkXG4iLCBpbmRleCYweEZGKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIGlmKCh2YWx1ZSYweEZGMDApID09IDB4MDEwMCkKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIERQUklO VEYoIlx0VlNfUFJPQkVfQ09OVFJPTFxuIik7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCBlbHNlCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBEUFJJTlRGKCJcdFZTX0NPTU1JVF9DT05UUk9M XG4iKTsKPiArCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCBpZihsZW5ndGggIT0gMjYpCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCBEUFJJTlRGKCJVU0IgUmVxdWVzdDogUmVxdWVzdGVkICVkIGJ5dGVz LCBleHBlY3RlZCAyNiBieXRlc1xuIiwgbGVuZ3RoKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGdvdG8gZmFpbDsKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0KPiArCj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkYXRhWzBdID0gMDsgLy8gYm1I aW50Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkYXRh WzFdID0gMDsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IGRhdGFbMl0gPSAxOyAvLyBiRm9ybWF0SW5kZXgKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRhdGFbM10gPSAxOyAvLyBiRnJhbWVJbmRleAo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGF0YVs0XSA9IDB4MkE7 IC8vIGR3RnJhbWVJbnRlcnZhbAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgZGF0YVs1XSA9IDB4MkM7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCBkYXRhWzZdID0gMHgwQTsKPiArIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRhdGFbN10gPSAweDAwOwo+ICsgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGF0YVs4XSA9IDA7IC8vIHdLZXlG cmFtZVJhdGUKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IGRhdGFbOV0gPSAwOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgZGF0YVsxMF0gPSAwOyAvLyB3UEZyYW1lUmF0ZQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGF0YVsxMV0gPSAwOwo+ICsgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGF0YVsxMl0gPSAwOyAvLyB3Q29tcFF1 YWxpdHkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRh dGFbMTNdID0gMDsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIGRhdGFbMTRdID0gMTsgLy8gd0NvbXBXaW5kb3dTaXplCj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkYXRhWzE1XSA9IDA7Cj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkYXRhWzE2XSA9IDB4MjA7IC8vIHdE ZWxheQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGF0 YVsxN10gPSAwOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgZGF0YVsxOF0gPSAweDcyOyAvLyBkd01heFZpZGVvRnJhbWVTaXplCj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkYXRhWzE5XSA9IDB4Q0U7Cj4gKyDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkYXRhWzIwXSA9IDB4 MDA7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkYXRh WzIxXSA9IDB4MDA7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCBkYXRhWzIyXSA9IDB4NzI7IC8vIGR3TWF4UGF5bG9hZFRyYW5zZmVyU2l6ZQo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGF0YVsyM10gPSAweENF Owo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGF0YVsy NF0gPSAweDAwOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgZGF0YVsyNV0gPSAweDAwOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgcmV0ID0gMjY7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCB9Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBlbHNlIGlmKChpbmRleCYw eEZGMDApID09IDB4MDQwMCAmJiAodmFsdWUmMHhGRjAwKSA9PSAweDAxMDApIC8vIFNldHRpbmcg aW5wdXQKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHsKPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIERQUklOVEYoIlVTQiBSZXF1ZXN0 OiBBc2tpbmcgZm9yIGN1cnJlbnQgaW5wdXRcbiIpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYobGVuZ3RoICE9IDEpCj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBEUFJJTlRGKCJVU0IgUmVxdWVz dDogUmVxdWVzdGVkICVkIGJ5dGVzLCBleHBlY3RlZCAxIGJ5dGVcbiIsIGxlbmd0aCk7Cj4gKyDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBn b3RvIGZhaWw7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCB9Cj4gKwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg ZGF0YVswXSA9IHMtPmN1cnJlbnRfaW5wdXQ7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCByZXQgPSAxOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgfQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZWxzZSBpZigo aW5kZXgmMHhGRjAwKSA9PSAweDA1MDAgJiYgKHZhbHVlJjB4RkYwMCkgPT0gMHgwMjAwKSAvLyBQ VV9CUklHSFRORVNTX0NPTlRST0wgb2YgUFJPQ0VTU0lOR19VTklUCj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCBEUFJJTlRGKCJVU0IgUmVzcXVlc3Q6IEFza2luZyBmb3IgY3VycmVudCBi cmlnaHRuZXNzXG4iKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIGlmKGxlbmd0aCAhPSAyKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgRFBSSU5URigiVVNCIFJlcXVlc3Q6IFJlcXVlc3RlZCAlZCBi eXRlcywgZXhwZWN0ZWQgMiBieXRlc1xuIiwgbGVuZ3RoKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGdvdG8gZmFpbDsKPiArIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0KPiArCj4gKyDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkYXRhWzBdID0gMTsKPiAr IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRhdGFbMV0gPSAw Owo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0ID0g MjsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0KPiArIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIGVsc2UKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIGdvdG8gZmFpbDsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIGJyZWFrOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY2FzZSBVVkNHZXRWaWRl b0NvbnRyb2wgfCBVU0JfVVZDX0dFVF9NSU46Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCByZXQgPSAwOwo+ICsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IGlmKChpbmRleCYweEZGKSA9PSAweDAxICYmICgodmFsdWUmMHhGRjAwKSA9PSAweDAxMDAgfHwg KHZhbHVlJjB4RkYwMCkgPT0gMHgwMjAwKSkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IERQUklOVEYoIlVTQiBSZXF1ZXN0OiBHZXQgdmlkZW8gY29udHJvbCBtaW5pbXVtIHNldHRpbmcg YXR0cmlidXRlIGZvciBpbnRlcmZhY2UgJWRcbiIsIGluZGV4JjB4RkYpOwo+ICsKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmKGxlbmd0aCAhPSAyNikK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHsKPiArIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIERQ UklOVEYoIlVTQiBSZXF1ZXN0OiBSZXF1ZXN0ZWQgJWQgYnl0ZXMsIGV4cGVjdGVkIDI2IGJ5dGVz XG4iLCBsZW5ndGgpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgZ290byBmYWlsOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgfQo+ICsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIGRhdGFbMF0gPSAwOyAvLyBibUhpbnQKPiArIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRhdGFbMV0gPSAwOwo+ICsgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGF0YVsyXSA9IDE7IC8vIGJG b3JtYXRJbmRleAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgZGF0YVszXSA9IDE7IC8vIGJGcmFtZUluZGV4Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkYXRhWzRdID0gMHgyQTsgLy8gZHdGcmFtZUludGVydmFs Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkYXRhWzVd ID0gMHgyQzsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IGRhdGFbNl0gPSAweDBBOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgZGF0YVs3XSA9IDB4MDA7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCBkYXRhWzhdID0gMDsgLy8gd0tleUZyYW1lUmF0ZQo+ICsgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGF0YVs5XSA9IDA7Cj4gKyDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkYXRhWzEwXSA9IDA7 IC8vIHdQRnJhbWVSYXRlCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCBkYXRhWzExXSA9IDA7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCBkYXRhWzEyXSA9IDA7IC8vIHdDb21wUXVhbGl0eQo+ICsgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGF0YVsxM10gPSAwOwo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGF0YVsxNF0gPSAxOyAv LyB3Q29tcFdpbmRvd1NpemUKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIGRhdGFbMTVdID0gMDsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIGRhdGFbMTZdID0gMHgyMDsgLy8gd0RlbGF5Cj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkYXRhWzE3XSA9IDA7Cj4gKyDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkYXRhWzE4XSA9IDB4NzI7 IC8vIGR3TWF4VmlkZW9GcmFtZVNpemUKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIGRhdGFbMTldID0gMHhDRTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRhdGFbMjBdID0gMHgwMDsKPiArIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRhdGFbMjFdID0gMHgwMDsKPiArIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRhdGFbMjJdID0gMHg3 MjsgLy8gZHdNYXhQYXlsb2FkVHJhbnNmZXJTaXplCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkYXRhWzIzXSA9IDB4Q0U7Cj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkYXRhWzI0XSA9IDB4MDA7Cj4gKyDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkYXRhWzI1XSA9IDB4MDA7 Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXQgPSAy NjsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0KPiArIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIGVsc2UgaWYoKGluZGV4JjB4RkYwMCkgPT0gMHgwNDAwICYm ICh2YWx1ZSYweEZGMDApID09IDB4MDEwMCkgLy8gU2V0dGluZyBpbnB1dAo+ICsgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgRFBSSU5URigiVVNCIFJlcXVlc3Q6IEFza2luZyBmb3IgbWluaW11 bSBpbnB1dFxuIik7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCBpZihsZW5ndGggIT0gMSkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIERQUklOVEYoIlVTQiBSZXF1ZXN0OiBSZXF1ZXN0ZWQgJWQgYnl0 ZXMsIGV4cGVjdGVkIDEgYnl0ZVxuIiwgbGVuZ3RoKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGdvdG8gZmFpbDsKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0KPiArCj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkYXRhWzBdID0gMDsKPiArIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldCA9IDE7Cj4gKyDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCBlbHNlIGlmKChpbmRleCYweEZGMDApID09IDB4MDUwMCAmJiAodmFsdWUm MHhGRjAwKSA9PSAweDAyMDApIC8vIFBVX0JSSUdIVE5FU1NfQ09OVFJPTCBvZiBQUk9DRVNTSU5H X1VOSVQKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHsKPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIERQUklOVEYoIlVTQiBSZXNxdWVz dDogQXNraW5nIGZvciBtaW5pbXVtIGJyaWdodG5lc3NcbiIpOwo+ICsgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYobGVuZ3RoICE9IDIpCj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB7Cj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBEUFJJTlRGKCJVU0Ig UmVxdWVzdDogUmVxdWVzdGVkICVkIGJ5dGVzLCBleHBlY3RlZCAyIGJ5dGVzXG4iLCBsZW5ndGgp Owo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgZ290byBmYWlsOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgfQo+ICsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIGRhdGFbMF0gPSAxOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgZGF0YVsxXSA9IDA7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCByZXQgPSAyOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgfQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZWxzZQo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZ290byBmYWlsOwo+ICsg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYnJlYWs7Cj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCBjYXNlIFVWQ0dldFZpZGVvQ29udHJvbCB8IFVTQl9VVkNfR0VUX01BWDoKPiArIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmKChpbmRleCYweEZGKSA9PSAweDAxICYm ICgodmFsdWUmMHhGRjAwKSA9PSAweDAxMDAgfHwgKHZhbHVlJjB4RkYwMCkgPT0gMHgwMjAwKSkK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHsKPiArIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIERQUklOVEYoIlVTQiBSZXF1ZXN0OiBHZXQg dmlkZW8gY29udHJvbCBtYXhpbXVtIHNldHRpbmcgYXR0cmlidXRlIGZvciBpbnRlcmZhY2UgJWRc biIsIGluZGV4JjB4RkYpOwo+ICsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIGlmKGxlbmd0aCAhPSAyNikKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIERQUklOVEYoIlVTQiBSZXF1ZXN0OiBSZXF1ZXN0 ZWQgJWQgYnl0ZXMsIGV4cGVjdGVkIDI2IGJ5dGVzXG4iLCBsZW5ndGgpOwo+ICsgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZ290byBmYWls Owo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfQo+ICsK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRhdGFbMF0g PSAwOyAvLyBibUhpbnQKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIGRhdGFbMV0gPSAwOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgZGF0YVsyXSA9IDE7IC8vIGJGb3JtYXRJbmRleAo+ICsgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGF0YVszXSA9IDE7IC8vIGJGcmFtZUlu ZGV4Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkYXRh WzRdID0gMHgyQTsgLy8gZHdGcmFtZUludGVydmFsCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkYXRhWzVdID0gMHgyQzsKPiArIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRhdGFbNl0gPSAweDBBOwo+ICsgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGF0YVs3XSA9IDB4MDA7Cj4g KyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkYXRhWzhdID0g MDsgLy8gd0tleUZyYW1lUmF0ZQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgZGF0YVs5XSA9IDA7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCBkYXRhWzEwXSA9IDA7IC8vIHdQRnJhbWVSYXRlCj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkYXRhWzExXSA9IDA7Cj4gKyDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkYXRhWzEyXSA9IDA7 IC8vIHdDb21wUXVhbGl0eQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgZGF0YVsxM10gPSAwOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgZGF0YVsxNF0gPSAxOyAvLyB3Q29tcFdpbmRvd1NpemUKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRhdGFbMTVdID0gMDsKPiAr IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRhdGFbMTZdID0g MHgyMDsgLy8gd0RlbGF5Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCBkYXRhWzE3XSA9IDA7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCBkYXRhWzE4XSA9IDB4NzI7IC8vIGR3TWF4VmlkZW9GcmFtZVNpemUKPiAr IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRhdGFbMTldID0g MHhDRTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRh dGFbMjBdID0gMHgwMDsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIGRhdGFbMjFdID0gMHgwMDsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIGRhdGFbMjJdID0gMHg3MjsgLy8gZHdNYXhQYXlsb2FkVHJhbnNmZXJT aXplCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkYXRh WzIzXSA9IDB4Q0U7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCBkYXRhWzI0XSA9IDB4MDA7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCBkYXRhWzI1XSA9IDB4MDA7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXQgPSAyNjsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIH0KPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGVsc2Ug aWYoKGluZGV4JjB4RkYwMCkgPT0gMHgwNDAwICYmICh2YWx1ZSYweEZGMDApID09IDB4MDEwMCkg Ly8gU2V0dGluZyBpbnB1dAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgewo+ ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgRFBSSU5URigi VVNCIFJlcXVlc3Q6IEFza2luZyBtYXhpbXVtIGlucHV0XG4iKTsKPiArIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmKGxlbmd0aCAhPSAxKQo+ICsgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgewo+ICsgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgRFBSSU5URigiVVNC IFJlcXVlc3Q6IFJlcXVlc3RlZCAlZCBieXRlcywgZXhwZWN0ZWQgMSBieXRlXG4iLCBsZW5ndGgp Owo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgZ290byBmYWlsOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgfQo+ICsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIGRhdGFbMF0gPSAxOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgcmV0ID0gMTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IH0KPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGVsc2UgaWYoKGluZGV4JjB4 RkYwMCkgPT0gMHgwNTAwICYmICh2YWx1ZSYweEZGMDApID09IDB4MDIwMCkgLy8gUFVfQlJJR0hU TkVTU19DT05UUk9MIG9mIFBST0NFU1NJTkdfVU5JVAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgRFBSSU5URigiVVNCIFJlc3F1ZXN0OiBBc2tpbmcgZm9yIG1heGltdW0gYnJpZ2h0bmVz c1xuIik7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBp ZihsZW5ndGggIT0gMikKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIERQUklOVEYoIlVTQiBSZXF1ZXN0OiBSZXF1ZXN0ZWQgJWQgYnl0ZXMsIGV4 cGVjdGVkIDIgYnl0ZXNcbiIsIGxlbmd0aCk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBnb3RvIGZhaWw7Cj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9Cj4gKwo+ICsgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGF0YVswXSA9IDE7Cj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkYXRhWzFdID0gMDsKPiArIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldCA9IDI7Cj4gKyDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCBlbHNlCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCBnb3RvIGZhaWw7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCBicmVhazsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNhc2UgVVZDR2V0VmlkZW9Db250cm9s IHwgVVNCX1VWQ19HRVRfREVGOgo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg aWYoKGluZGV4JjB4RkYpID09IDB4MDEgJiYgKCh2YWx1ZSYweEZGMDApID09IDB4MDEwMCB8fCAo dmFsdWUmMHhGRjAwKSA9PSAweDAyMDApKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg RFBSSU5URigiVVNCIFJlcXVlc3Q6IEdldCB2aWRlbyBjb250cm9sIGRlZmF1bHQgc2V0dGluZyBh dHRyaWJ1dGUgZm9yIGludGVyZmFjZSAlZFxuIiwgaW5kZXgmMHhGRik7Cj4gKwo+ICsgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYobGVuZ3RoICE9IDI2KQo+ ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgewo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgRFBS SU5URigiVVNCIFJlcXVlc3Q6IFJlcXVlc3RlZCAlZCBieXRlcywgZXhwZWN0ZWQgMjYgYnl0ZXNc biIsIGxlbmd0aCk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCBnb3RvIGZhaWw7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCB9Cj4gKwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgZGF0YVswXSA9IDA7IC8vIGJtSGludAo+ICsgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGF0YVsxXSA9IDA7Cj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkYXRhWzJdID0gMTsgLy8gYkZv cm1hdEluZGV4Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCBkYXRhWzNdID0gMTsgLy8gYkZyYW1lSW5kZXgKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRhdGFbNF0gPSAweDJBOyAvLyBkd0ZyYW1lSW50ZXJ2YWwK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRhdGFbNV0g PSAweDJDOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg ZGF0YVs2XSA9IDB4MEE7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCBkYXRhWzddID0gMHgwMDsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIGRhdGFbOF0gPSAwOyAvLyB3S2V5RnJhbWVSYXRlCj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkYXRhWzldID0gMDsKPiArIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRhdGFbMTBdID0gMDsg Ly8gd1BGcmFtZVJhdGUKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIGRhdGFbMTFdID0gMDsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIGRhdGFbMTJdID0gMDsgLy8gd0NvbXBRdWFsaXR5Cj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkYXRhWzEzXSA9IDA7Cj4gKyDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkYXRhWzE0XSA9IDE7IC8v IHdDb21wV2luZG93U2l6ZQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgZGF0YVsxNV0gPSAwOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgZGF0YVsxNl0gPSAweDIwOyAvLyB3RGVsYXkKPiArIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRhdGFbMTddID0gMDsKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRhdGFbMThdID0gMHg3Mjsg Ly8gZHdNYXhWaWRlb0ZyYW1lU2l6ZQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgZGF0YVsxOV0gPSAweENFOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGF0YVsyMF0gPSAweDAwOwo+ICsgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGF0YVsyMV0gPSAweDAwOwo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGF0YVsyMl0gPSAweDcy OyAvLyBkd01heFBheWxvYWRUcmFuc2ZlclNpemUKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRhdGFbMjNdID0gMHhDRTsKPiArIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRhdGFbMjRdID0gMHgwMDsKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRhdGFbMjVdID0gMHgwMDsK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldCA9IDI2 Owo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfQo+ICsgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgZWxzZSBpZigoaW5kZXgmMHhGRjAwKSA9PSAweDA0MDAgJiYg KHZhbHVlJjB4RkYwMCkgPT0gMHgwMTAwKSAvLyBTZXR0aW5nIGlucHV0Cj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCBEUFJJTlRGKCJVU0IgUmVxdWVzdDogQXNraW5nIGZvciBkZWZhdWx0 IGlucHV0XG4iKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIGlmKGxlbmd0aCAhPSAxKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgRFBSSU5URigiVVNCIFJlcXVlc3Q6IFJlcXVlc3RlZCAlZCBieXRl cywgZXhwZWN0ZWQgMSBieXRlXG4iLCBsZW5ndGgpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZ290byBmYWlsOwo+ICsgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfQo+ICsKPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRhdGFbMF0gPSAwOwo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0ID0gMTsKPiArIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0KPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIGVsc2UgaWYoKGluZGV4JjB4RkYwMCkgPT0gMHgwNTAwICYmICh2YWx1ZSYw eEZGMDApID09IDB4MDIwMCkgLy8gUFVfQlJJR0hUTkVTU19DT05UUk9MIG9mIFBST0NFU1NJTkdf VU5JVAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgewo+ICsgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgRFBSSU5URigiVVNCIFJlc3F1ZXN0 OiBBc2tpbmcgZm9yIGRlZmF1bHQgYnJpZ2h0bmVzc1xuIik7Cj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZihsZW5ndGggIT0gMikKPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHsKPiArIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIERQUklOVEYoIlVTQiBS ZXF1ZXN0OiBSZXF1ZXN0ZWQgJWQgYnl0ZXMsIGV4cGVjdGVkIDIgYnl0ZXNcbiIsIGxlbmd0aCk7 Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCBnb3RvIGZhaWw7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCB9Cj4gKwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgZGF0YVswXSA9IDE7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCBkYXRhWzFdID0gMDsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIHJldCA9IDI7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCB9Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBlbHNlCj4gKyDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBnb3RvIGZhaWw7Cj4gKyDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBicmVhazsKPiArIMKgIMKgIMKgIMKgIMKg IMKgIMKgIGNhc2UgVVZDU2V0VmlkZW9Db250cm9sIHwgVVNCX1VWQ19TRVRfQ1VSOgo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgRFBSSU5URigiVVNCIFJlcXVlc3Q6IFNldCB2 aWRlbyBjb250cm9sIHNldHRpbmcgYXR0cmlidXRlIGZvciBpbnRlcmZhY2UgJWRcbiIsIGluZGV4 JjB4RkYpOwo+ICsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldCA9IDA7 Cj4gKwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYoKGluZGV4JjB4RkYp ID09IDB4MDEgJiYgKCh2YWx1ZSYweEZGMDApID09IDB4MDEwMCB8fCAodmFsdWUmMHhGRjAwKSA9 PSAweDAyMDApKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgewo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYoKHZhbHVlJjB4RkYw MCkgPT0gMHgwMTAwKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgRFBSSU5URigiXHRWU19QUk9CRV9DT05UUk9MXG4iKTsKPiArIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGVsc2UKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIERQUklO VEYoIlx0VlNfQ09NTUlUX0NPTlRST0xcbiIpOwo+ICsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmKGxlbmd0aCAhPSAyNikKPiArIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIERQUklOVEYoIlVTQiBSZXF1 ZXN0OiBSZXF1ZXN0ZWQgJWQgYnl0ZXMsIGV4cGVjdGVkIDI2IGJ5dGVzXG4iLCBsZW5ndGgpOwo+ ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgZ290byBmYWlsOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgfQo+ICsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIERQUklOVEYoIlx0Ym1IaW50ID0gMHglMDJYJTAyWFxuIiwgZGF0YVsxXSwgZGF0YVswXSk7 Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBEUFJJTlRG KCJcdGJGb3JtYXRJbmRleCA9ICVkXG4iLCBkYXRhWzJdKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIERQUklOVEYoIlx0YkZyYW1lSW5kZXggPSAlZFxu IiwgZGF0YVszXSk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCBEUFJJTlRGKCJcdGR3RnJhbWVJbnRlcnZhbCA9IDB4JTAyWCUwMlglMDJYJTAyWFxuIiwg ZGF0YVs3XSwgZGF0YVs2XSwgZGF0YVs1XSwgZGF0YVs0XSk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBEUFJJTlRGKCJcdHdLZXlGcmFtZVJhdGUgPSAw eCUwMlglMDJYXG4iLCBkYXRhWzldLCBkYXRhWzhdKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIERQUklOVEYoIlx0d1BGcmFtZVJhdGUgPSAweCUwMlgl MDJYXG4iLCBkYXRhWzExXSwgZGF0YVsxMF0pOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgRFBSSU5URigiXHR3Q29tcFF1YWxpdHkgPSAweCUwMlglMDJY XG4iLCBkYXRhWzEzXSwgZGF0YVsxMl0pOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgRFBSSU5URigiXHR3Q29tcFdpbmRvd1NpemUgPSAweCUwMlglMDJY XG4iLCBkYXRhWzE1XSwgZGF0YVsxNF0pOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgRFBSSU5URigiXHR3RGVsYXkgPSAweCUwMlglMDJYXG4iLCBkYXRh WzE3XSwgZGF0YVsxNl0pOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgRFBSSU5URigiXHRkd01heFZpZGVvRnJhbWVTaXplPSAweCUwMlglMDJYJTAyWCUw MlhcbiIsIGRhdGFbMjFdLCBkYXRhWzIwXSwgZGF0YVsxOV0sIGRhdGFbMThdKTsKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIERQUklOVEYoIlx0ZHdNYXhQ YXlsb2FkVHJhbnNmZXJTaXplPSAweCUwMlglMDJYJTAyWCUwMlhcbiIsIGRhdGFbMjVdLCBkYXRh WzI0XSwgZGF0YVsyM10sIGRhdGFbMjJdKTsKPiArCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmcmFtZSA9IGZyYW1lX3N0YXJ0Owo+ICsgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZnJhbWVfcmVtYWluaW5nX2J5dGVz ID0gZnJhbWVfbGVuZ3RoOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgZmlyc3RfYnVsa19wYWNrZXQgPSAxOwo+ICsKPiArIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldCA9IDI2Owo+ICsgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgfQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg ZWxzZSBpZigoaW5kZXgmMHhGRjAwKSA9PSAweDA0MDAgJiYgKHZhbHVlJjB4RkYwMCkgPT0gMHgw MTAwKSAvLyBTZXR0aW5nIGlucHV0Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBEUFJJ TlRGKCJTZXR0aW5nIGlucHV0IHRvICVkXG4iLCBkYXRhWzBdKTsKPiArIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmKGxlbmd0aCAhPSAxKQo+ICsgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgewo+ICsgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgRFBSSU5URigiVVNC IFJlcXVlc3Q6IFJlcXVlc3RlZCAlZCBieXRlcywgZXhwZWN0ZWQgMSBieXRlXG4iLCBsZW5ndGgp Owo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgZ290byBmYWlsOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgfQo+ICsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIHMtPmN1cnJlbnRfaW5wdXQgPSBkYXRhWzBdOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0ID0gMTsKPiArIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIH0KPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGVs c2UgaWYoKGluZGV4JjB4RkYwMCkgPT0gMHgwNTAwICYmICh2YWx1ZSYweEZGMDApID09IDB4MDIw MCkgLy8gUFVfQlJJR0hUTkVTU19DT05UUk9MIG9mIFBST0NFU1NJTkdfVU5JVAo+ICsgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgRFBSSU5URigiVVNCIFJlc3F1ZXN0OiBTZXR0aW5nIGJyaWdo dG5lc3MsIHZhbHVlIHN0YXlzIHRoZSBzYW1lXG4iKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmKGxlbmd0aCAhPSAyKQo+ICsgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgRFBSSU5URigiVVNCIFJlcXVl c3Q6IFJlcXVlc3RlZCAlZCBieXRlcywgZXhwZWN0ZWQgMiBieXRlc1xuIiwgbGVuZ3RoKTsKPiAr IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IGdvdG8gZmFpbDsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIH0KPiArCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCByZXQgPSAyOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfQo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZWxzZQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZ290byBmYWlsOwo+ICsgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgYnJlYWs7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjYXNlIFVW Q0dldFZpZGVvQ29udHJvbCB8IFVTQl9VVkNfR0VUX1JFUzoKPiArIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIGlmKChpbmRleCYweEZGMDApID09IDB4MDUwMCAmJiAodmFsdWUmMHhG RjAwKSA9PSAweDAyMDApIC8vIFBVX0JSSUdIVE5FU1NfQ09OVFJPTCBvZiBQUk9DRVNTSU5HX1VO SVQKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHsKPiArIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIERQUklOVEYoIlVTQiBSZXNxdWVzdDog QXNraW5nIGZvciBicmlnaHRuZXNzIHJlc29sdXRpb25cbiIpOwo+ICsgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYobGVuZ3RoICE9IDIpCj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB7Cj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBEUFJJTlRGKCJVU0Ig UmVxdWVzdDogUmVxdWVzdGVkICVkIGJ5dGVzLCBleHBlY3RlZCAyIGJ5dGVzXG4iLCBsZW5ndGgp Owo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgZ290byBmYWlsOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgfQo+ICsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIGRhdGFbMF0gPSAxOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgZGF0YVsxXSA9IDA7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCByZXQgPSAyOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgfQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZWxzZQo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZ290byBmYWlsOwo+ICsg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYnJlYWs7Cj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCBkZWZhdWx0Ogo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZmFpbDoKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIERQUklOVEYoIlVTQiBSZXF1ZXN0OiBVbmhhbmRs ZWQgY29udHJvbCByZXF1ZXN0XG4iKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIERQUklOVEYoIlx0UmVxdWVzdDogMHglMDhYXG4iLCByZXF1ZXN0KTsKPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIERQUklOVEYoIlx0VmFsdWU6IDB4JTA4WFxuIiwgdmFs dWUpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgRFBSSU5URigiXHRJbmRl eDogMHglMDhYXG4iLCBpbmRleCk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCBEUFJJTlRGKCJcdExlbmd0aDogMHglMDhYXG4iLCBsZW5ndGgpOwo+ICsgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0ID0gVVNCX1JFVF9TVEFMTDsKPiArIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIGJyZWFrOwo+ICsgwqAgwqB9Cj4gKwo+ICsgwqAgwqAgwqAg cmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIGludCB1c2JfdXZjX2hhbmRsZV9kYXRhKFVT QkRldmljZSAqZGV2LCBVU0JQYWNrZXQgKnApCj4gK3sKPiArIMKgIMKgIMKgIGludCByZXQgPSAw Owo+ICsKPiArIMKgIMKgIMKgIC8vRFBSSU5URigiRGF0YSBjYWxsZWRcbiIpOwo+ICsgwqAgwqAg wqAgLy9EUFJJTlRGKCJQYWNrZXQgSUQ6ICVkXG4iLCBwLT5waWQpOwo+ICsgwqAgwqAgwqAgLy9E UFJJTlRGKCJEZXZpY2UgYWRkcmVzczogJWRcbiIsIHAtPmRldmFkZHIpOwo+ICsgwqAgwqAgwqAg Ly9EUFJJTlRGKCJEZXZpY2UgZW5kcG9pbnQ6ICVkXG4iLCBwLT5kZXZlcCk7Cj4gKyDCoCDCoCDC oCAvL0RQUklOVEYoIkRhdGEgbGVuZ3RoOiAlZFxuIiwgcC0+bGVuKTsKPiArCj4gKyDCoCDCoCDC oCBzd2l0Y2ggKHAtPnBpZCkKPiArIMKgIMKgIMKgIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKg IGNhc2UgVVNCX1RPS0VOX09VVDoKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IERQUklOVEYoIlVTQiBEYXRhIE91dCByZXF1ZXN0ZWQuXG4iKTsKPiArIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIGJyZWFrOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY2FzZSBV U0JfVE9LRU5fSU46Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZihwLT5k ZXZlcCA9PSAxKSAvLyBJTiBlbmRwb2ludCAxIChoYXJkd2FyZSBidXR0b24pCj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCBwLT5kYXRhWzBdID0gMjsKPiArIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHAtPmRhdGFbMV0gPSAxOwo+ICsgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcC0+ZGF0YVsyXSA9IDA7Cj4gKyDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBwLT5kYXRhWzNdID0g MDsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0KPiArIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIGVsc2UgaWYocC0+ZGV2ZXAgPT0gMikgLy8gSU4gZW5kcG9p bnQgMiAodmlkZW8gZGF0YSkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHsK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmKGZpcnN0 X2J1bGtfcGFja2V0KQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgcC0+ZGF0YVswXSA9IDI7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBwLT5kYXRhWzFdID0gMHg4MiB8IGZyYW1l X2lkOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgbWVtY3B5KChwLT5kYXRhKSsyLGZyYW1lLDYyKTsKPiArIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldCA9IDY0Owo+ICsg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg Zmlyc3RfYnVsa19wYWNrZXQ9MDsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGZyYW1lID0gZnJhbWUgKyA2MjsKPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGZyYW1lX3Jl bWFpbmluZ19ieXRlcyA9IGZyYW1lX3JlbWFpbmluZ19ieXRlcyAtIDYyOwo+ICsgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfQo+ICsgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZWxzZSBpZihmcmFtZV9yZW1haW5pbmdfYnl0 ZXM8NjQpCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB7 Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCBtZW1jcHkocC0+ZGF0YSxmcmFtZSxmcmFtZV9yZW1haW5pbmdfYnl0ZXMpOwo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0 ID0gZnJhbWVfcmVtYWluaW5nX2J5dGVzOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZ2V0X2ZyYW1lX3JlYWQoKTsKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0KPiArIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGVsc2UgaWYoZnJhbWVfcmVtYWluaW5n X2J5dGVzPT02NCkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIG1lbWNweShwLT5kYXRhLGZyYW1lLGZyYW1lX3JlbWFpbmluZ19ieXRlcyk7Cj4g KyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCByZXQgPSBmcmFtZV9yZW1haW5pbmdfYnl0ZXM7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmcmFtZV9yZW1haW5pbmdfYnl0ZXMg PSAwOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfQo+ ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZWxzZSBpZihm cmFtZV9yZW1haW5pbmdfYnl0ZXM9PTApCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXQgPSAwOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZ2V0X2ZyYW1lX3JlYWQoKTsKPiAr IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0KPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGVsc2UKPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHsKPiArIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIG1lbWNweShwLT5kYXRh LGZyYW1lLDY0KTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIGZyYW1lID0gZnJhbWUrNjQ7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmcmFtZV9yZW1haW5pbmdfYnl0 ZXMgPSBmcmFtZV9yZW1haW5pbmdfYnl0ZXMtNjQ7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXQgPSA2NDsKPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0KPiArIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIH0KPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IGVsc2UKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHsKPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIERQUklOVEYoIlVTQiBEYXRhIElu IHJlcXVlc3RlZC5cbiIpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgRFBSSU5URigiUmVxdWVzdGVkIGRhdGEgZnJvbSBlbmRwb2ludCAlMDJYXG4iLCBw LT5kZXZlcCk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9Cj4gKyDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBicmVhazsKPiArIMKgIMKgIMKgIMKgIMKgIGRl ZmF1bHQ6Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBEUFJJTlRGKCJCYWQg dG9rZW46ICVkXG4iLCBwLT5waWQpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgLy9mYWlsOgoKUHJvYmFibHkgc2hvdWxkIGJlIHJlbW92ZWQuCgo+ICsgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0ID0gVVNCX1JFVF9TVEFMTDsKPiArIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIGJyZWFrOwo+ICsgwqAgwqB9Cj4gKwo+ICsgwqAgwqByZXR1 cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCB1c2JfdXZjX2hhbmRsZV9kZXN0cm95KFVT QkRldmljZSAqZGV2KQo+ICt7Cj4gKyDCoCDCoCDCoCBEUFJJTlRGKCJEZXN0cm95IGNhbGxlZFxu Iik7Cj4gKyDCoCDCoCDCoCBjbG9zZSh2NGwyX2ZkKTsKPiArfQo+ICsKPiArc3RhdGljIGludCB1 c2JfdXZjX2luaXRmbihVU0JEZXZpY2UgKmRldikKPiArewo+ICsgwqAgwqAgwqAgc3RydWN0IHY0 bDJfY2FwYWJpbGl0eSBjYXBhYmlsaXRpZXM7Cj4gKyDCoCDCoCDCoCBzdHJ1Y3QgdjRsMl9pbnB1 dCB2aWRlb19pbnB1dDsKPiArIMKgIMKgIMKgIHN0cnVjdCB2NGwyX2Zvcm1hdCB2X2Zvcm1hdDsK PiArIMKgIMKgIMKgIGludCB2aWRlb19pbnB1dF9pbmRleDsKPiArIMKgIMKgIMKgIGludCByZXRf ZXJyOwo+ICsKPiArIMKgIMKgIMKgIERQUklOVEYoIkluaXQgY2FsbGVkXG4iKTsKPiArCj4gKyDC oCDCoCDCoCBVU0JVVkNTdGF0ZSAqcyA9IChVU0JVVkNTdGF0ZSAqKWRldjsKPiArCj4gKyDCoCDC oCDCoCBzLT5jdXJyZW50X2lucHV0ID0gMDsKPiArIMKgIMKgIMKgIHMtPmRldi5zcGVlZCA9IFVT Ql9TUEVFRF9GVUxMOwo+ICsKPiArIMKgIMKgIMKgIGlmICghcy0+djRsMl9kZXZpY2UpIHsKPiAr IMKgIMKgIMKgIMKgZXJyb3JfcmVwb3J0KCJWNEwyIGRldmljZSBzcGVjaWZpY2F0aW9uIG5lZWRl ZC5cbiIpOwo+ICsgwqAgwqAgwqAgwqByZXR1cm4gLTE7Cj4gKyDCoCDCoH0KPiArIMKgIMKgIMKg IGVsc2UKPiArIMKgIMKgIMKgIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIERQUklOVEYoIlRy eWluZyB0byBvcGVuICVzXG4uIiwgcy0+djRsMl9kZXZpY2UpOwo+ICsgwqAgwqAgwqAgfQo+ICsK PiArIMKgIMKgIMKgIHY0bDJfZmQgPSBvcGVuKHMtPnY0bDJfZGV2aWNlLCBPX1JEV1IpOwo+ICsK PiArIMKgIMKgIMKgIGlmKHY0bDJfZmQ9PS0xKQo+ICsgwqAgwqAgwqAgewo+ICsgwqAgwqAgwqAg wqAgwqAgwqAgwqAgc3dpdGNoKGVycm5vKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgewo+ICsg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY2FzZSBFQUNDRVM6Cj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBlcnJvcl9yZXBvcnQoIkFjY2Vz cyBkZW5pZWQuIik7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCBicmVhazsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNhc2UgRUJV U1k6Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBlcnJv cl9yZXBvcnQoIkRldmljZSBidXN5LiIpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgYnJlYWs7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCBjYXNlIEVOWElPOgo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgZXJyb3JfcmVwb3J0KCJEZXZpY2UgZG9lcyBub3QgZXhpc3QuIik7Cj4gKyDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBicmVhazsKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNhc2UgRU5PTUVNOgo+ICsgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZXJyb3JfcmVwb3J0KCJOb3QgZW5vdWdo IG1lbW9yeSB0byBvcGVuIGRldmljZS4iKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIGJyZWFrOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgY2FzZSBFTUZJTEU6Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCBlcnJvcl9yZXBvcnQoIlByb2Nlc3MgcmVhY2hlZCBtYXhpbXVtIGZpbGVzIG9w ZW5lZC4iKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IGJyZWFrOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY2FzZSBFTkZJTEU6 Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBlcnJvcl9y ZXBvcnQoIlN5c3RlbSByZWFjaGVkIG1heGltdW0gZmlsZXMgb3BlbmVkLiIpOwo+ICsgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYnJlYWs7Cj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkZWZhdWx0Ogo+ICsgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZXJyb3JfcmVwb3J0KCJVbmtub3duIGVycm9yICVk IG9wZW5pbmcgZGV2aWNlLiIsIGVycm5vKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIGJyZWFrOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfQo+ICsK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiAtMTsKPiArIMKgIMKgIMKgIH0KPiArCj4g KyDCoCDCoCDCoCBEUFJJTlRGKCJEZXZpY2Ugb3BlbmVkIGNvcnJlY3RseS5cbiIpOwo+ICsKPiAr IMKgIMKgIMKgIERQUklOVEYoIlF1ZXJ5aW5nIGNhcGFiaWxpdGllcy5cbiIpOwo+ICsKPiArIMKg IMKgIMKgIHJldF9lcnIgPSBpb2N0bCh2NGwyX2ZkLCBWSURJT0NfUVVFUllDQVAsICZjYXBhYmls aXRpZXMpOwo+ICsKPiArIMKgIMKgIMKgIGlmKHJldF9lcnI9PS0xKQo+ICsgwqAgwqAgwqAgewo+ ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgc3dpdGNoKGVycm5vKQo+ICsgwqAgwqAgwqAgwqAgwqAg wqAgwqAgewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY2FzZSBFSU5WQUw6 Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBlcnJvcl9y ZXBvcnQoIkRldmljZSBpcyBub3QgVjRMMiBkZXZpY2UuXG4iKTsKPiArIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGJyZWFrOwo+ICsgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgZGVmYXVsdDoKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIGVycm9yX3JlcG9ydCgiRGV2aWNlIHJldHVybmVkIHVua25vd24g ZXJyb3IgJWQuXG4iLCBlcnJubyk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCBicmVhazsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0KPiArCj4gKyDC oCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gLTE7Cj4gKyDCoCDCoCDCoCB9Cj4gKwo+ICsgwqAg wqAgwqAgRFBSSU5URigiRGV2aWNlIGRyaXZlcjogJXNcbiIsIGNhcGFiaWxpdGllcy5kcml2ZXIp Owo+ICsgwqAgwqAgwqAgRFBSSU5URigiRGV2aWNlIG5hbWU6ICVzXG4iLCBjYXBhYmlsaXRpZXMu Y2FyZCk7Cj4gKyDCoCDCoCDCoCBEUFJJTlRGKCJEZXZpY2UgYnVzOiAlc1xuIiwgY2FwYWJpbGl0 aWVzLmJ1c19pbmZvKTsKPiArIMKgIMKgIMKgIERQUklOVEYoIkRyaXZlciB2ZXJzaW9uOiAldS4l dS4ldVxuIiwoY2FwYWJpbGl0aWVzLnZlcnNpb24gPj4gMTYpICYgMHhGRiwoY2FwYWJpbGl0aWVz LnZlcnNpb24gPj4gOCkgJiAweEZGLCDCoCDCoGNhcGFiaWxpdGllcy52ZXJzaW9uICYgMHhGRik7 Cj4gKyDCoCDCoCDCoCBEUFJJTlRGKCJEZXZpY2UgY2FwYWJpbGl0aWVzOiAweCUwOFhcbiIsIGNh cGFiaWxpdGllcy5jYXBhYmlsaXRpZXMpOwo+ICsKPiArIMKgIMKgIMKgIERQUklOVEYoIkVudW1l cmF0aW5nIHZpZGVvIGlucHV0cy5cbiIpOwo+ICsgwqAgwqAgwqAgbWVtc2V0KCZ2aWRlb19pbnB1 dCwgMCwgc2l6ZW9mKHZpZGVvX2lucHV0KSk7Cj4gKyDCoCDCoCDCoCB2aWRlb19pbnB1dC5pbmRl eD0wOwo+ICsgwqAgwqAgwqAgd2hpbGUoKGlvY3RsKHY0bDJfZmQsIFZJRElPQ19FTlVNSU5QVVQs ICZ2aWRlb19pbnB1dCk9PTApKQo+ICsgwqAgwqAgwqAgewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAg wqAgaWYodmlkZW9faW5wdXQudHlwZSA9PSBWNEwyX0lOUFVUX1RZUEVfQ0FNRVJBKQo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg dmlkZW9faW5wdXRfaW5kZXggPSB2aWRlb19pbnB1dC5pbmRleDsKPiArIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIGJyZWFrOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfQo+ICsK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHZpZGVvX2lucHV0LmluZGV4Kys7Cj4gKyDCoCDCoCDC oCB9Cj4gKwo+ICsgwqAgwqAgwqAgRFBSSU5URigiU2V0dGluZyB2aWRlbyBpbnB1dCB0byBpbmRl eCAlZFxuIiwgdmlkZW9faW5wdXRfaW5kZXgpOwo+ICsgwqAgwqAgwqAgcmV0X2VyciA9IGlvY3Rs KHY0bDJfZmQsIFZJRElPQ19TX0lOUFVULCAmdmlkZW9faW5wdXRfaW5kZXgpOwo+ICsKPiArIMKg IMKgIMKgIGlmKHJldF9lcnI9PS0xKQo+ICsgwqAgwqAgwqAgewo+ICsgwqAgwqAgwqAgwqAgwqAg wqAgwqAgc3dpdGNoKGVycm5vKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgewo+ICsgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY2FzZSBFSU5WQUw6Cj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBlcnJvcl9yZXBvcnQoIkluY29ycmVjdCB2 aWRlbyBpbnB1dCBzZWxlY3RlZC5cbiIpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgYnJlYWs7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCBjYXNlIEVCVVNZOgo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgZXJyb3JfcmVwb3J0KCJJbnB1dCBjYW5ub3QgYmUgc3dpdGNoZWQuXG4iKTsKPiAr IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGJyZWFrOwo+ICsg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGVmYXVsdDoKPiArIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGVycm9yX3JlcG9ydCgiVW5rbm93biBl cnJvciAlZC5cbiIsIGVycm5vKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIGJyZWFrOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfQo+ICsKPiArIMKg IMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiAtMTsKPiArIMKgIMKgIMKgIH0KPiArCj4gKyDCoCDC oCDCoCBpb2N0bCh2NGwyX2ZkLCBWSURJT0NfR19JTlBVVCwgJnJldF9lcnIpOwo+ICsKPiArIMKg IMKgIMKgIGlmKHJldF9lcnI9PXZpZGVvX2lucHV0X2luZGV4KQo+ICsgwqAgwqAgwqAgwqAgwqAg wqAgwqAgRFBSSU5URigiVmlkZW8gaW5wdXQgY29ycmVjdGx5IHNldC5cbiIpOwo+ICsgwqAgwqAg wqAgZWxzZQo+ICsgwqAgwqAgwqAgewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZXJyb3JfcmVw b3J0KCJTb21lIGVycm9yIGhhcHBlbmVkIHdoaWxlIHNldHRpbmcgdmlkZW8gaW5wdXQuXG4iKTsK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiAtMTsKPiArIMKgIMKgIMKgIH0KPiArCj4g KyDCoCDCoCDCoCBEUFJJTlRGKCJUcnlpbmcgdG8gc2V0IDMyMHgyNDAgTUpQRUcuXG4iKTsKPiAr IMKgIMKgIMKgIG1lbXNldCgmdl9mb3JtYXQsIDAsIHNpemVvZih2X2Zvcm1hdCkpOwo+ICsgwqAg wqAgwqAgdl9mb3JtYXQudHlwZSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoD0gVjRMMl9CVUZfVFlQ RV9WSURFT19DQVBUVVJFOwo+ICsgwqAgwqAgwqAgdl9mb3JtYXQuZm10LnBpeC53aWR0aCDCoCDC oCDCoCA9IDMyMDsKPiArIMKgIMKgIMKgIHZfZm9ybWF0LmZtdC5waXguaGVpZ2h0IMKgIMKgIMKg PSAyNDA7Cj4gKyDCoCDCoCDCoCB2X2Zvcm1hdC5mbXQucGl4LnBpeGVsZm9ybWF0ID0gVjRMMl9Q SVhfRk1UX01KUEVHOwo+ICsgwqAgwqAgwqAgdl9mb3JtYXQuZm10LnBpeC5maWVsZCDCoCDCoCDC oCA9IFY0TDJfRklFTERfSU5URVJMQUNFRDsKPiArCj4gKyDCoCDCoCDCoCByZXRfZXJyID0gaW9j dGwgKHY0bDJfZmQsIFZJRElPQ19TX0ZNVCwgJnZfZm9ybWF0KTsKClBsZWFzZSByZW1vdmUgdGhl IHNwYWNlIGJldHdlZW4gJ2lvY3RsJyBhbmQgJygnIGZvciBjb25zaXN0ZW5jeS4KCj4gKwo+ICsg wqAgwqAgwqAgaWYocmV0X2VyciA9PSAtMSkKPiArIMKgIMKgIMKgIHsKPiArIMKgIMKgIMKgIMKg IMKgIMKgIMKgIHN3aXRjaChlcnJubykKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHsKPiArIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNhc2UgRUJVU1k6Cj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBlcnJvcl9yZXBvcnQoIkRldmljZSBi dXN5IHdoaWxlIGNoYW5naW5nIGZvcm1hdC5cbiIpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYnJlYWs7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCBjYXNlIEVJTlZBTDoKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIGVycm9yX3JlcG9ydCgiSW52YWxpZCBmb3JtYXQuXG4iKTsKPiArIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGJyZWFrOwo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGVmYXVsdDoKPiArIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGVycm9yX3JlcG9ydCgiVW5rbm93biBlcnJv ciAlZCB3aGlsZSBjaGFuZ2luZyBmb3JtYXQuXG4iLCBlcnJubyk7Cj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBicmVhazsKPiArIMKgIMKgIMKgIMKgIMKg IMKgIMKgIH0KPiArCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gLTE7Cj4gKyDCoCDC oCDCoCB9Cj4gKwo+ICsgwqAgwqAgwqAgZnJhbWVfbWF4X2xlbmd0aCA9IHZfZm9ybWF0LmZtdC5w aXguc2l6ZWltYWdlOwo+ICsKPiArIMKgIMKgIMKgIERQUklOVEYoIkZvcm1hdCBjb3JyZWN0bHkg c2V0LlxuIik7Cj4gKyDCoCDCoCDCoCBEUFJJTlRGKCJNYXhpbXVtIGltYWdlIHNpemU6ICVkIGJ5 dGVzLlxuIiwgZnJhbWVfbWF4X2xlbmd0aCk7Cj4gKwo+ICsgwqAgwqAgwqAgRFBSSU5URigiQWxs b2NhdGluZyBtZW1vcnkgZm9yIGZyYW1lcy5cbiIpOwo+ICsgwqAgwqAgwqAgZnJhbWUgPSBtYWxs b2MoZnJhbWVfbWF4X2xlbmd0aCk7CgpxZW11X21hbGxvYygpCgo+ICsgwqAgwqAgwqAgZnJhbWVf c3RhcnQgPSBmcmFtZTsKPiArCj4gKyDCoCDCoCDCoCBmcmFtZV9pZCA9IDE7Cj4gKwo+ICsgwqAg wqAgwqAgZ2V0X2ZyYW1lX3JlYWQoKTsKPiArCj4gKyDCoCDCoHJldHVybiAwOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgVVNCRGV2aWNlICp1c2JfdXZjX2luaXQoY29uc3QgY2hhciAqZmlsZW5hbWUpCj4g K3sKPiArIMKgIMKgVVNCRGV2aWNlICpkZXY7Cj4gKwo+ICsgwqAgwqBkZXYgPSB1c2JfY3JlYXRl KE5VTEwgLyogRklYTUUgKi8sICJ1c2ItdXZjLXdlYmNhbSIpOwo+ICsgwqAgwqBxZGV2X2luaXRf bm9mYWlsKCZkZXYtPnFkZXYpOwo+ICsKPiArIMKgIMKgIMKgIERQUklOVEYoIkZpbGVuYW1lOiAl c1xuLiIsIGZpbGVuYW1lKTsKPiArCj4gKyDCoCDCoCDCoCBpZiAoISpmaWxlbmFtZSkgewo+ICsg wqAgwqAgwqAgwqBlcnJvcl9yZXBvcnQoImNoYXJhY3RlciBkZXZpY2Ugc3BlY2lmaWNhdGlvbiBu ZWVkZWQiKTsKPiArIMKgIMKgIMKgIMKgcmV0dXJuIE5VTEw7Cj4gKyDCoCDCoH0KPiArCj4gKyDC oCDCoHJldHVybiBkZXY7Cj4gK30KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgVVNCRGV2aWNlSW5mbyB1 c2JfdXZjX2luZm8gPSB7Cj4gKyDCoCDCoC5wcm9kdWN0X2Rlc2MgwqAgPSAiUUVNVSBVU0IgVmlk ZW8gQ2xhc3MgRGV2aWNlIiwKPiArIMKgIMKgLnFkZXYubmFtZSDCoCDCoCDCoD0gInVzYi11dmMt d2ViY2FtIiwKPiArIMKgIMKgLnFkZXYuZGVzYyDCoCDCoCDCoD0gIlFFTVUgVVNCIFZpZGVvIENs YXNzIERldmljZSIsCj4gKyDCoCDCoC51c2JkZXZpY2VfbmFtZSA9ICJ1dmMtd2ViY2FtIiwKPiAr IMKgIMKgIMKgIC51c2JkZXZpY2VfaW5pdCA9IHVzYl91dmNfaW5pdCwKPiArIMKgIMKgLnFkZXYu c2l6ZSDCoCDCoCDCoD0gc2l6ZW9mKFVTQlVWQ1N0YXRlKSwKPiArIMKgIMKgLmluaXQgwqAgwqAg wqAgwqAgwqAgPSB1c2JfdXZjX2luaXRmbiwKPiArIMKgIMKgLmhhbmRsZV9wYWNrZXQgwqA9IHVz Yl9nZW5lcmljX2hhbmRsZV9wYWNrZXQsCj4gKyDCoCDCoC5oYW5kbGVfcmVzZXQgwqAgPSB1c2Jf dXZjX2hhbmRsZV9yZXNldCwKPiArIMKgIMKgLmhhbmRsZV9jb250cm9sID0gdXNiX3V2Y19oYW5k bGVfY29udHJvbCwKPiArIMKgIMKgLmhhbmRsZV9kYXRhIMKgIMKgPSB1c2JfdXZjX2hhbmRsZV9k YXRhLAo+ICsgwqAgwqAuaGFuZGxlX2Rlc3Ryb3kgPSB1c2JfdXZjX2hhbmRsZV9kZXN0cm95LAo+ ICsgwqAgwqAgwqAgLnFkZXYucHJvcHMgwqAgwqAgwqAgwqAgwqAgwqAgPSAoUHJvcGVydHlbXSkg ewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgREVGSU5FX1BST1BfU1RSSU5HKCJkZXZpY2UiLCBV U0JVVkNTdGF0ZSwgdjRsMl9kZXZpY2UpLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgREVGSU5F X1BST1BfRU5EX09GX0xJU1QoKSwKPiArIMKgIMKgIMKgIH0sCj4gK307Cj4gKwo+ICtzdGF0aWMg dm9pZCB1c2JfdXZjX3JlZ2lzdGVyX2RldmljZXModm9pZCkKPiArewo+ICsgwqAgwqB1c2JfcWRl dl9yZWdpc3RlcigmdXNiX3V2Y19pbmZvKTsKPiArfQo+ICtkZXZpY2VfaW5pdCh1c2JfdXZjX3Jl Z2lzdGVyX2RldmljZXMpCj4gLS0KPgo+Cj4K