From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2BDC36E8C0 for ; Fri, 29 May 2020 10:41:40 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Fri, 29 May 2020 12:41:27 +0200 Message-Id: <20200529104127.9569-3-zbigniew.kempczynski@intel.com> In-Reply-To: <20200529104127.9569-1-zbigniew.kempczynski@intel.com> References: <20200529104127.9569-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 2/2] tests/gem_(gpgpu|media)_fill: remove the _v2 suffix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org Cc: Chris Wilson List-ID: UmVtb3ZlIGxpYmRybSBmdW5jdGlvbnMgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIG5ldyBvbmVzIGFm dGVyIHJlbW92aW5nCl92MiBzdWZmaXggaW50cm9kdWNlZCBmb3IgdHJhbnNpdGlvbiBzdGF0ZS4K ClNpZ25lZC1vZmYtYnk6IFpiaWduaWV3IEtlbXBjennFhHNraSA8emJpZ25pZXcua2VtcGN6eW5z a2lAaW50ZWwuY29tPgpDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+ Ci0tLQogbGliL2dwZ3B1X2ZpbGwuYyAgICAgICAgICAgIHwgIDMwNCArKystLS0tLS0tLQogbGli L2dwZ3B1X2ZpbGwuaCAgICAgICAgICAgIHwgICA4MyArLS0KIGxpYi9ncHVfY21kcy5jICAgICAg ICAgICAgICB8IDEwMTUgKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGxpYi9n cHVfY21kcy5oICAgICAgICAgICAgICB8ICAxNjUgKy0tLS0tCiBsaWIvaW50ZWxfYmF0Y2hidWZm ZXIuYyAgICAgfCAgIDU2ICstCiBsaWIvaW50ZWxfYmF0Y2hidWZmZXIuaCAgICAgfCAgIDIwICst CiBsaWIvbWVkaWFfZmlsbC5jICAgICAgICAgICAgfCAgMjY3ICsrLS0tLS0tLQogbGliL21lZGlh X2ZpbGwuaCAgICAgICAgICAgIHwgICA0NSArLQogdGVzdHMvaTkxNS9nZW1fZ3BncHVfZmlsbC5j IHwgICA4MyArLS0KIHRlc3RzL2k5MTUvZ2VtX21lZGlhX2ZpbGwuYyB8ICAgODMgKy0tCiAxMCBm aWxlcyBjaGFuZ2VkLCAzODUgaW5zZXJ0aW9ucygrKSwgMTczNiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9saWIvZ3BncHVfZmlsbC5jIGIvbGliL2dwZ3B1X2ZpbGwuYwppbmRleCA0OTk4OGEz Ni4uYWEyZmZhOGQgMTAwNjQ0Ci0tLSBhL2xpYi9ncGdwdV9maWxsLmMKKysrIGIvbGliL2dwZ3B1 X2ZpbGwuYwpAQCAtMjUsNyArMjUsNiBAQAogICogIERvbWluaWsgWmVyb21za2kgPGRvbWluaWsu emVyb21za2lAaW50ZWwuY29tPgogICovCiAKLSNpbmNsdWRlIDxpbnRlbF9idWZtZ3IuaD4KICNp bmNsdWRlIDxpOTE1X2RybS5oPgogCiAjaW5jbHVkZSAiaW50ZWxfcmVnLmgiCkBAIC0xMzEsNjAg KzEzMCwxMSBAQCBzdGF0aWMgY29uc3QgdWludDMyX3QgZ2VuMTJfZ3BncHVfa2VybmVsW11bNF0g PSB7CiAjZGVmaW5lIEdFTjdfVkZFX1NUQVRFX0dQR1BVX01PREUgMQogCiB2b2lkCi1nZW43X2dw Z3B1X2ZpbGxmdW5jKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCi0JCSAgICBjb25z dCBzdHJ1Y3QgaWd0X2J1ZiAqZHN0LAotCQkgICAgdW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGlu dCB5LAotCQkgICAgdW5zaWduZWQgaW50IHdpZHRoLCB1bnNpZ25lZCBpbnQgaGVpZ2h0LAorZ2Vu N19ncGdwdV9maWxsZnVuYyhpbnQgaTkxNSwKKwkJICAgIHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwK KwkJICAgIHVuc2lnbmVkIHgsIHVuc2lnbmVkIHksCisJCSAgICB1bnNpZ25lZCB3aWR0aCwgdW5z aWduZWQgaGVpZ2h0LAogCQkgICAgdWludDhfdCBjb2xvcikKLXsKLQl1aW50MzJfdCBjdXJiZV9i dWZmZXIsIGludGVyZmFjZV9kZXNjcmlwdG9yOwotCXVpbnQzMl90IGJhdGNoX2VuZDsKLQotCWlu dGVsX2JhdGNoYnVmZmVyX2ZsdXNoKGJhdGNoKTsKLQotCS8qIHNldHVwIHN0YXRlcyAqLwotCWJh dGNoLT5wdHIgPSAmYmF0Y2gtPmJ1ZmZlcltCQVRDSF9TVEFURV9TUExJVF07Ci0KLQkvKgotCSAq IGNvbnN0IGJ1ZmZlciBuZWVkcyB0byBmaWxsIGZvciBldmVyeSB0aHJlYWQsIGJ1dCBhcyB3ZSBo YXZlIGp1c3QgMQotCSAqIHRocmVhZCBwZXIgZXZlcnkgZ3JvdXAsIHNvIG5lZWQgb25seSBvbmUg Y3VyYmUgZGF0YS4KLQkgKiBGb3IgZWFjaCB0aHJlYWQsIGp1c3QgdXNlIHRocmVhZCBncm91cCBJ RCBmb3IgYnVmZmVyIG9mZnNldC4KLQkgKi8KLQljdXJiZV9idWZmZXIgPSBnZW43X2ZpbGxfY3Vy YmVfYnVmZmVyX2RhdGEoYmF0Y2gsIGNvbG9yKTsKLQotCWludGVyZmFjZV9kZXNjcmlwdG9yID0g Z2VuN19maWxsX2ludGVyZmFjZV9kZXNjcmlwdG9yKGJhdGNoLCBkc3QsCi0JCQkJZ2VuN19ncGdw dV9rZXJuZWwsIHNpemVvZihnZW43X2dwZ3B1X2tlcm5lbCkpOwotCi0JaWd0X2Fzc2VydChiYXRj aC0+cHRyIDwgJmJhdGNoLT5idWZmZXJbNDA5NV0pOwotCi0JYmF0Y2gtPnB0ciA9IGJhdGNoLT5i dWZmZXI7Ci0KLQkvKiBHUEdQVSBwaXBlbGluZSAqLwotCU9VVF9CQVRDSChHRU43X1BJUEVMSU5F X1NFTEVDVCB8IFBJUEVMSU5FX1NFTEVDVF9HUEdQVSk7Ci0KLQlnZW43X2VtaXRfc3RhdGVfYmFz ZV9hZGRyZXNzKGJhdGNoKTsKLQlnZW43X2VtaXRfdmZlX3N0YXRlKGJhdGNoLCBUSFJFQURTLCBH RU43X0dQR1BVX1VSQl9FTlRSSUVTLAotCQkJICAgIEdQR1BVX1VSQl9TSVpFLCBHUEdQVV9DVVJC RV9TSVpFLAotCQkJICAgIEdFTjdfVkZFX1NUQVRFX0dQR1BVX01PREUpOwotCWdlbjdfZW1pdF9j dXJiZV9sb2FkKGJhdGNoLCBjdXJiZV9idWZmZXIpOwotCWdlbjdfZW1pdF9pbnRlcmZhY2VfZGVz Y3JpcHRvcl9sb2FkKGJhdGNoLCBpbnRlcmZhY2VfZGVzY3JpcHRvcik7Ci0JZ2VuN19lbWl0X2dw Z3B1X3dhbGsoYmF0Y2gsIHgsIHksIHdpZHRoLCBoZWlnaHQpOwotCi0JT1VUX0JBVENIKE1JX0JB VENIX0JVRkZFUl9FTkQpOwotCi0JYmF0Y2hfZW5kID0gaW50ZWxfYmF0Y2hidWZmZXJfYWxpZ24o YmF0Y2gsIDgpOwotCWlndF9hc3NlcnQoYmF0Y2hfZW5kIDwgQkFUQ0hfU1RBVEVfU1BMSVQpOwot Ci0JZ2VuN19yZW5kZXJfZmx1c2goYmF0Y2gsIGJhdGNoX2VuZCk7Ci0JaW50ZWxfYmF0Y2hidWZm ZXJfcmVzZXQoYmF0Y2gpOwotfQotCi12b2lkCi1nZW43X2dwZ3B1X2ZpbGxmdW5jX3YyKGludCBp OTE1LAotCQkgICAgICAgc3RydWN0IGludGVsX2J1ZiAqYnVmLAotCQkgICAgICAgdW5zaWduZWQg eCwgdW5zaWduZWQgeSwKLQkJICAgICAgIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQs Ci0JCSAgICAgICB1aW50OF90IGNvbG9yKQogewogCXN0cnVjdCBpbnRlbF9iYiAqaWJiOwogCXVp bnQzMl90IGN1cmJlX2J1ZmZlciwgaW50ZXJmYWNlX2Rlc2NyaXB0b3I7CkBAIC0xOTUsNyArMTQ1 LDcgQEAgZ2VuN19ncGdwdV9maWxsZnVuY192MihpbnQgaTkxNSwKIAlpbnRlbF9iYl9wdHJfc2V0 KGliYiwgQkFUQ0hfU1RBVEVfU1BMSVQpOwogCiAJLyogRmlsbCBjdXJiZSBidWZmZXIgZGF0YSAq LwotCWN1cmJlX2J1ZmZlciA9IGdlbjdfZmlsbF9jdXJiZV9idWZmZXJfZGF0YV92MihpYmIsIGNv bG9yKTsKKwljdXJiZV9idWZmZXIgPSBnZW43X2ZpbGxfY3VyYmVfYnVmZmVyX2RhdGEoaWJiLCBj b2xvcik7CiAKIAkvKgogCSAqIGNvbnN0IGJ1ZmZlciBuZWVkcyB0byBmaWxsIGZvciBldmVyeSB0 aHJlYWQsIGJ1dCBhcyB3ZSBoYXZlIGp1c3QgMQpAQCAtMjAzLDIyICsxNTMsMjIgQEAgZ2VuN19n cGdwdV9maWxsZnVuY192MihpbnQgaTkxNSwKIAkgKiBGb3IgZWFjaCB0aHJlYWQsIGp1c3QgdXNl IHRocmVhZCBncm91cCBJRCBmb3IgYnVmZmVyIG9mZnNldC4KIAkgKi8KIAlpbnRlcmZhY2VfZGVz Y3JpcHRvciA9Ci0JCQlnZW43X2ZpbGxfaW50ZXJmYWNlX2Rlc2NyaXB0b3JfdjIoaWJiLCBidWYs Ci0JCQkJCQkJICBnZW43X2dwZ3B1X2tlcm5lbCwKLQkJCQkJCQkgIHNpemVvZihnZW43X2dwZ3B1 X2tlcm5lbCkpOworCQkJZ2VuN19maWxsX2ludGVyZmFjZV9kZXNjcmlwdG9yKGliYiwgYnVmLAor CQkJCQkJICAgICAgIGdlbjdfZ3BncHVfa2VybmVsLAorCQkJCQkJICAgICAgIHNpemVvZihnZW43 X2dwZ3B1X2tlcm5lbCkpOwogCiAJaW50ZWxfYmJfcHRyX3NldChpYmIsIDApOwogCiAJLyogR1BH UFUgcGlwZWxpbmUgKi8KIAlpbnRlbF9iYl9vdXQoaWJiLCBHRU43X1BJUEVMSU5FX1NFTEVDVCB8 IFBJUEVMSU5FX1NFTEVDVF9HUEdQVSk7CiAKLQlnZW43X2VtaXRfc3RhdGVfYmFzZV9hZGRyZXNz X3YyKGliYik7Ci0JZ2VuN19lbWl0X3ZmZV9zdGF0ZV92MihpYmIsIFRIUkVBRFMsIEdFTjdfR1BH UFVfVVJCX0VOVFJJRVMsCisJZ2VuN19lbWl0X3N0YXRlX2Jhc2VfYWRkcmVzcyhpYmIpOworCWdl bjdfZW1pdF92ZmVfc3RhdGUoaWJiLCBUSFJFQURTLCBHRU43X0dQR1BVX1VSQl9FTlRSSUVTLAog CQkJICAgICAgIEdQR1BVX1VSQl9TSVpFLCBHUEdQVV9DVVJCRV9TSVpFLAogCQkJICAgICAgIEdF TjdfVkZFX1NUQVRFX0dQR1BVX01PREUpOwotCWdlbjdfZW1pdF9jdXJiZV9sb2FkX3YyKGliYiwg Y3VyYmVfYnVmZmVyKTsKLQlnZW43X2VtaXRfaW50ZXJmYWNlX2Rlc2NyaXB0b3JfbG9hZF92Mihp YmIsIGludGVyZmFjZV9kZXNjcmlwdG9yKTsKLQlnZW43X2VtaXRfZ3BncHVfd2Fsa192MihpYmIs IHgsIHksIHdpZHRoLCBoZWlnaHQpOworCWdlbjdfZW1pdF9jdXJiZV9sb2FkKGliYiwgY3VyYmVf YnVmZmVyKTsKKwlnZW43X2VtaXRfaW50ZXJmYWNlX2Rlc2NyaXB0b3JfbG9hZChpYmIsIGludGVy ZmFjZV9kZXNjcmlwdG9yKTsKKwlnZW43X2VtaXRfZ3BncHVfd2FsayhpYmIsIHgsIHksIHdpZHRo LCBoZWlnaHQpOwogCiAJaW50ZWxfYmJfb3V0KGliYiwgTUlfQkFUQ0hfQlVGRkVSX0VORCk7CiAJ aW50ZWxfYmJfcHRyX2FsaWduKGliYiwgMzIpOwpAQCAtMjMwLDU5ICsxODAsMTEgQEAgZ2VuN19n cGdwdV9maWxsZnVuY192MihpbnQgaTkxNSwKIH0KIAogdm9pZAotZ2VuOF9ncGdwdV9maWxsZnVu YyhzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAotCQkgICAgY29uc3Qgc3RydWN0IGln dF9idWYgKmRzdCwKLQkJICAgIHVuc2lnbmVkIGludCB4LCB1bnNpZ25lZCBpbnQgeSwKLQkJICAg IHVuc2lnbmVkIGludCB3aWR0aCwgdW5zaWduZWQgaW50IGhlaWdodCwKK2dlbjhfZ3BncHVfZmls bGZ1bmMoaW50IGk5MTUsCisJCSAgICBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsCisJCSAgICB1bnNp Z25lZCB4LCB1bnNpZ25lZCB5LAorCQkgICAgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdo dCwKIAkJICAgIHVpbnQ4X3QgY29sb3IpCi17Ci0JdWludDMyX3QgY3VyYmVfYnVmZmVyLCBpbnRl cmZhY2VfZGVzY3JpcHRvcjsKLQl1aW50MzJfdCBiYXRjaF9lbmQ7Ci0KLQlpbnRlbF9iYXRjaGJ1 ZmZlcl9mbHVzaChiYXRjaCk7Ci0KLQkvKiBzZXR1cCBzdGF0ZXMgKi8KLQliYXRjaC0+cHRyID0g JmJhdGNoLT5idWZmZXJbQkFUQ0hfU1RBVEVfU1BMSVRdOwotCi0JLyoKLQkgKiBjb25zdCBidWZm ZXIgbmVlZHMgdG8gZmlsbCBmb3IgZXZlcnkgdGhyZWFkLCBidXQgYXMgd2UgaGF2ZSBqdXN0IDEK LQkgKiB0aHJlYWQgcGVyIGV2ZXJ5IGdyb3VwLCBzbyBuZWVkIG9ubHkgb25lIGN1cmJlIGRhdGEu Ci0JICogRm9yIGVhY2ggdGhyZWFkLCBqdXN0IHVzZSB0aHJlYWQgZ3JvdXAgSUQgZm9yIGJ1ZmZl ciBvZmZzZXQuCi0JICovCi0JY3VyYmVfYnVmZmVyID0gZ2VuN19maWxsX2N1cmJlX2J1ZmZlcl9k YXRhKGJhdGNoLCBjb2xvcik7Ci0KLQlpbnRlcmZhY2VfZGVzY3JpcHRvciA9IGdlbjhfZmlsbF9p bnRlcmZhY2VfZGVzY3JpcHRvcihiYXRjaCwgZHN0LAotCQkJCWdlbjhfZ3BncHVfa2VybmVsLCBz aXplb2YoZ2VuOF9ncGdwdV9rZXJuZWwpKTsKLQotCWlndF9hc3NlcnQoYmF0Y2gtPnB0ciA8ICZi YXRjaC0+YnVmZmVyWzQwOTVdKTsKLQotCWJhdGNoLT5wdHIgPSBiYXRjaC0+YnVmZmVyOwotCi0J LyogR1BHUFUgcGlwZWxpbmUgKi8KLQlPVVRfQkFUQ0goR0VON19QSVBFTElORV9TRUxFQ1QgfCBQ SVBFTElORV9TRUxFQ1RfR1BHUFUpOwotCi0JZ2VuOF9lbWl0X3N0YXRlX2Jhc2VfYWRkcmVzcyhi YXRjaCk7Ci0JZ2VuOF9lbWl0X3ZmZV9zdGF0ZShiYXRjaCwgVEhSRUFEUywgR0VOOF9HUEdQVV9V UkJfRU5UUklFUywKLQkJCSAgICBHUEdQVV9VUkJfU0laRSwgR1BHUFVfQ1VSQkVfU0laRSk7Ci0J Z2VuN19lbWl0X2N1cmJlX2xvYWQoYmF0Y2gsIGN1cmJlX2J1ZmZlcik7Ci0JZ2VuN19lbWl0X2lu dGVyZmFjZV9kZXNjcmlwdG9yX2xvYWQoYmF0Y2gsIGludGVyZmFjZV9kZXNjcmlwdG9yKTsKLQln ZW44X2VtaXRfZ3BncHVfd2FsayhiYXRjaCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7Ci0KLQlPVVRf QkFUQ0goTUlfQkFUQ0hfQlVGRkVSX0VORCk7Ci0KLQliYXRjaF9lbmQgPSBpbnRlbF9iYXRjaGJ1 ZmZlcl9hbGlnbihiYXRjaCwgOCk7Ci0JaWd0X2Fzc2VydChiYXRjaF9lbmQgPCBCQVRDSF9TVEFU RV9TUExJVCk7Ci0KLQlnZW43X3JlbmRlcl9mbHVzaChiYXRjaCwgYmF0Y2hfZW5kKTsKLQlpbnRl bF9iYXRjaGJ1ZmZlcl9yZXNldChiYXRjaCk7Ci19Ci0KLXZvaWQKLWdlbjhfZ3BncHVfZmlsbGZ1 bmNfdjIoaW50IGk5MTUsCi0JCSAgICAgICBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsCi0JCSAgICAg ICB1bnNpZ25lZCB4LCB1bnNpZ25lZCB5LAotCQkgICAgICAgdW5zaWduZWQgd2lkdGgsIHVuc2ln bmVkIGhlaWdodCwKLQkJICAgICAgIHVpbnQ4X3QgY29sb3IpCiB7CiAJc3RydWN0IGludGVsX2Ji ICppYmI7CiAJdWludDMyX3QgY3VyYmVfYnVmZmVyLCBpbnRlcmZhY2VfZGVzY3JpcHRvcjsKQEAg LTI5Nyw5ICsxOTksOSBAQCBnZW44X2dwZ3B1X2ZpbGxmdW5jX3YyKGludCBpOTE1LAogCSAqIHRo cmVhZCBwZXIgZXZlcnkgZ3JvdXAsIHNvIG5lZWQgb25seSBvbmUgY3VyYmUgZGF0YS4KIAkgKiBG b3IgZWFjaCB0aHJlYWQsIGp1c3QgdXNlIHRocmVhZCBncm91cCBJRCBmb3IgYnVmZmVyIG9mZnNl dC4KIAkgKi8KLQljdXJiZV9idWZmZXIgPSBnZW43X2ZpbGxfY3VyYmVfYnVmZmVyX2RhdGFfdjIo aWJiLCBjb2xvcik7CisJY3VyYmVfYnVmZmVyID0gZ2VuN19maWxsX2N1cmJlX2J1ZmZlcl9kYXRh KGliYiwgY29sb3IpOwogCi0JaW50ZXJmYWNlX2Rlc2NyaXB0b3IgPSBnZW44X2ZpbGxfaW50ZXJm YWNlX2Rlc2NyaXB0b3JfdjIoaWJiLCBidWYsCisJaW50ZXJmYWNlX2Rlc2NyaXB0b3IgPSBnZW44 X2ZpbGxfaW50ZXJmYWNlX2Rlc2NyaXB0b3IoaWJiLCBidWYsCiAJCQkJZ2VuOF9ncGdwdV9rZXJu ZWwsIHNpemVvZihnZW44X2dwZ3B1X2tlcm5lbCkpOwogCiAJaW50ZWxfYmJfcHRyX3NldChpYmIs IDApOwpAQCAtMzA3LDE0ICsyMDksMTQgQEAgZ2VuOF9ncGdwdV9maWxsZnVuY192MihpbnQgaTkx NSwKIAkvKiBHUEdQVSBwaXBlbGluZSAqLwogCWludGVsX2JiX291dChpYmIsIEdFTjdfUElQRUxJ TkVfU0VMRUNUIHwgUElQRUxJTkVfU0VMRUNUX0dQR1BVKTsKIAotCWdlbjhfZW1pdF9zdGF0ZV9i YXNlX2FkZHJlc3NfdjIoaWJiKTsKLQlnZW44X2VtaXRfdmZlX3N0YXRlX3YyKGliYiwgVEhSRUFE UywgR0VOOF9HUEdQVV9VUkJfRU5UUklFUywKLQkJCSAgICAgICBHUEdQVV9VUkJfU0laRSwgR1BH UFVfQ1VSQkVfU0laRSk7CisJZ2VuOF9lbWl0X3N0YXRlX2Jhc2VfYWRkcmVzcyhpYmIpOworCWdl bjhfZW1pdF92ZmVfc3RhdGUoaWJiLCBUSFJFQURTLCBHRU44X0dQR1BVX1VSQl9FTlRSSUVTLAor CQkJICAgIEdQR1BVX1VSQl9TSVpFLCBHUEdQVV9DVVJCRV9TSVpFKTsKIAotCWdlbjdfZW1pdF9j dXJiZV9sb2FkX3YyKGliYiwgY3VyYmVfYnVmZmVyKTsKLQlnZW43X2VtaXRfaW50ZXJmYWNlX2Rl c2NyaXB0b3JfbG9hZF92MihpYmIsIGludGVyZmFjZV9kZXNjcmlwdG9yKTsKKwlnZW43X2VtaXRf Y3VyYmVfbG9hZChpYmIsIGN1cmJlX2J1ZmZlcik7CisJZ2VuN19lbWl0X2ludGVyZmFjZV9kZXNj cmlwdG9yX2xvYWQoaWJiLCBpbnRlcmZhY2VfZGVzY3JpcHRvcik7CiAKLQlnZW44X2VtaXRfZ3Bn cHVfd2Fsa192MihpYmIsIHgsIHksIHdpZHRoLCBoZWlnaHQpOworCWdlbjhfZW1pdF9ncGdwdV93 YWxrKGliYiwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CiAKIAlpbnRlbF9iYl9vdXQoaWJiLCBNSV9C QVRDSF9CVUZGRVJfRU5EKTsKIAlpbnRlbF9iYl9wdHJfYWxpZ24oaWJiLCAzMik7CkBAIC0zMjYs NjMgKzIyOCwxMiBAQCBnZW44X2dwZ3B1X2ZpbGxmdW5jX3YyKGludCBpOTE1LAogfQogCiBzdGF0 aWMgdm9pZAotX19nZW45X2dwZ3B1X2ZpbGxmdW5jKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAq YmF0Y2gsCi0JCSAgICAgIGNvbnN0IHN0cnVjdCBpZ3RfYnVmICpkc3QsCi0JCSAgICAgIHVuc2ln bmVkIGludCB4LCB1bnNpZ25lZCBpbnQgeSwKLQkJICAgICAgdW5zaWduZWQgaW50IHdpZHRoLCB1 bnNpZ25lZCBpbnQgaGVpZ2h0LAotCQkgICAgICB1aW50OF90IGNvbG9yLCBjb25zdCB1aW50MzJf dCBrZXJuZWxbXVs0XSwKLQkJICAgICAgc2l6ZV90IGtlcm5lbF9zaXplKQotewotCXVpbnQzMl90 IGN1cmJlX2J1ZmZlciwgaW50ZXJmYWNlX2Rlc2NyaXB0b3I7Ci0JdWludDMyX3QgYmF0Y2hfZW5k OwotCi0JaW50ZWxfYmF0Y2hidWZmZXJfZmx1c2goYmF0Y2gpOwotCi0JLyogc2V0dXAgc3RhdGVz ICovCi0JYmF0Y2gtPnB0ciA9ICZiYXRjaC0+YnVmZmVyW0JBVENIX1NUQVRFX1NQTElUXTsKLQot CS8qCi0JICogY29uc3QgYnVmZmVyIG5lZWRzIHRvIGZpbGwgZm9yIGV2ZXJ5IHRocmVhZCwgYnV0 IGFzIHdlIGhhdmUganVzdCAxCi0JICogdGhyZWFkIHBlciBldmVyeSBncm91cCwgc28gbmVlZCBv bmx5IG9uZSBjdXJiZSBkYXRhLgotCSAqIEZvciBlYWNoIHRocmVhZCwganVzdCB1c2UgdGhyZWFk IGdyb3VwIElEIGZvciBidWZmZXIgb2Zmc2V0LgotCSAqLwotCWN1cmJlX2J1ZmZlciA9IGdlbjdf ZmlsbF9jdXJiZV9idWZmZXJfZGF0YShiYXRjaCwgY29sb3IpOwotCi0JaW50ZXJmYWNlX2Rlc2Ny aXB0b3IgPSBnZW44X2ZpbGxfaW50ZXJmYWNlX2Rlc2NyaXB0b3IoYmF0Y2gsIGRzdCwKLQkJCQlr ZXJuZWwsIGtlcm5lbF9zaXplKTsKLQotCWlndF9hc3NlcnQoYmF0Y2gtPnB0ciA8ICZiYXRjaC0+ YnVmZmVyWzQwOTVdKTsKLQotCWJhdGNoLT5wdHIgPSBiYXRjaC0+YnVmZmVyOwotCi0JLyogR1BH UFUgcGlwZWxpbmUgKi8KLQlPVVRfQkFUQ0goR0VON19QSVBFTElORV9TRUxFQ1QgfCBHRU45X1BJ UEVMSU5FX1NFTEVDVElPTl9NQVNLIHwKLQkJICBQSVBFTElORV9TRUxFQ1RfR1BHUFUpOwotCi0J Z2VuOV9lbWl0X3N0YXRlX2Jhc2VfYWRkcmVzcyhiYXRjaCk7Ci0JZ2VuOF9lbWl0X3ZmZV9zdGF0 ZShiYXRjaCwgVEhSRUFEUywgR0VOOF9HUEdQVV9VUkJfRU5UUklFUywKLQkJCSAgICBHUEdQVV9V UkJfU0laRSwgR1BHUFVfQ1VSQkVfU0laRSk7Ci0JZ2VuN19lbWl0X2N1cmJlX2xvYWQoYmF0Y2gs IGN1cmJlX2J1ZmZlcik7Ci0JZ2VuN19lbWl0X2ludGVyZmFjZV9kZXNjcmlwdG9yX2xvYWQoYmF0 Y2gsIGludGVyZmFjZV9kZXNjcmlwdG9yKTsKLQlnZW44X2VtaXRfZ3BncHVfd2FsayhiYXRjaCwg eCwgeSwgd2lkdGgsIGhlaWdodCk7Ci0KLQlPVVRfQkFUQ0goTUlfQkFUQ0hfQlVGRkVSX0VORCk7 Ci0KLQliYXRjaF9lbmQgPSBpbnRlbF9iYXRjaGJ1ZmZlcl9hbGlnbihiYXRjaCwgOCk7Ci0JaWd0 X2Fzc2VydChiYXRjaF9lbmQgPCBCQVRDSF9TVEFURV9TUExJVCk7Ci0KLQlnZW43X3JlbmRlcl9m bHVzaChiYXRjaCwgYmF0Y2hfZW5kKTsKLQlpbnRlbF9iYXRjaGJ1ZmZlcl9yZXNldChiYXRjaCk7 Ci19Ci0KLQotc3RhdGljIHZvaWQKLV9fZ2VuOV9ncGdwdV9maWxsZnVuY192MihpbnQgaTkxNSwK LQkJCSBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsCi0JCQkgdW5zaWduZWQgeCwgdW5zaWduZWQgeSwK LQkJCSB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0LAotCQkJIHVpbnQ4X3QgY29sb3Is Ci0JCQkgY29uc3QgdWludDMyX3Qga2VybmVsW11bNF0sIHNpemVfdCBrZXJuZWxfc2l6ZSkKK19f Z2VuOV9ncGdwdV9maWxsZnVuYyhpbnQgaTkxNSwKKwkJICAgICAgc3RydWN0IGludGVsX2J1ZiAq YnVmLAorCQkgICAgICB1bnNpZ25lZCB4LCB1bnNpZ25lZCB5LAorCQkgICAgICB1bnNpZ25lZCB3 aWR0aCwgdW5zaWduZWQgaGVpZ2h0LAorCQkgICAgICB1aW50OF90IGNvbG9yLAorCQkgICAgICBj b25zdCB1aW50MzJfdCBrZXJuZWxbXVs0XSwgc2l6ZV90IGtlcm5lbF9zaXplKQogewogCXN0cnVj dCBpbnRlbF9iYiAqaWJiOwogCXVpbnQzMl90IGN1cmJlX2J1ZmZlciwgaW50ZXJmYWNlX2Rlc2Ny aXB0b3I7CkBAIC0zOTgsMTEgKzI0OSwxMSBAQCBfX2dlbjlfZ3BncHVfZmlsbGZ1bmNfdjIoaW50 IGk5MTUsCiAJICogRm9yIGVhY2ggdGhyZWFkLCBqdXN0IHVzZSB0aHJlYWQgZ3JvdXAgSUQgZm9y IGJ1ZmZlciBvZmZzZXQuCiAJICovCiAJLyogRmlsbCBjdXJiZSBidWZmZXIgZGF0YSAqLwotCWN1 cmJlX2J1ZmZlciA9IGdlbjdfZmlsbF9jdXJiZV9idWZmZXJfZGF0YV92MihpYmIsIGNvbG9yKTsK KwljdXJiZV9idWZmZXIgPSBnZW43X2ZpbGxfY3VyYmVfYnVmZmVyX2RhdGEoaWJiLCBjb2xvcik7 CiAKLQlpbnRlcmZhY2VfZGVzY3JpcHRvciA9IGdlbjhfZmlsbF9pbnRlcmZhY2VfZGVzY3JpcHRv cl92MihpYmIsIGJ1ZiwKLQkJCQkJCQkJIGtlcm5lbCwKLQkJCQkJCQkJIGtlcm5lbF9zaXplKTsK KwlpbnRlcmZhY2VfZGVzY3JpcHRvciA9IGdlbjhfZmlsbF9pbnRlcmZhY2VfZGVzY3JpcHRvcihp YmIsIGJ1ZiwKKwkJCQkJCQkgICAgICBrZXJuZWwsCisJCQkJCQkJICAgICAga2VybmVsX3NpemUp OwogCiAJaW50ZWxfYmJfcHRyX3NldChpYmIsIDApOwogCkBAIC00MTAsMTUgKzI2MSwxNSBAQCBf X2dlbjlfZ3BncHVfZmlsbGZ1bmNfdjIoaW50IGk5MTUsCiAJaW50ZWxfYmJfb3V0KGliYiwgR0VO N19QSVBFTElORV9TRUxFQ1QgfCBHRU45X1BJUEVMSU5FX1NFTEVDVElPTl9NQVNLIHwKIAkJICAg ICBQSVBFTElORV9TRUxFQ1RfR1BHUFUpOwogCi0JZ2VuOV9lbWl0X3N0YXRlX2Jhc2VfYWRkcmVz c192MihpYmIpOworCWdlbjlfZW1pdF9zdGF0ZV9iYXNlX2FkZHJlc3MoaWJiKTsKIAotCWdlbjhf ZW1pdF92ZmVfc3RhdGVfdjIoaWJiLCBUSFJFQURTLCBHRU44X0dQR1BVX1VSQl9FTlRSSUVTLAot CQkJICAgICAgIEdQR1BVX1VSQl9TSVpFLCBHUEdQVV9DVVJCRV9TSVpFKTsKKwlnZW44X2VtaXRf dmZlX3N0YXRlKGliYiwgVEhSRUFEUywgR0VOOF9HUEdQVV9VUkJfRU5UUklFUywKKwkJCSAgICBH UEdQVV9VUkJfU0laRSwgR1BHUFVfQ1VSQkVfU0laRSk7CiAKLQlnZW43X2VtaXRfY3VyYmVfbG9h ZF92MihpYmIsIGN1cmJlX2J1ZmZlcik7Ci0JZ2VuN19lbWl0X2ludGVyZmFjZV9kZXNjcmlwdG9y X2xvYWRfdjIoaWJiLCBpbnRlcmZhY2VfZGVzY3JpcHRvcik7CisJZ2VuN19lbWl0X2N1cmJlX2xv YWQoaWJiLCBjdXJiZV9idWZmZXIpOworCWdlbjdfZW1pdF9pbnRlcmZhY2VfZGVzY3JpcHRvcl9s b2FkKGliYiwgaW50ZXJmYWNlX2Rlc2NyaXB0b3IpOwogCi0JZ2VuOF9lbWl0X2dwZ3B1X3dhbGtf djIoaWJiLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKwlnZW44X2VtaXRfZ3BncHVfd2FsayhpYmIs IHgsIHksIHdpZHRoLCBoZWlnaHQpOwogCiAJaW50ZWxfYmJfb3V0KGliYiwgTUlfQkFUQ0hfQlVG RkVSX0VORCk7CiAJaW50ZWxfYmJfcHRyX2FsaWduKGliYiwgMzIpOwpAQCAtNDI5LDY2ICsyODAs MzUgQEAgX19nZW45X2dwZ3B1X2ZpbGxmdW5jX3YyKGludCBpOTE1LAogCWludGVsX2JiX2Rlc3Ry b3koaWJiKTsKIH0KIAotdm9pZCBnZW45X2dwZ3B1X2ZpbGxmdW5jKHN0cnVjdCBpbnRlbF9iYXRj aGJ1ZmZlciAqYmF0Y2gsCi0JCQkgY29uc3Qgc3RydWN0IGlndF9idWYgKmRzdCwKLQkJCSB1bnNp Z25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHksCi0JCQkgdW5zaWduZWQgaW50IHdpZHRoLCB1bnNp Z25lZCBpbnQgaGVpZ2h0LAordm9pZCBnZW45X2dwZ3B1X2ZpbGxmdW5jKGludCBpOTE1LAorCQkJ IHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwKKwkJCSB1bnNpZ25lZCB4LCB1bnNpZ25lZCB5LAorCQkJ IHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsCiAJCQkgdWludDhfdCBjb2xvcikKIHsK LQlfX2dlbjlfZ3BncHVfZmlsbGZ1bmMoYmF0Y2gsIGRzdCwgeCwgeSwgd2lkdGgsIGhlaWdodCwg Y29sb3IsCi0JCQkgICAgICBnZW45X2dwZ3B1X2tlcm5lbCwgc2l6ZW9mKGdlbjlfZ3BncHVfa2Vy bmVsKSk7Ci19Ci0KLXZvaWQgZ2VuOV9ncGdwdV9maWxsZnVuY192MihpbnQgaTkxNSwKLQkJCSAg ICBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsCi0JCQkgICAgdW5zaWduZWQgeCwgdW5zaWduZWQgeSwK LQkJCSAgICB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0LAotCQkJICAgIHVpbnQ4X3Qg Y29sb3IpCi17Ci0JX19nZW45X2dwZ3B1X2ZpbGxmdW5jX3YyKGk5MTUsIGJ1ZiwgeCwgeSwgd2lk dGgsIGhlaWdodCwgY29sb3IsCi0JCQkJIGdlbjlfZ3BncHVfa2VybmVsLAotCQkJCSBzaXplb2Yo Z2VuOV9ncGdwdV9rZXJuZWwpKTsKKwlfX2dlbjlfZ3BncHVfZmlsbGZ1bmMoaTkxNSwgYnVmLCB4 LCB5LCB3aWR0aCwgaGVpZ2h0LCBjb2xvciwKKwkJCSAgICAgIGdlbjlfZ3BncHVfa2VybmVsLAor CQkJICAgICAgc2l6ZW9mKGdlbjlfZ3BncHVfa2VybmVsKSk7CiB9CiAKLQotdm9pZCBnZW4xMV9n cGdwdV9maWxsZnVuYyhzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAotCQkJICBjb25z dCBzdHJ1Y3QgaWd0X2J1ZiAqZHN0LAotCQkJICB1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50 IHksCi0JCQkgIHVuc2lnbmVkIGludCB3aWR0aCwgdW5zaWduZWQgaW50IGhlaWdodCwKK3ZvaWQg Z2VuMTFfZ3BncHVfZmlsbGZ1bmMoaW50IGk5MTUsCisJCQkgIHN0cnVjdCBpbnRlbF9idWYgKmJ1 ZiwKKwkJCSAgdW5zaWduZWQgeCwgdW5zaWduZWQgeSwKKwkJCSAgdW5zaWduZWQgd2lkdGgsIHVu c2lnbmVkIGhlaWdodCwKIAkJCSAgdWludDhfdCBjb2xvcikKIHsKLQlfX2dlbjlfZ3BncHVfZmls bGZ1bmMoYmF0Y2gsIGRzdCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgY29sb3IsCi0JCQkgICAgICBn ZW4xMV9ncGdwdV9rZXJuZWwsIHNpemVvZihnZW4xMV9ncGdwdV9rZXJuZWwpKTsKKwlfX2dlbjlf Z3BncHVfZmlsbGZ1bmMoaTkxNSwgYnVmLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBjb2xvciwKKwkJ CSAgICAgIGdlbjExX2dwZ3B1X2tlcm5lbCwKKwkJCSAgICAgIHNpemVvZihnZW4xMV9ncGdwdV9r ZXJuZWwpKTsKIH0KIAotdm9pZCBnZW4xMV9ncGdwdV9maWxsZnVuY192MihpbnQgaTkxNSwKLQkJ CSAgICAgc3RydWN0IGludGVsX2J1ZiAqYnVmLAotCQkJICAgICB1bnNpZ25lZCB4LCB1bnNpZ25l ZCB5LAotCQkJICAgICB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0LAotCQkJICAgICB1 aW50OF90IGNvbG9yKQotewotCV9fZ2VuOV9ncGdwdV9maWxsZnVuY192MihpOTE1LCBidWYsIHgs IHksIHdpZHRoLCBoZWlnaHQsIGNvbG9yLAotCQkJCSBnZW4xMV9ncGdwdV9rZXJuZWwsCi0JCQkJ IHNpemVvZihnZW4xMV9ncGdwdV9rZXJuZWwpKTsKLX0KLQotdm9pZCBnZW4xMl9ncGdwdV9maWxs ZnVuYyhzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAotCQkJICBjb25zdCBzdHJ1Y3Qg aWd0X2J1ZiAqZHN0LAotCQkJICB1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHksCi0JCQkg IHVuc2lnbmVkIGludCB3aWR0aCwgdW5zaWduZWQgaW50IGhlaWdodCwKK3ZvaWQgZ2VuMTJfZ3Bn cHVfZmlsbGZ1bmMoaW50IGk5MTUsCisJCQkgIHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwKKwkJCSAg dW5zaWduZWQgeCwgdW5zaWduZWQgeSwKKwkJCSAgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhl aWdodCwKIAkJCSAgdWludDhfdCBjb2xvcikKIHsKLQlfX2dlbjlfZ3BncHVfZmlsbGZ1bmMoYmF0 Y2gsIGRzdCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgY29sb3IsCi0JCQkgICAgICBnZW4xMl9ncGdw dV9rZXJuZWwsIHNpemVvZihnZW4xMl9ncGdwdV9rZXJuZWwpKTsKLX0KLQotdm9pZCBnZW4xMl9n cGdwdV9maWxsZnVuY192MihpbnQgaTkxNSwKLQkJCSAgICAgc3RydWN0IGludGVsX2J1ZiAqYnVm LAotCQkJICAgICB1bnNpZ25lZCB4LCB1bnNpZ25lZCB5LAotCQkJICAgICB1bnNpZ25lZCB3aWR0 aCwgdW5zaWduZWQgaGVpZ2h0LAotCQkJICAgICB1aW50OF90IGNvbG9yKQotewotCV9fZ2VuOV9n cGdwdV9maWxsZnVuY192MihpOTE1LCBidWYsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGNvbG9yLAot CQkJCSBnZW4xMl9ncGdwdV9rZXJuZWwsCi0JCQkJIHNpemVvZihnZW4xMl9ncGdwdV9rZXJuZWwp KTsKKwlfX2dlbjlfZ3BncHVfZmlsbGZ1bmMoaTkxNSwgYnVmLCB4LCB5LCB3aWR0aCwgaGVpZ2h0 LCBjb2xvciwKKwkJCSAgICAgIGdlbjEyX2dwZ3B1X2tlcm5lbCwKKwkJCSAgICAgIHNpemVvZihn ZW4xMl9ncGdwdV9rZXJuZWwpKTsKIH0KZGlmZiAtLWdpdCBhL2xpYi9ncGdwdV9maWxsLmggYi9s aWIvZ3BncHVfZmlsbC5oCmluZGV4IGEzODc3MzJiLi4yNWFiZTFmYSAxMDA2NDQKLS0tIGEvbGli L2dwZ3B1X2ZpbGwuaAorKysgYi9saWIvZ3BncHVfZmlsbC5oCkBAIC0yNyw3NSArMjcsMzggQEAK ICNpZm5kZWYgR1BHUFVfRklMTF9ICiAjZGVmaW5lIEdQR1BVX0ZJTExfSAogCi0jaW5jbHVkZSAi aW50ZWxfYmF0Y2hidWZmZXIuaCIKICNpbmNsdWRlICJpbnRlbF9idWZvcHMuaCIKIAogdm9pZAot Z2VuN19ncGdwdV9maWxsZnVuYyhzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAotCQkg ICAgY29uc3Qgc3RydWN0IGlndF9idWYgKmRzdCwKLQkJICAgIHVuc2lnbmVkIGludCB4LCB1bnNp Z25lZCBpbnQgeSwKLQkJICAgIHVuc2lnbmVkIGludCB3aWR0aCwgdW5zaWduZWQgaW50IGhlaWdo dCwKK2dlbjdfZ3BncHVfZmlsbGZ1bmMoaW50IGk5MTUsCisJCSAgICBzdHJ1Y3QgaW50ZWxfYnVm ICpidWYsCisJCSAgICB1bnNpZ25lZCB4LCB1bnNpZ25lZCB5LAorCQkgICAgdW5zaWduZWQgd2lk dGgsIHVuc2lnbmVkIGhlaWdodCwKIAkJICAgIHVpbnQ4X3QgY29sb3IpOwogCiB2b2lkCi1nZW43 X2dwZ3B1X2ZpbGxmdW5jX3YyKGludCBpOTE1LAotCQkgICAgICAgc3RydWN0IGludGVsX2J1ZiAq YnVmLAotCQkgICAgICAgdW5zaWduZWQgeCwgdW5zaWduZWQgeSwKLQkJICAgICAgIHVuc2lnbmVk IHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsCi0JCSAgICAgICB1aW50OF90IGNvbG9yKTsKLQotdm9p ZAotZ2VuOF9ncGdwdV9maWxsZnVuYyhzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAot CQkgICAgY29uc3Qgc3RydWN0IGlndF9idWYgKmRzdCwKLQkJICAgIHVuc2lnbmVkIGludCB4LCB1 bnNpZ25lZCBpbnQgeSwKLQkJICAgIHVuc2lnbmVkIGludCB3aWR0aCwgdW5zaWduZWQgaW50IGhl aWdodCwKLQkJICAgIHVpbnQ4X3QgY29sb3IpOwotCi12b2lkCi1nZW44X2dwZ3B1X2ZpbGxmdW5j X3YyKGludCBpOTE1LAotCQkgICAgICAgc3RydWN0IGludGVsX2J1ZiAqYnVmLAotCQkgICAgICAg dW5zaWduZWQgeCwgdW5zaWduZWQgeSwKLQkJICAgICAgIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25l ZCBoZWlnaHQsCi0JCSAgICAgICB1aW50OF90IGNvbG9yKTsKLQotdm9pZAotZ2VuOV9ncGdwdV9m aWxsZnVuYyhzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAotCQkgICAgY29uc3Qgc3Ry dWN0IGlndF9idWYgKmRzdCwKLQkJICAgIHVuc2lnbmVkIGludCB4LCB1bnNpZ25lZCBpbnQgeSwK LQkJICAgIHVuc2lnbmVkIGludCB3aWR0aCwgdW5zaWduZWQgaW50IGhlaWdodCwKK2dlbjhfZ3Bn cHVfZmlsbGZ1bmMoaW50IGk5MTUsCisJCSAgICBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsCisJCSAg ICB1bnNpZ25lZCB4LCB1bnNpZ25lZCB5LAorCQkgICAgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVk IGhlaWdodCwKIAkJICAgIHVpbnQ4X3QgY29sb3IpOwogCi12b2lkIGdlbjlfZ3BncHVfZmlsbGZ1 bmNfdjIoaW50IGk5MTUsCi0JCQkgICAgc3RydWN0IGludGVsX2J1ZiAqYnVmLAotCQkJICAgIHVu c2lnbmVkIHgsIHVuc2lnbmVkIHksCi0JCQkgICAgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhl aWdodCwKLQkJCSAgICB1aW50OF90IGNvbG9yKTsKLQotdm9pZAotZ2VuMTFfZ3BncHVfZmlsbGZ1 bmMoc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwKLQkJICAgICBjb25zdCBzdHJ1Y3Qg aWd0X2J1ZiAqZHN0LAotCQkgICAgIHVuc2lnbmVkIGludCB4LCB1bnNpZ25lZCBpbnQgeSwKLQkJ ICAgICB1bnNpZ25lZCBpbnQgd2lkdGgsIHVuc2lnbmVkIGludCBoZWlnaHQsCi0JCSAgICAgdWlu dDhfdCBjb2xvcik7Ci0KLXZvaWQgZ2VuMTFfZ3BncHVfZmlsbGZ1bmNfdjIoaW50IGk5MTUsCi0J CQkgICAgIHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwKLQkJCSAgICAgdW5zaWduZWQgeCwgdW5zaWdu ZWQgeSwKLQkJCSAgICAgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwKLQkJCSAgICAg dWludDhfdCBjb2xvcik7Cit2b2lkIGdlbjlfZ3BncHVfZmlsbGZ1bmMoaW50IGk5MTUsCisJCQkg c3RydWN0IGludGVsX2J1ZiAqYnVmLAorCQkJIHVuc2lnbmVkIHgsIHVuc2lnbmVkIHksCisJCQkg dW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwKKwkJCSB1aW50OF90IGNvbG9yKTsKIAot dm9pZAotZ2VuMTJfZ3BncHVfZmlsbGZ1bmMoc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRj aCwKLQkJICAgICBjb25zdCBzdHJ1Y3QgaWd0X2J1ZiAqZHN0LAotCQkgICAgIHVuc2lnbmVkIGlu dCB4LCB1bnNpZ25lZCBpbnQgeSwKLQkJICAgICB1bnNpZ25lZCBpbnQgd2lkdGgsIHVuc2lnbmVk IGludCBoZWlnaHQsCi0JCSAgICAgdWludDhfdCBjb2xvcik7Cit2b2lkIGdlbjExX2dwZ3B1X2Zp bGxmdW5jKGludCBpOTE1LAorCQkJICBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsCisJCQkgIHVuc2ln bmVkIHgsIHVuc2lnbmVkIHksCisJCQkgIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQs CisJCQkgIHVpbnQ4X3QgY29sb3IpOwogCi12b2lkCi1nZW4xMl9ncGdwdV9maWxsZnVuY192Mihp bnQgaTkxNSwKLQkJCXN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwKLQkJCXVuc2lnbmVkIHgsIHVuc2ln bmVkIHksCi0JCQl1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0LAotCQkJdWludDhfdCBj b2xvcik7Cit2b2lkIGdlbjEyX2dwZ3B1X2ZpbGxmdW5jKGludCBpOTE1LAorCQkJICBzdHJ1Y3Qg aW50ZWxfYnVmICpidWYsCisJCQkgIHVuc2lnbmVkIHgsIHVuc2lnbmVkIHksCisJCQkgIHVuc2ln bmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsCisJCQkgIHVpbnQ4X3QgY29sb3IpOwogCiAjZW5k aWYgLyogR1BHUFVfRklMTF9IICovCmRpZmYgLS1naXQgYS9saWIvZ3B1X2NtZHMuYyBiL2xpYi9n cHVfY21kcy5jCmluZGV4IDhjNDFkMGYzLi44YzI4NGViMSAxMDA2NDQKLS0tIGEvbGliL2dwdV9j bWRzLmMKKysrIGIvbGliL2dwdV9jbWRzLmMKQEAgLTI0LDc3MyArMjQsMjQgQEAKIAogI2luY2x1 ZGUgImdwdV9jbWRzLmgiCiAKLXZvaWQKLWdlbjdfcmVuZGVyX2ZsdXNoKHN0cnVjdCBpbnRlbF9i YXRjaGJ1ZmZlciAqYmF0Y2gsIHVpbnQzMl90IGJhdGNoX2VuZCkKLXsKLQlpbnQgcmV0OwotCi0J cmV0ID0gZHJtX2ludGVsX2JvX3N1YmRhdGEoYmF0Y2gtPmJvLCAwLCA0MDk2LCBiYXRjaC0+YnVm ZmVyKTsKLQlpZiAocmV0ID09IDApCi0JCXJldCA9IGRybV9pbnRlbF9ib19tcmJfZXhlYyhiYXRj aC0+Ym8sIGJhdGNoX2VuZCwKLQkJCQkJICAgIE5VTEwsIDAsIDAsIDApOwotCWlndF9hc3NlcnQo cmV0ID09IDApOwotfQotCi12b2lkCi1nZW43X3JlbmRlcl9jb250ZXh0X2ZsdXNoKHN0cnVjdCBp bnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsIHVpbnQzMl90IGJhdGNoX2VuZCkKLXsKLQlpZ3RfYXNz ZXJ0X2VxKGRybV9pbnRlbF9ib19zdWJkYXRhKGJhdGNoLT5ibywKLQkJCQkJICAgMCwgNDA5Niwg YmF0Y2gtPmJ1ZmZlciksCi0JCSAgICAgIDApOwotCWlndF9hc3NlcnRfZXEoZHJtX2ludGVsX2dl bV9ib19jb250ZXh0X2V4ZWMoYmF0Y2gtPmJvLCBiYXRjaC0+Y3R4LAotCQkJCQkJICAgIGJhdGNo X2VuZCwgMCksCi0JCSAgICAgIDApOwotfQotCi11aW50MzJfdAotZ2VuN19maWxsX2N1cmJlX2J1 ZmZlcl9kYXRhKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCi0JCQkgICAgdWludDhf dCBjb2xvcikKLXsKLQl1aW50OF90ICpjdXJiZV9idWZmZXI7Ci0JdWludDMyX3Qgb2Zmc2V0Owot Ci0JY3VyYmVfYnVmZmVyID0gaW50ZWxfYmF0Y2hidWZmZXJfc3ViZGF0YV9hbGxvYyhiYXRjaCwK LQkJCQkJCSAgICAgICBzaXplb2YodWludDMyX3QpICogOCwKLQkJCQkJCSAgICAgICA2NCk7Ci0J b2Zmc2V0ID0gaW50ZWxfYmF0Y2hidWZmZXJfc3ViZGF0YV9vZmZzZXQoYmF0Y2gsIGN1cmJlX2J1 ZmZlcik7Ci0JKmN1cmJlX2J1ZmZlciA9IGNvbG9yOwotCi0JcmV0dXJuIG9mZnNldDsKLX0KLQot dWludDMyX3QKLWdlbjExX2ZpbGxfY3VyYmVfYnVmZmVyX2RhdGEoc3RydWN0IGludGVsX2JiICpp YmIpCi0KLXsKLQl1aW50MzJfdCAqY3VyYmVfYnVmZmVyOwotCXVpbnQzMl90IG9mZnNldDsKLQot CWludGVsX2JiX3B0cl9hbGlnbihpYmIsIDY0KTsKLQljdXJiZV9idWZmZXIgPSBpbnRlbF9iYl9w dHIoaWJiKTsKLQlvZmZzZXQgPSBpbnRlbF9iYl9vZmZzZXQoaWJiKTsKLQotCSpjdXJiZV9idWZm ZXIrKyA9IDA7Ci0JKmN1cmJlX2J1ZmZlciA9IDE7Ci0JaW50ZWxfYmJfcHRyX2FkZChpYmIsIDY0 KTsKLQotCXJldHVybiBvZmZzZXQ7Ci19Ci0KLXVpbnQzMl90Ci1nZW43X2ZpbGxfc3VyZmFjZV9z dGF0ZShzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAotCQkJY29uc3Qgc3RydWN0IGln dF9idWYgKmJ1ZiwKLQkJCXVpbnQzMl90IGZvcm1hdCwKLQkJCWludCBpc19kc3QpCi17Ci0Jc3Ry dWN0IGdlbjdfc3VyZmFjZV9zdGF0ZSAqc3M7Ci0JdWludDMyX3Qgd3JpdGVfZG9tYWluLCByZWFk X2RvbWFpbiwgb2Zmc2V0OwotCWludCByZXQ7Ci0KLQlpZiAoaXNfZHN0KSB7Ci0JCXdyaXRlX2Rv bWFpbiA9IHJlYWRfZG9tYWluID0gSTkxNV9HRU1fRE9NQUlOX1JFTkRFUjsKLQl9IGVsc2Ugewot CQl3cml0ZV9kb21haW4gPSAwOwotCQlyZWFkX2RvbWFpbiA9IEk5MTVfR0VNX0RPTUFJTl9TQU1Q TEVSOwotCX0KLQotCXNzID0gaW50ZWxfYmF0Y2hidWZmZXJfc3ViZGF0YV9hbGxvYyhiYXRjaCwg c2l6ZW9mKCpzcyksIDY0KTsKLQlvZmZzZXQgPSBpbnRlbF9iYXRjaGJ1ZmZlcl9zdWJkYXRhX29m ZnNldChiYXRjaCwgc3MpOwotCi0Jc3MtPnNzMC5zdXJmYWNlX3R5cGUgPSBTVVJGQUNFXzJEOwot CXNzLT5zczAuc3VyZmFjZV9mb3JtYXQgPSBmb3JtYXQ7Ci0Jc3MtPnNzMC5yZW5kZXJfY2FjaGVf cmVhZF93cml0ZSA9IDE7Ci0KLQlpZiAoYnVmLT50aWxpbmcgPT0gSTkxNV9USUxJTkdfWCkKLQkJ c3MtPnNzMC50aWxlZF9tb2RlID0gMjsKLQllbHNlIGlmIChidWYtPnRpbGluZyA9PSBJOTE1X1RJ TElOR19ZKQotCQlzcy0+c3MwLnRpbGVkX21vZGUgPSAzOwotCi0Jc3MtPnNzMS5iYXNlX2FkZHIg PSBidWYtPmJvLT5vZmZzZXQ7Ci0JcmV0ID0gZHJtX2ludGVsX2JvX2VtaXRfcmVsb2MoYmF0Y2gt PmJvLAotCQkJCWludGVsX2JhdGNoYnVmZmVyX3N1YmRhdGFfb2Zmc2V0KGJhdGNoLCBzcykgKyA0 LAotCQkJCWJ1Zi0+Ym8sIDAsCi0JCQkJcmVhZF9kb21haW4sIHdyaXRlX2RvbWFpbik7Ci0JaWd0 X2Fzc2VydChyZXQgPT0gMCk7Ci0KLQlzcy0+c3MyLmhlaWdodCA9IGlndF9idWZfaGVpZ2h0KGJ1 ZikgLSAxOwotCXNzLT5zczIud2lkdGggID0gaWd0X2J1Zl93aWR0aChidWYpIC0gMTsKLQotCXNz LT5zczMucGl0Y2ggID0gYnVmLT5zdXJmYWNlWzBdLnN0cmlkZSAtIDE7Ci0KLQlzcy0+c3M3LnNo YWRlcl9jaGFuZWxfc2VsZWN0X3IgPSA0OwotCXNzLT5zczcuc2hhZGVyX2NoYW5lbF9zZWxlY3Rf ZyA9IDU7Ci0Jc3MtPnNzNy5zaGFkZXJfY2hhbmVsX3NlbGVjdF9iID0gNjsKLQlzcy0+c3M3LnNo YWRlcl9jaGFuZWxfc2VsZWN0X2EgPSA3OwotCi0JcmV0dXJuIG9mZnNldDsKLX0KLQotdWludDMy X3QKLWdlbjdfZmlsbF9iaW5kaW5nX3RhYmxlKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0 Y2gsCi0JCQljb25zdCBzdHJ1Y3QgaWd0X2J1ZiAqZHN0KQotewotCXVpbnQzMl90ICpiaW5kaW5n X3RhYmxlLCBvZmZzZXQ7Ci0KLQliaW5kaW5nX3RhYmxlID0gaW50ZWxfYmF0Y2hidWZmZXJfc3Vi ZGF0YV9hbGxvYyhiYXRjaCwgMzIsIDY0KTsKLQlvZmZzZXQgPSBpbnRlbF9iYXRjaGJ1ZmZlcl9z dWJkYXRhX29mZnNldChiYXRjaCwgYmluZGluZ190YWJsZSk7Ci0JaWYgKElTX0dFTjcoYmF0Y2gt PmRldmlkKSkKLQkJYmluZGluZ190YWJsZVswXSA9IGdlbjdfZmlsbF9zdXJmYWNlX3N0YXRlKGJh dGNoLCBkc3QsCi0JCQkJCQlTVVJGQUNFRk9STUFUX1I4X1VOT1JNLCAxKTsKLQllbHNlCi0JCWJp bmRpbmdfdGFibGVbMF0gPSBnZW44X2ZpbGxfc3VyZmFjZV9zdGF0ZShiYXRjaCwgZHN0LAotCQkJ CQkJU1VSRkFDRUZPUk1BVF9SOF9VTk9STSwgMSk7Ci0KLQlyZXR1cm4gb2Zmc2V0OwotfQotCi11 aW50MzJfdAotZ2VuMTFfZmlsbF9iaW5kaW5nX3RhYmxlKHN0cnVjdCBpbnRlbF9iYiAqaWJiLAot CQkJIGNvbnN0IHN0cnVjdCBpbnRlbF9idWYgKnNyYywKLQkJCSBjb25zdCBzdHJ1Y3QgaW50ZWxf YnVmICpkc3QpCi17Ci0JdWludDMyX3QgYmluZGluZ190YWJsZV9vZmZzZXQ7Ci0JdWludDMyX3Qg KmJpbmRpbmdfdGFibGU7Ci0KLQlpbnRlbF9iYl9wdHJfYWxpZ24oaWJiLCA2NCk7Ci0JYmluZGlu Z190YWJsZV9vZmZzZXQgPSBpbnRlbF9iYl9vZmZzZXQoaWJiKTsKLQliaW5kaW5nX3RhYmxlID0g aW50ZWxfYmJfcHRyKGliYik7Ci0JaW50ZWxfYmJfcHRyX2FkZChpYmIsIDY0KTsKLQotCWJpbmRp bmdfdGFibGVbMF0gPSBnZW4xMV9maWxsX3N1cmZhY2Vfc3RhdGUoaWJiLCBzcmMsCi0JCQkJCQkg ICAgU1VSRkFDRV8xRCwKLQkJCQkJCSAgICBTVVJGQUNFRk9STUFUX1IzMkczMkIzMkEzMl9GTE9B VCwKLQkJCQkJCSAgICAwLCAwLCAwKTsKLQliaW5kaW5nX3RhYmxlWzFdID0gZ2VuMTFfZmlsbF9z dXJmYWNlX3N0YXRlKGliYiwgZHN0LAotCQkJCQkJICAgIFNVUkZBQ0VfQlVGRkVSLAotCQkJCQkJ ICAgIFNVUkZBQ0VGT1JNQVRfUkFXLAotCQkJCQkJICAgIDEsIDEsIDEpOwotCi0JcmV0dXJuIGJp bmRpbmdfdGFibGVfb2Zmc2V0OwotCi19Ci0KLXVpbnQzMl90Ci1nZW43X2ZpbGxfa2VybmVsKHN0 cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCi0JCWNvbnN0IHVpbnQzMl90IGtlcm5lbFtd WzRdLAotCQlzaXplX3Qgc2l6ZSkKLXsKLQl1aW50MzJfdCBvZmZzZXQ7Ci0KLQlvZmZzZXQgPSBp bnRlbF9iYXRjaGJ1ZmZlcl9jb3B5X2RhdGEoYmF0Y2gsIGtlcm5lbCwgc2l6ZSwgNjQpOwotCi0J cmV0dXJuIG9mZnNldDsKLX0KLQotdWludDMyX3QKLWdlbjdfZmlsbF9pbnRlcmZhY2VfZGVzY3Jp cHRvcihzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAotCQkJICAgICAgIGNvbnN0IHN0 cnVjdCBpZ3RfYnVmICpkc3QsCi0JCQkgICAgICAgY29uc3QgdWludDMyX3Qga2VybmVsW11bNF0s Ci0JCQkgICAgICAgc2l6ZV90IHNpemUpCi17Ci0Jc3RydWN0IGdlbjdfaW50ZXJmYWNlX2Rlc2Ny aXB0b3JfZGF0YSAqaWRkOwotCXVpbnQzMl90IG9mZnNldDsKLQl1aW50MzJfdCBiaW5kaW5nX3Rh YmxlX29mZnNldCwga2VybmVsX29mZnNldDsKLQotCWJpbmRpbmdfdGFibGVfb2Zmc2V0ID0gZ2Vu N19maWxsX2JpbmRpbmdfdGFibGUoYmF0Y2gsIGRzdCk7Ci0Ja2VybmVsX29mZnNldCA9IGdlbjdf ZmlsbF9rZXJuZWwoYmF0Y2gsIGtlcm5lbCwgc2l6ZSk7Ci0KLQlpZGQgPSBpbnRlbF9iYXRjaGJ1 ZmZlcl9zdWJkYXRhX2FsbG9jKGJhdGNoLCBzaXplb2YoKmlkZCksIDY0KTsKLQlvZmZzZXQgPSBp bnRlbF9iYXRjaGJ1ZmZlcl9zdWJkYXRhX29mZnNldChiYXRjaCwgaWRkKTsKLQotCWlkZC0+ZGVz YzAua2VybmVsX3N0YXJ0X3BvaW50ZXIgPSAoa2VybmVsX29mZnNldCA+PiA2KTsKLQotCWlkZC0+ ZGVzYzEuc2luZ2xlX3Byb2dyYW1fZmxvdyA9IDE7Ci0JaWRkLT5kZXNjMS5mbG9hdGluZ19wb2lu dF9tb2RlID0gR0VON19GTE9BVElOR19QT0lOVF9JRUVFXzc1NDsKLQotCWlkZC0+ZGVzYzIuc2Ft cGxlcl9jb3VudCA9IDA7ICAgICAgLyogMCBzYW1wbGVycyB1c2VkICovCi0JaWRkLT5kZXNjMi5z YW1wbGVyX3N0YXRlX3BvaW50ZXIgPSAwOwotCi0JaWRkLT5kZXNjMy5iaW5kaW5nX3RhYmxlX2Vu dHJ5X2NvdW50ID0gMDsKLQlpZGQtPmRlc2MzLmJpbmRpbmdfdGFibGVfcG9pbnRlciA9IChiaW5k aW5nX3RhYmxlX29mZnNldCA+PiA1KTsKLQotCWlkZC0+ZGVzYzQuY29uc3RhbnRfdXJiX2VudHJ5 X3JlYWRfb2Zmc2V0ID0gMDsKLQlpZGQtPmRlc2M0LmNvbnN0YW50X3VyYl9lbnRyeV9yZWFkX2xl bmd0aCA9IDE7IC8qIGdyZiAxICovCi0KLQlyZXR1cm4gb2Zmc2V0OwotfQotCi12b2lkCi1nZW43 X2VtaXRfc3RhdGVfYmFzZV9hZGRyZXNzKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gp Ci17Ci0JT1VUX0JBVENIKEdFTjdfU1RBVEVfQkFTRV9BRERSRVNTIHwgKDEwIC0gMikpOwotCi0J LyogZ2VuZXJhbCAqLwotCU9VVF9CQVRDSCgwKTsKLQotCS8qIHN1cmZhY2UgKi8KLQlPVVRfUkVM T0MoYmF0Y2gtPmJvLCBJOTE1X0dFTV9ET01BSU5fSU5TVFJVQ1RJT04sIDAsCi0JCSAgQkFTRV9B RERSRVNTX01PRElGWSk7Ci0KLQkvKiBkeW5hbWljICovCi0JT1VUX1JFTE9DKGJhdGNoLT5ibywg STkxNV9HRU1fRE9NQUlOX0lOU1RSVUNUSU9OLCAwLAotCQkgIEJBU0VfQUREUkVTU19NT0RJRlkp OwotCi0JLyogaW5kaXJlY3QgKi8KLQlPVVRfQkFUQ0goMCk7Ci0KLQkvKiBpbnN0cnVjdGlvbiAq LwotCU9VVF9SRUxPQyhiYXRjaC0+Ym8sIEk5MTVfR0VNX0RPTUFJTl9JTlNUUlVDVElPTiwgMCwK LQkJICBCQVNFX0FERFJFU1NfTU9ESUZZKTsKLQotCS8qIGdlbmVyYWwvZHluYW1pYy9pbmRpcmVj dC9pbnN0cnVjdGlvbiBhY2Nlc3MgQm91bmQgKi8KLQlPVVRfQkFUQ0goMCk7Ci0JT1VUX0JBVENI KDAgfCBCQVNFX0FERFJFU1NfTU9ESUZZKTsKLQlPVVRfQkFUQ0goMCk7Ci0JT1VUX0JBVENIKDAg fCBCQVNFX0FERFJFU1NfTU9ESUZZKTsKLX0KLQotdm9pZAotZ2VuN19lbWl0X3ZmZV9zdGF0ZShz dHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLCB1aW50MzJfdCB0aHJlYWRzLAotCQkgICAg dWludDMyX3QgdXJiX2VudHJpZXMsIHVpbnQzMl90IHVyYl9zaXplLAotCQkgICAgdWludDMyX3Qg Y3VyYmVfc2l6ZSwgdWludDMyX3QgbW9kZSkKLXsKLQlPVVRfQkFUQ0goR0VON19NRURJQV9WRkVf U1RBVEUgfCAoOCAtIDIpKTsKLQotCS8qIHNjcmF0Y2ggYnVmZmVyICovCi0JT1VUX0JBVENIKDAp OwotCi0JLyogbnVtYmVyIG9mIHRocmVhZHMgJiB1cmIgZW50cmllcyAqLwotCU9VVF9CQVRDSCh0 aHJlYWRzIDw8IDE2IHwKLQkJdXJiX2VudHJpZXMgPDwgOCB8Ci0JCW1vZGUgPDwgMik7IC8qIEdQ R1BVIHZzIG1lZGlhIG1vZGUgKi8KLQotCU9VVF9CQVRDSCgwKTsKLQotCS8qIHVyYiBlbnRyeSBz aXplICYgY3VyYmUgc2l6ZSAqLwotCU9VVF9CQVRDSCh1cmJfc2l6ZSA8PCAxNiB8CS8qIGluIDI1 NiBiaXRzIHVuaXQgKi8KLQkJICBjdXJiZV9zaXplKTsJCS8qIGluIDI1NiBiaXRzIHVuaXQgKi8K LQotCS8qIHNjb3JlYm9hcmQgKi8KLQlPVVRfQkFUQ0goMCk7Ci0JT1VUX0JBVENIKDApOwotCU9V VF9CQVRDSCgwKTsKLX0KLQotdm9pZAotZ2VuN19lbWl0X2N1cmJlX2xvYWQoc3RydWN0IGludGVs X2JhdGNoYnVmZmVyICpiYXRjaCwgdWludDMyX3QgY3VyYmVfYnVmZmVyKQotewotCU9VVF9CQVRD SChHRU43X01FRElBX0NVUkJFX0xPQUQgfCAoNCAtIDIpKTsKLQlPVVRfQkFUQ0goMCk7Ci0JLyog Y3VyYmUgdG90YWwgZGF0YSBsZW5ndGggKi8KLQlPVVRfQkFUQ0goNjQpOwotCS8qIGN1cmJlIGRh dGEgc3RhcnQgYWRkcmVzcywgaXMgcmVsYXRpdmUgdG8gdGhlIGR5bmFtaWNzIGJhc2UgYWRkcmVz cyAqLwotCU9VVF9CQVRDSChjdXJiZV9idWZmZXIpOwotfQotCi12b2lkCi1nZW43X2VtaXRfaW50 ZXJmYWNlX2Rlc2NyaXB0b3JfbG9hZChzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAot CQkJCSAgICB1aW50MzJfdCBpbnRlcmZhY2VfZGVzY3JpcHRvcikKLXsKLQlPVVRfQkFUQ0goR0VO N19NRURJQV9JTlRFUkZBQ0VfREVTQ1JJUFRPUl9MT0FEIHwgKDQgLSAyKSk7Ci0JT1VUX0JBVENI KDApOwotCS8qIGludGVyZmFjZSBkZXNjcmlwdG9yIGRhdGEgbGVuZ3RoICovCi0JaWYgKElTX0dF TjcoYmF0Y2gtPmRldmlkKSkKLQkJT1VUX0JBVENIKHNpemVvZihzdHJ1Y3QgZ2VuN19pbnRlcmZh Y2VfZGVzY3JpcHRvcl9kYXRhKSk7Ci0JZWxzZQotCQlPVVRfQkFUQ0goc2l6ZW9mKHN0cnVjdCBn ZW44X2ludGVyZmFjZV9kZXNjcmlwdG9yX2RhdGEpKTsKLQkvKiBpbnRlcmZhY2UgZGVzY3JpcHRv ciBhZGRyZXNzLCBpcyByZWxhdGl2ZSB0byB0aGUgZHluYW1pY3MgYmFzZQotCSAqIGFkZHJlc3MK LQkgKi8KLQlPVVRfQkFUQ0goaW50ZXJmYWNlX2Rlc2NyaXB0b3IpOwotfQotCi12b2lkCi1nZW43 X2VtaXRfbWVkaWFfb2JqZWN0cyhzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAotCQkJ dW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5LAotCQkJdW5zaWduZWQgaW50IHdpZHRoLCB1 bnNpZ25lZCBpbnQgaGVpZ2h0KQotewotCWludCBpLCBqOwotCi0JZm9yIChpID0gMDsgaSA8IHdp ZHRoIC8gMTY7IGkrKykgewotCQlmb3IgKGogPSAwOyBqIDwgaGVpZ2h0IC8gMTY7IGorKykgewot CQkJZ2VuX2VtaXRfbWVkaWFfb2JqZWN0KGJhdGNoLCB4ICsgaSAqIDE2LCB5ICsgaiAqIDE2KTsK LQkJfQotCX0KLX0KLQotdm9pZAotZ2VuN19lbWl0X2dwZ3B1X3dhbGsoc3RydWN0IGludGVsX2Jh dGNoYnVmZmVyICpiYXRjaCwKLQkJICAgICB1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHks Ci0JCSAgICAgdW5zaWduZWQgaW50IHdpZHRoLCB1bnNpZ25lZCBpbnQgaGVpZ2h0KQotewotCXVp bnQzMl90IHhfZGltLCB5X2RpbSwgdG1wLCByaWdodF9tYXNrOwotCi0JLyoKLQkgKiBTaW1wbHkg ZG8gU0lNRDE2IGJhc2VkIGRpc3BhdGNoLCBzbyBldmVyeSB0aHJlYWQgdXNlcwotCSAqIFNJTUQx NiBjaGFubmVscy4KLQkgKgotCSAqIERlZmluZSBvdXIgb3duIHRocmVhZCBncm91cCBzaXplLCBl LmcgMTZ4MSBmb3IgZXZlcnkgZ3JvdXAsIHRoZW4KLQkgKiB3aWxsIGhhdmUgMSB0aHJlYWQgZWFj aCBncm91cCBpbiBTSU1EMTYgZGlzcGF0Y2guIFNvIHRocmVhZAotCSAqIHdpZHRoL2hlaWdodC9k ZXB0aCBhcmUgYWxsIDEuCi0JICoKLQkgKiBUaGVuIHRocmVhZCBncm91cCBYID0gd2lkdGggLyAx NiAoYWxpZ25lZCB0byAxNikKLQkgKiB0aHJlYWQgZ3JvdXAgWSA9IGhlaWdodDsKLQkgKi8KLQl4 X2RpbSA9ICh3aWR0aCArIDE1KSAvIDE2OwotCXlfZGltID0gaGVpZ2h0OwotCi0JdG1wID0gd2lk dGggJiAxNTsKLQlpZiAodG1wID09IDApCi0JCXJpZ2h0X21hc2sgPSAoMSA8PCAxNikgLSAxOwot CWVsc2UKLQkJcmlnaHRfbWFzayA9ICgxIDw8IHRtcCkgLSAxOwotCi0JT1VUX0JBVENIKEdFTjdf R1BHUFVfV0FMS0VSIHwgOSk7Ci0KLQkvKiBpbnRlcmZhY2UgZGVzY3JpcHRvciBvZmZzZXQgKi8K LQlPVVRfQkFUQ0goMCk7Ci0KLQkvKiBTSU1EIHNpemUsIHRocmVhZCB3L2gvZCAqLwotCU9VVF9C QVRDSCgxIDw8IDMwIHwgLyogU0lNRDE2ICovCi0JCSAgMCA8PCAxNiB8IC8qIGRlcHRoOjEgKi8K LQkJICAwIDw8IDggfCAvKiBoZWlnaHQ6MSAqLwotCQkgIDApOyAvKiB3aWR0aDoxICovCi0KLQkv KiB0aHJlYWQgZ3JvdXAgWCAqLwotCU9VVF9CQVRDSCgwKTsKLQlPVVRfQkFUQ0goeF9kaW0pOwot Ci0JLyogdGhyZWFkIGdyb3VwIFkgKi8KLQlPVVRfQkFUQ0goMCk7Ci0JT1VUX0JBVENIKHlfZGlt KTsKLQotCS8qIHRocmVhZCBncm91cCBaICovCi0JT1VUX0JBVENIKDApOwotCU9VVF9CQVRDSCgx KTsKLQotCS8qIHJpZ2h0IG1hc2sgKi8KLQlPVVRfQkFUQ0gocmlnaHRfbWFzayk7Ci0KLQkvKiBi b3R0b20gbWFzaywgaGVpZ2h0IDEsIGFsd2F5cyAweGZmZmZmZmZmICovCi0JT1VUX0JBVENIKDB4 ZmZmZmZmZmYpOwotfQotCi11aW50MzJfdAotZ2VuOF9zcGluX2N1cmJlX2J1ZmZlcl9kYXRhKHN0 cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCi0JCQkgICAgdWludDMyX3QgaXRlcnMpCi17 Ci0JdWludDMyX3QgKmN1cmJlX2J1ZmZlcjsKLQl1aW50MzJfdCBvZmZzZXQ7Ci0KLQljdXJiZV9i dWZmZXIgPSBpbnRlbF9iYXRjaGJ1ZmZlcl9zdWJkYXRhX2FsbG9jKGJhdGNoLCA2NCwgNjQpOwot CW9mZnNldCA9IGludGVsX2JhdGNoYnVmZmVyX3N1YmRhdGFfb2Zmc2V0KGJhdGNoLCBjdXJiZV9i dWZmZXIpOwotCSpjdXJiZV9idWZmZXIgPSBpdGVyczsKLQotCXJldHVybiBvZmZzZXQ7Ci19Ci0K LXVpbnQzMl90Ci1nZW44X2ZpbGxfc3VyZmFjZV9zdGF0ZShzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZm ZXIgKmJhdGNoLAotCQkJY29uc3Qgc3RydWN0IGlndF9idWYgKmJ1ZiwKLQkJCXVpbnQzMl90IGZv cm1hdCwKLQkJCWludCBpc19kc3QpCi17Ci0Jc3RydWN0IGdlbjhfc3VyZmFjZV9zdGF0ZSAqc3M7 Ci0JdWludDMyX3Qgd3JpdGVfZG9tYWluLCByZWFkX2RvbWFpbiwgb2Zmc2V0OwotCWludCByZXQ7 Ci0KLQlpZiAoaXNfZHN0KSB7Ci0JCXdyaXRlX2RvbWFpbiA9IHJlYWRfZG9tYWluID0gSTkxNV9H RU1fRE9NQUlOX1JFTkRFUjsKLQl9IGVsc2UgewotCQl3cml0ZV9kb21haW4gPSAwOwotCQlyZWFk X2RvbWFpbiA9IEk5MTVfR0VNX0RPTUFJTl9TQU1QTEVSOwotCX0KLQotCXNzID0gaW50ZWxfYmF0 Y2hidWZmZXJfc3ViZGF0YV9hbGxvYyhiYXRjaCwgc2l6ZW9mKCpzcyksIDY0KTsKLQlvZmZzZXQg PSBpbnRlbF9iYXRjaGJ1ZmZlcl9zdWJkYXRhX29mZnNldChiYXRjaCwgc3MpOwotCi0Jc3MtPnNz MC5zdXJmYWNlX3R5cGUgPSBTVVJGQUNFXzJEOwotCXNzLT5zczAuc3VyZmFjZV9mb3JtYXQgPSBm b3JtYXQ7Ci0Jc3MtPnNzMC5yZW5kZXJfY2FjaGVfcmVhZF93cml0ZSA9IDE7Ci0Jc3MtPnNzMC52 ZXJ0aWNhbF9hbGlnbm1lbnQgPSAxOyAvKiBhbGlnbiA0ICovCi0Jc3MtPnNzMC5ob3Jpem9udGFs X2FsaWdubWVudCA9IDE7IC8qIGFsaWduIDQgKi8KLQotCWlmIChidWYtPnRpbGluZyA9PSBJOTE1 X1RJTElOR19YKQotCQlzcy0+c3MwLnRpbGVkX21vZGUgPSAyOwotCWVsc2UgaWYgKGJ1Zi0+dGls aW5nID09IEk5MTVfVElMSU5HX1kpCi0JCXNzLT5zczAudGlsZWRfbW9kZSA9IDM7Ci0KLQlzcy0+ c3M4LmJhc2VfYWRkciA9IGJ1Zi0+Ym8tPm9mZnNldDsKLQotCXJldCA9IGRybV9pbnRlbF9ib19l bWl0X3JlbG9jKGJhdGNoLT5ibywKLQkJCQlpbnRlbF9iYXRjaGJ1ZmZlcl9zdWJkYXRhX29mZnNl dChiYXRjaCwgc3MpICsgOCAqIDQsCi0JCQkJYnVmLT5ibywgMCwgcmVhZF9kb21haW4sIHdyaXRl X2RvbWFpbik7Ci0JaWd0X2Fzc2VydChyZXQgPT0gMCk7Ci0KLQlzcy0+c3MyLmhlaWdodCA9IGln dF9idWZfaGVpZ2h0KGJ1ZikgLSAxOwotCXNzLT5zczIud2lkdGggID0gaWd0X2J1Zl93aWR0aChi dWYpIC0gMTsKLQlzcy0+c3MzLnBpdGNoICA9IGJ1Zi0+c3VyZmFjZVswXS5zdHJpZGUgLSAxOwot Ci0Jc3MtPnNzNy5zaGFkZXJfY2hhbmVsX3NlbGVjdF9yID0gNDsKLQlzcy0+c3M3LnNoYWRlcl9j aGFuZWxfc2VsZWN0X2cgPSA1OwotCXNzLT5zczcuc2hhZGVyX2NoYW5lbF9zZWxlY3RfYiA9IDY7 Ci0Jc3MtPnNzNy5zaGFkZXJfY2hhbmVsX3NlbGVjdF9hID0gNzsKLQotCXJldHVybiBvZmZzZXQ7 Ci19Ci0KLXVpbnQzMl90Ci1nZW4xMV9maWxsX3N1cmZhY2Vfc3RhdGUoc3RydWN0IGludGVsX2Ji ICppYmIsCi0JCQkgY29uc3Qgc3RydWN0IGludGVsX2J1ZiAqYnVmLAotCQkJIHVpbnQzMl90IHN1 cmZhY2VfdHlwZSwKLQkJCSB1aW50MzJfdCBmb3JtYXQsCi0JCQkgdWludDMyX3QgdmVydGljYWxf YWxpZ25tZW50LAotCQkJIHVpbnQzMl90IGhvcml6b250YWxfYWxpZ25tZW50LAotCQkJIGludCBp c19kc3QpCi17Ci0Jc3RydWN0IGdlbjhfc3VyZmFjZV9zdGF0ZSAqc3M7Ci0JdWludDMyX3Qgd3Jp dGVfZG9tYWluLCByZWFkX2RvbWFpbiwgb2Zmc2V0OwotCXVpbnQ2NF90IGFkZHJlc3M7Ci0KLQlp ZiAoaXNfZHN0KSB7Ci0JCXdyaXRlX2RvbWFpbiA9IHJlYWRfZG9tYWluID0gSTkxNV9HRU1fRE9N QUlOX1JFTkRFUjsKLQl9IGVsc2UgewotCQl3cml0ZV9kb21haW4gPSAwOwotCQlyZWFkX2RvbWFp biA9IEk5MTVfR0VNX0RPTUFJTl9TQU1QTEVSOwotCX0KLQotCWludGVsX2JiX3B0cl9hbGlnbihp YmIsIDY0KTsKLQlvZmZzZXQgPSBpbnRlbF9iYl9vZmZzZXQoaWJiKTsKLQlzcyA9IGludGVsX2Ji X3B0cihpYmIpOwotCWludGVsX2JiX3B0cl9hZGQoaWJiLCA2NCk7Ci0KLQlzcy0+c3MwLnN1cmZh Y2VfdHlwZSA9IHN1cmZhY2VfdHlwZTsKLQlzcy0+c3MwLnN1cmZhY2VfZm9ybWF0ID0gZm9ybWF0 OwotCXNzLT5zczAucmVuZGVyX2NhY2hlX3JlYWRfd3JpdGUgPSAxOwotCXNzLT5zczAudmVydGlj YWxfYWxpZ25tZW50ID0gdmVydGljYWxfYWxpZ25tZW50OyAvKiBhbGlnbiA0ICovCi0Jc3MtPnNz MC5ob3Jpem9udGFsX2FsaWdubWVudCA9IGhvcml6b250YWxfYWxpZ25tZW50OyAvKiBhbGlnbiA0 ICovCi0KLQlpZiAoYnVmLT50aWxpbmcgPT0gSTkxNV9USUxJTkdfWCkKLQkJc3MtPnNzMC50aWxl ZF9tb2RlID0gMjsKLQllbHNlIGlmIChidWYtPnRpbGluZyA9PSBJOTE1X1RJTElOR19ZKQotCQlz cy0+c3MwLnRpbGVkX21vZGUgPSAzOwotCWVsc2UKLQkJc3MtPnNzMC50aWxlZF9tb2RlID0gMDsK LQotCWFkZHJlc3MgPSBpbnRlbF9iYl9vZmZzZXRfcmVsb2MoaWJiLCBidWYtPmhhbmRsZSwKLQkJ CQkJcmVhZF9kb21haW4sIHdyaXRlX2RvbWFpbiwKLQkJCQkJb2Zmc2V0ICsgNCAqIDgsIDB4MCk7 Ci0KLQlzcy0+c3M4LmJhc2VfYWRkciA9ICh1aW50MzJfdCkgYWRkcmVzczsKLQlzcy0+c3M5LmJh c2VfYWRkcl9oaSA9IGFkZHJlc3MgPj4gMzI7Ci0KLQlpZiAoaXNfZHN0KSB7Ci0JCXNzLT5zczEu bWVtb3J5X29iamVjdF9jb250cm9sID0gMjsKLQkJc3MtPnNzMi5oZWlnaHQgPSAxOwotCQlzcy0+ c3MyLndpZHRoICA9IDk1OwotCQlzcy0+c3MzLnBpdGNoICA9IDA7Ci0JCXNzLT5zczcuc2hhZGVy X2NoYW5lbF9zZWxlY3RfciA9IDQ7Ci0JCXNzLT5zczcuc2hhZGVyX2NoYW5lbF9zZWxlY3RfZyA9 IDU7Ci0JCXNzLT5zczcuc2hhZGVyX2NoYW5lbF9zZWxlY3RfYiA9IDY7Ci0JCXNzLT5zczcuc2hh ZGVyX2NoYW5lbF9zZWxlY3RfYSA9IDc7Ci0JfQotCWVsc2UgewotCQlzcy0+c3MxLnFwaXRjaCA9 IDQwNDA7Ci0JCXNzLT5zczEuYmFzZV9taXBfbGV2ZWwgPSAzMTsKLQkJc3MtPnNzMi5oZWlnaHQg PSA5MjE2OwotCQlzcy0+c3MyLndpZHRoICA9IDEwMTk7Ci0JCXNzLT5zczMucGl0Y2ggID0gNjQ7 Ci0JCXNzLT5zczUubWlwX2NvdW50ID0gMjsKLQl9Ci0KLQlyZXR1cm4gb2Zmc2V0OwotfQotCi11 aW50MzJfdAotZ2VuOF9maWxsX2ludGVyZmFjZV9kZXNjcmlwdG9yKHN0cnVjdCBpbnRlbF9iYXRj aGJ1ZmZlciAqYmF0Y2gsCi0JCQkgICAgICAgY29uc3Qgc3RydWN0IGlndF9idWYgKmRzdCwKLQkJ CSAgICAgICBjb25zdCB1aW50MzJfdCBrZXJuZWxbXVs0XSwKLQkJCSAgICAgICBzaXplX3Qgc2l6 ZSkKLXsKLQlzdHJ1Y3QgZ2VuOF9pbnRlcmZhY2VfZGVzY3JpcHRvcl9kYXRhICppZGQ7Ci0JdWlu dDMyX3Qgb2Zmc2V0OwotCXVpbnQzMl90IGJpbmRpbmdfdGFibGVfb2Zmc2V0LCBrZXJuZWxfb2Zm c2V0OwotCi0JYmluZGluZ190YWJsZV9vZmZzZXQgPSBnZW43X2ZpbGxfYmluZGluZ190YWJsZShi YXRjaCwgZHN0KTsKLQlrZXJuZWxfb2Zmc2V0ID0gZ2VuN19maWxsX2tlcm5lbChiYXRjaCwga2Vy bmVsLCBzaXplKTsKLQotCWlkZCA9IGludGVsX2JhdGNoYnVmZmVyX3N1YmRhdGFfYWxsb2MoYmF0 Y2gsIHNpemVvZigqaWRkKSwgNjQpOwotCW9mZnNldCA9IGludGVsX2JhdGNoYnVmZmVyX3N1YmRh dGFfb2Zmc2V0KGJhdGNoLCBpZGQpOwotCi0JaWRkLT5kZXNjMC5rZXJuZWxfc3RhcnRfcG9pbnRl ciA9IChrZXJuZWxfb2Zmc2V0ID4+IDYpOwotCi0JaWRkLT5kZXNjMi5zaW5nbGVfcHJvZ3JhbV9m bG93ID0gMTsKLQlpZGQtPmRlc2MyLmZsb2F0aW5nX3BvaW50X21vZGUgPSBHRU44X0ZMT0FUSU5H X1BPSU5UX0lFRUVfNzU0OwotCi0JaWRkLT5kZXNjMy5zYW1wbGVyX2NvdW50ID0gMDsgICAgICAv KiAwIHNhbXBsZXJzIHVzZWQgKi8KLQlpZGQtPmRlc2MzLnNhbXBsZXJfc3RhdGVfcG9pbnRlciA9 IDA7Ci0KLQlpZGQtPmRlc2M0LmJpbmRpbmdfdGFibGVfZW50cnlfY291bnQgPSAwOwotCWlkZC0+ ZGVzYzQuYmluZGluZ190YWJsZV9wb2ludGVyID0gKGJpbmRpbmdfdGFibGVfb2Zmc2V0ID4+IDUp OwotCi0JaWRkLT5kZXNjNS5jb25zdGFudF91cmJfZW50cnlfcmVhZF9vZmZzZXQgPSAwOwotCWlk ZC0+ZGVzYzUuY29uc3RhbnRfdXJiX2VudHJ5X3JlYWRfbGVuZ3RoID0gMTsgLyogZ3JmIDEgKi8K LQotCWlkZC0+ZGVzYzYubnVtX3RocmVhZHNfaW5fdGcgPSAxOwotCi0JcmV0dXJuIG9mZnNldDsK LX0KLQotc3RhdGljIHVpbnQzMl90Ci1nZW43X2ZpbGxfa2VybmVsX3YyKHN0cnVjdCBpbnRlbF9i YiAqaWJiLAotCQkgICAgY29uc3QgdWludDMyX3Qga2VybmVsW11bNF0sCi0JCSAgICBzaXplX3Qg c2l6ZSk7Ci0KLXVpbnQzMl90Ci1nZW4xMV9maWxsX2ludGVyZmFjZV9kZXNjcmlwdG9yKHN0cnVj dCBpbnRlbF9iYiAqaWJiLAotCQkJCXN0cnVjdCBpbnRlbF9idWYgKnNyYywgc3RydWN0IGludGVs X2J1ZiAqZHN0LAotCQkJCWNvbnN0IHVpbnQzMl90IGtlcm5lbFtdWzRdLAotCQkJCXNpemVfdCBz aXplKQotewotCXN0cnVjdCBnZW44X2ludGVyZmFjZV9kZXNjcmlwdG9yX2RhdGEgKmlkZDsKLQl1 aW50MzJfdCBvZmZzZXQ7Ci0JdWludDMyX3QgYmluZGluZ190YWJsZV9vZmZzZXQsIGtlcm5lbF9v ZmZzZXQ7Ci0KLQliaW5kaW5nX3RhYmxlX29mZnNldCA9IGdlbjExX2ZpbGxfYmluZGluZ190YWJs ZShpYmIsIHNyYywgZHN0KTsKLQlrZXJuZWxfb2Zmc2V0ID0gZ2VuN19maWxsX2tlcm5lbF92Mihp YmIsIGtlcm5lbCwgc2l6ZSk7Ci0KLQlpbnRlbF9iYl9wdHJfYWxpZ24oaWJiLCA2NCk7Ci0JaWRk ID0gaW50ZWxfYmJfcHRyKGliYik7Ci0Jb2Zmc2V0ID0gaW50ZWxfYmJfb2Zmc2V0KGliYik7Ci0K LQlpZGQtPmRlc2MwLmtlcm5lbF9zdGFydF9wb2ludGVyID0gKGtlcm5lbF9vZmZzZXQgPj4gNik7 Ci0KLQlpZGQtPmRlc2MyLnNpbmdsZV9wcm9ncmFtX2Zsb3cgPSAxOwotCWlkZC0+ZGVzYzIuZmxv YXRpbmdfcG9pbnRfbW9kZSA9IEdFTjhfRkxPQVRJTkdfUE9JTlRfSUVFRV83NTQ7Ci0KLQlpZGQt PmRlc2MzLnNhbXBsZXJfY291bnQgPSAwOyAgICAgIC8qIDAgc2FtcGxlcnMgdXNlZCAqLwotCWlk ZC0+ZGVzYzMuc2FtcGxlcl9zdGF0ZV9wb2ludGVyID0gMDsKLQotCWlkZC0+ZGVzYzQuYmluZGlu Z190YWJsZV9lbnRyeV9jb3VudCA9IDA7Ci0JaWRkLT5kZXNjNC5iaW5kaW5nX3RhYmxlX3BvaW50 ZXIgPSAoYmluZGluZ190YWJsZV9vZmZzZXQgPj4gNSk7Ci0KLQlpZGQtPmRlc2M1LmNvbnN0YW50 X3VyYl9lbnRyeV9yZWFkX29mZnNldCA9IDA7Ci0JaWRkLT5kZXNjNS5jb25zdGFudF91cmJfZW50 cnlfcmVhZF9sZW5ndGggPSAxOyAvKiBncmYgMSAqLwotCi0JaWRkLT5kZXNjNi5udW1fdGhyZWFk c19pbl90ZyA9IDE7Ci0KLQlyZXR1cm4gb2Zmc2V0OwotfQotCi12b2lkCi1nZW44X2VtaXRfc3Rh dGVfYmFzZV9hZGRyZXNzKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gpCi17Ci0JT1VU X0JBVENIKEdFTjhfU1RBVEVfQkFTRV9BRERSRVNTIHwgKDE2IC0gMikpOwotCi0JLyogZ2VuZXJh bCAqLwotCU9VVF9CQVRDSCgwIHwgQkFTRV9BRERSRVNTX01PRElGWSk7Ci0JT1VUX0JBVENIKDAp OwotCi0JLyogc3RhdGVsZXNzIGRhdGEgcG9ydCAqLwotCU9VVF9CQVRDSCgwIHwgQkFTRV9BRERS RVNTX01PRElGWSk7Ci0KLQkvKiBzdXJmYWNlICovCi0JT1VUX1JFTE9DKGJhdGNoLT5ibywgSTkx NV9HRU1fRE9NQUlOX1NBTVBMRVIsIDAsIEJBU0VfQUREUkVTU19NT0RJRlkpOwotCi0JLyogZHlu YW1pYyAqLwotCU9VVF9SRUxPQyhiYXRjaC0+Ym8sCi0JCSAgSTkxNV9HRU1fRE9NQUlOX1JFTkRF UiB8IEk5MTVfR0VNX0RPTUFJTl9JTlNUUlVDVElPTiwKLQkJICAwLCBCQVNFX0FERFJFU1NfTU9E SUZZKTsKLQotCS8qIGluZGlyZWN0ICovCi0JT1VUX0JBVENIKDApOwotCU9VVF9CQVRDSCgwKTsK LQotCS8qIGluc3RydWN0aW9uICovCi0JT1VUX1JFTE9DKGJhdGNoLT5ibywgSTkxNV9HRU1fRE9N QUlOX0lOU1RSVUNUSU9OLCAwLAotCQkgIEJBU0VfQUREUkVTU19NT0RJRlkpOwotCi0JLyogZ2Vu ZXJhbCBzdGF0ZSBidWZmZXIgc2l6ZSAqLwotCU9VVF9CQVRDSCgweGZmZmZmMDAwIHwgMSk7Ci0J LyogZHluYW1pYyBzdGF0ZSBidWZmZXIgc2l6ZSAqLwotCU9VVF9CQVRDSCgxIDw8IDEyIHwgMSk7 Ci0JLyogaW5kaXJlY3Qgb2JqZWN0IGJ1ZmZlciBzaXplICovCi0JT1VUX0JBVENIKDB4ZmZmZmYw MDAgfCAxKTsKLQkvKiBpbnN0cnVjdGlvbiBidWZmZXIgc2l6ZSwgbXVzdCBzZXQgbW9kaWZ5IGVu YWJsZSBiaXQsIG90aGVyd2lzZSBpdCBtYXkKLQkgKiByZXN1bHQgaW4gR1BVIGhhbmcKLQkgKi8K LQlPVVRfQkFUQ0goMSA8PCAxMiB8IDEpOwotfQotCi12b2lkCi1nZW44X2VtaXRfbWVkaWFfc3Rh dGVfZmx1c2goc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCkKLXsKLQlPVVRfQkFUQ0go R0VOOF9NRURJQV9TVEFURV9GTFVTSCB8ICgyIC0gMikpOwotCU9VVF9CQVRDSCgwKTsKLX0KLQot dm9pZAotZ2VuOF9lbWl0X3ZmZV9zdGF0ZShzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNo LCB1aW50MzJfdCB0aHJlYWRzLAotCQkgICAgdWludDMyX3QgdXJiX2VudHJpZXMsIHVpbnQzMl90 IHVyYl9zaXplLAotCQkgICAgdWludDMyX3QgY3VyYmVfc2l6ZSkKLXsKLQlPVVRfQkFUQ0goR0VO N19NRURJQV9WRkVfU1RBVEUgfCAoOSAtIDIpKTsKLQotCS8qIHNjcmF0Y2ggYnVmZmVyICovCi0J T1VUX0JBVENIKDApOwotCU9VVF9CQVRDSCgwKTsKLQotCS8qIG51bWJlciBvZiB0aHJlYWRzICYg dXJiIGVudHJpZXMgKi8KLQlPVVRfQkFUQ0godGhyZWFkcyA8PCAxNiB8Ci0JCXVyYl9lbnRyaWVz IDw8IDgpOwotCi0JT1VUX0JBVENIKDApOwotCi0JLyogdXJiIGVudHJ5IHNpemUgJiBjdXJiZSBz aXplICovCi0JT1VUX0JBVENIKHVyYl9zaXplIDw8IDE2IHwKLQkJY3VyYmVfc2l6ZSk7Ci0KLQkv KiBzY29yZWJvYXJkICovCi0JT1VUX0JBVENIKDApOwotCU9VVF9CQVRDSCgwKTsKLQlPVVRfQkFU Q0goMCk7Ci19Ci0KLXZvaWQKLWdlbjhfZW1pdF9ncGdwdV93YWxrKHN0cnVjdCBpbnRlbF9iYXRj aGJ1ZmZlciAqYmF0Y2gsCi0JCSAgICAgdW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5LAot CQkgICAgIHVuc2lnbmVkIGludCB3aWR0aCwgdW5zaWduZWQgaW50IGhlaWdodCkKLXsKLQl1aW50 MzJfdCB4X2RpbSwgeV9kaW0sIHRtcCwgcmlnaHRfbWFzazsKLQotCS8qCi0JICogU2ltcGx5IGRv IFNJTUQxNiBiYXNlZCBkaXNwYXRjaCwgc28gZXZlcnkgdGhyZWFkIHVzZXMKLQkgKiBTSU1EMTYg Y2hhbm5lbHMuCi0JICoKLQkgKiBEZWZpbmUgb3VyIG93biB0aHJlYWQgZ3JvdXAgc2l6ZSwgZS5n IDE2eDEgZm9yIGV2ZXJ5IGdyb3VwLCB0aGVuCi0JICogd2lsbCBoYXZlIDEgdGhyZWFkIGVhY2gg Z3JvdXAgaW4gU0lNRDE2IGRpc3BhdGNoLiBTbyB0aHJlYWQKLQkgKiB3aWR0aC9oZWlnaHQvZGVw dGggYXJlIGFsbCAxLgotCSAqCi0JICogVGhlbiB0aHJlYWQgZ3JvdXAgWCA9IHdpZHRoIC8gMTYg KGFsaWduZWQgdG8gMTYpCi0JICogdGhyZWFkIGdyb3VwIFkgPSBoZWlnaHQ7Ci0JICovCi0JeF9k aW0gPSAod2lkdGggKyAxNSkgLyAxNjsKLQl5X2RpbSA9IGhlaWdodDsKLQotCXRtcCA9IHdpZHRo ICYgMTU7Ci0JaWYgKHRtcCA9PSAwKQotCQlyaWdodF9tYXNrID0gKDEgPDwgMTYpIC0gMTsKLQll bHNlCi0JCXJpZ2h0X21hc2sgPSAoMSA8PCB0bXApIC0gMTsKLQotCU9VVF9CQVRDSChHRU43X0dQ R1BVX1dBTEtFUiB8IDEzKTsKLQotCU9VVF9CQVRDSCgwKTsgLyoga2VybmVsIG9mZnNldCAqLwot CU9VVF9CQVRDSCgwKTsgLyogaW5kaXJlY3QgZGF0YSBsZW5ndGggKi8KLQlPVVRfQkFUQ0goMCk7 IC8qIGluZGlyZWN0IGRhdGEgb2Zmc2V0ICovCi0KLQkvKiBTSU1EIHNpemUsIHRocmVhZCB3L2gv ZCAqLwotCU9VVF9CQVRDSCgxIDw8IDMwIHwgLyogU0lNRDE2ICovCi0JCSAgMCA8PCAxNiB8IC8q IGRlcHRoOjEgKi8KLQkJICAwIDw8IDggfCAvKiBoZWlnaHQ6MSAqLwotCQkgIDApOyAvKiB3aWR0 aDoxICovCi0KLQkvKiB0aHJlYWQgZ3JvdXAgWCAqLwotCU9VVF9CQVRDSCgwKTsKLQlPVVRfQkFU Q0goMCk7Ci0JT1VUX0JBVENIKHhfZGltKTsKLQotCS8qIHRocmVhZCBncm91cCBZICovCi0JT1VU X0JBVENIKDApOwotCU9VVF9CQVRDSCgwKTsKLQlPVVRfQkFUQ0goeV9kaW0pOwotCi0JLyogdGhy ZWFkIGdyb3VwIFogKi8KLQlPVVRfQkFUQ0goMCk7Ci0JT1VUX0JBVENIKDEpOwotCi0JLyogcmln aHQgbWFzayAqLwotCU9VVF9CQVRDSChyaWdodF9tYXNrKTsKLQotCS8qIGJvdHRvbSBtYXNrLCBo ZWlnaHQgMSwgYWx3YXlzIDB4ZmZmZmZmZmYgKi8KLQlPVVRfQkFUQ0goMHhmZmZmZmZmZik7Ci19 Ci0KLXZvaWQKLWdlbl9lbWl0X21lZGlhX29iamVjdChzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIg KmJhdGNoLAotCQkgICAgICAgdW5zaWduZWQgaW50IHhvZmZzZXQsIHVuc2lnbmVkIGludCB5b2Zm c2V0KQotewotCU9VVF9CQVRDSChHRU43X01FRElBX09CSkVDVCB8ICg4IC0gMikpOwotCi0JLyog aW50ZXJmYWNlIGRlc2NyaXB0b3Igb2Zmc2V0ICovCi0JT1VUX0JBVENIKDApOwotCi0JLyogd2l0 aG91dCBpbmRpcmVjdCBkYXRhICovCi0JT1VUX0JBVENIKDApOwotCU9VVF9CQVRDSCgwKTsKLQot CS8qIHNjb3JlYm9hcmQgKi8KLQlPVVRfQkFUQ0goMCk7Ci0JT1VUX0JBVENIKDApOwotCi0JLyog aW5saW5lIGRhdGEgKHhvZmZzZXQsIHlvZmZzZXQpICovCi0JT1VUX0JBVENIKHhvZmZzZXQpOwot CU9VVF9CQVRDSCh5b2Zmc2V0KTsKLQlpZiAoQVRfTEVBU1RfR0VOKGJhdGNoLT5kZXZpZCwgOCkg JiYgIUlTX0NIRVJSWVZJRVcoYmF0Y2gtPmRldmlkKSkKLQkJZ2VuOF9lbWl0X21lZGlhX3N0YXRl X2ZsdXNoKGJhdGNoKTsKLX0KLQotdm9pZAotZ2VuOV9lbWl0X3N0YXRlX2Jhc2VfYWRkcmVzcyhz dHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoKQordWludDMyX3QKK2dlbjdfZmlsbF9jdXJi ZV9idWZmZXJfZGF0YShzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDhfdCBjb2xvcikKIHsKLQlP VVRfQkFUQ0goR0VOOF9TVEFURV9CQVNFX0FERFJFU1MgfCAoMTkgLSAyKSk7Ci0KLQkvKiBnZW5l cmFsICovCi0JT1VUX0JBVENIKDAgfCBCQVNFX0FERFJFU1NfTU9ESUZZKTsKLQlPVVRfQkFUQ0go MCk7Ci0KLQkvKiBzdGF0ZWxlc3MgZGF0YSBwb3J0ICovCi0JT1VUX0JBVENIKDAgfCBCQVNFX0FE RFJFU1NfTU9ESUZZKTsKLQotCS8qIHN1cmZhY2UgKi8KLQlPVVRfUkVMT0MoYmF0Y2gtPmJvLCBJ OTE1X0dFTV9ET01BSU5fU0FNUExFUiwgMCwgQkFTRV9BRERSRVNTX01PRElGWSk7Ci0KLQkvKiBk eW5hbWljICovCi0JT1VUX1JFTE9DKGJhdGNoLT5ibywKLQkJICBJOTE1X0dFTV9ET01BSU5fUkVO REVSIHwgSTkxNV9HRU1fRE9NQUlOX0lOU1RSVUNUSU9OLAotCQkgIDAsIEJBU0VfQUREUkVTU19N T0RJRlkpOwotCi0JLyogaW5kaXJlY3QgKi8KLQlPVVRfQkFUQ0goMCk7Ci0JT1VUX0JBVENIKDAp OworCXVpbnQzMl90ICpjdXJiZV9idWZmZXI7CisJdWludDMyX3Qgb2Zmc2V0OwogCi0JLyogaW5z dHJ1Y3Rpb24gKi8KLQlPVVRfUkVMT0MoYmF0Y2gtPmJvLCBJOTE1X0dFTV9ET01BSU5fSU5TVFJV Q1RJT04sIDAsCi0JCSAgQkFTRV9BRERSRVNTX01PRElGWSk7CisJaW50ZWxfYmJfcHRyX2FsaWdu KGliYiwgNjQpOworCWN1cmJlX2J1ZmZlciA9IGludGVsX2JiX3B0cihpYmIpOworCW9mZnNldCA9 IGludGVsX2JiX29mZnNldChpYmIpOwogCi0JLyogZ2VuZXJhbCBzdGF0ZSBidWZmZXIgc2l6ZSAq LwotCU9VVF9CQVRDSCgweGZmZmZmMDAwIHwgMSk7Ci0JLyogZHluYW1pYyBzdGF0ZSBidWZmZXIg c2l6ZSAqLwotCU9VVF9CQVRDSCgxIDw8IDEyIHwgMSk7Ci0JLyogaW5kaXJlY3Qgb2JqZWN0IGJ1 ZmZlciBzaXplICovCi0JT1VUX0JBVENIKDB4ZmZmZmYwMDAgfCAxKTsKLQkvKiBpbnRydWN0aW9u IGJ1ZmZlciBzaXplLCBtdXN0IHNldCBtb2RpZnkgZW5hYmxlIGJpdCwgb3RoZXJ3aXNlIGl0IG1h eQotCSAqIHJlc3VsdCBpbiBHUFUgaGFuZwotCSAqLwotCU9VVF9CQVRDSCgxIDw8IDEyIHwgMSk7 CisJKmN1cmJlX2J1ZmZlciA9IGNvbG9yOworCWludGVsX2JiX3B0cl9hZGQoaWJiLCAzMik7CiAK LQkvKiBCaW5kbGVzcyBzdXJmYWNlIHN0YXRlIGJhc2UgYWRkcmVzcyAqLwotCU9VVF9CQVRDSCgw IHwgQkFTRV9BRERSRVNTX01PRElGWSk7Ci0JT1VUX0JBVENIKDApOwotCU9VVF9CQVRDSCgweGZm ZmZmMDAwKTsKKwlyZXR1cm4gb2Zmc2V0OwogfQogCi0vKgotICogSGVyZSB3ZSBzdGFydCB2ZXJz aW9uIG9mIHRoZSBncGdwdSBmaWxsIHBpcGVsaW5lIGNyZWF0aW9uIHdoaWNoIGlzIGJhc2VkCi0g KiBvbiBpbnRlbF9iYi4KLSAqLwogdWludDMyX3QKLWdlbjdfZmlsbF9jdXJiZV9idWZmZXJfZGF0 YV92MihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDhfdCBjb2xvcikKK2dlbjExX2ZpbGxfY3Vy YmVfYnVmZmVyX2RhdGEoc3RydWN0IGludGVsX2JiICppYmIpCiB7CiAJdWludDMyX3QgKmN1cmJl X2J1ZmZlcjsKIAl1aW50MzJfdCBvZmZzZXQ7CkBAIC03OTksMTYgKzUwLDE3IEBAIGdlbjdfZmls bF9jdXJiZV9idWZmZXJfZGF0YV92MihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDhfdCBjb2xv cikKIAljdXJiZV9idWZmZXIgPSBpbnRlbF9iYl9wdHIoaWJiKTsKIAlvZmZzZXQgPSBpbnRlbF9i Yl9vZmZzZXQoaWJiKTsKIAotCSpjdXJiZV9idWZmZXIgPSBjb2xvcjsKLQlpbnRlbF9iYl9wdHJf YWRkKGliYiwgMzIpOworCSpjdXJiZV9idWZmZXIrKyA9IDA7CisJKmN1cmJlX2J1ZmZlciA9IDE7 CisJaW50ZWxfYmJfcHRyX2FkZChpYmIsIDY0KTsKIAogCXJldHVybiBvZmZzZXQ7CiB9CiAKIHN0 YXRpYyB1aW50MzJfdAotZ2VuN19maWxsX2tlcm5lbF92MihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwK LQkJICAgIGNvbnN0IHVpbnQzMl90IGtlcm5lbFtdWzRdLAotCQkgICAgc2l6ZV90IHNpemUpCitn ZW43X2ZpbGxfa2VybmVsKHN0cnVjdCBpbnRlbF9iYiAqaWJiLAorCQljb25zdCB1aW50MzJfdCBr ZXJuZWxbXVs0XSwKKwkJc2l6ZV90IHNpemUpCiB7CiAJdWludDMyX3QgKmtlcm5lbF9kc3Q7CiAJ dWludDMyX3Qgb2Zmc2V0OwpAQCAtODI1LDEwICs3NywxMCBAQCBnZW43X2ZpbGxfa2VybmVsX3Yy KHN0cnVjdCBpbnRlbF9iYiAqaWJiLAogfQogCiBzdGF0aWMgdWludDMyX3QKLWdlbjdfZmlsbF9z dXJmYWNlX3N0YXRlX3YyKHN0cnVjdCBpbnRlbF9iYiAqaWJiLAotCQkJICAgc3RydWN0IGludGVs X2J1ZiAqYnVmLAotCQkJICAgdWludDMyX3QgZm9ybWF0LAotCQkJICAgaW50IGlzX2RzdCkKK2dl bjdfZmlsbF9zdXJmYWNlX3N0YXRlKHN0cnVjdCBpbnRlbF9iYiAqaWJiLAorCQkJc3RydWN0IGlu dGVsX2J1ZiAqYnVmLAorCQkJdWludDMyX3QgZm9ybWF0LAorCQkJaW50IGlzX2RzdCkKIHsKIAlz dHJ1Y3QgZ2VuN19zdXJmYWNlX3N0YXRlICpzczsKIAl1aW50MzJfdCB3cml0ZV9kb21haW4sIHJl YWRfZG9tYWluLCBvZmZzZXQ7CkBAIC04NzUsMTAgKzEyNywxMCBAQCBnZW43X2ZpbGxfc3VyZmFj ZV9zdGF0ZV92MihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKIH0KIAogc3RhdGljIHVpbnQzMl90Ci1n ZW44X2ZpbGxfc3VyZmFjZV9zdGF0ZV92MihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKLQkJCSAgIHN0 cnVjdCBpbnRlbF9idWYgKmJ1ZiwKLQkJCSAgIHVpbnQzMl90IGZvcm1hdCwKLQkJCSAgIGludCBp c19kc3QpCitnZW44X2ZpbGxfc3VyZmFjZV9zdGF0ZShzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKKwkJ CXN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwKKwkJCXVpbnQzMl90IGZvcm1hdCwKKwkJCWludCBpc19k c3QpCiB7CiAJc3RydWN0IGdlbjhfc3VyZmFjZV9zdGF0ZSAqc3M7CiAJdWludDMyX3Qgd3JpdGVf ZG9tYWluLCByZWFkX2RvbWFpbiwgb2Zmc2V0OwpAQCAtOTI3LDggKzE3OSw3NSBAQCBnZW44X2Zp bGxfc3VyZmFjZV9zdGF0ZV92MihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKIH0KIAogc3RhdGljIHVp bnQzMl90Ci1nZW43X2ZpbGxfYmluZGluZ190YWJsZV92MihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwK LQkJCSAgIHN0cnVjdCBpbnRlbF9idWYgKmJ1ZikKK2dlbjExX2ZpbGxfc3VyZmFjZV9zdGF0ZShz dHJ1Y3QgaW50ZWxfYmIgKmliYiwKKwkJCSBjb25zdCBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsCisJ CQkgdWludDMyX3Qgc3VyZmFjZV90eXBlLAorCQkJIHVpbnQzMl90IGZvcm1hdCwKKwkJCSB1aW50 MzJfdCB2ZXJ0aWNhbF9hbGlnbm1lbnQsCisJCQkgdWludDMyX3QgaG9yaXpvbnRhbF9hbGlnbm1l bnQsCisJCQkgaW50IGlzX2RzdCkKK3sKKwlzdHJ1Y3QgZ2VuOF9zdXJmYWNlX3N0YXRlICpzczsK Kwl1aW50MzJfdCB3cml0ZV9kb21haW4sIHJlYWRfZG9tYWluLCBvZmZzZXQ7CisJdWludDY0X3Qg YWRkcmVzczsKKworCWlmIChpc19kc3QpIHsKKwkJd3JpdGVfZG9tYWluID0gcmVhZF9kb21haW4g PSBJOTE1X0dFTV9ET01BSU5fUkVOREVSOworCX0gZWxzZSB7CisJCXdyaXRlX2RvbWFpbiA9IDA7 CisJCXJlYWRfZG9tYWluID0gSTkxNV9HRU1fRE9NQUlOX1NBTVBMRVI7CisJfQorCisJaW50ZWxf YmJfcHRyX2FsaWduKGliYiwgNjQpOworCW9mZnNldCA9IGludGVsX2JiX29mZnNldChpYmIpOwor CXNzID0gaW50ZWxfYmJfcHRyKGliYik7CisJaW50ZWxfYmJfcHRyX2FkZChpYmIsIDY0KTsKKwor CXNzLT5zczAuc3VyZmFjZV90eXBlID0gc3VyZmFjZV90eXBlOworCXNzLT5zczAuc3VyZmFjZV9m b3JtYXQgPSBmb3JtYXQ7CisJc3MtPnNzMC5yZW5kZXJfY2FjaGVfcmVhZF93cml0ZSA9IDE7CisJ c3MtPnNzMC52ZXJ0aWNhbF9hbGlnbm1lbnQgPSB2ZXJ0aWNhbF9hbGlnbm1lbnQ7IC8qIGFsaWdu IDQgKi8KKwlzcy0+c3MwLmhvcml6b250YWxfYWxpZ25tZW50ID0gaG9yaXpvbnRhbF9hbGlnbm1l bnQ7IC8qIGFsaWduIDQgKi8KKworCWlmIChidWYtPnRpbGluZyA9PSBJOTE1X1RJTElOR19YKQor CQlzcy0+c3MwLnRpbGVkX21vZGUgPSAyOworCWVsc2UgaWYgKGJ1Zi0+dGlsaW5nID09IEk5MTVf VElMSU5HX1kpCisJCXNzLT5zczAudGlsZWRfbW9kZSA9IDM7CisJZWxzZQorCQlzcy0+c3MwLnRp bGVkX21vZGUgPSAwOworCisJYWRkcmVzcyA9IGludGVsX2JiX29mZnNldF9yZWxvYyhpYmIsIGJ1 Zi0+aGFuZGxlLAorCQkJCQlyZWFkX2RvbWFpbiwgd3JpdGVfZG9tYWluLAorCQkJCQlvZmZzZXQg KyA0ICogOCwgMHgwKTsKKworCXNzLT5zczguYmFzZV9hZGRyID0gKHVpbnQzMl90KSBhZGRyZXNz OworCXNzLT5zczkuYmFzZV9hZGRyX2hpID0gYWRkcmVzcyA+PiAzMjsKKworCWlmIChpc19kc3Qp IHsKKwkJc3MtPnNzMS5tZW1vcnlfb2JqZWN0X2NvbnRyb2wgPSAyOworCQlzcy0+c3MyLmhlaWdo dCA9IDE7CisJCXNzLT5zczIud2lkdGggID0gOTU7CisJCXNzLT5zczMucGl0Y2ggID0gMDsKKwkJ c3MtPnNzNy5zaGFkZXJfY2hhbmVsX3NlbGVjdF9yID0gNDsKKwkJc3MtPnNzNy5zaGFkZXJfY2hh bmVsX3NlbGVjdF9nID0gNTsKKwkJc3MtPnNzNy5zaGFkZXJfY2hhbmVsX3NlbGVjdF9iID0gNjsK KwkJc3MtPnNzNy5zaGFkZXJfY2hhbmVsX3NlbGVjdF9hID0gNzsKKwl9CisJZWxzZSB7CisJCXNz LT5zczEucXBpdGNoID0gNDA0MDsKKwkJc3MtPnNzMS5iYXNlX21pcF9sZXZlbCA9IDMxOworCQlz cy0+c3MyLmhlaWdodCA9IDkyMTY7CisJCXNzLT5zczIud2lkdGggID0gMTAxOTsKKwkJc3MtPnNz My5waXRjaCAgPSA2NDsKKwkJc3MtPnNzNS5taXBfY291bnQgPSAyOworCX0KKworCXJldHVybiBv ZmZzZXQ7Cit9CisKK3N0YXRpYyB1aW50MzJfdAorZ2VuN19maWxsX2JpbmRpbmdfdGFibGUoc3Ry dWN0IGludGVsX2JiICppYmIsCisJCQlzdHJ1Y3QgaW50ZWxfYnVmICpidWYpCiB7CiAJdWludDMy X3QgYmluZGluZ190YWJsZV9vZmZzZXQ7CiAJdWludDMyX3QgKmJpbmRpbmdfdGFibGU7CkBAIC05 NDAsMjggKzI1OSw1MyBAQCBnZW43X2ZpbGxfYmluZGluZ190YWJsZV92MihzdHJ1Y3QgaW50ZWxf YmIgKmliYiwKIAlpbnRlbF9iYl9wdHJfYWRkKGliYiwgNjQpOwogCiAJaWYgKElTX0dFTjcoZGV2 aWQpKQotCQliaW5kaW5nX3RhYmxlWzBdID0gZ2VuN19maWxsX3N1cmZhY2Vfc3RhdGVfdjIoaWJi LCBidWYsCi0JCQkJCQkJICAgICAgU1VSRkFDRUZPUk1BVF9SOF9VTk9STSwgMSk7CisJCWJpbmRp bmdfdGFibGVbMF0gPSBnZW43X2ZpbGxfc3VyZmFjZV9zdGF0ZShpYmIsIGJ1ZiwKKwkJCQkJCQkg ICBTVVJGQUNFRk9STUFUX1I4X1VOT1JNLCAxKTsKIAogCWVsc2UKLQkJYmluZGluZ190YWJsZVsw XSA9IGdlbjhfZmlsbF9zdXJmYWNlX3N0YXRlX3YyKGliYiwgYnVmLAotCQkJCQkJCSAgICAgIFNV UkZBQ0VGT1JNQVRfUjhfVU5PUk0sIDEpOworCQliaW5kaW5nX3RhYmxlWzBdID0gZ2VuOF9maWxs X3N1cmZhY2Vfc3RhdGUoaWJiLCBidWYsCisJCQkJCQkJICAgU1VSRkFDRUZPUk1BVF9SOF9VTk9S TSwgMSk7CisKKwlyZXR1cm4gYmluZGluZ190YWJsZV9vZmZzZXQ7Cit9CisKK3N0YXRpYyB1aW50 MzJfdAorZ2VuMTFfZmlsbF9iaW5kaW5nX3RhYmxlKHN0cnVjdCBpbnRlbF9iYiAqaWJiLAorCQkJ IGNvbnN0IHN0cnVjdCBpbnRlbF9idWYgKnNyYywKKwkJCSBjb25zdCBzdHJ1Y3QgaW50ZWxfYnVm ICpkc3QpCit7CisJdWludDMyX3QgYmluZGluZ190YWJsZV9vZmZzZXQ7CisJdWludDMyX3QgKmJp bmRpbmdfdGFibGU7CisKKwlpbnRlbF9iYl9wdHJfYWxpZ24oaWJiLCA2NCk7CisJYmluZGluZ190 YWJsZV9vZmZzZXQgPSBpbnRlbF9iYl9vZmZzZXQoaWJiKTsKKwliaW5kaW5nX3RhYmxlID0gaW50 ZWxfYmJfcHRyKGliYik7CisJaW50ZWxfYmJfcHRyX2FkZChpYmIsIDY0KTsKKworCWJpbmRpbmdf dGFibGVbMF0gPSBnZW4xMV9maWxsX3N1cmZhY2Vfc3RhdGUoaWJiLCBzcmMsCisJCQkJCQkgICAg U1VSRkFDRV8xRCwKKwkJCQkJCSAgICBTVVJGQUNFRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwK KwkJCQkJCSAgICAwLCAwLCAwKTsKKwliaW5kaW5nX3RhYmxlWzFdID0gZ2VuMTFfZmlsbF9zdXJm YWNlX3N0YXRlKGliYiwgZHN0LAorCQkJCQkJICAgIFNVUkZBQ0VfQlVGRkVSLAorCQkJCQkJICAg IFNVUkZBQ0VGT1JNQVRfUkFXLAorCQkJCQkJICAgIDEsIDEsIDEpOwogCiAJcmV0dXJuIGJpbmRp bmdfdGFibGVfb2Zmc2V0OwogfQogCiB1aW50MzJfdAotZ2VuN19maWxsX2ludGVyZmFjZV9kZXNj cmlwdG9yX3YyKHN0cnVjdCBpbnRlbF9iYiAqaWJiLAotCQkJCSAgc3RydWN0IGludGVsX2J1ZiAq YnVmLAotCQkJCSAgY29uc3QgdWludDMyX3Qga2VybmVsW11bNF0sCi0JCQkJICBzaXplX3Qgc2l6 ZSkKK2dlbjdfZmlsbF9pbnRlcmZhY2VfZGVzY3JpcHRvcihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwK KwkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsCisJCQkgICAgICAgY29uc3QgdWludDMy X3Qga2VybmVsW11bNF0sCisJCQkgICAgICAgc2l6ZV90IHNpemUpCiB7CiAJc3RydWN0IGdlbjdf aW50ZXJmYWNlX2Rlc2NyaXB0b3JfZGF0YSAqaWRkOwogCXVpbnQzMl90IG9mZnNldDsKIAl1aW50 MzJfdCBiaW5kaW5nX3RhYmxlX29mZnNldCwga2VybmVsX29mZnNldDsKIAotCWJpbmRpbmdfdGFi bGVfb2Zmc2V0ID0gZ2VuN19maWxsX2JpbmRpbmdfdGFibGVfdjIoaWJiLCBidWYpOwotCWtlcm5l bF9vZmZzZXQgPSBnZW43X2ZpbGxfa2VybmVsX3YyKGliYiwga2VybmVsLCBzaXplKTsKKwliaW5k aW5nX3RhYmxlX29mZnNldCA9IGdlbjdfZmlsbF9iaW5kaW5nX3RhYmxlKGliYiwgYnVmKTsKKwlr ZXJuZWxfb2Zmc2V0ID0gZ2VuN19maWxsX2tlcm5lbChpYmIsIGtlcm5lbCwgc2l6ZSk7CiAKIAlp bnRlbF9iYl9wdHJfYWxpZ24oaWJiLCA2NCk7CiAJaWRkID0gaW50ZWxfYmJfcHRyKGliYik7CkBA IC05ODcsMTcgKzMzMSw1MyBAQCBnZW43X2ZpbGxfaW50ZXJmYWNlX2Rlc2NyaXB0b3JfdjIoc3Ry dWN0IGludGVsX2JiICppYmIsCiB9CiAKIHVpbnQzMl90Ci1nZW44X2ZpbGxfaW50ZXJmYWNlX2Rl c2NyaXB0b3JfdjIoc3RydWN0IGludGVsX2JiICppYmIsCi0JCQkJICBzdHJ1Y3QgaW50ZWxfYnVm ICpidWYsCi0JCQkJICBjb25zdCB1aW50MzJfdCBrZXJuZWxbXVs0XSwKLQkJCQkgIHNpemVfdCBz aXplKQorZ2VuOF9maWxsX2ludGVyZmFjZV9kZXNjcmlwdG9yKHN0cnVjdCBpbnRlbF9iYiAqaWJi LAorCQkJICAgICAgIHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwKKwkJCSAgICAgICBjb25zdCB1aW50 MzJfdCBrZXJuZWxbXVs0XSwKKwkJCSAgICAgICBzaXplX3Qgc2l6ZSkKK3sKKwlzdHJ1Y3QgZ2Vu OF9pbnRlcmZhY2VfZGVzY3JpcHRvcl9kYXRhICppZGQ7CisJdWludDMyX3Qgb2Zmc2V0OworCXVp bnQzMl90IGJpbmRpbmdfdGFibGVfb2Zmc2V0LCBrZXJuZWxfb2Zmc2V0OworCisJYmluZGluZ190 YWJsZV9vZmZzZXQgPSBnZW43X2ZpbGxfYmluZGluZ190YWJsZShpYmIsIGJ1Zik7CisJa2VybmVs X29mZnNldCA9IGdlbjdfZmlsbF9rZXJuZWwoaWJiLCBrZXJuZWwsIHNpemUpOworCisJaW50ZWxf YmJfcHRyX2FsaWduKGliYiwgNjQpOworCWlkZCA9IGludGVsX2JiX3B0cihpYmIpOworCW9mZnNl dCA9IGludGVsX2JiX29mZnNldChpYmIpOworCisJaWRkLT5kZXNjMC5rZXJuZWxfc3RhcnRfcG9p bnRlciA9IChrZXJuZWxfb2Zmc2V0ID4+IDYpOworCisJaWRkLT5kZXNjMi5zaW5nbGVfcHJvZ3Jh bV9mbG93ID0gMTsKKwlpZGQtPmRlc2MyLmZsb2F0aW5nX3BvaW50X21vZGUgPSBHRU44X0ZMT0FU SU5HX1BPSU5UX0lFRUVfNzU0OworCisJaWRkLT5kZXNjMy5zYW1wbGVyX2NvdW50ID0gMDsgICAg ICAvKiAwIHNhbXBsZXJzIHVzZWQgKi8KKwlpZGQtPmRlc2MzLnNhbXBsZXJfc3RhdGVfcG9pbnRl ciA9IDA7CisKKwlpZGQtPmRlc2M0LmJpbmRpbmdfdGFibGVfZW50cnlfY291bnQgPSAwOworCWlk ZC0+ZGVzYzQuYmluZGluZ190YWJsZV9wb2ludGVyID0gKGJpbmRpbmdfdGFibGVfb2Zmc2V0ID4+ IDUpOworCisJaWRkLT5kZXNjNS5jb25zdGFudF91cmJfZW50cnlfcmVhZF9vZmZzZXQgPSAwOwor CWlkZC0+ZGVzYzUuY29uc3RhbnRfdXJiX2VudHJ5X3JlYWRfbGVuZ3RoID0gMTsgLyogZ3JmIDEg Ki8KKworCWlkZC0+ZGVzYzYubnVtX3RocmVhZHNfaW5fdGcgPSAxOworCisJcmV0dXJuIG9mZnNl dDsKK30KKwordWludDMyX3QKK2dlbjExX2ZpbGxfaW50ZXJmYWNlX2Rlc2NyaXB0b3Ioc3RydWN0 IGludGVsX2JiICppYmIsCisJCQkJc3RydWN0IGludGVsX2J1ZiAqc3JjLCBzdHJ1Y3QgaW50ZWxf YnVmICpkc3QsCisJCQkJY29uc3QgdWludDMyX3Qga2VybmVsW11bNF0sCisJCQkJc2l6ZV90IHNp emUpCiB7CiAJc3RydWN0IGdlbjhfaW50ZXJmYWNlX2Rlc2NyaXB0b3JfZGF0YSAqaWRkOwogCXVp bnQzMl90IG9mZnNldDsKIAl1aW50MzJfdCBiaW5kaW5nX3RhYmxlX29mZnNldCwga2VybmVsX29m ZnNldDsKIAotCWJpbmRpbmdfdGFibGVfb2Zmc2V0ID0gZ2VuN19maWxsX2JpbmRpbmdfdGFibGVf djIoaWJiLCBidWYpOwotCWtlcm5lbF9vZmZzZXQgPSBnZW43X2ZpbGxfa2VybmVsX3YyKGliYiwg a2VybmVsLCBzaXplKTsKKwliaW5kaW5nX3RhYmxlX29mZnNldCA9IGdlbjExX2ZpbGxfYmluZGlu Z190YWJsZShpYmIsIHNyYywgZHN0KTsKKwlrZXJuZWxfb2Zmc2V0ID0gZ2VuN19maWxsX2tlcm5l bChpYmIsIGtlcm5lbCwgc2l6ZSk7CiAKIAlpbnRlbF9iYl9wdHJfYWxpZ24oaWJiLCA2NCk7CiAJ aWRkID0gaW50ZWxfYmJfcHRyKGliYik7CkBAIC0xMDIzLDcgKzQwMyw3IEBAIGdlbjhfZmlsbF9p bnRlcmZhY2VfZGVzY3JpcHRvcl92MihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKIH0KIAogdm9pZAot Z2VuN19lbWl0X3N0YXRlX2Jhc2VfYWRkcmVzc192MihzdHJ1Y3QgaW50ZWxfYmIgKmliYikKK2dl bjdfZW1pdF9zdGF0ZV9iYXNlX2FkZHJlc3Moc3RydWN0IGludGVsX2JiICppYmIpCiB7CiAJaW50 ZWxfYmJfb3V0KGliYiwgR0VON19TVEFURV9CQVNFX0FERFJFU1MgfCAoMTAgLSAyKSk7CiAKQEAg LTEwNTYsNyArNDM2LDcgQEAgZ2VuN19lbWl0X3N0YXRlX2Jhc2VfYWRkcmVzc192MihzdHJ1Y3Qg aW50ZWxfYmIgKmliYikKIH0KIAogdm9pZAotZ2VuOF9lbWl0X3N0YXRlX2Jhc2VfYWRkcmVzc192 MihzdHJ1Y3QgaW50ZWxfYmIgKmliYikKK2dlbjhfZW1pdF9zdGF0ZV9iYXNlX2FkZHJlc3Moc3Ry dWN0IGludGVsX2JiICppYmIpCiB7CiAJaW50ZWxfYmJfb3V0KGliYiwgR0VOOF9TVEFURV9CQVNF X0FERFJFU1MgfCAoMTYgLSAyKSk7CiAKQEAgLTExMDEsOSArNDgxLDggQEAgZ2VuOF9lbWl0X3N0 YXRlX2Jhc2VfYWRkcmVzc192MihzdHJ1Y3QgaW50ZWxfYmIgKmliYikKIAlpbnRlbF9iYl9vdXQo aWJiLCAxIDw8IDEyIHwgMSk7CiB9CiAKLQogdm9pZAotZ2VuOV9lbWl0X3N0YXRlX2Jhc2VfYWRk cmVzc192MihzdHJ1Y3QgaW50ZWxfYmIgKmliYikKK2dlbjlfZW1pdF9zdGF0ZV9iYXNlX2FkZHJl c3Moc3RydWN0IGludGVsX2JiICppYmIpCiB7CiAJaW50ZWxfYmJfb3V0KGliYiwgR0VOOF9TVEFU RV9CQVNFX0FERFJFU1MgfCAoMTkgLSAyKSk7CiAKQEAgLTExNTIsOSArNTMxLDkgQEAgZ2VuOV9l bWl0X3N0YXRlX2Jhc2VfYWRkcmVzc192MihzdHJ1Y3QgaW50ZWxfYmIgKmliYikKIH0KIAogdm9p ZAotZ2VuN19lbWl0X3ZmZV9zdGF0ZV92MihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3Qg dGhyZWFkcywKLQkJICAgICAgIHVpbnQzMl90IHVyYl9lbnRyaWVzLCB1aW50MzJfdCB1cmJfc2l6 ZSwKLQkJICAgICAgIHVpbnQzMl90IGN1cmJlX3NpemUsIHVpbnQzMl90IG1vZGUpCitnZW43X2Vt aXRfdmZlX3N0YXRlKHN0cnVjdCBpbnRlbF9iYiAqaWJiLCB1aW50MzJfdCB0aHJlYWRzLAorCQkg ICAgdWludDMyX3QgdXJiX2VudHJpZXMsIHVpbnQzMl90IHVyYl9zaXplLAorCQkgICAgdWludDMy X3QgY3VyYmVfc2l6ZSwgdWludDMyX3QgbW9kZSkKIHsKIAlpbnRlbF9iYl9vdXQoaWJiLCBHRU43 X01FRElBX1ZGRV9TVEFURSB8ICg4IC0gMikpOwogCkBAIC0xMTc5LDkgKzU1OCw5IEBAIGdlbjdf ZW1pdF92ZmVfc3RhdGVfdjIoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IHRocmVhZHMs CiB9CiAKIHZvaWQKLWdlbjhfZW1pdF92ZmVfc3RhdGVfdjIoc3RydWN0IGludGVsX2JiICppYmIs IHVpbnQzMl90IHRocmVhZHMsCi0JCSAgICAgICB1aW50MzJfdCB1cmJfZW50cmllcywgdWludDMy X3QgdXJiX3NpemUsCi0JCSAgICAgICB1aW50MzJfdCBjdXJiZV9zaXplKQorZ2VuOF9lbWl0X3Zm ZV9zdGF0ZShzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3QgdGhyZWFkcywKKwkJICAgIHVp bnQzMl90IHVyYl9lbnRyaWVzLCB1aW50MzJfdCB1cmJfc2l6ZSwKKwkJICAgIHVpbnQzMl90IGN1 cmJlX3NpemUpCiB7CiAJaW50ZWxfYmJfb3V0KGliYiwgR0VON19NRURJQV9WRkVfU1RBVEUgfCAo OSAtIDIpKTsKIApAQCAtMTIwNCw3ICs1ODMsNyBAQCBnZW44X2VtaXRfdmZlX3N0YXRlX3YyKHN0 cnVjdCBpbnRlbF9iYiAqaWJiLCB1aW50MzJfdCB0aHJlYWRzLAogfQogCiB2b2lkCi1nZW43X2Vt aXRfY3VyYmVfbG9hZF92MihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3QgY3VyYmVfYnVm ZmVyKQorZ2VuN19lbWl0X2N1cmJlX2xvYWQoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90 IGN1cmJlX2J1ZmZlcikKIHsKIAlpbnRlbF9iYl9vdXQoaWJiLCBHRU43X01FRElBX0NVUkJFX0xP QUQgfCAoNCAtIDIpKTsKIAlpbnRlbF9iYl9vdXQoaWJiLCAwKTsKQEAgLTEyMTUsOCArNTk0LDgg QEAgZ2VuN19lbWl0X2N1cmJlX2xvYWRfdjIoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90 IGN1cmJlX2J1ZmZlcikKIH0KIAogdm9pZAotZ2VuN19lbWl0X2ludGVyZmFjZV9kZXNjcmlwdG9y X2xvYWRfdjIoc3RydWN0IGludGVsX2JiICppYmIsCi0JCQkJICAgICAgIHVpbnQzMl90IGludGVy ZmFjZV9kZXNjcmlwdG9yKQorZ2VuN19lbWl0X2ludGVyZmFjZV9kZXNjcmlwdG9yX2xvYWQoc3Ry dWN0IGludGVsX2JiICppYmIsCisJCQkJICAgIHVpbnQzMl90IGludGVyZmFjZV9kZXNjcmlwdG9y KQogewogCWludGVsX2JiX291dChpYmIsIEdFTjdfTUVESUFfSU5URVJGQUNFX0RFU0NSSVBUT1Jf TE9BRCB8ICg0IC0gMikpOwogCWludGVsX2JiX291dChpYmIsIDApOwpAQCAtMTIzMiw5ICs2MTEs OSBAQCBnZW43X2VtaXRfaW50ZXJmYWNlX2Rlc2NyaXB0b3JfbG9hZF92MihzdHJ1Y3QgaW50ZWxf YmIgKmliYiwKIH0KIAogdm9pZAotZ2VuN19lbWl0X2dwZ3B1X3dhbGtfdjIoc3RydWN0IGludGVs X2JiICppYmIsCi0JCQl1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHksCi0JCQl1bnNpZ25l ZCBpbnQgd2lkdGgsIHVuc2lnbmVkIGludCBoZWlnaHQpCitnZW43X2VtaXRfZ3BncHVfd2Fsayhz dHJ1Y3QgaW50ZWxfYmIgKmliYiwKKwkJICAgICB1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50 IHksCisJCSAgICAgdW5zaWduZWQgaW50IHdpZHRoLCB1bnNpZ25lZCBpbnQgaGVpZ2h0KQogewog CXVpbnQzMl90IHhfZGltLCB5X2RpbSwgdG1wLCByaWdodF9tYXNrOwogCkBAIC0xMjg5LDkgKzY2 OCw5IEBAIGdlbjdfZW1pdF9ncGdwdV93YWxrX3YyKHN0cnVjdCBpbnRlbF9iYiAqaWJiLAogfQog CiB2b2lkCi1nZW44X2VtaXRfZ3BncHVfd2Fsa192MihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKLQkJ CXVuc2lnbmVkIGludCB4LCB1bnNpZ25lZCBpbnQgeSwKLQkJCXVuc2lnbmVkIGludCB3aWR0aCwg dW5zaWduZWQgaW50IGhlaWdodCkKK2dlbjhfZW1pdF9ncGdwdV93YWxrKHN0cnVjdCBpbnRlbF9i YiAqaWJiLAorCQkgICAgIHVuc2lnbmVkIGludCB4LCB1bnNpZ25lZCBpbnQgeSwKKwkJICAgICB1 bnNpZ25lZCBpbnQgd2lkdGgsIHVuc2lnbmVkIGludCBoZWlnaHQpCiB7CiAJdWludDMyX3QgeF9k aW0sIHlfZGltLCB0bXAsIHJpZ2h0X21hc2s7CiAKQEAgLTEzNDksMTUgKzcyOCwxNSBAQCBnZW44 X2VtaXRfZ3BncHVfd2Fsa192MihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKIH0KIAogdm9pZAotZ2Vu OF9lbWl0X21lZGlhX3N0YXRlX2ZsdXNoX3YyKHN0cnVjdCBpbnRlbF9iYiAqaWJiKQorZ2VuOF9l bWl0X21lZGlhX3N0YXRlX2ZsdXNoKHN0cnVjdCBpbnRlbF9iYiAqaWJiKQogewogCWludGVsX2Ji X291dChpYmIsIEdFTjhfTUVESUFfU1RBVEVfRkxVU0ggfCAoMiAtIDIpKTsKIAlpbnRlbF9iYl9v dXQoaWJiLCAwKTsKIH0KIAogdm9pZAotZ2VuX2VtaXRfbWVkaWFfb2JqZWN0X3YyKHN0cnVjdCBp bnRlbF9iYiAqaWJiLAotCQkJIHVuc2lnbmVkIGludCB4b2Zmc2V0LCB1bnNpZ25lZCBpbnQgeW9m ZnNldCkKK2dlbl9lbWl0X21lZGlhX29iamVjdChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKKwkJICAg ICAgdW5zaWduZWQgaW50IHhvZmZzZXQsIHVuc2lnbmVkIGludCB5b2Zmc2V0KQogewogCWludGVs X2JiX291dChpYmIsIEdFTjdfTUVESUFfT0JKRUNUIHwgKDggLSAyKSk7CiAKQEAgLTEzNzYsMTcg Kzc1NSwxNyBAQCBnZW5fZW1pdF9tZWRpYV9vYmplY3RfdjIoc3RydWN0IGludGVsX2JiICppYmIs CiAJaW50ZWxfYmJfb3V0KGliYiwgeG9mZnNldCk7CiAJaW50ZWxfYmJfb3V0KGliYiwgeW9mZnNl dCk7CiAJaWYgKEFUX0xFQVNUX0dFTihpYmItPmRldmlkLCA4KSAmJiAhSVNfQ0hFUlJZVklFVyhp YmItPmRldmlkKSkKLQkJZ2VuOF9lbWl0X21lZGlhX3N0YXRlX2ZsdXNoX3YyKGliYik7CisJCWdl bjhfZW1pdF9tZWRpYV9zdGF0ZV9mbHVzaChpYmIpOwogfQogCiB2b2lkCi1nZW43X2VtaXRfbWVk aWFfb2JqZWN0c192MihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKLQkJCSAgIHVuc2lnbmVkIGludCB4 LCB1bnNpZ25lZCBpbnQgeSwKLQkJCSAgIHVuc2lnbmVkIGludCB3aWR0aCwgdW5zaWduZWQgaW50 IGhlaWdodCkKK2dlbjdfZW1pdF9tZWRpYV9vYmplY3RzKHN0cnVjdCBpbnRlbF9iYiAqaWJiLAor CQkJdW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5LAorCQkJdW5zaWduZWQgaW50IHdpZHRo LCB1bnNpZ25lZCBpbnQgaGVpZ2h0KQogewogCWludCBpLCBqOwogCiAJZm9yIChpID0gMDsgaSA8 IHdpZHRoIC8gMTY7IGkrKykKIAkJZm9yIChqID0gMDsgaiA8IGhlaWdodCAvIDE2OyBqKyspCi0J CQlnZW5fZW1pdF9tZWRpYV9vYmplY3RfdjIoaWJiLCB4ICsgaSAqIDE2LCB5ICsgaiAqIDE2KTsK KwkJCWdlbl9lbWl0X21lZGlhX29iamVjdChpYmIsIHggKyBpICogMTYsIHkgKyBqICogMTYpOwog fQpkaWZmIC0tZ2l0IGEvbGliL2dwdV9jbWRzLmggYi9saWIvZ3B1X2NtZHMuaAppbmRleCA2NGFi YzUxMy4uNTZmMDliNmUgMTAwNjQ0Ci0tLSBhL2xpYi9ncHVfY21kcy5oCisrKyBiL2xpYi9ncHVf Y21kcy5oCkBAIC0yNSw3ICsyNSw2IEBACiAjaWZuZGVmIEdQVV9DTURTX0gKICNkZWZpbmUgR1BV X0NNRFNfSAogCi0jaW5jbHVkZSA8aW50ZWxfYnVmbWdyLmg+CiAjaW5jbHVkZSA8aTkxNV9kcm0u aD4KIAogI2luY2x1ZGUgIm1lZGlhX2ZpbGwuaCIKQEAgLTM4LDE4MiArMzcsNzQgQEAKICNpbmNs dWRlICJpbnRlbF9idWZvcHMuaCIKICNpbmNsdWRlIDxhc3NlcnQuaD4KIAotdm9pZAotZ2VuN19y ZW5kZXJfZmx1c2goc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwgdWludDMyX3QgYmF0 Y2hfZW5kKTsKLQotdm9pZAotZ2VuN19yZW5kZXJfY29udGV4dF9mbHVzaChzdHJ1Y3QgaW50ZWxf YmF0Y2hidWZmZXIgKmJhdGNoLCB1aW50MzJfdCBiYXRjaF9lbmQpOwotCiB1aW50MzJfdAotZ2Vu N19maWxsX2N1cmJlX2J1ZmZlcl9kYXRhKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gs Ci0JCQl1aW50OF90IGNvbG9yKTsKK2dlbjdfZmlsbF9jdXJiZV9idWZmZXJfZGF0YShzdHJ1Y3Qg aW50ZWxfYmIgKmliYiwgdWludDhfdCBjb2xvcik7CiAKIHVpbnQzMl90CiBnZW4xMV9maWxsX2N1 cmJlX2J1ZmZlcl9kYXRhKHN0cnVjdCBpbnRlbF9iYiAqaWJiKTsKIAogdWludDMyX3QKLWdlbjdf ZmlsbF9zdXJmYWNlX3N0YXRlKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCi0JCQlj b25zdCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLAotCQkJdWludDMyX3QgZm9ybWF0LAotCQkJaW50IGlz X2RzdCk7Ci0KLXVpbnQzMl90Ci1nZW43X2ZpbGxfYmluZGluZ190YWJsZShzdHJ1Y3QgaW50ZWxf YmF0Y2hidWZmZXIgKmJhdGNoLAotCQkJY29uc3Qgc3RydWN0IGlndF9idWYgKmRzdCk7Ci11aW50 MzJfdAotZ2VuMTFfZmlsbF9iaW5kaW5nX3RhYmxlKHN0cnVjdCBpbnRlbF9iYiAqaWJiLAotCQkJ IGNvbnN0IHN0cnVjdCBpbnRlbF9idWYgKnNyYywKLQkJCSBjb25zdCBzdHJ1Y3QgaW50ZWxfYnVm ICpkc3QpOwotCi11aW50MzJfdAotZ2VuN19maWxsX2tlcm5lbChzdHJ1Y3QgaW50ZWxfYmF0Y2hi dWZmZXIgKmJhdGNoLAotCQljb25zdCB1aW50MzJfdCBrZXJuZWxbXVs0XSwKLQkJc2l6ZV90IHNp emUpOwotCi11aW50MzJfdAotZ2VuN19maWxsX2ludGVyZmFjZV9kZXNjcmlwdG9yKHN0cnVjdCBp bnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCi0JCQkgICAgICAgY29uc3Qgc3RydWN0IGlndF9idWYg KmRzdCwKK2dlbjdfZmlsbF9pbnRlcmZhY2VfZGVzY3JpcHRvcihzdHJ1Y3QgaW50ZWxfYmIgKmli YiwKKwkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsCiAJCQkgICAgICAgY29uc3QgdWlu dDMyX3Qga2VybmVsW11bNF0sCiAJCQkgICAgICAgc2l6ZV90IHNpemUpOwogCi12b2lkCi1nZW43 X2VtaXRfc3RhdGVfYmFzZV9hZGRyZXNzKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gp OwotCi12b2lkCi1nZW43X2VtaXRfdmZlX3N0YXRlKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAq YmF0Y2gsIHVpbnQzMl90IHRocmVhZHMsCi0JCSAgICB1aW50MzJfdCB1cmJfZW50cmllcywgdWlu dDMyX3QgdXJiX3NpemUsCi0JCSAgICB1aW50MzJfdCBjdXJiZV9zaXplLCB1aW50MzJfdCBtb2Rl KTsKLQotdm9pZAotZ2VuN19lbWl0X2N1cmJlX2xvYWQoc3RydWN0IGludGVsX2JhdGNoYnVmZmVy ICpiYXRjaCwgdWludDMyX3QgY3VyYmVfYnVmZmVyKTsKLQotdm9pZAotZ2VuN19lbWl0X2ludGVy ZmFjZV9kZXNjcmlwdG9yX2xvYWQoc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwKLQkJ CQkgICAgdWludDMyX3QgaW50ZXJmYWNlX2Rlc2NyaXB0b3IpOwotCi12b2lkCi1nZW43X2VtaXRf bWVkaWFfb2JqZWN0cyhzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAotCQkJdW5zaWdu ZWQgaW50IHgsIHVuc2lnbmVkIGludCB5LAotCQkJdW5zaWduZWQgaW50IHdpZHRoLCB1bnNpZ25l ZCBpbnQgaGVpZ2h0KTsKLQotdm9pZAotZ2VuN19lbWl0X2dwZ3B1X3dhbGsoc3RydWN0IGludGVs X2JhdGNoYnVmZmVyICpiYXRjaCwKLQkJICAgICB1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50 IHksCi0JCSAgICAgdW5zaWduZWQgaW50IHdpZHRoLCB1bnNpZ25lZCBpbnQgaGVpZ2h0KTsKLQot dWludDMyX3QKLWdlbjhfc3Bpbl9jdXJiZV9idWZmZXJfZGF0YShzdHJ1Y3QgaW50ZWxfYmF0Y2hi dWZmZXIgKmJhdGNoLAotCQkJICAgIHVpbnQzMl90IGl0ZXJzKTsKLQotdWludDMyX3QKLWdlbjhf ZmlsbF9zdXJmYWNlX3N0YXRlKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCi0JCQlj b25zdCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLAotCQkJdWludDMyX3QgZm9ybWF0LAotCQkJaW50IGlz X2RzdCk7Ci11aW50MzJfdAotZ2VuMTFfZmlsbF9zdXJmYWNlX3N0YXRlKHN0cnVjdCBpbnRlbF9i YiAqaWJiLAotCQkJIGNvbnN0IHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwKLQkJCSB1aW50MzJfdCBz dXJmYWNlX3R5cGUsCi0JCQkgdWludDMyX3QgZm9ybWF0LAotCQkJIHVpbnQzMl90IHZlcnRpY2Fs X2FsaWdubWVudCwKLQkJCSB1aW50MzJfdCBob3Jpem9udGFsX2FsaWdubWVudCwKLQkJCSBpbnQg aXNfZHN0KTsKLQogdWludDMyX3QKLWdlbjhfZmlsbF9pbnRlcmZhY2VfZGVzY3JpcHRvcihzdHJ1 Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAotCQkJICAgICAgIGNvbnN0IHN0cnVjdCBpZ3Rf YnVmICpkc3QsCitnZW44X2ZpbGxfaW50ZXJmYWNlX2Rlc2NyaXB0b3Ioc3RydWN0IGludGVsX2Ji ICppYmIsCisJCQkgICAgICAgc3RydWN0IGludGVsX2J1ZiAqYnVmLAogCQkJICAgICAgIGNvbnN0 IHVpbnQzMl90IGtlcm5lbFtdWzRdLAogCQkJICAgICAgIHNpemVfdCBzaXplKTsKKwogdWludDMy X3QKIGdlbjExX2ZpbGxfaW50ZXJmYWNlX2Rlc2NyaXB0b3Ioc3RydWN0IGludGVsX2JiICppYmIs CiAJCQkJc3RydWN0IGludGVsX2J1ZiAqc3JjLCBzdHJ1Y3QgaW50ZWxfYnVmICpkc3QsCiAJCQkJ Y29uc3QgdWludDMyX3Qga2VybmVsW11bNF0sCiAJCQkJc2l6ZV90IHNpemUpOwotdm9pZAotZ2Vu OF9lbWl0X3N0YXRlX2Jhc2VfYWRkcmVzcyhzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNo KTsKIAogdm9pZAotZ2VuOF9lbWl0X21lZGlhX3N0YXRlX2ZsdXNoKHN0cnVjdCBpbnRlbF9iYXRj aGJ1ZmZlciAqYmF0Y2gpOworZ2VuN19lbWl0X3N0YXRlX2Jhc2VfYWRkcmVzcyhzdHJ1Y3QgaW50 ZWxfYmIgKmliYik7CiAKIHZvaWQKLWdlbjhfZW1pdF92ZmVfc3RhdGUoc3RydWN0IGludGVsX2Jh dGNoYnVmZmVyICpiYXRjaCwgdWludDMyX3QgdGhyZWFkcywKLQkJICAgIHVpbnQzMl90IHVyYl9l bnRyaWVzLCB1aW50MzJfdCB1cmJfc2l6ZSwKLQkJICAgIHVpbnQzMl90IGN1cmJlX3NpemUpOwor Z2VuOF9lbWl0X3N0YXRlX2Jhc2VfYWRkcmVzcyhzdHJ1Y3QgaW50ZWxfYmIgKmliYik7CiAKIHZv aWQKLWdlbjhfZW1pdF9ncGdwdV93YWxrKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gs Ci0JCSAgICAgdW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5LAotCQkgICAgIHVuc2lnbmVk IGludCB3aWR0aCwgdW5zaWduZWQgaW50IGhlaWdodCk7Ci0KLXZvaWQKLWdlbl9lbWl0X21lZGlh X29iamVjdChzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLCB1bnNpZ25lZCBpbnQgeG9m ZnNldCwKLQkJICB1bnNpZ25lZCBpbnQgeW9mZnNldCk7CitnZW45X2VtaXRfc3RhdGVfYmFzZV9h ZGRyZXNzKHN0cnVjdCBpbnRlbF9iYiAqaWJiKTsKIAogdm9pZAotZ2VuOV9lbWl0X3N0YXRlX2Jh c2VfYWRkcmVzcyhzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoKTsKLQotCi0vKiBObyBs aWJkcm0gKi8KLXVpbnQzMl90Ci1nZW43X2ZpbGxfY3VyYmVfYnVmZmVyX2RhdGFfdjIoc3RydWN0 IGludGVsX2JiICppYmIsCi0JCQkgICAgICAgdWludDhfdCBjb2xvcik7Ci0KLXVpbnQzMl90Ci1n ZW43X2ZpbGxfaW50ZXJmYWNlX2Rlc2NyaXB0b3JfdjIoc3RydWN0IGludGVsX2JiICppYmIsCi0J CQkJICBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsCi0JCQkJICBjb25zdCB1aW50MzJfdCBrZXJuZWxb XVs0XSwKLQkJCQkgIHNpemVfdCBzaXplKTsKLQotdWludDMyX3QKLWdlbjhfZmlsbF9pbnRlcmZh Y2VfZGVzY3JpcHRvcl92MihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKLQkJCQkgIHN0cnVjdCBpbnRl bF9idWYgKmJ1ZiwKLQkJCQkgIGNvbnN0IHVpbnQzMl90IGtlcm5lbFtdWzRdLAotCQkJCSAgc2l6 ZV90IHNpemUpOworZ2VuN19lbWl0X3ZmZV9zdGF0ZShzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWlu dDMyX3QgdGhyZWFkcywKKwkJICAgIHVpbnQzMl90IHVyYl9lbnRyaWVzLCB1aW50MzJfdCB1cmJf c2l6ZSwKKwkJICAgIHVpbnQzMl90IGN1cmJlX3NpemUsIHVpbnQzMl90IG1vZGUpOwogCiB2b2lk Ci1nZW43X2VtaXRfc3RhdGVfYmFzZV9hZGRyZXNzX3YyKHN0cnVjdCBpbnRlbF9iYiAqaWJiKTsK LQorZ2VuOF9lbWl0X3ZmZV9zdGF0ZShzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3QgdGhy ZWFkcywKKwkJICAgIHVpbnQzMl90IHVyYl9lbnRyaWVzLCB1aW50MzJfdCB1cmJfc2l6ZSwKKwkJ ICAgIHVpbnQzMl90IGN1cmJlX3NpemUpOwogdm9pZAotZ2VuOF9lbWl0X3N0YXRlX2Jhc2VfYWRk cmVzc192MihzdHJ1Y3QgaW50ZWxfYmIgKmliYik7CitnZW43X2VtaXRfY3VyYmVfbG9hZChzdHJ1 Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3QgY3VyYmVfYnVmZmVyKTsKIAogdm9pZAotZ2VuOV9l bWl0X3N0YXRlX2Jhc2VfYWRkcmVzc192MihzdHJ1Y3QgaW50ZWxfYmIgKmliYik7CitnZW43X2Vt aXRfaW50ZXJmYWNlX2Rlc2NyaXB0b3JfbG9hZChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKKwkJCQkg ICAgdWludDMyX3QgaW50ZXJmYWNlX2Rlc2NyaXB0b3IpOwogCiB2b2lkCi1nZW43X2VtaXRfdmZl X3N0YXRlX3YyKHN0cnVjdCBpbnRlbF9iYiAqaWJiLCB1aW50MzJfdCB0aHJlYWRzLAotCQkgICAg ICAgdWludDMyX3QgdXJiX2VudHJpZXMsIHVpbnQzMl90IHVyYl9zaXplLAotCQkgICAgICAgdWlu dDMyX3QgY3VyYmVfc2l6ZSwgdWludDMyX3QgbW9kZSk7CitnZW43X2VtaXRfZ3BncHVfd2Fsayhz dHJ1Y3QgaW50ZWxfYmIgKmliYiwKKwkJICAgICB1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50 IHksCisJCSAgICAgdW5zaWduZWQgaW50IHdpZHRoLCB1bnNpZ25lZCBpbnQgaGVpZ2h0KTsKIAog dm9pZAotZ2VuOF9lbWl0X3ZmZV9zdGF0ZV92MihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMy X3QgdGhyZWFkcywKLQkJICAgICAgIHVpbnQzMl90IHVyYl9lbnRyaWVzLCB1aW50MzJfdCB1cmJf c2l6ZSwKLQkJICAgICAgIHVpbnQzMl90IGN1cmJlX3NpemUpOwotdm9pZAotZ2VuN19lbWl0X2N1 cmJlX2xvYWRfdjIoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IGN1cmJlX2J1ZmZlcik7 CitnZW44X2VtaXRfZ3BncHVfd2FsayhzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKKwkJICAgICB1bnNp Z25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHksCisJCSAgICAgdW5zaWduZWQgaW50IHdpZHRoLCB1 bnNpZ25lZCBpbnQgaGVpZ2h0KTsKIAogdm9pZAotZ2VuN19lbWl0X2ludGVyZmFjZV9kZXNjcmlw dG9yX2xvYWRfdjIoc3RydWN0IGludGVsX2JiICppYmIsCi0JCQkJICAgICAgIHVpbnQzMl90IGlu dGVyZmFjZV9kZXNjcmlwdG9yKTsKK2dlbjhfZW1pdF9tZWRpYV9zdGF0ZV9mbHVzaChzdHJ1Y3Qg aW50ZWxfYmIgKmliYik7CiAKIHZvaWQKLWdlbjdfZW1pdF9ncGdwdV93YWxrX3YyKHN0cnVjdCBp bnRlbF9iYiAqaWJiLAotCQkJdW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5LAotCQkJdW5z aWduZWQgaW50IHdpZHRoLCB1bnNpZ25lZCBpbnQgaGVpZ2h0KTsKK2dlbl9lbWl0X21lZGlhX29i amVjdChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKKwkJICAgICAgdW5zaWduZWQgaW50IHhvZmZzZXQs IHVuc2lnbmVkIGludCB5b2Zmc2V0KTsKIAogdm9pZAotZ2VuOF9lbWl0X2dwZ3B1X3dhbGtfdjIo c3RydWN0IGludGVsX2JiICppYmIsCitnZW43X2VtaXRfbWVkaWFfb2JqZWN0cyhzdHJ1Y3QgaW50 ZWxfYmIgKmliYiwKIAkJCXVuc2lnbmVkIGludCB4LCB1bnNpZ25lZCBpbnQgeSwKIAkJCXVuc2ln bmVkIGludCB3aWR0aCwgdW5zaWduZWQgaW50IGhlaWdodCk7Ci0KLXZvaWQKLWdlbjhfZW1pdF9t ZWRpYV9zdGF0ZV9mbHVzaF92MihzdHJ1Y3QgaW50ZWxfYmIgKmliYik7Ci0KLXZvaWQKLWdlbl9l bWl0X21lZGlhX29iamVjdF92MihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKLQkJCSB1bnNpZ25lZCBp bnQgeG9mZnNldCwgdW5zaWduZWQgaW50IHlvZmZzZXQpOwotCi12b2lkCi1nZW43X2VtaXRfbWVk aWFfb2JqZWN0c192MihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKLQkJCSAgIHVuc2lnbmVkIGludCB4 LCB1bnNpZ25lZCBpbnQgeSwKLQkJCSAgIHVuc2lnbmVkIGludCB3aWR0aCwgdW5zaWduZWQgaW50 IGhlaWdodCk7CiAjZW5kaWYgLyogR1BVX0NNRFNfSCAqLwpkaWZmIC0tZ2l0IGEvbGliL2ludGVs X2JhdGNoYnVmZmVyLmMgYi9saWIvaW50ZWxfYmF0Y2hidWZmZXIuYwppbmRleCAwMmMyOTNiZS4u NDlmMmQwZmUgMTAwNjQ0Ci0tLSBhL2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5jCisrKyBiL2xpYi9p bnRlbF9iYXRjaGJ1ZmZlci5jCkBAIC0xMTE4LDMyICsxMTE4LDYgQEAgaWd0X2ZpbGxmdW5jX3Qg aWd0X2dldF9tZWRpYV9maWxsZnVuYyhpbnQgZGV2aWQpCiAJcmV0dXJuIGZpbGw7CiB9CiAKLQot LyoqCi0gKiBpZ3RfZ2V0X21lZGlhX2ZpbGxmdW5jX3YyOgotICogQGRldmlkOiBwY2kgZGV2aWNl IGlkCi0gKgotICogUmV0dXJuczoKLSAqCi0gKiBUaGUgcGxhdGZvcm0tc3BlY2lmaWMgbWVkaWEg ZmlsbCBmdW5jdGlvbiBwb2ludGVyIGZvciB0aGUgZGV2aWNlIHNwZWNpZmllZAotICogd2l0aCBA ZGV2aWQuIFdpbGwgcmV0dXJuIE5VTEwgd2hlbiBubyBtZWRpYSBmaWxsIGZ1bmN0aW9uIGlzIGlt cGxlbWVudGVkLgotICovCi1pZ3RfZmlsbGZ1bmNfdjJfdCBpZ3RfZ2V0X21lZGlhX2ZpbGxmdW5j X3YyKGludCBkZXZpZCkKLXsKLQlpZ3RfZmlsbGZ1bmNfdjJfdCBmaWxsID0gTlVMTDsKLQotCWlm IChJU19HRU4xMihkZXZpZCkpCi0JCWZpbGwgPSBnZW4xMl9tZWRpYV9maWxsZnVuY192MjsKLQll bHNlIGlmIChJU19HRU45KGRldmlkKSB8fCBJU19HRU4xMChkZXZpZCkgfHwgSVNfR0VOMTEoZGV2 aWQpKQotCQlmaWxsID0gZ2VuOV9tZWRpYV9maWxsZnVuY192MjsKLQllbHNlIGlmIChJU19HRU44 KGRldmlkKSkKLQkJZmlsbCA9IGdlbjhfbWVkaWFfZmlsbGZ1bmNfdjI7Ci0JZWxzZSBpZiAoSVNf R0VONyhkZXZpZCkpCi0JCWZpbGwgPSBnZW43X21lZGlhX2ZpbGxmdW5jX3YyOwotCi0JcmV0dXJu IGZpbGw7Ci19Ci0KIGlndF92bWVfZnVuY190IGlndF9nZXRfbWVkaWFfdm1lX2Z1bmMoaW50IGRl dmlkKQogewogCWlndF92bWVfZnVuY190IGZpbGwgPSBOVUxMOwpAQCAtMTE1Myw2ICsxMTI3LDcg QEAgaWd0X3ZtZV9mdW5jX3QgaWd0X2dldF9tZWRpYV92bWVfZnVuYyhpbnQgZGV2aWQpCiAKIAly ZXR1cm4gZmlsbDsKIH0KKwogLyoqCiAgKiBpZ3RfZ2V0X2dwZ3B1X2ZpbGxmdW5jOgogICogQGRl dmlkOiBwY2kgZGV2aWNlIGlkCkBAIC0xMTY4LDcgKzExNDMsNyBAQCBpZ3RfZmlsbGZ1bmNfdCBp Z3RfZ2V0X2dwZ3B1X2ZpbGxmdW5jKGludCBkZXZpZCkKIAogCWlmIChJU19HRU43KGRldmlkKSkK IAkJZmlsbCA9IGdlbjdfZ3BncHVfZmlsbGZ1bmM7Ci0JZWxzZSBpZiAoSVNfQlJPQURXRUxMKGRl dmlkKSkKKwllbHNlIGlmIChJU19HRU44KGRldmlkKSkKIAkJZmlsbCA9IGdlbjhfZ3BncHVfZmls bGZ1bmM7CiAJZWxzZSBpZiAoSVNfR0VOOShkZXZpZCkgfHwgSVNfR0VOMTAoZGV2aWQpKQogCQlm aWxsID0gZ2VuOV9ncGdwdV9maWxsZnVuYzsKQEAgLTExODAsMzMgKzExNTUsNiBAQCBpZ3RfZmls bGZ1bmNfdCBpZ3RfZ2V0X2dwZ3B1X2ZpbGxmdW5jKGludCBkZXZpZCkKIAlyZXR1cm4gZmlsbDsK IH0KIAotLyoqCi0gKiBpZ3RfZ2V0X2dwZ3B1X2ZpbGxmdW5jX3YyOgotICogQGRldmlkOiBwY2kg ZGV2aWNlIGlkCi0gKgotICogUmV0dXJuczoKLSAqCi0gKiBUaGUgcGxhdGZvcm0tc3BlY2lmaWMg Z3BncHUgZmlsbCBmdW5jdGlvbiBwb2ludGVyIGZvciB0aGUgZGV2aWNlIHNwZWNpZmllZAotICog d2l0aCBAZGV2aWQuIFdpbGwgcmV0dXJuIE5VTEwgd2hlbiBubyBncGdwdSBmaWxsIGZ1bmN0aW9u IGlzIGltcGxlbWVudGVkLgotICovCi1pZ3RfZmlsbGZ1bmNfdjJfdCBpZ3RfZ2V0X2dwZ3B1X2Zp bGxmdW5jX3YyKGludCBkZXZpZCkKLXsKLQlpZ3RfZmlsbGZ1bmNfdjJfdCBmaWxsID0gTlVMTDsK LQotCWlmIChJU19HRU43KGRldmlkKSkKLQkJZmlsbCA9IGdlbjdfZ3BncHVfZmlsbGZ1bmNfdjI7 Ci0JZWxzZSBpZiAoSVNfR0VOOChkZXZpZCkpCi0JCWZpbGwgPSBnZW44X2dwZ3B1X2ZpbGxmdW5j X3YyOwotCWVsc2UgaWYgKElTX0dFTjkoZGV2aWQpIHx8IElTX0dFTjEwKGRldmlkKSkKLQkJZmls bCA9IGdlbjlfZ3BncHVfZmlsbGZ1bmNfdjI7Ci0JZWxzZSBpZiAoSVNfR0VOMTEoZGV2aWQpKQot CQlmaWxsID0gZ2VuMTFfZ3BncHVfZmlsbGZ1bmNfdjI7Ci0JZWxzZSBpZiAoSVNfR0VOMTIoZGV2 aWQpKQotCQlmaWxsID0gZ2VuMTJfZ3BncHVfZmlsbGZ1bmNfdjI7Ci0KLQlyZXR1cm4gZmlsbDsK LX0KLQogLyoqCiAgKiBpZ3RfZ2V0X21lZGlhX3NwaW5mdW5jOgogICogQGRldmlkOiBwY2kgZGV2 aWNlIGlkCmRpZmYgLS1naXQgYS9saWIvaW50ZWxfYmF0Y2hidWZmZXIuaCBiL2xpYi9pbnRlbF9i YXRjaGJ1ZmZlci5oCmluZGV4IDE2MmU3ZjBjLi5hZTA1MmMxNyAxMDA2NDQKLS0tIGEvbGliL2lu dGVsX2JhdGNoYnVmZmVyLmgKKysrIGIvbGliL2ludGVsX2JhdGNoYnVmZmVyLmgKQEAgLTM3MCw4 ICszNzAsOCBAQCBpZ3RfdmVib3hfY29weWZ1bmNfdCBpZ3RfZ2V0X3ZlYm94X2NvcHlmdW5jKGlu dCBkZXZpZCk7CiAKIC8qKgogICogaWd0X2ZpbGxmdW5jX3Q6Ci0gKiBAYmF0Y2g6IGJhdGNoYnVm ZmVyIG9iamVjdAotICogQGRzdDogZGVzdGluYXRpb24gaS1nLXQgYnVmZmVyIG9iamVjdAorICog QGk5MTU6IGRybSBmZAorICogQGJ1ZjogZGVzdGluYXRpb24gaW50ZWxfYnVmIG9iamVjdAogICog QHg6IGRlc3RpbmF0aW9uIHBpeGVsIHgtY29vcmRpbmF0aW9uCiAgKiBAeTogZGVzdGluYXRpb24g cGl4ZWwgeS1jb29yZGluYXRpb24KICAqIEB3aWR0aDogd2lkdGggb2YgdGhlIGZpbGxlZCByZWN0 YW5nbGUKQEAgLTM4NSwyMyArMzg1LDE1IEBAIGlndF92ZWJveF9jb3B5ZnVuY190IGlndF9nZXRf dmVib3hfY29weWZ1bmMoaW50IGRldmlkKTsKICAqIEEgZmlsbCBmdW5jdGlvbiB3aWxsIGVtaXQg YSBiYXRjaGJ1ZmZlciB0byB0aGUga2VybmVsIHdoaWNoIGV4ZWN1dGVzCiAgKiB0aGUgc3BlY2lm aWVkIGJsaXQgZmlsbCBvcGVyYXRpb24gdXNpbmcgdGhlIG1lZGlhL2dwZ3B1IGVuZ2luZS4KICAq LwotdHlwZWRlZiB2b2lkICgqaWd0X2ZpbGxmdW5jX3QpKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZl ciAqYmF0Y2gsCi0JCQkgICAgICAgY29uc3Qgc3RydWN0IGlndF9idWYgKmRzdCwKK3N0cnVjdCBp bnRlbF9idWY7Cit0eXBlZGVmIHZvaWQgKCppZ3RfZmlsbGZ1bmNfdCkoaW50IGk5MTUsCisJCQkg ICAgICAgc3RydWN0IGludGVsX2J1ZiAqYnVmLAogCQkJICAgICAgIHVuc2lnbmVkIHgsIHVuc2ln bmVkIHksCiAJCQkgICAgICAgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwKIAkJCSAg ICAgICB1aW50OF90IGNvbG9yKTsKIAotc3RydWN0IGludGVsX2J1ZjsKLXR5cGVkZWYgdm9pZCAo KmlndF9maWxsZnVuY192Ml90KShpbnQgaTkxNSwKLQkJCQkgIHN0cnVjdCBpbnRlbF9idWYgKmJ1 ZiwKLQkJCQkgIHVuc2lnbmVkIHgsIHVuc2lnbmVkIHksCi0JCQkJICB1bnNpZ25lZCB3aWR0aCwg dW5zaWduZWQgaGVpZ2h0LAotCQkJCSAgdWludDhfdCBjb2xvcik7Ci0KLWlndF9maWxsZnVuY190 IGlndF9nZXRfbWVkaWFfZmlsbGZ1bmMoaW50IGRldmlkKTsKIGlndF9maWxsZnVuY190IGlndF9n ZXRfZ3BncHVfZmlsbGZ1bmMoaW50IGRldmlkKTsKLWlndF9maWxsZnVuY192Ml90IGlndF9nZXRf Z3BncHVfZmlsbGZ1bmNfdjIoaW50IGRldmlkKTsKLWlndF9maWxsZnVuY192Ml90IGlndF9nZXRf bWVkaWFfZmlsbGZ1bmNfdjIoaW50IGRldmlkKTsKK2lndF9maWxsZnVuY190IGlndF9nZXRfbWVk aWFfZmlsbGZ1bmMoaW50IGRldmlkKTsKIAogdHlwZWRlZiB2b2lkICgqaWd0X3ZtZV9mdW5jX3Qp KGludCBpOTE1LAogCQkJICAgICAgIHVpbnQzMl90IGN0eCwKZGlmZiAtLWdpdCBhL2xpYi9tZWRp YV9maWxsLmMgYi9saWIvbWVkaWFfZmlsbC5jCmluZGV4IDUzZDYzYjRiLi5jMjFkZTU0YiAxMDA2 NDQKLS0tIGEvbGliL21lZGlhX2ZpbGwuYworKysgYi9saWIvbWVkaWFfZmlsbC5jCkBAIC0xNDUs NTUgKzE0NSwxMSBAQCBzdGF0aWMgY29uc3QgdWludDMyX3QgZ2VuMTJfbWVkaWFfa2VybmVsW11b NF0gPSB7CiAjZGVmaW5lIEdFTjdfVkZFX1NUQVRFX01FRElBX01PREUgMAogCiB2b2lkCi1nZW43 X21lZGlhX2ZpbGxmdW5jKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCi0JCSAgICBj b25zdCBzdHJ1Y3QgaWd0X2J1ZiAqZHN0LAorZ2VuN19tZWRpYV9maWxsZnVuYyhpbnQgaTkxNSwK KwkJICAgIHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwKIAkJICAgIHVuc2lnbmVkIGludCB4LCB1bnNp Z25lZCBpbnQgeSwKIAkJICAgIHVuc2lnbmVkIGludCB3aWR0aCwgdW5zaWduZWQgaW50IGhlaWdo dCwKIAkJICAgIHVpbnQ4X3QgY29sb3IpCi17Ci0JdWludDMyX3QgY3VyYmVfYnVmZmVyLCBpbnRl cmZhY2VfZGVzY3JpcHRvcjsKLQl1aW50MzJfdCBiYXRjaF9lbmQ7Ci0KLQlpbnRlbF9iYXRjaGJ1 ZmZlcl9mbHVzaChiYXRjaCk7Ci0KLQkvKiBzZXR1cCBzdGF0ZXMgKi8KLQliYXRjaC0+cHRyID0g JmJhdGNoLT5idWZmZXJbQkFUQ0hfU1RBVEVfU1BMSVRdOwotCi0JY3VyYmVfYnVmZmVyID0gZ2Vu N19maWxsX2N1cmJlX2J1ZmZlcl9kYXRhKGJhdGNoLCBjb2xvcik7Ci0JaW50ZXJmYWNlX2Rlc2Ny aXB0b3IgPSBnZW43X2ZpbGxfaW50ZXJmYWNlX2Rlc2NyaXB0b3IoYmF0Y2gsIGRzdCwKLQkJCQkJ Z2VuN19tZWRpYV9rZXJuZWwsCi0JCQkJCXNpemVvZihnZW43X21lZGlhX2tlcm5lbCkpOwotCWln dF9hc3NlcnQoYmF0Y2gtPnB0ciA8ICZiYXRjaC0+YnVmZmVyWzQwOTVdKTsKLQotCS8qIG1lZGlh IHBpcGVsaW5lICovCi0JYmF0Y2gtPnB0ciA9IGJhdGNoLT5idWZmZXI7Ci0JT1VUX0JBVENIKEdF TjdfUElQRUxJTkVfU0VMRUNUIHwgUElQRUxJTkVfU0VMRUNUX01FRElBKTsKLQlnZW43X2VtaXRf c3RhdGVfYmFzZV9hZGRyZXNzKGJhdGNoKTsKLQotCWdlbjdfZW1pdF92ZmVfc3RhdGUoYmF0Y2gs IFRIUkVBRFMsIE1FRElBX1VSQl9FTlRSSUVTLCBNRURJQV9VUkJfU0laRSwKLQkJCSAgICBNRURJ QV9DVVJCRV9TSVpFLCBHRU43X1ZGRV9TVEFURV9NRURJQV9NT0RFKTs7Ci0KLQlnZW43X2VtaXRf Y3VyYmVfbG9hZChiYXRjaCwgY3VyYmVfYnVmZmVyKTsKLQotCWdlbjdfZW1pdF9pbnRlcmZhY2Vf ZGVzY3JpcHRvcl9sb2FkKGJhdGNoLCBpbnRlcmZhY2VfZGVzY3JpcHRvcik7Ci0KLQlnZW43X2Vt aXRfbWVkaWFfb2JqZWN0cyhiYXRjaCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7Ci0KLQlPVVRfQkFU Q0goTUlfQkFUQ0hfQlVGRkVSX0VORCk7Ci0KLQliYXRjaF9lbmQgPSBpbnRlbF9iYXRjaGJ1ZmZl cl9hbGlnbihiYXRjaCwgOCk7Ci0JaWd0X2Fzc2VydChiYXRjaF9lbmQgPCBCQVRDSF9TVEFURV9T UExJVCk7Ci0KLQlnZW43X3JlbmRlcl9mbHVzaChiYXRjaCwgYmF0Y2hfZW5kKTsKLQlpbnRlbF9i YXRjaGJ1ZmZlcl9yZXNldChiYXRjaCk7Ci19Ci0KLXZvaWQKLWdlbjdfbWVkaWFfZmlsbGZ1bmNf djIoaW50IGk5MTUsCi0JCSAgICAgICBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsCi0JCSAgICAgICB1 bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHksCi0JCSAgICAgICB1bnNpZ25lZCBpbnQgd2lk dGgsIHVuc2lnbmVkIGludCBoZWlnaHQsCi0JCSAgICAgICB1aW50OF90IGNvbG9yKQogewogCXN0 cnVjdCBpbnRlbF9iYiAqaWJiOwogCXVpbnQzMl90IGN1cmJlX2J1ZmZlciwgaW50ZXJmYWNlX2Rl c2NyaXB0b3I7CkBAIC0yMDMsMjQgKzE1OSwyNCBAQCBnZW43X21lZGlhX2ZpbGxmdW5jX3YyKGlu dCBpOTE1LAogCiAJaW50ZWxfYmJfcHRyX3NldChpYmIsIEJBVENIX1NUQVRFX1NQTElUKTsKIAot CWN1cmJlX2J1ZmZlciA9IGdlbjdfZmlsbF9jdXJiZV9idWZmZXJfZGF0YV92MihpYmIsIGNvbG9y KTsKLQlpbnRlcmZhY2VfZGVzY3JpcHRvciA9IGdlbjdfZmlsbF9pbnRlcmZhY2VfZGVzY3JpcHRv cl92MihpYmIsIGJ1ZiwKKwljdXJiZV9idWZmZXIgPSBnZW43X2ZpbGxfY3VyYmVfYnVmZmVyX2Rh dGEoaWJiLCBjb2xvcik7CisJaW50ZXJmYWNlX2Rlc2NyaXB0b3IgPSBnZW43X2ZpbGxfaW50ZXJm YWNlX2Rlc2NyaXB0b3IoaWJiLCBidWYsCiAJCQkJCWdlbjdfbWVkaWFfa2VybmVsLAogCQkJCQlz aXplb2YoZ2VuN19tZWRpYV9rZXJuZWwpKTsKIAlpbnRlbF9iYl9wdHJfc2V0KGliYiwgMCk7CiAK IAkvKiBtZWRpYSBwaXBlbGluZSAqLwogCWludGVsX2JiX291dChpYmIsIEdFTjdfUElQRUxJTkVf U0VMRUNUIHwgUElQRUxJTkVfU0VMRUNUX01FRElBKTsKLQlnZW43X2VtaXRfc3RhdGVfYmFzZV9h ZGRyZXNzX3YyKGliYik7CisJZ2VuN19lbWl0X3N0YXRlX2Jhc2VfYWRkcmVzcyhpYmIpOwogCi0J Z2VuN19lbWl0X3ZmZV9zdGF0ZV92MihpYmIsIFRIUkVBRFMsIE1FRElBX1VSQl9FTlRSSUVTLCBN RURJQV9VUkJfU0laRSwKLQkJCSAgICAgICBNRURJQV9DVVJCRV9TSVpFLCBHRU43X1ZGRV9TVEFU RV9NRURJQV9NT0RFKTsKKwlnZW43X2VtaXRfdmZlX3N0YXRlKGliYiwgVEhSRUFEUywgTUVESUFf VVJCX0VOVFJJRVMsIE1FRElBX1VSQl9TSVpFLAorCQkJICAgIE1FRElBX0NVUkJFX1NJWkUsIEdF TjdfVkZFX1NUQVRFX01FRElBX01PREUpOwogCi0JZ2VuN19lbWl0X2N1cmJlX2xvYWRfdjIoaWJi LCBjdXJiZV9idWZmZXIpOworCWdlbjdfZW1pdF9jdXJiZV9sb2FkKGliYiwgY3VyYmVfYnVmZmVy KTsKIAotCWdlbjdfZW1pdF9pbnRlcmZhY2VfZGVzY3JpcHRvcl9sb2FkX3YyKGliYiwgaW50ZXJm YWNlX2Rlc2NyaXB0b3IpOworCWdlbjdfZW1pdF9pbnRlcmZhY2VfZGVzY3JpcHRvcl9sb2FkKGli YiwgaW50ZXJmYWNlX2Rlc2NyaXB0b3IpOwogCi0JZ2VuN19lbWl0X21lZGlhX29iamVjdHNfdjIo aWJiLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKwlnZW43X2VtaXRfbWVkaWFfb2JqZWN0cyhpYmIs IHgsIHksIHdpZHRoLCBoZWlnaHQpOwogCiAJaW50ZWxfYmJfb3V0KGliYiwgTUlfQkFUQ0hfQlVG RkVSX0VORCk7CiAJaW50ZWxfYmJfcHRyX2FsaWduKGliYiwgMzIpOwpAQCAtMjMyLDU1ICsxODgs MTEgQEAgZ2VuN19tZWRpYV9maWxsZnVuY192MihpbnQgaTkxNSwKIH0KIAogdm9pZAotZ2VuOF9t ZWRpYV9maWxsZnVuYyhzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAotCQkgICAgY29u c3Qgc3RydWN0IGlndF9idWYgKmRzdCwKK2dlbjhfbWVkaWFfZmlsbGZ1bmMoaW50IGk5MTUsCisJ CSAgICBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsCiAJCSAgICB1bnNpZ25lZCBpbnQgeCwgdW5zaWdu ZWQgaW50IHksCiAJCSAgICB1bnNpZ25lZCBpbnQgd2lkdGgsIHVuc2lnbmVkIGludCBoZWlnaHQs CiAJCSAgICB1aW50OF90IGNvbG9yKQotewotCXVpbnQzMl90IGN1cmJlX2J1ZmZlciwgaW50ZXJm YWNlX2Rlc2NyaXB0b3I7Ci0JdWludDMyX3QgYmF0Y2hfZW5kOwotCi0JaW50ZWxfYmF0Y2hidWZm ZXJfZmx1c2goYmF0Y2gpOwotCi0JLyogc2V0dXAgc3RhdGVzICovCi0JYmF0Y2gtPnB0ciA9ICZi YXRjaC0+YnVmZmVyW0JBVENIX1NUQVRFX1NQTElUXTsKLQotCWN1cmJlX2J1ZmZlciA9IGdlbjdf ZmlsbF9jdXJiZV9idWZmZXJfZGF0YShiYXRjaCwgY29sb3IpOwotCWludGVyZmFjZV9kZXNjcmlw dG9yID0gZ2VuOF9maWxsX2ludGVyZmFjZV9kZXNjcmlwdG9yKGJhdGNoLCBkc3QsCi0JCQkJCWdl bjhfbWVkaWFfa2VybmVsLAotCQkJCQlzaXplb2YoZ2VuOF9tZWRpYV9rZXJuZWwpKTsKLQlpZ3Rf YXNzZXJ0KGJhdGNoLT5wdHIgPCAmYmF0Y2gtPmJ1ZmZlcls0MDk1XSk7Ci0KLQkvKiBtZWRpYSBw aXBlbGluZSAqLwotCWJhdGNoLT5wdHIgPSBiYXRjaC0+YnVmZmVyOwotCU9VVF9CQVRDSChHRU44 X1BJUEVMSU5FX1NFTEVDVCB8IFBJUEVMSU5FX1NFTEVDVF9NRURJQSk7Ci0JZ2VuOF9lbWl0X3N0 YXRlX2Jhc2VfYWRkcmVzcyhiYXRjaCk7Ci0KLQlnZW44X2VtaXRfdmZlX3N0YXRlKGJhdGNoLCBU SFJFQURTLCBNRURJQV9VUkJfRU5UUklFUywgTUVESUFfVVJCX1NJWkUsCi0JCQkgICAgTUVESUFf Q1VSQkVfU0laRSk7Ci0KLQlnZW43X2VtaXRfY3VyYmVfbG9hZChiYXRjaCwgY3VyYmVfYnVmZmVy KTsKLQotCWdlbjdfZW1pdF9pbnRlcmZhY2VfZGVzY3JpcHRvcl9sb2FkKGJhdGNoLCBpbnRlcmZh Y2VfZGVzY3JpcHRvcik7Ci0KLQlnZW43X2VtaXRfbWVkaWFfb2JqZWN0cyhiYXRjaCwgeCwgeSwg d2lkdGgsIGhlaWdodCk7Ci0KLQlPVVRfQkFUQ0goTUlfQkFUQ0hfQlVGRkVSX0VORCk7Ci0KLQli YXRjaF9lbmQgPSBpbnRlbF9iYXRjaGJ1ZmZlcl9hbGlnbihiYXRjaCwgOCk7Ci0JaWd0X2Fzc2Vy dChiYXRjaF9lbmQgPCBCQVRDSF9TVEFURV9TUExJVCk7Ci0KLQlnZW43X3JlbmRlcl9mbHVzaChi YXRjaCwgYmF0Y2hfZW5kKTsKLQlpbnRlbF9iYXRjaGJ1ZmZlcl9yZXNldChiYXRjaCk7Ci19Ci0K LXZvaWQKLWdlbjhfbWVkaWFfZmlsbGZ1bmNfdjIoaW50IGk5MTUsCi0JCSAgICAgICBzdHJ1Y3Qg aW50ZWxfYnVmICpidWYsCi0JCSAgICAgICB1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHks Ci0JCSAgICAgICB1bnNpZ25lZCBpbnQgd2lkdGgsIHVuc2lnbmVkIGludCBoZWlnaHQsCi0JCSAg ICAgICB1aW50OF90IGNvbG9yKQogewogCXN0cnVjdCBpbnRlbF9iYiAqaWJiOwogCXVpbnQzMl90 IGN1cmJlX2J1ZmZlciwgaW50ZXJmYWNlX2Rlc2NyaXB0b3I7CkBAIC0yOTAsMjQgKzIwMiwyNCBA QCBnZW44X21lZGlhX2ZpbGxmdW5jX3YyKGludCBpOTE1LAogCiAJaW50ZWxfYmJfcHRyX3NldChp YmIsIEJBVENIX1NUQVRFX1NQTElUKTsKIAotCWN1cmJlX2J1ZmZlciA9IGdlbjdfZmlsbF9jdXJi ZV9idWZmZXJfZGF0YV92MihpYmIsIGNvbG9yKTsKLQlpbnRlcmZhY2VfZGVzY3JpcHRvciA9IGdl bjhfZmlsbF9pbnRlcmZhY2VfZGVzY3JpcHRvcl92MihpYmIsIGJ1ZiwKKwljdXJiZV9idWZmZXIg PSBnZW43X2ZpbGxfY3VyYmVfYnVmZmVyX2RhdGEoaWJiLCBjb2xvcik7CisJaW50ZXJmYWNlX2Rl c2NyaXB0b3IgPSBnZW44X2ZpbGxfaW50ZXJmYWNlX2Rlc2NyaXB0b3IoaWJiLCBidWYsCiAJCQkJ CWdlbjhfbWVkaWFfa2VybmVsLAogCQkJCQlzaXplb2YoZ2VuOF9tZWRpYV9rZXJuZWwpKTsKIAlp bnRlbF9iYl9wdHJfc2V0KGliYiwgMCk7CiAKIAkvKiBtZWRpYSBwaXBlbGluZSAqLwogCWludGVs X2JiX291dChpYmIsIEdFTjhfUElQRUxJTkVfU0VMRUNUIHwgUElQRUxJTkVfU0VMRUNUX01FRElB KTsKLQlnZW44X2VtaXRfc3RhdGVfYmFzZV9hZGRyZXNzX3YyKGliYik7CisJZ2VuOF9lbWl0X3N0 YXRlX2Jhc2VfYWRkcmVzcyhpYmIpOwogCi0JZ2VuOF9lbWl0X3ZmZV9zdGF0ZV92MihpYmIsIFRI UkVBRFMsIE1FRElBX1VSQl9FTlRSSUVTLCBNRURJQV9VUkJfU0laRSwKLQkJCSAgICAgICBNRURJ QV9DVVJCRV9TSVpFKTsKKwlnZW44X2VtaXRfdmZlX3N0YXRlKGliYiwgVEhSRUFEUywgTUVESUFf VVJCX0VOVFJJRVMsIE1FRElBX1VSQl9TSVpFLAorCQkJICAgIE1FRElBX0NVUkJFX1NJWkUpOwog Ci0JZ2VuN19lbWl0X2N1cmJlX2xvYWRfdjIoaWJiLCBjdXJiZV9idWZmZXIpOworCWdlbjdfZW1p dF9jdXJiZV9sb2FkKGliYiwgY3VyYmVfYnVmZmVyKTsKIAotCWdlbjdfZW1pdF9pbnRlcmZhY2Vf ZGVzY3JpcHRvcl9sb2FkX3YyKGliYiwgaW50ZXJmYWNlX2Rlc2NyaXB0b3IpOworCWdlbjdfZW1p dF9pbnRlcmZhY2VfZGVzY3JpcHRvcl9sb2FkKGliYiwgaW50ZXJmYWNlX2Rlc2NyaXB0b3IpOwog Ci0JZ2VuN19lbWl0X21lZGlhX29iamVjdHNfdjIoaWJiLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsK KwlnZW43X2VtaXRfbWVkaWFfb2JqZWN0cyhpYmIsIHgsIHksIHdpZHRoLCBoZWlnaHQpOwogCiAJ aW50ZWxfYmJfb3V0KGliYiwgTUlfQkFUQ0hfQlVGRkVSX0VORCk7CiAJaW50ZWxfYmJfcHRyX2Fs aWduKGliYiwgMzIpOwpAQCAtMzE5LDgxICsyMzEsMTIgQEAgZ2VuOF9tZWRpYV9maWxsZnVuY192 MihpbnQgaTkxNSwKIH0KIAogc3RhdGljIHZvaWQKLV9fZ2VuOV9tZWRpYV9maWxsZnVuYyhzdHJ1 Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAotCQkgICAgICBjb25zdCBzdHJ1Y3QgaWd0X2J1 ZiAqZHN0LAorX19nZW45X21lZGlhX2ZpbGxmdW5jKGludCBpOTE1LAorCQkgICAgICBzdHJ1Y3Qg aW50ZWxfYnVmICpidWYsCiAJCSAgICAgIHVuc2lnbmVkIGludCB4LCB1bnNpZ25lZCBpbnQgeSwK IAkJICAgICAgdW5zaWduZWQgaW50IHdpZHRoLCB1bnNpZ25lZCBpbnQgaGVpZ2h0LAotCQkgICAg ICB1aW50OF90IGNvbG9yLCBjb25zdCB1aW50MzJfdCBrZXJuZWxbXVs0XSwKLQkJICAgICAgc2l6 ZV90IGtlcm5lbF9zaXplKQotewotCXVpbnQzMl90IGN1cmJlX2J1ZmZlciwgaW50ZXJmYWNlX2Rl c2NyaXB0b3I7Ci0JdWludDMyX3QgYmF0Y2hfZW5kOwotCi0JaW50ZWxfYmF0Y2hidWZmZXJfZmx1 c2goYmF0Y2gpOwotCi0JLyogc2V0dXAgc3RhdGVzICovCi0JYmF0Y2gtPnB0ciA9ICZiYXRjaC0+ YnVmZmVyW0JBVENIX1NUQVRFX1NQTElUXTsKLQotCWN1cmJlX2J1ZmZlciA9IGdlbjdfZmlsbF9j dXJiZV9idWZmZXJfZGF0YShiYXRjaCwgY29sb3IpOwotCWludGVyZmFjZV9kZXNjcmlwdG9yID0g Z2VuOF9maWxsX2ludGVyZmFjZV9kZXNjcmlwdG9yKGJhdGNoLCBkc3QsCi0JCQkJCWtlcm5lbCwg a2VybmVsX3NpemUpOwotCWFzc2VydChiYXRjaC0+cHRyIDwgJmJhdGNoLT5idWZmZXJbNDA5NV0p OwotCi0JLyogbWVkaWEgcGlwZWxpbmUgKi8KLQliYXRjaC0+cHRyID0gYmF0Y2gtPmJ1ZmZlcjsK LQlPVVRfQkFUQ0goR0VOOF9QSVBFTElORV9TRUxFQ1QgfCBQSVBFTElORV9TRUxFQ1RfTUVESUEg fAotCQkgIEdFTjlfRk9SQ0VfTUVESUFfQVdBS0VfRU5BQkxFIHwKLQkJICBHRU45X1NBTVBMRVJf RE9QX0dBVEVfRElTQUJMRSB8Ci0JCSAgR0VOOV9QSVBFTElORV9TRUxFQ1RJT05fTUFTSyB8Ci0J CSAgR0VOOV9TQU1QTEVSX0RPUF9HQVRFX01BU0sgfAotCQkgIEdFTjlfRk9SQ0VfTUVESUFfQVdB S0VfTUFTSyk7Ci0JZ2VuOV9lbWl0X3N0YXRlX2Jhc2VfYWRkcmVzcyhiYXRjaCk7Ci0KLQlnZW44 X2VtaXRfdmZlX3N0YXRlKGJhdGNoLCBUSFJFQURTLCBNRURJQV9VUkJfRU5UUklFUywgTUVESUFf VVJCX1NJWkUsCi0JCQkgICAgTUVESUFfQ1VSQkVfU0laRSk7Ci0KLQlnZW43X2VtaXRfY3VyYmVf bG9hZChiYXRjaCwgY3VyYmVfYnVmZmVyKTsKLQotCWdlbjdfZW1pdF9pbnRlcmZhY2VfZGVzY3Jp cHRvcl9sb2FkKGJhdGNoLCBpbnRlcmZhY2VfZGVzY3JpcHRvcik7Ci0KLQlnZW43X2VtaXRfbWVk aWFfb2JqZWN0cyhiYXRjaCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7Ci0KLQlPVVRfQkFUQ0goR0VO OF9QSVBFTElORV9TRUxFQ1QgfCBQSVBFTElORV9TRUxFQ1RfTUVESUEgfAotCQkgIEdFTjlfRk9S Q0VfTUVESUFfQVdBS0VfRElTQUJMRSB8Ci0JCSAgR0VOOV9TQU1QTEVSX0RPUF9HQVRFX0VOQUJM RSB8Ci0JCSAgR0VOOV9QSVBFTElORV9TRUxFQ1RJT05fTUFTSyB8Ci0JCSAgR0VOOV9TQU1QTEVS X0RPUF9HQVRFX01BU0sgfAotCQkgIEdFTjlfRk9SQ0VfTUVESUFfQVdBS0VfTUFTSyk7Ci0KLQlP VVRfQkFUQ0goTUlfQkFUQ0hfQlVGRkVSX0VORCk7Ci0KLQliYXRjaF9lbmQgPSBpbnRlbF9iYXRj aGJ1ZmZlcl9hbGlnbihiYXRjaCwgOCk7Ci0JYXNzZXJ0KGJhdGNoX2VuZCA8IEJBVENIX1NUQVRF X1NQTElUKTsKLQotCWdlbjdfcmVuZGVyX2ZsdXNoKGJhdGNoLCBiYXRjaF9lbmQpOwotCWludGVs X2JhdGNoYnVmZmVyX3Jlc2V0KGJhdGNoKTsKLX0KLQotdm9pZAotZ2VuOV9tZWRpYV9maWxsZnVu YyhzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAotCQkgICAgY29uc3Qgc3RydWN0IGln dF9idWYgKmRzdCwKLQkJICAgIHVuc2lnbmVkIGludCB4LCB1bnNpZ25lZCBpbnQgeSwKLQkJICAg IHVuc2lnbmVkIGludCB3aWR0aCwgdW5zaWduZWQgaW50IGhlaWdodCwKLQkJICAgIHVpbnQ4X3Qg Y29sb3IpCi17Ci0KLQlfX2dlbjlfbWVkaWFfZmlsbGZ1bmMoYmF0Y2gsIGRzdCwgeCwgeSwgd2lk dGgsIGhlaWdodCwgY29sb3IsCi0JCQkgICAgICBnZW44X21lZGlhX2tlcm5lbCwgc2l6ZW9mKGdl bjhfbWVkaWFfa2VybmVsKSk7Ci0KLX0KLQotc3RhdGljIHZvaWQKLV9fZ2VuOV9tZWRpYV9maWxs ZnVuY192MihpbnQgaTkxNSwKLQkJCSBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsCi0JCQkgdW5zaWdu ZWQgaW50IHgsIHVuc2lnbmVkIGludCB5LAotCQkJIHVuc2lnbmVkIGludCB3aWR0aCwgdW5zaWdu ZWQgaW50IGhlaWdodCwKLQkJCSB1aW50OF90IGNvbG9yLAotCQkJIGNvbnN0IHVpbnQzMl90IGtl cm5lbFtdWzRdLCBzaXplX3Qga2VybmVsX3NpemUpCisJCSAgICAgIHVpbnQ4X3QgY29sb3IsCisJ CSAgICAgIGNvbnN0IHVpbnQzMl90IGtlcm5lbFtdWzRdLCBzaXplX3Qga2VybmVsX3NpemUpCiB7 CiAJc3RydWN0IGludGVsX2JiICppYmI7CiAJdWludDMyX3QgY3VyYmVfYnVmZmVyLCBpbnRlcmZh Y2VfZGVzY3JpcHRvcjsKQEAgLTQwNCwxMCArMjQ3LDEwIEBAIF9fZ2VuOV9tZWRpYV9maWxsZnVu Y192MihpbnQgaTkxNSwKIAkvKiBzZXR1cCBzdGF0ZXMgKi8KIAlpbnRlbF9iYl9wdHJfc2V0KGli YiwgQkFUQ0hfU1RBVEVfU1BMSVQpOwogCi0JY3VyYmVfYnVmZmVyID0gZ2VuN19maWxsX2N1cmJl X2J1ZmZlcl9kYXRhX3YyKGliYiwgY29sb3IpOwotCWludGVyZmFjZV9kZXNjcmlwdG9yID0gZ2Vu OF9maWxsX2ludGVyZmFjZV9kZXNjcmlwdG9yX3YyKGliYiwgYnVmLAotCQkJCQkJCQkga2VybmVs LAotCQkJCQkJCQkga2VybmVsX3NpemUpOworCWN1cmJlX2J1ZmZlciA9IGdlbjdfZmlsbF9jdXJi ZV9idWZmZXJfZGF0YShpYmIsIGNvbG9yKTsKKwlpbnRlcmZhY2VfZGVzY3JpcHRvciA9IGdlbjhf ZmlsbF9pbnRlcmZhY2VfZGVzY3JpcHRvcihpYmIsIGJ1ZiwKKwkJCQkJCQkgICAgICBrZXJuZWws CisJCQkJCQkJICAgICAga2VybmVsX3NpemUpOwogCWludGVsX2JiX3B0cl9zZXQoaWJiLCAwKTsK IAogCS8qIG1lZGlhIHBpcGVsaW5lICovCkBAIC00MTcsMTYgKzI2MCwxNiBAQCBfX2dlbjlfbWVk aWFfZmlsbGZ1bmNfdjIoaW50IGk5MTUsCiAJCSAgICAgR0VOOV9QSVBFTElORV9TRUxFQ1RJT05f TUFTSyB8CiAJCSAgICAgR0VOOV9TQU1QTEVSX0RPUF9HQVRFX01BU0sgfAogCQkgICAgIEdFTjlf Rk9SQ0VfTUVESUFfQVdBS0VfTUFTSyk7Ci0JZ2VuOV9lbWl0X3N0YXRlX2Jhc2VfYWRkcmVzc192 MihpYmIpOworCWdlbjlfZW1pdF9zdGF0ZV9iYXNlX2FkZHJlc3MoaWJiKTsKIAotCWdlbjhfZW1p dF92ZmVfc3RhdGVfdjIoaWJiLCBUSFJFQURTLCBNRURJQV9VUkJfRU5UUklFUywgTUVESUFfVVJC X1NJWkUsCi0JCQkgICAgICAgTUVESUFfQ1VSQkVfU0laRSk7CisJZ2VuOF9lbWl0X3ZmZV9zdGF0 ZShpYmIsIFRIUkVBRFMsIE1FRElBX1VSQl9FTlRSSUVTLCBNRURJQV9VUkJfU0laRSwKKwkJCSAg ICBNRURJQV9DVVJCRV9TSVpFKTsKIAotCWdlbjdfZW1pdF9jdXJiZV9sb2FkX3YyKGliYiwgY3Vy YmVfYnVmZmVyKTsKKwlnZW43X2VtaXRfY3VyYmVfbG9hZChpYmIsIGN1cmJlX2J1ZmZlcik7CiAK LQlnZW43X2VtaXRfaW50ZXJmYWNlX2Rlc2NyaXB0b3JfbG9hZF92MihpYmIsIGludGVyZmFjZV9k ZXNjcmlwdG9yKTsKKwlnZW43X2VtaXRfaW50ZXJmYWNlX2Rlc2NyaXB0b3JfbG9hZChpYmIsIGlu dGVyZmFjZV9kZXNjcmlwdG9yKTsKIAotCWdlbjdfZW1pdF9tZWRpYV9vYmplY3RzX3YyKGliYiwg eCwgeSwgd2lkdGgsIGhlaWdodCk7CisJZ2VuN19lbWl0X21lZGlhX29iamVjdHMoaWJiLCB4LCB5 LCB3aWR0aCwgaGVpZ2h0KTsKIAogCWludGVsX2JiX291dChpYmIsIEdFTjhfUElQRUxJTkVfU0VM RUNUIHwgUElQRUxJTkVfU0VMRUNUX01FRElBIHwKIAkJICAgICBHRU45X0ZPUkNFX01FRElBX0FX QUtFX0RJU0FCTEUgfApAQCAtNDQ1LDE1ICsyODgsMTQgQEAgX19nZW45X21lZGlhX2ZpbGxmdW5j X3YyKGludCBpOTE1LAogfQogCiB2b2lkCi1nZW45X21lZGlhX2ZpbGxmdW5jX3YyKGludCBpOTE1 LAotCQkgICAgICAgc3RydWN0IGludGVsX2J1ZiAqYnVmLAotCQkgICAgICAgdW5zaWduZWQgaW50 IHgsIHVuc2lnbmVkIGludCB5LAotCQkgICAgICAgdW5zaWduZWQgaW50IHdpZHRoLCB1bnNpZ25l ZCBpbnQgaGVpZ2h0LAotCQkgICAgICAgdWludDhfdCBjb2xvcikKK2dlbjlfbWVkaWFfZmlsbGZ1 bmMoaW50IGk5MTUsCisJCSAgICBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsCisJCSAgICB1bnNpZ25l ZCBpbnQgeCwgdW5zaWduZWQgaW50IHksCisJCSAgICB1bnNpZ25lZCBpbnQgd2lkdGgsIHVuc2ln bmVkIGludCBoZWlnaHQsCisJCSAgICB1aW50OF90IGNvbG9yKQogewotCi0JX19nZW45X21lZGlh X2ZpbGxmdW5jX3YyKGk5MTUsIGJ1ZiwgeCwgeSwgd2lkdGgsIGhlaWdodCwgY29sb3IsCi0JCQkJ IGdlbjhfbWVkaWFfa2VybmVsLCBzaXplb2YoZ2VuOF9tZWRpYV9rZXJuZWwpKTsKKwlfX2dlbjlf bWVkaWFfZmlsbGZ1bmMoaTkxNSwgYnVmLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBjb2xvciwKKwkJ CSAgICAgIGdlbjhfbWVkaWFfa2VybmVsLCBzaXplb2YoZ2VuOF9tZWRpYV9rZXJuZWwpKTsKIH0K IAogc3RhdGljIHZvaWQKQEAgLTQ4OCwxNiArMzMwLDE2IEBAIF9fZ2VuMTFfbWVkaWFfdm1lX2Z1 bmMoaW50IGk5MTUsCiAJCSAgICAgR0VOOV9QSVBFTElORV9TRUxFQ1RJT05fTUFTSyB8CiAJCSAg ICAgR0VOOV9TQU1QTEVSX0RPUF9HQVRFX01BU0sgfAogCQkgICAgIEdFTjlfRk9SQ0VfTUVESUFf QVdBS0VfTUFTSyk7Ci0JZ2VuOV9lbWl0X3N0YXRlX2Jhc2VfYWRkcmVzc192MihpYmIpOworCWdl bjlfZW1pdF9zdGF0ZV9iYXNlX2FkZHJlc3MoaWJiKTsKIAotCWdlbjhfZW1pdF92ZmVfc3RhdGVf djIoaWJiLCBUSFJFQURTLCBNRURJQV9VUkJfRU5UUklFUywgTUVESUFfVVJCX1NJWkUsCisJZ2Vu OF9lbWl0X3ZmZV9zdGF0ZShpYmIsIFRIUkVBRFMsIE1FRElBX1VSQl9FTlRSSUVTLCBNRURJQV9V UkJfU0laRSwKIAkJCSAgICBNRURJQV9DVVJCRV9TSVpFKTsKIAotCWdlbjdfZW1pdF9jdXJiZV9s b2FkX3YyKGliYiwgY3VyYmVfYnVmZmVyKTsKKwlnZW43X2VtaXRfY3VyYmVfbG9hZChpYmIsIGN1 cmJlX2J1ZmZlcik7CiAKLQlnZW43X2VtaXRfaW50ZXJmYWNlX2Rlc2NyaXB0b3JfbG9hZF92Mihp YmIsIGludGVyZmFjZV9kZXNjcmlwdG9yKTsKKwlnZW43X2VtaXRfaW50ZXJmYWNlX2Rlc2NyaXB0 b3JfbG9hZChpYmIsIGludGVyZmFjZV9kZXNjcmlwdG9yKTsKIAotCWdlbjdfZW1pdF9tZWRpYV9v YmplY3RzX3YyKGliYiwgMCwgMCwgd2lkdGgsIGhlaWdodCk7CisJZ2VuN19lbWl0X21lZGlhX29i amVjdHMoaWJiLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKIAogCWludGVsX2JiX291dChpYmIsIEdF TjhfUElQRUxJTkVfU0VMRUNUIHwgUElQRUxJTkVfU0VMRUNUX01FRElBIHwKIAkJICAgICBHRU45 X0ZPUkNFX01FRElBX0FXQUtFX0RJU0FCTEUgfApAQCAtNTMxLDIzICszNzMsMTIgQEAgZ2VuMTFf bWVkaWFfdm1lX2Z1bmMoaW50IGk5MTUsCiB9CiAKIHZvaWQKLWdlbjEyX21lZGlhX2ZpbGxmdW5j KHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCi0JCSAgICAgY29uc3Qgc3RydWN0IGln dF9idWYgKmRzdCwKK2dlbjEyX21lZGlhX2ZpbGxmdW5jKGludCBpOTE1LAorCQkgICAgIHN0cnVj dCBpbnRlbF9idWYgKmJ1ZiwKIAkJICAgICB1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHks CiAJCSAgICAgdW5zaWduZWQgaW50IHdpZHRoLCB1bnNpZ25lZCBpbnQgaGVpZ2h0LAogCQkgICAg IHVpbnQ4X3QgY29sb3IpCiB7Ci0JX19nZW45X21lZGlhX2ZpbGxmdW5jKGJhdGNoLCBkc3QsIHgs IHksIHdpZHRoLCBoZWlnaHQsIGNvbG9yLAorCV9fZ2VuOV9tZWRpYV9maWxsZnVuYyhpOTE1LCBi dWYsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGNvbG9yLAogCQkJICAgICAgZ2VuMTJfbWVkaWFfa2Vy bmVsLCBzaXplb2YoZ2VuMTJfbWVkaWFfa2VybmVsKSk7CiB9Ci0KLXZvaWQKLWdlbjEyX21lZGlh X2ZpbGxmdW5jX3YyKGludCBpOTE1LAotCQkJc3RydWN0IGludGVsX2J1ZiAqYnVmLAotCQkJdW5z aWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5LAotCQkJdW5zaWduZWQgaW50IHdpZHRoLCB1bnNp Z25lZCBpbnQgaGVpZ2h0LAotCQkJdWludDhfdCBjb2xvcikKLXsKLQlfX2dlbjlfbWVkaWFfZmls bGZ1bmNfdjIoaTkxNSwgYnVmLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBjb2xvciwKLQkJCQkgZ2Vu MTJfbWVkaWFfa2VybmVsLCBzaXplb2YoZ2VuMTJfbWVkaWFfa2VybmVsKSk7Ci19CmRpZmYgLS1n aXQgYS9saWIvbWVkaWFfZmlsbC5oIGIvbGliL21lZGlhX2ZpbGwuaAppbmRleCA4NTFhOTkxNS4u MGQyZDBkYjMgMTAwNjQ0Ci0tLSBhL2xpYi9tZWRpYV9maWxsLmgKKysrIGIvbGliL21lZGlhX2Zp bGwuaApAQCAtMjYsNTEgKzI2LDI5IEBACiAjZGVmaW5lIFJFTkRFX01FRElBX0ZJTExfSAogCiAj aW5jbHVkZSA8c3RkaW50Lmg+Ci0jaW5jbHVkZSAiaW50ZWxfYmF0Y2hidWZmZXIuaCIKICNpbmNs dWRlICJpbnRlbF9idWZvcHMuaCIKIAogdm9pZAotZ2VuOF9tZWRpYV9maWxsZnVuYyhzdHJ1Y3Qg aW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAotCQkgICAgY29uc3Qgc3RydWN0IGlndF9idWYgKmRz dCwKK2dlbjdfbWVkaWFfZmlsbGZ1bmMoaW50IGk5MTUsCisJCSAgICBzdHJ1Y3QgaW50ZWxfYnVm ICpidWYsCiAJCSAgICB1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHksCiAJCSAgICB1bnNp Z25lZCBpbnQgd2lkdGgsIHVuc2lnbmVkIGludCBoZWlnaHQsCiAJCSAgICB1aW50OF90IGNvbG9y KTsKIAogdm9pZAotZ2VuN19tZWRpYV9maWxsZnVuYyhzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIg KmJhdGNoLAotCQkgICAgY29uc3Qgc3RydWN0IGlndF9idWYgKmRzdCwKK2dlbjhfbWVkaWFfZmls bGZ1bmMoaW50IGk5MTUsCisJCSAgICBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsCiAJCSAgICB1bnNp Z25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHksCiAJCSAgICB1bnNpZ25lZCBpbnQgd2lkdGgsIHVu c2lnbmVkIGludCBoZWlnaHQsCiAJCSAgICB1aW50OF90IGNvbG9yKTsKIAogdm9pZAotZ2VuN19t ZWRpYV9maWxsZnVuY192MihpbnQgaTkxNSwKLQkJICAgICAgIHN0cnVjdCBpbnRlbF9idWYgKmJ1 ZiwKLQkJICAgICAgIHVuc2lnbmVkIGludCB4LCB1bnNpZ25lZCBpbnQgeSwKLQkJICAgICAgIHVu c2lnbmVkIGludCB3aWR0aCwgdW5zaWduZWQgaW50IGhlaWdodCwKLQkJICAgICAgIHVpbnQ4X3Qg Y29sb3IpOwotCi12b2lkCi1nZW44X21lZGlhX2ZpbGxmdW5jX3YyKGludCBpOTE1LAotCQkgICAg ICAgc3RydWN0IGludGVsX2J1ZiAqYnVmLAotCQkgICAgICAgdW5zaWduZWQgaW50IHgsIHVuc2ln bmVkIGludCB5LAotCQkgICAgICAgdW5zaWduZWQgaW50IHdpZHRoLCB1bnNpZ25lZCBpbnQgaGVp Z2h0LAotCQkgICAgICAgdWludDhfdCBjb2xvcik7Ci0KLXZvaWQKLWdlbjlfbWVkaWFfZmlsbGZ1 bmMoc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwKLQkJICAgIGNvbnN0IHN0cnVjdCBp Z3RfYnVmICpkc3QsCitnZW45X21lZGlhX2ZpbGxmdW5jKGludCBpOTE1LAorCQkgICAgc3RydWN0 IGludGVsX2J1ZiAqYnVmLAogCQkgICAgdW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5LAog CQkgICAgdW5zaWduZWQgaW50IHdpZHRoLCB1bnNpZ25lZCBpbnQgaGVpZ2h0LAogCQkgICAgdWlu dDhfdCBjb2xvcik7CiAKLXZvaWQKLWdlbjlfbWVkaWFfZmlsbGZ1bmNfdjIoaW50IGk5MTUsCi0J CSAgICAgICBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsCi0JCSAgICAgICB1bnNpZ25lZCBpbnQgeCwg dW5zaWduZWQgaW50IHksCi0JCSAgICAgICB1bnNpZ25lZCBpbnQgd2lkdGgsIHVuc2lnbmVkIGlu dCBoZWlnaHQsCi0JCSAgICAgICB1aW50OF90IGNvbG9yKTsKLQogdm9pZAogZ2VuMTFfbWVkaWFf dm1lX2Z1bmMoaW50IGk5MTUsCiAJCSAgICAgdWludDMyX3QgY3R4LApAQCAtNzksMTcgKzU3LDEw IEBAIGdlbjExX21lZGlhX3ZtZV9mdW5jKGludCBpOTE1LAogCQkgICAgIHN0cnVjdCBpbnRlbF9i dWYgKmRzdCk7CiAKIHZvaWQKLWdlbjEyX21lZGlhX2ZpbGxmdW5jKHN0cnVjdCBpbnRlbF9iYXRj aGJ1ZmZlciAqYmF0Y2gsCi0JCSAgICAgY29uc3Qgc3RydWN0IGlndF9idWYgKmRzdCwKK2dlbjEy X21lZGlhX2ZpbGxmdW5jKGludCBpOTE1LAorCQkgICAgIHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwK IAkJICAgICB1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHksCiAJCSAgICAgdW5zaWduZWQg aW50IHdpZHRoLCB1bnNpZ25lZCBpbnQgaGVpZ2h0LAogCQkgICAgIHVpbnQ4X3QgY29sb3IpOwog Ci12b2lkCi1nZW4xMl9tZWRpYV9maWxsZnVuY192MihpbnQgaTkxNSwKLQkJCXN0cnVjdCBpbnRl bF9idWYgKmJ1ZiwKLQkJCXVuc2lnbmVkIGludCB4LCB1bnNpZ25lZCBpbnQgeSwKLQkJCXVuc2ln bmVkIGludCB3aWR0aCwgdW5zaWduZWQgaW50IGhlaWdodCwKLQkJCXVpbnQ4X3QgY29sb3IpOwot CiAjZW5kaWYgLyogUkVOREVfTUVESUFfRklMTF9IICovCmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1 L2dlbV9ncGdwdV9maWxsLmMgYi90ZXN0cy9pOTE1L2dlbV9ncGdwdV9maWxsLmMKaW5kZXggMzk5 MTdkOTQuLmUxZDNhMjg4IDEwMDY0NAotLS0gYS90ZXN0cy9pOTE1L2dlbV9ncGdwdV9maWxsLmMK KysrIGIvdGVzdHMvaTkxNS9nZW1fZ3BncHVfZmlsbC5jCkBAIC00NSw3ICs0NSw2IEBACiAjaW5j bHVkZSAiZHJtLmgiCiAjaW5jbHVkZSAiaTkxNS9nZW0uaCIKICNpbmNsdWRlICJpZ3QuaCIKLSNp bmNsdWRlICJpbnRlbF9idWZtZ3IuaCIKICNpbmNsdWRlICJpbnRlbF9idWZvcHMuaCIKIAogI2Rl ZmluZSBXSURUSCA2NApAQCAtNTksMzIgKzU4LDkgQEAKIHR5cGVkZWYgc3RydWN0IHsKIAlpbnQg ZHJtX2ZkOwogCXVpbnQzMl90IGRldmlkOwotCWRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1ncjsKLQl1 aW50OF90IGxpbmVhcltXSURUSCAqIEhFSUdIVF07CiAJc3RydWN0IGJ1Zl9vcHMgKmJvcHM7CiB9 IGRhdGFfdDsKIAotc3RhdGljIHZvaWQgc2NyYXRjaF9idWZfaW5pdChkYXRhX3QgKmRhdGEsIHN0 cnVjdCBpZ3RfYnVmICpidWYsCi0JCQlpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBzdHJpZGUs IHVpbnQ4X3QgY29sb3IpCi17Ci0JZHJtX2ludGVsX2JvICpibzsKLQlpbnQgaTsKLQotCWJvID0g ZHJtX2ludGVsX2JvX2FsbG9jKGRhdGEtPmJ1Zm1nciwgIiIsIFNJWkUsIDQwOTYpOwotCWZvciAo aSA9IDA7IGkgPCB3aWR0aCAqIGhlaWdodDsgaSsrKQotCQlkYXRhLT5saW5lYXJbaV0gPSBjb2xv cjsKLQlnZW1fd3JpdGUoZGF0YS0+ZHJtX2ZkLCBiby0+aGFuZGxlLCAwLCBkYXRhLT5saW5lYXIs Ci0JCXNpemVvZihkYXRhLT5saW5lYXIpKTsKLQotCW1lbXNldChidWYsIDAsIHNpemVvZigqYnVm KSk7Ci0KLQlidWYtPmJvID0gYm87Ci0JYnVmLT5zdXJmYWNlWzBdLnN0cmlkZSA9IHN0cmlkZTsK LQlidWYtPnRpbGluZyA9IEk5MTVfVElMSU5HX05PTkU7Ci0JYnVmLT5zdXJmYWNlWzBdLnNpemUg PSBTSVpFOwotCWJ1Zi0+YnBwID0gMzI7Ci19Ci0KIHN0YXRpYyBzdHJ1Y3QgaW50ZWxfYnVmICoK IGNyZWF0ZV9idWYoZGF0YV90ICpkYXRhLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVpbnQ4X3Qg Y29sb3IpCiB7CkBAIC0xMTMsMjAgKzg5LDYgQEAgY3JlYXRlX2J1ZihkYXRhX3QgKmRhdGEsIGlu dCB3aWR0aCwgaW50IGhlaWdodCwgdWludDhfdCBjb2xvcikKIAlyZXR1cm4gYnVmOwogfQogCi1z dGF0aWMgdm9pZAotc2NyYXRjaF9idWZfY2hlY2soZGF0YV90ICpkYXRhLCBzdHJ1Y3QgaWd0X2J1 ZiAqYnVmLCBpbnQgeCwgaW50IHksCi0JCXVpbnQ4X3QgY29sb3IpCi17Ci0JdWludDhfdCB2YWw7 Ci0KLQlnZW1fcmVhZChkYXRhLT5kcm1fZmQsIGJ1Zi0+Ym8tPmhhbmRsZSwgMCwKLQkJZGF0YS0+ bGluZWFyLCBzaXplb2YoZGF0YS0+bGluZWFyKSk7Ci0JdmFsID0gZGF0YS0+bGluZWFyW3kgKiBX SURUSCArIHhdOwotCWlndF9hc3NlcnRfZih2YWwgPT0gY29sb3IsCi0JCSAgICAgIkV4cGVjdGVk IDB4JTAyeCwgZm91bmQgMHglMDJ4IGF0ICglZCwlZClcbiIsCi0JCSAgICAgY29sb3IsIHZhbCwg eCwgeSk7Ci19Ci0KIHN0YXRpYyB2b2lkIGJ1Zl9jaGVjayh1aW50OF90ICpwdHIsIGludCB4LCBp bnQgeSwgdWludDhfdCBjb2xvcikKIHsKIAl1aW50OF90IHZhbDsKQEAgLTEzNyw3ICs5OSw3IEBA IHN0YXRpYyB2b2lkIGJ1Zl9jaGVjayh1aW50OF90ICpwdHIsIGludCB4LCBpbnQgeSwgdWludDhf dCBjb2xvcikKIAkJICAgICBjb2xvciwgdmFsLCB4LCB5KTsKIH0KIAotc3RhdGljIHZvaWQgbm9f bGliZHJtKGRhdGFfdCAqZGF0YSwgaWd0X2ZpbGxmdW5jX3YyX3QgZmlsbCkKK3N0YXRpYyB2b2lk IGdwZ3B1X2ZpbGwoZGF0YV90ICpkYXRhLCBpZ3RfZmlsbGZ1bmNfdCBmaWxsKQogewogCXN0cnVj dCBpbnRlbF9idWYgKmJ1ZjsKIAl1aW50OF90ICpwdHI7CkBAIC0xNjIsNTQgKzEyNCwxOSBAQCBz dGF0aWMgdm9pZCBub19saWJkcm0oZGF0YV90ICpkYXRhLCBpZ3RfZmlsbGZ1bmNfdjJfdCBmaWxs KQogCW11bm1hcChwdHIsIGJ1Zi0+c2l6ZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHdpdGhfbGliZHJt KGRhdGFfdCAqZGF0YSwgaWd0X2ZpbGxmdW5jX3QgZmlsbCkKLXsKLQlzdHJ1Y3QgaW50ZWxfYmF0 Y2hidWZmZXIgKmJhdGNoID0gTlVMTDsKLQlzdHJ1Y3QgaWd0X2J1ZiBkc3Q7Ci0JaW50IGksIGo7 Ci0KLQliYXRjaCA9IGludGVsX2JhdGNoYnVmZmVyX2FsbG9jKGRhdGEtPmJ1Zm1nciwgZGF0YS0+ ZGV2aWQpOwotCWlndF9hc3NlcnQoYmF0Y2gpOwotCi0Jc2NyYXRjaF9idWZfaW5pdChkYXRhLCAm ZHN0LCBXSURUSCwgSEVJR0hULCBTVFJJREUsIENPTE9SX0M0KTsKLQotCWZvciAoaSA9IDA7IGkg PCBXSURUSDsgaSsrKQotCQlmb3IgKGogPSAwOyBqIDwgSEVJR0hUOyBqKyspCi0JCQlzY3JhdGNo X2J1Zl9jaGVjayhkYXRhLCAmZHN0LCBpLCBqLCBDT0xPUl9DNCk7Ci0KLQlmaWxsKGJhdGNoLCAm ZHN0LCAwLCAwLCBXSURUSCAvIDIsIEhFSUdIVCAvIDIsIENPTE9SXzRDKTsKLQotCWZvciAoaSA9 IDA7IGkgPCBXSURUSDsgaSsrKQotCQlmb3IgKGogPSAwOyBqIDwgSEVJR0hUOyBqKyspCi0JCQlp ZiAoaSA8IFdJRFRIIC8gMiAmJiBqIDwgSEVJR0hUIC8gMikKLQkJCQlzY3JhdGNoX2J1Zl9jaGVj ayhkYXRhLCAmZHN0LCBpLCBqLCBDT0xPUl80Qyk7Ci0JCQllbHNlCi0JCQkJc2NyYXRjaF9idWZf Y2hlY2soZGF0YSwgJmRzdCwgaSwgaiwgQ09MT1JfQzQpOwotCi19Ci0KIGlndF9zaW1wbGVfbWFp bgogewogCWRhdGFfdCBkYXRhID0gezAsIH07Ci0JaWd0X2ZpbGxmdW5jX3QgZ3BncHVfZmlsbCA9 IE5VTEw7Ci0JaWd0X2ZpbGxmdW5jX3YyX3QgZ3BncHVfZmlsbF92MiA9IE5VTEw7CisJaWd0X2Zp bGxmdW5jX3QgZmlsbF9mbiA9IE5VTEw7CiAKIAlkYXRhLmRybV9mZCA9IGRybV9vcGVuX2RyaXZl cl9yZW5kZXIoRFJJVkVSX0lOVEVMKTsKIAlkYXRhLmRldmlkID0gaW50ZWxfZ2V0X2RybV9kZXZp ZChkYXRhLmRybV9mZCk7CiAJaWd0X3JlcXVpcmVfZ2VtKGRhdGEuZHJtX2ZkKTsKIAlkYXRhLmJv cHMgPSBidWZfb3BzX2NyZWF0ZShkYXRhLmRybV9mZCk7CiAKLQlkYXRhLmJ1Zm1nciA9IGRybV9p bnRlbF9idWZtZ3JfZ2VtX2luaXQoZGF0YS5kcm1fZmQsIDQwOTYpOwotCWlndF9hc3NlcnQoZGF0 YS5idWZtZ3IpOwotCi0JZ3BncHVfZmlsbCA9IGlndF9nZXRfZ3BncHVfZmlsbGZ1bmMoZGF0YS5k ZXZpZCk7Ci0JZ3BncHVfZmlsbF92MiA9IGlndF9nZXRfZ3BncHVfZmlsbGZ1bmNfdjIoZGF0YS5k ZXZpZCk7CisJZmlsbF9mbiA9IGlndF9nZXRfZ3BncHVfZmlsbGZ1bmMoZGF0YS5kZXZpZCk7CiAK LQlpZ3RfcmVxdWlyZV9mKGdwZ3B1X2ZpbGwgfHwgZ3BncHVfZmlsbF92MiwKLQkJICAgICAgIm5v IGdwZ3B1LWZpbGwgZnVuY3Rpb25cbiIpOworCWlndF9yZXF1aXJlX2YoZmlsbF9mbiwgIm5vIGdw Z3B1LWZpbGwgZnVuY3Rpb25cbiIpOwogCi0JaWYgKGdwZ3B1X2ZpbGxfdjIpCi0JCW5vX2xpYmRy bSgmZGF0YSwgZ3BncHVfZmlsbF92Mik7Ci0JZWxzZQotCQl3aXRoX2xpYmRybSgmZGF0YSwgZ3Bn cHVfZmlsbCk7CisJZ3BncHVfZmlsbCgmZGF0YSwgZmlsbF9mbik7CiB9CmRpZmYgLS1naXQgYS90 ZXN0cy9pOTE1L2dlbV9tZWRpYV9maWxsLmMgYi90ZXN0cy9pOTE1L2dlbV9tZWRpYV9maWxsLmMK aW5kZXggN2M5NzU1NzcuLjkzNGE5NDAyIDEwMDY0NAotLS0gYS90ZXN0cy9pOTE1L2dlbV9tZWRp YV9maWxsLmMKKysrIGIvdGVzdHMvaTkxNS9nZW1fbWVkaWFfZmlsbC5jCkBAIC00NSw3ICs0NSw2 IEBACiAjaW5jbHVkZSAiZHJtLmgiCiAjaW5jbHVkZSAiaTkxNS9nZW0uaCIKICNpbmNsdWRlICJp Z3QuaCIKLSNpbmNsdWRlICJpbnRlbF9idWZtZ3IuaCIKIAogSUdUX1RFU1RfREVTQ1JJUFRJT04o IkJhc2ljIHRlc3QgZm9yIHRoZSBtZWRpYV9maWxsKCkgZnVuY3Rpb24sIGEgdmVyeSBzaW1wbGUi CiAJCSAgICAgIiB3b3JrbG9hZCBmb3IgdGhlIE1lZGlhIHBpcGVsaW5lLiIpOwpAQCAtNjEsMzIg KzYwLDkgQEAgSUdUX1RFU1RfREVTQ1JJUFRJT04oIkJhc2ljIHRlc3QgZm9yIHRoZSBtZWRpYV9m aWxsKCkgZnVuY3Rpb24sIGEgdmVyeSBzaW1wbGUiCiB0eXBlZGVmIHN0cnVjdCB7CiAJaW50IGRy bV9mZDsKIAl1aW50MzJfdCBkZXZpZDsKLQlkcm1faW50ZWxfYnVmbWdyICpidWZtZ3I7Ci0JdWlu dDhfdCBsaW5lYXJbV0lEVEggKiBIRUlHSFRdOwogCXN0cnVjdCBidWZfb3BzICpib3BzOwogfSBk YXRhX3Q7CiAKLXN0YXRpYyB2b2lkIHNjcmF0Y2hfYnVmX2luaXQoZGF0YV90ICpkYXRhLCBzdHJ1 Y3QgaWd0X2J1ZiAqYnVmLAotCQkJaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgc3RyaWRlLCB1 aW50OF90IGNvbG9yKQotewotCWRybV9pbnRlbF9ibyAqYm87Ci0JaW50IGk7Ci0KLQlibyA9IGRy bV9pbnRlbF9ib19hbGxvYyhkYXRhLT5idWZtZ3IsICIiLCBTSVpFLCA0MDk2KTsKLQlmb3IgKGkg PSAwOyBpIDwgd2lkdGggKiBoZWlnaHQ7IGkrKykKLQkJZGF0YS0+bGluZWFyW2ldID0gY29sb3I7 Ci0JZ2VtX3dyaXRlKGRhdGEtPmRybV9mZCwgYm8tPmhhbmRsZSwgMCwgZGF0YS0+bGluZWFyLAot CQlzaXplb2YoZGF0YS0+bGluZWFyKSk7Ci0KLQltZW1zZXQoYnVmLCAwLCBzaXplb2YoKmJ1Zikp OwotCi0JYnVmLT5ibyA9IGJvOwotCWJ1Zi0+c3VyZmFjZVswXS5zdHJpZGUgPSBzdHJpZGU7Ci0J YnVmLT50aWxpbmcgPSBJOTE1X1RJTElOR19OT05FOwotCWJ1Zi0+c3VyZmFjZVswXS5zaXplID0g U0laRTsKLQlidWYtPmJwcCA9IDMyOwotfQotCiBzdGF0aWMgc3RydWN0IGludGVsX2J1ZiAqCiBj cmVhdGVfYnVmKGRhdGFfdCAqZGF0YSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1aW50OF90IGNv bG9yKQogewpAQCAtMTE1LDIwICs5MSw2IEBAIGNyZWF0ZV9idWYoZGF0YV90ICpkYXRhLCBpbnQg d2lkdGgsIGludCBoZWlnaHQsIHVpbnQ4X3QgY29sb3IpCiAJcmV0dXJuIGJ1ZjsKIH0KIAotc3Rh dGljIHZvaWQKLXNjcmF0Y2hfYnVmX2NoZWNrKGRhdGFfdCAqZGF0YSwgc3RydWN0IGlndF9idWYg KmJ1ZiwgaW50IHgsIGludCB5LAotCQl1aW50OF90IGNvbG9yKQotewotCXVpbnQ4X3QgdmFsOwot Ci0JZ2VtX3JlYWQoZGF0YS0+ZHJtX2ZkLCBidWYtPmJvLT5oYW5kbGUsIDAsCi0JCWRhdGEtPmxp bmVhciwgc2l6ZW9mKGRhdGEtPmxpbmVhcikpOwotCXZhbCA9IGRhdGEtPmxpbmVhclt5ICogV0lE VEggKyB4XTsKLQlpZ3RfYXNzZXJ0X2YodmFsID09IGNvbG9yLAotCQkgICAgICJFeHBlY3RlZCAw eCUwMngsIGZvdW5kIDB4JTAyeCBhdCAoJWQsJWQpXG4iLAotCQkgICAgIGNvbG9yLCB2YWwsIHgs IHkpOwotfQotCiBzdGF0aWMgdm9pZCBidWZfY2hlY2sodWludDhfdCAqcHRyLCBpbnQgeCwgaW50 IHksIHVpbnQ4X3QgY29sb3IpCiB7CiAJdWludDhfdCB2YWw7CkBAIC0xMzksNyArMTAxLDcgQEAg c3RhdGljIHZvaWQgYnVmX2NoZWNrKHVpbnQ4X3QgKnB0ciwgaW50IHgsIGludCB5LCB1aW50OF90 IGNvbG9yKQogCQkgICAgIGNvbG9yLCB2YWwsIHgsIHkpOwogfQogCi1zdGF0aWMgdm9pZCBub19s aWJkcm0oZGF0YV90ICpkYXRhLCBpZ3RfZmlsbGZ1bmNfdjJfdCBmaWxsKQorc3RhdGljIHZvaWQg bWVkaWFfZmlsbChkYXRhX3QgKmRhdGEsIGlndF9maWxsZnVuY190IGZpbGwpCiB7CiAJc3RydWN0 IGludGVsX2J1ZiAqYnVmOwogCXVpbnQ4X3QgKnB0cjsKQEAgLTE2NCwzNyArMTI2LDEwIEBAIHN0 YXRpYyB2b2lkIG5vX2xpYmRybShkYXRhX3QgKmRhdGEsIGlndF9maWxsZnVuY192Ml90IGZpbGwp CiAJbXVubWFwKHB0ciwgYnVmLT5zaXplKTsKIH0KIAotc3RhdGljIHZvaWQgd2l0aF9saWJkcm0o ZGF0YV90ICpkYXRhLCBpZ3RfZmlsbGZ1bmNfdCBmaWxsKQotewotCXN0cnVjdCBpbnRlbF9iYXRj aGJ1ZmZlciAqYmF0Y2ggPSBOVUxMOwotCXN0cnVjdCBpZ3RfYnVmIGRzdDsKLQlpbnQgaSwgajsK LQotCWJhdGNoID0gaW50ZWxfYmF0Y2hidWZmZXJfYWxsb2MoZGF0YS0+YnVmbWdyLCBkYXRhLT5k ZXZpZCk7Ci0JaWd0X2Fzc2VydChiYXRjaCk7Ci0KLQlzY3JhdGNoX2J1Zl9pbml0KGRhdGEsICZk c3QsIFdJRFRILCBIRUlHSFQsIFNUUklERSwgQ09MT1JfQzQpOwotCi0JZm9yIChpID0gMDsgaSA8 IFdJRFRIOyBpKyspCi0JCWZvciAoaiA9IDA7IGogPCBIRUlHSFQ7IGorKykKLQkJCXNjcmF0Y2hf YnVmX2NoZWNrKGRhdGEsICZkc3QsIGksIGosIENPTE9SX0M0KTsKLQotCWZpbGwoYmF0Y2gsICZk c3QsIDAsIDAsIFdJRFRIIC8gMiwgSEVJR0hUIC8gMiwgQ09MT1JfNEMpOwotCi0JZm9yIChpID0g MDsgaSA8IFdJRFRIOyBpKyspCi0JCWZvciAoaiA9IDA7IGogPCBIRUlHSFQ7IGorKykKLQkJCWlm IChpIDwgV0lEVEggLyAyICYmIGogPCBIRUlHSFQgLyAyKQotCQkJCXNjcmF0Y2hfYnVmX2NoZWNr KGRhdGEsICZkc3QsIGksIGosIENPTE9SXzRDKTsKLQkJCWVsc2UKLQkJCQlzY3JhdGNoX2J1Zl9j aGVjayhkYXRhLCAmZHN0LCBpLCBqLCBDT0xPUl9DNCk7Ci0KLX0KLQogaWd0X3NpbXBsZV9tYWlu CiB7CiAJZGF0YV90IGRhdGEgPSB7MCwgfTsKLQlpZ3RfZmlsbGZ1bmNfdCBtZWRpYV9maWxsID0g TlVMTDsKLQlpZ3RfZmlsbGZ1bmNfdjJfdCBtZWRpYV9maWxsX3YyID0gTlVMTDsKKwlpZ3RfZmls bGZ1bmNfdCBmaWxsX2ZuID0gTlVMTDsKIAogCWRhdGEuZHJtX2ZkID0gZHJtX29wZW5fZHJpdmVy X3JlbmRlcihEUklWRVJfSU5URUwpOwogCWlndF9yZXF1aXJlX2dlbShkYXRhLmRybV9mZCk7CkBA IC0yMDIsMTcgKzEzNyw5IEBAIGlndF9zaW1wbGVfbWFpbgogCWRhdGEuZGV2aWQgPSBpbnRlbF9n ZXRfZHJtX2RldmlkKGRhdGEuZHJtX2ZkKTsKIAlkYXRhLmJvcHMgPSBidWZfb3BzX2NyZWF0ZShk YXRhLmRybV9mZCk7CiAKLQlkYXRhLmJ1Zm1nciA9IGRybV9pbnRlbF9idWZtZ3JfZ2VtX2luaXQo ZGF0YS5kcm1fZmQsIDQwOTYpOwotCWlndF9hc3NlcnQoZGF0YS5idWZtZ3IpOwotCi0JbWVkaWFf ZmlsbCA9IGlndF9nZXRfbWVkaWFfZmlsbGZ1bmMoZGF0YS5kZXZpZCk7Ci0JbWVkaWFfZmlsbF92 MiA9IGlndF9nZXRfbWVkaWFfZmlsbGZ1bmNfdjIoZGF0YS5kZXZpZCk7CisJZmlsbF9mbiA9IGln dF9nZXRfbWVkaWFfZmlsbGZ1bmMoZGF0YS5kZXZpZCk7CiAKLQlpZ3RfcmVxdWlyZV9mKG1lZGlh X2ZpbGwgfHwgbWVkaWFfZmlsbF92MiwKLQkJICAgICAgIm5vIG1lZGlhLWZpbGwgZnVuY3Rpb25c biIpOworCWlndF9yZXF1aXJlX2YoZmlsbF9mbiwgIm5vIG1lZGlhLWZpbGwgZnVuY3Rpb25cbiIp OwogCi0JaWYgKG1lZGlhX2ZpbGxfdjIpCi0JCW5vX2xpYmRybSgmZGF0YSwgbWVkaWFfZmlsbF92 Mik7Ci0JZWxzZQotCQl3aXRoX2xpYmRybSgmZGF0YSwgbWVkaWFfZmlsbCk7CisJbWVkaWFfZmls bCgmZGF0YSwgZmlsbF9mbik7CiB9Ci0tIAoyLjI2LjAKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaWd0LWRldgo=