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 1vxlia-00H7EG-07 for pgsql-hackers@arkaria.postgresql.org; Wed, 04 Mar 2026 12:52:48 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vxliW-00CfSh-1U for pgsql-hackers@arkaria.postgresql.org; Wed, 04 Mar 2026 12:52:44 +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 1vxliW-00CfSY-01 for pgsql-hackers@lists.postgresql.org; Wed, 04 Mar 2026 12:52:44 +0000 Received: from mail-pj1-x1030.google.com ([2607:f8b0:4864:20::1030]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vxliT-00000000WtK-0DJ5 for pgsql-hackers@lists.postgresql.org; Wed, 04 Mar 2026 12:52:43 +0000 Received: by mail-pj1-x1030.google.com with SMTP id 98e67ed59e1d1-3598b2318c2so1951696a91.3 for ; Wed, 04 Mar 2026 04:52:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1772628759; cv=none; d=google.com; s=arc-20240605; b=DQCq5QAlCgCToBI3XeHDDFjCrTJhlcveyxeceLQnDIO+xqsBDKw2mI/6yQbVOhSK8H SJXh1Xlmja6n+G6q2bzQvkkPdwwkpTZ9rwI+g/bV6fGDjL2K9Nm1n/9y5Sokaz2BUYKl R1Ul4LSA7l7qwLGzgVY352Ea+l/pnQZgtBzdyX42Whcq1w51G/TJIcFr4dNJ1t44FEap 7GDT/adznNSLRa5B0e96nr2QmYS5y1ScaNLFbKLIwh2sG9BT2q+gZZ7YbRVQpS+a6uYq CoPm2DwsxXV74iYlVE6N2zJ+vHd+d5CQKvhhMdM9eTB5RXYNoOZbAUzNzU5T9zRgbdAp nYvQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=LK7838DQOZe5TuysXH7ixD7Wwq5guoiAtNhtNgQZs8g=; fh=2RuYnc/4Zoy+7brp3uimUOGV1KC/7eEecYRRhNCqR54=; b=W2AWq6GPpvVtsZ4yvAlNEy3hUF2uigmehnZn5ZHNCC4Hl6DhLVHGU4KlHaSuI39W4+ VynXpZ7gkJrgpPSmkzjbujALFC/5FLJrp7ZCX/8RLFBDdObv28sptz0Q65qL/Y/X1jg+ AXNWzMCCmzNOE/V2iXKMwFJUEEgCSFk5u3URrfW7VXvi96fDFb7YcY90k4GekCdT4EYM e6geeLNbWH3IV9qwqwhFjN+FQGu+5QtVWsXoZ1Wa14OhCdXmwRX5bavgYSI7AapBiQUC nYm4DTTODqkn9ZFHZC2yB/ap2c2weoHmptVKFxqq5qUh2qN2m3lkW+Py4BZBYbgNLcqm adhg==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772628759; x=1773233559; darn=lists.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=LK7838DQOZe5TuysXH7ixD7Wwq5guoiAtNhtNgQZs8g=; b=Yj5zTCiHcNf4dVvMKTglSZAy23pIfCNnDiwPwVHOjjllnUAm6K4q95NEBKrmlHFR0J wR8ptWFCUHGk62+wDev8cNuwWczvlsF4VVDli91siU1ut6jMzDMXfQTwhKhXBBX/a8T2 Elu4gH+jU50pZ3tAAjFJcGZ5kFAq6scEBZCnYlkovDtuzndCBfe1EU/ZSLZ2u0R4wrOL TOx99uahai2QmKQtn4rBMgpOYfeY6VdVOadM0YEjxl9sXKzcyUcI2oLyIdNR7W0gfOmp K2DJNoYBy+i4PAQ4cNRpl5PEk7zDhB/Osvit0K0pbyGzL2SdpT1Gok2Gd8eDqHUmCgcL lCvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772628759; x=1773233559; 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=LK7838DQOZe5TuysXH7ixD7Wwq5guoiAtNhtNgQZs8g=; b=vx+tFtdudKUsHRx8hwse1D5x926+mNEbijsQ7/WE4VecPtqrRPXLcvCCwnB0DGabQW FYa1Bc2O+BH4bZ9HhxtyL/8nIGtxHwSSw3hbn5FgS2GK89qBg4P5KOqFyqx6KPeYzxDs /6CMKjhd38SkONGe/r+cBpiVJUPsYSgtK/N5zzwevI7bmL7yW/9FJjb+JAvRap5hWqy4 odcQmNSHc9qNlb55N+Y/xTpN0eDO0ZGbzhYq3CKZgChMClOokoOeYvosb+FqZZ5Iev8s TwcIBzGEyALtFSR/RyW0hfvQWoClZszBOxxGqCruU4px9hB8ghnOtRwhXSM9dvYLm93v dXAg== X-Forwarded-Encrypted: i=1; AJvYcCWB6qglwXy3GgE9NCMsx8b45zHLA0hrFbyeF2B16nzJAZZa4rwpUW3aJCGxhcT6kzYt3XuWlLoynddOga5a@lists.postgresql.org X-Gm-Message-State: AOJu0YxCfmqRElDJoeueLWexQD/IxRcuyyr20YnhKXYtTD9lBZzbk08X hbNbjvDu457w4u3bvSR2YT+5P9bQNVgtBGaajn2T33nrXc2tjwdAeDcWN+WccO6nst8usRTAYaT +6v4lhdxjqVqqLYTchFDRHTczcSBUUDg= X-Gm-Gg: ATEYQzypgTVgQO5jqSfnZaRPwH9txf4FgDdGS8mtnT0InY5mqm6VgPBw7vzsXsw9m2r 1XTXca+KdkJwQUBJ4w+oQjP61e4lr3plZ/QIqLLKWr+y1mMm8Sxp2wEfsDGaX81AcmnWUKdSDSp KgQQLOmQX0bhBTW81Bof8t0sdtyX+wZL7V4S5PoVJAcntYBRH1kj2w/PUl64t7LoK5jWB74AF6A 2yCP531bixni9igOe/yyu2fO8/duDWeYUCiLcWSfV6CRnrX08tMOBvU0JJAzDSuUsckkc2tcDng /iX0NVESeg== X-Received: by 2002:a17:90b:278d:b0:356:24f0:af08 with SMTP id 98e67ed59e1d1-359a69a288bmr1531660a91.1.1772628758811; Wed, 04 Mar 2026 04:52:38 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Amul Sul Date: Wed, 4 Mar 2026 18:22:00 +0530 X-Gm-Features: AaiRm50YGusvh4tdwywq-JCrEM3q3SBhCZfEBSNKSK_ceDun0OC8YKr6JfNZHTQ Message-ID: Subject: Re: pg_waldump: support decoding of WAL inside tarfile To: Andrew Dunstan Cc: Robert Haas , Chao Li , Jakub Wartak , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000007cf0ac064c324baf" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000007cf0ac064c324baf Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Mar 4, 2026 at 6:07=E2=80=AFAM Andrew Dunstan = wrote: > > > On 2026-03-02 Mo 8:00 AM, Amul Sul wrote: > > On Wed, Feb 18, 2026 at 12:28=E2=80=AFPM Amul Sul w= rote: > >> On Tue, Feb 10, 2026 at 3:06=E2=80=AFPM Amul Sul w= rote: > >>> On Wed, Feb 4, 2026 at 6:39=E2=80=AFPM Amul Sul w= rote: > >>>> On Wed, Jan 28, 2026 at 2:41=E2=80=AFAM Robert Haas wrote: > >>>>> On Tue, Jan 27, 2026 at 7:07=E2=80=AFAM Amul Sul wrote: > >>>>>> In the attached version, I am using the WAL segment name as the ha= sh > >>>>>> key, which is much more straightforward. I have rewritten > >>>>>> read_archive_wal_page(), and it looks much cleaner than before. Th= e > >>>>>> logic to discard irrelevant WAL files is still within > >>>>>> get_archive_wal_entry. I added an explanation for setting cur_wal = to > >>>>>> NULL, which is now handled in the separate function I mentioned > >>>>>> previously. > >>>>>> > >>>>>> Kindly have a look at the attached version; let me know if you are > >>>>>> still not happy with the current approach for filtering/discarding > >>>>>> irrelevant WAL segments. It isn't much different from the previous > >>>>>> version, but I have tried to keep it in a separate routine for bet= ter > >>>>>> code readability, with comments to make it easier to understand. I > >>>>>> also added a comment for ArchivedWALFile. > >>>>> I feel like the division of labor between get_archive_wal_entry() a= nd > >>>>> read_archive_wal_page() is odd. I noticed this in the last version, > >>>>> too, and it still seems to be the case. get_archive_wal_entry() fir= st > >>>>> calls ArchivedWAL_lookup(). If that finds an entry, it just returns= . > >>>>> If it doesn't, it loops until an entry for the requested file shows= up > >>>>> and then returns it. Then control returns to read_archive_wal_page(= ) > >>>>> which loops some more until we have all the data we need for the > >>>>> requested file. But it seems odd to me to have two separate loops > >>>>> here. I think that the first loop is going to call read_archive_fil= e() > >>>>> until we find the beginning of the file that we care about and then > >>>>> the second one is going to call read_archive_file() some more until= we > >>>>> have read enough of it to satisfy the request. It feels odd to me t= o > >>>>> do it that way, as if we told somebody to first wait until 9 o'cloc= k > >>>>> and then wait another 30 minutes, instead of just telling them to w= ait > >>>>> until 9:30. I realize it's not quite the same thing, because apart > >>>>> from calling read_archive_file(), the two loops do different things= , > >>>>> but I still think it looks odd. > >>>>> > >>>>> + /* > >>>>> + * Ignore if the timeline is different or the current segment is n= ot > >>>>> + * the desired one. > >>>>> + */ > >>>>> + XLogFromFileName(entry->fname, &curSegTimeline, &curSegNo, WalSeg= Sz); > >>>>> + if (privateInfo->timeline !=3D curSegTimeline || > >>>>> + privateInfo->startSegNo > curSegNo || > >>>>> + privateInfo->endSegNo < curSegNo || > >>>>> + segno > curSegNo) > >>>>> + { > >>>>> + free_archive_wal_entry(entry->fname, privateInfo); > >>>>> + continue; > >>>>> + } > >>>>> > >>>>> The comment doesn't match the code. If it did, the test would be > >>>>> (privateInfo->timeline !=3D curSegTimeline || segno !=3D curSegno).= But > >>>>> instead the segno test is > rather than !=3D, and the checks agains= t > >>>>> startSegNo and endSegNo aren't explained at all. I think I understa= nd > >>>>> why the segno test uses > rather than !=3D, but it's the point of t= he > >>>>> comment to explain things like that, rather than leaving the reader= to > >>>>> guess. And I don't know why we also need to test startSegNo and > >>>>> endSegNo. > >>>>> > >>>>> I also wonder what the point is of doing XLogFromFileName() on the > >>>>> fname provided by the caller and then again on entry->fname. Couldn= 't > >>>>> you just compare the strings? > >>>>> > >>>>> Again, the division of labor is really odd here. It's the job of > >>>>> astreamer_waldump_content() to skip things that aren't WAL files at > >>>>> all, but it's the job of get_archive_wal_entry() to skip things tha= t > >>>>> are WAL files but not the one we want. I disagree with putting thos= e > >>>>> checks in completely separate parts of the code. > >>>>> > >>>> Keeping the timeline and segment start-end range checks inside the > >>>> archive streamer creates a circular dependency that cannot be resolv= ed > >>>> without a 'dirty hack'. We must read the first available WAL file pa= ge > >>>> to determine the wal_segment_size before it can calculate the target > >>>> segment range. Moving the checks inside the streamer would make it > >>>> impossible to process that initial file, as the necessary filtering > >>>> parameters -- would still be unknown which would need to be skipped > >>>> for the first read somehow. What if later we realized that the first > >>>> WAL file which was allowed to be streamed by skipping that check is > >>>> irrelevant and doesn't fall under the start-end segment range? > >>>> > >>> Please have a look at the attached version, specifically patch 0005. > >>> In astreamer_waldump_content(), I have moved the WAL file filtration > >>> check from get_archive_wal_entry(). This check will be skipped during > >>> the initial read in init_archive_reader(), which instead performs it > >>> explicitly once it determines the WAL segment size and the start/end > >>> segments. > >>> > >>> To access the WAL segment size inside astreamer_waldump_content(), I > >>> have moved the WAL segment size variable into the XLogDumpPrivate > >>> structure in the separate 0004 patch. > >> Attached is an updated version including the aforesaid changes. It > >> includes a new refactoring patch (0001) that moves the logic for > >> identifying tar archives and their compression types from > >> pg_basebackup and pg_verifybackup into a separate-reusable function, > >> per a suggestion from Euler [1]. Additionally, I have added a test > >> for the contrecord decoding to the main patch (now 0006). > >> > >> 1] http://postgr.es/m/3c8e7b02-2152-495a-a0b6-e37cf9286a70@app.fastmai= l.com > >> > > Rebased against the latest master, fixed typos in code comments, and > > replaced palloc0 with palloc0_object. > > > > Hi Amul. > > > I think this looks in pretty good shape. > Thank you very much for looking at the patch. > Attached are patches for a few things I think could be fixed. They are > mostly self-explanatory. The TAP test fix is the only sane way I could > come up with stopping the skip code you had from reporting a wildly > inaccurate number of tests skipped. The sane way to do this from a > Test::More perspective is a subtest, but unfortunately meson does not > like subtest output, which is why we don't use it elsewhere, so the only > way I could come up with was to split this out into a separate test. Of > course, we might just say we don't care about the misreport, in which > case we could just live with things as they are. > I agree that the reported skip number was incorrect, and I have corrected it in the attached patch. I haven't applied your patch for the TAP test improvements yet because I wanted to double-check it first with you; the patch as it stood created duplicate tests already present in 001_basic.pl. To avoid this duplication, I have added a loop that performs tests for both plain and tar WAL directory inputs, similar to the approach used in pg_verifybackup for different compression type tests (e.g., 008_untar.pl, 010_client_untar.pl). I don't have any objection to doing so if you feel the duplication is acceptable, but I feel that using a loop for the tests in 001_basic.pl is a bit tidier. Let me know your thoughts. I have applied all your other patches but skipped the changes to pg_verifybackup.c from cf5955-fixes.patch.no-cfbot, as they seem unrelated or perhaps I have misunderstood them. Regards, Amul --0000000000007cf0ac064c324baf Content-Type: application/x-patch; name="v15-0001-Refactor-Move-tar-archive-parsing-into-a-common-.patch" Content-Disposition: attachment; filename="v15-0001-Refactor-Move-tar-archive-parsing-into-a-common-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmc0y3n40 RnJvbSA1NGZkNzBmMmI1ZGYxMGU2ZGY1NzViNGY4NWVhZWNiOGEzYzFmZjk0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFR1 ZSwgMTcgRmViIDIwMjYgMTQ6NTE6MTEgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxNSAwMS8xMV0g UmVmYWN0b3I6IE1vdmUgdGFyIGFyY2hpdmUgcGFyc2luZyBpbnRvIGEgY29tbW9uCiBsb2NhdGlv bi4KCnBnX2Jhc2ViYWNrdXAgYW5kIHBnX3ZlcmlmeWJhY2t1cCBib3RoIHJlcXVpcmUgbG9naWMg dG8gaWRlbnRpZnkgdGFyCmZpbGVzIGFuZCBkZXRlcm1pbmUgdGhlaXIgY29tcHJlc3Npb24gdHlw ZXMuIFNpbWlsYXIgZnVuY3Rpb25hbGl0eQp3aWxsIGJlIG5lZWRlZCBmb3IgcGdfd2FsZHVtcCB3 aGVuIGl0IGdldHMgdGhlIGNhcGFiaWxpdHkgdG8gZGVjb2RlCldBTCBmaWxlcyBmcm9tIHRhciBh cmNoaXZlcy4gTW92aW5nIHRoaXMgbG9naWMgdG8gYSBjb21tb24gbG9jYXRpb24KYWxsb3dzIGZv ciByZXVzZSBhbmQgcHJldmVudHMgY29kZSBkdXBsaWNhdGlvbi4KLS0tCiBzcmMvYmluL3BnX2Jh c2ViYWNrdXAvcGdfYmFzZWJhY2t1cC5jICAgICB8IDM2ICsrKysrKystLS0tLS0tLS0tLS0tLS0t CiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9wZ192ZXJpZnliYWNrdXAuYyB8IDEyICstLS0tLS0t CiBzcmMvY29tbW9uL2NvbXByZXNzaW9uLmMgICAgICAgICAgICAgICAgICB8IDMwICsrKysrKysr KysrKysrKysrKysKIHNyYy9pbmNsdWRlL2NvbW1vbi9jb21wcmVzc2lvbi5oICAgICAgICAgIHwg IDIgKysKIDQgZmlsZXMgY2hhbmdlZCwgNDQgaW5zZXJ0aW9ucygrKSwgMzYgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2Jhc2ViYWNrdXAuYyBiL3Ny Yy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19iYXNlYmFja3VwLmMKaW5kZXggZmExNjlhOGQ2NDIuLmMx YTQ2NzJhYTZmIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdfYmFzZWJhY2t1 cC5jCisrKyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19iYXNlYmFja3VwLmMKQEAgLTEwNzAs MTIgKzEwNzAsOSBAQCBDcmVhdGVCYWNrdXBTdHJlYW1lcihjaGFyICphcmNoaXZlX25hbWUsIGNo YXIgKnNwY2xvY2F0aW9uLAogCWFzdHJlYW1lciAgKm1hbmlmZXN0X2luamVjdF9zdHJlYW1lciA9 IE5VTEw7CiAJYm9vbAkJaW5qZWN0X21hbmlmZXN0OwogCWJvb2wJCWlzX3RhciwKLQkJCQlpc190 YXJfZ3osCi0JCQkJaXNfdGFyX2x6NCwKLQkJCQlpc190YXJfenN0ZCwKIAkJCQlpc19jb21wcmVz c2VkX3RhcjsKKwlwZ19jb21wcmVzc19hbGdvcml0aG0gY29tcHJlc3NlZF90YXJfYWxnb3JpdGht OwogCWJvb2wJCW11c3RfcGFyc2VfYXJjaGl2ZTsKLQlpbnQJCQlhcmNoaXZlX25hbWVfbGVuID0g c3RybGVuKGFyY2hpdmVfbmFtZSk7CiAKIAkvKgogCSAqIE5vcm1hbGx5LCB3ZSBlbWl0IHRoZSBi YWNrdXAgbWFuaWZlc3QgYXMgYSBzZXBhcmF0ZSBmaWxlLCBidXQgd2hlbgpAQCAtMTA4NCwyNCAr MTA4MSwxMyBAQCBDcmVhdGVCYWNrdXBTdHJlYW1lcihjaGFyICphcmNoaXZlX25hbWUsIGNoYXIg KnNwY2xvY2F0aW9uLAogCSAqLwogCWluamVjdF9tYW5pZmVzdCA9IChmb3JtYXQgPT0gJ3QnICYm IHN0cmNtcChiYXNlZGlyLCAiLSIpID09IDAgJiYgbWFuaWZlc3QpOwogCi0JLyogSXMgdGhpcyBh IHRhciBhcmNoaXZlPyAqLwotCWlzX3RhciA9IChhcmNoaXZlX25hbWVfbGVuID4gNCAmJgotCQkJ ICBzdHJjbXAoYXJjaGl2ZV9uYW1lICsgYXJjaGl2ZV9uYW1lX2xlbiAtIDQsICIudGFyIikgPT0g MCk7Ci0KLQkvKiBJcyB0aGlzIGEgLnRhci5neiBhcmNoaXZlPyAqLwotCWlzX3Rhcl9neiA9IChh cmNoaXZlX25hbWVfbGVuID4gNyAmJgotCQkJCSBzdHJjbXAoYXJjaGl2ZV9uYW1lICsgYXJjaGl2 ZV9uYW1lX2xlbiAtIDcsICIudGFyLmd6IikgPT0gMCk7Ci0KLQkvKiBJcyB0aGlzIGEgLnRhci5s ejQgYXJjaGl2ZT8gKi8KLQlpc190YXJfbHo0ID0gKGFyY2hpdmVfbmFtZV9sZW4gPiA4ICYmCi0J CQkJICBzdHJjbXAoYXJjaGl2ZV9uYW1lICsgYXJjaGl2ZV9uYW1lX2xlbiAtIDgsICIudGFyLmx6 NCIpID09IDApOwotCi0JLyogSXMgdGhpcyBhIC50YXIuenN0IGFyY2hpdmU/ICovCi0JaXNfdGFy X3pzdGQgPSAoYXJjaGl2ZV9uYW1lX2xlbiA+IDggJiYKLQkJCQkgICBzdHJjbXAoYXJjaGl2ZV9u YW1lICsgYXJjaGl2ZV9uYW1lX2xlbiAtIDgsICIudGFyLnpzdCIpID09IDApOworCS8qIENoZWNr IHdoZXRoZXIgaXQgaXMgYSB0YXIgYXJjaGl2ZSBhbmQgaXRzIGNvbXByZXNzaW9uIHR5cGUgKi8K Kwlpc190YXIgPSBwYXJzZV90YXJfY29tcHJlc3NfYWxnb3JpdGhtKGFyY2hpdmVfbmFtZSwKKwkJ CQkJCQkJCQkgICZjb21wcmVzc2VkX3Rhcl9hbGdvcml0aG0pOwogCiAJLyogSXMgdGhpcyBhbnkg a2luZCBvZiBjb21wcmVzc2VkIHRhcj8gKi8KLQlpc19jb21wcmVzc2VkX3RhciA9IGlzX3Rhcl9n eiB8fCBpc190YXJfbHo0IHx8IGlzX3Rhcl96c3RkOworCWlzX2NvbXByZXNzZWRfdGFyID0gKGlz X3RhciAmJgorCQkJCQkJIGNvbXByZXNzZWRfdGFyX2FsZ29yaXRobSAhPSBQR19DT01QUkVTU0lP Tl9OT05FKTsKIAogCS8qCiAJICogSW5qZWN0aW5nIHRoZSBtYW5pZmVzdCBpbnRvIGEgY29tcHJl c3NlZCB0YXIgZmlsZSB3b3VsZCBiZSBwb3NzaWJsZSBpZgpAQCAtMTEyOCw3ICsxMTE0LDcgQEAg Q3JlYXRlQmFja3VwU3RyZWFtZXIoY2hhciAqYXJjaGl2ZV9uYW1lLCBjaGFyICpzcGNsb2NhdGlv biwKIAkJCQkJCSAgKHNwY2xvY2F0aW9uID09IE5VTEwgJiYgd3JpdGVyZWNvdmVyeWNvbmYpKTsK IAogCS8qIEF0IHByZXNlbnQsIHdlIG9ubHkga25vdyBob3cgdG8gcGFyc2UgdGFyIGFyY2hpdmVz LiAqLwotCWlmIChtdXN0X3BhcnNlX2FyY2hpdmUgJiYgIWlzX3RhciAmJiAhaXNfY29tcHJlc3Nl ZF90YXIpCisJaWYgKG11c3RfcGFyc2VfYXJjaGl2ZSAmJiAhaXNfdGFyKQogCXsKIAkJcGdfbG9n X2Vycm9yKCJjYW5ub3QgcGFyc2UgYXJjaGl2ZSBcIiVzXCIiLCBhcmNoaXZlX25hbWUpOwogCQlw Z19sb2dfZXJyb3JfZGV0YWlsKCJPbmx5IHRhciBhcmNoaXZlcyBjYW4gYmUgcGFyc2VkLiIpOwpA QCAtMTI2MywxMyArMTI0OSwxMyBAQCBDcmVhdGVCYWNrdXBTdHJlYW1lcihjaGFyICphcmNoaXZl X25hbWUsIGNoYXIgKnNwY2xvY2F0aW9uLAogCSAqIElmIHRoZSB1c2VyIGhhcyByZXF1ZXN0ZWQg YSBzZXJ2ZXIgY29tcHJlc3NlZCBhcmNoaXZlIGFsb25nIHdpdGgKIAkgKiBhcmNoaXZlIGV4dHJh Y3Rpb24gYXQgY2xpZW50IHRoZW4gd2UgbmVlZCB0byBkZWNvbXByZXNzIGl0LgogCSAqLwotCWlm IChmb3JtYXQgPT0gJ3AnKQorCWlmIChmb3JtYXQgPT0gJ3AnICYmIGlzX2NvbXByZXNzZWRfdGFy KQogCXsKLQkJaWYgKGlzX3Rhcl9neikKKwkJaWYgKGNvbXByZXNzZWRfdGFyX2FsZ29yaXRobSA9 PSBQR19DT01QUkVTU0lPTl9HWklQKQogCQkJc3RyZWFtZXIgPSBhc3RyZWFtZXJfZ3ppcF9kZWNv bXByZXNzb3JfbmV3KHN0cmVhbWVyKTsKLQkJZWxzZSBpZiAoaXNfdGFyX2x6NCkKKwkJZWxzZSBp ZiAoY29tcHJlc3NlZF90YXJfYWxnb3JpdGhtID09IFBHX0NPTVBSRVNTSU9OX0xaNCkKIAkJCXN0 cmVhbWVyID0gYXN0cmVhbWVyX2x6NF9kZWNvbXByZXNzb3JfbmV3KHN0cmVhbWVyKTsKLQkJZWxz ZSBpZiAoaXNfdGFyX3pzdGQpCisJCWVsc2UgaWYgKGNvbXByZXNzZWRfdGFyX2FsZ29yaXRobSA9 PSBQR19DT01QUkVTU0lPTl9aU1REKQogCQkJc3RyZWFtZXIgPSBhc3RyZWFtZXJfenN0ZF9kZWNv bXByZXNzb3JfbmV3KHN0cmVhbWVyKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdmVy aWZ5YmFja3VwL3BnX3ZlcmlmeWJhY2t1cC5jIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvcGdf dmVyaWZ5YmFja3VwLmMKaW5kZXggY2JjOTQ0NzM4NGYuLjMxZjYwNmM0NWIxIDEwMDY0NAotLS0g YS9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9wZ192ZXJpZnliYWNrdXAuYworKysgYi9zcmMvYmlu L3BnX3ZlcmlmeWJhY2t1cC9wZ192ZXJpZnliYWNrdXAuYwpAQCAtOTQxLDE3ICs5NDEsNyBAQCBw cmVjaGVja190YXJfYmFja3VwX2ZpbGUodmVyaWZpZXJfY29udGV4dCAqY29udGV4dCwgY2hhciAq cmVscGF0aCwKIAl9CiAKIAkvKiBOb3csIGNoZWNrIHRoZSBjb21wcmVzc2lvbiB0eXBlIG9mIHRo ZSB0YXIgKi8KLQlpZiAoc3RyY21wKHN1ZmZpeCwgIi50YXIiKSA9PSAwKQotCQljb21wcmVzc19h bGdvcml0aG0gPSBQR19DT01QUkVTU0lPTl9OT05FOwotCWVsc2UgaWYgKHN0cmNtcChzdWZmaXgs ICIudGd6IikgPT0gMCkKLQkJY29tcHJlc3NfYWxnb3JpdGhtID0gUEdfQ09NUFJFU1NJT05fR1pJ UDsKLQllbHNlIGlmIChzdHJjbXAoc3VmZml4LCAiLnRhci5neiIpID09IDApCi0JCWNvbXByZXNz X2FsZ29yaXRobSA9IFBHX0NPTVBSRVNTSU9OX0daSVA7Ci0JZWxzZSBpZiAoc3RyY21wKHN1ZmZp eCwgIi50YXIubHo0IikgPT0gMCkKLQkJY29tcHJlc3NfYWxnb3JpdGhtID0gUEdfQ09NUFJFU1NJ T05fTFo0OwotCWVsc2UgaWYgKHN0cmNtcChzdWZmaXgsICIudGFyLnpzdCIpID09IDApCi0JCWNv bXByZXNzX2FsZ29yaXRobSA9IFBHX0NPTVBSRVNTSU9OX1pTVEQ7Ci0JZWxzZQorCWlmICghcGFy c2VfdGFyX2NvbXByZXNzX2FsZ29yaXRobShzdWZmaXgsICZjb21wcmVzc19hbGdvcml0aG0pKQog CXsKIAkJcmVwb3J0X2JhY2t1cF9lcnJvcihjb250ZXh0LAogCQkJCQkJCSJmaWxlIFwiJXNcIiBp cyBub3QgZXhwZWN0ZWQgaW4gYSB0YXIgZm9ybWF0IGJhY2t1cCIsCmRpZmYgLS1naXQgYS9zcmMv Y29tbW9uL2NvbXByZXNzaW9uLmMgYi9zcmMvY29tbW9uL2NvbXByZXNzaW9uLmMKaW5kZXggOTJj ZDRlYzdhMGQuLmYxMTdlMjEyMzdmIDEwMDY0NAotLS0gYS9zcmMvY29tbW9uL2NvbXByZXNzaW9u LmMKKysrIGIvc3JjL2NvbW1vbi9jb21wcmVzc2lvbi5jCkBAIC00MSw2ICs0MSwzNiBAQCBzdGF0 aWMgaW50CWV4cGVjdF9pbnRlZ2VyX3ZhbHVlKGNoYXIgKmtleXdvcmQsIGNoYXIgKnZhbHVlLAog c3RhdGljIGJvb2wgZXhwZWN0X2Jvb2xlYW5fdmFsdWUoY2hhciAqa2V5d29yZCwgY2hhciAqdmFs dWUsCiAJCQkJCQkJCSBwZ19jb21wcmVzc19zcGVjaWZpY2F0aW9uICpyZXN1bHQpOwogCisvKgor ICogTG9vayB1cCBhIGNvbXByZXNzaW9uIGFsZ29yaXRobSBieSBhcmNoaXZlIGZpbGUgZXh0ZW5z aW9uLiBSZXR1cm5zIHRydWUgYW5kCisgKiBzZXRzICphbGdvcml0aG0gaWYgdGhlIG5hbWUgaXMg cmVjb2duaXplZC4gT3RoZXJ3aXNlIHJldHVybnMgZmFsc2UuCisgKi8KK2Jvb2wKK3BhcnNlX3Rh cl9jb21wcmVzc19hbGdvcml0aG0oY2hhciAqZm5hbWUsIHBnX2NvbXByZXNzX2FsZ29yaXRobSAq YWxnb3JpdGhtKQoreworCWludAkJCWZuYW1lX2xlbiA9IHN0cmxlbihmbmFtZSk7CisKKwlpZiAo Zm5hbWVfbGVuID49IDQgJiYKKwkJc3RyY21wKGZuYW1lICsgZm5hbWVfbGVuIC0gNCwgIi50YXIi KSA9PSAwKQorCQkqYWxnb3JpdGhtID0gUEdfQ09NUFJFU1NJT05fTk9ORTsKKwllbHNlIGlmIChm bmFtZV9sZW4gPj0gNCAmJgorCQkJIHN0cmNtcChmbmFtZSArIGZuYW1lX2xlbiAtIDQsICIudGd6 IikgPT0gMCkKKwkJKmFsZ29yaXRobSA9IFBHX0NPTVBSRVNTSU9OX0daSVA7CisJZWxzZSBpZiAo Zm5hbWVfbGVuID49IDcgJiYKKwkJCSBzdHJjbXAoZm5hbWUgKyBmbmFtZV9sZW4gLSA3LCAiLnRh ci5neiIpID09IDApCisJCSphbGdvcml0aG0gPSBQR19DT01QUkVTU0lPTl9HWklQOworCWVsc2Ug aWYgKGZuYW1lX2xlbiA+PSA4ICYmCisJCQkgc3RyY21wKGZuYW1lICsgZm5hbWVfbGVuIC0gOCwg Ii50YXIubHo0IikgPT0gMCkKKwkJKmFsZ29yaXRobSA9IFBHX0NPTVBSRVNTSU9OX0xaNDsKKwll bHNlIGlmIChmbmFtZV9sZW4gPj0gOCAmJgorCQkJIHN0cmNtcChmbmFtZSArIGZuYW1lX2xlbiAt IDgsICIudGFyLnpzdCIpID09IDApCisJCSphbGdvcml0aG0gPSBQR19DT01QUkVTU0lPTl9aU1RE OworCWVsc2UKKwkJcmV0dXJuIGZhbHNlOworCisJcmV0dXJuIHRydWU7Cit9CisKIC8qCiAgKiBM b29rIHVwIGEgY29tcHJlc3Npb24gYWxnb3JpdGhtIGJ5IG5hbWUuIFJldHVybnMgdHJ1ZSBhbmQg c2V0cyAqYWxnb3JpdGhtCiAgKiBpZiB0aGUgbmFtZSBpcyByZWNvZ25pemVkLiBPdGhlcndpc2Ug cmV0dXJucyBmYWxzZS4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1vbi9jb21wcmVzc2lv bi5oIGIvc3JjL2luY2x1ZGUvY29tbW9uL2NvbXByZXNzaW9uLmgKaW5kZXggNmM3NDViOTAwNjYu LjUwZjIxNjU2Yjg4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tb24vY29tcHJlc3Npb24u aAorKysgYi9zcmMvaW5jbHVkZS9jb21tb24vY29tcHJlc3Npb24uaApAQCAtNDEsNiArNDEsOCBA QCB0eXBlZGVmIHN0cnVjdCBwZ19jb21wcmVzc19zcGVjaWZpY2F0aW9uCiAKIGV4dGVybiB2b2lk IHBhcnNlX2NvbXByZXNzX29wdGlvbnMoY29uc3QgY2hhciAqb3B0aW9uLCBjaGFyICoqYWxnb3Jp dGhtLAogCQkJCQkJCQkgICBjaGFyICoqZGV0YWlsKTsKK2V4dGVybiBib29sIHBhcnNlX3Rhcl9j b21wcmVzc19hbGdvcml0aG0oY2hhciAqZm5hbWUsCisJCQkJCQkJCQkJIHBnX2NvbXByZXNzX2Fs Z29yaXRobSAqYWxnb3JpdGhtKTsKIGV4dGVybiBib29sIHBhcnNlX2NvbXByZXNzX2FsZ29yaXRo bShjaGFyICpuYW1lLCBwZ19jb21wcmVzc19hbGdvcml0aG0gKmFsZ29yaXRobSk7CiBleHRlcm4g Y29uc3QgY2hhciAqZ2V0X2NvbXByZXNzX2FsZ29yaXRobV9uYW1lKHBnX2NvbXByZXNzX2FsZ29y aXRobSBhbGdvcml0aG0pOwogCi0tIAoyLjQ3LjEKCg== --0000000000007cf0ac064c324baf Content-Type: application/x-patch; name="v15-0002-Refactor-pg_waldump-Move-some-declarations-to-ne.patch" Content-Disposition: attachment; filename="v15-0002-Refactor-pg_waldump-Move-some-declarations-to-ne.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmc0y8881 RnJvbSAxNDcwNjMwMjg3MmM3ZTM1OTM0MzQ1ZmU3NWUxZjI0YTU4NTdhZDE2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFRo dSwgMjIgSmFuIDIwMjYgMTA6Mjg6MzIgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxNSAwMi8xMV0g UmVmYWN0b3I6IHBnX3dhbGR1bXA6IE1vdmUgc29tZSBkZWNsYXJhdGlvbnMgdG8gbmV3CiBwZ193 YWxkdW1wLmgKClRoaXMgY2hhbmdlIHByZXBhcmVzIGZvciBhIHNlY29uZCBzb3VyY2UgZmlsZSBp biB0aGlzIGRpcmVjdG9yeSB0bwpzdXBwb3J0IHJlYWRpbmcgV0FMIGZyb20gdGFyIGZpbGVzLiBD b21tb24gc3RydWN0dXJlcywgZGVjbGFyYXRpb25zLAphbmQgZnVuY3Rpb25zIGFyZSBiZWluZyBl eHBvcnRlZCB0aHJvdWdoIHRoaXMgaW5jbHVkZSBmaWxlIHNvCnRoZXkgY2FuIGJlIHVzZWQgaW4g Ym90aCBmaWxlcy4KLS0tCiBzcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jIHwgIDkgKy0t LS0tLS0tCiBzcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5oIHwgMjUgKysrKysrKysrKysr KysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAyNiBpbnNlcnRpb25zKCspLCA4IGRlbGV0 aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1w LmgKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jIGIvc3JjL2Jp bi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYwppbmRleCBmMzQ0NjM4NWQ2YS4uNGI3NDExYTY0OTgg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKKysrIGIvc3JjL2Jp bi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYwpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgImNv bW1vbi9sb2dnaW5nLmgiCiAjaW5jbHVkZSAiY29tbW9uL3JlbHBhdGguaCIKICNpbmNsdWRlICJn ZXRvcHRfbG9uZy5oIgorI2luY2x1ZGUgInBnX3dhbGR1bXAuaCIKICNpbmNsdWRlICJybWdyZGVz Yy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmcGFnZS5oIgogCkBAIC00MywxNCArNDQsNiBAQCBz dGF0aWMgdm9sYXRpbGUgc2lnX2F0b21pY190IHRpbWVfdG9fc3RvcCA9IGZhbHNlOwogCiBzdGF0 aWMgY29uc3QgUmVsRmlsZUxvY2F0b3IgZW1wdHlSZWxGaWxlTG9jYXRvciA9IHswLCAwLCAwfTsK IAotdHlwZWRlZiBzdHJ1Y3QgWExvZ0R1bXBQcml2YXRlCi17Ci0JVGltZUxpbmVJRAl0aW1lbGlu ZTsKLQlYTG9nUmVjUHRyCXN0YXJ0cHRyOwotCVhMb2dSZWNQdHIJZW5kcHRyOwotCWJvb2wJCWVu ZHB0cl9yZWFjaGVkOwotfSBYTG9nRHVtcFByaXZhdGU7Ci0KIHR5cGVkZWYgc3RydWN0IFhMb2dE dW1wQ29uZmlnCiB7CiAJLyogZGlzcGxheSBvcHRpb25zICovCmRpZmYgLS1naXQgYS9zcmMvYmlu L3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5oIGIvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAu aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNjRhOTEwOTIyOWUKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5oCkBAIC0wLDAg KzEsMjUgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHBnX3dhbGR1bXAuaCAtIGRlY29k ZSBhbmQgZGlzcGxheSBXQUwKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMjYsIFBvc3RncmVTUUwg R2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCQkgIHNy Yy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmgKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisj aWZuZGVmIFBHX1dBTERVTVBfSAorI2RlZmluZSBQR19XQUxEVU1QX0gKKworI2luY2x1ZGUgImFj Y2Vzcy94bG9nZGVmcy5oIgorCisvKiBDb250YWlucyB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9u IHRvIGRyaXZlIFdBTCBkZWNvZGluZyAqLwordHlwZWRlZiBzdHJ1Y3QgWExvZ0R1bXBQcml2YXRl Cit7CisJVGltZUxpbmVJRAl0aW1lbGluZTsKKwlYTG9nUmVjUHRyCXN0YXJ0cHRyOworCVhMb2dS ZWNQdHIJZW5kcHRyOworCWJvb2wJCWVuZHB0cl9yZWFjaGVkOworfSBYTG9nRHVtcFByaXZhdGU7 CisKKyNlbmRpZgkJCQkJCQkvKiBQR19XQUxEVU1QX0ggKi8KLS0gCjIuNDcuMQoK --0000000000007cf0ac064c324baf Content-Type: application/x-patch; name="v15-0003-Refactor-pg_waldump-Separate-logic-used-to-calcu.patch" Content-Disposition: attachment; filename="v15-0003-Refactor-pg_waldump-Separate-logic-used-to-calcu.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmc0ydh72 RnJvbSBlNjI2NzA3NjdhODE2NGNhOGMwYTI4OWFhZDA1ZjI0YzNlODRmOGNjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFRo dSwgMjIgSmFuIDIwMjYgMTA6Mzg6MTYgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxNSAwMy8xMV0g UmVmYWN0b3I6IHBnX3dhbGR1bXA6IFNlcGFyYXRlIGxvZ2ljIHVzZWQgdG8KIGNhbGN1bGF0ZSB0 aGUgcmVxdWlyZWQgcmVhZCBzaXplLgoKVGhpcyByZWZhY3RvcmluZyBwcmVwYXJlcyB0aGUgY29k ZWJhc2UgZm9yIGFuIHVwY29taW5nIHBhdGNoIHRoYXQgd2lsbApzdXBwb3J0IHJlYWRpbmcgV0FM IGZyb20gdGFyIGZpbGVzLiBUaGUgbG9naWMgZm9yIGNhbGN1bGF0aW5nIHRoZQpyZXF1aXJlZCBy ZWFkIHNpemUgaGFzIGJlZW4gdXBkYXRlZCB0byBoYW5kbGUgYm90aCBub3JtYWwgV0FMIGZpbGVz CmFuZCBXQUwgZmlsZXMgbG9jYXRlZCBpbnNpZGUgYSB0YXIgYXJjaGl2ZS4KLS0tCiBzcmMvYmlu L3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jIHwgNDMgKysrKysrKysrKysrKysrKysrKysrKystLS0t LS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMzAgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYyBiL3NyYy9iaW4v cGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKaW5kZXggNGI3NDExYTY0OTguLjk1OGE3MWEwMWNmIDEw MDY0NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jCisrKyBiL3NyYy9iaW4v cGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKQEAgLTMyNiw2ICszMjYsMzIgQEAgaWRlbnRpZnlfdGFy Z2V0X2RpcmVjdG9yeShjaGFyICpkaXJlY3RvcnksIGNoYXIgKmZuYW1lLCBpbnQgKldhbFNlZ1N6 KQogCXJldHVybiBOVUxMOwkJCQkvKiBub3QgcmVhY2hlZCAqLwogfQogCisvKgorICogUmV0dXJu cyB0aGUgc2l6ZSBpbiBieXRlcyBvZiB0aGUgZGF0YSB0byBiZSByZWFkLiBSZXR1cm5zIC0xIGlm IHRoZSBlbmQKKyAqIHBvaW50IGhhcyBhbHJlYWR5IGJlZW4gcmVhY2hlZC4KKyAqLworc3RhdGlj IGlubGluZSBpbnQKK3JlcXVpcmVkX3JlYWRfbGVuKFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZSwg WExvZ1JlY1B0ciB0YXJnZXRQYWdlUHRyLAorCQkJCSAgaW50IHJlcUxlbikKK3sKKwlpbnQJCQlj b3VudCA9IFhMT0dfQkxDS1NaOworCisJaWYgKFhMb2dSZWNQdHJJc1ZhbGlkKHByaXZhdGUtPmVu ZHB0cikpCisJeworCQlpZiAodGFyZ2V0UGFnZVB0ciArIFhMT0dfQkxDS1NaIDw9IHByaXZhdGUt PmVuZHB0cikKKwkJCWNvdW50ID0gWExPR19CTENLU1o7CisJCWVsc2UgaWYgKHRhcmdldFBhZ2VQ dHIgKyByZXFMZW4gPD0gcHJpdmF0ZS0+ZW5kcHRyKQorCQkJY291bnQgPSBwcml2YXRlLT5lbmRw dHIgLSB0YXJnZXRQYWdlUHRyOworCQllbHNlCisJCXsKKwkJCXByaXZhdGUtPmVuZHB0cl9yZWFj aGVkID0gdHJ1ZTsKKwkJCXJldHVybiAtMTsKKwkJfQorCX0KKworCXJldHVybiBjb3VudDsKK30K KwogLyogcGdfd2FsZHVtcCdzIFhMb2dSZWFkZXJSb3V0aW5lLT5zZWdtZW50X29wZW4gY2FsbGJh Y2sgKi8KIHN0YXRpYyB2b2lkCiBXQUxEdW1wT3BlblNlZ21lbnQoWExvZ1JlYWRlclN0YXRlICpz dGF0ZSwgWExvZ1NlZ05vIG5leHRTZWdObywKQEAgLTM4MywyMSArNDA5LDEyIEBAIFdBTER1bXBS ZWFkUGFnZShYTG9nUmVhZGVyU3RhdGUgKnN0YXRlLCBYTG9nUmVjUHRyIHRhcmdldFBhZ2VQdHIs IGludCByZXFMZW4sCiAJCQkJWExvZ1JlY1B0ciB0YXJnZXRQdHIsIGNoYXIgKnJlYWRCdWZmKQog ewogCVhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZSA9IHN0YXRlLT5wcml2YXRlX2RhdGE7Ci0JaW50 CQkJY291bnQgPSBYTE9HX0JMQ0tTWjsKKwlpbnQJCQljb3VudCA9IHJlcXVpcmVkX3JlYWRfbGVu KHByaXZhdGUsIHRhcmdldFBhZ2VQdHIsIHJlcUxlbik7CiAJV0FMUmVhZEVycm9yIGVycmluZm87 CiAKLQlpZiAoWExvZ1JlY1B0cklzVmFsaWQocHJpdmF0ZS0+ZW5kcHRyKSkKLQl7Ci0JCWlmICh0 YXJnZXRQYWdlUHRyICsgWExPR19CTENLU1ogPD0gcHJpdmF0ZS0+ZW5kcHRyKQotCQkJY291bnQg PSBYTE9HX0JMQ0tTWjsKLQkJZWxzZSBpZiAodGFyZ2V0UGFnZVB0ciArIHJlcUxlbiA8PSBwcml2 YXRlLT5lbmRwdHIpCi0JCQljb3VudCA9IHByaXZhdGUtPmVuZHB0ciAtIHRhcmdldFBhZ2VQdHI7 Ci0JCWVsc2UKLQkJewotCQkJcHJpdmF0ZS0+ZW5kcHRyX3JlYWNoZWQgPSB0cnVlOwotCQkJcmV0 dXJuIC0xOwotCQl9Ci0JfQorCS8qIEJhaWwgb3V0IGlmIHRoZSBjb3VudCB0byBiZSByZWFkIGlz IG5vdCB2YWxpZCAqLworCWlmIChjb3VudCA8IDApCisJCXJldHVybiAtMTsKIAogCWlmICghV0FM UmVhZChzdGF0ZSwgcmVhZEJ1ZmYsIHRhcmdldFBhZ2VQdHIsIGNvdW50LCBwcml2YXRlLT50aW1l bGluZSwKIAkJCQkgJmVycmluZm8pKQotLSAKMi40Ny4xCgo= --0000000000007cf0ac064c324baf Content-Type: application/x-patch; name="v15-0004-Refactor-pg_waldump-Restructure-TAP-tests.patch" Content-Disposition: attachment; filename="v15-0004-Refactor-pg_waldump-Restructure-TAP-tests.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmc0ykfe3 RnJvbSBiZTFmYmU0NDE1NzBjMGFlZjc2NmVlZDQxMGViMzQ2NWYyNDUwYjUzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMTggRmViIDIwMjYgMTE6MDc6NTcgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxNSAwNC8xMV0g UmVmYWN0b3I6IHBnX3dhbGR1bXA6IFJlc3RydWN0dXJlIFRBUCB0ZXN0cy4KClJlc3RydWN0dXJl ZCB0ZXN0cyB0aGF0IGRvIG5vdCBoYXZlIGEgV0FMIGZpbGUgYXJndW1lbnQgdG8gcnVuIHdpdGhp bgphIGxvb3AsIGZhY2lsaXRhdGluZyB0aGVpciByZS1leGVjdXRpb24gZm9yIGRlY29kaW5nIFdB TCBmcm9tIHRhcgphcmNoaXZlcy4KCj09IE5PVEUgPT0KICBUaGlzIGlzIG5vdCBpbnRlbmRlZCB0 byBiZSBjb21taXR0ZWQgc2VwYXJhdGVseS4gSXQgY2FuIGJlIG1lcmdlZAogIHdpdGggdGhlIG5l eHQgcGF0Y2gsIHdoaWNoIGlzIHRoZSBtYWluIHBhdGNoIGltcGxlbWVudGluZyB0aGlzCiAgZmVh dHVyZS4KLS0tCiBzcmMvYmluL3BnX3dhbGR1bXAvdC8wMDFfYmFzaWMucGwgfCAxNDAgKysrKysr KysrKysrKysrKystLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNzkgaW5zZXJ0aW9ucygr KSwgNjEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wL3QvMDAx X2Jhc2ljLnBsIGIvc3JjL2Jpbi9wZ193YWxkdW1wL3QvMDAxX2Jhc2ljLnBsCmluZGV4IDVkYjVk MjAxMzZmLi5mMTJiYTUyY2JmYyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ193YWxkdW1wL3QvMDAx X2Jhc2ljLnBsCisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC90LzAwMV9iYXNpYy5wbApAQCAtMTk4 LDI4ICsxOTgsNiBAQCBjb21tYW5kX2xpa2UoCiAJXSwKIAlxci8uLywKIAkncnVucyB3aXRoIHN0 YXJ0IGFuZCBlbmQgc2VnbWVudCBzcGVjaWZpZWQnKTsKLWNvbW1hbmRfZmFpbHNfbGlrZSgKLQlb ICdwZ193YWxkdW1wJywgJy0tcGF0aCcgPT4gJG5vZGUtPmRhdGFfZGlyIF0sCi0JcXIvZXJyb3I6 IG5vIHN0YXJ0IFdBTCBsb2NhdGlvbiBnaXZlbi8sCi0JJ3BhdGggb3B0aW9uIHJlcXVpcmVzIHN0 YXJ0IGxvY2F0aW9uJyk7Ci1jb21tYW5kX2xpa2UoCi0JWwotCQkncGdfd2FsZHVtcCcsCi0JCSct LXBhdGgnID0+ICRub2RlLT5kYXRhX2RpciwKLQkJJy0tc3RhcnQnID0+ICRzdGFydF9sc24sCi0J CSctLWVuZCcgPT4gJGVuZF9sc24sCi0JXSwKLQlxci8uLywKLQkncnVucyB3aXRoIHBhdGggb3B0 aW9uIGFuZCBzdGFydCBhbmQgZW5kIGxvY2F0aW9ucycpOwotY29tbWFuZF9mYWlsc19saWtlKAot CVsKLQkJJ3BnX3dhbGR1bXAnLAotCQknLS1wYXRoJyA9PiAkbm9kZS0+ZGF0YV9kaXIsCi0JCSct LXN0YXJ0JyA9PiAkc3RhcnRfbHNuLAotCV0sCi0JcXIvZXJyb3I6IGVycm9yIGluIFdBTCByZWNv cmQgYXQvLAotCSdmYWxsaW5nIG9mZiB0aGUgZW5kIG9mIHRoZSBXQUwgcmVzdWx0cyBpbiBhbiBl cnJvcicpOwotCiBjb21tYW5kX2xpa2UoCiAJWwogCQkncGdfd2FsZHVtcCcsICctLXF1aWV0JywK QEAgLTIyNywyMiArMjA1LDE2IEBAIGNvbW1hbmRfbGlrZSgKIAldLAogCXFyL14kLywKIAknbm8g b3V0cHV0IHdpdGggLS1xdWlldCBvcHRpb24nKTsKLWNvbW1hbmRfZmFpbHNfbGlrZSgKLQlbCi0J CSdwZ193YWxkdW1wJywgJy0tcXVpZXQnLAotCQknLS1wYXRoJyA9PiAkbm9kZS0+ZGF0YV9kaXIs Ci0JCSctLXN0YXJ0JyA9PiAkc3RhcnRfbHNuCi0JXSwKLQlxci9lcnJvcjogZXJyb3IgaW4gV0FM IHJlY29yZCBhdC8sCi0JJ2Vycm9ycyBhcmUgc2hvd24gd2l0aCAtLXF1aWV0Jyk7Ci0KIAogIyBU ZXN0IGZvcjogRGlzcGxheSBhIG1lc3NhZ2UgdGhhdCB3ZSdyZSBza2lwcGluZyBkYXRhIGlmIGBm cm9tYAogIyB3YXNuJ3QgYSBwb2ludGVyIHRvIHRoZSBzdGFydCBvZiBhIHJlY29yZC4KK3N1YiB0 ZXN0X3BnX3dhbGR1bXBfc2tpcF9ieXRlcwogeworCW15ICgkcGF0aCwgJHN0YXJ0bHNuLCAkZW5k bHNuKSA9IEBfOworCiAJIyBDb25zdHJ1Y3QgYSBuZXcgTFNOIHRoYXQgaXMgb25lIGJ5dGUgcGFz dCB0aGUgb3JpZ2luYWwKIAkjIHN0YXJ0X2xzbi4KLQlteSAoJHBhcnQxLCAkcGFydDIpID0gc3Bs aXQgcXJ7L30sICRzdGFydF9sc247CisJbXkgKCRwYXJ0MSwgJHBhcnQyKSA9IHNwbGl0IHFyey99 LCAkc3RhcnRsc247CiAJbXkgJGxzbjIgPSBoZXggJHBhcnQyOwogCSRsc24yKys7CiAJbXkgJG5l d19zdGFydCA9IHNwcmludGYoIiVzLyVYIiwgJHBhcnQxLCAkbHNuMik7CkBAIC0yNTIsNyArMjI0 LDggQEAgY29tbWFuZF9mYWlsc19saWtlKAogCW15ICRyZXN1bHQgPSBJUEM6OlJ1bjo6cnVuIFsK IAkJJ3BnX3dhbGR1bXAnLAogCQknLS1zdGFydCcgPT4gJG5ld19zdGFydCwKLQkJJG5vZGUtPmRh dGFfZGlyIC4gJy9wZ193YWwvJyAuICRzdGFydF93YWxmaWxlCisJCSctLWVuZCcgPT4gJGVuZGxz biwKKwkJJy0tcGF0aCcgPT4gJHBhdGgsCiAJICBdLAogCSAgJz4nID0+IFwkc3Rkb3V0LAogCSAg JzI+JyA9PiBcJHN0ZGVycjsKQEAgLTI2NiwxNSArMjM5LDE1IEBAIGNvbW1hbmRfZmFpbHNfbGlr ZSgKIHN1YiB0ZXN0X3BnX3dhbGR1bXAKIHsKIAlsb2NhbCAkVGVzdDo6QnVpbGRlcjo6TGV2ZWwg PSAkVGVzdDo6QnVpbGRlcjo6TGV2ZWwgKyAxOwotCW15IEBvcHRzID0gQF87CisJbXkgKCRwYXRo LCAkc3RhcnRsc24sICRlbmRsc24sIEBvcHRzKSA9IEBfOwogCiAJbXkgKCRzdGRvdXQsICRzdGRl cnIpOwogCiAJbXkgJHJlc3VsdCA9IElQQzo6UnVuOjpydW4gWwogCQkncGdfd2FsZHVtcCcsCi0J CSctLXBhdGgnID0+ICRub2RlLT5kYXRhX2RpciwKLQkJJy0tc3RhcnQnID0+ICRzdGFydF9sc24s Ci0JCSctLWVuZCcgPT4gJGVuZF9sc24sCisJCSctLXN0YXJ0JyA9PiAkc3RhcnRsc24sCisJCSct LWVuZCcgPT4gJGVuZGxzbiwKKwkJJy0tcGF0aCcgPT4gJHBhdGgsCiAJCUBvcHRzCiAJICBdLAog CSAgJz4nID0+IFwkc3Rkb3V0LApAQCAtMjg4LDM4ICsyNjEsODMgQEAgc3ViIHRlc3RfcGdfd2Fs ZHVtcAogCiBteSBAbGluZXM7CiAKLUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcDsKLWlzKGdyZXAo IS9ecm1ncjogXHcvLCBAbGluZXMpLCAwLCAnYWxsIG91dHB1dCBsaW5lcyBhcmUgcm1nciBsaW5l cycpOworbXkgQHNjZW5hcmlvcyA9ICgKKwl7CisJCSdwYXRoJyA9PiAkbm9kZS0+ZGF0YV9kaXIK Kwl9KTsKIAotQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCctLWxpbWl0JyA9PiA2KTsKLWlzKEBs aW5lcywgNiwgJ2xpbWl0IG9wdGlvbiBvYnNlcnZlZCcpOworZm9yIG15ICRzY2VuYXJpbyAoQHNj ZW5hcmlvcykKK3sKKwlteSAkcGF0aCA9ICRzY2VuYXJpby0+eydwYXRoJ307CiAKLUBsaW5lcyA9 IHRlc3RfcGdfd2FsZHVtcCgnLS1mdWxscGFnZScpOwotaXMoZ3JlcCghL15ybWdyOi4qXGJGUFdc Yi8sIEBsaW5lcyksIDAsICdhbGwgb3V0cHV0IGxpbmVzIGFyZSBGUFcnKTsKKwlTS0lQOgorCXsK KwkJY29tbWFuZF9mYWlsc19saWtlKAorCQkJWyAncGdfd2FsZHVtcCcsICctLXBhdGgnID0+ICRw YXRoIF0sCisJCQlxci9lcnJvcjogbm8gc3RhcnQgV0FMIGxvY2F0aW9uIGdpdmVuLywKKwkJCSdw YXRoIG9wdGlvbiByZXF1aXJlcyBzdGFydCBsb2NhdGlvbicpOworCQljb21tYW5kX2xpa2UoCisJ CQlbCisJCQkJJ3BnX3dhbGR1bXAnLAorCQkJCSctLXBhdGgnID0+ICRwYXRoLAorCQkJCSctLXN0 YXJ0JyA9PiAkc3RhcnRfbHNuLAorCQkJCSctLWVuZCcgPT4gJGVuZF9sc24sCisJCQldLAorCQkJ cXIvLi8sCisJCQkncnVucyB3aXRoIHBhdGggb3B0aW9uIGFuZCBzdGFydCBhbmQgZW5kIGxvY2F0 aW9ucycpOworCQljb21tYW5kX2ZhaWxzX2xpa2UoCisJCQlbCisJCQkJJ3BnX3dhbGR1bXAnLAor CQkJCSctLXBhdGgnID0+ICRwYXRoLAorCQkJCSctLXN0YXJ0JyA9PiAkc3RhcnRfbHNuLAorCQkJ XSwKKwkJCXFyL2Vycm9yOiBlcnJvciBpbiBXQUwgcmVjb3JkIGF0LywKKwkJCSdmYWxsaW5nIG9m ZiB0aGUgZW5kIG9mIHRoZSBXQUwgcmVzdWx0cyBpbiBhbiBlcnJvcicpOwogCi1AbGluZXMgPSB0 ZXN0X3BnX3dhbGR1bXAoJy0tc3RhdHMnKTsKLWxpa2UoJGxpbmVzWzBdLCBxci9XQUwgc3RhdGlz dGljcy8sICJzdGF0aXN0aWNzIG9uIHN0ZG91dCIpOwotaXMoZ3JlcCgvXnJtZ3I6LywgQGxpbmVz KSwgMCwgJ25vIHJtZ3IgbGluZXMgb3V0cHV0Jyk7CisJCWNvbW1hbmRfZmFpbHNfbGlrZSgKKwkJ CVsKKwkJCQkncGdfd2FsZHVtcCcsICctLXF1aWV0JywKKwkJCQknLS1wYXRoJyA9PiAkcGF0aCwK KwkJCQknLS1zdGFydCcgPT4gJHN0YXJ0X2xzbgorCQkJXSwKKwkJCXFyL2Vycm9yOiBlcnJvciBp biBXQUwgcmVjb3JkIGF0LywKKwkJCSdlcnJvcnMgYXJlIHNob3duIHdpdGggLS1xdWlldCcpOwog Ci1AbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJy0tc3RhdHM9cmVjb3JkJyk7Ci1saWtlKCRsaW5l c1swXSwgcXIvV0FMIHN0YXRpc3RpY3MvLCAic3RhdGlzdGljcyBvbiBzdGRvdXQiKTsKLWlzKGdy ZXAoL15ybWdyOi8sIEBsaW5lcyksIDAsICdubyBybWdyIGxpbmVzIG91dHB1dCcpOworCQl0ZXN0 X3BnX3dhbGR1bXBfc2tpcF9ieXRlcygkcGF0aCwgJHN0YXJ0X2xzbiwgJGVuZF9sc24pOwogCi1A bGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJy0tcm1ncicgPT4gJ0J0cmVlJyk7Ci1pcyhncmVwKCEv XnJtZ3I6IEJ0cmVlLywgQGxpbmVzKSwgMCwgJ29ubHkgQnRyZWUgbGluZXMnKTsKKwkJQGxpbmVz ID0gdGVzdF9wZ193YWxkdW1wKCRwYXRoLCAkc3RhcnRfbHNuLCAkZW5kX2xzbik7CisJCWlzKGdy ZXAoIS9ecm1ncjogXHcvLCBAbGluZXMpLCAwLCAnYWxsIG91dHB1dCBsaW5lcyBhcmUgcm1nciBs aW5lcycpOwogCi1AbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJy0tZm9yaycgPT4gJ2luaXQnKTsK LWlzKGdyZXAoIS9mb3JrIGluaXQvLCBAbGluZXMpLCAwLCAnb25seSBpbml0IGZvcmsgbGluZXMn KTsKKwkJQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCRwYXRoLCAkc3RhcnRfbHNuLCAkZW5kX2xz biwgJy0tbGltaXQnID0+IDYpOworCQlpcyhAbGluZXMsIDYsICdsaW1pdCBvcHRpb24gb2JzZXJ2 ZWQnKTsKIAotQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKAotCSctLXJlbGF0aW9uJyA9PiAiJGRl ZmF1bHRfdHNfb2lkLyRwb3N0Z3Jlc19kYl9vaWQvJHJlbF90MV9vaWQiKTsKLWlzKGdyZXAoIS9y ZWwgJGRlZmF1bHRfdHNfb2lkXC8kcG9zdGdyZXNfZGJfb2lkXC8kcmVsX3QxX29pZC8sIEBsaW5l cyksCi0JMCwgJ29ubHkgbGluZXMgZm9yIHNlbGVjdGVkIHJlbGF0aW9uJyk7CisJCUBsaW5lcyA9 IHRlc3RfcGdfd2FsZHVtcCgkcGF0aCwgJHN0YXJ0X2xzbiwgJGVuZF9sc24sICctLWZ1bGxwYWdl Jyk7CisJCWlzKGdyZXAoIS9ecm1ncjouKlxiRlBXXGIvLCBAbGluZXMpLCAwLCAnYWxsIG91dHB1 dCBsaW5lcyBhcmUgRlBXJyk7CiAKLUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgKLQknLS1yZWxh dGlvbicgPT4gIiRkZWZhdWx0X3RzX29pZC8kcG9zdGdyZXNfZGJfb2lkLyRyZWxfaTFhX29pZCIs Ci0JJy0tYmxvY2snID0+IDEpOwotaXMoZ3JlcCghL1xiYmxrIDFcYi8sIEBsaW5lcyksIDAsICdv bmx5IGxpbmVzIGZvciBzZWxlY3RlZCBibG9jaycpOworCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1 bXAoJHBhdGgsICRzdGFydF9sc24sICRlbmRfbHNuLCAnLS1zdGF0cycpOworCQlsaWtlKCRsaW5l c1swXSwgcXIvV0FMIHN0YXRpc3RpY3MvLCAic3RhdGlzdGljcyBvbiBzdGRvdXQiKTsKKwkJaXMo Z3JlcCgvXnJtZ3I6LywgQGxpbmVzKSwgMCwgJ25vIHJtZ3IgbGluZXMgb3V0cHV0Jyk7CiAKKwkJ QGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCRwYXRoLCAkc3RhcnRfbHNuLCAkZW5kX2xzbiwgJy0t c3RhdHM9cmVjb3JkJyk7CisJCWxpa2UoJGxpbmVzWzBdLCBxci9XQUwgc3RhdGlzdGljcy8sICJz dGF0aXN0aWNzIG9uIHN0ZG91dCIpOworCQlpcyhncmVwKC9ecm1ncjovLCBAbGluZXMpLCAwLCAn bm8gcm1nciBsaW5lcyBvdXRwdXQnKTsKKworCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJHBh dGgsICRzdGFydF9sc24sICRlbmRfbHNuLCAnLS1ybWdyJyA9PiAnQnRyZWUnKTsKKwkJaXMoZ3Jl cCghL15ybWdyOiBCdHJlZS8sIEBsaW5lcyksIDAsICdvbmx5IEJ0cmVlIGxpbmVzJyk7CisKKwkJ QGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCRwYXRoLCAkc3RhcnRfbHNuLCAkZW5kX2xzbiwgJy0t Zm9yaycgPT4gJ2luaXQnKTsKKwkJaXMoZ3JlcCghL2ZvcmsgaW5pdC8sIEBsaW5lcyksIDAsICdv bmx5IGluaXQgZm9yayBsaW5lcycpOworCisJCUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgkcGF0 aCwgJHN0YXJ0X2xzbiwgJGVuZF9sc24sCisJCQknLS1yZWxhdGlvbicgPT4gIiRkZWZhdWx0X3Rz X29pZC8kcG9zdGdyZXNfZGJfb2lkLyRyZWxfdDFfb2lkIik7CisJCWlzKGdyZXAoIS9yZWwgJGRl ZmF1bHRfdHNfb2lkXC8kcG9zdGdyZXNfZGJfb2lkXC8kcmVsX3QxX29pZC8sIEBsaW5lcyksCisJ CQkwLCAnb25seSBsaW5lcyBmb3Igc2VsZWN0ZWQgcmVsYXRpb24nKTsKKworCQlAbGluZXMgPSB0 ZXN0X3BnX3dhbGR1bXAoJHBhdGgsICRzdGFydF9sc24sICRlbmRfbHNuLAorCQkJJy0tcmVsYXRp b24nID0+ICIkZGVmYXVsdF90c19vaWQvJHBvc3RncmVzX2RiX29pZC8kcmVsX2kxYV9vaWQiLAor CQkJJy0tYmxvY2snID0+IDEpOworCQlpcyhncmVwKCEvXGJibGsgMVxiLywgQGxpbmVzKSwgMCwg J29ubHkgbGluZXMgZm9yIHNlbGVjdGVkIGJsb2NrJyk7CisJfQorfQogCiBkb25lX3Rlc3Rpbmco KTsKLS0gCjIuNDcuMQoK --0000000000007cf0ac064c324baf Content-Type: application/x-patch; name="v15-0005-Refactor-pg_waldump-Move-WAL-segment-size-to-XLo.patch" Content-Disposition: attachment; filename="v15-0005-Refactor-pg_waldump-Move-WAL-segment-size-to-XLo.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmc0ypnt4 RnJvbSA4YmI4ZGM2YWZlNzUzZjg4NTUyMDQyOTYxMzk2NmY4Y2VkYzJiNDc3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgNCBGZWIgMjAyNiAxNTozMTo1MSArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjE1IDA1LzExXSBS ZWZhY3RvcjogcGdfd2FsZHVtcDogTW92ZSBXQUwgc2VnbWVudCBzaXplIHRvCiBYTG9nRHVtcFBy aXZhdGUuCgpSZWxvY2F0ZSB0aGUgV0FMIHNlZ21lbnQgc2l6ZSB2YXJpYWJsZSB0byB0aGUgWExv Z0R1bXBQcml2YXRlCnN0cnVjdHVyZSBhbmQgcmVuYW1lIGl0IHRvIHNlZ3NpemUgZm9yIGNvbnNp c3RlbmN5LiBUaGlzIGNoYW5nZSBpcwpyZXF1aXJlZCB0byBtYWtlIHRoZSBzZWdtZW50IHNpemUg YWNjZXNzaWJsZSB0byB0aGUgYXJjaGl2ZSBzdHJlYW1lcgpjb2RlLCB3aGVyZSBwYXNzaW5nIGl0 IGFzIGEgZnVuY3Rpb24gYXJndW1lbnQgaXMgbm90IGZlYXNpYmxlLgotLS0KIHNyYy9iaW4vcGdf d2FsZHVtcC9wZ193YWxkdW1wLmMgfCAyNiArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQogc3Jj L2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuaCB8ICAxICsKIDIgZmlsZXMgY2hhbmdlZCwgMTQg aW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193 YWxkdW1wL3BnX3dhbGR1bXAuYyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKaW5k ZXggOTU4YTcxYTAxY2YuLjVkMzFiMTVkYmQ4IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1 bXAvcGdfd2FsZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKQEAg LTgxMSw3ICs4MTEsNiBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAlYTG9nUmVjUHRy CWZpcnN0X3JlY29yZDsKIAljaGFyCSAgICp3YWxkaXIgPSBOVUxMOwogCWNoYXIJICAgKmVycm9y bXNnOwotCWludAkJCVdhbFNlZ1N6OwogCiAJc3RhdGljIHN0cnVjdCBvcHRpb24gbG9uZ19vcHRp b25zW10gPSB7CiAJCXsiYmtwLWRldGFpbHMiLCBub19hcmd1bWVudCwgTlVMTCwgJ2InfSwKQEAg LTg2NSw2ICs4NjQsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAltZW1zZXQoJnN0 YXRzLCAwLCBzaXplb2YoWExvZ1N0YXRzKSk7CiAKIAlwcml2YXRlLnRpbWVsaW5lID0gMTsKKwlw cml2YXRlLnNlZ3NpemUgPSAwOwogCXByaXZhdGUuc3RhcnRwdHIgPSBJbnZhbGlkWExvZ1JlY1B0 cjsKIAlwcml2YXRlLmVuZHB0ciA9IEludmFsaWRYTG9nUmVjUHRyOwogCXByaXZhdGUuZW5kcHRy X3JlYWNoZWQgPSBmYWxzZTsKQEAgLTExMzgsMTggKzExMzgsMTggQEAgbWFpbihpbnQgYXJnYywg Y2hhciAqKmFyZ3YpCiAJCQkJcGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIGRpcmVjdG9yeSBcIiVz XCI6ICVtIiwgd2FsZGlyKTsKIAkJfQogCi0JCXdhbGRpciA9IGlkZW50aWZ5X3RhcmdldF9kaXJl Y3Rvcnkod2FsZGlyLCBmbmFtZSwgJldhbFNlZ1N6KTsKKwkJd2FsZGlyID0gaWRlbnRpZnlfdGFy Z2V0X2RpcmVjdG9yeSh3YWxkaXIsIGZuYW1lLCAmcHJpdmF0ZS5zZWdzaXplKTsKIAkJZmQgPSBv cGVuX2ZpbGVfaW5fZGlyZWN0b3J5KHdhbGRpciwgZm5hbWUpOwogCQlpZiAoZmQgPCAwKQogCQkJ cGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiIiwgZm5hbWUpOwogCQljbG9zZShm ZCk7CiAKIAkJLyogcGFyc2UgcG9zaXRpb24gZnJvbSBmaWxlICovCi0JCVhMb2dGcm9tRmlsZU5h bWUoZm5hbWUsICZwcml2YXRlLnRpbWVsaW5lLCAmc2Vnbm8sIFdhbFNlZ1N6KTsKKwkJWExvZ0Zy b21GaWxlTmFtZShmbmFtZSwgJnByaXZhdGUudGltZWxpbmUsICZzZWdubywgcHJpdmF0ZS5zZWdz aXplKTsKIAogCQlpZiAoIVhMb2dSZWNQdHJJc1ZhbGlkKHByaXZhdGUuc3RhcnRwdHIpKQotCQkJ WExvZ1NlZ05vT2Zmc2V0VG9SZWNQdHIoc2Vnbm8sIDAsIFdhbFNlZ1N6LCBwcml2YXRlLnN0YXJ0 cHRyKTsKLQkJZWxzZSBpZiAoIVhMQnl0ZUluU2VnKHByaXZhdGUuc3RhcnRwdHIsIHNlZ25vLCBX YWxTZWdTeikpCisJCQlYTG9nU2VnTm9PZmZzZXRUb1JlY1B0cihzZWdubywgMCwgcHJpdmF0ZS5z ZWdzaXplLCBwcml2YXRlLnN0YXJ0cHRyKTsKKwkJZWxzZSBpZiAoIVhMQnl0ZUluU2VnKHByaXZh dGUuc3RhcnRwdHIsIHNlZ25vLCBwcml2YXRlLnNlZ3NpemUpKQogCQl7CiAJCQlwZ19sb2dfZXJy b3IoInN0YXJ0IFdBTCBsb2NhdGlvbiAlWC8lMDhYIGlzIG5vdCBpbnNpZGUgZmlsZSBcIiVzXCIi LAogCQkJCQkJIExTTl9GT1JNQVRfQVJHUyhwcml2YXRlLnN0YXJ0cHRyKSwKQEAgLTExNTksNyAr MTE1OSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJCS8qIG5vIHNlY29uZCBm aWxlIHNwZWNpZmllZCwgc2V0IGVuZCBwb3NpdGlvbiAqLwogCQlpZiAoIShvcHRpbmQgKyAxIDwg YXJnYykgJiYgIVhMb2dSZWNQdHJJc1ZhbGlkKHByaXZhdGUuZW5kcHRyKSkKLQkJCVhMb2dTZWdO b09mZnNldFRvUmVjUHRyKHNlZ25vICsgMSwgMCwgV2FsU2VnU3osIHByaXZhdGUuZW5kcHRyKTsK KwkJCVhMb2dTZWdOb09mZnNldFRvUmVjUHRyKHNlZ25vICsgMSwgMCwgcHJpdmF0ZS5zZWdzaXpl LCBwcml2YXRlLmVuZHB0cik7CiAKIAkJLyogcGFyc2UgRU5EU0VHIGlmIHBhc3NlZCAqLwogCQlp ZiAob3B0aW5kICsgMSA8IGFyZ2MpCkBAIC0xMTc1LDE0ICsxMTc1LDE0IEBAIG1haW4oaW50IGFy Z2MsIGNoYXIgKiphcmd2KQogCQkJY2xvc2UoZmQpOwogCiAJCQkvKiBwYXJzZSBwb3NpdGlvbiBm cm9tIGZpbGUgKi8KLQkJCVhMb2dGcm9tRmlsZU5hbWUoZm5hbWUsICZwcml2YXRlLnRpbWVsaW5l LCAmZW5kc2Vnbm8sIFdhbFNlZ1N6KTsKKwkJCVhMb2dGcm9tRmlsZU5hbWUoZm5hbWUsICZwcml2 YXRlLnRpbWVsaW5lLCAmZW5kc2Vnbm8sIHByaXZhdGUuc2Vnc2l6ZSk7CiAKIAkJCWlmIChlbmRz ZWdubyA8IHNlZ25vKQogCQkJCXBnX2ZhdGFsKCJFTkRTRUcgJXMgaXMgYmVmb3JlIFNUQVJUU0VH ICVzIiwKIAkJCQkJCSBhcmd2W29wdGluZCArIDFdLCBhcmd2W29wdGluZF0pOwogCiAJCQlpZiAo IVhMb2dSZWNQdHJJc1ZhbGlkKHByaXZhdGUuZW5kcHRyKSkKLQkJCQlYTG9nU2VnTm9PZmZzZXRU b1JlY1B0cihlbmRzZWdubyArIDEsIDAsIFdhbFNlZ1N6LAorCQkJCVhMb2dTZWdOb09mZnNldFRv UmVjUHRyKGVuZHNlZ25vICsgMSwgMCwgcHJpdmF0ZS5zZWdzaXplLAogCQkJCQkJCQkJCXByaXZh dGUuZW5kcHRyKTsKIAogCQkJLyogc2V0IHNlZ25vIHRvIGVuZHNlZ25vIGZvciBjaGVjayBvZiAt LWVuZCAqLwpAQCAtMTE5MCw4ICsxMTkwLDggQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp CiAJCX0KIAogCi0JCWlmICghWExCeXRlSW5TZWcocHJpdmF0ZS5lbmRwdHIsIHNlZ25vLCBXYWxT ZWdTeikgJiYKLQkJCXByaXZhdGUuZW5kcHRyICE9IChzZWdubyArIDEpICogV2FsU2VnU3opCisJ CWlmICghWExCeXRlSW5TZWcocHJpdmF0ZS5lbmRwdHIsIHNlZ25vLCBwcml2YXRlLnNlZ3NpemUp ICYmCisJCQlwcml2YXRlLmVuZHB0ciAhPSAoc2Vnbm8gKyAxKSAqIHByaXZhdGUuc2Vnc2l6ZSkK IAkJewogCQkJcGdfbG9nX2Vycm9yKCJlbmQgV0FMIGxvY2F0aW9uICVYLyUwOFggaXMgbm90IGlu c2lkZSBmaWxlIFwiJXNcIiIsCiAJCQkJCQkgTFNOX0ZPUk1BVF9BUkdTKHByaXZhdGUuZW5kcHRy KSwKQEAgLTEyMDAsNyArMTIwMCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQl9 CiAJfQogCWVsc2UKLQkJd2FsZGlyID0gaWRlbnRpZnlfdGFyZ2V0X2RpcmVjdG9yeSh3YWxkaXIs IE5VTEwsICZXYWxTZWdTeik7CisJCXdhbGRpciA9IGlkZW50aWZ5X3RhcmdldF9kaXJlY3Rvcnko d2FsZGlyLCBOVUxMLCAmcHJpdmF0ZS5zZWdzaXplKTsKIAogCS8qIHdlIGRvbid0IGtub3cgd2hh dCB0byBwcmludCAqLwogCWlmICghWExvZ1JlY1B0cklzVmFsaWQocHJpdmF0ZS5zdGFydHB0cikp CkBAIC0xMjEzLDcgKzEyMTMsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAogCS8q IHdlIGhhdmUgZXZlcnl0aGluZyB3ZSBuZWVkLCBzdGFydCByZWFkaW5nICovCiAJeGxvZ3JlYWRl cl9zdGF0ZSA9Ci0JCVhMb2dSZWFkZXJBbGxvY2F0ZShXYWxTZWdTeiwgd2FsZGlyLAorCQlYTG9n UmVhZGVyQWxsb2NhdGUocHJpdmF0ZS5zZWdzaXplLCB3YWxkaXIsCiAJCQkJCQkgICBYTF9ST1VU SU5FKC5wYWdlX3JlYWQgPSBXQUxEdW1wUmVhZFBhZ2UsCiAJCQkJCQkJCQkgIC5zZWdtZW50X29w ZW4gPSBXQUxEdW1wT3BlblNlZ21lbnQsCiAJCQkJCQkJCQkgIC5zZWdtZW50X2Nsb3NlID0gV0FM RHVtcENsb3NlU2VnbWVudCksCkBAIC0xMjM0LDcgKzEyMzQsNyBAQCBtYWluKGludCBhcmdjLCBj aGFyICoqYXJndikKIAkgKiBhIHNlZ21lbnQgKGUuZy4gd2Ugd2VyZSB1c2VkIGluIGZpbGUgbW9k ZSkuCiAJICovCiAJaWYgKGZpcnN0X3JlY29yZCAhPSBwcml2YXRlLnN0YXJ0cHRyICYmCi0JCVhM b2dTZWdtZW50T2Zmc2V0KHByaXZhdGUuc3RhcnRwdHIsIFdhbFNlZ1N6KSAhPSAwKQorCQlYTG9n U2VnbWVudE9mZnNldChwcml2YXRlLnN0YXJ0cHRyLCBwcml2YXRlLnNlZ3NpemUpICE9IDApCiAJ CXBnX2xvZ19pbmZvKG5nZXR0ZXh0KCJmaXJzdCByZWNvcmQgaXMgYWZ0ZXIgJVgvJTA4WCwgYXQg JVgvJTA4WCwgc2tpcHBpbmcgb3ZlciAldSBieXRlIiwKIAkJCQkJCQkgImZpcnN0IHJlY29yZCBp cyBhZnRlciAlWC8lMDhYLCBhdCAlWC8lMDhYLCBza2lwcGluZyBvdmVyICV1IGJ5dGVzIiwKIAkJ CQkJCQkgKGZpcnN0X3JlY29yZCAtIHByaXZhdGUuc3RhcnRwdHIpKSwKZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmggYi9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2Fs ZHVtcC5oCmluZGV4IDY0YTkxMDkyMjllLi4wMTNiMDUxNTA2ZiAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuaAorKysgYi9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2Fs ZHVtcC5oCkBAIC0xNyw2ICsxNyw3IEBACiB0eXBlZGVmIHN0cnVjdCBYTG9nRHVtcFByaXZhdGUK IHsKIAlUaW1lTGluZUlECXRpbWVsaW5lOworCWludAkJCXNlZ3NpemU7CiAJWExvZ1JlY1B0cglz dGFydHB0cjsKIAlYTG9nUmVjUHRyCWVuZHB0cjsKIAlib29sCQllbmRwdHJfcmVhY2hlZDsKLS0g CjIuNDcuMQoK --0000000000007cf0ac064c324baf Content-Type: application/x-patch; name="v15-0006-pg_waldump-Add-support-for-archived-WAL-decoding.patch" Content-Disposition: attachment; filename="v15-0006-pg_waldump-Add-support-for-archived-WAL-decoding.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmc0yvia5 RnJvbSBjOGZmMWEwNjkzMWJjMzY5MGUyN2MwMzE5N2Y4MjVjZThjYTI5YTI3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFR1 ZSwgMTAgRmViIDIwMjYgMTE6NDI6MzYgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxNSAwNi8xMV0g cGdfd2FsZHVtcDogQWRkIHN1cHBvcnQgZm9yIGFyY2hpdmVkIFdBTCBkZWNvZGluZy4KCnBnX3dh bGR1bXAgY2FuIG5vdyBhY2NlcHQgdGhlIHBhdGggdG8gYSB0YXIgYXJjaGl2ZSBjb250YWluaW5n IFdBTApmaWxlcyBhbmQgZGVjb2RlIHRoZW0uIFRoaXMgZmVhdHVyZSB3YXMgYWRkZWQgcHJpbWFy aWx5IGZvcgpwZ192ZXJpZnliYWNrdXAsIHdoaWNoIHByZXZpb3VzbHkgZGlzYWJsZWQgV0FMIHBh cnNpbmcgZm9yCnRhci1mb3JtYXR0ZWQgYmFja3Vwcy4KCk5vdGUgdGhhdCB0aGlzIHBhdGNoIHJl cXVpcmVzIHRoYXQgdGhlIFdBTCBmaWxlcyB3aXRoaW4gdGhlIGFyY2hpdmUgYmUKaW4gc2VxdWVu dGlhbCBvcmRlcjsgYW4gZXJyb3Igd2lsbCBiZSByZXBvcnRlZCBvdGhlcndpc2UuIFRoZSBuZXh0 CnBhdGNoIGlzIHBsYW5uZWQgdG8gcmVtb3ZlIHRoaXMgcmVzdHJpY3Rpb24uCi0tLQogZG9jL3Ny Yy9zZ21sL3JlZi9wZ193YWxkdW1wLnNnbWwgICAgIHwgICA4ICstCiBzcmMvYmluL3BnX3dhbGR1 bXAvTWFrZWZpbGUgICAgICAgICAgfCAgIDcgKy0KIHNyYy9iaW4vcGdfd2FsZHVtcC9hcmNoaXZl X3dhbGR1bXAuYyB8IDYzOSArKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy9iaW4vcGdf d2FsZHVtcC9tZXNvbi5idWlsZCAgICAgICB8ICAgNCArLQogc3JjL2Jpbi9wZ193YWxkdW1wL3Bn X3dhbGR1bXAuYyAgICAgIHwgMjU3ICsrKysrKysrLS0tCiBzcmMvYmluL3BnX3dhbGR1bXAvcGdf d2FsZHVtcC5oICAgICAgfCAgNDMgKysKIHNyYy9iaW4vcGdfd2FsZHVtcC90LzAwMV9iYXNpYy5w bCAgICB8IDEwNSArKysrLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgIHwg ICAzICsKIDggZmlsZXMgY2hhbmdlZCwgOTk5IGluc2VydGlvbnMoKyksIDY3IGRlbGV0aW9ucygt KQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iaW4vcGdfd2FsZHVtcC9hcmNoaXZlX3dhbGR1bXAu YwoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfd2FsZHVtcC5zZ21sIGIvZG9jL3Ny Yy9zZ21sL3JlZi9wZ193YWxkdW1wLnNnbWwKaW5kZXggZDE3MTVmZjUxMjQuLjE1ZmI4ZDEzMTk5 IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX3dhbGR1bXAuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvcmVmL3BnX3dhbGR1bXAuc2dtbApAQCAtMTQxLDEzICsxNDEsMTcgQEAgUG9zdGdy ZVNRTCBkb2N1bWVudGF0aW9uCiAgICAgICA8dGVybT48b3B0aW9uPi0tcGF0aD08cmVwbGFjZWFi bGU+cGF0aDwvcmVwbGFjZWFibGU+PC9vcHRpb24+PC90ZXJtPgogICAgICAgPGxpc3RpdGVtPgog ICAgICAgIDxwYXJhPgotICAgICAgICBTcGVjaWZpZXMgYSBkaXJlY3RvcnkgdG8gc2VhcmNoIGZv ciBXQUwgc2VnbWVudCBmaWxlcyBvciBhCi0gICAgICAgIGRpcmVjdG9yeSB3aXRoIGEgPGxpdGVy YWw+cGdfd2FsPC9saXRlcmFsPiBzdWJkaXJlY3RvcnkgdGhhdAorICAgICAgICBTcGVjaWZpZXMg YSB0YXIgYXJjaGl2ZSBvciBhIGRpcmVjdG9yeSB0byBzZWFyY2ggZm9yIFdBTCBzZWdtZW50IGZp bGVzCisgICAgICAgIG9yIGEgZGlyZWN0b3J5IHdpdGggYSA8bGl0ZXJhbD5wZ193YWw8L2xpdGVy YWw+IHN1YmRpcmVjdG9yeSB0aGF0CiAgICAgICAgIGNvbnRhaW5zIHN1Y2ggZmlsZXMuICBUaGUg ZGVmYXVsdCBpcyB0byBzZWFyY2ggaW4gdGhlIGN1cnJlbnQKICAgICAgICAgZGlyZWN0b3J5LCB0 aGUgPGxpdGVyYWw+cGdfd2FsPC9saXRlcmFsPiBzdWJkaXJlY3Rvcnkgb2YgdGhlCiAgICAgICAg IGN1cnJlbnQgZGlyZWN0b3J5LCBhbmQgdGhlIDxsaXRlcmFsPnBnX3dhbDwvbGl0ZXJhbD4gc3Vi ZGlyZWN0b3J5CiAgICAgICAgIG9mIDxlbnZhcj5QR0RBVEE8L2VudmFyPi4KICAgICAgICA8L3Bh cmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIElmIGEgdGFyIGFyY2hpdmUgaXMgcHJvdmlkZWQs IGl0cyBXQUwgc2VnbWVudCBmaWxlcyBtdXN0IGJlIGluCisgICAgICAgIHNlcXVlbnRpYWwgb3Jk ZXI7IG90aGVyd2lzZSwgYW4gZXJyb3Igd2lsbCBiZSByZXBvcnRlZC4KKyAgICAgICA8L3BhcmE+ CiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIApkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ193YWxkdW1wL01ha2VmaWxlIGIvc3JjL2Jpbi9wZ193YWxkdW1wL01ha2VmaWxl CmluZGV4IDRjMWVlNjQ5NTAxLi5hYWJiODc1NjZhMiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ193 YWxkdW1wL01ha2VmaWxlCisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9NYWtlZmlsZQpAQCAtMyw2 ICszLDkgQEAKIFBHRklMRURFU0MgPSAicGdfd2FsZHVtcCAtIGRlY29kZSBhbmQgZGlzcGxheSBX QUwiCiBQR0FQUElDT049d2luMzIKIAorIyBtYWtlIHRoZXNlIGF2YWlsYWJsZSB0byBUQVAgdGVz dCBzY3JpcHRzCitleHBvcnQgVEFSCisKIHN1YmRpciA9IHNyYy9iaW4vcGdfd2FsZHVtcAogdG9w X2J1aWxkZGlyID0gLi4vLi4vLi4KIGluY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmls ZS5nbG9iYWwKQEAgLTEwLDEzICsxMywxNSBAQCBpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMv TWFrZWZpbGUuZ2xvYmFsCiBPQkpTID0gXAogCSQoUk1HUkRFU0NPQkpTKSBcCiAJJChXSU4zMlJF UykgXAorCWFyY2hpdmVfd2FsZHVtcC5vIFwKIAljb21wYXQubyBcCiAJcGdfd2FsZHVtcC5vIFwK IAlybWdyZGVzYy5vIFwKIAl4bG9ncmVhZGVyLm8gXAogCXhsb2dzdGF0cy5vCiAKLW92ZXJyaWRl IENQUEZMQUdTIDo9IC1ERlJPTlRFTkQgJChDUFBGTEFHUykKK292ZXJyaWRlIENQUEZMQUdTIDo9 IC1ERlJPTlRFTkQgLUkkKGxpYnBxX3NyY2RpcikgJChDUFBGTEFHUykKK0xERkxBR1NfSU5URVJO QUwgKz0gLUwkKHRvcF9idWlsZGRpcikvc3JjL2ZlX3V0aWxzIC1scGdmZXV0aWxzCiAKIFJNR1JE RVNDU09VUkNFUyA9ICQoc29ydCAkKG5vdGRpciAkKHdpbGRjYXJkICQodG9wX3NyY2Rpcikvc3Jj L2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjLypkZXNjKi5jKSkpCiBSTUdSREVTQ09CSlMgPSAkKHBh dHN1YnN0ICUuYywlLm8sJChSTUdSREVTQ1NPVVJDRVMpKQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w Z193YWxkdW1wL2FyY2hpdmVfd2FsZHVtcC5jIGIvc3JjL2Jpbi9wZ193YWxkdW1wL2FyY2hpdmVf d2FsZHVtcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40YTk1YjQ3 YjRkYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9hcmNoaXZlX3dhbGR1 bXAuYwpAQCAtMCwwICsxLDYzOSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogYXJjaGl2 ZV93YWxkdW1wLmMKKyAqCQlBIGdlbmVyaWMgZmFjaWxpdHkgZm9yIHJlYWRpbmcgV0FMIGRhdGEg ZnJvbSB0YXIgYXJjaGl2ZXMgdmlhIGFyY2hpdmUKKyAqCQlzdHJlYW1lci4KKyAqCisgKiBQb3J0 aW9ucyBDb3B5cmlnaHQgKGMpIDIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdy b3VwCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCQlzcmMvYmluL3BnX3dhbGR1bXAvYXJjaGl2 ZV93YWxkdW1wLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVkZSAicG9z dGdyZXNfZmUuaCIKKworI2luY2x1ZGUgPHVuaXN0ZC5oPgorCisjaW5jbHVkZSAiYWNjZXNzL3hs b2dfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJjb21tb24vaGFzaGZuLmgiCisjaW5jbHVkZSAiY29t bW9uL2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJmZV91dGlscy9zaW1wbGVfbGlzdC5oIgorI2luY2x1 ZGUgInBnX3dhbGR1bXAuaCIKKworLyoKKyAqIEhvdyBtYW55IGJ5dGVzIHNob3VsZCB3ZSB0cnkg dG8gcmVhZCBmcm9tIGEgZmlsZSBhdCBvbmNlPworICovCisjZGVmaW5lIFJFQURfQ0hVTktfU0la RQkJCQkoMTI4ICogMTAyNCkKKworLyoKKyAqIENoZWNrIGlmIHRoZSBzdGFydCBzZWdtZW50IG51 bWJlciBpcyB6ZXJvOyB0aGlzIGluZGljYXRlcyBhIHJlcXVlc3QgdG8gcmVhZAorICogYW55IFdB TCBmaWxlLgorICovCisjZGVmaW5lIFJFQURfQU5ZX1dBTChwcml2YXRlSW5mbykJKChwcml2YXRl SW5mbyktPnN0YXJ0X3NlZ25vID09IDApCisKKy8qCisgKiBIYXNoIGVudHJ5IHJlcHJlc2VudGlu ZyBhIFdBTCBzZWdtZW50IHJldHJpZXZlZCBmcm9tIHRoZSBhcmNoaXZlLgorICoKKyAqIFdoaWxl IFdBTCBzZWdtZW50cyBhcmUgdHlwaWNhbGx5IHJlYWQgc2VxdWVudGlhbGx5LCBpbmRpdmlkdWFs IGVudHJpZXMKKyAqIG1haW50YWluIHRoZWlyIG93biBidWZmZXJzIGZvciB0aGUgZm9sbG93aW5n IHJlYXNvbnM6CisgKgorICogMS4gQm91bmRhcnkgSGFuZGxpbmc6IFRoZSBhcmNoaXZlIHN0cmVh bWVyIHByb3ZpZGVzIGEgY29udGludW91cyBieXRlCisgKiBzdHJlYW0uIEEgc2luZ2xlIHN0cmVh bWluZyBjaHVuayBtYXkgY29udGFpbiB0aGUgZW5kIG9mIG9uZSBXQUwgc2VnbWVudAorICogYW5k IHRoZSBzdGFydCBvZiB0aGUgbmV4dC4gU2VwYXJhdGUgYnVmZmVycyBhbGxvdyB1cyB0byBlYXNp bHkKKyAqIHBhcnRpdGlvbiBhbmQgdHJhY2sgdGhlc2UgYnl0ZXMgYnkgdGhlaXIgcmVzcGVjdGl2 ZSBzZWdtZW50cy4KKyAqCisgKiAyLiBPdXQtb2YtT3JkZXIgU3VwcG9ydDogRGVkaWNhdGVkIGJ1 ZmZlcnMgc2ltcGxpZnkgbG9naWMgaWYgc2VnbWVudHMKKyAqIGFyZSBldmVyIGFyY2hpdmVkIG9y IHJldHJpZXZlZCBvdXQgb2Ygc2VxdWVuY2UuCisgKgorICogVG8gbWluaW1pemUgdGhlIG1lbW9y eSBmb290cHJpbnQsIGVudHJpZXMgYW5kIHRoZWlyIGFzc29jaWF0ZWQgYnVmZmVycyBhcmUKKyAq IGZyZWVkIGltbWVkaWF0ZWx5IG9uY2UgY29uc3VtZWQuIFNpbmNlIHBnX3dhbGR1bXAgZG9lcyBu b3QgcmVxdWVzdCB0aGUgc2FtZQorICogYnl0ZXMgdHdpY2UsIGEgc2VnbWVudCBpcyBkaXNjYXJk ZWQgYXMgc29vbiBhcyBpdCBtb3ZlcyBwYXN0IGl0LgorICovCit0eXBlZGVmIHN0cnVjdCBBcmNo aXZlZFdBTEZpbGUKK3sKKwl1aW50MzIJCXN0YXR1czsJCQkvKiBoYXNoIHN0YXR1cyAqLworCWNv bnN0IGNoYXIgKmZuYW1lOwkJCS8qIGhhc2gga2V5OiBXQUwgc2VnbWVudCBuYW1lICovCisKKwlT dHJpbmdJbmZvCWJ1ZjsJCQkvKiBob2xkcyBXQUwgYnl0ZXMgcmVhZCBmcm9tIGFyY2hpdmUgKi8K KworCWludAkJCXJlYWRfbGVuOwkJLyogdG90YWwgYnl0ZXMgb2YgYSBXQUwgcmVhZCBmcm9tIGFy Y2hpdmUgKi8KK30gQXJjaGl2ZWRXQUxGaWxlOworCitzdGF0aWMgdWludDMyIGhhc2hfc3RyaW5n X3BvaW50ZXIoY29uc3QgY2hhciAqcyk7CisjZGVmaW5lIFNIX1BSRUZJWAkJCQlBcmNoaXZlZFdB TAorI2RlZmluZSBTSF9FTEVNRU5UX1RZUEUJCQlBcmNoaXZlZFdBTEZpbGUKKyNkZWZpbmUgU0hf S0VZX1RZUEUJCQkJY29uc3QgY2hhciAqCisjZGVmaW5lIFNIX0tFWQkJCQkJZm5hbWUKKyNkZWZp bmUgU0hfSEFTSF9LRVkodGIsIGtleSkJaGFzaF9zdHJpbmdfcG9pbnRlcihrZXkpCisjZGVmaW5l IFNIX0VRVUFMKHRiLCBhLCBiKQkJKHN0cmNtcChhLCBiKSA9PSAwKQorI2RlZmluZSBTSF9TQ09Q RQkJCQlzdGF0aWMgaW5saW5lCisjZGVmaW5lIFNIX1JBV19BTExPQ0FUT1IJCXBnX21hbGxvYzAK KyNkZWZpbmUgU0hfREVDTEFSRQorI2RlZmluZSBTSF9ERUZJTkUKKyNpbmNsdWRlICJsaWIvc2lt cGxlaGFzaC5oIgorCit0eXBlZGVmIHN0cnVjdCBhc3RyZWFtZXJfd2FsZHVtcAoreworCWFzdHJl YW1lcgliYXNlOworCVhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm87Cit9IGFzdHJlYW1lcl93 YWxkdW1wOworCitzdGF0aWMgQXJjaGl2ZWRXQUxGaWxlICpnZXRfYXJjaGl2ZV93YWxfZW50cnko Y29uc3QgY2hhciAqZm5hbWUsCisJCQkJCQkJCQkJCSAgWExvZ0R1bXBQcml2YXRlICpwcml2YXRl SW5mbywKKwkJCQkJCQkJCQkJICBpbnQgV2FsU2VnU3opOworc3RhdGljIGludAlyZWFkX2FyY2hp dmVfZmlsZShYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvLCBTaXplIGNvdW50KTsKKworc3Rh dGljIGFzdHJlYW1lciAqYXN0cmVhbWVyX3dhbGR1bXBfbmV3KFhMb2dEdW1wUHJpdmF0ZSAqcHJp dmF0ZUluZm8pOworc3RhdGljIHZvaWQgYXN0cmVhbWVyX3dhbGR1bXBfY29udGVudChhc3RyZWFt ZXIgKnN0cmVhbWVyLAorCQkJCQkJCQkJICBhc3RyZWFtZXJfbWVtYmVyICptZW1iZXIsCisJCQkJ CQkJCQkgIGNvbnN0IGNoYXIgKmRhdGEsIGludCBsZW4sCisJCQkJCQkJCQkgIGFzdHJlYW1lcl9h cmNoaXZlX2NvbnRleHQgY29udGV4dCk7CitzdGF0aWMgdm9pZCBhc3RyZWFtZXJfd2FsZHVtcF9m aW5hbGl6ZShhc3RyZWFtZXIgKnN0cmVhbWVyKTsKK3N0YXRpYyB2b2lkIGFzdHJlYW1lcl93YWxk dW1wX2ZyZWUoYXN0cmVhbWVyICpzdHJlYW1lcik7CisKK3N0YXRpYyBib29sIG1lbWJlcl9pc193 YWxfZmlsZShhc3RyZWFtZXJfd2FsZHVtcCAqbXlzdHJlYW1lciwKKwkJCQkJCQkgICBhc3RyZWFt ZXJfbWVtYmVyICptZW1iZXIsCisJCQkJCQkJICAgY2hhciAqKmZuYW1lKTsKKworc3RhdGljIGNv bnN0IGFzdHJlYW1lcl9vcHMgYXN0cmVhbWVyX3dhbGR1bXBfb3BzID0geworCS5jb250ZW50ID0g YXN0cmVhbWVyX3dhbGR1bXBfY29udGVudCwKKwkuZmluYWxpemUgPSBhc3RyZWFtZXJfd2FsZHVt cF9maW5hbGl6ZSwKKwkuZnJlZSA9IGFzdHJlYW1lcl93YWxkdW1wX2ZyZWUKK307CisKKy8qCisg KiBJbml0aWFsaXplcyB0aGUgdGFyIGFyY2hpdmUgcmVhZGVyLCBjcmVhdGVzIGEgaGFzaCB0YWJs ZSBmb3IgV0FMIGVudHJpZXMsCisgKiBjaGVja3MgZm9yIGV4aXN0aW5nIHZhbGlkIFdBTCBzZWdt ZW50cyBpbiB0aGUgYXJjaGl2ZSBmaWxlIGFuZCByZXRyaWV2ZXMgdGhlCisgKiBzZWdtZW50IHNp emUsIGFuZCBzZXRzIHVwIGZpbHRlcnMgZm9yIHJlbGV2YW50IGVudHJpZXMuCisgKi8KK3ZvaWQK K2luaXRfYXJjaGl2ZV9yZWFkZXIoWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbywgY29uc3Qg Y2hhciAqd2FsZGlyLAorCQkJCQlpbnQgKldhbFNlZ1N6LCBwZ19jb21wcmVzc19hbGdvcml0aG0g Y29tcHJlc3Npb24pCit7CisJaW50CQkJZmQ7CisJYXN0cmVhbWVyICAqc3RyZWFtZXI7CisJQXJj aGl2ZWRXQUxGaWxlICplbnRyeSA9IE5VTEw7CisJWExvZ0xvbmdQYWdlSGVhZGVyIGxvbmdoZHI7 CisJWExvZ1NlZ05vCXNlZ25vOworCVRpbWVMaW5lSUQJdGltZWxpbmU7CisKKwkvKiBPcGVuIHRh ciBhcmNoaXZlIGFuZCBzdG9yZSBpdHMgZmlsZSBkZXNjcmlwdG9yICovCisJZmQgPSBvcGVuX2Zp bGVfaW5fZGlyZWN0b3J5KHdhbGRpciwgcHJpdmF0ZUluZm8tPmFyY2hpdmVfbmFtZSk7CisKKwlp ZiAoZmQgPCAwKQorCQlwZ19mYXRhbCgiY291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCIiLCBwcml2 YXRlSW5mby0+YXJjaGl2ZV9uYW1lKTsKKworCXByaXZhdGVJbmZvLT5hcmNoaXZlX2ZkID0gZmQ7 CisKKwlzdHJlYW1lciA9IGFzdHJlYW1lcl93YWxkdW1wX25ldyhwcml2YXRlSW5mbyk7CisKKwkv KiBCZWZvcmUgdGhhdCB3ZSBtdXN0IHBhcnNlIHRoZSB0YXIgYXJjaGl2ZS4gKi8KKwlzdHJlYW1l ciA9IGFzdHJlYW1lcl90YXJfcGFyc2VyX25ldyhzdHJlYW1lcik7CisKKwkvKiBCZWZvcmUgdGhh dCB3ZSBtdXN0IGRlY29tcHJlc3MsIGlmIGFyY2hpdmUgaXMgY29tcHJlc3NlZC4gKi8KKwlpZiAo Y29tcHJlc3Npb24gPT0gUEdfQ09NUFJFU1NJT05fR1pJUCkKKwkJc3RyZWFtZXIgPSBhc3RyZWFt ZXJfZ3ppcF9kZWNvbXByZXNzb3JfbmV3KHN0cmVhbWVyKTsKKwllbHNlIGlmIChjb21wcmVzc2lv biA9PSBQR19DT01QUkVTU0lPTl9MWjQpCisJCXN0cmVhbWVyID0gYXN0cmVhbWVyX2x6NF9kZWNv bXByZXNzb3JfbmV3KHN0cmVhbWVyKTsKKwllbHNlIGlmIChjb21wcmVzc2lvbiA9PSBQR19DT01Q UkVTU0lPTl9aU1REKQorCQlzdHJlYW1lciA9IGFzdHJlYW1lcl96c3RkX2RlY29tcHJlc3Nvcl9u ZXcoc3RyZWFtZXIpOworCisJcHJpdmF0ZUluZm8tPmFyY2hpdmVfc3RyZWFtZXIgPSBzdHJlYW1l cjsKKworCS8qCisJICogSGFzaCB0YWJsZSBzdG9yaW5nIFdBTCBlbnRyaWVzIHJlYWQgZnJvbSB0 aGUgYXJjaGl2ZSB3aXRoIGFuIGFyYml0cmFyeQorCSAqIGluaXRpYWwgc2l6ZQorCSAqLworCXBy aXZhdGVJbmZvLT5hcmNoaXZlX3dhbF9odGFiID0gQXJjaGl2ZWRXQUxfY3JlYXRlKDgsIE5VTEwp OworCisJLyoKKwkgKiBWZXJpZnkgdGhhdCB0aGUgYXJjaGl2ZSBjb250YWlucyB2YWxpZCBXQUwg ZmlsZXMgYW5kIGZldGNoIFdBTCBzZWdtZW50CisJICogc2l6ZQorCSAqLworCXdoaWxlIChlbnRy eSA9PSBOVUxMIHx8IGVudHJ5LT5idWYtPmxlbiA8IFhMT0dfQkxDS1NaKQorCXsKKwkJaWYgKHJl YWRfYXJjaGl2ZV9maWxlKHByaXZhdGVJbmZvLCBYTE9HX0JMQ0tTWikgPT0gMCkKKwkJCXBnX2Zh dGFsKCJjb3VsZCBub3QgZmluZCBXQUwgaW4gYXJjaGl2ZSBcIiVzXCIiLAorCQkJCQkgcHJpdmF0 ZUluZm8tPmFyY2hpdmVfbmFtZSk7CisKKwkJZW50cnkgPSBwcml2YXRlSW5mby0+Y3VyX2ZpbGU7 CisJfQorCisJLyogU2V0IFdhbFNlZ1N6IGlmIFdBTCBkYXRhIGlzIHN1Y2Nlc3NmdWxseSByZWFk ICovCisJbG9uZ2hkciA9IChYTG9nTG9uZ1BhZ2VIZWFkZXIpIGVudHJ5LT5idWYtPmRhdGE7CisK KwlpZiAoIUlzVmFsaWRXYWxTZWdTaXplKGxvbmdoZHItPnhscF9zZWdfc2l6ZSkpCisJeworCQlw Z19sb2dfZXJyb3IobmdldHRleHQoImludmFsaWQgV0FMIHNlZ21lbnQgc2l6ZSBpbiBXQUwgZmls ZSBmcm9tIGFyY2hpdmUgXCIlc1wiICglZCBieXRlKSIsCisJCQkJCQkJICAiaW52YWxpZCBXQUwg c2VnbWVudCBzaXplIGluIFdBTCBmaWxlIGZyb20gYXJjaGl2ZSBcIiVzXCIgKCVkIGJ5dGVzKSIs CisJCQkJCQkJICBsb25naGRyLT54bHBfc2VnX3NpemUpLAorCQkJCQkgcHJpdmF0ZUluZm8tPmFy Y2hpdmVfbmFtZSwgbG9uZ2hkci0+eGxwX3NlZ19zaXplKTsKKwkJcGdfbG9nX2Vycm9yX2RldGFp bCgiVGhlIFdBTCBzZWdtZW50IHNpemUgbXVzdCBiZSBhIHBvd2VyIG9mIHR3byBiZXR3ZWVuIDEg TUIgYW5kIDEgR0IuIik7CisJCWV4aXQoMSk7CisJfQorCisJKldhbFNlZ1N6ID0gbG9uZ2hkci0+ eGxwX3NlZ19zaXplOworCisJLyoKKwkgKiBXaXRoIHRoZSBXQUwgc2VnbWVudCBzaXplIGF2YWls YWJsZSwgd2UgY2FuIG5vdyBpbml0aWFsaXplIHRoZQorCSAqIGRlcGVuZGVudCBzdGFydCBhbmQg ZW5kIHNlZ21lbnQgbnVtYmVycy4KKwkgKi8KKwlBc3NlcnQoIVhMb2dSZWNQdHJJc0ludmFsaWQo cHJpdmF0ZUluZm8tPnN0YXJ0cHRyKSk7CisJWExCeXRlVG9TZWcocHJpdmF0ZUluZm8tPnN0YXJ0 cHRyLCBwcml2YXRlSW5mby0+c3RhcnRfc2Vnbm8sICpXYWxTZWdTeik7CisKKwlpZiAoIVhMb2dS ZWNQdHJJc0ludmFsaWQocHJpdmF0ZUluZm8tPmVuZHB0cikpCisJCVhMQnl0ZVRvU2VnKHByaXZh dGVJbmZvLT5lbmRwdHIsIHByaXZhdGVJbmZvLT5lbmRfc2Vnbm8sICpXYWxTZWdTeik7CisKKwkv KgorCSAqIFRoaXMgV0FMIHJlY29yZCB3YXMgZmV0Y2hlZCBiZWZvcmUgdGhlIGZpbHRlcmluZyBw YXJhbWV0ZXJzCisJICogKHN0YXJ0X3NlZ25vIGFuZCBlbmRfc2Vnbm8pIHdlcmUgZnVsbHkgaW5p dGlhbGl6ZWQuIFBlcmZvcm0gdGhlCisJICogcmVsZXZhbmNlIGNoZWNrIGFnYWluc3QgdGhlIHVz ZXItcHJvdmlkZWQgcmFuZ2Ugbm93OyBpZiB0aGUgV0FMIGZhbGxzCisJICogb3V0c2lkZSB0aGlz IHJhbmdlLCByZW1vdmUgaXQgZnJvbSB0aGUgaGFzaCB0YWJsZS4gU3Vic2VxdWVudCBXQUwgd2ls bAorCSAqIGJlIGZpbHRlcmVkIGF1dG9tYXRpY2FsbHkgYnkgdGhlIGFyY2hpdmVkIHN0cmVhbWVy IHVzaW5nIHRoZSB1cGRhdGVkCisJICogc3RhcnRfc2Vnbm8gYW5kIGVuZF9zZWdubyB2YWx1ZXMu CisJICovCisJWExvZ0Zyb21GaWxlTmFtZShlbnRyeS0+Zm5hbWUsICZ0aW1lbGluZSwgJnNlZ25v LCBwcml2YXRlSW5mby0+c2Vnc2l6ZSk7CisJaWYgKHByaXZhdGVJbmZvLT50aW1lbGluZSAhPSB0 aW1lbGluZSB8fAorCQlwcml2YXRlSW5mby0+c3RhcnRfc2Vnbm8gPiBzZWdubyB8fAorCQlwcml2 YXRlSW5mby0+ZW5kX3NlZ25vIDwgc2Vnbm8pCisJCWZyZWVfYXJjaGl2ZV93YWxfZW50cnkoZW50 cnktPmZuYW1lLCBwcml2YXRlSW5mbyk7Cit9CisKKy8qCisgKiBSZWxlYXNlIHRoZSBhcmNoaXZl IHN0cmVhbWVyIGNoYWluIGFuZCBjbG9zZSB0aGUgYXJjaGl2ZSBmaWxlLgorICovCit2b2lkCitm cmVlX2FyY2hpdmVfcmVhZGVyKFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8pCit7CisJLyoK KwkgKiBOQjogTm9ybWFsbHksIGFzdHJlYW1lcl9maW5hbGl6ZSgpIGlzIGNhbGxlZCBiZWZvcmUg YXN0cmVhbWVyX2ZyZWUoKSB0bworCSAqIGZsdXNoIGFueSByZW1haW5pbmcgYnVmZmVyZWQgZGF0 YSBvciB0byBlbnN1cmUgdGhlIGVuZCBvZiB0aGUgdGFyCisJICogYXJjaGl2ZSBpcyByZWFjaGVk LiBIb3dldmVyLCB3aGVuIGRlY29kaW5nIGEgV0FMIGZpbGUsIG9uY2Ugd2UgaGl0IHRoZQorCSAq IGVuZCBMU04sIGFueSByZW1haW5pbmcgV0FMIGRhdGEgaW4gdGhlIGJ1ZmZlciBvciB0aGUgdGFy IGFyY2hpdmUncworCSAqIHVucmVhY2hlZCBlbmQgY2FuIGJlIHNhZmVseSBpZ25vcmVkLgorCSAq LworCWFzdHJlYW1lcl9mcmVlKHByaXZhdGVJbmZvLT5hcmNoaXZlX3N0cmVhbWVyKTsKKworCS8q IENsb3NlIHRoZSBmaWxlLiAqLworCWlmIChjbG9zZShwcml2YXRlSW5mby0+YXJjaGl2ZV9mZCkg IT0gMCkKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY2xvc2UgZmlsZSBcIiVzXCI6ICVtIiwK KwkJCQkJIHByaXZhdGVJbmZvLT5hcmNoaXZlX25hbWUpOworfQorCisvKgorICogQ29waWVzIFdB TCBkYXRhIGZyb20gYXN0cmVhbWVyIHRvIHJlYWRCdWZmOyBpZiB1bmF2YWlsYWJsZSwgZmV0Y2hl cyBtb3JlCisgKiBmcm9tIHRoZSB0YXIgYXJjaGl2ZSB2aWEgYXN0cmVhbWVyLgorICovCitpbnQK K3JlYWRfYXJjaGl2ZV93YWxfcGFnZShYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvLCBYTG9n UmVjUHRyIHRhcmdldFBhZ2VQdHIsCisJCQkJCSAgU2l6ZSBjb3VudCwgY2hhciAqcmVhZEJ1ZmYs IGludCBXYWxTZWdTeikKK3sKKwljaGFyCSAgICpwID0gcmVhZEJ1ZmY7CisJU2l6ZQkJbmJ5dGVz ID0gY291bnQ7CisJWExvZ1JlY1B0cglyZWNwdHIgPSB0YXJnZXRQYWdlUHRyOworCVhMb2dTZWdO bwlzZWdubzsKKwljaGFyCQlmbmFtZVtNQVhGTkFNRUxFTl07CisJQXJjaGl2ZWRXQUxGaWxlICpl bnRyeTsKKworCS8qIElkZW50aWZ5IHRoZSBzZWdtZW50IGFuZCBsb2NhdGUgaXRzIGVudHJ5IGlu IHRoZSBhcmNoaXZlIGhhc2ggKi8KKwlYTEJ5dGVUb1NlZyh0YXJnZXRQYWdlUHRyLCBzZWdubywg V2FsU2VnU3opOworCVhMb2dGaWxlTmFtZShmbmFtZSwgcHJpdmF0ZUluZm8tPnRpbWVsaW5lLCBz ZWdubywgV2FsU2VnU3opOworCWVudHJ5ID0gZ2V0X2FyY2hpdmVfd2FsX2VudHJ5KGZuYW1lLCBw cml2YXRlSW5mbywgV2FsU2VnU3opOworCisJd2hpbGUgKG5ieXRlcyA+IDApCisJeworCQljaGFy CSAgICpidWYgPSBlbnRyeS0+YnVmLT5kYXRhOworCQlpbnQJCQlidWZMZW4gPSBlbnRyeS0+YnVm LT5sZW47CisJCVhMb2dSZWNQdHIJZW5kUHRyOworCQlYTG9nUmVjUHRyCXN0YXJ0UHRyOworCisJ CS8qIENhbGN1bGF0ZSB0aGUgTFNOIHJhbmdlIGN1cnJlbnRseSByZXNpZGluZyBpbiB0aGUgYnVm ZmVyICovCisJCVhMb2dTZWdOb09mZnNldFRvUmVjUHRyKHNlZ25vLCBlbnRyeS0+cmVhZF9sZW4s IFdhbFNlZ1N6LCBlbmRQdHIpOworCQlzdGFydFB0ciA9IGVuZFB0ciAtIGJ1ZkxlbjsKKworCQkv KgorCQkgKiBDb3B5IHRoZSByZXF1ZXN0ZWQgV0FMIHJlY29yZCBpZiBpdCBleGlzdHMgaW4gdGhl IGJ1ZmZlci4KKwkJICovCisJCWlmIChidWZMZW4gPiAwICYmIHN0YXJ0UHRyIDw9IHJlY3B0ciAm JiByZWNwdHIgPCBlbmRQdHIpCisJCXsKKwkJCWludAkJCWNvcHlCeXRlczsKKwkJCWludAkJCW9m ZnNldCA9IHJlY3B0ciAtIHN0YXJ0UHRyOworCisJCQkvKgorCQkJICogR2l2ZW4gc3RhcnRQdHIg PD0gcmVjcHRyIDwgZW5kUHRyIGFuZCBhIHRvdGFsIGJ1ZmZlciBzaXplCisJCQkgKiAnYnVmTGVu JywgdGhlIG9mZnNldCAocmVjcHRyIC0gc3RhcnRQdHIpIHdpbGwgYWx3YXlzIGJlIGxlc3MKKwkJ CSAqIHRoYW4gJ2J1ZkxlbicuCisJCQkgKi8KKwkJCUFzc2VydChvZmZzZXQgPCBidWZMZW4pOwor CisJCQljb3B5Qnl0ZXMgPSBNaW4obmJ5dGVzLCBidWZMZW4gLSBvZmZzZXQpOworCQkJbWVtY3B5 KHAsIGJ1ZiArIG9mZnNldCwgY29weUJ5dGVzKTsKKworCQkJLyogVXBkYXRlIHN0YXRlIGZvciBy ZWFkICovCisJCQlyZWNwdHIgKz0gY29weUJ5dGVzOworCQkJbmJ5dGVzIC09IGNvcHlCeXRlczsK KwkJCXAgKz0gY29weUJ5dGVzOworCQl9CisJCWVsc2UKKwkJeworCQkJLyoKKwkJCSAqIEJlZm9y ZSBzdGFydGluZyB0aGUgYWN0dWFsIGRlY29kaW5nIGxvb3AsIHBnX3dhbGR1bXAgdHJpZXMgdG8K KwkJCSAqIGxvY2F0ZSB0aGUgZmlyc3QgdmFsaWQgcmVjb3JkIGZyb20gdGhlIHVzZXItc3BlY2lm aWVkIHN0YXJ0CisJCQkgKiBwb3NpdGlvbiwgd2hpY2ggbWlnaHQgbm90IGJlIHRoZSBzdGFydCBv ZiBhIFdBTCByZWNvcmQgYW5kCisJCQkgKiBjb3VsZCBmYWxsIGluIHRoZSBtaWRkbGUgb2YgYSBy ZWNvcmQgdGhhdCBzcGFucyBtdWx0aXBsZSBwYWdlcy4KKwkJCSAqIENvbnNlcXVlbnRseSwgdGhl IHZhbGlkIHN0YXJ0IHBvc2l0aW9uIHRoZSBkZWNvZGVyIGlzIGxvb2tpbmcKKwkJCSAqIGZvciBj b3VsZCBiZSBmYXIgYXdheSBmcm9tIHRoYXQgaW5pdGlhbCBwb3NpdGlvbi4KKwkJCSAqCisJCQkg KiBUaGlzIG1heSBpbnZvbHZlIHJlYWRpbmcgYWNyb3NzIG11bHRpcGxlIHBhZ2VzLCBhbmQgdGhp cworCQkJICogcHJlLXJlYWRpbmcgZmV0Y2hlcyBkYXRhIGluIG11bHRpcGxlIHJvdW5kcyBmcm9t IHRoZSBhcmNoaXZlCisJCQkgKiBzdHJlYW1lcjsgbm9ybWFsbHksIHdlIHdvdWxkIHRocm93IGF3 YXkgZXhpc3RpbmcgYnVmZmVyCisJCQkgKiBjb250ZW50cyB0byBmZXRjaCB0aGUgbmV4dCBzZXQg b2YgZGF0YSwgYnV0IHRoYXQgZXhpc3RpbmcgZGF0YQorCQkJICogbWlnaHQgYmUgbmVlZGVkIG9u Y2UgdGhlIG1haW4gbG9vcCBzdGFydHMuIEJlY2F1c2UgcHJldmlvdXNseQorCQkJICogcmVhZCBk YXRhIGNhbm5vdCBiZSByZS1yZWFkIGJ5IHRoZSBhcmNoaXZlIHN0cmVhbWVyLCB3ZSBkZWxheQor CQkJICogcmVzZXR0aW5nIHRoZSBidWZmZXIgdW50aWwgdGhlIG1haW4gZGVjb2RpbmcgbG9vcCBp cyBlbnRlcmVkLgorCQkJICoKKwkJCSAqIE9uY2UgcGdfd2FsZHVtcCBoYXMgZW50ZXJlZCB0aGUg bWFpbiBsb29wLCBpdCBtYXkgcmUtcmVhZCB0aGUKKwkJCSAqIGN1cnJlbnRseSBhY3RpdmUgcGFn ZSwgYnV0IG5ldmVyIGFuIG9sZGVyIG9uZTsgdGhlcmVmb3JlLCBhbnkKKwkJCSAqIGZ1bGx5IGNv bnN1bWVkIFdBTCBkYXRhIHByZWNlZGluZyB0aGUgY3VycmVudCBwYWdlIGNhbiB0aGVuIGJlCisJ CQkgKiBzYWZlbHkgZGlzY2FyZGVkLgorCQkJICovCisJCQlpZiAocHJpdmF0ZUluZm8tPmRlY29k aW5nX3N0YXJ0ZWQpCisJCQl7CisJCQkJcmVzZXRTdHJpbmdJbmZvKGVudHJ5LT5idWYpOworCisJ CQkJLyoKKwkJCQkgKiBQdXNoIGJhY2sgdGhlIHBhcnRpYWwgcGFnZSBkYXRhIGZvciB0aGUgY3Vy cmVudCBwYWdlIHRvIHRoZQorCQkJCSAqIGJ1ZmZlciwgZW5zdXJpbmcgaXQgcmVtYWlucyBmdWxs IHBhZ2UgYXZhaWxhYmxlIGZvcgorCQkJCSAqIHJlLXJlYWRpbmcgaWYgcmVxdWVzdGVkLgorCQkJ CSAqLworCQkJCWlmIChwID4gcmVhZEJ1ZmYpCisJCQkJeworCQkJCQlBc3NlcnQoKGNvdW50IC0g bmJ5dGVzKSA+IDApOworCQkJCQlhcHBlbmRCaW5hcnlTdHJpbmdJbmZvKGVudHJ5LT5idWYsIHJl YWRCdWZmLCBjb3VudCAtIG5ieXRlcyk7CisJCQkJfQorCQkJfQorCisJCQkvKgorCQkJICogTm93 LCBmZXRjaCBtb3JlIGRhdGE7IHJhaXNlIGFuIGVycm9yIGlmIGl0J3Mgbm90IHRoZSBjdXJyZW50 CisJCQkgKiBzZWdtZW50IGJlaW5nIHJlYWQgYnkgdGhlIGFyY2hpdmUgc3RyZWFtZXIgb3IgaWYg cmVhZGluZyBvZiB0aGUKKwkJCSAqIGFyY2hpdmVkIGZpbGUgaGFzIGZpbmlzaGVkLgorCQkJICov CisJCQlpZiAocHJpdmF0ZUluZm8tPmN1cl9maWxlICE9IGVudHJ5IHx8CisJCQkJcmVhZF9hcmNo aXZlX2ZpbGUocHJpdmF0ZUluZm8sIFJFQURfQ0hVTktfU0laRSkgPT0gMCkKKwkJCQlwZ19mYXRh bCgiY291bGQgbm90IHJlYWQgZmlsZSBcIiVzXCIgZnJvbSBhcmNoaXZlIFwiJXNcIjogcmVhZCAl bGxkIG9mICVsbGQiLAorCQkJCQkJIGZuYW1lLCBwcml2YXRlSW5mby0+YXJjaGl2ZV9uYW1lLAor CQkJCQkJIChsb25nIGxvbmcgaW50KSAoY291bnQgLSBuYnl0ZXMpLAorCQkJCQkJIChsb25nIGxv bmcgaW50KSBjb3VudCk7CisJCX0KKwl9CisKKwkvKgorCSAqIFNob3VsZCBoYXZlIGVpdGhlciBo YXZlIHN1Y2Nlc3NmdWxseSByZWFkIGFsbCB0aGUgcmVxdWVzdGVkIGJ5dGVzIG9yCisJICogcmVw b3J0ZWQgYSBmYWlsdXJlIGJlZm9yZSB0aGlzIHBvaW50LgorCSAqLworCUFzc2VydChuYnl0ZXMg PT0gMCk7CisKKwkvKgorCSAqIE5COiBXZSByZXR1cm4gdGhlIGZpeGVkIHZhbHVlIHByb3ZpZGVk IGFzIGlucHV0LiBBbHRob3VnaCB3ZSBjb3VsZAorCSAqIHJldHVybiBhIGJvb2xlYW4gc2luY2Ug d2UgZWl0aGVyIHN1Y2Nlc3NmdWxseSByZWFkIHRoZSBXQUwgcGFnZSBvcgorCSAqIHJhaXNlIGFu IGVycm9yLCBidXQgdGhlIGNhbGxlciBleHBlY3RzIHRoaXMgdmFsdWUgdG8gYmUgcmV0dXJuZWQu IFRoZQorCSAqIHJvdXRpbmUgdGhhdCByZWFkcyBXQUwgcGFnZXMgZnJvbSB0aGUgcGh5c2ljYWwg V0FMIGZpbGUgZm9sbG93cyB0aGUKKwkgKiBzYW1lIGNvbnZlbnRpb24uCisJICovCisJcmV0dXJu IGNvdW50OworfQorCisvKgorICogQ2xlYXJzIHRoZSBidWZmZXIgb2YgYSBXQUwgZW50cnkgdGhh dCBpcyBiZWluZyBpZ25vcmVkLiAgVGhpcyBmcmVlcyB1cCBtZW1vcnkKKyAqIGFuZCBwcmV2ZW50 cyB0aGUgYWNjdW11bGF0aW9uIG9mIGlycmVsZXZhbnQgV0FMIGRhdGEuICBBZGRpdGlvbmFsbHks CisgKiBjb25kaXRpb25hbGx5IHNldHRpbmcgY3VyX2ZpbGUgd2l0aGluIHByaXZhdGVpbmZvIHRv IE5VTEwgZW5zdXJlcyB0aGUKKyAqIGFyY2hpdmUgc3RyZWFtZXIgc2tpcHMgdW5uZWNlc3Nhcnkg Y29weSBvcGVyYXRpb25zCisgKi8KK3ZvaWQKK2ZyZWVfYXJjaGl2ZV93YWxfZW50cnkoY29uc3Qg Y2hhciAqZm5hbWUsIFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8pCit7CisJQXJjaGl2ZWRX QUxGaWxlICplbnRyeTsKKworCWVudHJ5ID0gQXJjaGl2ZWRXQUxfbG9va3VwKHByaXZhdGVJbmZv LT5hcmNoaXZlX3dhbF9odGFiLCBmbmFtZSk7CisKKwlpZiAoZW50cnkgPT0gTlVMTCkKKwkJcmV0 dXJuOworCisJLyogRGVzdHJveSB0aGUgYnVmZmVyICovCisJZGVzdHJveVN0cmluZ0luZm8oZW50 cnktPmJ1Zik7CisJZW50cnktPmJ1ZiA9IE5VTEw7CisKKwkvKiBTZXQgY3VyX2ZpbGUgdG8gTlVM TCBpZiBpdCBtYXRjaGVzIHRoZSBlbnRyeSBiZWluZyBpZ25vcmVkICovCisJaWYgKHByaXZhdGVJ bmZvLT5jdXJfZmlsZSA9PSBlbnRyeSkKKwkJcHJpdmF0ZUluZm8tPmN1cl9maWxlID0gTlVMTDsK KworCUFyY2hpdmVkV0FMX2RlbGV0ZV9pdGVtKHByaXZhdGVJbmZvLT5hcmNoaXZlX3dhbF9odGFi LCBlbnRyeSk7Cit9CisKKy8qCisgKiBSZXR1cm5zIHRoZSBhcmNoaXZlZCBXQUwgZW50cnkgZnJv bSB0aGUgaGFzaCB0YWJsZSBpZiBpdCBleGlzdHMuICBPdGhlcndpc2UsCisgKiBpdCBpbnZva2Vz IHRoZSByb3V0aW5lIHRvIHJlYWQgdGhlIGFyY2hpdmVkIGZpbGUsIHdoaWNoIHRoZW4gcG9wdWxh dGVzIHRoZQorICogZW50cnkgaW4gdGhlIGhhc2ggdGFibGUgaWYgdGhhdCBXQUwgZXhpc3RzIGlu IHRoZSBhcmNoaXZlLgorICovCitzdGF0aWMgQXJjaGl2ZWRXQUxGaWxlICoKK2dldF9hcmNoaXZl X3dhbF9lbnRyeShjb25zdCBjaGFyICpmbmFtZSwgWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5m bywKKwkJCQkJICBpbnQgV2FsU2VnU3opCit7CisJQXJjaGl2ZWRXQUxGaWxlICplbnRyeSA9IE5V TEw7CisKKwkvKiBTZWFyY2ggaGFzaCB0YWJsZSAqLworCWVudHJ5ID0gQXJjaGl2ZWRXQUxfbG9v a3VwKHByaXZhdGVJbmZvLT5hcmNoaXZlX3dhbF9odGFiLCBmbmFtZSk7CisKKwlpZiAoZW50cnkg IT0gTlVMTCkKKwkJcmV0dXJuIGVudHJ5OworCisJLyoKKwkgKiBUaGUgcmVxdWVzdGVkIFdBTCBl bnRyeSBoYXMgbm90IGJlZW4gcmVhZCBmcm9tIHRoZSBhcmNoaXZlIHlldDsgaW52b2tlCisJICog dGhlIGFyY2hpdmUgc3RyZWFtZXIgdG8gcmVhZCBpdC4KKwkgKi8KKwl3aGlsZSAoMSkKKwl7CisJ CS8qIEZldGNoIG1vcmUgZGF0YSAqLworCQlpZiAocmVhZF9hcmNoaXZlX2ZpbGUocHJpdmF0ZUlu Zm8sIFJFQURfQ0hVTktfU0laRSkgPT0gMCkKKwkJCWJyZWFrOwkJCQkvKiBhcmNoaXZlIGZpbGUg ZW5kZWQgKi8KKworCQkvKgorCQkgKiBBcmNoaXZlZCBzdHJlYW1lciBpcyByZWFkaW5nIGEgbm9u LVdBTCBmaWxlIG9yIGFuIGlycmVsZXZhbnQgV0FMCisJCSAqIGZpbGUuCisJCSAqLworCQlpZiAo cHJpdmF0ZUluZm8tPmN1cl9maWxlID09IE5VTEwpCisJCQljb250aW51ZTsKKworCQllbnRyeSA9 IHByaXZhdGVJbmZvLT5jdXJfZmlsZTsKKworCQkvKiBGb3VuZCB0aGUgcmVxdWlyZWQgZW50cnkg Ki8KKwkJaWYgKHN0cmNtcChmbmFtZSwgZW50cnktPmZuYW1lKSA9PSAwKQorCQkJcmV0dXJuIGVu dHJ5OworCisJCS8qIFdBTCBzZWdtZW50cyBtdXN0IGJlIGFyY2hpdmVkIGluIG9yZGVyICovCisJ CXBnX2xvZ19lcnJvcigiV0FMIGZpbGVzIGFyZSBub3QgYXJjaGl2ZWQgaW4gc2VxdWVudGlhbCBv cmRlciIpOworCQlwZ19sb2dfZXJyb3JfZGV0YWlsKCJFeHBlY3Rpbmcgc2VnbWVudCBcIiVzXCIg YnV0IGZvdW5kIFwiJXNcIi4iLAorCQkJCQkJCWZuYW1lLCBlbnRyeS0+Zm5hbWUpOworCQlleGl0 KDEpOworCX0KKworCS8qIFJlcXVlc3RlZCBXQUwgc2VnbWVudCBub3QgZm91bmQgKi8KKwlwZ19m YXRhbCgiY291bGQgbm90IGZpbmQgV0FMIFwiJXNcIiBpbiBhcmNoaXZlIFwiJXNcIiIsCisJCQkg Zm5hbWUsIHByaXZhdGVJbmZvLT5hcmNoaXZlX25hbWUpOworfQorCisvKgorICogUmVhZHMgdGhl IGFyY2hpdmUgZmlsZSBhbmQgcGFzc2VzIGl0IHRvIHRoZSBhcmNoaXZlIHN0cmVhbWVyIGZvcgor ICogZGVjb21wcmVzc2lvbi4KKyAqLworc3RhdGljIGludAorcmVhZF9hcmNoaXZlX2ZpbGUoWExv Z0R1bXBQcml2YXRlICpwcml2YXRlSW5mbywgU2l6ZSBjb3VudCkKK3sKKwlpbnQJCQlyYzsKKwlj aGFyCSAgICpidWZmZXI7CisKKwlidWZmZXIgPSBwZ19tYWxsb2MoY291bnQgKiBzaXplb2YodWlu dDgpKTsKKworCXJjID0gcmVhZChwcml2YXRlSW5mby0+YXJjaGl2ZV9mZCwgYnVmZmVyLCBjb3Vu dCk7CisJaWYgKHJjIDwgMCkKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCByZWFkIGZpbGUgXCIlc1wi OiAlbSIsCisJCQkJIHByaXZhdGVJbmZvLT5hcmNoaXZlX25hbWUpOworCisJLyoKKwkgKiBEZWNv bXByZXNzIChpZiByZXF1aXJlZCksIGFuZCB0aGVuIHBhcnNlIHRoZSBwcmV2aW91c2x5IHJlYWQg Y29udGVudHMKKwkgKiBvZiB0aGUgdGFyIGZpbGUuCisJICovCisJaWYgKHJjID4gMCkKKwkJYXN0 cmVhbWVyX2NvbnRlbnQocHJpdmF0ZUluZm8tPmFyY2hpdmVfc3RyZWFtZXIsIE5VTEwsCisJCQkJ CQkgIGJ1ZmZlciwgcmMsIEFTVFJFQU1FUl9VTktOT1dOKTsKKwlwZ19mcmVlKGJ1ZmZlcik7CisK KwlyZXR1cm4gcmM7Cit9CisKKy8qCisgKiBDcmVhdGUgYW4gYXN0cmVhbWVyIHRoYXQgY2FuIHJl YWQgV0FMIGZyb20gYSB0YXIgZmlsZS4KKyAqLworc3RhdGljIGFzdHJlYW1lciAqCithc3RyZWFt ZXJfd2FsZHVtcF9uZXcoWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbykKK3sKKwlhc3RyZWFt ZXJfd2FsZHVtcCAqc3RyZWFtZXI7CisKKwlzdHJlYW1lciA9IHBhbGxvYzBfb2JqZWN0KGFzdHJl YW1lcl93YWxkdW1wKTsKKwkqKChjb25zdCBhc3RyZWFtZXJfb3BzICoqKSAmc3RyZWFtZXItPmJh c2UuYmJzX29wcykgPQorCQkmYXN0cmVhbWVyX3dhbGR1bXBfb3BzOworCisJc3RyZWFtZXItPnBy aXZhdGVJbmZvID0gcHJpdmF0ZUluZm87CisKKwlyZXR1cm4gJnN0cmVhbWVyLT5iYXNlOworfQor CisvKgorICogTWFpbiBlbnRyeSBwb2ludCBvZiB0aGUgYXJjaGl2ZSBzdHJlYW1lciBmb3IgcmVh ZGluZyBXQUwgZGF0YSBmcm9tIGEgdGFyCisgKiBmaWxlLiBJZiBhIG1lbWJlciBpcyBpZGVudGlm aWVkIGFzIGEgdmFsaWQgV0FMIGZpbGUsIGEgaGFzaCBlbnRyeSBpcyBjcmVhdGVkCisgKiBmb3Ig aXQsIGFuZCBpdHMgY29udGVudHMgYXJlIGNvcGllZCBpbnRvIHRoYXQgZW50cnkncyBidWZmZXIs IG1ha2luZyB0aGVtCisgKiBhY2Nlc3NpYmxlIHRvIHRoZSBkZWNvZGluZyByb3V0aW5lLgorICov CitzdGF0aWMgdm9pZAorYXN0cmVhbWVyX3dhbGR1bXBfY29udGVudChhc3RyZWFtZXIgKnN0cmVh bWVyLCBhc3RyZWFtZXJfbWVtYmVyICptZW1iZXIsCisJCQkJCQkgIGNvbnN0IGNoYXIgKmRhdGEs IGludCBsZW4sCisJCQkJCQkgIGFzdHJlYW1lcl9hcmNoaXZlX2NvbnRleHQgY29udGV4dCkKK3sK Kwlhc3RyZWFtZXJfd2FsZHVtcCAqbXlzdHJlYW1lciA9IChhc3RyZWFtZXJfd2FsZHVtcCAqKSBz dHJlYW1lcjsKKwlYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvID0gbXlzdHJlYW1lci0+cHJp dmF0ZUluZm87CisKKwlBc3NlcnQoY29udGV4dCAhPSBBU1RSRUFNRVJfVU5LTk9XTik7CisKKwlz d2l0Y2ggKGNvbnRleHQpCisJeworCQljYXNlIEFTVFJFQU1FUl9NRU1CRVJfSEVBREVSOgorCQkJ eworCQkJCWNoYXIJICAgKmZuYW1lID0gTlVMTDsKKwkJCQlBcmNoaXZlZFdBTEZpbGUgKmVudHJ5 OworCQkJCWJvb2wJCWZvdW5kOworCisJCQkJcGdfbG9nX2RlYnVnKCJyZWFkaW5nIFwiJXNcIiIs IG1lbWJlci0+cGF0aG5hbWUpOworCisJCQkJaWYgKCFtZW1iZXJfaXNfd2FsX2ZpbGUobXlzdHJl YW1lciwgbWVtYmVyLCAmZm5hbWUpKQorCQkJCQlicmVhazsKKworCQkJCS8qCisJCQkJICogRnVy dGhlciBjaGVja3MgYXJlIHNraXBwZWQgaWYgYW55IFdBTCBmaWxlIGNhbiBiZSByZWFkLgorCQkJ CSAqIFRoaXMgdHlwaWNhbGx5IG9jY3VycyBkdXJpbmcgaW5pdGlhbCB2ZXJpZmljYXRpb24uCisJ CQkJICovCisJCQkJaWYgKCFSRUFEX0FOWV9XQUwocHJpdmF0ZUluZm8pKQorCQkJCXsKKwkJCQkJ WExvZ1NlZ05vCXNlZ25vOworCQkJCQlUaW1lTGluZUlECXRpbWVsaW5lOworCisJCQkJCS8qCisJ CQkJCSAqIFNraXAgdGhlIHNlZ21lbnQgaWYgdGhlIHRpbWVsaW5lIGRvZXMgbm90IG1hdGNoLCBp ZiBpdAorCQkJCQkgKiBmYWxscyBvdXRzaWRlIHRoZSBjYWxsZXItc3BlY2lmaWVkIHJhbmdlLgor CQkJCQkgKi8KKwkJCQkJWExvZ0Zyb21GaWxlTmFtZShmbmFtZSwgJnRpbWVsaW5lLCAmc2Vnbm8s IHByaXZhdGVJbmZvLT5zZWdzaXplKTsKKwkJCQkJaWYgKHByaXZhdGVJbmZvLT50aW1lbGluZSAh PSB0aW1lbGluZSB8fAorCQkJCQkJcHJpdmF0ZUluZm8tPnN0YXJ0X3NlZ25vID4gc2Vnbm8gfHwK KwkJCQkJCXByaXZhdGVJbmZvLT5lbmRfc2Vnbm8gPCBzZWdubykKKwkJCQkJeworCQkJCQkJcGZy ZWUoZm5hbWUpOworCQkJCQkJYnJlYWs7CisJCQkJCX0KKwkJCQl9CisKKwkJCQllbnRyeSA9IEFy Y2hpdmVkV0FMX2luc2VydChwcml2YXRlSW5mby0+YXJjaGl2ZV93YWxfaHRhYiwKKwkJCQkJCQkJ CQkgICBmbmFtZSwgJmZvdW5kKTsKKworCQkJCS8qCisJCQkJICogU2hvdWxkbid0IGhhcHBlbiwg YnV0IGlmIGl0IGRvZXMsIHNpbXBseSBpZ25vcmUgdGhlCisJCQkJICogZHVwbGljYXRlIFdBTCBm aWxlLgorCQkJCSAqLworCQkJCWlmIChmb3VuZCkKKwkJCQl7CisJCQkJCXBnX2xvZ193YXJuaW5n KCJpZ25vcmluZyBkdXBsaWNhdGUgV0FMIFwiJXNcIiBmb3VuZCBpbiBhcmNoaXZlIFwiJXNcIiIs CisJCQkJCQkJCSAgIG1lbWJlci0+cGF0aG5hbWUsIHByaXZhdGVJbmZvLT5hcmNoaXZlX25hbWUp OworCQkJCQlwZnJlZShmbmFtZSk7CisJCQkJCWJyZWFrOworCQkJCX0KKworCQkJCWVudHJ5LT5i dWYgPSBtYWtlU3RyaW5nSW5mbygpOworCQkJCWVudHJ5LT5yZWFkX2xlbiA9IDA7CisJCQkJcHJp dmF0ZUluZm8tPmN1cl9maWxlID0gZW50cnk7CisJCQl9CisJCQlicmVhazsKKworCQljYXNlIEFT VFJFQU1FUl9NRU1CRVJfQ09OVEVOVFM6CisJCQlpZiAocHJpdmF0ZUluZm8tPmN1cl9maWxlKQor CQkJeworCQkJCWFwcGVuZEJpbmFyeVN0cmluZ0luZm8ocHJpdmF0ZUluZm8tPmN1cl9maWxlLT5i dWYsIGRhdGEsIGxlbik7CisJCQkJcHJpdmF0ZUluZm8tPmN1cl9maWxlLT5yZWFkX2xlbiArPSBs ZW47CisJCQl9CisJCQlicmVhazsKKworCQljYXNlIEFTVFJFQU1FUl9NRU1CRVJfVFJBSUxFUjoK KwkJCXByaXZhdGVJbmZvLT5jdXJfZmlsZSA9IE5VTEw7CisJCQlicmVhazsKKworCQljYXNlIEFT VFJFQU1FUl9BUkNISVZFX1RSQUlMRVI6CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJLyog U2hvdWxkbid0IGhhcHBlbi4gKi8KKwkJCXBnX2ZhdGFsKCJ1bmV4cGVjdGVkIHN0YXRlIHdoaWxl IHBhcnNpbmcgdGFyIGZpbGUiKTsKKwl9Cit9CisKKy8qCisgKiBFbmQtb2Ytc3RyZWFtIHByb2Nl c3NpbmcgZm9yIGFuIGFzdHJlYW1lcl93YWxkdW1wIHN0cmVhbS4KKyAqLworc3RhdGljIHZvaWQK K2FzdHJlYW1lcl93YWxkdW1wX2ZpbmFsaXplKGFzdHJlYW1lciAqc3RyZWFtZXIpCit7CisJQXNz ZXJ0KHN0cmVhbWVyLT5iYnNfbmV4dCA9PSBOVUxMKTsKK30KKworLyoKKyAqIEZyZWUgbWVtb3J5 IGFzc29jaWF0ZWQgd2l0aCBhIGFzdHJlYW1lcl93YWxkdW1wIHN0cmVhbS4KKyAqLworc3RhdGlj IHZvaWQKK2FzdHJlYW1lcl93YWxkdW1wX2ZyZWUoYXN0cmVhbWVyICpzdHJlYW1lcikKK3sKKwlB c3NlcnQoc3RyZWFtZXItPmJic19uZXh0ID09IE5VTEwpOworCXBmcmVlKHN0cmVhbWVyKTsKK30K KworLyoKKyAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgYXJjaGl2ZSBtZW1iZXIgbmFtZSBtYXRjaGVz IHRoZSBXQUwgbmFtaW5nIGZvcm1hdC4gSWYKKyAqIHN1Y2Nlc3NmdWwsIGl0IGFsc28gb3V0cHV0 cyB0aGUgV0FMIHNlZ21lbnQgbmFtZS4KKyAqLworc3RhdGljIGJvb2wKK21lbWJlcl9pc193YWxf ZmlsZShhc3RyZWFtZXJfd2FsZHVtcCAqbXlzdHJlYW1lciwgYXN0cmVhbWVyX21lbWJlciAqbWVt YmVyLAorCQkJCSAgIGNoYXIgKipmbmFtZSkKK3sKKwlpbnQJCQlwYXRobGVuOworCWNoYXIJCXBh dGhuYW1lW01BWFBHUEFUSF07CisJY2hhcgkgICAqZmlsZW5hbWU7CisKKwkvKiBXZSBhcmUgb25s eSBpbnRlcmVzdGVkIGluIG5vcm1hbCBmaWxlcy4gKi8KKwlpZiAobWVtYmVyLT5pc19kaXJlY3Rv cnkgfHwgbWVtYmVyLT5pc19saW5rKQorCQlyZXR1cm4gZmFsc2U7CisKKwlpZiAoc3RybGVuKG1l bWJlci0+cGF0aG5hbWUpIDwgWExPR19GTkFNRV9MRU4pCisJCXJldHVybiBmYWxzZTsKKworCS8q CisJICogRm9yIGEgY29ycmVjdCBjb21wYXJpc29uLCB3ZSBtdXN0IHJlbW92ZSBhbnkgJy4nIG9y ICcuLicgY29tcG9uZW50cworCSAqIGZyb20gdGhlIG1lbWJlciBwYXRobmFtZS4gU2ltaWxhciB0 byBtZW1iZXJfdmVyaWZ5X2hlYWRlcigpLCB3ZSBwcmVwZW5kCisJICogJy4vJyB0byB0aGUgcGF0 aCBzbyB0aGF0IGNhbm9uaWNhbGl6ZV9wYXRoKCkgY2FuIHByb3Blcmx5IHJlc29sdmUgYW5kCisJ ICogc3RyaXAgdGhlc2UgcmVmZXJlbmNlcyBmcm9tIHRoZSB0YXIgbWVtYmVyIG5hbWUKKwkgKi8K KwlzbnByaW50ZihwYXRobmFtZSwgTUFYUEdQQVRILCAiLi8lcyIsIG1lbWJlci0+cGF0aG5hbWUp OworCWNhbm9uaWNhbGl6ZV9wYXRoKHBhdGhuYW1lKTsKKwlwYXRobGVuID0gc3RybGVuKHBhdGhu YW1lKTsKKworCS8qIFdBTCBmaWxlcyBmcm9tIHRoZSB0b3AtbGV2ZWwgb3IgcGdfd2FsIGRpcmVj dG9yeSB3aWxsIGJlIGRlY29kZWQgKi8KKwlpZiAocGF0aGxlbiA+IFhMT0dfRk5BTUVfTEVOICYm CisJCXN0cm5jbXAocGF0aG5hbWUsIFhMT0dESVIsIHN0cmxlbihYTE9HRElSKSkgIT0gMCkKKwkJ cmV0dXJuIGZhbHNlOworCisJLyogV0FMIGZpbGUgY291bGQgYmUgd2l0aCBmdWxsIHBhdGggKi8K KwlmaWxlbmFtZSA9IHBhdGhuYW1lICsgKHBhdGhsZW4gLSBYTE9HX0ZOQU1FX0xFTik7CisJaWYg KCFJc1hMb2dGaWxlTmFtZShmaWxlbmFtZSkpCisJCXJldHVybiBmYWxzZTsKKworCSpmbmFtZSA9 IHBuc3RyZHVwKGZpbGVuYW1lLCBYTE9HX0ZOQU1FX0xFTik7CisKKwlyZXR1cm4gdHJ1ZTsKK30K KworLyoKKyAqIEhlbHBlciBmdW5jdGlvbiBmb3IgZmlsZW1hcCBoYXNoIHRhYmxlLgorICovCitz dGF0aWMgdWludDMyCitoYXNoX3N0cmluZ19wb2ludGVyKGNvbnN0IGNoYXIgKnMpCit7CisJdW5z aWduZWQgY2hhciAqc3MgPSAodW5zaWduZWQgY2hhciAqKSBzOworCisJcmV0dXJuIGhhc2hfYnl0 ZXMoc3MsIHN0cmxlbihzKSk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3dhbGR1bXAvbWVz b24uYnVpbGQgYi9zcmMvYmluL3BnX3dhbGR1bXAvbWVzb24uYnVpbGQKaW5kZXggNjMzYTk4NzRi YjUuLjUyOTZmMjFiODJjIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvbWVzb24uYnVp bGQKKysrIGIvc3JjL2Jpbi9wZ193YWxkdW1wL21lc29uLmJ1aWxkCkBAIC0xLDYgKzEsNyBAQAog IyBDb3B5cmlnaHQgKGMpIDIwMjItMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQg R3JvdXAKIAogcGdfd2FsZHVtcF9zb3VyY2VzID0gZmlsZXMoCisgICdhcmNoaXZlX3dhbGR1bXAu YycsCiAgICdjb21wYXQuYycsCiAgICdwZ193YWxkdW1wLmMnLAogICAncm1ncmRlc2MuYycsCkBA IC0xOCw3ICsxOSw3IEBAIGVuZGlmCiAKIHBnX3dhbGR1bXAgPSBleGVjdXRhYmxlKCdwZ193YWxk dW1wJywKICAgcGdfd2FsZHVtcF9zb3VyY2VzLAotICBkZXBlbmRlbmNpZXM6IFtmcm9udGVuZF9j b2RlLCBsejQsIHpzdGRdLAorICBkZXBlbmRlbmNpZXM6IFtmcm9udGVuZF9jb2RlLCBsaWJwcSwg bHo0LCB6c3RkXSwKICAgY19hcmdzOiBbJy1ERlJPTlRFTkQnXSwgIyBuZWVkZWQgZm9yIHhsb2dy ZWFkZXIgZXQgYWwKICAga3dhcmdzOiBkZWZhdWx0X2Jpbl9hcmdzLAogKQpAQCAtMjksNiArMzAs NyBAQCB0ZXN0cyArPSB7CiAgICdzZCc6IG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpLAogICAn YmQnOiBtZXNvbi5jdXJyZW50X2J1aWxkX2RpcigpLAogICAndGFwJzogeworICAgICdlbnYnOiB7 J1RBUic6IHRhci5mb3VuZCgpID8gdGFyLmZ1bGxfcGF0aCgpIDogJyd9LAogICAgICd0ZXN0cyc6 IFsKICAgICAgICd0LzAwMV9iYXNpYy5wbCcsCiAgICAgICAndC8wMDJfc2F2ZV9mdWxscGFnZS5w bCcsCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jIGIvc3JjL2Jp bi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYwppbmRleCA1ZDMxYjE1ZGJkOC4uYTE4YzU2YTczMjIg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKKysrIGIvc3JjL2Jp bi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYwpAQCAtMTc2LDcgKzE3Niw3IEBAIHNwbGl0X3BhdGgo Y29uc3QgY2hhciAqcGF0aCwgY2hhciAqKmRpciwgY2hhciAqKmZuYW1lKQogICoKICAqIHJldHVy biBhIHJlYWQgb25seSBmZAogICovCi1zdGF0aWMgaW50CitpbnQKIG9wZW5fZmlsZV9pbl9kaXJl Y3RvcnkoY29uc3QgY2hhciAqZGlyZWN0b3J5LCBjb25zdCBjaGFyICpmbmFtZSkKIHsKIAlpbnQJ CQlmZCA9IC0xOwpAQCAtNDQwLDYgKzQ0MCw4MCBAQCBXQUxEdW1wUmVhZFBhZ2UoWExvZ1JlYWRl clN0YXRlICpzdGF0ZSwgWExvZ1JlY1B0ciB0YXJnZXRQYWdlUHRyLCBpbnQgcmVxTGVuLAogCXJl dHVybiBjb3VudDsKIH0KIAorLyoKKyAqIHBnX3dhbGR1bXAncyBYTG9nUmVhZGVyUm91dGluZS0+ c2VnbWVudF9vcGVuIGNhbGxiYWNrIHRvIHN1cHBvcnQgZHVtcGluZyBXQUwKKyAqIGZpbGVzIGZy b20gdGFyIGFyY2hpdmVzLgorICovCitzdGF0aWMgdm9pZAorVGFyV0FMRHVtcE9wZW5TZWdtZW50 KFhMb2dSZWFkZXJTdGF0ZSAqc3RhdGUsIFhMb2dTZWdObyBuZXh0U2VnTm8sCisJCQkJCSAgVGlt ZUxpbmVJRCAqdGxpX3ApCit7CisJLyogTm8gYWN0aW9uIG5lZWRlZCAqLworfQorCisvKgorICog cGdfd2FsZHVtcCdzIFhMb2dSZWFkZXJSb3V0aW5lLT5zZWdtZW50X2Nsb3NlIGNhbGxiYWNrLgor ICovCitzdGF0aWMgdm9pZAorVGFyV0FMRHVtcENsb3NlU2VnbWVudChYTG9nUmVhZGVyU3RhdGUg KnN0YXRlKQoreworCS8qIE5vIGFjdGlvbiBuZWVkZWQgKi8KK30KKworLyoKKyAqIHBnX3dhbGR1 bXAncyBYTG9nUmVhZGVyUm91dGluZS0+cGFnZV9yZWFkIGNhbGxiYWNrIHRvIHN1cHBvcnQgZHVt cGluZyBXQUwKKyAqIGZpbGVzIGZyb20gdGFyIGFyY2hpdmVzLgorICovCitzdGF0aWMgaW50CitU YXJXQUxEdW1wUmVhZFBhZ2UoWExvZ1JlYWRlclN0YXRlICpzdGF0ZSwgWExvZ1JlY1B0ciB0YXJn ZXRQYWdlUHRyLCBpbnQgcmVxTGVuLAorCQkJCSAgIFhMb2dSZWNQdHIgdGFyZ2V0UHRyLCBjaGFy ICpyZWFkQnVmZikKK3sKKwlYTG9nRHVtcFByaXZhdGUgKnByaXZhdGUgPSBzdGF0ZS0+cHJpdmF0 ZV9kYXRhOworCWludAkJCWNvdW50ID0gcmVxdWlyZWRfcmVhZF9sZW4ocHJpdmF0ZSwgdGFyZ2V0 UGFnZVB0ciwgcmVxTGVuKTsKKwlpbnQJCQlXYWxTZWdTeiA9IHN0YXRlLT5zZWdjeHQud3Nfc2Vn c2l6ZTsKKwlYTG9nU2VnTm8JY3VyU2VnTm87CisKKwkvKiBCYWlsIG91dCBpZiB0aGUgY291bnQg dG8gYmUgcmVhZCBpcyBub3QgdmFsaWQgKi8KKwlpZiAoY291bnQgPCAwKQorCQlyZXR1cm4gLTE7 CisKKwkvKgorCSAqIElmIHRoZSB0YXJnZXQgcGFnZSBpcyBpbiBhIGRpZmZlcmVudCBzZWdtZW50 LCBmcmVlIHRoZSBidWZmZXIgc3BhY2UKKwkgKiBvY2N1cGllZCBieSB0aGUgcHJldmlvdXMgc2Vn bWVudCBkYXRhLiBTaW5jZSBwZ193YWxkdW1wIG5ldmVyIHJlcXVlc3RzCisJICogdGhlIHNhbWUg V0FMIGJ5dGVzIHR3aWNlLCBtb3ZpbmcgdG8gYSBuZXcgc2VnbWVudCBpbXBsaWVzIHRoZSBwcmV2 aW91cworCSAqIGJ1ZmZlcidzIGRhdGEgYW5kIHRoYXQgc2VnbWVudCB3aWxsIG5vdCBiZSBuZWVk ZWQgYWdhaW4uCisJICovCisJY3VyU2VnTm8gPSBzdGF0ZS0+c2VnLndzX3NlZ25vOworCWlmICgh WExCeXRlSW5TZWcodGFyZ2V0UGFnZVB0ciwgY3VyU2VnTm8sIFdhbFNlZ1N6KSkKKwl7CisJCWNo YXIJCWZuYW1lW01BWEZOQU1FTEVOXTsKKwkJWExvZ1NlZ05vICAgbmV4dFNlZ05vOworCisJCS8q CisJCSAqIENhbGN1bGF0ZSB0aGUgbmV4dCBXQUwgc2VnbWVudCB0byBiZSBkZWNvZGVkIGZyb20g dGhlIGdpdmVuIHBhZ2UKKwkJICogcG9pbnRlcgorCQkgKi8KKwkJWExCeXRlVG9TZWcodGFyZ2V0 UGFnZVB0ciwgbmV4dFNlZ05vLCBXYWxTZWdTeik7CisJCXN0YXRlLT5zZWcud3NfdGxpID0gcHJp dmF0ZS0+dGltZWxpbmU7CisJCXN0YXRlLT5zZWcud3Nfc2Vnbm8gPSBuZXh0U2VnTm87CisKKwkJ LyoKKwkJICogSWYgaW4gcHJlLXJlYWRpbmcgbW9kZSAocHJpb3IgdG8gYWN0dWFsIGRlY29kaW5n KSwgZG8gbm90IGRlbGV0ZSBhbnkKKwkJICogZW50cmllcyB0aGF0IG1pZ2h0IGJlIHJlcXVlc3Rl ZCBhZ2FpbiBvbmNlIHRoZSBkZWNvZGluZyBsb29wIHN0YXJ0cy4KKwkJICogRm9yIG1vcmUgZGV0 YWlscywgc2VlIHRoZSBjb21tZW50cyBpbiByZWFkX2FyY2hpdmVfd2FsX3BhZ2UoKS4KKwkJICov CisJCWlmIChwcml2YXRlLT5kZWNvZGluZ19zdGFydGVkICYmIGN1clNlZ05vIDwgbmV4dFNlZ05v KQorCQl7CisJCQlYTG9nRmlsZU5hbWUoZm5hbWUsIHN0YXRlLT5zZWcud3NfdGxpLCBjdXJTZWdO bywgV2FsU2VnU3opOworCQkJZnJlZV9hcmNoaXZlX3dhbF9lbnRyeShmbmFtZSwgcHJpdmF0ZSk7 CisJCX0KKwl9CisKKwkvKiBSZWFkIHRoZSBXQUwgcGFnZSBmcm9tIHRoZSBhcmNoaXZlIHN0cmVh bWVyICovCisJcmV0dXJuIHJlYWRfYXJjaGl2ZV93YWxfcGFnZShwcml2YXRlLCB0YXJnZXRQYWdl UHRyLCBjb3VudCwgcmVhZEJ1ZmYsCisJCQkJCQkJCSBXYWxTZWdTeik7Cit9CisKIC8qCiAgKiBC b29sZWFuIHRvIHJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBXQUwgcmVjb3JkIG1hdGNoZXMgYSBz cGVjaWZpYyByZWxhdGlvbgogICogYW5kIG9wdGlvbmFsbHkgYmxvY2suCkBAIC03NzcsOCArODUx LDggQEAgdXNhZ2Uodm9pZCkKIAlwcmludGYoXygiICAtRiwgLS1mb3JrPUZPUksgICAgICAgIG9u bHkgc2hvdyByZWNvcmRzIHRoYXQgbW9kaWZ5IGJsb2NrcyBpbiBmb3JrIEZPUks7XG4iCiAJCQkg IiAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZCBuYW1lcyBhcmUgbWFpbiwgZnNtLCB2bSwg aW5pdFxuIikpOwogCXByaW50ZihfKCIgIC1uLCAtLWxpbWl0PU4gICAgICAgICAgbnVtYmVyIG9m IHJlY29yZHMgdG8gZGlzcGxheVxuIikpOwotCXByaW50ZihfKCIgIC1wLCAtLXBhdGg9UEFUSCAg ICAgICAgZGlyZWN0b3J5IGluIHdoaWNoIHRvIGZpbmQgV0FMIHNlZ21lbnQgZmlsZXMgb3IgYVxu IgotCQkJICIgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IHdpdGggYSAuL3BnX3dh bCB0aGF0IGNvbnRhaW5zIHN1Y2ggZmlsZXNcbiIKKwlwcmludGYoXygiICAtcCwgLS1wYXRoPVBB VEggICAgICAgIHRhciBhcmNoaXZlIG9yIGEgZGlyZWN0b3J5IGluIHdoaWNoIHRvIGZpbmQgV0FM IHNlZ21lbnQgZmlsZXMgb3JcbiIKKwkJCSAiICAgICAgICAgICAgICAgICAgICAgICAgIGEgZGly ZWN0b3J5IHdpdGggYSAuL3BnX3dhbCB0aGF0IGNvbnRhaW5zIHN1Y2ggZmlsZXNcbiIKIAkJCSAi ICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0OiBjdXJyZW50IGRpcmVjdG9yeSwgLi9w Z193YWwsICRQR0RBVEEvcGdfd2FsKVxuIikpOwogCXByaW50ZihfKCIgIC1xLCAtLXF1aWV0ICAg ICAgICAgICAgZG8gbm90IHByaW50IGFueSBvdXRwdXQsIGV4Y2VwdCBmb3IgZXJyb3JzXG4iKSk7 CiAJcHJpbnRmKF8oIiAgLXIsIC0tcm1ncj1STUdSICAgICAgICBvbmx5IHNob3cgcmVjb3JkcyBn ZW5lcmF0ZWQgYnkgcmVzb3VyY2UgbWFuYWdlciBSTUdSO1xuIgpAQCAtODEwLDcgKzg4NCw5IEBA IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCVhMb2dSZWNvcmQgKnJlY29yZDsKIAlYTG9n UmVjUHRyCWZpcnN0X3JlY29yZDsKIAljaGFyCSAgICp3YWxkaXIgPSBOVUxMOworCWNoYXIJICAg KndhbHBhdGggPSBOVUxMOwogCWNoYXIJICAgKmVycm9ybXNnOworCXBnX2NvbXByZXNzX2FsZ29y aXRobSBjb21wcmVzc2lvbjsKIAogCXN0YXRpYyBzdHJ1Y3Qgb3B0aW9uIGxvbmdfb3B0aW9uc1td ID0gewogCQl7ImJrcC1kZXRhaWxzIiwgbm9fYXJndW1lbnQsIE5VTEwsICdiJ30sCkBAIC04Njgs NiArOTQ0LDEwIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCXByaXZhdGUuc3RhcnRw dHIgPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAlwcml2YXRlLmVuZHB0ciA9IEludmFsaWRYTG9nUmVj UHRyOwogCXByaXZhdGUuZW5kcHRyX3JlYWNoZWQgPSBmYWxzZTsKKwlwcml2YXRlLmRlY29kaW5n X3N0YXJ0ZWQgPSBmYWxzZTsKKwlwcml2YXRlLmFyY2hpdmVfbmFtZSA9IE5VTEw7CisJcHJpdmF0 ZS5zdGFydF9zZWdubyA9IDA7CisJcHJpdmF0ZS5lbmRfc2Vnbm8gPSBVSU5UNjRfTUFYOwogCiAJ Y29uZmlnLnF1aWV0ID0gZmFsc2U7CiAJY29uZmlnLmJrcF9kZXRhaWxzID0gZmFsc2U7CkBAIC05 NDMsNyArMTAyMyw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJCX0KIAkJCQli cmVhazsKIAkJCWNhc2UgJ3AnOgotCQkJCXdhbGRpciA9IHBnX3N0cmR1cChvcHRhcmcpOworCQkJ CXdhbHBhdGggPSBwZ19zdHJkdXAob3B0YXJnKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgJ3EnOgog CQkJCWNvbmZpZy5xdWlldCA9IHRydWU7CkBAIC0xMTA3LDEyICsxMTg3LDIxIEBAIG1haW4oaW50 IGFyZ2MsIGNoYXIgKiphcmd2KQogCQlnb3RvIGJhZF9hcmd1bWVudDsKIAl9CiAKLQlpZiAod2Fs ZGlyICE9IE5VTEwpCisJaWYgKHdhbHBhdGggIT0gTlVMTCkKIAl7CisJCS8qIHZhbGlkYXRlIHBh dGggcG9pbnRzIHRvIHRhciBhcmNoaXZlICovCisJCWlmIChwYXJzZV90YXJfY29tcHJlc3NfYWxn b3JpdGhtKHdhbHBhdGgsICZjb21wcmVzc2lvbikpCisJCXsKKwkJCWNoYXIJICAgKmZuYW1lID0g TlVMTDsKKworCQkJc3BsaXRfcGF0aCh3YWxwYXRoLCAmd2FsZGlyLCAmZm5hbWUpOworCisJCQlw cml2YXRlLmFyY2hpdmVfbmFtZSA9IGZuYW1lOworCQl9CiAJCS8qIHZhbGlkYXRlIHBhdGggcG9p bnRzIHRvIGRpcmVjdG9yeSAqLwotCQlpZiAoIXZlcmlmeV9kaXJlY3Rvcnkod2FsZGlyKSkKKwkJ ZWxzZSBpZiAoIXZlcmlmeV9kaXJlY3Rvcnkod2FscGF0aCkpCiAJCXsKLQkJCXBnX2xvZ19lcnJv cigiY291bGQgbm90IG9wZW4gZGlyZWN0b3J5IFwiJXNcIjogJW0iLCB3YWxkaXIpOworCQkJcGdf bG9nX2Vycm9yKCJjb3VsZCBub3Qgb3BlbiBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIHdhbHBhdGgp OwogCQkJZ290byBiYWRfYXJndW1lbnQ7CiAJCX0KIAl9CkBAIC0xMTI4LDYgKzEyMTcsMTcgQEAg bWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCWludAkJCWZkOwogCQlYTG9nU2VnTm8Jc2Vn bm87CiAKKwkJLyoKKwkJICogSWYgYSB0YXIgYXJjaGl2ZSBpcyBwYXNzZWQgdXNpbmcgdGhlIC0t cGF0aCBvcHRpb24sIGFsbCBvdGhlcgorCQkgKiBhcmd1bWVudHMgYmVjb21lIHVubmVjZXNzYXJ5 LgorCQkgKi8KKwkJaWYgKHByaXZhdGUuYXJjaGl2ZV9uYW1lKQorCQl7CisJCQlwZ19sb2dfZXJy b3IoInVubmVjZXNzYXJ5IGNvbW1hbmQtbGluZSBhcmd1bWVudHMgc3BlY2lmaWVkIHdpdGggdGFy IGFyY2hpdmUgKGZpcnN0IGlzIFwiJXNcIikiLAorCQkJCQkJIGFyZ3Zbb3B0aW5kXSk7CisJCQln b3RvIGJhZF9hcmd1bWVudDsKKwkJfQorCiAJCXNwbGl0X3BhdGgoYXJndltvcHRpbmRdLCAmZGly ZWN0b3J5LCAmZm5hbWUpOwogCiAJCWlmICh3YWxkaXIgPT0gTlVMTCAmJiBkaXJlY3RvcnkgIT0g TlVMTCkKQEAgLTExMzgsNjkgKzEyMzgsNzYgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp CiAJCQkJcGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwgd2Fs ZGlyKTsKIAkJfQogCi0JCXdhbGRpciA9IGlkZW50aWZ5X3RhcmdldF9kaXJlY3Rvcnkod2FsZGly LCBmbmFtZSwgJnByaXZhdGUuc2Vnc2l6ZSk7Ci0JCWZkID0gb3Blbl9maWxlX2luX2RpcmVjdG9y eSh3YWxkaXIsIGZuYW1lKTsKLQkJaWYgKGZkIDwgMCkKLQkJCXBnX2ZhdGFsKCJjb3VsZCBub3Qg b3BlbiBmaWxlIFwiJXNcIiIsIGZuYW1lKTsKLQkJY2xvc2UoZmQpOwotCi0JCS8qIHBhcnNlIHBv c2l0aW9uIGZyb20gZmlsZSAqLwotCQlYTG9nRnJvbUZpbGVOYW1lKGZuYW1lLCAmcHJpdmF0ZS50 aW1lbGluZSwgJnNlZ25vLCBwcml2YXRlLnNlZ3NpemUpOwotCi0JCWlmICghWExvZ1JlY1B0cklz VmFsaWQocHJpdmF0ZS5zdGFydHB0cikpCi0JCQlYTG9nU2VnTm9PZmZzZXRUb1JlY1B0cihzZWdu bywgMCwgcHJpdmF0ZS5zZWdzaXplLCBwcml2YXRlLnN0YXJ0cHRyKTsKLQkJZWxzZSBpZiAoIVhM Qnl0ZUluU2VnKHByaXZhdGUuc3RhcnRwdHIsIHNlZ25vLCBwcml2YXRlLnNlZ3NpemUpKQorCQlp ZiAoZm5hbWUgIT0gTlVMTCAmJiBwYXJzZV90YXJfY29tcHJlc3NfYWxnb3JpdGhtKGZuYW1lLCAm Y29tcHJlc3Npb24pKQogCQl7Ci0JCQlwZ19sb2dfZXJyb3IoInN0YXJ0IFdBTCBsb2NhdGlvbiAl WC8lMDhYIGlzIG5vdCBpbnNpZGUgZmlsZSBcIiVzXCIiLAotCQkJCQkJIExTTl9GT1JNQVRfQVJH Uyhwcml2YXRlLnN0YXJ0cHRyKSwKLQkJCQkJCSBmbmFtZSk7Ci0JCQlnb3RvIGJhZF9hcmd1bWVu dDsKKwkJCXByaXZhdGUuYXJjaGl2ZV9uYW1lID0gZm5hbWU7CiAJCX0KLQotCQkvKiBubyBzZWNv bmQgZmlsZSBzcGVjaWZpZWQsIHNldCBlbmQgcG9zaXRpb24gKi8KLQkJaWYgKCEob3B0aW5kICsg MSA8IGFyZ2MpICYmICFYTG9nUmVjUHRySXNWYWxpZChwcml2YXRlLmVuZHB0cikpCi0JCQlYTG9n U2VnTm9PZmZzZXRUb1JlY1B0cihzZWdubyArIDEsIDAsIHByaXZhdGUuc2Vnc2l6ZSwgcHJpdmF0 ZS5lbmRwdHIpOwotCi0JCS8qIHBhcnNlIEVORFNFRyBpZiBwYXNzZWQgKi8KLQkJaWYgKG9wdGlu ZCArIDEgPCBhcmdjKQorCQllbHNlCiAJCXsKLQkJCVhMb2dTZWdObwllbmRzZWdubzsKLQotCQkJ LyogaWdub3JlIGRpcmVjdG9yeSwgYWxyZWFkeSBoYXZlIHRoYXQgKi8KLQkJCXNwbGl0X3BhdGgo YXJndltvcHRpbmQgKyAxXSwgJmRpcmVjdG9yeSwgJmZuYW1lKTsKLQorCQkJd2FsZGlyID0gaWRl bnRpZnlfdGFyZ2V0X2RpcmVjdG9yeSh3YWxkaXIsIGZuYW1lLCAmcHJpdmF0ZS5zZWdzaXplKTsK IAkJCWZkID0gb3Blbl9maWxlX2luX2RpcmVjdG9yeSh3YWxkaXIsIGZuYW1lKTsKIAkJCWlmIChm ZCA8IDApCiAJCQkJcGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiIiwgZm5hbWUp OwogCQkJY2xvc2UoZmQpOwogCiAJCQkvKiBwYXJzZSBwb3NpdGlvbiBmcm9tIGZpbGUgKi8KLQkJ CVhMb2dGcm9tRmlsZU5hbWUoZm5hbWUsICZwcml2YXRlLnRpbWVsaW5lLCAmZW5kc2Vnbm8sIHBy aXZhdGUuc2Vnc2l6ZSk7CisJCQlYTG9nRnJvbUZpbGVOYW1lKGZuYW1lLCAmcHJpdmF0ZS50aW1l bGluZSwgJnNlZ25vLCBwcml2YXRlLnNlZ3NpemUpOwogCi0JCQlpZiAoZW5kc2Vnbm8gPCBzZWdu bykKLQkJCQlwZ19mYXRhbCgiRU5EU0VHICVzIGlzIGJlZm9yZSBTVEFSVFNFRyAlcyIsCi0JCQkJ CQkgYXJndltvcHRpbmQgKyAxXSwgYXJndltvcHRpbmRdKTsKKwkJCWlmICghWExvZ1JlY1B0cklz VmFsaWQocHJpdmF0ZS5zdGFydHB0cikpCisJCQkJWExvZ1NlZ05vT2Zmc2V0VG9SZWNQdHIoc2Vn bm8sIDAsIHByaXZhdGUuc2Vnc2l6ZSwgcHJpdmF0ZS5zdGFydHB0cik7CisJCQllbHNlIGlmICgh WExCeXRlSW5TZWcocHJpdmF0ZS5zdGFydHB0ciwgc2Vnbm8sIHByaXZhdGUuc2Vnc2l6ZSkpCisJ CQl7CisJCQkJcGdfbG9nX2Vycm9yKCJzdGFydCBXQUwgbG9jYXRpb24gJVgvJTA4WCBpcyBub3Qg aW5zaWRlIGZpbGUgXCIlc1wiIiwKKwkJCQkJCQkgTFNOX0ZPUk1BVF9BUkdTKHByaXZhdGUuc3Rh cnRwdHIpLAorCQkJCQkJCSBmbmFtZSk7CisJCQkJZ290byBiYWRfYXJndW1lbnQ7CisJCQl9CiAK LQkJCWlmICghWExvZ1JlY1B0cklzVmFsaWQocHJpdmF0ZS5lbmRwdHIpKQotCQkJCVhMb2dTZWdO b09mZnNldFRvUmVjUHRyKGVuZHNlZ25vICsgMSwgMCwgcHJpdmF0ZS5zZWdzaXplLAotCQkJCQkJ CQkJCXByaXZhdGUuZW5kcHRyKTsKKwkJCS8qIG5vIHNlY29uZCBmaWxlIHNwZWNpZmllZCwgc2V0 IGVuZCBwb3NpdGlvbiAqLworCQkJaWYgKCEob3B0aW5kICsgMSA8IGFyZ2MpICYmICFYTG9nUmVj UHRySXNWYWxpZChwcml2YXRlLmVuZHB0cikpCisJCQkJWExvZ1NlZ05vT2Zmc2V0VG9SZWNQdHIo c2Vnbm8gKyAxLCAwLCBwcml2YXRlLnNlZ3NpemUsIHByaXZhdGUuZW5kcHRyKTsKIAotCQkJLyog c2V0IHNlZ25vIHRvIGVuZHNlZ25vIGZvciBjaGVjayBvZiAtLWVuZCAqLwotCQkJc2Vnbm8gPSBl bmRzZWdubzsKLQkJfQorCQkJLyogcGFyc2UgRU5EU0VHIGlmIHBhc3NlZCAqLworCQkJaWYgKG9w dGluZCArIDEgPCBhcmdjKQorCQkJeworCQkJCVhMb2dTZWdObwllbmRzZWdubzsKIAorCQkJCS8q IGlnbm9yZSBkaXJlY3RvcnksIGFscmVhZHkgaGF2ZSB0aGF0ICovCisJCQkJc3BsaXRfcGF0aChh cmd2W29wdGluZCArIDFdLCAmZGlyZWN0b3J5LCAmZm5hbWUpOwogCi0JCWlmICghWExCeXRlSW5T ZWcocHJpdmF0ZS5lbmRwdHIsIHNlZ25vLCBwcml2YXRlLnNlZ3NpemUpICYmCi0JCQlwcml2YXRl LmVuZHB0ciAhPSAoc2Vnbm8gKyAxKSAqIHByaXZhdGUuc2Vnc2l6ZSkKLQkJewotCQkJcGdfbG9n X2Vycm9yKCJlbmQgV0FMIGxvY2F0aW9uICVYLyUwOFggaXMgbm90IGluc2lkZSBmaWxlIFwiJXNc IiIsCi0JCQkJCQkgTFNOX0ZPUk1BVF9BUkdTKHByaXZhdGUuZW5kcHRyKSwKLQkJCQkJCSBhcmd2 W2FyZ2MgLSAxXSk7Ci0JCQlnb3RvIGJhZF9hcmd1bWVudDsKKwkJCQlmZCA9IG9wZW5fZmlsZV9p bl9kaXJlY3Rvcnkod2FsZGlyLCBmbmFtZSk7CisJCQkJaWYgKGZkIDwgMCkKKwkJCQkJcGdfZmF0 YWwoImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiIiwgZm5hbWUpOworCQkJCWNsb3NlKGZkKTsK KworCQkJCS8qIHBhcnNlIHBvc2l0aW9uIGZyb20gZmlsZSAqLworCQkJCVhMb2dGcm9tRmlsZU5h bWUoZm5hbWUsICZwcml2YXRlLnRpbWVsaW5lLCAmZW5kc2Vnbm8sIHByaXZhdGUuc2Vnc2l6ZSk7 CisKKwkJCQlpZiAoZW5kc2Vnbm8gPCBzZWdubykKKwkJCQkJcGdfZmF0YWwoIkVORFNFRyAlcyBp cyBiZWZvcmUgU1RBUlRTRUcgJXMiLAorCQkJCQkJCSBhcmd2W29wdGluZCArIDFdLCBhcmd2W29w dGluZF0pOworCisJCQkJaWYgKCFYTG9nUmVjUHRySXNWYWxpZChwcml2YXRlLmVuZHB0cikpCisJ CQkJCVhMb2dTZWdOb09mZnNldFRvUmVjUHRyKGVuZHNlZ25vICsgMSwgMCwgcHJpdmF0ZS5zZWdz aXplLAorCQkJCQkJCQkJCQlwcml2YXRlLmVuZHB0cik7CisKKwkJCQkvKiBzZXQgc2Vnbm8gdG8g ZW5kc2Vnbm8gZm9yIGNoZWNrIG9mIC0tZW5kICovCisJCQkJc2Vnbm8gPSBlbmRzZWdubzsKKwkJ CX0KKworCisJCQlpZiAoIVhMQnl0ZUluU2VnKHByaXZhdGUuZW5kcHRyLCBzZWdubywgcHJpdmF0 ZS5zZWdzaXplKSAmJgorCQkJCXByaXZhdGUuZW5kcHRyICE9IChzZWdubyArIDEpICogcHJpdmF0 ZS5zZWdzaXplKQorCQkJeworCQkJCXBnX2xvZ19lcnJvcigiZW5kIFdBTCBsb2NhdGlvbiAlWC8l MDhYIGlzIG5vdCBpbnNpZGUgZmlsZSBcIiVzXCIiLAorCQkJCQkJCSBMU05fRk9STUFUX0FSR1Mo cHJpdmF0ZS5lbmRwdHIpLAorCQkJCQkJCSBhcmd2W2FyZ2MgLSAxXSk7CisJCQkJZ290byBiYWRf YXJndW1lbnQ7CisJCQl9CiAJCX0KIAl9Ci0JZWxzZQotCQl3YWxkaXIgPSBpZGVudGlmeV90YXJn ZXRfZGlyZWN0b3J5KHdhbGRpciwgTlVMTCwgJnByaXZhdGUuc2Vnc2l6ZSk7CisJZWxzZSBpZiAo IXByaXZhdGUuYXJjaGl2ZV9uYW1lKQorCQl3YWxkaXIgPSBpZGVudGlmeV90YXJnZXRfZGlyZWN0 b3J5KHdhbHBhdGgsIE5VTEwsICZwcml2YXRlLnNlZ3NpemUpOwogCiAJLyogd2UgZG9uJ3Qga25v dyB3aGF0IHRvIHByaW50ICovCiAJaWYgKCFYTG9nUmVjUHRySXNWYWxpZChwcml2YXRlLnN0YXJ0 cHRyKSkKQEAgLTEyMTIsMTIgKzEzMTksMzYgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp CiAJLyogZG9uZSB3aXRoIGFyZ3VtZW50IHBhcnNpbmcsIGRvIHRoZSBhY3R1YWwgd29yayAqLwog CiAJLyogd2UgaGF2ZSBldmVyeXRoaW5nIHdlIG5lZWQsIHN0YXJ0IHJlYWRpbmcgKi8KLQl4bG9n cmVhZGVyX3N0YXRlID0KLQkJWExvZ1JlYWRlckFsbG9jYXRlKHByaXZhdGUuc2Vnc2l6ZSwgd2Fs ZGlyLAotCQkJCQkJICAgWExfUk9VVElORSgucGFnZV9yZWFkID0gV0FMRHVtcFJlYWRQYWdlLAot CQkJCQkJCQkJICAuc2VnbWVudF9vcGVuID0gV0FMRHVtcE9wZW5TZWdtZW50LAotCQkJCQkJCQkJ ICAuc2VnbWVudF9jbG9zZSA9IFdBTER1bXBDbG9zZVNlZ21lbnQpLAotCQkJCQkJICAgJnByaXZh dGUpOworCWlmIChwcml2YXRlLmFyY2hpdmVfbmFtZSkKKwl7CisJCS8qCisJCSAqIEEgTlVMTCBX QUwgZGlyZWN0b3J5IGluZGljYXRlcyB0aGF0IHRoZSBhcmNoaXZlIGZpbGUgaXMgbG9jYXRlZCBp bgorCQkgKiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBvZiB0aGUgcGdfd2FsZHVtcCBl eGVjdXRpb24KKwkJICovCisJCWlmICh3YWxkaXIgPT0gTlVMTCkKKwkJCXdhbGRpciA9IHBnX3N0 cmR1cCgiLiIpOworCisJCS8qIFNldCB1cCBmb3IgcmVhZGluZyB0YXIgZmlsZSAqLworCQlpbml0 X2FyY2hpdmVfcmVhZGVyKCZwcml2YXRlLCB3YWxkaXIsICZwcml2YXRlLnNlZ3NpemUsIGNvbXBy ZXNzaW9uKTsKKworCQkvKiBSb3V0aW5lIHRvIGRlY29kZSBXQUwgZmlsZXMgaW4gdGFyIGFyY2hp dmUgKi8KKwkJeGxvZ3JlYWRlcl9zdGF0ZSA9CisJCQlYTG9nUmVhZGVyQWxsb2NhdGUocHJpdmF0 ZS5zZWdzaXplLCB3YWxkaXIsCisJCQkJCQkJICAgWExfUk9VVElORSgucGFnZV9yZWFkID0gVGFy V0FMRHVtcFJlYWRQYWdlLAorCQkJCQkJCQkJCSAgLnNlZ21lbnRfb3BlbiA9IFRhcldBTER1bXBP cGVuU2VnbWVudCwKKwkJCQkJCQkJCQkgIC5zZWdtZW50X2Nsb3NlID0gVGFyV0FMRHVtcENsb3Nl U2VnbWVudCksCisJCQkJCQkJICAgJnByaXZhdGUpOworCX0KKwllbHNlCisJeworCQl4bG9ncmVh ZGVyX3N0YXRlID0KKwkJCVhMb2dSZWFkZXJBbGxvY2F0ZShwcml2YXRlLnNlZ3NpemUsIHdhbGRp ciwKKwkJCQkJCQkgICBYTF9ST1VUSU5FKC5wYWdlX3JlYWQgPSBXQUxEdW1wUmVhZFBhZ2UsCisJ CQkJCQkJCQkJICAuc2VnbWVudF9vcGVuID0gV0FMRHVtcE9wZW5TZWdtZW50LAorCQkJCQkJCQkJ CSAgLnNlZ21lbnRfY2xvc2UgPSBXQUxEdW1wQ2xvc2VTZWdtZW50KSwKKwkJCQkJCQkgICAmcHJp dmF0ZSk7CisJfQorCiAJaWYgKCF4bG9ncmVhZGVyX3N0YXRlKQogCQlwZ19mYXRhbCgib3V0IG9m IG1lbW9yeSB3aGlsZSBhbGxvY2F0aW5nIGEgV0FMIHJlYWRpbmcgcHJvY2Vzc29yIik7CiAKQEAg LTEyNDUsNiArMTM3Niw5IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCWlmIChjb25m aWcuc3RhdHMgPT0gdHJ1ZSAmJiAhY29uZmlnLnF1aWV0KQogCQlzdGF0cy5zdGFydHB0ciA9IGZp cnN0X3JlY29yZDsKIAorCS8qIEZsYWcgaW5kaWNhdGluZyB0aGF0IHRoZSBkZWNvZGluZyBsb29w IGhhcyBiZWVuIGVudGVyZWQgKi8KKwlwcml2YXRlLmRlY29kaW5nX3N0YXJ0ZWQgPSB0cnVlOwor CiAJZm9yICg7OykKIAl7CiAJCWlmICh0aW1lX3RvX3N0b3ApCkBAIC0xMzI2LDYgKzE0NjAsOSBA QCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAogCVhMb2dSZWFkZXJGcmVlKHhsb2dyZWFk ZXJfc3RhdGUpOwogCisJaWYgKHByaXZhdGUuYXJjaGl2ZV9uYW1lKQorCQlmcmVlX2FyY2hpdmVf cmVhZGVyKCZwcml2YXRlKTsKKwogCXJldHVybiBFWElUX1NVQ0NFU1M7CiAKIGJhZF9hcmd1bWVu dDoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmggYi9zcmMvYmlu L3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5oCmluZGV4IDAxM2IwNTE1MDZmLi41NGQ1NGE4YTcxOCAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuaAorKysgYi9zcmMvYmlu L3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5oCkBAIC0xMiw2ICsxMiwxMSBAQAogI2RlZmluZSBQR19X QUxEVU1QX0gKIAogI2luY2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5oIgorI2luY2x1ZGUgImZlX3V0 aWxzL2FzdHJlYW1lci5oIgorCisvKiBGb3J3YXJkIGRlY2xhcmF0aW9uICovCitzdHJ1Y3QgQXJj aGl2ZWRXQUxGaWxlOworc3RydWN0IEFyY2hpdmVkV0FMX2hhc2g7CiAKIC8qIENvbnRhaW5zIHRo ZSBuZWNlc3NhcnkgaW5mb3JtYXRpb24gdG8gZHJpdmUgV0FMIGRlY29kaW5nICovCiB0eXBlZGVm IHN0cnVjdCBYTG9nRHVtcFByaXZhdGUKQEAgLTIxLDYgKzI2LDQ0IEBAIHR5cGVkZWYgc3RydWN0 IFhMb2dEdW1wUHJpdmF0ZQogCVhMb2dSZWNQdHIJc3RhcnRwdHI7CiAJWExvZ1JlY1B0cgllbmRw dHI7CiAJYm9vbAkJZW5kcHRyX3JlYWNoZWQ7CisJYm9vbAkJZGVjb2Rpbmdfc3RhcnRlZDsKKwor CS8qIEZpZWxkcyByZXF1aXJlZCB0byByZWFkIFdBTCBmcm9tIGFyY2hpdmUgKi8KKwljaGFyCSAg ICphcmNoaXZlX25hbWU7CS8qIFRhciBhcmNoaXZlIG5hbWUgKi8KKwlpbnQJCQlhcmNoaXZlX2Zk OwkJLyogRmlsZSBkZXNjcmlwdG9yIGZvciB0aGUgb3BlbiB0YXIgZmlsZSAqLworCisJYXN0cmVh bWVyICAqYXJjaGl2ZV9zdHJlYW1lcjsKKworCS8qIFdoYXQgdGhlIGFyY2hpdmUgc3RyZWFtZXIg aXMgY3VycmVudGx5IHJlYWRpbmcgKi8KKwlzdHJ1Y3QgQXJjaGl2ZWRXQUxGaWxlICpjdXJfZmls ZTsKKworCS8qCisJICogSGFzaCB0YWJsZSBvZiBhbGwgV0FMIGZpbGVzIHRoYXQgdGhlIGFyY2hp dmUgc3RyZWFtIGhhcyByZWFkLCBpbmNsdWRpbmcKKwkgKiB0aGUgb25lIGN1cnJlbnRseSBpbiBw cm9ncmVzcy4KKwkgKi8KKwlzdHJ1Y3QgQXJjaGl2ZWRXQUxfaGFzaCAqYXJjaGl2ZV93YWxfaHRh YjsKKworCS8qCisJICogQWx0aG91Z2ggdGhlc2UgdmFsdWVzIGNhbiBiZSBlYXNpbHkgZGVyaXZl ZCBmcm9tIHN0YXJ0cHRyIGFuZCBlbmRwdHIsCisJICogZG9pbmcgc28gcmVwZWF0ZWRseSBmb3Ig ZWFjaCBhcmNoaXZlZCBtZW1iZXIgd291bGQgYmUgaW5lZmZpY2llbnQsIGFzCisJICogaXQgd291 bGQgaW52b2x2ZSByZWNhbGN1bGF0aW5nIGFuZCBmaWx0ZXJpbmcgb3V0IGlycmVsZXZhbnQgV0FM CisJICogc2VnbWVudHMuCisJICovCisJWExvZ1NlZ05vCXN0YXJ0X3NlZ25vOworCVhMb2dTZWdO bwllbmRfc2Vnbm87CiB9IFhMb2dEdW1wUHJpdmF0ZTsKIAorZXh0ZXJuIGludAlvcGVuX2ZpbGVf aW5fZGlyZWN0b3J5KGNvbnN0IGNoYXIgKmRpcmVjdG9yeSwgY29uc3QgY2hhciAqZm5hbWUpOwor CitleHRlcm4gdm9pZCBpbml0X2FyY2hpdmVfcmVhZGVyKFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0 ZUluZm8sCisJCQkJCQkJCWNvbnN0IGNoYXIgKndhbGRpciwgaW50ICpXYWxTZWdTeiwKKwkJCQkJ CQkJcGdfY29tcHJlc3NfYWxnb3JpdGhtIGNvbXByZXNzaW9uKTsKK2V4dGVybiB2b2lkIGZyZWVf YXJjaGl2ZV9yZWFkZXIoWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbyk7CitleHRlcm4gaW50 CXJlYWRfYXJjaGl2ZV93YWxfcGFnZShYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvLAorCQkJ CQkJCQkgIFhMb2dSZWNQdHIgdGFyZ2V0UGFnZVB0ciwKKwkJCQkJCQkJICBTaXplIGNvdW50LCBj aGFyICpyZWFkQnVmZiwKKwkJCQkJCQkJICBpbnQgV2FsU2VnU3opOworZXh0ZXJuIHZvaWQgZnJl ZV9hcmNoaXZlX3dhbF9lbnRyeShjb25zdCBjaGFyICpmbmFtZSwKKwkJCQkJCQkJICAgWExvZ0R1 bXBQcml2YXRlICpwcml2YXRlSW5mbyk7CisKICNlbmRpZgkJCQkJCQkvKiBQR19XQUxEVU1QX0gg Ki8KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfd2FsZHVtcC90LzAwMV9iYXNpYy5wbCBiL3NyYy9i aW4vcGdfd2FsZHVtcC90LzAwMV9iYXNpYy5wbAppbmRleCBmMTJiYTUyY2JmYy4uNmY4Y2UzMTk4 NDEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfd2FsZHVtcC90LzAwMV9iYXNpYy5wbAorKysgYi9z cmMvYmluL3BnX3dhbGR1bXAvdC8wMDFfYmFzaWMucGwKQEAgLTMsMTAgKzMsMTMgQEAKIAogdXNl IHN0cmljdDsKIHVzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKK3VzZSBDd2Q7CiB1c2UgUG9z dGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVz ZSBUZXN0OjpNb3JlOwogCitteSAkdGFyID0gJEVOVntUQVJ9OworCiBwcm9ncmFtX2hlbHBfb2so J3BnX3dhbGR1bXAnKTsKIHByb2dyYW1fdmVyc2lvbl9vaygncGdfd2FsZHVtcCcpOwogcHJvZ3Jh bV9vcHRpb25zX2hhbmRsaW5nX29rKCdwZ193YWxkdW1wJyk7CkBAIC0xNjIsNiArMTY1LDQyIEBA IENSRUFURSBUQUJMRVNQQUNFIHRzMSBMT0NBVElPTiAnJHRibHNwY19wYXRoJzsKIERST1AgVEFC TEVTUEFDRSB0czE7CiB9KTsKIAorIyBUZXN0OiBEZWNvZGUgYSBjb250aW51YXRpb24gcmVjb3Jk IChjb250cmVjb3JkKSB0aGF0IHNwYW5zIG11bHRpcGxlIFdBTAorIyBzZWdtZW50cy4KKyMKKyMg Tm93IGNvbnN1bWUgYWxsIHJlbWFpbmluZyByb29tIGluIHRoZSBjdXJyZW50IFdBTCBzZWdtZW50 LCBsZWF2aW5nCisjIHNwYWNlIGVub3VnaCBvbmx5IGZvciB0aGUgc3RhcnQgb2YgYSBsYXJnaXNo IHJlY29yZC4KKyRub2RlLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXsKK0RPICQkCitERUNM QVJFCisgICAgd2FsX3NlZ3NpemUgaW50IDo9IHNldHRpbmc6OmludCBGUk9NIHBnX3NldHRpbmdz IFdIRVJFIG5hbWUgPSAnd2FsX3NlZ21lbnRfc2l6ZSc7CisgICAgcmVtYWluIGludDsKKyAgICBp dGVycyAgaW50IDo9IDA7CitCRUdJTgorICAgIExPT1AKKyAgICAgICAgSU5TRVJUIGludG8gdDEo YikKKyAgICAgICAgc2VsZWN0IHJlcGVhdChlbmNvZGUoc2hhMjU2KGc6OnRleHQ6OmJ5dGVhKSwg J2hleCcpLCAocmFuZG9tKCkgKiAxNSArIDEpOjppbnQpCisgICAgICAgIGZyb20gZ2VuZXJhdGVf c2VyaWVzKDEsIDEwKSBnOworCisgICAgICAgIHJlbWFpbiA6PSB3YWxfc2Vnc2l6ZSAtIChwZ19j dXJyZW50X3dhbF9pbnNlcnRfbHNuKCkgLSAnMC8wJykgJSB3YWxfc2Vnc2l6ZTsKKyAgICAgICAg SUYgcmVtYWluIDwgMiAqIHNldHRpbmc6OmludCBmcm9tIHBnX3NldHRpbmdzIHdoZXJlIG5hbWUg PSAnYmxvY2tfc2l6ZScgVEhFTgorICAgICAgICAgICAgUkFJU0UgbG9nICdleGl0aW5nIGFmdGVy ICUgaXRlcmF0aW9ucywgJSBieXRlcyB0byBlbmQgb2YgV0FMIHNlZ21lbnQnLCBpdGVycywgcmVt YWluOworICAgICAgICAgICAgRVhJVDsKKyAgICAgICAgRU5EIElGOworICAgICAgICBpdGVycyA6 PSBpdGVycyArIDE7CisgICAgRU5EIExPT1A7CitFTkQKKyQkOworfSk7CisKK215ICRjb250cmVj b3JkX2xzbiA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwknU0VMRUNUIHBnX2N1cnJl bnRfd2FsX2luc2VydF9sc24oKScpOworIyBHZW5lcmF0ZSBjb250cmVjb3JkIHJlY29yZAorJG5v ZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXFxe1NFTEVDVCBwZ19sb2dpY2FsX2VtaXRfbWVz c2FnZSh0cnVlLCAndGVzdCAwMjYnLCByZXBlYXQoJ3h5enh6JywgMTIzNDU2KSl9CispOworCiBt eSAoJGVuZF9sc24sICRlbmRfd2FsZmlsZSkgPSBzcGxpdCAvXHwvLAogICAkbm9kZS0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCiAJcXtTRUxFQ1QgcGdfY3VycmVudF93YWxfaW5zZXJ0X2xzbigpLCBw Z193YWxmaWxlX25hbWUocGdfY3VycmVudF93YWxfaW5zZXJ0X2xzbigpKX0KQEAgLTI1OSwxMSAr Mjk4LDUwIEBAIHN1YiB0ZXN0X3BnX3dhbGR1bXAKIAlyZXR1cm4gQGxpbmVzOwogfQogCi1teSBA bGluZXM7CisjIENyZWF0ZSBhIHRhciBhcmNoaXZlLCBzb3J0aW5nIHRoZSBmaWxlIG9yZGVyCitz dWIgZ2VuZXJhdGVfYXJjaGl2ZQoreworCW15ICgkYXJjaGl2ZSwgJGRpcmVjdG9yeSwgJGNvbXBy ZXNzaW9uX2ZsYWdzKSA9IEBfOworCisJbXkgQGZpbGVzOworCW9wZW5kaXIgbXkgJGRoLCAkZGly ZWN0b3J5IG9yIGRpZSAib3BlbmRpcjogJCEiOworCXdoaWxlIChteSAkZW50cnkgPSByZWFkZGly ICRkaCkgeworCQkjIFNraXAgJy4nIGFuZCAnLi4nCisJCW5leHQgaWYgJGVudHJ5IGVxICcuJyB8 fCAkZW50cnkgZXEgJy4uJzsKKwkJcHVzaCBAZmlsZXMsICRlbnRyeTsKKwl9CisJY2xvc2VkaXIg JGRoOworCisJQGZpbGVzID0gc29ydCBAZmlsZXM7CisKKwkjIG1vdmUgaW50byB0aGUgV0FMIGRp cmVjdG9yeSBiZWZvcmUgYXJjaGl2aW5nIGZpbGVzCisJbXkgJGN3ZCA9IGdldGN3ZDsKKwljaGRp cigkZGlyZWN0b3J5KSB8fCBkaWUgImNoZGlyOiAkISI7CisJY29tbWFuZF9vayhbJHRhciwgJGNv bXByZXNzaW9uX2ZsYWdzLCAkYXJjaGl2ZSwgQGZpbGVzXSk7CisJY2hkaXIoJGN3ZCkgfHwgZGll ICJjaGRpcjogJCEiOworfQorCitteSAkdG1wX2RpciA9IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxz Ojp0ZW1wZGlyX3Nob3J0KCk7CiAKIG15IEBzY2VuYXJpb3MgPSAoCiAJewotCQkncGF0aCcgPT4g JG5vZGUtPmRhdGFfZGlyCisJCSdwYXRoJyA9PiAkbm9kZS0+ZGF0YV9kaXIsCisJCSdpc19hcmNo aXZlJyA9PiAwLAorCQknZW5hYmxlZCcgPT4gMQorCX0sCisJeworCQkncGF0aCcgPT4gIiR0bXBf ZGlyL3BnX3dhbC50YXIiLAorCQknY29tcHJlc3Npb25fbWV0aG9kJyA9PiAnbm9uZScsCisJCSdj b21wcmVzc2lvbl9mbGFncycgPT4gJy1jZicsCisJCSdpc19hcmNoaXZlJyA9PiAxLAorCQknZW5h YmxlZCcgPT4gMQorCX0sCisJeworCQkncGF0aCcgPT4gIiR0bXBfZGlyL3BnX3dhbC50YXIuZ3oi LAorCQknY29tcHJlc3Npb25fbWV0aG9kJyA9PiAnZ3ppcCcsCisJCSdjb21wcmVzc2lvbl9mbGFn cycgPT4gJy1jemYnLAorCQknaXNfYXJjaGl2ZScgPT4gMSwKKwkJJ2VuYWJsZWQnID0+IGNoZWNr X3BnX2NvbmZpZygiI2RlZmluZSBIQVZFX0xJQlogMSIpCiAJfSk7CiAKIGZvciBteSAkc2NlbmFy aW8gKEBzY2VuYXJpb3MpCkBAIC0yNzIsNiArMzUwLDE5IEBAIGZvciBteSAkc2NlbmFyaW8gKEBz Y2VuYXJpb3MpCiAKIAlTS0lQOgogCXsKKwkJc2tpcCAidGFyIGNvbW1hbmQgaXMgbm90IGF2YWls YWJsZSIsIDU2CisJCSAgaWYgIWRlZmluZWQgJHRhciAmJiAkc2NlbmFyaW8tPnsnaXNfYXJjaGl2 ZSd9OworCQlza2lwICIkc2NlbmFyaW8tPnsnY29tcHJlc3Npb25fbWV0aG9kJ30gY29tcHJlc3Np b24gbm90IHN1cHBvcnRlZCBieSB0aGlzIGJ1aWxkIiwgNTYKKwkJICBpZiAhJHNjZW5hcmlvLT57 J2VuYWJsZWQnfSAmJiAkc2NlbmFyaW8tPnsnaXNfYXJjaGl2ZSd9OworCisJCSAgIyBjcmVhdGUg cGdfd2FsIGFyY2hpdmUKKwkJICBpZiAoJHNjZW5hcmlvLT57J2lzX2FyY2hpdmUnfSkKKwkJICB7 CisJCQkgIGdlbmVyYXRlX2FyY2hpdmUoJHBhdGgsCisJCQkJICAkbm9kZS0+ZGF0YV9kaXIgLiAn L3BnX3dhbCcsCisJCQkJICAkc2NlbmFyaW8tPnsnY29tcHJlc3Npb25fZmxhZ3MnfSk7CisJCSAg fQorCiAJCWNvbW1hbmRfZmFpbHNfbGlrZSgKIAkJCVsgJ3BnX3dhbGR1bXAnLCAnLS1wYXRoJyA9 PiAkcGF0aCBdLAogCQkJcXIvZXJyb3I6IG5vIHN0YXJ0IFdBTCBsb2NhdGlvbiBnaXZlbi8sCkBA IC0zMDUsOSArMzk2LDE0IEBAIGZvciBteSAkc2NlbmFyaW8gKEBzY2VuYXJpb3MpCiAKIAkJdGVz dF9wZ193YWxkdW1wX3NraXBfYnl0ZXMoJHBhdGgsICRzdGFydF9sc24sICRlbmRfbHNuKTsKIAot CQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJHBhdGgsICRzdGFydF9sc24sICRlbmRfbHNuKTsK KwkJbXkgQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCRwYXRoLCAkc3RhcnRfbHNuLCAkZW5kX2xz bik7CiAJCWlzKGdyZXAoIS9ecm1ncjogXHcvLCBAbGluZXMpLCAwLCAnYWxsIG91dHB1dCBsaW5l cyBhcmUgcm1nciBsaW5lcycpOwogCisJCUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgkcGF0aCwg JGNvbnRyZWNvcmRfbHNuLCAkZW5kX2xzbik7CisJCWlzKGdyZXAoIS9ecm1ncjogXHcvLCBAbGlu ZXMpLCAwLCAnYWxsIG91dHB1dCBsaW5lcyBhcmUgcm1nciBsaW5lcycpOworCisJCXRlc3RfcGdf d2FsZHVtcF9za2lwX2J5dGVzKCRwYXRoLCAkY29udHJlY29yZF9sc24sICRlbmRfbHNuKTsKKwog CQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJHBhdGgsICRzdGFydF9sc24sICRlbmRfbHNuLCAn LS1saW1pdCcgPT4gNik7CiAJCWlzKEBsaW5lcywgNiwgJ2xpbWl0IG9wdGlvbiBvYnNlcnZlZCcp OwogCkBAIC0zMzcsNiArNDMzLDkgQEAgZm9yIG15ICRzY2VuYXJpbyAoQHNjZW5hcmlvcykKIAkJ CSctLXJlbGF0aW9uJyA9PiAiJGRlZmF1bHRfdHNfb2lkLyRwb3N0Z3Jlc19kYl9vaWQvJHJlbF9p MWFfb2lkIiwKIAkJCSctLWJsb2NrJyA9PiAxKTsKIAkJaXMoZ3JlcCghL1xiYmxrIDFcYi8sIEBs aW5lcyksIDAsICdvbmx5IGxpbmVzIGZvciBzZWxlY3RlZCBibG9jaycpOworCisJCSMgQ2xlYW51 cC4KKwkJdW5saW5rICRwYXRoIGlmICRzY2VuYXJpby0+eydpc19hcmNoaXZlJ307CiAJfQogfQog CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29s cy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDc3ZTNjMDQxNDRlLi41OTVhZDdkNWM1YSAx MDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTE0NSw2ICsxNDUsOCBAQCBBcmNoaXZlT3B0 cwogQXJjaGl2ZVNodXRkb3duQ0IKIEFyY2hpdmVTdGFydHVwQ0IKIEFyY2hpdmVTdHJlYW1TdGF0 ZQorQXJjaGl2ZWRXQUxGaWxlCitBcmNoaXZlZFdBTF9oYXNoCiBBcmNoaXZlck91dHB1dAogQXJj aGl2ZXJTdGFnZQogQXJyYXlBbmFseXplRXh0cmFEYXRhCkBAIC0zNTEzLDYgKzM1MTUsNyBAQCBh c3RyZWFtZXJfcmVjb3ZlcnlfaW5qZWN0b3IKIGFzdHJlYW1lcl90YXJfYXJjaGl2ZXIKIGFzdHJl YW1lcl90YXJfcGFyc2VyCiBhc3RyZWFtZXJfdmVyaWZ5Cithc3RyZWFtZXJfd2FsZHVtcAogYXN0 cmVhbWVyX3pzdGRfZnJhbWUKIGF1dGhfcGFzc3dvcmRfaG9va190eXAKIGF1dG92YWNfdGFibGUK LS0gCjIuNDcuMQoK --0000000000007cf0ac064c324baf Content-Type: application/x-patch; name="v15-0007-pg_waldump-Remove-the-restriction-on-the-order-o.patch" Content-Disposition: attachment; filename="v15-0007-pg_waldump-Remove-the-restriction-on-the-order-o.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmc0z11q6 RnJvbSBjNWIwYTkyZjQ4MDg4MTYxMDhiZGZmMDJlNWMxMzcyODA3NDlkMDFjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFR1 ZSwgMjcgSmFuIDIwMjYgMTU6Mzg6MzQgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxNSAwNy8xMV0g cGdfd2FsZHVtcDogUmVtb3ZlIHRoZSByZXN0cmljdGlvbiBvbiB0aGUgb3JkZXIgb2YKIGFyY2hp dmVkIFdBTCBmaWxlcy4KCldpdGggcHJldmlvdXMgcGF0Y2gsIHBnX3dhbGR1bXAgd291bGQgc3Rv cCBkZWNvZGluZyBpZiBXQUwgZmlsZXMgd2VyZQpub3QgaW4gdGhlIHJlcXVpcmVkIHNlcXVlbmNl LiBXaXRoIHRoaXMgcGF0Y2gsIGRlY29kaW5nIHdpbGwgbm93CmNvbnRpbnVlLiAgQW55IFdBTCBm aWxlIHRoYXQgaXMgb3V0IG9mIG9yZGVyIHdpbGwgYmUgd3JpdHRlbiB0byBhCnRlbXBvcmFyeSBs b2NhdGlvbiwgZnJvbSB3aGljaCBpdCB3aWxsIGJlIHJlYWQgbGF0ZXIuIE9uY2UgYSB0ZW1wb3Jh cnkKZmlsZSBoYXMgYmVlbiByZWFkLCBpdCB3aWxsIGJlIHJlbW92ZWQuCi0tLQogZG9jL3NyYy9z Z21sL3JlZi9wZ193YWxkdW1wLnNnbWwgICAgIHwgIDE5ICsrLQogc3JjL2Jpbi9wZ193YWxkdW1w L2FyY2hpdmVfd2FsZHVtcC5jIHwgMTcyICsrKysrKysrKysrKysrKysrKysrKysrKystLQogc3Jj L2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYyAgICAgIHwgIDMyICsrKystCiBzcmMvYmluL3Bn X3dhbGR1bXAvcGdfd2FsZHVtcC5oICAgICAgfCAgIDMgKwogc3JjL2Jpbi9wZ193YWxkdW1wL3Qv MDAxX2Jhc2ljLnBsICAgIHwgICAzICstCiA1IGZpbGVzIGNoYW5nZWQsIDIwOSBpbnNlcnRpb25z KCspLCAyMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX3dh bGR1bXAuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfd2FsZHVtcC5zZ21sCmluZGV4IDE1ZmI4 ZDEzMTk5Li45YmJiNGJkNTc3MiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9wZ193YWxk dW1wLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ193YWxkdW1wLnNnbWwKQEAgLTE0OSw4 ICsxNDksMTIgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAgICAgICAgIG9mIDxlbnZhcj5Q R0RBVEE8L2VudmFyPi4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+Ci0gICAgICAgIElm IGEgdGFyIGFyY2hpdmUgaXMgcHJvdmlkZWQsIGl0cyBXQUwgc2VnbWVudCBmaWxlcyBtdXN0IGJl IGluCi0gICAgICAgIHNlcXVlbnRpYWwgb3JkZXI7IG90aGVyd2lzZSwgYW4gZXJyb3Igd2lsbCBi ZSByZXBvcnRlZC4KKyAgICAgICAgSWYgYSB0YXIgYXJjaGl2ZSBpcyBwcm92aWRlZCBhbmQgaXRz IFdBTCBzZWdtZW50IGZpbGVzIGFyZSBub3QgaW4KKyAgICAgICAgc2VxdWVudGlhbCBvcmRlciwg dGhvc2UgZmlsZXMgd2lsbCBiZSB3cml0dGVuIHRvIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeQorICAg ICAgICBuYW1lZCBzdGFydGluZyB3aXRoIDxmaWxlbmFtZT53YWxkdW1wX3RtcDwvZmlsZW5hbWU+ LiBUaGlzIGRpcmVjdG9yeSB3aWxsIGJlCisgICAgICAgIGNyZWF0ZWQgaW5zaWRlIHRoZSBkaXJl Y3Rvcnkgc3BlY2lmaWVkIGJ5IHRoZSA8ZW52YXI+VE1QRElSPC9lbnZhcj4KKyAgICAgICAgZW52 aXJvbm1lbnQgdmFyaWFibGUgaWYgaXQgaXMgc2V0OyBvdGhlcndpc2UsIGl0IHdpbGwgYmUgY3Jl YXRlZCB3aXRoaW4KKyAgICAgICAgdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHRoZSB0YXIgYXJjaGl2 ZS4KICAgICAgICA8L3BhcmE+CiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRy eT4KQEAgLTM4Nyw2ICszOTEsMTcgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAgICAgIDwv cGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0 ZW50cnk+CisgICAgPHRlcm0+PGVudmFyPlRNUERJUjwvZW52YXI+PC90ZXJtPgorICAgIDxsaXN0 aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBEaXJlY3RvcnkgaW4gd2hpY2ggdG8gY3JlYXRlIHRl bXBvcmFyeSBmaWxlcyB3aGVuIHJlYWRpbmcgV0FMIGZyb20gYQorICAgICAgdGFyIGFyY2hpdmUg d2l0aCBvdXQtb2Ytb3JkZXIgc2VnbWVudCBmaWxlcy4gSWYgbm90IHNldCwgdGhlIHRlbXBvcmFy eQorICAgICAgZGlyZWN0b3J5IGlzIGNyZWF0ZWQgd2l0aGluIHRoZSBzYW1lIGRpcmVjdG9yeSBh cyB0aGUgdGFyIGFyY2hpdmUuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92 YXJsaXN0ZW50cnk+CiAgIDwvdmFyaWFibGVsaXN0PgogIDwvcmVmc2VjdDE+CiAKZGlmZiAtLWdp dCBhL3NyYy9iaW4vcGdfd2FsZHVtcC9hcmNoaXZlX3dhbGR1bXAuYyBiL3NyYy9iaW4vcGdfd2Fs ZHVtcC9hcmNoaXZlX3dhbGR1bXAuYwppbmRleCA0YTk1YjQ3YjRkYS4uMTQ3OWVmZTYxZjUgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcGdfd2FsZHVtcC9hcmNoaXZlX3dhbGR1bXAuYworKysgYi9zcmMv YmluL3BnX3dhbGR1bXAvYXJjaGl2ZV93YWxkdW1wLmMKQEAgLTE3LDYgKzE3LDcgQEAKICNpbmNs dWRlIDx1bmlzdGQuaD4KIAogI2luY2x1ZGUgImFjY2Vzcy94bG9nX2ludGVybmFsLmgiCisjaW5j bHVkZSAiY29tbW9uL2ZpbGVfcGVybS5oIgogI2luY2x1ZGUgImNvbW1vbi9oYXNoZm4uaCIKICNp bmNsdWRlICJjb21tb24vbG9nZ2luZy5oIgogI2luY2x1ZGUgImZlX3V0aWxzL3NpbXBsZV9saXN0 LmgiCkBAIC0yNyw2ICsyOCw5IEBACiAgKi8KICNkZWZpbmUgUkVBRF9DSFVOS19TSVpFCQkJCSgx MjggKiAxMDI0KQogCisvKiBUZW1wb3JhcnkgZXhwb3J0ZWQgV0FMIGZpbGUgZGlyZWN0b3J5ICov CitjaGFyCSAgICpUbXBXYWxTZWdEaXIgPSBOVUxMOworCiAvKgogICogQ2hlY2sgaWYgdGhlIHN0 YXJ0IHNlZ21lbnQgbnVtYmVyIGlzIHplcm87IHRoaXMgaW5kaWNhdGVzIGEgcmVxdWVzdCB0byBy ZWFkCiAgKiBhbnkgV0FMIGZpbGUuCkBAIC01Nyw2ICs2MSw4IEBAIHR5cGVkZWYgc3RydWN0IEFy Y2hpdmVkV0FMRmlsZQogCWNvbnN0IGNoYXIgKmZuYW1lOwkJCS8qIGhhc2gga2V5OiBXQUwgc2Vn bWVudCBuYW1lICovCiAKIAlTdHJpbmdJbmZvCWJ1ZjsJCQkvKiBob2xkcyBXQUwgYnl0ZXMgcmVh ZCBmcm9tIGFyY2hpdmUgKi8KKwlib29sCQlzcGlsbGVkOwkJLyogdHJ1ZSBpZiB0aGUgV0FMIGRh dGEgd2FzIHNwaWxsZWQgdG8gYQorCQkJCQkJCQkgKiB0ZW1wb3JhcnkgZmlsZSAqLwogCiAJaW50 CQkJcmVhZF9sZW47CQkvKiB0b3RhbCBieXRlcyBvZiBhIFdBTCByZWFkIGZyb20gYXJjaGl2ZSAq LwogfSBBcmNoaXZlZFdBTEZpbGU7CkBAIC04NCw2ICs5MCwxMSBAQCBzdGF0aWMgQXJjaGl2ZWRX QUxGaWxlICpnZXRfYXJjaGl2ZV93YWxfZW50cnkoY29uc3QgY2hhciAqZm5hbWUsCiAJCQkJCQkJ CQkJCSAgWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbywKIAkJCQkJCQkJCQkJICBpbnQgV2Fs U2VnU3opOwogc3RhdGljIGludAlyZWFkX2FyY2hpdmVfZmlsZShYTG9nRHVtcFByaXZhdGUgKnBy aXZhdGVJbmZvLCBTaXplIGNvdW50KTsKK3N0YXRpYyB2b2lkIHNldHVwX3RtcHdhbF9kaXIoY29u c3QgY2hhciAqd2FsZGlyKTsKK3N0YXRpYyB2b2lkIGNsZWFudXBfdG1wd2FsX2Rpcl9hdGV4aXQo dm9pZCk7CisKK3N0YXRpYyBGSUxFICpwcmVwYXJlX3RtcF93cml0ZShjb25zdCBjaGFyICpmbmFt ZSk7CitzdGF0aWMgdm9pZCBwZXJmb3JtX3RtcF93cml0ZShjb25zdCBjaGFyICpmbmFtZSwgU3Ry aW5nSW5mbyBidWYsIEZJTEUgKmZpbGUpOwogCiBzdGF0aWMgYXN0cmVhbWVyICphc3RyZWFtZXJf d2FsZHVtcF9uZXcoWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbyk7CiBzdGF0aWMgdm9pZCBh c3RyZWFtZXJfd2FsZHVtcF9jb250ZW50KGFzdHJlYW1lciAqc3RyZWFtZXIsCkBAIC0xMDYsNyAr MTE3LDkgQEAgc3RhdGljIGNvbnN0IGFzdHJlYW1lcl9vcHMgYXN0cmVhbWVyX3dhbGR1bXBfb3Bz ID0gewogLyoKICAqIEluaXRpYWxpemVzIHRoZSB0YXIgYXJjaGl2ZSByZWFkZXIsIGNyZWF0ZXMg YSBoYXNoIHRhYmxlIGZvciBXQUwgZW50cmllcywKICAqIGNoZWNrcyBmb3IgZXhpc3RpbmcgdmFs aWQgV0FMIHNlZ21lbnRzIGluIHRoZSBhcmNoaXZlIGZpbGUgYW5kIHJldHJpZXZlcyB0aGUKLSAq IHNlZ21lbnQgc2l6ZSwgYW5kIHNldHMgdXAgZmlsdGVycyBmb3IgcmVsZXZhbnQgZW50cmllcy4K KyAqIHNlZ21lbnQgc2l6ZSwgYW5kIHNldHMgdXAgZmlsdGVycyBmb3IgcmVsZXZhbnQgZW50cmll cy4gSXQgYWxzbyBjb25maWd1cmVzIGEKKyAqIHRlbXBvcmFyeSBkaXJlY3RvcnkgZm9yIG91dC1v Zi1vcmRlciBXQUwgZGF0YSBhbmQgcmVnaXN0ZXJzIGFuIGV4aXQgY2FsbGJhY2sKKyAqIHRvIGNs ZWFuIHVwIHRlbXBvcmFyeSBmaWxlcy4KICAqLwogdm9pZAogaW5pdF9hcmNoaXZlX3JlYWRlcihY TG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvLCBjb25zdCBjaGFyICp3YWxkaXIsCkBAIC0xOTks NiArMjEyLDEzIEBAIGluaXRfYXJjaGl2ZV9yZWFkZXIoWExvZ0R1bXBQcml2YXRlICpwcml2YXRl SW5mbywgY29uc3QgY2hhciAqd2FsZGlyLAogCQlwcml2YXRlSW5mby0+c3RhcnRfc2Vnbm8gPiBz ZWdubyB8fAogCQlwcml2YXRlSW5mby0+ZW5kX3NlZ25vIDwgc2Vnbm8pCiAJCWZyZWVfYXJjaGl2 ZV93YWxfZW50cnkoZW50cnktPmZuYW1lLCBwcml2YXRlSW5mbyk7CisKKwkvKgorCSAqIFNldHVw IHRlbXBvcmFyeSBkaXJlY3RvcnkgdG8gc3RvcmUgV0FMIHNlZ21lbnRzIGFuZCBzZXQgdXAgYW4g ZXhpdAorCSAqIGNhbGxiYWNrIHRvIHJlbW92ZSBpdCB1cG9uIGNvbXBsZXRpb24uCisJICovCisJ c2V0dXBfdG1wd2FsX2Rpcih3YWxkaXIpOworCWF0ZXhpdChjbGVhbnVwX3RtcHdhbF9kaXJfYXRl eGl0KTsKIH0KIAogLyoKQEAgLTM2NSw2ICszODUsMTcgQEAgZnJlZV9hcmNoaXZlX3dhbF9lbnRy eShjb25zdCBjaGFyICpmbmFtZSwgWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbykKIAlkZXN0 cm95U3RyaW5nSW5mbyhlbnRyeS0+YnVmKTsKIAllbnRyeS0+YnVmID0gTlVMTDsKIAorCS8qIFJl bW92ZSB0ZW1wb3JhcnkgZmlsZSBpZiBhbnkgKi8KKwlpZiAoZW50cnktPnNwaWxsZWQpCisJewor CQljaGFyCQlmcGF0aFtNQVhQR1BBVEhdOworCisJCXNucHJpbnRmKGZwYXRoLCBNQVhQR1BBVEgs ICIlcy8lcyIsIFRtcFdhbFNlZ0RpciwgZm5hbWUpOworCisJCWlmICh1bmxpbmsoZnBhdGgpID09 IDApCisJCQlwZ19sb2dfZGVidWcoInJlbW92ZWQgZmlsZSBcIiVzXCIiLCBmcGF0aCk7CisJfQor CiAJLyogU2V0IGN1cl9maWxlIHRvIE5VTEwgaWYgaXQgbWF0Y2hlcyB0aGUgZW50cnkgYmVpbmcg aWdub3JlZCAqLwogCWlmIChwcml2YXRlSW5mby0+Y3VyX2ZpbGUgPT0gZW50cnkpCiAJCXByaXZh dGVJbmZvLT5jdXJfZmlsZSA9IE5VTEw7CkBAIC0zNzYsMTIgKzQwNywxNiBAQCBmcmVlX2FyY2hp dmVfd2FsX2VudHJ5KGNvbnN0IGNoYXIgKmZuYW1lLCBYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJ bmZvKQogICogUmV0dXJucyB0aGUgYXJjaGl2ZWQgV0FMIGVudHJ5IGZyb20gdGhlIGhhc2ggdGFi bGUgaWYgaXQgZXhpc3RzLiAgT3RoZXJ3aXNlLAogICogaXQgaW52b2tlcyB0aGUgcm91dGluZSB0 byByZWFkIHRoZSBhcmNoaXZlZCBmaWxlLCB3aGljaCB0aGVuIHBvcHVsYXRlcyB0aGUKICAqIGVu dHJ5IGluIHRoZSBoYXNoIHRhYmxlIGlmIHRoYXQgV0FMIGV4aXN0cyBpbiB0aGUgYXJjaGl2ZS4K KyAqIElmIHRoZSBhcmNoaXZlIHN0cmVhbWVyIGhhcHBlbnMgdG8gYmUgcmVhZGluZyBhCisgKiBX QUwgZnJvbSBhcmNoaXZlIGZpbGUgdGhhdCBpcyBub3QgY3VycmVudGx5IG5lZWRlZCwgdGhhdCBX QUwgZGF0YSBpcyB3cml0dGVuCisgKiB0byBhIHRlbXBvcmFyeSBmaWxlLgogICovCiBzdGF0aWMg QXJjaGl2ZWRXQUxGaWxlICoKIGdldF9hcmNoaXZlX3dhbF9lbnRyeShjb25zdCBjaGFyICpmbmFt ZSwgWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbywKIAkJCQkJICBpbnQgV2FsU2VnU3opCiB7 CiAJQXJjaGl2ZWRXQUxGaWxlICplbnRyeSA9IE5VTEw7CisJRklMRQkgICAqd3JpdGVfZnAgPSBO VUxMOwogCiAJLyogU2VhcmNoIGhhc2ggdGFibGUgKi8KIAllbnRyeSA9IEFyY2hpdmVkV0FMX2xv b2t1cChwcml2YXRlSW5mby0+YXJjaGl2ZV93YWxfaHRhYiwgZm5hbWUpOwpAQCAtMzk1LDI4ICs0 MzAsNTkgQEAgZ2V0X2FyY2hpdmVfd2FsX2VudHJ5KGNvbnN0IGNoYXIgKmZuYW1lLCBYTG9nRHVt cFByaXZhdGUgKnByaXZhdGVJbmZvLAogCSAqLwogCXdoaWxlICgxKQogCXsKKwkJLyoKKwkJICog VGhlIFdBTCBmaWxlIGVudHJ5IGN1cnJlbnRseSBiZWluZyBwcm9jZXNzZWQgbWF5IGNoYW5nZSBk dXJpbmcKKwkJICogYXJjaGl2ZSBzdHJlYW1lciBleGVjdXRpb24uIFRoZXJlZm9yZSwgbWFpbnRh aW4gYSBsb2NhbCB2YXJpYWJsZSB0bworCQkgKiByZWZlcmVuY2UgdGhlIHByZXZpb3VzIGVudHJ5 LCBlbnN1cmluZyB0aGF0IGFueSByZW1haW5pbmcgZGF0YSBpbgorCQkgKiBpdHMgYnVmZmVyIGlz IHN1Y2Nlc3NmdWxseSBmbHVzaGVkIHRvIHRoZSB0ZW1wb3JhcnkgZmlsZSBiZWZvcmUKKwkJICog c3dpdGNoaW5nIHRvIHRoZSBuZXh0IFdBTCBlbnRyeS4KKwkJICovCisJCWVudHJ5ID0gcHJpdmF0 ZUluZm8tPmN1cl9maWxlOworCiAJCS8qIEZldGNoIG1vcmUgZGF0YSAqLwotCQlpZiAocmVhZF9h cmNoaXZlX2ZpbGUocHJpdmF0ZUluZm8sIFJFQURfQ0hVTktfU0laRSkgPT0gMCkKLQkJCWJyZWFr OwkJCQkvKiBhcmNoaXZlIGZpbGUgZW5kZWQgKi8KKwkJaWYgKGVudHJ5ID09IE5VTEwgfHwgZW50 cnktPmJ1Zi0+bGVuID09IDApCisJCXsKKwkJCWlmIChyZWFkX2FyY2hpdmVfZmlsZShwcml2YXRl SW5mbywgUkVBRF9DSFVOS19TSVpFKSA9PSAwKQorCQkJCWJyZWFrOwkJCS8qIGFyY2hpdmUgZmls ZSBlbmRlZCAqLworCQl9CiAKIAkJLyoKIAkJICogQXJjaGl2ZWQgc3RyZWFtZXIgaXMgcmVhZGlu ZyBhIG5vbi1XQUwgZmlsZSBvciBhbiBpcnJlbGV2YW50IFdBTAogCQkgKiBmaWxlLgogCQkgKi8K LQkJaWYgKHByaXZhdGVJbmZvLT5jdXJfZmlsZSA9PSBOVUxMKQorCQlpZiAoZW50cnkgPT0gTlVM TCkKIAkJCWNvbnRpbnVlOwogCi0JCWVudHJ5ID0gcHJpdmF0ZUluZm8tPmN1cl9maWxlOwotCiAJ CS8qIEZvdW5kIHRoZSByZXF1aXJlZCBlbnRyeSAqLwogCQlpZiAoc3RyY21wKGZuYW1lLCBlbnRy eS0+Zm5hbWUpID09IDApCiAJCQlyZXR1cm4gZW50cnk7CiAKLQkJLyogV0FMIHNlZ21lbnRzIG11 c3QgYmUgYXJjaGl2ZWQgaW4gb3JkZXIgKi8KLQkJcGdfbG9nX2Vycm9yKCJXQUwgZmlsZXMgYXJl IG5vdCBhcmNoaXZlZCBpbiBzZXF1ZW50aWFsIG9yZGVyIik7Ci0JCXBnX2xvZ19lcnJvcl9kZXRh aWwoIkV4cGVjdGluZyBzZWdtZW50IFwiJXNcIiBidXQgZm91bmQgXCIlc1wiLiIsCi0JCQkJCQkJ Zm5hbWUsIGVudHJ5LT5mbmFtZSk7Ci0JCWV4aXQoMSk7CisJCS8qCisJCSAqIEFyY2hpdmUgc3Ry ZWFtZXIgaXMgY3VycmVudGx5IHJlYWRpbmcgYSBmaWxlIHRoYXQgaXNuJ3QgdGhlIG9uZQorCQkg KiBhc2tlZCBmb3IsIGJ1dCBpdCdzIHJlcXVpcmVkIGluIHRoZSBmdXR1cmUuIEl0IHNob3VsZCBi ZSB3cml0dGVuIHRvCisJCSAqIGEgdGVtcG9yYXJ5IGxvY2F0aW9uIGZvciByZXRyaWV2YWwgd2hl biBuZWVkZWQuCisJCSAqLworCisJCS8qIENyZWF0ZSBhIHRlbXBvcmFyeSBmaWxlIGlmIG9uZSBk b2VzIG5vdCBhbHJlYWR5IGV4aXN0ICovCisJCWlmICghZW50cnktPnNwaWxsZWQpCisJCXsKKwkJ CXdyaXRlX2ZwID0gcHJlcGFyZV90bXBfd3JpdGUoZW50cnktPmZuYW1lKTsKKwkJCWVudHJ5LT5z cGlsbGVkID0gdHJ1ZTsKKwkJfQorCisJCS8qIEZsdXNoIGRhdGEgZnJvbSB0aGUgYnVmZmVyIHRv IHRoZSBmaWxlICovCisJCXBlcmZvcm1fdG1wX3dyaXRlKGVudHJ5LT5mbmFtZSwgZW50cnktPmJ1 Ziwgd3JpdGVfZnApOworCQlyZXNldFN0cmluZ0luZm8oZW50cnktPmJ1Zik7CisKKwkJLyoKKwkJ ICogVGhlIGNoYW5nZSBpbiB0aGUgY3VycmVudCBzZWdtZW50IGVudHJ5IGluZGljYXRlcyB0aGF0 IHRoZSByZWFkaW5nCisJCSAqIG9mIHRoaXMgZmlsZSBoYXMgZW5kZWQuCisJCSAqLworCQlpZiAo ZW50cnkgIT0gcHJpdmF0ZUluZm8tPmN1cl9maWxlICYmIHdyaXRlX2ZwICE9IE5VTEwpCisJCXsK KwkJCWZjbG9zZSh3cml0ZV9mcCk7CisJCQl3cml0ZV9mcCA9IE5VTEw7CisJCX0KIAl9CiAKIAkv KiBSZXF1ZXN0ZWQgV0FMIHNlZ21lbnQgbm90IGZvdW5kICovCkBAIC00NTQsNyArNTIwLDg4IEBA IHJlYWRfYXJjaGl2ZV9maWxlKFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8sIFNpemUgY291 bnQpCiB9CiAKIC8qCi0gKiBDcmVhdGUgYW4gYXN0cmVhbWVyIHRoYXQgY2FuIHJlYWQgV0FMIGZy b20gYSB0YXIgZmlsZS4KKyAqIFNldCB1cCBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgdG8gdGVtcG9y YXJpbHkgc3RvcmUgV0FMIHNlZ21lbnRzLgorICovCitzdGF0aWMgdm9pZAorc2V0dXBfdG1wd2Fs X2Rpcihjb25zdCBjaGFyICp3YWxkaXIpCit7CisJY2hhcgkgICAqdGVtcGxhdGU7CisKKwkvKgor CSAqIFVzZSB0aGUgZGlyZWN0b3J5IHNwZWNpZmllZCBieSB0aGUgVE1QRElSIGVudmlyb25tZW50 IHZhcmlhYmxlLiBJZiBpdCdzCisJICogbm90IHNldCwgdXNlIHRoZSBwcm92aWRlZCBXQUwgZGly ZWN0b3J5IHRvIGV4dHJhY3QgV0FMIGZpbGUKKwkgKiB0ZW1wb3JhcmlseS4KKwkgKi8KKwl0ZW1w bGF0ZSA9IHBzcHJpbnRmKCIlcy93YWxkdW1wX3RtcC1YWFhYWFgiLAorCQkJCQkJZ2V0ZW52KCJU TVBESVIiKSA/IGdldGVudigiVE1QRElSIikgOiB3YWxkaXIpOworCVRtcFdhbFNlZ0RpciA9IG1r ZHRlbXAodGVtcGxhdGUpOworCisJaWYgKFRtcFdhbFNlZ0RpciA9PSBOVUxMKQorCQlwZ19mYXRh bCgiY291bGQgbm90IGNyZWF0ZSBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIHRlbXBsYXRlKTsKKwor CWNhbm9uaWNhbGl6ZV9wYXRoKFRtcFdhbFNlZ0Rpcik7CisKKwlwZ19sb2dfZGVidWcoImNyZWF0 ZWQgZGlyZWN0b3J5IFwiJXNcIiIsIFRtcFdhbFNlZ0Rpcik7Cit9CisKKy8qCisgKiBSZW1vdmUg dGVtcG9yYXJ5IGRpcmVjdG9yeSBhdCBleGl0LCBpZiBhbnkuCisgKi8KK3N0YXRpYyB2b2lkCitj bGVhbnVwX3RtcHdhbF9kaXJfYXRleGl0KHZvaWQpCit7CisJcm10cmVlKFRtcFdhbFNlZ0Rpciwg dHJ1ZSk7Cit9CisKKy8qCisgKiBDcmVhdGUgYW4gZW1wdHkgcGxhY2Vob2xkZXIgZmlsZSBhbmQg cmV0dXJuIGl0cyBoYW5kbGUuCisgKi8KK3N0YXRpYyBGSUxFICoKK3ByZXBhcmVfdG1wX3dyaXRl KGNvbnN0IGNoYXIgKmZuYW1lKQoreworCWNoYXIJCWZwYXRoW01BWFBHUEFUSF07CisJRklMRQkg ICAqZmlsZTsKKworCXNucHJpbnRmKGZwYXRoLCBNQVhQR1BBVEgsICIlcy8lcyIsIFRtcFdhbFNl Z0RpciwgZm5hbWUpOworCisJLyogQ3JlYXRlIGFuIGVtcHR5IHBsYWNlaG9sZGVyICovCisJZmls ZSA9IGZvcGVuKGZwYXRoLCBQR19CSU5BUllfVyk7CisJaWYgKGZpbGUgPT0gTlVMTCkKKwkJcGdf ZmF0YWwoImNvdWxkIG5vdCBjcmVhdGUgZmlsZSBcIiVzXCI6ICVtIiwgZnBhdGgpOworCisjaWZu ZGVmIFdJTjMyCisJaWYgKGNobW9kKGZwYXRoLCBwZ19maWxlX2NyZWF0ZV9tb2RlKSkKKwkJcGdf ZmF0YWwoImNvdWxkIG5vdCBzZXQgcGVybWlzc2lvbnMgb24gZmlsZSBcIiVzXCI6ICVtIiwKKwkJ CQkgZnBhdGgpOworI2VuZGlmCisKKwlwZ19sb2dfZGVidWcoInNwaWxsaW5nIHRvIHRlbXBvcmFy eSBmaWxlIFwiJXNcIiIsIGZwYXRoKTsKKworCXJldHVybiBmaWxlOworfQorCisvKgorICogV3Jp dGUgYnVmZmVyIGRhdGEgdG8gdGhlIGdpdmVuIGZpbGUgaGFuZGxlLgorICovCitzdGF0aWMgdm9p ZAorcGVyZm9ybV90bXBfd3JpdGUoY29uc3QgY2hhciAqZm5hbWUsIFN0cmluZ0luZm8gYnVmLCBG SUxFICpmaWxlKQoreworCUFzc2VydChmaWxlKTsKKworCWVycm5vID0gMDsKKwlpZiAoYnVmLT5s ZW4gPiAwICYmIGZ3cml0ZShidWYtPmRhdGEsIGJ1Zi0+bGVuLCAxLCBmaWxlKSAhPSAxKQorCXsK KwkJLyoKKwkJICogSWYgd3JpdGUgZGlkbid0IHNldCBlcnJubywgYXNzdW1lIHByb2JsZW0gaXMg bm8gZGlzayBzcGFjZQorCQkgKi8KKwkJaWYgKGVycm5vID09IDApCisJCQllcnJubyA9IEVOT1NQ QzsKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCB3cml0ZSB0byBmaWxlIFwiJXNcIjogJW0iLCBmbmFt ZSk7CisJfQorfQorCisvKgorICogQ3JlYXRlIGFuIGFzdHJlYW1lciB0aGF0IGNhbiByZWFkIFdB TCBmcm9tIHRhciBmaWxlLgogICovCiBzdGF0aWMgYXN0cmVhbWVyICoKIGFzdHJlYW1lcl93YWxk dW1wX25ldyhYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvKQpAQCAtNTM4LDYgKzY4NSw3IEBA IGFzdHJlYW1lcl93YWxkdW1wX2NvbnRlbnQoYXN0cmVhbWVyICpzdHJlYW1lciwgYXN0cmVhbWVy X21lbWJlciAqbWVtYmVyLAogCQkJCX0KIAogCQkJCWVudHJ5LT5idWYgPSBtYWtlU3RyaW5nSW5m bygpOworCQkJCWVudHJ5LT5zcGlsbGVkID0gZmFsc2U7CiAJCQkJZW50cnktPnJlYWRfbGVuID0g MDsKIAkJCQlwcml2YXRlSW5mby0+Y3VyX2ZpbGUgPSBlbnRyeTsKIAkJCX0KZGlmZiAtLWdpdCBh L3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMgYi9zcmMvYmluL3BnX3dhbGR1bXAvcGdf d2FsZHVtcC5jCmluZGV4IGExOGM1NmE3MzIyLi40YjQzOGI1M2VhZCAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYworKysgYi9zcmMvYmluL3BnX3dhbGR1bXAvcGdf d2FsZHVtcC5jCkBAIC00NzgsMTAgKzQ3OCwxNCBAQCBUYXJXQUxEdW1wUmVhZFBhZ2UoWExvZ1Jl YWRlclN0YXRlICpzdGF0ZSwgWExvZ1JlY1B0ciB0YXJnZXRQYWdlUHRyLCBpbnQgcmVxTGVuLAog CQlyZXR1cm4gLTE7CiAKIAkvKgotCSAqIElmIHRoZSB0YXJnZXQgcGFnZSBpcyBpbiBhIGRpZmZl cmVudCBzZWdtZW50LCBmcmVlIHRoZSBidWZmZXIgc3BhY2UKLQkgKiBvY2N1cGllZCBieSB0aGUg cHJldmlvdXMgc2VnbWVudCBkYXRhLiBTaW5jZSBwZ193YWxkdW1wIG5ldmVyIHJlcXVlc3RzCi0J ICogdGhlIHNhbWUgV0FMIGJ5dGVzIHR3aWNlLCBtb3ZpbmcgdG8gYSBuZXcgc2VnbWVudCBpbXBs aWVzIHRoZSBwcmV2aW91cwotCSAqIGJ1ZmZlcidzIGRhdGEgYW5kIHRoYXQgc2VnbWVudCB3aWxs IG5vdCBiZSBuZWVkZWQgYWdhaW4uCisJICogSWYgdGhlIHRhcmdldCBwYWdlIGlzIGluIGEgZGlm ZmVyZW50IHNlZ21lbnQsIGZyZWUgdGhlIGJ1ZmZlciBhbmQvb3IKKwkgKiB0ZW1wb3JhcnkgZmls ZSBkaXNrIHNwYWNlIG9jY3VwaWVkIGJ5IHRoZSBwcmV2aW91cyBzZWdtZW50J3MgZGF0YS4KKwkg KiBTaW5jZSBwZ193YWxkdW1wIG5ldmVyIHJlcXVlc3RzIHRoZSBzYW1lIFdBTCBieXRlcyB0d2lj ZSwgbW92aW5nIHRvIGEKKwkgKiBuZXcgc2VnbWVudCBpbXBsaWVzIHRoZSBwcmV2aW91cyBidWZm ZXIncyBkYXRhIGFuZCB0aGF0IHNlZ21lbnQgd2lsbAorCSAqIG5vdCBiZSBuZWVkZWQgYWdhaW4u CisJICoKKwkgKiBBZnRlcndhcmQsIGNoZWNrIGZvciB0aGUgbmV4dCByZXF1aXJlZCBXQUwgc2Vn bWVudCdzIHBoeXNpY2FsIGV4aXN0ZW5jZQorCSAqIGluIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5 IGZpcnN0IGJlZm9yZSBpbnZva2luZyB0aGUgYXJjaGl2ZSBzdHJlYW1lci4KIAkgKi8KIAljdXJT ZWdObyA9IHN0YXRlLT5zZWcud3Nfc2Vnbm87CiAJaWYgKCFYTEJ5dGVJblNlZyh0YXJnZXRQYWdl UHRyLCBjdXJTZWdObywgV2FsU2VnU3opKQpAQCAtNDk3LDYgKzUwMSwxMyBAQCBUYXJXQUxEdW1w UmVhZFBhZ2UoWExvZ1JlYWRlclN0YXRlICpzdGF0ZSwgWExvZ1JlY1B0ciB0YXJnZXRQYWdlUHRy LCBpbnQgcmVxTGVuLAogCQlzdGF0ZS0+c2VnLndzX3RsaSA9IHByaXZhdGUtPnRpbWVsaW5lOwog CQlzdGF0ZS0+c2VnLndzX3NlZ25vID0gbmV4dFNlZ05vOwogCisJCS8qIENsb3NlIHRoZSBXQUwg c2VnbWVudCBmaWxlIGlmIGl0IGlzIGN1cnJlbnRseSBvcGVuICovCisJCWlmIChzdGF0ZS0+c2Vn LndzX2ZpbGUgPj0gMCkKKwkJeworCQkJY2xvc2Uoc3RhdGUtPnNlZy53c19maWxlKTsKKwkJCXN0 YXRlLT5zZWcud3NfZmlsZSA9IC0xOworCQl9CisKIAkJLyoKIAkJICogSWYgaW4gcHJlLXJlYWRp bmcgbW9kZSAocHJpb3IgdG8gYWN0dWFsIGRlY29kaW5nKSwgZG8gbm90IGRlbGV0ZSBhbnkKIAkJ ICogZW50cmllcyB0aGF0IG1pZ2h0IGJlIHJlcXVlc3RlZCBhZ2FpbiBvbmNlIHRoZSBkZWNvZGlu ZyBsb29wIHN0YXJ0cy4KQEAgLTUwNyw5ICs1MTgsMjAgQEAgVGFyV0FMRHVtcFJlYWRQYWdlKFhM b2dSZWFkZXJTdGF0ZSAqc3RhdGUsIFhMb2dSZWNQdHIgdGFyZ2V0UGFnZVB0ciwgaW50IHJlcUxl biwKIAkJCVhMb2dGaWxlTmFtZShmbmFtZSwgc3RhdGUtPnNlZy53c190bGksIGN1clNlZ05vLCBX YWxTZWdTeik7CiAJCQlmcmVlX2FyY2hpdmVfd2FsX2VudHJ5KGZuYW1lLCBwcml2YXRlKTsKIAkJ fQorCisJCS8qCisJCSAqIElmIHRoZSBuZXh0IHNlZ21lbnQgZXhpc3RzLCBvcGVuIGl0IGFuZCBj b250aW51ZSByZWFkaW5nIGZyb20gdGhlcmUKKwkJICovCisJCVhMb2dGaWxlTmFtZShmbmFtZSwg c3RhdGUtPnNlZy53c190bGksIG5leHRTZWdObywgV2FsU2VnU3opOworCQlzdGF0ZS0+c2VnLndz X2ZpbGUgPSBvcGVuX2ZpbGVfaW5fZGlyZWN0b3J5KFRtcFdhbFNlZ0RpciwgZm5hbWUpOwogCX0K IAotCS8qIFJlYWQgdGhlIFdBTCBwYWdlIGZyb20gdGhlIGFyY2hpdmUgc3RyZWFtZXIgKi8KKwkv KiBDb250aW51ZSByZWFkaW5nIGZyb20gdGhlIG9wZW4gV0FMIHNlZ21lbnQsIGlmIGFueSAqLwor CWlmIChzdGF0ZS0+c2VnLndzX2ZpbGUgPj0gMCkKKwkJcmV0dXJuIFdBTER1bXBSZWFkUGFnZShz dGF0ZSwgdGFyZ2V0UGFnZVB0ciwgY291bnQsIHRhcmdldFB0ciwKKwkJCQkJCQkgICByZWFkQnVm Zik7CisKKwkvKiBPdGhlcndpc2UsIHJlYWQgdGhlIFdBTCBwYWdlIGZyb20gdGhlIGFyY2hpdmUg c3RyZWFtZXIgKi8KIAlyZXR1cm4gcmVhZF9hcmNoaXZlX3dhbF9wYWdlKHByaXZhdGUsIHRhcmdl dFBhZ2VQdHIsIGNvdW50LCByZWFkQnVmZiwKIAkJCQkJCQkJIFdhbFNlZ1N6KTsKIH0KZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmggYi9zcmMvYmluL3BnX3dhbGR1 bXAvcGdfd2FsZHVtcC5oCmluZGV4IDU0ZDU0YThhNzE4Li42YzI0MmI3ZmNiYyAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuaAorKysgYi9zcmMvYmluL3BnX3dhbGR1 bXAvcGdfd2FsZHVtcC5oCkBAIC0xOCw2ICsxOCw5IEBACiBzdHJ1Y3QgQXJjaGl2ZWRXQUxGaWxl Owogc3RydWN0IEFyY2hpdmVkV0FMX2hhc2g7CiAKKy8qIFRlbXBvcmFyeSBkaXJlY3RvcnkgKi8K K2V4dGVybiBjaGFyICpUbXBXYWxTZWdEaXI7CisKIC8qIENvbnRhaW5zIHRoZSBuZWNlc3Nhcnkg aW5mb3JtYXRpb24gdG8gZHJpdmUgV0FMIGRlY29kaW5nICovCiB0eXBlZGVmIHN0cnVjdCBYTG9n RHVtcFByaXZhdGUKIHsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfd2FsZHVtcC90LzAwMV9iYXNp Yy5wbCBiL3NyYy9iaW4vcGdfd2FsZHVtcC90LzAwMV9iYXNpYy5wbAppbmRleCA2ZjhjZTMxOTg0 MS4uNjk2MGJkNDZiYTQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfd2FsZHVtcC90LzAwMV9iYXNp Yy5wbAorKysgYi9zcmMvYmluL3BnX3dhbGR1bXAvdC8wMDFfYmFzaWMucGwKQEAgLTcsNiArNyw3 IEBAIHVzZSBDd2Q7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3Jl U1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwordXNlIExpc3Q6OlV0aWwgcXcoc2h1 ZmZsZSk7CiAKIG15ICR0YXIgPSAkRU5We1RBUn07CiAKQEAgLTMxMiw3ICszMTMsNyBAQCBzdWIg Z2VuZXJhdGVfYXJjaGl2ZQogCX0KIAljbG9zZWRpciAkZGg7CiAKLQlAZmlsZXMgPSBzb3J0IEBm aWxlczsKKwlAZmlsZXMgPSBzaHVmZmxlIEBmaWxlczsKIAogCSMgbW92ZSBpbnRvIHRoZSBXQUwg ZGlyZWN0b3J5IGJlZm9yZSBhcmNoaXZpbmcgZmlsZXMKIAlteSAkY3dkID0gZ2V0Y3dkOwotLSAK Mi40Ny4xCgo= --0000000000007cf0ac064c324baf Content-Type: application/x-patch; name="v15-0008-pg_verifybackup-Delay-default-WAL-directory-prep.patch" Content-Disposition: attachment; filename="v15-0008-pg_verifybackup-Delay-default-WAL-directory-prep.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmc0z6677 RnJvbSA0MmM5MzliNWQzM2IxNjBkODZmZjAxYzIxZDYxZTVhNjgxNzBiNDE1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMTYgSnVsIDIwMjUgMTQ6NDc6NDMgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxNSAwOC8xMV0g cGdfdmVyaWZ5YmFja3VwOiBEZWxheSBkZWZhdWx0IFdBTCBkaXJlY3RvcnkKIHByZXBhcmF0aW9u LgoKV2UgYXJlIG5vdCBzdXJlIHdoZXRoZXIgdG8gcGFyc2UgV0FMIGZyb20gYSBkaXJlY3Rvcnkg b3IgYW4gYXJjaGl2ZQp1bnRpbCB0aGUgYmFja3VwIGZvcm1hdCBpcyBrbm93bi4gVGhlcmVmb3Jl LCB3ZSBkZWxheSBwcmVwYXJpbmcgdGhlCmRlZmF1bHQgV0FMIGRpcmVjdG9yeSB1bnRpbCB0aGUg cG9pbnQgb2YgcGFyc2luZy4gVGhpcyBkZWxheSBpcwpoYXJtbGVzcywgYXMgdGhlIFdBTCBkaXJl Y3RvcnkgaXMgbm90IHVzZWQgZWxzZXdoZXJlLgotLS0KIHNyYy9iaW4vcGdfdmVyaWZ5YmFja3Vw L3BnX3ZlcmlmeWJhY2t1cC5jIHwgOCArKysrLS0tLQogMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0 aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3ZlcmlmeWJh Y2t1cC9wZ192ZXJpZnliYWNrdXAuYyBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3BnX3Zlcmlm eWJhY2t1cC5jCmluZGV4IDMxZjYwNmM0NWIxLi44Y2MyMDQ3MTllZSAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ192ZXJpZnliYWNrdXAvcGdfdmVyaWZ5YmFja3VwLmMKKysrIGIvc3JjL2Jpbi9wZ192 ZXJpZnliYWNrdXAvcGdfdmVyaWZ5YmFja3VwLmMKQEAgLTI4NSwxMCArMjg1LDYgQEAgbWFpbihp bnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCW1hbmlmZXN0X3BhdGggPSBwc3ByaW50ZigiJXMvYmFj a3VwX21hbmlmZXN0IiwKIAkJCQkJCQkJIGNvbnRleHQuYmFja3VwX2RpcmVjdG9yeSk7CiAKLQkv KiBCeSBkZWZhdWx0LCBsb29rIGZvciB0aGUgV0FMIGluIHRoZSBiYWNrdXAgZGlyZWN0b3J5LCB0 b28uICovCi0JaWYgKHdhbF9kaXJlY3RvcnkgPT0gTlVMTCkKLQkJd2FsX2RpcmVjdG9yeSA9IHBz cHJpbnRmKCIlcy9wZ193YWwiLCBjb250ZXh0LmJhY2t1cF9kaXJlY3RvcnkpOwotCiAJLyoKIAkg KiBUcnkgdG8gcmVhZCB0aGUgbWFuaWZlc3QuIFdlIHRyZWF0IGFueSBlcnJvcnMgZW5jb3VudGVy ZWQgd2hpbGUgcGFyc2luZwogCSAqIHRoZSBtYW5pZmVzdCBhcyBmYXRhbDsgdGhlcmUgZG9lc24n dCBzZWVtIHRvIGJlIG11Y2ggcG9pbnQgaW4gdHJ5aW5nIHRvCkBAIC0zNjgsNiArMzY0LDEwIEBA IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCWlmIChjb250ZXh0LmZvcm1hdCA9PSAncCcg JiYgIWNvbnRleHQuc2tpcF9jaGVja3N1bXMpCiAJCXZlcmlmeV9iYWNrdXBfY2hlY2tzdW1zKCZj b250ZXh0KTsKIAorCS8qIEJ5IGRlZmF1bHQsIGxvb2sgZm9yIHRoZSBXQUwgaW4gdGhlIGJhY2t1 cCBkaXJlY3RvcnksIHRvby4gKi8KKwlpZiAod2FsX2RpcmVjdG9yeSA9PSBOVUxMKQorCQl3YWxf ZGlyZWN0b3J5ID0gcHNwcmludGYoIiVzL3BnX3dhbCIsIGNvbnRleHQuYmFja3VwX2RpcmVjdG9y eSk7CisKIAkvKgogCSAqIFRyeSB0byBwYXJzZSB0aGUgcmVxdWlyZWQgcmFuZ2VzIG9mIFdBTCBy ZWNvcmRzLCB1bmxlc3Mgd2Ugd2VyZSB0b2xkCiAJICogbm90IHRvIGRvIHNvLgotLSAKMi40Ny4x Cgo= --0000000000007cf0ac064c324baf Content-Type: application/x-patch; name="v15-0009-pg_verifybackup-Rename-the-wal-directory-switch-.patch" Content-Disposition: attachment; filename="v15-0009-pg_verifybackup-Rename-the-wal-directory-switch-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmc0zjoj8 RnJvbSBkZmExNTllNDM1MjdjMDcwNWIzYjFiMTQzMDM3NzVjNmI1NWI4MGY3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFR1 ZSwgMjUgTm92IDIwMjUgMTc6MzI6MTQgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxNSAwOS8xMV0g cGdfdmVyaWZ5YmFja3VwOiBSZW5hbWUgdGhlIHdhbC1kaXJlY3Rvcnkgc3dpdGNoIHRvCiB3YWwt cGF0aAoKV2l0aCBwcmV2aW91cyBwYXRjaGVzIHRvIHBnX3dhbGR1bXAgY2FuIG5vdyBkZWNvZGUg V0FMIGRpcmVjdGx5IGZyb20KdGFyIGZpbGVzLiAgVGhpcyBtZWFucyB5b3UnbGwgYmUgYWJsZSB0 byBzcGVjaWZ5IGEgdGFyIGFyY2hpdmUgcGF0aAppbnN0ZWFkIG9mIGEgdHJhZGl0aW9uYWwgV0FM IGRpcmVjdG9yeS4KClRvIGtlZXAgdGhpbmdzIGNvbnNpc3RlbnQgYW5kIG1vcmUgdmVyc2F0aWxl LCB3ZSBzaG91bGQgYWxzbwpnZW5lcmFsaXplIHRoZSBpbnB1dCBzd2l0Y2ggZm9yIHBnX3Zlcmlm eWJhY2t1cC4gSXQgc2hvdWxkIGFjY2VwdAplaXRoZXIgYSBkaXJlY3Rvcnkgb3IgYSB0YXIgZmls ZSBwYXRoIHRoYXQgY29udGFpbnMgV0FMcy4gVGhpcyBjaGFuZ2UKd2lsbCBhbHNvIGFsaWduaW5n IGl0IHdpdGggdGhlIGV4aXN0aW5nIG1hbmlmZXN0LXBhdGggc3dpdGNoIG5hbWluZy4KCj09IE5P VEUgPT0KICBUaGUgY29ycmVzcG9uZGluZyBQTyBmaWxlcyByZXF1aXJlIHVwZGF0aW5nIGR1ZSB0 byB0aGlzIGNoYW5nZS4KLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL3BnX3ZlcmlmeWJhY2t1cC5zZ21s ICAgICB8ICAyICstCiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9wZ192ZXJpZnliYWNrdXAuYyB8 IDIyICsrKysrKysrKysrLS0tLS0tLS0tLS0KIHNyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDA3 X3dhbC5wbCAgICAgIHwgIDQgKystLQogMyBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCsp LCAxNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX3Zlcmlm eWJhY2t1cC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ192ZXJpZnliYWNrdXAuc2dtbAppbmRl eCA2MWMxMjk3NWU0YS4uZTliOGJmZDUxYjEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYv cGdfdmVyaWZ5YmFja3VwLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ192ZXJpZnliYWNr dXAuc2dtbApAQCAtMjYxLDcgKzI2MSw3IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogCiAg ICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICA8dGVybT48b3B0aW9uPi13IDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5wYXRoPC9yZXBsYWNlYWJsZT48L29wdGlvbj48L3Rlcm0+Ci0gICAg ICA8dGVybT48b3B0aW9uPi0td2FsLWRpcmVjdG9yeT08cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cGF0aDwvcmVwbGFjZWFibGU+PC9vcHRpb24+PC90ZXJtPgorICAgICAgPHRlcm0+PG9w dGlvbj4tLXdhbC1wYXRoPTxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXRoPC9yZXBs YWNlYWJsZT48L29wdGlvbj48L3Rlcm0+CiAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgPHBhcmE+ CiAgICAgICAgIFRyeSB0byBwYXJzZSBXQUwgZmlsZXMgc3RvcmVkIGluIHRoZSBzcGVjaWZpZWQg ZGlyZWN0b3J5LCByYXRoZXIgdGhhbgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ192ZXJpZnliYWNr dXAvcGdfdmVyaWZ5YmFja3VwLmMgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9wZ192ZXJpZnli YWNrdXAuYwppbmRleCA4Y2MyMDQ3MTllZS4uMzQ1MjA1NDZiYzMgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcGdfdmVyaWZ5YmFja3VwL3BnX3ZlcmlmeWJhY2t1cC5jCisrKyBiL3NyYy9iaW4vcGdfdmVy aWZ5YmFja3VwL3BnX3ZlcmlmeWJhY2t1cC5jCkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyB2b2lk IHZlcmlmeV9maWxlX2NoZWNrc3VtKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQsCiAJCQkJCQkJ CSB1aW50OCAqYnVmZmVyKTsKIHN0YXRpYyB2b2lkIHBhcnNlX3JlcXVpcmVkX3dhbCh2ZXJpZmll cl9jb250ZXh0ICpjb250ZXh0LAogCQkJCQkJCSAgIGNoYXIgKnBnX3dhbGR1bXBfcGF0aCwKLQkJ CQkJCQkgICBjaGFyICp3YWxfZGlyZWN0b3J5KTsKKwkJCQkJCQkgICBjaGFyICp3YWxfcGF0aCk7 CiBzdGF0aWMgYXN0cmVhbWVyICpjcmVhdGVfYXJjaGl2ZV92ZXJpZmllcih2ZXJpZmllcl9jb250 ZXh0ICpjb250ZXh0LAogCQkJCQkJCQkJCSAgY2hhciAqYXJjaGl2ZV9uYW1lLAogCQkJCQkJCQkJ CSAgT2lkIHRibHNwY19vaWQsCkBAIC0xMjYsNyArMTI2LDcgQEAgbWFpbihpbnQgYXJnYywgY2hh ciAqKmFyZ3YpCiAJCXsicHJvZ3Jlc3MiLCBub19hcmd1bWVudCwgTlVMTCwgJ1AnfSwKIAkJeyJx dWlldCIsIG5vX2FyZ3VtZW50LCBOVUxMLCAncSd9LAogCQl7InNraXAtY2hlY2tzdW1zIiwgbm9f YXJndW1lbnQsIE5VTEwsICdzJ30sCi0JCXsid2FsLWRpcmVjdG9yeSIsIHJlcXVpcmVkX2FyZ3Vt ZW50LCBOVUxMLCAndyd9LAorCQl7IndhbC1wYXRoIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEws ICd3J30sCiAJCXtOVUxMLCAwLCBOVUxMLCAwfQogCX07CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCBt YWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAljaGFyCSAgICptYW5pZmVzdF9wYXRoID0gTlVM TDsKIAlib29sCQlub19wYXJzZV93YWwgPSBmYWxzZTsKIAlib29sCQlxdWlldCA9IGZhbHNlOwot CWNoYXIJICAgKndhbF9kaXJlY3RvcnkgPSBOVUxMOworCWNoYXIJICAgKndhbF9wYXRoID0gTlVM TDsKIAljaGFyCSAgICpwZ193YWxkdW1wX3BhdGggPSBOVUxMOwogCURJUgkJICAgKmRpcjsKIApA QCAtMjIxLDggKzIyMSw4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJCWNvbnRl eHQuc2tpcF9jaGVja3N1bXMgPSB0cnVlOwogCQkJCWJyZWFrOwogCQkJY2FzZSAndyc6Ci0JCQkJ d2FsX2RpcmVjdG9yeSA9IHBzdHJkdXAob3B0YXJnKTsKLQkJCQljYW5vbmljYWxpemVfcGF0aCh3 YWxfZGlyZWN0b3J5KTsKKwkJCQl3YWxfcGF0aCA9IHBzdHJkdXAob3B0YXJnKTsKKwkJCQljYW5v bmljYWxpemVfcGF0aCh3YWxfcGF0aCk7CiAJCQkJYnJlYWs7CiAJCQlkZWZhdWx0OgogCQkJCS8q IGdldG9wdF9sb25nIGFscmVhZHkgZW1pdHRlZCBhIGNvbXBsYWludCAqLwpAQCAtMzY1LDE1ICsz NjUsMTUgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCXZlcmlmeV9iYWNrdXBfY2hl Y2tzdW1zKCZjb250ZXh0KTsKIAogCS8qIEJ5IGRlZmF1bHQsIGxvb2sgZm9yIHRoZSBXQUwgaW4g dGhlIGJhY2t1cCBkaXJlY3RvcnksIHRvby4gKi8KLQlpZiAod2FsX2RpcmVjdG9yeSA9PSBOVUxM KQotCQl3YWxfZGlyZWN0b3J5ID0gcHNwcmludGYoIiVzL3BnX3dhbCIsIGNvbnRleHQuYmFja3Vw X2RpcmVjdG9yeSk7CisJaWYgKHdhbF9wYXRoID09IE5VTEwpCisJCXdhbF9wYXRoID0gcHNwcmlu dGYoIiVzL3BnX3dhbCIsIGNvbnRleHQuYmFja3VwX2RpcmVjdG9yeSk7CiAKIAkvKgogCSAqIFRy eSB0byBwYXJzZSB0aGUgcmVxdWlyZWQgcmFuZ2VzIG9mIFdBTCByZWNvcmRzLCB1bmxlc3Mgd2Ug d2VyZSB0b2xkCiAJICogbm90IHRvIGRvIHNvLgogCSAqLwogCWlmICghbm9fcGFyc2Vfd2FsKQot CQlwYXJzZV9yZXF1aXJlZF93YWwoJmNvbnRleHQsIHBnX3dhbGR1bXBfcGF0aCwgd2FsX2RpcmVj dG9yeSk7CisJCXBhcnNlX3JlcXVpcmVkX3dhbCgmY29udGV4dCwgcGdfd2FsZHVtcF9wYXRoLCB3 YWxfcGF0aCk7CiAKIAkvKgogCSAqIElmIGV2ZXJ5dGhpbmcgbG9va3MgT0ssIHRlbGwgdGhlIHVz ZXIgdGhpcywgdW5sZXNzIHdlIHdlcmUgYXNrZWQgdG8KQEAgLTExODgsNyArMTE4OCw3IEBAIHZl cmlmeV9maWxlX2NoZWNrc3VtKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQsIG1hbmlmZXN0X2Zp bGUgKm0sCiAgKi8KIHN0YXRpYyB2b2lkCiBwYXJzZV9yZXF1aXJlZF93YWwodmVyaWZpZXJfY29u dGV4dCAqY29udGV4dCwgY2hhciAqcGdfd2FsZHVtcF9wYXRoLAotCQkJCSAgIGNoYXIgKndhbF9k aXJlY3RvcnkpCisJCQkJICAgY2hhciAqd2FsX3BhdGgpCiB7CiAJbWFuaWZlc3RfZGF0YSAqbWFu aWZlc3QgPSBjb250ZXh0LT5tYW5pZmVzdDsKIAltYW5pZmVzdF93YWxfcmFuZ2UgKnRoaXNfd2Fs X3JhbmdlID0gbWFuaWZlc3QtPmZpcnN0X3dhbF9yYW5nZTsKQEAgLTExOTgsNyArMTE5OCw3IEBA IHBhcnNlX3JlcXVpcmVkX3dhbCh2ZXJpZmllcl9jb250ZXh0ICpjb250ZXh0LCBjaGFyICpwZ193 YWxkdW1wX3BhdGgsCiAJCWNoYXIJICAgKnBnX3dhbGR1bXBfY21kOwogCiAJCXBnX3dhbGR1bXBf Y21kID0gcHNwcmludGYoIlwiJXNcIiAtLXF1aWV0IC0tcGF0aD1cIiVzXCIgLS10aW1lbGluZT0l dSAtLXN0YXJ0PSVYLyUwOFggLS1lbmQ9JVgvJTA4WFxuIiwKLQkJCQkJCQkJICBwZ193YWxkdW1w X3BhdGgsIHdhbF9kaXJlY3RvcnksIHRoaXNfd2FsX3JhbmdlLT50bGksCisJCQkJCQkJCSAgcGdf d2FsZHVtcF9wYXRoLCB3YWxfcGF0aCwgdGhpc193YWxfcmFuZ2UtPnRsaSwKIAkJCQkJCQkJICBM U05fRk9STUFUX0FSR1ModGhpc193YWxfcmFuZ2UtPnN0YXJ0X2xzbiksCiAJCQkJCQkJCSAgTFNO X0ZPUk1BVF9BUkdTKHRoaXNfd2FsX3JhbmdlLT5lbmRfbHNuKSk7CiAJCWZmbHVzaChOVUxMKTsK QEAgLTEzNjYsNyArMTM2Niw3IEBAIHVzYWdlKHZvaWQpCiAJcHJpbnRmKF8oIiAgLVAsIC0tcHJv Z3Jlc3MgICAgICAgICAgICAgIHNob3cgcHJvZ3Jlc3MgaW5mb3JtYXRpb25cbiIpKTsKIAlwcmlu dGYoXygiICAtcSwgLS1xdWlldCAgICAgICAgICAgICAgICAgZG8gbm90IHByaW50IGFueSBvdXRw dXQsIGV4Y2VwdCBmb3IgZXJyb3JzXG4iKSk7CiAJcHJpbnRmKF8oIiAgLXMsIC0tc2tpcC1jaGVj a3N1bXMgICAgICAgIHNraXAgY2hlY2tzdW0gdmVyaWZpY2F0aW9uXG4iKSk7Ci0JcHJpbnRmKF8o IiAgLXcsIC0td2FsLWRpcmVjdG9yeT1QQVRIICAgIHVzZSBzcGVjaWZpZWQgcGF0aCBmb3IgV0FM IGZpbGVzXG4iKSk7CisJcHJpbnRmKF8oIiAgLXcsIC0td2FsLXBhdGg9UEFUSCAgICAgICAgIHVz ZSBzcGVjaWZpZWQgcGF0aCBmb3IgV0FMIGZpbGVzXG4iKSk7CiAJcHJpbnRmKF8oIiAgLVYsIC0t dmVyc2lvbiAgICAgICAgICAgICAgIG91dHB1dCB2ZXJzaW9uIGluZm9ybWF0aW9uLCB0aGVuIGV4 aXRcbiIpKTsKIAlwcmludGYoXygiICAtPywgLS1oZWxwICAgICAgICAgICAgICAgICAgc2hvdyB0 aGlzIGhlbHAsIHRoZW4gZXhpdFxuIikpOwogCXByaW50ZihfKCJcblJlcG9ydCBidWdzIHRvIDwl cz4uXG4iKSwgUEFDS0FHRV9CVUdSRVBPUlQpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ192ZXJp ZnliYWNrdXAvdC8wMDdfd2FsLnBsIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDdfd2Fs LnBsCmluZGV4IDc5MDg3YTFmNmJlLi44YWQyMjM0NDUzZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w Z192ZXJpZnliYWNrdXAvdC8wMDdfd2FsLnBsCisrKyBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3Vw L3QvMDA3X3dhbC5wbApAQCAtNDIsMTAgKzQyLDEwIEBAIGNvbW1hbmRfb2soWyAncGdfdmVyaWZ5 YmFja3VwJywgJy0tbm8tcGFyc2Utd2FsJywgJGJhY2t1cF9wYXRoIF0sCiBjb21tYW5kX29rKAog CVsKIAkJJ3BnX3ZlcmlmeWJhY2t1cCcsCi0JCSctLXdhbC1kaXJlY3RvcnknID0+ICRyZWxvY2F0 ZWRfcGdfd2FsLAorCQknLS13YWwtcGF0aCcgPT4gJHJlbG9jYXRlZF9wZ193YWwsCiAJCSRiYWNr dXBfcGF0aAogCV0sCi0JJy0td2FsLWRpcmVjdG9yeSBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IFdB TCBkaXJlY3RvcnknKTsKKwknLS13YWwtcGF0aCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IFdBTCBk aXJlY3RvcnknKTsKIAogIyBNb3ZlIGRpcmVjdG9yeSBiYWNrIHRvIG9yaWdpbmFsIGxvY2F0aW9u LgogcmVuYW1lKCRyZWxvY2F0ZWRfcGdfd2FsLCAkb3JpZ2luYWxfcGdfd2FsKSB8fCBkaWUgInJl bmFtZSBwZ193YWwgYmFjazogJCEiOwotLSAKMi40Ny4xCgo= --0000000000007cf0ac064c324baf Content-Type: application/x-patch; name="v15-0010-pg_verifybackup-Enabled-WAL-parsing-for-tar-form.patch" Content-Disposition: attachment; filename="v15-0010-pg_verifybackup-Enabled-WAL-parsing-for-tar-form.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmc0zo1e9 RnJvbSA3MmNkMTE0ZjE2ODIzYzNmYWVlNWFkZWJkYjE2MDU4MzNjODM1NzQzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFR1 ZSwgMjUgTm92IDIwMjUgMTc6MzQ6MjYgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxNSAxMC8xMV0g cGdfdmVyaWZ5YmFja3VwOiBFbmFibGVkIFdBTCBwYXJzaW5nIGZvciB0YXItZm9ybWF0CiBiYWNr dXAKCk5vdyB0aGF0IHBnX3dhbGR1bXAgc3VwcG9ydHMgZGVjb2RpbmcgZnJvbSB0YXIgYXJjaGl2 ZXMsIHdlIHNob3VsZApsZXZlcmFnZSB0aGlzIGZ1bmN0aW9uYWxpdHkgdG8gcmVtb3ZlIHRoZSBw cmV2aW91cyByZXN0cmljdGlvbiBvbiBXQUwKcGFyc2luZyBmb3IgdGFyLWJhY2tlZCBmb3JtYXRz LgotLS0KIGRvYy9zcmMvc2dtbC9yZWYvcGdfdmVyaWZ5YmFja3VwLnNnbWwgICAgICAgICB8IDEy ICsrLS0KIHNyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3BnX3ZlcmlmeWJhY2t1cC5jICAgICB8IDY2 ICsrKysrKysrKysrKystLS0tLS0KIHNyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDAyX2FsZ29y aXRobS5wbCAgICB8ICA0IC0tCiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAwM19jb3JydXB0 aW9uLnBsICAgfCAgNCArLQogc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDdfd2FsLnBsICAg ICAgICAgIHwgMTYgKysrKysKIHNyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDA4X3VudGFyLnBs ICAgICAgICB8ICA1ICstCiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAxMF9jbGllbnRfdW50 YXIucGwgfCAgNSArLQogNyBmaWxlcyBjaGFuZ2VkLCA3MCBpbnNlcnRpb25zKCspLCA0MiBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX3ZlcmlmeWJhY2t1cC5z Z21sIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ192ZXJpZnliYWNrdXAuc2dtbAppbmRleCBlOWI4YmZk NTFiMS4uMTY5NWNmZTkxYzggMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfdmVyaWZ5 YmFja3VwLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ192ZXJpZnliYWNrdXAuc2dtbApA QCAtMzYsMTAgKzM2LDcgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAgICA8bGl0ZXJhbD5i YWNrdXBfbWFuaWZlc3Q8L2xpdGVyYWw+IGdlbmVyYXRlZCBieSB0aGUgc2VydmVyIGF0IHRoZSB0 aW1lCiAgICBvZiB0aGUgYmFja3VwLiBUaGUgYmFja3VwIG1heSBiZSBzdG9yZWQgZWl0aGVyIGlu IHRoZSAicGxhaW4iIG9yIHRoZSAidGFyIgogICAgZm9ybWF0OyB0aGlzIGluY2x1ZGVzIHRhci1m b3JtYXQgYmFja3VwcyBjb21wcmVzc2VkIHdpdGggYW55IGFsZ29yaXRobQotICAgc3VwcG9ydGVk IGJ5IDxhcHBsaWNhdGlvbj5wZ19iYXNlYmFja3VwPC9hcHBsaWNhdGlvbj4uIEhvd2V2ZXIsIGF0 IHByZXNlbnQsCi0gICA8bGl0ZXJhbD5XQUw8L2xpdGVyYWw+IHZlcmlmaWNhdGlvbiBpcyBzdXBw b3J0ZWQgb25seSBmb3IgcGxhaW4tZm9ybWF0Ci0gICBiYWNrdXBzLiBUaGVyZWZvcmUsIGlmIHRo ZSBiYWNrdXAgaXMgc3RvcmVkIGluIHRhci1mb3JtYXQsIHRoZQotICAgPGxpdGVyYWw+LW4sIC0t bm8tcGFyc2Utd2FsPC9saXRlcmFsPiBvcHRpb24gc2hvdWxkIGJlIHVzZWQuCisgICBzdXBwb3J0 ZWQgYnkgPGFwcGxpY2F0aW9uPnBnX2Jhc2ViYWNrdXA8L2FwcGxpY2F0aW9uPi4KICAgPC9wYXJh PgogCiAgIDxwYXJhPgpAQCAtMjY0LDkgKzI2MSwxMCBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRp b24KICAgICAgIDx0ZXJtPjxvcHRpb24+LS13YWwtcGF0aD08cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cGF0aDwvcmVwbGFjZWFibGU+PC9vcHRpb24+PC90ZXJtPgogICAgICAgPGxpc3Rp dGVtPgogICAgICAgIDxwYXJhPgotICAgICAgICBUcnkgdG8gcGFyc2UgV0FMIGZpbGVzIHN0b3Jl ZCBpbiB0aGUgc3BlY2lmaWVkIGRpcmVjdG9yeSwgcmF0aGVyIHRoYW4KLSAgICAgICAgaW4gPGxp dGVyYWw+cGdfd2FsPC9saXRlcmFsPi4gVGhpcyBtYXkgYmUgdXNlZnVsIGlmIHRoZSBiYWNrdXAg aXMKLSAgICAgICAgc3RvcmVkIGluIGEgc2VwYXJhdGUgbG9jYXRpb24gZnJvbSB0aGUgV0FMIGFy Y2hpdmUuCisgICAgICAgIFRyeSB0byBwYXJzZSBXQUwgZmlsZXMgc3RvcmVkIGluIHRoZSBzcGVj aWZpZWQgZGlyZWN0b3J5IG9yIHRhcgorICAgICAgICBhcmNoaXZlLCByYXRoZXIgdGhhbiBpbiA8 bGl0ZXJhbD5wZ193YWw8L2xpdGVyYWw+LiBUaGlzIG1heSBiZQorICAgICAgICB1c2VmdWwgaWYg dGhlIGJhY2t1cCBpcyBzdG9yZWQgaW4gYSBzZXBhcmF0ZSBsb2NhdGlvbiBmcm9tIHRoZSBXQUwK KyAgICAgICAgYXJjaGl2ZS4KICAgICAgICA8L3BhcmE+CiAgICAgICA8L2xpc3RpdGVtPgogICAg ICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3Bn X3ZlcmlmeWJhY2t1cC5jIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvcGdfdmVyaWZ5YmFja3Vw LmMKaW5kZXggMzQ1MjA1NDZiYzMuLjkzNWFiOGZhZmE4IDEwMDY0NAotLS0gYS9zcmMvYmluL3Bn X3ZlcmlmeWJhY2t1cC9wZ192ZXJpZnliYWNrdXAuYworKysgYi9zcmMvYmluL3BnX3ZlcmlmeWJh Y2t1cC9wZ192ZXJpZnliYWNrdXAuYwpAQCAtNzQsNyArNzQsOSBAQCBwZ19ub3JldHVybiBzdGF0 aWMgdm9pZCByZXBvcnRfbWFuaWZlc3RfZXJyb3IoSnNvbk1hbmlmZXN0UGFyc2VDb250ZXh0ICpj b250ZXh0LAogCQkJCQkJCQkJCQkgIGNvbnN0IGNoYXIgKmZtdCwuLi4pCiAJCQlwZ19hdHRyaWJ1 dGVfcHJpbnRmKDIsIDMpOwogCi1zdGF0aWMgdm9pZCB2ZXJpZnlfdGFyX2JhY2t1cCh2ZXJpZmll cl9jb250ZXh0ICpjb250ZXh0LCBESVIgKmRpcik7CitzdGF0aWMgdm9pZCB2ZXJpZnlfdGFyX2Jh Y2t1cCh2ZXJpZmllcl9jb250ZXh0ICpjb250ZXh0LCBESVIgKmRpciwKKwkJCQkJCQkgIGNoYXIg KipiYXNlX2FyY2hpdmVfcGF0aCwKKwkJCQkJCQkgIGNoYXIgKip3YWxfYXJjaGl2ZV9wYXRoKTsK IHN0YXRpYyB2b2lkIHZlcmlmeV9wbGFpbl9iYWNrdXBfZGlyZWN0b3J5KHZlcmlmaWVyX2NvbnRl eHQgKmNvbnRleHQsCiAJCQkJCQkJCQkJICBjaGFyICpyZWxwYXRoLCBjaGFyICpmdWxscGF0aCwK IAkJCQkJCQkJCQkgIERJUiAqZGlyKTsKQEAgLTgzLDcgKzg1LDkgQEAgc3RhdGljIHZvaWQgdmVy aWZ5X3BsYWluX2JhY2t1cF9maWxlKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQsIGNoYXIgKnJl bHBhdGgsCiBzdGF0aWMgdm9pZCB2ZXJpZnlfY29udHJvbF9maWxlKGNvbnN0IGNoYXIgKmNvbnRy b2xwYXRoLAogCQkJCQkJCQl1aW50NjQgbWFuaWZlc3Rfc3lzdGVtX2lkZW50aWZpZXIpOwogc3Rh dGljIHZvaWQgcHJlY2hlY2tfdGFyX2JhY2t1cF9maWxlKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRl eHQsIGNoYXIgKnJlbHBhdGgsCi0JCQkJCQkJCQkgY2hhciAqZnVsbHBhdGgsIFNpbXBsZVB0ckxp c3QgKnRhcmZpbGVzKTsKKwkJCQkJCQkJCSBjaGFyICpmdWxscGF0aCwgU2ltcGxlUHRyTGlzdCAq dGFyZmlsZXMsCisJCQkJCQkJCQkgY2hhciAqKmJhc2VfYXJjaGl2ZV9wYXRoLAorCQkJCQkJCQkJ IGNoYXIgKip3YWxfYXJjaGl2ZV9wYXRoKTsKIHN0YXRpYyB2b2lkIHZlcmlmeV90YXJfZmlsZSh2 ZXJpZmllcl9jb250ZXh0ICpjb250ZXh0LCBjaGFyICpyZWxwYXRoLAogCQkJCQkJCWNoYXIgKmZ1 bGxwYXRoLCBhc3RyZWFtZXIgKnN0cmVhbWVyKTsKIHN0YXRpYyB2b2lkIHJlcG9ydF9leHRyYV9i YWNrdXBfZmlsZXModmVyaWZpZXJfY29udGV4dCAqY29udGV4dCk7CkBAIC0xMzYsNiArMTQwLDgg QEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJYm9vbAkJbm9fcGFyc2Vfd2FsID0gZmFs c2U7CiAJYm9vbAkJcXVpZXQgPSBmYWxzZTsKIAljaGFyCSAgICp3YWxfcGF0aCA9IE5VTEw7CisJ Y2hhcgkgICAqYmFzZV9hcmNoaXZlX3BhdGggPSBOVUxMOworCWNoYXIJICAgKndhbF9hcmNoaXZl X3BhdGggPSBOVUxMOwogCWNoYXIJICAgKnBnX3dhbGR1bXBfcGF0aCA9IE5VTEw7CiAJRElSCQkg ICAqZGlyOwogCkBAIC0zMjcsMTcgKzMzMyw2IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2 KQogCQlwZnJlZShwYXRoKTsKIAl9CiAKLQkvKgotCSAqIFhYWDogSW4gdGhlIGZ1dHVyZSwgd2Ug c2hvdWxkIGNvbnNpZGVyIGVuaGFuY2luZyBwZ193YWxkdW1wIHRvIHJlYWQgV0FMCi0JICogZmls ZXMgZnJvbSBhbiBhcmNoaXZlLgotCSAqLwotCWlmICghbm9fcGFyc2Vfd2FsICYmIGNvbnRleHQu Zm9ybWF0ID09ICd0JykKLQl7Ci0JCXBnX2xvZ19lcnJvcigicGdfd2FsZHVtcCBjYW5ub3QgcmVh ZCB0YXIgZmlsZXMiKTsKLQkJcGdfbG9nX2Vycm9yX2hpbnQoIllvdSBtdXN0IHVzZSAtbi8tLW5v LXBhcnNlLXdhbCB3aGVuIHZlcmlmeWluZyBhIHRhci1mb3JtYXQgYmFja3VwLiIpOwotCQlleGl0 KDEpOwotCX0KLQogCS8qCiAJICogUGVyZm9ybSB0aGUgYXBwcm9wcmlhdGUgdHlwZSBvZiB2ZXJp ZmljYXRpb24gYXBwcm9wcmlhdGUgYmFzZWQgb24gdGhlCiAJICogYmFja3VwIGZvcm1hdC4gVGhp cyB3aWxsIGNsb3NlICdkaXInLgpAQCAtMzQ2LDcgKzM0MSw3IEBAIG1haW4oaW50IGFyZ2MsIGNo YXIgKiphcmd2KQogCQl2ZXJpZnlfcGxhaW5fYmFja3VwX2RpcmVjdG9yeSgmY29udGV4dCwgTlVM TCwgY29udGV4dC5iYWNrdXBfZGlyZWN0b3J5LAogCQkJCQkJCQkJICBkaXIpOwogCWVsc2UKLQkJ dmVyaWZ5X3Rhcl9iYWNrdXAoJmNvbnRleHQsIGRpcik7CisJCXZlcmlmeV90YXJfYmFja3VwKCZj b250ZXh0LCBkaXIsICZiYXNlX2FyY2hpdmVfcGF0aCwgJndhbF9hcmNoaXZlX3BhdGgpOwogCiAJ LyoKIAkgKiBUaGUgIm1hdGNoZWQiIGZsYWcgc2hvdWxkIG5vdyBiZSBzZXQgb24gZXZlcnkgZW50 cnkgaW4gdGhlIGhhc2ggdGFibGUuCkBAIC0zNjQsOSArMzU5LDI4IEBAIG1haW4oaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQogCWlmIChjb250ZXh0LmZvcm1hdCA9PSAncCcgJiYgIWNvbnRleHQuc2tp cF9jaGVja3N1bXMpCiAJCXZlcmlmeV9iYWNrdXBfY2hlY2tzdW1zKCZjb250ZXh0KTsKIAotCS8q IEJ5IGRlZmF1bHQsIGxvb2sgZm9yIHRoZSBXQUwgaW4gdGhlIGJhY2t1cCBkaXJlY3RvcnksIHRv by4gKi8KKwkvKgorCSAqIEJ5IGRlZmF1bHQsIFdBTCBmaWxlcyBhcmUgZXhwZWN0ZWQgdG8gYmUg Zm91bmQgaW4gdGhlIGJhY2t1cCBkaXJlY3RvcnkKKwkgKiBmb3IgcGxhaW4tZm9ybWF0IGJhY2t1 cHMuIEluIHRoZSBjYXNlIG9mIHRhci1mb3JtYXQgYmFja3VwcywgaWYgYQorCSAqIHNlcGFyYXRl IFdBTCBhcmNoaXZlIGlzIG5vdCBmb3VuZCwgdGhlIFdBTCBmaWxlcyBhcmUgbW9zdCBsaWtlbHkK KwkgKiBpbmNsdWRlZCB3aXRoaW4gdGhlIG1haW4gZGF0YSBkaXJlY3RvcnkgYXJjaGl2ZS4KKwkg Ki8KIAlpZiAod2FsX3BhdGggPT0gTlVMTCkKLQkJd2FsX3BhdGggPSBwc3ByaW50ZigiJXMvcGdf d2FsIiwgY29udGV4dC5iYWNrdXBfZGlyZWN0b3J5KTsKKwl7CisJCWlmIChjb250ZXh0LmZvcm1h dCA9PSAncCcpCisJCQl3YWxfcGF0aCA9IHBzcHJpbnRmKCIlcy9wZ193YWwiLCBjb250ZXh0LmJh Y2t1cF9kaXJlY3RvcnkpOworCQllbHNlIGlmICh3YWxfYXJjaGl2ZV9wYXRoKQorCQkJd2FsX3Bh dGggPSB3YWxfYXJjaGl2ZV9wYXRoOworCQllbHNlIGlmIChiYXNlX2FyY2hpdmVfcGF0aCkKKwkJ CXdhbF9wYXRoID0gYmFzZV9hcmNoaXZlX3BhdGg7CisJCWVsc2UKKwkJeworCQkJcGdfbG9nX2Vy cm9yKCJXQUwgYXJjaGl2ZSBub3QgZm91bmQiKTsKKwkJCXBnX2xvZ19lcnJvcl9oaW50KCJTcGVj aWZ5IHRoZSBjb3JyZWN0IHBhdGggdXNpbmcgdGhlIG9wdGlvbiAtdy8tLXdhbC1wYXRoLiAgIgor CQkJCQkJCSAgIk9yIHlvdSBtdXN0IHVzZSAtbi8tLW5vLXBhcnNlLXdhbCB3aGVuIHZlcmlmeWlu ZyBhIHRhci1mb3JtYXQgYmFja3VwLiIpOworCQkJZXhpdCgxKTsKKwkJfQorCX0KIAogCS8qCiAJ ICogVHJ5IHRvIHBhcnNlIHRoZSByZXF1aXJlZCByYW5nZXMgb2YgV0FMIHJlY29yZHMsIHVubGVz cyB3ZSB3ZXJlIHRvbGQKQEAgLTc4Nyw3ICs4MDEsOCBAQCB2ZXJpZnlfY29udHJvbF9maWxlKGNv bnN0IGNoYXIgKmNvbnRyb2xwYXRoLCB1aW50NjQgbWFuaWZlc3Rfc3lzdGVtX2lkZW50aWZpZXIp CiAgKiBjbG9zZSB3aGVuIHdlJ3JlIGRvbmUgd2l0aCBpdC4KICAqLwogc3RhdGljIHZvaWQKLXZl cmlmeV90YXJfYmFja3VwKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQsIERJUiAqZGlyKQordmVy aWZ5X3Rhcl9iYWNrdXAodmVyaWZpZXJfY29udGV4dCAqY29udGV4dCwgRElSICpkaXIsIGNoYXIg KipiYXNlX2FyY2hpdmVfcGF0aCwKKwkJCQkgIGNoYXIgKip3YWxfYXJjaGl2ZV9wYXRoKQogewog CXN0cnVjdCBkaXJlbnQgKmRpcmVudDsKIAlTaW1wbGVQdHJMaXN0IHRhcmZpbGVzID0ge05VTEws IE5VTEx9OwpAQCAtODE2LDcgKzgzMSw4IEBAIHZlcmlmeV90YXJfYmFja3VwKHZlcmlmaWVyX2Nv bnRleHQgKmNvbnRleHQsIERJUiAqZGlyKQogCQkJY2hhcgkgICAqZnVsbHBhdGg7CiAKIAkJCWZ1 bGxwYXRoID0gcHNwcmludGYoIiVzLyVzIiwgY29udGV4dC0+YmFja3VwX2RpcmVjdG9yeSwgZmls ZW5hbWUpOwotCQkJcHJlY2hlY2tfdGFyX2JhY2t1cF9maWxlKGNvbnRleHQsIGZpbGVuYW1lLCBm dWxscGF0aCwgJnRhcmZpbGVzKTsKKwkJCXByZWNoZWNrX3Rhcl9iYWNrdXBfZmlsZShjb250ZXh0 LCBmaWxlbmFtZSwgZnVsbHBhdGgsICZ0YXJmaWxlcywKKwkJCQkJCQkJCSBiYXNlX2FyY2hpdmVf cGF0aCwgd2FsX2FyY2hpdmVfcGF0aCk7CiAJCQlwZnJlZShmdWxscGF0aCk7CiAJCX0KIAl9CkBA IC04NzUsMTEgKzg5MSwxMyBAQCB2ZXJpZnlfdGFyX2JhY2t1cCh2ZXJpZmllcl9jb250ZXh0ICpj b250ZXh0LCBESVIgKmRpcikKICAqCiAgKiBUaGUgYXJndW1lbnRzIHRvIHRoaXMgZnVuY3Rpb24g YXJlIG1vc3RseSB0aGUgc2FtZSBhcyB0aGUKICAqIHZlcmlmeV9wbGFpbl9iYWNrdXBfZmlsZS4g VGhlIGFkZGl0aW9uYWwgYXJndW1lbnQgb3V0cHV0cyBhIGxpc3Qgb2YgdmFsaWQKLSAqIHRhciBm aWxlcy4KKyAqIHRhciBmaWxlcywgYWxvbmcgd2l0aCB0aGUgZnVsbCBwYXRocyB0byB0aGUgbWFp biBhcmNoaXZlIGFuZCB0aGUgV0FMCisgKiBkaXJlY3RvcnkgYXJjaGl2ZS4KICAqLwogc3RhdGlj IHZvaWQKIHByZWNoZWNrX3Rhcl9iYWNrdXBfZmlsZSh2ZXJpZmllcl9jb250ZXh0ICpjb250ZXh0 LCBjaGFyICpyZWxwYXRoLAotCQkJCQkJIGNoYXIgKmZ1bGxwYXRoLCBTaW1wbGVQdHJMaXN0ICp0 YXJmaWxlcykKKwkJCQkJCSBjaGFyICpmdWxscGF0aCwgU2ltcGxlUHRyTGlzdCAqdGFyZmlsZXMs CisJCQkJCQkgY2hhciAqKmJhc2VfYXJjaGl2ZV9wYXRoLCBjaGFyICoqd2FsX2FyY2hpdmVfcGF0 aCkKIHsKIAlzdHJ1Y3Qgc3RhdCBzYjsKIAlPaWQJCQl0YmxzcGNfb2lkID0gSW52YWxpZE9pZDsK QEAgLTkxOCw5ICs5MzYsMTcgQEAgcHJlY2hlY2tfdGFyX2JhY2t1cF9maWxlKHZlcmlmaWVyX2Nv bnRleHQgKmNvbnRleHQsIGNoYXIgKnJlbHBhdGgsCiAJICogZXh0ZW5zaW9uIHN1Y2ggYXMgLmd6 LCAubHo0LCBvciAuenN0LgogCSAqLwogCWlmIChzdHJuY21wKCJiYXNlIiwgcmVscGF0aCwgNCkg PT0gMCkKKwl7CiAJCXN1ZmZpeCA9IHJlbHBhdGggKyA0OworCisJCSpiYXNlX2FyY2hpdmVfcGF0 aCA9IHBzdHJkdXAoZnVsbHBhdGgpOworCX0KIAllbHNlIGlmIChzdHJuY21wKCJwZ193YWwiLCBy ZWxwYXRoLCA2KSA9PSAwKQorCXsKIAkJc3VmZml4ID0gcmVscGF0aCArIDY7CisKKwkJKndhbF9h cmNoaXZlX3BhdGggPSBwc3RyZHVwKGZ1bGxwYXRoKTsKKwl9CiAJZWxzZQogCXsKIAkJLyogRXhw ZWN0ZWQgYSA8dGFibGVzcGFjZW9pZD4udGFyIGZpbGUgaGVyZS4gKi8KZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDAyX2FsZ29yaXRobS5wbCBiL3NyYy9iaW4vcGdfdmVy aWZ5YmFja3VwL3QvMDAyX2FsZ29yaXRobS5wbAppbmRleCAwNTU2MTkxZWM5ZC4uZWRjNTE1ZDU5 MDQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDAyX2FsZ29yaXRobS5w bAorKysgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAwMl9hbGdvcml0aG0ucGwKQEAgLTMw LDEwICszMCw2IEBAIHN1YiB0ZXN0X2NoZWNrc3VtcwogCXsKIAkJIyBBZGQgc3dpdGNoIHRvIGdl dCBhIHRhci1mb3JtYXQgYmFja3VwCiAJCXB1c2ggQGJhY2t1cCwgKCctLWZvcm1hdCcgPT4gJ3Rh cicpOwotCi0JCSMgQWRkIHN3aXRjaCB0byBza2lwIFdBTCB2ZXJpZmljYXRpb24sIHdoaWNoIGlz IG5vdCB5ZXQgc3VwcG9ydGVkIGZvcgotCQkjIHRhci1mb3JtYXQgYmFja3VwcwotCQlwdXNoIEB2 ZXJpZnksICgnLS1uby1wYXJzZS13YWwnKTsKIAl9CiAKIAkjIEEgYmFja3VwIHdpdGggYSBib2d1 cyBhbGdvcml0aG0gc2hvdWxkIGZhaWwuCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3ZlcmlmeWJh Y2t1cC90LzAwM19jb3JydXB0aW9uLnBsIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDNf Y29ycnVwdGlvbi5wbAppbmRleCBiMWQ2NWI4YWEwZi4uODgyZDc1ZDlkYzIgMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDAzX2NvcnJ1cHRpb24ucGwKKysrIGIvc3JjL2Jp bi9wZ192ZXJpZnliYWNrdXAvdC8wMDNfY29ycnVwdGlvbi5wbApAQCAtMTkzLDEwICsxOTMsOCBA QCBmb3IgbXkgJHNjZW5hcmlvIChAc2NlbmFyaW8pCiAJCQljb21tYW5kX29rKFsgJHRhciwgJy1j ZicgPT4gIiR0YXJfYmFja3VwX3BhdGgvYmFzZS50YXIiLCAnLicgXSk7CiAJCQljaGRpcigkY3dk KSB8fCBkaWUgImNoZGlyOiAkISI7CiAKLQkJCSMgTm93IGNoZWNrIHRoYXQgdGhlIGJhY2t1cCBu byBsb25nZXIgdmVyaWZpZXMuIFdlIG11c3QgdXNlIC1uCi0JCQkjIGhlcmUsIGJlY2F1c2UgcGdf d2FsZHVtcCBjYW4ndCB5ZXQgcmVhZCBXQUwgZnJvbSBhIHRhcmZpbGUuCiAJCQljb21tYW5kX2Zh aWxzX2xpa2UoCi0JCQkJWyAncGdfdmVyaWZ5YmFja3VwJywgJy0tbm8tcGFyc2Utd2FsJywgJHRh cl9iYWNrdXBfcGF0aCBdLAorCQkJCVsgJ3BnX3ZlcmlmeWJhY2t1cCcsICR0YXJfYmFja3VwX3Bh dGggXSwKIAkJCQkkc2NlbmFyaW8tPnsnZmFpbHNfbGlrZSd9LAogCQkJCSJjb3JydXB0IGJhY2t1 cCBmYWlscyB2ZXJpZmljYXRpb246ICRuYW1lIik7CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf dmVyaWZ5YmFja3VwL3QvMDA3X3dhbC5wbCBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDA3 X3dhbC5wbAppbmRleCA4YWQyMjM0NDUzZC4uMGUwMzc3YmZhY2MgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcGdfdmVyaWZ5YmFja3VwL3QvMDA3X3dhbC5wbAorKysgYi9zcmMvYmluL3BnX3ZlcmlmeWJh Y2t1cC90LzAwN193YWwucGwKQEAgLTkwLDQgKzkwLDIwIEBAIGNvbW1hbmRfb2soCiAJWyAncGdf dmVyaWZ5YmFja3VwJywgJGJhY2t1cF9wYXRoMiBdLAogCSd2YWxpZCBiYXNlIGJhY2t1cCB3aXRo IHRpbWVsaW5lID4gMScpOwogCisjIFRlc3QgV0FMIHZlcmlmaWNhdGlvbiBmb3IgYSB0YXItZm9y bWF0IGJhY2t1cCB3aXRoIGEgc2VwYXJhdGUgcGdfd2FsLnRhciwKKyMgYXMgcHJvZHVjZWQgYnkg cGdfYmFzZWJhY2t1cCAtLWZvcm1hdD10YXIgLS13YWwtbWV0aG9kPXN0cmVhbS4KK215ICRiYWNr dXBfcGF0aDMgPSAkcHJpbWFyeS0+YmFja3VwX2RpciAuICcvdGVzdF90YXJfd2FsJzsKKyRwcmlt YXJ5LT5jb21tYW5kX29rKAorCVsKKwkJJ3BnX2Jhc2ViYWNrdXAnLAorCQknLS1wZ2RhdGEnID0+ ICRiYWNrdXBfcGF0aDMsCisJCSctLW5vLXN5bmMnLAorCQknLS1mb3JtYXQnID0+ICd0YXInLAor CQknLS1jaGVja3BvaW50JyA9PiAnZmFzdCcKKwldLAorCSJ0YXIgYmFja3VwIHdpdGggc2VwYXJh dGUgcGdfd2FsLnRhciIpOworY29tbWFuZF9vaygKKwlbICdwZ192ZXJpZnliYWNrdXAnLCAkYmFj a3VwX3BhdGgzIF0sCisJJ1dBTCB2ZXJpZmljYXRpb24gc3VjY2VlZHMgd2l0aCBzZXBhcmF0ZSBw Z193YWwudGFyJyk7CisKIGRvbmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ192 ZXJpZnliYWNrdXAvdC8wMDhfdW50YXIucGwgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAw OF91bnRhci5wbAppbmRleCBhZTY3YWU4NWEzMS4uMTYxYzA4YzE5MGQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDA4X3VudGFyLnBsCisrKyBiL3NyYy9iaW4vcGdfdmVy aWZ5YmFja3VwL3QvMDA4X3VudGFyLnBsCkBAIC00Nyw3ICs0Nyw2IEBAIG15ICR0c29pZCA9ICRw cmltYXJ5LT5zYWZlX3BzcWwoCiAJCVNFTEVDVCBvaWQgRlJPTSBwZ190YWJsZXNwYWNlIFdIRVJF IHNwY25hbWUgPSAncmVncmVzc190czEnKSk7CiAKIG15ICRiYWNrdXBfcGF0aCA9ICRwcmltYXJ5 LT5iYWNrdXBfZGlyIC4gJy9zZXJ2ZXItYmFja3VwJzsKLW15ICRleHRyYWN0X3BhdGggPSAkcHJp bWFyeS0+YmFja3VwX2RpciAuICcvZXh0cmFjdGVkLWJhY2t1cCc7CiAKIG15IEB0ZXN0X2NvbmZp Z3VyYXRpb24gPSAoCiAJewpAQCAtMTIzLDE0ICsxMjIsMTIgQEAgZm9yIG15ICR0YyAoQHRlc3Rf Y29uZmlndXJhdGlvbikKIAkJIyBWZXJpZnkgdGFyIGJhY2t1cC4KIAkJJHByaW1hcnktPmNvbW1h bmRfb2soCiAJCQlbCi0JCQkJJ3BnX3ZlcmlmeWJhY2t1cCcsICctLW5vLXBhcnNlLXdhbCcsCi0J CQkJJy0tZXhpdC1vbi1lcnJvcicsICRiYWNrdXBfcGF0aCwKKwkJCQkncGdfdmVyaWZ5YmFja3Vw JywgJy0tZXhpdC1vbi1lcnJvcicsICRiYWNrdXBfcGF0aCwKIAkJCV0sCiAJCQkidmVyaWZ5IGJh Y2t1cCwgY29tcHJlc3Npb24gJG1ldGhvZCIpOwogCiAJCSMgQ2xlYW51cC4KIAkJcm10cmVlKCRi YWNrdXBfcGF0aCk7Ci0JCXJtdHJlZSgkZXh0cmFjdF9wYXRoKTsKIAl9CiB9CiAKZGlmZiAtLWdp dCBhL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDEwX2NsaWVudF91bnRhci5wbCBiL3NyYy9i aW4vcGdfdmVyaWZ5YmFja3VwL3QvMDEwX2NsaWVudF91bnRhci5wbAppbmRleCAxYWM3YjVkYjc1 YS4uOTY3MGZiZTRmZGEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDEw X2NsaWVudF91bnRhci5wbAorKysgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAxMF9jbGll bnRfdW50YXIucGwKQEAgLTMyLDcgKzMyLDYgQEAgcHJpbnQgJGpmICRqdW5rX2RhdGE7CiBjbG9z ZSAkamY7CiAKIG15ICRiYWNrdXBfcGF0aCA9ICRwcmltYXJ5LT5iYWNrdXBfZGlyIC4gJy9jbGll bnQtYmFja3VwJzsKLW15ICRleHRyYWN0X3BhdGggPSAkcHJpbWFyeS0+YmFja3VwX2RpciAuICcv ZXh0cmFjdGVkLWJhY2t1cCc7CiAKIG15IEB0ZXN0X2NvbmZpZ3VyYXRpb24gPSAoCiAJewpAQCAt MTM3LDEzICsxMzYsMTEgQEAgZm9yIG15ICR0YyAoQHRlc3RfY29uZmlndXJhdGlvbikKIAkJIyBW ZXJpZnkgdGFyIGJhY2t1cC4KIAkJJHByaW1hcnktPmNvbW1hbmRfb2soCiAJCQlbCi0JCQkJJ3Bn X3ZlcmlmeWJhY2t1cCcsICctLW5vLXBhcnNlLXdhbCcsCi0JCQkJJy0tZXhpdC1vbi1lcnJvcics ICRiYWNrdXBfcGF0aCwKKwkJCQkncGdfdmVyaWZ5YmFja3VwJywgJy0tZXhpdC1vbi1lcnJvcics ICRiYWNrdXBfcGF0aCwKIAkJCV0sCiAJCQkidmVyaWZ5IGJhY2t1cCwgY29tcHJlc3Npb24gJG1l dGhvZCIpOwogCiAJCSMgQ2xlYW51cC4KLQkJcm10cmVlKCRleHRyYWN0X3BhdGgpOwogCQlybXRy ZWUoJGJhY2t1cF9wYXRoKTsKIAl9CiB9Ci0tIAoyLjQ3LjEKCg== --0000000000007cf0ac064c324baf--