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 1pc1Zf-0005QI-NE for pgsql-hackers@arkaria.postgresql.org; Tue, 14 Mar 2023 10:08:08 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pc1Zd-000221-Q5 for pgsql-hackers@arkaria.postgresql.org; Tue, 14 Mar 2023 10:08:05 +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 1pc1Zd-00021o-6K for pgsql-hackers@lists.postgresql.org; Tue, 14 Mar 2023 10:08:05 +0000 Received: from mail-pj1-x1033.google.com ([2607:f8b0:4864:20::1033]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pc1ZY-0002QQ-8L for pgsql-hackers@postgresql.org; Tue, 14 Mar 2023 10:08:04 +0000 Received: by mail-pj1-x1033.google.com with SMTP id y15-20020a17090aa40f00b00237ad8ee3a0so14615763pjp.2 for ; Tue, 14 Mar 2023 03:07:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1678788478; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Dqro9MRlt7HTedIbhxI6kjebC+kOuWy5YK70uMIjQvs=; b=dXOek1WHkbVTNU6Usqa2VRKT7RXJuhQZHLjlb0UmXrhV+d213Lm2nOCVy/4eTfUd8g yQ2RK/FtXdn5BCm6KIcS4zkpItlY9QLtiNVU/oSVJrr+JmxKQ6RYf5N4PgdQfkf/Uv7Z 8KCOqQH33ouZL4rNICoFHEWv3UvB3qXSBn5xl5xdapQQOV0fcIBekqsyd9XobcHcsW7e 0uLpOG7rMd0X1XzGvAMRX+ZDAYe1xF/x4IxZdLgjHGuF0N4cuJEUT4XRvwoffjQvLKCB ccjXpGguhmX7M+IA31VlFbnq7lE6264IPSh6nDoXm+xmefoDujdxDq7mL1an4ZX5Ae37 l/8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678788478; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=Dqro9MRlt7HTedIbhxI6kjebC+kOuWy5YK70uMIjQvs=; b=XW0IgqJ19YzEIkRTGss3uqfk3YmIzdJZiHdUMU2UL0CQARaXZY9Etls5b0D3xbQ3FR wIvnGzPtM9Hi1YZ9DFC4BtOyNC4oZXuCp4/h3su4PcEqgf/VIupYr3ymXHueSvOrExUm swQfnw+FrCNktPxEOTRodXJ927QlOhKYObU2i43/CSDmmv6MfnrT+i2spGnKzUDGYHah Iyr9xIjyFxsP8BN3PDiv9k/FxeSpIehPUyahxrx7LH0PuNKpmmavH7YC9mdazNN4LdAl XVROXPBjPSSceSp/h60ZNrFNJ5WHa/Y1AB47pxjd2NG3z2WZU/KdqVrQ82wQRKz98wTS cgIg== X-Gm-Message-State: AO0yUKWgzhFvWzlgDcVTjiMMygxuHkCBwmounVKlng90Rga/oUJ7Ivtg 3cHMnKcuGhzUOw5ybHuWM2k1PqG5ZSSKgATBJ9E= X-Google-Smtp-Source: AK7set87u4lkIeXqL0p/4QWmshEpBqXqnQT1dRMv9f0HFVbgpbCpJXWKvqBxwAOnIxFz46Z3kOyw0KS/zDxf0MlFkto= X-Received: by 2002:a17:90a:130c:b0:23d:2b47:e6c8 with SMTP id h12-20020a17090a130c00b0023d2b47e6c8mr1312200pja.0.1678788477739; Tue, 14 Mar 2023 03:07:57 -0700 (PDT) MIME-Version: 1.0 References: <20221221101846.7zsi7lscnm5ediik@alvherre.pgsql> <1350682.1671635927@sss.pgh.pa.us> <4191508.1674157166@sss.pgh.pa.us> <349124.1674185509@sss.pgh.pa.us> <20230207180855.xy5m4puwh5gzd7xy@awork3.anarazel.de> In-Reply-To: From: Amit Langote Date: Tue, 14 Mar 2023 19:07:41 +0900 Message-ID: Subject: Re: generic plans and "initial" pruning To: Andres Freund Cc: Alvaro Herrera , David Rowley , Jacob Champion , PostgreSQL-development , Robert Haas , Tom Lane Content-Type: multipart/mixed; boundary="000000000000df08af05f6d96603" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000df08af05f6d96603 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Mar 2, 2023 at 10:52=E2=80=AFPM Amit Langote wrote: > I think I have figured out what might be going wrong on that cfbot > animal after building with the same CPPFLAGS as that animal locally. > I had forgotten to update _out/_readRangeTblEntry() to account for the > patch's change that a view's RTE_SUBQUERY now also preserves relkind > in addition to relid and rellockmode for the locking consideration. > > Also, I noticed that a multi-query Portal execution with rules was > failing (thanks to a regression test added in a7d71c41db) because of > the snapshot used for the 2nd query onward not being updated for > command ID change under patched model of multi-query Portal execution. > To wit, under the patched model, all queries in the multi-query Portal > case undergo ExecutorStart() before any of it is run with > ExecutorRun(). The patch hadn't changed things however to update the > snapshot's command ID for the 2nd query onwards, which caused the > aforementioned test case to fail. > > This new model does however mean that the 2nd query onwards must use > PushCopiedSnapshot() given the current requirement of > UpdateActiveSnapshotCommandId() that the snapshot passed to it must > not be referenced anywhere else. The new model basically requires > that each query's QueryDesc points to its own copy of the > ActiveSnapshot. That may not be a thing in favor of the patched model > though. For now, I haven't been able to come up with a better > alternative. Here's a new version addressing the following 2 points. * Like views, I realized that non-leaf relations of partition trees scanned by an Append/MergeAppend would need to be locked separately, because ExecInitNode() traversal of the plan tree would not account for them. That is, they are not opened using ExecGetRangeTableRelation() or ExecOpenScanRelation(). One exception is that some (if not all) of those non-leaf relations may be referenced in PartitionPruneInfo and so locked as part of initializing the corresponding PartitionPruneState, but I decided not to complicate the code to filter out such relations from the set locked separately. To carry the set of relations to lock, the refactoring patch 0001 re-introduces the List of Bitmapset field named allpartrelids into Append/MergeAppend nodes, which we had previously removed on the grounds that those relations need not be locked separately (commits f2343653f5b, f003a7522bf). * I decided to initialize QueryDesc.planstate even in the cases where ExecInitNode() traversal is aborted in the middle on detecting CachedPlan invalidation such that it points to a partially initialized PlanState tree. My earlier thinking that each PlanState node need not be visited for resource cleanup in such cases was naive after all. To that end, I've fixed the ExecEndNode() subroutines of all Plan node types to account for potentially uninitialized fields. There are a couple of cases where I'm a bit doubtful though. In ExecEndCustomScan(), there's no indication in CustomScanState whether it's OK to call EndCustomScan() when BeginCustomScan() may not have been called. For ForeignScanState, I've assumed that ForeignScanState.fdw_state being set can be used as a marker that BeginForeignScan would have been called, though maybe that's not a solid assumption. I'm also attaching a new (small) patch 0003 that eliminates the loop-over-rangetable in ExecCloseRangeTableRelations() in favor of iterating over a new List field of EState named es_opened_relations, which is populated by ExecGetRangeTableRelation() with only the relations that were opened. This speeds up ExecCloseRangeTableRelations() significantly for the cases with many runtime-prunable partitions. --=20 Thanks, Amit Langote EDB: http://www.enterprisedb.com --000000000000df08af05f6d96603 Content-Type: application/octet-stream; name="v35-0003-Track-opened-range-table-relations-in-a-List-in-.patch" Content-Disposition: attachment; filename="v35-0003-Track-opened-range-table-relations-in-a-List-in-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lf8377rc0 RnJvbSBmZjAxZTE4YTg4OWY0ZTdlY2IxMWQ1ODQ4ODY3NjM5NTk3MzY1NmIwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogTW9uLCAxMyBNYXIgMjAyMyAxNTo1OTozOCArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjM1IDMv M10gVHJhY2sgb3BlbmVkIHJhbmdlIHRhYmxlIHJlbGF0aW9ucyBpbiBhIExpc3QgaW4KIEVTdGF0 ZQoKVGhpcyBtYWtlcyBFeGVjQ2xvc2VSYW5nZVRhYmxlUmVsYXRpb25zIGZhc3RlciB3aGVuIHRo ZXJlIGFyZSBtYW55CnJlbGF0aW9ucyBpbiB0aGUgcmFuZ2UgdGFibGUgYnV0IG9ubHkgYSBmZXcg YXJlIG9wZW5lZCBkdXJpbmcKZXhlY3V0aW9uLCBzdWNoIGFzIHdoZW4gcnVuLXRpbWUgcHJ1bmlu ZyBraWNrcyBpbiBvbiBhbiBBcHBlbmQKY29udGFpbmluZyAxMDAwcyBvZiBwYXJ0aXRpb24gc3Vi cGxhbnMuCi0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgfCA5ICsrKysrLS0t LQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMgfCAyICsrCiBzcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaCAgICB8IDIgKysKIDMgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25z KCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IGZjMGQyY2E0 ODEuLjM4MDczOWUzYTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWlu LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAtMTYzMCwxMiArMTYz MCwxMyBAQCBFeGVjQ2xvc2VSZXN1bHRSZWxhdGlvbnMoRVN0YXRlICplc3RhdGUpCiB2b2lkCiBF eGVjQ2xvc2VSYW5nZVRhYmxlUmVsYXRpb25zKEVTdGF0ZSAqZXN0YXRlKQogewotCWludAkJCWk7 CisJTGlzdENlbGwgKmxjOwogCi0JZm9yIChpID0gMDsgaSA8IGVzdGF0ZS0+ZXNfcmFuZ2VfdGFi bGVfc2l6ZTsgaSsrKQorCWZvcmVhY2gobGMsIGVzdGF0ZS0+ZXNfb3BlbmVkX3JlbGF0aW9ucykK IAl7Ci0JCWlmIChlc3RhdGUtPmVzX3JlbGF0aW9uc1tpXSkKLQkJCXRhYmxlX2Nsb3NlKGVzdGF0 ZS0+ZXNfcmVsYXRpb25zW2ldLCBOb0xvY2spOworCQlSZWxhdGlvbiByZWwgPSBsZmlyc3QobGMp OworCisJCXRhYmxlX2Nsb3NlKHJlbCwgTm9Mb2NrKTsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1V0aWxzLmMKaW5kZXggYTQ4NWU3ZGZjNS4uZjcwNTMwNzJkOSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1V0aWxzLmMKQEAgLTgyOSw2ICs4MjksOCBAQCBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKEVT dGF0ZSAqZXN0YXRlLCBJbmRleCBydGkpCiAJCX0KIAogCQllc3RhdGUtPmVzX3JlbGF0aW9uc1ty dGkgLSAxXSA9IHJlbDsKKwkJZXN0YXRlLT5lc19vcGVuZWRfcmVsYXRpb25zID0gbGFwcGVuZChl c3RhdGUtPmVzX29wZW5lZF9yZWxhdGlvbnMsCisJCQkJCQkJCQkJCSAgcmVsKTsKIAl9CiAKIAly ZXR1cm4gcmVsOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9z cmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCBjNmIzODg1YmY2Li4yMTRhNWY1ZWE0 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5j bHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtNjE3LDYgKzYxNyw4IEBAIHR5cGVkZWYgc3RydWN0 IEVTdGF0ZQogCUluZGV4CQllc19yYW5nZV90YWJsZV9zaXplOwkvKiBzaXplIG9mIHRoZSByYW5n ZSB0YWJsZSBhcnJheXMgKi8KIAlSZWxhdGlvbiAgICplc19yZWxhdGlvbnM7CS8qIEFycmF5IG9m IHBlci1yYW5nZS10YWJsZS1lbnRyeSBSZWxhdGlvbgogCQkJCQkJCQkgKiBwb2ludGVycywgb3Ig TlVMTCBpZiBub3QgeWV0IG9wZW5lZCAqLworCUxpc3QJICAgKmVzX29wZW5lZF9yZWxhdGlvbnM7 IC8qIExpc3Qgb2Ygbm9uLU5VTEwgZW50cmllcyBpbgorCQkJCQkJCQkJICAqIGVzX3JlbGF0aW9u cyBpbiBubyBzcGVjaWZpYyBvcmRlciAqLwogCXN0cnVjdCBFeGVjUm93TWFyayAqKmVzX3Jvd21h cmtzOwkvKiBBcnJheSBvZiBwZXItcmFuZ2UtdGFibGUtZW50cnkKIAkJCQkJCQkJCQkgKiBFeGVj Um93TWFya3MsIG9yIE5VTEwgaWYgbm9uZSAqLwogCUxpc3QJICAgKmVzX3J0ZXBlcm1pbmZvczsJ LyogTGlzdCBvZiBSVEVQZXJtaXNzaW9uSW5mbyAqLwotLSAKMi4zNS4zCgo= --000000000000df08af05f6d96603 Content-Type: application/octet-stream; name="v35-0002-Move-AcquireExecutorLocks-s-responsibility-into-.patch" Content-Disposition: attachment; filename="v35-0002-Move-AcquireExecutorLocks-s-responsibility-into-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lf8377rp1 RnJvbSA0ODQ2NWVkNzJmYzQwYWMzZjI2YzI3NzAzMjY3NTEzMjk1YjI4OGY2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogRnJpLCAyMCBKYW4gMjAyMyAxNjo1MjozMSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjM1IDIv M10gTW92ZSBBY3F1aXJlRXhlY3V0b3JMb2NrcygpJ3MgcmVzcG9uc2liaWxpdHkgaW50byB0aGUK IGV4ZWN1dG9yCgpUaGlzIGNvbW1pdCBpbnRyb2R1Y2VzIGEgbmV3IGV4ZWN1dG9yIGZsYWcgRVhF Q19GTEFHX0dFVF9MT0NLUyB0aGF0CnNob3VsZCBiZSBwYXNzZWQgaW4gZWZsYWdzIHRvIEV4ZWN1 dG9yU3RhcnQoKSBpZiB0aGUgUGxhbm5lZFN0bXQKY29tZXMgZnJvbSBhIENhY2hlZFBsYW4uICBX aGVuIHNldCwgdGhlIGV4ZWN1dG9yIHdpbGwgdGFrZSBsb2NrcwpvbiBhbnkgcmVsYXRpb25zIHJl ZmVyZW5jZWQgaW4gdGhlIHBsYW4gbm9kZXMgdGhhdCBuZWVkIHRvIGJlCmluaXRpYWxpemVkIGZv ciBleGVjdXRpb24uICBUaGF0IGV4Y2x1ZGVzIGFueSBwYXJ0aXRpb25zIHRoYXQgY2FuCmJlIHBy dW5lZCBkdXJpbmcgdGhlIGV4ZWN1dG9yIGluaXRpYWxpemF0aW9uIHBoYXNlLCB0aGF0IGlzLCBi YXNlZApvbiB0aGUgdmFsdWVzIG9mIG9ubHkgdGhlIGV4dGVybmFsIChQQVJBTV9FWFRFUk4pIHBh cmFtZXRlcnMuClJlbGF0aW9ucyB0aGF0IGFyZSBub3QgZXhwbGljaXRseSBtZW50aW9uZWQgaW4g dGhlIHBsYW4gdHJlZSwgc3VjaAphcyB2aWV3cyBhbmQgbm9uLWxlYWYgcGFydGl0aW9uIHBhcmVu dHMgd2hvc2UgY2hpbGRyZW4gYXJlIG1lbnRpb25lZAppbiBBcHBlbmQvTWVyZ2VBcHBlbmQgbm9k ZXMsIGFyZSBsb2NrZWQgc2VwYXJhdGVseS4gIEFmdGVyIHRha2luZyBlYWNoCmxvY2ssIHRoZSBl eGVjdXRvciBjYWxscyBDYWNoZWRQbGFuU3RpbGxWYWxpZCgpIHRvIGNoZWNrIGlmCkNhY2hlZFBs YW4uaXNfdmFsaWQgaGFzIGJlZW4gcmVzZXQgYnkgUGxhbkNhY2hlUmVsQ2FsbGJhY2soKSBkdWUg dG8KY29uY3VycmVudCBtb2RpZmljYXRpb24gb2YgcmVsYXRpb25zIHJlZmVyZW5jZWQgaW4gdGhl IHBsYW4uICBJZiBpdAppcyBmb3VuZCB0aGF0IHRoZSBDYWNoZWRQbGFuIGlzIGluZGVlZCBpbnZh bGlkLCB0aGUgcmVjdXJzaXZlCkV4ZWNJbml0Tm9kZSgpIHRyYXZlcnNhbCBpcyBhYm9ydGVkIGF0 IHRoYXQgcG9pbnQuICBUbyBhbGxvdyB0aGUKcHJvcGVyIGNsZWFudXAgb2Ygc3VjaCBhIHBhcnRp YWxseSBpbml0aWFsaXplZCBwbGFuc3RhdGUgdHJlZSwKRXhlY0VuZE5vZGUoKSBzdWJyb3V0aW5l cyBvZiB2YXJpb3VzIHBsYW4gbm9kZXMgaGF2ZSBiZWVuIGZpeGVkIHRvCmFjY291bnQgZm9yIHBv dGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgZmllbGRzLiAgSXQgaXMgdGhlIGNhbGxlcidzCihvZiBF eGVjdXRvclN0YXJ0KCkpIHJlc3BvbnNpYmlsaXR5IHRvIGNhbGwgRXhlY3V0b3JFbmQoKSBldmVu IG9uCmEgUXVlcnlEZXNjIGNvbnRhaW5pbmcgc3VjaCBhIHBhcnRpYWxseSBpbml0aWFsaXplZCBQ bGFuU3RhdGUgdHJlZS4KCkNhbGwgc2l0ZXMgdGhhdCB1c2UgcGxhbmNhY2hlIChHZXRDYWNoZWRQ bGFuKSB0byBnZXQgdGhlIHBsYW4gdHJlZXMKdG8gcGFzcyB0byB0aGUgZXhlY3V0b3IgZm9yIGV4 ZWN1dGlvbiBzaG91bGQgbm93IGJlIHByZXBhcmVkIHRvCmhhbmRsZSB0aGUgY2FzZSB0aGF0IHRo ZSBwbGFuIHRyZWUgbWF5IGJlIGZsYWdnZWQgYnkgdGhlIGV4ZWN1dG9yIGFzCnN0YWxlIGFzIGRl c2NyaWJlZCBhYm92ZS4gIFRvIHRoYXQgZW5kLCB0aGlzIGNvbW1pdCByZWZhY3RvcnMgdGhlCnJl bGV2YW50IGNvZGUgc2l0ZXMgdG8gbW92ZSB0aGUgRXhlY3V0b3JTdGFydCgpIGNhbGwgIGNsb3Nl ciB0byB0aGUKR2V0Q2FjaGVkUGxhbigpIGNhbGwgdG8gcmVkdWNlIHRoZSBmcmljdGlvbiBpbiB0 aGUgY2FzZXMgd2hlcmUKcmVwbGFubmluZyBpcyBuZWVkZWQgZHVlIHRvIGEgQ2FjaGVkUGxhbiBi ZWluZyBtYXJrZWQgc3RhbGUgaW4gdGhpcwptYW5uZXIuICBDYWxsZXJzIG11c3QgY2hlY2sgdGhh dCBRdWVyeURlc2MucGxhbl92YWxpZCBpcyB0cnVlIGJlZm9yZQpwYXNzaW5nIGl0IG9uIHRvIEV4 ZWN1dG9yUnVuKCkgZm9yIGV4ZWN1dGlvbi4KClBvcnRhbFN0YXJ0KCkgbm93IHBlcmZvcm1zIENy ZWF0ZVF1ZXJ5RGVzYygpIGFuZCBFeGVjdXRvclN0YXJ0KCkgZm9yCmFsbCBwb3J0YWwgc3RyYXRl Z2llcywgaW5jbHVkaW5nIHRob3NlIHBlcnRhaW5pbmcgdG8gbXVsdGlwbGUgcXVlcmllcy4KVGhl IFF1ZXJ5RGVzY3MgZm9yIHN0cmF0ZWdpZXMgaGFuZGxlZCBieSBQb3J0YWxSdW5NdWx0aSgpIGFy ZQpyZW1lbWJlcmVkIGluIHRoZSBQb3J0YWwgaW4gYSBuZXcgTGlzdCBmaWVsZCAncWRlc2NzJywg YWxsb2NhdGVkIGluIGEKbmV3IG1lbW9yeSBjb250ZXh0ICdxdWVyeUNvbnRleHQnLiAgVGhpcyBu ZXcgYXJyYW5nbWVudCBpcyB0byBtYWtlIGl0CmVhc2llciB0byBkaXNjYXJkIGFuZCByZWNyZWF0 ZSBhIFBvcnRhbCBpZiB0aGUgQ2FjaGVkUGxhbiBnb2VzIHN0YWxlCmR1cmluZyBzZXR1cC4KLS0t CiBjb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYyAgICAgICAgICAgfCAgIDQgKwog c3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgICAgICAgICAgICAgICAgIHwgICA0ICstCiBz cmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyAgICAgICAgICAgICAgICB8IDE0NiArKysrKy0t LQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMgICAgICAgICAgICAgIHwgICAyICsK IHNyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYyAgICAgICAgICAgICAgICB8ICAgMyArLQog c3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5jICAgICAgICAgICAgIHwgIDE2ICstCiBz cmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgICAgICAgICAgICAgICAgfCAgMzIgKy0KIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgICAgICAgICB8ICA4OSArKysrLQog c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgICAgICAgICAgIHwgICA4ICstCiBz cmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgICAgICAgICAgfCAgIDQgKwogc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMgICAgICAgICAgIHwgICA5ICsKIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jICAgICAgICAgICAgICB8ICA2MCArKystCiBzcmMv YmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYyAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jICAgICAgICAgICAgICAgIHwgIDIzICstCiBzcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgICAgICAgICAgICAgfCAgMjMgKy0KIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBBbmQuYyAgICAgICAgICB8ICAxMCArLQogc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMgICAgIHwgIDEwICstCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQml0bWFwSW5kZXhzY2FuLmMgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMgICAgICAgICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlQ3Rlc2Nhbi5jICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVDdXN0b20uYyAgICAgICAgICAgICB8ICAxMiArLQogc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUZvcmVpZ25zY2FuLmMgICAgICAgIHwgIDIyICstCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlRnVuY3Rpb25zY2FuLmMgICAgICAgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVHYXRoZXIuYyAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlR2F0aGVyTWVyZ2UuYyAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUdyb3VwLmMgICAgICAgICAgICAgIHwgICA1ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9u b2RlSGFzaC5jICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUhhc2hqb2luLmMgICAgICAgICAgIHwgIDEzICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl SW5jcmVtZW50YWxTb3J0LmMgICAgfCAgMTQgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJ bmRleG9ubHlzY2FuLmMgICAgICB8ICAgNyArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUlu ZGV4c2Nhbi5jICAgICAgICAgIHwgICA3ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGlt aXQuYyAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tS b3dzLmMgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNYXRlcmlh bC5jICAgICAgICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUu YyAgICAgICAgICAgIHwgIDEyICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBl bmQuYyAgICAgICAgfCAgMjMgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4u YyAgICAgICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxl LmMgICAgICAgIHwgIDEzICstCiAuLi4vZXhlY3V0b3Ivbm9kZU5hbWVkdHVwbGVzdG9yZXNjYW4u YyAgICAgICAgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVOZXN0bG9vcC5jICAg ICAgICAgICB8ICAgNyArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVByb2plY3RTZXQuYyAg ICAgICAgIHwgICA1ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24u YyAgICAgfCAgIDQgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jICAgICAgICAg ICAgIHwgICA1ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2FtcGxlc2Nhbi5jICAgICAg ICAgfCAgIDUgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgICAgICAgICAg ICB8ICAgNSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNldE9wLmMgICAgICAgICAgICAg IHwgICA1ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU29ydC5jICAgICAgICAgICAgICAg fCAgIDggKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4uYyAgICAgICB8 ICAgNSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRhYmxlRnVuY3NjYW4uYyAgICAgIHwg ICAzICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2FuLmMgICAgICAgfCAg IDUgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRzY2FuLmMgICAgICAgICAgICB8ICAg NSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jICAgICAgICAgICAgIHwgICA1 ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVmFsdWVzc2Nhbi5jICAgICAgICAgfCAgIDMg Ky0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyAgICAgICAgICB8ICA1NSAr KystCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV29ya3RhYmxlc2Nhbi5jICAgICAgfCAgIDMg Ky0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jICAgICAgICAgICAgICAgICAgICB8ICA1MyAr Ky0KIHNyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMgICAgICAgICAgICAgICAgICB8ICAgMSAr CiBzcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYyAgICAgICAgICAgICAgICAgfCAgIDEgKwog c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgICAgICAgIHwgICAxICsKIHNy Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYyAgICAgICAgICB8ICAgNSArCiBzcmMv YmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMgICAgICAgICAgfCAgIDcgKy0KIHNyYy9i YWNrZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMgICAgICAgICAgICAgICB8ICA0NSArKysKIHNyYy9i YWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyAgICAgICAgICAgICAgICAgICB8ICAxMyArLQogc3JjL2Jh Y2tlbmQvdGNvcC9wcXVlcnkuYyAgICAgICAgICAgICAgICAgICAgIHwgMzExICsrKysrKysrKyst LS0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMgICAgICAgICAgIHwg IDIxICsrCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYyAgICAgICAgICAgfCAx MzQgKystLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMgICAgICAgICAg ICB8ICAgNiArCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmggICAgICAgICAgICAgICAg fCAgIDcgKy0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmggICAgICAgICAgICAgICB8 ICAgNSArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oICAgICAgICAgICAgICAgfCAg MTIgKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgICAgIHwgICAy ICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oICAgICAgICAgICAgICAgICB8ICAgMyAr CiBzcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgIDMgKwog c3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdyLmggICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNy Yy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMv aW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaCAgICAgICAgICAgICAgICAgfCAgMTQgKwogc3JjL2lu Y2x1ZGUvdXRpbHMvcG9ydGFsLmggICAgICAgICAgICAgICAgICAgIHwgICA0ICsKIHNyYy90ZXN0 L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL01ha2VmaWxlICAgICB8ICAgMyArLQogLi4uL21vZHVs ZXMvZGVsYXlfZXhlY3V0aW9uL2RlbGF5X2V4ZWN1dGlvbi5jIHwgIDYzICsrKy0KIC4uLi9leHBl Y3RlZC9jYWNoZWQtcGxhbi1yZXBsYW4ub3V0ICAgICAgICAgICB8IDExNyArKysrKysrCiAuLi4v c3BlY3MvY2FjaGVkLXBsYW4tcmVwbGFuLnNwZWMgICAgICAgICAgICAgfCAgNTAgKysrCiA4MiBm aWxlcyBjaGFuZ2VkLCAxMjEzIGluc2VydGlvbnMoKyksIDQyMiBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9leHBlY3RlZC9j YWNoZWQtcGxhbi1yZXBsYW4ub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxl cy9kZWxheV9leGVjdXRpb24vc3BlY3MvY2FjaGVkLXBsYW4tcmVwbGFuLnNwZWMKCmRpZmYgLS1n aXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYyBiL2NvbnRyaWIvcG9zdGdy ZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCmluZGV4IGY1OTI2YWI4OWQuLjkzZjNmOGI1ZDEgMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCisrKyBiL2NvbnRyaWIv cG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCkBAIC0yNjU5LDcgKzI2NTksMTEgQEAgcG9zdGdy ZXNCZWdpbkRpcmVjdE1vZGlmeShGb3JlaWduU2NhblN0YXRlICpub2RlLCBpbnQgZWZsYWdzKQog CS8qIEdldCBpbmZvIGFib3V0IGZvcmVpZ24gdGFibGUuICovCiAJcnRpbmRleCA9IG5vZGUtPnJl c3VsdFJlbEluZm8tPnJpX1JhbmdlVGFibGVJbmRleDsKIAlpZiAoZnNwbGFuLT5zY2FuLnNjYW5y ZWxpZCA9PSAwKQorCXsKIAkJZG1zdGF0ZS0+cmVsID0gRXhlY09wZW5TY2FuUmVsYXRpb24oZXN0 YXRlLCBydGluZGV4LCBlZmxhZ3MpOworCQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUp KQorCQkJcmV0dXJuOworCX0KIAllbHNlCiAJCWRtc3RhdGUtPnJlbCA9IG5vZGUtPnNzLnNzX2N1 cnJlbnRSZWxhdGlvbjsKIAl0YWJsZSA9IEdldEZvcmVpZ25UYWJsZShSZWxhdGlvbkdldFJlbGlk KGRtc3RhdGUtPnJlbCkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRv LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwppbmRleCBiZWVhMWFjNjg3Li5lOWY3 N2Q1NzExIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYworKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwpAQCAtNTU4LDcgKzU1OCw4IEBAIEJlZ2luQ29w eVRvKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJKChEUl9jb3B5ICopIGRlc3QpLT5jc3RhdGUgPSBj c3RhdGU7CiAKIAkJLyogQ3JlYXRlIGEgUXVlcnlEZXNjIHJlcXVlc3Rpbmcgbm8gb3V0cHV0ICov Ci0JCWNzdGF0ZS0+cXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIHBzdGF0ZS0+cF9z b3VyY2V0ZXh0LAorCQljc3RhdGUtPnF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBO VUxMLAorCQkJCQkJCQkJCQlwc3RhdGUtPnBfc291cmNldGV4dCwKIAkJCQkJCQkJCQkJR2V0QWN0 aXZlU25hcHNob3QoKSwKIAkJCQkJCQkJCQkJSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQkJCQlk ZXN0LCBOVUxMLCBOVUxMLCAwKTsKQEAgLTU2OSw2ICs1NzAsNyBAQCBCZWdpbkNvcHlUbyhQYXJz ZVN0YXRlICpwc3RhdGUsCiAJCSAqIEV4ZWN1dG9yU3RhcnQgY29tcHV0ZXMgYSByZXN1bHQgdHVw ZGVzYyBmb3IgdXMKIAkJICovCiAJCUV4ZWN1dG9yU3RhcnQoY3N0YXRlLT5xdWVyeURlc2MsIDAp OworCQlBc3NlcnQoY3N0YXRlLT5xdWVyeURlc2MtPnBsYW5fdmFsaWQpOwogCiAJCXR1cERlc2Mg PSBjc3RhdGUtPnF1ZXJ5RGVzYy0+dHVwRGVzYzsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9jcmVhdGVhcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYwpp bmRleCBkNmM2ZDUxNGYzLi5hNTViODUxNTc0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21t YW5kcy9jcmVhdGVhcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKQEAg LTMyNSw3ICszMjUsNyBAQCBFeGVjQ3JlYXRlVGFibGVBcyhQYXJzZVN0YXRlICpwc3RhdGUsIENy ZWF0ZVRhYmxlQXNTdG10ICpzdG10LAogCQlVcGRhdGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJZCgp OwogCiAJCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYywgcmVkaXJlY3Rpbmcgb3V0cHV0IHRvIG91ciB0 dXBsZSByZWNlaXZlciAqLwotCQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgcHN0 YXRlLT5wX3NvdXJjZXRleHQsCisJCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBO VUxMLCBwc3RhdGUtPnBfc291cmNldGV4dCwKIAkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCks IEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJCWRlc3QsIHBhcmFtcywgcXVlcnlFbnYsIDApOwog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXggZTU3YmRhN2I2Mi4uYWNhZTViNDU1YiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2V4cGxhaW4uYwpAQCAtMzg0LDYgKzM4NCw3IEBAIEV4cGxhaW5PbmVRdWVyeShRdWVy eSAqcXVlcnksIGludCBjdXJzb3JPcHRpb25zLAogCWVsc2UKIAl7CiAJCVBsYW5uZWRTdG10ICpw bGFuOworCQlRdWVyeURlc2MgICAqcXVlcnlEZXNjOwogCQlpbnN0cl90aW1lCXBsYW5zdGFydCwK IAkJCQkJcGxhbmR1cmF0aW9uOwogCQlCdWZmZXJVc2FnZSBidWZ1c2FnZV9zdGFydCwKQEAgLTQw NiwxMiArNDA3LDkzIEBAIEV4cGxhaW5PbmVRdWVyeShRdWVyeSAqcXVlcnksIGludCBjdXJzb3JP cHRpb25zLAogCQkJQnVmZmVyVXNhZ2VBY2N1bURpZmYoJmJ1ZnVzYWdlLCAmcGdCdWZmZXJVc2Fn ZSwgJmJ1ZnVzYWdlX3N0YXJ0KTsKIAkJfQogCisJCXF1ZXJ5RGVzYyA9IEV4cGxhaW5RdWVyeURl c2MocGxhbiwgTlVMTCwgcXVlcnlTdHJpbmcsIGludG8sIGVzLAorCQkJCQkJCQkJIHBhcmFtcywg cXVlcnlFbnYpOworCQlBc3NlcnQocXVlcnlEZXNjKTsKKwogCQkvKiBydW4gaXQgKGlmIG5lZWRl ZCkgYW5kIHByb2R1Y2Ugb3V0cHV0ICovCi0JCUV4cGxhaW5PbmVQbGFuKHBsYW4sIGludG8sIGVz LCBxdWVyeVN0cmluZywgcGFyYW1zLCBxdWVyeUVudiwKKwkJRXhwbGFpbk9uZVBsYW4ocXVlcnlE ZXNjLCBpbnRvLCBlcywgcXVlcnlTdHJpbmcsIHBhcmFtcywgcXVlcnlFbnYsCiAJCQkJCSAgICZw bGFuZHVyYXRpb24sIChlcy0+YnVmZmVycyA/ICZidWZ1c2FnZSA6IE5VTEwpKTsKIAl9CiB9CiAK Ky8qCisgKiBFeHBsYWluUXVlcnlEZXNjCisgKgkJU2V0IHVwIFF1ZXJ5RGVzYyBmb3IgRVhQTEFJ TmluZyBhIGdpdmVuIHBsYW4KKyAqCisgKiBUaGlzIHJldHVybnMgTlVMTCBpZiBjcGxhbiBpcyBm b3VuZCB0byBoYXZlIGJlZW4gaW52YWxpZGF0ZWQgc2luY2UgaXRzCisgKiBjcmVhdGlvbi4KKyAq LworUXVlcnlEZXNjICoKK0V4cGxhaW5RdWVyeURlc2MoUGxhbm5lZFN0bXQgKnN0bXQsIENhY2hl ZFBsYW4gKmNwbGFuLAorCQkJCSBjb25zdCBjaGFyICpxdWVyeVN0cmluZywgSW50b0NsYXVzZSAq aW50bywgRXhwbGFpblN0YXRlICplcywKKwkJCQkgUGFyYW1MaXN0SW5mbyBwYXJhbXMsIFF1ZXJ5 RW52aXJvbm1lbnQgKnF1ZXJ5RW52KQoreworCVF1ZXJ5RGVzYyAgKnF1ZXJ5RGVzYzsKKwlEZXN0 UmVjZWl2ZXIgKmRlc3Q7CisJaW50CQkJZWZsYWdzOworCWludAkJCWluc3RydW1lbnRfb3B0aW9u ID0gMDsKKworCS8qCisJICogTm9ybWFsbHkgd2UgZGlzY2FyZCB0aGUgcXVlcnkncyBvdXRwdXQs IGJ1dCBpZiBleHBsYWluaW5nIENSRUFURSBUQUJMRQorCSAqIEFTLCB3ZSdkIGJldHRlciB1c2Ug dGhlIGFwcHJvcHJpYXRlIHR1cGxlIHJlY2VpdmVyLgorCSAqLworCWlmIChpbnRvKQorCQlkZXN0 ID0gQ3JlYXRlSW50b1JlbERlc3RSZWNlaXZlcihpbnRvKTsKKwllbHNlCisJCWRlc3QgPSBOb25l X1JlY2VpdmVyOworCisJaWYgKGVzLT5hbmFseXplICYmIGVzLT50aW1pbmcpCisJCWluc3RydW1l bnRfb3B0aW9uIHw9IElOU1RSVU1FTlRfVElNRVI7CisJZWxzZSBpZiAoZXMtPmFuYWx5emUpCisJ CWluc3RydW1lbnRfb3B0aW9uIHw9IElOU1RSVU1FTlRfUk9XUzsKKworCWlmIChlcy0+YnVmZmVy cykKKwkJaW5zdHJ1bWVudF9vcHRpb24gfD0gSU5TVFJVTUVOVF9CVUZGRVJTOworCWlmIChlcy0+ d2FsKQorCQlpbnN0cnVtZW50X29wdGlvbiB8PSBJTlNUUlVNRU5UX1dBTDsKKworCS8qCisJICog VXNlIGEgc25hcHNob3Qgd2l0aCBhbiB1cGRhdGVkIGNvbW1hbmQgSUQgdG8gZW5zdXJlIHRoaXMg cXVlcnkgc2VlcworCSAqIHJlc3VsdHMgb2YgYW55IHByZXZpb3VzbHkgZXhlY3V0ZWQgcXVlcmll cy4KKwkgKi8KKwlQdXNoQ29waWVkU25hcHNob3QoR2V0QWN0aXZlU25hcHNob3QoKSk7CisJVXBk YXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQoKTsKKworCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYyBm b3IgdGhlIHF1ZXJ5ICovCisJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHN0bXQsIGNwbGFu LCBxdWVyeVN0cmluZywKKwkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBz aG90LAorCQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCBpbnN0cnVtZW50X29wdGlvbik7 CisKKwkvKiBTZWxlY3QgZXhlY3V0aW9uIG9wdGlvbnMgKi8KKwlpZiAoZXMtPmFuYWx5emUpCisJ CWVmbGFncyA9IDA7CQkJCS8qIGRlZmF1bHQgcnVuLXRvLWNvbXBsZXRpb24gZmxhZ3MgKi8KKwll bHNlCisJCWVmbGFncyA9IEVYRUNfRkxBR19FWFBMQUlOX09OTFk7CisJaWYgKGludG8pCisJCWVm bGFncyB8PSBHZXRJbnRvUmVsRUZsYWdzKGludG8pOworCisJLyogVGFrZSBsb2NrcyBpZiB1c2lu ZyBhIENhY2hlZFBsYW4gKi8KKwlpZiAocXVlcnlEZXNjLT5jcGxhbikKKwkJZWZsYWdzIHw9IEVY RUNfRkxBR19HRVRfTE9DS1M7CisKKwkvKgorCSAqIENhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVw YXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24uICBBIGNhY2hlZCBwbGFuCisJICogbWF5IGdldCBp bnZhbGlkYXRlZCBhcyB3ZSdyZSBkb2luZyB0aGF0LgorCSAqLworCUV4ZWN1dG9yU3RhcnQocXVl cnlEZXNjLCBlZmxhZ3MpOworCWlmICghcXVlcnlEZXNjLT5wbGFuX3ZhbGlkKQorCXsKKwkJLyog Q2xlYW4gdXAuICovCisJCUV4ZWN1dG9yRW5kKHF1ZXJ5RGVzYyk7CisJCUZyZWVRdWVyeURlc2Mo cXVlcnlEZXNjKTsKKwkJUG9wQWN0aXZlU25hcHNob3QoKTsKKwkJcmV0dXJuIE5VTEw7CisJfQor CisJcmV0dXJuIHF1ZXJ5RGVzYzsKK30KKwogLyoKICAqIEV4cGxhaW5PbmVVdGlsaXR5IC0KICAq CSAgcHJpbnQgb3V0IHRoZSBleGVjdXRpb24gcGxhbiBmb3Igb25lIHV0aWxpdHkgc3RhdGVtZW50 CkBAIC01MTUsMjkgKzU5NywxNiBAQCBFeHBsYWluT25lVXRpbGl0eShOb2RlICp1dGlsaXR5U3Rt dCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKICAqIHRvIGNhbGwgaXQuCiAg Ki8KIHZvaWQKLUV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0Ns YXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKK0V4cGxhaW5PbmVQbGFuKFF1ZXJ5RGVzYyAq cXVlcnlEZXNjLAorCQkJICAgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAkJ CSAgIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCSAg IFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LCBjb25zdCBpbnN0cl90aW1lICpwbGFuZHVyYXRp b24sCiAJCQkgICBjb25zdCBCdWZmZXJVc2FnZSAqYnVmdXNhZ2UpCiB7Ci0JRGVzdFJlY2VpdmVy ICpkZXN0OwotCVF1ZXJ5RGVzYyAgKnF1ZXJ5RGVzYzsKIAlpbnN0cl90aW1lCXN0YXJ0dGltZTsK IAlkb3VibGUJCXRvdGFsdGltZSA9IDA7Ci0JaW50CQkJZWZsYWdzOwotCWludAkJCWluc3RydW1l bnRfb3B0aW9uID0gMDsKIAotCUFzc2VydChwbGFubmVkc3RtdC0+Y29tbWFuZFR5cGUgIT0gQ01E X1VUSUxJVFkpOwotCi0JaWYgKGVzLT5hbmFseXplICYmIGVzLT50aW1pbmcpCi0JCWluc3RydW1l bnRfb3B0aW9uIHw9IElOU1RSVU1FTlRfVElNRVI7Ci0JZWxzZSBpZiAoZXMtPmFuYWx5emUpCi0J CWluc3RydW1lbnRfb3B0aW9uIHw9IElOU1RSVU1FTlRfUk9XUzsKLQotCWlmIChlcy0+YnVmZmVy cykKLQkJaW5zdHJ1bWVudF9vcHRpb24gfD0gSU5TVFJVTUVOVF9CVUZGRVJTOwotCWlmIChlcy0+ d2FsKQotCQlpbnN0cnVtZW50X29wdGlvbiB8PSBJTlNUUlVNRU5UX1dBTDsKKwlBc3NlcnQocXVl cnlEZXNjLT5wbGFubmVkc3RtdC0+Y29tbWFuZFR5cGUgIT0gQ01EX1VUSUxJVFkpOwogCiAJLyoK IAkgKiBXZSBhbHdheXMgY29sbGVjdCB0aW1pbmcgZm9yIHRoZSBlbnRpcmUgc3RhdGVtZW50LCBl dmVuIHdoZW4gbm9kZS1sZXZlbApAQCAtNTQ2LDM4ICs2MTUsNiBAQCBFeHBsYWluT25lUGxhbihQ bGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAq ZXMsCiAJICovCiAJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChzdGFydHRpbWUpOwogCi0JLyoKLQkg KiBVc2UgYSBzbmFwc2hvdCB3aXRoIGFuIHVwZGF0ZWQgY29tbWFuZCBJRCB0byBlbnN1cmUgdGhp cyBxdWVyeSBzZWVzCi0JICogcmVzdWx0cyBvZiBhbnkgcHJldmlvdXNseSBleGVjdXRlZCBxdWVy aWVzLgotCSAqLwotCVB1c2hDb3BpZWRTbmFwc2hvdChHZXRBY3RpdmVTbmFwc2hvdCgpKTsKLQlV cGRhdGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJZCgpOwotCi0JLyoKLQkgKiBOb3JtYWxseSB3ZSBk aXNjYXJkIHRoZSBxdWVyeSdzIG91dHB1dCwgYnV0IGlmIGV4cGxhaW5pbmcgQ1JFQVRFIFRBQkxF Ci0JICogQVMsIHdlJ2QgYmV0dGVyIHVzZSB0aGUgYXBwcm9wcmlhdGUgdHVwbGUgcmVjZWl2ZXIu Ci0JICovCi0JaWYgKGludG8pCi0JCWRlc3QgPSBDcmVhdGVJbnRvUmVsRGVzdFJlY2VpdmVyKGlu dG8pOwotCWVsc2UKLQkJZGVzdCA9IE5vbmVfUmVjZWl2ZXI7Ci0KLQkvKiBDcmVhdGUgYSBRdWVy eURlc2MgZm9yIHRoZSBxdWVyeSAqLwotCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFu bmVkc3RtdCwgcXVlcnlTdHJpbmcsCi0JCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFs aWRTbmFwc2hvdCwKLQkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgaW5zdHJ1bWVudF9v cHRpb24pOwotCi0JLyogU2VsZWN0IGV4ZWN1dGlvbiBvcHRpb25zICovCi0JaWYgKGVzLT5hbmFs eXplKQotCQllZmxhZ3MgPSAwOwkJCQkvKiBkZWZhdWx0IHJ1bi10by1jb21wbGV0aW9uIGZsYWdz ICovCi0JZWxzZQotCQllZmxhZ3MgPSBFWEVDX0ZMQUdfRVhQTEFJTl9PTkxZOwotCWlmIChpbnRv KQotCQllZmxhZ3MgfD0gR2V0SW50b1JlbEVGbGFncyhpbnRvKTsKLQotCS8qIGNhbGwgRXhlY3V0 b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24gKi8KLQlFeGVjdXRvclN0 YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKLQogCS8qIEV4ZWN1dGUgdGhlIHBsYW4gZm9yIHN0YXRp c3RpY3MgaWYgYXNrZWQgZm9yICovCiAJaWYgKGVzLT5hbmFseXplKQogCXsKQEAgLTQ4NTEsNiAr NDg4OCwxNyBAQCBFeHBsYWluRHVtbXlHcm91cChjb25zdCBjaGFyICpvYmp0eXBlLCBjb25zdCBj aGFyICpsYWJlbG5hbWUsIEV4cGxhaW5TdGF0ZSAqZXMpCiAJfQogfQogCisvKgorICogRGlzY2Fy ZCBvdXRwdXQgYnVmZmVyIGZvciBhIGZyZXNoIHJlc3RhcnQuCisgKi8KK3ZvaWQKK0V4cGxhaW5S ZXNldE91dHB1dChFeHBsYWluU3RhdGUgKmVzKQoreworCUFzc2VydChlcy0+c3RyKTsKKwlyZXNl dFN0cmluZ0luZm8oZXMtPnN0cik7CisJRXhwbGFpbkJlZ2luT3V0cHV0KGVzKTsKK30KKwogLyoK ICAqIEVtaXQgdGhlIHN0YXJ0LW9mLW91dHB1dCBib2lsZXJwbGF0ZS4KICAqCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2V4dGVuc2lvbi5jCmluZGV4IDAyZmY0YTlhN2YuLjJkMmVmOThiNTQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2V4dGVuc2lvbi5jCkBAIC03ODAsMTEgKzc4MCwxMyBAQCBleGVjdXRlX3NxbF9zdHJpbmcoY29u c3QgY2hhciAqc3FsKQogCQkJCVF1ZXJ5RGVzYyAgKnFkZXNjOwogCiAJCQkJcWRlc2MgPSBDcmVh dGVRdWVyeURlc2Moc3RtdCwKKwkJCQkJCQkJCQlOVUxMLAogCQkJCQkJCQkJCXNxbCwKIAkJCQkJ CQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBOVUxMLAogCQkJCQkJCQkJCWRlc3QsIE5VTEwsIE5V TEwsIDApOwogCiAJCQkJRXhlY3V0b3JTdGFydChxZGVzYywgMCk7CisJCQkJQXNzZXJ0KHFkZXNj LT5wbGFuX3ZhbGlkKTsKIAkJCQlFeGVjdXRvclJ1bihxZGVzYywgRm9yd2FyZFNjYW5EaXJlY3Rp b24sIDAsIHRydWUpOwogCQkJCUV4ZWN1dG9yRmluaXNoKHFkZXNjKTsKIAkJCQlFeGVjdXRvckVu ZChxZGVzYyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKaW5kZXggZmIzMGQyNTk1Yy4uOWFkYWY2YzUy NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYwpAQCAtNDA5LDEyICs0MDksMTMgQEAgcmVmcmVzaF9t YXR2aWV3X2RhdGFmaWxsKERlc3RSZWNlaXZlciAqZGVzdCwgUXVlcnkgKnF1ZXJ5LAogCVVwZGF0 ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElkKCk7CiAKIAkvKiBDcmVhdGUgYSBRdWVyeURlc2MsIHJl ZGlyZWN0aW5nIG91dHB1dCB0byBvdXIgdHVwbGUgcmVjZWl2ZXIgKi8KLQlxdWVyeURlc2MgPSBD cmVhdGVRdWVyeURlc2MocGxhbiwgcXVlcnlTdHJpbmcsCisJcXVlcnlEZXNjID0gQ3JlYXRlUXVl cnlEZXNjKHBsYW4sIE5VTEwsIHF1ZXJ5U3RyaW5nLAogCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hv dCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJCWRlc3QsIE5VTEwsIE5VTEwsIDApOwogCiAJ LyogY2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbiAq LwogCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCAwKTsKKwlBc3NlcnQocXVlcnlEZXNjLT5wbGFu X3ZhbGlkKTsKIAogCS8qIHJ1biB0aGUgcGxhbiAqLwogCUV4ZWN1dG9yUnVuKHF1ZXJ5RGVzYywg Rm9yd2FyZFNjYW5EaXJlY3Rpb24sIDBMLCB0cnVlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3BvcnRhbGNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMu YwppbmRleCA4YTNjZjk4Y2NlLi4zYzM0YWI0MzUxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy9wb3J0YWxjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21k cy5jCkBAIC0xNDYsNiArMTQ2LDcgQEAgUGVyZm9ybUN1cnNvck9wZW4oUGFyc2VTdGF0ZSAqcHN0 YXRlLCBEZWNsYXJlQ3Vyc29yU3RtdCAqY3N0bXQsIFBhcmFtTGlzdEluZm8gcGEKIAlQb3J0YWxT dGFydChwb3J0YWwsIHBhcmFtcywgMCwgR2V0QWN0aXZlU25hcHNob3QoKSk7CiAKIAlBc3NlcnQo cG9ydGFsLT5zdHJhdGVneSA9PSBQT1JUQUxfT05FX1NFTEVDVCk7CisJQXNzZXJ0KHBvcnRhbC0+ cGxhbl92YWxpZCk7CiAKIAkvKgogCSAqIFdlJ3JlIGRvbmU7IHRoZSBxdWVyeSB3b24ndCBhY3R1 YWxseSBiZSBydW4gdW50aWwgUGVyZm9ybVBvcnRhbEZldGNoIGlzCkBAIC0yNDksNiArMjUwLDE3 IEBAIFBlcmZvcm1Qb3J0YWxDbG9zZShjb25zdCBjaGFyICpuYW1lKQogCVBvcnRhbERyb3AocG9y dGFsLCBmYWxzZSk7CiB9CiAKKy8qCisgKiBSZWxlYXNlIGEgcG9ydGFsJ3MgUXVlcnlEZXNjLgor ICovCit2b2lkCitQb3J0YWxRdWVyeUZpbmlzaChRdWVyeURlc2MgKnF1ZXJ5RGVzYykKK3sKKwlF eGVjdXRvckZpbmlzaChxdWVyeURlc2MpOworCUV4ZWN1dG9yRW5kKHF1ZXJ5RGVzYyk7CisJRnJl ZVF1ZXJ5RGVzYyhxdWVyeURlc2MpOworfQorCiAvKgogICogUG9ydGFsQ2xlYW51cAogICoKQEAg LTI5NSw5ICszMDcsNyBAQCBQb3J0YWxDbGVhbnVwKFBvcnRhbCBwb3J0YWwpCiAJCQlpZiAocG9y dGFsLT5yZXNvd25lcikKIAkJCQlDdXJyZW50UmVzb3VyY2VPd25lciA9IHBvcnRhbC0+cmVzb3du ZXI7CiAKLQkJCUV4ZWN1dG9yRmluaXNoKHF1ZXJ5RGVzYyk7Ci0JCQlFeGVjdXRvckVuZChxdWVy eURlc2MpOwotCQkJRnJlZVF1ZXJ5RGVzYyhxdWVyeURlc2MpOworCQkJUG9ydGFsUXVlcnlGaW5p c2gocXVlcnlEZXNjKTsKIAogCQkJQ3VycmVudFJlc291cmNlT3duZXIgPSBzYXZlUmVzb3VyY2VP d25lcjsKIAkJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCmluZGV4IDE4ZjcwMzE5ZmMuLmM5MDcwZWQ5 N2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKQEAgLTE4Myw2ICsxODMsNyBAQCBFeGVjdXRlUXVl cnkoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQlwYXJhbUxJID0gRXZhbHVhdGVQYXJhbXMocHN0YXRl LCBlbnRyeSwgc3RtdC0+cGFyYW1zLCBlc3RhdGUpOwogCX0KIAorcmVwbGFuOgogCS8qIENyZWF0 ZSBhIG5ldyBwb3J0YWwgdG8gcnVuIHRoZSBxdWVyeSBpbiAqLwogCXBvcnRhbCA9IENyZWF0ZU5l d1BvcnRhbCgpOwogCS8qIERvbid0IGRpc3BsYXkgdGhlIHBvcnRhbCBpbiBwZ19jdXJzb3JzLCBp dCBpcyBmb3IgaW50ZXJuYWwgdXNlIG9ubHkgKi8KQEAgLTI1MSwxMCArMjUyLDE5IEBAIEV4ZWN1 dGVRdWVyeShQYXJzZVN0YXRlICpwc3RhdGUsCiAJfQogCiAJLyoKLQkgKiBSdW4gdGhlIHBvcnRh bCBhcyBhcHByb3ByaWF0ZS4KKwkgKiBSdW4gdGhlIHBvcnRhbCBhcyBhcHByb3ByaWF0ZS4gIElm IHRoZSBwb3J0YWwgY29udGFpbnMgYSBjYWNoZWQgcGxhbiwgaXQKKwkgKiBtdXN0IGJlIHJlY3Jl YXRlZCBpZiBwb3J0YWwtPnBsYW5fdmFsaWQgaXMgZmFsc2Ugd2hpY2ggdGVsbHMgdGhhdCB0aGUK KwkgKiBjYWNoZWQgcGxhbiB3YXMgZm91bmQgdG8gaGF2ZSBiZWVuIGludmFsaWRhdGVkIHdoZW4g aW5pdGlhbGl6aW5nIG9uZSBvZgorCSAqIHRoZSBwbGFuIHRyZWVzIGNvbnRhaW5lZCBpbiBpdC4K IAkgKi8KIAlQb3J0YWxTdGFydChwb3J0YWwsIHBhcmFtTEksIGVmbGFncywgR2V0QWN0aXZlU25h cHNob3QoKSk7CiAKKwlpZiAoIXBvcnRhbC0+cGxhbl92YWxpZCkKKwl7CisJCVBvcnRhbERyb3Ao cG9ydGFsLCBmYWxzZSk7CisJCWdvdG8gcmVwbGFuOworCX0KKwogCSh2b2lkKSBQb3J0YWxSdW4o cG9ydGFsLCBjb3VudCwgZmFsc2UsIHRydWUsIGRlc3QsIGRlc3QsIHFjKTsKIAogCVBvcnRhbERy b3AocG9ydGFsLCBmYWxzZSk7CkBAIC01NzQsNyArNTg0LDcgQEAgRXhwbGFpbkV4ZWN1dGVRdWVy eShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAq ZXMsCiB7CiAJUHJlcGFyZWRTdGF0ZW1lbnQgKmVudHJ5OwogCWNvbnN0IGNoYXIgKnF1ZXJ5X3N0 cmluZzsKLQlDYWNoZWRQbGFuICpjcGxhbjsKKwlDYWNoZWRQbGFuICpjcGxhbiA9IE5VTEw7CiAJ TGlzdAkgICAqcGxhbl9saXN0OwogCUxpc3RDZWxsICAgKnA7CiAJUGFyYW1MaXN0SW5mbyBwYXJh bUxJID0gTlVMTDsKQEAgLTYxOCw2ICs2MjgsNyBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1 dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAl9 CiAKIAkvKiBSZXBsYW4gaWYgbmVlZGVkLCBhbmQgYWNxdWlyZSBhIHRyYW5zaWVudCByZWZjb3Vu dCAqLworcmVwbGFuOgogCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihlbnRyeS0+cGxhbnNvdXJjZSwg cGFyYW1MSSwKIAkJCQkJCSAgQ3VycmVudFJlc291cmNlT3duZXIsIHF1ZXJ5RW52KTsKIApAQCAt NjM5LDggKzY1MCwyMSBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10ICpleGVjc3Rt dCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAkJUGxhbm5lZFN0bXQgKnBz dG10ID0gbGZpcnN0X25vZGUoUGxhbm5lZFN0bXQsIHApOwogCiAJCWlmIChwc3RtdC0+Y29tbWFu ZFR5cGUgIT0gQ01EX1VUSUxJVFkpCi0JCQlFeHBsYWluT25lUGxhbihwc3RtdCwgaW50bywgZXMs IHF1ZXJ5X3N0cmluZywgcGFyYW1MSSwgcXVlcnlFbnYsCi0JCQkJCQkgICAmcGxhbmR1cmF0aW9u LCAoZXMtPmJ1ZmZlcnMgPyAmYnVmdXNhZ2UgOiBOVUxMKSk7CisJCXsKKwkJCVF1ZXJ5RGVzYyAq cXVlcnlEZXNjOworCisJCQlxdWVyeURlc2MgPSBFeHBsYWluUXVlcnlEZXNjKHBzdG10LCBjcGxh biwgcXVlcnlTdHJpbmcsCisJCQkJCQkJCQkJIGludG8sIGVzLCBwYXJhbUxJLCBxdWVyeUVudik7 CisJCQlpZiAocXVlcnlEZXNjID09IE5VTEwpCisJCQl7CisJCQkJRXhwbGFpblJlc2V0T3V0cHV0 KGVzKTsKKwkJCQlSZWxlYXNlQ2FjaGVkUGxhbihjcGxhbiwgQ3VycmVudFJlc291cmNlT3duZXIp OworCQkJCWdvdG8gcmVwbGFuOworCQkJfQorCQkJRXhwbGFpbk9uZVBsYW4ocXVlcnlEZXNjLCBp bnRvLCBlcywgcXVlcnlfc3RyaW5nLCBwYXJhbUxJLAorCQkJCQkJICAgcXVlcnlFbnYsICZwbGFu ZHVyYXRpb24sCisJCQkJCQkgICAoZXMtPmJ1ZmZlcnMgPyAmYnVmdXNhZ2UgOiBOVUxMKSk7CisJ CX0KIAkJZWxzZQogCQkJRXhwbGFpbk9uZVV0aWxpdHkocHN0bXQtPnV0aWxpdHlTdG10LCBpbnRv LCBlcywgcXVlcnlfc3RyaW5nLAogCQkJCQkJCSAgcGFyYW1MSSwgcXVlcnlFbnYpOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNNYWluLmMKaW5kZXggYjMyZjQxOTE3Ni4uZmMwZDJjYTQ4MSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjTWFpbi5jCkBAIC0xMjYsMTEgKzEyNiwzMiBAQCBzdGF0aWMgdm9pZCBFdmFsUGxhblF1 YWxTdGFydChFUFFTdGF0ZSAqZXBxc3RhdGUsIFBsYW4gKnBsYW5UcmVlKTsKICAqIGdldCBjb250 cm9sIHdoZW4gRXhlY3V0b3JTdGFydCBpcyBjYWxsZWQuICBTdWNoIGEgcGx1Z2luIHdvdWxkCiAg KiBub3JtYWxseSBjYWxsIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoKS4KICAqCisgKiBOb3JtYWxs eSwgdGhlIHBsYW4gdHJlZSBnaXZlbiBpbiBxdWVyeURlc2MtPnBsYW5uZWRzdG10IGlzIGtub3du IHRvIGJlCisgKiB2YWxpZCBpbiB0aGF0ICphbGwqIHJlbGF0aW9ucyBjb250YWluZWQgaW4gcGxh bm5lZHN0bXQtPnJlbGF0aW9uT2lkcyBoYXZlCisgKiBhbHJlYWR5IGJlZW4gbG9ja2VkLiAgVGhh dCBtYXkgbm90IGJlIHRoZSBjYXNlIGhvd2V2ZXIgaWYgdGhlIHBsYW5uZWRzdG10CisgKiBjb21l cyBmcm9tIGEgQ2FjaGVkUGxhbiwgb25lIGdpdmVuIGluIHF1ZXJ5RGVzYy0+Y3BsYW4sIGluIHdo aWNoIGNhc2Ugb25seQorICogc29tZSBvZiB0aGUgcmVsYXRpb25zIHJlZmVyZW5jZWQgaW4gdGhl IHBsYW4gd291bGQgaGF2ZSBiZWVuIGxvY2tlZDsgdG8KKyAqIHdpdCwgdGhvc2UgdGhhdCBBY3F1 aXJlUGxhbm5lckxvY2tzKCkgZGVlbXMgbmVjZXNzYXJ5LiAgTG9ja3MgbmVjZXNzYXJ5CisgKiB0 byBmdWxseSB2YWxpZGF0ZSBzdWNoIGEgcGxhbiB0cmVlLCBpbmNsdWRpbmcgcmVsYXRpb25zIHRo YXQgYXJlIGFkZGVkIGJ5CisgKiB0aGUgcGxhbm5lciwgd2lsbCB0YWtlbiB3aGVuIGluaXRpYWxp emluZyB0aGUgcGxhbiB0cmVlIGluIEluaXRQbGFuKCk7IHRoZQorICogdGhlIGNhbGxlciBtdXN0 IGhhdmUgc2V0IHRoZSBFWEVDX0ZMQUdfR0VUX0xPQ0tTIGJpdCBpbiBlZmxhZ3MuICBJZiB0aGUK KyAqIENhY2hlZFBsYW4gZ2V0cyBpbnZhbGlkYXRlZCBhcyB0aGVzZSBsb2NrcyBhcmUgdGFrZW4s IHBsYW4gdHJlZQorICogaW5pdGlhbGl6YXRpb24gaXMgc3VzcGVuZGVkIGF0IHRoZSBwb2ludCB3 aGVuIHRoZSBpbnZhbGlkYXRpb24gaXMgZmlyc3QKKyAqIGRldGVjdGVkIGFuZCBJbml0UGxhbigp IHJldHVybnMgYWZ0ZXIgc2V0dGluZyBxdWVyeURlc2MtPnBsYW5fdmFsaWQgdG8KKyAqIGZhbHNl LiAgcXVlcnlEZXNjLT5wbGFuc3RhdGUgd291bGQgYmUgcG9pbnRpbmcgdG8gYSBwb3RlbnRpYWxs eSBwYXJ0aWFsbHkKKyAqIGluaXRpYWxpemVkIFBsYW5TdGF0ZSB0cmVlIGluIHRoYXQgY2FzZS4g IENhbGxlcnMgbXVzdCByZXRyeSB0aGUgZXhlY3V0aW9uCisgKiB3aXRoIGEgZnJlc2hseSBjcmVh dGVkIENhY2hlZFBsYW4gaW4gdGhhdCBjYXNlLCBhZnRlciBwcm9wZXJseSBmcmVlaW5nIHRoZQor ICogcGFydGlhbGx5IHZhbGlkIFF1ZXJ5RGVzYy4KICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogdm9pZAogRXhl Y3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIHsKKwkvKiBUYWtl IGxvY2tzIGlmIHRoZSBwbGFuIHRyZWUgY29tZXMgZnJvbSBhIENhY2hlZFBsYW4uICovCisJQXNz ZXJ0KHF1ZXJ5RGVzYy0+Y3BsYW4gPT0gTlVMTCB8fAorCQkgICAoQ2FjaGVkUGxhblN0aWxsVmFs aWQocXVlcnlEZXNjLT5jcGxhbikgJiYKKwkJCShlZmxhZ3MgJiBFWEVDX0ZMQUdfR0VUX0xPQ0tT KSAhPSAwKSk7CisKIAkvKgogCSAqIEluIHNvbWUgY2FzZXMgKGUuZy4gYW4gRVhFQ1VURSBzdGF0 ZW1lbnQpIGEgcXVlcnkgZXhlY3V0aW9uIHdpbGwgc2tpcAogCSAqIHBhcnNlIGFuYWx5c2lzLCB3 aGljaCBtZWFucyB0aGF0IHRoZSBxdWVyeV9pZCB3b24ndCBiZSByZXBvcnRlZC4gIE5vdGUKQEAg LTU4Miw2ICs2MDMsMTYgQEAgRXhlY0NoZWNrUGVybWlzc2lvbnMoTGlzdCAqcmFuZ2VUYWJsZSwg TGlzdCAqcnRlcGVybWluZm9zLAogCQlSVEVQZXJtaXNzaW9uSW5mbyAqcGVybWluZm8gPSBsZmly c3Rfbm9kZShSVEVQZXJtaXNzaW9uSW5mbywgbCk7CiAKIAkJQXNzZXJ0KE9pZElzVmFsaWQocGVy bWluZm8tPnJlbGlkKSk7CisKKwkJLyoKKwkJICogUmVsYXRpb25zIHdob3NlIHBlcm1pc3Npb25z IG5lZWQgdG8gYmUgY2hlY2tlZCBtdXN0IGFscmVhZHkgaGF2ZQorCQkgKiBiZWVuIGxvY2tlZCBi eSB0aGUgcGFyc2VyIG9yIGJ5IEFjcXVpcmVQbGFubmVyTG9ja3MoKSBpZiBhCisJCSAqIGNhY2hl ZCBwbGFuIGlzIGJlaW5nIGV4ZWN1dGVkLgorCQkgKiBYWFggc2hvdWxkbid0IHdlIHNraXAgY2Fs bGluZyBFeGVjQ2hlY2tQZXJtaXNzaW9ucyBmcm9tIEluaXRQbGFuCisJCSAqIGluIGEgcGFyYWxs ZWwgd29ya2VyPworCQkgKi8KKwkJQXNzZXJ0KENoZWNrUmVsTG9ja2VkQnlNZShwZXJtaW5mby0+ cmVsaWQsIEFjY2Vzc1NoYXJlTG9jaywgdHJ1ZSkgfHwKKwkJCSAgIElzUGFyYWxsZWxXb3JrZXIo KSk7CiAJCXJlc3VsdCA9IEV4ZWNDaGVja09uZVJlbFBlcm1zKHBlcm1pbmZvKTsKIAkJaWYgKCFy ZXN1bHQpCiAJCXsKQEAgLTc4NSwxMiArODE2LDE5IEBAIEV4ZWNDaGVja1hhY3RSZWFkT25seShQ bGFubmVkU3RtdCAqcGxhbm5lZHN0bXQpCiAJCVByZXZlbnRDb21tYW5kSWZQYXJhbGxlbE1vZGUo Q3JlYXRlQ29tbWFuZE5hbWUoKE5vZGUgKikgcGxhbm5lZHN0bXQpKTsKIH0KIAotCiAvKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiAgKgkJSW5pdFBsYW4KICAqCiAgKgkJSW5pdGlhbGl6ZXMgdGhlIHF1ZXJ5IHBsYW46IG9w ZW4gZmlsZXMsIGFsbG9jYXRlIHN0b3JhZ2UKICAqCQlhbmQgc3RhcnQgdXAgdGhlIHJ1bGUgbWFu YWdlcgorICoKKyAqCQlJZiBxdWVyeURlc2MgY29udGFpbnMgYSBDYWNoZWRQbGFuLCB0aGlzIHRh a2VzIGxvY2tzIG9uIHJlbGF0aW9ucy4KKyAqCQlJZiBhbnkgb2YgdGhvc2UgcmVsYXRpb25zIGhh dmUgdW5kZXJnb25lIGNvbmN1cnJlbnQgc2NoZW1hIGNoYW5nZXMKKyAqCQliZXR3ZWVuIHN1Y2Nl c3NmdWxseSBwZXJmb3JtaW5nIFJldmFsaWRhdGVDYWNoZWRRdWVyeSgpIG9uIHRoZQorICoJCWNv bnRhaW5pbmcgQ2FjaGVkUGxhblNvdXJjZSBhbmQgaGVyZSwgbG9ja2luZyB0aG9zZSByZWxhdGlv bnMgd291bGQKKyAqCQlpbnZhbGlkYXRlIHRoZSBDYWNoZWRQbGFuIGJ5IHdheSBvZiBQbGFuQ2Fj aGVSZWxDYWxsYmFjaygpLiAgSW4gdGhhdAorICoJCWNhc2UsIHF1ZXJ5RGVzYy0+cGxhbl92YWxp ZCB3b3VsZCBiZSBzZXQgdG8gZmFsc2UgdG8gdGVsbCB0aGUgY2FsbGVyCisgKgkJdG8gcmV0cnkg YWZ0ZXIgY3JlYXRpbmcgYSBuZXcgQ2FjaGVkUGxhbi4KICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogc3RhdGlj IHZvaWQKQEAgLTgwMSwyMCArODM5LDMyIEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNj LCBpbnQgZWZsYWdzKQogCVBsYW4JICAgKnBsYW4gPSBwbGFubmVkc3RtdC0+cGxhblRyZWU7CiAJ TGlzdAkgICAqcmFuZ2VUYWJsZSA9IHBsYW5uZWRzdG10LT5ydGFibGU7CiAJRVN0YXRlCSAgICpl c3RhdGUgPSBxdWVyeURlc2MtPmVzdGF0ZTsKLQlQbGFuU3RhdGUgICpwbGFuc3RhdGU7CisJUGxh blN0YXRlICAqcGxhbnN0YXRlID0gTlVMTDsKIAlUdXBsZURlc2MJdHVwVHlwZTsKIAlMaXN0Q2Vs bCAgICpsOwogCWludAkJCWk7CiAKIAkvKgotCSAqIERvIHBlcm1pc3Npb25zIGNoZWNrcworCSAq IFNldCB1cCByYW5nZSB0YWJsZSBpbiBFU3RhdGUuCiAJICovCi0JRXhlY0NoZWNrUGVybWlzc2lv bnMocmFuZ2VUYWJsZSwgcGxhbm5lZHN0bXQtPnBlcm1JbmZvcywgdHJ1ZSk7CisJRXhlY0luaXRS YW5nZVRhYmxlKGVzdGF0ZSwgcmFuZ2VUYWJsZSwgcGxhbm5lZHN0bXQtPnBlcm1JbmZvcyk7CisK KwkvKiBNYWtlIHN1cmUgRXhlY1BsYW5TdGlsbFZhbGlkKCkgY2FuIHdvcmsuICovCisJZXN0YXRl LT5lc19jYWNoZWRwbGFuID0gcXVlcnlEZXNjLT5jcGxhbjsKIAogCS8qCi0JICogaW5pdGlhbGl6 ZSB0aGUgbm9kZSdzIGV4ZWN1dGlvbiBzdGF0ZQorCSAqIExvY2sgYW55IHZpZXdzIHRoYXQgd2Vy ZSBtZW50aW9uZWQgaW4gdGhlIHF1ZXJ5IGlmIG5lZWRlZC4gIFZpZXcKKwkgKiByZWxhdGlvbnMg bXVzdCBiZSBsb2NrZWQgc2VwYXJhdGVseSBsaWtlIHRoaXMsIGJlY2F1c2UgdGhleSBhcmUgbm90 CisJICogcmVmZXJlbmNlZCBpbiB0aGUgcGxhbiB0cmVlLgogCSAqLwotCUV4ZWNJbml0UmFuZ2VU YWJsZShlc3RhdGUsIHJhbmdlVGFibGUsIHBsYW5uZWRzdG10LT5wZXJtSW5mb3MpOworCUV4ZWNM b2NrVmlld1JlbGF0aW9ucyhwbGFubmVkc3RtdC0+dmlld1JlbGF0aW9ucywgZXN0YXRlKTsKKwlp ZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlnb3RvIGZhaWxlZDsKKworCS8qCisJ ICogRG8gcGVybWlzc2lvbnMgY2hlY2tzCisJICovCisJRXhlY0NoZWNrUGVybWlzc2lvbnMocmFu Z2VUYWJsZSwgcGxhbm5lZHN0bXQtPnBlcm1JbmZvcywgdHJ1ZSk7CiAKIAllc3RhdGUtPmVzX3Bs YW5uZWRzdG10ID0gcGxhbm5lZHN0bXQ7CiAJZXN0YXRlLT5lc19wYXJ0X3BydW5lX2luZm9zID0g cGxhbm5lZHN0bXQtPnBhcnRQcnVuZUluZm9zOwpAQCAtODQ5LDYgKzg5OSw4IEBAIEluaXRQbGFu KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCQkJCWNhc2UgUk9XX01BUktfS0VZ U0hBUkU6CiAJCQkJY2FzZSBST1dfTUFSS19SRUZFUkVOQ0U6CiAJCQkJCXJlbGF0aW9uID0gRXhl Y0dldFJhbmdlVGFibGVSZWxhdGlvbihlc3RhdGUsIHJjLT5ydGkpOworCQkJCQlpZiAoIUV4ZWNQ bGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJCQkJZ290byBmYWlsZWQ7CiAJCQkJCWJyZWFrOwog CQkJCWNhc2UgUk9XX01BUktfQ09QWToKIAkJCQkJLyogbm8gcGh5c2ljYWwgdGFibGUgYWNjZXNz IGlzIHJlcXVpcmVkICovCkBAIC05MTksNiArOTcxLDggQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpx dWVyeURlc2MsIGludCBlZmxhZ3MpCiAKIAkJZXN0YXRlLT5lc19zdWJwbGFuc3RhdGVzID0gbGFw cGVuZChlc3RhdGUtPmVzX3N1YnBsYW5zdGF0ZXMsCiAJCQkJCQkJCQkJICAgc3VicGxhbnN0YXRl KTsKKwkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCWdvdG8gZmFpbGVkOwog CiAJCWkrKzsKIAl9CkBAIC05MjksNiArOTgzLDggQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVy eURlc2MsIGludCBlZmxhZ3MpCiAJICogcHJvY2Vzc2luZyB0dXBsZXMuCiAJICovCiAJcGxhbnN0 YXRlID0gRXhlY0luaXROb2RlKHBsYW4sIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFu U3RpbGxWYWxpZChlc3RhdGUpKQorCQlnb3RvIGZhaWxlZDsKIAogCS8qCiAJICogR2V0IHRoZSB0 dXBsZSBkZXNjcmlwdG9yIGRlc2NyaWJpbmcgdGhlIHR5cGUgb2YgdHVwbGVzIHRvIHJldHVybi4K QEAgLTk3Miw2ICsxMDI4LDE3IEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQg ZWZsYWdzKQogCiAJcXVlcnlEZXNjLT50dXBEZXNjID0gdHVwVHlwZTsKIAlxdWVyeURlc2MtPnBs YW5zdGF0ZSA9IHBsYW5zdGF0ZTsKKwlxdWVyeURlc2MtPnBsYW5fdmFsaWQgPSB0cnVlOworCXJl dHVybjsKKworZmFpbGVkOgorCS8qCisJICogUGxhbiBpbml0aWFsaXphdGlvbiBmYWlsZWQuICBN YXJrIFF1ZXJ5RGVzYyBhcyBzdWNoLiAgTm90ZSB0aGF0IHdlIGRvCisJICogc2V0IHBsYW5zdGF0 ZSwgZXZlbiBpZiBpdCBtYXkgb25seSBiZSBwYXJ0aWFsbHkgaW5pdGlhbGl6ZWQsIHNvIHRoYXQK KwkgKiBFeGVjRW5kUGxhbigpIGNhbiBwcm9jZXNzIGl0LgorCSAqLworCXF1ZXJ5RGVzYy0+cGxh bnN0YXRlID0gcGxhbnN0YXRlOworCXF1ZXJ5RGVzYy0+cGxhbl92YWxpZCA9IGZhbHNlOwogfQog CiAvKgpAQCAtMTM4OSw3ICsxNDU2LDcgQEAgRXhlY0dldEFuY2VzdG9yUmVzdWx0UmVscyhFU3Rh dGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbykKIAogCQkJLyoKIAkJCSAq IEFsbCBhbmNlc3RvcnMgdXAgdG8gdGhlIHJvb3QgdGFyZ2V0IHJlbGF0aW9uIG11c3QgaGF2ZSBi ZWVuCi0JCQkgKiBsb2NrZWQgYnkgdGhlIHBsYW5uZXIgb3IgQWNxdWlyZUV4ZWN1dG9yTG9ja3Mo KS4KKwkJCSAqIGxvY2tlZC4KIAkJCSAqLwogCQkJYW5jUmVsID0gdGFibGVfb3BlbihhbmNPaWQs IE5vTG9jayk7CiAJCQlySW5mbyA9IG1ha2VOb2RlKFJlc3VsdFJlbEluZm8pOwpAQCAtMjc5Nyw3 ICsyODY0LDggQEAgRXZhbFBsYW5RdWFsU3RhcnQoRVBRU3RhdGUgKmVwcXN0YXRlLCBQbGFuICpw bGFuVHJlZSkKIAkgKiBDaGlsZCBFUFEgRVN0YXRlcyBzaGFyZSB0aGUgcGFyZW50J3MgY29weSBv ZiB1bmNoYW5naW5nIHN0YXRlIHN1Y2ggYXMKIAkgKiB0aGUgc25hcHNob3QsIHJhbmdldGFibGUs IGFuZCBleHRlcm5hbCBQYXJhbSBpbmZvLiAgVGhleSBuZWVkIHRoZWlyIG93bgogCSAqIGNvcGll cyBvZiBsb2NhbCBzdGF0ZSwgaW5jbHVkaW5nIGEgdHVwbGUgdGFibGUsIGVzX3BhcmFtX2V4ZWNf dmFscywKLQkgKiByZXN1bHQtcmVsIGluZm8sIGV0Yy4KKwkgKiByZXN1bHQtcmVsIGluZm8sIGV0 Yy4gIEFsc28sIHdlIGRvbid0IHBhc3MgdGhlIHBhcmVudCd0IGNvcHkgb2YgdGhlCisJICogQ2Fj aGVkUGxhbiwgYmVjYXVzZSBubyBuZXcgbG9ja3Mgd2lsbCBiZSB0YWtlbiBmb3IgRXZhbFBsYW5R dWFsKCkuCiAJICovCiAJcmNlc3RhdGUtPmVzX2RpcmVjdGlvbiA9IEZvcndhcmRTY2FuRGlyZWN0 aW9uOwogCXJjZXN0YXRlLT5lc19zbmFwc2hvdCA9IHBhcmVudGVzdGF0ZS0+ZXNfc25hcHNob3Q7 CkBAIC0yODg0LDYgKzI5NTIsNyBAQCBFdmFsUGxhblF1YWxTdGFydChFUFFTdGF0ZSAqZXBxc3Rh dGUsIFBsYW4gKnBsYW5UcmVlKQogCQlQbGFuU3RhdGUgICpzdWJwbGFuc3RhdGU7CiAKIAkJc3Vi cGxhbnN0YXRlID0gRXhlY0luaXROb2RlKHN1YnBsYW4sIHJjZXN0YXRlLCAwKTsKKwkJQXNzZXJ0 KEV4ZWNQbGFuU3RpbGxWYWxpZChyY2VzdGF0ZSkpOwogCQlyY2VzdGF0ZS0+ZXNfc3VicGxhbnN0 YXRlcyA9IGxhcHBlbmQocmNlc3RhdGUtPmVzX3N1YnBsYW5zdGF0ZXMsCiAJCQkJCQkJCQkJCSBz dWJwbGFuc3RhdGUpOwogCX0KQEAgLTI5MzcsNiArMzAwNiwxMCBAQCBFdmFsUGxhblF1YWxFbmQo RVBRU3RhdGUgKmVwcXN0YXRlKQogCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKIAlMaXN0Q2Vs bCAgICpsOwogCisJLyogTm90aGluZyB0byBkbyBpZiBFdmFsUGxhblF1YWxJbml0KCkgd2Fzbid0 IGRvbmUgdG8gYmVnaW4gd2l0aC4gKi8KKwlpZiAoZXBxc3RhdGUtPnBhcmVudGVzdGF0ZSA9PSBO VUxMKQorCQlyZXR1cm47CisKIAlydHNpemUgPSBlcHFzdGF0ZS0+cGFyZW50ZXN0YXRlLT5lc19y YW5nZV90YWJsZV9zaXplOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNQYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKaW5k ZXggYWEzZjI4MzQ1My4uZGY0Y2M1ZGRhZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY1BhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVs LmMKQEAgLTEyNDksOCArMTI0OSwxMyBAQCBFeGVjUGFyYWxsZWxHZXRRdWVyeURlc2Moc2htX3Rv YyAqdG9jLCBEZXN0UmVjZWl2ZXIgKnJlY2VpdmVyLAogCXBhcmFtc3BhY2UgPSBzaG1fdG9jX2xv b2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9QQVJBTUxJU1RJTkZPLCBmYWxzZSk7CiAJcGFyYW1MSSA9 IFJlc3RvcmVQYXJhbUxpc3QoJnBhcmFtc3BhY2UpOwogCi0JLyogQ3JlYXRlIGEgUXVlcnlEZXNj IGZvciB0aGUgcXVlcnkuICovCisJLyoKKwkgKiBDcmVhdGUgYSBRdWVyeURlc2MgZm9yIHRoZSBx dWVyeS4gIE5vdGUgdGhhdCBubyBDYWNoZWRQbGFuIGlzIGF2YWlsYWJsZQorCSAqIGhlcmUgZXZl biBpZiB0aGUgY29udGFpbmluZyBwbGFuIHRyZWUgbWF5IGhhdmUgY29tZSBmcm9tIG9uZSBpbiB0 aGUKKwkgKiBsZWFkZXIuCisJICovCiAJcmV0dXJuIENyZWF0ZVF1ZXJ5RGVzYyhwc3RtdCwKKwkJ CQkJCSAgIE5VTEwsCiAJCQkJCQkgICBxdWVyeVN0cmluZywKIAkJCQkJCSAgIEdldEFjdGl2ZVNu YXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCSAgIHJlY2VpdmVyLCBwYXJhbUxJLCBO VUxMLCBpbnN0cnVtZW50X29wdGlvbnMpOwpAQCAtMTQzMiw2ICsxNDM3LDcgQEAgUGFyYWxsZWxR dWVyeU1haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCS8qIFN0YXJ0IHVwIHRo ZSBleGVjdXRvciAqLwogCXF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQtPmppdEZsYWdzID0gZnBlcy0+ aml0X2ZsYWdzOwogCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBmcGVzLT5lZmxhZ3MpOworCUFz c2VydChxdWVyeURlc2MtPnBsYW5fdmFsaWQpOwogCiAJLyogU3BlY2lhbCBleGVjdXRvciBpbml0 aWFsaXphdGlvbiBzdGVwcyBmb3IgcGFyYWxsZWwgd29ya2VycyAqLwogCXF1ZXJ5RGVzYy0+cGxh bnN0YXRlLT5zdGF0ZS0+ZXNfcXVlcnlfZHNhID0gYXJlYTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQ YXJ0aXRpb24uYwppbmRleCBmZDZjYThhNWQ5Li5hZTZhOTc0ZTdhIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY1BhcnRpdGlvbi5jCkBAIC0xODE3LDYgKzE4MTcsOCBAQCBFeGVjSW5pdFBhcnRpdGlv blBydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAKIAkvKiBDcmVhdGUgdGhlIHdvcmtpbmcg ZGF0YSBzdHJ1Y3R1cmUgZm9yIHBydW5pbmcgKi8KIAlwcnVuZXN0YXRlID0gQ3JlYXRlUGFydGl0 aW9uUHJ1bmVTdGF0ZShwbGFuc3RhdGUsIHBydW5laW5mbyk7CisJaWYgKCFFeGVjUGxhblN0aWxs VmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIFBlcmZvcm0gYW4gaW5p dGlhbCBwYXJ0aXRpb24gcHJ1bmUgcGFzcywgaWYgcmVxdWlyZWQuCkBAIC0xOTQzLDYgKzE5NDUs OCBAQCBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBQYXJ0 aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKIAkJCSAqIGR1cmF0aW9uIG9mIHRoaXMgZXhlY3V0 b3IgcnVuLgogCQkJICovCiAJCQlwYXJ0cmVsID0gRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbihl c3RhdGUsIHBpbmZvLT5ydGluZGV4KTsKKwkJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0 ZSkpCisJCQkJcmV0dXJuIE5VTEw7CiAJCQlwYXJ0a2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25L ZXkocGFydHJlbCk7CiAJCQlwYXJ0ZGVzYyA9IFBhcnRpdGlvbkRpcmVjdG9yeUxvb2t1cChlc3Rh dGUtPmVzX3BhcnRpdGlvbl9kaXJlY3RvcnksCiAJCQkJCQkJCQkJCQlwYXJ0cmVsKTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKaW5kZXggNGQyODhiYzhkNC4uNmYzYzM3YjZmZCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKQEAgLTM4OCw2ICszODgsOSBAQCBFeGVjSW5p dE5vZGUoUGxhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCQlicmVhazsK IAl9CiAKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gcmVzdWx0 OworCiAJRXhlY1NldEV4ZWNQcm9jTm9kZShyZXN1bHQsIHJlc3VsdC0+RXhlY1Byb2NOb2RlKTsK IAogCS8qCkBAIC00MDMsNiArNDA2LDEyIEBAIEV4ZWNJbml0Tm9kZShQbGFuICpub2RlLCBFU3Rh dGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJQXNzZXJ0KElzQShzdWJwbGFuLCBTdWJQbGFuKSk7 CiAJCXNzdGF0ZSA9IEV4ZWNJbml0U3ViUGxhbihzdWJwbGFuLCByZXN1bHQpOwogCQlzdWJwcyA9 IGxhcHBlbmQoc3VicHMsIHNzdGF0ZSk7CisJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0 ZSkpCisJCXsKKwkJCS8qIERvbid0IGxvc2UgdHJhY2sgb2YgdGhvc2UgaW5pdGlhbGl6ZWQuICov CisJCQlyZXN1bHQtPmluaXRQbGFuID0gc3VicHM7CisJCQlyZXR1cm4gcmVzdWx0OworCQl9CiAJ fQogCXJlc3VsdC0+aW5pdFBsYW4gPSBzdWJwczsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1V0aWxzLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYwpp bmRleCAwMTJkYmI2OTY1Li5hNDg1ZTdkZmM1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjVXRpbHMuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYwpA QCAtODA0LDcgKzgwNCw4IEBAIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oRVN0YXRlICplc3Rh dGUsIEluZGV4IHJ0aSkKIAogCQlBc3NlcnQocnRlLT5ydGVraW5kID09IFJURV9SRUxBVElPTik7 CiAKLQkJaWYgKCFJc1BhcmFsbGVsV29ya2VyKCkpCisJCWlmICghSXNQYXJhbGxlbFdvcmtlcigp ICYmCisJCQkoZXN0YXRlLT5lc190b3BfZWZsYWdzICYgRVhFQ19GTEFHX0dFVF9MT0NLUykgPT0g MCkKIAkJewogCQkJLyoKIAkJCSAqIEluIGEgbm9ybWFsIHF1ZXJ5LCB3ZSBzaG91bGQgYWxyZWFk eSBoYXZlIHRoZSBhcHByb3ByaWF0ZSBsb2NrLApAQCAtODMzLDYgKzgzNCw2MSBAQCBFeGVjR2V0 UmFuZ2VUYWJsZVJlbGF0aW9uKEVTdGF0ZSAqZXN0YXRlLCBJbmRleCBydGkpCiAJcmV0dXJuIHJl bDsKIH0KIAorLyoKKyAqIEV4ZWNMb2NrVmlld1JlbGF0aW9ucworICoJCUxvY2sgdmlldyByZWxh dGlvbnMsIGlmIGFueSwgaW4gYSBnaXZlbiBxdWVyeQorICovCit2b2lkCitFeGVjTG9ja1ZpZXdS ZWxhdGlvbnMoTGlzdCAqdmlld1JlbGF0aW9ucywgRVN0YXRlICplc3RhdGUpCit7CisJTGlzdENl bGwgKmxjOworCisJLyogTm90aGluZyB0byBkbyBpZiBubyBsb2NrcyBuZWVkIHRvIGJlIHRha2Vu LiAqLworCWlmICgoZXN0YXRlLT5lc190b3BfZWZsYWdzICYgRVhFQ19GTEFHX0dFVF9MT0NLUykg PT0gMCkKKwkJcmV0dXJuOworCisJZm9yZWFjaChsYywgdmlld1JlbGF0aW9ucykKKwl7CisJCUlu ZGV4CXJ0aSA9IGxmaXJzdF9pbnQobGMpOworCQlSYW5nZVRibEVudHJ5ICpydGUgPSBleGVjX3J0 X2ZldGNoKHJ0aSwgZXN0YXRlKTsKKworCQlBc3NlcnQoT2lkSXNWYWxpZChydGUtPnJlbGlkKSk7 CisJCUFzc2VydChydGUtPnJlbGtpbmQgPT0gUkVMS0lORF9WSUVXKTsKKwkJQXNzZXJ0KHJ0ZS0+ cmVsbG9ja21vZGUgIT0gTm9Mb2NrKTsKKworCQlMb2NrUmVsYXRpb25PaWQocnRlLT5yZWxpZCwg cnRlLT5yZWxsb2NrbW9kZSk7CisJfQorfQorCisvKgorICogRXhlY0xvY2tBcHBlbmROb25MZWFm UmVsYXRpb25zCisgKgkJTG9jayBub24tbGVhZiByZWxhdGlvbnMgd2hvc2UgY2hpbGRyZW4gYXJl IHNjYW5uZWQgYnkgYSBnaXZlbgorICoJCUFwcGVuZC9NZXJnZUFwcGVuZCBub2RlCisgKi8KK3Zv aWQKK0V4ZWNMb2NrQXBwZW5kTm9uTGVhZlJlbGF0aW9ucyhFU3RhdGUgKmVzdGF0ZSwgTGlzdCAq YWxscGFydHJlbGlkcykKK3sKKwlMaXN0Q2VsbCAqbDsKKworCS8qIE5vdGhpbmcgdG8gZG8gaWYg bm8gbG9ja3MgbmVlZCB0byBiZSB0YWtlbi4gKi8KKwlpZiAoKGVzdGF0ZS0+ZXNfdG9wX2VmbGFn cyAmIEVYRUNfRkxBR19HRVRfTE9DS1MpID09IDApCisJCXJldHVybjsKKworCWZvcmVhY2gobCwg YWxscGFydHJlbGlkcykKKwl7CisJCUJpdG1hcHNldCAqcGFydHJlbGlkcyA9IGxmaXJzdF9ub2Rl KEJpdG1hcHNldCwgbCk7CisJCWludAkJaTsKKworCQlpID0gLTE7CisJCXdoaWxlICgoaSA9IGJt c19uZXh0X21lbWJlcihwYXJ0cmVsaWRzLCBpKSkgPiAwKQorCQl7CisJCQlSYW5nZVRibEVudHJ5 ICpydGUgPSBleGVjX3J0X2ZldGNoKGksIGVzdGF0ZSk7CisKKwkJCUxvY2tSZWxhdGlvbk9pZChy dGUtPnJlbGlkLCBydGUtPnJlbGxvY2ttb2RlKTsKKwkJfQorCX0KK30KKwogLyoKICAqIEV4ZWNJ bml0UmVzdWx0UmVsYXRpb24KICAqCQlPcGVuIHJlbGF0aW9uIGdpdmVuIGJ5IHRoZSBwYXNzZWQt aW4gUlQgaW5kZXggYW5kIGZpbGwgaXRzCkBAIC04NDgsNiArOTA0LDggQEAgRXhlY0luaXRSZXN1 bHRSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywK IAlSZWxhdGlvbglyZXN1bHRSZWxhdGlvbkRlc2M7CiAKIAlyZXN1bHRSZWxhdGlvbkRlc2MgPSBF eGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKGVzdGF0ZSwgcnRpKTsKKwlpZiAoIUV4ZWNQbGFuU3Rp bGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm47CiAJSW5pdFJlc3VsdFJlbEluZm8ocmVzdWx0UmVs SW5mbywKIAkJCQkJICByZXN1bHRSZWxhdGlvbkRlc2MsCiAJCQkJCSAgcnRpLApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9mdW5jdGlvbnMuYwppbmRleCA1MGUwNmVjNjkzLi5mOGM5ZGUxZmRhIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9mdW5jdGlvbnMuYwpAQCAtODQzLDYgKzg0Myw3IEBAIHBvc3RxdWVsX3N0YXJ0KGV4ZWN1dGlv bl9zdGF0ZSAqZXMsIFNRTEZ1bmN0aW9uQ2FjaGVQdHIgZmNhY2hlKQogCQlkZXN0ID0gTm9uZV9S ZWNlaXZlcjsKIAogCWVzLT5xZCA9IENyZWF0ZVF1ZXJ5RGVzYyhlcy0+c3RtdCwKKwkJCQkJCQkg TlVMTCwJLyogZm1ncl9zcWwoKSBkb2Vzbid0IHVzZSBDYWNoZWRQbGFucyAqLwogCQkJCQkJCSBm Y2FjaGUtPnNyYywKIAkJCQkJCQkgR2V0QWN0aXZlU25hcHNob3QoKSwKIAkJCQkJCQkgSW52YWxp ZFNuYXBzaG90LApAQCAtODY4LDYgKzg2OSw3IEBAIHBvc3RxdWVsX3N0YXJ0KGV4ZWN1dGlvbl9z dGF0ZSAqZXMsIFNRTEZ1bmN0aW9uQ2FjaGVQdHIgZmNhY2hlKQogCQllbHNlCiAJCQllZmxhZ3Mg PSAwOwkJCS8qIGRlZmF1bHQgcnVuLXRvLWNvbXBsZXRpb24gZmxhZ3MgKi8KIAkJRXhlY3V0b3JT dGFydChlcy0+cWQsIGVmbGFncyk7CisJCUFzc2VydChlcy0+cWQtPnBsYW5fdmFsaWQpOwogCX0K IAogCWVzLT5zdGF0dXMgPSBGX0VYRUNfUlVOOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUFnZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jCmluZGV4IDE5 MzQyYTQyMGMuLjA2ZTBkN2QxNDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVBZ2cuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQWdnLmMKQEAgLTMxMzQsMTUg KzMxMzQsMTggQEAgaGFzaGFnZ19yZXNldF9zcGlsbF9zdGF0ZShBZ2dTdGF0ZSAqYWdnc3RhdGUp CiAJCXsKIAkJCUhhc2hBZ2dTcGlsbCAqc3BpbGwgPSAmYWdnc3RhdGUtPmhhc2hfc3BpbGxzW3Nl dG5vXTsKIAotCQkJcGZyZWUoc3BpbGwtPm50dXBsZXMpOwotCQkJcGZyZWUoc3BpbGwtPnBhcnRp dGlvbnMpOworCQkJaWYgKHNwaWxsLT5udHVwbGVzKQorCQkJCXBmcmVlKHNwaWxsLT5udHVwbGVz KTsKKwkJCWlmIChzcGlsbC0+cGFydGl0aW9ucykKKwkJCQlwZnJlZShzcGlsbC0+cGFydGl0aW9u cyk7CiAJCX0KIAkJcGZyZWUoYWdnc3RhdGUtPmhhc2hfc3BpbGxzKTsKIAkJYWdnc3RhdGUtPmhh c2hfc3BpbGxzID0gTlVMTDsKIAl9CiAKIAkvKiBmcmVlIGJhdGNoZXMgKi8KLQlsaXN0X2ZyZWVf ZGVlcChhZ2dzdGF0ZS0+aGFzaF9iYXRjaGVzKTsKKwlpZiAoYWdnc3RhdGUtPmhhc2hfYmF0Y2hl cykKKwkJbGlzdF9mcmVlX2RlZXAoYWdnc3RhdGUtPmhhc2hfYmF0Y2hlcyk7CiAJYWdnc3RhdGUt Pmhhc2hfYmF0Y2hlcyA9IE5JTDsKIAogCS8qIGNsb3NlIHRhcGUgc2V0ICovCkBAIC0zMjk2LDYg KzMyOTksOCBAQCBFeGVjSW5pdEFnZyhBZ2cgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZs YWdzKQogCQllZmxhZ3MgJj0gfkVYRUNfRkxBR19SRVdJTkQ7CiAJb3V0ZXJQbGFuID0gb3V0ZXJQ bGFuKG5vZGUpOwogCW91dGVyUGxhblN0YXRlKGFnZ3N0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRl clBsYW4sIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUp KQorCQlyZXR1cm4gYWdnc3RhdGU7CiAKIAkvKgogCSAqIGluaXRpYWxpemUgc291cmNlIHR1cGxl IHR5cGUuCkBAIC00MzM2LDEwICs0MzQxLDEzIEBAIEV4ZWNFbmRBZ2coQWdnU3RhdGUgKm5vZGUp CiAJewogCQlBZ2dTdGF0ZVBlclRyYW5zIHBlcnRyYW5zID0gJm5vZGUtPnBlcnRyYW5zW3RyYW5z bm9dOwogCi0JCWZvciAoc2V0bm8gPSAwOyBzZXRubyA8IG51bUdyb3VwaW5nU2V0czsgc2V0bm8r KykKKwkJaWYgKHBlcnRyYW5zKQogCQl7Ci0JCQlpZiAocGVydHJhbnMtPnNvcnRzdGF0ZXNbc2V0 bm9dKQotCQkJCXR1cGxlc29ydF9lbmQocGVydHJhbnMtPnNvcnRzdGF0ZXNbc2V0bm9dKTsKKwkJ CWZvciAoc2V0bm8gPSAwOyBzZXRubyA8IG51bUdyb3VwaW5nU2V0czsgc2V0bm8rKykKKwkJCXsK KwkJCQlpZiAocGVydHJhbnMtPnNvcnRzdGF0ZXNbc2V0bm9dKQorCQkJCQl0dXBsZXNvcnRfZW5k KHBlcnRyYW5zLT5zb3J0c3RhdGVzW3NldG5vXSk7CisJCQl9CiAJCX0KIAl9CiAKQEAgLTQzNTcs NyArNDM2NSw4IEBAIEV4ZWNFbmRBZ2coQWdnU3RhdGUgKm5vZGUpCiAJRXhlY0ZyZWVFeHByQ29u dGV4dCgmbm9kZS0+c3MucHMpOwogCiAJLyogY2xlYW4gdXAgdHVwbGUgdGFibGUgKi8KLQlFeGVj Q2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKKwlpZiAobm9kZS0+c3Muc3Nf U2NhblR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xv dCk7CiAKIAlvdXRlclBsYW4gPSBvdXRlclBsYW5TdGF0ZShub2RlKTsKIAlFeGVjRW5kTm9kZShv dXRlclBsYW4pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCmluZGV4IGMxODViMTFjNjcuLjA5 MWY5NzljNDYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKQEAgLTEwOSwxMCArMTA5LDEx IEBAIEFwcGVuZFN0YXRlICoKIEV4ZWNJbml0QXBwZW5kKEFwcGVuZCAqbm9kZSwgRVN0YXRlICpl c3RhdGUsIGludCBlZmxhZ3MpCiB7CiAJQXBwZW5kU3RhdGUgKmFwcGVuZHN0YXRlID0gbWFrZU5v ZGUoQXBwZW5kU3RhdGUpOwotCVBsYW5TdGF0ZSAqKmFwcGVuZHBsYW5zdGF0ZXM7CisJUGxhblN0 YXRlICoqYXBwZW5kcGxhbnN0YXRlcyA9IE5VTEw7CiAJQml0bWFwc2V0ICAqdmFsaWRzdWJwbGFu czsKIAlCaXRtYXBzZXQgICphc3luY3BsYW5zOwogCWludAkJCW5wbGFuczsKKwlpbnQJCQluaW5p dGVkID0gMDsKIAlpbnQJCQluYXN5bmNwbGFuczsKIAlpbnQJCQlmaXJzdHZhbGlkOwogCWludAkJ CWksCkBAIC0xMzMsNiArMTM0LDE1IEBAIEV4ZWNJbml0QXBwZW5kKEFwcGVuZCAqbm9kZSwgRVN0 YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJYXBwZW5kc3RhdGUtPmFzX3N5bmNkb25lID0gZmFs c2U7CiAJYXBwZW5kc3RhdGUtPmFzX2JlZ3VuID0gZmFsc2U7CiAKKwkvKgorCSAqIExvY2sgbm9u LWxlYWYgcGFydGl0aW9ucy4gIEluIHRoZSBwcnVuaW5nIGNhc2UsIHNvbWUgb2YgdGhlc2UgbG9j a3MKKwkgKiB3aWxsIGJlIHJldGFrZW4gd2hlbiB0aGUgcGFydGl0aW9uIHdpbGwgYmUgb3BlbmVk IGZvciBwcnVuaW5nLCBidXQgaXQKKwkgKiBkb2VzIG5vdCBzZWVtIHdvcnRod2hpbGUgdG8gc3Bl bmQgY3ljbGVzIHRvIGZpbHRlciB0aG9zZSBvdXQgaGVyZS4KKwkgKi8KKwlFeGVjTG9ja0FwcGVu ZE5vbkxlYWZSZWxhdGlvbnMoZXN0YXRlLCBub2RlLT5hbGxwYXJ0cmVsaWRzKTsKKwlpZiAoIUV4 ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlnb3RvIGVhcmx5X2V4aXQ7CisKIAkvKiBJZiBy dW4tdGltZSBwYXJ0aXRpb24gcHJ1bmluZyBpcyBlbmFibGVkLCB0aGVuIHNldCB0aGF0IHVwIG5v dyAqLwogCWlmIChub2RlLT5wYXJ0X3BydW5lX2luZGV4ID49IDApCiAJewpAQCAtMTQ4LDYgKzE1 OCw4IEBAIEV4ZWNJbml0QXBwZW5kKEFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBl ZmxhZ3MpCiAJCQkJCQkJCQkJCSAgbm9kZS0+cGFydF9wcnVuZV9pbmRleCwKIAkJCQkJCQkJCQkJ ICBub2RlLT5hcHByZWxpZHMsCiAJCQkJCQkJCQkJCSAgJnZhbGlkc3VicGxhbnMpOworCQlpZiAo IUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJZ290byBlYXJseV9leGl0OwogCQlhcHBl bmRzdGF0ZS0+YXNfcHJ1bmVfc3RhdGUgPSBwcnVuZXN0YXRlOwogCQlucGxhbnMgPSBibXNfbnVt X21lbWJlcnModmFsaWRzdWJwbGFucyk7CiAKQEAgLTIyMiwxMSArMjM0LDEyIEBAIEV4ZWNJbml0 QXBwZW5kKEFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCQlmaXJz dHZhbGlkID0gajsKIAogCQlhcHBlbmRwbGFuc3RhdGVzW2orK10gPSBFeGVjSW5pdE5vZGUoaW5p dE5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKKwkJbmluaXRlZCsrOworCQlpZiAoIUV4ZWNQbGFuU3Rp bGxWYWxpZChlc3RhdGUpKQorCQkJZ290byBlYXJseV9leGl0OwogCX0KIAogCWFwcGVuZHN0YXRl LT5hc19maXJzdF9wYXJ0aWFsX3BsYW4gPSBmaXJzdHZhbGlkOwotCWFwcGVuZHN0YXRlLT5hcHBl bmRwbGFucyA9IGFwcGVuZHBsYW5zdGF0ZXM7Ci0JYXBwZW5kc3RhdGUtPmFzX25wbGFucyA9IG5w bGFuczsKIAogCS8qIEluaXRpYWxpemUgYXN5bmMgc3RhdGUgKi8KIAlhcHBlbmRzdGF0ZS0+YXNf YXN5bmNwbGFucyA9IGFzeW5jcGxhbnM7CkBAIC0yNzYsNiArMjg5LDEwIEBAIEV4ZWNJbml0QXBw ZW5kKEFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJLyogRm9yIHBh cmFsbGVsIHF1ZXJ5LCB0aGlzIHdpbGwgYmUgb3ZlcnJpZGRlbiBsYXRlci4gKi8KIAlhcHBlbmRz dGF0ZS0+Y2hvb3NlX25leHRfc3VicGxhbiA9IGNob29zZV9uZXh0X3N1YnBsYW5fbG9jYWxseTsK IAorZWFybHlfZXhpdDoKKwlhcHBlbmRzdGF0ZS0+YXBwZW5kcGxhbnMgPSBhcHBlbmRwbGFuc3Rh dGVzOworCWFwcGVuZHN0YXRlLT5hc19ucGxhbnMgPSBuaW5pdGVkOworCiAJcmV0dXJuIGFwcGVu ZHN0YXRlOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFw QW5kLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwQW5kLmMKaW5kZXggNGM1ZWIy YjIzYi4uYWNjNmM1MGUyMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJp dG1hcEFuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBBbmQuYwpAQCAt NTcsNiArNTcsNyBAQCBFeGVjSW5pdEJpdG1hcEFuZChCaXRtYXBBbmQgKm5vZGUsIEVTdGF0ZSAq ZXN0YXRlLCBpbnQgZWZsYWdzKQogCUJpdG1hcEFuZFN0YXRlICpiaXRtYXBhbmRzdGF0ZSA9IG1h a2VOb2RlKEJpdG1hcEFuZFN0YXRlKTsKIAlQbGFuU3RhdGUgKipiaXRtYXBwbGFuc3RhdGVzOwog CWludAkJCW5wbGFuczsKKwlpbnQJCQluaW5pdGVkID0gMDsKIAlpbnQJCQlpOwogCUxpc3RDZWxs ICAgKmw7CiAJUGxhbgkgICAqaW5pdE5vZGU7CkBAIC03Nyw4ICs3OCw2IEBAIEV4ZWNJbml0Qml0 bWFwQW5kKEJpdG1hcEFuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJYml0 bWFwYW5kc3RhdGUtPnBzLnBsYW4gPSAoUGxhbiAqKSBub2RlOwogCWJpdG1hcGFuZHN0YXRlLT5w cy5zdGF0ZSA9IGVzdGF0ZTsKIAliaXRtYXBhbmRzdGF0ZS0+cHMuRXhlY1Byb2NOb2RlID0gRXhl Y0JpdG1hcEFuZDsKLQliaXRtYXBhbmRzdGF0ZS0+Yml0bWFwcGxhbnMgPSBiaXRtYXBwbGFuc3Rh dGVzOwotCWJpdG1hcGFuZHN0YXRlLT5ucGxhbnMgPSBucGxhbnM7CiAKIAkvKgogCSAqIGNhbGwg RXhlY0luaXROb2RlIG9uIGVhY2ggb2YgdGhlIHBsYW5zIHRvIGJlIGV4ZWN1dGVkIGFuZCBzYXZl IHRoZQpAQCAtODksNiArODgsOSBAQCBFeGVjSW5pdEJpdG1hcEFuZChCaXRtYXBBbmQgKm5vZGUs IEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCXsKIAkJaW5pdE5vZGUgPSAoUGxhbiAqKSBs Zmlyc3QobCk7CiAJCWJpdG1hcHBsYW5zdGF0ZXNbaV0gPSBFeGVjSW5pdE5vZGUoaW5pdE5vZGUs IGVzdGF0ZSwgZWZsYWdzKTsKKwkJbmluaXRlZCsrOworCQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxp ZChlc3RhdGUpKQorCQkJZ290byBlYXJseV9leGl0OwogCQlpKys7CiAJfQogCkBAIC05OSw2ICsx MDEsMTAgQEAgRXhlY0luaXRCaXRtYXBBbmQoQml0bWFwQW5kICpub2RlLCBFU3RhdGUgKmVzdGF0 ZSwgaW50IGVmbGFncykKIAkgKiBFeGVjUXVhbCBvciBFeGVjUHJvamVjdC4gIFRoZXkgZG9uJ3Qg bmVlZCBhbnkgdHVwbGUgc2xvdHMgZWl0aGVyLgogCSAqLwogCitlYXJseV9leGl0OgorCWJpdG1h cGFuZHN0YXRlLT5iaXRtYXBwbGFucyA9IGJpdG1hcHBsYW5zdGF0ZXM7CisJYml0bWFwYW5kc3Rh dGUtPm5wbGFucyA9IG5pbml0ZWQ7CisKIAlyZXR1cm4gYml0bWFwYW5kc3RhdGU7CiB9CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMKaW5kZXggZjM1ZGYwYjhiZi4u ZTZhNjg5ZWVmYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhl YXBzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMK QEAgLTY2NSw3ICs2NjUsOCBAQCBFeGVjRW5kQml0bWFwSGVhcFNjYW4oQml0bWFwSGVhcFNjYW5T dGF0ZSAqbm9kZSkKIAkgKi8KIAlpZiAobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KQog CQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwotCUV4ZWND bGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOworCWlmIChub2RlLT5zcy5zc19T Y2FuVHVwbGVTbG90KQorCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90 KTsKIAogCS8qCiAJICogY2xvc2UgZG93biBzdWJwbGFucwpAQCAtNjkzLDcgKzY5NCw4IEBAIEV4 ZWNFbmRCaXRtYXBIZWFwU2NhbihCaXRtYXBIZWFwU2NhblN0YXRlICpub2RlKQogCS8qCiAJICog Y2xvc2UgaGVhcCBzY2FuCiAJICovCi0JdGFibGVfZW5kc2NhbihzY2FuRGVzYyk7CisJaWYgKHNj YW5EZXNjKQorCQl0YWJsZV9lbmRzY2FuKHNjYW5EZXNjKTsKIH0KIAogLyogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAt NzYzLDExICs3NjUsMTUgQEAgRXhlY0luaXRCaXRtYXBIZWFwU2NhbihCaXRtYXBIZWFwU2NhbiAq bm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogb3BlbiB0aGUgc2NhbiByZWxh dGlvbgogCSAqLwogCWN1cnJlbnRSZWxhdGlvbiA9IEV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0 ZSwgbm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFs aWQoZXN0YXRlKSkKKwkJcmV0dXJuIHNjYW5zdGF0ZTsKIAogCS8qCiAJICogaW5pdGlhbGl6ZSBj aGlsZCBub2RlcwogCSAqLwogCW91dGVyUGxhblN0YXRlKHNjYW5zdGF0ZSkgPSBFeGVjSW5pdE5v ZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxs VmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIHNjYW5zdGF0ZTsKIAogCS8qCiAJICogZ2V0IHRoZSBz Y2FuIHR5cGUgZnJvbSB0aGUgcmVsYXRpb24gZGVzY3JpcHRvci4KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYwppbmRleCA4M2VjOWVkZTg5Li5jYzgzMzJlZjY4IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSW5kZXhzY2FuLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5jCkBAIC0yNjMsNiAr MjYzLDggQEAgRXhlY0luaXRCaXRtYXBJbmRleFNjYW4oQml0bWFwSW5kZXhTY2FuICpub2RlLCBF U3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkvKiBPcGVuIHRoZSBpbmRleCByZWxhdGlvbi4g Ki8KIAlsb2NrbW9kZSA9IGV4ZWNfcnRfZmV0Y2gobm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVzdGF0 ZSktPnJlbGxvY2ttb2RlOwogCWluZGV4c3RhdGUtPmJpc3NfUmVsYXRpb25EZXNjID0gaW5kZXhf b3Blbihub2RlLT5pbmRleGlkLCBsb2NrbW9kZSk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQo ZXN0YXRlKSkKKwkJcmV0dXJuIGluZGV4c3RhdGU7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgaW5k ZXgtc3BlY2lmaWMgc2NhbiBzdGF0ZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUJpdG1hcE9yLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwT3IuYwppbmRl eCAwYmY4YWY5NjUyLi5iYWJhZDFiNGIyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlQml0bWFwT3IuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwT3Iu YwpAQCAtNTgsNiArNTgsNyBAQCBFeGVjSW5pdEJpdG1hcE9yKEJpdG1hcE9yICpub2RlLCBFU3Rh dGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlCaXRtYXBPclN0YXRlICpiaXRtYXBvcnN0YXRlID0g bWFrZU5vZGUoQml0bWFwT3JTdGF0ZSk7CiAJUGxhblN0YXRlICoqYml0bWFwcGxhbnN0YXRlczsK IAlpbnQJCQlucGxhbnM7CisJaW50CQkJbmluaXRlZCA9IDA7CiAJaW50CQkJaTsKIAlMaXN0Q2Vs bCAgICpsOwogCVBsYW4JICAgKmluaXROb2RlOwpAQCAtNzgsOCArNzksNiBAQCBFeGVjSW5pdEJp dG1hcE9yKEJpdG1hcE9yICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAliaXRt YXBvcnN0YXRlLT5wcy5wbGFuID0gKFBsYW4gKikgbm9kZTsKIAliaXRtYXBvcnN0YXRlLT5wcy5z dGF0ZSA9IGVzdGF0ZTsKIAliaXRtYXBvcnN0YXRlLT5wcy5FeGVjUHJvY05vZGUgPSBFeGVjQml0 bWFwT3I7Ci0JYml0bWFwb3JzdGF0ZS0+Yml0bWFwcGxhbnMgPSBiaXRtYXBwbGFuc3RhdGVzOwot CWJpdG1hcG9yc3RhdGUtPm5wbGFucyA9IG5wbGFuczsKIAogCS8qCiAJICogY2FsbCBFeGVjSW5p dE5vZGUgb24gZWFjaCBvZiB0aGUgcGxhbnMgdG8gYmUgZXhlY3V0ZWQgYW5kIHNhdmUgdGhlCkBA IC05MCw2ICs4OSw5IEBAIEV4ZWNJbml0Qml0bWFwT3IoQml0bWFwT3IgKm5vZGUsIEVTdGF0ZSAq ZXN0YXRlLCBpbnQgZWZsYWdzKQogCXsKIAkJaW5pdE5vZGUgPSAoUGxhbiAqKSBsZmlyc3QobCk7 CiAJCWJpdG1hcHBsYW5zdGF0ZXNbaV0gPSBFeGVjSW5pdE5vZGUoaW5pdE5vZGUsIGVzdGF0ZSwg ZWZsYWdzKTsKKwkJbmluaXRlZCsrOworCQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUp KQorCQkJZ290byBlYXJseV9leGl0OwogCQlpKys7CiAJfQogCkBAIC0xMDAsNiArMTAyLDEwIEBA IEV4ZWNJbml0Qml0bWFwT3IoQml0bWFwT3IgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZs YWdzKQogCSAqIEV4ZWNRdWFsIG9yIEV4ZWNQcm9qZWN0LiAgVGhleSBkb24ndCBuZWVkIGFueSB0 dXBsZSBzbG90cyBlaXRoZXIuCiAJICovCiAKK2Vhcmx5X2V4aXQ6CisJYml0bWFwb3JzdGF0ZS0+ Yml0bWFwcGxhbnMgPSBiaXRtYXBwbGFuc3RhdGVzOworCWJpdG1hcG9yc3RhdGUtPm5wbGFucyA9 IG5pbml0ZWQ7CisKIAlyZXR1cm4gYml0bWFwb3JzdGF0ZTsKIH0KIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN0ZXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVDdGVzY2FuLmMKaW5kZXggY2M0YzQyNDNlMi4uZWVkNWI3NWE0ZiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN0ZXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlQ3Rlc2Nhbi5jCkBAIC0yOTcsMTQgKzI5NywxNiBAQCBFeGVjRW5kQ3RlU2NhbihDdGVT Y2FuU3RhdGUgKm5vZGUpCiAJICovCiAJaWYgKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xv dCkKIAkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKLQlF eGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKKwlpZiAobm9kZS0+c3Mu c3NfU2NhblR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxl U2xvdCk7CiAKIAkvKgogCSAqIElmIEkgYW0gdGhlIGxlYWRlciwgZnJlZSB0aGUgdHVwbGVzdG9y ZS4KIAkgKi8KIAlpZiAobm9kZS0+bGVhZGVyID09IG5vZGUpCiAJewotCQl0dXBsZXN0b3JlX2Vu ZChub2RlLT5jdGVfdGFibGUpOworCQlpZiAobm9kZS0+Y3RlX3RhYmxlKQorCQkJdHVwbGVzdG9y ZV9lbmQobm9kZS0+Y3RlX3RhYmxlKTsKIAkJbm9kZS0+Y3RlX3RhYmxlID0gTlVMTDsKIAl9CiB9 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQ3VzdG9tLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQ3VzdG9tLmMKaW5kZXggYmQ0MmM2NWIyOS4uYjAzNDk5ZmFlNSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN1c3RvbS5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVDdXN0b20uYwpAQCAtNjEsNiArNjEsOCBAQCBFeGVjSW5pdEN1 c3RvbVNjYW4oQ3VzdG9tU2NhbiAqY3NjYW4sIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQog CWlmIChzY2FucmVsaWQgPiAwKQogCXsKIAkJc2Nhbl9yZWwgPSBFeGVjT3BlblNjYW5SZWxhdGlv bihlc3RhdGUsIHNjYW5yZWxpZCwgZWZsYWdzKTsKKwkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQo ZXN0YXRlKSkKKwkJCXJldHVybiBjc3M7CiAJCWNzcy0+c3Muc3NfY3VycmVudFJlbGF0aW9uID0g c2Nhbl9yZWw7CiAJfQogCkBAIC0xMjcsNiArMTI5LDEwIEBAIEV4ZWNDdXN0b21TY2FuKFBsYW5T dGF0ZSAqcHN0YXRlKQogdm9pZAogRXhlY0VuZEN1c3RvbVNjYW4oQ3VzdG9tU2NhblN0YXRlICpu b2RlKQogeworCS8qCisJICogWFhYIC0gQmVnaW5DdXN0b21TY2FuKCkgbWF5IG5vdCBoYXZlIG9j Y3VycmVkIGlmIEV4ZWNJbml0Q3VzdG9tU2NhbigpCisJICogaGl0IHRoZSBlYXJseSBleGl0IGNh c2UuCisJICovCiAJQXNzZXJ0KG5vZGUtPm1ldGhvZHMtPkVuZEN1c3RvbVNjYW4gIT0gTlVMTCk7 CiAJbm9kZS0+bWV0aG9kcy0+RW5kQ3VzdG9tU2Nhbihub2RlKTsKIApAQCAtMTM0LDggKzE0MCwx MCBAQCBFeGVjRW5kQ3VzdG9tU2NhbihDdXN0b21TY2FuU3RhdGUgKm5vZGUpCiAJRXhlY0ZyZWVF eHByQ29udGV4dCgmbm9kZS0+c3MucHMpOwogCiAJLyogQ2xlYW4gb3V0IHRoZSB0dXBsZSB0YWJs ZSAqLwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7Ci0J RXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CisJaWYgKG5vZGUtPnNz LnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNf UmVzdWx0VHVwbGVTbG90KTsKKwlpZiAobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCkKKwkJRXhl Y0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CiB9CiAKIHZvaWQKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUZvcmVpZ25zY2FuLmMKaW5kZXggYzIxMzlhY2NhMC4uZDNmMGE2NTQ4 NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUZvcmVpZ25zY2FuLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUZvcmVpZ25zY2FuLmMKQEAgLTE3Myw2ICsxNzMs OCBAQCBFeGVjSW5pdEZvcmVpZ25TY2FuKEZvcmVpZ25TY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0 ZSwgaW50IGVmbGFncykKIAlpZiAoc2NhbnJlbGlkID4gMCkKIAl7CiAJCWN1cnJlbnRSZWxhdGlv biA9IEV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0ZSwgc2NhbnJlbGlkLCBlZmxhZ3MpOworCQlp ZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJcmV0dXJuIHNjYW5zdGF0ZTsKIAkJ c2NhbnN0YXRlLT5zcy5zc19jdXJyZW50UmVsYXRpb24gPSBjdXJyZW50UmVsYXRpb247CiAJCWZk d3JvdXRpbmUgPSBHZXRGZHdSb3V0aW5lRm9yUmVsYXRpb24oY3VycmVudFJlbGF0aW9uLCB0cnVl KTsKIAl9CkBAIC0yNjQsNiArMjY2LDggQEAgRXhlY0luaXRGb3JlaWduU2NhbihGb3JlaWduU2Nh biAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJaWYgKG91dGVyUGxhbihub2Rl KSkKIAkJb3V0ZXJQbGFuU3RhdGUoc2NhbnN0YXRlKSA9CiAJCQlFeGVjSW5pdE5vZGUob3V0ZXJQ bGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0 YXRlKSkKKwkJcmV0dXJuIHNjYW5zdGF0ZTsKIAogCS8qCiAJICogVGVsbCB0aGUgRkRXIHRvIGlu aXRpYWxpemUgdGhlIHNjYW4uCkBAIC0zMDAsMTQgKzMwNCwxNyBAQCBFeGVjRW5kRm9yZWlnblNj YW4oRm9yZWlnblNjYW5TdGF0ZSAqbm9kZSkKIAlGb3JlaWduU2NhbiAqcGxhbiA9IChGb3JlaWdu U2NhbiAqKSBub2RlLT5zcy5wcy5wbGFuOwogCUVTdGF0ZQkgICAqZXN0YXRlID0gbm9kZS0+c3Mu cHMuc3RhdGU7CiAKLQkvKiBMZXQgdGhlIEZEVyBzaHV0IGRvd24gKi8KLQlpZiAocGxhbi0+b3Bl cmF0aW9uICE9IENNRF9TRUxFQ1QpCisJLyogTGV0IHRoZSBGRFcgc2h1dCBkb3duIGlmIG5lZWRl ZC4gKi8KKwlpZiAobm9kZS0+ZmR3X3N0YXRlKQogCXsKLQkJaWYgKGVzdGF0ZS0+ZXNfZXBxX2Fj dGl2ZSA9PSBOVUxMKQotCQkJbm9kZS0+ZmR3cm91dGluZS0+RW5kRGlyZWN0TW9kaWZ5KG5vZGUp OworCQlpZiAocGxhbi0+b3BlcmF0aW9uICE9IENNRF9TRUxFQ1QpCisJCXsKKwkJCWlmIChlc3Rh dGUtPmVzX2VwcV9hY3RpdmUgPT0gTlVMTCkKKwkJCQlub2RlLT5mZHdyb3V0aW5lLT5FbmREaXJl Y3RNb2RpZnkobm9kZSk7CisJCX0KKwkJZWxzZQorCQkJbm9kZS0+ZmR3cm91dGluZS0+RW5kRm9y ZWlnblNjYW4obm9kZSk7CiAJfQotCWVsc2UKLQkJbm9kZS0+ZmR3cm91dGluZS0+RW5kRm9yZWln blNjYW4obm9kZSk7CiAKIAkvKiBTaHV0IGRvd24gYW55IG91dGVyIHBsYW4uICovCiAJaWYgKG91 dGVyUGxhblN0YXRlKG5vZGUpKQpAQCAtMzE5LDcgKzMyNiw4IEBAIEV4ZWNFbmRGb3JlaWduU2Nh bihGb3JlaWduU2NhblN0YXRlICpub2RlKQogCS8qIGNsZWFuIG91dCB0aGUgdHVwbGUgdGFibGUg Ki8KIAlpZiAobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KQogCQlFeGVjQ2xlYXJUdXBs ZShub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwotCUV4ZWNDbGVhclR1cGxlKG5vZGUt PnNzLnNzX1NjYW5UdXBsZVNsb3QpOworCWlmIChub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KQor CQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKIH0KIAogLyogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUZ1bmN0aW9uc2Nhbi5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUZ1bmN0aW9uc2Nhbi5jCmluZGV4IGRkMDZlZjhh ZWUuLjc5MmVjZGE0YTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGdW5j dGlvbnNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlRnVuY3Rpb25zY2FuLmMK QEAgLTUzMyw3ICs1MzMsOCBAQCBFeGVjRW5kRnVuY3Rpb25TY2FuKEZ1bmN0aW9uU2NhblN0YXRl ICpub2RlKQogCSAqLwogCWlmIChub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpCiAJCUV4 ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7Ci0JRXhlY0NsZWFy VHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CisJaWYgKG5vZGUtPnNzLnNzX1NjYW5U dXBsZVNsb3QpCisJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwog CiAJLyoKIAkgKiBSZWxlYXNlIHNsb3RzIGFuZCB0dXBsZXN0b3JlIHJlc291cmNlcwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUdhdGhlci5jCmluZGV4IDMwN2ZjMTBlZWEuLjM2NWQzYWYzZTQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXIuYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlR2F0aGVyLmMKQEAgLTg5LDYgKzg5LDggQEAgRXhlY0luaXRHYXRoZXIoR2F0 aGVyICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKi8KIAlvdXRlck5vZGUg PSBvdXRlclBsYW4obm9kZSk7CiAJb3V0ZXJQbGFuU3RhdGUoZ2F0aGVyc3RhdGUpID0gRXhlY0lu aXROb2RlKG91dGVyTm9kZSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZh bGlkKGVzdGF0ZSkpCisJCXJldHVybiBnYXRoZXJzdGF0ZTsKIAl0dXBEZXNjID0gRXhlY0dldFJl c3VsdFR5cGUob3V0ZXJQbGFuU3RhdGUoZ2F0aGVyc3RhdGUpKTsKIAogCS8qCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyTWVyZ2UuYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5jCmluZGV4IDlkNWUxYTQ2ZTkuLjhkMjgwOWYwNzkgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5jCkBAIC0xMDgsNiArMTA4LDggQEAg RXhlY0luaXRHYXRoZXJNZXJnZShHYXRoZXJNZXJnZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGlu dCBlZmxhZ3MpCiAJICovCiAJb3V0ZXJOb2RlID0gb3V0ZXJQbGFuKG5vZGUpOwogCW91dGVyUGxh blN0YXRlKGdtX3N0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlck5vZGUsIGVzdGF0ZSwgZWZsYWdz KTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gZ21fc3RhdGU7 CiAKIAkvKgogCSAqIExlYWRlciBtYXkgYWNjZXNzIEV4ZWNQcm9jTm9kZSByZXN1bHQgZGlyZWN0 bHkgKGlmCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR3JvdXAuYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHcm91cC5jCmluZGV4IDI1YTE2MTg5NTIuLmUwODMyYmI3 NzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHcm91cC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHcm91cC5jCkBAIC0xODUsNiArMTg1LDggQEAgRXhlY0lu aXRHcm91cChHcm91cCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogaW5p dGlhbGl6ZSBjaGlsZCBub2RlcwogCSAqLwogCW91dGVyUGxhblN0YXRlKGdycHN0YXRlKSA9IEV4 ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQ bGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gZ3Jwc3RhdGU7CiAKIAkvKgogCSAqIElu aXRpYWxpemUgc2NhbiBzbG90IGFuZCB0eXBlLgpAQCAtMjMxLDcgKzIzMyw4IEBAIEV4ZWNFbmRH cm91cChHcm91cFN0YXRlICpub2RlKQogCUV4ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPnNzLnBz KTsKIAogCS8qIGNsZWFuIHVwIHR1cGxlIHRhYmxlICovCi0JRXhlY0NsZWFyVHVwbGUobm9kZS0+ c3Muc3NfU2NhblR1cGxlU2xvdCk7CisJaWYgKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpCisJ CUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwogCiAJb3V0ZXJQbGFu ID0gb3V0ZXJQbGFuU3RhdGUobm9kZSk7CiAJRXhlY0VuZE5vZGUob3V0ZXJQbGFuKTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlSGFzaC5jCmluZGV4IGVjZWVlOTkzNzQuLjZhZmMwNGVkZjEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUhhc2guYwpAQCAtMzc5LDYgKzM3OSw4IEBAIEV4ZWNJbml0SGFzaChIYXNoICpub2Rl LCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBpbml0aWFsaXplIGNoaWxkIG5vZGVz CiAJICovCiAJb3V0ZXJQbGFuU3RhdGUoaGFzaHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBs YW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3Rh dGUpKQorCQlyZXR1cm4gaGFzaHN0YXRlOwogCiAJLyoKIAkgKiBpbml0aWFsaXplIG91ciByZXN1 bHQgc2xvdCBhbmQgdHlwZS4gTm8gbmVlZCB0byBidWlsZCBwcm9qZWN0aW9uCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaGpvaW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVIYXNoam9pbi5jCmluZGV4IGIyMTVlM2Y1OWEuLjllZmIyMzhkMWMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jCkBAIC02NTksOCArNjU5LDEyIEBAIEV4ZWNJbml0SGFz aEpvaW4oSGFzaEpvaW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWhhc2hO b2RlID0gKEhhc2ggKikgaW5uZXJQbGFuKG5vZGUpOwogCiAJb3V0ZXJQbGFuU3RhdGUoaGpzdGF0 ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJOb2RlLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVj UGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIGhqc3RhdGU7CiAJb3V0ZXJEZXNjID0g RXhlY0dldFJlc3VsdFR5cGUob3V0ZXJQbGFuU3RhdGUoaGpzdGF0ZSkpOwogCWlubmVyUGxhblN0 YXRlKGhqc3RhdGUpID0gRXhlY0luaXROb2RlKChQbGFuICopIGhhc2hOb2RlLCBlc3RhdGUsIGVm bGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIGhqc3Rh dGU7CiAJaW5uZXJEZXNjID0gRXhlY0dldFJlc3VsdFR5cGUoaW5uZXJQbGFuU3RhdGUoaGpzdGF0 ZSkpOwogCiAJLyoKQEAgLTc4MSw5ICs3ODUsMTIgQEAgRXhlY0VuZEhhc2hKb2luKEhhc2hKb2lu U3RhdGUgKm5vZGUpCiAJLyoKIAkgKiBjbGVhbiBvdXQgdGhlIHR1cGxlIHRhYmxlCiAJICovCi0J RXhlY0NsZWFyVHVwbGUobm9kZS0+anMucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKLQlFeGVjQ2xl YXJUdXBsZShub2RlLT5oal9PdXRlclR1cGxlU2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+ aGpfSGFzaFR1cGxlU2xvdCk7CisJaWYgKG5vZGUtPmpzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkK KwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+anMucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKKwlpZiAo bm9kZS0+aGpfT3V0ZXJUdXBsZVNsb3QpCisJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPmhqX091dGVy VHVwbGVTbG90KTsKKwlpZiAobm9kZS0+aGpfSGFzaFR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVw bGUobm9kZS0+aGpfSGFzaFR1cGxlU2xvdCk7CiAKIAkvKgogCSAqIGNsZWFuIHVwIHN1YnRyZWVz CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5jcmVtZW50YWxTb3J0LmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5jcmVtZW50YWxTb3J0LmMKaW5kZXggMTJiYzIy ZjMzYy4uNmIyZGE1NjA0NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUlu Y3JlbWVudGFsU29ydC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmNyZW1lbnRh bFNvcnQuYwpAQCAtMTA0MSw2ICsxMDQxLDggQEAgRXhlY0luaXRJbmNyZW1lbnRhbFNvcnQoSW5j cmVtZW50YWxTb3J0ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBub2Rl cyBtYXkgYmUgYWJsZSB0byBkbyBzb21ldGhpbmcgbW9yZSB1c2VmdWwuCiAJICovCiAJb3V0ZXJQ bGFuU3RhdGUoaW5jcnNvcnRzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBl c3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0 dXJuIGluY3Jzb3J0c3RhdGU7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgc2NhbiBzbG90IGFuZCB0 eXBlLgpAQCAtMTA4MCwxMiArMTA4MiwxNiBAQCBFeGVjRW5kSW5jcmVtZW50YWxTb3J0KEluY3Jl bWVudGFsU29ydFN0YXRlICpub2RlKQogCVNPX3ByaW50ZigiRXhlY0VuZEluY3JlbWVudGFsU29y dDogc2h1dHRpbmcgZG93biBzb3J0IG5vZGVcbiIpOwogCiAJLyogY2xlYW4gb3V0IHRoZSBzY2Fu IHR1cGxlICovCi0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CisJ aWYgKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpCisJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNz LnNzX1NjYW5UdXBsZVNsb3QpOwogCS8qIG11c3QgZHJvcCBwb2ludGVyIHRvIHNvcnQgcmVzdWx0 IHR1cGxlICovCi0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90 KTsKKwlpZiAobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KQorCQlFeGVjQ2xlYXJUdXBs ZShub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwogCS8qIG11c3QgZHJvcCBzdGFuZGFs b25lIHR1cGxlIHNsb3RzIGZyb20gb3V0ZXIgbm9kZSAqLwotCUV4ZWNEcm9wU2luZ2xlVHVwbGVU YWJsZVNsb3Qobm9kZS0+Z3JvdXBfcGl2b3QpOwotCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNs b3Qobm9kZS0+dHJhbnNmZXJfdHVwbGUpOworCWlmIChub2RlLT5ncm91cF9waXZvdCkKKwkJRXhl Y0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChub2RlLT5ncm91cF9waXZvdCk7CisJaWYgKG5vZGUt PnRyYW5zZmVyX3R1cGxlKQorCQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KG5vZGUtPnRy YW5zZmVyX3R1cGxlKTsKIAogCS8qCiAJICogUmVsZWFzZSB0dXBsZXNvcnQgcmVzb3VyY2VzLgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKaW5kZXggMGI0M2E5Yjk2OS4u YjYwYTA4NjQ2NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25s eXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jCkBA IC0zOTQsNyArMzk0LDggQEAgRXhlY0VuZEluZGV4T25seVNjYW4oSW5kZXhPbmx5U2NhblN0YXRl ICpub2RlKQogCSAqLwogCWlmIChub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpCiAJCUV4 ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7Ci0JRXhlY0NsZWFy VHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CisJaWYobm9kZS0+c3Muc3NfU2NhblR1 cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CiAK IAkvKgogCSAqIGNsb3NlIHRoZSBpbmRleCByZWxhdGlvbiAobm8tb3AgaWYgd2UgZGlkbid0IG9w ZW4gaXQpCkBAIC01MTIsNiArNTEzLDggQEAgRXhlY0luaXRJbmRleE9ubHlTY2FuKEluZGV4T25s eVNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIG9wZW4gdGhlIHNj YW4gcmVsYXRpb24KIAkgKi8KIAljdXJyZW50UmVsYXRpb24gPSBFeGVjT3BlblNjYW5SZWxhdGlv bihlc3RhdGUsIG5vZGUtPnNjYW4uc2NhbnJlbGlkLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5T dGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBpbmRleHN0YXRlOwogCiAJaW5kZXhzdGF0ZS0+ c3Muc3NfY3VycmVudFJlbGF0aW9uID0gY3VycmVudFJlbGF0aW9uOwogCWluZGV4c3RhdGUtPnNz LnNzX2N1cnJlbnRTY2FuRGVzYyA9IE5VTEw7CS8qIG5vIGhlYXAgc2NhbiBoZXJlICovCkBAIC01 NjUsNiArNTY4LDggQEAgRXhlY0luaXRJbmRleE9ubHlTY2FuKEluZGV4T25seVNjYW4gKm5vZGUs IEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCS8qIE9wZW4gdGhlIGluZGV4IHJlbGF0aW9u LiAqLwogCWxvY2ttb2RlID0gZXhlY19ydF9mZXRjaChub2RlLT5zY2FuLnNjYW5yZWxpZCwgZXN0 YXRlKS0+cmVsbG9ja21vZGU7CiAJaW5kZXhzdGF0ZS0+aW9zc19SZWxhdGlvbkRlc2MgPSBpbmRl eF9vcGVuKG5vZGUtPmluZGV4aWQsIGxvY2ttb2RlKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxp ZChlc3RhdGUpKQorCQlyZXR1cm4gaW5kZXhzdGF0ZTsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSBp bmRleC1zcGVjaWZpYyBzY2FuIHN0YXRlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlSW5kZXhzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMK aW5kZXggNDU0MGM3NzgxZC4uNjI4YzIzMzkxOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUluZGV4c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRl eHNjYW4uYwpAQCAtODA4LDcgKzgwOCw4IEBAIEV4ZWNFbmRJbmRleFNjYW4oSW5kZXhTY2FuU3Rh dGUgKm5vZGUpCiAJICovCiAJaWYgKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKIAkJ RXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKLQlFeGVjQ2xl YXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKKwlpZiAobm9kZS0+c3Muc3NfU2Nh blR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7 CiAKIAkvKgogCSAqIGNsb3NlIHRoZSBpbmRleCByZWxhdGlvbiAobm8tb3AgaWYgd2UgZGlkbid0 IG9wZW4gaXQpCkBAIC05MjUsNiArOTI2LDggQEAgRXhlY0luaXRJbmRleFNjYW4oSW5kZXhTY2Fu ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBvcGVuIHRoZSBzY2FuIHJl bGF0aW9uCiAJICovCiAJY3VycmVudFJlbGF0aW9uID0gRXhlY09wZW5TY2FuUmVsYXRpb24oZXN0 YXRlLCBub2RlLT5zY2FuLnNjYW5yZWxpZCwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxW YWxpZChlc3RhdGUpKQorCQlyZXR1cm4gaW5kZXhzdGF0ZTsKIAogCWluZGV4c3RhdGUtPnNzLnNz X2N1cnJlbnRSZWxhdGlvbiA9IGN1cnJlbnRSZWxhdGlvbjsKIAlpbmRleHN0YXRlLT5zcy5zc19j dXJyZW50U2NhbkRlc2MgPSBOVUxMOwkvKiBubyBoZWFwIHNjYW4gaGVyZSAqLwpAQCAtOTcwLDYg Kzk3Myw4IEBAIEV4ZWNJbml0SW5kZXhTY2FuKEluZGV4U2NhbiAqbm9kZSwgRVN0YXRlICplc3Rh dGUsIGludCBlZmxhZ3MpCiAJLyogT3BlbiB0aGUgaW5kZXggcmVsYXRpb24uICovCiAJbG9ja21v ZGUgPSBleGVjX3J0X2ZldGNoKG5vZGUtPnNjYW4uc2NhbnJlbGlkLCBlc3RhdGUpLT5yZWxsb2Nr bW9kZTsKIAlpbmRleHN0YXRlLT5pc3NfUmVsYXRpb25EZXNjID0gaW5kZXhfb3Blbihub2RlLT5p bmRleGlkLCBsb2NrbW9kZSk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJ cmV0dXJuIGluZGV4c3RhdGU7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgaW5kZXgtc3BlY2lmaWMg c2NhbiBzdGF0ZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxpbWl0LmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYwppbmRleCA0MjVmYmZjNDA1Li4yZmNi ZGU3NGVkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYwpAQCAtNDc2LDYgKzQ3Niw4IEBAIEV4 ZWNJbml0TGltaXQoTGltaXQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAq LwogCW91dGVyUGxhbiA9IG91dGVyUGxhbihub2RlKTsKIAlvdXRlclBsYW5TdGF0ZShsaW1pdHN0 YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4sIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4 ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gbGltaXRzdGF0ZTsKIAogCS8qCiAJ ICogaW5pdGlhbGl6ZSBjaGlsZCBleHByZXNzaW9ucwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9ja1Jv d3MuYwppbmRleCA0MDc0MTRmYzBjLi4zYThhYTJiNWE0IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlTG9ja1Jvd3MuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TG9ja1Jvd3MuYwpAQCAtMzIzLDYgKzMyMyw4IEBAIEV4ZWNJbml0TG9ja1Jvd3MoTG9ja1Jvd3Mg Km5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIHRoZW4gaW5pdGlhbGl6ZSBv dXRlciBwbGFuCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUobHJzdGF0ZSkgPSBFeGVjSW5pdE5vZGUo b3V0ZXJQbGFuLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0 YXRlKSkKKwkJcmV0dXJuIGxyc3RhdGU7CiAKIAkvKiBub2RlIHJldHVybnMgdW5tb2RpZmllZCBz bG90cyBmcm9tIHRoZSBvdXRlciBwbGFuICovCiAJbHJzdGF0ZS0+cHMucmVzdWx0b3Bzc2V0ID0g dHJ1ZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNYXRlcmlhbC5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1hdGVyaWFsLmMKaW5kZXggMDk2MzI2NzhiMC4uZjE0 NmViYjFkNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1hdGVyaWFsLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1hdGVyaWFsLmMKQEAgLTIxNCw2ICsyMTQs OCBAQCBFeGVjSW5pdE1hdGVyaWFsKE1hdGVyaWFsICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50 IGVmbGFncykKIAogCW91dGVyUGxhbiA9IG91dGVyUGxhbihub2RlKTsKIAlvdXRlclBsYW5TdGF0 ZShtYXRzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuLCBlc3RhdGUsIGVmbGFncyk7CisJ aWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIG1hdHN0YXRlOwogCiAJ LyoKIAkgKiBJbml0aWFsaXplIHJlc3VsdCB0eXBlIGFuZCBzbG90LiBObyBuZWVkIHRvIGluaXRp YWxpemUgcHJvamVjdGlvbiBpbmZvCkBAIC0yNDIsNyArMjQ0LDggQEAgRXhlY0VuZE1hdGVyaWFs KE1hdGVyaWFsU3RhdGUgKm5vZGUpCiAJLyoKIAkgKiBjbGVhbiBvdXQgdGhlIHR1cGxlIHRhYmxl CiAJICovCi0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CisJaWYg KG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpCisJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNz X1NjYW5UdXBsZVNsb3QpOwogCiAJLyoKIAkgKiBSZWxlYXNlIHR1cGxlc3RvcmUgcmVzb3VyY2Vz CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVtb2l6ZS5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUuYwppbmRleCA3NGY3ZDIxYmM4Li5hNmRmNDNiYTE5 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVtb2l6ZS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMKQEAgLTkzMSw2ICs5MzEsOCBAQCBFeGVj SW5pdE1lbW9pemUoTWVtb2l6ZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAK IAlvdXRlck5vZGUgPSBvdXRlclBsYW4obm9kZSk7CiAJb3V0ZXJQbGFuU3RhdGUobXN0YXRlKSA9 IEV4ZWNJbml0Tm9kZShvdXRlck5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFu U3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gbXN0YXRlOwogCiAJLyoKIAkgKiBJbml0aWFs aXplIHJldHVybiBzbG90IGFuZCB0eXBlLiBObyBuZWVkIHRvIGluaXRpYWxpemUgcHJvamVjdGlv biBpbmZvCkBAIC0xMDM2LDYgKzEwMzgsNyBAQCBFeGVjRW5kTWVtb2l6ZShNZW1vaXplU3RhdGUg Km5vZGUpCiB7CiAjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORwogCS8qIFZhbGlkYXRlIHRoZSBt ZW1vcnkgYWNjb3VudGluZyBjb2RlIGlzIGNvcnJlY3QgaW4gYXNzZXJ0IGJ1aWxkcy4gKi8KKwlp ZiAobm9kZS0+aGFzaHRhYmxlKQogCXsKIAkJaW50CQkJY291bnQ7CiAJCXVpbnQ2NAkJbWVtID0g MDsKQEAgLTEwODIsMTEgKzEwODUsMTQgQEAgRXhlY0VuZE1lbW9pemUoTWVtb2l6ZVN0YXRlICpu b2RlKQogCX0KIAogCS8qIFJlbW92ZSB0aGUgY2FjaGUgY29udGV4dCAqLwotCU1lbW9yeUNvbnRl eHREZWxldGUobm9kZS0+dGFibGVDb250ZXh0KTsKKwlpZiAobm9kZS0+dGFibGVDb250ZXh0KQor CQlNZW1vcnlDb250ZXh0RGVsZXRlKG5vZGUtPnRhYmxlQ29udGV4dCk7CiAKLQlFeGVjQ2xlYXJU dXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKKwlpZiAobm9kZS0+c3Muc3NfU2NhblR1 cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CiAJ LyogbXVzdCBkcm9wIHBvaW50ZXIgdG8gY2FjaGUgcmVzdWx0IHR1cGxlICovCi0JRXhlY0NsZWFy VHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKKwlpZiAobm9kZS0+c3MucHMu cHNfUmVzdWx0VHVwbGVTbG90KQorCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5wcy5wc19SZXN1 bHRUdXBsZVNsb3QpOwogCiAJLyoKIAkgKiBmcmVlIGV4cHJjb250ZXh0CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVNZXJnZUFwcGVuZC5jCmluZGV4IDM5OWIzOWM1OTguLjQwYmJhMzU0OTkgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCkBAIC02NSw5ICs2NSwxMCBAQCBNZXJn ZUFwcGVuZFN0YXRlICoKIEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVT dGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogewogCU1lcmdlQXBwZW5kU3RhdGUgKm1lcmdlc3Rh dGUgPSBtYWtlTm9kZShNZXJnZUFwcGVuZFN0YXRlKTsKLQlQbGFuU3RhdGUgKiptZXJnZXBsYW5z dGF0ZXM7CisJUGxhblN0YXRlICoqbWVyZ2VwbGFuc3RhdGVzID0gTlVMTDsKIAlCaXRtYXBzZXQg ICp2YWxpZHN1YnBsYW5zOwogCWludAkJCW5wbGFuczsKKwlpbnQJCQluaW5pdGVkID0gMDsKIAlp bnQJCQlpLAogCQkJCWo7CiAKQEAgLTgxLDYgKzgyLDE1IEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQo TWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCW1lcmdlc3Rh dGUtPnBzLnN0YXRlID0gZXN0YXRlOwogCW1lcmdlc3RhdGUtPnBzLkV4ZWNQcm9jTm9kZSA9IEV4 ZWNNZXJnZUFwcGVuZDsKIAorCS8qCisJICogTG9jayBub24tbGVhZiBwYXJ0aXRpb25zLiAgSW4g dGhlIHBydW5pbmcgY2FzZSwgc29tZSBvZiB0aGVzZSBsb2NrcworCSAqIHdpbGwgYmUgcmV0YWtl biB3aGVuIHRoZSBwYXJ0aXRpb24gd2lsbCBiZSBvcGVuZWQgZm9yIHBydW5pbmcsIGJ1dCBpdAor CSAqIGRvZXMgbm90IHNlZW0gd29ydGh3aGlsZSB0byBzcGVuZCBjeWNsZXMgdG8gZmlsdGVyIHRo b3NlIG91dCBoZXJlLgorCSAqLworCUV4ZWNMb2NrQXBwZW5kTm9uTGVhZlJlbGF0aW9ucyhlc3Rh dGUsIG5vZGUtPmFsbHBhcnRyZWxpZHMpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0 ZSkpCisJCWdvdG8gZWFybHlfZXhpdDsKKwogCS8qIElmIHJ1bi10aW1lIHBhcnRpdGlvbiBwcnVu aW5nIGlzIGVuYWJsZWQsIHRoZW4gc2V0IHRoYXQgdXAgbm93ICovCiAJaWYgKG5vZGUtPnBhcnRf cHJ1bmVfaW5kZXggPj0gMCkKIAl7CkBAIC05Niw2ICsxMDYsOCBAQCBFeGVjSW5pdE1lcmdlQXBw ZW5kKE1lcmdlQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJCQkJ CQkJCQkJICBub2RlLT5wYXJ0X3BydW5lX2luZGV4LAogCQkJCQkJCQkJCQkgIG5vZGUtPmFwcHJl bGlkcywKIAkJCQkJCQkJCQkJICAmdmFsaWRzdWJwbGFucyk7CisJCWlmICghRXhlY1BsYW5TdGls bFZhbGlkKGVzdGF0ZSkpCisJCQlyZXR1cm4gbWVyZ2VzdGF0ZTsKIAkJbWVyZ2VzdGF0ZS0+bXNf cHJ1bmVfc3RhdGUgPSBwcnVuZXN0YXRlOwogCQlucGxhbnMgPSBibXNfbnVtX21lbWJlcnModmFs aWRzdWJwbGFucyk7CiAKQEAgLTEyMiw4ICsxMzQsNiBAQCBFeGVjSW5pdE1lcmdlQXBwZW5kKE1l cmdlQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAl9CiAKIAltZXJn ZXBsYW5zdGF0ZXMgPSAoUGxhblN0YXRlICoqKSBwYWxsb2MobnBsYW5zICogc2l6ZW9mKFBsYW5T dGF0ZSAqKSk7Ci0JbWVyZ2VzdGF0ZS0+bWVyZ2VwbGFucyA9IG1lcmdlcGxhbnN0YXRlczsKLQlt ZXJnZXN0YXRlLT5tc19ucGxhbnMgPSBucGxhbnM7CiAKIAltZXJnZXN0YXRlLT5tc19zbG90cyA9 IChUdXBsZVRhYmxlU2xvdCAqKikgcGFsbG9jMChzaXplb2YoVHVwbGVUYWJsZVNsb3QgKikgKiBu cGxhbnMpOwogCW1lcmdlc3RhdGUtPm1zX2hlYXAgPSBiaW5hcnloZWFwX2FsbG9jYXRlKG5wbGFu cywgaGVhcF9jb21wYXJlX3Nsb3RzLApAQCAtMTUyLDYgKzE2Miw5IEBAIEV4ZWNJbml0TWVyZ2VB cHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQlQ bGFuCSAgICppbml0Tm9kZSA9IChQbGFuICopIGxpc3RfbnRoKG5vZGUtPm1lcmdlcGxhbnMsIGkp OwogCiAJCW1lcmdlcGxhbnN0YXRlc1tqKytdID0gRXhlY0luaXROb2RlKGluaXROb2RlLCBlc3Rh dGUsIGVmbGFncyk7CisJCW5pbml0ZWQrKzsKKwkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0 YXRlKSkKKwkJCWdvdG8gZWFybHlfZXhpdDsKIAl9CiAKIAltZXJnZXN0YXRlLT5wcy5wc19Qcm9q SW5mbyA9IE5VTEw7CkBAIC0xODgsNiArMjAxLDEwIEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVy Z2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqLwogCW1lcmdl c3RhdGUtPm1zX2luaXRpYWxpemVkID0gZmFsc2U7CiAKK2Vhcmx5X2V4aXQ6CisJbWVyZ2VzdGF0 ZS0+bWVyZ2VwbGFucyA9IG1lcmdlcGxhbnN0YXRlczsKKwltZXJnZXN0YXRlLT5tc19ucGxhbnMg PSBuaW5pdGVkOworCiAJcmV0dXJuIG1lcmdlc3RhdGU7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVNZXJnZWpvaW4uYwppbmRleCA4MDlhYTIxNWM2Li45NjhiZTA1NTY4IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZU1lcmdlam9pbi5jCkBAIC0xNDgyLDExICsxNDgyLDE1IEBAIEV4ZWNJbml0TWVy Z2VKb2luKE1lcmdlSm9pbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJbWVy Z2VzdGF0ZS0+bWpfU2tpcE1hcmtSZXN0b3JlID0gbm9kZS0+c2tpcF9tYXJrX3Jlc3RvcmU7CiAK IAlvdXRlclBsYW5TdGF0ZShtZXJnZXN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9k ZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQor CQlyZXR1cm4gbWVyZ2VzdGF0ZTsKIAlvdXRlckRlc2MgPSBFeGVjR2V0UmVzdWx0VHlwZShvdXRl clBsYW5TdGF0ZShtZXJnZXN0YXRlKSk7CiAJaW5uZXJQbGFuU3RhdGUobWVyZ2VzdGF0ZSkgPSBF eGVjSW5pdE5vZGUoaW5uZXJQbGFuKG5vZGUpLCBlc3RhdGUsCiAJCQkJCQkJCQkJCSAgbWVyZ2Vz dGF0ZS0+bWpfU2tpcE1hcmtSZXN0b3JlID8KIAkJCQkJCQkJCQkJICBlZmxhZ3MgOgogCQkJCQkJ CQkJCQkgIChlZmxhZ3MgfCBFWEVDX0ZMQUdfTUFSSykpOworCWlmICghRXhlY1BsYW5TdGlsbFZh bGlkKGVzdGF0ZSkpCisJCXJldHVybiBtZXJnZXN0YXRlOwogCWlubmVyRGVzYyA9IEV4ZWNHZXRS ZXN1bHRUeXBlKGlubmVyUGxhblN0YXRlKG1lcmdlc3RhdGUpKTsKIAogCS8qCkBAIC0xNjQyLDgg KzE2NDYsMTAgQEAgRXhlY0VuZE1lcmdlSm9pbihNZXJnZUpvaW5TdGF0ZSAqbm9kZSkKIAkvKgog CSAqIGNsZWFuIG91dCB0aGUgdHVwbGUgdGFibGUKIAkgKi8KLQlFeGVjQ2xlYXJUdXBsZShub2Rl LT5qcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPm1qX01h cmtlZFR1cGxlU2xvdCk7CisJaWYgKG5vZGUtPmpzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKKwkJ RXhlY0NsZWFyVHVwbGUobm9kZS0+anMucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKKwlpZiAobm9k ZS0+bWpfTWFya2VkVHVwbGVTbG90KQorCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5tal9NYXJrZWRU dXBsZVNsb3QpOwogCiAJLyoKIAkgKiBzaHV0IGRvd24gdGhlIHN1YnBsYW5zCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCmluZGV4IDNmYTJiOTMwYTUuLjdjZGJlN2Y1ZjUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCkBAIC0zOTE5LDYgKzM5MTksNyBA QCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwg aW50IGVmbGFncykKIAlQbGFuCSAgICpzdWJwbGFuID0gb3V0ZXJQbGFuKG5vZGUpOwogCUNtZFR5 cGUJCW9wZXJhdGlvbiA9IG5vZGUtPm9wZXJhdGlvbjsKIAlpbnQJCQlucmVscyA9IGxpc3RfbGVu Z3RoKG5vZGUtPnJlc3VsdFJlbGF0aW9ucyk7CisJaW50CQkJbmluaXRlZCA9IDA7CiAJUmVzdWx0 UmVsSW5mbyAqcmVzdWx0UmVsSW5mbzsKIAlMaXN0CSAgICphcm93bWFya3M7CiAJTGlzdENlbGwg ICAqbDsKQEAgLTM5NDAsNyArMzk0MSw2IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFi bGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCW10c3RhdGUtPmNhblNldFRh ZyA9IG5vZGUtPmNhblNldFRhZzsKIAltdHN0YXRlLT5tdF9kb25lID0gZmFsc2U7CiAKLQltdHN0 YXRlLT5tdF9ucmVscyA9IG5yZWxzOwogCW10c3RhdGUtPnJlc3VsdFJlbEluZm8gPSAoUmVzdWx0 UmVsSW5mbyAqKQogCQlwYWxsb2MobnJlbHMgKiBzaXplb2YoUmVzdWx0UmVsSW5mbykpOwogCkBA IC0zOTc1LDYgKzM5NzUsOSBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2Rl LCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJCQkJCQkgICBsaW5pdGlhbF9pbnQobm9k ZS0+cmVzdWx0UmVsYXRpb25zKSk7CiAJfQogCisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0 YXRlKSkKKwkJZ290byBlYXJseV9leGl0OworCiAJLyogc2V0IHVwIGVwcXN0YXRlIHdpdGggZHVt bXkgc3VicGxhbiBkYXRhIGZvciB0aGUgbW9tZW50ICovCiAJRXZhbFBsYW5RdWFsSW5pdCgmbXRz dGF0ZS0+bXRfZXBxc3RhdGUsIGVzdGF0ZSwgTlVMTCwgTklMLCBub2RlLT5lcHFQYXJhbSk7CiAJ bXRzdGF0ZS0+ZmlyZUJTVHJpZ2dlcnMgPSB0cnVlOwpAQCAtNDAwMSw2ICs0MDA0LDggQEAgRXhl Y0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBl ZmxhZ3MpCiAJCWlmIChyZXN1bHRSZWxJbmZvICE9IG10c3RhdGUtPnJvb3RSZXN1bHRSZWxJbmZv KQogCQl7CiAJCQlFeGVjSW5pdFJlc3VsdFJlbGF0aW9uKGVzdGF0ZSwgcmVzdWx0UmVsSW5mbywg cmVzdWx0UmVsYXRpb24pOworCQkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJ CQlnb3RvIGVhcmx5X2V4aXQ7CiAKIAkJCS8qCiAJCQkgKiBGb3IgY2hpbGQgcmVzdWx0IHJlbGF0 aW9ucywgc3RvcmUgdGhlIHJvb3QgcmVzdWx0IHJlbGF0aW9uCkBAIC00MDI4LDExICs0MDMzLDEz IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRl LCBpbnQgZWZsYWdzKQogCSAqIE5vdyB3ZSBtYXkgaW5pdGlhbGl6ZSB0aGUgc3VicGxhbi4KIAkg Ki8KIAlvdXRlclBsYW5TdGF0ZShtdHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShzdWJwbGFuLCBlc3Rh dGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJZ290byBl YXJseV9leGl0OwogCiAJLyoKIAkgKiBEbyBhZGRpdGlvbmFsIHBlci1yZXN1bHQtcmVsYXRpb24g aW5pdGlhbGl6YXRpb24uCiAJICovCi0JZm9yIChpID0gMDsgaSA8IG5yZWxzOyBpKyspCisJZm9y IChpID0gMDsgaSA8IG5yZWxzOyBpKyssIG5pbml0ZWQrKykKIAl7CiAJCXJlc3VsdFJlbEluZm8g PSAmbXRzdGF0ZS0+cmVzdWx0UmVsSW5mb1tpXTsKIApAQCAtNDM4MSw2ICs0Mzg4LDggQEAgRXhl Y0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBl ZmxhZ3MpCiAJCWVzdGF0ZS0+ZXNfYXV4bW9kaWZ5dGFibGVzID0gbGNvbnMobXRzdGF0ZSwKIAkJ CQkJCQkJCQkgICBlc3RhdGUtPmVzX2F1eG1vZGlmeXRhYmxlcyk7CiAKK2Vhcmx5X2V4aXQ6CisJ bXRzdGF0ZS0+bXRfbnJlbHMgPSBuaW5pdGVkOwogCXJldHVybiBtdHN0YXRlOwogfQogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTmFtZWR0dXBsZXN0b3Jlc2Nhbi5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5hbWVkdHVwbGVzdG9yZXNjYW4uYwppbmRleCA0Njgz MmFkODJmLi4xZjkyYzQzZDNiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TmFtZWR0dXBsZXN0b3Jlc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVOYW1l ZHR1cGxlc3RvcmVzY2FuLmMKQEAgLTE3NCw3ICsxNzQsOCBAQCBFeGVjRW5kTmFtZWRUdXBsZXN0 b3JlU2NhbihOYW1lZFR1cGxlc3RvcmVTY2FuU3RhdGUgKm5vZGUpCiAJICovCiAJaWYgKG5vZGUt PnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKIAkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMu cHNfUmVzdWx0VHVwbGVTbG90KTsKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVw bGVTbG90KTsKKwlpZiAobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVw bGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVOZXN0bG9vcC5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZU5lc3Rsb29wLmMKaW5kZXggYjNkNTJlNjllYy4uZGVkYTBjMjU1OSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMKQEAgLTI5NSwxMSArMjk1LDE1IEBAIEV4ZWNJbml0 TmVzdExvb3AoTmVzdExvb3AgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAq IHZhbHVlcy4KIAkgKi8KIAlvdXRlclBsYW5TdGF0ZShubHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShv dXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxp ZChlc3RhdGUpKQorCQlyZXR1cm4gbmxzdGF0ZTsKIAlpZiAobm9kZS0+bmVzdFBhcmFtcyA9PSBO SUwpCiAJCWVmbGFncyB8PSBFWEVDX0ZMQUdfUkVXSU5EOwogCWVsc2UKIAkJZWZsYWdzICY9IH5F WEVDX0ZMQUdfUkVXSU5EOwogCWlubmVyUGxhblN0YXRlKG5sc3RhdGUpID0gRXhlY0luaXROb2Rl KGlubmVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZh bGlkKGVzdGF0ZSkpCisJCXJldHVybiBubHN0YXRlOwogCiAJLyoKIAkgKiBJbml0aWFsaXplIHJl c3VsdCBzbG90LCB0eXBlIGFuZCBwcm9qZWN0aW9uLgpAQCAtMzcyLDcgKzM3Niw4IEBAIEV4ZWNF bmROZXN0TG9vcChOZXN0TG9vcFN0YXRlICpub2RlKQogCS8qCiAJICogY2xlYW4gb3V0IHRoZSB0 dXBsZSB0YWJsZQogCSAqLwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPmpzLnBzLnBzX1Jlc3VsdFR1 cGxlU2xvdCk7CisJaWYgKG5vZGUtPmpzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKKwkJRXhlY0Ns ZWFyVHVwbGUobm9kZS0+anMucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKIAogCS8qCiAJICogY2xv c2UgZG93biBzdWJwbGFucwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVBy b2plY3RTZXQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVQcm9qZWN0U2V0LmMKaW5kZXgg ZjZmZjNkYzQ0Yy4uODVkMjBjNDY4MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVByb2plY3RTZXQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNl dC5jCkBAIC0yNDcsNiArMjQ3LDggQEAgRXhlY0luaXRQcm9qZWN0U2V0KFByb2plY3RTZXQgKm5v ZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIGluaXRpYWxpemUgY2hpbGQgbm9k ZXMKIAkgKi8KIAlvdXRlclBsYW5TdGF0ZShzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFu KG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRl KSkKKwkJcmV0dXJuIHN0YXRlOwogCiAJLyoKIAkgKiB3ZSBkb24ndCB1c2UgaW5uZXIgcGxhbgpA QCAtMzI4LDcgKzMzMCw4IEBAIEV4ZWNFbmRQcm9qZWN0U2V0KFByb2plY3RTZXRTdGF0ZSAqbm9k ZSkKIAkvKgogCSAqIGNsZWFuIG91dCB0aGUgdHVwbGUgdGFibGUKIAkgKi8KLQlFeGVjQ2xlYXJU dXBsZShub2RlLT5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOworCWlmIChub2RlLT5wcy5wc19SZXN1 bHRUdXBsZVNsb3QpCisJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnBzLnBzX1Jlc3VsdFR1cGxlU2xv dCk7CiAKIAkvKgogCSAqIHNodXQgZG93biBzdWJwbGFucwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlUmVjdXJzaXZldW5pb24uYwppbmRleCBlNzgxMDAzOTM0Li45NjdmZTRmMjg3IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24uYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24uYwpAQCAtMjQ0LDcgKzI0NCwxMSBA QCBFeGVjSW5pdFJlY3Vyc2l2ZVVuaW9uKFJlY3Vyc2l2ZVVuaW9uICpub2RlLCBFU3RhdGUgKmVz dGF0ZSwgaW50IGVmbGFncykKIAkgKiBpbml0aWFsaXplIGNoaWxkIG5vZGVzCiAJICovCiAJb3V0 ZXJQbGFuU3RhdGUocnVzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3Rh dGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJu IHJ1c3RhdGU7CiAJaW5uZXJQbGFuU3RhdGUocnVzdGF0ZSkgPSBFeGVjSW5pdE5vZGUoaW5uZXJQ bGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0 YXRlKSkKKwkJcmV0dXJuIHJ1c3RhdGU7CiAKIAkvKgogCSAqIElmIGhhc2hpbmcsIHByZWNvbXB1 dGUgZm1nciBsb29rdXAgZGF0YSBmb3IgaW5uZXIgbG9vcCwgYW5kIGNyZWF0ZSB0aGUKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1bHQuYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVSZXN1bHQuYwppbmRleCA0MjE5NzEyZDMwLi5jNTQ5YjY4NGEzIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVzdWx0LmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVJlc3VsdC5jCkBAIC0yMDgsNiArMjA4LDggQEAgRXhlY0luaXRSZXN1bHQo UmVzdWx0ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBpbml0aWFsaXpl IGNoaWxkIG5vZGVzCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUocmVzc3RhdGUpID0gRXhlY0luaXRO b2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGls bFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiByZXNzdGF0ZTsKIAogCS8qCiAJICogd2UgZG9uJ3Qg dXNlIGlubmVyIHBsYW4KQEAgLTI0OCw3ICsyNTAsOCBAQCBFeGVjRW5kUmVzdWx0KFJlc3VsdFN0 YXRlICpub2RlKQogCS8qCiAJICogY2xlYW4gb3V0IHRoZSB0dXBsZSB0YWJsZQogCSAqLwotCUV4 ZWNDbGVhclR1cGxlKG5vZGUtPnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7CisJaWYgKG5vZGUtPnBz LnBzX1Jlc3VsdFR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+cHMucHNfUmVzdWx0 VHVwbGVTbG90KTsKIAogCS8qCiAJICogc2h1dCBkb3duIHN1YnBsYW5zCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2FtcGxlc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVNhbXBsZXNjYW4uYwppbmRleCBkN2UyMmIxZGJiLi5iM2JjOWIxZjc3IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2FtcGxlc2Nhbi5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVTYW1wbGVzY2FuLmMKQEAgLTEyNSw2ICsxMjUsOCBAQCBFeGVjSW5p dFNhbXBsZVNjYW4oU2FtcGxlU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3Mp CiAJCUV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0ZSwKIAkJCQkJCQkgbm9kZS0+c2Nhbi5zY2Fu cmVsaWQsCiAJCQkJCQkJIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRl KSkKKwkJcmV0dXJuIHNjYW5zdGF0ZTsKIAogCS8qIHdlIHdvbid0IHNldCB1cCB0aGUgSGVhcFNj YW5EZXNjIHRpbGwgbGF0ZXIgKi8KIAlzY2Fuc3RhdGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9 IE5VTEw7CkBAIC0xOTgsNyArMjAwLDggQEAgRXhlY0VuZFNhbXBsZVNjYW4oU2FtcGxlU2NhblN0 YXRlICpub2RlKQogCSAqLwogCWlmIChub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpCiAJ CUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7Ci0JRXhlY0Ns ZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CisJaWYgKG5vZGUtPnNzLnNzX1Nj YW5UdXBsZVNsb3QpCisJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3Qp OwogCiAJLyoKIAkgKiBjbG9zZSBoZWFwIHNjYW4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVTZXFzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5j CmluZGV4IDRkYTBmMjhmN2IuLmU3Y2ExOWVlNGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVTZXFzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNj YW4uYwpAQCAtMTUzLDYgKzE1Myw4IEBAIEV4ZWNJbml0U2VxU2NhbihTZXFTY2FuICpub2RlLCBF U3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJRXhlY09wZW5TY2FuUmVsYXRpb24oZXN0YXRl LAogCQkJCQkJCSBub2RlLT5zY2FuLnNjYW5yZWxpZCwKIAkJCQkJCQkgZWZsYWdzKTsKKwlpZiAo IUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gc2NhbnN0YXRlOwogCiAJLyog YW5kIGNyZWF0ZSBzbG90IHdpdGggdGhlIGFwcHJvcHJpYXRlIHJvd3R5cGUgKi8KIAlFeGVjSW5p dFNjYW5UdXBsZVNsb3QoZXN0YXRlLCAmc2NhbnN0YXRlLT5zcywKQEAgLTIwMCw3ICsyMDIsOCBA QCBFeGVjRW5kU2VxU2NhbihTZXFTY2FuU3RhdGUgKm5vZGUpCiAJICovCiAJaWYgKG5vZGUtPnNz LnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKIAkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNf UmVzdWx0VHVwbGVTbG90KTsKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVT bG90KTsKKwlpZiAobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUo bm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CiAKIAkvKgogCSAqIGNsb3NlIGhlYXAgc2Nhbgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNldE9wLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlU2V0T3AuYwppbmRleCA0YmMyNDA2Yjg5Li45NTk1MGE1YzIwIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0T3AuYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlU2V0T3AuYwpAQCAtNTI4LDYgKzUyOCw4IEBAIEV4ZWNJbml0U2V0T3Ao U2V0T3AgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWlmIChub2RlLT5zdHJh dGVneSA9PSBTRVRPUF9IQVNIRUQpCiAJCWVmbGFncyAmPSB+RVhFQ19GTEFHX1JFV0lORDsKIAlv dXRlclBsYW5TdGF0ZShzZXRvcHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSks IGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQly ZXR1cm4gc2V0b3BzdGF0ZTsKIAlvdXRlckRlc2MgPSBFeGVjR2V0UmVzdWx0VHlwZShvdXRlclBs YW5TdGF0ZShzZXRvcHN0YXRlKSk7CiAKIAkvKgpAQCAtNTgzLDcgKzU4NSw4IEBAIHZvaWQKIEV4 ZWNFbmRTZXRPcChTZXRPcFN0YXRlICpub2RlKQogewogCS8qIGNsZWFuIHVwIHR1cGxlIHRhYmxl ICovCi0JRXhlY0NsZWFyVHVwbGUobm9kZS0+cHMucHNfUmVzdWx0VHVwbGVTbG90KTsKKwlpZiAo bm9kZS0+cHMucHNfUmVzdWx0VHVwbGVTbG90KQorCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5wcy5w c19SZXN1bHRUdXBsZVNsb3QpOwogCiAJLyogZnJlZSBzdWJzaWRpYXJ5IHN0dWZmIGluY2x1ZGlu ZyBoYXNodGFibGUgKi8KIAlpZiAobm9kZS0+dGFibGVDb250ZXh0KQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVT b3J0LmMKaW5kZXggYzZjNzJjNmU2Ny4uODlmZWY4NmFiYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVNvcnQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU29y dC5jCkBAIC0yNjMsNiArMjYzLDggQEAgRXhlY0luaXRTb3J0KFNvcnQgKm5vZGUsIEVTdGF0ZSAq ZXN0YXRlLCBpbnQgZWZsYWdzKQogCWVmbGFncyAmPSB+KEVYRUNfRkxBR19SRVdJTkQgfCBFWEVD X0ZMQUdfQkFDS1dBUkQgfCBFWEVDX0ZMQUdfTUFSSyk7CiAKIAlvdXRlclBsYW5TdGF0ZShzb3J0 c3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOwor CWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBzb3J0c3RhdGU7CiAK IAkvKgogCSAqIEluaXRpYWxpemUgc2NhbiBzbG90IGFuZCB0eXBlLgpAQCAtMzA2LDkgKzMwOCwx MSBAQCBFeGVjRW5kU29ydChTb3J0U3RhdGUgKm5vZGUpCiAJLyoKIAkgKiBjbGVhbiBvdXQgdGhl IHR1cGxlIHRhYmxlCiAJICovCi0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxl U2xvdCk7CisJaWYgKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpCisJCUV4ZWNDbGVhclR1cGxl KG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwogCS8qIG11c3QgZHJvcCBwb2ludGVyIHRvIHNv cnQgcmVzdWx0IHR1cGxlICovCi0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0 VHVwbGVTbG90KTsKKwlpZiAobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KQorCQlFeGVj Q2xlYXJUdXBsZShub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwogCiAJLyoKIAkgKiBS ZWxlYXNlIHR1cGxlc29ydCByZXNvdXJjZXMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVTdWJxdWVyeXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVy eXNjYW4uYwppbmRleCA0MjQ3MWJmYzA0Li45YjhjZGRjODlmIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlU3VicXVlcnlzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVN1YnF1ZXJ5c2Nhbi5jCkBAIC0xMjQsNiArMTI0LDggQEAgRXhlY0luaXRTdWJxdWVy eVNjYW4oU3VicXVlcnlTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkg KiBpbml0aWFsaXplIHN1YnF1ZXJ5CiAJICovCiAJc3VicXVlcnlzdGF0ZS0+c3VicGxhbiA9IEV4 ZWNJbml0Tm9kZShub2RlLT5zdWJwbGFuLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxh blN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIHN1YnF1ZXJ5c3RhdGU7CiAKIAkvKgogCSAq IEluaXRpYWxpemUgc2NhbiBzbG90IGFuZCB0eXBlIChuZWVkZWQgYnkgRXhlY0Fzc2lnblNjYW5Q cm9qZWN0aW9uSW5mbykKQEAgLTE3Nyw3ICsxNzksOCBAQCBFeGVjRW5kU3VicXVlcnlTY2FuKFN1 YnF1ZXJ5U2NhblN0YXRlICpub2RlKQogCSAqLwogCWlmIChub2RlLT5zcy5wcy5wc19SZXN1bHRU dXBsZVNsb3QpCiAJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xv dCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CisJaWYgKG5v ZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpCisJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1Nj YW5UdXBsZVNsb3QpOwogCiAJLyoKIAkgKiBjbG9zZSBkb3duIHN1YnF1ZXJ5CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGFibGVGdW5jc2Nhbi5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVRhYmxlRnVuY3NjYW4uYwppbmRleCAwYzZjOTEyNzc4Li5kNzUzNjk1M2Yx IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGFibGVGdW5jc2Nhbi5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUYWJsZUZ1bmNzY2FuLmMKQEAgLTIyMyw3ICsy MjMsOCBAQCBFeGVjRW5kVGFibGVGdW5jU2NhbihUYWJsZUZ1bmNTY2FuU3RhdGUgKm5vZGUpCiAJ ICovCiAJaWYgKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKIAkJRXhlY0NsZWFyVHVw bGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKLQlFeGVjQ2xlYXJUdXBsZShub2Rl LT5zcy5zc19TY2FuVHVwbGVTbG90KTsKKwlpZiAobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCkK KwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CiAKIAkvKgogCSAq IFJlbGVhc2UgdHVwbGVzdG9yZSByZXNvdXJjZXMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRy YW5nZXNjYW4uYwppbmRleCAyMTI0YzU1ZWY1Li4xYWU0NTFkN2E2IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVRpZHJhbmdlc2Nhbi5jCkBAIC0zNDIsNyArMzQyLDggQEAgRXhlY0VuZFRpZFJh bmdlU2NhbihUaWRSYW5nZVNjYW5TdGF0ZSAqbm9kZSkKIAkgKi8KIAlpZiAobm9kZS0+c3MucHMu cHNfUmVzdWx0VHVwbGVTbG90KQogCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5wcy5wc19SZXN1 bHRUdXBsZVNsb3QpOwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3Qp OworCWlmIChub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KQorCQlFeGVjQ2xlYXJUdXBsZShub2Rl LT5zcy5zc19TY2FuVHVwbGVTbG90KTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzg2LDYgKzM4Nyw4 IEBAIEV4ZWNJbml0VGlkUmFuZ2VTY2FuKFRpZFJhbmdlU2NhbiAqbm9kZSwgRVN0YXRlICplc3Rh dGUsIGludCBlZmxhZ3MpCiAJICogb3BlbiB0aGUgc2NhbiByZWxhdGlvbgogCSAqLwogCWN1cnJl bnRSZWxhdGlvbiA9IEV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0ZSwgbm9kZS0+c2Nhbi5zY2Fu cmVsaWQsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0 dXJuIHRpZHJhbmdlc3RhdGU7CiAKIAl0aWRyYW5nZXN0YXRlLT5zcy5zc19jdXJyZW50UmVsYXRp b24gPSBjdXJyZW50UmVsYXRpb247CiAJdGlkcmFuZ2VzdGF0ZS0+c3Muc3NfY3VycmVudFNjYW5E ZXNjID0gTlVMTDsJLyogbm8gdGFibGUgc2NhbiBoZXJlICovCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRp ZHNjYW4uYwppbmRleCA4NjJiZDAzMzBiLi45ZmU3NmIxYzYwIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVUaWRzY2FuLmMKQEAgLTQ4Myw3ICs0ODMsOCBAQCBFeGVjRW5kVGlkU2NhbihUaWRTY2FuU3Rh dGUgKm5vZGUpCiAJICovCiAJaWYgKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKIAkJ RXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKLQlFeGVjQ2xl YXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKKwlpZiAobm9kZS0+c3Muc3NfU2Nh blR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7 CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KQEAgLTUyOSw2ICs1MzAsOCBAQCBFeGVjSW5pdFRpZFNjYW4oVGlk U2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogb3BlbiB0aGUgc2Nh biByZWxhdGlvbgogCSAqLwogCWN1cnJlbnRSZWxhdGlvbiA9IEV4ZWNPcGVuU2NhblJlbGF0aW9u KGVzdGF0ZSwgbm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0 aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIHRpZHN0YXRlOwogCiAJdGlkc3RhdGUtPnNzLnNz X2N1cnJlbnRSZWxhdGlvbiA9IGN1cnJlbnRSZWxhdGlvbjsKIAl0aWRzdGF0ZS0+c3Muc3NfY3Vy cmVudFNjYW5EZXNjID0gTlVMTDsgLyogbm8gaGVhcCBzY2FuIGhlcmUgKi8KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVVbmlxdWUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVVbmlxdWUuYwppbmRleCA0NTAzNWQ3NGZhLi42OWYyM2IwMmM2IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlVW5pcXVlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVVuaXF1ZS5jCkBAIC0xMzYsNiArMTM2LDggQEAgRXhlY0luaXRVbmlxdWUoVW5pcXVl ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiB0aGVuIGluaXRpYWxpemUg b3V0ZXIgcGxhbgogCSAqLwogCW91dGVyUGxhblN0YXRlKHVuaXF1ZXN0YXRlKSA9IEV4ZWNJbml0 Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3Rp bGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gdW5pcXVlc3RhdGU7CiAKIAkvKgogCSAqIEluaXRp YWxpemUgcmVzdWx0IHNsb3QgYW5kIHR5cGUuIFVuaXF1ZSBub2RlcyBkbyBubyBwcm9qZWN0aW9u cywgc28KQEAgLTE2OSw3ICsxNzEsOCBAQCB2b2lkCiBFeGVjRW5kVW5pcXVlKFVuaXF1ZVN0YXRl ICpub2RlKQogewogCS8qIGNsZWFuIHVwIHR1cGxlIHRhYmxlICovCi0JRXhlY0NsZWFyVHVwbGUo bm9kZS0+cHMucHNfUmVzdWx0VHVwbGVTbG90KTsKKwlpZiAobm9kZS0+cHMucHNfUmVzdWx0VHVw bGVTbG90KQorCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwog CiAJRXhlY0ZyZWVFeHByQ29udGV4dCgmbm9kZS0+cHMpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlVmFsdWVzc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZVZhbHVlc3NjYW4uYwppbmRleCAzMmFjZTYzMDE3Li5mNWRlZGJhYjYzIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlVmFsdWVzc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVWYWx1ZXNzY2FuLmMKQEAgLTM0MCw3ICszNDAsOCBAQCBFeGVjRW5kVmFsdWVz U2NhbihWYWx1ZXNTY2FuU3RhdGUgKm5vZGUpCiAJICovCiAJaWYgKG5vZGUtPnNzLnBzLnBzX1Jl c3VsdFR1cGxlU2xvdCkKIAkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVw bGVTbG90KTsKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKKwlp ZiAobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Mu c3NfU2NhblR1cGxlU2xvdCk7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVX aW5kb3dBZ2cuYwppbmRleCA3YzA3ZmIwNjg0Li42MTZiYjk3Njc1IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVdpbmRvd0FnZy5jCkBAIC0xMzM0LDcgKzEzMzQsNyBAQCByZWxlYXNlX3BhcnRpdGlv bihXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUpCiAJCVdpbmRvd1N0YXRlUGVyRnVuYyBwZXJmdW5j c3RhdGUgPSAmKHdpbnN0YXRlLT5wZXJmdW5jW2ldKTsKIAogCQkvKiBSZWxlYXNlIGFueSBwYXJ0 aXRpb24tbG9jYWwgc3RhdGUgb2YgdGhpcyB3aW5kb3cgZnVuY3Rpb24gKi8KLQkJaWYgKHBlcmZ1 bmNzdGF0ZS0+d2lub2JqKQorCQlpZiAocGVyZnVuY3N0YXRlICYmIHBlcmZ1bmNzdGF0ZS0+d2lu b2JqKQogCQkJcGVyZnVuY3N0YXRlLT53aW5vYmotPmxvY2FsbWVtID0gTlVMTDsKIAl9CiAKQEAg LTEzNDQsMTIgKzEzNDQsMTcgQEAgcmVsZWFzZV9wYXJ0aXRpb24oV2luZG93QWdnU3RhdGUgKndp bnN0YXRlKQogCSAqIGFueSBhZ2dyZWdhdGUgdGVtcCBkYXRhKS4gIFdlIGRvbid0IHJlbHkgb24g cmV0YWlsIHBmcmVlIGJlY2F1c2Ugc29tZQogCSAqIGFnZ3JlZ2F0ZXMgbWlnaHQgaGF2ZSBhbGxv Y2F0ZWQgZGF0YSB3ZSBkb24ndCBoYXZlIGRpcmVjdCBwb2ludGVycyB0by4KIAkgKi8KLQlNZW1v cnlDb250ZXh0UmVzZXRBbmREZWxldGVDaGlsZHJlbih3aW5zdGF0ZS0+cGFydGNvbnRleHQpOwot CU1lbW9yeUNvbnRleHRSZXNldEFuZERlbGV0ZUNoaWxkcmVuKHdpbnN0YXRlLT5hZ2djb250ZXh0 KTsKLQlmb3IgKGkgPSAwOyBpIDwgd2luc3RhdGUtPm51bWFnZ3M7IGkrKykKKwlpZiAod2luc3Rh dGUtPnBhcnRjb250ZXh0KQorCQlNZW1vcnlDb250ZXh0UmVzZXRBbmREZWxldGVDaGlsZHJlbih3 aW5zdGF0ZS0+cGFydGNvbnRleHQpOworCWlmICh3aW5zdGF0ZS0+YWdnY29udGV4dCkKKwkJTWVt b3J5Q29udGV4dFJlc2V0QW5kRGVsZXRlQ2hpbGRyZW4od2luc3RhdGUtPmFnZ2NvbnRleHQpOwor CWlmICh3aW5zdGF0ZS0+cGVyYWdnKQogCXsKLQkJaWYgKHdpbnN0YXRlLT5wZXJhZ2dbaV0uYWdn Y29udGV4dCAhPSB3aW5zdGF0ZS0+YWdnY29udGV4dCkKLQkJCU1lbW9yeUNvbnRleHRSZXNldEFu ZERlbGV0ZUNoaWxkcmVuKHdpbnN0YXRlLT5wZXJhZ2dbaV0uYWdnY29udGV4dCk7CisJCWZvciAo aSA9IDA7IGkgPCB3aW5zdGF0ZS0+bnVtYWdnczsgaSsrKQorCQl7CisJCQlpZiAod2luc3RhdGUt PnBlcmFnZ1tpXS5hZ2djb250ZXh0ICE9IHdpbnN0YXRlLT5hZ2djb250ZXh0KQorCQkJCU1lbW9y eUNvbnRleHRSZXNldEFuZERlbGV0ZUNoaWxkcmVuKHdpbnN0YXRlLT5wZXJhZ2dbaV0uYWdnY29u dGV4dCk7CisJCX0KIAl9CiAKIAlpZiAod2luc3RhdGUtPmJ1ZmZlcikKQEAgLTI0NTEsNiArMjQ1 Niw4IEBAIEV4ZWNJbml0V2luZG93QWdnKFdpbmRvd0FnZyAqbm9kZSwgRVN0YXRlICplc3RhdGUs IGludCBlZmxhZ3MpCiAJICovCiAJb3V0ZXJQbGFuID0gb3V0ZXJQbGFuKG5vZGUpOwogCW91dGVy UGxhblN0YXRlKHdpbnN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4sIGVzdGF0ZSwgZWZs YWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gd2luc3Rh dGU7CiAKIAkvKgogCSAqIGluaXRpYWxpemUgc291cmNlIHR1cGxlIHR5cGUgKHdoaWNoIGlzIGFs c28gdGhlIHR1cGxlIHR5cGUgdGhhdCB3ZSdsbApAQCAtMjY3OSwxMSArMjY4NiwxNiBAQCBFeGVj RW5kV2luZG93QWdnKFdpbmRvd0FnZ1N0YXRlICpub2RlKQogCiAJcmVsZWFzZV9wYXJ0aXRpb24o bm9kZSk7CiAKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKLQlF eGVjQ2xlYXJUdXBsZShub2RlLT5maXJzdF9wYXJ0X3Nsb3QpOwotCUV4ZWNDbGVhclR1cGxlKG5v ZGUtPmFnZ19yb3dfc2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+dGVtcF9zbG90XzEpOwot CUV4ZWNDbGVhclR1cGxlKG5vZGUtPnRlbXBfc2xvdF8yKTsKKwlpZiAobm9kZS0+c3Muc3NfU2Nh blR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7 CisJaWYgKG5vZGUtPmZpcnN0X3BhcnRfc2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+Zmly c3RfcGFydF9zbG90KTsKKwlpZiAobm9kZS0+YWdnX3Jvd19zbG90KQorCQlFeGVjQ2xlYXJUdXBs ZShub2RlLT5hZ2dfcm93X3Nsb3QpOworCWlmIChub2RlLT50ZW1wX3Nsb3RfMSkKKwkJRXhlY0Ns ZWFyVHVwbGUobm9kZS0+dGVtcF9zbG90XzEpOworCWlmIChub2RlLT50ZW1wX3Nsb3RfMikKKwkJ RXhlY0NsZWFyVHVwbGUobm9kZS0+dGVtcF9zbG90XzIpOwogCWlmIChub2RlLT5mcmFtZWhlYWRf c2xvdCkKIAkJRXhlY0NsZWFyVHVwbGUobm9kZS0+ZnJhbWVoZWFkX3Nsb3QpOwogCWlmIChub2Rl LT5mcmFtZXRhaWxfc2xvdCkKQEAgLTI2OTYsMTYgKzI3MDgsMjMgQEAgRXhlY0VuZFdpbmRvd0Fn ZyhXaW5kb3dBZ2dTdGF0ZSAqbm9kZSkKIAlub2RlLT5zcy5wcy5wc19FeHByQ29udGV4dCA9IG5v ZGUtPnRtcGNvbnRleHQ7CiAJRXhlY0ZyZWVFeHByQ29udGV4dCgmbm9kZS0+c3MucHMpOwogCi0J Zm9yIChpID0gMDsgaSA8IG5vZGUtPm51bWFnZ3M7IGkrKykKKwlpZiAobm9kZS0+cGVyYWdnKQog CXsKLQkJaWYgKG5vZGUtPnBlcmFnZ1tpXS5hZ2djb250ZXh0ICE9IG5vZGUtPmFnZ2NvbnRleHQp Ci0JCQlNZW1vcnlDb250ZXh0RGVsZXRlKG5vZGUtPnBlcmFnZ1tpXS5hZ2djb250ZXh0KTsKKwkJ Zm9yIChpID0gMDsgaSA8IG5vZGUtPm51bWFnZ3M7IGkrKykKKwkJeworCQkJaWYgKG5vZGUtPnBl cmFnZ1tpXS5hZ2djb250ZXh0ICE9IG5vZGUtPmFnZ2NvbnRleHQpCisJCQkJTWVtb3J5Q29udGV4 dERlbGV0ZShub2RlLT5wZXJhZ2dbaV0uYWdnY29udGV4dCk7CisJCX0KIAl9Ci0JTWVtb3J5Q29u dGV4dERlbGV0ZShub2RlLT5wYXJ0Y29udGV4dCk7Ci0JTWVtb3J5Q29udGV4dERlbGV0ZShub2Rl LT5hZ2djb250ZXh0KTsKKwlpZiAobm9kZS0+cGFydGNvbnRleHQpCisJCU1lbW9yeUNvbnRleHRE ZWxldGUobm9kZS0+cGFydGNvbnRleHQpOworCWlmIChub2RlLT5hZ2djb250ZXh0KQorCQlNZW1v cnlDb250ZXh0RGVsZXRlKG5vZGUtPmFnZ2NvbnRleHQpOwogCi0JcGZyZWUobm9kZS0+cGVyZnVu Yyk7Ci0JcGZyZWUobm9kZS0+cGVyYWdnKTsKKwlpZiAobm9kZS0+cGVyZnVuYykKKwkJcGZyZWUo bm9kZS0+cGVyZnVuYyk7CisJaWYgKG5vZGUtPnBlcmFnZykKKwkJcGZyZWUobm9kZS0+cGVyYWdn KTsKIAogCW91dGVyUGxhbiA9IG91dGVyUGxhblN0YXRlKG5vZGUpOwogCUV4ZWNFbmROb2RlKG91 dGVyUGxhbik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV29ya3RhYmxl c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdvcmt0YWJsZXNjYW4uYwppbmRleCAw YzEzNDQ4MjM2Li5kNzBjNmFmZGUzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlV29ya3RhYmxlc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXb3JrdGFi bGVzY2FuLmMKQEAgLTIwMCw3ICsyMDAsOCBAQCBFeGVjRW5kV29ya1RhYmxlU2NhbihXb3JrVGFi bGVTY2FuU3RhdGUgKm5vZGUpCiAJICovCiAJaWYgKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxl U2xvdCkKIAkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsK LQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKKwlpZiAobm9kZS0+ c3Muc3NfU2NhblR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1 cGxlU2xvdCk7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL3NwaS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKaW5kZXggZTNhMTcwYzM4Yi4u MjZhOWVhMzQyYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKQEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIGludAlf U1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25z ICpvcHRpb25zLAogc3RhdGljIFBhcmFtTGlzdEluZm8gX1NQSV9jb252ZXJ0X3BhcmFtcyhpbnQg bmFyZ3MsIE9pZCAqYXJndHlwZXMsCiAJCQkJCQkJCQkJIERhdHVtICpWYWx1ZXMsIGNvbnN0IGNo YXIgKk51bGxzKTsKIAotc3RhdGljIGludAlfU1BJX3BxdWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVz YywgYm9vbCBmaXJlX3RyaWdnZXJzLCB1aW50NjQgdGNvdW50KTsKK3N0YXRpYyBpbnQJX1NQSV9w cXVlcnkoUXVlcnlEZXNjICpxdWVyeURlc2MsIHVpbnQ2NCB0Y291bnQpOwogCiBzdGF0aWMgdm9p ZCBfU1BJX2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZyk7CiAKQEAgLTE2MjMsNiArMTYyMyw3IEBA IFNQSV9jdXJzb3Jfb3Blbl9pbnRlcm5hbChjb25zdCBjaGFyICpuYW1lLCBTUElQbGFuUHRyIHBs YW4sCiAJX1NQSV9jdXJyZW50LT5wcm9jZXNzZWQgPSAwOwogCV9TUElfY3VycmVudC0+dHVwdGFi bGUgPSBOVUxMOwogCityZXBsYW46CiAJLyogQ3JlYXRlIHRoZSBwb3J0YWwgKi8KIAlpZiAobmFt ZSA9PSBOVUxMIHx8IG5hbWVbMF0gPT0gJ1wwJykKIAl7CkBAIC0xNzY2LDcgKzE3NjcsMTAgQEAg U1BJX2N1cnNvcl9vcGVuX2ludGVybmFsKGNvbnN0IGNoYXIgKm5hbWUsIFNQSVBsYW5QdHIgcGxh biwKIAl9CiAKIAkvKgotCSAqIFN0YXJ0IHBvcnRhbCBleGVjdXRpb24uCisJICogU3RhcnQgcG9y dGFsIGV4ZWN1dGlvbi4gIElmIHRoZSBwb3J0YWwgY29udGFpbnMgYSBjYWNoZWQgcGxhbiwgaXQg bXVzdAorCSAqIGJlIHJlY3JlYXRlZCBpZiBwb3J0YWwtPnBsYW5fdmFsaWQgaXMgZmFsc2Ugd2hp Y2ggdGVsbHMgdGhhdCB0aGUgY2FjaGVkCisJICogcGxhbiB3YXMgZm91bmQgdG8gaGF2ZSBiZWVu IGludmFsaWRhdGVkIHdoZW4gaW5pdGlhbGl6aW5nIG9uZSBvZiB0aGUKKwkgKiBwbGFuIHRyZWVz IGNvbnRhaW5lZCBpbiBpdC4KIAkgKi8KIAlQb3J0YWxTdGFydChwb3J0YWwsIHBhcmFtTEksIDAs IHNuYXBzaG90KTsKIApAQCAtMTc3NSw2ICsxNzc5LDEyIEBAIFNQSV9jdXJzb3Jfb3Blbl9pbnRl cm5hbChjb25zdCBjaGFyICpuYW1lLCBTUElQbGFuUHRyIHBsYW4sCiAJLyogUG9wIHRoZSBlcnJv ciBjb250ZXh0IHN0YWNrICovCiAJZXJyb3JfY29udGV4dF9zdGFjayA9IHNwaWVycmNvbnRleHQu cHJldmlvdXM7CiAKKwlpZiAoIXBvcnRhbC0+cGxhbl92YWxpZCkKKwl7CisJCVBvcnRhbERyb3Ao cG9ydGFsLCBmYWxzZSk7CisJCWdvdG8gcmVwbGFuOworCX0KKwogCS8qIFBvcCB0aGUgU1BJIHN0 YWNrICovCiAJX1NQSV9lbmRfY2FsbCh0cnVlKTsKIApAQCAtMjU1Miw2ICsyNTYyLDcgQEAgX1NQ SV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAq b3B0aW9ucywKIAkJICogUmVwbGFuIGlmIG5lZWRlZCwgYW5kIGluY3JlbWVudCBwbGFuIHJlZmNv dW50LiAgSWYgaXQncyBhIHNhdmVkCiAJCSAqIHBsYW4sIHRoZSByZWZjb3VudCBtdXN0IGJlIGJh Y2tlZCBieSB0aGUgcGxhbl9vd25lci4KIAkJICovCityZXBsYW46CiAJCWNwbGFuID0gR2V0Q2Fj aGVkUGxhbihwbGFuc291cmNlLCBvcHRpb25zLT5wYXJhbXMsCiAJCQkJCQkJICBwbGFuX293bmVy LCBfU1BJX2N1cnJlbnQtPnF1ZXJ5RW52KTsKIApAQCAtMjY2MSw2ICsyNjcyLDcgQEAgX1NQSV9l eGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0 aW9ucywKIAkJCXsKIAkJCQlRdWVyeURlc2MgICpxZGVzYzsKIAkJCQlTbmFwc2hvdAlzbmFwOwor CQkJCWludAkJCWVmbGFnczsKIAogCQkJCWlmIChBY3RpdmVTbmFwc2hvdFNldCgpKQogCQkJCQlz bmFwID0gR2V0QWN0aXZlU25hcHNob3QoKTsKQEAgLTI2NjgsMTQgKzI2ODAsMzYgQEAgX1NQSV9l eGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0 aW9ucywKIAkJCQkJc25hcCA9IEludmFsaWRTbmFwc2hvdDsKIAogCQkJCXFkZXNjID0gQ3JlYXRl UXVlcnlEZXNjKHN0bXQsCisJCQkJCQkJCQkJY3BsYW4sCiAJCQkJCQkJCQkJcGxhbnNvdXJjZS0+ cXVlcnlfc3RyaW5nLAogCQkJCQkJCQkJCXNuYXAsIGNyb3NzY2hlY2tfc25hcHNob3QsCiAJCQkJ CQkJCQkJZGVzdCwKIAkJCQkJCQkJCQlvcHRpb25zLT5wYXJhbXMsCiAJCQkJCQkJCQkJX1NQSV9j dXJyZW50LT5xdWVyeUVudiwKIAkJCQkJCQkJCQkwKTsKLQkJCQlyZXMgPSBfU1BJX3BxdWVyeShx ZGVzYywgZmlyZV90cmlnZ2VycywKLQkJCQkJCQkJICBjYW5TZXRUYWcgPyBvcHRpb25zLT50Y291 bnQgOiAwKTsKKworCQkJCS8qIFNlbGVjdCBleGVjdXRpb24gb3B0aW9ucyAqLworCQkJCWlmIChm aXJlX3RyaWdnZXJzKQorCQkJCQllZmxhZ3MgPSAwOwkJCQkvKiBkZWZhdWx0IHJ1bi10by1jb21w bGV0aW9uIGZsYWdzICovCisJCQkJZWxzZQorCQkJCQllZmxhZ3MgPSBFWEVDX0ZMQUdfU0tJUF9U UklHR0VSUzsKKworCQkJCS8qIFRha2UgbG9ja3MgaWYgdXNpbmcgYSBDYWNoZWRQbGFuICovCisJ CQkJaWYgKHFkZXNjLT5jcGxhbikKKwkJCQkJZWZsYWdzIHw9IEVYRUNfRkxBR19HRVRfTE9DS1M7 CisKKwkJCQlFeGVjdXRvclN0YXJ0KHFkZXNjLCBlZmxhZ3MpOworCQkJCWlmICghcWRlc2MtPnBs YW5fdmFsaWQpCisJCQkJeworCQkJCQlFeGVjdXRvckZpbmlzaChxZGVzYyk7CisJCQkJCUV4ZWN1 dG9yRW5kKHFkZXNjKTsKKwkJCQkJRnJlZVF1ZXJ5RGVzYyhxZGVzYyk7CisJCQkJCUFzc2VydChj cGxhbik7CisJCQkJCVJlbGVhc2VDYWNoZWRQbGFuKGNwbGFuLCBwbGFuX293bmVyKTsKKwkJCQkJ Z290byByZXBsYW47CisJCQkJfQorCisJCQkJcmVzID0gX1NQSV9wcXVlcnkocWRlc2MsIGNhblNl dFRhZyA/IG9wdGlvbnMtPnRjb3VudCA6IDApOwogCQkJCUZyZWVRdWVyeURlc2MocWRlc2MpOwog CQkJfQogCQkJZWxzZQpAQCAtMjg1MCwxMCArMjg4NCw5IEBAIF9TUElfY29udmVydF9wYXJhbXMo aW50IG5hcmdzLCBPaWQgKmFyZ3R5cGVzLAogfQogCiBzdGF0aWMgaW50Ci1fU1BJX3BxdWVyeShR dWVyeURlc2MgKnF1ZXJ5RGVzYywgYm9vbCBmaXJlX3RyaWdnZXJzLCB1aW50NjQgdGNvdW50KQor X1NQSV9wcXVlcnkoUXVlcnlEZXNjICpxdWVyeURlc2MsIHVpbnQ2NCB0Y291bnQpCiB7CiAJaW50 CQkJb3BlcmF0aW9uID0gcXVlcnlEZXNjLT5vcGVyYXRpb247Ci0JaW50CQkJZWZsYWdzOwogCWlu dAkJCXJlczsKIAogCXN3aXRjaCAob3BlcmF0aW9uKQpAQCAtMjg5NywxNCArMjkzMCw2IEBAIF9T UElfcHF1ZXJ5KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBib29sIGZpcmVfdHJpZ2dlcnMsIHVpbnQ2 NCB0Y291bnQpCiAJCVJlc2V0VXNhZ2UoKTsKICNlbmRpZgogCi0JLyogU2VsZWN0IGV4ZWN1dGlv biBvcHRpb25zICovCi0JaWYgKGZpcmVfdHJpZ2dlcnMpCi0JCWVmbGFncyA9IDA7CQkJCS8qIGRl ZmF1bHQgcnVuLXRvLWNvbXBsZXRpb24gZmxhZ3MgKi8KLQllbHNlCi0JCWVmbGFncyA9IEVYRUNf RkxBR19TS0lQX1RSSUdHRVJTOwotCi0JRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7 Ci0KIAlFeGVjdXRvclJ1bihxdWVyeURlc2MsIEZvcndhcmRTY2FuRGlyZWN0aW9uLCB0Y291bnQs IHRydWUpOwogCiAJX1NQSV9jdXJyZW50LT5wcm9jZXNzZWQgPSBxdWVyeURlc2MtPmVzdGF0ZS0+ ZXNfcHJvY2Vzc2VkOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYyBi L3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKaW5kZXggYmEwMGI5OTI0OS4uOTU1Mjg2NTEz ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYworKysgYi9zcmMvYmFj a2VuZC9ub2Rlcy9vdXRmdW5jcy5jCkBAIC01MTMsNiArNTEzLDcgQEAgX291dFJhbmdlVGJsRW50 cnkoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IFJhbmdlVGJsRW50cnkgKm5vZGUpCiAJCQlXUklURV9C T09MX0ZJRUxEKHNlY3VyaXR5X2JhcnJpZXIpOwogCQkJLyogd2UgcmUtdXNlIHRoZXNlIFJFTEFU SU9OIGZpZWxkcywgdG9vOiAqLwogCQkJV1JJVEVfT0lEX0ZJRUxEKHJlbGlkKTsKKwkJCVdSSVRF X0NIQVJfRklFTEQocmVsa2luZCk7CiAJCQlXUklURV9JTlRfRklFTEQocmVsbG9ja21vZGUpOwog CQkJV1JJVEVfVUlOVF9GSUVMRChwZXJtaW5mb2luZGV4KTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9yZWFk ZnVuY3MuYwppbmRleCBmMzYyOWNkZmQxLi4zYmM1YTZkY2EwIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9ub2Rlcy9yZWFkZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3Mu YwpAQCAtNDgwLDYgKzQ4MCw3IEBAIF9yZWFkUmFuZ2VUYmxFbnRyeSh2b2lkKQogCQkJUkVBRF9C T09MX0ZJRUxEKHNlY3VyaXR5X2JhcnJpZXIpOwogCQkJLyogd2UgcmUtdXNlIHRoZXNlIFJFTEFU SU9OIGZpZWxkcywgdG9vOiAqLwogCQkJUkVBRF9PSURfRklFTEQocmVsaWQpOworCQkJUkVBRF9D SEFSX0ZJRUxEKHJlbGtpbmQpOwogCQkJUkVBRF9JTlRfRklFTEQocmVsbG9ja21vZGUpOwogCQkJ UkVBRF9VSU5UX0ZJRUxEKHBlcm1pbmZvaW5kZXgpOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXggNjJiM2VjOTZjYy4uNWYzZmZkOThhZiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCisrKyBiL3NyYy9iYWNrZW5k L29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpAQCAtNTI3LDYgKzUyNyw3IEBAIHN0YW5kYXJkX3Bs YW5uZXIoUXVlcnkgKnBhcnNlLCBjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcsIGludCBjdXJzb3JP cHRpb25zLAogCXJlc3VsdC0+cGFydFBydW5lSW5mb3MgPSBnbG9iLT5wYXJ0UHJ1bmVJbmZvczsK IAlyZXN1bHQtPnJ0YWJsZSA9IGdsb2ItPmZpbmFscnRhYmxlOwogCXJlc3VsdC0+cGVybUluZm9z ID0gZ2xvYi0+ZmluYWxydGVwZXJtaW5mb3M7CisJcmVzdWx0LT52aWV3UmVsYXRpb25zID0gZ2xv Yi0+dmlld1JlbGF0aW9uczsKIAlyZXN1bHQtPnJlc3VsdFJlbGF0aW9ucyA9IGdsb2ItPnJlc3Vs dFJlbGF0aW9uczsKIAlyZXN1bHQtPmFwcGVuZFJlbGF0aW9ucyA9IGdsb2ItPmFwcGVuZFJlbGF0 aW9uczsKIAlyZXN1bHQtPnN1YnBsYW5zID0gZ2xvYi0+c3VicGxhbnM7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGxhbi9zZXRyZWZzLmMKaW5kZXggNWNjODM2NmFmNi4uZjEzMjQwYmYzMyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCisrKyBiL3NyYy9iYWNrZW5k L29wdGltaXplci9wbGFuL3NldHJlZnMuYwpAQCAtMTYsNiArMTYsNyBAQAogI2luY2x1ZGUgInBv c3RncmVzLmgiCiAKICNpbmNsdWRlICJhY2Nlc3MvdHJhbnNhbS5oIgorI2luY2x1ZGUgImNhdGFs b2cvcGdfY2xhc3MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJu b2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKQEAgLTYwNCw2 ICs2MDUsMTAgQEAgYWRkX3J0ZV90b19mbGF0X3J0YWJsZShQbGFubmVyR2xvYmFsICpnbG9iLCBM aXN0ICpydGVwZXJtaW5mb3MsCiAJCShuZXdydGUtPnJ0ZWtpbmQgPT0gUlRFX1NVQlFVRVJZICYm IE9pZElzVmFsaWQobmV3cnRlLT5yZWxpZCkpKQogCQlnbG9iLT5yZWxhdGlvbk9pZHMgPSBsYXBw ZW5kX29pZChnbG9iLT5yZWxhdGlvbk9pZHMsIG5ld3J0ZS0+cmVsaWQpOwogCisJaWYgKG5ld3J0 ZS0+cmVsa2luZCA9PSBSRUxLSU5EX1ZJRVcpCisJCWdsb2ItPnZpZXdSZWxhdGlvbnMgPSBsYXBw ZW5kX2ludChnbG9iLT52aWV3UmVsYXRpb25zLAorCQkJCQkJCQkJCSAgbGlzdF9sZW5ndGgoZ2xv Yi0+ZmluYWxydGFibGUpKTsKKwogCS8qCiAJICogQWRkIGEgY29weSBvZiB0aGUgUlRFUGVybWlz c2lvbkluZm8sIGlmIGFueSwgY29ycmVzcG9uZGluZyB0byB0aGlzIFJURQogCSAqIHRvIHRoZSBm bGF0dGVuZWQgZ2xvYmFsIGxpc3QuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jl d3JpdGVIYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMKaW5k ZXggOTgwZGMxODE2Zi4uMTYzMWM4Yjk5MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmV3cml0 ZS9yZXdyaXRlSGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRs ZXIuYwpAQCAtMTg0OSwxMSArMTg0OSwxMCBAQCBBcHBseVJldHJpZXZlUnVsZShRdWVyeSAqcGFy c2V0cmVlLAogCiAJLyoKIAkgKiBDbGVhciBmaWVsZHMgdGhhdCBzaG91bGQgbm90IGJlIHNldCBp biBhIHN1YnF1ZXJ5IFJURS4gIE5vdGUgdGhhdCB3ZQotCSAqIGxlYXZlIHRoZSByZWxpZCwgcmVs bG9ja21vZGUsIGFuZCBwZXJtaW5mb2luZGV4IGZpZWxkcyBzZXQsIHNvIHRoYXQgdGhlCi0JICog dmlldyByZWxhdGlvbiBjYW4gYmUgYXBwcm9wcmlhdGVseSBsb2NrZWQgYmVmb3JlIGV4ZWN1dGlv biBhbmQgaXRzCi0JICogcGVybWlzc2lvbnMgY2hlY2tlZC4KKwkgKiBsZWF2ZSB0aGUgcmVsaWQs IHJlbGtpbmQsIHJlbGxvY2ttb2RlLCBhbmQgcGVybWluZm9pbmRleCBmaWVsZHMgc2V0LAorCSAq IHNvIHRoYXQgdGhlIHZpZXcgcmVsYXRpb24gY2FuIGJlIGFwcHJvcHJpYXRlbHkgbG9ja2VkIGJl Zm9yZSBleGVjdXRpb24KKwkgKiBhbmQgaXRzIHBlcm1pc3Npb25zIGNoZWNrZWQuCiAJICovCi0J cnRlLT5yZWxraW5kID0gMDsKIAlydGUtPnRhYmxlc2FtcGxlID0gTlVMTDsKIAlydGUtPmluaCA9 IGZhbHNlOwkJCS8qIG11c3Qgbm90IGJlIHNldCBmb3IgYSBzdWJxdWVyeSAqLwogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5jIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9sbWdyL2xtZ3IuYwppbmRleCBlZTliODlhNjcyLi5jODA3ZTljZGNjIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv bG1nci9sbWdyLmMKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJh eS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2ludmFsYWR0LmgiCiAjaW5jbHVkZSAidXRpbHMvaW52 YWwuaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKIAogCiAvKgpAQCAtMzY0LDYgKzM2 NSw1MCBAQCBDaGVja1JlbGF0aW9uTG9ja2VkQnlNZShSZWxhdGlvbiByZWxhdGlvbiwgTE9DS01P REUgbG9ja21vZGUsIGJvb2wgb3JzdHJvbmdlcikKIAlyZXR1cm4gZmFsc2U7CiB9CiAKKy8qCisg KgkJQ2hlY2tSZWxMb2NrZWRCeU1lCisgKgorICogUmV0dXJucyB0cnVlIGlmIGN1cnJlbnQgdHJh bnNhY3Rpb24gaG9sZHMgYSBsb2NrIG9uIHRoZSBnaXZlbiByZWxhdGlvbiBvZgorICogbW9kZSAn bG9ja21vZGUnLiAgSWYgJ29yc3Ryb25nZXInIGlzIHRydWUsIGEgc3Ryb25nZXIgbG9ja21vZGUg aXMgYWxzbyBPSy4KKyAqICgiU3Ryb25nZXIiIGlzIGRlZmluZWQgYXMgIm51bWVyaWNhbGx5IGhp Z2hlciIsIHdoaWNoIGlzIGEgYml0CisgKiBzZW1hbnRpY2FsbHkgZHViaW91cyBidXQgaXMgT0sg Zm9yIHRoZSBwdXJwb3NlcyB3ZSB1c2UgdGhpcyBmb3IuKQorICovCitib29sCitDaGVja1JlbExv Y2tlZEJ5TWUoT2lkIHJlbGlkLCBMT0NLTU9ERSBsb2NrbW9kZSwgYm9vbCBvcnN0cm9uZ2VyKQor eworCU9pZAkJCWRiSWQgPSBnZXRfcmVsX3JlbGlzc2hhcmVkKHJlbGlkKSA/IEludmFsaWRPaWQg OiBNeURhdGFiYXNlSWQ7CisJTE9DS1RBRwkJdGFnOworCisJU0VUX0xPQ0tUQUdfUkVMQVRJT04o dGFnLCBkYklkLCByZWxpZCk7CisKKwlpZiAoTG9ja0hlbGRCeU1lKCZ0YWcsIGxvY2ttb2RlKSkK KwkJcmV0dXJuIHRydWU7CisKKwlpZiAob3JzdHJvbmdlcikKKwl7CisJCUxPQ0tNT0RFCXNsb2Nr bW9kZTsKKworCQlmb3IgKHNsb2NrbW9kZSA9IGxvY2ttb2RlICsgMTsKKwkJCSBzbG9ja21vZGUg PD0gTWF4TG9ja01vZGU7CisJCQkgc2xvY2ttb2RlKyspCisJCXsKKwkJCWlmIChMb2NrSGVsZEJ5 TWUoJnRhZywgc2xvY2ttb2RlKSkKKwkJCXsKKyNpZmRlZiBOT1RfVVNFRAorCQkJCS8qIFNvbWV0 aW1lcyB0aGlzIG1pZ2h0IGJlIHVzZWZ1bCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzICovCisJCQkJ ZWxvZyhXQVJOSU5HLCAibG9jayBtb2RlICVzIHN1YnN0aXR1dGVkIGZvciAlcyBvbiByZWxhdGlv biAlcyIsCisJCQkJCSBHZXRMb2NrbW9kZU5hbWUodGFnLmxvY2t0YWdfbG9ja21ldGhvZGlkLCBz bG9ja21vZGUpLAorCQkJCQkgR2V0TG9ja21vZGVOYW1lKHRhZy5sb2NrdGFnX2xvY2ttZXRob2Rp ZCwgbG9ja21vZGUpLAorCQkJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pKTsK KyNlbmRpZgorCQkJCXJldHVybiB0cnVlOworCQkJfQorCQl9CisJfQorCisJcmV0dXJuIGZhbHNl OworfQorCiAvKgogICoJCUxvY2tIYXNXYWl0ZXJzUmVsYXRpb24KICAqCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMK aW5kZXggY2FiNzA5YjA3Yi4uNmQwZWEwNzgwMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNv cC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpAQCAtMTE5OSw2 ICsxMTk5LDcgQEAgZXhlY19zaW1wbGVfcXVlcnkoY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nKQog CQkgKiBTdGFydCB0aGUgcG9ydGFsLiAgTm8gcGFyYW1ldGVycyBoZXJlLgogCQkgKi8KIAkJUG9y dGFsU3RhcnQocG9ydGFsLCBOVUxMLCAwLCBJbnZhbGlkU25hcHNob3QpOworCQlBc3NlcnQocG9y dGFsLT5wbGFuX3ZhbGlkKTsKIAogCQkvKgogCQkgKiBTZWxlY3QgdGhlIGFwcHJvcHJpYXRlIG91 dHB1dCBmb3JtYXQ6IHRleHQgdW5sZXNzIHdlIGFyZSBkb2luZyBhCkBAIC0xNzAzLDYgKzE3MDQs NyBAQCBleGVjX2JpbmRfbWVzc2FnZShTdHJpbmdJbmZvIGlucHV0X21lc3NhZ2UpCiAJCQkJCQki Y29tbWFuZHMgaWdub3JlZCB1bnRpbCBlbmQgb2YgdHJhbnNhY3Rpb24gYmxvY2siKSwKIAkJCQkg ZXJyZGV0YWlsX2Fib3J0KCkpKTsKIAorcmVwbGFuOgogCS8qCiAJICogQ3JlYXRlIHRoZSBwb3J0 YWwuICBBbGxvdyBzaWxlbnQgcmVwbGFjZW1lbnQgb2YgYW4gZXhpc3RpbmcgcG9ydGFsIG9ubHkK IAkgKiBpZiB0aGUgdW5uYW1lZCBwb3J0YWwgaXMgc3BlY2lmaWVkLgpAQCAtMTk5NCwxMCArMTk5 NiwxOSBAQCBleGVjX2JpbmRfbWVzc2FnZShTdHJpbmdJbmZvIGlucHV0X21lc3NhZ2UpCiAJCVBv cEFjdGl2ZVNuYXBzaG90KCk7CiAKIAkvKgotCSAqIEFuZCB3ZSdyZSByZWFkeSB0byBzdGFydCBw b3J0YWwgZXhlY3V0aW9uLgorCSAqIFN0YXJ0IHBvcnRhbCBleGVjdXRpb24uICBJZiB0aGUgcG9y dGFsIGNvbnRhaW5zIGEgY2FjaGVkIHBsYW4sIGl0IG11c3QKKwkgKiBiZSByZWNyZWF0ZWQgaWYg cG9ydGFsLT5wbGFuX3ZhbGlkIGlzIGZhbHNlIHdoaWNoIHRlbGxzIHRoYXQgdGhlIGNhY2hlZAor CSAqIHBsYW4gd2FzIGZvdW5kIHRvIGhhdmUgYmVlbiBpbnZhbGlkYXRlZCB3aGVuIGluaXRpYWxp emluZyBvbmUgb2YgdGhlCisJICogcGxhbiB0cmVlcyBjb250YWluZWQgaW4gaXQuCiAJICovCiAJ UG9ydGFsU3RhcnQocG9ydGFsLCBwYXJhbXMsIDAsIEludmFsaWRTbmFwc2hvdCk7CiAKKwlpZiAo IXBvcnRhbC0+cGxhbl92YWxpZCkKKwl7CisJCVBvcnRhbERyb3AocG9ydGFsLCBmYWxzZSk7CisJ CWdvdG8gcmVwbGFuOworCX0KKwogCS8qCiAJICogQXBwbHkgdGhlIHJlc3VsdCBmb3JtYXQgcmVx dWVzdHMgdG8gdGhlIHBvcnRhbC4KIAkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3Av cHF1ZXJ5LmMgYi9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCmluZGV4IDVmMDI0OGFjYzUuLmM5 M2E5NTBkN2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKKysrIGIvc3Jj L2JhY2tlbmQvdGNvcC9wcXVlcnkuYwpAQCAtMTksNiArMTksNyBAQAogCiAjaW5jbHVkZSAiYWNj ZXNzL3hhY3QuaCIKICNpbmNsdWRlICJjb21tYW5kcy9wcmVwYXJlLmgiCisjaW5jbHVkZSAiZXhl Y3V0b3IvZXhlY2Rlc2MuaCIKICNpbmNsdWRlICJleGVjdXRvci90c3RvcmVSZWNlaXZlci5oIgog I2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnX3RyYWNlLmgiCkBAIC0zNSwxMiAr MzYsNiBAQAogUG9ydGFsCQlBY3RpdmVQb3J0YWwgPSBOVUxMOwogCiAKLXN0YXRpYyB2b2lkIFBy b2Nlc3NRdWVyeShQbGFubmVkU3RtdCAqcGxhbiwKLQkJCQkJCSBjb25zdCBjaGFyICpzb3VyY2VU ZXh0LAotCQkJCQkJIFBhcmFtTGlzdEluZm8gcGFyYW1zLAotCQkJCQkJIFF1ZXJ5RW52aXJvbm1l bnQgKnF1ZXJ5RW52LAotCQkJCQkJIERlc3RSZWNlaXZlciAqZGVzdCwKLQkJCQkJCSBRdWVyeUNv bXBsZXRpb24gKnFjKTsKIHN0YXRpYyB2b2lkIEZpbGxQb3J0YWxTdG9yZShQb3J0YWwgcG9ydGFs LCBib29sIGlzVG9wTGV2ZWwpOwogc3RhdGljIHVpbnQ2NCBSdW5Gcm9tU3RvcmUoUG9ydGFsIHBv cnRhbCwgU2NhbkRpcmVjdGlvbiBkaXJlY3Rpb24sIHVpbnQ2NCBjb3VudCwKIAkJCQkJCSAgIERl c3RSZWNlaXZlciAqZGVzdCk7CkBAIC02NSw2ICs2MCw3IEBAIHN0YXRpYyB2b2lkIERvUG9ydGFs UmV3aW5kKFBvcnRhbCBwb3J0YWwpOwogICovCiBRdWVyeURlc2MgKgogQ3JlYXRlUXVlcnlEZXNj KFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwKKwkJCQlDYWNoZWRQbGFuICpjcGxhbiwKIAkJCQlj b25zdCBjaGFyICpzb3VyY2VUZXh0LAogCQkJCVNuYXBzaG90IHNuYXBzaG90LAogCQkJCVNuYXBz aG90IGNyb3NzY2hlY2tfc25hcHNob3QsCkBAIC03Nyw2ICs3Myw3IEBAIENyZWF0ZVF1ZXJ5RGVz YyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsCiAKIAlxZC0+b3BlcmF0aW9uID0gcGxhbm5lZHN0 bXQtPmNvbW1hbmRUeXBlOwkvKiBvcGVyYXRpb24gKi8KIAlxZC0+cGxhbm5lZHN0bXQgPSBwbGFu bmVkc3RtdDsJLyogcGxhbiAqLworCXFkLT5jcGxhbiA9IGNwbGFuOwkJCQkvKiBDYWNoZWRQbGFu LCBpZiBwbGFuIGlzIGZyb20gb25lICovCiAJcWQtPnNvdXJjZVRleHQgPSBzb3VyY2VUZXh0Owkv KiBxdWVyeSB0ZXh0ICovCiAJcWQtPnNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hv dCk7CS8qIHNuYXBzaG90ICovCiAJLyogUkkgY2hlY2sgc25hcHNob3QgKi8KQEAgLTExNiw4NiAr MTEzLDYgQEAgRnJlZVF1ZXJ5RGVzYyhRdWVyeURlc2MgKnFkZXNjKQogfQogCiAKLS8qCi0gKiBQ cm9jZXNzUXVlcnkKLSAqCQlFeGVjdXRlIGEgc2luZ2xlIHBsYW5uYWJsZSBxdWVyeSB3aXRoaW4g YSBQT1JUQUxfTVVMVElfUVVFUlksCi0gKgkJUE9SVEFMX09ORV9SRVRVUk5JTkcsIG9yIFBPUlRB TF9PTkVfTU9EX1dJVEggcG9ydGFsCi0gKgotICoJcGxhbjogdGhlIHBsYW4gdHJlZSBmb3IgdGhl IHF1ZXJ5Ci0gKglzb3VyY2VUZXh0OiB0aGUgc291cmNlIHRleHQgb2YgdGhlIHF1ZXJ5Ci0gKglw YXJhbXM6IGFueSBwYXJhbWV0ZXJzIG5lZWRlZAotICoJZGVzdDogd2hlcmUgdG8gc2VuZCByZXN1 bHRzCi0gKglxYzogd2hlcmUgdG8gc3RvcmUgdGhlIGNvbW1hbmQgY29tcGxldGlvbiBzdGF0dXMg ZGF0YS4KLSAqCi0gKiBxYyBtYXkgYmUgTlVMTCBpZiBjYWxsZXIgZG9lc24ndCB3YW50IGEgc3Rh dHVzIHN0cmluZy4KLSAqCi0gKiBNdXN0IGJlIGNhbGxlZCBpbiBhIG1lbW9yeSBjb250ZXh0IHRo YXQgd2lsbCBiZSByZXNldCBvciBkZWxldGVkIG9uCi0gKiBlcnJvcjsgb3RoZXJ3aXNlIHRoZSBl eGVjdXRvcidzIG1lbW9yeSB1c2FnZSB3aWxsIGJlIGxlYWtlZC4KLSAqLwotc3RhdGljIHZvaWQK LVByb2Nlc3NRdWVyeShQbGFubmVkU3RtdCAqcGxhbiwKLQkJCSBjb25zdCBjaGFyICpzb3VyY2VU ZXh0LAotCQkJIFBhcmFtTGlzdEluZm8gcGFyYW1zLAotCQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1 ZXJ5RW52LAotCQkJIERlc3RSZWNlaXZlciAqZGVzdCwKLQkJCSBRdWVyeUNvbXBsZXRpb24gKnFj KQotewotCVF1ZXJ5RGVzYyAgKnF1ZXJ5RGVzYzsKLQotCS8qCi0JICogQ3JlYXRlIHRoZSBRdWVy eURlc2Mgb2JqZWN0Ci0JICovCi0JcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIHNv dXJjZVRleHQsCi0JCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwK LQkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgMCk7Ci0KLQkvKgotCSAqIENhbGwgRXhl Y3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24KLQkgKi8KLQlFeGVj dXRvclN0YXJ0KHF1ZXJ5RGVzYywgMCk7Ci0KLQkvKgotCSAqIFJ1biB0aGUgcGxhbiB0byBjb21w bGV0aW9uLgotCSAqLwotCUV4ZWN1dG9yUnVuKHF1ZXJ5RGVzYywgRm9yd2FyZFNjYW5EaXJlY3Rp b24sIDBMLCB0cnVlKTsKLQotCS8qCi0JICogQnVpbGQgY29tbWFuZCBjb21wbGV0aW9uIHN0YXR1 cyBkYXRhLCBpZiBjYWxsZXIgd2FudHMgb25lLgotCSAqLwotCWlmIChxYykKLQl7Ci0JCXN3aXRj aCAocXVlcnlEZXNjLT5vcGVyYXRpb24pCi0JCXsKLQkJCWNhc2UgQ01EX1NFTEVDVDoKLQkJCQlT ZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19TRUxFQ1QsIHF1ZXJ5RGVzYy0+ZXN0YXRlLT5l c19wcm9jZXNzZWQpOwotCQkJCWJyZWFrOwotCQkJY2FzZSBDTURfSU5TRVJUOgotCQkJCVNldFF1 ZXJ5Q29tcGxldGlvbihxYywgQ01EVEFHX0lOU0VSVCwgcXVlcnlEZXNjLT5lc3RhdGUtPmVzX3By b2Nlc3NlZCk7Ci0JCQkJYnJlYWs7Ci0JCQljYXNlIENNRF9VUERBVEU6Ci0JCQkJU2V0UXVlcnlD b21wbGV0aW9uKHFjLCBDTURUQUdfVVBEQVRFLCBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vz c2VkKTsKLQkJCQlicmVhazsKLQkJCWNhc2UgQ01EX0RFTEVURToKLQkJCQlTZXRRdWVyeUNvbXBs ZXRpb24ocWMsIENNRFRBR19ERUxFVEUsIHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQp OwotCQkJCWJyZWFrOwotCQkJY2FzZSBDTURfTUVSR0U6Ci0JCQkJU2V0UXVlcnlDb21wbGV0aW9u KHFjLCBDTURUQUdfTUVSR0UsIHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQpOwotCQkJ CWJyZWFrOwotCQkJZGVmYXVsdDoKLQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19V TktOT1dOLCBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKLQkJCQlicmVhazsKLQkJ fQotCX0KLQotCS8qCi0JICogTm93LCB3ZSBjbG9zZSBkb3duIGFsbCB0aGUgc2NhbnMgYW5kIGZy ZWUgYWxsb2NhdGVkIHJlc291cmNlcy4KLQkgKi8KLQlFeGVjdXRvckZpbmlzaChxdWVyeURlc2Mp OwotCUV4ZWN1dG9yRW5kKHF1ZXJ5RGVzYyk7Ci0KLQlGcmVlUXVlcnlEZXNjKHF1ZXJ5RGVzYyk7 Ci19Ci0KIC8qCiAgKiBDaG9vc2VQb3J0YWxTdHJhdGVneQogICoJCVNlbGVjdCBwb3J0YWwgZXhl Y3V0aW9uIHN0cmF0ZWd5IGdpdmVuIHRoZSBpbnRlbmRlZCBzdGF0ZW1lbnQgbGlzdC4KQEAgLTQy Nyw3ICszNDQsOCBAQCBGZXRjaFN0YXRlbWVudFRhcmdldExpc3QoTm9kZSAqc3RtdCkKICAqIHRv IGJlIHVzZWQgZm9yIGN1cnNvcnMpLgogICoKICAqIE9uIHJldHVybiwgcG9ydGFsIGlzIHJlYWR5 IHRvIGFjY2VwdCBQb3J0YWxSdW4oKSBjYWxscywgYW5kIHRoZSByZXN1bHQKLSAqIHR1cGRlc2Mg KGlmIGFueSkgaXMga25vd24uCisgKiB0dXBkZXNjIChpZiBhbnkpIGlzIGtub3duLCB1bmxlc3Mg cG9ydGFsLT5wbGFuX3ZhbGlkIGlzIHNldCB0byBmYWxzZSwgaW4KKyAqIHdoaWNoIGNhc2UsIHRo ZSBjYWxsZXIgbXVzdCByZXRyeSBhZnRlciBnZW5lcmF0aW5nIGEgbmV3IENhY2hlZFBsYW4uCiAg Ki8KIHZvaWQKIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1z LApAQCAtNDM1LDcgKzM1Myw2IEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlz dEluZm8gcGFyYW1zLAogewogCVBvcnRhbAkJc2F2ZUFjdGl2ZVBvcnRhbDsKIAlSZXNvdXJjZU93 bmVyIHNhdmVSZXNvdXJjZU93bmVyOwotCU1lbW9yeUNvbnRleHQgc2F2ZVBvcnRhbENvbnRleHQ7 CiAJTWVtb3J5Q29udGV4dCBvbGRDb250ZXh0OwogCVF1ZXJ5RGVzYyAgKnF1ZXJ5RGVzYzsKIAlp bnQJCQlteWVmbGFnczsKQEAgLTQ0OCwxNSArMzY1LDEzIEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBw b3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCSAqLwogCXNhdmVBY3RpdmVQb3J0YWwgPSBB Y3RpdmVQb3J0YWw7CiAJc2F2ZVJlc291cmNlT3duZXIgPSBDdXJyZW50UmVzb3VyY2VPd25lcjsK LQlzYXZlUG9ydGFsQ29udGV4dCA9IFBvcnRhbENvbnRleHQ7CiAJUEdfVFJZKCk7CiAJewogCQlB Y3RpdmVQb3J0YWwgPSBwb3J0YWw7CiAJCWlmIChwb3J0YWwtPnJlc293bmVyKQogCQkJQ3VycmVu dFJlc291cmNlT3duZXIgPSBwb3J0YWwtPnJlc293bmVyOwotCQlQb3J0YWxDb250ZXh0ID0gcG9y dGFsLT5wb3J0YWxDb250ZXh0OwogCi0JCW9sZENvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNo VG8oUG9ydGFsQ29udGV4dCk7CisJCW9sZENvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8o cG9ydGFsLT5xdWVyeUNvbnRleHQpOwogCiAJCS8qIE11c3QgcmVtZW1iZXIgcG9ydGFsIHBhcmFt IGxpc3QsIGlmIGFueSAqLwogCQlwb3J0YWwtPnBvcnRhbFBhcmFtcyA9IHBhcmFtczsKQEAgLTQ3 Miw2ICszODcsOCBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBh cmFtcywKIAkJc3dpdGNoIChwb3J0YWwtPnN0cmF0ZWd5KQogCQl7CiAJCQljYXNlIFBPUlRBTF9P TkVfU0VMRUNUOgorCQkJY2FzZSBQT1JUQUxfT05FX1JFVFVSTklORzoKKwkJCWNhc2UgUE9SVEFM X09ORV9NT0RfV0lUSDoKIAogCQkJCS8qIE11c3Qgc2V0IHNuYXBzaG90IGJlZm9yZSBzdGFydGlu ZyBleGVjdXRvci4gKi8KIAkJCQlpZiAoc25hcHNob3QpCkBAIC00OTMsNiArNDEwLDcgQEAgUG9y dGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJICogdGhl IGRlc3RpbmF0aW9uIHRvIERlc3ROb25lLgogCQkJCSAqLwogCQkJCXF1ZXJ5RGVzYyA9IENyZWF0 ZVF1ZXJ5RGVzYyhsaW5pdGlhbF9ub2RlKFBsYW5uZWRTdG10LCBwb3J0YWwtPnN0bXRzKSwKKwkJ CQkJCQkJCQkJcG9ydGFsLT5jcGxhbiwKIAkJCQkJCQkJCQkJcG9ydGFsLT5zb3VyY2VUZXh0LAog CQkJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLAogCQkJCQkJCQkJCQlJbnZhbGlkU25hcHNo b3QsCkBAIC01MDEsMzAgKzQxOSw1NiBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJh bUxpc3RJbmZvIHBhcmFtcywKIAkJCQkJCQkJCQkJcG9ydGFsLT5xdWVyeUVudiwKIAkJCQkJCQkJ CQkJMCk7CiAKKwkJCQkvKiBSZW1lbWJlciBmb3IgUG9ydGFsUnVuTXVsdGkoKS4gKi8KKwkJCQlp ZiAocG9ydGFsLT5zdHJhdGVneSA9PSBQT1JUQUxfT05FX1JFVFVSTklORyB8fAorCQkJCQlwb3J0 YWwtPnN0cmF0ZWd5ID09IFBPUlRBTF9PTkVfTU9EX1dJVEgpCisJCQkJCXBvcnRhbC0+cWRlc2Nz ID0gbGlzdF9tYWtlMShxdWVyeURlc2MpOworCiAJCQkJLyoKIAkJCQkgKiBJZiBpdCdzIGEgc2Ny b2xsYWJsZSBjdXJzb3IsIGV4ZWN1dG9yIG5lZWRzIHRvIHN1cHBvcnQKIAkJCQkgKiBSRVdJTkQg YW5kIGJhY2t3YXJkcyBzY2FuLCBhcyB3ZWxsIGFzIHdoYXRldmVyIHRoZSBjYWxsZXIKIAkJCQkg KiBtaWdodCd2ZSBhc2tlZCBmb3IuCiAJCQkJICovCi0JCQkJaWYgKHBvcnRhbC0+Y3Vyc29yT3B0 aW9ucyAmIENVUlNPUl9PUFRfU0NST0xMKQorCQkJCWlmIChwb3J0YWwtPnN0cmF0ZWd5ID09IFBP UlRBTF9PTkVfU0VMRUNUICYmCisJCQkJCShwb3J0YWwtPmN1cnNvck9wdGlvbnMgJiBDVVJTT1Jf T1BUX1NDUk9MTCkpCiAJCQkJCW15ZWZsYWdzID0gZWZsYWdzIHwgRVhFQ19GTEFHX1JFV0lORCB8 IEVYRUNfRkxBR19CQUNLV0FSRDsKIAkJCQllbHNlCiAJCQkJCW15ZWZsYWdzID0gZWZsYWdzOwog CisJCQkJLyogVGFrZSBsb2NrcyBpZiB1c2luZyBhIENhY2hlZFBsYW4gKi8KKwkJCQlpZiAocXVl cnlEZXNjLT5jcGxhbikKKwkJCQkJbXllZmxhZ3MgfD0gRVhFQ19GTEFHX0dFVF9MT0NLUzsKKwog CQkJCS8qCi0JCQkJICogQ2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9y IGV4ZWN1dGlvbgorCQkJCSAqIENhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFu IGZvciBleGVjdXRpb24uICBBCisJCQkJICogY2FjaGVkIHBsYW4gbWF5IGdldCBpbnZhbGlkYXRl ZCBhcyB3ZSdyZSBkb2luZyB0aGF0LgogCQkJCSAqLwogCQkJCUV4ZWN1dG9yU3RhcnQocXVlcnlE ZXNjLCBteWVmbGFncyk7CisJCQkJaWYgKCFxdWVyeURlc2MtPnBsYW5fdmFsaWQpCisJCQkJewor CQkJCQlBc3NlcnQocXVlcnlEZXNjLT5jcGxhbik7CisJCQkJCVBvcnRhbFF1ZXJ5RmluaXNoKHF1 ZXJ5RGVzYyk7CisJCQkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJCQkJCXBvcnRhbC0+cGxhbl92 YWxpZCA9IGZhbHNlOworCQkJCQlnb3RvIGVhcmx5X2V4aXQ7CisJCQkJfQogCiAJCQkJLyoKLQkJ CQkgKiBUaGlzIHRlbGxzIFBvcnRhbENsZWFudXAgdG8gc2h1dCBkb3duIHRoZSBleGVjdXRvcgor CQkJCSAqIFRoaXMgdGVsbHMgUG9ydGFsQ2xlYW51cCB0byBzaHV0IGRvd24gdGhlIGV4ZWN1dG9y LCB0aG91Z2gKKwkJCQkgKiBub3QgbmVlZGVkIGZvciBxdWVyaWVzIGhhbmRsZWQgYnkgUG9ydGFs UnVuTXVsdGkoKS4KIAkJCQkgKi8KLQkJCQlwb3J0YWwtPnF1ZXJ5RGVzYyA9IHF1ZXJ5RGVzYzsK KwkJCQlpZiAocG9ydGFsLT5zdHJhdGVneSA9PSBQT1JUQUxfT05FX1NFTEVDVCkKKwkJCQkJcG9y dGFsLT5xdWVyeURlc2MgPSBxdWVyeURlc2M7CiAKIAkJCQkvKgotCQkJCSAqIFJlbWVtYmVyIHR1 cGxlIGRlc2NyaXB0b3IgKGNvbXB1dGVkIGJ5IEV4ZWN1dG9yU3RhcnQpCisJCQkJICogUmVtZW1i ZXIgdHVwbGUgZGVzY3JpcHRvciAoY29tcHV0ZWQgYnkgRXhlY3V0b3JTdGFydCksCisJCQkJICog dGhvdWdoIG1ha2UgaXQgaW5kZXBlbmRlbnQgb2YgUXVlcnlEZXNjIGZvciBxdWVyaWVzIGhhbmRs ZWQKKwkJCQkgKiBieSBQb3J0YWxSdW5NdWx0aSgpLgogCQkJCSAqLwotCQkJCXBvcnRhbC0+dHVw RGVzYyA9IHF1ZXJ5RGVzYy0+dHVwRGVzYzsKKwkJCQlpZiAocG9ydGFsLT5zdHJhdGVneSAhPSBQ T1JUQUxfT05FX1NFTEVDVCkKKwkJCQkJcG9ydGFsLT50dXBEZXNjID0gQ3JlYXRlVHVwbGVEZXNj Q29weShxdWVyeURlc2MtPnR1cERlc2MpOworCQkJCWVsc2UKKwkJCQkJcG9ydGFsLT50dXBEZXNj ID0gcXVlcnlEZXNjLT50dXBEZXNjOwogCiAJCQkJLyoKIAkJCQkgKiBSZXNldCBjdXJzb3IgcG9z aXRpb24gZGF0YSB0byAic3RhcnQgb2YgcXVlcnkiCkBAIC01MzIsMzMgKzQ3NiwxMSBAQCBQb3J0 YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQlwb3J0YWwt PmF0U3RhcnQgPSB0cnVlOwogCQkJCXBvcnRhbC0+YXRFbmQgPSBmYWxzZTsJLyogYWxsb3cgZmV0 Y2hlcyAqLwogCQkJCXBvcnRhbC0+cG9ydGFsUG9zID0gMDsKKwkJCQlwb3J0YWwtPnBsYW5fdmFs aWQgPSB0cnVlOwogCiAJCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkJCQlicmVhazsKIAotCQkJ Y2FzZSBQT1JUQUxfT05FX1JFVFVSTklORzoKLQkJCWNhc2UgUE9SVEFMX09ORV9NT0RfV0lUSDoK LQotCQkJCS8qCi0JCQkJICogV2UgZG9uJ3Qgc3RhcnQgdGhlIGV4ZWN1dG9yIHVudGlsIHdlIGFy ZSB0b2xkIHRvIHJ1biB0aGUKLQkJCQkgKiBwb3J0YWwuICBXZSBkbyBuZWVkIHRvIHNldCB1cCB0 aGUgcmVzdWx0IHR1cGRlc2MuCi0JCQkJICovCi0JCQkJewotCQkJCQlQbGFubmVkU3RtdCAqcHN0 bXQ7Ci0KLQkJCQkJcHN0bXQgPSBQb3J0YWxHZXRQcmltYXJ5U3RtdChwb3J0YWwpOwotCQkJCQlw b3J0YWwtPnR1cERlc2MgPQotCQkJCQkJRXhlY0NsZWFuVHlwZUZyb21UTChwc3RtdC0+cGxhblRy ZWUtPnRhcmdldGxpc3QpOwotCQkJCX0KLQotCQkJCS8qCi0JCQkJICogUmVzZXQgY3Vyc29yIHBv c2l0aW9uIGRhdGEgdG8gInN0YXJ0IG9mIHF1ZXJ5IgotCQkJCSAqLwotCQkJCXBvcnRhbC0+YXRT dGFydCA9IHRydWU7Ci0JCQkJcG9ydGFsLT5hdEVuZCA9IGZhbHNlOwkvKiBhbGxvdyBmZXRjaGVz ICovCi0JCQkJcG9ydGFsLT5wb3J0YWxQb3MgPSAwOwotCQkJCWJyZWFrOwotCiAJCQljYXNlIFBP UlRBTF9VVElMX1NFTEVDVDoKIAogCQkJCS8qCkBAIC01NzgsMTEgKzUwMCw5MCBAQCBQb3J0YWxT dGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQlwb3J0YWwtPmF0 U3RhcnQgPSB0cnVlOwogCQkJCXBvcnRhbC0+YXRFbmQgPSBmYWxzZTsJLyogYWxsb3cgZmV0Y2hl cyAqLwogCQkJCXBvcnRhbC0+cG9ydGFsUG9zID0gMDsKKwkJCQlwb3J0YWwtPnBsYW5fdmFsaWQg PSB0cnVlOwogCQkJCWJyZWFrOwogCiAJCQljYXNlIFBPUlRBTF9NVUxUSV9RVUVSWToKLQkJCQkv KiBOZWVkIGRvIG5vdGhpbmcgbm93ICovCisJCQkJeworCQkJCQlMaXN0Q2VsbCAgICpsYzsKKwkJ CQkJYm9vbAkJZmlyc3QgPSB0cnVlOworCisJCQkJCS8qIFRha2UgbG9ja3MgaWYgdXNpbmcgYSBD YWNoZWRQbGFuICovCisJCQkJCW15ZWZsYWdzID0gMDsKKwkJCQkJaWYgKHBvcnRhbC0+Y3BsYW4p CisJCQkJCQlteWVmbGFncyB8PSBFWEVDX0ZMQUdfR0VUX0xPQ0tTOworCisJCQkJCWZvcmVhY2go bGMsIHBvcnRhbC0+c3RtdHMpCisJCQkJCXsKKwkJCQkJCVBsYW5uZWRTdG10ICpwbGFuID0gbGZp cnN0X25vZGUoUGxhbm5lZFN0bXQsIGxjKTsKKwkJCQkJCWJvb2wJCWlzX3V0aWxpdHkgPSAocGxh bi0+dXRpbGl0eVN0bXQgIT0gTlVMTCk7CisKKwkJCQkJCS8qCisJCQkJCQkgKiBQdXNoIHRoZSBz bmFwc2hvdCB0byBiZSB1c2VkIGJ5IHRoZSBleGVjdXRvci4KKwkJCQkJCSAqLworCQkJCQkJaWYg KCFpc191dGlsaXR5KQorCQkJCQkJeworCQkJCQkJCS8qCisJCQkJCQkJICogTXVzdCBjb3B5IHRo ZSBzbmFwc2hvdCBpZiB3ZSdsbCBuZWVkIHRvIHVwZGF0ZQorCQkJCQkJCSAqIGl0cyBjb21tYW5k IElELgorCQkJCQkJCSAqLworCQkJCQkJCWlmICghZmlyc3QpCisJCQkJCQkJCVB1c2hDb3BpZWRT bmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQkJCQkJCWVsc2UKKwkJCQkJCQkJ UHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJCQkJCQl9CisK KwkJCQkJCS8qCisJCQkJCQkgKiBGcm9tIHRoZSAybmQgc3RhdGVtZW50IG9ud2FyZHMsIHVwZGF0 ZSB0aGUgY29tbWFuZAorCQkJCQkJICogSUQgYW5kIHRoZSBzbmFwc2hvdCB0byBtYXRjaC4KKwkJ CQkJCSAqLworCQkJCQkJaWYgKCFmaXJzdCkKKwkJCQkJCXsKKwkJCQkJCQlDb21tYW5kQ291bnRl ckluY3JlbWVudCgpOworCQkJCQkJCVVwZGF0ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElkKCk7CisJ CQkJCQl9CisKKwkJCQkJCWZpcnN0ID0gZmFsc2U7CisKKwkJCQkJCS8qCisJCQkJCQkgKiBDcmVh dGUgdGhlIFF1ZXJ5RGVzYyBvYmplY3QuICBEZXN0UmVjZWl2ZXIgd2lsbAorCQkJCQkJICogYmUg c2V0IGluIFBvcnRhbFJ1bk11bHRpKCkuCisJCQkJCQkgKi8KKwkJCQkJCXF1ZXJ5RGVzYyA9IENy ZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBwb3J0YWwtPmNwbGFuLAorCQkJCQkJCQkJCQkJCXBvcnRhbC0+ c291cmNlVGV4dCwKKwkJCQkJCQkJCQkJCQkhaXNfdXRpbGl0eSA/CisJCQkJCQkJCQkJCQkJR2V0 QWN0aXZlU25hcHNob3QoKSA6CisJCQkJCQkJCQkJCQkJSW52YWxpZFNuYXBzaG90LAorCQkJCQkJ CQkJCQkJCUludmFsaWRTbmFwc2hvdCwKKwkJCQkJCQkJCQkJCQlOVUxMLAorCQkJCQkJCQkJCQkJ CXBhcmFtcywKKwkJCQkJCQkJCQkJCQlwb3J0YWwtPnF1ZXJ5RW52LCAwKTsKKworCQkJCQkJLyog UmVtZW1iZXIgZm9yIFBvcnRhbFJ1bk11bHRpKCkgKi8KKwkJCQkJCXBvcnRhbC0+cWRlc2NzID0g bGFwcGVuZChwb3J0YWwtPnFkZXNjcywgcXVlcnlEZXNjKTsKKworCQkJCQkJaWYgKGlzX3V0aWxp dHkpCisJCQkJCQkJY29udGludWU7CisKKwkJCQkJCS8qCisJCQkJCQkgKiBDYWxsIEV4ZWN1dG9y U3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IKKwkJCQkJCSAqIGV4ZWN1dGlvbi4gIEEgY2Fj aGVkIHBsYW4gbWF5IGdldCBpbnZhbGlkYXRlZCBhcworCQkJCQkJICogd2UncmUgZG9pbmcgdGhh dC4KKwkJCQkJCSAqLworCQkJCQkJRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIG15ZWZsYWdzKTsK KwkJCQkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJCQkJCQlpZiAoIXF1ZXJ5RGVzYy0+cGxhbl92 YWxpZCkKKwkJCQkJCXsKKwkJCQkJCQlBc3NlcnQocXVlcnlEZXNjLT5jcGxhbik7CisJCQkJCQkJ UG9ydGFsUXVlcnlGaW5pc2gocXVlcnlEZXNjKTsKKwkJCQkJCQlwb3J0YWwtPnBsYW5fdmFsaWQg PSBmYWxzZTsKKwkJCQkJCQlnb3RvIGVhcmx5X2V4aXQ7CisJCQkJCQl9CisJCQkJCX0KKwkJCQl9 CisKIAkJCQlwb3J0YWwtPnR1cERlc2MgPSBOVUxMOworCQkJCXBvcnRhbC0+cGxhbl92YWxpZCA9 IHRydWU7CiAJCQkJYnJlYWs7CiAJCX0KIAl9CkBAIC01OTQsMTkgKzU5NSwxOCBAQCBQb3J0YWxT dGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJLyogUmVzdG9yZSBn bG9iYWwgdmFycyBhbmQgcHJvcGFnYXRlIGVycm9yICovCiAJCUFjdGl2ZVBvcnRhbCA9IHNhdmVB Y3RpdmVQb3J0YWw7CiAJCUN1cnJlbnRSZXNvdXJjZU93bmVyID0gc2F2ZVJlc291cmNlT3duZXI7 Ci0JCVBvcnRhbENvbnRleHQgPSBzYXZlUG9ydGFsQ29udGV4dDsKIAogCQlQR19SRV9USFJPVygp OwogCX0KIAlQR19FTkRfVFJZKCk7CiAKKwlwb3J0YWwtPnN0YXR1cyA9IFBPUlRBTF9SRUFEWTsK KworZWFybHlfZXhpdDoKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkQ29udGV4dCk7CiAKIAlB Y3RpdmVQb3J0YWwgPSBzYXZlQWN0aXZlUG9ydGFsOwogCUN1cnJlbnRSZXNvdXJjZU93bmVyID0g c2F2ZVJlc291cmNlT3duZXI7Ci0JUG9ydGFsQ29udGV4dCA9IHNhdmVQb3J0YWxDb250ZXh0Owot Ci0JcG9ydGFsLT5zdGF0dXMgPSBQT1JUQUxfUkVBRFk7CiB9CiAKIC8qCkBAIC0xMTkzLDcgKzEx OTMsNyBAQCBQb3J0YWxSdW5NdWx0aShQb3J0YWwgcG9ydGFsLAogCQkJICAgUXVlcnlDb21wbGV0 aW9uICpxYykKIHsKIAlib29sCQlhY3RpdmVfc25hcHNob3Rfc2V0ID0gZmFsc2U7Ci0JTGlzdENl bGwgICAqc3RtdGxpc3RfaXRlbTsKKwlMaXN0Q2VsbCAgICpxZGVzY19pdGVtOwogCiAJLyoKIAkg KiBJZiB0aGUgZGVzdGluYXRpb24gaXMgRGVzdFJlbW90ZUV4ZWN1dGUsIGNoYW5nZSB0byBEZXN0 Tm9uZS4gIFRoZQpAQCAtMTIxNCw5ICsxMjE0LDEwIEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBw b3J0YWwsCiAJICogTG9vcCB0byBoYW5kbGUgdGhlIGluZGl2aWR1YWwgcXVlcmllcyBnZW5lcmF0 ZWQgZnJvbSBhIHNpbmdsZSBwYXJzZXRyZWUKIAkgKiBieSBhbmFseXNpcyBhbmQgcmV3cml0ZS4K IAkgKi8KLQlmb3JlYWNoKHN0bXRsaXN0X2l0ZW0sIHBvcnRhbC0+c3RtdHMpCisJZm9yZWFjaChx ZGVzY19pdGVtLCBwb3J0YWwtPnFkZXNjcykKIAl7Ci0JCVBsYW5uZWRTdG10ICpwc3RtdCA9IGxm aXJzdF9ub2RlKFBsYW5uZWRTdG10LCBzdG10bGlzdF9pdGVtKTsKKwkJUXVlcnlEZXNjICpxZGVz YyA9IChRdWVyeURlc2MgKikgbGZpcnN0KHFkZXNjX2l0ZW0pOworCQlQbGFubmVkU3RtdCAqcHN0 bXQgPSBxZGVzYy0+cGxhbm5lZHN0bXQ7CiAKIAkJLyoKIAkJICogSWYgd2UgZ290IGEgY2FuY2Vs IHNpZ25hbCBpbiBwcmlvciBjb21tYW5kLCBxdWl0CkBAIC0xMjcxLDIzICsxMjcyLDM4IEBAIFBv cnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJCQllbHNlCiAJCQkJVXBkYXRlQWN0aXZlU25h cHNob3RDb21tYW5kSWQoKTsKIAorCQkJLyoKKwkJCSAqIFJ1biB0aGUgcGxhbiB0byBjb21wbGV0 aW9uLgorCQkJICovCisJCQlxZGVzYy0+ZGVzdCA9IGRlc3Q7CisJCQlFeGVjdXRvclJ1bihxZGVz YywgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIDBMLCB0cnVlKTsKKworCQkJLyoKKwkJCSAqIEJ1aWxk IGNvbW1hbmQgY29tcGxldGlvbiBzdGF0dXMgZGF0YSBpZiBuZWVkZWQuCisJCQkgKi8KIAkJCWlm IChwc3RtdC0+Y2FuU2V0VGFnKQogCQkJewotCQkJCS8qIHN0YXRlbWVudCBjYW4gc2V0IHRhZyBz dHJpbmcgKi8KLQkJCQlQcm9jZXNzUXVlcnkocHN0bXQsCi0JCQkJCQkJIHBvcnRhbC0+c291cmNl VGV4dCwKLQkJCQkJCQkgcG9ydGFsLT5wb3J0YWxQYXJhbXMsCi0JCQkJCQkJIHBvcnRhbC0+cXVl cnlFbnYsCi0JCQkJCQkJIGRlc3QsIHFjKTsKLQkJCX0KLQkJCWVsc2UKLQkJCXsKLQkJCQkvKiBz dG10IGFkZGVkIGJ5IHJld3JpdGUgY2Fubm90IHNldCB0YWcgKi8KLQkJCQlQcm9jZXNzUXVlcnko cHN0bXQsCi0JCQkJCQkJIHBvcnRhbC0+c291cmNlVGV4dCwKLQkJCQkJCQkgcG9ydGFsLT5wb3J0 YWxQYXJhbXMsCi0JCQkJCQkJIHBvcnRhbC0+cXVlcnlFbnYsCi0JCQkJCQkJIGFsdGRlc3QsIE5V TEwpOworCQkJCXN3aXRjaCAocWRlc2MtPm9wZXJhdGlvbikKKwkJCQl7CisJCQkJCWNhc2UgQ01E X1NFTEVDVDoKKwkJCQkJCVNldFF1ZXJ5Q29tcGxldGlvbihxYywgQ01EVEFHX1NFTEVDVCwgcWRl c2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKKwkJCQkJCWJyZWFrOworCQkJCQljYXNlIENNRF9J TlNFUlQ6CisJCQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19JTlNFUlQsIHFkZXNj LT5lc3RhdGUtPmVzX3Byb2Nlc3NlZCk7CisJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBDTURfVVBE QVRFOgorCQkJCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURUQUdfVVBEQVRFLCBxZGVzYy0+ ZXN0YXRlLT5lc19wcm9jZXNzZWQpOworCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgQ01EX0RFTEVU RToKKwkJCQkJCVNldFF1ZXJ5Q29tcGxldGlvbihxYywgQ01EVEFHX0RFTEVURSwgcWRlc2MtPmVz dGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKKwkJCQkJCWJyZWFrOworCQkJCQljYXNlIENNRF9NRVJHRToK KwkJCQkJCVNldFF1ZXJ5Q29tcGxldGlvbihxYywgQ01EVEFHX01FUkdFLCBxZGVzYy0+ZXN0YXRl LT5lc19wcm9jZXNzZWQpOworCQkJCQkJYnJlYWs7CisJCQkJCWRlZmF1bHQ6CisJCQkJCQlTZXRR dWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19VTktOT1dOLCBxZGVzYy0+ZXN0YXRlLT5lc19wcm9j ZXNzZWQpOworCQkJCQkJYnJlYWs7CisJCQkJfQogCQkJfQogCiAJCQlpZiAobG9nX2V4ZWN1dG9y X3N0YXRzKQpAQCAtMTM0Niw4ICsxMzYyLDE1IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0 YWwsCiAJCSAqIEluY3JlbWVudCBjb21tYW5kIGNvdW50ZXIgYmV0d2VlbiBxdWVyaWVzLCBidXQg bm90IGFmdGVyIHRoZSBsYXN0CiAJCSAqIG9uZS4KIAkJICovCi0JCWlmIChsbmV4dChwb3J0YWwt PnN0bXRzLCBzdG10bGlzdF9pdGVtKSAhPSBOVUxMKQorCQlpZiAobG5leHQocG9ydGFsLT5xZGVz Y3MsIHFkZXNjX2l0ZW0pICE9IE5VTEwpCiAJCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOwor CisJCWlmIChxZGVzYy0+ZXN0YXRlKQorCQl7CisJCQlFeGVjdXRvckZpbmlzaChxZGVzYyk7CisJ CQlFeGVjdXRvckVuZChxZGVzYyk7CisJCX0KKwkJRnJlZVF1ZXJ5RGVzYyhxZGVzYyk7CiAJfQog CiAJLyogUG9wIHRoZSBzbmFwc2hvdCBpZiB3ZSBwdXNoZWQgb25lLiAqLwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9j YWNoZS9sc3lzY2FjaGUuYwppbmRleCBjMDczODIwNTFkLi4zOGFlNDNlMjRiIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9jYWNoZS9sc3lzY2FjaGUuYwpAQCAtMjA3Myw2ICsyMDczLDI3IEBAIGdldF9yZWxfcGVy c2lzdGVuY2UoT2lkIHJlbGlkKQogCXJldHVybiByZXN1bHQ7CiB9CiAKKy8qCisgKiBnZXRfcmVs X3JlbGlzc2hhcmVkCisgKgorICoJCVJldHVybnMgaWYgdGhlIGdpdmVuIHJlbGF0aW9uIGlzIHNo YXJlZCBvciBub3QKKyAqLworYm9vbAorZ2V0X3JlbF9yZWxpc3NoYXJlZChPaWQgcmVsaWQpCit7 CisJSGVhcFR1cGxlCXRwOworCUZvcm1fcGdfY2xhc3MgcmVsdHVwOworCWJvb2wJCXJlc3VsdDsK KworCXRwID0gU2VhcmNoU3lzQ2FjaGUxKFJFTE9JRCwgT2JqZWN0SWRHZXREYXR1bShyZWxpZCkp OworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29r dXAgZmFpbGVkIGZvciByZWxhdGlvbiAldSIsIHJlbGlkKTsKKwlyZWx0dXAgPSAoRm9ybV9wZ19j bGFzcykgR0VUU1RSVUNUKHRwKTsKKwlyZXN1bHQgPSByZWx0dXAtPnJlbGlzc2hhcmVkOworCVJl bGVhc2VTeXNDYWNoZSh0cCk7CisKKwlyZXR1cm4gcmVzdWx0OworfQogCiAvKgkJCQktLS0tLS0t LS0tIFRSQU5TRk9STSBDQUNIRSAtLS0tLS0tLS0tCQkJCQkJICovCiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvcGxhbmNhY2hlLmMKaW5kZXggNzdjMmJhM2Y4Zi4uNGU0NTVkODE1ZiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvcGxhbmNhY2hlLmMKQEAgLTEwMCwxMyArMTAwLDEzIEBAIHN0YXRpYyB2b2lkIFJl bGVhc2VHZW5lcmljUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKTsKIHN0YXRpYyBM aXN0ICpSZXZhbGlkYXRlQ2FjaGVkUXVlcnkoQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwK IAkJCQkJCQkJICAgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpOwogc3RhdGljIGJvb2wgQ2hl Y2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpOworc3RhdGljIGJvb2wg R2VuZXJpY1BsYW5Jc1ZhbGlkKENhY2hlZFBsYW4gKmNwbGFuKTsKIHN0YXRpYyBDYWNoZWRQbGFu ICpCdWlsZENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgTGlzdCAqcWxp c3QsCiAJCQkJCQkJCSAgIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsIFF1ZXJ5RW52aXJvbm1l bnQgKnF1ZXJ5RW52KTsKIHN0YXRpYyBib29sIGNob29zZV9jdXN0b21fcGxhbihDYWNoZWRQbGFu U291cmNlICpwbGFuc291cmNlLAogCQkJCQkJCSAgIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMp Owogc3RhdGljIGRvdWJsZSBjYWNoZWRfcGxhbl9jb3N0KENhY2hlZFBsYW4gKnBsYW4sIGJvb2wg aW5jbHVkZV9wbGFubmVyKTsKIHN0YXRpYyBRdWVyeSAqUXVlcnlMaXN0R2V0UHJpbWFyeVN0bXQo TGlzdCAqc3RtdHMpOwotc3RhdGljIHZvaWQgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoTGlzdCAqc3Rt dF9saXN0LCBib29sIGFjcXVpcmUpOwogc3RhdGljIHZvaWQgQWNxdWlyZVBsYW5uZXJMb2NrcyhM aXN0ICpzdG10X2xpc3QsIGJvb2wgYWNxdWlyZSk7CiBzdGF0aWMgdm9pZCBTY2FuUXVlcnlGb3JM b2NrcyhRdWVyeSAqcGFyc2V0cmVlLCBib29sIGFjcXVpcmUpOwogc3RhdGljIGJvb2wgU2NhblF1 ZXJ5V2Fsa2VyKE5vZGUgKm5vZGUsIGJvb2wgKmFjcXVpcmUpOwpAQCAtNzg3LDkgKzc4Nyw2IEBA IFJldmFsaWRhdGVDYWNoZWRRdWVyeShDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogICoK ICAqIENhbGxlciBtdXN0IGhhdmUgYWxyZWFkeSBjYWxsZWQgUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5 IHRvIHZlcmlmeSB0aGF0IHRoZQogICogcXVlcnl0cmVlIGlzIHVwIHRvIGRhdGUuCi0gKgotICog T24gYSAidHJ1ZSIgcmV0dXJuLCB3ZSBoYXZlIGFjcXVpcmVkIHRoZSBsb2NrcyBuZWVkZWQgdG8g cnVuIHRoZSBwbGFuLgotICogKFdlIG11c3QgZG8gdGhpcyBmb3IgdGhlICJ0cnVlIiByZXN1bHQg dG8gYmUgcmFjZS1jb25kaXRpb24tZnJlZS4pCiAgKi8KIHN0YXRpYyBib29sCiBDaGVja0NhY2hl ZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSkKQEAgLTgwMyw2MCArODAwLDU2IEBA IENoZWNrQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKQogCWlmICghcGxh bikKIAkJcmV0dXJuIGZhbHNlOwogCi0JQXNzZXJ0KHBsYW4tPm1hZ2ljID09IENBQ0hFRFBMQU5f TUFHSUMpOwotCS8qIEdlbmVyaWMgcGxhbnMgYXJlIG5ldmVyIG9uZS1zaG90ICovCi0JQXNzZXJ0 KCFwbGFuLT5pc19vbmVzaG90KTsKKwlpZiAoR2VuZXJpY1BsYW5Jc1ZhbGlkKHBsYW4pKQorCQly ZXR1cm4gdHJ1ZTsKIAogCS8qCi0JICogSWYgcGxhbiBpc24ndCB2YWxpZCBmb3IgY3VycmVudCBy b2xlLCB3ZSBjYW4ndCB1c2UgaXQuCisJICogUGxhbiBoYXMgYmVlbiBpbnZhbGlkYXRlZCwgc28g dW5saW5rIGl0IGZyb20gdGhlIHBhcmVudCBhbmQgcmVsZWFzZSBpdC4KIAkgKi8KLQlpZiAocGxh bi0+aXNfdmFsaWQgJiYgcGxhbi0+ZGVwZW5kc09uUm9sZSAmJgotCQlwbGFuLT5wbGFuUm9sZUlk ICE9IEdldFVzZXJJZCgpKQotCQlwbGFuLT5pc192YWxpZCA9IGZhbHNlOworCVJlbGVhc2VHZW5l cmljUGxhbihwbGFuc291cmNlKTsKIAotCS8qCi0JICogSWYgaXQgYXBwZWFycyB2YWxpZCwgYWNx dWlyZSBsb2NrcyBhbmQgcmVjaGVjazsgdGhpcyBpcyBtdWNoIHRoZSBzYW1lCi0JICogbG9naWMg YXMgaW4gUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5LCBidXQgZm9yIGEgcGxhbi4KLQkgKi8KLQlpZiAo cGxhbi0+aXNfdmFsaWQpCisJcmV0dXJuIGZhbHNlOworfQorCisvKgorICogR2VuZXJpY1BsYW5J c1ZhbGlkCisgKgkJSXMgYSBnZW5lcmljIHBsYW4gc3RpbGwgdmFsaWQ/CisgKgorICogSXQgbWF5 IGhhdmUgZ29uZSBzdGFsZSBkdWUgdG8gY29uY3VycmVudCBzY2hlbWEgbW9kaWZpY2F0aW9ucyBv ZiByZWxhdGlvbnMKKyAqIG1lbnRpb25lZCBpbiB0aGUgcGxhbiBvciBhIGNvdXBsZSBvZiBvdGhl ciB0aGluZ3MgbWVudGlvbmVkIGJlbG93LgorICovCitzdGF0aWMgYm9vbAorR2VuZXJpY1BsYW5J c1ZhbGlkKENhY2hlZFBsYW4gKmNwbGFuKQoreworCUFzc2VydChjcGxhbiAhPSBOVUxMKTsKKwlB c3NlcnQoY3BsYW4tPm1hZ2ljID09IENBQ0hFRFBMQU5fTUFHSUMpOworCS8qIEdlbmVyaWMgcGxh bnMgYXJlIG5ldmVyIG9uZS1zaG90ICovCisJQXNzZXJ0KCFjcGxhbi0+aXNfb25lc2hvdCk7CisK KwlpZiAoY3BsYW4tPmlzX3ZhbGlkKQogCXsKIAkJLyoKIAkJICogUGxhbiBtdXN0IGhhdmUgcG9z aXRpdmUgcmVmY291bnQgYmVjYXVzZSBpdCBpcyByZWZlcmVuY2VkIGJ5CiAJCSAqIHBsYW5zb3Vy Y2U7IHNvIG5vIG5lZWQgdG8gZmVhciBpdCBkaXNhcHBlYXJzIHVuZGVyIHVzIGhlcmUuCiAJCSAq LwotCQlBc3NlcnQocGxhbi0+cmVmY291bnQgPiAwKTsKLQotCQlBY3F1aXJlRXhlY3V0b3JMb2Nr cyhwbGFuLT5zdG10X2xpc3QsIHRydWUpOworCQlBc3NlcnQoY3BsYW4tPnJlZmNvdW50ID4gMCk7 CiAKIAkJLyoKLQkJICogSWYgcGxhbiB3YXMgdHJhbnNpZW50LCBjaGVjayB0byBzZWUgaWYgVHJh bnNhY3Rpb25YbWluIGhhcwotCQkgKiBhZHZhbmNlZCwgYW5kIGlmIHNvIGludmFsaWRhdGUgaXQu CisJCSAqIElmIHBsYW4gaXNuJ3QgdmFsaWQgZm9yIGN1cnJlbnQgcm9sZSwgd2UgY2FuJ3QgdXNl IGl0LgogCQkgKi8KLQkJaWYgKHBsYW4tPmlzX3ZhbGlkICYmCi0JCQlUcmFuc2FjdGlvbklkSXNW YWxpZChwbGFuLT5zYXZlZF94bWluKSAmJgotCQkJIVRyYW5zYWN0aW9uSWRFcXVhbHMocGxhbi0+ c2F2ZWRfeG1pbiwgVHJhbnNhY3Rpb25YbWluKSkKLQkJCXBsYW4tPmlzX3ZhbGlkID0gZmFsc2U7 CisJCWlmIChjcGxhbi0+ZGVwZW5kc09uUm9sZSAmJiBjcGxhbi0+cGxhblJvbGVJZCAhPSBHZXRV c2VySWQoKSkKKwkJCWNwbGFuLT5pc192YWxpZCA9IGZhbHNlOwogCiAJCS8qCi0JCSAqIEJ5IG5v dywgaWYgYW55IGludmFsaWRhdGlvbiBoYXMgaGFwcGVuZWQsIHRoZSBpbnZhbCBjYWxsYmFjawot CQkgKiBmdW5jdGlvbnMgd2lsbCBoYXZlIG1hcmtlZCB0aGUgcGxhbiBpbnZhbGlkLgorCQkgKiBJ ZiBwbGFuIHdhcyB0cmFuc2llbnQsIGNoZWNrIHRvIHNlZSBpZiBUcmFuc2FjdGlvblhtaW4gaGFz CisJCSAqIGFkdmFuY2VkLCBhbmQgaWYgc28gaW52YWxpZGF0ZSBpdC4KIAkJICovCi0JCWlmIChw bGFuLT5pc192YWxpZCkKLQkJewotCQkJLyogU3VjY2Vzc2Z1bGx5IHJldmFsaWRhdGVkIGFuZCBs b2NrZWQgdGhlIHF1ZXJ5LiAqLwotCQkJcmV0dXJuIHRydWU7Ci0JCX0KLQotCQkvKiBPb3BzLCB0 aGUgcmFjZSBjYXNlIGhhcHBlbmVkLiAgUmVsZWFzZSB1c2VsZXNzIGxvY2tzLiAqLwotCQlBY3F1 aXJlRXhlY3V0b3JMb2NrcyhwbGFuLT5zdG10X2xpc3QsIGZhbHNlKTsKKwkJaWYgKFRyYW5zYWN0 aW9uSWRJc1ZhbGlkKGNwbGFuLT5zYXZlZF94bWluKSAmJgorCQkJIVRyYW5zYWN0aW9uSWRFcXVh bHMoY3BsYW4tPnNhdmVkX3htaW4sIFRyYW5zYWN0aW9uWG1pbikpCisJCQljcGxhbi0+aXNfdmFs aWQgPSBmYWxzZTsKIAl9CiAKLQkvKgotCSAqIFBsYW4gaGFzIGJlZW4gaW52YWxpZGF0ZWQsIHNv IHVubGluayBpdCBmcm9tIHRoZSBwYXJlbnQgYW5kIHJlbGVhc2UgaXQuCi0JICovCi0JUmVsZWFz ZUdlbmVyaWNQbGFuKHBsYW5zb3VyY2UpOwotCi0JcmV0dXJuIGZhbHNlOworCXJldHVybiBjcGxh bi0+aXNfdmFsaWQ7CiB9CiAKIC8qCkBAIC0xMTI2LDkgKzExMTksNiBAQCBjYWNoZWRfcGxhbl9j b3N0KENhY2hlZFBsYW4gKnBsYW4sIGJvb2wgaW5jbHVkZV9wbGFubmVyKQogICogcGxhbiBvciBh IGN1c3RvbSBwbGFuIGZvciB0aGUgZ2l2ZW4gcGFyYW1ldGVyczogdGhlIGNhbGxlciBkb2VzIG5v dCBrbm93CiAgKiB3aGljaCBpdCB3aWxsIGdldC4KICAqCi0gKiBPbiByZXR1cm4sIHRoZSBwbGFu IGlzIHZhbGlkIGFuZCB3ZSBoYXZlIHN1ZmZpY2llbnQgbG9ja3MgdG8gYmVnaW4KLSAqIGV4ZWN1 dGlvbi4KLSAqCiAgKiBPbiByZXR1cm4sIHRoZSByZWZjb3VudCBvZiB0aGUgcGxhbiBoYXMgYmVl biBpbmNyZW1lbnRlZDsgYSBsYXRlcgogICogUmVsZWFzZUNhY2hlZFBsYW4oKSBjYWxsIGlzIGV4 cGVjdGVkLiAgSWYgIm93bmVyIiBpcyBub3QgTlVMTCB0aGVuCiAgKiB0aGUgcmVmY291bnQgaGFz IGJlZW4gcmVwb3J0ZWQgdG8gdGhhdCBSZXNvdXJjZU93bmVyIChub3RlIHRoYXQgdGhpcwpAQCAt MTM2MCw4ICsxMzUwLDggQEAgQ2FjaGVkUGxhbkFsbG93c1NpbXBsZVZhbGlkaXR5Q2hlY2soQ2Fj aGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIAl9CiAKIAkvKgotCSAqIFJlamVjdCBpZiBBY3F1 aXJlRXhlY3V0b3JMb2NrcyB3b3VsZCBoYXZlIGFueXRoaW5nIHRvIGRvLiAgVGhpcyBpcwotCSAq IHByb2JhYmx5IHVubmVjZXNzYXJ5IGdpdmVuIHRoZSBwcmV2aW91cyBjaGVjaywgYnV0IGxldCdz IGJlIHNhZmUuCisJICogUmVqZWN0IGlmIHRoZSBleGVjdXRvciB3b3VsZCBuZWVkIHRvIHRha2Ug YWRkaXRpb25hbCBsb2NrcywgdGhhdCBpcywgaW4KKwkgKiBhZGRpdGlvbiB0byB0aG9zZSB0YWtl biBieSBBY3F1aXJlUGxhbm5lckxvY2tzKCkgb24gYSBnaXZlbiBxdWVyeS4KIAkgKi8KIAlmb3Jl YWNoKGxjLCBwbGFuLT5zdG10X2xpc3QpCiAJewpAQCAtMTczNSw1OCArMTcyNSw2IEBAIFF1ZXJ5 TGlzdEdldFByaW1hcnlTdG10KExpc3QgKnN0bXRzKQogCXJldHVybiBOVUxMOwogfQogCi0vKgot ICogQWNxdWlyZUV4ZWN1dG9yTG9ja3M6IGFjcXVpcmUgbG9ja3MgbmVlZGVkIGZvciBleGVjdXRp b24gb2YgYSBjYWNoZWQgcGxhbjsKLSAqIG9yIHJlbGVhc2UgdGhlbSBpZiBhY3F1aXJlIGlzIGZh bHNlLgotICovCi1zdGF0aWMgdm9pZAotQWNxdWlyZUV4ZWN1dG9yTG9ja3MoTGlzdCAqc3RtdF9s aXN0LCBib29sIGFjcXVpcmUpCi17Ci0JTGlzdENlbGwgICAqbGMxOwotCi0JZm9yZWFjaChsYzEs IHN0bXRfbGlzdCkKLQl7Ci0JCVBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCA9IGxmaXJzdF9ub2Rl KFBsYW5uZWRTdG10LCBsYzEpOwotCQlMaXN0Q2VsbCAgICpsYzI7Ci0KLQkJaWYgKHBsYW5uZWRz dG10LT5jb21tYW5kVHlwZSA9PSBDTURfVVRJTElUWSkKLQkJewotCQkJLyoKLQkJCSAqIElnbm9y ZSB1dGlsaXR5IHN0YXRlbWVudHMsIGV4Y2VwdCB0aG9zZSAoc3VjaCBhcyBFWFBMQUlOKSB0aGF0 Ci0JCQkgKiBjb250YWluIGEgcGFyc2VkLWJ1dC1ub3QtcGxhbm5lZCBxdWVyeS4gIE5vdGU6IGl0 J3Mgb2theSB0byB1c2UKLQkJCSAqIFNjYW5RdWVyeUZvckxvY2tzLCBldmVuIHRob3VnaCB0aGUg cXVlcnkgaGFzbid0IGJlZW4gdGhyb3VnaAotCQkJICogcnVsZSByZXdyaXRpbmcsIGJlY2F1c2Ug cmV3cml0aW5nIGRvZXNuJ3QgY2hhbmdlIHRoZSBxdWVyeQotCQkJICogcmVwcmVzZW50YXRpb24u Ci0JCQkgKi8KLQkJCVF1ZXJ5CSAgICpxdWVyeSA9IFV0aWxpdHlDb250YWluc1F1ZXJ5KHBsYW5u ZWRzdG10LT51dGlsaXR5U3RtdCk7Ci0KLQkJCWlmIChxdWVyeSkKLQkJCQlTY2FuUXVlcnlGb3JM b2NrcyhxdWVyeSwgYWNxdWlyZSk7Ci0JCQljb250aW51ZTsKLQkJfQotCi0JCWZvcmVhY2gobGMy LCBwbGFubmVkc3RtdC0+cnRhYmxlKQotCQl7Ci0JCQlSYW5nZVRibEVudHJ5ICpydGUgPSAoUmFu Z2VUYmxFbnRyeSAqKSBsZmlyc3QobGMyKTsKLQotCQkJaWYgKCEocnRlLT5ydGVraW5kID09IFJU RV9SRUxBVElPTiB8fAotCQkJCSAgKHJ0ZS0+cnRla2luZCA9PSBSVEVfU1VCUVVFUlkgJiYgT2lk SXNWYWxpZChydGUtPnJlbGlkKSkpKQotCQkJCWNvbnRpbnVlOwotCi0JCQkvKgotCQkJICogQWNx dWlyZSB0aGUgYXBwcm9wcmlhdGUgdHlwZSBvZiBsb2NrIG9uIGVhY2ggcmVsYXRpb24gT0lELiBO b3RlCi0JCQkgKiB0aGF0IHdlIGRvbid0IGFjdHVhbGx5IHRyeSB0byBvcGVuIHRoZSByZWwsIGFu ZCBoZW5jZSB3aWxsIG5vdAotCQkJICogZmFpbCBpZiBpdCdzIGJlZW4gZHJvcHBlZCBlbnRpcmVs eSAtLS0gd2UnbGwganVzdCB0cmFuc2llbnRseQotCQkJICogYWNxdWlyZSBhIG5vbi1jb25mbGlj dGluZyBsb2NrLgotCQkJICovCi0JCQlpZiAoYWNxdWlyZSkKLQkJCQlMb2NrUmVsYXRpb25PaWQo cnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7Ci0JCQllbHNlCi0JCQkJVW5sb2NrUmVsYXRp b25PaWQocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7Ci0JCX0KLQl9Ci19Ci0KIC8qCiAg KiBBY3F1aXJlUGxhbm5lckxvY2tzOiBhY3F1aXJlIGxvY2tzIG5lZWRlZCBmb3IgcGxhbm5pbmcg b2YgYSBxdWVyeXRyZWUgbGlzdDsKICAqIG9yIHJlbGVhc2UgdGhlbSBpZiBhY3F1aXJlIGlzIGZh bHNlLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKaW5kZXggMDZkZmE4NWYwNC4uM2FkODBj N2VjYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCkBAIC0yMDEsNiArMjAxLDEwIEBA IENyZWF0ZVBvcnRhbChjb25zdCBjaGFyICpuYW1lLCBib29sIGFsbG93RHVwLCBib29sIGR1cFNp bGVudCkKIAlwb3J0YWwtPnBvcnRhbENvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoVG9w UG9ydGFsQ29udGV4dCwKIAkJCQkJCQkJCQkJCSAgIlBvcnRhbENvbnRleHQiLAogCQkJCQkJCQkJ CQkJICBBTExPQ1NFVF9TTUFMTF9TSVpFUyk7CisJLyogaW5pdGlhbGl6ZSBwb3J0YWwncyBxdWVy eSBjb250ZXh0IHRvIHN0b3JlIFF1ZXJ5RGVzY3MgKi8KKwlwb3J0YWwtPnF1ZXJ5Q29udGV4dCA9 IEFsbG9jU2V0Q29udGV4dENyZWF0ZShUb3BQb3J0YWxDb250ZXh0LAorCQkJCQkJCQkJCQkJICJQ b3J0YWxRdWVyeUNvbnRleHQiLAorCQkJCQkJCQkJCQkJIEFMTE9DU0VUX1NNQUxMX1NJWkVTKTsK IAogCS8qIGNyZWF0ZSBhIHJlc291cmNlIG93bmVyIGZvciB0aGUgcG9ydGFsICovCiAJcG9ydGFs LT5yZXNvd25lciA9IFJlc291cmNlT3duZXJDcmVhdGUoQ3VyVHJhbnNhY3Rpb25SZXNvdXJjZU93 bmVyLApAQCAtMjI0LDYgKzIyOCw3IEBAIENyZWF0ZVBvcnRhbChjb25zdCBjaGFyICpuYW1lLCBi b29sIGFsbG93RHVwLCBib29sIGR1cFNpbGVudCkKIAogCS8qIGZvciBuYW1lZCBwb3J0YWxzIHJl dXNlIHBvcnRhbC0+bmFtZSBjb3B5ICovCiAJTWVtb3J5Q29udGV4dFNldElkZW50aWZpZXIocG9y dGFsLT5wb3J0YWxDb250ZXh0LCBwb3J0YWwtPm5hbWVbMF0gPyBwb3J0YWwtPm5hbWUgOiAiPHVu bmFtZWQ+Iik7CisJTWVtb3J5Q29udGV4dFNldElkZW50aWZpZXIocG9ydGFsLT5xdWVyeUNvbnRl eHQsIHBvcnRhbC0+bmFtZVswXSA/IHBvcnRhbC0+bmFtZSA6ICI8dW5uYW1lZD4iKTsKIAogCXJl dHVybiBwb3J0YWw7CiB9CkBAIC01OTQsNiArNTk5LDcgQEAgUG9ydGFsRHJvcChQb3J0YWwgcG9y dGFsLCBib29sIGlzVG9wQ29tbWl0KQogCiAJLyogcmVsZWFzZSBzdWJzaWRpYXJ5IHN0b3JhZ2Ug Ki8KIAlNZW1vcnlDb250ZXh0RGVsZXRlKHBvcnRhbC0+cG9ydGFsQ29udGV4dCk7CisJTWVtb3J5 Q29udGV4dERlbGV0ZShwb3J0YWwtPnF1ZXJ5Q29udGV4dCk7CiAKIAkvKiByZWxlYXNlIHBvcnRh bCBzdHJ1Y3QgKGl0J3MgaW4gVG9wUG9ydGFsQ29udGV4dCkgKi8KIAlwZnJlZShwb3J0YWwpOwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oIGIvc3JjL2luY2x1ZGUv Y29tbWFuZHMvZXhwbGFpbi5oCmluZGV4IDdjMTA3MWRkZDEuLmRhMzliMmU0ZmYgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaAorKysgYi9zcmMvaW5jbHVkZS9jb21t YW5kcy9leHBsYWluLmgKQEAgLTg3LDcgKzg3LDExIEBAIGV4dGVybiB2b2lkIEV4cGxhaW5PbmVV dGlsaXR5KE5vZGUgKnV0aWxpdHlTdG10LCBJbnRvQ2xhdXNlICppbnRvLAogCQkJCQkJCSAgRXhw bGFpblN0YXRlICplcywgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJCQkJCQkJICBQYXJhbUxp c3RJbmZvIHBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpOwogCi1leHRlcm4gdm9p ZCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmlu dG8sCitleHRlcm4gUXVlcnlEZXNjICpFeHBsYWluUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpzdG10 LCBzdHJ1Y3QgQ2FjaGVkUGxhbiAqY3BsYW4sCisJCQkJIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5n LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAorCQkJCSBQYXJhbUxpc3RJbmZv IHBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpOworZXh0ZXJuIHZvaWQgRXhwbGFp bk9uZVBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCisJCQkJCQkgICBJbnRvQ2xhdXNlICppbnRv LAogCQkJCQkJICAgRXhwbGFpblN0YXRlICplcywgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJ CQkJCQkgICBQYXJhbUxpc3RJbmZvIHBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYs CiAJCQkJCQkgICBjb25zdCBpbnN0cl90aW1lICpwbGFuZHVyYXRpb24sCkBAIC0xMDMsNiArMTA3 LDcgQEAgZXh0ZXJuIHZvaWQgRXhwbGFpblF1ZXJ5UGFyYW1ldGVycyhFeHBsYWluU3RhdGUgKmVz LCBQYXJhbUxpc3RJbmZvIHBhcmFtcywgaW50IG0KIAogZXh0ZXJuIHZvaWQgRXhwbGFpbkJlZ2lu T3V0cHV0KEV4cGxhaW5TdGF0ZSAqZXMpOwogZXh0ZXJuIHZvaWQgRXhwbGFpbkVuZE91dHB1dChF eHBsYWluU3RhdGUgKmVzKTsKK2V4dGVybiB2b2lkIEV4cGxhaW5SZXNldE91dHB1dChFeHBsYWlu U3RhdGUgKmVzKTsKIGV4dGVybiB2b2lkIEV4cGxhaW5TZXBhcmF0ZVBsYW5zKEV4cGxhaW5TdGF0 ZSAqZXMpOwogCiBleHRlcm4gdm9pZCBFeHBsYWluUHJvcGVydHlMaXN0KGNvbnN0IGNoYXIgKnFs YWJlbCwgTGlzdCAqZGF0YSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNk ZXNjLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oCmluZGV4IGFmMmJmMzZkZmIu LmMzNmMyNWI0OTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgK KysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaApAQCAtMzIsOSArMzIsMTIgQEAK ICAqLwogdHlwZWRlZiBzdHJ1Y3QgUXVlcnlEZXNjCiB7CisJTm9kZVRhZwkJdHlwZTsKKwogCS8q IFRoZXNlIGZpZWxkcyBhcmUgcHJvdmlkZWQgYnkgQ3JlYXRlUXVlcnlEZXNjICovCiAJQ21kVHlw ZQkJb3BlcmF0aW9uOwkJLyogQ01EX1NFTEVDVCwgQ01EX1VQREFURSwgZXRjLiAqLwogCVBsYW5u ZWRTdG10ICpwbGFubmVkc3RtdDsJLyogcGxhbm5lcidzIG91dHB1dCAoY291bGQgYmUgdXRpbGl0 eSwgdG9vKSAqLworCXN0cnVjdCBDYWNoZWRQbGFuICpjcGxhbjsJLyogQ2FjaGVkUGxhbiwgaWYg cGxhbm5lZHN0bXQgaXMgZnJvbSBvbmUgKi8KIAljb25zdCBjaGFyICpzb3VyY2VUZXh0OwkJLyog c291cmNlIHRleHQgb2YgdGhlIHF1ZXJ5ICovCiAJU25hcHNob3QJc25hcHNob3Q7CQkvKiBzbmFw c2hvdCB0byB1c2UgZm9yIHF1ZXJ5ICovCiAJU25hcHNob3QJY3Jvc3NjaGVja19zbmFwc2hvdDsJ LyogY3Jvc3NjaGVjayBmb3IgUkkgdXBkYXRlL2RlbGV0ZSAqLwpAQCAtNDcsNiArNTAsNyBAQCB0 eXBlZGVmIHN0cnVjdCBRdWVyeURlc2MKIAlUdXBsZURlc2MJdHVwRGVzYzsJCS8qIGRlc2NyaXB0 b3IgZm9yIHJlc3VsdCB0dXBsZXMgKi8KIAlFU3RhdGUJICAgKmVzdGF0ZTsJCQkvKiBleGVjdXRv cidzIHF1ZXJ5LXdpZGUgc3RhdGUgKi8KIAlQbGFuU3RhdGUgICpwbGFuc3RhdGU7CQkvKiB0cmVl IG9mIHBlci1wbGFuLW5vZGUgc3RhdGUgKi8KKwlib29sCQlwbGFuX3ZhbGlkOwkJLyogaXMgcGxh bnN0YXRlIHRyZWUgZnVsbHkgdmFsaWQ/ICovCiAKIAkvKiBUaGlzIGZpZWxkIGlzIHNldCBieSBF eGVjdXRvclJ1biAqLwogCWJvb2wJCWFscmVhZHlfZXhlY3V0ZWQ7CS8qIHRydWUgaWYgcHJldmlv dXNseSBleGVjdXRlZCAqLwpAQCAtNTcsNiArNjEsNyBAQCB0eXBlZGVmIHN0cnVjdCBRdWVyeURl c2MKIAogLyogaW4gcHF1ZXJ5LmMgKi8KIGV4dGVybiBRdWVyeURlc2MgKkNyZWF0ZVF1ZXJ5RGVz YyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsCisJCQkJCQkJCSAgc3RydWN0IENhY2hlZFBsYW4g KmNwbGFuLAogCQkJCQkJCQkgIGNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCiAJCQkJCQkJCSAgU25h cHNob3Qgc25hcHNob3QsCiAJCQkJCQkJCSAgU25hcHNob3QgY3Jvc3NjaGVja19zbmFwc2hvdCwK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggYi9zcmMvaW5jbHVk ZS9leGVjdXRvci9leGVjdXRvci5oCmluZGV4IDk0NmFiYzAwNTEuLjVmODYwNjYyYjEgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKKysrIGIvc3JjL2luY2x1ZGUv ZXhlY3V0b3IvZXhlY3V0b3IuaApAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUgIm5vZGVzL2xv Y2tvcHRpb25zLmgiCiAjaW5jbHVkZSAibm9kZXMvcGFyc2Vub2Rlcy5oIgogI2luY2x1ZGUgInV0 aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRpbHMvcGxhbmNhY2hlLmgiCiAKIAogLyoKQEAg LTU5LDYgKzYwLDggQEAKICNkZWZpbmUgRVhFQ19GTEFHX01BUksJCQkweDAwMDgJLyogbmVlZCBt YXJrL3Jlc3RvcmUgKi8KICNkZWZpbmUgRVhFQ19GTEFHX1NLSVBfVFJJR0dFUlMgMHgwMDEwCS8q IHNraXAgQWZ0ZXJUcmlnZ2VyIGNhbGxzICovCiAjZGVmaW5lIEVYRUNfRkxBR19XSVRIX05PX0RB VEEJMHgwMDIwCS8qIHJlbCBzY2FubmFiaWxpdHkgZG9lc24ndCBtYXR0ZXIgKi8KKyNkZWZpbmUg RVhFQ19GTEFHX0dFVF9MT0NLUwkJMHgwNDAwCS8qIHNob3VsZCB0aGUgZXhlY3V0b3IgbG9jawor CQkJCQkJCQkJCSAqIHJlbGF0aW9ucz8gKi8KIAogCiAvKiBIb29rIGZvciBwbHVnaW5zIHRvIGdl dCBjb250cm9sIGluIEV4ZWN1dG9yU3RhcnQoKSAqLwpAQCAtMjQ1LDYgKzI0OCwxMyBAQCBleHRl cm4gdm9pZCBFeGVjRW5kTm9kZShQbGFuU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQgRXhlY1No dXRkb3duTm9kZShQbGFuU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQgRXhlY1NldFR1cGxlQm91 bmQoaW50NjQgdHVwbGVzX25lZWRlZCwgUGxhblN0YXRlICpjaGlsZF9ub2RlKTsKIAorLyogSXMg dGhlIGNhY2hlZCBwbGFuKi8KK3N0YXRpYyBpbmxpbmUgYm9vbAorRXhlY1BsYW5TdGlsbFZhbGlk KEVTdGF0ZSAqZXN0YXRlKQoreworCXJldHVybiBlc3RhdGUtPmVzX2NhY2hlZHBsYW4gPT0gTlVM TCA/IHRydWUgOgorCQlDYWNoZWRQbGFuU3RpbGxWYWxpZChlc3RhdGUtPmVzX2NhY2hlZHBsYW4p OworfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRXhlY1Byb2NOb2RlCkBAIC01NzksNiArNTg5LDggQEAg ZXhlY19ydF9mZXRjaChJbmRleCBydGksIEVTdGF0ZSAqZXN0YXRlKQogfQogCiBleHRlcm4gUmVs YXRpb24gRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgSW5kZXggcnRp KTsKK2V4dGVybiB2b2lkIEV4ZWNMb2NrVmlld1JlbGF0aW9ucyhMaXN0ICp2aWV3UmVsYXRpb25z LCBFU3RhdGUgKmVzdGF0ZSk7CitleHRlcm4gdm9pZCBFeGVjTG9ja0FwcGVuZE5vbkxlYWZSZWxh dGlvbnMoRVN0YXRlICplc3RhdGUsIExpc3QgKmFsbHBhcnRyZWxpZHMpOwogZXh0ZXJuIHZvaWQg RXhlY0luaXRSZXN1bHRSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVz dWx0UmVsSW5mbywKIAkJCQkJCQkJICAgSW5kZXggcnRpKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApp bmRleCBiYzY3Y2I5ZWQ4Li5jNmIzODg1YmY2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rl cy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtNjIx LDYgKzYyMSw4IEBAIHR5cGVkZWYgc3RydWN0IEVTdGF0ZQogCQkJCQkJCQkJCSAqIEV4ZWNSb3dN YXJrcywgb3IgTlVMTCBpZiBub25lICovCiAJTGlzdAkgICAqZXNfcnRlcGVybWluZm9zOwkvKiBM aXN0IG9mIFJURVBlcm1pc3Npb25JbmZvICovCiAJUGxhbm5lZFN0bXQgKmVzX3BsYW5uZWRzdG10 OwkvKiBsaW5rIHRvIHRvcCBvZiBwbGFuIHRyZWUgKi8KKwlzdHJ1Y3QgQ2FjaGVkUGxhbiAqZXNf Y2FjaGVkcGxhbjsJLyogQ2FjaGVkUGxhbiBpZiBwbGFubmVkc3RtdCBpcyBmcm9tCisJCQkJCQkJ CQkJICogb25lICovCiAJTGlzdAkgICAqZXNfcGFydF9wcnVuZV9pbmZvczsJLyogUGxhbm5lZFN0 bXQucGFydFBydW5lSW5mb3MgKi8KIAljb25zdCBjaGFyICplc19zb3VyY2VUZXh0OwkvKiBTb3Vy Y2UgdGV4dCBmcm9tIFF1ZXJ5RGVzYyAqLwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rl cy9wYXRobm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCmluZGV4IGQ2MWE2 MmRhMTkuLjliODg4YjBkNzUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rl cy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCkBAIC0xMTYsNiArMTE2LDkg QEAgdHlwZWRlZiBzdHJ1Y3QgUGxhbm5lckdsb2JhbAogCS8qICJmbGF0IiBsaXN0IG9mIFJURVBl cm1pc3Npb25JbmZvcyAqLwogCUxpc3QJICAgKmZpbmFscnRlcGVybWluZm9zOwogCisJLyogImZs YXQiIGxpc3Qgb2YgaW50ZWdlciBSVCBpbmRleGVzICovCisJTGlzdAkgICAqdmlld1JlbGF0aW9u czsKKwogCS8qICJmbGF0IiBsaXN0IG9mIFBsYW5Sb3dNYXJrcyAqLwogCUxpc3QJICAgKmZpbmFs cm93bWFya3M7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oIGIv c3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKaW5kZXggYTBiYjE2Y2ZmNC4uN2NhZTYyNGJi ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKKysrIGIvc3JjL2lu Y2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKQEAgLTc4LDYgKzc4LDkgQEAgdHlwZWRlZiBzdHJ1Y3Qg UGxhbm5lZFN0bXQKIAlMaXN0CSAgICpwZXJtSW5mb3M7CQkvKiBsaXN0IG9mIFJURVBlcm1pc3Np b25JbmZvIG5vZGVzIGZvciBydGFibGUKIAkJCQkJCQkJICogZW50cmllcyBuZWVkaW5nIG9uZSAq LwogCisJTGlzdAkgICAqdmlld1JlbGF0aW9uczsJLyogaW50ZWdlciBsaXN0IG9mIFJUIGluZGV4 ZXMsIG9yIE5JTCBpZiBubworCQkJCQkJCQkgKiB2aWV3cyBhcmUgcXVlcmllZCAqLworCiAJLyog cnRhYmxlIGluZGV4ZXMgb2YgdGFyZ2V0IHJlbGF0aW9ucyBmb3IgSU5TRVJUL1VQREFURS9ERUxF VEUvTUVSR0UgKi8KIAlMaXN0CSAgICpyZXN1bHRSZWxhdGlvbnM7CS8qIGludGVnZXIgbGlzdCBv ZiBSVCBpbmRleGVzLCBvciBOSUwgKi8KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFn ZS9sbWdyLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2xtZ3IuaAppbmRleCA0ZWU5MWUzY2Y5Li41 OThiZjI2ODhhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2xtZ3IuaAorKysgYi9z cmMvaW5jbHVkZS9zdG9yYWdlL2xtZ3IuaApAQCAtNDgsNiArNDgsNyBAQCBleHRlcm4gYm9vbCBD b25kaXRpb25hbExvY2tSZWxhdGlvbihSZWxhdGlvbiByZWxhdGlvbiwgTE9DS01PREUgbG9ja21v ZGUpOwogZXh0ZXJuIHZvaWQgVW5sb2NrUmVsYXRpb24oUmVsYXRpb24gcmVsYXRpb24sIExPQ0tN T0RFIGxvY2ttb2RlKTsKIGV4dGVybiBib29sIENoZWNrUmVsYXRpb25Mb2NrZWRCeU1lKFJlbGF0 aW9uIHJlbGF0aW9uLCBMT0NLTU9ERSBsb2NrbW9kZSwKIAkJCQkJCQkJCWJvb2wgb3JzdHJvbmdl cik7CitleHRlcm4gYm9vbCBDaGVja1JlbExvY2tlZEJ5TWUoT2lkIHJlbGlkLCBMT0NLTU9ERSBs b2NrbW9kZSwgYm9vbCBvcnN0cm9uZ2VyKTsKIGV4dGVybiBib29sIExvY2tIYXNXYWl0ZXJzUmVs YXRpb24oUmVsYXRpb24gcmVsYXRpb24sIExPQ0tNT0RFIGxvY2ttb2RlKTsKIAogZXh0ZXJuIHZv aWQgTG9ja1JlbGF0aW9uSWRGb3JTZXNzaW9uKExvY2tSZWxJZCAqcmVsaWQsIExPQ0tNT0RFIGxv Y2ttb2RlKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oIGIvc3Jj L2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKaW5kZXggNGY1NDE4Yjk3Mi4uMzA3NGU2MDRkZCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKKysrIGIvc3JjL2luY2x1 ZGUvdXRpbHMvbHN5c2NhY2hlLmgKQEAgLTEzOSw2ICsxMzksNyBAQCBleHRlcm4gY2hhciBnZXRf cmVsX3JlbGtpbmQoT2lkIHJlbGlkKTsKIGV4dGVybiBib29sIGdldF9yZWxfcmVsaXNwYXJ0aXRp b24oT2lkIHJlbGlkKTsKIGV4dGVybiBPaWQJZ2V0X3JlbF90YWJsZXNwYWNlKE9pZCByZWxpZCk7 CiBleHRlcm4gY2hhciBnZXRfcmVsX3BlcnNpc3RlbmNlKE9pZCByZWxpZCk7CitleHRlcm4gYm9v bCBnZXRfcmVsX3JlbGlzc2hhcmVkKE9pZCByZWxpZCk7CiBleHRlcm4gT2lkCWdldF90cmFuc2Zv cm1fZnJvbXNxbChPaWQgdHlwaWQsIE9pZCBsYW5naWQsIExpc3QgKnRyZnR5cGVzKTsKIGV4dGVy biBPaWQJZ2V0X3RyYW5zZm9ybV90b3NxbChPaWQgdHlwaWQsIE9pZCBsYW5naWQsIExpc3QgKnRy ZnR5cGVzKTsKIGV4dGVybiBib29sIGdldF90eXBpc2RlZmluZWQoT2lkIHR5cGlkKTsKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMv cGxhbmNhY2hlLmgKaW5kZXggYTQ0MzE4MWQ0MS4uODk5MGZlNzJlMyAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNh Y2hlLmgKQEAgLTIyMSw2ICsyMjEsMjAgQEAgZXh0ZXJuIENhY2hlZFBsYW4gKkdldENhY2hlZFBs YW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIAkJCQkJCQkJIFBhcmFtTGlzdEluZm8g Ym91bmRQYXJhbXMsCiAJCQkJCQkJCSBSZXNvdXJjZU93bmVyIG93bmVyLAogCQkJCQkJCQkgUXVl cnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpOworCisvKgorICogQ2FjaGVkUGxhblN0aWxsVmFsaWQK KyAqCQlSZXR1cm5zIGlmIGEgY2FjaGVkIGdlbmVyaWMgcGxhbiBpcyBzdGlsbCB2YWxpZAorICoK KyAqIENhbGxlZCBieSB0aGUgZXhlY3V0b3Igb24gZXZlcnkgcmVsYXRpb24gbG9jayB0YWtlbiB3 aGVuIGluaXRpYWxpemluZyB0aGUKKyAqIHBsYW4gdHJlZSBpbiB0aGUgQ2FjaGVkUGxhbi4KKyAq Lworc3RhdGljIGlubGluZSBib29sCitDYWNoZWRQbGFuU3RpbGxWYWxpZChDYWNoZWRQbGFuICpj cGxhbikKK3sKKwlyZXR1cm4gY3BsYW4tPmlzX3ZhbGlkOworfQorCiBleHRlcm4gdm9pZCBSZWxl YXNlQ2FjaGVkUGxhbihDYWNoZWRQbGFuICpwbGFuLCBSZXNvdXJjZU93bmVyIG93bmVyKTsKIAog ZXh0ZXJuIGJvb2wgQ2FjaGVkUGxhbkFsbG93c1NpbXBsZVZhbGlkaXR5Q2hlY2soQ2FjaGVkUGxh blNvdXJjZSAqcGxhbnNvdXJjZSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRh bC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgKaW5kZXggYWEwOGIxZTBmYy4uMzMyYTA4 Y2NiNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgKKysrIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvcG9ydGFsLmgKQEAgLTEzOCw2ICsxMzgsOSBAQCB0eXBlZGVmIHN0cnVjdCBQ b3J0YWxEYXRhCiAJUXVlcnlDb21wbGV0aW9uIHFjOwkJCS8qIGNvbW1hbmQgY29tcGxldGlvbiBk YXRhIGZvciBleGVjdXRlZCBxdWVyeSAqLwogCUxpc3QJICAgKnN0bXRzOwkJCS8qIGxpc3Qgb2Yg UGxhbm5lZFN0bXRzICovCiAJQ2FjaGVkUGxhbiAqY3BsYW47CQkJLyogQ2FjaGVkUGxhbiwgaWYg c3RtdHMgYXJlIGZyb20gb25lICovCisJTGlzdAkgICAqcWRlc2NzOwkJCS8qIGxpc3Qgb2YgUXVl cnlEZXNjcyAqLworCWJvb2wJCXBsYW5fdmFsaWQ7CQkvKiBhcmUgcGxhbihzKSByZWFkeSBmb3Ig ZXhlY3V0aW9uPyAqLworCU1lbW9yeUNvbnRleHQgcXVlcnlDb250ZXh0OwkvKiBtZW1vcnkgZm9y IFF1ZXJ5RGVzY3MgYW5kIGNoaWxkcmVuICovCiAKIAlQYXJhbUxpc3RJbmZvIHBvcnRhbFBhcmFt czsgLyogcGFyYW1zIHRvIHBhc3MgdG8gcXVlcnkgKi8KIAlRdWVyeUVudmlyb25tZW50ICpxdWVy eUVudjsgLyogZW52aXJvbm1lbnQgZm9yIHF1ZXJ5ICovCkBAIC0yNDIsNiArMjQ1LDcgQEAgZXh0 ZXJuIHZvaWQgUG9ydGFsRGVmaW5lUXVlcnkoUG9ydGFsIHBvcnRhbCwKIAkJCQkJCQkgIENvbW1h bmRUYWcgY29tbWFuZFRhZywKIAkJCQkJCQkgIExpc3QgKnN0bXRzLAogCQkJCQkJCSAgQ2FjaGVk UGxhbiAqY3BsYW4pOworZXh0ZXJuIHZvaWQgUG9ydGFsUXVlcnlGaW5pc2goUXVlcnlEZXNjICpx dWVyeURlc2MpOwogZXh0ZXJuIFBsYW5uZWRTdG10ICpQb3J0YWxHZXRQcmltYXJ5U3RtdChQb3J0 YWwgcG9ydGFsKTsKIGV4dGVybiB2b2lkIFBvcnRhbENyZWF0ZUhvbGRTdG9yZShQb3J0YWwgcG9y dGFsKTsKIGV4dGVybiB2b2lkIFBvcnRhbEhhc2hUYWJsZURlbGV0ZUFsbCh2b2lkKTsKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL01ha2VmaWxlIGIvc3JjL3Rl c3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vTWFrZWZpbGUKaW5kZXggNzBmMjRlODQ2ZC4uMmZj YTg0ZDAyNyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vTWFr ZWZpbGUKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vTWFrZWZpbGUKQEAg LTgsNyArOCw4IEBAIE9CSlMgPSBcCiAJZGVsYXlfZXhlY3V0aW9uLm8KIAogSVNPTEFUSU9OID0g cGFydGl0aW9uLWFkZGl0aW9uIFwKLQkgICAgcGFydGl0aW9uLXJlbW92YWwtMQorCSAgICBwYXJ0 aXRpb24tcmVtb3ZhbC0xIFwKKwkJY2FjaGVkLXBsYW4tcmVwbGFuCiAKIGlmZGVmIFVTRV9QR1hT CiBQR19DT05GSUcgPSBwZ19jb25maWcKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvZGVs YXlfZXhlY3V0aW9uL2RlbGF5X2V4ZWN1dGlvbi5jIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9l eGVjdXRpb24vZGVsYXlfZXhlY3V0aW9uLmMKaW5kZXggN2NkNzZlYjM0Yi4uNWQ3YTNlOTg1OCAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZGVsYXlfZXhlY3V0 aW9uLmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZGVsYXlfZXhlY3V0 aW9uLmMKQEAgLTEsMTQgKzEsMTggQEAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoKICAqIGRlbGF5 X2V4ZWN1dGlvbi5jCi0gKgkJVGVzdCBtb2R1bGUgdG8gYWxsb3cgZGVsYXkgYmV0d2VlbiBwYXJz aW5nIGFuZCBleGVjdXRpb24gb2YgYSBxdWVyeS4KKyAqCQlUZXN0IG1vZHVsZSB0byBpbnRyb2R1 Y2UgZGVsYXkgYXQgdmFyaW91cyBwb2ludHMgZHVyaW5nIGV4ZWN1dGlvbiBvZiBhCisgKgkJcXVl cnkgdG8gdGVzdCB0aGF0IGV4ZWN1dGlvbiBwcm9jZWVkcyBzYWZlbHkgaW4gbGlnaHQgb2YgY29u Y3VycmVudAorICoJCWNoYW5nZXMuCiAgKgogICogVGhlIGRlbGF5IGlzIGltcGxlbWVudGVkIGJ5 IHRha2luZyBhbmQgaW1tZWRpYXRlbHkgcmVsZWFzaW5nIGEgc3BlY2lmaWVkCiAgKiBhZHZpc29y eSBsb2NrLiAgSWYgYW5vdGhlciBwcm9jZXNzIGhhcyBwcmV2aW91c2x5IHRha2VuIHRoYXQgbG9j aywgdGhlCiAgKiBjdXJyZW50IHByb2Nlc3Mgd2lsbCBiZSBibG9ja2VkIHVudGlsIHRoZSBsb2Nr IGlzIHJlbGVhc2VkOyBvdGhlcndpc2UsCiAgKiB0aGVyZSdzIG5vIGVmZmVjdC4gIFRoaXMgYWxs b3dzIGFuIGlzb2xhdGlvbnRlc3RlciBzY3JpcHQgdG8gcmVsaWFibHkKLSAqIHRlc3QgYmVoYXZp b3JzIHdoZXJlIHNvbWUgc3BlY2lmaWVkIGFjdGlvbiBoYXBwZW5zIGluIGFub3RoZXIgYmFja2Vu ZAotICogYmV0d2VlbiBwYXJzaW5nIGFuZCBleGVjdXRpb24gb2YgYW55IGRlc2lyZWQgcXVlcnku CisgKiB0ZXN0IGJlaGF2aW9ycyB3aGVyZSBzb21lIHNwZWNpZmllZCBhY3Rpb24gaGFwcGVucyBp biBhbm90aGVyIGJhY2tlbmQgaW4KKyAqIGEgY291cGxlIG9mIGNhc2VzOiAxKSBiZXR3ZWVuIHBh cnNpbmcgYW5kIGV4ZWN1dGlvbiBvZiBhbnkgZGVzaXJlZCBxdWVyeQorICogd2hlbiB1c2luZyB0 aGUgcGxhbm5lcl9ob29rLCAyKSBiZXR3ZWVuIFJldmFsaWRhdGVDYWNoZWRRdWVyeSgpIGFuZAor ICogRXhlY3V0b3JTdGFydCgpIHdoZW4gdXNpbmcgdGhlIEV4ZWN1dG9yU3RhcnRfaG9vay4KICAq CiAgKiBDb3B5cmlnaHQgKGMpIDIwMjAtMjAyMywgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1l bnQgR3JvdXAKICAqCkBAIC0yMiw2ICsyNiw3IEBACiAKICNpbmNsdWRlIDxsaW1pdHMuaD4KIAor I2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3BsYW5u ZXIuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5o IgpAQCAtMzIsOSArMzcsMTEgQEAgUEdfTU9EVUxFX01BR0lDOwogCiAvKiBHVUM6IGFkdmlzb3J5 IGxvY2sgSUQgdG8gdXNlLiAgWmVybyBkaXNhYmxlcyB0aGUgZmVhdHVyZS4gKi8KIHN0YXRpYyBp bnQJcG9zdF9wbGFubmluZ19sb2NrX2lkID0gMDsKK3N0YXRpYyBpbnQJZXhlY3V0b3Jfc3RhcnRf bG9ja19pZCA9IDA7CiAKLS8qIFNhdmUgcHJldmlvdXMgcGxhbm5lciBob29rIHVzZXIgdG8gYmUg YSBnb29kIGNpdGl6ZW4gKi8KKy8qIFNhdmUgcHJldmlvdXMgaG9vayB1c2VycyB0byBiZSBhIGdv b2QgY2l0aXplbiAqLwogc3RhdGljIHBsYW5uZXJfaG9va190eXBlIHByZXZfcGxhbm5lcl9ob29r ID0gTlVMTDsKK3N0YXRpYyBFeGVjdXRvclN0YXJ0X2hvb2tfdHlwZSBwcmV2X0V4ZWN1dG9yU3Rh cnRfaG9vayA9IE5VTEw7CiAKIAogLyogcGxhbm5lcl9ob29rIGZ1bmN0aW9uIHRvIHByb3ZpZGUg dGhlIGRlc2lyZWQgZGVsYXkgKi8KQEAgLTcwLDExICs3Nyw0MSBAQCBkZWxheV9leGVjdXRpb25f cGxhbm5lcihRdWVyeSAqcGFyc2UsIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywKIAlyZXR1cm4g cmVzdWx0OwogfQogCisvKiBwbGFubmVyX2hvb2sgZnVuY3Rpb24gdG8gcHJvdmlkZSB0aGUgZGVz aXJlZCBkZWxheSAqLworc3RhdGljIHZvaWQKK2RlbGF5X2V4ZWN1dGlvbl9FeGVjdXRvclN0YXJ0 KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQoreworCS8qIElmIGVuYWJsZWQsIGRl bGF5IGJ5IHRha2luZyBhbmQgcmVsZWFzaW5nIHRoZSBzcGVjaWZpZWQgbG9jayAqLworCWlmIChl eGVjdXRvcl9zdGFydF9sb2NrX2lkICE9IDApCisJeworCQlEaXJlY3RGdW5jdGlvbkNhbGwxKHBn X2Fkdmlzb3J5X2xvY2tfaW50OCwKKwkJCQkJCQlJbnQ2NEdldERhdHVtKChpbnQ2NCkgZXhlY3V0 b3Jfc3RhcnRfbG9ja19pZCkpOworCQlEaXJlY3RGdW5jdGlvbkNhbGwxKHBnX2Fkdmlzb3J5X3Vu bG9ja19pbnQ4LAorCQkJCQkJCUludDY0R2V0RGF0dW0oKGludDY0KSBleGVjdXRvcl9zdGFydF9s b2NrX2lkKSk7CisKKwkJLyoKKwkJICogRW5zdXJlIHRoYXQgd2Ugbm90aWNlIGFueSBwZW5kaW5n IGludmFsaWRhdGlvbnMsIHNpbmNlIHRoZSBhZHZpc29yeQorCQkgKiBsb2NrIGZ1bmN0aW9ucyBk b24ndCBkbyB0aGlzLgorCQkgKi8KKwkJQWNjZXB0SW52YWxpZGF0aW9uTWVzc2FnZXMoKTsKKwl9 CisKKwkvKiBOb3cgc3RhcnQgdGhlIGV4ZWN1dG9yLCBwb3NzaWJseSB2aWEgYSBwcmV2aW91cyBo b29rIHVzZXIgKi8KKwlpZiAocHJldl9FeGVjdXRvclN0YXJ0X2hvb2spCisJCXByZXZfRXhlY3V0 b3JTdGFydF9ob29rKHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwllbHNlCisJCXN0YW5kYXJkX0V4ZWN1 dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOworCisJaWYgKGV4ZWN1dG9yX3N0YXJ0X2xvY2tf aWQgIT0gMCkKKwkJZWxvZyhOT1RJQ0UsICJGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hl ZFBsYW4gaXMgJXMiLAorCQkJIHF1ZXJ5RGVzYy0+Y3BsYW4tPmlzX3ZhbGlkID8gInZhbGlkIiA6 ICJub3QgdmFsaWQiKTsKK30KKwogLyogTW9kdWxlIGxvYWQgZnVuY3Rpb24gKi8KIHZvaWQKIF9Q R19pbml0KHZvaWQpCiB7Ci0JLyogU2V0IHVwIHRoZSBHVUMgdG8gY29udHJvbCB3aGljaCBsb2Nr IGlzIHVzZWQgKi8KKwkvKiBTZXQgdXAgR1VDcyB0byBjb250cm9sIHdoaWNoIGxvY2sgaXMgdXNl ZCAqLwogCURlZmluZUN1c3RvbUludFZhcmlhYmxlKCJkZWxheV9leGVjdXRpb24ucG9zdF9wbGFu bmluZ19sb2NrX2lkIiwKIAkJCQkJCQkiU2V0cyB0aGUgYWR2aXNvcnkgbG9jayBJRCB0byBiZSBs b2NrZWQvdW5sb2NrZWQgYWZ0ZXIgcGxhbm5pbmcuIiwKIAkJCQkJCQkiWmVybyBkaXNhYmxlcyB0 aGUgZGVsYXkuIiwKQEAgLTg2LDEwICsxMjMsMjIgQEAgX1BHX2luaXQodm9pZCkKIAkJCQkJCQlO VUxMLAogCQkJCQkJCU5VTEwsCiAJCQkJCQkJTlVMTCk7Ci0KKwlEZWZpbmVDdXN0b21JbnRWYXJp YWJsZSgiZGVsYXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQiLAorCQkJCQkJCSJT ZXRzIHRoZSBhZHZpc29yeSBsb2NrIElEIHRvIGJlIGxvY2tlZC91bmxvY2tlZCBiZWZvcmUgc3Rh cnRpbmcgZXhlY3V0aW9uLiIsCisJCQkJCQkJIlplcm8gZGlzYWJsZXMgdGhlIGRlbGF5LiIsCisJ CQkJCQkJJmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQsCisJCQkJCQkJMCwKKwkJCQkJCQkwLCBJTlRf TUFYLAorCQkJCQkJCVBHQ19VU0VSU0VULAorCQkJCQkJCTAsCisJCQkJCQkJTlVMTCwKKwkJCQkJ CQlOVUxMLAorCQkJCQkJCU5VTEwpOwogCU1hcmtHVUNQcmVmaXhSZXNlcnZlZCgiZGVsYXlfZXhl Y3V0aW9uIik7CiAKLQkvKiBJbnN0YWxsIG91ciBob29rICovCisJLyogSW5zdGFsbCBvdXIgaG9v a3MuICovCiAJcHJldl9wbGFubmVyX2hvb2sgPSBwbGFubmVyX2hvb2s7CiAJcGxhbm5lcl9ob29r ID0gZGVsYXlfZXhlY3V0aW9uX3BsYW5uZXI7CisJcHJldl9FeGVjdXRvclN0YXJ0X2hvb2sgPSBF eGVjdXRvclN0YXJ0X2hvb2s7CisJRXhlY3V0b3JTdGFydF9ob29rID0gZGVsYXlfZXhlY3V0aW9u X0V4ZWN1dG9yU3RhcnQ7CiB9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4 ZWN1dGlvbi9leHBlY3RlZC9jYWNoZWQtcGxhbi1yZXBsYW4ub3V0IGIvc3JjL3Rlc3QvbW9kdWxl cy9kZWxheV9leGVjdXRpb24vZXhwZWN0ZWQvY2FjaGVkLXBsYW4tcmVwbGFuLm91dApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi40ZjQ1MGI5ZDliCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZXhwZWN0ZWQvY2FjaGVkLXBs YW4tcmVwbGFuLm91dApAQCAtMCwwICsxLDExNyBAQAorUGFyc2VkIHRlc3Qgc3BlYyB3aXRoIDIg c2Vzc2lvbnMKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxcHJlcCBzMmxvY2sgczFleGVjIHMy ZHJvcGkgczJ1bmxvY2sKK3N0ZXAgczFwcmVwOiBTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2Vf Z2VuZXJpY19wbGFuOworCQkgIFBSRVBBUkUgcSBBUyBTRUxFQ1QgKiBGUk9NIGZvb3YgV0hFUkUg YSA9ICQxOworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxICgxKTsKK1FVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKyAgU3VicGxhbnMgUmVtb3ZlZDogMSAgICAgICAgICAgICAgICAgICAg ICAgCisgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGZvbzExIGZvb18xICAgICAgIAorICAgICAg ICBSZWNoZWNrIENvbmQ6IChhID0gJDEpICAgICAgICAgICAgICAKKyAgICAgICAgLT4gIEJpdG1h cCBJbmRleCBTY2FuIG9uIGZvbzExX2FfaWR4CisgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChh ID0gJDEpICAgICAgICAgIAorKDYgcm93cykKKworc3RlcCBzMmxvY2s6IFNFTEVDVCBwZ19hZHZp c29yeV9sb2NrKDEyMzQ1KTsKK3BnX2Fkdmlzb3J5X2xvY2sKKy0tLS0tLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMWV4ZWM6IExPQUQgJ2RlbGF5X2V4ZWN1 dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkID0g MTIzNDU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEgKDEpOyA8d2FpdGluZyAu Li4+CitzdGVwIHMyZHJvcGk6IERST1AgSU5ERVggZm9vMTFfYTsKK3N0ZXAgczJ1bmxvY2s6IFNF TEVDVCBwZ19hZHZpc29yeV91bmxvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfdW5sb2NrCistLS0t LS0tLS0tLS0tLS0tLS0KK3QgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxZXhl YzogPC4uLiBjb21wbGV0ZWQ+CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgp OiBDYWNoZWRQbGFuIGlzIG5vdCB2YWxpZAorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9y U3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBcHBlbmQgICAgICAgICAgICAgICAg ICAgICAgIAorICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAgICAKKyAgLT4gIFNlcSBTY2FuIG9u IGZvbzExIGZvb18xCisgICAgICAgIEZpbHRlcjogKGEgPSAkMSkgICAgIAorKDQgcm93cykKKwor CitzdGFydGluZyBwZXJtdXRhdGlvbjogczFwcmVwMiBzMmxvY2sgczFleGVjMiBzMmRyb3BpIHMy dW5sb2NrCitzdGVwIHMxcHJlcDI6IFNFVCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmlj X3BsYW47CisJCSAgU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2FnZ3JlZ2F0ZSA9IG9uOworCQkg IFNFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9qb2luID0gb247CisJCSAgUFJFUEFSRSBxMiBBUyBT RUxFQ1QgdDEuYSwgY291bnQodDIuYikgRlJPTSBmb28gdDEsIGZvbyB0MiBXSEVSRSB0MS5hID0g dDIuYSBHUk9VUCBCWSAxOworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMjsKK3Mx OiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgdmFsaWQK K1FVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KK0FwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgLT4gIEdyb3VwQWdncmVnYXRlICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgR3JvdXAgS2V5OiB0 MS5hICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgLT4g IE1lcmdlIEpvaW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAg ICAgICAgICAgICAgTWVyZ2UgQ29uZDogKHQxLmEgPSB0Mi5hKSAgICAgICAgICAgICAgICAgICAg ICAgICAKKyAgICAgICAgICAgICAgLT4gIEluZGV4IE9ubHkgU2NhbiB1c2luZyBmb28xMV9hX2lk eCBvbiBmb28xMSB0MSAKKyAgICAgICAgICAgICAgLT4gIE1hdGVyaWFsaXplICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLT4gIEluZGV4IFNj YW4gdXNpbmcgZm9vMTFfYV9pZHggb24gZm9vMTEgdDIKKyAgLT4gIEdyb3VwQWdncmVnYXRlICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgR3JvdXAg S2V5OiB0MV8xLmEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAg ICAgLT4gIE1lcmdlIEpvaW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKyAgICAgICAgICAgICAgTWVyZ2UgQ29uZDogKHQxXzEuYSA9IHQyXzEuYSkgICAgICAgICAg ICAgICAgICAgICAKKyAgICAgICAgICAgICAgLT4gIFNvcnQgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHQxXzEu YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLT4gIFNl cSBTY2FuIG9uIGZvbzIgdDFfMSAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgLT4g IFNvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg ICAgICAgICAgICAgU29ydCBLZXk6IHQyXzEuYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAK KyAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZvbzIgdDJfMSAgICAgICAgICAg ICAgICAgICAKKygxOCByb3dzKQorCitzdGVwIHMybG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5X2xv Y2soMTIzNDUpOworcGdfYWR2aXNvcnlfbG9jaworLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxZXhlYzI6IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7 CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7 CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEyOyA8d2FpdGluZyAuLi4+CitzdGVw IHMyZHJvcGk6IERST1AgSU5ERVggZm9vMTFfYTsKK3N0ZXAgczJ1bmxvY2s6IFNFTEVDVCBwZ19h ZHZpc29yeV91bmxvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfdW5sb2NrCistLS0tLS0tLS0tLS0t LS0tLS0KK3QgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxZXhlYzI6IDwuLi4g Y29tcGxldGVkPgorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVk UGxhbiBpcyBub3QgdmFsaWQKK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6 IENhY2hlZFBsYW4gaXMgdmFsaWQKK1FVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CitBcHBlbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgLT4gIEdy b3VwQWdncmVnYXRlICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBHcm91cCBLZXk6 IHQxLmEgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIC0+ICBNZXJnZSBKb2luICAgICAg ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgTWVyZ2UgQ29uZDogKHQxLmEgPSB0Mi5h KSAgICAgIAorICAgICAgICAgICAgICAtPiAgU29ydCAgICAgICAgICAgICAgICAgICAgICAgCisg ICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0MS5hICAgICAgICAgICAKKyAgICAgICAgICAg ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZvbzExIHQxIAorICAgICAgICAgICAgICAtPiAgU29y dCAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0 Mi5hICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZvbzEx IHQyIAorICAtPiAgR3JvdXBBZ2dyZWdhdGUgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAg ICAgIEdyb3VwIEtleTogdDFfMS5hICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgLT4gIE1l cmdlIEpvaW4gICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBNZXJnZSBDb25k OiAodDFfMS5hID0gdDJfMS5hKSAgCisgICAgICAgICAgICAgIC0+ICBTb3J0ICAgICAgICAgICAg ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHQxXzEuYSAgICAgICAg IAorICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMiB0MV8xCisgICAgICAg ICAgICAgIC0+ICBTb3J0ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAg ICAgU29ydCBLZXk6IHQyXzEuYSAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gZm9vMiB0Ml8xCisoMjEgcm93cykKKwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9k dWxlcy9kZWxheV9leGVjdXRpb24vc3BlY3MvY2FjaGVkLXBsYW4tcmVwbGFuLnNwZWMgYi9zcmMv dGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9zcGVjcy9jYWNoZWQtcGxhbi1yZXBsYW4uc3Bl YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi42N2NmZWQ3MDQ0Ci0tLSAv ZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vc3BlY3MvY2Fj aGVkLXBsYW4tcmVwbGFuLnNwZWMKQEAgLTAsMCArMSw1MCBAQAorIyBUZXN0IHRvIGNoZWNrIHRo YXQgaW52YWxpZGF0aW9uIG9mIGEgY2FjaGVkIHBsYW4gZHVyaW5nIEV4ZWN1dG9yU3RhcnQKKyMg Y29ycmVjdGx5IHRyaWdnZXJzIHJlcGxhbm5pbmcgYW5kIHJlLWV4ZWN1dGlvbi4KKworc2V0dXAK K3sKKyAgQ1JFQVRFIFRBQkxFIGZvbyAoYSBpbnQsIGIgdGV4dCkgUEFSVElUSU9OIEJZIExJU1Qo YSk7CisgIENSRUFURSBUQUJMRSBmb28xIFBBUlRJVElPTiBPRiBmb28gRk9SIFZBTFVFUyBJTiAo MSkgUEFSVElUSU9OIEJZIExJU1QgKGEpOworICBDUkVBVEUgVEFCTEUgZm9vMTEgUEFSVElUSU9O IE9GIGZvbzEgRk9SIFZBTFVFUyBJTiAoMSk7CisgIENSRUFURSBJTkRFWCBmb28xMV9hIE9OIGZv bzEgKGEpOworICBDUkVBVEUgVEFCTEUgZm9vMiBQQVJUSVRJT04gT0YgZm9vIEZPUiBWQUxVRVMg SU4gKDIpOworICBDUkVBVEUgVklFVyBmb292IEFTIFNFTEVDVCAqIEZST00gZm9vOworfQorCit0 ZWFyZG93bgoreworICBEUk9QIFZJRVcgZm9vdjsKKyAgRFJPUCBUQUJMRSBmb287Cit9CisKK3Nl c3Npb24gInMxIgorIyBDcmVhdGVzIGEgcHJlcGFyZWQgc3RhdGVtZW50IGFuZCBmb3JjZXMgY3Jl YXRpb24gb2YgYSBnZW5lcmljIHBsYW4KK3N0ZXAgInMxcHJlcCIgICB7IFNFVCBwbGFuX2NhY2hl X21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CisJCSAgUFJFUEFSRSBxIEFTIFNFTEVDVCAqIEZS T00gZm9vdiBXSEVSRSBhID0gJDE7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEg KDEpOyB9CisKK3N0ZXAgInMxcHJlcDIiICAgeyBTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2Vf Z2VuZXJpY19wbGFuOworCQkgIFNFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9hZ2dyZWdhdGUgPSBv bjsKKwkJICBTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2Vfam9pbiA9IG9uOworCQkgIFBSRVBBUkUg cTIgQVMgU0VMRUNUIHQxLmEsIGNvdW50KHQyLmIpIEZST00gZm9vIHQxLCBmb28gdDIgV0hFUkUg dDEuYSA9IHQyLmEgR1JPVVAgQlkgMTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUg cTI7IH0KKyMgRXhlY3V0ZXMgYSBnZW5lcmljIHBsYW4KK3N0ZXAgInMxZXhlYyIJeyBMT0FEICdk ZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRf bG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxICgxKTsg fQorc3RlcCAiczFleGVjMiIJeyBMT0FEICdkZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxh eV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4g KENPU1RTIE9GRikgRVhFQ1VURSBxMjsgfQorCitzZXNzaW9uICJzMiIKK3N0ZXAgInMybG9jayIJ eyBTRUxFQ1QgcGdfYWR2aXNvcnlfbG9jaygxMjM0NSk7IH0KK3N0ZXAgInMydW5sb2NrIgl7IFNF TEVDVCBwZ19hZHZpc29yeV91bmxvY2soMTIzNDUpOyB9CitzdGVwICJzMmRyb3BpIgl7IERST1Ag SU5ERVggZm9vMTFfYTsgfQorCisjIFdoaWxlICJzMWV4ZWMiIHdhaXRzIHRvIGFjcXVpcmUgdGhl IGFkdmlzb3J5IGxvY2ssICJzMmRyb3AiIGlzIGFibGUgdG8gZHJvcAorIyB0aGUgaW5kZXggYmVp bmcgdXNlZCBpbiB0aGUgY2FjaGVkIHBsYW4gZm9yIGBxYCwgc28gd2hlbiAiczFleGVjIiBpcyB0 aGVuCisjIHVuYmxvY2tlZCBhbmQgaW5pdGlhbGl6ZXMgdGhlIGNhY2hlZCBwbGFuIGZvciBleGVj dXRpb24sIGl0IGRldGVjdHMgdGhlCisjIGNvbmN1cnJlbnQgaW5kZXggZHJvcCBhbmQgY2F1c2Vz IHRoZSBjYWNoZWQgcGxhbiB0byBiZSBkaXNjYXJkZWQgYW5kCisjIHJlY3JlYXRlZCB3aXRob3V0 IHRoZSBpbmRleC4KK3Blcm11dGF0aW9uICJzMXByZXAiICJzMmxvY2siICJzMWV4ZWMiICJzMmRy b3BpIiAiczJ1bmxvY2siCitwZXJtdXRhdGlvbiAiczFwcmVwMiIgInMybG9jayIgInMxZXhlYzIi ICJzMmRyb3BpIiAiczJ1bmxvY2siCi0tIAoyLjM1LjMKCg== --000000000000df08af05f6d96603 Content-Type: application/octet-stream; name="v35-0001-Add-field-to-store-partitioned-relids-to-Append-.patch" Content-Disposition: attachment; filename="v35-0001-Add-field-to-store-partitioned-relids-to-Append-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lf8377rq2 RnJvbSBkNGM2ZWRkZDAyZDA0OGE0MmE5OTQxYWI3ZGM4ZGNmMTQxMWZlZjc4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogVGh1LCA5IE1hciAyMDIzIDExOjI2OjA2ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2MzUgMS8z XSBBZGQgZmllbGQgdG8gc3RvcmUgcGFydGl0aW9uZWQgcmVsaWRzIHRvCiBBcHBlbmQvTWVyZ2VB cHBlbmQKCkEgZnV0dXJlIGNvbW1pdCB3b3VsZCBsaWtlIHRvIG1vdmUgdGhlIHRpbWluZyBvZiBs b2NraW5nIHJlbGF0aW9ucwpyZWZlcmVuY2VkIGluIGEgY2FjaGVkIHBsYW4gdG8gRXhlY0luaXRO b2RlKCkgdHJhdmVyc2FsIG9mIHRoZSBwbGFuCnRyZWUgZnJvbSB0aGUgY3VycmVudCBsb29wLW92 ZXItcmFuZ2V0YWJsZSBpbiBBY3F1aXJlRXhlY3V0b3JMb2NrcygpLgpHaXZlbiB0aGF0IHBhcnRp dGlvbmVkIHRhYmxlcyAodGhlaXIgUlQgaW5kZXhlcykgd291bGQgbm90IGJlCmFjY2Vzc2libGUg dmlhIHRoZSBuZXcgd2F5IG9mIGZpbmRpbmcgdGhlIHJlbGF0aW9ucyB0byBsb2NrLCBhZGQgYQpm aWVsZCB0byBBcHBlbmQvTWVyZ2VBcHBlbmQgdG8gdHJhY2sgdGhlbSBzZXBhcmF0ZWx5LgoKVGhp cyByZWZhY3RvcnMgdGhlIGNvZGUgdG8gbG9vayB1cCBwYXJ0aXRpb25lZCBwYXJlbnQgcmVsaWRz IGZyb20gYQpnaXZlbiBsaXN0IG9mIGxlYWYgcGFydGl0aW9uIHN1YnBhdGhzIG9mIGFuIEFwcGVu ZC9NZXJnZUFwcGVuZCBvdXQKb2YgbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKCkgaW50byBpdHMg b3duIGZ1bmN0aW9uIGNhbGxlZAphZGRfYXBwZW5kX3N1YnBhdGhfcGFydHJlbGlkcygpLiAgVGhv dWdoLCB0aGUgY29kZSBuZWVkcyB0byBiZQpnZW5lcmFsaXplZCB0byB0aGUgY2FzZXMgd2hlcmUg Y2hpbGQgcmVscyBjYW4gYmUgam9pbnJlbHMgb3IKdXBwZXIgKGdyb3VwaW5nKSByZWxzLiAgQWxz bywgdG8gbWFrZSBpdCBlYXNpZXIgdG8gdHJhdmVyc2UgdGhlIHBhcmVudApjaGFpbiBvZiBhIGNo aWxkIGdyb3VwaW5nIHJlbCwgdGhpcyBtYWtlcyBpdHMgUmVsT3B0SW5mby5wYXJlbnQgdG8gYmUK c2V0LCB3aGljaCBpcyBhbHJlYWR5IGRvbmUgZm9yIGJhc2VyZWxzIGFuZCBqb2lucmVscy4KLS0t CiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgfCAgMzYgKysrKystLQog c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgIHwgICAzICsKIHNyYy9iYWNr ZW5kL29wdGltaXplci91dGlsL2FwcGVuZGluZm8uYyB8IDEzNCArKysrKysrKysrKysrKysrKysr KysrKysKIHNyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYyAgICB8IDEyNCArKyst LS0tLS0tLS0tLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCAgICAgICAg ICAgfCAgMTQgKysrCiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvYXBwZW5kaW5mby5oICAgICAgfCAg IDMgKwogc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oICAgIHwgICAzICstCiA3 IGZpbGVzIGNoYW5nZWQsIDE5NCBpbnNlcnRpb25zKCspLCAxMjMgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCmluZGV4IGZhMDlhNjEwM2IuLjk0ZmUw YTI4YWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4u YworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKQEAgLTI1LDYg KzI1LDcgQEAKICNpbmNsdWRlICJub2Rlcy9leHRlbnNpYmxlLmgiCiAjaW5jbHVkZSAibm9kZXMv bWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCisjaW5jbHVkZSAib3B0 aW1pemVyL2FwcGVuZGluZm8uaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvY2xhdXNlcy5oIgogI2lu Y2x1ZGUgIm9wdGltaXplci9jb3N0LmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5o IgpAQCAtMTIwOSw2ICsxMjEwLDcgQEAgY3JlYXRlX2FwcGVuZF9wbGFuKFBsYW5uZXJJbmZvICpy b290LCBBcHBlbmRQYXRoICpiZXN0X3BhdGgsIGludCBmbGFncykKIAlPaWQJCSAgICpub2RlQ29s bGF0aW9ucyA9IE5VTEw7CiAJYm9vbAkgICAqbm9kZU51bGxzRmlyc3QgPSBOVUxMOwogCWJvb2wJ CWNvbnNpZGVyX2FzeW5jID0gZmFsc2U7CisJTGlzdAkgICAqYWxscGFydHJlbGlkcyA9IE5JTDsK IAogCS8qCiAJICogVGhlIHN1YnBhdGhzIGxpc3QgY291bGQgYmUgZW1wdHksIGlmIGV2ZXJ5IGNo aWxkIHdhcyBwcm92ZW4gZW1wdHkgYnkKQEAgLTEzNTAsMTggKzEzNTIsMjQgQEAgY3JlYXRlX2Fw cGVuZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBBcHBlbmRQYXRoICpiZXN0X3BhdGgsIGludCBm bGFncykKIAkJCSsrbmFzeW5jcGxhbnM7CiAJCX0KIAorCQkvKiBQb3B1bGF0ZSBwYXJ0aXRpb25l ZCBwYXJlbnQgcmVsaWRzLiAqLworCQlhbGxwYXJ0cmVsaWRzID0gYWRkX2FwcGVuZF9zdWJwYXRo X3BhcnRyZWxpZHMocm9vdCwgc3VicGF0aCwgcmVsLAorCQkJCQkJCQkJCQkJCSAgYWxscGFydHJl bGlkcyk7CisKIAkJc3VicGxhbnMgPSBsYXBwZW5kKHN1YnBsYW5zLCBzdWJwbGFuKTsKIAl9CiAK KwlwbGFuLT5hbGxwYXJ0cmVsaWRzID0gYWxscGFydHJlbGlkczsKKwogCS8qIFNldCBiZWxvdyBp ZiB3ZSBmaW5kIHF1YWxzIHRoYXQgd2UgY2FuIHVzZSB0byBydW4tdGltZSBwcnVuZSAqLwogCXBs YW4tPnBhcnRfcHJ1bmVfaW5kZXggPSAtMTsKIAogCS8qCi0JICogSWYgYW55IHF1YWxzIGV4aXN0 LCB0aGV5IG1heSBiZSB1c2VmdWwgdG8gcGVyZm9ybSBmdXJ0aGVyIHBhcnRpdGlvbgotCSAqIHBy dW5pbmcgZHVyaW5nIGV4ZWN1dGlvbi4gIEdhdGhlciBpbmZvcm1hdGlvbiBuZWVkZWQgYnkgdGhl IGV4ZWN1dG9yIHRvCi0JICogZG8gcGFydGl0aW9uIHBydW5pbmcuCisJICogSWYgc2Nhbm5pbmcg cGFydGl0aW9ucywgY2hlY2sgaWYgdGhlcmUgYXJlIHF1YWxzIHRoYXQgbWF5IGJlIHVzZWZ1bCB0 bworCSAqIHBlcmZvcm0gZnVydGhlciBwYXJ0aXRpb24gcHJ1bmluZyBkdXJpbmcgZXhlY3V0aW9u LiAgR2F0aGVyIGluZm9ybWF0aW9uCisJICogbmVlZGVkIGJ5IHRoZSBleGVjdXRvciB0byBkbyBw YXJ0aXRpb24gcHJ1bmluZy4KIAkgKi8KLQlpZiAoZW5hYmxlX3BhcnRpdGlvbl9wcnVuaW5nKQor CWlmIChlbmFibGVfcGFydGl0aW9uX3BydW5pbmcgJiYgYWxscGFydHJlbGlkcyAhPSBOSUwpCiAJ ewogCQlMaXN0CSAgICpwcnVuZXF1YWw7CiAKQEAgLTEzODEsNyArMTM4OSw4IEBAIGNyZWF0ZV9h cHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgQXBwZW5kUGF0aCAqYmVzdF9wYXRoLCBpbnQg ZmxhZ3MpCiAJCWlmIChwcnVuZXF1YWwgIT0gTklMKQogCQkJcGxhbi0+cGFydF9wcnVuZV9pbmRl eCA9IG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhyb290LCByZWwsCiAJCQkJCQkJCQkJCQkJCQkg IGJlc3RfcGF0aC0+c3VicGF0aHMsCi0JCQkJCQkJCQkJCQkJCQkgIHBydW5lcXVhbCk7CisJCQkJ CQkJCQkJCQkJCQkgIHBydW5lcXVhbCwKKwkJCQkJCQkJCQkJCQkJCSAgYWxscGFydHJlbGlkcyk7 CiAJfQogCiAJcGxhbi0+YXBwZW5kcGxhbnMgPSBzdWJwbGFuczsKQEAgLTE0MjUsNiArMTQzNCw3 IEBAIGNyZWF0ZV9tZXJnZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgTWVyZ2VBcHBl bmRQYXRoICpiZXN0X3BhdGgsCiAJTGlzdAkgICAqc3VicGxhbnMgPSBOSUw7CiAJTGlzdENlbGwg ICAqc3VicGF0aHM7CiAJUmVsT3B0SW5mbyAqcmVsID0gYmVzdF9wYXRoLT5wYXRoLnBhcmVudDsK KwlMaXN0CSAgICphbGxwYXJ0cmVsaWRzID0gTklMOwogCiAJLyoKIAkgKiBXZSBkb24ndCBoYXZl IHRoZSBhY3R1YWwgY3JlYXRpb24gb2YgdGhlIE1lcmdlQXBwZW5kIG5vZGUgc3BsaXQgb3V0CkBA IC0xNTE0LDE4ICsxNTI0LDIzIEBAIGNyZWF0ZV9tZXJnZV9hcHBlbmRfcGxhbihQbGFubmVySW5m byAqcm9vdCwgTWVyZ2VBcHBlbmRQYXRoICpiZXN0X3BhdGgsCiAJCQlzdWJwbGFuID0gKFBsYW4g Kikgc29ydDsKIAkJfQogCisJCWFsbHBhcnRyZWxpZHMgPSBhZGRfYXBwZW5kX3N1YnBhdGhfcGFy dHJlbGlkcyhyb290LCBzdWJwYXRoLCByZWwsCisJCQkJCQkJCQkJCQkJICBhbGxwYXJ0cmVsaWRz KTsKKwogCQlzdWJwbGFucyA9IGxhcHBlbmQoc3VicGxhbnMsIHN1YnBsYW4pOwogCX0KIAorCW5v ZGUtPmFsbHBhcnRyZWxpZHMgPSBhbGxwYXJ0cmVsaWRzOworCiAJLyogU2V0IGJlbG93IGlmIHdl IGZpbmQgcXVhbHMgdGhhdCB3ZSBjYW4gdXNlIHRvIHJ1bi10aW1lIHBydW5lICovCiAJbm9kZS0+ cGFydF9wcnVuZV9pbmRleCA9IC0xOwogCiAJLyoKLQkgKiBJZiBhbnkgcXVhbHMgZXhpc3QsIHRo ZXkgbWF5IGJlIHVzZWZ1bCB0byBwZXJmb3JtIGZ1cnRoZXIgcGFydGl0aW9uCi0JICogcHJ1bmlu ZyBkdXJpbmcgZXhlY3V0aW9uLiAgR2F0aGVyIGluZm9ybWF0aW9uIG5lZWRlZCBieSB0aGUgZXhl Y3V0b3IgdG8KLQkgKiBkbyBwYXJ0aXRpb24gcHJ1bmluZy4KKwkgKiBJZiBzY2FubmluZyBwYXJ0 aXRpb25zLCBjaGVjayBpZiB0aGVyZSBhcmUgcXVhbHMgdGhhdCBtYXkgYmUgdXNlZnVsIHRvCisJ ICogcGVyZm9ybSBmdXJ0aGVyIHBhcnRpdGlvbiBwcnVuaW5nIGR1cmluZyBleGVjdXRpb24uICBH YXRoZXIgaW5mb3JtYXRpb24KKwkgKiBuZWVkZWQgYnkgdGhlIGV4ZWN1dG9yIHRvIGRvIHBhcnRp dGlvbiBwcnVuaW5nLgogCSAqLwotCWlmIChlbmFibGVfcGFydGl0aW9uX3BydW5pbmcpCisJaWYg KGVuYWJsZV9wYXJ0aXRpb25fcHJ1bmluZyAmJiBhbGxwYXJ0cmVsaWRzICE9IE5JTCkKIAl7CiAJ CUxpc3QJICAgKnBydW5lcXVhbDsKIApAQCAtMTU0NSw3ICsxNTYwLDggQEAgY3JlYXRlX21lcmdl X2FwcGVuZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBNZXJnZUFwcGVuZFBhdGggKmJlc3RfcGF0 aCwKIAkJaWYgKHBydW5lcXVhbCAhPSBOSUwpCiAJCQlub2RlLT5wYXJ0X3BydW5lX2luZGV4ID0g bWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKHJvb3QsIHJlbCwKIAkJCQkJCQkJCQkJCQkJCSAgYmVz dF9wYXRoLT5zdWJwYXRocywKLQkJCQkJCQkJCQkJCQkJCSAgcHJ1bmVxdWFsKTsKKwkJCQkJCQkJ CQkJCQkJCSAgcHJ1bmVxdWFsLAorCQkJCQkJCQkJCQkJCQkJICBhbGxwYXJ0cmVsaWRzKTsKIAl9 CiAKIAlub2RlLT5tZXJnZXBsYW5zID0gc3VicGxhbnM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9w bGFubmVyLmMKaW5kZXggYTE4NzNjZTI2ZC4uNjJiM2VjOTZjYyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wbGFuL3BsYW5uZXIuYwpAQCAtNzgwMSw4ICs3ODAxLDExIEBAIGNyZWF0ZV9wYXJ0aXRpb253 aXNlX2dyb3VwaW5nX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCQkJICAgYWdnX2Nv c3RzLCBnZCwgJmNoaWxkX2V4dHJhLAogCQkJCQkJCQkJICAgJmNoaWxkX3BhcnRpYWxseV9ncm91 cGVkX3JlbCk7CiAKKwkJLyogTWFyayBhcyBjaGlsZCBvZiBncm91cGVkX3JlbC4gKi8KKwkJY2hp bGRfZ3JvdXBlZF9yZWwtPnBhcmVudCA9IGdyb3VwZWRfcmVsOwogCQlpZiAoY2hpbGRfcGFydGlh bGx5X2dyb3VwZWRfcmVsKQogCQl7CisJCQljaGlsZF9wYXJ0aWFsbHlfZ3JvdXBlZF9yZWwtPnBh cmVudCA9IGdyb3VwZWRfcmVsOwogCQkJcGFydGlhbGx5X2dyb3VwZWRfbGl2ZV9jaGlsZHJlbiA9 CiAJCQkJbGFwcGVuZChwYXJ0aWFsbHlfZ3JvdXBlZF9saXZlX2NoaWxkcmVuLAogCQkJCQkJY2hp bGRfcGFydGlhbGx5X2dyb3VwZWRfcmVsKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGlt aXplci91dGlsL2FwcGVuZGluZm8uYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2FwcGVu ZGluZm8uYwppbmRleCA5ZDM3NzM4NWYxLi40ODc2NzQyYWIyIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3V0aWwvYXBwZW5kaW5mby5jCkBAIC00MCw2ICs0MCw3IEBAIHN0YXRpYyB2b2lkIG1ha2Vf aW5oX3RyYW5zbGF0aW9uX2xpc3QoUmVsYXRpb24gb2xkcmVsYXRpb24sCiAJCQkJCQkJCQkgIEFw cGVuZFJlbEluZm8gKmFwcGluZm8pOwogc3RhdGljIE5vZGUgKmFkanVzdF9hcHBlbmRyZWxfYXR0 cnNfbXV0YXRvcihOb2RlICpub2RlLAogCQkJCQkJCQkJCQlhZGp1c3RfYXBwZW5kcmVsX2F0dHJz X2NvbnRleHQgKmNvbnRleHQpOworc3RhdGljIExpc3QgKmFkZF9wYXJ0X3JlbGlkcyhMaXN0ICph bGxwYXJ0cmVsaWRzLCBCaXRtYXBzZXQgKnBhcnRyZWxpZHMpOwogCiAKIC8qCkBAIC0xMDMxLDMg KzEwMzIsMTM2IEBAIGRpc3RyaWJ1dGVfcm93X2lkZW50aXR5X3ZhcnMoUGxhbm5lckluZm8gKnJv b3QpCiAJCX0KIAl9CiB9CisKKy8qCisgKiBhZGRfYXBwZW5kX3N1YnBhdGhfcGFydHJlbGlkcwor ICoJCUxvb2sgdXAgYSBjaGlsZCBzdWJwYXRoJ3MgcmVsJ3MgcGFydGl0aW9uZWQgcGFyZW50IHJl bGlkcyB1cCB0bworICoJCXBhcmVudHJlbCBhbmQgYWRkIHRoZSBiaXRtYXBzZXQgY29udGFpbmlu ZyB0aG9zZSBpbnRvCisgKgkJJ2FsbHBhcnRyZWxpZHMnCisgKi8KK0xpc3QgKgorYWRkX2FwcGVu ZF9zdWJwYXRoX3BhcnRyZWxpZHMoUGxhbm5lckluZm8gKnJvb3QsIFBhdGggKnN1YnBhdGgsCisJ CQkJCQkJICBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCisJCQkJCQkJICBMaXN0ICphbGxwYXJ0cmVs aWRzKQoreworCVJlbE9wdEluZm8gKnByZWwgPSBzdWJwYXRoLT5wYXJlbnQ7CisJUmVsaWRzCQlw YXJ0cmVsaWRzID0gTlVMTDsKKworCS8qIE5vdGhpbmcgdG8gZG8gaWYgdGhlcmUncyBubyBwYXJl bnQgdG8gYmVnaW4gd2l0aC4gKi8KKwlpZiAoIUlTX09USEVSX1JFTChwcmVsKSkKKwkJcmV0dXJu IGFsbHBhcnRyZWxpZHM7CisKKwkvKgorCSAqIFRyYXZlcnNlIHVwIHRvIHRoZSBwYXRocmVsJ3Mg dG9wbW9zdCBwYXJ0aXRpb25lZCBwYXJlbnQsIGNvbGxlY3RpbmcKKwkgKiBwYXJlbnQgcmVsaWRz IGFzIHdlIGdvOyBidXQgc3RvcCBpZiB3ZSByZWFjaCBwYXJlbnRyZWwuICAoTm9ybWFsbHksIGEK KwkgKiBwYXRocmVsJ3MgdG9wbW9zdCBwYXJ0aXRpb25lZCBwYXJlbnQgaXMgZWl0aGVyIHBhcmVu dHJlbCBvciBhIFVOSU9OIEFMTAorCSAqIGFwcGVuZHJlbCBjaGlsZCBvZiBwYXJlbnRyZWwuICBC dXQgd2hlbiBoYW5kbGluZyBwYXJ0aXRpb253aXNlIGpvaW5zIG9mCisJICogbXVsdGktbGV2ZWwg cGFydGl0aW9uaW5nIHRyZWVzLCB3ZSBjYW4gc2VlIGFuIGFwcGVuZCBwYXRoIHdob3NlCisJICog cGFyZW50cmVsIGlzIGFuIGludGVybWVkaWF0ZSBwYXJ0aXRpb25lZCB0YWJsZS4pCisJICovCisJ ZG8KKwl7CisJCVJlbGlkcwlwYXJlbnRfcmVsaWRzID0gTlVMTDsKKworCQkvKgorCQkgKiBGb3Ig c2ltcGxlIGNoaWxkIHJlbHMsIHdlIGNhbiBzaW1wbHkgZ2V0IHRoZSBwYXJlbnQgcmVsaWQgZnJv bQorCQkgKiBwcmVsLT5wYXJlbnQuICBCdXQgZm9yIHBhcnRpdGlvbndpc2Ugam9pbiBhbmQgYWdn cmVnYXRlIGNoaWxkIHJlbHMsCisJCSAqIHdoaWxlIHdlIGNhbiB1c2UgcHJlbC0+cGFyZW50IHRv IG1vdmUgdXAgdGhlIHRyZWUsIHBhcmVudCByZWxpZHMgdG8KKwkJICogYWRkIGludG8gJ3BhcnRy ZWxpZHMnIG11c3QgYmUgZm91bmQgdGhlIGhhcmQgd2F5IHRocm91Z2ggdGhlCisJCSAqIEFwcGVu ZEluZm9JbmZvcywgYmVjYXVzZSAxKSBhIGpvaW5yZWwncyByZWxpZHMgbWF5IHBvaW50IHRvIFJU RV9KT0lOCisJCSAqIGVudHJpZXMsIDIpIHRvcG1vc3QgcGFyZW50IGdyb3VwaW5nIHJlbCdzIHJl bGlkcyBmaWVsZCBpcyBsZWZ0IE5VTEwuCisJCSAqLworCQlpZiAoSVNfU0lNUExFX1JFTChwcmVs KSkKKwkJeworCQkJcHJlbCA9IHByZWwtPnBhcmVudDsKKwkJCS8qIFN0b3Agb25jZSB3ZSByZWFj aCB0aGUgcm9vdCBwYXJ0aXRpb25lZCByZWwuICovCisJCQlpZiAoIUlTX1BBUlRJVElPTkVEX1JF TChwcmVsKSkKKwkJCQlicmVhazsKKwkJCXBhcmVudF9yZWxpZHMgPSBibXNfYWRkX21lbWJlcnMo cGFyZW50X3JlbGlkcywgcHJlbC0+cmVsaWRzKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCUFwcGVu ZFJlbEluZm8gKiphcHBpbmZvczsKKwkJCWludAkJbmFwcGluZm9zLAorCQkJCQlpOworCisJCQlh cHBpbmZvcyA9IGZpbmRfYXBwaW5mb3NfYnlfcmVsaWRzKHJvb3QsIHByZWwtPnJlbGlkcywKKwkJ CQkJCQkJCQkJICAgJm5hcHBpbmZvcyk7CisJCQlmb3IgKGkgPSAwOyBpIDwgbmFwcGluZm9zOyBp KyspCisJCQl7CisJCQkJQXBwZW5kUmVsSW5mbyAqYXBwaW5mbyA9IGFwcGluZm9zW2ldOworCisJ CQkJcGFyZW50X3JlbGlkcyA9IGJtc19hZGRfbWVtYmVyKHBhcmVudF9yZWxpZHMsCisJCQkJCQkJ CQkJCSAgIGFwcGluZm8tPnBhcmVudF9yZWxpZCk7CisJCQl9CisJCQlwZnJlZShhcHBpbmZvcyk7 CisJCQlwcmVsID0gcHJlbC0+cGFyZW50OworCQl9CisJCS8qIGFjY2VwdCB0aGlzIGxldmVsIGFz IGFuIGludGVyZXN0aW5nIHBhcmVudCAqLworCQlwYXJ0cmVsaWRzID0gYm1zX2FkZF9tZW1iZXJz KHBhcnRyZWxpZHMsIHBhcmVudF9yZWxpZHMpOworCQlpZiAocHJlbCA9PSBwYXJlbnRyZWwpCisJ CQlicmVhazsJCS8qIGRvbid0IHRyYXZlcnNlIGFib3ZlIHBhcmVudHJlbCAqLworCX0gd2hpbGUg KElTX09USEVSX1JFTChwcmVsKSk7CisKKwlpZiAocGFydHJlbGlkcyA9PSBOVUxMKQorCQlyZXR1 cm4gYWxscGFydHJlbGlkczsKKworCXJldHVybiBhZGRfcGFydF9yZWxpZHMoYWxscGFydHJlbGlk cywgcGFydHJlbGlkcyk7Cit9CisKKy8qCisgKiBhZGRfcGFydF9yZWxpZHMKKyAqCQlBZGQgbmV3 IGluZm8gdG8gYSBsaXN0IG9mIEJpdG1hcHNldHMgb2YgcGFydGl0aW9uZWQgcmVsaWRzLgorICoK KyAqIFdpdGhpbiAnYWxscGFydHJlbGlkcycsIHRoZXJlIGlzIG9uZSBCaXRtYXBzZXQgZm9yIGVh Y2ggdG9wbW9zdCBwYXJlbnQKKyAqIHBhcnRpdGlvbmVkIHJlbC4gIEVhY2ggQml0bWFwc2V0IGNv bnRhaW5zIHRoZSBSVCBpbmRleGVzIG9mIHRoZSB0b3Btb3N0CisgKiBwYXJlbnQgYXMgd2VsbCBh cyBpdHMgcmVsZXZhbnQgbm9uLWxlYWYgY2hpbGQgcGFydGl0aW9ucy4gIFNpbmNlIChieQorICog Y29uc3RydWN0aW9uIG9mIHRoZSByYW5nZXRhYmxlIGxpc3QpIHBhcmVudCBwYXJ0aXRpb25zIG11 c3QgaGF2ZSBsb3dlcgorICogUlQgaW5kZXhlcyB0aGFuIHRoZWlyIGNoaWxkcmVuLCB3ZSBjYW4g ZGlzdGluZ3Vpc2ggdGhlIHRvcG1vc3QgcGFyZW50CisgKiBhcyBiZWluZyB0aGUgbG93ZXN0IHNl dCBiaXQgaW4gdGhlIEJpdG1hcHNldC4KKyAqCisgKiAncGFydHJlbGlkcycgY29udGFpbnMgdGhl IFJUIGluZGV4ZXMgb2YgYSBwYXJlbnQgcGFydGl0aW9uZWQgcmVsLCBhbmQKKyAqIHBvc3NpYmx5 IHNvbWUgbm9uLWxlYWYgY2hpbGRyZW4sIHRoYXQgYXJlIG5ld2x5IGlkZW50aWZpZWQgYXMgcGFy ZW50cyBvZgorICogc29tZSBzdWJwYXRoIHJlbCBwYXNzZWQgdG8gbWFrZV9wYXJ0aXRpb25fcHJ1 bmVpbmZvKCkuICBUaGVzZSBhcmUgYWRkZWQKKyAqIHRvIGFuIGFwcHJvcHJpYXRlIG1lbWJlciBv ZiAnYWxscGFydHJlbGlkcycuCisgKgorICogTm90ZSB0aGF0IHRoZSBsaXN0IGNvbnRhaW5zIG9u bHkgUlQgaW5kZXhlcyBvZiBwYXJ0aXRpb25lZCB0YWJsZXMgdGhhdAorICogYXJlIHBhcmVudHMg b2Ygc29tZSBzY2FuLWxldmVsIHJlbGF0aW9uIGFwcGVhcmluZyBpbiB0aGUgJ3N1YnBhdGhzJyB0 aGF0CisgKiBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oKSBpcyBkZWFsaW5nIHdpdGguICBBbHNv LCAidG9wbW9zdCIgcGFyZW50cyBhcmUKKyAqIG5vdCBhbGxvd2VkIHRvIGJlIGhpZ2hlciB0aGFu IHRoZSAncGFyZW50cmVsJyBhc3NvY2lhdGVkIHdpdGggdGhlIGFwcGVuZAorICogcGF0aC4gIElu IHRoaXMgd2F5LCB3ZSBhdm9pZCBleHBlbmRpbmcgY3ljbGVzIG9uIHBhcnRpdGlvbmVkIHJlbHMg dGhhdAorICogY2FuJ3QgY29udHJpYnV0ZSB1c2VmdWwgcHJ1bmluZyBpbmZvcm1hdGlvbiBmb3Ig dGhlIHByb2JsZW0gYXQgaGFuZC4KKyAqIChJdCBpcyBwb3NzaWJsZSBmb3IgJ3BhcmVudHJlbCcg dG8gYmUgYSBjaGlsZCBwYXJ0aXRpb25lZCB0YWJsZSwgYW5kIGl0CisgKiBpcyBhbHNvIHBvc3Np YmxlIGZvciBzY2FuLWxldmVsIHJlbGF0aW9ucyB0byBiZSBjaGlsZCBwYXJ0aXRpb25lZCB0YWJs ZXMKKyAqIHJhdGhlciB0aGFuIGxlYWYgcGFydGl0aW9ucy4gIEhlbmNlIHdlIG11c3QgY29uc3Ry dWN0IHRoaXMgcmVsYXRpb24gc2V0CisgKiB3aXRoIHJlZmVyZW5jZSB0byB0aGUgcGFydGljdWxh ciBhcHBlbmQgcGF0aCB3ZSdyZSBkZWFsaW5nIHdpdGgsIHJhdGhlcgorICogdGhhbiBsb29raW5n IGF0IHRoZSBmdWxsIHBhcnRpdGlvbmluZyBzdHJ1Y3R1cmUgcmVwcmVzZW50ZWQgaW4gdGhlCisg KiBSZWxPcHRJbmZvcy4pCisgKi8KK3N0YXRpYyBMaXN0ICoKK2FkZF9wYXJ0X3JlbGlkcyhMaXN0 ICphbGxwYXJ0cmVsaWRzLCBCaXRtYXBzZXQgKnBhcnRyZWxpZHMpCit7CisJSW5kZXgJCXRhcmdl dHBhcnQ7CisJTGlzdENlbGwgICAqbGM7CisKKwkvKiBXZSBjYW4gZWFzaWx5IGdldCB0aGUgbG93 ZXN0IHNldCBiaXQgdGhpcyB3YXk6ICovCisJdGFyZ2V0cGFydCA9IGJtc19uZXh0X21lbWJlcihw YXJ0cmVsaWRzLCAtMSk7CisJQXNzZXJ0KHRhcmdldHBhcnQgPiAwKTsKKworCS8qIExvb2sgZm9y IGEgbWF0Y2hpbmcgdG9wbW9zdCBwYXJlbnQgKi8KKwlmb3JlYWNoKGxjLCBhbGxwYXJ0cmVsaWRz KQorCXsKKwkJQml0bWFwc2V0ICAqY3VycnBhcnRyZWxpZHMgPSAoQml0bWFwc2V0ICopIGxmaXJz dChsYyk7CisJCUluZGV4CQljdXJydGFyZ2V0ID0gYm1zX25leHRfbWVtYmVyKGN1cnJwYXJ0cmVs aWRzLCAtMSk7CisKKwkJaWYgKHRhcmdldHBhcnQgPT0gY3VycnRhcmdldCkKKwkJeworCQkJLyog Rm91bmQgYSBtYXRjaCwgc28gYWRkIGFueSBuZXcgUlQgaW5kZXhlcyB0byB0aGlzIGhpZXJhcmNo eSAqLworCQkJY3VycnBhcnRyZWxpZHMgPSBibXNfYWRkX21lbWJlcnMoY3VycnBhcnRyZWxpZHMs IHBhcnRyZWxpZHMpOworCQkJbGZpcnN0KGxjKSA9IGN1cnJwYXJ0cmVsaWRzOworCQkJcmV0dXJu IGFsbHBhcnRyZWxpZHM7CisJCX0KKwl9CisJLyogTm8gbWF0Y2gsIHNvIGFkZCB0aGUgbmV3IHBh cnRpdGlvbiBoaWVyYXJjaHkgdG8gdGhlIGxpc3QgKi8KKwlyZXR1cm4gbGFwcGVuZChhbGxwYXJ0 cmVsaWRzLCBwYXJ0cmVsaWRzKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnRpdGlv bmluZy9wYXJ0cHJ1bmUuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYwpp bmRleCA1MTAxNDVlM2MwLi4zNTU3ZTA3MDgyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0 aXRpb25pbmcvcGFydHBydW5lLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRw cnVuZS5jCkBAIC0xMzgsNyArMTM4LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgUHJ1bmVTdGVwUmVzdWx0 CiB9IFBydW5lU3RlcFJlc3VsdDsKIAogCi1zdGF0aWMgTGlzdCAqYWRkX3BhcnRfcmVsaWRzKExp c3QgKmFsbHBhcnRyZWxpZHMsIEJpdG1hcHNldCAqcGFydHJlbGlkcyk7CiBzdGF0aWMgTGlzdCAq bWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJ CQkJICAgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQkJCQkJCQkJCSAgIExpc3QgKnBydW5lcXVh bCwKQEAgLTIyMSwzMyArMjIwLDMyIEBAIHN0YXRpYyB2b2lkIHBhcnRrZXlfZGF0dW1fZnJvbV9l eHByKFBhcnRpdGlvblBydW5lQ29udGV4dCAqY29udGV4dCwKICAqIG9mIHNjYW4gcGF0aHMgZm9y IGl0cyBjaGlsZCByZWxzLgogICogJ3BydW5lcXVhbCcgaXMgYSBsaXN0IG9mIHBvdGVudGlhbCBw cnVuaW5nIHF1YWxzIChpLmUuLCByZXN0cmljdGlvbgogICogY2xhdXNlcyB0aGF0IGFyZSBhcHBs aWNhYmxlIHRvIHRoZSBhcHBlbmRyZWwpLgorICogJ2FsbHBhcnRyZWxpZHMnIGNvbnRhaW5zIEJp dG1hcHNldHMgb2YgUlQgaW5kZXhlcyBvZiBwYXJ0aXRpb25lZCBwYXJlbnRzCisgKiB3aG9zZSBw YXJ0aXRpb25zJyBQYXRocyBhcmUgaW4gJ3N1YnBhdGhzJzsgdGhlcmUncyBvbmUgQml0bWFwc2V0 IGZvciBldmVyeQorICogcGFydGl0aW9uIHRyZWUgaW52b2x2ZWQuCiAgKi8KIGludAogbWFrZV9w YXJ0aXRpb25fcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRy ZWwsCiAJCQkJCQkgTGlzdCAqc3VicGF0aHMsCi0JCQkJCQkgTGlzdCAqcHJ1bmVxdWFsKQorCQkJ CQkJIExpc3QgKnBydW5lcXVhbCwKKwkJCQkJCSBMaXN0ICphbGxwYXJ0cmVsaWRzKQogewogCVBh cnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvOwogCUJpdG1hcHNldCAgKmFsbG1hdGNoZWRzdWJw bGFucyA9IE5VTEw7Ci0JTGlzdAkgICAqYWxscGFydHJlbGlkczsKIAlMaXN0CSAgICpwcnVuZXJl bGluZm9zOwogCWludAkJICAgKnJlbGlkX3N1YnBsYW5fbWFwOwogCUxpc3RDZWxsICAgKmxjOwog CWludAkJCWk7CiAKKwlBc3NlcnQobGlzdF9sZW5ndGgoYWxscGFydHJlbGlkcykgPiAwKTsKKwog CS8qCi0JICogU2NhbiB0aGUgc3VicGF0aHMgdG8gc2VlIHdoaWNoIG9uZXMgYXJlIHNjYW5zIG9m IHBhcnRpdGlvbiBjaGlsZAotCSAqIHJlbGF0aW9ucywgYW5kIGlkZW50aWZ5IHRoZWlyIHBhcmVu dCBwYXJ0aXRpb25lZCByZWxzLiAgKE5vdGU6IHdlIG11c3QKLQkgKiByZXN0cmljdCB0aGUgcGFy ZW50IHBhcnRpdGlvbmVkIHJlbHMgdG8gYmUgcGFyZW50cmVsIG9yIGNoaWxkcmVuIG9mCi0JICog cGFyZW50cmVsLCBvdGhlcndpc2Ugd2UgY291bGRuJ3QgdHJhbnNsYXRlIHBydW5lcXVhbCB0byBt YXRjaC4pCi0JICoKLQkgKiBBbHNvIGNvbnN0cnVjdCBhIHRlbXBvcmFyeSBhcnJheSB0byBtYXAg ZnJvbSBwYXJ0aXRpb24tY2hpbGQtcmVsYXRpb24KLQkgKiByZWxpZCB0byB0aGUgaW5kZXggaW4g J3N1YnBhdGhzJyBvZiB0aGUgc2NhbiBwbGFuIGZvciB0aGF0IHBhcnRpdGlvbi4KKwkgKiBDb25z dHJ1Y3QgYSB0ZW1wb3JhcnkgYXJyYXkgdG8gbWFwIGZyb20gcGFydGl0aW9uLWNoaWxkLXJlbGF0 aW9uIHJlbGlkCisJICogdG8gdGhlIGluZGV4IGluICdzdWJwYXRocycgb2YgdGhlIHNjYW4gcGxh biBmb3IgdGhhdCBwYXJ0aXRpb24uCiAJICogKFVzZSBvZiAic3VicGxhbiIgcmF0aGVyIHRoYW4g InN1YnBhdGgiIGlzIGEgYml0IG9mIGEgbWlzbm9tZXIsIGJ1dAogCSAqIHdlJ2xsIGxldCBpdCBz dGFuZC4pICBGb3IgY29udmVuaWVuY2UsIHdlIHVzZSAxLWJhc2VkIGluZGV4ZXMgaGVyZSwgc28K IAkgKiB0aGF0IHplcm8gY2FuIHJlcHJlc2VudCBhbiB1bi1maWxsZWQgYXJyYXkgZW50cnkuCiAJ ICovCi0JYWxscGFydHJlbGlkcyA9IE5JTDsKIAlyZWxpZF9zdWJwbGFuX21hcCA9IHBhbGxvYzAo c2l6ZW9mKGludCkgKiByb290LT5zaW1wbGVfcmVsX2FycmF5X3NpemUpOwogCiAJaSA9IDE7CkBA IC0yNTYsNTAgKzI1NCw5IEBAIG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhQbGFubmVySW5mbyAq cm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQlQYXRoCSAgICpwYXRoID0gKFBhdGggKikg bGZpcnN0KGxjKTsKIAkJUmVsT3B0SW5mbyAqcGF0aHJlbCA9IHBhdGgtPnBhcmVudDsKIAotCQkv KiBXZSBkb24ndCBjb25zaWRlciBwYXJ0aXRpb25lZCBqb2lucyBoZXJlICovCi0JCWlmIChwYXRo cmVsLT5yZWxvcHRraW5kID09IFJFTE9QVF9PVEhFUl9NRU1CRVJfUkVMKQotCQl7Ci0JCQlSZWxP cHRJbmZvICpwcmVsID0gcGF0aHJlbDsKLQkJCUJpdG1hcHNldCAgKnBhcnRyZWxpZHMgPSBOVUxM OwotCi0JCQkvKgotCQkJICogVHJhdmVyc2UgdXAgdG8gdGhlIHBhdGhyZWwncyB0b3Btb3N0IHBh cnRpdGlvbmVkIHBhcmVudCwKLQkJCSAqIGNvbGxlY3RpbmcgcGFyZW50IHJlbGlkcyBhcyB3ZSBn bzsgYnV0IHN0b3AgaWYgd2UgcmVhY2gKLQkJCSAqIHBhcmVudHJlbC4gIChOb3JtYWxseSwgYSBw YXRocmVsJ3MgdG9wbW9zdCBwYXJ0aXRpb25lZCBwYXJlbnQKLQkJCSAqIGlzIGVpdGhlciBwYXJl bnRyZWwgb3IgYSBVTklPTiBBTEwgYXBwZW5kcmVsIGNoaWxkIG9mCi0JCQkgKiBwYXJlbnRyZWwu ICBCdXQgd2hlbiBoYW5kbGluZyBwYXJ0aXRpb253aXNlIGpvaW5zIG9mCi0JCQkgKiBtdWx0aS1s ZXZlbCBwYXJ0aXRpb25pbmcgdHJlZXMsIHdlIGNhbiBzZWUgYW4gYXBwZW5kIHBhdGggd2hvc2UK LQkJCSAqIHBhcmVudHJlbCBpcyBhbiBpbnRlcm1lZGlhdGUgcGFydGl0aW9uZWQgdGFibGUuKQot CQkJICovCi0JCQlkbwotCQkJewotCQkJCUFwcGVuZFJlbEluZm8gKmFwcGluZm87Ci0KLQkJCQlB c3NlcnQocHJlbC0+cmVsaWQgPCByb290LT5zaW1wbGVfcmVsX2FycmF5X3NpemUpOwotCQkJCWFw cGluZm8gPSByb290LT5hcHBlbmRfcmVsX2FycmF5W3ByZWwtPnJlbGlkXTsKLQkJCQlwcmVsID0g ZmluZF9iYXNlX3JlbChyb290LCBhcHBpbmZvLT5wYXJlbnRfcmVsaWQpOwotCQkJCWlmICghSVNf UEFSVElUSU9ORURfUkVMKHByZWwpKQotCQkJCQlicmVhazsJCS8qIHJlYWNoZWQgYSBub24tcGFy dGl0aW9uZWQgcGFyZW50ICovCi0JCQkJLyogYWNjZXB0IHRoaXMgbGV2ZWwgYXMgYW4gaW50ZXJl c3RpbmcgcGFyZW50ICovCi0JCQkJcGFydHJlbGlkcyA9IGJtc19hZGRfbWVtYmVyKHBhcnRyZWxp ZHMsIHByZWwtPnJlbGlkKTsKLQkJCQlpZiAocHJlbCA9PSBwYXJlbnRyZWwpCi0JCQkJCWJyZWFr OwkJLyogZG9uJ3QgdHJhdmVyc2UgYWJvdmUgcGFyZW50cmVsICovCi0JCQl9IHdoaWxlIChwcmVs LT5yZWxvcHRraW5kID09IFJFTE9QVF9PVEhFUl9NRU1CRVJfUkVMKTsKLQotCQkJaWYgKHBhcnRy ZWxpZHMpCi0JCQl7Ci0JCQkJLyoKLQkJCQkgKiBGb3VuZCBzb21lIHJlbGV2YW50IHBhcmVudCBw YXJ0aXRpb25zLCB3aGljaCBtYXkgb3IgbWF5IG5vdAotCQkJCSAqIG92ZXJsYXAgd2l0aCBwYXJ0 aXRpb24gdHJlZXMgd2UgYWxyZWFkeSBmb3VuZC4gIEFkZCBuZXcKLQkJCQkgKiBpbmZvcm1hdGlv biB0byB0aGUgYWxscGFydHJlbGlkcyBsaXN0LgotCQkJCSAqLwotCQkJCWFsbHBhcnRyZWxpZHMg PSBhZGRfcGFydF9yZWxpZHMoYWxscGFydHJlbGlkcywgcGFydHJlbGlkcyk7Ci0JCQkJLyogQWxz byByZWNvcmQgdGhlIHN1YnBsYW4gaW4gcmVsaWRfc3VicGxhbl9tYXBbXSAqLwotCQkJCS8qIE5v IGR1cGxpY2F0ZXMgcGxlYXNlICovCi0JCQkJQXNzZXJ0KHJlbGlkX3N1YnBsYW5fbWFwW3BhdGhy ZWwtPnJlbGlkXSA9PSAwKTsKLQkJCQlyZWxpZF9zdWJwbGFuX21hcFtwYXRocmVsLT5yZWxpZF0g PSBpOwotCQkJfQotCQl9CisJCS8qIE5vIGR1cGxpY2F0ZXMgcGxlYXNlICovCisJCUFzc2VydChy ZWxpZF9zdWJwbGFuX21hcFtwYXRocmVsLT5yZWxpZF0gPT0gMCk7CisJCXJlbGlkX3N1YnBsYW5f bWFwW3BhdGhyZWwtPnJlbGlkXSA9IGk7CiAJCWkrKzsKIAl9CiAKQEAgLTM2OCw2MyArMzI1LDYg QEAgbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZv ICpwYXJlbnRyZWwsCiAJcmV0dXJuIGxpc3RfbGVuZ3RoKHJvb3QtPnBhcnRQcnVuZUluZm9zKSAt IDE7CiB9CiAKLS8qCi0gKiBhZGRfcGFydF9yZWxpZHMKLSAqCQlBZGQgbmV3IGluZm8gdG8gYSBs aXN0IG9mIEJpdG1hcHNldHMgb2YgcGFydGl0aW9uZWQgcmVsaWRzLgotICoKLSAqIFdpdGhpbiAn YWxscGFydHJlbGlkcycsIHRoZXJlIGlzIG9uZSBCaXRtYXBzZXQgZm9yIGVhY2ggdG9wbW9zdCBw YXJlbnQKLSAqIHBhcnRpdGlvbmVkIHJlbC4gIEVhY2ggQml0bWFwc2V0IGNvbnRhaW5zIHRoZSBS VCBpbmRleGVzIG9mIHRoZSB0b3Btb3N0Ci0gKiBwYXJlbnQgYXMgd2VsbCBhcyBpdHMgcmVsZXZh bnQgbm9uLWxlYWYgY2hpbGQgcGFydGl0aW9ucy4gIFNpbmNlIChieQotICogY29uc3RydWN0aW9u IG9mIHRoZSByYW5nZXRhYmxlIGxpc3QpIHBhcmVudCBwYXJ0aXRpb25zIG11c3QgaGF2ZSBsb3dl cgotICogUlQgaW5kZXhlcyB0aGFuIHRoZWlyIGNoaWxkcmVuLCB3ZSBjYW4gZGlzdGluZ3Vpc2gg dGhlIHRvcG1vc3QgcGFyZW50Ci0gKiBhcyBiZWluZyB0aGUgbG93ZXN0IHNldCBiaXQgaW4gdGhl IEJpdG1hcHNldC4KLSAqCi0gKiAncGFydHJlbGlkcycgY29udGFpbnMgdGhlIFJUIGluZGV4ZXMg b2YgYSBwYXJlbnQgcGFydGl0aW9uZWQgcmVsLCBhbmQKLSAqIHBvc3NpYmx5IHNvbWUgbm9uLWxl YWYgY2hpbGRyZW4sIHRoYXQgYXJlIG5ld2x5IGlkZW50aWZpZWQgYXMgcGFyZW50cyBvZgotICog c29tZSBzdWJwYXRoIHJlbCBwYXNzZWQgdG8gbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKCkuICBU aGVzZSBhcmUgYWRkZWQKLSAqIHRvIGFuIGFwcHJvcHJpYXRlIG1lbWJlciBvZiAnYWxscGFydHJl bGlkcycuCi0gKgotICogTm90ZSB0aGF0IHRoZSBsaXN0IGNvbnRhaW5zIG9ubHkgUlQgaW5kZXhl cyBvZiBwYXJ0aXRpb25lZCB0YWJsZXMgdGhhdAotICogYXJlIHBhcmVudHMgb2Ygc29tZSBzY2Fu LWxldmVsIHJlbGF0aW9uIGFwcGVhcmluZyBpbiB0aGUgJ3N1YnBhdGhzJyB0aGF0Ci0gKiBtYWtl X3BhcnRpdGlvbl9wcnVuZWluZm8oKSBpcyBkZWFsaW5nIHdpdGguICBBbHNvLCAidG9wbW9zdCIg cGFyZW50cyBhcmUKLSAqIG5vdCBhbGxvd2VkIHRvIGJlIGhpZ2hlciB0aGFuIHRoZSAncGFyZW50 cmVsJyBhc3NvY2lhdGVkIHdpdGggdGhlIGFwcGVuZAotICogcGF0aC4gIEluIHRoaXMgd2F5LCB3 ZSBhdm9pZCBleHBlbmRpbmcgY3ljbGVzIG9uIHBhcnRpdGlvbmVkIHJlbHMgdGhhdAotICogY2Fu J3QgY29udHJpYnV0ZSB1c2VmdWwgcHJ1bmluZyBpbmZvcm1hdGlvbiBmb3IgdGhlIHByb2JsZW0g YXQgaGFuZC4KLSAqIChJdCBpcyBwb3NzaWJsZSBmb3IgJ3BhcmVudHJlbCcgdG8gYmUgYSBjaGls ZCBwYXJ0aXRpb25lZCB0YWJsZSwgYW5kIGl0Ci0gKiBpcyBhbHNvIHBvc3NpYmxlIGZvciBzY2Fu LWxldmVsIHJlbGF0aW9ucyB0byBiZSBjaGlsZCBwYXJ0aXRpb25lZCB0YWJsZXMKLSAqIHJhdGhl ciB0aGFuIGxlYWYgcGFydGl0aW9ucy4gIEhlbmNlIHdlIG11c3QgY29uc3RydWN0IHRoaXMgcmVs YXRpb24gc2V0Ci0gKiB3aXRoIHJlZmVyZW5jZSB0byB0aGUgcGFydGljdWxhciBhcHBlbmQgcGF0 aCB3ZSdyZSBkZWFsaW5nIHdpdGgsIHJhdGhlcgotICogdGhhbiBsb29raW5nIGF0IHRoZSBmdWxs IHBhcnRpdGlvbmluZyBzdHJ1Y3R1cmUgcmVwcmVzZW50ZWQgaW4gdGhlCi0gKiBSZWxPcHRJbmZv cy4pCi0gKi8KLXN0YXRpYyBMaXN0ICoKLWFkZF9wYXJ0X3JlbGlkcyhMaXN0ICphbGxwYXJ0cmVs aWRzLCBCaXRtYXBzZXQgKnBhcnRyZWxpZHMpCi17Ci0JSW5kZXgJCXRhcmdldHBhcnQ7Ci0JTGlz dENlbGwgICAqbGM7Ci0KLQkvKiBXZSBjYW4gZWFzaWx5IGdldCB0aGUgbG93ZXN0IHNldCBiaXQg dGhpcyB3YXk6ICovCi0JdGFyZ2V0cGFydCA9IGJtc19uZXh0X21lbWJlcihwYXJ0cmVsaWRzLCAt MSk7Ci0JQXNzZXJ0KHRhcmdldHBhcnQgPiAwKTsKLQotCS8qIExvb2sgZm9yIGEgbWF0Y2hpbmcg dG9wbW9zdCBwYXJlbnQgKi8KLQlmb3JlYWNoKGxjLCBhbGxwYXJ0cmVsaWRzKQotCXsKLQkJQml0 bWFwc2V0ICAqY3VycnBhcnRyZWxpZHMgPSAoQml0bWFwc2V0ICopIGxmaXJzdChsYyk7Ci0JCUlu ZGV4CQljdXJydGFyZ2V0ID0gYm1zX25leHRfbWVtYmVyKGN1cnJwYXJ0cmVsaWRzLCAtMSk7Ci0K LQkJaWYgKHRhcmdldHBhcnQgPT0gY3VycnRhcmdldCkKLQkJewotCQkJLyogRm91bmQgYSBtYXRj aCwgc28gYWRkIGFueSBuZXcgUlQgaW5kZXhlcyB0byB0aGlzIGhpZXJhcmNoeSAqLwotCQkJY3Vy cnBhcnRyZWxpZHMgPSBibXNfYWRkX21lbWJlcnMoY3VycnBhcnRyZWxpZHMsIHBhcnRyZWxpZHMp OwotCQkJbGZpcnN0KGxjKSA9IGN1cnJwYXJ0cmVsaWRzOwotCQkJcmV0dXJuIGFsbHBhcnRyZWxp ZHM7Ci0JCX0KLQl9Ci0JLyogTm8gbWF0Y2gsIHNvIGFkZCB0aGUgbmV3IHBhcnRpdGlvbiBoaWVy YXJjaHkgdG8gdGhlIGxpc3QgKi8KLQlyZXR1cm4gbGFwcGVuZChhbGxwYXJ0cmVsaWRzLCBwYXJ0 cmVsaWRzKTsKLX0KLQogLyoKICAqIG1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvCiAgKgkJ QnVpbGQgYSBMaXN0IG9mIFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvcywgb25lIGZvciBlYWNoIGlu dGVyZXN0aW5nCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCBiL3Ny Yy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCmluZGV4IDY1OWJkMDVjMGMuLmEwYmIxNmNmZjQg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNs dWRlL25vZGVzL3BsYW5ub2Rlcy5oCkBAIC0yNzAsNiArMjcwLDEzIEBAIHR5cGVkZWYgc3RydWN0 IEFwcGVuZAogCUxpc3QJICAgKmFwcGVuZHBsYW5zOwogCWludAkJCW5hc3luY3BsYW5zOwkvKiAj IG9mIGFzeW5jaHJvbm91cyBwbGFucyAqLwogCisJLyoKKwkgKiBSVElzIG9mIGFsbCBwYXJ0aXRp b25lZCB0YWJsZXMgd2hvc2UgY2hpbGRyZW4gYXJlIHNjYW5uZWQgYnkKKwkgKiBhcHBlbmRwbGFu cy4gVGhlIGxpc3QgY29udGFpbnMgYSBiaXRtYXBzZXQgZm9yIGV2ZXJ5IHBhcnRpdGlvbiB0cmVl CisJICogY292ZXJlZCBieSB0aGlzIEFwcGVuZC4KKwkgKi8KKwlMaXN0CSAgICphbGxwYXJ0cmVs aWRzOworCiAJLyoKIAkgKiBBbGwgJ2FwcGVuZHBsYW5zJyBwcmVjZWRpbmcgdGhpcyBpbmRleCBh cmUgbm9uLXBhcnRpYWwgcGxhbnMuIEFsbAogCSAqICdhcHBlbmRwbGFucycgZnJvbSB0aGlzIGlu ZGV4IG9ud2FyZHMgYXJlIHBhcnRpYWwgcGxhbnMuCkBAIC0yOTQsNiArMzAxLDEzIEBAIHR5cGVk ZWYgc3RydWN0IE1lcmdlQXBwZW5kCiAKIAlMaXN0CSAgICptZXJnZXBsYW5zOwogCisJLyoKKwkg KiBSVElzIG9mIGFsbCBwYXJ0aXRpb25lZCB0YWJsZXMgd2hvc2UgY2hpbGRyZW4gYXJlIHNjYW5u ZWQgYnkKKwkgKiBtZXJnZXBsYW5zLiBUaGUgbGlzdCBjb250YWlucyBhIGJpdG1hcHNldCBmb3Ig ZXZlcnkgcGFydGl0aW9uIHRyZWUKKwkgKiBjb3ZlcmVkIGJ5IHRoaXMgTWVyZ2VBcHBlbmQuCisJ ICovCisJTGlzdAkgICAqYWxscGFydHJlbGlkczsKKwogCS8qIHRoZXNlIGZpZWxkcyBhcmUganVz dCBsaWtlIHRoZSBzb3J0LWtleSBpbmZvIGluIHN0cnVjdCBTb3J0OiAqLwogCiAJLyogbnVtYmVy IG9mIHNvcnQta2V5IGNvbHVtbnMgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL29wdGltaXpl ci9hcHBlbmRpbmZvLmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvYXBwZW5kaW5mby5oCmluZGV4 IGEwNWY5MWY3N2QuLjE2MjFhNzMxOWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL29wdGltaXpl ci9hcHBlbmRpbmZvLmgKKysrIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL2FwcGVuZGluZm8uaApA QCAtNDYsNSArNDYsOCBAQCBleHRlcm4gdm9pZCBhZGRfcm93X2lkZW50aXR5X2NvbHVtbnMoUGxh bm5lckluZm8gKnJvb3QsIEluZGV4IHJ0aW5kZXgsCiAJCQkJCQkJCQkgUmFuZ2VUYmxFbnRyeSAq dGFyZ2V0X3J0ZSwKIAkJCQkJCQkJCSBSZWxhdGlvbiB0YXJnZXRfcmVsYXRpb24pOwogZXh0ZXJu IHZvaWQgZGlzdHJpYnV0ZV9yb3dfaWRlbnRpdHlfdmFycyhQbGFubmVySW5mbyAqcm9vdCk7Citl eHRlcm4gTGlzdCAqYWRkX2FwcGVuZF9zdWJwYXRoX3BhcnRyZWxpZHMoUGxhbm5lckluZm8gKnJv b3QsIFBhdGggKnN1YnBhdGgsCisJCQkJCQkJICBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCisJCQkJ CQkJICBMaXN0ICphbGxwYXJ0cmVsaWRzKTsKIAogI2VuZGlmCQkJCQkJCS8qIEFQUEVORElORk9f SCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oIGIv c3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oCmluZGV4IGMwZDY4ODlkNDcuLjJk OTA3ZDMxZDQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUu aAorKysgYi9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmgKQEAgLTczLDcgKzcz LDggQEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uUHJ1bmVDb250ZXh0CiBleHRlcm4gaW50IG1h a2VfcGFydGl0aW9uX3BydW5laW5mbyhzdHJ1Y3QgUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJ CQlzdHJ1Y3QgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQkJCQkJCQkJTGlzdCAqc3VicGF0aHMs Ci0JCQkJCQkJCQlMaXN0ICpwcnVuZXF1YWwpOworCQkJCQkJCQkJTGlzdCAqcHJ1bmVxdWFsLAor CQkJCQkJCQkJTGlzdCAqYWxscGFydHJlbGlkcyk7CiBleHRlcm4gQml0bWFwc2V0ICpwcnVuZV9h cHBlbmRfcmVsX3BhcnRpdGlvbnMoc3RydWN0IFJlbE9wdEluZm8gKnJlbCk7CiBleHRlcm4gQml0 bWFwc2V0ICpnZXRfbWF0Y2hpbmdfcGFydGl0aW9ucyhQYXJ0aXRpb25QcnVuZUNvbnRleHQgKmNv bnRleHQsCiAJCQkJCQkJCQkJICBMaXN0ICpwcnVuaW5nX3N0ZXBzKTsKLS0gCjIuMzUuMwoK --000000000000df08af05f6d96603--