Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vNoSO-00FaUs-2l for pgsql-hackers@arkaria.postgresql.org; Tue, 25 Nov 2025 08:31:29 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vNoSN-007HTj-1F for pgsql-hackers@arkaria.postgresql.org; Tue, 25 Nov 2025 08:31:27 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vNoSM-007HTa-2z for pgsql-hackers@lists.postgresql.org; Tue, 25 Nov 2025 08:31:27 +0000 Received: from mail-pg1-x52e.google.com ([2607:f8b0:4864:20::52e]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vNoSK-001O7z-16 for pgsql-hackers@postgresql.org; Tue, 25 Nov 2025 08:31:26 +0000 Received: by mail-pg1-x52e.google.com with SMTP id 41be03b00d2f7-bcfd82f55ebso2742125a12.1 for ; Tue, 25 Nov 2025 00:31:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1764059482; x=1764664282; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=AmA4eQKpzc/riKt89O24QRVVTknVEXjjYShBQpBQElo=; b=k4irMJ9DPD6WAfqCIHXBsDSgKeVg9P/SG6upgAtbaCj7/QA4DRD6HvuUhhqAgxA0GV jD06Ew0OwJvWdfvaaZ508iijATf9IuXJ8VjU1nHdYGUYBYG2poyctvyyxLzlOV5pprxm dQLk8VSsw146C87XbhJKDlrGJdshLkY4Dl+LVxcrQ9DrInS0yJ7jwLWLrP86/FlK/jbb 6vXaeJGBkxWMozsxbm2hQ/HzG3+lpOEfk4B4TYJ5geEYwTLeh/j43S2nxibHC/xn5BIY uTK0wqimYrN1+QbxrrYeUIVkBXc5lokRUsle1jtFAPdPwM651rWFCwc2raYWRRzLsLvj JKNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764059482; x=1764664282; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=AmA4eQKpzc/riKt89O24QRVVTknVEXjjYShBQpBQElo=; b=Ybq0VEVrDDFoZcSkm2NnapvPOpE9iFCxi9WlUzoeKeL/QRU0SKMx5PK6usvZyoe8VE yw9XbSdr9YOqBa7C54sHA8tycuI5jPR8u6/NWmoanKQVQx1sp4r2bUTuduZqg4JwpHjt jag1oHdkbKkMRMcaoFU2GFeULUD1ufMpTmSg1YoMuam3TFoeu23J+daOafJjMN7fLnco NaFqPTZVeJApyv/kybBYiiKExYg/fGd1kWwHEYFl1eJUifNoYHp2p5o+zuYc1QZfLTQx Y1LZi0vBDD3aqnf14gZ7XqExSFSOXLrHQ3jmoGVubGY3Y+eITpdkrAU69/e1ZRlmDuzz m/tw== X-Forwarded-Encrypted: i=1; AJvYcCUlum1qxfI5nnb8pu4KN/wr5P84idO5I5319zqUd3Hys83FQF3Ruu6sXx1c836blbphB/YVItwrs2mIvI2/@postgresql.org X-Gm-Message-State: AOJu0YyTozIIG6VCkWZsP6D85qI6PME/ZSgYmsDHS91mInaVNBVKNFIT PLAaA+wpzQj+yW0o8KALx1+ciKZ0eUzoOIcDdUYBABsQQftHS3lvZAok9CcoTcq/pEbI9m+5XQ4 LQOdqXcMtSHKkqnUBXwG0giqkQWyTrU0= X-Gm-Gg: ASbGncvKCy1lHmRraNSYNF0uln2Wf1zL1KVDZN4w6myHZmyvjN+/VYVg8EbhNf34Yaz DYEcpIL47foNRyv2MbYGR5uaJUEBgJ0BOeoiIIuZPY0B+TXEHReUALc/j1de/K5sSlWxirMH66F NVasnR+uOMT02EAqVIORR1YdGsc6OdOd0MTgOFYRcGlYK5JURjmCzv/D2LnIKniAsxkIRa5kFhq 8+CCkekI8FipE7sHNYvttJsxXPKFXvLoV7Q6tl8RK/xTxZwnRhdAFCkSk4i4+WpHpH5TaCI X-Google-Smtp-Source: AGHT+IFxZCHI8azALTw8K47Pwaq71CTFp4mrU8wi2ovHQJYTSCzpzsc+Ja7NJi1qvurvH5xO7gbvnmDXV0edwNynxqs= X-Received: by 2002:a17:90b:4f8a:b0:343:78ed:8d19 with SMTP id 98e67ed59e1d1-3472985089cmr20199284a91.7.1764059481909; Tue, 25 Nov 2025 00:31:21 -0800 (PST) MIME-Version: 1.0 References: <54c35fb9-da3a-4754-ab8c-46ed0b612465@vondra.me> <684c70d7-180e-461d-9377-600c2db581ba@vondra.me> <605328.1747710381@sss.pgh.pa.us> <691261.1747755511@sss.pgh.pa.us> In-Reply-To: From: Amit Langote Date: Tue, 25 Nov 2025 17:31:04 +0900 X-Gm-Features: AWmQ_bmL5oQvBcF-G5BA6pFZ9i07aNMUULgS-LeRiM-XrRoF3XaLcLIAStSWRNM Message-ID: Subject: Re: generic plans and "initial" pruning To: Chao Li Cc: Tom Lane , Tender Wang , Alexander Lakhin , Tomas Vondra , Robert Haas , Alvaro Herrera , Andres Freund , Daniel Gustafsson , David Rowley , PostgreSQL Hackers , Thom Brown Content-Type: multipart/mixed; boundary="000000000000c845e80644671a60" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000c845e80644671a60 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Evan, On Mon, Nov 24, 2025 at 12:30=E2=80=AFPM Chao Li w= rote: > > Hi, Amit, > > Locking only surviving partitions sounds a good optimization. I started t= o review this patch, but I cannot finish reviewing in one day. I will post = my comments as long as I finished some commits. Thank you very much for taking the time to review. > > On Nov 20, 2025, at 15:30, Amit Langote wrote= : > > > > > > > 0001 splits creations of es_part_prune_states into a new function ExecCre= atePartitionPruneStates(). With that, you are trying to make the code clear= er as you stated in the commit comment. However, the new function is not ca= lled, meaning 0001 is not self-contained, feels unusual to me according to = the patches I have reviewed so far. Oops, that is not intentional. > I would suggest have ExecDoInitialPruning() call ExecCreatePartitionPrune= States() when es_part_prune_states is still NIL., so that current logic is = unchanged, and 0001 can be pushed independently. 0002 adds a call to ExecDoInitialPruning() in ExecutorPrep(), preceded by a call to ExecCreatePartitionPruneStates(), and that is how I think it should be. So in the attached updated 0001, I have made InitPlan() call ExecCreatePartitionPruneStates() before calling ExecDoInitialPruning(). > 0002 moves check permission etc logic from InitPlan() to the new function= ExecutorPrep(). The commit message says =E2=80=9Cexecutor setup logic unch= anged=E2=80=9D. Because in old code, before permission check, there was no = PushActiveSnapshot(), but in the patch, before check permission, PushActive= Snapshot() is done, which may introduce different behavior, I just wonder w= hy PushActiveSnapshot() is added? That is a valid concern. I found it necessary because the initial pruning code (which runs in ExecDoInitialPruning()) may require ActiveSnapshot to be valid if pruning expressions end up calling code that invokes EnsurePortalSnapshotExists(). That requirement already existed when ExecDoInitialPruning() was driven from ExecutorStart(), but ExecutorPrep() can now be called from places that do not otherwise push a snapshot. The snapshot push is only there to cover those callers. It does not change permission checking itself, it just ensures ExecutorPrep() runs with the same preconditions that ExecutorStart() always had. > Actually, I am still trying to understand 0002-0004, it would take me som= e time to fully understand the patch. I=E2=80=99d raise the above comments = first. I will continue reviewing this patch tomorrow. Thanks, I appreciate your review. --=20 Thanks, Amit Langote --000000000000c845e80644671a60 Content-Type: application/octet-stream; name="v4-0002-Introduce-ExecutorPrep-and-refactor-executor-star.patch" Content-Disposition: attachment; filename="v4-0002-Introduce-ExecutorPrep-and-refactor-executor-star.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_miebf87x4 RnJvbSBhMDA0YWFiMWNlOTQxOGEyZjYyNzNkMWE2NzY3M2IzZDRhN2MyMThiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgMTEgTm92IDIwMjUgMjE6NDc6NDYgKzA5MDAKU3ViamVjdDogW1BBVENIIHY0 IDIvNl0gSW50cm9kdWNlIEV4ZWN1dG9yUHJlcCBhbmQgcmVmYWN0b3IgZXhlY3V0b3Igc3RhcnR1 cAoKRmFjdG9yIHBlcm1pc3Npb24gY2hlY2tzLCByYW5nZSB0YWJsZSBpbml0aWFsaXphdGlvbiwg YW5kIGluaXRpYWwKcGFydGl0aW9uIHBydW5pbmcgb3V0IG9mIEluaXRQbGFuKCkgaW50byBhIG5l dyBFeGVjdXRvclByZXAoKQpoZWxwZXIuICBFeGVjdXRvclByZXAgYnVpbGRzIGFuIEVTdGF0ZSBj b250YWluaW5nIHRoZSBleGVjdXRvcgptZXRhZGF0YSBuZWVkZWQgYmVmb3JlIHBsYW4gZXhlY3V0 aW9uLCBpbmNsdWRpbmcgcGFydGl0aW9uCnBydW5pbmcgc3RhdGUgd2hlcmUgcGFydFBydW5lSW5m b3MgYXJlIHByZXNlbnQuCgpFeGVjdXRvclN0YXJ0KCkgbm93IGV4cGVjdHMgUXVlcnlEZXNjLT5w cmVwIHRvIHBvaW50IGF0IHN1Y2ggYW4KRXhlY1ByZXAgb2JqZWN0LiAgSWYgbm8gcHJlcCB3YXMg c3VwcGxpZWQgYnkgdGhlIGNhbGxlciwgaXQKaW52b2tlcyBFeGVjdXRvclByZXAoKSBpdHNlbGYg YW5kIGFkb3B0cyB0aGUgcmVzdWx0aW5nIEVTdGF0ZQpmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSBx dWVyeS4gIFRoaXMga2VlcHMgdGhlIGV4ZWN1dG9yIHN0YXJ0dXAKYmVoYXZpb3VyIHVuY2hhbmdl ZCB3aGlsZSBtYWtpbmcgdGhlIHNldHVwIHdvcmsgY2FsbGFibGUKc2VwYXJhdGVseSB3aGVuIG5l ZWRlZC4KCkNyZWF0ZVF1ZXJ5RGVzYygpIGdyb3dzIGEgcHJlcCBhcmd1bWVudCBhbmQgc3RvcmVz IGl0IGluIHRoZQpRdWVyeURlc2MuICBQb3J0YWxzLCBTUEksIFNRTCBmdW5jdGlvbnMsIGFuZCBF WFBMQUlOIGFyZSB3aXJlZAp0byBjYXJyeSBhbiBvcHRpb25hbCBFeGVjUHJlcCBwb2ludGVyIGFs b25nc2lkZSB0aGUgUGxhbm5lZFN0bXQKbGlzdCwgYnV0IG1vc3QgY2FsbGVycyBzdGlsbCBwYXNz IE5VTEwgYW5kIGxldCBFeGVjdXRvclN0YXJ0KCkKcGVyZm9ybSB0aGUgc2V0dXAgbGF6aWx5LgoK QWRkIHRoZSBFeGVjUHJlcCBzdHJ1Y3QgYW5kIEV4ZWNQcmVwQ2xlYW51cCgpIHRvIGVuY2Fwc3Vs YXRlCm93bmVyc2hpcCBvZiB0aGUgcHJlcGFyZWQgRVN0YXRlIGFuZCBhbnkgY2FsbGVyIHNwZWNp ZmljCmNsZWFudXAgaG9vay4gIFVwZGF0ZSBleGVjdXRvci9SRUFETUUgYW5kIHJlbGF0ZWQgY29t bWVudHMgdG8KZG9jdW1lbnQgdGhlIG5ldyBjb250cm9sIGZsb3cgYW5kIHRoZSBzZXBhcmF0aW9u IGJldHdlZW4KcHJlcGFyYXRpb24gYW5kIGV4ZWN1dGlvbi4KLS0tCiBzcmMvYmFja2VuZC9jb21t YW5kcy9jb3B5dG8uYyAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0 ZWFzLmMgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jICAgICAg IHwgICA3ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYyAgICAgfCAgIDEgKwog c3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jICAgICAgIHwgICAyICstCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy9wb3J0YWxjbWRzLmMgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMv cHJlcGFyZS5jICAgICAgIHwgIDExICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUgICAg ICAgICAgfCAgIDggKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICB8IDE4 MCArKysrKysrKysrKysrKysrKysrKysrLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQ YXJhbGxlbC5jICB8ICAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMg fCAgIDMgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgICAgIHwgICAxICsKIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jICAgICAgICAgICB8ICAxMCArKwogc3JjL2JhY2tlbmQv dGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5 LmMgICAgICAgICAgICB8ICAyNyArKystCiBzcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1l bS5jICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oICAgICAgIHwgICAz ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oICAgICAgfCAgIDMgKy0KIHNyYy9p bmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggICAgICB8ICAxMSArKwogc3JjL2luY2x1ZGUvbm9k ZXMvZXhlY25vZGVzLmggICAgICAgIHwgIDQ4ICsrKysrKysKIHNyYy9pbmNsdWRlL3V0aWxzL3Bv cnRhbC5oICAgICAgICAgICB8ICAgMiArCiAyMSBmaWxlcyBjaGFuZ2VkLCAyODYgaW5zZXJ0aW9u cygrKSwgNDEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv Y29weXRvLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwppbmRleCBjZWY0NTI1ODRl NS4uNWVmYmIwOTQ5YzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCkBAIC04NzAsNyArODcwLDcgQEAg QmVnaW5Db3B5VG8oUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkoKERSX2NvcHkgKikgZGVzdCktPmNz dGF0ZSA9IGNzdGF0ZTsKIAogCQkvKiBDcmVhdGUgYSBRdWVyeURlc2MgcmVxdWVzdGluZyBubyBv dXRwdXQgKi8KLQkJY3N0YXRlLT5xdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgcHN0 YXRlLT5wX3NvdXJjZXRleHQsCisJCWNzdGF0ZS0+cXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNj KHBsYW4sIE5VTEwsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAogCQkJCQkJCQkJCQlHZXRBY3RpdmVT bmFwc2hvdCgpLAogCQkJCQkJCQkJCQlJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJCQkJCWRlc3Qs IE5VTEwsIE5VTEwsIDApOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRl YXMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKaW5kZXggMWNjYzJlNTVjNjQu LjllYWJlNDkyMGNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKQEAgLTMzNCw3ICszMzQsNyBA QCBFeGVjQ3JlYXRlVGFibGVBcyhQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVRhYmxlQXNTdG10 ICpzdG10LAogCQlVcGRhdGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJZCgpOwogCiAJCS8qIENyZWF0 ZSBhIFF1ZXJ5RGVzYywgcmVkaXJlY3Rpbmcgb3V0cHV0IHRvIG91ciB0dXBsZSByZWNlaXZlciAq LwotCQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgcHN0YXRlLT5wX3NvdXJjZXRl eHQsCisJCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBOVUxMLCBwc3RhdGUtPnBf c291cmNldGV4dCwKIAkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hv dCwKIAkJCQkJCQkJCWRlc3QsIHBhcmFtcywgcXVlcnlFbnYsIDApOwogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBs YWluLmMKaW5kZXggN2U2OTlmODU5NWUuLmQ2YWIzNjk3ZGQ5IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFp bi5jCkBAIC0zNzAsNyArMzcwLDcgQEAgc3RhbmRhcmRfRXhwbGFpbk9uZVF1ZXJ5KFF1ZXJ5ICpx dWVyeSwgaW50IGN1cnNvck9wdGlvbnMsCiAJfQogCiAJLyogcnVuIGl0IChpZiBuZWVkZWQpIGFu ZCBwcm9kdWNlIG91dHB1dCAqLwotCUV4cGxhaW5PbmVQbGFuKHBsYW4sIGludG8sIGVzLCBxdWVy eVN0cmluZywgcGFyYW1zLCBxdWVyeUVudiwKKwlFeHBsYWluT25lUGxhbihwbGFuLCBOVUxMLCBp bnRvLCBlcywgcXVlcnlTdHJpbmcsIHBhcmFtcywgcXVlcnlFbnYsCiAJCQkJICAgJnBsYW5kdXJh dGlvbiwgKGVzLT5idWZmZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCksCiAJCQkJICAgZXMtPm1lbW9y eSA/ICZtZW1fY291bnRlcnMgOiBOVUxMKTsKIH0KQEAgLTQ5Miw3ICs0OTIsOCBAQCBFeHBsYWlu T25lVXRpbGl0eShOb2RlICp1dGlsaXR5U3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0 YXRlICplcywKICAqIHRvIGNhbGwgaXQuCiAgKi8KIHZvaWQKLUV4cGxhaW5PbmVQbGFuKFBsYW5u ZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywK K0V4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgRXhlY1ByZXAgKnByZXAs CisJCQkgICBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCQkJICAgY29uc3Qg Y2hhciAqcXVlcnlTdHJpbmcsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJICAgUXVlcnlFbnZp cm9ubWVudCAqcXVlcnlFbnYsIGNvbnN0IGluc3RyX3RpbWUgKnBsYW5kdXJhdGlvbiwKIAkJCSAg IGNvbnN0IEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwKQEAgLTU0OCw3ICs1NDksNyBAQCBFeHBsYWlu T25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxh aW5TdGF0ZSAqZXMsCiAJCWRlc3QgPSBOb25lX1JlY2VpdmVyOwogCiAJLyogQ3JlYXRlIGEgUXVl cnlEZXNjIGZvciB0aGUgcXVlcnkgKi8KLQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxh bm5lZHN0bXQsIHF1ZXJ5U3RyaW5nLAorCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFu bmVkc3RtdCwgcHJlcCwgcXVlcnlTdHJpbmcsCiAJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCks IEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgaW5zdHJ1 bWVudF9vcHRpb24pOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNp b24uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCmluZGV4IGViYzIwNGM0NDYy Li45NDI5ZmMyZDE3ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9u LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMKQEAgLTk5Myw2ICs5OTMs NyBAQCBleGVjdXRlX3NxbF9zdHJpbmcoY29uc3QgY2hhciAqc3FsLCBjb25zdCBjaGFyICpmaWxl bmFtZSkKIAkJCQlRdWVyeURlc2MgICpxZGVzYzsKIAogCQkJCXFkZXNjID0gQ3JlYXRlUXVlcnlE ZXNjKHN0bXQsCisJCQkJCQkJCQkJTlVMTCwKIAkJCQkJCQkJCQlzcWwsCiAJCQkJCQkJCQkJR2V0 QWN0aXZlU25hcHNob3QoKSwgTlVMTCwKIAkJCQkJCQkJCQlkZXN0LCBOVUxMLCBOVUxMLCAwKTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL21hdHZpZXcuYwppbmRleCBlZjdjMGQ2MjRmMS4uMzBjYmY5ZjI2NGYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9tYXR2aWV3LmMKQEAgLTQzNyw3ICs0MzcsNyBAQCByZWZyZXNoX21hdHZpZXdfZGF0 YWZpbGwoRGVzdFJlY2VpdmVyICpkZXN0LCBRdWVyeSAqcXVlcnksCiAJVXBkYXRlQWN0aXZlU25h cHNob3RDb21tYW5kSWQoKTsKIAogCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYywgcmVkaXJlY3Rpbmcg b3V0cHV0IHRvIG91ciB0dXBsZSByZWNlaXZlciAqLwotCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5 RGVzYyhwbGFuLCBxdWVyeVN0cmluZywKKwlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxh biwgTlVMTCwgcXVlcnlTdHJpbmcsCiAJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFs aWRTbmFwc2hvdCwKIAkJCQkJCQkJZGVzdCwgTlVMTCwgTlVMTCwgMCk7CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3BvcnRhbGNtZHMuYwppbmRleCBlYzk2YzJlZmNkMy4uYWMxZGRkMjVhYmEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9wb3J0YWxjbWRzLmMKQEAgLTExOCw2ICsxMTgsNyBAQCBQZXJmb3JtQ3Vyc29yT3BlbihQ YXJzZVN0YXRlICpwc3RhdGUsIERlY2xhcmVDdXJzb3JTdG10ICpjc3RtdCwgUGFyYW1MaXN0SW5m byBwYQogCQkJCQkgIHF1ZXJ5U3RyaW5nLAogCQkJCQkgIENNRFRBR19TRUxFQ1QsCS8qIGN1cnNv cidzIHF1ZXJ5IGlzIGFsd2F5cyBhIFNFTEVDVCAqLwogCQkJCQkgIGxpc3RfbWFrZTEocGxhbiks CisJCQkJCSAgbGlzdF9tYWtlMShOVUxMKSwKIAkJCQkJICBOVUxMKTsKIAogCS8qLS0tLS0tLS0t LQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvcHJlcGFyZS5jCmluZGV4IDM0YjY0MTBkNmEyLi5hZmQ0NDljNzNiYSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3ByZXBhcmUuYwpAQCAtMjA1LDYgKzIwNSw3IEBAIEV4ZWN1dGVRdWVyeShQYXJz ZVN0YXRlICpwc3RhdGUsCiAJCQkJCSAgcXVlcnlfc3RyaW5nLAogCQkJCQkgIGVudHJ5LT5wbGFu c291cmNlLT5jb21tYW5kVGFnLAogCQkJCQkgIHBsYW5fbGlzdCwKKwkJCQkJICBOSUwsCiAJCQkJ CSAgY3BsYW4pOwogCiAJLyoKQEAgLTU3NSw2ICs1NzYsNyBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5 KEV4ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICpl cywKIAljb25zdCBjaGFyICpxdWVyeV9zdHJpbmc7CiAJQ2FjaGVkUGxhbiAqY3BsYW47CiAJTGlz dAkgICAqcGxhbl9saXN0OworCUxpc3QJICAgKnByZXBfbGlzdDsKIAlMaXN0Q2VsbCAgICpwOwog CVBhcmFtTGlzdEluZm8gcGFyYW1MSSA9IE5VTEw7CiAJRVN0YXRlCSAgICplc3RhdGUgPSBOVUxM OwpAQCAtNTg1LDYgKzU4Nyw3IEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQgKmV4 ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCU1lbW9yeUNvbnRl eHRDb3VudGVycyBtZW1fY291bnRlcnM7CiAJTWVtb3J5Q29udGV4dCBwbGFubmVyX2N0eCA9IE5V TEw7CiAJTWVtb3J5Q29udGV4dCBzYXZlZF9jdHggPSBOVUxMOworCWludAkJCWk7CiAKIAlpZiAo ZXMtPm1lbW9yeSkKIAl7CkBAIC02NTAsMTQgKzY1MywyMCBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5 KEV4ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICpl cywKIAl9CiAKIAlwbGFuX2xpc3QgPSBjcGxhbi0+c3RtdF9saXN0OworCXByZXBfbGlzdCA9IE5J TDsKIAogCS8qIEV4cGxhaW4gZWFjaCBxdWVyeSAqLworCWkgPSAwOwogCWZvcmVhY2gocCwgcGxh bl9saXN0KQogCXsKIAkJUGxhbm5lZFN0bXQgKnBzdG10ID0gbGZpcnN0X25vZGUoUGxhbm5lZFN0 bXQsIHApOworCQlFeGVjUHJlcCAqcHJlcCA9IHByZXBfbGlzdCA/CisJCQkoRXhlY1ByZXAgKikg bGlzdF9udGgocHJlcF9saXN0LCBpKSA6IE5VTEw7CiAKKwkJaSsrOwogCQlpZiAocHN0bXQtPmNv bW1hbmRUeXBlICE9IENNRF9VVElMSVRZKQotCQkJRXhwbGFpbk9uZVBsYW4ocHN0bXQsIGludG8s IGVzLCBxdWVyeV9zdHJpbmcsIHBhcmFtTEksIHBzdGF0ZS0+cF9xdWVyeUVudiwKKwkJCUV4cGxh aW5PbmVQbGFuKHBzdG10LCBwcmVwLAorCQkJCQkJICAgaW50bywgZXMsIHF1ZXJ5X3N0cmluZywg cGFyYW1MSSwgcHN0YXRlLT5wX3F1ZXJ5RW52LAogCQkJCQkJICAgJnBsYW5kdXJhdGlvbiwgKGVz LT5idWZmZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCksCiAJCQkJCQkgICBlcy0+bWVtb3J5ID8gJm1l bV9jb3VudGVycyA6IE5VTEwpOwogCQllbHNlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9SRUFETUUgYi9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUKaW5kZXggNTRmNDc4MmYz MWIuLjk1YjVlYzU4YzU1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FCkBAIC0yOTEsMTAgKzI5MSwxNiBAQCBR dWVyeSBQcm9jZXNzaW5nIENvbnRyb2wgRmxvdwogCiBUaGlzIGlzIGEgc2tldGNoIG9mIGNvbnRy b2wgZmxvdyBmb3IgZnVsbCBxdWVyeSBwcm9jZXNzaW5nOgogCisgICAgRXhlY3V0b3JQcmVwCisJ CU1heSBiZSBydW4gYmVmb3JlIEV4ZWN1dG9yU3RhcnQgKGUuZy4sIGZvciBwbGFuIHZhbGlkYXRp b24pLCBvcgorCQlpbXBsaWNpdGx5IGZyb20gRXhlY3V0b3JTdGFydCBpZiBub3QgZG9uZSBlYXJs aWVyLiAgUGVyZm9ybXMgcmFuZ2UKKwkJdGFibGUgaW5pdGlhbGl6YXRpb24sIHBlcm1pc3Npb24g Y2hlY2tzLCBhbmQgaW5pdGlhbCBwYXJ0aXRpb24gcHJ1bmluZy4KKwkJUmV0dXJucyBhbiBFeGVj UHJlcCB3cmFwcGVyIHdpdGggRVN0YXRlIHRoYXQgRXhlY3V0b3JTdGFydCBtYXkgcmV1c2UuCisK IAlDcmVhdGVRdWVyeURlc2MKIAogCUV4ZWN1dG9yU3RhcnQKLQkJQ3JlYXRlRXhlY3V0b3JTdGF0 ZQorCQlDcmVhdGVFeGVjdXRvclN0YXRlIChvciByZXVzZSBvbmUgZnJvbSBFeGVjUHJlcCBpZiBw cmVzZW50KQogCQkJY3JlYXRlcyBwZXItcXVlcnkgY29udGV4dAogCQlzd2l0Y2ggdG8gcGVyLXF1 ZXJ5IGNvbnRleHQgdG8gcnVuIEV4ZWNJbml0Tm9kZQogCQlBZnRlclRyaWdnZXJCZWdpblF1ZXJ5 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRleCBmNWY0OTg2MzgzZC4uMzlkZTBiOTNhMWMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAtMTcxLDggKzE3MSwyNiBAQCBzdGFuZGFyZF9FeGVj dXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCiAJLyoKIAkgKiBC dWlsZCBFU3RhdGUsIHN3aXRjaCBpbnRvIHBlci1xdWVyeSBtZW1vcnkgY29udGV4dCBmb3Igc3Rh cnR1cC4KKwkgKgorCSAqIElmIEV4ZWN1dG9yUHJlcCgpIHJhbiBlYXJsaWVyIChlLmcuLCB0byBk byBpbml0aWFsIHBydW5pbmcgZHVyaW5nIHBsYW4KKwkgKiB2YWxpZGl0eSBjaGVja2luZyksIHJl dXNlIGl0cyBFU3RhdGUgdG8gYXZvaWQgcmVkb2luZyByYW5nZSB0YWJsZSBzZXR1cAorCSAqIGFu ZCBwcnVuaW5nLiBPdGhlcndpc2UsIGNyZWF0ZSBhIGZyZXNoIEVTdGF0ZSBhcyB1c3VhbC4KIAkg Ki8KLQllc3RhdGUgPSBDcmVhdGVFeGVjdXRvclN0YXRlKCk7CisJaWYgKHF1ZXJ5RGVzYy0+cHJl cCA9PSBOVUxMKQorCQlxdWVyeURlc2MtPnByZXAgPSBFeGVjdXRvclByZXAocXVlcnlEZXNjLT5w bGFubmVkc3RtdCwKKwkJCQkJCQkJCSAgIHF1ZXJ5RGVzYy0+cGFyYW1zLAorCQkJCQkJCQkJICAg Q3VycmVudFJlc291cmNlT3duZXIsCisJCQkJCQkJCQkgICB0cnVlLAorCQkJCQkJCQkJICAgZWZs YWdzKTsKKwlBc3NlcnQocXVlcnlEZXNjLT5wcmVwKTsKKwllc3RhdGUgPSBxdWVyeURlc2MtPnBy ZXAtPnByZXBfZXN0YXRlOworCisJLyoKKwkgKiBFeGVjdXRvciBpcyBhZG9wdGluZyB0aGUgcHJl cCdzIEVTdGF0ZS4gTWFyayBpdCBzbyBFeGVjUHJlcENsZWFudXAoKQorCSAqIGRvZXNuJ3QgdHJ5 IHRvIGZyZWUgaXQgcmVkdW5kYW50bHkuCisJICovCisJcXVlcnlEZXNjLT5wcmVwLT5vd25zX2Vz dGF0ZSA9IGZhbHNlOworCiAJcXVlcnlEZXNjLT5lc3RhdGUgPSBlc3RhdGU7CiAKIAlvbGRjb250 ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKQEAgLTI2 Myw2ICsyODEsMTM2IEBAIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURl c2MsIGludCBlZmxhZ3MpCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwogfQog CisvKgorICogRXhlY3V0b3JQcmVwOiBwcmVwYXJlIGV4ZWN1dG9yIHN0YXRlIGZvciBhIFBsYW5u ZWRTdG10IG91dHNpZGUgRXhlY3V0b3JTdGFydC4KKyAqCisgKiBQZXJmb3JtcyByYW5nZSB0YWJs ZSBpbml0aWFsaXphdGlvbiwgcGVybWlzc2lvbiBjaGVja3MsIGFuZCBpbml0aWFsCisgKiBwYXJ0 aXRpb24gcHJ1bmluZyBpZiBwYXJ0UHJ1bmVJbmZvcyBhcmUgcHJlc2VudCBhbmQgZG9faW5pdGlh bF9wcnVuaW5nIGlzCisgKiB0cnVlLgorICoKKyAqIFRoaXMgaXMgaW50ZW5kZWQgZm9yIGNhbGxl cnMgdGhhdCBuZWVkIGV4ZWN1dG9yIG1ldGFkYXRhIGFoZWFkIG9mIGFjdHVhbAorICogZXhlY3V0 aW9uLiBUeXBpY2FsIHVzZSBjYXNlcyBpbmNsdWRlOgorICoJLSBkZXRlcm1pbmluZyB3aGljaCBy ZWxhdGlvbnMgbXVzdCBiZSBsb2NrZWQgZHVyaW5nIHBsYW4gY2FjaGUgdmFsaWRhdGlvbjsKKyAq CS0gaW5pdGlhbGl6aW5nIHVucHJ1bmVkIHJlbGlkcyBhbmQgdmFsaWQgc3VicGxhbnMgaW4gcGFy YWxsZWwgd29ya2VycworICoJICB1c2luZyBzdGF0ZSBjb3BpZWQgZnJvbSB0aGUgbGVhZGVyLgor ICoKKyAqIFRoZSBleGVjdXRvciBjYW4gcmV1c2UgdGhlIHJlc3VsdGluZyBzdGF0ZSB0byBhdm9p ZCByZWR1bmRhbnQgc2V0dXAgZHVyaW5nCisgKiBFeGVjdXRvclN0YXJ0KCkuCisgKgorICogUmV0 dXJucyBhbiBFeGVjUHJlcCB3cmFwcGVyIHRoYXQgb3ducyB0aGUgRVN0YXRlIGFuZCBjYW4gYmUg cmV1c2VkCisgKiBvciBjbGVhbmVkIHVwIGxhdGVyLgorICovCitFeGVjUHJlcCAqCitFeGVjdXRv clByZXAoUGxhbm5lZFN0bXQgKnBzdG10LCBQYXJhbUxpc3RJbmZvIHBhcmFtcywgUmVzb3VyY2VP d25lciBvd25lciwKKwkJCSBib29sIGRvX2luaXRpYWxfcHJ1bmluZywgaW50IGVmbGFncykKK3sK KwlSZXNvdXJjZU93bmVyIG9sZG93bmVyOworCUVTdGF0ZSAqZXN0YXRlOworCWJvb2wJc25hcHNo b3Rfc2V0OworCisJaWYgKHBzdG10LT5jb21tYW5kVHlwZSA9PSBDTURfVVRJTElUWSkKKwkJcmV0 dXJuIE5VTEw7CisKKwkvKiBQcnVuaW5nIG1heSB1c2UgZXhwcmVzc2lvbnMgdGhhdCByZXF1aXJl IGFuIGFjdGl2ZSBzbmFwc2hvdC4gKi8KKwlzbmFwc2hvdF9zZXQgPSBmYWxzZTsKKwlpZiAoIUFj dGl2ZVNuYXBzaG90U2V0KCkpCisJeworCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rp b25TbmFwc2hvdCgpKTsKKwkJc25hcHNob3Rfc2V0ID0gdHJ1ZTsKKwl9CisJQXNzZXJ0KEFjdGl2 ZVNuYXBzaG90U2V0KCkpOworCisJZXN0YXRlID0gQ3JlYXRlRXhlY3V0b3JTdGF0ZSgpOworCWVz dGF0ZS0+ZXNfcGxhbm5lZHN0bXQgPSBwc3RtdDsKKwllc3RhdGUtPmVzX3BhcnRfcHJ1bmVfaW5m b3MgPSBwc3RtdC0+cGFydFBydW5lSW5mb3M7CisJZXN0YXRlLT5lc19wYXJhbV9saXN0X2luZm8g PSBwYXJhbXM7CisJZXN0YXRlLT5lc190b3BfZWZsYWdzID0gZWZsYWdzOworCisJLyoKKwkgKiBE byBwZXJtaXNzaW9ucyBjaGVja3MuCisJICovCisJRXhlY0NoZWNrUGVybWlzc2lvbnMocHN0bXQt PnJ0YWJsZSwgcHN0bXQtPnBlcm1JbmZvcywgdHJ1ZSk7CisKKwkvKgorCSAqIEluaXRpYWxpemUg cmFuZ2UgdGFibGUuCisJICovCisJRXhlY0luaXRSYW5nZVRhYmxlKGVzdGF0ZSwgcHN0bXQtPnJ0 YWJsZSwgcHN0bXQtPnBlcm1JbmZvcywKKwkJCQkJICAgYm1zX2NvcHkocHN0bXQtPnVucHJ1bmFi bGVSZWxpZHMpKTsKKworCS8qCisJICogRW5zdXJlIGxvY2tzIHRha2VuIGR1cmluZyBpbml0aWFs IHBydW5pbmcgYXJlIHRyYWNrZWQgdW5kZXIgdGhlIGdpdmVuCisJICogUmVzb3VyY2VPd25lciAo ZS5nLiwgb25lIGFzc29jaWF0ZWQgd2l0aCBDYWNoZWRQbGFuIHZhbGlkYXRpb24pLgorCSAqLwor CW9sZG93bmVyID0gQ3VycmVudFJlc291cmNlT3duZXI7CisJQ3VycmVudFJlc291cmNlT3duZXIg PSBvd25lcjsKKworCS8qCisJICogU2V0IHVwIFBhcnRpdGlvblBydW5lU3RhdGUgc3RydWN0dXJl cyBuZWVkZWQgZm9yIGJvdGggaW5pdGlhbCBhbmQKKwkgKiBydW50aW1lIHBhcnRpdGlvbiBwcnVu aW5nLiBUaGVzZSBzdHJ1Y3R1cmVzIGFyZSBidWlsdCBmcm9tIHRoZQorCSAqIFBhcnRpdGlvblBy dW5lSW5mbyBlbnRyaWVzIGluIHRoZSBwbGFuIHRyZWUuCisJICoKKwkgKiBJZiBkb19pbml0aWFs X3BydW5pbmcgaXMgdHJ1ZSwgYWxzbyBwZXJmb3JtIGluaXRpYWwgcHJ1bmluZyB0byBjb21wdXRl CisJICogdGhlIHN1YnNldCBvZiBjaGlsZCBzdWJwbGFucyB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQu IFRoZSByZXN1bHRzLAorCSAqIHdoaWNoIGFyZSBiaXRtYXBzZXRzIG9mIHNlbGVjdGVkIGNoaWxk IGluZGV4ZXMsIGFyZSBzYXZlZCBpbgorCSAqIGVzX3BhcnRfcHJ1bmVfcmVzdWx0cy4gVGhpcyBs aXN0IGlzIHBhcmFsbGVsIHRvIGVzX3BhcnRfcHJ1bmVfaW5mb3MuCisJICoKKwkgKiBJbiBwYXJh bGxlbCB3b3JrZXJzLCBkb19pbml0aWFsX3BydW5pbmcgc2hvdWxkIGJlIGZhbHNlIC0tIHRoZXkg cmVjZWl2ZQorCSAqIGVzX3BhcnRfcHJ1bmVfcmVzdWx0cyBmcm9tIHRoZSBsZWFkZXIgcHJvY2Vz cyBhbmQgc2hvdWxkIG9ubHkgaW5pdGlhbGl6ZQorCSAqIHRoZSBQYXJ0aXRpb25QcnVuZVN0YXRl cy4KKwkgKi8KKwlFeGVjQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZXMoZXN0YXRlKTsKKwlpZiAo ZG9faW5pdGlhbF9wcnVuaW5nKQorCQlFeGVjRG9Jbml0aWFsUHJ1bmluZyhlc3RhdGUpOworCisJ Q3VycmVudFJlc291cmNlT3duZXIgPSBvbGRvd25lcjsKKworCS8qIFJlbGVhc2Ugc25hcHNob3Qg aWYgd2UgZ290IG9uZSAqLworCWlmIChzbmFwc2hvdF9zZXQpCisJCVBvcEFjdGl2ZVNuYXBzaG90 KCk7CisKKwlyZXR1cm4gQ3JlYXRlRXhlY1ByZXAoZXN0YXRlLCBDdXJyZW50TWVtb3J5Q29udGV4 dCwgTlVMTCwgTlVMTCk7Cit9CisKKy8qCisgKiBDcmVhdGVFeGVjUHJlcDogaW5pdGlhbGl6ZSBF eGVjUHJlcCB3cmFwcGVyIHdpdGggb3B0aW9uYWwgY2xlYW51cCBtZXRhZGF0YS4KKyAqLworRXhl Y1ByZXAgKgorQ3JlYXRlRXhlY1ByZXAoRVN0YXRlICplc3RhdGUsIE1lbW9yeUNvbnRleHQgY29u dGV4dCwKKwkJCSAgIGV4ZWNwcmVwX2NsZWFudXBfZm4gY2xlYW51cCwgdm9pZCAqY2xlYW51cF9h cmcpCit7CisJRXhlY1ByZXAgKnByZXAgPSBwYWxsb2MwKHNpemVvZihFeGVjUHJlcCkpOworCisJ cHJlcC0+cHJlcF9lc3RhdGUgPSBlc3RhdGU7CisJcHJlcC0+Y29udGV4dCA9IGNvbnRleHQ7CisJ cHJlcC0+Y2xlYW51cCA9IGNsZWFudXA7CisJcHJlcC0+Y2xlYW51cF9hcmcgPSBjbGVhbnVwX2Fy ZzsKKwlwcmVwLT5vd25zX2VzdGF0ZSA9IHRydWU7CisKKwlyZXR1cm4gcHJlcDsKK30KKworLyoK KyAqIEV4ZWNQcmVwQ2xlYW51cDogZnJlZSBFeGVjUHJlcCByZXNvdXJjZXMgbm90IGFkb3B0ZWQg YnkgdGhlIGV4ZWN1dG9yLgorICoKKyAqIE9ubHkgZnJlZXMgdGhlIEVTdGF0ZSBpZiBpdCB3YXNu J3QgdGFrZW4gb3ZlciBieSBFeGVjdXRvclN0YXJ0KCkuCisgKiBBbHdheXMgcnVucyB0aGUgb3B0 aW9uYWwgdXNlci1kZWZpbmVkIGNsZWFudXAgY2FsbGJhY2suCisgKi8KK3ZvaWQKK0V4ZWNQcmVw Q2xlYW51cChFeGVjUHJlcCAqcHJlcCkKK3sKKwlpZiAocHJlcCA9PSBOVUxMKQorCQlyZXR1cm47 CisKKwlpZiAocHJlcC0+cHJlcF9lc3RhdGUgJiYgcHJlcC0+b3duc19lc3RhdGUpCisJeworCQlF eGVjQ2xvc2VSYW5nZVRhYmxlUmVsYXRpb25zKHByZXAtPnByZXBfZXN0YXRlKTsKKwkJRnJlZUV4 ZWN1dG9yU3RhdGUocHJlcC0+cHJlcF9lc3RhdGUpOworCX0KKworCWlmIChwcmVwLT5jbGVhbnVw KQorCQlwcmVwLT5jbGVhbnVwKHByZXAtPmNsZWFudXBfYXJnKTsKK30KKwogLyogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog ICoJCUV4ZWN1dG9yUnVuCiAgKgpAQCAtODI0LDcgKzk3Miw2IEBAIEV4ZWNDaGVja1hhY3RSZWFk T25seShQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQpCiAJCVByZXZlbnRDb21tYW5kSWZQYXJhbGxl bE1vZGUoQ3JlYXRlQ29tbWFuZE5hbWUoKE5vZGUgKikgcGxhbm5lZHN0bXQpKTsKIH0KIAotCiAv KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiAgKgkJSW5pdFBsYW4KICAqCkBAIC04MzgsMzggKzk4NSwxNSBAQCBJbml0UGxh bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAlDbWRUeXBlCQlvcGVyYXRpb24g PSBxdWVyeURlc2MtPm9wZXJhdGlvbjsKIAlQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQgPSBxdWVy eURlc2MtPnBsYW5uZWRzdG10OwogCVBsYW4JICAgKnBsYW4gPSBwbGFubmVkc3RtdC0+cGxhblRy ZWU7Ci0JTGlzdAkgICAqcmFuZ2VUYWJsZSA9IHBsYW5uZWRzdG10LT5ydGFibGU7CiAJRVN0YXRl CSAgICplc3RhdGUgPSBxdWVyeURlc2MtPmVzdGF0ZTsKIAlQbGFuU3RhdGUgICpwbGFuc3RhdGU7 CiAJVHVwbGVEZXNjCXR1cFR5cGU7CiAJTGlzdENlbGwgICAqbDsKIAlpbnQJCQlpOwogCi0JLyoK LQkgKiBEbyBwZXJtaXNzaW9ucyBjaGVja3MKLQkgKi8KLQlFeGVjQ2hlY2tQZXJtaXNzaW9ucyhy YW5nZVRhYmxlLCBwbGFubmVkc3RtdC0+cGVybUluZm9zLCB0cnVlKTsKLQotCS8qCi0JICogaW5p dGlhbGl6ZSB0aGUgbm9kZSdzIGV4ZWN1dGlvbiBzdGF0ZQotCSAqLwotCUV4ZWNJbml0UmFuZ2VU YWJsZShlc3RhdGUsIHJhbmdlVGFibGUsIHBsYW5uZWRzdG10LT5wZXJtSW5mb3MsCi0JCQkJCSAg IGJtc19jb3B5KHBsYW5uZWRzdG10LT51bnBydW5hYmxlUmVsaWRzKSk7Ci0KLQllc3RhdGUtPmVz X3BsYW5uZWRzdG10ID0gcGxhbm5lZHN0bXQ7Ci0JZXN0YXRlLT5lc19wYXJ0X3BydW5lX2luZm9z ID0gcGxhbm5lZHN0bXQtPnBhcnRQcnVuZUluZm9zOwotCi0JLyoKLQkgKiBQZXJmb3JtIHJ1bnRp bWUgImluaXRpYWwiIHBydW5pbmcgdG8gaWRlbnRpZnkgd2hpY2ggY2hpbGQgc3VicGxhbnMsCi0J ICogY29ycmVzcG9uZGluZyB0byB0aGUgY2hpbGRyZW4gb2YgcGxhbiBub2RlcyB0aGF0IGNvbnRh aW4KLQkgKiBQYXJ0aXRpb25QcnVuZUluZm8gc3VjaCBhcyBBcHBlbmQsIHdpbGwgbm90IGJlIGV4 ZWN1dGVkLiBUaGUgcmVzdWx0cywKLQkgKiB3aGljaCBhcmUgYml0bWFwc2V0cyBvZiBpbmRleGVz IG9mIHRoZSBjaGlsZCBzdWJwbGFucyB0aGF0IHdpbGwgYmUKLQkgKiBleGVjdXRlZCwgYXJlIHNh dmVkIGluIGVzX3BhcnRfcHJ1bmVfcmVzdWx0cy4gIFRoZXNlIHJlc3VsdHMgY29ycmVzcG9uZAot CSAqIHRvIGVhY2ggUGFydGl0aW9uUHJ1bmVJbmZvIGVudHJ5LCBhbmQgdGhlIGVzX3BhcnRfcHJ1 bmVfcmVzdWx0cyBsaXN0IGlzCi0JICogcGFyYWxsZWwgdG8gZXNfcGFydF9wcnVuZV9pbmZvcy4K LQkgKi8KLQlFeGVjQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZXMoZXN0YXRlKTsKLQlFeGVjRG9J bml0aWFsUHJ1bmluZyhlc3RhdGUpOworCS8qIEV4ZWN1dG9yUHJlcCgpIG11c3QgaGF2ZSBiZWVu IGRvbmUuICovCisJQXNzZXJ0KHF1ZXJ5RGVzYy0+cHJlcCk7CisJQXNzZXJ0KGVzdGF0ZSA9PSBx dWVyeURlc2MtPnByZXAtPnByZXBfZXN0YXRlKTsKIAogCS8qCiAJICogTmV4dCwgYnVpbGQgdGhl IEV4ZWNSb3dNYXJrIGFycmF5IGZyb20gdGhlIFBsYW5Sb3dNYXJrKHMpLCBpZiBhbnkuCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCmluZGV4IGYwOThhNTU1N2NmLi5hZWRiZDk1NjZkNiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKQEAgLTEyODEsNiArMTI4MSw3IEBAIEV4 ZWNQYXJhbGxlbEdldFF1ZXJ5RGVzYyhzaG1fdG9jICp0b2MsIERlc3RSZWNlaXZlciAqcmVjZWl2 ZXIsCiAKIAkvKiBDcmVhdGUgYSBRdWVyeURlc2MgZm9yIHRoZSBxdWVyeS4gKi8KIAlyZXR1cm4g Q3JlYXRlUXVlcnlEZXNjKHBzdG10LAorCQkJCQkJICAgTlVMTCwKIAkJCQkJCSAgIHF1ZXJ5U3Ry aW5nLAogCQkJCQkJICAgR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJ CQkJICAgcmVjZWl2ZXIsIHBhcmFtTEksIE5VTEwsIGluc3RydW1lbnRfb3B0aW9ucyk7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKaW5kZXggNjE1NTk2NDI2NjIuLmFjNWUyZWJlZTcy IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCkBAIC0yMzY5LDYgKzIzNjksOSBA QCBJbml0RXhlY1BhcnRpdGlvblBydW5lQ29udGV4dHMoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1 bmVzdGF0ZSwKIAlBc3NlcnQocGFyZW50X3BsYW4gIT0gTlVMTCk7CiAJZXN0YXRlID0gcGFyZW50 X3BsYW4tPnN0YXRlOwogCisJLyogV291bGRuJ3QgYmUgYXZhaWxhYmxlIGF0IEV4ZWN1dG9yUHJl cCgpIHRpbWUuICovCisJcHJ1bmVzdGF0ZS0+ZWNvbnRleHQtPmVjeHRfcGFyYW1fZXhlY192YWxz ID0gZXN0YXRlLT5lc19wYXJhbV9leGVjX3ZhbHM7CisKIAkvKgogCSAqIE5vIG5lZWQgdG8gZml4 IHN1YnBsYW5zIG1hcHMgaWYgaW5pdGlhbCBwcnVuaW5nIGRpZG4ndCBlbGltaW5hdGUgYW55CiAJ ICogc3VicGxhbnMuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMu YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCmluZGV4IDYzMGQ3MDhkMmEzLi42 MzMzMTBjNWY1YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKQEAgLTEzNjIsNiArMTM2Miw3 IEBAIHBvc3RxdWVsX3N0YXJ0KGV4ZWN1dGlvbl9zdGF0ZSAqZXMsIFNRTEZ1bmN0aW9uQ2FjaGVQ dHIgZmNhY2hlKQogCQlkZXN0ID0gTm9uZV9SZWNlaXZlcjsKIAogCWVzLT5xZCA9IENyZWF0ZVF1 ZXJ5RGVzYyhlcy0+c3RtdCwKKwkJCQkJCQkgTlVMTCwKIAkJCQkJCQkgZmNhY2hlLT5mdW5jLT5z cmMsCiAJCQkJCQkJIEdldEFjdGl2ZVNuYXBzaG90KCksCiAJCQkJCQkJIEludmFsaWRTbmFwc2hv dCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivc3BpLmMKaW5kZXggNjUzNTAwYjM4ZGMuLjdhM2NiOTQ0ZDZmIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9z cGkuYwpAQCAtMTY4NSw2ICsxNjg1LDcgQEAgU1BJX2N1cnNvcl9vcGVuX2ludGVybmFsKGNvbnN0 IGNoYXIgKm5hbWUsIFNQSVBsYW5QdHIgcGxhbiwKIAkJCQkJICBxdWVyeV9zdHJpbmcsCiAJCQkJ CSAgcGxhbnNvdXJjZS0+Y29tbWFuZFRhZywKIAkJCQkJICBzdG10X2xpc3QsCisJCQkJCSAgTklM LAogCQkJCQkgIGNwbGFuKTsKIAogCS8qCkBAIC0yNTAwLDYgKzI1MDEsOCBAQCBfU1BJX2V4ZWN1 dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25z LAogCQlDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlID0gKENhY2hlZFBsYW5Tb3VyY2UgKikg bGZpcnN0KGxjMSk7CiAJCUxpc3QJICAgKnN0bXRfbGlzdDsKIAkJTGlzdENlbGwgICAqbGMyOwor CQlMaXN0CSAgICpwcmVwX2xpc3Q7CisJCWludAkJCWk7CiAKIAkJc3BpY2FsbGJhY2thcmcucXVl cnkgPSBwbGFuc291cmNlLT5xdWVyeV9zdHJpbmc7CiAKQEAgLTI1NzgsNiArMjU4MSw3IEBAIF9T UElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJRXhlY3V0ZU9wdGlvbnMg Km9wdGlvbnMsCiAJCQkJCQkJICBwbGFuX293bmVyLCBfU1BJX2N1cnJlbnQtPnF1ZXJ5RW52KTsK IAogCQlzdG10X2xpc3QgPSBjcGxhbi0+c3RtdF9saXN0OworCQlwcmVwX2xpc3QgPSBOSUw7CiAK IAkJLyoKIAkJICogSWYgd2Ugd2VyZW4ndCBnaXZlbiBhIHNwZWNpZmljIHNuYXBzaG90IHRvIHVz ZSwgYW5kIHRoZSBzdGF0ZW1lbnQKQEAgLTI2MTUsMTIgKzI2MTksMTcgQEAgX1NQSV9leGVjdXRl X3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywK IAkJCX0KIAkJfQogCisJCWkgPSAwOwogCQlmb3JlYWNoKGxjMiwgc3RtdF9saXN0KQogCQl7CiAJ CQlQbGFubmVkU3RtdCAqc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5uZWRTdG10LCBsYzIpOworCQkJ RXhlY1ByZXAgKnByZXAgPSBwcmVwX2xpc3QgPworCQkJCWxpc3RfbnRoKHByZXBfbGlzdCwgaSkg OiBOVUxMOwogCQkJYm9vbAkJY2FuU2V0VGFnID0gc3RtdC0+Y2FuU2V0VGFnOwogCQkJRGVzdFJl Y2VpdmVyICpkZXN0OwogCisJCQlpKys7CisKIAkJCS8qCiAJCQkgKiBSZXNldCBvdXRwdXQgc3Rh dGUuICAoTm90ZSB0aGF0IGlmIGEgbm9uLVNQSSByZWNlaXZlciBpcyB1c2VkLAogCQkJICogX1NQ SV9jdXJyZW50LT5wcm9jZXNzZWQgd2lsbCBzdGF5IHplcm8sIGFuZCB0aGF0J3Mgd2hhdCB3ZSds bApAQCAtMjY5MCw2ICsyNjk5LDcgQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFu LCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJCQkJc25hcCA9IEludmFsaWRT bmFwc2hvdDsKIAogCQkJCXFkZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHN0bXQsCisJCQkJCQkJCQkJ cHJlcCwKIAkJCQkJCQkJCQlwbGFuc291cmNlLT5xdWVyeV9zdHJpbmcsCiAJCQkJCQkJCQkJc25h cCwgY3Jvc3NjaGVja19zbmFwc2hvdCwKIAkJCQkJCQkJCQlkZXN0LApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmlu ZGV4IDdkZDc1YTQ5MGFhLi41ODgwYTU3NGEwNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNv cC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpAQCAtMTIzMiw2 ICsxMjMyLDcgQEAgZXhlY19zaW1wbGVfcXVlcnkoY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nKQog CQkJCQkJICBxdWVyeV9zdHJpbmcsCiAJCQkJCQkgIGNvbW1hbmRUYWcsCiAJCQkJCQkgIHBsYW50 cmVlX2xpc3QsCisJCQkJCQkgIE5JTCwKIAkJCQkJCSAgTlVMTCk7CiAKIAkJLyoKQEAgLTIwMzMs NiArMjAzNCw3IEBAIGV4ZWNfYmluZF9tZXNzYWdlKFN0cmluZ0luZm8gaW5wdXRfbWVzc2FnZSkK IAkJCQkJICBxdWVyeV9zdHJpbmcsCiAJCQkJCSAgcHNyYy0+Y29tbWFuZFRhZywKIAkJCQkJICBj cGxhbi0+c3RtdF9saXN0LAorCQkJCQkgIE5JTCwKIAkJCQkJICBjcGxhbik7CiAKIAkvKiBQb3J0 YWwgaXMgZGVmaW5lZCwgc2V0IHRoZSBwbGFuIElEIGJhc2VkIG9uIGl0cyBjb250ZW50cy4gKi8K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMgYi9zcmMvYmFja2VuZC90Y29w L3BxdWVyeS5jCmluZGV4IGZkZTc4YzU1MTYwLi44MmMyOTU1MDJiMCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdGNvcC9wcXVlcnkuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCkBA IC0zNyw2ICszNyw3IEBAIFBvcnRhbAkJQWN0aXZlUG9ydGFsID0gTlVMTDsKIAogCiBzdGF0aWMg dm9pZCBQcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4sCisJCQkJCQkgRXhlY1ByZXAgKnBy ZXAsCiAJCQkJCQkgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQkJCSBQYXJhbUxpc3RJbmZv IHBhcmFtcywKIAkJCQkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKQEAgLTY2LDYgKzY3 LDcgQEAgc3RhdGljIHZvaWQgRG9Qb3J0YWxSZXdpbmQoUG9ydGFsIHBvcnRhbCk7CiAgKi8KIFF1 ZXJ5RGVzYyAqCiBDcmVhdGVRdWVyeURlc2MoUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LAorCQkJ CUV4ZWNQcmVwICpwcmVwLAogCQkJCWNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCiAJCQkJU25hcHNo b3Qgc25hcHNob3QsCiAJCQkJU25hcHNob3QgY3Jvc3NjaGVja19zbmFwc2hvdCwKQEAgLTc4LDYg KzgwLDcgQEAgQ3JlYXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwKIAogCXFk LT5vcGVyYXRpb24gPSBwbGFubmVkc3RtdC0+Y29tbWFuZFR5cGU7CS8qIG9wZXJhdGlvbiAqLwog CXFkLT5wbGFubmVkc3RtdCA9IHBsYW5uZWRzdG10OwkvKiBwbGFuICovCisJcWQtPnByZXAgPSBw cmVwOwkJLyogZXhlY3V0b3IgcHJlcCBvdXRwdXQgKi8KIAlxZC0+c291cmNlVGV4dCA9IHNvdXJj ZVRleHQ7CS8qIHF1ZXJ5IHRleHQgKi8KIAlxZC0+c25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90 KHNuYXBzaG90KTsJLyogc25hcHNob3QgKi8KIAkvKiBSSSBjaGVjayBzbmFwc2hvdCAqLwpAQCAt MTEyLDYgKzExNSwxMyBAQCBGcmVlUXVlcnlEZXNjKFF1ZXJ5RGVzYyAqcWRlc2MpCiAJVW5yZWdp c3RlclNuYXBzaG90KHFkZXNjLT5zbmFwc2hvdCk7CiAJVW5yZWdpc3RlclNuYXBzaG90KHFkZXNj LT5jcm9zc2NoZWNrX3NuYXBzaG90KTsKIAorCS8qIEV4ZWNQcmVwIGNsZWFudXAgaWYgbmVjZXNz YXJ5ICovCisJaWYgKHFkZXNjLT5wcmVwKQorCXsKKwkJRXhlY1ByZXBDbGVhbnVwKHFkZXNjLT5w cmVwKTsKKwkJcWRlc2MtPnByZXAgPSBOVUxMOworCX0KKwogCS8qIE9ubHkgdGhlIFF1ZXJ5RGVz YyBpdHNlbGYgbmVlZCBiZSBmcmVlZCAqLwogCXBmcmVlKHFkZXNjKTsKIH0KQEAgLTEyMyw2ICsx MzMsNyBAQCBGcmVlUXVlcnlEZXNjKFF1ZXJ5RGVzYyAqcWRlc2MpCiAgKgkJUE9SVEFMX09ORV9S RVRVUk5JTkcsIG9yIFBPUlRBTF9PTkVfTU9EX1dJVEggcG9ydGFsCiAgKgogICoJcGxhbjogdGhl IHBsYW4gdHJlZSBmb3IgdGhlIHF1ZXJ5CisgKglwcmVwOiBFeGVjUHJlcCBmb3IgdGhlIHBsYW4g KG91dHB1dCBvZiBFeGVjdXRvclByZXAoKSkKICAqCXNvdXJjZVRleHQ6IHRoZSBzb3VyY2UgdGV4 dCBvZiB0aGUgcXVlcnkKICAqCXBhcmFtczogYW55IHBhcmFtZXRlcnMgbmVlZGVkCiAgKglkZXN0 OiB3aGVyZSB0byBzZW5kIHJlc3VsdHMKQEAgLTEzNSw2ICsxNDYsNyBAQCBGcmVlUXVlcnlEZXNj KFF1ZXJ5RGVzYyAqcWRlc2MpCiAgKi8KIHN0YXRpYyB2b2lkCiBQcm9jZXNzUXVlcnkoUGxhbm5l ZFN0bXQgKnBsYW4sCisJCQkgRXhlY1ByZXAgKnByZXAsCiAJCQkgY29uc3QgY2hhciAqc291cmNl VGV4dCwKIAkJCSBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCSBRdWVyeUVudmlyb25tZW50ICpx dWVyeUVudiwKQEAgLTE0Niw3ICsxNTgsNyBAQCBQcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBs YW4sCiAJLyoKIAkgKiBDcmVhdGUgdGhlIFF1ZXJ5RGVzYyBvYmplY3QKIAkgKi8KLQlxdWVyeURl c2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgc291cmNlVGV4dCwKKwlxdWVyeURlc2MgPSBDcmVh dGVRdWVyeURlc2MocGxhbiwgcHJlcCwgc291cmNlVGV4dCwKIAkJCQkJCQkJR2V0QWN0aXZlU25h cHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52 LCAwKTsKIApAQCAtNDg5LDYgKzUwMSw5IEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBh cmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCSAqIHRoZSBkZXN0aW5hdGlvbiB0byBEZXN0Tm9uZS4K IAkJCQkgKi8KIAkJCQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MobGluaXRpYWxfbm9kZShQ bGFubmVkU3RtdCwgcG9ydGFsLT5zdG10cyksCisJCQkJCQkJCQkJCXBvcnRhbC0+cHJlcHMgPwor CQkJCQkJCQkJCQkoRXhlY1ByZXAgKikgbGluaXRpYWwocG9ydGFsLT5wcmVwcykgOgorCQkJCQkJ CQkJCQlOVUxMLAogCQkJCQkJCQkJCQlwb3J0YWwtPnNvdXJjZVRleHQsCiAJCQkJCQkJCQkJCUdl dEFjdGl2ZVNuYXBzaG90KCksCiAJCQkJCQkJCQkJCUludmFsaWRTbmFwc2hvdCwKQEAgLTExODUs NiArMTIwMCw3IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiB7CiAJYm9vbAkJYWN0 aXZlX3NuYXBzaG90X3NldCA9IGZhbHNlOwogCUxpc3RDZWxsICAgKnN0bXRsaXN0X2l0ZW07CisJ aW50CQkJaTsKIAogCS8qCiAJICogSWYgdGhlIGRlc3RpbmF0aW9uIGlzIERlc3RSZW1vdGVFeGVj dXRlLCBjaGFuZ2UgdG8gRGVzdE5vbmUuICBUaGUKQEAgLTEyMDUsOSArMTIyMSwxNCBAQCBQb3J0 YWxSdW5NdWx0aShQb3J0YWwgcG9ydGFsLAogCSAqIExvb3AgdG8gaGFuZGxlIHRoZSBpbmRpdmlk dWFsIHF1ZXJpZXMgZ2VuZXJhdGVkIGZyb20gYSBzaW5nbGUgcGFyc2V0cmVlCiAJICogYnkgYW5h bHlzaXMgYW5kIHJld3JpdGUuCiAJICovCisJaSA9IDA7CiAJZm9yZWFjaChzdG10bGlzdF9pdGVt LCBwb3J0YWwtPnN0bXRzKQogCXsKIAkJUGxhbm5lZFN0bXQgKnBzdG10ID0gbGZpcnN0X25vZGUo UGxhbm5lZFN0bXQsIHN0bXRsaXN0X2l0ZW0pOworCQlFeGVjUHJlcCAqcHJlcCA9IHBvcnRhbC0+ cHJlcHMgPworCQkJbGlzdF9udGgocG9ydGFsLT5wcmVwcywgaSkgOiBOVUxMOworCisJCWkrKzsK IAogCQkvKgogCQkgKiBJZiB3ZSBnb3QgYSBjYW5jZWwgc2lnbmFsIGluIHByaW9yIGNvbW1hbmQs IHF1aXQKQEAgLTEyNjUsNyArMTI4Niw3IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWws CiAJCQlpZiAocHN0bXQtPmNhblNldFRhZykKIAkJCXsKIAkJCQkvKiBzdGF0ZW1lbnQgY2FuIHNl dCB0YWcgc3RyaW5nICovCi0JCQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LAorCQkJCVByb2Nlc3NRdWVy eShwc3RtdCwgcHJlcCwKIAkJCQkJCQkgcG9ydGFsLT5zb3VyY2VUZXh0LAogCQkJCQkJCSBwb3J0 YWwtPnBvcnRhbFBhcmFtcywKIAkJCQkJCQkgcG9ydGFsLT5xdWVyeUVudiwKQEAgLTEyNzQsNyAr MTI5NSw3IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJCQllbHNlCiAJCQl7CiAJ CQkJLyogc3RtdCBhZGRlZCBieSByZXdyaXRlIGNhbm5vdCBzZXQgdGFnICovCi0JCQkJUHJvY2Vz c1F1ZXJ5KHBzdG10LAorCQkJCVByb2Nlc3NRdWVyeShwc3RtdCwgcHJlcCwKIAkJCQkJCQkgcG9y dGFsLT5zb3VyY2VUZXh0LAogCQkJCQkJCSBwb3J0YWwtPnBvcnRhbFBhcmFtcywKIAkJCQkJCQkg cG9ydGFsLT5xdWVyeUVudiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9y dGFsbWVtLmMgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCmluZGV4IDk0M2Rh MDg3YzlmLi4zMTNmOGVmMmZkYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9w b3J0YWxtZW0uYworKysgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCkBAIC0y ODQsNiArMjg0LDcgQEAgUG9ydGFsRGVmaW5lUXVlcnkoUG9ydGFsIHBvcnRhbCwKIAkJCQkgIGNv bnN0IGNoYXIgKnNvdXJjZVRleHQsCiAJCQkJICBDb21tYW5kVGFnIGNvbW1hbmRUYWcsCiAJCQkJ ICBMaXN0ICpzdG10cywKKwkJCQkgIExpc3QgKnByZXBzLAogCQkJCSAgQ2FjaGVkUGxhbiAqY3Bs YW4pCiB7CiAJQXNzZXJ0KFBvcnRhbElzVmFsaWQocG9ydGFsKSk7CkBAIC0yOTgsNiArMjk5LDcg QEAgUG9ydGFsRGVmaW5lUXVlcnkoUG9ydGFsIHBvcnRhbCwKIAlwb3J0YWwtPnFjLm5wcm9jZXNz ZWQgPSAwOwogCXBvcnRhbC0+Y29tbWFuZFRhZyA9IGNvbW1hbmRUYWc7CiAJcG9ydGFsLT5zdG10 cyA9IHN0bXRzOworCXBvcnRhbC0+cHJlcHMgPSBwcmVwczsKIAlwb3J0YWwtPmNwbGFuID0gY3Bs YW47CiAJcG9ydGFsLT5zdGF0dXMgPSBQT1JUQUxfREVGSU5FRDsKIH0KZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxh aW4uaAppbmRleCA2ZTUxZDUwZWZjNy4uNmFhOGIyNzVhYTIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NvbW1hbmRzL2V4cGxhaW4uaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWlu LmgKQEAgLTYzLDcgKzYzLDggQEAgZXh0ZXJuIHZvaWQgRXhwbGFpbk9uZVV0aWxpdHkoTm9kZSAq dXRpbGl0eVN0bXQsIEludG9DbGF1c2UgKmludG8sCiAJCQkJCQkJICBFeHBsYWluU3RhdGUgKmVz LCBQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJICBQYXJhbUxpc3RJbmZvIHBhcmFtcyk7CiAK LWV4dGVybiB2b2lkIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50 b0NsYXVzZSAqaW50bywKK2V4dGVybiB2b2lkIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpw bGFubmVkc3RtdCwgRXhlY1ByZXAgKnByZXAsCisJCQkJCQkgICBJbnRvQ2xhdXNlICppbnRvLAog CQkJCQkJICAgRXhwbGFpblN0YXRlICplcywgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJCQkJ CQkgICBQYXJhbUxpc3RJbmZvIHBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsCiAJ CQkJCQkgICBjb25zdCBpbnN0cl90aW1lICpwbGFuZHVyYXRpb24sCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rl c2MuaAppbmRleCA4NmRiM2RjOGQwZC4uYzE4NTMwZjVkMTEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rl c2MuaApAQCAtMTgsNyArMTgsNiBAQAogI2luY2x1ZGUgIm5vZGVzL2V4ZWNub2Rlcy5oIgogI2lu Y2x1ZGUgInRjb3AvZGVzdC5oIgogCi0KIC8qIC0tLS0tLS0tLS0tLS0tLS0KICAqCQlxdWVyeSBk ZXNjcmlwdG9yOgogICoKQEAgLTM1LDYgKzM0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUXVlcnlEZXNj CiAJLyogVGhlc2UgZmllbGRzIGFyZSBwcm92aWRlZCBieSBDcmVhdGVRdWVyeURlc2MgKi8KIAlD bWRUeXBlCQlvcGVyYXRpb247CQkvKiBDTURfU0VMRUNULCBDTURfVVBEQVRFLCBldGMuICovCiAJ UGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10OwkvKiBwbGFubmVyJ3Mgb3V0cHV0IChjb3VsZCBiZSB1 dGlsaXR5LCB0b28pICovCisJRXhlY1ByZXAgKnByZXA7CQkJCS8qIG91dHB1dCBvZiBFeGVjdXRv clByZXAoKSBvciBOVUxMICovCiAJY29uc3QgY2hhciAqc291cmNlVGV4dDsJCS8qIHNvdXJjZSB0 ZXh0IG9mIHRoZSBxdWVyeSAqLwogCVNuYXBzaG90CXNuYXBzaG90OwkJLyogc25hcHNob3QgdG8g dXNlIGZvciBxdWVyeSAqLwogCVNuYXBzaG90CWNyb3NzY2hlY2tfc25hcHNob3Q7CS8qIGNyb3Nz Y2hlY2sgZm9yIFJJIHVwZGF0ZS9kZWxldGUgKi8KQEAgLTU3LDYgKzU3LDcgQEAgdHlwZWRlZiBz dHJ1Y3QgUXVlcnlEZXNjCiAKIC8qIGluIHBxdWVyeS5jICovCiBleHRlcm4gUXVlcnlEZXNjICpD cmVhdGVRdWVyeURlc2MoUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LAorCQkJCQkJCQkgIEV4ZWNQ cmVwICpwcmVwLAogCQkJCQkJCQkgIGNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCiAJCQkJCQkJCSAg U25hcHNob3Qgc25hcHNob3QsCiAJCQkJCQkJCSAgU25hcHNob3QgY3Jvc3NjaGVja19zbmFwc2hv dCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggYi9zcmMvaW5j bHVkZS9leGVjdXRvci9leGVjdXRvci5oCmluZGV4IGZhMmI2NTdmYjJmLi4zNTc5OTI2ZDRlOCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAorKysgYi9zcmMvaW5j bHVkZS9leGVjdXRvci9leGVjdXRvci5oCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAibm9k ZXMvbG9ja29wdGlvbnMuaCIKICNpbmNsdWRlICJub2Rlcy9wYXJzZW5vZGVzLmgiCiAjaW5jbHVk ZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9yZXNvd25lci5oIgogCiAKIC8q CkBAIC0yMzQsNiArMjM1LDE2IEBAIEV4ZWNHZXRKdW5rQXR0cmlidXRlKFR1cGxlVGFibGVTbG90 ICpzbG90LCBBdHRyTnVtYmVyIGF0dG5vLCBib29sICppc051bGwpCiAgKi8KIGV4dGVybiB2b2lk IEV4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOwogZXh0ZXJu IHZvaWQgc3RhbmRhcmRfRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVm bGFncyk7CisKK2V4dGVybiBFeGVjUHJlcCAqRXhlY3V0b3JQcmVwKFBsYW5uZWRTdG10ICpwc3Rt dCwKKwkJCQkJCQkgIFBhcmFtTGlzdEluZm8gcGFyYW1zLAorCQkJCQkJCSAgUmVzb3VyY2VPd25l ciBvd25lciwKKwkJCQkJCQkgIGJvb2wgZG9faW5pdGlhbF9wcnVuaW5nLAorCQkJCQkJCSAgaW50 IGVmbGFncyk7CitleHRlcm4gRXhlY1ByZXAgKkNyZWF0ZUV4ZWNQcmVwKEVTdGF0ZSAqZXN0YXRl LCBNZW1vcnlDb250ZXh0IGNvbnRleHQsCisJCQkJCQkJCWV4ZWNwcmVwX2NsZWFudXBfZm4gY2xl YW51cCwgdm9pZCAqY2xlYW51cF9hcmcpOworZXh0ZXJuIHZvaWQgRXhlY1ByZXBDbGVhbnVwKEV4 ZWNQcmVwICpwcmVwKTsKKwogZXh0ZXJuIHZvaWQgRXhlY3V0b3JSdW4oUXVlcnlEZXNjICpxdWVy eURlc2MsCiAJCQkJCQlTY2FuRGlyZWN0aW9uIGRpcmVjdGlvbiwgdWludDY0IGNvdW50KTsKIGV4 dGVybiB2b2lkIHN0YW5kYXJkX0V4ZWN1dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLApkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rl cy9leGVjbm9kZXMuaAppbmRleCAxOGFlOGYwZDRiYi4uOGJkZWNkNjMxYmYgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oCkBAIC03NzIsNiArNzcyLDU0IEBAIHR5cGVkZWYgc3RydWN0IEVTdGF0ZQogCUxp c3QJICAgKmVzX2luc2VydF9wZW5kaW5nX21vZGlmeXRhYmxlczsKIH0gRVN0YXRlOwogCisvKgor ICogRXhlY1ByZXA6IGVuY2Fwc3VsYXRlcyBleGVjdXRvciBwcmVwYXJhdGlvbiByZXN1bHRzIGZv ciBhIFBsYW5uZWRTdG10LgorICoKKyAqIEV4ZWN1dG9yUHJlcCgpIGZhY3RvcnMgb3V0IGV4ZWN1 dG9yIHNldHVwIHN0ZXBzIHN1Y2ggYXMgaW5pdGlhbGl6aW5nIHRoZQorICogcmFuZ2UgdGFibGUs IGNoZWNraW5nIHBlcm1pc3Npb25zLCBhbmQgZXhlY3V0aW5nIGluaXRpYWwgcGFydGl0aW9uIHBy dW5pbmcuCisgKiBFeGVjdXRvclN0YXJ0KCkgY2FuIHJldXNlIHRoZSBwcmVwYXJlZCBFU3RhdGUg aW5zdGVhZCBvZiByZXBlYXRpbmcgdGhhdAorICogd29yaywgYW5kIG90aGVyIGNhbGxlcnMgKHN1 Y2ggYXMgcGxhbiBjYWNoZSB2YWxpZGF0aW9uKSBjYW4gdXNlIGl0IHdpdGhvdXQKKyAqIHJ1bm5p bmcgdGhlIGZ1bGwgcGxhbi4KKyAqLworCisvKgorICogT3B0aW9uYWwgY2FsbGJhY2sgdG8gY2xl YW4gdXAgdXNlci1zcGVjaWZpYyByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoCisgKiBFeGVjUHJl cC4KKyAqLwordHlwZWRlZiB2b2lkICgqZXhlY3ByZXBfY2xlYW51cF9mbikodm9pZCAqcHJlcCk7 CisKK3R5cGVkZWYgc3RydWN0IEV4ZWNQcmVwCit7CisJLyoKKwkgKiBDb250ZXh0IGluIHdoaWNo IHRoaXMgc3RydWN0IGFuZCBhbGwgc3Vic2lkaWFyeSBhbGxvY2F0aW9ucyB3ZXJlIG1hZGUuCisJ ICogVGhpcyBjb250ZXh0IG11c3QgcmVtYWluIGFsaXZlIHVudGlsIEV4ZWNQcmVwQ2xlYW51cCBp cyBjYWxsZWQuCisJICovCisJTWVtb3J5Q29udGV4dCBjb250ZXh0OworCisJLyoKKwkgKiBQYXJ0 aWFsbHktaW5pdGlhbGl6ZWQgZXhlY3V0b3Igc3RhdGUgdXNlZCBmb3IgcGVybWlzc2lvbiBjaGVj a3MgYW5kCisJICogcHJ1bmluZy4gTWF5IGJlIGFkb3B0ZWQgZGlyZWN0bHkgYnkgRXhlY3V0b3JT dGFydCgpLCBpbiB3aGljaCBjYXNlCisJICogRXhlY1ByZXBDbGVhbnVwIHdpbGwgc2tpcCBmcmVl aW5nIGl0LgorCSAqLworCUVTdGF0ZQkgICAqcHJlcF9lc3RhdGU7CisKKwkvKgorCSAqIFRydWUg aWYgRXhlY1ByZXBDbGVhbnVwKCkgbXVzdCBmcmVlIHRoZSBFU3RhdGUuICBJZiB0aGUgZXhlY3V0 b3IgYWRvcHRzCisJICogcHJlcF9lc3RhdGUsIHRoaXMgaXMgc2V0IHRvIGZhbHNlIHRvIGF2b2lk IGRvdWJsZS1mcmVlLgorCSAqLworCWJvb2wJCW93bnNfZXN0YXRlOworCisJLyoKKwkgKiBPcHRp b25hbCBjYWxsZXItc3VwcGxpZWQgY2xlYW51cCBob29rIHRvIHJ1biBkdXJpbmcgRXhlY1ByZXBD bGVhbnVwLgorCSAqIFVzZWZ1bCBmb3IgcmVsZWFzaW5nIGV4dGVybmFsIHJlc291cmNlcyBhc3Nv Y2lhdGVkIHdpdGggdGhlIHByZXAuCisJICovCisJZXhlY3ByZXBfY2xlYW51cF9mbiBjbGVhbnVw OworCisJLyoKKwkgKiBPcGFxdWUgcG9pbnRlciB0byBwYXNzIHRvIHRoZSBjbGVhbnVwIGhvb2su CisJICovCisJdm9pZAkgICAqY2xlYW51cF9hcmc7Cit9IEV4ZWNQcmVwOwogCiAvKgogICogRXhl Y1Jvd01hcmsgLQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmggYi9zcmMv aW5jbHVkZS91dGlscy9wb3J0YWwuaAppbmRleCA1ZmZhNmZkNWNjOC4uMDEzYmNjM2JkOGUgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0 aWxzL3BvcnRhbC5oCkBAIC0xMzcsNiArMTM3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUG9ydGFsRGF0 YQogCUNvbW1hbmRUYWcJY29tbWFuZFRhZzsJCS8qIGNvbW1hbmQgdGFnIGZvciBvcmlnaW5hbCBx dWVyeSAqLwogCVF1ZXJ5Q29tcGxldGlvbiBxYzsJCQkvKiBjb21tYW5kIGNvbXBsZXRpb24gZGF0 YSBmb3IgZXhlY3V0ZWQgcXVlcnkgKi8KIAlMaXN0CSAgICpzdG10czsJCQkvKiBsaXN0IG9mIFBs YW5uZWRTdG10cyAqLworCUxpc3QJICAgKnByZXBzOwkJCS8qIGxpc3Qgb2YgRXhlY1ByZXBzIHdo ZXJlIG5lZWRlZCAqLwogCUNhY2hlZFBsYW4gKmNwbGFuOwkJCS8qIENhY2hlZFBsYW4sIGlmIHN0 bXRzIGFyZSBmcm9tIG9uZSAqLwogCiAJUGFyYW1MaXN0SW5mbyBwb3J0YWxQYXJhbXM7IC8qIHBh cmFtcyB0byBwYXNzIHRvIHF1ZXJ5ICovCkBAIC0yNDAsNiArMjQxLDcgQEAgZXh0ZXJuIHZvaWQg UG9ydGFsRGVmaW5lUXVlcnkoUG9ydGFsIHBvcnRhbCwKIAkJCQkJCQkgIGNvbnN0IGNoYXIgKnNv dXJjZVRleHQsCiAJCQkJCQkJICBDb21tYW5kVGFnIGNvbW1hbmRUYWcsCiAJCQkJCQkJICBMaXN0 ICpzdG10cywKKwkJCQkJCQkgIExpc3QgKnByZXBzLAogCQkJCQkJCSAgQ2FjaGVkUGxhbiAqY3Bs YW4pOwogZXh0ZXJuIFBsYW5uZWRTdG10ICpQb3J0YWxHZXRQcmltYXJ5U3RtdChQb3J0YWwgcG9y dGFsKTsKIGV4dGVybiB2b2lkIFBvcnRhbENyZWF0ZUhvbGRTdG9yZShQb3J0YWwgcG9ydGFsKTsK LS0gCjIuNDcuMwoK --000000000000c845e80644671a60 Content-Type: application/octet-stream; name="v4-0003-Reuse-partition-pruning-results-in-parallel-worke.patch" Content-Disposition: attachment; filename="v4-0003-Reuse-partition-pruning-results-in-parallel-worke.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_miebf87u3 RnJvbSA2OTViMmQ2MzBkMWUwODEyZGU5ZTNkMjI3YTU2ZmFkZjIxYThiNjFhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgMTEgTm92IDIwMjUgMjI6MTc6NDcgKzA5MDAKU3ViamVjdDogW1BBVENIIHY0 IDMvNl0gUmV1c2UgcGFydGl0aW9uIHBydW5pbmcgcmVzdWx0cyBpbiBwYXJhbGxlbCB3b3JrZXJz CgpQYXNzIHRoZSBsZWFkZXIncyBpbml0aWFsIHBhcnRpdGlvbiBwcnVuaW5nIHJlc3VsdHMgYW5k IHVucHJ1bmVkCnJlbGlkcyB0byBwYXJhbGxlbCB3b3JrZXJzIGFuZCByZXVzZSB0aGVtIHZpYSBF eGVjdXRvclByZXAoKS4gVGhpcwphdm9pZHMgcmVwZWF0aW5nIHBydW5pbmcgbG9naWMgaW4gd29y a2Vycywgd2hpY2ggaXMgbm90IG9ubHkKcmVkdW5kYW50IGJ1dCBhbHNvIHJpc2tzIGRpdmVyZ2Vu Y2UgZHVlIHRvIG5vbmRldGVybWluaXNtIGluIHBydW5pbmcKc3RlcHMgb3IgcGFyYW1ldGVyIGV2 YWx1YXRpb24gdGltaW5nLgoKSW50cm9kdWNlIEV4ZWNDaGVja0luaXRpYWxQcnVuaW5nUmVzdWx0 cygpIHRvIHZlcmlmeSB0aGF0IHRoZSByZXN1bHRzCm1hdGNoIHdoYXQgdGhlIHdvcmtlciB3b3Vs ZCBjb21wdXRlLiBUaGlzIGNoZWNrIGhlbHBzIGNhdGNoCmluY29uc2lzdGVuY2llcyBhY3Jvc3Mg bGVhZGVyIGFuZCB3b3JrZXIgcHJ1bmluZyBsb2dpYy4KCldoaWxlIHZhbHVhYmxlIG9uIGl0cyBv d24sIHRoaXMgY2hhbmdlIGFsc28gbGF5cyB0aGUgZm91bmRhdGlvbiBmb3IKZnV0dXJlIG9wdGlt aXphdGlvbnMgd2hlcmUgdGhlIGxlYWRlciBtYXkgdGFrZSBsb2NrcyBvbmx5IG9uCnN1cnZpdmlu ZyBwYXJ0aXRpb25zLiBFbnN1cmluZyB0aGF0IHdvcmtlcnMgZm9sbG93IGlkZW50aWNhbCBwcnVu aW5nCmRlY2lzaW9ucyBtYWtlcyBzdWNoIHNlbGVjdGl2ZSBsb2NraW5nIHNhZmUuCi0tLQogc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgIHwgNjcgKysrKysrKysrKysrKysrKysr KysrKysrKysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jIHwgMzUgKysr KysrKysrKysrKysrCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmggfCAgMSAr CiAzIGZpbGVzIGNoYW5nZWQsIDEwMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwppbmRleCBhZWRiZDk1NjZkNi4uNzUxNTkwYWRjYzkg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5j bHVkZSAicG9zdGdyZXMuaCIKIAogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5oIgor I2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCIKICNpbmNsdWRlICJleGVjdXRvci9l eGVjdXRvci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVBZ2cuaCIKICNpbmNsdWRlICJleGVj dXRvci9ub2RlQXBwZW5kLmgiCkBAIC02NSw2ICs2Niw4IEBACiAjZGVmaW5lIFBBUkFMTEVMX0tF WV9RVUVSWV9URVhUCQlVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAwMDAwMDgpCiAjZGVmaW5lIFBB UkFMTEVMX0tFWV9KSVRfSU5TVFJVTUVOVEFUSU9OIFVJTlQ2NENPTlNUKDB4RTAwMDAwMDAwMDAw MDAwOSkKICNkZWZpbmUgUEFSQUxMRUxfS0VZX1dBTF9VU0FHRQkJCVVJTlQ2NENPTlNUKDB4RTAw MDAwMDAwMDAwMDAwQSkKKyNkZWZpbmUgUEFSQUxMRUxfS0VZX1BBUlRJVElPTl9QUlVORV9SRVNV TFRTCVVJTlQ2NENPTlNUKDB4RTAwMDAwMDAwMDAwMDAwQikKKyNkZWZpbmUgUEFSQUxMRUxfS0VZ X1VOUFJVTkVEX1JFTElEUwlVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAwMDAwMEMpCiAKICNkZWZp bmUgUEFSQUxMRUxfVFVQTEVfUVVFVUVfU0laRQkJNjU1MzYKIApAQCAtNjA4LDEyICs2MTEsMTgg QEAgRXhlY0luaXRQYXJhbGxlbFBsYW4oUGxhblN0YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAqZXN0 YXRlLAogCUZpeGVkUGFyYWxsZWxFeGVjdXRvclN0YXRlICpmcGVzOwogCWNoYXIJICAgKnBzdG10 X2RhdGE7CiAJY2hhcgkgICAqcHN0bXRfc3BhY2U7CisJY2hhcgkgICAqcGFydF9wcnVuZV9yZXN1 bHRzX2RhdGE7CisJY2hhcgkgICAqcGFydF9wcnVuZV9yZXN1bHRzX3NwYWNlOworCWNoYXIJICAg KnVucHJ1bmVkX3JlbGlkc19kYXRhOworCWNoYXIJICAgKnVucHJ1bmVkX3JlbGlkc19zcGFjZTsK IAljaGFyCSAgICpwYXJhbWxpc3RpbmZvX3NwYWNlOwogCUJ1ZmZlclVzYWdlICpidWZ1c2FnZV9z cGFjZTsKIAlXYWxVc2FnZSAgICp3YWx1c2FnZV9zcGFjZTsKIAlTaGFyZWRFeGVjdXRvckluc3Ry dW1lbnRhdGlvbiAqaW5zdHJ1bWVudGF0aW9uID0gTlVMTDsKIAlTaGFyZWRKaXRJbnN0cnVtZW50 YXRpb24gKmppdF9pbnN0cnVtZW50YXRpb24gPSBOVUxMOwogCWludAkJCXBzdG10X2xlbjsKKwlp bnQJCQlwYXJ0X3BydW5lX3Jlc3VsdHNfbGVuOworCWludAkJCXVucHJ1bmVkX3JlbGlkc19sZW47 CiAJaW50CQkJcGFyYW1saXN0aW5mb19sZW47CiAJaW50CQkJaW5zdHJ1bWVudGF0aW9uX2xlbiA9 IDA7CiAJaW50CQkJaml0X2luc3RydW1lbnRhdGlvbl9sZW4gPSAwOwpAQCAtNjQyLDYgKzY1MSw4 IEBAIEV4ZWNJbml0UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVz dGF0ZSwKIAogCS8qIEZpeCB1cCBhbmQgc2VyaWFsaXplIHBsYW4gdG8gYmUgc2VudCB0byB3b3Jr ZXJzLiAqLwogCXBzdG10X2RhdGEgPSBFeGVjU2VyaWFsaXplUGxhbihwbGFuc3RhdGUtPnBsYW4s IGVzdGF0ZSk7CisJcGFydF9wcnVuZV9yZXN1bHRzX2RhdGEgPSBub2RlVG9TdHJpbmcoZXN0YXRl LT5lc19wYXJ0X3BydW5lX3Jlc3VsdHMpOworCXVucHJ1bmVkX3JlbGlkc19kYXRhID0gbm9kZVRv U3RyaW5nKGVzdGF0ZS0+ZXNfdW5wcnVuZWRfcmVsaWRzKTsKIAogCS8qIENyZWF0ZSBhIHBhcmFs bGVsIGNvbnRleHQuICovCiAJcGN4dCA9IENyZWF0ZVBhcmFsbGVsQ29udGV4dCgicG9zdGdyZXMi LCAiUGFyYWxsZWxRdWVyeU1haW4iLCBud29ya2Vycyk7CkBAIC02NjgsNiArNjc5LDE2IEBAIEV4 ZWNJbml0UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwK IAlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsIHBzdG10X2xlbik7CiAJ c2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEpOwogCisJLyogRXN0aW1h dGUgc3BhY2UgZm9yIHNlcmlhbGl6ZWQgcGFydF9wcnVuZV9yZXN1bHRzLiAqLworCXBhcnRfcHJ1 bmVfcmVzdWx0c19sZW4gPSBzdHJsZW4ocGFydF9wcnVuZV9yZXN1bHRzX2RhdGEpICsgMTsKKwlz aG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsIHBhcnRfcHJ1bmVfcmVzdWx0 c19sZW4pOworCXNobV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAxKTsKKwor CS8qIEVzdGltYXRlIHNwYWNlIGZvciBzZXJpYWxpemVkIHVucHJ1bmVkX3JlbGlkcy4gKi8KKwl1 bnBydW5lZF9yZWxpZHNfbGVuID0gc3RybGVuKHVucHJ1bmVkX3JlbGlkc19kYXRhKSArIDE7CisJ c2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLCB1bnBydW5lZF9yZWxpZHNf bGVuKTsKKwlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVzdGltYXRvciwgMSk7CisKIAkv KiBFc3RpbWF0ZSBzcGFjZSBmb3Igc2VyaWFsaXplZCBQYXJhbUxpc3RJbmZvLiAqLwogCXBhcmFt bGlzdGluZm9fbGVuID0gRXN0aW1hdGVQYXJhbUxpc3RTcGFjZShlc3RhdGUtPmVzX3BhcmFtX2xp c3RfaW5mbyk7CiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBwYXJh bWxpc3RpbmZvX2xlbik7CkBAIC03NjksNiArNzkwLDE2IEBAIEV4ZWNJbml0UGFyYWxsZWxQbGFu KFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwKIAltZW1jcHkocHN0bXRfc3Bh Y2UsIHBzdG10X2RhdGEsIHBzdG10X2xlbik7CiAJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBQ QVJBTExFTF9LRVlfUExBTk5FRFNUTVQsIHBzdG10X3NwYWNlKTsKIAorCS8qIFN0b3JlIHNlcmlh bGl6ZWQgcGFydF9wcnVuZV9yZXN1bHRzICovCisJcGFydF9wcnVuZV9yZXN1bHRzX3NwYWNlID0g c2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsIHBhcnRfcHJ1bmVfcmVzdWx0c19sZW4pOworCW1l bWNweShwYXJ0X3BydW5lX3Jlc3VsdHNfc3BhY2UsIHBhcnRfcHJ1bmVfcmVzdWx0c19kYXRhLCBw YXJ0X3BydW5lX3Jlc3VsdHNfbGVuKTsKKwlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFM TEVMX0tFWV9QQVJUSVRJT05fUFJVTkVfUkVTVUxUUywgcGFydF9wcnVuZV9yZXN1bHRzX3NwYWNl KTsKKworCS8qIFN0b3JlIHNlcmlhbGl6ZWQgdW5wcnVuZWRfcmVsaWRzICovCisJdW5wcnVuZWRf cmVsaWRzX3NwYWNlID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsIHVucHJ1bmVkX3JlbGlk c19sZW4pOworCW1lbWNweSh1bnBydW5lZF9yZWxpZHNfc3BhY2UsIHVucHJ1bmVkX3JlbGlkc19k YXRhLCB1bnBydW5lZF9yZWxpZHNfbGVuKTsKKwlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBB UkFMTEVMX0tFWV9VTlBSVU5FRF9SRUxJRFMsIHVucHJ1bmVkX3JlbGlkc19zcGFjZSk7CisKIAkv KiBTdG9yZSBzZXJpYWxpemVkIFBhcmFtTGlzdEluZm8uICovCiAJcGFyYW1saXN0aW5mb19zcGFj ZSA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLCBwYXJhbWxpc3RpbmZvX2xlbik7CiAJc2ht X3RvY19pbnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfUEFSQU1MSVNUSU5GTywgcGFyYW1s aXN0aW5mb19zcGFjZSk7CkBAIC0xMjYzLDEwICsxMjk0LDE1IEBAIEV4ZWNQYXJhbGxlbEdldFF1 ZXJ5RGVzYyhzaG1fdG9jICp0b2MsIERlc3RSZWNlaXZlciAqcmVjZWl2ZXIsCiAJCQkJCQkgaW50 IGluc3RydW1lbnRfb3B0aW9ucykKIHsKIAljaGFyCSAgICpwc3RtdHNwYWNlOworCWNoYXIJICAg KnBhcnRfcHJ1bmVfcmVzdWx0c19zcGFjZTsKKwljaGFyCSAgICp1bnBydW5lZF9yZWxpZHNfc3Bh Y2U7CiAJY2hhcgkgICAqcGFyYW1zcGFjZTsKIAlQbGFubmVkU3RtdCAqcHN0bXQ7CisJTGlzdAkg ICAqcGFydF9wcnVuZV9yZXN1bHRzOworCUJpdG1hcHNldCAgKnVucHJ1bmVkX3JlbGlkczsKIAlQ YXJhbUxpc3RJbmZvIHBhcmFtTEk7CiAJY2hhcgkgICAqcXVlcnlTdHJpbmc7CisJRXhlY1ByZXAg ICAqcHJlcCA9IE5VTEw7CiAKIAkvKiBHZXQgdGhlIHF1ZXJ5IHN0cmluZyBmcm9tIHNoYXJlZCBt ZW1vcnkgKi8KIAlxdWVyeVN0cmluZyA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZ X1FVRVJZX1RFWFQsIGZhbHNlKTsKQEAgLTEyNzksOSArMTMxNSwzOCBAQCBFeGVjUGFyYWxsZWxH ZXRRdWVyeURlc2Moc2htX3RvYyAqdG9jLCBEZXN0UmVjZWl2ZXIgKnJlY2VpdmVyLAogCXBhcmFt c3BhY2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9QQVJBTUxJU1RJTkZPLCBm YWxzZSk7CiAJcGFyYW1MSSA9IFJlc3RvcmVQYXJhbUxpc3QoJnBhcmFtc3BhY2UpOwogCisJLyog UmVjb25zdHJ1Y3QgbGVhZGVyLXN1cHBsaWVkIHBhcnRfcHJ1bmVfcmVzdWx0cyBhbmQgdW5wcnVu ZWRfcmVsaWRzLiAqLworCXBhcnRfcHJ1bmVfcmVzdWx0c19zcGFjZSA9CisJCXNobV90b2NfbG9v a3VwKHRvYywgUEFSQUxMRUxfS0VZX1BBUlRJVElPTl9QUlVORV9SRVNVTFRTLCBmYWxzZSk7CisJ cGFydF9wcnVuZV9yZXN1bHRzID0gKExpc3QgKikgc3RyaW5nVG9Ob2RlKHBhcnRfcHJ1bmVfcmVz dWx0c19zcGFjZSk7CisJdW5wcnVuZWRfcmVsaWRzX3NwYWNlID0KKwkJc2htX3RvY19sb29rdXAo dG9jLCBQQVJBTExFTF9LRVlfVU5QUlVORURfUkVMSURTLCBmYWxzZSk7CisJdW5wcnVuZWRfcmVs aWRzID0gKEJpdG1hcHNldCAqKSBzdHJpbmdUb05vZGUodW5wcnVuZWRfcmVsaWRzX3NwYWNlKTsK KworCS8qCisJICogSWYgcHJ1bmluZyB3YXMgZG9uZSBpbiB0aGUgbGVhZGVyLCBidWlsZCBhIHBy ZXAgZXN0YXRlIGluIHRoZSB3b3JrZXIKKwkgKiBhbmQgaW5qZWN0IHRoZSBsZWFkZXIncyBwcnVu aW5nIHJlc3VsdHMgaW50byBpdCBmb3IgcmV1c2UuCisJICovCisJaWYgKHBzdG10LT5wYXJ0UHJ1 bmVJbmZvcykKKwl7CisJCXByZXAgPSBFeGVjdXRvclByZXAocHN0bXQsIHBhcmFtTEksIEN1cnJl bnRSZXNvdXJjZU93bmVyLCBmYWxzZSwgMCk7CisJCUFzc2VydChwcmVwLT5wcmVwX2VzdGF0ZSk7 CisKKwkJcHJlcC0+cHJlcF9lc3RhdGUtPmVzX3BhcnRfcHJ1bmVfcmVzdWx0cyA9IHBhcnRfcHJ1 bmVfcmVzdWx0czsKKwkJcHJlcC0+cHJlcF9lc3RhdGUtPmVzX3VucHJ1bmVkX3JlbGlkcyA9CisJ CQlibXNfYWRkX21lbWJlcnMocHJlcC0+cHJlcF9lc3RhdGUtPmVzX3VucHJ1bmVkX3JlbGlkcywK KwkJCQkJCQl1bnBydW5lZF9yZWxpZHMpOworCisJCS8qCisJCSAqIFZlcmlmeSB0aGF0IHRoZSBw cnVuaW5nIHJlc3VsdHMgcGFzc2VkIGZyb20gdGhlIGxlYWRlciBtYXRjaAorCQkgKiB3aGF0IHRo ZSB3b3JrZXIgd291bGQgaW5kZXBlbmRlbnRseSBjb21wdXRlLgorCQkgKi8KKwkJRXhlY0NoZWNr SW5pdGlhbFBydW5pbmdSZXN1bHRzKHByZXAtPnByZXBfZXN0YXRlKTsKKwl9CisKIAkvKiBDcmVh dGUgYSBRdWVyeURlc2MgZm9yIHRoZSBxdWVyeS4gKi8KIAlyZXR1cm4gQ3JlYXRlUXVlcnlEZXNj KHBzdG10LAotCQkJCQkJICAgTlVMTCwKKwkJCQkJCSAgIHByZXAsCiAJCQkJCQkgICBxdWVyeVN0 cmluZywKIAkJCQkJCSAgIEdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJ CQkJCSAgIHJlY2VpdmVyLCBwYXJhbUxJLCBOVUxMLCBpbnN0cnVtZW50X29wdGlvbnMpOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCmluZGV4IGFjNWUyZWJlZTcyLi5kYzRlYWM4YTBh NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwpAQCAtMTg3Myw2ICsxODczLDQx IEBAIEV4ZWNEb0luaXRpYWxQcnVuaW5nKEVTdGF0ZSAqZXN0YXRlKQogCX0KIH0KIAorLyoKKyAq IEV4ZWNDaGVja0luaXRpYWxQcnVuaW5nUmVzdWx0cworICogICAgICBWZXJpZnkgcGFydGl0aW9u IHBydW5pbmcgcmVzdWx0cyBwYXNzZWQgZnJvbSB0aGUgbGVhZGVyIHByb2Nlc3MuCisgKgorICog VGhpcyBpcyBpbnRlbmRlZCB0byBiZSBjYWxsZWQgZHVyaW5nIHBhcmFsbGVsIHdvcmtlciBxdWVy eSBzZXR1cC4KKyAqIEl0IHJlY29tcHV0ZXMgaW5pdGlhbCBwcnVuaW5nIHJlc3VsdHMgbG9jYWxs eSBhbmQgY29tcGFyZXMgdGhlbSB3aXRoCisgKiB0aG9zZSByZWNlaXZlZCBmcm9tIHRoZSBsZWFk ZXIuIEFueSBtaXNtYXRjaCBtYXkgaW5kaWNhdGUgYSBkaXZlcmdlbmNlCisgKiBiZXR3ZWVuIGxl YWRlciBhbmQgd29ya2VyIGxvZ2ljIG9yIGVudmlyb25tZW50LgorICovCit2b2lkCitFeGVjQ2hl Y2tJbml0aWFsUHJ1bmluZ1Jlc3VsdHMoRVN0YXRlICplc3RhdGUpCit7CisJTGlzdENlbGwgICAq bGM7CisJaW50CQkJaTsKKworCUFzc2VydChlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfcmVzdWx0cyAh PSBOVUxMKTsKKwlpID0gMDsKKwlmb3JlYWNoKGxjLCBlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfc3Rh dGVzKQorCXsKKwkJUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSA9IChQYXJ0aXRpb25Q cnVuZVN0YXRlICopIGxmaXJzdChsYyk7CisJCUJpdG1hcHNldCAqcmV1c2VfdmFsaWRzdWJwbGFu cyA9CisJCQkJbGlzdF9udGhfbm9kZShCaXRtYXBzZXQsIGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9y ZXN1bHRzLCBpKTsKKwkJQml0bWFwc2V0ICAqdmFsaWRzdWJwbGFucyA9IE5VTEw7CisJCUJpdG1h cHNldCAgKnZhbGlkc3VicGxhbl9ydGlzID0gTlVMTDsKKworCQlpZiAocHJ1bmVzdGF0ZS0+ZG9f aW5pdGlhbF9wcnVuZSkKKwkJCXZhbGlkc3VicGxhbnMgPSBFeGVjRmluZE1hdGNoaW5nU3ViUGxh bnMocHJ1bmVzdGF0ZSwgdHJ1ZSwKKwkJCQkJCQkJCQkJCQkgJnZhbGlkc3VicGxhbl9ydGlzKTsK KwkJaWYgKGJtc19ub25lbXB0eV9kaWZmZXJlbmNlKHZhbGlkc3VicGxhbnMsIHJldXNlX3ZhbGlk c3VicGxhbnMpKQorCQkJZWxvZyhFUlJPUiwgImRpZmZlcmVudCB2YWxpZHN1YnBsbnMgaW4gcGFy YWxsZWwgd29ya2VyIik7CisJCWlmIChibXNfbm9uZW1wdHlfZGlmZmVyZW5jZSh2YWxpZHN1YnBs YW5fcnRpcywgZXN0YXRlLT5lc191bnBydW5lZF9yZWxpZHMpKQorCQkJZWxvZyhFUlJPUiwgImRp ZmZlcmVudCB1bnBydW5hYmxlX3JlbGlkcyBpbiBwYXJhbGxlbCB3b3JrZXIiKTsKKwl9Cit9CisK IC8qCiAgKiBFeGVjSW5pdFBhcnRpdGlvbkV4ZWNQcnVuaW5nCiAgKgkJSW5pdGlhbGl6ZSB0aGUg ZGF0YSBzdHJ1Y3R1cmVzIG5lZWRlZCBmb3IgcnVudGltZSAiZXhlYyIgcGFydGl0aW9uCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmggYi9zcmMvaW5jbHVk ZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgKaW5kZXggYmE4Y2M1OTRmYzkuLjEyNmVmZDAwOGU1 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgKKysrIGIv c3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oCkBAIC0xMzIsNiArMTMyLDcgQEAg dHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uUHJ1bmVTdGF0ZQogCiBleHRlcm4gdm9pZCBFeGVjQ3Jl YXRlUGFydGl0aW9uUHJ1bmVTdGF0ZXMoRVN0YXRlICplc3RhdGUpOwogZXh0ZXJuIHZvaWQgRXhl Y0RvSW5pdGlhbFBydW5pbmcoRVN0YXRlICplc3RhdGUpOworZXh0ZXJuIHZvaWQgRXhlY0NoZWNr SW5pdGlhbFBydW5pbmdSZXN1bHRzKEVTdGF0ZSAqZXN0YXRlKTsKIGV4dGVybiBQYXJ0aXRpb25Q cnVuZVN0YXRlICpFeGVjSW5pdFBhcnRpdGlvbkV4ZWNQcnVuaW5nKFBsYW5TdGF0ZSAqcGxhbnN0 YXRlLAogCQkJCQkJCQkJCQkJCQkgaW50IG5fdG90YWxfc3VicGxhbnMsCiAJCQkJCQkJCQkJCQkJ CSBpbnQgcGFydF9wcnVuZV9pbmRleCwKLS0gCjIuNDcuMwoK --000000000000c845e80644671a60 Content-Type: application/octet-stream; name="v4-0006-Make-SQL-function-executor-track-ExecutorPrep-sta.patch" Content-Disposition: attachment; filename="v4-0006-Make-SQL-function-executor-track-ExecutorPrep-sta.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_miebf87d0 RnJvbSA1ZGM5MGNlNTRjNzEwOGQ1MzM1MDAzZGE0ZjI0N2E2NTgwM2U0MmU3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IE1vbiwgMTcgTm92IDIwMjUgMTc6NDA6MjYgKzA5MDAKU3ViamVjdDogW1BBVENIIHY0 IDYvNl0gTWFrZSBTUUwgZnVuY3Rpb24gZXhlY3V0b3IgdHJhY2sgRXhlY3V0b3JQcmVwIHN0YXRl CgpFeHRlbmQgdGhlIFNRTCBmdW5jdGlvbiBleGVjdXRvciB0byB1c2UgdGhlIEV4ZWN1dG9yUHJl cCByZXN1bHRzCnJldHVybmVkIGJ5IEdldENhY2hlZFBsYW4oKS4gIGluaXRfZXhlY3V0aW9uX3N0 YXRlKCkgbm93IHBhc3NlcyBhCkNhY2hlZFBsYW5QcmVwRGF0YSB0byBHZXRDYWNoZWRQbGFuKCkg YW5kIHN0b3JlcyB0aGUgcGVyIHN0YXRlbWVudApFeGVjUHJlcCBwb2ludGVycyBpbiB0aGUgZXhl Y3V0aW9uX3N0YXRlIG5vZGVzLgoKQXQgZXhlY3V0aW9uIHRpbWUsIHBvc3RxdWVsX3N0YXJ0KCkg cmVwYXJlbnRzIHRoZSBwcmVwIGVzdGF0ZSdzCmVzX3F1ZXJ5X2N4dCB1bmRlciB0aGUgZnVuY3Rp b24ncyBzdWJjb250ZXh0IHNvIHRoYXQgcHJlcCBzdGF0ZQpmb2xsb3dzIHRoZSB1c3VhbCBwZXIg Y2FsbCBjb250ZXh0IGhpZXJhcmNoeS4KClRoaXMgYWxsb3dzIFNRTCBsYW5ndWFnZSBmdW5jdGlv bnMgdG8gcGFydGljaXBhdGUgaW4gdGhlIHNhbWUKRXhlY3V0b3JQcmVwIG1hY2hpbmVyeSBhcyBv dGhlciBwbGFuIGNhY2hlIHVzZXJzLCB3aGljaCBhIGxhdGVyCnBhdGNoIHdpbGwgdXNlIHRvIHN1 cHBvcnQgcHJ1bmluZyBhd2FyZSBsb2NraW5nLgoKQWRkIGEgcmVncmVzc2lvbiB0ZXN0IHdoZXJl IHJ1bGUgcmV3cml0ZSBleHBhbmRzIGEgc2luZ2xlIFVQREFURQppbnRvIG11bHRpcGxlIFBsYW5u ZWRTdG10cywgZXhlcmNpc2luZyB0aGUgU1FMIGZ1bmN0aW9uIHBsYW4gY2FjaGUKYW5kIHRoZSBn ZW5lcmljIHBsYW4gcmV1c2UgcGF0aCB0aGF0IG5vdyBpbnZva2VzIEV4ZWN1dG9yUHJlcC4KLS0t CiBzcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYyAgICAgICAgfCAzMiArKysrKysrKysr KysrKysrKysrKysrKy0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BsYW5jYWNoZS5vdXQg fCAzMCArKysrKysrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGxhbmNh Y2hlLnNxbCAgICAgIHwgMjcgKysrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQs IDg3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMu YwppbmRleCBkODE3MThlYTg0ZS4uZWQ3MzUyZmNlNjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9u cy5jCkBAIC03Miw2ICs3Miw3IEBAIHR5cGVkZWYgc3RydWN0IGV4ZWN1dGlvbl9zdGF0ZQogCWJv b2wJCXNldHNSZXN1bHQ7CQkvKiB0cnVlIGlmIHRoaXMgcXVlcnkgcHJvZHVjZXMgZnVuYydzIHJl c3VsdCAqLwogCWJvb2wJCWxhenlFdmFsOwkJLyogdHJ1ZSBpZiBzaG91bGQgZmV0Y2ggb25lIHJv dyBhdCBhIHRpbWUgKi8KIAlQbGFubmVkU3RtdCAqc3RtdDsJCQkvKiBwbGFuIGZvciB0aGlzIHF1 ZXJ5ICovCisJRXhlY1ByZXAgICAqcHJlcDsJCQkvKiBFeGVjdXRvclByZXAoKSBvdXRwdXQgZm9y IHRoaXMgcGxhbiAqLwogCVF1ZXJ5RGVzYyAgKnFkOwkJCQkvKiBudWxsIHVubGVzcyBzdGF0dXMg PT0gUlVOICovCiB9IGV4ZWN1dGlvbl9zdGF0ZTsKIApAQCAtNjU3LDYgKzY1OCw4IEBAIGluaXRf ZXhlY3V0aW9uX3N0YXRlKFNRTEZ1bmN0aW9uQ2FjaGVQdHIgZmNhY2hlKQogCWV4ZWN1dGlvbl9z dGF0ZSAqbGFzdHRhZ2VzID0gTlVMTDsKIAlpbnQJCQluc3RtdHM7CiAJTGlzdENlbGwgICAqbGM7 CisJQ2FjaGVkUGxhblByZXBEYXRhIGNwcmVwID0gezB9OworCWludAkJCWk7CiAKIAkvKgogCSAq IENsZWFuIHVwIGFmdGVyIHByZXZpb3VzIHF1ZXJ5LCBpZiB0aGVyZSB3YXMgb25lLgpAQCAtNjk1 LDExICs2OTgsMjAgQEAgaW5pdF9leGVjdXRpb25fc3RhdGUoU1FMRnVuY3Rpb25DYWNoZVB0ciBm Y2FjaGUpCiAJICogQ3VycmVudFJlc291cmNlT3duZXIgd2lsbCBiZSB0aGUgc2FtZSB3aGVuIFNo dXRkb3duU1FMRnVuY3Rpb24gcnVucy4pCiAJICovCiAJZmNhY2hlLT5jb3duZXIgPSBDdXJyZW50 UmVzb3VyY2VPd25lcjsKKworCS8qCisJICogSGF2ZSBFeGVjdXRvclByZXAoKSBhbGxvY2F0ZSB1 bmRlciBmY2FjaGUtPmZjb250ZXh0LiAgVGhlIHByZXAKKwkgKiBFU3RhdGVzIGl0IGNyZWF0ZXMg d2lsbCBpbml0aWFsbHkgbGl2ZSB0aGVyZTsgcG9zdHF1ZWxfc3RhcnQoKQorCSAqIHdpbGwgbGF0 ZXIgcmVwYXJlbnQgdGhlaXIgZXNfcXVlcnlfY3h0IGludG8gZmNhY2hlLT5zdWJjb250ZXh0CisJ ICogd2hlbiB1c2luZyB0aGVtIGZvciBleGVjdXRpb24uCisJICovCisJY3ByZXAuY29udGV4dCA9 IGZjYWNoZS0+ZmNvbnRleHQ7CisJY3ByZXAub3duZXIgPSBmY2FjaGUtPmNvd25lcjsKIAlmY2Fj aGUtPmNwbGFuID0gR2V0Q2FjaGVkUGxhbihwbGFuc291cmNlLAogCQkJCQkJCQkgIGZjYWNoZS0+ cGFyYW1MSSwKIAkJCQkJCQkJICBmY2FjaGUtPmNvd25lciwKIAkJCQkJCQkJICBOVUxMLAotCQkJ CQkJCQkgIE5VTEwpOworCQkJCQkJCQkgICZjcHJlcCk7CiAKIAkvKgogCSAqIElmIG5lY2Vzc2Fy eSwgbWFrZSBlc2FycmF5W10gYmlnZ2VyIHRvIGhvbGQgdGhlIG5lZWRlZCBzdGF0ZS4KQEAgLTcy MCw5ICs3MzIsMTIgQEAgaW5pdF9leGVjdXRpb25fc3RhdGUoU1FMRnVuY3Rpb25DYWNoZVB0ciBm Y2FjaGUpCiAJLyoKIAkgKiBCdWlsZCBleGVjdXRpb25fc3RhdGUgbGlzdCB0byBtYXRjaCB0aGUg bnVtYmVyIG9mIGNvbnRhaW5lZCBwbGFucy4KIAkgKi8KKwlpID0gMDsKIAlmb3JlYWNoKGxjLCBm Y2FjaGUtPmNwbGFuLT5zdG10X2xpc3QpCiAJewogCQlQbGFubmVkU3RtdCAqc3RtdCA9IGxmaXJz dF9ub2RlKFBsYW5uZWRTdG10LCBsYyk7CisJCUV4ZWNQcmVwICpwcmVwID0gY3ByZXAucHJlcF9s aXN0ID8gbGlzdF9udGgoY3ByZXAucHJlcF9saXN0LCBpKyspIDoKKwkJCU5VTEw7CiAJCWV4ZWN1 dGlvbl9zdGF0ZSAqbmV3ZXM7CiAKIAkJLyoKQEAgLTc2NCw2ICs3NzksNyBAQCBpbml0X2V4ZWN1 dGlvbl9zdGF0ZShTUUxGdW5jdGlvbkNhY2hlUHRyIGZjYWNoZSkKIAkJbmV3ZXMtPnNldHNSZXN1 bHQgPSBmYWxzZTsJLyogbWlnaHQgY2hhbmdlIGJlbG93ICovCiAJCW5ld2VzLT5sYXp5RXZhbCA9 IGZhbHNlOwkvKiBtaWdodCBjaGFuZ2UgYmVsb3cgKi8KIAkJbmV3ZXMtPnN0bXQgPSBzdG10Owor CQluZXdlcy0+cHJlcCA9IHByZXA7CiAJCW5ld2VzLT5xZCA9IE5VTEw7CiAKIAkJaWYgKHN0bXQt PmNhblNldFRhZykKQEAgLTEzNjIsOCArMTM3OCwyMCBAQCBwb3N0cXVlbF9zdGFydChleGVjdXRp b25fc3RhdGUgKmVzLCBTUUxGdW5jdGlvbkNhY2hlUHRyIGZjYWNoZSkKIAllbHNlCiAJCWRlc3Qg PSBOb25lX1JlY2VpdmVyOwogCisJaWYgKGVzLT5wcmVwKQorCXsKKwkJLyoKKwkJICogUHJlcCBF U3RhdGVzIHdlcmUgYnVpbHQgdW5kZXIgZmNhY2hlLT5mY29udGV4dC4gIEZvciBleGVjdXRpb24s CisJCSAqIG1ha2UgdGhlaXIgZXNfcXVlcnlfY3h0IGEgY2hpbGQgb2YgZmNhY2hlLT5zdWJjb250 ZXh0IHNvIHRoZXkKKwkJICogZm9sbG93IHRoZSB1c3VhbCBwZXIgY2FsbCBsaWZldGltZS4KKwkJ ICovCisJCUVTdGF0ZSAqcHJlcF9lc3RhdGUgPSBlcy0+cHJlcC0+cHJlcF9lc3RhdGU7CisKKwkJ TWVtb3J5Q29udGV4dFNldFBhcmVudChwcmVwX2VzdGF0ZS0+ZXNfcXVlcnlfY3h0LCBmY2FjaGUt PnN1YmNvbnRleHQpOworCX0KKwogCWVzLT5xZCA9IENyZWF0ZVF1ZXJ5RGVzYyhlcy0+c3RtdCwK LQkJCQkJCQkgTlVMTCwKKwkJCQkJCQkgZXMtPnByZXAsCiAJCQkJCQkJIGZjYWNoZS0+ZnVuYy0+ c3JjLAogCQkJCQkJCSBHZXRBY3RpdmVTbmFwc2hvdCgpLAogCQkJCQkJCSBJbnZhbGlkU25hcHNo b3QsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BsYW5jYWNoZS5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BsYW5jYWNoZS5vdXQKaW5kZXggMjZjNGM1ZTEw ZmQuLmJmOTM3MzY0NzE2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Bs YW5jYWNoZS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wbGFuY2FjaGUub3V0 CkBAIC00NTgsNCArNDU4LDM0IEBAIE5PVElDRTogIGNyZWF0aW5nIGluZGV4IG9uIHBhcnRpdGlv biBpbnZhbF9kdXJpbmdfcHJ1bmluZ19wMQogCiBkcm9wIHRhYmxlIGludmFsX2R1cmluZ19wcnVu aW5nX3AsIGludmFsX2R1cmluZ19wcnVuaW5nX3NpZ25hbDsKIGRyb3AgZnVuY3Rpb24gaW52YWxp ZGF0ZV9wbGFuY2FjaGVfZnVuYywgc3RhYmxlX3BydW5pbmdfdmFsOworLS0gZXhlcmNpc2Ugc3Fs LWZ1bmN0aW9uIHBsYW4gY2FjaGUgd2hlbiByZXdyaXRlIGV4cGFuZHMgYSBzaW5nbGUgc3RhdGVt ZW50CistLSBpbnRvIG11bHRpcGxlIHBsYW5uZWQgc3RhdGVtZW50cy4gdGhpcyBmb3JjZXMgY2Fj aGVkcGxhbi0+c3RtdF9saXN0IHRvCistLSBjb250YWluIG1vcmUgdGhhbiBvbmUgZW50cnkgYW5k IGNoZWNrcyB0aGF0IGV4ZWN1dG9yIHN0YXRlIGZvciB0aGUgZmlyc3QKKy0tIHJld3JpdHRlbiBz dGF0ZW1lbnQgZG9lcyBub3QgZGVzdHJveSBzdGF0ZSBuZWVkZWQgYnkgdGhlIHNlY29uZCBvbmUu CitzZXQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOworY3JlYXRlIHRhYmxl IHNxbGZfYmFzZShpZCBpbnQsIHZhbCBpbnQpOworY3JlYXRlIHRhYmxlIHNxbGZfbG9nKGlkIGlu dCwgbm90ZSB0ZXh0KTsKK2luc2VydCBpbnRvIHNxbGZfYmFzZSB2YWx1ZXMgKDEsIDEwKTsKK2Ny ZWF0ZSBydWxlIHNxbGZfYmFzZV91cGRfbG9nIGFzCitvbiB1cGRhdGUgdG8gc3FsZl9iYXNlIGRv IGFsc28KKyAgICBpbnNlcnQgaW50byBzcWxmX2xvZyhpZCwgbm90ZSkKKyAgICB2YWx1ZXMgKG5l dy5pZCwgJ2xvZ2dlZCBieSBydWxlJyk7CitjcmVhdGUgb3IgcmVwbGFjZSBmdW5jdGlvbiBzcWxm X2V4ZWNwcmVwX3Rlc3QoYSBpbnQsIHYgaW50KQorcmV0dXJucyB2b2lkCitsYW5ndWFnZSBzcWwK K2FzICQkCisgICAgdXBkYXRlIHNxbGZfYmFzZSBzZXQgdmFsID0gdiB3aGVyZSBpZCA9IGE7Cisk JDsKK3NlbGVjdCBzcWxmX2V4ZWNwcmVwX3Rlc3QoMSwgMjApOworIHNxbGZfZXhlY3ByZXBfdGVz dCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBzcWxmX2V4ZWNw cmVwX3Rlc3QoMSwgMzApOworIHNxbGZfZXhlY3ByZXBfdGVzdCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKIHJlc2V0IHBsYW5fY2FjaGVfbW9kZTsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3BsYW5jYWNoZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9w bGFuY2FjaGUuc3FsCmluZGV4IGNjN2ViNGRhNGQzLi43MTMyMDc5OTA0MCAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvcGxhbmNhY2hlLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9wbGFuY2FjaGUuc3FsCkBAIC0yNzIsNCArMjcyLDMxIEBAIGV4cGxhaW4gKHZlcmJvc2Us IGNvc3RzIG9mZikgZXhlY3V0ZSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19xOwogZHJvcCB0YWJsZSBp bnZhbF9kdXJpbmdfcHJ1bmluZ19wLCBpbnZhbF9kdXJpbmdfcHJ1bmluZ19zaWduYWw7CiBkcm9w IGZ1bmN0aW9uIGludmFsaWRhdGVfcGxhbmNhY2hlX2Z1bmMsIHN0YWJsZV9wcnVuaW5nX3ZhbDsK IAorLS0gZXhlcmNpc2Ugc3FsLWZ1bmN0aW9uIHBsYW4gY2FjaGUgd2hlbiByZXdyaXRlIGV4cGFu ZHMgYSBzaW5nbGUgc3RhdGVtZW50CistLSBpbnRvIG11bHRpcGxlIHBsYW5uZWQgc3RhdGVtZW50 cy4gdGhpcyBmb3JjZXMgY2FjaGVkcGxhbi0+c3RtdF9saXN0IHRvCistLSBjb250YWluIG1vcmUg dGhhbiBvbmUgZW50cnkgYW5kIGNoZWNrcyB0aGF0IGV4ZWN1dG9yIHN0YXRlIGZvciB0aGUgZmly c3QKKy0tIHJld3JpdHRlbiBzdGF0ZW1lbnQgZG9lcyBub3QgZGVzdHJveSBzdGF0ZSBuZWVkZWQg YnkgdGhlIHNlY29uZCBvbmUuCisKK3NldCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmlj X3BsYW47CisKK2NyZWF0ZSB0YWJsZSBzcWxmX2Jhc2UoaWQgaW50LCB2YWwgaW50KTsKK2NyZWF0 ZSB0YWJsZSBzcWxmX2xvZyhpZCBpbnQsIG5vdGUgdGV4dCk7CisKK2luc2VydCBpbnRvIHNxbGZf YmFzZSB2YWx1ZXMgKDEsIDEwKTsKKworY3JlYXRlIHJ1bGUgc3FsZl9iYXNlX3VwZF9sb2cgYXMK K29uIHVwZGF0ZSB0byBzcWxmX2Jhc2UgZG8gYWxzbworICAgIGluc2VydCBpbnRvIHNxbGZfbG9n KGlkLCBub3RlKQorICAgIHZhbHVlcyAobmV3LmlkLCAnbG9nZ2VkIGJ5IHJ1bGUnKTsKKworY3Jl YXRlIG9yIHJlcGxhY2UgZnVuY3Rpb24gc3FsZl9leGVjcHJlcF90ZXN0KGEgaW50LCB2IGludCkK K3JldHVybnMgdm9pZAorbGFuZ3VhZ2Ugc3FsCithcyAkJAorICAgIHVwZGF0ZSBzcWxmX2Jhc2Ug c2V0IHZhbCA9IHYgd2hlcmUgaWQgPSBhOworJCQ7CisKK3NlbGVjdCBzcWxmX2V4ZWNwcmVwX3Rl c3QoMSwgMjApOworc2VsZWN0IHNxbGZfZXhlY3ByZXBfdGVzdCgxLCAzMCk7CisKIHJlc2V0IHBs YW5fY2FjaGVfbW9kZTsKLS0gCjIuNDcuMwoK --000000000000c845e80644671a60 Content-Type: application/octet-stream; name="v4-0004-Use-pruning-aware-locking-in-cached-plans.patch" Content-Disposition: attachment; filename="v4-0004-Use-pruning-aware-locking-in-cached-plans.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_miebf87q2 RnJvbSBmM2MwN2JjYzVhMTRhMGI3NTFkODI3NzFjOTdjOTU3NzVjZWEyNzU4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgMTEgTm92IDIwMjUgMjI6MzA6NTIgKzA5MDAKU3ViamVjdDogW1BBVENIIHY0 IDQvNl0gVXNlIHBydW5pbmctYXdhcmUgbG9ja2luZyBpbiBjYWNoZWQgcGxhbnMKCkV4dGVuZCBH ZXRDYWNoZWRQbGFuKCkgdG8gcGVyZm9ybSBFeGVjdXRvclByZXAoKSBvbiBlYWNoIHBsYW5uZWQK c3RhdGVtZW50LCBjYXB0dXJpbmcgdW5wcnVuZWQgcmVsaWRzIGFuZCBpbml0aWFsIHBydW5pbmcg cmVzdWx0cy4KVXNlIHRoaXMgZGF0YSB0byBhY3F1aXJlIGV4ZWN1dGlvbiBsb2NrcyBvbmx5IG9u IHN1cnZpdmluZyBwYXJ0aXRpb25zLAphdm9pZGluZyB1bm5lY2Vzc2FyeSBsb2NraW5nIG9mIHBy dW5lZCB0YWJsZXMgZXZlbiB3aGVuIHVzaW5nIGNhY2hlZApwbGFucy4KCkludHJvZHVjZSBDYWNo ZWRQbGFuUHJlcERhdGEgdG8gY2FycnkgRXhlY3V0b3JQcmVwIHJlc3VsdHMKdGhyb3VnaCB0aGUg cGxhbiBjYWNoaW5nIGxheWVyLiBBZGp1c3QgY2FsbCBzaXRlcyBpbiBTUEksCmZ1bmN0aW9ucywg cG9ydGFscywgYW5kIEVYUExBSU4gdG8gcHJvcGFnYXRlIHRoaXMgZGF0YS4KClRoaXMgZW5zdXJl cyBwcnVuaW5nIGRlY2lzaW9ucyBtYWRlIGR1cmluZyBpbml0aWFsIHBydW5pbmcgYXJlCmNvbnNp c3RlbnRseSByZXVzZWQgd2l0aG91dCByZWRvaW5nIHBydW5pbmcgbG9naWMgaW4gZXhlY3V0b3Ig cGF0aHMKbGlrZSBwYXJhbGxlbCB3b3JrZXJzLiBJdCBhbHNvIGxheXMgdGhlIGdyb3VuZHdvcmsg Zm9yCnBydW5pbmctZGVwZW5kZW50IGxvY2sgYmVoYXZpb3IgZHVyaW5nIHBsYW4gcmV1c2UuCgpU byBtYWludGFpbiBjb3JyZWN0bmVzcyB3aGVuIGFsbCB0YXJnZXQgcGFydGl0aW9ucyBhcmUgcHJ1 bmVkLCBhbHNvCnJlaW5zdGF0ZSB0aGUgZmlyc3RSZXN1bHRSZWwgbG9ja2luZyBiZWhhdmlvciBs b3N0IGluIGNvbW1pdAoyODMxN2RlNzIuIFRoYXQgY29tbWl0IHJlcXVpcmVkIHRoZSBmaXJzdCBN b2RpZnlUYWJsZSB0YXJnZXQgdG8KcmVtYWluIGluaXRpYWxpemVkIGZvciBleGVjdXRvciBhc3N1 bXB0aW9ucyB0byBob2xkLiBXZSBub3cKZXhwbGljaXRseSB0cmFjayB0aGVzZSByZWxpZHMgaW4g UGxhbm5lckdsb2JhbCBhbmQgUGxhbm5lZFN0bXQgc28gdGhleQphcmUgbG9ja2VkIGV2ZW4gaWYg cHJ1bmVkLCBwcmVzZXJ2aW5nIHRoYXQgcnVsZSBhY3Jvc3MgY2FjaGVkIHBsYW4KcmV1c2UuCi0t LQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jICAgICAgICAgfCAgMTkgKy0KIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jIHwgICA0ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9z cGkuYyAgICAgICAgICAgICB8ICAyNiArKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Bs YW5uZXIuYyAgIHwgICAxICsKIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYyAg IHwgICAzICsKIHNyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyAgICAgICAgICAgIHwgICA5ICst CiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYyAgICB8IDIzNCArKysrKysrKysr KysrKysrKysrKysrKystCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCAgICAgICAgICB8 ICAgMyArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCAgICAgICAgICB8ICAxMCArKwog c3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmggICAgICAgICAgfCAgMjQgKystCiAxMSBmaWxl cyBjaGFuZ2VkLCAzMTMgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv cHJlcGFyZS5jCmluZGV4IGFmZDQ0OWM3M2JhLi4yMzMzMmQxOWIzNyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3By ZXBhcmUuYwpAQCAtMTU0LDYgKzE1NCw3IEBAIEV4ZWN1dGVRdWVyeShQYXJzZVN0YXRlICpwc3Rh dGUsCiB7CiAJUHJlcGFyZWRTdGF0ZW1lbnQgKmVudHJ5OwogCUNhY2hlZFBsYW4gKmNwbGFuOwor CUNhY2hlZFBsYW5QcmVwRGF0YSBjcHJlcCA9IHswfTsKIAlMaXN0CSAgICpwbGFuX2xpc3Q7CiAJ UGFyYW1MaXN0SW5mbyBwYXJhbUxJID0gTlVMTDsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IE5VTEw7 CkBAIC0xOTMsNyArMTk0LDEwIEBAIEV4ZWN1dGVRdWVyeShQYXJzZVN0YXRlICpwc3RhdGUsCiAJ CQkJCQkJCQkgICBlbnRyeS0+cGxhbnNvdXJjZS0+cXVlcnlfc3RyaW5nKTsKIAogCS8qIFJlcGxh biBpZiBuZWVkZWQsIGFuZCBpbmNyZW1lbnQgcGxhbiByZWZjb3VudCBmb3IgcG9ydGFsICovCi0J Y3BsYW4gPSBHZXRDYWNoZWRQbGFuKGVudHJ5LT5wbGFuc291cmNlLCBwYXJhbUxJLCBOVUxMLCBO VUxMKTsKKwkvKiBLZWVwIEV4ZWN1dG9yUHJlcCBzdGF0ZSB3aXRoIHRoZSBwb3J0YWwgYW5kIGl0 cyByZXNvd25lci4gKi8KKwljcHJlcC5jb250ZXh0ID0gcG9ydGFsLT5wb3J0YWxDb250ZXh0Owor CWNwcmVwLm93bmVyID0gcG9ydGFsLT5yZXNvd25lcjsKKwljcGxhbiA9IEdldENhY2hlZFBsYW4o ZW50cnktPnBsYW5zb3VyY2UsIHBhcmFtTEksIE5VTEwsIE5VTEwsICZjcHJlcCk7CiAJcGxhbl9s aXN0ID0gY3BsYW4tPnN0bXRfbGlzdDsKIAogCS8qCkBAIC0yMDUsNyArMjA5LDcgQEAgRXhlY3V0 ZVF1ZXJ5KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJICBxdWVyeV9zdHJpbmcsCiAJCQkJCSAg ZW50cnktPnBsYW5zb3VyY2UtPmNvbW1hbmRUYWcsCiAJCQkJCSAgcGxhbl9saXN0LAotCQkJCQkg IE5JTCwKKwkJCQkJICBjcHJlcC5wcmVwX2xpc3QsCiAJCQkJCSAgY3BsYW4pOwogCiAJLyoKQEAg LTU3NSw2ICs1NzksNyBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10ICpleGVjc3Rt dCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAlQcmVwYXJlZFN0YXRlbWVu dCAqZW50cnk7CiAJY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nOwogCUNhY2hlZFBsYW4gKmNwbGFu OworCUNhY2hlZFBsYW5QcmVwRGF0YSBjcHJlcCA9IHswfTsKIAlMaXN0CSAgICpwbGFuX2xpc3Q7 CiAJTGlzdAkgICAqcHJlcF9saXN0OwogCUxpc3RDZWxsICAgKnA7CkBAIC02MzMsOCArNjM4LDE0 IEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQgKmV4ZWNzdG10LCBJbnRvQ2xhdXNl ICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCX0KIAogCS8qIFJlcGxhbiBpZiBuZWVkZWQsIGFu ZCBhY3F1aXJlIGEgdHJhbnNpZW50IHJlZmNvdW50ICovCisJLyogRXhlY3V0b3JQcmVwIHN0YXRl IGlzIGxvY2FsIHRvIHRoaXMgRVhQTEFJTiBFWEVDVVRFIGNhbGwuICovCisJY3ByZXAuY29udGV4 dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OworCWNwcmVwLm93bmVyID0gQ3VycmVudFJlc291cmNl T3duZXI7CisJaWYgKGVzLT5nZW5lcmljKQorCQljcHJlcC5lZmxhZ3MgPSBFWEVDX0ZMQUdfRVhQ TEFJTl9HRU5FUklDOwogCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihlbnRyeS0+cGxhbnNvdXJjZSwg cGFyYW1MSSwKLQkJCQkJCSAgQ3VycmVudFJlc291cmNlT3duZXIsIHBzdGF0ZS0+cF9xdWVyeUVu dik7CisJCQkJCQkgIEN1cnJlbnRSZXNvdXJjZU93bmVyLCBwc3RhdGUtPnBfcXVlcnlFbnYsCisJ CQkJCQkgICZjcHJlcCk7CiAKIAlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHBsYW5kdXJhdGlvbik7 CiAJSU5TVFJfVElNRV9TVUJUUkFDVChwbGFuZHVyYXRpb24sIHBsYW5zdGFydCk7CkBAIC02NTMs NyArNjY0LDcgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIElu dG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJfQogCiAJcGxhbl9saXN0ID0gY3Bs YW4tPnN0bXRfbGlzdDsKLQlwcmVwX2xpc3QgPSBOSUw7CisJcHJlcF9saXN0ID0gY3ByZXAucHJl cF9saXN0OwogCiAJLyogRXhwbGFpbiBlYWNoIHF1ZXJ5ICovCiAJaSA9IDA7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2Z1bmN0aW9ucy5jCmluZGV4IDYzMzMxMGM1ZjViLi5kODE3MThlYTg0ZSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZnVuY3Rpb25zLmMKQEAgLTY5OCw2ICs2OTgsNyBAQCBpbml0X2V4ZWN1dGlvbl9zdGF0ZShT UUxGdW5jdGlvbkNhY2hlUHRyIGZjYWNoZSkKIAlmY2FjaGUtPmNwbGFuID0gR2V0Q2FjaGVkUGxh bihwbGFuc291cmNlLAogCQkJCQkJCQkgIGZjYWNoZS0+cGFyYW1MSSwKIAkJCQkJCQkJICBmY2Fj aGUtPmNvd25lciwKKwkJCQkJCQkJICBOVUxMLAogCQkJCQkJCQkgIE5VTEwpOwogCiAJLyoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKaW5kZXggZTQ0ZjEyMjM4ODYuLjdkZTIz MjgwMjFiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAtNDY3MSw4 ICs0NjcxLDggQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRl ICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogYXMgYSByZWZlcmVuY2UgZm9yIGJ1aWxkaW5nIHRo ZSBSZXN1bHRSZWxJbmZvIG9mIHRoZSB0YXJnZXQgcGFydGl0aW9uLgogCSAqIEluIGVpdGhlciBj YXNlLCBpdCBkb2Vzbid0IG1hdHRlciB3aGljaCByZXN1bHQgcmVsYXRpb24gaXMga2VwdCwgc28g d2UKIAkgKiBqdXN0IGtlZXAgdGhlIGZpcnN0IG9uZSwgaWYgYWxsIG90aGVycyBoYXZlIGJlZW4g cHJ1bmVkLiAgU2VlIGFsc28sCi0JICogRXhlY0RvSW5pdGlhbFBydW5pbmcoKSwgd2hpY2ggZW5z dXJlcyB0aGF0IHRoaXMgZmlyc3QgcmVzdWx0IHJlbGF0aW9uCi0JICogaGFzIGJlZW4gbG9ja2Vk LgorCSAqIEFjcXVpcmVFeGVjdXRvckxvY2tzVW5wcnVuZWQoKSwgd2hpY2ggZW5zdXJlcyB0aGF0 IHRoaXMgZmlyc3QgcmVzdWx0CisJICogcmVsYXRpb24gaGFzIGJlZW4gbG9ja2VkLgogCSAqLwog CWkgPSAwOwogCWZvcmVhY2gobCwgbm9kZS0+cmVzdWx0UmVsYXRpb25zKQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYwpp bmRleCA3YTNjYjk0NGQ2Zi4uZDU4MGYxZTA0MjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL3NwaS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCkBAIC0xNTc5LDYg KzE1NzksNyBAQCBTUElfY3Vyc29yX29wZW5faW50ZXJuYWwoY29uc3QgY2hhciAqbmFtZSwgU1BJ UGxhblB0ciBwbGFuLAogewogCUNhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2U7CiAJQ2FjaGVk UGxhbiAqY3BsYW47CisJQ2FjaGVkUGxhblByZXBEYXRhIGNwcmVwID0gezB9OwogCUxpc3QJICAg KnN0bXRfbGlzdDsKIAljaGFyCSAgICpxdWVyeV9zdHJpbmc7CiAJU25hcHNob3QJc25hcHNob3Q7 CkBAIC0xNjU5LDcgKzE2NjAsMTEgQEAgU1BJX2N1cnNvcl9vcGVuX2ludGVybmFsKGNvbnN0IGNo YXIgKm5hbWUsIFNQSVBsYW5QdHIgcGxhbiwKIAkgKi8KIAogCS8qIFJlcGxhbiBpZiBuZWVkZWQs IGFuZCBpbmNyZW1lbnQgcGxhbiByZWZjb3VudCBmb3IgcG9ydGFsICovCi0JY3BsYW4gPSBHZXRD YWNoZWRQbGFuKHBsYW5zb3VyY2UsIHBhcmFtTEksIE5VTEwsIF9TUElfY3VycmVudC0+cXVlcnlF bnYpOworCS8qIEV4ZWN1dG9yUHJlcCBzdGF0ZSBsaXZlcyBpbiB0aGlzIHBvcnRhbCdzIGNvbnRl eHQuICovCisJY3ByZXAuY29udGV4dCA9IHBvcnRhbC0+cG9ydGFsQ29udGV4dDsKKwljcHJlcC5v d25lciA9IHBvcnRhbC0+cmVzb3duZXI7CisJY3BsYW4gPSBHZXRDYWNoZWRQbGFuKHBsYW5zb3Vy Y2UsIHBhcmFtTEksIE5VTEwsIF9TUElfY3VycmVudC0+cXVlcnlFbnYsCisJCQkJCQkgICZjcHJl cCk7CiAJc3RtdF9saXN0ID0gY3BsYW4tPnN0bXRfbGlzdDsKIAogCWlmICghcGxhbi0+c2F2ZWQp CkBAIC0xNjg1LDcgKzE2OTAsNyBAQCBTUElfY3Vyc29yX29wZW5faW50ZXJuYWwoY29uc3QgY2hh ciAqbmFtZSwgU1BJUGxhblB0ciBwbGFuLAogCQkJCQkgIHF1ZXJ5X3N0cmluZywKIAkJCQkJICBw bGFuc291cmNlLT5jb21tYW5kVGFnLAogCQkJCQkgIHN0bXRfbGlzdCwKLQkJCQkJICBOSUwsCisJ CQkJCSAgY3ByZXAucHJlcF9saXN0LAkvKiBsaXZlcyBpbiBwb3J0YWxDb250ZXh0ICovCiAJCQkJ CSAgY3BsYW4pOwogCiAJLyoKQEAgLTIwNzgsNiArMjA4Myw3IEBAIFNQSV9wbGFuX2dldF9jYWNo ZWRfcGxhbihTUElQbGFuUHRyIHBsYW4pCiB7CiAJQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJj ZTsKIAlDYWNoZWRQbGFuICpjcGxhbjsKKwlDYWNoZWRQbGFuUHJlcERhdGEgY3ByZXAgPSB7MH07 CiAJU1BJQ2FsbGJhY2tBcmcgc3BpY2FsbGJhY2thcmc7CiAJRXJyb3JDb250ZXh0Q2FsbGJhY2sg c3BpZXJyY29udGV4dDsKIApAQCAtMjEwMSw5ICsyMTA3LDEzIEBAIFNQSV9wbGFuX2dldF9jYWNo ZWRfcGxhbihTUElQbGFuUHRyIHBsYW4pCiAJZXJyb3JfY29udGV4dF9zdGFjayA9ICZzcGllcnJj b250ZXh0OwogCiAJLyogR2V0IHRoZSBnZW5lcmljIHBsYW4gZm9yIHRoZSBxdWVyeSAqLworCS8q IEV4ZWN1dG9yUHJlcCgpIHN0YXRlIGxpdmVzIGluIGNhbGxlcidzIGFjdGl2ZSBjb250ZXh0LiAq LworCWNwcmVwLmNvbnRleHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKKwljcHJlcC5vd25lciA9 IEN1cnJlbnRSZXNvdXJjZU93bmVyOwogCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihwbGFuc291cmNl LCBOVUxMLAogCQkJCQkJICBwbGFuLT5zYXZlZCA/IEN1cnJlbnRSZXNvdXJjZU93bmVyIDogTlVM TCwKLQkJCQkJCSAgX1NQSV9jdXJyZW50LT5xdWVyeUVudik7CisJCQkJCQkgIF9TUElfY3VycmVu dC0+cXVlcnlFbnYsCisJCQkJCQkgICZjcHJlcCk7CiAJQXNzZXJ0KGNwbGFuID09IHBsYW5zb3Vy Y2UtPmdwbGFuKTsKIAogCS8qIFBvcCB0aGUgZXJyb3IgY29udGV4dCBzdGFjayAqLwpAQCAtMjUw MSw2ICsyNTExLDcgQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBT UElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJj ZSA9IChDYWNoZWRQbGFuU291cmNlICopIGxmaXJzdChsYzEpOwogCQlMaXN0CSAgICpzdG10X2xp c3Q7CiAJCUxpc3RDZWxsICAgKmxjMjsKKwkJQ2FjaGVkUGxhblByZXBEYXRhIGNwcmVwID0gezB9 OwogCQlMaXN0CSAgICpwcmVwX2xpc3Q7CiAJCWludAkJCWk7CiAKQEAgLTI1NzcsMTEgKzI1ODgs MTYgQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRl T3B0aW9ucyAqb3B0aW9ucywKIAkJICogUmVwbGFuIGlmIG5lZWRlZCwgYW5kIGluY3JlbWVudCBw bGFuIHJlZmNvdW50LiAgSWYgaXQncyBhIHNhdmVkCiAJCSAqIHBsYW4sIHRoZSByZWZjb3VudCBt dXN0IGJlIGJhY2tlZCBieSB0aGUgcGxhbl9vd25lci4KIAkJICovCisKKwkJLyogRXhlY3V0b3JQ cmVwIHN0YXRlIGlzIHBlciBfU1BJX2V4ZWN1dGVfcGxhbiBjYWxsLiAqLworCQljcHJlcC5jb250 ZXh0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7CisJCWNwcmVwLm93bmVyID0gQ3VycmVudFJlc291 cmNlT3duZXI7CiAJCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihwbGFuc291cmNlLCBvcHRpb25zLT5w YXJhbXMsCi0JCQkJCQkJICBwbGFuX293bmVyLCBfU1BJX2N1cnJlbnQtPnF1ZXJ5RW52KTsKKwkJ CQkJCQkgIHBsYW5fb3duZXIsIF9TUElfY3VycmVudC0+cXVlcnlFbnYsCisJCQkJCQkJICAmY3By ZXApOwogCiAJCXN0bXRfbGlzdCA9IGNwbGFuLT5zdG10X2xpc3Q7Ci0JCXByZXBfbGlzdCA9IE5J TDsKKwkJcHJlcF9saXN0ID0gY3ByZXAucHJlcF9saXN0OwogCiAJCS8qCiAJCSAqIElmIHdlIHdl cmVuJ3QgZ2l2ZW4gYSBzcGVjaWZpYyBzbmFwc2hvdCB0byB1c2UsIGFuZCB0aGUgc3RhdGVtZW50 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXggYzRmZDY0NmI5OTkuLjRjNzZl NzhjMWRhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMK KysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC02MDgsNiArNjA4 LDcgQEAgc3RhbmRhcmRfcGxhbm5lcihRdWVyeSAqcGFyc2UsIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0 cmluZywgaW50IGN1cnNvck9wdGlvbnMsCiAJCQkJCQkJCQkJCSAgZ2xvYi0+cHJ1bmFibGVSZWxp ZHMpOwogCXJlc3VsdC0+cGVybUluZm9zID0gZ2xvYi0+ZmluYWxydGVwZXJtaW5mb3M7CiAJcmVz dWx0LT5yZXN1bHRSZWxhdGlvbnMgPSBnbG9iLT5yZXN1bHRSZWxhdGlvbnM7CisJcmVzdWx0LT5m aXJzdFJlc3VsdFJlbHMgPSBnbG9iLT5maXJzdFJlc3VsdFJlbHM7CiAJcmVzdWx0LT5hcHBlbmRS ZWxhdGlvbnMgPSBnbG9iLT5hcHBlbmRSZWxhdGlvbnM7CiAJcmVzdWx0LT5zdWJwbGFucyA9IGds b2ItPnN1YnBsYW5zOwogCXJlc3VsdC0+cmV3aW5kUGxhbklEcyA9IGdsb2ItPnJld2luZFBsYW5J RHM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKaW5kZXggY2NkYzliYzI2NGEuLjIy OWIzOTA2MGFlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZz LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCkBAIC0xMjc0LDYg KzEyNzQsOSBAQCBzZXRfcGxhbl9yZWZzKFBsYW5uZXJJbmZvICpyb290LCBQbGFuICpwbGFuLCBp bnQgcnRvZmZzZXQpCiAJCQkJCQlsYXBwZW5kX2ludChyb290LT5nbG9iLT5yZXN1bHRSZWxhdGlv bnMsCiAJCQkJCQkJCQlzcGxhbi0+cm9vdFJlbGF0aW9uKTsKIAkJCQl9CisJCQkJcm9vdC0+Z2xv Yi0+Zmlyc3RSZXN1bHRSZWxzID0KKwkJCQkJbGFwcGVuZF9pbnQocm9vdC0+Z2xvYi0+Zmlyc3RS ZXN1bHRSZWxzLAorCQkJCQkJCQlsaW5pdGlhbF9pbnQoc3BsYW4tPnJlc3VsdFJlbGF0aW9ucykp OwogCQkJfQogCQkJYnJlYWs7CiAJCWNhc2UgVF9BcHBlbmQ6CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKaW5kZXgg NTg4MGE1NzRhMDYuLmE5NjQxOWVkY2JlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3Bv c3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC0xNjM5LDYgKzE2 MzksNyBAQCBleGVjX2JpbmRfbWVzc2FnZShTdHJpbmdJbmZvIGlucHV0X21lc3NhZ2UpCiAJaW50 MTYJICAgKnJmb3JtYXRzID0gTlVMTDsKIAlDYWNoZWRQbGFuU291cmNlICpwc3JjOwogCUNhY2hl ZFBsYW4gKmNwbGFuOworCUNhY2hlZFBsYW5QcmVwRGF0YSBjcHJlcCA9IHswfTsKIAlQb3J0YWwJ CXBvcnRhbDsKIAljaGFyCSAgICpxdWVyeV9zdHJpbmc7CiAJY2hhcgkgICAqc2F2ZWRfc3RtdF9u YW1lOwpAQCAtMjAyMSw3ICsyMDIyLDExIEBAIGV4ZWNfYmluZF9tZXNzYWdlKFN0cmluZ0luZm8g aW5wdXRfbWVzc2FnZSkKIAkgKiB3aWxsIGJlIGdlbmVyYXRlZCBpbiBNZXNzYWdlQ29udGV4dC4g IFRoZSBwbGFuIHJlZmNvdW50IHdpbGwgYmUKIAkgKiBhc3NpZ25lZCB0byB0aGUgUG9ydGFsLCBz byBpdCB3aWxsIGJlIHJlbGVhc2VkIGF0IHBvcnRhbCBkZXN0cnVjdGlvbi4KIAkgKi8KLQljcGxh biA9IEdldENhY2hlZFBsYW4ocHNyYywgcGFyYW1zLCBOVUxMLCBOVUxMKTsKKworCS8qIEV4ZWN1 dG9yUHJlcCgpIHN0YXRlIGxpdmVzIGluIHBvcnRhbCBjb250ZXh0LiAqLworCWNwcmVwLmNvbnRl eHQgPSBwb3J0YWwtPnBvcnRhbENvbnRleHQ7CisJY3ByZXAub3duZXIgPSBwb3J0YWwtPnJlc293 bmVyOworCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihwc3JjLCBwYXJhbXMsIE5VTEwsIE5VTEwsICZj cHJlcCk7CiAKIAkvKgogCSAqIE5vdyB3ZSBjYW4gZGVmaW5lIHRoZSBwb3J0YWwuCkBAIC0yMDM0 LDcgKzIwMzksNyBAQCBleGVjX2JpbmRfbWVzc2FnZShTdHJpbmdJbmZvIGlucHV0X21lc3NhZ2Up CiAJCQkJCSAgcXVlcnlfc3RyaW5nLAogCQkJCQkgIHBzcmMtPmNvbW1hbmRUYWcsCiAJCQkJCSAg Y3BsYW4tPnN0bXRfbGlzdCwKLQkJCQkJICBOSUwsCisJCQkJCSAgY3ByZXAucHJlcF9saXN0LAog CQkJCQkgIGNwbGFuKTsKIAogCS8qIFBvcnRhbCBpcyBkZWZpbmVkLCBzZXQgdGhlIHBsYW4gSUQg YmFzZWQgb24gaXRzIGNvbnRlbnRzLiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvcGxhbmNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYwpp bmRleCA2NjYxZDJjNmI3My4uYzFjZmQ0NzQyMmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3BsYW5jYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5j YWNoZS5jCkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyBib29sIFN0bXRQbGFuUmVxdWlyZXNSZXZh bGlkYXRpb24oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSk7CiBzdGF0aWMgYm9vbCBCdWls ZGluZ1BsYW5SZXF1aXJlc1NuYXBzaG90KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpOwog c3RhdGljIExpc3QgKlJldmFsaWRhdGVDYWNoZWRRdWVyeShDYWNoZWRQbGFuU291cmNlICpwbGFu c291cmNlLAogCQkJCQkJCQkgICBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7Ci1zdGF0aWMg Ym9vbCBDaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSk7CitzdGF0 aWMgYm9vbCBQcmVwQW5kQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3Vy Y2UsIENhY2hlZFBsYW5QcmVwRGF0YSAqY3ByZXApOwogc3RhdGljIENhY2hlZFBsYW4gKkJ1aWxk Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBMaXN0ICpxbGlzdCwKIAkJ CQkJCQkJICAgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVl cnlFbnYpOwogc3RhdGljIGJvb2wgY2hvb3NlX2N1c3RvbV9wbGFuKENhY2hlZFBsYW5Tb3VyY2Ug KnBsYW5zb3VyY2UsCkBAIC0xMDEsNiArMTAxLDggQEAgc3RhdGljIGJvb2wgY2hvb3NlX2N1c3Rv bV9wbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiBzdGF0aWMgZG91YmxlIGNhY2hl ZF9wbGFuX2Nvc3QoQ2FjaGVkUGxhbiAqcGxhbiwgYm9vbCBpbmNsdWRlX3BsYW5uZXIpOwogc3Rh dGljIFF1ZXJ5ICpRdWVyeUxpc3RHZXRQcmltYXJ5U3RtdChMaXN0ICpzdG10cyk7CiBzdGF0aWMg dm9pZCBBY3F1aXJlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10X2xpc3QsIGJvb2wgYWNxdWlyZSk7 CitzdGF0aWMgdm9pZCBBY3F1aXJlRXhlY3V0b3JMb2Nrc1VucHJ1bmVkKExpc3QgKnN0bXRfbGlz dCwgYm9vbCBhY3F1aXJlLAorCQkJCQkJCQkJCSBDYWNoZWRQbGFuUHJlcERhdGEgKmNwcmVwKTsK IHN0YXRpYyB2b2lkIEFjcXVpcmVQbGFubmVyTG9ja3MoTGlzdCAqc3RtdF9saXN0LCBib29sIGFj cXVpcmUpOwogc3RhdGljIHZvaWQgU2NhblF1ZXJ5Rm9yTG9ja3MoUXVlcnkgKnBhcnNldHJlZSwg Ym9vbCBhY3F1aXJlKTsKIHN0YXRpYyBib29sIFNjYW5RdWVyeVdhbGtlcihOb2RlICpub2RlLCBi b29sICphY3F1aXJlKTsKQEAgLTEzNyw2ICsxMzksMjYgQEAgUmVzb3VyY2VPd25lckZvcmdldFBs YW5DYWNoZVJlZihSZXNvdXJjZU93bmVyIG93bmVyLCBDYWNoZWRQbGFuICpwbGFuKQogLyogR1VD IHBhcmFtZXRlciAqLwogaW50CQkJcGxhbl9jYWNoZV9tb2RlID0gUExBTl9DQUNIRV9NT0RFX0FV VE87CiAKKy8qCisgKiBMb2NrIGFjcXVpc2l0aW9uIHBvbGljeSBmb3IgZXhlY3V0aW9uIGxvY2tz LgorICoKKyAqIExPQ0tfQUxMIGFjcXVpcmVzIGxvY2tzIG9uIGFsbCByZWxhdGlvbnMgbWVudGlv bmVkIGluIHRoZSBwbGFuLAorICogcmVwcm9kdWNpbmcgdGhlIGJlaGF2aW9yIG9mIEFjcXVpcmVF eGVjdXRvckxvY2tzKCkuCisgKgorICogTE9DS19VTlBSVU5FRCByZXN0cmljdHMgbG9ja2luZyB0 byBvbmx5IHRoZSB1bnBydW5lZCByZWxhdGlvbnMuIFRoYXQKKyAqIGluY2x1ZGVzIHRob3NlIG1l bnRpb25lZCBpbiBQbGFubmVkU3RtdC51bnBydW5hYmxlUmVsaWRzIGFuZCB0aGUgbGVhZgorICog cGFydGl0aW9ucyByZW1haW5pbmcgYWZ0ZXIgcGVyZm9ybWluZyBpbml0aWFsIHBydW5pbmcuCisg Ki8KK3R5cGVkZWYgZW51bSBMb2NrUG9saWN5Cit7CisJTE9DS19BTEwsCisJTE9DS19VTlBSVU5F RCwKK30gTG9ja1BvbGljeTsKKworc3RhdGljIHZvaWQgQWNxdWlyZUV4ZWN1dG9yTG9ja3NXaXRo UG9saWN5KExpc3QgKnN0bXRfbGlzdCwKKwkJCQkJCQkJCQkgICBMb2NrUG9saWN5IHBvbGljeSwg Ym9vbCBhY3F1aXJlLAorCQkJCQkJCQkJCSAgIENhY2hlZFBsYW5QcmVwRGF0YSAqY3ByZXApOwor CiAvKgogICogSW5pdFBsYW5DYWNoZTogaW5pdGlhbGl6ZSBtb2R1bGUgZHVyaW5nIEluaXRQb3N0 Z3Jlcy4KICAqCkBAIC05MzgsNyArOTYwLDEyIEBAIFJldmFsaWRhdGVDYWNoZWRRdWVyeShDYWNo ZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogfQogCiAvKgotICogQ2hlY2tDYWNoZWRQbGFuOiBz ZWUgaWYgdGhlIENhY2hlZFBsYW5Tb3VyY2UncyBnZW5lcmljIHBsYW4gaXMgdmFsaWQuCisgKiBQ cmVwQW5kQ2hlY2tDYWNoZWRQbGFuOiBzZWUgaWYgdGhlIENhY2hlZFBsYW5Tb3VyY2UncyBnZW5l cmljIHBsYW4gaXMgdmFsaWQuCisgKgorICogSWYgJ2NwcmVwJyBpcyBub3QgTlVMTCwgRXhlY3V0 b3JQcmVwKCkgaXMgYXBwbGllZCB0byBlYWNoIFBsYW5uZWRTdG10IHRvCisgKiBjb21wdXRlIHRo ZSBzZXQgb2YgcGFydGl0aW9ucyB0aGF0IHN1cnZpdmUgaW5pdGlhbCBydW50aW1lIHBydW5pbmcg aW4gb3JkZXIKKyAqIHRvIG9ubHkgbG9jayB0aGVtLiAgVGhlIHJlc3VsdGluZyBFeGVjUHJlcCBz dHJ1Y3R1cmVzIGFyZSBzYXZlZCBpbiBjcHJlcCBmb3IKKyAqIGxhdGVyIHJldXNlIGJ5IEV4ZWN1 dG9yU3RhcnQoKS4KICAqCiAgKiBDYWxsZXIgbXVzdCBoYXZlIGFscmVhZHkgY2FsbGVkIFJldmFs aWRhdGVDYWNoZWRRdWVyeSB0byB2ZXJpZnkgdGhhdCB0aGUKICAqIHF1ZXJ5dHJlZSBpcyB1cCB0 byBkYXRlLgpAQCAtOTQ3LDcgKzk3NCw3IEBAIFJldmFsaWRhdGVDYWNoZWRRdWVyeShDYWNoZWRQ bGFuU291cmNlICpwbGFuc291cmNlLAogICogKFdlIG11c3QgZG8gdGhpcyBmb3IgdGhlICJ0cnVl IiByZXN1bHQgdG8gYmUgcmFjZS1jb25kaXRpb24tZnJlZS4pCiAgKi8KIHN0YXRpYyBib29sCi1D aGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSkKK1ByZXBBbmRDaGVj a0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgQ2FjaGVkUGxhblByZXBE YXRhICpjcHJlcCkKIHsKIAlDYWNoZWRQbGFuICpwbGFuID0gcGxhbnNvdXJjZS0+Z3BsYW47CiAK QEAgLTk3NSwxMyArMTAwMiwxNSBAQCBDaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAq cGxhbnNvdXJjZSkKIAkgKi8KIAlpZiAocGxhbi0+aXNfdmFsaWQpCiAJeworCQlMb2NrUG9saWN5 IHBvbGljeSA9ICFjcHJlcCA/IExPQ0tfQUxMIDogTE9DS19VTlBSVU5FRDsKKwogCQkvKgogCQkg KiBQbGFuIG11c3QgaGF2ZSBwb3NpdGl2ZSByZWZjb3VudCBiZWNhdXNlIGl0IGlzIHJlZmVyZW5j ZWQgYnkKIAkJICogcGxhbnNvdXJjZTsgc28gbm8gbmVlZCB0byBmZWFyIGl0IGRpc2FwcGVhcnMg dW5kZXIgdXMgaGVyZS4KIAkJICovCiAJCUFzc2VydChwbGFuLT5yZWZjb3VudCA+IDApOwogCi0J CUFjcXVpcmVFeGVjdXRvckxvY2tzKHBsYW4tPnN0bXRfbGlzdCwgdHJ1ZSk7CisJCUFjcXVpcmVF eGVjdXRvckxvY2tzV2l0aFBvbGljeShwbGFuLT5zdG10X2xpc3QsIHBvbGljeSwgdHJ1ZSwgY3By ZXApOwogCiAJCS8qCiAJCSAqIElmIHBsYW4gd2FzIHRyYW5zaWVudCwgY2hlY2sgdG8gc2VlIGlm IFRyYW5zYWN0aW9uWG1pbiBoYXMKQEAgLTEwMDMsNyArMTAzMiw3IEBAIENoZWNrQ2FjaGVkUGxh bihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKQogCQl9CiAKIAkJLyogT29wcywgdGhlIHJh Y2UgY2FzZSBoYXBwZW5lZC4gIFJlbGVhc2UgdXNlbGVzcyBsb2Nrcy4gKi8KLQkJQWNxdWlyZUV4 ZWN1dG9yTG9ja3MocGxhbi0+c3RtdF9saXN0LCBmYWxzZSk7CisJCUFjcXVpcmVFeGVjdXRvckxv Y2tzV2l0aFBvbGljeShwbGFuLT5zdG10X2xpc3QsIHBvbGljeSwgZmFsc2UsIGNwcmVwKTsKIAl9 CiAKIAkvKgpAQCAtMTI4Myw2ICsxMzEyLDEwIEBAIGNhY2hlZF9wbGFuX2Nvc3QoQ2FjaGVkUGxh biAqcGxhbiwgYm9vbCBpbmNsdWRlX3BsYW5uZXIpCiAgKiBPbiByZXR1cm4sIHRoZSBwbGFuIGlz IHZhbGlkIGFuZCB3ZSBoYXZlIHN1ZmZpY2llbnQgbG9ja3MgdG8gYmVnaW4KICAqIGV4ZWN1dGlv bi4KICAqCisgKiBJZiAnY3ByZXAnIGlzIG5vdCBOVUxMIGFuZCBhIGdlbmVyaWMgcGxhbiBpcyBy ZXVzZWQsIHRoZSBmdW5jdGlvbiBwcmVwYXJlcworICogZWFjaCBQbGFubmVkU3RtdCB2aWEgRXhl Y3V0b3JQcmVwKCkgYW5kIHN0b3JlcyB0aGUgcmVzdWx0cyBpbgorICogY3ByZXAtPnByZXBfbGlz dC4gIFRoZXNlIGFyZSBpbnRlbmRlZCB0byBiZSBwYXNzZWQgbGF0ZXIgdG8gRXhlY3V0b3JTdGFy dCgpLgorICoKICAqIE9uIHJldHVybiwgdGhlIHJlZmNvdW50IG9mIHRoZSBwbGFuIGhhcyBiZWVu IGluY3JlbWVudGVkOyBhIGxhdGVyCiAgKiBSZWxlYXNlQ2FjaGVkUGxhbigpIGNhbGwgaXMgZXhw ZWN0ZWQuICBJZiAib3duZXIiIGlzIG5vdCBOVUxMIHRoZW4KICAqIHRoZSByZWZjb3VudCBoYXMg YmVlbiByZXBvcnRlZCB0byB0aGF0IFJlc291cmNlT3duZXIgKG5vdGUgdGhhdCB0aGlzCkBAIC0x MjkzLDcgKzEzMjYsOCBAQCBjYWNoZWRfcGxhbl9jb3N0KENhY2hlZFBsYW4gKnBsYW4sIGJvb2wg aW5jbHVkZV9wbGFubmVyKQogICovCiBDYWNoZWRQbGFuICoKIEdldENhY2hlZFBsYW4oQ2FjaGVk UGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywKLQkJCSAg UmVzb3VyY2VPd25lciBvd25lciwgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpCisJCQkgIFJl c291cmNlT3duZXIgb3duZXIsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAorCQkJICBDYWNo ZWRQbGFuUHJlcERhdGEgKmNwcmVwKQogewogCUNhY2hlZFBsYW4gKnBsYW4gPSBOVUxMOwogCUxp c3QJICAgKnFsaXN0OwpAQCAtMTMxNSw3ICsxMzQ5LDkgQEAgR2V0Q2FjaGVkUGxhbihDYWNoZWRQ bGFuU291cmNlICpwbGFuc291cmNlLCBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAogCiAJaWYg KCFjdXN0b21wbGFuKQogCXsKLQkJaWYgKENoZWNrQ2FjaGVkUGxhbihwbGFuc291cmNlKSkKKwkJ aWYgKGNwcmVwKQorCQkJY3ByZXAtPnBhcmFtcyA9IGJvdW5kUGFyYW1zOworCQlpZiAoUHJlcEFu ZENoZWNrQ2FjaGVkUGxhbihwbGFuc291cmNlLCBjcHJlcCkpCiAJCXsKIAkJCS8qIFdlIHdhbnQg YSBnZW5lcmljIHBsYW4sIGFuZCB3ZSBhbHJlYWR5IGhhdmUgYSB2YWxpZCBvbmUgKi8KIAkJCXBs YW4gPSBwbGFuc291cmNlLT5ncGxhbjsKQEAgLTE5MDIsNiArMTkzOCwzOCBAQCBRdWVyeUxpc3RH ZXRQcmltYXJ5U3RtdChMaXN0ICpzdG10cykKIAlyZXR1cm4gTlVMTDsKIH0KIAorLyoKKyAqIEFj cXVpcmVFeGVjdXRvckxvY2tzV2l0aFBvbGljeQorICoJCUFjcXVpcmUgb3IgcmVsZWFzZSBleGVj dXRpb24gbG9ja3MgZm9yIGEgY2FjaGVkIHBsYW4gYWNjb3JkaW5nIHRvCisgKgkJdGhlIHNwZWNp ZmllZCBwb2xpY3kuCisgKgorICogTE9DS19BTEwgcmVwcm9kdWNlcyBBY3F1aXJlRXhlY3V0b3JM b2NrcygpLCBsb2NraW5nIGV2ZXJ5IHJlbGF0aW9uIGluCisgKiBlYWNoIFBsYW5uZWRTdG10J3Mg cnRhYmxlLiAgTE9DS19VTlBSVU5FRCByZXN0cmljdHMgbG9ja2luZyB0byB0aGUKKyAqIHVucHJ1 bmFibGUgcmVscyBhbmQgcGFydGl0aW9ucyB0aGF0IHN1cnZpdmUgaW5pdGlhbCBydW50aW1lIHBy dW5pbmcuCisgKgorICogV2hlbiBMT0NLX1VOUFJVTkVEIGlzIHVzZWQgb24gYWNxdWlyZSwgRXhl Y3V0b3JQcmVwKCkgaXMgaW52b2tlZCBmb3IKKyAqIGVhY2ggUGxhbm5lZFN0bXQgYW5kIHRoZSBy ZXN1bHRpbmcgRXhlY1ByZXAgcG9pbnRlcnMgYXJlIGFwcGVuZGVkIHRvCisgKiBjcHJlcC0+cHJl cF9saXN0IGluIGNwcmVwLT5jb250ZXh0LiAgT24gcmVsZWFzZSwgdGhlIHNhbWUgRXhlY1ByZXAK KyAqIGxpc3QgaXMgY29uc3VsdGVkIHRvIGRldGVybWluZSB3aGljaCByZWxhdGlvbnMgdG8gdW5s b2NrIGFuZCBpcyB0aGVuCisgKiBjbGVhbmVkIHVwIHdpdGggRXhlY1ByZXBDbGVhbnVwKCkuCisg Ki8KK3N0YXRpYyB2b2lkCitBY3F1aXJlRXhlY3V0b3JMb2Nrc1dpdGhQb2xpY3koTGlzdCAqc3Rt dF9saXN0LCBMb2NrUG9saWN5IHBvbGljeSwgYm9vbCBhY3F1aXJlLAorCQkJCQkJCSAgIENhY2hl ZFBsYW5QcmVwRGF0YSAqY3ByZXApCit7CisJc3dpdGNoIChwb2xpY3kpCisJeworCQljYXNlIExP Q0tfQUxMOgorCQkJQWNxdWlyZUV4ZWN1dG9yTG9ja3Moc3RtdF9saXN0LCBhY3F1aXJlKTsKKwkJ CWJyZWFrOworCQljYXNlIExPQ0tfVU5QUlVORUQ6CisJCQlBY3F1aXJlRXhlY3V0b3JMb2Nrc1Vu cHJ1bmVkKHN0bXRfbGlzdCwgYWNxdWlyZSwgY3ByZXApOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6 CisJCQllbG9nKEVSUk9SLCAiaW52YWxpZCBMb2NrUG9saWN5Iik7CisJfQorfQorCiAvKgogICog QWNxdWlyZUV4ZWN1dG9yTG9ja3M6IGFjcXVpcmUgbG9ja3MgbmVlZGVkIGZvciBleGVjdXRpb24g b2YgYSBjYWNoZWQgcGxhbjsKICAqIG9yIHJlbGVhc2UgdGhlbSBpZiBhY3F1aXJlIGlzIGZhbHNl LgpAQCAtMTk1NCw2ICsyMDIyLDE1OCBAQCBBY3F1aXJlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10 X2xpc3QsIGJvb2wgYWNxdWlyZSkKIAl9CiB9CiAKKy8qCisgKiBMb2NrUmVsaWRzCisgKiAJCUFj cXVpcmUgb3IgcmVsZWFzZSBsb2NrcyBvbiB0aGUgc3BlY2lmaWVkIHJlbGlkcywgd2hpY2ggcmVm ZXJlbmNlCisgKiAJCWVudHJpZXMgaW4gdGhlIHByb3ZpZGVkIHJhbmdlIHRhYmxlLgorICoKKyAq IEhlbHBlciBmb3IgQWNxdWlyZUV4ZWN1dG9yTG9ja3NVbnBydW5lZCgpLgorICovCitzdGF0aWMg dm9pZAorTG9ja1JlbGlkcyhMaXN0ICpydGFibGUsIEJpdG1hcHNldCAqcmVsaWRzLCBib29sIGFj cXVpcmUpCit7CisJaW50CXJ0aW5kZXggPSAtMTsKKworCXdoaWxlICgocnRpbmRleCA9IGJtc19u ZXh0X21lbWJlcihyZWxpZHMsIHJ0aW5kZXgpKSA+PSAwKQorCXsKKwkJUmFuZ2VUYmxFbnRyeSAq cnRlID0gbGlzdF9udGhfbm9kZShSYW5nZVRibEVudHJ5LCBydGFibGUsIHJ0aW5kZXggLSAxKTsK KworCQlBc3NlcnQocnRlLT5ydGVraW5kID09IFJURV9SRUxBVElPTiB8fAorCQkJICAgKHJ0ZS0+ cnRla2luZCA9PSBSVEVfU1VCUVVFUlkgJiYgT2lkSXNWYWxpZChydGUtPnJlbGlkKSkpOworCisJ CS8qCisJCSAqIEFjcXVpcmUgdGhlIGFwcHJvcHJpYXRlIHR5cGUgb2YgbG9jayBvbiBlYWNoIHJl bGF0aW9uIE9JRC4gTm90ZQorCQkgKiB0aGF0IHdlIGRvbid0IGFjdHVhbGx5IHRyeSB0byBvcGVu IHRoZSByZWwsIGFuZCBoZW5jZSB3aWxsIG5vdAorCQkgKiBmYWlsIGlmIGl0J3MgYmVlbiBkcm9w cGVkIGVudGlyZWx5IC0tLSB3ZSdsbCBqdXN0IHRyYW5zaWVudGx5CisJCSAqIGFjcXVpcmUgYSBu b24tY29uZmxpY3RpbmcgbG9jay4KKwkJICovCisJCWlmIChhY3F1aXJlKQorCQkJTG9ja1JlbGF0 aW9uT2lkKHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9ja21vZGUpOworCQllbHNlCisJCQlVbmxvY2tS ZWxhdGlvbk9pZChydGUtPnJlbGlkLCBydGUtPnJlbGxvY2ttb2RlKTsKKwl9Cit9CisKKy8qCisg KiBBY3F1aXJlRXhlY3V0b3JMb2Nrc1VucHJ1bmVkCisgKgkJQWNxdWlyZSBvciByZWxlYXNlIGV4 ZWN1dGlvbiBsb2NrcyBmb3Igb25seSB1bnBydW5lZCByZWxhdGlvbnMKKyAqCQlyZWZlcmVuY2Vk IGJ5IHRoZSBnaXZlbiBQbGFubmVkU3RtdHMuCisgKgorICogT24gYWNxdWlyZSwgdGhpczoKKyAq CS0gbG9ja3MgdW5wcnVuYWJsZSByZWxzIGxpc3RlZCBpbiBQbGFubmVkU3RtdC51bnBydW5hYmxl UmVsaWRzCisgKgktIHJ1bnMgRXhlY3V0b3JQcmVwKCkgdG8gcGVyZm9ybSBpbml0aWFsIHJ1bnRp bWUgcHJ1bmluZworICoJLSBsb2NrcyB0aGUgc3Vydml2aW5nIHBhcnRpdGlvbnMgcmVwb3J0ZWQg aW4gdGhlIHByZXAgZXN0YXRlCisgKgktIGFwcGVuZHMgdGhlIEV4ZWNQcmVwIHBvaW50ZXIgZm9y IGVhY2ggUGxhbm5lZFN0bXQgdG8gY3ByZXAtPnByZXBfbGlzdAorICoKKyAqIE9uIHJlbGVhc2Us IGl0OgorICoJLSBsb29rcyB1cCB0aGUgRXhlY1ByZXAgb2JqZWN0IGZvciBlYWNoIFBsYW5uZWRT dG10IGZyb20gY3ByZXAtPnByZXBfbGlzdAorICoJICAod2hpY2ggbXVzdCBhbHJlYWR5IGJlIHBv cHVsYXRlZCkKKyAqCS0gdW5sb2NrcyB0aGUgc2FtZSByZWxhdGlvbnMgaWRlbnRpZmllZCBkdXJp bmcgYWNxdWlyZQorICoJLSBjYWxscyBFeGVjUHJlcENsZWFudXAoKSBvbiBlYWNoIEV4ZWNQcmVw CisgKgorICogcHJlcF9saXN0IGlzIGV4dGVuZGVkIGR1cmluZyBhY3F1aXJlIGFuZCBtdXN0IG1h dGNoIHN0bXRfbGlzdCBvbmUtdG8tb25lCisgKiB3aGVuIHJlbGVhc2luZyBsb2Nrcy4gIE1lbW9y eSBhbGxvY2F0aW9uIGZvciBFeGVjUHJlcCBoYXBwZW5zIGluCisgKiBjcHJlcC0+Y29udGV4dC4g IExvY2tzIGFyZSBhY3F1aXJlZCB1c2luZyBjcHJlcC0+b3duZXIuCisgKi8KKworc3RhdGljIHZv aWQKK0FjcXVpcmVFeGVjdXRvckxvY2tzVW5wcnVuZWQoTGlzdCAqc3RtdF9saXN0LCBib29sIGFj cXVpcmUsCisJCQkJCQkJIENhY2hlZFBsYW5QcmVwRGF0YSAqY3ByZXApCit7CisJTWVtb3J5Q29u dGV4dCBvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGNwcmVwLT5jb250ZXh0KTsK KwlMaXN0Q2VsbCAgICpsYzE7CisJTGlzdAkgICAqcHJlcF9saXN0OworCWludAkJCWk7CisKKwlB c3NlcnQoY3ByZXApOworCisJLyoKKwkgKiBXaGVuIHJlbGVhc2luZyBsb2NrcywgdXNlIHRoZSBF eGVjUHJlcCBsaXN0IChpZiBhbnkpIGNyZWF0ZWQgZHVyaW5nCisJICogYWNxdWlzaXRpb24gdG8g ZGV0ZXJtaW5lIHdoaWNoIHJlbGlkcyB0byB1bmxvY2suIFRoZSBsaXN0IG11c3QgbWF0Y2gKKwkg KiB0aGUgUGxhbm5lZFN0bXQgbGlzdCBvbmUtdG8tb25lLgorCSAqLworCXByZXBfbGlzdCA9IGNw cmVwLT5wcmVwX2xpc3Q7CisJQXNzZXJ0KGFjcXVpcmUgfHwgbGlzdF9sZW5ndGgocHJlcF9saXN0 KSA9PSBsaXN0X2xlbmd0aChzdG10X2xpc3QpKTsKKworCWkgPSAwOworCWZvcmVhY2gobGMxLCBz dG10X2xpc3QpCisJeworCQlQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQgPSBsZmlyc3Rfbm9kZShQ bGFubmVkU3RtdCwgbGMxKTsKKwkJRXhlY1ByZXAgKnByZXA7CisKKwkJaWYgKHBsYW5uZWRzdG10 LT5jb21tYW5kVHlwZSA9PSBDTURfVVRJTElUWSkKKwkJeworCQkJLyogU2FtZSBhcyBBY3F1aXJl RXhlY3V0b3JMb2NrcygpLiAqLworCQkJUXVlcnkJICAgKnF1ZXJ5ID0gVXRpbGl0eUNvbnRhaW5z UXVlcnkocGxhbm5lZHN0bXQtPnV0aWxpdHlTdG10KTsKKworCQkJaWYgKHF1ZXJ5KQorCQkJCVNj YW5RdWVyeUZvckxvY2tzKHF1ZXJ5LCBhY3F1aXJlKTsKKworCQkJLyogS2VlcCB0aGUgbGlzdCBv bmUtdG8tb25lIHdpdGggc3RtdF9saXN0LiAqLworCQkJaWYgKGFjcXVpcmUpCisJCQkJY3ByZXAt PnByZXBfbGlzdCA9IGxhcHBlbmQoY3ByZXAtPnByZXBfbGlzdCwgTlVMTCk7CisJCQljb250aW51 ZTsKKwkJfQorCisJCS8qCisJCSAqIExvY2sgdGFibGVzIG1lbnRpb25lZCBpbiB0aGUgb3JpZ2lu YWwgcXVlcnkgYW5kIG90aGVyIHVucHJ1bmFibGUKKwkJICogcmVsYXRpb25zIHRoYXQgd2VyZSBh ZGRlZCB0byB0aGUgcGxhbiB2aWEgaW5oZXJpdGFuY2UgZXhwYW5zaW9uLgorCQkgKi8KKwkJTG9j a1JlbGlkcyhwbGFubmVkc3RtdC0+cnRhYmxlLCBwbGFubmVkc3RtdC0+dW5wcnVuYWJsZVJlbGlk cywgYWNxdWlyZSk7CisKKwkJLyogTG9jayBwYXJ0aXRpb25zIHN1cnZpdmluZyBydW50aW1lIGlu aXRpYWwgcHJ1bmluZy4gKi8KKwkJaWYgKGFjcXVpcmUpCisJCXsKKwkJCXByZXAgPSBFeGVjdXRv clByZXAocGxhbm5lZHN0bXQsIGNwcmVwLT5wYXJhbXMsIGNwcmVwLT5vd25lciwgdHJ1ZSwKKwkJ CQkJCQkJY3ByZXAtPmVmbGFncyk7CisJCQlBc3NlcnQocHJlcCB8fCBwbGFubmVkc3RtdC0+cGFy dFBydW5lSW5mb3MgPT0gTlVMTCk7CisJCQljcHJlcC0+cHJlcF9saXN0ID0gbGFwcGVuZChjcHJl cC0+cHJlcF9saXN0LCBwcmVwKTsKKwkJfQorCQllbHNlCisJCQlwcmVwID0gbGlzdF9udGgocHJl cF9saXN0LCBpKyspOworCisJCUFzc2VydChwcmVwID09IE5VTEwgfHwgcHJlcC0+cHJlcF9lc3Rh dGUpOworCQlpZiAocHJlcCkKKwkJeworCQkJRVN0YXRlICpwcmVwX2VzdGF0ZSA9IHByZXAtPnBy ZXBfZXN0YXRlOworCisJCQkvKgorCQkJICogZXNfdW5wcnVuZWRfcmVsaWRzIGluY2x1ZGVzIHBs YW5uZWRzdG10LT51bnBydW5hYmxlUmVsaWRzLAorCQkJICogd2hpY2ggd2UndmUgYWxyZWFkeSBs b2NrZWQuIEZpbHRlciB0aGVtIG91dCB0byBhdm9pZCBkb3VibGUtbG9ja2luZy4KKwkJCSAqLwor CQkJQml0bWFwc2V0ICpsb2NrX3JlbGlkcyA9IGJtc19kaWZmZXJlbmNlKHByZXBfZXN0YXRlLT5l c191bnBydW5lZF9yZWxpZHMsCisJCQkJCQkJCQkJCQkJcGxhbm5lZHN0bXQtPnVucHJ1bmFibGVS ZWxpZHMpOworCisJCQkvKgorCQkJICogZmlyc3RSZXN1bHRSZWxzIG1heSBjb250YWluIHBydW5l ZCBwYXJ0aXRpb25zIHRoYXQgbXVzdCBzdGlsbCBiZQorCQkJICogbG9ja2VkIHRvIHNhdGlzZnkg ZXhlY3V0b3IgYXNzdW1wdGlvbnMgKHNlZSBjb21tZW50cyBpbgorCQkJICogRXhlY0luaXRNb2Rp ZnlUYWJsZSgpLiBFbnN1cmUgdGhleeKAmXJlIGluY2x1ZGVkIGhlcmUuCisJCQkgKi8KKwkJCWlm IChwbGFubmVkc3RtdC0+cmVzdWx0UmVsYXRpb25zKQorCQkJeworCQkJCUxpc3RDZWxsICpsYzI7 CisKKwkJCQlmb3JlYWNoKGxjMiwgcGxhbm5lZHN0bXQtPmZpcnN0UmVzdWx0UmVscykKKwkJCQl7 CisJCQkJCUluZGV4ICAgICAgIGZpcnN0UmVzdWx0UmVsID0gbGZpcnN0X2ludChsYzIpOworCisJ CQkJCWlmICghYm1zX2lzX21lbWJlcihmaXJzdFJlc3VsdFJlbCwgbG9ja19yZWxpZHMpKQorCQkJ CQkJbG9ja19yZWxpZHMgPSBibXNfYWRkX21lbWJlcihsb2NrX3JlbGlkcywgZmlyc3RSZXN1bHRS ZWwpOworCQkJCX0KKwkJCX0KKworCQkJTG9ja1JlbGlkcyhwbGFubmVkc3RtdC0+cnRhYmxlLCBs b2NrX3JlbGlkcywgYWNxdWlyZSk7CisJCQlibXNfZnJlZShsb2NrX3JlbGlkcyk7CisJCX0KKwor CQkvKiBDbGVhbiB1cCBwcmVwIGlmIHJlbGVhc2luZyBsb2Nrcy4gKi8KKwkJaWYgKCFhY3F1aXJl KQorCQkJRXhlY1ByZXBDbGVhbnVwKHByZXApOworCX0KKworCU1lbW9yeUNvbnRleHRTd2l0Y2hU byhvbGRjb250ZXh0KTsKK30KKwogLyoKICAqIEFjcXVpcmVQbGFubmVyTG9ja3M6IGFjcXVpcmUg bG9ja3MgbmVlZGVkIGZvciBwbGFubmluZyBvZiBhIHF1ZXJ5dHJlZSBsaXN0OwogICogb3IgcmVs ZWFzZSB0aGVtIGlmIGFjcXVpcmUgaXMgZmFsc2UuCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9u b2Rlcy9wYXRobm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCmluZGV4IDQ2 YTg2NTU2MjFkLi41YWY0YzMxZjUzYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0 aG5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKQEAgLTE0MSw2ICsx NDEsOSBAQCB0eXBlZGVmIHN0cnVjdCBQbGFubmVyR2xvYmFsCiAJLyogImZsYXQiIGxpc3Qgb2Yg aW50ZWdlciBSVCBpbmRleGVzICovCiAJTGlzdAkgICAqcmVzdWx0UmVsYXRpb25zOwogCisJLyog ImZsYXQiIGxpc3Qgb2YgaW50ZWdlciBSVCBpbmRleGVzIChvbmUgcGVyIE1vZGlmeVRhYmxlIG5v ZGUpICovCisJTGlzdAkgICAqZmlyc3RSZXN1bHRSZWxzOworCiAJLyogImZsYXQiIGxpc3Qgb2Yg QXBwZW5kUmVsSW5mb3MgKi8KIAlMaXN0CSAgICphcHBlbmRSZWxhdGlvbnM7CiAKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxh bm5vZGVzLmgKaW5kZXggYzQzOTNhOTQzMjEuLmViMjExZjFiYTU2IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9k ZXMuaApAQCAtMTIzLDYgKzEyMywxNiBAQCB0eXBlZGVmIHN0cnVjdCBQbGFubmVkU3RtdAogCS8q IGludGVnZXIgbGlzdCBvZiBSVCBpbmRleGVzLCBvciBOSUwgKi8KIAlMaXN0CSAgICpyZXN1bHRS ZWxhdGlvbnM7CiAKKwkvKgorCSAqIHJ0YWJsZSBpbmRleGVzIG9mIGZpcnN0IHRhcmdldCByZWxh dGlvbiBpbiBlYWNoIE1vZGlmeVRhYmxlIG5vZGUgaW4gdGhlCisJICogcGxhbiBmb3IgSU5TRVJU L1VQREFURS9ERUxFVEUvTUVSR0UuICBOSUwgaWYgcmVzdWx0UmVsYXRpb25zIGlzIE5JTC4KKwkg KgorCSAqIFRoZXNlIGFyZSB1c2VkIGJ5IEFjcXVpcmVFeGVjdXRvckxvY2tzVW5wcnVuZWQoKSB0 byBlbnN1cmUgdGhhdCB0aGUKKwkgKiBmaXJzdCByZXN1bHQgcmVsIGZvciBlYWNoIE1vZGlmeVRh YmxlIHJlbWFpbnMgbG9ja2VkIGV2ZW4gaWYgcHJ1bmVkOworCSAqIHNlZSBFeGVjSW5pdE1vZGlm eVRhYmxlKCkgZm9yIHRoZSBleGVjdXRvciBzaWRlIGFzc3VtcHRpb25zLgorCSAqLworCUxpc3QJ ICAgKmZpcnN0UmVzdWx0UmVsczsKKwogCS8qIGxpc3Qgb2YgQXBwZW5kUmVsSW5mbyBub2RlcyAq LwogCUxpc3QJICAgKmFwcGVuZFJlbGF0aW9uczsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv dXRpbHMvcGxhbmNhY2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaAppbmRleCBh ODJiNjZkNGJjMi4uYzdiOGVjNGJlMzkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3Bs YW5jYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCkBAIC0xOTcsNiAr MTk3LDI3IEBAIHR5cGVkZWYgc3RydWN0IENhY2hlZEV4cHJlc3Npb24KIH0gQ2FjaGVkRXhwcmVz c2lvbjsKIAogCisvKgorICogQ2FjaGVkUGxhblByZXBEYXRhCisgKiAgICAgIENhcnJpZXMgRXhl Y3V0b3JQcmVwIHJlc3VsdHMgZm9yIGVhY2ggUGxhbm5lZFN0bXQgaW4gYSBDYWNoZWRQbGFuLAor ICogICAgICBhbG9uZyB3aXRoIGNvbnRleHQgYW5kIG93bmVyIGluZm9ybWF0aW9uIG5lZWRlZCB0 byBhbGxvY2F0ZSB0aGVtLgorICoKKyAqIHByZXBfbGlzdCBpcyBpbmRleGVkIG9uZS10by1vbmUg d2l0aCBDYWNoZWRQbGFuLT5zdG10X2xpc3QsIGFuZCBpcworICogcG9wdWxhdGVkIHdoZW4gR2V0 Q2FjaGVkUGxhbigpIHByZXBhcmVzIGEgcmV1c2VkIGdlbmVyaWMgcGxhbi4gIFRoZQorICogc2Ft ZSBsaXN0IGlzIGxhdGVyIHVzZWQgdG8gZGV0ZXJtaW5lIHdoaWNoIHJlbGF0aW9ucyB0byB1bmxv Y2sgd2hlbgorICogcmVsZWFzaW5nIGV4ZWN1dGlvbiBsb2Nrcy4KKyAqCisgKiBFeGVjdXRvclBy ZXAgc3RhdGUgaXMgYWxsb2NhdGVkIGluICdjb250ZXh0JyBhbmQgb3duZWQgYnkgJ293bmVyJy4K KyAqLwordHlwZWRlZiBzdHJ1Y3QgQ2FjaGVkUGxhblByZXBEYXRhCit7CisJTGlzdCAgICpwcmVw X2xpc3Q7CQkvKiBvbmUgRXhlY1ByZXAgcGVyIFBsYW5uZWRTdG10LCBvciBOVUxMICovCisJUGFy YW1MaXN0SW5mbyBwYXJhbXM7CS8qIHBhcmFtcyB2aXNpYmxlIHRvIEV4ZWN1dG9yUHJlcCAqLwor CU1lbW9yeUNvbnRleHQgY29udGV4dDsJLyogd2hlcmUgdG8gYWxsb2NhdGUgRXhlY1ByZXAgb2Jq ZWN0cyAqLworCVJlc291cmNlT3duZXIgb3duZXI7CS8qIFJlc291cmNlT3duZXIgZm9yIEV4ZWN1 dG9yUHJlcCBzdGF0ZSAqLworCWludAkJZWZsYWdzOwkJCS8qIGV4ZWN1dG9yIGZsYWdzIHRvIHBh c3MgdG8gRXhlY3V0b3JQcmVwICovCit9IENhY2hlZFBsYW5QcmVwRGF0YTsKKwogZXh0ZXJuIHZv aWQgSW5pdFBsYW5DYWNoZSh2b2lkKTsKIGV4dGVybiB2b2lkIFJlc2V0UGxhbkNhY2hlKHZvaWQp OwogCkBAIC0yNDAsNyArMjYxLDggQEAgZXh0ZXJuIExpc3QgKkNhY2hlZFBsYW5HZXRUYXJnZXRM aXN0KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiBleHRlcm4gQ2FjaGVkUGxhbiAqR2V0 Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogCQkJCQkJCQkgUGFyYW1M aXN0SW5mbyBib3VuZFBhcmFtcywKIAkJCQkJCQkJIFJlc291cmNlT3duZXIgb3duZXIsCi0JCQkJ CQkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CisJCQkJCQkJCSBRdWVyeUVudmlyb25t ZW50ICpxdWVyeUVudiwKKwkJCQkJCQkJIENhY2hlZFBsYW5QcmVwRGF0YSAqY3ByZXApOwogZXh0 ZXJuIHZvaWQgUmVsZWFzZUNhY2hlZFBsYW4oQ2FjaGVkUGxhbiAqcGxhbiwgUmVzb3VyY2VPd25l ciBvd25lcik7CiAKIGV4dGVybiBib29sIENhY2hlZFBsYW5BbGxvd3NTaW1wbGVWYWxpZGl0eUNo ZWNrKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCi0tIAoyLjQ3LjMKCg== --000000000000c845e80644671a60 Content-Type: application/octet-stream; name="v4-0005-Add-test-exercising-prep-cleanup-on-cached-plan-i.patch" Content-Disposition: attachment; filename="v4-0005-Add-test-exercising-prep-cleanup-on-cached-plan-i.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_miebf87m1 RnJvbSA3NzQ4NTNiOGQzYzBmOGQ0ZWUxYWZjODMyOTUyNmU3ZDIyOTg3Y2FiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMjAgTm92IDIwMjUgMTU6MzU6NDcgKzA5MDAKU3ViamVjdDogW1BBVENIIHY0 IDUvNl0gQWRkIHRlc3QgZXhlcmNpc2luZyBwcmVwIGNsZWFudXAgb24gY2FjaGVkLXBsYW4KIGlu dmFsaWRhdGlvbgoKQWRkIGEgcmVncmVzc2lvbiB0ZXN0IHRoYXQgY2F1c2VzIGEgZ2VuZXJpYyBw bGFuIHRvIGJlY29tZSBpbnZhbGlkCndoaWxlIHBydW5pbmctYXdhcmUgc2V0dXAgaXMgcnVubmlu Zy4gVGhlIHBydW5pbmcgZXhwcmVzc2lvbiBjYWxscyBhCmZ1bmN0aW9uIHRoYXQgY2FuIHBlcmZv cm0gRERMIG9uIGEgcGFydGl0aW9uLCBtYWtpbmcgdGhlIHBsYW4gc3RhbGUKZHVyaW5nIHJldXNl LgoKVGhlIHRlc3QncyBwdXJwb3NlIGlzIHRvIGRyaXZlIGV4ZWN1dGlvbiB0aHJvdWdoIHRoZSBp bnZhbGlkYXRpb24KcGF0aCB0aGF0IGRpc2NhcmRzIGFueSBFeGVjdXRvclByZXAgc3RhdGUgY3Jl YXRlZCBiZWZvcmUgdGhlIHBsYW4gd2FzCmZvdW5kIGludmFsaWQsIHByb3ZpZGluZyBjb3ZlcmFn ZSBmb3IgdGhhdCBjbGVhbnVwIGxvZ2ljLgotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3Bs YW5jYWNoZS5jICAgICB8IDM4ICsrKysrKysrKysrKystLQogc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9wbGFuY2FjaGUub3V0IHwgNjEgKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL3Rl c3QvcmVncmVzcy9zcWwvcGxhbmNhY2hlLnNxbCAgICAgIHwgNTAgKysrKysrKysrKysrKysrKysr KysKIDMgZmlsZXMgY2hhbmdlZCwgMTQ0IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMgYi9zcmMvYmFj a2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYwppbmRleCBjMWNmZDQ3NDIyYy4uYTlhNGUxMWQx YTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCkBAIC0xMDMsNiArMTAzLDcgQEAg c3RhdGljIFF1ZXJ5ICpRdWVyeUxpc3RHZXRQcmltYXJ5U3RtdChMaXN0ICpzdG10cyk7CiBzdGF0 aWMgdm9pZCBBY3F1aXJlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10X2xpc3QsIGJvb2wgYWNxdWly ZSk7CiBzdGF0aWMgdm9pZCBBY3F1aXJlRXhlY3V0b3JMb2Nrc1VucHJ1bmVkKExpc3QgKnN0bXRf bGlzdCwgYm9vbCBhY3F1aXJlLAogCQkJCQkJCQkJCSBDYWNoZWRQbGFuUHJlcERhdGEgKmNwcmVw KTsKK3N0YXRpYyB2b2lkIENhY2hlZFBsYW5QcmVwQ2xlYW51cChDYWNoZWRQbGFuUHJlcERhdGEg KmNwcmVwKTsKIHN0YXRpYyB2b2lkIEFjcXVpcmVQbGFubmVyTG9ja3MoTGlzdCAqc3RtdF9saXN0 LCBib29sIGFjcXVpcmUpOwogc3RhdGljIHZvaWQgU2NhblF1ZXJ5Rm9yTG9ja3MoUXVlcnkgKnBh cnNldHJlZSwgYm9vbCBhY3F1aXJlKTsKIHN0YXRpYyBib29sIFNjYW5RdWVyeVdhbGtlcihOb2Rl ICpub2RlLCBib29sICphY3F1aXJlKTsKQEAgLTEwMzMsNiArMTAzNCw5IEBAIFByZXBBbmRDaGVj a0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgQ2FjaGVkUGxhblByZXBE YXRhICpjcHJlcCkKIAogCQkvKiBPb3BzLCB0aGUgcmFjZSBjYXNlIGhhcHBlbmVkLiAgUmVsZWFz ZSB1c2VsZXNzIGxvY2tzLiAqLwogCQlBY3F1aXJlRXhlY3V0b3JMb2Nrc1dpdGhQb2xpY3kocGxh bi0+c3RtdF9saXN0LCBwb2xpY3ksIGZhbHNlLCBjcHJlcCk7CisKKwkJLyogQWxzbyBjbGVhbiB1 cCBFeGVjdXRvclByZXAoKSBzdGF0ZSwgaWYgbmVjZXNzYXJ5LiAqLworCQlDYWNoZWRQbGFuUHJl cENsZWFudXAoY3ByZXApOwogCX0KIAogCS8qCkBAIC0yMDY5LDcgKzIwNzMsNiBAQCBMb2NrUmVs aWRzKExpc3QgKnJ0YWJsZSwgQml0bWFwc2V0ICpyZWxpZHMsIGJvb2wgYWNxdWlyZSkKICAqCS0g bG9va3MgdXAgdGhlIEV4ZWNQcmVwIG9iamVjdCBmb3IgZWFjaCBQbGFubmVkU3RtdCBmcm9tIGNw cmVwLT5wcmVwX2xpc3QKICAqCSAgKHdoaWNoIG11c3QgYWxyZWFkeSBiZSBwb3B1bGF0ZWQpCiAg KgktIHVubG9ja3MgdGhlIHNhbWUgcmVsYXRpb25zIGlkZW50aWZpZWQgZHVyaW5nIGFjcXVpcmUK LSAqCS0gY2FsbHMgRXhlY1ByZXBDbGVhbnVwKCkgb24gZWFjaCBFeGVjUHJlcAogICoKICAqIHBy ZXBfbGlzdCBpcyBleHRlbmRlZCBkdXJpbmcgYWNxdWlyZSBhbmQgbXVzdCBtYXRjaCBzdG10X2xp c3Qgb25lLXRvLW9uZQogICogd2hlbiByZWxlYXNpbmcgbG9ja3MuICBNZW1vcnkgYWxsb2NhdGlv biBmb3IgRXhlY1ByZXAgaGFwcGVucyBpbgpAQCAtMjE2NSwxNSArMjE2OCw0MCBAQCBBY3F1aXJl RXhlY3V0b3JMb2Nrc1VucHJ1bmVkKExpc3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJlLAogCQkJ TG9ja1JlbGlkcyhwbGFubmVkc3RtdC0+cnRhYmxlLCBsb2NrX3JlbGlkcywgYWNxdWlyZSk7CiAJ CQlibXNfZnJlZShsb2NrX3JlbGlkcyk7CiAJCX0KLQotCQkvKiBDbGVhbiB1cCBwcmVwIGlmIHJl bGVhc2luZyBsb2Nrcy4gKi8KLQkJaWYgKCFhY3F1aXJlKQotCQkJRXhlY1ByZXBDbGVhbnVwKHBy ZXApOwogCX0KIAogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIH0KIAorLyoK KyAqIENhY2hlZFBsYW5QcmVwQ2xlYW51cAorICoJCUNsZWFuIHVwIEV4ZWNQcmVwIHN0YXRlIGJ1 aWx0IGZvciBhIGdlbmVyaWMgcGxhbi4KKyAqCisgKiBUaGlzIGlzIHVzZWQgaW4gdGhlIGNvcm5l ciBjYXNlIHdoZXJlIFByZXBBbmRDaGVja0NhY2hlZFBsYW4oKSBkaXNjb3ZlcnMKKyAqIHRoYXQg YSBDYWNoZWRQbGFuIGhhcyBiZWNvbWUgaW52YWxpZCBhZnRlciBBY3F1aXJlRXhlY3V0b3JMb2Nr c1VucHJ1bmVkKCkKKyAqIGhhcyBhbHJlYWR5IHJ1bi4gIEluIHRoYXQgY2FzZSB3ZSBtdXN0IGJv dGggcmVsZWFzZSB0aGUgZXhlY3V0aW9uIGxvY2tzCisgKiBhbmQgZGlzcG9zZSBvZiB0aGUgRXhl Y1ByZXAgbGlzdCBzdG9yZWQgaW4gQ2FjaGVkUGxhblByZXBEYXRhLCBzaW5jZSB0aGUKKyAqIGV4 ZWN1dG9yIHdpbGwgbmV2ZXIgc2VlIG9yIGNsZWFuIGl0IHVwLgorICovCitzdGF0aWMgdm9pZAor Q2FjaGVkUGxhblByZXBDbGVhbnVwKENhY2hlZFBsYW5QcmVwRGF0YSAqY3ByZXApCit7CisJTGlz dENlbGwgICAqbGM7CisKKwlpZiAoY3ByZXAgPT0gTlVMTCkKKwkJcmV0dXJuOworCisJZm9yZWFj aChsYywgY3ByZXAtPnByZXBfbGlzdCkKKwl7CisJCUV4ZWNQcmVwICpwcmVwID0gKEV4ZWNQcmVw ICopIGxmaXJzdChsYyk7CisKKwkJRXhlY1ByZXBDbGVhbnVwKHByZXApOworCX0KKworCWxpc3Rf ZnJlZShjcHJlcC0+cHJlcF9saXN0KTsKKwljcHJlcC0+cHJlcF9saXN0ID0gTklMOworfQorCiAv KgogICogQWNxdWlyZVBsYW5uZXJMb2NrczogYWNxdWlyZSBsb2NrcyBuZWVkZWQgZm9yIHBsYW5u aW5nIG9mIGEgcXVlcnl0cmVlIGxpc3Q7CiAgKiBvciByZWxlYXNlIHRoZW0gaWYgYWNxdWlyZSBp cyBmYWxzZS4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGxhbmNhY2hl Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGxhbmNhY2hlLm91dAppbmRleCA0ZTU5 MTg4MTk2Yy4uMjZjNGM1ZTEwZmQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcGxhbmNhY2hlLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BsYW5jYWNo ZS5vdXQKQEAgLTM5OCwzICszOTgsNjQgQEAgc2VsZWN0IG5hbWUsIGdlbmVyaWNfcGxhbnMsIGN1 c3RvbV9wbGFucyBmcm9tIHBnX3ByZXBhcmVkX3N0YXRlbWVudHMKICgxIHJvdykKIAogZHJvcCB0 YWJsZSB0ZXN0X21vZGU7CistLSBUZXN0IGludmFsaWRhdGlvbiBvZiBhIGdlbmVyaWMgcGxhbiBk dXJpbmcgcHJ1bmluZy1hd2FyZSBsb2NrIHNldHVwLgorLS0gVGhlIHBydW5pbmcgZXhwcmVzc2lv biB1c2VzIGEgc3RhYmxlIFNRTCBmdW5jdGlvbiB0aGF0IGNhbGxzIGEgdm9sYXRpbGUKKy0tIHBs cGdzcWwgZnVuY3Rpb24uICBUaGF0IGZ1bmN0aW9uIHBlcmZvcm1zIERETCBvbiBhIHBhcnRpdGlv biB3aGVuIGEKKy0tIHNlcGFyYXRlICJzaWduYWwiIHRhYmxlIHNheXMgdG8gZG8gc28uICBUaGUg c2Vjb25kIEVYRUNVVEUgc2hvdWxkCistLSByZXBsYW4gY2xlYW5seSBhZnRlciB0aGUgRERMLgor c2V0IHBsYW5fY2FjaGVfbW9kZSB0byBmb3JjZV9nZW5lcmljX3BsYW47CitjcmVhdGUgdGFibGUg aW52YWxfZHVyaW5nX3BydW5pbmdfcCAoYSBpbnQpIHBhcnRpdGlvbiBieSBsaXN0IChhKTsKK2Ny ZWF0ZSB0YWJsZSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19wMSBwYXJ0aXRpb24gb2YgaW52YWxfZHVy aW5nX3BydW5pbmdfcCBmb3IgdmFsdWVzIGluICgxKTsKK2NyZWF0ZSB0YWJsZSBpbnZhbF9kdXJp bmdfcHJ1bmluZ19wMiBwYXJ0aXRpb24gb2YgaW52YWxfZHVyaW5nX3BydW5pbmdfcCBmb3IgdmFs dWVzIGluICgyKTsKK2luc2VydCBpbnRvIGludmFsX2R1cmluZ19wcnVuaW5nX3AgdmFsdWVzICgx KSwgKDIpOworY3JlYXRlIHRhYmxlIGludmFsX2R1cmluZ19wcnVuaW5nX3NpZ25hbCAoY3JlYXRl X2lkeCBib29sIG5vdCBudWxsKTsKK2luc2VydCBpbnRvIGludmFsX2R1cmluZ19wcnVuaW5nX3Np Z25hbCB2YWx1ZXMgKGZhbHNlKTsKK2NyZWF0ZSBvciByZXBsYWNlIGZ1bmN0aW9uIGludmFsaWRh dGVfcGxhbmNhY2hlX2Z1bmMoKSByZXR1cm5zIGludAorYXMgJCQKK2RlY2xhcmUKKwljcmVhdGVf aW5kZXggYm9vbDsKK2JlZ2luCisJLS0gUGVyZm9ybSBEREwgb24gYSBwYXJ0aXRpb24gaWYgYXNr ZWQgdG8KKyAgICBzZWxlY3QgY3JlYXRlX2lkeCBpbnRvIGNyZWF0ZV9pbmRleCBmcm9tIGludmFs X2R1cmluZ19wcnVuaW5nX3NpZ25hbCBmb3IgdXBkYXRlOworICAgIGlmIGNyZWF0ZV9pbmRleCA9 IHRydWUgdGhlbgorCQlyYWlzZSBub3RpY2UgJ2NyZWF0aW5nIGluZGV4IG9uIHBhcnRpdGlvbiBp bnZhbF9kdXJpbmdfcHJ1bmluZ19wMSc7CisgICAgICAgIGNyZWF0ZSBpbmRleCBvbiBpbnZhbF9k dXJpbmdfcHJ1bmluZ19wMSAoYSk7CisJCXVwZGF0ZSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19zaWdu YWwgc2V0IGNyZWF0ZV9pZHggPSBmYWxzZTsKKyAgICBlbmQgaWY7CisJLS0gcHJ1bmluZyBwYXJh bWV0ZXIKKyAgICByZXR1cm4gMTsKK2VuZDsKKyQkIGxhbmd1YWdlIHBscGdzcWwgdm9sYXRpbGU7 CitjcmVhdGUgb3IgcmVwbGFjZSBmdW5jdGlvbiBzdGFibGVfcHJ1bmluZ192YWwoKSByZXR1cm5z IGludCBhcyAkJAorCXNlbGVjdCBpbnZhbGlkYXRlX3BsYW5jYWNoZV9mdW5jKCk7CiskJCBsYW5n dWFnZSBzcWwgc3RhYmxlOworcHJlcGFyZSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19xIGFzIHNlbGVj dCAqIGZyb20gaW52YWxfZHVyaW5nX3BydW5pbmdfcCB3aGVyZSBhID0gc3RhYmxlX3BydW5pbmdf dmFsKCk7CistLSBCdWlsZCBhIGdlbmVyaWMgcGxhbiBhbmQgcnVuIHBydW5pbmcgb25jZSwgYnV0 IGRvbid0IHNldCB0aGUgc2lnbmFsCistLSBmb3IgaW52YWxpZGF0ZV9wbGFuY2FjaGVfZnVuYygp IHRvIHBlcmZvcm0gdGhlIERETC4KK2V4cGxhaW4gKHZlcmJvc2UsIGNvc3RzIG9mZikgZXhlY3V0 ZSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19xOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBBcHBlbmQKKyAgIFN1YnBsYW5zIFJlbW92ZWQ6IDEKKyAgIC0+ICBTZXEgU2Nh biBvbiBwdWJsaWMuaW52YWxfZHVyaW5nX3BydW5pbmdfcDEgaW52YWxfZHVyaW5nX3BydW5pbmdf cF8xCisgICAgICAgICBPdXRwdXQ6IGludmFsX2R1cmluZ19wcnVuaW5nX3BfMS5hCisgICAgICAg ICBGaWx0ZXI6IChpbnZhbF9kdXJpbmdfcHJ1bmluZ19wXzEuYSA9IHN0YWJsZV9wcnVuaW5nX3Zh bCgpKQorKDUgcm93cykKKworLS0gUmV1c2UgdGhlIGdlbmVyaWMgcGxhbi4gIE1ha2UgaW52YWxp ZGF0ZV9wbGFuY2FjaGVfZnVuYygpIHBlcmZvcm0gRERMCistLSBkdXJpbmcgdGhpcyBleGVjdXRp b24sIHdoaWNoIHNob3VsZCBmb3JjZSByZXBsYW5uaW5nIHdpdGhvdXQgZXJyb3JzLgordXBkYXRl IGludmFsX2R1cmluZ19wcnVuaW5nX3NpZ25hbCBzZXQgY3JlYXRlX2lkeCA9IHRydWU7CitleHBs YWluICh2ZXJib3NlLCBjb3N0cyBvZmYpIGV4ZWN1dGUgaW52YWxfZHVyaW5nX3BydW5pbmdfcTsK K05PVElDRTogIGNyZWF0aW5nIGluZGV4IG9uIHBhcnRpdGlvbiBpbnZhbF9kdXJpbmdfcHJ1bmlu Z19wMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBcHBlbmQKKyAg IFN1YnBsYW5zIFJlbW92ZWQ6IDEKKyAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuaW52YWxfZHVy aW5nX3BydW5pbmdfcDEgaW52YWxfZHVyaW5nX3BydW5pbmdfcF8xCisgICAgICAgICBPdXRwdXQ6 IGludmFsX2R1cmluZ19wcnVuaW5nX3BfMS5hCisgICAgICAgICBGaWx0ZXI6IChpbnZhbF9kdXJp bmdfcHJ1bmluZ19wXzEuYSA9IHN0YWJsZV9wcnVuaW5nX3ZhbCgpKQorKDUgcm93cykKKworZHJv cCB0YWJsZSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19wLCBpbnZhbF9kdXJpbmdfcHJ1bmluZ19zaWdu YWw7Citkcm9wIGZ1bmN0aW9uIGludmFsaWRhdGVfcGxhbmNhY2hlX2Z1bmMsIHN0YWJsZV9wcnVu aW5nX3ZhbDsKK3Jlc2V0IHBsYW5fY2FjaGVfbW9kZTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3BsYW5jYWNoZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wbGFuY2FjaGUu c3FsCmluZGV4IDRiMmYxMWRjYzY0Li5jYzdlYjRkYTRkMyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcGxhbmNhY2hlLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wbGFu Y2FjaGUuc3FsCkBAIC0yMjMsMyArMjIzLDUzIEBAIHNlbGVjdCBuYW1lLCBnZW5lcmljX3BsYW5z LCBjdXN0b21fcGxhbnMgZnJvbSBwZ19wcmVwYXJlZF9zdGF0ZW1lbnRzCiAgIHdoZXJlICBuYW1l ID0gJ3Rlc3RfbW9kZV9wcCc7CiAKIGRyb3AgdGFibGUgdGVzdF9tb2RlOworCistLSBUZXN0IGlu dmFsaWRhdGlvbiBvZiBhIGdlbmVyaWMgcGxhbiBkdXJpbmcgcHJ1bmluZy1hd2FyZSBsb2NrIHNl dHVwLgorLS0gVGhlIHBydW5pbmcgZXhwcmVzc2lvbiB1c2VzIGEgc3RhYmxlIFNRTCBmdW5jdGlv biB0aGF0IGNhbGxzIGEgdm9sYXRpbGUKKy0tIHBscGdzcWwgZnVuY3Rpb24uICBUaGF0IGZ1bmN0 aW9uIHBlcmZvcm1zIERETCBvbiBhIHBhcnRpdGlvbiB3aGVuIGEKKy0tIHNlcGFyYXRlICJzaWdu YWwiIHRhYmxlIHNheXMgdG8gZG8gc28uICBUaGUgc2Vjb25kIEVYRUNVVEUgc2hvdWxkCistLSBy ZXBsYW4gY2xlYW5seSBhZnRlciB0aGUgRERMLgorc2V0IHBsYW5fY2FjaGVfbW9kZSB0byBmb3Jj ZV9nZW5lcmljX3BsYW47CitjcmVhdGUgdGFibGUgaW52YWxfZHVyaW5nX3BydW5pbmdfcCAoYSBp bnQpIHBhcnRpdGlvbiBieSBsaXN0IChhKTsKK2NyZWF0ZSB0YWJsZSBpbnZhbF9kdXJpbmdfcHJ1 bmluZ19wMSBwYXJ0aXRpb24gb2YgaW52YWxfZHVyaW5nX3BydW5pbmdfcCBmb3IgdmFsdWVzIGlu ICgxKTsKK2NyZWF0ZSB0YWJsZSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19wMiBwYXJ0aXRpb24gb2Yg aW52YWxfZHVyaW5nX3BydW5pbmdfcCBmb3IgdmFsdWVzIGluICgyKTsKK2luc2VydCBpbnRvIGlu dmFsX2R1cmluZ19wcnVuaW5nX3AgdmFsdWVzICgxKSwgKDIpOworCitjcmVhdGUgdGFibGUgaW52 YWxfZHVyaW5nX3BydW5pbmdfc2lnbmFsIChjcmVhdGVfaWR4IGJvb2wgbm90IG51bGwpOworaW5z ZXJ0IGludG8gaW52YWxfZHVyaW5nX3BydW5pbmdfc2lnbmFsIHZhbHVlcyAoZmFsc2UpOworY3Jl YXRlIG9yIHJlcGxhY2UgZnVuY3Rpb24gaW52YWxpZGF0ZV9wbGFuY2FjaGVfZnVuYygpIHJldHVy bnMgaW50CithcyAkJAorZGVjbGFyZQorCWNyZWF0ZV9pbmRleCBib29sOworYmVnaW4KKwktLSBQ ZXJmb3JtIERETCBvbiBhIHBhcnRpdGlvbiBpZiBhc2tlZCB0bworICAgIHNlbGVjdCBjcmVhdGVf aWR4IGludG8gY3JlYXRlX2luZGV4IGZyb20gaW52YWxfZHVyaW5nX3BydW5pbmdfc2lnbmFsIGZv ciB1cGRhdGU7CisgICAgaWYgY3JlYXRlX2luZGV4ID0gdHJ1ZSB0aGVuCisJCXJhaXNlIG5vdGlj ZSAnY3JlYXRpbmcgaW5kZXggb24gcGFydGl0aW9uIGludmFsX2R1cmluZ19wcnVuaW5nX3AxJzsK KyAgICAgICAgY3JlYXRlIGluZGV4IG9uIGludmFsX2R1cmluZ19wcnVuaW5nX3AxIChhKTsKKwkJ dXBkYXRlIGludmFsX2R1cmluZ19wcnVuaW5nX3NpZ25hbCBzZXQgY3JlYXRlX2lkeCA9IGZhbHNl OworICAgIGVuZCBpZjsKKwktLSBwcnVuaW5nIHBhcmFtZXRlcgorICAgIHJldHVybiAxOworZW5k OworJCQgbGFuZ3VhZ2UgcGxwZ3NxbCB2b2xhdGlsZTsKKworY3JlYXRlIG9yIHJlcGxhY2UgZnVu Y3Rpb24gc3RhYmxlX3BydW5pbmdfdmFsKCkgcmV0dXJucyBpbnQgYXMgJCQKKwlzZWxlY3QgaW52 YWxpZGF0ZV9wbGFuY2FjaGVfZnVuYygpOworJCQgbGFuZ3VhZ2Ugc3FsIHN0YWJsZTsKKworcHJl cGFyZSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19xIGFzIHNlbGVjdCAqIGZyb20gaW52YWxfZHVyaW5n X3BydW5pbmdfcCB3aGVyZSBhID0gc3RhYmxlX3BydW5pbmdfdmFsKCk7CisKKy0tIEJ1aWxkIGEg Z2VuZXJpYyBwbGFuIGFuZCBydW4gcHJ1bmluZyBvbmNlLCBidXQgZG9uJ3Qgc2V0IHRoZSBzaWdu YWwKKy0tIGZvciBpbnZhbGlkYXRlX3BsYW5jYWNoZV9mdW5jKCkgdG8gcGVyZm9ybSB0aGUgRERM LgorZXhwbGFpbiAodmVyYm9zZSwgY29zdHMgb2ZmKSBleGVjdXRlIGludmFsX2R1cmluZ19wcnVu aW5nX3E7CisKKy0tIFJldXNlIHRoZSBnZW5lcmljIHBsYW4uICBNYWtlIGludmFsaWRhdGVfcGxh bmNhY2hlX2Z1bmMoKSBwZXJmb3JtIERETAorLS0gZHVyaW5nIHRoaXMgZXhlY3V0aW9uLCB3aGlj aCBzaG91bGQgZm9yY2UgcmVwbGFubmluZyB3aXRob3V0IGVycm9ycy4KK3VwZGF0ZSBpbnZhbF9k dXJpbmdfcHJ1bmluZ19zaWduYWwgc2V0IGNyZWF0ZV9pZHggPSB0cnVlOworZXhwbGFpbiAodmVy Ym9zZSwgY29zdHMgb2ZmKSBleGVjdXRlIGludmFsX2R1cmluZ19wcnVuaW5nX3E7CisKK2Ryb3Ag dGFibGUgaW52YWxfZHVyaW5nX3BydW5pbmdfcCwgaW52YWxfZHVyaW5nX3BydW5pbmdfc2lnbmFs OworZHJvcCBmdW5jdGlvbiBpbnZhbGlkYXRlX3BsYW5jYWNoZV9mdW5jLCBzdGFibGVfcHJ1bmlu Z192YWw7CisKK3Jlc2V0IHBsYW5fY2FjaGVfbW9kZTsKLS0gCjIuNDcuMwoK --000000000000c845e80644671a60 Content-Type: application/octet-stream; name="v4-0001-Refactor-partition-pruning-initialization-for-cla.patch" Content-Disposition: attachment; filename="v4-0001-Refactor-partition-pruning-initialization-for-cla.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_miebf8805 RnJvbSAyZDdlOTcyYmYwZTc3MmI1NTY3NGQ2YzM5MDY4Mjc3N2RjOGM5OWEzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgMTEgTm92IDIwMjUgMjE6MTg6MjQgKzA5MDAKU3ViamVjdDogW1BBVENIIHY0 IDEvNl0gUmVmYWN0b3IgcGFydGl0aW9uIHBydW5pbmcgaW5pdGlhbGl6YXRpb24gZm9yIGNsYXJp dHkKIGFuZCBtb2R1bGFyaXR5CgpNb3ZlIHRoZSBjcmVhdGlvbiBvZiBQYXJ0aXRpb25QcnVuZVN0 YXRlIHN0cnVjdHVyZXMgb3V0IG9mCkV4ZWNEb0luaXRpYWxQcnVuaW5nKCkgaW50byBhIG5ldyBF eGVjQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZXMoKQpmdW5jdGlvbi4gVGhpcyBzZXBhcmF0ZXMg dGhlIHNldHVwIG9mIHBydW5pbmcgc3RhdGUgZnJvbSB0aGUgZXhlY3V0aW9uCm9mIGluaXRpYWwg cHJ1bmluZyBsb2dpYywgbWFraW5nIHRoZSBjb2RlIGNsZWFyZXIgYW5kIGVhc2llciB0bwptYWlu dGFpbi4KCkFsc28gc2ltcGxpZnkgaGFuZGxpbmcgb2YgdW5wcnVuZWQgcmVsaWRzIGJ5IG1vdmlu ZyByZXNwb25zaWJpbGl0eQpmb3IgcmVjb3JkaW5nIHRoZW0gaW4gRVN0YXRlIGludG8gQ3JlYXRl UGFydGl0aW9uUHJ1bmVTdGF0ZSgpLAphdm9pZGluZyB0aGUgbmVlZCB0byBwYXNzIGFsbF9sZWFm cGFydF9ydGlzIGFzIGFuIG91dCBwYXJhbWV0ZXIuCgpUaGlzIHJlZmFjdG9yaW5nIGFsbG93cyBj YWxsZXJzIHRvIHJldXNlIHRoZSBwcnVuaW5nIHNldHVwIGxvZ2ljCndpdGhvdXQgYWx3YXlzIHRy aWdnZXJpbmcgcHJ1bmluZywgYSBjYXBhYmlsaXR5IHVzZWZ1bCBmb3IgZnV0dXJlIHVzZQpjYXNl cyB0aGF0IG1heSBvbmx5IG5lZWQgbWV0YWRhdGEgaW5pdGlhbGl6YXRpb24uCi0tLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY1BhcnRpdGlvbi5jIHwgNzAgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQogc3Jj L2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oIHwgIDEgKwogMyBmaWxlcyBjaGFuZ2Vk LCA0NCBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4u YwppbmRleCAyN2M5ZWVjNjk3Yi4uZjVmNDk4NjM4M2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4u YwpAQCAtODY4LDYgKzg2OCw3IEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQg ZWZsYWdzKQogCSAqIHRvIGVhY2ggUGFydGl0aW9uUHJ1bmVJbmZvIGVudHJ5LCBhbmQgdGhlIGVz X3BhcnRfcHJ1bmVfcmVzdWx0cyBsaXN0IGlzCiAJICogcGFyYWxsZWwgdG8gZXNfcGFydF9wcnVu ZV9pbmZvcy4KIAkgKi8KKwlFeGVjQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZXMoZXN0YXRlKTsK IAlFeGVjRG9Jbml0aWFsUHJ1bmluZyhlc3RhdGUpOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQYXJ0aXRpb24uYwppbmRleCAwZGNjZTE4MWYwOS4uNjE1NTk2NDI2NjIgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjUGFydGl0aW9uLmMKQEAgLTE4Miw4ICsxODIsNyBAQCBzdGF0aWMgY2hhciAq RXhlY0J1aWxkU2xvdFBhcnRpdGlvbktleURlc2NyaXB0aW9uKFJlbGF0aW9uIHJlbCwKIHN0YXRp YyBMaXN0ICphZGp1c3RfcGFydGl0aW9uX2NvbG5vcyhMaXN0ICpjb2xub3MsIFJlc3VsdFJlbElu Zm8gKmxlYWZfcGFydF9ycmkpOwogc3RhdGljIExpc3QgKmFkanVzdF9wYXJ0aXRpb25fY29sbm9z X3VzaW5nX21hcChMaXN0ICpjb2xub3MsIEF0dHJNYXAgKmF0dHJNYXApOwogc3RhdGljIFBhcnRp dGlvblBydW5lU3RhdGUgKkNyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoRVN0YXRlICplc3RhdGUs Ci0JCQkJCQkJCQkJCQkJICBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbywKLQkJCQkJCQkJ CQkJCQkgIEJpdG1hcHNldCAqKmFsbF9sZWFmcGFydF9ydGlzKTsKKwkJCQkJCQkJCQkJCQkgIFBh cnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKTsKIHN0YXRpYyB2b2lkIEluaXRQYXJ0aXRpb25Q cnVuZUNvbnRleHQoUGFydGl0aW9uUHJ1bmVDb250ZXh0ICpjb250ZXh0LAogCQkJCQkJCQkJICBM aXN0ICpwcnVuaW5nX3N0ZXBzLAogCQkJCQkJCQkJICBQYXJ0aXRpb25EZXNjIHBhcnRkZXNjLApA QCAtMTc3Myw2ICsxNzcyLDkgQEAgYWRqdXN0X3BhcnRpdGlvbl9jb2xub3NfdXNpbmdfbWFwKExp c3QgKmNvbG5vcywgQXR0ck1hcCAqYXR0ck1hcCkKICAqCiAgKiBGdW5jdGlvbnM6CiAgKgorICog RXhlY0NyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGVzCisgKgkJQ3JlYXRlIFBhcnRpdGlvblBydW5l U3RhdGUgZm9yIGFsbCBQYXJ0aXRpb25QcnVuZUluZm9zIGluIHRoZSBFU3RhdGUKKyAqCiAgKiBF eGVjRG9Jbml0aWFsUHJ1bmluZzoKICAqCQlQZXJmb3JtIHJ1bnRpbWUgImluaXRpYWwiIHBydW5p bmcsIGlmIG5lY2Vzc2FyeSwgdG8gZGV0ZXJtaW5lIHRoZSBzZXQKICAqCQlvZiBjaGlsZCBzdWJu b2RlcyB0aGF0IG5lZWQgdG8gYmUgaW5pdGlhbGl6ZWQgZHVyaW5nIEV4ZWNJbml0Tm9kZSgpIGZv cgpAQCAtMTc5Nyw2ICsxNzk5LDI5IEBAIGFkanVzdF9wYXJ0aXRpb25fY29sbm9zX3VzaW5nX21h cChMaXN0ICpjb2xub3MsIEF0dHJNYXAgKmF0dHJNYXApCiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAq LwogCisvKgorICogRXhlY0NyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGVzCisgKgorICogQ3JlYXRl IGEgUGFydGl0aW9uUHJ1bmVTdGF0ZSBmb3IgZWFjaCBQYXJ0aXRpb25QcnVuZUluZm8gaW4gdGhl IGVzdGF0ZSwKKyAqIGFuZCBzYXZlIHRoZW0gaW4gZXN0YXRlLT5lc19wYXJ0X3BydW5lX3N0YXRl cy4gVGhpcyBzZXR1cCBpcyByZXF1aXJlZAorICogYmVmb3JlIGFueSBpbml0aWFsIG9yIHJ1bnRp bWUgcHJ1bmluZyBjYW4gb2NjdXIuCisgKi8KK3ZvaWQKK0V4ZWNDcmVhdGVQYXJ0aXRpb25QcnVu ZVN0YXRlcyhFU3RhdGUgKmVzdGF0ZSkKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKworCWZvcmVhY2go bGMsIGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcykKKwl7CisJCVBhcnRpdGlvblBydW5lSW5m byAqcHJ1bmVpbmZvID0gbGZpcnN0X25vZGUoUGFydGl0aW9uUHJ1bmVJbmZvLCBsYyk7CisJCVBh cnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGU7CisKKwkJLyogQ3JlYXRlIGFuZCBzYXZlIHRo ZSBQYXJ0aXRpb25QcnVuZVN0YXRlLiAqLworCQlwcnVuZXN0YXRlID0gQ3JlYXRlUGFydGl0aW9u UHJ1bmVTdGF0ZShlc3RhdGUsIHBydW5laW5mbyk7CisJCWVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9z dGF0ZXMgPSBsYXBwZW5kKGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9zdGF0ZXMsCisJCQkJCQkJCQkJ CSAgIHBydW5lc3RhdGUpOworCX0KK30KIAogLyoKICAqIEV4ZWNEb0luaXRpYWxQcnVuaW5nCkBA IC0xODA0LDExICsxODI5LDExIEBAIGFkanVzdF9wYXJ0aXRpb25fY29sbm9zX3VzaW5nX21hcChM aXN0ICpjb2xub3MsIEF0dHJNYXAgKmF0dHJNYXApCiAgKgkJb2YgY2hpbGQgc3Vibm9kZXMgdGhh dCBuZWVkIHRvIGJlIGluaXRpYWxpemVkIGR1cmluZyBFeGVjSW5pdE5vZGUoKSBmb3IKICAqCQlw bGFuIG5vZGVzIHRoYXQgc3VwcG9ydCBwYXJ0aXRpb24gcHJ1bmluZy4KICAqCi0gKiBUaGlzIGZ1 bmN0aW9uIGl0ZXJhdGVzIG92ZXIgZWFjaCBQYXJ0aXRpb25QcnVuZUluZm8gZW50cnkgaW4KLSAq IGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcy4gRm9yIGVhY2ggZW50cnksIGl0IGNyZWF0ZXMg YSBQYXJ0aXRpb25QcnVuZVN0YXRlCi0gKiBhbmQgYWRkcyBpdCB0byBlc19wYXJ0X3BydW5lX3N0 YXRlcy4gIEV4ZWNJbml0UGFydGl0aW9uRXhlY1BydW5pbmcoKSBhY2Nlc3NlcworICogVGhpcyBm dW5jdGlvbiBpdGVyYXRlcyBvdmVyIGVhY2ggUGFydGl0aW9uUHJ1bmVTdGF0ZSBpbgorICogZXN0 YXRlLT5lc19wYXJ0X3BydW5lX3N0YXRlcywgd2hpY2ggbXVzdCBoYXZlIGJlZW4gcG9wdWxhdGVk IGVhcmxpZXIgYnkKKyAqIEV4ZWNDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlcygpLiBFeGVjSW5p dFBhcnRpdGlvbkV4ZWNQcnVuaW5nKCkgYWNjZXNzZXMKICAqIHRoZXNlIHN0YXRlcyB0aHJvdWdo IHRoZWlyIGNvcnJlc3BvbmRpbmcgaW5kZXhlcyBpbiBlc19wYXJ0X3BydW5lX3N0YXRlcyBhbmQK LSAqIGFzc2lnbiBlYWNoIHN0YXRlIHRvIHRoZSBwYXJlbnQgbm9kZSdzIFBsYW5TdGF0ZSwgZnJv bSB3aGVyZSBpdCB3aWxsIGJlIHVzZWQKKyAqIGFzc2lnbnMgZWFjaCBzdGF0ZSB0byB0aGUgcGFy ZW50IG5vZGUncyBQbGFuU3RhdGUsIGZyb20gd2hlcmUgaXQgd2lsbCBiZSB1c2VkCiAgKiBmb3Ig ImV4ZWMiIHBydW5pbmcuCiAgKgogICogSWYgaW5pdGlhbCBwcnVuaW5nIHN0ZXBzIGV4aXN0IGZv ciBhIFBhcnRpdGlvblBydW5lSW5mbyBlbnRyeSwgdGhpcyBmdW5jdGlvbgpAQCAtMTgyNiwyMCAr MTg1MSwxMyBAQCBFeGVjRG9Jbml0aWFsUHJ1bmluZyhFU3RhdGUgKmVzdGF0ZSkKIHsKIAlMaXN0 Q2VsbCAgICpsYzsKIAotCWZvcmVhY2gobGMsIGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcykK KwlBc3NlcnQoZXN0YXRlLT5lc19wYXJ0X3BydW5lX3Jlc3VsdHMgPT0gTlVMTCk7CisJZm9yZWFj aChsYywgZXN0YXRlLT5lc19wYXJ0X3BydW5lX3N0YXRlcykKIAl7Ci0JCVBhcnRpdGlvblBydW5l SW5mbyAqcHJ1bmVpbmZvID0gbGZpcnN0X25vZGUoUGFydGl0aW9uUHJ1bmVJbmZvLCBsYyk7Ci0J CVBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGU7CisJCVBhcnRpdGlvblBydW5lU3RhdGUg KnBydW5lc3RhdGUgPSAoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqKSBsZmlyc3QobGMpOwogCQlCaXRt YXBzZXQgICp2YWxpZHN1YnBsYW5zID0gTlVMTDsKLQkJQml0bWFwc2V0ICAqYWxsX2xlYWZwYXJ0 X3J0aXMgPSBOVUxMOwogCQlCaXRtYXBzZXQgICp2YWxpZHN1YnBsYW5fcnRpcyA9IE5VTEw7CiAK LQkJLyogQ3JlYXRlIGFuZCBzYXZlIHRoZSBQYXJ0aXRpb25QcnVuZVN0YXRlLiAqLwotCQlwcnVu ZXN0YXRlID0gQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShlc3RhdGUsIHBydW5laW5mbywKLQkJ CQkJCQkJCQkJICAgJmFsbF9sZWFmcGFydF9ydGlzKTsKLQkJZXN0YXRlLT5lc19wYXJ0X3BydW5l X3N0YXRlcyA9IGxhcHBlbmQoZXN0YXRlLT5lc19wYXJ0X3BydW5lX3N0YXRlcywKLQkJCQkJCQkJ CQkJICAgcHJ1bmVzdGF0ZSk7Ci0KIAkJLyoKIAkJICogUGVyZm9ybSBpbml0aWFsIHBydW5pbmcg c3RlcHMsIGlmIGFueSwgYW5kIHNhdmUgdGhlIHJlc3VsdAogCQkgKiBiaXRtYXBzZXQgb3IgTlVM TCBhcyBkZXNjcmliZWQgaW4gdGhlIGhlYWRlciBjb21tZW50LgpAQCAtMTg0Nyw4ICsxODY1LDYg QEAgRXhlY0RvSW5pdGlhbFBydW5pbmcoRVN0YXRlICplc3RhdGUpCiAJCWlmIChwcnVuZXN0YXRl LT5kb19pbml0aWFsX3BydW5lKQogCQkJdmFsaWRzdWJwbGFucyA9IEV4ZWNGaW5kTWF0Y2hpbmdT dWJQbGFucyhwcnVuZXN0YXRlLCB0cnVlLAogCQkJCQkJCQkJCQkJCSAmdmFsaWRzdWJwbGFuX3J0 aXMpOwotCQllbHNlCi0JCQl2YWxpZHN1YnBsYW5fcnRpcyA9IGFsbF9sZWFmcGFydF9ydGlzOwog CiAJCWVzdGF0ZS0+ZXNfdW5wcnVuZWRfcmVsaWRzID0gYm1zX2FkZF9tZW1iZXJzKGVzdGF0ZS0+ ZXNfdW5wcnVuZWRfcmVsaWRzLAogCQkJCQkJCQkJCQkJCSB2YWxpZHN1YnBsYW5fcnRpcyk7CkBA IC0xOTY2LDE0ICsxOTgyLDEyIEBAIEV4ZWNJbml0UGFydGl0aW9uRXhlY1BydW5pbmcoUGxhblN0 YXRlICpwbGFuc3RhdGUsCiAgKiBwYXJlbnQgcGxhbiBub2RlJ3MgUGxhblN0YXRlLgogICoKICAq IElmIGluaXRpYWwgcHJ1bmluZyBzdGVwcyBhcmUgdG8gYmUgc2tpcHBlZCAoZS5nLiwgZHVyaW5n IEVYUExBSU4KLSAqIChHRU5FUklDX1BMQU4pKSwgKmFsbF9sZWFmcGFydF9ydGlzIHdpbGwgYmUg cG9wdWxhdGVkIHdpdGggdGhlIFJUIGluZGV4ZXMgb2YKLSAqIGFsbCBsZWFmIHBhcnRpdGlvbnMg d2hvc2Ugc2Nhbm5pbmcgc3Vibm9kZSBpcyBpbmNsdWRlZCBpbiB0aGUgcGFyZW50IHBsYW4KLSAq IG5vZGUncyBsaXN0IG9mIGNoaWxkIHBsYW5zLiBUaGUgY2FsbGVyIG11c3QgYWRkIHRoZXNlIFJU IGluZGV4ZXMgdG8KLSAqIGVzdGF0ZS0+ZXNfdW5wcnVuZWRfcmVsaWRzLgorICogKEdFTkVSSUNf UExBTikpLCB0aGUgUlQgaW5kZXhlcyBvZiBhbGwgbGVhZiBwYXJ0aXRpb25zIHdob3NlIHNjYW5u aW5nCisgKiBzdWJub2RlIGlzIGluY2x1ZGVkIGluIHRoZSBwYXJlbnQgcGxhbiBub2RlJ3MgbGlz dCBvZiBjaGlsZCBwbGFucyBhcmUKKyAqIGFkZGVkIHRvIGVzdGF0ZS0+ZXNfdW5wcnVuZWRfcmVs aWRzLgogICovCiBzdGF0aWMgUGFydGl0aW9uUHJ1bmVTdGF0ZSAqCi1DcmVhdGVQYXJ0aXRpb25Q cnVuZVN0YXRlKEVTdGF0ZSAqZXN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbywK LQkJCQkJCSAgQml0bWFwc2V0ICoqYWxsX2xlYWZwYXJ0X3J0aXMpCitDcmVhdGVQYXJ0aXRpb25Q cnVuZVN0YXRlKEVTdGF0ZSAqZXN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykK IHsKIAlQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlOwogCWludAkJCW5fcGFydF9oaWVy YXJjaGllczsKQEAgLTIyMDcsOCArMjIyMSw4IEBAIENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUo RVN0YXRlICplc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvLAogCQkJCQkJCQkJ CQkJCSAgIHBpbmZvLT5leGVjcGFyYW1pZHMpOwogCiAJCQkvKgotCQkJICogUmV0dXJuIGFsbCBs ZWFmIHBhcnRpdGlvbiBpbmRleGVzIGlmIHdlJ3JlIHNraXBwaW5nIHBydW5pbmcgaW4KLQkJCSAq IHRoZSBFWFBMQUlOIChHRU5FUklDX1BMQU4pIGNhc2UuCisJCQkgKiBBZGQgYWxsIGxlYWYgcGFy dGl0aW9uIGluZGV4ZXMgdG8gZXNfdW5wcnVuZWRfcmVsaWRzIGlmIHdlJ3JlCisJCQkgKiBza2lw cGluZyBwcnVuaW5nIGluIHRoZSBFWFBMQUlOIChHRU5FUklDX1BMQU4pIGNhc2UuCiAJCQkgKi8K IAkJCWlmIChwaW5mby0+aW5pdGlhbF9wcnVuaW5nX3N0ZXBzICYmICFwcnVuZXN0YXRlLT5kb19p bml0aWFsX3BydW5lKQogCQkJewpAQCAtMjIyMCw4ICsyMjM0LDggQEAgQ3JlYXRlUGFydGl0aW9u UHJ1bmVTdGF0ZShFU3RhdGUgKmVzdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8s CiAJCQkJCUluZGV4CQlydGluZGV4ID0gcHBydW5lLT5sZWFmcGFydF9ydGlfbWFwW3BhcnRfaW5k ZXhdOwogCiAJCQkJCWlmIChydGluZGV4KQotCQkJCQkJKmFsbF9sZWFmcGFydF9ydGlzID0gYm1z X2FkZF9tZW1iZXIoKmFsbF9sZWFmcGFydF9ydGlzLAotCQkJCQkJCQkJCQkJCQkJcnRpbmRleCk7 CisJCQkJCQllc3RhdGUtPmVzX3VucHJ1bmVkX3JlbGlkcyA9CisJCQkJCQkJYm1zX2FkZF9tZW1i ZXIoZXN0YXRlLT5lc191bnBydW5lZF9yZWxpZHMsIHJ0aW5kZXgpOwogCQkJCX0KIAkJCX0KIApk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oIGIvc3JjL2lu Y2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oCmluZGV4IDNiM2Y0NmFjZWQwLi5iYThjYzU5 NGZjOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oCisr KyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaApAQCAtMTMwLDYgKzEzMCw3 IEBAIHR5cGVkZWYgc3RydWN0IFBhcnRpdGlvblBydW5lU3RhdGUKIAlQYXJ0aXRpb25QcnVuaW5n RGF0YSAqcGFydHBydW5lZGF0YVtGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOwogfSBQYXJ0aXRpb25Q cnVuZVN0YXRlOwogCitleHRlcm4gdm9pZCBFeGVjQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZXMo RVN0YXRlICplc3RhdGUpOwogZXh0ZXJuIHZvaWQgRXhlY0RvSW5pdGlhbFBydW5pbmcoRVN0YXRl ICplc3RhdGUpOwogZXh0ZXJuIFBhcnRpdGlvblBydW5lU3RhdGUgKkV4ZWNJbml0UGFydGl0aW9u RXhlY1BydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJCQkJCQkJCQkJCQkJCSBpbnQgbl90 b3RhbF9zdWJwbGFucywKLS0gCjIuNDcuMwoK --000000000000c845e80644671a60--