From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id D205589F8B for ; Wed, 17 Apr 2019 10:20:07 +0000 (UTC) Date: Wed, 17 Apr 2019 12:20:02 +0200 From: Katarzyna Dec Message-ID: <20190417102002.GL24710@kdec5-desk.ger.corp.intel.com> References: <20190415085937.5110-1-daniel.t.mrzyglod@intel.com> <20190415085937.5110-5-daniel.t.mrzyglod@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20190415085937.5110-5-daniel.t.mrzyglod@intel.com> Subject: Re: [igt-dev] [PATCH i-g-t v3 4/5] lib/intel_mmio: extend read write registers functions by a pointer for mmaped area List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Daniel Mrzyglod Cc: igt-dev@lists.freedesktop.org List-ID: T24gTW9uLCBBcHIgMTUsIDIwMTkgYXQgMTA6NTk6MzZBTSArMDIwMCwgRGFuaWVsIE1yenlnbG9k IHdyb3RlOgpUaGVyZSBpcyBzb21ldGhpbmcgd3Jvbmcgd2l0aCBzdWJqZWN0LCBwbGVhc2UgcmVw aHJhc2U6CidleHRlbmQgcmVhZCB3cml0ZSByZWdpc3RlcnMgZnVuY3Rpb25zIGJ5IGEgcG9pbnRl ciBmb3IgbW1hcGVkIGFyZWEnLgo+IFRoaXMgcGF0Y2ggaXMgZmlyc3QgbW92ZSB0byBleHRlbmQg ZnVuY3Rpb25hbGl0eSBvZiBpbnRlbF9tbWlvIGxpYnJhcnkuCj4gVGhlcmUgd2VyZSBsaW1pdGF0 aW9uIGZvciAxIGRldmljZSwgYWRkaW5nIHBvaW50ZXIgZm9yIGlvIGZ1bmN0aW9ucyB0byBtbWFw ZWQgYXJlYSBnaXZlcwpzL3dlcmUvd2FzLwpzL2lvL0lPPwo+IHVzIHBvc3NpYmlsaXR5IHRvIHVz ZSB0aG9zZSBpbyBmdW5jdGlvbnMgZm9yIG90aGVyIG1tYXBlZCBhcmVhcy4Kcy9pby9JTyAtIHll cyBpdCB3aWxsIGJlIG1vcmUgcmVhZGFibGUgdGhpcyB3YXkuCj4gCj4gU2lnbmVkLW9mZi1ieTog RGFuaWVsIE1yenlnbG9kIDxkYW5pZWwudC5tcnp5Z2xvZEBpbnRlbC5jb20+Cj4gLS0tCj4gIGxp Yi9pbnRlbF9pby5oICAgICAgICAgICAgICAgfCAgMzcgKystLS0KPiAgbGliL2ludGVsX2lvc2Yu YyAgICAgICAgICAgICB8ICA3NyArKysrKystLS0tCj4gIGxpYi9pbnRlbF9tbWlvLmMgICAgICAg ICAgICAgfCAgMzkgKysrLS0KPiAgdGVzdHMvaTkxNS9nZW1fZXhlY19wYXJzZS5jICB8ICAgNiAr LQo+ICB0ZXN0cy9pOTE1L2k5MTVfcG1fbHBzcC5jICAgIHwgICAyICstCj4gIHRvb2xzL2ludGVs X2F1ZGlvX2R1bXAuYyAgICAgfCAyODkgKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0t LS0KPiAgdG9vbHMvaW50ZWxfYmFja2xpZ2h0LmMgICAgICB8ICAxMCArLQo+ICB0b29scy9pbnRl bF9kaXNwbGF5X3BvbGxlci5jIHwgICA4ICstCj4gIHRvb2xzL2ludGVsX2ZvcmNld2FrZWQuYyAg ICAgfCAgIDIgKy0KPiAgdG9vbHMvaW50ZWxfZ3B1X3RpbWUuYyAgICAgICB8ICAgNiArLQo+ICB0 b29scy9pbnRlbF9pbmZvZnJhbWVzLmMgICAgIHwgIDY4ICsrKystLS0tLQo+ICB0b29scy9pbnRl bF9sM19wYXJpdHkuYyAgICAgIHwgICA4ICstCj4gIHRvb2xzL2ludGVsX2xpZC5jICAgICAgICAg ICAgfCAgIDIgKy0KPiAgdG9vbHMvaW50ZWxfcGFuZWxfZml0dGVyLmMgICB8ICAyNCArLS0KPiAg dG9vbHMvaW50ZWxfcGVyZl9jb3VudGVycy5jICB8ICAgOSArLQo+ICB0b29scy9pbnRlbF9yZWcu YyAgICAgICAgICAgIHwgIDE2ICstCj4gIHRvb2xzL2ludGVsX3JlZ19jaGVja2VyLmMgICAgfCAg IDIgKy0KPiAgdG9vbHMvaW50ZWxfd2F0ZXJtYXJrLmMgICAgICB8ICAgNiArLQo+ICAxOCBmaWxl cyBjaGFuZ2VkLCAzMzQgaW5zZXJ0aW9ucygrKSwgMjc3IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYg LS1naXQgYS9saWIvaW50ZWxfaW8uaCBiL2xpYi9pbnRlbF9pby5oCj4gaW5kZXggMDlmZWEzODYu LmZkOTliYmI3IDEwMDY0NAo+IC0tLSBhL2xpYi9pbnRlbF9pby5oCj4gKysrIGIvbGliL2ludGVs X2lvLmgKPiBAQCAtMzgsMjkgKzM4LDMwIEBAIHZvaWQgaW50ZWxfbW1pb191c2VfZHVtcF9maWxl KGNoYXIgKmZpbGUpOwo+ICAKPiAgaW50IGludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KHN0cnVj dCBwY2lfZGV2aWNlICpwY2lfZGV2LCBpbnQgc2FmZSwgaW50IGZkKTsKPiAgdm9pZCBpbnRlbF9y ZWdpc3Rlcl9hY2Nlc3NfZmluaSh2b2lkKTsKPiAtdWludDMyX3QgaW50ZWxfcmVnaXN0ZXJfcmVh ZCh1aW50MzJfdCByZWcpOwo+IC12b2lkIGludGVsX3JlZ2lzdGVyX3dyaXRlKHVpbnQzMl90IHJl ZywgdWludDMyX3QgdmFsKTsKPiArdWludDMyX3QgaW50ZWxfcmVnaXN0ZXJfcmVhZCh2b2lkICpp Z3RfbW1pbywgdWludDMyX3QgcmVnKTsKPiArdm9pZCBpbnRlbF9yZWdpc3Rlcl93cml0ZSh2b2lk ICppZ3RfbW1pbywgdWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpOwo+ICBpbnQgaW50ZWxfcmVn aXN0ZXJfYWNjZXNzX25lZWRzX2Zha2V3YWtlKHZvaWQpOwo+ICAKPiAtdWludDMyX3QgSU5SRUco dWludDMyX3QgcmVnKTsKPiAtdWludDE2X3QgSU5SRUcxNih1aW50MzJfdCByZWcpOwo+IC11aW50 OF90IElOUkVHOCh1aW50MzJfdCByZWcpOwo+IC12b2lkIE9VVFJFRyh1aW50MzJfdCByZWcsIHVp bnQzMl90IHZhbCk7Cj4gLXZvaWQgT1VUUkVHMTYodWludDMyX3QgcmVnLCB1aW50MTZfdCB2YWwp Owo+IC12b2lkIE9VVFJFRzgodWludDMyX3QgcmVnLCB1aW50OF90IHZhbCk7Cj4gK3VpbnQzMl90 IElOUkVHKHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCByZWcpOwo+ICt1aW50MTZfdCBJTlJFRzE2 KHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCByZWcpOwo+ICt1aW50OF90IElOUkVHOCh2b2lkICpp Z3RfbW1pbywgdWludDMyX3QgcmVnKTsKPiArdm9pZCBPVVRSRUcodm9pZCAqaWd0X21taW8sIHVp bnQzMl90IHJlZywgdWludDMyX3QgdmFsKTsKPiArdm9pZCBPVVRSRUcxNih2b2lkICppZ3RfbW1p bywgdWludDMyX3QgcmVnLCB1aW50MTZfdCB2YWwpOwo+ICt2b2lkIE9VVFJFRzgodm9pZCAqaWd0 X21taW8sIHVpbnQzMl90IHJlZywgdWludDhfdCB2YWwpOwo+ICAKPiAgLyogc2lkZWJhbmQgYWNj ZXNzIGZ1bmN0aW9ucyBmcm9tIGludGVsX2lvc2YuYyAqLwo+IC11aW50MzJfdCBpbnRlbF9kcGlv X3JlZ19yZWFkKHVpbnQzMl90IHJlZywgaW50IHBoeSk7Cj4gLXZvaWQgaW50ZWxfZHBpb19yZWdf d3JpdGUodWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwsIGludCBwaHkpOwo+IC11aW50MzJfdCBp bnRlbF9mbGlzZHNpX3JlZ19yZWFkKHVpbnQzMl90IHJlZyk7Cj4gLXZvaWQgaW50ZWxfZmxpc2Rz aV9yZWdfd3JpdGUodWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpOwo+IC11aW50MzJfdCBpbnRl bF9pb3NmX3NiX3JlYWQodWludDMyX3QgcG9ydCwgdWludDMyX3QgcmVnKTsKPiAtdm9pZCBpbnRl bF9pb3NmX3NiX3dyaXRlKHVpbnQzMl90IHBvcnQsIHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFs KTsKPiArdWludDMyX3QgaW50ZWxfZHBpb19yZWdfcmVhZCh2b2lkICppZ3RfbW1pbywgdWludDMy X3QgcmVnLCBpbnQgcGh5KTsKPiArdm9pZCBpbnRlbF9kcGlvX3JlZ193cml0ZSh2b2lkICppZ3Rf bW1pbywgdWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwsIGludCBwaHkpOwo+ICt1aW50MzJfdCBp bnRlbF9mbGlzZHNpX3JlZ19yZWFkKHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCByZWcpOwo+ICt2 b2lkIGludGVsX2ZsaXNkc2lfcmVnX3dyaXRlKHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCByZWcs IHVpbnQzMl90IHZhbCk7Cj4gK3VpbnQzMl90IGludGVsX2lvc2Zfc2JfcmVhZCh2b2lkICppZ3Rf bW1pbywgdWludDMyX3QgcG9ydCwgdWludDMyX3QgcmVnKTsKPiArdm9pZCBpbnRlbF9pb3NmX3Ni X3dyaXRlKHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCBwb3J0LCB1aW50MzJfdCByZWcsCj4gKwkJ CSB1aW50MzJfdCB2YWwpOwo+ICAKPiAtaW50IGludGVsX3B1bml0X3JlYWQodWludDMyX3QgYWRk ciwgdWludDMyX3QgKnZhbCk7Cj4gLWludCBpbnRlbF9wdW5pdF93cml0ZSh1aW50MzJfdCBhZGRy LCB1aW50MzJfdCB2YWwpOwo+IC1pbnQgaW50ZWxfbmNfcmVhZCh1aW50MzJfdCBhZGRyLCB1aW50 MzJfdCAqdmFsKTsKPiAtaW50IGludGVsX25jX3dyaXRlKHVpbnQzMl90IGFkZHIsIHVpbnQzMl90 IHZhbCk7Cj4gK2ludCBpbnRlbF9wdW5pdF9yZWFkKHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCBh ZGRyLCB1aW50MzJfdCAqdmFsKTsKPiAraW50IGludGVsX3B1bml0X3dyaXRlKHZvaWQgKmlndF9t bWlvLCB1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwpOwo+ICtpbnQgaW50ZWxfbmNfcmVhZCh2 b2lkICppZ3RfbW1pbywgdWludDMyX3QgYWRkciwgdWludDMyX3QgKnZhbCk7Cj4gK2ludCBpbnRl bF9uY193cml0ZSh2b2lkICppZ3RfbW1pbywgdWludDMyX3QgYWRkciwgdWludDMyX3QgdmFsKTsK PiAgCj4gIC8qIHJlZ2lzdGVyIG1hcHMgZnJvbSBpbnRlbF9yZWdfbWFwLmMgKi8KPiAgI2lmbmRl ZiBfX0dUS19ET0NfSUdOT1JFX18KPiBkaWZmIC0tZ2l0IGEvbGliL2ludGVsX2lvc2YuYyBiL2xp Yi9pbnRlbF9pb3NmLmMKPiBpbmRleCAzYjVhMTM3MC4uYjRhNDgzZjIgMTAwNjQ0Cj4gLS0tIGEv bGliL2ludGVsX2lvc2YuYwo+ICsrKyBiL2xpYi9pbnRlbF9pb3NmLmMKPiBAQCAtMTksOCArMTks OCBAQAo+ICAvKiBQcml2YXRlIHJlZ2lzdGVyIHdyaXRlLCBkb3VibGUtd29yZCBhZGRyZXNzaW5n LCBub24tcG9zdGVkICovCj4gICNkZWZpbmUgU0JfQ1JXUkRBX05QICAgMHgwNwo+ICAKPiAtc3Rh dGljIGludCB2bHZfc2lkZWJhbmRfcncodWludDMyX3QgcG9ydCwgdWludDhfdCBvcGNvZGUsIHVp bnQzMl90IGFkZHIsCj4gLQkJCSAgIHVpbnQzMl90ICp2YWwpCj4gK3N0YXRpYyBpbnQgdmx2X3Np ZGViYW5kX3J3KHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCBwb3J0LCB1aW50OF90IG9wY29kZSwK PiArCQkJICAgdWludDMyX3QgYWRkciwgdWludDMyX3QgKnZhbCkKPiAgewo+ICAJaW50IHRpbWVv dXQgPSAwOwo+ICAJdWludDMyX3QgY21kLCBkZXZmbiwgYmUsIGJhcjsKPiBAQCAtMzQsMjIgKzM0 LDIzIEBAIHN0YXRpYyBpbnQgdmx2X3NpZGViYW5kX3J3KHVpbnQzMl90IHBvcnQsIHVpbnQ4X3Qg b3Bjb2RlLCB1aW50MzJfdCBhZGRyLAo+ICAJCShwb3J0IDw8IElPU0ZfUE9SVF9TSElGVCkgfCAo YmUgPDwgSU9TRl9CWVRFX0VOQUJMRVNfU0hJRlQpIHwKPiAgCQkoYmFyIDw8IElPU0ZfQkFSX1NI SUZUKTsKPiAgCj4gLQlpZiAoaW50ZWxfcmVnaXN0ZXJfcmVhZChWTFZfSU9TRl9ET09SQkVMTF9S RVEpICYgSU9TRl9TQl9CVVNZKSB7Cj4gKwlpZiAoaW50ZWxfcmVnaXN0ZXJfcmVhZChpZ3RfbW1p bywgVkxWX0lPU0ZfRE9PUkJFTExfUkVRKSAmCj4gKwkgICAgSU9TRl9TQl9CVVNZKSB7Cj4gIAkJ aWd0X3dhcm4oIndhcm5pbmc6IHBjb2RlICglcykgbWFpbGJveCBhY2Nlc3MgZmFpbGVkXG4iLCBp c19yZWFkID8gInJlYWQiIDogIndyaXRlIik7Cj4gIAkJcmV0dXJuIC1FQUdBSU47Cj4gIAl9Cj4g IAo+IC0JaW50ZWxfcmVnaXN0ZXJfd3JpdGUoVkxWX0lPU0ZfQUREUiwgYWRkcik7Cj4gKwlpbnRl bF9yZWdpc3Rlcl93cml0ZShpZ3RfbW1pbywgVkxWX0lPU0ZfQUREUiwgYWRkcik7Cj4gIAlpZiAo IWlzX3JlYWQpCj4gLQkJaW50ZWxfcmVnaXN0ZXJfd3JpdGUoVkxWX0lPU0ZfREFUQSwgKnZhbCk7 Cj4gKwkJaW50ZWxfcmVnaXN0ZXJfd3JpdGUoaWd0X21taW8sIFZMVl9JT1NGX0RBVEEsICp2YWwp Owo+ICAKPiAtCWludGVsX3JlZ2lzdGVyX3dyaXRlKFZMVl9JT1NGX0RPT1JCRUxMX1JFUSwgY21k KTsKPiArCWludGVsX3JlZ2lzdGVyX3dyaXRlKGlndF9tbWlvLCBWTFZfSU9TRl9ET09SQkVMTF9S RVEsIGNtZCk7Cj4gIAo+ICAJZG8gewo+ICAJCXVzbGVlcCgxKTsKPiAgCQl0aW1lb3V0Kys7Cj4g LQl9IHdoaWxlIChpbnRlbF9yZWdpc3Rlcl9yZWFkKFZMVl9JT1NGX0RPT1JCRUxMX1JFUSkgJiBJ T1NGX1NCX0JVU1kgJiYKPiAtCQkgdGltZW91dCA8IFRJTUVPVVRfVVMpOwo+ICsJfSB3aGlsZSAo aW50ZWxfcmVnaXN0ZXJfcmVhZChpZ3RfbW1pbywgVkxWX0lPU0ZfRE9PUkJFTExfUkVRKSAmCj4g KwkJIElPU0ZfU0JfQlVTWSAmJiB0aW1lb3V0IDwgVElNRU9VVF9VUyk7Cj4gIAo+ICAJaWYgKHRp bWVvdXQgPj0gVElNRU9VVF9VUykgewo+ICAJCWlndF93YXJuKCJ0aW1lb3V0IHdhaXRpbmcgZm9y IHBjb2RlICVzICglZCkgdG8gZmluaXNoXG4iLCBpc19yZWFkID8gInJlYWQiIDogIndyaXRlIiwg YWRkcik7Cj4gQEAgLTU3LDE0ICs1OCwxNSBAQCBzdGF0aWMgaW50IHZsdl9zaWRlYmFuZF9ydyh1 aW50MzJfdCBwb3J0LCB1aW50OF90IG9wY29kZSwgdWludDMyX3QgYWRkciwKPiAgCX0KPiAgCj4g IAlpZiAoaXNfcmVhZCkKPiAtCQkqdmFsID0gaW50ZWxfcmVnaXN0ZXJfcmVhZChWTFZfSU9TRl9E QVRBKTsKPiAtCWludGVsX3JlZ2lzdGVyX3dyaXRlKFZMVl9JT1NGX0RBVEEsIDApOwo+ICsJCSp2 YWwgPSBpbnRlbF9yZWdpc3Rlcl9yZWFkKGlndF9tbWlvLCBWTFZfSU9TRl9EQVRBKTsKPiArCWlu dGVsX3JlZ2lzdGVyX3dyaXRlKGlndF9tbWlvLCBWTFZfSU9TRl9EQVRBLCAwKTsKPiAgCj4gIAly ZXR1cm4gMDsKPiAgfQo+ICAKPiAgLyoqCj4gICAqIGludGVsX3B1bml0X3JlYWQ6Cj4gKyAqIEBp Z3RfbW1pbyBtYXBlZCBtZW1vcnkgcG9pbnRlcgpzL21hcGVkL21hcHBlZC8KUGxlYXNlIGZpeCB3 aGVyZSBhcHByb3ByaWF0ZSBpbiB3aG9sZSBjb21taXQuCj4gICAqIEBhZGRyOiByZWdpc3RlciBv ZmZzZXQKPiAgICogQHZhbDogcG9pbnRlciB0byBzdG9yZSB0aGUgcmVhZCByZXN1bHQKPiAgICoK PiBAQCAtNzMsMTMgKzc1LDE1IEBAIHN0YXRpYyBpbnQgdmx2X3NpZGViYW5kX3J3KHVpbnQzMl90 IHBvcnQsIHVpbnQ4X3Qgb3Bjb2RlLCB1aW50MzJfdCBhZGRyLAo+ICAgKiBSZXR1cm5zOgo+ICAg KiAwIHdoZW4gdGhlIHJlZ2lzdGVyIGFjY2VzcyBzdWNjZWVkZWQsIG5lZ2F0aXZlIGVycm5vIGNv ZGUgb24gZmFpbHVyZS4KPiAgICovCj4gLWludCBpbnRlbF9wdW5pdF9yZWFkKHVpbnQzMl90IGFk ZHIsIHVpbnQzMl90ICp2YWwpCj4gK2ludCBpbnRlbF9wdW5pdF9yZWFkKHZvaWQgKmlndF9tbWlv LCB1aW50MzJfdCBhZGRyLCB1aW50MzJfdCAqdmFsKQo+ICB7Cj4gLQlyZXR1cm4gdmx2X3NpZGVi YW5kX3J3KElPU0ZfUE9SVF9QVU5JVCwgU0JfQ1JSRERBX05QLCBhZGRyLCB2YWwpOwo+ICsJcmV0 dXJuIHZsdl9zaWRlYmFuZF9ydyhpZ3RfbW1pbywgSU9TRl9QT1JUX1BVTklULCBTQl9DUlJEREFf TlAsIGFkZHIsCj4gKwkJCSAgICAgICB2YWwpOwo+ICB9Cj4gIAo+ICAvKioKPiAgICogaW50ZWxf cHVuaXRfd3JpdGU6Cj4gKyAqIEBpZ3RfbW1pbyBtYXBlZCBtZW1vcnkgcG9pbnRlcgo+ICAgKiBA YWRkcjogcmVnaXN0ZXIgb2Zmc2V0Cj4gICAqIEB2YWw6IHZhbHVlIHRvIHdyaXRlCj4gICAqCj4g QEAgLTg4LDEzICs5MiwxNSBAQCBpbnQgaW50ZWxfcHVuaXRfcmVhZCh1aW50MzJfdCBhZGRyLCB1 aW50MzJfdCAqdmFsKQo+ICAgKiBSZXR1cm5zOgo+ICAgKiAwIHdoZW4gdGhlIHJlZ2lzdGVyIGFj Y2VzcyBzdWNjZWVkZWQsIG5lZ2F0aXZlIGVycm5vIGNvZGUgb24gZmFpbHVyZS4KPiAgICovCj4g LWludCBpbnRlbF9wdW5pdF93cml0ZSh1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwpCj4gK2lu dCBpbnRlbF9wdW5pdF93cml0ZSh2b2lkICppZ3RfbW1pbywgdWludDMyX3QgYWRkciwgdWludDMy X3QgdmFsKQo+ICB7Cj4gLQlyZXR1cm4gdmx2X3NpZGViYW5kX3J3KElPU0ZfUE9SVF9QVU5JVCwg U0JfQ1JXUkRBX05QLCBhZGRyLCAmdmFsKTsKPiArCXJldHVybiB2bHZfc2lkZWJhbmRfcncoaWd0 X21taW8sIElPU0ZfUE9SVF9QVU5JVCwgU0JfQ1JXUkRBX05QLCBhZGRyLAo+ICsJCQkgICAgICAg JnZhbCk7Cj4gIH0KPiAgCj4gIC8qKgo+ICAgKiBpbnRlbF9uY19yZWFkOgo+ICsgKiBAaWd0X21t aW8gbWFwZWQgbWVtb3J5IHBvaW50ZXIKPiAgICogQGFkZHI6IHJlZ2lzdGVyIG9mZnNldAo+ICAg KiBAdmFsOiBwb2ludGVyIHRvIHN0YXJnZSBmb3IgdGhlIHJlYWQgcmVzdWx0Cj4gICAqCj4gQEAg LTEwMywxMyArMTA5LDE0IEBAIGludCBpbnRlbF9wdW5pdF93cml0ZSh1aW50MzJfdCBhZGRyLCB1 aW50MzJfdCB2YWwpCj4gICAqIFJldHVybnM6Cj4gICAqIDAgd2hlbiB0aGUgcmVnaXN0ZXIgYWNj ZXNzIHN1Y2NlZWRlZCwgbmVnYXRpdmUgZXJybm8gY29kZSBvbiBmYWlsdXJlLgo+ICAgKi8KPiAt aW50IGludGVsX25jX3JlYWQodWludDMyX3QgYWRkciwgdWludDMyX3QgKnZhbCkKPiAraW50IGlu dGVsX25jX3JlYWQodm9pZCAqaWd0X21taW8sIHVpbnQzMl90IGFkZHIsIHVpbnQzMl90ICp2YWwp Cj4gIHsKPiAtCXJldHVybiB2bHZfc2lkZWJhbmRfcncoSU9TRl9QT1JUX05DLCBTQl9DUlJEREFf TlAsIGFkZHIsIHZhbCk7Cj4gKwlyZXR1cm4gdmx2X3NpZGViYW5kX3J3KGlndF9tbWlvLCBJT1NG X1BPUlRfTkMsIFNCX0NSUkREQV9OUCwgYWRkciwgdmFsKTsKPiAgfQo+ICAKPiAgLyoqCj4gICAq IGludGVsX25jX3dyaXRlOgo+ICsgKiBAaWd0X21taW8gbWFwZWQgbWVtb3J5IHBvaW50ZXIKPiAg ICogQGFkZHI6IHJlZ2lzdGVyIG9mZnNldAo+ICAgKiBAdmFsOiB2YWx1ZSB0byB3cml0ZQo+ICAg Kgo+IEBAIC0xMTgsMTMgKzEyNSwxNSBAQCBpbnQgaW50ZWxfbmNfcmVhZCh1aW50MzJfdCBhZGRy LCB1aW50MzJfdCAqdmFsKQo+ICAgKiBSZXR1cm5zOgo+ICAgKiAwIHdoZW4gdGhlIHJlZ2lzdGVy IGFjY2VzcyBzdWNjZWVkZWQsIG5lZ2F0aXZlIGVycm5vIGNvZGUgb24gZmFpbHVyZS4KPiAgICov Cj4gLWludCBpbnRlbF9uY193cml0ZSh1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwpCj4gK2lu dCBpbnRlbF9uY193cml0ZSh2b2lkICppZ3RfbW1pbywgdWludDMyX3QgYWRkciwgdWludDMyX3Qg dmFsKQo+ICB7Cj4gLQlyZXR1cm4gdmx2X3NpZGViYW5kX3J3KElPU0ZfUE9SVF9OQywgU0JfQ1JX UkRBX05QLCBhZGRyLCAmdmFsKTsKPiArCXJldHVybiB2bHZfc2lkZWJhbmRfcncoaWd0X21taW8s IElPU0ZfUE9SVF9OQywgU0JfQ1JXUkRBX05QLCBhZGRyLAo+ICsJCQkgICAgICAgJnZhbCk7Cj4g IH0KPiAgCj4gIC8qKgo+ICAgKiBpbnRlbF9kcGlvX3JlZ19yZWFkOgo+ICsgKiBAaWd0X21taW8g bWFwZWQgbWVtb3J5IHBvaW50ZXIKPiAgICogQHJlZzogcmVnaXN0ZXIgb2Zmc2V0Cj4gICAqIEBw aHk6IERQSU8gUEhZIHRvIHVzZQo+ICAgKgo+IEBAIC0xMzMsNTcgKzE0Miw2MSBAQCBpbnQgaW50 ZWxfbmNfd3JpdGUodWludDMyX3QgYWRkciwgdWludDMyX3QgdmFsKQo+ICAgKiBSZXR1cm5zOgo+ ICAgKiBUaGUgdmFsdWUgcmVhZCBmcm9tIHRoZSByZWdpc3Rlci4KPiAgICovCj4gLXVpbnQzMl90 IGludGVsX2RwaW9fcmVnX3JlYWQodWludDMyX3QgcmVnLCBpbnQgcGh5KQo+ICt1aW50MzJfdCBp bnRlbF9kcGlvX3JlZ19yZWFkKHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCByZWcsIGludCBwaHkp Cj4gIHsKPiAgCXVpbnQzMl90IHZhbDsKPiAgCj4gIAlpZiAocGh5ID09IDApCj4gLQkJdmx2X3Np ZGViYW5kX3J3KElPU0ZfUE9SVF9EUElPLCBTQl9NUkRfTlAsIHJlZywgJnZhbCk7Cj4gKwkJdmx2 X3NpZGViYW5kX3J3KGlndF9tbWlvLCBJT1NGX1BPUlRfRFBJTywgU0JfTVJEX05QLCByZWcsICZ2 YWwpOwo+ICAJZWxzZQo+IC0JCXZsdl9zaWRlYmFuZF9ydyhJT1NGX1BPUlRfRFBJT18yLCBTQl9N UkRfTlAsIHJlZywgJnZhbCk7Cj4gKwkJdmx2X3NpZGViYW5kX3J3KGlndF9tbWlvLCBJT1NGX1BP UlRfRFBJT18yLCBTQl9NUkRfTlAsIHJlZywKPiArCQkJCSZ2YWwpOwo+ICAJcmV0dXJuIHZhbDsK PiAgfQo+ICAKPiAgLyoqCj4gICAqIGludGVsX2RwaW9fcmVnX3dyaXRlOgo+ICsgKiBAaWd0X21t aW8gbWFwZWQgbWVtb3J5IHBvaW50ZXIKPiAgICogQHJlZzogcmVnaXN0ZXIgb2Zmc2V0Cj4gICAq IEB2YWw6IHZhbHVlIHRvIHdyaXRlCj4gICAqIEBwaHk6IGRwaW8gUEhZIHRvIHVzZQo+ICAgKgo+ ICAgKiAzMi1iaXQgd3JpdGUgb2YgdGhlIHJlZ2lzdGVyIGF0IEBvZmZzZXQgdGhyb3VnaCB0aGUg RFBJTyBzaWRlYmFuZCBwb3J0Lgo+ICAgKi8KPiAtdm9pZCBpbnRlbF9kcGlvX3JlZ193cml0ZSh1 aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCwgaW50IHBoeSkKPiArdm9pZCBpbnRlbF9kcGlvX3Jl Z193cml0ZSh2b2lkICppZ3RfbW1pbywgdWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwsIGludCBw aHkpCj4gIHsKPiAgCWlmIChwaHkgPT0gMCkKPiAtCQl2bHZfc2lkZWJhbmRfcncoSU9TRl9QT1JU X0RQSU8sIFNCX01XUl9OUCwgcmVnLCAmdmFsKTsKPiArCQl2bHZfc2lkZWJhbmRfcncoaWd0X21t aW8sIElPU0ZfUE9SVF9EUElPLCBTQl9NV1JfTlAsIHJlZywgJnZhbCk7Cj4gIAllbHNlCj4gLQkJ dmx2X3NpZGViYW5kX3J3KElPU0ZfUE9SVF9EUElPXzIsIFNCX01XUl9OUCwgcmVnLCAmdmFsKTsK PiArCQl2bHZfc2lkZWJhbmRfcncoaWd0X21taW8sIElPU0ZfUE9SVF9EUElPXzIsIFNCX01XUl9O UCwgcmVnLAo+ICsJCQkJJnZhbCk7Cj4gIH0KPiAgCj4gLXVpbnQzMl90IGludGVsX2ZsaXNkc2lf cmVnX3JlYWQodWludDMyX3QgcmVnKQo+ICt1aW50MzJfdCBpbnRlbF9mbGlzZHNpX3JlZ19yZWFk KHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCByZWcpCj4gIHsKPiAgCXVpbnQzMl90IHZhbCA9IDA7 Cj4gIAo+IC0Jdmx2X3NpZGViYW5kX3J3KElPU0ZfUE9SVF9GTElTRFNJLCBTQl9DUlJEREFfTlAs IHJlZywgJnZhbCk7Cj4gKwl2bHZfc2lkZWJhbmRfcncoaWd0X21taW8sIElPU0ZfUE9SVF9GTElT RFNJLCBTQl9DUlJEREFfTlAsIHJlZywgJnZhbCk7Cj4gIAo+ICAJcmV0dXJuIHZhbDsKPiAgfQo+ ICAKPiAtdm9pZCBpbnRlbF9mbGlzZHNpX3JlZ193cml0ZSh1aW50MzJfdCByZWcsIHVpbnQzMl90 IHZhbCkKPiArdm9pZCBpbnRlbF9mbGlzZHNpX3JlZ193cml0ZSh2b2lkICppZ3RfbW1pbywgdWlu dDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpCj4gIHsKPiAtCXZsdl9zaWRlYmFuZF9ydyhJT1NGX1BP UlRfRkxJU0RTSSwgU0JfQ1JXUkRBX05QLCByZWcsICZ2YWwpOwo+ICsJdmx2X3NpZGViYW5kX3J3 KGlndF9tbWlvLCBJT1NGX1BPUlRfRkxJU0RTSSwgU0JfQ1JXUkRBX05QLCByZWcsICZ2YWwpOwo+ ICB9Cj4gIAo+IC11aW50MzJfdCBpbnRlbF9pb3NmX3NiX3JlYWQodWludDMyX3QgcG9ydCwgdWlu dDMyX3QgcmVnKQo+ICt1aW50MzJfdCBpbnRlbF9pb3NmX3NiX3JlYWQodm9pZCAqaWd0X21taW8s IHVpbnQzMl90IHBvcnQsIHVpbnQzMl90IHJlZykKPiAgewo+ICAJdWludDMyX3QgdmFsOwo+ICAK PiAtCXZsdl9zaWRlYmFuZF9ydyhwb3J0LCBTQl9DUlJEREFfTlAsIHJlZywgJnZhbCk7Cj4gKwl2 bHZfc2lkZWJhbmRfcncoaWd0X21taW8sIHBvcnQsIFNCX0NSUkREQV9OUCwgcmVnLCAmdmFsKTsK PiAgCj4gIAlyZXR1cm4gdmFsOwo+ICB9Cj4gIAo+IC12b2lkIGludGVsX2lvc2Zfc2Jfd3JpdGUo dWludDMyX3QgcG9ydCwgdWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpCj4gK3ZvaWQgaW50ZWxf aW9zZl9zYl93cml0ZSh2b2lkICppZ3RfbW1pbywgdWludDMyX3QgcG9ydCwgdWludDMyX3QgcmVn LAo+ICsJCQkgdWludDMyX3QgdmFsKQo+ICB7Cj4gLQl2bHZfc2lkZWJhbmRfcncocG9ydCwgU0Jf Q1JXUkRBX05QLCByZWcsICZ2YWwpOwo+ICsJdmx2X3NpZGViYW5kX3J3KGlndF9tbWlvLCBwb3J0 LCBTQl9DUldSREFfTlAsIHJlZywgJnZhbCk7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvbGliL2ludGVs X21taW8uYyBiL2xpYi9pbnRlbF9tbWlvLmMKPiBpbmRleCBkYWNhMWFkMi4uMjQ2MjNmYzYgMTAw NjQ0Cj4gLS0tIGEvbGliL2ludGVsX21taW8uYwo+ICsrKyBiL2xpYi9pbnRlbF9tbWlvLmMKPiBA QCAtMjQ0LDYgKzI0NCw3IEBAIGludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKHZvaWQpCj4gIAo+ ICAvKioKPiAgICogaW50ZWxfcmVnaXN0ZXJfcmVhZDoKPiArICogQGlndF9tbWlvIG1hcGVkIG1l bW9yeSBwb2ludGVyCj4gICAqIEByZWc6IHJlZ2lzdGVyIG9mZnNldAo+ICAgKgo+ICAgKiAzMi1i aXQgcmVhZCBvZiB0aGUgcmVnaXN0ZXIgYXQgQG9mZnNldC4gVGhpcyBmdW5jdGlvbiBvbmx5IHdv cmtzIHdoZW4gdGhlIG5ldwo+IEBAIC0yNTYsNyArMjU3LDcgQEAgaW50ZWxfcmVnaXN0ZXJfYWNj ZXNzX2Zpbmkodm9pZCkKPiAgICogVGhlIHZhbHVlIHJlYWQgZnJvbSB0aGUgcmVnaXN0ZXIuCj4g ICAqLwo+ICB1aW50MzJfdAo+IC1pbnRlbF9yZWdpc3Rlcl9yZWFkKHVpbnQzMl90IHJlZykKPiAr aW50ZWxfcmVnaXN0ZXJfcmVhZCh2b2lkICppZ3RfbW1pbywgdWludDMyX3QgcmVnKQo+ICB7Cj4g IAlzdHJ1Y3QgaW50ZWxfcmVnaXN0ZXJfcmFuZ2UgKnJhbmdlOwo+ICAJdWludDMyX3QgcmV0Owo+ IEBAIC0yODAsMTMgKzI4MSwxNCBAQCBpbnRlbF9yZWdpc3Rlcl9yZWFkKHVpbnQzMl90IHJlZykK PiAgCX0KPiAgCj4gIHJlYWRfb3V0Ogo+IC0JcmV0ID0gKih2b2xhdGlsZSB1aW50MzJfdCAqKSgo dm9sYXRpbGUgY2hhciAqKWlndF9nbG9iYWxfbW1pbyArIHJlZyk7Cj4gKwlyZXQgPSAqKHZvbGF0 aWxlIHVpbnQzMl90ICopKCh2b2xhdGlsZSBjaGFyICopaWd0X21taW8gKyByZWcpOwo+ICBvdXQ6 Cj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+ICAvKioKPiAgICogaW50ZWxfcmVnaXN0ZXJfd3Jp dGU6Cj4gKyAqIEBpZ3RfbW1pbyBtYXBlZCBtZW1vcnkgcG9pbnRlcgo+ICAgKiBAcmVnOiByZWdp c3RlciBvZmZzZXQKPiAgICogQHZhbDogdmFsdWUgdG8gd3JpdGUKPiAgICoKPiBAQCAtMjk3LDcg KzI5OSw3IEBAIG91dDoKPiAgICogd2hpdGUgbGlzdHMuCj4gICAqLwo+ICB2b2lkCj4gLWludGVs X3JlZ2lzdGVyX3dyaXRlKHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKQo+ICtpbnRlbF9yZWdp c3Rlcl93cml0ZSh2b2lkICppZ3RfbW1pbywgdWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpCj4g IHsKPiAgCXN0cnVjdCBpbnRlbF9yZWdpc3Rlcl9yYW5nZSAqcmFuZ2U7Cj4gIAo+IEBAIC0zMTcs MTIgKzMxOSwxMyBAQCBpbnRlbF9yZWdpc3Rlcl93cml0ZSh1aW50MzJfdCByZWcsIHVpbnQzMl90 IHZhbCkKPiAgCQkgICAgICAiUmVnaXN0ZXIgd3JpdGUgYmxvY2tlZCBmb3Igc2FmZXR5ICIiKCow eCUwOHggPSAweCV4KVxuIiwgcmVnLCB2YWwpOwo+ICAKPiAgd3JpdGVfb3V0Ogo+IC0JKih2b2xh dGlsZSB1aW50MzJfdCAqKSgodm9sYXRpbGUgY2hhciAqKWlndF9nbG9iYWxfbW1pbyArIHJlZykg PSB2YWw7Cj4gKwkqKHZvbGF0aWxlIHVpbnQzMl90ICopKCh2b2xhdGlsZSBjaGFyICopaWd0X21t aW8gKyByZWcpID0gdmFsOwo+ICB9Cj4gIAo+ICAKPiAgLyoqCj4gICAqIElOUkVHOgo+ICsgKiBA aWd0X21taW8gbWFwZWQgbWVtb3J5IHBvaW50ZXIKPiAgICogQHJlZzogcmVnaXN0ZXIgb2Zmc2V0 Cj4gICAqCj4gICAqIDMyLWJpdCByZWFkIG9mIHRoZSByZWdpc3RlciBhdCBvZmZzZXQgQHJlZy4g VGhpcyBmdW5jdGlvbiBvbmx5IHdvcmtzIHdoZW4gdGhlCj4gQEAgLTMzMywxMyArMzM2LDE0IEBA IHdyaXRlX291dDoKPiAgICogUmV0dXJuczoKPiAgICogVGhlIHZhbHVlIHJlYWQgZnJvbSB0aGUg cmVnaXN0ZXIuCj4gICAqLwo+IC11aW50MzJfdCBJTlJFRyh1aW50MzJfdCByZWcpCj4gK3VpbnQz Ml90IElOUkVHKHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCByZWcpCj4gIHsKPiAtCXJldHVybiAq KHZvbGF0aWxlIHVpbnQzMl90ICopKCh2b2xhdGlsZSBjaGFyICopaWd0X2dsb2JhbF9tbWlvICsg cmVnKTsKPiArCXJldHVybiAqKHZvbGF0aWxlIHVpbnQzMl90ICopKCh2b2xhdGlsZSBjaGFyICop aWd0X21taW8gKyByZWcpOwo+ICB9Cj4gIAo+ICAvKioKPiAgICogSU5SRUcxNjoKPiArICogQGln dF9tbWlvIG1hcGVkIG1lbW9yeSBwb2ludGVyCj4gICAqIEByZWc6IHJlZ2lzdGVyIG9mZnNldAo+ ICAgKgo+ICAgKiAxNi1iaXQgcmVhZCBvZiB0aGUgcmVnaXN0ZXIgYXQgb2Zmc2V0IEByZWcuIFRo aXMgZnVuY3Rpb24gb25seSB3b3JrcyB3aGVuIHRoZQo+IEBAIC0zNTAsMTMgKzM1NCwxNCBAQCB1 aW50MzJfdCBJTlJFRyh1aW50MzJfdCByZWcpCj4gICAqIFJldHVybnM6Cj4gICAqIFRoZSB2YWx1 ZSByZWFkIGZyb20gdGhlIHJlZ2lzdGVyLgo+ICAgKi8KPiAtdWludDE2X3QgSU5SRUcxNih1aW50 MzJfdCByZWcpCj4gK3VpbnQxNl90IElOUkVHMTYodm9pZCAqaWd0X21taW8sIHVpbnQzMl90IHJl ZykKPiAgewo+IC0JcmV0dXJuICoodm9sYXRpbGUgdWludDE2X3QgKikoKHZvbGF0aWxlIGNoYXIg KilpZ3RfZ2xvYmFsX21taW8gKyByZWcpOwo+ICsJcmV0dXJuICoodm9sYXRpbGUgdWludDE2X3Qg KikoKHZvbGF0aWxlIGNoYXIgKilpZ3RfbW1pbyArIHJlZyk7Cj4gIH0KPiAgCj4gIC8qKgo+ICAg KiBJTlJFRzg6Cj4gKyAqIEBpZ3RfbW1pbyBtYXBlZCBtZW1vcnkgcG9pbnRlcgo+ICAgKiBAcmVn OiByZWdpc3RlciBvZmZzZXQKPiAgICoKPiAgICogOC1iaXQgcmVhZCBvZiB0aGUgcmVnaXN0ZXIg YXQgb2Zmc2V0IEByZWcuIFRoaXMgZnVuY3Rpb24gb25seSB3b3JrcyB3aGVuIHRoZQo+IEBAIC0z NjcsMTMgKzM3MiwxNCBAQCB1aW50MTZfdCBJTlJFRzE2KHVpbnQzMl90IHJlZykKPiAgICogUmV0 dXJuczoKPiAgICogVGhlIHZhbHVlIHJlYWQgZnJvbSB0aGUgcmVnaXN0ZXIuCj4gICAqLwo+IC11 aW50OF90IElOUkVHOCh1aW50MzJfdCByZWcpCj4gK3VpbnQ4X3QgSU5SRUc4KHZvaWQgKmlndF9t bWlvLCB1aW50MzJfdCByZWcpCj4gIHsKPiAtCXJldHVybiAqKCh2b2xhdGlsZSB1aW50OF90ICop aWd0X2dsb2JhbF9tbWlvICsgcmVnKTsKPiArCXJldHVybiAqKCh2b2xhdGlsZSB1aW50OF90ICop aWd0X21taW8gKyByZWcpOwo+ICB9Cj4gIAo+ICAvKioKPiAgICogT1VUUkVHOgo+ICsgKiBAaWd0 X21taW8gbWFwZWQgbWVtb3J5IHBvaW50ZXIKPiAgICogQHJlZzogcmVnaXN0ZXIgb2Zmc2V0Cj4g ICAqIEB2YWw6IHZhbHVlIHRvIHdyaXRlCj4gICAqCj4gQEAgLTM4Myw5ICszODksOSBAQCB1aW50 OF90IElOUkVHOCh1aW50MzJfdCByZWcpCj4gICAqCj4gICAqIFRoaXMgZnVuY3Rpb24gZGlyZWN0 bHkgYWNjZXNzZXMgdGhlICNpZ3RfZ2xvYmFsX21taW8gd2l0aG91dCBzYWZldHkgY2hlY2tzLgo+ ICAgKi8KPiAtdm9pZCBPVVRSRUcodWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpCj4gK3ZvaWQg T1VUUkVHKHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCkKPiAgewo+ IC0JKih2b2xhdGlsZSB1aW50MzJfdCAqKSgodm9sYXRpbGUgY2hhciAqKWlndF9nbG9iYWxfbW1p byArIHJlZykgPSB2YWw7Cj4gKwkqKHZvbGF0aWxlIHVpbnQzMl90ICopKCh2b2xhdGlsZSBjaGFy ICopaWd0X21taW8gKyByZWcpID0gdmFsOwo+ICB9Cj4gIAo+ICAvKioKPiBAQCAtMzk5LDEzICs0 MDUsMTQgQEAgdm9pZCBPVVRSRUcodWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpCj4gICAqCj4g ICAqIFRoaXMgZnVuY3Rpb24gZGlyZWN0bHkgYWNjZXNzZXMgdGhlICNpZ3RfZ2xvYmFsX21taW8g d2l0aG91dCBzYWZldHkgY2hlY2tzLgo+ICAgKi8KPiAtdm9pZCBPVVRSRUcxNih1aW50MzJfdCBy ZWcsIHVpbnQxNl90IHZhbCkKPiArdm9pZCBPVVRSRUcxNih2b2lkICppZ3RfbW1pbywgdWludDMy X3QgcmVnLCB1aW50MTZfdCB2YWwpCj4gIHsKPiAtCSoodm9sYXRpbGUgdWludDE2X3QgKikoKHZv bGF0aWxlIGNoYXIgKilpZ3RfZ2xvYmFsX21taW8gKyByZWcpID0gdmFsOwo+ICsJKih2b2xhdGls ZSB1aW50MTZfdCAqKSgodm9sYXRpbGUgY2hhciAqKWlndF9tbWlvICsgcmVnKSA9IHZhbDsKPiAg fQo+ICAKPiAgLyoqCj4gICAqIE9VVFJFRzg6Cj4gKyAqIEBpZ3RfbW1pbyBtYXBlZCBtZW1vcnkg cG9pbnRlcgo+ICAgKiBAcmVnOiByZWdpc3RlciBvZmZzZXQKPiAgICogQHZhbDogdmFsdWUgdG8g d3JpdGUKPiAgICoKPiBAQCAtNDE1LDcgKzQyMiw3IEBAIHZvaWQgT1VUUkVHMTYodWludDMyX3Qg cmVnLCB1aW50MTZfdCB2YWwpCj4gICAqCj4gICAqIFRoaXMgZnVuY3Rpb24gZGlyZWN0bHkgYWNj ZXNzZXMgdGhlICNpZ3RfZ2xvYmFsX21taW8gd2l0aG91dCBzYWZldHkgY2hlY2tzLgo+ICAgKi8K PiAtdm9pZCBPVVRSRUc4KHVpbnQzMl90IHJlZywgdWludDhfdCB2YWwpCj4gK3ZvaWQgT1VUUkVH OCh2b2lkICppZ3RfbW1pbywgdWludDMyX3QgcmVnLCB1aW50OF90IHZhbCkKPiAgewo+IC0JKigo dm9sYXRpbGUgdWludDhfdCAqKWlndF9nbG9iYWxfbW1pbyArIHJlZykgPSB2YWw7Cj4gKwkqKCh2 b2xhdGlsZSB1aW50OF90ICopaWd0X21taW8gKyByZWcpID0gdmFsOwo+ICB9Cj4gZGlmZiAtLWdp dCBhL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfcGFyc2UuYyBiL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfcGFy c2UuYwo+IGluZGV4IDYyZThkMGE1Li40MjNkNmVhNiAxMDA2NDQKPiAtLS0gYS90ZXN0cy9pOTE1 L2dlbV9leGVjX3BhcnNlLmMKPiArKysgYi90ZXN0cy9pOTE1L2dlbV9leGVjX3BhcnNlLmMKPiBA QCAtMjg0LDkgKzI4NCw5IEBAIHRlc3RfbHJpKGludCBmZCwgdWludDMyX3QgaGFuZGxlLCBzdHJ1 Y3QgdGVzdF9scmkgKnRlc3QpCj4gIAkJICB0ZXN0LT5uYW1lLCB0ZXN0LT5yZWcsIHRlc3QtPnRl c3RfdmFsLAo+ICAJCSAgZXhwZWN0ZWRfZXJybm8sIGV4cGVjdCk7Cj4gIAo+IC0JaW50ZWxfcmVn aXN0ZXJfd3JpdGUodGVzdC0+cmVnLCB0ZXN0LT5pbml0X3ZhbCk7Cj4gKwlpbnRlbF9yZWdpc3Rl cl93cml0ZShpZ3RfZ2xvYmFsX21taW8sIHRlc3QtPnJlZywgdGVzdC0+aW5pdF92YWwpOwo+ICAK PiAtCWlndF9hc3NlcnRfZXFfdTMyKChpbnRlbF9yZWdpc3Rlcl9yZWFkKHRlc3QtPnJlZykgJgo+ ICsJaWd0X2Fzc2VydF9lcV91MzIoKGludGVsX3JlZ2lzdGVyX3JlYWQoaWd0X2dsb2JhbF9tbWlv LCB0ZXN0LT5yZWcpICYKPiAgCQkJICAgdGVzdC0+cmVhZF9tYXNrKSwKPiAgCQkJICB0ZXN0LT5p bml0X3ZhbCk7Cj4gIAo+IEBAIC0yOTYsNyArMjk2LDcgQEAgdGVzdF9scmkoaW50IGZkLCB1aW50 MzJfdCBoYW5kbGUsIHN0cnVjdCB0ZXN0X2xyaSAqdGVzdCkKPiAgCQkgICBleHBlY3RlZF9lcnJu byk7Cj4gIAlnZW1fc3luYyhmZCwgaGFuZGxlKTsKPiAgCj4gLQlpZ3RfYXNzZXJ0X2VxX3UzMigo aW50ZWxfcmVnaXN0ZXJfcmVhZCh0ZXN0LT5yZWcpICYKPiArCWlndF9hc3NlcnRfZXFfdTMyKChp bnRlbF9yZWdpc3Rlcl9yZWFkKGlndF9nbG9iYWxfbW1pbywgdGVzdC0+cmVnKSAmCj4gIAkJCSAg IHRlc3QtPnJlYWRfbWFzayksCj4gIAkJCSAgZXhwZWN0KTsKPiAgfQo+IGRpZmYgLS1naXQgYS90 ZXN0cy9pOTE1L2k5MTVfcG1fbHBzcC5jIGIvdGVzdHMvaTkxNS9pOTE1X3BtX2xwc3AuYwo+IGlu ZGV4IGIzMTlkYmU5Li5mNjljODhmNiAxMDA2NDQKPiAtLS0gYS90ZXN0cy9pOTE1L2k5MTVfcG1f bHBzcC5jCj4gKysrIGIvdGVzdHMvaTkxNS9pOTE1X3BtX2xwc3AuYwo+IEBAIC00MCw3ICs0MCw3 IEBAIHN0YXRpYyBib29sIGxwc3BfaXNfZW5hYmxlZChpbnQgZHJtX2ZkKQo+ICB7Cj4gIAl1aW50 MzJfdCB2YWw7Cj4gIAo+IC0JdmFsID0gSU5SRUcoSFNXX1BXUl9XRUxMX0NUTDIpOwo+ICsJdmFs ID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBIU1dfUFdSX1dFTExfQ1RMMik7Cj4gIAlyZXR1cm4g ISh2YWwgJiBIU1dfUFdSX1dFTExfU1RBVEVfRU5BQkxFRCk7Cj4gIH0KPiAgCj4gZGlmZiAtLWdp dCBhL3Rvb2xzL2ludGVsX2F1ZGlvX2R1bXAuYyBiL3Rvb2xzL2ludGVsX2F1ZGlvX2R1bXAuYwo+ IGluZGV4IGQ5NTJlNTRiLi44NjY2NDQ3OCAxMDA2NDQKPiAtLS0gYS90b29scy9pbnRlbF9hdWRp b19kdW1wLmMKPiArKysgYi90b29scy9pbnRlbF9hdWRpb19kdW1wLmMKPiBAQCAtNjcsMjMgKzY3 LDIzIEBAIHN0YXRpYyBpbnQgZGlzcF9yZWdfYmFzZSA9IDA7CS8qIGJhc2UgYWRkcmVzcyBvZiBk aXNwbGF5IHJlZ2lzdGVycyAqLwo+ICAKPiAgI2RlZmluZSBkdW1wX3JlZyhyZWcsIGRlc2MpCQkJ CQlcCj4gIAlkbyB7CQkJCQkJCVwKPiAtCQlkd29yZCA9IElOUkVHKHJlZyk7CVwKPiArCQlkd29y ZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgcmVnKTsJXAo+ICAJCXByaW50ZigiJS0yMXMoJSN4 KSAweCUwOHggICVzXG4iLCAjIHJlZywgcmVnLCBkd29yZCwgZGVzYyk7CVwKPiAgCX0gd2hpbGUg KDApCj4gIAo+ICAjZGVmaW5lIGR1bXBfZGlzcF9yZWcocmVnLCBkZXNjKQkJCQkJXAo+ICAJZG8g ewkJCQkJCQlcCj4gLQkJZHdvcmQgPSBJTlJFRyhkaXNwX3JlZ19iYXNlICsgcmVnKTsJXAo+ICsJ CWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBkaXNwX3JlZ19iYXNlICsgcmVnKTsJXAo+ ICAJCXByaW50ZigiJS0yMXMoJSN4KSAweCUwOHggICVzXG4iLCAjIHJlZywgcmVnLCBkd29yZCwg ZGVzYyk7CVwKPiAgCX0gd2hpbGUgKDApCj4gIAo+ICAjZGVmaW5lIGR1bXBfYXVkX3JlZyhyZWcs IGRlc2MpCQkJCQlcCj4gIAlkbyB7CQkJCQkJCVwKPiAtCQlkd29yZCA9IElOUkVHKGF1ZF9yZWdf YmFzZSArIHJlZyk7CVwKPiArCQlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgYXVkX3Jl Z19iYXNlICsgcmVnKTsJXAo+ICAJCXByaW50ZigiJS0yMXMoJSN4KSAweCUwOHggICVzXG4iLCAj IHJlZywgcmVnLCBkd29yZCwgZGVzYyk7CVwKPiAgCX0gd2hpbGUgKDApCj4gIAo+IC0jZGVmaW5l IHJlYWRfYXVkX3JlZyhyZWcpCUlOUkVHKGF1ZF9yZWdfYmFzZSArIChyZWcpKQo+ICsjZGVmaW5l IHJlYWRfYXVkX3JlZyhyZWcpCUlOUkVHKGlndF9nbG9iYWxfbW1pbywgYXVkX3JlZ19iYXNlICsg KHJlZykpCj4gIAo+ICBzdGF0aWMgaW50IGdldF9udW1fcGlwZXModm9pZCkKPiAgewo+IEBAIC01 MzIsMzEgKzUzMiwzMSBAQCBzdGF0aWMgdm9pZCBkdW1wX2VhZ2xlbGFrZSh2b2lkKQo+ICAKPiAg CXByaW50ZigiXG5EZXRhaWxzOlxuXG4iKTsKPiAgCj4gLQlkd29yZCA9IElOUkVHKEFVRF9WSURf RElEKTsKPiArCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfVklEX0RJRCk7Cj4g IAlwcmludGYoIkFVRF9WSURfRElEIHZlbmRvciBpZFx0XHRcdDB4JXhcbiIsIGR3b3JkID4+IDE2 KTsKPiAgCXByaW50ZigiQVVEX1ZJRF9ESUQgZGV2aWNlIGlkXHRcdFx0MHgleFxuIiwgZHdvcmQg JiAweGZmZmYpOwo+ICAKPiAtCWR3b3JkID0gSU5SRUcoQVVEX1JJRCk7Cj4gKwlkd29yZCA9IElO UkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX1JJRCk7Cj4gIAlwcmludGYoIkFVRF9SSUQgbWFqb3Ig cmV2aXNpb25cdFx0XHQweCVseFxuIiwgQklUUyhkd29yZCwgMjMsIDIwKSk7Cj4gIAlwcmludGYo IkFVRF9SSUQgbWlub3IgcmV2aXNpb25cdFx0XHQweCVseFxuIiwgQklUUyhkd29yZCwgMTksIDE2 KSk7Cj4gIAlwcmludGYoIkFVRF9SSUQgcmV2aXNpb24gaWRcdFx0XHQweCVseFxuIiwgICAgQklU Uyhkd29yZCwgMTUsIDgpKTsKPiAgCXByaW50ZigiQVVEX1JJRCBzdGVwcGluZyBpZFx0XHRcdDB4 JWx4XG4iLCAgICBCSVRTKGR3b3JkLCA3LCAwKSk7Cj4gIAo+IC0JZHdvcmQgPSBJTlJFRyhTRFZP Qik7Cj4gKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgU0RWT0IpOwo+ICAJcHJpbnRm KCJTRFZPQiBlbmFibGVcdFx0XHRcdCV1XG4iLCAgICAgICEhKGR3b3JkICYgU0RWT19FTkFCTEUp KTsKPiAgCXByaW50ZigiU0RWT0IgSERNSSBlbmNvZGluZ1x0XHRcdCV1XG4iLCAhIShkd29yZCAm IFNEVk9fRU5DT0RJTkdfSERNSSkpOwo+ICAJcHJpbnRmKCJTRFZPQiBTRFZPIGVuY29kaW5nXHRc dFx0JXVcbiIsICEhKGR3b3JkICYgU0RWT19FTkNPRElOR19TRFZPKSk7Cj4gIAlwcmludGYoIlNE Vk9CIG51bGwgcGFja2V0c1x0XHRcdCV1XG4iLCAgISEoZHdvcmQgJiBTRFZPX05VTExfUEFDS0VU U19EVVJJTkdfVlNZTkMpKTsKPiAgCXByaW50ZigiU0RWT0IgYXVkaW8gZW5hYmxlZFx0XHRcdCV1 XG4iLCAhIShkd29yZCAmIFNEVk9fQVVESU9fRU5BQkxFKSk7Cj4gIAo+IC0JZHdvcmQgPSBJTlJF RyhTRFZPQyk7Cj4gKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgU0RWT0MpOwo+ICAJ cHJpbnRmKCJTRFZPQyBlbmFibGVcdFx0XHRcdCV1XG4iLCAgICAgICEhKGR3b3JkICYgU0RWT19F TkFCTEUpKTsKPiAgCXByaW50ZigiU0RWT0MgSERNSSBlbmNvZGluZ1x0XHRcdCV1XG4iLCAhIShk d29yZCAmIFNEVk9fRU5DT0RJTkdfSERNSSkpOwo+ICAJcHJpbnRmKCJTRFZPQyBTRFZPIGVuY29k aW5nXHRcdFx0JXVcbiIsICEhKGR3b3JkICYgU0RWT19FTkNPRElOR19TRFZPKSk7Cj4gIAlwcmlu dGYoIlNEVk9DIG51bGwgcGFja2V0c1x0XHRcdCV1XG4iLCAgISEoZHdvcmQgJiBTRFZPX05VTExf UEFDS0VUU19EVVJJTkdfVlNZTkMpKTsKPiAgCXByaW50ZigiU0RWT0MgYXVkaW8gZW5hYmxlZFx0 XHRcdCV1XG4iLCAhIShkd29yZCAmIFNEVk9fQVVESU9fRU5BQkxFKSk7Cj4gIAo+IC0JZHdvcmQg PSBJTlJFRyhQT1JUX0hPVFBMVUdfRU4pOwo+ICsJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21t aW8sIFBPUlRfSE9UUExVR19FTik7Cj4gIAlwcmludGYoIlBPUlRfSE9UUExVR19FTiBEaXNwbGF5 UG9ydC9IRE1JIHBvcnQgQlx0JWxkXG4iLCBCSVQoZHdvcmQsIDI5KSksCj4gIAlwcmludGYoIlBP UlRfSE9UUExVR19FTiBEaXNwbGF5UG9ydC9IRE1JIHBvcnQgQ1x0JWxkXG4iLCBCSVQoZHdvcmQs IDI4KSksCj4gIAlwcmludGYoIlBPUlRfSE9UUExVR19FTiBEaXNwbGF5UG9ydCBwb3J0IERcdCVs ZFxuIiwgICAgICBCSVQoZHdvcmQsIDI3KSksCj4gQEAgLTU2Niw3ICs1NjYsNyBAQCBzdGF0aWMg dm9pZCBkdW1wX2VhZ2xlbGFrZSh2b2lkKQo+ICAJcHJpbnRmKCJQT1JUX0hPVFBMVUdfRU4gVFZc dFx0XHQlbGRcbiIsICAgIEJJVChkd29yZCwgMjMpKSwKPiAgCXByaW50ZigiUE9SVF9IT1RQTFVH X0VOIENSVFx0XHRcdCVsZFxuIiwgICBCSVQoZHdvcmQsIDkpKSwKPiAgCj4gLQlkd29yZCA9IElO UkVHKFZJREVPX0RJUF9DVEwpOwo+ICsJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIFZJ REVPX0RJUF9DVEwpOwo+ICAJcHJpbnRmKCJWSURFT19ESVBfQ1RMIGVuYWJsZSBncmFwaGljcyBE SVBcdCVsZFxuIiwgICAgIEJJVChkd29yZCwgMzEpKSwKPiAgCXByaW50ZigiVklERU9fRElQX0NU TCBwb3J0IHNlbGVjdFx0XHRbMHglbHhdICVzXG4iLAo+ICAJCQkJQklUUyhkd29yZCwgMzAsIDI5 KSwgZGlwX3BvcnRbQklUUyhkd29yZCwgMzAsIDI5KV0pOwo+IEBAIC01ODEsNDYgKzU4MSw0NiBA QCBzdGF0aWMgdm9pZCBkdW1wX2VhZ2xlbGFrZSh2b2lkKQo+ICAJcHJpbnRmKCJWSURFT19ESVBf Q1RMIERJUCBidWZmZXIgc2l6ZVx0XHQlbHVcbiIsIEJJVFMoZHdvcmQsIDExLCA4KSk7Cj4gIAlw cmludGYoIlZJREVPX0RJUF9DVEwgRElQIGFkZHJlc3NcdFx0JWx1XG4iLCBCSVRTKGR3b3JkLCAz LCAwKSk7Cj4gIAo+IC0JZHdvcmQgPSBJTlJFRyhBVURfQ09ORklHKTsKPiArCWR3b3JkID0gSU5S RUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfQ09ORklHKTsKPiAgCXByaW50ZigiQVVEX0NPTkZJRyBw aXhlbCBjbG9ja1x0XHRcdFsweCVseF0gJXNcbiIsIEJJVFMoZHdvcmQsIDE5LCAxNiksCj4gIAkJ CU9QTkFNRShwaXhlbF9jbG9jaywgQklUUyhkd29yZCwgMTksIDE2KSkpOwo+ICAJcHJpbnRmKCJB VURfQ09ORklHIGZhYnJpY2F0aW9uIGVuYWJsZWRcdFx0JWx1XG4iLCBCSVRTKGR3b3JkLCAyLCAy KSk7Cj4gIAlwcmludGYoIkFVRF9DT05GSUcgcHJvZmVzc2lvbmFsIHVzZSBhbGxvd2VkXHQlbHVc biIsIEJJVChkd29yZCwgMSkpOwo+ICAJcHJpbnRmKCJBVURfQ09ORklHIGZ1c2UgZW5hYmxlZFx0 XHRcdCVsdVxuIiwgQklUKGR3b3JkLCAwKSk7Cj4gIAo+IC0JZHdvcmQgPSBJTlJFRyhBVURfREVC VUcpOwo+ICsJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9ERUJVRyk7Cj4gIAlw cmludGYoIkFVRF9ERUJVRyBmdW5jdGlvbiByZXNldFx0XHQlbHVcbiIsIEJJVChkd29yZCwgMCkp Owo+ICAKPiAtCWR3b3JkID0gSU5SRUcoQVVEX1NVQk5fQ05UKTsKPiArCWR3b3JkID0gSU5SRUco aWd0X2dsb2JhbF9tbWlvLCBBVURfU1VCTl9DTlQpOwo+ICAJcHJpbnRmKCJBVURfU1VCTl9DTlQg c3RhcnRpbmcgbm9kZSBudW1iZXJcdDB4JWx4XG4iLCAgQklUUyhkd29yZCwgMjMsIDE2KSk7Cj4g IAlwcmludGYoIkFVRF9TVUJOX0NOVCB0b3RhbCBudW1iZXIgb2Ygbm9kZXNcdDB4JWx4XG4iLCBC SVRTKGR3b3JkLCA3LCAwKSk7Cj4gIAo+IC0JZHdvcmQgPSBJTlJFRyhBVURfU1VCTl9DTlQyKTsK PiArCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfU1VCTl9DTlQyKTsKPiAgCXBy aW50ZigiQVVEX1NVQk5fQ05UMiBzdGFydGluZyBub2RlIG51bWJlclx0MHglbHhcbiIsICBCSVRT KGR3b3JkLCAyNCwgMTYpKTsKPiAgCXByaW50ZigiQVVEX1NVQk5fQ05UMiB0b3RhbCBudW1iZXIg b2Ygbm9kZXNcdDB4JWx4XG4iLCBCSVRTKGR3b3JkLCA3LCAwKSk7Cj4gIAo+IC0JZHdvcmQgPSBJ TlJFRyhBVURfRlVOQ19HUlApOwo+ICsJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFV RF9GVU5DX0dSUCk7Cj4gIAlwcmludGYoIkFVRF9GVU5DX0dSUCB1bnNvbCBjYXBhYmxlXHRcdCVs dVxuIiwgQklUKGR3b3JkLCA4KSk7Cj4gIAlwcmludGYoIkFVRF9GVU5DX0dSUCBub2RlIHR5cGVc dFx0XHQweCVseFxuIiwgQklUUyhkd29yZCwgNywgMCkpOwo+ICAKPiAtCWR3b3JkID0gSU5SRUco QVVEX0dSUF9DQVApOwo+ICsJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9HUlBf Q0FQKTsKPiAgCXByaW50ZigiQVVEX0dSUF9DQVAgYmVlcCAwXHRcdFx0JWx1XG4iLCAgICAgICBC SVQoZHdvcmQsIDE2KSk7Cj4gIAlwcmludGYoIkFVRF9HUlBfQ0FQIGlucHV0IGRlbGF5XHRcdFx0 JWx1XG4iLCAgQklUUyhkd29yZCwgMTEsIDgpKTsKPiAgCXByaW50ZigiQVVEX0dSUF9DQVAgb3V0 cHV0IGRlbGF5XHRcdCVsdVxuIiwgICBCSVRTKGR3b3JkLCAzLCAwKSk7Cj4gIAo+IC0JZHdvcmQg PSBJTlJFRyhBVURfUFdSU1QpOwo+ICsJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFV RF9QV1JTVCk7Cj4gIAlwcmludGYoIkFVRF9QV1JTVCBkZXZpY2UgcG93ZXIgc3RhdGVcdFx0JXNc biIsCj4gIAkJCXBvd2VyX3N0YXRlW0JJVFMoZHdvcmQsIDUsIDQpXSk7Cj4gIAlwcmludGYoIkFV RF9QV1JTVCBkZXZpY2UgcG93ZXIgc3RhdGUgc2V0dGluZ1x0JXNcbiIsCj4gIAkJCXBvd2VyX3N0 YXRlW0JJVFMoZHdvcmQsIDEsIDApXSk7Cj4gIAo+IC0JZHdvcmQgPSBJTlJFRyhBVURfU1VQUFdS KTsKPiArCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfU1VQUFdSKTsKPiAgCXBy aW50ZigiQVVEX1NVUFBXUiBzdXBwb3J0IEQwXHRcdFx0JWx1XG4iLCBCSVQoZHdvcmQsIDApKTsK PiAgCXByaW50ZigiQVVEX1NVUFBXUiBzdXBwb3J0IEQxXHRcdFx0JWx1XG4iLCBCSVQoZHdvcmQs IDEpKTsKPiAgCXByaW50ZigiQVVEX1NVUFBXUiBzdXBwb3J0IEQyXHRcdFx0JWx1XG4iLCBCSVQo ZHdvcmQsIDIpKTsKPiAgCXByaW50ZigiQVVEX1NVUFBXUiBzdXBwb3J0IEQzXHRcdFx0JWx1XG4i LCBCSVQoZHdvcmQsIDMpKTsKPiAgCj4gLQlkd29yZCA9IElOUkVHKEFVRF9PVVRfQ1dDQVApOwo+ ICsJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9PVVRfQ1dDQVApOwo+ICAJcHJp bnRmKCJBVURfT1VUX0NXQ0FQIHdpZGdldCB0eXBlXHRcdDB4JWx4XG4iLCAgQklUUyhkd29yZCwg MjMsIDIwKSk7Cj4gIAlwcmludGYoIkFVRF9PVVRfQ1dDQVAgc2FtcGxlIGRlbGF5XHRcdDB4JWx4 XG4iLCBCSVRTKGR3b3JkLCAxOSwgMTYpKTsKPiAgCXByaW50ZigiQVVEX09VVF9DV0NBUCBjaGFu bmVsIGNvdW50XHRcdCVsdVxuIiwKPiBAQCAtNjM2LDcgKzYzNiw3IEBAIHN0YXRpYyB2b2lkIGR1 bXBfZWFnbGVsYWtlKHZvaWQpCj4gIAlwcmludGYoIkFVRF9PVVRfQ1dDQVAgb3V0IGFtcCBwcmVz ZW50XHRcdCVsdVxuIiwgIEJJVChkd29yZCwgMikpOwo+ICAJcHJpbnRmKCJBVURfT1VUX0NXQ0FQ IGluIGFtcCBwcmVzZW50XHRcdCVsdVxuIiwgICBCSVQoZHdvcmQsIDEpKTsKPiAgCj4gLQlkd29y ZCA9IElOUkVHKEFVRF9PVVRfRElHX0NOVlQpOwo+ICsJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFs X21taW8sIEFVRF9PVVRfRElHX0NOVlQpOwo+ICAJcHJpbnRmKCJBVURfT1VUX0RJR19DTlZUIFNQ RElGIGNhdGVnb3J5XHRcdDB4JWx4XG4iLCBCSVRTKGR3b3JkLCAxNCwgOCkpOwo+ICAJcHJpbnRm KCJBVURfT1VUX0RJR19DTlZUIFNQRElGIGxldmVsXHRcdCVsdVxuIiwgICAgICBCSVQoZHdvcmQs IDcpKTsKPiAgCXByaW50ZigiQVVEX09VVF9ESUdfQ05WVCBwcm9mZXNzaW9uYWxcdFx0JWx1XG4i LCAgICAgQklUKGR3b3JkLCA2KSk7Cj4gQEAgLTY0NywxNiArNjQ3LDE2IEBAIHN0YXRpYyB2b2lk IGR1bXBfZWFnbGVsYWtlKHZvaWQpCj4gIAlwcmludGYoIkFVRF9PVVRfRElHX0NOVlQgdmFsaWRp dHkgZmxhZ1x0XHQlbHVcbiIsICAgIEJJVChkd29yZCwgMSkpOwo+ICAJcHJpbnRmKCJBVURfT1VU X0RJR19DTlZUIGRpZ2l0YWwgZW5hYmxlXHRcdCVsdVxuIiwgICBCSVQoZHdvcmQsIDApKTsKPiAg Cj4gLQlkd29yZCA9IElOUkVHKEFVRF9PVVRfQ0hfU1RSKTsKPiArCWR3b3JkID0gSU5SRUcoaWd0 X2dsb2JhbF9tbWlvLCBBVURfT1VUX0NIX1NUUik7Cj4gIAlwcmludGYoIkFVRF9PVVRfQ0hfU1RS IHN0cmVhbSBpZFx0XHQweCVseFxuIiwgICAgICAgIEJJVFMoZHdvcmQsIDcsIDQpKTsKPiAgCXBy aW50ZigiQVVEX09VVF9DSF9TVFIgbG93ZXN0IGNoYW5uZWxcdFx0JWx1XG4iLCAgICAgQklUUyhk d29yZCwgMywgMCkpOwo+ICAKPiAtCWR3b3JkID0gSU5SRUcoQVVEX09VVF9TVFJfREVTQyk7Cj4g Kwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX09VVF9TVFJfREVTQyk7Cj4gIAlw cmludGYoIkFVRF9PVVRfU1RSX0RFU0Mgc3RyZWFtIGNoYW5uZWxzXHQlbHVcbiIsICAgIEJJVFMo ZHdvcmQsIDMsIDApICsgMSk7Cj4gIAlwcmludGYoIkFVRF9PVVRfU1RSX0RFU0MgQml0cyBwZXIg U2FtcGxlXHRbJSNseF0gJXNcbiIsCj4gIAkJCUJJVFMoZHdvcmQsIDYsIDQpLCBPUE5BTUUoYml0 c19wZXJfc2FtcGxlLCBCSVRTKGR3b3JkLCA2LCA0KSkpOwo+ICAKPiAtCWR3b3JkID0gSU5SRUco QVVEX1BJTldfQ0FQKTsKPiArCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfUElO V19DQVApOwo+ICAJcHJpbnRmKCJBVURfUElOV19DQVAgd2lkZ2V0IHR5cGVcdFx0MHglbHhcbiIs ICAgICAgICBCSVRTKGR3b3JkLCAyMywgMjApKTsKPiAgCXByaW50ZigiQVVEX1BJTldfQ0FQIHNh bXBsZSBkZWxheVx0XHQweCVseFxuIiwgICAgICAgQklUUyhkd29yZCwgMTksIDE2KSk7Cj4gIAlw cmludGYoIkFVRF9QSU5XX0NBUCBjaGFubmVsIGNvdW50XHRcdCVsdVxuIiwKPiBAQCAtNjc0LDEz ICs2NzQsMTMgQEAgc3RhdGljIHZvaWQgZHVtcF9lYWdsZWxha2Uodm9pZCkKPiAgCXByaW50Zigi QVVEX1BJTldfQ0FQIGluIGFtcCBwcmVzZW50XHRcdCVsdVxuIiwgICAgICAgQklUKGR3b3JkLCAx KSk7Cj4gIAo+ICAKPiAtCWR3b3JkID0gSU5SRUcoQVVEX1BJTl9DQVApOwo+ICsJZHdvcmQgPSBJ TlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9QSU5fQ0FQKTsKPiAgCXByaW50ZigiQVVEX1BJTl9D QVAgRUFQRFx0XHRcdCVsdVxuIiwgICAgICAgICAgQklUKGR3b3JkLCAxNikpOwo+ICAJcHJpbnRm KCJBVURfUElOX0NBUCBIRE1JXHRcdFx0JWx1XG4iLCAgICAgICAgICBCSVQoZHdvcmQsIDcpKTsK PiAgCXByaW50ZigiQVVEX1BJTl9DQVAgb3V0cHV0XHRcdFx0JWx1XG4iLCAgICAgICAgQklUKGR3 b3JkLCA0KSk7Cj4gIAlwcmludGYoIkFVRF9QSU5fQ0FQIHByZXNlbmNlIGRldGVjdFx0XHQlbHVc biIsIEJJVChkd29yZCwgMikpOwo+ICAKPiAtCWR3b3JkID0gSU5SRUcoQVVEX1BJTldfQ05UUik7 Cj4gKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX1BJTldfQ05UUik7Cj4gIAlw cmludGYoIkFVRF9QSU5XX0NOVFIgbXV0ZSBzdGF0dXNcdFx0JWx1XG4iLCAgICAgQklUKGR3b3Jk LCA4KSk7Cj4gIAlwcmludGYoIkFVRF9QSU5XX0NOVFIgb3V0IGVuYWJsZVx0XHQlbHVcbiIsICAg ICAgQklUKGR3b3JkLCA2KSk7Cj4gIAlwcmludGYoIkFVRF9QSU5XX0NOVFIgYW1wIG11dGUgc3Rh dHVzXHRcdCVsdVxuIiwgQklUKGR3b3JkLCA4KSk7Cj4gQEAgLTY4OSwxMCArNjg5LDEwIEBAIHN0 YXRpYyB2b2lkIGR1bXBfZWFnbGVsYWtlKHZvaWQpCj4gIAkJCUJJVFMoZHdvcmQsIDIsIDApLAo+ ICAJCQlPUE5BTUUoc3RyZWFtX3R5cGUsIEJJVFMoZHdvcmQsIDIsIDApKSk7Cj4gIAo+IC0JZHdv cmQgPSBJTlJFRyhBVURfUElOV19VTlNPTFJFU1ApOwo+ICsJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xv YmFsX21taW8sIEFVRF9QSU5XX1VOU09MUkVTUCk7Cj4gIAlwcmludGYoIkFVRF9QSU5XX1VOU09M UkVTUCBlbmFibGUgdW5zb2wgcmVzcFx0JWx1XG4iLCBCSVQoZHdvcmQsIDMxKSk7Cj4gIAo+IC0J ZHdvcmQgPSBJTlJFRyhBVURfQ05UTF9TVCk7Cj4gKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxf bW1pbywgQVVEX0NOVExfU1QpOwo+ICAJcHJpbnRmKCJBVURfQ05UTF9TVCBESVAgYXVkaW8gZW5h YmxlZFx0XHQlbHVcbiIsIEJJVChkd29yZCwgMjEpKTsKPiAgCXByaW50ZigiQVVEX0NOVExfU1Qg RElQIEFDUCBlbmFibGVkXHRcdCVsdVxuIiwgICBCSVQoZHdvcmQsIDIyKSk7Cj4gIAlwcmludGYo IkFVRF9DTlRMX1NUIERJUCBJU1JDeCBlbmFibGVkXHRcdCVsdVxuIiwgQklUKGR3b3JkLCAyMykp Owo+IEBAIC03MDksMzggKzcwOSwzOSBAQCBzdGF0aWMgdm9pZCBkdW1wX2VhZ2xlbGFrZSh2b2lk KQo+ICAJcHJpbnRmKCJBVURfQ05UTF9TVCBFTEQgYnVmc2l6ZVx0XHRcdCVsdVxuIiwgQklUUyhk d29yZCwgMTMsIDkpKTsKPiAgCXByaW50ZigiQVVEX0NOVExfU1QgRUxEIGFkZHJlc3NcdFx0XHQl bHVcbiIsIEJJVFMoZHdvcmQsIDgsIDUpKTsKPiAgCj4gLQlkd29yZCA9IElOUkVHKEFVRF9IRE1J V19TVEFUVVMpOwo+ICsJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9IRE1JV19T VEFUVVMpOwo+ICAJcHJpbnRmKCJBVURfSERNSVdfU1RBVFVTIENEQ0xLL0RPVENMSyB1bmRlcnJ1 blx0JWx1XG4iLCBCSVQoZHdvcmQsIDMxKSk7Cj4gIAlwcmludGYoIkFVRF9IRE1JV19TVEFUVVMg Q0RDTEsvRE9UQ0xLIG92ZXJydW5cdCVsdVxuIiwgIEJJVChkd29yZCwgMzApKTsKPiAgCXByaW50 ZigiQVVEX0hETUlXX1NUQVRVUyBCQ0xLL0NEQ0xLIHVuZGVycnVuXHQlbHVcbiIsICAgQklUKGR3 b3JkLCAyOSkpOwo+ICAJcHJpbnRmKCJBVURfSERNSVdfU1RBVFVTIEJDTEsvQ0RDTEsgb3ZlcnJ1 blx0JWx1XG4iLCAgICBCSVQoZHdvcmQsIDI4KSk7Cj4gIAo+IC0JZHdvcmQgPSBJTlJFRyhBVURf Q09OVl9DSENOVCk7Cj4gKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX0NPTlZf Q0hDTlQpOwo+ICAJcHJpbnRmKCJBVURfQ09OVl9DSENOVCBIRE1JIEhCUiBlbmFibGVkXHRcdCVs dVxuIiwgQklUUyhkd29yZCwgMTUsIDE0KSk7Cj4gIAlwcmludGYoIkFVRF9DT05WX0NIQ05UIEhE TUkgY2hhbm5lbCBjb3VudFx0JWx1XG4iLCBCSVRTKGR3b3JkLCAxMSwgOCkgKyAxKTsKPiAgCj4g IAlwcmludGYoIkFVRF9DT05WX0NIQ05UIEhETUkgY2hhbm5lbCBtYXBwaW5nOlxuIik7Cj4gIAlm b3IgKGkgPSAwOyBpIDwgODsgaSsrKSB7Cj4gLQkJT1VUUkVHKEFVRF9DT05WX0NIQ05ULCBpKTsK PiAtCQlkd29yZCA9IElOUkVHKEFVRF9DT05WX0NIQ05UKTsKPiArCQlPVVRSRUcoaWd0X2dsb2Jh bF9tbWlvLCBBVURfQ09OVl9DSENOVCwgaSk7Cj4gKwkJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFs X21taW8sIEFVRF9DT05WX0NIQ05UKTsKPiAgCQlwcmludGYoIlx0XHRcdFx0XHRbMHgleF0gJXUg PT4gJWx1XG4iLCBkd29yZCwgaSwgQklUUyhkd29yZCwgNywgNCkpOwo+ICAJfQo+ICAKPiAgCXBy aW50ZigiQVVEX0hETUlXX0hETUlFRElEIEhETUkgRUxEOlxuXHQiKTsKPiAtCWR3b3JkID0gSU5S RUcoQVVEX0NOVExfU1QpOwo+ICsJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9D TlRMX1NUKTsKPiAgCWR3b3JkICY9IH5CSVRNQVNLKDgsIDUpOwo+IC0JT1VUUkVHKEFVRF9DTlRM X1NULCBkd29yZCk7Cj4gKwlPVVRSRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfQ05UTF9TVCwgZHdv cmQpOwo+ICAJZm9yIChpID0gMDsgaSA8IEJJVFMoZHdvcmQsIDE0LCAxMCkgLyA0OyBpKyspCj4g LQkJcHJpbnRmKCIlMDh4ICIsIGh0b25sKElOUkVHKEFVRF9IRE1JV19IRE1JRURJRCkpKTsKPiAr CQlwcmludGYoIiUwOHggIiwgaHRvbmwoSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfSERNSVdf SERNSUVESUQpKSk7Cj4gIAlwcmludGYoIlxuIik7Cj4gIAo+ICAJcHJpbnRmKCJBVURfSERNSVdf SU5GT0ZSIEhETUkgYXVkaW8gSW5mb2ZyYW1lOlxuXHQiKTsKPiAtCWR3b3JkID0gSU5SRUcoQVVE X0NOVExfU1QpOwo+ICsJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9DTlRMX1NU KTsKPiAgCWR3b3JkICY9IH5CSVRNQVNLKDIwLCAxOCk7Cj4gIAlkd29yZCAmPSB+QklUTUFTSygz LCAwKTsKPiAtCU9VVFJFRyhBVURfQ05UTF9TVCwgZHdvcmQpOwo+ICsJT1VUUkVHKGlndF9nbG9i YWxfbW1pbywgQVVEX0NOVExfU1QsIGR3b3JkKTsKPiAgCWZvciAoaSA9IDA7IGkgPCA4OyBpKysp Cj4gLQkJcHJpbnRmKCIlMDh4ICIsIGh0b25sKElOUkVHKEFVRF9IRE1JV19JTkZPRlIpKSk7Cj4g KwkJcHJpbnRmKCIlMDh4ICIsIGh0b25sKElOUkVHKGlndF9nbG9iYWxfbW1pbywKPiArCQkJCQkg ICAgQVVEX0hETUlXX0lORk9GUikpKTsKPiAgCXByaW50ZigiXG4iKTsKPiAgfQo+ICAKPiBAQCAt ODYzLDcgKzg2NCw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfY3B0KHZvaWQpCj4gIAo+ICAJcHJpbnRm KCJcbkRldGFpbHM6XG5cbiIpOwo+ICAKPiAtCWR3b3JkID0gSU5SRUcoVklERU9fRElQX0NUTF9B KTsKPiArCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBWSURFT19ESVBfQ1RMX0EpOwo+ ICAJcHJpbnRmKCJWSURFT19ESVBfQ1RMX0EgRW5hYmxlX0dyYXBoaWNzX0RJUFx0XHRcdCVsZFxu IiwgICAgIEJJVChkd29yZCwgMzEpKSwKPiAgCXByaW50ZigiVklERU9fRElQX0NUTF9BIEdDUF9E SVBfZW5hYmxlXHRcdFx0XHQlbGRcbiIsICAgICBCSVQoZHdvcmQsIDI1KSksCj4gIAlwcmludGYo IlZJREVPX0RJUF9DVExfQSBWaWRlb19ESVBfdHlwZV9lbmFibGUgQVZJXHRcdCVsdVxuIiwgICAg ICAgQklUKGR3b3JkLCAyMSkpOwo+IEBAIC04NzcsNyArODc4LDcgQEAgc3RhdGljIHZvaWQgZHVt cF9jcHQodm9pZCkKPiAgCXByaW50ZigiVklERU9fRElQX0NUTF9BIFZpZGVvX0RJUF9idWZmZXJf c2l6ZVx0XHRcdCVsdVxuIiwgQklUUyhkd29yZCwgMTEsIDgpKTsKPiAgCXByaW50ZigiVklERU9f RElQX0NUTF9BIFZpZGVvX0RJUF9hY2Nlc3NfYWRkcmVzc1x0XHQlbHVcbiIsIEJJVFMoZHdvcmQs IDMsIDApKTsKPiAgCj4gLQlkd29yZCA9IElOUkVHKFZJREVPX0RJUF9DVExfQik7Cj4gKwlkd29y ZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgVklERU9fRElQX0NUTF9CKTsKPiAgCXByaW50Zigi VklERU9fRElQX0NUTF9CIEVuYWJsZV9HcmFwaGljc19ESVBcdFx0XHQlbGRcbiIsICAgICBCSVQo ZHdvcmQsIDMxKSksCj4gIAlwcmludGYoIlZJREVPX0RJUF9DVExfQiBHQ1BfRElQX2VuYWJsZVx0 XHRcdFx0JWxkXG4iLCAgICAgQklUKGR3b3JkLCAyNSkpLAo+ICAJcHJpbnRmKCJWSURFT19ESVBf Q1RMX0IgVmlkZW9fRElQX3R5cGVfZW5hYmxlIEFWSVx0XHQlbHVcbiIsICAgICAgIEJJVChkd29y ZCwgMjEpKTsKPiBAQCAtODkxLDcgKzg5Miw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfY3B0KHZvaWQp Cj4gIAlwcmludGYoIlZJREVPX0RJUF9DVExfQiBWaWRlb19ESVBfYnVmZmVyX3NpemVcdFx0XHQl bHVcbiIsIEJJVFMoZHdvcmQsIDExLCA4KSk7Cj4gIAlwcmludGYoIlZJREVPX0RJUF9DVExfQiBW aWRlb19ESVBfYWNjZXNzX2FkZHJlc3NcdFx0JWx1XG4iLCBCSVRTKGR3b3JkLCAzLCAwKSk7Cj4g IAo+IC0JZHdvcmQgPSBJTlJFRyhWSURFT19ESVBfQ1RMX0MpOwo+ICsJZHdvcmQgPSBJTlJFRyhp Z3RfZ2xvYmFsX21taW8sIFZJREVPX0RJUF9DVExfQyk7Cj4gIAlwcmludGYoIlZJREVPX0RJUF9D VExfQyBFbmFibGVfR3JhcGhpY3NfRElQXHRcdFx0JWxkXG4iLCAgICAgQklUKGR3b3JkLCAzMSkp LAo+ICAJcHJpbnRmKCJWSURFT19ESVBfQ1RMX0MgR0NQX0RJUF9lbmFibGVcdFx0XHRcdCVsZFxu IiwgICAgIEJJVChkd29yZCwgMjUpKSwKPiAgCXByaW50ZigiVklERU9fRElQX0NUTF9DIFZpZGVv X0RJUF90eXBlX2VuYWJsZSBBVklcdFx0JWx1XG4iLCAgICAgICBCSVQoZHdvcmQsIDIxKSk7Cj4g QEAgLTkwNSwxNyArOTA2LDE3IEBAIHN0YXRpYyB2b2lkIGR1bXBfY3B0KHZvaWQpCj4gIAlwcmlu dGYoIlZJREVPX0RJUF9DVExfQyBWaWRlb19ESVBfYnVmZmVyX3NpemVcdFx0XHQlbHVcbiIsIEJJ VFMoZHdvcmQsIDExLCA4KSk7Cj4gIAlwcmludGYoIlZJREVPX0RJUF9DVExfQyBWaWRlb19ESVBf YWNjZXNzX2FkZHJlc3NcdFx0JWx1XG4iLCBCSVRTKGR3b3JkLCAzLCAwKSk7Cj4gIAo+IC0JZHdv cmQgPSBJTlJFRyhBVURfVklEX0RJRCk7Cj4gKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1p bywgQVVEX1ZJRF9ESUQpOwo+ICAJcHJpbnRmKCJBVURfVklEX0RJRCB2ZW5kb3IgaWRcdFx0XHRc dFx0MHgleFxuIiwgZHdvcmQgPj4gMTYpOwo+ICAJcHJpbnRmKCJBVURfVklEX0RJRCBkZXZpY2Ug aWRcdFx0XHRcdFx0MHgleFxuIiwgZHdvcmQgJiAweGZmZmYpOwo+ICAKPiAtCWR3b3JkID0gSU5S RUcoQVVEX1JJRCk7Cj4gKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX1JJRCk7 Cj4gIAlwcmludGYoIkFVRF9SSUQgTWFqb3JfUmV2aXNpb25cdFx0XHRcdFx0MHglbHhcbiIsIEJJ VFMoZHdvcmQsIDIzLCAyMCkpOwo+ICAJcHJpbnRmKCJBVURfUklEIE1pbm9yX1JldmlzaW9uXHRc dFx0XHRcdDB4JWx4XG4iLCBCSVRTKGR3b3JkLCAxOSwgMTYpKTsKPiAgCXByaW50ZigiQVVEX1JJ RCBSZXZpc2lvbl9JZFx0XHRcdFx0XHQweCVseFxuIiwgICAgQklUUyhkd29yZCwgMTUsIDgpKTsK PiAgCXByaW50ZigiQVVEX1JJRCBTdGVwcGluZ19JZFx0XHRcdFx0XHQweCVseFxuIiwgICAgQklU Uyhkd29yZCwgNywgMCkpOwo+ICAKPiAtCWR3b3JkID0gSU5SRUcoSERNSUIpOwo+ICsJZHdvcmQg PSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEhETUlCKTsKPiAgCXByaW50ZigiSERNSUIgUG9ydF9F bmFibGVcdFx0XHRcdFx0JXVcbiIsICAgICAgISEoZHdvcmQgJiBTRFZPX0VOQUJMRSkpOwo+ICAJ cHJpbnRmKCJIRE1JQiBUcmFuc2NvZGVyX1NlbGVjdFx0XHRcdFx0XHRbMHglbHhdICVzXG4iLAo+ ICAJCQlCSVRTKGR3b3JkLCAzMCwgMjkpLCB0cmFuc2NvZGVyX3NlbGVjdFtCSVRTKGR3b3JkLCAz MCwgMjkpXSk7Cj4gQEAgLTkyOCw3ICs5MjksNyBAQCBzdGF0aWMgdm9pZCBkdW1wX2NwdCh2b2lk KQo+ICAJcHJpbnRmKCJIRE1JQiBIRE1JX29yX0RWSV9TZWxlY3RcdFx0XHRcdCVzXG4iLCBCSVQo ZHdvcmQsIDkpID8gIkhETUkiIDogIkRWSSIpOwo+ICAJcHJpbnRmKCJIRE1JQiBBdWRpb19PdXRw dXRfRW5hYmxlXHRcdFx0XHQldVxuIiwgISEoZHdvcmQgJiBTRFZPX0FVRElPX0VOQUJMRSkpOwo+ ICAKPiAtCWR3b3JkID0gSU5SRUcoSERNSUMpOwo+ICsJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFs X21taW8sIEhETUlDKTsKPiAgCXByaW50ZigiSERNSUMgUG9ydF9FbmFibGVcdFx0XHRcdFx0JXVc biIsICAgICAgISEoZHdvcmQgJiBTRFZPX0VOQUJMRSkpOwo+ICAJcHJpbnRmKCJIRE1JQyBUcmFu c2NvZGVyX1NlbGVjdFx0XHRcdFx0XHRbMHglbHhdICVzXG4iLAo+ICAJCQlCSVRTKGR3b3JkLCAz MCwgMjkpLCB0cmFuc2NvZGVyX3NlbGVjdFtCSVRTKGR3b3JkLCAzMCwgMjkpXSk7Cj4gQEAgLTk0 MSw3ICs5NDIsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX2NwdCh2b2lkKQo+ICAJcHJpbnRmKCJIRE1J QyBIRE1JX29yX0RWSV9TZWxlY3RcdFx0XHRcdCVzXG4iLCBCSVQoZHdvcmQsIDkpID8gIkhETUki IDogIkRWSSIpOwo+ICAJcHJpbnRmKCJIRE1JQyBBdWRpb19PdXRwdXRfRW5hYmxlXHRcdFx0XHQl dVxuIiwgISEoZHdvcmQgJiBTRFZPX0FVRElPX0VOQUJMRSkpOwo+ICAKPiAtCWR3b3JkID0gSU5S RUcoSERNSUQpOwo+ICsJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEhETUlEKTsKPiAg CXByaW50ZigiSERNSUQgUG9ydF9FbmFibGVcdFx0XHRcdFx0JXVcbiIsICAgICAgISEoZHdvcmQg JiBTRFZPX0VOQUJMRSkpOwo+ICAJcHJpbnRmKCJIRE1JRCBUcmFuc2NvZGVyX1NlbGVjdFx0XHRc dFx0XHRbMHglbHhdICVzXG4iLAo+ICAJCQlCSVRTKGR3b3JkLCAzMCwgMjkpLCB0cmFuc2NvZGVy X3NlbGVjdFtCSVRTKGR3b3JkLCAzMCwgMjkpXSk7Cj4gQEAgLTk1NCw3ICs5NTUsNyBAQCBzdGF0 aWMgdm9pZCBkdW1wX2NwdCh2b2lkKQo+ICAJcHJpbnRmKCJIRE1JRCBIRE1JX29yX0RWSV9TZWxl Y3RcdFx0XHRcdCVzXG4iLCBCSVQoZHdvcmQsIDkpID8gIkhETUkiIDogIkRWSSIpOwo+ICAJcHJp bnRmKCJIRE1JRCBBdWRpb19PdXRwdXRfRW5hYmxlXHRcdFx0XHQldVxuIiwgISEoZHdvcmQgJiBT RFZPX0FVRElPX0VOQUJMRSkpOwo+ICAKPiAtCWR3b3JkID0gSU5SRUcoRFBfQ1RMX0IpOwo+ICsJ ZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIERQX0NUTF9CKTsKPiAgCXByaW50ZigiRFBf Q1RMX0IgRGlzcGxheVBvcnRfRW5hYmxlXHRcdFx0XHQlbHVcbiIsIEJJVChkd29yZCwgMzEpKTsK PiAgCXByaW50ZigiRFBfQ1RMX0IgUG9ydF9XaWR0aF9TZWxlY3Rpb25cdFx0XHRcdFsweCVseF0g JXNcbiIsCj4gIAkJCUJJVFMoZHdvcmQsIDIxLCAxOSksIGRwX3BvcnRfd2lkdGhbQklUUyhkd29y ZCwgMjEsIDE5KV0pOwo+IEBAIC05NjIsNyArOTYzLDcgQEAgc3RhdGljIHZvaWQgZHVtcF9jcHQo dm9pZCkKPiAgCXByaW50ZigiRFBfQ1RMX0IgSERDUF9Qb3J0X1NlbGVjdFx0XHRcdFx0JWx1XG4i LCBCSVQoZHdvcmQsIDUpKTsKPiAgCXByaW50ZigiRFBfQ1RMX0IgQXVkaW9fT3V0cHV0X0VuYWJs ZVx0XHRcdFx0JWx1XG4iLCBCSVQoZHdvcmQsIDYpKTsKPiAgCj4gLQlkd29yZCA9IElOUkVHKERQ X0NUTF9DKTsKPiArCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBEUF9DVExfQyk7Cj4g IAlwcmludGYoIkRQX0NUTF9DIERpc3BsYXlQb3J0X0VuYWJsZVx0XHRcdFx0JWx1XG4iLCBCSVQo ZHdvcmQsIDMxKSk7Cj4gIAlwcmludGYoIkRQX0NUTF9DIFBvcnRfV2lkdGhfU2VsZWN0aW9uXHRc dFx0XHRbMHglbHhdICVzXG4iLAo+ICAJCQlCSVRTKGR3b3JkLCAyMSwgMTkpLCBkcF9wb3J0X3dp ZHRoW0JJVFMoZHdvcmQsIDIxLCAxOSldKTsKPiBAQCAtOTcwLDcgKzk3MSw3IEBAIHN0YXRpYyB2 b2lkIGR1bXBfY3B0KHZvaWQpCj4gIAlwcmludGYoIkRQX0NUTF9DIEhEQ1BfUG9ydF9TZWxlY3Rc dFx0XHRcdCVsdVxuIiwgQklUKGR3b3JkLCA1KSk7Cj4gIAlwcmludGYoIkRQX0NUTF9DIEF1ZGlv X091dHB1dF9FbmFibGVcdFx0XHRcdCVsdVxuIiwgQklUKGR3b3JkLCA2KSk7Cj4gIAo+IC0JZHdv cmQgPSBJTlJFRyhEUF9DVExfRCk7Cj4gKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywg RFBfQ1RMX0QpOwo+ICAJcHJpbnRmKCJEUF9DVExfRCBEaXNwbGF5UG9ydF9FbmFibGVcdFx0XHRc dCVsdVxuIiwgQklUKGR3b3JkLCAzMSkpOwo+ICAJcHJpbnRmKCJEUF9DVExfRCBQb3J0X1dpZHRo X1NlbGVjdGlvblx0XHRcdFx0WzB4JWx4XSAlc1xuIiwKPiAgCQkJQklUUyhkd29yZCwgMjEsIDE5 KSwgZHBfcG9ydF93aWR0aFtCSVRTKGR3b3JkLCAyMSwgMTkpXSk7Cj4gQEAgLTk3OCw3ICs5Nzks NyBAQCBzdGF0aWMgdm9pZCBkdW1wX2NwdCh2b2lkKQo+ICAJcHJpbnRmKCJEUF9DVExfRCBIRENQ X1BvcnRfU2VsZWN0XHRcdFx0XHQlbHVcbiIsIEJJVChkd29yZCwgNSkpOwo+ICAJcHJpbnRmKCJE UF9DVExfRCBBdWRpb19PdXRwdXRfRW5hYmxlXHRcdFx0XHQlbHVcbiIsIEJJVChkd29yZCwgNikp Owo+ICAKPiAtCWR3b3JkID0gSU5SRUcoQVVEX0NPTkZJR19BKTsKPiArCWR3b3JkID0gSU5SRUco aWd0X2dsb2JhbF9tbWlvLCBBVURfQ09ORklHX0EpOwo+ICAJcHJpbnRmKCJBVURfQ09ORklHX0Eg IE5faW5kZXhfdmFsdWVcdFx0XHRcdFsweCVseF0gJXNcbiIsIEJJVChkd29yZCwgMjkpLAo+ICAJ CQluX2luZGV4X3ZhbHVlW0JJVChkd29yZCwgMjkpXSk7Cj4gIAlwcmludGYoIkFVRF9DT05GSUdf QSAgTl9wcm9ncmFtbWluZ19lbmFibGVcdFx0XHQlbHVcbiIsIEJJVChkd29yZCwgMjgpKTsKPiBA QCAtOTg3LDcgKzk4OCw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfY3B0KHZvaWQpCj4gIAlwcmludGYo IkFVRF9DT05GSUdfQSAgUGl4ZWxfQ2xvY2tfSERNSVx0XHRcdFx0WzB4JWx4XSAlc1xuIiwgQklU Uyhkd29yZCwgMTksIDE2KSwKPiAgCQkJT1BOQU1FKHBpeGVsX2Nsb2NrLCBCSVRTKGR3b3JkLCAx OSwgMTYpKSk7Cj4gIAlwcmludGYoIkFVRF9DT05GSUdfQSAgRGlzYWJsZV9OQ1RTXHRcdFx0XHQl bHVcbiIsIEJJVChkd29yZCwgMykpOwo+IC0JZHdvcmQgPSBJTlJFRyhBVURfQ09ORklHX0IpOwo+ ICsJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9DT05GSUdfQik7Cj4gIAlwcmlu dGYoIkFVRF9DT05GSUdfQiAgTl9pbmRleF92YWx1ZVx0XHRcdFx0WzB4JWx4XSAlc1xuIiwgQklU KGR3b3JkLCAyOSksCj4gIAkJCW5faW5kZXhfdmFsdWVbQklUKGR3b3JkLCAyOSldKTsKPiAgCXBy aW50ZigiQVVEX0NPTkZJR19CICBOX3Byb2dyYW1taW5nX2VuYWJsZVx0XHRcdCVsdVxuIiwgQklU KGR3b3JkLCAyOCkpOwo+IEBAIC05OTYsNyArOTk3LDcgQEAgc3RhdGljIHZvaWQgZHVtcF9jcHQo dm9pZCkKPiAgCXByaW50ZigiQVVEX0NPTkZJR19CICBQaXhlbF9DbG9ja19IRE1JXHRcdFx0XHRb MHglbHhdICVzXG4iLCBCSVRTKGR3b3JkLCAxOSwgMTYpLAo+ICAJCQlPUE5BTUUocGl4ZWxfY2xv Y2ssIEJJVFMoZHdvcmQsIDE5LCAxNikpKTsKPiAgCXByaW50ZigiQVVEX0NPTkZJR19CICBEaXNh YmxlX05DVFNcdFx0XHRcdCVsdVxuIiwgQklUKGR3b3JkLCAzKSk7Cj4gLQlkd29yZCA9IElOUkVH KEFVRF9DT05GSUdfQyk7Cj4gKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX0NP TkZJR19DKTsKPiAgCXByaW50ZigiQVVEX0NPTkZJR19DICBOX2luZGV4X3ZhbHVlXHRcdFx0XHRb MHglbHhdICVzXG4iLCBCSVQoZHdvcmQsIDI5KSwKPiAgCQkJbl9pbmRleF92YWx1ZVtCSVQoZHdv cmQsIDI5KV0pOwo+ICAJcHJpbnRmKCJBVURfQ09ORklHX0MgIE5fcHJvZ3JhbW1pbmdfZW5hYmxl XHRcdFx0JWx1XG4iLCBCSVQoZHdvcmQsIDI4KSk7Cj4gQEAgLTEwMDYsMzYgKzEwMDcsMzYgQEAg c3RhdGljIHZvaWQgZHVtcF9jcHQodm9pZCkKPiAgCQkJT1BOQU1FKHBpeGVsX2Nsb2NrLCBCSVRT KGR3b3JkLCAxOSwgMTYpKSk7Cj4gIAlwcmludGYoIkFVRF9DT05GSUdfQyAgRGlzYWJsZV9OQ1RT XHRcdFx0XHQlbHVcbiIsIEJJVChkd29yZCwgMykpOwo+ICAKPiAtCWR3b3JkID0gSU5SRUcoQVVE X0NUU19FTkFCTEVfQSk7Cj4gKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX0NU U19FTkFCTEVfQSk7Cj4gIAlwcmludGYoIkFVRF9DVFNfRU5BQkxFX0EgIEVuYWJsZV9DVFNfb3Jf TV9wcm9ncmFtbWluZ1x0XHQlbHVcbiIsIEJJVChkd29yZCwgMjApKTsKPiAgCXByaW50ZigiQVVE X0NUU19FTkFCTEVfQSAgQ1RTX00gdmFsdWUgSW5kZXhcdFx0XHQlc1xuIiwgQklUKGR3b3JkLCAy MSkgPyAiQ1RTIiA6ICJNIik7Cj4gIAlwcmludGYoIkFVRF9DVFNfRU5BQkxFX0EgIENUU19wcm9n cmFtbWluZ1x0XHRcdCUjbHhcbiIsIEJJVFMoZHdvcmQsIDE5LCAwKSk7Cj4gLQlkd29yZCA9IElO UkVHKEFVRF9DVFNfRU5BQkxFX0IpOwo+ICsJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8s IEFVRF9DVFNfRU5BQkxFX0IpOwo+ICAJcHJpbnRmKCJBVURfQ1RTX0VOQUJMRV9CICBFbmFibGVf Q1RTX29yX01fcHJvZ3JhbW1pbmdcdFx0JWx1XG4iLCBCSVQoZHdvcmQsIDIwKSk7Cj4gIAlwcmlu dGYoIkFVRF9DVFNfRU5BQkxFX0IgIENUU19NIHZhbHVlIEluZGV4XHRcdFx0JXNcbiIsIEJJVChk d29yZCwgMjEpID8gIkNUUyIgOiAiTSIpOwo+ICAJcHJpbnRmKCJBVURfQ1RTX0VOQUJMRV9CICBD VFNfcHJvZ3JhbW1pbmdcdFx0XHQlI2x4XG4iLCBCSVRTKGR3b3JkLCAxOSwgMCkpOwo+IC0JZHdv cmQgPSBJTlJFRyhBVURfQ1RTX0VOQUJMRV9DKTsKPiArCWR3b3JkID0gSU5SRUcoaWd0X2dsb2Jh bF9tbWlvLCBBVURfQ1RTX0VOQUJMRV9DKTsKPiAgCXByaW50ZigiQVVEX0NUU19FTkFCTEVfQyAg RW5hYmxlX0NUU19vcl9NX3Byb2dyYW1taW5nXHRcdCVsdVxuIiwgQklUKGR3b3JkLCAyMCkpOwo+ ICAJcHJpbnRmKCJBVURfQ1RTX0VOQUJMRV9DICBDVFNfTSB2YWx1ZSBJbmRleFx0XHRcdCVzXG4i LCBCSVQoZHdvcmQsIDIxKSA/ICJDVFMiIDogIk0iKTsKPiAgCXByaW50ZigiQVVEX0NUU19FTkFC TEVfQyAgQ1RTX3Byb2dyYW1taW5nXHRcdFx0JSNseFxuIiwgQklUUyhkd29yZCwgMTksIDApKTsK PiAgCj4gLQlkd29yZCA9IElOUkVHKEFVRF9NSVNDX0NUUkxfQSk7Cj4gKwlkd29yZCA9IElOUkVH KGlndF9nbG9iYWxfbW1pbywgQVVEX01JU0NfQ1RSTF9BKTsKPiAgCXByaW50ZigiQVVEX01JU0Nf Q1RSTF9BICBTYW1wbGVfRmFicmljYXRpb25fRU5fYml0XHRcdCVsdVxuIiwJQklUKGR3b3JkLCAy KSk7Cj4gIAlwcmludGYoIkFVRF9NSVNDX0NUUkxfQSAgU2FtcGxlX3ByZXNlbnRfRGlzYWJsZVx0 XHRcdCVsdVxuIiwJQklUKGR3b3JkLCA4KSk7Cj4gIAlwcmludGYoIkFVRF9NSVNDX0NUUkxfQSAg T3V0cHV0X0RlbGF5XHRcdFx0XHQlbHVcbiIsCQlCSVRTKGR3b3JkLCA3LCA0KSk7Cj4gIAlwcmlu dGYoIkFVRF9NSVNDX0NUUkxfQSAgUHJvX0FsbG93ZWRcdFx0XHRcdCVsdVxuIiwJCQlCSVQoZHdv cmQsIDEpKTsKPiAtCWR3b3JkID0gSU5SRUcoQVVEX01JU0NfQ1RSTF9CKTsKPiArCWR3b3JkID0g SU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfTUlTQ19DVFJMX0IpOwo+ICAJcHJpbnRmKCJBVURf TUlTQ19DVFJMX0IgIFNhbXBsZV9GYWJyaWNhdGlvbl9FTl9iaXRcdFx0JWx1XG4iLAlCSVQoZHdv cmQsIDIpKTsKPiAgCXByaW50ZigiQVVEX01JU0NfQ1RSTF9CICBTYW1wbGVfcHJlc2VudF9EaXNh YmxlXHRcdFx0JWx1XG4iLAlCSVQoZHdvcmQsIDgpKTsKPiAgCXByaW50ZigiQVVEX01JU0NfQ1RS TF9CICBPdXRwdXRfRGVsYXlcdFx0XHRcdCVsdVxuIiwJCUJJVFMoZHdvcmQsIDcsIDQpKTsKPiAg CXByaW50ZigiQVVEX01JU0NfQ1RSTF9CICBQcm9fQWxsb3dlZFx0XHRcdFx0JWx1XG4iLAkJCUJJ VChkd29yZCwgMSkpOwo+IC0JZHdvcmQgPSBJTlJFRyhBVURfTUlTQ19DVFJMX0MpOwo+ICsJZHdv cmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9NSVNDX0NUUkxfQyk7Cj4gIAlwcmludGYo IkFVRF9NSVNDX0NUUkxfQyAgU2FtcGxlX0ZhYnJpY2F0aW9uX0VOX2JpdFx0XHQlbHVcbiIsCUJJ VChkd29yZCwgMikpOwo+ICAJcHJpbnRmKCJBVURfTUlTQ19DVFJMX0MgIFNhbXBsZV9wcmVzZW50 X0Rpc2FibGVcdFx0XHQlbHVcbiIsCUJJVChkd29yZCwgOCkpOwo+ICAJcHJpbnRmKCJBVURfTUlT Q19DVFJMX0MgIE91dHB1dF9EZWxheVx0XHRcdFx0JWx1XG4iLAkJQklUUyhkd29yZCwgNywgNCkp Owo+ICAJcHJpbnRmKCJBVURfTUlTQ19DVFJMX0MgIFByb19BbGxvd2VkXHRcdFx0XHQlbHVcbiIs CQkJQklUKGR3b3JkLCAxKSk7Cj4gIAo+IC0JZHdvcmQgPSBJTlJFRyhBVURfUFdSU1QpOwo+ICsJ ZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9QV1JTVCk7Cj4gIAlwcmludGYoIkFV RF9QV1JTVCAgRnVuY19HcnBfRGV2X1B3clN0X0N1cnIgICAgICAgICAgICAgICAgICBcdCVzXG4i LCBwb3dlcl9zdGF0ZVtCSVRTKGR3b3JkLCAyNywgMjYpXSk7Cj4gIAlwcmludGYoIkFVRF9QV1JT VCAgRnVuY19HcnBfRGV2X1B3clN0X1NldCAgICAgICAgICAgICAgICAgICBcdCVzXG4iLCBwb3dl cl9zdGF0ZVtCSVRTKGR3b3JkLCAyNSwgMjQpXSk7Cj4gIAlwcmludGYoIkFVRF9QV1JTVCAgQ29u dmVydG9yQV9XaWRnZXRfUG93ZXJfU3RhdGVfQ3VycmVudCAgICBcdCVzXG4iLCBwb3dlcl9zdGF0 ZVtCSVRTKGR3b3JkLCAxNSwgMTQpXSk7Cj4gQEAgLTEwNTEsNyArMTA1Miw3IEBAIHN0YXRpYyB2 b2lkIGR1bXBfY3B0KHZvaWQpCj4gIAlwcmludGYoIkFVRF9QV1JTVCAgUGluRF9XaWRnZXRfUG93 ZXJfU3RhdGVfQ3VycmVudCAgICAgICAgICBcdCVzXG4iLCBwb3dlcl9zdGF0ZVtCSVRTKGR3b3Jk LCAxMSwgMTApXSk7Cj4gIAlwcmludGYoIkFVRF9QV1JTVCAgUGluRF9XaWRnZXRfUG93ZXJfU3Rh dGVfU2V0ICAgICAgICAgICAgICBcdCVzXG4iLCBwb3dlcl9zdGF0ZVtCSVRTKGR3b3JkLCAgOSwg IDgpXSk7Cj4gIAo+IC0JZHdvcmQgPSBJTlJFRyhBVURfUE9SVF9FTl9IRF9DRkcpOwo+ICsJZHdv cmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9QT1JUX0VOX0hEX0NGRyk7Cj4gIAlwcmlu dGYoIkFVRF9QT1JUX0VOX0hEX0NGRyAgQ29udmVydG9yX0FfRGlnZW5cdFx0XHQlbHVcbiIsCUJJ VChkd29yZCwgMCkpOwo+ICAJcHJpbnRmKCJBVURfUE9SVF9FTl9IRF9DRkcgIENvbnZlcnRvcl9C X0RpZ2VuXHRcdFx0JWx1XG4iLAlCSVQoZHdvcmQsIDEpKTsKPiAgCXByaW50ZigiQVVEX1BPUlRf RU5fSERfQ0ZHICBDb252ZXJ0b3JfQ19EaWdlblx0XHRcdCVsdVxuIiwJQklUKGR3b3JkLCAyKSk7 Cj4gQEAgLTEwNjUsNyArMTA2Niw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfY3B0KHZvaWQpCj4gIAlw cmludGYoIkFVRF9QT1JUX0VOX0hEX0NGRyAgUG9ydF9DX0FtcF9NdXRlX1N0YXR1c1x0XHQlbHVc biIsIEJJVChkd29yZCwgMjEpKTsKPiAgCXByaW50ZigiQVVEX1BPUlRfRU5fSERfQ0ZHICBQb3J0 X0RfQW1wX011dGVfU3RhdHVzXHRcdCVsdVxuIiwgQklUKGR3b3JkLCAyMikpOwo+ICAKPiAtCWR3 b3JkID0gSU5SRUcoQVVEX09VVF9ESUdfQ05WVF9BKTsKPiArCWR3b3JkID0gSU5SRUcoaWd0X2ds b2JhbF9tbWlvLCBBVURfT1VUX0RJR19DTlZUX0EpOwo+ICAJcHJpbnRmKCJBVURfT1VUX0RJR19D TlZUX0EgIFZcdFx0XHRcdFx0JWx1XG4iLAkJQklUKGR3b3JkLCAxKSk7Cj4gIAlwcmludGYoIkFV RF9PVVRfRElHX0NOVlRfQSAgVkNGR1x0XHRcdFx0JWx1XG4iLAkJQklUKGR3b3JkLCAyKSk7Cj4g IAlwcmludGYoIkFVRF9PVVRfRElHX0NOVlRfQSAgUFJFXHRcdFx0XHRcdCVsdVxuIiwJCUJJVChk d29yZCwgMykpOwo+IEBAIC0xMDc3LDcgKzEwNzgsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX2NwdCh2 b2lkKQo+ICAJcHJpbnRmKCJBVURfT1VUX0RJR19DTlZUX0EgIExvd2VzdF9DaGFubmVsX051bWJl clx0XHQlbHVcbiIsIEJJVFMoZHdvcmQsIDE5LCAxNikpOwo+ICAJcHJpbnRmKCJBVURfT1VUX0RJ R19DTlZUX0EgIFN0cmVhbV9JRFx0XHRcdFx0JWx1XG4iLAlCSVRTKGR3b3JkLCAyMywgMjApKTsK PiAgCj4gLQlkd29yZCA9IElOUkVHKEFVRF9PVVRfRElHX0NOVlRfQik7Cj4gKwlkd29yZCA9IElO UkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX09VVF9ESUdfQ05WVF9CKTsKPiAgCXByaW50ZigiQVVE X09VVF9ESUdfQ05WVF9CICBWXHRcdFx0XHRcdCVsdVxuIiwJCUJJVChkd29yZCwgMSkpOwo+ICAJ cHJpbnRmKCJBVURfT1VUX0RJR19DTlZUX0IgIFZDRkdcdFx0XHRcdCVsdVxuIiwJCUJJVChkd29y ZCwgMikpOwo+ICAJcHJpbnRmKCJBVURfT1VUX0RJR19DTlZUX0IgIFBSRVx0XHRcdFx0XHQlbHVc biIsCQlCSVQoZHdvcmQsIDMpKTsKPiBAQCAtMTA4OSw3ICsxMDkwLDcgQEAgc3RhdGljIHZvaWQg ZHVtcF9jcHQodm9pZCkKPiAgCXByaW50ZigiQVVEX09VVF9ESUdfQ05WVF9CICBMb3dlc3RfQ2hh bm5lbF9OdW1iZXJcdFx0JWx1XG4iLCBCSVRTKGR3b3JkLCAxOSwgMTYpKTsKPiAgCXByaW50Zigi QVVEX09VVF9ESUdfQ05WVF9CICBTdHJlYW1fSURcdFx0XHRcdCVsdVxuIiwJQklUUyhkd29yZCwg MjMsIDIwKSk7Cj4gIAo+IC0JZHdvcmQgPSBJTlJFRyhBVURfT1VUX0RJR19DTlZUX0MpOwo+ICsJ ZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9PVVRfRElHX0NOVlRfQyk7Cj4gIAlw cmludGYoIkFVRF9PVVRfRElHX0NOVlRfQyAgVlx0XHRcdFx0XHQlbHVcbiIsCQlCSVQoZHdvcmQs IDEpKTsKPiAgCXByaW50ZigiQVVEX09VVF9ESUdfQ05WVF9DICBWQ0ZHXHRcdFx0XHQlbHVcbiIs CQlCSVQoZHdvcmQsIDIpKTsKPiAgCXByaW50ZigiQVVEX09VVF9ESUdfQ05WVF9DICBQUkVcdFx0 XHRcdFx0JWx1XG4iLAkJQklUKGR3b3JkLCAzKSk7Cj4gQEAgLTExMDMsOCArMTEwNCw5IEBAIHN0 YXRpYyB2b2lkIGR1bXBfY3B0KHZvaWQpCj4gIAo+ICAJcHJpbnRmKCJBVURfT1VUX0NIX1NUUiAg Q29udmVydGVyX0NoYW5uZWxfTUFQCVBPUlRCCVBPUlRDCVBPUlREXG4iKTsKPiAgCWZvciAoaSA9 IDA7IGkgPCA4OyBpKyspIHsKPiAtCQlPVVRSRUcoQVVEX09VVF9DSF9TVFIsIGkgfCAoaSA8PCA4 KSB8IChpIDw8IDE2KSk7Cj4gLQkJZHdvcmQgPSBJTlJFRyhBVURfT1VUX0NIX1NUUik7Cj4gKwkJ T1VUUkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX09VVF9DSF9TVFIsIGkgfCAoaSA8PCA4KSB8Cj4g KwkJICAgICAgIChpIDw8IDE2KSk7Cj4gKwkJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8s IEFVRF9PVVRfQ0hfU1RSKTsKPiAgCQlwcmludGYoIlx0XHRcdFx0JWx1XHQlbHVcdCVsdVx0JWx1 XG4iLAo+ICAJCQkJMSArIEJJVFMoZHdvcmQsICAzLCAgMCksCj4gIAkJCQkxICsgQklUUyhkd29y ZCwgIDcsICA0KSwKPiBAQCAtMTExMiwzMyArMTExNCwzMyBAQCBzdGF0aWMgdm9pZCBkdW1wX2Nw dCh2b2lkKQo+ICAJCQkJMSArIEJJVFMoZHdvcmQsIDIzLCAyMCkpOwo+ICAJfQo+ICAKPiAtCWR3 b3JkID0gSU5SRUcoQVVEX09VVF9TVFJfREVTQ19BKTsKPiArCWR3b3JkID0gSU5SRUcoaWd0X2ds b2JhbF9tbWlvLCBBVURfT1VUX1NUUl9ERVNDX0EpOwo+ICAJcHJpbnRmKCJBVURfT1VUX1NUUl9E RVNDX0EgIEhCUl9lbmFibGVcdFx0XHRcdCVsdVxuIiwJIEJJVFMoZHdvcmQsIDI4LCAyNykpOwo+ ICAJcHJpbnRmKCJBVURfT1VUX1NUUl9ERVNDX0EgIENvbnZlcnRvcl9DaGFubmVsX0NvdW50XHRc dCVsdVxuIiwgQklUUyhkd29yZCwgMjAsIDE2KSArIDEpOwo+ICAJcHJpbnRmKCJBVURfT1VUX1NU Ul9ERVNDX0EgIEJpdHNfcGVyX1NhbXBsZVx0XHRcdFslI2x4XSAlc1xuIiwKPiAgCQkJQklUUyhk d29yZCwgNiwgNCksIE9QTkFNRShiaXRzX3Blcl9zYW1wbGUsIEJJVFMoZHdvcmQsIDYsIDQpKSk7 Cj4gIAlwcmludGYoIkFVRF9PVVRfU1RSX0RFU0NfQSAgTnVtYmVyX29mX0NoYW5uZWxzX2luX2Ff U3RyZWFtXHQlbHVcbiIsIDEgKyBCSVRTKGR3b3JkLCAzLCAwKSk7Cj4gIAo+IC0JZHdvcmQgPSBJ TlJFRyhBVURfT1VUX1NUUl9ERVNDX0IpOwo+ICsJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21t aW8sIEFVRF9PVVRfU1RSX0RFU0NfQik7Cj4gIAlwcmludGYoIkFVRF9PVVRfU1RSX0RFU0NfQiAg SEJSX2VuYWJsZVx0XHRcdFx0JWx1XG4iLAkgQklUUyhkd29yZCwgMjgsIDI3KSk7Cj4gIAlwcmlu dGYoIkFVRF9PVVRfU1RSX0RFU0NfQiAgQ29udmVydG9yX0NoYW5uZWxfQ291bnRcdFx0JWx1XG4i LCBCSVRTKGR3b3JkLCAyMCwgMTYpICsgMSk7Cj4gIAlwcmludGYoIkFVRF9PVVRfU1RSX0RFU0Nf QiAgQml0c19wZXJfU2FtcGxlXHRcdFx0WyUjbHhdICVzXG4iLAo+ICAJCQlCSVRTKGR3b3JkLCA2 LCA0KSwgT1BOQU1FKGJpdHNfcGVyX3NhbXBsZSwgQklUUyhkd29yZCwgNiwgNCkpKTsKPiAgCXBy aW50ZigiQVVEX09VVF9TVFJfREVTQ19CICBOdW1iZXJfb2ZfQ2hhbm5lbHNfaW5fYV9TdHJlYW1c dCVsdVxuIiwgMSArIEJJVFMoZHdvcmQsIDMsIDApKTsKPiAgCj4gLQlkd29yZCA9IElOUkVHKEFV RF9PVVRfU1RSX0RFU0NfQyk7Cj4gKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQVVE X09VVF9TVFJfREVTQ19DKTsKPiAgCXByaW50ZigiQVVEX09VVF9TVFJfREVTQ19DICBIQlJfZW5h YmxlXHRcdFx0XHQlbHVcbiIsCSBCSVRTKGR3b3JkLCAyOCwgMjcpKTsKPiAgCXByaW50ZigiQVVE X09VVF9TVFJfREVTQ19DICBDb252ZXJ0b3JfQ2hhbm5lbF9Db3VudFx0XHQlbHVcbiIsIEJJVFMo ZHdvcmQsIDIwLCAxNikgKyAxKTsKPiAgCXByaW50ZigiQVVEX09VVF9TVFJfREVTQ19DICBCaXRz X3Blcl9TYW1wbGVcdFx0XHRbJSNseF0gJXNcbiIsCj4gIAkJCUJJVFMoZHdvcmQsIDYsIDQpLCBP UE5BTUUoYml0c19wZXJfc2FtcGxlLCBCSVRTKGR3b3JkLCA2LCA0KSkpOwo+ICAJcHJpbnRmKCJB VURfT1VUX1NUUl9ERVNDX0MgIE51bWJlcl9vZl9DaGFubmVsc19pbl9hX1N0cmVhbVx0JWx1XG4i LCAxICsgQklUUyhkd29yZCwgMywgMCkpOwo+ICAKPiAtCWR3b3JkID0gSU5SRUcoQVVEX1BJTldf Q09OTkxOR19TRUwpOwo+ICsJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9QSU5X X0NPTk5MTkdfU0VMKTsKPiAgCXByaW50ZigiQVVEX1BJTldfQ09OTkxOR19TRUwgIENvbm5lY3Rp b25fc2VsZWN0X0NvbnRyb2xfQlx0JSNseFxuIiwgQklUUyhkd29yZCwgIDcsICAwKSk7Cj4gIAlw cmludGYoIkFVRF9QSU5XX0NPTk5MTkdfU0VMICBDb25uZWN0aW9uX3NlbGVjdF9Db250cm9sX0Nc dCUjbHhcbiIsIEJJVFMoZHdvcmQsIDE1LCAgOCkpOwo+ICAJcHJpbnRmKCJBVURfUElOV19DT05O TE5HX1NFTCAgQ29ubmVjdGlvbl9zZWxlY3RfQ29udHJvbF9EXHQlI2x4XG4iLCBCSVRTKGR3b3Jk LCAyMywgMTYpKTsKPiAgCj4gLQlkd29yZCA9IElOUkVHKEFVRF9DTlRMX1NUX0EpOwo+ICsJZHdv cmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9DTlRMX1NUX0EpOwo+ICAJcHJpbnRmKCJB VURfQ05UTF9TVF9BICBESVBfUG9ydF9TZWxlY3RcdFx0XHRcdFslI2x4XSAlc1xuIiwKPiAgCQkJ QklUUyhkd29yZCwgMzAsIDI5KSwgZGlwX3BvcnRbQklUUyhkd29yZCwgMzAsIDI5KV0pOwo+ICAJ cHJpbnRmKCJBVURfQ05UTF9TVF9BICBESVBfdHlwZV9lbmFibGVfc3RhdHVzIEF1ZGlvIERJUFx0 XHQlbHVcbiIsIEJJVChkd29yZCwgMjEpKTsKPiBAQCAtMTE0OSw3ICsxMTUxLDcgQEAgc3RhdGlj IHZvaWQgZHVtcF9jcHQodm9pZCkKPiAgCXByaW50ZigiQVVEX0NOVExfU1RfQSAgRUxEX0FDS1x0 XHRcdFx0XHQlbHVcbiIsIEJJVChkd29yZCwgNCkpOwo+ICAJcHJpbnRmKCJBVURfQ05UTF9TVF9B ICBFTERfYnVmZmVyX3NpemVcdFx0XHRcdCVsdVxuIiwgQklUUyhkd29yZCwgMTQsIDEwKSk7Cj4g IAo+IC0JZHdvcmQgPSBJTlJFRyhBVURfQ05UTF9TVF9CKTsKPiArCWR3b3JkID0gSU5SRUcoaWd0 X2dsb2JhbF9tbWlvLCBBVURfQ05UTF9TVF9CKTsKPiAgCXByaW50ZigiQVVEX0NOVExfU1RfQiAg RElQX1BvcnRfU2VsZWN0XHRcdFx0XHRbJSNseF0gJXNcbiIsCj4gIAkJCUJJVFMoZHdvcmQsIDMw LCAyOSksIGRpcF9wb3J0W0JJVFMoZHdvcmQsIDMwLCAyOSldKTsKPiAgCXByaW50ZigiQVVEX0NO VExfU1RfQiAgRElQX3R5cGVfZW5hYmxlX3N0YXR1cyBBdWRpbyBESVBcdFx0JWx1XG4iLCBCSVQo ZHdvcmQsIDIxKSk7Cj4gQEAgLTExNjAsNyArMTE2Miw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfY3B0 KHZvaWQpCj4gIAlwcmludGYoIkFVRF9DTlRMX1NUX0IgIEVMRF9BQ0tcdFx0XHRcdFx0JWx1XG4i LCBCSVQoZHdvcmQsIDQpKTsKPiAgCXByaW50ZigiQVVEX0NOVExfU1RfQiAgRUxEX2J1ZmZlcl9z aXplXHRcdFx0XHQlbHVcbiIsIEJJVFMoZHdvcmQsIDE0LCAxMCkpOwo+ICAKPiAtCWR3b3JkID0g SU5SRUcoQVVEX0NOVExfU1RfQyk7Cj4gKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywg QVVEX0NOVExfU1RfQyk7Cj4gIAlwcmludGYoIkFVRF9DTlRMX1NUX0MgIERJUF9Qb3J0X1NlbGVj dFx0XHRcdFx0WyUjbHhdICVzXG4iLAo+ICAJCQlCSVRTKGR3b3JkLCAzMCwgMjkpLCBkaXBfcG9y dFtCSVRTKGR3b3JkLCAzMCwgMjkpXSk7Cj4gIAlwcmludGYoIkFVRF9DTlRMX1NUX0MgIERJUF90 eXBlX2VuYWJsZV9zdGF0dXMgQXVkaW8gRElQXHRcdCVsdVxuIiwgQklUKGR3b3JkLCAyMSkpOwo+ IEBAIC0xMTcxLDcgKzExNzMsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX2NwdCh2b2lkKQo+ICAJcHJp bnRmKCJBVURfQ05UTF9TVF9DICBFTERfQUNLXHRcdFx0XHRcdCVsdVxuIiwgQklUKGR3b3JkLCA0 KSk7Cj4gIAlwcmludGYoIkFVRF9DTlRMX1NUX0MgIEVMRF9idWZmZXJfc2l6ZVx0XHRcdFx0JWx1 XG4iLCBCSVRTKGR3b3JkLCAxNCwgMTApKTsKPiAgCj4gLQlkd29yZCA9IElOUkVHKEFVRF9DTlRS TF9TVDIpOwo+ICsJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9DTlRSTF9TVDIp Owo+ICAJcHJpbnRmKCJBVURfQ05UUkxfU1QyICBDUF9SZWFkeUJcdFx0XHRcdCVsdVxuIiwJQklU KGR3b3JkLCAxKSk7Cj4gIAlwcmludGYoIkFVRF9DTlRSTF9TVDIgIEVMRF92YWxpZEJcdFx0XHRc dCVsdVxuIiwJQklUKGR3b3JkLCAwKSk7Cj4gIAlwcmludGYoIkFVRF9DTlRSTF9TVDIgIENQX1Jl YWR5Q1x0XHRcdFx0JWx1XG4iLAlCSVQoZHdvcmQsIDUpKTsKPiBAQCAtMTE3OSw3ICsxMTgxLDcg QEAgc3RhdGljIHZvaWQgZHVtcF9jcHQodm9pZCkKPiAgCXByaW50ZigiQVVEX0NOVFJMX1NUMiAg Q1BfUmVhZHlEXHRcdFx0XHQlbHVcbiIsCUJJVChkd29yZCwgOSkpOwo+ICAJcHJpbnRmKCJBVURf Q05UUkxfU1QyICBFTERfdmFsaWREXHRcdFx0XHQlbHVcbiIsCUJJVChkd29yZCwgOCkpOwo+ICAK PiAtCWR3b3JkID0gSU5SRUcoQVVEX0NOVFJMX1NUMyk7Cj4gKwlkd29yZCA9IElOUkVHKGlndF9n bG9iYWxfbW1pbywgQVVEX0NOVFJMX1NUMyk7Cj4gIAlwcmludGYoIkFVRF9DTlRSTF9TVDMgIFRy YW5zQV9EUFRfQXVkaW9fT3V0cHV0X0VuXHRcdCVsdVxuIiwJQklUKGR3b3JkLCAzKSk7Cj4gIAlw cmludGYoIkFVRF9DTlRSTF9TVDMgIFRyYW5zQV90b19Qb3J0X1NlbFx0XHRcdFslI2x4XSAlc1xu IiwKPiAgCQkJQklUUyhkd29yZCwgMiwgMCksIHRyYW5zX3RvX3BvcnRfc2VsW0JJVFMoZHdvcmQs IDIsIDApXSk7Cj4gQEAgLTExOTAsNyArMTE5Miw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfY3B0KHZv aWQpCj4gIAlwcmludGYoIkFVRF9DTlRSTF9TVDMgIFRyYW5zQ190b19Qb3J0X1NlbFx0XHRcdFsl I2x4XSAlc1xuIiwKPiAgCQkJQklUUyhkd29yZCwgMTAsIDgpLCB0cmFuc190b19wb3J0X3NlbFtC SVRTKGR3b3JkLCAxMCwgOCldKTsKPiAgCj4gLQlkd29yZCA9IElOUkVHKEFVRF9IRE1JV19TVEFU VVMpOwo+ICsJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9IRE1JV19TVEFUVVMp Owo+ICAJcHJpbnRmKCJBVURfSERNSVdfU1RBVFVTICBDb252X0FfQ0RDTEsvRE9UQ0xLX0ZJRk9f VW5kZXJydW5cdCVsdVxuIiwgQklUKGR3b3JkLCAyNykpOwo+ICAJcHJpbnRmKCJBVURfSERNSVdf U1RBVFVTICBDb252X0FfQ0RDTEsvRE9UQ0xLX0ZJRk9fT3ZlcnJ1blx0JWx1XG4iLCAgQklUKGR3 b3JkLCAyNikpOwo+ICAJcHJpbnRmKCJBVURfSERNSVdfU1RBVFVTICBDb252X0JfQ0RDTEsvRE9U Q0xLX0ZJRk9fVW5kZXJydW5cdCVsdVxuIiwgQklUKGR3b3JkLCAyOSkpOwo+IEBAIC0xMjAxLDU0 ICsxMjAzLDYwIEBAIHN0YXRpYyB2b2lkIGR1bXBfY3B0KHZvaWQpCj4gIAlwcmludGYoIkFVRF9I RE1JV19TVEFUVVMgIEZ1bmN0aW9uX1Jlc2V0XHRcdFx0JWx1XG4iLAkJIEJJVChkd29yZCwgMjQp KTsKPiAgCj4gIAlwcmludGYoIkFVRF9IRE1JV19IRE1JRURJRF9BIEhETUkgRUxEOlxuXHQiKTsK PiAtCWR3b3JkID0gSU5SRUcoQVVEX0NOVExfU1RfQSk7Cj4gKwlkd29yZCA9IElOUkVHKGlndF9n bG9iYWxfbW1pbywgQVVEX0NOVExfU1RfQSk7Cj4gIAlkd29yZCAmPSB+QklUTUFTSyg5LCA1KTsK PiAtCU9VVFJFRyhBVURfQ05UTF9TVF9BLCBkd29yZCk7Cj4gKwlPVVRSRUcoaWd0X2dsb2JhbF9t bWlvLCBBVURfQ05UTF9TVF9BLCBkd29yZCk7Cj4gIAlmb3IgKGkgPSAwOyBpIDwgQklUUyhkd29y ZCwgMTQsIDEwKSAvIDQ7IGkrKykKPiAtCQlwcmludGYoIiUwOHggIiwgaHRvbmwoSU5SRUcoQVVE X0hETUlXX0hETUlFRElEX0EpKSk7Cj4gKwkJcHJpbnRmKCIlMDh4ICIsIGh0b25sKElOUkVHKGln dF9nbG9iYWxfbW1pbywKPiArCQkJCQkgICAgQVVEX0hETUlXX0hETUlFRElEX0EpKSk7Cj4gIAlw cmludGYoIlxuIik7Cj4gIAo+ICAJcHJpbnRmKCJBVURfSERNSVdfSERNSUVESURfQiBIRE1JIEVM RDpcblx0Iik7Cj4gLQlkd29yZCA9IElOUkVHKEFVRF9DTlRMX1NUX0IpOwo+ICsJZHdvcmQgPSBJ TlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9DTlRMX1NUX0IpOwo+ICAJZHdvcmQgJj0gfkJJVE1B U0soOSwgNSk7Cj4gLQlPVVRSRUcoQVVEX0NOVExfU1RfQiwgZHdvcmQpOwo+ICsJT1VUUkVHKGln dF9nbG9iYWxfbW1pbywgQVVEX0NOVExfU1RfQiwgZHdvcmQpOwo+ICAJZm9yIChpID0gMDsgaSA8 IEJJVFMoZHdvcmQsIDE0LCAxMCkgLyA0OyBpKyspCj4gLQkJcHJpbnRmKCIlMDh4ICIsIGh0b25s KElOUkVHKEFVRF9IRE1JV19IRE1JRURJRF9CKSkpOwo+ICsJCXByaW50ZigiJTA4eCAiLCBodG9u bChJTlJFRyhpZ3RfZ2xvYmFsX21taW8sCj4gKwkJCQkJICAgIEFVRF9IRE1JV19IRE1JRURJRF9C KSkpOwo+ICAJcHJpbnRmKCJcbiIpOwo+ICAKPiAgCXByaW50ZigiQVVEX0hETUlXX0hETUlFRElE X0MgSERNSSBFTEQ6XG5cdCIpOwo+IC0JZHdvcmQgPSBJTlJFRyhBVURfQ05UTF9TVF9DKTsKPiAr CWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfQ05UTF9TVF9DKTsKPiAgCWR3b3Jk ICY9IH5CSVRNQVNLKDksIDUpOwo+IC0JT1VUUkVHKEFVRF9DTlRMX1NUX0MsIGR3b3JkKTsKPiAr CU9VVFJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9DTlRMX1NUX0MsIGR3b3JkKTsKPiAgCWZvciAo aSA9IDA7IGkgPCBCSVRTKGR3b3JkLCAxNCwgMTApIC8gNDsgaSsrKQo+IC0JCXByaW50ZigiJTA4 eCAiLCBodG9ubChJTlJFRyhBVURfSERNSVdfSERNSUVESURfQykpKTsKPiArCQlwcmludGYoIiUw OHggIiwgaHRvbmwoSU5SRUcoaWd0X2dsb2JhbF9tbWlvLAo+ICsJCQkJCSAgICBBVURfSERNSVdf SERNSUVESURfQykpKTsKPiAgCXByaW50ZigiXG4iKTsKPiAgCj4gIAlwcmludGYoIkFVRF9IRE1J V19JTkZPRlJfQSBIRE1JIGF1ZGlvIEluZm9mcmFtZTpcblx0Iik7Cj4gLQlkd29yZCA9IElOUkVH KEFVRF9DTlRMX1NUX0EpOwo+ICsJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9D TlRMX1NUX0EpOwo+ICAJZHdvcmQgJj0gfkJJVE1BU0soMjAsIDE4KTsKPiAgCWR3b3JkICY9IH5C SVRNQVNLKDMsIDApOwo+IC0JT1VUUkVHKEFVRF9DTlRMX1NUX0EsIGR3b3JkKTsKPiArCU9VVFJF RyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9DTlRMX1NUX0EsIGR3b3JkKTsKPiAgCWZvciAoaSA9IDA7 IGkgPCA4OyBpKyspCj4gLQkJcHJpbnRmKCIlMDh4ICIsIGh0b25sKElOUkVHKEFVRF9IRE1JV19J TkZPRlJfQSkpKTsKPiArCQlwcmludGYoIiUwOHggIiwgaHRvbmwoSU5SRUcoaWd0X2dsb2JhbF9t bWlvLAo+ICsJCQkJCSAgICBBVURfSERNSVdfSU5GT0ZSX0EpKSk7Cj4gIAlwcmludGYoIlxuIik7 Cj4gIAo+ICAJcHJpbnRmKCJBVURfSERNSVdfSU5GT0ZSX0IgSERNSSBhdWRpbyBJbmZvZnJhbWU6 XG5cdCIpOwo+IC0JZHdvcmQgPSBJTlJFRyhBVURfQ05UTF9TVF9CKTsKPiArCWR3b3JkID0gSU5S RUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfQ05UTF9TVF9CKTsKPiAgCWR3b3JkICY9IH5CSVRNQVNL KDIwLCAxOCk7Cj4gIAlkd29yZCAmPSB+QklUTUFTSygzLCAwKTsKPiAtCU9VVFJFRyhBVURfQ05U TF9TVF9CLCBkd29yZCk7Cj4gKwlPVVRSRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfQ05UTF9TVF9C LCBkd29yZCk7Cj4gIAlmb3IgKGkgPSAwOyBpIDwgODsgaSsrKQo+IC0JCXByaW50ZigiJTA4eCAi LCBodG9ubChJTlJFRyhBVURfSERNSVdfSU5GT0ZSX0IpKSk7Cj4gKwkJcHJpbnRmKCIlMDh4ICIs IGh0b25sKElOUkVHKGlndF9nbG9iYWxfbW1pbywKPiArCQkJCQkgICAgQVVEX0hETUlXX0lORk9G Ul9CKSkpOwo+ICAJcHJpbnRmKCJcbiIpOwo+ICAKPiAgCXByaW50ZigiQVVEX0hETUlXX0lORk9G Ul9DIEhETUkgYXVkaW8gSW5mb2ZyYW1lOlxuXHQiKTsKPiAtCWR3b3JkID0gSU5SRUcoQVVEX0NO VExfU1RfQyk7Cj4gKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX0NOVExfU1Rf Qyk7Cj4gIAlkd29yZCAmPSB+QklUTUFTSygyMCwgMTgpOwo+ICAJZHdvcmQgJj0gfkJJVE1BU0so MywgMCk7Cj4gLQlPVVRSRUcoQVVEX0NOVExfU1RfQywgZHdvcmQpOwo+ICsJT1VUUkVHKGlndF9n bG9iYWxfbW1pbywgQVVEX0NOVExfU1RfQywgZHdvcmQpOwo+ICAJZm9yIChpID0gMDsgaSA8IDg7 IGkrKykKPiAtCQlwcmludGYoIiUwOHggIiwgaHRvbmwoSU5SRUcoQVVEX0hETUlXX0lORk9GUl9D KSkpOwo+ICsJCXByaW50ZigiJTA4eCAiLCBodG9ubChJTlJFRyhpZ3RfZ2xvYmFsX21taW8sCj4g KwkJCQkJICAgIEFVRF9IRE1JV19JTkZPRlJfQykpKTsKPiAgCXByaW50ZigiXG4iKTsKPiAgCj4g IH0KPiBAQCAtMTM3NCwxMCArMTM4MiwxMiBAQCBzdGF0aWMgdm9pZCBkdW1wX2F1ZF9jb25maWco aW50IGluZGV4KQo+ICAJY2hhciBwcmVmaXhbTUFYX1BSRUZJWF9TSVpFXTsKPiAgCj4gIAlpZiAo IUlTX0hBU1dFTExfUExVUyhkZXZpZCkpIHsKPiAtCQlkd29yZCA9IElOUkVHKGF1ZF9yZWdfYmFz ZSArIEFVRF9DT05GSUdfQSArIChpbmRleCAtIFBJUEVfQSkgKiAweDEwMCk7Cj4gKwkJZHdvcmQg PSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIGF1ZF9yZWdfYmFzZSArIEFVRF9DT05GSUdfQSArCj4g KwkJCSAgICAgIChpbmRleCAtIFBJUEVfQSkgKiAweDEwMCk7Cj4gIAkJc3ByaW50ZihwcmVmaXgs ICJBVURfQ09ORklHXyVjICAiLCAnQScgKyBpbmRleCAtIFBJUEVfQSk7Cj4gIAl9IGVsc2Ugewo+ IC0JCWR3b3JkID0gSU5SRUcoYXVkX3JlZ19iYXNlICsgQVVEX1RDQV9DT05GSUcgKyAoaW5kZXgg LSBUUkFOU0NPREVSX0EpICogMHgxMDApOwo+ICsJCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9t bWlvLCBhdWRfcmVnX2Jhc2UgKyBBVURfVENBX0NPTkZJRyArCj4gKwkJCSAgICAgIChpbmRleCAt IFRSQU5TQ09ERVJfQSkgKiAweDEwMCk7Cj4gIAkJc3ByaW50ZihwcmVmaXgsICJBVURfVEMlY19D T05GSUciLCAnQScgKyBpbmRleCAtIFRSQU5TQ09ERVJfQSk7Cj4gIAl9Cj4gIAo+IEBAIC0xMzk3 LDEwICsxNDA3LDEyIEBAIHN0YXRpYyB2b2lkIGR1bXBfYXVkX21pc2NfY29udHJvbChpbnQgaW5k ZXgpCj4gIAljaGFyIHByZWZpeFtNQVhfUFJFRklYX1NJWkVdOwo+ICAKPiAgCWlmICghSVNfSEFT V0VMTF9QTFVTKGRldmlkKSkgewo+IC0JCWR3b3JkID0gSU5SRUcoYXVkX3JlZ19iYXNlICsgQVVE X01JU0NfQ1RSTF9BICsgKGluZGV4IC0gUElQRV9BKSAqIDB4MTAwKTsKPiArCQlkd29yZCA9IElO UkVHKGlndF9nbG9iYWxfbW1pbywgYXVkX3JlZ19iYXNlICsgQVVEX01JU0NfQ1RSTF9BICsKPiAr CQkJICAgICAgKGluZGV4IC0gUElQRV9BKSAqIDB4MTAwKTsKPiAgCQlzcHJpbnRmKHByZWZpeCwg IkFVRF9NSVNDX0NUUkxfJWMgIiwgJ0EnICsgaW5kZXggLSBQSVBFX0EpOwo+ICAJfSBlbHNlIHsK PiAtCQlkd29yZCA9IElOUkVHKGF1ZF9yZWdfYmFzZSArIEFVRF9DMV9NSVNDX0NUUkwgKyAoaW5k ZXggLSBDT05WRVJURVJfMSkgKiAweDEwMCk7Cj4gKwkJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFs X21taW8sIGF1ZF9yZWdfYmFzZSArIEFVRF9DMV9NSVNDX0NUUkwgKwo+ICsJCQkgICAgICAoaW5k ZXggLSBDT05WRVJURVJfMSkgKiAweDEwMCk7Cj4gIAkJc3ByaW50ZihwcmVmaXgsICJBVURfQyVj X01JU0NfQ1RSTCIsICcxJyArIGluZGV4IC0gQ09OVkVSVEVSXzEpOwo+ICAJfQo+ICAKPiBAQCAt MTQxNCw3ICsxNDI2LDcgQEAgc3RhdGljIHZvaWQgZHVtcF9hdWRfdmVuZG9yX2RldmljZV9pZCh2 b2lkKQo+ICB7Cj4gIAl1aW50MzJfdCBkd29yZDsKPiAgCj4gLQlkd29yZCA9IElOUkVHKGF1ZF9y ZWdfYmFzZSArIEFVRF9WSURfRElEKTsKPiArCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlv LCBhdWRfcmVnX2Jhc2UgKyBBVURfVklEX0RJRCk7Cj4gIAlwcmludGYoIkFVRF9WSURfRElEIGRl dmljZSBpZFx0XHRcdFx0XHQweCVseFxuIiwgQklUUyhkd29yZCwgMTUsIDApKTsKPiAgCXByaW50 ZigiQVVEX1ZJRF9ESUQgdmVuZG9yIGlkXHRcdFx0XHRcdDB4JWx4XG4iLCBCSVRTKGR3b3JkLCAz MSwgMTYpKTsKPiAgfQo+IEBAIC0xNDIzLDcgKzE0MzUsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX2F1 ZF9yZXZpc2lvbl9pZCh2b2lkKQo+ICB7Cj4gIAl1aW50MzJfdCBkd29yZDsKPiAgCj4gLQlkd29y ZCA9IElOUkVHKGF1ZF9yZWdfYmFzZSArIEFVRF9SSUQpOwo+ICsJZHdvcmQgPSBJTlJFRyhpZ3Rf Z2xvYmFsX21taW8sIGF1ZF9yZWdfYmFzZSArIEFVRF9SSUQpOwo+ICAJcHJpbnRmKCJBVURfUklE IFN0ZXBwaW5nX0lkXHRcdFx0XHRcdDB4JWx4XG4iLCAgICBCSVRTKGR3b3JkLCA3LCAwKSk7Cj4g IAlwcmludGYoIkFVRF9SSUQgUmV2aXNpb25fSWRcdFx0XHRcdFx0MHglbHhcbiIsICAgIEJJVFMo ZHdvcmQsIDE1LCA4KSk7Cj4gIAlwcmludGYoIkFVRF9SSUQgTWlub3JfUmV2aXNpb25cdFx0XHRc dFx0MHglbHhcbiIsIEJJVFMoZHdvcmQsIDE5LCAxNikpOwo+IEBAIC0xNDM2LDEwICsxNDQ4LDEz IEBAIHN0YXRpYyB2b2lkIGR1bXBfYXVkX21fY3RzX2VuYWJsZShpbnQgaW5kZXgpCj4gIAljaGFy IHByZWZpeFtNQVhfUFJFRklYX1NJWkVdOwo+ICAKPiAgCWlmICghSVNfSEFTV0VMTF9QTFVTKGRl dmlkKSkgewo+IC0JCWR3b3JkID0gSU5SRUcoYXVkX3JlZ19iYXNlICsgQVVEX0NUU19FTkFCTEVf QSAgKyAoaW5kZXggLSBQSVBFX0EpICogMHgxMDApOwo+ICsJCWR3b3JkID0gSU5SRUcoaWd0X2ds b2JhbF9tbWlvLCBhdWRfcmVnX2Jhc2UgKyBBVURfQ1RTX0VOQUJMRV9BICsKPiArCQkJICAgICAg KGluZGV4IC0gUElQRV9BKSAqIDB4MTAwKTsKPiAgCQlzcHJpbnRmKHByZWZpeCwgIkFVRF9DVFNf RU5BQkxFXyVjICAgICIsICdBJyArIGluZGV4IC0gUElQRV9BKTsKPiAgCX0gZWxzZSB7Cj4gLQkJ ZHdvcmQgPSBJTlJFRyhhdWRfcmVnX2Jhc2UgKyBBVURfVENBX01fQ1RTX0VOQUJMRSAgKyAoaW5k ZXggLSBUUkFOU0NPREVSX0EpICogMHgxMDApOwo+ICsJCWR3b3JkID0gSU5SRUcoaWd0X2dsb2Jh bF9tbWlvLCBhdWRfcmVnX2Jhc2UgKwo+ICsJCQkgICAgICBBVURfVENBX01fQ1RTX0VOQUJMRSAg KyAoaW5kZXggLSBUUkFOU0NPREVSX0EpICoKPiArCQkJICAgICAgMHgxMDApOwo+ICAJCXNwcmlu dGYocHJlZml4LCAiQVVEX1RDJWNfTV9DVFNfRU5BQkxFIiwgJ0EnICsgaW5kZXggLSBUUkFOU0NP REVSX0EpOwo+ICAJfQo+ICAKPiBAQCAtMTQ1NCw3ICsxNDY5LDcgQEAgc3RhdGljIHZvaWQgZHVt cF9hdWRfcG93ZXJfc3RhdGUodm9pZCkKPiAgCXVpbnQzMl90IGR3b3JkOwo+ICAJaW50IG51bV9w aXBlczsKPiAgCj4gLQlkd29yZCA9IElOUkVHKGF1ZF9yZWdfYmFzZSArIEFVRF9QV1JTVCk7Cj4g Kwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgYXVkX3JlZ19iYXNlICsgQVVEX1BXUlNU KTsKPiAgCXByaW50ZigiQVVEX1BXUlNUICBQaW5CX1dpZGdldF9Qb3dlcl9TdGF0ZV9TZXQgICAg ICAgICAgICAgIFx0JXNcbiIsICAgICAgICAgcG93ZXJfc3RhdGVbQklUUyhkd29yZCwgIDEsICAw KV0pOwo+ICAJcHJpbnRmKCJBVURfUFdSU1QgIFBpbkJfV2lkZ2V0X1Bvd2VyX1N0YXRlX0N1cnJl bnQgICAgICAgICAgXHQlc1xuIiwgICAgICAgICBwb3dlcl9zdGF0ZVtCSVRTKGR3b3JkLCAgMywg IDIpXSk7Cj4gIAlwcmludGYoIkFVRF9QV1JTVCAgUGluQ19XaWRnZXRfUG93ZXJfU3RhdGVfU2V0 ICAgICAgICAgICAgICBcdCVzXG4iLCAgICAgICAgIHBvd2VyX3N0YXRlW0JJVFMoZHdvcmQsICA1 LCAgNCldKTsKPiBAQCAtMTUxMCwxMSArMTUyNSwxMSBAQCBzdGF0aWMgdm9pZCBkdW1wX2F1ZF9l ZGlkX2RhdGEoaW50IGluZGV4KQo+ICAJCXByaW50ZigiQVVEX0hETUlXX0hETUlFRElEXyVjIEhE TUkgRUxEOlxuXHQiLCAgJ0EnICsgaW5kZXggLSBQSVBFX0EpOwo+ICAJfQo+ICAKPiAtCWR3b3Jk ID0gSU5SRUcoYXVkX2N0cmxfc3QpOwo+ICsJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8s IGF1ZF9jdHJsX3N0KTsKPiAgCWR3b3JkICY9IH5CSVRNQVNLKDksIDUpOwo+IC0JT1VUUkVHKGF1 ZF9jdHJsX3N0LCBkd29yZCk7Cj4gKwlPVVRSRUcoaWd0X2dsb2JhbF9tbWlvLCBhdWRfY3RybF9z dCwgZHdvcmQpOwo+ICAJZm9yIChpID0gMDsgaSA8IEJJVFMoZHdvcmQsIDE0LCAxMCkgLyA0OyBp KyspCj4gLQkJcHJpbnRmKCIlMDh4ICIsIGh0b25sKElOUkVHKGVkaWRfZGF0YSkpKTsKPiArCQlw cmludGYoIiUwOHggIiwgaHRvbmwoSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBlZGlkX2RhdGEpKSk7 Cj4gIAlwcmludGYoIlxuIik7Cj4gIH0KPiAgCj4gQEAgLTE1MzcsMTIgKzE1NTIsMTIgQEAgc3Rh dGljIHZvaWQgZHVtcF9hdWRfaW5mb2ZyYW1lKGludCBpbmRleCkKPiAgCQlwcmludGYoIkFVRF9I RE1JV19JTkZPRlJfJWMgSERNSSBhdWRpbyBJbmZvZnJhbWU6XG5cdCIsICAnQScgKyBpbmRleCAt IFBJUEVfQSk7Cj4gIAl9Cj4gIAo+IC0JZHdvcmQgPSBJTlJFRyhhdWRfY3RybF9zdCk7Cj4gKwlk d29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgYXVkX2N0cmxfc3QpOwo+ICAJZHdvcmQgJj0g fkJJVE1BU0soMjAsIDE4KTsKPiAgCWR3b3JkICY9IH5CSVRNQVNLKDMsIDApOwo+IC0JT1VUUkVH KGF1ZF9jdHJsX3N0LCBkd29yZCk7Cj4gKwlPVVRSRUcoaWd0X2dsb2JhbF9tbWlvLCBhdWRfY3Ry bF9zdCwgZHdvcmQpOwo+ICAJZm9yIChpID0gMDsgaSA8IDg7IGkrKykKPiAtCQlwcmludGYoIiUw OHggIiwgaHRvbmwoSU5SRUcoaW5mb19mcm0pKSk7Cj4gKwkJcHJpbnRmKCIlMDh4ICIsIGh0b25s KElOUkVHKGlndF9nbG9iYWxfbW1pbywgaW5mb19mcm0pKSk7Cj4gIAlwcmludGYoIlxuIik7Cj4g IH0KPiAgCj4gQEAgLTE1NTEsNyArMTU2Niw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfYXVkX3BvcnRf ZW5faGRfY2ZnKHZvaWQpCj4gIAl1aW50MzJfdCBkd29yZDsKPiAgCWludCBudW1fcGlwZXMgPSBn ZXRfbnVtX3BpcGVzKCk7Cj4gIAo+IC0JZHdvcmQgPSBJTlJFRyhhdWRfcmVnX2Jhc2UgKyBBVURf UE9SVF9FTl9IRF9DRkcpOwo+ICsJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIGF1ZF9y ZWdfYmFzZSArIEFVRF9QT1JUX0VOX0hEX0NGRyk7Cj4gIAlpZiAobnVtX3BpcGVzID09IDIpIHsK PiAgCQlwcmludGYoIkFVRF9QT1JUX0VOX0hEX0NGRyAgQ29udmVydG9yX0FfRGlnZW5cdFx0XHQl bHVcbiIsICAgIEJJVChkd29yZCwgMCkpOwo+ICAJCXByaW50ZigiQVVEX1BPUlRfRU5fSERfQ0ZH ICBDb252ZXJ0b3JfQl9EaWdlblx0XHRcdCVsdVxuIiwgICAgQklUKGR3b3JkLCAxKSk7Cj4gQEAg LTE1ODUsNyArMTYwMCw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfYXVkX3BpcGVfY29udl9jZmcodm9p ZCkKPiAgewo+ICAJdWludDMyX3QgZHdvcmQ7Cj4gIAo+IC0JZHdvcmQgPSBJTlJFRyhhdWRfcmVn X2Jhc2UgKyBBVURfUElQRV9DT05WX0NGRyk7Cj4gKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxf bW1pbywgYXVkX3JlZ19iYXNlICsgQVVEX1BJUEVfQ09OVl9DRkcpOwo+ICAJcHJpbnRmKCJBVURf UElQRV9DT05WX0NGRyAgQ29udmVydG9yXzFfRGlnZW5cdFx0XHQlbHVcbiIsICAgIEJJVChkd29y ZCwgMCkpOwo+ICAJcHJpbnRmKCJBVURfUElQRV9DT05WX0NGRyAgQ29udmVydG9yXzJfRGlnZW5c dFx0XHQlbHVcbiIsICAgIEJJVChkd29yZCwgMSkpOwo+ICAJcHJpbnRmKCJBVURfUElQRV9DT05W X0NGRyAgQ29udmVydG9yXzNfRGlnZW5cdFx0XHQlbHVcbiIsICAgIEJJVChkd29yZCwgMikpOwo+ IEBAIC0xNjA3LDEwICsxNjIyLDEyIEBAIHN0YXRpYyB2b2lkIGR1bXBfYXVkX2RpZ19jbnZ0KGlu dCBpbmRleCkKPiAgCWNoYXIgcHJlZml4W01BWF9QUkVGSVhfU0laRV07Cj4gIAo+ICAJaWYgKCFJ U19IQVNXRUxMX1BMVVMoZGV2aWQpKSB7Cj4gLQkJZHdvcmQgPSBJTlJFRyhhdWRfcmVnX2Jhc2Ug KyBBVURfT1VUX0RJR19DTlZUX0EgICsgKGluZGV4IC0gUElQRV9BKSAqIDB4MTAwKTsKPiArCQlk d29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgYXVkX3JlZ19iYXNlICsKPiArCQkJICAgICAg QVVEX09VVF9ESUdfQ05WVF9BICArIChpbmRleCAtIFBJUEVfQSkgKiAweDEwMCk7Cj4gIAkJc3By aW50ZihwcmVmaXgsICJBVURfT1VUX0RJR19DTlZUXyVjIiwgJ0EnICsgaW5kZXggLSBQSVBFX0Ep Owo+ICAJfSBlbHNlIHsKPiAtCQlkd29yZCA9IElOUkVHKGF1ZF9yZWdfYmFzZSArIEFVRF9DMV9E SUdfQ05WVCArIChpbmRleCAtIENPTlZFUlRFUl8xKSAqIDB4MTAwKTsKPiArCQlkd29yZCA9IElO UkVHKGlndF9nbG9iYWxfbW1pbywgYXVkX3JlZ19iYXNlICsgQVVEX0MxX0RJR19DTlZUICsKPiAr CQkJICAgICAgKGluZGV4IC0gQ09OVkVSVEVSXzEpICogMHgxMDApOwo+ICAJCXNwcmludGYocHJl Zml4LCAiQVVEX0MlY19ESUdfQ05WVCAgICIsICcxJyArIGluZGV4IC0gQ09OVkVSVEVSXzEpOwo+ ICAJfQo+ICAKPiBAQCAtMTYzMywxMCArMTY1MCwxMiBAQCBzdGF0aWMgdm9pZCBkdW1wX2F1ZF9z dHJfZGVzYyhpbnQgaW5kZXgpCj4gIAl1aW50MzJfdCByYXRlOwo+ICAKPiAgCWlmICghSVNfSEFT V0VMTF9QTFVTKGRldmlkKSkgewo+IC0JCWR3b3JkID0gSU5SRUcoYXVkX3JlZ19iYXNlICsgQVVE X09VVF9TVFJfREVTQ19BICsgKGluZGV4IC0gUElQRV9BKSAqIDB4MTAwKTsKPiArCQlkd29yZCA9 IElOUkVHKGlndF9nbG9iYWxfbW1pbywgYXVkX3JlZ19iYXNlICsKPiArCQkJICAgICAgQVVEX09V VF9TVFJfREVTQ19BICsgKGluZGV4IC0gUElQRV9BKSAqIDB4MTAwKTsKPiAgCQlzcHJpbnRmKHBy ZWZpeCwgIkFVRF9PVVRfU1RSX0RFU0NfJWMiLCAnQScgKyBpbmRleCAtIFBJUEVfQSk7Cj4gIAl9 IGVsc2Ugewo+IC0JCWR3b3JkID0gSU5SRUcoYXVkX3JlZ19iYXNlICsgQVVEX0MxX1NUUl9ERVND ICsgKGluZGV4IC0gQ09OVkVSVEVSXzEpICogMHgxMDApOwo+ICsJCWR3b3JkID0gSU5SRUcoaWd0 X2dsb2JhbF9tbWlvLCBhdWRfcmVnX2Jhc2UgKyBBVURfQzFfU1RSX0RFU0MgKwo+ICsJCQkgICAg ICAoaW5kZXggLSBDT05WRVJURVJfMSkgKiAweDEwMCk7Cj4gIAkJc3ByaW50ZihwcmVmaXgsICJB VURfQyVjX1NUUl9ERVNDICAiLCAnMScgKyBpbmRleCAtIENPTlZFUlRFUl8xKTsKPiAgCX0KPiAg Cj4gQEAgLTE2NjgsOCArMTY4Nyw5IEBAIHN0YXRpYyB2b2lkIGR1bXBfYXVkX291dF9jaGFuX21h cCh2b2lkKQo+ICAKPiAgCXByaW50ZigiQVVEX09VVF9DSEFOX01BUCAgQ29udmVydGVyX0NoYW5u ZWxfTUFQCVBPUlRCCVBPUlRDCVBPUlREXG4iKTsKPiAgCWZvciAoaSA9IDA7IGkgPCA4OyBpKysp IHsKPiAtCQlPVVRSRUcoYXVkX3JlZ19iYXNlICsgQVVEX09VVF9DSEFOX01BUCwgaSB8IChpIDw8 IDgpIHwgKGkgPDwgMTYpKTsKPiAtCQlkd29yZCA9IElOUkVHKGF1ZF9yZWdfYmFzZSArIEFVRF9P VVRfQ0hBTl9NQVApOwo+ICsJCU9VVFJFRyhpZ3RfZ2xvYmFsX21taW8sIGF1ZF9yZWdfYmFzZSAr IEFVRF9PVVRfQ0hBTl9NQVAsCj4gKwkJICAgICAgIGkgfCAoaSA8PCA4KSB8IChpIDw8IDE2KSk7 Cj4gKwkJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIGF1ZF9yZWdfYmFzZSArIEFVRF9P VVRfQ0hBTl9NQVApOwo+ICAJCXByaW50ZigiXHRcdFx0XHQlbHVcdCVsdVx0JWx1XHQlbHVcbiIs Cj4gIAkJCQkxICsgQklUUyhkd29yZCwgIDMsICAwKSwKPiAgCQkJCTEgKyBCSVRTKGR3b3JkLCAg NywgIDQpLAo+IEBAIC0xNjgzLDcgKzE3MDMsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX2F1ZF9jb25u ZWN0X2xpc3Qodm9pZCkKPiAgCXVpbnQzMl90IGR3b3JkOwo+ICAJY2hhciBwcmVmaXhbTUFYX1BS RUZJWF9TSVpFXTsKPiAgCj4gLQlkd29yZCA9IElOUkVHKGF1ZF9yZWdfYmFzZSArIEFVRF9QSU5X X0NPTk5MTkdfTElTVCk7Cj4gKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgYXVkX3Jl Z19iYXNlICsgQVVEX1BJTldfQ09OTkxOR19MSVNUKTsKPiAgCXNwcmludGYocHJlZml4LCAiQVVE X1BJTldfQ09OTkxOR19MSVNUIik7Cj4gIAo+ICAJcHJpbnRmKCIlcyAgQ29ubmVjdF9MaXN0X0xl bmd0aFx0XHQlbHVcbiIsICAgICBwcmVmaXgsIEJJVFMoZHdvcmQsIDYsIDApKTsKPiBAQCAtMTY5 OCwxMSArMTcxOCwxMyBAQCBzdGF0aWMgdm9pZCBkdW1wX2F1ZF9jb25uZWN0X3NlbGVjdCh2b2lk KQo+ICAJY2hhciBwcmVmaXhbTUFYX1BSRUZJWF9TSVpFXTsKPiAgCj4gIAlpZiAoSVNfSEFTV0VM TF9QTFVTKGRldmlkKSkgewo+IC0JCWR3b3JkID0gSU5SRUcoYXVkX3JlZ19iYXNlICsgQVVEX1BJ UEVfQ09OTl9TRUxfQ1RSTCk7Cj4gKwkJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIGF1 ZF9yZWdfYmFzZSArCj4gKwkJCSAgICAgIEFVRF9QSVBFX0NPTk5fU0VMX0NUUkwpOwo+ICAJCXNw cmludGYocHJlZml4LCAiQVVEX1BJUEVfQ09OTl9TRUxfQ1RSTCIpOwo+ICAKPiAgCX0gZWxzZSB7 Cj4gLQkJZHdvcmQgPSBJTlJFRyhhdWRfcmVnX2Jhc2UgKyBBVURfUElOV19DT05OTE5HX1NFTCk7 Cj4gKwkJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIGF1ZF9yZWdfYmFzZSArCj4gKwkJ CSAgICAgIEFVRF9QSU5XX0NPTk5MTkdfU0VMKTsKPiAgCQlzcHJpbnRmKHByZWZpeCwgIkFVRF9Q SU5XX0NPTk5MTkdfU0VMICAiKTsKPiAgCX0KPiAgCj4gQEAgLTE3MTgsMTEgKzE3NDAsMTMgQEAg c3RhdGljIHZvaWQgZHVtcF9hdWRfY3RybF9zdGF0ZShpbnQgaW5kZXgpCj4gIAo+ICAJaWYgKElT X0hBU1dFTExfUExVUyhkZXZpZCkpIHsKPiAgCQlvZmZzZXQgPSAoaW5kZXggLSBUUkFOU0NPREVS X0EpICogMHgxMDA7Cj4gLQkJZHdvcmQgPSBJTlJFRyhhdWRfcmVnX2Jhc2UgKyBBVURfVENBX0RJ UF9FTERfQ1RSTF9TVCArIG9mZnNldCk7Cj4gKwkJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21t aW8sIGF1ZF9yZWdfYmFzZSArCj4gKwkJCSAgICAgIEFVRF9UQ0FfRElQX0VMRF9DVFJMX1NUICsg b2Zmc2V0KTsKPiAgCQlwcmludGYoIkF1ZGlvIERJUCBhbmQgRUxEIGNvbnRyb2wgc3RhdGUgZm9y IFRyYW5zY29kZXIgJWNcbiIsICAnQScgKyBpbmRleCAtIFRSQU5TQ09ERVJfQSk7Cj4gIAl9IGVs c2Ugewo+ICAJCW9mZnNldCA9IChpbmRleCAtIFBJUEVfQSkgKiAweDEwMDsKPiAtCQlkd29yZCA9 IElOUkVHKGF1ZF9yZWdfYmFzZSArIEFVRF9DTlRMX1NUX0EgKyBvZmZzZXQpOwo+ICsJCWR3b3Jk ID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBhdWRfcmVnX2Jhc2UgKyBBVURfQ05UTF9TVF9BICsK PiArCQkJICAgICAgb2Zmc2V0KTsKPiAgCQlwcmludGYoIkF1ZGlvIGNvbnRyb2wgc3RhdGUgLSBQ aXBlICVjXG4iLCAgJ0EnICsgaW5kZXggLSBQSVBFX0EpOwo+ICAJfQo+ICAKPiBAQCAtMTc0Myw3 ICsxNzY3LDcgQEAgc3RhdGljIHZvaWQgZHVtcF9hdWRfY3RybF9zdGF0ZTIodm9pZCkKPiAgewo+ ICAJdWludDMyX3QgZHdvcmQ7Cj4gIAo+IC0JZHdvcmQgPSBJTlJFRyhhdWRfcmVnX2Jhc2UgKyBB VURfQ05UTF9TVDIpOwo+ICsJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIGF1ZF9yZWdf YmFzZSArIEFVRF9DTlRMX1NUMik7Cj4gIAlwcmludGYoIkFVRF9DTlRMX1NUMiAgRUxEX3ZhbGlk Qlx0XHRcdFx0JWx1XG4iLCAgQklUKGR3b3JkLCAwKSk7Cj4gIAlwcmludGYoIkFVRF9DTlRMX1NU MiAgQ1BfUmVhZHlCXHRcdFx0XHRcdCVsdVxuIiwgQklUKGR3b3JkLCAxKSk7Cj4gIAlwcmludGYo IkFVRF9DTlRMX1NUMiAgRUxEX3ZhbGlkQ1x0XHRcdFx0JWx1XG4iLCAgQklUKGR3b3JkLCA0KSk7 Cj4gQEAgLTE3NTcsNyArMTc4MSw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfYXVkX2VsZF9jcF92bGQo dm9pZCkKPiAgewo+ICAJdWludDMyX3QgZHdvcmQ7Cj4gIAo+IC0JZHdvcmQgPSBJTlJFRyhhdWRf cmVnX2Jhc2UgKyBBVURfUElOX0VMRF9DUF9WTEQpOwo+ICsJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xv YmFsX21taW8sIGF1ZF9yZWdfYmFzZSArIEFVRF9QSU5fRUxEX0NQX1ZMRCk7Cj4gIAlwcmludGYo IkFVRF9QSU5fRUxEX0NQX1ZMRCAgVHJhbnNjb2Rlcl9BIEVMRF92YWxpZFx0XHQlbHVcbiIsCUJJ VChkd29yZCwgMCkpOwo+ICAJcHJpbnRmKCJBVURfUElOX0VMRF9DUF9WTEQgIFRyYW5zY29kZXJf QSBDUF9SZWFkeSBcdFx0JWx1XG4iLAlCSVQoZHdvcmQsIDEpKTsKPiAgCXByaW50ZigiQVVEX1BJ Tl9FTERfQ1BfVkxEICBUcmFuc2NvZGVyX0EgT3V0X2VuYWJsZVx0XHQlbHVcbiIsCUJJVChkd29y ZCwgMikpOwo+IEBAIC0xNzc2LDcgKzE4MDAsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX2F1ZF9oZG1p X3N0YXR1cyh2b2lkKQo+ICB7Cj4gIAl1aW50MzJfdCBkd29yZDsKPiAgCj4gLQlkd29yZCA9IElO UkVHKGF1ZF9yZWdfYmFzZSArIEFVRF9IRE1JV19TVEFUVVMpOwo+ICsJZHdvcmQgPSBJTlJFRyhp Z3RfZ2xvYmFsX21taW8sIGF1ZF9yZWdfYmFzZSArIEFVRF9IRE1JV19TVEFUVVMpOwo+ICAJcHJp bnRmKCJBVURfSERNSVdfU1RBVFVTICBGdW5jdGlvbl9SZXNldFx0XHRcdCVsdVxuIiwgICAgICAg ICAgICAgICAgQklUKGR3b3JkLCAyNCkpOwo+ICAJcHJpbnRmKCJBVURfSERNSVdfU1RBVFVTICBC Q0xLL0NEQ0xLX0ZJRk9fT3ZlcnJ1blx0XHQlbHVcbiIsCSAgICAgQklUKGR3b3JkLCAyNSkpOwo+ ICAJcHJpbnRmKCJBVURfSERNSVdfU1RBVFVTICBDb252X0FfQ0RDTEsvRE9UQ0xLX0ZJRk9fT3Zl cnJ1blx0JWx1XG4iLCAgQklUKGR3b3JkLCAyOCkpOwo+IEBAIC0xODE3LDcgKzE4NDEsNyBAQCBz dGF0aWMgdm9pZCBkdW1wX2RwX3BvcnRfY3RybChpbnQgcG9ydCkKPiAgCXNwcmludGYocHJlZml4 LCAiRFBfJWMiLCAnQicgKyBwb3J0IC0gUE9SVF9CKTsKPiAgCj4gIAlwb3J0X2N0cmwgPSBkaXNw X3JlZ19iYXNlICsgRFBfQ1RMX0IgKyAocG9ydCAtIFBPUlRfQikgKiAweDEwMDsKPiAtCWR3b3Jk ID0gSU5SRUcocG9ydF9jdHJsKTsKPiArCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBw b3J0X2N0cmwpOwo+ICAJcHJpbnRmKCIlcyBEaXNwbGF5UG9ydF9FbmFibGVcdFx0XHRcdFx0JWx1 XG4iLCAgICAgICAgcHJlZml4LCBCSVQoZHdvcmQsIDMxKSk7Cj4gIAlwcmludGYoIiVzIFRyYW5z Y29kZXJfU2VsZWN0XHRcdFx0XHRcdCVzXG4iLCAgICAgICAgICBwcmVmaXgsIEJJVChkd29yZCwg MzApID8gIlRyYW5zY29kZXIgQiIgOiAiVHJhbnNjb2RlciBBIik7Cj4gIAlwcmludGYoIiVzIFBv cnRfV2lkdGhfU2VsZWN0aW9uXHRcdFx0XHRbMHglbHhdICVzXG4iLCBwcmVmaXgsIEJJVFMoZHdv cmQsIDIxLCAxOSksCj4gQEAgLTE4NDEsNyArMTg2NSw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfaGRt aV9wb3J0X2N0cmwoaW50IHBvcnQpCj4gIAkJcG9ydF9jdHJsID0gZGlzcF9yZWdfYmFzZSArIEhE TUlfQ1RMX0IgKyAocG9ydCAtIFBPUlRfQikgKiAweDEwOwo+ICAJfQo+ICAKPiAtCWR3b3JkID0g SU5SRUcocG9ydF9jdHJsKTsKPiArCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBwb3J0 X2N0cmwpOwo+ICAJcHJpbnRmKCIlcyBIRE1JX0VuYWJsZVx0XHRcdFx0XHQldVxuIiwgICAgICAg ICAgICAgICAgIHByZWZpeCwgISEoZHdvcmQgJiBTRFZPX0VOQUJMRSkpOwo+ICAJcHJpbnRmKCIl cyBUcmFuc2NvZGVyX1NlbGVjdFx0XHRcdFx0JXNcbiIsICAgICAgICAgICAgIHByZWZpeCwgQklU KGR3b3JkLCAzMCkgPyAiVHJhbnNjb2RlciBCIiA6ICJUcmFuc2NvZGVyIEEiKTsKPiAgCXByaW50 ZigiJXMgSERDUF9Qb3J0X1NlbGVjdFx0XHRcdFx0JWx1XG4iLCAgICAgICAgICAgICBwcmVmaXgs IEJJVChkd29yZCwgNSkpOwo+IEBAIC0yMDI5LDcgKzIwNTMsNyBAQCBzdGF0aWMgdm9pZCBkdW1w X2RkaV9idWZfY3RsKGludCBwb3J0KQo+ICB7Cj4gIAl1aW50MzJfdCBkd29yZDsKPiAgCj4gLQlk d29yZCA9IElOUkVHKERESV9CVUZfQ1RMX0EgKyAocG9ydCAtIFBPUlRfQSkgKiAweDEwMCk7Cj4g Kwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgRERJX0JVRl9DVExfQSArIChwb3J0IC0g UE9SVF9BKSAqIDB4MTAwKTsKPiAgCXByaW50ZigiRERJICVjIEJ1ZmZlciBjb250cm9sXG4iLCAn QScgKyBwb3J0IC0gUE9SVF9BKTsKPiAgCj4gIAlwcmludGYoIlx0RFAgcG9ydCB3aWR0aFx0XHRc dFx0XHRbMHglbHhdICVzXG4iLCBCSVRTKGR3b3JkLCAzLCAxKSwKPiBAQCAtMjA0MSw3ICsyMDY1 LDggQEAgc3RhdGljIHZvaWQgZHVtcF9kZGlfZnVuY19jdGwoaW50IHBpcGUpCj4gIHsKPiAgCXVp bnQzMl90IGR3b3JkOwo+ICAKPiAtCWR3b3JkID0gSU5SRUcoUElQRV9ERElfRlVOQ19DVExfQSAr IChwaXBlIC0gUElQRV9BKSAqIDB4MTAwMCk7Cj4gKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxf bW1pbywgUElQRV9ERElfRlVOQ19DVExfQSArIChwaXBlIC0gUElQRV9BKSAqCj4gKwkJICAgICAg MHgxMDAwKTsKPiAgCXByaW50ZigiUGlwZSAlYyBEREkgRnVuY3Rpb24gQ29udHJvbFxuIiwgJ0En ICsgcGlwZSAtIFBJUEVfQSk7Cj4gIAo+ICAJcHJpbnRmKCJcdEJJVFMgcGVyIGNvbG9yXHRcdFx0 XHRcdFsweCVseF0gJXNcbiIsICAgIEJJVFMoZHdvcmQsIDIyLCAyMCksCj4gQEAgLTIwNTgsNyAr MjA4Myw4IEBAIHN0YXRpYyB2b2lkIGR1bXBfYXVkX2Nvbm5lY3RfbGlzdF9lbnRyeV9sZW5ndGgo aW50IHRyYW5zY29kZXIpCj4gIAl1aW50MzJfdCBkd29yZDsKPiAgCWNoYXIgcHJlZml4W01BWF9Q UkVGSVhfU0laRV07Cj4gIAo+IC0JZHdvcmQgPSBJTlJFRyhhdWRfcmVnX2Jhc2UgKyBBVURfVENB X1BJTl9QSVBFX0NPTk5fRU5UUllfTE5HVEggKyAodHJhbnNjb2RlciAtIFRSQU5TQ09ERVJfQSkg KiAweDEwMCk7Cj4gKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgYXVkX3JlZ19iYXNl ICsKPiArCQkgICAgICBBVURfVENBX1BJTl9QSVBFX0NPTk5fRU5UUllfTE5HVEggKyAodHJhbnNj b2RlciAtIFRSQU5TQ09ERVJfQSkgKiAweDEwMCk7Cj4gIAlzcHJpbnRmKHByZWZpeCwgIkFVRF9U QyVjX1BJTl9QSVBFX0NPTk5fRU5UUllfTE5HVEgiLCAnQScgKyB0cmFuc2NvZGVyIC0gVFJBTlND T0RFUl9BKTsKPiAgCj4gIAlwcmludGYoIiVzICBDb25uZWN0X0xpc3RfTGVuZ3RoXHQlbHVcbiIs IHByZWZpeCwgQklUUyhkd29yZCwgNiwgMCkpOwo+IEBAIC0yMDcxLDcgKzIwOTcsNyBAQCBzdGF0 aWMgdm9pZCBkdW1wX2F1ZF9jb25uZWN0X3NlbGVjdF9jdHJsKHZvaWQpCj4gIHsKPiAgCXVpbnQz Ml90IGR3b3JkOwo+ICAKPiAtCWR3b3JkID0gSU5SRUcoYXVkX3JlZ19iYXNlICsgQVVEX1BJUEVf Q09OTl9TRUxfQ1RSTCk7Cj4gKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgYXVkX3Jl Z19iYXNlICsgQVVEX1BJUEVfQ09OTl9TRUxfQ1RSTCk7Cj4gIAlwcmludGYoIkFVRF9QSVBFX0NP Tk5fU0VMX0NUUkwgIENvbm5lY3Rpb25fc2VsZWN0X1BvcnRfQlx0JSNseFxuIiwgQklUUyhkd29y ZCwgIDcsICAwKSk7Cj4gIAlwcmludGYoIkFVRF9QSVBFX0NPTk5fU0VMX0NUUkwgIENvbm5lY3Rp b25fc2VsZWN0X1BvcnRfQ1x0JSNseFxuIiwgQklUUyhkd29yZCwgMTUsICA4KSk7Cj4gIAlwcmlu dGYoIkFVRF9QSVBFX0NPTk5fU0VMX0NUUkwgIENvbm5lY3Rpb25fc2VsZWN0X1BvcnRfRFx0JSNs eFxuIiwgQklUUyhkd29yZCwgMjMsIDE2KSk7Cj4gQEAgLTIwODIsNyArMjEwOCw4IEBAIHN0YXRp YyB2b2lkIGR1bXBfYXVkX2RpcF9lbGRfY3RybF9zdChpbnQgdHJhbnNjb2RlcikKPiAgCXVpbnQz Ml90IGR3b3JkOwo+ICAJaW50IG9mZnNldCA9ICh0cmFuc2NvZGVyIC0gVFJBTlNDT0RFUl9BKSAq IDB4MTAwOwo+ICAKPiAtCWR3b3JkID0gSU5SRUcoYXVkX3JlZ19iYXNlICsgQVVEX1RDQV9ESVBf RUxEX0NUUkxfU1QgKyBvZmZzZXQpOwo+ICsJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8s IGF1ZF9yZWdfYmFzZSArIEFVRF9UQ0FfRElQX0VMRF9DVFJMX1NUICsKPiArCQkgICAgICBvZmZz ZXQpOwo+ICAJcHJpbnRmKCJBdWRpbyBESVAgYW5kIEVMRCBjb250cm9sIHN0YXRlIGZvciBUcmFu c2NvZGVyICVjXG4iLCAgJ0EnICsgdHJhbnNjb2RlciAtIFRSQU5TQ09ERVJfQSk7Cj4gIAo+ICAJ cHJpbnRmKCJcdEVMRF9BQ0tcdFx0XHRcdFx0XHQlbHVcbiIsICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQklUKGR3b3JkLCA0KSk7Cj4gQEAgLTIxMDIsNyArMjEyOSw3IEBAIHN0YXRp YyB2b2lkIGR1bXBfYXVkX2hkbWlfZmlmb19zdGF0dXModm9pZCkKPiAgewo+ICAJdWludDMyX3Qg ZHdvcmQ7Cj4gIAo+IC0JZHdvcmQgPSBJTlJFRyhhdWRfcmVnX2Jhc2UgKyBBVURfSERNSV9GSUZP X1NUQVRVUyk7Cj4gKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgYXVkX3JlZ19iYXNl ICsgQVVEX0hETUlfRklGT19TVEFUVVMpOwo+ICAJcHJpbnRmKCJBVURfSERNSV9GSUZPX1NUQVRV UyAgRnVuY3Rpb25fUmVzZXRcdFx0XHQlbHVcbiIsICAgICAgICAgICAgICAgIEJJVChkd29yZCwg MjQpKTsKPiAgCXByaW50ZigiQVVEX0hETUlfRklGT19TVEFUVVMgIENvbnZfMV9DRENMSy9ET1RD TEtfRklGT19PdmVycnVuXHQlbHVcbiIsICBCSVQoZHdvcmQsIDI2KSk7Cj4gIAlwcmludGYoIkFV RF9IRE1JX0ZJRk9fU1RBVFVTICBDb252XzFfQ0RDTEsvRE9UQ0xLX0ZJRk9fVW5kZXJydW5cdCVs dVxuIiwgQklUKGR3b3JkLCAyNykpOwo+IGRpZmYgLS1naXQgYS90b29scy9pbnRlbF9iYWNrbGln aHQuYyBiL3Rvb2xzL2ludGVsX2JhY2tsaWdodC5jCj4gaW5kZXggZTQ4NTBlODguLjg1ZDA5OWQ3 IDEwMDY0NAo+IC0tLSBhL3Rvb2xzL2ludGVsX2JhY2tsaWdodC5jCj4gKysrIGIvdG9vbHMvaW50 ZWxfYmFja2xpZ2h0LmMKPiBAQCAtNDIsOCArNDIsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hh cioqIGFyZ3YpCj4gIAo+ICAJaW50ZWxfbW1pb191c2VfcGNpX2JhcihpbnRlbF9nZXRfcGNpX2Rl dmljZSgpLCAtMSk7Cj4gIAo+IC0JY3VycmVudCA9IElOUkVHKEJMQ19QV01fQ1BVX0NUTCkgJiBC QUNLTElHSFRfRFVUWV9DWUNMRV9NQVNLOwo+IC0JbWF4ID0gSU5SRUcoQkxDX1BXTV9QQ0hfQ1RM MikgPj4gMTY7Cj4gKwljdXJyZW50ID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBCTENfUFdNX0NQ VV9DVEwpICYgQkFDS0xJR0hUX0RVVFlfQ1lDTEVfTUFTSzsKPiArCW1heCA9IElOUkVHKGlndF9n bG9iYWxfbW1pbywgQkxDX1BXTV9QQ0hfQ1RMMikgPj4gMTY7Cj4gIAo+ICAJcHJpbnRmICgiY3Vy cmVudCBiYWNrbGlnaHQgdmFsdWU6ICVkJSVcbiIsIGN1cnJlbnQgKiAxMDAgLyBtYXgpOwo+ICAK PiBAQCAtNTEsOSArNTEsOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCj4gIAkJ dWludDMyX3QgdiA9IGF0b2kgKGFyZ3ZbMV0pICogbWF4IC8gMTAwOwo+ICAJCWlmICh2ID4gbWF4 KQo+ICAJCQl2ID0gbWF4Owo+IC0JCU9VVFJFRyhCTENfUFdNX0NQVV9DVEwsCj4gLQkJICAgICAg IChJTlJFRyhCTENfUFdNX0NQVV9DVEwpICZ+IEJBQ0tMSUdIVF9EVVRZX0NZQ0xFX01BU0spIHwg dik7Cj4gLQkJKHZvaWQpIElOUkVHKEJMQ19QV01fQ1BVX0NUTCk7Cj4gKwkJT1VUUkVHKGlndF9n bG9iYWxfbW1pbywgQkxDX1BXTV9DUFVfQ1RMLAo+ICsJCSAgICAgICAoSU5SRUcoaWd0X2dsb2Jh bF9tbWlvLCBCTENfUFdNX0NQVV9DVEwpICYgfkJBQ0tMSUdIVF9EVVRZX0NZQ0xFX01BU0spIHwg dik7Cj4gKwkJKHZvaWQpSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBCTENfUFdNX0NQVV9DVEwpOwo+ ICAJCXByaW50ZiAoInNldCBiYWNrbGlnaHQgdG8gJWQlJVxuIiwgdiAqIDEwMCAvIG1heCk7Cj4g IAl9Cj4gIAo+IGRpZmYgLS1naXQgYS90b29scy9pbnRlbF9kaXNwbGF5X3BvbGxlci5jIGIvdG9v bHMvaW50ZWxfZGlzcGxheV9wb2xsZXIuYwo+IGluZGV4IDUxZjViOWE1Li5lMTA5NGQzOSAxMDA2 NDQKPiAtLS0gYS90b29scy9pbnRlbF9kaXNwbGF5X3BvbGxlci5jCj4gKysrIGIvdG9vbHMvaW50 ZWxfZGlzcGxheV9wb2xsZXIuYwo+IEBAIC03MSwyMiArNzEsMjIgQEAgc3RhdGljIHZvaWQgc2ln aGFuZGxlcihpbnQgeCkKPiAgCj4gIHN0YXRpYyB1aW50MTZfdCByZWFkX3JlZ18xNih1aW50MzJf dCByZWcpCj4gIHsKPiAtCXJldHVybiBJTlJFRzE2KHZsdl9vZmZzZXQgKyByZWcpOwo+ICsJcmV0 dXJuIElOUkVHMTYoaWd0X2dsb2JhbF9tbWlvLCB2bHZfb2Zmc2V0ICsgcmVnKTsKPiAgfQo+ICAK PiAgc3RhdGljIHVpbnQzMl90IHJlYWRfcmVnKHVpbnQzMl90IHJlZykKPiAgewo+IC0JcmV0dXJu IElOUkVHKHZsdl9vZmZzZXQgKyByZWcpOwo+ICsJcmV0dXJuIElOUkVHKGlndF9nbG9iYWxfbW1p bywgdmx2X29mZnNldCArIHJlZyk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIHdyaXRlX3JlZ18x Nih1aW50MzJfdCByZWcsIHVpbnQxNl90IHZhbCkKPiAgewo+IC0JT1VUUkVHMTYodmx2X29mZnNl dCArIHJlZywgdmFsKTsKPiArCU9VVFJFRzE2KGlndF9nbG9iYWxfbW1pbywgdmx2X29mZnNldCAr IHJlZywgdmFsKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgd3JpdGVfcmVnKHVpbnQzMl90IHJl ZywgdWludDMyX3QgdmFsKQo+ICB7Cj4gLQlPVVRSRUcodmx2X29mZnNldCArIHJlZywgdmFsKTsK PiArCU9VVFJFRyhpZ3RfZ2xvYmFsX21taW8sIHZsdl9vZmZzZXQgKyByZWcsIHZhbCk7Cj4gIH0K PiAgCj4gIHN0YXRpYyBjaGFyIHBpcGVfbmFtZShpbnQgcGlwZSkKPiBkaWZmIC0tZ2l0IGEvdG9v bHMvaW50ZWxfZm9yY2V3YWtlZC5jIGIvdG9vbHMvaW50ZWxfZm9yY2V3YWtlZC5jCj4gaW5kZXgg MDJmYmY4ODguLmUwNTdmNWZlIDEwMDY0NAo+IC0tLSBhL3Rvb2xzL2ludGVsX2ZvcmNld2FrZWQu Ywo+ICsrKyBiL3Rvb2xzL2ludGVsX2ZvcmNld2FrZWQuYwo+IEBAIC01OSw3ICs1OSw3IEBAIGhl bHAoY2hhciAqcHJvZykgewo+ICBzdGF0aWMgaW50Cj4gIGlzX2FsaXZlKHZvaWQpIHsKPiAgCS8q IFJlYWQgdGhlIHRpbWVzdGFtcCwgd2hpY2ggc2hvdWxkICphbG1vc3QqIGFsd2F5cyBiZSAhMCAq Lwo+IC0JcmV0dXJuIChpbnRlbF9yZWdpc3Rlcl9yZWFkKDB4MjM1OCkgIT0gMCk7Cj4gKwlyZXR1 cm4gKGludGVsX3JlZ2lzdGVyX3JlYWQoaWd0X2dsb2JhbF9tbWlvLCAweDIzNTgpICE9IDApOwo+ ICB9Cj4gIAo+ICBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQo+IGRpZmYgLS1naXQg YS90b29scy9pbnRlbF9ncHVfdGltZS5jIGIvdG9vbHMvaW50ZWxfZ3B1X3RpbWUuYwo+IGluZGV4 IDRlZDY0MzBlLi5kOTBiODE2YSAxMDA2NDQKPiAtLS0gYS90b29scy9pbnRlbF9ncHVfdGltZS5j Cj4gKysrIGIvdG9vbHMvaW50ZWxfZ3B1X3RpbWUuYwo+IEBAIC04Niw4ICs4NiwxMCBAQCBpbnQg bWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCj4gIAl3aGlsZSAoIWdvZGRvKSB7Cj4gIAkJdWlu dDMyX3QgcmluZ19oZWFkLCByaW5nX3RhaWw7Cj4gIAo+IC0JCXJpbmdfaGVhZCA9IElOUkVHKExQ X1JJTkcgKyBSSU5HX0hFQUQpICYgSEVBRF9BRERSOwo+IC0JCXJpbmdfdGFpbCA9IElOUkVHKExQ X1JJTkcgKyBSSU5HX1RBSUwpICYgVEFJTF9BRERSOwo+ICsJCXJpbmdfaGVhZCA9IElOUkVHKGln dF9nbG9iYWxfbW1pbywgTFBfUklORyArIFJJTkdfSEVBRCkgJgo+ICsJCQkgICAgSEVBRF9BRERS Owo+ICsJCXJpbmdfdGFpbCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgTFBfUklORyArIFJJTkdf VEFJTCkgJgo+ICsJCQkgICAgVEFJTF9BRERSOwo+ICAKPiAgCQlpZiAocmluZ190YWlsID09IHJp bmdfaGVhZCkKPiAgCQkJcmluZ19pZGxlKys7Cj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX2lu Zm9mcmFtZXMuYyBiL3Rvb2xzL2ludGVsX2luZm9mcmFtZXMuYwo+IGluZGV4IDJlZjVkNGZkLi42 ODlmNWZhYSAxMDA2NDQKPiAtLS0gYS90b29scy9pbnRlbF9pbmZvZnJhbWVzLmMKPiArKysgYi90 b29scy9pbnRlbF9pbmZvZnJhbWVzLmMKPiBAQCAtMzM3LDIwICszMzcsMjAgQEAgc3RhdGljIHZv aWQgbG9hZF9pbmZvZnJhbWUoVHJhbnNjb2RlciB0cmFuc2NvZGVyLCBEaXBJbmZvRnJhbWUgKmZy YW1lLAo+ICAJdWludDMyX3QgY3RsX3ZhbDsKPiAgCXVpbnQzMl90IGk7Cj4gIAo+IC0JY3RsX3Zh bCA9IElOUkVHKGN0bF9yZWcpOwo+ICsJY3RsX3ZhbCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywg Y3RsX3JlZyk7Cj4gIAo+ICAJY3RsX3ZhbCAmPSB+RElQX0NUTF9CVUZGRVJfSU5ERVg7Cj4gIAlj dGxfdmFsIHw9IHR5cGUgPDwgMTk7Cj4gLQlPVVRSRUcoY3RsX3JlZywgY3RsX3ZhbCk7Cj4gLQlj dGxfdmFsID0gSU5SRUcoY3RsX3JlZyk7Cj4gKwlPVVRSRUcoaWd0X2dsb2JhbF9tbWlvLCBjdGxf cmVnLCBjdGxfdmFsKTsKPiArCWN0bF92YWwgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIGN0bF9y ZWcpOwo+ICAKPiAgCWN0bF92YWwgJj0gfkRJUF9DVExfQUNDRVNTX0FERFI7Cj4gLQlPVVRSRUco Y3RsX3JlZywgY3RsX3ZhbCk7Cj4gKwlPVVRSRUcoaWd0X2dsb2JhbF9tbWlvLCBjdGxfcmVnLCBj dGxfdmFsKTsKPiAgCj4gIAlmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykgewo+IC0JCWN0bF92YWwg PSBJTlJFRyhjdGxfcmVnKTsKPiArCQljdGxfdmFsID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBj dGxfcmVnKTsKPiAgCQlhc3NlcnQoKGN0bF92YWwgJiBESVBfQ1RMX0FDQ0VTU19BRERSKSA9PSBp KTsKPiAtCQlmcmFtZS0+ZGF0YTMyW2ldID0gSU5SRUcoZGF0YV9yZWcpOwo+ICsJCWZyYW1lLT5k YXRhMzJbaV0gPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIGRhdGFfcmVnKTsKPiAgCX0KPiAgfQo+ ICAKPiBAQCAtMzg1LDcgKzM4NSw3IEBAIHN0YXRpYyB2b2lkIGluZm9mcmFtZV9maXhfY2hlY2tz dW0oRGlwSW5mb0ZyYW1lICpmcmFtZSkKPiAgc3RhdGljIHZvaWQgZHVtcF9wb3J0X2luZm8oaW50 IGhkbWlfcG9ydF9pbmRleCkKPiAgewo+ICAJUmVnaXN0ZXIgcG9ydCA9IGdldF9oZG1pX3BvcnQo aGRtaV9wb3J0X2luZGV4KTsKPiAtCXVpbnQzMl90IHZhbCA9IElOUkVHKHBvcnQpOwo+ICsJdWlu dDMyX3QgdmFsID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBwb3J0KTsKPiAgCVRyYW5zY29kZXIg dHJhbnNjb2RlcjsKPiAgCj4gIAlwcmludGYoIlxuUG9ydCAlczpcbiIsIGhkbWlfcG9ydF9uYW1l c1toZG1pX3BvcnRfaW5kZXhdKTsKPiBAQCAtNDM4LDcgKzQzOCw3IEBAIHN0YXRpYyB2b2lkIGR1 bXBfYXZpX2luZm8oVHJhbnNjb2RlciB0cmFuc2NvZGVyKQo+ICAJRGlwSW5mb0ZyYW1lIGZyYW1l Owo+ICAKPiAgCWxvYWRfaW5mb2ZyYW1lKHRyYW5zY29kZXIsICZmcmFtZSwgRElQX0FWSSk7Cj4g LQl2YWwgPSBJTlJFRyhyZWcpOwo+ICsJdmFsID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCByZWcp Owo+ICAKPiAgCXByaW50ZigiQVZJIEluZm9GcmFtZTpcbiIpOwo+ICAKPiBAQCAtNTM3LDcgKzUz Nyw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfdmVuZG9yX2luZm8oVHJhbnNjb2RlciB0cmFuc2NvZGVy KQo+ICAJRGlwSW5mb0ZyYW1lIGZyYW1lOwo+ICAKPiAgCWxvYWRfaW5mb2ZyYW1lKHRyYW5zY29k ZXIsICZmcmFtZSwgRElQX1ZFTkRPUik7Cj4gLQl2YWwgPSBJTlJFRyhyZWcpOwo+ICsJdmFsID0g SU5SRUcoaWd0X2dsb2JhbF9tbWlvLCByZWcpOwo+ICAKPiAgCXByaW50ZigiVmVuZG9yIEluZm9G cmFtZTpcbiIpOwo+ICAKPiBAQCAtNTcyLDcgKzU3Miw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfZ2Ft dXRfaW5mbyhUcmFuc2NvZGVyIHRyYW5zY29kZXIpCj4gIAlEaXBJbmZvRnJhbWUgZnJhbWU7Cj4g IAo+ICAJbG9hZF9pbmZvZnJhbWUodHJhbnNjb2RlciwgJmZyYW1lLCBESVBfR0FNVVQpOwo+IC0J dmFsID0gSU5SRUcocmVnKTsKPiArCXZhbCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgcmVnKTsK PiAgCj4gIAlwcmludGYoIkdhbXV0IEluZm9GcmFtZTpcbiIpOwo+ICAKPiBAQCAtNjAwLDcgKzYw MCw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfc3BkX2luZm8oVHJhbnNjb2RlciB0cmFuc2NvZGVyKQo+ ICAJY2hhciBkZXNjcmlwdGlvblsxN107Cj4gIAo+ICAJbG9hZF9pbmZvZnJhbWUodHJhbnNjb2Rl ciwgJmZyYW1lLCBESVBfU1BEKTsKPiAtCXZhbCA9IElOUkVHKHJlZyk7Cj4gKwl2YWwgPSBJTlJF RyhpZ3RfZ2xvYmFsX21taW8sIHJlZyk7Cj4gIAo+ICAJcHJpbnRmKCJTUEQgSW5mb0ZyYW1lOlxu Iik7Cj4gIAo+IEBAIC02MzUsNyArNjM1LDcgQEAgc3RhdGljIHZvaWQgZHVtcF9zcGRfaW5mbyhU cmFuc2NvZGVyIHRyYW5zY29kZXIpCj4gIHN0YXRpYyB2b2lkIGR1bXBfdHJhbnNjb2Rlcl9pbmZv KFRyYW5zY29kZXIgdHJhbnNjb2RlcikKPiAgewo+ICAJUmVnaXN0ZXIgcmVnID0gZ2V0X2RpcF9j dGxfcmVnKHRyYW5zY29kZXIpOwo+IC0JdWludDMyX3QgdmFsID0gSU5SRUcocmVnKTsKPiArCXVp bnQzMl90IHZhbCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgcmVnKTsKPiAgCj4gIAlpZiAoZ2Vu ID09IDQpIHsKPiAgCQlwcmludGYoIlxuRElQIGluZm9ybWF0aW9uOlxuIik7Cj4gQEAgLTY5OCwz NyArNjk4LDM3IEBAIHN0YXRpYyB2b2lkIHdyaXRlX2luZm9mcmFtZShUcmFuc2NvZGVyIHRyYW5z Y29kZXIsIERpcFR5cGUgdHlwZSwKPiAgCXVpbnQzMl90IGN0bF92YWw7Cj4gIAl1bnNpZ25lZCBp bnQgaTsKPiAgCj4gLQljdGxfdmFsID0gSU5SRUcoY3RsX3JlZyk7Cj4gKwljdGxfdmFsID0gSU5S RUcoaWd0X2dsb2JhbF9tbWlvLCBjdGxfcmVnKTsKPiAgCWN0bF92YWwgJj0gfkRJUF9DVExfQlVG RkVSX0lOREVYOwo+ICAJY3RsX3ZhbCB8PSAodHlwZSA8PCAxOSk7Cj4gIAljdGxfdmFsICY9IH5E SVBfQ1RMX0FDQ0VTU19BRERSOwo+IC0JT1VUUkVHKGN0bF9yZWcsIGN0bF92YWwpOwo+ICsJT1VU UkVHKGlndF9nbG9iYWxfbW1pbywgY3RsX3JlZywgY3RsX3ZhbCk7Cj4gIAo+ICAJZm9yIChpID0g MDsgaSA8IDg7IGkrKykgewo+IC0JCWN0bF92YWwgPSBJTlJFRyhjdGxfcmVnKTsKPiArCQljdGxf dmFsID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBjdGxfcmVnKTsKPiAgCQlhc3NlcnQoKGN0bF92 YWwgJiBESVBfQ1RMX0FDQ0VTU19BRERSKSA9PSBpKTsKPiAtCQlPVVRSRUcoZGF0YV9yZWcsIGZy YW1lLT5kYXRhMzJbaV0pOwo+ICsJCU9VVFJFRyhpZ3RfZ2xvYmFsX21taW8sIGRhdGFfcmVnLCBm cmFtZS0+ZGF0YTMyW2ldKTsKPiAgCX0KPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgZGlzYWJsZV9p bmZvZnJhbWUoVHJhbnNjb2RlciB0cmFuc2NvZGVyLCBEaXBUeXBlIHR5cGUpCj4gIHsKPiAgCVJl Z2lzdGVyIHJlZyA9IGdldF9kaXBfY3RsX3JlZyh0cmFuc2NvZGVyKTsKPiAtCXVpbnQzMl90IHZh bCA9IElOUkVHKHJlZyk7Cj4gKwl1aW50MzJfdCB2YWwgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8s IHJlZyk7Cj4gIAlpZiAoZ2VuICE9IDQgJiYgdHlwZSA9PSBESVBfQVZJKQo+ICAJCXZhbCAmPSB+ RElQX0NUTF9FTkFCTEU7Cj4gIAl2YWwgJj0gfigxIDw8ICgyMSArIHR5cGUpKTsKPiAtCU9VVFJF RyhyZWcsIHZhbCk7Cj4gKwlPVVRSRUcoaWd0X2dsb2JhbF9tbWlvLCByZWcsIHZhbCk7Cj4gIH0K PiAgCj4gIHN0YXRpYyB2b2lkIGVuYWJsZV9pbmZvZnJhbWUoVHJhbnNjb2RlciB0cmFuc2NvZGVy LCBEaXBUeXBlIHR5cGUpCj4gIHsKPiAgCVJlZ2lzdGVyIHJlZyA9IGdldF9kaXBfY3RsX3JlZyh0 cmFuc2NvZGVyKTsKPiAtCXVpbnQzMl90IHZhbCA9IElOUkVHKHJlZyk7Cj4gKwl1aW50MzJfdCB2 YWwgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIHJlZyk7Cj4gIAlpZiAoZ2VuICE9IDQgJiYgdHlw ZSA9PSBESVBfQVZJKQo+ICAJCXZhbCB8PSBESVBfQ1RMX0VOQUJMRTsKPiAgCXZhbCB8PSAoMSA8 PCAoMjEgKyB0eXBlKSk7Cj4gLQlPVVRSRUcocmVnLCB2YWwpOwo+ICsJT1VUUkVHKGlndF9nbG9i YWxfbW1pbywgcmVnLCB2YWwpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50IHBhcnNlX2luZm9mcmFt ZV9vcHRpb25fdShjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpzLAo+IEBAIC03ODcsNyAr Nzg3LDcgQEAgc3RhdGljIHZvaWQgY2hhbmdlX2F2aV9pbmZvZnJhbWUoVHJhbnNjb2RlciB0cmFu c2NvZGVyLCBjaGFyICpjb21tYW5kcykKPiAgCWNoYXIgKmN1cnJlbnQgPSBjb21tYW5kczsKPiAg Cj4gIAlsb2FkX2luZm9mcmFtZSh0cmFuc2NvZGVyLCAmZnJhbWUsIERJUF9BVkkpOwo+IC0JdmFs ID0gSU5SRUcocmVnKTsKPiArCXZhbCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgcmVnKTsKPiAg Cj4gIAl3aGlsZSAoMSkgewo+ICAJCXJjID0gc3NjYW5mKGN1cnJlbnQsICIlMzFzJW4iLCBvcHRp b24sICZyZWFkKTsKPiBAQCAtODU2LDcgKzg1Niw3IEBAIHN0YXRpYyB2b2lkIGNoYW5nZV9hdmlf aW5mb2ZyYW1lKFRyYW5zY29kZXIgdHJhbnNjb2RlciwgY2hhciAqY29tbWFuZHMpCj4gIAo+ICAJ dmFsICY9IH5ESVBfQ1RMX0ZSRVFVRU5DWTsKPiAgCXZhbCB8PSBESVBfQ1RMX0ZSRVFfRVZFUlk7 Cj4gLQlPVVRSRUcocmVnLCB2YWwpOwo+ICsJT1VUUkVHKGlndF9nbG9iYWxfbW1pbywgcmVnLCB2 YWwpOwo+ICAKPiAgCWZyYW1lLmF2aS5oZWFkZXIudHlwZSA9IEFWSV9JTkZPRlJBTUVfVFlQRTsK PiAgCWZyYW1lLmF2aS5oZWFkZXIudmVyc2lvbiA9IEFWSV9JTkZPRlJBTUVfVkVSU0lPTjsKPiBA QCAtODg4LDcgKzg4OCw3IEBAIHN0YXRpYyB2b2lkIGNoYW5nZV9zcGRfaW5mb2ZyYW1lKFRyYW5z Y29kZXIgdHJhbnNjb2RlciwgY2hhciAqY29tbWFuZHMpCj4gIAljaGFyICpjdXJyZW50ID0gY29t bWFuZHM7Cj4gIAo+ICAJbG9hZF9pbmZvZnJhbWUodHJhbnNjb2RlciwgJmZyYW1lLCBESVBfU1BE KTsKPiAtCXZhbCA9IElOUkVHKHJlZyk7Cj4gKwl2YWwgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8s IHJlZyk7Cj4gIAo+ICAJd2hpbGUgKDEpIHsKPiAgCQlyYyA9IHNzY2FuZihjdXJyZW50LCAiJTE1 cyVuIiwgb3B0aW9uLCAmcmVhZCk7Cj4gQEAgLTkxNyw3ICs5MTcsNyBAQCBzdGF0aWMgdm9pZCBj aGFuZ2Vfc3BkX2luZm9mcmFtZShUcmFuc2NvZGVyIHRyYW5zY29kZXIsIGNoYXIgKmNvbW1hbmRz KQo+ICAKPiAgCXZhbCAmPSB+RElQX0NUTF9GUkVRVUVOQ1k7Cj4gIAl2YWwgfD0gRElQX0NUTF9G UkVRX0VWRVJZX09USEVSOwo+IC0JT1VUUkVHKHJlZywgdmFsKTsKPiArCU9VVFJFRyhpZ3RfZ2xv YmFsX21taW8sIHJlZywgdmFsKTsKPiAgCj4gIAlmcmFtZS5zcGQuaGVhZGVyLnR5cGUgPSBTUERf SU5GT0ZSQU1FX1RZUEU7Cj4gIAlmcmFtZS5zcGQuaGVhZGVyLnZlcnNpb24gPSBTUERfSU5GT0ZS QU1FX1ZFUlNJT047Cj4gQEAgLTk0Niw3ICs5NDYsNyBAQCBzdGF0aWMgdm9pZCBjaGFuZ2VfaW5m b2ZyYW1lX2ZyZXF1ZW5jeShUcmFuc2NvZGVyIHRyYW5zY29kZXIsIERpcFR5cGUgdHlwZSwKPiAg CQkJCSAgICAgICBEaXBGcmVxdWVuY3kgZnJlcXVlbmN5KQo+ICB7Cj4gIAlSZWdpc3RlciByZWcg PSBnZXRfZGlwX2N0bF9yZWcodHJhbnNjb2Rlcik7Cj4gLQl1aW50MzJfdCB2YWwgPSBJTlJFRyhy ZWcpOwo+ICsJdWludDMyX3QgdmFsID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCByZWcpOwo+ICAK PiAgCWlmICh0eXBlID09IERJUF9BVkkgJiYgZnJlcXVlbmN5ICE9IERJUF9GUkVRX0VWRVJZX1ZT WU5DKSB7Cj4gIAkJcHJpbnRmKCJFcnJvcjogQVZJIGluZm9mcmFtZSBtdXN0IGJlIHNlbnQgZXZl cnkgVlN5bmMhXG4iKTsKPiBAQCAtOTU1LDM3ICs5NTUsMzcgQEAgc3RhdGljIHZvaWQgY2hhbmdl X2luZm9mcmFtZV9mcmVxdWVuY3koVHJhbnNjb2RlciB0cmFuc2NvZGVyLCBEaXBUeXBlIHR5cGUs Cj4gIAo+ICAJdmFsICY9IH5ESVBfQ1RMX0ZSRVFVRU5DWTsKPiAgCXZhbCB8PSAoZnJlcXVlbmN5 IDw8IDE2KTsKPiAtCU9VVFJFRyhyZWcsIHZhbCk7Cj4gKwlPVVRSRUcoaWd0X2dsb2JhbF9tbWlv LCByZWcsIHZhbCk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGRpc2FibGVfZGlwKFRyYW5zY29k ZXIgdHJhbnNjb2RlcikKPiAgewo+ICAJUmVnaXN0ZXIgcmVnID0gZ2V0X2RpcF9jdGxfcmVnKHRy YW5zY29kZXIpOwo+IC0JdWludDMyX3QgdmFsID0gSU5SRUcocmVnKTsKPiArCXVpbnQzMl90IHZh bCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgcmVnKTsKPiAgCXZhbCAmPSB+RElQX0NUTF9FTkFC TEU7Cj4gLQlPVVRSRUcocmVnLCB2YWwpOwo+ICsJT1VUUkVHKGlndF9nbG9iYWxfbW1pbywgcmVn LCB2YWwpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBlbmFibGVfZGlwKFRyYW5zY29kZXIgdHJh bnNjb2RlcikKPiAgewo+ICAJUmVnaXN0ZXIgcmVnID0gZ2V0X2RpcF9jdGxfcmVnKHRyYW5zY29k ZXIpOwo+IC0JdWludDMyX3QgdmFsID0gSU5SRUcocmVnKTsKPiArCXVpbnQzMl90IHZhbCA9IElO UkVHKGlndF9nbG9iYWxfbW1pbywgcmVnKTsKPiAgCXZhbCB8PSBESVBfQ1RMX0VOQUJMRTsKPiAt CU9VVFJFRyhyZWcsIHZhbCk7Cj4gKwlPVVRSRUcoaWd0X2dsb2JhbF9tbWlvLCByZWcsIHZhbCk7 Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGRpc2FibGVfaGRtaV9wb3J0KFJlZ2lzdGVyIHJlZykK PiAgewo+IC0JdWludDMyX3QgdmFsID0gSU5SRUcocmVnKTsKPiArCXVpbnQzMl90IHZhbCA9IElO UkVHKGlndF9nbG9iYWxfbW1pbywgcmVnKTsKPiAgCXZhbCAmPSB+SERNSV9QT1JUX0VOQUJMRTsK PiAtCU9VVFJFRyhyZWcsIHZhbCk7Cj4gKwlPVVRSRUcoaWd0X2dsb2JhbF9tbWlvLCByZWcsIHZh bCk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGVuYWJsZV9oZG1pX3BvcnQoUmVnaXN0ZXIgcmVn KQo+ICB7Cj4gLQl1aW50MzJfdCB2YWwgPSBJTlJFRyhyZWcpOwo+ICsJdWludDMyX3QgdmFsID0g SU5SRUcoaWd0X2dsb2JhbF9tbWlvLCByZWcpOwo+ICAJdmFsIHw9IEhETUlfUE9SVF9FTkFCTEU7 Cj4gLQlPVVRSRUcocmVnLCB2YWwpOwo+ICsJT1VUUkVHKGlndF9nbG9iYWxfbW1pbywgcmVnLCB2 YWwpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBwcmludF91c2FnZSh2b2lkKQo+IGRpZmYgLS1n aXQgYS90b29scy9pbnRlbF9sM19wYXJpdHkuYyBiL3Rvb2xzL2ludGVsX2wzX3Bhcml0eS5jCj4g aW5kZXggZDhjOTk3YWYuLjAxNGFjOWYxIDEwMDY0NAo+IC0tLSBhL3Rvb2xzL2ludGVsX2wzX3Bh cml0eS5jCj4gKysrIGIvdG9vbHMvaW50ZWxfbDNfcGFyaXR5LmMKPiBAQCAtMjExLDcgKzIxMSw3 IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCj4gIAkgKiBub3cuIEp1c3QgYmUg YXdhcmUgb2YgdGhpcyBpZiBmb3Igc29tZSByZWFzb24gYSBoYW5nIGlzIHJlcG9ydGVkCj4gIAkg KiB3aGVuIHVzaW5nIHRoaXMgdG9vbC4KPiAgCSAqLwo+IC0JZGZ0ID0gaW50ZWxfcmVnaXN0ZXJf cmVhZCgweGIwMzgpOwo+ICsJZGZ0ID0gaW50ZWxfcmVnaXN0ZXJfcmVhZChpZ3RfZ2xvYmFsX21t aW8sIDB4YjAzOCk7Cj4gIAo+ICAJd2hpbGUgKDEpIHsKPiAgCQlpbnQgYywgb3B0aW9uX2luZGV4 ID0gMDsKPiBAQCAtMzU3LDEwICszNTcsMTIgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFy Z3ZbXSkKPiAgCQkJCWFzc2VydChpIDwgMik7Cj4gIAkJCQlkZnQgfD0gaSA8PCAxOyAvKiBzbGlj ZSAqLwo+ICAJCQkJZGZ0IHw9IDEgPDwgMDsgLyogZW5hYmxlICovCj4gLQkJCQlpbnRlbF9yZWdp c3Rlcl93cml0ZSgweGIwMzgsIGRmdCk7Cj4gKwkJCQlpbnRlbF9yZWdpc3Rlcl93cml0ZShpZ3Rf Z2xvYmFsX21taW8sIDB4YjAzOCwKPiArCQkJCQkJICAgICBkZnQpOwo+ICAJCQkJYnJlYWs7Cj4g IAkJCWNhc2UgJ3UnOgo+IC0JCQkJaW50ZWxfcmVnaXN0ZXJfd3JpdGUoMHhiMDM4LCBkZnQgJiB+ KDE8PDApKTsKPiArCQkJCWludGVsX3JlZ2lzdGVyX3dyaXRlKGlndF9nbG9iYWxfbW1pbywgMHhi MDM4LAo+ICsJCQkJCQkgICAgIGRmdCAmIH4oMSA8PCAwKSk7Cj4gIAkJCQlicmVhazsKPiAgCQkJ Y2FzZSAnTCc6Cj4gIAkJCQlicmVhazsKPiBkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfbGlkLmMg Yi90b29scy9pbnRlbF9saWQuYwo+IGluZGV4IGY0NTc1NmUyLi5hNDEzMmQ1NiAxMDA2NDQKPiAt LS0gYS90b29scy9pbnRlbF9saWQuYwo+ICsrKyBiL3Rvb2xzL2ludGVsX2xpZC5jCj4gQEAgLTEy Miw3ICsxMjIsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCj4gIAlpbnRlbF9t bWlvX3VzZV9wY2lfYmFyKGludGVsX2dldF9wY2lfZGV2aWNlKCksIC0xKTsKPiAgCj4gIAl3aGls ZSAoMSkgewo+IC0JCXN3ZjE0ID0gSU5SRUcoU1dGMTQpOwo+ICsJCXN3ZjE0ID0gSU5SRUcoaWd0 X2dsb2JhbF9tbWlvLCBTV0YxNCk7Cj4gIAo+ICAJCXByaW50ZigiSW50ZWwgTFZEUyBMaWQgc3Rh dHVzOlxuIik7Cj4gIAkJcHJpbnRmKCJcdFNXRjE0KDB4JXgpIDogJXNcbiIsIHN3ZjE0LAo+IGRp ZmYgLS1naXQgYS90b29scy9pbnRlbF9wYW5lbF9maXR0ZXIuYyBiL3Rvb2xzL2ludGVsX3BhbmVs X2ZpdHRlci5jCj4gaW5kZXggMTM3ZWY2MWEuLjI2ODQzZDdjIDEwMDY0NAo+IC0tLSBhL3Rvb2xz L2ludGVsX3BhbmVsX2ZpdHRlci5jCj4gKysrIGIvdG9vbHMvaW50ZWxfcGFuZWxfZml0dGVyLmMK PiBAQCAtODQsMTIgKzg0LDEyIEBAIHN0YXRpYyB2b2lkIHJlYWRfcGlwZV9pbmZvKGludCBpbnRl bF9waXBlLCBzdHJ1Y3QgcGlwZV9pbmZvICppbmZvKQo+ICB7Cj4gIAl1aW50MzJfdCBjb25mLCB2 dG90YWwsIGh0b3RhbCwgc3JjLCBjdHJsMSwgd2luX3N6Owo+ICAKPiAtCWNvbmYgICA9IElOUkVH KFBJUEVDT05GW2ludGVsX3BpcGVdKTsKPiAtCWh0b3RhbCA9IElOUkVHKEhUT1RBTFtpbnRlbF9w aXBlXSk7Cj4gLQl2dG90YWwgPSBJTlJFRyhWVE9UQUxbaW50ZWxfcGlwZV0pOwo+IC0Jc3JjICAg ID0gSU5SRUcoUElQRVNSQ1tpbnRlbF9waXBlXSk7Cj4gLQljdHJsMSAgPSBJTlJFRyhQRl9DVFJM MVtpbnRlbF9waXBlXSk7Cj4gLQl3aW5fc3ogPSBJTlJFRyhQRl9XSU5fU1pbaW50ZWxfcGlwZV0p Owo+ICsJY29uZiAgID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBQSVBFQ09ORltpbnRlbF9waXBl XSk7Cj4gKwlodG90YWwgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEhUT1RBTFtpbnRlbF9waXBl XSk7Cj4gKwl2dG90YWwgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIFZUT1RBTFtpbnRlbF9waXBl XSk7Cj4gKwlzcmMgICAgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIFBJUEVTUkNbaW50ZWxfcGlw ZV0pOwo+ICsJY3RybDEgID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBQRl9DVFJMMVtpbnRlbF9w aXBlXSk7Cj4gKwl3aW5fc3ogPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIFBGX1dJTl9TWltpbnRl bF9waXBlXSk7Cj4gIAo+ICAJaW5mby0+ZW5hYmxlZCA9IChjb25mICYgUElQRUNPTkZfRU5BQkxF KSA/IHRydWUgOiBmYWxzZTsKPiAgCWluZm8tPnRvdF93aWR0aCA9IChodG90YWwgJiBIVE9UQUxf QUNUSVZFX01BU0spICsgMTsKPiBAQCAtMjMyLDI0ICsyMzIsMjQgQEAgc3RhdGljIGludCBjaGFu Z2Vfc2NyZWVuX3NpemUoaW50IGludGVsX3BpcGUsIGludCB4LCBpbnQgeSkKPiAgCQkJYXNzZXJ0 KDApOwo+ICAJCX0KPiAgCX0KPiAtCU9VVFJFRyhQRl9DVFJMMVtpbnRlbF9waXBlXSwgY3RybDFf dmFsKTsKPiArCU9VVFJFRyhpZ3RfZ2xvYmFsX21taW8sIFBGX0NUUkwxW2ludGVsX3BpcGVdLCBj dHJsMV92YWwpOwo+ICAKPiAgCXdpbl9wb3NfdmFsID0gcG9zX3ggPDwgMTY7Cj4gIAl3aW5fcG9z X3ZhbCB8PSBwb3NfeTsKPiAtCU9VVFJFRyhQRl9XSU5fUE9TW2ludGVsX3BpcGVdLCB3aW5fcG9z X3ZhbCk7Cj4gKwlPVVRSRUcoaWd0X2dsb2JhbF9tbWlvLCBQRl9XSU5fUE9TW2ludGVsX3BpcGVd LCB3aW5fcG9zX3ZhbCk7Cj4gIAo+ICAJd2luX3N6X3ZhbCA9IGRzdF93aWR0aCA8PCAxNjsKPiAg CXdpbl9zel92YWwgfD0gZHN0X2hlaWdodDsKPiAtCU9VVFJFRyhQRl9XSU5fU1pbaW50ZWxfcGlw ZV0sIHdpbl9zel92YWwpOwo+ICsJT1VUUkVHKGlndF9nbG9iYWxfbW1pbywgUEZfV0lOX1NaW2lu dGVsX3BpcGVdLCB3aW5fc3pfdmFsKTsKPiAgCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAgc3Rh dGljIGludCBkaXNhYmxlX3BhbmVsX2ZpdHRlcihpbnQgaW50ZWxfcGlwZSkKPiAgewo+IC0JT1VU UkVHKFBGX0NUUkwxW2ludGVsX3BpcGVdLCAwKTsKPiAtCU9VVFJFRyhQRl9XSU5fUE9TW2ludGVs X3BpcGVdLCAwKTsKPiAtCU9VVFJFRyhQRl9XSU5fU1pbaW50ZWxfcGlwZV0sIDApOwo+ICsJT1VU UkVHKGlndF9nbG9iYWxfbW1pbywgUEZfQ1RSTDFbaW50ZWxfcGlwZV0sIDApOwo+ICsJT1VUUkVH KGlndF9nbG9iYWxfbW1pbywgUEZfV0lOX1BPU1tpbnRlbF9waXBlXSwgMCk7Cj4gKwlPVVRSRUco aWd0X2dsb2JhbF9tbWlvLCBQRl9XSU5fU1pbaW50ZWxfcGlwZV0sIDApOwo+ICAJcmV0dXJuIDA7 Cj4gIH0KPiAgCj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX3BlcmZfY291bnRlcnMuYyBiL3Rv b2xzL2ludGVsX3BlcmZfY291bnRlcnMuYwo+IGluZGV4IDUwYzRiY2U2Li5iZTU3M2I1NSAxMDA2 NDQKPiAtLS0gYS90b29scy9pbnRlbF9wZXJmX2NvdW50ZXJzLmMKPiArKysgYi90b29scy9pbnRl bF9wZXJmX2NvdW50ZXJzLmMKPiBAQCAtNDg2LDkgKzQ4NiwxMCBAQCBtYWluKGludCBhcmdjLCBj aGFyICoqYXJndikKPiAgCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNp X2RldmljZSgpLCAwLCBmZCk7Cj4gIAo+ICAJCS8qIEVuYWJsZSBwZXJmb3JtYW5jZSBjb3VudGVy cyAqLwo+IC0JCWludGVsX3JlZ2lzdGVyX3dyaXRlKE9BQ09OVFJPTCwKPiAtCQkJY291bnRlcl9m b3JtYXQgPDwgT0FDT05UUk9MX0NPVU5URVJfU0VMRUNUX1NISUZUIHwKPiAtCQkJUEVSRk9STUFO Q0VfQ09VTlRFUl9FTkFCTEUpOwo+ICsJCWludGVsX3JlZ2lzdGVyX3dyaXRlKGlndF9nbG9iYWxf bW1pbywgT0FDT05UUk9MLAo+ICsJCQkJICAgICBjb3VudGVyX2Zvcm1hdCA8PAo+ICsJCQkJICAg ICBPQUNPTlRST0xfQ09VTlRFUl9TRUxFQ1RfU0hJRlQgfAo+ICsJCQkJICAgICBQRVJGT1JNQU5D RV9DT1VOVEVSX0VOQUJMRSk7Cj4gIAl9Cj4gIAo+ICAJdG90YWxzID0gY2FsbG9jKGNvdW50ZXJf Y291bnQsIHNpemVvZih1aW50MzJfdCkpOwo+IEBAIC01MjAsNyArNTIxLDcgQEAgbWFpbihpbnQg YXJnYywgY2hhciAqKmFyZ3YpCj4gIAo+ICAJaWYgKG9hY29udHJvbCkgewo+ICAJCS8qIERpc2Fi bGUgcGVyZm9ybWFuY2UgY291bnRlcnMgKi8KPiAtCQlpbnRlbF9yZWdpc3Rlcl93cml0ZShPQUNP TlRST0wsIDApOwo+ICsJCWludGVsX3JlZ2lzdGVyX3dyaXRlKGlndF9nbG9iYWxfbW1pbywgT0FD T05UUk9MLCAwKTsKPiAgCj4gIAkJLyogRm9yY2V3YWtlICovCj4gIAkJaW50ZWxfcmVnaXN0ZXJf YWNjZXNzX2ZpbmkoKTsKPiBkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfcmVnLmMgYi90b29scy9p bnRlbF9yZWcuYwo+IGluZGV4IDk0N2VjMzc4Li5kZWJkOGM5YSAxMDA2NDQKPiAtLS0gYS90b29s cy9pbnRlbF9yZWcuYwo+ICsrKyBiL3Rvb2xzL2ludGVsX3JlZy5jCj4gQEAgLTM2NCw3ICszNjQs OCBAQCBzdGF0aWMgaW50IHJlYWRfcmVnaXN0ZXIoc3RydWN0IGNvbmZpZyAqY29uZmlnLCBzdHJ1 Y3QgcmVnICpyZWcsIHVpbnQzMl90ICp2YWxwKQo+ICAJCWlmIChyZWctPmVuZ2luZSkKPiAgCQkJ dmFsID0gcmVnaXN0ZXJfc3JtKGNvbmZpZywgcmVnLCBOVUxMKTsKPiAgCQllbHNlCj4gLQkJCXZh bCA9IElOUkVHKHJlZy0+bW1pb19vZmZzZXQgKyByZWctPmFkZHIpOwo+ICsJCQl2YWwgPSBJTlJF RyhpZ3RfZ2xvYmFsX21taW8sCj4gKwkJCQkgICAgcmVnLT5tbWlvX29mZnNldCArIHJlZy0+YWRk cik7Cj4gIAkJYnJlYWs7Cj4gIAljYXNlIFBPUlRfUE9SVElPX1ZHQToKPiAgCQlpb3BsKDMpOwo+ IEBAIC0zNzIsNyArMzczLDcgQEAgc3RhdGljIGludCByZWFkX3JlZ2lzdGVyKHN0cnVjdCBjb25m aWcgKmNvbmZpZywgc3RydWN0IHJlZyAqcmVnLCB1aW50MzJfdCAqdmFscCkKPiAgCQlpb3BsKDAp Owo+ICAJCWJyZWFrOwo+ICAJY2FzZSBQT1JUX01NSU9fVkdBOgo+IC0JCXZhbCA9IElOUkVHOChy ZWctPmFkZHIpOwo+ICsJCXZhbCA9IElOUkVHOChpZ3RfZ2xvYmFsX21taW8sIHJlZy0+YWRkcik7 Cj4gIAkJYnJlYWs7Cj4gIAljYXNlIFBPUlRfQlVOSVQ6Cj4gIAljYXNlIFBPUlRfUFVOSVQ6Cj4g QEAgLTM4OSw3ICszOTAsOCBAQCBzdGF0aWMgaW50IHJlYWRfcmVnaXN0ZXIoc3RydWN0IGNvbmZp ZyAqY29uZmlnLCBzdHJ1Y3QgcmVnICpyZWcsIHVpbnQzMl90ICp2YWxwKQo+ICAJCQkJcmVnLT5w b3J0X2Rlc2MubmFtZSk7Cj4gIAkJCXJldHVybiAtMTsKPiAgCQl9Cj4gLQkJdmFsID0gaW50ZWxf aW9zZl9zYl9yZWFkKHJlZy0+cG9ydF9kZXNjLnBvcnQsIHJlZy0+YWRkcik7Cj4gKwkJdmFsID0g aW50ZWxfaW9zZl9zYl9yZWFkKGlndF9nbG9iYWxfbW1pbywgcmVnLT5wb3J0X2Rlc2MucG9ydCwK PiArCQkJCQkgcmVnLT5hZGRyKTsKPiAgCQlicmVhazsKPiAgCWRlZmF1bHQ6Cj4gIAkJZnByaW50 ZihzdGRlcnIsICJwb3J0ICVkIG5vdCBzdXBwb3J0ZWRcbiIsIHJlZy0+cG9ydF9kZXNjLnBvcnQp Owo+IEBAIC00MjQsNyArNDI2LDggQEAgc3RhdGljIGludCB3cml0ZV9yZWdpc3RlcihzdHJ1Y3Qg Y29uZmlnICpjb25maWcsIHN0cnVjdCByZWcgKnJlZywgdWludDMyX3QgdmFsKQo+ICAJCWlmIChy ZWctPmVuZ2luZSkgewo+ICAJCQlyZWdpc3Rlcl9zcm0oY29uZmlnLCByZWcsICZ2YWwpOwo+ICAJ CX0gZWxzZSB7Cj4gLQkJCU9VVFJFRyhyZWctPm1taW9fb2Zmc2V0ICsgcmVnLT5hZGRyLCB2YWwp Owo+ICsJCQlPVVRSRUcoaWd0X2dsb2JhbF9tbWlvLAo+ICsJCQkgICAgICAgcmVnLT5tbWlvX29m ZnNldCArIHJlZy0+YWRkciwgdmFsKTsKPiAgCQl9Cj4gIAkJYnJlYWs7Cj4gIAljYXNlIFBPUlRf UE9SVElPX1ZHQToKPiBAQCAtNDQzLDcgKzQ0Niw3IEBAIHN0YXRpYyBpbnQgd3JpdGVfcmVnaXN0 ZXIoc3RydWN0IGNvbmZpZyAqY29uZmlnLCBzdHJ1Y3QgcmVnICpyZWcsIHVpbnQzMl90IHZhbCkK PiAgCQkJCXZhbCwgcmVnLT5wb3J0X2Rlc2MubmFtZSk7Cj4gIAkJCXJldHVybiAtMTsKPiAgCQl9 Cj4gLQkJT1VUUkVHOChyZWctPmFkZHIsIHZhbCk7Cj4gKwkJT1VUUkVHOChpZ3RfZ2xvYmFsX21t aW8sIHJlZy0+YWRkciwgdmFsKTsKPiAgCQlicmVhazsKPiAgCWNhc2UgUE9SVF9CVU5JVDoKPiAg CWNhc2UgUE9SVF9QVU5JVDoKPiBAQCAtNDYwLDcgKzQ2Myw4IEBAIHN0YXRpYyBpbnQgd3JpdGVf cmVnaXN0ZXIoc3RydWN0IGNvbmZpZyAqY29uZmlnLCBzdHJ1Y3QgcmVnICpyZWcsIHVpbnQzMl90 IHZhbCkKPiAgCQkJCXJlZy0+cG9ydF9kZXNjLm5hbWUpOwo+ICAJCQlyZXR1cm4gLTE7Cj4gIAkJ fQo+IC0JCWludGVsX2lvc2Zfc2Jfd3JpdGUocmVnLT5wb3J0X2Rlc2MucG9ydCwgcmVnLT5hZGRy LCB2YWwpOwo+ICsJCWludGVsX2lvc2Zfc2Jfd3JpdGUoaWd0X2dsb2JhbF9tbWlvLCByZWctPnBv cnRfZGVzYy5wb3J0LAo+ICsJCQkJICAgIHJlZy0+YWRkciwgdmFsKTsKPiAgCQlicmVhazsKPiAg CWRlZmF1bHQ6Cj4gIAkJZnByaW50ZihzdGRlcnIsICJwb3J0ICVkIG5vdCBzdXBwb3J0ZWRcbiIs IHJlZy0+cG9ydF9kZXNjLnBvcnQpOwo+IGRpZmYgLS1naXQgYS90b29scy9pbnRlbF9yZWdfY2hl Y2tlci5jIGIvdG9vbHMvaW50ZWxfcmVnX2NoZWNrZXIuYwo+IGluZGV4IDkyYTg5YWUwLi4xZDQw Y2Q4MiAxMDA2NDQKPiAtLS0gYS90b29scy9pbnRlbF9yZWdfY2hlY2tlci5jCj4gKysrIGIvdG9v bHMvaW50ZWxfcmVnX2NoZWNrZXIuYwo+IEBAIC0zNSw3ICszNSw3IEBAIHN0YXRpYyBpbnQgZ2Vu Owo+ICBzdGF0aWMgdWludDMyX3QKPiAgcmVhZF9hbmRfcHJpbnRfcmVnKGNvbnN0IGNoYXIgKm5h bWUsIHVpbnQzMl90IHJlZykKPiAgewo+IC0JdWludDMyX3QgdmFsID0gSU5SRUcocmVnKTsKPiAr CXVpbnQzMl90IHZhbCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgcmVnKTsKPiAgCj4gIAlwcmlu dGYoIiVzICgweCV4KTogMHglMDh4XG4iLCBuYW1lLCByZWcsIHZhbCk7Cj4gIAo+IGRpZmYgLS1n aXQgYS90b29scy9pbnRlbF93YXRlcm1hcmsuYyBiL3Rvb2xzL2ludGVsX3dhdGVybWFyay5jCj4g aW5kZXggZTcxYzNkOWMuLjM3Mjk0N2RlIDEwMDY0NAo+IC0tLSBhL3Rvb2xzL2ludGVsX3dhdGVy bWFyay5jCj4gKysrIGIvdG9vbHMvaW50ZWxfd2F0ZXJtYXJrLmMKPiBAQCAtMzgsNyArMzgsNyBA QCBzdGF0aWMgdWludDMyX3QgZGV2aWQ7Cj4gIAo+ICBzdGF0aWMgdWludDMyX3QgcmVhZF9yZWco dWludDMyX3QgYWRkcikKPiAgewo+IC0JcmV0dXJuIElOUkVHKGRpc3BsYXlfYmFzZSArIGFkZHIp Owo+ICsJcmV0dXJuIElOUkVHKGlndF9nbG9iYWxfbW1pbywgZGlzcGxheV9iYXNlICsgYWRkcik7 Cj4gIH0KPiAgCj4gIHN0cnVjdCBnbWNoX3dtIHsKPiBAQCAtNjUwLDggKzY1MCw4IEBAIHN0YXRp YyB2b2lkIHZsdl93bV9kdW1wKHZvaWQpCj4gIAo+ICAJCWRkbDMgPSByZWFkX3JlZygweDcwMDU4 KTsKPiAgCj4gLQkJaW50ZWxfcHVuaXRfcmVhZCgweDM2LCAmZHNwX3NzX3BtKTsKPiAtCQlpbnRl bF9wdW5pdF9yZWFkKDB4MTM5LCAmZGRyX3NldHVwMik7Cj4gKwkJaW50ZWxfcHVuaXRfcmVhZChp Z3RfZ2xvYmFsX21taW8sIDB4MzYsICZkc3Bfc3NfcG0pOwo+ICsJCWludGVsX3B1bml0X3JlYWQo aWd0X2dsb2JhbF9tbWlvLCAweDEzOSwgJmRkcl9zZXR1cDIpOwo+ICAJfSBlbHNlIHsKPiAgCQlm dzcgPSByZWFkX3JlZygweDcwMDdjKTsKPiAgCX0KPiAtLSAKPiAyLjIwLjEKPgpTdGlsbCBsb25n IG9uZSwgYnV0IEkgc29tZWhvdyBtYW5hZ2VkIHRvIGdldCB0byB0aGUgZW5kLgpBcyBJIHdyb3Rl IGFib3ZlLCBwbGVhc2UgZml4IGFsbCAnbWFwZWQnIHRvICdtYXBwZWQnLgpLYXNpYQo+IF9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gaWd0LWRldiBtYWls aW5nIGxpc3QKPiBpZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3Qt ZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=