From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [RFC] drm/i915: Rename global i915 to i915_params Date: Tue, 12 Sep 2017 18:36:57 +0300 Message-ID: <20170912153657.GS4914@intel.com> References: <20170912152809.17716-1-michal.wajdeczko@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id D8A856E676 for ; Tue, 12 Sep 2017 15:37:00 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20170912152809.17716-1-michal.wajdeczko@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Michal Wajdeczko Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBTZXAgMTIsIDIwMTcgYXQgMDM6Mjg6MDlQTSArMDAwMCwgTWljaGFsIFdhamRlY3pr byB3cm90ZToKPiBPdXIgZ2xvYmFsIHN0cnVjdCB3aXRoIHBhcmFtcyBpcyBuYW1lZCBleGFjdGx5 IHRoZSBzYW1lIHdheQo+IGFzIG5ldyBwcmVmZXJyZWQgbmFtZSBmb3IgdGhlIGRybV9pOTE1X3By aXZhdGUgZnVuY3Rpb24gcGFyYW1ldGVyLgoKUHJlZmVycmVkIGJ5IHNvbWUsIHBlcmhhcHMgbm90 IGJ5IG90aGVycy4KCkkgc3VzcGVjdCBKYW5pIHdpbGwgYmUgZGlzYXBwb2ludGVkIGF0IGxvc2lu ZyB0aGUgY3V0ZSBzeW1tZXRyeQpiZXR3ZWVuIHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lIGFuZCB0 aGUgY29kZS4KCj4gCj4gVG8gYXZvaWQgc3VjaCBuYW1lIHJldXNlIGFuZCBhbGxvdyBmdXJ0aGVy IGNsZWFudXAgb2YgZGVwcmVjYXRlZAo+IGRldl9wcml2IGxldHMgdXNlIGRpZmZlcmVudCBuYW1l IGZvciB0aGUgZ2xvYmFsLgo+IAo+IEFjdHVhbCByZW5hbWUgd2FzIGRvbmUgd2l0aCBDb2NjaW5l bGxlIGhlbHAuCgpQbGVhc2UgaW5jbHVkZSB0aGUgc2NyaXB0IGluIHRoZSBjb21taXQgbWVzc2Fn ZS4KCj4gCj4gU2lnbmVkLW9mZi1ieTogTWljaGFsIFdhamRlY3prbyA8bWljaGFsLndhamRlY3pr b0BpbnRlbC5jb20+Cj4gQ2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVr Pgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvcmVuZGVyLmMgICAgICAgICAgICAg fCAgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgICAgICAg IHwgIDE0ICsrLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgICAgICAg ICAgIHwgIDMzICsrKysrLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAg ICAgICAgICAgICAgfCAgMTAgKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMg ICAgICAgICAgICAgICB8ICAgNiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9j b250ZXh0LmMgICAgICAgfCAgMTIgKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2V4ZWNidWZmZXIuYyAgICB8ICAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9ndHQuYyAgICAgICAgICAgfCAgIDYgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n cHVfZXJyb3IuYyAgICAgICAgIHwgICA2ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z3VjX3N1Ym1pc3Npb24uYyAgICB8ICAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2lycS5jICAgICAgICAgICAgICAgfCAgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9wYXJhbXMuYyAgICAgICAgICAgIHwgMTAzICsrKysrKysrKysrKysrKystLS0tLS0tLS0tCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGFyYW1zLmggICAgICAgICAgICB8ICAgMiArLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5jICAgICAgICAgICAgICAgfCAgIDYgKy0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMgICAgICAgICAgICAgIHwgICA2ICst Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Jpb3MuYyAgICAgICAgICAgICB8ICAgNiAr LQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jcnQuYyAgICAgICAgICAgICAgfCAgIDQg Ky0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uYyAgICAgIHwgICAy ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyAgICAgICAgICB8ICAx MiArLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyAgICAgICAgICAgICAgIHwg ICA0ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2F1eF9iYWNrbGlnaHQuYyB8 ICAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgICAgICAgICAg fCAgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgICAgICAg IHwgICA0ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jICAgICAgICAgICAg ICB8ICAxMSArLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jICAg ICAgIHwgIDEyICstLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9nLmMgICAg ICAgICAgfCAgMjQgKysrLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d2dC5jICAg ICAgICAgICAgICB8ICAxMiArLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGFuZ2No ZWNrLmMgICAgICAgIHwgICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Yy5j ICAgICAgICAgICAgICB8ICAgNCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMu YyAgICAgICAgICAgICAgfCAgIDggKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHZk cy5jICAgICAgICAgICAgIHwgICA0ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX29w cmVnaW9uLmMgICAgICAgICB8ICAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9w YW5lbC5jICAgICAgICAgICAgfCAgIDggKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cG0uYyAgICAgICAgICAgICAgIHwgICA2ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3Bzci5jICAgICAgICAgICAgICB8ICAxMCArLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcmluZ2J1ZmZlci5jICAgICAgIHwgICA4ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3J1bnRpbWVfcG0uYyAgICAgICB8ICAxNCArKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3VjLmMgICAgICAgICAgICAgICB8ICA1MCArKysrKystLS0tLS0tCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jICAgICAgICAgICB8ICAyMSArKystLS0KPiAgMzkg ZmlsZXMgY2hhbmdlZCwgMjM1IGluc2VydGlvbnMoKyksIDIwOSBkZWxldGlvbnMoLSkKPiAKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3JlbmRlci5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Z0L3JlbmRlci5jCj4gaW5kZXggMmVhNTQyMi4uZDRhOTUxYiAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvcmVuZGVyLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndnQvcmVuZGVyLmMKPiBAQCAtMjkzLDcgKzI5Myw3IEBAIHN0YXRpYyB2 b2lkIHN3aXRjaF9tbWlvX3RvX3ZncHUoc3RydWN0IGludGVsX3ZncHUgKnZncHUsIGludCByaW5n X2lkKQo+ICAJCSAqLwo+ICAJCWlmIChtbWlvLT5pbl9jb250ZXh0ICYmCj4gIAkJCQkoKGN0eF9j dHJsICYgaW5oaWJpdF9tYXNrKSAhPSBpbmhpYml0X21hc2spICYmCj4gLQkJCQlpOTE1LmVuYWJs ZV9leGVjbGlzdHMpCj4gKwkJCQlpOTE1X3BhcmFtcy5lbmFibGVfZXhlY2xpc3RzKQo+ICAJCQlj b250aW51ZTsKPiAgCj4gIAkJaWYgKG1taW8tPm1hc2spCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k ZWJ1Z2ZzLmMKPiBpbmRleCA2MzM4MDE4Li4zMjNmYmYxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kZWJ1Z2ZzLmMKPiBAQCAtNjYsNyArNjYsNyBAQCBzdGF0aWMgaW50IGk5MTVfY2FwYWJp bGl0aWVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiAgI3VuZGVmIFBSSU5UX0ZM QUcKPiAgCj4gIAlrZXJuZWxfcGFyYW1fbG9jayhUSElTX01PRFVMRSk7Cj4gLSNkZWZpbmUgUFJJ TlRfUEFSQU0oVCwgeCkgc2VxX3ByaW50X3BhcmFtKG0sICN4LCAjVCwgJmk5MTUueCk7Cj4gKyNk ZWZpbmUgUFJJTlRfUEFSQU0oVCwgeCkgc2VxX3ByaW50X3BhcmFtKG0sICN4LCAjVCwgJmk5MTVf cGFyYW1zLngpOwo+ICAJSTkxNV9QQVJBTVNfRk9SX0VBQ0goUFJJTlRfUEFSQU0pOwo+ICAjdW5k ZWYgUFJJTlRfUEFSQU0KPiAgCWtlcm5lbF9wYXJhbV91bmxvY2soVEhJU19NT0RVTEUpOwo+IEBA IC0xMjY2LDcgKzEyNjYsNyBAQCBzdGF0aWMgaW50IGk5MTVfaGFuZ2NoZWNrX2luZm8oc3RydWN0 IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4gIAlpZiAod2FpdHF1ZXVlX2FjdGl2ZSgmZGV2 X3ByaXYtPmdwdV9lcnJvci5yZXNldF9xdWV1ZSkpCj4gIAkJc2VxX3B1dHMobSwgInN0cnVjdF9t dXRleCBibG9ja2VkIGZvciByZXNldFxuIik7Cj4gIAo+IC0JaWYgKCFpOTE1LmVuYWJsZV9oYW5n Y2hlY2spIHsKPiArCWlmICghaTkxNV9wYXJhbXMuZW5hYmxlX2hhbmdjaGVjaykgewo+ICAJCXNl cV9wdXRzKG0sICJIYW5nY2hlY2sgZGlzYWJsZWRcbiIpOwo+ICAJCXJldHVybiAwOwo+ICAJfQo+ IEBAIC0xNzAxLDcgKzE3MDEsNyBAQCBzdGF0aWMgaW50IGk5MTVfaXBzX3N0YXR1cyhzdHJ1Y3Qg c2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9w cml2KTsKPiAgCj4gIAlzZXFfcHJpbnRmKG0sICJFbmFibGVkIGJ5IGtlcm5lbCBwYXJhbWV0ZXI6 ICVzXG4iLAo+IC0JCSAgIHllc25vKGk5MTUuZW5hYmxlX2lwcykpOwo+ICsJCSAgIHllc25vKGk5 MTVfcGFyYW1zLmVuYWJsZV9pcHMpKTsKPiAgCj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+ PSA4KSB7Cj4gIAkJc2VxX3B1dHMobSwgIkN1cnJlbnRseTogdW5rbm93blxuIik7Cj4gQEAgLTIw MTYsNyArMjAxNiw3IEBAIHN0YXRpYyBpbnQgaTkxNV9kdW1wX2xyYyhzdHJ1Y3Qgc2VxX2ZpbGUg Km0sIHZvaWQgKnVudXNlZCkKPiAgCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwo+ICAJaW50IHJl dDsKPiAgCj4gLQlpZiAoIWk5MTUuZW5hYmxlX2V4ZWNsaXN0cykgewo+ICsJaWYgKCFpOTE1X3Bh cmFtcy5lbmFibGVfZXhlY2xpc3RzKSB7Cj4gIAkJc2VxX3ByaW50ZihtLCAiTG9naWNhbCBSaW5n IENvbnRleHRzIGFyZSBkaXNhYmxlZFxuIik7Cj4gIAkJcmV0dXJuIDA7Cj4gIAl9Cj4gQEAgLTI1 OTYsNyArMjU5Niw3IEBAIHN0YXRpYyBpbnQgaTkxNV9ndWNfbG9nX2NvbnRyb2xfZ2V0KHZvaWQg KmRhdGEsIHU2NCAqdmFsKQo+ICAJaWYgKCFkZXZfcHJpdi0+Z3VjLmxvZy52bWEpCj4gIAkJcmV0 dXJuIC1FSU5WQUw7Cj4gIAo+IC0JKnZhbCA9IGk5MTUuZ3VjX2xvZ19sZXZlbDsKPiArCSp2YWwg PSBpOTE1X3BhcmFtcy5ndWNfbG9nX2xldmVsOwo+ICAKPiAgCXJldHVybiAwOwo+ICB9Cj4gQEAg LTMzMTQsNyArMzMxNCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9lbmdpbmVfaW5mbyhzdHJ1Y3Qgc2Vx X2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgCQlzZXFfcHJpbnRmKG0sICJcdEJCQUREUjogMHgl MDh4XyUwOHhcbiIsCj4gIAkJCSAgIHVwcGVyXzMyX2JpdHMoYWRkciksIGxvd2VyXzMyX2JpdHMo YWRkcikpOwo+ICAKPiAtCQlpZiAoaTkxNS5lbmFibGVfZXhlY2xpc3RzKSB7Cj4gKwkJaWYgKGk5 MTVfcGFyYW1zLmVuYWJsZV9leGVjbGlzdHMpIHsKPiAgCQkJdTMyIHB0ciwgcmVhZCwgd3JpdGU7 Cj4gIAkJCXVuc2lnbmVkIGludCBpZHg7Cj4gIAo+IEBAIC0zNDA1LDcgKzM0MDUsNyBAQCBzdGF0 aWMgaW50IGk5MTVfc2VtYXBob3JlX3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVu dXNlZCkKPiAgCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwo+ICAJaW50IGosIHJldDsKPiAgCj4g LQlpZiAoIWk5MTUuc2VtYXBob3Jlcykgewo+ICsJaWYgKCFpOTE1X3BhcmFtcy5zZW1hcGhvcmVz KSB7Cj4gIAkJc2VxX3B1dHMobSwgIlNlbWFwaG9yZXMgYXJlIGRpc2FibGVkXG4iKTsKPiAgCQly ZXR1cm4gMDsKPiAgCX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBpbmRleCA1YzExMWVhLi44 Yjk5YWM0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gQEAgLTU4LDEyICs1OCwxMiBA QCBzdGF0aWMgdW5zaWduZWQgaW50IGk5MTVfbG9hZF9mYWlsX2NvdW50Owo+ICAKPiAgYm9vbCBf X2k5MTVfaW5qZWN0X2xvYWRfZmFpbHVyZShjb25zdCBjaGFyICpmdW5jLCBpbnQgbGluZSkKPiAg ewo+IC0JaWYgKGk5MTVfbG9hZF9mYWlsX2NvdW50ID49IGk5MTUuaW5qZWN0X2xvYWRfZmFpbHVy ZSkKPiArCWlmIChpOTE1X2xvYWRfZmFpbF9jb3VudCA+PSBpOTE1X3BhcmFtcy5pbmplY3RfbG9h ZF9mYWlsdXJlKQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gLQlpZiAoKytpOTE1X2xvYWRfZmFp bF9jb3VudCA9PSBpOTE1LmluamVjdF9sb2FkX2ZhaWx1cmUpIHsKPiArCWlmICgrK2k5MTVfbG9h ZF9mYWlsX2NvdW50ID09IGk5MTVfcGFyYW1zLmluamVjdF9sb2FkX2ZhaWx1cmUpIHsKPiAgCQlE Uk1fSU5GTygiSW5qZWN0aW5nIGZhaWx1cmUgYXQgY2hlY2twb2ludCAldSBbJXM6JWRdXG4iLAo+ IC0JCQkgaTkxNS5pbmplY3RfbG9hZF9mYWlsdXJlLCBmdW5jLCBsaW5lKTsKPiArCQkJIGk5MTVf cGFyYW1zLmluamVjdF9sb2FkX2ZhaWx1cmUsIGZ1bmMsIGxpbmUpOwo+ICAJCXJldHVybiB0cnVl Owo+ICAJfQo+ICAKPiBAQCAtMTA2LDggKzEwNiw4IEBAIF9faTkxNV9wcmludGsoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBjb25zdCBjaGFyICpsZXZlbCwKPiAgCj4gIHN0YXRp YyBib29sIGk5MTVfZXJyb3JfaW5qZWN0ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ICB7Cj4gLQlyZXR1cm4gaTkxNS5pbmplY3RfbG9hZF9mYWlsdXJlICYmCj4gLQkgICAg ICAgaTkxNV9sb2FkX2ZhaWxfY291bnQgPT0gaTkxNS5pbmplY3RfbG9hZF9mYWlsdXJlOwo+ICsJ cmV0dXJuIGk5MTVfcGFyYW1zLmluamVjdF9sb2FkX2ZhaWx1cmUgJiYKPiArCSAgICAgICBpOTE1 X2xvYWRfZmFpbF9jb3VudCA9PSBpOTE1X3BhcmFtcy5pbmplY3RfbG9hZF9mYWlsdXJlOwo+ICB9 Cj4gIAo+ICAjZGVmaW5lIGk5MTVfbG9hZF9lcnJvcihkZXZfcHJpdiwgZm10LCAuLi4pCQkJCSAg ICAgXAo+IEBAIC0zMjEsNyArMzIxLDcgQEAgc3RhdGljIGludCBpOTE1X2dldHBhcmFtKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gIAkJdmFsdWUgPSBVU0VTX1BQR1RUKGRl dl9wcml2KTsKPiAgCQlicmVhazsKPiAgCWNhc2UgSTkxNV9QQVJBTV9IQVNfU0VNQVBIT1JFUzoK PiAtCQl2YWx1ZSA9IGk5MTUuc2VtYXBob3JlczsKPiArCQl2YWx1ZSA9IGk5MTVfcGFyYW1zLnNl bWFwaG9yZXM7Cj4gIAkJYnJlYWs7Cj4gIAljYXNlIEk5MTVfUEFSQU1fSEFTX1NFQ1VSRV9CQVRD SEVTOgo+ICAJCXZhbHVlID0gY2FwYWJsZShDQVBfU1lTX0FETUlOKTsKPiBAQCAtMzQwLDcgKzM0 MCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9nZXRwYXJhbShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2 b2lkICpkYXRhLAo+ICAJCQlyZXR1cm4gLUVOT0RFVjsKPiAgCQlicmVhazsKPiAgCWNhc2UgSTkx NV9QQVJBTV9IQVNfR1BVX1JFU0VUOgo+IC0JCXZhbHVlID0gaTkxNS5lbmFibGVfaGFuZ2NoZWNr ICYmIGludGVsX2hhc19ncHVfcmVzZXQoZGV2X3ByaXYpOwo+ICsJCXZhbHVlID0gaTkxNV9wYXJh bXMuZW5hYmxlX2hhbmdjaGVjayAmJiBpbnRlbF9oYXNfZ3B1X3Jlc2V0KGRldl9wcml2KTsKPiAg CQlpZiAodmFsdWUgJiYgaW50ZWxfaGFzX3Jlc2V0X2VuZ2luZShkZXZfcHJpdikpCj4gIAkJCXZh bHVlID0gMjsKPiAgCQlicmVhazsKPiBAQCAtMTAzMSw5ICsxMDMxLDkgQEAgc3RhdGljIHZvaWQg aTkxNV9kcml2ZXJfY2xlYW51cF9tbWlvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiAgCj4gIHN0YXRpYyB2b2lkIGludGVsX3Nhbml0aXplX29wdGlvbnMoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gLQlpOTE1LmVuYWJsZV9leGVjbGlzdHMgPQo+ ICsJaTkxNV9wYXJhbXMuZW5hYmxlX2V4ZWNsaXN0cyA9Cj4gIAkJaW50ZWxfc2FuaXRpemVfZW5h YmxlX2V4ZWNsaXN0cyhkZXZfcHJpdiwKPiAtCQkJCQkJaTkxNS5lbmFibGVfZXhlY2xpc3RzKTsK PiArCQkJCQkJaTkxNV9wYXJhbXMuZW5hYmxlX2V4ZWNsaXN0cyk7Cj4gIAo+ICAJLyoKPiAgCSAq IGk5MTUuZW5hYmxlX3BwZ3R0IGlzIHJlYWQtb25seSwgc28gZG8gYW4gZWFybHkgcGFzcyB0byB2 YWxpZGF0ZSB0aGUKPiBAQCAtMTA0MSwxMiArMTA0MSwxNSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9z YW5pdGl6ZV9vcHRpb25zKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCSAq IGRvIHRoaXMgbm93IHNvIHRoYXQgd2UgY2FuIHByaW50IG91dCBhbnkgbG9nIG1lc3NhZ2VzIG9u Y2UgcmF0aGVyCj4gIAkgKiB0aGFuIGV2ZXJ5IHRpbWUgd2UgY2hlY2sgaW50ZWxfZW5hYmxlX3Bw Z3R0KCkuCj4gIAkgKi8KPiAtCWk5MTUuZW5hYmxlX3BwZ3R0ID0KPiAtCQlpbnRlbF9zYW5pdGl6 ZV9lbmFibGVfcHBndHQoZGV2X3ByaXYsIGk5MTUuZW5hYmxlX3BwZ3R0KTsKPiAtCURSTV9ERUJV R19EUklWRVIoInBwZ3R0IG1vZGU6ICVpXG4iLCBpOTE1LmVuYWJsZV9wcGd0dCk7Cj4gKwlpOTE1 X3BhcmFtcy5lbmFibGVfcHBndHQgPQo+ICsJCWludGVsX3Nhbml0aXplX2VuYWJsZV9wcGd0dChk ZXZfcHJpdiwKPiArCQkJCQkgICAgaTkxNV9wYXJhbXMuZW5hYmxlX3BwZ3R0KTsKPiArCURSTV9E RUJVR19EUklWRVIoInBwZ3R0IG1vZGU6ICVpXG4iLCBpOTE1X3BhcmFtcy5lbmFibGVfcHBndHQp Owo+ICAKPiAtCWk5MTUuc2VtYXBob3JlcyA9IGludGVsX3Nhbml0aXplX3NlbWFwaG9yZXMoZGV2 X3ByaXYsIGk5MTUuc2VtYXBob3Jlcyk7Cj4gLQlEUk1fREVCVUdfRFJJVkVSKCJ1c2UgR1BVIHNl bWFwaG9yZXM/ICVzXG4iLCB5ZXNubyhpOTE1LnNlbWFwaG9yZXMpKTsKPiArCWk5MTVfcGFyYW1z LnNlbWFwaG9yZXMgPSBpbnRlbF9zYW5pdGl6ZV9zZW1hcGhvcmVzKGRldl9wcml2LAo+ICsJCQkJ CQkJICAgaTkxNV9wYXJhbXMuc2VtYXBob3Jlcyk7Cj4gKwlEUk1fREVCVUdfRFJJVkVSKCJ1c2Ug R1BVIHNlbWFwaG9yZXM/ICVzXG4iLAo+ICsJCQkgeWVzbm8oaTkxNV9wYXJhbXMuc2VtYXBob3Jl cykpOwo+ICAKPiAgCWludGVsX3VjX3Nhbml0aXplX29wdGlvbnMoZGV2X3ByaXYpOwo+ICAKPiBA QCAtMTI3Nyw3ICsxMjgwLDcgQEAgaW50IGk5MTVfZHJpdmVyX2xvYWQoc3RydWN0IHBjaV9kZXYg KnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpCj4gIAlpbnQgcmV0Owo+ICAK PiAgCS8qIEVuYWJsZSBudWNsZWFyIHBhZ2VmbGlwIG9uIElMSysgKi8KPiAtCWlmICghaTkxNS5u dWNsZWFyX3BhZ2VmbGlwICYmIG1hdGNoX2luZm8tPmdlbiA8IDUpCj4gKwlpZiAoIWk5MTVfcGFy YW1zLm51Y2xlYXJfcGFnZWZsaXAgJiYgbWF0Y2hfaW5mby0+Z2VuIDwgNSkKPiAgCQlkcml2ZXIu ZHJpdmVyX2ZlYXR1cmVzICY9IH5EUklWRVJfQVRPTUlDOwo+ICAKPiAgCXJldCA9IC1FTk9NRU07 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggMWNjMzFhNS4uMDhiYzJjNCAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC05Myw3ICs5Myw3IEBACj4gICNkZWZpbmUgSTkx NV9TVEFURV9XQVJOKGNvbmRpdGlvbiwgZm9ybWF0Li4uKSAoewkJCVwKPiAgCWludCBfX3JldF93 YXJuX29uID0gISEoY29uZGl0aW9uKTsJCQkJXAo+ICAJaWYgKHVubGlrZWx5KF9fcmV0X3dhcm5f b24pKQkJCQkJXAo+IC0JCWlmICghV0FSTihpOTE1LnZlcmJvc2Vfc3RhdGVfY2hlY2tzLCBmb3Jt YXQpKQkJXAo+ICsJCWlmICghV0FSTihpOTE1X3BhcmFtcy52ZXJib3NlX3N0YXRlX2NoZWNrcywg Zm9ybWF0KSkJXAo+ICAJCQlEUk1fRVJST1IoZm9ybWF0KTsJCQkJXAo+ICAJdW5saWtlbHkoX19y ZXRfd2Fybl9vbik7CQkJCQlcCj4gIH0pCj4gQEAgLTMwNzQsOSArMzA3NCw5IEBAIGludGVsX2lu Zm8oY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAKPiAgI2RlZmlu ZSBIQVNfTE9HSUNBTF9SSU5HX0NPTlRFWFRTKGRldl9wcml2KSBcCj4gIAkJKChkZXZfcHJpdikt PmluZm8uaGFzX2xvZ2ljYWxfcmluZ19jb250ZXh0cykKPiAtI2RlZmluZSBVU0VTX1BQR1RUKGRl dl9wcml2KQkJKGk5MTUuZW5hYmxlX3BwZ3R0KQo+IC0jZGVmaW5lIFVTRVNfRlVMTF9QUEdUVChk ZXZfcHJpdikJKGk5MTUuZW5hYmxlX3BwZ3R0ID49IDIpCj4gLSNkZWZpbmUgVVNFU19GVUxMXzQ4 QklUX1BQR1RUKGRldl9wcml2KQkoaTkxNS5lbmFibGVfcHBndHQgPT0gMykKPiArI2RlZmluZSBV U0VTX1BQR1RUKGRldl9wcml2KQkJKGk5MTVfcGFyYW1zLmVuYWJsZV9wcGd0dCkKPiArI2RlZmlu ZSBVU0VTX0ZVTExfUFBHVFQoZGV2X3ByaXYpCShpOTE1X3BhcmFtcy5lbmFibGVfcHBndHQgPj0g MikKPiArI2RlZmluZSBVU0VTX0ZVTExfNDhCSVRfUFBHVFQoZGV2X3ByaXYpCShpOTE1X3BhcmFt cy5lbmFibGVfcHBndHQgPT0gMykKPiAgCj4gICNkZWZpbmUgSEFTX09WRVJMQVkoZGV2X3ByaXYp CQkgKChkZXZfcHJpdiktPmluZm8uaGFzX292ZXJsYXkpCj4gICNkZWZpbmUgT1ZFUkxBWV9ORUVE U19QSFlTSUNBTChkZXZfcHJpdikgXAo+IEBAIC0zMjc0LDcgKzMyNzQsNyBAQCBzdGF0aWMgaW5s aW5lIHZvaWQgaTkxNV9xdWV1ZV9oYW5nY2hlY2soc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQo+ICB7Cj4gIAl1bnNpZ25lZCBsb25nIGRlbGF5Owo+ICAKPiAtCWlmICh1bmxpa2Vs eSghaTkxNS5lbmFibGVfaGFuZ2NoZWNrKSkKPiArCWlmICh1bmxpa2VseSghaTkxNV9wYXJhbXMu ZW5hYmxlX2hhbmdjaGVjaykpCj4gIAkJcmV0dXJuOwo+ICAKPiAgCS8qIERvbid0IGNvbnRpbnVh bGx5IGRlZmVyIHRoZSBoYW5nY2hlY2sgc28gdGhhdCBpdCBpcyBhbHdheXMgcnVuIGF0Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbS5jCj4gaW5kZXggZjQ0NTU4Ny4uYzFmMTJlOCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYwo+IEBAIC0zMDQ2LDcgKzMwNDYsNyBAQCBzdGF0aWMgdm9pZCBlbmdp bmVfc2V0X3dlZGdlZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gIAkgKiBwaW5u ZWQgaW4gcGxhY2UuCj4gIAkgKi8KPiAgCj4gLQlpZiAoaTkxNS5lbmFibGVfZXhlY2xpc3RzKSB7 Cj4gKwlpZiAoaTkxNV9wYXJhbXMuZW5hYmxlX2V4ZWNsaXN0cykgewo+ICAJCXN0cnVjdCBleGVj bGlzdF9wb3J0ICpwb3J0ID0gZW5naW5lLT5leGVjbGlzdF9wb3J0Owo+ICAJCXVuc2lnbmVkIGxv bmcgZmxhZ3M7Cj4gIAkJdW5zaWduZWQgaW50IG47Cj4gQEAgLTQ3NzQsNyArNDc3NCw3IEBAIGJv b2wgaW50ZWxfc2FuaXRpemVfc2VtYXBob3JlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsIGludCB2YWx1ZSkKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAo+ICAJLyogVE9ETzogbWFr ZSBzZW1hcGhvcmVzIGFuZCBFeGVjbGlzdHMgcGxheSBuaWNlbHkgdG9nZXRoZXIgKi8KPiAtCWlm IChpOTE1LmVuYWJsZV9leGVjbGlzdHMpCj4gKwlpZiAoaTkxNV9wYXJhbXMuZW5hYmxlX2V4ZWNs aXN0cykKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAo+ICAJaWYgKHZhbHVlID49IDApCj4gQEAgLTQ3 OTUsNyArNDc5NSw3IEBAIGludCBpOTE1X2dlbV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiAgCj4gIAlkZXZfcHJpdi0+bW0udW5vcmRlcmVkX3RpbWVsaW5lID0gZG1h X2ZlbmNlX2NvbnRleHRfYWxsb2MoMSk7Cj4gIAo+IC0JaWYgKCFpOTE1LmVuYWJsZV9leGVjbGlz dHMpIHsKPiArCWlmICghaTkxNV9wYXJhbXMuZW5hYmxlX2V4ZWNsaXN0cykgewo+ICAJCWRldl9w cml2LT5ndC5yZXN1bWUgPSBpbnRlbF9sZWdhY3lfc3VibWlzc2lvbl9yZXN1bWU7Cj4gIAkJZGV2 X3ByaXYtPmd0LmNsZWFudXBfZW5naW5lID0gaW50ZWxfZW5naW5lX2NsZWFudXA7Cj4gIAl9IGVs c2Ugewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiBpbmRleCA1OGEy YTQ0Li5jZTk3NjE1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2NvbnRleHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQu Ywo+IEBAIC0zMTQsNyArMzE0LDcgQEAgX19jcmVhdGVfaHdfY29udGV4dChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkgKiBwcmVzZW50IG9yIG5vdCBpbiB1c2Ugd2Ugc3Rp bGwgbmVlZCBhIHNtYWxsIGJpYXMgYXMgcmluZyB3cmFwYXJvdW5kCj4gIAkgKiBhdCBvZmZzZXQg MCBzb21ldGltZXMgaGFuZ3MuIE5vIGlkZWEgd2h5Lgo+ICAJICovCj4gLQlpZiAoSEFTX0dVQyhk ZXZfcHJpdikgJiYgaTkxNS5lbmFibGVfZ3VjX2xvYWRpbmcpCj4gKwlpZiAoSEFTX0dVQyhkZXZf cHJpdikgJiYgaTkxNV9wYXJhbXMuZW5hYmxlX2d1Y19sb2FkaW5nKQo+ICAJCWN0eC0+Z2d0dF9v ZmZzZXRfYmlhcyA9IEdVQ19XT1BDTV9UT1A7Cj4gIAllbHNlCj4gIAkJY3R4LT5nZ3R0X29mZnNl dF9iaWFzID0gSTkxNV9HVFRfUEFHRV9TSVpFOwo+IEBAIC00MDcsNyArNDA3LDcgQEAgaTkxNV9n ZW1fY29udGV4dF9jcmVhdGVfZ3Z0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAlpOTE1X2dl bV9jb250ZXh0X3NldF9jbG9zZWQoY3R4KTsgLyogbm90IHVzZXIgYWNjZXNzaWJsZSAqLwo+ICAJ aTkxNV9nZW1fY29udGV4dF9jbGVhcl9iYW5uYWJsZShjdHgpOwo+ICAJaTkxNV9nZW1fY29udGV4 dF9zZXRfZm9yY2Vfc2luZ2xlX3N1Ym1pc3Npb24oY3R4KTsKPiAtCWlmICghaTkxNS5lbmFibGVf Z3VjX3N1Ym1pc3Npb24pCj4gKwlpZiAoIWk5MTVfcGFyYW1zLmVuYWJsZV9ndWNfc3VibWlzc2lv bikKPiAgCQljdHgtPnJpbmdfc2l6ZSA9IDUxMiAqIFBBR0VfU0laRTsgLyogTWF4IHJpbmcgYnVm ZmVyIHNpemUgKi8KPiAgCj4gIAlHRU1fQlVHX09OKGk5MTVfZ2VtX2NvbnRleHRfaXNfa2VybmVs KGN0eCkpOwo+IEBAIC00MzEsNyArNDMxLDcgQEAgaW50IGk5MTVfZ2VtX2NvbnRleHRzX2luaXQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAKPiAgCWlmIChpbnRlbF92Z3B1 X2FjdGl2ZShkZXZfcHJpdikgJiYKPiAgCSAgICBIQVNfTE9HSUNBTF9SSU5HX0NPTlRFWFRTKGRl dl9wcml2KSkgewo+IC0JCWlmICghaTkxNS5lbmFibGVfZXhlY2xpc3RzKSB7Cj4gKwkJaWYgKCFp OTE1X3BhcmFtcy5lbmFibGVfZXhlY2xpc3RzKSB7Cj4gIAkJCURSTV9JTkZPKCJPbmx5IEVYRUNM SVNUIG1vZGUgaXMgc3VwcG9ydGVkIGluIHZncHUuXG4iKTsKPiAgCQkJcmV0dXJuIC1FSU5WQUw7 Cj4gIAkJfQo+IEBAIC00ODMsNyArNDgzLDcgQEAgdm9pZCBpOTE1X2dlbV9jb250ZXh0c19sb3N0 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCX0KPiAgCj4gIAkvKiBGb3Jj ZSB0aGUgR1BVIHN0YXRlIHRvIGJlIHJlc3RvcmVkIG9uIGVuYWJsaW5nICovCj4gLQlpZiAoIWk5 MTUuZW5hYmxlX2V4ZWNsaXN0cykgewo+ICsJaWYgKCFpOTE1X3BhcmFtcy5lbmFibGVfZXhlY2xp c3RzKSB7Cj4gIAkJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKPiAgCj4gIAkJbGlzdF9m b3JfZWFjaF9lbnRyeShjdHgsICZkZXZfcHJpdi0+Y29udGV4dHMubGlzdCwgbGluaykgewo+IEBA IC01NjgsNyArNTY4LDcgQEAgbWlfc2V0X2NvbnRleHQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXEsIHUzMiBmbGFncykKPiAgCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwo+ICAJY29u c3QgaW50IG51bV9yaW5ncyA9Cj4gIAkJLyogVXNlIGFuIGV4dGVuZGVkIHcvYSBvbiBnZW43IGlm IHNpZ25hbGxpbmcgZnJvbSBvdGhlciByaW5ncyAqLwo+IC0JCShpOTE1LnNlbWFwaG9yZXMgJiYg SU5URUxfR0VOKGRldl9wcml2KSA9PSA3KSA/Cj4gKwkJKGk5MTVfcGFyYW1zLnNlbWFwaG9yZXMg JiYgSU5URUxfR0VOKGRldl9wcml2KSA9PSA3KSA/Cj4gIAkJSU5URUxfSU5GTyhkZXZfcHJpdikt Pm51bV9yaW5ncyAtIDEgOgo+ICAJCTA7Cj4gIAlpbnQgbGVuOwo+IEBAIC04MzcsNyArODM3LDcg QEAgaW50IGk5MTVfc3dpdGNoX2NvbnRleHQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXEpCj4gIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSByZXEtPmVuZ2luZTsKPiAg Cj4gIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZyZXEtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ IC0JaWYgKGk5MTUuZW5hYmxlX2V4ZWNsaXN0cykKPiArCWlmIChpOTE1X3BhcmFtcy5lbmFibGVf ZXhlY2xpc3RzKQo+ICAJCXJldHVybiAwOwo+ICAKPiAgCWlmICghcmVxLT5jdHgtPmVuZ2luZVtl bmdpbmUtPmlkXS5zdGF0ZSkgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9leGVjYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVj YnVmZmVyLmMKPiBpbmRleCA3Njg3NDgzLi44MmQ4M2NmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+IEBAIC0xNTg3LDcgKzE1ODcsNyBAQCBzdGF0 aWMgaW50IGViX3ByZWZhdWx0X3JlbG9jYXRpb25zKGNvbnN0IHN0cnVjdCBpOTE1X2V4ZWNidWZm ZXIgKmViKQo+ICAJY29uc3QgdW5zaWduZWQgaW50IGNvdW50ID0gZWItPmJ1ZmZlcl9jb3VudDsK PiAgCXVuc2lnbmVkIGludCBpOwo+ICAKPiAtCWlmICh1bmxpa2VseShpOTE1LnByZWZhdWx0X2Rp c2FibGUpKQo+ICsJaWYgKHVubGlrZWx5KGk5MTVfcGFyYW1zLnByZWZhdWx0X2Rpc2FibGUpKQo+ ICAJCXJldHVybiAwOwo+ICAKPiAgCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiBpbmRleCAwOWU1MjRkLi44ZjZmODA1IDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiBAQCAtMTgwLDcgKzE4MCw3IEBAIGlu dCBpbnRlbF9zYW5pdGl6ZV9lbmFibGVfcHBndHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+ICAJCXJldHVybiAwOwo+ICAJfQo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3By aXYpID49IDggJiYgaTkxNS5lbmFibGVfZXhlY2xpc3RzKSB7Cj4gKwlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+PSA4ICYmIGk5MTVfcGFyYW1zLmVuYWJsZV9leGVjbGlzdHMpIHsKPiAgCQlpZiAo aGFzX2Z1bGxfNDhiaXRfcHBndHQpCj4gIAkJCXJldHVybiAzOwo+ICAKPiBAQCAtMTk3Miw3ICsx OTcyLDcgQEAgaW50IGk5MTVfcHBndHRfaW5pdF9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCj4gIAkvKiBJbiB0aGUgY2FzZSBvZiBleGVjbGlzdHMsIFBQR1RUIGlzIGVuYWJs ZWQgYnkgdGhlIGNvbnRleHQgZGVzY3JpcHRvcgo+ICAJICogYW5kIHRoZSBQRFBzIGFyZSBjb250 YWluZWQgd2l0aGluIHRoZSBjb250ZXh0IGl0c2VsZi4gIFdlIGRvbid0Cj4gIAkgKiBuZWVkIHRv IGRvIGFueXRoaW5nIGhlcmUuICovCj4gLQlpZiAoaTkxNS5lbmFibGVfZXhlY2xpc3RzKQo+ICsJ aWYgKGk5MTVfcGFyYW1zLmVuYWJsZV9leGVjbGlzdHMpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+ICAJ aWYgKCFVU0VTX1BQR1RUKGRldl9wcml2KSkKPiBAQCAtMzEwMiw3ICszMTAyLDcgQEAgaW50IGk5 MTVfZ2d0dF9wcm9iZV9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkg KiBjdXJyZW50bHkgZG9uJ3QgaGF2ZSBhbnkgYml0cyBzcGFyZSB0byBwYXNzIGluIHRoaXMgdXBw ZXIKPiAgCSAqIHJlc3RyaWN0aW9uIQo+ICAJICovCj4gLQlpZiAoSEFTX0dVQyhkZXZfcHJpdikg JiYgaTkxNS5lbmFibGVfZ3VjX2xvYWRpbmcpIHsKPiArCWlmIChIQVNfR1VDKGRldl9wcml2KSAm JiBpOTE1X3BhcmFtcy5lbmFibGVfZ3VjX2xvYWRpbmcpIHsKPiAgCQlnZ3R0LT5iYXNlLnRvdGFs ID0gbWluX3QodTY0LCBnZ3R0LT5iYXNlLnRvdGFsLCBHVUNfR0dUVF9UT1ApOwo+ICAJCWdndHQt Pm1hcHBhYmxlX2VuZCA9IG1pbihnZ3R0LT5tYXBwYWJsZV9lbmQsIGdndHQtPmJhc2UudG90YWwp Owo+ICAJfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJv ci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwo+IGluZGV4IGVkNWEx ZWIuLmEwZWZlMDQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVf ZXJyb3IuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKPiBA QCAtMTU1NCw3ICsxNTU0LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1fY2FwdHVyZV9ndWNfbG9n X2J1ZmZlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCQkJICAgIHN0 cnVjdCBpOTE1X2dwdV9zdGF0ZSAqZXJyb3IpCj4gIHsKPiAgCS8qIENhcHR1cmluZyBsb2cgYnVm IGNvbnRlbnRzIHdvbid0IGJlIHVzZWZ1bCBpZiBsb2dnaW5nIHdhcyBkaXNhYmxlZCAqLwo+IC0J aWYgKCFkZXZfcHJpdi0+Z3VjLmxvZy52bWEgfHwgKGk5MTUuZ3VjX2xvZ19sZXZlbCA8IDApKQo+ ICsJaWYgKCFkZXZfcHJpdi0+Z3VjLmxvZy52bWEgfHwgKGk5MTVfcGFyYW1zLmd1Y19sb2dfbGV2 ZWwgPCAwKSkKPiAgCQlyZXR1cm47Cj4gIAo+ICAJZXJyb3ItPmd1Y19sb2cgPSBpOTE1X2Vycm9y X29iamVjdF9jcmVhdGUoZGV2X3ByaXYsCj4gQEAgLTE2OTYsNyArMTY5Niw3IEBAIHN0YXRpYyBp bnQgY2FwdHVyZSh2b2lkICpkYXRhKQo+ICAJCWt0aW1lX3RvX3RpbWV2YWwoa3RpbWVfc3ViKGt0 aW1lX2dldCgpLAo+ICAJCQkJCSAgIGVycm9yLT5pOTE1LT5ndC5sYXN0X2luaXRfdGltZSkpOwo+ ICAKPiAtCWVycm9yLT5wYXJhbXMgPSBpOTE1Owo+ICsJZXJyb3ItPnBhcmFtcyA9IGk5MTVfcGFy YW1zOwo+ICAjZGVmaW5lIERVUChULCB4KSBkdXBfcGFyYW0oI1QsICZlcnJvci0+cGFyYW1zLngp Owo+ICAJSTkxNV9QQVJBTVNfRk9SX0VBQ0goRFVQKTsKPiAgI3VuZGVmIERVUAo+IEBAIC0xNzUx LDcgKzE3NTEsNyBAQCB2b2lkIGk5MTVfY2FwdHVyZV9lcnJvcl9zdGF0ZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAlzdHJ1Y3QgaTkxNV9ncHVfc3RhdGUgKmVycm9yOwo+ ICAJdW5zaWduZWQgbG9uZyBmbGFnczsKPiAgCj4gLQlpZiAoIWk5MTUuZXJyb3JfY2FwdHVyZSkK PiArCWlmICghaTkxNV9wYXJhbXMuZXJyb3JfY2FwdHVyZSkKPiAgCQlyZXR1cm47Cj4gIAo+ICAJ aWYgKFJFQURfT05DRShkZXZfcHJpdi0+Z3B1X2Vycm9yLmZpcnN0X2Vycm9yKSkKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCj4gaW5kZXggNDhhMWU5My4uM2Uy YzY0NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNz aW9uLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMK PiBAQCAtMTMyOCw3ICsxMzI4LDcgQEAgaW50IGludGVsX2d1Y19yZXN1bWUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJaWYgKGd1Yy0+ZncubG9hZF9zdGF0dXMgIT0gSU5U RUxfVUNfRklSTVdBUkVfU1VDQ0VTUykKPiAgCQlyZXR1cm4gMDsKPiAgCj4gLQlpZiAoaTkxNS5n dWNfbG9nX2xldmVsID49IDApCj4gKwlpZiAoaTkxNV9wYXJhbXMuZ3VjX2xvZ19sZXZlbCA+PSAw KQo+ICAJCWdlbjlfZW5hYmxlX2d1Y19pbnRlcnJ1cHRzKGRldl9wcml2KTsKPiAgCj4gIAljdHgg PSBkZXZfcHJpdi0+a2VybmVsX2NvbnRleHQ7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfaXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gaW5k ZXggNWQzOTFlNi4uM2VkMDQ5ZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2lycS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+IEBAIC0x MzE5LDcgKzEzMTksNyBAQCBnZW44X2NzX2lycV9oYW5kbGVyKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSwgdTMyIGlpciwgaW50IHRlc3Rfc2hpZnQpCj4gIAo+ICAJaWYgKGlpciAmIChH VF9SRU5ERVJfVVNFUl9JTlRFUlJVUFQgPDwgdGVzdF9zaGlmdCkpIHsKPiAgCQlub3RpZnlfcmlu ZyhlbmdpbmUpOwo+IC0JCXRhc2tsZXQgfD0gaTkxNS5lbmFibGVfZ3VjX3N1Ym1pc3Npb247Cj4g KwkJdGFza2xldCB8PSBpOTE1X3BhcmFtcy5lbmFibGVfZ3VjX3N1Ym1pc3Npb247Cj4gIAl9Cj4g IAo+ICAJaWYgKHRhc2tsZXQpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcGFyYW1zLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BhcmFtcy5jCj4gaW5kZXgg OGFiMDAzZC4uZTI2YmMxMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3BhcmFtcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wYXJhbXMuYwo+IEBA IC0yNSw3ICsyNSw3IEBACj4gICNpbmNsdWRlICJpOTE1X3BhcmFtcy5oIgo+ICAjaW5jbHVkZSAi aTkxNV9kcnYuaCIKPiAgCj4gLXN0cnVjdCBpOTE1X3BhcmFtcyBpOTE1IF9fcmVhZF9tb3N0bHkg PSB7Cj4gK3N0cnVjdCBpOTE1X3BhcmFtcyBpOTE1X3BhcmFtcyBfX3JlYWRfbW9zdGx5ID0gewo+ ICAJLm1vZGVzZXQgPSAtMSwKPiAgCS5wYW5lbF9pZ25vcmVfbGlkID0gMSwKPiAgCS5zZW1hcGhv cmVzID0gLTEsCj4gQEAgLTY3LDIyICs2NywyMyBAQCBzdHJ1Y3QgaTkxNV9wYXJhbXMgaTkxNSBf X3JlYWRfbW9zdGx5ID0gewo+ICAJLmVuYWJsZV9ndnQgPSBmYWxzZSwKPiAgfTsKPiAgCj4gLW1v ZHVsZV9wYXJhbV9uYW1lZChtb2Rlc2V0LCBpOTE1Lm1vZGVzZXQsIGludCwgMDQwMCk7Cj4gK21v ZHVsZV9wYXJhbV9uYW1lZChtb2Rlc2V0LCBpOTE1X3BhcmFtcy5tb2Rlc2V0LCBpbnQsIDA0MDAp Owo+ICBNT0RVTEVfUEFSTV9ERVNDKG1vZGVzZXQsCj4gIAkiVXNlIGtlcm5lbCBtb2Rlc2V0dGlu ZyBbS01TXSAoMD1kaXNhYmxlLCAiCj4gIAkiMT1vbiwgLTE9Zm9yY2UgdmdhIGNvbnNvbGUgcHJl ZmVyZW5jZSBbZGVmYXVsdF0pIik7Cj4gIAo+IC1tb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKHBh bmVsX2lnbm9yZV9saWQsIGk5MTUucGFuZWxfaWdub3JlX2xpZCwgaW50LCAwNjAwKTsKPiArbW9k dWxlX3BhcmFtX25hbWVkX3Vuc2FmZShwYW5lbF9pZ25vcmVfbGlkLCBpOTE1X3BhcmFtcy5wYW5l bF9pZ25vcmVfbGlkLCBpbnQsCj4gKwkJCSAgMDYwMCk7Cj4gIE1PRFVMRV9QQVJNX0RFU0MocGFu ZWxfaWdub3JlX2xpZCwKPiAgCSJPdmVycmlkZSBsaWQgc3RhdHVzICgwPWF1dG9kZXRlY3QsIDE9 YXV0b2RldGVjdCBkaXNhYmxlZCBbZGVmYXVsdF0sICIKPiAgCSItMT1mb3JjZSBsaWQgY2xvc2Vk LCAtMj1mb3JjZSBsaWQgb3BlbikiKTsKPiAgCj4gLW1vZHVsZV9wYXJhbV9uYW1lZF91bnNhZmUo c2VtYXBob3JlcywgaTkxNS5zZW1hcGhvcmVzLCBpbnQsIDA0MDApOwo+ICttb2R1bGVfcGFyYW1f bmFtZWRfdW5zYWZlKHNlbWFwaG9yZXMsIGk5MTVfcGFyYW1zLnNlbWFwaG9yZXMsIGludCwgMDQw MCk7Cj4gIE1PRFVMRV9QQVJNX0RFU0Moc2VtYXBob3JlcywKPiAgCSJVc2Ugc2VtYXBob3JlcyBm b3IgaW50ZXItcmluZyBzeW5jICIKPiAgCSIoZGVmYXVsdDogLTEgKHVzZSBwZXItY2hpcCBkZWZh dWx0cykpIik7Cj4gIAo+IC1tb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKGVuYWJsZV9yYzYsIGk5 MTUuZW5hYmxlX3JjNiwgaW50LCAwNDAwKTsKPiArbW9kdWxlX3BhcmFtX25hbWVkX3Vuc2FmZShl bmFibGVfcmM2LCBpOTE1X3BhcmFtcy5lbmFibGVfcmM2LCBpbnQsIDA0MDApOwo+ICBNT0RVTEVf UEFSTV9ERVNDKGVuYWJsZV9yYzYsCj4gIAkiRW5hYmxlIHBvd2VyLXNhdmluZyByZW5kZXIgQy1z dGF0ZSA2LiAiCj4gIAkiRGlmZmVyZW50IHN0YWdlcyBjYW4gYmUgc2VsZWN0ZWQgdmlhIGJpdG1h c2sgdmFsdWVzICIKPiBAQCAtOTAsMTAwICs5MSwxMTAgQEAgTU9EVUxFX1BBUk1fREVTQyhlbmFi bGVfcmM2LAo+ICAJIkZvciBleGFtcGxlLCAzIHdvdWxkIGVuYWJsZSByYzYgYW5kIGRlZXAgcmM2 LCBhbmQgNyB3b3VsZCBlbmFibGUgZXZlcnl0aGluZy4gIgo+ICAJImRlZmF1bHQ6IC0xICh1c2Ug cGVyLWNoaXAgZGVmYXVsdCkiKTsKPiAgCj4gLW1vZHVsZV9wYXJhbV9uYW1lZF91bnNhZmUoZW5h YmxlX2RjLCBpOTE1LmVuYWJsZV9kYywgaW50LCAwNDAwKTsKPiArbW9kdWxlX3BhcmFtX25hbWVk X3Vuc2FmZShlbmFibGVfZGMsIGk5MTVfcGFyYW1zLmVuYWJsZV9kYywgaW50LCAwNDAwKTsKPiAg TU9EVUxFX1BBUk1fREVTQyhlbmFibGVfZGMsCj4gIAkiRW5hYmxlIHBvd2VyLXNhdmluZyBkaXNw bGF5IEMtc3RhdGVzLiAiCj4gIAkiKC0xPWF1dG8gW2RlZmF1bHRdOyAwPWRpc2FibGU7IDE9dXAg dG8gREM1OyAyPXVwIHRvIERDNikiKTsKPiAgCj4gLW1vZHVsZV9wYXJhbV9uYW1lZF91bnNhZmUo ZW5hYmxlX2ZiYywgaTkxNS5lbmFibGVfZmJjLCBpbnQsIDA2MDApOwo+ICttb2R1bGVfcGFyYW1f bmFtZWRfdW5zYWZlKGVuYWJsZV9mYmMsIGk5MTVfcGFyYW1zLmVuYWJsZV9mYmMsIGludCwgMDYw MCk7Cj4gIE1PRFVMRV9QQVJNX0RFU0MoZW5hYmxlX2ZiYywKPiAgCSJFbmFibGUgZnJhbWUgYnVm ZmVyIGNvbXByZXNzaW9uIGZvciBwb3dlciBzYXZpbmdzICIKPiAgCSIoZGVmYXVsdDogLTEgKHVz ZSBwZXItY2hpcCBkZWZhdWx0KSkiKTsKPiAgCj4gLW1vZHVsZV9wYXJhbV9uYW1lZF91bnNhZmUo bHZkc19jaGFubmVsX21vZGUsIGk5MTUubHZkc19jaGFubmVsX21vZGUsIGludCwgMDQwMCk7Cj4g K21vZHVsZV9wYXJhbV9uYW1lZF91bnNhZmUobHZkc19jaGFubmVsX21vZGUsIGk5MTVfcGFyYW1z Lmx2ZHNfY2hhbm5lbF9tb2RlLAo+ICsJCQkgIGludCwgMDQwMCk7Cj4gIE1PRFVMRV9QQVJNX0RF U0MobHZkc19jaGFubmVsX21vZGUsCj4gIAkgIlNwZWNpZnkgTFZEUyBjaGFubmVsIG1vZGUgIgo+ ICAJICIoMD1wcm9iZSBCSU9TIFtkZWZhdWx0XSwgMT1zaW5nbGUtY2hhbm5lbCwgMj1kdWFsLWNo YW5uZWwpIik7Cj4gIAo+IC1tb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKGx2ZHNfdXNlX3NzYywg aTkxNS5wYW5lbF91c2Vfc3NjLCBpbnQsIDA2MDApOwo+ICttb2R1bGVfcGFyYW1fbmFtZWRfdW5z YWZlKGx2ZHNfdXNlX3NzYywgaTkxNV9wYXJhbXMucGFuZWxfdXNlX3NzYywgaW50LCAwNjAwKTsK PiAgTU9EVUxFX1BBUk1fREVTQyhsdmRzX3VzZV9zc2MsCj4gIAkiVXNlIFNwcmVhZCBTcGVjdHJ1 bSBDbG9jayB3aXRoIHBhbmVscyBbTFZEUy9lRFBdICIKPiAgCSIoZGVmYXVsdDogYXV0byBmcm9t IFZCVCkiKTsKPiAgCj4gLW1vZHVsZV9wYXJhbV9uYW1lZF91bnNhZmUodmJ0X3Nkdm9fcGFuZWxf dHlwZSwgaTkxNS52YnRfc2R2b19wYW5lbF90eXBlLCBpbnQsIDA0MDApOwo+ICttb2R1bGVfcGFy YW1fbmFtZWRfdW5zYWZlKHZidF9zZHZvX3BhbmVsX3R5cGUsCj4gKwkJCSAgaTkxNV9wYXJhbXMu dmJ0X3Nkdm9fcGFuZWxfdHlwZSwgaW50LCAwNDAwKTsKPiAgTU9EVUxFX1BBUk1fREVTQyh2YnRf c2R2b19wYW5lbF90eXBlLAo+ICAJIk92ZXJyaWRlL0lnbm9yZSBzZWxlY3Rpb24gb2YgU0RWTyBw YW5lbCBtb2RlIGluIHRoZSBWQlQgIgo+ICAJIigtMj1pZ25vcmUsIC0xPWF1dG8gW2RlZmF1bHRd LCBpbmRleCBpbiBWQlQgQklPUyB0YWJsZSkiKTsKPiAgCj4gLW1vZHVsZV9wYXJhbV9uYW1lZF91 bnNhZmUocmVzZXQsIGk5MTUucmVzZXQsIGludCwgMDYwMCk7Cj4gK21vZHVsZV9wYXJhbV9uYW1l ZF91bnNhZmUocmVzZXQsIGk5MTVfcGFyYW1zLnJlc2V0LCBpbnQsIDA2MDApOwo+ICBNT0RVTEVf UEFSTV9ERVNDKHJlc2V0LCAiQXR0ZW1wdCBHUFUgcmVzZXRzICgwPWRpc2FibGVkLCAxPWZ1bGwg Z3B1IHJlc2V0LCAyPWVuZ2luZSByZXNldCBbZGVmYXVsdF0pIik7Cj4gIAo+IC1tb2R1bGVfcGFy YW1fbmFtZWRfdW5zYWZlKHZidF9maXJtd2FyZSwgaTkxNS52YnRfZmlybXdhcmUsIGNoYXJwLCAw NDAwKTsKPiArbW9kdWxlX3BhcmFtX25hbWVkX3Vuc2FmZSh2YnRfZmlybXdhcmUsIGk5MTVfcGFy YW1zLnZidF9maXJtd2FyZSwgY2hhcnAsIDA0MDApOwo+ICBNT0RVTEVfUEFSTV9ERVNDKHZidF9m aXJtd2FyZSwKPiAgCQkgIkxvYWQgVkJUIGZyb20gc3BlY2lmaWVkIGZpbGUgdW5kZXIgL2xpYi9m aXJtd2FyZSIpOwo+ICAKPiAgI2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0NBUFRVUkVf RVJST1IpCj4gLW1vZHVsZV9wYXJhbV9uYW1lZChlcnJvcl9jYXB0dXJlLCBpOTE1LmVycm9yX2Nh cHR1cmUsIGJvb2wsIDA2MDApOwo+ICttb2R1bGVfcGFyYW1fbmFtZWQoZXJyb3JfY2FwdHVyZSwg aTkxNV9wYXJhbXMuZXJyb3JfY2FwdHVyZSwgYm9vbCwgMDYwMCk7Cj4gIE1PRFVMRV9QQVJNX0RF U0MoZXJyb3JfY2FwdHVyZSwKPiAgCSJSZWNvcmQgdGhlIEdQVSBzdGF0ZSBmb2xsb3dpbmcgYSBo YW5nLiAiCj4gIAkiVGhpcyBpbmZvcm1hdGlvbiBpbiAvc3lzL2NsYXNzL2RybS9jYXJkPE4+L2Vy cm9yIGlzIHZpdGFsIGZvciAiCj4gIAkidHJpYWdpbmcgYW5kIGRlYnVnZ2luZyBoYW5ncy4iKTsK PiAgI2VuZGlmCj4gIAo+IC1tb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKGVuYWJsZV9oYW5nY2hl Y2ssIGk5MTUuZW5hYmxlX2hhbmdjaGVjaywgYm9vbCwgMDY0NCk7Cj4gK21vZHVsZV9wYXJhbV9u YW1lZF91bnNhZmUoZW5hYmxlX2hhbmdjaGVjaywgaTkxNV9wYXJhbXMuZW5hYmxlX2hhbmdjaGVj aywKPiArCQkJICBib29sLCAwNjQ0KTsKPiAgTU9EVUxFX1BBUk1fREVTQyhlbmFibGVfaGFuZ2No ZWNrLAo+ICAJIlBlcmlvZGljYWxseSBjaGVjayBHUFUgYWN0aXZpdHkgZm9yIGRldGVjdGluZyBo YW5ncy4gIgo+ICAJIldBUk5JTkc6IERpc2FibGluZyB0aGlzIGNhbiBjYXVzZSBzeXN0ZW0gd2lk ZSBoYW5ncy4gIgo+ICAJIihkZWZhdWx0OiB0cnVlKSIpOwo+ICAKPiAtbW9kdWxlX3BhcmFtX25h bWVkX3Vuc2FmZShlbmFibGVfcHBndHQsIGk5MTUuZW5hYmxlX3BwZ3R0LCBpbnQsIDA0MDApOwo+ ICttb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKGVuYWJsZV9wcGd0dCwgaTkxNV9wYXJhbXMuZW5h YmxlX3BwZ3R0LCBpbnQsIDA0MDApOwo+ICBNT0RVTEVfUEFSTV9ERVNDKGVuYWJsZV9wcGd0dCwK PiAgCSJPdmVycmlkZSBQUEdUVCB1c2FnZS4gIgo+ICAJIigtMT1hdXRvIFtkZWZhdWx0XSwgMD1k aXNhYmxlZCwgMT1hbGlhc2luZywgMj1mdWxsLCAzPWZ1bGwgd2l0aCBleHRlbmRlZCBhZGRyZXNz IHNwYWNlKSIpOwo+ICAKPiAtbW9kdWxlX3BhcmFtX25hbWVkX3Vuc2FmZShlbmFibGVfZXhlY2xp c3RzLCBpOTE1LmVuYWJsZV9leGVjbGlzdHMsIGludCwgMDQwMCk7Cj4gK21vZHVsZV9wYXJhbV9u YW1lZF91bnNhZmUoZW5hYmxlX2V4ZWNsaXN0cywgaTkxNV9wYXJhbXMuZW5hYmxlX2V4ZWNsaXN0 cywgaW50LAo+ICsJCQkgIDA0MDApOwo+ICBNT0RVTEVfUEFSTV9ERVNDKGVuYWJsZV9leGVjbGlz dHMsCj4gIAkiT3ZlcnJpZGUgZXhlY2xpc3RzIHVzYWdlLiAiCj4gIAkiKC0xPWF1dG8gW2RlZmF1 bHRdLCAwPWRpc2FibGVkLCAxPWVuYWJsZWQpIik7Cj4gIAo+IC1tb2R1bGVfcGFyYW1fbmFtZWRf dW5zYWZlKGVuYWJsZV9wc3IsIGk5MTUuZW5hYmxlX3BzciwgaW50LCAwNjAwKTsKPiArbW9kdWxl X3BhcmFtX25hbWVkX3Vuc2FmZShlbmFibGVfcHNyLCBpOTE1X3BhcmFtcy5lbmFibGVfcHNyLCBp bnQsIDA2MDApOwo+ICBNT0RVTEVfUEFSTV9ERVNDKGVuYWJsZV9wc3IsICJFbmFibGUgUFNSICIK PiAgCQkgIigwPWRpc2FibGVkLCAxPWVuYWJsZWQgLSBsaW5rIG1vZGUgY2hvc2VuIHBlci1wbGF0 Zm9ybSwgMj1mb3JjZSBsaW5rLXN0YW5kYnkgbW9kZSwgMz1mb3JjZSBsaW5rLW9mZiBtb2RlKSAi Cj4gIAkJICJEZWZhdWx0OiAtMSAodXNlIHBlci1jaGlwIGRlZmF1bHQpIik7Cj4gIAo+IC1tb2R1 bGVfcGFyYW1fbmFtZWRfdW5zYWZlKGFscGhhX3N1cHBvcnQsIGk5MTUuYWxwaGFfc3VwcG9ydCwg Ym9vbCwgMDQwMCk7Cj4gK21vZHVsZV9wYXJhbV9uYW1lZF91bnNhZmUoYWxwaGFfc3VwcG9ydCwg aTkxNV9wYXJhbXMuYWxwaGFfc3VwcG9ydCwgYm9vbCwKPiArCQkJICAwNDAwKTsKPiAgTU9EVUxF X1BBUk1fREVTQyhhbHBoYV9zdXBwb3J0LAo+ICAJIkVuYWJsZSBhbHBoYSBxdWFsaXR5IGRyaXZl ciBzdXBwb3J0IGZvciBsYXRlc3QgaGFyZHdhcmUuICIKPiAgCSJTZWUgYWxzbyBDT05GSUdfRFJN X0k5MTVfQUxQSEFfU1VQUE9SVC4iKTsKPiAgCj4gLW1vZHVsZV9wYXJhbV9uYW1lZF91bnNhZmUo ZGlzYWJsZV9wb3dlcl93ZWxsLCBpOTE1LmRpc2FibGVfcG93ZXJfd2VsbCwgaW50LCAwNDAwKTsK PiArbW9kdWxlX3BhcmFtX25hbWVkX3Vuc2FmZShkaXNhYmxlX3Bvd2VyX3dlbGwsIGk5MTVfcGFy YW1zLmRpc2FibGVfcG93ZXJfd2VsbCwKPiArCQkJICBpbnQsIDA0MDApOwo+ICBNT0RVTEVfUEFS TV9ERVNDKGRpc2FibGVfcG93ZXJfd2VsbCwKPiAgCSJEaXNhYmxlIGRpc3BsYXkgcG93ZXIgd2Vs bHMgd2hlbiBwb3NzaWJsZSAiCj4gIAkiKC0xPWF1dG8gW2RlZmF1bHRdLCAwPXBvd2VyIHdlbGxz IGFsd2F5cyBvbiwgMT1wb3dlciB3ZWxscyBkaXNhYmxlZCB3aGVuIHBvc3NpYmxlKSIpOwo+ICAK PiAtbW9kdWxlX3BhcmFtX25hbWVkX3Vuc2FmZShlbmFibGVfaXBzLCBpOTE1LmVuYWJsZV9pcHMs IGludCwgMDYwMCk7Cj4gK21vZHVsZV9wYXJhbV9uYW1lZF91bnNhZmUoZW5hYmxlX2lwcywgaTkx NV9wYXJhbXMuZW5hYmxlX2lwcywgaW50LCAwNjAwKTsKPiAgTU9EVUxFX1BBUk1fREVTQyhlbmFi bGVfaXBzLCAiRW5hYmxlIElQUyAoZGVmYXVsdDogdHJ1ZSkiKTsKPiAgCj4gLW1vZHVsZV9wYXJh bV9uYW1lZChmYXN0Ym9vdCwgaTkxNS5mYXN0Ym9vdCwgYm9vbCwgMDYwMCk7Cj4gK21vZHVsZV9w YXJhbV9uYW1lZChmYXN0Ym9vdCwgaTkxNV9wYXJhbXMuZmFzdGJvb3QsIGJvb2wsIDA2MDApOwo+ ICBNT0RVTEVfUEFSTV9ERVNDKGZhc3Rib290LAo+ICAJIlRyeSB0byBza2lwIHVubmVjZXNzYXJ5 IG1vZGUgc2V0cyBhdCBib290IHRpbWUgKGRlZmF1bHQ6IGZhbHNlKSIpOwo+ICAKPiAtbW9kdWxl X3BhcmFtX25hbWVkX3Vuc2FmZShwcmVmYXVsdF9kaXNhYmxlLCBpOTE1LnByZWZhdWx0X2Rpc2Fi bGUsIGJvb2wsIDA2MDApOwo+ICttb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKHByZWZhdWx0X2Rp c2FibGUsIGk5MTVfcGFyYW1zLnByZWZhdWx0X2Rpc2FibGUsCj4gKwkJCSAgYm9vbCwgMDYwMCk7 Cj4gIE1PRFVMRV9QQVJNX0RFU0MocHJlZmF1bHRfZGlzYWJsZSwKPiAgCSJEaXNhYmxlIHBhZ2Ug cHJlZmF1bHRpbmcgZm9yIHByZWFkL3B3cml0ZS9yZWxvYyAoZGVmYXVsdDpmYWxzZSkuICIKPiAg CSJGb3IgZGV2ZWxvcGVycyBvbmx5LiIpOwo+ICAKPiAtbW9kdWxlX3BhcmFtX25hbWVkX3Vuc2Fm ZShsb2FkX2RldGVjdF90ZXN0LCBpOTE1LmxvYWRfZGV0ZWN0X3Rlc3QsIGJvb2wsIDA2MDApOwo+ ICttb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKGxvYWRfZGV0ZWN0X3Rlc3QsIGk5MTVfcGFyYW1z LmxvYWRfZGV0ZWN0X3Rlc3QsCj4gKwkJCSAgYm9vbCwgMDYwMCk7Cj4gIE1PRFVMRV9QQVJNX0RF U0MobG9hZF9kZXRlY3RfdGVzdCwKPiAgCSJGb3JjZS1lbmFibGUgdGhlIFZHQSBsb2FkIGRldGVj dCBjb2RlIGZvciB0ZXN0aW5nIChkZWZhdWx0OmZhbHNlKS4gIgo+ICAJIkZvciBkZXZlbG9wZXJz IG9ubHkuIik7Cj4gIAo+IC1tb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKGZvcmNlX3Jlc2V0X21v ZGVzZXRfdGVzdCwgaTkxNS5mb3JjZV9yZXNldF9tb2Rlc2V0X3Rlc3QsIGJvb2wsIDA2MDApOwo+ ICttb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKGZvcmNlX3Jlc2V0X21vZGVzZXRfdGVzdCwKPiAr CQkJICBpOTE1X3BhcmFtcy5mb3JjZV9yZXNldF9tb2Rlc2V0X3Rlc3QsIGJvb2wsIDA2MDApOwo+ ICBNT0RVTEVfUEFSTV9ERVNDKGZvcmNlX3Jlc2V0X21vZGVzZXRfdGVzdCwKPiAgCSJGb3JjZSBh IG1vZGVzZXQgZHVyaW5nIGdwdSByZXNldCBmb3IgdGVzdGluZyAoZGVmYXVsdDpmYWxzZSkuICIK PiAgCSJGb3IgZGV2ZWxvcGVycyBvbmx5LiIpOwo+ICAKPiAtbW9kdWxlX3BhcmFtX25hbWVkX3Vu c2FmZShpbnZlcnRfYnJpZ2h0bmVzcywgaTkxNS5pbnZlcnRfYnJpZ2h0bmVzcywgaW50LCAwNjAw KTsKPiArbW9kdWxlX3BhcmFtX25hbWVkX3Vuc2FmZShpbnZlcnRfYnJpZ2h0bmVzcywgaTkxNV9w YXJhbXMuaW52ZXJ0X2JyaWdodG5lc3MsCj4gKwkJCSAgaW50LCAwNjAwKTsKPiAgTU9EVUxFX1BB Uk1fREVTQyhpbnZlcnRfYnJpZ2h0bmVzcywKPiAgCSJJbnZlcnQgYmFja2xpZ2h0IGJyaWdodG5l c3MgIgo+ICAJIigtMSBmb3JjZSBub3JtYWwsIDAgbWFjaGluZSBkZWZhdWx0cywgMSBmb3JjZSBp bnZlcnNpb24pLCBwbGVhc2UgIgo+IEBAIC0xOTEsNjkgKzIwMiw3OSBAQCBNT0RVTEVfUEFSTV9E RVNDKGludmVydF9icmlnaHRuZXNzLAo+ICAJInRvIGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcsIGlmIHlvdXIgbWFjaGluZSBuZWVkcyBpdC4gIgo+ICAJIkl0IHdpbGwgdGhlbiBiZSBp bmNsdWRlZCBpbiBhbiB1cGNvbWluZyBtb2R1bGUgdmVyc2lvbi4iKTsKPiAgCj4gLW1vZHVsZV9w YXJhbV9uYW1lZChkaXNhYmxlX2Rpc3BsYXksIGk5MTUuZGlzYWJsZV9kaXNwbGF5LCBib29sLCAw NDAwKTsKPiArbW9kdWxlX3BhcmFtX25hbWVkKGRpc2FibGVfZGlzcGxheSwgaTkxNV9wYXJhbXMu ZGlzYWJsZV9kaXNwbGF5LCBib29sLCAwNDAwKTsKPiAgTU9EVUxFX1BBUk1fREVTQyhkaXNhYmxl X2Rpc3BsYXksICJEaXNhYmxlIGRpc3BsYXkgKGRlZmF1bHQ6IGZhbHNlKSIpOwo+ICAKPiAtbW9k dWxlX3BhcmFtX25hbWVkX3Vuc2FmZShlbmFibGVfY21kX3BhcnNlciwgaTkxNS5lbmFibGVfY21k X3BhcnNlciwgYm9vbCwgMDQwMCk7Cj4gK21vZHVsZV9wYXJhbV9uYW1lZF91bnNhZmUoZW5hYmxl X2NtZF9wYXJzZXIsIGk5MTVfcGFyYW1zLmVuYWJsZV9jbWRfcGFyc2VyLAo+ICsJCQkgIGJvb2ws IDA0MDApOwo+ICBNT0RVTEVfUEFSTV9ERVNDKGVuYWJsZV9jbWRfcGFyc2VyLAo+ICAJCSAiRW5h YmxlIGNvbW1hbmQgcGFyc2luZyAodHJ1ZT1lbmFibGVkIFtkZWZhdWx0XSwgZmFsc2U9ZGlzYWJs ZWQpIik7Cj4gIAo+IC1tb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKHVzZV9tbWlvX2ZsaXAsIGk5 MTUudXNlX21taW9fZmxpcCwgaW50LCAwNjAwKTsKPiArbW9kdWxlX3BhcmFtX25hbWVkX3Vuc2Fm ZSh1c2VfbW1pb19mbGlwLCBpOTE1X3BhcmFtcy51c2VfbW1pb19mbGlwLCBpbnQsIDA2MDApOwo+ ICBNT0RVTEVfUEFSTV9ERVNDKHVzZV9tbWlvX2ZsaXAsCj4gIAkJICJ1c2UgTU1JTyBmbGlwcyAo LTE9bmV2ZXIsIDA9ZHJpdmVyIGRpc2NyZXRpb24gW2RlZmF1bHRdLCAxPWFsd2F5cykiKTsKPiAg Cj4gLW1vZHVsZV9wYXJhbV9uYW1lZChtbWlvX2RlYnVnLCBpOTE1Lm1taW9fZGVidWcsIGludCwg MDYwMCk7Cj4gK21vZHVsZV9wYXJhbV9uYW1lZChtbWlvX2RlYnVnLCBpOTE1X3BhcmFtcy5tbWlv X2RlYnVnLCBpbnQsIDA2MDApOwo+ICBNT0RVTEVfUEFSTV9ERVNDKG1taW9fZGVidWcsCj4gIAki RW5hYmxlIHRoZSBNTUlPIGRlYnVnIGNvZGUgZm9yIHRoZSBmaXJzdCBOIGZhaWx1cmVzIChkZWZh dWx0OiBvZmYpLiAiCj4gIAkiVGhpcyBtYXkgbmVnYXRpdmVseSBhZmZlY3QgcGVyZm9ybWFuY2Uu Iik7Cj4gIAo+IC1tb2R1bGVfcGFyYW1fbmFtZWQodmVyYm9zZV9zdGF0ZV9jaGVja3MsIGk5MTUu dmVyYm9zZV9zdGF0ZV9jaGVja3MsIGJvb2wsIDA2MDApOwo+ICttb2R1bGVfcGFyYW1fbmFtZWQo dmVyYm9zZV9zdGF0ZV9jaGVja3MsIGk5MTVfcGFyYW1zLnZlcmJvc2Vfc3RhdGVfY2hlY2tzLAo+ ICsJCSAgIGJvb2wsIDA2MDApOwo+ICBNT0RVTEVfUEFSTV9ERVNDKHZlcmJvc2Vfc3RhdGVfY2hl Y2tzLAo+ICAJIkVuYWJsZSB2ZXJib3NlIGxvZ3MgKGllLiBXQVJOX09OKCkpIGluIGNhc2Ugb2Yg dW5leHBlY3RlZCBodyBzdGF0ZSBjb25kaXRpb25zLiIpOwo+ICAKPiAtbW9kdWxlX3BhcmFtX25h bWVkX3Vuc2FmZShudWNsZWFyX3BhZ2VmbGlwLCBpOTE1Lm51Y2xlYXJfcGFnZWZsaXAsIGJvb2ws IDA0MDApOwo+ICttb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKG51Y2xlYXJfcGFnZWZsaXAsIGk5 MTVfcGFyYW1zLm51Y2xlYXJfcGFnZWZsaXAsCj4gKwkJCSAgYm9vbCwgMDQwMCk7Cj4gIE1PRFVM RV9QQVJNX0RFU0MobnVjbGVhcl9wYWdlZmxpcCwKPiAgCQkgIkZvcmNlIGVuYWJsZSBhdG9taWMg ZnVuY3Rpb25hbGl0eSBvbiBwbGF0Zm9ybXMgdGhhdCBkb24ndCBoYXZlIGZ1bGwgc3VwcG9ydCB5 ZXQuIik7Cj4gIAo+ICAvKiBXQSB0byBnZXQgYXdheSB3aXRoIHRoZSBkZWZhdWx0IHNldHRpbmcg aW4gVkJUIGZvciBlYXJseSBwbGF0Zm9ybXMuV2lsbCBiZSByZW1vdmVkICovCj4gLW1vZHVsZV9w YXJhbV9uYW1lZF91bnNhZmUoZWRwX3Zzd2luZywgaTkxNS5lZHBfdnN3aW5nLCBpbnQsIDA0MDAp Owo+ICttb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKGVkcF92c3dpbmcsIGk5MTVfcGFyYW1zLmVk cF92c3dpbmcsIGludCwgMDQwMCk7Cj4gIE1PRFVMRV9QQVJNX0RFU0MoZWRwX3Zzd2luZywKPiAg CQkgIklnbm9yZS9PdmVycmlkZSB2c3dpbmcgcHJlLWVtcGggdGFibGUgc2VsZWN0aW9uIGZyb20g VkJUICIKPiAgCQkgIigwPXVzZSB2YWx1ZSBmcm9tIHZidCBbZGVmYXVsdF0sIDE9bG93IHBvd2Vy IHN3aW5nKDIwMG1WKSwiCj4gIAkJICIyPWRlZmF1bHQgc3dpbmcoNDAwbVYpKSIpOwo+ICAKPiAt bW9kdWxlX3BhcmFtX25hbWVkX3Vuc2FmZShlbmFibGVfZ3VjX2xvYWRpbmcsIGk5MTUuZW5hYmxl X2d1Y19sb2FkaW5nLCBpbnQsIDA0MDApOwo+ICttb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKGVu YWJsZV9ndWNfbG9hZGluZywgaTkxNV9wYXJhbXMuZW5hYmxlX2d1Y19sb2FkaW5nLAo+ICsJCQkg IGludCwgMDQwMCk7Cj4gIE1PRFVMRV9QQVJNX0RFU0MoZW5hYmxlX2d1Y19sb2FkaW5nLAo+ICAJ CSJFbmFibGUgR3VDIGZpcm13YXJlIGxvYWRpbmcgIgo+ICAJCSIoLTE9YXV0bywgMD1uZXZlciBb ZGVmYXVsdF0sIDE9aWYgYXZhaWxhYmxlLCAyPXJlcXVpcmVkKSIpOwo+ICAKPiAtbW9kdWxlX3Bh cmFtX25hbWVkX3Vuc2FmZShlbmFibGVfZ3VjX3N1Ym1pc3Npb24sIGk5MTUuZW5hYmxlX2d1Y19z dWJtaXNzaW9uLCBpbnQsIDA0MDApOwo+ICttb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKGVuYWJs ZV9ndWNfc3VibWlzc2lvbiwKPiArCQkJICBpOTE1X3BhcmFtcy5lbmFibGVfZ3VjX3N1Ym1pc3Np b24sIGludCwgMDQwMCk7Cj4gIE1PRFVMRV9QQVJNX0RFU0MoZW5hYmxlX2d1Y19zdWJtaXNzaW9u LAo+ICAJCSJFbmFibGUgR3VDIHN1Ym1pc3Npb24gIgo+ICAJCSIoLTE9YXV0bywgMD1uZXZlciBb ZGVmYXVsdF0sIDE9aWYgYXZhaWxhYmxlLCAyPXJlcXVpcmVkKSIpOwo+ICAKPiAtbW9kdWxlX3Bh cmFtX25hbWVkKGd1Y19sb2dfbGV2ZWwsIGk5MTUuZ3VjX2xvZ19sZXZlbCwgaW50LCAwNDAwKTsK PiArbW9kdWxlX3BhcmFtX25hbWVkKGd1Y19sb2dfbGV2ZWwsIGk5MTVfcGFyYW1zLmd1Y19sb2df bGV2ZWwsIGludCwgMDQwMCk7Cj4gIE1PRFVMRV9QQVJNX0RFU0MoZ3VjX2xvZ19sZXZlbCwKPiAg CSJHdUMgZmlybXdhcmUgbG9nZ2luZyBsZXZlbCAoLTE6ZGlzYWJsZWQgKGRlZmF1bHQpLCAwLTM6 ZW5hYmxlZCkiKTsKPiAgCj4gLW1vZHVsZV9wYXJhbV9uYW1lZF91bnNhZmUoZ3VjX2Zpcm13YXJl X3BhdGgsIGk5MTUuZ3VjX2Zpcm13YXJlX3BhdGgsIGNoYXJwLCAwNDAwKTsKPiArbW9kdWxlX3Bh cmFtX25hbWVkX3Vuc2FmZShndWNfZmlybXdhcmVfcGF0aCwgaTkxNV9wYXJhbXMuZ3VjX2Zpcm13 YXJlX3BhdGgsCj4gKwkJCSAgY2hhcnAsIDA0MDApOwo+ICBNT0RVTEVfUEFSTV9ERVNDKGd1Y19m aXJtd2FyZV9wYXRoLAo+ICAJIkd1QyBmaXJtd2FyZSBwYXRoIHRvIHVzZSBpbnN0ZWFkIG9mIHRo ZSBkZWZhdWx0IG9uZSIpOwo+ICAKPiAtbW9kdWxlX3BhcmFtX25hbWVkX3Vuc2FmZShodWNfZmly bXdhcmVfcGF0aCwgaTkxNS5odWNfZmlybXdhcmVfcGF0aCwgY2hhcnAsIDA0MDApOwo+ICttb2R1 bGVfcGFyYW1fbmFtZWRfdW5zYWZlKGh1Y19maXJtd2FyZV9wYXRoLCBpOTE1X3BhcmFtcy5odWNf ZmlybXdhcmVfcGF0aCwKPiArCQkJICBjaGFycCwgMDQwMCk7Cj4gIE1PRFVMRV9QQVJNX0RFU0Mo aHVjX2Zpcm13YXJlX3BhdGgsCj4gIAkiSHVDIGZpcm13YXJlIHBhdGggdG8gdXNlIGluc3RlYWQg b2YgdGhlIGRlZmF1bHQgb25lIik7Cj4gIAo+IC1tb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKGVu YWJsZV9kcF9tc3QsIGk5MTUuZW5hYmxlX2RwX21zdCwgYm9vbCwgMDYwMCk7Cj4gK21vZHVsZV9w YXJhbV9uYW1lZF91bnNhZmUoZW5hYmxlX2RwX21zdCwgaTkxNV9wYXJhbXMuZW5hYmxlX2RwX21z dCwgYm9vbCwKPiArCQkJICAwNjAwKTsKPiAgTU9EVUxFX1BBUk1fREVTQyhlbmFibGVfZHBfbXN0 LAo+ICAJIkVuYWJsZSBtdWx0aS1zdHJlYW0gdHJhbnNwb3J0IChNU1QpIGZvciBuZXcgRGlzcGxh eVBvcnQgc2lua3MuIChkZWZhdWx0OiB0cnVlKSIpOwo+IC1tb2R1bGVfcGFyYW1fbmFtZWRfdW5z YWZlKGluamVjdF9sb2FkX2ZhaWx1cmUsIGk5MTUuaW5qZWN0X2xvYWRfZmFpbHVyZSwgdWludCwg MDQwMCk7Cj4gK21vZHVsZV9wYXJhbV9uYW1lZF91bnNhZmUoaW5qZWN0X2xvYWRfZmFpbHVyZSwK PiArCQkJICBpOTE1X3BhcmFtcy5pbmplY3RfbG9hZF9mYWlsdXJlLCB1aW50LCAwNDAwKTsKPiAg TU9EVUxFX1BBUk1fREVTQyhpbmplY3RfbG9hZF9mYWlsdXJlLAo+ICAJIkZvcmNlIGFuIGVycm9y IGFmdGVyIGEgbnVtYmVyIG9mIGZhaWx1cmUgY2hlY2sgcG9pbnRzICgwOmRpc2FibGVkIChkZWZh dWx0KSwgTjpmb3JjZSBmYWlsdXJlIGF0IHRoZSBOdGggZmFpbHVyZSBjaGVjayBwb2ludCkiKTsK PiAtbW9kdWxlX3BhcmFtX25hbWVkKGVuYWJsZV9kcGNkX2JhY2tsaWdodCwgaTkxNS5lbmFibGVf ZHBjZF9iYWNrbGlnaHQsIGJvb2wsIDA2MDApOwo+ICttb2R1bGVfcGFyYW1fbmFtZWQoZW5hYmxl X2RwY2RfYmFja2xpZ2h0LCBpOTE1X3BhcmFtcy5lbmFibGVfZHBjZF9iYWNrbGlnaHQsCj4gKwkJ ICAgYm9vbCwgMDYwMCk7Cj4gIE1PRFVMRV9QQVJNX0RFU0MoZW5hYmxlX2RwY2RfYmFja2xpZ2h0 LAo+ICAJIkVuYWJsZSBzdXBwb3J0IGZvciBEUENEIGJhY2tsaWdodCBjb250cm9sIChkZWZhdWx0 OmZhbHNlKSIpOwo+ICAKPiAtbW9kdWxlX3BhcmFtX25hbWVkKGVuYWJsZV9ndnQsIGk5MTUuZW5h YmxlX2d2dCwgYm9vbCwgMDQwMCk7Cj4gK21vZHVsZV9wYXJhbV9uYW1lZChlbmFibGVfZ3Z0LCBp OTE1X3BhcmFtcy5lbmFibGVfZ3Z0LCBib29sLCAwNDAwKTsKPiAgTU9EVUxFX1BBUk1fREVTQyhl bmFibGVfZ3Z0LAo+ICAJIkVuYWJsZSBzdXBwb3J0IGZvciBJbnRlbCBHVlQtZyBncmFwaGljcyB2 aXJ0dWFsaXphdGlvbiBob3N0IHN1cHBvcnQoZGVmYXVsdDpmYWxzZSkiKTsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wYXJhbXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcGFyYW1zLmgKPiBpbmRleCBhYzg0NDcwLi5jNThjMTQxIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGFyYW1zLmgKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3BhcmFtcy5oCj4gQEAgLTc2LDcgKzc2LDcgQEAgc3RydWN0IGk5MTVfcGFy YW1zIHsKPiAgfTsKPiAgI3VuZGVmIE1FTUJFUgo+ICAKPiAtZXh0ZXJuIHN0cnVjdCBpOTE1X3Bh cmFtcyBpOTE1IF9fcmVhZF9tb3N0bHk7Cj4gK2V4dGVybiBzdHJ1Y3QgaTkxNV9wYXJhbXMgaTkx NV9wYXJhbXMgX19yZWFkX21vc3RseTsKPiAgCj4gICNlbmRpZgo+ICAKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcGNpLmMKPiBpbmRleCAxMjk4NzdiLi42YmNlODJjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcGNpLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3BjaS5jCj4gQEAgLTYzOCw3ICs2MzgsNyBAQCBzdGF0aWMgaW50IGk5MTVfcGNpX3Byb2JlKHN0 cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KQo+ICAJ CShzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gKikgZW50LT5kcml2ZXJfZGF0YTsKPiAgCWludCBl cnI7Cj4gIAo+IC0JaWYgKElTX0FMUEhBX1NVUFBPUlQoaW50ZWxfaW5mbykgJiYgIWk5MTUuYWxw aGFfc3VwcG9ydCkgewo+ICsJaWYgKElTX0FMUEhBX1NVUFBPUlQoaW50ZWxfaW5mbykgJiYgIWk5 MTVfcGFyYW1zLmFscGhhX3N1cHBvcnQpIHsKPiAgCQlEUk1fSU5GTygiVGhlIGRyaXZlciBzdXBw b3J0IGZvciB5b3VyIGhhcmR3YXJlIGluIHRoaXMga2VybmVsIHZlcnNpb24gaXMgYWxwaGEgcXVh bGl0eVxuIgo+ICAJCQkgIlNlZSBDT05GSUdfRFJNX0k5MTVfQUxQSEFfU1VQUE9SVCBvciBpOTE1 LmFscGhhX3N1cHBvcnQgbW9kdWxlIHBhcmFtZXRlclxuIgo+ICAJCQkgInRvIGVuYWJsZSBzdXBw b3J0IGluIHRoaXMga2VybmVsIHZlcnNpb24sIG9yIGNoZWNrIGZvciBrZXJuZWwgdXBkYXRlcy5c biIpOwo+IEBAIC02OTYsMTAgKzY5NiwxMCBAQCBzdGF0aWMgaW50IF9faW5pdCBpOTE1X2luaXQo dm9pZCkKPiAgCSAqIHZnYV90ZXh0X21vZGVfZm9yY2UgYm9vdCBvcHRpb24uCj4gIAkgKi8KPiAg Cj4gLQlpZiAoaTkxNS5tb2Rlc2V0ID09IDApCj4gKwlpZiAoaTkxNV9wYXJhbXMubW9kZXNldCA9 PSAwKQo+ICAJCXVzZV9rbXMgPSBmYWxzZTsKPiAgCj4gLQlpZiAodmdhY29uX3RleHRfZm9yY2Uo KSAmJiBpOTE1Lm1vZGVzZXQgPT0gLTEpCj4gKwlpZiAodmdhY29uX3RleHRfZm9yY2UoKSAmJiBp OTE1X3BhcmFtcy5tb2Rlc2V0ID09IC0xKQo+ICAJCXVzZV9rbXMgPSBmYWxzZTsKPiAgCj4gIAlp ZiAoIXVzZV9rbXMpIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9w ZXJmLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYwo+IGluZGV4IDk0MTg1ZDYu LjBmYThkN2QgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYwo+IEBAIC0xMjEzLDcgKzEy MTMsNyBAQCBzdGF0aWMgaW50IG9hX2dldF9yZW5kZXJfY3R4X2lkKHN0cnVjdCBpOTE1X3BlcmZf c3RyZWFtICpzdHJlYW0pCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHN0cmVhbS0+ZGV2X3ByaXY7Cj4gIAo+IC0JaWYgKGk5MTUuZW5hYmxlX2V4ZWNsaXN0cykK PiArCWlmIChpOTE1X3BhcmFtcy5lbmFibGVfZXhlY2xpc3RzKQo+ICAJCWRldl9wcml2LT5wZXJm Lm9hLnNwZWNpZmljX2N0eF9pZCA9IHN0cmVhbS0+Y3R4LT5od19pZDsKPiAgCWVsc2Ugewo+ICAJ CXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IGRldl9wcml2LT5lbmdpbmVbUkNTXTsK PiBAQCAtMTI1OSw3ICsxMjU5LDcgQEAgc3RhdGljIHZvaWQgb2FfcHV0X3JlbmRlcl9jdHhfaWQo c3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gc3RyZWFtLT5kZXZfcHJpdjsKPiAgCj4gLQlpZiAoaTkxNS5l bmFibGVfZXhlY2xpc3RzKSB7Cj4gKwlpZiAoaTkxNV9wYXJhbXMuZW5hYmxlX2V4ZWNsaXN0cykg ewo+ICAJCWRldl9wcml2LT5wZXJmLm9hLnNwZWNpZmljX2N0eF9pZCA9IElOVkFMSURfQ1RYX0lE Owo+ICAJfSBlbHNlIHsKPiAgCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSBkZXZf cHJpdi0+ZW5naW5lW1JDU107Cj4gQEAgLTM0MDUsNyArMzQwNSw3IEBAIHZvaWQgaTkxNV9wZXJm X2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCWRldl9wcml2LT5w ZXJmLm9hLnRpbWVzdGFtcF9mcmVxdWVuY3kgPSAxMjUwMDAwMDsKPiAgCj4gIAkJZGV2X3ByaXYt PnBlcmYub2Eub2FfZm9ybWF0cyA9IGhzd19vYV9mb3JtYXRzOwo+IC0JfSBlbHNlIGlmIChpOTE1 LmVuYWJsZV9leGVjbGlzdHMpIHsKPiArCX0gZWxzZSBpZiAoaTkxNV9wYXJhbXMuZW5hYmxlX2V4 ZWNsaXN0cykgewo+ICAJCS8qIE5vdGU6IHRoYXQgYWx0aG91Z2ggd2UgY291bGQgdGhlb3JldGlj YWxseSBhbHNvIHN1cHBvcnQgdGhlCj4gIAkJICogbGVnYWN5IHJpbmdidWZmZXIgbW9kZSBvbiBC RFcgKGFuZCBlYXJsaWVyIGl0ZXJhdGlvbnMgb2YKPiAgCQkgKiB0aGlzIGRyaXZlciwgYmVmb3Jl IHVwc3RyZWFtaW5nIGRpZCB0aGlzKSBpdCBkaWRuJ3Qgc2VlbQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9iaW9zLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9iaW9zLmMKPiBpbmRleCA1OTQ5NzUwLi4wNDM1ZjgwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Jpb3MuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Jpb3MuYwo+IEBAIC0zNTYsNyArMzU2LDcgQEAgcGFyc2Vfc2R2b19wYW5lbF9kYXRhKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCXN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICpwYW5lbF9maXhlZF9tb2RlOwo+ICAJaW50IGluZGV4Owo+ICAKPiAtCWluZGV4ID0gaTkx NS52YnRfc2R2b19wYW5lbF90eXBlOwo+ICsJaW5kZXggPSBpOTE1X3BhcmFtcy52YnRfc2R2b19w YW5lbF90eXBlOwo+ICAJaWYgKGluZGV4ID09IC0yKSB7Cj4gIAkJRFJNX0RFQlVHX0tNUygiSWdu b3JlIFNEVk8gcGFuZWwgbW9kZSBmcm9tIEJJT1MgVkJUIHRhYmxlcy5cbiIpOwo+ICAJCXJldHVy bjsKPiBAQCAtNjc1LDggKzY3NSw4IEBAIHBhcnNlX2VkcChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsIGNvbnN0IHN0cnVjdCBiZGJfaGVhZGVyICpiZGIpCj4gIAkJdWludDhfdCB2 c3dpbmc7Cj4gIAo+ICAJCS8qIERvbid0IHJlYWQgZnJvbSBWQlQgaWYgbW9kdWxlIHBhcmFtZXRl ciBoYXMgdmFsaWQgdmFsdWUqLwo+IC0JCWlmIChpOTE1LmVkcF92c3dpbmcpIHsKPiAtCQkJZGV2 X3ByaXYtPnZidC5lZHAubG93X3Zzd2luZyA9IGk5MTUuZWRwX3Zzd2luZyA9PSAxOwo+ICsJCWlm IChpOTE1X3BhcmFtcy5lZHBfdnN3aW5nKSB7Cj4gKwkJCWRldl9wcml2LT52YnQuZWRwLmxvd192 c3dpbmcgPSBpOTE1X3BhcmFtcy5lZHBfdnN3aW5nID09IDE7Cj4gIAkJfSBlbHNlIHsKPiAgCQkJ dnN3aW5nID0gKGVkcC0+ZWRwX3Zzd2luZ19wcmVlbXBoID4+IChwYW5lbF90eXBlICogNCkpICYg MHhGOwo+ICAJCQlkZXZfcHJpdi0+dmJ0LmVkcC5sb3dfdnN3aW5nID0gdnN3aW5nID09IDA7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NydC5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfY3J0LmMKPiBpbmRleCBhNzdkZDgwLi41MWI3ZjQ1IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NydC5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfY3J0LmMKPiBAQCAtNzEyLDcgKzcxMiw3IEBAIGludGVsX2NydF9k ZXRlY3Qoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiAgCSAqIGJyb2tlbiBtb25p dG9yICh3aXRob3V0IGVkaWQpIHRvIHdvcmsgYmVoaW5kIGEgYnJva2VuIGt2bSAodGhhdCBmYWls cwo+ICAJICogdG8gaGF2ZSB0aGUgcmlnaHQgcmVzaXN0b3JzIGZvciBIUCBkZXRlY3Rpb24pIG5l ZWRzIHRvIGZpeCB0aGlzIHVwLgo+ICAJICogRm9yIG5vdyBqdXN0IGJhaWwgb3V0LiAqLwo+IC0J aWYgKEk5MTVfSEFTX0hPVFBMVUcoZGV2X3ByaXYpICYmICFpOTE1LmxvYWRfZGV0ZWN0X3Rlc3Qp IHsKPiArCWlmIChJOTE1X0hBU19IT1RQTFVHKGRldl9wcml2KSAmJiAhaTkxNV9wYXJhbXMubG9h ZF9kZXRlY3RfdGVzdCkgewo+ICAJCXN0YXR1cyA9IGNvbm5lY3Rvcl9zdGF0dXNfZGlzY29ubmVj dGVkOwo+ICAJCWdvdG8gb3V0Owo+ICAJfQo+IEBAIC03MzAsNyArNzMwLDcgQEAgaW50ZWxfY3J0 X2RldGVjdChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICAJCWVsc2UgaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPCA0KQo+ICAJCQlzdGF0dXMgPSBpbnRlbF9jcnRfbG9hZF9kZXRl Y3QoY3J0LAo+ICAJCQkJdG9faW50ZWxfY3J0Yyhjb25uZWN0b3ItPnN0YXRlLT5jcnRjKS0+cGlw ZSk7Cj4gLQkJZWxzZSBpZiAoaTkxNS5sb2FkX2RldGVjdF90ZXN0KQo+ICsJCWVsc2UgaWYgKGk5 MTVfcGFyYW1zLmxvYWRfZGV0ZWN0X3Rlc3QpCj4gIAkJCXN0YXR1cyA9IGNvbm5lY3Rvcl9zdGF0 dXNfZGlzY29ubmVjdGVkOwo+ICAJCWVsc2UKPiAgCQkJc3RhdHVzID0gY29ubmVjdG9yX3N0YXR1 c191bmtub3duOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZp Y2VfaW5mby5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uYwo+IGlu ZGV4IDQzODMxYjAuLjMxNmM1NzQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGV2aWNlX2luZm8uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rl dmljZV9pbmZvLmMKPiBAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgaW50ZWxfZGV2aWNlX2luZm9f cnVudGltZV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQkJaW5m by0+bnVtX3Nwcml0ZXNbcGlwZV0gPSAxOwo+ICAJfQo+ICAKPiAtCWlmIChpOTE1LmRpc2FibGVf ZGlzcGxheSkgewo+ICsJaWYgKGk5MTVfcGFyYW1zLmRpc2FibGVfZGlzcGxheSkgewo+ICAJCURS TV9JTkZPKCJEaXNwbGF5IGRpc2FibGVkIChtb2R1bGUgcGFyYW1ldGVyKVxuIik7Cj4gIAkJaW5m by0+bnVtX3BpcGVzID0gMDsKPiAgCX0gZWxzZSBpZiAoaW5mby0+bnVtX3BpcGVzID4gMCAmJgo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCAwODcxODA3Li40YTNhMDYz IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC0zNzAxLDcgKzM3 MDEsNyBAQCB2b2lkIGludGVsX3ByZXBhcmVfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ICAKPiAgCj4gIAkvKiByZXNldCBkb2Vzbid0IHRvdWNoIHRoZSBkaXNwbGF5 ICovCj4gLQlpZiAoIWk5MTUuZm9yY2VfcmVzZXRfbW9kZXNldF90ZXN0ICYmCj4gKwlpZiAoIWk5 MTVfcGFyYW1zLmZvcmNlX3Jlc2V0X21vZGVzZXRfdGVzdCAmJgo+ICAJICAgICFncHVfcmVzZXRf Y2xvYmJlcnNfZGlzcGxheShkZXZfcHJpdikpCj4gIAkJcmV0dXJuOwo+ICAKPiBAQCAtMzc1Nyw3 ICszNzU3LDcgQEAgdm9pZCBpbnRlbF9maW5pc2hfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQo+ICAJaW50IHJldDsKPiAgCj4gIAkvKiByZXNldCBkb2Vzbid0IHRvdWNo IHRoZSBkaXNwbGF5ICovCj4gLQlpZiAoIWk5MTUuZm9yY2VfcmVzZXRfbW9kZXNldF90ZXN0ICYm Cj4gKwlpZiAoIWk5MTVfcGFyYW1zLmZvcmNlX3Jlc2V0X21vZGVzZXRfdGVzdCAmJgo+ICAJICAg ICFncHVfcmVzZXRfY2xvYmJlcnNfZGlzcGxheShkZXZfcHJpdikpCj4gIAkJcmV0dXJuOwo+ICAK PiBAQCAtNjMxMiw3ICs2MzEyLDcgQEAgc3RhdGljIHZvaWQgaHN3X2NvbXB1dGVfaXBzX2NvbmZp ZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBj cnRjLT5iYXNlLmRldjsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoZGV2KTsKPiAgCj4gLQlwaXBlX2NvbmZpZy0+aXBzX2VuYWJsZWQgPSBpOTE1LmVuYWJs ZV9pcHMgJiYKPiArCXBpcGVfY29uZmlnLT5pcHNfZW5hYmxlZCA9IGk5MTVfcGFyYW1zLmVuYWJs ZV9pcHMgJiYKPiAgCQloc3dfY3J0Y19zdXBwb3J0c19pcHMoY3J0YykgJiYKPiAgCQlwaXBlX2Nv bmZpZ19zdXBwb3J0c19pcHMoZGV2X3ByaXYsIHBpcGVfY29uZmlnKTsKPiAgfQo+IEBAIC02NDkz LDggKzY0OTMsOCBAQCBpbnRlbF9saW5rX2NvbXB1dGVfbV9uKGludCBiaXRzX3Blcl9waXhlbCwg aW50IG5sYW5lcywKPiAgCj4gIHN0YXRpYyBpbmxpbmUgYm9vbCBpbnRlbF9wYW5lbF91c2Vfc3Nj KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+IC0JaWYgKGk5MTUucGFu ZWxfdXNlX3NzYyA+PSAwKQo+IC0JCXJldHVybiBpOTE1LnBhbmVsX3VzZV9zc2MgIT0gMDsKPiAr CWlmIChpOTE1X3BhcmFtcy5wYW5lbF91c2Vfc3NjID49IDApCj4gKwkJcmV0dXJuIGk5MTVfcGFy YW1zLnBhbmVsX3VzZV9zc2MgIT0gMDsKPiAgCXJldHVybiBkZXZfcHJpdi0+dmJ0Lmx2ZHNfdXNl X3NzYwo+ICAJCSYmICEoZGV2X3ByaXYtPnF1aXJrcyAmIFFVSVJLX0xWRFNfU1NDX0RJU0FCTEUp Owo+ICB9Cj4gQEAgLTEyMDgzLDcgKzEyMDgzLDcgQEAgc3RhdGljIGludCBpbnRlbF9hdG9taWNf Y2hlY2soc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQkJcmV0dXJuIHJldDsKPiAgCQl9Cj4g IAo+IC0JCWlmIChpOTE1LmZhc3Rib290ICYmCj4gKwkJaWYgKGk5MTVfcGFyYW1zLmZhc3Rib290 ICYmCj4gIAkJICAgIGludGVsX3BpcGVfY29uZmlnX2NvbXBhcmUoZGV2X3ByaXYsCj4gIAkJCQkJ dG9faW50ZWxfY3J0Y19zdGF0ZShvbGRfY3J0Y19zdGF0ZSksCj4gIAkJCQkJcGlwZV9jb25maWcs IHRydWUpKSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gaW5kZXggODg3OTUzYy4uNTAxYzY2 MyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+IEBAIC0zODI2LDcgKzM4MjYsNyBAQCBp bnRlbF9kcF9jYW5fbXN0KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIHsKPiAgCXU4IG1z dG1fY2FwOwo+ICAKPiAtCWlmICghaTkxNS5lbmFibGVfZHBfbXN0KQo+ICsJaWYgKCFpOTE1X3Bh cmFtcy5lbmFibGVfZHBfbXN0KQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gIAlpZiAoIWludGVs X2RwLT5jYW5fbXN0KQo+IEBAIC0zODQ0LDcgKzM4NDQsNyBAQCBpbnRlbF9kcF9jYW5fbXN0KHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIHN0YXRpYyB2b2lkCj4gIGludGVsX2RwX2NvbmZp Z3VyZV9tc3Qoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgewo+IC0JaWYgKCFpOTE1LmVu YWJsZV9kcF9tc3QpCj4gKwlpZiAoIWk5MTVfcGFyYW1zLmVuYWJsZV9kcF9tc3QpCj4gIAkJcmV0 dXJuOwo+ICAKPiAgCWlmICghaW50ZWxfZHAtPmNhbl9tc3QpCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2F1eF9iYWNrbGlnaHQuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RwX2F1eF9iYWNrbGlnaHQuYwo+IGluZGV4IGQyODMwYmEuLjg1Mjk4ODBi IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2F1eF9iYWNrbGln aHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2F1eF9iYWNrbGlnaHQu Ywo+IEBAIC0yNjQsNyArMjY0LDcgQEAgaW50IGludGVsX2RwX2F1eF9pbml0X2JhY2tsaWdodF9m dW5jcyhzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRlbF9jb25uZWN0b3IpCj4gIHsKPiAgCXN0 cnVjdCBpbnRlbF9wYW5lbCAqcGFuZWwgPSAmaW50ZWxfY29ubmVjdG9yLT5wYW5lbDsKPiAgCj4g LQlpZiAoIWk5MTUuZW5hYmxlX2RwY2RfYmFja2xpZ2h0KQo+ICsJaWYgKCFpOTE1X3BhcmFtcy5l bmFibGVfZHBjZF9iYWNrbGlnaHQpCj4gIAkJcmV0dXJuIC1FTk9ERVY7Cj4gIAo+ICAJaWYgKCFp bnRlbF9kcF9hdXhfZGlzcGxheV9jb250cm9sX2NhcGFibGUoaW50ZWxfY29ubmVjdG9yKSkKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4IDMwNzgwNzYuLjA5ZTZmNDkgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC0xOTAyLDcgKzE5MDIsNyBAQCB2b2lkIGludGVs X2luaXRfaXBjKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gIHZvaWQgaW50 ZWxfZW5hYmxlX2lwYyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICBzdGF0 aWMgaW5saW5lIGludCBpbnRlbF9lbmFibGVfcmM2KHZvaWQpCj4gIHsKPiAtCXJldHVybiBpOTE1 LmVuYWJsZV9yYzY7Cj4gKwlyZXR1cm4gaTkxNV9wYXJhbXMuZW5hYmxlX3JjNjsKPiAgfQo+ICAK PiAgLyogaW50ZWxfc2R2by5jICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2VuZ2luZV9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2Nz LmMKPiBpbmRleCAzYWU4OWE5ZC4uNzllMTk4YSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2VuZ2luZV9jcy5jCj4gQEAgLTE1Myw3ICsxNTMsNyBAQCBfX2ludGVsX2VuZ2luZV9jb250 ZXh0X3NpemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1OCBjbGFzcykKPiAg CQljYXNlIDk6Cj4gIAkJCXJldHVybiBHRU45X0xSX0NPTlRFWFRfUkVOREVSX1NJWkU7Cj4gIAkJ Y2FzZSA4Ogo+IC0JCQlyZXR1cm4gaTkxNS5lbmFibGVfZXhlY2xpc3RzID8KPiArCQkJcmV0dXJu IGk5MTVfcGFyYW1zLmVuYWJsZV9leGVjbGlzdHMgPwo+ICAJCQkgICAgICAgR0VOOF9MUl9DT05U RVhUX1JFTkRFUl9TSVpFIDoKPiAgCQkJICAgICAgIEdFTjhfQ1hUX1RPVEFMX1NJWkU7Cj4gIAkJ Y2FzZSA3Ogo+IEBAIC0zMDEsNyArMzAxLDcgQEAgaW50IGludGVsX2VuZ2luZXNfaW5pdChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJCSZpbnRlbF9lbmdpbmVfY2xhc3Nl c1tlbmdpbmUtPmNsYXNzXTsKPiAgCQlpbnQgKCppbml0KShzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpOwo+ICAKPiAtCQlpZiAoaTkxNS5lbmFibGVfZXhlY2xpc3RzKQo+ICsJCWlmIChp OTE1X3BhcmFtcy5lbmFibGVfZXhlY2xpc3RzKQo+ICAJCQlpbml0ID0gY2xhc3NfaW5mby0+aW5p dF9leGVjbGlzdHM7Cj4gIAkJZWxzZQo+ICAJCQlpbml0ID0gY2xhc3NfaW5mby0+aW5pdF9sZWdh Y3k7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMKPiBpbmRleCA1OGE3NzJkLi5lMWM0ZTcxIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMKPiBAQCAtODU5LDcgKzg1OSw3IEBAIHN0YXRp YyBib29sIGludGVsX2ZiY19jYW5fZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAl9Cj4gIAo+IC0JaWYgKCFpOTE1LmVuYWJsZV9m YmMpIHsKPiArCWlmICghaTkxNV9wYXJhbXMuZW5hYmxlX2ZiYykgewo+ICAJCWZiYy0+bm9fZmJj X3JlYXNvbiA9ICJkaXNhYmxlZCBwZXIgbW9kdWxlIHBhcmFtIG9yIGJ5IGRlZmF1bHQiOwo+ICAJ CXJldHVybiBmYWxzZTsKPiAgCX0KPiBAQCAtMTMxMCw4ICsxMzEwLDggQEAgdm9pZCBpbnRlbF9m YmNfaW5pdF9waXBlX3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAg ICovCj4gIHN0YXRpYyBpbnQgaW50ZWxfc2FuaXRpemVfZmJjX29wdGlvbihzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAtCWlmIChpOTE1LmVuYWJsZV9mYmMgPj0gMCkK PiAtCQlyZXR1cm4gISFpOTE1LmVuYWJsZV9mYmM7Cj4gKwlpZiAoaTkxNV9wYXJhbXMuZW5hYmxl X2ZiYyA+PSAwKQo+ICsJCXJldHVybiAhIWk5MTVfcGFyYW1zLmVuYWJsZV9mYmM7Cj4gIAo+ICAJ aWYgKCFIQVNfRkJDKGRldl9wcml2KSkKPiAgCQlyZXR1cm4gMDsKPiBAQCAtMTM1NSw4ICsxMzU1 LDkgQEAgdm9pZCBpbnRlbF9mYmNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gIAlpZiAobmVlZF9mYmNfdnRkX3dhKGRldl9wcml2KSkKPiAgCQlta3dyaXRlX2Rldmlj ZV9pbmZvKGRldl9wcml2KS0+aGFzX2ZiYyA9IGZhbHNlOwo+ICAKPiAtCWk5MTUuZW5hYmxlX2Zi YyA9IGludGVsX3Nhbml0aXplX2ZiY19vcHRpb24oZGV2X3ByaXYpOwo+IC0JRFJNX0RFQlVHX0tN UygiU2FuaXRpemVkIGVuYWJsZV9mYmMgdmFsdWU6ICVkXG4iLCBpOTE1LmVuYWJsZV9mYmMpOwo+ ICsJaTkxNV9wYXJhbXMuZW5hYmxlX2ZiYyA9IGludGVsX3Nhbml0aXplX2ZiY19vcHRpb24oZGV2 X3ByaXYpOwo+ICsJRFJNX0RFQlVHX0tNUygiU2FuaXRpemVkIGVuYWJsZV9mYmMgdmFsdWU6ICVk XG4iLAo+ICsJCSAgICAgIGk5MTVfcGFyYW1zLmVuYWJsZV9mYmMpOwo+ICAKPiAgCWlmICghSEFT X0ZCQyhkZXZfcHJpdikpIHsKPiAgCQlmYmMtPm5vX2ZiY19yZWFzb24gPSAidW5zdXBwb3J0ZWQg YnkgdGhpcyBjaGlwc2V0IjsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZ3VjX2xvYWRlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5j Cj4gaW5kZXggOGIwYWU3Zi4uYWQ3OTA1ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ndWNfbG9hZGVyLmMKPiBAQCAtMTMxLDE0ICsxMzEsMTQgQEAgc3RhdGljIHZvaWQgZ3VjX3Bh cmFtc19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCj4gIAlwYXJh bXNbR1VDX0NUTF9MT0dfUEFSQU1TXSA9IGd1Yy0+bG9nLmZsYWdzOwo+ICAKPiAtCWlmIChpOTE1 Lmd1Y19sb2dfbGV2ZWwgPj0gMCkgewo+ICsJaWYgKGk5MTVfcGFyYW1zLmd1Y19sb2dfbGV2ZWwg Pj0gMCkgewo+ICAJCXBhcmFtc1tHVUNfQ1RMX0RFQlVHXSA9Cj4gLQkJCWk5MTUuZ3VjX2xvZ19s ZXZlbCA8PCBHVUNfTE9HX1ZFUkJPU0lUWV9TSElGVDsKPiArCQkJaTkxNV9wYXJhbXMuZ3VjX2xv Z19sZXZlbCA8PCBHVUNfTE9HX1ZFUkJPU0lUWV9TSElGVDsKPiAgCX0gZWxzZQo+ICAJCXBhcmFt c1tHVUNfQ1RMX0RFQlVHXSA9IEdVQ19MT0dfRElTQUJMRUQ7Cj4gIAo+ICAJLyogSWYgR3VDIHN1 Ym1pc3Npb24gaXMgZW5hYmxlZCwgc2V0IHVwIGFkZGl0aW9uYWwgcGFyYW1ldGVycyBoZXJlICov Cj4gLQlpZiAoaTkxNS5lbmFibGVfZ3VjX3N1Ym1pc3Npb24pIHsKPiArCWlmIChpOTE1X3BhcmFt cy5lbmFibGVfZ3VjX3N1Ym1pc3Npb24pIHsKPiAgCQl1MzIgYWRzID0gZ3VjX2dndHRfb2Zmc2V0 KGd1Yy0+YWRzX3ZtYSkgPj4gUEFHRV9TSElGVDsKPiAgCQl1MzIgcGdzID0gZ3VjX2dndHRfb2Zm c2V0KGRldl9wcml2LT5ndWMuc3RhZ2VfZGVzY19wb29sKTsKPiAgCQl1MzIgY3R4X2luXzE2ID0g R1VDX01BWF9TVEFHRV9ERVNDUklQVE9SUyAvIDE2Owo+IEBAIC0zNjgsNyArMzY4LDcgQEAgaW50 IGludGVsX2d1Y19pbml0X2h3KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiAgCWd1Yy0+ZncubG9h ZF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9TVUNDRVNTOwo+ICAKPiAgCURSTV9JTkZPKCJH dUMgJXMgKGZpcm13YXJlICVzIFt2ZXJzaW9uICV1LiV1XSlcbiIsCj4gLQkJIGk5MTUuZW5hYmxl X2d1Y19zdWJtaXNzaW9uID8gInN1Ym1pc3Npb24gZW5hYmxlZCIgOiAibG9hZGVkIiwKPiArCQkg aTkxNV9wYXJhbXMuZW5hYmxlX2d1Y19zdWJtaXNzaW9uID8gInN1Ym1pc3Npb24gZW5hYmxlZCIg OiAibG9hZGVkIiwKPiAgCQkgZ3VjLT5mdy5wYXRoLAo+ICAJCSBndWMtPmZ3Lm1ham9yX3Zlcl9m b3VuZCwgZ3VjLT5mdy5taW5vcl92ZXJfZm91bmQpOwo+ICAKPiBAQCAtMzkwLDggKzM5MCw4IEBA IGludCBpbnRlbF9ndWNfc2VsZWN0X2Z3KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiAgCWd1Yy0+ ZncubG9hZF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9OT05FOwo+ICAJZ3VjLT5mdy50eXBl ID0gSU5URUxfVUNfRldfVFlQRV9HVUM7Cj4gIAo+IC0JaWYgKGk5MTUuZ3VjX2Zpcm13YXJlX3Bh dGgpIHsKPiAtCQlndWMtPmZ3LnBhdGggPSBpOTE1Lmd1Y19maXJtd2FyZV9wYXRoOwo+ICsJaWYg KGk5MTVfcGFyYW1zLmd1Y19maXJtd2FyZV9wYXRoKSB7Cj4gKwkJZ3VjLT5mdy5wYXRoID0gaTkx NV9wYXJhbXMuZ3VjX2Zpcm13YXJlX3BhdGg7Cj4gIAkJZ3VjLT5mdy5tYWpvcl92ZXJfd2FudGVk ID0gMDsKPiAgCQlndWMtPmZ3Lm1pbm9yX3Zlcl93YW50ZWQgPSAwOwo+ICAJfSBlbHNlIGlmIChJ U19TS1lMQUtFKGRldl9wcml2KSkgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9ndWNfbG9nLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9nLmMK PiBpbmRleCAxNmQzYjg3Li5kMDIzZTU3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2d1Y19sb2cuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1 Y19sb2cuYwo+IEBAIC0xNDQsNyArMTQ0LDcgQEAgc3RhdGljIGludCBndWNfbG9nX3JlbGF5X2Zp bGVfY3JlYXRlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiAgCXN0cnVjdCBkZW50cnkgKmxvZ19k aXI7Cj4gIAlpbnQgcmV0Owo+ICAKPiAtCWlmIChpOTE1Lmd1Y19sb2dfbGV2ZWwgPCAwKQo+ICsJ aWYgKGk5MTVfcGFyYW1zLmd1Y19sb2dfbGV2ZWwgPCAwKQo+ICAJCXJldHVybiAwOwo+ICAKPiAg CS8qIEZvciBub3cgY3JlYXRlIHRoZSBsb2cgZmlsZSBpbiAvc3lzL2tlcm5lbC9kZWJ1Zy9kcmkv MCBkaXIgKi8KPiBAQCAtNDgwLDcgKzQ4MCw3IEBAIHN0YXRpYyBpbnQgZ3VjX2xvZ19sYXRlX3Nl dHVwKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiAgCWd1Y19sb2dfcnVudGltZV9kZXN0cm95KGd1 Yyk7Cj4gIGVycjoKPiAgCS8qIGxvZ2dpbmcgd2lsbCByZW1haW4gb2ZmICovCj4gLQlpOTE1Lmd1 Y19sb2dfbGV2ZWwgPSAtMTsKPiArCWk5MTVfcGFyYW1zLmd1Y19sb2dfbGV2ZWwgPSAtMTsKPiAg CXJldHVybiByZXQ7Cj4gIH0KPiAgCj4gQEAgLTUwMiw3ICs1MDIsNyBAQCBzdGF0aWMgdm9pZCBn dWNfZmx1c2hfbG9ncyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4gIHsKPiAgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGd1Y190b19pOTE1KGd1Yyk7Cj4gIAo+IC0JaWYgKCFp OTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbiB8fCAoaTkxNS5ndWNfbG9nX2xldmVsIDwgMCkpCj4g KwlpZiAoIWk5MTVfcGFyYW1zLmVuYWJsZV9ndWNfc3VibWlzc2lvbiB8fCAoaTkxNV9wYXJhbXMu Z3VjX2xvZ19sZXZlbCA8IDApKQo+ICAJCXJldHVybjsKPiAgCj4gIAkvKiBGaXJzdCBkaXNhYmxl IHRoZSBpbnRlcnJ1cHRzLCB3aWxsIGJlIHJlbmFibGVkIGFmdGVyd2FyZHMgKi8KPiBAQCAtNTI5 LDggKzUyOSw4IEBAIGludCBpbnRlbF9ndWNfbG9nX2NyZWF0ZShzdHJ1Y3QgaW50ZWxfZ3VjICpn dWMpCj4gIAo+ICAJR0VNX0JVR19PTihndWMtPmxvZy52bWEpOwo+ICAKPiAtCWlmIChpOTE1Lmd1 Y19sb2dfbGV2ZWwgPiBHVUNfTE9HX1ZFUkJPU0lUWV9NQVgpCj4gLQkJaTkxNS5ndWNfbG9nX2xl dmVsID0gR1VDX0xPR19WRVJCT1NJVFlfTUFYOwo+ICsJaWYgKGk5MTVfcGFyYW1zLmd1Y19sb2df bGV2ZWwgPiBHVUNfTE9HX1ZFUkJPU0lUWV9NQVgpCj4gKwkJaTkxNV9wYXJhbXMuZ3VjX2xvZ19s ZXZlbCA9IEdVQ19MT0dfVkVSQk9TSVRZX01BWDsKPiAgCj4gIAkvKiBUaGUgZmlyc3QgcGFnZSBp cyB0byBzYXZlIGxvZyBidWZmZXIgc3RhdGUuIEFsbG9jYXRlIG9uZQo+ICAJICogZXh0cmEgcGFn ZSBmb3Igb3RoZXJzIGluIGNhc2UgZm9yIG92ZXJsYXAgKi8KPiBAQCAtNTU1LDcgKzU1NSw3IEBA IGludCBpbnRlbF9ndWNfbG9nX2NyZWF0ZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4gIAo+ICAJ Z3VjLT5sb2cudm1hID0gdm1hOwo+ICAKPiAtCWlmIChpOTE1Lmd1Y19sb2dfbGV2ZWwgPj0gMCkg ewo+ICsJaWYgKGk5MTVfcGFyYW1zLmd1Y19sb2dfbGV2ZWwgPj0gMCkgewo+ICAJCXJldCA9IGd1 Y19sb2dfcnVudGltZV9jcmVhdGUoZ3VjKTsKPiAgCQlpZiAocmV0IDwgMCkKPiAgCQkJZ290byBl cnJfdm1hOwo+IEBAIC01NzYsNyArNTc2LDcgQEAgaW50IGludGVsX2d1Y19sb2dfY3JlYXRlKHN0 cnVjdCBpbnRlbF9ndWMgKmd1YykKPiAgCWk5MTVfdm1hX3VucGluX2FuZF9yZWxlYXNlKCZndWMt PmxvZy52bWEpOwo+ICBlcnI6Cj4gIAkvKiBsb2dnaW5nIHdpbGwgYmUgb2ZmICovCj4gLQlpOTE1 Lmd1Y19sb2dfbGV2ZWwgPSAtMTsKPiArCWk5MTVfcGFyYW1zLmd1Y19sb2dfbGV2ZWwgPSAtMTsK PiAgCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4gQEAgLTYwMCw3ICs2MDAsNyBAQCBpbnQgaTkxNV9n dWNfbG9nX2NvbnRyb2woc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1NjQgY29u dHJvbF92YWwpCj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAo+ICAJLyogVGhpcyBjb21iaW5hdGlv biBkb2Vzbid0IG1ha2Ugc2Vuc2UgJiB3b24ndCBoYXZlIGFueSBlZmZlY3QgKi8KPiAtCWlmICgh bG9nX3BhcmFtLmxvZ2dpbmdfZW5hYmxlZCAmJiAoaTkxNS5ndWNfbG9nX2xldmVsIDwgMCkpCj4g KwlpZiAoIWxvZ19wYXJhbS5sb2dnaW5nX2VuYWJsZWQgJiYgKGk5MTVfcGFyYW1zLmd1Y19sb2df bGV2ZWwgPCAwKSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gIAlyZXQgPSBndWNfbG9nX2NvbnRyb2wo Z3VjLCBsb2dfcGFyYW0udmFsdWUpOwo+IEBAIC02MTAsNyArNjEwLDcgQEAgaW50IGk5MTVfZ3Vj X2xvZ19jb250cm9sKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTY0IGNvbnRy b2xfdmFsKQo+ICAJfQo+ICAKPiAgCWlmIChsb2dfcGFyYW0ubG9nZ2luZ19lbmFibGVkKSB7Cj4g LQkJaTkxNS5ndWNfbG9nX2xldmVsID0gbG9nX3BhcmFtLnZlcmJvc2l0eTsKPiArCQlpOTE1X3Bh cmFtcy5ndWNfbG9nX2xldmVsID0gbG9nX3BhcmFtLnZlcmJvc2l0eTsKPiAgCj4gIAkJLyogSWYg bG9nX2xldmVsIHdhcyBzZXQgYXMgLTEgYXQgYm9vdCB0aW1lLCB0aGVuIHRoZSByZWxheSBjaGFu bmVsIGZpbGUKPiAgCQkgKiB3b3VsZG4ndCBoYXZlIGJlZW4gY3JlYXRlZCBieSBub3cgYW5kIGlu dGVycnVwdHMgYWxzbyB3b3VsZCBub3QgaGF2ZQo+IEBAIC02MzMsNyArNjMzLDcgQEAgaW50IGk5 MTVfZ3VjX2xvZ19jb250cm9sKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTY0 IGNvbnRyb2xfdmFsKQo+ICAJCWd1Y19mbHVzaF9sb2dzKGd1Yyk7Cj4gIAo+ICAJCS8qIEFzIGxv Z2dpbmcgaXMgZGlzYWJsZWQsIHVwZGF0ZSBsb2cgbGV2ZWwgdG8gcmVmbGVjdCB0aGF0ICovCj4g LQkJaTkxNS5ndWNfbG9nX2xldmVsID0gLTE7Cj4gKwkJaTkxNV9wYXJhbXMuZ3VjX2xvZ19sZXZl bCA9IC0xOwo+ICAJfQo+ICAKPiAgCXJldHVybiByZXQ7Cj4gQEAgLTY0MSw3ICs2NDEsNyBAQCBp bnQgaTkxNV9ndWNfbG9nX2NvbnRyb2woc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LCB1NjQgY29udHJvbF92YWwpCj4gIAo+ICB2b2lkIGk5MTVfZ3VjX2xvZ19yZWdpc3RlcihzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAtCWlmICghaTkxNS5lbmFibGVf Z3VjX3N1Ym1pc3Npb24gfHwgaTkxNS5ndWNfbG9nX2xldmVsIDwgMCkKPiArCWlmICghaTkxNV9w YXJhbXMuZW5hYmxlX2d1Y19zdWJtaXNzaW9uIHx8IGk5MTVfcGFyYW1zLmd1Y19sb2dfbGV2ZWwg PCAwKQo+ICAJCXJldHVybjsKPiAgCj4gIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVj dF9tdXRleCk7Cj4gQEAgLTY1MSw3ICs2NTEsNyBAQCB2b2lkIGk5MTVfZ3VjX2xvZ19yZWdpc3Rl cihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAo+ICB2b2lkIGk5MTVfZ3Vj X2xvZ191bnJlZ2lzdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+ IC0JaWYgKCFpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbikKPiArCWlmICghaTkxNV9wYXJhbXMu ZW5hYmxlX2d1Y19zdWJtaXNzaW9uKQo+ICAJCXJldHVybjsKPiAgCj4gIAltdXRleF9sb2NrKCZk ZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2d2dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3Z0LmMKPiBp bmRleCBjMTdlZDBlLi4zOTEwZjEzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2d2dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3Z0LmMKPiBA QCAtNTgsNyArNTgsNyBAQCBzdGF0aWMgYm9vbCBpc19zdXBwb3J0ZWRfZGV2aWNlKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgICovCj4gIHZvaWQgaW50ZWxfZ3Z0X3Nhbml0 aXplX29wdGlvbnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gLQlp ZiAoIWk5MTUuZW5hYmxlX2d2dCkKPiArCWlmICghaTkxNV9wYXJhbXMuZW5hYmxlX2d2dCkKPiAg CQlyZXR1cm47Cj4gIAo+ICAJaWYgKGludGVsX3ZncHVfYWN0aXZlKGRldl9wcml2KSkgewo+IEBA IC03Myw3ICs3Myw3IEBAIHZvaWQgaW50ZWxfZ3Z0X3Nhbml0aXplX29wdGlvbnMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAKPiAgCXJldHVybjsKPiAgYmFpbDoKPiAtCWk5 MTUuZW5hYmxlX2d2dCA9IDA7Cj4gKwlpOTE1X3BhcmFtcy5lbmFibGVfZ3Z0ID0gMDsKPiAgfQo+ ICAKPiAgLyoqCj4gQEAgLTkwLDE3ICs5MCwxNyBAQCBpbnQgaW50ZWxfZ3Z0X2luaXQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gIAlpbnQgcmV0Owo+ICAKPiAtCWlm ICghaTkxNS5lbmFibGVfZ3Z0KSB7Cj4gKwlpZiAoIWk5MTVfcGFyYW1zLmVuYWJsZV9ndnQpIHsK PiAgCQlEUk1fREVCVUdfRFJJVkVSKCJHVlQtZyBpcyBkaXNhYmxlZCBieSBrZXJuZWwgcGFyYW1z XG4iKTsKPiAgCQlyZXR1cm4gMDsKPiAgCX0KPiAgCj4gLQlpZiAoIWk5MTUuZW5hYmxlX2V4ZWNs aXN0cykgewo+ICsJaWYgKCFpOTE1X3BhcmFtcy5lbmFibGVfZXhlY2xpc3RzKSB7Cj4gIAkJRFJN X0VSUk9SKCJpOTE1IEdWVC1nIGxvYWRpbmcgZmFpbGVkIGR1ZSB0byBkaXNhYmxlZCBleGVjbGlz dHMgbW9kZVxuIik7Cj4gIAkJcmV0dXJuIC1FSU87Cj4gIAl9Cj4gIAo+IC0JaWYgKGk5MTUuZW5h YmxlX2d1Y19zdWJtaXNzaW9uKSB7Cj4gKwlpZiAoaTkxNV9wYXJhbXMuZW5hYmxlX2d1Y19zdWJt aXNzaW9uKSB7Cj4gIAkJRFJNX0VSUk9SKCJpOTE1IEdWVC1nIGxvYWRpbmcgZmFpbGVkIGR1ZSB0 byBHcmFwaGljcyB2aXJ0dWFsaXphdGlvbiBpcyBub3QgeWV0IHN1cHBvcnRlZCB3aXRoIEd1QyBz dWJtaXNzaW9uXG4iKTsKPiAgCQlyZXR1cm4gLUVJTzsKPiAgCX0KPiBAQCAtMTIzLDcgKzEyMyw3 IEBAIGludCBpbnRlbF9ndnRfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4gIAlyZXR1cm4gMDsKPiAgCj4gIGJhaWw6Cj4gLQlpOTE1LmVuYWJsZV9ndnQgPSAwOwo+ICsJ aTkxNV9wYXJhbXMuZW5hYmxlX2d2dCA9IDA7Cj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGFuZ2NoZWNrLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9oYW5nY2hlY2suYwo+IGluZGV4IGQ5ZDg3ZDkuLmEwYjQ0Nzgg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGFuZ2NoZWNrLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oYW5nY2hlY2suYwo+IEBAIC00MjgsNyAr NDI4LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9oYW5nY2hlY2tfZWxhcHNlZChzdHJ1Y3Qgd29ya19z dHJ1Y3QgKndvcmspCj4gIAl1bnNpZ25lZCBpbnQgaHVuZyA9IDAsIHN0dWNrID0gMDsKPiAgCWlu dCBidXN5X2NvdW50ID0gMDsKPiAgCj4gLQlpZiAoIWk5MTUuZW5hYmxlX2hhbmdjaGVjaykKPiAr CWlmICghaTkxNV9wYXJhbXMuZW5hYmxlX2hhbmdjaGVjaykKPiAgCQlyZXR1cm47Cj4gIAo+ICAJ aWYgKCFSRUFEX09OQ0UoZGV2X3ByaXYtPmd0LmF3YWtlKSkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9o dWMuYwo+IGluZGV4IDYxNDVmYTAuLjE1N2M3ODggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfaHVjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9o dWMuYwo+IEBAIC0xNTUsOCArMTU1LDggQEAgdm9pZCBpbnRlbF9odWNfc2VsZWN0X2Z3KHN0cnVj dCBpbnRlbF9odWMgKmh1YykKPiAgCWh1Yy0+ZncubG9hZF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJN V0FSRV9OT05FOwo+ICAJaHVjLT5mdy50eXBlID0gSU5URUxfVUNfRldfVFlQRV9IVUM7Cj4gIAo+ IC0JaWYgKGk5MTUuaHVjX2Zpcm13YXJlX3BhdGgpIHsKPiAtCQlodWMtPmZ3LnBhdGggPSBpOTE1 Lmh1Y19maXJtd2FyZV9wYXRoOwo+ICsJaWYgKGk5MTVfcGFyYW1zLmh1Y19maXJtd2FyZV9wYXRo KSB7Cj4gKwkJaHVjLT5mdy5wYXRoID0gaTkxNV9wYXJhbXMuaHVjX2Zpcm13YXJlX3BhdGg7Cj4g IAkJaHVjLT5mdy5tYWpvcl92ZXJfd2FudGVkID0gMDsKPiAgCQlodWMtPmZ3Lm1pbm9yX3Zlcl93 YW50ZWQgPSAwOwo+ICAJfSBlbHNlIGlmIChJU19TS1lMQUtFKGRldl9wcml2KSkgewo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2xyYy5jCj4gaW5kZXggZDg5ZTFiOC4uMWZlY2JkMiAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2xyYy5jCj4gQEAgLTI0NCw3ICsyNDQsNyBAQCBpbnQgaW50ZWxfc2FuaXRp emVfZW5hYmxlX2V4ZWNsaXN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGlu dCBlbmFibAo+ICAKPiAgCWlmIChIQVNfTE9HSUNBTF9SSU5HX0NPTlRFWFRTKGRldl9wcml2KSAm Jgo+ICAJICAgIFVTRVNfUFBHVFQoZGV2X3ByaXYpICYmCj4gLQkgICAgaTkxNS51c2VfbW1pb19m bGlwID49IDApCj4gKwkgICAgaTkxNV9wYXJhbXMudXNlX21taW9fZmxpcCA+PSAwKQo+ICAJCXJl dHVybiAxOwo+ICAKPiAgCXJldHVybiAwOwo+IEBAIC05MTQsNyArOTE0LDcgQEAgc3RhdGljIGlu dCBleGVjbGlzdHNfcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cXVlc3QpCj4gIAkgKi8KPiAgCXJlcXVlc3QtPnJlc2VydmVkX3NwYWNlICs9IEVYRUNMSVNUU19S RVFVRVNUX1NJWkU7Cj4gIAo+IC0JaWYgKGk5MTUuZW5hYmxlX2d1Y19zdWJtaXNzaW9uKSB7Cj4g KwlpZiAoaTkxNV9wYXJhbXMuZW5hYmxlX2d1Y19zdWJtaXNzaW9uKSB7Cj4gIAkJLyoKPiAgCQkg KiBDaGVjayB0aGF0IHRoZSBHdUMgaGFzIHNwYWNlIGZvciB0aGUgcmVxdWVzdCBiZWZvcmUKPiAg CQkgKiBnb2luZyBhbnkgZnVydGhlciwgYXMgdGhlIGk5MTVfYWRkX3JlcXVlc3QoKSBjYWxsCj4g QEAgLTk1MCw3ICs5NTAsNyBAQCBzdGF0aWMgaW50IGV4ZWNsaXN0c19yZXF1ZXN0X2FsbG9jKHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKPiAgCXJldHVybiAwOwo+ICAKPiAg ZXJyX3VucmVzZXJ2ZToKPiAtCWlmIChpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbikKPiArCWlm IChpOTE1X3BhcmFtcy5lbmFibGVfZ3VjX3N1Ym1pc3Npb24pCj4gIAkJaTkxNV9ndWNfd3FfdW5y ZXNlcnZlKHJlcXVlc3QpOwo+ICBlcnI6Cj4gIAlyZXR1cm4gcmV0Owo+IEBAIC0xMjg1LDcgKzEy ODUsNyBAQCBzdGF0aWMgaW50IGdlbjhfaW5pdF9jb21tb25fcmluZyhzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCj4gIAkJc3VibWl0ID0gdHJ1ZTsKPiAgCX0KPiAgCj4gLQlpZiAoc3Vi bWl0ICYmICFpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbikKPiArCWlmIChzdWJtaXQgJiYgIWk5 MTVfcGFyYW1zLmVuYWJsZV9ndWNfc3VibWlzc2lvbikKPiAgCQlleGVjbGlzdHNfc3VibWl0X3Bv cnRzKGVuZ2luZSk7Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2x2ZHMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2ZHMu Ywo+IGluZGV4IGE5ODEzYWUuLjQ5MWZkZjggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfbHZkcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHZk cy5jCj4gQEAgLTg4MCw4ICs4ODAsOCBAQCBzdGF0aWMgYm9vbCBjb21wdXRlX2lzX2R1YWxfbGlu a19sdmRzKHN0cnVjdCBpbnRlbF9sdmRzX2VuY29kZXIgKmx2ZHNfZW5jb2RlcikKPiAgCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAgCj4gIAkvKiB1 c2UgdGhlIG1vZHVsZSBvcHRpb24gdmFsdWUgaWYgc3BlY2lmaWVkICovCj4gLQlpZiAoaTkxNS5s dmRzX2NoYW5uZWxfbW9kZSA+IDApCj4gLQkJcmV0dXJuIGk5MTUubHZkc19jaGFubmVsX21vZGUg PT0gMjsKPiArCWlmIChpOTE1X3BhcmFtcy5sdmRzX2NoYW5uZWxfbW9kZSA+IDApCj4gKwkJcmV0 dXJuIGk5MTVfcGFyYW1zLmx2ZHNfY2hhbm5lbF9tb2RlID09IDI7Cj4gIAo+ICAJLyogc2luZ2xl IGNoYW5uZWwgTFZEUyBpcyBsaW1pdGVkIHRvIDExMiBNSHogKi8KPiAgCWlmIChsdmRzX2VuY29k ZXItPmF0dGFjaGVkX2Nvbm5lY3Rvci0+YmFzZS5wYW5lbC5maXhlZF9tb2RlLT5jbG9jawo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vcHJlZ2lvbi5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ByZWdpb24uYwo+IGluZGV4IDk4MTU0ZWYuLjEwZTNhNGFl IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX29wcmVnaW9uLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vcHJlZ2lvbi5jCj4gQEAgLTkyMSw3ICs5 MjEsNyBAQCBzdGF0aWMgaW50IGludGVsX2xvYWRfdmJ0X2Zpcm13YXJlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+ICAJc3RydWN0IGludGVsX29wcmVnaW9uICpvcHJl Z2lvbiA9ICZkZXZfcHJpdi0+b3ByZWdpb247Cj4gIAljb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3 ID0gTlVMTDsKPiAtCWNvbnN0IGNoYXIgKm5hbWUgPSBpOTE1LnZidF9maXJtd2FyZTsKPiArCWNv bnN0IGNoYXIgKm5hbWUgPSBpOTE1X3BhcmFtcy52YnRfZmlybXdhcmU7Cj4gIAlpbnQgcmV0Owo+ ICAKPiAgCWlmICghbmFtZSB8fCAhKm5hbWUpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3BhbmVsLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5j Cj4gaW5kZXggZDRkZDI0OC4uNjJlMjVlZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9wYW5lbC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFu ZWwuYwo+IEBAIC0zNzksMTMgKzM3OSwxMyBAQCBlbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVzCj4g IGludGVsX3BhbmVsX2RldGVjdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g IHsKPiAgCS8qIEFzc3VtZSB0aGF0IHRoZSBCSU9TIGRvZXMgbm90IGxpZSB0aHJvdWdoIHRoZSBP cFJlZ2lvbi4uLiAqLwo+IC0JaWYgKCFpOTE1LnBhbmVsX2lnbm9yZV9saWQgJiYgZGV2X3ByaXYt Pm9wcmVnaW9uLmxpZF9zdGF0ZSkgewo+ICsJaWYgKCFpOTE1X3BhcmFtcy5wYW5lbF9pZ25vcmVf bGlkICYmIGRldl9wcml2LT5vcHJlZ2lvbi5saWRfc3RhdGUpIHsKPiAgCQlyZXR1cm4gKmRldl9w cml2LT5vcHJlZ2lvbi5saWRfc3RhdGUgJiAweDEgPwo+ICAJCQljb25uZWN0b3Jfc3RhdHVzX2Nv bm5lY3RlZCA6Cj4gIAkJCWNvbm5lY3Rvcl9zdGF0dXNfZGlzY29ubmVjdGVkOwo+ICAJfQo+ICAK PiAtCXN3aXRjaCAoaTkxNS5wYW5lbF9pZ25vcmVfbGlkKSB7Cj4gKwlzd2l0Y2ggKGk5MTVfcGFy YW1zLnBhbmVsX2lnbm9yZV9saWQpIHsKPiAgCWNhc2UgLTI6Cj4gIAkJcmV0dXJuIGNvbm5lY3Rv cl9zdGF0dXNfY29ubmVjdGVkOwo+ICAJY2FzZSAtMToKPiBAQCAtNDY1LDEwICs0NjUsMTAgQEAg c3RhdGljIHUzMiBpbnRlbF9wYW5lbF9jb21wdXRlX2JyaWdodG5lc3Moc3RydWN0IGludGVsX2Nv bm5lY3RvciAqY29ubmVjdG9yLAo+ICAKPiAgCVdBUk5fT04ocGFuZWwtPmJhY2tsaWdodC5tYXgg PT0gMCk7Cj4gIAo+IC0JaWYgKGk5MTUuaW52ZXJ0X2JyaWdodG5lc3MgPCAwKQo+ICsJaWYgKGk5 MTVfcGFyYW1zLmludmVydF9icmlnaHRuZXNzIDwgMCkKPiAgCQlyZXR1cm4gdmFsOwo+ICAKPiAt CWlmIChpOTE1LmludmVydF9icmlnaHRuZXNzID4gMCB8fAo+ICsJaWYgKGk5MTVfcGFyYW1zLmlu dmVydF9icmlnaHRuZXNzID4gMCB8fAo+ICAJICAgIGRldl9wcml2LT5xdWlya3MgJiBRVUlSS19J TlZFUlRfQlJJR0hUTkVTUykgewo+ICAJCXJldHVybiBwYW5lbC0+YmFja2xpZ2h0Lm1heCAtIHZh bCArIHBhbmVsLT5iYWNrbGlnaHQubWluOwo+ICAJfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ IGluZGV4IGZhOTA1NWEuLjEyMjU4NTMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiBA QCAtNzgyNiw3ICs3ODI2LDcgQEAgdm9pZCBpbnRlbF9pbml0X2d0X3Bvd2Vyc2F2ZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkgKiBSUE0gZGVwZW5kcyBvbiBSQzYgdG8g c2F2ZSByZXN0b3JlIHRoZSBHVCBIVyBjb250ZXh0LCBzbyBtYWtlIFJDNiBhCj4gIAkgKiByZXF1 aXJlbWVudC4KPiAgCSAqLwo+IC0JaWYgKCFpOTE1LmVuYWJsZV9yYzYpIHsKPiArCWlmICghaTkx NV9wYXJhbXMuZW5hYmxlX3JjNikgewo+ICAJCURSTV9JTkZPKCJSQzYgZGlzYWJsZWQsIGRpc2Fi bGluZyBydW50aW1lIFBNIHN1cHBvcnRcbiIpOwo+ICAJCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRl dl9wcml2KTsKPiAgCX0KPiBAQCAtNzg4Myw3ICs3ODgzLDcgQEAgdm9pZCBpbnRlbF9jbGVhbnVw X2d0X3Bvd2Vyc2F2ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlpZiAo SVNfVkFMTEVZVklFVyhkZXZfcHJpdikpCj4gIAkJdmFsbGV5dmlld19jbGVhbnVwX2d0X3Bvd2Vy c2F2ZShkZXZfcHJpdik7Cj4gIAo+IC0JaWYgKCFpOTE1LmVuYWJsZV9yYzYpCj4gKwlpZiAoIWk5 MTVfcGFyYW1zLmVuYWJsZV9yYzYpCj4gIAkJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYp Owo+ICB9Cj4gIAo+IEBAIC04MDA1LDcgKzgwMDUsNyBAQCBzdGF0aWMgdm9pZCBfX2ludGVsX2F1 dG9lbmFibGVfZ3RfcG93ZXJzYXZlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiAgCWlmIChJ U19FUlIocmVxKSkKPiAgCQlnb3RvIHVubG9jazsKPiAgCj4gLQlpZiAoIWk5MTUuZW5hYmxlX2V4 ZWNsaXN0cyAmJiBpOTE1X3N3aXRjaF9jb250ZXh0KHJlcSkgPT0gMCkKPiArCWlmICghaTkxNV9w YXJhbXMuZW5hYmxlX2V4ZWNsaXN0cyAmJiBpOTE1X3N3aXRjaF9jb250ZXh0KHJlcSkgPT0gMCkK PiAgCQlyY3MtPmluaXRfY29udGV4dChyZXEpOwo+ICAKPiAgCS8qIE1hcmsgdGhlIGRldmljZSBi dXN5LCBjYWxsaW5nIGludGVsX2VuYWJsZV9ndF9wb3dlcnNhdmUoKSAqLwo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3Bzci5jCj4gaW5kZXggZmRkOWUzZC4uNzY3MzdmYyAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3Bzci5jCj4gQEAgLTM5NSw3ICszOTUsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9wc3Jf bWF0Y2hfY29uZGl0aW9ucyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICAJCXJldHVybiBm YWxzZTsKPiAgCX0KPiAgCj4gLQlpZiAoIWk5MTUuZW5hYmxlX3Bzcikgewo+ICsJaWYgKCFpOTE1 X3BhcmFtcy5lbmFibGVfcHNyKSB7Cj4gIAkJRFJNX0RFQlVHX0tNUygiUFNSIGRpc2FibGUgYnkg ZmxhZ1xuIik7Cj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAJfQo+IEBAIC05MzcsOCArOTM3LDggQEAg dm9pZCBpbnRlbF9wc3JfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g IAkJSFNXX0VEUF9QU1JfQkFTRSA6IEJEV19FRFBfUFNSX0JBU0U7Cj4gIAo+ICAJLyogUGVyIHBs YXRmb3JtIGRlZmF1bHQ6IGFsbCBkaXNhYmxlZC4gKi8KPiAtCWlmIChpOTE1LmVuYWJsZV9wc3Ig PT0gLTEpCj4gLQkJaTkxNS5lbmFibGVfcHNyID0gMDsKPiArCWlmIChpOTE1X3BhcmFtcy5lbmFi bGVfcHNyID09IC0xKQo+ICsJCWk5MTVfcGFyYW1zLmVuYWJsZV9wc3IgPSAwOwo+ICAKPiAgCS8q IFNldCBsaW5rX3N0YW5kYnkgeCBsaW5rX29mZiBkZWZhdWx0cyAqLwo+ICAJaWYgKElTX0hBU1dF TEwoZGV2X3ByaXYpIHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikpCj4gQEAgLTk1MiwxMSArOTUy LDExIEBAIHZvaWQgaW50ZWxfcHNyX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ICAJCWRldl9wcml2LT5wc3IubGlua19zdGFuZGJ5ID0gZGV2X3ByaXYtPnZidC5wc3Iu ZnVsbF9saW5rOwo+ICAKPiAgCS8qIE92ZXJyaWRlIGxpbmtfc3RhbmRieSB4IGxpbmtfb2ZmIGRl ZmF1bHRzICovCj4gLQlpZiAoaTkxNS5lbmFibGVfcHNyID09IDIgJiYgIWRldl9wcml2LT5wc3Iu bGlua19zdGFuZGJ5KSB7Cj4gKwlpZiAoaTkxNV9wYXJhbXMuZW5hYmxlX3BzciA9PSAyICYmICFk ZXZfcHJpdi0+cHNyLmxpbmtfc3RhbmRieSkgewo+ICAJCURSTV9ERUJVR19LTVMoIlBTUjogRm9y Y2luZyBsaW5rIHN0YW5kYnlcbiIpOwo+ICAJCWRldl9wcml2LT5wc3IubGlua19zdGFuZGJ5ID0g dHJ1ZTsKPiAgCX0KPiAtCWlmIChpOTE1LmVuYWJsZV9wc3IgPT0gMyAmJiBkZXZfcHJpdi0+cHNy Lmxpbmtfc3RhbmRieSkgewo+ICsJaWYgKGk5MTVfcGFyYW1zLmVuYWJsZV9wc3IgPT0gMyAmJiBk ZXZfcHJpdi0+cHNyLmxpbmtfc3RhbmRieSkgewo+ICAJCURSTV9ERUJVR19LTVMoIlBTUjogRm9y Y2luZyBtYWluIGxpbmsgb2ZmXG4iKTsKPiAgCQlkZXZfcHJpdi0+cHNyLmxpbmtfc3RhbmRieSA9 IGZhbHNlOwo+ICAJfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9y aW5nYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiBp bmRleCAyNjgzNDI0Li5kMmMxYzBiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3JpbmdidWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jp bmdidWZmZXIuYwo+IEBAIC0xOTg0LDcgKzE5ODQsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9yaW5n X2luaXRfc2VtYXBob3JlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+ICAJaW50IHJldCwgaTsKPiAgCj4gLQlp ZiAoIWk5MTUuc2VtYXBob3JlcykKPiArCWlmICghaTkxNV9wYXJhbXMuc2VtYXBob3JlcykKPiAg CQlyZXR1cm47Cj4gIAo+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCAmJiAhZGV2X3By aXYtPnNlbWFwaG9yZSkgewo+IEBAIC0yMDg0LDcgKzIwODQsNyBAQCBzdGF0aWMgdm9pZCBpbnRl bF9yaW5nX2luaXRfc2VtYXBob3JlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Cj4gIAlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7Cj4gIGVycjoKPiAgCURSTV9ERUJVR19EUklW RVIoIkZhaWxlZCB0byBhbGxvY2F0ZSBzcGFjZSBmb3Igc2VtYXBob3JlcywgZGlzYWJsaW5nXG4i KTsKPiAtCWk5MTUuc2VtYXBob3JlcyA9IDA7Cj4gKwlpOTE1X3BhcmFtcy5zZW1hcGhvcmVzID0g MDsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgaW50ZWxfcmluZ19pbml0X2lycShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gQEAgLTIxMzksNyArMjEzOSw3IEBAIHN0YXRpYyB2 b2lkIGludGVsX3JpbmdfZGVmYXVsdF92ZnVuY3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+ICAKPiAgCWVuZ2luZS0+ZW1pdF9icmVhZGNydW1iID0gaTl4eF9lbWl0X2JyZWFk Y3J1bWI7Cj4gIAllbmdpbmUtPmVtaXRfYnJlYWRjcnVtYl9zeiA9IGk5eHhfZW1pdF9icmVhZGNy dW1iX3N6Owo+IC0JaWYgKGk5MTUuc2VtYXBob3Jlcykgewo+ICsJaWYgKGk5MTVfcGFyYW1zLnNl bWFwaG9yZXMpIHsKPiAgCQlpbnQgbnVtX3JpbmdzOwo+ICAKPiAgCQllbmdpbmUtPmVtaXRfYnJl YWRjcnVtYiA9IGdlbjZfc2VtYV9lbWl0X2JyZWFkY3J1bWI7Cj4gQEAgLTIxODMsNyArMjE4Myw3 IEBAIGludCBpbnRlbF9pbml0X3JlbmRlcl9yaW5nX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCj4gIAkJZW5naW5lLT5lbWl0X2JyZWFkY3J1bWIgPSBnZW44X3JlbmRlcl9l bWl0X2JyZWFkY3J1bWI7Cj4gIAkJZW5naW5lLT5lbWl0X2JyZWFkY3J1bWJfc3ogPSBnZW44X3Jl bmRlcl9lbWl0X2JyZWFkY3J1bWJfc3o7Cj4gIAkJZW5naW5lLT5lbWl0X2ZsdXNoID0gZ2VuOF9y ZW5kZXJfcmluZ19mbHVzaDsKPiAtCQlpZiAoaTkxNS5zZW1hcGhvcmVzKSB7Cj4gKwkJaWYgKGk5 MTVfcGFyYW1zLnNlbWFwaG9yZXMpIHsKPiAgCQkJaW50IG51bV9yaW5nczsKPiAgCj4gIAkJCWVu Z2luZS0+c2VtYXBob3JlLnNpZ25hbCA9IGdlbjhfcmNzX3NpZ25hbDsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCj4gaW5kZXggYTNiZmI5Zi4uZTMwYjEwYSAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKPiBAQCAtMjQxMyw3ICsyNDEz LDcgQEAgc3RhdGljIHVpbnQzMl90IGdldF9hbGxvd2VkX2RjX21hc2soY29uc3Qgc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCW1hc2sgPSAwOwo+ICAJfQo+ICAKPiAtCWlm ICghaTkxNS5kaXNhYmxlX3Bvd2VyX3dlbGwpCj4gKwlpZiAoIWk5MTVfcGFyYW1zLmRpc2FibGVf cG93ZXJfd2VsbCkKPiAgCQltYXhfZGMgPSAwOwo+ICAKPiAgCWlmIChlbmFibGVfZGMgPj0gMCAm JiBlbmFibGVfZGMgPD0gbWF4X2RjKSB7Cj4gQEAgLTI0NzEsMTAgKzI0NzEsMTAgQEAgaW50IGlu dGVsX3Bvd2VyX2RvbWFpbnNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4gIHsKPiAgCXN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFpbnMgKnBvd2VyX2RvbWFpbnMgPSAmZGV2 X3ByaXYtPnBvd2VyX2RvbWFpbnM7Cj4gIAo+IC0JaTkxNS5kaXNhYmxlX3Bvd2VyX3dlbGwgPSBz YW5pdGl6ZV9kaXNhYmxlX3Bvd2VyX3dlbGxfb3B0aW9uKGRldl9wcml2LAo+IC0JCQkJCQkgICAg IGk5MTUuZGlzYWJsZV9wb3dlcl93ZWxsKTsKPiArCWk5MTVfcGFyYW1zLmRpc2FibGVfcG93ZXJf d2VsbCA9IHNhbml0aXplX2Rpc2FibGVfcG93ZXJfd2VsbF9vcHRpb24oZGV2X3ByaXYsCj4gKwkJ CQkJCSAgICAgaTkxNV9wYXJhbXMuZGlzYWJsZV9wb3dlcl93ZWxsKTsKPiAgCWRldl9wcml2LT5j c3IuYWxsb3dlZF9kY19tYXNrID0gZ2V0X2FsbG93ZWRfZGNfbWFzayhkZXZfcHJpdiwKPiAtCQkJ CQkJCSAgICBpOTE1LmVuYWJsZV9kYyk7Cj4gKwkJCQkJCQkgICAgaTkxNV9wYXJhbXMuZW5hYmxl X2RjKTsKPiAgCj4gIAlCVUlMRF9CVUdfT04oUE9XRVJfRE9NQUlOX05VTSA+IDY0KTsKPiAgCj4g QEAgLTI1MzUsNyArMjUzNSw3IEBAIHZvaWQgaW50ZWxfcG93ZXJfZG9tYWluc19maW5pKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCWludGVsX2Rpc3BsYXlfc2V0X2luaXRf cG93ZXIoZGV2X3ByaXYsIHRydWUpOwo+ICAKPiAgCS8qIFJlbW92ZSB0aGUgcmVmY291bnQgd2Ug dG9vayB0byBrZWVwIHBvd2VyIHdlbGwgc3VwcG9ydCBkaXNhYmxlZC4gKi8KPiAtCWlmICghaTkx NS5kaXNhYmxlX3Bvd2VyX3dlbGwpCj4gKwlpZiAoIWk5MTVfcGFyYW1zLmRpc2FibGVfcG93ZXJf d2VsbCkKPiAgCQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgUE9XRVJfRE9NQUlO X0lOSVQpOwo+ICAKPiAgCS8qCj4gQEAgLTI5OTUsNyArMjk5NSw3IEBAIHZvaWQgaW50ZWxfcG93 ZXJfZG9tYWluc19pbml0X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgYm9v bCByZXN1bWUpCj4gIAkvKiBGb3Igbm93LCB3ZSBuZWVkIHRoZSBwb3dlciB3ZWxsIHRvIGJlIGFs d2F5cyBlbmFibGVkLiAqLwo+ICAJaW50ZWxfZGlzcGxheV9zZXRfaW5pdF9wb3dlcihkZXZfcHJp diwgdHJ1ZSk7Cj4gIAkvKiBEaXNhYmxlIHBvd2VyIHN1cHBvcnQgaWYgdGhlIHVzZXIgYXNrZWQg c28uICovCj4gLQlpZiAoIWk5MTUuZGlzYWJsZV9wb3dlcl93ZWxsKQo+ICsJaWYgKCFpOTE1X3Bh cmFtcy5kaXNhYmxlX3Bvd2VyX3dlbGwpCj4gIAkJaW50ZWxfZGlzcGxheV9wb3dlcl9nZXQoZGV2 X3ByaXYsIFBPV0VSX0RPTUFJTl9JTklUKTsKPiAgCWludGVsX3Bvd2VyX2RvbWFpbnNfc3luY19o dyhkZXZfcHJpdik7Cj4gIAlwb3dlcl9kb21haW5zLT5pbml0aWFsaXppbmcgPSBmYWxzZTsKPiBA QCAtMzAxNCw3ICszMDE0LDcgQEAgdm9pZCBpbnRlbF9wb3dlcl9kb21haW5zX3N1c3BlbmQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJICogRXZlbiBpZiBwb3dlciB3ZWxs IHN1cHBvcnQgd2FzIGRpc2FibGVkIHdlIHN0aWxsIHdhbnQgdG8gZGlzYWJsZQo+ICAJICogcG93 ZXIgd2VsbHMgd2hpbGUgd2UgYXJlIHN5c3RlbSBzdXNwZW5kZWQuCj4gIAkgKi8KPiAtCWlmICgh aTkxNS5kaXNhYmxlX3Bvd2VyX3dlbGwpCj4gKwlpZiAoIWk5MTVfcGFyYW1zLmRpc2FibGVfcG93 ZXJfd2VsbCkKPiAgCQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgUE9XRVJfRE9N QUlOX0lOSVQpOwo+ICAKPiAgCWlmIChJU19DQU5OT05MQUtFKGRldl9wcml2KSkKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3VjLmMKPiBpbmRleCAwMTc4YmE0Li5lZDA2ODZkIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF91Yy5jCj4gQEAgLTYzLDM1ICs2MywzNSBAQCBzdGF0aWMgaW50IF9faW50ZWxfdWNf cmVzZXRfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB2b2lkIGludGVs X3VjX3Nhbml0aXplX29wdGlvbnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ ICB7Cj4gIAlpZiAoIUhBU19HVUMoZGV2X3ByaXYpKSB7Cj4gLQkJaWYgKGk5MTUuZW5hYmxlX2d1 Y19sb2FkaW5nID4gMCB8fAo+IC0JCSAgICBpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbiA+IDAp Cj4gKwkJaWYgKGk5MTVfcGFyYW1zLmVuYWJsZV9ndWNfbG9hZGluZyA+IDAgfHwKPiArCQkgICAg aTkxNV9wYXJhbXMuZW5hYmxlX2d1Y19zdWJtaXNzaW9uID4gMCkKPiAgCQkJRFJNX0lORk8oIkln bm9yaW5nIEd1QyBvcHRpb25zLCBubyBoYXJkd2FyZVxuIik7Cj4gIAo+IC0JCWk5MTUuZW5hYmxl X2d1Y19sb2FkaW5nID0gMDsKPiAtCQlpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbiA9IDA7Cj4g KwkJaTkxNV9wYXJhbXMuZW5hYmxlX2d1Y19sb2FkaW5nID0gMDsKPiArCQlpOTE1X3BhcmFtcy5l bmFibGVfZ3VjX3N1Ym1pc3Npb24gPSAwOwo+ICAJCXJldHVybjsKPiAgCX0KPiAgCj4gIAkvKiBB IG5lZ2F0aXZlIHZhbHVlIG1lYW5zICJ1c2UgcGxhdGZvcm0gZGVmYXVsdCIgKi8KPiAtCWlmIChp OTE1LmVuYWJsZV9ndWNfbG9hZGluZyA8IDApCj4gLQkJaTkxNS5lbmFibGVfZ3VjX2xvYWRpbmcg PSBIQVNfR1VDX1VDT0RFKGRldl9wcml2KTsKPiArCWlmIChpOTE1X3BhcmFtcy5lbmFibGVfZ3Vj X2xvYWRpbmcgPCAwKQo+ICsJCWk5MTVfcGFyYW1zLmVuYWJsZV9ndWNfbG9hZGluZyA9IEhBU19H VUNfVUNPREUoZGV2X3ByaXYpOwo+ICAKPiAgCS8qIFZlcmlmeSBmaXJtd2FyZSB2ZXJzaW9uICov Cj4gLQlpZiAoaTkxNS5lbmFibGVfZ3VjX2xvYWRpbmcpIHsKPiArCWlmIChpOTE1X3BhcmFtcy5l bmFibGVfZ3VjX2xvYWRpbmcpIHsKPiAgCQlpZiAoSEFTX0hVQ19VQ09ERShkZXZfcHJpdikpCj4g IAkJCWludGVsX2h1Y19zZWxlY3RfZncoJmRldl9wcml2LT5odWMpOwo+ICAKPiAgCQlpZiAoaW50 ZWxfZ3VjX3NlbGVjdF9mdygmZGV2X3ByaXYtPmd1YykpCj4gLQkJCWk5MTUuZW5hYmxlX2d1Y19s b2FkaW5nID0gMDsKPiArCQkJaTkxNV9wYXJhbXMuZW5hYmxlX2d1Y19sb2FkaW5nID0gMDsKPiAg CX0KPiAgCj4gIAkvKiBDYW4ndCBlbmFibGUgZ3VjIHN1Ym1pc3Npb24gd2l0aG91dCBndWMgbG9h ZGVkICovCj4gLQlpZiAoIWk5MTUuZW5hYmxlX2d1Y19sb2FkaW5nKQo+IC0JCWk5MTUuZW5hYmxl X2d1Y19zdWJtaXNzaW9uID0gMDsKPiArCWlmICghaTkxNV9wYXJhbXMuZW5hYmxlX2d1Y19sb2Fk aW5nKQo+ICsJCWk5MTVfcGFyYW1zLmVuYWJsZV9ndWNfc3VibWlzc2lvbiA9IDA7Cj4gIAo+ICAJ LyogQSBuZWdhdGl2ZSB2YWx1ZSBtZWFucyAidXNlIHBsYXRmb3JtIGRlZmF1bHQiICovCj4gLQlp ZiAoaTkxNS5lbmFibGVfZ3VjX3N1Ym1pc3Npb24gPCAwKQo+IC0JCWk5MTUuZW5hYmxlX2d1Y19z dWJtaXNzaW9uID0gSEFTX0dVQ19TQ0hFRChkZXZfcHJpdik7Cj4gKwlpZiAoaTkxNV9wYXJhbXMu ZW5hYmxlX2d1Y19zdWJtaXNzaW9uIDwgMCkKPiArCQlpOTE1X3BhcmFtcy5lbmFibGVfZ3VjX3N1 Ym1pc3Npb24gPSBIQVNfR1VDX1NDSEVEKGRldl9wcml2KTsKPiAgfQo+ICAKPiAgc3RhdGljIHZv aWQgZ2VuOF9ndWNfcmFpc2VfaXJxKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiBAQCAtMjkwLDcg KzI5MCw3IEBAIHN0YXRpYyB2b2lkIGd1Y19pbml0X3NlbmRfcmVncyhzdHJ1Y3QgaW50ZWxfZ3Vj ICpndWMpCj4gIAo+ICBzdGF0aWMgdm9pZCBndWNfY2FwdHVyZV9sb2FkX2Vycl9sb2coc3RydWN0 IGludGVsX2d1YyAqZ3VjKQo+ICB7Cj4gLQlpZiAoIWd1Yy0+bG9nLnZtYSB8fCBpOTE1Lmd1Y19s b2dfbGV2ZWwgPCAwKQo+ICsJaWYgKCFndWMtPmxvZy52bWEgfHwgaTkxNV9wYXJhbXMuZ3VjX2xv Z19sZXZlbCA8IDApCj4gIAkJcmV0dXJuOwo+ICAKPiAgCWlmICghZ3VjLT5sb2FkX2Vycl9sb2cp Cj4gQEAgLTMzMyw3ICszMzMsNyBAQCBpbnQgaW50ZWxfdWNfaW5pdF9odyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAmZGV2X3By aXYtPmd1YzsKPiAgCWludCByZXQsIGF0dGVtcHRzOwo+ICAKPiAtCWlmICghaTkxNS5lbmFibGVf Z3VjX2xvYWRpbmcpCj4gKwlpZiAoIWk5MTVfcGFyYW1zLmVuYWJsZV9ndWNfbG9hZGluZykKPiAg CQlyZXR1cm4gMDsKPiAgCj4gIAlndWNfZGlzYWJsZV9jb21tdW5pY2F0aW9uKGd1Yyk7Cj4gQEAg LTM0Miw3ICszNDIsNyBAQCBpbnQgaW50ZWxfdWNfaW5pdF9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gIAkvKiBXZSBuZWVkIHRvIG5vdGlmeSB0aGUgZ3VjIHdoZW5ldmVy IHdlIGNoYW5nZSB0aGUgR0dUVCAqLwo+ICAJaTkxNV9nZ3R0X2VuYWJsZV9ndWMoZGV2X3ByaXYp Owo+ICAKPiAtCWlmIChpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbikgewo+ICsJaWYgKGk5MTVf cGFyYW1zLmVuYWJsZV9ndWNfc3VibWlzc2lvbikgewo+ICAJCS8qCj4gIAkJICogVGhpcyBpcyBz dHVmZiB3ZSBuZWVkIHRvIGhhdmUgYXZhaWxhYmxlIGF0IGZ3IGxvYWQgdGltZQo+ICAJCSAqIGlm IHdlIGFyZSBwbGFubmluZyB0byBlbmFibGUgc3VibWlzc2lvbiBsYXRlcgo+IEBAIC0zOTEsOCAr MzkxLDggQEAgaW50IGludGVsX3VjX2luaXRfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQo+ICAJCWdvdG8gZXJyX2xvZ19jYXB0dXJlOwo+ICAKPiAgCWludGVsX2d1Y19hdXRo X2h1YyhkZXZfcHJpdik7Cj4gLQlpZiAoaTkxNS5lbmFibGVfZ3VjX3N1Ym1pc3Npb24pIHsKPiAt CQlpZiAoaTkxNS5ndWNfbG9nX2xldmVsID49IDApCj4gKwlpZiAoaTkxNV9wYXJhbXMuZW5hYmxl X2d1Y19zdWJtaXNzaW9uKSB7Cj4gKwkJaWYgKGk5MTVfcGFyYW1zLmd1Y19sb2dfbGV2ZWwgPj0g MCkKPiAgCQkJZ2VuOV9lbmFibGVfZ3VjX2ludGVycnVwdHMoZGV2X3ByaXYpOwo+ICAKPiAgCQly ZXQgPSBpOTE1X2d1Y19zdWJtaXNzaW9uX2VuYWJsZShkZXZfcHJpdik7Cj4gQEAgLTQxNywyMyAr NDE3LDIzIEBAIGludCBpbnRlbF91Y19pbml0X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiAgZXJyX2xvZ19jYXB0dXJlOgo+ICAJZ3VjX2NhcHR1cmVfbG9hZF9lcnJfbG9n KGd1Yyk7Cj4gIGVycl9zdWJtaXNzaW9uOgo+IC0JaWYgKGk5MTUuZW5hYmxlX2d1Y19zdWJtaXNz aW9uKQo+ICsJaWYgKGk5MTVfcGFyYW1zLmVuYWJsZV9ndWNfc3VibWlzc2lvbikKPiAgCQlpOTE1 X2d1Y19zdWJtaXNzaW9uX2ZpbmkoZGV2X3ByaXYpOwo+ICBlcnJfZ3VjOgo+ICAJaTkxNV9nZ3R0 X2Rpc2FibGVfZ3VjKGRldl9wcml2KTsKPiAgCj4gIAlEUk1fRVJST1IoIkd1QyBpbml0IGZhaWxl ZFxuIik7Cj4gLQlpZiAoaTkxNS5lbmFibGVfZ3VjX2xvYWRpbmcgPiAxIHx8IGk5MTUuZW5hYmxl X2d1Y19zdWJtaXNzaW9uID4gMSkKPiArCWlmIChpOTE1X3BhcmFtcy5lbmFibGVfZ3VjX2xvYWRp bmcgPiAxIHx8IGk5MTVfcGFyYW1zLmVuYWJsZV9ndWNfc3VibWlzc2lvbiA+IDEpCj4gIAkJcmV0 ID0gLUVJTzsKPiAgCWVsc2UKPiAgCQlyZXQgPSAwOwo+ICAKPiAtCWlmIChpOTE1LmVuYWJsZV9n dWNfc3VibWlzc2lvbikgewo+IC0JCWk5MTUuZW5hYmxlX2d1Y19zdWJtaXNzaW9uID0gMDsKPiAr CWlmIChpOTE1X3BhcmFtcy5lbmFibGVfZ3VjX3N1Ym1pc3Npb24pIHsKPiArCQlpOTE1X3BhcmFt cy5lbmFibGVfZ3VjX3N1Ym1pc3Npb24gPSAwOwo+ICAJCURSTV9OT1RFKCJGYWxsaW5nIGJhY2sg ZnJvbSBHdUMgc3VibWlzc2lvbiB0byBleGVjbGlzdCBtb2RlXG4iKTsKPiAgCX0KPiAgCj4gLQlp OTE1LmVuYWJsZV9ndWNfbG9hZGluZyA9IDA7Cj4gKwlpOTE1X3BhcmFtcy5lbmFibGVfZ3VjX2xv YWRpbmcgPSAwOwo+ICAJRFJNX05PVEUoIkd1QyBmaXJtd2FyZSBsb2FkaW5nIGRpc2FibGVkXG4i KTsKPiAgCj4gIAlyZXR1cm4gcmV0Owo+IEBAIC00NDMsMTUgKzQ0MywxNSBAQCB2b2lkIGludGVs X3VjX2ZpbmlfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gIAln dWNfZnJlZV9sb2FkX2Vycl9sb2coJmRldl9wcml2LT5ndWMpOwo+ICAKPiAtCWlmICghaTkxNS5l bmFibGVfZ3VjX2xvYWRpbmcpCj4gKwlpZiAoIWk5MTVfcGFyYW1zLmVuYWJsZV9ndWNfbG9hZGlu ZykKPiAgCQlyZXR1cm47Cj4gIAo+IC0JaWYgKGk5MTUuZW5hYmxlX2d1Y19zdWJtaXNzaW9uKQo+ ICsJaWYgKGk5MTVfcGFyYW1zLmVuYWJsZV9ndWNfc3VibWlzc2lvbikKPiAgCQlpOTE1X2d1Y19z dWJtaXNzaW9uX2Rpc2FibGUoZGV2X3ByaXYpOwo+ICAKPiAgCWd1Y19kaXNhYmxlX2NvbW11bmlj YXRpb24oJmRldl9wcml2LT5ndWMpOwo+ICAKPiAtCWlmIChpOTE1LmVuYWJsZV9ndWNfc3VibWlz c2lvbikgewo+ICsJaWYgKGk5MTVfcGFyYW1zLmVuYWJsZV9ndWNfc3VibWlzc2lvbikgewo+ICAJ CWdlbjlfZGlzYWJsZV9ndWNfaW50ZXJydXB0cyhkZXZfcHJpdik7Cj4gIAkJaTkxNV9ndWNfc3Vi bWlzc2lvbl9maW5pKGRldl9wcml2KTsKPiAgCX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNv cmUuYwo+IGluZGV4IDFiMzhlYjkuLjU0NGE3OTMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF91bmNvcmUuYwo+IEBAIC00MzYsNyArNDM2LDggQEAgdm9pZCBpbnRlbF91bmNvcmVfcmVzdW1l X2Vhcmx5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCj4gIHZvaWQgaW50 ZWxfdW5jb3JlX3Nhbml0aXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAg ewo+IC0JaTkxNS5lbmFibGVfcmM2ID0gc2FuaXRpemVfcmM2X29wdGlvbihkZXZfcHJpdiwgaTkx NS5lbmFibGVfcmM2KTsKPiArCWk5MTVfcGFyYW1zLmVuYWJsZV9yYzYgPSBzYW5pdGl6ZV9yYzZf b3B0aW9uKGRldl9wcml2LAo+ICsJCQkJCQkgICAgIGk5MTVfcGFyYW1zLmVuYWJsZV9yYzYpOwo+ ICAKPiAgCS8qIEJJT1Mgb2Z0ZW4gbGVhdmVzIFJDNiBlbmFibGVkLCBidXQgZGlzYWJsZSBpdCBm b3IgaHcgaW5pdCAqLwo+ICAJaW50ZWxfc2FuaXRpemVfZ3RfcG93ZXJzYXZlKGRldl9wcml2KTsK PiBAQCAtNTA3LDEwICs1MDgsMTAgQEAgdm9pZCBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3VzZXJf Z2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQlkZXZfcHJpdi0+dW5j b3JlLnVzZXJfZm9yY2V3YWtlLnNhdmVkX21taW9fY2hlY2sgPQo+ICAJCQlkZXZfcHJpdi0+dW5j b3JlLnVuY2xhaW1lZF9tbWlvX2NoZWNrOwo+ICAJCWRldl9wcml2LT51bmNvcmUudXNlcl9mb3Jj ZXdha2Uuc2F2ZWRfbW1pb19kZWJ1ZyA9Cj4gLQkJCWk5MTUubW1pb19kZWJ1ZzsKPiArCQkJaTkx NV9wYXJhbXMubW1pb19kZWJ1ZzsKPiAgCj4gIAkJZGV2X3ByaXYtPnVuY29yZS51bmNsYWltZWRf bW1pb19jaGVjayA9IDA7Cj4gLQkJaTkxNS5tbWlvX2RlYnVnID0gMDsKPiArCQlpOTE1X3BhcmFt cy5tbWlvX2RlYnVnID0gMDsKPiAgCX0KPiAgCXNwaW5fdW5sb2NrX2lycSgmZGV2X3ByaXYtPnVu Y29yZS5sb2NrKTsKPiAgfQo+IEBAIC01MzIsNyArNTMzLDcgQEAgdm9pZCBpbnRlbF91bmNvcmVf Zm9yY2V3YWtlX3VzZXJfcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAg Cj4gIAkJZGV2X3ByaXYtPnVuY29yZS51bmNsYWltZWRfbW1pb19jaGVjayA9Cj4gIAkJCWRldl9w cml2LT51bmNvcmUudXNlcl9mb3JjZXdha2Uuc2F2ZWRfbW1pb19jaGVjazsKPiAtCQlpOTE1Lm1t aW9fZGVidWcgPQo+ICsJCWk5MTVfcGFyYW1zLm1taW9fZGVidWcgPQo+ICAJCQlkZXZfcHJpdi0+ dW5jb3JlLnVzZXJfZm9yY2V3YWtlLnNhdmVkX21taW9fZGVidWc7Cj4gIAo+ICAJCWludGVsX3Vu Y29yZV9mb3JjZXdha2VfcHV0X19sb2NrZWQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOwo+IEBA IC04NDEsNyArODQyLDcgQEAgX191bmNsYWltZWRfcmVnX2RlYnVnKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiAgCQkgIlVuY2xhaW1lZCAlcyByZWdpc3RlciAweCV4XG4iLAo+ ICAJCSByZWFkID8gInJlYWQgZnJvbSIgOiAid3JpdGUgdG8iLAo+ICAJCSBpOTE1X21taW9fcmVn X29mZnNldChyZWcpKSkKPiAtCQlpOTE1Lm1taW9fZGVidWctLTsgLyogT25seSByZXBvcnQgdGhl IGZpcnN0IE4gZmFpbHVyZXMgKi8KPiArCQlpOTE1X3BhcmFtcy5tbWlvX2RlYnVnLS07IC8qIE9u bHkgcmVwb3J0IHRoZSBmaXJzdCBOIGZhaWx1cmVzICovCj4gIH0KPiAgCj4gIHN0YXRpYyBpbmxp bmUgdm9pZAo+IEBAIC04NTAsNyArODUxLDcgQEAgdW5jbGFpbWVkX3JlZ19kZWJ1ZyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJICAgIGNvbnN0IGJvb2wgcmVhZCwKPiAg CQkgICAgY29uc3QgYm9vbCBiZWZvcmUpCj4gIHsKPiAtCWlmIChsaWtlbHkoIWk5MTUubW1pb19k ZWJ1ZykpCj4gKwlpZiAobGlrZWx5KCFpOTE1X3BhcmFtcy5tbWlvX2RlYnVnKSkKPiAgCQlyZXR1 cm47Cj4gIAo+ICAJX191bmNsYWltZWRfcmVnX2RlYnVnKGRldl9wcml2LCByZWcsIHJlYWQsIGJl Zm9yZSk7Cj4gQEAgLTE3MTMsNyArMTcxNCw3IEBAIHR5cGVkZWYgaW50ICgqcmVzZXRfZnVuYyko c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKiwgdW5zaWduZWQgZW5naW5lX21hc2spOwo+ICAKPiAg c3RhdGljIHJlc2V0X2Z1bmMgaW50ZWxfZ2V0X2dwdV9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAtCWlmICghaTkxNS5yZXNldCkKPiArCWlmICghaTkxNV9w YXJhbXMucmVzZXQpCj4gIAkJcmV0dXJuIE5VTEw7Cj4gIAo+ICAJaWYgKElOVEVMX0lORk8oZGV2 X3ByaXYpLT5nZW4gPj0gOCkKPiBAQCAtMTc3Myw3ICsxNzc0LDcgQEAgYm9vbCBpbnRlbF9oYXNf cmVzZXRfZW5naW5lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+ICAJ cmV0dXJuIChkZXZfcHJpdi0+aW5mby5oYXNfcmVzZXRfZW5naW5lICYmCj4gIAkJIWRldl9wcml2 LT5ndWMuZXhlY2J1Zl9jbGllbnQgJiYKPiAtCQlpOTE1LnJlc2V0ID49IDIpOwo+ICsJCWk5MTVf cGFyYW1zLnJlc2V0ID49IDIpOwo+ICB9Cj4gIAo+ICBpbnQgaW50ZWxfZ3VjX3Jlc2V0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiBAQCAtMTc5OCw3ICsxNzk5LDcgQEAgYm9v bCBpbnRlbF91bmNvcmVfdW5jbGFpbWVkX21taW8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQo+ICBib29sCj4gIGludGVsX3VuY29yZV9hcm1fdW5jbGFpbWVkX21taW9fZGV0ZWN0 aW9uKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+IC0JaWYgKHVubGlr ZWx5KGk5MTUubW1pb19kZWJ1ZyB8fAo+ICsJaWYgKHVubGlrZWx5KGk5MTVfcGFyYW1zLm1taW9f ZGVidWcgfHwKPiAgCQkgICAgIGRldl9wcml2LT51bmNvcmUudW5jbGFpbWVkX21taW9fY2hlY2sg PD0gMCkpCj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAKPiBAQCAtMTgwNiw3ICsxODA3LDcgQEAgaW50 ZWxfdW5jb3JlX2FybV91bmNsYWltZWRfbW1pb19kZXRlY3Rpb24oc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQo+ICAJCURSTV9ERUJVRygiVW5jbGFpbWVkIHJlZ2lzdGVyIGRldGVj dGVkLCAiCj4gIAkJCSAgImVuYWJsaW5nIG9uZXNob3QgdW5jbGFpbWVkIHJlZ2lzdGVyIHJlcG9y dGluZy4gIgo+ICAJCQkgICJQbGVhc2UgdXNlIGk5MTUubW1pb19kZWJ1Zz1OIGZvciBtb3JlIGlu Zm9ybWF0aW9uLlxuIik7Cj4gLQkJaTkxNS5tbWlvX2RlYnVnKys7Cj4gKwkJaTkxNV9wYXJhbXMu bW1pb19kZWJ1ZysrOwo+ICAJCWRldl9wcml2LT51bmNvcmUudW5jbGFpbWVkX21taW9fY2hlY2st LTsKPiAgCQlyZXR1cm4gdHJ1ZTsKPiAgCX0KPiAtLSAKPiAyLjcuNAo+IAo+IF9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAoKLS0gClZpbGxlIFN5cmrD pGzDpApJbnRlbCBPVEMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4Cg==