From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from f437.i.mail.ru (f437.i.mail.ru [185.5.136.108]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id 0A8C1469719 for ; Tue, 20 Oct 2020 15:57:48 +0300 (MSK) From: =?UTF-8?B?SWx5YSBLb3NhcmV2?= MIME-Version: 1.0 Date: Tue, 20 Oct 2020 15:57:46 +0300 Reply-To: =?UTF-8?B?SWx5YSBLb3NhcmV2?= Message-ID: <1603198666.603600853@f437.i.mail.ru> Content-Type: multipart/alternative; boundary="--ALT--cAfB6cA44Fc8fB0a433d75fF6bE2cDc11603198666" In-Reply-To: <20201020123759.GA23945@tarantool.org> References: <1603101096-18698-1-git-send-email-alyapunov@tarantool.org> <1603197242.96080661@f346.i.mail.ru> <20201020123759.GA23945@tarantool.org> Subject: Re: [Tarantool-patches] =?utf-8?q?=5BPATCH_2/2=5D_memtx=3A_make_tuple?= =?utf-8?q?_compare_hints_optional?= List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: =?UTF-8?B?TmlraXRhIFBldHRpaw==?= Cc: tarantool-patches@dev.tarantool.org ----ALT--cAfB6cA44Fc8fB0a433d75fF6bE2cDc11603198666 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 CgoKwqAgCj7QktGC0L7RgNC90LjQuiwgMjAg0L7QutGC0Y/QsdGA0Y8gMjAyMCwgMTU6MzggKzAz OjAwINC+0YIgTmlraXRhIFBldHRpayA8a29yYWJsZXZAdGFyYW50b29sLm9yZz46Cj7CoAo+T24g MjAgT2N0IDE1OjM0LCBJbHlhIEtvc2FyZXYgd3JvdGU6Cj4+Cj4+IEhpLAo+PiDCoAo+PiBUaGFu a3MgZm9yIHRoZSBwYXRjaCEKPj4gwqAKPj4gTEdUTSwgaSBjaGVja2VkIGZvciB0aGUgbnVtYmVy IG9mIGNvbXBpbGVycyB0aGF0IGlmIHdpdGggdGhlwqB0ZW1wbGF0ZWQKPj4gYWdydW1lbnTCoGlz IGJlaW5nIHByb2Nlc3NlZCBhdCB0aGUgY29tcGlsZSB0aW1lIHNvIHRoYXQgdGhlcmUgYXJlIG5v IGp1bXBzCj4+IGluIGFzbSBjb2RlLgo+PiDCoAo+PiBXaGF0IGkgdGhpbmsgaXMgbmVlZGVkIGlz IHRoZSBlbnVtIGxpa2UgdGhlIGZvbGxvd2luZzoKPj4gZW51bSB7Cj4+IMKgwqDCoMKgwqDCoMKg wqBOT1RfSElOVEVEID0gMCAsCj4+IMKgwqDCoMKgwqDCoMKgwqBISU5URUQgPSAxICwKPj4gfTsK Pgo+SSBsaWtlIHRoaXMgd2F5LiBCdHcgd2h5IG5vdCB1c2luZyBqdXN0IGJvb2xlYW4gdHlwZT8K SSB0aGluayB0aGVyZSB3YXMgYW4gaWRlYSB0byBpbXBsZW1lbnQgbW9yZSB0aGFuIG9uZSB0eXBl IG9mIGhpbnRzLgpBbHNvIGl0IGRvZXNu4oCZdCByZWFsbHkgbWF0dGVyIGFzIGZhciBhcyB3ZSBo YXZlIHRoZSBwcm9wZXIgY29uc3RhbnRzLgo+wqDCoAo+PiB0byBhdm9pZCB1c2luZyA8MD4gJiA8 MT4uIElmIG5lZWRlZCBpIGNhbiBwdXNoIHN1Y2ggcGF0Y2ggdG8gdGhlIGJyYW5jaC4KPj4gPtCf 0L7QvdC10LTQtdC70YzQvdC40LosIDE5INC+0LrRgtGP0LHRgNGPIDIwMjAsIDEyOjUyICswMzow MCDQvtGCIEFsZWtzYW5kciBMeWFwdW5vdiA8IGFseWFwdW5vdkB0YXJhbnRvb2wub3JnID46Cj4+ ID7CoAo+PiA+U2luY2UgOWZiYTI5YWJiNGUwNWJhYmI5YjIzYjQ0MTNiZDgwODNmMGZiYTkzMyAo bWVtdHg6IGludHJvZHVjZSB0dXBsZQo+PiA+Y29tcGFyZSBoaW50KSBtZW10eCB0cmVlIGtleSBk YXRhIChpbmRleGVzKSBzdGFydGVkIHRvIGNvbnRhaW4gZXh0cmEgOAo+PiA+Ynl0ZXMgYXMgYSBo aW50LiBOb3cgaXQgaXMgb3B0aW9uYWwgYW5kIGNhbiBiZSB0dXJuZWQgb2ZmIGluIGFuIGluZGV4 Cj4+ID5vcHRpb25zIHdpdGggImhpbnQgPSBmYWxzZSIgZW50cnkuCj4+ID4KPj4gPkNsb3NlcyAj NDkyNwo+PiA+Cj4+ID5AVGFyYW50b29sQm90IGRvY3VtZW50Cj4+ID5UaXRsZTogbWVtdHg6IG9w dGlvbmFsIHR1cGxlIGNvbXBhcmUgaGludHMKPj4gPlVwZGF0ZSB0aGUgZG9jdW1lbnRhdGlvbiBm b3IgYW4gaW5kZXggY3JlYXRpb24gdG8gcmVmbGVjdCB0aGF0IHRoZXJlIGlzCj4+ID5ub3cgYW4g b3B0aW9uIHRvIHR1cm4gb2ZmIGhpbnRzIGZvciB0aGUgaW5kZXguCj4+ID4tLS0KPj4gPsKgc3Jj L2JveC9pbmRleF9kZWYuYyB8IDIgKwo+PiA+wqBzcmMvYm94L2luZGV4X2RlZi5oIHwgNiArCj4+ ID7CoHNyYy9ib3gvbHVhL3NjaGVtYS5sdWEgfCA1MyArKysrCj4+ID7CoHNyYy9ib3gvbHVhL3Nw YWNlLmNjIHwgNyArCj4+ID7CoHNyYy9ib3gvbWVtdHhfZW5naW5lLmMgfCAyICsKPj4gPsKgc3Jj L2JveC9tZW10eF90cmVlLmNjIHwgNTk5ICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0tLQo+PiA+wqBzcmMvbGliL3NhbGFkL2Jwc190cmVlLmggfCAxOSArKwo+PiA+wqB0ZXN0L2Jv eC9hbHRlci5yZXN1bHQgfCAxMDMgKysrKysrLQo+PiA+wqB0ZXN0L2JveC9hbHRlci50ZXN0Lmx1 YSB8IDM0ICsrCj4+ID7CoHRlc3QvYm94L2Vycmluai5yZXN1bHQgfCAzICstCj4+ID7CoHRlc3Qv Ym94L3RyZWVfcGsucmVzdWx0IHwgMzE0ICsrKysrKysrKysrKysrKysrKysKPj4gPsKgdGVzdC9i b3gvdHJlZV9way50ZXN0Lmx1YSB8IDExNSArKysrKysrCj4+ID7CoHRlc3QvYm94L3RyZWVfcGtf bXVsdGlwYXJ0LnJlc3VsdCB8IDE1MyArKysrKysrKysKPj4gPsKgdGVzdC9ib3gvdHJlZV9wa19t dWx0aXBhcnQudGVzdC5sdWEgfCA2NCArKysrCj4+ID7CoDE0IGZpbGVzIGNoYW5nZWQsIDEyNjkg aW5zZXJ0aW9ucygrKSwgMjA1IGRlbGV0aW9ucygtKQo+PiA+Cj4+ID5kaWZmIC0tZ2l0IGEvc3Jj L2JveC9pbmRleF9kZWYuYyBiL3NyYy9ib3gvaW5kZXhfZGVmLmMKPj4gPmluZGV4IDk4MDI5NjEu Ljc5Mzk0YjggMTAwNjQ0Cj4+ID4tLS0gYS9zcmMvYm94L2luZGV4X2RlZi5jCj4+ID4rKysgYi9z cmMvYm94L2luZGV4X2RlZi5jCj4+ID5AQCAtNTEsNiArNTEsNyBAQCBjb25zdCBzdHJ1Y3QgaW5k ZXhfb3B0cyBpbmRleF9vcHRzX2RlZmF1bHQgPSB7Cj4+ID7CoCAvKiAubHNuID0gKi8gMCwKPj4g PsKgIC8qIC5zdGF0ID0gKi8gTlVMTCwKPj4gPsKgIC8qIC5mdW5jID0gKi8gMCwKPj4gPisgLyog LmhpbnQgPSAqLyB0cnVlLAo+PiA+wqB9Owo+PiA+wqAKPj4gPsKgY29uc3Qgc3RydWN0IG9wdF9k ZWYgaW5kZXhfb3B0c19yZWdbXSA9IHsKPj4gPkBAIC02Niw2ICs2Nyw3IEBAIGNvbnN0IHN0cnVj dCBvcHRfZGVmIGluZGV4X29wdHNfcmVnW10gPSB7Cj4+ID7CoCBPUFRfREVGKCJsc24iLCBPUFRf SU5UNjQsIHN0cnVjdCBpbmRleF9vcHRzLCBsc24pLAo+PiA+wqAgT1BUX0RFRigiZnVuYyIsIE9Q VF9VSU5UMzIsIHN0cnVjdCBpbmRleF9vcHRzLCBmdW5jX2lkKSwKPj4gPsKgIE9QVF9ERUZfTEVH QUNZKCJzcWwiKSwKPj4gPisgT1BUX0RFRigiaGludCIsIE9QVF9CT09MLCBzdHJ1Y3QgaW5kZXhf b3B0cywgaGludCksCj4+ID7CoCBPUFRfRU5ELAo+PiA+wqB9Owo+PiA+wqAKPj4gPmRpZmYgLS1n aXQgYS9zcmMvYm94L2luZGV4X2RlZi5oIGIvc3JjL2JveC9pbmRleF9kZWYuaAo+PiA+aW5kZXgg ZDkyOGIyMy4uMjE4MGE2OSAxMDA2NDQKPj4gPi0tLSBhL3NyYy9ib3gvaW5kZXhfZGVmLmgKPj4g PisrKyBiL3NyYy9ib3gvaW5kZXhfZGVmLmgKPj4gPkBAIC0xNjUsNiArMTY1LDEwIEBAIHN0cnVj dCBpbmRleF9vcHRzIHsKPj4gPsKgIHN0cnVjdCBpbmRleF9zdGF0ICpzdGF0Owo+PiA+wqAgLyoq IElkZW50aWZpZXIgb2YgdGhlIGZ1bmN0aW9uYWwgaW5kZXggZnVuY3Rpb24uICovCj4+ID7CoCB1 aW50MzJfdCBmdW5jX2lkOwo+PiA+KyAvKioKPj4gPisgKiBVc2UgaGludCBvcHRpbWl6YXRpb24g Zm9yIHRyZWUgaW5kZXguCj4+ID4rICovCj4+ID4rIGJvb2wgaGludDsKPj4gPsKgfTsKPj4gPsKg Cj4+ID7CoGV4dGVybiBjb25zdCBzdHJ1Y3QgaW5kZXhfb3B0cyBpbmRleF9vcHRzX2RlZmF1bHQ7 Cj4+ID5AQCAtMjExLDYgKzIxNSw4IEBAIGluZGV4X29wdHNfY21wKGNvbnN0IHN0cnVjdCBpbmRl eF9vcHRzICpvMSwgY29uc3Qgc3RydWN0IGluZGV4X29wdHMgKm8yKQo+PiA+wqAgcmV0dXJuIG8x LT5ibG9vbV9mcHIgPCBvMi0+Ymxvb21fZnByID8gLTEgOiAxOwo+PiA+wqAgaWYgKG8xLT5mdW5j X2lkICE9IG8yLT5mdW5jX2lkKQo+PiA+wqAgcmV0dXJuIG8xLT5mdW5jX2lkIC0gbzItPmZ1bmNf aWQ7Cj4+ID4rIGlmIChvMS0+aGludCAhPSBvMi0+aGludCkKPj4gPisgcmV0dXJuIG8xLT5oaW50 IC0gbzItPmhpbnQ7Cj4+ID7CoCByZXR1cm4gMDsKPj4gPsKgfQo+PiA+wqAKPj4gPmRpZmYgLS1n aXQgYS9zcmMvYm94L2x1YS9zY2hlbWEubHVhIGIvc3JjL2JveC9sdWEvc2NoZW1hLmx1YQo+PiA+ aW5kZXggMTEzMWFmNy4uOWNjMTI4OSAxMDA2NDQKPj4gPi0tLSBhL3NyYy9ib3gvbHVhL3NjaGVt YS5sdWEKPj4gPisrKyBiL3NyYy9ib3gvbHVhL3NjaGVtYS5sdWEKPj4gPkBAIC0xMDAwLDggKzEw MDAsMzEgQEAgbG9jYWwgaW5kZXhfb3B0aW9ucyA9IHsKPj4gPsKgwqDCoMKgwqBwYWdlX3NpemUg PSAnbnVtYmVyJywKPj4gPsKgwqDCoMKgwqBibG9vbV9mcHIgPSAnbnVtYmVyJywKPj4gPsKgwqDC oMKgwqBmdW5jID0gJ251bWJlciwgc3RyaW5nJywKPj4gPisgaGludCA9ICdib29sZWFuJywKPj4g PsKgfQo+PiA+wqAKPj4gPitsb2NhbCBmdW5jdGlvbiBqc29ucGF0aHNfZnJvbV9pZHhfcGFydHMo cGFydHMpCj4+ID4rIGxvY2FsIHBhdGhzID0ge30KPj4gPisKPj4gPisgZm9yIF8sIHBhcnQgaW4g cGFpcnMocGFydHMpIGRvCj4+ID4rIGlmIHR5cGUocGFydC5wYXRoKSA9PSAnc3RyaW5nJyB0aGVu Cj4+ID4rIHRhYmxlLmluc2VydChwYXRocywgcGFydC5wYXRoKQo+PiA+KyBlbmQKPj4gPisgZW5k Cj4+ID4rCj4+ID4rIHJldHVybiBwYXRocwo+PiA+K2VuZAo+PiA+Kwo+PiA+K2xvY2FsIGZ1bmN0 aW9uIGlzX211bHRpa2V5X2luZGV4KHBhcnRzKQo+PiA+KyBmb3IgXywgcGF0aCBpbiBwYWlycyhq c29ucGF0aHNfZnJvbV9pZHhfcGFydHMocGFydHMpKSBkbwo+PiA+KyBpZiBwYXRoOmZpbmQoJ1sq XScsIDEsIHRydWUpIHRoZW4KPj4gPisgcmV0dXJuIHRydWUKPj4gPisgZW5kCj4+ID4rIGVuZAo+ PiA+Kwo+PiA+KyByZXR1cm4gZmFsc2UKPj4gPitlbmQKPj4gPisKPj4gPsKgLS0KPj4gPsKgLS0g Y2hlY2tfcGFyYW1fdGFibGUoKSB0ZW1wbGF0ZSBmb3IgYWx0ZXIgaW5kZXgsCj4+ID7CoC0tIGlu Y2x1ZGVzIGFsbCBpbmRleCBvcHRpb25zLgo+PiA+QEAgLTEwNzYsNiArMTA5OSwxNSBAQCBib3gu c2NoZW1hLmluZGV4LmNyZWF0ZSA9IGZ1bmN0aW9uKHNwYWNlX2lkLCBuYW1lLCBvcHRpb25zKQo+ PiA+wqDCoMKgwqDCoMKgwqDCoMKgb3B0aW9uc19kZWZhdWx0cyA9IHt9Cj4+ID7CoMKgwqDCoMKg ZW5kCj4+ID7CoMKgwqDCoMKgb3B0aW9ucyA9IHVwZGF0ZV9wYXJhbV90YWJsZShvcHRpb25zLCBv cHRpb25zX2RlZmF1bHRzKQo+PiA+KyBpZiBvcHRpb25zLmhpbnQgYW5kCj4+ID4rIChvcHRpb25z LnR5cGUgfj0gJ3RyZWUnIG9yIGJveC5zcGFjZVtzcGFjZV9pZF0uZW5naW5lIH49ICdtZW10eCcp IHRoZW4KPj4gPisgYm94LmVycm9yKGJveC5lcnJvci5NT0RJRllfSU5ERVgsIG5hbWUsIHNwYWNl Lm5hbWUsCj4+ID4rICJoaW50IGlzIG9ubHkgcmVhc29uYWJsZSB3aXRoIG1lbXR4IHRyZWUgaW5k ZXgiKQo+PiA+KyBlbmQKPj4gPisgaWYgb3B0aW9ucy5oaW50IGFuZCBvcHRpb25zLmZ1bmMgdGhl bgo+PiA+KyBib3guZXJyb3IoYm94LmVycm9yLk1PRElGWV9JTkRFWCwgbmFtZSwgc3BhY2UubmFt ZSwKPj4gPisgImZ1bmN0aW9uYWwgaW5kZXggY2FuJ3QgdXNlIGhpbnRzIikKPj4gPisgZW5kCj4+ ID7CoAo+PiA+wqDCoMKgwqDCoGxvY2FsIF9pbmRleCA9IGJveC5zcGFjZVtib3guc2NoZW1hLklO REVYX0lEXQo+PiA+wqDCoMKgwqDCoGxvY2FsIF92aW5kZXggPSBib3guc3BhY2VbYm94LnNjaGVt YS5WSU5ERVhfSURdCj4+ID5AQCAtMTExNSw2ICsxMTQ3LDcgQEAgYm94LnNjaGVtYS5pbmRleC5j cmVhdGUgPSBmdW5jdGlvbihzcGFjZV9pZCwgbmFtZSwgb3B0aW9ucykKPj4gPsKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgcnVuX3NpemVfcmF0aW8gPSBvcHRpb25zLnJ1bl9zaXplX3JhdGlvLAo+ PiA+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBibG9vbV9mcHIgPSBvcHRpb25zLmJsb29tX2Zw ciwKPj4gPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZnVuYyA9IG9wdGlvbnMuZnVuYywKPj4g PisgaGludCA9IG9wdGlvbnMuaGludCwKPj4gPsKgwqDCoMKgwqB9Cj4+ID7CoMKgwqDCoMKgbG9j YWwgZmllbGRfdHlwZV9hbGlhc2VzID0gewo+PiA+wqDCoMKgwqDCoMKgwqDCoMKgbnVtID0gJ3Vu c2lnbmVkJzsgLS0gRGVwcmVjYXRlZCBzaW5jZSAxLjcuMgo+PiA+QEAgLTExMzUsNiArMTE2OCwx MCBAQCBib3guc2NoZW1hLmluZGV4LmNyZWF0ZSA9IGZ1bmN0aW9uKHNwYWNlX2lkLCBuYW1lLCBv cHRpb25zKQo+PiA+wqDCoMKgwqDCoGlmIHBhcnRzX2Nhbl9iZV9zaW1wbGlmaWVkIHRoZW4KPj4g PsKgwqDCoMKgwqDCoMKgwqDCoHBhcnRzID0gc2ltcGxpZnlfaW5kZXhfcGFydHMocGFydHMpCj4+ ID7CoMKgwqDCoMKgZW5kCj4+ID4rIGlmIG9wdGlvbnMuaGludCBhbmQgaXNfbXVsdGlrZXlfaW5k ZXgocGFydHMpIHRoZW4KPj4gPisgYm94LmVycm9yKGJveC5lcnJvci5NT0RJRllfSU5ERVgsIG5h bWUsIHNwYWNlLm5hbWUsCj4+ID4rICJtdWx0aWtleSBpbmRleCBjYW4ndCB1c2UgaGludHMiKQo+ PiA+KyBlbmQKPj4gPsKgwqDCoMKgwqBpZiBpbmRleF9vcHRzLmZ1bmMgfj0gbmlsIGFuZCB0eXBl KGluZGV4X29wdHMuZnVuYykgPT0gJ3N0cmluZycgdGhlbgo+PiA+wqDCoMKgwqDCoMKgwqDCoMKg aW5kZXhfb3B0cy5mdW5jID0gZnVuY19pZF9ieV9uYW1lKGluZGV4X29wdHMuZnVuYykKPj4gPsKg wqDCoMKgwqBlbmQKPj4gPkBAIC0xMjUzLDYgKzEyOTAsMTcgQEAgYm94LnNjaGVtYS5pbmRleC5h bHRlciA9IGZ1bmN0aW9uKHNwYWNlX2lkLCBpbmRleF9pZCwgb3B0aW9ucykKPj4gPsKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgaW5kZXhfb3B0c1trXSA9IG9wdGlvbnNba10KPj4gPsKgwqDCoMKg wqDCoMKgwqDCoGVuZAo+PiA+wqDCoMKgwqDCoGVuZAo+PiA+KyBpZiBvcHRpb25zLmhpbnQgYW5k Cj4+ID4rIChvcHRpb25zLnR5cGUgfj0gJ3RyZWUnIG9yIGJveC5zcGFjZVtzcGFjZV9pZF0uZW5n aW5lIH49ICdtZW10eCcpIHRoZW4KPj4gPisgYm94LmVycm9yKGJveC5lcnJvci5NT0RJRllfSU5E RVgsIHNwYWNlLmluZGV4W2luZGV4X2lkXS5uYW1lLAo+PiA+KyBzcGFjZS5uYW1lLAo+PiA+KyAi aGludCBpcyBvbmx5IHJlYXNvbmFibGUgd2l0aCBtZW10eCB0cmVlIGluZGV4IikKPj4gPisgZW5k Cj4+ID4rIGlmIG9wdGlvbnMuaGludCBhbmQgb3B0aW9ucy5mdW5jIHRoZW4KPj4gPisgYm94LmVy cm9yKGJveC5lcnJvci5NT0RJRllfSU5ERVgsIHNwYWNlLmluZGV4W2luZGV4X2lkXS5uYW1lLAo+ PiA+KyBzcGFjZS5uYW1lLAo+PiA+KyAiZnVuY3Rpb25hbCBpbmRleCBjYW4ndCB1c2UgaGludHMi KQo+PiA+KyBlbmQKPj4gPsKgwqDCoMKgwqBpZiBvcHRpb25zLnBhcnRzIHRoZW4KPj4gPsKgwqDC oMKgwqDCoMKgwqDCoGxvY2FsIHBhcnRzX2Nhbl9iZV9zaW1wbGlmaWVkCj4+ID7CoMKgwqDCoMKg wqDCoMKgwqBwYXJ0cywgcGFydHNfY2FuX2JlX3NpbXBsaWZpZWQgPQo+PiA+QEAgLTEyNjIsNiAr MTMxMCwxMSBAQCBib3guc2NoZW1hLmluZGV4LmFsdGVyID0gZnVuY3Rpb24oc3BhY2VfaWQsIGlu ZGV4X2lkLCBvcHRpb25zKQo+PiA+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwYXJ0cyA9IHNp bXBsaWZ5X2luZGV4X3BhcnRzKHBhcnRzKQo+PiA+wqDCoMKgwqDCoMKgwqDCoMKgZW5kCj4+ID7C oMKgwqDCoMKgZW5kCj4+ID4rIGlmIG9wdGlvbnMuaGludCBhbmQgaXNfbXVsdGlrZXlfaW5kZXgo cGFydHMpIHRoZW4KPj4gPisgYm94LmVycm9yKGJveC5lcnJvci5NT0RJRllfSU5ERVgsIHNwYWNl LmluZGV4W2luZGV4X2lkXS5uYW1lLAo+PiA+KyBzcGFjZS5uYW1lLAo+PiA+KyAibXVsdGlrZXkg aW5kZXggY2FuJ3QgdXNlIGhpbnRzIikKPj4gPisgZW5kCj4+ID7CoMKgwqDCoMKgaWYgaW5kZXhf b3B0cy5mdW5jIH49IG5pbCBhbmQgdHlwZShpbmRleF9vcHRzLmZ1bmMpID09ICdzdHJpbmcnIHRo ZW4KPj4gPsKgwqDCoMKgwqDCoMKgwqDCoGluZGV4X29wdHMuZnVuYyA9IGZ1bmNfaWRfYnlfbmFt ZShpbmRleF9vcHRzLmZ1bmMpCj4+ID7CoMKgwqDCoMKgZW5kCj4+ID5kaWZmIC0tZ2l0IGEvc3Jj L2JveC9sdWEvc3BhY2UuY2MgYi9zcmMvYm94L2x1YS9zcGFjZS5jYwo+PiA+aW5kZXggMTc3YzU4 OC4uMWVhOTkzYyAxMDA2NDQKPj4gPi0tLSBhL3NyYy9ib3gvbHVhL3NwYWNlLmNjCj4+ID4rKysg Yi9zcmMvYm94L2x1YS9zcGFjZS5jYwo+PiA+QEAgLTM0NCw2ICszNDQsMTMgQEAgbGJveF9maWxs c3BhY2Uoc3RydWN0IGx1YV9TdGF0ZSAqTCwgc3RydWN0IHNwYWNlICpzcGFjZSwgaW50IGkpCj4+ ID7CoCBsdWFfcHVzaG51bWJlcihMLCBpbmRleF9vcHRzLT5kaW1lbnNpb24pOwo+PiA+wqAgbHVh X3NldGZpZWxkKEwsIC0yLCAiZGltZW5zaW9uIik7Cj4+ID7CoCB9Cj4+ID4rIGlmIChzcGFjZV9p c19tZW10eChzcGFjZSkgJiYgaW5kZXhfZGVmLT50eXBlID09IFRSRUUpIHsKPj4gPisgbHVhX3B1 c2hib29sZWFuKEwsIGluZGV4X29wdHMtPmhpbnQpOwo+PiA+KyBsdWFfc2V0ZmllbGQoTCwgLTIs ICJoaW50Iik7Cj4+ID4rIH0gZWxzZSB7Cj4+ID4rIGx1YV9wdXNobmlsKEwpOwo+PiA+KyBsdWFf c2V0ZmllbGQoTCwgLTIsICJoaW50Iik7Cj4+ID4rIH0KPj4gPsKgCj4+ID7CoCBpZiAoaW5kZXhf b3B0cy0+ZnVuY19pZCA+IDApIHsKPj4gPsKgIGx1YV9wdXNoc3RyaW5nKEwsICJmdW5jIik7Cj4+ ID5kaWZmIC0tZ2l0IGEvc3JjL2JveC9tZW10eF9lbmdpbmUuYyBiL3NyYy9ib3gvbWVtdHhfZW5n aW5lLmMKPj4gPmluZGV4ICA4MTQ3NTU3IC4uNDMwMDBiYSAxMDA2NDQKPj4gPi0tLSBhL3NyYy9i b3gvbWVtdHhfZW5naW5lLmMKPj4gPisrKyBiL3NyYy9ib3gvbWVtdHhfZW5naW5lLmMKPj4gPkBA IC0xMzk4LDYgKzEzOTgsOCBAQCBtZW10eF9pbmRleF9kZWZfY2hhbmdlX3JlcXVpcmVzX3JlYnVp bGQoc3RydWN0IGluZGV4ICppbmRleCwKPj4gPsKgIHJldHVybiB0cnVlOwo+PiA+wqAgaWYgKG9s ZF9kZWYtPm9wdHMuZnVuY19pZCAhPSBuZXdfZGVmLT5vcHRzLmZ1bmNfaWQpCj4+ID7CoCByZXR1 cm4gdHJ1ZTsKPj4gPisgaWYgKG9sZF9kZWYtPm9wdHMuaGludCAhPSBuZXdfZGVmLT5vcHRzLmhp bnQpCj4+ID4rIHJldHVybiB0cnVlOwo+PiA+wqAKPj4gPsKgIGNvbnN0IHN0cnVjdCBrZXlfZGVm ICpvbGRfY21wX2RlZiwgKm5ld19jbXBfZGVmOwo+PiA+wqAgaWYgKGluZGV4X2RlcGVuZHNfb25f cGsoaW5kZXgpKSB7Cj4+ID5kaWZmIC0tZ2l0IGEvc3JjL2JveC9tZW10eF90cmVlLmNjIGIvc3Jj L2JveC9tZW10eF90cmVlLmNjCj4+ID5pbmRleCBkM2I5OTNiLi4xN2Q1OGM1IDEwMDY0NAo+PiA+ LS0tIGEvc3JjL2JveC9tZW10eF90cmVlLmNjCj4+ID4rKysgYi9zcmMvYm94L21lbXR4X3RyZWUu Y2MKPj4gPkBAIC00NSwyMyArNDUsNTEgQEAKPj4gPsKgLyoqCj4+ID7CoMKgKiBTdHJ1Y3QgdGhh dCBpcyB1c2VkIGFzIGEga2V5IGluIEJQUyB0cmVlIGRlZmluaXRpb24uCj4+ID7CoMKgKi8KPj4g Pi1zdHJ1Y3QgbWVtdHhfdHJlZV9rZXlfZGF0YSB7Cj4+ID4rc3RydWN0IG1lbXR4X3RyZWVfa2V5 X2RhdGFfY29tbW9uIHsKPj4gPsKgIC8qKiBTZXF1ZW5jZSBvZiBtc2dwYWNrZWQgc2VhcmNoIGZp ZWxkcy4gKi8KPj4gPsKgIGNvbnN0IGNoYXIgKmtleTsKPj4gPsKgIC8qKiBOdW1iZXIgb2YgbXNn cGFja2VkIHNlYXJjaCBmaWVsZHMuICovCj4+ID7CoCB1aW50MzJfdCBwYXJ0X2NvdW50Owo+PiA+ K307Cj4+ID4rCj4+ID4rdGVtcGxhdGUgPGludCBVU0VfSElOVD4KPj4gPitzdHJ1Y3QgbWVtdHhf dHJlZV9rZXlfZGF0YTsKPj4gPisKPj4gPit0ZW1wbGF0ZSA8Pgo+PiA+K3N0cnVjdCBtZW10eF90 cmVlX2tleV9kYXRhPDA+IDogbWVtdHhfdHJlZV9rZXlfZGF0YV9jb21tb24gewo+PiA+KyBzdGF0 aWMgY29uc3RleHByIGhpbnRfdCBoaW50ID0gSElOVF9OT05FOwo+PiA+KyB2b2lkIHNldF9oaW50 KGhpbnRfdCkgeyBhc3NlcnQoZmFsc2UpOyB9Cj4+ID4rfTsKPj4gPisKPj4gPit0ZW1wbGF0ZSA8 Pgo+PiA+K3N0cnVjdCBtZW10eF90cmVlX2tleV9kYXRhPDE+IDogbWVtdHhfdHJlZV9rZXlfZGF0 YV9jb21tb24gewo+PiA+wqAgLyoqIENvbXBhcmlzb24gaGludCwgc2VlIHR1cGxlX2hpbnQoKS4g Ki8KPj4gPsKgIGhpbnRfdCBoaW50Owo+PiA+KyB2b2lkIHNldF9oaW50KGhpbnRfdCBoKSB7IGhp bnQgPSBoOyB9Cj4+ID7CoH07Cj4+ID7CoAo+PiA+wqAvKioKPj4gPsKgwqAqIFN0cnVjdCB0aGF0 IGlzIHVzZWQgYXMgYSBlbGVtIGluIEJQUyB0cmVlIGRlZmluaXRpb24uCj4+ID7CoMKgKi8KPj4g Pi1zdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhIHsKPj4gPitzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhX2Nv bW1vbiB7Cj4+ID7CoCAvKiBUdXBsZSB0aGF0IHRoaXMgbm9kZSBpcyByZXByZXNlbnRzLiAqLwo+ PiA+wqAgc3RydWN0IHR1cGxlICp0dXBsZTsKPj4gPit9Owo+PiA+Kwo+PiA+K3RlbXBsYXRlIDxp bnQgVVNFX0hJTlQ+Cj4+ID4rc3RydWN0IG1lbXR4X3RyZWVfZGF0YTsKPj4gPisKPj4gPit0ZW1w bGF0ZSA8Pgo+PiA+K3N0cnVjdCBtZW10eF90cmVlX2RhdGE8MD4gOiBtZW10eF90cmVlX2RhdGFf Y29tbW9uIHsKPj4gPisgc3RhdGljIGNvbnN0ZXhwciBoaW50X3QgaGludCA9IEhJTlRfTk9ORTsK Pj4gPisgdm9pZCBzZXRfaGludChoaW50X3QpIHsgYXNzZXJ0KGZhbHNlKTsgfQo+PiA+K307Cj4+ ID4rCj4+ID4rdGVtcGxhdGUgPD4KPj4gPitzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhPDE+IDogbWVt dHhfdHJlZV9kYXRhPDA+IHsKPj4gPsKgIC8qKiBDb21wYXJpc29uIGhpbnQsIHNlZSBrZXlfaGlu dCgpLiAqLwo+PiA+wqAgaGludF90IGhpbnQ7Cj4+ID4rIHZvaWQgc2V0X2hpbnQoaGludF90IGgp IHsgaGludCA9IGg7IH0KPj4gPsKgfTsKPj4gPsKgCj4+ID7CoC8qKgo+PiA+QEAgLTczLDggKzEw MSw4IEBAIHN0cnVjdCBtZW10eF90cmVlX2RhdGEgewo+PiA+wqDCoCogQHJldHZhbCBmYWxzZSAt IE90aGVyd2lzZS4KPj4gPsKgwqAqLwo+PiA+wqBzdGF0aWMgYm9vbAo+PiA+LW1lbXR4X3RyZWVf ZGF0YV9pc19lcXVhbChjb25zdCBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhICphLAo+PiA+LSBjb25z dCBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhICpiKQo+PiA+K21lbXR4X3RyZWVfZGF0YV9pc19lcXVh bChjb25zdCBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhX2NvbW1vbiAqYSwKPj4gPisgY29uc3Qgc3Ry dWN0IG1lbXR4X3RyZWVfZGF0YV9jb21tb24gKmIpCj4+ID7CoHsKPj4gPsKgIHJldHVybiBhLT50 dXBsZSA9PSBiLT50dXBsZTsKPj4gPsKgfQo+PiA+QEAgLTg5LDEyICsxMTcsMjggQEAgbWVtdHhf dHJlZV9kYXRhX2lzX2VxdWFsKGNvbnN0IHN0cnVjdCBtZW10eF90cmVlX2RhdGEgKmEsCj4+ID7C oCAoYiktPnBhcnRfY291bnQsIChiKS0+aGludCwgYXJnKQo+PiA+wqAjZGVmaW5lIEJQU19UUkVF X0lTX0lERU5USUNBTChhLCBiKSBtZW10eF90cmVlX2RhdGFfaXNfZXF1YWwoJmEsICZiKQo+PiA+ wqAjZGVmaW5lIEJQU19UUkVFX05PX0RFQlVHIDEKPj4gPi0jZGVmaW5lIGJwc190cmVlX2VsZW1f dCBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhCj4+ID4tI2RlZmluZSBicHNfdHJlZV9rZXlfdCBzdHJ1 Y3QgbWVtdHhfdHJlZV9rZXlfZGF0YSAqCj4+ID7CoCNkZWZpbmUgYnBzX3RyZWVfYXJnX3Qgc3Ry dWN0IGtleV9kZWYgKgo+PiA+wqAKPj4gPisjZGVmaW5lIEJQU19UUkVFX05BTUVTUEFDRSBOU19O T19ISU5UCj4+ID4rI2RlZmluZSBicHNfdHJlZV9lbGVtX3Qgc3RydWN0IG1lbXR4X3RyZWVfZGF0 YTwwPgo+PiA+KyNkZWZpbmUgYnBzX3RyZWVfa2V5X3Qgc3RydWN0IG1lbXR4X3RyZWVfa2V5X2Rh dGE8MD4gKgo+PiA+Kwo+PiA+wqAjaW5jbHVkZSAic2FsYWQvYnBzX3RyZWUuaCIKPj4gPsKgCj4+ ID4rI3VuZGVmIEJQU19UUkVFX05BTUVTUEFDRQo+PiA+KyN1bmRlZiBicHNfdHJlZV9lbGVtX3QK Pj4gPisjdW5kZWYgYnBzX3RyZWVfa2V5X3QKPj4gPisKPj4gPisjZGVmaW5lIEJQU19UUkVFX05B TUVTUEFDRSBOU19VU0VfSElOVAo+PiA+KyNkZWZpbmUgYnBzX3RyZWVfZWxlbV90IHN0cnVjdCBt ZW10eF90cmVlX2RhdGE8MT4KPj4gPisjZGVmaW5lIGJwc190cmVlX2tleV90IHN0cnVjdCBtZW10 eF90cmVlX2tleV9kYXRhPDE+ICoKPj4gPisKPj4gPisjaW5jbHVkZSAic2FsYWQvYnBzX3RyZWUu aCIKPj4gPisKPj4gPisjdW5kZWYgQlBTX1RSRUVfTkFNRVNQQUNFCj4+ID4rI3VuZGVmIGJwc190 cmVlX2VsZW1fdAo+PiA+KyN1bmRlZiBicHNfdHJlZV9rZXlfdAo+PiA+Kwo+PiA+wqAjdW5kZWYg QlBTX1RSRUVfTkFNRQo+PiA+wqAjdW5kZWYgQlBTX1RSRUVfQkxPQ0tfU0laRQo+PiA+wqAjdW5k ZWYgQlBTX1RSRUVfRVhURU5UX1NJWkUKPj4gPkBAIC0xMDIsNjYgKzE0NiwxMTkgQEAgbWVtdHhf dHJlZV9kYXRhX2lzX2VxdWFsKGNvbnN0IHN0cnVjdCBtZW10eF90cmVlX2RhdGEgKmEsCj4+ID7C oCN1bmRlZiBCUFNfVFJFRV9DT01QQVJFX0tFWQo+PiA+wqAjdW5kZWYgQlBTX1RSRUVfSVNfSURF TlRJQ0FMCj4+ID7CoCN1bmRlZiBCUFNfVFJFRV9OT19ERUJVRwo+PiA+LSN1bmRlZiBicHNfdHJl ZV9lbGVtX3QKPj4gPi0jdW5kZWYgYnBzX3RyZWVfa2V5X3QKPj4gPsKgI3VuZGVmIGJwc190cmVl X2FyZ190Cj4+ID7CoAo+PiA+K3VzaW5nIG5hbWVzcGFjZSBOU19OT19ISU5UOwo+PiA+K3VzaW5n IG5hbWVzcGFjZSBOU19VU0VfSElOVDsKPj4gPisKPj4gPit0ZW1wbGF0ZSA8aW50IFVTRV9ISU5U Pgo+PiA+K3N0cnVjdCBtZW10eF90cmVlX3NlbGVjdG9yOwo+PiA+Kwo+PiA+K3RlbXBsYXRlIDw+ Cj4+ID4rc3RydWN0IG1lbXR4X3RyZWVfc2VsZWN0b3I8MD4gOiBOU19OT19ISU5UOjptZW10eF90 cmVlIHt9Owo+PiA+Kwo+PiA+K3RlbXBsYXRlIDw+Cj4+ID4rc3RydWN0IG1lbXR4X3RyZWVfc2Vs ZWN0b3I8MT4gOiBOU19VU0VfSElOVDo6bWVtdHhfdHJlZSB7fTsKPj4gPisKPj4gPit0ZW1wbGF0 ZSA8aW50IFVTRV9ISU5UPgo+PiA+K3VzaW5nIG1lbXR4X3RyZWVfdCA9IHN0cnVjdCBtZW10eF90 cmVlX3NlbGVjdG9yPFVTRV9ISU5UPjsKPj4gPisKPj4gPit0ZW1wbGF0ZSA8aW50IFVTRV9ISU5U Pgo+PiA+K3N0cnVjdCBtZW10eF90cmVlX2l0ZXJhdG9yX3NlbGVjdG9yOwo+PiA+Kwo+PiA+K3Rl bXBsYXRlIDw+Cj4+ID4rc3RydWN0IG1lbXR4X3RyZWVfaXRlcmF0b3Jfc2VsZWN0b3I8MD4gewo+ PiA+KyB1c2luZyB0eXBlID0gTlNfTk9fSElOVDo6bWVtdHhfdHJlZV9pdGVyYXRvcjsKPj4gPit9 Owo+PiA+Kwo+PiA+K3RlbXBsYXRlIDw+Cj4+ID4rc3RydWN0IG1lbXR4X3RyZWVfaXRlcmF0b3Jf c2VsZWN0b3I8MT4gewo+PiA+KyB1c2luZyB0eXBlID0gTlNfVVNFX0hJTlQ6Om1lbXR4X3RyZWVf aXRlcmF0b3I7Cj4+ID4rfTsKPj4gPisKPj4gPit0ZW1wbGF0ZSA8aW50IFVTRV9ISU5UPgo+PiA+ K3VzaW5nIG1lbXR4X3RyZWVfaXRlcmF0b3JfdCA9IHR5cGVuYW1lIG1lbXR4X3RyZWVfaXRlcmF0 b3Jfc2VsZWN0b3I8VVNFX0hJTlQ+Ojp0eXBlOwo+PiA+Kwo+PiA+K3N0YXRpYyB2b2lkCj4+ID4r aW52YWxpZGF0ZV90cmVlX2l0ZXJhdG9yKE5TX05PX0hJTlQ6Om1lbXR4X3RyZWVfaXRlcmF0b3Ig Kml0cikKPj4gPit7Cj4+ID4rICppdHIgPSBOU19OT19ISU5UOjptZW10eF90cmVlX2ludmFsaWRf aXRlcmF0b3IoKTsKPj4gPit9Cj4+ID4rCj4+ID4rc3RhdGljIHZvaWQKPj4gPitpbnZhbGlkYXRl X3RyZWVfaXRlcmF0b3IoTlNfVVNFX0hJTlQ6Om1lbXR4X3RyZWVfaXRlcmF0b3IgKml0cikKPj4g Pit7Cj4+ID4rICppdHIgPSBOU19VU0VfSElOVDo6bWVtdHhfdHJlZV9pbnZhbGlkX2l0ZXJhdG9y KCk7Cj4+ID4rfQo+PiA+Kwo+PiA+K3RlbXBsYXRlIDxpbnQgVVNFX0hJTlQ+Cj4+ID7CoHN0cnVj dCBtZW10eF90cmVlX2luZGV4IHsKPj4gPsKgIHN0cnVjdCBpbmRleCBiYXNlOwo+PiA+LSBzdHJ1 Y3QgbWVtdHhfdHJlZSB0cmVlOwo+PiA+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhICpidWlsZF9h cnJheTsKPj4gPisgbWVtdHhfdHJlZV90PFVTRV9ISU5UPiB0cmVlOwo+PiA+KyBzdHJ1Y3QgbWVt dHhfdHJlZV9kYXRhPFVTRV9ISU5UPiAqYnVpbGRfYXJyYXk7Cj4+ID7CoCBzaXplX3QgYnVpbGRf YXJyYXlfc2l6ZSwgYnVpbGRfYXJyYXlfYWxsb2Nfc2l6ZTsKPj4gPsKgIHN0cnVjdCBtZW10eF9n Y190YXNrIGdjX3Rhc2s7Cj4+ID4tIHN0cnVjdCBtZW10eF90cmVlX2l0ZXJhdG9yIGdjX2l0ZXJh dG9yOwo+PiA+KyBtZW10eF90cmVlX2l0ZXJhdG9yX3Q8VVNFX0hJTlQ+IGdjX2l0ZXJhdG9yOwo+ PiA+wqB9Owo+PiA+wqAKPj4gPsKgLyoge3t7IFV0aWxpdGllcy4gKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KPj4gPsKgCj4+ID4rdGVtcGxhdGUgPGNs YXNzIFRSRUU+Cj4+ID7CoHN0YXRpYyBpbmxpbmUgc3RydWN0IGtleV9kZWYgKgo+PiA+LW1lbXR4 X3RyZWVfY21wX2RlZihzdHJ1Y3QgbWVtdHhfdHJlZSAqdHJlZSkKPj4gPittZW10eF90cmVlX2Nt cF9kZWYoVFJFRSAqdHJlZSkKPj4gPsKgewo+PiA+wqAgcmV0dXJuIHRyZWUtPmFyZzsKPj4gPsKg fQo+PiA+wqAKPj4gPit0ZW1wbGF0ZSA8aW50IFVTRV9ISU5UPgo+PiA+wqBzdGF0aWMgaW50Cj4+ ID7CoG1lbXR4X3RyZWVfcWNvbXBhcmUoY29uc3Qgdm9pZCogYSwgY29uc3Qgdm9pZCAqYiwgdm9p ZCAqYykKPj4gPsKgewo+PiA+LSBjb25zdCBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhICpkYXRhX2Eg PSAoc3RydWN0IG1lbXR4X3RyZWVfZGF0YSAqKWE7Cj4+ID4tIGNvbnN0IHN0cnVjdCBtZW10eF90 cmVlX2RhdGEgKmRhdGFfYiA9IChzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhICopYjsKPj4gPisgY29u c3Qgc3RydWN0IG1lbXR4X3RyZWVfZGF0YTxVU0VfSElOVD4gKmRhdGFfYSA9Cj4+ID4rIChzdHJ1 Y3QgbWVtdHhfdHJlZV9kYXRhPFVTRV9ISU5UPiAqKWE7Cj4+ID4rIGNvbnN0IHN0cnVjdCBtZW10 eF90cmVlX2RhdGE8VVNFX0hJTlQ+ICpkYXRhX2IgPQo+PiA+KyAoc3RydWN0IG1lbXR4X3RyZWVf ZGF0YTxVU0VfSElOVD4gKiliOwo+PiA+wqAgc3RydWN0IGtleV9kZWYgKmtleV9kZWYgPSAoc3Ry dWN0IGtleV9kZWYgKiljOwo+PiA+wqAgcmV0dXJuIHR1cGxlX2NvbXBhcmUoZGF0YV9hLT50dXBs ZSwgZGF0YV9hLT5oaW50LCBkYXRhX2ItPnR1cGxlLAo+PiA+wqAgZGF0YV9iLT5oaW50LCBrZXlf ZGVmKTsKPj4gPsKgfQo+PiA+wqAKPj4gPsKgLyoge3t7IE1lbXR4VHJlZSBJdGVyYXRvcnMgKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KPj4gPit0ZW1wbGF0ZSA8aW50 IFVTRV9ISU5UPgo+PiA+wqBzdHJ1Y3QgdHJlZV9pdGVyYXRvciB7Cj4+ID7CoCBzdHJ1Y3QgaXRl cmF0b3IgYmFzZTsKPj4gPi0gc3RydWN0IG1lbXR4X3RyZWVfaXRlcmF0b3IgdHJlZV9pdGVyYXRv cjsKPj4gPisgbWVtdHhfdHJlZV9pdGVyYXRvcl90PFVTRV9ISU5UPiB0cmVlX2l0ZXJhdG9yOwo+ PiA+wqAgZW51bSBpdGVyYXRvcl90eXBlIHR5cGU7Cj4+ID4tIHN0cnVjdCBtZW10eF90cmVlX2tl eV9kYXRhIGtleV9kYXRhOwo+PiA+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhIGN1cnJlbnQ7Cj4+ ID4rIHN0cnVjdCBtZW10eF90cmVlX2tleV9kYXRhPFVTRV9ISU5UPiBrZXlfZGF0YTsKPj4gPisg c3RydWN0IG1lbXR4X3RyZWVfZGF0YTxVU0VfSElOVD4gY3VycmVudDsKPj4gPsKgIC8qKiBNZW1v cnkgcG9vbCB0aGUgaXRlcmF0b3Igd2FzIGFsbG9jYXRlZCBmcm9tLiAqLwo+PiA+wqAgc3RydWN0 IG1lbXBvb2wgKnBvb2w7Cj4+ID7CoH07Cj4+ID7CoAo+PiA+LXN0YXRpY19hc3NlcnQoc2l6ZW9m KHN0cnVjdCB0cmVlX2l0ZXJhdG9yKSA8PSBNRU1UWF9JVEVSQVRPUl9TSVpFLAo+PiA+LSAic2l6 ZW9mKHN0cnVjdCB0cmVlX2l0ZXJhdG9yKSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCAiCj4+ ID4rc3RhdGljX2Fzc2VydChzaXplb2Yoc3RydWN0IHRyZWVfaXRlcmF0b3I8MD4pIDw9IE1FTVRY X0lURVJBVE9SX1NJWkUsCj4+ID4rICJzaXplb2Yoc3RydWN0IHRyZWVfaXRlcmF0b3I8MD4pIG11 c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsICIKPj4gPisgInRvIE1FTVRYX0lURVJBVE9SX1NJWkUi KTsKPj4gPitzdGF0aWNfYXNzZXJ0KHNpemVvZihzdHJ1Y3QgdHJlZV9pdGVyYXRvcjwxPikgPD0g TUVNVFhfSVRFUkFUT1JfU0laRSwKPj4gPisgInNpemVvZihzdHJ1Y3QgdHJlZV9pdGVyYXRvcjwx PikgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgIgo+PiA+wqAgInRvIE1FTVRYX0lURVJBVE9S X1NJWkUiKTsKPj4gPsKgCj4+ID4rdGVtcGxhdGUgPGludCBVU0VfSElOVD4KPj4gPsKgc3RhdGlj IHZvaWQKPj4gPsKgdHJlZV9pdGVyYXRvcl9mcmVlKHN0cnVjdCBpdGVyYXRvciAqaXRlcmF0b3Ip Owo+PiA+wqAKPj4gPi1zdGF0aWMgaW5saW5lIHN0cnVjdCB0cmVlX2l0ZXJhdG9yICoKPj4gPi10 cmVlX2l0ZXJhdG9yKHN0cnVjdCBpdGVyYXRvciAqaXQpCj4+ID4rdGVtcGxhdGUgPGludCBVU0Vf SElOVD4KPj4gPitzdGF0aWMgaW5saW5lIHN0cnVjdCB0cmVlX2l0ZXJhdG9yPFVTRV9ISU5UPiAq Cj4+ID4rZ2V0X3RyZWVfaXRlcmF0b3Ioc3RydWN0IGl0ZXJhdG9yICppdCkKPj4gPsKgewo+PiA+ LSBhc3NlcnQoaXQtPmZyZWUgPT0gdHJlZV9pdGVyYXRvcl9mcmVlKTsKPj4gPi0gcmV0dXJuIChz dHJ1Y3QgdHJlZV9pdGVyYXRvciAqKSBpdDsKPj4gPisgYXNzZXJ0KGl0LT5mcmVlID09ICZ0cmVl X2l0ZXJhdG9yX2ZyZWU8VVNFX0hJTlQ+KTsKPj4gPisgcmV0dXJuIChzdHJ1Y3QgdHJlZV9pdGVy YXRvcjxVU0VfSElOVD4gKikgaXQ7Cj4+ID7CoH0KPj4gPsKgCj4+ID4rdGVtcGxhdGUgPGludCBV U0VfSElOVD4KPj4gPsKgc3RhdGljIHZvaWQKPj4gPsKgdHJlZV9pdGVyYXRvcl9mcmVlKHN0cnVj dCBpdGVyYXRvciAqaXRlcmF0b3IpCj4+ID7CoHsKPj4gPi0gc3RydWN0IHRyZWVfaXRlcmF0b3Ig Kml0ID0gdHJlZV9pdGVyYXRvcihpdGVyYXRvcik7Cj4+ID4rIHN0cnVjdCB0cmVlX2l0ZXJhdG9y PFVTRV9ISU5UPiAqaXQgPSBnZXRfdHJlZV9pdGVyYXRvcjxVU0VfSElOVD4oaXRlcmF0b3IpOwo+ PiA+wqAgc3RydWN0IHR1cGxlICp0dXBsZSA9IGl0LT5jdXJyZW50LnR1cGxlOwo+PiA+wqAgaWYg KHR1cGxlICE9IE5VTEwpCj4+ID7CoCB0dXBsZV91bnJlZih0dXBsZSk7Cj4+ID5AQCAtMTc2LDE0 ICsyNzMsMTUgQEAgdHJlZV9pdGVyYXRvcl9kdW1taWUoc3RydWN0IGl0ZXJhdG9yICppdGVyYXRv ciwgc3RydWN0IHR1cGxlICoqcmV0KQo+PiA+wqAgcmV0dXJuIDA7Cj4+ID7CoH0KPj4gPsKgCj4+ ID4rdGVtcGxhdGUgPGludCBVU0VfSElOVD4KPj4gPsKgc3RhdGljIGludAo+PiA+wqB0cmVlX2l0 ZXJhdG9yX25leHRfYmFzZShzdHJ1Y3QgaXRlcmF0b3IgKml0ZXJhdG9yLCBzdHJ1Y3QgdHVwbGUg KipyZXQpCj4+ID7CoHsKPj4gPi0gc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKmluZGV4ID0KPj4g Pi0gKHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICopaXRlcmF0b3ItPmluZGV4Owo+PiA+LSBzdHJ1 Y3QgdHJlZV9pdGVyYXRvciAqaXQgPSB0cmVlX2l0ZXJhdG9yKGl0ZXJhdG9yKTsKPj4gPisgc3Ry dWN0IG1lbXR4X3RyZWVfaW5kZXg8VVNFX0hJTlQ+ICppbmRleCA9Cj4+ID4rIChzdHJ1Y3QgbWVt dHhfdHJlZV9pbmRleDxVU0VfSElOVD4gKilpdGVyYXRvci0+aW5kZXg7Cj4+ID4rIHN0cnVjdCB0 cmVlX2l0ZXJhdG9yPFVTRV9ISU5UPiAqaXQgPSBnZXRfdHJlZV9pdGVyYXRvcjxVU0VfSElOVD4o aXRlcmF0b3IpOwo+PiA+wqAgYXNzZXJ0KGl0LT5jdXJyZW50LnR1cGxlICE9IE5VTEwpOwo+PiA+ LSBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhICpjaGVjayA9Cj4+ID4rIHN0cnVjdCBtZW10eF90cmVl X2RhdGE8VVNFX0hJTlQ+ICpjaGVjayA9Cj4+ID7CoCBtZW10eF90cmVlX2l0ZXJhdG9yX2dldF9l bGVtKCZpbmRleC0+dHJlZSwgJml0LT50cmVlX2l0ZXJhdG9yKTsKPj4gPsKgIGlmIChjaGVjayA9 PSBOVUxMIHx8ICFtZW10eF90cmVlX2RhdGFfaXNfZXF1YWwoY2hlY2ssICZpdC0+Y3VycmVudCkp IHsKPj4gPsKgIGl0LT50cmVlX2l0ZXJhdG9yID0gbWVtdHhfdHJlZV91cHBlcl9ib3VuZF9lbGVt KCZpbmRleC0+dHJlZSwKPj4gPkBAIC0xOTIsNyArMjkwLDcgQEAgdHJlZV9pdGVyYXRvcl9uZXh0 X2Jhc2Uoc3RydWN0IGl0ZXJhdG9yICppdGVyYXRvciwgc3RydWN0IHR1cGxlICoqcmV0KQo+PiA+ wqAgbWVtdHhfdHJlZV9pdGVyYXRvcl9uZXh0KCZpbmRleC0+dHJlZSwgJml0LT50cmVlX2l0ZXJh dG9yKTsKPj4gPsKgIH0KPj4gPsKgIHR1cGxlX3VucmVmKGl0LT5jdXJyZW50LnR1cGxlKTsKPj4g Pi0gc3RydWN0IG1lbXR4X3RyZWVfZGF0YSAqcmVzID0KPj4gPisgc3RydWN0IG1lbXR4X3RyZWVf ZGF0YTxVU0VfSElOVD4gKnJlcyA9Cj4+ID7CoCBtZW10eF90cmVlX2l0ZXJhdG9yX2dldF9lbGVt KCZpbmRleC0+dHJlZSwgJml0LT50cmVlX2l0ZXJhdG9yKTsKPj4gPsKgIGlmIChyZXMgPT0gTlVM TCkgewo+PiA+wqAgaXRlcmF0b3ItPm5leHQgPSB0cmVlX2l0ZXJhdG9yX2R1bW1pZTsKPj4gPkBA IC0yMDYsMTQgKzMwNCwxNSBAQCB0cmVlX2l0ZXJhdG9yX25leHRfYmFzZShzdHJ1Y3QgaXRlcmF0 b3IgKml0ZXJhdG9yLCBzdHJ1Y3QgdHVwbGUgKipyZXQpCj4+ID7CoCByZXR1cm4gMDsKPj4gPsKg fQo+PiA+wqAKPj4gPit0ZW1wbGF0ZSA8aW50IFVTRV9ISU5UPgo+PiA+wqBzdGF0aWMgaW50Cj4+ ID7CoHRyZWVfaXRlcmF0b3JfcHJldl9iYXNlKHN0cnVjdCBpdGVyYXRvciAqaXRlcmF0b3IsIHN0 cnVjdCB0dXBsZSAqKnJldCkKPj4gPsKgewo+PiA+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAq aW5kZXggPQo+PiA+LSAoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKilpdGVyYXRvci0+aW5kZXg7 Cj4+ID4tIHN0cnVjdCB0cmVlX2l0ZXJhdG9yICppdCA9IHRyZWVfaXRlcmF0b3IoaXRlcmF0b3Ip Owo+PiA+KyBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleDxVU0VfSElOVD4gKmluZGV4ID0KPj4gPisg KHN0cnVjdCBtZW10eF90cmVlX2luZGV4PFVTRV9ISU5UPiAqKWl0ZXJhdG9yLT5pbmRleDsKPj4g Pisgc3RydWN0IHRyZWVfaXRlcmF0b3I8VVNFX0hJTlQ+ICppdCA9IGdldF90cmVlX2l0ZXJhdG9y PFVTRV9ISU5UPihpdGVyYXRvcik7Cj4+ID7CoCBhc3NlcnQoaXQtPmN1cnJlbnQudHVwbGUgIT0g TlVMTCk7Cj4+ID4tIHN0cnVjdCBtZW10eF90cmVlX2RhdGEgKmNoZWNrID0KPj4gPisgc3RydWN0 IG1lbXR4X3RyZWVfZGF0YTxVU0VfSElOVD4gKmNoZWNrID0KPj4gPsKgIG1lbXR4X3RyZWVfaXRl cmF0b3JfZ2V0X2VsZW0oJmluZGV4LT50cmVlLCAmaXQtPnRyZWVfaXRlcmF0b3IpOwo+PiA+wqAg aWYgKGNoZWNrID09IE5VTEwgfHwgIW1lbXR4X3RyZWVfZGF0YV9pc19lcXVhbChjaGVjaywgJml0 LT5jdXJyZW50KSkgewo+PiA+wqAgaXQtPnRyZWVfaXRlcmF0b3IgPSBtZW10eF90cmVlX2xvd2Vy X2JvdW5kX2VsZW0oJmluZGV4LT50cmVlLAo+PiA+QEAgLTIyMSw3ICszMjAsNyBAQCB0cmVlX2l0 ZXJhdG9yX3ByZXZfYmFzZShzdHJ1Y3QgaXRlcmF0b3IgKml0ZXJhdG9yLCBzdHJ1Y3QgdHVwbGUg KipyZXQpCj4+ID7CoCB9Cj4+ID7CoCBtZW10eF90cmVlX2l0ZXJhdG9yX3ByZXYoJmluZGV4LT50 cmVlLCAmaXQtPnRyZWVfaXRlcmF0b3IpOwo+PiA+wqAgdHVwbGVfdW5yZWYoaXQtPmN1cnJlbnQu dHVwbGUpOwo+PiA+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhICpyZXMgPQo+PiA+KyBzdHJ1Y3Qg bWVtdHhfdHJlZV9kYXRhPFVTRV9ISU5UPiAqcmVzID0KPj4gPsKgIG1lbXR4X3RyZWVfaXRlcmF0 b3JfZ2V0X2VsZW0oJmluZGV4LT50cmVlLCAmaXQtPnRyZWVfaXRlcmF0b3IpOwo+PiA+wqAgaWYg KCFyZXMpIHsKPj4gPsKgIGl0ZXJhdG9yLT5uZXh0ID0gdHJlZV9pdGVyYXRvcl9kdW1taWU7Cj4+ ID5AQCAtMjM1LDE0ICszMzQsMTUgQEAgdHJlZV9pdGVyYXRvcl9wcmV2X2Jhc2Uoc3RydWN0IGl0 ZXJhdG9yICppdGVyYXRvciwgc3RydWN0IHR1cGxlICoqcmV0KQo+PiA+wqAgcmV0dXJuIDA7Cj4+ ID7CoH0KPj4gPsKgCj4+ID4rdGVtcGxhdGUgPGludCBVU0VfSElOVD4KPj4gPsKgc3RhdGljIGlu dAo+PiA+wqB0cmVlX2l0ZXJhdG9yX25leHRfZXF1YWxfYmFzZShzdHJ1Y3QgaXRlcmF0b3IgKml0 ZXJhdG9yLCBzdHJ1Y3QgdHVwbGUgKipyZXQpCj4+ID7CoHsKPj4gPi0gc3RydWN0IG1lbXR4X3Ry ZWVfaW5kZXggKmluZGV4ID0KPj4gPi0gKHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICopaXRlcmF0 b3ItPmluZGV4Owo+PiA+LSBzdHJ1Y3QgdHJlZV9pdGVyYXRvciAqaXQgPSB0cmVlX2l0ZXJhdG9y KGl0ZXJhdG9yKTsKPj4gPisgc3RydWN0IG1lbXR4X3RyZWVfaW5kZXg8VVNFX0hJTlQ+ICppbmRl eCA9Cj4+ID4rIChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleDxVU0VfSElOVD4gKilpdGVyYXRvci0+ aW5kZXg7Cj4+ID4rIHN0cnVjdCB0cmVlX2l0ZXJhdG9yPFVTRV9ISU5UPiAqaXQgPSBnZXRfdHJl ZV9pdGVyYXRvcjxVU0VfSElOVD4oaXRlcmF0b3IpOwo+PiA+wqAgYXNzZXJ0KGl0LT5jdXJyZW50 LnR1cGxlICE9IE5VTEwpOwo+PiA+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhICpjaGVjayA9Cj4+ ID4rIHN0cnVjdCBtZW10eF90cmVlX2RhdGE8VVNFX0hJTlQ+ICpjaGVjayA9Cj4+ID7CoCBtZW10 eF90cmVlX2l0ZXJhdG9yX2dldF9lbGVtKCZpbmRleC0+dHJlZSwgJml0LT50cmVlX2l0ZXJhdG9y KTsKPj4gPsKgIGlmIChjaGVjayA9PSBOVUxMIHx8ICFtZW10eF90cmVlX2RhdGFfaXNfZXF1YWwo Y2hlY2ssICZpdC0+Y3VycmVudCkpIHsKPj4gPsKgIGl0LT50cmVlX2l0ZXJhdG9yID0gbWVtdHhf dHJlZV91cHBlcl9ib3VuZF9lbGVtKCZpbmRleC0+dHJlZSwKPj4gPkBAIC0yNTEsNyArMzUxLDcg QEAgdHJlZV9pdGVyYXRvcl9uZXh0X2VxdWFsX2Jhc2Uoc3RydWN0IGl0ZXJhdG9yICppdGVyYXRv ciwgc3RydWN0IHR1cGxlICoqcmV0KQo+PiA+wqAgbWVtdHhfdHJlZV9pdGVyYXRvcl9uZXh0KCZp bmRleC0+dHJlZSwgJml0LT50cmVlX2l0ZXJhdG9yKTsKPj4gPsKgIH0KPj4gPsKgIHR1cGxlX3Vu cmVmKGl0LT5jdXJyZW50LnR1cGxlKTsKPj4gPi0gc3RydWN0IG1lbXR4X3RyZWVfZGF0YSAqcmVz ID0KPj4gPisgc3RydWN0IG1lbXR4X3RyZWVfZGF0YTxVU0VfSElOVD4gKnJlcyA9Cj4+ID7CoCBt ZW10eF90cmVlX2l0ZXJhdG9yX2dldF9lbGVtKCZpbmRleC0+dHJlZSwgJml0LT50cmVlX2l0ZXJh dG9yKTsKPj4gPsKgIC8qIFVzZSB1c2VyIGtleSBkZWYgdG8gc2F2ZSBhIGZldyBsb29wcy4gKi8K Pj4gPsKgIGlmIChyZXMgPT0gTlVMTCB8fAo+PiA+QEAgLTI3MSwxNCArMzcxLDE1IEBAIHRyZWVf aXRlcmF0b3JfbmV4dF9lcXVhbF9iYXNlKHN0cnVjdCBpdGVyYXRvciAqaXRlcmF0b3IsIHN0cnVj dCB0dXBsZSAqKnJldCkKPj4gPsKgIHJldHVybiAwOwo+PiA+wqB9Cj4+ID7CoAo+PiA+K3RlbXBs YXRlIDxpbnQgVVNFX0hJTlQ+Cj4+ID7CoHN0YXRpYyBpbnQKPj4gPsKgdHJlZV9pdGVyYXRvcl9w cmV2X2VxdWFsX2Jhc2Uoc3RydWN0IGl0ZXJhdG9yICppdGVyYXRvciwgc3RydWN0IHR1cGxlICoq cmV0KQo+PiA+wqB7Cj4+ID4tIHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICppbmRleCA9Cj4+ID4t IChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqKWl0ZXJhdG9yLT5pbmRleDsKPj4gPi0gc3RydWN0 IHRyZWVfaXRlcmF0b3IgKml0ID0gdHJlZV9pdGVyYXRvcihpdGVyYXRvcik7Cj4+ID4rIHN0cnVj dCBtZW10eF90cmVlX2luZGV4PFVTRV9ISU5UPiAqaW5kZXggPQo+PiA+KyAoc3RydWN0IG1lbXR4 X3RyZWVfaW5kZXg8VVNFX0hJTlQ+ICopaXRlcmF0b3ItPmluZGV4Owo+PiA+KyBzdHJ1Y3QgdHJl ZV9pdGVyYXRvcjxVU0VfSElOVD4gKml0ID0gZ2V0X3RyZWVfaXRlcmF0b3I8VVNFX0hJTlQ+KGl0 ZXJhdG9yKTsKPj4gPsKgIGFzc2VydChpdC0+Y3VycmVudC50dXBsZSAhPSBOVUxMKTsKPj4gPi0g c3RydWN0IG1lbXR4X3RyZWVfZGF0YSAqY2hlY2sgPQo+PiA+KyBzdHJ1Y3QgbWVtdHhfdHJlZV9k YXRhPFVTRV9ISU5UPiAqY2hlY2sgPQo+PiA+wqAgbWVtdHhfdHJlZV9pdGVyYXRvcl9nZXRfZWxl bSgmaW5kZXgtPnRyZWUsICZpdC0+dHJlZV9pdGVyYXRvcik7Cj4+ID7CoCBpZiAoY2hlY2sgPT0g TlVMTCB8fCAhbWVtdHhfdHJlZV9kYXRhX2lzX2VxdWFsKGNoZWNrLCAmaXQtPmN1cnJlbnQpKSB7 Cj4+ID7CoCBpdC0+dHJlZV9pdGVyYXRvciA9IG1lbXR4X3RyZWVfbG93ZXJfYm91bmRfZWxlbSgm aW5kZXgtPnRyZWUsCj4+ID5AQCAtMjg2LDcgKzM4Nyw3IEBAIHRyZWVfaXRlcmF0b3JfcHJldl9l cXVhbF9iYXNlKHN0cnVjdCBpdGVyYXRvciAqaXRlcmF0b3IsIHN0cnVjdCB0dXBsZSAqKnJldCkK Pj4gPsKgIH0KPj4gPsKgIG1lbXR4X3RyZWVfaXRlcmF0b3JfcHJldigmaW5kZXgtPnRyZWUsICZp dC0+dHJlZV9pdGVyYXRvcik7Cj4+ID7CoCB0dXBsZV91bnJlZihpdC0+Y3VycmVudC50dXBsZSk7 Cj4+ID4tIHN0cnVjdCBtZW10eF90cmVlX2RhdGEgKnJlcyA9Cj4+ID4rIHN0cnVjdCBtZW10eF90 cmVlX2RhdGE8VVNFX0hJTlQ+ICpyZXMgPQo+PiA+wqAgbWVtdHhfdHJlZV9pdGVyYXRvcl9nZXRf ZWxlbSgmaW5kZXgtPnRyZWUsICZpdC0+dHJlZV9pdGVyYXRvcik7Cj4+ID7CoCAvKiBVc2UgdXNl ciBrZXkgZGVmIHRvIHNhdmUgYSBmZXcgbG9vcHMuICovCj4+ID7CoCBpZiAocmVzID09IE5VTEwg fHwKPj4gPkBAIC0zMDcsMjggKzQwOCwzMCBAQCB0cmVlX2l0ZXJhdG9yX3ByZXZfZXF1YWxfYmFz ZShzdHJ1Y3QgaXRlcmF0b3IgKml0ZXJhdG9yLCBzdHJ1Y3QgdHVwbGUgKipyZXQpCj4+ID7CoH0K Pj4gPsKgCj4+ID7CoCNkZWZpbmUgV1JBUF9JVEVSQVRPUl9NRVRIT0QobmFtZSkgXAo+PiA+K3Rl bXBsYXRlIDxpbnQgVVNFX0hJTlQ+IFwKPj4gPsKgc3RhdGljIGludCBcCj4+ID7CoG5hbWUoc3Ry dWN0IGl0ZXJhdG9yICppdGVyYXRvciwgc3RydWN0IHR1cGxlICoqcmV0KSBcCj4+ID7CoHsgXAo+ PiA+LSBzdHJ1Y3QgbWVtdHhfdHJlZSAqdHJlZSA9IFwKPj4gPi0gJigoc3RydWN0IG1lbXR4X3Ry ZWVfaW5kZXggKilpdGVyYXRvci0+aW5kZXgpLT50cmVlOyBcCj4+ID4tIHN0cnVjdCB0cmVlX2l0 ZXJhdG9yICppdCA9IHRyZWVfaXRlcmF0b3IoaXRlcmF0b3IpOyBcCj4+ID4tIHN0cnVjdCBtZW10 eF90cmVlX2l0ZXJhdG9yICp0aSA9ICZpdC0+dHJlZV9pdGVyYXRvcjsgXAo+PiA+KyBtZW10eF90 cmVlX3Q8VVNFX0hJTlQ+ICp0cmVlID0gXAo+PiA+KyAmKChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRl eDxVU0VfSElOVD4gKilpdGVyYXRvci0+aW5kZXgpLT50cmVlOyBcCj4+ID4rIHN0cnVjdCB0cmVl X2l0ZXJhdG9yPFVTRV9ISU5UPiAqaXQgPSBcCj4+ID4rIGdldF90cmVlX2l0ZXJhdG9yPFVTRV9I SU5UPihpdGVyYXRvcik7IFwKPj4gPisgbWVtdHhfdHJlZV9pdGVyYXRvcl90PFVTRV9ISU5UPiAq dGkgPSAmaXQtPnRyZWVfaXRlcmF0b3I7IFwKPj4gPsKgIHVpbnQzMl90IGlpZCA9IGl0ZXJhdG9y LT5pbmRleC0+ZGVmLT5paWQ7IFwKPj4gPsKgIGJvb2wgaXNfbXVsdGlrZXkgPSBpdGVyYXRvci0+ aW5kZXgtPmRlZi0+a2V5X2RlZi0+aXNfbXVsdGlrZXk7IFwKPj4gPsKgIHN0cnVjdCB0eG4gKnR4 biA9IGluX3R4bigpOyBcCj4+ID7CoCBzdHJ1Y3Qgc3BhY2UgKnNwYWNlID0gc3BhY2VfYnlfaWQo aXRlcmF0b3ItPnNwYWNlX2lkKTsgXAo+PiA+wqAgYm9vbCBpc19ydyA9IHR4biAhPSBOVUxMOyBc Cj4+ID7CoCBkbyB7IFwKPj4gPi0gaW50IHJjID0gbmFtZSMjX2Jhc2UoaXRlcmF0b3IsIHJldCk7 IFwKPj4gPisgaW50IHJjID0gbmFtZSMjX2Jhc2U8VVNFX0hJTlQ+KGl0ZXJhdG9yLCByZXQpOyBc Cj4+ID7CoCBpZiAocmMgIT0gMCB8fCAqcmV0ID09IE5VTEwpIFwKPj4gPsKgIHJldHVybiByYzsg XAo+PiA+wqAgdWludDMyX3QgbWtfaW5kZXggPSAwOyBcCj4+ID7CoCBpZiAoaXNfbXVsdGlrZXkp IHsgXAo+PiA+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhICpjaGVjayA9IFwKPj4gPisgc3RydWN0 IG1lbXR4X3RyZWVfZGF0YTxVU0VfSElOVD4gKmNoZWNrID0gXAo+PiA+wqAgbWVtdHhfdHJlZV9p dGVyYXRvcl9nZXRfZWxlbSh0cmVlLCB0aSk7IFwKPj4gPsKgIGFzc2VydChjaGVjayAhPSBOVUxM KTsgXAo+PiA+LSBta19pbmRleCA9IGNoZWNrLT5oaW50OyBcCj4+ID4rIG1rX2luZGV4ID0gKHVp bnQzMl90KWNoZWNrLT5oaW50OyBcCj4+ID7CoCB9IFwKPj4gPsKgICpyZXQgPSBtZW10eF90eF90 dXBsZV9jbGFyaWZ5KHR4biwgc3BhY2UsICpyZXQsIFwKPj4gPsKgIGlpZCwgbWtfaW5kZXgsIGlz X3J3KTsgXAo+PiA+QEAgLTM0NywyNyArNDUwLDI4IEBAIFdSQVBfSVRFUkFUT1JfTUVUSE9EKHRy ZWVfaXRlcmF0b3JfcHJldl9lcXVhbCk7Cj4+ID7CoAo+PiA+wqAjdW5kZWYgV1JBUF9JVEVSQVRP Ul9NRVRIT0QKPj4gPsKgCj4+ID4rdGVtcGxhdGUgPGludCBVU0VfSElOVD4KPj4gPsKgc3RhdGlj IHZvaWQKPj4gPi10cmVlX2l0ZXJhdG9yX3NldF9uZXh0X21ldGhvZChzdHJ1Y3QgdHJlZV9pdGVy YXRvciAqaXQpCj4+ID4rdHJlZV9pdGVyYXRvcl9zZXRfbmV4dF9tZXRob2Qoc3RydWN0IHRyZWVf aXRlcmF0b3I8VVNFX0hJTlQ+ICppdCkKPj4gPsKgewo+PiA+wqAgYXNzZXJ0KGl0LT5jdXJyZW50 LnR1cGxlICE9IE5VTEwpOwo+PiA+wqAgc3dpdGNoIChpdC0+dHlwZSkgewo+PiA+wqAgY2FzZSBJ VEVSX0VROgo+PiA+LSBpdC0+YmFzZS5uZXh0ID0gdHJlZV9pdGVyYXRvcl9uZXh0X2VxdWFsOwo+ PiA+KyBpdC0+YmFzZS5uZXh0ID0gdHJlZV9pdGVyYXRvcl9uZXh0X2VxdWFsPFVTRV9ISU5UPjsK Pj4gPsKgIGJyZWFrOwo+PiA+wqAgY2FzZSBJVEVSX1JFUToKPj4gPi0gaXQtPmJhc2UubmV4dCA9 IHRyZWVfaXRlcmF0b3JfcHJldl9lcXVhbDsKPj4gPisgaXQtPmJhc2UubmV4dCA9IHRyZWVfaXRl cmF0b3JfcHJldl9lcXVhbDxVU0VfSElOVD47Cj4+ID7CoCBicmVhazsKPj4gPsKgIGNhc2UgSVRF Ul9BTEw6Cj4+ID4tIGl0LT5iYXNlLm5leHQgPSB0cmVlX2l0ZXJhdG9yX25leHQ7Cj4+ID4rIGl0 LT5iYXNlLm5leHQgPSB0cmVlX2l0ZXJhdG9yX25leHQ8VVNFX0hJTlQ+Owo+PiA+wqAgYnJlYWs7 Cj4+ID7CoCBjYXNlIElURVJfTFQ6Cj4+ID7CoCBjYXNlIElURVJfTEU6Cj4+ID4tIGl0LT5iYXNl Lm5leHQgPSB0cmVlX2l0ZXJhdG9yX3ByZXY7Cj4+ID4rIGl0LT5iYXNlLm5leHQgPSB0cmVlX2l0 ZXJhdG9yX3ByZXY8VVNFX0hJTlQ+Owo+PiA+wqAgYnJlYWs7Cj4+ID7CoCBjYXNlIElURVJfR0U6 Cj4+ID7CoCBjYXNlIElURVJfR1Q6Cj4+ID4tIGl0LT5iYXNlLm5leHQgPSB0cmVlX2l0ZXJhdG9y X25leHQ7Cj4+ID4rIGl0LT5iYXNlLm5leHQgPSB0cmVlX2l0ZXJhdG9yX25leHQ8VVNFX0hJTlQ+ Owo+PiA+wqAgYnJlYWs7Cj4+ID7CoCBkZWZhdWx0Ogo+PiA+wqAgLyogVGhlIHR5cGUgd2FzIGNo ZWNrZWQgaW4gaW5pdEl0ZXJhdG9yICovCj4+ID5AQCAtMzc1LDE1ICs0NzksMTYgQEAgdHJlZV9p dGVyYXRvcl9zZXRfbmV4dF9tZXRob2Qoc3RydWN0IHRyZWVfaXRlcmF0b3IgKml0KQo+PiA+wqAg fQo+PiA+wqB9Cj4+ID7CoAo+PiA+K3RlbXBsYXRlIDxpbnQgVVNFX0hJTlQ+Cj4+ID7CoHN0YXRp YyBpbnQKPj4gPsKgdHJlZV9pdGVyYXRvcl9zdGFydChzdHJ1Y3QgaXRlcmF0b3IgKml0ZXJhdG9y LCBzdHJ1Y3QgdHVwbGUgKipyZXQpCj4+ID7CoHsKPj4gPsKgICpyZXQgPSBOVUxMOwo+PiA+LSBz dHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqaW5kZXggPQo+PiA+LSAoc3RydWN0IG1lbXR4X3RyZWVf aW5kZXggKilpdGVyYXRvci0+aW5kZXg7Cj4+ID4tIHN0cnVjdCB0cmVlX2l0ZXJhdG9yICppdCA9 IHRyZWVfaXRlcmF0b3IoaXRlcmF0b3IpOwo+PiA+KyBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleDxV U0VfSElOVD4gKmluZGV4ID0KPj4gPisgKHN0cnVjdCBtZW10eF90cmVlX2luZGV4PFVTRV9ISU5U PiAqKWl0ZXJhdG9yLT5pbmRleDsKPj4gPisgc3RydWN0IHRyZWVfaXRlcmF0b3I8VVNFX0hJTlQ+ ICppdCA9IGdldF90cmVlX2l0ZXJhdG9yPFVTRV9ISU5UPihpdGVyYXRvcik7Cj4+ID7CoCBpdC0+ YmFzZS5uZXh0ID0gdHJlZV9pdGVyYXRvcl9kdW1taWU7Cj4+ID4tIHN0cnVjdCBtZW10eF90cmVl ICp0cmVlID0gJmluZGV4LT50cmVlOwo+PiA+KyBtZW10eF90cmVlX3Q8VVNFX0hJTlQ+ICp0cmVl ID0gJmluZGV4LT50cmVlOwo+PiA+wqAgZW51bSBpdGVyYXRvcl90eXBlIHR5cGUgPSBpdC0+dHlw ZTsKPj4gPsKgIGJvb2wgZXhhY3QgPSBmYWxzZTsKPj4gPsKgIGFzc2VydChpdC0+Y3VycmVudC50 dXBsZSA9PSBOVUxMKTsKPj4gPkBAIC00MjMsOCArNTI4LDggQEAgdHJlZV9pdGVyYXRvcl9zdGFy dChzdHJ1Y3QgaXRlcmF0b3IgKml0ZXJhdG9yLCBzdHJ1Y3QgdHVwbGUgKipyZXQpCj4+ID7CoCB9 Cj4+ID7CoCB9Cj4+ID7CoAo+PiA+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhICpyZXMgPSBtZW10 eF90cmVlX2l0ZXJhdG9yX2dldF9lbGVtKHRyZWUsCj4+ID4tICZpdC0+dHJlZV9pdGVyYXRvcik7 Cj4+ID4rIHN0cnVjdCBtZW10eF90cmVlX2RhdGE8VVNFX0hJTlQ+ICpyZXMgPQo+PiA+KyBtZW10 eF90cmVlX2l0ZXJhdG9yX2dldF9lbGVtKHRyZWUsICZpdC0+dHJlZV9pdGVyYXRvcik7Cj4+ID7C oCBpZiAoIXJlcykKPj4gPsKgIHJldHVybiAwOwo+PiA+wqAgKnJldCA9IHJlcy0+dHVwbGU7Cj4+ ID5AQCAtNDU0LDE0ICs1NTksMTYgQEAgdHJlZV9pdGVyYXRvcl9zdGFydChzdHJ1Y3QgaXRlcmF0 b3IgKml0ZXJhdG9yLCBzdHJ1Y3QgdHVwbGUgKipyZXQpCj4+ID7CoAo+PiA+wqAvKiB7e3sgTWVt dHhUcmVlICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovCj4+ID7CoAo+PiA+K3RlbXBsYXRlIDxpbnQgVVNFX0hJTlQ+Cj4+ID7CoHN0YXRp YyB2b2lkCj4+ID4tbWVtdHhfdHJlZV9pbmRleF9mcmVlKHN0cnVjdCBtZW10eF90cmVlX2luZGV4 ICppbmRleCkKPj4gPittZW10eF90cmVlX2luZGV4X2ZyZWUoc3RydWN0IG1lbXR4X3RyZWVfaW5k ZXg8VVNFX0hJTlQ+ICppbmRleCkKPj4gPsKgewo+PiA+wqAgbWVtdHhfdHJlZV9kZXN0cm95KCZp bmRleC0+dHJlZSk7Cj4+ID7CoCBmcmVlKGluZGV4LT5idWlsZF9hcnJheSk7Cj4+ID7CoCBmcmVl KGluZGV4KTsKPj4gPsKgfQo+PiA+wqAKPj4gPit0ZW1wbGF0ZSA8aW50IFVTRV9ISU5UPgo+PiA+ wqBzdGF0aWMgdm9pZAo+PiA+wqBtZW10eF90cmVlX2luZGV4X2djX3J1bihzdHJ1Y3QgbWVtdHhf Z2NfdGFzayAqdGFzaywgYm9vbCAqZG9uZSkKPj4gPsKgewo+PiA+QEAgLTQ3NSwxNCArNTgyLDE0 IEBAIG1lbXR4X3RyZWVfaW5kZXhfZ2NfcnVuKHN0cnVjdCBtZW10eF9nY190YXNrICp0YXNrLCBi b29sICpkb25lKQo+PiA+wqAgZW51bSB7IFlJRUxEX0xPT1BTID0gMTAgfTsKPj4gPsKgI2VuZGlm Cj4+ID7CoAo+PiA+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqaW5kZXggPSBjb250YWluZXJf b2YodGFzaywKPj4gPi0gc3RydWN0IG1lbXR4X3RyZWVfaW5kZXgsIGdjX3Rhc2spOwo+PiA+LSBz dHJ1Y3QgbWVtdHhfdHJlZSAqdHJlZSA9ICZpbmRleC0+dHJlZTsKPj4gPi0gc3RydWN0IG1lbXR4 X3RyZWVfaXRlcmF0b3IgKml0ciA9ICZpbmRleC0+Z2NfaXRlcmF0b3I7Cj4+ID4rIHN0cnVjdCBt ZW10eF90cmVlX2luZGV4PFVTRV9ISU5UPiAqaW5kZXggPSBjb250YWluZXJfb2YodGFzaywKPj4g Pisgc3RydWN0IG1lbXR4X3RyZWVfaW5kZXg8VVNFX0hJTlQ+LCBnY190YXNrKTsKPj4gPisgbWVt dHhfdHJlZV90PFVTRV9ISU5UPiAqdHJlZSA9ICZpbmRleC0+dHJlZTsKPj4gPisgbWVtdHhfdHJl ZV9pdGVyYXRvcl90PFVTRV9ISU5UPiAqaXRyID0gJmluZGV4LT5nY19pdGVyYXRvcjsKPj4gPsKg Cj4+ID7CoCB1bnNpZ25lZCBpbnQgbG9vcHMgPSAwOwo+PiA+wqAgd2hpbGUgKCFtZW10eF90cmVl X2l0ZXJhdG9yX2lzX2ludmFsaWQoaXRyKSkgewo+PiA+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRh ICpyZXMgPQo+PiA+KyBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhPFVTRV9ISU5UPiAqcmVzID0KPj4g PsKgIG1lbXR4X3RyZWVfaXRlcmF0b3JfZ2V0X2VsZW0odHJlZSwgaXRyKTsKPj4gPsKgIG1lbXR4 X3RyZWVfaXRlcmF0b3JfbmV4dCh0cmVlLCBpdHIpOwo+PiA+wqAgdHVwbGVfdW5yZWYocmVzLT50 dXBsZSk7Cj4+ID5AQCAtNDk0LDIzICs2MDEsMzIgQEAgbWVtdHhfdHJlZV9pbmRleF9nY19ydW4o c3RydWN0IG1lbXR4X2djX3Rhc2sgKnRhc2ssIGJvb2wgKmRvbmUpCj4+ID7CoCAqZG9uZSA9IHRy dWU7Cj4+ID7CoH0KPj4gPsKgCj4+ID4rdGVtcGxhdGUgPGludCBVU0VfSElOVD4KPj4gPsKgc3Rh dGljIHZvaWQKPj4gPsKgbWVtdHhfdHJlZV9pbmRleF9nY19mcmVlKHN0cnVjdCBtZW10eF9nY190 YXNrICp0YXNrKQo+PiA+wqB7Cj4+ID4tIHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICppbmRleCA9 IGNvbnRhaW5lcl9vZih0YXNrLAo+PiA+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCwgZ2NfdGFz ayk7Cj4+ID4rIHN0cnVjdCBtZW10eF90cmVlX2luZGV4PFVTRV9ISU5UPiAqaW5kZXggPSBjb250 YWluZXJfb2YodGFzaywKPj4gPisgc3RydWN0IG1lbXR4X3RyZWVfaW5kZXg8VVNFX0hJTlQ+LCBn Y190YXNrKTsKPj4gPsKgIG1lbXR4X3RyZWVfaW5kZXhfZnJlZShpbmRleCk7Cj4+ID7CoH0KPj4g PsKgCj4+ID4tc3RhdGljIGNvbnN0IHN0cnVjdCBtZW10eF9nY190YXNrX3Z0YWIgbWVtdHhfdHJl ZV9pbmRleF9nY192dGFiID0gewo+PiA+LSAucnVuID0gbWVtdHhfdHJlZV9pbmRleF9nY19ydW4s Cj4+ID4tIC5mcmVlID0gbWVtdHhfdHJlZV9pbmRleF9nY19mcmVlLAo+PiA+K3RlbXBsYXRlIDxp bnQgVVNFX0hJTlQ+Cj4+ID4rc3RhdGljIHN0cnVjdCBtZW10eF9nY190YXNrX3Z0YWIgKiBnZXRf bWVtdHhfdHJlZV9pbmRleF9nY192dGFiKCkKPj4gPit7Cj4+ID4rIHN0YXRpYyBtZW10eF9nY190 YXNrX3Z0YWIgdGFiID0KPj4gPisgewo+PiA+KyAucnVuID0gbWVtdHhfdHJlZV9pbmRleF9nY19y dW48VVNFX0hJTlQ+LAo+PiA+KyAuZnJlZSA9IG1lbXR4X3RyZWVfaW5kZXhfZ2NfZnJlZTxVU0Vf SElOVD4sCj4+ID4rIH07Cj4+ID4rIHJldHVybiAmdGFiOwo+PiA+wqB9Owo+PiA+wqAKPj4gPit0 ZW1wbGF0ZSA8aW50IFVTRV9ISU5UPgo+PiA+wqBzdGF0aWMgdm9pZAo+PiA+wqBtZW10eF90cmVl X2luZGV4X2Rlc3Ryb3koc3RydWN0IGluZGV4ICpiYXNlKQo+PiA+wqB7Cj4+ID4tIHN0cnVjdCBt ZW10eF90cmVlX2luZGV4ICppbmRleCA9IChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqKWJhc2U7 Cj4+ID4rIHN0cnVjdCBtZW10eF90cmVlX2luZGV4PFVTRV9ISU5UPiAqaW5kZXggPQo+PiA+KyAo c3RydWN0IG1lbXR4X3RyZWVfaW5kZXg8VVNFX0hJTlQ+ICopYmFzZTsKPj4gPsKgIHN0cnVjdCBt ZW10eF9lbmdpbmUgKm1lbXR4ID0gKHN0cnVjdCBtZW10eF9lbmdpbmUgKiliYXNlLT5lbmdpbmU7 Cj4+ID7CoCBpZiAoYmFzZS0+ZGVmLT5paWQgPT0gMCkgewo+PiA+wqAgLyoKPj4gPkBAIC01MTgs NyArNjM0LDcgQEAgbWVtdHhfdHJlZV9pbmRleF9kZXN0cm95KHN0cnVjdCBpbmRleCAqYmFzZSkK Pj4gPsKgICogaW4gdGhlIGluZGV4LCB3aGljaCBtYXkgdGFrZSBhIHdoaWxlLiBTY2hlZHVsZSBh Cj4+ID7CoCAqIGJhY2tncm91bmQgdGFzayBpbiBvcmRlciBub3QgdG8gYmxvY2sgdHggdGhyZWFk Lgo+PiA+wqAgKi8KPj4gPi0gaW5kZXgtPmdjX3Rhc2sudnRhYiA9ICZtZW10eF90cmVlX2luZGV4 X2djX3Z0YWI7Cj4+ID4rIGluZGV4LT5nY190YXNrLnZ0YWIgPSBnZXRfbWVtdHhfdHJlZV9pbmRl eF9nY192dGFiPFVTRV9ISU5UPigpOwo+PiA+wqAgaW5kZXgtPmdjX2l0ZXJhdG9yID0gbWVtdHhf dHJlZV9pdGVyYXRvcl9maXJzdCgmaW5kZXgtPnRyZWUpOwo+PiA+wqAgbWVtdHhfZW5naW5lX3Nj aGVkdWxlX2djKG1lbXR4LCAmaW5kZXgtPmdjX3Rhc2spOwo+PiA+wqAgfSBlbHNlIHsKPj4gPkBA IC01MzAsMTAgKzY0NiwxMiBAQCBtZW10eF90cmVlX2luZGV4X2Rlc3Ryb3koc3RydWN0IGluZGV4 ICpiYXNlKQo+PiA+wqAgfQo+PiA+wqB9Cj4+ID7CoAo+PiA+K3RlbXBsYXRlIDxpbnQgVVNFX0hJ TlQ+Cj4+ID7CoHN0YXRpYyB2b2lkCj4+ID7CoG1lbXR4X3RyZWVfaW5kZXhfdXBkYXRlX2RlZihz dHJ1Y3QgaW5kZXggKmJhc2UpCj4+ID7CoHsKPj4gPi0gc3RydWN0IG1lbXR4X3RyZWVfaW5kZXgg KmluZGV4ID0gKHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICopYmFzZTsKPj4gPisgc3RydWN0IG1l bXR4X3RyZWVfaW5kZXg8VVNFX0hJTlQ+ICppbmRleCA9Cj4+ID4rIChzdHJ1Y3QgbWVtdHhfdHJl ZV9pbmRleDxVU0VfSElOVD4gKiliYXNlOwo+PiA+wqAgc3RydWN0IGluZGV4X2RlZiAqZGVmID0g YmFzZS0+ZGVmOwo+PiA+wqAgLyoKPj4gPsKgICogV2UgdXNlIGV4dGVuZGVkIGtleSBkZWYgZm9y IG5vbi11bmlxdWUgYW5kIG51bGxhYmxlCj4+ID5AQCAtNTUzLDUxICs2NzEsNjIgQEAgbWVtdHhf dHJlZV9pbmRleF9kZXBlbmRzX29uX3BrKHN0cnVjdCBpbmRleCAqYmFzZSkKPj4gPsKgIHJldHVy biAhZGVmLT5vcHRzLmlzX3VuaXF1ZSB8fCBkZWYtPmtleV9kZWYtPmlzX251bGxhYmxlOwo+PiA+ wqB9Cj4+ID7CoAo+PiA+K3RlbXBsYXRlIDxpbnQgVVNFX0hJTlQ+Cj4+ID7CoHN0YXRpYyBzc2l6 ZV90Cj4+ID7CoG1lbXR4X3RyZWVfaW5kZXhfc2l6ZShzdHJ1Y3QgaW5kZXggKmJhc2UpCj4+ID7C oHsKPj4gPi0gc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKmluZGV4ID0gKHN0cnVjdCBtZW10eF90 cmVlX2luZGV4ICopYmFzZTsKPj4gPisgc3RydWN0IG1lbXR4X3RyZWVfaW5kZXg8VVNFX0hJTlQ+ ICppbmRleCA9Cj4+ID4rIChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleDxVU0VfSElOVD4gKiliYXNl Owo+PiA+wqAgcmV0dXJuIG1lbXR4X3RyZWVfc2l6ZSgmaW5kZXgtPnRyZWUpOwo+PiA+wqB9Cj4+ ID7CoAo+PiA+K3RlbXBsYXRlIDxpbnQgVVNFX0hJTlQ+Cj4+ID7CoHN0YXRpYyBzc2l6ZV90Cj4+ ID7CoG1lbXR4X3RyZWVfaW5kZXhfYnNpemUoc3RydWN0IGluZGV4ICpiYXNlKQo+PiA+wqB7Cj4+ ID4tIHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICppbmRleCA9IChzdHJ1Y3QgbWVtdHhfdHJlZV9p bmRleCAqKWJhc2U7Cj4+ID4rIHN0cnVjdCBtZW10eF90cmVlX2luZGV4PFVTRV9ISU5UPiAqaW5k ZXggPQo+PiA+KyAoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXg8VVNFX0hJTlQ+ICopYmFzZTsKPj4g PsKgIHJldHVybiBtZW10eF90cmVlX21lbV91c2VkKCZpbmRleC0+dHJlZSk7Cj4+ID7CoH0KPj4g PsKgCj4+ID4rdGVtcGxhdGUgPGludCBVU0VfSElOVD4KPj4gPsKgc3RhdGljIGludAo+PiA+wqBt ZW10eF90cmVlX2luZGV4X3JhbmRvbShzdHJ1Y3QgaW5kZXggKmJhc2UsIHVpbnQzMl90IHJuZCwg c3RydWN0IHR1cGxlICoqcmVzdWx0KQo+PiA+wqB7Cj4+ID4tIHN0cnVjdCBtZW10eF90cmVlX2lu ZGV4ICppbmRleCA9IChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqKWJhc2U7Cj4+ID4tIHN0cnVj dCBtZW10eF90cmVlX2RhdGEgKnJlcyA9IG1lbXR4X3RyZWVfcmFuZG9tKCZpbmRleC0+dHJlZSwg cm5kKTsKPj4gPisgc3RydWN0IG1lbXR4X3RyZWVfaW5kZXg8VVNFX0hJTlQ+ICppbmRleCA9Cj4+ ID4rIChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleDxVU0VfSElOVD4gKiliYXNlOwo+PiA+KyBzdHJ1 Y3QgbWVtdHhfdHJlZV9kYXRhPFVTRV9ISU5UPiAqcmVzID0gbWVtdHhfdHJlZV9yYW5kb20oJmlu ZGV4LT50cmVlLCBybmQpOwo+PiA+wqAgKnJlc3VsdCA9IHJlcyAhPSBOVUxMID8gcmVzLT50dXBs ZSA6IE5VTEw7Cj4+ID7CoCByZXR1cm4gMDsKPj4gPsKgfQo+PiA+wqAKPj4gPit0ZW1wbGF0ZSA8 aW50IFVTRV9ISU5UPgo+PiA+wqBzdGF0aWMgc3NpemVfdAo+PiA+wqBtZW10eF90cmVlX2luZGV4 X2NvdW50KHN0cnVjdCBpbmRleCAqYmFzZSwgZW51bSBpdGVyYXRvcl90eXBlIHR5cGUsCj4+ID7C oCBjb25zdCBjaGFyICprZXksIHVpbnQzMl90IHBhcnRfY291bnQpCj4+ID7CoHsKPj4gPsKgIGlm ICh0eXBlID09IElURVJfQUxMKQo+PiA+LSByZXR1cm4gbWVtdHhfdHJlZV9pbmRleF9zaXplKGJh c2UpOyAvKiBvcHRpbWl6YXRpb24gKi8KPj4gPisgcmV0dXJuIG1lbXR4X3RyZWVfaW5kZXhfc2l6 ZTxVU0VfSElOVD4oYmFzZSk7IC8qIG9wdGltaXphdGlvbiAqLwo+PiA+wqAgcmV0dXJuIGdlbmVy aWNfaW5kZXhfY291bnQoYmFzZSwgdHlwZSwga2V5LCBwYXJ0X2NvdW50KTsKPj4gPsKgfQo+PiA+ wqAKPj4gPit0ZW1wbGF0ZSA8aW50IFVTRV9ISU5UPgo+PiA+wqBzdGF0aWMgaW50Cj4+ID7CoG1l bXR4X3RyZWVfaW5kZXhfZ2V0KHN0cnVjdCBpbmRleCAqYmFzZSwgY29uc3QgY2hhciAqa2V5LAo+ PiA+wqAgdWludDMyX3QgcGFydF9jb3VudCwgc3RydWN0IHR1cGxlICoqcmVzdWx0KQo+PiA+wqB7 Cj4+ID7CoCBhc3NlcnQoYmFzZS0+ZGVmLT5vcHRzLmlzX3VuaXF1ZSAmJgo+PiA+wqAgcGFydF9j b3VudCA9PSBiYXNlLT5kZWYtPmtleV9kZWYtPnBhcnRfY291bnQpOwo+PiA+LSBzdHJ1Y3QgbWVt dHhfdHJlZV9pbmRleCAqaW5kZXggPSAoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKiliYXNlOwo+ PiA+KyBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleDxVU0VfSElOVD4gKmluZGV4ID0KPj4gPisgKHN0 cnVjdCBtZW10eF90cmVlX2luZGV4PFVTRV9ISU5UPiAqKWJhc2U7Cj4+ID7CoCBzdHJ1Y3Qga2V5 X2RlZiAqY21wX2RlZiA9IG1lbXR4X3RyZWVfY21wX2RlZigmaW5kZXgtPnRyZWUpOwo+PiA+LSBz dHJ1Y3QgbWVtdHhfdHJlZV9rZXlfZGF0YSBrZXlfZGF0YTsKPj4gPisgc3RydWN0IG1lbXR4X3Ry ZWVfa2V5X2RhdGE8VVNFX0hJTlQ+IGtleV9kYXRhOwo+PiA+wqAga2V5X2RhdGEua2V5ID0ga2V5 Owo+PiA+wqAga2V5X2RhdGEucGFydF9jb3VudCA9IHBhcnRfY291bnQ7Cj4+ID4tIGtleV9kYXRh LmhpbnQgPSBrZXlfaGludChrZXksIHBhcnRfY291bnQsIGNtcF9kZWYpOwo+PiA+LSBzdHJ1Y3Qg bWVtdHhfdHJlZV9kYXRhICpyZXMgPSBtZW10eF90cmVlX2ZpbmQoJmluZGV4LT50cmVlLCAma2V5 X2RhdGEpOwo+PiA+KyBpZiAoVVNFX0hJTlQpCj4+ID4rIGtleV9kYXRhLnNldF9oaW50KGtleV9o aW50KGtleSwgcGFydF9jb3VudCwgY21wX2RlZikpOwo+PiA+KyBzdHJ1Y3QgbWVtdHhfdHJlZV9k YXRhPFVTRV9ISU5UPiAqcmVzID0KPj4gPisgbWVtdHhfdHJlZV9maW5kKCZpbmRleC0+dHJlZSwg JmtleV9kYXRhKTsKPj4gPsKgIGlmIChyZXMgPT0gTlVMTCkgewo+PiA+wqAgKnJlc3VsdCA9IE5V TEw7Cj4+ID7CoCByZXR1cm4gMDsKPj4gPkBAIC02MTEsMTggKzc0MCwyMSBAQCBtZW10eF90cmVl X2luZGV4X2dldChzdHJ1Y3QgaW5kZXggKmJhc2UsIGNvbnN0IGNoYXIgKmtleSwKPj4gPsKgIHJl dHVybiAwOwo+PiA+wqB9Cj4+ID7CoAo+PiA+K3RlbXBsYXRlIDxpbnQgVVNFX0hJTlQ+Cj4+ID7C oHN0YXRpYyBpbnQKPj4gPsKgbWVtdHhfdHJlZV9pbmRleF9yZXBsYWNlKHN0cnVjdCBpbmRleCAq YmFzZSwgc3RydWN0IHR1cGxlICpvbGRfdHVwbGUsCj4+ID7CoCBzdHJ1Y3QgdHVwbGUgKm5ld190 dXBsZSwgZW51bSBkdXBfcmVwbGFjZV9tb2RlIG1vZGUsCj4+ID7CoCBzdHJ1Y3QgdHVwbGUgKipy ZXN1bHQpCj4+ID7CoHsKPj4gPi0gc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKmluZGV4ID0gKHN0 cnVjdCBtZW10eF90cmVlX2luZGV4ICopYmFzZTsKPj4gPisgc3RydWN0IG1lbXR4X3RyZWVfaW5k ZXg8VVNFX0hJTlQ+ICppbmRleCA9Cj4+ID4rIChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleDxVU0Vf SElOVD4gKiliYXNlOwo+PiA+wqAgc3RydWN0IGtleV9kZWYgKmNtcF9kZWYgPSBtZW10eF90cmVl X2NtcF9kZWYoJmluZGV4LT50cmVlKTsKPj4gPsKgIGlmIChuZXdfdHVwbGUpIHsKPj4gPi0gc3Ry dWN0IG1lbXR4X3RyZWVfZGF0YSBuZXdfZGF0YTsKPj4gPisgc3RydWN0IG1lbXR4X3RyZWVfZGF0 YTxVU0VfSElOVD4gbmV3X2RhdGE7Cj4+ID7CoCBuZXdfZGF0YS50dXBsZSA9IG5ld190dXBsZTsK Pj4gPi0gbmV3X2RhdGEuaGludCA9IHR1cGxlX2hpbnQobmV3X3R1cGxlLCBjbXBfZGVmKTsKPj4g Pi0gc3RydWN0IG1lbXR4X3RyZWVfZGF0YSBkdXBfZGF0YTsKPj4gPisgaWYgKFVTRV9ISU5UKQo+ PiA+KyBuZXdfZGF0YS5zZXRfaGludCh0dXBsZV9oaW50KG5ld190dXBsZSwgY21wX2RlZikpOwo+ PiA+KyBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhPFVTRV9ISU5UPiBkdXBfZGF0YTsKPj4gPsKgIGR1 cF9kYXRhLnR1cGxlID0gTlVMTDsKPj4gPsKgCj4+ID7CoCAvKiBUcnkgdG8gb3B0aW1pc3RpY2Fs bHkgcmVwbGFjZSB0aGUgbmV3X3R1cGxlLiAqLwo+PiA+QEAgLTY1Miw5ICs3ODQsMTAgQEAgbWVt dHhfdHJlZV9pbmRleF9yZXBsYWNlKHN0cnVjdCBpbmRleCAqYmFzZSwgc3RydWN0IHR1cGxlICpv bGRfdHVwbGUsCj4+ID7CoCB9Cj4+ID7CoCB9Cj4+ID7CoCBpZiAob2xkX3R1cGxlKSB7Cj4+ID4t IHN0cnVjdCBtZW10eF90cmVlX2RhdGEgb2xkX2RhdGE7Cj4+ID4rIHN0cnVjdCBtZW10eF90cmVl X2RhdGE8VVNFX0hJTlQ+IG9sZF9kYXRhOwo+PiA+wqAgb2xkX2RhdGEudHVwbGUgPSBvbGRfdHVw bGU7Cj4+ID4tIG9sZF9kYXRhLmhpbnQgPSB0dXBsZV9oaW50KG9sZF90dXBsZSwgY21wX2RlZik7 Cj4+ID4rIGlmIChVU0VfSElOVCkKPj4gPisgb2xkX2RhdGEuc2V0X2hpbnQodHVwbGVfaGludChv bGRfdHVwbGUsIGNtcF9kZWYpKTsKPj4gPsKgIG1lbXR4X3RyZWVfZGVsZXRlKCZpbmRleC0+dHJl ZSwgb2xkX2RhdGEpOwo+PiA+wqAgfQo+PiA+wqAgKnJlc3VsdCA9IG9sZF90dXBsZTsKPj4gPkBA IC02NjcsMTMgKzgwMCwxMyBAQCBtZW10eF90cmVlX2luZGV4X3JlcGxhY2Uoc3RydWN0IGluZGV4 ICpiYXNlLCBzdHJ1Y3QgdHVwbGUgKm9sZF90dXBsZSwKPj4gPsKgwqAqIGJ5IGFsbCBpdCdzIG11 bHRpa2V5IGluZGV4ZXMuCj4+ID7CoMKgKi8KPj4gPsKgc3RhdGljIGludAo+PiA+LW1lbXR4X3Ry ZWVfaW5kZXhfcmVwbGFjZV9tdWx0aWtleV9vbmUoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKmlu ZGV4LAo+PiA+K21lbXR4X3RyZWVfaW5kZXhfcmVwbGFjZV9tdWx0aWtleV9vbmUoc3RydWN0IG1l bXR4X3RyZWVfaW5kZXg8MT4gKmluZGV4LAo+PiA+wqAgc3RydWN0IHR1cGxlICpvbGRfdHVwbGUs IHN0cnVjdCB0dXBsZSAqbmV3X3R1cGxlLAo+PiA+wqAgZW51bSBkdXBfcmVwbGFjZV9tb2RlIG1v ZGUsIGhpbnRfdCBoaW50LAo+PiA+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhICpyZXBsYWNlZF9k YXRhLAo+PiA+KyBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhPDE+ICpyZXBsYWNlZF9kYXRhLAo+PiA+ wqAgYm9vbCAqaXNfbXVsdGlrZXlfY29uZmxpY3QpCj4+ID7CoHsKPj4gPi0gc3RydWN0IG1lbXR4 X3RyZWVfZGF0YSBuZXdfZGF0YSwgZHVwX2RhdGE7Cj4+ID4rIHN0cnVjdCBtZW10eF90cmVlX2Rh dGE8MT4gbmV3X2RhdGEsIGR1cF9kYXRhOwo+PiA+wqAgbmV3X2RhdGEudHVwbGUgPSBuZXdfdHVw bGU7Cj4+ID7CoCBuZXdfZGF0YS5oaW50ID0gaGludDsKPj4gPsKgIGR1cF9kYXRhLnR1cGxlID0g TlVMTDsKPj4gPkBAIC03MjAsMTEgKzg1MywxMSBAQCBtZW10eF90cmVlX2luZGV4X3JlcGxhY2Vf bXVsdGlrZXlfb25lKHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICppbmRleCwKPj4gPsKgwqAqIGRl bGV0ZSBvcGVyYXRpb24gaXMgZmF1bHQtdG9sZXJhbnQuCj4+ID7CoMKgKi8KPj4gPsKgc3RhdGlj IHZvaWQKPj4gPi1tZW10eF90cmVlX2luZGV4X3JlcGxhY2VfbXVsdGlrZXlfcm9sbGJhY2soc3Ry dWN0IG1lbXR4X3RyZWVfaW5kZXggKmluZGV4LAo+PiA+K21lbXR4X3RyZWVfaW5kZXhfcmVwbGFj ZV9tdWx0aWtleV9yb2xsYmFjayhzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleDwxPiAqaW5kZXgsCj4+ ID7CoCBzdHJ1Y3QgdHVwbGUgKm5ld190dXBsZSwgc3RydWN0IHR1cGxlICpyZXBsYWNlZF90dXBs ZSwKPj4gPsKgIGludCBlcnJfbXVsdGlrZXlfaWR4KQo+PiA+wqB7Cj4+ID4tIHN0cnVjdCBtZW10 eF90cmVlX2RhdGEgZGF0YTsKPj4gPisgc3RydWN0IG1lbXR4X3RyZWVfZGF0YTwxPiBkYXRhOwo+ PiA+wqAgaWYgKHJlcGxhY2VkX3R1cGxlICE9IE5VTEwpIHsKPj4gPsKgIC8qIFJlc3RvcmUgcmVw bGFjZWQgdHVwbGUgaW5kZXggb2NjdXJyZW5jZXMuICovCj4+ID7CoCBzdHJ1Y3Qga2V5X2RlZiAq Y21wX2RlZiA9IG1lbXR4X3RyZWVfY21wX2RlZigmaW5kZXgtPnRyZWUpOwo+PiA+QEAgLTc5OCw3 ICs5MzEsNyBAQCBtZW10eF90cmVlX2luZGV4X3JlcGxhY2VfbXVsdGlrZXkoc3RydWN0IGluZGV4 ICpiYXNlLCBzdHJ1Y3QgdHVwbGUgKm9sZF90dXBsZSwKPj4gPsKgIHN0cnVjdCB0dXBsZSAqbmV3 X3R1cGxlLCBlbnVtIGR1cF9yZXBsYWNlX21vZGUgbW9kZSwKPj4gPsKgIHN0cnVjdCB0dXBsZSAq KnJlc3VsdCkKPj4gPsKgewo+PiA+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqaW5kZXggPSAo c3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKiliYXNlOwo+PiA+KyBzdHJ1Y3QgbWVtdHhfdHJlZV9p bmRleDwxPiAqaW5kZXggPSAoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXg8MT4gKiliYXNlOwo+PiA+ wqAgc3RydWN0IGtleV9kZWYgKmNtcF9kZWYgPSBtZW10eF90cmVlX2NtcF9kZWYoJmluZGV4LT50 cmVlKTsKPj4gPsKgICpyZXN1bHQgPSBOVUxMOwo+PiA+wqAgaWYgKG5ld190dXBsZSAhPSBOVUxM KSB7Cj4+ID5AQCAtODA4LDcgKzk0MSw3IEBAIG1lbXR4X3RyZWVfaW5kZXhfcmVwbGFjZV9tdWx0 aWtleShzdHJ1Y3QgaW5kZXggKmJhc2UsIHN0cnVjdCB0dXBsZSAqb2xkX3R1cGxlLAo+PiA+wqAg Zm9yICg7ICh1aW50MzJfdCkgbXVsdGlrZXlfaWR4IDwgbXVsdGlrZXlfY291bnQ7Cj4+ID7CoCBt dWx0aWtleV9pZHgrKykgewo+PiA+wqAgYm9vbCBpc19tdWx0aWtleV9jb25mbGljdDsKPj4gPi0g c3RydWN0IG1lbXR4X3RyZWVfZGF0YSByZXBsYWNlZF9kYXRhOwo+PiA+KyBzdHJ1Y3QgbWVtdHhf dHJlZV9kYXRhPDE+IHJlcGxhY2VkX2RhdGE7Cj4+ID7CoCBlcnIgPSBtZW10eF90cmVlX2luZGV4 X3JlcGxhY2VfbXVsdGlrZXlfb25lKGluZGV4LAo+PiA+wqAgb2xkX3R1cGxlLCBuZXdfdHVwbGUs IG1vZGUsCj4+ID7CoCBtdWx0aWtleV9pZHgsICZyZXBsYWNlZF9kYXRhLAo+PiA+QEAgLTgzMyw3 ICs5NjYsNyBAQCBtZW10eF90cmVlX2luZGV4X3JlcGxhY2VfbXVsdGlrZXkoc3RydWN0IGluZGV4 ICpiYXNlLCBzdHJ1Y3QgdHVwbGUgKm9sZF90dXBsZSwKPj4gPsKgIH0KPj4gPsKgIH0KPj4gPsKg IGlmIChvbGRfdHVwbGUgIT0gTlVMTCkgewo+PiA+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhIGRh dGE7Cj4+ID4rIHN0cnVjdCBtZW10eF90cmVlX2RhdGE8MT4gZGF0YTsKPj4gPsKgIGRhdGEudHVw bGUgPSBvbGRfdHVwbGU7Cj4+ID7CoCB1aW50MzJfdCBtdWx0aWtleV9jb3VudCA9Cj4+ID7CoCB0 dXBsZV9tdWx0aWtleV9jb3VudChvbGRfdHVwbGUsIGNtcF9kZWYpOwo+PiA+QEAgLTg2NSw3ICs5 OTgsNyBAQCBzdHJ1Y3QgZnVuY19rZXlfdW5kbyB7Cj4+ID7CoCAvKiogQSBsaW5rIHRvIG9yZ2Fu aXplIGVudHJpZXMgaW4gbGlzdC4gKi8KPj4gPsKgIHN0cnVjdCBybGlzdCBsaW5rOwo+PiA+wqAg LyoqIEFuIGluc2VydGVkIHJlY29yZCBjb3B5LiAqLwo+PiA+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9k YXRhIGtleTsKPj4gPisgc3RydWN0IG1lbXR4X3RyZWVfZGF0YTwxPiBrZXk7Cj4+ID7CoH07Cj4+ ID7CoAo+PiA+wqAvKiogQWxsb2NhdGUgYSBuZXcgZnVuY19rZXlfdW5kbyBvbiBnaXZlbiByZWdp b24uICovCj4+ID5AQCAtODg4LDcgKzEwMjEsNyBAQCBmdW5jX2tleV91bmRvX25ldyhzdHJ1Y3Qg cmVnaW9uICpyZWdpb24pCj4+ID7CoMKgKiByZXR1cm4gYSBnaXZlbiBpbmRleCBvYmplY3QgaW4g aXQncyBvcmlnaW5hbCBzdGF0ZS4KPj4gPsKgwqAqLwo+PiA+wqBzdGF0aWMgdm9pZAo+PiA+LW1l bXR4X3RyZWVfZnVuY19pbmRleF9yZXBsYWNlX3JvbGxiYWNrKHN0cnVjdCBtZW10eF90cmVlX2lu ZGV4ICppbmRleCwKPj4gPittZW10eF90cmVlX2Z1bmNfaW5kZXhfcmVwbGFjZV9yb2xsYmFjayhz dHJ1Y3QgbWVtdHhfdHJlZV9pbmRleDwxPiAqaW5kZXgsCj4+ID7CoCBzdHJ1Y3Qgcmxpc3QgKm9s ZF9rZXlzLAo+PiA+wqAgc3RydWN0IHJsaXN0ICpuZXdfa2V5cykKPj4gPsKgewo+PiA+QEAgLTkx OSw3ICsxMDUyLDcgQEAgbWVtdHhfdHJlZV9mdW5jX2luZGV4X3JlcGxhY2Uoc3RydWN0IGluZGV4 ICpiYXNlLCBzdHJ1Y3QgdHVwbGUgKm9sZF90dXBsZSwKPj4gPsKgIHN0cnVjdCB0dXBsZSAqbmV3 X3R1cGxlLCBlbnVtIGR1cF9yZXBsYWNlX21vZGUgbW9kZSwKPj4gPsKgIHN0cnVjdCB0dXBsZSAq KnJlc3VsdCkKPj4gPsKgewo+PiA+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqaW5kZXggPSAo c3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKiliYXNlOwo+PiA+KyBzdHJ1Y3QgbWVtdHhfdHJlZV9p bmRleDwxPiAqaW5kZXggPSAoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXg8MT4gKiliYXNlOwo+PiA+ wqAgc3RydWN0IGluZGV4X2RlZiAqaW5kZXhfZGVmID0gaW5kZXgtPmJhc2UuZGVmOwo+PiA+wqAg YXNzZXJ0KGluZGV4X2RlZi0+a2V5X2RlZi0+Zm9yX2Z1bmNfaW5kZXgpOwo+PiA+wqAKPj4gPkBA IC05NTIsNyArMTA4NSw3IEBAIG1lbXR4X3RyZWVfZnVuY19pbmRleF9yZXBsYWNlKHN0cnVjdCBp bmRleCAqYmFzZSwgc3RydWN0IHR1cGxlICpvbGRfdHVwbGUsCj4+ID7CoCB1bmRvLT5rZXkuaGlu dCA9IChoaW50X3Qpa2V5Owo+PiA+wqAgcmxpc3RfYWRkKCZuZXdfa2V5cywgJnVuZG8tPmxpbmsp Owo+PiA+wqAgYm9vbCBpc19tdWx0aWtleV9jb25mbGljdDsKPj4gPi0gc3RydWN0IG1lbXR4X3Ry ZWVfZGF0YSBvbGRfZGF0YTsKPj4gPisgc3RydWN0IG1lbXR4X3RyZWVfZGF0YTwxPiBvbGRfZGF0 YTsKPj4gPsKgIG9sZF9kYXRhLnR1cGxlID0gTlVMTDsKPj4gPsKgIGVyciA9IG1lbXR4X3RyZWVf aW5kZXhfcmVwbGFjZV9tdWx0aWtleV9vbmUoaW5kZXgsCj4+ID7CoCBvbGRfdHVwbGUsIG5ld190 dXBsZSwKPj4gPkBAIC0xMDE1LDcgKzExNDgsNyBAQCBtZW10eF90cmVlX2Z1bmNfaW5kZXhfcmVw bGFjZShzdHJ1Y3QgaW5kZXggKmJhc2UsIHN0cnVjdCB0dXBsZSAqb2xkX3R1cGxlLAo+PiA+wqAg aWYgKGtleV9saXN0X2l0ZXJhdG9yX2NyZWF0ZSgmaXQsIG9sZF90dXBsZSwgaW5kZXhfZGVmLCBm YWxzZSwKPj4gPsKgIGZ1bmNfaW5kZXhfa2V5X2R1bW15X2FsbG9jKSAhPSAwKQo+PiA+wqAgZ290 byBlbmQ7Cj4+ID4tIHN0cnVjdCBtZW10eF90cmVlX2RhdGEgZGF0YSwgZGVsZXRlZF9kYXRhOwo+ PiA+KyBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhPDE+IGRhdGEsIGRlbGV0ZWRfZGF0YTsKPj4gPsKg IGRhdGEudHVwbGUgPSBvbGRfdHVwbGU7Cj4+ID7CoCBjb25zdCBjaGFyICprZXk7Cj4+ID7CoCB3 aGlsZSAoa2V5X2xpc3RfaXRlcmF0b3JfbmV4dCgmaXQsICZrZXkpID09IDAgJiYga2V5ICE9IE5V TEwpIHsKPj4gPkBAIC0xMDQwLDExICsxMTczLDEzIEBAIGVuZDoKPj4gPsKgIHJldHVybiByYzsK Pj4gPsKgfQo+PiA+wqAKPj4gPit0ZW1wbGF0ZSA8aW50IFVTRV9ISU5UPgo+PiA+wqBzdGF0aWMg c3RydWN0IGl0ZXJhdG9yICoKPj4gPsKgbWVtdHhfdHJlZV9pbmRleF9jcmVhdGVfaXRlcmF0b3Io c3RydWN0IGluZGV4ICpiYXNlLCBlbnVtIGl0ZXJhdG9yX3R5cGUgdHlwZSwKPj4gPsKgIGNvbnN0 IGNoYXIgKmtleSwgdWludDMyX3QgcGFydF9jb3VudCkKPj4gPsKgewo+PiA+LSBzdHJ1Y3QgbWVt dHhfdHJlZV9pbmRleCAqaW5kZXggPSAoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKiliYXNlOwo+ PiA+KyBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleDxVU0VfSElOVD4gKmluZGV4ID0KPj4gPisgKHN0 cnVjdCBtZW10eF90cmVlX2luZGV4PFVTRV9ISU5UPiAqKWJhc2U7Cj4+ID7CoCBzdHJ1Y3QgbWVt dHhfZW5naW5lICptZW10eCA9IChzdHJ1Y3QgbWVtdHhfZW5naW5lICopYmFzZS0+ZW5naW5lOwo+ PiA+wqAgc3RydWN0IGtleV9kZWYgKmNtcF9kZWYgPSBtZW10eF90cmVlX2NtcF9kZWYoJmluZGV4 LT50cmVlKTsKPj4gPsKgCj4+ID5AQCAtMTA2NCw0MiArMTE5OSw0NyBAQCBtZW10eF90cmVlX2lu ZGV4X2NyZWF0ZV9pdGVyYXRvcihzdHJ1Y3QgaW5kZXggKmJhc2UsIGVudW0gaXRlcmF0b3JfdHlw ZSB0eXBlLAo+PiA+wqAga2V5ID0gTlVMTDsKPj4gPsKgIH0KPj4gPsKgCj4+ID4tIHN0cnVjdCB0 cmVlX2l0ZXJhdG9yICppdCA9IChzdHJ1Y3QgdHJlZV9pdGVyYXRvciAqKQo+PiA+KyBzdHJ1Y3Qg dHJlZV9pdGVyYXRvcjxVU0VfSElOVD4gKml0ID0gKHN0cnVjdCB0cmVlX2l0ZXJhdG9yPFVTRV9I SU5UPiAqKQo+PiA+wqAgbWVtcG9vbF9hbGxvYygmbWVtdHgtPml0ZXJhdG9yX3Bvb2wpOwo+PiA+ wqAgaWYgKGl0ID09IE5VTEwpIHsKPj4gPi0gZGlhZ19zZXQoT3V0T2ZNZW1vcnksIHNpemVvZihz dHJ1Y3QgdHJlZV9pdGVyYXRvciksCj4+ID4rIGRpYWdfc2V0KE91dE9mTWVtb3J5LCBzaXplb2Yo c3RydWN0IHRyZWVfaXRlcmF0b3I8VVNFX0hJTlQ+KSwKPj4gPsKgICJtZW10eF90cmVlX2luZGV4 IiwgIml0ZXJhdG9yIik7Cj4+ID7CoCByZXR1cm4gTlVMTDsKPj4gPsKgIH0KPj4gPsKgIGl0ZXJh dG9yX2NyZWF0ZSgmaXQtPmJhc2UsIGJhc2UpOwo+PiA+wqAgaXQtPnBvb2wgPSAmbWVtdHgtPml0 ZXJhdG9yX3Bvb2w7Cj4+ID4tIGl0LT5iYXNlLm5leHQgPSB0cmVlX2l0ZXJhdG9yX3N0YXJ0Owo+ PiA+LSBpdC0+YmFzZS5mcmVlID0gdHJlZV9pdGVyYXRvcl9mcmVlOwo+PiA+KyBpdC0+YmFzZS5u ZXh0ID0gdHJlZV9pdGVyYXRvcl9zdGFydDxVU0VfSElOVD47Cj4+ID4rIGl0LT5iYXNlLmZyZWUg PSB0cmVlX2l0ZXJhdG9yX2ZyZWU8VVNFX0hJTlQ+Owo+PiA+wqAgaXQtPnR5cGUgPSB0eXBlOwo+ PiA+wqAgaXQtPmtleV9kYXRhLmtleSA9IGtleTsKPj4gPsKgIGl0LT5rZXlfZGF0YS5wYXJ0X2Nv dW50ID0gcGFydF9jb3VudDsKPj4gPi0gaXQtPmtleV9kYXRhLmhpbnQgPSBrZXlfaGludChrZXks IHBhcnRfY291bnQsIGNtcF9kZWYpOwo+PiA+LSBpdC0+dHJlZV9pdGVyYXRvciA9IG1lbXR4X3Ry ZWVfaW52YWxpZF9pdGVyYXRvcigpOwo+PiA+KyBpZiAoVVNFX0hJTlQpCj4+ID4rIGl0LT5rZXlf ZGF0YS5zZXRfaGludChrZXlfaGludChrZXksIHBhcnRfY291bnQsIGNtcF9kZWYpKTsKPj4gPisg aW52YWxpZGF0ZV90cmVlX2l0ZXJhdG9yKCZpdC0+dHJlZV9pdGVyYXRvcik7Cj4+ID7CoCBpdC0+ Y3VycmVudC50dXBsZSA9IE5VTEw7Cj4+ID7CoCByZXR1cm4gKHN0cnVjdCBpdGVyYXRvciAqKWl0 Owo+PiA+wqB9Cj4+ID7CoAo+PiA+K3RlbXBsYXRlIDxpbnQgVVNFX0hJTlQ+Cj4+ID7CoHN0YXRp YyB2b2lkCj4+ID7CoG1lbXR4X3RyZWVfaW5kZXhfYmVnaW5fYnVpbGQoc3RydWN0IGluZGV4ICpi YXNlKQo+PiA+wqB7Cj4+ID4tIHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICppbmRleCA9IChzdHJ1 Y3QgbWVtdHhfdHJlZV9pbmRleCAqKWJhc2U7Cj4+ID4rIHN0cnVjdCBtZW10eF90cmVlX2luZGV4 PFVTRV9ISU5UPiAqaW5kZXggPQo+PiA+KyAoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXg8VVNFX0hJ TlQ+ICopYmFzZTsKPj4gPsKgIGFzc2VydChtZW10eF90cmVlX3NpemUoJmluZGV4LT50cmVlKSA9 PSAwKTsKPj4gPsKgICh2b2lkKWluZGV4Owo+PiA+wqB9Cj4+ID7CoAo+PiA+K3RlbXBsYXRlIDxp bnQgVVNFX0hJTlQ+Cj4+ID7CoHN0YXRpYyBpbnQKPj4gPsKgbWVtdHhfdHJlZV9pbmRleF9yZXNl cnZlKHN0cnVjdCBpbmRleCAqYmFzZSwgdWludDMyX3Qgc2l6ZV9oaW50KQo+PiA+wqB7Cj4+ID4t IHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICppbmRleCA9IChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRl eCAqKWJhc2U7Cj4+ID4rIHN0cnVjdCBtZW10eF90cmVlX2luZGV4PFVTRV9ISU5UPiAqaW5kZXgg PQo+PiA+KyAoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXg8VVNFX0hJTlQ+ICopYmFzZTsKPj4gPsKg IGlmIChzaXplX2hpbnQgPCBpbmRleC0+YnVpbGRfYXJyYXlfYWxsb2Nfc2l6ZSkKPj4gPsKgIHJl dHVybiAwOwo+PiA+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhICp0bXAgPQo+PiA+LSAoc3RydWN0 IG1lbXR4X3RyZWVfZGF0YSAqKQo+PiA+KyBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhPFVTRV9ISU5U PiAqdG1wID0KPj4gPisgKHN0cnVjdCBtZW10eF90cmVlX2RhdGE8VVNFX0hJTlQ+ICopCj4+ID7C oCByZWFsbG9jKGluZGV4LT5idWlsZF9hcnJheSwgc2l6ZV9oaW50ICogc2l6ZW9mKCp0bXApKTsK Pj4gPsKgIGlmICh0bXAgPT0gTlVMTCkgewo+PiA+wqAgZGlhZ19zZXQoT3V0T2ZNZW1vcnksIHNp emVfaGludCAqIHNpemVvZigqdG1wKSwKPj4gPkBAIC0xMTExLDE0ICsxMjUxLDE1IEBAIG1lbXR4 X3RyZWVfaW5kZXhfcmVzZXJ2ZShzdHJ1Y3QgaW5kZXggKmJhc2UsIHVpbnQzMl90IHNpemVfaGlu dCkKPj4gPsKgIHJldHVybiAwOwo+PiA+wqB9Cj4+ID7CoAo+PiA+K3RlbXBsYXRlIDxpbnQgVVNF X0hJTlQ+Cj4+ID7CoC8qKiBJbml0aWFsaXplIHRoZSBuZXh0IGVsZW1lbnQgb2YgdGhlIGluZGV4 IGJ1aWxkX2FycmF5LiAqLwo+PiA+wqBzdGF0aWMgaW50Cj4+ID4tbWVtdHhfdHJlZV9pbmRleF9i dWlsZF9hcnJheV9hcHBlbmQoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKmluZGV4LAo+PiA+K21l bXR4X3RyZWVfaW5kZXhfYnVpbGRfYXJyYXlfYXBwZW5kKHN0cnVjdCBtZW10eF90cmVlX2luZGV4 PFVTRV9ISU5UPiAqaW5kZXgsCj4+ID7CoCBzdHJ1Y3QgdHVwbGUgKnR1cGxlLCBoaW50X3QgaGlu dCkKPj4gPsKgewo+PiA+wqAgaWYgKGluZGV4LT5idWlsZF9hcnJheSA9PSBOVUxMKSB7Cj4+ID7C oCBpbmRleC0+YnVpbGRfYXJyYXkgPQo+PiA+LSAoc3RydWN0IG1lbXR4X3RyZWVfZGF0YSAqKW1h bGxvYyhNRU1UWF9FWFRFTlRfU0laRSk7Cj4+ID4rIChzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhPFVT RV9ISU5UPiAqKW1hbGxvYyhNRU1UWF9FWFRFTlRfU0laRSk7Cj4+ID7CoCBpZiAoaW5kZXgtPmJ1 aWxkX2FycmF5ID09IE5VTEwpIHsKPj4gPsKgIGRpYWdfc2V0KE91dE9mTWVtb3J5LCBNRU1UWF9F WFRFTlRfU0laRSwKPj4gPsKgICJtZW10eF90cmVlX2luZGV4IiwgImJ1aWxkX25leHQiKTsKPj4g PkBAIC0xMTMxLDggKzEyNzIsOCBAQCBtZW10eF90cmVlX2luZGV4X2J1aWxkX2FycmF5X2FwcGVu ZChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqaW5kZXgsCj4+ID7CoCBpZiAoaW5kZXgtPmJ1aWxk X2FycmF5X3NpemUgPT0gaW5kZXgtPmJ1aWxkX2FycmF5X2FsbG9jX3NpemUpIHsKPj4gPsKgIGlu ZGV4LT5idWlsZF9hcnJheV9hbGxvY19zaXplID0gaW5kZXgtPmJ1aWxkX2FycmF5X2FsbG9jX3Np emUgKwo+PiA+wqAgRElWX1JPVU5EX1VQKGluZGV4LT5idWlsZF9hcnJheV9hbGxvY19zaXplLCAy KTsKPj4gPi0gc3RydWN0IG1lbXR4X3RyZWVfZGF0YSAqdG1wID0KPj4gPi0gKHN0cnVjdCBtZW10 eF90cmVlX2RhdGEgKilyZWFsbG9jKGluZGV4LT5idWlsZF9hcnJheSwKPj4gPisgc3RydWN0IG1l bXR4X3RyZWVfZGF0YTxVU0VfSElOVD4gKnRtcCA9Cj4+ID4rIChzdHJ1Y3QgbWVtdHhfdHJlZV9k YXRhPFVTRV9ISU5UPiAqKXJlYWxsb2MoaW5kZXgtPmJ1aWxkX2FycmF5LAo+PiA+wqAgaW5kZXgt PmJ1aWxkX2FycmF5X2FsbG9jX3NpemUgKiBzaXplb2YoKnRtcCkpOwo+PiA+wqAgaWYgKHRtcCA9 PSBOVUxMKSB7Cj4+ID7CoCBkaWFnX3NldChPdXRPZk1lbW9yeSwgaW5kZXgtPmJ1aWxkX2FycmF5 X2FsbG9jX3NpemUgKgo+PiA+QEAgLTExNDEsMTcgKzEyODIsMjAgQEAgbWVtdHhfdHJlZV9pbmRl eF9idWlsZF9hcnJheV9hcHBlbmQoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKmluZGV4LAo+PiA+ wqAgfQo+PiA+wqAgaW5kZXgtPmJ1aWxkX2FycmF5ID0gdG1wOwo+PiA+wqAgfQo+PiA+LSBzdHJ1 Y3QgbWVtdHhfdHJlZV9kYXRhICplbGVtID0KPj4gPisgc3RydWN0IG1lbXR4X3RyZWVfZGF0YTxV U0VfSElOVD4gKmVsZW0gPQo+PiA+wqAgJmluZGV4LT5idWlsZF9hcnJheVtpbmRleC0+YnVpbGRf YXJyYXlfc2l6ZSsrXTsKPj4gPsKgIGVsZW0tPnR1cGxlID0gdHVwbGU7Cj4+ID4tIGVsZW0tPmhp bnQgPSBoaW50Owo+PiA+KyBpZiAoVVNFX0hJTlQpCj4+ID4rIGVsZW0tPnNldF9oaW50KGhpbnQp Owo+PiA+wqAgcmV0dXJuIDA7Cj4+ID7CoH0KPj4gPsKgCj4+ID4rdGVtcGxhdGUgPGludCBVU0Vf SElOVD4KPj4gPsKgc3RhdGljIGludAo+PiA+wqBtZW10eF90cmVlX2luZGV4X2J1aWxkX25leHQo c3RydWN0IGluZGV4ICpiYXNlLCBzdHJ1Y3QgdHVwbGUgKnR1cGxlKQo+PiA+wqB7Cj4+ID4tIHN0 cnVjdCBtZW10eF90cmVlX2luZGV4ICppbmRleCA9IChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAq KWJhc2U7Cj4+ID4rIHN0cnVjdCBtZW10eF90cmVlX2luZGV4PFVTRV9ISU5UPiAqaW5kZXggPQo+ PiA+KyAoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXg8VVNFX0hJTlQ+ICopYmFzZTsKPj4gPsKgIHN0 cnVjdCBrZXlfZGVmICpjbXBfZGVmID0gbWVtdHhfdHJlZV9jbXBfZGVmKCZpbmRleC0+dHJlZSk7 Cj4+ID7CoCByZXR1cm4gbWVtdHhfdHJlZV9pbmRleF9idWlsZF9hcnJheV9hcHBlbmQoaW5kZXgs IHR1cGxlLAo+PiA+wqAgdHVwbGVfaGludCh0dXBsZSwgY21wX2RlZikpOwo+PiA+QEAgLTExNjAs NyArMTMwNCw3IEBAIG1lbXR4X3RyZWVfaW5kZXhfYnVpbGRfbmV4dChzdHJ1Y3QgaW5kZXggKmJh c2UsIHN0cnVjdCB0dXBsZSAqdHVwbGUpCj4+ID7CoHN0YXRpYyBpbnQKPj4gPsKgbWVtdHhfdHJl ZV9pbmRleF9idWlsZF9uZXh0X211bHRpa2V5KHN0cnVjdCBpbmRleCAqYmFzZSwgc3RydWN0IHR1 cGxlICp0dXBsZSkKPj4gPsKgewo+PiA+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqaW5kZXgg PSAoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKiliYXNlOwo+PiA+KyBzdHJ1Y3QgbWVtdHhfdHJl ZV9pbmRleDwxPiAqaW5kZXggPSAoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXg8MT4gKiliYXNlOwo+ PiA+wqAgc3RydWN0IGtleV9kZWYgKmNtcF9kZWYgPSBtZW10eF90cmVlX2NtcF9kZWYoJmluZGV4 LT50cmVlKTsKPj4gPsKgIHVpbnQzMl90IG11bHRpa2V5X2NvdW50ID0gdHVwbGVfbXVsdGlrZXlf Y291bnQodHVwbGUsIGNtcF9kZWYpOwo+PiA+wqAgZm9yICh1aW50MzJfdCBtdWx0aWtleV9pZHgg PSAwOyBtdWx0aWtleV9pZHggPCBtdWx0aWtleV9jb3VudDsKPj4gPkBAIC0xMTc1LDcgKzEzMTks NyBAQCBtZW10eF90cmVlX2luZGV4X2J1aWxkX25leHRfbXVsdGlrZXkoc3RydWN0IGluZGV4ICpi YXNlLCBzdHJ1Y3QgdHVwbGUgKnR1cGxlKQo+PiA+wqBzdGF0aWMgaW50Cj4+ID7CoG1lbXR4X3Ry ZWVfZnVuY19pbmRleF9idWlsZF9uZXh0KHN0cnVjdCBpbmRleCAqYmFzZSwgc3RydWN0IHR1cGxl ICp0dXBsZSkKPj4gPsKgewo+PiA+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqaW5kZXggPSAo c3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKiliYXNlOwo+PiA+KyBzdHJ1Y3QgbWVtdHhfdHJlZV9p bmRleDwxPiAqaW5kZXggPSAoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXg8MT4gKiliYXNlOwo+PiA+ wqAgc3RydWN0IGluZGV4X2RlZiAqaW5kZXhfZGVmID0gaW5kZXgtPmJhc2UuZGVmOwo+PiA+wqAg YXNzZXJ0KGluZGV4X2RlZi0+a2V5X2RlZi0+Zm9yX2Z1bmNfaW5kZXgpOwo+PiA+wqAKPj4gPkBA IC0xMjExLDggKzEzNTUsOSBAQCBlcnJvcjoKPj4gPsKgwqAqIG9mIGVxdWFsIHR1cGxlcyAoaW4g dGVybXMgb2YgaW5kZXgncyBjbXBfZGVmIGFuZCBoYXZlIHNhbWUKPj4gPsKgwqAqIHR1cGxlIHBv aW50ZXIpLiBUaGUgYnVpbGRfYXJyYXkgaXMgZXhwZWN0ZWQgdG8gYmUgc29ydGVkLgo+PiA+wqDC oCovCj4+ID4rdGVtcGxhdGUgPGludCBVU0VfSElOVD4KPj4gPsKgc3RhdGljIHZvaWQKPj4gPi1t ZW10eF90cmVlX2luZGV4X2J1aWxkX2FycmF5X2RlZHVwbGljYXRlKHN0cnVjdCBtZW10eF90cmVl X2luZGV4ICppbmRleCwKPj4gPittZW10eF90cmVlX2luZGV4X2J1aWxkX2FycmF5X2RlZHVwbGlj YXRlKHN0cnVjdCBtZW10eF90cmVlX2luZGV4PFVTRV9ISU5UPiAqaW5kZXgsCj4+ID7CoCB2b2lk ICgqZGVzdHJveSkoc3RydWN0IHR1cGxlICp0dXBsZSwgY29uc3QgY2hhciAqaGludCkpCj4+ID7C oHsKPj4gPsKgIGlmIChpbmRleC0+YnVpbGRfYXJyYXlfc2l6ZSA9PSAwKQo+PiA+QEAgLTEyNDYs MTMgKzEzOTEsMTYgQEAgbWVtdHhfdHJlZV9pbmRleF9idWlsZF9hcnJheV9kZWR1cGxpY2F0ZShz dHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqaW5kZXgsCj4+ID7CoCBpbmRleC0+YnVpbGRfYXJyYXlf c2l6ZSA9IHdfaWR4ICsgMTsKPj4gPsKgfQo+PiA+wqAKPj4gPit0ZW1wbGF0ZSA8aW50IFVTRV9I SU5UPgo+PiA+wqBzdGF0aWMgdm9pZAo+PiA+wqBtZW10eF90cmVlX2luZGV4X2VuZF9idWlsZChz dHJ1Y3QgaW5kZXggKmJhc2UpCj4+ID7CoHsKPj4gPi0gc3RydWN0IG1lbXR4X3RyZWVfaW5kZXgg KmluZGV4ID0gKHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICopYmFzZTsKPj4gPisgc3RydWN0IG1l bXR4X3RyZWVfaW5kZXg8VVNFX0hJTlQ+ICppbmRleCA9Cj4+ID4rIChzdHJ1Y3QgbWVtdHhfdHJl ZV9pbmRleDxVU0VfSElOVD4gKiliYXNlOwo+PiA+wqAgc3RydWN0IGtleV9kZWYgKmNtcF9kZWYg PSBtZW10eF90cmVlX2NtcF9kZWYoJmluZGV4LT50cmVlKTsKPj4gPsKgIHFzb3J0X2FyZyhpbmRl eC0+YnVpbGRfYXJyYXksIGluZGV4LT5idWlsZF9hcnJheV9zaXplLAo+PiA+LSBzaXplb2YoaW5k ZXgtPmJ1aWxkX2FycmF5WzBdKSwgbWVtdHhfdHJlZV9xY29tcGFyZSwgY21wX2RlZik7Cj4+ID4r IHNpemVvZihpbmRleC0+YnVpbGRfYXJyYXlbMF0pLAo+PiA+KyBtZW10eF90cmVlX3Fjb21wYXJl PFVTRV9ISU5UPiwgY21wX2RlZik7Cj4+ID7CoCBpZiAoY21wX2RlZi0+aXNfbXVsdGlrZXkpIHsK Pj4gPsKgIC8qCj4+ID7CoCAqIE11bHRpa2V5IGluZGV4IG1heSBoYXZlIGVxdWFsKGluIHRlcm1z IG9mCj4+ID5AQCAtMTI2MSw5ICsxNDA5LDkgQEAgbWVtdHhfdHJlZV9pbmRleF9lbmRfYnVpbGQo c3RydWN0IGluZGV4ICpiYXNlKQo+PiA+wqAgKiB0aGUgZm9sbG93aW5nIG1lbXR4X3RyZWVfYnVp bGQgYXNzdW1lcyB0aGF0Cj4+ID7CoCAqIGFsbCBrZXlzIGFyZSB1bmlxdWUuCj4+ID7CoCAqLwo+ PiA+LSBtZW10eF90cmVlX2luZGV4X2J1aWxkX2FycmF5X2RlZHVwbGljYXRlKGluZGV4LCBOVUxM KTsKPj4gPisgbWVtdHhfdHJlZV9pbmRleF9idWlsZF9hcnJheV9kZWR1cGxpY2F0ZTxVU0VfSElO VD4oaW5kZXgsIE5VTEwpOwo+PiA+wqAgfSBlbHNlIGlmIChjbXBfZGVmLT5mb3JfZnVuY19pbmRl eCkgewo+PiA+LSBtZW10eF90cmVlX2luZGV4X2J1aWxkX2FycmF5X2RlZHVwbGljYXRlKGluZGV4 LAo+PiA+KyBtZW10eF90cmVlX2luZGV4X2J1aWxkX2FycmF5X2RlZHVwbGljYXRlPFVTRV9ISU5U PihpbmRleCwKPj4gPsKgIHR1cGxlX2NodW5rX2RlbGV0ZSk7Cj4+ID7CoCB9Cj4+ID7CoCBtZW10 eF90cmVlX2J1aWxkKCZpbmRleC0+dHJlZSwgaW5kZXgtPmJ1aWxkX2FycmF5LAo+PiA+QEAgLTEy NzUsMTkgKzE0MjMsMjEgQEAgbWVtdHhfdHJlZV9pbmRleF9lbmRfYnVpbGQoc3RydWN0IGluZGV4 ICpiYXNlKQo+PiA+wqAgaW5kZXgtPmJ1aWxkX2FycmF5X2FsbG9jX3NpemUgPSAwOwo+PiA+wqB9 Cj4+ID7CoAo+PiA+K3RlbXBsYXRlIDxpbnQgVVNFX0hJTlQ+Cj4+ID7CoHN0cnVjdCB0cmVlX3Nu YXBzaG90X2l0ZXJhdG9yIHsKPj4gPsKgIHN0cnVjdCBzbmFwc2hvdF9pdGVyYXRvciBiYXNlOwo+ PiA+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqaW5kZXg7Cj4+ID4tIHN0cnVjdCBtZW10eF90 cmVlX2l0ZXJhdG9yIHRyZWVfaXRlcmF0b3I7Cj4+ID4rIHN0cnVjdCBtZW10eF90cmVlX2luZGV4 PFVTRV9ISU5UPiAqaW5kZXg7Cj4+ID4rIG1lbXR4X3RyZWVfaXRlcmF0b3JfdDxVU0VfSElOVD4g dHJlZV9pdGVyYXRvcjsKPj4gPsKgIHN0cnVjdCBtZW10eF90eF9zbmFwc2hvdF9jbGVhbmVyIGNs ZWFuZXI7Cj4+ID7CoH07Cj4+ID7CoAo+PiA+K3RlbXBsYXRlIDxpbnQgVVNFX0hJTlQ+Cj4+ID7C oHN0YXRpYyB2b2lkCj4+ID7CoHRyZWVfc25hcHNob3RfaXRlcmF0b3JfZnJlZShzdHJ1Y3Qgc25h cHNob3RfaXRlcmF0b3IgKml0ZXJhdG9yKQo+PiA+wqB7Cj4+ID4tIGFzc2VydChpdGVyYXRvci0+ ZnJlZSA9PSB0cmVlX3NuYXBzaG90X2l0ZXJhdG9yX2ZyZWUpOwo+PiA+LSBzdHJ1Y3QgdHJlZV9z bmFwc2hvdF9pdGVyYXRvciAqaXQgPQo+PiA+LSAoc3RydWN0IHRyZWVfc25hcHNob3RfaXRlcmF0 b3IgKilpdGVyYXRvcjsKPj4gPisgYXNzZXJ0KGl0ZXJhdG9yLT5mcmVlID09ICZ0cmVlX3NuYXBz aG90X2l0ZXJhdG9yX2ZyZWU8VVNFX0hJTlQ+KTsKPj4gPisgc3RydWN0IHRyZWVfc25hcHNob3Rf aXRlcmF0b3I8VVNFX0hJTlQ+ICppdCA9Cj4+ID4rIChzdHJ1Y3QgdHJlZV9zbmFwc2hvdF9pdGVy YXRvcjxVU0VfSElOVD4gKilpdGVyYXRvcjsKPj4gPsKgIG1lbXR4X2xlYXZlX2RlbGF5ZWRfZnJl ZV9tb2RlKChzdHJ1Y3QgbWVtdHhfZW5naW5lICopCj4+ID7CoCBpdC0+aW5kZXgtPmJhc2UuZW5n aW5lKTsKPj4gPsKgIG1lbXR4X3RyZWVfaXRlcmF0b3JfZGVzdHJveSgmaXQtPmluZGV4LT50cmVl LCAmaXQtPnRyZWVfaXRlcmF0b3IpOwo+PiA+QEAgLTEyOTYsMTcgKzE0NDYsMTggQEAgdHJlZV9z bmFwc2hvdF9pdGVyYXRvcl9mcmVlKHN0cnVjdCBzbmFwc2hvdF9pdGVyYXRvciAqaXRlcmF0b3Ip Cj4+ID7CoCBmcmVlKGl0ZXJhdG9yKTsKPj4gPsKgfQo+PiA+wqAKPj4gPit0ZW1wbGF0ZSA8aW50 IFVTRV9ISU5UPgo+PiA+wqBzdGF0aWMgaW50Cj4+ID7CoHRyZWVfc25hcHNob3RfaXRlcmF0b3Jf bmV4dChzdHJ1Y3Qgc25hcHNob3RfaXRlcmF0b3IgKml0ZXJhdG9yLAo+PiA+wqAgY29uc3QgY2hh ciAqKmRhdGEsIHVpbnQzMl90ICpzaXplKQo+PiA+wqB7Cj4+ID4tIGFzc2VydChpdGVyYXRvci0+ ZnJlZSA9PSB0cmVlX3NuYXBzaG90X2l0ZXJhdG9yX2ZyZWUpOwo+PiA+LSBzdHJ1Y3QgdHJlZV9z bmFwc2hvdF9pdGVyYXRvciAqaXQgPQo+PiA+LSAoc3RydWN0IHRyZWVfc25hcHNob3RfaXRlcmF0 b3IgKilpdGVyYXRvcjsKPj4gPi0gc3RydWN0IG1lbXR4X3RyZWUgKnRyZWUgPSAmaXQtPmluZGV4 LT50cmVlOwo+PiA+KyBhc3NlcnQoaXRlcmF0b3ItPmZyZWUgPT0gJnRyZWVfc25hcHNob3RfaXRl cmF0b3JfZnJlZTxVU0VfSElOVD4pOwo+PiA+KyBzdHJ1Y3QgdHJlZV9zbmFwc2hvdF9pdGVyYXRv cjxVU0VfSElOVD4gKml0ID0KPj4gPisgKHN0cnVjdCB0cmVlX3NuYXBzaG90X2l0ZXJhdG9yPFVT RV9ISU5UPiAqKWl0ZXJhdG9yOwo+PiA+KyBtZW10eF90cmVlX3Q8VVNFX0hJTlQ+ICp0cmVlID0g Jml0LT5pbmRleC0+dHJlZTsKPj4gPsKgCj4+ID7CoCB3aGlsZSAodHJ1ZSkgewo+PiA+LSBzdHJ1 Y3QgbWVtdHhfdHJlZV9kYXRhICpyZXMgPQo+PiA+KyBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhPFVT RV9ISU5UPiAqcmVzID0KPj4gPsKgIG1lbXR4X3RyZWVfaXRlcmF0b3JfZ2V0X2VsZW0odHJlZSwg Jml0LT50cmVlX2l0ZXJhdG9yKTsKPj4gPsKgCj4+ID7CoCBpZiAocmVzID09IE5VTEwpIHsKPj4g PkBAIC0xMzMzLDE0ICsxNDg0LDE4IEBAIHRyZWVfc25hcHNob3RfaXRlcmF0b3JfbmV4dChzdHJ1 Y3Qgc25hcHNob3RfaXRlcmF0b3IgKml0ZXJhdG9yLAo+PiA+wqDCoCogaW5kZXggbW9kaWZpY2F0 aW9ucyB3aWxsIG5vdCBhZmZlY3QgdGhlIGl0ZXJhdGlvbiByZXN1bHRzLgo+PiA+wqDCoCogTXVz dCBiZSBkZXN0cm95ZWQgYnkgaXRlcmF0b3ItPmZyZWUgYWZ0ZXIgdXNhZ2UuCj4+ID7CoMKgKi8K Pj4gPit0ZW1wbGF0ZSA8aW50IFVTRV9ISU5UPgo+PiA+wqBzdGF0aWMgc3RydWN0IHNuYXBzaG90 X2l0ZXJhdG9yICoKPj4gPsKgbWVtdHhfdHJlZV9pbmRleF9jcmVhdGVfc25hcHNob3RfaXRlcmF0 b3Ioc3RydWN0IGluZGV4ICpiYXNlKQo+PiA+wqB7Cj4+ID4tIHN0cnVjdCBtZW10eF90cmVlX2lu ZGV4ICppbmRleCA9IChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqKWJhc2U7Cj4+ID4tIHN0cnVj dCB0cmVlX3NuYXBzaG90X2l0ZXJhdG9yICppdCA9Cj4+ID4tIChzdHJ1Y3QgdHJlZV9zbmFwc2hv dF9pdGVyYXRvciAqKSBjYWxsb2MoMSwgc2l6ZW9mKCppdCkpOwo+PiA+KyBzdHJ1Y3QgbWVtdHhf dHJlZV9pbmRleDxVU0VfSElOVD4gKmluZGV4ID0KPj4gPisgKHN0cnVjdCBtZW10eF90cmVlX2lu ZGV4PFVTRV9ISU5UPiAqKWJhc2U7Cj4+ID4rIHN0cnVjdCB0cmVlX3NuYXBzaG90X2l0ZXJhdG9y PFVTRV9ISU5UPiAqaXQgPQo+PiA+KyAoc3RydWN0IHRyZWVfc25hcHNob3RfaXRlcmF0b3I8VVNF X0hJTlQ+ICopCj4+ID4rIGNhbGxvYygxLCBzaXplb2YoKml0KSk7Cj4+ID7CoCBpZiAoaXQgPT0g TlVMTCkgewo+PiA+LSBkaWFnX3NldChPdXRPZk1lbW9yeSwgc2l6ZW9mKHN0cnVjdCB0cmVlX3Nu YXBzaG90X2l0ZXJhdG9yKSwKPj4gPisgZGlhZ19zZXQoT3V0T2ZNZW1vcnksCj4+ID4rIHNpemVv ZihzdHJ1Y3QgdHJlZV9zbmFwc2hvdF9pdGVyYXRvcjxVU0VfSElOVD4pLAo+PiA+wqAgIm1lbXR4 X3RyZWVfaW5kZXgiLCAiY3JlYXRlX3NuYXBzaG90X2l0ZXJhdG9yIik7Cj4+ID7CoCByZXR1cm4g TlVMTDsKPj4gPsKgIH0KPj4gPkBAIC0xMzUyLDggKzE1MDcsOCBAQCBtZW10eF90cmVlX2luZGV4 X2NyZWF0ZV9zbmFwc2hvdF9pdGVyYXRvcihzdHJ1Y3QgaW5kZXggKmJhc2UpCj4+ID7CoCByZXR1 cm4gTlVMTDsKPj4gPsKgIH0KPj4gPsKgCj4+ID4tIGl0LT5iYXNlLmZyZWUgPSB0cmVlX3NuYXBz aG90X2l0ZXJhdG9yX2ZyZWU7Cj4+ID4tIGl0LT5iYXNlLm5leHQgPSB0cmVlX3NuYXBzaG90X2l0 ZXJhdG9yX25leHQ7Cj4+ID4rIGl0LT5iYXNlLmZyZWUgPSB0cmVlX3NuYXBzaG90X2l0ZXJhdG9y X2ZyZWU8VVNFX0hJTlQ+Owo+PiA+KyBpdC0+YmFzZS5uZXh0ID0gdHJlZV9zbmFwc2hvdF9pdGVy YXRvcl9uZXh0PFVTRV9ISU5UPjsKPj4gPsKgIGl0LT5pbmRleCA9IGluZGV4Owo+PiA+wqAgaW5k ZXhfcmVmKGJhc2UpOwo+PiA+wqAgaXQtPnRyZWVfaXRlcmF0b3IgPSBtZW10eF90cmVlX2l0ZXJh dG9yX2ZpcnN0KCZpbmRleC0+dHJlZSk7Cj4+ID5AQCAtMTM2Miw5NCArMTUxNywxMjQgQEAgbWVt dHhfdHJlZV9pbmRleF9jcmVhdGVfc25hcHNob3RfaXRlcmF0b3Ioc3RydWN0IGluZGV4ICpiYXNl KQo+PiA+wqAgcmV0dXJuIChzdHJ1Y3Qgc25hcHNob3RfaXRlcmF0b3IgKikgaXQ7Cj4+ID7CoH0K Pj4gPsKgCj4+ID4tc3RhdGljIGNvbnN0IHN0cnVjdCBpbmRleF92dGFiIG1lbXR4X3RyZWVfaW5k ZXhfdnRhYiA9IHsKPj4gPi0gLyogLmRlc3Ryb3kgPSAqLyBtZW10eF90cmVlX2luZGV4X2Rlc3Ry b3ksCj4+ID4rc3RhdGljIGNvbnN0IHN0cnVjdCBpbmRleF92dGFiIG1lbXR4X3RyZWVfbm9faGlu dF9pbmRleF92dGFiID0gewo+PiA+KyAvKiAuZGVzdHJveSA9ICovIG1lbXR4X3RyZWVfaW5kZXhf ZGVzdHJveTwwPiwKPj4gPsKgIC8qIC5jb21taXRfY3JlYXRlID0gKi8gZ2VuZXJpY19pbmRleF9j b21taXRfY3JlYXRlLAo+PiA+wqAgLyogLmFib3J0X2NyZWF0ZSA9ICovIGdlbmVyaWNfaW5kZXhf YWJvcnRfY3JlYXRlLAo+PiA+wqAgLyogLmNvbW1pdF9tb2RpZnkgPSAqLyBnZW5lcmljX2luZGV4 X2NvbW1pdF9tb2RpZnksCj4+ID7CoCAvKiAuY29tbWl0X2Ryb3AgPSAqLyBnZW5lcmljX2luZGV4 X2NvbW1pdF9kcm9wLAo+PiA+LSAvKiAudXBkYXRlX2RlZiA9ICovIG1lbXR4X3RyZWVfaW5kZXhf dXBkYXRlX2RlZiwKPj4gPisgLyogLnVwZGF0ZV9kZWYgPSAqLyBtZW10eF90cmVlX2luZGV4X3Vw ZGF0ZV9kZWY8MD4sCj4+ID7CoCAvKiAuZGVwZW5kc19vbl9wayA9ICovIG1lbXR4X3RyZWVfaW5k ZXhfZGVwZW5kc19vbl9waywKPj4gPsKgIC8qIC5kZWZfY2hhbmdlX3JlcXVpcmVzX3JlYnVpbGQg PSAqLwo+PiA+wqAgbWVtdHhfaW5kZXhfZGVmX2NoYW5nZV9yZXF1aXJlc19yZWJ1aWxkLAo+PiA+ LSAvKiAuc2l6ZSA9ICovIG1lbXR4X3RyZWVfaW5kZXhfc2l6ZSwKPj4gPi0gLyogLmJzaXplID0g Ki8gbWVtdHhfdHJlZV9pbmRleF9ic2l6ZSwKPj4gPisgLyogLnNpemUgPSAqLyBtZW10eF90cmVl X2luZGV4X3NpemU8MD4sCj4+ID4rIC8qIC5ic2l6ZSA9ICovIG1lbXR4X3RyZWVfaW5kZXhfYnNp emU8MD4sCj4+ID7CoCAvKiAubWluID0gKi8gZ2VuZXJpY19pbmRleF9taW4sCj4+ID7CoCAvKiAu bWF4ID0gKi8gZ2VuZXJpY19pbmRleF9tYXgsCj4+ID4tIC8qIC5yYW5kb20gPSAqLyBtZW10eF90 cmVlX2luZGV4X3JhbmRvbSwKPj4gPi0gLyogLmNvdW50ID0gKi8gbWVtdHhfdHJlZV9pbmRleF9j b3VudCwKPj4gPi0gLyogLmdldCA9ICovIG1lbXR4X3RyZWVfaW5kZXhfZ2V0LAo+PiA+LSAvKiAu cmVwbGFjZSA9ICovIG1lbXR4X3RyZWVfaW5kZXhfcmVwbGFjZSwKPj4gPi0gLyogLmNyZWF0ZV9p dGVyYXRvciA9ICovIG1lbXR4X3RyZWVfaW5kZXhfY3JlYXRlX2l0ZXJhdG9yLAo+PiA+KyAvKiAu cmFuZG9tID0gKi8gbWVtdHhfdHJlZV9pbmRleF9yYW5kb208MD4sCj4+ID4rIC8qIC5jb3VudCA9 ICovIG1lbXR4X3RyZWVfaW5kZXhfY291bnQ8MD4sCj4+ID4rIC8qIC5nZXQgPSAqLyBtZW10eF90 cmVlX2luZGV4X2dldDwwPiwKPj4gPisgLyogLnJlcGxhY2UgPSAqLyBtZW10eF90cmVlX2luZGV4 X3JlcGxhY2U8MD4sCj4+ID4rIC8qIC5jcmVhdGVfaXRlcmF0b3IgPSAqLyBtZW10eF90cmVlX2lu ZGV4X2NyZWF0ZV9pdGVyYXRvcjwwPiwKPj4gPsKgIC8qIC5jcmVhdGVfc25hcHNob3RfaXRlcmF0 b3IgPSAqLwo+PiA+LSBtZW10eF90cmVlX2luZGV4X2NyZWF0ZV9zbmFwc2hvdF9pdGVyYXRvciwK Pj4gPisgbWVtdHhfdHJlZV9pbmRleF9jcmVhdGVfc25hcHNob3RfaXRlcmF0b3I8MD4sCj4+ID7C oCAvKiAuc3RhdCA9ICovIGdlbmVyaWNfaW5kZXhfc3RhdCwKPj4gPsKgIC8qIC5jb21wYWN0ID0g Ki8gZ2VuZXJpY19pbmRleF9jb21wYWN0LAo+PiA+wqAgLyogLnJlc2V0X3N0YXQgPSAqLyBnZW5l cmljX2luZGV4X3Jlc2V0X3N0YXQsCj4+ID4tIC8qIC5iZWdpbl9idWlsZCA9ICovIG1lbXR4X3Ry ZWVfaW5kZXhfYmVnaW5fYnVpbGQsCj4+ID4tIC8qIC5yZXNlcnZlID0gKi8gbWVtdHhfdHJlZV9p bmRleF9yZXNlcnZlLAo+PiA+LSAvKiAuYnVpbGRfbmV4dCA9ICovIG1lbXR4X3RyZWVfaW5kZXhf YnVpbGRfbmV4dCwKPj4gPi0gLyogLmVuZF9idWlsZCA9ICovIG1lbXR4X3RyZWVfaW5kZXhfZW5k X2J1aWxkLAo+PiA+KyAvKiAuYmVnaW5fYnVpbGQgPSAqLyBtZW10eF90cmVlX2luZGV4X2JlZ2lu X2J1aWxkPDA+LAo+PiA+KyAvKiAucmVzZXJ2ZSA9ICovIG1lbXR4X3RyZWVfaW5kZXhfcmVzZXJ2 ZTwwPiwKPj4gPisgLyogLmJ1aWxkX25leHQgPSAqLyBtZW10eF90cmVlX2luZGV4X2J1aWxkX25l eHQ8MD4sCj4+ID4rIC8qIC5lbmRfYnVpbGQgPSAqLyBtZW10eF90cmVlX2luZGV4X2VuZF9idWls ZDwwPiwKPj4gPit9Owo+PiA+Kwo+PiA+K3N0YXRpYyBjb25zdCBzdHJ1Y3QgaW5kZXhfdnRhYiBt ZW10eF90cmVlX3VzZV9oaW50X2luZGV4X3Z0YWIgPSB7Cj4+ID4rIC8qIC5kZXN0cm95ID0gKi8g bWVtdHhfdHJlZV9pbmRleF9kZXN0cm95PDE+LAo+PiA+KyAvKiAuY29tbWl0X2NyZWF0ZSA9ICov IGdlbmVyaWNfaW5kZXhfY29tbWl0X2NyZWF0ZSwKPj4gPisgLyogLmFib3J0X2NyZWF0ZSA9ICov IGdlbmVyaWNfaW5kZXhfYWJvcnRfY3JlYXRlLAo+PiA+KyAvKiAuY29tbWl0X21vZGlmeSA9ICov IGdlbmVyaWNfaW5kZXhfY29tbWl0X21vZGlmeSwKPj4gPisgLyogLmNvbW1pdF9kcm9wID0gKi8g Z2VuZXJpY19pbmRleF9jb21taXRfZHJvcCwKPj4gPisgLyogLnVwZGF0ZV9kZWYgPSAqLyBtZW10 eF90cmVlX2luZGV4X3VwZGF0ZV9kZWY8MT4sCj4+ID4rIC8qIC5kZXBlbmRzX29uX3BrID0gKi8g bWVtdHhfdHJlZV9pbmRleF9kZXBlbmRzX29uX3BrLAo+PiA+KyAvKiAuZGVmX2NoYW5nZV9yZXF1 aXJlc19yZWJ1aWxkID0gKi8KPj4gPisgbWVtdHhfaW5kZXhfZGVmX2NoYW5nZV9yZXF1aXJlc19y ZWJ1aWxkLAo+PiA+KyAvKiAuc2l6ZSA9ICovIG1lbXR4X3RyZWVfaW5kZXhfc2l6ZTwxPiwKPj4g PisgLyogLmJzaXplID0gKi8gbWVtdHhfdHJlZV9pbmRleF9ic2l6ZTwxPiwKPj4gPisgLyogLm1p biA9ICovIGdlbmVyaWNfaW5kZXhfbWluLAo+PiA+KyAvKiAubWF4ID0gKi8gZ2VuZXJpY19pbmRl eF9tYXgsCj4+ID4rIC8qIC5yYW5kb20gPSAqLyBtZW10eF90cmVlX2luZGV4X3JhbmRvbTwxPiwK Pj4gPisgLyogLmNvdW50ID0gKi8gbWVtdHhfdHJlZV9pbmRleF9jb3VudDwxPiwKPj4gPisgLyog LmdldCA9ICovIG1lbXR4X3RyZWVfaW5kZXhfZ2V0PDE+LAo+PiA+KyAvKiAucmVwbGFjZSA9ICov IG1lbXR4X3RyZWVfaW5kZXhfcmVwbGFjZTwxPiwKPj4gPisgLyogLmNyZWF0ZV9pdGVyYXRvciA9 ICovIG1lbXR4X3RyZWVfaW5kZXhfY3JlYXRlX2l0ZXJhdG9yPDE+LAo+PiA+KyAvKiAuY3JlYXRl X3NuYXBzaG90X2l0ZXJhdG9yID0gKi8KPj4gPisgbWVtdHhfdHJlZV9pbmRleF9jcmVhdGVfc25h cHNob3RfaXRlcmF0b3I8MT4sCj4+ID4rIC8qIC5zdGF0ID0gKi8gZ2VuZXJpY19pbmRleF9zdGF0 LAo+PiA+KyAvKiAuY29tcGFjdCA9ICovIGdlbmVyaWNfaW5kZXhfY29tcGFjdCwKPj4gPisgLyog LnJlc2V0X3N0YXQgPSAqLyBnZW5lcmljX2luZGV4X3Jlc2V0X3N0YXQsCj4+ID4rIC8qIC5iZWdp bl9idWlsZCA9ICovIG1lbXR4X3RyZWVfaW5kZXhfYmVnaW5fYnVpbGQ8MT4sCj4+ID4rIC8qIC5y ZXNlcnZlID0gKi8gbWVtdHhfdHJlZV9pbmRleF9yZXNlcnZlPDE+LAo+PiA+KyAvKiAuYnVpbGRf bmV4dCA9ICovIG1lbXR4X3RyZWVfaW5kZXhfYnVpbGRfbmV4dDwxPiwKPj4gPisgLyogLmVuZF9i dWlsZCA9ICovIG1lbXR4X3RyZWVfaW5kZXhfZW5kX2J1aWxkPDE+LAo+PiA+wqB9Owo+PiA+wqAK Pj4gPsKgc3RhdGljIGNvbnN0IHN0cnVjdCBpbmRleF92dGFiIG1lbXR4X3RyZWVfaW5kZXhfbXVs dGlrZXlfdnRhYiA9IHsKPj4gPi0gLyogLmRlc3Ryb3kgPSAqLyBtZW10eF90cmVlX2luZGV4X2Rl c3Ryb3ksCj4+ID4rIC8qIC5kZXN0cm95ID0gKi8gbWVtdHhfdHJlZV9pbmRleF9kZXN0cm95PDE+ LAo+PiA+wqAgLyogLmNvbW1pdF9jcmVhdGUgPSAqLyBnZW5lcmljX2luZGV4X2NvbW1pdF9jcmVh dGUsCj4+ID7CoCAvKiAuYWJvcnRfY3JlYXRlID0gKi8gZ2VuZXJpY19pbmRleF9hYm9ydF9jcmVh dGUsCj4+ID7CoCAvKiAuY29tbWl0X21vZGlmeSA9ICovIGdlbmVyaWNfaW5kZXhfY29tbWl0X21v ZGlmeSwKPj4gPsKgIC8qIC5jb21taXRfZHJvcCA9ICovIGdlbmVyaWNfaW5kZXhfY29tbWl0X2Ry b3AsCj4+ID4tIC8qIC51cGRhdGVfZGVmID0gKi8gbWVtdHhfdHJlZV9pbmRleF91cGRhdGVfZGVm LAo+PiA+KyAvKiAudXBkYXRlX2RlZiA9ICovIG1lbXR4X3RyZWVfaW5kZXhfdXBkYXRlX2RlZjwx PiwKPj4gPsKgIC8qIC5kZXBlbmRzX29uX3BrID0gKi8gbWVtdHhfdHJlZV9pbmRleF9kZXBlbmRz X29uX3BrLAo+PiA+wqAgLyogLmRlZl9jaGFuZ2VfcmVxdWlyZXNfcmVidWlsZCA9ICovCj4+ID7C oCBtZW10eF9pbmRleF9kZWZfY2hhbmdlX3JlcXVpcmVzX3JlYnVpbGQsCj4+ID4tIC8qIC5zaXpl ID0gKi8gbWVtdHhfdHJlZV9pbmRleF9zaXplLAo+PiA+LSAvKiAuYnNpemUgPSAqLyBtZW10eF90 cmVlX2luZGV4X2JzaXplLAo+PiA+KyAvKiAuc2l6ZSA9ICovIG1lbXR4X3RyZWVfaW5kZXhfc2l6 ZTwxPiwKPj4gPisgLyogLmJzaXplID0gKi8gbWVtdHhfdHJlZV9pbmRleF9ic2l6ZTwxPiwKPj4g PsKgIC8qIC5taW4gPSAqLyBnZW5lcmljX2luZGV4X21pbiwKPj4gPsKgIC8qIC5tYXggPSAqLyBn ZW5lcmljX2luZGV4X21heCwKPj4gPi0gLyogLnJhbmRvbSA9ICovIG1lbXR4X3RyZWVfaW5kZXhf cmFuZG9tLAo+PiA+LSAvKiAuY291bnQgPSAqLyBtZW10eF90cmVlX2luZGV4X2NvdW50LAo+PiA+ LSAvKiAuZ2V0ID0gKi8gbWVtdHhfdHJlZV9pbmRleF9nZXQsCj4+ID4rIC8qIC5yYW5kb20gPSAq LyBtZW10eF90cmVlX2luZGV4X3JhbmRvbTwxPiwKPj4gPisgLyogLmNvdW50ID0gKi8gbWVtdHhf dHJlZV9pbmRleF9jb3VudDwxPiwKPj4gPisgLyogLmdldCA9ICovIG1lbXR4X3RyZWVfaW5kZXhf Z2V0PDE+LAo+PiA+wqAgLyogLnJlcGxhY2UgPSAqLyBtZW10eF90cmVlX2luZGV4X3JlcGxhY2Vf bXVsdGlrZXksCj4+ID4tIC8qIC5jcmVhdGVfaXRlcmF0b3IgPSAqLyBtZW10eF90cmVlX2luZGV4 X2NyZWF0ZV9pdGVyYXRvciwKPj4gPisgLyogLmNyZWF0ZV9pdGVyYXRvciA9ICovIG1lbXR4X3Ry ZWVfaW5kZXhfY3JlYXRlX2l0ZXJhdG9yPDE+LAo+PiA+wqAgLyogLmNyZWF0ZV9zbmFwc2hvdF9p dGVyYXRvciA9ICovCj4+ID4tIG1lbXR4X3RyZWVfaW5kZXhfY3JlYXRlX3NuYXBzaG90X2l0ZXJh dG9yLAo+PiA+KyBtZW10eF90cmVlX2luZGV4X2NyZWF0ZV9zbmFwc2hvdF9pdGVyYXRvcjwxPiwK Pj4gPsKgIC8qIC5zdGF0ID0gKi8gZ2VuZXJpY19pbmRleF9zdGF0LAo+PiA+wqAgLyogLmNvbXBh Y3QgPSAqLyBnZW5lcmljX2luZGV4X2NvbXBhY3QsCj4+ID7CoCAvKiAucmVzZXRfc3RhdCA9ICov IGdlbmVyaWNfaW5kZXhfcmVzZXRfc3RhdCwKPj4gPi0gLyogLmJlZ2luX2J1aWxkID0gKi8gbWVt dHhfdHJlZV9pbmRleF9iZWdpbl9idWlsZCwKPj4gPi0gLyogLnJlc2VydmUgPSAqLyBtZW10eF90 cmVlX2luZGV4X3Jlc2VydmUsCj4+ID4rIC8qIC5iZWdpbl9idWlsZCA9ICovIG1lbXR4X3RyZWVf aW5kZXhfYmVnaW5fYnVpbGQ8MT4sCj4+ID4rIC8qIC5yZXNlcnZlID0gKi8gbWVtdHhfdHJlZV9p bmRleF9yZXNlcnZlPDE+LAo+PiA+wqAgLyogLmJ1aWxkX25leHQgPSAqLyBtZW10eF90cmVlX2lu ZGV4X2J1aWxkX25leHRfbXVsdGlrZXksCj4+ID4tIC8qIC5lbmRfYnVpbGQgPSAqLyBtZW10eF90 cmVlX2luZGV4X2VuZF9idWlsZCwKPj4gPisgLyogLmVuZF9idWlsZCA9ICovIG1lbXR4X3RyZWVf aW5kZXhfZW5kX2J1aWxkPDE+LAo+PiA+wqB9Owo+PiA+wqAKPj4gPsKgc3RhdGljIGNvbnN0IHN0 cnVjdCBpbmRleF92dGFiIG1lbXR4X3RyZWVfZnVuY19pbmRleF92dGFiID0gewo+PiA+LSAvKiAu ZGVzdHJveSA9ICovIG1lbXR4X3RyZWVfaW5kZXhfZGVzdHJveSwKPj4gPisgLyogLmRlc3Ryb3kg PSAqLyBtZW10eF90cmVlX2luZGV4X2Rlc3Ryb3k8MT4sCj4+ID7CoCAvKiAuY29tbWl0X2NyZWF0 ZSA9ICovIGdlbmVyaWNfaW5kZXhfY29tbWl0X2NyZWF0ZSwKPj4gPsKgIC8qIC5hYm9ydF9jcmVh dGUgPSAqLyBnZW5lcmljX2luZGV4X2Fib3J0X2NyZWF0ZSwKPj4gPsKgIC8qIC5jb21taXRfbW9k aWZ5ID0gKi8gZ2VuZXJpY19pbmRleF9jb21taXRfbW9kaWZ5LAo+PiA+wqAgLyogLmNvbW1pdF9k cm9wID0gKi8gZ2VuZXJpY19pbmRleF9jb21taXRfZHJvcCwKPj4gPi0gLyogLnVwZGF0ZV9kZWYg PSAqLyBtZW10eF90cmVlX2luZGV4X3VwZGF0ZV9kZWYsCj4+ID4rIC8qIC51cGRhdGVfZGVmID0g Ki8gbWVtdHhfdHJlZV9pbmRleF91cGRhdGVfZGVmPDE+LAo+PiA+wqAgLyogLmRlcGVuZHNfb25f cGsgPSAqLyBtZW10eF90cmVlX2luZGV4X2RlcGVuZHNfb25fcGssCj4+ID7CoCAvKiAuZGVmX2No YW5nZV9yZXF1aXJlc19yZWJ1aWxkID0gKi8KPj4gPsKgIG1lbXR4X2luZGV4X2RlZl9jaGFuZ2Vf cmVxdWlyZXNfcmVidWlsZCwKPj4gPi0gLyogLnNpemUgPSAqLyBtZW10eF90cmVlX2luZGV4X3Np emUsCj4+ID4tIC8qIC5ic2l6ZSA9ICovIG1lbXR4X3RyZWVfaW5kZXhfYnNpemUsCj4+ID4rIC8q IC5zaXplID0gKi8gbWVtdHhfdHJlZV9pbmRleF9zaXplPDE+LAo+PiA+KyAvKiAuYnNpemUgPSAq LyBtZW10eF90cmVlX2luZGV4X2JzaXplPDE+LAo+PiA+wqAgLyogLm1pbiA9ICovIGdlbmVyaWNf aW5kZXhfbWluLAo+PiA+wqAgLyogLm1heCA9ICovIGdlbmVyaWNfaW5kZXhfbWF4LAo+PiA+LSAv KiAucmFuZG9tID0gKi8gbWVtdHhfdHJlZV9pbmRleF9yYW5kb20sCj4+ID4tIC8qIC5jb3VudCA9 ICovIG1lbXR4X3RyZWVfaW5kZXhfY291bnQsCj4+ID4tIC8qIC5nZXQgPSAqLyBtZW10eF90cmVl X2luZGV4X2dldCwKPj4gPisgLyogLnJhbmRvbSA9ICovIG1lbXR4X3RyZWVfaW5kZXhfcmFuZG9t PDE+LAo+PiA+KyAvKiAuY291bnQgPSAqLyBtZW10eF90cmVlX2luZGV4X2NvdW50PDE+LAo+PiA+ KyAvKiAuZ2V0ID0gKi8gbWVtdHhfdHJlZV9pbmRleF9nZXQ8MT4sCj4+ID7CoCAvKiAucmVwbGFj ZSA9ICovIG1lbXR4X3RyZWVfZnVuY19pbmRleF9yZXBsYWNlLAo+PiA+LSAvKiAuY3JlYXRlX2l0 ZXJhdG9yID0gKi8gbWVtdHhfdHJlZV9pbmRleF9jcmVhdGVfaXRlcmF0b3IsCj4+ID4rIC8qIC5j cmVhdGVfaXRlcmF0b3IgPSAqLyBtZW10eF90cmVlX2luZGV4X2NyZWF0ZV9pdGVyYXRvcjwxPiwK Pj4gPsKgIC8qIC5jcmVhdGVfc25hcHNob3RfaXRlcmF0b3IgPSAqLwo+PiA+LSBtZW10eF90cmVl X2luZGV4X2NyZWF0ZV9zbmFwc2hvdF9pdGVyYXRvciwKPj4gPisgbWVtdHhfdHJlZV9pbmRleF9j cmVhdGVfc25hcHNob3RfaXRlcmF0b3I8MT4sCj4+ID7CoCAvKiAuc3RhdCA9ICovIGdlbmVyaWNf aW5kZXhfc3RhdCwKPj4gPsKgIC8qIC5jb21wYWN0ID0gKi8gZ2VuZXJpY19pbmRleF9jb21wYWN0 LAo+PiA+wqAgLyogLnJlc2V0X3N0YXQgPSAqLyBnZW5lcmljX2luZGV4X3Jlc2V0X3N0YXQsCj4+ ID4tIC8qIC5iZWdpbl9idWlsZCA9ICovIG1lbXR4X3RyZWVfaW5kZXhfYmVnaW5fYnVpbGQsCj4+ ID4tIC8qIC5yZXNlcnZlID0gKi8gbWVtdHhfdHJlZV9pbmRleF9yZXNlcnZlLAo+PiA+KyAvKiAu YmVnaW5fYnVpbGQgPSAqLyBtZW10eF90cmVlX2luZGV4X2JlZ2luX2J1aWxkPDE+LAo+PiA+KyAv KiAucmVzZXJ2ZSA9ICovIG1lbXR4X3RyZWVfaW5kZXhfcmVzZXJ2ZTwxPiwKPj4gPsKgIC8qIC5i dWlsZF9uZXh0ID0gKi8gbWVtdHhfdHJlZV9mdW5jX2luZGV4X2J1aWxkX25leHQsCj4+ID4tIC8q IC5lbmRfYnVpbGQgPSAqLyBtZW10eF90cmVlX2luZGV4X2VuZF9idWlsZCwKPj4gPisgLyogLmVu ZF9idWlsZCA9ICovIG1lbXR4X3RyZWVfaW5kZXhfZW5kX2J1aWxkPDE+LAo+PiA+wqB9Owo+PiA+ wqAKPj4gPsKgLyoqCj4+ID5AQCAtMTQ1OSw3ICsxNjQ0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBpbmRleF92dGFiIG1lbXR4X3RyZWVfZnVuY19pbmRleF92dGFiID0gewo+PiA+wqDCoCoga2V5 IGRlZmludGlvbiBpcyBub3QgY29tcGxldGVseSBpbml0aWFsaXplZCBhdCB0aGF0IG1vbWVudCku Cj4+ID7CoMKgKi8KPj4gPsKgc3RhdGljIGNvbnN0IHN0cnVjdCBpbmRleF92dGFiIG1lbXR4X3Ry ZWVfZGlzYWJsZWRfaW5kZXhfdnRhYiA9IHsKPj4gPi0gLyogLmRlc3Ryb3kgPSAqLyBtZW10eF90 cmVlX2luZGV4X2Rlc3Ryb3ksCj4+ID4rIC8qIC5kZXN0cm95ID0gKi8gbWVtdHhfdHJlZV9pbmRl eF9kZXN0cm95PDE+LAo+PiA+wqAgLyogLmNvbW1pdF9jcmVhdGUgPSAqLyBnZW5lcmljX2luZGV4 X2NvbW1pdF9jcmVhdGUsCj4+ID7CoCAvKiAuYWJvcnRfY3JlYXRlID0gKi8gZ2VuZXJpY19pbmRl eF9hYm9ydF9jcmVhdGUsCj4+ID7CoCAvKiAuY29tbWl0X21vZGlmeSA9ICovIGdlbmVyaWNfaW5k ZXhfY29tbWl0X21vZGlmeSwKPj4gPkBAIC0xNDg4LDI3ICsxNjczLDE5IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgaW5kZXhfdnRhYiBtZW10eF90cmVlX2Rpc2FibGVkX2luZGV4X3Z0YWIgPSB7Cj4+ ID7CoCAvKiAuZW5kX2J1aWxkID0gKi8gZ2VuZXJpY19pbmRleF9lbmRfYnVpbGQsCj4+ID7CoH07 Cj4+ID7CoAo+PiA+LXN0cnVjdCBpbmRleCAqCj4+ID4tbWVtdHhfdHJlZV9pbmRleF9uZXcoc3Ry dWN0IG1lbXR4X2VuZ2luZSAqbWVtdHgsIHN0cnVjdCBpbmRleF9kZWYgKmRlZikKPj4gPit0ZW1w bGF0ZSA8aW50IFVTRV9ISU5UPgo+PiA+K3N0YXRpYyBzdHJ1Y3QgaW5kZXggKgo+PiA+K21lbXR4 X3RyZWVfaW5kZXhfbmV3X3RwbChzdHJ1Y3QgbWVtdHhfZW5naW5lICptZW10eCwgc3RydWN0IGlu ZGV4X2RlZiAqZGVmLAo+PiA+KyBjb25zdCBzdHJ1Y3QgaW5kZXhfdnRhYiAqdnRhYikKPj4gPsKg ewo+PiA+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqaW5kZXggPQo+PiA+LSAoc3RydWN0IG1l bXR4X3RyZWVfaW5kZXggKiljYWxsb2MoMSwgc2l6ZW9mKCppbmRleCkpOwo+PiA+KyBzdHJ1Y3Qg bWVtdHhfdHJlZV9pbmRleDxVU0VfSElOVD4gKmluZGV4ID0KPj4gPisgKHN0cnVjdCBtZW10eF90 cmVlX2luZGV4PFVTRV9ISU5UPiAqKQo+PiA+KyBjYWxsb2MoMSwgc2l6ZW9mKCppbmRleCkpOwo+ PiA+wqAgaWYgKGluZGV4ID09IE5VTEwpIHsKPj4gPsKgIGRpYWdfc2V0KE91dE9mTWVtb3J5LCBz aXplb2YoKmluZGV4KSwKPj4gPsKgICJtYWxsb2MiLCAic3RydWN0IG1lbXR4X3RyZWVfaW5kZXgi KTsKPj4gPsKgIHJldHVybiBOVUxMOwo+PiA+wqAgfQo+PiA+LSBjb25zdCBzdHJ1Y3QgaW5kZXhf dnRhYiAqdnRhYjsKPj4gPi0gaWYgKGRlZi0+a2V5X2RlZi0+Zm9yX2Z1bmNfaW5kZXgpIHsKPj4g Pi0gaWYgKGRlZi0+a2V5X2RlZi0+ZnVuY19pbmRleF9mdW5jID09IE5VTEwpCj4+ID4tIHZ0YWIg PSAmbWVtdHhfdHJlZV9kaXNhYmxlZF9pbmRleF92dGFiOwo+PiA+LSBlbHNlCj4+ID4tIHZ0YWIg PSAmbWVtdHhfdHJlZV9mdW5jX2luZGV4X3Z0YWI7Cj4+ID4tIH0gZWxzZSBpZiAoZGVmLT5rZXlf ZGVmLT5pc19tdWx0aWtleSkgewo+PiA+LSB2dGFiID0gJm1lbXR4X3RyZWVfaW5kZXhfbXVsdGlr ZXlfdnRhYjsKPj4gPi0gfSBlbHNlIHsKPj4gPi0gdnRhYiA9ICZtZW10eF90cmVlX2luZGV4X3Z0 YWI7Cj4+ID4tIH0KPj4gPsKgIGlmIChpbmRleF9jcmVhdGUoJmluZGV4LT5iYXNlLCAoc3RydWN0 IGVuZ2luZSAqKW1lbXR4LAo+PiA+wqAgdnRhYiwgZGVmKSAhPSAwKSB7Cj4+ID7CoCBmcmVlKGlu ZGV4KTsKPj4gPkBAIC0xNTI0LDMgKzE3MDEsMjMgQEAgbWVtdHhfdHJlZV9pbmRleF9uZXcoc3Ry dWN0IG1lbXR4X2VuZ2luZSAqbWVtdHgsIHN0cnVjdCBpbmRleF9kZWYgKmRlZikKPj4gPsKgIG1l bXR4X2luZGV4X2V4dGVudF9mcmVlLCBtZW10eCk7Cj4+ID7CoCByZXR1cm4gJmluZGV4LT5iYXNl Owo+PiA+wqB9Cj4+ID4rCj4+ID4rc3RydWN0IGluZGV4ICoKPj4gPittZW10eF90cmVlX2luZGV4 X25ldyhzdHJ1Y3QgbWVtdHhfZW5naW5lICptZW10eCwgc3RydWN0IGluZGV4X2RlZiAqZGVmKQo+ PiA+K3sKPj4gPisgY29uc3Qgc3RydWN0IGluZGV4X3Z0YWIgKnZ0YWI7Cj4+ID4rIGlmIChkZWYt PmtleV9kZWYtPmZvcl9mdW5jX2luZGV4KSB7Cj4+ID4rIGlmIChkZWYtPmtleV9kZWYtPmZ1bmNf aW5kZXhfZnVuYyA9PSBOVUxMKQo+PiA+KyB2dGFiID0gJm1lbXR4X3RyZWVfZGlzYWJsZWRfaW5k ZXhfdnRhYjsKPj4gPisgZWxzZQo+PiA+KyB2dGFiID0gJm1lbXR4X3RyZWVfZnVuY19pbmRleF92 dGFiOwo+PiA+KyB9IGVsc2UgaWYgKGRlZi0+a2V5X2RlZi0+aXNfbXVsdGlrZXkpIHsKPj4gPisg dnRhYiA9ICZtZW10eF90cmVlX2luZGV4X211bHRpa2V5X3Z0YWI7Cj4+ID4rIH0gZWxzZSBpZiAo ZGVmLT5vcHRzLmhpbnQpIHsKPj4gPisgdnRhYiA9ICZtZW10eF90cmVlX3VzZV9oaW50X2luZGV4 X3Z0YWI7Cj4+ID4rIH0gZWxzZSB7Cj4+ID4rIHZ0YWIgPSAmbWVtdHhfdHJlZV9ub19oaW50X2lu ZGV4X3Z0YWI7Cj4+ID4rIHJldHVybiBtZW10eF90cmVlX2luZGV4X25ld190cGw8MD4obWVtdHgs IGRlZiwgdnRhYik7Cj4+ID4rIH0KPj4gPisgcmV0dXJuIG1lbXR4X3RyZWVfaW5kZXhfbmV3X3Rw bDwxPihtZW10eCwgZGVmLCB2dGFiKTsKPj4gPit9Cj4+ID5kaWZmIC0tZ2l0IGEvc3JjL2xpYi9z YWxhZC9icHNfdHJlZS5oIGIvc3JjL2xpYi9zYWxhZC9icHNfdHJlZS5oCj4+ID5pbmRleCBlZjVh ZTNkLi4wYmI4MDNhIDEwMDY0NAo+PiA+LS0tIGEvc3JjL2xpYi9zYWxhZC9icHNfdHJlZS5oCj4+ ID4rKysgYi9zcmMvbGliL3NhbGFkL2Jwc190cmVlLmgKPj4gPkBAIC0xNjgsNiArMTY4LDE3IEBA Cj4+ID7CoAo+PiA+wqAvKiB7e3sgQlBTLXRyZWUgaW50ZXJmYWNlIHNldHRpbmdzICovCj4+ID7C oC8qKgo+PiA+KyAqIE9wdGlvbmFsIG5hbWVzcGFjZSBmb3Igc3RydWN0cyBhbmQgZnVuY3Rpb25z Lgo+PiA+KyAqIElzIHNldCwgc3RydWN0IGFuZCBmdW5jdGlvbnMgd2lsbCBoYXZlIEJQU19UUkVF X05BTUVTUEFDRTo6IHByZWZpeC4KPj4gPisgKiBGb3IgZXhhbXBsZSBvbmUgY2FuICNkZWZpbmUg QlBTX1RSRUVfTkFNRVNQQUNFIG15IGFsb25nIHdpdGgKPj4gPisgKiAjZGVmaW5lIEJQU19UUkVF X05BTUUgX3Rlc3QsIGFuZCB1c2UgdGhlbgo+PiA+KyAqIHN0cnVjdCBteTo6YnBzX3RyZWVfdGVz dCBteV90cmVlOwo+PiA+KyAqIG15OjpicHNfdHJlZV90ZXN0X2NyZWF0ZSgmbXlfdHJlZSwgLi4u KTsKPj4gPisgKgo+PiA+KyAqICNkZWZpbmUgQlBTX1RSRUVfTkFNRVNQQUNFCj4+ID4rICovCj4+ ID4rCj4+ID4rLyoqCj4+ID7CoMKgKiBDdXN0b20gbmFtZSBmb3Igc3RydWN0cyBhbmQgZnVuY3Rp b25zLgo+PiA+wqDCoCogU3RydWN0IGFuZCBmdW5jdGlvbnMgd2lsbCBoYXZlIGJwc190cmVlIyNC UFNfVFJFRV9OQU1FIG5hbWUgb3IgcHJlZml4Lgo+PiA+wqDCoCogRm9yIGV4YW1wbGUgb25lIGNh biAjZGVmaW5lIEJQU19UUkVFX05BTUUgX3Rlc3QsIGFuZCB1c2UgdGhlbgo+PiA+QEAgLTMwMCw2 ICszMTEsMTAgQEAKPj4gPsKgCj4+ID7CoC8qIH19fSAqLwo+PiA+wqAKPj4gPisjaWZkZWYgQlBT X1RSRUVfTkFNRVNQQUNFCj4+ID4rbmFtZXNwYWNlIEJQU19UUkVFX05BTUVTUEFDRSB7Cj4+ID4r I2VuZGlmCj4+ID4rCj4+ID7CoC8qIHt7eyBCUFMtdHJlZSBpbnRlcm5hbCBzZXR0aW5ncyAqLwo+ PiA+wqB0eXBlZGVmIGludDE2X3QgYnBzX3RyZWVfcG9zX3Q7Cj4+ID7CoHR5cGVkZWYgdWludDMy X3QgYnBzX3RyZWVfYmxvY2tfaWRfdDsKPj4gPkBAIC02MTg4LDMgKzYyMDMsNyBAQCBicHNfdHJl ZV9kZWJ1Z19jaGVja19pbnRlcm5hbF9mdW5jdGlvbnMoYm9vbCBhc3NlcnRtZSkKPj4gPsKgI3Vu ZGVmIGJwc190cmVlX2RlYnVnX2NoZWNrX2luc2VydF9hbmRfbW92ZV90b19sZWZ0X2lubmVyCj4+ ID7CoAo+PiA+wqAvKiB9fX0gKi8KPj4gPisKPj4gPisjaWZkZWYgQlBTX1RSRUVfTkFNRVNQQUNF Cj4+ID4rfSAvKiBuYW1lc3BhY2UgQlBTX1RSRUVfTkFNRVNQQUNFIHsgKi8KPj4gPisjZW5kaWYK Pj4gPmRpZmYgLS1naXQgYS90ZXN0L2JveC9hbHRlci5yZXN1bHQgYi90ZXN0L2JveC9hbHRlci5y ZXN1bHQKPj4gPmluZGV4IDIzN2MyZDguLjViNDEyYTcgMTAwNjQ0Cj4+ID4tLS0gYS90ZXN0L2Jv eC9hbHRlci5yZXN1bHQKPj4gPisrKyBiL3Rlc3QvYm94L2FsdGVyLnJlc3VsdAo+PiA+QEAgLTY4 MCw4ICs2ODAsOSBAQCBzLmluZGV4LnBrCj4+ID7CoMKgwqAtIHR5cGU6IHVuc2lnbmVkCj4+ID7C oMKgwqDCoMKgaXNfbnVsbGFibGU6IGZhbHNlCj4+ID7CoMKgwqDCoMKgZmllbGRubzogMgo+PiA+ LSB0eXBlOiBUUkVFCj4+ID4rIGhpbnQ6IHRydWUKPj4gPsKgwqDCoGlkOiAwCj4+ID4rIHR5cGU6 IFRSRUUKPj4gPsKgwqDCoHNwYWNlX2lkOiA3MzEKPj4gPsKgwqDCoG5hbWU6IHBrCj4+ID7CoC4u Lgo+PiA+QEAgLTcxMCw5ICs3MTEsMTAgQEAgcy5pbmRleC5wawo+PiA+wqDCoMKgLSB0eXBlOiB1 bnNpZ25lZAo+PiA+wqDCoMKgwqDCoGlzX251bGxhYmxlOiBmYWxzZQo+PiA+wqDCoMKgwqDCoGZp ZWxkbm86IDEKPj4gPi0gc3BhY2VfaWQ6IDczMQo+PiA+KyBoaW50OiB0cnVlCj4+ID7CoMKgwqBp ZDogMAo+PiA+wqDCoMKgdHlwZTogVFJFRQo+PiA+KyBzcGFjZV9pZDogNzMxCj4+ID7CoMKgwqBu YW1lOiBwawo+PiA+wqAuLi4KPj4gPsKgcy5pbmRleC5zZWNvbmRhcnkKPj4gPkBAIC03MjIsOCAr NzI0LDkgQEAgcy5pbmRleC5zZWNvbmRhcnkKPj4gPsKgwqDCoC0gdHlwZTogdW5zaWduZWQKPj4g PsKgwqDCoMKgwqBpc19udWxsYWJsZTogZmFsc2UKPj4gPsKgwqDCoMKgwqBmaWVsZG5vOiAyCj4+ ID4tIHR5cGU6IFRSRUUKPj4gPisgaGludDogdHJ1ZQo+PiA+wqDCoMKgaWQ6IDEKPj4gPisgdHlw ZTogVFJFRQo+PiA+wqDCoMKgc3BhY2VfaWQ6IDczMQo+PiA+wqDCoMKgbmFtZTogc2Vjb25kYXJ5 Cj4+ID7CoC4uLgo+PiA+QEAgLTE1NTksMyArMTU2Miw5NyBAQCBhc3NlcnQoZXJyOm1hdGNoKCdk b2VzIG5vdCBleGlzdCcpIH49IG5pbCkKPj4gPsKgLS0tCj4+ID7CoC0gdHJ1ZQo+PiA+wqAuLi4K Pj4gPistLSBoaW50Cj4+ID4rcyA9IGJveC5zY2hlbWEuY3JlYXRlX3NwYWNlKCd0ZXN0Jyk7Cj4+ ID4rLS0tCj4+ID4rLi4uCj4+ID4rczpjcmVhdGVfaW5kZXgoJ3Rlc3QxJywge3R5cGU9J3RyZWUn LCBwYXJ0cz17ezEsICd1aW50J319fSkuaGludAo+PiA+Ky0tLQo+PiA+Ky0gdHJ1ZQo+PiA+Ky4u Lgo+PiA+K3M6Y3JlYXRlX2luZGV4KCd0ZXN0MicsIHt0eXBlPSd0cmVlJywgcGFydHM9e3syLCAn dWludCd9fSwgaGludCA9IHRydWV9KS5oaW50Cj4+ID4rLS0tCj4+ID4rLSB0cnVlCj4+ID4rLi4u Cj4+ID4rczpjcmVhdGVfaW5kZXgoJ3Rlc3QzJywge3R5cGU9J3RyZWUnLCBwYXJ0cz17ezMsICd1 aW50J319LCBoaW50ID0gZmFsc2V9KS5oaW50Cj4+ID4rLS0tCj4+ID4rLSBmYWxzZQo+PiA+Ky4u Lgo+PiA+K3M6Y3JlYXRlX2luZGV4KCd0ZXN0NCcsIHt0eXBlPSd0cmVlJywgcGFydHM9e3s0LCAn c3RyaW5nJ319LCBoaW50ID0gZmFsc2V9KS5oaW50Cj4+ID4rLS0tCj4+ID4rLSBmYWxzZQo+PiA+ Ky4uLgo+PiA+K3MuaW5kZXgudGVzdDEuaGludAo+PiA+Ky0tLQo+PiA+Ky0gdHJ1ZQo+PiA+Ky4u Lgo+PiA+K3MuaW5kZXgudGVzdDIuaGludAo+PiA+Ky0tLQo+PiA+Ky0gdHJ1ZQo+PiA+Ky4uLgo+ PiA+K3MuaW5kZXgudGVzdDMuaGludAo+PiA+Ky0tLQo+PiA+Ky0gZmFsc2UKPj4gPisuLi4KPj4g PitzLmluZGV4LnRlc3Q0LmhpbnQKPj4gPistLS0KPj4gPistIGZhbHNlCj4+ID4rLi4uCj4+ID4r TiA9IDEwMDAgYm94LmJlZ2luKCkgZm9yIGkgPSAxLE4gZG8gczpyZXBsYWNle2ksIGksIGksICcn IC4uIGl9IGVuZCBib3guY29tbWl0KCkKPj4gPistLS0KPj4gPisuLi4KPj4gPitzLmluZGV4LnRl c3QxOmJzaXplKCkgPT0gcy5pbmRleC50ZXN0Mjpic2l6ZSgpCj4+ID4rLS0tCj4+ID4rLSB0cnVl Cj4+ID4rLi4uCj4+ID4rcy5pbmRleC50ZXN0MTpic2l6ZSgpID4gcy5pbmRleC50ZXN0Mzpic2l6 ZSgpCj4+ID4rLS0tCj4+ID4rLSB0cnVlCj4+ID4rLi4uCj4+ID4rcy5pbmRleC50ZXN0MTpic2l6 ZSgpID4gcy5pbmRleC50ZXN0NDpic2l6ZSgpCj4+ID4rLS0tCj4+ID4rLSB0cnVlCj4+ID4rLi4u Cj4+ID4rcy5pbmRleC50ZXN0MTphbHRlcntoaW50PWZhbHNlfQo+PiA+Ky0tLQo+PiA+Ky4uLgo+ PiA+K3MuaW5kZXgudGVzdDI6YWx0ZXJ7aGludD10cnVlfQo+PiA+Ky0tLQo+PiA+Ky4uLgo+PiA+ K3MuaW5kZXgudGVzdDM6YWx0ZXJ7bmFtZT0ndGVzdDMzJywgaGludD1mYWxzZX0KPj4gPistLS0K Pj4gPisuLi4KPj4gPitzLmluZGV4LnRlc3Q0OmFsdGVye2hpbnQ9dHJ1ZX0KPj4gPistLS0KPj4g PisuLi4KPj4gPitzLmluZGV4LnRlc3QxLmhpbnQKPj4gPistLS0KPj4gPistIGZhbHNlCj4+ID4r Li4uCj4+ID4rcy5pbmRleC50ZXN0Mi5oaW50Cj4+ID4rLS0tCj4+ID4rLSB0cnVlCj4+ID4rLi4u Cj4+ID4rcy5pbmRleC50ZXN0MzMuaGludAo+PiA+Ky0tLQo+PiA+Ky0gZmFsc2UKPj4gPisuLi4K Pj4gPitzLmluZGV4LnRlc3Q0LmhpbnQKPj4gPistLS0KPj4gPistIHRydWUKPj4gPisuLi4KPj4g PitzLmluZGV4LnRlc3QxOmJzaXplKCkgPCBzLmluZGV4LnRlc3QyOmJzaXplKCkKPj4gPistLS0K Pj4gPistIHRydWUKPj4gPisuLi4KPj4gPitzLmluZGV4LnRlc3QxOmJzaXplKCkgPT0gcy5pbmRl eC50ZXN0MzM6YnNpemUoKQo+PiA+Ky0tLQo+PiA+Ky0gdHJ1ZQo+PiA+Ky4uLgo+PiA+K3MuaW5k ZXgudGVzdDE6YnNpemUoKSA8IHMuaW5kZXgudGVzdDQ6YnNpemUoKQo+PiA+Ky0tLQo+PiA+Ky0g dHJ1ZQo+PiA+Ky4uLgo+PiA+K3M6ZHJvcCgpCj4+ID4rLS0tCj4+ID4rLi4uCj4+ID5kaWZmIC0t Z2l0IGEvdGVzdC9ib3gvYWx0ZXIudGVzdC5sdWEgYi90ZXN0L2JveC9hbHRlci50ZXN0Lmx1YQo+ PiA+aW5kZXggYWJkMDhlMi4uMjExNDE4NiAxMDA2NDQKPj4gPi0tLSBhL3Rlc3QvYm94L2FsdGVy LnRlc3QubHVhCj4+ID4rKysgYi90ZXN0L2JveC9hbHRlci50ZXN0Lmx1YQo+PiA+QEAgLTYyMCwz ICs2MjAsMzcgQEAgczpkcm9wKCkKPj4gPsKgczphbHRlcih7fSkKPj4gPsKgb2ssIGVyciA9IHBj YWxsKGJveC5zY2hlbWEuc3BhY2UuYWx0ZXIsIHMuaWQsIHt9KQo+PiA+wqBhc3NlcnQoZXJyOm1h dGNoKCdkb2VzIG5vdCBleGlzdCcpIH49IG5pbCkKPj4gPisKPj4gPistLSBoaW50Cj4+ID4rcyA9 IGJveC5zY2hlbWEuY3JlYXRlX3NwYWNlKCd0ZXN0Jyk7Cj4+ID4rczpjcmVhdGVfaW5kZXgoJ3Rl c3QxJywge3R5cGU9J3RyZWUnLCBwYXJ0cz17ezEsICd1aW50J319fSkuaGludAo+PiA+K3M6Y3Jl YXRlX2luZGV4KCd0ZXN0MicsIHt0eXBlPSd0cmVlJywgcGFydHM9e3syLCAndWludCd9fSwgaGlu dCA9IHRydWV9KS5oaW50Cj4+ID4rczpjcmVhdGVfaW5kZXgoJ3Rlc3QzJywge3R5cGU9J3RyZWUn LCBwYXJ0cz17ezMsICd1aW50J319LCBoaW50ID0gZmFsc2V9KS5oaW50Cj4+ID4rczpjcmVhdGVf aW5kZXgoJ3Rlc3Q0Jywge3R5cGU9J3RyZWUnLCBwYXJ0cz17ezQsICdzdHJpbmcnfX0sIGhpbnQg PSBmYWxzZX0pLmhpbnQKPj4gPisKPj4gPitzLmluZGV4LnRlc3QxLmhpbnQKPj4gPitzLmluZGV4 LnRlc3QyLmhpbnQKPj4gPitzLmluZGV4LnRlc3QzLmhpbnQKPj4gPitzLmluZGV4LnRlc3Q0Lmhp bnQKPj4gPisKPj4gPitOID0gMTAwMCBib3guYmVnaW4oKSBmb3IgaSA9IDEsTiBkbyBzOnJlcGxh Y2V7aSwgaSwgaSwgJycgLi4gaX0gZW5kIGJveC5jb21taXQoKQo+PiA+Kwo+PiA+K3MuaW5kZXgu dGVzdDE6YnNpemUoKSA9PSBzLmluZGV4LnRlc3QyOmJzaXplKCkKPj4gPitzLmluZGV4LnRlc3Qx OmJzaXplKCkgPiBzLmluZGV4LnRlc3QzOmJzaXplKCkKPj4gPitzLmluZGV4LnRlc3QxOmJzaXpl KCkgPiBzLmluZGV4LnRlc3Q0OmJzaXplKCkKPj4gPisKPj4gPitzLmluZGV4LnRlc3QxOmFsdGVy e2hpbnQ9ZmFsc2V9Cj4+ID4rcy5pbmRleC50ZXN0MjphbHRlcntoaW50PXRydWV9Cj4+ID4rcy5p bmRleC50ZXN0MzphbHRlcntuYW1lPSd0ZXN0MzMnLCBoaW50PWZhbHNlfQo+PiA+K3MuaW5kZXgu dGVzdDQ6YWx0ZXJ7aGludD10cnVlfQo+PiA+Kwo+PiA+K3MuaW5kZXgudGVzdDEuaGludAo+PiA+ K3MuaW5kZXgudGVzdDIuaGludAo+PiA+K3MuaW5kZXgudGVzdDMzLmhpbnQKPj4gPitzLmluZGV4 LnRlc3Q0LmhpbnQKPj4gPisKPj4gPitzLmluZGV4LnRlc3QxOmJzaXplKCkgPCBzLmluZGV4LnRl c3QyOmJzaXplKCkKPj4gPitzLmluZGV4LnRlc3QxOmJzaXplKCkgPT0gcy5pbmRleC50ZXN0MzM6 YnNpemUoKQo+PiA+K3MuaW5kZXgudGVzdDE6YnNpemUoKSA8IHMuaW5kZXgudGVzdDQ6YnNpemUo KQo+PiA+Kwo+PiA+K3M6ZHJvcCgpCj4+ID5cIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKPj4g PmRpZmYgLS1naXQgYS90ZXN0L2JveC9lcnJpbmoucmVzdWx0IGIvdGVzdC9ib3gvZXJyaW5qLnJl c3VsdAo+PiA+aW5kZXggNjEzZDIyYy4uYjhjMjQ3NiAxMDA2NDQKPj4gPi0tLSBhL3Rlc3QvYm94 L2Vycmluai5yZXN1bHQKPj4gPisrKyBiL3Rlc3QvYm94L2Vycmluai5yZXN1bHQKPj4gPkBAIC0x Nzc0LDkgKzE3NzQsMTAgQEAgcnRyZWVzcGFjZTpjcmVhdGVfaW5kZXgoJ3BrJywge2lmX25vdF9l eGlzdHMgPSB0cnVlfSkKPj4gPsKgwqDCoC0gdHlwZTogdW5zaWduZWQKPj4gPsKgwqDCoMKgwqBp c19udWxsYWJsZTogZmFsc2UKPj4gPsKgwqDCoMKgwqBmaWVsZG5vOiAxCj4+ID4rIGhpbnQ6IHRy dWUKPj4gPsKgwqDCoGlkOiAwCj4+ID4tIHNwYWNlX2lkOiA1MTIKPj4gPsKgwqDCoHR5cGU6IFRS RUUKPj4gPisgc3BhY2VfaWQ6IDUxMgo+PiA+wqDCoMKgbmFtZTogcGsKPj4gPsKgLi4uCj4+ID7C oHJ0cmVlc3BhY2U6Y3JlYXRlX2luZGV4KCd0YXJnZXQnLCB7dHlwZT0ncnRyZWUnLCBkaW1lbnNp b24gPSAzLCBwYXJ0cz17MiwgJ2FycmF5J30sdW5pcXVlID0gZmFsc2UsIGlmX25vdF9leGlzdHMg PSB0cnVlLH0pCj4+ID5kaWZmIC0tZ2l0IGEvdGVzdC9ib3gvdHJlZV9way5yZXN1bHQgYi90ZXN0 L2JveC90cmVlX3BrLnJlc3VsdAo+PiA+aW5kZXggZGYzYzc4Yi4uMThjYjYwNyAxMDA2NDQKPj4g Pi0tLSBhL3Rlc3QvYm94L3RyZWVfcGsucmVzdWx0Cj4+ID4rKysgYi90ZXN0L2JveC90cmVlX3Br LnJlc3VsdAo+PiA+QEAgLTg1MiwzICs4NTIsMzE3IEBAIGJveC5pbnRlcm5hbC5jb2xsYXRpb24u ZHJvcCgndGVzdCcpCj4+ID7CoGJveC5pbnRlcm5hbC5jb2xsYXRpb24uZHJvcCgndGVzdC1jaScp Cj4+ID7CoC0tLQo+PiA+wqAuLi4KPj4gPistLSBoaW50cwo+PiA+K3MgPSBib3guc2NoZW1hLnNw YWNlLmNyZWF0ZSgndGVzdCcpCj4+ID4rLS0tCj4+ID4rLi4uCj4+ID4rczpjcmVhdGVfaW5kZXgo J3Rlc3QnLCB7dHlwZSA9ICd0cmVlJywgaGludCA9ICd0cnVlJ30gKQo+PiA+Ky0tLQo+PiA+Ky0g ZXJyb3I6IElsbGVnYWwgcGFyYW1ldGVycywgb3B0aW9ucyBwYXJhbWV0ZXIgJ2hpbnQnIHNob3Vs ZCBiZSBvZiB0eXBlIGJvb2xlYW4KPj4gPisuLi4KPj4gPitzOmNyZWF0ZV9pbmRleCgndGVzdCcs IHt0eXBlID0gJ2hhc2gnLCBoaW50ID0gdHJ1ZX0gKQo+PiA+Ky0tLQo+PiA+Ky0gZXJyb3I6ICdD YW4nJ3QgY3JlYXRlIG9yIG1vZGlmeSBpbmRleCAnJ3Rlc3QnJyBpbiBzcGFjZSAnJ3Rlc3QnJzog aGludCBpcyBvbmx5IHJlYXNvbmFibGUKPj4gPisgd2l0aCBtZW10eCB0cmVlIGluZGV4Jwo+PiA+ Ky4uLgo+PiA+K3M6Y3JlYXRlX2luZGV4KCd0ZXN0Jywge3R5cGUgPSAnaGFzaCd9KTphbHRlcih7 aGludCA9IHRydWV9KQo+PiA+Ky0tLQo+PiA+Ky0gZXJyb3I6ICdDYW4nJ3QgY3JlYXRlIG9yIG1v ZGlmeSBpbmRleCAnJ3Rlc3QnJyBpbiBzcGFjZSAnJ3Rlc3QnJzogaGludCBpcyBvbmx5IHJlYXNv bmFibGUKPj4gPisgd2l0aCBtZW10eCB0cmVlIGluZGV4Jwo+PiA+Ky4uLgo+PiA+K3M6Y3JlYXRl X2luZGV4KCdtdWx0aWtleScsIHtoaW50ID0gdHJ1ZSwgcGFydHMgPSB7ezIsICdpbnQnLCBwYXRo ID0gJ1sqXSd9fX0pCj4+ID4rLS0tCj4+ID4rLSBlcnJvcjogJ0NhbicndCBjcmVhdGUgb3IgbW9k aWZ5IGluZGV4ICcnbXVsdGlrZXknJyBpbiBzcGFjZSAnJ3Rlc3QnJzogbXVsdGlrZXkgaW5kZXgK Pj4gPisgY2FuJyd0IHVzZSBoaW50cycKPj4gPisuLi4KPj4gPitzOmNyZWF0ZV9pbmRleCgnbXVs dGlrZXknLCB7cGFydHMgPSB7ezIsICdpbnQnLCBwYXRoID0gJ1sqXSd9fX0pOmFsdGVyKHtoaW50 ID0gdHJ1ZX0pCj4+ID4rLS0tCj4+ID4rLSBlcnJvcjogJ0NhbicndCBjcmVhdGUgb3IgbW9kaWZ5 IGluZGV4ICcnbXVsdGlrZXknJyBpbiBzcGFjZSAnJ3Rlc3QnJzogbXVsdGlrZXkgaW5kZXgKPj4g PisgY2FuJyd0IHVzZSBoaW50cycKPj4gPisuLi4KPj4gPitsdWFfY29kZSA9IFtbZnVuY3Rpb24o dHVwbGUpIHJldHVybiB7dHVwbGVbMV0gKyB0dXBsZVsyXX0gZW5kXV0KPj4gPistLS0KPj4gPisu Li4KPj4gPitib3guc2NoZW1hLmZ1bmMuY3JlYXRlKCdzJywge2JvZHkgPSBsdWFfY29kZSwgaXNf ZGV0ZXJtaW5pc3RpYyA9IHRydWUsIGlzX3NhbmRib3hlZCA9IHRydWV9KQo+PiA+Ky0tLQo+PiA+ Ky4uLgo+PiA+K3M6Y3JlYXRlX2luZGV4KCdmdW5jJywge2hpbnQgPSB0cnVlLCBmdW5jID0gYm94 LmZ1bmMucy5pZCwgcGFydHMgPSB7ezEsICd1bnNpZ25lZCd9fX0pCj4+ID4rLS0tCj4+ID4rLSBl cnJvcjogJ0NhbicndCBjcmVhdGUgb3IgbW9kaWZ5IGluZGV4ICcnZnVuYycnIGluIHNwYWNlICcn dGVzdCcnOiBmdW5jdGlvbmFsIGluZGV4Cj4+ID4rIGNhbicndCB1c2UgaGludHMnCj4+ID4rLi4u Cj4+ID4rczpkcm9wKCkKPj4gPistLS0KPj4gPisuLi4KPj4gPitzID0gYm94LnNjaGVtYS5zcGFj ZS5jcmVhdGUoJ3Rlc3QnLCB7ZW5naW5lID0gJ3ZpbnlsJ30pCj4+ID4rLS0tCj4+ID4rLi4uCj4+ ID4rczpjcmVhdGVfaW5kZXgoJ3Rlc3QnLCB7dHlwZSA9ICd0cmVlJywgaGludCA9IHRydWV9ICkK Pj4gPistLS0KPj4gPistIGVycm9yOiAnQ2FuJyd0IGNyZWF0ZSBvciBtb2RpZnkgaW5kZXggJyd0 ZXN0JycgaW4gc3BhY2UgJyd0ZXN0Jyc6IGhpbnQgaXMgb25seSByZWFzb25hYmxlCj4+ID4rIHdp dGggbWVtdHggdHJlZSBpbmRleCcKPj4gPisuLi4KPj4gPitzOmRyb3AoKQo+PiA+Ky0tLQo+PiA+ Ky4uLgo+PiA+Ky0tIG51bWVyaWMgaGludHMKPj4gPitzMSA9IGJveC5zY2hlbWEuc3BhY2UuY3Jl YXRlKCd0ZXN0MScpCj4+ID4rLS0tCj4+ID4rLi4uCj4+ID4rczE6Y3JlYXRlX2luZGV4KCd0ZXN0 Jywge3R5cGUgPSAndHJlZScsIGhpbnQgPSBmYWxzZX0pLmhpbnQKPj4gPistLS0KPj4gPistIGZh bHNlCj4+ID4rLi4uCj4+ID4rczIgPSBib3guc2NoZW1hLnNwYWNlLmNyZWF0ZSgndGVzdDInKQo+ PiA+Ky0tLQo+PiA+Ky4uLgo+PiA+K3MyOmNyZWF0ZV9pbmRleCgndGVzdCcsIHt0eXBlID0gJ3Ry ZWUnfSkuaGludAo+PiA+Ky0tLQo+PiA+Ky0gdHJ1ZQo+PiA+Ky4uLgo+PiA+K04gPSAyMDAwCj4+ ID4rLS0tCj4+ID4rLi4uCj4+ID4rYm94LmJlZ2luKCkgZm9yIGkgPSAxLE4gZG8gbG9jYWwgdiA9 IG1hdGgucmFuZG9tKDEwICogTikgczE6cmVwbGFjZXt2fSBzMjpyZXBsYWNle3Z9IGVuZCBib3gu Y29tbWl0KCkKPj4gPistLS0KPj4gPisuLi4KPj4gPitzMTpjb3VudCgpID09IHMyOmNvdW50KCkK Pj4gPistLS0KPj4gPistIHRydWUKPj4gPisuLi4KPj4gPitnb29kID0gdHJ1ZSByMSA9IHMxOnNl bGVjdHt9IHIyID0gczI6c2VsZWN0e30KPj4gPistLS0KPj4gPisuLi4KPj4gPitpZiAjcjEgfj0g I3IyIHRoZW4gZ29vZCA9IGZhbHNlIGVuZAo+PiA+Ky0tLQo+PiA+Ky4uLgo+PiA+K2ZvciBrLHYg aW4gcGFpcnMocjEpIGRvIGlmIHIyW2tdWzFdIH49IHZbMV0gdGhlbiBnb29kID0gZmFsc2UgZW5k IGVuZAo+PiA+Ky0tLQo+PiA+Ky4uLgo+PiA+K2dvb2QKPj4gPistLS0KPj4gPistIHRydWUKPj4g PisuLi4KPj4gPityMSA9IG5pbCByMiA9IG5pbAo+PiA+Ky0tLQo+PiA+Ky4uLgo+PiA+K2Z1bmN0 aW9uIGRpZmYodDEsIHQyKSBpZiB0MSB0aGVuIHJldHVybiB0MVsxXSB+PSB0MlsxXSBlbHNlIHJl dHVybiB0MiB+PSBuaWwgZW5kIGVuZAo+PiA+Ky0tLQo+PiA+Ky4uLgo+PiA+K2ZvciBpID0gMSwg TiAqIDEwIGRvIGlmIGRpZmYoczE6Z2V0e2l9LCBzMjpnZXR7aX0pIHRoZW4gZ29vZCA9IGZhbHNl IGVuZCBlbmQKPj4gPistLS0KPj4gPisuLi4KPj4gPitnb29kCj4+ID4rLS0tCj4+ID4rLSB0cnVl Cj4+ID4rLi4uCj4+ID4rczEuaW5kZXhbMF06YnNpemUoKSA8IHMyLmluZGV4WzBdOmJzaXplKCkK Pj4gPistLS0KPj4gPistIHRydWUKPj4gPisuLi4KPj4gPitzMS5pbmRleFswXTphbHRlcntoaW50 PXRydWV9Cj4+ID4rLS0tCj4+ID4rLi4uCj4+ID4rczEuaW5kZXhbMF06YnNpemUoKSA9PSBzMi5p bmRleFswXTpic2l6ZSgpCj4+ID4rLS0tCj4+ID4rLSB0cnVlCj4+ID4rLi4uCj4+ID4rczIuaW5k ZXhbMF06YWx0ZXJ7aGludD1mYWxzZX0KPj4gPistLS0KPj4gPisuLi4KPj4gPitzMS5pbmRleFsw XTpic2l6ZSgpID4gczIuaW5kZXhbMF06YnNpemUoKQo+PiA+Ky0tLQo+PiA+Ky0gdHJ1ZQo+PiA+ Ky4uLgo+PiA+K3MxLmluZGV4WzBdOmFsdGVye2hpbnQ9ZmFsc2V9Cj4+ID4rLS0tCj4+ID4rLi4u Cj4+ID4rczEuaW5kZXhbMF06YnNpemUoKSA9PSBzMi5pbmRleFswXTpic2l6ZSgpCj4+ID4rLS0t Cj4+ID4rLSB0cnVlCj4+ID4rLi4uCj4+ID4rczE6ZHJvcCgpCj4+ID4rLS0tCj4+ID4rLi4uCj4+ ID4rczI6ZHJvcCgpCj4+ID4rLS0tCj4+ID4rLi4uCj4+ID4rLS0gc3RyaW5nIGhpbnRzCj4+ID4r czEgPSBib3guc2NoZW1hLnNwYWNlLmNyZWF0ZSgndGVzdDEnKQo+PiA+Ky0tLQo+PiA+Ky4uLgo+ PiA+K3MxOmNyZWF0ZV9pbmRleCgndGVzdCcsIHt0eXBlID0gJ3RyZWUnLCBwYXJ0cyA9IHsxLCAn c3RyJ30sIGhpbnQgPSBmYWxzZX0pLmhpbnQKPj4gPistLS0KPj4gPistIGZhbHNlCj4+ID4rLi4u Cj4+ID4rczIgPSBib3guc2NoZW1hLnNwYWNlLmNyZWF0ZSgndGVzdDInKQo+PiA+Ky0tLQo+PiA+ Ky4uLgo+PiA+K3MyOmNyZWF0ZV9pbmRleCgndGVzdCcsIHt0eXBlID0gJ3RyZWUnLCBwYXJ0cyA9 IHsxLCAnc3RyJ319KS5oaW50Cj4+ID4rLS0tCj4+ID4rLSB0cnVlCj4+ID4rLi4uCj4+ID4rTiA9 IDEwMDAKPj4gPistLS0KPj4gPisuLi4KPj4gPitib3guYmVnaW4oKSBmb3IgaSA9IDEsTiBkbyBs b2NhbCB2ID0gJycuLm1hdGgucmFuZG9tKDEwICogTikgczE6cmVwbGFjZXt2fSBzMjpyZXBsYWNl e3Z9IGVuZCBib3guY29tbWl0KCkKPj4gPistLS0KPj4gPisuLi4KPj4gPitzMTpjb3VudCgpID09 IHMyOmNvdW50KCkKPj4gPistLS0KPj4gPistIHRydWUKPj4gPisuLi4KPj4gPitnb29kID0gdHJ1 ZSByMSA9IHMxOnNlbGVjdHt9IHIyID0gczI6c2VsZWN0e30KPj4gPistLS0KPj4gPisuLi4KPj4g PitpZiAjcjEgfj0gI3IyIHRoZW4gZ29vZCA9IGZhbHNlIGVuZAo+PiA+Ky0tLQo+PiA+Ky4uLgo+ PiA+K2ZvciBrLHYgaW4gcGFpcnMocjEpIGRvIGlmIHIyW2tdWzFdIH49IHZbMV0gdGhlbiBnb29k ID0gZmFsc2UgZW5kIGVuZAo+PiA+Ky0tLQo+PiA+Ky4uLgo+PiA+K2dvb2QKPj4gPistLS0KPj4g PistIHRydWUKPj4gPisuLi4KPj4gPityMSA9IG5pbCByMiA9IG5pbAo+PiA+Ky0tLQo+PiA+Ky4u Lgo+PiA+K2Z1bmN0aW9uIGRpZmYodDEsIHQyKSBpZiB0MSB0aGVuIHJldHVybiB0MVsxXSB+PSB0 MlsxXSBlbHNlIHJldHVybiB0MiB+PSBuaWwgZW5kIGVuZAo+PiA+Ky0tLQo+PiA+Ky4uLgo+PiA+ K2ZvciBpID0gMSwgTiAqIDEwIGRvIHYgPSAnJy4uaSBpZiBkaWZmKHMxOmdldHt2fSwgczI6Z2V0 e3Z9KSB0aGVuIGdvb2QgPSBmYWxzZSBlbmQgZW5kCj4+ID4rLS0tCj4+ID4rLi4uCj4+ID4rZ29v ZAo+PiA+Ky0tLQo+PiA+Ky0gdHJ1ZQo+PiA+Ky4uLgo+PiA+K3MxLmluZGV4WzBdOmJzaXplKCkg PCBzMi5pbmRleFswXTpic2l6ZSgpCj4+ID4rLS0tCj4+ID4rLSB0cnVlCj4+ID4rLi4uCj4+ID4r czEuaW5kZXhbMF06YWx0ZXJ7aGludD10cnVlfQo+PiA+Ky0tLQo+PiA+Ky4uLgo+PiA+K3MxLmlu ZGV4WzBdOmJzaXplKCkgPT0gczIuaW5kZXhbMF06YnNpemUoKQo+PiA+Ky0tLQo+PiA+Ky0gdHJ1 ZQo+PiA+Ky4uLgo+PiA+K3MyLmluZGV4WzBdOmFsdGVye2hpbnQ9ZmFsc2V9Cj4+ID4rLS0tCj4+ ID4rLi4uCj4+ID4rczEuaW5kZXhbMF06YnNpemUoKSA+IHMyLmluZGV4WzBdOmJzaXplKCkKPj4g PistLS0KPj4gPistIHRydWUKPj4gPisuLi4KPj4gPitzMS5pbmRleFswXTphbHRlcntoaW50PWZh bHNlfQo+PiA+Ky0tLQo+PiA+Ky4uLgo+PiA+K3MxLmluZGV4WzBdOmJzaXplKCkgPT0gczIuaW5k ZXhbMF06YnNpemUoKQo+PiA+Ky0tLQo+PiA+Ky0gdHJ1ZQo+PiA+Ky4uLgo+PiA+K3MxOmRyb3Ao KQo+PiA+Ky0tLQo+PiA+Ky4uLgo+PiA+K3MyOmRyb3AoKQo+PiA+Ky0tLQo+PiA+Ky4uLgo+PiA+ Ky0tIHN0cmluZyB3aXRoIGNvbGxhdGlvbiBoaW50cwo+PiA+K3MxID0gYm94LnNjaGVtYS5zcGFj ZS5jcmVhdGUoJ3Rlc3QxJykKPj4gPistLS0KPj4gPisuLi4KPj4gPitzMTpjcmVhdGVfaW5kZXgo J3Rlc3QnLCB7dHlwZSA9ICd0cmVlJywgcGFydHMgPSB7ezEsICdzdHInLCBjb2xsYXRpb24gPSAn VW5pY29kZSd9fSwgaGludCA9IGZhbHNlfSkuaGludAo+PiA+Ky0tLQo+PiA+Ky0gZmFsc2UKPj4g PisuLi4KPj4gPitzMiA9IGJveC5zY2hlbWEuc3BhY2UuY3JlYXRlKCd0ZXN0MicpCj4+ID4rLS0t Cj4+ID4rLi4uCj4+ID4rczI6Y3JlYXRlX2luZGV4KCd0ZXN0Jywge3R5cGUgPSAndHJlZScsIHBh cnRzID0ge3sxLCAnc3RyJywgY29sbGF0aW9uID0gJ1VuaWNvZGUnfX19KS5oaW50Cj4+ID4rLS0t Cj4+ID4rLSB0cnVlCj4+ID4rLi4uCj4+ID4rTiA9IDEwMDAKPj4gPistLS0KPj4gPisuLi4KPj4g PitzeW1zID0geydhJywgJ0InLCAnYycsICdEJywgJ9C2JywgJ9CBJywgJ34nLCAnMScsICclJywg JzInfQo+PiA+Ky0tLQo+PiA+Ky4uLgo+PiA+K3N5bXNfc2l6ZSA9ICNzeW1zCj4+ID4rLS0tCj4+ ID4rLi4uCj4+ID4rbGVuID0gMjAKPj4gPistLS0KPj4gPisuLi4KPj4gPit2YWxzID0ge30KPj4g PistLS0KPj4gPisuLi4KPj4gPitmb3IgaSA9IDEsMipOIGRvIHN0ciA9ICcnIGZvciBqPTEsbGVu IGRvIHN0ciA9IHN0ciAuLiBzeW1zW21hdGgucmFuZG9tKHN5bXNfc2l6ZSldIGVuZCB2YWxzW2ld ID0gc3RyIGVuZAo+PiA+Ky0tLQo+PiA+Ky4uLgo+PiA+K2ZvciBpID0gMSxOIGRvIGxvY2FsIHYg PSB2YWxzW2ldIHMxOnJlcGxhY2V7dn0gczI6cmVwbGFjZXt2fSBlbmQKPj4gPistLS0KPj4gPisu Li4KPj4gPitzMTpjb3VudCgpID09IHMyOmNvdW50KCkKPj4gPistLS0KPj4gPistIHRydWUKPj4g PisuLi4KPj4gPitnb29kID0gdHJ1ZSByMSA9IHMxOnNlbGVjdHt9IHIyID0gczI6c2VsZWN0e30K Pj4gPistLS0KPj4gPisuLi4KPj4gPitpZiAjcjEgfj0gI3IyIHRoZW4gZ29vZCA9IGZhbHNlIGVu ZAo+PiA+Ky0tLQo+PiA+Ky4uLgo+PiA+K2ZvciBrLHYgaW4gcGFpcnMocjEpIGRvIGlmIHIyW2td WzFdIH49IHZbMV0gdGhlbiBnb29kID0gZmFsc2UgZW5kIGVuZAo+PiA+Ky0tLQo+PiA+Ky4uLgo+ PiA+K2dvb2QKPj4gPistLS0KPj4gPistIHRydWUKPj4gPisuLi4KPj4gPityMSA9IG5pbCByMiA9 IG5pbAo+PiA+Ky0tLQo+PiA+Ky4uLgo+PiA+K2Z1bmN0aW9uIGRpZmYodDEsIHQyKSBpZiB0MSB0 aGVuIHJldHVybiB0MVsxXSB+PSB0MlsxXSBlbHNlIHJldHVybiB0MiB+PSBuaWwgZW5kIGVuZAo+ PiA+Ky0tLQo+PiA+Ky4uLgo+PiA+K2ZvciBpID0gMSwgTiAqIDIgZG8gdiA9IHZhbHNbaV0gaWYg ZGlmZihzMTpnZXR7dn0sIHMyOmdldHt2fSkgdGhlbiBnb29kID0gZmFsc2UgZW5kIGVuZAo+PiA+ Ky0tLQo+PiA+Ky4uLgo+PiA+K2dvb2QKPj4gPistLS0KPj4gPistIHRydWUKPj4gPisuLi4KPj4g PitzMS5pbmRleFswXTpic2l6ZSgpIDwgczIuaW5kZXhbMF06YnNpemUoKQo+PiA+Ky0tLQo+PiA+ Ky0gdHJ1ZQo+PiA+Ky4uLgo+PiA+K3MxLmluZGV4WzBdOmFsdGVye2hpbnQ9dHJ1ZX0KPj4gPist LS0KPj4gPisuLi4KPj4gPitzMS5pbmRleFswXTpic2l6ZSgpID09IHMyLmluZGV4WzBdOmJzaXpl KCkKPj4gPistLS0KPj4gPistIHRydWUKPj4gPisuLi4KPj4gPitzMi5pbmRleFswXTphbHRlcnto aW50PWZhbHNlfQo+PiA+Ky0tLQo+PiA+Ky4uLgo+PiA+K3MxLmluZGV4WzBdOmJzaXplKCkgPiBz Mi5pbmRleFswXTpic2l6ZSgpCj4+ID4rLS0tCj4+ID4rLSB0cnVlCj4+ID4rLi4uCj4+ID4rczEu aW5kZXhbMF06YWx0ZXJ7aGludD1mYWxzZX0KPj4gPistLS0KPj4gPisuLi4KPj4gPitzMS5pbmRl eFswXTpic2l6ZSgpID09IHMyLmluZGV4WzBdOmJzaXplKCkKPj4gPistLS0KPj4gPistIHRydWUK Pj4gPisuLi4KPj4gPitzMTpkcm9wKCkKPj4gPistLS0KPj4gPisuLi4KPj4gPitzMjpkcm9wKCkK Pj4gPistLS0KPj4gPisuLi4KPj4gPmRpZmYgLS1naXQgYS90ZXN0L2JveC90cmVlX3BrLnRlc3Qu bHVhIGIvdGVzdC9ib3gvdHJlZV9way50ZXN0Lmx1YQo+PiA+aW5kZXggMTE5MGFiNC4uMmYyMmVk OSAxMDA2NDQKPj4gPi0tLSBhL3Rlc3QvYm94L3RyZWVfcGsudGVzdC5sdWEKPj4gPisrKyBiL3Rl c3QvYm94L3RyZWVfcGsudGVzdC5sdWEKPj4gPkBAIC0zMDEsMyArMzAxLDExOCBAQCBzOmRyb3Ao KQo+PiA+wqAKPj4gPsKgYm94LmludGVybmFsLmNvbGxhdGlvbi5kcm9wKCd0ZXN0JykKPj4gPsKg Ym94LmludGVybmFsLmNvbGxhdGlvbi5kcm9wKCd0ZXN0LWNpJykKPj4gPisKPj4gPistLSBoaW50 cwo+PiA+K3MgPSBib3guc2NoZW1hLnNwYWNlLmNyZWF0ZSgndGVzdCcpCj4+ID4rczpjcmVhdGVf aW5kZXgoJ3Rlc3QnLCB7dHlwZSA9ICd0cmVlJywgaGludCA9ICd0cnVlJ30gKQo+PiA+K3M6Y3Jl YXRlX2luZGV4KCd0ZXN0Jywge3R5cGUgPSAnaGFzaCcsIGhpbnQgPSB0cnVlfSApCj4+ID4rczpj cmVhdGVfaW5kZXgoJ3Rlc3QnLCB7dHlwZSA9ICdoYXNoJ30pOmFsdGVyKHtoaW50ID0gdHJ1ZX0p Cj4+ID4rczpjcmVhdGVfaW5kZXgoJ211bHRpa2V5Jywge2hpbnQgPSB0cnVlLCBwYXJ0cyA9IHt7 MiwgJ2ludCcsIHBhdGggPSAnWypdJ319fSkKPj4gPitzOmNyZWF0ZV9pbmRleCgnbXVsdGlrZXkn LCB7cGFydHMgPSB7ezIsICdpbnQnLCBwYXRoID0gJ1sqXSd9fX0pOmFsdGVyKHtoaW50ID0gdHJ1 ZX0pCj4+ID4rbHVhX2NvZGUgPSBbW2Z1bmN0aW9uKHR1cGxlKSByZXR1cm4ge3R1cGxlWzFdICsg dHVwbGVbMl19IGVuZF1dCj4+ID4rYm94LnNjaGVtYS5mdW5jLmNyZWF0ZSgncycsIHtib2R5ID0g bHVhX2NvZGUsIGlzX2RldGVybWluaXN0aWMgPSB0cnVlLCBpc19zYW5kYm94ZWQgPSB0cnVlfSkK Pj4gPitzOmNyZWF0ZV9pbmRleCgnZnVuYycsIHtoaW50ID0gdHJ1ZSwgZnVuYyA9IGJveC5mdW5j LnMuaWQsIHBhcnRzID0ge3sxLCAndW5zaWduZWQnfX19KQo+PiA+K3M6ZHJvcCgpCj4+ID4rCj4+ ID4rcyA9IGJveC5zY2hlbWEuc3BhY2UuY3JlYXRlKCd0ZXN0Jywge2VuZ2luZSA9ICd2aW55bCd9 KQo+PiA+K3M6Y3JlYXRlX2luZGV4KCd0ZXN0Jywge3R5cGUgPSAndHJlZScsIGhpbnQgPSB0cnVl fSApCj4+ID4rczpkcm9wKCkKPj4gPisKPj4gPistLSBudW1lcmljIGhpbnRzCj4+ID4rczEgPSBi b3guc2NoZW1hLnNwYWNlLmNyZWF0ZSgndGVzdDEnKQo+PiA+K3MxOmNyZWF0ZV9pbmRleCgndGVz dCcsIHt0eXBlID0gJ3RyZWUnLCBoaW50ID0gZmFsc2V9KS5oaW50Cj4+ID4rczIgPSBib3guc2No ZW1hLnNwYWNlLmNyZWF0ZSgndGVzdDInKQo+PiA+K3MyOmNyZWF0ZV9pbmRleCgndGVzdCcsIHt0 eXBlID0gJ3RyZWUnfSkuaGludAo+PiA+Kwo+PiA+K04gPSAyMDAwCj4+ID4rYm94LmJlZ2luKCkg Zm9yIGkgPSAxLE4gZG8gbG9jYWwgdiA9IG1hdGgucmFuZG9tKDEwICogTikgczE6cmVwbGFjZXt2 fSBzMjpyZXBsYWNle3Z9IGVuZCBib3guY29tbWl0KCkKPj4gPitzMTpjb3VudCgpID09IHMyOmNv dW50KCkKPj4gPisKPj4gPitnb29kID0gdHJ1ZSByMSA9IHMxOnNlbGVjdHt9IHIyID0gczI6c2Vs ZWN0e30KPj4gPitpZiAjcjEgfj0gI3IyIHRoZW4gZ29vZCA9IGZhbHNlIGVuZAo+PiA+K2ZvciBr LHYgaW4gcGFpcnMocjEpIGRvIGlmIHIyW2tdWzFdIH49IHZbMV0gdGhlbiBnb29kID0gZmFsc2Ug ZW5kIGVuZAo+PiA+K2dvb2QKPj4gPityMSA9IG5pbCByMiA9IG5pbAo+PiA+Kwo+PiA+K2Z1bmN0 aW9uIGRpZmYodDEsIHQyKSBpZiB0MSB0aGVuIHJldHVybiB0MVsxXSB+PSB0MlsxXSBlbHNlIHJl dHVybiB0MiB+PSBuaWwgZW5kIGVuZAo+PiA+K2ZvciBpID0gMSwgTiAqIDEwIGRvIGlmIGRpZmYo czE6Z2V0e2l9LCBzMjpnZXR7aX0pIHRoZW4gZ29vZCA9IGZhbHNlIGVuZCBlbmQKPj4gPitnb29k Cj4+ID4rCj4+ID4rczEuaW5kZXhbMF06YnNpemUoKSA8IHMyLmluZGV4WzBdOmJzaXplKCkKPj4g PitzMS5pbmRleFswXTphbHRlcntoaW50PXRydWV9Cj4+ID4rczEuaW5kZXhbMF06YnNpemUoKSA9 PSBzMi5pbmRleFswXTpic2l6ZSgpCj4+ID4rczIuaW5kZXhbMF06YWx0ZXJ7aGludD1mYWxzZX0K Pj4gPitzMS5pbmRleFswXTpic2l6ZSgpID4gczIuaW5kZXhbMF06YnNpemUoKQo+PiA+K3MxLmlu ZGV4WzBdOmFsdGVye2hpbnQ9ZmFsc2V9Cj4+ID4rczEuaW5kZXhbMF06YnNpemUoKSA9PSBzMi5p bmRleFswXTpic2l6ZSgpCj4+ID4rCj4+ID4rczE6ZHJvcCgpCj4+ID4rczI6ZHJvcCgpCj4+ID4r Cj4+ID4rLS0gc3RyaW5nIGhpbnRzCj4+ID4rczEgPSBib3guc2NoZW1hLnNwYWNlLmNyZWF0ZSgn dGVzdDEnKQo+PiA+K3MxOmNyZWF0ZV9pbmRleCgndGVzdCcsIHt0eXBlID0gJ3RyZWUnLCBwYXJ0 cyA9IHsxLCAnc3RyJ30sIGhpbnQgPSBmYWxzZX0pLmhpbnQKPj4gPitzMiA9IGJveC5zY2hlbWEu c3BhY2UuY3JlYXRlKCd0ZXN0MicpCj4+ID4rczI6Y3JlYXRlX2luZGV4KCd0ZXN0Jywge3R5cGUg PSAndHJlZScsIHBhcnRzID0gezEsICdzdHInfX0pLmhpbnQKPj4gPisKPj4gPitOID0gMTAwMAo+ PiA+K2JveC5iZWdpbigpIGZvciBpID0gMSxOIGRvIGxvY2FsIHYgPSAnJy4ubWF0aC5yYW5kb20o MTAgKiBOKSBzMTpyZXBsYWNle3Z9IHMyOnJlcGxhY2V7dn0gZW5kIGJveC5jb21taXQoKQo+PiA+ K3MxOmNvdW50KCkgPT0gczI6Y291bnQoKQo+PiA+Kwo+PiA+K2dvb2QgPSB0cnVlIHIxID0gczE6 c2VsZWN0e30gcjIgPSBzMjpzZWxlY3R7fQo+PiA+K2lmICNyMSB+PSAjcjIgdGhlbiBnb29kID0g ZmFsc2UgZW5kCj4+ID4rZm9yIGssdiBpbiBwYWlycyhyMSkgZG8gaWYgcjJba11bMV0gfj0gdlsx XSB0aGVuIGdvb2QgPSBmYWxzZSBlbmQgZW5kCj4+ID4rZ29vZAo+PiA+K3IxID0gbmlsIHIyID0g bmlsCj4+ID4rCj4+ID4rZnVuY3Rpb24gZGlmZih0MSwgdDIpIGlmIHQxIHRoZW4gcmV0dXJuIHQx WzFdIH49IHQyWzFdIGVsc2UgcmV0dXJuIHQyIH49IG5pbCBlbmQgZW5kCj4+ID4rZm9yIGkgPSAx LCBOICogMTAgZG8gdiA9ICcnLi5pIGlmIGRpZmYoczE6Z2V0e3Z9LCBzMjpnZXR7dn0pIHRoZW4g Z29vZCA9IGZhbHNlIGVuZCBlbmQKPj4gPitnb29kCj4+ID4rCj4+ID4rczEuaW5kZXhbMF06YnNp emUoKSA8IHMyLmluZGV4WzBdOmJzaXplKCkKPj4gPitzMS5pbmRleFswXTphbHRlcntoaW50PXRy dWV9Cj4+ID4rczEuaW5kZXhbMF06YnNpemUoKSA9PSBzMi5pbmRleFswXTpic2l6ZSgpCj4+ID4r czIuaW5kZXhbMF06YWx0ZXJ7aGludD1mYWxzZX0KPj4gPitzMS5pbmRleFswXTpic2l6ZSgpID4g czIuaW5kZXhbMF06YnNpemUoKQo+PiA+K3MxLmluZGV4WzBdOmFsdGVye2hpbnQ9ZmFsc2V9Cj4+ ID4rczEuaW5kZXhbMF06YnNpemUoKSA9PSBzMi5pbmRleFswXTpic2l6ZSgpCj4+ID4rCj4+ID4r czE6ZHJvcCgpCj4+ID4rczI6ZHJvcCgpCj4+ID4rCj4+ID4rLS0gc3RyaW5nIHdpdGggY29sbGF0 aW9uIGhpbnRzCj4+ID4rczEgPSBib3guc2NoZW1hLnNwYWNlLmNyZWF0ZSgndGVzdDEnKQo+PiA+ K3MxOmNyZWF0ZV9pbmRleCgndGVzdCcsIHt0eXBlID0gJ3RyZWUnLCBwYXJ0cyA9IHt7MSwgJ3N0 cicsIGNvbGxhdGlvbiA9ICdVbmljb2RlJ319LCBoaW50ID0gZmFsc2V9KS5oaW50Cj4+ID4rczIg PSBib3guc2NoZW1hLnNwYWNlLmNyZWF0ZSgndGVzdDInKQo+PiA+K3MyOmNyZWF0ZV9pbmRleCgn dGVzdCcsIHt0eXBlID0gJ3RyZWUnLCBwYXJ0cyA9IHt7MSwgJ3N0cicsIGNvbGxhdGlvbiA9ICdV bmljb2RlJ319fSkuaGludAo+PiA+Kwo+PiA+K04gPSAxMDAwCj4+ID4rc3ltcyA9IHsnYScsICdC JywgJ2MnLCAnRCcsICfQticsICfQgScsICd+JywgJzEnLCAnJScsICcyJ30KPj4gPitzeW1zX3Np emUgPSAjc3ltcwo+PiA+K2xlbiA9IDIwCj4+ID4rdmFscyA9IHt9Cj4+ID4rZm9yIGkgPSAxLDIq TiBkbyBzdHIgPSAnJyBmb3Igaj0xLGxlbiBkbyBzdHIgPSBzdHIgLi4gc3ltc1ttYXRoLnJhbmRv bShzeW1zX3NpemUpXSBlbmQgdmFsc1tpXSA9IHN0ciBlbmQKPj4gPisKPj4gPitmb3IgaSA9IDEs TiBkbyBsb2NhbCB2ID0gdmFsc1tpXSBzMTpyZXBsYWNle3Z9IHMyOnJlcGxhY2V7dn0gZW5kCj4+ ID4rczE6Y291bnQoKSA9PSBzMjpjb3VudCgpCj4+ID4rCj4+ID4rZ29vZCA9IHRydWUgcjEgPSBz MTpzZWxlY3R7fSByMiA9IHMyOnNlbGVjdHt9Cj4+ID4raWYgI3IxIH49ICNyMiB0aGVuIGdvb2Qg PSBmYWxzZSBlbmQKPj4gPitmb3Igayx2IGluIHBhaXJzKHIxKSBkbyBpZiByMltrXVsxXSB+PSB2 WzFdIHRoZW4gZ29vZCA9IGZhbHNlIGVuZCBlbmQKPj4gPitnb29kCj4+ID4rcjEgPSBuaWwgcjIg PSBuaWwKPj4gPisKPj4gPitmdW5jdGlvbiBkaWZmKHQxLCB0MikgaWYgdDEgdGhlbiByZXR1cm4g dDFbMV0gfj0gdDJbMV0gZWxzZSByZXR1cm4gdDIgfj0gbmlsIGVuZCBlbmQKPj4gPitmb3IgaSA9 IDEsIE4gKiAyIGRvIHYgPSB2YWxzW2ldIGlmIGRpZmYoczE6Z2V0e3Z9LCBzMjpnZXR7dn0pIHRo ZW4gZ29vZCA9IGZhbHNlIGVuZCBlbmQKPj4gPitnb29kCj4+ID4rCj4+ID4rczEuaW5kZXhbMF06 YnNpemUoKSA8IHMyLmluZGV4WzBdOmJzaXplKCkKPj4gPitzMS5pbmRleFswXTphbHRlcntoaW50 PXRydWV9Cj4+ID4rczEuaW5kZXhbMF06YnNpemUoKSA9PSBzMi5pbmRleFswXTpic2l6ZSgpCj4+ ID4rczIuaW5kZXhbMF06YWx0ZXJ7aGludD1mYWxzZX0KPj4gPitzMS5pbmRleFswXTpic2l6ZSgp ID4gczIuaW5kZXhbMF06YnNpemUoKQo+PiA+K3MxLmluZGV4WzBdOmFsdGVye2hpbnQ9ZmFsc2V9 Cj4+ID4rczEuaW5kZXhbMF06YnNpemUoKSA9PSBzMi5pbmRleFswXTpic2l6ZSgpCj4+ID4rCj4+ ID4rczE6ZHJvcCgpCj4+ID4rczI6ZHJvcCgpCj4+ID5kaWZmIC0tZ2l0IGEvdGVzdC9ib3gvdHJl ZV9wa19tdWx0aXBhcnQucmVzdWx0IGIvdGVzdC9ib3gvdHJlZV9wa19tdWx0aXBhcnQucmVzdWx0 Cj4+ID5pbmRleCA5MzIxOWY2Li4zZjZiYjk0IDEwMDY0NAo+PiA+LS0tIGEvdGVzdC9ib3gvdHJl ZV9wa19tdWx0aXBhcnQucmVzdWx0Cj4+ID4rKysgYi90ZXN0L2JveC90cmVlX3BrX211bHRpcGFy dC5yZXN1bHQKPj4gPkBAIC01NDIsMyArNTQyLDE1NiBAQCBzcGFjZTpkcm9wKCkKPj4gPsKgc3Bh Y2UgPSBuaWwKPj4gPsKgLS0tCj4+ID7CoC4uLgo+PiA+Ky0tIGhpbnRzCj4+ID4rdGVzdF9ydW46 Y21kKCJzZXRvcHQgZGVsaW1pdGVyICc7JyIpCj4+ID4rLS0tCj4+ID4rLSB0cnVlCj4+ID4rLi4u Cj4+ID4rZnVuY3Rpb24gZXF1YWwocmVzMSwgcmVzMikKPj4gPisgaWYgI3JlczEgfj0gI3JlczIg dGhlbgo+PiA+KyByZXR1cm4gZmFsc2UKPj4gPisgZW5kCj4+ID4rIGZvciBrLHYgaW4gcGFpcnMo cmVzMSkgZG8KPj4gPisgaWYgcmVzMltrXVsxXSB+PSB2WzFdIG9yIHJlczJba11bMl0gfj0gdlsy XSB0aGVuCj4+ID4rIHJldHVybiBmYWxzZQo+PiA+KyBlbmQKPj4gPisgZW5kCj4+ID4rIHJldHVy biB0cnVlCj4+ID4rZW5kCj4+ID4rdGVzdF9ydW46Y21kKCJzZXRvcHQgZGVsaW1pdGVyICcnIik7 Cj4+ID4rLS0tCj4+ID4rLi4uCj4+ID4rLS0gbnVtIG51bQo+PiA+K04xID0gMTAwCj4+ID4rLS0t Cj4+ID4rLi4uCj4+ID4rdDEgPSB7fQo+PiA+Ky0tLQo+PiA+Ky4uLgo+PiA+K2ZvciBpID0gMSxO MSoyIGRvIHQxW2ldID0gbWF0aC5yYW5kb20oMTAwMDApICogMTAwMDAgKyBpIGVuZAo+PiA+Ky0t LQo+PiA+Ky4uLgo+PiA+K04yID0gNQo+PiA+Ky0tLQo+PiA+Ky4uLgo+PiA+K3QyID0ge30KPj4g PistLS0KPj4gPisuLi4KPj4gPitmb3IgaSA9IDEsTjIqMiBkbyB0MltpXSA9IG1hdGgucmFuZG9t KDEwMDAwMDApIGVuZAo+PiA+Ky0tLQo+PiA+Ky4uLgo+PiA+K3MxID0gYm94LnNjaGVtYS5zcGFj ZS5jcmVhdGUoJ3Rlc3QxJykKPj4gPistLS0KPj4gPisuLi4KPj4gPitzMTpjcmVhdGVfaW5kZXgo J3Rlc3QnLCB7dHlwZSA9ICd0cmVlJywgcGFydHMgPSB7ezEsICdudW0nfSwgezIsICdudW0nfX0s IGhpbnQgPSBmYWxzZX0pLmhpbnQKPj4gPistLS0KPj4gPistIGZhbHNlCj4+ID4rLi4uCj4+ID4r czIgPSBib3guc2NoZW1hLnNwYWNlLmNyZWF0ZSgndGVzdDInKQo+PiA+Ky0tLQo+PiA+Ky4uLgo+ PiA+K3MyOmNyZWF0ZV9pbmRleCgndGVzdCcsIHt0eXBlID0gJ3RyZWUnLCBwYXJ0cyA9IHt7MSwg J251bSd9LCB7MiwgJ251bSd9fSwgaGludCA9IHRydWV9KS5oaW50Cj4+ID4rLS0tCj4+ID4rLSB0 cnVlCj4+ID4rLi4uCj4+ID4rZm9yIGogPSAxLE4yIGRvIGZvciBpID0gMSxOMSBkbyBzMTpyZXBs YWNle3QxW2ldLCB0MltqXX0gczI6cmVwbGFjZXt0MVtpXSwgdDJbal19IGVuZCBlbmQKPj4gPist LS0KPj4gPisuLi4KPj4gPitzMTpjb3VudCgpID09IHMyOmNvdW50KCkKPj4gPistLS0KPj4gPist IHRydWUKPj4gPisuLi4KPj4gPitlcXVhbChzMTpzZWxlY3R7fSwgczI6c2VsZWN0e30pCj4+ID4r LS0tCj4+ID4rLSB0cnVlCj4+ID4rLi4uCj4+ID4rZ29vZCA9IHRydWUKPj4gPistLS0KPj4gPisu Li4KPj4gPitmb3IgaSA9IDEsTjEqMiBkbyBnb29kID0gZ29vZCBhbmQgZXF1YWwoczE6c2VsZWN0 e3QxW2ldfSwgczI6c2VsZWN0e3QxW2ldfSkgZW5kCj4+ID4rLS0tCj4+ID4rLi4uCj4+ID4rZ29v ZAo+PiA+Ky0tLQo+PiA+Ky0gdHJ1ZQo+PiA+Ky4uLgo+PiA+K2ZvciBpID0gMSxOMSoyIGRvIGZv ciBqPTEsTjIqMiBkbyBnb29kID0gZ29vZCBhbmQgZXF1YWwoczE6c2VsZWN0e3QxW2ldLCB0Mltq XX0sIHMyOnNlbGVjdHt0MVtpXSwgdDJbal19KSBlbmQgZW5kCj4+ID4rLS0tCj4+ID4rLi4uCj4+ ID4rZ29vZAo+PiA+Ky0tLQo+PiA+Ky0gdHJ1ZQo+PiA+Ky4uLgo+PiA+K3MxOmRyb3AoKQo+PiA+ Ky0tLQo+PiA+Ky4uLgo+PiA+K3MyOmRyb3AoKQo+PiA+Ky0tLQo+PiA+Ky4uLgo+PiA+Ky0tIHN0 ciBudW0KPj4gPitOMSA9IDEwMAo+PiA+Ky0tLQo+PiA+Ky4uLgo+PiA+K3QxID0ge30KPj4gPist LS0KPj4gPisuLi4KPj4gPitmb3IgaSA9IDEsTjEqMiBkbyB0MVtpXSA9ICcnLi4obWF0aC5yYW5k b20oMTAwMDApICogMTAwMDAgKyBpKSBlbmQKPj4gPistLS0KPj4gPisuLi4KPj4gPitOMiA9IDUK Pj4gPistLS0KPj4gPisuLi4KPj4gPit0MiA9IHt9Cj4+ID4rLS0tCj4+ID4rLi4uCj4+ID4rZm9y IGkgPSAxLE4yKjIgZG8gdDJbaV0gPSBtYXRoLnJhbmRvbSgxMDAwMDAwKSBlbmQKPj4gPistLS0K Pj4gPisuLi4KPj4gPitzMSA9IGJveC5zY2hlbWEuc3BhY2UuY3JlYXRlKCd0ZXN0MScpCj4+ID4r LS0tCj4+ID4rLi4uCj4+ID4rczE6Y3JlYXRlX2luZGV4KCd0ZXN0Jywge3R5cGUgPSAndHJlZScs IHBhcnRzID0ge3sxLCAnc3RyJ30sIHsyLCAnbnVtJ319LCBoaW50ID0gZmFsc2V9KS5oaW50Cj4+ ID4rLS0tCj4+ID4rLSBmYWxzZQo+PiA+Ky4uLgo+PiA+K3MyID0gYm94LnNjaGVtYS5zcGFjZS5j cmVhdGUoJ3Rlc3QyJykKPj4gPistLS0KPj4gPisuLi4KPj4gPitzMjpjcmVhdGVfaW5kZXgoJ3Rl c3QnLCB7dHlwZSA9ICd0cmVlJywgcGFydHMgPSB7ezEsICdzdHInfSwgezIsICdudW0nfX0sIGhp bnQgPSB0cnVlfSkuaGludAo+PiA+Ky0tLQo+PiA+Ky0gdHJ1ZQo+PiA+Ky4uLgo+PiA+K2ZvciBq ID0gMSxOMiBkbyBmb3IgaSA9IDEsTjEgZG8gczE6cmVwbGFjZXt0MVtpXSwgdDJbal19IHMyOnJl cGxhY2V7dDFbaV0sIHQyW2pdfSBlbmQgZW5kCj4+ID4rLS0tCj4+ID4rLi4uCj4+ID4rczE6Y291 bnQoKSA9PSBzMjpjb3VudCgpCj4+ID4rLS0tCj4+ID4rLSB0cnVlCj4+ID4rLi4uCj4+ID4rZXF1 YWwoczE6c2VsZWN0e30sIHMyOnNlbGVjdHt9KQo+PiA+Ky0tLQo+PiA+Ky0gdHJ1ZQo+PiA+Ky4u Lgo+PiA+K2dvb2QgPSB0cnVlCj4+ID4rLS0tCj4+ID4rLi4uCj4+ID4rZm9yIGkgPSAxLE4xKjIg ZG8gZ29vZCA9IGdvb2QgYW5kIGVxdWFsKHMxOnNlbGVjdHt0MVtpXX0sIHMyOnNlbGVjdHt0MVtp XX0pIGVuZAo+PiA+Ky0tLQo+PiA+Ky4uLgo+PiA+K2dvb2QKPj4gPistLS0KPj4gPistIHRydWUK Pj4gPisuLi4KPj4gPitmb3IgaSA9IDEsTjEqMiBkbyBmb3Igaj0xLE4yKjIgZG8gZ29vZCA9IGdv b2QgYW5kIGVxdWFsKHMxOnNlbGVjdHt0MVtpXSwgdDJbal19LCBzMjpzZWxlY3R7dDFbaV0sIHQy W2pdfSkgZW5kIGVuZAo+PiA+Ky0tLQo+PiA+Ky4uLgo+PiA+K2dvb2QKPj4gPistLS0KPj4gPist IHRydWUKPj4gPisuLi4KPj4gPitzMTpkcm9wKCkKPj4gPistLS0KPj4gPisuLi4KPj4gPitzMjpk cm9wKCkKPj4gPistLS0KPj4gPisuLi4KPj4gPmRpZmYgLS1naXQgYS90ZXN0L2JveC90cmVlX3Br X211bHRpcGFydC50ZXN0Lmx1YSBiL3Rlc3QvYm94L3RyZWVfcGtfbXVsdGlwYXJ0LnRlc3QubHVh Cj4+ID5pbmRleCA3ZDM0MDVmLi5jYmEzYTk4IDEwMDY0NAo+PiA+LS0tIGEvdGVzdC9ib3gvdHJl ZV9wa19tdWx0aXBhcnQudGVzdC5sdWEKPj4gPisrKyBiL3Rlc3QvYm94L3RyZWVfcGtfbXVsdGlw YXJ0LnRlc3QubHVhCj4+ID5AQCAtMTk0LDMgKzE5NCw2NyBAQCB0ZXN0X3J1bjpjbWQoInNldG9w dCBkZWxpbWl0ZXIgJyciKTsKPj4gPsKgc3BhY2U6ZHJvcCgpCj4+ID7CoAo+PiA+wqBzcGFjZSA9 IG5pbAo+PiA+Kwo+PiA+Kwo+PiA+Ky0tIGhpbnRzCj4+ID4rdGVzdF9ydW46Y21kKCJzZXRvcHQg ZGVsaW1pdGVyICc7JyIpCj4+ID4rZnVuY3Rpb24gZXF1YWwocmVzMSwgcmVzMikKPj4gPisgaWYg I3JlczEgfj0gI3JlczIgdGhlbgo+PiA+KyByZXR1cm4gZmFsc2UKPj4gPisgZW5kCj4+ID4rIGZv ciBrLHYgaW4gcGFpcnMocmVzMSkgZG8KPj4gPisgaWYgcmVzMltrXVsxXSB+PSB2WzFdIG9yIHJl czJba11bMl0gfj0gdlsyXSB0aGVuCj4+ID4rIHJldHVybiBmYWxzZQo+PiA+KyBlbmQKPj4gPisg ZW5kCj4+ID4rIHJldHVybiB0cnVlCj4+ID4rZW5kCj4+ID4rdGVzdF9ydW46Y21kKCJzZXRvcHQg ZGVsaW1pdGVyICcnIik7Cj4+ID4rCj4+ID4rLS0gbnVtIG51bQo+PiA+K04xID0gMTAwCj4+ID4r dDEgPSB7fQo+PiA+K2ZvciBpID0gMSxOMSoyIGRvIHQxW2ldID0gbWF0aC5yYW5kb20oMTAwMDAp ICogMTAwMDAgKyBpIGVuZAo+PiA+K04yID0gNQo+PiA+K3QyID0ge30KPj4gPitmb3IgaSA9IDEs TjIqMiBkbyB0MltpXSA9IG1hdGgucmFuZG9tKDEwMDAwMDApIGVuZAo+PiA+Kwo+PiA+K3MxID0g Ym94LnNjaGVtYS5zcGFjZS5jcmVhdGUoJ3Rlc3QxJykKPj4gPitzMTpjcmVhdGVfaW5kZXgoJ3Rl c3QnLCB7dHlwZSA9ICd0cmVlJywgcGFydHMgPSB7ezEsICdudW0nfSwgezIsICdudW0nfX0sIGhp bnQgPSBmYWxzZX0pLmhpbnQKPj4gPitzMiA9IGJveC5zY2hlbWEuc3BhY2UuY3JlYXRlKCd0ZXN0 MicpCj4+ID4rczI6Y3JlYXRlX2luZGV4KCd0ZXN0Jywge3R5cGUgPSAndHJlZScsIHBhcnRzID0g e3sxLCAnbnVtJ30sIHsyLCAnbnVtJ319LCBoaW50ID0gdHJ1ZX0pLmhpbnQKPj4gPitmb3IgaiA9 IDEsTjIgZG8gZm9yIGkgPSAxLE4xIGRvIHMxOnJlcGxhY2V7dDFbaV0sIHQyW2pdfSBzMjpyZXBs YWNle3QxW2ldLCB0MltqXX0gZW5kIGVuZAo+PiA+K3MxOmNvdW50KCkgPT0gczI6Y291bnQoKQo+ PiA+K2VxdWFsKHMxOnNlbGVjdHt9LCBzMjpzZWxlY3R7fSkKPj4gPitnb29kID0gdHJ1ZQo+PiA+ K2ZvciBpID0gMSxOMSoyIGRvIGdvb2QgPSBnb29kIGFuZCBlcXVhbChzMTpzZWxlY3R7dDFbaV19 LCBzMjpzZWxlY3R7dDFbaV19KSBlbmQKPj4gPitnb29kCj4+ID4rZm9yIGkgPSAxLE4xKjIgZG8g Zm9yIGo9MSxOMioyIGRvIGdvb2QgPSBnb29kIGFuZCBlcXVhbChzMTpzZWxlY3R7dDFbaV0sIHQy W2pdfSwgczI6c2VsZWN0e3QxW2ldLCB0MltqXX0pIGVuZCBlbmQKPj4gPitnb29kCj4+ID4rCj4+ ID4rczE6ZHJvcCgpCj4+ID4rczI6ZHJvcCgpCj4+ID4rCj4+ID4rLS0gc3RyIG51bQo+PiA+K04x ID0gMTAwCj4+ID4rdDEgPSB7fQo+PiA+K2ZvciBpID0gMSxOMSoyIGRvIHQxW2ldID0gJycuLiht YXRoLnJhbmRvbSgxMDAwMCkgKiAxMDAwMCArIGkpIGVuZAo+PiA+K04yID0gNQo+PiA+K3QyID0g e30KPj4gPitmb3IgaSA9IDEsTjIqMiBkbyB0MltpXSA9IG1hdGgucmFuZG9tKDEwMDAwMDApIGVu ZAo+PiA+Kwo+PiA+K3MxID0gYm94LnNjaGVtYS5zcGFjZS5jcmVhdGUoJ3Rlc3QxJykKPj4gPitz MTpjcmVhdGVfaW5kZXgoJ3Rlc3QnLCB7dHlwZSA9ICd0cmVlJywgcGFydHMgPSB7ezEsICdzdHIn fSwgezIsICdudW0nfX0sIGhpbnQgPSBmYWxzZX0pLmhpbnQKPj4gPitzMiA9IGJveC5zY2hlbWEu c3BhY2UuY3JlYXRlKCd0ZXN0MicpCj4+ID4rczI6Y3JlYXRlX2luZGV4KCd0ZXN0Jywge3R5cGUg PSAndHJlZScsIHBhcnRzID0ge3sxLCAnc3RyJ30sIHsyLCAnbnVtJ319LCBoaW50ID0gdHJ1ZX0p LmhpbnQKPj4gPitmb3IgaiA9IDEsTjIgZG8gZm9yIGkgPSAxLE4xIGRvIHMxOnJlcGxhY2V7dDFb aV0sIHQyW2pdfSBzMjpyZXBsYWNle3QxW2ldLCB0MltqXX0gZW5kIGVuZAo+PiA+K3MxOmNvdW50 KCkgPT0gczI6Y291bnQoKQo+PiA+K2VxdWFsKHMxOnNlbGVjdHt9LCBzMjpzZWxlY3R7fSkKPj4g Pitnb29kID0gdHJ1ZQo+PiA+K2ZvciBpID0gMSxOMSoyIGRvIGdvb2QgPSBnb29kIGFuZCBlcXVh bChzMTpzZWxlY3R7dDFbaV19LCBzMjpzZWxlY3R7dDFbaV19KSBlbmQKPj4gPitnb29kCj4+ID4r Zm9yIGkgPSAxLE4xKjIgZG8gZm9yIGo9MSxOMioyIGRvIGdvb2QgPSBnb29kIGFuZCBlcXVhbChz MTpzZWxlY3R7dDFbaV0sIHQyW2pdfSwgczI6c2VsZWN0e3QxW2ldLCB0MltqXX0pIGVuZCBlbmQK Pj4gPitnb29kCj4+ID4rCj4+ID4rczE6ZHJvcCgpCj4+ID4rczI6ZHJvcCgpCj4+ID4tLQo+PiA+ Mi43LjQKPj4gPsKgCj4+IC0tCj4+IElseWEgS29zYXJldgotLQpJbHlhIEtvc2FyZXY= ----ALT--cAfB6cA44Fc8fB0a433d75fF6bE2cDc11603198666 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 CjxIVE1MPjxCT0RZPjxkaXY+PGJyPjxicj4mbmJzcDs8YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVy LWxlZnQ6MXB4IHNvbGlkICMwODU3QTY7IG1hcmdpbjoxMHB4OyBwYWRkaW5nOjAgMCAwIDEwcHg7 Ij7QktGC0L7RgNC90LjQuiwgMjAg0L7QutGC0Y/QsdGA0Y8gMjAyMCwgMTU6MzggKzAzOjAwINC+ 0YIgTmlraXRhIFBldHRpayAmbHQ7a29yYWJsZXZAdGFyYW50b29sLm9yZyZndDs6PGJyPiZuYnNw OzxkaXYgaWQ9IiI+PGRpdiBjbGFzcz0ianMtaGVscGVyIGpzLXJlYWRtc2ctbXNnIj48ZGl2Pjxk aXYgaWQ9InN0eWxlXzE2MDMxOTc0ODAxOTM0MTg4ODEyX0JPRFkiPk9uIDIwIE9jdCAxNTozNCwg SWx5YSBLb3NhcmV2IHdyb3RlOjxicj4mZ3Q7PGJyPiZndDsgSGksPGJyPiZndDsgJm5ic3A7PGJy PiZndDsgVGhhbmtzIGZvciB0aGUgcGF0Y2ghPGJyPiZndDsgJm5ic3A7PGJyPiZndDsgTEdUTSwg aSBjaGVja2VkIGZvciB0aGUgbnVtYmVyIG9mIGNvbXBpbGVycyB0aGF0IGlmIHdpdGggdGhlJm5i c3A7dGVtcGxhdGVkPGJyPiZndDsgYWdydW1lbnQmbmJzcDtpcyBiZWluZyBwcm9jZXNzZWQgYXQg dGhlIGNvbXBpbGUgdGltZSBzbyB0aGF0IHRoZXJlIGFyZSBubyBqdW1wczxicj4mZ3Q7IGluIGFz bSBjb2RlLjxicj4mZ3Q7ICZuYnNwOzxicj4mZ3Q7IFdoYXQgaSB0aGluayBpcyBuZWVkZWQgaXMg dGhlIGVudW0gbGlrZSB0aGUgZm9sbG93aW5nOjxicj4mZ3Q7IGVudW0gezxicj4mZ3Q7ICZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO05PVF9ISU5URUQgPSAw ICw8YnI+Jmd0OyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDtISU5URUQgPSAxICw8YnI+Jmd0OyB9Ozxicj48YnI+SSBsaWtlIHRoaXMgd2F5LiBCdHcgd2h5 IG5vdCB1c2luZyBqdXN0IGJvb2xlYW4gdHlwZT88L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Js b2NrcXVvdGU+PC9kaXY+PGRpdj5JIHRoaW5rIHRoZXJlIHdhcyBhbiBpZGVhIHRvIGltcGxlbWVu dCBtb3JlIHRoYW4gb25lIHR5cGUgb2YgaGludHMuPC9kaXY+PGRpdj5BbHNvIGl0IGRvZXNu4oCZ dCByZWFsbHkgbWF0dGVyIGFzIGZhciBhcyB3ZSBoYXZlIHRoZSBwcm9wZXIgY29uc3RhbnRzLjwv ZGl2PjxkaXY+PGJsb2NrcXVvdGUgc3R5bGU9ImJvcmRlci1sZWZ0OjFweCBzb2xpZCAjMDg1N0E2 OyBtYXJnaW46MTBweDsgcGFkZGluZzowIDAgMCAxMHB4OyI+PGRpdj48ZGl2IGNsYXNzPSJqcy1o ZWxwZXIganMtcmVhZG1zZy1tc2ciPjxkaXY+PGRpdj4mbmJzcDsmbmJzcDs8YnI+Jmd0OyB0byBh dm9pZCB1c2luZyAmbHQ7MCZndDsgJmFtcDsgJmx0OzEmZ3Q7LiBJZiBuZWVkZWQgaSBjYW4gcHVz aCBzdWNoIHBhdGNoIHRvIHRoZSBicmFuY2guPGJyPiZndDsgJmd0O9Cf0L7QvdC10LTQtdC70YzQ vdC40LosIDE5INC+0LrRgtGP0LHRgNGPIDIwMjAsIDEyOjUyICswMzowMCDQvtGCIEFsZWtzYW5k ciBMeWFwdW5vdiAmbHQ7PGEgaHJlZj0iL2NvbXBvc2U/VG89YWx5YXB1bm92QHRhcmFudG9vbC5v cmciPmFseWFwdW5vdkB0YXJhbnRvb2wub3JnPC9hPiZndDs6PGJyPiZndDsgJmd0OyZuYnNwOzxi cj4mZ3Q7ICZndDtTaW5jZSA5ZmJhMjlhYmI0ZTA1YmFiYjliMjNiNDQxM2JkODA4M2YwZmJhOTMz IChtZW10eDogaW50cm9kdWNlIHR1cGxlPGJyPiZndDsgJmd0O2NvbXBhcmUgaGludCkgbWVtdHgg dHJlZSBrZXkgZGF0YSAoaW5kZXhlcykgc3RhcnRlZCB0byBjb250YWluIGV4dHJhIDg8YnI+Jmd0 OyAmZ3Q7Ynl0ZXMgYXMgYSBoaW50LiBOb3cgaXQgaXMgb3B0aW9uYWwgYW5kIGNhbiBiZSB0dXJu ZWQgb2ZmIGluIGFuIGluZGV4PGJyPiZndDsgJmd0O29wdGlvbnMgd2l0aCAiaGludCA9IGZhbHNl IiBlbnRyeS48YnI+Jmd0OyAmZ3Q7PGJyPiZndDsgJmd0O0Nsb3NlcyAjNDkyNzxicj4mZ3Q7ICZn dDs8YnI+Jmd0OyAmZ3Q7QFRhcmFudG9vbEJvdCBkb2N1bWVudDxicj4mZ3Q7ICZndDtUaXRsZTog bWVtdHg6IG9wdGlvbmFsIHR1cGxlIGNvbXBhcmUgaGludHM8YnI+Jmd0OyAmZ3Q7VXBkYXRlIHRo ZSBkb2N1bWVudGF0aW9uIGZvciBhbiBpbmRleCBjcmVhdGlvbiB0byByZWZsZWN0IHRoYXQgdGhl cmUgaXM8YnI+Jmd0OyAmZ3Q7bm93IGFuIG9wdGlvbiB0byB0dXJuIG9mZiBoaW50cyBmb3IgdGhl IGluZGV4Ljxicj4mZ3Q7ICZndDstLS08YnI+Jmd0OyAmZ3Q7Jm5ic3A7c3JjL2JveC9pbmRleF9k ZWYuYyB8IDIgKzxicj4mZ3Q7ICZndDsmbmJzcDtzcmMvYm94L2luZGV4X2RlZi5oIHwgNiArPGJy PiZndDsgJmd0OyZuYnNwO3NyYy9ib3gvbHVhL3NjaGVtYS5sdWEgfCA1MyArKysrPGJyPiZndDsg Jmd0OyZuYnNwO3NyYy9ib3gvbHVhL3NwYWNlLmNjIHwgNyArPGJyPiZndDsgJmd0OyZuYnNwO3Ny Yy9ib3gvbWVtdHhfZW5naW5lLmMgfCAyICs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7c3JjL2JveC9tZW10 eF90cmVlLmNjIHwgNTk5ICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLTxicj4m Z3Q7ICZndDsmbmJzcDtzcmMvbGliL3NhbGFkL2Jwc190cmVlLmggfCAxOSArKzxicj4mZ3Q7ICZn dDsmbmJzcDt0ZXN0L2JveC9hbHRlci5yZXN1bHQgfCAxMDMgKysrKysrLTxicj4mZ3Q7ICZndDsm bmJzcDt0ZXN0L2JveC9hbHRlci50ZXN0Lmx1YSB8IDM0ICsrPGJyPiZndDsgJmd0OyZuYnNwO3Rl c3QvYm94L2Vycmluai5yZXN1bHQgfCAzICstPGJyPiZndDsgJmd0OyZuYnNwO3Rlc3QvYm94L3Ry ZWVfcGsucmVzdWx0IHwgMzE0ICsrKysrKysrKysrKysrKysrKys8YnI+Jmd0OyAmZ3Q7Jm5ic3A7 dGVzdC9ib3gvdHJlZV9way50ZXN0Lmx1YSB8IDExNSArKysrKysrPGJyPiZndDsgJmd0OyZuYnNw O3Rlc3QvYm94L3RyZWVfcGtfbXVsdGlwYXJ0LnJlc3VsdCB8IDE1MyArKysrKysrKys8YnI+Jmd0 OyAmZ3Q7Jm5ic3A7dGVzdC9ib3gvdHJlZV9wa19tdWx0aXBhcnQudGVzdC5sdWEgfCA2NCArKysr PGJyPiZndDsgJmd0OyZuYnNwOzE0IGZpbGVzIGNoYW5nZWQsIDEyNjkgaW5zZXJ0aW9ucygrKSwg MjA1IGRlbGV0aW9ucygtKTxicj4mZ3Q7ICZndDs8YnI+Jmd0OyAmZ3Q7ZGlmZiAtLWdpdCBhL3Ny Yy9ib3gvaW5kZXhfZGVmLmMgYi9zcmMvYm94L2luZGV4X2RlZi5jPGJyPiZndDsgJmd0O2luZGV4 IDk4MDI5NjEuLjc5Mzk0YjggMTAwNjQ0PGJyPiZndDsgJmd0Oy0tLSBhL3NyYy9ib3gvaW5kZXhf ZGVmLmM8YnI+Jmd0OyAmZ3Q7KysrIGIvc3JjL2JveC9pbmRleF9kZWYuYzxicj4mZ3Q7ICZndDtA QCAtNTEsNiArNTEsNyBAQCBjb25zdCBzdHJ1Y3QgaW5kZXhfb3B0cyBpbmRleF9vcHRzX2RlZmF1 bHQgPSB7PGJyPiZndDsgJmd0OyZuYnNwOyAvKiAubHNuID0gKi8gMCw8YnI+Jmd0OyAmZ3Q7Jm5i c3A7IC8qIC5zdGF0ID0gKi8gTlVMTCw8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IC8qIC5mdW5jID0gKi8g MCw8YnI+Jmd0OyAmZ3Q7KyAvKiAuaGludCA9ICovIHRydWUsPGJyPiZndDsgJmd0OyZuYnNwO307 PGJyPiZndDsgJmd0OyZuYnNwOzxicj4mZ3Q7ICZndDsmbmJzcDtjb25zdCBzdHJ1Y3Qgb3B0X2Rl ZiBpbmRleF9vcHRzX3JlZ1tdID0gezxicj4mZ3Q7ICZndDtAQCAtNjYsNiArNjcsNyBAQCBjb25z dCBzdHJ1Y3Qgb3B0X2RlZiBpbmRleF9vcHRzX3JlZ1tdID0gezxicj4mZ3Q7ICZndDsmbmJzcDsg T1BUX0RFRigibHNuIiwgT1BUX0lOVDY0LCBzdHJ1Y3QgaW5kZXhfb3B0cywgbHNuKSw8YnI+Jmd0 OyAmZ3Q7Jm5ic3A7IE9QVF9ERUYoImZ1bmMiLCBPUFRfVUlOVDMyLCBzdHJ1Y3QgaW5kZXhfb3B0 cywgZnVuY19pZCksPGJyPiZndDsgJmd0OyZuYnNwOyBPUFRfREVGX0xFR0FDWSgic3FsIiksPGJy PiZndDsgJmd0OysgT1BUX0RFRigiaGludCIsIE9QVF9CT09MLCBzdHJ1Y3QgaW5kZXhfb3B0cywg aGludCksPGJyPiZndDsgJmd0OyZuYnNwOyBPUFRfRU5ELDxicj4mZ3Q7ICZndDsmbmJzcDt9Ozxi cj4mZ3Q7ICZndDsmbmJzcDs8YnI+Jmd0OyAmZ3Q7ZGlmZiAtLWdpdCBhL3NyYy9ib3gvaW5kZXhf ZGVmLmggYi9zcmMvYm94L2luZGV4X2RlZi5oPGJyPiZndDsgJmd0O2luZGV4IGQ5MjhiMjMuLjIx ODBhNjkgMTAwNjQ0PGJyPiZndDsgJmd0Oy0tLSBhL3NyYy9ib3gvaW5kZXhfZGVmLmg8YnI+Jmd0 OyAmZ3Q7KysrIGIvc3JjL2JveC9pbmRleF9kZWYuaDxicj4mZ3Q7ICZndDtAQCAtMTY1LDYgKzE2 NSwxMCBAQCBzdHJ1Y3QgaW5kZXhfb3B0cyB7PGJyPiZndDsgJmd0OyZuYnNwOyBzdHJ1Y3QgaW5k ZXhfc3RhdCAqc3RhdDs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IC8qKiBJZGVudGlmaWVyIG9mIHRoZSBm dW5jdGlvbmFsIGluZGV4IGZ1bmN0aW9uLiAqLzxicj4mZ3Q7ICZndDsmbmJzcDsgdWludDMyX3Qg ZnVuY19pZDs8YnI+Jmd0OyAmZ3Q7KyAvKio8YnI+Jmd0OyAmZ3Q7KyAqIFVzZSBoaW50IG9wdGlt aXphdGlvbiBmb3IgdHJlZSBpbmRleC48YnI+Jmd0OyAmZ3Q7KyAqLzxicj4mZ3Q7ICZndDsrIGJv b2wgaGludDs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7fTs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7PGJyPiZndDsg Jmd0OyZuYnNwO2V4dGVybiBjb25zdCBzdHJ1Y3QgaW5kZXhfb3B0cyBpbmRleF9vcHRzX2RlZmF1 bHQ7PGJyPiZndDsgJmd0O0BAIC0yMTEsNiArMjE1LDggQEAgaW5kZXhfb3B0c19jbXAoY29uc3Qg c3RydWN0IGluZGV4X29wdHMgKm8xLCBjb25zdCBzdHJ1Y3QgaW5kZXhfb3B0cyAqbzIpPGJyPiZn dDsgJmd0OyZuYnNwOyByZXR1cm4gbzEtJmd0O2Jsb29tX2ZwciAmbHQ7IG8yLSZndDtibG9vbV9m cHIgPyAtMSA6IDE7PGJyPiZndDsgJmd0OyZuYnNwOyBpZiAobzEtJmd0O2Z1bmNfaWQgIT0gbzIt Jmd0O2Z1bmNfaWQpPGJyPiZndDsgJmd0OyZuYnNwOyByZXR1cm4gbzEtJmd0O2Z1bmNfaWQgLSBv Mi0mZ3Q7ZnVuY19pZDs8YnI+Jmd0OyAmZ3Q7KyBpZiAobzEtJmd0O2hpbnQgIT0gbzItJmd0O2hp bnQpPGJyPiZndDsgJmd0OysgcmV0dXJuIG8xLSZndDtoaW50IC0gbzItJmd0O2hpbnQ7PGJyPiZn dDsgJmd0OyZuYnNwOyByZXR1cm4gMDs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7fTxicj4mZ3Q7ICZndDsm bmJzcDs8YnI+Jmd0OyAmZ3Q7ZGlmZiAtLWdpdCBhL3NyYy9ib3gvbHVhL3NjaGVtYS5sdWEgYi9z cmMvYm94L2x1YS9zY2hlbWEubHVhPGJyPiZndDsgJmd0O2luZGV4IDExMzFhZjcuLjljYzEyODkg MTAwNjQ0PGJyPiZndDsgJmd0Oy0tLSBhL3NyYy9ib3gvbHVhL3NjaGVtYS5sdWE8YnI+Jmd0OyAm Z3Q7KysrIGIvc3JjL2JveC9sdWEvc2NoZW1hLmx1YTxicj4mZ3Q7ICZndDtAQCAtMTAwMCw4ICsx MDAwLDMxIEBAIGxvY2FsIGluZGV4X29wdGlvbnMgPSB7PGJyPiZndDsgJmd0OyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwO3BhZ2Vfc2l6ZSA9ICdudW1iZXInLDxicj4mZ3Q7ICZndDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtibG9vbV9mcHIgPSAnbnVtYmVyJyw8YnI+Jmd0OyAm Z3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ZnVuYyA9ICdudW1iZXIsIHN0cmluZycs PGJyPiZndDsgJmd0OysgaGludCA9ICdib29sZWFuJyw8YnI+Jmd0OyAmZ3Q7Jm5ic3A7fTxicj4m Z3Q7ICZndDsmbmJzcDs8YnI+Jmd0OyAmZ3Q7K2xvY2FsIGZ1bmN0aW9uIGpzb25wYXRoc19mcm9t X2lkeF9wYXJ0cyhwYXJ0cyk8YnI+Jmd0OyAmZ3Q7KyBsb2NhbCBwYXRocyA9IHt9PGJyPiZndDsg Jmd0Oys8YnI+Jmd0OyAmZ3Q7KyBmb3IgXywgcGFydCBpbiBwYWlycyhwYXJ0cykgZG88YnI+Jmd0 OyAmZ3Q7KyBpZiB0eXBlKHBhcnQucGF0aCkgPT0gJ3N0cmluZycgdGhlbjxicj4mZ3Q7ICZndDsr IHRhYmxlLmluc2VydChwYXRocywgcGFydC5wYXRoKTxicj4mZ3Q7ICZndDsrIGVuZDxicj4mZ3Q7 ICZndDsrIGVuZDxicj4mZ3Q7ICZndDsrPGJyPiZndDsgJmd0OysgcmV0dXJuIHBhdGhzPGJyPiZn dDsgJmd0OytlbmQ8YnI+Jmd0OyAmZ3Q7Kzxicj4mZ3Q7ICZndDsrbG9jYWwgZnVuY3Rpb24gaXNf bXVsdGlrZXlfaW5kZXgocGFydHMpPGJyPiZndDsgJmd0OysgZm9yIF8sIHBhdGggaW4gcGFpcnMo anNvbnBhdGhzX2Zyb21faWR4X3BhcnRzKHBhcnRzKSkgZG88YnI+Jmd0OyAmZ3Q7KyBpZiBwYXRo OmZpbmQoJ1sqXScsIDEsIHRydWUpIHRoZW48YnI+Jmd0OyAmZ3Q7KyByZXR1cm4gdHJ1ZTxicj4m Z3Q7ICZndDsrIGVuZDxicj4mZ3Q7ICZndDsrIGVuZDxicj4mZ3Q7ICZndDsrPGJyPiZndDsgJmd0 OysgcmV0dXJuIGZhbHNlPGJyPiZndDsgJmd0OytlbmQ8YnI+Jmd0OyAmZ3Q7Kzxicj4mZ3Q7ICZn dDsmbmJzcDstLTxicj4mZ3Q7ICZndDsmbmJzcDstLSBjaGVja19wYXJhbV90YWJsZSgpIHRlbXBs YXRlIGZvciBhbHRlciBpbmRleCw8YnI+Jmd0OyAmZ3Q7Jm5ic3A7LS0gaW5jbHVkZXMgYWxsIGlu ZGV4IG9wdGlvbnMuPGJyPiZndDsgJmd0O0BAIC0xMDc2LDYgKzEwOTksMTUgQEAgYm94LnNjaGVt YS5pbmRleC5jcmVhdGUgPSBmdW5jdGlvbihzcGFjZV9pZCwgbmFtZSwgb3B0aW9ucyk8YnI+Jmd0 OyAmZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7b3B0aW9uc19kZWZhdWx0cyA9IHt9PGJyPiZndDsgJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwO2VuZDxicj4mZ3Q7ICZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtv cHRpb25zID0gdXBkYXRlX3BhcmFtX3RhYmxlKG9wdGlvbnMsIG9wdGlvbnNfZGVmYXVsdHMpPGJy PiZndDsgJmd0OysgaWYgb3B0aW9ucy5oaW50IGFuZDxicj4mZ3Q7ICZndDsrIChvcHRpb25zLnR5 cGUgfj0gJ3RyZWUnIG9yIGJveC5zcGFjZVtzcGFjZV9pZF0uZW5naW5lIH49ICdtZW10eCcpIHRo ZW48YnI+Jmd0OyAmZ3Q7KyBib3guZXJyb3IoYm94LmVycm9yLk1PRElGWV9JTkRFWCwgbmFtZSwg c3BhY2UubmFtZSw8YnI+Jmd0OyAmZ3Q7KyAiaGludCBpcyBvbmx5IHJlYXNvbmFibGUgd2l0aCBt ZW10eCB0cmVlIGluZGV4Iik8YnI+Jmd0OyAmZ3Q7KyBlbmQ8YnI+Jmd0OyAmZ3Q7KyBpZiBvcHRp b25zLmhpbnQgYW5kIG9wdGlvbnMuZnVuYyB0aGVuPGJyPiZndDsgJmd0OysgYm94LmVycm9yKGJv eC5lcnJvci5NT0RJRllfSU5ERVgsIG5hbWUsIHNwYWNlLm5hbWUsPGJyPiZndDsgJmd0OysgImZ1 bmN0aW9uYWwgaW5kZXggY2FuJ3QgdXNlIGhpbnRzIik8YnI+Jmd0OyAmZ3Q7KyBlbmQ8YnI+Jmd0 OyAmZ3Q7Jm5ic3A7PGJyPiZndDsgJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO2xv Y2FsIF9pbmRleCA9IGJveC5zcGFjZVtib3guc2NoZW1hLklOREVYX0lEXTxicj4mZ3Q7ICZndDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtsb2NhbCBfdmluZGV4ID0gYm94LnNwYWNlW2Jv eC5zY2hlbWEuVklOREVYX0lEXTxicj4mZ3Q7ICZndDtAQCAtMTExNSw2ICsxMTQ3LDcgQEAgYm94 LnNjaGVtYS5pbmRleC5jcmVhdGUgPSBmdW5jdGlvbihzcGFjZV9pZCwgbmFtZSwgb3B0aW9ucyk8 YnI+Jmd0OyAmZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7cnVuX3NpemVfcmF0aW8gPSBvcHRpb25z LnJ1bl9zaXplX3JhdGlvLDxicj4mZ3Q7ICZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtibG9vbV9m cHIgPSBvcHRpb25zLmJsb29tX2Zwciw8YnI+Jmd0OyAmZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 ZnVuYyA9IG9wdGlvbnMuZnVuYyw8YnI+Jmd0OyAmZ3Q7KyBoaW50ID0gb3B0aW9ucy5oaW50LDxi cj4mZ3Q7ICZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDt9PGJyPiZndDsgJmd0OyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO2xvY2FsIGZpZWxkX3R5cGVfYWxpYXNlcyA9IHs8 YnI+Jmd0OyAmZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7bnVtID0gJ3Vuc2lnbmVkJzsgLS0gRGVwcmVjYXRlZCBzaW5jZSAxLjcuMjxicj4m Z3Q7ICZndDtAQCAtMTEzNSw2ICsxMTY4LDEwIEBAIGJveC5zY2hlbWEuaW5kZXguY3JlYXRlID0g ZnVuY3Rpb24oc3BhY2VfaWQsIG5hbWUsIG9wdGlvbnMpPGJyPiZndDsgJmd0OyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwO2lmIHBhcnRzX2Nhbl9iZV9zaW1wbGlmaWVkIHRoZW48YnI+Jmd0 OyAmZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7cGFydHMgPSBzaW1wbGlmeV9pbmRleF9wYXJ0cyhwYXJ0cyk8YnI+Jmd0OyAmZ3Q7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ZW5kPGJyPiZndDsgJmd0OysgaWYgb3B0aW9ucy5oaW50 IGFuZCBpc19tdWx0aWtleV9pbmRleChwYXJ0cykgdGhlbjxicj4mZ3Q7ICZndDsrIGJveC5lcnJv cihib3guZXJyb3IuTU9ESUZZX0lOREVYLCBuYW1lLCBzcGFjZS5uYW1lLDxicj4mZ3Q7ICZndDsr ICJtdWx0aWtleSBpbmRleCBjYW4ndCB1c2UgaGludHMiKTxicj4mZ3Q7ICZndDsrIGVuZDxicj4m Z3Q7ICZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtpZiBpbmRleF9vcHRzLmZ1bmMg fj0gbmlsIGFuZCB0eXBlKGluZGV4X29wdHMuZnVuYykgPT0gJ3N0cmluZycgdGhlbjxicj4mZ3Q7 ICZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDtpbmRleF9vcHRzLmZ1bmMgPSBmdW5jX2lkX2J5X25hbWUoaW5kZXhfb3B0cy5mdW5jKTxicj4m Z3Q7ICZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtlbmQ8YnI+Jmd0OyAmZ3Q7QEAg LTEyNTMsNiArMTI5MCwxNyBAQCBib3guc2NoZW1hLmluZGV4LmFsdGVyID0gZnVuY3Rpb24oc3Bh Y2VfaWQsIGluZGV4X2lkLCBvcHRpb25zKTxicj4mZ3Q7ICZndDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDtpbmRleF9vcHRzW2tdID0gb3B0aW9uc1trXTxicj4mZ3Q7ICZndDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtlbmQ8YnI+Jmd0OyAmZ3Q7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ZW5kPGJyPiZndDsgJmd0OysgaWYgb3B0aW9ucy5o aW50IGFuZDxicj4mZ3Q7ICZndDsrIChvcHRpb25zLnR5cGUgfj0gJ3RyZWUnIG9yIGJveC5zcGFj ZVtzcGFjZV9pZF0uZW5naW5lIH49ICdtZW10eCcpIHRoZW48YnI+Jmd0OyAmZ3Q7KyBib3guZXJy b3IoYm94LmVycm9yLk1PRElGWV9JTkRFWCwgc3BhY2UuaW5kZXhbaW5kZXhfaWRdLm5hbWUsPGJy PiZndDsgJmd0Oysgc3BhY2UubmFtZSw8YnI+Jmd0OyAmZ3Q7KyAiaGludCBpcyBvbmx5IHJlYXNv bmFibGUgd2l0aCBtZW10eCB0cmVlIGluZGV4Iik8YnI+Jmd0OyAmZ3Q7KyBlbmQ8YnI+Jmd0OyAm Z3Q7KyBpZiBvcHRpb25zLmhpbnQgYW5kIG9wdGlvbnMuZnVuYyB0aGVuPGJyPiZndDsgJmd0Oysg Ym94LmVycm9yKGJveC5lcnJvci5NT0RJRllfSU5ERVgsIHNwYWNlLmluZGV4W2luZGV4X2lkXS5u YW1lLDxicj4mZ3Q7ICZndDsrIHNwYWNlLm5hbWUsPGJyPiZndDsgJmd0OysgImZ1bmN0aW9uYWwg aW5kZXggY2FuJ3QgdXNlIGhpbnRzIik8YnI+Jmd0OyAmZ3Q7KyBlbmQ8YnI+Jmd0OyAmZ3Q7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7aWYgb3B0aW9ucy5wYXJ0cyB0aGVuPGJyPiZndDsg Jmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw O2xvY2FsIHBhcnRzX2Nhbl9iZV9zaW1wbGlmaWVkPGJyPiZndDsgJmd0OyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO3BhcnRzLCBwYXJ0c19jYW5f YmVfc2ltcGxpZmllZCA9PGJyPiZndDsgJmd0O0BAIC0xMjYyLDYgKzEzMTAsMTEgQEAgYm94LnNj aGVtYS5pbmRleC5hbHRlciA9IGZ1bmN0aW9uKHNwYWNlX2lkLCBpbmRleF9pZCwgb3B0aW9ucyk8 YnI+Jmd0OyAmZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7cGFydHMgPSBzaW1wbGlmeV9pbmRleF9w YXJ0cyhwYXJ0cyk8YnI+Jmd0OyAmZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ZW5kPGJyPiZndDsgJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwO2VuZDxicj4mZ3Q7ICZndDsrIGlmIG9wdGlvbnMuaGludCBhbmQgaXNfbXVsdGlr ZXlfaW5kZXgocGFydHMpIHRoZW48YnI+Jmd0OyAmZ3Q7KyBib3guZXJyb3IoYm94LmVycm9yLk1P RElGWV9JTkRFWCwgc3BhY2UuaW5kZXhbaW5kZXhfaWRdLm5hbWUsPGJyPiZndDsgJmd0Oysgc3Bh Y2UubmFtZSw8YnI+Jmd0OyAmZ3Q7KyAibXVsdGlrZXkgaW5kZXggY2FuJ3QgdXNlIGhpbnRzIik8 YnI+Jmd0OyAmZ3Q7KyBlbmQ8YnI+Jmd0OyAmZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7aWYgaW5kZXhfb3B0cy5mdW5jIH49IG5pbCBhbmQgdHlwZShpbmRleF9vcHRzLmZ1bmMpID09 ICdzdHJpbmcnIHRoZW48YnI+Jmd0OyAmZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7aW5kZXhfb3B0cy5mdW5jID0gZnVuY19pZF9ieV9uYW1l KGluZGV4X29wdHMuZnVuYyk8YnI+Jmd0OyAmZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7ZW5kPGJyPiZndDsgJmd0O2RpZmYgLS1naXQgYS9zcmMvYm94L2x1YS9zcGFjZS5jYyBiL3Ny Yy9ib3gvbHVhL3NwYWNlLmNjPGJyPiZndDsgJmd0O2luZGV4IDE3N2M1ODguLjFlYTk5M2MgMTAw NjQ0PGJyPiZndDsgJmd0Oy0tLSBhL3NyYy9ib3gvbHVhL3NwYWNlLmNjPGJyPiZndDsgJmd0Oysr KyBiL3NyYy9ib3gvbHVhL3NwYWNlLmNjPGJyPiZndDsgJmd0O0BAIC0zNDQsNiArMzQ0LDEzIEBA IGxib3hfZmlsbHNwYWNlKHN0cnVjdCBsdWFfU3RhdGUgKkwsIHN0cnVjdCBzcGFjZSAqc3BhY2Us IGludCBpKTxicj4mZ3Q7ICZndDsmbmJzcDsgbHVhX3B1c2hudW1iZXIoTCwgaW5kZXhfb3B0cy0m Z3Q7ZGltZW5zaW9uKTs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IGx1YV9zZXRmaWVsZChMLCAtMiwgImRp bWVuc2lvbiIpOzxicj4mZ3Q7ICZndDsmbmJzcDsgfTxicj4mZ3Q7ICZndDsrIGlmIChzcGFjZV9p c19tZW10eChzcGFjZSkgJmFtcDsmYW1wOyBpbmRleF9kZWYtJmd0O3R5cGUgPT0gVFJFRSkgezxi cj4mZ3Q7ICZndDsrIGx1YV9wdXNoYm9vbGVhbihMLCBpbmRleF9vcHRzLSZndDtoaW50KTs8YnI+ Jmd0OyAmZ3Q7KyBsdWFfc2V0ZmllbGQoTCwgLTIsICJoaW50Iik7PGJyPiZndDsgJmd0OysgfSBl bHNlIHs8YnI+Jmd0OyAmZ3Q7KyBsdWFfcHVzaG5pbChMKTs8YnI+Jmd0OyAmZ3Q7KyBsdWFfc2V0 ZmllbGQoTCwgLTIsICJoaW50Iik7PGJyPiZndDsgJmd0OysgfTxicj4mZ3Q7ICZndDsmbmJzcDs8 YnI+Jmd0OyAmZ3Q7Jm5ic3A7IGlmIChpbmRleF9vcHRzLSZndDtmdW5jX2lkICZndDsgMCkgezxi cj4mZ3Q7ICZndDsmbmJzcDsgbHVhX3B1c2hzdHJpbmcoTCwgImZ1bmMiKTs8YnI+Jmd0OyAmZ3Q7 ZGlmZiAtLWdpdCBhL3NyYy9ib3gvbWVtdHhfZW5naW5lLmMgYi9zcmMvYm94L21lbXR4X2VuZ2lu ZS5jPGJyPiZndDsgJmd0O2luZGV4IDxzcGFuIGNsYXNzPSJqcy1waG9uZS1udW1iZXIiPjgxNDc1 NTc8L3NwYW4+IC4uNDMwMDBiYSAxMDA2NDQ8YnI+Jmd0OyAmZ3Q7LS0tIGEvc3JjL2JveC9tZW10 eF9lbmdpbmUuYzxicj4mZ3Q7ICZndDsrKysgYi9zcmMvYm94L21lbXR4X2VuZ2luZS5jPGJyPiZn dDsgJmd0O0BAIC0xMzk4LDYgKzEzOTgsOCBAQCBtZW10eF9pbmRleF9kZWZfY2hhbmdlX3JlcXVp cmVzX3JlYnVpbGQoc3RydWN0IGluZGV4ICppbmRleCw8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IHJldHVy biB0cnVlOzxicj4mZ3Q7ICZndDsmbmJzcDsgaWYgKG9sZF9kZWYtJmd0O29wdHMuZnVuY19pZCAh PSBuZXdfZGVmLSZndDtvcHRzLmZ1bmNfaWQpPGJyPiZndDsgJmd0OyZuYnNwOyByZXR1cm4gdHJ1 ZTs8YnI+Jmd0OyAmZ3Q7KyBpZiAob2xkX2RlZi0mZ3Q7b3B0cy5oaW50ICE9IG5ld19kZWYtJmd0 O29wdHMuaGludCk8YnI+Jmd0OyAmZ3Q7KyByZXR1cm4gdHJ1ZTs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7 PGJyPiZndDsgJmd0OyZuYnNwOyBjb25zdCBzdHJ1Y3Qga2V5X2RlZiAqb2xkX2NtcF9kZWYsICpu ZXdfY21wX2RlZjs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IGlmIChpbmRleF9kZXBlbmRzX29uX3BrKGlu ZGV4KSkgezxicj4mZ3Q7ICZndDtkaWZmIC0tZ2l0IGEvc3JjL2JveC9tZW10eF90cmVlLmNjIGIv c3JjL2JveC9tZW10eF90cmVlLmNjPGJyPiZndDsgJmd0O2luZGV4IGQzYjk5M2IuLjE3ZDU4YzUg MTAwNjQ0PGJyPiZndDsgJmd0Oy0tLSBhL3NyYy9ib3gvbWVtdHhfdHJlZS5jYzxicj4mZ3Q7ICZn dDsrKysgYi9zcmMvYm94L21lbXR4X3RyZWUuY2M8YnI+Jmd0OyAmZ3Q7QEAgLTQ1LDIzICs0NSw1 MSBAQDxicj4mZ3Q7ICZndDsmbmJzcDsvKio8YnI+Jmd0OyAmZ3Q7Jm5ic3A7Jm5ic3A7KiBTdHJ1 Y3QgdGhhdCBpcyB1c2VkIGFzIGEga2V5IGluIEJQUyB0cmVlIGRlZmluaXRpb24uPGJyPiZndDsg Jmd0OyZuYnNwOyZuYnNwOyovPGJyPiZndDsgJmd0Oy1zdHJ1Y3QgbWVtdHhfdHJlZV9rZXlfZGF0 YSB7PGJyPiZndDsgJmd0OytzdHJ1Y3QgbWVtdHhfdHJlZV9rZXlfZGF0YV9jb21tb24gezxicj4m Z3Q7ICZndDsmbmJzcDsgLyoqIFNlcXVlbmNlIG9mIG1zZ3BhY2tlZCBzZWFyY2ggZmllbGRzLiAq Lzxicj4mZ3Q7ICZndDsmbmJzcDsgY29uc3QgY2hhciAqa2V5Ozxicj4mZ3Q7ICZndDsmbmJzcDsg LyoqIE51bWJlciBvZiBtc2dwYWNrZWQgc2VhcmNoIGZpZWxkcy4gKi88YnI+Jmd0OyAmZ3Q7Jm5i c3A7IHVpbnQzMl90IHBhcnRfY291bnQ7PGJyPiZndDsgJmd0Oyt9Ozxicj4mZ3Q7ICZndDsrPGJy PiZndDsgJmd0Oyt0ZW1wbGF0ZSAmbHQ7aW50IFVTRV9ISU5UJmd0Ozxicj4mZ3Q7ICZndDsrc3Ry dWN0IG1lbXR4X3RyZWVfa2V5X2RhdGE7PGJyPiZndDsgJmd0Oys8YnI+Jmd0OyAmZ3Q7K3RlbXBs YXRlICZsdDsmZ3Q7PGJyPiZndDsgJmd0OytzdHJ1Y3QgbWVtdHhfdHJlZV9rZXlfZGF0YSZsdDsw Jmd0OyA6IG1lbXR4X3RyZWVfa2V5X2RhdGFfY29tbW9uIHs8YnI+Jmd0OyAmZ3Q7KyBzdGF0aWMg Y29uc3RleHByIGhpbnRfdCBoaW50ID0gSElOVF9OT05FOzxicj4mZ3Q7ICZndDsrIHZvaWQgc2V0 X2hpbnQoaGludF90KSB7IGFzc2VydChmYWxzZSk7IH08YnI+Jmd0OyAmZ3Q7K307PGJyPiZndDsg Jmd0Oys8YnI+Jmd0OyAmZ3Q7K3RlbXBsYXRlICZsdDsmZ3Q7PGJyPiZndDsgJmd0OytzdHJ1Y3Qg bWVtdHhfdHJlZV9rZXlfZGF0YSZsdDsxJmd0OyA6IG1lbXR4X3RyZWVfa2V5X2RhdGFfY29tbW9u IHs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IC8qKiBDb21wYXJpc29uIGhpbnQsIHNlZSB0dXBsZV9oaW50 KCkuICovPGJyPiZndDsgJmd0OyZuYnNwOyBoaW50X3QgaGludDs8YnI+Jmd0OyAmZ3Q7KyB2b2lk IHNldF9oaW50KGhpbnRfdCBoKSB7IGhpbnQgPSBoOyB9PGJyPiZndDsgJmd0OyZuYnNwO307PGJy PiZndDsgJmd0OyZuYnNwOzxicj4mZ3Q7ICZndDsmbmJzcDsvKio8YnI+Jmd0OyAmZ3Q7Jm5ic3A7 Jm5ic3A7KiBTdHJ1Y3QgdGhhdCBpcyB1c2VkIGFzIGEgZWxlbSBpbiBCUFMgdHJlZSBkZWZpbml0 aW9uLjxicj4mZ3Q7ICZndDsmbmJzcDsmbmJzcDsqLzxicj4mZ3Q7ICZndDstc3RydWN0IG1lbXR4 X3RyZWVfZGF0YSB7PGJyPiZndDsgJmd0OytzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhX2NvbW1vbiB7 PGJyPiZndDsgJmd0OyZuYnNwOyAvKiBUdXBsZSB0aGF0IHRoaXMgbm9kZSBpcyByZXByZXNlbnRz LiAqLzxicj4mZ3Q7ICZndDsmbmJzcDsgc3RydWN0IHR1cGxlICp0dXBsZTs8YnI+Jmd0OyAmZ3Q7 K307PGJyPiZndDsgJmd0Oys8YnI+Jmd0OyAmZ3Q7K3RlbXBsYXRlICZsdDtpbnQgVVNFX0hJTlQm Z3Q7PGJyPiZndDsgJmd0OytzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhOzxicj4mZ3Q7ICZndDsrPGJy PiZndDsgJmd0Oyt0ZW1wbGF0ZSAmbHQ7Jmd0Ozxicj4mZ3Q7ICZndDsrc3RydWN0IG1lbXR4X3Ry ZWVfZGF0YSZsdDswJmd0OyA6IG1lbXR4X3RyZWVfZGF0YV9jb21tb24gezxicj4mZ3Q7ICZndDsr IHN0YXRpYyBjb25zdGV4cHIgaGludF90IGhpbnQgPSBISU5UX05PTkU7PGJyPiZndDsgJmd0Oysg dm9pZCBzZXRfaGludChoaW50X3QpIHsgYXNzZXJ0KGZhbHNlKTsgfTxicj4mZ3Q7ICZndDsrfTs8 YnI+Jmd0OyAmZ3Q7Kzxicj4mZ3Q7ICZndDsrdGVtcGxhdGUgJmx0OyZndDs8YnI+Jmd0OyAmZ3Q7 K3N0cnVjdCBtZW10eF90cmVlX2RhdGEmbHQ7MSZndDsgOiBtZW10eF90cmVlX2RhdGEmbHQ7MCZn dDsgezxicj4mZ3Q7ICZndDsmbmJzcDsgLyoqIENvbXBhcmlzb24gaGludCwgc2VlIGtleV9oaW50 KCkuICovPGJyPiZndDsgJmd0OyZuYnNwOyBoaW50X3QgaGludDs8YnI+Jmd0OyAmZ3Q7KyB2b2lk IHNldF9oaW50KGhpbnRfdCBoKSB7IGhpbnQgPSBoOyB9PGJyPiZndDsgJmd0OyZuYnNwO307PGJy PiZndDsgJmd0OyZuYnNwOzxicj4mZ3Q7ICZndDsmbmJzcDsvKio8YnI+Jmd0OyAmZ3Q7QEAgLTcz LDggKzEwMSw4IEBAIHN0cnVjdCBtZW10eF90cmVlX2RhdGEgezxicj4mZ3Q7ICZndDsmbmJzcDsm bmJzcDsqIEByZXR2YWwgZmFsc2UgLSBPdGhlcndpc2UuPGJyPiZndDsgJmd0OyZuYnNwOyZuYnNw OyovPGJyPiZndDsgJmd0OyZuYnNwO3N0YXRpYyBib29sPGJyPiZndDsgJmd0Oy1tZW10eF90cmVl X2RhdGFfaXNfZXF1YWwoY29uc3Qgc3RydWN0IG1lbXR4X3RyZWVfZGF0YSAqYSw8YnI+Jmd0OyAm Z3Q7LSBjb25zdCBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhICpiKTxicj4mZ3Q7ICZndDsrbWVtdHhf dHJlZV9kYXRhX2lzX2VxdWFsKGNvbnN0IHN0cnVjdCBtZW10eF90cmVlX2RhdGFfY29tbW9uICph LDxicj4mZ3Q7ICZndDsrIGNvbnN0IHN0cnVjdCBtZW10eF90cmVlX2RhdGFfY29tbW9uICpiKTxi cj4mZ3Q7ICZndDsmbmJzcDt7PGJyPiZndDsgJmd0OyZuYnNwOyByZXR1cm4gYS0mZ3Q7dHVwbGUg PT0gYi0mZ3Q7dHVwbGU7PGJyPiZndDsgJmd0OyZuYnNwO308YnI+Jmd0OyAmZ3Q7QEAgLTg5LDEy ICsxMTcsMjggQEAgbWVtdHhfdHJlZV9kYXRhX2lzX2VxdWFsKGNvbnN0IHN0cnVjdCBtZW10eF90 cmVlX2RhdGEgKmEsPGJyPiZndDsgJmd0OyZuYnNwOyAoYiktJmd0O3BhcnRfY291bnQsIChiKS0m Z3Q7aGludCwgYXJnKTxicj4mZ3Q7ICZndDsmbmJzcDsjZGVmaW5lIEJQU19UUkVFX0lTX0lERU5U SUNBTChhLCBiKSBtZW10eF90cmVlX2RhdGFfaXNfZXF1YWwoJmFtcDthLCAmYW1wO2IpPGJyPiZn dDsgJmd0OyZuYnNwOyNkZWZpbmUgQlBTX1RSRUVfTk9fREVCVUcgMTxicj4mZ3Q7ICZndDstI2Rl ZmluZSBicHNfdHJlZV9lbGVtX3Qgc3RydWN0IG1lbXR4X3RyZWVfZGF0YTxicj4mZ3Q7ICZndDst I2RlZmluZSBicHNfdHJlZV9rZXlfdCBzdHJ1Y3QgbWVtdHhfdHJlZV9rZXlfZGF0YSAqPGJyPiZn dDsgJmd0OyZuYnNwOyNkZWZpbmUgYnBzX3RyZWVfYXJnX3Qgc3RydWN0IGtleV9kZWYgKjxicj4m Z3Q7ICZndDsmbmJzcDs8YnI+Jmd0OyAmZ3Q7KyNkZWZpbmUgQlBTX1RSRUVfTkFNRVNQQUNFIE5T X05PX0hJTlQ8YnI+Jmd0OyAmZ3Q7KyNkZWZpbmUgYnBzX3RyZWVfZWxlbV90IHN0cnVjdCBtZW10 eF90cmVlX2RhdGEmbHQ7MCZndDs8YnI+Jmd0OyAmZ3Q7KyNkZWZpbmUgYnBzX3RyZWVfa2V5X3Qg c3RydWN0IG1lbXR4X3RyZWVfa2V5X2RhdGEmbHQ7MCZndDsgKjxicj4mZ3Q7ICZndDsrPGJyPiZn dDsgJmd0OyZuYnNwOyNpbmNsdWRlICJzYWxhZC9icHNfdHJlZS5oIjxicj4mZ3Q7ICZndDsmbmJz cDs8YnI+Jmd0OyAmZ3Q7KyN1bmRlZiBCUFNfVFJFRV9OQU1FU1BBQ0U8YnI+Jmd0OyAmZ3Q7KyN1 bmRlZiBicHNfdHJlZV9lbGVtX3Q8YnI+Jmd0OyAmZ3Q7KyN1bmRlZiBicHNfdHJlZV9rZXlfdDxi cj4mZ3Q7ICZndDsrPGJyPiZndDsgJmd0OysjZGVmaW5lIEJQU19UUkVFX05BTUVTUEFDRSBOU19V U0VfSElOVDxicj4mZ3Q7ICZndDsrI2RlZmluZSBicHNfdHJlZV9lbGVtX3Qgc3RydWN0IG1lbXR4 X3RyZWVfZGF0YSZsdDsxJmd0Ozxicj4mZ3Q7ICZndDsrI2RlZmluZSBicHNfdHJlZV9rZXlfdCBz dHJ1Y3QgbWVtdHhfdHJlZV9rZXlfZGF0YSZsdDsxJmd0OyAqPGJyPiZndDsgJmd0Oys8YnI+Jmd0 OyAmZ3Q7KyNpbmNsdWRlICJzYWxhZC9icHNfdHJlZS5oIjxicj4mZ3Q7ICZndDsrPGJyPiZndDsg Jmd0OysjdW5kZWYgQlBTX1RSRUVfTkFNRVNQQUNFPGJyPiZndDsgJmd0OysjdW5kZWYgYnBzX3Ry ZWVfZWxlbV90PGJyPiZndDsgJmd0OysjdW5kZWYgYnBzX3RyZWVfa2V5X3Q8YnI+Jmd0OyAmZ3Q7 Kzxicj4mZ3Q7ICZndDsmbmJzcDsjdW5kZWYgQlBTX1RSRUVfTkFNRTxicj4mZ3Q7ICZndDsmbmJz cDsjdW5kZWYgQlBTX1RSRUVfQkxPQ0tfU0laRTxicj4mZ3Q7ICZndDsmbmJzcDsjdW5kZWYgQlBT X1RSRUVfRVhURU5UX1NJWkU8YnI+Jmd0OyAmZ3Q7QEAgLTEwMiw2NiArMTQ2LDExOSBAQCBtZW10 eF90cmVlX2RhdGFfaXNfZXF1YWwoY29uc3Qgc3RydWN0IG1lbXR4X3RyZWVfZGF0YSAqYSw8YnI+ Jmd0OyAmZ3Q7Jm5ic3A7I3VuZGVmIEJQU19UUkVFX0NPTVBBUkVfS0VZPGJyPiZndDsgJmd0OyZu YnNwOyN1bmRlZiBCUFNfVFJFRV9JU19JREVOVElDQUw8YnI+Jmd0OyAmZ3Q7Jm5ic3A7I3VuZGVm IEJQU19UUkVFX05PX0RFQlVHPGJyPiZndDsgJmd0Oy0jdW5kZWYgYnBzX3RyZWVfZWxlbV90PGJy PiZndDsgJmd0Oy0jdW5kZWYgYnBzX3RyZWVfa2V5X3Q8YnI+Jmd0OyAmZ3Q7Jm5ic3A7I3VuZGVm IGJwc190cmVlX2FyZ190PGJyPiZndDsgJmd0OyZuYnNwOzxicj4mZ3Q7ICZndDsrdXNpbmcgbmFt ZXNwYWNlIE5TX05PX0hJTlQ7PGJyPiZndDsgJmd0Oyt1c2luZyBuYW1lc3BhY2UgTlNfVVNFX0hJ TlQ7PGJyPiZndDsgJmd0Oys8YnI+Jmd0OyAmZ3Q7K3RlbXBsYXRlICZsdDtpbnQgVVNFX0hJTlQm Z3Q7PGJyPiZndDsgJmd0OytzdHJ1Y3QgbWVtdHhfdHJlZV9zZWxlY3Rvcjs8YnI+Jmd0OyAmZ3Q7 Kzxicj4mZ3Q7ICZndDsrdGVtcGxhdGUgJmx0OyZndDs8YnI+Jmd0OyAmZ3Q7K3N0cnVjdCBtZW10 eF90cmVlX3NlbGVjdG9yJmx0OzAmZ3Q7IDogTlNfTk9fSElOVDo6bWVtdHhfdHJlZSB7fTs8YnI+ Jmd0OyAmZ3Q7Kzxicj4mZ3Q7ICZndDsrdGVtcGxhdGUgJmx0OyZndDs8YnI+Jmd0OyAmZ3Q7K3N0 cnVjdCBtZW10eF90cmVlX3NlbGVjdG9yJmx0OzEmZ3Q7IDogTlNfVVNFX0hJTlQ6Om1lbXR4X3Ry ZWUge307PGJyPiZndDsgJmd0Oys8YnI+Jmd0OyAmZ3Q7K3RlbXBsYXRlICZsdDtpbnQgVVNFX0hJ TlQmZ3Q7PGJyPiZndDsgJmd0Oyt1c2luZyBtZW10eF90cmVlX3QgPSBzdHJ1Y3QgbWVtdHhfdHJl ZV9zZWxlY3RvciZsdDtVU0VfSElOVCZndDs7PGJyPiZndDsgJmd0Oys8YnI+Jmd0OyAmZ3Q7K3Rl bXBsYXRlICZsdDtpbnQgVVNFX0hJTlQmZ3Q7PGJyPiZndDsgJmd0OytzdHJ1Y3QgbWVtdHhfdHJl ZV9pdGVyYXRvcl9zZWxlY3Rvcjs8YnI+Jmd0OyAmZ3Q7Kzxicj4mZ3Q7ICZndDsrdGVtcGxhdGUg Jmx0OyZndDs8YnI+Jmd0OyAmZ3Q7K3N0cnVjdCBtZW10eF90cmVlX2l0ZXJhdG9yX3NlbGVjdG9y Jmx0OzAmZ3Q7IHs8YnI+Jmd0OyAmZ3Q7KyB1c2luZyB0eXBlID0gTlNfTk9fSElOVDo6bWVtdHhf dHJlZV9pdGVyYXRvcjs8YnI+Jmd0OyAmZ3Q7K307PGJyPiZndDsgJmd0Oys8YnI+Jmd0OyAmZ3Q7 K3RlbXBsYXRlICZsdDsmZ3Q7PGJyPiZndDsgJmd0OytzdHJ1Y3QgbWVtdHhfdHJlZV9pdGVyYXRv cl9zZWxlY3RvciZsdDsxJmd0OyB7PGJyPiZndDsgJmd0OysgdXNpbmcgdHlwZSA9IE5TX1VTRV9I SU5UOjptZW10eF90cmVlX2l0ZXJhdG9yOzxicj4mZ3Q7ICZndDsrfTs8YnI+Jmd0OyAmZ3Q7Kzxi cj4mZ3Q7ICZndDsrdGVtcGxhdGUgJmx0O2ludCBVU0VfSElOVCZndDs8YnI+Jmd0OyAmZ3Q7K3Vz aW5nIG1lbXR4X3RyZWVfaXRlcmF0b3JfdCA9IHR5cGVuYW1lIG1lbXR4X3RyZWVfaXRlcmF0b3Jf c2VsZWN0b3ImbHQ7VVNFX0hJTlQmZ3Q7Ojp0eXBlOzxicj4mZ3Q7ICZndDsrPGJyPiZndDsgJmd0 OytzdGF0aWMgdm9pZDxicj4mZ3Q7ICZndDsraW52YWxpZGF0ZV90cmVlX2l0ZXJhdG9yKE5TX05P X0hJTlQ6Om1lbXR4X3RyZWVfaXRlcmF0b3IgKml0cik8YnI+Jmd0OyAmZ3Q7K3s8YnI+Jmd0OyAm Z3Q7KyAqaXRyID0gTlNfTk9fSElOVDo6bWVtdHhfdHJlZV9pbnZhbGlkX2l0ZXJhdG9yKCk7PGJy PiZndDsgJmd0Oyt9PGJyPiZndDsgJmd0Oys8YnI+Jmd0OyAmZ3Q7K3N0YXRpYyB2b2lkPGJyPiZn dDsgJmd0OytpbnZhbGlkYXRlX3RyZWVfaXRlcmF0b3IoTlNfVVNFX0hJTlQ6Om1lbXR4X3RyZWVf aXRlcmF0b3IgKml0cik8YnI+Jmd0OyAmZ3Q7K3s8YnI+Jmd0OyAmZ3Q7KyAqaXRyID0gTlNfVVNF X0hJTlQ6Om1lbXR4X3RyZWVfaW52YWxpZF9pdGVyYXRvcigpOzxicj4mZ3Q7ICZndDsrfTxicj4m Z3Q7ICZndDsrPGJyPiZndDsgJmd0Oyt0ZW1wbGF0ZSAmbHQ7aW50IFVTRV9ISU5UJmd0Ozxicj4m Z3Q7ICZndDsmbmJzcDtzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCB7PGJyPiZndDsgJmd0OyZuYnNw OyBzdHJ1Y3QgaW5kZXggYmFzZTs8YnI+Jmd0OyAmZ3Q7LSBzdHJ1Y3QgbWVtdHhfdHJlZSB0cmVl Ozxicj4mZ3Q7ICZndDstIHN0cnVjdCBtZW10eF90cmVlX2RhdGEgKmJ1aWxkX2FycmF5Ozxicj4m Z3Q7ICZndDsrIG1lbXR4X3RyZWVfdCZsdDtVU0VfSElOVCZndDsgdHJlZTs8YnI+Jmd0OyAmZ3Q7 KyBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhJmx0O1VTRV9ISU5UJmd0OyAqYnVpbGRfYXJyYXk7PGJy PiZndDsgJmd0OyZuYnNwOyBzaXplX3QgYnVpbGRfYXJyYXlfc2l6ZSwgYnVpbGRfYXJyYXlfYWxs b2Nfc2l6ZTs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IHN0cnVjdCBtZW10eF9nY190YXNrIGdjX3Rhc2s7 PGJyPiZndDsgJmd0Oy0gc3RydWN0IG1lbXR4X3RyZWVfaXRlcmF0b3IgZ2NfaXRlcmF0b3I7PGJy PiZndDsgJmd0OysgbWVtdHhfdHJlZV9pdGVyYXRvcl90Jmx0O1VTRV9ISU5UJmd0OyBnY19pdGVy YXRvcjs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7fTs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7PGJyPiZndDsgJmd0 OyZuYnNwOy8qIHt7eyBVdGlsaXRpZXMuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovPGJyPiZndDsgJmd0OyZuYnNwOzxicj4mZ3Q7ICZndDsrdGVtcGxh dGUgJmx0O2NsYXNzIFRSRUUmZ3Q7PGJyPiZndDsgJmd0OyZuYnNwO3N0YXRpYyBpbmxpbmUgc3Ry dWN0IGtleV9kZWYgKjxicj4mZ3Q7ICZndDstbWVtdHhfdHJlZV9jbXBfZGVmKHN0cnVjdCBtZW10 eF90cmVlICp0cmVlKTxicj4mZ3Q7ICZndDsrbWVtdHhfdHJlZV9jbXBfZGVmKFRSRUUgKnRyZWUp PGJyPiZndDsgJmd0OyZuYnNwO3s8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IHJldHVybiB0cmVlLSZndDth cmc7PGJyPiZndDsgJmd0OyZuYnNwO308YnI+Jmd0OyAmZ3Q7Jm5ic3A7PGJyPiZndDsgJmd0Oyt0 ZW1wbGF0ZSAmbHQ7aW50IFVTRV9ISU5UJmd0Ozxicj4mZ3Q7ICZndDsmbmJzcDtzdGF0aWMgaW50 PGJyPiZndDsgJmd0OyZuYnNwO21lbXR4X3RyZWVfcWNvbXBhcmUoY29uc3Qgdm9pZCogYSwgY29u c3Qgdm9pZCAqYiwgdm9pZCAqYyk8YnI+Jmd0OyAmZ3Q7Jm5ic3A7ezxicj4mZ3Q7ICZndDstIGNv bnN0IHN0cnVjdCBtZW10eF90cmVlX2RhdGEgKmRhdGFfYSA9IChzdHJ1Y3QgbWVtdHhfdHJlZV9k YXRhICopYTs8YnI+Jmd0OyAmZ3Q7LSBjb25zdCBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhICpkYXRh X2IgPSAoc3RydWN0IG1lbXR4X3RyZWVfZGF0YSAqKWI7PGJyPiZndDsgJmd0OysgY29uc3Qgc3Ry dWN0IG1lbXR4X3RyZWVfZGF0YSZsdDtVU0VfSElOVCZndDsgKmRhdGFfYSA9PGJyPiZndDsgJmd0 OysgKHN0cnVjdCBtZW10eF90cmVlX2RhdGEmbHQ7VVNFX0hJTlQmZ3Q7ICopYTs8YnI+Jmd0OyAm Z3Q7KyBjb25zdCBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhJmx0O1VTRV9ISU5UJmd0OyAqZGF0YV9i ID08YnI+Jmd0OyAmZ3Q7KyAoc3RydWN0IG1lbXR4X3RyZWVfZGF0YSZsdDtVU0VfSElOVCZndDsg KiliOzxicj4mZ3Q7ICZndDsmbmJzcDsgc3RydWN0IGtleV9kZWYgKmtleV9kZWYgPSAoc3RydWN0 IGtleV9kZWYgKiljOzxicj4mZ3Q7ICZndDsmbmJzcDsgcmV0dXJuIHR1cGxlX2NvbXBhcmUoZGF0 YV9hLSZndDt0dXBsZSwgZGF0YV9hLSZndDtoaW50LCBkYXRhX2ItJmd0O3R1cGxlLDxicj4mZ3Q7 ICZndDsmbmJzcDsgZGF0YV9iLSZndDtoaW50LCBrZXlfZGVmKTs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7 fTxicj4mZ3Q7ICZndDsmbmJzcDs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7Lyoge3t7IE1lbXR4VHJlZSBJ dGVyYXRvcnMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi88YnI+Jmd0 OyAmZ3Q7K3RlbXBsYXRlICZsdDtpbnQgVVNFX0hJTlQmZ3Q7PGJyPiZndDsgJmd0OyZuYnNwO3N0 cnVjdCB0cmVlX2l0ZXJhdG9yIHs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IHN0cnVjdCBpdGVyYXRvciBi YXNlOzxicj4mZ3Q7ICZndDstIHN0cnVjdCBtZW10eF90cmVlX2l0ZXJhdG9yIHRyZWVfaXRlcmF0 b3I7PGJyPiZndDsgJmd0OysgbWVtdHhfdHJlZV9pdGVyYXRvcl90Jmx0O1VTRV9ISU5UJmd0OyB0 cmVlX2l0ZXJhdG9yOzxicj4mZ3Q7ICZndDsmbmJzcDsgZW51bSBpdGVyYXRvcl90eXBlIHR5cGU7 PGJyPiZndDsgJmd0Oy0gc3RydWN0IG1lbXR4X3RyZWVfa2V5X2RhdGEga2V5X2RhdGE7PGJyPiZn dDsgJmd0Oy0gc3RydWN0IG1lbXR4X3RyZWVfZGF0YSBjdXJyZW50Ozxicj4mZ3Q7ICZndDsrIHN0 cnVjdCBtZW10eF90cmVlX2tleV9kYXRhJmx0O1VTRV9ISU5UJmd0OyBrZXlfZGF0YTs8YnI+Jmd0 OyAmZ3Q7KyBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhJmx0O1VTRV9ISU5UJmd0OyBjdXJyZW50Ozxi cj4mZ3Q7ICZndDsmbmJzcDsgLyoqIE1lbW9yeSBwb29sIHRoZSBpdGVyYXRvciB3YXMgYWxsb2Nh dGVkIGZyb20uICovPGJyPiZndDsgJmd0OyZuYnNwOyBzdHJ1Y3QgbWVtcG9vbCAqcG9vbDs8YnI+ Jmd0OyAmZ3Q7Jm5ic3A7fTs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7PGJyPiZndDsgJmd0Oy1zdGF0aWNf YXNzZXJ0KHNpemVvZihzdHJ1Y3QgdHJlZV9pdGVyYXRvcikgJmx0Oz0gTUVNVFhfSVRFUkFUT1Jf U0laRSw8YnI+Jmd0OyAmZ3Q7LSAic2l6ZW9mKHN0cnVjdCB0cmVlX2l0ZXJhdG9yKSBtdXN0IGJl IGxlc3MgdGhhbiBvciBlcXVhbCAiPGJyPiZndDsgJmd0OytzdGF0aWNfYXNzZXJ0KHNpemVvZihz dHJ1Y3QgdHJlZV9pdGVyYXRvciZsdDswJmd0OykgJmx0Oz0gTUVNVFhfSVRFUkFUT1JfU0laRSw8 YnI+Jmd0OyAmZ3Q7KyAic2l6ZW9mKHN0cnVjdCB0cmVlX2l0ZXJhdG9yJmx0OzAmZ3Q7KSBtdXN0 IGJlIGxlc3MgdGhhbiBvciBlcXVhbCAiPGJyPiZndDsgJmd0OysgInRvIE1FTVRYX0lURVJBVE9S X1NJWkUiKTs8YnI+Jmd0OyAmZ3Q7K3N0YXRpY19hc3NlcnQoc2l6ZW9mKHN0cnVjdCB0cmVlX2l0 ZXJhdG9yJmx0OzEmZ3Q7KSAmbHQ7PSBNRU1UWF9JVEVSQVRPUl9TSVpFLDxicj4mZ3Q7ICZndDsr ICJzaXplb2Yoc3RydWN0IHRyZWVfaXRlcmF0b3ImbHQ7MSZndDspIG11c3QgYmUgbGVzcyB0aGFu IG9yIGVxdWFsICI8YnI+Jmd0OyAmZ3Q7Jm5ic3A7ICJ0byBNRU1UWF9JVEVSQVRPUl9TSVpFIik7 PGJyPiZndDsgJmd0OyZuYnNwOzxicj4mZ3Q7ICZndDsrdGVtcGxhdGUgJmx0O2ludCBVU0VfSElO VCZndDs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7c3RhdGljIHZvaWQ8YnI+Jmd0OyAmZ3Q7Jm5ic3A7dHJl ZV9pdGVyYXRvcl9mcmVlKHN0cnVjdCBpdGVyYXRvciAqaXRlcmF0b3IpOzxicj4mZ3Q7ICZndDsm bmJzcDs8YnI+Jmd0OyAmZ3Q7LXN0YXRpYyBpbmxpbmUgc3RydWN0IHRyZWVfaXRlcmF0b3IgKjxi cj4mZ3Q7ICZndDstdHJlZV9pdGVyYXRvcihzdHJ1Y3QgaXRlcmF0b3IgKml0KTxicj4mZ3Q7ICZn dDsrdGVtcGxhdGUgJmx0O2ludCBVU0VfSElOVCZndDs8YnI+Jmd0OyAmZ3Q7K3N0YXRpYyBpbmxp bmUgc3RydWN0IHRyZWVfaXRlcmF0b3ImbHQ7VVNFX0hJTlQmZ3Q7ICo8YnI+Jmd0OyAmZ3Q7K2dl dF90cmVlX2l0ZXJhdG9yKHN0cnVjdCBpdGVyYXRvciAqaXQpPGJyPiZndDsgJmd0OyZuYnNwO3s8 YnI+Jmd0OyAmZ3Q7LSBhc3NlcnQoaXQtJmd0O2ZyZWUgPT0gdHJlZV9pdGVyYXRvcl9mcmVlKTs8 YnI+Jmd0OyAmZ3Q7LSByZXR1cm4gKHN0cnVjdCB0cmVlX2l0ZXJhdG9yICopIGl0Ozxicj4mZ3Q7 ICZndDsrIGFzc2VydChpdC0mZ3Q7ZnJlZSA9PSAmYW1wO3RyZWVfaXRlcmF0b3JfZnJlZSZsdDtV U0VfSElOVCZndDspOzxicj4mZ3Q7ICZndDsrIHJldHVybiAoc3RydWN0IHRyZWVfaXRlcmF0b3Im bHQ7VVNFX0hJTlQmZ3Q7ICopIGl0Ozxicj4mZ3Q7ICZndDsmbmJzcDt9PGJyPiZndDsgJmd0OyZu YnNwOzxicj4mZ3Q7ICZndDsrdGVtcGxhdGUgJmx0O2ludCBVU0VfSElOVCZndDs8YnI+Jmd0OyAm Z3Q7Jm5ic3A7c3RhdGljIHZvaWQ8YnI+Jmd0OyAmZ3Q7Jm5ic3A7dHJlZV9pdGVyYXRvcl9mcmVl KHN0cnVjdCBpdGVyYXRvciAqaXRlcmF0b3IpPGJyPiZndDsgJmd0OyZuYnNwO3s8YnI+Jmd0OyAm Z3Q7LSBzdHJ1Y3QgdHJlZV9pdGVyYXRvciAqaXQgPSB0cmVlX2l0ZXJhdG9yKGl0ZXJhdG9yKTs8 YnI+Jmd0OyAmZ3Q7KyBzdHJ1Y3QgdHJlZV9pdGVyYXRvciZsdDtVU0VfSElOVCZndDsgKml0ID0g Z2V0X3RyZWVfaXRlcmF0b3ImbHQ7VVNFX0hJTlQmZ3Q7KGl0ZXJhdG9yKTs8YnI+Jmd0OyAmZ3Q7 Jm5ic3A7IHN0cnVjdCB0dXBsZSAqdHVwbGUgPSBpdC0mZ3Q7Y3VycmVudC50dXBsZTs8YnI+Jmd0 OyAmZ3Q7Jm5ic3A7IGlmICh0dXBsZSAhPSBOVUxMKTxicj4mZ3Q7ICZndDsmbmJzcDsgdHVwbGVf dW5yZWYodHVwbGUpOzxicj4mZ3Q7ICZndDtAQCAtMTc2LDE0ICsyNzMsMTUgQEAgdHJlZV9pdGVy YXRvcl9kdW1taWUoc3RydWN0IGl0ZXJhdG9yICppdGVyYXRvciwgc3RydWN0IHR1cGxlICoqcmV0 KTxicj4mZ3Q7ICZndDsmbmJzcDsgcmV0dXJuIDA7PGJyPiZndDsgJmd0OyZuYnNwO308YnI+Jmd0 OyAmZ3Q7Jm5ic3A7PGJyPiZndDsgJmd0Oyt0ZW1wbGF0ZSAmbHQ7aW50IFVTRV9ISU5UJmd0Ozxi cj4mZ3Q7ICZndDsmbmJzcDtzdGF0aWMgaW50PGJyPiZndDsgJmd0OyZuYnNwO3RyZWVfaXRlcmF0 b3JfbmV4dF9iYXNlKHN0cnVjdCBpdGVyYXRvciAqaXRlcmF0b3IsIHN0cnVjdCB0dXBsZSAqKnJl dCk8YnI+Jmd0OyAmZ3Q7Jm5ic3A7ezxicj4mZ3Q7ICZndDstIHN0cnVjdCBtZW10eF90cmVlX2lu ZGV4ICppbmRleCA9PGJyPiZndDsgJmd0Oy0gKHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICopaXRl cmF0b3ItJmd0O2luZGV4Ozxicj4mZ3Q7ICZndDstIHN0cnVjdCB0cmVlX2l0ZXJhdG9yICppdCA9 IHRyZWVfaXRlcmF0b3IoaXRlcmF0b3IpOzxicj4mZ3Q7ICZndDsrIHN0cnVjdCBtZW10eF90cmVl X2luZGV4Jmx0O1VTRV9ISU5UJmd0OyAqaW5kZXggPTxicj4mZ3Q7ICZndDsrIChzdHJ1Y3QgbWVt dHhfdHJlZV9pbmRleCZsdDtVU0VfSElOVCZndDsgKilpdGVyYXRvci0mZ3Q7aW5kZXg7PGJyPiZn dDsgJmd0Oysgc3RydWN0IHRyZWVfaXRlcmF0b3ImbHQ7VVNFX0hJTlQmZ3Q7ICppdCA9IGdldF90 cmVlX2l0ZXJhdG9yJmx0O1VTRV9ISU5UJmd0OyhpdGVyYXRvcik7PGJyPiZndDsgJmd0OyZuYnNw OyBhc3NlcnQoaXQtJmd0O2N1cnJlbnQudHVwbGUgIT0gTlVMTCk7PGJyPiZndDsgJmd0Oy0gc3Ry dWN0IG1lbXR4X3RyZWVfZGF0YSAqY2hlY2sgPTxicj4mZ3Q7ICZndDsrIHN0cnVjdCBtZW10eF90 cmVlX2RhdGEmbHQ7VVNFX0hJTlQmZ3Q7ICpjaGVjayA9PGJyPiZndDsgJmd0OyZuYnNwOyBtZW10 eF90cmVlX2l0ZXJhdG9yX2dldF9lbGVtKCZhbXA7aW5kZXgtJmd0O3RyZWUsICZhbXA7aXQtJmd0 O3RyZWVfaXRlcmF0b3IpOzxicj4mZ3Q7ICZndDsmbmJzcDsgaWYgKGNoZWNrID09IE5VTEwgfHwg IW1lbXR4X3RyZWVfZGF0YV9pc19lcXVhbChjaGVjaywgJmFtcDtpdC0mZ3Q7Y3VycmVudCkpIHs8 YnI+Jmd0OyAmZ3Q7Jm5ic3A7IGl0LSZndDt0cmVlX2l0ZXJhdG9yID0gbWVtdHhfdHJlZV91cHBl cl9ib3VuZF9lbGVtKCZhbXA7aW5kZXgtJmd0O3RyZWUsPGJyPiZndDsgJmd0O0BAIC0xOTIsNyAr MjkwLDcgQEAgdHJlZV9pdGVyYXRvcl9uZXh0X2Jhc2Uoc3RydWN0IGl0ZXJhdG9yICppdGVyYXRv ciwgc3RydWN0IHR1cGxlICoqcmV0KTxicj4mZ3Q7ICZndDsmbmJzcDsgbWVtdHhfdHJlZV9pdGVy YXRvcl9uZXh0KCZhbXA7aW5kZXgtJmd0O3RyZWUsICZhbXA7aXQtJmd0O3RyZWVfaXRlcmF0b3Ip Ozxicj4mZ3Q7ICZndDsmbmJzcDsgfTxicj4mZ3Q7ICZndDsmbmJzcDsgdHVwbGVfdW5yZWYoaXQt Jmd0O2N1cnJlbnQudHVwbGUpOzxicj4mZ3Q7ICZndDstIHN0cnVjdCBtZW10eF90cmVlX2RhdGEg KnJlcyA9PGJyPiZndDsgJmd0Oysgc3RydWN0IG1lbXR4X3RyZWVfZGF0YSZsdDtVU0VfSElOVCZn dDsgKnJlcyA9PGJyPiZndDsgJmd0OyZuYnNwOyBtZW10eF90cmVlX2l0ZXJhdG9yX2dldF9lbGVt KCZhbXA7aW5kZXgtJmd0O3RyZWUsICZhbXA7aXQtJmd0O3RyZWVfaXRlcmF0b3IpOzxicj4mZ3Q7 ICZndDsmbmJzcDsgaWYgKHJlcyA9PSBOVUxMKSB7PGJyPiZndDsgJmd0OyZuYnNwOyBpdGVyYXRv ci0mZ3Q7bmV4dCA9IHRyZWVfaXRlcmF0b3JfZHVtbWllOzxicj4mZ3Q7ICZndDtAQCAtMjA2LDE0 ICszMDQsMTUgQEAgdHJlZV9pdGVyYXRvcl9uZXh0X2Jhc2Uoc3RydWN0IGl0ZXJhdG9yICppdGVy YXRvciwgc3RydWN0IHR1cGxlICoqcmV0KTxicj4mZ3Q7ICZndDsmbmJzcDsgcmV0dXJuIDA7PGJy PiZndDsgJmd0OyZuYnNwO308YnI+Jmd0OyAmZ3Q7Jm5ic3A7PGJyPiZndDsgJmd0Oyt0ZW1wbGF0 ZSAmbHQ7aW50IFVTRV9ISU5UJmd0Ozxicj4mZ3Q7ICZndDsmbmJzcDtzdGF0aWMgaW50PGJyPiZn dDsgJmd0OyZuYnNwO3RyZWVfaXRlcmF0b3JfcHJldl9iYXNlKHN0cnVjdCBpdGVyYXRvciAqaXRl cmF0b3IsIHN0cnVjdCB0dXBsZSAqKnJldCk8YnI+Jmd0OyAmZ3Q7Jm5ic3A7ezxicj4mZ3Q7ICZn dDstIHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICppbmRleCA9PGJyPiZndDsgJmd0Oy0gKHN0cnVj dCBtZW10eF90cmVlX2luZGV4ICopaXRlcmF0b3ItJmd0O2luZGV4Ozxicj4mZ3Q7ICZndDstIHN0 cnVjdCB0cmVlX2l0ZXJhdG9yICppdCA9IHRyZWVfaXRlcmF0b3IoaXRlcmF0b3IpOzxicj4mZ3Q7 ICZndDsrIHN0cnVjdCBtZW10eF90cmVlX2luZGV4Jmx0O1VTRV9ISU5UJmd0OyAqaW5kZXggPTxi cj4mZ3Q7ICZndDsrIChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCZsdDtVU0VfSElOVCZndDsgKilp dGVyYXRvci0mZ3Q7aW5kZXg7PGJyPiZndDsgJmd0Oysgc3RydWN0IHRyZWVfaXRlcmF0b3ImbHQ7 VVNFX0hJTlQmZ3Q7ICppdCA9IGdldF90cmVlX2l0ZXJhdG9yJmx0O1VTRV9ISU5UJmd0OyhpdGVy YXRvcik7PGJyPiZndDsgJmd0OyZuYnNwOyBhc3NlcnQoaXQtJmd0O2N1cnJlbnQudHVwbGUgIT0g TlVMTCk7PGJyPiZndDsgJmd0Oy0gc3RydWN0IG1lbXR4X3RyZWVfZGF0YSAqY2hlY2sgPTxicj4m Z3Q7ICZndDsrIHN0cnVjdCBtZW10eF90cmVlX2RhdGEmbHQ7VVNFX0hJTlQmZ3Q7ICpjaGVjayA9 PGJyPiZndDsgJmd0OyZuYnNwOyBtZW10eF90cmVlX2l0ZXJhdG9yX2dldF9lbGVtKCZhbXA7aW5k ZXgtJmd0O3RyZWUsICZhbXA7aXQtJmd0O3RyZWVfaXRlcmF0b3IpOzxicj4mZ3Q7ICZndDsmbmJz cDsgaWYgKGNoZWNrID09IE5VTEwgfHwgIW1lbXR4X3RyZWVfZGF0YV9pc19lcXVhbChjaGVjaywg JmFtcDtpdC0mZ3Q7Y3VycmVudCkpIHs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IGl0LSZndDt0cmVlX2l0 ZXJhdG9yID0gbWVtdHhfdHJlZV9sb3dlcl9ib3VuZF9lbGVtKCZhbXA7aW5kZXgtJmd0O3RyZWUs PGJyPiZndDsgJmd0O0BAIC0yMjEsNyArMzIwLDcgQEAgdHJlZV9pdGVyYXRvcl9wcmV2X2Jhc2Uo c3RydWN0IGl0ZXJhdG9yICppdGVyYXRvciwgc3RydWN0IHR1cGxlICoqcmV0KTxicj4mZ3Q7ICZn dDsmbmJzcDsgfTxicj4mZ3Q7ICZndDsmbmJzcDsgbWVtdHhfdHJlZV9pdGVyYXRvcl9wcmV2KCZh bXA7aW5kZXgtJmd0O3RyZWUsICZhbXA7aXQtJmd0O3RyZWVfaXRlcmF0b3IpOzxicj4mZ3Q7ICZn dDsmbmJzcDsgdHVwbGVfdW5yZWYoaXQtJmd0O2N1cnJlbnQudHVwbGUpOzxicj4mZ3Q7ICZndDst IHN0cnVjdCBtZW10eF90cmVlX2RhdGEgKnJlcyA9PGJyPiZndDsgJmd0Oysgc3RydWN0IG1lbXR4 X3RyZWVfZGF0YSZsdDtVU0VfSElOVCZndDsgKnJlcyA9PGJyPiZndDsgJmd0OyZuYnNwOyBtZW10 eF90cmVlX2l0ZXJhdG9yX2dldF9lbGVtKCZhbXA7aW5kZXgtJmd0O3RyZWUsICZhbXA7aXQtJmd0 O3RyZWVfaXRlcmF0b3IpOzxicj4mZ3Q7ICZndDsmbmJzcDsgaWYgKCFyZXMpIHs8YnI+Jmd0OyAm Z3Q7Jm5ic3A7IGl0ZXJhdG9yLSZndDtuZXh0ID0gdHJlZV9pdGVyYXRvcl9kdW1taWU7PGJyPiZn dDsgJmd0O0BAIC0yMzUsMTQgKzMzNCwxNSBAQCB0cmVlX2l0ZXJhdG9yX3ByZXZfYmFzZShzdHJ1 Y3QgaXRlcmF0b3IgKml0ZXJhdG9yLCBzdHJ1Y3QgdHVwbGUgKipyZXQpPGJyPiZndDsgJmd0OyZu YnNwOyByZXR1cm4gMDs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7fTxicj4mZ3Q7ICZndDsmbmJzcDs8YnI+ Jmd0OyAmZ3Q7K3RlbXBsYXRlICZsdDtpbnQgVVNFX0hJTlQmZ3Q7PGJyPiZndDsgJmd0OyZuYnNw O3N0YXRpYyBpbnQ8YnI+Jmd0OyAmZ3Q7Jm5ic3A7dHJlZV9pdGVyYXRvcl9uZXh0X2VxdWFsX2Jh c2Uoc3RydWN0IGl0ZXJhdG9yICppdGVyYXRvciwgc3RydWN0IHR1cGxlICoqcmV0KTxicj4mZ3Q7 ICZndDsmbmJzcDt7PGJyPiZndDsgJmd0Oy0gc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKmluZGV4 ID08YnI+Jmd0OyAmZ3Q7LSAoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKilpdGVyYXRvci0mZ3Q7 aW5kZXg7PGJyPiZndDsgJmd0Oy0gc3RydWN0IHRyZWVfaXRlcmF0b3IgKml0ID0gdHJlZV9pdGVy YXRvcihpdGVyYXRvcik7PGJyPiZndDsgJmd0Oysgc3RydWN0IG1lbXR4X3RyZWVfaW5kZXgmbHQ7 VVNFX0hJTlQmZ3Q7ICppbmRleCA9PGJyPiZndDsgJmd0OysgKHN0cnVjdCBtZW10eF90cmVlX2lu ZGV4Jmx0O1VTRV9ISU5UJmd0OyAqKWl0ZXJhdG9yLSZndDtpbmRleDs8YnI+Jmd0OyAmZ3Q7KyBz dHJ1Y3QgdHJlZV9pdGVyYXRvciZsdDtVU0VfSElOVCZndDsgKml0ID0gZ2V0X3RyZWVfaXRlcmF0 b3ImbHQ7VVNFX0hJTlQmZ3Q7KGl0ZXJhdG9yKTs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IGFzc2VydChp dC0mZ3Q7Y3VycmVudC50dXBsZSAhPSBOVUxMKTs8YnI+Jmd0OyAmZ3Q7LSBzdHJ1Y3QgbWVtdHhf dHJlZV9kYXRhICpjaGVjayA9PGJyPiZndDsgJmd0Oysgc3RydWN0IG1lbXR4X3RyZWVfZGF0YSZs dDtVU0VfSElOVCZndDsgKmNoZWNrID08YnI+Jmd0OyAmZ3Q7Jm5ic3A7IG1lbXR4X3RyZWVfaXRl cmF0b3JfZ2V0X2VsZW0oJmFtcDtpbmRleC0mZ3Q7dHJlZSwgJmFtcDtpdC0mZ3Q7dHJlZV9pdGVy YXRvcik7PGJyPiZndDsgJmd0OyZuYnNwOyBpZiAoY2hlY2sgPT0gTlVMTCB8fCAhbWVtdHhfdHJl ZV9kYXRhX2lzX2VxdWFsKGNoZWNrLCAmYW1wO2l0LSZndDtjdXJyZW50KSkgezxicj4mZ3Q7ICZn dDsmbmJzcDsgaXQtJmd0O3RyZWVfaXRlcmF0b3IgPSBtZW10eF90cmVlX3VwcGVyX2JvdW5kX2Vs ZW0oJmFtcDtpbmRleC0mZ3Q7dHJlZSw8YnI+Jmd0OyAmZ3Q7QEAgLTI1MSw3ICszNTEsNyBAQCB0 cmVlX2l0ZXJhdG9yX25leHRfZXF1YWxfYmFzZShzdHJ1Y3QgaXRlcmF0b3IgKml0ZXJhdG9yLCBz dHJ1Y3QgdHVwbGUgKipyZXQpPGJyPiZndDsgJmd0OyZuYnNwOyBtZW10eF90cmVlX2l0ZXJhdG9y X25leHQoJmFtcDtpbmRleC0mZ3Q7dHJlZSwgJmFtcDtpdC0mZ3Q7dHJlZV9pdGVyYXRvcik7PGJy PiZndDsgJmd0OyZuYnNwOyB9PGJyPiZndDsgJmd0OyZuYnNwOyB0dXBsZV91bnJlZihpdC0mZ3Q7 Y3VycmVudC50dXBsZSk7PGJyPiZndDsgJmd0Oy0gc3RydWN0IG1lbXR4X3RyZWVfZGF0YSAqcmVz ID08YnI+Jmd0OyAmZ3Q7KyBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhJmx0O1VTRV9ISU5UJmd0OyAq cmVzID08YnI+Jmd0OyAmZ3Q7Jm5ic3A7IG1lbXR4X3RyZWVfaXRlcmF0b3JfZ2V0X2VsZW0oJmFt cDtpbmRleC0mZ3Q7dHJlZSwgJmFtcDtpdC0mZ3Q7dHJlZV9pdGVyYXRvcik7PGJyPiZndDsgJmd0 OyZuYnNwOyAvKiBVc2UgdXNlciBrZXkgZGVmIHRvIHNhdmUgYSBmZXcgbG9vcHMuICovPGJyPiZn dDsgJmd0OyZuYnNwOyBpZiAocmVzID09IE5VTEwgfHw8YnI+Jmd0OyAmZ3Q7QEAgLTI3MSwxNCAr MzcxLDE1IEBAIHRyZWVfaXRlcmF0b3JfbmV4dF9lcXVhbF9iYXNlKHN0cnVjdCBpdGVyYXRvciAq aXRlcmF0b3IsIHN0cnVjdCB0dXBsZSAqKnJldCk8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IHJldHVybiAw Ozxicj4mZ3Q7ICZndDsmbmJzcDt9PGJyPiZndDsgJmd0OyZuYnNwOzxicj4mZ3Q7ICZndDsrdGVt cGxhdGUgJmx0O2ludCBVU0VfSElOVCZndDs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7c3RhdGljIGludDxi cj4mZ3Q7ICZndDsmbmJzcDt0cmVlX2l0ZXJhdG9yX3ByZXZfZXF1YWxfYmFzZShzdHJ1Y3QgaXRl cmF0b3IgKml0ZXJhdG9yLCBzdHJ1Y3QgdHVwbGUgKipyZXQpPGJyPiZndDsgJmd0OyZuYnNwO3s8 YnI+Jmd0OyAmZ3Q7LSBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqaW5kZXggPTxicj4mZ3Q7ICZn dDstIChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqKWl0ZXJhdG9yLSZndDtpbmRleDs8YnI+Jmd0 OyAmZ3Q7LSBzdHJ1Y3QgdHJlZV9pdGVyYXRvciAqaXQgPSB0cmVlX2l0ZXJhdG9yKGl0ZXJhdG9y KTs8YnI+Jmd0OyAmZ3Q7KyBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCZsdDtVU0VfSElOVCZndDsg KmluZGV4ID08YnI+Jmd0OyAmZ3Q7KyAoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXgmbHQ7VVNFX0hJ TlQmZ3Q7ICopaXRlcmF0b3ItJmd0O2luZGV4Ozxicj4mZ3Q7ICZndDsrIHN0cnVjdCB0cmVlX2l0 ZXJhdG9yJmx0O1VTRV9ISU5UJmd0OyAqaXQgPSBnZXRfdHJlZV9pdGVyYXRvciZsdDtVU0VfSElO VCZndDsoaXRlcmF0b3IpOzxicj4mZ3Q7ICZndDsmbmJzcDsgYXNzZXJ0KGl0LSZndDtjdXJyZW50 LnR1cGxlICE9IE5VTEwpOzxicj4mZ3Q7ICZndDstIHN0cnVjdCBtZW10eF90cmVlX2RhdGEgKmNo ZWNrID08YnI+Jmd0OyAmZ3Q7KyBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhJmx0O1VTRV9ISU5UJmd0 OyAqY2hlY2sgPTxicj4mZ3Q7ICZndDsmbmJzcDsgbWVtdHhfdHJlZV9pdGVyYXRvcl9nZXRfZWxl bSgmYW1wO2luZGV4LSZndDt0cmVlLCAmYW1wO2l0LSZndDt0cmVlX2l0ZXJhdG9yKTs8YnI+Jmd0 OyAmZ3Q7Jm5ic3A7IGlmIChjaGVjayA9PSBOVUxMIHx8ICFtZW10eF90cmVlX2RhdGFfaXNfZXF1 YWwoY2hlY2ssICZhbXA7aXQtJmd0O2N1cnJlbnQpKSB7PGJyPiZndDsgJmd0OyZuYnNwOyBpdC0m Z3Q7dHJlZV9pdGVyYXRvciA9IG1lbXR4X3RyZWVfbG93ZXJfYm91bmRfZWxlbSgmYW1wO2luZGV4 LSZndDt0cmVlLDxicj4mZ3Q7ICZndDtAQCAtMjg2LDcgKzM4Nyw3IEBAIHRyZWVfaXRlcmF0b3Jf cHJldl9lcXVhbF9iYXNlKHN0cnVjdCBpdGVyYXRvciAqaXRlcmF0b3IsIHN0cnVjdCB0dXBsZSAq KnJldCk8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IH08YnI+Jmd0OyAmZ3Q7Jm5ic3A7IG1lbXR4X3RyZWVf aXRlcmF0b3JfcHJldigmYW1wO2luZGV4LSZndDt0cmVlLCAmYW1wO2l0LSZndDt0cmVlX2l0ZXJh dG9yKTs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IHR1cGxlX3VucmVmKGl0LSZndDtjdXJyZW50LnR1cGxl KTs8YnI+Jmd0OyAmZ3Q7LSBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhICpyZXMgPTxicj4mZ3Q7ICZn dDsrIHN0cnVjdCBtZW10eF90cmVlX2RhdGEmbHQ7VVNFX0hJTlQmZ3Q7ICpyZXMgPTxicj4mZ3Q7 ICZndDsmbmJzcDsgbWVtdHhfdHJlZV9pdGVyYXRvcl9nZXRfZWxlbSgmYW1wO2luZGV4LSZndDt0 cmVlLCAmYW1wO2l0LSZndDt0cmVlX2l0ZXJhdG9yKTs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IC8qIFVz ZSB1c2VyIGtleSBkZWYgdG8gc2F2ZSBhIGZldyBsb29wcy4gKi88YnI+Jmd0OyAmZ3Q7Jm5ic3A7 IGlmIChyZXMgPT0gTlVMTCB8fDxicj4mZ3Q7ICZndDtAQCAtMzA3LDI4ICs0MDgsMzAgQEAgdHJl ZV9pdGVyYXRvcl9wcmV2X2VxdWFsX2Jhc2Uoc3RydWN0IGl0ZXJhdG9yICppdGVyYXRvciwgc3Ry dWN0IHR1cGxlICoqcmV0KTxicj4mZ3Q7ICZndDsmbmJzcDt9PGJyPiZndDsgJmd0OyZuYnNwOzxi cj4mZ3Q7ICZndDsmbmJzcDsjZGVmaW5lIFdSQVBfSVRFUkFUT1JfTUVUSE9EKG5hbWUpIFw8YnI+ Jmd0OyAmZ3Q7K3RlbXBsYXRlICZsdDtpbnQgVVNFX0hJTlQmZ3Q7IFw8YnI+Jmd0OyAmZ3Q7Jm5i c3A7c3RhdGljIGludCBcPGJyPiZndDsgJmd0OyZuYnNwO25hbWUoc3RydWN0IGl0ZXJhdG9yICpp dGVyYXRvciwgc3RydWN0IHR1cGxlICoqcmV0KSBcPGJyPiZndDsgJmd0OyZuYnNwO3sgXDxicj4m Z3Q7ICZndDstIHN0cnVjdCBtZW10eF90cmVlICp0cmVlID0gXDxicj4mZ3Q7ICZndDstICZhbXA7 KChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqKWl0ZXJhdG9yLSZndDtpbmRleCktJmd0O3RyZWU7 IFw8YnI+Jmd0OyAmZ3Q7LSBzdHJ1Y3QgdHJlZV9pdGVyYXRvciAqaXQgPSB0cmVlX2l0ZXJhdG9y KGl0ZXJhdG9yKTsgXDxicj4mZ3Q7ICZndDstIHN0cnVjdCBtZW10eF90cmVlX2l0ZXJhdG9yICp0 aSA9ICZhbXA7aXQtJmd0O3RyZWVfaXRlcmF0b3I7IFw8YnI+Jmd0OyAmZ3Q7KyBtZW10eF90cmVl X3QmbHQ7VVNFX0hJTlQmZ3Q7ICp0cmVlID0gXDxicj4mZ3Q7ICZndDsrICZhbXA7KChzdHJ1Y3Qg bWVtdHhfdHJlZV9pbmRleCZsdDtVU0VfSElOVCZndDsgKilpdGVyYXRvci0mZ3Q7aW5kZXgpLSZn dDt0cmVlOyBcPGJyPiZndDsgJmd0Oysgc3RydWN0IHRyZWVfaXRlcmF0b3ImbHQ7VVNFX0hJTlQm Z3Q7ICppdCA9IFw8YnI+Jmd0OyAmZ3Q7KyBnZXRfdHJlZV9pdGVyYXRvciZsdDtVU0VfSElOVCZn dDsoaXRlcmF0b3IpOyBcPGJyPiZndDsgJmd0OysgbWVtdHhfdHJlZV9pdGVyYXRvcl90Jmx0O1VT RV9ISU5UJmd0OyAqdGkgPSAmYW1wO2l0LSZndDt0cmVlX2l0ZXJhdG9yOyBcPGJyPiZndDsgJmd0 OyZuYnNwOyB1aW50MzJfdCBpaWQgPSBpdGVyYXRvci0mZ3Q7aW5kZXgtJmd0O2RlZi0mZ3Q7aWlk OyBcPGJyPiZndDsgJmd0OyZuYnNwOyBib29sIGlzX211bHRpa2V5ID0gaXRlcmF0b3ItJmd0O2lu ZGV4LSZndDtkZWYtJmd0O2tleV9kZWYtJmd0O2lzX211bHRpa2V5OyBcPGJyPiZndDsgJmd0OyZu YnNwOyBzdHJ1Y3QgdHhuICp0eG4gPSBpbl90eG4oKTsgXDxicj4mZ3Q7ICZndDsmbmJzcDsgc3Ry dWN0IHNwYWNlICpzcGFjZSA9IHNwYWNlX2J5X2lkKGl0ZXJhdG9yLSZndDtzcGFjZV9pZCk7IFw8 YnI+Jmd0OyAmZ3Q7Jm5ic3A7IGJvb2wgaXNfcncgPSB0eG4gIT0gTlVMTDsgXDxicj4mZ3Q7ICZn dDsmbmJzcDsgZG8geyBcPGJyPiZndDsgJmd0Oy0gaW50IHJjID0gbmFtZSMjX2Jhc2UoaXRlcmF0 b3IsIHJldCk7IFw8YnI+Jmd0OyAmZ3Q7KyBpbnQgcmMgPSBuYW1lIyNfYmFzZSZsdDtVU0VfSElO VCZndDsoaXRlcmF0b3IsIHJldCk7IFw8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IGlmIChyYyAhPSAwIHx8 ICpyZXQgPT0gTlVMTCkgXDxicj4mZ3Q7ICZndDsmbmJzcDsgcmV0dXJuIHJjOyBcPGJyPiZndDsg Jmd0OyZuYnNwOyB1aW50MzJfdCBta19pbmRleCA9IDA7IFw8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IGlm IChpc19tdWx0aWtleSkgeyBcPGJyPiZndDsgJmd0Oy0gc3RydWN0IG1lbXR4X3RyZWVfZGF0YSAq Y2hlY2sgPSBcPGJyPiZndDsgJmd0Oysgc3RydWN0IG1lbXR4X3RyZWVfZGF0YSZsdDtVU0VfSElO VCZndDsgKmNoZWNrID0gXDxicj4mZ3Q7ICZndDsmbmJzcDsgbWVtdHhfdHJlZV9pdGVyYXRvcl9n ZXRfZWxlbSh0cmVlLCB0aSk7IFw8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IGFzc2VydChjaGVjayAhPSBO VUxMKTsgXDxicj4mZ3Q7ICZndDstIG1rX2luZGV4ID0gY2hlY2stJmd0O2hpbnQ7IFw8YnI+Jmd0 OyAmZ3Q7KyBta19pbmRleCA9ICh1aW50MzJfdCljaGVjay0mZ3Q7aGludDsgXDxicj4mZ3Q7ICZn dDsmbmJzcDsgfSBcPGJyPiZndDsgJmd0OyZuYnNwOyAqcmV0ID0gbWVtdHhfdHhfdHVwbGVfY2xh cmlmeSh0eG4sIHNwYWNlLCAqcmV0LCBcPGJyPiZndDsgJmd0OyZuYnNwOyBpaWQsIG1rX2luZGV4 LCBpc19ydyk7IFw8YnI+Jmd0OyAmZ3Q7QEAgLTM0NywyNyArNDUwLDI4IEBAIFdSQVBfSVRFUkFU T1JfTUVUSE9EKHRyZWVfaXRlcmF0b3JfcHJldl9lcXVhbCk7PGJyPiZndDsgJmd0OyZuYnNwOzxi cj4mZ3Q7ICZndDsmbmJzcDsjdW5kZWYgV1JBUF9JVEVSQVRPUl9NRVRIT0Q8YnI+Jmd0OyAmZ3Q7 Jm5ic3A7PGJyPiZndDsgJmd0Oyt0ZW1wbGF0ZSAmbHQ7aW50IFVTRV9ISU5UJmd0Ozxicj4mZ3Q7 ICZndDsmbmJzcDtzdGF0aWMgdm9pZDxicj4mZ3Q7ICZndDstdHJlZV9pdGVyYXRvcl9zZXRfbmV4 dF9tZXRob2Qoc3RydWN0IHRyZWVfaXRlcmF0b3IgKml0KTxicj4mZ3Q7ICZndDsrdHJlZV9pdGVy YXRvcl9zZXRfbmV4dF9tZXRob2Qoc3RydWN0IHRyZWVfaXRlcmF0b3ImbHQ7VVNFX0hJTlQmZ3Q7 ICppdCk8YnI+Jmd0OyAmZ3Q7Jm5ic3A7ezxicj4mZ3Q7ICZndDsmbmJzcDsgYXNzZXJ0KGl0LSZn dDtjdXJyZW50LnR1cGxlICE9IE5VTEwpOzxicj4mZ3Q7ICZndDsmbmJzcDsgc3dpdGNoIChpdC0m Z3Q7dHlwZSkgezxicj4mZ3Q7ICZndDsmbmJzcDsgY2FzZSBJVEVSX0VROjxicj4mZ3Q7ICZndDst IGl0LSZndDtiYXNlLm5leHQgPSB0cmVlX2l0ZXJhdG9yX25leHRfZXF1YWw7PGJyPiZndDsgJmd0 OysgaXQtJmd0O2Jhc2UubmV4dCA9IHRyZWVfaXRlcmF0b3JfbmV4dF9lcXVhbCZsdDtVU0VfSElO VCZndDs7PGJyPiZndDsgJmd0OyZuYnNwOyBicmVhazs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IGNhc2Ug SVRFUl9SRVE6PGJyPiZndDsgJmd0Oy0gaXQtJmd0O2Jhc2UubmV4dCA9IHRyZWVfaXRlcmF0b3Jf cHJldl9lcXVhbDs8YnI+Jmd0OyAmZ3Q7KyBpdC0mZ3Q7YmFzZS5uZXh0ID0gdHJlZV9pdGVyYXRv cl9wcmV2X2VxdWFsJmx0O1VTRV9ISU5UJmd0Ozs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IGJyZWFrOzxi cj4mZ3Q7ICZndDsmbmJzcDsgY2FzZSBJVEVSX0FMTDo8YnI+Jmd0OyAmZ3Q7LSBpdC0mZ3Q7YmFz ZS5uZXh0ID0gdHJlZV9pdGVyYXRvcl9uZXh0Ozxicj4mZ3Q7ICZndDsrIGl0LSZndDtiYXNlLm5l eHQgPSB0cmVlX2l0ZXJhdG9yX25leHQmbHQ7VVNFX0hJTlQmZ3Q7Ozxicj4mZ3Q7ICZndDsmbmJz cDsgYnJlYWs7PGJyPiZndDsgJmd0OyZuYnNwOyBjYXNlIElURVJfTFQ6PGJyPiZndDsgJmd0OyZu YnNwOyBjYXNlIElURVJfTEU6PGJyPiZndDsgJmd0Oy0gaXQtJmd0O2Jhc2UubmV4dCA9IHRyZWVf aXRlcmF0b3JfcHJldjs8YnI+Jmd0OyAmZ3Q7KyBpdC0mZ3Q7YmFzZS5uZXh0ID0gdHJlZV9pdGVy YXRvcl9wcmV2Jmx0O1VTRV9ISU5UJmd0Ozs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IGJyZWFrOzxicj4m Z3Q7ICZndDsmbmJzcDsgY2FzZSBJVEVSX0dFOjxicj4mZ3Q7ICZndDsmbmJzcDsgY2FzZSBJVEVS X0dUOjxicj4mZ3Q7ICZndDstIGl0LSZndDtiYXNlLm5leHQgPSB0cmVlX2l0ZXJhdG9yX25leHQ7 PGJyPiZndDsgJmd0OysgaXQtJmd0O2Jhc2UubmV4dCA9IHRyZWVfaXRlcmF0b3JfbmV4dCZsdDtV U0VfSElOVCZndDs7PGJyPiZndDsgJmd0OyZuYnNwOyBicmVhazs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7 IGRlZmF1bHQ6PGJyPiZndDsgJmd0OyZuYnNwOyAvKiBUaGUgdHlwZSB3YXMgY2hlY2tlZCBpbiBp bml0SXRlcmF0b3IgKi88YnI+Jmd0OyAmZ3Q7QEAgLTM3NSwxNSArNDc5LDE2IEBAIHRyZWVfaXRl cmF0b3Jfc2V0X25leHRfbWV0aG9kKHN0cnVjdCB0cmVlX2l0ZXJhdG9yICppdCk8YnI+Jmd0OyAm Z3Q7Jm5ic3A7IH08YnI+Jmd0OyAmZ3Q7Jm5ic3A7fTxicj4mZ3Q7ICZndDsmbmJzcDs8YnI+Jmd0 OyAmZ3Q7K3RlbXBsYXRlICZsdDtpbnQgVVNFX0hJTlQmZ3Q7PGJyPiZndDsgJmd0OyZuYnNwO3N0 YXRpYyBpbnQ8YnI+Jmd0OyAmZ3Q7Jm5ic3A7dHJlZV9pdGVyYXRvcl9zdGFydChzdHJ1Y3QgaXRl cmF0b3IgKml0ZXJhdG9yLCBzdHJ1Y3QgdHVwbGUgKipyZXQpPGJyPiZndDsgJmd0OyZuYnNwO3s8 YnI+Jmd0OyAmZ3Q7Jm5ic3A7ICpyZXQgPSBOVUxMOzxicj4mZ3Q7ICZndDstIHN0cnVjdCBtZW10 eF90cmVlX2luZGV4ICppbmRleCA9PGJyPiZndDsgJmd0Oy0gKHN0cnVjdCBtZW10eF90cmVlX2lu ZGV4ICopaXRlcmF0b3ItJmd0O2luZGV4Ozxicj4mZ3Q7ICZndDstIHN0cnVjdCB0cmVlX2l0ZXJh dG9yICppdCA9IHRyZWVfaXRlcmF0b3IoaXRlcmF0b3IpOzxicj4mZ3Q7ICZndDsrIHN0cnVjdCBt ZW10eF90cmVlX2luZGV4Jmx0O1VTRV9ISU5UJmd0OyAqaW5kZXggPTxicj4mZ3Q7ICZndDsrIChz dHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCZsdDtVU0VfSElOVCZndDsgKilpdGVyYXRvci0mZ3Q7aW5k ZXg7PGJyPiZndDsgJmd0Oysgc3RydWN0IHRyZWVfaXRlcmF0b3ImbHQ7VVNFX0hJTlQmZ3Q7ICpp dCA9IGdldF90cmVlX2l0ZXJhdG9yJmx0O1VTRV9ISU5UJmd0OyhpdGVyYXRvcik7PGJyPiZndDsg Jmd0OyZuYnNwOyBpdC0mZ3Q7YmFzZS5uZXh0ID0gdHJlZV9pdGVyYXRvcl9kdW1taWU7PGJyPiZn dDsgJmd0Oy0gc3RydWN0IG1lbXR4X3RyZWUgKnRyZWUgPSAmYW1wO2luZGV4LSZndDt0cmVlOzxi cj4mZ3Q7ICZndDsrIG1lbXR4X3RyZWVfdCZsdDtVU0VfSElOVCZndDsgKnRyZWUgPSAmYW1wO2lu ZGV4LSZndDt0cmVlOzxicj4mZ3Q7ICZndDsmbmJzcDsgZW51bSBpdGVyYXRvcl90eXBlIHR5cGUg PSBpdC0mZ3Q7dHlwZTs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IGJvb2wgZXhhY3QgPSBmYWxzZTs8YnI+ Jmd0OyAmZ3Q7Jm5ic3A7IGFzc2VydChpdC0mZ3Q7Y3VycmVudC50dXBsZSA9PSBOVUxMKTs8YnI+ Jmd0OyAmZ3Q7QEAgLTQyMyw4ICs1MjgsOCBAQCB0cmVlX2l0ZXJhdG9yX3N0YXJ0KHN0cnVjdCBp dGVyYXRvciAqaXRlcmF0b3IsIHN0cnVjdCB0dXBsZSAqKnJldCk8YnI+Jmd0OyAmZ3Q7Jm5ic3A7 IH08YnI+Jmd0OyAmZ3Q7Jm5ic3A7IH08YnI+Jmd0OyAmZ3Q7Jm5ic3A7PGJyPiZndDsgJmd0Oy0g c3RydWN0IG1lbXR4X3RyZWVfZGF0YSAqcmVzID0gbWVtdHhfdHJlZV9pdGVyYXRvcl9nZXRfZWxl bSh0cmVlLDxicj4mZ3Q7ICZndDstICZhbXA7aXQtJmd0O3RyZWVfaXRlcmF0b3IpOzxicj4mZ3Q7 ICZndDsrIHN0cnVjdCBtZW10eF90cmVlX2RhdGEmbHQ7VVNFX0hJTlQmZ3Q7ICpyZXMgPTxicj4m Z3Q7ICZndDsrIG1lbXR4X3RyZWVfaXRlcmF0b3JfZ2V0X2VsZW0odHJlZSwgJmFtcDtpdC0mZ3Q7 dHJlZV9pdGVyYXRvcik7PGJyPiZndDsgJmd0OyZuYnNwOyBpZiAoIXJlcyk8YnI+Jmd0OyAmZ3Q7 Jm5ic3A7IHJldHVybiAwOzxicj4mZ3Q7ICZndDsmbmJzcDsgKnJldCA9IHJlcy0mZ3Q7dHVwbGU7 PGJyPiZndDsgJmd0O0BAIC00NTQsMTQgKzU1OSwxNiBAQCB0cmVlX2l0ZXJhdG9yX3N0YXJ0KHN0 cnVjdCBpdGVyYXRvciAqaXRlcmF0b3IsIHN0cnVjdCB0dXBsZSAqKnJldCk8YnI+Jmd0OyAmZ3Q7 Jm5ic3A7PGJyPiZndDsgJmd0OyZuYnNwOy8qIHt7eyBNZW10eFRyZWUgKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi88YnI+Jmd0OyAmZ3Q7 Jm5ic3A7PGJyPiZndDsgJmd0Oyt0ZW1wbGF0ZSAmbHQ7aW50IFVTRV9ISU5UJmd0Ozxicj4mZ3Q7 ICZndDsmbmJzcDtzdGF0aWMgdm9pZDxicj4mZ3Q7ICZndDstbWVtdHhfdHJlZV9pbmRleF9mcmVl KHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICppbmRleCk8YnI+Jmd0OyAmZ3Q7K21lbXR4X3RyZWVf aW5kZXhfZnJlZShzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCZsdDtVU0VfSElOVCZndDsgKmluZGV4 KTxicj4mZ3Q7ICZndDsmbmJzcDt7PGJyPiZndDsgJmd0OyZuYnNwOyBtZW10eF90cmVlX2Rlc3Ry b3koJmFtcDtpbmRleC0mZ3Q7dHJlZSk7PGJyPiZndDsgJmd0OyZuYnNwOyBmcmVlKGluZGV4LSZn dDtidWlsZF9hcnJheSk7PGJyPiZndDsgJmd0OyZuYnNwOyBmcmVlKGluZGV4KTs8YnI+Jmd0OyAm Z3Q7Jm5ic3A7fTxicj4mZ3Q7ICZndDsmbmJzcDs8YnI+Jmd0OyAmZ3Q7K3RlbXBsYXRlICZsdDtp bnQgVVNFX0hJTlQmZ3Q7PGJyPiZndDsgJmd0OyZuYnNwO3N0YXRpYyB2b2lkPGJyPiZndDsgJmd0 OyZuYnNwO21lbXR4X3RyZWVfaW5kZXhfZ2NfcnVuKHN0cnVjdCBtZW10eF9nY190YXNrICp0YXNr LCBib29sICpkb25lKTxicj4mZ3Q7ICZndDsmbmJzcDt7PGJyPiZndDsgJmd0O0BAIC00NzUsMTQg KzU4MiwxNCBAQCBtZW10eF90cmVlX2luZGV4X2djX3J1bihzdHJ1Y3QgbWVtdHhfZ2NfdGFzayAq dGFzaywgYm9vbCAqZG9uZSk8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IGVudW0geyBZSUVMRF9MT09QUyA9 IDEwIH07PGJyPiZndDsgJmd0OyZuYnNwOyNlbmRpZjxicj4mZ3Q7ICZndDsmbmJzcDs8YnI+Jmd0 OyAmZ3Q7LSBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqaW5kZXggPSBjb250YWluZXJfb2YodGFz ayw8YnI+Jmd0OyAmZ3Q7LSBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCwgZ2NfdGFzayk7PGJyPiZn dDsgJmd0Oy0gc3RydWN0IG1lbXR4X3RyZWUgKnRyZWUgPSAmYW1wO2luZGV4LSZndDt0cmVlOzxi cj4mZ3Q7ICZndDstIHN0cnVjdCBtZW10eF90cmVlX2l0ZXJhdG9yICppdHIgPSAmYW1wO2luZGV4 LSZndDtnY19pdGVyYXRvcjs8YnI+Jmd0OyAmZ3Q7KyBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCZs dDtVU0VfSElOVCZndDsgKmluZGV4ID0gY29udGFpbmVyX29mKHRhc2ssPGJyPiZndDsgJmd0Oysg c3RydWN0IG1lbXR4X3RyZWVfaW5kZXgmbHQ7VVNFX0hJTlQmZ3Q7LCBnY190YXNrKTs8YnI+Jmd0 OyAmZ3Q7KyBtZW10eF90cmVlX3QmbHQ7VVNFX0hJTlQmZ3Q7ICp0cmVlID0gJmFtcDtpbmRleC0m Z3Q7dHJlZTs8YnI+Jmd0OyAmZ3Q7KyBtZW10eF90cmVlX2l0ZXJhdG9yX3QmbHQ7VVNFX0hJTlQm Z3Q7ICppdHIgPSAmYW1wO2luZGV4LSZndDtnY19pdGVyYXRvcjs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7 PGJyPiZndDsgJmd0OyZuYnNwOyB1bnNpZ25lZCBpbnQgbG9vcHMgPSAwOzxicj4mZ3Q7ICZndDsm bmJzcDsgd2hpbGUgKCFtZW10eF90cmVlX2l0ZXJhdG9yX2lzX2ludmFsaWQoaXRyKSkgezxicj4m Z3Q7ICZndDstIHN0cnVjdCBtZW10eF90cmVlX2RhdGEgKnJlcyA9PGJyPiZndDsgJmd0Oysgc3Ry dWN0IG1lbXR4X3RyZWVfZGF0YSZsdDtVU0VfSElOVCZndDsgKnJlcyA9PGJyPiZndDsgJmd0OyZu YnNwOyBtZW10eF90cmVlX2l0ZXJhdG9yX2dldF9lbGVtKHRyZWUsIGl0cik7PGJyPiZndDsgJmd0 OyZuYnNwOyBtZW10eF90cmVlX2l0ZXJhdG9yX25leHQodHJlZSwgaXRyKTs8YnI+Jmd0OyAmZ3Q7 Jm5ic3A7IHR1cGxlX3VucmVmKHJlcy0mZ3Q7dHVwbGUpOzxicj4mZ3Q7ICZndDtAQCAtNDk0LDIz ICs2MDEsMzIgQEAgbWVtdHhfdHJlZV9pbmRleF9nY19ydW4oc3RydWN0IG1lbXR4X2djX3Rhc2sg KnRhc2ssIGJvb2wgKmRvbmUpPGJyPiZndDsgJmd0OyZuYnNwOyAqZG9uZSA9IHRydWU7PGJyPiZn dDsgJmd0OyZuYnNwO308YnI+Jmd0OyAmZ3Q7Jm5ic3A7PGJyPiZndDsgJmd0Oyt0ZW1wbGF0ZSAm bHQ7aW50IFVTRV9ISU5UJmd0Ozxicj4mZ3Q7ICZndDsmbmJzcDtzdGF0aWMgdm9pZDxicj4mZ3Q7 ICZndDsmbmJzcDttZW10eF90cmVlX2luZGV4X2djX2ZyZWUoc3RydWN0IG1lbXR4X2djX3Rhc2sg KnRhc2spPGJyPiZndDsgJmd0OyZuYnNwO3s8YnI+Jmd0OyAmZ3Q7LSBzdHJ1Y3QgbWVtdHhfdHJl ZV9pbmRleCAqaW5kZXggPSBjb250YWluZXJfb2YodGFzayw8YnI+Jmd0OyAmZ3Q7LSBzdHJ1Y3Qg bWVtdHhfdHJlZV9pbmRleCwgZ2NfdGFzayk7PGJyPiZndDsgJmd0Oysgc3RydWN0IG1lbXR4X3Ry ZWVfaW5kZXgmbHQ7VVNFX0hJTlQmZ3Q7ICppbmRleCA9IGNvbnRhaW5lcl9vZih0YXNrLDxicj4m Z3Q7ICZndDsrIHN0cnVjdCBtZW10eF90cmVlX2luZGV4Jmx0O1VTRV9ISU5UJmd0OywgZ2NfdGFz ayk7PGJyPiZndDsgJmd0OyZuYnNwOyBtZW10eF90cmVlX2luZGV4X2ZyZWUoaW5kZXgpOzxicj4m Z3Q7ICZndDsmbmJzcDt9PGJyPiZndDsgJmd0OyZuYnNwOzxicj4mZ3Q7ICZndDstc3RhdGljIGNv bnN0IHN0cnVjdCBtZW10eF9nY190YXNrX3Z0YWIgbWVtdHhfdHJlZV9pbmRleF9nY192dGFiID0g ezxicj4mZ3Q7ICZndDstIC5ydW4gPSBtZW10eF90cmVlX2luZGV4X2djX3J1biw8YnI+Jmd0OyAm Z3Q7LSAuZnJlZSA9IG1lbXR4X3RyZWVfaW5kZXhfZ2NfZnJlZSw8YnI+Jmd0OyAmZ3Q7K3RlbXBs YXRlICZsdDtpbnQgVVNFX0hJTlQmZ3Q7PGJyPiZndDsgJmd0OytzdGF0aWMgc3RydWN0IG1lbXR4 X2djX3Rhc2tfdnRhYiAqIGdldF9tZW10eF90cmVlX2luZGV4X2djX3Z0YWIoKTxicj4mZ3Q7ICZn dDsrezxicj4mZ3Q7ICZndDsrIHN0YXRpYyBtZW10eF9nY190YXNrX3Z0YWIgdGFiID08YnI+Jmd0 OyAmZ3Q7KyB7PGJyPiZndDsgJmd0OysgLnJ1biA9IG1lbXR4X3RyZWVfaW5kZXhfZ2NfcnVuJmx0 O1VTRV9ISU5UJmd0Oyw8YnI+Jmd0OyAmZ3Q7KyAuZnJlZSA9IG1lbXR4X3RyZWVfaW5kZXhfZ2Nf ZnJlZSZsdDtVU0VfSElOVCZndDssPGJyPiZndDsgJmd0OysgfTs8YnI+Jmd0OyAmZ3Q7KyByZXR1 cm4gJmFtcDt0YWI7PGJyPiZndDsgJmd0OyZuYnNwO307PGJyPiZndDsgJmd0OyZuYnNwOzxicj4m Z3Q7ICZndDsrdGVtcGxhdGUgJmx0O2ludCBVU0VfSElOVCZndDs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7 c3RhdGljIHZvaWQ8YnI+Jmd0OyAmZ3Q7Jm5ic3A7bWVtdHhfdHJlZV9pbmRleF9kZXN0cm95KHN0 cnVjdCBpbmRleCAqYmFzZSk8YnI+Jmd0OyAmZ3Q7Jm5ic3A7ezxicj4mZ3Q7ICZndDstIHN0cnVj dCBtZW10eF90cmVlX2luZGV4ICppbmRleCA9IChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqKWJh c2U7PGJyPiZndDsgJmd0Oysgc3RydWN0IG1lbXR4X3RyZWVfaW5kZXgmbHQ7VVNFX0hJTlQmZ3Q7 ICppbmRleCA9PGJyPiZndDsgJmd0OysgKHN0cnVjdCBtZW10eF90cmVlX2luZGV4Jmx0O1VTRV9I SU5UJmd0OyAqKWJhc2U7PGJyPiZndDsgJmd0OyZuYnNwOyBzdHJ1Y3QgbWVtdHhfZW5naW5lICpt ZW10eCA9IChzdHJ1Y3QgbWVtdHhfZW5naW5lICopYmFzZS0mZ3Q7ZW5naW5lOzxicj4mZ3Q7ICZn dDsmbmJzcDsgaWYgKGJhc2UtJmd0O2RlZi0mZ3Q7aWlkID09IDApIHs8YnI+Jmd0OyAmZ3Q7Jm5i c3A7IC8qPGJyPiZndDsgJmd0O0BAIC01MTgsNyArNjM0LDcgQEAgbWVtdHhfdHJlZV9pbmRleF9k ZXN0cm95KHN0cnVjdCBpbmRleCAqYmFzZSk8YnI+Jmd0OyAmZ3Q7Jm5ic3A7ICogaW4gdGhlIGlu ZGV4LCB3aGljaCBtYXkgdGFrZSBhIHdoaWxlLiBTY2hlZHVsZSBhPGJyPiZndDsgJmd0OyZuYnNw OyAqIGJhY2tncm91bmQgdGFzayBpbiBvcmRlciBub3QgdG8gYmxvY2sgdHggdGhyZWFkLjxicj4m Z3Q7ICZndDsmbmJzcDsgKi88YnI+Jmd0OyAmZ3Q7LSBpbmRleC0mZ3Q7Z2NfdGFzay52dGFiID0g JmFtcDttZW10eF90cmVlX2luZGV4X2djX3Z0YWI7PGJyPiZndDsgJmd0OysgaW5kZXgtJmd0O2dj X3Rhc2sudnRhYiA9IGdldF9tZW10eF90cmVlX2luZGV4X2djX3Z0YWImbHQ7VVNFX0hJTlQmZ3Q7 KCk7PGJyPiZndDsgJmd0OyZuYnNwOyBpbmRleC0mZ3Q7Z2NfaXRlcmF0b3IgPSBtZW10eF90cmVl X2l0ZXJhdG9yX2ZpcnN0KCZhbXA7aW5kZXgtJmd0O3RyZWUpOzxicj4mZ3Q7ICZndDsmbmJzcDsg bWVtdHhfZW5naW5lX3NjaGVkdWxlX2djKG1lbXR4LCAmYW1wO2luZGV4LSZndDtnY190YXNrKTs8 YnI+Jmd0OyAmZ3Q7Jm5ic3A7IH0gZWxzZSB7PGJyPiZndDsgJmd0O0BAIC01MzAsMTAgKzY0Niwx MiBAQCBtZW10eF90cmVlX2luZGV4X2Rlc3Ryb3koc3RydWN0IGluZGV4ICpiYXNlKTxicj4mZ3Q7 ICZndDsmbmJzcDsgfTxicj4mZ3Q7ICZndDsmbmJzcDt9PGJyPiZndDsgJmd0OyZuYnNwOzxicj4m Z3Q7ICZndDsrdGVtcGxhdGUgJmx0O2ludCBVU0VfSElOVCZndDs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7 c3RhdGljIHZvaWQ8YnI+Jmd0OyAmZ3Q7Jm5ic3A7bWVtdHhfdHJlZV9pbmRleF91cGRhdGVfZGVm KHN0cnVjdCBpbmRleCAqYmFzZSk8YnI+Jmd0OyAmZ3Q7Jm5ic3A7ezxicj4mZ3Q7ICZndDstIHN0 cnVjdCBtZW10eF90cmVlX2luZGV4ICppbmRleCA9IChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAq KWJhc2U7PGJyPiZndDsgJmd0Oysgc3RydWN0IG1lbXR4X3RyZWVfaW5kZXgmbHQ7VVNFX0hJTlQm Z3Q7ICppbmRleCA9PGJyPiZndDsgJmd0OysgKHN0cnVjdCBtZW10eF90cmVlX2luZGV4Jmx0O1VT RV9ISU5UJmd0OyAqKWJhc2U7PGJyPiZndDsgJmd0OyZuYnNwOyBzdHJ1Y3QgaW5kZXhfZGVmICpk ZWYgPSBiYXNlLSZndDtkZWY7PGJyPiZndDsgJmd0OyZuYnNwOyAvKjxicj4mZ3Q7ICZndDsmbmJz cDsgKiBXZSB1c2UgZXh0ZW5kZWQga2V5IGRlZiBmb3Igbm9uLXVuaXF1ZSBhbmQgbnVsbGFibGU8 YnI+Jmd0OyAmZ3Q7QEAgLTU1Myw1MSArNjcxLDYyIEBAIG1lbXR4X3RyZWVfaW5kZXhfZGVwZW5k c19vbl9wayhzdHJ1Y3QgaW5kZXggKmJhc2UpPGJyPiZndDsgJmd0OyZuYnNwOyByZXR1cm4gIWRl Zi0mZ3Q7b3B0cy5pc191bmlxdWUgfHwgZGVmLSZndDtrZXlfZGVmLSZndDtpc19udWxsYWJsZTs8 YnI+Jmd0OyAmZ3Q7Jm5ic3A7fTxicj4mZ3Q7ICZndDsmbmJzcDs8YnI+Jmd0OyAmZ3Q7K3RlbXBs YXRlICZsdDtpbnQgVVNFX0hJTlQmZ3Q7PGJyPiZndDsgJmd0OyZuYnNwO3N0YXRpYyBzc2l6ZV90 PGJyPiZndDsgJmd0OyZuYnNwO21lbXR4X3RyZWVfaW5kZXhfc2l6ZShzdHJ1Y3QgaW5kZXggKmJh c2UpPGJyPiZndDsgJmd0OyZuYnNwO3s8YnI+Jmd0OyAmZ3Q7LSBzdHJ1Y3QgbWVtdHhfdHJlZV9p bmRleCAqaW5kZXggPSAoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKiliYXNlOzxicj4mZ3Q7ICZn dDsrIHN0cnVjdCBtZW10eF90cmVlX2luZGV4Jmx0O1VTRV9ISU5UJmd0OyAqaW5kZXggPTxicj4m Z3Q7ICZndDsrIChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCZsdDtVU0VfSElOVCZndDsgKiliYXNl Ozxicj4mZ3Q7ICZndDsmbmJzcDsgcmV0dXJuIG1lbXR4X3RyZWVfc2l6ZSgmYW1wO2luZGV4LSZn dDt0cmVlKTs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7fTxicj4mZ3Q7ICZndDsmbmJzcDs8YnI+Jmd0OyAm Z3Q7K3RlbXBsYXRlICZsdDtpbnQgVVNFX0hJTlQmZ3Q7PGJyPiZndDsgJmd0OyZuYnNwO3N0YXRp YyBzc2l6ZV90PGJyPiZndDsgJmd0OyZuYnNwO21lbXR4X3RyZWVfaW5kZXhfYnNpemUoc3RydWN0 IGluZGV4ICpiYXNlKTxicj4mZ3Q7ICZndDsmbmJzcDt7PGJyPiZndDsgJmd0Oy0gc3RydWN0IG1l bXR4X3RyZWVfaW5kZXggKmluZGV4ID0gKHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICopYmFzZTs8 YnI+Jmd0OyAmZ3Q7KyBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCZsdDtVU0VfSElOVCZndDsgKmlu ZGV4ID08YnI+Jmd0OyAmZ3Q7KyAoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXgmbHQ7VVNFX0hJTlQm Z3Q7ICopYmFzZTs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IHJldHVybiBtZW10eF90cmVlX21lbV91c2Vk KCZhbXA7aW5kZXgtJmd0O3RyZWUpOzxicj4mZ3Q7ICZndDsmbmJzcDt9PGJyPiZndDsgJmd0OyZu YnNwOzxicj4mZ3Q7ICZndDsrdGVtcGxhdGUgJmx0O2ludCBVU0VfSElOVCZndDs8YnI+Jmd0OyAm Z3Q7Jm5ic3A7c3RhdGljIGludDxicj4mZ3Q7ICZndDsmbmJzcDttZW10eF90cmVlX2luZGV4X3Jh bmRvbShzdHJ1Y3QgaW5kZXggKmJhc2UsIHVpbnQzMl90IHJuZCwgc3RydWN0IHR1cGxlICoqcmVz dWx0KTxicj4mZ3Q7ICZndDsmbmJzcDt7PGJyPiZndDsgJmd0Oy0gc3RydWN0IG1lbXR4X3RyZWVf aW5kZXggKmluZGV4ID0gKHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICopYmFzZTs8YnI+Jmd0OyAm Z3Q7LSBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhICpyZXMgPSBtZW10eF90cmVlX3JhbmRvbSgmYW1w O2luZGV4LSZndDt0cmVlLCBybmQpOzxicj4mZ3Q7ICZndDsrIHN0cnVjdCBtZW10eF90cmVlX2lu ZGV4Jmx0O1VTRV9ISU5UJmd0OyAqaW5kZXggPTxicj4mZ3Q7ICZndDsrIChzdHJ1Y3QgbWVtdHhf dHJlZV9pbmRleCZsdDtVU0VfSElOVCZndDsgKiliYXNlOzxicj4mZ3Q7ICZndDsrIHN0cnVjdCBt ZW10eF90cmVlX2RhdGEmbHQ7VVNFX0hJTlQmZ3Q7ICpyZXMgPSBtZW10eF90cmVlX3JhbmRvbSgm YW1wO2luZGV4LSZndDt0cmVlLCBybmQpOzxicj4mZ3Q7ICZndDsmbmJzcDsgKnJlc3VsdCA9IHJl cyAhPSBOVUxMID8gcmVzLSZndDt0dXBsZSA6IE5VTEw7PGJyPiZndDsgJmd0OyZuYnNwOyByZXR1 cm4gMDs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7fTxicj4mZ3Q7ICZndDsmbmJzcDs8YnI+Jmd0OyAmZ3Q7 K3RlbXBsYXRlICZsdDtpbnQgVVNFX0hJTlQmZ3Q7PGJyPiZndDsgJmd0OyZuYnNwO3N0YXRpYyBz c2l6ZV90PGJyPiZndDsgJmd0OyZuYnNwO21lbXR4X3RyZWVfaW5kZXhfY291bnQoc3RydWN0IGlu ZGV4ICpiYXNlLCBlbnVtIGl0ZXJhdG9yX3R5cGUgdHlwZSw8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IGNv bnN0IGNoYXIgKmtleSwgdWludDMyX3QgcGFydF9jb3VudCk8YnI+Jmd0OyAmZ3Q7Jm5ic3A7ezxi cj4mZ3Q7ICZndDsmbmJzcDsgaWYgKHR5cGUgPT0gSVRFUl9BTEwpPGJyPiZndDsgJmd0Oy0gcmV0 dXJuIG1lbXR4X3RyZWVfaW5kZXhfc2l6ZShiYXNlKTsgLyogb3B0aW1pemF0aW9uICovPGJyPiZn dDsgJmd0OysgcmV0dXJuIG1lbXR4X3RyZWVfaW5kZXhfc2l6ZSZsdDtVU0VfSElOVCZndDsoYmFz ZSk7IC8qIG9wdGltaXphdGlvbiAqLzxicj4mZ3Q7ICZndDsmbmJzcDsgcmV0dXJuIGdlbmVyaWNf aW5kZXhfY291bnQoYmFzZSwgdHlwZSwga2V5LCBwYXJ0X2NvdW50KTs8YnI+Jmd0OyAmZ3Q7Jm5i c3A7fTxicj4mZ3Q7ICZndDsmbmJzcDs8YnI+Jmd0OyAmZ3Q7K3RlbXBsYXRlICZsdDtpbnQgVVNF X0hJTlQmZ3Q7PGJyPiZndDsgJmd0OyZuYnNwO3N0YXRpYyBpbnQ8YnI+Jmd0OyAmZ3Q7Jm5ic3A7 bWVtdHhfdHJlZV9pbmRleF9nZXQoc3RydWN0IGluZGV4ICpiYXNlLCBjb25zdCBjaGFyICprZXks PGJyPiZndDsgJmd0OyZuYnNwOyB1aW50MzJfdCBwYXJ0X2NvdW50LCBzdHJ1Y3QgdHVwbGUgKipy ZXN1bHQpPGJyPiZndDsgJmd0OyZuYnNwO3s8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IGFzc2VydChiYXNl LSZndDtkZWYtJmd0O29wdHMuaXNfdW5pcXVlICZhbXA7JmFtcDs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7 IHBhcnRfY291bnQgPT0gYmFzZS0mZ3Q7ZGVmLSZndDtrZXlfZGVmLSZndDtwYXJ0X2NvdW50KTs8 YnI+Jmd0OyAmZ3Q7LSBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqaW5kZXggPSAoc3RydWN0IG1l bXR4X3RyZWVfaW5kZXggKiliYXNlOzxicj4mZ3Q7ICZndDsrIHN0cnVjdCBtZW10eF90cmVlX2lu ZGV4Jmx0O1VTRV9ISU5UJmd0OyAqaW5kZXggPTxicj4mZ3Q7ICZndDsrIChzdHJ1Y3QgbWVtdHhf dHJlZV9pbmRleCZsdDtVU0VfSElOVCZndDsgKiliYXNlOzxicj4mZ3Q7ICZndDsmbmJzcDsgc3Ry dWN0IGtleV9kZWYgKmNtcF9kZWYgPSBtZW10eF90cmVlX2NtcF9kZWYoJmFtcDtpbmRleC0mZ3Q7 dHJlZSk7PGJyPiZndDsgJmd0Oy0gc3RydWN0IG1lbXR4X3RyZWVfa2V5X2RhdGEga2V5X2RhdGE7 PGJyPiZndDsgJmd0Oysgc3RydWN0IG1lbXR4X3RyZWVfa2V5X2RhdGEmbHQ7VVNFX0hJTlQmZ3Q7 IGtleV9kYXRhOzxicj4mZ3Q7ICZndDsmbmJzcDsga2V5X2RhdGEua2V5ID0ga2V5Ozxicj4mZ3Q7 ICZndDsmbmJzcDsga2V5X2RhdGEucGFydF9jb3VudCA9IHBhcnRfY291bnQ7PGJyPiZndDsgJmd0 Oy0ga2V5X2RhdGEuaGludCA9IGtleV9oaW50KGtleSwgcGFydF9jb3VudCwgY21wX2RlZik7PGJy PiZndDsgJmd0Oy0gc3RydWN0IG1lbXR4X3RyZWVfZGF0YSAqcmVzID0gbWVtdHhfdHJlZV9maW5k KCZhbXA7aW5kZXgtJmd0O3RyZWUsICZhbXA7a2V5X2RhdGEpOzxicj4mZ3Q7ICZndDsrIGlmIChV U0VfSElOVCk8YnI+Jmd0OyAmZ3Q7KyBrZXlfZGF0YS5zZXRfaGludChrZXlfaGludChrZXksIHBh cnRfY291bnQsIGNtcF9kZWYpKTs8YnI+Jmd0OyAmZ3Q7KyBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRh Jmx0O1VTRV9ISU5UJmd0OyAqcmVzID08YnI+Jmd0OyAmZ3Q7KyBtZW10eF90cmVlX2ZpbmQoJmFt cDtpbmRleC0mZ3Q7dHJlZSwgJmFtcDtrZXlfZGF0YSk7PGJyPiZndDsgJmd0OyZuYnNwOyBpZiAo cmVzID09IE5VTEwpIHs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7ICpyZXN1bHQgPSBOVUxMOzxicj4mZ3Q7 ICZndDsmbmJzcDsgcmV0dXJuIDA7PGJyPiZndDsgJmd0O0BAIC02MTEsMTggKzc0MCwyMSBAQCBt ZW10eF90cmVlX2luZGV4X2dldChzdHJ1Y3QgaW5kZXggKmJhc2UsIGNvbnN0IGNoYXIgKmtleSw8 YnI+Jmd0OyAmZ3Q7Jm5ic3A7IHJldHVybiAwOzxicj4mZ3Q7ICZndDsmbmJzcDt9PGJyPiZndDsg Jmd0OyZuYnNwOzxicj4mZ3Q7ICZndDsrdGVtcGxhdGUgJmx0O2ludCBVU0VfSElOVCZndDs8YnI+ Jmd0OyAmZ3Q7Jm5ic3A7c3RhdGljIGludDxicj4mZ3Q7ICZndDsmbmJzcDttZW10eF90cmVlX2lu ZGV4X3JlcGxhY2Uoc3RydWN0IGluZGV4ICpiYXNlLCBzdHJ1Y3QgdHVwbGUgKm9sZF90dXBsZSw8 YnI+Jmd0OyAmZ3Q7Jm5ic3A7IHN0cnVjdCB0dXBsZSAqbmV3X3R1cGxlLCBlbnVtIGR1cF9yZXBs YWNlX21vZGUgbW9kZSw8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IHN0cnVjdCB0dXBsZSAqKnJlc3VsdCk8 YnI+Jmd0OyAmZ3Q7Jm5ic3A7ezxicj4mZ3Q7ICZndDstIHN0cnVjdCBtZW10eF90cmVlX2luZGV4 ICppbmRleCA9IChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqKWJhc2U7PGJyPiZndDsgJmd0Oysg c3RydWN0IG1lbXR4X3RyZWVfaW5kZXgmbHQ7VVNFX0hJTlQmZ3Q7ICppbmRleCA9PGJyPiZndDsg Jmd0OysgKHN0cnVjdCBtZW10eF90cmVlX2luZGV4Jmx0O1VTRV9ISU5UJmd0OyAqKWJhc2U7PGJy PiZndDsgJmd0OyZuYnNwOyBzdHJ1Y3Qga2V5X2RlZiAqY21wX2RlZiA9IG1lbXR4X3RyZWVfY21w X2RlZigmYW1wO2luZGV4LSZndDt0cmVlKTs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IGlmIChuZXdfdHVw bGUpIHs8YnI+Jmd0OyAmZ3Q7LSBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhIG5ld19kYXRhOzxicj4m Z3Q7ICZndDsrIHN0cnVjdCBtZW10eF90cmVlX2RhdGEmbHQ7VVNFX0hJTlQmZ3Q7IG5ld19kYXRh Ozxicj4mZ3Q7ICZndDsmbmJzcDsgbmV3X2RhdGEudHVwbGUgPSBuZXdfdHVwbGU7PGJyPiZndDsg Jmd0Oy0gbmV3X2RhdGEuaGludCA9IHR1cGxlX2hpbnQobmV3X3R1cGxlLCBjbXBfZGVmKTs8YnI+ Jmd0OyAmZ3Q7LSBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhIGR1cF9kYXRhOzxicj4mZ3Q7ICZndDsr IGlmIChVU0VfSElOVCk8YnI+Jmd0OyAmZ3Q7KyBuZXdfZGF0YS5zZXRfaGludCh0dXBsZV9oaW50 KG5ld190dXBsZSwgY21wX2RlZikpOzxicj4mZ3Q7ICZndDsrIHN0cnVjdCBtZW10eF90cmVlX2Rh dGEmbHQ7VVNFX0hJTlQmZ3Q7IGR1cF9kYXRhOzxicj4mZ3Q7ICZndDsmbmJzcDsgZHVwX2RhdGEu dHVwbGUgPSBOVUxMOzxicj4mZ3Q7ICZndDsmbmJzcDs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IC8qIFRy eSB0byBvcHRpbWlzdGljYWxseSByZXBsYWNlIHRoZSBuZXdfdHVwbGUuICovPGJyPiZndDsgJmd0 O0BAIC02NTIsOSArNzg0LDEwIEBAIG1lbXR4X3RyZWVfaW5kZXhfcmVwbGFjZShzdHJ1Y3QgaW5k ZXggKmJhc2UsIHN0cnVjdCB0dXBsZSAqb2xkX3R1cGxlLDxicj4mZ3Q7ICZndDsmbmJzcDsgfTxi cj4mZ3Q7ICZndDsmbmJzcDsgfTxicj4mZ3Q7ICZndDsmbmJzcDsgaWYgKG9sZF90dXBsZSkgezxi cj4mZ3Q7ICZndDstIHN0cnVjdCBtZW10eF90cmVlX2RhdGEgb2xkX2RhdGE7PGJyPiZndDsgJmd0 Oysgc3RydWN0IG1lbXR4X3RyZWVfZGF0YSZsdDtVU0VfSElOVCZndDsgb2xkX2RhdGE7PGJyPiZn dDsgJmd0OyZuYnNwOyBvbGRfZGF0YS50dXBsZSA9IG9sZF90dXBsZTs8YnI+Jmd0OyAmZ3Q7LSBv bGRfZGF0YS5oaW50ID0gdHVwbGVfaGludChvbGRfdHVwbGUsIGNtcF9kZWYpOzxicj4mZ3Q7ICZn dDsrIGlmIChVU0VfSElOVCk8YnI+Jmd0OyAmZ3Q7KyBvbGRfZGF0YS5zZXRfaGludCh0dXBsZV9o aW50KG9sZF90dXBsZSwgY21wX2RlZikpOzxicj4mZ3Q7ICZndDsmbmJzcDsgbWVtdHhfdHJlZV9k ZWxldGUoJmFtcDtpbmRleC0mZ3Q7dHJlZSwgb2xkX2RhdGEpOzxicj4mZ3Q7ICZndDsmbmJzcDsg fTxicj4mZ3Q7ICZndDsmbmJzcDsgKnJlc3VsdCA9IG9sZF90dXBsZTs8YnI+Jmd0OyAmZ3Q7QEAg LTY2NywxMyArODAwLDEzIEBAIG1lbXR4X3RyZWVfaW5kZXhfcmVwbGFjZShzdHJ1Y3QgaW5kZXgg KmJhc2UsIHN0cnVjdCB0dXBsZSAqb2xkX3R1cGxlLDxicj4mZ3Q7ICZndDsmbmJzcDsmbmJzcDsq IGJ5IGFsbCBpdCdzIG11bHRpa2V5IGluZGV4ZXMuPGJyPiZndDsgJmd0OyZuYnNwOyZuYnNwOyov PGJyPiZndDsgJmd0OyZuYnNwO3N0YXRpYyBpbnQ8YnI+Jmd0OyAmZ3Q7LW1lbXR4X3RyZWVfaW5k ZXhfcmVwbGFjZV9tdWx0aWtleV9vbmUoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKmluZGV4LDxi cj4mZ3Q7ICZndDsrbWVtdHhfdHJlZV9pbmRleF9yZXBsYWNlX211bHRpa2V5X29uZShzdHJ1Y3Qg bWVtdHhfdHJlZV9pbmRleCZsdDsxJmd0OyAqaW5kZXgsPGJyPiZndDsgJmd0OyZuYnNwOyBzdHJ1 Y3QgdHVwbGUgKm9sZF90dXBsZSwgc3RydWN0IHR1cGxlICpuZXdfdHVwbGUsPGJyPiZndDsgJmd0 OyZuYnNwOyBlbnVtIGR1cF9yZXBsYWNlX21vZGUgbW9kZSwgaGludF90IGhpbnQsPGJyPiZndDsg Jmd0Oy0gc3RydWN0IG1lbXR4X3RyZWVfZGF0YSAqcmVwbGFjZWRfZGF0YSw8YnI+Jmd0OyAmZ3Q7 KyBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhJmx0OzEmZ3Q7ICpyZXBsYWNlZF9kYXRhLDxicj4mZ3Q7 ICZndDsmbmJzcDsgYm9vbCAqaXNfbXVsdGlrZXlfY29uZmxpY3QpPGJyPiZndDsgJmd0OyZuYnNw O3s8YnI+Jmd0OyAmZ3Q7LSBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhIG5ld19kYXRhLCBkdXBfZGF0 YTs8YnI+Jmd0OyAmZ3Q7KyBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhJmx0OzEmZ3Q7IG5ld19kYXRh LCBkdXBfZGF0YTs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IG5ld19kYXRhLnR1cGxlID0gbmV3X3R1cGxl Ozxicj4mZ3Q7ICZndDsmbmJzcDsgbmV3X2RhdGEuaGludCA9IGhpbnQ7PGJyPiZndDsgJmd0OyZu YnNwOyBkdXBfZGF0YS50dXBsZSA9IE5VTEw7PGJyPiZndDsgJmd0O0BAIC03MjAsMTEgKzg1Mywx MSBAQCBtZW10eF90cmVlX2luZGV4X3JlcGxhY2VfbXVsdGlrZXlfb25lKHN0cnVjdCBtZW10eF90 cmVlX2luZGV4ICppbmRleCw8YnI+Jmd0OyAmZ3Q7Jm5ic3A7Jm5ic3A7KiBkZWxldGUgb3BlcmF0 aW9uIGlzIGZhdWx0LXRvbGVyYW50Ljxicj4mZ3Q7ICZndDsmbmJzcDsmbmJzcDsqLzxicj4mZ3Q7 ICZndDsmbmJzcDtzdGF0aWMgdm9pZDxicj4mZ3Q7ICZndDstbWVtdHhfdHJlZV9pbmRleF9yZXBs YWNlX211bHRpa2V5X3JvbGxiYWNrKHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICppbmRleCw8YnI+ Jmd0OyAmZ3Q7K21lbXR4X3RyZWVfaW5kZXhfcmVwbGFjZV9tdWx0aWtleV9yb2xsYmFjayhzdHJ1 Y3QgbWVtdHhfdHJlZV9pbmRleCZsdDsxJmd0OyAqaW5kZXgsPGJyPiZndDsgJmd0OyZuYnNwOyBz dHJ1Y3QgdHVwbGUgKm5ld190dXBsZSwgc3RydWN0IHR1cGxlICpyZXBsYWNlZF90dXBsZSw8YnI+ Jmd0OyAmZ3Q7Jm5ic3A7IGludCBlcnJfbXVsdGlrZXlfaWR4KTxicj4mZ3Q7ICZndDsmbmJzcDt7 PGJyPiZndDsgJmd0Oy0gc3RydWN0IG1lbXR4X3RyZWVfZGF0YSBkYXRhOzxicj4mZ3Q7ICZndDsr IHN0cnVjdCBtZW10eF90cmVlX2RhdGEmbHQ7MSZndDsgZGF0YTs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7 IGlmIChyZXBsYWNlZF90dXBsZSAhPSBOVUxMKSB7PGJyPiZndDsgJmd0OyZuYnNwOyAvKiBSZXN0 b3JlIHJlcGxhY2VkIHR1cGxlIGluZGV4IG9jY3VycmVuY2VzLiAqLzxicj4mZ3Q7ICZndDsmbmJz cDsgc3RydWN0IGtleV9kZWYgKmNtcF9kZWYgPSBtZW10eF90cmVlX2NtcF9kZWYoJmFtcDtpbmRl eC0mZ3Q7dHJlZSk7PGJyPiZndDsgJmd0O0BAIC03OTgsNyArOTMxLDcgQEAgbWVtdHhfdHJlZV9p bmRleF9yZXBsYWNlX211bHRpa2V5KHN0cnVjdCBpbmRleCAqYmFzZSwgc3RydWN0IHR1cGxlICpv bGRfdHVwbGUsPGJyPiZndDsgJmd0OyZuYnNwOyBzdHJ1Y3QgdHVwbGUgKm5ld190dXBsZSwgZW51 bSBkdXBfcmVwbGFjZV9tb2RlIG1vZGUsPGJyPiZndDsgJmd0OyZuYnNwOyBzdHJ1Y3QgdHVwbGUg KipyZXN1bHQpPGJyPiZndDsgJmd0OyZuYnNwO3s8YnI+Jmd0OyAmZ3Q7LSBzdHJ1Y3QgbWVtdHhf dHJlZV9pbmRleCAqaW5kZXggPSAoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKiliYXNlOzxicj4m Z3Q7ICZndDsrIHN0cnVjdCBtZW10eF90cmVlX2luZGV4Jmx0OzEmZ3Q7ICppbmRleCA9IChzdHJ1 Y3QgbWVtdHhfdHJlZV9pbmRleCZsdDsxJmd0OyAqKWJhc2U7PGJyPiZndDsgJmd0OyZuYnNwOyBz dHJ1Y3Qga2V5X2RlZiAqY21wX2RlZiA9IG1lbXR4X3RyZWVfY21wX2RlZigmYW1wO2luZGV4LSZn dDt0cmVlKTs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7ICpyZXN1bHQgPSBOVUxMOzxicj4mZ3Q7ICZndDsm bmJzcDsgaWYgKG5ld190dXBsZSAhPSBOVUxMKSB7PGJyPiZndDsgJmd0O0BAIC04MDgsNyArOTQx LDcgQEAgbWVtdHhfdHJlZV9pbmRleF9yZXBsYWNlX211bHRpa2V5KHN0cnVjdCBpbmRleCAqYmFz ZSwgc3RydWN0IHR1cGxlICpvbGRfdHVwbGUsPGJyPiZndDsgJmd0OyZuYnNwOyBmb3IgKDsgKHVp bnQzMl90KSBtdWx0aWtleV9pZHggJmx0OyBtdWx0aWtleV9jb3VudDs8YnI+Jmd0OyAmZ3Q7Jm5i c3A7IG11bHRpa2V5X2lkeCsrKSB7PGJyPiZndDsgJmd0OyZuYnNwOyBib29sIGlzX211bHRpa2V5 X2NvbmZsaWN0Ozxicj4mZ3Q7ICZndDstIHN0cnVjdCBtZW10eF90cmVlX2RhdGEgcmVwbGFjZWRf ZGF0YTs8YnI+Jmd0OyAmZ3Q7KyBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhJmx0OzEmZ3Q7IHJlcGxh Y2VkX2RhdGE7PGJyPiZndDsgJmd0OyZuYnNwOyBlcnIgPSBtZW10eF90cmVlX2luZGV4X3JlcGxh Y2VfbXVsdGlrZXlfb25lKGluZGV4LDxicj4mZ3Q7ICZndDsmbmJzcDsgb2xkX3R1cGxlLCBuZXdf dHVwbGUsIG1vZGUsPGJyPiZndDsgJmd0OyZuYnNwOyBtdWx0aWtleV9pZHgsICZhbXA7cmVwbGFj ZWRfZGF0YSw8YnI+Jmd0OyAmZ3Q7QEAgLTgzMyw3ICs5NjYsNyBAQCBtZW10eF90cmVlX2luZGV4 X3JlcGxhY2VfbXVsdGlrZXkoc3RydWN0IGluZGV4ICpiYXNlLCBzdHJ1Y3QgdHVwbGUgKm9sZF90 dXBsZSw8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IH08YnI+Jmd0OyAmZ3Q7Jm5ic3A7IH08YnI+Jmd0OyAm Z3Q7Jm5ic3A7IGlmIChvbGRfdHVwbGUgIT0gTlVMTCkgezxicj4mZ3Q7ICZndDstIHN0cnVjdCBt ZW10eF90cmVlX2RhdGEgZGF0YTs8YnI+Jmd0OyAmZ3Q7KyBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRh Jmx0OzEmZ3Q7IGRhdGE7PGJyPiZndDsgJmd0OyZuYnNwOyBkYXRhLnR1cGxlID0gb2xkX3R1cGxl Ozxicj4mZ3Q7ICZndDsmbmJzcDsgdWludDMyX3QgbXVsdGlrZXlfY291bnQgPTxicj4mZ3Q7ICZn dDsmbmJzcDsgdHVwbGVfbXVsdGlrZXlfY291bnQob2xkX3R1cGxlLCBjbXBfZGVmKTs8YnI+Jmd0 OyAmZ3Q7QEAgLTg2NSw3ICs5OTgsNyBAQCBzdHJ1Y3QgZnVuY19rZXlfdW5kbyB7PGJyPiZndDsg Jmd0OyZuYnNwOyAvKiogQSBsaW5rIHRvIG9yZ2FuaXplIGVudHJpZXMgaW4gbGlzdC4gKi88YnI+ Jmd0OyAmZ3Q7Jm5ic3A7IHN0cnVjdCBybGlzdCBsaW5rOzxicj4mZ3Q7ICZndDsmbmJzcDsgLyoq IEFuIGluc2VydGVkIHJlY29yZCBjb3B5LiAqLzxicj4mZ3Q7ICZndDstIHN0cnVjdCBtZW10eF90 cmVlX2RhdGEga2V5Ozxicj4mZ3Q7ICZndDsrIHN0cnVjdCBtZW10eF90cmVlX2RhdGEmbHQ7MSZn dDsga2V5Ozxicj4mZ3Q7ICZndDsmbmJzcDt9Ozxicj4mZ3Q7ICZndDsmbmJzcDs8YnI+Jmd0OyAm Z3Q7Jm5ic3A7LyoqIEFsbG9jYXRlIGEgbmV3IGZ1bmNfa2V5X3VuZG8gb24gZ2l2ZW4gcmVnaW9u LiAqLzxicj4mZ3Q7ICZndDtAQCAtODg4LDcgKzEwMjEsNyBAQCBmdW5jX2tleV91bmRvX25ldyhz dHJ1Y3QgcmVnaW9uICpyZWdpb24pPGJyPiZndDsgJmd0OyZuYnNwOyZuYnNwOyogcmV0dXJuIGEg Z2l2ZW4gaW5kZXggb2JqZWN0IGluIGl0J3Mgb3JpZ2luYWwgc3RhdGUuPGJyPiZndDsgJmd0OyZu YnNwOyZuYnNwOyovPGJyPiZndDsgJmd0OyZuYnNwO3N0YXRpYyB2b2lkPGJyPiZndDsgJmd0Oy1t ZW10eF90cmVlX2Z1bmNfaW5kZXhfcmVwbGFjZV9yb2xsYmFjayhzdHJ1Y3QgbWVtdHhfdHJlZV9p bmRleCAqaW5kZXgsPGJyPiZndDsgJmd0OyttZW10eF90cmVlX2Z1bmNfaW5kZXhfcmVwbGFjZV9y b2xsYmFjayhzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCZsdDsxJmd0OyAqaW5kZXgsPGJyPiZndDsg Jmd0OyZuYnNwOyBzdHJ1Y3Qgcmxpc3QgKm9sZF9rZXlzLDxicj4mZ3Q7ICZndDsmbmJzcDsgc3Ry dWN0IHJsaXN0ICpuZXdfa2V5cyk8YnI+Jmd0OyAmZ3Q7Jm5ic3A7ezxicj4mZ3Q7ICZndDtAQCAt OTE5LDcgKzEwNTIsNyBAQCBtZW10eF90cmVlX2Z1bmNfaW5kZXhfcmVwbGFjZShzdHJ1Y3QgaW5k ZXggKmJhc2UsIHN0cnVjdCB0dXBsZSAqb2xkX3R1cGxlLDxicj4mZ3Q7ICZndDsmbmJzcDsgc3Ry dWN0IHR1cGxlICpuZXdfdHVwbGUsIGVudW0gZHVwX3JlcGxhY2VfbW9kZSBtb2RlLDxicj4mZ3Q7 ICZndDsmbmJzcDsgc3RydWN0IHR1cGxlICoqcmVzdWx0KTxicj4mZ3Q7ICZndDsmbmJzcDt7PGJy PiZndDsgJmd0Oy0gc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKmluZGV4ID0gKHN0cnVjdCBtZW10 eF90cmVlX2luZGV4ICopYmFzZTs8YnI+Jmd0OyAmZ3Q7KyBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRl eCZsdDsxJmd0OyAqaW5kZXggPSAoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXgmbHQ7MSZndDsgKili YXNlOzxicj4mZ3Q7ICZndDsmbmJzcDsgc3RydWN0IGluZGV4X2RlZiAqaW5kZXhfZGVmID0gaW5k ZXgtJmd0O2Jhc2UuZGVmOzxicj4mZ3Q7ICZndDsmbmJzcDsgYXNzZXJ0KGluZGV4X2RlZi0mZ3Q7 a2V5X2RlZi0mZ3Q7Zm9yX2Z1bmNfaW5kZXgpOzxicj4mZ3Q7ICZndDsmbmJzcDs8YnI+Jmd0OyAm Z3Q7QEAgLTk1Miw3ICsxMDg1LDcgQEAgbWVtdHhfdHJlZV9mdW5jX2luZGV4X3JlcGxhY2Uoc3Ry dWN0IGluZGV4ICpiYXNlLCBzdHJ1Y3QgdHVwbGUgKm9sZF90dXBsZSw8YnI+Jmd0OyAmZ3Q7Jm5i c3A7IHVuZG8tJmd0O2tleS5oaW50ID0gKGhpbnRfdClrZXk7PGJyPiZndDsgJmd0OyZuYnNwOyBy bGlzdF9hZGQoJmFtcDtuZXdfa2V5cywgJmFtcDt1bmRvLSZndDtsaW5rKTs8YnI+Jmd0OyAmZ3Q7 Jm5ic3A7IGJvb2wgaXNfbXVsdGlrZXlfY29uZmxpY3Q7PGJyPiZndDsgJmd0Oy0gc3RydWN0IG1l bXR4X3RyZWVfZGF0YSBvbGRfZGF0YTs8YnI+Jmd0OyAmZ3Q7KyBzdHJ1Y3QgbWVtdHhfdHJlZV9k YXRhJmx0OzEmZ3Q7IG9sZF9kYXRhOzxicj4mZ3Q7ICZndDsmbmJzcDsgb2xkX2RhdGEudHVwbGUg PSBOVUxMOzxicj4mZ3Q7ICZndDsmbmJzcDsgZXJyID0gbWVtdHhfdHJlZV9pbmRleF9yZXBsYWNl X211bHRpa2V5X29uZShpbmRleCw8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IG9sZF90dXBsZSwgbmV3X3R1 cGxlLDxicj4mZ3Q7ICZndDtAQCAtMTAxNSw3ICsxMTQ4LDcgQEAgbWVtdHhfdHJlZV9mdW5jX2lu ZGV4X3JlcGxhY2Uoc3RydWN0IGluZGV4ICpiYXNlLCBzdHJ1Y3QgdHVwbGUgKm9sZF90dXBsZSw8 YnI+Jmd0OyAmZ3Q7Jm5ic3A7IGlmIChrZXlfbGlzdF9pdGVyYXRvcl9jcmVhdGUoJmFtcDtpdCwg b2xkX3R1cGxlLCBpbmRleF9kZWYsIGZhbHNlLDxicj4mZ3Q7ICZndDsmbmJzcDsgZnVuY19pbmRl eF9rZXlfZHVtbXlfYWxsb2MpICE9IDApPGJyPiZndDsgJmd0OyZuYnNwOyBnb3RvIGVuZDs8YnI+ Jmd0OyAmZ3Q7LSBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhIGRhdGEsIGRlbGV0ZWRfZGF0YTs8YnI+ Jmd0OyAmZ3Q7KyBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhJmx0OzEmZ3Q7IGRhdGEsIGRlbGV0ZWRf ZGF0YTs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IGRhdGEudHVwbGUgPSBvbGRfdHVwbGU7PGJyPiZndDsg Jmd0OyZuYnNwOyBjb25zdCBjaGFyICprZXk7PGJyPiZndDsgJmd0OyZuYnNwOyB3aGlsZSAoa2V5 X2xpc3RfaXRlcmF0b3JfbmV4dCgmYW1wO2l0LCAmYW1wO2tleSkgPT0gMCAmYW1wOyZhbXA7IGtl eSAhPSBOVUxMKSB7PGJyPiZndDsgJmd0O0BAIC0xMDQwLDExICsxMTczLDEzIEBAIGVuZDo8YnI+ Jmd0OyAmZ3Q7Jm5ic3A7IHJldHVybiByYzs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7fTxicj4mZ3Q7ICZn dDsmbmJzcDs8YnI+Jmd0OyAmZ3Q7K3RlbXBsYXRlICZsdDtpbnQgVVNFX0hJTlQmZ3Q7PGJyPiZn dDsgJmd0OyZuYnNwO3N0YXRpYyBzdHJ1Y3QgaXRlcmF0b3IgKjxicj4mZ3Q7ICZndDsmbmJzcDtt ZW10eF90cmVlX2luZGV4X2NyZWF0ZV9pdGVyYXRvcihzdHJ1Y3QgaW5kZXggKmJhc2UsIGVudW0g aXRlcmF0b3JfdHlwZSB0eXBlLDxicj4mZ3Q7ICZndDsmbmJzcDsgY29uc3QgY2hhciAqa2V5LCB1 aW50MzJfdCBwYXJ0X2NvdW50KTxicj4mZ3Q7ICZndDsmbmJzcDt7PGJyPiZndDsgJmd0Oy0gc3Ry dWN0IG1lbXR4X3RyZWVfaW5kZXggKmluZGV4ID0gKHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICop YmFzZTs8YnI+Jmd0OyAmZ3Q7KyBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCZsdDtVU0VfSElOVCZn dDsgKmluZGV4ID08YnI+Jmd0OyAmZ3Q7KyAoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXgmbHQ7VVNF X0hJTlQmZ3Q7ICopYmFzZTs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IHN0cnVjdCBtZW10eF9lbmdpbmUg Km1lbXR4ID0gKHN0cnVjdCBtZW10eF9lbmdpbmUgKiliYXNlLSZndDtlbmdpbmU7PGJyPiZndDsg Jmd0OyZuYnNwOyBzdHJ1Y3Qga2V5X2RlZiAqY21wX2RlZiA9IG1lbXR4X3RyZWVfY21wX2RlZigm YW1wO2luZGV4LSZndDt0cmVlKTs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7PGJyPiZndDsgJmd0O0BAIC0x MDY0LDQyICsxMTk5LDQ3IEBAIG1lbXR4X3RyZWVfaW5kZXhfY3JlYXRlX2l0ZXJhdG9yKHN0cnVj dCBpbmRleCAqYmFzZSwgZW51bSBpdGVyYXRvcl90eXBlIHR5cGUsPGJyPiZndDsgJmd0OyZuYnNw OyBrZXkgPSBOVUxMOzxicj4mZ3Q7ICZndDsmbmJzcDsgfTxicj4mZ3Q7ICZndDsmbmJzcDs8YnI+ Jmd0OyAmZ3Q7LSBzdHJ1Y3QgdHJlZV9pdGVyYXRvciAqaXQgPSAoc3RydWN0IHRyZWVfaXRlcmF0 b3IgKik8YnI+Jmd0OyAmZ3Q7KyBzdHJ1Y3QgdHJlZV9pdGVyYXRvciZsdDtVU0VfSElOVCZndDsg Kml0ID0gKHN0cnVjdCB0cmVlX2l0ZXJhdG9yJmx0O1VTRV9ISU5UJmd0OyAqKTxicj4mZ3Q7ICZn dDsmbmJzcDsgbWVtcG9vbF9hbGxvYygmYW1wO21lbXR4LSZndDtpdGVyYXRvcl9wb29sKTs8YnI+ Jmd0OyAmZ3Q7Jm5ic3A7IGlmIChpdCA9PSBOVUxMKSB7PGJyPiZndDsgJmd0Oy0gZGlhZ19zZXQo T3V0T2ZNZW1vcnksIHNpemVvZihzdHJ1Y3QgdHJlZV9pdGVyYXRvciksPGJyPiZndDsgJmd0Oysg ZGlhZ19zZXQoT3V0T2ZNZW1vcnksIHNpemVvZihzdHJ1Y3QgdHJlZV9pdGVyYXRvciZsdDtVU0Vf SElOVCZndDspLDxicj4mZ3Q7ICZndDsmbmJzcDsgIm1lbXR4X3RyZWVfaW5kZXgiLCAiaXRlcmF0 b3IiKTs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IHJldHVybiBOVUxMOzxicj4mZ3Q7ICZndDsmbmJzcDsg fTxicj4mZ3Q7ICZndDsmbmJzcDsgaXRlcmF0b3JfY3JlYXRlKCZhbXA7aXQtJmd0O2Jhc2UsIGJh c2UpOzxicj4mZ3Q7ICZndDsmbmJzcDsgaXQtJmd0O3Bvb2wgPSAmYW1wO21lbXR4LSZndDtpdGVy YXRvcl9wb29sOzxicj4mZ3Q7ICZndDstIGl0LSZndDtiYXNlLm5leHQgPSB0cmVlX2l0ZXJhdG9y X3N0YXJ0Ozxicj4mZ3Q7ICZndDstIGl0LSZndDtiYXNlLmZyZWUgPSB0cmVlX2l0ZXJhdG9yX2Zy ZWU7PGJyPiZndDsgJmd0OysgaXQtJmd0O2Jhc2UubmV4dCA9IHRyZWVfaXRlcmF0b3Jfc3RhcnQm bHQ7VVNFX0hJTlQmZ3Q7Ozxicj4mZ3Q7ICZndDsrIGl0LSZndDtiYXNlLmZyZWUgPSB0cmVlX2l0 ZXJhdG9yX2ZyZWUmbHQ7VVNFX0hJTlQmZ3Q7Ozxicj4mZ3Q7ICZndDsmbmJzcDsgaXQtJmd0O3R5 cGUgPSB0eXBlOzxicj4mZ3Q7ICZndDsmbmJzcDsgaXQtJmd0O2tleV9kYXRhLmtleSA9IGtleTs8 YnI+Jmd0OyAmZ3Q7Jm5ic3A7IGl0LSZndDtrZXlfZGF0YS5wYXJ0X2NvdW50ID0gcGFydF9jb3Vu dDs8YnI+Jmd0OyAmZ3Q7LSBpdC0mZ3Q7a2V5X2RhdGEuaGludCA9IGtleV9oaW50KGtleSwgcGFy dF9jb3VudCwgY21wX2RlZik7PGJyPiZndDsgJmd0Oy0gaXQtJmd0O3RyZWVfaXRlcmF0b3IgPSBt ZW10eF90cmVlX2ludmFsaWRfaXRlcmF0b3IoKTs8YnI+Jmd0OyAmZ3Q7KyBpZiAoVVNFX0hJTlQp PGJyPiZndDsgJmd0OysgaXQtJmd0O2tleV9kYXRhLnNldF9oaW50KGtleV9oaW50KGtleSwgcGFy dF9jb3VudCwgY21wX2RlZikpOzxicj4mZ3Q7ICZndDsrIGludmFsaWRhdGVfdHJlZV9pdGVyYXRv cigmYW1wO2l0LSZndDt0cmVlX2l0ZXJhdG9yKTs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IGl0LSZndDtj dXJyZW50LnR1cGxlID0gTlVMTDs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IHJldHVybiAoc3RydWN0IGl0 ZXJhdG9yICopaXQ7PGJyPiZndDsgJmd0OyZuYnNwO308YnI+Jmd0OyAmZ3Q7Jm5ic3A7PGJyPiZn dDsgJmd0Oyt0ZW1wbGF0ZSAmbHQ7aW50IFVTRV9ISU5UJmd0Ozxicj4mZ3Q7ICZndDsmbmJzcDtz dGF0aWMgdm9pZDxicj4mZ3Q7ICZndDsmbmJzcDttZW10eF90cmVlX2luZGV4X2JlZ2luX2J1aWxk KHN0cnVjdCBpbmRleCAqYmFzZSk8YnI+Jmd0OyAmZ3Q7Jm5ic3A7ezxicj4mZ3Q7ICZndDstIHN0 cnVjdCBtZW10eF90cmVlX2luZGV4ICppbmRleCA9IChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAq KWJhc2U7PGJyPiZndDsgJmd0Oysgc3RydWN0IG1lbXR4X3RyZWVfaW5kZXgmbHQ7VVNFX0hJTlQm Z3Q7ICppbmRleCA9PGJyPiZndDsgJmd0OysgKHN0cnVjdCBtZW10eF90cmVlX2luZGV4Jmx0O1VT RV9ISU5UJmd0OyAqKWJhc2U7PGJyPiZndDsgJmd0OyZuYnNwOyBhc3NlcnQobWVtdHhfdHJlZV9z aXplKCZhbXA7aW5kZXgtJmd0O3RyZWUpID09IDApOzxicj4mZ3Q7ICZndDsmbmJzcDsgKHZvaWQp aW5kZXg7PGJyPiZndDsgJmd0OyZuYnNwO308YnI+Jmd0OyAmZ3Q7Jm5ic3A7PGJyPiZndDsgJmd0 Oyt0ZW1wbGF0ZSAmbHQ7aW50IFVTRV9ISU5UJmd0Ozxicj4mZ3Q7ICZndDsmbmJzcDtzdGF0aWMg aW50PGJyPiZndDsgJmd0OyZuYnNwO21lbXR4X3RyZWVfaW5kZXhfcmVzZXJ2ZShzdHJ1Y3QgaW5k ZXggKmJhc2UsIHVpbnQzMl90IHNpemVfaGludCk8YnI+Jmd0OyAmZ3Q7Jm5ic3A7ezxicj4mZ3Q7 ICZndDstIHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICppbmRleCA9IChzdHJ1Y3QgbWVtdHhfdHJl ZV9pbmRleCAqKWJhc2U7PGJyPiZndDsgJmd0Oysgc3RydWN0IG1lbXR4X3RyZWVfaW5kZXgmbHQ7 VVNFX0hJTlQmZ3Q7ICppbmRleCA9PGJyPiZndDsgJmd0OysgKHN0cnVjdCBtZW10eF90cmVlX2lu ZGV4Jmx0O1VTRV9ISU5UJmd0OyAqKWJhc2U7PGJyPiZndDsgJmd0OyZuYnNwOyBpZiAoc2l6ZV9o aW50ICZsdDsgaW5kZXgtJmd0O2J1aWxkX2FycmF5X2FsbG9jX3NpemUpPGJyPiZndDsgJmd0OyZu YnNwOyByZXR1cm4gMDs8YnI+Jmd0OyAmZ3Q7LSBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhICp0bXAg PTxicj4mZ3Q7ICZndDstIChzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhICopPGJyPiZndDsgJmd0Oysg c3RydWN0IG1lbXR4X3RyZWVfZGF0YSZsdDtVU0VfSElOVCZndDsgKnRtcCA9PGJyPiZndDsgJmd0 OysgKHN0cnVjdCBtZW10eF90cmVlX2RhdGEmbHQ7VVNFX0hJTlQmZ3Q7ICopPGJyPiZndDsgJmd0 OyZuYnNwOyByZWFsbG9jKGluZGV4LSZndDtidWlsZF9hcnJheSwgc2l6ZV9oaW50ICogc2l6ZW9m KCp0bXApKTs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IGlmICh0bXAgPT0gTlVMTCkgezxicj4mZ3Q7ICZn dDsmbmJzcDsgZGlhZ19zZXQoT3V0T2ZNZW1vcnksIHNpemVfaGludCAqIHNpemVvZigqdG1wKSw8 YnI+Jmd0OyAmZ3Q7QEAgLTExMTEsMTQgKzEyNTEsMTUgQEAgbWVtdHhfdHJlZV9pbmRleF9yZXNl cnZlKHN0cnVjdCBpbmRleCAqYmFzZSwgdWludDMyX3Qgc2l6ZV9oaW50KTxicj4mZ3Q7ICZndDsm bmJzcDsgcmV0dXJuIDA7PGJyPiZndDsgJmd0OyZuYnNwO308YnI+Jmd0OyAmZ3Q7Jm5ic3A7PGJy PiZndDsgJmd0Oyt0ZW1wbGF0ZSAmbHQ7aW50IFVTRV9ISU5UJmd0Ozxicj4mZ3Q7ICZndDsmbmJz cDsvKiogSW5pdGlhbGl6ZSB0aGUgbmV4dCBlbGVtZW50IG9mIHRoZSBpbmRleCBidWlsZF9hcnJh eS4gKi88YnI+Jmd0OyAmZ3Q7Jm5ic3A7c3RhdGljIGludDxicj4mZ3Q7ICZndDstbWVtdHhfdHJl ZV9pbmRleF9idWlsZF9hcnJheV9hcHBlbmQoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKmluZGV4 LDxicj4mZ3Q7ICZndDsrbWVtdHhfdHJlZV9pbmRleF9idWlsZF9hcnJheV9hcHBlbmQoc3RydWN0 IG1lbXR4X3RyZWVfaW5kZXgmbHQ7VVNFX0hJTlQmZ3Q7ICppbmRleCw8YnI+Jmd0OyAmZ3Q7Jm5i c3A7IHN0cnVjdCB0dXBsZSAqdHVwbGUsIGhpbnRfdCBoaW50KTxicj4mZ3Q7ICZndDsmbmJzcDt7 PGJyPiZndDsgJmd0OyZuYnNwOyBpZiAoaW5kZXgtJmd0O2J1aWxkX2FycmF5ID09IE5VTEwpIHs8 YnI+Jmd0OyAmZ3Q7Jm5ic3A7IGluZGV4LSZndDtidWlsZF9hcnJheSA9PGJyPiZndDsgJmd0Oy0g KHN0cnVjdCBtZW10eF90cmVlX2RhdGEgKiltYWxsb2MoTUVNVFhfRVhURU5UX1NJWkUpOzxicj4m Z3Q7ICZndDsrIChzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhJmx0O1VTRV9ISU5UJmd0OyAqKW1hbGxv YyhNRU1UWF9FWFRFTlRfU0laRSk7PGJyPiZndDsgJmd0OyZuYnNwOyBpZiAoaW5kZXgtJmd0O2J1 aWxkX2FycmF5ID09IE5VTEwpIHs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IGRpYWdfc2V0KE91dE9mTWVt b3J5LCBNRU1UWF9FWFRFTlRfU0laRSw8YnI+Jmd0OyAmZ3Q7Jm5ic3A7ICJtZW10eF90cmVlX2lu ZGV4IiwgImJ1aWxkX25leHQiKTs8YnI+Jmd0OyAmZ3Q7QEAgLTExMzEsOCArMTI3Miw4IEBAIG1l bXR4X3RyZWVfaW5kZXhfYnVpbGRfYXJyYXlfYXBwZW5kKHN0cnVjdCBtZW10eF90cmVlX2luZGV4 ICppbmRleCw8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IGlmIChpbmRleC0mZ3Q7YnVpbGRfYXJyYXlfc2l6 ZSA9PSBpbmRleC0mZ3Q7YnVpbGRfYXJyYXlfYWxsb2Nfc2l6ZSkgezxicj4mZ3Q7ICZndDsmbmJz cDsgaW5kZXgtJmd0O2J1aWxkX2FycmF5X2FsbG9jX3NpemUgPSBpbmRleC0mZ3Q7YnVpbGRfYXJy YXlfYWxsb2Nfc2l6ZSArPGJyPiZndDsgJmd0OyZuYnNwOyBESVZfUk9VTkRfVVAoaW5kZXgtJmd0 O2J1aWxkX2FycmF5X2FsbG9jX3NpemUsIDIpOzxicj4mZ3Q7ICZndDstIHN0cnVjdCBtZW10eF90 cmVlX2RhdGEgKnRtcCA9PGJyPiZndDsgJmd0Oy0gKHN0cnVjdCBtZW10eF90cmVlX2RhdGEgKily ZWFsbG9jKGluZGV4LSZndDtidWlsZF9hcnJheSw8YnI+Jmd0OyAmZ3Q7KyBzdHJ1Y3QgbWVtdHhf dHJlZV9kYXRhJmx0O1VTRV9ISU5UJmd0OyAqdG1wID08YnI+Jmd0OyAmZ3Q7KyAoc3RydWN0IG1l bXR4X3RyZWVfZGF0YSZsdDtVU0VfSElOVCZndDsgKilyZWFsbG9jKGluZGV4LSZndDtidWlsZF9h cnJheSw8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IGluZGV4LSZndDtidWlsZF9hcnJheV9hbGxvY19zaXpl ICogc2l6ZW9mKCp0bXApKTs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IGlmICh0bXAgPT0gTlVMTCkgezxi cj4mZ3Q7ICZndDsmbmJzcDsgZGlhZ19zZXQoT3V0T2ZNZW1vcnksIGluZGV4LSZndDtidWlsZF9h cnJheV9hbGxvY19zaXplICo8YnI+Jmd0OyAmZ3Q7QEAgLTExNDEsMTcgKzEyODIsMjAgQEAgbWVt dHhfdHJlZV9pbmRleF9idWlsZF9hcnJheV9hcHBlbmQoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXgg KmluZGV4LDxicj4mZ3Q7ICZndDsmbmJzcDsgfTxicj4mZ3Q7ICZndDsmbmJzcDsgaW5kZXgtJmd0 O2J1aWxkX2FycmF5ID0gdG1wOzxicj4mZ3Q7ICZndDsmbmJzcDsgfTxicj4mZ3Q7ICZndDstIHN0 cnVjdCBtZW10eF90cmVlX2RhdGEgKmVsZW0gPTxicj4mZ3Q7ICZndDsrIHN0cnVjdCBtZW10eF90 cmVlX2RhdGEmbHQ7VVNFX0hJTlQmZ3Q7ICplbGVtID08YnI+Jmd0OyAmZ3Q7Jm5ic3A7ICZhbXA7 aW5kZXgtJmd0O2J1aWxkX2FycmF5W2luZGV4LSZndDtidWlsZF9hcnJheV9zaXplKytdOzxicj4m Z3Q7ICZndDsmbmJzcDsgZWxlbS0mZ3Q7dHVwbGUgPSB0dXBsZTs8YnI+Jmd0OyAmZ3Q7LSBlbGVt LSZndDtoaW50ID0gaGludDs8YnI+Jmd0OyAmZ3Q7KyBpZiAoVVNFX0hJTlQpPGJyPiZndDsgJmd0 OysgZWxlbS0mZ3Q7c2V0X2hpbnQoaGludCk7PGJyPiZndDsgJmd0OyZuYnNwOyByZXR1cm4gMDs8 YnI+Jmd0OyAmZ3Q7Jm5ic3A7fTxicj4mZ3Q7ICZndDsmbmJzcDs8YnI+Jmd0OyAmZ3Q7K3RlbXBs YXRlICZsdDtpbnQgVVNFX0hJTlQmZ3Q7PGJyPiZndDsgJmd0OyZuYnNwO3N0YXRpYyBpbnQ8YnI+ Jmd0OyAmZ3Q7Jm5ic3A7bWVtdHhfdHJlZV9pbmRleF9idWlsZF9uZXh0KHN0cnVjdCBpbmRleCAq YmFzZSwgc3RydWN0IHR1cGxlICp0dXBsZSk8YnI+Jmd0OyAmZ3Q7Jm5ic3A7ezxicj4mZ3Q7ICZn dDstIHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICppbmRleCA9IChzdHJ1Y3QgbWVtdHhfdHJlZV9p bmRleCAqKWJhc2U7PGJyPiZndDsgJmd0Oysgc3RydWN0IG1lbXR4X3RyZWVfaW5kZXgmbHQ7VVNF X0hJTlQmZ3Q7ICppbmRleCA9PGJyPiZndDsgJmd0OysgKHN0cnVjdCBtZW10eF90cmVlX2luZGV4 Jmx0O1VTRV9ISU5UJmd0OyAqKWJhc2U7PGJyPiZndDsgJmd0OyZuYnNwOyBzdHJ1Y3Qga2V5X2Rl ZiAqY21wX2RlZiA9IG1lbXR4X3RyZWVfY21wX2RlZigmYW1wO2luZGV4LSZndDt0cmVlKTs8YnI+ Jmd0OyAmZ3Q7Jm5ic3A7IHJldHVybiBtZW10eF90cmVlX2luZGV4X2J1aWxkX2FycmF5X2FwcGVu ZChpbmRleCwgdHVwbGUsPGJyPiZndDsgJmd0OyZuYnNwOyB0dXBsZV9oaW50KHR1cGxlLCBjbXBf ZGVmKSk7PGJyPiZndDsgJmd0O0BAIC0xMTYwLDcgKzEzMDQsNyBAQCBtZW10eF90cmVlX2luZGV4 X2J1aWxkX25leHQoc3RydWN0IGluZGV4ICpiYXNlLCBzdHJ1Y3QgdHVwbGUgKnR1cGxlKTxicj4m Z3Q7ICZndDsmbmJzcDtzdGF0aWMgaW50PGJyPiZndDsgJmd0OyZuYnNwO21lbXR4X3RyZWVfaW5k ZXhfYnVpbGRfbmV4dF9tdWx0aWtleShzdHJ1Y3QgaW5kZXggKmJhc2UsIHN0cnVjdCB0dXBsZSAq dHVwbGUpPGJyPiZndDsgJmd0OyZuYnNwO3s8YnI+Jmd0OyAmZ3Q7LSBzdHJ1Y3QgbWVtdHhfdHJl ZV9pbmRleCAqaW5kZXggPSAoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKiliYXNlOzxicj4mZ3Q7 ICZndDsrIHN0cnVjdCBtZW10eF90cmVlX2luZGV4Jmx0OzEmZ3Q7ICppbmRleCA9IChzdHJ1Y3Qg bWVtdHhfdHJlZV9pbmRleCZsdDsxJmd0OyAqKWJhc2U7PGJyPiZndDsgJmd0OyZuYnNwOyBzdHJ1 Y3Qga2V5X2RlZiAqY21wX2RlZiA9IG1lbXR4X3RyZWVfY21wX2RlZigmYW1wO2luZGV4LSZndDt0 cmVlKTs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IHVpbnQzMl90IG11bHRpa2V5X2NvdW50ID0gdHVwbGVf bXVsdGlrZXlfY291bnQodHVwbGUsIGNtcF9kZWYpOzxicj4mZ3Q7ICZndDsmbmJzcDsgZm9yICh1 aW50MzJfdCBtdWx0aWtleV9pZHggPSAwOyBtdWx0aWtleV9pZHggJmx0OyBtdWx0aWtleV9jb3Vu dDs8YnI+Jmd0OyAmZ3Q7QEAgLTExNzUsNyArMTMxOSw3IEBAIG1lbXR4X3RyZWVfaW5kZXhfYnVp bGRfbmV4dF9tdWx0aWtleShzdHJ1Y3QgaW5kZXggKmJhc2UsIHN0cnVjdCB0dXBsZSAqdHVwbGUp PGJyPiZndDsgJmd0OyZuYnNwO3N0YXRpYyBpbnQ8YnI+Jmd0OyAmZ3Q7Jm5ic3A7bWVtdHhfdHJl ZV9mdW5jX2luZGV4X2J1aWxkX25leHQoc3RydWN0IGluZGV4ICpiYXNlLCBzdHJ1Y3QgdHVwbGUg KnR1cGxlKTxicj4mZ3Q7ICZndDsmbmJzcDt7PGJyPiZndDsgJmd0Oy0gc3RydWN0IG1lbXR4X3Ry ZWVfaW5kZXggKmluZGV4ID0gKHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICopYmFzZTs8YnI+Jmd0 OyAmZ3Q7KyBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCZsdDsxJmd0OyAqaW5kZXggPSAoc3RydWN0 IG1lbXR4X3RyZWVfaW5kZXgmbHQ7MSZndDsgKiliYXNlOzxicj4mZ3Q7ICZndDsmbmJzcDsgc3Ry dWN0IGluZGV4X2RlZiAqaW5kZXhfZGVmID0gaW5kZXgtJmd0O2Jhc2UuZGVmOzxicj4mZ3Q7ICZn dDsmbmJzcDsgYXNzZXJ0KGluZGV4X2RlZi0mZ3Q7a2V5X2RlZi0mZ3Q7Zm9yX2Z1bmNfaW5kZXgp Ozxicj4mZ3Q7ICZndDsmbmJzcDs8YnI+Jmd0OyAmZ3Q7QEAgLTEyMTEsOCArMTM1NSw5IEBAIGVy cm9yOjxicj4mZ3Q7ICZndDsmbmJzcDsmbmJzcDsqIG9mIGVxdWFsIHR1cGxlcyAoaW4gdGVybXMg b2YgaW5kZXgncyBjbXBfZGVmIGFuZCBoYXZlIHNhbWU8YnI+Jmd0OyAmZ3Q7Jm5ic3A7Jm5ic3A7 KiB0dXBsZSBwb2ludGVyKS4gVGhlIGJ1aWxkX2FycmF5IGlzIGV4cGVjdGVkIHRvIGJlIHNvcnRl ZC48YnI+Jmd0OyAmZ3Q7Jm5ic3A7Jm5ic3A7Ki88YnI+Jmd0OyAmZ3Q7K3RlbXBsYXRlICZsdDtp bnQgVVNFX0hJTlQmZ3Q7PGJyPiZndDsgJmd0OyZuYnNwO3N0YXRpYyB2b2lkPGJyPiZndDsgJmd0 Oy1tZW10eF90cmVlX2luZGV4X2J1aWxkX2FycmF5X2RlZHVwbGljYXRlKHN0cnVjdCBtZW10eF90 cmVlX2luZGV4ICppbmRleCw8YnI+Jmd0OyAmZ3Q7K21lbXR4X3RyZWVfaW5kZXhfYnVpbGRfYXJy YXlfZGVkdXBsaWNhdGUoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXgmbHQ7VVNFX0hJTlQmZ3Q7ICpp bmRleCw8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IHZvaWQgKCpkZXN0cm95KShzdHJ1Y3QgdHVwbGUgKnR1 cGxlLCBjb25zdCBjaGFyICpoaW50KSk8YnI+Jmd0OyAmZ3Q7Jm5ic3A7ezxicj4mZ3Q7ICZndDsm bmJzcDsgaWYgKGluZGV4LSZndDtidWlsZF9hcnJheV9zaXplID09IDApPGJyPiZndDsgJmd0O0BA IC0xMjQ2LDEzICsxMzkxLDE2IEBAIG1lbXR4X3RyZWVfaW5kZXhfYnVpbGRfYXJyYXlfZGVkdXBs aWNhdGUoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKmluZGV4LDxicj4mZ3Q7ICZndDsmbmJzcDsg aW5kZXgtJmd0O2J1aWxkX2FycmF5X3NpemUgPSB3X2lkeCArIDE7PGJyPiZndDsgJmd0OyZuYnNw O308YnI+Jmd0OyAmZ3Q7Jm5ic3A7PGJyPiZndDsgJmd0Oyt0ZW1wbGF0ZSAmbHQ7aW50IFVTRV9I SU5UJmd0Ozxicj4mZ3Q7ICZndDsmbmJzcDtzdGF0aWMgdm9pZDxicj4mZ3Q7ICZndDsmbmJzcDtt ZW10eF90cmVlX2luZGV4X2VuZF9idWlsZChzdHJ1Y3QgaW5kZXggKmJhc2UpPGJyPiZndDsgJmd0 OyZuYnNwO3s8YnI+Jmd0OyAmZ3Q7LSBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqaW5kZXggPSAo c3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKiliYXNlOzxicj4mZ3Q7ICZndDsrIHN0cnVjdCBtZW10 eF90cmVlX2luZGV4Jmx0O1VTRV9ISU5UJmd0OyAqaW5kZXggPTxicj4mZ3Q7ICZndDsrIChzdHJ1 Y3QgbWVtdHhfdHJlZV9pbmRleCZsdDtVU0VfSElOVCZndDsgKiliYXNlOzxicj4mZ3Q7ICZndDsm bmJzcDsgc3RydWN0IGtleV9kZWYgKmNtcF9kZWYgPSBtZW10eF90cmVlX2NtcF9kZWYoJmFtcDtp bmRleC0mZ3Q7dHJlZSk7PGJyPiZndDsgJmd0OyZuYnNwOyBxc29ydF9hcmcoaW5kZXgtJmd0O2J1 aWxkX2FycmF5LCBpbmRleC0mZ3Q7YnVpbGRfYXJyYXlfc2l6ZSw8YnI+Jmd0OyAmZ3Q7LSBzaXpl b2YoaW5kZXgtJmd0O2J1aWxkX2FycmF5WzBdKSwgbWVtdHhfdHJlZV9xY29tcGFyZSwgY21wX2Rl Zik7PGJyPiZndDsgJmd0Oysgc2l6ZW9mKGluZGV4LSZndDtidWlsZF9hcnJheVswXSksPGJyPiZn dDsgJmd0OysgbWVtdHhfdHJlZV9xY29tcGFyZSZsdDtVU0VfSElOVCZndDssIGNtcF9kZWYpOzxi cj4mZ3Q7ICZndDsmbmJzcDsgaWYgKGNtcF9kZWYtJmd0O2lzX211bHRpa2V5KSB7PGJyPiZndDsg Jmd0OyZuYnNwOyAvKjxicj4mZ3Q7ICZndDsmbmJzcDsgKiBNdWx0aWtleSBpbmRleCBtYXkgaGF2 ZSBlcXVhbChpbiB0ZXJtcyBvZjxicj4mZ3Q7ICZndDtAQCAtMTI2MSw5ICsxNDA5LDkgQEAgbWVt dHhfdHJlZV9pbmRleF9lbmRfYnVpbGQoc3RydWN0IGluZGV4ICpiYXNlKTxicj4mZ3Q7ICZndDsm bmJzcDsgKiB0aGUgZm9sbG93aW5nIG1lbXR4X3RyZWVfYnVpbGQgYXNzdW1lcyB0aGF0PGJyPiZn dDsgJmd0OyZuYnNwOyAqIGFsbCBrZXlzIGFyZSB1bmlxdWUuPGJyPiZndDsgJmd0OyZuYnNwOyAq Lzxicj4mZ3Q7ICZndDstIG1lbXR4X3RyZWVfaW5kZXhfYnVpbGRfYXJyYXlfZGVkdXBsaWNhdGUo aW5kZXgsIE5VTEwpOzxicj4mZ3Q7ICZndDsrIG1lbXR4X3RyZWVfaW5kZXhfYnVpbGRfYXJyYXlf ZGVkdXBsaWNhdGUmbHQ7VVNFX0hJTlQmZ3Q7KGluZGV4LCBOVUxMKTs8YnI+Jmd0OyAmZ3Q7Jm5i c3A7IH0gZWxzZSBpZiAoY21wX2RlZi0mZ3Q7Zm9yX2Z1bmNfaW5kZXgpIHs8YnI+Jmd0OyAmZ3Q7 LSBtZW10eF90cmVlX2luZGV4X2J1aWxkX2FycmF5X2RlZHVwbGljYXRlKGluZGV4LDxicj4mZ3Q7 ICZndDsrIG1lbXR4X3RyZWVfaW5kZXhfYnVpbGRfYXJyYXlfZGVkdXBsaWNhdGUmbHQ7VVNFX0hJ TlQmZ3Q7KGluZGV4LDxicj4mZ3Q7ICZndDsmbmJzcDsgdHVwbGVfY2h1bmtfZGVsZXRlKTs8YnI+ Jmd0OyAmZ3Q7Jm5ic3A7IH08YnI+Jmd0OyAmZ3Q7Jm5ic3A7IG1lbXR4X3RyZWVfYnVpbGQoJmFt cDtpbmRleC0mZ3Q7dHJlZSwgaW5kZXgtJmd0O2J1aWxkX2FycmF5LDxicj4mZ3Q7ICZndDtAQCAt MTI3NSwxOSArMTQyMywyMSBAQCBtZW10eF90cmVlX2luZGV4X2VuZF9idWlsZChzdHJ1Y3QgaW5k ZXggKmJhc2UpPGJyPiZndDsgJmd0OyZuYnNwOyBpbmRleC0mZ3Q7YnVpbGRfYXJyYXlfYWxsb2Nf c2l6ZSA9IDA7PGJyPiZndDsgJmd0OyZuYnNwO308YnI+Jmd0OyAmZ3Q7Jm5ic3A7PGJyPiZndDsg Jmd0Oyt0ZW1wbGF0ZSAmbHQ7aW50IFVTRV9ISU5UJmd0Ozxicj4mZ3Q7ICZndDsmbmJzcDtzdHJ1 Y3QgdHJlZV9zbmFwc2hvdF9pdGVyYXRvciB7PGJyPiZndDsgJmd0OyZuYnNwOyBzdHJ1Y3Qgc25h cHNob3RfaXRlcmF0b3IgYmFzZTs8YnI+Jmd0OyAmZ3Q7LSBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRl eCAqaW5kZXg7PGJyPiZndDsgJmd0Oy0gc3RydWN0IG1lbXR4X3RyZWVfaXRlcmF0b3IgdHJlZV9p dGVyYXRvcjs8YnI+Jmd0OyAmZ3Q7KyBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCZsdDtVU0VfSElO VCZndDsgKmluZGV4Ozxicj4mZ3Q7ICZndDsrIG1lbXR4X3RyZWVfaXRlcmF0b3JfdCZsdDtVU0Vf SElOVCZndDsgdHJlZV9pdGVyYXRvcjs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IHN0cnVjdCBtZW10eF90 eF9zbmFwc2hvdF9jbGVhbmVyIGNsZWFuZXI7PGJyPiZndDsgJmd0OyZuYnNwO307PGJyPiZndDsg Jmd0OyZuYnNwOzxicj4mZ3Q7ICZndDsrdGVtcGxhdGUgJmx0O2ludCBVU0VfSElOVCZndDs8YnI+ Jmd0OyAmZ3Q7Jm5ic3A7c3RhdGljIHZvaWQ8YnI+Jmd0OyAmZ3Q7Jm5ic3A7dHJlZV9zbmFwc2hv dF9pdGVyYXRvcl9mcmVlKHN0cnVjdCBzbmFwc2hvdF9pdGVyYXRvciAqaXRlcmF0b3IpPGJyPiZn dDsgJmd0OyZuYnNwO3s8YnI+Jmd0OyAmZ3Q7LSBhc3NlcnQoaXRlcmF0b3ItJmd0O2ZyZWUgPT0g dHJlZV9zbmFwc2hvdF9pdGVyYXRvcl9mcmVlKTs8YnI+Jmd0OyAmZ3Q7LSBzdHJ1Y3QgdHJlZV9z bmFwc2hvdF9pdGVyYXRvciAqaXQgPTxicj4mZ3Q7ICZndDstIChzdHJ1Y3QgdHJlZV9zbmFwc2hv dF9pdGVyYXRvciAqKWl0ZXJhdG9yOzxicj4mZ3Q7ICZndDsrIGFzc2VydChpdGVyYXRvci0mZ3Q7 ZnJlZSA9PSAmYW1wO3RyZWVfc25hcHNob3RfaXRlcmF0b3JfZnJlZSZsdDtVU0VfSElOVCZndDsp Ozxicj4mZ3Q7ICZndDsrIHN0cnVjdCB0cmVlX3NuYXBzaG90X2l0ZXJhdG9yJmx0O1VTRV9ISU5U Jmd0OyAqaXQgPTxicj4mZ3Q7ICZndDsrIChzdHJ1Y3QgdHJlZV9zbmFwc2hvdF9pdGVyYXRvciZs dDtVU0VfSElOVCZndDsgKilpdGVyYXRvcjs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IG1lbXR4X2xlYXZl X2RlbGF5ZWRfZnJlZV9tb2RlKChzdHJ1Y3QgbWVtdHhfZW5naW5lICopPGJyPiZndDsgJmd0OyZu YnNwOyBpdC0mZ3Q7aW5kZXgtJmd0O2Jhc2UuZW5naW5lKTs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IG1l bXR4X3RyZWVfaXRlcmF0b3JfZGVzdHJveSgmYW1wO2l0LSZndDtpbmRleC0mZ3Q7dHJlZSwgJmFt cDtpdC0mZ3Q7dHJlZV9pdGVyYXRvcik7PGJyPiZndDsgJmd0O0BAIC0xMjk2LDE3ICsxNDQ2LDE4 IEBAIHRyZWVfc25hcHNob3RfaXRlcmF0b3JfZnJlZShzdHJ1Y3Qgc25hcHNob3RfaXRlcmF0b3Ig Kml0ZXJhdG9yKTxicj4mZ3Q7ICZndDsmbmJzcDsgZnJlZShpdGVyYXRvcik7PGJyPiZndDsgJmd0 OyZuYnNwO308YnI+Jmd0OyAmZ3Q7Jm5ic3A7PGJyPiZndDsgJmd0Oyt0ZW1wbGF0ZSAmbHQ7aW50 IFVTRV9ISU5UJmd0Ozxicj4mZ3Q7ICZndDsmbmJzcDtzdGF0aWMgaW50PGJyPiZndDsgJmd0OyZu YnNwO3RyZWVfc25hcHNob3RfaXRlcmF0b3JfbmV4dChzdHJ1Y3Qgc25hcHNob3RfaXRlcmF0b3Ig Kml0ZXJhdG9yLDxicj4mZ3Q7ICZndDsmbmJzcDsgY29uc3QgY2hhciAqKmRhdGEsIHVpbnQzMl90 ICpzaXplKTxicj4mZ3Q7ICZndDsmbmJzcDt7PGJyPiZndDsgJmd0Oy0gYXNzZXJ0KGl0ZXJhdG9y LSZndDtmcmVlID09IHRyZWVfc25hcHNob3RfaXRlcmF0b3JfZnJlZSk7PGJyPiZndDsgJmd0Oy0g c3RydWN0IHRyZWVfc25hcHNob3RfaXRlcmF0b3IgKml0ID08YnI+Jmd0OyAmZ3Q7LSAoc3RydWN0 IHRyZWVfc25hcHNob3RfaXRlcmF0b3IgKilpdGVyYXRvcjs8YnI+Jmd0OyAmZ3Q7LSBzdHJ1Y3Qg bWVtdHhfdHJlZSAqdHJlZSA9ICZhbXA7aXQtJmd0O2luZGV4LSZndDt0cmVlOzxicj4mZ3Q7ICZn dDsrIGFzc2VydChpdGVyYXRvci0mZ3Q7ZnJlZSA9PSAmYW1wO3RyZWVfc25hcHNob3RfaXRlcmF0 b3JfZnJlZSZsdDtVU0VfSElOVCZndDspOzxicj4mZ3Q7ICZndDsrIHN0cnVjdCB0cmVlX3NuYXBz aG90X2l0ZXJhdG9yJmx0O1VTRV9ISU5UJmd0OyAqaXQgPTxicj4mZ3Q7ICZndDsrIChzdHJ1Y3Qg dHJlZV9zbmFwc2hvdF9pdGVyYXRvciZsdDtVU0VfSElOVCZndDsgKilpdGVyYXRvcjs8YnI+Jmd0 OyAmZ3Q7KyBtZW10eF90cmVlX3QmbHQ7VVNFX0hJTlQmZ3Q7ICp0cmVlID0gJmFtcDtpdC0mZ3Q7 aW5kZXgtJmd0O3RyZWU7PGJyPiZndDsgJmd0OyZuYnNwOzxicj4mZ3Q7ICZndDsmbmJzcDsgd2hp bGUgKHRydWUpIHs8YnI+Jmd0OyAmZ3Q7LSBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhICpyZXMgPTxi cj4mZ3Q7ICZndDsrIHN0cnVjdCBtZW10eF90cmVlX2RhdGEmbHQ7VVNFX0hJTlQmZ3Q7ICpyZXMg PTxicj4mZ3Q7ICZndDsmbmJzcDsgbWVtdHhfdHJlZV9pdGVyYXRvcl9nZXRfZWxlbSh0cmVlLCAm YW1wO2l0LSZndDt0cmVlX2l0ZXJhdG9yKTs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7PGJyPiZndDsgJmd0 OyZuYnNwOyBpZiAocmVzID09IE5VTEwpIHs8YnI+Jmd0OyAmZ3Q7QEAgLTEzMzMsMTQgKzE0ODQs MTggQEAgdHJlZV9zbmFwc2hvdF9pdGVyYXRvcl9uZXh0KHN0cnVjdCBzbmFwc2hvdF9pdGVyYXRv ciAqaXRlcmF0b3IsPGJyPiZndDsgJmd0OyZuYnNwOyZuYnNwOyogaW5kZXggbW9kaWZpY2F0aW9u cyB3aWxsIG5vdCBhZmZlY3QgdGhlIGl0ZXJhdGlvbiByZXN1bHRzLjxicj4mZ3Q7ICZndDsmbmJz cDsmbmJzcDsqIE11c3QgYmUgZGVzdHJveWVkIGJ5IGl0ZXJhdG9yLSZndDtmcmVlIGFmdGVyIHVz YWdlLjxicj4mZ3Q7ICZndDsmbmJzcDsmbmJzcDsqLzxicj4mZ3Q7ICZndDsrdGVtcGxhdGUgJmx0 O2ludCBVU0VfSElOVCZndDs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7c3RhdGljIHN0cnVjdCBzbmFwc2hv dF9pdGVyYXRvciAqPGJyPiZndDsgJmd0OyZuYnNwO21lbXR4X3RyZWVfaW5kZXhfY3JlYXRlX3Nu YXBzaG90X2l0ZXJhdG9yKHN0cnVjdCBpbmRleCAqYmFzZSk8YnI+Jmd0OyAmZ3Q7Jm5ic3A7ezxi cj4mZ3Q7ICZndDstIHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICppbmRleCA9IChzdHJ1Y3QgbWVt dHhfdHJlZV9pbmRleCAqKWJhc2U7PGJyPiZndDsgJmd0Oy0gc3RydWN0IHRyZWVfc25hcHNob3Rf aXRlcmF0b3IgKml0ID08YnI+Jmd0OyAmZ3Q7LSAoc3RydWN0IHRyZWVfc25hcHNob3RfaXRlcmF0 b3IgKikgY2FsbG9jKDEsIHNpemVvZigqaXQpKTs8YnI+Jmd0OyAmZ3Q7KyBzdHJ1Y3QgbWVtdHhf dHJlZV9pbmRleCZsdDtVU0VfSElOVCZndDsgKmluZGV4ID08YnI+Jmd0OyAmZ3Q7KyAoc3RydWN0 IG1lbXR4X3RyZWVfaW5kZXgmbHQ7VVNFX0hJTlQmZ3Q7ICopYmFzZTs8YnI+Jmd0OyAmZ3Q7KyBz dHJ1Y3QgdHJlZV9zbmFwc2hvdF9pdGVyYXRvciZsdDtVU0VfSElOVCZndDsgKml0ID08YnI+Jmd0 OyAmZ3Q7KyAoc3RydWN0IHRyZWVfc25hcHNob3RfaXRlcmF0b3ImbHQ7VVNFX0hJTlQmZ3Q7ICop PGJyPiZndDsgJmd0OysgY2FsbG9jKDEsIHNpemVvZigqaXQpKTs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7 IGlmIChpdCA9PSBOVUxMKSB7PGJyPiZndDsgJmd0Oy0gZGlhZ19zZXQoT3V0T2ZNZW1vcnksIHNp emVvZihzdHJ1Y3QgdHJlZV9zbmFwc2hvdF9pdGVyYXRvciksPGJyPiZndDsgJmd0OysgZGlhZ19z ZXQoT3V0T2ZNZW1vcnksPGJyPiZndDsgJmd0Oysgc2l6ZW9mKHN0cnVjdCB0cmVlX3NuYXBzaG90 X2l0ZXJhdG9yJmx0O1VTRV9ISU5UJmd0OyksPGJyPiZndDsgJmd0OyZuYnNwOyAibWVtdHhfdHJl ZV9pbmRleCIsICJjcmVhdGVfc25hcHNob3RfaXRlcmF0b3IiKTs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7 IHJldHVybiBOVUxMOzxicj4mZ3Q7ICZndDsmbmJzcDsgfTxicj4mZ3Q7ICZndDtAQCAtMTM1Miw4 ICsxNTA3LDggQEAgbWVtdHhfdHJlZV9pbmRleF9jcmVhdGVfc25hcHNob3RfaXRlcmF0b3Ioc3Ry dWN0IGluZGV4ICpiYXNlKTxicj4mZ3Q7ICZndDsmbmJzcDsgcmV0dXJuIE5VTEw7PGJyPiZndDsg Jmd0OyZuYnNwOyB9PGJyPiZndDsgJmd0OyZuYnNwOzxicj4mZ3Q7ICZndDstIGl0LSZndDtiYXNl LmZyZWUgPSB0cmVlX3NuYXBzaG90X2l0ZXJhdG9yX2ZyZWU7PGJyPiZndDsgJmd0Oy0gaXQtJmd0 O2Jhc2UubmV4dCA9IHRyZWVfc25hcHNob3RfaXRlcmF0b3JfbmV4dDs8YnI+Jmd0OyAmZ3Q7KyBp dC0mZ3Q7YmFzZS5mcmVlID0gdHJlZV9zbmFwc2hvdF9pdGVyYXRvcl9mcmVlJmx0O1VTRV9ISU5U Jmd0Ozs8YnI+Jmd0OyAmZ3Q7KyBpdC0mZ3Q7YmFzZS5uZXh0ID0gdHJlZV9zbmFwc2hvdF9pdGVy YXRvcl9uZXh0Jmx0O1VTRV9ISU5UJmd0Ozs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IGl0LSZndDtpbmRl eCA9IGluZGV4Ozxicj4mZ3Q7ICZndDsmbmJzcDsgaW5kZXhfcmVmKGJhc2UpOzxicj4mZ3Q7ICZn dDsmbmJzcDsgaXQtJmd0O3RyZWVfaXRlcmF0b3IgPSBtZW10eF90cmVlX2l0ZXJhdG9yX2ZpcnN0 KCZhbXA7aW5kZXgtJmd0O3RyZWUpOzxicj4mZ3Q7ICZndDtAQCAtMTM2Miw5NCArMTUxNywxMjQg QEAgbWVtdHhfdHJlZV9pbmRleF9jcmVhdGVfc25hcHNob3RfaXRlcmF0b3Ioc3RydWN0IGluZGV4 ICpiYXNlKTxicj4mZ3Q7ICZndDsmbmJzcDsgcmV0dXJuIChzdHJ1Y3Qgc25hcHNob3RfaXRlcmF0 b3IgKikgaXQ7PGJyPiZndDsgJmd0OyZuYnNwO308YnI+Jmd0OyAmZ3Q7Jm5ic3A7PGJyPiZndDsg Jmd0Oy1zdGF0aWMgY29uc3Qgc3RydWN0IGluZGV4X3Z0YWIgbWVtdHhfdHJlZV9pbmRleF92dGFi ID0gezxicj4mZ3Q7ICZndDstIC8qIC5kZXN0cm95ID0gKi8gbWVtdHhfdHJlZV9pbmRleF9kZXN0 cm95LDxicj4mZ3Q7ICZndDsrc3RhdGljIGNvbnN0IHN0cnVjdCBpbmRleF92dGFiIG1lbXR4X3Ry ZWVfbm9faGludF9pbmRleF92dGFiID0gezxicj4mZ3Q7ICZndDsrIC8qIC5kZXN0cm95ID0gKi8g bWVtdHhfdHJlZV9pbmRleF9kZXN0cm95Jmx0OzAmZ3Q7LDxicj4mZ3Q7ICZndDsmbmJzcDsgLyog LmNvbW1pdF9jcmVhdGUgPSAqLyBnZW5lcmljX2luZGV4X2NvbW1pdF9jcmVhdGUsPGJyPiZndDsg Jmd0OyZuYnNwOyAvKiAuYWJvcnRfY3JlYXRlID0gKi8gZ2VuZXJpY19pbmRleF9hYm9ydF9jcmVh dGUsPGJyPiZndDsgJmd0OyZuYnNwOyAvKiAuY29tbWl0X21vZGlmeSA9ICovIGdlbmVyaWNfaW5k ZXhfY29tbWl0X21vZGlmeSw8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IC8qIC5jb21taXRfZHJvcCA9ICov IGdlbmVyaWNfaW5kZXhfY29tbWl0X2Ryb3AsPGJyPiZndDsgJmd0Oy0gLyogLnVwZGF0ZV9kZWYg PSAqLyBtZW10eF90cmVlX2luZGV4X3VwZGF0ZV9kZWYsPGJyPiZndDsgJmd0OysgLyogLnVwZGF0 ZV9kZWYgPSAqLyBtZW10eF90cmVlX2luZGV4X3VwZGF0ZV9kZWYmbHQ7MCZndDssPGJyPiZndDsg Jmd0OyZuYnNwOyAvKiAuZGVwZW5kc19vbl9wayA9ICovIG1lbXR4X3RyZWVfaW5kZXhfZGVwZW5k c19vbl9wayw8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IC8qIC5kZWZfY2hhbmdlX3JlcXVpcmVzX3JlYnVp bGQgPSAqLzxicj4mZ3Q7ICZndDsmbmJzcDsgbWVtdHhfaW5kZXhfZGVmX2NoYW5nZV9yZXF1aXJl c19yZWJ1aWxkLDxicj4mZ3Q7ICZndDstIC8qIC5zaXplID0gKi8gbWVtdHhfdHJlZV9pbmRleF9z aXplLDxicj4mZ3Q7ICZndDstIC8qIC5ic2l6ZSA9ICovIG1lbXR4X3RyZWVfaW5kZXhfYnNpemUs PGJyPiZndDsgJmd0OysgLyogLnNpemUgPSAqLyBtZW10eF90cmVlX2luZGV4X3NpemUmbHQ7MCZn dDssPGJyPiZndDsgJmd0OysgLyogLmJzaXplID0gKi8gbWVtdHhfdHJlZV9pbmRleF9ic2l6ZSZs dDswJmd0Oyw8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IC8qIC5taW4gPSAqLyBnZW5lcmljX2luZGV4X21p biw8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IC8qIC5tYXggPSAqLyBnZW5lcmljX2luZGV4X21heCw8YnI+ Jmd0OyAmZ3Q7LSAvKiAucmFuZG9tID0gKi8gbWVtdHhfdHJlZV9pbmRleF9yYW5kb20sPGJyPiZn dDsgJmd0Oy0gLyogLmNvdW50ID0gKi8gbWVtdHhfdHJlZV9pbmRleF9jb3VudCw8YnI+Jmd0OyAm Z3Q7LSAvKiAuZ2V0ID0gKi8gbWVtdHhfdHJlZV9pbmRleF9nZXQsPGJyPiZndDsgJmd0Oy0gLyog LnJlcGxhY2UgPSAqLyBtZW10eF90cmVlX2luZGV4X3JlcGxhY2UsPGJyPiZndDsgJmd0Oy0gLyog LmNyZWF0ZV9pdGVyYXRvciA9ICovIG1lbXR4X3RyZWVfaW5kZXhfY3JlYXRlX2l0ZXJhdG9yLDxi cj4mZ3Q7ICZndDsrIC8qIC5yYW5kb20gPSAqLyBtZW10eF90cmVlX2luZGV4X3JhbmRvbSZsdDsw Jmd0Oyw8YnI+Jmd0OyAmZ3Q7KyAvKiAuY291bnQgPSAqLyBtZW10eF90cmVlX2luZGV4X2NvdW50 Jmx0OzAmZ3Q7LDxicj4mZ3Q7ICZndDsrIC8qIC5nZXQgPSAqLyBtZW10eF90cmVlX2luZGV4X2dl dCZsdDswJmd0Oyw8YnI+Jmd0OyAmZ3Q7KyAvKiAucmVwbGFjZSA9ICovIG1lbXR4X3RyZWVfaW5k ZXhfcmVwbGFjZSZsdDswJmd0Oyw8YnI+Jmd0OyAmZ3Q7KyAvKiAuY3JlYXRlX2l0ZXJhdG9yID0g Ki8gbWVtdHhfdHJlZV9pbmRleF9jcmVhdGVfaXRlcmF0b3ImbHQ7MCZndDssPGJyPiZndDsgJmd0 OyZuYnNwOyAvKiAuY3JlYXRlX3NuYXBzaG90X2l0ZXJhdG9yID0gKi88YnI+Jmd0OyAmZ3Q7LSBt ZW10eF90cmVlX2luZGV4X2NyZWF0ZV9zbmFwc2hvdF9pdGVyYXRvciw8YnI+Jmd0OyAmZ3Q7KyBt ZW10eF90cmVlX2luZGV4X2NyZWF0ZV9zbmFwc2hvdF9pdGVyYXRvciZsdDswJmd0Oyw8YnI+Jmd0 OyAmZ3Q7Jm5ic3A7IC8qIC5zdGF0ID0gKi8gZ2VuZXJpY19pbmRleF9zdGF0LDxicj4mZ3Q7ICZn dDsmbmJzcDsgLyogLmNvbXBhY3QgPSAqLyBnZW5lcmljX2luZGV4X2NvbXBhY3QsPGJyPiZndDsg Jmd0OyZuYnNwOyAvKiAucmVzZXRfc3RhdCA9ICovIGdlbmVyaWNfaW5kZXhfcmVzZXRfc3RhdCw8 YnI+Jmd0OyAmZ3Q7LSAvKiAuYmVnaW5fYnVpbGQgPSAqLyBtZW10eF90cmVlX2luZGV4X2JlZ2lu X2J1aWxkLDxicj4mZ3Q7ICZndDstIC8qIC5yZXNlcnZlID0gKi8gbWVtdHhfdHJlZV9pbmRleF9y ZXNlcnZlLDxicj4mZ3Q7ICZndDstIC8qIC5idWlsZF9uZXh0ID0gKi8gbWVtdHhfdHJlZV9pbmRl eF9idWlsZF9uZXh0LDxicj4mZ3Q7ICZndDstIC8qIC5lbmRfYnVpbGQgPSAqLyBtZW10eF90cmVl X2luZGV4X2VuZF9idWlsZCw8YnI+Jmd0OyAmZ3Q7KyAvKiAuYmVnaW5fYnVpbGQgPSAqLyBtZW10 eF90cmVlX2luZGV4X2JlZ2luX2J1aWxkJmx0OzAmZ3Q7LDxicj4mZ3Q7ICZndDsrIC8qIC5yZXNl cnZlID0gKi8gbWVtdHhfdHJlZV9pbmRleF9yZXNlcnZlJmx0OzAmZ3Q7LDxicj4mZ3Q7ICZndDsr IC8qIC5idWlsZF9uZXh0ID0gKi8gbWVtdHhfdHJlZV9pbmRleF9idWlsZF9uZXh0Jmx0OzAmZ3Q7 LDxicj4mZ3Q7ICZndDsrIC8qIC5lbmRfYnVpbGQgPSAqLyBtZW10eF90cmVlX2luZGV4X2VuZF9i dWlsZCZsdDswJmd0Oyw8YnI+Jmd0OyAmZ3Q7K307PGJyPiZndDsgJmd0Oys8YnI+Jmd0OyAmZ3Q7 K3N0YXRpYyBjb25zdCBzdHJ1Y3QgaW5kZXhfdnRhYiBtZW10eF90cmVlX3VzZV9oaW50X2luZGV4 X3Z0YWIgPSB7PGJyPiZndDsgJmd0OysgLyogLmRlc3Ryb3kgPSAqLyBtZW10eF90cmVlX2luZGV4 X2Rlc3Ryb3kmbHQ7MSZndDssPGJyPiZndDsgJmd0OysgLyogLmNvbW1pdF9jcmVhdGUgPSAqLyBn ZW5lcmljX2luZGV4X2NvbW1pdF9jcmVhdGUsPGJyPiZndDsgJmd0OysgLyogLmFib3J0X2NyZWF0 ZSA9ICovIGdlbmVyaWNfaW5kZXhfYWJvcnRfY3JlYXRlLDxicj4mZ3Q7ICZndDsrIC8qIC5jb21t aXRfbW9kaWZ5ID0gKi8gZ2VuZXJpY19pbmRleF9jb21taXRfbW9kaWZ5LDxicj4mZ3Q7ICZndDsr IC8qIC5jb21taXRfZHJvcCA9ICovIGdlbmVyaWNfaW5kZXhfY29tbWl0X2Ryb3AsPGJyPiZndDsg Jmd0OysgLyogLnVwZGF0ZV9kZWYgPSAqLyBtZW10eF90cmVlX2luZGV4X3VwZGF0ZV9kZWYmbHQ7 MSZndDssPGJyPiZndDsgJmd0OysgLyogLmRlcGVuZHNfb25fcGsgPSAqLyBtZW10eF90cmVlX2lu ZGV4X2RlcGVuZHNfb25fcGssPGJyPiZndDsgJmd0OysgLyogLmRlZl9jaGFuZ2VfcmVxdWlyZXNf cmVidWlsZCA9ICovPGJyPiZndDsgJmd0OysgbWVtdHhfaW5kZXhfZGVmX2NoYW5nZV9yZXF1aXJl c19yZWJ1aWxkLDxicj4mZ3Q7ICZndDsrIC8qIC5zaXplID0gKi8gbWVtdHhfdHJlZV9pbmRleF9z aXplJmx0OzEmZ3Q7LDxicj4mZ3Q7ICZndDsrIC8qIC5ic2l6ZSA9ICovIG1lbXR4X3RyZWVfaW5k ZXhfYnNpemUmbHQ7MSZndDssPGJyPiZndDsgJmd0OysgLyogLm1pbiA9ICovIGdlbmVyaWNfaW5k ZXhfbWluLDxicj4mZ3Q7ICZndDsrIC8qIC5tYXggPSAqLyBnZW5lcmljX2luZGV4X21heCw8YnI+ Jmd0OyAmZ3Q7KyAvKiAucmFuZG9tID0gKi8gbWVtdHhfdHJlZV9pbmRleF9yYW5kb20mbHQ7MSZn dDssPGJyPiZndDsgJmd0OysgLyogLmNvdW50ID0gKi8gbWVtdHhfdHJlZV9pbmRleF9jb3VudCZs dDsxJmd0Oyw8YnI+Jmd0OyAmZ3Q7KyAvKiAuZ2V0ID0gKi8gbWVtdHhfdHJlZV9pbmRleF9nZXQm bHQ7MSZndDssPGJyPiZndDsgJmd0OysgLyogLnJlcGxhY2UgPSAqLyBtZW10eF90cmVlX2luZGV4 X3JlcGxhY2UmbHQ7MSZndDssPGJyPiZndDsgJmd0OysgLyogLmNyZWF0ZV9pdGVyYXRvciA9ICov IG1lbXR4X3RyZWVfaW5kZXhfY3JlYXRlX2l0ZXJhdG9yJmx0OzEmZ3Q7LDxicj4mZ3Q7ICZndDsr IC8qIC5jcmVhdGVfc25hcHNob3RfaXRlcmF0b3IgPSAqLzxicj4mZ3Q7ICZndDsrIG1lbXR4X3Ry ZWVfaW5kZXhfY3JlYXRlX3NuYXBzaG90X2l0ZXJhdG9yJmx0OzEmZ3Q7LDxicj4mZ3Q7ICZndDsr IC8qIC5zdGF0ID0gKi8gZ2VuZXJpY19pbmRleF9zdGF0LDxicj4mZ3Q7ICZndDsrIC8qIC5jb21w YWN0ID0gKi8gZ2VuZXJpY19pbmRleF9jb21wYWN0LDxicj4mZ3Q7ICZndDsrIC8qIC5yZXNldF9z dGF0ID0gKi8gZ2VuZXJpY19pbmRleF9yZXNldF9zdGF0LDxicj4mZ3Q7ICZndDsrIC8qIC5iZWdp bl9idWlsZCA9ICovIG1lbXR4X3RyZWVfaW5kZXhfYmVnaW5fYnVpbGQmbHQ7MSZndDssPGJyPiZn dDsgJmd0OysgLyogLnJlc2VydmUgPSAqLyBtZW10eF90cmVlX2luZGV4X3Jlc2VydmUmbHQ7MSZn dDssPGJyPiZndDsgJmd0OysgLyogLmJ1aWxkX25leHQgPSAqLyBtZW10eF90cmVlX2luZGV4X2J1 aWxkX25leHQmbHQ7MSZndDssPGJyPiZndDsgJmd0OysgLyogLmVuZF9idWlsZCA9ICovIG1lbXR4 X3RyZWVfaW5kZXhfZW5kX2J1aWxkJmx0OzEmZ3Q7LDxicj4mZ3Q7ICZndDsmbmJzcDt9Ozxicj4m Z3Q7ICZndDsmbmJzcDs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7c3RhdGljIGNvbnN0IHN0cnVjdCBpbmRl eF92dGFiIG1lbXR4X3RyZWVfaW5kZXhfbXVsdGlrZXlfdnRhYiA9IHs8YnI+Jmd0OyAmZ3Q7LSAv KiAuZGVzdHJveSA9ICovIG1lbXR4X3RyZWVfaW5kZXhfZGVzdHJveSw8YnI+Jmd0OyAmZ3Q7KyAv KiAuZGVzdHJveSA9ICovIG1lbXR4X3RyZWVfaW5kZXhfZGVzdHJveSZsdDsxJmd0Oyw8YnI+Jmd0 OyAmZ3Q7Jm5ic3A7IC8qIC5jb21taXRfY3JlYXRlID0gKi8gZ2VuZXJpY19pbmRleF9jb21taXRf Y3JlYXRlLDxicj4mZ3Q7ICZndDsmbmJzcDsgLyogLmFib3J0X2NyZWF0ZSA9ICovIGdlbmVyaWNf aW5kZXhfYWJvcnRfY3JlYXRlLDxicj4mZ3Q7ICZndDsmbmJzcDsgLyogLmNvbW1pdF9tb2RpZnkg PSAqLyBnZW5lcmljX2luZGV4X2NvbW1pdF9tb2RpZnksPGJyPiZndDsgJmd0OyZuYnNwOyAvKiAu Y29tbWl0X2Ryb3AgPSAqLyBnZW5lcmljX2luZGV4X2NvbW1pdF9kcm9wLDxicj4mZ3Q7ICZndDst IC8qIC51cGRhdGVfZGVmID0gKi8gbWVtdHhfdHJlZV9pbmRleF91cGRhdGVfZGVmLDxicj4mZ3Q7 ICZndDsrIC8qIC51cGRhdGVfZGVmID0gKi8gbWVtdHhfdHJlZV9pbmRleF91cGRhdGVfZGVmJmx0 OzEmZ3Q7LDxicj4mZ3Q7ICZndDsmbmJzcDsgLyogLmRlcGVuZHNfb25fcGsgPSAqLyBtZW10eF90 cmVlX2luZGV4X2RlcGVuZHNfb25fcGssPGJyPiZndDsgJmd0OyZuYnNwOyAvKiAuZGVmX2NoYW5n ZV9yZXF1aXJlc19yZWJ1aWxkID0gKi88YnI+Jmd0OyAmZ3Q7Jm5ic3A7IG1lbXR4X2luZGV4X2Rl Zl9jaGFuZ2VfcmVxdWlyZXNfcmVidWlsZCw8YnI+Jmd0OyAmZ3Q7LSAvKiAuc2l6ZSA9ICovIG1l bXR4X3RyZWVfaW5kZXhfc2l6ZSw8YnI+Jmd0OyAmZ3Q7LSAvKiAuYnNpemUgPSAqLyBtZW10eF90 cmVlX2luZGV4X2JzaXplLDxicj4mZ3Q7ICZndDsrIC8qIC5zaXplID0gKi8gbWVtdHhfdHJlZV9p bmRleF9zaXplJmx0OzEmZ3Q7LDxicj4mZ3Q7ICZndDsrIC8qIC5ic2l6ZSA9ICovIG1lbXR4X3Ry ZWVfaW5kZXhfYnNpemUmbHQ7MSZndDssPGJyPiZndDsgJmd0OyZuYnNwOyAvKiAubWluID0gKi8g Z2VuZXJpY19pbmRleF9taW4sPGJyPiZndDsgJmd0OyZuYnNwOyAvKiAubWF4ID0gKi8gZ2VuZXJp Y19pbmRleF9tYXgsPGJyPiZndDsgJmd0Oy0gLyogLnJhbmRvbSA9ICovIG1lbXR4X3RyZWVfaW5k ZXhfcmFuZG9tLDxicj4mZ3Q7ICZndDstIC8qIC5jb3VudCA9ICovIG1lbXR4X3RyZWVfaW5kZXhf Y291bnQsPGJyPiZndDsgJmd0Oy0gLyogLmdldCA9ICovIG1lbXR4X3RyZWVfaW5kZXhfZ2V0LDxi cj4mZ3Q7ICZndDsrIC8qIC5yYW5kb20gPSAqLyBtZW10eF90cmVlX2luZGV4X3JhbmRvbSZsdDsx Jmd0Oyw8YnI+Jmd0OyAmZ3Q7KyAvKiAuY291bnQgPSAqLyBtZW10eF90cmVlX2luZGV4X2NvdW50 Jmx0OzEmZ3Q7LDxicj4mZ3Q7ICZndDsrIC8qIC5nZXQgPSAqLyBtZW10eF90cmVlX2luZGV4X2dl dCZsdDsxJmd0Oyw8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IC8qIC5yZXBsYWNlID0gKi8gbWVtdHhfdHJl ZV9pbmRleF9yZXBsYWNlX211bHRpa2V5LDxicj4mZ3Q7ICZndDstIC8qIC5jcmVhdGVfaXRlcmF0 b3IgPSAqLyBtZW10eF90cmVlX2luZGV4X2NyZWF0ZV9pdGVyYXRvciw8YnI+Jmd0OyAmZ3Q7KyAv KiAuY3JlYXRlX2l0ZXJhdG9yID0gKi8gbWVtdHhfdHJlZV9pbmRleF9jcmVhdGVfaXRlcmF0b3Im bHQ7MSZndDssPGJyPiZndDsgJmd0OyZuYnNwOyAvKiAuY3JlYXRlX3NuYXBzaG90X2l0ZXJhdG9y ID0gKi88YnI+Jmd0OyAmZ3Q7LSBtZW10eF90cmVlX2luZGV4X2NyZWF0ZV9zbmFwc2hvdF9pdGVy YXRvciw8YnI+Jmd0OyAmZ3Q7KyBtZW10eF90cmVlX2luZGV4X2NyZWF0ZV9zbmFwc2hvdF9pdGVy YXRvciZsdDsxJmd0Oyw8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IC8qIC5zdGF0ID0gKi8gZ2VuZXJpY19p bmRleF9zdGF0LDxicj4mZ3Q7ICZndDsmbmJzcDsgLyogLmNvbXBhY3QgPSAqLyBnZW5lcmljX2lu ZGV4X2NvbXBhY3QsPGJyPiZndDsgJmd0OyZuYnNwOyAvKiAucmVzZXRfc3RhdCA9ICovIGdlbmVy aWNfaW5kZXhfcmVzZXRfc3RhdCw8YnI+Jmd0OyAmZ3Q7LSAvKiAuYmVnaW5fYnVpbGQgPSAqLyBt ZW10eF90cmVlX2luZGV4X2JlZ2luX2J1aWxkLDxicj4mZ3Q7ICZndDstIC8qIC5yZXNlcnZlID0g Ki8gbWVtdHhfdHJlZV9pbmRleF9yZXNlcnZlLDxicj4mZ3Q7ICZndDsrIC8qIC5iZWdpbl9idWls ZCA9ICovIG1lbXR4X3RyZWVfaW5kZXhfYmVnaW5fYnVpbGQmbHQ7MSZndDssPGJyPiZndDsgJmd0 OysgLyogLnJlc2VydmUgPSAqLyBtZW10eF90cmVlX2luZGV4X3Jlc2VydmUmbHQ7MSZndDssPGJy PiZndDsgJmd0OyZuYnNwOyAvKiAuYnVpbGRfbmV4dCA9ICovIG1lbXR4X3RyZWVfaW5kZXhfYnVp bGRfbmV4dF9tdWx0aWtleSw8YnI+Jmd0OyAmZ3Q7LSAvKiAuZW5kX2J1aWxkID0gKi8gbWVtdHhf dHJlZV9pbmRleF9lbmRfYnVpbGQsPGJyPiZndDsgJmd0OysgLyogLmVuZF9idWlsZCA9ICovIG1l bXR4X3RyZWVfaW5kZXhfZW5kX2J1aWxkJmx0OzEmZ3Q7LDxicj4mZ3Q7ICZndDsmbmJzcDt9Ozxi cj4mZ3Q7ICZndDsmbmJzcDs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7c3RhdGljIGNvbnN0IHN0cnVjdCBp bmRleF92dGFiIG1lbXR4X3RyZWVfZnVuY19pbmRleF92dGFiID0gezxicj4mZ3Q7ICZndDstIC8q IC5kZXN0cm95ID0gKi8gbWVtdHhfdHJlZV9pbmRleF9kZXN0cm95LDxicj4mZ3Q7ICZndDsrIC8q IC5kZXN0cm95ID0gKi8gbWVtdHhfdHJlZV9pbmRleF9kZXN0cm95Jmx0OzEmZ3Q7LDxicj4mZ3Q7 ICZndDsmbmJzcDsgLyogLmNvbW1pdF9jcmVhdGUgPSAqLyBnZW5lcmljX2luZGV4X2NvbW1pdF9j cmVhdGUsPGJyPiZndDsgJmd0OyZuYnNwOyAvKiAuYWJvcnRfY3JlYXRlID0gKi8gZ2VuZXJpY19p bmRleF9hYm9ydF9jcmVhdGUsPGJyPiZndDsgJmd0OyZuYnNwOyAvKiAuY29tbWl0X21vZGlmeSA9 ICovIGdlbmVyaWNfaW5kZXhfY29tbWl0X21vZGlmeSw8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IC8qIC5j b21taXRfZHJvcCA9ICovIGdlbmVyaWNfaW5kZXhfY29tbWl0X2Ryb3AsPGJyPiZndDsgJmd0Oy0g LyogLnVwZGF0ZV9kZWYgPSAqLyBtZW10eF90cmVlX2luZGV4X3VwZGF0ZV9kZWYsPGJyPiZndDsg Jmd0OysgLyogLnVwZGF0ZV9kZWYgPSAqLyBtZW10eF90cmVlX2luZGV4X3VwZGF0ZV9kZWYmbHQ7 MSZndDssPGJyPiZndDsgJmd0OyZuYnNwOyAvKiAuZGVwZW5kc19vbl9wayA9ICovIG1lbXR4X3Ry ZWVfaW5kZXhfZGVwZW5kc19vbl9wayw8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IC8qIC5kZWZfY2hhbmdl X3JlcXVpcmVzX3JlYnVpbGQgPSAqLzxicj4mZ3Q7ICZndDsmbmJzcDsgbWVtdHhfaW5kZXhfZGVm X2NoYW5nZV9yZXF1aXJlc19yZWJ1aWxkLDxicj4mZ3Q7ICZndDstIC8qIC5zaXplID0gKi8gbWVt dHhfdHJlZV9pbmRleF9zaXplLDxicj4mZ3Q7ICZndDstIC8qIC5ic2l6ZSA9ICovIG1lbXR4X3Ry ZWVfaW5kZXhfYnNpemUsPGJyPiZndDsgJmd0OysgLyogLnNpemUgPSAqLyBtZW10eF90cmVlX2lu ZGV4X3NpemUmbHQ7MSZndDssPGJyPiZndDsgJmd0OysgLyogLmJzaXplID0gKi8gbWVtdHhfdHJl ZV9pbmRleF9ic2l6ZSZsdDsxJmd0Oyw8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IC8qIC5taW4gPSAqLyBn ZW5lcmljX2luZGV4X21pbiw8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IC8qIC5tYXggPSAqLyBnZW5lcmlj X2luZGV4X21heCw8YnI+Jmd0OyAmZ3Q7LSAvKiAucmFuZG9tID0gKi8gbWVtdHhfdHJlZV9pbmRl eF9yYW5kb20sPGJyPiZndDsgJmd0Oy0gLyogLmNvdW50ID0gKi8gbWVtdHhfdHJlZV9pbmRleF9j b3VudCw8YnI+Jmd0OyAmZ3Q7LSAvKiAuZ2V0ID0gKi8gbWVtdHhfdHJlZV9pbmRleF9nZXQsPGJy PiZndDsgJmd0OysgLyogLnJhbmRvbSA9ICovIG1lbXR4X3RyZWVfaW5kZXhfcmFuZG9tJmx0OzEm Z3Q7LDxicj4mZ3Q7ICZndDsrIC8qIC5jb3VudCA9ICovIG1lbXR4X3RyZWVfaW5kZXhfY291bnQm bHQ7MSZndDssPGJyPiZndDsgJmd0OysgLyogLmdldCA9ICovIG1lbXR4X3RyZWVfaW5kZXhfZ2V0 Jmx0OzEmZ3Q7LDxicj4mZ3Q7ICZndDsmbmJzcDsgLyogLnJlcGxhY2UgPSAqLyBtZW10eF90cmVl X2Z1bmNfaW5kZXhfcmVwbGFjZSw8YnI+Jmd0OyAmZ3Q7LSAvKiAuY3JlYXRlX2l0ZXJhdG9yID0g Ki8gbWVtdHhfdHJlZV9pbmRleF9jcmVhdGVfaXRlcmF0b3IsPGJyPiZndDsgJmd0OysgLyogLmNy ZWF0ZV9pdGVyYXRvciA9ICovIG1lbXR4X3RyZWVfaW5kZXhfY3JlYXRlX2l0ZXJhdG9yJmx0OzEm Z3Q7LDxicj4mZ3Q7ICZndDsmbmJzcDsgLyogLmNyZWF0ZV9zbmFwc2hvdF9pdGVyYXRvciA9ICov PGJyPiZndDsgJmd0Oy0gbWVtdHhfdHJlZV9pbmRleF9jcmVhdGVfc25hcHNob3RfaXRlcmF0b3Is PGJyPiZndDsgJmd0OysgbWVtdHhfdHJlZV9pbmRleF9jcmVhdGVfc25hcHNob3RfaXRlcmF0b3Im bHQ7MSZndDssPGJyPiZndDsgJmd0OyZuYnNwOyAvKiAuc3RhdCA9ICovIGdlbmVyaWNfaW5kZXhf c3RhdCw8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IC8qIC5jb21wYWN0ID0gKi8gZ2VuZXJpY19pbmRleF9j b21wYWN0LDxicj4mZ3Q7ICZndDsmbmJzcDsgLyogLnJlc2V0X3N0YXQgPSAqLyBnZW5lcmljX2lu ZGV4X3Jlc2V0X3N0YXQsPGJyPiZndDsgJmd0Oy0gLyogLmJlZ2luX2J1aWxkID0gKi8gbWVtdHhf dHJlZV9pbmRleF9iZWdpbl9idWlsZCw8YnI+Jmd0OyAmZ3Q7LSAvKiAucmVzZXJ2ZSA9ICovIG1l bXR4X3RyZWVfaW5kZXhfcmVzZXJ2ZSw8YnI+Jmd0OyAmZ3Q7KyAvKiAuYmVnaW5fYnVpbGQgPSAq LyBtZW10eF90cmVlX2luZGV4X2JlZ2luX2J1aWxkJmx0OzEmZ3Q7LDxicj4mZ3Q7ICZndDsrIC8q IC5yZXNlcnZlID0gKi8gbWVtdHhfdHJlZV9pbmRleF9yZXNlcnZlJmx0OzEmZ3Q7LDxicj4mZ3Q7 ICZndDsmbmJzcDsgLyogLmJ1aWxkX25leHQgPSAqLyBtZW10eF90cmVlX2Z1bmNfaW5kZXhfYnVp bGRfbmV4dCw8YnI+Jmd0OyAmZ3Q7LSAvKiAuZW5kX2J1aWxkID0gKi8gbWVtdHhfdHJlZV9pbmRl eF9lbmRfYnVpbGQsPGJyPiZndDsgJmd0OysgLyogLmVuZF9idWlsZCA9ICovIG1lbXR4X3RyZWVf aW5kZXhfZW5kX2J1aWxkJmx0OzEmZ3Q7LDxicj4mZ3Q7ICZndDsmbmJzcDt9Ozxicj4mZ3Q7ICZn dDsmbmJzcDs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7LyoqPGJyPiZndDsgJmd0O0BAIC0xNDU5LDcgKzE2 NDQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGluZGV4X3Z0YWIgbWVtdHhfdHJlZV9mdW5jX2lu ZGV4X3Z0YWIgPSB7PGJyPiZndDsgJmd0OyZuYnNwOyZuYnNwOyoga2V5IGRlZmludGlvbiBpcyBu b3QgY29tcGxldGVseSBpbml0aWFsaXplZCBhdCB0aGF0IG1vbWVudCkuPGJyPiZndDsgJmd0OyZu YnNwOyZuYnNwOyovPGJyPiZndDsgJmd0OyZuYnNwO3N0YXRpYyBjb25zdCBzdHJ1Y3QgaW5kZXhf dnRhYiBtZW10eF90cmVlX2Rpc2FibGVkX2luZGV4X3Z0YWIgPSB7PGJyPiZndDsgJmd0Oy0gLyog LmRlc3Ryb3kgPSAqLyBtZW10eF90cmVlX2luZGV4X2Rlc3Ryb3ksPGJyPiZndDsgJmd0OysgLyog LmRlc3Ryb3kgPSAqLyBtZW10eF90cmVlX2luZGV4X2Rlc3Ryb3kmbHQ7MSZndDssPGJyPiZndDsg Jmd0OyZuYnNwOyAvKiAuY29tbWl0X2NyZWF0ZSA9ICovIGdlbmVyaWNfaW5kZXhfY29tbWl0X2Ny ZWF0ZSw8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IC8qIC5hYm9ydF9jcmVhdGUgPSAqLyBnZW5lcmljX2lu ZGV4X2Fib3J0X2NyZWF0ZSw8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IC8qIC5jb21taXRfbW9kaWZ5ID0g Ki8gZ2VuZXJpY19pbmRleF9jb21taXRfbW9kaWZ5LDxicj4mZ3Q7ICZndDtAQCAtMTQ4OCwyNyAr MTY3MywxOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGluZGV4X3Z0YWIgbWVtdHhfdHJlZV9kaXNh YmxlZF9pbmRleF92dGFiID0gezxicj4mZ3Q7ICZndDsmbmJzcDsgLyogLmVuZF9idWlsZCA9ICov IGdlbmVyaWNfaW5kZXhfZW5kX2J1aWxkLDxicj4mZ3Q7ICZndDsmbmJzcDt9Ozxicj4mZ3Q7ICZn dDsmbmJzcDs8YnI+Jmd0OyAmZ3Q7LXN0cnVjdCBpbmRleCAqPGJyPiZndDsgJmd0Oy1tZW10eF90 cmVlX2luZGV4X25ldyhzdHJ1Y3QgbWVtdHhfZW5naW5lICptZW10eCwgc3RydWN0IGluZGV4X2Rl ZiAqZGVmKTxicj4mZ3Q7ICZndDsrdGVtcGxhdGUgJmx0O2ludCBVU0VfSElOVCZndDs8YnI+Jmd0 OyAmZ3Q7K3N0YXRpYyBzdHJ1Y3QgaW5kZXggKjxicj4mZ3Q7ICZndDsrbWVtdHhfdHJlZV9pbmRl eF9uZXdfdHBsKHN0cnVjdCBtZW10eF9lbmdpbmUgKm1lbXR4LCBzdHJ1Y3QgaW5kZXhfZGVmICpk ZWYsPGJyPiZndDsgJmd0OysgY29uc3Qgc3RydWN0IGluZGV4X3Z0YWIgKnZ0YWIpPGJyPiZndDsg Jmd0OyZuYnNwO3s8YnI+Jmd0OyAmZ3Q7LSBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqaW5kZXgg PTxicj4mZ3Q7ICZndDstIChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqKWNhbGxvYygxLCBzaXpl b2YoKmluZGV4KSk7PGJyPiZndDsgJmd0Oysgc3RydWN0IG1lbXR4X3RyZWVfaW5kZXgmbHQ7VVNF X0hJTlQmZ3Q7ICppbmRleCA9PGJyPiZndDsgJmd0OysgKHN0cnVjdCBtZW10eF90cmVlX2luZGV4 Jmx0O1VTRV9ISU5UJmd0OyAqKTxicj4mZ3Q7ICZndDsrIGNhbGxvYygxLCBzaXplb2YoKmluZGV4 KSk7PGJyPiZndDsgJmd0OyZuYnNwOyBpZiAoaW5kZXggPT0gTlVMTCkgezxicj4mZ3Q7ICZndDsm bmJzcDsgZGlhZ19zZXQoT3V0T2ZNZW1vcnksIHNpemVvZigqaW5kZXgpLDxicj4mZ3Q7ICZndDsm bmJzcDsgIm1hbGxvYyIsICJzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCIpOzxicj4mZ3Q7ICZndDsm bmJzcDsgcmV0dXJuIE5VTEw7PGJyPiZndDsgJmd0OyZuYnNwOyB9PGJyPiZndDsgJmd0Oy0gY29u c3Qgc3RydWN0IGluZGV4X3Z0YWIgKnZ0YWI7PGJyPiZndDsgJmd0Oy0gaWYgKGRlZi0mZ3Q7a2V5 X2RlZi0mZ3Q7Zm9yX2Z1bmNfaW5kZXgpIHs8YnI+Jmd0OyAmZ3Q7LSBpZiAoZGVmLSZndDtrZXlf ZGVmLSZndDtmdW5jX2luZGV4X2Z1bmMgPT0gTlVMTCk8YnI+Jmd0OyAmZ3Q7LSB2dGFiID0gJmFt cDttZW10eF90cmVlX2Rpc2FibGVkX2luZGV4X3Z0YWI7PGJyPiZndDsgJmd0Oy0gZWxzZTxicj4m Z3Q7ICZndDstIHZ0YWIgPSAmYW1wO21lbXR4X3RyZWVfZnVuY19pbmRleF92dGFiOzxicj4mZ3Q7 ICZndDstIH0gZWxzZSBpZiAoZGVmLSZndDtrZXlfZGVmLSZndDtpc19tdWx0aWtleSkgezxicj4m Z3Q7ICZndDstIHZ0YWIgPSAmYW1wO21lbXR4X3RyZWVfaW5kZXhfbXVsdGlrZXlfdnRhYjs8YnI+ Jmd0OyAmZ3Q7LSB9IGVsc2Ugezxicj4mZ3Q7ICZndDstIHZ0YWIgPSAmYW1wO21lbXR4X3RyZWVf aW5kZXhfdnRhYjs8YnI+Jmd0OyAmZ3Q7LSB9PGJyPiZndDsgJmd0OyZuYnNwOyBpZiAoaW5kZXhf Y3JlYXRlKCZhbXA7aW5kZXgtJmd0O2Jhc2UsIChzdHJ1Y3QgZW5naW5lICopbWVtdHgsPGJyPiZn dDsgJmd0OyZuYnNwOyB2dGFiLCBkZWYpICE9IDApIHs8YnI+Jmd0OyAmZ3Q7Jm5ic3A7IGZyZWUo aW5kZXgpOzxicj4mZ3Q7ICZndDtAQCAtMTUyNCwzICsxNzAxLDIzIEBAIG1lbXR4X3RyZWVfaW5k ZXhfbmV3KHN0cnVjdCBtZW10eF9lbmdpbmUgKm1lbXR4LCBzdHJ1Y3QgaW5kZXhfZGVmICpkZWYp PGJyPiZndDsgJmd0OyZuYnNwOyBtZW10eF9pbmRleF9leHRlbnRfZnJlZSwgbWVtdHgpOzxicj4m Z3Q7ICZndDsmbmJzcDsgcmV0dXJuICZhbXA7aW5kZXgtJmd0O2Jhc2U7PGJyPiZndDsgJmd0OyZu YnNwO308YnI+Jmd0OyAmZ3Q7Kzxicj4mZ3Q7ICZndDsrc3RydWN0IGluZGV4ICo8YnI+Jmd0OyAm Z3Q7K21lbXR4X3RyZWVfaW5kZXhfbmV3KHN0cnVjdCBtZW10eF9lbmdpbmUgKm1lbXR4LCBzdHJ1 Y3QgaW5kZXhfZGVmICpkZWYpPGJyPiZndDsgJmd0Oyt7PGJyPiZndDsgJmd0OysgY29uc3Qgc3Ry dWN0IGluZGV4X3Z0YWIgKnZ0YWI7PGJyPiZndDsgJmd0OysgaWYgKGRlZi0mZ3Q7a2V5X2RlZi0m Z3Q7Zm9yX2Z1bmNfaW5kZXgpIHs8YnI+Jmd0OyAmZ3Q7KyBpZiAoZGVmLSZndDtrZXlfZGVmLSZn dDtmdW5jX2luZGV4X2Z1bmMgPT0gTlVMTCk8YnI+Jmd0OyAmZ3Q7KyB2dGFiID0gJmFtcDttZW10 eF90cmVlX2Rpc2FibGVkX2luZGV4X3Z0YWI7PGJyPiZndDsgJmd0OysgZWxzZTxicj4mZ3Q7ICZn dDsrIHZ0YWIgPSAmYW1wO21lbXR4X3RyZWVfZnVuY19pbmRleF92dGFiOzxicj4mZ3Q7ICZndDsr IH0gZWxzZSBpZiAoZGVmLSZndDtrZXlfZGVmLSZndDtpc19tdWx0aWtleSkgezxicj4mZ3Q7ICZn dDsrIHZ0YWIgPSAmYW1wO21lbXR4X3RyZWVfaW5kZXhfbXVsdGlrZXlfdnRhYjs8YnI+Jmd0OyAm Z3Q7KyB9IGVsc2UgaWYgKGRlZi0mZ3Q7b3B0cy5oaW50KSB7PGJyPiZndDsgJmd0OysgdnRhYiA9 ICZhbXA7bWVtdHhfdHJlZV91c2VfaGludF9pbmRleF92dGFiOzxicj4mZ3Q7ICZndDsrIH0gZWxz ZSB7PGJyPiZndDsgJmd0OysgdnRhYiA9ICZhbXA7bWVtdHhfdHJlZV9ub19oaW50X2luZGV4X3Z0 YWI7PGJyPiZndDsgJmd0OysgcmV0dXJuIG1lbXR4X3RyZWVfaW5kZXhfbmV3X3RwbCZsdDswJmd0 OyhtZW10eCwgZGVmLCB2dGFiKTs8YnI+Jmd0OyAmZ3Q7KyB9PGJyPiZndDsgJmd0OysgcmV0dXJu IG1lbXR4X3RyZWVfaW5kZXhfbmV3X3RwbCZsdDsxJmd0OyhtZW10eCwgZGVmLCB2dGFiKTs8YnI+ Jmd0OyAmZ3Q7K308YnI+Jmd0OyAmZ3Q7ZGlmZiAtLWdpdCBhL3NyYy9saWIvc2FsYWQvYnBzX3Ry ZWUuaCBiL3NyYy9saWIvc2FsYWQvYnBzX3RyZWUuaDxicj4mZ3Q7ICZndDtpbmRleCBlZjVhZTNk Li4wYmI4MDNhIDEwMDY0NDxicj4mZ3Q7ICZndDstLS0gYS9zcmMvbGliL3NhbGFkL2Jwc190cmVl Lmg8YnI+Jmd0OyAmZ3Q7KysrIGIvc3JjL2xpYi9zYWxhZC9icHNfdHJlZS5oPGJyPiZndDsgJmd0 O0BAIC0xNjgsNiArMTY4LDE3IEBAPGJyPiZndDsgJmd0OyZuYnNwOzxicj4mZ3Q7ICZndDsmbmJz cDsvKiB7e3sgQlBTLXRyZWUgaW50ZXJmYWNlIHNldHRpbmdzICovPGJyPiZndDsgJmd0OyZuYnNw Oy8qKjxicj4mZ3Q7ICZndDsrICogT3B0aW9uYWwgbmFtZXNwYWNlIGZvciBzdHJ1Y3RzIGFuZCBm dW5jdGlvbnMuPGJyPiZndDsgJmd0OysgKiBJcyBzZXQsIHN0cnVjdCBhbmQgZnVuY3Rpb25zIHdp bGwgaGF2ZSBCUFNfVFJFRV9OQU1FU1BBQ0U6OiBwcmVmaXguPGJyPiZndDsgJmd0OysgKiBGb3Ig ZXhhbXBsZSBvbmUgY2FuICNkZWZpbmUgQlBTX1RSRUVfTkFNRVNQQUNFIG15IGFsb25nIHdpdGg8 YnI+Jmd0OyAmZ3Q7KyAqICNkZWZpbmUgQlBTX1RSRUVfTkFNRSBfdGVzdCwgYW5kIHVzZSB0aGVu PGJyPiZndDsgJmd0OysgKiBzdHJ1Y3QgbXk6OmJwc190cmVlX3Rlc3QgbXlfdHJlZTs8YnI+Jmd0 OyAmZ3Q7KyAqIG15OjpicHNfdHJlZV90ZXN0X2NyZWF0ZSgmYW1wO215X3RyZWUsIC4uLik7PGJy PiZndDsgJmd0OysgKjxicj4mZ3Q7ICZndDsrICogI2RlZmluZSBCUFNfVFJFRV9OQU1FU1BBQ0U8 YnI+Jmd0OyAmZ3Q7KyAqLzxicj4mZ3Q7ICZndDsrPGJyPiZndDsgJmd0OysvKio8YnI+Jmd0OyAm Z3Q7Jm5ic3A7Jm5ic3A7KiBDdXN0b20gbmFtZSBmb3Igc3RydWN0cyBhbmQgZnVuY3Rpb25zLjxi cj4mZ3Q7ICZndDsmbmJzcDsmbmJzcDsqIFN0cnVjdCBhbmQgZnVuY3Rpb25zIHdpbGwgaGF2ZSBi cHNfdHJlZSMjQlBTX1RSRUVfTkFNRSBuYW1lIG9yIHByZWZpeC48YnI+Jmd0OyAmZ3Q7Jm5ic3A7 Jm5ic3A7KiBGb3IgZXhhbXBsZSBvbmUgY2FuICNkZWZpbmUgQlBTX1RSRUVfTkFNRSBfdGVzdCwg YW5kIHVzZSB0aGVuPGJyPiZndDsgJmd0O0BAIC0zMDAsNiArMzExLDEwIEBAPGJyPiZndDsgJmd0 OyZuYnNwOzxicj4mZ3Q7ICZndDsmbmJzcDsvKiB9fX0gKi88YnI+Jmd0OyAmZ3Q7Jm5ic3A7PGJy PiZndDsgJmd0OysjaWZkZWYgQlBTX1RSRUVfTkFNRVNQQUNFPGJyPiZndDsgJmd0OytuYW1lc3Bh Y2UgQlBTX1RSRUVfTkFNRVNQQUNFIHs8YnI+Jmd0OyAmZ3Q7KyNlbmRpZjxicj4mZ3Q7ICZndDsr PGJyPiZndDsgJmd0OyZuYnNwOy8qIHt7eyBCUFMtdHJlZSBpbnRlcm5hbCBzZXR0aW5ncyAqLzxi cj4mZ3Q7ICZndDsmbmJzcDt0eXBlZGVmIGludDE2X3QgYnBzX3RyZWVfcG9zX3Q7PGJyPiZndDsg Jmd0OyZuYnNwO3R5cGVkZWYgdWludDMyX3QgYnBzX3RyZWVfYmxvY2tfaWRfdDs8YnI+Jmd0OyAm Z3Q7QEAgLTYxODgsMyArNjIwMyw3IEBAIGJwc190cmVlX2RlYnVnX2NoZWNrX2ludGVybmFsX2Z1 bmN0aW9ucyhib29sIGFzc2VydG1lKTxicj4mZ3Q7ICZndDsmbmJzcDsjdW5kZWYgYnBzX3RyZWVf ZGVidWdfY2hlY2tfaW5zZXJ0X2FuZF9tb3ZlX3RvX2xlZnRfaW5uZXI8YnI+Jmd0OyAmZ3Q7Jm5i c3A7PGJyPiZndDsgJmd0OyZuYnNwOy8qIH19fSAqLzxicj4mZ3Q7ICZndDsrPGJyPiZndDsgJmd0 OysjaWZkZWYgQlBTX1RSRUVfTkFNRVNQQUNFPGJyPiZndDsgJmd0Oyt9IC8qIG5hbWVzcGFjZSBC UFNfVFJFRV9OQU1FU1BBQ0UgeyAqLzxicj4mZ3Q7ICZndDsrI2VuZGlmPGJyPiZndDsgJmd0O2Rp ZmYgLS1naXQgYS90ZXN0L2JveC9hbHRlci5yZXN1bHQgYi90ZXN0L2JveC9hbHRlci5yZXN1bHQ8 YnI+Jmd0OyAmZ3Q7aW5kZXggMjM3YzJkOC4uNWI0MTJhNyAxMDA2NDQ8YnI+Jmd0OyAmZ3Q7LS0t IGEvdGVzdC9ib3gvYWx0ZXIucmVzdWx0PGJyPiZndDsgJmd0OysrKyBiL3Rlc3QvYm94L2FsdGVy LnJlc3VsdDxicj4mZ3Q7ICZndDtAQCAtNjgwLDggKzY4MCw5IEBAIHMuaW5kZXgucGs8YnI+Jmd0 OyAmZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7LSB0eXBlOiB1bnNpZ25lZDxicj4mZ3Q7ICZndDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtpc19udWxsYWJsZTogZmFsc2U8YnI+Jmd0OyAmZ3Q7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ZmllbGRubzogMjxicj4mZ3Q7ICZndDstIHR5 cGU6IFRSRUU8YnI+Jmd0OyAmZ3Q7KyBoaW50OiB0cnVlPGJyPiZndDsgJmd0OyZuYnNwOyZuYnNw OyZuYnNwO2lkOiAwPGJyPiZndDsgJmd0OysgdHlwZTogVFJFRTxicj4mZ3Q7ICZndDsmbmJzcDsm bmJzcDsmbmJzcDtzcGFjZV9pZDogNzMxPGJyPiZndDsgJmd0OyZuYnNwOyZuYnNwOyZuYnNwO25h bWU6IHBrPGJyPiZndDsgJmd0OyZuYnNwOy4uLjxicj4mZ3Q7ICZndDtAQCAtNzEwLDkgKzcxMSwx MCBAQCBzLmluZGV4LnBrPGJyPiZndDsgJmd0OyZuYnNwOyZuYnNwOyZuYnNwOy0gdHlwZTogdW5z aWduZWQ8YnI+Jmd0OyAmZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7aXNfbnVsbGFi bGU6IGZhbHNlPGJyPiZndDsgJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO2ZpZWxk bm86IDE8YnI+Jmd0OyAmZ3Q7LSBzcGFjZV9pZDogNzMxPGJyPiZndDsgJmd0OysgaGludDogdHJ1 ZTxicj4mZ3Q7ICZndDsmbmJzcDsmbmJzcDsmbmJzcDtpZDogMDxicj4mZ3Q7ICZndDsmbmJzcDsm bmJzcDsmbmJzcDt0eXBlOiBUUkVFPGJyPiZndDsgJmd0Oysgc3BhY2VfaWQ6IDczMTxicj4mZ3Q7 ICZndDsmbmJzcDsmbmJzcDsmbmJzcDtuYW1lOiBwazxicj4mZ3Q7ICZndDsmbmJzcDsuLi48YnI+ Jmd0OyAmZ3Q7Jm5ic3A7cy5pbmRleC5zZWNvbmRhcnk8YnI+Jmd0OyAmZ3Q7QEAgLTcyMiw4ICs3 MjQsOSBAQCBzLmluZGV4LnNlY29uZGFyeTxicj4mZ3Q7ICZndDsmbmJzcDsmbmJzcDsmbmJzcDst IHR5cGU6IHVuc2lnbmVkPGJyPiZndDsgJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw O2lzX251bGxhYmxlOiBmYWxzZTxicj4mZ3Q7ICZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDtmaWVsZG5vOiAyPGJyPiZndDsgJmd0Oy0gdHlwZTogVFJFRTxicj4mZ3Q7ICZndDsrIGhp bnQ6IHRydWU8YnI+Jmd0OyAmZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7aWQ6IDE8YnI+Jmd0OyAmZ3Q7 KyB0eXBlOiBUUkVFPGJyPiZndDsgJmd0OyZuYnNwOyZuYnNwOyZuYnNwO3NwYWNlX2lkOiA3MzE8 YnI+Jmd0OyAmZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7bmFtZTogc2Vjb25kYXJ5PGJyPiZndDsgJmd0 OyZuYnNwOy4uLjxicj4mZ3Q7ICZndDtAQCAtMTU1OSwzICsxNTYyLDk3IEBAIGFzc2VydChlcnI6 bWF0Y2goJ2RvZXMgbm90IGV4aXN0Jykgfj0gbmlsKTxicj4mZ3Q7ICZndDsmbmJzcDstLS08YnI+ Jmd0OyAmZ3Q7Jm5ic3A7LSB0cnVlPGJyPiZndDsgJmd0OyZuYnNwOy4uLjxicj4mZ3Q7ICZndDsr LS0gaGludDxicj4mZ3Q7ICZndDsrcyA9IGJveC5zY2hlbWEuY3JlYXRlX3NwYWNlKCd0ZXN0Jyk7 PGJyPiZndDsgJmd0OystLS08YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsrczpjcmVhdGVf aW5kZXgoJ3Rlc3QxJywge3R5cGU9J3RyZWUnLCBwYXJ0cz17ezEsICd1aW50J319fSkuaGludDxi cj4mZ3Q7ICZndDsrLS0tPGJyPiZndDsgJmd0OystIHRydWU8YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4m Z3Q7ICZndDsrczpjcmVhdGVfaW5kZXgoJ3Rlc3QyJywge3R5cGU9J3RyZWUnLCBwYXJ0cz17ezIs ICd1aW50J319LCBoaW50ID0gdHJ1ZX0pLmhpbnQ8YnI+Jmd0OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZn dDsrLSB0cnVlPGJyPiZndDsgJmd0OysuLi48YnI+Jmd0OyAmZ3Q7K3M6Y3JlYXRlX2luZGV4KCd0 ZXN0MycsIHt0eXBlPSd0cmVlJywgcGFydHM9e3szLCAndWludCd9fSwgaGludCA9IGZhbHNlfSku aGludDxicj4mZ3Q7ICZndDsrLS0tPGJyPiZndDsgJmd0OystIGZhbHNlPGJyPiZndDsgJmd0Oysu Li48YnI+Jmd0OyAmZ3Q7K3M6Y3JlYXRlX2luZGV4KCd0ZXN0NCcsIHt0eXBlPSd0cmVlJywgcGFy dHM9e3s0LCAnc3RyaW5nJ319LCBoaW50ID0gZmFsc2V9KS5oaW50PGJyPiZndDsgJmd0OystLS08 YnI+Jmd0OyAmZ3Q7Ky0gZmFsc2U8YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsrcy5pbmRl eC50ZXN0MS5oaW50PGJyPiZndDsgJmd0OystLS08YnI+Jmd0OyAmZ3Q7Ky0gdHJ1ZTxicj4mZ3Q7 ICZndDsrLi4uPGJyPiZndDsgJmd0OytzLmluZGV4LnRlc3QyLmhpbnQ8YnI+Jmd0OyAmZ3Q7Ky0t LTxicj4mZ3Q7ICZndDsrLSB0cnVlPGJyPiZndDsgJmd0OysuLi48YnI+Jmd0OyAmZ3Q7K3MuaW5k ZXgudGVzdDMuaGludDxicj4mZ3Q7ICZndDsrLS0tPGJyPiZndDsgJmd0OystIGZhbHNlPGJyPiZn dDsgJmd0OysuLi48YnI+Jmd0OyAmZ3Q7K3MuaW5kZXgudGVzdDQuaGludDxicj4mZ3Q7ICZndDsr LS0tPGJyPiZndDsgJmd0OystIGZhbHNlPGJyPiZndDsgJmd0OysuLi48YnI+Jmd0OyAmZ3Q7K04g PSAxMDAwIGJveC5iZWdpbigpIGZvciBpID0gMSxOIGRvIHM6cmVwbGFjZXtpLCBpLCBpLCAnJyAu LiBpfSBlbmQgYm94LmNvbW1pdCgpPGJyPiZndDsgJmd0OystLS08YnI+Jmd0OyAmZ3Q7Ky4uLjxi cj4mZ3Q7ICZndDsrcy5pbmRleC50ZXN0MTpic2l6ZSgpID09IHMuaW5kZXgudGVzdDI6YnNpemUo KTxicj4mZ3Q7ICZndDsrLS0tPGJyPiZndDsgJmd0OystIHRydWU8YnI+Jmd0OyAmZ3Q7Ky4uLjxi cj4mZ3Q7ICZndDsrcy5pbmRleC50ZXN0MTpic2l6ZSgpICZndDsgcy5pbmRleC50ZXN0Mzpic2l6 ZSgpPGJyPiZndDsgJmd0OystLS08YnI+Jmd0OyAmZ3Q7Ky0gdHJ1ZTxicj4mZ3Q7ICZndDsrLi4u PGJyPiZndDsgJmd0OytzLmluZGV4LnRlc3QxOmJzaXplKCkgJmd0OyBzLmluZGV4LnRlc3Q0OmJz aXplKCk8YnI+Jmd0OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZndDsrLSB0cnVlPGJyPiZndDsgJmd0Oysu Li48YnI+Jmd0OyAmZ3Q7K3MuaW5kZXgudGVzdDE6YWx0ZXJ7aGludD1mYWxzZX08YnI+Jmd0OyAm Z3Q7Ky0tLTxicj4mZ3Q7ICZndDsrLi4uPGJyPiZndDsgJmd0OytzLmluZGV4LnRlc3QyOmFsdGVy e2hpbnQ9dHJ1ZX08YnI+Jmd0OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZndDsrLi4uPGJyPiZndDsgJmd0 OytzLmluZGV4LnRlc3QzOmFsdGVye25hbWU9J3Rlc3QzMycsIGhpbnQ9ZmFsc2V9PGJyPiZndDsg Jmd0OystLS08YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsrcy5pbmRleC50ZXN0NDphbHRl cntoaW50PXRydWV9PGJyPiZndDsgJmd0OystLS08YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZn dDsrcy5pbmRleC50ZXN0MS5oaW50PGJyPiZndDsgJmd0OystLS08YnI+Jmd0OyAmZ3Q7Ky0gZmFs c2U8YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsrcy5pbmRleC50ZXN0Mi5oaW50PGJyPiZn dDsgJmd0OystLS08YnI+Jmd0OyAmZ3Q7Ky0gdHJ1ZTxicj4mZ3Q7ICZndDsrLi4uPGJyPiZndDsg Jmd0OytzLmluZGV4LnRlc3QzMy5oaW50PGJyPiZndDsgJmd0OystLS08YnI+Jmd0OyAmZ3Q7Ky0g ZmFsc2U8YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsrcy5pbmRleC50ZXN0NC5oaW50PGJy PiZndDsgJmd0OystLS08YnI+Jmd0OyAmZ3Q7Ky0gdHJ1ZTxicj4mZ3Q7ICZndDsrLi4uPGJyPiZn dDsgJmd0OytzLmluZGV4LnRlc3QxOmJzaXplKCkgJmx0OyBzLmluZGV4LnRlc3QyOmJzaXplKCk8 YnI+Jmd0OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZndDsrLSB0cnVlPGJyPiZndDsgJmd0OysuLi48YnI+ Jmd0OyAmZ3Q7K3MuaW5kZXgudGVzdDE6YnNpemUoKSA9PSBzLmluZGV4LnRlc3QzMzpic2l6ZSgp PGJyPiZndDsgJmd0OystLS08YnI+Jmd0OyAmZ3Q7Ky0gdHJ1ZTxicj4mZ3Q7ICZndDsrLi4uPGJy PiZndDsgJmd0OytzLmluZGV4LnRlc3QxOmJzaXplKCkgJmx0OyBzLmluZGV4LnRlc3Q0OmJzaXpl KCk8YnI+Jmd0OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZndDsrLSB0cnVlPGJyPiZndDsgJmd0OysuLi48 YnI+Jmd0OyAmZ3Q7K3M6ZHJvcCgpPGJyPiZndDsgJmd0OystLS08YnI+Jmd0OyAmZ3Q7Ky4uLjxi cj4mZ3Q7ICZndDtkaWZmIC0tZ2l0IGEvdGVzdC9ib3gvYWx0ZXIudGVzdC5sdWEgYi90ZXN0L2Jv eC9hbHRlci50ZXN0Lmx1YTxicj4mZ3Q7ICZndDtpbmRleCBhYmQwOGUyLi4yMTE0MTg2IDEwMDY0 NDxicj4mZ3Q7ICZndDstLS0gYS90ZXN0L2JveC9hbHRlci50ZXN0Lmx1YTxicj4mZ3Q7ICZndDsr KysgYi90ZXN0L2JveC9hbHRlci50ZXN0Lmx1YTxicj4mZ3Q7ICZndDtAQCAtNjIwLDMgKzYyMCwz NyBAQCBzOmRyb3AoKTxicj4mZ3Q7ICZndDsmbmJzcDtzOmFsdGVyKHt9KTxicj4mZ3Q7ICZndDsm bmJzcDtvaywgZXJyID0gcGNhbGwoYm94LnNjaGVtYS5zcGFjZS5hbHRlciwgcy5pZCwge30pPGJy PiZndDsgJmd0OyZuYnNwO2Fzc2VydChlcnI6bWF0Y2goJ2RvZXMgbm90IGV4aXN0Jykgfj0gbmls KTxicj4mZ3Q7ICZndDsrPGJyPiZndDsgJmd0OystLSBoaW50PGJyPiZndDsgJmd0OytzID0gYm94 LnNjaGVtYS5jcmVhdGVfc3BhY2UoJ3Rlc3QnKTs8YnI+Jmd0OyAmZ3Q7K3M6Y3JlYXRlX2luZGV4 KCd0ZXN0MScsIHt0eXBlPSd0cmVlJywgcGFydHM9e3sxLCAndWludCd9fX0pLmhpbnQ8YnI+Jmd0 OyAmZ3Q7K3M6Y3JlYXRlX2luZGV4KCd0ZXN0MicsIHt0eXBlPSd0cmVlJywgcGFydHM9e3syLCAn dWludCd9fSwgaGludCA9IHRydWV9KS5oaW50PGJyPiZndDsgJmd0OytzOmNyZWF0ZV9pbmRleCgn dGVzdDMnLCB7dHlwZT0ndHJlZScsIHBhcnRzPXt7MywgJ3VpbnQnfX0sIGhpbnQgPSBmYWxzZX0p LmhpbnQ8YnI+Jmd0OyAmZ3Q7K3M6Y3JlYXRlX2luZGV4KCd0ZXN0NCcsIHt0eXBlPSd0cmVlJywg cGFydHM9e3s0LCAnc3RyaW5nJ319LCBoaW50ID0gZmFsc2V9KS5oaW50PGJyPiZndDsgJmd0Oys8 YnI+Jmd0OyAmZ3Q7K3MuaW5kZXgudGVzdDEuaGludDxicj4mZ3Q7ICZndDsrcy5pbmRleC50ZXN0 Mi5oaW50PGJyPiZndDsgJmd0OytzLmluZGV4LnRlc3QzLmhpbnQ8YnI+Jmd0OyAmZ3Q7K3MuaW5k ZXgudGVzdDQuaGludDxicj4mZ3Q7ICZndDsrPGJyPiZndDsgJmd0OytOID0gMTAwMCBib3guYmVn aW4oKSBmb3IgaSA9IDEsTiBkbyBzOnJlcGxhY2V7aSwgaSwgaSwgJycgLi4gaX0gZW5kIGJveC5j b21taXQoKTxicj4mZ3Q7ICZndDsrPGJyPiZndDsgJmd0OytzLmluZGV4LnRlc3QxOmJzaXplKCkg PT0gcy5pbmRleC50ZXN0Mjpic2l6ZSgpPGJyPiZndDsgJmd0OytzLmluZGV4LnRlc3QxOmJzaXpl KCkgJmd0OyBzLmluZGV4LnRlc3QzOmJzaXplKCk8YnI+Jmd0OyAmZ3Q7K3MuaW5kZXgudGVzdDE6 YnNpemUoKSAmZ3Q7IHMuaW5kZXgudGVzdDQ6YnNpemUoKTxicj4mZ3Q7ICZndDsrPGJyPiZndDsg Jmd0OytzLmluZGV4LnRlc3QxOmFsdGVye2hpbnQ9ZmFsc2V9PGJyPiZndDsgJmd0OytzLmluZGV4 LnRlc3QyOmFsdGVye2hpbnQ9dHJ1ZX08YnI+Jmd0OyAmZ3Q7K3MuaW5kZXgudGVzdDM6YWx0ZXJ7 bmFtZT0ndGVzdDMzJywgaGludD1mYWxzZX08YnI+Jmd0OyAmZ3Q7K3MuaW5kZXgudGVzdDQ6YWx0 ZXJ7aGludD10cnVlfTxicj4mZ3Q7ICZndDsrPGJyPiZndDsgJmd0OytzLmluZGV4LnRlc3QxLmhp bnQ8YnI+Jmd0OyAmZ3Q7K3MuaW5kZXgudGVzdDIuaGludDxicj4mZ3Q7ICZndDsrcy5pbmRleC50 ZXN0MzMuaGludDxicj4mZ3Q7ICZndDsrcy5pbmRleC50ZXN0NC5oaW50PGJyPiZndDsgJmd0Oys8 YnI+Jmd0OyAmZ3Q7K3MuaW5kZXgudGVzdDE6YnNpemUoKSAmbHQ7IHMuaW5kZXgudGVzdDI6YnNp emUoKTxicj4mZ3Q7ICZndDsrcy5pbmRleC50ZXN0MTpic2l6ZSgpID09IHMuaW5kZXgudGVzdDMz OmJzaXplKCk8YnI+Jmd0OyAmZ3Q7K3MuaW5kZXgudGVzdDE6YnNpemUoKSAmbHQ7IHMuaW5kZXgu dGVzdDQ6YnNpemUoKTxicj4mZ3Q7ICZndDsrPGJyPiZndDsgJmd0OytzOmRyb3AoKTxicj4mZ3Q7 ICZndDtcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGU8YnI+Jmd0OyAmZ3Q7ZGlmZiAtLWdpdCBh L3Rlc3QvYm94L2Vycmluai5yZXN1bHQgYi90ZXN0L2JveC9lcnJpbmoucmVzdWx0PGJyPiZndDsg Jmd0O2luZGV4IDYxM2QyMmMuLmI4YzI0NzYgMTAwNjQ0PGJyPiZndDsgJmd0Oy0tLSBhL3Rlc3Qv Ym94L2Vycmluai5yZXN1bHQ8YnI+Jmd0OyAmZ3Q7KysrIGIvdGVzdC9ib3gvZXJyaW5qLnJlc3Vs dDxicj4mZ3Q7ICZndDtAQCAtMTc3NCw5ICsxNzc0LDEwIEBAIHJ0cmVlc3BhY2U6Y3JlYXRlX2lu ZGV4KCdwaycsIHtpZl9ub3RfZXhpc3RzID0gdHJ1ZX0pPGJyPiZndDsgJmd0OyZuYnNwOyZuYnNw OyZuYnNwOy0gdHlwZTogdW5zaWduZWQ8YnI+Jmd0OyAmZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7aXNfbnVsbGFibGU6IGZhbHNlPGJyPiZndDsgJmd0OyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwO2ZpZWxkbm86IDE8YnI+Jmd0OyAmZ3Q7KyBoaW50OiB0cnVlPGJyPiZndDsg Jmd0OyZuYnNwOyZuYnNwOyZuYnNwO2lkOiAwPGJyPiZndDsgJmd0Oy0gc3BhY2VfaWQ6IDUxMjxi cj4mZ3Q7ICZndDsmbmJzcDsmbmJzcDsmbmJzcDt0eXBlOiBUUkVFPGJyPiZndDsgJmd0Oysgc3Bh Y2VfaWQ6IDUxMjxicj4mZ3Q7ICZndDsmbmJzcDsmbmJzcDsmbmJzcDtuYW1lOiBwazxicj4mZ3Q7 ICZndDsmbmJzcDsuLi48YnI+Jmd0OyAmZ3Q7Jm5ic3A7cnRyZWVzcGFjZTpjcmVhdGVfaW5kZXgo J3RhcmdldCcsIHt0eXBlPSdydHJlZScsIGRpbWVuc2lvbiA9IDMsIHBhcnRzPXsyLCAnYXJyYXkn fSx1bmlxdWUgPSBmYWxzZSwgaWZfbm90X2V4aXN0cyA9IHRydWUsfSk8YnI+Jmd0OyAmZ3Q7ZGlm ZiAtLWdpdCBhL3Rlc3QvYm94L3RyZWVfcGsucmVzdWx0IGIvdGVzdC9ib3gvdHJlZV9way5yZXN1 bHQ8YnI+Jmd0OyAmZ3Q7aW5kZXggZGYzYzc4Yi4uMThjYjYwNyAxMDA2NDQ8YnI+Jmd0OyAmZ3Q7 LS0tIGEvdGVzdC9ib3gvdHJlZV9way5yZXN1bHQ8YnI+Jmd0OyAmZ3Q7KysrIGIvdGVzdC9ib3gv dHJlZV9way5yZXN1bHQ8YnI+Jmd0OyAmZ3Q7QEAgLTg1MiwzICs4NTIsMzE3IEBAIGJveC5pbnRl cm5hbC5jb2xsYXRpb24uZHJvcCgndGVzdCcpPGJyPiZndDsgJmd0OyZuYnNwO2JveC5pbnRlcm5h bC5jb2xsYXRpb24uZHJvcCgndGVzdC1jaScpPGJyPiZndDsgJmd0OyZuYnNwOy0tLTxicj4mZ3Q7 ICZndDsmbmJzcDsuLi48YnI+Jmd0OyAmZ3Q7Ky0tIGhpbnRzPGJyPiZndDsgJmd0OytzID0gYm94 LnNjaGVtYS5zcGFjZS5jcmVhdGUoJ3Rlc3QnKTxicj4mZ3Q7ICZndDsrLS0tPGJyPiZndDsgJmd0 OysuLi48YnI+Jmd0OyAmZ3Q7K3M6Y3JlYXRlX2luZGV4KCd0ZXN0Jywge3R5cGUgPSAndHJlZScs IGhpbnQgPSAndHJ1ZSd9ICk8YnI+Jmd0OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZndDsrLSBlcnJvcjog SWxsZWdhbCBwYXJhbWV0ZXJzLCBvcHRpb25zIHBhcmFtZXRlciAnaGludCcgc2hvdWxkIGJlIG9m IHR5cGUgYm9vbGVhbjxicj4mZ3Q7ICZndDsrLi4uPGJyPiZndDsgJmd0OytzOmNyZWF0ZV9pbmRl eCgndGVzdCcsIHt0eXBlID0gJ2hhc2gnLCBoaW50ID0gdHJ1ZX0gKTxicj4mZ3Q7ICZndDsrLS0t PGJyPiZndDsgJmd0OystIGVycm9yOiAnQ2FuJyd0IGNyZWF0ZSBvciBtb2RpZnkgaW5kZXggJyd0 ZXN0JycgaW4gc3BhY2UgJyd0ZXN0Jyc6IGhpbnQgaXMgb25seSByZWFzb25hYmxlPGJyPiZndDsg Jmd0Oysgd2l0aCBtZW10eCB0cmVlIGluZGV4Jzxicj4mZ3Q7ICZndDsrLi4uPGJyPiZndDsgJmd0 OytzOmNyZWF0ZV9pbmRleCgndGVzdCcsIHt0eXBlID0gJ2hhc2gnfSk6YWx0ZXIoe2hpbnQgPSB0 cnVlfSk8YnI+Jmd0OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZndDsrLSBlcnJvcjogJ0NhbicndCBjcmVh dGUgb3IgbW9kaWZ5IGluZGV4ICcndGVzdCcnIGluIHNwYWNlICcndGVzdCcnOiBoaW50IGlzIG9u bHkgcmVhc29uYWJsZTxicj4mZ3Q7ICZndDsrIHdpdGggbWVtdHggdHJlZSBpbmRleCc8YnI+Jmd0 OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsrczpjcmVhdGVfaW5kZXgoJ211bHRpa2V5Jywge2hpbnQg PSB0cnVlLCBwYXJ0cyA9IHt7MiwgJ2ludCcsIHBhdGggPSAnWypdJ319fSk8YnI+Jmd0OyAmZ3Q7 Ky0tLTxicj4mZ3Q7ICZndDsrLSBlcnJvcjogJ0NhbicndCBjcmVhdGUgb3IgbW9kaWZ5IGluZGV4 ICcnbXVsdGlrZXknJyBpbiBzcGFjZSAnJ3Rlc3QnJzogbXVsdGlrZXkgaW5kZXg8YnI+Jmd0OyAm Z3Q7KyBjYW4nJ3QgdXNlIGhpbnRzJzxicj4mZ3Q7ICZndDsrLi4uPGJyPiZndDsgJmd0OytzOmNy ZWF0ZV9pbmRleCgnbXVsdGlrZXknLCB7cGFydHMgPSB7ezIsICdpbnQnLCBwYXRoID0gJ1sqXSd9 fX0pOmFsdGVyKHtoaW50ID0gdHJ1ZX0pPGJyPiZndDsgJmd0OystLS08YnI+Jmd0OyAmZ3Q7Ky0g ZXJyb3I6ICdDYW4nJ3QgY3JlYXRlIG9yIG1vZGlmeSBpbmRleCAnJ211bHRpa2V5JycgaW4gc3Bh Y2UgJyd0ZXN0Jyc6IG11bHRpa2V5IGluZGV4PGJyPiZndDsgJmd0OysgY2FuJyd0IHVzZSBoaW50 cyc8YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsrbHVhX2NvZGUgPSBbW2Z1bmN0aW9uKHR1 cGxlKSByZXR1cm4ge3R1cGxlWzFdICsgdHVwbGVbMl19IGVuZF1dPGJyPiZndDsgJmd0OystLS08 YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsrYm94LnNjaGVtYS5mdW5jLmNyZWF0ZSgncycs IHtib2R5ID0gbHVhX2NvZGUsIGlzX2RldGVybWluaXN0aWMgPSB0cnVlLCBpc19zYW5kYm94ZWQg PSB0cnVlfSk8YnI+Jmd0OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZndDsrLi4uPGJyPiZndDsgJmd0Oytz OmNyZWF0ZV9pbmRleCgnZnVuYycsIHtoaW50ID0gdHJ1ZSwgZnVuYyA9IGJveC5mdW5jLnMuaWQs IHBhcnRzID0ge3sxLCAndW5zaWduZWQnfX19KTxicj4mZ3Q7ICZndDsrLS0tPGJyPiZndDsgJmd0 OystIGVycm9yOiAnQ2FuJyd0IGNyZWF0ZSBvciBtb2RpZnkgaW5kZXggJydmdW5jJycgaW4gc3Bh Y2UgJyd0ZXN0Jyc6IGZ1bmN0aW9uYWwgaW5kZXg8YnI+Jmd0OyAmZ3Q7KyBjYW4nJ3QgdXNlIGhp bnRzJzxicj4mZ3Q7ICZndDsrLi4uPGJyPiZndDsgJmd0OytzOmRyb3AoKTxicj4mZ3Q7ICZndDsr LS0tPGJyPiZndDsgJmd0OysuLi48YnI+Jmd0OyAmZ3Q7K3MgPSBib3guc2NoZW1hLnNwYWNlLmNy ZWF0ZSgndGVzdCcsIHtlbmdpbmUgPSAndmlueWwnfSk8YnI+Jmd0OyAmZ3Q7Ky0tLTxicj4mZ3Q7 ICZndDsrLi4uPGJyPiZndDsgJmd0OytzOmNyZWF0ZV9pbmRleCgndGVzdCcsIHt0eXBlID0gJ3Ry ZWUnLCBoaW50ID0gdHJ1ZX0gKTxicj4mZ3Q7ICZndDsrLS0tPGJyPiZndDsgJmd0OystIGVycm9y OiAnQ2FuJyd0IGNyZWF0ZSBvciBtb2RpZnkgaW5kZXggJyd0ZXN0JycgaW4gc3BhY2UgJyd0ZXN0 Jyc6IGhpbnQgaXMgb25seSByZWFzb25hYmxlPGJyPiZndDsgJmd0Oysgd2l0aCBtZW10eCB0cmVl IGluZGV4Jzxicj4mZ3Q7ICZndDsrLi4uPGJyPiZndDsgJmd0OytzOmRyb3AoKTxicj4mZ3Q7ICZn dDsrLS0tPGJyPiZndDsgJmd0OysuLi48YnI+Jmd0OyAmZ3Q7Ky0tIG51bWVyaWMgaGludHM8YnI+ Jmd0OyAmZ3Q7K3MxID0gYm94LnNjaGVtYS5zcGFjZS5jcmVhdGUoJ3Rlc3QxJyk8YnI+Jmd0OyAm Z3Q7Ky0tLTxicj4mZ3Q7ICZndDsrLi4uPGJyPiZndDsgJmd0OytzMTpjcmVhdGVfaW5kZXgoJ3Rl c3QnLCB7dHlwZSA9ICd0cmVlJywgaGludCA9IGZhbHNlfSkuaGludDxicj4mZ3Q7ICZndDsrLS0t PGJyPiZndDsgJmd0OystIGZhbHNlPGJyPiZndDsgJmd0OysuLi48YnI+Jmd0OyAmZ3Q7K3MyID0g Ym94LnNjaGVtYS5zcGFjZS5jcmVhdGUoJ3Rlc3QyJyk8YnI+Jmd0OyAmZ3Q7Ky0tLTxicj4mZ3Q7 ICZndDsrLi4uPGJyPiZndDsgJmd0OytzMjpjcmVhdGVfaW5kZXgoJ3Rlc3QnLCB7dHlwZSA9ICd0 cmVlJ30pLmhpbnQ8YnI+Jmd0OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZndDsrLSB0cnVlPGJyPiZndDsg Jmd0OysuLi48YnI+Jmd0OyAmZ3Q7K04gPSAyMDAwPGJyPiZndDsgJmd0OystLS08YnI+Jmd0OyAm Z3Q7Ky4uLjxicj4mZ3Q7ICZndDsrYm94LmJlZ2luKCkgZm9yIGkgPSAxLE4gZG8gbG9jYWwgdiA9 IG1hdGgucmFuZG9tKDEwICogTikgczE6cmVwbGFjZXt2fSBzMjpyZXBsYWNle3Z9IGVuZCBib3gu Y29tbWl0KCk8YnI+Jmd0OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZndDsrLi4uPGJyPiZndDsgJmd0Oytz MTpjb3VudCgpID09IHMyOmNvdW50KCk8YnI+Jmd0OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZndDsrLSB0 cnVlPGJyPiZndDsgJmd0OysuLi48YnI+Jmd0OyAmZ3Q7K2dvb2QgPSB0cnVlIHIxID0gczE6c2Vs ZWN0e30gcjIgPSBzMjpzZWxlY3R7fTxicj4mZ3Q7ICZndDsrLS0tPGJyPiZndDsgJmd0OysuLi48 YnI+Jmd0OyAmZ3Q7K2lmICNyMSB+PSAjcjIgdGhlbiBnb29kID0gZmFsc2UgZW5kPGJyPiZndDsg Jmd0OystLS08YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsrZm9yIGssdiBpbiBwYWlycyhy MSkgZG8gaWYgcjJba11bMV0gfj0gdlsxXSB0aGVuIGdvb2QgPSBmYWxzZSBlbmQgZW5kPGJyPiZn dDsgJmd0OystLS08YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsrZ29vZDxicj4mZ3Q7ICZn dDsrLS0tPGJyPiZndDsgJmd0OystIHRydWU8YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsr cjEgPSBuaWwgcjIgPSBuaWw8YnI+Jmd0OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZndDsrLi4uPGJyPiZn dDsgJmd0OytmdW5jdGlvbiBkaWZmKHQxLCB0MikgaWYgdDEgdGhlbiByZXR1cm4gdDFbMV0gfj0g dDJbMV0gZWxzZSByZXR1cm4gdDIgfj0gbmlsIGVuZCBlbmQ8YnI+Jmd0OyAmZ3Q7Ky0tLTxicj4m Z3Q7ICZndDsrLi4uPGJyPiZndDsgJmd0Oytmb3IgaSA9IDEsIE4gKiAxMCBkbyBpZiBkaWZmKHMx OmdldHtpfSwgczI6Z2V0e2l9KSB0aGVuIGdvb2QgPSBmYWxzZSBlbmQgZW5kPGJyPiZndDsgJmd0 OystLS08YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsrZ29vZDxicj4mZ3Q7ICZndDsrLS0t PGJyPiZndDsgJmd0OystIHRydWU8YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsrczEuaW5k ZXhbMF06YnNpemUoKSAmbHQ7IHMyLmluZGV4WzBdOmJzaXplKCk8YnI+Jmd0OyAmZ3Q7Ky0tLTxi cj4mZ3Q7ICZndDsrLSB0cnVlPGJyPiZndDsgJmd0OysuLi48YnI+Jmd0OyAmZ3Q7K3MxLmluZGV4 WzBdOmFsdGVye2hpbnQ9dHJ1ZX08YnI+Jmd0OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZndDsrLi4uPGJy PiZndDsgJmd0OytzMS5pbmRleFswXTpic2l6ZSgpID09IHMyLmluZGV4WzBdOmJzaXplKCk8YnI+ Jmd0OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZndDsrLSB0cnVlPGJyPiZndDsgJmd0OysuLi48YnI+Jmd0 OyAmZ3Q7K3MyLmluZGV4WzBdOmFsdGVye2hpbnQ9ZmFsc2V9PGJyPiZndDsgJmd0OystLS08YnI+ Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsrczEuaW5kZXhbMF06YnNpemUoKSAmZ3Q7IHMyLmlu ZGV4WzBdOmJzaXplKCk8YnI+Jmd0OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZndDsrLSB0cnVlPGJyPiZn dDsgJmd0OysuLi48YnI+Jmd0OyAmZ3Q7K3MxLmluZGV4WzBdOmFsdGVye2hpbnQ9ZmFsc2V9PGJy PiZndDsgJmd0OystLS08YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsrczEuaW5kZXhbMF06 YnNpemUoKSA9PSBzMi5pbmRleFswXTpic2l6ZSgpPGJyPiZndDsgJmd0OystLS08YnI+Jmd0OyAm Z3Q7Ky0gdHJ1ZTxicj4mZ3Q7ICZndDsrLi4uPGJyPiZndDsgJmd0OytzMTpkcm9wKCk8YnI+Jmd0 OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZndDsrLi4uPGJyPiZndDsgJmd0OytzMjpkcm9wKCk8YnI+Jmd0 OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZndDsrLi4uPGJyPiZndDsgJmd0OystLSBzdHJpbmcgaGludHM8 YnI+Jmd0OyAmZ3Q7K3MxID0gYm94LnNjaGVtYS5zcGFjZS5jcmVhdGUoJ3Rlc3QxJyk8YnI+Jmd0 OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZndDsrLi4uPGJyPiZndDsgJmd0OytzMTpjcmVhdGVfaW5kZXgo J3Rlc3QnLCB7dHlwZSA9ICd0cmVlJywgcGFydHMgPSB7MSwgJ3N0cid9LCBoaW50ID0gZmFsc2V9 KS5oaW50PGJyPiZndDsgJmd0OystLS08YnI+Jmd0OyAmZ3Q7Ky0gZmFsc2U8YnI+Jmd0OyAmZ3Q7 Ky4uLjxicj4mZ3Q7ICZndDsrczIgPSBib3guc2NoZW1hLnNwYWNlLmNyZWF0ZSgndGVzdDInKTxi cj4mZ3Q7ICZndDsrLS0tPGJyPiZndDsgJmd0OysuLi48YnI+Jmd0OyAmZ3Q7K3MyOmNyZWF0ZV9p bmRleCgndGVzdCcsIHt0eXBlID0gJ3RyZWUnLCBwYXJ0cyA9IHsxLCAnc3RyJ319KS5oaW50PGJy PiZndDsgJmd0OystLS08YnI+Jmd0OyAmZ3Q7Ky0gdHJ1ZTxicj4mZ3Q7ICZndDsrLi4uPGJyPiZn dDsgJmd0OytOID0gMTAwMDxicj4mZ3Q7ICZndDsrLS0tPGJyPiZndDsgJmd0OysuLi48YnI+Jmd0 OyAmZ3Q7K2JveC5iZWdpbigpIGZvciBpID0gMSxOIGRvIGxvY2FsIHYgPSAnJy4ubWF0aC5yYW5k b20oMTAgKiBOKSBzMTpyZXBsYWNle3Z9IHMyOnJlcGxhY2V7dn0gZW5kIGJveC5jb21taXQoKTxi cj4mZ3Q7ICZndDsrLS0tPGJyPiZndDsgJmd0OysuLi48YnI+Jmd0OyAmZ3Q7K3MxOmNvdW50KCkg PT0gczI6Y291bnQoKTxicj4mZ3Q7ICZndDsrLS0tPGJyPiZndDsgJmd0OystIHRydWU8YnI+Jmd0 OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsrZ29vZCA9IHRydWUgcjEgPSBzMTpzZWxlY3R7fSByMiA9 IHMyOnNlbGVjdHt9PGJyPiZndDsgJmd0OystLS08YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZn dDsraWYgI3IxIH49ICNyMiB0aGVuIGdvb2QgPSBmYWxzZSBlbmQ8YnI+Jmd0OyAmZ3Q7Ky0tLTxi cj4mZ3Q7ICZndDsrLi4uPGJyPiZndDsgJmd0Oytmb3Igayx2IGluIHBhaXJzKHIxKSBkbyBpZiBy MltrXVsxXSB+PSB2WzFdIHRoZW4gZ29vZCA9IGZhbHNlIGVuZCBlbmQ8YnI+Jmd0OyAmZ3Q7Ky0t LTxicj4mZ3Q7ICZndDsrLi4uPGJyPiZndDsgJmd0Oytnb29kPGJyPiZndDsgJmd0OystLS08YnI+ Jmd0OyAmZ3Q7Ky0gdHJ1ZTxicj4mZ3Q7ICZndDsrLi4uPGJyPiZndDsgJmd0OytyMSA9IG5pbCBy MiA9IG5pbDxicj4mZ3Q7ICZndDsrLS0tPGJyPiZndDsgJmd0OysuLi48YnI+Jmd0OyAmZ3Q7K2Z1 bmN0aW9uIGRpZmYodDEsIHQyKSBpZiB0MSB0aGVuIHJldHVybiB0MVsxXSB+PSB0MlsxXSBlbHNl IHJldHVybiB0MiB+PSBuaWwgZW5kIGVuZDxicj4mZ3Q7ICZndDsrLS0tPGJyPiZndDsgJmd0Oysu Li48YnI+Jmd0OyAmZ3Q7K2ZvciBpID0gMSwgTiAqIDEwIGRvIHYgPSAnJy4uaSBpZiBkaWZmKHMx OmdldHt2fSwgczI6Z2V0e3Z9KSB0aGVuIGdvb2QgPSBmYWxzZSBlbmQgZW5kPGJyPiZndDsgJmd0 OystLS08YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsrZ29vZDxicj4mZ3Q7ICZndDsrLS0t PGJyPiZndDsgJmd0OystIHRydWU8YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsrczEuaW5k ZXhbMF06YnNpemUoKSAmbHQ7IHMyLmluZGV4WzBdOmJzaXplKCk8YnI+Jmd0OyAmZ3Q7Ky0tLTxi cj4mZ3Q7ICZndDsrLSB0cnVlPGJyPiZndDsgJmd0OysuLi48YnI+Jmd0OyAmZ3Q7K3MxLmluZGV4 WzBdOmFsdGVye2hpbnQ9dHJ1ZX08YnI+Jmd0OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZndDsrLi4uPGJy PiZndDsgJmd0OytzMS5pbmRleFswXTpic2l6ZSgpID09IHMyLmluZGV4WzBdOmJzaXplKCk8YnI+ Jmd0OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZndDsrLSB0cnVlPGJyPiZndDsgJmd0OysuLi48YnI+Jmd0 OyAmZ3Q7K3MyLmluZGV4WzBdOmFsdGVye2hpbnQ9ZmFsc2V9PGJyPiZndDsgJmd0OystLS08YnI+ Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsrczEuaW5kZXhbMF06YnNpemUoKSAmZ3Q7IHMyLmlu ZGV4WzBdOmJzaXplKCk8YnI+Jmd0OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZndDsrLSB0cnVlPGJyPiZn dDsgJmd0OysuLi48YnI+Jmd0OyAmZ3Q7K3MxLmluZGV4WzBdOmFsdGVye2hpbnQ9ZmFsc2V9PGJy PiZndDsgJmd0OystLS08YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsrczEuaW5kZXhbMF06 YnNpemUoKSA9PSBzMi5pbmRleFswXTpic2l6ZSgpPGJyPiZndDsgJmd0OystLS08YnI+Jmd0OyAm Z3Q7Ky0gdHJ1ZTxicj4mZ3Q7ICZndDsrLi4uPGJyPiZndDsgJmd0OytzMTpkcm9wKCk8YnI+Jmd0 OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZndDsrLi4uPGJyPiZndDsgJmd0OytzMjpkcm9wKCk8YnI+Jmd0 OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZndDsrLi4uPGJyPiZndDsgJmd0OystLSBzdHJpbmcgd2l0aCBj b2xsYXRpb24gaGludHM8YnI+Jmd0OyAmZ3Q7K3MxID0gYm94LnNjaGVtYS5zcGFjZS5jcmVhdGUo J3Rlc3QxJyk8YnI+Jmd0OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZndDsrLi4uPGJyPiZndDsgJmd0Oytz MTpjcmVhdGVfaW5kZXgoJ3Rlc3QnLCB7dHlwZSA9ICd0cmVlJywgcGFydHMgPSB7ezEsICdzdHIn LCBjb2xsYXRpb24gPSAnVW5pY29kZSd9fSwgaGludCA9IGZhbHNlfSkuaGludDxicj4mZ3Q7ICZn dDsrLS0tPGJyPiZndDsgJmd0OystIGZhbHNlPGJyPiZndDsgJmd0OysuLi48YnI+Jmd0OyAmZ3Q7 K3MyID0gYm94LnNjaGVtYS5zcGFjZS5jcmVhdGUoJ3Rlc3QyJyk8YnI+Jmd0OyAmZ3Q7Ky0tLTxi cj4mZ3Q7ICZndDsrLi4uPGJyPiZndDsgJmd0OytzMjpjcmVhdGVfaW5kZXgoJ3Rlc3QnLCB7dHlw ZSA9ICd0cmVlJywgcGFydHMgPSB7ezEsICdzdHInLCBjb2xsYXRpb24gPSAnVW5pY29kZSd9fX0p LmhpbnQ8YnI+Jmd0OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZndDsrLSB0cnVlPGJyPiZndDsgJmd0Oysu Li48YnI+Jmd0OyAmZ3Q7K04gPSAxMDAwPGJyPiZndDsgJmd0OystLS08YnI+Jmd0OyAmZ3Q7Ky4u Ljxicj4mZ3Q7ICZndDsrc3ltcyA9IHsnYScsICdCJywgJ2MnLCAnRCcsICfQticsICfQgScsICd+ JywgJzEnLCAnJScsICcyJ308YnI+Jmd0OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZndDsrLi4uPGJyPiZn dDsgJmd0OytzeW1zX3NpemUgPSAjc3ltczxicj4mZ3Q7ICZndDsrLS0tPGJyPiZndDsgJmd0Oysu Li48YnI+Jmd0OyAmZ3Q7K2xlbiA9IDIwPGJyPiZndDsgJmd0OystLS08YnI+Jmd0OyAmZ3Q7Ky4u Ljxicj4mZ3Q7ICZndDsrdmFscyA9IHt9PGJyPiZndDsgJmd0OystLS08YnI+Jmd0OyAmZ3Q7Ky4u Ljxicj4mZ3Q7ICZndDsrZm9yIGkgPSAxLDIqTiBkbyBzdHIgPSAnJyBmb3Igaj0xLGxlbiBkbyBz dHIgPSBzdHIgLi4gc3ltc1ttYXRoLnJhbmRvbShzeW1zX3NpemUpXSBlbmQgdmFsc1tpXSA9IHN0 ciBlbmQ8YnI+Jmd0OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZndDsrLi4uPGJyPiZndDsgJmd0Oytmb3Ig aSA9IDEsTiBkbyBsb2NhbCB2ID0gdmFsc1tpXSBzMTpyZXBsYWNle3Z9IHMyOnJlcGxhY2V7dn0g ZW5kPGJyPiZndDsgJmd0OystLS08YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsrczE6Y291 bnQoKSA9PSBzMjpjb3VudCgpPGJyPiZndDsgJmd0OystLS08YnI+Jmd0OyAmZ3Q7Ky0gdHJ1ZTxi cj4mZ3Q7ICZndDsrLi4uPGJyPiZndDsgJmd0Oytnb29kID0gdHJ1ZSByMSA9IHMxOnNlbGVjdHt9 IHIyID0gczI6c2VsZWN0e308YnI+Jmd0OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZndDsrLi4uPGJyPiZn dDsgJmd0OytpZiAjcjEgfj0gI3IyIHRoZW4gZ29vZCA9IGZhbHNlIGVuZDxicj4mZ3Q7ICZndDsr LS0tPGJyPiZndDsgJmd0OysuLi48YnI+Jmd0OyAmZ3Q7K2ZvciBrLHYgaW4gcGFpcnMocjEpIGRv IGlmIHIyW2tdWzFdIH49IHZbMV0gdGhlbiBnb29kID0gZmFsc2UgZW5kIGVuZDxicj4mZ3Q7ICZn dDsrLS0tPGJyPiZndDsgJmd0OysuLi48YnI+Jmd0OyAmZ3Q7K2dvb2Q8YnI+Jmd0OyAmZ3Q7Ky0t LTxicj4mZ3Q7ICZndDsrLSB0cnVlPGJyPiZndDsgJmd0OysuLi48YnI+Jmd0OyAmZ3Q7K3IxID0g bmlsIHIyID0gbmlsPGJyPiZndDsgJmd0OystLS08YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZn dDsrZnVuY3Rpb24gZGlmZih0MSwgdDIpIGlmIHQxIHRoZW4gcmV0dXJuIHQxWzFdIH49IHQyWzFd IGVsc2UgcmV0dXJuIHQyIH49IG5pbCBlbmQgZW5kPGJyPiZndDsgJmd0OystLS08YnI+Jmd0OyAm Z3Q7Ky4uLjxicj4mZ3Q7ICZndDsrZm9yIGkgPSAxLCBOICogMiBkbyB2ID0gdmFsc1tpXSBpZiBk aWZmKHMxOmdldHt2fSwgczI6Z2V0e3Z9KSB0aGVuIGdvb2QgPSBmYWxzZSBlbmQgZW5kPGJyPiZn dDsgJmd0OystLS08YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsrZ29vZDxicj4mZ3Q7ICZn dDsrLS0tPGJyPiZndDsgJmd0OystIHRydWU8YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsr czEuaW5kZXhbMF06YnNpemUoKSAmbHQ7IHMyLmluZGV4WzBdOmJzaXplKCk8YnI+Jmd0OyAmZ3Q7 Ky0tLTxicj4mZ3Q7ICZndDsrLSB0cnVlPGJyPiZndDsgJmd0OysuLi48YnI+Jmd0OyAmZ3Q7K3Mx LmluZGV4WzBdOmFsdGVye2hpbnQ9dHJ1ZX08YnI+Jmd0OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZndDsr Li4uPGJyPiZndDsgJmd0OytzMS5pbmRleFswXTpic2l6ZSgpID09IHMyLmluZGV4WzBdOmJzaXpl KCk8YnI+Jmd0OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZndDsrLSB0cnVlPGJyPiZndDsgJmd0OysuLi48 YnI+Jmd0OyAmZ3Q7K3MyLmluZGV4WzBdOmFsdGVye2hpbnQ9ZmFsc2V9PGJyPiZndDsgJmd0Oyst LS08YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsrczEuaW5kZXhbMF06YnNpemUoKSAmZ3Q7 IHMyLmluZGV4WzBdOmJzaXplKCk8YnI+Jmd0OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZndDsrLSB0cnVl PGJyPiZndDsgJmd0OysuLi48YnI+Jmd0OyAmZ3Q7K3MxLmluZGV4WzBdOmFsdGVye2hpbnQ9ZmFs c2V9PGJyPiZndDsgJmd0OystLS08YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsrczEuaW5k ZXhbMF06YnNpemUoKSA9PSBzMi5pbmRleFswXTpic2l6ZSgpPGJyPiZndDsgJmd0OystLS08YnI+ Jmd0OyAmZ3Q7Ky0gdHJ1ZTxicj4mZ3Q7ICZndDsrLi4uPGJyPiZndDsgJmd0OytzMTpkcm9wKCk8 YnI+Jmd0OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZndDsrLi4uPGJyPiZndDsgJmd0OytzMjpkcm9wKCk8 YnI+Jmd0OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZndDsrLi4uPGJyPiZndDsgJmd0O2RpZmYgLS1naXQg YS90ZXN0L2JveC90cmVlX3BrLnRlc3QubHVhIGIvdGVzdC9ib3gvdHJlZV9way50ZXN0Lmx1YTxi cj4mZ3Q7ICZndDtpbmRleCAxMTkwYWI0Li4yZjIyZWQ5IDEwMDY0NDxicj4mZ3Q7ICZndDstLS0g YS90ZXN0L2JveC90cmVlX3BrLnRlc3QubHVhPGJyPiZndDsgJmd0OysrKyBiL3Rlc3QvYm94L3Ry ZWVfcGsudGVzdC5sdWE8YnI+Jmd0OyAmZ3Q7QEAgLTMwMSwzICszMDEsMTE4IEBAIHM6ZHJvcCgp PGJyPiZndDsgJmd0OyZuYnNwOzxicj4mZ3Q7ICZndDsmbmJzcDtib3guaW50ZXJuYWwuY29sbGF0 aW9uLmRyb3AoJ3Rlc3QnKTxicj4mZ3Q7ICZndDsmbmJzcDtib3guaW50ZXJuYWwuY29sbGF0aW9u LmRyb3AoJ3Rlc3QtY2knKTxicj4mZ3Q7ICZndDsrPGJyPiZndDsgJmd0OystLSBoaW50czxicj4m Z3Q7ICZndDsrcyA9IGJveC5zY2hlbWEuc3BhY2UuY3JlYXRlKCd0ZXN0Jyk8YnI+Jmd0OyAmZ3Q7 K3M6Y3JlYXRlX2luZGV4KCd0ZXN0Jywge3R5cGUgPSAndHJlZScsIGhpbnQgPSAndHJ1ZSd9ICk8 YnI+Jmd0OyAmZ3Q7K3M6Y3JlYXRlX2luZGV4KCd0ZXN0Jywge3R5cGUgPSAnaGFzaCcsIGhpbnQg PSB0cnVlfSApPGJyPiZndDsgJmd0OytzOmNyZWF0ZV9pbmRleCgndGVzdCcsIHt0eXBlID0gJ2hh c2gnfSk6YWx0ZXIoe2hpbnQgPSB0cnVlfSk8YnI+Jmd0OyAmZ3Q7K3M6Y3JlYXRlX2luZGV4KCdt dWx0aWtleScsIHtoaW50ID0gdHJ1ZSwgcGFydHMgPSB7ezIsICdpbnQnLCBwYXRoID0gJ1sqXSd9 fX0pPGJyPiZndDsgJmd0OytzOmNyZWF0ZV9pbmRleCgnbXVsdGlrZXknLCB7cGFydHMgPSB7ezIs ICdpbnQnLCBwYXRoID0gJ1sqXSd9fX0pOmFsdGVyKHtoaW50ID0gdHJ1ZX0pPGJyPiZndDsgJmd0 OytsdWFfY29kZSA9IFtbZnVuY3Rpb24odHVwbGUpIHJldHVybiB7dHVwbGVbMV0gKyB0dXBsZVsy XX0gZW5kXV08YnI+Jmd0OyAmZ3Q7K2JveC5zY2hlbWEuZnVuYy5jcmVhdGUoJ3MnLCB7Ym9keSA9 IGx1YV9jb2RlLCBpc19kZXRlcm1pbmlzdGljID0gdHJ1ZSwgaXNfc2FuZGJveGVkID0gdHJ1ZX0p PGJyPiZndDsgJmd0OytzOmNyZWF0ZV9pbmRleCgnZnVuYycsIHtoaW50ID0gdHJ1ZSwgZnVuYyA9 IGJveC5mdW5jLnMuaWQsIHBhcnRzID0ge3sxLCAndW5zaWduZWQnfX19KTxicj4mZ3Q7ICZndDsr czpkcm9wKCk8YnI+Jmd0OyAmZ3Q7Kzxicj4mZ3Q7ICZndDsrcyA9IGJveC5zY2hlbWEuc3BhY2Uu Y3JlYXRlKCd0ZXN0Jywge2VuZ2luZSA9ICd2aW55bCd9KTxicj4mZ3Q7ICZndDsrczpjcmVhdGVf aW5kZXgoJ3Rlc3QnLCB7dHlwZSA9ICd0cmVlJywgaGludCA9IHRydWV9ICk8YnI+Jmd0OyAmZ3Q7 K3M6ZHJvcCgpPGJyPiZndDsgJmd0Oys8YnI+Jmd0OyAmZ3Q7Ky0tIG51bWVyaWMgaGludHM8YnI+ Jmd0OyAmZ3Q7K3MxID0gYm94LnNjaGVtYS5zcGFjZS5jcmVhdGUoJ3Rlc3QxJyk8YnI+Jmd0OyAm Z3Q7K3MxOmNyZWF0ZV9pbmRleCgndGVzdCcsIHt0eXBlID0gJ3RyZWUnLCBoaW50ID0gZmFsc2V9 KS5oaW50PGJyPiZndDsgJmd0OytzMiA9IGJveC5zY2hlbWEuc3BhY2UuY3JlYXRlKCd0ZXN0Micp PGJyPiZndDsgJmd0OytzMjpjcmVhdGVfaW5kZXgoJ3Rlc3QnLCB7dHlwZSA9ICd0cmVlJ30pLmhp bnQ8YnI+Jmd0OyAmZ3Q7Kzxicj4mZ3Q7ICZndDsrTiA9IDIwMDA8YnI+Jmd0OyAmZ3Q7K2JveC5i ZWdpbigpIGZvciBpID0gMSxOIGRvIGxvY2FsIHYgPSBtYXRoLnJhbmRvbSgxMCAqIE4pIHMxOnJl cGxhY2V7dn0gczI6cmVwbGFjZXt2fSBlbmQgYm94LmNvbW1pdCgpPGJyPiZndDsgJmd0OytzMTpj b3VudCgpID09IHMyOmNvdW50KCk8YnI+Jmd0OyAmZ3Q7Kzxicj4mZ3Q7ICZndDsrZ29vZCA9IHRy dWUgcjEgPSBzMTpzZWxlY3R7fSByMiA9IHMyOnNlbGVjdHt9PGJyPiZndDsgJmd0OytpZiAjcjEg fj0gI3IyIHRoZW4gZ29vZCA9IGZhbHNlIGVuZDxicj4mZ3Q7ICZndDsrZm9yIGssdiBpbiBwYWly cyhyMSkgZG8gaWYgcjJba11bMV0gfj0gdlsxXSB0aGVuIGdvb2QgPSBmYWxzZSBlbmQgZW5kPGJy PiZndDsgJmd0Oytnb29kPGJyPiZndDsgJmd0OytyMSA9IG5pbCByMiA9IG5pbDxicj4mZ3Q7ICZn dDsrPGJyPiZndDsgJmd0OytmdW5jdGlvbiBkaWZmKHQxLCB0MikgaWYgdDEgdGhlbiByZXR1cm4g dDFbMV0gfj0gdDJbMV0gZWxzZSByZXR1cm4gdDIgfj0gbmlsIGVuZCBlbmQ8YnI+Jmd0OyAmZ3Q7 K2ZvciBpID0gMSwgTiAqIDEwIGRvIGlmIGRpZmYoczE6Z2V0e2l9LCBzMjpnZXR7aX0pIHRoZW4g Z29vZCA9IGZhbHNlIGVuZCBlbmQ8YnI+Jmd0OyAmZ3Q7K2dvb2Q8YnI+Jmd0OyAmZ3Q7Kzxicj4m Z3Q7ICZndDsrczEuaW5kZXhbMF06YnNpemUoKSAmbHQ7IHMyLmluZGV4WzBdOmJzaXplKCk8YnI+ Jmd0OyAmZ3Q7K3MxLmluZGV4WzBdOmFsdGVye2hpbnQ9dHJ1ZX08YnI+Jmd0OyAmZ3Q7K3MxLmlu ZGV4WzBdOmJzaXplKCkgPT0gczIuaW5kZXhbMF06YnNpemUoKTxicj4mZ3Q7ICZndDsrczIuaW5k ZXhbMF06YWx0ZXJ7aGludD1mYWxzZX08YnI+Jmd0OyAmZ3Q7K3MxLmluZGV4WzBdOmJzaXplKCkg Jmd0OyBzMi5pbmRleFswXTpic2l6ZSgpPGJyPiZndDsgJmd0OytzMS5pbmRleFswXTphbHRlcnto aW50PWZhbHNlfTxicj4mZ3Q7ICZndDsrczEuaW5kZXhbMF06YnNpemUoKSA9PSBzMi5pbmRleFsw XTpic2l6ZSgpPGJyPiZndDsgJmd0Oys8YnI+Jmd0OyAmZ3Q7K3MxOmRyb3AoKTxicj4mZ3Q7ICZn dDsrczI6ZHJvcCgpPGJyPiZndDsgJmd0Oys8YnI+Jmd0OyAmZ3Q7Ky0tIHN0cmluZyBoaW50czxi cj4mZ3Q7ICZndDsrczEgPSBib3guc2NoZW1hLnNwYWNlLmNyZWF0ZSgndGVzdDEnKTxicj4mZ3Q7 ICZndDsrczE6Y3JlYXRlX2luZGV4KCd0ZXN0Jywge3R5cGUgPSAndHJlZScsIHBhcnRzID0gezEs ICdzdHInfSwgaGludCA9IGZhbHNlfSkuaGludDxicj4mZ3Q7ICZndDsrczIgPSBib3guc2NoZW1h LnNwYWNlLmNyZWF0ZSgndGVzdDInKTxicj4mZ3Q7ICZndDsrczI6Y3JlYXRlX2luZGV4KCd0ZXN0 Jywge3R5cGUgPSAndHJlZScsIHBhcnRzID0gezEsICdzdHInfX0pLmhpbnQ8YnI+Jmd0OyAmZ3Q7 Kzxicj4mZ3Q7ICZndDsrTiA9IDEwMDA8YnI+Jmd0OyAmZ3Q7K2JveC5iZWdpbigpIGZvciBpID0g MSxOIGRvIGxvY2FsIHYgPSAnJy4ubWF0aC5yYW5kb20oMTAgKiBOKSBzMTpyZXBsYWNle3Z9IHMy OnJlcGxhY2V7dn0gZW5kIGJveC5jb21taXQoKTxicj4mZ3Q7ICZndDsrczE6Y291bnQoKSA9PSBz Mjpjb3VudCgpPGJyPiZndDsgJmd0Oys8YnI+Jmd0OyAmZ3Q7K2dvb2QgPSB0cnVlIHIxID0gczE6 c2VsZWN0e30gcjIgPSBzMjpzZWxlY3R7fTxicj4mZ3Q7ICZndDsraWYgI3IxIH49ICNyMiB0aGVu IGdvb2QgPSBmYWxzZSBlbmQ8YnI+Jmd0OyAmZ3Q7K2ZvciBrLHYgaW4gcGFpcnMocjEpIGRvIGlm IHIyW2tdWzFdIH49IHZbMV0gdGhlbiBnb29kID0gZmFsc2UgZW5kIGVuZDxicj4mZ3Q7ICZndDsr Z29vZDxicj4mZ3Q7ICZndDsrcjEgPSBuaWwgcjIgPSBuaWw8YnI+Jmd0OyAmZ3Q7Kzxicj4mZ3Q7 ICZndDsrZnVuY3Rpb24gZGlmZih0MSwgdDIpIGlmIHQxIHRoZW4gcmV0dXJuIHQxWzFdIH49IHQy WzFdIGVsc2UgcmV0dXJuIHQyIH49IG5pbCBlbmQgZW5kPGJyPiZndDsgJmd0Oytmb3IgaSA9IDEs IE4gKiAxMCBkbyB2ID0gJycuLmkgaWYgZGlmZihzMTpnZXR7dn0sIHMyOmdldHt2fSkgdGhlbiBn b29kID0gZmFsc2UgZW5kIGVuZDxicj4mZ3Q7ICZndDsrZ29vZDxicj4mZ3Q7ICZndDsrPGJyPiZn dDsgJmd0OytzMS5pbmRleFswXTpic2l6ZSgpICZsdDsgczIuaW5kZXhbMF06YnNpemUoKTxicj4m Z3Q7ICZndDsrczEuaW5kZXhbMF06YWx0ZXJ7aGludD10cnVlfTxicj4mZ3Q7ICZndDsrczEuaW5k ZXhbMF06YnNpemUoKSA9PSBzMi5pbmRleFswXTpic2l6ZSgpPGJyPiZndDsgJmd0OytzMi5pbmRl eFswXTphbHRlcntoaW50PWZhbHNlfTxicj4mZ3Q7ICZndDsrczEuaW5kZXhbMF06YnNpemUoKSAm Z3Q7IHMyLmluZGV4WzBdOmJzaXplKCk8YnI+Jmd0OyAmZ3Q7K3MxLmluZGV4WzBdOmFsdGVye2hp bnQ9ZmFsc2V9PGJyPiZndDsgJmd0OytzMS5pbmRleFswXTpic2l6ZSgpID09IHMyLmluZGV4WzBd OmJzaXplKCk8YnI+Jmd0OyAmZ3Q7Kzxicj4mZ3Q7ICZndDsrczE6ZHJvcCgpPGJyPiZndDsgJmd0 OytzMjpkcm9wKCk8YnI+Jmd0OyAmZ3Q7Kzxicj4mZ3Q7ICZndDsrLS0gc3RyaW5nIHdpdGggY29s bGF0aW9uIGhpbnRzPGJyPiZndDsgJmd0OytzMSA9IGJveC5zY2hlbWEuc3BhY2UuY3JlYXRlKCd0 ZXN0MScpPGJyPiZndDsgJmd0OytzMTpjcmVhdGVfaW5kZXgoJ3Rlc3QnLCB7dHlwZSA9ICd0cmVl JywgcGFydHMgPSB7ezEsICdzdHInLCBjb2xsYXRpb24gPSAnVW5pY29kZSd9fSwgaGludCA9IGZh bHNlfSkuaGludDxicj4mZ3Q7ICZndDsrczIgPSBib3guc2NoZW1hLnNwYWNlLmNyZWF0ZSgndGVz dDInKTxicj4mZ3Q7ICZndDsrczI6Y3JlYXRlX2luZGV4KCd0ZXN0Jywge3R5cGUgPSAndHJlZScs IHBhcnRzID0ge3sxLCAnc3RyJywgY29sbGF0aW9uID0gJ1VuaWNvZGUnfX19KS5oaW50PGJyPiZn dDsgJmd0Oys8YnI+Jmd0OyAmZ3Q7K04gPSAxMDAwPGJyPiZndDsgJmd0OytzeW1zID0geydhJywg J0InLCAnYycsICdEJywgJ9C2JywgJ9CBJywgJ34nLCAnMScsICclJywgJzInfTxicj4mZ3Q7ICZn dDsrc3ltc19zaXplID0gI3N5bXM8YnI+Jmd0OyAmZ3Q7K2xlbiA9IDIwPGJyPiZndDsgJmd0Oyt2 YWxzID0ge308YnI+Jmd0OyAmZ3Q7K2ZvciBpID0gMSwyKk4gZG8gc3RyID0gJycgZm9yIGo9MSxs ZW4gZG8gc3RyID0gc3RyIC4uIHN5bXNbbWF0aC5yYW5kb20oc3ltc19zaXplKV0gZW5kIHZhbHNb aV0gPSBzdHIgZW5kPGJyPiZndDsgJmd0Oys8YnI+Jmd0OyAmZ3Q7K2ZvciBpID0gMSxOIGRvIGxv Y2FsIHYgPSB2YWxzW2ldIHMxOnJlcGxhY2V7dn0gczI6cmVwbGFjZXt2fSBlbmQ8YnI+Jmd0OyAm Z3Q7K3MxOmNvdW50KCkgPT0gczI6Y291bnQoKTxicj4mZ3Q7ICZndDsrPGJyPiZndDsgJmd0Oytn b29kID0gdHJ1ZSByMSA9IHMxOnNlbGVjdHt9IHIyID0gczI6c2VsZWN0e308YnI+Jmd0OyAmZ3Q7 K2lmICNyMSB+PSAjcjIgdGhlbiBnb29kID0gZmFsc2UgZW5kPGJyPiZndDsgJmd0Oytmb3Igayx2 IGluIHBhaXJzKHIxKSBkbyBpZiByMltrXVsxXSB+PSB2WzFdIHRoZW4gZ29vZCA9IGZhbHNlIGVu ZCBlbmQ8YnI+Jmd0OyAmZ3Q7K2dvb2Q8YnI+Jmd0OyAmZ3Q7K3IxID0gbmlsIHIyID0gbmlsPGJy PiZndDsgJmd0Oys8YnI+Jmd0OyAmZ3Q7K2Z1bmN0aW9uIGRpZmYodDEsIHQyKSBpZiB0MSB0aGVu IHJldHVybiB0MVsxXSB+PSB0MlsxXSBlbHNlIHJldHVybiB0MiB+PSBuaWwgZW5kIGVuZDxicj4m Z3Q7ICZndDsrZm9yIGkgPSAxLCBOICogMiBkbyB2ID0gdmFsc1tpXSBpZiBkaWZmKHMxOmdldHt2 fSwgczI6Z2V0e3Z9KSB0aGVuIGdvb2QgPSBmYWxzZSBlbmQgZW5kPGJyPiZndDsgJmd0Oytnb29k PGJyPiZndDsgJmd0Oys8YnI+Jmd0OyAmZ3Q7K3MxLmluZGV4WzBdOmJzaXplKCkgJmx0OyBzMi5p bmRleFswXTpic2l6ZSgpPGJyPiZndDsgJmd0OytzMS5pbmRleFswXTphbHRlcntoaW50PXRydWV9 PGJyPiZndDsgJmd0OytzMS5pbmRleFswXTpic2l6ZSgpID09IHMyLmluZGV4WzBdOmJzaXplKCk8 YnI+Jmd0OyAmZ3Q7K3MyLmluZGV4WzBdOmFsdGVye2hpbnQ9ZmFsc2V9PGJyPiZndDsgJmd0Oytz MS5pbmRleFswXTpic2l6ZSgpICZndDsgczIuaW5kZXhbMF06YnNpemUoKTxicj4mZ3Q7ICZndDsr czEuaW5kZXhbMF06YWx0ZXJ7aGludD1mYWxzZX08YnI+Jmd0OyAmZ3Q7K3MxLmluZGV4WzBdOmJz aXplKCkgPT0gczIuaW5kZXhbMF06YnNpemUoKTxicj4mZ3Q7ICZndDsrPGJyPiZndDsgJmd0Oytz MTpkcm9wKCk8YnI+Jmd0OyAmZ3Q7K3MyOmRyb3AoKTxicj4mZ3Q7ICZndDtkaWZmIC0tZ2l0IGEv dGVzdC9ib3gvdHJlZV9wa19tdWx0aXBhcnQucmVzdWx0IGIvdGVzdC9ib3gvdHJlZV9wa19tdWx0 aXBhcnQucmVzdWx0PGJyPiZndDsgJmd0O2luZGV4IDkzMjE5ZjYuLjNmNmJiOTQgMTAwNjQ0PGJy PiZndDsgJmd0Oy0tLSBhL3Rlc3QvYm94L3RyZWVfcGtfbXVsdGlwYXJ0LnJlc3VsdDxicj4mZ3Q7 ICZndDsrKysgYi90ZXN0L2JveC90cmVlX3BrX211bHRpcGFydC5yZXN1bHQ8YnI+Jmd0OyAmZ3Q7 QEAgLTU0MiwzICs1NDIsMTU2IEBAIHNwYWNlOmRyb3AoKTxicj4mZ3Q7ICZndDsmbmJzcDtzcGFj ZSA9IG5pbDxicj4mZ3Q7ICZndDsmbmJzcDstLS08YnI+Jmd0OyAmZ3Q7Jm5ic3A7Li4uPGJyPiZn dDsgJmd0OystLSBoaW50czxicj4mZ3Q7ICZndDsrdGVzdF9ydW46Y21kKCJzZXRvcHQgZGVsaW1p dGVyICc7JyIpPGJyPiZndDsgJmd0OystLS08YnI+Jmd0OyAmZ3Q7Ky0gdHJ1ZTxicj4mZ3Q7ICZn dDsrLi4uPGJyPiZndDsgJmd0OytmdW5jdGlvbiBlcXVhbChyZXMxLCByZXMyKTxicj4mZ3Q7ICZn dDsrIGlmICNyZXMxIH49ICNyZXMyIHRoZW48YnI+Jmd0OyAmZ3Q7KyByZXR1cm4gZmFsc2U8YnI+ Jmd0OyAmZ3Q7KyBlbmQ8YnI+Jmd0OyAmZ3Q7KyBmb3Igayx2IGluIHBhaXJzKHJlczEpIGRvPGJy PiZndDsgJmd0OysgaWYgcmVzMltrXVsxXSB+PSB2WzFdIG9yIHJlczJba11bMl0gfj0gdlsyXSB0 aGVuPGJyPiZndDsgJmd0OysgcmV0dXJuIGZhbHNlPGJyPiZndDsgJmd0OysgZW5kPGJyPiZndDsg Jmd0OysgZW5kPGJyPiZndDsgJmd0OysgcmV0dXJuIHRydWU8YnI+Jmd0OyAmZ3Q7K2VuZDxicj4m Z3Q7ICZndDsrdGVzdF9ydW46Y21kKCJzZXRvcHQgZGVsaW1pdGVyICcnIik7PGJyPiZndDsgJmd0 OystLS08YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsrLS0gbnVtIG51bTxicj4mZ3Q7ICZn dDsrTjEgPSAxMDA8YnI+Jmd0OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZndDsrLi4uPGJyPiZndDsgJmd0 Oyt0MSA9IHt9PGJyPiZndDsgJmd0OystLS08YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsr Zm9yIGkgPSAxLE4xKjIgZG8gdDFbaV0gPSBtYXRoLnJhbmRvbSgxMDAwMCkgKiAxMDAwMCArIGkg ZW5kPGJyPiZndDsgJmd0OystLS08YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsrTjIgPSA1 PGJyPiZndDsgJmd0OystLS08YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsrdDIgPSB7fTxi cj4mZ3Q7ICZndDsrLS0tPGJyPiZndDsgJmd0OysuLi48YnI+Jmd0OyAmZ3Q7K2ZvciBpID0gMSxO MioyIGRvIHQyW2ldID0gbWF0aC5yYW5kb20oMTAwMDAwMCkgZW5kPGJyPiZndDsgJmd0OystLS08 YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsrczEgPSBib3guc2NoZW1hLnNwYWNlLmNyZWF0 ZSgndGVzdDEnKTxicj4mZ3Q7ICZndDsrLS0tPGJyPiZndDsgJmd0OysuLi48YnI+Jmd0OyAmZ3Q7 K3MxOmNyZWF0ZV9pbmRleCgndGVzdCcsIHt0eXBlID0gJ3RyZWUnLCBwYXJ0cyA9IHt7MSwgJ251 bSd9LCB7MiwgJ251bSd9fSwgaGludCA9IGZhbHNlfSkuaGludDxicj4mZ3Q7ICZndDsrLS0tPGJy PiZndDsgJmd0OystIGZhbHNlPGJyPiZndDsgJmd0OysuLi48YnI+Jmd0OyAmZ3Q7K3MyID0gYm94 LnNjaGVtYS5zcGFjZS5jcmVhdGUoJ3Rlc3QyJyk8YnI+Jmd0OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZn dDsrLi4uPGJyPiZndDsgJmd0OytzMjpjcmVhdGVfaW5kZXgoJ3Rlc3QnLCB7dHlwZSA9ICd0cmVl JywgcGFydHMgPSB7ezEsICdudW0nfSwgezIsICdudW0nfX0sIGhpbnQgPSB0cnVlfSkuaGludDxi cj4mZ3Q7ICZndDsrLS0tPGJyPiZndDsgJmd0OystIHRydWU8YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4m Z3Q7ICZndDsrZm9yIGogPSAxLE4yIGRvIGZvciBpID0gMSxOMSBkbyBzMTpyZXBsYWNle3QxW2ld LCB0MltqXX0gczI6cmVwbGFjZXt0MVtpXSwgdDJbal19IGVuZCBlbmQ8YnI+Jmd0OyAmZ3Q7Ky0t LTxicj4mZ3Q7ICZndDsrLi4uPGJyPiZndDsgJmd0OytzMTpjb3VudCgpID09IHMyOmNvdW50KCk8 YnI+Jmd0OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZndDsrLSB0cnVlPGJyPiZndDsgJmd0OysuLi48YnI+ Jmd0OyAmZ3Q7K2VxdWFsKHMxOnNlbGVjdHt9LCBzMjpzZWxlY3R7fSk8YnI+Jmd0OyAmZ3Q7Ky0t LTxicj4mZ3Q7ICZndDsrLSB0cnVlPGJyPiZndDsgJmd0OysuLi48YnI+Jmd0OyAmZ3Q7K2dvb2Qg PSB0cnVlPGJyPiZndDsgJmd0OystLS08YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsrZm9y IGkgPSAxLE4xKjIgZG8gZ29vZCA9IGdvb2QgYW5kIGVxdWFsKHMxOnNlbGVjdHt0MVtpXX0sIHMy OnNlbGVjdHt0MVtpXX0pIGVuZDxicj4mZ3Q7ICZndDsrLS0tPGJyPiZndDsgJmd0OysuLi48YnI+ Jmd0OyAmZ3Q7K2dvb2Q8YnI+Jmd0OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZndDsrLSB0cnVlPGJyPiZn dDsgJmd0OysuLi48YnI+Jmd0OyAmZ3Q7K2ZvciBpID0gMSxOMSoyIGRvIGZvciBqPTEsTjIqMiBk byBnb29kID0gZ29vZCBhbmQgZXF1YWwoczE6c2VsZWN0e3QxW2ldLCB0MltqXX0sIHMyOnNlbGVj dHt0MVtpXSwgdDJbal19KSBlbmQgZW5kPGJyPiZndDsgJmd0OystLS08YnI+Jmd0OyAmZ3Q7Ky4u Ljxicj4mZ3Q7ICZndDsrZ29vZDxicj4mZ3Q7ICZndDsrLS0tPGJyPiZndDsgJmd0OystIHRydWU8 YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsrczE6ZHJvcCgpPGJyPiZndDsgJmd0OystLS08 YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsrczI6ZHJvcCgpPGJyPiZndDsgJmd0OystLS08 YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsrLS0gc3RyIG51bTxicj4mZ3Q7ICZndDsrTjEg PSAxMDA8YnI+Jmd0OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZndDsrLi4uPGJyPiZndDsgJmd0Oyt0MSA9 IHt9PGJyPiZndDsgJmd0OystLS08YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsrZm9yIGkg PSAxLE4xKjIgZG8gdDFbaV0gPSAnJy4uKG1hdGgucmFuZG9tKDEwMDAwKSAqIDEwMDAwICsgaSkg ZW5kPGJyPiZndDsgJmd0OystLS08YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsrTjIgPSA1 PGJyPiZndDsgJmd0OystLS08YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsrdDIgPSB7fTxi cj4mZ3Q7ICZndDsrLS0tPGJyPiZndDsgJmd0OysuLi48YnI+Jmd0OyAmZ3Q7K2ZvciBpID0gMSxO MioyIGRvIHQyW2ldID0gbWF0aC5yYW5kb20oMTAwMDAwMCkgZW5kPGJyPiZndDsgJmd0OystLS08 YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsrczEgPSBib3guc2NoZW1hLnNwYWNlLmNyZWF0 ZSgndGVzdDEnKTxicj4mZ3Q7ICZndDsrLS0tPGJyPiZndDsgJmd0OysuLi48YnI+Jmd0OyAmZ3Q7 K3MxOmNyZWF0ZV9pbmRleCgndGVzdCcsIHt0eXBlID0gJ3RyZWUnLCBwYXJ0cyA9IHt7MSwgJ3N0 cid9LCB7MiwgJ251bSd9fSwgaGludCA9IGZhbHNlfSkuaGludDxicj4mZ3Q7ICZndDsrLS0tPGJy PiZndDsgJmd0OystIGZhbHNlPGJyPiZndDsgJmd0OysuLi48YnI+Jmd0OyAmZ3Q7K3MyID0gYm94 LnNjaGVtYS5zcGFjZS5jcmVhdGUoJ3Rlc3QyJyk8YnI+Jmd0OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZn dDsrLi4uPGJyPiZndDsgJmd0OytzMjpjcmVhdGVfaW5kZXgoJ3Rlc3QnLCB7dHlwZSA9ICd0cmVl JywgcGFydHMgPSB7ezEsICdzdHInfSwgezIsICdudW0nfX0sIGhpbnQgPSB0cnVlfSkuaGludDxi cj4mZ3Q7ICZndDsrLS0tPGJyPiZndDsgJmd0OystIHRydWU8YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4m Z3Q7ICZndDsrZm9yIGogPSAxLE4yIGRvIGZvciBpID0gMSxOMSBkbyBzMTpyZXBsYWNle3QxW2ld LCB0MltqXX0gczI6cmVwbGFjZXt0MVtpXSwgdDJbal19IGVuZCBlbmQ8YnI+Jmd0OyAmZ3Q7Ky0t LTxicj4mZ3Q7ICZndDsrLi4uPGJyPiZndDsgJmd0OytzMTpjb3VudCgpID09IHMyOmNvdW50KCk8 YnI+Jmd0OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZndDsrLSB0cnVlPGJyPiZndDsgJmd0OysuLi48YnI+ Jmd0OyAmZ3Q7K2VxdWFsKHMxOnNlbGVjdHt9LCBzMjpzZWxlY3R7fSk8YnI+Jmd0OyAmZ3Q7Ky0t LTxicj4mZ3Q7ICZndDsrLSB0cnVlPGJyPiZndDsgJmd0OysuLi48YnI+Jmd0OyAmZ3Q7K2dvb2Qg PSB0cnVlPGJyPiZndDsgJmd0OystLS08YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsrZm9y IGkgPSAxLE4xKjIgZG8gZ29vZCA9IGdvb2QgYW5kIGVxdWFsKHMxOnNlbGVjdHt0MVtpXX0sIHMy OnNlbGVjdHt0MVtpXX0pIGVuZDxicj4mZ3Q7ICZndDsrLS0tPGJyPiZndDsgJmd0OysuLi48YnI+ Jmd0OyAmZ3Q7K2dvb2Q8YnI+Jmd0OyAmZ3Q7Ky0tLTxicj4mZ3Q7ICZndDsrLSB0cnVlPGJyPiZn dDsgJmd0OysuLi48YnI+Jmd0OyAmZ3Q7K2ZvciBpID0gMSxOMSoyIGRvIGZvciBqPTEsTjIqMiBk byBnb29kID0gZ29vZCBhbmQgZXF1YWwoczE6c2VsZWN0e3QxW2ldLCB0MltqXX0sIHMyOnNlbGVj dHt0MVtpXSwgdDJbal19KSBlbmQgZW5kPGJyPiZndDsgJmd0OystLS08YnI+Jmd0OyAmZ3Q7Ky4u Ljxicj4mZ3Q7ICZndDsrZ29vZDxicj4mZ3Q7ICZndDsrLS0tPGJyPiZndDsgJmd0OystIHRydWU8 YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsrczE6ZHJvcCgpPGJyPiZndDsgJmd0OystLS08 YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDsrczI6ZHJvcCgpPGJyPiZndDsgJmd0OystLS08 YnI+Jmd0OyAmZ3Q7Ky4uLjxicj4mZ3Q7ICZndDtkaWZmIC0tZ2l0IGEvdGVzdC9ib3gvdHJlZV9w a19tdWx0aXBhcnQudGVzdC5sdWEgYi90ZXN0L2JveC90cmVlX3BrX211bHRpcGFydC50ZXN0Lmx1 YTxicj4mZ3Q7ICZndDtpbmRleCA3ZDM0MDVmLi5jYmEzYTk4IDEwMDY0NDxicj4mZ3Q7ICZndDst LS0gYS90ZXN0L2JveC90cmVlX3BrX211bHRpcGFydC50ZXN0Lmx1YTxicj4mZ3Q7ICZndDsrKysg Yi90ZXN0L2JveC90cmVlX3BrX211bHRpcGFydC50ZXN0Lmx1YTxicj4mZ3Q7ICZndDtAQCAtMTk0 LDMgKzE5NCw2NyBAQCB0ZXN0X3J1bjpjbWQoInNldG9wdCBkZWxpbWl0ZXIgJyciKTs8YnI+Jmd0 OyAmZ3Q7Jm5ic3A7c3BhY2U6ZHJvcCgpPGJyPiZndDsgJmd0OyZuYnNwOzxicj4mZ3Q7ICZndDsm bmJzcDtzcGFjZSA9IG5pbDxicj4mZ3Q7ICZndDsrPGJyPiZndDsgJmd0Oys8YnI+Jmd0OyAmZ3Q7 Ky0tIGhpbnRzPGJyPiZndDsgJmd0Oyt0ZXN0X3J1bjpjbWQoInNldG9wdCBkZWxpbWl0ZXIgJzsn Iik8YnI+Jmd0OyAmZ3Q7K2Z1bmN0aW9uIGVxdWFsKHJlczEsIHJlczIpPGJyPiZndDsgJmd0Oysg aWYgI3JlczEgfj0gI3JlczIgdGhlbjxicj4mZ3Q7ICZndDsrIHJldHVybiBmYWxzZTxicj4mZ3Q7 ICZndDsrIGVuZDxicj4mZ3Q7ICZndDsrIGZvciBrLHYgaW4gcGFpcnMocmVzMSkgZG88YnI+Jmd0 OyAmZ3Q7KyBpZiByZXMyW2tdWzFdIH49IHZbMV0gb3IgcmVzMltrXVsyXSB+PSB2WzJdIHRoZW48 YnI+Jmd0OyAmZ3Q7KyByZXR1cm4gZmFsc2U8YnI+Jmd0OyAmZ3Q7KyBlbmQ8YnI+Jmd0OyAmZ3Q7 KyBlbmQ8YnI+Jmd0OyAmZ3Q7KyByZXR1cm4gdHJ1ZTxicj4mZ3Q7ICZndDsrZW5kPGJyPiZndDsg Jmd0Oyt0ZXN0X3J1bjpjbWQoInNldG9wdCBkZWxpbWl0ZXIgJyciKTs8YnI+Jmd0OyAmZ3Q7Kzxi cj4mZ3Q7ICZndDsrLS0gbnVtIG51bTxicj4mZ3Q7ICZndDsrTjEgPSAxMDA8YnI+Jmd0OyAmZ3Q7 K3QxID0ge308YnI+Jmd0OyAmZ3Q7K2ZvciBpID0gMSxOMSoyIGRvIHQxW2ldID0gbWF0aC5yYW5k b20oMTAwMDApICogMTAwMDAgKyBpIGVuZDxicj4mZ3Q7ICZndDsrTjIgPSA1PGJyPiZndDsgJmd0 Oyt0MiA9IHt9PGJyPiZndDsgJmd0Oytmb3IgaSA9IDEsTjIqMiBkbyB0MltpXSA9IG1hdGgucmFu ZG9tKDEwMDAwMDApIGVuZDxicj4mZ3Q7ICZndDsrPGJyPiZndDsgJmd0OytzMSA9IGJveC5zY2hl bWEuc3BhY2UuY3JlYXRlKCd0ZXN0MScpPGJyPiZndDsgJmd0OytzMTpjcmVhdGVfaW5kZXgoJ3Rl c3QnLCB7dHlwZSA9ICd0cmVlJywgcGFydHMgPSB7ezEsICdudW0nfSwgezIsICdudW0nfX0sIGhp bnQgPSBmYWxzZX0pLmhpbnQ8YnI+Jmd0OyAmZ3Q7K3MyID0gYm94LnNjaGVtYS5zcGFjZS5jcmVh dGUoJ3Rlc3QyJyk8YnI+Jmd0OyAmZ3Q7K3MyOmNyZWF0ZV9pbmRleCgndGVzdCcsIHt0eXBlID0g J3RyZWUnLCBwYXJ0cyA9IHt7MSwgJ251bSd9LCB7MiwgJ251bSd9fSwgaGludCA9IHRydWV9KS5o aW50PGJyPiZndDsgJmd0Oytmb3IgaiA9IDEsTjIgZG8gZm9yIGkgPSAxLE4xIGRvIHMxOnJlcGxh Y2V7dDFbaV0sIHQyW2pdfSBzMjpyZXBsYWNle3QxW2ldLCB0MltqXX0gZW5kIGVuZDxicj4mZ3Q7 ICZndDsrczE6Y291bnQoKSA9PSBzMjpjb3VudCgpPGJyPiZndDsgJmd0OytlcXVhbChzMTpzZWxl Y3R7fSwgczI6c2VsZWN0e30pPGJyPiZndDsgJmd0Oytnb29kID0gdHJ1ZTxicj4mZ3Q7ICZndDsr Zm9yIGkgPSAxLE4xKjIgZG8gZ29vZCA9IGdvb2QgYW5kIGVxdWFsKHMxOnNlbGVjdHt0MVtpXX0s IHMyOnNlbGVjdHt0MVtpXX0pIGVuZDxicj4mZ3Q7ICZndDsrZ29vZDxicj4mZ3Q7ICZndDsrZm9y IGkgPSAxLE4xKjIgZG8gZm9yIGo9MSxOMioyIGRvIGdvb2QgPSBnb29kIGFuZCBlcXVhbChzMTpz ZWxlY3R7dDFbaV0sIHQyW2pdfSwgczI6c2VsZWN0e3QxW2ldLCB0MltqXX0pIGVuZCBlbmQ8YnI+ Jmd0OyAmZ3Q7K2dvb2Q8YnI+Jmd0OyAmZ3Q7Kzxicj4mZ3Q7ICZndDsrczE6ZHJvcCgpPGJyPiZn dDsgJmd0OytzMjpkcm9wKCk8YnI+Jmd0OyAmZ3Q7Kzxicj4mZ3Q7ICZndDsrLS0gc3RyIG51bTxi cj4mZ3Q7ICZndDsrTjEgPSAxMDA8YnI+Jmd0OyAmZ3Q7K3QxID0ge308YnI+Jmd0OyAmZ3Q7K2Zv ciBpID0gMSxOMSoyIGRvIHQxW2ldID0gJycuLihtYXRoLnJhbmRvbSgxMDAwMCkgKiAxMDAwMCAr IGkpIGVuZDxicj4mZ3Q7ICZndDsrTjIgPSA1PGJyPiZndDsgJmd0Oyt0MiA9IHt9PGJyPiZndDsg Jmd0Oytmb3IgaSA9IDEsTjIqMiBkbyB0MltpXSA9IG1hdGgucmFuZG9tKDEwMDAwMDApIGVuZDxi cj4mZ3Q7ICZndDsrPGJyPiZndDsgJmd0OytzMSA9IGJveC5zY2hlbWEuc3BhY2UuY3JlYXRlKCd0 ZXN0MScpPGJyPiZndDsgJmd0OytzMTpjcmVhdGVfaW5kZXgoJ3Rlc3QnLCB7dHlwZSA9ICd0cmVl JywgcGFydHMgPSB7ezEsICdzdHInfSwgezIsICdudW0nfX0sIGhpbnQgPSBmYWxzZX0pLmhpbnQ8 YnI+Jmd0OyAmZ3Q7K3MyID0gYm94LnNjaGVtYS5zcGFjZS5jcmVhdGUoJ3Rlc3QyJyk8YnI+Jmd0 OyAmZ3Q7K3MyOmNyZWF0ZV9pbmRleCgndGVzdCcsIHt0eXBlID0gJ3RyZWUnLCBwYXJ0cyA9IHt7 MSwgJ3N0cid9LCB7MiwgJ251bSd9fSwgaGludCA9IHRydWV9KS5oaW50PGJyPiZndDsgJmd0Oytm b3IgaiA9IDEsTjIgZG8gZm9yIGkgPSAxLE4xIGRvIHMxOnJlcGxhY2V7dDFbaV0sIHQyW2pdfSBz MjpyZXBsYWNle3QxW2ldLCB0MltqXX0gZW5kIGVuZDxicj4mZ3Q7ICZndDsrczE6Y291bnQoKSA9 PSBzMjpjb3VudCgpPGJyPiZndDsgJmd0OytlcXVhbChzMTpzZWxlY3R7fSwgczI6c2VsZWN0e30p PGJyPiZndDsgJmd0Oytnb29kID0gdHJ1ZTxicj4mZ3Q7ICZndDsrZm9yIGkgPSAxLE4xKjIgZG8g Z29vZCA9IGdvb2QgYW5kIGVxdWFsKHMxOnNlbGVjdHt0MVtpXX0sIHMyOnNlbGVjdHt0MVtpXX0p IGVuZDxicj4mZ3Q7ICZndDsrZ29vZDxicj4mZ3Q7ICZndDsrZm9yIGkgPSAxLE4xKjIgZG8gZm9y IGo9MSxOMioyIGRvIGdvb2QgPSBnb29kIGFuZCBlcXVhbChzMTpzZWxlY3R7dDFbaV0sIHQyW2pd fSwgczI6c2VsZWN0e3QxW2ldLCB0MltqXX0pIGVuZCBlbmQ8YnI+Jmd0OyAmZ3Q7K2dvb2Q8YnI+ Jmd0OyAmZ3Q7Kzxicj4mZ3Q7ICZndDsrczE6ZHJvcCgpPGJyPiZndDsgJmd0OytzMjpkcm9wKCk8 YnI+Jmd0OyAmZ3Q7LS08YnI+Jmd0OyAmZ3Q7Mi43LjQ8YnI+Jmd0OyAmZ3Q7Jm5ic3A7PGJyPiZn dDsgLS08YnI+Jmd0OyBJbHlhIEtvc2FyZXY8L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Jsb2Nr cXVvdGU+PGJyPjxkaXYgZGF0YS1zaWduYXR1cmUtd2lkZ2V0PSJjb250YWluZXIiPjxkaXYgZGF0 YS1zaWduYXR1cmUtd2lkZ2V0PSJjb250ZW50Ij48ZGl2Pi0tPGJyPklseWEgS29zYXJldjwvZGl2 PjwvZGl2PjwvZGl2PjwvZGl2PjwvQk9EWT48L0hUTUw+Cg== ----ALT--cAfB6cA44Fc8fB0a433d75fF6bE2cDc11603198666--