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 1vx2uY-00CIO2-26 for pgsql-hackers@arkaria.postgresql.org; Mon, 02 Mar 2026 13:02:11 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vx2tX-000nPl-2c for pgsql-hackers@arkaria.postgresql.org; Mon, 02 Mar 2026 13:01:08 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vx2tW-000nPS-38 for pgsql-hackers@lists.postgresql.org; Mon, 02 Mar 2026 13:01:07 +0000 Received: from mail-pg1-x535.google.com ([2607:f8b0:4864:20::535]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vx2tU-000000001Hu-1P4T for pgsql-hackers@lists.postgresql.org; Mon, 02 Mar 2026 13:01:06 +0000 Received: by mail-pg1-x535.google.com with SMTP id 41be03b00d2f7-c6dd5b01e14so1525321a12.0 for ; Mon, 02 Mar 2026 05:01:04 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1772456463; cv=none; d=google.com; s=arc-20240605; b=bvJ1nScxO48bR1LtwN92lThXgkWTSNlmlEwV7QiiVZv0j9/ExI4xiThhnShCd3ztv0 Qg0VJKzctMFkl5KeW/yTP6K3KpG4dxRqMpPtME7Kre4aXLYHTvJb4eHsszrEOBZCR4pq O/3s3sWSJ23fhGW7CJ2RQmMFNO5el9hbk0VBzw88Sy4i+fcATMBa+/PezrAVFP0ch0ng nb50Vm+d8fh+CdiFaFuMuwGn5q+oNyI+N69g22Py1GREDpq7xdczvsK1v+9e3NjKha+S 8P6wdIxYE14ZHKmCi+lVihLGnUtIYlj+fUPj87SuWNMC8NMdwx1FnG2dRu9SM0UzouZN S0kQ== 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=yET5Em2fN8F9pY61fDc+bLBH0YsiCKnj6bOfQWvQZfw=; fh=FpPPwSjxOFFVZRaRci6943cpFRIk84PL90woIhnyvls=; b=Jd86Z1ddHGYZOgzY+MimxeGqonTUzHJcQRgkZT769mqIr5hFk0x3+3ky9mdp/07oTo 2rfz6g53vwlIYBmpFpI777LMcjUgUjR0Qt7l10o7owGbGClayl9AdALP8PIMuFBxaE7R 2cw3Wk33dyuRD4FBVbAejsC5r43gA+DMKPZjx2sgYxImFsRv+Giji8Kpev3M2DR7RILe KGljKsBJWbKPwnqg2rpzVKCx8EyMuFYi1uGr8eG06irqJRkc9s/HBT3Xt/Y+P8HhEiY5 2wn15/H9iPIs83ANSmgMZ0uqrjvvsOJbdc8ICqNWpk3+24hnD9/SKABvpF43YJeX9wh6 S3gA==; 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=1772456463; x=1773061263; 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=yET5Em2fN8F9pY61fDc+bLBH0YsiCKnj6bOfQWvQZfw=; b=Rs+mIZ1Dt+xVouJ3ZBGDiSBvZrg2pXHJPxhHstETSPnPrTcFT0iaqejk4PHDaICgO7 CJ+8LyfWus10cKjDLVD9qszXViriOiiecXPQxHPTJswo9M56BOopsk6lhmJ2lWRdWUE2 X1N5JiSoLCdJA6DLk0qkFARYPHJdxOMQsLQLObk9QPkVAl08DlUkdRWDjtnSpwJknRnb g+LLFmfCpt6J4CinLOqqNuzzWCw1b8q2THjM5+mrgsHqe+9Xeh62QT9a+KNw12OoFTZK 8ts6TV8KpgTMt2sPIEpkOj6tcbF183cd7yw9ndlIstRTJwDFhO/YqSHV7ARzJChX/XA/ rGnw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772456463; x=1773061263; 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=yET5Em2fN8F9pY61fDc+bLBH0YsiCKnj6bOfQWvQZfw=; b=uqCQqhHVksj6fw9cfcxkwpUtFzZ1GNgcrxvzuRD6atrgXuYQfa9e1f06J0BMQLEST0 /cD0criXueDUnGLUMnEVZx3z7vH1BnIKhXoIp42p5B04bRY1zR4SGjjAu1mQbJBH52rd VeLad5RZaZP9rsq2gy+YIUsG+V8bSbcztIbxtuLJOuznVemUzEbcF/N9COzbUkYwD+VI 940w3Ctw5qg3qEkV686KRgDRgX4UIFZITus/yLGU8DERKfVOmh/KNXsfRaVmaOPmVp3y B19o3nTgTR3dPTNzqKlGFqsEw5v97JCJQOW1mtbjVnici2jPJ4ixBXfe1RFiLgAke04F d/Kg== X-Forwarded-Encrypted: i=1; AJvYcCUDJuc2jSpUC/fy9R9NszZiHnhuIzB+uhlKSwEb+xcQhsa2AagKXChXihbHzxYrK085gaIJYwITI3eJJyL+@lists.postgresql.org X-Gm-Message-State: AOJu0YxipkwSJ9S2V3WPIldNu44bso2/HnOkl7j0/1ClQyFrCg/btGV8 bdoon84RK9ARPko7FAODeM5YrCYtprzPoMLg7pdpqHTgvy1McPtZrmbbY/5mwSvEHbq/aYVG8So 7GFIH97QLdQSee84ckP/sq1xDQTy0oV4= X-Gm-Gg: ATEYQzydszhvIA2+JOH2Cb9kEbYc8rzSvdFhTprp+U/mkbSUWI0989QhdJUsqTiIJWK F8hZXUbzCfC0Ov7+BWYqNg03dX1Uzd+fSySPw+/WD7wm+emE+7538OZS1W2T5Y1XYlUA/xYjxzQ 4Rq5CtfdqZosdkvWD8fF5HdFyKvrA+2lBn+rywb5eUGce9ajYMTlgHhla7Dj347iaxQvGLWyzyq zW4FreeRF6bVd9mWgZ0P+ADOg98n45LcPI2glGT8cj1N1/+Gj7t2eG4GLqJaSe0dD2UB/iSaS1T YpSeiuZrPg== X-Received: by 2002:a17:90b:2884:b0:356:4ea0:e9e2 with SMTP id 98e67ed59e1d1-35965d074afmr11074434a91.34.1772456462956; Mon, 02 Mar 2026 05:01:02 -0800 (PST) MIME-Version: 1.0 References: <731ADE6F-01C5-4996-BAEE-5851DFC3F502@gmail.com> In-Reply-To: From: Amul Sul Date: Mon, 2 Mar 2026 18:30:24 +0530 X-Gm-Features: AaiRm52ZXwp0ZJLDbe8da21J2GX6k2BMRrBk3TkKGPWA1s8LeXSHr8vodZtQjb0 Message-ID: Subject: Re: pg_waldump: support decoding of WAL inside tarfile To: Robert Haas Cc: Chao Li , Jakub Wartak , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000db2415064c0a2d81" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000db2415064c0a2d81 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Feb 18, 2026 at 12:28=E2=80=AFPM Amul Sul wrote= : > > On Tue, Feb 10, 2026 at 3:06=E2=80=AFPM Amul Sul wrot= e: > > > > On Wed, Feb 4, 2026 at 6:39=E2=80=AFPM Amul Sul wro= te: > > > > > > 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 h= ash > > > > > key, which is much more straightforward. I have rewritten > > > > > read_archive_wal_page(), and it looks much cleaner than before. T= he > > > > > 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 ar= e > > > > > still not happy with the current approach for filtering/discardin= g > > > > > irrelevant WAL segments. It isn't much different from the previou= s > > > > > version, but I have tried to keep it in a separate routine for be= tter > > > > > 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 resolve= d > > > without a 'dirty hack'. We must read the first available WAL file pag= e > > > 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.fastmail.c= om > Rebased against the latest master, fixed typos in code comments, and replaced palloc0 with palloc0_object. Regards, Amul --000000000000db2415064c0a2d81 Content-Type: application/octet-stream; name="v14-0001-Refactor-Move-tar-archive-parsing-into-a-common-.patch" Content-Disposition: attachment; filename="v14-0001-Refactor-Move-tar-archive-parsing-into-a-common-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm9659360 RnJvbSA1NGZkNzBmMmI1ZGYxMGU2ZGY1NzViNGY4NWVhZWNiOGEzYzFmZjk0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFR1 ZSwgMTcgRmViIDIwMjYgMTQ6NTE6MTEgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxNCAwMS8xMV0g 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== --000000000000db2415064c0a2d81 Content-Type: application/octet-stream; name="v14-0002-Refactor-pg_waldump-Move-some-declarations-to-ne.patch" Content-Disposition: attachment; filename="v14-0002-Refactor-pg_waldump-Move-some-declarations-to-ne.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm965cwf1 RnJvbSAxNDcwNjMwMjg3MmM3ZTM1OTM0MzQ1ZmU3NWUxZjI0YTU4NTdhZDE2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFRo dSwgMjIgSmFuIDIwMjYgMTA6Mjg6MzIgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxNCAwMi8xMV0g 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 --000000000000db2415064c0a2d81 Content-Type: application/octet-stream; name="v14-0003-Refactor-pg_waldump-Separate-logic-used-to-calcu.patch" Content-Disposition: attachment; filename="v14-0003-Refactor-pg_waldump-Separate-logic-used-to-calcu.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm965gez2 RnJvbSBlNjI2NzA3NjdhODE2NGNhOGMwYTI4OWFhZDA1ZjI0YzNlODRmOGNjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFRo dSwgMjIgSmFuIDIwMjYgMTA6Mzg6MTYgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxNCAwMy8xMV0g 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= --000000000000db2415064c0a2d81 Content-Type: application/octet-stream; name="v14-0004-Refactor-pg_waldump-Restructure-TAP-tests.patch" Content-Disposition: attachment; filename="v14-0004-Refactor-pg_waldump-Restructure-TAP-tests.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm965j6y3 RnJvbSBiZTFmYmU0NDE1NzBjMGFlZjc2NmVlZDQxMGViMzQ2NWYyNDUwYjUzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMTggRmViIDIwMjYgMTE6MDc6NTcgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxNCAwNC8xMV0g 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 --000000000000db2415064c0a2d81 Content-Type: application/octet-stream; name="v14-0005-Refactor-pg_waldump-Move-WAL-segment-size-to-XLo.patch" Content-Disposition: attachment; filename="v14-0005-Refactor-pg_waldump-Move-WAL-segment-size-to-XLo.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm965m884 RnJvbSA4YmI4ZGM2YWZlNzUzZjg4NTUyMDQyOTYxMzk2NmY4Y2VkYzJiNDc3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgNCBGZWIgMjAyNiAxNTozMTo1MSArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjE0IDA1LzExXSBS 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 --000000000000db2415064c0a2d81 Content-Type: application/octet-stream; name="v14-0006-pg_waldump-Add-support-for-archived-WAL-decoding.patch" Content-Disposition: attachment; filename="v14-0006-pg_waldump-Add-support-for-archived-WAL-decoding.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm965p4g5 RnJvbSA0MzIyZTk4MDRmOWJjZTdmOWZiMzA4NzJjNWQ2NDczNmU5MWM2NTNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFR1 ZSwgMTAgRmViIDIwMjYgMTE6NDI6MzYgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxNCAwNi8xMV0g cGdfd2FsZHVtcDogQWRkIHN1cHBvcnQgZm9yIGFyY2hpdmVkIFdBTCBkZWNvZGluZy4KCnBnX3dh bGR1bXAgY2FuIG5vdyBhY2NlcHQgdGhlIHBhdGggdG8gYSB0YXIgYXJjaGl2ZSBjb250YWluaW5n IFdBTApmaWxlcyBhbmQgZGVjb2RlIHRoZW0uIFRoaXMgZmVhdHVyZSB3YXMgYWRkZWQgcHJpbWFy aWx5IGZvcgpwZ192ZXJpZnliYWNrdXAsIHdoaWNoIHByZXZpb3VzbHkgZGlzYWJsZWQgV0FMIHBh cnNpbmcgZm9yCnRhci1mb3JtYXR0ZWQgYmFja3Vwcy4KCk5vdGUgdGhhdCB0aGlzIHBhdGNoIHJl cXVpcmVzIHRoYXQgdGhlIFdBTCBmaWxlcyB3aXRoaW4gdGhlIGFyY2hpdmUgYmUKaW4gc2VxdWVu dGlhbCBvcmRlcjsgYW4gZXJyb3Igd2lsbCBiZSByZXBvcnRlZCBvdGhlcndpc2UuIFRoZSBuZXh0 CnBhdGNoIGlzIHBsYW5uZWQgdG8gcmVtb3ZlIHRoaXMgcmVzdHJpY3Rpb24uCi0tLQogZG9jL3Ny Yy9zZ21sL3JlZi9wZ193YWxkdW1wLnNnbWwgICAgIHwgICA4ICstCiBzcmMvYmluL3BnX3dhbGR1 bXAvTWFrZWZpbGUgICAgICAgICAgfCAgIDcgKy0KIHNyYy9iaW4vcGdfd2FsZHVtcC9hcmNoaXZl X3dhbGR1bXAuYyB8IDYzOSArKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy9iaW4vcGdf d2FsZHVtcC9tZXNvbi5idWlsZCAgICAgICB8ICAgNCArLQogc3JjL2Jpbi9wZ193YWxkdW1wL3Bn X3dhbGR1bXAuYyAgICAgIHwgMjU1ICsrKysrKysrLS0tCiBzcmMvYmluL3BnX3dhbGR1bXAvcGdf d2FsZHVtcC5oICAgICAgfCAgNDMgKysKIHNyYy9iaW4vcGdfd2FsZHVtcC90LzAwMV9iYXNpYy5w bCAgICB8IDEwNSArKysrLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgIHwg ICAzICsKIDggZmlsZXMgY2hhbmdlZCwgOTk4IGluc2VydGlvbnMoKyksIDY2IGRlbGV0aW9ucygt 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 d2FsZHVtcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xN2QyN2Zm YTUyMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9hcmNoaXZlX3dhbGR1 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 CQkJCQkJIChsb25nIGxvbmcgaW50KSBjb3VudCAtIG5ieXRlcywKKwkJCQkJCSAobG9uZyBsb25n IGludCkgbmJ5dGVzKTsKKwkJfQorCX0KKworCS8qCisJICogU2hvdWxkIGhhdmUgZWl0aGVyIGhh dmUgc3VjY2Vzc2Z1bGx5IHJlYWQgYWxsIHRoZSByZXF1ZXN0ZWQgYnl0ZXMgb3IKKwkgKiByZXBv cnRlZCBhIGZhaWx1cmUgYmVmb3JlIHRoaXMgcG9pbnQuCisJICovCisJQXNzZXJ0KG5ieXRlcyA9 PSAwKTsKKworCS8qCisJICogTkI6IFdlIHJldHVybiB0aGUgZml4ZWQgdmFsdWUgcHJvdmlkZWQg YXMgaW5wdXQuIEFsdGhvdWdoIHdlIGNvdWxkCisJICogcmV0dXJuIGEgYm9vbGVhbiBzaW5jZSB3 ZSBlaXRoZXIgc3VjY2Vzc2Z1bGx5IHJlYWQgdGhlIFdBTCBwYWdlIG9yCisJICogcmFpc2UgYW4g ZXJyb3IsIGJ1dCB0aGUgY2FsbGVyIGV4cGVjdHMgdGhpcyB2YWx1ZSB0byBiZSByZXR1cm5lZC4g VGhlCisJICogcm91dGluZSB0aGF0IHJlYWRzIFdBTCBwYWdlcyBmcm9tIHRoZSBwaHlzaWNhbCBX QUwgZmlsZSBmb2xsb3dzIHRoZQorCSAqIHNhbWUgY29udmVudGlvbi4KKwkgKi8KKwlyZXR1cm4g Y291bnQ7Cit9CisKKy8qCisgKiBDbGVhcnMgdGhlIGJ1ZmZlciBvZiBhIFdBTCBlbnRyeSB0aGF0 IGlzIGJlaW5nIGlnbm9yZWQuICBUaGlzIGZyZWVzIHVwIG1lbW9yeQorICogYW5kIHByZXZlbnRz IHRoZSBhY2N1bXVsYXRpb24gb2YgaXJyZWxldmFudCBXQUwgZGF0YS4gIEFkZGl0aW9uYWxseSwK KyAqIGNvbmRpdGlvbmFsbHkgc2V0dGluZyBjdXJfZmlsZSB3aXRoaW4gcHJpdmF0ZWluZm8gdG8g TlVMTCBlbnN1cmVzIHRoZQorICogYXJjaGl2ZSBzdHJlYW1lciBza2lwcyB1bm5lY2Vzc2FyeSBj b3B5IG9wZXJhdGlvbnMKKyAqLwordm9pZAorZnJlZV9hcmNoaXZlX3dhbF9lbnRyeShjb25zdCBj aGFyICpmbmFtZSwgWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbykKK3sKKwlBcmNoaXZlZFdB TEZpbGUgKmVudHJ5OworCisJZW50cnkgPSBBcmNoaXZlZFdBTF9sb29rdXAocHJpdmF0ZUluZm8t PmFyY2hpdmVfd2FsX2h0YWIsIGZuYW1lKTsKKworCWlmIChlbnRyeSA9PSBOVUxMKQorCQlyZXR1 cm47CisKKwkvKiBEZXN0cm95IHRoZSBidWZmZXIgKi8KKwlkZXN0cm95U3RyaW5nSW5mbyhlbnRy eS0+YnVmKTsKKwllbnRyeS0+YnVmID0gTlVMTDsKKworCS8qIFNldCBjdXJfZmlsZSB0byBOVUxM IGlmIGl0IG1hdGNoZXMgdGhlIGVudHJ5IGJlaW5nIGlnbm9yZWQgKi8KKwlpZiAocHJpdmF0ZUlu Zm8tPmN1cl9maWxlID09IGVudHJ5KQorCQlwcml2YXRlSW5mby0+Y3VyX2ZpbGUgPSBOVUxMOwor CisJQXJjaGl2ZWRXQUxfZGVsZXRlX2l0ZW0ocHJpdmF0ZUluZm8tPmFyY2hpdmVfd2FsX2h0YWIs IGVudHJ5KTsKK30KKworLyoKKyAqIFJldHVybnMgdGhlIGFyY2hpdmVkIFdBTCBlbnRyeSBmcm9t IHRoZSBoYXNoIHRhYmxlIGlmIGl0IGV4aXN0cy4gIE90aGVyd2lzZSwKKyAqIGl0IGludm9rZXMg dGhlIHJvdXRpbmUgdG8gcmVhZCB0aGUgYXJjaGl2ZWQgZmlsZSwgd2hpY2ggdGhlbiBwb3B1bGF0 ZXMgdGhlCisgKiBlbnRyeSBpbiB0aGUgaGFzaCB0YWJsZSBpZiB0aGF0IFdBTCBleGlzdHMgaW4g dGhlIGFyY2hpdmUuCisgKi8KK3N0YXRpYyBBcmNoaXZlZFdBTEZpbGUgKgorZ2V0X2FyY2hpdmVf d2FsX2VudHJ5KGNvbnN0IGNoYXIgKmZuYW1lLCBYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZv LAorCQkJCQkgIGludCBXYWxTZWdTeikKK3sKKwlBcmNoaXZlZFdBTEZpbGUgKmVudHJ5ID0gTlVM TDsKKworCS8qIFNlYXJjaCBoYXNoIHRhYmxlICovCisJZW50cnkgPSBBcmNoaXZlZFdBTF9sb29r dXAocHJpdmF0ZUluZm8tPmFyY2hpdmVfd2FsX2h0YWIsIGZuYW1lKTsKKworCWlmIChlbnRyeSAh PSBOVUxMKQorCQlyZXR1cm4gZW50cnk7CisKKwkvKgorCSAqIFRoZSByZXF1ZXN0ZWQgV0FMIGVu dHJ5IGhhcyBub3QgYmVlbiByZWFkIGZyb20gdGhlIGFyY2hpdmUgeWV0OyBpbnZva2UKKwkgKiB0 aGUgYXJjaGl2ZSBzdHJlYW1lciB0byByZWFkIGl0LgorCSAqLworCXdoaWxlICgxKQorCXsKKwkJ LyogRmV0Y2ggbW9yZSBkYXRhICovCisJCWlmIChyZWFkX2FyY2hpdmVfZmlsZShwcml2YXRlSW5m bywgUkVBRF9DSFVOS19TSVpFKSA9PSAwKQorCQkJYnJlYWs7CQkJCS8qIGFyY2hpdmUgZmlsZSBl bmRlZCAqLworCisJCS8qCisJCSAqIEFyY2hpdmVkIHN0cmVhbWVyIGlzIHJlYWRpbmcgYSBub24t V0FMIGZpbGUgb3IgYW4gaXJyZWxldmFudCBXQUwKKwkJICogZmlsZS4KKwkJICovCisJCWlmIChw cml2YXRlSW5mby0+Y3VyX2ZpbGUgPT0gTlVMTCkKKwkJCWNvbnRpbnVlOworCisJCWVudHJ5ID0g cHJpdmF0ZUluZm8tPmN1cl9maWxlOworCisJCS8qIEZvdW5kIHRoZSByZXF1aXJlZCBlbnRyeSAq LworCQlpZiAoc3RyY21wKGZuYW1lLCBlbnRyeS0+Zm5hbWUpID09IDApCisJCQlyZXR1cm4gZW50 cnk7CisKKwkJLyogV0FMIHNlZ21lbnRzIG11c3QgYmUgYXJjaGl2ZWQgaW4gb3JkZXIgKi8KKwkJ cGdfbG9nX2Vycm9yKCJXQUwgZmlsZXMgYXJlIG5vdCBhcmNoaXZlZCBpbiBzZXF1ZW50aWFsIG9y ZGVyIik7CisJCXBnX2xvZ19lcnJvcl9kZXRhaWwoIkV4cGVjdGluZyBzZWdtZW50IFwiJXNcIiBi dXQgZm91bmQgXCIlc1wiLiIsCisJCQkJCQkJZm5hbWUsIGVudHJ5LT5mbmFtZSk7CisJCWV4aXQo MSk7CisJfQorCisJLyogUmVxdWVzdGVkIFdBTCBzZWdtZW50IG5vdCBmb3VuZCAqLworCXBnX2Zh dGFsKCJjb3VsZCBub3QgZmluZCBXQUwgXCIlc1wiIGluIGFyY2hpdmUgXCIlc1wiIiwKKwkJCSBm bmFtZSwgcHJpdmF0ZUluZm8tPmFyY2hpdmVfbmFtZSk7Cit9CisKKy8qCisgKiBSZWFkcyB0aGUg YXJjaGl2ZSBmaWxlIGFuZCBwYXNzZXMgaXQgdG8gdGhlIGFyY2hpdmUgc3RyZWFtZXIgZm9yCisg KiBkZWNvbXByZXNzaW9uLgorICovCitzdGF0aWMgaW50CityZWFkX2FyY2hpdmVfZmlsZShYTG9n RHVtcFByaXZhdGUgKnByaXZhdGVJbmZvLCBTaXplIGNvdW50KQoreworCWludAkJCXJjOworCWNo YXIJICAgKmJ1ZmZlcjsKKworCWJ1ZmZlciA9IHBnX21hbGxvYyhjb3VudCAqIHNpemVvZih1aW50 OCkpOworCisJcmMgPSByZWFkKHByaXZhdGVJbmZvLT5hcmNoaXZlX2ZkLCBidWZmZXIsIGNvdW50 KTsKKwlpZiAocmMgPCAwKQorCQlwZ19mYXRhbCgiY291bGQgbm90IHJlYWQgZmlsZSBcIiVzXCI6 ICVtIiwKKwkJCQkgcHJpdmF0ZUluZm8tPmFyY2hpdmVfbmFtZSk7CisKKwkvKgorCSAqIERlY29t cHJlc3MgKGlmIHJlcXVpcmVkKSwgYW5kIHRoZW4gcGFyc2UgdGhlIHByZXZpb3VzbHkgcmVhZCBj b250ZW50cworCSAqIG9mIHRoZSB0YXIgZmlsZS4KKwkgKi8KKwlpZiAocmMgPiAwKQorCQlhc3Ry ZWFtZXJfY29udGVudChwcml2YXRlSW5mby0+YXJjaGl2ZV9zdHJlYW1lciwgTlVMTCwKKwkJCQkJ CSAgYnVmZmVyLCByYywgQVNUUkVBTUVSX1VOS05PV04pOworCXBnX2ZyZWUoYnVmZmVyKTsKKwor CXJldHVybiByYzsKK30KKworLyoKKyAqIENyZWF0ZSBhbiBhc3RyZWFtZXIgdGhhdCBjYW4gcmVh ZCBXQUwgZnJvbSBhIHRhciBmaWxlLgorICovCitzdGF0aWMgYXN0cmVhbWVyICoKK2FzdHJlYW1l cl93YWxkdW1wX25ldyhYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvKQoreworCWFzdHJlYW1l cl93YWxkdW1wICpzdHJlYW1lcjsKKworCXN0cmVhbWVyID0gcGFsbG9jMF9vYmplY3QoYXN0cmVh bWVyX3dhbGR1bXApOworCSooKGNvbnN0IGFzdHJlYW1lcl9vcHMgKiopICZzdHJlYW1lci0+YmFz ZS5iYnNfb3BzKSA9CisJCSZhc3RyZWFtZXJfd2FsZHVtcF9vcHM7CisKKwlzdHJlYW1lci0+cHJp dmF0ZUluZm8gPSBwcml2YXRlSW5mbzsKKworCXJldHVybiAmc3RyZWFtZXItPmJhc2U7Cit9CisK Ky8qCisgKiBNYWluIGVudHJ5IHBvaW50IG9mIHRoZSBhcmNoaXZlIHN0cmVhbWVyIGZvciByZWFk aW5nIFdBTCBkYXRhIGZyb20gYSB0YXIKKyAqIGZpbGUuIElmIGEgbWVtYmVyIGlzIGlkZW50aWZp ZWQgYXMgYSB2YWxpZCBXQUwgZmlsZSwgYSBoYXNoIGVudHJ5IGlzIGNyZWF0ZWQKKyAqIGZvciBp dCwgYW5kIGl0cyBjb250ZW50cyBhcmUgY29waWVkIGludG8gdGhhdCBlbnRyeSdzIGJ1ZmZlciwg bWFraW5nIHRoZW0KKyAqIGFjY2Vzc2libGUgdG8gdGhlIGRlY29kaW5nIHJvdXRpbmUuCisgKi8K K3N0YXRpYyB2b2lkCithc3RyZWFtZXJfd2FsZHVtcF9jb250ZW50KGFzdHJlYW1lciAqc3RyZWFt ZXIsIGFzdHJlYW1lcl9tZW1iZXIgKm1lbWJlciwKKwkJCQkJCSAgY29uc3QgY2hhciAqZGF0YSwg aW50IGxlbiwKKwkJCQkJCSAgYXN0cmVhbWVyX2FyY2hpdmVfY29udGV4dCBjb250ZXh0KQorewor CWFzdHJlYW1lcl93YWxkdW1wICpteXN0cmVhbWVyID0gKGFzdHJlYW1lcl93YWxkdW1wICopIHN0 cmVhbWVyOworCVhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8gPSBteXN0cmVhbWVyLT5wcml2 YXRlSW5mbzsKKworCUFzc2VydChjb250ZXh0ICE9IEFTVFJFQU1FUl9VTktOT1dOKTsKKworCXN3 aXRjaCAoY29udGV4dCkKKwl7CisJCWNhc2UgQVNUUkVBTUVSX01FTUJFUl9IRUFERVI6CisJCQl7 CisJCQkJY2hhcgkgICAqZm5hbWUgPSBOVUxMOworCQkJCUFyY2hpdmVkV0FMRmlsZSAqZW50cnk7 CisJCQkJYm9vbAkJZm91bmQ7CisKKwkJCQlwZ19sb2dfZGVidWcoInJlYWRpbmcgXCIlc1wiIiwg bWVtYmVyLT5wYXRobmFtZSk7CisKKwkJCQlpZiAoIW1lbWJlcl9pc193YWxfZmlsZShteXN0cmVh bWVyLCBtZW1iZXIsICZmbmFtZSkpCisJCQkJCWJyZWFrOworCisJCQkJLyoKKwkJCQkgKiBGdXJ0 aGVyIGNoZWNrcyBhcmUgc2tpcHBlZCBpZiBhbnkgV0FMIGZpbGUgY2FuIGJlIHJlYWQuCisJCQkJ ICogVGhpcyB0eXBpY2FsbHkgb2NjdXJzIGR1cmluZyBpbml0aWFsIHZlcmlmaWNhdGlvbi4KKwkJ CQkgKi8KKwkJCQlpZiAoIVJFQURfQU5ZX1dBTChwcml2YXRlSW5mbykpCisJCQkJeworCQkJCQlY TG9nU2VnTm8Jc2Vnbm87CisJCQkJCVRpbWVMaW5lSUQJdGltZWxpbmU7CisKKwkJCQkJLyoKKwkJ CQkJICogU2tpcCB0aGUgc2VnbWVudCBpZiB0aGUgdGltZWxpbmUgZG9lcyBub3QgbWF0Y2gsIGlm IGl0CisJCQkJCSAqIGZhbGxzIG91dHNpZGUgdGhlIGNhbGxlci1zcGVjaWZpZWQgcmFuZ2UuCisJ CQkJCSAqLworCQkJCQlYTG9nRnJvbUZpbGVOYW1lKGZuYW1lLCAmdGltZWxpbmUsICZzZWdubywg cHJpdmF0ZUluZm8tPnNlZ3NpemUpOworCQkJCQlpZiAocHJpdmF0ZUluZm8tPnRpbWVsaW5lICE9 IHRpbWVsaW5lIHx8CisJCQkJCQlwcml2YXRlSW5mby0+c3RhcnRfc2Vnbm8gPiBzZWdubyB8fAor CQkJCQkJcHJpdmF0ZUluZm8tPmVuZF9zZWdubyA8IHNlZ25vKQorCQkJCQl7CisJCQkJCQlmcmVl KGZuYW1lKTsKKwkJCQkJCWJyZWFrOworCQkJCQl9CisJCQkJfQorCisJCQkJZW50cnkgPSBBcmNo aXZlZFdBTF9pbnNlcnQocHJpdmF0ZUluZm8tPmFyY2hpdmVfd2FsX2h0YWIsCisJCQkJCQkJCQkJ ICAgZm5hbWUsICZmb3VuZCk7CisKKwkJCQkvKgorCQkJCSAqIFNob3VsZG4ndCBoYXBwZW4sIGJ1 dCBpZiBpdCBkb2VzLCBzaW1wbHkgaWdub3JlIHRoZQorCQkJCSAqIGR1cGxpY2F0ZSBXQUwgZmls ZS4KKwkJCQkgKi8KKwkJCQlpZiAoZm91bmQpCisJCQkJeworCQkJCQlwZ19sb2dfd2FybmluZygi aWdub3JpbmcgZHVwbGljYXRlIFdBTCBcIiVzXCIgZm91bmQgaW4gYXJjaGl2ZSBcIiVzXCIiLAor CQkJCQkJCQkgICBtZW1iZXItPnBhdGhuYW1lLCBwcml2YXRlSW5mby0+YXJjaGl2ZV9uYW1lKTsK KwkJCQkJYnJlYWs7CisJCQkJfQorCisJCQkJZW50cnktPmJ1ZiA9IG1ha2VTdHJpbmdJbmZvKCk7 CisJCQkJZW50cnktPnNwaWxsZWQgPSBmYWxzZTsKKwkJCQllbnRyeS0+cmVhZF9sZW4gPSAwOwor CQkJCXByaXZhdGVJbmZvLT5jdXJfZmlsZSA9IGVudHJ5OworCQkJfQorCQkJYnJlYWs7CisKKwkJ Y2FzZSBBU1RSRUFNRVJfTUVNQkVSX0NPTlRFTlRTOgorCQkJaWYgKHByaXZhdGVJbmZvLT5jdXJf ZmlsZSkKKwkJCXsKKwkJCQlhcHBlbmRCaW5hcnlTdHJpbmdJbmZvKHByaXZhdGVJbmZvLT5jdXJf ZmlsZS0+YnVmLCBkYXRhLCBsZW4pOworCQkJCXByaXZhdGVJbmZvLT5jdXJfZmlsZS0+cmVhZF9s ZW4gKz0gbGVuOworCQkJfQorCQkJYnJlYWs7CisKKwkJY2FzZSBBU1RSRUFNRVJfTUVNQkVSX1RS QUlMRVI6CisJCQlwcml2YXRlSW5mby0+Y3VyX2ZpbGUgPSBOVUxMOworCQkJYnJlYWs7CisKKwkJ Y2FzZSBBU1RSRUFNRVJfQVJDSElWRV9UUkFJTEVSOgorCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoK KwkJCS8qIFNob3VsZG4ndCBoYXBwZW4uICovCisJCQlwZ19mYXRhbCgidW5leHBlY3RlZCBzdGF0 ZSB3aGlsZSBwYXJzaW5nIHRhciBmaWxlIik7CisJfQorfQorCisvKgorICogRW5kLW9mLXN0cmVh bSBwcm9jZXNzaW5nIGZvciBhbiBhc3RyZWFtZXJfd2FsZHVtcCBzdHJlYW0uCisgKi8KK3N0YXRp YyB2b2lkCithc3RyZWFtZXJfd2FsZHVtcF9maW5hbGl6ZShhc3RyZWFtZXIgKnN0cmVhbWVyKQor eworCUFzc2VydChzdHJlYW1lci0+YmJzX25leHQgPT0gTlVMTCk7Cit9CisKKy8qCisgKiBGcmVl IG1lbW9yeSBhc3NvY2lhdGVkIHdpdGggYSBhc3RyZWFtZXJfd2FsZHVtcCBzdHJlYW0uCisgKi8K K3N0YXRpYyB2b2lkCithc3RyZWFtZXJfd2FsZHVtcF9mcmVlKGFzdHJlYW1lciAqc3RyZWFtZXIp Cit7CisJQXNzZXJ0KHN0cmVhbWVyLT5iYnNfbmV4dCA9PSBOVUxMKTsKKwlwZnJlZShzdHJlYW1l cik7Cit9CisKKy8qCisgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGFyY2hpdmUgbWVtYmVyIG5hbWUg bWF0Y2hlcyB0aGUgV0FMIG5hbWluZyBmb3JtYXQuIElmCisgKiBzdWNjZXNzZnVsLCBpdCBhbHNv IG91dHB1dHMgdGhlIFdBTCBzZWdtZW50IG5hbWUuCisgKi8KK3N0YXRpYyBib29sCittZW1iZXJf aXNfd2FsX2ZpbGUoYXN0cmVhbWVyX3dhbGR1bXAgKm15c3RyZWFtZXIsIGFzdHJlYW1lcl9tZW1i ZXIgKm1lbWJlciwKKwkJCQkgICBjaGFyICoqZm5hbWUpCit7CisJaW50CQkJcGF0aGxlbjsKKwlj aGFyCQlwYXRobmFtZVtNQVhQR1BBVEhdOworCWNoYXIJICAgKmZpbGVuYW1lOworCisJLyogV2Ug YXJlIG9ubHkgaW50ZXJlc3RlZCBpbiBub3JtYWwgZmlsZXMuICovCisJaWYgKG1lbWJlci0+aXNf ZGlyZWN0b3J5IHx8IG1lbWJlci0+aXNfbGluaykKKwkJcmV0dXJuIGZhbHNlOworCisJaWYgKHN0 cmxlbihtZW1iZXItPnBhdGhuYW1lKSA8IFhMT0dfRk5BTUVfTEVOKQorCQlyZXR1cm4gZmFsc2U7 CisKKwkvKgorCSAqIEZvciBhIGNvcnJlY3QgY29tcGFyaXNvbiwgd2UgbXVzdCByZW1vdmUgYW55 ICcuJyBvciAnLi4nIGNvbXBvbmVudHMKKwkgKiBmcm9tIHRoZSBtZW1iZXIgcGF0aG5hbWUuIFNp bWlsYXIgdG8gbWVtYmVyX3ZlcmlmeV9oZWFkZXIoKSwgd2UgcHJlcGVuZAorCSAqICcuLycgdG8g dGhlIHBhdGggc28gdGhhdCBjYW5vbmljYWxpemVfcGF0aCgpIGNhbiBwcm9wZXJseSByZXNvbHZl IGFuZAorCSAqIHN0cmlwIHRoZXNlIHJlZmVyZW5jZXMgZnJvbSB0aGUgdGFyIG1lbWJlciBuYW1l CisJICovCisJc25wcmludGYocGF0aG5hbWUsIE1BWFBHUEFUSCwgIi4vJXMiLCBtZW1iZXItPnBh dGhuYW1lKTsKKwljYW5vbmljYWxpemVfcGF0aChwYXRobmFtZSk7CisJcGF0aGxlbiA9IHN0cmxl bihwYXRobmFtZSk7CisKKwkvKiBXQUwgZmlsZXMgZnJvbSB0aGUgdG9wLWxldmVsIG9yIHBnX3dh bCBkaXJlY3Rvcnkgd2lsbCBiZSBkZWNvZGVkICovCisJaWYgKHBhdGhsZW4gPiBYTE9HX0ZOQU1F X0xFTiAmJgorCQlzdHJuY21wKHBhdGhuYW1lLCBYTE9HRElSLCBzdHJsZW4oWExPR0RJUikpICE9 IDApCisJCXJldHVybiBmYWxzZTsKKworCS8qIFdBTCBmaWxlIGNvdWxkIGJlIHdpdGggZnVsbCBw YXRoICovCisJZmlsZW5hbWUgPSBwYXRobmFtZSArIChwYXRobGVuIC0gWExPR19GTkFNRV9MRU4p OworCWlmICghSXNYTG9nRmlsZU5hbWUoZmlsZW5hbWUpKQorCQlyZXR1cm4gZmFsc2U7CisKKwkq Zm5hbWUgPSBwbnN0cmR1cChmaWxlbmFtZSwgWExPR19GTkFNRV9MRU4pOworCisJcmV0dXJuIHRy dWU7Cit9CisKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGZpbGVtYXAgaGFzaCB0YWJsZS4K KyAqLworc3RhdGljIHVpbnQzMgoraGFzaF9zdHJpbmdfcG9pbnRlcihjb25zdCBjaGFyICpzKQor eworCXVuc2lnbmVkIGNoYXIgKnNzID0gKHVuc2lnbmVkIGNoYXIgKikgczsKKworCXJldHVybiBo YXNoX2J5dGVzKHNzLCBzdHJsZW4ocykpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxk dW1wL21lc29uLmJ1aWxkIGIvc3JjL2Jpbi9wZ193YWxkdW1wL21lc29uLmJ1aWxkCmluZGV4IDYz M2E5ODc0YmI1Li41Mjk2ZjIxYjgyYyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ193YWxkdW1wL21l c29uLmJ1aWxkCisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9tZXNvbi5idWlsZApAQCAtMSw2ICsx LDcgQEAKICMgQ29weXJpZ2h0IChjKSAyMDIyLTIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVs b3BtZW50IEdyb3VwCiAKIHBnX3dhbGR1bXBfc291cmNlcyA9IGZpbGVzKAorICAnYXJjaGl2ZV93 YWxkdW1wLmMnLAogICAnY29tcGF0LmMnLAogICAncGdfd2FsZHVtcC5jJywKICAgJ3JtZ3JkZXNj LmMnLApAQCAtMTgsNyArMTksNyBAQCBlbmRpZgogCiBwZ193YWxkdW1wID0gZXhlY3V0YWJsZSgn cGdfd2FsZHVtcCcsCiAgIHBnX3dhbGR1bXBfc291cmNlcywKLSAgZGVwZW5kZW5jaWVzOiBbZnJv bnRlbmRfY29kZSwgbHo0LCB6c3RkXSwKKyAgZGVwZW5kZW5jaWVzOiBbZnJvbnRlbmRfY29kZSwg bGlicHEsIGx6NCwgenN0ZF0sCiAgIGNfYXJnczogWyctREZST05URU5EJ10sICMgbmVlZGVkIGZv ciB4bG9ncmVhZGVyIGV0IGFsCiAgIGt3YXJnczogZGVmYXVsdF9iaW5fYXJncywKICkKQEAgLTI5 LDYgKzMwLDcgQEAgdGVzdHMgKz0gewogICAnc2QnOiBtZXNvbi5jdXJyZW50X3NvdXJjZV9kaXIo KSwKICAgJ2JkJzogbWVzb24uY3VycmVudF9idWlsZF9kaXIoKSwKICAgJ3RhcCc6IHsKKyAgICAn ZW52JzogeydUQVInOiB0YXIuZm91bmQoKSA/IHRhci5mdWxsX3BhdGgoKSA6ICcnfSwKICAgICAn dGVzdHMnOiBbCiAgICAgICAndC8wMDFfYmFzaWMucGwnLAogICAgICAgJ3QvMDAyX3NhdmVfZnVs bHBhZ2UucGwnLApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYyBi L3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKaW5kZXggNWQzMWIxNWRiZDguLjkwZmMx M2YzNjA5IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jCisrKyBi L3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKQEAgLTE3Niw3ICsxNzYsNyBAQCBzcGxp dF9wYXRoKGNvbnN0IGNoYXIgKnBhdGgsIGNoYXIgKipkaXIsIGNoYXIgKipmbmFtZSkKICAqCiAg KiByZXR1cm4gYSByZWFkIG9ubHkgZmQKICAqLwotc3RhdGljIGludAoraW50CiBvcGVuX2ZpbGVf aW5fZGlyZWN0b3J5KGNvbnN0IGNoYXIgKmRpcmVjdG9yeSwgY29uc3QgY2hhciAqZm5hbWUpCiB7 CiAJaW50CQkJZmQgPSAtMTsKQEAgLTQ0MCw2ICs0NDAsODAgQEAgV0FMRHVtcFJlYWRQYWdlKFhM b2dSZWFkZXJTdGF0ZSAqc3RhdGUsIFhMb2dSZWNQdHIgdGFyZ2V0UGFnZVB0ciwgaW50IHJlcUxl biwKIAlyZXR1cm4gY291bnQ7CiB9CiAKKy8qCisgKiBwZ193YWxkdW1wJ3MgWExvZ1JlYWRlclJv dXRpbmUtPnNlZ21lbnRfb3BlbiBjYWxsYmFjayB0byBzdXBwb3J0IGR1bXBpbmcgV0FMCisgKiBm aWxlcyBmcm9tIHRhciBhcmNoaXZlcy4KKyAqLworc3RhdGljIHZvaWQKK1RhcldBTER1bXBPcGVu U2VnbWVudChYTG9nUmVhZGVyU3RhdGUgKnN0YXRlLCBYTG9nU2VnTm8gbmV4dFNlZ05vLAorCQkJ CQkgIFRpbWVMaW5lSUQgKnRsaV9wKQoreworCS8qIE5vIGFjdGlvbiBuZWVkZWQgKi8KK30KKwor LyoKKyAqIHBnX3dhbGR1bXAncyBYTG9nUmVhZGVyUm91dGluZS0+c2VnbWVudF9jbG9zZSBjYWxs YmFjay4KKyAqLworc3RhdGljIHZvaWQKK1RhcldBTER1bXBDbG9zZVNlZ21lbnQoWExvZ1JlYWRl clN0YXRlICpzdGF0ZSkKK3sKKwkvKiBObyBhY3Rpb24gbmVlZGVkICovCit9CisKKy8qCisgKiBw Z193YWxkdW1wJ3MgWExvZ1JlYWRlclJvdXRpbmUtPnBhZ2VfcmVhZCBjYWxsYmFjayB0byBzdXBw b3J0IGR1bXBpbmcgV0FMCisgKiBmaWxlcyBmcm9tIHRhciBhcmNoaXZlcy4KKyAqLworc3RhdGlj IGludAorVGFyV0FMRHVtcFJlYWRQYWdlKFhMb2dSZWFkZXJTdGF0ZSAqc3RhdGUsIFhMb2dSZWNQ dHIgdGFyZ2V0UGFnZVB0ciwgaW50IHJlcUxlbiwKKwkJCQkgICBYTG9nUmVjUHRyIHRhcmdldFB0 ciwgY2hhciAqcmVhZEJ1ZmYpCit7CisJWExvZ0R1bXBQcml2YXRlICpwcml2YXRlID0gc3RhdGUt PnByaXZhdGVfZGF0YTsKKwlpbnQJCQljb3VudCA9IHJlcXVpcmVkX3JlYWRfbGVuKHByaXZhdGUs IHRhcmdldFBhZ2VQdHIsIHJlcUxlbik7CisJaW50CQkJV2FsU2VnU3ogPSBzdGF0ZS0+c2VnY3h0 LndzX3NlZ3NpemU7CisJWExvZ1NlZ05vCWN1clNlZ05vOworCisJLyogQmFpbCBvdXQgaWYgdGhl IGNvdW50IHRvIGJlIHJlYWQgaXMgbm90IHZhbGlkICovCisJaWYgKGNvdW50IDwgMCkKKwkJcmV0 dXJuIC0xOworCisJLyoKKwkgKiBJZiB0aGUgdGFyZ2V0IHBhZ2UgaXMgaW4gYSBkaWZmZXJlbnQg c2VnbWVudCwgZnJlZSB0aGUgYnVmZmVyIHNwYWNlCisJICogb2NjdXBpZWQgYnkgdGhlIHByZXZp b3VzIHNlZ21lbnQgZGF0YS4gU2luY2UgcGdfd2FsZHVtcCBuZXZlciByZXF1ZXN0cworCSAqIHRo ZSBzYW1lIFdBTCBieXRlcyB0d2ljZSwgbW92aW5nIHRvIGEgbmV3IHNlZ21lbnQgaW1wbGllcyB0 aGUgcHJldmlvdXMKKwkgKiBidWZmZXIncyBkYXRhIGFuZCB0aGF0IHNlZ21lbnQgd2lsbCBub3Qg YmUgbmVlZGVkIGFnYWluLgorCSAqLworCWN1clNlZ05vID0gc3RhdGUtPnNlZy53c19zZWdubzsK KwlpZiAoIVhMQnl0ZUluU2VnKHRhcmdldFBhZ2VQdHIsIGN1clNlZ05vLCBXYWxTZWdTeikpCisJ eworCQljaGFyCQlmbmFtZVtNQVhGTkFNRUxFTl07CisJCVhMb2dTZWdObyAgIG5leHRTZWdObzsK KworCQkvKgorCQkgKiBDYWxjdWxhdGUgdGhlIG5leHQgV0FMIHNlZ21lbnQgdG8gYmUgZGVjb2Rl ZCBmcm9tIHRoZSBnaXZlbiBwYWdlCisJCSAqIHBvaW50ZXIKKwkJICovCisJCVhMQnl0ZVRvU2Vn KHRhcmdldFBhZ2VQdHIsIG5leHRTZWdObywgV2FsU2VnU3opOworCQlzdGF0ZS0+c2VnLndzX3Rs aSA9IHByaXZhdGUtPnRpbWVsaW5lOworCQlzdGF0ZS0+c2VnLndzX3NlZ25vID0gbmV4dFNlZ05v OworCisJCS8qCisJCSAqIElmIGluIHByZS1yZWFkaW5nIG1vZGUgKHByaW9yIHRvIGFjdHVhbCBk ZWNvZGluZyksIGRvIG5vdCBkZWxldGUgYW55CisJCSAqIGVudHJpZXMgdGhhdCBtaWdodCBiZSBy ZXF1ZXN0ZWQgYWdhaW4gb25jZSB0aGUgZGVjb2RpbmcgbG9vcCBzdGFydHMuCisJCSAqIEZvciBt b3JlIGRldGFpbHMsIHNlZSB0aGUgY29tbWVudHMgaW4gcmVhZF9hcmNoaXZlX3dhbF9wYWdlKCku CisJCSAqLworCQlpZiAocHJpdmF0ZS0+ZGVjb2Rpbmdfc3RhcnRlZCAmJiBjdXJTZWdObyA8IG5l eHRTZWdObykKKwkJeworCQkJWExvZ0ZpbGVOYW1lKGZuYW1lLCBzdGF0ZS0+c2VnLndzX3RsaSwg Y3VyU2VnTm8sIFdhbFNlZ1N6KTsKKwkJCWZyZWVfYXJjaGl2ZV93YWxfZW50cnkoZm5hbWUsIHBy aXZhdGUpOworCQl9CisJfQorCisJLyogUmVhZCB0aGUgV0FMIHBhZ2UgZnJvbSB0aGUgYXJjaGl2 ZSBzdHJlYW1lciAqLworCXJldHVybiByZWFkX2FyY2hpdmVfd2FsX3BhZ2UocHJpdmF0ZSwgdGFy Z2V0UGFnZVB0ciwgY291bnQsIHJlYWRCdWZmLAorCQkJCQkJCQkgV2FsU2VnU3opOworfQorCiAv KgogICogQm9vbGVhbiB0byByZXR1cm4gd2hldGhlciB0aGUgZ2l2ZW4gV0FMIHJlY29yZCBtYXRj aGVzIGEgc3BlY2lmaWMgcmVsYXRpb24KICAqIGFuZCBvcHRpb25hbGx5IGJsb2NrLgpAQCAtNzc3 LDggKzg1MSw4IEBAIHVzYWdlKHZvaWQpCiAJcHJpbnRmKF8oIiAgLUYsIC0tZm9yaz1GT1JLICAg ICAgICBvbmx5IHNob3cgcmVjb3JkcyB0aGF0IG1vZGlmeSBibG9ja3MgaW4gZm9yayBGT1JLO1xu IgogCQkJICIgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWQgbmFtZXMgYXJlIG1haW4sIGZz bSwgdm0sIGluaXRcbiIpKTsKIAlwcmludGYoXygiICAtbiwgLS1saW1pdD1OICAgICAgICAgIG51 bWJlciBvZiByZWNvcmRzIHRvIGRpc3BsYXlcbiIpKTsKLQlwcmludGYoXygiICAtcCwgLS1wYXRo PVBBVEggICAgICAgIGRpcmVjdG9yeSBpbiB3aGljaCB0byBmaW5kIFdBTCBzZWdtZW50IGZpbGVz IG9yIGFcbiIKLQkJCSAiICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSB3aXRoIGEg Li9wZ193YWwgdGhhdCBjb250YWlucyBzdWNoIGZpbGVzXG4iCisJcHJpbnRmKF8oIiAgLXAsIC0t cGF0aD1QQVRIICAgICAgICB0YXIgYXJjaGl2ZSBvciBhIGRpcmVjdG9yeSBpbiB3aGljaCB0byBm aW5kIFdBTCBzZWdtZW50IGZpbGVzIG9yXG4iCisJCQkgIiAgICAgICAgICAgICAgICAgICAgICAg ICBhIGRpcmVjdG9yeSB3aXRoIGEgLi9wZ193YWwgdGhhdCBjb250YWlucyBzdWNoIGZpbGVzXG4i CiAJCQkgIiAgICAgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdDogY3VycmVudCBkaXJlY3Rv cnksIC4vcGdfd2FsLCAkUEdEQVRBL3BnX3dhbClcbiIpKTsKIAlwcmludGYoXygiICAtcSwgLS1x dWlldCAgICAgICAgICAgIGRvIG5vdCBwcmludCBhbnkgb3V0cHV0LCBleGNlcHQgZm9yIGVycm9y c1xuIikpOwogCXByaW50ZihfKCIgIC1yLCAtLXJtZ3I9Uk1HUiAgICAgICAgb25seSBzaG93IHJl Y29yZHMgZ2VuZXJhdGVkIGJ5IHJlc291cmNlIG1hbmFnZXIgUk1HUjtcbiIKQEAgLTgxMCw3ICs4 ODQsOSBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAlYTG9nUmVjb3JkICpyZWNvcmQ7 CiAJWExvZ1JlY1B0cglmaXJzdF9yZWNvcmQ7CiAJY2hhcgkgICAqd2FsZGlyID0gTlVMTDsKKwlj aGFyCSAgICp3YWxwYXRoID0gTlVMTDsKIAljaGFyCSAgICplcnJvcm1zZzsKKwlwZ19jb21wcmVz c19hbGdvcml0aG0gY29tcHJlc3Npb247CiAKIAlzdGF0aWMgc3RydWN0IG9wdGlvbiBsb25nX29w dGlvbnNbXSA9IHsKIAkJeyJia3AtZGV0YWlscyIsIG5vX2FyZ3VtZW50LCBOVUxMLCAnYid9LApA QCAtODY4LDYgKzk0NCwxMCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAlwcml2YXRl LnN0YXJ0cHRyID0gSW52YWxpZFhMb2dSZWNQdHI7CiAJcHJpdmF0ZS5lbmRwdHIgPSBJbnZhbGlk WExvZ1JlY1B0cjsKIAlwcml2YXRlLmVuZHB0cl9yZWFjaGVkID0gZmFsc2U7CisJcHJpdmF0ZS5k ZWNvZGluZ19zdGFydGVkID0gZmFsc2U7CisJcHJpdmF0ZS5hcmNoaXZlX25hbWUgPSBOVUxMOwor CXByaXZhdGUuc3RhcnRfc2Vnbm8gPSAwOworCXByaXZhdGUuZW5kX3NlZ25vID0gVUlOVDY0X01B WDsKIAogCWNvbmZpZy5xdWlldCA9IGZhbHNlOwogCWNvbmZpZy5ia3BfZGV0YWlscyA9IGZhbHNl OwpAQCAtOTQzLDcgKzEwMjMsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCQl9 CiAJCQkJYnJlYWs7CiAJCQljYXNlICdwJzoKLQkJCQl3YWxkaXIgPSBwZ19zdHJkdXAob3B0YXJn KTsKKwkJCQl3YWxwYXRoID0gcGdfc3RyZHVwKG9wdGFyZyk7CiAJCQkJYnJlYWs7CiAJCQljYXNl ICdxJzoKIAkJCQljb25maWcucXVpZXQgPSB0cnVlOwpAQCAtMTEwNywxMCArMTE4NywxOSBAQCBt YWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJZ290byBiYWRfYXJndW1lbnQ7CiAJfQogCi0J aWYgKHdhbGRpciAhPSBOVUxMKQorCWlmICh3YWxwYXRoICE9IE5VTEwpCiAJeworCQkvKiB2YWxp ZGF0ZSBwYXRoIHBvaW50cyB0byB0YXIgYXJjaGl2ZSAqLworCQlpZiAocGFyc2VfdGFyX2NvbXBy ZXNzX2FsZ29yaXRobSh3YWxwYXRoLCAmY29tcHJlc3Npb24pKQorCQl7CisJCQljaGFyCSAgICpm bmFtZSA9IE5VTEw7CisKKwkJCXNwbGl0X3BhdGgod2FscGF0aCwgJndhbGRpciwgJmZuYW1lKTsK KworCQkJcHJpdmF0ZS5hcmNoaXZlX25hbWUgPSBmbmFtZTsKKwkJfQogCQkvKiB2YWxpZGF0ZSBw YXRoIHBvaW50cyB0byBkaXJlY3RvcnkgKi8KLQkJaWYgKCF2ZXJpZnlfZGlyZWN0b3J5KHdhbGRp cikpCisJCWVsc2UgaWYgKCF2ZXJpZnlfZGlyZWN0b3J5KHdhbHBhdGgpKQogCQl7CiAJCQlwZ19s b2dfZXJyb3IoImNvdWxkIG5vdCBvcGVuIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwgd2FsZGlyKTsK IAkJCWdvdG8gYmFkX2FyZ3VtZW50OwpAQCAtMTEyOCw2ICsxMjE3LDE3IEBAIG1haW4oaW50IGFy Z2MsIGNoYXIgKiphcmd2KQogCQlpbnQJCQlmZDsKIAkJWExvZ1NlZ05vCXNlZ25vOwogCisJCS8q CisJCSAqIElmIGEgdGFyIGFyY2hpdmUgaXMgcGFzc2VkIHVzaW5nIHRoZSAtLXBhdGggb3B0aW9u LCBhbGwgb3RoZXIKKwkJICogYXJndW1lbnRzIGJlY29tZSB1bm5lY2Vzc2FyeS4KKwkJICovCisJ CWlmIChwcml2YXRlLmFyY2hpdmVfbmFtZSkKKwkJeworCQkJcGdfbG9nX2Vycm9yKCJ1bm5lY2Vz c2FyeSBjb21tYW5kLWxpbmUgYXJndW1lbnRzIHNwZWNpZmllZCB3aXRoIHRhciBhcmNoaXZlIChm aXJzdCBpcyBcIiVzXCIpIiwKKwkJCQkJCSBhcmd2W29wdGluZF0pOworCQkJZ290byBiYWRfYXJn dW1lbnQ7CisJCX0KKwogCQlzcGxpdF9wYXRoKGFyZ3Zbb3B0aW5kXSwgJmRpcmVjdG9yeSwgJmZu YW1lKTsKIAogCQlpZiAod2FsZGlyID09IE5VTEwgJiYgZGlyZWN0b3J5ICE9IE5VTEwpCkBAIC0x MTM4LDY5ICsxMjM4LDc2IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJCXBnX2Zh dGFsKCJjb3VsZCBub3Qgb3BlbiBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIHdhbGRpcik7CiAJCX0K IAotCQl3YWxkaXIgPSBpZGVudGlmeV90YXJnZXRfZGlyZWN0b3J5KHdhbGRpciwgZm5hbWUsICZw cml2YXRlLnNlZ3NpemUpOwotCQlmZCA9IG9wZW5fZmlsZV9pbl9kaXJlY3Rvcnkod2FsZGlyLCBm bmFtZSk7Ci0JCWlmIChmZCA8IDApCi0JCQlwZ19mYXRhbCgiY291bGQgbm90IG9wZW4gZmlsZSBc IiVzXCIiLCBmbmFtZSk7Ci0JCWNsb3NlKGZkKTsKLQotCQkvKiBwYXJzZSBwb3NpdGlvbiBmcm9t IGZpbGUgKi8KLQkJWExvZ0Zyb21GaWxlTmFtZShmbmFtZSwgJnByaXZhdGUudGltZWxpbmUsICZz ZWdubywgcHJpdmF0ZS5zZWdzaXplKTsKLQotCQlpZiAoIVhMb2dSZWNQdHJJc1ZhbGlkKHByaXZh dGUuc3RhcnRwdHIpKQotCQkJWExvZ1NlZ05vT2Zmc2V0VG9SZWNQdHIoc2Vnbm8sIDAsIHByaXZh dGUuc2Vnc2l6ZSwgcHJpdmF0ZS5zdGFydHB0cik7Ci0JCWVsc2UgaWYgKCFYTEJ5dGVJblNlZyhw cml2YXRlLnN0YXJ0cHRyLCBzZWdubywgcHJpdmF0ZS5zZWdzaXplKSkKKwkJaWYgKGZuYW1lICE9 IE5VTEwgJiYgcGFyc2VfdGFyX2NvbXByZXNzX2FsZ29yaXRobShmbmFtZSwgJmNvbXByZXNzaW9u KSkKIAkJewotCQkJcGdfbG9nX2Vycm9yKCJzdGFydCBXQUwgbG9jYXRpb24gJVgvJTA4WCBpcyBu b3QgaW5zaWRlIGZpbGUgXCIlc1wiIiwKLQkJCQkJCSBMU05fRk9STUFUX0FSR1MocHJpdmF0ZS5z dGFydHB0ciksCi0JCQkJCQkgZm5hbWUpOwotCQkJZ290byBiYWRfYXJndW1lbnQ7CisJCQlwcml2 YXRlLmFyY2hpdmVfbmFtZSA9IGZuYW1lOwogCQl9Ci0KLQkJLyogbm8gc2Vjb25kIGZpbGUgc3Bl Y2lmaWVkLCBzZXQgZW5kIHBvc2l0aW9uICovCi0JCWlmICghKG9wdGluZCArIDEgPCBhcmdjKSAm JiAhWExvZ1JlY1B0cklzVmFsaWQocHJpdmF0ZS5lbmRwdHIpKQotCQkJWExvZ1NlZ05vT2Zmc2V0 VG9SZWNQdHIoc2Vnbm8gKyAxLCAwLCBwcml2YXRlLnNlZ3NpemUsIHByaXZhdGUuZW5kcHRyKTsK LQotCQkvKiBwYXJzZSBFTkRTRUcgaWYgcGFzc2VkICovCi0JCWlmIChvcHRpbmQgKyAxIDwgYXJn YykKKwkJZWxzZQogCQl7Ci0JCQlYTG9nU2VnTm8JZW5kc2Vnbm87Ci0KLQkJCS8qIGlnbm9yZSBk aXJlY3RvcnksIGFscmVhZHkgaGF2ZSB0aGF0ICovCi0JCQlzcGxpdF9wYXRoKGFyZ3Zbb3B0aW5k ICsgMV0sICZkaXJlY3RvcnksICZmbmFtZSk7Ci0KKwkJCXdhbGRpciA9IGlkZW50aWZ5X3Rhcmdl dF9kaXJlY3Rvcnkod2FsZGlyLCBmbmFtZSwgJnByaXZhdGUuc2Vnc2l6ZSk7CiAJCQlmZCA9IG9w ZW5fZmlsZV9pbl9kaXJlY3Rvcnkod2FsZGlyLCBmbmFtZSk7CiAJCQlpZiAoZmQgPCAwKQogCQkJ CXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIiIsIGZuYW1lKTsKIAkJCWNsb3Nl KGZkKTsKIAogCQkJLyogcGFyc2UgcG9zaXRpb24gZnJvbSBmaWxlICovCi0JCQlYTG9nRnJvbUZp bGVOYW1lKGZuYW1lLCAmcHJpdmF0ZS50aW1lbGluZSwgJmVuZHNlZ25vLCBwcml2YXRlLnNlZ3Np emUpOworCQkJWExvZ0Zyb21GaWxlTmFtZShmbmFtZSwgJnByaXZhdGUudGltZWxpbmUsICZzZWdu bywgcHJpdmF0ZS5zZWdzaXplKTsKIAotCQkJaWYgKGVuZHNlZ25vIDwgc2Vnbm8pCi0JCQkJcGdf ZmF0YWwoIkVORFNFRyAlcyBpcyBiZWZvcmUgU1RBUlRTRUcgJXMiLAotCQkJCQkJIGFyZ3Zbb3B0 aW5kICsgMV0sIGFyZ3Zbb3B0aW5kXSk7CisJCQlpZiAoIVhMb2dSZWNQdHJJc1ZhbGlkKHByaXZh dGUuc3RhcnRwdHIpKQorCQkJCVhMb2dTZWdOb09mZnNldFRvUmVjUHRyKHNlZ25vLCAwLCBwcml2 YXRlLnNlZ3NpemUsIHByaXZhdGUuc3RhcnRwdHIpOworCQkJZWxzZSBpZiAoIVhMQnl0ZUluU2Vn KHByaXZhdGUuc3RhcnRwdHIsIHNlZ25vLCBwcml2YXRlLnNlZ3NpemUpKQorCQkJeworCQkJCXBn X2xvZ19lcnJvcigic3RhcnQgV0FMIGxvY2F0aW9uICVYLyUwOFggaXMgbm90IGluc2lkZSBmaWxl IFwiJXNcIiIsCisJCQkJCQkJIExTTl9GT1JNQVRfQVJHUyhwcml2YXRlLnN0YXJ0cHRyKSwKKwkJ CQkJCQkgZm5hbWUpOworCQkJCWdvdG8gYmFkX2FyZ3VtZW50OworCQkJfQogCi0JCQlpZiAoIVhM b2dSZWNQdHJJc1ZhbGlkKHByaXZhdGUuZW5kcHRyKSkKLQkJCQlYTG9nU2VnTm9PZmZzZXRUb1Jl Y1B0cihlbmRzZWdubyArIDEsIDAsIHByaXZhdGUuc2Vnc2l6ZSwKLQkJCQkJCQkJCQlwcml2YXRl LmVuZHB0cik7CisJCQkvKiBubyBzZWNvbmQgZmlsZSBzcGVjaWZpZWQsIHNldCBlbmQgcG9zaXRp b24gKi8KKwkJCWlmICghKG9wdGluZCArIDEgPCBhcmdjKSAmJiAhWExvZ1JlY1B0cklzVmFsaWQo cHJpdmF0ZS5lbmRwdHIpKQorCQkJCVhMb2dTZWdOb09mZnNldFRvUmVjUHRyKHNlZ25vICsgMSwg MCwgcHJpdmF0ZS5zZWdzaXplLCBwcml2YXRlLmVuZHB0cik7CiAKLQkJCS8qIHNldCBzZWdubyB0 byBlbmRzZWdubyBmb3IgY2hlY2sgb2YgLS1lbmQgKi8KLQkJCXNlZ25vID0gZW5kc2Vnbm87Ci0J CX0KKwkJCS8qIHBhcnNlIEVORFNFRyBpZiBwYXNzZWQgKi8KKwkJCWlmIChvcHRpbmQgKyAxIDwg YXJnYykKKwkJCXsKKwkJCQlYTG9nU2VnTm8JZW5kc2Vnbm87CiAKKwkJCQkvKiBpZ25vcmUgZGly ZWN0b3J5LCBhbHJlYWR5IGhhdmUgdGhhdCAqLworCQkJCXNwbGl0X3BhdGgoYXJndltvcHRpbmQg KyAxXSwgJmRpcmVjdG9yeSwgJmZuYW1lKTsKIAotCQlpZiAoIVhMQnl0ZUluU2VnKHByaXZhdGUu ZW5kcHRyLCBzZWdubywgcHJpdmF0ZS5zZWdzaXplKSAmJgotCQkJcHJpdmF0ZS5lbmRwdHIgIT0g KHNlZ25vICsgMSkgKiBwcml2YXRlLnNlZ3NpemUpCi0JCXsKLQkJCXBnX2xvZ19lcnJvcigiZW5k IFdBTCBsb2NhdGlvbiAlWC8lMDhYIGlzIG5vdCBpbnNpZGUgZmlsZSBcIiVzXCIiLAotCQkJCQkJ IExTTl9GT1JNQVRfQVJHUyhwcml2YXRlLmVuZHB0ciksCi0JCQkJCQkgYXJndlthcmdjIC0gMV0p OwotCQkJZ290byBiYWRfYXJndW1lbnQ7CisJCQkJZmQgPSBvcGVuX2ZpbGVfaW5fZGlyZWN0b3J5 KHdhbGRpciwgZm5hbWUpOworCQkJCWlmIChmZCA8IDApCisJCQkJCXBnX2ZhdGFsKCJjb3VsZCBu b3Qgb3BlbiBmaWxlIFwiJXNcIiIsIGZuYW1lKTsKKwkJCQljbG9zZShmZCk7CisKKwkJCQkvKiBw YXJzZSBwb3NpdGlvbiBmcm9tIGZpbGUgKi8KKwkJCQlYTG9nRnJvbUZpbGVOYW1lKGZuYW1lLCAm cHJpdmF0ZS50aW1lbGluZSwgJmVuZHNlZ25vLCBwcml2YXRlLnNlZ3NpemUpOworCisJCQkJaWYg KGVuZHNlZ25vIDwgc2Vnbm8pCisJCQkJCXBnX2ZhdGFsKCJFTkRTRUcgJXMgaXMgYmVmb3JlIFNU QVJUU0VHICVzIiwKKwkJCQkJCQkgYXJndltvcHRpbmQgKyAxXSwgYXJndltvcHRpbmRdKTsKKwor CQkJCWlmICghWExvZ1JlY1B0cklzVmFsaWQocHJpdmF0ZS5lbmRwdHIpKQorCQkJCQlYTG9nU2Vn Tm9PZmZzZXRUb1JlY1B0cihlbmRzZWdubyArIDEsIDAsIHByaXZhdGUuc2Vnc2l6ZSwKKwkJCQkJ CQkJCQkJcHJpdmF0ZS5lbmRwdHIpOworCisJCQkJLyogc2V0IHNlZ25vIHRvIGVuZHNlZ25vIGZv ciBjaGVjayBvZiAtLWVuZCAqLworCQkJCXNlZ25vID0gZW5kc2Vnbm87CisJCQl9CisKKworCQkJ aWYgKCFYTEJ5dGVJblNlZyhwcml2YXRlLmVuZHB0ciwgc2Vnbm8sIHByaXZhdGUuc2Vnc2l6ZSkg JiYKKwkJCQlwcml2YXRlLmVuZHB0ciAhPSAoc2Vnbm8gKyAxKSAqIHByaXZhdGUuc2Vnc2l6ZSkK KwkJCXsKKwkJCQlwZ19sb2dfZXJyb3IoImVuZCBXQUwgbG9jYXRpb24gJVgvJTA4WCBpcyBub3Qg aW5zaWRlIGZpbGUgXCIlc1wiIiwKKwkJCQkJCQkgTFNOX0ZPUk1BVF9BUkdTKHByaXZhdGUuZW5k cHRyKSwKKwkJCQkJCQkgYXJndlthcmdjIC0gMV0pOworCQkJCWdvdG8gYmFkX2FyZ3VtZW50Owor CQkJfQogCQl9CiAJfQotCWVsc2UKLQkJd2FsZGlyID0gaWRlbnRpZnlfdGFyZ2V0X2RpcmVjdG9y eSh3YWxkaXIsIE5VTEwsICZwcml2YXRlLnNlZ3NpemUpOworCWVsc2UgaWYgKCFwcml2YXRlLmFy Y2hpdmVfbmFtZSkKKwkJd2FsZGlyID0gaWRlbnRpZnlfdGFyZ2V0X2RpcmVjdG9yeSh3YWxwYXRo LCBOVUxMLCAmcHJpdmF0ZS5zZWdzaXplKTsKIAogCS8qIHdlIGRvbid0IGtub3cgd2hhdCB0byBw cmludCAqLwogCWlmICghWExvZ1JlY1B0cklzVmFsaWQocHJpdmF0ZS5zdGFydHB0cikpCkBAIC0x MjEyLDEyICsxMzE5LDM2IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCS8qIGRvbmUg d2l0aCBhcmd1bWVudCBwYXJzaW5nLCBkbyB0aGUgYWN0dWFsIHdvcmsgKi8KIAogCS8qIHdlIGhh dmUgZXZlcnl0aGluZyB3ZSBuZWVkLCBzdGFydCByZWFkaW5nICovCi0JeGxvZ3JlYWRlcl9zdGF0 ZSA9Ci0JCVhMb2dSZWFkZXJBbGxvY2F0ZShwcml2YXRlLnNlZ3NpemUsIHdhbGRpciwKLQkJCQkJ CSAgIFhMX1JPVVRJTkUoLnBhZ2VfcmVhZCA9IFdBTER1bXBSZWFkUGFnZSwKLQkJCQkJCQkJCSAg LnNlZ21lbnRfb3BlbiA9IFdBTER1bXBPcGVuU2VnbWVudCwKLQkJCQkJCQkJCSAgLnNlZ21lbnRf Y2xvc2UgPSBXQUxEdW1wQ2xvc2VTZWdtZW50KSwKLQkJCQkJCSAgICZwcml2YXRlKTsKKwlpZiAo cHJpdmF0ZS5hcmNoaXZlX25hbWUpCisJeworCQkvKgorCQkgKiBBIE5VTEwgV0FMIGRpcmVjdG9y eSBpbmRpY2F0ZXMgdGhhdCB0aGUgYXJjaGl2ZSBmaWxlIGlzIGxvY2F0ZWQgaW4KKwkJICogdGhl IGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnkgb2YgdGhlIHBnX3dhbGR1bXAgZXhlY3V0aW9uCisJ CSAqLworCQlpZiAod2FsZGlyID09IE5VTEwpCisJCQl3YWxkaXIgPSBwZ19zdHJkdXAoIi4iKTsK KworCQkvKiBTZXQgdXAgZm9yIHJlYWRpbmcgdGFyIGZpbGUgKi8KKwkJaW5pdF9hcmNoaXZlX3Jl YWRlcigmcHJpdmF0ZSwgd2FsZGlyLCAmcHJpdmF0ZS5zZWdzaXplLCBjb21wcmVzc2lvbik7CisK KwkJLyogUm91dGluZSB0byBkZWNvZGUgV0FMIGZpbGVzIGluIHRhciBhcmNoaXZlICovCisJCXhs b2dyZWFkZXJfc3RhdGUgPQorCQkJWExvZ1JlYWRlckFsbG9jYXRlKHByaXZhdGUuc2Vnc2l6ZSwg d2FsZGlyLAorCQkJCQkJCSAgIFhMX1JPVVRJTkUoLnBhZ2VfcmVhZCA9IFRhcldBTER1bXBSZWFk UGFnZSwKKwkJCQkJCQkJCQkgIC5zZWdtZW50X29wZW4gPSBUYXJXQUxEdW1wT3BlblNlZ21lbnQs CisJCQkJCQkJCQkJICAuc2VnbWVudF9jbG9zZSA9IFRhcldBTER1bXBDbG9zZVNlZ21lbnQpLAor CQkJCQkJCSAgICZwcml2YXRlKTsKKwl9CisJZWxzZQorCXsKKwkJeGxvZ3JlYWRlcl9zdGF0ZSA9 CisJCQlYTG9nUmVhZGVyQWxsb2NhdGUocHJpdmF0ZS5zZWdzaXplLCB3YWxkaXIsCisJCQkJCQkJ ICAgWExfUk9VVElORSgucGFnZV9yZWFkID0gV0FMRHVtcFJlYWRQYWdlLAorCQkJCQkJCQkJCSAg LnNlZ21lbnRfb3BlbiA9IFdBTER1bXBPcGVuU2VnbWVudCwKKwkJCQkJCQkJCQkgIC5zZWdtZW50 X2Nsb3NlID0gV0FMRHVtcENsb3NlU2VnbWVudCksCisJCQkJCQkJICAgJnByaXZhdGUpOworCX0K KwogCWlmICgheGxvZ3JlYWRlcl9zdGF0ZSkKIAkJcGdfZmF0YWwoIm91dCBvZiBtZW1vcnkgd2hp bGUgYWxsb2NhdGluZyBhIFdBTCByZWFkaW5nIHByb2Nlc3NvciIpOwogCkBAIC0xMjQ1LDYgKzEz NzYsOSBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAlpZiAoY29uZmlnLnN0YXRzID09 IHRydWUgJiYgIWNvbmZpZy5xdWlldCkKIAkJc3RhdHMuc3RhcnRwdHIgPSBmaXJzdF9yZWNvcmQ7 CiAKKwkvKiBGbGFnIGluZGljYXRpbmcgdGhhdCB0aGUgZGVjb2RpbmcgbG9vcCBoYXMgYmVlbiBl bnRlcmVkICovCisJcHJpdmF0ZS5kZWNvZGluZ19zdGFydGVkID0gdHJ1ZTsKKwogCWZvciAoOzsp CiAJewogCQlpZiAodGltZV90b19zdG9wKQpAQCAtMTMyNiw2ICsxNDYwLDkgQEAgbWFpbihpbnQg YXJnYywgY2hhciAqKmFyZ3YpCiAKIAlYTG9nUmVhZGVyRnJlZSh4bG9ncmVhZGVyX3N0YXRlKTsK IAorCWlmIChwcml2YXRlLmFyY2hpdmVfbmFtZSkKKwkJZnJlZV9hcmNoaXZlX3JlYWRlcigmcHJp dmF0ZSk7CisKIAlyZXR1cm4gRVhJVF9TVUNDRVNTOwogCiBiYWRfYXJndW1lbnQ6CmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5oIGIvc3JjL2Jpbi9wZ193YWxkdW1w L3BnX3dhbGR1bXAuaAppbmRleCAwMTNiMDUxNTA2Zi4uNTRkNTRhOGE3MTggMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmgKKysrIGIvc3JjL2Jpbi9wZ193YWxkdW1w L3BnX3dhbGR1bXAuaApAQCAtMTIsNiArMTIsMTEgQEAKICNkZWZpbmUgUEdfV0FMRFVNUF9ICiAK ICNpbmNsdWRlICJhY2Nlc3MveGxvZ2RlZnMuaCIKKyNpbmNsdWRlICJmZV91dGlscy9hc3RyZWFt ZXIuaCIKKworLyogRm9yd2FyZCBkZWNsYXJhdGlvbiAqLworc3RydWN0IEFyY2hpdmVkV0FMRmls ZTsKK3N0cnVjdCBBcmNoaXZlZFdBTF9oYXNoOwogCiAvKiBDb250YWlucyB0aGUgbmVjZXNzYXJ5 IGluZm9ybWF0aW9uIHRvIGRyaXZlIFdBTCBkZWNvZGluZyAqLwogdHlwZWRlZiBzdHJ1Y3QgWExv Z0R1bXBQcml2YXRlCkBAIC0yMSw2ICsyNiw0NCBAQCB0eXBlZGVmIHN0cnVjdCBYTG9nRHVtcFBy aXZhdGUKIAlYTG9nUmVjUHRyCXN0YXJ0cHRyOwogCVhMb2dSZWNQdHIJZW5kcHRyOwogCWJvb2wJ CWVuZHB0cl9yZWFjaGVkOworCWJvb2wJCWRlY29kaW5nX3N0YXJ0ZWQ7CisKKwkvKiBGaWVsZHMg cmVxdWlyZWQgdG8gcmVhZCBXQUwgZnJvbSBhcmNoaXZlICovCisJY2hhcgkgICAqYXJjaGl2ZV9u YW1lOwkvKiBUYXIgYXJjaGl2ZSBuYW1lICovCisJaW50CQkJYXJjaGl2ZV9mZDsJCS8qIEZpbGUg ZGVzY3JpcHRvciBmb3IgdGhlIG9wZW4gdGFyIGZpbGUgKi8KKworCWFzdHJlYW1lciAgKmFyY2hp dmVfc3RyZWFtZXI7CisKKwkvKiBXaGF0IHRoZSBhcmNoaXZlIHN0cmVhbWVyIGlzIGN1cnJlbnRs eSByZWFkaW5nICovCisJc3RydWN0IEFyY2hpdmVkV0FMRmlsZSAqY3VyX2ZpbGU7CisKKwkvKgor CSAqIEhhc2ggdGFibGUgb2YgYWxsIFdBTCBmaWxlcyB0aGF0IHRoZSBhcmNoaXZlIHN0cmVhbSBo YXMgcmVhZCwgaW5jbHVkaW5nCisJICogdGhlIG9uZSBjdXJyZW50bHkgaW4gcHJvZ3Jlc3MuCisJ ICovCisJc3RydWN0IEFyY2hpdmVkV0FMX2hhc2ggKmFyY2hpdmVfd2FsX2h0YWI7CisKKwkvKgor CSAqIEFsdGhvdWdoIHRoZXNlIHZhbHVlcyBjYW4gYmUgZWFzaWx5IGRlcml2ZWQgZnJvbSBzdGFy dHB0ciBhbmQgZW5kcHRyLAorCSAqIGRvaW5nIHNvIHJlcGVhdGVkbHkgZm9yIGVhY2ggYXJjaGl2 ZWQgbWVtYmVyIHdvdWxkIGJlIGluZWZmaWNpZW50LCBhcworCSAqIGl0IHdvdWxkIGludm9sdmUg cmVjYWxjdWxhdGluZyBhbmQgZmlsdGVyaW5nIG91dCBpcnJlbGV2YW50IFdBTAorCSAqIHNlZ21l bnRzLgorCSAqLworCVhMb2dTZWdObwlzdGFydF9zZWdubzsKKwlYTG9nU2VnTm8JZW5kX3NlZ25v OwogfSBYTG9nRHVtcFByaXZhdGU7CiAKK2V4dGVybiBpbnQJb3Blbl9maWxlX2luX2RpcmVjdG9y eShjb25zdCBjaGFyICpkaXJlY3RvcnksIGNvbnN0IGNoYXIgKmZuYW1lKTsKKworZXh0ZXJuIHZv aWQgaW5pdF9hcmNoaXZlX3JlYWRlcihYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvLAorCQkJ CQkJCQljb25zdCBjaGFyICp3YWxkaXIsIGludCAqV2FsU2VnU3osCisJCQkJCQkJCXBnX2NvbXBy ZXNzX2FsZ29yaXRobSBjb21wcmVzc2lvbik7CitleHRlcm4gdm9pZCBmcmVlX2FyY2hpdmVfcmVh ZGVyKFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8pOworZXh0ZXJuIGludAlyZWFkX2FyY2hp dmVfd2FsX3BhZ2UoWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbywKKwkJCQkJCQkJICBYTG9n UmVjUHRyIHRhcmdldFBhZ2VQdHIsCisJCQkJCQkJCSAgU2l6ZSBjb3VudCwgY2hhciAqcmVhZEJ1 ZmYsCisJCQkJCQkJCSAgaW50IFdhbFNlZ1N6KTsKK2V4dGVybiB2b2lkIGZyZWVfYXJjaGl2ZV93 YWxfZW50cnkoY29uc3QgY2hhciAqZm5hbWUsCisJCQkJCQkJCSAgIFhMb2dEdW1wUHJpdmF0ZSAq cHJpdmF0ZUluZm8pOworCiAjZW5kaWYJCQkJCQkJLyogUEdfV0FMRFVNUF9IICovCmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnX3dhbGR1bXAvdC8wMDFfYmFzaWMucGwgYi9zcmMvYmluL3BnX3dhbGR1 bXAvdC8wMDFfYmFzaWMucGwKaW5kZXggZjEyYmE1MmNiZmMuLjlhYjc0NTdlOWUyIDEwMDY0NAot LS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvdC8wMDFfYmFzaWMucGwKKysrIGIvc3JjL2Jpbi9wZ193 YWxkdW1wL3QvMDAxX2Jhc2ljLnBsCkBAIC0zLDEwICszLDEzIEBACiAKIHVzZSBzdHJpY3Q7CiB1 c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7Cit1c2UgQ3dkOwogdXNlIFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9y ZTsKIAorbXkgJHRhciA9ICRFTlZ7VEFSfTsKKwogcHJvZ3JhbV9oZWxwX29rKCdwZ193YWxkdW1w Jyk7CiBwcm9ncmFtX3ZlcnNpb25fb2soJ3BnX3dhbGR1bXAnKTsKIHByb2dyYW1fb3B0aW9uc19o YW5kbGluZ19vaygncGdfd2FsZHVtcCcpOwpAQCAtMTYyLDYgKzE2NSw0MiBAQCBDUkVBVEUgVEFC TEVTUEFDRSB0czEgTE9DQVRJT04gJyR0YmxzcGNfcGF0aCc7CiBEUk9QIFRBQkxFU1BBQ0UgdHMx OwogfSk7CiAKKyMgVGVzdDogRGVjb2RlIGEgY29udGludWF0aW9uIHJlY29yZCAoY29udHJlY29y ZCkgdGhhdCBzcGFucyBtdWx0aXBsZSBXQUwKKyMgc2VnbWVudHMuCisjCisjIE5vdyBjb25zdW1l IGFsbCByZW1haW5pbmcgcm9vbSBpbiB0aGUgY3VycmVudCBXQUwgc2VnbWVudCwgbGVhdmluZwor IyBzcGFjZSBlbm91Z2ggb25seSBmb3IgdGhlIHN0YXJ0IG9mIGEgbGFyZ2lzaCByZWNvcmQuCisk bm9kZS0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHF7CitETyAkJAorREVDTEFSRQorICAgIHdh bF9zZWdzaXplIGludCA6PSBzZXR0aW5nOjppbnQgRlJPTSBwZ19zZXR0aW5ncyBXSEVSRSBuYW1l ID0gJ3dhbF9zZWdtZW50X3NpemUnOworICAgIHJlbWFpbiBpbnQ7CisgICAgaXRlcnMgIGludCA6 PSAwOworQkVHSU4KKyAgICBMT09QCisgICAgICAgIElOU0VSVCBpbnRvIHQxKGIpCisgICAgICAg IHNlbGVjdCByZXBlYXQoZW5jb2RlKHNoYTI1NihnOjp0ZXh0OjpieXRlYSksICdoZXgnKSwgKHJh bmRvbSgpICogMTUgKyAxKTo6aW50KQorICAgICAgICBmcm9tIGdlbmVyYXRlX3NlcmllcygxLCAx MCkgZzsKKworICAgICAgICByZW1haW4gOj0gd2FsX3NlZ3NpemUgLSAocGdfY3VycmVudF93YWxf aW5zZXJ0X2xzbigpIC0gJzAvMCcpICUgd2FsX3NlZ3NpemU7CisgICAgICAgIElGIHJlbWFpbiA8 IDIgKiBzZXR0aW5nOjppbnQgZnJvbSBwZ19zZXR0aW5ncyB3aGVyZSBuYW1lID0gJ2Jsb2NrX3Np emUnIFRIRU4KKyAgICAgICAgICAgIFJBSVNFIGxvZyAnZXhpdGluZyBhZnRlciAlIGl0ZXJhdGlv bnMsICUgYnl0ZXMgdG8gZW5kIG9mIFdBTCBzZWdtZW50JywgaXRlcnMsIHJlbWFpbjsKKyAgICAg ICAgICAgIEVYSVQ7CisgICAgICAgIEVORCBJRjsKKyAgICAgICAgaXRlcnMgOj0gaXRlcnMgKyAx OworICAgIEVORCBMT09QOworRU5ECiskJDsKK30pOworCitteSAkY29udHJlY29yZF9sc24gPSAk bm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJJ1NFTEVDVCBwZ19jdXJyZW50X3dhbF9pbnNl cnRfbHNuKCknKTsKKyMgR2VuZXJhdGUgY29udHJlY29yZCByZWNvcmQKKyRub2RlLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwlxcXtTRUxFQ1QgcGdfbG9naWNhbF9lbWl0X21lc3NhZ2UodHJ1ZSwg J3Rlc3QgMDI2JywgcmVwZWF0KCd4eXp4eicsIDEyMzQ1NikpfQorKTsKKwogbXkgKCRlbmRfbHNu LCAkZW5kX3dhbGZpbGUpID0gc3BsaXQgL1x8LywKICAgJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAogCXF7U0VMRUNUIHBnX2N1cnJlbnRfd2FsX2luc2VydF9sc24oKSwgcGdfd2FsZmlsZV9u YW1lKHBnX2N1cnJlbnRfd2FsX2luc2VydF9sc24oKSl9CkBAIC0yNTksMTEgKzI5OCw1MCBAQCBz dWIgdGVzdF9wZ193YWxkdW1wCiAJcmV0dXJuIEBsaW5lczsKIH0KIAotbXkgQGxpbmVzOworIyBD cmVhdGUgYSB0YXIgYXJjaGl2ZSwgc29ydGluZyB0aGUgZmlsZSBvcmRlcgorc3ViIGdlbmVyYXRl X2FyY2hpdmUKK3sKKwlteSAoJGFyY2hpdmUsICRkaXJlY3RvcnksICRjb21wcmVzc2lvbl9mbGFn cykgPSBAXzsKKworCW15IEBmaWxlczsKKwlvcGVuZGlyIG15ICRkaCwgJGRpcmVjdG9yeSBvciBk aWUgIm9wZW5kaXI6ICQhIjsKKwl3aGlsZSAobXkgJGVudHJ5ID0gcmVhZGRpciAkZGgpIHsKKwkJ IyBTa2lwICcuJyBhbmQgJy4uJworCQluZXh0IGlmICRlbnRyeSBlcSAnLicgfHwgJGVudHJ5IGVx ICcuLic7CisJCXB1c2ggQGZpbGVzLCAkZW50cnk7CisJfQorCWNsb3NlZGlyICRkaDsKKworCUBm aWxlcyA9IHNvcnQgQGZpbGVzOworCisJIyBtb3ZlIGludG8gdGhlIFdBTCBkaXJlY3RvcnkgYmVm b3JlIGFyY2hpdmluZyBmaWxlcworCW15ICRjd2QgPSBnZXRjd2Q7CisJY2hkaXIoJGRpcmVjdG9y eSkgfHwgZGllICJjaGRpcjogJCEiOworCWNvbW1hbmRfb2soWyR0YXIsICRjb21wcmVzc2lvbl9m bGFncywgJGFyY2hpdmUsIEBmaWxlc10pOworCWNoZGlyKCRjd2QpIHx8IGRpZSAiY2hkaXI6ICQh IjsKK30KKworbXkgJHRtcF9kaXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGVtcGRpcl9z aG9ydCgpOwogCiBteSBAc2NlbmFyaW9zID0gKAogCXsKLQkJJ3BhdGgnID0+ICRub2RlLT5kYXRh X2RpcgorCQkncGF0aCcgPT4gJG5vZGUtPmRhdGFfZGlyLAorCQknaXNfYXJjaGl2ZScgPT4gMCwK KwkJJ2VuYWJsZWQnID0+IDEKKwl9LAorCXsKKwkJJ3BhdGgnID0+ICIkdG1wX2Rpci9wZ193YWwu dGFyIiwKKwkJJ2NvbXByZXNzaW9uX21ldGhvZCcgPT4gJ25vbmUnLAorCQknY29tcHJlc3Npb25f ZmxhZ3MnID0+ICctY2YnLAorCQknaXNfYXJjaGl2ZScgPT4gMSwKKwkJJ2VuYWJsZWQnID0+IDEK Kwl9LAorCXsKKwkJJ3BhdGgnID0+ICIkdG1wX2Rpci9wZ193YWwudGFyLmd6IiwKKwkJJ2NvbXBy ZXNzaW9uX21ldGhvZCcgPT4gJ2d6aXAnLAorCQknY29tcHJlc3Npb25fZmxhZ3MnID0+ICctY3pm JywKKwkJJ2lzX2FyY2hpdmUnID0+IDEsCisJCSdlbmFibGVkJyA9PiBjaGVja19wZ19jb25maWco IiNkZWZpbmUgSEFWRV9MSUJaIDEiKQogCX0pOwogCiBmb3IgbXkgJHNjZW5hcmlvIChAc2NlbmFy aW9zKQpAQCAtMjcyLDYgKzM1MCwxOSBAQCBmb3IgbXkgJHNjZW5hcmlvIChAc2NlbmFyaW9zKQog CiAJU0tJUDoKIAl7CisJCXNraXAgInRhciBjb21tYW5kIGlzIG5vdCBhdmFpbGFibGUiLCAzCisJ CSAgaWYgIWRlZmluZWQgJHRhcjsKKwkJc2tpcCAiJHNjZW5hcmlvLT57J2NvbXByZXNzaW9uX21l dGhvZCd9IGNvbXByZXNzaW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBidWlsZCIsIDMKKwkJICBp ZiAhJHNjZW5hcmlvLT57J2VuYWJsZWQnfSAmJiAkc2NlbmFyaW8tPnsnaXNfYXJjaGl2ZSd9Owor CisJCSAgIyBjcmVhdGUgcGdfd2FsIGFyY2hpdmUKKwkJICBpZiAoJHNjZW5hcmlvLT57J2lzX2Fy Y2hpdmUnfSkKKwkJICB7CisJCQkgIGdlbmVyYXRlX2FyY2hpdmUoJHBhdGgsCisJCQkJICAkbm9k ZS0+ZGF0YV9kaXIgLiAnL3BnX3dhbCcsCisJCQkJICAkc2NlbmFyaW8tPnsnY29tcHJlc3Npb25f ZmxhZ3MnfSk7CisJCSAgfQorCiAJCWNvbW1hbmRfZmFpbHNfbGlrZSgKIAkJCVsgJ3BnX3dhbGR1 bXAnLCAnLS1wYXRoJyA9PiAkcGF0aCBdLAogCQkJcXIvZXJyb3I6IG5vIHN0YXJ0IFdBTCBsb2Nh dGlvbiBnaXZlbi8sCkBAIC0zMDUsOSArMzk2LDE0IEBAIGZvciBteSAkc2NlbmFyaW8gKEBzY2Vu YXJpb3MpCiAKIAkJdGVzdF9wZ193YWxkdW1wX3NraXBfYnl0ZXMoJHBhdGgsICRzdGFydF9sc24s ICRlbmRfbHNuKTsKIAotCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJHBhdGgsICRzdGFydF9s c24sICRlbmRfbHNuKTsKKwkJbXkgQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCRwYXRoLCAkc3Rh cnRfbHNuLCAkZW5kX2xzbik7CiAJCWlzKGdyZXAoIS9ecm1ncjogXHcvLCBAbGluZXMpLCAwLCAn YWxsIG91dHB1dCBsaW5lcyBhcmUgcm1nciBsaW5lcycpOwogCisJCUBsaW5lcyA9IHRlc3RfcGdf d2FsZHVtcCgkcGF0aCwgJGNvbnRyZWNvcmRfbHNuLCAkZW5kX2xzbik7CisJCWlzKGdyZXAoIS9e cm1ncjogXHcvLCBAbGluZXMpLCAwLCAnYWxsIG91dHB1dCBsaW5lcyBhcmUgcm1nciBsaW5lcycp OworCisJCXRlc3RfcGdfd2FsZHVtcF9za2lwX2J5dGVzKCRwYXRoLCAkY29udHJlY29yZF9sc24s ICRlbmRfbHNuKTsKKwogCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJHBhdGgsICRzdGFydF9s c24sICRlbmRfbHNuLCAnLS1saW1pdCcgPT4gNik7CiAJCWlzKEBsaW5lcywgNiwgJ2xpbWl0IG9w dGlvbiBvYnNlcnZlZCcpOwogCkBAIC0zMzcsNiArNDMzLDkgQEAgZm9yIG15ICRzY2VuYXJpbyAo QHNjZW5hcmlvcykKIAkJCSctLXJlbGF0aW9uJyA9PiAiJGRlZmF1bHRfdHNfb2lkLyRwb3N0Z3Jl c19kYl9vaWQvJHJlbF9pMWFfb2lkIiwKIAkJCSctLWJsb2NrJyA9PiAxKTsKIAkJaXMoZ3JlcCgh L1xiYmxrIDFcYi8sIEBsaW5lcyksIDAsICdvbmx5IGxpbmVzIGZvciBzZWxlY3RlZCBibG9jaycp OworCisJCSMgQ2xlYW51cC4KKwkJdW5saW5rICRwYXRoIGlmICRzY2VuYXJpby0+eydpc19hcmNo aXZlJ307CiAJfQogfQogCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMu bGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDc3ZTNjMDQxNDRl Li41OTVhZDdkNWM1YSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTE0NSw2ICsxNDUs OCBAQCBBcmNoaXZlT3B0cwogQXJjaGl2ZVNodXRkb3duQ0IKIEFyY2hpdmVTdGFydHVwQ0IKIEFy Y2hpdmVTdHJlYW1TdGF0ZQorQXJjaGl2ZWRXQUxGaWxlCitBcmNoaXZlZFdBTF9oYXNoCiBBcmNo aXZlck91dHB1dAogQXJjaGl2ZXJTdGFnZQogQXJyYXlBbmFseXplRXh0cmFEYXRhCkBAIC0zNTEz LDYgKzM1MTUsNyBAQCBhc3RyZWFtZXJfcmVjb3ZlcnlfaW5qZWN0b3IKIGFzdHJlYW1lcl90YXJf YXJjaGl2ZXIKIGFzdHJlYW1lcl90YXJfcGFyc2VyCiBhc3RyZWFtZXJfdmVyaWZ5Cithc3RyZWFt ZXJfd2FsZHVtcAogYXN0cmVhbWVyX3pzdGRfZnJhbWUKIGF1dGhfcGFzc3dvcmRfaG9va190eXAK IGF1dG92YWNfdGFibGUKLS0gCjIuNDcuMQoK --000000000000db2415064c0a2d81 Content-Type: application/octet-stream; name="v14-0007-pg_waldump-Remove-the-restriction-on-the-order-o.patch" Content-Disposition: attachment; filename="v14-0007-pg_waldump-Remove-the-restriction-on-the-order-o.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm965tu66 RnJvbSBkMzAwMGE0OTRiNWQ0MTZkMDFlNDhkZWY2NGEzZTU0ZTZiNTIzZGFiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFR1 ZSwgMjcgSmFuIDIwMjYgMTU6Mzg6MzQgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxNCAwNy8xMV0g cGdfd2FsZHVtcDogUmVtb3ZlIHRoZSByZXN0cmljdGlvbiBvbiB0aGUgb3JkZXIgb2YKIGFyY2hp dmVkIFdBTCBmaWxlcy4KCldpdGggcHJldmlvdXMgcGF0Y2gsIHBnX3dhbGR1bXAgd291bGQgc3Rv cCBkZWNvZGluZyBpZiBXQUwgZmlsZXMgd2VyZQpub3QgaW4gdGhlIHJlcXVpcmVkIHNlcXVlbmNl LiBXaXRoIHRoaXMgcGF0Y2gsIGRlY29kaW5nIHdpbGwgbm93CmNvbnRpbnVlLiAgQW55IFdBTCBm aWxlIHRoYXQgaXMgb3V0IG9mIG9yZGVyIHdpbGwgYmUgd3JpdHRlbiB0byBhCnRlbXBvcmFyeSBs b2NhdGlvbiwgZnJvbSB3aGljaCBpdCB3aWxsIGJlIHJlYWQgbGF0ZXIuIE9uY2UgYSB0ZW1wb3Jh cnkKZmlsZSBoYXMgYmVlbiByZWFkLCBpdCB3aWxsIGJlIHJlbW92ZWQuCi0tLQogZG9jL3NyYy9z Z21sL3JlZi9wZ193YWxkdW1wLnNnbWwgICAgIHwgICA4ICstCiBzcmMvYmluL3BnX3dhbGR1bXAv YXJjaGl2ZV93YWxkdW1wLmMgfCAxNzEgKysrKysrKysrKysrKysrKysrKysrKysrKy0tCiBzcmMv YmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jICAgICAgfCAgMzIgKysrKy0KIHNyYy9iaW4vcGdf d2FsZHVtcC9wZ193YWxkdW1wLmggICAgICB8ICAgMyArCiBzcmMvYmluL3BnX3dhbGR1bXAvdC8w MDFfYmFzaWMucGwgICAgfCAgIDMgKy0KIDUgZmlsZXMgY2hhbmdlZCwgMTk3IGluc2VydGlvbnMo KyksIDIwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfd2Fs ZHVtcC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ193YWxkdW1wLnNnbWwKaW5kZXggMTVmYjhk MTMxOTkuLmIzNjMyM2RkZTkyIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX3dhbGR1 bXAuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3BnX3dhbGR1bXAuc2dtbApAQCAtMTQ5LDgg KzE0OSwxMiBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KICAgICAgICAgb2YgPGVudmFyPlBH REFUQTwvZW52YXI+LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KLSAgICAgICAgSWYg YSB0YXIgYXJjaGl2ZSBpcyBwcm92aWRlZCwgaXRzIFdBTCBzZWdtZW50IGZpbGVzIG11c3QgYmUg aW4KLSAgICAgICAgc2VxdWVudGlhbCBvcmRlcjsgb3RoZXJ3aXNlLCBhbiBlcnJvciB3aWxsIGJl IHJlcG9ydGVkLgorICAgICAgICBJZiBhIHRhciBhcmNoaXZlIGlzIHByb3ZpZGVkIGFuZCBpdHMg V0FMIHNlZ21lbnQgZmlsZXMgYXJlIG5vdCBpbgorICAgICAgICBzZXF1ZW50aWFsIG9yZGVyLCB0 aG9zZSBmaWxlcyB3aWxsIGJlIHdyaXR0ZW4gdG8gYSB0ZW1wb3JhcnkgZGlyZWN0b3J5CisgICAg ICAgIG5hbWVkIHN0YXJ0aW5nIHdpdGggPGZpbGVuYW1lPndhbGR1bXBfdG1wPC9maWxlbmFtZT4u IFRoaXMgZGlyZWN0b3J5IHdpbGwgYmUKKyAgICAgICAgY3JlYXRlZCBpbnNpZGUgdGhlIGRpcmVj dG9yeSBzcGVjaWZpZWQgYnkgdGhlIDxlbnZhcj5UTVBESVI8L2VudmFyPgorICAgICAgICBlbnZp cm9ubWVudCB2YXJpYWJsZSBpZiBpdCBpcyBzZXQ7IG90aGVyd2lzZSwgaXQgd2lsbCBiZSBjcmVh dGVkIHdpdGhpbgorICAgICAgICB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGhlIHRhciBhcmNoaXZl LgogICAgICAgIDwvcGFyYT4KICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5 PgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wL2FyY2hpdmVfd2FsZHVtcC5jIGIvc3Jj L2Jpbi9wZ193YWxkdW1wL2FyY2hpdmVfd2FsZHVtcC5jCmluZGV4IDE3ZDI3ZmZhNTIwLi5jNWE0 NDg1YjViMSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ193YWxkdW1wL2FyY2hpdmVfd2FsZHVtcC5j CisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9hcmNoaXZlX3dhbGR1bXAuYwpAQCAtMTcsNiArMTcs NyBAQAogI2luY2x1ZGUgPHVuaXN0ZC5oPgogCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dfaW50ZXJu YWwuaCIKKyNpbmNsdWRlICJjb21tb24vZmlsZV9wZXJtLmgiCiAjaW5jbHVkZSAiY29tbW9uL2hh c2hmbi5oIgogI2luY2x1ZGUgImNvbW1vbi9sb2dnaW5nLmgiCiAjaW5jbHVkZSAiZmVfdXRpbHMv c2ltcGxlX2xpc3QuaCIKQEAgLTI3LDYgKzI4LDkgQEAKICAqLwogI2RlZmluZSBSRUFEX0NIVU5L X1NJWkUJCQkJKDEyOCAqIDEwMjQpCiAKKy8qIFRlbXBvcmFyeSBleHBvcnRlZCBXQUwgZmlsZSBk aXJlY3RvcnkgKi8KK2NoYXIJICAgKlRtcFdhbFNlZ0RpciA9IE5VTEw7CisKIC8qCiAgKiBDaGVj ayBpZiB0aGUgc3RhcnQgc2VnbWVudCBudW1iZXIgaXMgemVybzsgdGhpcyBpbmRpY2F0ZXMgYSBy ZXF1ZXN0IHRvIHJlYWQKICAqIGFueSBXQUwgZmlsZS4KQEAgLTU3LDYgKzYxLDggQEAgdHlwZWRl ZiBzdHJ1Y3QgQXJjaGl2ZWRXQUxGaWxlCiAJY29uc3QgY2hhciAqZm5hbWU7CQkJLyogaGFzaCBr ZXk6IFdBTCBzZWdtZW50IG5hbWUgKi8KIAogCVN0cmluZ0luZm8JYnVmOwkJCS8qIGhvbGRzIFdB TCBieXRlcyByZWFkIGZyb20gYXJjaGl2ZSAqLworCWJvb2wJCXNwaWxsZWQ7CQkvKiB0cnVlIGlm IHRoZSBXQUwgZGF0YSB3YXMgc3BpbGxlZCB0byBhCisJCQkJCQkJCSAqIHRlbXBvcmFyeSBmaWxl ICovCiAKIAlpbnQJCQlyZWFkX2xlbjsJCS8qIHRvdGFsIGJ5dGVzIG9mIGEgV0FMIHJlYWQgZnJv bSBhcmNoaXZlICovCiB9IEFyY2hpdmVkV0FMRmlsZTsKQEAgLTg0LDYgKzkwLDExIEBAIHN0YXRp YyBBcmNoaXZlZFdBTEZpbGUgKmdldF9hcmNoaXZlX3dhbF9lbnRyeShjb25zdCBjaGFyICpmbmFt ZSwKIAkJCQkJCQkJCQkJICBYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvLAogCQkJCQkJCQkJ CQkgIGludCBXYWxTZWdTeik7CiBzdGF0aWMgaW50CXJlYWRfYXJjaGl2ZV9maWxlKFhMb2dEdW1w UHJpdmF0ZSAqcHJpdmF0ZUluZm8sIFNpemUgY291bnQpOworc3RhdGljIHZvaWQgc2V0dXBfdG1w d2FsX2Rpcihjb25zdCBjaGFyICp3YWxkaXIpOworc3RhdGljIHZvaWQgY2xlYW51cF90bXB3YWxf ZGlyX2F0ZXhpdCh2b2lkKTsKKworc3RhdGljIEZJTEUgKnByZXBhcmVfdG1wX3dyaXRlKGNvbnN0 IGNoYXIgKmZuYW1lKTsKK3N0YXRpYyB2b2lkIHBlcmZvcm1fdG1wX3dyaXRlKGNvbnN0IGNoYXIg KmZuYW1lLCBTdHJpbmdJbmZvIGJ1ZiwgRklMRSAqZmlsZSk7CiAKIHN0YXRpYyBhc3RyZWFtZXIg KmFzdHJlYW1lcl93YWxkdW1wX25ldyhYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvKTsKIHN0 YXRpYyB2b2lkIGFzdHJlYW1lcl93YWxkdW1wX2NvbnRlbnQoYXN0cmVhbWVyICpzdHJlYW1lciwK QEAgLTEwNiw3ICsxMTcsOSBAQCBzdGF0aWMgY29uc3QgYXN0cmVhbWVyX29wcyBhc3RyZWFtZXJf d2FsZHVtcF9vcHMgPSB7CiAvKgogICogSW5pdGlhbGl6ZXMgdGhlIHRhciBhcmNoaXZlIHJlYWRl ciwgY3JlYXRlcyBhIGhhc2ggdGFibGUgZm9yIFdBTCBlbnRyaWVzLAogICogY2hlY2tzIGZvciBl eGlzdGluZyB2YWxpZCBXQUwgc2VnbWVudHMgaW4gdGhlIGFyY2hpdmUgZmlsZSBhbmQgcmV0cmll dmVzIHRoZQotICogc2VnbWVudCBzaXplLCBhbmQgc2V0cyB1cCBmaWx0ZXJzIGZvciByZWxldmFu dCBlbnRyaWVzLgorICogc2VnbWVudCBzaXplLCBhbmQgc2V0cyB1cCBmaWx0ZXJzIGZvciByZWxl dmFudCBlbnRyaWVzLiBJdCBhbHNvIGNvbmZpZ3VyZXMgYQorICogdGVtcG9yYXJ5IGRpcmVjdG9y eSBmb3Igb3V0LW9mLW9yZGVyIFdBTCBkYXRhIGFuZCByZWdpc3RlcnMgYW4gZXhpdCBjYWxsYmFj aworICogdG8gY2xlYW4gdXAgdGVtcG9yYXJ5IGZpbGVzLgogICovCiB2b2lkCiBpbml0X2FyY2hp dmVfcmVhZGVyKFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8sIGNvbnN0IGNoYXIgKndhbGRp ciwKQEAgLTE5OSw2ICsyMTIsMTMgQEAgaW5pdF9hcmNoaXZlX3JlYWRlcihYTG9nRHVtcFByaXZh dGUgKnByaXZhdGVJbmZvLCBjb25zdCBjaGFyICp3YWxkaXIsCiAJCXByaXZhdGVJbmZvLT5zdGFy dF9zZWdubyA+IHNlZ25vIHx8CiAJCXByaXZhdGVJbmZvLT5lbmRfc2Vnbm8gPCBzZWdubykKIAkJ ZnJlZV9hcmNoaXZlX3dhbF9lbnRyeShlbnRyeS0+Zm5hbWUsIHByaXZhdGVJbmZvKTsKKworCS8q CisJICogU2V0dXAgdGVtcG9yYXJ5IGRpcmVjdG9yeSB0byBzdG9yZSBXQUwgc2VnbWVudHMgYW5k IHNldCB1cCBhbiBleGl0CisJICogY2FsbGJhY2sgdG8gcmVtb3ZlIGl0IHVwb24gY29tcGxldGlv bi4KKwkgKi8KKwlzZXR1cF90bXB3YWxfZGlyKHdhbGRpcik7CisJYXRleGl0KGNsZWFudXBfdG1w d2FsX2Rpcl9hdGV4aXQpOwogfQogCiAvKgpAQCAtMzY1LDYgKzM4NSwxNyBAQCBmcmVlX2FyY2hp dmVfd2FsX2VudHJ5KGNvbnN0IGNoYXIgKmZuYW1lLCBYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJ bmZvKQogCWRlc3Ryb3lTdHJpbmdJbmZvKGVudHJ5LT5idWYpOwogCWVudHJ5LT5idWYgPSBOVUxM OwogCisJLyogUmVtb3ZlIHRlbXBvcmFyeSBmaWxlIGlmIGFueSAqLworCWlmIChlbnRyeS0+c3Bp bGxlZCkKKwl7CisJCWNoYXIJCWZwYXRoW01BWFBHUEFUSF07CisKKwkJc25wcmludGYoZnBhdGgs IE1BWFBHUEFUSCwgIiVzLyVzIiwgVG1wV2FsU2VnRGlyLCBmbmFtZSk7CisKKwkJaWYgKHVubGlu ayhmcGF0aCkgPT0gMCkKKwkJCXBnX2xvZ19kZWJ1ZygicmVtb3ZlZCBmaWxlIFwiJXNcIiIsIGZw YXRoKTsKKwl9CisKIAkvKiBTZXQgY3VyX2ZpbGUgdG8gTlVMTCBpZiBpdCBtYXRjaGVzIHRoZSBl bnRyeSBiZWluZyBpZ25vcmVkICovCiAJaWYgKHByaXZhdGVJbmZvLT5jdXJfZmlsZSA9PSBlbnRy eSkKIAkJcHJpdmF0ZUluZm8tPmN1cl9maWxlID0gTlVMTDsKQEAgLTM3NiwxMiArNDA3LDE2IEBA IGZyZWVfYXJjaGl2ZV93YWxfZW50cnkoY29uc3QgY2hhciAqZm5hbWUsIFhMb2dEdW1wUHJpdmF0 ZSAqcHJpdmF0ZUluZm8pCiAgKiBSZXR1cm5zIHRoZSBhcmNoaXZlZCBXQUwgZW50cnkgZnJvbSB0 aGUgaGFzaCB0YWJsZSBpZiBpdCBleGlzdHMuICBPdGhlcndpc2UsCiAgKiBpdCBpbnZva2VzIHRo ZSByb3V0aW5lIHRvIHJlYWQgdGhlIGFyY2hpdmVkIGZpbGUsIHdoaWNoIHRoZW4gcG9wdWxhdGVz IHRoZQogICogZW50cnkgaW4gdGhlIGhhc2ggdGFibGUgaWYgdGhhdCBXQUwgZXhpc3RzIGluIHRo ZSBhcmNoaXZlLgorICogSWYgdGhlIGFyY2hpdmUgc3RyZWFtZXIgaGFwcGVucyB0byBiZSByZWFk aW5nIGEKKyAqIFdBTCBmcm9tIGFyY2hpdmUgZmlsZSB0aGF0IGlzIG5vdCBjdXJyZW50bHkgbmVl ZGVkLCB0aGF0IFdBTCBkYXRhIGlzIHdyaXR0ZW4KKyAqIHRvIGEgdGVtcG9yYXJ5IGZpbGUuCiAg Ki8KIHN0YXRpYyBBcmNoaXZlZFdBTEZpbGUgKgogZ2V0X2FyY2hpdmVfd2FsX2VudHJ5KGNvbnN0 IGNoYXIgKmZuYW1lLCBYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvLAogCQkJCQkgIGludCBX YWxTZWdTeikKIHsKIAlBcmNoaXZlZFdBTEZpbGUgKmVudHJ5ID0gTlVMTDsKKwlGSUxFCSAgICp3 cml0ZV9mcCA9IE5VTEw7CiAKIAkvKiBTZWFyY2ggaGFzaCB0YWJsZSAqLwogCWVudHJ5ID0gQXJj aGl2ZWRXQUxfbG9va3VwKHByaXZhdGVJbmZvLT5hcmNoaXZlX3dhbF9odGFiLCBmbmFtZSk7CkBA IC0zOTUsMjggKzQzMCw1OSBAQCBnZXRfYXJjaGl2ZV93YWxfZW50cnkoY29uc3QgY2hhciAqZm5h bWUsIFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8sCiAJICovCiAJd2hpbGUgKDEpCiAJewor CQkvKgorCQkgKiBUaGUgV0FMIGZpbGUgZW50cnkgY3VycmVudGx5IGJlaW5nIHByb2Nlc3NlZCBt YXkgY2hhbmdlIGR1cmluZworCQkgKiBhcmNoaXZlIHN0cmVhbWVyIGV4ZWN1dGlvbi4gVGhlcmVm b3JlLCBtYWludGFpbiBhIGxvY2FsIHZhcmlhYmxlIHRvCisJCSAqIHJlZmVyZW5jZSB0aGUgcHJl dmlvdXMgZW50cnksIGVuc3VyaW5nIHRoYXQgYW55IHJlbWFpbmluZyBkYXRhIGluCisJCSAqIGl0 cyBidWZmZXIgaXMgc3VjY2Vzc2Z1bGx5IGZsdXNoZWQgdG8gdGhlIHRlbXBvcmFyeSBmaWxlIGJl Zm9yZQorCQkgKiBzd2l0Y2hpbmcgdG8gdGhlIG5leHQgV0FMIGVudHJ5LgorCQkgKi8KKwkJZW50 cnkgPSBwcml2YXRlSW5mby0+Y3VyX2ZpbGU7CisKIAkJLyogRmV0Y2ggbW9yZSBkYXRhICovCi0J CWlmIChyZWFkX2FyY2hpdmVfZmlsZShwcml2YXRlSW5mbywgUkVBRF9DSFVOS19TSVpFKSA9PSAw KQotCQkJYnJlYWs7CQkJCS8qIGFyY2hpdmUgZmlsZSBlbmRlZCAqLworCQlpZiAoZW50cnkgPT0g TlVMTCB8fCBlbnRyeS0+YnVmLT5sZW4gPT0gMCkKKwkJeworCQkJaWYgKHJlYWRfYXJjaGl2ZV9m aWxlKHByaXZhdGVJbmZvLCBSRUFEX0NIVU5LX1NJWkUpID09IDApCisJCQkJYnJlYWs7CQkJLyog YXJjaGl2ZSBmaWxlIGVuZGVkICovCisJCX0KIAogCQkvKgogCQkgKiBBcmNoaXZlZCBzdHJlYW1l ciBpcyByZWFkaW5nIGEgbm9uLVdBTCBmaWxlIG9yIGFuIGlycmVsZXZhbnQgV0FMCiAJCSAqIGZp bGUuCiAJCSAqLwotCQlpZiAocHJpdmF0ZUluZm8tPmN1cl9maWxlID09IE5VTEwpCisJCWlmIChl bnRyeSA9PSBOVUxMKQogCQkJY29udGludWU7CiAKLQkJZW50cnkgPSBwcml2YXRlSW5mby0+Y3Vy X2ZpbGU7Ci0KIAkJLyogRm91bmQgdGhlIHJlcXVpcmVkIGVudHJ5ICovCiAJCWlmIChzdHJjbXAo Zm5hbWUsIGVudHJ5LT5mbmFtZSkgPT0gMCkKIAkJCXJldHVybiBlbnRyeTsKIAotCQkvKiBXQUwg c2VnbWVudHMgbXVzdCBiZSBhcmNoaXZlZCBpbiBvcmRlciAqLwotCQlwZ19sb2dfZXJyb3IoIldB TCBmaWxlcyBhcmUgbm90IGFyY2hpdmVkIGluIHNlcXVlbnRpYWwgb3JkZXIiKTsKLQkJcGdfbG9n X2Vycm9yX2RldGFpbCgiRXhwZWN0aW5nIHNlZ21lbnQgXCIlc1wiIGJ1dCBmb3VuZCBcIiVzXCIu IiwKLQkJCQkJCQlmbmFtZSwgZW50cnktPmZuYW1lKTsKLQkJZXhpdCgxKTsKKwkJLyoKKwkJICog QXJjaGl2ZSBzdHJlYW1lciBpcyBjdXJyZW50bHkgcmVhZGluZyBhIGZpbGUgdGhhdCBpc24ndCB0 aGUgb25lCisJCSAqIGFza2VkIGZvciwgYnV0IGl0J3MgcmVxdWlyZWQgaW4gdGhlIGZ1dHVyZS4g SXQgc2hvdWxkIGJlIHdyaXR0ZW4gdG8KKwkJICogYSB0ZW1wb3JhcnkgbG9jYXRpb24gZm9yIHJl dHJpZXZhbCB3aGVuIG5lZWRlZC4KKwkJICovCisKKwkJLyogQ3JlYXRlIGEgdGVtcG9yYXJ5IGZp bGUgaWYgb25lIGRvZXMgbm90IGFscmVhZHkgZXhpc3QgKi8KKwkJaWYgKCFlbnRyeS0+c3BpbGxl ZCkKKwkJeworCQkJd3JpdGVfZnAgPSBwcmVwYXJlX3RtcF93cml0ZShlbnRyeS0+Zm5hbWUpOwor CQkJZW50cnktPnNwaWxsZWQgPSB0cnVlOworCQl9CisKKwkJLyogRmx1c2ggZGF0YSBmcm9tIHRo ZSBidWZmZXIgdG8gdGhlIGZpbGUgKi8KKwkJcGVyZm9ybV90bXBfd3JpdGUoZW50cnktPmZuYW1l LCBlbnRyeS0+YnVmLCB3cml0ZV9mcCk7CisJCXJlc2V0U3RyaW5nSW5mbyhlbnRyeS0+YnVmKTsK KworCQkvKgorCQkgKiBUaGUgY2hhbmdlIGluIHRoZSBjdXJyZW50IHNlZ21lbnQgZW50cnkgaW5k aWNhdGVzIHRoYXQgdGhlIHJlYWRpbmcKKwkJICogb2YgdGhpcyBmaWxlIGhhcyBlbmRlZC4KKwkJ ICovCisJCWlmIChlbnRyeSAhPSBwcml2YXRlSW5mby0+Y3VyX2ZpbGUgJiYgd3JpdGVfZnAgIT0g TlVMTCkKKwkJeworCQkJZmNsb3NlKHdyaXRlX2ZwKTsKKwkJCXdyaXRlX2ZwID0gTlVMTDsKKwkJ fQogCX0KIAogCS8qIFJlcXVlc3RlZCBXQUwgc2VnbWVudCBub3QgZm91bmQgKi8KQEAgLTQ1NCw3 ICs1MjAsODggQEAgcmVhZF9hcmNoaXZlX2ZpbGUoWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5m bywgU2l6ZSBjb3VudCkKIH0KIAogLyoKLSAqIENyZWF0ZSBhbiBhc3RyZWFtZXIgdGhhdCBjYW4g cmVhZCBXQUwgZnJvbSBhIHRhciBmaWxlLgorICogU2V0IHVwIGEgdGVtcG9yYXJ5IGRpcmVjdG9y eSB0byB0ZW1wb3JhcmlseSBzdG9yZSBXQUwgc2VnbWVudHMuCisgKi8KK3N0YXRpYyB2b2lkCitz ZXR1cF90bXB3YWxfZGlyKGNvbnN0IGNoYXIgKndhbGRpcikKK3sKKwljaGFyCSAgICp0ZW1wbGF0 ZTsKKworCS8qCisJICogVXNlIHRoZSBkaXJlY3Rvcnkgc3BlY2lmaWVkIGJ5IHRoZSBUTVBESVIg ZW52aXJvbm1lbnQgdmFyaWFibGUuIElmIGl0J3MKKwkgKiBub3Qgc2V0LCB1c2UgdGhlIHByb3Zp ZGVkIFdBTCBkaXJlY3RvcnkgdG8gZXh0cmFjdCBXQUwgZmlsZQorCSAqIHRlbXBvcmFyaWx5Lgor CSAqLworCXRlbXBsYXRlID0gcHNwcmludGYoIiVzL3dhbGR1bXBfdG1wLVhYWFhYWCIsCisJCQkJ CQlnZXRlbnYoIlRNUERJUiIpID8gZ2V0ZW52KCJUTVBESVIiKSA6IHdhbGRpcik7CisJVG1wV2Fs U2VnRGlyID0gbWtkdGVtcCh0ZW1wbGF0ZSk7CisKKwlpZiAoVG1wV2FsU2VnRGlyID09IE5VTEwp CisJCXBnX2ZhdGFsKCJjb3VsZCBub3QgY3JlYXRlIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwgdGVt cGxhdGUpOworCisJY2Fub25pY2FsaXplX3BhdGgoVG1wV2FsU2VnRGlyKTsKKworCXBnX2xvZ19k ZWJ1ZygiY3JlYXRlZCBkaXJlY3RvcnkgXCIlc1wiIiwgVG1wV2FsU2VnRGlyKTsKK30KKworLyoK KyAqIFJlbW92ZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGF0IGV4aXQsIGlmIGFueS4KKyAqLworc3Rh dGljIHZvaWQKK2NsZWFudXBfdG1wd2FsX2Rpcl9hdGV4aXQodm9pZCkKK3sKKwlybXRyZWUoVG1w V2FsU2VnRGlyLCB0cnVlKTsKK30KKworLyoKKyAqIENyZWF0ZSBhbiBlbXB0eSBwbGFjZWhvbGRl ciBmaWxlIGFuZCByZXR1cm4gaXRzIGhhbmRsZS4KKyAqLworc3RhdGljIEZJTEUgKgorcHJlcGFy ZV90bXBfd3JpdGUoY29uc3QgY2hhciAqZm5hbWUpCit7CisJY2hhcgkJZnBhdGhbTUFYUEdQQVRI XTsKKwlGSUxFCSAgICpmaWxlOworCisJc25wcmludGYoZnBhdGgsIE1BWFBHUEFUSCwgIiVzLyVz IiwgVG1wV2FsU2VnRGlyLCBmbmFtZSk7CisKKwkvKiBDcmVhdGUgYW4gZW1wdHkgcGxhY2Vob2xk ZXIgKi8KKwlmaWxlID0gZm9wZW4oZnBhdGgsIFBHX0JJTkFSWV9XKTsKKwlpZiAoZmlsZSA9PSBO VUxMKQorCQlwZ19mYXRhbCgiY291bGQgbm90IGNyZWF0ZSBmaWxlIFwiJXNcIjogJW0iLCBmcGF0 aCk7CisKKyNpZm5kZWYgV0lOMzIKKwlpZiAoY2htb2QoZnBhdGgsIHBnX2ZpbGVfY3JlYXRlX21v ZGUpKQorCQlwZ19mYXRhbCgiY291bGQgbm90IHNldCBwZXJtaXNzaW9ucyBvbiBmaWxlIFwiJXNc IjogJW0iLAorCQkJCSBmcGF0aCk7CisjZW5kaWYKKworCXBnX2xvZ19kZWJ1Zygic3BpbGxpbmcg dG8gdGVtcG9yYXJ5IGZpbGUgXCIlc1wiIiwgZnBhdGgpOworCisJcmV0dXJuIGZpbGU7Cit9CisK Ky8qCisgKiBXcml0ZSBidWZmZXIgZGF0YSB0byB0aGUgZ2l2ZW4gZmlsZSBoYW5kbGUuCisgKi8K K3N0YXRpYyB2b2lkCitwZXJmb3JtX3RtcF93cml0ZShjb25zdCBjaGFyICpmbmFtZSwgU3RyaW5n SW5mbyBidWYsIEZJTEUgKmZpbGUpCit7CisJQXNzZXJ0KGZpbGUpOworCisJZXJybm8gPSAwOwor CWlmIChidWYtPmxlbiA+IDAgJiYgZndyaXRlKGJ1Zi0+ZGF0YSwgYnVmLT5sZW4sIDEsIGZpbGUp ICE9IDEpCisJeworCQkvKgorCQkgKiBJZiB3cml0ZSBkaWRuJ3Qgc2V0IGVycm5vLCBhc3N1bWUg cHJvYmxlbSBpcyBubyBkaXNrIHNwYWNlCisJCSAqLworCQlpZiAoZXJybm8gPT0gMCkKKwkJCWVy cm5vID0gRU5PU1BDOworCQlwZ19mYXRhbCgiY291bGQgbm90IHdyaXRlIHRvIGZpbGUgXCIlc1wi OiAlbSIsIGZuYW1lKTsKKwl9Cit9CisKKy8qCisgKiBDcmVhdGUgYW4gYXN0cmVhbWVyIHRoYXQg Y2FuIHJlYWQgV0FMIGZyb20gdGFyIGZpbGUuCiAgKi8KIHN0YXRpYyBhc3RyZWFtZXIgKgogYXN0 cmVhbWVyX3dhbGR1bXBfbmV3KFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8pCmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jIGIvc3JjL2Jpbi9wZ193YWxkdW1w L3BnX3dhbGR1bXAuYwppbmRleCA5MGZjMTNmMzYwOS4uMTE0OTY5MjE3ZDggMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ193YWxkdW1w L3BnX3dhbGR1bXAuYwpAQCAtNDc4LDEwICs0NzgsMTQgQEAgVGFyV0FMRHVtcFJlYWRQYWdlKFhM b2dSZWFkZXJTdGF0ZSAqc3RhdGUsIFhMb2dSZWNQdHIgdGFyZ2V0UGFnZVB0ciwgaW50IHJlcUxl biwKIAkJcmV0dXJuIC0xOwogCiAJLyoKLQkgKiBJZiB0aGUgdGFyZ2V0IHBhZ2UgaXMgaW4gYSBk aWZmZXJlbnQgc2VnbWVudCwgZnJlZSB0aGUgYnVmZmVyIHNwYWNlCi0JICogb2NjdXBpZWQgYnkg dGhlIHByZXZpb3VzIHNlZ21lbnQgZGF0YS4gU2luY2UgcGdfd2FsZHVtcCBuZXZlciByZXF1ZXN0 cwotCSAqIHRoZSBzYW1lIFdBTCBieXRlcyB0d2ljZSwgbW92aW5nIHRvIGEgbmV3IHNlZ21lbnQg aW1wbGllcyB0aGUgcHJldmlvdXMKLQkgKiBidWZmZXIncyBkYXRhIGFuZCB0aGF0IHNlZ21lbnQg d2lsbCBub3QgYmUgbmVlZGVkIGFnYWluLgorCSAqIElmIHRoZSB0YXJnZXQgcGFnZSBpcyBpbiBh IGRpZmZlcmVudCBzZWdtZW50LCBmcmVlIHRoZSBidWZmZXIgYW5kL29yCisJICogdGVtcG9yYXJ5 IGZpbGUgZGlzayBzcGFjZSBvY2N1cGllZCBieSB0aGUgcHJldmlvdXMgc2VnbWVudCdzIGRhdGEu CisJICogU2luY2UgcGdfd2FsZHVtcCBuZXZlciByZXF1ZXN0cyB0aGUgc2FtZSBXQUwgYnl0ZXMg dHdpY2UsIG1vdmluZyB0byBhCisJICogbmV3IHNlZ21lbnQgaW1wbGllcyB0aGUgcHJldmlvdXMg YnVmZmVyJ3MgZGF0YSBhbmQgdGhhdCBzZWdtZW50IHdpbGwKKwkgKiBub3QgYmUgbmVlZGVkIGFn YWluLgorCSAqCisJICogQWZ0ZXJ3YXJkLCBjaGVjayBmb3IgdGhlIG5leHQgcmVxdWlyZWQgV0FM IHNlZ21lbnQncyBwaHlzaWNhbCBleGlzdGVuY2UKKwkgKiBpbiB0aGUgdGVtcG9yYXJ5IGRpcmVj dG9yeSBmaXJzdCBiZWZvcmUgaW52b2tpbmcgdGhlIGFyY2hpdmUgc3RyZWFtZXIuCiAJICovCiAJ Y3VyU2VnTm8gPSBzdGF0ZS0+c2VnLndzX3NlZ25vOwogCWlmICghWExCeXRlSW5TZWcodGFyZ2V0 UGFnZVB0ciwgY3VyU2VnTm8sIFdhbFNlZ1N6KSkKQEAgLTQ5Nyw2ICs1MDEsMTMgQEAgVGFyV0FM RHVtcFJlYWRQYWdlKFhMb2dSZWFkZXJTdGF0ZSAqc3RhdGUsIFhMb2dSZWNQdHIgdGFyZ2V0UGFn ZVB0ciwgaW50IHJlcUxlbiwKIAkJc3RhdGUtPnNlZy53c190bGkgPSBwcml2YXRlLT50aW1lbGlu ZTsKIAkJc3RhdGUtPnNlZy53c19zZWdubyA9IG5leHRTZWdObzsKIAorCQkvKiBDbG9zZSB0aGUg V0FMIHNlZ21lbnQgZmlsZSBpZiBpdCBpcyBjdXJyZW50bHkgb3BlbiAqLworCQlpZiAoc3RhdGUt PnNlZy53c19maWxlID49IDApCisJCXsKKwkJCWNsb3NlKHN0YXRlLT5zZWcud3NfZmlsZSk7CisJ CQlzdGF0ZS0+c2VnLndzX2ZpbGUgPSAtMTsKKwkJfQorCiAJCS8qCiAJCSAqIElmIGluIHByZS1y ZWFkaW5nIG1vZGUgKHByaW9yIHRvIGFjdHVhbCBkZWNvZGluZyksIGRvIG5vdCBkZWxldGUgYW55 CiAJCSAqIGVudHJpZXMgdGhhdCBtaWdodCBiZSByZXF1ZXN0ZWQgYWdhaW4gb25jZSB0aGUgZGVj b2RpbmcgbG9vcCBzdGFydHMuCkBAIC01MDcsOSArNTE4LDIwIEBAIFRhcldBTER1bXBSZWFkUGFn ZShYTG9nUmVhZGVyU3RhdGUgKnN0YXRlLCBYTG9nUmVjUHRyIHRhcmdldFBhZ2VQdHIsIGludCBy ZXFMZW4sCiAJCQlYTG9nRmlsZU5hbWUoZm5hbWUsIHN0YXRlLT5zZWcud3NfdGxpLCBjdXJTZWdO bywgV2FsU2VnU3opOwogCQkJZnJlZV9hcmNoaXZlX3dhbF9lbnRyeShmbmFtZSwgcHJpdmF0ZSk7 CiAJCX0KKworCQkvKgorCQkgKiBJZiB0aGUgbmV4dCBzZWdtZW50IGV4aXN0cywgb3BlbiBpdCBh bmQgY29udGludWUgcmVhZGluZyBmcm9tIHRoZXJlCisJCSAqLworCQlYTG9nRmlsZU5hbWUoZm5h bWUsIHN0YXRlLT5zZWcud3NfdGxpLCBuZXh0U2VnTm8sIFdhbFNlZ1N6KTsKKwkJc3RhdGUtPnNl Zy53c19maWxlID0gb3Blbl9maWxlX2luX2RpcmVjdG9yeShUbXBXYWxTZWdEaXIsIGZuYW1lKTsK IAl9CiAKLQkvKiBSZWFkIHRoZSBXQUwgcGFnZSBmcm9tIHRoZSBhcmNoaXZlIHN0cmVhbWVyICov CisJLyogQ29udGludWUgcmVhZGluZyBmcm9tIHRoZSBvcGVuIFdBTCBzZWdtZW50LCBpZiBhbnkg Ki8KKwlpZiAoc3RhdGUtPnNlZy53c19maWxlID49IDApCisJCXJldHVybiBXQUxEdW1wUmVhZFBh Z2Uoc3RhdGUsIHRhcmdldFBhZ2VQdHIsIGNvdW50LCB0YXJnZXRQdHIsCisJCQkJCQkJICAgcmVh ZEJ1ZmYpOworCisJLyogT3RoZXJ3aXNlLCByZWFkIHRoZSBXQUwgcGFnZSBmcm9tIHRoZSBhcmNo aXZlIHN0cmVhbWVyICovCiAJcmV0dXJuIHJlYWRfYXJjaGl2ZV93YWxfcGFnZShwcml2YXRlLCB0 YXJnZXRQYWdlUHRyLCBjb3VudCwgcmVhZEJ1ZmYsCiAJCQkJCQkJCSBXYWxTZWdTeik7CiB9CmRp ZmYgLS1naXQgYS9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5oIGIvc3JjL2Jpbi9wZ193 YWxkdW1wL3BnX3dhbGR1bXAuaAppbmRleCA1NGQ1NGE4YTcxOC4uNmMyNDJiN2ZjYmMgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmgKKysrIGIvc3JjL2Jpbi9wZ193 YWxkdW1wL3BnX3dhbGR1bXAuaApAQCAtMTgsNiArMTgsOSBAQAogc3RydWN0IEFyY2hpdmVkV0FM RmlsZTsKIHN0cnVjdCBBcmNoaXZlZFdBTF9oYXNoOwogCisvKiBUZW1wb3JhcnkgZGlyZWN0b3J5 ICovCitleHRlcm4gY2hhciAqVG1wV2FsU2VnRGlyOworCiAvKiBDb250YWlucyB0aGUgbmVjZXNz YXJ5IGluZm9ybWF0aW9uIHRvIGRyaXZlIFdBTCBkZWNvZGluZyAqLwogdHlwZWRlZiBzdHJ1Y3Qg WExvZ0R1bXBQcml2YXRlCiB7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3dhbGR1bXAvdC8wMDFf YmFzaWMucGwgYi9zcmMvYmluL3BnX3dhbGR1bXAvdC8wMDFfYmFzaWMucGwKaW5kZXggOWFiNzQ1 N2U5ZTIuLjk4NTRjOTM5MDA3IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvdC8wMDFf YmFzaWMucGwKKysrIGIvc3JjL2Jpbi9wZ193YWxkdW1wL3QvMDAxX2Jhc2ljLnBsCkBAIC03LDYg KzcsNyBAQCB1c2UgQ3dkOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9z dGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKK3VzZSBMaXN0OjpVdGlsIHF3 KHNodWZmbGUpOwogCiBteSAkdGFyID0gJEVOVntUQVJ9OwogCkBAIC0zMTIsNyArMzEzLDcgQEAg c3ViIGdlbmVyYXRlX2FyY2hpdmUKIAl9CiAJY2xvc2VkaXIgJGRoOwogCi0JQGZpbGVzID0gc29y dCBAZmlsZXM7CisJQGZpbGVzID0gc2h1ZmZsZSBAZmlsZXM7CiAKIAkjIG1vdmUgaW50byB0aGUg V0FMIGRpcmVjdG9yeSBiZWZvcmUgYXJjaGl2aW5nIGZpbGVzCiAJbXkgJGN3ZCA9IGdldGN3ZDsK LS0gCjIuNDcuMQoK --000000000000db2415064c0a2d81 Content-Type: application/octet-stream; name="v14-0008-pg_verifybackup-Delay-default-WAL-directory-prep.patch" Content-Disposition: attachment; filename="v14-0008-pg_verifybackup-Delay-default-WAL-directory-prep.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm965wz37 RnJvbSAzZWNmNjQwMDA0YzdhYWNhMDQzMDEwMWEyZDg4ZTNkMDEwZTA3NDQwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMTYgSnVsIDIwMjUgMTQ6NDc6NDMgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxNCAwOC8xMV0g 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= --000000000000db2415064c0a2d81 Content-Type: application/octet-stream; name="v14-0009-pg_verifybackup-Rename-the-wal-directory-switch-.patch" Content-Disposition: attachment; filename="v14-0009-pg_verifybackup-Rename-the-wal-directory-switch-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm9660258 RnJvbSA5YWIzOWU5NmNmZWNkZmIwYzNlYzE2MzBjYzViNDcxOGZhMzk4NmRlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFR1 ZSwgMjUgTm92IDIwMjUgMTc6MzI6MTQgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxNCAwOS8xMV0g 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= --000000000000db2415064c0a2d81 Content-Type: application/octet-stream; name="v14-0010-pg_verifybackup-Enabled-WAL-parsing-for-tar-form.patch" Content-Disposition: attachment; filename="v14-0010-pg_verifybackup-Enabled-WAL-parsing-for-tar-form.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm9663p49 RnJvbSA5NjA0MDVhYzNiY2FhZjUxNDAxOWIwMzQ0ZGE5ZjNlOWZiYWUwZTE5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFR1 ZSwgMjUgTm92IDIwMjUgMTc6MzQ6MjYgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxNCAxMC8xMV0g cGdfdmVyaWZ5YmFja3VwOiBFbmFibGVkIFdBTCBwYXJzaW5nIGZvciB0YXItZm9ybWF0CiBiYWNr dXAKCk5vdyB0aGF0IHBnX3dhbGR1bXAgc3VwcG9ydHMgZGVjb2RpbmcgZnJvbSB0YXIgYXJjaGl2 ZXMsIHdlIHNob3VsZApsZXZlcmFnZSB0aGlzIGZ1bmN0aW9uYWxpdHkgdG8gcmVtb3ZlIHRoZSBw cmV2aW91cyByZXN0cmljdGlvbiBvbiBXQUwKcGFyc2luZyBmb3IgdGFyLWJhY2tlZCBmb3JtYXRz LgotLS0KIGRvYy9zcmMvc2dtbC9yZWYvcGdfdmVyaWZ5YmFja3VwLnNnbWwgICAgICAgICB8ICA1 ICstCiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9wZ192ZXJpZnliYWNrdXAuYyAgICAgfCA2NiAr KysrKysrKysrKysrLS0tLS0tCiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAwMl9hbGdvcml0 aG0ucGwgICAgfCAgNCAtLQogc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDNfY29ycnVwdGlv bi5wbCAgIHwgIDQgKy0KIHNyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDA4X3VudGFyLnBsICAg ICAgICB8ICA1ICstCiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAxMF9jbGllbnRfdW50YXIu cGwgfCAgNSArLQogNiBmaWxlcyBjaGFuZ2VkLCA1MCBpbnNlcnRpb25zKCspLCAzOSBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX3ZlcmlmeWJhY2t1cC5zZ21s IGIvZG9jL3NyYy9zZ21sL3JlZi9wZ192ZXJpZnliYWNrdXAuc2dtbAppbmRleCBlOWI4YmZkNTFi MS4uMTZiNTBiNWE0ZGYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfdmVyaWZ5YmFj a3VwLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ192ZXJpZnliYWNrdXAuc2dtbApAQCAt MzYsMTAgKzM2LDcgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAgICA8bGl0ZXJhbD5iYWNr dXBfbWFuaWZlc3Q8L2xpdGVyYWw+IGdlbmVyYXRlZCBieSB0aGUgc2VydmVyIGF0IHRoZSB0aW1l CiAgICBvZiB0aGUgYmFja3VwLiBUaGUgYmFja3VwIG1heSBiZSBzdG9yZWQgZWl0aGVyIGluIHRo ZSAicGxhaW4iIG9yIHRoZSAidGFyIgogICAgZm9ybWF0OyB0aGlzIGluY2x1ZGVzIHRhci1mb3Jt YXQgYmFja3VwcyBjb21wcmVzc2VkIHdpdGggYW55IGFsZ29yaXRobQotICAgc3VwcG9ydGVkIGJ5 IDxhcHBsaWNhdGlvbj5wZ19iYXNlYmFja3VwPC9hcHBsaWNhdGlvbj4uIEhvd2V2ZXIsIGF0IHBy ZXNlbnQsCi0gICA8bGl0ZXJhbD5XQUw8L2xpdGVyYWw+IHZlcmlmaWNhdGlvbiBpcyBzdXBwb3J0 ZWQgb25seSBmb3IgcGxhaW4tZm9ybWF0Ci0gICBiYWNrdXBzLiBUaGVyZWZvcmUsIGlmIHRoZSBi YWNrdXAgaXMgc3RvcmVkIGluIHRhci1mb3JtYXQsIHRoZQotICAgPGxpdGVyYWw+LW4sIC0tbm8t cGFyc2Utd2FsPC9saXRlcmFsPiBvcHRpb24gc2hvdWxkIGJlIHVzZWQuCisgICBzdXBwb3J0ZWQg YnkgPGFwcGxpY2F0aW9uPnBnX2Jhc2ViYWNrdXA8L2FwcGxpY2F0aW9uPi4KICAgPC9wYXJhPgog CiAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvcGdfdmVyaWZ5 YmFja3VwLmMgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9wZ192ZXJpZnliYWNrdXAuYwppbmRl eCAzNDUyMDU0NmJjMy4uOTM1YWI4ZmFmYTggMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdmVyaWZ5 YmFja3VwL3BnX3ZlcmlmeWJhY2t1cC5jCisrKyBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3Bn X3ZlcmlmeWJhY2t1cC5jCkBAIC03NCw3ICs3NCw5IEBAIHBnX25vcmV0dXJuIHN0YXRpYyB2b2lk IHJlcG9ydF9tYW5pZmVzdF9lcnJvcihKc29uTWFuaWZlc3RQYXJzZUNvbnRleHQgKmNvbnRleHQs CiAJCQkJCQkJCQkJCSAgY29uc3QgY2hhciAqZm10LC4uLikKIAkJCXBnX2F0dHJpYnV0ZV9wcmlu dGYoMiwgMyk7CiAKLXN0YXRpYyB2b2lkIHZlcmlmeV90YXJfYmFja3VwKHZlcmlmaWVyX2NvbnRl eHQgKmNvbnRleHQsIERJUiAqZGlyKTsKK3N0YXRpYyB2b2lkIHZlcmlmeV90YXJfYmFja3VwKHZl cmlmaWVyX2NvbnRleHQgKmNvbnRleHQsIERJUiAqZGlyLAorCQkJCQkJCSAgY2hhciAqKmJhc2Vf YXJjaGl2ZV9wYXRoLAorCQkJCQkJCSAgY2hhciAqKndhbF9hcmNoaXZlX3BhdGgpOwogc3RhdGlj IHZvaWQgdmVyaWZ5X3BsYWluX2JhY2t1cF9kaXJlY3RvcnkodmVyaWZpZXJfY29udGV4dCAqY29u dGV4dCwKIAkJCQkJCQkJCQkgIGNoYXIgKnJlbHBhdGgsIGNoYXIgKmZ1bGxwYXRoLAogCQkJCQkJ CQkJCSAgRElSICpkaXIpOwpAQCAtODMsNyArODUsOSBAQCBzdGF0aWMgdm9pZCB2ZXJpZnlfcGxh aW5fYmFja3VwX2ZpbGUodmVyaWZpZXJfY29udGV4dCAqY29udGV4dCwgY2hhciAqcmVscGF0aCwK IHN0YXRpYyB2b2lkIHZlcmlmeV9jb250cm9sX2ZpbGUoY29uc3QgY2hhciAqY29udHJvbHBhdGgs CiAJCQkJCQkJCXVpbnQ2NCBtYW5pZmVzdF9zeXN0ZW1faWRlbnRpZmllcik7CiBzdGF0aWMgdm9p ZCBwcmVjaGVja190YXJfYmFja3VwX2ZpbGUodmVyaWZpZXJfY29udGV4dCAqY29udGV4dCwgY2hh ciAqcmVscGF0aCwKLQkJCQkJCQkJCSBjaGFyICpmdWxscGF0aCwgU2ltcGxlUHRyTGlzdCAqdGFy ZmlsZXMpOworCQkJCQkJCQkJIGNoYXIgKmZ1bGxwYXRoLCBTaW1wbGVQdHJMaXN0ICp0YXJmaWxl cywKKwkJCQkJCQkJCSBjaGFyICoqYmFzZV9hcmNoaXZlX3BhdGgsCisJCQkJCQkJCQkgY2hhciAq KndhbF9hcmNoaXZlX3BhdGgpOwogc3RhdGljIHZvaWQgdmVyaWZ5X3Rhcl9maWxlKHZlcmlmaWVy X2NvbnRleHQgKmNvbnRleHQsIGNoYXIgKnJlbHBhdGgsCiAJCQkJCQkJY2hhciAqZnVsbHBhdGgs IGFzdHJlYW1lciAqc3RyZWFtZXIpOwogc3RhdGljIHZvaWQgcmVwb3J0X2V4dHJhX2JhY2t1cF9m aWxlcyh2ZXJpZmllcl9jb250ZXh0ICpjb250ZXh0KTsKQEAgLTEzNiw2ICsxNDAsOCBAQCBtYWlu KGludCBhcmdjLCBjaGFyICoqYXJndikKIAlib29sCQlub19wYXJzZV93YWwgPSBmYWxzZTsKIAli b29sCQlxdWlldCA9IGZhbHNlOwogCWNoYXIJICAgKndhbF9wYXRoID0gTlVMTDsKKwljaGFyCSAg ICpiYXNlX2FyY2hpdmVfcGF0aCA9IE5VTEw7CisJY2hhcgkgICAqd2FsX2FyY2hpdmVfcGF0aCA9 IE5VTEw7CiAJY2hhcgkgICAqcGdfd2FsZHVtcF9wYXRoID0gTlVMTDsKIAlESVIJCSAgICpkaXI7 CiAKQEAgLTMyNywxNyArMzMzLDYgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCXBm cmVlKHBhdGgpOwogCX0KIAotCS8qCi0JICogWFhYOiBJbiB0aGUgZnV0dXJlLCB3ZSBzaG91bGQg Y29uc2lkZXIgZW5oYW5jaW5nIHBnX3dhbGR1bXAgdG8gcmVhZCBXQUwKLQkgKiBmaWxlcyBmcm9t IGFuIGFyY2hpdmUuCi0JICovCi0JaWYgKCFub19wYXJzZV93YWwgJiYgY29udGV4dC5mb3JtYXQg PT0gJ3QnKQotCXsKLQkJcGdfbG9nX2Vycm9yKCJwZ193YWxkdW1wIGNhbm5vdCByZWFkIHRhciBm aWxlcyIpOwotCQlwZ19sb2dfZXJyb3JfaGludCgiWW91IG11c3QgdXNlIC1uLy0tbm8tcGFyc2Ut d2FsIHdoZW4gdmVyaWZ5aW5nIGEgdGFyLWZvcm1hdCBiYWNrdXAuIik7Ci0JCWV4aXQoMSk7Ci0J fQotCiAJLyoKIAkgKiBQZXJmb3JtIHRoZSBhcHByb3ByaWF0ZSB0eXBlIG9mIHZlcmlmaWNhdGlv biBhcHByb3ByaWF0ZSBiYXNlZCBvbiB0aGUKIAkgKiBiYWNrdXAgZm9ybWF0LiBUaGlzIHdpbGwg Y2xvc2UgJ2RpcicuCkBAIC0zNDYsNyArMzQxLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFy Z3YpCiAJCXZlcmlmeV9wbGFpbl9iYWNrdXBfZGlyZWN0b3J5KCZjb250ZXh0LCBOVUxMLCBjb250 ZXh0LmJhY2t1cF9kaXJlY3RvcnksCiAJCQkJCQkJCQkgIGRpcik7CiAJZWxzZQotCQl2ZXJpZnlf dGFyX2JhY2t1cCgmY29udGV4dCwgZGlyKTsKKwkJdmVyaWZ5X3Rhcl9iYWNrdXAoJmNvbnRleHQs IGRpciwgJmJhc2VfYXJjaGl2ZV9wYXRoLCAmd2FsX2FyY2hpdmVfcGF0aCk7CiAKIAkvKgogCSAq IFRoZSAibWF0Y2hlZCIgZmxhZyBzaG91bGQgbm93IGJlIHNldCBvbiBldmVyeSBlbnRyeSBpbiB0 aGUgaGFzaCB0YWJsZS4KQEAgLTM2NCw5ICszNTksMjggQEAgbWFpbihpbnQgYXJnYywgY2hhciAq KmFyZ3YpCiAJaWYgKGNvbnRleHQuZm9ybWF0ID09ICdwJyAmJiAhY29udGV4dC5za2lwX2NoZWNr c3VtcykKIAkJdmVyaWZ5X2JhY2t1cF9jaGVja3N1bXMoJmNvbnRleHQpOwogCi0JLyogQnkgZGVm YXVsdCwgbG9vayBmb3IgdGhlIFdBTCBpbiB0aGUgYmFja3VwIGRpcmVjdG9yeSwgdG9vLiAqLwor CS8qCisJICogQnkgZGVmYXVsdCwgV0FMIGZpbGVzIGFyZSBleHBlY3RlZCB0byBiZSBmb3VuZCBp biB0aGUgYmFja3VwIGRpcmVjdG9yeQorCSAqIGZvciBwbGFpbi1mb3JtYXQgYmFja3Vwcy4gSW4g dGhlIGNhc2Ugb2YgdGFyLWZvcm1hdCBiYWNrdXBzLCBpZiBhCisJICogc2VwYXJhdGUgV0FMIGFy Y2hpdmUgaXMgbm90IGZvdW5kLCB0aGUgV0FMIGZpbGVzIGFyZSBtb3N0IGxpa2VseQorCSAqIGlu Y2x1ZGVkIHdpdGhpbiB0aGUgbWFpbiBkYXRhIGRpcmVjdG9yeSBhcmNoaXZlLgorCSAqLwogCWlm ICh3YWxfcGF0aCA9PSBOVUxMKQotCQl3YWxfcGF0aCA9IHBzcHJpbnRmKCIlcy9wZ193YWwiLCBj b250ZXh0LmJhY2t1cF9kaXJlY3RvcnkpOworCXsKKwkJaWYgKGNvbnRleHQuZm9ybWF0ID09ICdw JykKKwkJCXdhbF9wYXRoID0gcHNwcmludGYoIiVzL3BnX3dhbCIsIGNvbnRleHQuYmFja3VwX2Rp cmVjdG9yeSk7CisJCWVsc2UgaWYgKHdhbF9hcmNoaXZlX3BhdGgpCisJCQl3YWxfcGF0aCA9IHdh bF9hcmNoaXZlX3BhdGg7CisJCWVsc2UgaWYgKGJhc2VfYXJjaGl2ZV9wYXRoKQorCQkJd2FsX3Bh dGggPSBiYXNlX2FyY2hpdmVfcGF0aDsKKwkJZWxzZQorCQl7CisJCQlwZ19sb2dfZXJyb3IoIldB TCBhcmNoaXZlIG5vdCBmb3VuZCIpOworCQkJcGdfbG9nX2Vycm9yX2hpbnQoIlNwZWNpZnkgdGhl IGNvcnJlY3QgcGF0aCB1c2luZyB0aGUgb3B0aW9uIC13Ly0td2FsLXBhdGguICAiCisJCQkJCQkJ ICAiT3IgeW91IG11c3QgdXNlIC1uLy0tbm8tcGFyc2Utd2FsIHdoZW4gdmVyaWZ5aW5nIGEgdGFy LWZvcm1hdCBiYWNrdXAuIik7CisJCQlleGl0KDEpOworCQl9CisJfQogCiAJLyoKIAkgKiBUcnkg dG8gcGFyc2UgdGhlIHJlcXVpcmVkIHJhbmdlcyBvZiBXQUwgcmVjb3JkcywgdW5sZXNzIHdlIHdl cmUgdG9sZApAQCAtNzg3LDcgKzgwMSw4IEBAIHZlcmlmeV9jb250cm9sX2ZpbGUoY29uc3QgY2hh ciAqY29udHJvbHBhdGgsIHVpbnQ2NCBtYW5pZmVzdF9zeXN0ZW1faWRlbnRpZmllcikKICAqIGNs b3NlIHdoZW4gd2UncmUgZG9uZSB3aXRoIGl0LgogICovCiBzdGF0aWMgdm9pZAotdmVyaWZ5X3Rh cl9iYWNrdXAodmVyaWZpZXJfY29udGV4dCAqY29udGV4dCwgRElSICpkaXIpCit2ZXJpZnlfdGFy X2JhY2t1cCh2ZXJpZmllcl9jb250ZXh0ICpjb250ZXh0LCBESVIgKmRpciwgY2hhciAqKmJhc2Vf YXJjaGl2ZV9wYXRoLAorCQkJCSAgY2hhciAqKndhbF9hcmNoaXZlX3BhdGgpCiB7CiAJc3RydWN0 IGRpcmVudCAqZGlyZW50OwogCVNpbXBsZVB0ckxpc3QgdGFyZmlsZXMgPSB7TlVMTCwgTlVMTH07 CkBAIC04MTYsNyArODMxLDggQEAgdmVyaWZ5X3Rhcl9iYWNrdXAodmVyaWZpZXJfY29udGV4dCAq Y29udGV4dCwgRElSICpkaXIpCiAJCQljaGFyCSAgICpmdWxscGF0aDsKIAogCQkJZnVsbHBhdGgg PSBwc3ByaW50ZigiJXMvJXMiLCBjb250ZXh0LT5iYWNrdXBfZGlyZWN0b3J5LCBmaWxlbmFtZSk7 Ci0JCQlwcmVjaGVja190YXJfYmFja3VwX2ZpbGUoY29udGV4dCwgZmlsZW5hbWUsIGZ1bGxwYXRo LCAmdGFyZmlsZXMpOworCQkJcHJlY2hlY2tfdGFyX2JhY2t1cF9maWxlKGNvbnRleHQsIGZpbGVu YW1lLCBmdWxscGF0aCwgJnRhcmZpbGVzLAorCQkJCQkJCQkJIGJhc2VfYXJjaGl2ZV9wYXRoLCB3 YWxfYXJjaGl2ZV9wYXRoKTsKIAkJCXBmcmVlKGZ1bGxwYXRoKTsKIAkJfQogCX0KQEAgLTg3NSwx MSArODkxLDEzIEBAIHZlcmlmeV90YXJfYmFja3VwKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQs IERJUiAqZGlyKQogICoKICAqIFRoZSBhcmd1bWVudHMgdG8gdGhpcyBmdW5jdGlvbiBhcmUgbW9z dGx5IHRoZSBzYW1lIGFzIHRoZQogICogdmVyaWZ5X3BsYWluX2JhY2t1cF9maWxlLiBUaGUgYWRk aXRpb25hbCBhcmd1bWVudCBvdXRwdXRzIGEgbGlzdCBvZiB2YWxpZAotICogdGFyIGZpbGVzLgor ICogdGFyIGZpbGVzLCBhbG9uZyB3aXRoIHRoZSBmdWxsIHBhdGhzIHRvIHRoZSBtYWluIGFyY2hp dmUgYW5kIHRoZSBXQUwKKyAqIGRpcmVjdG9yeSBhcmNoaXZlLgogICovCiBzdGF0aWMgdm9pZAog cHJlY2hlY2tfdGFyX2JhY2t1cF9maWxlKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQsIGNoYXIg KnJlbHBhdGgsCi0JCQkJCQkgY2hhciAqZnVsbHBhdGgsIFNpbXBsZVB0ckxpc3QgKnRhcmZpbGVz KQorCQkJCQkJIGNoYXIgKmZ1bGxwYXRoLCBTaW1wbGVQdHJMaXN0ICp0YXJmaWxlcywKKwkJCQkJ CSBjaGFyICoqYmFzZV9hcmNoaXZlX3BhdGgsIGNoYXIgKip3YWxfYXJjaGl2ZV9wYXRoKQogewog CXN0cnVjdCBzdGF0IHNiOwogCU9pZAkJCXRibHNwY19vaWQgPSBJbnZhbGlkT2lkOwpAQCAtOTE4 LDkgKzkzNiwxNyBAQCBwcmVjaGVja190YXJfYmFja3VwX2ZpbGUodmVyaWZpZXJfY29udGV4dCAq Y29udGV4dCwgY2hhciAqcmVscGF0aCwKIAkgKiBleHRlbnNpb24gc3VjaCBhcyAuZ3osIC5sejQs IG9yIC56c3QuCiAJICovCiAJaWYgKHN0cm5jbXAoImJhc2UiLCByZWxwYXRoLCA0KSA9PSAwKQor CXsKIAkJc3VmZml4ID0gcmVscGF0aCArIDQ7CisKKwkJKmJhc2VfYXJjaGl2ZV9wYXRoID0gcHN0 cmR1cChmdWxscGF0aCk7CisJfQogCWVsc2UgaWYgKHN0cm5jbXAoInBnX3dhbCIsIHJlbHBhdGgs IDYpID09IDApCisJewogCQlzdWZmaXggPSByZWxwYXRoICsgNjsKKworCQkqd2FsX2FyY2hpdmVf cGF0aCA9IHBzdHJkdXAoZnVsbHBhdGgpOworCX0KIAllbHNlCiAJewogCQkvKiBFeHBlY3RlZCBh IDx0YWJsZXNwYWNlb2lkPi50YXIgZmlsZSBoZXJlLiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w Z192ZXJpZnliYWNrdXAvdC8wMDJfYWxnb3JpdGhtLnBsIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNr dXAvdC8wMDJfYWxnb3JpdGhtLnBsCmluZGV4IDA1NTYxOTFlYzlkLi5lZGM1MTVkNTkwNCAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDJfYWxnb3JpdGhtLnBsCisrKyBi L3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDAyX2FsZ29yaXRobS5wbApAQCAtMzAsMTAgKzMw LDYgQEAgc3ViIHRlc3RfY2hlY2tzdW1zCiAJewogCQkjIEFkZCBzd2l0Y2ggdG8gZ2V0IGEgdGFy LWZvcm1hdCBiYWNrdXAKIAkJcHVzaCBAYmFja3VwLCAoJy0tZm9ybWF0JyA9PiAndGFyJyk7Ci0K LQkJIyBBZGQgc3dpdGNoIHRvIHNraXAgV0FMIHZlcmlmaWNhdGlvbiwgd2hpY2ggaXMgbm90IHll dCBzdXBwb3J0ZWQgZm9yCi0JCSMgdGFyLWZvcm1hdCBiYWNrdXBzCi0JCXB1c2ggQHZlcmlmeSwg KCctLW5vLXBhcnNlLXdhbCcpOwogCX0KIAogCSMgQSBiYWNrdXAgd2l0aCBhIGJvZ3VzIGFsZ29y aXRobSBzaG91bGQgZmFpbC4KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3Qv MDAzX2NvcnJ1cHRpb24ucGwgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAwM19jb3JydXB0 aW9uLnBsCmluZGV4IGIxZDY1YjhhYTBmLi44ODJkNzVkOWRjMiAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ192ZXJpZnliYWNrdXAvdC8wMDNfY29ycnVwdGlvbi5wbAorKysgYi9zcmMvYmluL3BnX3Zl cmlmeWJhY2t1cC90LzAwM19jb3JydXB0aW9uLnBsCkBAIC0xOTMsMTAgKzE5Myw4IEBAIGZvciBt eSAkc2NlbmFyaW8gKEBzY2VuYXJpbykKIAkJCWNvbW1hbmRfb2soWyAkdGFyLCAnLWNmJyA9PiAi JHRhcl9iYWNrdXBfcGF0aC9iYXNlLnRhciIsICcuJyBdKTsKIAkJCWNoZGlyKCRjd2QpIHx8IGRp ZSAiY2hkaXI6ICQhIjsKIAotCQkJIyBOb3cgY2hlY2sgdGhhdCB0aGUgYmFja3VwIG5vIGxvbmdl ciB2ZXJpZmllcy4gV2UgbXVzdCB1c2UgLW4KLQkJCSMgaGVyZSwgYmVjYXVzZSBwZ193YWxkdW1w IGNhbid0IHlldCByZWFkIFdBTCBmcm9tIGEgdGFyZmlsZS4KIAkJCWNvbW1hbmRfZmFpbHNfbGlr ZSgKLQkJCQlbICdwZ192ZXJpZnliYWNrdXAnLCAnLS1uby1wYXJzZS13YWwnLCAkdGFyX2JhY2t1 cF9wYXRoIF0sCisJCQkJWyAncGdfdmVyaWZ5YmFja3VwJywgJHRhcl9iYWNrdXBfcGF0aCBdLAog CQkJCSRzY2VuYXJpby0+eydmYWlsc19saWtlJ30sCiAJCQkJImNvcnJ1cHQgYmFja3VwIGZhaWxz IHZlcmlmaWNhdGlvbjogJG5hbWUiKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ192ZXJpZnli YWNrdXAvdC8wMDhfdW50YXIucGwgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAwOF91bnRh ci5wbAppbmRleCBhZTY3YWU4NWEzMS4uMTYxYzA4YzE5MGQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cGdfdmVyaWZ5YmFja3VwL3QvMDA4X3VudGFyLnBsCisrKyBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFj a3VwL3QvMDA4X3VudGFyLnBsCkBAIC00Nyw3ICs0Nyw2IEBAIG15ICR0c29pZCA9ICRwcmltYXJ5 LT5zYWZlX3BzcWwoCiAJCVNFTEVDVCBvaWQgRlJPTSBwZ190YWJsZXNwYWNlIFdIRVJFIHNwY25h bWUgPSAncmVncmVzc190czEnKSk7CiAKIG15ICRiYWNrdXBfcGF0aCA9ICRwcmltYXJ5LT5iYWNr dXBfZGlyIC4gJy9zZXJ2ZXItYmFja3VwJzsKLW15ICRleHRyYWN0X3BhdGggPSAkcHJpbWFyeS0+ YmFja3VwX2RpciAuICcvZXh0cmFjdGVkLWJhY2t1cCc7CiAKIG15IEB0ZXN0X2NvbmZpZ3VyYXRp b24gPSAoCiAJewpAQCAtMTIzLDE0ICsxMjIsMTIgQEAgZm9yIG15ICR0YyAoQHRlc3RfY29uZmln dXJhdGlvbikKIAkJIyBWZXJpZnkgdGFyIGJhY2t1cC4KIAkJJHByaW1hcnktPmNvbW1hbmRfb2so CiAJCQlbCi0JCQkJJ3BnX3ZlcmlmeWJhY2t1cCcsICctLW5vLXBhcnNlLXdhbCcsCi0JCQkJJy0t ZXhpdC1vbi1lcnJvcicsICRiYWNrdXBfcGF0aCwKKwkJCQkncGdfdmVyaWZ5YmFja3VwJywgJy0t ZXhpdC1vbi1lcnJvcicsICRiYWNrdXBfcGF0aCwKIAkJCV0sCiAJCQkidmVyaWZ5IGJhY2t1cCwg Y29tcHJlc3Npb24gJG1ldGhvZCIpOwogCiAJCSMgQ2xlYW51cC4KIAkJcm10cmVlKCRiYWNrdXBf cGF0aCk7Ci0JCXJtdHJlZSgkZXh0cmFjdF9wYXRoKTsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDEwX2NsaWVudF91bnRhci5wbCBiL3NyYy9iaW4vcGdf dmVyaWZ5YmFja3VwL3QvMDEwX2NsaWVudF91bnRhci5wbAppbmRleCAxYWM3YjVkYjc1YS4uOTY3 MGZiZTRmZGEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDEwX2NsaWVu dF91bnRhci5wbAorKysgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAxMF9jbGllbnRfdW50 YXIucGwKQEAgLTMyLDcgKzMyLDYgQEAgcHJpbnQgJGpmICRqdW5rX2RhdGE7CiBjbG9zZSAkamY7 CiAKIG15ICRiYWNrdXBfcGF0aCA9ICRwcmltYXJ5LT5iYWNrdXBfZGlyIC4gJy9jbGllbnQtYmFj a3VwJzsKLW15ICRleHRyYWN0X3BhdGggPSAkcHJpbWFyeS0+YmFja3VwX2RpciAuICcvZXh0cmFj dGVkLWJhY2t1cCc7CiAKIG15IEB0ZXN0X2NvbmZpZ3VyYXRpb24gPSAoCiAJewpAQCAtMTM3LDEz ICsxMzYsMTEgQEAgZm9yIG15ICR0YyAoQHRlc3RfY29uZmlndXJhdGlvbikKIAkJIyBWZXJpZnkg dGFyIGJhY2t1cC4KIAkJJHByaW1hcnktPmNvbW1hbmRfb2soCiAJCQlbCi0JCQkJJ3BnX3Zlcmlm eWJhY2t1cCcsICctLW5vLXBhcnNlLXdhbCcsCi0JCQkJJy0tZXhpdC1vbi1lcnJvcicsICRiYWNr dXBfcGF0aCwKKwkJCQkncGdfdmVyaWZ5YmFja3VwJywgJy0tZXhpdC1vbi1lcnJvcicsICRiYWNr dXBfcGF0aCwKIAkJCV0sCiAJCQkidmVyaWZ5IGJhY2t1cCwgY29tcHJlc3Npb24gJG1ldGhvZCIp OwogCiAJCSMgQ2xlYW51cC4KLQkJcm10cmVlKCRleHRyYWN0X3BhdGgpOwogCQlybXRyZWUoJGJh Y2t1cF9wYXRoKTsKIAl9CiB9Ci0tIAoyLjQ3LjEKCg== --000000000000db2415064c0a2d81--