Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ncn3x-0002hQ-Ji for pgsql-hackers@arkaria.postgresql.org; Fri, 08 Apr 2022 11:46:02 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1ncn3w-0002D2-AH for pgsql-hackers@arkaria.postgresql.org; Fri, 08 Apr 2022 11:46:00 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ncn3v-0002BN-PL for pgsql-hackers@lists.postgresql.org; Fri, 08 Apr 2022 11:45:59 +0000 Received: from mail-ed1-x52a.google.com ([2a00:1450:4864:20::52a]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1ncn3r-00062J-5q for pgsql-hackers@postgresql.org; Fri, 08 Apr 2022 11:45:59 +0000 Received: by mail-ed1-x52a.google.com with SMTP id r10so9759590eda.1 for ; Fri, 08 Apr 2022 04:45:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=PwwRtyUVs91rMdO/VWknnBWxCHvffRBh8DECwJj2BCk=; b=lwaGKbBZoBwcBGmTC402VKaRmPtZVvm2A8Sr4y8+MK7t4sJLiqjblL5GhaFDuVh70W dAkd2H+6nvc9w9oani+qonzmyglG3TvvDWgVlmbdEx66BDMn+um6FCqLZv+L4RwftRug 7srC38r7G2b7yj/r6tziMwxOsrKbb0cuAwixbDutvXVo9bHmWEA2kLV26zB+frst7e3Z yLvcLs7kA3KCXD3ndhm6KeuZpshMMKrqfpjJs5qmJTtQb835INPaoZqPjFK0EKgrLQKS uZk43txMumxqQed78Q54PgjZ8q31Zl+vltlrAUaclJpXK7uolx3QSGmZROtGn9pgN9N3 2wTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=PwwRtyUVs91rMdO/VWknnBWxCHvffRBh8DECwJj2BCk=; b=RAbkAcdnXgnLeGgfbMiWceUGqbsBTTgEV5DV0ggTb/Qtk3kuel8GXJIOHyGKvRHNWk LGmBRILa+9B8T7+/8W6uc5D/VK67fMCPf/0kkXeLokkfNaDXf9FDdNMmF+itmlWIOh5t K2idptfkPVwZlM39Pz/KLBhUrljHsH5+8OYWKRIHOcM1mm9sOLIjRrLPKxmycHYbi7uQ p2GzSUhRxRzILzuc99xscSoqJ6OQB9oOTTu06ZpW8PFuKJetHTzmmr6mT+r7Je6OvQSq hSX2+b3M7KcrBXm8aI6SYpf4oNJML5Jo7JTxqRnlssyLjhG0v4t8jEjwGK+7Gluk8iX2 LFYg== X-Gm-Message-State: AOAM533CNafYBlHWpjSl1FmerAucEa52cUY8hauS2+HkJqLy/UH1hl76 aeJ9YunN1614l3DG9POWU4/l2AhURgGwMtH+nwM= X-Google-Smtp-Source: ABdhPJx6Bnus7LbrGL4f+PYmJnJFX/jL/mPA/q8GyunMuBJ5pqg0ijz1PQn1OAD9VGulBd2c66YlRk0vz41QakiBWgI= X-Received: by 2002:a05:6402:458:b0:418:78a4:ac3f with SMTP id p24-20020a056402045800b0041878a4ac3fmr18780794edw.196.1649418353861; Fri, 08 Apr 2022 04:45:53 -0700 (PDT) MIME-Version: 1.0 References: <215356.1647286703@sss.pgh.pa.us> In-Reply-To: From: Amit Langote Date: Fri, 8 Apr 2022 20:45:37 +0900 Message-ID: Subject: Re: generic plans and "initial" pruning To: David Rowley Cc: Robert Haas , Tom Lane , PostgreSQL-development Content-Type: multipart/mixed; boundary="000000000000118c1405dc2323c0" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000118c1405dc2323c0 Content-Type: text/plain; charset="UTF-8" Hi David, On Fri, Apr 8, 2022 at 8:16 PM David Rowley wrote: > On Fri, 8 Apr 2022 at 17:49, Amit Langote wrote: > > Attached updated patch with these changes. > Thanks for making the changes. I started looking over this patch but > really feel like it needs quite a few more iterations of what we've > just been doing to get it into proper committable shape. There seems > to be only about 40 mins to go before the freeze, so it seems very > unrealistic that it could be made to work. Yeah, totally understandable. > I started trying to take a serious look at it this evening, but I feel > like I just failed to get into it deep enough to make any meaningful > improvements. I'd need more time to study the problem before I could > build up a proper opinion on how exactly I think it should work. > > Anyway. I've attached a small patch that's just a few things I > adjusted or questions while reading over your v13 patch. Some of > these are just me questioning your code (See XXX comments) and some I > think are improvements. Feel free to take the hunks that you see fit > and drop anything you don't. Thanks a lot for compiling those. Most looked fine changes to me except a couple of typos, so I've adopted those into the attached new version, even though I know it's too late to try to apply it. Re the XXX comments: + /* XXX why would pprune->rti_map[i] ever be zero here??? */ Yeah, no there can't be, was perhaps being overly paraioid. + * XXX is it worth doing a bms_copy() on glob->minLockRelids if + * glob->containsInitialPruning is true?. I'm slighly worried that the + * Bitmapset could have a very long empty tail resulting in excessive + * looping during AcquireExecutorLocks(). + */ I guess I trust your instincts about bitmapset operation efficiency and what you've written here makes sense. It's typical for leaf partitions to have been appended toward the tail end of rtable and I'd imagine their indexes would be in the tail words of minLockRelids. If copying the bitmapset removes those useless words, I don't see why we shouldn't do that. So added: + /* + * It seems worth doing a bms_copy() on glob->minLockRelids if we deleted + * bit from it just above to prevent empty tail bits resulting in + * inefficient looping during AcquireExecutorLocks(). + */ + if (glob->containsInitialPruning) + glob->minLockRelids = bms_copy(glob->minLockRelids) Not 100% about the comment I wrote. -- Amit Langote EDB: http://www.enterprisedb.com --000000000000118c1405dc2323c0 Content-Type: application/octet-stream; name="v14-0001-Optimize-AcquireExecutorLocks-to-skip-pruned-par.patch" Content-Disposition: attachment; filename="v14-0001-Optimize-AcquireExecutorLocks-to-skip-pruned-par.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l1qd2kq50 RnJvbSA1NTJkYTk0NTNmMGM0ODk2YmNjODc0ODcxOTk2MGRiNTJiM2NjYWQxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyMiBEZWMgMjAyMSAxNjo1NToxNyArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjE0XSBP cHRpbWl6ZSBBY3F1aXJlRXhlY3V0b3JMb2NrcygpIHRvIHNraXAgcHJ1bmVkIHBhcnRpdGlvbnMK Ci0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgICAgICAgICAgIHwgICAyICstCiBz cmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyAgICAgICAgICB8ICAgNyArLQogc3JjL2JhY2tlbmQvY29t bWFuZHMvZXh0ZW5zaW9uLmMgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9t YXR2aWV3LmMgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUu YyAgICAgICAgICB8ICAyNiArKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRSAgICAgICAg ICAgICB8ICAyNyArKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgICB8 ICA0OCArKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgICAgIHwgIDI4 ICsrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jICAgIHwgMjQxICsrKysr KysrKysrKysrKysrKysrLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMgICAg ICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jICAgICAgICB8ICAg MiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jICAgICAgIHwgIDE1ICstCiBz cmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYyAgfCAgIDkgKy0KIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL3NwaS5jICAgICAgICAgICAgICB8ICAyNyArKy0KIHNyYy9iYWNrZW5kL25v ZGVzL2NvcHlmdW5jcy5jICAgICAgICAgICB8ICAzMyArKystCiBzcmMvYmFja2VuZC9ub2Rlcy9v dXRmdW5jcy5jICAgICAgICAgICAgfCAgMzYgKysrLQogc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1 bmNzLmMgICAgICAgICAgIHwgIDU2ICsrKysrLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4v Y3JlYXRlcGxhbi5jIHwgIDI0ICstLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5l ci5jICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYyAgICB8 IDExMiArKysrKysrKy0tLQogc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jICAg IHwgIDU5ICsrKysrLQogc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgICAgIHwg ICA4ICstCiBzcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jICAgICAgICAgICAgICAgfCAgMjggKyst CiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYyAgICAgfCAxODQgKysrKysrKysr KysrKysrLS0tCiBzcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jICAgICAgfCAgMTkg KysKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaCAgICAgICAgICB8ICAgNCArLQogc3Jj L2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oICAgIHwgIDEyICstCiBzcmMvaW5jbHVk ZS9leGVjdXRvci9leGVjZGVzYy5oICAgICAgICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvZXhlY3V0 b3IvZXhlY3V0b3IuaCAgICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rl cy5oICAgICAgICAgICB8ICAzMCArKysKIHNyYy9pbmNsdWRlL25vZGVzL25vZGVzLmggICAgICAg ICAgICAgICB8ICAgNCArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCAgICAgICAgICAg fCAgMTUgKysKIHNyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oICAgICAgICAgICB8ICAzMSAr Ky0KIHNyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuaCAgICB8ICAgOCArLQogc3Jj L2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmggICAgICAgICAgIHwgICAzICstCiBzcmMvaW5jbHVk ZS91dGlscy9wb3J0YWwuaCAgICAgICAgICAgICAgfCAgIDMgKwogMzcgZmlsZXMgY2hhbmdlZCwg OTUwIGluc2VydGlvbnMoKyksIDE2NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9jb3B5dG8uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCmlu ZGV4IDU1YzM4YjA0YzQuLmQ0MDNlYjIzMDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2NvcHl0by5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCkBAIC01NDIs NyArNTQyLDcgQEAgQmVnaW5Db3B5VG8oUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkoKERSX2NvcHkg KikgZGVzdCktPmNzdGF0ZSA9IGNzdGF0ZTsKIAogCQkvKiBDcmVhdGUgYSBRdWVyeURlc2MgcmVx dWVzdGluZyBubyBvdXRwdXQgKi8KLQkJY3N0YXRlLT5xdWVyeURlc2MgPSBDcmVhdGVRdWVyeURl c2MocGxhbiwgcHN0YXRlLT5wX3NvdXJjZXRleHQsCisJCWNzdGF0ZS0+cXVlcnlEZXNjID0gQ3Jl YXRlUXVlcnlEZXNjKHBsYW4sIE5VTEwsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAogCQkJCQkJCQkJ CQlHZXRBY3RpdmVTbmFwc2hvdCgpLAogCQkJCQkJCQkJCQlJbnZhbGlkU25hcHNob3QsCiAJCQkJ CQkJCQkJCWRlc3QsIE5VTEwsIE5VTEwsIDApOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvY3JlYXRlYXMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKaW5kZXgg OWFiYmI2YjU1NS4uZjY2MDdmMjQ1NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv Y3JlYXRlYXMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jCkBAIC0zMjUs NyArMzI1LDcgQEAgRXhlY0NyZWF0ZVRhYmxlQXMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVU YWJsZUFzU3RtdCAqc3RtdCwKIAkJVXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQoKTsKIAog CQkvKiBDcmVhdGUgYSBRdWVyeURlc2MsIHJlZGlyZWN0aW5nIG91dHB1dCB0byBvdXIgdHVwbGUg cmVjZWl2ZXIgKi8KLQkJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIHBzdGF0ZS0+ cF9zb3VyY2V0ZXh0LAorCQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgTlVMTCwg cHN0YXRlLT5wX3NvdXJjZXRleHQsCiAJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZh bGlkU25hcHNob3QsCiAJCQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCAwKTsKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvZXhwbGFpbi5jCmluZGV4IGQyYTI0Nzk4MjIuLjM1ZGQyNGFkZjggMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9leHBsYWluLmMKQEAgLTQwNyw3ICs0MDcsNyBAQCBFeHBsYWluT25lUXVlcnkoUXVlcnkgKnF1 ZXJ5LCBpbnQgY3Vyc29yT3B0aW9ucywKIAkJfQogCiAJCS8qIHJ1biBpdCAoaWYgbmVlZGVkKSBh bmQgcHJvZHVjZSBvdXRwdXQgKi8KLQkJRXhwbGFpbk9uZVBsYW4ocGxhbiwgaW50bywgZXMsIHF1 ZXJ5U3RyaW5nLCBwYXJhbXMsIHF1ZXJ5RW52LAorCQlFeHBsYWluT25lUGxhbihwbGFuLCBOVUxM LCBpbnRvLCBlcywgcXVlcnlTdHJpbmcsIHBhcmFtcywgcXVlcnlFbnYsCiAJCQkJCSAgICZwbGFu ZHVyYXRpb24sIChlcy0+YnVmZmVycyA/ICZidWZ1c2FnZSA6IE5VTEwpKTsKIAl9CiB9CkBAIC01 MTUsNyArNTE1LDggQEAgRXhwbGFpbk9uZVV0aWxpdHkoTm9kZSAqdXRpbGl0eVN0bXQsIEludG9D bGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAgKiB0byBjYWxsIGl0LgogICovCiB2b2lk Ci1FeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmlu dG8sIEV4cGxhaW5TdGF0ZSAqZXMsCitFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5l ZHN0bXQsIFBhcnRpdGlvblBydW5lUmVzdWx0ICpwYXJ0X3BydW5lX3Jlc3VsdCwKKwkJCSAgIElu dG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCQkgICBjb25zdCBjaGFyICpxdWVy eVN0cmluZywgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkgICBRdWVyeUVudmlyb25tZW50ICpx dWVyeUVudiwgY29uc3QgaW5zdHJfdGltZSAqcGxhbmR1cmF0aW9uLAogCQkJICAgY29uc3QgQnVm ZmVyVXNhZ2UgKmJ1ZnVzYWdlKQpAQCAtNTYzLDcgKzU2NCw3IEBAIEV4cGxhaW5PbmVQbGFuKFBs YW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICpl cywKIAkJZGVzdCA9IE5vbmVfUmVjZWl2ZXI7CiAKIAkvKiBDcmVhdGUgYSBRdWVyeURlc2MgZm9y IHRoZSBxdWVyeSAqLwotCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFubmVkc3RtdCwg cXVlcnlTdHJpbmcsCisJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW5uZWRzdG10LCBw YXJ0X3BydW5lX3Jlc3VsdCwgcXVlcnlTdHJpbmcsCiAJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90 KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgaW5z dHJ1bWVudF9vcHRpb24pOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRl bnNpb24uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCmluZGV4IDEwMTM3OTBk YmIuLjU0NzM0YTNhOTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lv bi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCkBAIC03NzYsNyArNzc2 LDcgQEAgZXhlY3V0ZV9zcWxfc3RyaW5nKGNvbnN0IGNoYXIgKnNxbCkKIAkJCXsKIAkJCQlRdWVy eURlc2MgICpxZGVzYzsKIAotCQkJCXFkZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHN0bXQsCisJCQkJ cWRlc2MgPSBDcmVhdGVRdWVyeURlc2Moc3RtdCwgTlVMTCwKIAkJCQkJCQkJCQlzcWwsCiAJCQkJ CQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgTlVMTCwKIAkJCQkJCQkJCQlkZXN0LCBOVUxMLCBO VUxMLCAwKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYwppbmRleCA5YWIyNDhkMjVlLi4yYmUxNzgyYmM0 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCkBAIC00MTYsNyArNDE2LDcgQEAgcmVmcmVzaF9tYXR2 aWV3X2RhdGFmaWxsKERlc3RSZWNlaXZlciAqZGVzdCwgUXVlcnkgKnF1ZXJ5LAogCVVwZGF0ZUFj dGl2ZVNuYXBzaG90Q29tbWFuZElkKCk7CiAKIAkvKiBDcmVhdGUgYSBRdWVyeURlc2MsIHJlZGly ZWN0aW5nIG91dHB1dCB0byBvdXIgdHVwbGUgcmVjZWl2ZXIgKi8KLQlxdWVyeURlc2MgPSBDcmVh dGVRdWVyeURlc2MocGxhbiwgcXVlcnlTdHJpbmcsCisJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlE ZXNjKHBsYW4sIE5VTEwsIHF1ZXJ5U3RyaW5nLAogCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgp LCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJCWRlc3QsIE5VTEwsIE5VTEwsIDApOwogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9wcmVwYXJlLmMKaW5kZXggODA3Mzg1NDdlZC4uYzczNjA3MTJiMSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3ByZXBhcmUuYwpAQCAtMTU1LDYgKzE1NSw3IEBAIEV4ZWN1dGVRdWVyeShQYXJzZVN0YXRlICpw c3RhdGUsCiAJUHJlcGFyZWRTdGF0ZW1lbnQgKmVudHJ5OwogCUNhY2hlZFBsYW4gKmNwbGFuOwog CUxpc3QJICAgKnBsYW5fbGlzdDsKKwlMaXN0CSAgICpwYXJ0X3BydW5lX3Jlc3VsdF9saXN0Owog CVBhcmFtTGlzdEluZm8gcGFyYW1MSSA9IE5VTEw7CiAJRVN0YXRlCSAgICplc3RhdGUgPSBOVUxM OwogCVBvcnRhbAkJcG9ydGFsOwpAQCAtMTkzLDcgKzE5NCwxMCBAQCBFeGVjdXRlUXVlcnkoUGFy c2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQkJICAgZW50cnktPnBsYW5zb3VyY2UtPnF1ZXJ5X3N0 cmluZyk7CiAKIAkvKiBSZXBsYW4gaWYgbmVlZGVkLCBhbmQgaW5jcmVtZW50IHBsYW4gcmVmY291 bnQgZm9yIHBvcnRhbCAqLwotCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihlbnRyeS0+cGxhbnNvdXJj ZSwgcGFyYW1MSSwgTlVMTCwgTlVMTCk7CisJY3BsYW4gPSBHZXRDYWNoZWRQbGFuKGVudHJ5LT5w bGFuc291cmNlLCBwYXJhbUxJLCBOVUxMLCBOVUxMLAorCQkJCQkJICAmcGFydF9wcnVuZV9yZXN1 bHRfbGlzdCk7CisJQXNzZXJ0KGxpc3RfbGVuZ3RoKGNwbGFuLT5zdG10X2xpc3QpID09CisJCSAg IGxpc3RfbGVuZ3RoKHBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QpKTsKIAlwbGFuX2xpc3QgPSBjcGxh bi0+c3RtdF9saXN0OwogCiAJLyoKQEAgLTIwNyw2ICsyMTEsOSBAQCBFeGVjdXRlUXVlcnkoUGFy c2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkgIHBsYW5fbGlzdCwKIAkJCQkJICBjcGxhbik7CiAKKwkv KiBDb3B5IFBhcnRpdGlvblBydW5lUmVzdWx0cyBpbnRvIHRoZSBwb3J0YWwncyBjb250ZXh0LiAq LworCVBvcnRhbFN0b3JlUGFydGl0aW9uUHJ1bmVSZXN1bHRzKHBvcnRhbCwgcGFydF9wcnVuZV9y ZXN1bHRfbGlzdCk7CisKIAkvKgogCSAqIEZvciBDUkVBVEUgVEFCTEUgLi4uIEFTIEVYRUNVVEUs IHdlIG11c3QgdmVyaWZ5IHRoYXQgdGhlIHByZXBhcmVkCiAJICogc3RhdGVtZW50IGlzIG9uZSB0 aGF0IHByb2R1Y2VzIHR1cGxlcy4gIEN1cnJlbnRseSB3ZSBpbnNpc3QgdGhhdCBpdCBiZQpAQCAt NTc2LDcgKzU4Myw5IEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQgKmV4ZWNzdG10 LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCWNvbnN0IGNoYXIgKnF1ZXJ5 X3N0cmluZzsKIAlDYWNoZWRQbGFuICpjcGxhbjsKIAlMaXN0CSAgICpwbGFuX2xpc3Q7Ci0JTGlz dENlbGwgICAqcDsKKwlMaXN0CSAgICpwYXJ0X3BydW5lX3Jlc3VsdF9saXN0OworCUxpc3RDZWxs ICAgKnAsCisJCQkgICAqcHA7CiAJUGFyYW1MaXN0SW5mbyBwYXJhbUxJID0gTlVMTDsKIAlFU3Rh dGUJICAgKmVzdGF0ZSA9IE5VTEw7CiAJaW5zdHJfdGltZQlwbGFuc3RhcnQ7CkBAIC02MTksNyAr NjI4LDEwIEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQgKmV4ZWNzdG10LCBJbnRv Q2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCiAJLyogUmVwbGFuIGlmIG5lZWRlZCwg YW5kIGFjcXVpcmUgYSB0cmFuc2llbnQgcmVmY291bnQgKi8KIAljcGxhbiA9IEdldENhY2hlZFBs YW4oZW50cnktPnBsYW5zb3VyY2UsIHBhcmFtTEksCi0JCQkJCQkgIEN1cnJlbnRSZXNvdXJjZU93 bmVyLCBxdWVyeUVudik7CisJCQkJCQkgIEN1cnJlbnRSZXNvdXJjZU93bmVyLCBxdWVyeUVudiwK KwkJCQkJCSAgJnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QpOworCUFzc2VydChsaXN0X2xlbmd0aChj cGxhbi0+c3RtdF9saXN0KSA9PQorCQkgICBsaXN0X2xlbmd0aChwYXJ0X3BydW5lX3Jlc3VsdF9s aXN0KSk7CiAKIAlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHBsYW5kdXJhdGlvbik7CiAJSU5TVFJf VElNRV9TVUJUUkFDVChwbGFuZHVyYXRpb24sIHBsYW5zdGFydCk7CkBAIC02MzQsMTMgKzY0Niwx NSBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVz ZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAlwbGFuX2xpc3QgPSBjcGxhbi0+c3RtdF9saXN0 OwogCiAJLyogRXhwbGFpbiBlYWNoIHF1ZXJ5ICovCi0JZm9yZWFjaChwLCBwbGFuX2xpc3QpCisJ Zm9yYm90aChwLCBwbGFuX2xpc3QsIHBwLCBwYXJ0X3BydW5lX3Jlc3VsdF9saXN0KQogCXsKIAkJ UGxhbm5lZFN0bXQgKnBzdG10ID0gbGZpcnN0X25vZGUoUGxhbm5lZFN0bXQsIHApOworCQlQYXJ0 aXRpb25QcnVuZVJlc3VsdCAqcGFydF9wcnVuZV9yZXN1bHQgPSBsZmlyc3Rfbm9kZShQYXJ0aXRp b25QcnVuZVJlc3VsdCwgcHApOwogCiAJCWlmIChwc3RtdC0+Y29tbWFuZFR5cGUgIT0gQ01EX1VU SUxJVFkpCi0JCQlFeHBsYWluT25lUGxhbihwc3RtdCwgaW50bywgZXMsIHF1ZXJ5X3N0cmluZywg cGFyYW1MSSwgcXVlcnlFbnYsCi0JCQkJCQkgICAmcGxhbmR1cmF0aW9uLCAoZXMtPmJ1ZmZlcnMg PyAmYnVmdXNhZ2UgOiBOVUxMKSk7CisJCQlFeHBsYWluT25lUGxhbihwc3RtdCwgcGFydF9wcnVu ZV9yZXN1bHQsIGludG8sIGVzLCBxdWVyeV9zdHJpbmcsCisJCQkJCQkgICBwYXJhbUxJLCBxdWVy eUVudiwgJnBsYW5kdXJhdGlvbiwKKwkJCQkJCSAgIChlcy0+YnVmZmVycyA/ICZidWZ1c2FnZSA6 IE5VTEwpKTsKIAkJZWxzZQogCQkJRXhwbGFpbk9uZVV0aWxpdHkocHN0bXQtPnV0aWxpdHlTdG10 LCBpbnRvLCBlcywgcXVlcnlfc3RyaW5nLAogCQkJCQkJCSAgcGFyYW1MSSwgcXVlcnlFbnYpOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvUkVBRE1FCmluZGV4IDBiNTE4M2ZjNGEuLmUwODAyYmU3MjMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRQorKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFE TUUKQEAgLTY1LDYgKzY1LDI5IEBAIGZvdW5kIHRoZXJlLiAgVGhpcyBjdXJyZW50bHkgb25seSBv Y2N1cnMgZm9yIEFwcGVuZCBhbmQgTWVyZ2VBcHBlbmQgbm9kZXMuICBJbgogdGhpcyBjYXNlIHRo ZSBub24tcmVxdWlyZWQgc3VicGxhbnMgYXJlIGlnbm9yZWQgYW5kIHRoZSBleGVjdXRvciBzdGF0 ZSdzCiBzdWJub2RlIGFycmF5IHdpbGwgYmVjb21lIG91dCBvZiBzZXF1ZW5jZSB0byB0aGUgcGxh bidzIHN1YnBsYW4gbGlzdC4KIAorQWN0dWFsbHksIHRoZSBzby1jYWxsZWQgZXhlY3V0aW9uIHRp bWUgcHJ1bmluZyBtYXkgYWxzbyBvY2N1ciBldmVuIGJlZm9yZSB0aGUKK2V4ZWN1dGlvbiBoYXMg c3RhcnRlZC4gIE9uZSBjYXNlIHdoZXJlIHRoYXQgb2NjdXJzIGlzIHdoZW4gYSBjYWNoZWQgZ2Vu ZXJpYworcGxhbiBpcyBiZWluZyB2YWxpZGF0ZWQgZm9yIGV4ZWN1dGlvbiBieSBwbGFuY2FjaGUu YzogR2V0Q2FjaGVkUGxhbigpLCB3aGljaAorcHJvY2VlZHMgYnkgbG9ja2luZyBhbGwgdGhlIHJl bGF0aW9ucyB0aGF0IHdpbGwgYmUgc2Nhbm5lZCBieSB0aGF0IHBsYW4uICBJZgordGhlIGdlbmVy aWMgcGxhbiBjb250YWlucyBub2RlcyB0aGF0IGNhbiBwZXJmb3JtIGV4ZWN1dGlvbiB0aW1lIHBh cnRpdGlvbgorcHJ1bmluZyAodGhhdCBpcywgY29udGFpbiBhIFBhcnRpdGlvblBydW5lSW5mbyks IGEgc3Vic2V0IG9mIHBydW5pbmcgc3RlcHMKK2NvbnRhaW5lZCBpbiB0aGUgUGFydGl0aW9uUHJ1 bmVJbmZvcyB0aGF0IGRvIG5vdCBkZXBlbmQgb24gZXhlY3V0aW9uIGFjdHVhbGx5CitoYXZpbmcg c3RhcnRlZCAoY2FsbGVkICJpbml0aWFsIiBwcnVuaW5nIHN0ZXBzKSBhcmUgcGVyZm9ybWVkIGF0 IHRoaXMgcG9pbnQKK3RvIGZpZ3VyZSBvdXQgdGhlIG1pbmltYWwgc2V0IG9mIGNoaWxkIHN1YnBs YW5zIHRoYXQgc2F0aXNmeSB0aG9zZSBwcnVuaW5nCitpbnN0cnVjdGlvbnMuICBBY3F1aXJlRXhl Y3V0b3JMb2NrcygpIGxvb2tpbmcgYXQgYSBwYXJ0aWN1bGFyIHBsYW4gd2lsbCB0aGVuCitsb2Nr IG9ubHkgdGhlIHJlbGF0aW9ucyBzY2FubmVkIGJ5IHRob3NlIHN1cnZpdmluZyBzdWJwbGFucyAo YWxvbmcgd2l0aCB0aG9zZQorcHJlc2VudCBpbiBQbGFubmVkU3RtdC5taW5Mb2NrUmVsaWRzKSwg YW5kIGlnbm9yZSB0aG9zZSBzY2FubmVkIGJ5IHRoZSBwcnVuZWQKK3N1YnBsYW5zLCBldmVuIHRo b3VnaCB0aGUgcHJ1bmVkIHN1YnBsYW5zIHRoZW1zZWx2ZXMgYXJlIG5vdCByZW1vdmVkIGZyb20g dGhlCitwbGFuIHRyZWUuICBUaGUgcmVzdWx0IG9mIHBydW5pbmcgKHRoYXQgaXMsIHRoZSBzZXQg b2YgaW5kZXhlcyBvZiBzdXJ2aXZpbmcKK3N1YnBsYW5zIGluIHRoZWlyIHBhcmVudCdzIGxpc3Qg b2YgY2hpbGQgc3VicGxhbnMpIGlzIHNhdmVkIGFzIGEgbGlzdCBvZgorYml0bWFwc2V0cywgd2l0 aCBvbmUgZWxlbWVudCBmb3IgZXZlcnkgUGFydGl0aW9uUHJ1bmVJbmZvIHJlZmVyZW5jZWQgaW4g dGhlCitwbGFuIChQbGFubmVkU3RtdC5wYXJ0UHJ1bmVJbmZvcykuICBUaGUgbGlzdCBpcyBwYWNr YWdlZCBpbnRvIGEKK1BhcnRpdGlvblBydW5lUmVzdWx0IG5vZGUsIHdoaWNoIGlzIHBhc3NlZCBh bG9uZyB3aXRoIHRoZSBQbGFubmVkU3RtdCB0byB0aGUKK2V4ZWN1dG9yIHZpYSB0aGUgUXVlcnlE ZXNjLiAgSXQgaXMgaW1wZXJhdGl2ZSB0aGF0IHRoZSBleGVjdXRvciBhbmQgYW55IHRoaXJkCitw YXJ0eSBjb2RlIGludm9rZWQgYnkgaXQgdGhhdCBnZXRzIHBhc3NlZCB0aGUgcGxhbiB0cmVlIGxv b2sgYXQgdGhlIHBsYW4ncworUGFydGl0aW9uUHJ1bmVSZXN1bHQgdG8gZGV0ZXJtaW5lIHdoZXRo ZXIgYSBwYXJ0aWN1bGFyIGNoaWxkIHN1YnBsYW4gb2YgYQorcGFyZW50IG5vZGUgdGhhdCBzdXBw b3J0cyBwcnVuaW5nIGlzIHZhbGlkIGZvciBhIGdpdmVuIGV4ZWN1dGlvbi4KKwogRWFjaCBQbGFu IG5vZGUgbWF5IGhhdmUgZXhwcmVzc2lvbiB0cmVlcyBhc3NvY2lhdGVkIHdpdGggaXQsIHRvIHJl cHJlc2VudAogaXRzIHRhcmdldCBsaXN0LCBxdWFsaWZpY2F0aW9uIGNvbmRpdGlvbnMsIGV0Yy4g IFRoZXNlIHRyZWVzIGFyZSBhbHNvCiByZWFkLW9ubHkgdG8gdGhlIGV4ZWN1dG9yLCBidXQgdGhl IGV4ZWN1dG9yIHN0YXRlIGZvciBleHByZXNzaW9uIGV2YWx1YXRpb24KQEAgLTI4Niw2ICszMDks MTAgQEAgUXVlcnkgUHJvY2Vzc2luZyBDb250cm9sIEZsb3cKIAogVGhpcyBpcyBhIHNrZXRjaCBv ZiBjb250cm9sIGZsb3cgZm9yIGZ1bGwgcXVlcnkgcHJvY2Vzc2luZzoKIAorICBbIEV4ZWN1dG9y RG9Jbml0aWFsUHJ1bmluZyBdIC0tLSBhbiBvcHRpb25hbCBzdGVwIHRvIHBlcmZvcm0gaW5pdGlh bAorCQlwYXJ0aXRpb24gcHJ1bmluZyBvbiB0aGUgcGxhbiB0cmVlIHRoZSByZXN1bHQgb2Ygd2hp Y2ggaXMgcGFzc2VkCisJCXRvIHRoZSBleGVjdXRvciB2aWEgUXVlcnlEZXNjCisKIAlDcmVhdGVR dWVyeURlc2MKIAogCUV4ZWN1dG9yU3RhcnQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IGVm MmZkNDYwOTIuLjVlZTk3ODkzN2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAtNDksMTEg KzQ5LDEzIEBACiAjaW5jbHVkZSAiY29tbWFuZHMvbWF0dmlldy5oIgogI2luY2x1ZGUgImNvbW1h bmRzL3RyaWdnZXIuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjZGVidWcuaCIKKyNpbmNsdWRl ICJleGVjdXRvci9leGVjUGFydGl0aW9uLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZVN1YnBs YW4uaCIKICNpbmNsdWRlICJmb3JlaWduL2Zkd2FwaS5oIgogI2luY2x1ZGUgImppdC9qaXQuaCIK ICNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1 ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZXRyZWUuaCIKICNp bmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgpAQCAt MTA0LDYgKzEwNiw0OSBAQCBzdGF0aWMgdm9pZCBFdmFsUGxhblF1YWxTdGFydChFUFFTdGF0ZSAq ZXBxc3RhdGUsIFBsYW4gKnBsYW5UcmVlKTsKIAogLyogZW5kIG9mIGxvY2FsIGRlY2xzICovCiAK Ky8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqCQlFeGVjdXRvckRvSW5pdGlhbFBydW5pbmcKKyAqCisgKgkJUGVyZm9y bXMgaW5pdGlhbCBwYXJ0aXRpb24gcHJ1bmluZyB0byBmaWd1cmUgb3V0IHRoZSBtaW5pbWFsIHNl dCBvZgorICoJCXN1YnBsYW5zIHRvIGJlIGV4ZWN1dGVkIGFuZCB0aGUgc2V0IG9mIFJUIGluZGV4 ZXMgb2YgdGhlIGNvcnJlc3BvbmRpbmcKKyAqCQlsZWFmIHBhcnRpdGlvbnMKKyAqCisgKiBSZXR1 cm5lZCBQYXJ0aXRpb25QcnVuZVJlc3VsdCBtdXN0IGJlIHN1YnNlcXVlbnRseSBwYXNzZWQgdG8g dGhlIGV4ZWN1dG9yCisgKiBzbyB0aGF0IGl0IGNhbiByZXVzZSB0aGUgcmVzdWx0IG9mIHBydW5p bmcuICBJdCdzIGltcG9ydGFudCB0aGF0IHRoZQorICogaGFzIHRoZSBzYW1lIHZpZXcgb2Ygd2hp Y2ggcGFydGl0aW9ucyBhcmUgaW5pdGlhbGx5IHBydW5lZCAoYnkgbm90IGRvaW5nCisgKiB0aGUg cHJ1bmluZyBhZ2FpbiBpdHNlbGYpIG9yIG90aGVyd2lzZSBpdCByaXNrcyBpbml0aWFsaXppbmcg c3VicGxhbnMgd2hvc2UKKyAqIHBhcnRpdGlvbnMgd291bGQgbm90IGhhdmUgYmVlbiBsb2NrZWQu CisgKgorICogTm90ZTogUGFydGl0aW9uZWQgdGFibGVzIG1lbnRpb25lZCBpbiBQYXJ0aXRpb25l ZFJlbFBydW5lSW5mbyBub2RlcyB0aGF0CisgKiBkcml2ZSB0aGUgcHJ1bmluZyB3aWxsIGJlIGxv Y2tlZCBiZWZvcmUgZG9pbmcgdGhlIHBydW5pbmcuCisgKgorICogLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCitQYXJ0 aXRpb25QcnVuZVJlc3VsdCAqCitFeGVjdXRvckRvSW5pdGlhbFBydW5pbmcoUGxhbm5lZFN0bXQg KnBsYW5uZWRzdG10LCBQYXJhbUxpc3RJbmZvIHBhcmFtcykKK3sKKwlQYXJ0aXRpb25QcnVuZVJl c3VsdCAqcmVzdWx0OworCUxpc3RDZWxsICpsYzsKKworCS8qIE9ubHkgZ2V0IGhlcmUgaWYgdGhl cmUgaXMgYW55IHBydW5pbmcgdG8gZG8uICovCisJQXNzZXJ0KHBsYW5uZWRzdG10LT5jb250YWlu c0luaXRpYWxQcnVuaW5nKTsKKworCXJlc3VsdCA9IG1ha2VOb2RlKFBhcnRpdGlvblBydW5lUmVz dWx0KTsKKwlmb3JlYWNoKGxjLCBwbGFubmVkc3RtdC0+cGFydFBydW5lSW5mb3MpCisJeworCQlQ YXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbyA9IGxmaXJzdChsYyk7CisJCUJpdG1hcHNldCAq dmFsaWRfc3VicGxhbl9vZmZzOworCisJCXZhbGlkX3N1YnBsYW5fb2ZmcyA9CisJCQlFeGVjUGFy dGl0aW9uRG9Jbml0aWFsUHJ1bmluZyhwbGFubmVkc3RtdCwgcGFyYW1zLCBwcnVuZWluZm8sCisJ CQkJCQkJCQkJICAmcmVzdWx0LT5zY2FuX2xlYWZwYXJ0X3J0aXMpOworCQlyZXN1bHQtPnZhbGlk X3N1YnBsYW5fb2Zmc19saXN0ID0KKwkJCWxhcHBlbmQocmVzdWx0LT52YWxpZF9zdWJwbGFuX29m ZnNfbGlzdCwKKwkJCQkJdmFsaWRfc3VicGxhbl9vZmZzKTsKKwl9CisKKwlyZXR1cm4gcmVzdWx0 OworfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRXhlY3V0b3JTdGFydApAQCAtODA2LDYgKzg1MSw3IEBA IEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogewogCUNtZFR5cGUJ CW9wZXJhdGlvbiA9IHF1ZXJ5RGVzYy0+b3BlcmF0aW9uOwogCVBsYW5uZWRTdG10ICpwbGFubmVk c3RtdCA9IHF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQ7CisJUGFydGl0aW9uUHJ1bmVSZXN1bHQgKnBh cnRfcHJ1bmVfcmVzdWx0ID0gcXVlcnlEZXNjLT5wYXJ0X3BydW5lX3Jlc3VsdDsKIAlQbGFuCSAg ICpwbGFuID0gcGxhbm5lZHN0bXQtPnBsYW5UcmVlOwogCUxpc3QJICAgKnJhbmdlVGFibGUgPSBw bGFubmVkc3RtdC0+cnRhYmxlOwogCUVTdGF0ZQkgICAqZXN0YXRlID0gcXVlcnlEZXNjLT5lc3Rh dGU7CkBAIC04MjUsNiArODcxLDggQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGlu dCBlZmxhZ3MpCiAJRXhlY0luaXRSYW5nZVRhYmxlKGVzdGF0ZSwgcmFuZ2VUYWJsZSk7CiAKIAll c3RhdGUtPmVzX3BsYW5uZWRzdG10ID0gcGxhbm5lZHN0bXQ7CisJZXN0YXRlLT5lc19wYXJ0X3By dW5lX2luZm9zID0gcGxhbm5lZHN0bXQtPnBhcnRQcnVuZUluZm9zOworCWVzdGF0ZS0+ZXNfcGFy dF9wcnVuZV9yZXN1bHQgPSBwYXJ0X3BydW5lX3Jlc3VsdDsKIAogCS8qCiAJICogTmV4dCwgYnVp bGQgdGhlIEV4ZWNSb3dNYXJrIGFycmF5IGZyb20gdGhlIFBsYW5Sb3dNYXJrKHMpLCBpZiBhbnku CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCmluZGV4IDlhMGQ1ZDU5ZWYuLjgwNWY4NmM1 MDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCkBAIC02Niw2ICs2Niw3IEBACiAj ZGVmaW5lIFBBUkFMTEVMX0tFWV9RVUVSWV9URVhUCQlVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAw MDAwMDgpCiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9KSVRfSU5TVFJVTUVOVEFUSU9OIFVJTlQ2NENP TlNUKDB4RTAwMDAwMDAwMDAwMDAwOSkKICNkZWZpbmUgUEFSQUxMRUxfS0VZX1dBTF9VU0FHRQkJ CVVJTlQ2NENPTlNUKDB4RTAwMDAwMDAwMDAwMDAwQSkKKyNkZWZpbmUgUEFSQUxMRUxfS0VZX1BB UlRJVElPTlBSVU5FUkVTVUxUCVVJTlQ2NENPTlNUKDB4RTAwMDAwMDAwMDAwMDAwQikKIAogI2Rl ZmluZSBQQVJBTExFTF9UVVBMRV9RVUVVRV9TSVpFCQk2NTUzNgogCkBAIC0xODIsNyArMTgzLDkg QEAgRXhlY1NlcmlhbGl6ZVBsYW4oUGxhbiAqcGxhbiwgRVN0YXRlICplc3RhdGUpCiAJcHN0bXQt PnRyYW5zaWVudFBsYW4gPSBmYWxzZTsKIAlwc3RtdC0+ZGVwZW5kc09uUm9sZSA9IGZhbHNlOwog CXBzdG10LT5wYXJhbGxlbE1vZGVOZWVkZWQgPSBmYWxzZTsKKwlwc3RtdC0+Y29udGFpbnNJbml0 aWFsUHJ1bmluZyA9IGZhbHNlOwogCXBzdG10LT5wbGFuVHJlZSA9IHBsYW47CisJcHN0bXQtPnBh cnRQcnVuZUluZm9zID0gZXN0YXRlLT5lc19wYXJ0X3BydW5lX2luZm9zOwogCXBzdG10LT5ydGFi bGUgPSBlc3RhdGUtPmVzX3JhbmdlX3RhYmxlOwogCXBzdG10LT5yZXN1bHRSZWxhdGlvbnMgPSBO SUw7CiAJcHN0bXQtPmFwcGVuZFJlbGF0aW9ucyA9IE5JTDsKQEAgLTU5NiwxMiArNTk5LDE1IEBA IEV4ZWNJbml0UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVzdGF0 ZSwKIAlGaXhlZFBhcmFsbGVsRXhlY3V0b3JTdGF0ZSAqZnBlczsKIAljaGFyCSAgICpwc3RtdF9k YXRhOwogCWNoYXIJICAgKnBzdG10X3NwYWNlOworCWNoYXIJICAgKnBhcnRfcHJ1bmVfcmVzdWx0 X2RhdGE7CisJY2hhcgkgICAqcGFydF9wcnVuZV9yZXN1bHRfc3BhY2U7CiAJY2hhcgkgICAqcGFy YW1saXN0aW5mb19zcGFjZTsKIAlCdWZmZXJVc2FnZSAqYnVmdXNhZ2Vfc3BhY2U7CiAJV2FsVXNh Z2UgICAqd2FsdXNhZ2Vfc3BhY2U7CiAJU2hhcmVkRXhlY3V0b3JJbnN0cnVtZW50YXRpb24gKmlu c3RydW1lbnRhdGlvbiA9IE5VTEw7CiAJU2hhcmVkSml0SW5zdHJ1bWVudGF0aW9uICpqaXRfaW5z dHJ1bWVudGF0aW9uID0gTlVMTDsKIAlpbnQJCQlwc3RtdF9sZW47CisJaW50CQkJcGFydF9wcnVu ZV9yZXN1bHRfbGVuOwogCWludAkJCXBhcmFtbGlzdGluZm9fbGVuOwogCWludAkJCWluc3RydW1l bnRhdGlvbl9sZW4gPSAwOwogCWludAkJCWppdF9pbnN0cnVtZW50YXRpb25fbGVuID0gMDsKQEAg LTYzMCw2ICs2MzYsNyBAQCBFeGVjSW5pdFBhcmFsbGVsUGxhbihQbGFuU3RhdGUgKnBsYW5zdGF0 ZSwgRVN0YXRlICplc3RhdGUsCiAKIAkvKiBGaXggdXAgYW5kIHNlcmlhbGl6ZSBwbGFuIHRvIGJl IHNlbnQgdG8gd29ya2Vycy4gKi8KIAlwc3RtdF9kYXRhID0gRXhlY1NlcmlhbGl6ZVBsYW4ocGxh bnN0YXRlLT5wbGFuLCBlc3RhdGUpOworCXBhcnRfcHJ1bmVfcmVzdWx0X2RhdGEgPSBub2RlVG9T dHJpbmcoZXN0YXRlLT5lc19wYXJ0X3BydW5lX3Jlc3VsdCk7CiAKIAkvKiBDcmVhdGUgYSBwYXJh bGxlbCBjb250ZXh0LiAqLwogCXBjeHQgPSBDcmVhdGVQYXJhbGxlbENvbnRleHQoInBvc3RncmVz IiwgIlBhcmFsbGVsUXVlcnlNYWluIiwgbndvcmtlcnMpOwpAQCAtNjU2LDYgKzY2MywxMSBAQCBF eGVjSW5pdFBhcmFsbGVsUGxhbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgRVN0YXRlICplc3RhdGUs CiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBwc3RtdF9sZW4pOwog CXNobV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAxKTsKIAorCS8qIEVzdGlt YXRlIHNwYWNlIGZvciBzZXJpYWxpemVkIFBhcnRpdGlvblBydW5lUmVzdWx0LiAqLworCXBhcnRf cHJ1bmVfcmVzdWx0X2xlbiA9IHN0cmxlbihwYXJ0X3BydW5lX3Jlc3VsdF9kYXRhKSArIDE7CisJ c2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBwYXJ0X3BydW5lX3Jlc3Vs dF9sZW4pOworCXNobV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAxKTsKKwog CS8qIEVzdGltYXRlIHNwYWNlIGZvciBzZXJpYWxpemVkIFBhcmFtTGlzdEluZm8uICovCiAJcGFy YW1saXN0aW5mb19sZW4gPSBFc3RpbWF0ZVBhcmFtTGlzdFNwYWNlKGVzdGF0ZS0+ZXNfcGFyYW1f bGlzdF9pbmZvKTsKIAlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsIHBh cmFtbGlzdGluZm9fbGVuKTsKQEAgLTc1MCw2ICs3NjIsMTIgQEAgRXhlY0luaXRQYXJhbGxlbFBs YW4oUGxhblN0YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCW1lbWNweShwc3RtdF9z cGFjZSwgcHN0bXRfZGF0YSwgcHN0bXRfbGVuKTsKIAlzaG1fdG9jX2luc2VydChwY3h0LT50b2Ms IFBBUkFMTEVMX0tFWV9QTEFOTkVEU1RNVCwgcHN0bXRfc3BhY2UpOwogCisJLyogU3RvcmUgc2Vy aWFsaXplZCBQYXJ0aXRpb25QcnVuZVJlc3VsdCAqLworCXBhcnRfcHJ1bmVfcmVzdWx0X3NwYWNl ID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsIHBhcnRfcHJ1bmVfcmVzdWx0X2xlbik7CisJ bWVtY3B5KHBhcnRfcHJ1bmVfcmVzdWx0X3NwYWNlLCBwYXJ0X3BydW5lX3Jlc3VsdF9kYXRhLCBw YXJ0X3BydW5lX3Jlc3VsdF9sZW4pOworCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxM RUxfS0VZX1BBUlRJVElPTlBSVU5FUkVTVUxULAorCQkJCSAgIHBhcnRfcHJ1bmVfcmVzdWx0X3Nw YWNlKTsKKwogCS8qIFN0b3JlIHNlcmlhbGl6ZWQgUGFyYW1MaXN0SW5mby4gKi8KIAlwYXJhbWxp c3RpbmZvX3NwYWNlID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsIHBhcmFtbGlzdGluZm9f bGVuKTsKIAlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9QQVJBTUxJU1RJ TkZPLCBwYXJhbWxpc3RpbmZvX3NwYWNlKTsKQEAgLTEyMzEsOCArMTI0OSwxMCBAQCBFeGVjUGFy YWxsZWxHZXRRdWVyeURlc2Moc2htX3RvYyAqdG9jLCBEZXN0UmVjZWl2ZXIgKnJlY2VpdmVyLAog CQkJCQkJIGludCBpbnN0cnVtZW50X29wdGlvbnMpCiB7CiAJY2hhcgkgICAqcHN0bXRzcGFjZTsK KwljaGFyCSAgICpwYXJ0X3BydW5lX3Jlc3VsdF9zcGFjZTsKIAljaGFyCSAgICpwYXJhbXNwYWNl OwogCVBsYW5uZWRTdG10ICpwc3RtdDsKKwlQYXJ0aXRpb25QcnVuZVJlc3VsdCAqcGFydF9wcnVu ZV9yZXN1bHQ7CiAJUGFyYW1MaXN0SW5mbyBwYXJhbUxJOwogCWNoYXIJICAgKnF1ZXJ5U3RyaW5n OwogCkBAIC0xMjQzLDEyICsxMjYzLDE4IEBAIEV4ZWNQYXJhbGxlbEdldFF1ZXJ5RGVzYyhzaG1f dG9jICp0b2MsIERlc3RSZWNlaXZlciAqcmVjZWl2ZXIsCiAJcHN0bXRzcGFjZSA9IHNobV90b2Nf bG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1BMQU5ORURTVE1ULCBmYWxzZSk7CiAJcHN0bXQgPSAo UGxhbm5lZFN0bXQgKikgc3RyaW5nVG9Ob2RlKHBzdG10c3BhY2UpOwogCisJLyogUmVjb25zdHJ1 Y3QgbGVhZGVyLXN1cHBsaWVkIFBhcnRpdGlvblBydW5lUmVzdWx0LiAqLworCXBhcnRfcHJ1bmVf cmVzdWx0X3NwYWNlID0KKwkJc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfUEFSVElU SU9OUFJVTkVSRVNVTFQsIGZhbHNlKTsKKwlwYXJ0X3BydW5lX3Jlc3VsdCA9IChQYXJ0aXRpb25Q cnVuZVJlc3VsdCAqKQorCQlzdHJpbmdUb05vZGUocGFydF9wcnVuZV9yZXN1bHRfc3BhY2UpOwor CiAJLyogUmVjb25zdHJ1Y3QgUGFyYW1MaXN0SW5mby4gKi8KIAlwYXJhbXNwYWNlID0gc2htX3Rv Y19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfUEFSQU1MSVNUSU5GTywgZmFsc2UpOwogCXBhcmFt TEkgPSBSZXN0b3JlUGFyYW1MaXN0KCZwYXJhbXNwYWNlKTsKIAogCS8qIENyZWF0ZSBhIFF1ZXJ5 RGVzYyBmb3IgdGhlIHF1ZXJ5LiAqLwotCXJldHVybiBDcmVhdGVRdWVyeURlc2MocHN0bXQsCisJ cmV0dXJuIENyZWF0ZVF1ZXJ5RGVzYyhwc3RtdCwgcGFydF9wcnVuZV9yZXN1bHQsCiAJCQkJCQkg ICBxdWVyeVN0cmluZywKIAkJCQkJCSAgIEdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFw c2hvdCwKIAkJCQkJCSAgIHJlY2VpdmVyLCBwYXJhbUxJLCBOVUxMLCBpbnN0cnVtZW50X29wdGlv bnMpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCmluZGV4IDYxNWJkODA5NzMuLmFm ODdiOTE5N2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24u YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKQEAgLTI1LDYgKzI1 LDcgQEAKICNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgog I2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZXRyZWUu aCIKICNpbmNsdWRlICJwYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oIgogI2luY2x1ZGUgInBhcnRp dGlvbmluZy9wYXJ0ZGVzYy5oIgogI2luY2x1ZGUgInBhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuaCIK QEAgLTE4NSw3ICsxODYsMTEgQEAgc3RhdGljIGNoYXIgKkV4ZWNCdWlsZFNsb3RQYXJ0aXRpb25L ZXlEZXNjcmlwdGlvbihSZWxhdGlvbiByZWwsCiBzdGF0aWMgTGlzdCAqYWRqdXN0X3BhcnRpdGlv bl9jb2xub3MoTGlzdCAqY29sbm9zLCBSZXN1bHRSZWxJbmZvICpsZWFmX3BhcnRfcnJpKTsKIHN0 YXRpYyBMaXN0ICphZGp1c3RfcGFydGl0aW9uX2NvbG5vc191c2luZ19tYXAoTGlzdCAqY29sbm9z LCBBdHRyTWFwICphdHRyTWFwKTsKIHN0YXRpYyBQYXJ0aXRpb25QcnVuZVN0YXRlICpDcmVhdGVQ YXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAotCQkJCQkJCQkJCQkJCSAg UGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pOworCQkJCQkJCQkJCQkJCSAgUGFydGl0aW9u UHJ1bmVJbmZvICpwcnVuZWluZm8sCisJCQkJCQkJCQkJCQkJICBib29sIGNvbnNpZGVyX2luaXRp YWxfc3RlcHMsCisJCQkJCQkJCQkJCQkJICBib29sIGNvbnNpZGVyX2V4ZWNfc3RlcHMsCisJCQkJ CQkJCQkJCQkJICBMaXN0ICpydGFibGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwKKwkJCQkJCQkJ CQkJCQkgIFBhcnRpdGlvbkRpcmVjdG9yeSBwYXJ0ZGlyKTsKIHN0YXRpYyB2b2lkIEluaXRQYXJ0 aXRpb25QcnVuZUNvbnRleHQoUGFydGl0aW9uUHJ1bmVDb250ZXh0ICpjb250ZXh0LAogCQkJCQkJ CQkJICBMaXN0ICpwcnVuaW5nX3N0ZXBzLAogCQkJCQkJCQkJICBQYXJ0aXRpb25EZXNjIHBhcnRk ZXNjLApAQCAtMTk4LDcgKzIwMyw4IEBAIHN0YXRpYyB2b2lkIFBhcnRpdGlvblBydW5lRml4U3Vi UGxhbk1hcChQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlLAogc3RhdGljIHZvaWQgZmlu ZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKFBhcnRpdGlvblBydW5pbmdEYXRhICpwcnVuZWRh dGEsCiAJCQkJCQkJCQkJICAgUGFydGl0aW9uZWRSZWxQcnVuaW5nRGF0YSAqcHBydW5lLAogCQkJ CQkJCQkJCSAgIGJvb2wgaW5pdGlhbF9wcnVuZSwKLQkJCQkJCQkJCQkgICBCaXRtYXBzZXQgKip2 YWxpZHN1YnBsYW5zKTsKKwkJCQkJCQkJCQkgICBCaXRtYXBzZXQgKip2YWxpZHN1YnBsYW5zLAor CQkJCQkJCQkJCSAgIEJpdG1hcHNldCAqKnNjYW5fbGVhZnBhcnRfcnRpcyk7CiAKIAogLyoKQEAg LTE1ODcsOCArMTU5MywxMCBAQCBhZGp1c3RfcGFydGl0aW9uX2NvbG5vc191c2luZ19tYXAoTGlz dCAqY29sbm9zLCBBdHRyTWFwICphdHRyTWFwKQogICogY29uc2lkZXJlZCB0byBiZSBhIHN0YWJs ZSBleHByZXNzaW9uLCBpdCBjYW4gY2hhbmdlIHZhbHVlIGZyb20gb25lIHBsYW4KICAqIG5vZGUg c2NhbiB0byB0aGUgbmV4dCBkdXJpbmcgcXVlcnkgZXhlY3V0aW9uLiAgU3RhYmxlIGNvbXBhcmlz b24KICAqIGV4cHJlc3Npb25zIHRoYXQgZG9uJ3QgaW52b2x2ZSBzdWNoIFBhcmFtcyBhbGxvdyBw YXJ0aXRpb24gcHJ1bmluZyB0byBiZQotICogZG9uZSBvbmNlIGR1cmluZyBleGVjdXRvciBzdGFy dHVwLiAgRXhwcmVzc2lvbnMgdGhhdCBkbyBpbnZvbHZlIHN1Y2ggUGFyYW1zCi0gKiByZXF1aXJl IHVzIHRvIHBydW5lIHNlcGFyYXRlbHkgZm9yIGVhY2ggc2NhbiBvZiB0aGUgcGFyZW50IHBsYW4g bm9kZS4KKyAqIGRvbmUgb25jZSBkdXJpbmcgZXhlY3V0b3Igc3RhcnR1cCBvciBkdXJpbmcgRXhl Y3V0b3JEb0luaXRpYWxQcnVuaW5nKCkgdGhhdAorICogcnVucyBhcyBwYXJ0IG9mIHBlcmZvcm1p bmcgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKSBvbiBhIGdpdmVuIHBsYW4gdHJlZS4KKyAqIEV4cHJl c3Npb25zIHRoYXQgZG8gaW52b2x2ZSBzdWNoIFBhcmFtcyByZXF1aXJlIHVzIHRvIHBydW5lIHNl cGFyYXRlbHkgZm9yCisgKiBlYWNoIHNjYW4gb2YgdGhlIHBhcmVudCBwbGFuIG5vZGUuCiAgKgog ICogTm90ZSB0aGF0IHBydW5pbmcgYXdheSB1bm5lZWRlZCBzdWJwbGFucyBkdXJpbmcgZXhlY3V0 b3Igc3RhcnR1cCBoYXMgdGhlCiAgKiBhZGRlZCBiZW5lZml0IG9mIG5vdCBoYXZpbmcgdG8gaW5p dGlhbGl6ZSB0aGUgdW5uZWVkZWQgc3VicGxhbnMgYXQgYWxsLgpAQCAtMTYwNSw2ICsxNjEzLDEz IEBAIGFkanVzdF9wYXJ0aXRpb25fY29sbm9zX3VzaW5nX21hcChMaXN0ICpjb2xub3MsIEF0dHJN YXAgKmF0dHJNYXApCiAgKgkJYWNjb3VudCBmb3IgaW5pdGlhbCBwcnVuaW5nIHBvc3NpYmx5IGhh dmluZyBlbGltaW5hdGVkIHNvbWUgb2YgdGhlCiAgKgkJc3VicGxhbnMuCiAgKgorICogRXhlY1Bh cnRpdGlvbkRvSW5pdGlhbFBydW5pbmc6CisgKgkJRG8gaW5pdGlhbCBwcnVuaW5nIHdpdGggdGhl IGluZm9ybWF0aW9uIGNvbnRhaW5lZCBpbiBhIGdpdmVuCisgKgkJUGFydGl0aW9uUHJ1bmVJbmZv IHRvIGRldGVybWluZSB0aGUgbWluaW1hbCBzZXQgb2YgY2hpbGQgc3VicGxhbnMKKyAqCQl0byBi ZSBleGVjdXRlZCBvZiB0aGUgcGFyZW50IHBsYW4gbm9kZSB0byB3aGljaCB0aGUgUGFydGl0aW9u UHJ1bmVJbmZvCisgKgkJYmVsb25ncyBhbmQgYWxzbyB0aGUgc2V0IG9mIHRoZSBSVCBpbmRleGVz IG9mIGxlYWYgcGFydGl0aW9ucyB0aGF0IHdpbGwKKyAqCQliZSBzY2FubmVkIHdpdGggdGhvc2Ug c3VicGxhbnMuCisgKgogICogRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zOgogICoJCVJldHVybnMg aW5kZXhlcyBvZiBtYXRjaGluZyBzdWJwbGFucyBhZnRlciBldmFsdWF0aW5nIHRoZSBleHByZXNz aW9ucwogICoJCXRoYXQgYXJlIHNhZmUgdG8gZXZhbHVhdGUgYXQgYSBnaXZlbiBwb2ludC4gIFRo aXMgZnVuY3Rpb24gaXMgZmlyc3QKQEAgLTE2MjIsOCArMTYzNyw5IEBAIGFkanVzdF9wYXJ0aXRp b25fY29sbm9zX3VzaW5nX21hcChMaXN0ICpjb2xub3MsIEF0dHJNYXAgKmF0dHJNYXApCiAgKgog ICogT24gcmV0dXJuLCAqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zIGlzIGFzc2lnbmVkIHRoZSBz ZXQgb2YgaW5kZXhlcyBvZgogICogY2hpbGQgc3VicGxhbnMgdGhhdCBtdXN0IGJlIGluaXRpYWxp emVkIGFsb25nIHdpdGggdGhlIHBhcmVudCBwbGFuIG5vZGUuCi0gKiBJbml0aWFsIHBydW5pbmcg aXMgcGVyZm9ybWVkIGhlcmUgaWYgbmVlZGVkIGFuZCBpbiB0aGF0IGNhc2Ugb25seSB0aGUKLSAq IHN1cnZpdmluZyBzdWJwbGFucycgaW5kZXhlcyBhcmUgYWRkZWQuCisgKiBJbml0aWFsIHBydW5p bmcgaXMgcGVyZm9ybWVkIGhlcmUgaWYgbmVlZGVkICh1bmxlc3MgaXQgaGFzIGFscmVhZHkgYmVl biBkb25lCisgKiBieSBFeGVjRG9Jbml0aWFsUHJ1bmluZygpKSwgYW5kIGluIHRoYXQgY2FzZSBv bmx5IHRoZSBzdXJ2aXZpbmcgc3VicGxhbnMnCisgKiBpbmRleGVzIGFyZSBhZGRlZC4KICAqCiAg KiBJZiBzdWJwbGFucyBhcmUgaW5kZWVkIHBydW5lZCwgc3VicGxhbl9tYXAgYXJyYXlzIGNvbnRh aW5lZCBpbiB0aGUgcmV0dXJuZWQKICAqIFBhcnRpdGlvblBydW5lU3RhdGUgYXJlIHJlLXNlcXVl bmNlZCB0byBub3QgY291bnQgdGhvc2UsIHRob3VnaCBvbmx5IGlmIHRoZQpAQCAtMTYzMiwyOSAr MTY0OCw2NiBAQCBhZGp1c3RfcGFydGl0aW9uX2NvbG5vc191c2luZ19tYXAoTGlzdCAqY29sbm9z LCBBdHRyTWFwICphdHRyTWFwKQogUGFydGl0aW9uUHJ1bmVTdGF0ZSAqCiBFeGVjSW5pdFBhcnRp dGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJCQkJCQkgaW50IG5fdG90YWxfc3Vi cGxhbnMsCi0JCQkJCQkgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8sCisJCQkJCQkgaW50 IHBhcnRfcHJ1bmVfaW5kZXgsCiAJCQkJCQkgQml0bWFwc2V0ICoqaW5pdGlhbGx5X3ZhbGlkX3N1 YnBsYW5zKQogewotCVBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGU7CiAJRVN0YXRlCSAg ICplc3RhdGUgPSBwbGFuc3RhdGUtPnN0YXRlOworCVBhcnRpdGlvblBydW5lSW5mbyAgKnBydW5l aW5mbyA9IGxpc3RfbnRoKGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcywKKwkJCQkJCQkJCQkJ ICBwYXJ0X3BydW5lX2luZGV4KTsKKwlQYXJ0aXRpb25QcnVuZVJlc3VsdCAqcHJ1bmVyZXN1bHQg PSBlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfcmVzdWx0OworCVBhcnRpdGlvblBydW5lU3RhdGUgKnBy dW5lc3RhdGU7CisJYm9vbAlkb19wcnVuaW5nID0gKHBydW5laW5mby0+bmVlZHNfaW5pdF9wcnVu aW5nIHx8CisJCQkJCQkgIHBydW5laW5mby0+bmVlZHNfZXhlY19wcnVuaW5nKTsKIAotCS8qIFdl IG1heSBuZWVkIGFuIGV4cHJlc3Npb24gY29udGV4dCB0byBldmFsdWF0ZSBwYXJ0aXRpb24gZXhw cnMgKi8KLQlFeGVjQXNzaWduRXhwckNvbnRleHQoZXN0YXRlLCBwbGFuc3RhdGUpOworCS8qCisJ ICogTm8gbmVlZCB0byBkbyBpbml0aWFsIHBydW5pbmcgaWYgaXQgd2FzIGRvbmUgYWxyZWFkeSBi eQorCSAqIEV4ZWN1dG9yRG9Jbml0aWFsUHJ1bmluZygpLCB3aGljaCBpdCB3b3VsZCBiZSBpZiBl c19wYXJ0X3BydW5lX3Jlc3VsdAorCSAqIGhhcyBiZWVuIHNldC4KKwkgKi8KKwlpZiAocHJ1bmVy ZXN1bHQpCisJCWRvX3BydW5pbmcgPSBwcnVuZWluZm8tPm5lZWRzX2V4ZWNfcHJ1bmluZzsKKwor CXBydW5lc3RhdGUgPSBOVUxMOworCWlmIChkb19wcnVuaW5nKQorCXsKKwkJLyogV2UgbWF5IG5l ZWQgYW4gZXhwcmVzc2lvbiBjb250ZXh0IHRvIGV2YWx1YXRlIHBhcnRpdGlvbiBleHBycyAqLwor CQlFeGVjQXNzaWduRXhwckNvbnRleHQoZXN0YXRlLCBwbGFuc3RhdGUpOwogCi0JLyogQ3JlYXRl IHRoZSB3b3JraW5nIGRhdGEgc3RydWN0dXJlIGZvciBwcnVuaW5nICovCi0JcHJ1bmVzdGF0ZSA9 IENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUocGxhbnN0YXRlLCBwcnVuZWluZm8pOworCQkvKiBG b3IgZGF0YSByZWFkaW5nLCBleGVjdXRvciBhbHdheXMgb21pdHMgZGV0YWNoZWQgcGFydGl0aW9u cyAqLworCQlpZiAoZXN0YXRlLT5lc19wYXJ0aXRpb25fZGlyZWN0b3J5ID09IE5VTEwpCisJCQll c3RhdGUtPmVzX3BhcnRpdGlvbl9kaXJlY3RvcnkgPQorCQkJCUNyZWF0ZVBhcnRpdGlvbkRpcmVj dG9yeShlc3RhdGUtPmVzX3F1ZXJ5X2N4dCwgZmFsc2UpOworCisJCS8qCisJCSAqIENyZWF0ZSB0 aGUgd29ya2luZyBkYXRhIHN0cnVjdHVyZSBmb3IgcHJ1bmluZy4gIE5vIG5lZWQgdG8gY29uc2lk ZXIKKwkJICogaW5pdGlhbCBwcnVuaW5nIHN0ZXBzIGlmIHdlIGhhdmUgYSBQYXJ0aXRpb25QcnVu ZVJlc3VsdC4KKwkJICovCisJCXBydW5lc3RhdGUgPSBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRl KHBsYW5zdGF0ZSwgcHJ1bmVpbmZvLAorCQkJCQkJCQkJCQkgICBwcnVuZXJlc3VsdCA9PSBOVUxM LCB0cnVlLAorCQkJCQkJCQkJCQkgICBOSUwsIHBsYW5zdGF0ZS0+cHNfRXhwckNvbnRleHQsCisJ CQkJCQkJCQkJCSAgIGVzdGF0ZS0+ZXNfcGFydGl0aW9uX2RpcmVjdG9yeSk7CisJfQogCiAJLyoK IAkgKiBQZXJmb3JtIGFuIGluaXRpYWwgcGFydGl0aW9uIHBydW5lIHBhc3MsIGlmIHJlcXVpcmVk LgogCSAqLwotCWlmIChwcnVuZXN0YXRlLT5kb19pbml0aWFsX3BydW5lKQotCQkqaW5pdGlhbGx5 X3ZhbGlkX3N1YnBsYW5zID0gRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKHBydW5lc3RhdGUsIHRy dWUpOworCWlmIChwcnVuZXJlc3VsdCkKKwl7CisJCSppbml0aWFsbHlfdmFsaWRfc3VicGxhbnMg PQorCQkJbGlzdF9udGgocHJ1bmVyZXN1bHQtPnZhbGlkX3N1YnBsYW5fb2Zmc19saXN0LCBwYXJ0 X3BydW5lX2luZGV4KTsKKwl9CisJZWxzZSBpZiAocHJ1bmVzdGF0ZSAmJiBwcnVuZXN0YXRlLT5k b19pbml0aWFsX3BydW5lKQorCXsKKwkJKmluaXRpYWxseV92YWxpZF9zdWJwbGFucyA9IEV4ZWNG aW5kTWF0Y2hpbmdTdWJQbGFucyhwcnVuZXN0YXRlLCB0cnVlLAorCQkJCQkJCQkJCQkJCQkJIE5V TEwpOworCX0KIAllbHNlCiAJewogCQkvKiBObyBwcnVuaW5nLCBzbyB3ZSdsbCBuZWVkIHRvIGlu aXRpYWxpemUgYWxsIHN1YnBsYW5zICovCiAJCUFzc2VydChuX3RvdGFsX3N1YnBsYW5zID4gMCk7 CiAJCSppbml0aWFsbHlfdmFsaWRfc3VicGxhbnMgPSBibXNfYWRkX3JhbmdlKE5VTEwsIDAsCiAJ CQkJCQkJCQkJCQkgIG5fdG90YWxfc3VicGxhbnMgLSAxKTsKKwkJcmV0dXJuIHBydW5lc3RhdGU7 CiAJfQogCiAJLyoKQEAgLTE2NjIsNyArMTcxNSw4IEBAIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmlu ZyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIAkgKiB0aGF0IHdlcmUgcmVtb3ZlZCBhYm92ZSBkdWUg dG8gaW5pdGlhbCBwcnVuaW5nLiAgTm8gbmVlZCB0byBkbyB0aGlzIGlmCiAJICogbm8gc3RlcHMg d2VyZSByZW1vdmVkLgogCSAqLwotCWlmIChibXNfbnVtX21lbWJlcnMoKmluaXRpYWxseV92YWxp ZF9zdWJwbGFucykgPCBuX3RvdGFsX3N1YnBsYW5zKQorCWlmIChwcnVuZXN0YXRlICYmCisJCWJt c19udW1fbWVtYmVycygqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zKSA8IG5fdG90YWxfc3VicGxh bnMpCiAJewogCQkvKgogCQkgKiBXZSBjYW4gc2FmZWx5IHNraXAgdGhpcyB3aGVuICFkb19leGVj X3BydW5lLCBldmVuIHRob3VnaCB0aGF0CkBAIC0xNjc4LDExICsxNzMyLDc0IEBAIEV4ZWNJbml0 UGFydGl0aW9uUHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIAlyZXR1cm4gcHJ1bmVzdGF0 ZTsKIH0KIAorLyoKKyAqIEV4ZWNQYXJ0aXRpb25Eb0luaXRpYWxQcnVuaW5nCisgKgkJUGVyZm9y bSBpbml0aWFsIHBydW5pbmcgdXNpbmcgZ2l2ZW4gUGFydGl0aW9uUHJ1bmVJbmZvIHRvIGRldGVy bWluZQorICoJCXRoZSBtaW5pbWFsIHNldCBvZiBjaGlsZCBzdWJwbGFucyB0byBiZSBleGVjdXRl ZCBvZiB0aGUgcGFyZW50IHBsYW4KKyAqCQlub2RlIHRvIHdoaWNoIHRoZSBQYXJ0aXRpb25QcnVu ZUluZm8gYmVsb25ncyBhbmQgYWxzbyB0aGUgc2V0IG9mIFJUCisgKgkJaW5kZXhlcyBvZiBsZWFm IHBhcnRpdGlvbnMgdGhhdCB3aWxsIHNjYW5uZWQgd2l0aCB0aG9zZSBzdWJwbGFucy4KKyAqLwor Qml0bWFwc2V0ICoKK0V4ZWNQYXJ0aXRpb25Eb0luaXRpYWxQcnVuaW5nKFBsYW5uZWRTdG10ICpw bGFubmVkc3RtdCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCisJCQkJCQkJICBQYXJ0aXRpb25QcnVu ZUluZm8gKnBydW5laW5mbywKKwkJCQkJCQkgIEJpdG1hcHNldCAqKnNjYW5fbGVhZnBhcnRfcnRp cykKK3sKKwlMaXN0CQkgKnJ0YWJsZSA9IHBsYW5uZWRzdG10LT5ydGFibGU7CisJRXhwckNvbnRl eHQJICplY29udGV4dDsKKwlQYXJ0aXRpb25EaXJlY3RvcnkgcGRpcjsKKwlNZW1vcnlDb250ZXh0 IG9sZGNvbnRleHQsCisJCQkJICB0bXBjb250ZXh0OworCVBhcnRpdGlvblBydW5lU3RhdGUgKnBy dW5lc3RhdGU7CisJQml0bWFwc2V0CSAqdmFsaWRfc3VicGxhbl9vZmZzOworCisJLyoKKwkgKiBB IHRlbXBvcmFyeSBjb250ZXh0IGZvciBtZW1vcnkgYWxsb2NhdGlvbnMgcmVxdWlyZWQgd2hpbGUg ZXhlY3V0aW5nCisJICogcGFydGl0aW9uIHBydW5pbmcgc3RlcHMuCisJICovCisJdG1wY29udGV4 dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShDdXJyZW50TWVtb3J5Q29udGV4dCwKKwkJCQkJCQkJ CSAgICJpbml0aWFsIHBydW5pbmcgd29ya2luZyBkYXRhIiwKKwkJCQkJCQkJCSAgIEFMTE9DU0VU X0RFRkFVTFRfU0laRVMpOworCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8odG1w Y29udGV4dCk7CisKKwkvKgorCSAqIFBhcnRpdGlvbkRpcmVjdG9yeSB0byBsb29rIHVwIHBhcnRp dGlvbiBkZXNjcmlwdG9ycywgd2hpY2ggb21pdHMKKwkgKiBkZXRhY2hlZCBwYXJ0aXRpb25zLCBq dXN0IGxpa2UgaW4gdGhlIGV4ZWN1dG9yIHByb3Blci4KKwkgKi8KKwlwZGlyID0gQ3JlYXRlUGFy dGl0aW9uRGlyZWN0b3J5KEN1cnJlbnRNZW1vcnlDb250ZXh0LCBmYWxzZSk7CisKKwkvKgorCSAq IFdlIGRvbid0IHlldCBoYXZlIGEgUGxhblN0YXRlIGZvciB0aGUgcGFyZW50IHBsYW4gbm9kZSwg c28gd2UgbXVzdAorCSAqIGNyZWF0ZSBhIHN0YW5kYWxvbmUgRXhwckNvbnRleHQgdG8gZXZhbHVh dGUgcHJ1bmluZyBleHByZXNzaW9ucywKKwkgKiBlcXVpcHBlZCB3aXRoIHRoZSBpbmZvcm1hdGlv biBhYm91dCB0aGUgRVhURVJOIHBhcmFtZXRlcnMgdGhhdCB0aGUKKwkgKiBjYWxsZXIgcGFzc2Vk IHVzLiAgTm90ZSB0aGF0IHRoYXQncyBva2F5IGJlY2F1c2UgdGhlIGluaXRpYWwgcHJ1bmluZwor CSAqIHN0ZXBzIGRvIG5vdCBjb250YWluIGFueXRoaW5nIHRoYXQgcmVxdWlyZXMgdGhlIGV4ZWN1 dGlvbiB0byBoYXZlCisJICogc3RhcnRlZC4KKwkgKi8KKwllY29udGV4dCA9IENyZWF0ZVN0YW5k YWxvbmVFeHByQ29udGV4dCgpOworCWVjb250ZXh0LT5lY3h0X3BhcmFtX2xpc3RfaW5mbyA9IHBh cmFtczsKKwlwcnVuZXN0YXRlID0gQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShOVUxMLCBwcnVu ZWluZm8sIHRydWUsIGZhbHNlLAorCQkJCQkJCQkJCSAgIHJ0YWJsZSwgZWNvbnRleHQsIHBkaXIp OworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKworCS8qIERvIHRoZSBpbml0 aWFsIHBydW5pbmcuICovCisJdmFsaWRfc3VicGxhbl9vZmZzID0gRXhlY0ZpbmRNYXRjaGluZ1N1 YlBsYW5zKHBydW5lc3RhdGUsIHRydWUsCisJCQkJCQkJCQkJCQkgIHNjYW5fbGVhZnBhcnRfcnRp cyk7CisKKwlGcmVlRXhwckNvbnRleHQoZWNvbnRleHQsIHRydWUpOworCURlc3Ryb3lQYXJ0aXRp b25EaXJlY3RvcnkocGRpcik7CisJTWVtb3J5Q29udGV4dERlbGV0ZSh0bXBjb250ZXh0KTsKKwor CXJldHVybiB2YWxpZF9zdWJwbGFuX29mZnM7Cit9CisKIC8qCiAgKiBDcmVhdGVQYXJ0aXRpb25Q cnVuZVN0YXRlCiAgKgkJQnVpbGQgdGhlIGRhdGEgc3RydWN0dXJlIHJlcXVpcmVkIGZvciBjYWxs aW5nIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucwogICoKLSAqICdwbGFuc3RhdGUnIGlzIHRoZSBw YXJlbnQgcGxhbiBub2RlJ3MgZXhlY3V0aW9uIHN0YXRlLgorICogJ3BsYW5zdGF0ZScsIGlmIG5v dCBOVUxMLCBpcyB0aGUgcGFyZW50IHBsYW4gbm9kZSdzIGV4ZWN1dGlvbiBzdGF0ZS4gIEl0Cisg KiBjYW4gYmUgTlVMTCBpZiBiZWluZyBjYWxsZWQgYmVmb3JlIEV4ZWN1dG9yU3RhcnQoKSwgaW4g d2hpY2ggY2FzZSwKKyAqICdydGFibGUnIChyYW5nZSB0YWJsZSksICdlY29udGV4dCcsIGFuZCAn cGFydGRpcicgbXVzdCBiZSBleHBsaWNpdGx5CisgKiBwcm92aWRlZC4KICAqCiAgKiAncHJ1bmVp bmZvJyBpcyBhIFBhcnRpdGlvblBydW5lSW5mbyBhcyBnZW5lcmF0ZWQgYnkKICAqIG1ha2VfcGFy dGl0aW9uX3BydW5laW5mby4gIEhlcmUgd2UgYnVpbGQgYSBQYXJ0aXRpb25QcnVuZVN0YXRlIGNv bnRhaW5pbmcgYQpAQCAtMTY5NiwxOSArMTgxMywyMSBAQCBFeGVjSW5pdFBhcnRpdGlvblBydW5p bmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAgKiBQYXJ0aXRpb25lZFJlbFBydW5lSW5mby4KICAq Lwogc3RhdGljIFBhcnRpdGlvblBydW5lU3RhdGUgKgotQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0 ZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pCitD cmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAorCQkJCQkJICBQ YXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbywKKwkJCQkJCSAgYm9vbCBjb25zaWRlcl9pbml0 aWFsX3N0ZXBzLAorCQkJCQkJICBib29sIGNvbnNpZGVyX2V4ZWNfc3RlcHMsCisJCQkJCQkgIExp c3QgKnJ0YWJsZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LAorCQkJCQkJICBQYXJ0aXRpb25EaXJl Y3RvcnkgcGFydGRpcikKIHsKLQlFU3RhdGUJICAgKmVzdGF0ZSA9IHBsYW5zdGF0ZS0+c3RhdGU7 CisJRVN0YXRlCSAgICplc3RhdGUgPSBwbGFuc3RhdGUgPyBwbGFuc3RhdGUtPnN0YXRlIDogTlVM TDsKIAlQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlOwogCWludAkJCW5fcGFydF9oaWVy YXJjaGllczsKIAlMaXN0Q2VsbCAgICpsYzsKIAlpbnQJCQlpOwotCUV4cHJDb250ZXh0ICplY29u dGV4dCA9IHBsYW5zdGF0ZS0+cHNfRXhwckNvbnRleHQ7CiAKLQkvKiBGb3IgZGF0YSByZWFkaW5n LCBleGVjdXRvciBhbHdheXMgb21pdHMgZGV0YWNoZWQgcGFydGl0aW9ucyAqLwotCWlmIChlc3Rh dGUtPmVzX3BhcnRpdGlvbl9kaXJlY3RvcnkgPT0gTlVMTCkKLQkJZXN0YXRlLT5lc19wYXJ0aXRp b25fZGlyZWN0b3J5ID0KLQkJCUNyZWF0ZVBhcnRpdGlvbkRpcmVjdG9yeShlc3RhdGUtPmVzX3F1 ZXJ5X2N4dCwgZmFsc2UpOworCUFzc2VydCgoZXN0YXRlICE9IE5VTEwpIHx8CisJCQkocGFydGRp ciAhPSBOVUxMICYmIGVjb250ZXh0ICE9IE5VTEwgJiYgcnRhYmxlICE9IE5JTCkpOwogCiAJbl9w YXJ0X2hpZXJhcmNoaWVzID0gbGlzdF9sZW5ndGgocHJ1bmVpbmZvLT5wcnVuZV9pbmZvcyk7CiAJ QXNzZXJ0KG5fcGFydF9oaWVyYXJjaGllcyA+IDApOwpAQCAtMTc2MywxNSArMTg4Miw0MiBAQCBD cmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBQYXJ0aXRpb25Q cnVuZUluZm8gKnBydW5laW5mbykKIAkJCVBhcnRpdGlvbktleSBwYXJ0a2V5OwogCiAJCQkvKgot CQkJICogV2UgY2FuIHJlbHkgb24gdGhlIGNvcGllcyBvZiB0aGUgcGFydGl0aW9uZWQgdGFibGUn cyBwYXJ0aXRpb24KLQkJCSAqIGtleSBhbmQgcGFydGl0aW9uIGRlc2NyaXB0b3IgYXBwZWFyaW5n IGluIGl0cyByZWxjYWNoZSBlbnRyeSwKLQkJCSAqIGJlY2F1c2UgdGhhdCBlbnRyeSB3aWxsIGJl IGhlbGQgb3BlbiBhbmQgbG9ja2VkIGZvciB0aGUKLQkJCSAqIGR1cmF0aW9uIG9mIHRoaXMgZXhl Y3V0b3IgcnVuLgorCQkJICogTXVzdCBvcGVuIHRoZSByZWxhdGlvbiBieSBvdXJzZWx2ZXMgd2hl biBjYWxsZWQgYmVmb3JlIHRoZQorCQkJICogZXhlY3V0aW9uIGhhcyBzdGFydGVkLCBzdWNoIGFz LCB3aGVuIGNhbGxlZCBkdXJpbmcKKwkJCSAqIEV4ZWN1dG9yRG9Jbml0aWFsUHJ1bmluZygpIG9u IGEgY2FjaGVkIHBsYW4uICBJbiB0aGF0IGNhc2UsCisJCQkgKiBzdWItcGFydGl0aW9ucyBtdXN0 IGJlIGxvY2tlZCwgYmVjYXVzZSBBY3F1aXJlUGxhbm5lckxvY2tzKCkKKwkJCSAqIHdvdWxkIG5v dCBoYXZlIHNlZW4gdGhlbS4gKDFzdCByZWxhdGlvbiBpbiBhIHBhcnRyZWxwcnVuZWluZm9zCisJ CQkgKiBsaXN0IGlzIGFsd2F5cyB0aGUgcm9vdCBwYXJ0aXRpb25lZCB0YWJsZSBhcHBlYXJpbmcg aW4gdGhlCisJCQkgKiBxdWVyeSwgd2hpY2ggQWNxdWlyZVBsYW5uZXJMb2NrcygpIHdvdWxkIGhh dmUgbG9ja2VkOyB0aGUKKwkJCSAqIEFzc2VydCBpbiByZWxhdGlvbl9vcGVuKCkgZ3VhcmRzIHRo YXQgYXNzdW1wdGlvbi4pCisJCQkgKi8KKwkJCWlmIChlc3RhdGUgPT0gTlVMTCkKKwkJCXsKKwkJ CQlSYW5nZVRibEVudHJ5ICpydGUgPSBydF9mZXRjaChwaW5mby0+cnRpbmRleCwgcnRhYmxlKTsK KwkJCQlpbnQJCWxvY2ttb2RlID0gKGogPT0gMCkgPyBOb0xvY2sgOiBydGUtPnJlbGxvY2ttb2Rl OworCisJCQkJcGFydHJlbCA9IHRhYmxlX29wZW4ocnRlLT5yZWxpZCwgbG9ja21vZGUpOworCQkJ fQorCQkJZWxzZQorCQkJCXBhcnRyZWwgPSBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKGVzdGF0 ZSwgcGluZm8tPnJ0aW5kZXgpOworCisJCQkvKgorCQkJICogV2UgY2FuIHJlbHkgb24gdGhlIGNv cHkgb2YgdGhlIHBhcnRpdGlvbmVkIHRhYmxlJ3MgcGFydGl0aW9uCisJCQkgKiBrZXkgZnJvbSBp biBpdHMgcmVsY2FjaGUgZW50cnksIGJlY2F1c2UgaXQgY2FuJ3QgY2hhbmdlIChvcgorCQkJICog Z2V0IGRlc3Ryb3llZCkgYXMgbG9uZyBhcyB0aGUgcmVsYXRpb24gaXMgbG9ja2VkLiAgUGFydGl0 aW9uCisJCQkgKiBkZXNjcmlwdG9yIGlzIHRha2VuIGZyb20gdGhlIFBhcnRpdGlvbkRpcmVjdG9y eSBhc3NvY2lhdGVkIHdpdGgKKwkJCSAqIHRoZSB0YWJsZSB0aGF0IGlzIGhlbGQgb3BlbiBsb25n IGVub3VnaCBmb3IgdGhlIGRlc2NyaXB0b3IgdG8KKwkJCSAqIHJlbWFpbiB2YWxpZCB3aGlsZSBp dCdzIHVzZWQgdG8gcGVyZm9ybSB0aGUgcHJ1bmluZyBzdGVwcy4KIAkJCSAqLwotCQkJcGFydHJl bCA9IEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oZXN0YXRlLCBwaW5mby0+cnRpbmRleCk7CiAJ CQlwYXJ0a2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFydHJlbCk7Ci0JCQlwYXJ0ZGVz YyA9IFBhcnRpdGlvbkRpcmVjdG9yeUxvb2t1cChlc3RhdGUtPmVzX3BhcnRpdGlvbl9kaXJlY3Rv cnksCi0JCQkJCQkJCQkJCQlwYXJ0cmVsKTsKKwkJCXBhcnRkZXNjID0gUGFydGl0aW9uRGlyZWN0 b3J5TG9va3VwKHBhcnRkaXIsIHBhcnRyZWwpOworCisJCQkvKgorCQkJICogTXVzdCBjbG9zZSBw YXJ0cmVsLCBrZWVwaW5nIHRoZSBsb2NrIHRha2VuLCBpZiB3ZSdyZSBub3QgdXNpbmcKKwkJCSAq IEVTdGF0ZSdzIGVudHJ5LgorCQkJICovCisJCQlpZiAoZXN0YXRlID09IE5VTEwpCisJCQkJdGFi bGVfY2xvc2UocGFydHJlbCwgTm9Mb2NrKTsKIAogCQkJLyoKIAkJCSAqIEluaXRpYWxpemUgdGhl IHN1YnBsYW5fbWFwIGFuZCBzdWJwYXJ0X21hcC4KQEAgLTE3ODUsNiArMTkzMSw3IEBAIENyZWF0 ZVBhcnRpdGlvblBydW5lU3RhdGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIFBhcnRpdGlvblBydW5l SW5mbyAqcHJ1bmVpbmZvKQogCQkJQXNzZXJ0KHBhcnRkZXNjLT5ucGFydHMgPj0gcGluZm8tPm5w YXJ0cyk7CiAJCQlwcHJ1bmUtPm5wYXJ0cyA9IHBhcnRkZXNjLT5ucGFydHM7CiAJCQlwcHJ1bmUt PnN1YnBsYW5fbWFwID0gcGFsbG9jKHNpemVvZihpbnQpICogcGFydGRlc2MtPm5wYXJ0cyk7CisJ CQlwcHJ1bmUtPnJ0aV9tYXAgPSBwYWxsb2Moc2l6ZW9mKEluZGV4KSAqIHBhcnRkZXNjLT5ucGFy dHMpOwogCQkJaWYgKHBhcnRkZXNjLT5ucGFydHMgPT0gcGluZm8tPm5wYXJ0cykKIAkJCXsKIAkJ CQkvKgpAQCAtMTc5NSw2ICsxOTQyLDggQEAgQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFu U3RhdGUgKnBsYW5zdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pCiAJCQkJcHBy dW5lLT5zdWJwYXJ0X21hcCA9IHBpbmZvLT5zdWJwYXJ0X21hcDsKIAkJCQltZW1jcHkocHBydW5l LT5zdWJwbGFuX21hcCwgcGluZm8tPnN1YnBsYW5fbWFwLAogCQkJCQkgICBzaXplb2YoaW50KSAq IHBpbmZvLT5ucGFydHMpOworCQkJCW1lbWNweShwcHJ1bmUtPnJ0aV9tYXAsIHBpbmZvLT5ydGlf bWFwLAorCQkJCQkgICBzaXplb2YoaW50KSAqIHBpbmZvLT5ucGFydHMpOwogCiAJCQkJLyoKIAkJ CQkgKiBEb3VibGUtY2hlY2sgdGhhdCB0aGUgbGlzdCBvZiB1bnBydW5lZCByZWxhdGlvbnMgaGFz IG5vdApAQCAtMTg0NSw2ICsxOTk0LDggQEAgQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFu U3RhdGUgKnBsYW5zdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pCiAJCQkJCQkJ cGluZm8tPnN1YnBsYW5fbWFwW3BkX2lkeF07CiAJCQkJCQlwcHJ1bmUtPnN1YnBhcnRfbWFwW3Bw X2lkeF0gPQogCQkJCQkJCXBpbmZvLT5zdWJwYXJ0X21hcFtwZF9pZHhdOworCQkJCQkJcHBydW5l LT5ydGlfbWFwW3BwX2lkeF0gPQorCQkJCQkJCXBpbmZvLT5ydGlfbWFwW3BkX2lkeF07CiAJCQkJ CQlwZF9pZHgrKzsKIAkJCQkJfQogCQkJCQllbHNlCkBAIC0xODUyLDYgKzIwMDMsNyBAQCBDcmVh dGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBQYXJ0aXRpb25QcnVu ZUluZm8gKnBydW5laW5mbykKIAkJCQkJCS8qIHRoaXMgcGFydGRlc2MgZW50cnkgaXMgbm90IGlu IHRoZSBwbGFuICovCiAJCQkJCQlwcHJ1bmUtPnN1YnBsYW5fbWFwW3BwX2lkeF0gPSAtMTsKIAkJ CQkJCXBwcnVuZS0+c3VicGFydF9tYXBbcHBfaWR4XSA9IC0xOworCQkJCQkJcHBydW5lLT5ydGlf bWFwW3BwX2lkeF0gPSAwOwogCQkJCQl9CiAJCQkJfQogCkBAIC0xODczLDcgKzIwMjUsNyBAQCBD cmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBQYXJ0aXRpb25Q cnVuZUluZm8gKnBydW5laW5mbykKIAkJCSAqIEluaXRpYWxpemUgcHJ1bmluZyBjb250ZXh0cyBh cyBuZWVkZWQuCiAJCQkgKi8KIAkJCXBwcnVuZS0+aW5pdGlhbF9wcnVuaW5nX3N0ZXBzID0gcGlu Zm8tPmluaXRpYWxfcHJ1bmluZ19zdGVwczsKLQkJCWlmIChwaW5mby0+aW5pdGlhbF9wcnVuaW5n X3N0ZXBzKQorCQkJaWYgKGNvbnNpZGVyX2luaXRpYWxfc3RlcHMgJiYgcGluZm8tPmluaXRpYWxf cHJ1bmluZ19zdGVwcykKIAkJCXsKIAkJCQlJbml0UGFydGl0aW9uUHJ1bmVDb250ZXh0KCZwcHJ1 bmUtPmluaXRpYWxfY29udGV4dCwKIAkJCQkJCQkJCQkgIHBpbmZvLT5pbml0aWFsX3BydW5pbmdf c3RlcHMsCkBAIC0xODgzLDcgKzIwMzUsNyBAQCBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBs YW5TdGF0ZSAqcGxhbnN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKIAkJCQlw cnVuZXN0YXRlLT5kb19pbml0aWFsX3BydW5lID0gdHJ1ZTsKIAkJCX0KIAkJCXBwcnVuZS0+ZXhl Y19wcnVuaW5nX3N0ZXBzID0gcGluZm8tPmV4ZWNfcHJ1bmluZ19zdGVwczsKLQkJCWlmIChwaW5m by0+ZXhlY19wcnVuaW5nX3N0ZXBzKQorCQkJaWYgKGNvbnNpZGVyX2V4ZWNfc3RlcHMgJiYgcGlu Zm8tPmV4ZWNfcHJ1bmluZ19zdGVwcykKIAkJCXsKIAkJCQlJbml0UGFydGl0aW9uUHJ1bmVDb250 ZXh0KCZwcHJ1bmUtPmV4ZWNfY29udGV4dCwKIAkJCQkJCQkJCQkgIHBpbmZvLT5leGVjX3BydW5p bmdfc3RlcHMsCkBAIC0yMTExLDEwICsyMjYzLDE0IEBAIFBhcnRpdGlvblBydW5lRml4U3ViUGxh bk1hcChQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlLAogICogUGFzcyBpbml0aWFsX3By dW5lIGlmIFBBUkFNX0VYRUMgUGFyYW1zIGNhbm5vdCB5ZXQgYmUgZXZhbHVhdGVkLiAgVGhpcwog ICogZGlmZmVyZW50aWF0ZXMgdGhlIGluaXRpYWwgZXhlY3V0b3ItdGltZSBwcnVuaW5nIHN0ZXAg ZnJvbSBsYXRlcgogICogcnVudGltZSBwcnVuaW5nLgorICoKKyAqIFJUIGluZGV4ZXMgb2YgbGVh ZiBwYXJ0aXRpb25zIHNjYW5uZWQgYnkgdGhlIGNob3NlbiBzdWJwbGFucyBhcmUgYWRkZWQgdG8K KyAqICpzY2FuX2xlYWZwYXJ0X3J0aXMgaWYgdGhlIHBvaW50ZXIgaXMgbm9uLU5VTEwuCiAgKi8K IEJpdG1hcHNldCAqCiBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMoUGFydGl0aW9uUHJ1bmVTdGF0 ZSAqcHJ1bmVzdGF0ZSwKLQkJCQkJCSBib29sIGluaXRpYWxfcHJ1bmUpCisJCQkJCQkgYm9vbCBp bml0aWFsX3BydW5lLAorCQkJCQkJIEJpdG1hcHNldCAqKnNjYW5fbGVhZnBhcnRfcnRpcykKIHsK IAlCaXRtYXBzZXQgICpyZXN1bHQgPSBOVUxMOwogCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsK QEAgLTIxNDksNyArMjMwNSw3IEBAIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25Q cnVuZVN0YXRlICpwcnVuZXN0YXRlLAogCQkgKi8KIAkJcHBydW5lID0gJnBydW5lZGF0YS0+cGFy dHJlbHBydW5lZGF0YVswXTsKIAkJZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKHBydW5l ZGF0YSwgcHBydW5lLCBpbml0aWFsX3BydW5lLAotCQkJCQkJCQkJICAgJnJlc3VsdCk7CisJCQkJ CQkJCQkgICAmcmVzdWx0LCBzY2FuX2xlYWZwYXJ0X3J0aXMpOwogCiAJCS8qIEV4cHJlc3Npb24g ZXZhbCBtYXkgaGF2ZSB1c2VkIHNwYWNlIGluIEV4cHJDb250ZXh0IHRvbyAqLwogCQlpZiAocHBy dW5lLT5leGVjX3BydW5pbmdfc3RlcHMpCkBAIC0yMTYzLDYgKzIzMTksOCBAQCBFeGVjRmluZE1h dGNoaW5nU3ViUGxhbnMoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKIAogCS8qIENv cHkgcmVzdWx0IG91dCBvZiB0aGUgdGVtcCBjb250ZXh0IGJlZm9yZSB3ZSByZXNldCBpdCAqLwog CXJlc3VsdCA9IGJtc19jb3B5KHJlc3VsdCk7CisJaWYgKHNjYW5fbGVhZnBhcnRfcnRpcykKKwkJ KnNjYW5fbGVhZnBhcnRfcnRpcyA9IGJtc19jb3B5KCpzY2FuX2xlYWZwYXJ0X3J0aXMpOwogCiAJ TWVtb3J5Q29udGV4dFJlc2V0KHBydW5lc3RhdGUtPnBydW5lX2NvbnRleHQpOwogCkBAIC0yMTcz LDEzICsyMzMxLDE1IEBAIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVuZVN0 YXRlICpwcnVuZXN0YXRlLAogICogZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlCiAgKgkJ UmVjdXJzaXZlIHdvcmtlciBmdW5jdGlvbiBmb3IgRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zCiAg KgotICogQWRkcyB2YWxpZCAobm9uLXBydW5hYmxlKSBzdWJwbGFuIElEcyB0byAqdmFsaWRzdWJw bGFucworICogQWRkcyB2YWxpZCAobm9uLXBydW5hYmxlKSBzdWJwbGFuIElEcyB0byAqdmFsaWRz dWJwbGFucyBhbmQgUlQgaW5kZXhlcyBvZgorICogb2YgdGhlIGNvcnJlc3BvbmRpbmcgbGVhZiBw YXJ0aXRpb25zIHRvICpzY2FuX2xlYWZwYXJ0X3J0aXMgKGlmIGFza2VkIGZvcikuCiAgKi8KIHN0 YXRpYyB2b2lkCiBmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoUGFydGl0aW9uUHJ1bmlu Z0RhdGEgKnBydW5lZGF0YSwKIAkJCQkJCQkgICBQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhICpw cHJ1bmUsCiAJCQkJCQkJICAgYm9vbCBpbml0aWFsX3BydW5lLAotCQkJCQkJCSAgIEJpdG1hcHNl dCAqKnZhbGlkc3VicGxhbnMpCisJCQkJCQkJICAgQml0bWFwc2V0ICoqdmFsaWRzdWJwbGFucywK KwkJCQkJCQkgICBCaXRtYXBzZXQgKipzY2FuX2xlYWZwYXJ0X3J0aXMpCiB7CiAJQml0bWFwc2V0 ICAqcGFydHNldDsKIAlpbnQJCQlpOwpAQCAtMjIwNiw4ICsyMzY2LDE0IEBAIGZpbmRfbWF0Y2hp bmdfc3VicGxhbnNfcmVjdXJzZShQYXJ0aXRpb25QcnVuaW5nRGF0YSAqcHJ1bmVkYXRhLAogCXdo aWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihwYXJ0c2V0LCBpKSkgPj0gMCkKIAl7CiAJCWlmIChw cHJ1bmUtPnN1YnBsYW5fbWFwW2ldID49IDApCisJCXsKIAkJCSp2YWxpZHN1YnBsYW5zID0gYm1z X2FkZF9tZW1iZXIoKnZhbGlkc3VicGxhbnMsCiAJCQkJCQkJCQkJCXBwcnVuZS0+c3VicGxhbl9t YXBbaV0pOworCQkJQXNzZXJ0KHBwcnVuZS0+cnRpX21hcFtpXSA+IDApOworCQkJaWYgKHNjYW5f bGVhZnBhcnRfcnRpcykKKwkJCQkqc2Nhbl9sZWFmcGFydF9ydGlzID0gYm1zX2FkZF9tZW1iZXIo KnNjYW5fbGVhZnBhcnRfcnRpcywKKwkJCQkJCQkJCQkJCQkgcHBydW5lLT5ydGlfbWFwW2ldKTsK KwkJfQogCQllbHNlCiAJCXsKIAkJCWludAkJCXBhcnRpZHggPSBwcHJ1bmUtPnN1YnBhcnRfbWFw W2ldOwpAQCAtMjIxNSw3ICsyMzgxLDggQEAgZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNl KFBhcnRpdGlvblBydW5pbmdEYXRhICpwcnVuZWRhdGEsCiAJCQlpZiAocGFydGlkeCA+PSAwKQog CQkJCWZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJzZShwcnVuZWRhdGEsCiAJCQkJCQkJCQkJ CSAgICZwcnVuZWRhdGEtPnBhcnRyZWxwcnVuZWRhdGFbcGFydGlkeF0sCi0JCQkJCQkJCQkJCSAg IGluaXRpYWxfcHJ1bmUsIHZhbGlkc3VicGxhbnMpOworCQkJCQkJCQkJCQkgICBpbml0aWFsX3By dW5lLCB2YWxpZHN1YnBsYW5zLAorCQkJCQkJCQkJCQkgICBzY2FuX2xlYWZwYXJ0X3J0aXMpOwog CQkJZWxzZQogCQkJewogCQkJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjVXRpbHMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCmluZGV4IDlkZjFm ODFlYTguLmY5Yzc5NzZmZjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNV dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCkBAIC0xMTksNiAr MTE5LDggQEAgQ3JlYXRlRXhlY3V0b3JTdGF0ZSh2b2lkKQogCWVzdGF0ZS0+ZXNfcmVsYXRpb25z ID0gTlVMTDsKIAllc3RhdGUtPmVzX3Jvd21hcmtzID0gTlVMTDsKIAllc3RhdGUtPmVzX3BsYW5u ZWRzdG10ID0gTlVMTDsKKwllc3RhdGUtPmVzX3BhcnRfcHJ1bmVfaW5mb3MgPSBOSUw7CisJZXN0 YXRlLT5lc19wYXJ0X3BydW5lX3Jlc3VsdCA9IE5VTEw7CiAKIAllc3RhdGUtPmVzX2p1bmtGaWx0 ZXIgPSBOVUxMOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMu YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCmluZGV4IGY5NDYwYWU1MDYuLmEy MTgyYTZiMWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCkBAIC04NDQsNyArODQ0LDcgQEAg cG9zdHF1ZWxfc3RhcnQoZXhlY3V0aW9uX3N0YXRlICplcywgU1FMRnVuY3Rpb25DYWNoZVB0ciBm Y2FjaGUpCiAJZWxzZQogCQlkZXN0ID0gTm9uZV9SZWNlaXZlcjsKIAotCWVzLT5xZCA9IENyZWF0 ZVF1ZXJ5RGVzYyhlcy0+c3RtdCwKKwllcy0+cWQgPSBDcmVhdGVRdWVyeURlc2MoZXMtPnN0bXQs IE5VTEwsCiAJCQkJCQkJIGZjYWNoZS0+c3JjLAogCQkJCQkJCSBHZXRBY3RpdmVTbmFwc2hvdCgp LAogCQkJCQkJCSBJbnZhbGlkU25hcHNob3QsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlQXBwZW5kLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKaW5k ZXggMzU3ZTEwYTFkNy4uOTY4ODBlMTIyYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUFwcGVuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwpA QCAtMTM0LDcgKzEzNCw3IEBAIEV4ZWNJbml0QXBwZW5kKEFwcGVuZCAqbm9kZSwgRVN0YXRlICpl c3RhdGUsIGludCBlZmxhZ3MpCiAJYXBwZW5kc3RhdGUtPmFzX2JlZ3VuID0gZmFsc2U7CiAKIAkv KiBJZiBydW4tdGltZSBwYXJ0aXRpb24gcHJ1bmluZyBpcyBlbmFibGVkLCB0aGVuIHNldCB0aGF0 IHVwIG5vdyAqLwotCWlmIChub2RlLT5wYXJ0X3BydW5lX2luZm8gIT0gTlVMTCkKKwlpZiAobm9k ZS0+cGFydF9wcnVuZV9pbmRleCA+PSAwKQogCXsKIAkJUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1 bmVzdGF0ZTsKIApAQCAtMTQ1LDcgKzE0NSw3IEBAIEV4ZWNJbml0QXBwZW5kKEFwcGVuZCAqbm9k ZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCSAqLwogCQlwcnVuZXN0YXRlID0gRXhl Y0luaXRQYXJ0aXRpb25QcnVuaW5nKCZhcHBlbmRzdGF0ZS0+cHMsCiAJCQkJCQkJCQkJCSAgbGlz dF9sZW5ndGgobm9kZS0+YXBwZW5kcGxhbnMpLAotCQkJCQkJCQkJCQkgIG5vZGUtPnBhcnRfcHJ1 bmVfaW5mbywKKwkJCQkJCQkJCQkJICBub2RlLT5wYXJ0X3BydW5lX2luZGV4LAogCQkJCQkJCQkJ CQkgICZ2YWxpZHN1YnBsYW5zKTsKIAkJYXBwZW5kc3RhdGUtPmFzX3BydW5lX3N0YXRlID0gcHJ1 bmVzdGF0ZTsKIAkJbnBsYW5zID0gYm1zX251bV9tZW1iZXJzKHZhbGlkc3VicGxhbnMpOwpAQCAt MTU1LDcgKzE1NSw4IEBAIEV4ZWNJbml0QXBwZW5kKEFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3Rh dGUsIGludCBlZmxhZ3MpCiAJCSAqIHN1YnBsYW4sIHdlIGNhbiBmaWxsIGFzX3ZhbGlkX3N1YnBs YW5zIGltbWVkaWF0ZWx5LCBwcmV2ZW50aW5nCiAJCSAqIGxhdGVyIGNhbGxzIHRvIEV4ZWNGaW5k TWF0Y2hpbmdTdWJQbGFucy4KIAkJICovCi0JCWlmICghcHJ1bmVzdGF0ZS0+ZG9fZXhlY19wcnVu ZSAmJiBucGxhbnMgPiAwKQorCQlpZiAoYXBwZW5kc3RhdGUtPmFzX3BydW5lX3N0YXRlID09IE5V TEwgfHwKKwkJCSghYXBwZW5kc3RhdGUtPmFzX3BydW5lX3N0YXRlLT5kb19leGVjX3BydW5lICYm IG5wbGFucyA+IDApKQogCQkJYXBwZW5kc3RhdGUtPmFzX3ZhbGlkX3N1YnBsYW5zID0gYm1zX2Fk ZF9yYW5nZShOVUxMLCAwLCBucGxhbnMgLSAxKTsKIAl9CiAJZWxzZQpAQCAtNTc3LDcgKzU3OCw3 IEBAIGNob29zZV9uZXh0X3N1YnBsYW5fbG9jYWxseShBcHBlbmRTdGF0ZSAqbm9kZSkKIAkJfQog CQllbHNlIGlmIChub2RlLT5hc192YWxpZF9zdWJwbGFucyA9PSBOVUxMKQogCQkJbm9kZS0+YXNf dmFsaWRfc3VicGxhbnMgPQotCQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5hc19w cnVuZV9zdGF0ZSwgZmFsc2UpOworCQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5h c19wcnVuZV9zdGF0ZSwgZmFsc2UsIE5VTEwpOwogCiAJCXdoaWNocGxhbiA9IC0xOwogCX0KQEAg LTY0Miw3ICs2NDMsNyBAQCBjaG9vc2VfbmV4dF9zdWJwbGFuX2Zvcl9sZWFkZXIoQXBwZW5kU3Rh dGUgKm5vZGUpCiAJCWlmIChub2RlLT5hc192YWxpZF9zdWJwbGFucyA9PSBOVUxMKQogCQl7CiAJ CQlub2RlLT5hc192YWxpZF9zdWJwbGFucyA9Ci0JCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5z KG5vZGUtPmFzX3BydW5lX3N0YXRlLCBmYWxzZSk7CisJCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBs YW5zKG5vZGUtPmFzX3BydW5lX3N0YXRlLCBmYWxzZSwgTlVMTCk7CiAKIAkJCS8qCiAJCQkgKiBN YXJrIGVhY2ggaW52YWxpZCBwbGFuIGFzIGZpbmlzaGVkIHRvIGFsbG93IHRoZSBsb29wIGJlbG93 IHRvCkBAIC03MTcsNyArNzE4LDcgQEAgY2hvb3NlX25leHRfc3VicGxhbl9mb3Jfd29ya2VyKEFw cGVuZFN0YXRlICpub2RlKQogCWVsc2UgaWYgKG5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zID09IE5V TEwpCiAJewogCQlub2RlLT5hc192YWxpZF9zdWJwbGFucyA9Ci0JCQlFeGVjRmluZE1hdGNoaW5n U3ViUGxhbnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNlKTsKKwkJCUV4ZWNGaW5kTWF0Y2hp bmdTdWJQbGFucyhub2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFsc2UsIE5VTEwpOwogCQltYXJrX2lu dmFsaWRfc3VicGxhbnNfYXNfZmluaXNoZWQobm9kZSk7CiAJfQogCkBAIC04NjgsNyArODY5LDcg QEAgRXhlY0FwcGVuZEFzeW5jQmVnaW4oQXBwZW5kU3RhdGUgKm5vZGUpCiAJaWYgKG5vZGUtPmFz X3ZhbGlkX3N1YnBsYW5zID09IE5VTEwpCiAJewogCQlub2RlLT5hc192YWxpZF9zdWJwbGFucyA9 Ci0JCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNl KTsKKwkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFs c2UsIE5VTEwpOwogCiAJCWNsYXNzaWZ5X21hdGNoaW5nX3N1YnBsYW5zKG5vZGUpOwogCX0KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKaW5kZXggZWNmOTA1MmUwMy4uNzcwOGNm ZmZkYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKQEAgLTgyLDcgKzgy LDcgQEAgRXhlY0luaXRNZXJnZUFwcGVuZChNZXJnZUFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3Rh dGUsIGludCBlZmxhZ3MpCiAJbWVyZ2VzdGF0ZS0+cHMuRXhlY1Byb2NOb2RlID0gRXhlY01lcmdl QXBwZW5kOwogCiAJLyogSWYgcnVuLXRpbWUgcGFydGl0aW9uIHBydW5pbmcgaXMgZW5hYmxlZCwg dGhlbiBzZXQgdGhhdCB1cCBub3cgKi8KLQlpZiAobm9kZS0+cGFydF9wcnVuZV9pbmZvICE9IE5V TEwpCisJaWYgKG5vZGUtPnBhcnRfcHJ1bmVfaW5kZXggPj0gMCkKIAl7CiAJCVBhcnRpdGlvblBy dW5lU3RhdGUgKnBydW5lc3RhdGU7CiAKQEAgLTkzLDcgKzkzLDcgQEAgRXhlY0luaXRNZXJnZUFw cGVuZChNZXJnZUFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCSAq LwogCQlwcnVuZXN0YXRlID0gRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKCZtZXJnZXN0YXRlLT5w cywKIAkJCQkJCQkJCQkJICBsaXN0X2xlbmd0aChub2RlLT5tZXJnZXBsYW5zKSwKLQkJCQkJCQkJ CQkJICBub2RlLT5wYXJ0X3BydW5lX2luZm8sCisJCQkJCQkJCQkJCSAgbm9kZS0+cGFydF9wcnVu ZV9pbmRleCwKIAkJCQkJCQkJCQkJICAmdmFsaWRzdWJwbGFucyk7CiAJCW1lcmdlc3RhdGUtPm1z X3BydW5lX3N0YXRlID0gcHJ1bmVzdGF0ZTsKIAkJbnBsYW5zID0gYm1zX251bV9tZW1iZXJzKHZh bGlkc3VicGxhbnMpOwpAQCAtMTAzLDcgKzEwMyw4IEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVy Z2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkgKiBzdWJwbGFu LCB3ZSBjYW4gZmlsbCBhc192YWxpZF9zdWJwbGFucyBpbW1lZGlhdGVseSwgcHJldmVudGluZwog CQkgKiBsYXRlciBjYWxscyB0byBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMuCiAJCSAqLwotCQlp ZiAoIXBydW5lc3RhdGUtPmRvX2V4ZWNfcHJ1bmUgJiYgbnBsYW5zID4gMCkKKwkJaWYgKG1lcmdl c3RhdGUtPm1zX3BydW5lX3N0YXRlID09IE5VTEwgfHwKKwkJCSghbWVyZ2VzdGF0ZS0+bXNfcHJ1 bmVfc3RhdGUtPmRvX2V4ZWNfcHJ1bmUgJiYgbnBsYW5zID4gMCkpCiAJCQltZXJnZXN0YXRlLT5t c192YWxpZF9zdWJwbGFucyA9IGJtc19hZGRfcmFuZ2UoTlVMTCwgMCwgbnBsYW5zIC0gMSk7CiAJ fQogCWVsc2UKQEAgLTIxOCw3ICsyMTksNyBAQCBFeGVjTWVyZ2VBcHBlbmQoUGxhblN0YXRlICpw c3RhdGUpCiAJCSAqLwogCQlpZiAobm9kZS0+bXNfdmFsaWRfc3VicGxhbnMgPT0gTlVMTCkKIAkJ CW5vZGUtPm1zX3ZhbGlkX3N1YnBsYW5zID0KLQkJCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMo bm9kZS0+bXNfcHJ1bmVfc3RhdGUsIGZhbHNlKTsKKwkJCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxh bnMobm9kZS0+bXNfcHJ1bmVfc3RhdGUsIGZhbHNlLCBOVUxMKTsKIAogCQkvKgogCQkgKiBGaXJz dCB0aW1lIHRocm91Z2g6IHB1bGwgdGhlIGZpcnN0IHR1cGxlIGZyb20gZWFjaCB2YWxpZCBzdWJw bGFuLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9zcGkuYwppbmRleCAwNDJhNWY4YjBhLi43MjllMmZkN2IyIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9z cGkuYwpAQCAtMTU3OCw2ICsxNTc4LDcgQEAgU1BJX2N1cnNvcl9vcGVuX2ludGVybmFsKGNvbnN0 IGNoYXIgKm5hbWUsIFNQSVBsYW5QdHIgcGxhbiwKIAlDYWNoZWRQbGFuU291cmNlICpwbGFuc291 cmNlOwogCUNhY2hlZFBsYW4gKmNwbGFuOwogCUxpc3QJICAgKnN0bXRfbGlzdDsKKwlMaXN0CSAg ICpwYXJ0X3BydW5lX3Jlc3VsdF9saXN0OwogCWNoYXIJICAgKnF1ZXJ5X3N0cmluZzsKIAlTbmFw c2hvdAlzbmFwc2hvdDsKIAlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CkBAIC0xNjU3LDcgKzE2 NTgsMTAgQEAgU1BJX2N1cnNvcl9vcGVuX2ludGVybmFsKGNvbnN0IGNoYXIgKm5hbWUsIFNQSVBs YW5QdHIgcGxhbiwKIAkgKi8KIAogCS8qIFJlcGxhbiBpZiBuZWVkZWQsIGFuZCBpbmNyZW1lbnQg cGxhbiByZWZjb3VudCBmb3IgcG9ydGFsICovCi0JY3BsYW4gPSBHZXRDYWNoZWRQbGFuKHBsYW5z b3VyY2UsIHBhcmFtTEksIE5VTEwsIF9TUElfY3VycmVudC0+cXVlcnlFbnYpOworCWNwbGFuID0g R2V0Q2FjaGVkUGxhbihwbGFuc291cmNlLCBwYXJhbUxJLCBOVUxMLCBfU1BJX2N1cnJlbnQtPnF1 ZXJ5RW52LAorCQkJCQkJICAmcGFydF9wcnVuZV9yZXN1bHRfbGlzdCk7CisJQXNzZXJ0KGxpc3Rf bGVuZ3RoKGNwbGFuLT5zdG10X2xpc3QpID09CisJCSAgIGxpc3RfbGVuZ3RoKHBhcnRfcHJ1bmVf cmVzdWx0X2xpc3QpKTsKIAlzdG10X2xpc3QgPSBjcGxhbi0+c3RtdF9saXN0OwogCiAJaWYgKCFw bGFuLT5zYXZlZCkKQEAgLTE2ODUsNiArMTY4OSw5IEBAIFNQSV9jdXJzb3Jfb3Blbl9pbnRlcm5h bChjb25zdCBjaGFyICpuYW1lLCBTUElQbGFuUHRyIHBsYW4sCiAJCQkJCSAgc3RtdF9saXN0LAog CQkJCQkgIGNwbGFuKTsKIAorCS8qIENvcHkgUGFydGl0aW9uUHJ1bmVSZXN1bHRzIGludG8gdGhl IHBvcnRhbCdzIGNvbnRleHQuICovCisJUG9ydGFsU3RvcmVQYXJ0aXRpb25QcnVuZVJlc3VsdHMo cG9ydGFsLCBwYXJ0X3BydW5lX3Jlc3VsdF9saXN0KTsKKwogCS8qCiAJICogU2V0IHVwIG9wdGlv bnMgZm9yIHBvcnRhbC4gIERlZmF1bHQgU0NST0xMIHR5cGUgaXMgY2hvc2VuIHRoZSBzYW1lIHdh eQogCSAqIGFzIFBlcmZvcm1DdXJzb3JPcGVuIGRvZXMgaXQuCkBAIC0yMDkyLDcgKzIwOTksOCBA QCBTUElfcGxhbl9nZXRfY2FjaGVkX3BsYW4oU1BJUGxhblB0ciBwbGFuKQogCS8qIEdldCB0aGUg Z2VuZXJpYyBwbGFuIGZvciB0aGUgcXVlcnkgKi8KIAljcGxhbiA9IEdldENhY2hlZFBsYW4ocGxh bnNvdXJjZSwgTlVMTCwKIAkJCQkJCSAgcGxhbi0+c2F2ZWQgPyBDdXJyZW50UmVzb3VyY2VPd25l ciA6IE5VTEwsCi0JCQkJCQkgIF9TUElfY3VycmVudC0+cXVlcnlFbnYpOworCQkJCQkJICBfU1BJ X2N1cnJlbnQtPnF1ZXJ5RW52LAorCQkJCQkJICBOVUxMIC8qIE5vdCBpbnRlcmVzdGVkIGluIFBh cnRpdGlvblBydW5lUmVzdWx0cyAqLyk7CiAJQXNzZXJ0KGNwbGFuID09IHBsYW5zb3VyY2UtPmdw bGFuKTsKIAogCS8qIFBvcCB0aGUgZXJyb3IgY29udGV4dCBzdGFjayAqLwpAQCAtMjQ3Myw3ICsy NDgxLDkgQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVj dXRlT3B0aW9ucyAqb3B0aW9ucywKIAl7CiAJCUNhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2Ug PSAoQ2FjaGVkUGxhblNvdXJjZSAqKSBsZmlyc3QobGMxKTsKIAkJTGlzdAkgICAqc3RtdF9saXN0 OwotCQlMaXN0Q2VsbCAgICpsYzI7CisJCUxpc3QJICAgKnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3Q7 CisJCUxpc3RDZWxsICAgKmxjMiwKKwkJCQkgICAqbGMzOwogCiAJCXNwaWNhbGxiYWNrYXJnLnF1 ZXJ5ID0gcGxhbnNvdXJjZS0+cXVlcnlfc3RyaW5nOwogCkBAIC0yNTQ5LDggKzI1NTksMTAgQEAg X1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9u cyAqb3B0aW9ucywKIAkJICogcGxhbiwgdGhlIHJlZmNvdW50IG11c3QgYmUgYmFja2VkIGJ5IHRo ZSBwbGFuX293bmVyLgogCQkgKi8KIAkJY3BsYW4gPSBHZXRDYWNoZWRQbGFuKHBsYW5zb3VyY2Us IG9wdGlvbnMtPnBhcmFtcywKLQkJCQkJCQkgIHBsYW5fb3duZXIsIF9TUElfY3VycmVudC0+cXVl cnlFbnYpOwotCisJCQkJCQkJICBwbGFuX293bmVyLCBfU1BJX2N1cnJlbnQtPnF1ZXJ5RW52LAor CQkJCQkJCSAmcGFydF9wcnVuZV9yZXN1bHRfbGlzdCk7CisJCUFzc2VydChsaXN0X2xlbmd0aChj cGxhbi0+c3RtdF9saXN0KSA9PQorCQkJICAgbGlzdF9sZW5ndGgocGFydF9wcnVuZV9yZXN1bHRf bGlzdCkpOwogCQlzdG10X2xpc3QgPSBjcGxhbi0+c3RtdF9saXN0OwogCiAJCS8qCkBAIC0yNTg5 LDkgKzI2MDEsMTAgQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBT UElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJCX0KIAkJfQogCi0JCWZvcmVhY2gobGMyLCBz dG10X2xpc3QpCisJCWZvcmJvdGgobGMyLCBzdG10X2xpc3QsIGxjMywgcGFydF9wcnVuZV9yZXN1 bHRfbGlzdCkKIAkJewogCQkJUGxhbm5lZFN0bXQgKnN0bXQgPSBsZmlyc3Rfbm9kZShQbGFubmVk U3RtdCwgbGMyKTsKKwkJCVBhcnRpdGlvblBydW5lUmVzdWx0ICpwYXJ0X3BydW5lX3Jlc3VsdCA9 IGxmaXJzdF9ub2RlKFBhcnRpdGlvblBydW5lUmVzdWx0LCBsYzMpOwogCQkJYm9vbAkJY2FuU2V0 VGFnID0gc3RtdC0+Y2FuU2V0VGFnOwogCQkJRGVzdFJlY2VpdmVyICpkZXN0OwogCkBAIC0yNjYz LDcgKzI2NzYsNyBAQCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQ SUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAogCQkJCWVsc2UKIAkJCQkJc25hcCA9IEludmFsaWRT bmFwc2hvdDsKIAotCQkJCXFkZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHN0bXQsCisJCQkJcWRlc2Mg PSBDcmVhdGVRdWVyeURlc2Moc3RtdCwgcGFydF9wcnVuZV9yZXN1bHQsCiAJCQkJCQkJCQkJcGxh bnNvdXJjZS0+cXVlcnlfc3RyaW5nLAogCQkJCQkJCQkJCXNuYXAsIGNyb3NzY2hlY2tfc25hcHNo b3QsCiAJCQkJCQkJCQkJZGVzdCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlm dW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKaW5kZXggODM2ZjQyN2VhOC4u NTlhNzA1NDAxMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKKysr IGIvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKQEAgLTk2LDcgKzk2LDEwIEBAIF9jb3B5 UGxhbm5lZFN0bXQoY29uc3QgUGxhbm5lZFN0bXQgKmZyb20pCiAJQ09QWV9TQ0FMQVJfRklFTEQo cGFyYWxsZWxNb2RlTmVlZGVkKTsKIAlDT1BZX1NDQUxBUl9GSUVMRChqaXRGbGFncyk7CiAJQ09Q WV9OT0RFX0ZJRUxEKHBsYW5UcmVlKTsKKwlDT1BZX05PREVfRklFTEQocGFydFBydW5lSW5mb3Mp OworCUNPUFlfU0NBTEFSX0ZJRUxEKGNvbnRhaW5zSW5pdGlhbFBydW5pbmcpOwogCUNPUFlfTk9E RV9GSUVMRChydGFibGUpOworCUNPUFlfQklUTUFQU0VUX0ZJRUxEKG1pbkxvY2tSZWxpZHMpOwog CUNPUFlfTk9ERV9GSUVMRChyZXN1bHRSZWxhdGlvbnMpOwogCUNPUFlfTk9ERV9GSUVMRChhcHBl bmRSZWxhdGlvbnMpOwogCUNPUFlfTk9ERV9GSUVMRChzdWJwbGFucyk7CkBAIC0yNTMsNyArMjU2 LDcgQEAgX2NvcHlBcHBlbmQoY29uc3QgQXBwZW5kICpmcm9tKQogCUNPUFlfTk9ERV9GSUVMRChh cHBlbmRwbGFucyk7CiAJQ09QWV9TQ0FMQVJfRklFTEQobmFzeW5jcGxhbnMpOwogCUNPUFlfU0NB TEFSX0ZJRUxEKGZpcnN0X3BhcnRpYWxfcGxhbik7Ci0JQ09QWV9OT0RFX0ZJRUxEKHBhcnRfcHJ1 bmVfaW5mbyk7CisJQ09QWV9TQ0FMQVJfRklFTEQocGFydF9wcnVuZV9pbmRleCk7CiAKIAlyZXR1 cm4gbmV3bm9kZTsKIH0KQEAgLTI4MSw3ICsyODQsNyBAQCBfY29weU1lcmdlQXBwZW5kKGNvbnN0 IE1lcmdlQXBwZW5kICpmcm9tKQogCUNPUFlfUE9JTlRFUl9GSUVMRChzb3J0T3BlcmF0b3JzLCBm cm9tLT5udW1Db2xzICogc2l6ZW9mKE9pZCkpOwogCUNPUFlfUE9JTlRFUl9GSUVMRChjb2xsYXRp b25zLCBmcm9tLT5udW1Db2xzICogc2l6ZW9mKE9pZCkpOwogCUNPUFlfUE9JTlRFUl9GSUVMRChu dWxsc0ZpcnN0LCBmcm9tLT5udW1Db2xzICogc2l6ZW9mKGJvb2wpKTsKLQlDT1BZX05PREVfRklF TEQocGFydF9wcnVuZV9pbmZvKTsKKwlDT1BZX1NDQUxBUl9GSUVMRChwYXJ0X3BydW5lX2luZGV4 KTsKIAogCXJldHVybiBuZXdub2RlOwogfQpAQCAtMTI4Myw2ICsxMjg2LDggQEAgX2NvcHlQYXJ0 aXRpb25QcnVuZUluZm8oY29uc3QgUGFydGl0aW9uUHJ1bmVJbmZvICpmcm9tKQogCVBhcnRpdGlv blBydW5lSW5mbyAqbmV3bm9kZSA9IG1ha2VOb2RlKFBhcnRpdGlvblBydW5lSW5mbyk7CiAKIAlD T1BZX05PREVfRklFTEQocHJ1bmVfaW5mb3MpOworCUNPUFlfU0NBTEFSX0ZJRUxEKG5lZWRzX2lu aXRfcHJ1bmluZyk7CisJQ09QWV9TQ0FMQVJfRklFTEQobmVlZHNfZXhlY19wcnVuaW5nKTsKIAlD T1BZX0JJVE1BUFNFVF9GSUVMRChvdGhlcl9zdWJwbGFucyk7CiAKIAlyZXR1cm4gbmV3bm9kZTsK QEAgLTEyOTksNiArMTMwNCw3IEBAIF9jb3B5UGFydGl0aW9uZWRSZWxQcnVuZUluZm8oY29uc3Qg UGFydGl0aW9uZWRSZWxQcnVuZUluZm8gKmZyb20pCiAJQ09QWV9QT0lOVEVSX0ZJRUxEKHN1YnBs YW5fbWFwLCBmcm9tLT5ucGFydHMgKiBzaXplb2YoaW50KSk7CiAJQ09QWV9QT0lOVEVSX0ZJRUxE KHN1YnBhcnRfbWFwLCBmcm9tLT5ucGFydHMgKiBzaXplb2YoaW50KSk7CiAJQ09QWV9QT0lOVEVS X0ZJRUxEKHJlbGlkX21hcCwgZnJvbS0+bnBhcnRzICogc2l6ZW9mKE9pZCkpOworCUNPUFlfUE9J TlRFUl9GSUVMRChydGlfbWFwLCBmcm9tLT5ucGFydHMgKiBzaXplb2YoSW5kZXgpKTsKIAlDT1BZ X05PREVfRklFTEQoaW5pdGlhbF9wcnVuaW5nX3N0ZXBzKTsKIAlDT1BZX05PREVfRklFTEQoZXhl Y19wcnVuaW5nX3N0ZXBzKTsKIAlDT1BZX0JJVE1BUFNFVF9GSUVMRChleGVjcGFyYW1pZHMpOwpA QCAtNTQ3Myw2ICs1NDc5LDIxIEBAIF9jb3B5RXh0ZW5zaWJsZU5vZGUoY29uc3QgRXh0ZW5zaWJs ZU5vZGUgKmZyb20pCiAJcmV0dXJuIG5ld25vZGU7CiB9CiAKKy8qICoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCQkJCQll eGVjbm9kZXMuaCBjb3B5IGZ1bmN0aW9ucworICogKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitzdGF0aWMgUGFydGl0 aW9uUHJ1bmVSZXN1bHQgKgorX2NvcHlQYXJ0aXRpb25QcnVuZVJlc3VsdChjb25zdCBQYXJ0aXRp b25QcnVuZVJlc3VsdCAqZnJvbSkKK3sKKwlQYXJ0aXRpb25QcnVuZVJlc3VsdCAqbmV3bm9kZSA9 IG1ha2VOb2RlKFBhcnRpdGlvblBydW5lUmVzdWx0KTsKKworCUNPUFlfTk9ERV9GSUVMRCh2YWxp ZF9zdWJwbGFuX29mZnNfbGlzdCk7CisJQ09QWV9CSVRNQVBTRVRfRklFTEQoc2Nhbl9sZWFmcGFy dF9ydGlzKTsKKworCXJldHVybiBuZXdub2RlOworfQorCiAvKiAqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgkJCQkJdmFs dWUuaCBjb3B5IGZ1bmN0aW9ucwogICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtNTUyNyw3ICs1NTQ4LDYgQEAgX2Nv cHlCaXRTdHJpbmcoY29uc3QgQml0U3RyaW5nICpmcm9tKQogCXJldHVybiBuZXdub2RlOwogfQog Ci0KIHN0YXRpYyBGb3JlaWduS2V5Q2FjaGVJbmZvICoKIF9jb3B5Rm9yZWlnbktleUNhY2hlSW5m byhjb25zdCBGb3JlaWduS2V5Q2FjaGVJbmZvICpmcm9tKQogewpAQCAtNjU2OSw2ICs2NTg5LDEz IEBAIGNvcHlPYmplY3RJbXBsKGNvbnN0IHZvaWQgKmZyb20pCiAJCQlyZXR2YWwgPSBfY29weVB1 YmxpY2F0aW9uVGFibGUoZnJvbSk7CiAJCQlicmVhazsKIAorCQkJLyoKKwkJCSAqIEVYRUNVVElP TiBOT0RFUworCQkJICovCisJCWNhc2UgVF9QYXJ0aXRpb25QcnVuZVJlc3VsdDoKKwkJCXJldHZh bCA9IF9jb3B5UGFydGl0aW9uUHJ1bmVSZXN1bHQoZnJvbSk7CisJCQlicmVhazsKKwogCQkJLyoK IAkJCSAqIE1JU0NFTExBTkVPVVMgTk9ERVMKIAkJCSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvbm9kZXMvb3V0ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKaW5kZXgg ZDVmNWU3NmM1NS4uM2RhZGE2ODI5MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvb3V0 ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCkBAIC0zMTQsNyArMzE0 LDEwIEBAIF9vdXRQbGFubmVkU3RtdChTdHJpbmdJbmZvIHN0ciwgY29uc3QgUGxhbm5lZFN0bXQg Km5vZGUpCiAJV1JJVEVfQk9PTF9GSUVMRChwYXJhbGxlbE1vZGVOZWVkZWQpOwogCVdSSVRFX0lO VF9GSUVMRChqaXRGbGFncyk7CiAJV1JJVEVfTk9ERV9GSUVMRChwbGFuVHJlZSk7CisJV1JJVEVf Tk9ERV9GSUVMRChwYXJ0UHJ1bmVJbmZvcyk7CisJV1JJVEVfQk9PTF9GSUVMRChjb250YWluc0lu aXRpYWxQcnVuaW5nKTsKIAlXUklURV9OT0RFX0ZJRUxEKHJ0YWJsZSk7CisJV1JJVEVfQklUTUFQ U0VUX0ZJRUxEKG1pbkxvY2tSZWxpZHMpOwogCVdSSVRFX05PREVfRklFTEQocmVzdWx0UmVsYXRp b25zKTsKIAlXUklURV9OT0RFX0ZJRUxEKGFwcGVuZFJlbGF0aW9ucyk7CiAJV1JJVEVfTk9ERV9G SUVMRChzdWJwbGFucyk7CkBAIC00NDMsNyArNDQ2LDcgQEAgX291dEFwcGVuZChTdHJpbmdJbmZv IHN0ciwgY29uc3QgQXBwZW5kICpub2RlKQogCVdSSVRFX05PREVfRklFTEQoYXBwZW5kcGxhbnMp OwogCVdSSVRFX0lOVF9GSUVMRChuYXN5bmNwbGFucyk7CiAJV1JJVEVfSU5UX0ZJRUxEKGZpcnN0 X3BhcnRpYWxfcGxhbik7Ci0JV1JJVEVfTk9ERV9GSUVMRChwYXJ0X3BydW5lX2luZm8pOworCVdS SVRFX0lOVF9GSUVMRChwYXJ0X3BydW5lX2luZGV4KTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTQ2 MCw3ICs0NjMsNyBAQCBfb3V0TWVyZ2VBcHBlbmQoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IE1lcmdl QXBwZW5kICpub2RlKQogCVdSSVRFX09JRF9BUlJBWShzb3J0T3BlcmF0b3JzLCBub2RlLT5udW1D b2xzKTsKIAlXUklURV9PSURfQVJSQVkoY29sbGF0aW9ucywgbm9kZS0+bnVtQ29scyk7CiAJV1JJ VEVfQk9PTF9BUlJBWShudWxsc0ZpcnN0LCBub2RlLT5udW1Db2xzKTsKLQlXUklURV9OT0RFX0ZJ RUxEKHBhcnRfcHJ1bmVfaW5mbyk7CisJV1JJVEVfSU5UX0ZJRUxEKHBhcnRfcHJ1bmVfaW5kZXgp OwogfQogCiBzdGF0aWMgdm9pZApAQCAtMTAwOSw2ICsxMDEyLDggQEAgX291dFBhcnRpdGlvblBy dW5lSW5mbyhTdHJpbmdJbmZvIHN0ciwgY29uc3QgUGFydGl0aW9uUHJ1bmVJbmZvICpub2RlKQog CVdSSVRFX05PREVfVFlQRSgiUEFSVElUSU9OUFJVTkVJTkZPIik7CiAKIAlXUklURV9OT0RFX0ZJ RUxEKHBydW5lX2luZm9zKTsKKwlXUklURV9CT09MX0ZJRUxEKG5lZWRzX2luaXRfcHJ1bmluZyk7 CisJV1JJVEVfQk9PTF9GSUVMRChuZWVkc19leGVjX3BydW5pbmcpOwogCVdSSVRFX0JJVE1BUFNF VF9GSUVMRChvdGhlcl9zdWJwbGFucyk7CiB9CiAKQEAgLTEwMjMsNiArMTAyOCw3IEBAIF9vdXRQ YXJ0aXRpb25lZFJlbFBydW5lSW5mbyhTdHJpbmdJbmZvIHN0ciwgY29uc3QgUGFydGl0aW9uZWRS ZWxQcnVuZUluZm8gKm5vZGUpCiAJV1JJVEVfSU5UX0FSUkFZKHN1YnBsYW5fbWFwLCBub2RlLT5u cGFydHMpOwogCVdSSVRFX0lOVF9BUlJBWShzdWJwYXJ0X21hcCwgbm9kZS0+bnBhcnRzKTsKIAlX UklURV9PSURfQVJSQVkocmVsaWRfbWFwLCBub2RlLT5ucGFydHMpOworCVdSSVRFX0lOREVYX0FS UkFZKHJ0aV9tYXAsIG5vZGUtPm5wYXJ0cyk7CiAJV1JJVEVfTk9ERV9GSUVMRChpbml0aWFsX3By dW5pbmdfc3RlcHMpOwogCVdSSVRFX05PREVfRklFTEQoZXhlY19wcnVuaW5nX3N0ZXBzKTsKIAlX UklURV9CSVRNQVBTRVRfRklFTEQoZXhlY3BhcmFtaWRzKTsKQEAgLTI0MjUsNiArMjQzMSw5IEBA IF9vdXRQbGFubmVyR2xvYmFsKFN0cmluZ0luZm8gc3RyLCBjb25zdCBQbGFubmVyR2xvYmFsICpu b2RlKQogCVdSSVRFX05PREVfRklFTEQoZmluYWxyb3dtYXJrcyk7CiAJV1JJVEVfTk9ERV9GSUVM RChyZXN1bHRSZWxhdGlvbnMpOwogCVdSSVRFX05PREVfRklFTEQoYXBwZW5kUmVsYXRpb25zKTsK KwlXUklURV9OT0RFX0ZJRUxEKHBhcnRQcnVuZUluZm9zKTsKKwlXUklURV9CT09MX0ZJRUxEKGNv bnRhaW5zSW5pdGlhbFBydW5pbmcpOworCVdSSVRFX0JJVE1BUFNFVF9GSUVMRChtaW5Mb2NrUmVs aWRzKTsKIAlXUklURV9OT0RFX0ZJRUxEKHJlbGF0aW9uT2lkcyk7CiAJV1JJVEVfTk9ERV9GSUVM RChpbnZhbEl0ZW1zKTsKIAlXUklURV9OT0RFX0ZJRUxEKHBhcmFtRXhlY1R5cGVzKTsKQEAgLTI0 OTIsNiArMjUwMSw3IEBAIF9vdXRQbGFubmVySW5mbyhTdHJpbmdJbmZvIHN0ciwgY29uc3QgUGxh bm5lckluZm8gKm5vZGUpCiAJV1JJVEVfQklUTUFQU0VUX0ZJRUxEKGN1ck91dGVyUmVscyk7CiAJ V1JJVEVfTk9ERV9GSUVMRChjdXJPdXRlclBhcmFtcyk7CiAJV1JJVEVfQk9PTF9GSUVMRChwYXJ0 Q29sc1VwZGF0ZWQpOworCVdSSVRFX05PREVfRklFTEQocGFydFBydW5lSW5mb3MpOwogfQogCiBz dGF0aWMgdm9pZApAQCAtMjg0NSw2ICsyODU1LDIxIEBAIF9vdXRFeHRlbnNpYmxlTm9kZShTdHJp bmdJbmZvIHN0ciwgY29uc3QgRXh0ZW5zaWJsZU5vZGUgKm5vZGUpCiAJbWV0aG9kcy0+bm9kZU91 dChzdHIsIG5vZGUpOwogfQogCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKglTdHVmZiBm cm9tIGV4ZWNub2Rlcy5oCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgdm9p ZAorX291dFBhcnRpdGlvblBydW5lUmVzdWx0KFN0cmluZ0luZm8gc3RyLCBjb25zdCBQYXJ0aXRp b25QcnVuZVJlc3VsdCAqbm9kZSkKK3sKKwlXUklURV9OT0RFX1RZUEUoIlBBUlRJVElPTlBSVU5F UkVTVUxUIik7CisKKwlXUklURV9OT0RFX0ZJRUxEKHZhbGlkX3N1YnBsYW5fb2Zmc19saXN0KTsK KwlXUklURV9CSVRNQVBTRVRfRklFTEQoc2Nhbl9sZWFmcGFydF9ydGlzKTsKK30KKwogLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCiAgKgogICoJU3R1ZmYgZnJvbSBwYXJzZW5vZGVzLmguCkBAIC00NzU0 LDYgKzQ3NzksMTMgQEAgb3V0Tm9kZShTdHJpbmdJbmZvIHN0ciwgY29uc3Qgdm9pZCAqb2JqKQog CQkJCV9vdXRKc29uVGFibGVTaWJsaW5nKHN0ciwgb2JqKTsKIAkJCQlicmVhazsKIAorCQkJCS8q CisJCQkJICogRVhFQ1VUSU9OIE5PREVTCisJCQkJICovCisJCQljYXNlIFRfUGFydGl0aW9uUHJ1 bmVSZXN1bHQ6CisJCQkJX291dFBhcnRpdGlvblBydW5lUmVzdWx0KHN0ciwgb2JqKTsKKwkJCQli cmVhazsKKwogCQkJZGVmYXVsdDoKIAogCQkJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9u b2Rlcy9yZWFkZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jCmluZGV4IDNk MTUwY2IyNWQuLjZhNmZjZWMwM2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRm dW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jCkBAIC0xNjQsNiArMTY0 LDExIEBACiAJdG9rZW4gPSBwZ19zdHJ0b2soJmxlbmd0aCk7CQkvKiBza2lwIDpmbGRuYW1lICov IFwKIAlsb2NhbF9ub2RlLT5mbGRuYW1lID0gcmVhZEludENvbHMobGVuKQogCisvKiBSZWFkIGFu IEluZGV4IGFycmF5ICovCisjZGVmaW5lIFJFQURfSU5ERVhfQVJSQVkoZmxkbmFtZSwgbGVuKSBc CisJdG9rZW4gPSBwZ19zdHJ0b2soJmxlbmd0aCk7CQkvKiBza2lwIDpmbGRuYW1lICovIFwKKwls b2NhbF9ub2RlLT5mbGRuYW1lID0gcmVhZEluZGV4Q29scyhsZW4pCisKIC8qIFJlYWQgYSBib29s IGFycmF5ICovCiAjZGVmaW5lIFJFQURfQk9PTF9BUlJBWShmbGRuYW1lLCBsZW4pIFwKIAl0b2tl biA9IHBnX3N0cnRvaygmbGVuZ3RoKTsJCS8qIHNraXAgOmZsZG5hbWUgKi8gXApAQCAtMTgxNSw3 ICsxODIwLDEwIEBAIF9yZWFkUGxhbm5lZFN0bXQodm9pZCkKIAlSRUFEX0JPT0xfRklFTEQocGFy YWxsZWxNb2RlTmVlZGVkKTsKIAlSRUFEX0lOVF9GSUVMRChqaXRGbGFncyk7CiAJUkVBRF9OT0RF X0ZJRUxEKHBsYW5UcmVlKTsKKwlSRUFEX05PREVfRklFTEQocGFydFBydW5lSW5mb3MpOworCVJF QURfQk9PTF9GSUVMRChjb250YWluc0luaXRpYWxQcnVuaW5nKTsKIAlSRUFEX05PREVfRklFTEQo cnRhYmxlKTsKKwlSRUFEX0JJVE1BUFNFVF9GSUVMRChtaW5Mb2NrUmVsaWRzKTsKIAlSRUFEX05P REVfRklFTEQocmVzdWx0UmVsYXRpb25zKTsKIAlSRUFEX05PREVfRklFTEQoYXBwZW5kUmVsYXRp b25zKTsKIAlSRUFEX05PREVfRklFTEQoc3VicGxhbnMpOwpAQCAtMTk0Nyw3ICsxOTU1LDcgQEAg X3JlYWRBcHBlbmQodm9pZCkKIAlSRUFEX05PREVfRklFTEQoYXBwZW5kcGxhbnMpOwogCVJFQURf SU5UX0ZJRUxEKG5hc3luY3BsYW5zKTsKIAlSRUFEX0lOVF9GSUVMRChmaXJzdF9wYXJ0aWFsX3Bs YW4pOwotCVJFQURfTk9ERV9GSUVMRChwYXJ0X3BydW5lX2luZm8pOworCVJFQURfSU5UX0ZJRUxE KHBhcnRfcHJ1bmVfaW5kZXgpOwogCiAJUkVBRF9ET05FKCk7CiB9CkBAIC0xOTY5LDcgKzE5Nzcs NyBAQCBfcmVhZE1lcmdlQXBwZW5kKHZvaWQpCiAJUkVBRF9PSURfQVJSQVkoc29ydE9wZXJhdG9y cywgbG9jYWxfbm9kZS0+bnVtQ29scyk7CiAJUkVBRF9PSURfQVJSQVkoY29sbGF0aW9ucywgbG9j YWxfbm9kZS0+bnVtQ29scyk7CiAJUkVBRF9CT09MX0FSUkFZKG51bGxzRmlyc3QsIGxvY2FsX25v ZGUtPm51bUNvbHMpOwotCVJFQURfTk9ERV9GSUVMRChwYXJ0X3BydW5lX2luZm8pOworCVJFQURf SU5UX0ZJRUxEKHBhcnRfcHJ1bmVfaW5kZXgpOwogCiAJUkVBRF9ET05FKCk7CiB9CkBAIC0yNzY3 LDYgKzI3NzUsOCBAQCBfcmVhZFBhcnRpdGlvblBydW5lSW5mbyh2b2lkKQogCVJFQURfTE9DQUxT KFBhcnRpdGlvblBydW5lSW5mbyk7CiAKIAlSRUFEX05PREVfRklFTEQocHJ1bmVfaW5mb3MpOwor CVJFQURfQk9PTF9GSUVMRChuZWVkc19pbml0X3BydW5pbmcpOworCVJFQURfQk9PTF9GSUVMRChu ZWVkc19leGVjX3BydW5pbmcpOwogCVJFQURfQklUTUFQU0VUX0ZJRUxEKG90aGVyX3N1YnBsYW5z KTsKIAogCVJFQURfRE9ORSgpOwpAQCAtMjc4Myw2ICsyNzkzLDcgQEAgX3JlYWRQYXJ0aXRpb25l ZFJlbFBydW5lSW5mbyh2b2lkKQogCVJFQURfSU5UX0FSUkFZKHN1YnBsYW5fbWFwLCBsb2NhbF9u b2RlLT5ucGFydHMpOwogCVJFQURfSU5UX0FSUkFZKHN1YnBhcnRfbWFwLCBsb2NhbF9ub2RlLT5u cGFydHMpOwogCVJFQURfT0lEX0FSUkFZKHJlbGlkX21hcCwgbG9jYWxfbm9kZS0+bnBhcnRzKTsK KwlSRUFEX0lOREVYX0FSUkFZKHJ0aV9tYXAsIGxvY2FsX25vZGUtPm5wYXJ0cyk7CiAJUkVBRF9O T0RFX0ZJRUxEKGluaXRpYWxfcHJ1bmluZ19zdGVwcyk7CiAJUkVBRF9OT0RFX0ZJRUxEKGV4ZWNf cHJ1bmluZ19zdGVwcyk7CiAJUkVBRF9CSVRNQVBTRVRfRklFTEQoZXhlY3BhcmFtaWRzKTsKQEAg LTI5MzYsNiArMjk0NywyMSBAQCBfcmVhZFBhcnRpdGlvblJhbmdlRGF0dW0odm9pZCkKIAlSRUFE X0RPTkUoKTsKIH0KIAorCisvKgorICogX3JlYWRQYXJ0aXRpb25QcnVuZVJlc3VsdAorICovCitz dGF0aWMgUGFydGl0aW9uUHJ1bmVSZXN1bHQgKgorX3JlYWRQYXJ0aXRpb25QcnVuZVJlc3VsdCh2 b2lkKQoreworCVJFQURfTE9DQUxTKFBhcnRpdGlvblBydW5lUmVzdWx0KTsKKworCVJFQURfTk9E RV9GSUVMRCh2YWxpZF9zdWJwbGFuX29mZnNfbGlzdCk7CisJUkVBRF9CSVRNQVBTRVRfRklFTEQo c2Nhbl9sZWFmcGFydF9ydGlzKTsKKworCVJFQURfRE9ORSgpOworfQorCiAvKgogICogcGFyc2VO b2RlU3RyaW5nCiAgKgpAQCAtMzIzMyw2ICszMjU5LDggQEAgcGFyc2VOb2RlU3RyaW5nKHZvaWQp CiAJCXJldHVybl92YWx1ZSA9IF9yZWFkSnNvblRhYmxlUGFyZW50KCk7CiAJZWxzZSBpZiAoTUFU Q0goIkpTT05UQUJTTk9ERSIsIDEyKSkKIAkJcmV0dXJuX3ZhbHVlID0gX3JlYWRKc29uVGFibGVT aWJsaW5nKCk7CisJZWxzZSBpZiAoTUFUQ0goIlBBUlRJVElPTlBSVU5FUkVTVUxUIiwgMjApKQor CQlyZXR1cm5fdmFsdWUgPSBfcmVhZFBhcnRpdGlvblBydW5lUmVzdWx0KCk7CiAJZWxzZQogCXsK IAkJZWxvZyhFUlJPUiwgImJhZGx5IGZvcm1hdHRlZCBub2RlIHN0cmluZyBcIiUuMzJzXCIuLi4i LCB0b2tlbik7CkBAIC0zMzc2LDYgKzM0MDQsMzAgQEAgcmVhZEludENvbHMoaW50IG51bUNvbHMp CiAJcmV0dXJuIGludF92YWxzOwogfQogCisvKgorICogcmVhZEluZGV4Q29scworICovCitJbmRl eCAqCityZWFkSW5kZXhDb2xzKGludCBudW1Db2xzKQoreworCWludAkJCXRva2VuTGVuZ3RoLAor CQkJCWk7CisJY29uc3QgY2hhciAqdG9rZW47CisJSW5kZXgJICAgKmluZGV4X3ZhbHM7CisKKwlp ZiAobnVtQ29scyA8PSAwKQorCQlyZXR1cm4gTlVMTDsKKworCWluZGV4X3ZhbHMgPSAoSW5kZXgg KikgcGFsbG9jKG51bUNvbHMgKiBzaXplb2YoSW5kZXgpKTsKKwlmb3IgKGkgPSAwOyBpIDwgbnVt Q29sczsgaSsrKQorCXsKKwkJdG9rZW4gPSBwZ19zdHJ0b2soJnRva2VuTGVuZ3RoKTsKKwkJaW5k ZXhfdmFsc1tpXSA9IGF0b3VpKHRva2VuKTsKKwl9CisKKwlyZXR1cm4gaW5kZXhfdmFsczsKK30K KwogLyoKICAqIHJlYWRCb29sQ29scwogICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVh dGVwbGFuLmMKaW5kZXggOTU0NzZhZGEwYi4uZmUwZGYyZjFkMSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGlt aXplci9wbGFuL2NyZWF0ZXBsYW4uYwpAQCAtMTE4NCw3ICsxMTg0LDYgQEAgY3JlYXRlX2FwcGVu ZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBBcHBlbmRQYXRoICpiZXN0X3BhdGgsIGludCBmbGFn cykKIAlMaXN0Q2VsbCAgICpzdWJwYXRoczsKIAlpbnQJCQluYXN5bmNwbGFucyA9IDA7CiAJUmVs T3B0SW5mbyAqcmVsID0gYmVzdF9wYXRoLT5wYXRoLnBhcmVudDsKLQlQYXJ0aXRpb25QcnVuZUlu Zm8gKnBhcnRwcnVuZWluZm8gPSBOVUxMOwogCWludAkJCW5vZGVudW1zb3J0a2V5cyA9IDA7CiAJ QXR0ck51bWJlciAqbm9kZVNvcnRDb2xJZHggPSBOVUxMOwogCU9pZAkJICAgKm5vZGVTb3J0T3Bl cmF0b3JzID0gTlVMTDsKQEAgLTEzMzUsNiArMTMzNCw5IEBAIGNyZWF0ZV9hcHBlbmRfcGxhbihQ bGFubmVySW5mbyAqcm9vdCwgQXBwZW5kUGF0aCAqYmVzdF9wYXRoLCBpbnQgZmxhZ3MpCiAJCXN1 YnBsYW5zID0gbGFwcGVuZChzdWJwbGFucywgc3VicGxhbik7CiAJfQogCisJLyogU2V0IGJlbG93 IGlmIHdlIGZpbmQgcXVhbHMgdGhhdCB3ZSBjYW4gdXNlIHRvIHJ1bi10aW1lIHBydW5lICovCisJ cGxhbi0+cGFydF9wcnVuZV9pbmRleCA9IC0xOworCiAJLyoKIAkgKiBJZiBhbnkgcXVhbHMgZXhp c3QsIHRoZXkgbWF5IGJlIHVzZWZ1bCB0byBwZXJmb3JtIGZ1cnRoZXIgcGFydGl0aW9uCiAJICog cHJ1bmluZyBkdXJpbmcgZXhlY3V0aW9uLiAgR2F0aGVyIGluZm9ybWF0aW9uIG5lZWRlZCBieSB0 aGUgZXhlY3V0b3IgdG8KQEAgLTEzNTgsMTYgKzEzNjAsMTQgQEAgY3JlYXRlX2FwcGVuZF9wbGFu KFBsYW5uZXJJbmZvICpyb290LCBBcHBlbmRQYXRoICpiZXN0X3BhdGgsIGludCBmbGFncykKIAkJ fQogCiAJCWlmIChwcnVuZXF1YWwgIT0gTklMKQotCQkJcGFydHBydW5laW5mbyA9Ci0JCQkJbWFr ZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKHJvb3QsIHJlbCwKLQkJCQkJCQkJCQkgYmVzdF9wYXRoLT5z dWJwYXRocywKLQkJCQkJCQkJCQkgcHJ1bmVxdWFsKTsKKwkJCXBsYW4tPnBhcnRfcHJ1bmVfaW5k ZXggPSBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8ocm9vdCwgcmVsLAorCQkJCQkJCQkJCQkJCQkJ ICBiZXN0X3BhdGgtPnN1YnBhdGhzLAorCQkJCQkJCQkJCQkJCQkJICBwcnVuZXF1YWwpOwogCX0K IAogCXBsYW4tPmFwcGVuZHBsYW5zID0gc3VicGxhbnM7CiAJcGxhbi0+bmFzeW5jcGxhbnMgPSBu YXN5bmNwbGFuczsKIAlwbGFuLT5maXJzdF9wYXJ0aWFsX3BsYW4gPSBiZXN0X3BhdGgtPmZpcnN0 X3BhcnRpYWxfcGF0aDsKLQlwbGFuLT5wYXJ0X3BydW5lX2luZm8gPSBwYXJ0cHJ1bmVpbmZvOwog CiAJY29weV9nZW5lcmljX3BhdGhfaW5mbygmcGxhbi0+cGxhbiwgKFBhdGggKikgYmVzdF9wYXRo KTsKIApAQCAtMTQwNyw3ICsxNDA3LDYgQEAgY3JlYXRlX21lcmdlX2FwcGVuZF9wbGFuKFBsYW5u ZXJJbmZvICpyb290LCBNZXJnZUFwcGVuZFBhdGggKmJlc3RfcGF0aCwKIAlMaXN0CSAgICpzdWJw bGFucyA9IE5JTDsKIAlMaXN0Q2VsbCAgICpzdWJwYXRoczsKIAlSZWxPcHRJbmZvICpyZWwgPSBi ZXN0X3BhdGgtPnBhdGgucGFyZW50OwotCVBhcnRpdGlvblBydW5lSW5mbyAqcGFydHBydW5laW5m byA9IE5VTEw7CiAKIAkvKgogCSAqIFdlIGRvbid0IGhhdmUgdGhlIGFjdHVhbCBjcmVhdGlvbiBv ZiB0aGUgTWVyZ2VBcHBlbmQgbm9kZSBzcGxpdCBvdXQKQEAgLTE1MDAsNiArMTQ5OSw5IEBAIGNy ZWF0ZV9tZXJnZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgTWVyZ2VBcHBlbmRQYXRo ICpiZXN0X3BhdGgsCiAJCXN1YnBsYW5zID0gbGFwcGVuZChzdWJwbGFucywgc3VicGxhbik7CiAJ fQogCisJLyogU2V0IGJlbG93IGlmIHdlIGZpbmQgcXVhbHMgdGhhdCB3ZSBjYW4gdXNlIHRvIHJ1 bi10aW1lIHBydW5lICovCisJbm9kZS0+cGFydF9wcnVuZV9pbmRleCA9IC0xOworCiAJLyoKIAkg KiBJZiBhbnkgcXVhbHMgZXhpc3QsIHRoZXkgbWF5IGJlIHVzZWZ1bCB0byBwZXJmb3JtIGZ1cnRo ZXIgcGFydGl0aW9uCiAJICogcHJ1bmluZyBkdXJpbmcgZXhlY3V0aW9uLiAgR2F0aGVyIGluZm9y bWF0aW9uIG5lZWRlZCBieSB0aGUgZXhlY3V0b3IgdG8KQEAgLTE1MjMsMTMgKzE1MjUsMTMgQEAg Y3JlYXRlX21lcmdlX2FwcGVuZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBNZXJnZUFwcGVuZFBh dGggKmJlc3RfcGF0aCwKIAkJfQogCiAJCWlmIChwcnVuZXF1YWwgIT0gTklMKQotCQkJcGFydHBy dW5laW5mbyA9IG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhyb290LCByZWwsCi0JCQkJCQkJCQkJ CQkJIGJlc3RfcGF0aC0+c3VicGF0aHMsCi0JCQkJCQkJCQkJCQkJIHBydW5lcXVhbCk7CisJCQlu b2RlLT5wYXJ0X3BydW5lX2luZGV4ID0gbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKHJvb3QsIHJl bCwKKwkJCQkJCQkJCQkJCQkJCSAgYmVzdF9wYXRoLT5zdWJwYXRocywKKwkJCQkJCQkJCQkJCQkJ CSAgcHJ1bmVxdWFsKTsKIAl9CiAKIAlub2RlLT5tZXJnZXBsYW5zID0gc3VicGxhbnM7Ci0Jbm9k ZS0+cGFydF9wcnVuZV9pbmZvID0gcGFydHBydW5laW5mbzsKKwogCiAJLyoKIAkgKiBJZiBwcmVw YXJlX3NvcnRfZnJvbV9wYXRoa2V5cyBhZGRlZCBzb3J0IGNvbHVtbnMsIGJ1dCB3ZSB3ZXJlIHRv bGQgdG8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyBi L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwppbmRleCBiMDkwYjA4N2U5Li5m NDI1MzYyNDkxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVy LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC01MTgsNyAr NTE4LDEwIEBAIHN0YW5kYXJkX3BsYW5uZXIoUXVlcnkgKnBhcnNlLCBjb25zdCBjaGFyICpxdWVy eV9zdHJpbmcsIGludCBjdXJzb3JPcHRpb25zLAogCXJlc3VsdC0+ZGVwZW5kc09uUm9sZSA9IGds b2ItPmRlcGVuZHNPblJvbGU7CiAJcmVzdWx0LT5wYXJhbGxlbE1vZGVOZWVkZWQgPSBnbG9iLT5w YXJhbGxlbE1vZGVOZWVkZWQ7CiAJcmVzdWx0LT5wbGFuVHJlZSA9IHRvcF9wbGFuOworCXJlc3Vs dC0+cGFydFBydW5lSW5mb3MgPSBnbG9iLT5wYXJ0UHJ1bmVJbmZvczsKKwlyZXN1bHQtPmNvbnRh aW5zSW5pdGlhbFBydW5pbmcgPSBnbG9iLT5jb250YWluc0luaXRpYWxQcnVuaW5nOwogCXJlc3Vs dC0+cnRhYmxlID0gZ2xvYi0+ZmluYWxydGFibGU7CisJcmVzdWx0LT5taW5Mb2NrUmVsaWRzID0g Z2xvYi0+bWluTG9ja1JlbGlkczsKIAlyZXN1bHQtPnJlc3VsdFJlbGF0aW9ucyA9IGdsb2ItPnJl c3VsdFJlbGF0aW9uczsKIAlyZXN1bHQtPmFwcGVuZFJlbGF0aW9ucyA9IGdsb2ItPmFwcGVuZFJl bGF0aW9uczsKIAlyZXN1bHQtPnN1YnBsYW5zID0gZ2xvYi0+c3VicGxhbnM7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9zZXRyZWZzLmMKaW5kZXggNmVhMzUwNTY0Ni4uOTRkNGZmMGI5ZCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCisrKyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwpAQCAtMjYxLDcgKzI2MSw3IEBAIHNldF9wbGFu X3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3QsIFBsYW4gKnBsYW4pCiAJUGxhbgkgICAqcmVz dWx0OwogCVBsYW5uZXJHbG9iYWwgKmdsb2IgPSByb290LT5nbG9iOwogCWludAkJCXJ0b2Zmc2V0 ID0gbGlzdF9sZW5ndGgoZ2xvYi0+ZmluYWxydGFibGUpOwotCUxpc3RDZWxsICAgKmxjOworCUxp c3RDZWxsICpsYzsKIAogCS8qCiAJICogQWRkIGFsbCB0aGUgcXVlcnkncyBSVEVzIHRvIHRoZSBm bGF0dGVuZWQgcmFuZ2V0YWJsZS4gIFRoZSBsaXZlIG9uZXMKQEAgLTI3MCw2ICsyNzAsMTYgQEAg c2V0X3BsYW5fcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwgUGxhbiAqcGxhbikKIAkgKi8K IAlhZGRfcnRlc190b19mbGF0X3J0YWJsZShyb290LCBmYWxzZSk7CiAKKwkvKgorCSAqIEFkZCB0 aGUgcXVlcnkncyBhZGp1c3RlZCByYW5nZSBvZiBSVCBpbmRleGVzIHRvIGdsb2ItPm1pbkxvY2tS ZWxpZHMuCisJICogVGhlIGFkanVzdGVkIFJUIGluZGV4ZXMgb2YgcHJ1bmFibGUgcmVsYXRpb25z IHdpbGwgYmUgZGVsZXRlZCBmcm9tIHRoZQorCSAqIHNldCBiZWxvdyB3aGVyZSBQYXJ0aXRpb25Q cnVuZUluZm9zIGFyZSBwcm9jZXNzZWQuCisJICovCisJZ2xvYi0+bWluTG9ja1JlbGlkcyA9CisJ CWJtc19hZGRfcmFuZ2UoZ2xvYi0+bWluTG9ja1JlbGlkcywKKwkJCQkJICBydG9mZnNldCArIDEs CisJCQkJCSAgcnRvZmZzZXQgKyBsaXN0X2xlbmd0aChyb290LT5wYXJzZS0+cnRhYmxlKSk7CisK IAkvKgogCSAqIEFkanVzdCBSVCBpbmRleGVzIG9mIFBsYW5Sb3dNYXJrcyBhbmQgYWRkIHRvIGZp bmFsIHJvd21hcmtzIGxpc3QKIAkgKi8KQEAgLTM0OCw2ICszNTgsNjQgQEAgc2V0X3BsYW5fcmVm ZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwgUGxhbiAqcGxhbikKIAkJfQogCX0KIAorCS8qIEFs c28gZml4IHVwIHRoZSBpbmZvcm1hdGlvbiBpbiBQYXJ0aXRpb25QcnVuZUluZm9zLiAqLworCWZv cmVhY2ggKGxjLCByb290LT5wYXJ0UHJ1bmVJbmZvcykKKwl7CisJCVBhcnRpdGlvblBydW5lSW5m byAqcHJ1bmVpbmZvID0gbGZpcnN0KGxjKTsKKwkJQml0bWFwc2V0ICpsZWFmcGFydF9ydGlzID0g TlVMTDsKKwkJTGlzdENlbGwgICpsOworCisJCWZvcmVhY2gobCwgcHJ1bmVpbmZvLT5wcnVuZV9p bmZvcykKKwkJeworCQkJTGlzdAkgICAqcHJ1bmVfaW5mb3MgPSBsZmlyc3QobCk7CisJCQlMaXN0 Q2VsbCAgICpsMjsKKworCQkJZm9yZWFjaChsMiwgcHJ1bmVfaW5mb3MpCisJCQl7CisJCQkJUGFy dGl0aW9uZWRSZWxQcnVuZUluZm8gKnBpbmZvID0gbGZpcnN0KGwyKTsKKwkJCQlpbnQJCWk7CisK KwkJCQkvKiBSVCBpbmRleCBvZiB0aGUgcGFydGl0aW9uZSB0YWJsZS4gKi8KKwkJCQlwaW5mby0+ cnRpbmRleCArPSBydG9mZnNldDsKKworCQkJCS8qIEFuZCBhbHNvIHRob3NlIG9mIHRoZSBsZWFm IHBhcnRpdGlvbnMuICovCisJCQkJZm9yIChpID0gMDsgaSA8IHBpbmZvLT5ucGFydHM7IGkrKykK KwkJCQl7CisJCQkJCWlmIChwaW5mby0+cnRpX21hcFtpXSA+IDApCisJCQkJCXsKKwkJCQkJCXBp bmZvLT5ydGlfbWFwW2ldICs9IHJ0b2Zmc2V0OworCQkJCQkJbGVhZnBhcnRfcnRpcyA9IGJtc19h ZGRfbWVtYmVyKGxlYWZwYXJ0X3J0aXMsCisJCQkJCQkJCQkJCQkJICAgcGluZm8tPnJ0aV9tYXBb aV0pOworCQkJCQl9CisJCQkJfQorCQkJfQorCQl9CisKKwkJaWYgKHBydW5laW5mby0+bmVlZHNf aW5pdF9wcnVuaW5nKQorCQl7CisJCQlnbG9iLT5jb250YWluc0luaXRpYWxQcnVuaW5nID0gdHJ1 ZTsKKworCQkJLyoKKwkJCSAqIERlbGV0ZSB0aGUgbGVhZiBwYXJ0aXRpb24gUlRJcyBmcm9tIHRo ZSBnbG9iYWwgc2V0IG9mIHJlbGF0aW9ucworCQkJICogdG8gYmUgbG9ja2VkIGJlZm9yZSBleGVj dXRpbmcgdGhlIHBsYW4uICBBY3F1aXJlRXhlY3V0b3JMb2NrcygpCisJCQkgKiB3aWxsIGZpbmQg dGhlIG9uZXMgdG8gYWRkIHRvIHRoZSBzZXQgYWZ0ZXIgcGVyZm9ybWluZyBpbml0aWFsCisJCQkg KiBwcnVuaW5nLgorCQkJICovCisJCQlnbG9iLT5taW5Mb2NrUmVsaWRzID0gYm1zX2RlbF9tZW1i ZXJzKGdsb2ItPm1pbkxvY2tSZWxpZHMsCisJCQkJCQkJCQkJCQkgIGxlYWZwYXJ0X3J0aXMpOwor CQl9CisKKwkJZ2xvYi0+cGFydFBydW5lSW5mb3MgPSBsYXBwZW5kKGdsb2ItPnBhcnRQcnVuZUlu Zm9zLCBwcnVuZWluZm8pOworCX0KKworCS8qCisJICogSXQgc2VlbXMgd29ydGggZG9pbmcgYSBi bXNfY29weSgpIG9uIGdsb2ItPm1pbkxvY2tSZWxpZHMgaWYgd2UgZGVsZXRlZAorCSAqIGJpdCBm cm9tIGl0IGp1c3QgYWJvdmUgdG8gcHJldmVudCBlbXB0eSB0YWlsIGJpdHMgcmVzdWx0aW5nIGlu CisJICogaW5lZmZpY2llbnQgbG9vcGluZyBkdXJpbmcgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKS4K KwkgKi8KKwlpZiAoZ2xvYi0+Y29udGFpbnNJbml0aWFsUHJ1bmluZykKKwkJZ2xvYi0+bWluTG9j a1JlbGlkcyA9IGJtc19jb3B5KGdsb2ItPm1pbkxvY2tSZWxpZHMpCisKIAlyZXR1cm4gcmVzdWx0 OwogfQogCkBAIC0xNjQwLDIxICsxNzA4LDEyIEBAIHNldF9hcHBlbmRfcmVmZXJlbmNlcyhQbGFu bmVySW5mbyAqcm9vdCwKIAogCWFwbGFuLT5hcHByZWxpZHMgPSBvZmZzZXRfcmVsaWRfc2V0KGFw bGFuLT5hcHByZWxpZHMsIHJ0b2Zmc2V0KTsKIAotCWlmIChhcGxhbi0+cGFydF9wcnVuZV9pbmZv KQotCXsKLQkJZm9yZWFjaChsLCBhcGxhbi0+cGFydF9wcnVuZV9pbmZvLT5wcnVuZV9pbmZvcykK LQkJewotCQkJTGlzdAkgICAqcHJ1bmVfaW5mb3MgPSBsZmlyc3QobCk7Ci0JCQlMaXN0Q2VsbCAg ICpsMjsKLQotCQkJZm9yZWFjaChsMiwgcHJ1bmVfaW5mb3MpCi0JCQl7Ci0JCQkJUGFydGl0aW9u ZWRSZWxQcnVuZUluZm8gKnBpbmZvID0gbGZpcnN0KGwyKTsKLQotCQkJCXBpbmZvLT5ydGluZGV4 ICs9IHJ0b2Zmc2V0OwotCQkJfQotCQl9Ci0JfQorCS8qCisJICogUGFydGl0aW9uUHJ1bmVJbmZv cyB3aWxsIGJlIGFkZGVkIHRvIGEgbGlzdCBpbiBQbGFubmVyR2xvYmFsLCBzbyB1cGRhdGUKKwkg KiB0aGUgaW5kZXguCisJICovCisJaWYgKGFwbGFuLT5wYXJ0X3BydW5lX2luZGV4ID49IDApCisJ CWFwbGFuLT5wYXJ0X3BydW5lX2luZGV4ICs9IGxpc3RfbGVuZ3RoKHJvb3QtPmdsb2ItPnBhcnRQ cnVuZUluZm9zKTsKIAogCS8qIFdlIGRvbid0IG5lZWQgdG8gcmVjdXJzZSB0byBsZWZ0dHJlZSBv ciByaWdodHRyZWUgLi4uICovCiAJQXNzZXJ0KGFwbGFuLT5wbGFuLmxlZnR0cmVlID09IE5VTEwp OwpAQCAtMTcxMiwyMSArMTc3MSwxMiBAQCBzZXRfbWVyZ2VhcHBlbmRfcmVmZXJlbmNlcyhQbGFu bmVySW5mbyAqcm9vdCwKIAogCW1wbGFuLT5hcHByZWxpZHMgPSBvZmZzZXRfcmVsaWRfc2V0KG1w bGFuLT5hcHByZWxpZHMsIHJ0b2Zmc2V0KTsKIAotCWlmIChtcGxhbi0+cGFydF9wcnVuZV9pbmZv KQotCXsKLQkJZm9yZWFjaChsLCBtcGxhbi0+cGFydF9wcnVuZV9pbmZvLT5wcnVuZV9pbmZvcykK LQkJewotCQkJTGlzdAkgICAqcHJ1bmVfaW5mb3MgPSBsZmlyc3QobCk7Ci0JCQlMaXN0Q2VsbCAg ICpsMjsKLQotCQkJZm9yZWFjaChsMiwgcHJ1bmVfaW5mb3MpCi0JCQl7Ci0JCQkJUGFydGl0aW9u ZWRSZWxQcnVuZUluZm8gKnBpbmZvID0gbGZpcnN0KGwyKTsKLQotCQkJCXBpbmZvLT5ydGluZGV4 ICs9IHJ0b2Zmc2V0OwotCQkJfQotCQl9Ci0JfQorCS8qCisJICogUGFydGl0aW9uUHJ1bmVJbmZv cyB3aWxsIGJlIGFkZGVkIHRvIGEgbGlzdCBpbiBQbGFubmVyR2xvYmFsLCBzbyB1cGRhdGUKKwkg KiB0aGUgaW5kZXguCisJICovCisJaWYgKG1wbGFuLT5wYXJ0X3BydW5lX2luZGV4ID49IDApCisJ CW1wbGFuLT5wYXJ0X3BydW5lX2luZGV4ICs9IGxpc3RfbGVuZ3RoKHJvb3QtPmdsb2ItPnBhcnRQ cnVuZUluZm9zKTsKIAogCS8qIFdlIGRvbid0IG5lZWQgdG8gcmVjdXJzZSB0byBsZWZ0dHJlZSBv ciByaWdodHRyZWUgLi4uICovCiAJQXNzZXJ0KG1wbGFuLT5wbGFuLmxlZnR0cmVlID09IE5VTEwp OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jIGIvc3Jj L2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jCmluZGV4IDlkM2MwNWFlZDMuLjk1MmM1 YjgzMjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYwor KysgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMKQEAgLTE0NCw3ICsxNDQs OSBAQCBzdGF0aWMgTGlzdCAqbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8oUGxhbm5lcklu Zm8gKnJvb3QsCiAJCQkJCQkJCQkJICAgTGlzdCAqcHJ1bmVxdWFsLAogCQkJCQkJCQkJCSAgIEJp dG1hcHNldCAqcGFydHJlbGlkcywKIAkJCQkJCQkJCQkgICBpbnQgKnJlbGlkX3N1YnBsYW5fbWFw LAotCQkJCQkJCQkJCSAgIEJpdG1hcHNldCAqKm1hdGNoZWRzdWJwbGFucyk7CisJCQkJCQkJCQkJ ICAgQml0bWFwc2V0ICoqbWF0Y2hlZHN1YnBsYW5zLAorCQkJCQkJCQkJCSAgIGJvb2wgKm5lZWRz X2luaXRfcHJ1bmluZywKKwkJCQkJCQkJCQkgICBib29sICpuZWVkc19leGVjX3BydW5pbmcpOwog c3RhdGljIHZvaWQgZ2VuX3BhcnRwcnVuZV9zdGVwcyhSZWxPcHRJbmZvICpyZWwsIExpc3QgKmNs YXVzZXMsCiAJCQkJCQkJCVBhcnRDbGF1c2VUYXJnZXQgdGFyZ2V0LAogCQkJCQkJCQlHZW5lcmF0 ZVBydW5pbmdTdGVwc0NvbnRleHQgKmNvbnRleHQpOwpAQCAtMjA5LDE2ICsyMTEsMjAgQEAgc3Rh dGljIHZvaWQgcGFydGtleV9kYXR1bV9mcm9tX2V4cHIoUGFydGl0aW9uUHJ1bmVDb250ZXh0ICpj b250ZXh0LAogCiAvKgogICogbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvCi0gKgkJQnVpbGRzIGEg UGFydGl0aW9uUHJ1bmVJbmZvIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBleGVjdXRvciB0byBh bGxvdwotICoJCWFkZGl0aW9uYWwgcGFydGl0aW9uIHBydW5pbmcgdG8gdGFrZSBwbGFjZS4gIFJl dHVybnMgTlVMTCB3aGVuCi0gKgkJcGFydGl0aW9uIHBydW5pbmcgd291bGQgYmUgdXNlbGVzcy4K KyAqCQlDaGVja3MgaWYgdGhlIGdpdmVuIHNldCBvZiBxdWFscyBjYW4gYmUgdXNlZCB0byBidWls ZCBwcnVuaW5nIHN0ZXBzCisgKgkJdGhhdCB0aGUgZXhlY3V0b3IgY2FuIHVzZSB0byBwcnVuZSBh d2F5IHVubmVlZGVkIHBhcnRpdGlvbnMuICBJZgorICoJCXN1aXRhYmxlIHF1YWxzIGFyZSBmb3Vu ZCB0aGVuIGEgUGFydGl0aW9uUHJ1bmVJbmZvIGlzIGJ1aWx0IGFuZCB0YWdnZWQKKyAqCQlvbnRv IHRoZSBQbGFubmVySW5mbydzIHBhcnRQcnVuZUluZm9zIGxpc3QuCisgKgorICogVGhlIHJldHVy biB2YWx1ZSBpcyB0aGUgMC1iYXNlZCBpbmRleCBvZiB0aGUgaXRlbSBhZGRlZCB0byB0aGUKKyAq IHBhcnRQcnVuZUluZm9zIGxpc3Qgb3IgLTEgaWYgbm90aGluZyB3YXMgYWRkZWQuCiAgKgogICog J3BhcmVudHJlbCcgaXMgdGhlIFJlbE9wdEluZm8gZm9yIGFuIGFwcGVuZHJlbCwgYW5kICdzdWJw YXRocycgaXMgdGhlIGxpc3QKICAqIG9mIHNjYW4gcGF0aHMgZm9yIGl0cyBjaGlsZCByZWxzLgog ICogJ3BydW5lcXVhbCcgaXMgYSBsaXN0IG9mIHBvdGVudGlhbCBwcnVuaW5nIHF1YWxzIChpLmUu LCByZXN0cmljdGlvbgogICogY2xhdXNlcyB0aGF0IGFyZSBhcHBsaWNhYmxlIHRvIHRoZSBhcHBl bmRyZWwpLgogICovCi1QYXJ0aXRpb25QcnVuZUluZm8gKgoraW50CiBtYWtlX3BhcnRpdGlvbl9w cnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJCQkJ CSBMaXN0ICpzdWJwYXRocywKIAkJCQkJCSBMaXN0ICpwcnVuZXF1YWwpCkBAIC0yMzAsNiArMjM2 LDggQEAgbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJ bmZvICpwYXJlbnRyZWwsCiAJaW50CQkgICAqcmVsaWRfc3VicGxhbl9tYXA7CiAJTGlzdENlbGwg ICAqbGM7CiAJaW50CQkJaTsKKwlib29sCQluZWVkc19pbml0X3BydW5pbmcgPSBmYWxzZTsKKwli b29sCQluZWVkc19leGVjX3BydW5pbmcgPSBmYWxzZTsKIAogCS8qCiAJICogU2NhbiB0aGUgc3Vi cGF0aHMgdG8gc2VlIHdoaWNoIG9uZXMgYXJlIHNjYW5zIG9mIHBhcnRpdGlvbiBjaGlsZApAQCAt MzA5LDEyICszMTcsMTYgQEAgbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpy b290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCUJpdG1hcHNldCAgKnBhcnRyZWxpZHMgPSAo Qml0bWFwc2V0ICopIGxmaXJzdChsYyk7CiAJCUxpc3QJICAgKnBpbmZvbGlzdDsKIAkJQml0bWFw c2V0ICAqbWF0Y2hlZHN1YnBsYW5zID0gTlVMTDsKKwkJYm9vbAkJcGFydHJlbF9uZWVkc19pbml0 X3BydW5pbmc7CisJCWJvb2wJCXBhcnRyZWxfbmVlZHNfZXhlY19wcnVuaW5nOwogCiAJCXBpbmZv bGlzdCA9IG1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvKHJvb3QsIHBhcmVudHJlbCwKIAkJ CQkJCQkJCQkJCSAgcHJ1bmVxdWFsLAogCQkJCQkJCQkJCQkJICBwYXJ0cmVsaWRzLAogCQkJCQkJ CQkJCQkJICByZWxpZF9zdWJwbGFuX21hcCwKLQkJCQkJCQkJCQkJCSAgJm1hdGNoZWRzdWJwbGFu cyk7CisJCQkJCQkJCQkJCQkgICZtYXRjaGVkc3VicGxhbnMsCisJCQkJCQkJCQkJCQkgICZwYXJ0 cmVsX25lZWRzX2luaXRfcHJ1bmluZywKKwkJCQkJCQkJCQkJCSAgJnBhcnRyZWxfbmVlZHNfZXhl Y19wcnVuaW5nKTsKIAogCQkvKiBXaGVuIHBydW5pbmcgaXMgcG9zc2libGUsIHJlY29yZCB0aGUg bWF0Y2hlZCBzdWJwbGFucyAqLwogCQlpZiAocGluZm9saXN0ICE9IE5JTCkKQEAgLTMyMyw2ICsz MzUsOSBAQCBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9w dEluZm8gKnBhcmVudHJlbCwKIAkJCWFsbG1hdGNoZWRzdWJwbGFucyA9IGJtc19qb2luKG1hdGNo ZWRzdWJwbGFucywKIAkJCQkJCQkJCQkgIGFsbG1hdGNoZWRzdWJwbGFucyk7CiAJCX0KKworCQlu ZWVkc19pbml0X3BydW5pbmcgfD0gcGFydHJlbF9uZWVkc19pbml0X3BydW5pbmc7CisJCW5lZWRz X2V4ZWNfcHJ1bmluZyB8PSBwYXJ0cmVsX25lZWRzX2V4ZWNfcHJ1bmluZzsKIAl9CiAKIAlwZnJl ZShyZWxpZF9zdWJwbGFuX21hcCk7CkBAIC0zMzIsMTEgKzM0NywxMyBAQCBtYWtlX3BhcnRpdGlv bl9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkg KiBxdWFscywgdGhlbiB3ZSBjYW4ganVzdCBub3QgYm90aGVyIHdpdGggcnVuLXRpbWUgcHJ1bmlu Zy4KIAkgKi8KIAlpZiAocHJ1bmVyZWxpbmZvcyA9PSBOSUwpCi0JCXJldHVybiBOVUxMOworCQly ZXR1cm4gLTE7CiAKIAkvKiBFbHNlIGJ1aWxkIHRoZSByZXN1bHQgZGF0YSBzdHJ1Y3R1cmUgKi8K IAlwcnVuZWluZm8gPSBtYWtlTm9kZShQYXJ0aXRpb25QcnVuZUluZm8pOwogCXBydW5laW5mby0+ cHJ1bmVfaW5mb3MgPSBwcnVuZXJlbGluZm9zOworCXBydW5laW5mby0+bmVlZHNfaW5pdF9wcnVu aW5nID0gbmVlZHNfaW5pdF9wcnVuaW5nOworCXBydW5laW5mby0+bmVlZHNfZXhlY19wcnVuaW5n ID0gbmVlZHNfZXhlY19wcnVuaW5nOwogCiAJLyoKIAkgKiBTb21lIHN1YnBsYW5zIG1heSBub3Qg YmVsb25nIHRvIGFueSBvZiB0aGUgaWRlbnRpZmllZCBwYXJ0aXRpb25lZCByZWxzLgpAQCAtMzU4 LDcgKzM3NSw5IEBAIG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwg UmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCWVsc2UKIAkJcHJ1bmVpbmZvLT5vdGhlcl9zdWJwbGFu cyA9IE5VTEw7CiAKLQlyZXR1cm4gcHJ1bmVpbmZvOworCXJvb3QtPnBhcnRQcnVuZUluZm9zID0g bGFwcGVuZChyb290LT5wYXJ0UHJ1bmVJbmZvcywgcHJ1bmVpbmZvKTsKKworCXJldHVybiBsaXN0 X2xlbmd0aChyb290LT5wYXJ0UHJ1bmVJbmZvcykgLSAxOwogfQogCiAvKgpAQCAtNDM1LDEzICs0 NTQsMTggQEAgYWRkX3BhcnRfcmVsaWRzKExpc3QgKmFsbHBhcnRyZWxpZHMsIEJpdG1hcHNldCAq cGFydHJlbGlkcykKICAqIElmIHdlIGNhbm5vdCBmaW5kIGFueSB1c2VmdWwgcnVuLXRpbWUgcHJ1 bmluZyBzdGVwcywgcmV0dXJuIE5JTC4KICAqIEhvd2V2ZXIsIG9uIHN1Y2Nlc3MsIGVhY2ggcmVs IGlkZW50aWZpZWQgaW4gcGFydHJlbGlkcyB3aWxsIGhhdmUKICAqIGFuIGVsZW1lbnQgaW4gdGhl IHJlc3VsdCBsaXN0LCBldmVuIGlmIHNvbWUgb2YgdGhlbSBhcmUgdXNlbGVzcy4KKyAqICpuZWVk c19pbml0X3BydW5pbmcgYW5kICpuZWVkc19leGVjX3BydW5pbmcgYXJlIHNldCB0byBpbmRpY2F0 ZSB0aGF0IHRoZQorICogcmV0dXJuZWQgUGFydGl0aW9uZWRSZWxQcnVuZUluZm9zIGNvbnRhaW5z IHBydW5pbmcgc3RlcHMgdGhhdCBjYW4gYmUKKyAqIHBlcmZvcm1lZCBiZWZvcmUgYW5kIGFmdGVy IGV4ZWN1dGlvbiBiZWdpbnMsIHJlc3BlY3RpdmVseS4KICAqLwogc3RhdGljIExpc3QgKgogbWFr ZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8g KnBhcmVudHJlbCwKIAkJCQkJCQkgIExpc3QgKnBydW5lcXVhbCwKIAkJCQkJCQkgIEJpdG1hcHNl dCAqcGFydHJlbGlkcywKIAkJCQkJCQkgIGludCAqcmVsaWRfc3VicGxhbl9tYXAsCi0JCQkJCQkJ ICBCaXRtYXBzZXQgKiptYXRjaGVkc3VicGxhbnMpCisJCQkJCQkJICBCaXRtYXBzZXQgKiptYXRj aGVkc3VicGxhbnMsCisJCQkJCQkJICBib29sICpuZWVkc19pbml0X3BydW5pbmcsCisJCQkJCQkJ ICBib29sICpuZWVkc19leGVjX3BydW5pbmcpCiB7CiAJUmVsT3B0SW5mbyAqdGFyZ2V0cGFydCA9 IE5VTEw7CiAJTGlzdAkgICAqcGluZm9saXN0ID0gTklMOwpAQCAtNDUyLDYgKzQ3NiwxMCBAQCBt YWtlX3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5m byAqcGFyZW50cmVsLAogCWludAkJCXJ0aTsKIAlpbnQJCQlpOwogCisJLyogV2lsbCBmaW5kIG91 dCBiZWxvdy4gKi8KKwkqbmVlZHNfaW5pdF9wcnVuaW5nID0gZmFsc2U7CisJKm5lZWRzX2V4ZWNf cHJ1bmluZyA9IGZhbHNlOworCiAJLyoKIAkgKiBFeGFtaW5lIGVhY2ggcGFydGl0aW9uZWQgcmVs LCBjb25zdHJ1Y3RpbmcgYSB0ZW1wb3JhcnkgYXJyYXkgdG8gbWFwCiAJICogZnJvbSBwbGFubmVy IHJlbGlkcyB0byBpbmRleCBvZiB0aGUgcGFydGl0aW9uZWQgcmVsLCBhbmQgYnVpbGRpbmcgYQpA QCAtNTM5LDYgKzU2Nyw5IEBAIG1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvKFBsYW5uZXJJ bmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCSAqIGV4ZWN1dG9yIHBlci1zY2Fu IHBydW5pbmcgc3RlcHMuICBUaGlzIGZpcnN0IHBhc3MgY3JlYXRlcyBzdGFydHVwCiAJCSAqIHBy dW5pbmcgc3RlcHMgYW5kIGRldGVjdHMgd2hldGhlciB0aGVyZSdzIGFueSBwb3NzaWJseS11c2Vm dWwgcXVhbHMKIAkJICogdGhhdCB3b3VsZCByZXF1aXJlIHBlci1zY2FuIHBydW5pbmcuCisJCSAq CisJCSAqIEluIHRoZSBmaXJzdCBwYXNzLCB3ZSBub3RlIHdoZXRoZXIgdGhlIDJuZCBwYXNzIGlz IG5lY2Vzc2FyeSBieQorCQkgKiBub3RpbmcgdGhlIHByZXNlbmNlIG9mIEVYRUMgcGFyYW1ldGVy cy4KIAkJICovCiAJCWdlbl9wYXJ0cHJ1bmVfc3RlcHMoc3VicGFydCwgcGFydHBydW5lcXVhbCwg UEFSVFRBUkdFVF9JTklUSUFMLAogCQkJCQkJCSZjb250ZXh0KTsKQEAgLTYxMyw2ICs2NDQsMTIg QEAgbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9w dEluZm8gKnBhcmVudHJlbCwKIAkJcGluZm8tPmV4ZWNwYXJhbWlkcyA9IGV4ZWNwYXJhbWlkczsK IAkJLyogUmVtYWluaW5nIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCBpbiB0aGUgbmV4dCBsb29wICov CiAKKwkJLyogcmVjb3JkIHdoaWNoIHR5cGVzIG9mIHBydW5pbmcgc3RlcHMgd2UndmUgc2VlbiBz byBmYXIgKi8KKwkJaWYgKGluaXRpYWxfcHJ1bmluZ19zdGVwcyAhPSBOSUwpCisJCQkqbmVlZHNf aW5pdF9wcnVuaW5nID0gdHJ1ZTsKKwkJaWYgKGV4ZWNfcHJ1bmluZ19zdGVwcyAhPSBOSUwpCisJ CQkqbmVlZHNfZXhlY19wcnVuaW5nID0gdHJ1ZTsKKwogCQlwaW5mb2xpc3QgPSBsYXBwZW5kKHBp bmZvbGlzdCwgcGluZm8pOwogCX0KIApAQCAtNjQwLDYgKzY3Nyw3IEBAIG1ha2VfcGFydGl0aW9u ZWRyZWxfcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWws CiAJCWludAkJICAgKnN1YnBsYW5fbWFwOwogCQlpbnQJCSAgICpzdWJwYXJ0X21hcDsKIAkJT2lk CQkgICAqcmVsaWRfbWFwOworCQlJbmRleAkgICAqcnRpX21hcDsKIAogCQkvKgogCQkgKiBDb25z dHJ1Y3QgdGhlIHN1YnBsYW4gYW5kIHN1YnBhcnQgbWFwcyBmb3IgdGhpcyBwYXJ0aXRpb25pbmcg bGV2ZWwuCkBAIC02NTIsNiArNjkwLDcgQEAgbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8o UGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJc3VicGFydF9tYXAg PSAoaW50ICopIHBhbGxvYyhucGFydHMgKiBzaXplb2YoaW50KSk7CiAJCW1lbXNldChzdWJwYXJ0 X21hcCwgLTEsIG5wYXJ0cyAqIHNpemVvZihpbnQpKTsKIAkJcmVsaWRfbWFwID0gKE9pZCAqKSBw YWxsb2MwKG5wYXJ0cyAqIHNpemVvZihPaWQpKTsKKwkJcnRpX21hcCA9IChJbmRleCAqKSBwYWxs b2MwKG5wYXJ0cyAqIHNpemVvZihJbmRleCkpOwogCQlwcmVzZW50X3BhcnRzID0gTlVMTDsKIAog CQlpID0gLTE7CkBAIC02NjYsNiArNzA1LDcgQEAgbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWlu Zm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJCXN1YnBsYW5f bWFwW2ldID0gc3VicGxhbmlkeCA9IHJlbGlkX3N1YnBsYW5fbWFwW3BhcnRyZWwtPnJlbGlkXSAt IDE7CiAJCQlzdWJwYXJ0X21hcFtpXSA9IHN1YnBhcnRpZHggPSByZWxpZF9zdWJwYXJ0X21hcFtw YXJ0cmVsLT5yZWxpZF0gLSAxOwogCQkJcmVsaWRfbWFwW2ldID0gcGxhbm5lcl9ydF9mZXRjaChw YXJ0cmVsLT5yZWxpZCwgcm9vdCktPnJlbGlkOworCQkJcnRpX21hcFtpXSA9IHBhcnRyZWwtPnJl bGlkOwogCQkJaWYgKHN1YnBsYW5pZHggPj0gMCkKIAkJCXsKIAkJCQlwcmVzZW50X3BhcnRzID0g Ym1zX2FkZF9tZW1iZXIocHJlc2VudF9wYXJ0cywgaSk7CkBAIC02OTAsNiArNzMwLDcgQEAgbWFr ZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8g KnBhcmVudHJlbCwKIAkJcGluZm8tPnN1YnBsYW5fbWFwID0gc3VicGxhbl9tYXA7CiAJCXBpbmZv LT5zdWJwYXJ0X21hcCA9IHN1YnBhcnRfbWFwOwogCQlwaW5mby0+cmVsaWRfbWFwID0gcmVsaWRf bWFwOworCQlwaW5mby0+cnRpX21hcCA9IHJ0aV9tYXA7CiAJfQogCiAJcGZyZWUocmVsaWRfc3Vi cGFydF9tYXApOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3Jj L2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4IDk1ZGMyZTJjODMuLjhkYzUyYTE1OGYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90 Y29wL3Bvc3RncmVzLmMKQEAgLTE2MDMsNiArMTYwMyw3IEBAIGV4ZWNfYmluZF9tZXNzYWdlKFN0 cmluZ0luZm8gaW5wdXRfbWVzc2FnZSkKIAlpbnQxNgkgICAqcmZvcm1hdHMgPSBOVUxMOwogCUNh Y2hlZFBsYW5Tb3VyY2UgKnBzcmM7CiAJQ2FjaGVkUGxhbiAqY3BsYW47CisJTGlzdAkgICAqcGFy dF9wcnVuZV9yZXN1bHRfbGlzdDsKIAlQb3J0YWwJCXBvcnRhbDsKIAljaGFyCSAgICpxdWVyeV9z dHJpbmc7CiAJY2hhcgkgICAqc2F2ZWRfc3RtdF9uYW1lOwpAQCAtMTk3OCw3ICsxOTc5LDkgQEAg ZXhlY19iaW5kX21lc3NhZ2UoU3RyaW5nSW5mbyBpbnB1dF9tZXNzYWdlKQogCSAqIHdpbGwgYmUg Z2VuZXJhdGVkIGluIE1lc3NhZ2VDb250ZXh0LiAgVGhlIHBsYW4gcmVmY291bnQgd2lsbCBiZQog CSAqIGFzc2lnbmVkIHRvIHRoZSBQb3J0YWwsIHNvIGl0IHdpbGwgYmUgcmVsZWFzZWQgYXQgcG9y dGFsIGRlc3RydWN0aW9uLgogCSAqLwotCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihwc3JjLCBwYXJh bXMsIE5VTEwsIE5VTEwpOworCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihwc3JjLCBwYXJhbXMsIE5V TEwsIE5VTEwsICZwYXJ0X3BydW5lX3Jlc3VsdF9saXN0KTsKKwlBc3NlcnQobGlzdF9sZW5ndGgo Y3BsYW4tPnN0bXRfbGlzdCkgPT0KKwkJICAgbGlzdF9sZW5ndGgocGFydF9wcnVuZV9yZXN1bHRf bGlzdCkpOwogCiAJLyoKIAkgKiBOb3cgd2UgY2FuIGRlZmluZSB0aGUgcG9ydGFsLgpAQCAtMTk5 Myw2ICsxOTk2LDkgQEAgZXhlY19iaW5kX21lc3NhZ2UoU3RyaW5nSW5mbyBpbnB1dF9tZXNzYWdl KQogCQkJCQkgIGNwbGFuLT5zdG10X2xpc3QsCiAJCQkJCSAgY3BsYW4pOwogCisJLyogQ29weSBQ YXJ0aXRpb25QcnVuZVJlc3VsdHMgaW50byB0aGUgcG9ydGFsJ3MgY29udGV4dC4gKi8KKwlQb3J0 YWxTdG9yZVBhcnRpdGlvblBydW5lUmVzdWx0cyhwb3J0YWwsIHBhcnRfcHJ1bmVfcmVzdWx0X2xp c3QpOworCiAJLyogRG9uZSB3aXRoIHRoZSBzbmFwc2hvdCB1c2VkIGZvciBwYXJhbWV0ZXIgSS9P IGFuZCBwYXJzaW5nL3BsYW5uaW5nICovCiAJaWYgKHNuYXBzaG90X3NldCkKIAkJUG9wQWN0aXZl U25hcHNob3QoKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMgYi9zcmMv YmFja2VuZC90Y29wL3BxdWVyeS5jCmluZGV4IDVhYTVhMzUwZjMuLjhjYzJlMjE2MmQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9w cXVlcnkuYwpAQCAtMzUsNyArMzUsNyBAQAogUG9ydGFsCQlBY3RpdmVQb3J0YWwgPSBOVUxMOwog CiAKLXN0YXRpYyB2b2lkIFByb2Nlc3NRdWVyeShQbGFubmVkU3RtdCAqcGxhbiwKK3N0YXRpYyB2 b2lkIFByb2Nlc3NRdWVyeShQbGFubmVkU3RtdCAqcGxhbiwgUGFydGl0aW9uUHJ1bmVSZXN1bHQg KnBhcnRfcHJ1bmVfcmVzdWx0LAogCQkJCQkJIGNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCiAJCQkJ CQkgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJCQkgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlF bnYsCkBAIC02NSw2ICs2NSw3IEBAIHN0YXRpYyB2b2lkIERvUG9ydGFsUmV3aW5kKFBvcnRhbCBw b3J0YWwpOwogICovCiBRdWVyeURlc2MgKgogQ3JlYXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpw bGFubmVkc3RtdCwKKwkJCQlQYXJ0aXRpb25QcnVuZVJlc3VsdCAqcGFydF9wcnVuZV9yZXN1bHQs CiAJCQkJY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQlTbmFwc2hvdCBzbmFwc2hvdCwKIAkJ CQlTbmFwc2hvdCBjcm9zc2NoZWNrX3NuYXBzaG90LApAQCAtNzcsNiArNzgsOCBAQCBDcmVhdGVR dWVyeURlc2MoUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LAogCiAJcWQtPm9wZXJhdGlvbiA9IHBs YW5uZWRzdG10LT5jb21tYW5kVHlwZTsJLyogb3BlcmF0aW9uICovCiAJcWQtPnBsYW5uZWRzdG10 ID0gcGxhbm5lZHN0bXQ7CS8qIHBsYW4gKi8KKwlxZC0+cGFydF9wcnVuZV9yZXN1bHQgPSBwYXJ0 X3BydW5lX3Jlc3VsdDsJLyogRXhlY3V0b3JEb0luaXRpYWxQcnVuaW5nKCkKKwkJCQkJCQkJCQkJ CSAqIG91dHB1dCBmb3IgcGxhbiAqLwogCXFkLT5zb3VyY2VUZXh0ID0gc291cmNlVGV4dDsJLyog cXVlcnkgdGV4dCAqLwogCXFkLT5zbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3Qp OwkvKiBzbmFwc2hvdCAqLwogCS8qIFJJIGNoZWNrIHNuYXBzaG90ICovCkBAIC0xMjIsNiArMTI1 LDcgQEAgRnJlZVF1ZXJ5RGVzYyhRdWVyeURlc2MgKnFkZXNjKQogICoJCVBPUlRBTF9PTkVfUkVU VVJOSU5HLCBvciBQT1JUQUxfT05FX01PRF9XSVRIIHBvcnRhbAogICoKICAqCXBsYW46IHRoZSBw bGFuIHRyZWUgZm9yIHRoZSBxdWVyeQorICoJcGFydF9wcnVuZV9yZXN1bHQ6IEV4ZWN1dG9yRG9J bml0aWFsUHJ1bmluZygpIG91dHB1dCBmb3IgdGhlIHBsYW4gdHJlZQogICoJc291cmNlVGV4dDog dGhlIHNvdXJjZSB0ZXh0IG9mIHRoZSBxdWVyeQogICoJcGFyYW1zOiBhbnkgcGFyYW1ldGVycyBu ZWVkZWQKICAqCWRlc3Q6IHdoZXJlIHRvIHNlbmQgcmVzdWx0cwpAQCAtMTM0LDYgKzEzOCw3IEBA IEZyZWVRdWVyeURlc2MoUXVlcnlEZXNjICpxZGVzYykKICAqLwogc3RhdGljIHZvaWQKIFByb2Nl c3NRdWVyeShQbGFubmVkU3RtdCAqcGxhbiwKKwkJCSBQYXJ0aXRpb25QcnVuZVJlc3VsdCAqcGFy dF9wcnVuZV9yZXN1bHQsCiAJCQkgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCSBQYXJhbUxp c3RJbmZvIHBhcmFtcywKIAkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKQEAgLTE0NSw3 ICsxNTAsNyBAQCBQcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4sCiAJLyoKIAkgKiBDcmVh dGUgdGhlIFF1ZXJ5RGVzYyBvYmplY3QKIAkgKi8KLQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURl c2MocGxhbiwgc291cmNlVGV4dCwKKwlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwg cGFydF9wcnVuZV9yZXN1bHQsIHNvdXJjZVRleHQsCiAJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90 KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgMCk7 CiAKQEAgLTQ5MSw4ICs0OTYsMTMgQEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1M aXN0SW5mbyBwYXJhbXMsCiAJCQkJLyoKIAkJCQkgKiBDcmVhdGUgUXVlcnlEZXNjIGluIHBvcnRh bCdzIGNvbnRleHQ7IGZvciB0aGUgbW9tZW50LCBzZXQKIAkJCQkgKiB0aGUgZGVzdGluYXRpb24g dG8gRGVzdE5vbmUuCisJCQkJICoKKwkJCQkgKiBUaGVyZSBpcyBubyBQYXJ0aXRpb25QcnVuZVJl c3VsdCB1bmxlc3MgdGhlIFBsYW5uZWRTdG10IGlzCisJCQkJICogZnJvbSBhIENhY2hlZFBsYW4u CiAJCQkJICovCiAJCQkJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKGxpbml0aWFsX25vZGUo UGxhbm5lZFN0bXQsIHBvcnRhbC0+c3RtdHMpLAorCQkJCQkJCQkJCQlwb3J0YWwtPnBhcnRfcHJ1 bmVfcmVzdWx0cyA9PSBOSUwgPyBOVUxMIDoKKwkJCQkJCQkJCQkJbGluaXRpYWwocG9ydGFsLT5w YXJ0X3BydW5lX3Jlc3VsdHMpLAogCQkJCQkJCQkJCQlwb3J0YWwtPnNvdXJjZVRleHQsCiAJCQkJ CQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksCiAJCQkJCQkJCQkJCUludmFsaWRTbmFwc2hvdCwK QEAgLTEyMjUsNiArMTIzNSw4IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAKIAkJ aWYgKHBzdG10LT51dGlsaXR5U3RtdCA9PSBOVUxMKQogCQl7CisJCQlQYXJ0aXRpb25QcnVuZVJl c3VsdCAqcGFydF9wcnVuZV9yZXN1bHQgPSBOVUxMOworCiAJCQkvKgogCQkJICogcHJvY2VzcyBh IHBsYW5uYWJsZSBxdWVyeS4KIAkJCSAqLwpAQCAtMTI3MSwxMCArMTI4MywxOCBAQCBQb3J0YWxS dW5NdWx0aShQb3J0YWwgcG9ydGFsLAogCQkJZWxzZQogCQkJCVVwZGF0ZUFjdGl2ZVNuYXBzaG90 Q29tbWFuZElkKCk7CiAKKwkJCS8qCisJCQkgKiBEZXRlcm1pbmUgaWYgdGhlcmUncyBhIGNvcnJl c3BvbmRpbmcgUGFydGl0aW9uUHJ1bmVSZXN1bHQgZm9yCisJCQkgKiB0aGlzIFBsYW5uZWRTdG10 LgorCQkJICovCisJCQlpZiAocG9ydGFsLT5wYXJ0X3BydW5lX3Jlc3VsdHMgIT0gTklMKQorCQkJ CXBhcnRfcHJ1bmVfcmVzdWx0ID0gbGlzdF9udGgocG9ydGFsLT5wYXJ0X3BydW5lX3Jlc3VsdHMs CisJCQkJCQkJCQkJCSBmb3JlYWNoX2N1cnJlbnRfaW5kZXgoc3RtdGxpc3RfaXRlbSkpOworCiAJ CQlpZiAocHN0bXQtPmNhblNldFRhZykKIAkJCXsKIAkJCQkvKiBzdGF0ZW1lbnQgY2FuIHNldCB0 YWcgc3RyaW5nICovCi0JCQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LAorCQkJCVByb2Nlc3NRdWVyeShw c3RtdCwgcGFydF9wcnVuZV9yZXN1bHQsCiAJCQkJCQkJIHBvcnRhbC0+c291cmNlVGV4dCwKIAkJ CQkJCQkgcG9ydGFsLT5wb3J0YWxQYXJhbXMsCiAJCQkJCQkJIHBvcnRhbC0+cXVlcnlFbnYsCkBA IC0xMjgzLDcgKzEzMDMsNyBAQCBQb3J0YWxSdW5NdWx0aShQb3J0YWwgcG9ydGFsLAogCQkJZWxz ZQogCQkJewogCQkJCS8qIHN0bXQgYWRkZWQgYnkgcmV3cml0ZSBjYW5ub3Qgc2V0IHRhZyAqLwot CQkJCVByb2Nlc3NRdWVyeShwc3RtdCwKKwkJCQlQcm9jZXNzUXVlcnkocHN0bXQsIHBhcnRfcHJ1 bmVfcmVzdWx0LAogCQkJCQkJCSBwb3J0YWwtPnNvdXJjZVRleHQsCiAJCQkJCQkJIHBvcnRhbC0+ cG9ydGFsUGFyYW1zLAogCQkJCQkJCSBwb3J0YWwtPnF1ZXJ5RW52LApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9wbGFuY2FjaGUuYwppbmRleCA0Y2Y2ZGI1MDRmLi42Y2I0NzNmMmY0IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9wbGFuY2FjaGUuYwpAQCAtOTksMTQgKzk5LDE5IEBAIHN0YXRpYyBkbGlzdF9oZWFk IGNhY2hlZF9leHByZXNzaW9uX2xpc3QgPSBETElTVF9TVEFUSUNfSU5JVChjYWNoZWRfZXhwcmVz c2lvbl9sCiBzdGF0aWMgdm9pZCBSZWxlYXNlR2VuZXJpY1BsYW4oQ2FjaGVkUGxhblNvdXJjZSAq cGxhbnNvdXJjZSk7CiBzdGF0aWMgTGlzdCAqUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5KENhY2hlZFBs YW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJCQkJCQkJCSAgIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5 RW52KTsKLXN0YXRpYyBib29sIENoZWNrQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFu c291cmNlKTsKK3N0YXRpYyBib29sIENoZWNrQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpw bGFuc291cmNlLCBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAorCQkJCQkJCUxpc3QgKipwYXJ0 X3BydW5lX3Jlc3VsdF9saXN0KTsKIHN0YXRpYyBDYWNoZWRQbGFuICpCdWlsZENhY2hlZFBsYW4o Q2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgTGlzdCAqcWxpc3QsCi0JCQkJCQkJCSAgIFBh cmFtTGlzdEluZm8gYm91bmRQYXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKKwkJ CQkJCQkJICAgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVl cnlFbnYsCisJCQkJCQkJCSAgIExpc3QgKipwYXJ0X3BydW5lX3Jlc3VsdF9saXN0KTsKIHN0YXRp YyBib29sIGNob29zZV9jdXN0b21fcGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAog CQkJCQkJCSAgIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMpOwogc3RhdGljIGRvdWJsZSBjYWNo ZWRfcGxhbl9jb3N0KENhY2hlZFBsYW4gKnBsYW4sIGJvb2wgaW5jbHVkZV9wbGFubmVyKTsKIHN0 YXRpYyBRdWVyeSAqUXVlcnlMaXN0R2V0UHJpbWFyeVN0bXQoTGlzdCAqc3RtdHMpOwotc3RhdGlj IHZvaWQgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoTGlzdCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUp Oworc3RhdGljIHZvaWQgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoTGlzdCAqc3RtdF9saXN0LCBQYXJh bUxpc3RJbmZvIGJvdW5kUGFyYW1zLAorCQkJCQkJCQkgTGlzdCAqKnBhcnRfcHJ1bmVfcmVzdWx0 X2xpc3QsCisJCQkJCQkJCSBMaXN0ICoqbG9ja2VkUmVsaWRzX3Blcl9zdG10KTsKK3N0YXRpYyB2 b2lkIFJlbGVhc2VFeGVjdXRvckxvY2tzKExpc3QgKnN0bXRfbGlzdCwgTGlzdCAqbG9ja2VkUmVs aWRzX3Blcl9zdG10KTsKIHN0YXRpYyB2b2lkIEFjcXVpcmVQbGFubmVyTG9ja3MoTGlzdCAqc3Rt dF9saXN0LCBib29sIGFjcXVpcmUpOwogc3RhdGljIHZvaWQgU2NhblF1ZXJ5Rm9yTG9ja3MoUXVl cnkgKnBhcnNldHJlZSwgYm9vbCBhY3F1aXJlKTsKIHN0YXRpYyBib29sIFNjYW5RdWVyeVdhbGtl cihOb2RlICpub2RlLCBib29sICphY3F1aXJlKTsKQEAgLTc5MCwxNSArNzk1LDIwIEBAIFJldmFs aWRhdGVDYWNoZWRRdWVyeShDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogICoKICAqIE9u IGEgInRydWUiIHJldHVybiwgd2UgaGF2ZSBhY3F1aXJlZCB0aGUgbG9ja3MgbmVlZGVkIHRvIHJ1 biB0aGUgcGxhbi4KICAqIChXZSBtdXN0IGRvIHRoaXMgZm9yIHRoZSAidHJ1ZSIgcmVzdWx0IHRv IGJlIHJhY2UtY29uZGl0aW9uLWZyZWUuKQorICoKKyAqIFNlZSBHZXRDYWNoZWRQbGFuKCkncyBj b21tZW50IGZvciBhIGRlc2NyaXB0aW9uIG9mIHBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QuCiAgKi8K IHN0YXRpYyBib29sCi1DaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJj ZSkKK0NoZWNrQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBQYXJhbUxp c3RJbmZvIGJvdW5kUGFyYW1zLAorCQkJCUxpc3QgKipwYXJ0X3BydW5lX3Jlc3VsdF9saXN0KQog ewogCUNhY2hlZFBsYW4gKnBsYW4gPSBwbGFuc291cmNlLT5ncGxhbjsKIAogCS8qIEFzc2VydCB0 aGF0IGNhbGxlciBjaGVja2VkIHRoZSBxdWVyeXRyZWUgKi8KIAlBc3NlcnQocGxhbnNvdXJjZS0+ aXNfdmFsaWQpOwogCisJKnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QgPSBOSUw7CisKIAkvKiBJZiB0 aGVyZSdzIG5vIGdlbmVyaWMgcGxhbiwganVzdCBzYXkgImZhbHNlIiAqLwogCWlmICghcGxhbikK IAkJcmV0dXJuIGZhbHNlOwpAQCAtODIwLDEzICs4MzAsMjEgQEAgQ2hlY2tDYWNoZWRQbGFuKENh Y2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpCiAJICovCiAJaWYgKHBsYW4tPmlzX3ZhbGlkKQog CXsKKwkJTGlzdCAgICpsb2NrZWRSZWxpZHNfcGVyX3N0bXQ7CisKIAkJLyoKIAkJICogUGxhbiBt dXN0IGhhdmUgcG9zaXRpdmUgcmVmY291bnQgYmVjYXVzZSBpdCBpcyByZWZlcmVuY2VkIGJ5CiAJ CSAqIHBsYW5zb3VyY2U7IHNvIG5vIG5lZWQgdG8gZmVhciBpdCBkaXNhcHBlYXJzIHVuZGVyIHVz IGhlcmUuCiAJCSAqLwogCQlBc3NlcnQocGxhbi0+cmVmY291bnQgPiAwKTsKIAotCQlBY3F1aXJl RXhlY3V0b3JMb2NrcyhwbGFuLT5zdG10X2xpc3QsIHRydWUpOworCQkvKgorCQkgKiBMb2NrIHJl bGF0aW9ucyBzY2FubmVkIGJ5IHRoZSBwbGFuLiAgVGhpcyBpcyB3aGVyZSB0aGUgcHJ1bmluZwor CQkgKiBoYXBwZW5zIGlmIG5lZWRlZC4KKwkJICovCisJCUFjcXVpcmVFeGVjdXRvckxvY2tzKHBs YW4tPnN0bXRfbGlzdCwgYm91bmRQYXJhbXMsCisJCQkJCQkJIHBhcnRfcHJ1bmVfcmVzdWx0X2xp c3QsCisJCQkJCQkJICZsb2NrZWRSZWxpZHNfcGVyX3N0bXQpOwogCiAJCS8qCiAJCSAqIElmIHBs YW4gd2FzIHRyYW5zaWVudCwgY2hlY2sgdG8gc2VlIGlmIFRyYW5zYWN0aW9uWG1pbiBoYXMKQEAg LTg0OCw3ICs4NjYsMTQgQEAgQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5z b3VyY2UpCiAJCX0KIAogCQkvKiBPb3BzLCB0aGUgcmFjZSBjYXNlIGhhcHBlbmVkLiAgUmVsZWFz ZSB1c2VsZXNzIGxvY2tzLiAqLwotCQlBY3F1aXJlRXhlY3V0b3JMb2NrcyhwbGFuLT5zdG10X2xp c3QsIGZhbHNlKTsKKwkJUmVsZWFzZUV4ZWN1dG9yTG9ja3MocGxhbi0+c3RtdF9saXN0LCBsb2Nr ZWRSZWxpZHNfcGVyX3N0bXQpOworCisJCS8qCisJCSAqIFRoZSBvdXRwdXQgbGlzdCBhbmQgYW55 IG9iamVjdHMgdGhlcmVpbiBoYXZlIGJlZW4gYWxsb2NhdGVkIGluIHRoZQorCQkgKiBjYWxsZXIn cyBob3BlZnVsbHkgc2hvcnQtbGl2ZWQgY29udGV4dCwgc28gd2lsbCBub3QgcmVtYWluIGxlYWtl ZAorCQkgKiBmb3IgbG9uZywgdGhvdWdoIHJlc2V0IHRvIGF2b2lkIGl0cyBhY2NpZGVudGFsbHkg YmVpbmcgbG9va2VkIGF0LgorCQkgKi8KKwkJKnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QgPSBOSUw7 CiAJfQogCiAJLyoKQEAgLTg3NCwxMCArODk5LDE1IEBAIENoZWNrQ2FjaGVkUGxhbihDYWNoZWRQ bGFuU291cmNlICpwbGFuc291cmNlKQogICogUGxhbm5pbmcgd29yayBpcyBkb25lIGluIHRoZSBj YWxsZXIncyBtZW1vcnkgY29udGV4dC4gIFRoZSBmaW5pc2hlZCBwbGFuCiAgKiBpcyBpbiBhIGNo aWxkIG1lbW9yeSBjb250ZXh0LCB3aGljaCB0eXBpY2FsbHkgc2hvdWxkIGdldCByZXBhcmVudGVk CiAgKiAodW5sZXNzIHRoaXMgaXMgYSBvbmUtc2hvdCBwbGFuLCBpbiB3aGljaCBjYXNlIHdlIGRv bid0IGNvcHkgdGhlIHBsYW4pLgorICoKKyAqIEEgbGlzdCBvZiBOVUxMcyBpcyByZXR1cm5lZCBp biAqcGFydF9wcnVuZV9yZXN1bHRfbGlzdCwgbWVhbmluZyB0aGF0IG5vCisgKiBQYXJ0aXRpb25Q cnVuZVJlc3VsdCBub2RlcyBoYXZlIHlldCBiZWVuIGNyZWF0ZWQgZm9yIHRoZSBwbGFucyBpbgor ICogc3RtdF9saXN0LgogICovCiBzdGF0aWMgQ2FjaGVkUGxhbiAqCiBCdWlsZENhY2hlZFBsYW4o Q2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgTGlzdCAqcWxpc3QsCi0JCQkJUGFyYW1MaXN0 SW5mbyBib3VuZFBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpCisJCQkJUGFyYW1M aXN0SW5mbyBib3VuZFBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsCisJCQkJTGlz dCAqKnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QpCiB7CiAJQ2FjaGVkUGxhbiAqcGxhbjsKIAlMaXN0 CSAgICpwbGlzdDsKQEAgLTEwMDcsNiArMTAzNywxNyBAQCBCdWlsZENhY2hlZFBsYW4oQ2FjaGVk UGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgTGlzdCAqcWxpc3QsCiAKIAlNZW1vcnlDb250ZXh0U3dp dGNoVG8ob2xkY3h0KTsKIAorCS8qCisJICogTm8gYWN0dWFsIFBhcnRpdGlvblBydW5lUmVzdWx0 cyB5ZXQgdG8gYWRkLCB0aG91Z2ggbXVzdCBpbml0aWFsaXplCisJICogdGhlIGxpc3QgdG8gaGF2 ZSB0aGUgc2FtZSBudW1iZXIgb2YgZWxlbWVudHMgYXMgdGhlIGxpc3Qgb2YKKwkgKiBQbGFubmVk U3RtdHMuCisJICovCisJKnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QgPSBOSUw7CisJZm9yZWFjaChs YywgcGxpc3QpCisJeworCQkqcGFydF9wcnVuZV9yZXN1bHRfbGlzdCA9IGxhcHBlbmQoKnBhcnRf cHJ1bmVfcmVzdWx0X2xpc3QsIE5VTEwpOworCX0KKwogCXJldHVybiBwbGFuOwogfQogCkBAIC0x MTI2LDYgKzExNjcsMTcgQEAgY2FjaGVkX3BsYW5fY29zdChDYWNoZWRQbGFuICpwbGFuLCBib29s IGluY2x1ZGVfcGxhbm5lcikKICAqIHBsYW4gb3IgYSBjdXN0b20gcGxhbiBmb3IgdGhlIGdpdmVu IHBhcmFtZXRlcnM6IHRoZSBjYWxsZXIgZG9lcyBub3Qga25vdwogICogd2hpY2ggaXQgd2lsbCBn ZXQuCiAgKgorICogRm9yIGV2ZXJ5IFBsYW5uZWRTdG10IGZvdW5kIGluIHRoZSByZXR1cm5lZCBD YWNoZWRQbGFuLCBhbiBlbGVtZW50IHRoYXQKKyAqIGlzIGVpdGhlciBhIFBhcnRpdGlvblBydW5l UmVzdWx0IG9yIGEgTlVMTCBpcyBhZGRlZCB0bworICogKnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3Qg aWYgbmVlZGVkLiAgVGhlIGZvcm1lciBpZiB0aGUgUGxhbm5lZFN0bXQgaXMgZnJvbQorICogdGhl IGV4aXN0aW5nIENhY2hlZFBsYW4gdGhhdCBpcyBvdGhlcndpc2UgdmFsaWQgYW5kIGNvbnRhaW5z IGF0IGxlYXN0IG9uZQorICogUGFydGl0aW9uUHJ1bmVJbmZvIHRoYXQgaGFzICJpbml0aWFsIiBw cnVuaW5nIHN0ZXBzLiAgVGhvc2Ugc3RlcHMgYXJlCisgKiBwZXJmb3JtZWQgYnkgY2FsbGluZyBF eGVjdXRvckRvSW5pdGlhbFBydW5pbmcoKSB0byBkZXRlcm1pbmUgb25seSB0aG9zZQorICogbGVh ZiBwYXJ0aXRpb25zIHRoYXQgbmVlZCB0byBiZSBsb2NrZWQgYnkgQWNxdWlyZUV4ZWN1dG9yTG9j a3MoKSBieSBwcnVuaW5nCisgKiBhd2F5IHN1YnBsYW5zIHRoYXQgZG9uJ3QgbWF0Y2ggdGhlIHBy dW5pbmcgY29uZGl0aW9ucy4gIFRoZQorICogUGFydGl0aW9uUHJ1bmVSZXN1bHQgY29udGFpbnMg YSBsaXN0IG9mIGJpdG1hcHNldHMgb2YgdGhlIGluZGV4ZXMgb2YKKyAqIG1hdGNoaW5nIHN1YnBs YW5zLCBvbmUgZm9yIGVhY2ggUGFydGl0aW9uUHJ1bmVJbmZvLgorICoKICAqIE9uIHJldHVybiwg dGhlIHBsYW4gaXMgdmFsaWQgYW5kIHdlIGhhdmUgc3VmZmljaWVudCBsb2NrcyB0byBiZWdpbgog ICogZXhlY3V0aW9uLgogICoKQEAgLTExMzksMTEgKzExOTEsMTMgQEAgY2FjaGVkX3BsYW5fY29z dChDYWNoZWRQbGFuICpwbGFuLCBib29sIGluY2x1ZGVfcGxhbm5lcikKICAqLwogQ2FjaGVkUGxh biAqCiBHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIFBhcmFtTGlz dEluZm8gYm91bmRQYXJhbXMsCi0JCQkgIFJlc291cmNlT3duZXIgb3duZXIsIFF1ZXJ5RW52aXJv bm1lbnQgKnF1ZXJ5RW52KQorCQkJICBSZXNvdXJjZU93bmVyIG93bmVyLCBRdWVyeUVudmlyb25t ZW50ICpxdWVyeUVudiwKKwkJCSAgTGlzdCAqKnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QpCiB7CiAJ Q2FjaGVkUGxhbiAqcGxhbiA9IE5VTEw7CiAJTGlzdAkgICAqcWxpc3Q7CiAJYm9vbAkJY3VzdG9t cGxhbjsKKwlMaXN0CSAgICpteV9wYXJ0X3BydW5lX3Jlc3VsdF9saXN0OwogCiAJLyogQXNzZXJ0 IGNhbGxlciBpcyBkb2luZyB0aGluZ3MgaW4gYSBzYW5lIG9yZGVyICovCiAJQXNzZXJ0KHBsYW5z b3VyY2UtPm1hZ2ljID09IENBQ0hFRFBMQU5TT1VSQ0VfTUFHSUMpOwpAQCAtMTE2MCw3ICsxMjE0 LDggQEAgR2V0Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBQYXJhbUxp c3RJbmZvIGJvdW5kUGFyYW1zLAogCiAJaWYgKCFjdXN0b21wbGFuKQogCXsKLQkJaWYgKENoZWNr Q2FjaGVkUGxhbihwbGFuc291cmNlKSkKKwkJaWYgKENoZWNrQ2FjaGVkUGxhbihwbGFuc291cmNl LCBib3VuZFBhcmFtcywKKwkJCQkJCQkmbXlfcGFydF9wcnVuZV9yZXN1bHRfbGlzdCkpCiAJCXsK IAkJCS8qIFdlIHdhbnQgYSBnZW5lcmljIHBsYW4sIGFuZCB3ZSBhbHJlYWR5IGhhdmUgYSB2YWxp ZCBvbmUgKi8KIAkJCXBsYW4gPSBwbGFuc291cmNlLT5ncGxhbjsKQEAgLTExNjksNyArMTIyNCw4 IEBAIEdldENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgUGFyYW1MaXN0 SW5mbyBib3VuZFBhcmFtcywKIAkJZWxzZQogCQl7CiAJCQkvKiBCdWlsZCBhIG5ldyBnZW5lcmlj IHBsYW4gKi8KLQkJCXBsYW4gPSBCdWlsZENhY2hlZFBsYW4ocGxhbnNvdXJjZSwgcWxpc3QsIE5V TEwsIHF1ZXJ5RW52KTsKKwkJCXBsYW4gPSBCdWlsZENhY2hlZFBsYW4ocGxhbnNvdXJjZSwgcWxp c3QsIE5VTEwsIHF1ZXJ5RW52LAorCQkJCQkJCQkgICAmbXlfcGFydF9wcnVuZV9yZXN1bHRfbGlz dCk7CiAJCQkvKiBKdXN0IG1ha2UgcmVhbCBzdXJlIHBsYW5zb3VyY2UtPmdwbGFuIGlzIGNsZWFy ICovCiAJCQlSZWxlYXNlR2VuZXJpY1BsYW4ocGxhbnNvdXJjZSk7CiAJCQkvKiBMaW5rIHRoZSBu ZXcgZ2VuZXJpYyBwbGFuIGludG8gdGhlIHBsYW5zb3VyY2UgKi8KQEAgLTEyMTQsNyArMTI3MCw4 IEBAIEdldENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgUGFyYW1MaXN0 SW5mbyBib3VuZFBhcmFtcywKIAlpZiAoY3VzdG9tcGxhbikKIAl7CiAJCS8qIEJ1aWxkIGEgY3Vz dG9tIHBsYW4gKi8KLQkJcGxhbiA9IEJ1aWxkQ2FjaGVkUGxhbihwbGFuc291cmNlLCBxbGlzdCwg Ym91bmRQYXJhbXMsIHF1ZXJ5RW52KTsKKwkJcGxhbiA9IEJ1aWxkQ2FjaGVkUGxhbihwbGFuc291 cmNlLCBxbGlzdCwgYm91bmRQYXJhbXMsIHF1ZXJ5RW52LAorCQkJCQkJCSAgICZteV9wYXJ0X3By dW5lX3Jlc3VsdF9saXN0KTsKIAkJLyogQWNjdW11bGF0ZSB0b3RhbCBjb3N0cyBvZiBjdXN0b20g cGxhbnMgKi8KIAkJcGxhbnNvdXJjZS0+dG90YWxfY3VzdG9tX2Nvc3QgKz0gY2FjaGVkX3BsYW5f Y29zdChwbGFuLCB0cnVlKTsKIApAQCAtMTI0Niw2ICsxMzAzLDkgQEAgR2V0Q2FjaGVkUGxhbihD YWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAog CQlwbGFuLT5pc19zYXZlZCA9IHRydWU7CiAJfQogCisJaWYgKHBhcnRfcHJ1bmVfcmVzdWx0X2xp c3QpCisJCSpwYXJ0X3BydW5lX3Jlc3VsdF9saXN0ID0gbXlfcGFydF9wcnVuZV9yZXN1bHRfbGlz dDsKKwogCXJldHVybiBwbGFuOwogfQogCkBAIC0xNzM3LDE3ICsxNzk3LDI5IEBAIFF1ZXJ5TGlz dEdldFByaW1hcnlTdG10KExpc3QgKnN0bXRzKQogCiAvKgogICogQWNxdWlyZUV4ZWN1dG9yTG9j a3M6IGFjcXVpcmUgbG9ja3MgbmVlZGVkIGZvciBleGVjdXRpb24gb2YgYSBjYWNoZWQgcGxhbjsK LSAqIG9yIHJlbGVhc2UgdGhlbSBpZiBhY3F1aXJlIGlzIGZhbHNlLgorICoKKyAqIFNlZSBHZXRD YWNoZWRQbGFuKCkncyBjb21tZW50IGZvciBhIGRlc2NyaXB0aW9uIG9mIHBhcnRfcHJ1bmVfcmVz dWx0X2xpc3QuCisgKgorICogT24gcmV0dXJuLCAqbG9ja2VkUmVsaWRzX3Blcl9zdG10IHdpbGwg Y29udGFpbiBhIGJpdG1hcHNldCBmb3IgZXZlcnkKKyAqIFBsYW5uZWRTdG10IGluIHN0bXRfbGlz dCwgY29udGFpbmluZyB0aGUgUlQgaW5kZXhlcyBvZiByZWxhdGlvbiBlbnRyaWVzCisgKiBpbiBp dHMgcmFuZ2UgdGFibGUgdGhhdCB3ZXJlIGFjdHVhbGx5IGxvY2tlZCwgb3IgTlVMTCBpZiB0aGUg UGxhbm5lZFN0bXQKKyAqIGNvbnRhaW5zIGEgdXRpbGl0eSBzdGF0ZW1lbnQuCiAgKi8KIHN0YXRp YyB2b2lkCi1BY3F1aXJlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10X2xpc3QsIGJvb2wgYWNxdWly ZSkKK0FjcXVpcmVFeGVjdXRvckxvY2tzKExpc3QgKnN0bXRfbGlzdCwgUGFyYW1MaXN0SW5mbyBi b3VuZFBhcmFtcywKKwkJCQkJIExpc3QgKipwYXJ0X3BydW5lX3Jlc3VsdF9saXN0LAorCQkJCQkg TGlzdCAqKmxvY2tlZFJlbGlkc19wZXJfc3RtdCkKIHsKIAlMaXN0Q2VsbCAgICpsYzE7CiAKKwkq cGFydF9wcnVuZV9yZXN1bHRfbGlzdCA9ICpsb2NrZWRSZWxpZHNfcGVyX3N0bXQgPSBOSUw7CiAJ Zm9yZWFjaChsYzEsIHN0bXRfbGlzdCkKIAl7CiAJCVBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCA9 IGxmaXJzdF9ub2RlKFBsYW5uZWRTdG10LCBsYzEpOwotCQlMaXN0Q2VsbCAgICpsYzI7CisJCVBh cnRpdGlvblBydW5lUmVzdWx0ICpwYXJ0X3BydW5lX3Jlc3VsdCA9IE5VTEw7CisJCUJpdG1hcHNl dCAgKmFsbExvY2tSZWxpZHM7CisJCUJpdG1hcHNldCAgKmxvY2tlZFJlbGlkcyA9IE5VTEw7CisJ CWludAkJCXJ0aTsKIAogCQlpZiAocGxhbm5lZHN0bXQtPmNvbW1hbmRUeXBlID09IENNRF9VVElM SVRZKQogCQl7CkBAIC0xNzYxLDEzICsxODMzLDM1IEBAIEFjcXVpcmVFeGVjdXRvckxvY2tzKExp c3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJlKQogCQkJUXVlcnkJICAgKnF1ZXJ5ID0gVXRpbGl0 eUNvbnRhaW5zUXVlcnkocGxhbm5lZHN0bXQtPnV0aWxpdHlTdG10KTsKIAogCQkJaWYgKHF1ZXJ5 KQotCQkJCVNjYW5RdWVyeUZvckxvY2tzKHF1ZXJ5LCBhY3F1aXJlKTsKKwkJCQlTY2FuUXVlcnlG b3JMb2NrcyhxdWVyeSwgdHJ1ZSk7CisJCQkqcGFydF9wcnVuZV9yZXN1bHRfbGlzdCA9IGxhcHBl bmQoKnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QsIE5VTEwpOwogCQkJY29udGludWU7CiAJCX0KIAot CQlmb3JlYWNoKGxjMiwgcGxhbm5lZHN0bXQtPnJ0YWJsZSkKKwkJLyoKKwkJICogRmlndXJlIG91 dCB0aGUgc2V0IG9mIHJlbGF0aW9ucyB0aGF0IHdvdWxkIG5lZWQgdG8gYmUgbG9ja2VkCisJCSAq IGJlZm9yZSBleGVjdXRpbmcgdGhlIHBsYW4uCisJCSAqLworCQlpZiAocGxhbm5lZHN0bXQtPmNv bnRhaW5zSW5pdGlhbFBydW5pbmcpCiAJCXsKLQkJCVJhbmdlVGJsRW50cnkgKnJ0ZSA9IChSYW5n ZVRibEVudHJ5ICopIGxmaXJzdChsYzIpOworCQkJLyoKKwkJCSAqIE9idGFpbiB0aGUgc2V0IG9m IHBhcnRpdGlvbnMgdG8gYmUgbG9ja2VkIGZyb20gdGhlCisJCQkgKiBQYXJ0aXRpb25QcnVuZUlu Zm9zIGJ5IGNvbnNpZGVyaW5nIHRoZSByZXN1bHQgb2YgcGVyZm9ybWluZworCQkJICogaW5pdGlh bCBwYXJ0aXRpb24gcHJ1bmluZy4KKwkJCSAqLworCQkJUGFydGl0aW9uUHJ1bmVSZXN1bHQgKnBh cnRfcHJ1bmVfcmVzdWx0ID0KKwkJCQlFeGVjdXRvckRvSW5pdGlhbFBydW5pbmcocGxhbm5lZHN0 bXQsIGJvdW5kUGFyYW1zKTsKKworCQkJYWxsTG9ja1JlbGlkcyA9IGJtc191bmlvbihwbGFubmVk c3RtdC0+bWluTG9ja1JlbGlkcywKKwkJCQkJCQkJCSAgcGFydF9wcnVuZV9yZXN1bHQtPnNjYW5f bGVhZnBhcnRfcnRpcyk7CisJCX0KKwkJZWxzZQorCQkJYWxsTG9ja1JlbGlkcyA9IHBsYW5uZWRz dG10LT5taW5Mb2NrUmVsaWRzOworCisJCXJ0aSA9IC0xOworCQl3aGlsZSAoKHJ0aSA9IGJtc19u ZXh0X21lbWJlcihhbGxMb2NrUmVsaWRzLCBydGkpKSA+IDApCisJCXsKKwkJCVJhbmdlVGJsRW50 cnkgKnJ0ZSA9IHJ0X2ZldGNoKHJ0aSwgcGxhbm5lZHN0bXQtPnJ0YWJsZSk7CiAKIAkJCWlmIChy dGUtPnJ0ZWtpbmQgIT0gUlRFX1JFTEFUSU9OKQogCQkJCWNvbnRpbnVlOwpAQCAtMTc3OCwxMCAr MTg3Miw1OCBAQCBBY3F1aXJlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10X2xpc3QsIGJvb2wgYWNx dWlyZSkKIAkJCSAqIGZhaWwgaWYgaXQncyBiZWVuIGRyb3BwZWQgZW50aXJlbHkgLS0tIHdlJ2xs IGp1c3QgdHJhbnNpZW50bHkKIAkJCSAqIGFjcXVpcmUgYSBub24tY29uZmxpY3RpbmcgbG9jay4K IAkJCSAqLwotCQkJaWYgKGFjcXVpcmUpCi0JCQkJTG9ja1JlbGF0aW9uT2lkKHJ0ZS0+cmVsaWQs IHJ0ZS0+cmVsbG9ja21vZGUpOwotCQkJZWxzZQotCQkJCVVubG9ja1JlbGF0aW9uT2lkKHJ0ZS0+ cmVsaWQsIHJ0ZS0+cmVsbG9ja21vZGUpOworCQkJTG9ja1JlbGF0aW9uT2lkKHJ0ZS0+cmVsaWQs IHJ0ZS0+cmVsbG9ja21vZGUpOworCQkJbG9ja2VkUmVsaWRzID0gYm1zX2FkZF9tZW1iZXIobG9j a2VkUmVsaWRzLCBydGkpOworCQl9CisKKwkJKnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QgPSBsYXBw ZW5kKCpwYXJ0X3BydW5lX3Jlc3VsdF9saXN0LAorCQkJCQkJCQkJCSAgcGFydF9wcnVuZV9yZXN1 bHQpOworCQkqbG9ja2VkUmVsaWRzX3Blcl9zdG10ID0gbGFwcGVuZCgqbG9ja2VkUmVsaWRzX3Bl cl9zdG10LCBsb2NrZWRSZWxpZHMpOworCX0KK30KKworLyoKKyAqIFJlbGVhc2VFeGVjdXRvckxv Y2tzCisgKiAJCVJlbGVhc2UgbG9ja3MgdGhhdCB3b3VsZCd2ZSBiZWVuIGFjcXVpcmVkIGJ5IGFu IGVhcmxpZXIgY2FsbCB0bworICogCQlBY3F1aXJlRXhlY3V0b3JMb2NrcygpCisgKi8KK3N0YXRp YyB2b2lkCitSZWxlYXNlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10X2xpc3QsIExpc3QgKmxvY2tl ZFJlbGlkc19wZXJfc3RtdCkKK3sKKwlMaXN0Q2VsbCAgICpsYzEsCisJCQkgICAqbGMyOworCisJ Zm9yYm90aChsYzEsIHN0bXRfbGlzdCwgbGMyLCBsb2NrZWRSZWxpZHNfcGVyX3N0bXQpCisJewor CQlQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQgPSBsZmlyc3Rfbm9kZShQbGFubmVkU3RtdCwgbGMx KTsKKwkJQml0bWFwc2V0ICAqbG9ja2VkUmVsaWRzID0gbGZpcnN0KGxjMik7CisJCWludAkJCXJ0 aTsKKworCQlpZiAocGxhbm5lZHN0bXQtPmNvbW1hbmRUeXBlID09IENNRF9VVElMSVRZKQorCQl7 CisJCQkvKgorCQkJICogSWdub3JlIHV0aWxpdHkgc3RhdGVtZW50cywgZXhjZXB0IHRob3NlIChz dWNoIGFzIEVYUExBSU4pIHRoYXQKKwkJCSAqIGNvbnRhaW4gYSBwYXJzZWQtYnV0LW5vdC1wbGFu bmVkIHF1ZXJ5LiAgTm90ZTogaXQncyBva2F5IHRvIHVzZQorCQkJICogU2NhblF1ZXJ5Rm9yTG9j a3MsIGV2ZW4gdGhvdWdoIHRoZSBxdWVyeSBoYXNuJ3QgYmVlbiB0aHJvdWdoCisJCQkgKiBydWxl IHJld3JpdGluZywgYmVjYXVzZSByZXdyaXRpbmcgZG9lc24ndCBjaGFuZ2UgdGhlIHF1ZXJ5CisJ CQkgKiByZXByZXNlbnRhdGlvbi4KKwkJCSAqLworCQkJUXVlcnkJICAgKnF1ZXJ5ID0gVXRpbGl0 eUNvbnRhaW5zUXVlcnkocGxhbm5lZHN0bXQtPnV0aWxpdHlTdG10KTsKKworCQkJaWYgKHF1ZXJ5 KQorCQkJCVNjYW5RdWVyeUZvckxvY2tzKHF1ZXJ5LCBmYWxzZSk7CisJCQljb250aW51ZTsKKwkJ fQorCisJCXJ0aSA9IC0xOworCQl3aGlsZSAoKHJ0aSA9IGJtc19uZXh0X21lbWJlcihsb2NrZWRS ZWxpZHMsIHJ0aSkpID49IDApCisJCXsKKwkJCVJhbmdlVGJsRW50cnkgKnJ0ZSA9IHJ0X2ZldGNo KHJ0aSwgcGxhbm5lZHN0bXQtPnJ0YWJsZSk7CisKKwkJCUFzc2VydChydGUtPnJ0ZWtpbmQgPT0g UlRFX1JFTEFUSU9OKTsKKworCQkJLyogU2VlIHRoZSBjb21tZW50IGluIEFjcXVpcmVFeGVjdXRv ckxvY2tzKCkuICovCisJCQlVbmxvY2tSZWxhdGlvbk9pZChydGUtPnJlbGlkLCBydGUtPnJlbGxv Y2ttb2RlKTsKIAkJfQogCX0KIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3Iv cG9ydGFsbWVtLmMgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCmluZGV4IGQ1 NDlmNjZkNGEuLjFiYmU2YjcwNGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3Iv cG9ydGFsbWVtLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYwpAQCAt MzAzLDYgKzMwMywyNSBAQCBQb3J0YWxEZWZpbmVRdWVyeShQb3J0YWwgcG9ydGFsLAogCXBvcnRh bC0+c3RhdHVzID0gUE9SVEFMX0RFRklORUQ7CiB9CiAKKy8qCisgKiBQb3J0YWxTdG9yZVBhcnRp dGlvblBydW5lUmVzdWx0cworICoJCUNvcHkgdGhlIGdpdmVuIGxpc3Qgb2YgUGFydGl0aW9uUHJ1 bmVSZXN1bHRzIGludG8gdGhlIHBvcnRhbCdzCisgKgkJY29udGV4dAorICoKKyAqIFRoaXMgYWxs b3dzIHRoZSBjYWxsZXIgdG8gZW5zdXJlIHRoYXQgdGhlIGxpc3QgZXhpc3RzIGFzIGxvbmcgYXMg dGhlIHBvcnRhbAorICogZG9lcy4KKyAqLwordm9pZAorUG9ydGFsU3RvcmVQYXJ0aXRpb25QcnVu ZVJlc3VsdHMoUG9ydGFsIHBvcnRhbCwgTGlzdCAqcGFydF9wcnVuZV9yZXN1bHRzKQoreworCU1l bW9yeUNvbnRleHQJb2xkY3h0OworCisJQXNzZXJ0QXJnKFBvcnRhbElzVmFsaWQocG9ydGFsKSk7 CisJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHBvcnRhbC0+cG9ydGFsQ29udGV4dCk7 CisJcG9ydGFsLT5wYXJ0X3BydW5lX3Jlc3VsdHMgPSBjb3B5T2JqZWN0KHBhcnRfcHJ1bmVfcmVz dWx0cyk7CisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7Cit9CisKIC8qCiAgKiBQb3J0 YWxSZWxlYXNlQ2FjaGVkUGxhbgogICoJCVJlbGVhc2UgYSBwb3J0YWwncyByZWZlcmVuY2UgdG8g aXRzIGNhY2hlZCBwbGFuLCBpZiBhbnkuCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5k cy9leHBsYWluLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKaW5kZXggNjY2OTc3 ZmIxZi4uYmJjOGM0MmQ4OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFp bi5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaApAQCAtODcsNyArODcsOSBA QCBleHRlcm4gdm9pZCBFeHBsYWluT25lVXRpbGl0eShOb2RlICp1dGlsaXR5U3RtdCwgSW50b0Ns YXVzZSAqaW50bywKIAkJCQkJCQkgIEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IGNoYXIgKnF1ZXJ5 U3RyaW5nLAogCQkJCQkJCSAgUGFyYW1MaXN0SW5mbyBwYXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQg KnF1ZXJ5RW52KTsKIAotZXh0ZXJuIHZvaWQgRXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBs YW5uZWRzdG10LCBJbnRvQ2xhdXNlICppbnRvLAorZXh0ZXJuIHZvaWQgRXhwbGFpbk9uZVBsYW4o UGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LAorCQkJCQkJICAgUGFydGl0aW9uUHJ1bmVSZXN1bHQg KnBhcnRfcHJ1bmVfcmVzdWx0LAorCQkJCQkJICAgSW50b0NsYXVzZSAqaW50bywKIAkJCQkJCSAg IEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogCQkJCQkJICAgUGFy YW1MaXN0SW5mbyBwYXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAogCQkJCQkJICAg Y29uc3QgaW5zdHJfdGltZSAqcGxhbmR1cmF0aW9uLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv ZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRp dGlvbi5oCmluZGV4IDcwODQzNWU5NTIuLmJkODc3NjQwMmUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9l eGVjUGFydGl0aW9uLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgZXh0ZXJuIHZvaWQgRXhlY0NsZWFudXBU dXBsZVJvdXRpbmcoTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwKICAqIG5wYXJ0cwkJCQkJCUxl bmd0aCBvZiBzdWJwbGFuX21hcFtdIGFuZCBzdWJwYXJ0X21hcFtdLgogICogc3VicGxhbl9tYXAJ CQkJCVN1YnBsYW4gaW5kZXggYnkgcGFydGl0aW9uIGluZGV4LCBvciAtMS4KICAqIHN1YnBhcnRf bWFwCQkJCQlTdWJwYXJ0IGluZGV4IGJ5IHBhcnRpdGlvbiBpbmRleCwgb3IgLTEuCisgKiBydGlf bWFwCQkJCQkJUmFuZ2UgdGFibGUgaW5kZXggYnkgcGFydGl0aW9uIGluZGV4LCBvciAwLgogICog cHJlc2VudF9wYXJ0cwkJCQlBIEJpdG1hcHNldCBvZiB0aGUgcGFydGl0aW9uIGluZGV4ZXMgdGhh dCB3ZQogICoJCQkJCQkJCWhhdmUgc3VicGxhbnMgb3Igc3VicGFydHMgZm9yLgogICogaW5pdGlh bF9wcnVuaW5nX3N0ZXBzCQlMaXN0IG9mIFBhcnRpdGlvblBydW5lU3RlcHMgdXNlZCB0bwpAQCAt NjEsNiArNjIsNyBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhCiAJ aW50CQkJbnBhcnRzOwogCWludAkJICAgKnN1YnBsYW5fbWFwOwogCWludAkJICAgKnN1YnBhcnRf bWFwOworCUluZGV4CSAgICpydGlfbWFwOwogCUJpdG1hcHNldCAgKnByZXNlbnRfcGFydHM7CiAJ TGlzdAkgICAqaW5pdGlhbF9wcnVuaW5nX3N0ZXBzOwogCUxpc3QJICAgKmV4ZWNfcHJ1bmluZ19z dGVwczsKQEAgLTEyMyw5ICsxMjUsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uUHJ1bmVT dGF0ZQogCiBleHRlcm4gUGFydGl0aW9uUHJ1bmVTdGF0ZSAqRXhlY0luaXRQYXJ0aXRpb25QcnVu aW5nKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogCQkJCQkJCQkJCQkJCSBpbnQgbl90b3RhbF9zdWJw bGFucywKLQkJCQkJCQkJCQkJCQkgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8sCisJCQkJ CQkJCQkJCQkJIGludCBwYXJ0X3BydW5lX2luZGV4LAogCQkJCQkJCQkJCQkJCSBCaXRtYXBzZXQg Kippbml0aWFsbHlfdmFsaWRfc3VicGxhbnMpOwogZXh0ZXJuIEJpdG1hcHNldCAqRXhlY0ZpbmRN YXRjaGluZ1N1YlBsYW5zKFBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGUsCi0JCQkJCQkJ CQkJICAgYm9vbCBpbml0aWFsX3BydW5lKTsKLQorCQkJCQkJCQkJCSAgIGJvb2wgaW5pdGlhbF9w cnVuZSwKKwkJCQkJCQkJCQkgICBCaXRtYXBzZXQgKipzY2FuX2xlYWZwYXJ0X3J0aXMpOworZXh0 ZXJuIEJpdG1hcHNldCAqRXhlY1BhcnRpdGlvbkRvSW5pdGlhbFBydW5pbmcoUGxhbm5lZFN0bXQg KnBsYW5uZWRzdG10LAorCQkJCQkJCQlQYXJhbUxpc3RJbmZvIHBhcmFtcywKKwkJCQkJCQkJUGFy dGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8sCisJCQkJCQkJCUJpdG1hcHNldCAqKnNjYW5fbGVh ZnBhcnRfcnRpcyk7CiAjZW5kaWYJCQkJCQkJLyogRVhFQ1BBUlRJVElPTl9IICovCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0 b3IvZXhlY2Rlc2MuaAppbmRleCBlNzllMmMwMDFmLi42MGQ1NjQ0OTA4IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9y L2V4ZWNkZXNjLmgKQEAgLTM1LDYgKzM1LDggQEAgdHlwZWRlZiBzdHJ1Y3QgUXVlcnlEZXNjCiAJ LyogVGhlc2UgZmllbGRzIGFyZSBwcm92aWRlZCBieSBDcmVhdGVRdWVyeURlc2MgKi8KIAlDbWRU eXBlCQlvcGVyYXRpb247CQkvKiBDTURfU0VMRUNULCBDTURfVVBEQVRFLCBldGMuICovCiAJUGxh bm5lZFN0bXQgKnBsYW5uZWRzdG10OwkvKiBwbGFubmVyJ3Mgb3V0cHV0IChjb3VsZCBiZSB1dGls aXR5LCB0b28pICovCisJUGFydGl0aW9uUHJ1bmVSZXN1bHQgKnBhcnRfcHJ1bmVfcmVzdWx0OyAv KiBFeGVjdXRvckRvSW5pdGlhbFBydW5pbmcoKSdzCisJCQkJCQkJCQkJCSAgKiBvdXRwdXQgZm9y IHBsYW5uZWRzdG10ICovCiAJY29uc3QgY2hhciAqc291cmNlVGV4dDsJCS8qIHNvdXJjZSB0ZXh0 IG9mIHRoZSBxdWVyeSAqLwogCVNuYXBzaG90CXNuYXBzaG90OwkJLyogc25hcHNob3QgdG8gdXNl IGZvciBxdWVyeSAqLwogCVNuYXBzaG90CWNyb3NzY2hlY2tfc25hcHNob3Q7CS8qIGNyb3NzY2hl Y2sgZm9yIFJJIHVwZGF0ZS9kZWxldGUgKi8KQEAgLTU3LDYgKzU5LDcgQEAgdHlwZWRlZiBzdHJ1 Y3QgUXVlcnlEZXNjCiAKIC8qIGluIHBxdWVyeS5jICovCiBleHRlcm4gUXVlcnlEZXNjICpDcmVh dGVRdWVyeURlc2MoUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LAorCQkJCQkJCQkgIFBhcnRpdGlv blBydW5lUmVzdWx0ICpwYXJ0X3BydW5lX3Jlc3VsdCwKIAkJCQkJCQkJICBjb25zdCBjaGFyICpz b3VyY2VUZXh0LAogCQkJCQkJCQkgIFNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkJCQkgIFNuYXBz aG90IGNyb3NzY2hlY2tfc25hcHNob3QsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRv ci9leGVjdXRvci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAppbmRleCA4NzM3 NzJmMTg4Li41N2RjMGU4MDc3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVj dXRvci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKQEAgLTE4NSw2ICsx ODUsOCBAQCBFeGVjR2V0SnVua0F0dHJpYnV0ZShUdXBsZVRhYmxlU2xvdCAqc2xvdCwgQXR0ck51 bWJlciBhdHRubywgYm9vbCAqaXNOdWxsKQogLyoKICAqIHByb3RvdHlwZXMgZnJvbSBmdW5jdGlv bnMgaW4gZXhlY01haW4uYwogICovCitleHRlcm4gUGFydGl0aW9uUHJ1bmVSZXN1bHQgKkV4ZWN1 dG9yRG9Jbml0aWFsUHJ1bmluZyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsCisJCQkJCQkJCQkJ CQkJICBQYXJhbUxpc3RJbmZvIHBhcmFtcyk7CiBleHRlcm4gdm9pZCBFeGVjdXRvclN0YXJ0KFF1 ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKIGV4dGVybiB2b2lkIHN0YW5kYXJkX0V4 ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOwogZXh0ZXJuIHZv aWQgRXhlY3V0b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmlu ZGV4IDk0YjE5MWY4YWUuLmE4YmY5MDhkNjMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVz L2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC01OTYs NiArNTk2LDggQEAgdHlwZWRlZiBzdHJ1Y3QgRVN0YXRlCiAJc3RydWN0IEV4ZWNSb3dNYXJrICoq ZXNfcm93bWFya3M7CS8qIEFycmF5IG9mIHBlci1yYW5nZS10YWJsZS1lbnRyeQogCQkJCQkJCQkJ CSAqIEV4ZWNSb3dNYXJrcywgb3IgTlVMTCBpZiBub25lICovCiAJUGxhbm5lZFN0bXQgKmVzX3Bs YW5uZWRzdG10OwkvKiBsaW5rIHRvIHRvcCBvZiBwbGFuIHRyZWUgKi8KKwlMaXN0CQkqZXNfcGFy dF9wcnVuZV9pbmZvczsJLyogUGxhbm5lZFN0bXQucGFydFBydW5lSW5mb3MgKi8KKwlzdHJ1Y3Qg UGFydGl0aW9uUHJ1bmVSZXN1bHQgKmVzX3BhcnRfcHJ1bmVfcmVzdWx0OyAvKiBRdWVyeURlc2Mu cGFydF9wcnVuZV9yZXN1bHQgKi8KIAljb25zdCBjaGFyICplc19zb3VyY2VUZXh0OwkvKiBTb3Vy Y2UgdGV4dCBmcm9tIFF1ZXJ5RGVzYyAqLwogCiAJSnVua0ZpbHRlciAqZXNfanVua0ZpbHRlcjsJ LyogdG9wLWxldmVsIGp1bmsgZmlsdGVyLCBpZiBhbnkgKi8KQEAgLTk4NCw2ICs5ODYsMzQgQEAg dHlwZWRlZiBzdHJ1Y3QgRG9tYWluQ29uc3RyYWludFN0YXRlCiAgKi8KIHR5cGVkZWYgVHVwbGVU YWJsZVNsb3QgKigqRXhlY1Byb2NOb2RlTXRkKSAoc3RydWN0IFBsYW5TdGF0ZSAqcHN0YXRlKTsK IAorLyotLS0tLS0tLS0tLS0tLS0tCisgKiBQYXJ0aXRpb25QcnVuZVJlc3VsdAorICoKKyAqIFRo ZSByZXN1bHQgb2YgcGVyZm9ybWluZyBFeGVjdXRvckRvSW5pdGlhbFBydW5pbmcoKSBpbnZvY2F0 aW9uIG9uIGEgZ2l2ZW4KKyAqIFBsYW5uZWRTdG10LgorICoKKyAqIENvbnRhaW5zIGEgbGlzdCBv ZiBCaXRtYXBzZXQgb2YgdGhlIGluZGV4ZXMgb2YgdGhlIHN1YnBsYW5zIHJlbWFpbmluZyBhZnRl cgorICogcGVyZm9ybWluZyBpbml0aWFsIHBydW5pbmcgYnkgY2FsbGluZyBFeGVjRmluZE1hdGNo aW5nU3ViUGxhbnMoKSBmb3IgZXZlcnkKKyAqIFBhcnRpdGlvblBydW5lSW5mb3MgZm91bmQgaW4g UGxhbm5lZFN0bXQucGFydFBydW5lSW5mb3MuICBSVCBpbmRleGVzIG9mIHRoZQorICogbGVhZiBw YXJ0aXRpb25zIHNjYW5uZWQgYnkgdGhvc2Ugc3VicGxhbnMgYWNyb3NzIGFsbCBQYXJ0aXRpb25Q cnVuZUluZm9zCisgKiBhcmUgYWRkZWQgaW50byBzY2FuX2xlYWZwYXJ0X3J0aXMuCisgKgorICog VGhpcyBpcyB1c2VkIGJ5IEdldENhY2hlZFBsYW4oKSB0byBpbmZvcm0gaXRzIGNhbGxlcnMgb2Yg dGhlIHBydW5pbmcKKyAqIGRlY2lzaW9ucyBtYWRlIHdoZW4gcGVyZm9ybWluZyBBY3F1aXJlRXhl Y3V0b3JMb2NrcygpIG9uIGEgZ2l2ZW4gY2FjaGVkCisgKiBQbGFubmVkU3RtdCwgd2hpY2ggdGhl IGNhbGxlcnMgdGhlbiBwYXNzIG9udG8gdGhlIGV4ZWN1dG9yLiAgVGhlIGV4ZWN1dG9yCisgKiBy ZWZlcnMgdG8gdGhpcyBub2RlIHdoZW4gbWFkZSBhdmFpbGFibGUgd2hlbiBpbml0aWFsaXppbmcg dGhlIHBsYW4gbm9kZXMgdG8KKyAqIHdoaWNoIHRob3NlIFBhcnRpdGlvblBydW5lSW5mb3MgYXBw bHkgc28gdGhhdCB0aGUgc2FtZSBzZXQgb2YgcXVhbGlmeWluZworICogc3VicGxhbnMgYXJlIGlu aXRpYWxpemVkLCByYXRoZXIgdGhhbiBkZXJpdmluZyB0aGF0IHNldCBhZ2FpbiBieSByZWRvaW5n CisgKiBpbml0aWFsIHBydW5pbmcuCisgKi8KK3R5cGVkZWYgc3RydWN0IFBhcnRpdGlvblBydW5l UmVzdWx0Cit7CisJTm9kZVRhZwkJdHlwZTsKKworCUxpc3QJCSAgICp2YWxpZF9zdWJwbGFuX29m ZnNfbGlzdDsKKwlCaXRtYXBzZXQJICAgKnNjYW5fbGVhZnBhcnRfcnRpczsKK30gUGFydGl0aW9u UHJ1bmVSZXN1bHQ7CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0KICAqCQlQbGFuU3RhdGUgbm9kZQog ICoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL25vZGVzLmggYi9zcmMvaW5jbHVkZS9u b2Rlcy9ub2Rlcy5oCmluZGV4IDM0MGQyOGY0ZTEuLjY2NDE2YmNlOTcgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL25vZGVzL25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaApA QCAtOTcsNiArOTcsOSBAQCB0eXBlZGVmIGVudW0gTm9kZVRhZwogCVRfUGFydGl0aW9uUHJ1bmVT dGVwQ29tYmluZSwKIAlUX1BsYW5JbnZhbEl0ZW0sCiAKKwkvKiBUQUdTIEZPUiBFWEVDVVRPUiBQ UkVQIE5PREVTIChleGVjbm9kZXMuaCkgKi8KKwlUX1BhcnRpdGlvblBydW5lUmVzdWx0LAorCiAJ LyoKIAkgKiBUQUdTIEZPUiBQTEFOIFNUQVRFIE5PREVTIChleGVjbm9kZXMuaCkKIAkgKgpAQCAt Njc0LDYgKzY3Nyw3IEBAIGV4dGVybiBzdHJ1Y3QgQml0bWFwc2V0ICpyZWFkQml0bWFwc2V0KHZv aWQpOwogZXh0ZXJuIHVpbnRwdHJfdCByZWFkRGF0dW0oYm9vbCB0eXBieXZhbCk7CiBleHRlcm4g Ym9vbCAqcmVhZEJvb2xDb2xzKGludCBudW1Db2xzKTsKIGV4dGVybiBpbnQgKnJlYWRJbnRDb2xz KGludCBudW1Db2xzKTsKK2V4dGVybiBJbmRleCAqcmVhZEluZGV4Q29scyhpbnQgbnVtQ29scyk7 CiBleHRlcm4gT2lkICpyZWFkT2lkQ29scyhpbnQgbnVtQ29scyk7CiBleHRlcm4gaW50MTYgKnJl YWRBdHRyTnVtYmVyQ29scyhpbnQgbnVtQ29scyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L25vZGVzL3BhdGhub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKaW5kZXgg YzVhYjUzZTA1Yy4uMTEwMDdjZGEyNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0 aG5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKQEAgLTEwNyw2ICsx MDcsMTggQEAgdHlwZWRlZiBzdHJ1Y3QgUGxhbm5lckdsb2JhbAogCiAJTGlzdAkgICAqYXBwZW5k UmVsYXRpb25zOwkvKiAiZmxhdCIgbGlzdCBvZiBBcHBlbmRSZWxJbmZvcyAqLwogCisJTGlzdAkg ICAqcGFydFBydW5lSW5mb3M7CQkvKiBMaXN0IG9mIFBhcnRpdGlvblBydW5lSW5mbyBjb250YWlu ZWQgaW4KKwkJCQkJCQkJCSAqIHRoZSBwbGFuICovCisKKwlib29sCQljb250YWluc0luaXRpYWxQ cnVuaW5nOwkvKiBEbyBhbnkgb2YgdGhvc2UgUGFydGl0aW9uUHJ1bmVJbmZvcworCQkJCQkJCQkJ CSAqIGhhdmUgaW5pdGlhbCAocHJlLWV4ZWMpIHBydW5pbmcKKwkJCQkJCQkJCQkgKiBzdGVwcyBp biB0aGVtPyAqLworCisJQml0bWFwc2V0ICAqbWluTG9ja1JlbGlkczsJLyogSW5kZXhlcyBvZiBh bGwgcmFuZ2UgdGFibGUgZW50cmllcyBtaW51cworCQkJCQkJCQkgKiBpbmRleGVzIG9mIHJhbmdl IHRhYmxlIGVudHJpZXMgb2YgdGhlIGxlYWYKKwkJCQkJCQkJICogcGFydGl0aW9ucyBzY2FubmVk IGJ5IHBydW5hYmxlIHN1YnBsYW5zOworCQkJCQkJCQkgKiBzZWUgQWNxdWlyZUV4ZWN1dG9yTG9j a3MoKSAqLworCiAJTGlzdAkgICAqcmVsYXRpb25PaWRzOwkvKiBPSURzIG9mIHJlbGF0aW9ucyB0 aGUgcGxhbiBkZXBlbmRzIG9uICovCiAKIAlMaXN0CSAgICppbnZhbEl0ZW1zOwkJLyogb3RoZXIg ZGVwZW5kZW5jaWVzLCBhcyBQbGFuSW52YWxJdGVtcyAqLwpAQCAtMzc3LDYgKzM4OSw5IEBAIHN0 cnVjdCBQbGFubmVySW5mbwogCiAJLyogRG9lcyB0aGlzIHF1ZXJ5IG1vZGlmeSBhbnkgcGFydGl0 aW9uIGtleSBjb2x1bW5zPyAqLwogCWJvb2wJCXBhcnRDb2xzVXBkYXRlZDsKKworCS8qIFBhcnRp dGlvblBydW5lSW5mb3MgYWRkZWQgaW4gdGhpcyBxdWVyeSdzIHBsYW4uICovCisJTGlzdAkgICAq cGFydFBydW5lSW5mb3M7CiB9OwogCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3Bs YW5ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKaW5kZXggZTQzZTM2MGQ5 Yi4uZjhmMzk3MWY0NCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgK KysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKQEAgLTY0LDggKzY0LDIwIEBAIHR5 cGVkZWYgc3RydWN0IFBsYW5uZWRTdG10CiAKIAlzdHJ1Y3QgUGxhbiAqcGxhblRyZWU7CQkvKiB0 cmVlIG9mIFBsYW4gbm9kZXMgKi8KIAorCUxpc3QJICAgKnBhcnRQcnVuZUluZm9zOwkvKiBMaXN0 IG9mIFBhcnRpdGlvblBydW5lSW5mbyBjb250YWluZWQgaW4KKwkJCQkJCQkJICogdGhlIHBsYW4g Ki8KKworCWJvb2wJCWNvbnRhaW5zSW5pdGlhbFBydW5pbmc7CS8qIERvIGFueSBvZiB0aG9zZSBQ YXJ0aXRpb25QcnVuZUluZm9zCisJCQkJCQkJCQkJICogaGF2ZSBpbml0aWFsIChwcmUtZXhlYykg cHJ1bmluZworCQkJCQkJCQkJCSAqIHN0ZXBzIGluIHRoZW0/ICovCisKIAlMaXN0CSAgICpydGFi bGU7CQkJLyogbGlzdCBvZiBSYW5nZVRibEVudHJ5IG5vZGVzICovCiAKKwlCaXRtYXBzZXQgICpt aW5Mb2NrUmVsaWRzOwkvKiBJbmRleGVzIG9mIGFsbCByYW5nZSB0YWJsZSBlbnRyaWVzIG1pbnVz CisJCQkJCQkJCSAqIGluZGV4ZXMgb2YgcmFuZ2UgdGFibGUgZW50cmllcyBvZiB0aGUgbGVhZgor CQkJCQkJCQkgKiBwYXJ0aXRpb25zIHNjYW5uZWQgYnkgcHJ1bmFibGUgc3VicGxhbnM7CisJCQkJ CQkJCSAqIHNlZSBBY3F1aXJlRXhlY3V0b3JMb2NrcygpICovCisKIAkvKiBydGFibGUgaW5kZXhl cyBvZiB0YXJnZXQgcmVsYXRpb25zIGZvciBJTlNFUlQvVVBEQVRFL0RFTEVURSAqLwogCUxpc3QJ ICAgKnJlc3VsdFJlbGF0aW9uczsJLyogaW50ZWdlciBsaXN0IG9mIFJUIGluZGV4ZXMsIG9yIE5J TCAqLwogCkBAIC0yNjIsOCArMjc0LDggQEAgdHlwZWRlZiBzdHJ1Y3QgQXBwZW5kCiAJICovCiAJ aW50CQkJZmlyc3RfcGFydGlhbF9wbGFuOwogCi0JLyogSW5mbyBmb3IgcnVuLXRpbWUgc3VicGxh biBwcnVuaW5nOyBOVUxMIGlmIHdlJ3JlIG5vdCBkb2luZyB0aGF0ICovCi0Jc3RydWN0IFBhcnRp dGlvblBydW5lSW5mbyAqcGFydF9wcnVuZV9pbmZvOworCS8qIEluZGV4IHRvIFBsYW5uZXJJbmZv LnBhcnRQcnVuZUluZm9zIG9yIC0xIGlmIG5vIHJ1bi10aW1lIHBydW5pbmcgKi8KKwlpbnQJCQlw YXJ0X3BydW5lX2luZGV4OwogfSBBcHBlbmQ7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KQEAgLTI4 Miw4ICsyOTQsOSBAQCB0eXBlZGVmIHN0cnVjdCBNZXJnZUFwcGVuZAogCU9pZAkJICAgKnNvcnRP cGVyYXRvcnM7CS8qIE9JRHMgb2Ygb3BlcmF0b3JzIHRvIHNvcnQgdGhlbSBieSAqLwogCU9pZAkJ ICAgKmNvbGxhdGlvbnM7CQkvKiBPSURzIG9mIGNvbGxhdGlvbnMgKi8KIAlib29sCSAgICpudWxs c0ZpcnN0OwkJLyogTlVMTFMgRklSU1QvTEFTVCBkaXJlY3Rpb25zICovCi0JLyogSW5mbyBmb3Ig cnVuLXRpbWUgc3VicGxhbiBwcnVuaW5nOyBOVUxMIGlmIHdlJ3JlIG5vdCBkb2luZyB0aGF0ICov Ci0Jc3RydWN0IFBhcnRpdGlvblBydW5lSW5mbyAqcGFydF9wcnVuZV9pbmZvOworCisJLyogSW5k ZXggdG8gUGxhbm5lckluZm8ucGFydFBydW5lSW5mb3Mgb3IgLTEgaWYgbm8gcnVuLXRpbWUgcHJ1 bmluZyAqLworCWludAkJCXBhcnRfcHJ1bmVfaW5kZXg7CiB9IE1lcmdlQXBwZW5kOwogCiAvKiAt LS0tLS0tLS0tLS0tLS0tCkBAIC0xMTkxLDYgKzEyMDQsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgUGxh blJvd01hcmsKICAqIHBydW5lX2luZm9zCQkJTGlzdCBvZiBMaXN0cyBjb250YWluaW5nIFBhcnRp dGlvbmVkUmVsUHJ1bmVJbmZvIG5vZGVzLAogICoJCQkJCQlvbmUgc3VibGlzdCBwZXIgcnVuLXRp bWUtcHJ1bmFibGUgcGFydGl0aW9uIGhpZXJhcmNoeQogICoJCQkJCQlhcHBlYXJpbmcgaW4gdGhl IHBhcmVudCBwbGFuIG5vZGUncyBzdWJwbGFucy4KKyAqCisgKiBuZWVkc19pbml0X3BydW5pbmcJ RG9lcyBhbnkgb2YgdGhlIFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvcyBpbgorICoJCQkJCQlwcnVu ZV9pbmZvcyBoYXZlIGl0cyBpbml0aWFsX3BydW5pbmdfc3RlcHMgc2V0PworICoKKyAqIG5lZWRz X2V4ZWNfcHJ1bmluZwlEb2VzIGFueSBvZiB0aGUgUGFydGl0aW9uZWRSZWxQcnVuZUluZm9zIGlu CisgKgkJCQkJCXBydW5lX2luZm9zIGhhdmUgaXRzIGV4ZWNfcHJ1bmluZ19zdGVwcyBzZXQ/Cisg KgogICogb3RoZXJfc3VicGxhbnMJCUluZGV4ZXMgb2YgYW55IHN1YnBsYW5zIHRoYXQgYXJlIG5v dCBhY2NvdW50ZWQgZm9yCiAgKgkJCQkJCWJ5IGFueSBvZiB0aGUgUGFydGl0aW9uZWRSZWxQcnVu ZUluZm8gbm9kZXMgaW4KICAqCQkJCQkJInBydW5lX2luZm9zIi4gIFRoZXNlIHN1YnBsYW5zIG11 c3Qgbm90IGJlIHBydW5lZC4KQEAgLTExOTksNiArMTIxOSw4IEBAIHR5cGVkZWYgc3RydWN0IFBh cnRpdGlvblBydW5lSW5mbwogewogCU5vZGVUYWcJCXR5cGU7CiAJTGlzdAkgICAqcHJ1bmVfaW5m b3M7CisJYm9vbAkJbmVlZHNfaW5pdF9wcnVuaW5nOworCWJvb2wJCW5lZWRzX2V4ZWNfcHJ1bmlu ZzsKIAlCaXRtYXBzZXQgICpvdGhlcl9zdWJwbGFuczsKIH0gUGFydGl0aW9uUHJ1bmVJbmZvOwog CkBAIC0xMjI5LDYgKzEyNTEsNyBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25lZFJlbFBydW5l SW5mbwogCWludAkJICAgKnN1YnBsYW5fbWFwOwkvKiBzdWJwbGFuIGluZGV4IGJ5IHBhcnRpdGlv biBpbmRleCwgb3IgLTEgKi8KIAlpbnQJCSAgICpzdWJwYXJ0X21hcDsJLyogc3VicGFydCBpbmRl eCBieSBwYXJ0aXRpb24gaW5kZXgsIG9yIC0xICovCiAJT2lkCQkgICAqcmVsaWRfbWFwOwkJLyog cmVsYXRpb24gT0lEIGJ5IHBhcnRpdGlvbiBpbmRleCwgb3IgMCAqLworCUluZGV4CSAgICpydGlf bWFwOwkJLyogUmFuZ2UgdGFibGUgaW5kZXggYnkgcGFydGl0aW9uIGluZGV4LCAwLiAqLwogCiAJ LyoKIAkgKiBpbml0aWFsX3BydW5pbmdfc3RlcHMgc2hvd3MgaG93IHRvIHBydW5lIGR1cmluZyBl eGVjdXRvciBzdGFydHVwIChpLmUuLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFydGl0aW9u aW5nL3BhcnRwcnVuZS5oIGIvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oCmlu ZGV4IDkwNjg0ZWZhMjUuLmViZjBkY2ZmOGMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnRp dGlvbmluZy9wYXJ0cHJ1bmUuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBy dW5lLmgKQEAgLTcwLDEwICs3MCwxMCBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25QcnVuZUNv bnRleHQKICNkZWZpbmUgUHJ1bmVDeHRTdGF0ZUlkeChwYXJ0bmF0dHMsIHN0ZXBfaWQsIGtleW5v KSBcCiAJKChwYXJ0bmF0dHMpICogKHN0ZXBfaWQpICsgKGtleW5vKSkKIAotZXh0ZXJuIFBhcnRp dGlvblBydW5lSW5mbyAqbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKHN0cnVjdCBQbGFubmVySW5m byAqcm9vdCwKLQkJCQkJCQkJCQkJCQlzdHJ1Y3QgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAotCQkJ CQkJCQkJCQkJCUxpc3QgKnN1YnBhdGhzLAotCQkJCQkJCQkJCQkJCUxpc3QgKnBydW5lcXVhbCk7 CitleHRlcm4gaW50IG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhzdHJ1Y3QgUGxhbm5lckluZm8g KnJvb3QsCisJCQkJCQkJCQlzdHJ1Y3QgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAorCQkJCQkJCQkJ TGlzdCAqc3VicGF0aHMsCisJCQkJCQkJCQlMaXN0ICpwcnVuZXF1YWwpOwogZXh0ZXJuIEJpdG1h cHNldCAqcHJ1bmVfYXBwZW5kX3JlbF9wYXJ0aXRpb25zKHN0cnVjdCBSZWxPcHRJbmZvICpyZWwp OwogZXh0ZXJuIEJpdG1hcHNldCAqZ2V0X21hdGNoaW5nX3BhcnRpdGlvbnMoUGFydGl0aW9uUHJ1 bmVDb250ZXh0ICpjb250ZXh0LAogCQkJCQkJCQkJCSAgTGlzdCAqcHJ1bmluZ19zdGVwcyk7CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaCBiL3NyYy9pbmNsdWRlL3V0 aWxzL3BsYW5jYWNoZS5oCmluZGV4IDk1Yjk5ZTNkMjUuLjQ0OTIwMGI5NDkgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3Bs YW5jYWNoZS5oCkBAIC0yMjAsNyArMjIwLDggQEAgZXh0ZXJuIExpc3QgKkNhY2hlZFBsYW5HZXRU YXJnZXRMaXN0KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiBleHRlcm4gQ2FjaGVkUGxh biAqR2V0Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogCQkJCQkJCQkg UGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywKIAkJCQkJCQkJIFJlc291cmNlT3duZXIgb3duZXIs Ci0JCQkJCQkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CisJCQkJCQkJCSBRdWVyeUVu dmlyb25tZW50ICpxdWVyeUVudiwKKwkJCQkJCQkJIExpc3QgKipwYXJ0X3BydW5lX3Jlc3VsdF9s aXN0KTsKIGV4dGVybiB2b2lkIFJlbGVhc2VDYWNoZWRQbGFuKENhY2hlZFBsYW4gKnBsYW4sIFJl c291cmNlT3duZXIgb3duZXIpOwogCiBleHRlcm4gYm9vbCBDYWNoZWRQbGFuQWxsb3dzU2ltcGxl VmFsaWRpdHlDaGVjayhDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLApkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmggYi9zcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaApp bmRleCBhZWRkYmRhZmU1Li45Zjc3MjdhODM3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGls cy9wb3J0YWwuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaApAQCAtMTM4LDYgKzEz OCw3IEBAIHR5cGVkZWYgc3RydWN0IFBvcnRhbERhdGEKIAlRdWVyeUNvbXBsZXRpb24gcWM7CQkJ LyogY29tbWFuZCBjb21wbGV0aW9uIGRhdGEgZm9yIGV4ZWN1dGVkIHF1ZXJ5ICovCiAJTGlzdAkg ICAqc3RtdHM7CQkJLyogbGlzdCBvZiBQbGFubmVkU3RtdHMgKi8KIAlDYWNoZWRQbGFuICpjcGxh bjsJCQkvKiBDYWNoZWRQbGFuLCBpZiBzdG10cyBhcmUgZnJvbSBvbmUgKi8KKwlMaXN0CSAgICpw YXJ0X3BydW5lX3Jlc3VsdHM7CS8qIGxpc3Qgb2YgUGFydGl0aW9uUHJ1bmVSZXN1bHRzICovCiAK IAlQYXJhbUxpc3RJbmZvIHBvcnRhbFBhcmFtczsgLyogcGFyYW1zIHRvIHBhc3MgdG8gcXVlcnkg Ki8KIAlRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudjsgLyogZW52aXJvbm1lbnQgZm9yIHF1ZXJ5 ICovCkBAIC0yNDIsNiArMjQzLDggQEAgZXh0ZXJuIHZvaWQgUG9ydGFsRGVmaW5lUXVlcnkoUG9y dGFsIHBvcnRhbCwKIAkJCQkJCQkgIENvbW1hbmRUYWcgY29tbWFuZFRhZywKIAkJCQkJCQkgIExp c3QgKnN0bXRzLAogCQkJCQkJCSAgQ2FjaGVkUGxhbiAqY3BsYW4pOworZXh0ZXJuIHZvaWQgUG9y dGFsU3RvcmVQYXJ0aXRpb25QcnVuZVJlc3VsdHMoUG9ydGFsIHBvcnRhbCwKKwkJCQkJCQkJCQkJ IExpc3QgKnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QpOwogZXh0ZXJuIFBsYW5uZWRTdG10ICpQb3J0 YWxHZXRQcmltYXJ5U3RtdChQb3J0YWwgcG9ydGFsKTsKIGV4dGVybiB2b2lkIFBvcnRhbENyZWF0 ZUhvbGRTdG9yZShQb3J0YWwgcG9ydGFsKTsKIGV4dGVybiB2b2lkIFBvcnRhbEhhc2hUYWJsZURl bGV0ZUFsbCh2b2lkKTsKLS0gCjIuMjQuMQoK --000000000000118c1405dc2323c0--