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 1vkhqn-0019uB-0R for pgsql-hackers@arkaria.postgresql.org; Tue, 27 Jan 2026 12:07:18 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vkhqm-00DbKR-0n for pgsql-hackers@arkaria.postgresql.org; Tue, 27 Jan 2026 12:07:16 +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 1vkhql-00DbKG-1N for pgsql-hackers@lists.postgresql.org; Tue, 27 Jan 2026 12:07:16 +0000 Received: from mail-pj1-x1031.google.com ([2607:f8b0:4864:20::1031]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vkhqi-002Yns-1l for pgsql-hackers@lists.postgresql.org; Tue, 27 Jan 2026 12:07:14 +0000 Received: by mail-pj1-x1031.google.com with SMTP id 98e67ed59e1d1-35305538592so5061143a91.0 for ; Tue, 27 Jan 2026 04:07:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1769515632; cv=none; d=google.com; s=arc-20240605; b=bBk/54jS2HF2QRuZQA03LLpULc0FfR1iMBMKzagf2DovKGFKuRLlockwtHJHFq23Xv jFGXTRIhzhpgskER0uyOSBxjmIdirEa7hc68L2at727zrgsS/YVRawXChPs2Eiouzz7W YhHv8pf6x79p2YrXRNgeTLRol52XucXkViMvZhnnhPFIHlYovaklDQfTB9hbC2xOTgSE nBEtROFmabGl6Qi/7JaJY6lC61+k6OhnMnejWJqyV/25+0mPQrV6t5Kehpxpie5pA0Jg pRuONWMUTYSkaVrCZzmKfNXgU2Bm1yJ1xTpZnrbW190D1nkq1kfDHyveARNLW2caBQFJ j6dA== 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=8qL1jIk8PZ8wmDx8Zn7usbAtmcUYqGyeGT/sdmoAjeY=; fh=5kdpAQZaijJOWW9PoPWvTyOyiRUUPgpLqhCSQrGS8P8=; b=DJSZgEhpCDYvOMcyv/Ugjw9YzZllkPjuW6fAxB7nj1lR293CrK6X5TEwTdTCBx3ZP3 8G9zUw3742LuOsemYWcSQnhJb8FmEKdjWB1TVKDwVogNKNz6n6Ng7itndsqYGUidvfRE 9f6IXFHxXjrecg3gpHy61VfRX+YKFL39R2VoGLEhsOwhq8ZaHsbbiL/buBffVr7UZc0c WvVdpp0AQrb9Qe5PMQ+r/GNONZcrPhTTeXlIepU02S11EohOZXcIhGJnFMPs/AW4Mrni m48RsnDkM12SF1XYfEf6728JlaxHE2tLcsBTbUjz8lMhgztGpzmp9noLmH/kcqWIxYvp +Bwg==; 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=1769515632; x=1770120432; 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=8qL1jIk8PZ8wmDx8Zn7usbAtmcUYqGyeGT/sdmoAjeY=; b=UHsftWR4mxbtycj7wi9NtS45flTBEwxn4Hd371T4IoT099+2FaOj1QEljBIZXGg7ZM xyKWjzDSgjz+aDYv4ajSYikyC72CMADSoU3xJNUJYtChYlzG4OleJnli6rsTyvbtBfUP BmrTnfgpkvp8EFQsVo8zZydLFC9BMW4YxRIhgKsOlwoAtwivq2sPFG4W755c1ynxMJWJ cH9rZkLWMSIsnfovOa6GVUy9HKgQJxbiL4Nz581c3Su1nKmRu9ay/SF/5ckwuHswfHZt X5iWlvaTnI3HyNF+pc4LzGLTWLrD2hNJSzn+HpXYxL7EVF87eYO9TjfPoH8170tcF30d o2iw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769515632; x=1770120432; 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=8qL1jIk8PZ8wmDx8Zn7usbAtmcUYqGyeGT/sdmoAjeY=; b=dp6mhxJ7MGNwq7auGwU/3xJNEp8EMLTJELZZXglq1VaUlQoCRxgrZQinLX2oZGJ/d7 VOVHsXCAfP002D2k1Q23GunR2Ztby7aqDW7cWV/2Lo+6dvxREUW9kdbrQ8g8TrcDnnvC y1h+Lumc2QmHWM3vcjN0bYqT4AQ2JfyE5yli71oqxQRxEVtVZruw99S6g3BktSaIea1G I46JpcATexC7QMbjAvZUxvIddNYe0V9RbSBt2nAMK7Hx7w8qPmPcIx4ex4Mdh0xgeKGC R3YY3AZBdbWcelaGxewzAW5i2JnVGwbKaZke4Jl5/D+x3MCrZV/GKGWz+cBBvq4KCSao 60Qw== X-Forwarded-Encrypted: i=1; AJvYcCWgJKchMSbv8uWT4+fcNmg2BnuLtryRqwNyLFMEkNt9TCW1cVxF8fhdkBmpBvadA7v0jzGeQOZn9V1vrc+V@lists.postgresql.org X-Gm-Message-State: AOJu0Yz+v/p6E4nNjgAHLrJpM++361W5h5jbDz+qGrRwZFalM/hlzYQx o/vGdaNxTiPXEfUFiKbnb+xgtgy7hPnwbPIAbrRbUsw56EDzX2FHtgg2F7igfmx+Ft1r/ewh4gj XuL3D+f6KC89/UQXp5+fK9D6njcJRRgE= X-Gm-Gg: AZuq6aJdRTOLzJAP+L/fAb7VvKUjh+SGIvPo8bI7MCe5hd/jNCoLOP1q+iovDxseIVI hO0RxM7t1kOVlHBzjByq2eLcKTRglrxAaWL3HubNLwY3Z20t3mdN5boVllVuxgAf8HShzR8s7mt mpjAPbSyPnuc+TqGuA+eFvh502bma8lwD5SilOfkskcO1LB5pEQqiw98pg+rJU8UrqPRFLYPuZt 0OWf/BdY648F1j9zfwFH2kr9Y6SeKjMcEs7m7dL7R8gWLguk4xaqgi8LHd4f40GpLPuXkekPw== X-Received: by 2002:a17:90b:b83:b0:343:f509:aa4a with SMTP id 98e67ed59e1d1-353fed94934mr1120773a91.36.1769515631986; Tue, 27 Jan 2026 04:07:11 -0800 (PST) MIME-Version: 1.0 References: <731ADE6F-01C5-4996-BAEE-5851DFC3F502@gmail.com> In-Reply-To: From: Amul Sul Date: Tue, 27 Jan 2026 17:36:34 +0530 X-Gm-Features: AZwV_QhyDyoo4VMr4VLDQ7oPsxFBfhPvnfGIHKwI7E9rq58xfZgd3hiypNhNG4w 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="000000000000abfa1406495d7654" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000abfa1406495d7654 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Jan 26, 2026 at 10:52=E2=80=AFPM Robert Haas wrote: > > On Fri, Jan 23, 2026 at 7:27=E2=80=AFAM Amul Sul wrot= e: > > Another option I previously considered was adding the filtration logic > > inside the archive streamer itself. However, since the very first read > > is required to calculate the WAL segment size, the filter check cannot > > be performed immediately. However, we could send a signal to the > > archive streamer via privateInfo (e.g., a read_any_wal or > > skip_wal_check boolean flag) to disable the filtration check until the > > size is calculated. But that approach isn't very elegant; if the first > > WAL page we read belongs to a segment we actually want to skip, we > > would still have to run the filter check and handle the skip/removal > > logic outside of the streamer (i.e., inside init_archive_reader()). > > This would result in performing the same filtration check in two > > different places. > > I mean, I don't really buy this logic. If the information added to > privateInfo is "here's the LSN before which you can remove stuff," and > it starts out initialized to 0/0, then the read of the first WAL page > causes no problem at all, because nothing is before 0/0. After it gets > updated to some non-zero value, the next call to > astreamer_waldump_content() can handle discarding any data we don't > need. > > IMHO, the best argument for keeping things are is that in some cases, > that decision might result in a bit of delay in discarding old data, > but I don't think that really matters. I think all that we care about > is the peak memory utilization of an operation, and I don't think that > an explicit signaling system should increase that at all. > > That said, I'm certainly willing to consider other ideas about how > this can work. However, I feel strongly that the logic needs to be not > only correct, but clear and well-explained. Setting cur_wal to NULL to > make the astreamer skip without adequate comments doesn't meet that > standard. Maybe with some better comments it's all right, but frankly > I'm a bit skeptical. Right now, you're using whether or not cur_wal is > NULL as a signal to skip data or not skip data. How is that better > than passing down the LSN and TLI that you want to read next and > letting the astreamer figure out what to do itself? It's a signaling > mechanism either way, but it seems a lot easier to figure out whether > we always keep the LSN and TLI updated properly than to figure out > whether cur_wal is always NULL at exactly the right times. > I am not sure how to calculate the LSN of the very first page it reads at this point, since we don't have the segment size yet. Furthermore, the previous implementation using the segment number as the hash key was incorrect, as extracting the segment number and TLI is impossible without knowing the segment size, IIUC. In the attached version, I am using the WAL segment name as the hash key, which is much more straightforward. I have rewritten read_archive_wal_page(), and it looks much cleaner than before. The logic to discard irrelevant WAL files is still within get_archive_wal_entry. I added an explanation for setting cur_wal to NULL, which is now handled in the separate function I mentioned previously. Kindly have a look at the attached version; let me know if you are still not happy with the current approach for filtering/discarding irrelevant WAL segments. It isn't much different from the previous version, but I have tried to keep it in a separate routine for better code readability, with comments to make it easier to understand. I also added a comment for ArchivedWALFile. I have included your patch (removing WalSegSz) to the attached patch set as 0001; all my subsequent patches are now bumped by one. Regards, Amul --000000000000abfa1406495d7654 Content-Type: application/octet-stream; name="v11-0001-Remove-file-level-global-WalSegSz.patch" Content-Disposition: attachment; filename="v11-0001-Remove-file-level-global-WalSegSz.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mkwjpb110 RnJvbSA3YTA2ZGMwM2QxOThmZDY3NzZkNWFmYmE0NGQxZWExNmVlNzE1Njk5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2JlcnQgSGFhcyA8cmhhYXNAcG9zdGdyZXNxbC5vcmc+CkRh dGU6IEZyaSwgMTYgSmFuIDIwMjYgMDg6MzU6MTQgLTA1MDAKU3ViamVjdDogW1BBVENIIHYxMSAx LzldIFJlbW92ZSBmaWxlLWxldmVsIGdsb2JhbCBXYWxTZWdTei4KCkl0J3MgYmV0dGVyIHN0eWxl IHRvIHBhc3MgdGhlIHZhbHVlIGFyb3VuZCB0byBqdXN0IHRoZSBwbGFjZXMgdGhhdApuZWVkIGl0 LiBUaGlzIG1ha2VzIGl0IGVhc2llciB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgdmFsdWUgaXMK YWx3YXlzIHByb3Blcmx5IGluaXRpYWxpemVkIGJlZm9yZSB1c2UuCi0tLQogc3JjL2Jpbi9wZ193 YWxkdW1wL3BnX3dhbGR1bXAuYyB8IDM3ICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0t LQogMSBmaWxlIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMgYi9zcmMvYmluL3BnX3dh bGR1bXAvcGdfd2FsZHVtcC5jCmluZGV4IGFhZTY1NTk2NmVmLi5mMzQ0NjM4NWQ2YSAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYworKysgYi9zcmMvYmluL3BnX3dh bGR1bXAvcGdfd2FsZHVtcC5jCkBAIC0zOSw3ICszOSw2IEBACiAKIHN0YXRpYyBjb25zdCBjaGFy ICpwcm9nbmFtZTsKIAotc3RhdGljIGludAlXYWxTZWdTejsKIHN0YXRpYyB2b2xhdGlsZSBzaWdf YXRvbWljX3QgdGltZV90b19zdG9wID0gZmFsc2U7CiAKIHN0YXRpYyBjb25zdCBSZWxGaWxlTG9j YXRvciBlbXB0eVJlbEZpbGVMb2NhdG9yID0gezAsIDAsIDB9OwpAQCAtMjAzLDExICsyMDIsMTEg QEAgb3Blbl9maWxlX2luX2RpcmVjdG9yeShjb25zdCBjaGFyICpkaXJlY3RvcnksIGNvbnN0IGNo YXIgKmZuYW1lKQogLyoKICAqIFRyeSB0byBmaW5kIGZuYW1lIGluIHRoZSBnaXZlbiBkaXJlY3Rv cnkuIFJldHVybnMgdHJ1ZSBpZiBpdCBpcyBmb3VuZCwKICAqIGZhbHNlIG90aGVyd2lzZS4gSWYg Zm5hbWUgaXMgTlVMTCwgc2VhcmNoIHRoZSBjb21wbGV0ZSBkaXJlY3RvcnkgZm9yIGFueQotICog ZmlsZSB3aXRoIGEgdmFsaWQgV0FMIGZpbGUgbmFtZS4gSWYgZmlsZSBpcyBzdWNjZXNzZnVsbHkg b3BlbmVkLCBzZXQgdGhlCi0gKiB3YWwgc2VnbWVudCBzaXplLgorICogZmlsZSB3aXRoIGEgdmFs aWQgV0FMIGZpbGUgbmFtZS4gSWYgZmlsZSBpcyBzdWNjZXNzZnVsbHkgb3BlbmVkLCBzZXQKKyAq ICpXYVNlZ1N6IHRvIHRoZSBXQUwgc2VnbWVudCBzaXplLgogICovCiBzdGF0aWMgYm9vbAotc2Vh cmNoX2RpcmVjdG9yeShjb25zdCBjaGFyICpkaXJlY3RvcnksIGNvbnN0IGNoYXIgKmZuYW1lKQor c2VhcmNoX2RpcmVjdG9yeShjb25zdCBjaGFyICpkaXJlY3RvcnksIGNvbnN0IGNoYXIgKmZuYW1l LCBpbnQgKldhbFNlZ1N6KQogewogCWludAkJCWZkID0gLTE7CiAJRElSCQkgICAqeGxkaXI7CkBA IC0yNDksMTcgKzI0OCwxNyBAQCBzZWFyY2hfZGlyZWN0b3J5KGNvbnN0IGNoYXIgKmRpcmVjdG9y eSwgY29uc3QgY2hhciAqZm5hbWUpCiAJCXsKIAkJCVhMb2dMb25nUGFnZUhlYWRlciBsb25naGRy ID0gKFhMb2dMb25nUGFnZUhlYWRlcikgYnVmLmRhdGE7CiAKLQkJCVdhbFNlZ1N6ID0gbG9uZ2hk ci0+eGxwX3NlZ19zaXplOwotCi0JCQlpZiAoIUlzVmFsaWRXYWxTZWdTaXplKFdhbFNlZ1N6KSkK KwkJCWlmICghSXNWYWxpZFdhbFNlZ1NpemUobG9uZ2hkci0+eGxwX3NlZ19zaXplKSkKIAkJCXsK IAkJCQlwZ19sb2dfZXJyb3IobmdldHRleHQoImludmFsaWQgV0FMIHNlZ21lbnQgc2l6ZSBpbiBX QUwgZmlsZSBcIiVzXCIgKCVkIGJ5dGUpIiwKIAkJCQkJCQkJCSAgImludmFsaWQgV0FMIHNlZ21l bnQgc2l6ZSBpbiBXQUwgZmlsZSBcIiVzXCIgKCVkIGJ5dGVzKSIsCi0JCQkJCQkJCQkgIFdhbFNl Z1N6KSwKLQkJCQkJCQkgZm5hbWUsIFdhbFNlZ1N6KTsKKwkJCQkJCQkJCSAgbG9uZ2hkci0+eGxw X3NlZ19zaXplKSwKKwkJCQkJCQkgZm5hbWUsIGxvbmdoZHItPnhscF9zZWdfc2l6ZSk7CiAJCQkJ cGdfbG9nX2Vycm9yX2RldGFpbCgiVGhlIFdBTCBzZWdtZW50IHNpemUgbXVzdCBiZSBhIHBvd2Vy IG9mIHR3byBiZXR3ZWVuIDEgTUIgYW5kIDEgR0IuIik7CiAJCQkJZXhpdCgxKTsKIAkJCX0KKwor CQkJKldhbFNlZ1N6ID0gbG9uZ2hkci0+eGxwX3NlZ19zaXplOwogCQl9CiAJCWVsc2UgaWYgKHIg PCAwKQogCQkJcGdfZmF0YWwoImNvdWxkIG5vdCByZWFkIGZpbGUgXCIlc1wiOiAlbSIsCkBAIC0y ODYsMjEgKzI4NSwyMiBAQCBzZWFyY2hfZGlyZWN0b3J5KGNvbnN0IGNoYXIgKmRpcmVjdG9yeSwg Y29uc3QgY2hhciAqZm5hbWUpCiAgKgkgWExPR0RJUiAvCiAgKgkgJFBHREFUQSAvIFhMT0dESVIg LwogICoKLSAqIFRoZSB2YWxpZCB0YXJnZXQgZGlyZWN0b3J5IGlzIHJldHVybmVkLgorICogVGhl IHZhbGlkIHRhcmdldCBkaXJlY3RvcnkgaXMgcmV0dXJuZWQsIGFuZCAqV2FsU2VnU3ogaXMgc2V0 IHRvIHRoZQorICogc2l6ZSBvZiB0aGUgV0FMIHNlZ21lbnQgZm91bmQgaW4gdGhhdCBkaXJlY3Rv cnkuCiAgKi8KIHN0YXRpYyBjaGFyICoKLWlkZW50aWZ5X3RhcmdldF9kaXJlY3RvcnkoY2hhciAq ZGlyZWN0b3J5LCBjaGFyICpmbmFtZSkKK2lkZW50aWZ5X3RhcmdldF9kaXJlY3RvcnkoY2hhciAq ZGlyZWN0b3J5LCBjaGFyICpmbmFtZSwgaW50ICpXYWxTZWdTeikKIHsKIAljaGFyCQlmcGF0aFtN QVhQR1BBVEhdOwogCiAJaWYgKGRpcmVjdG9yeSAhPSBOVUxMKQogCXsKLQkJaWYgKHNlYXJjaF9k aXJlY3RvcnkoZGlyZWN0b3J5LCBmbmFtZSkpCisJCWlmIChzZWFyY2hfZGlyZWN0b3J5KGRpcmVj dG9yeSwgZm5hbWUsIFdhbFNlZ1N6KSkKIAkJCXJldHVybiBwZ19zdHJkdXAoZGlyZWN0b3J5KTsK IAogCQkvKiBkaXJlY3RvcnkgLyBYTE9HRElSICovCiAJCXNucHJpbnRmKGZwYXRoLCBNQVhQR1BB VEgsICIlcy8lcyIsIGRpcmVjdG9yeSwgWExPR0RJUik7Ci0JCWlmIChzZWFyY2hfZGlyZWN0b3J5 KGZwYXRoLCBmbmFtZSkpCisJCWlmIChzZWFyY2hfZGlyZWN0b3J5KGZwYXRoLCBmbmFtZSwgV2Fs U2VnU3opKQogCQkJcmV0dXJuIHBnX3N0cmR1cChmcGF0aCk7CiAJfQogCWVsc2UKQEAgLTMwOCwx MCArMzA4LDEwIEBAIGlkZW50aWZ5X3RhcmdldF9kaXJlY3RvcnkoY2hhciAqZGlyZWN0b3J5LCBj aGFyICpmbmFtZSkKIAkJY29uc3QgY2hhciAqZGF0YWRpcjsKIAogCQkvKiBjdXJyZW50IGRpcmVj dG9yeSAqLwotCQlpZiAoc2VhcmNoX2RpcmVjdG9yeSgiLiIsIGZuYW1lKSkKKwkJaWYgKHNlYXJj aF9kaXJlY3RvcnkoIi4iLCBmbmFtZSwgV2FsU2VnU3opKQogCQkJcmV0dXJuIHBnX3N0cmR1cCgi LiIpOwogCQkvKiBYTE9HRElSICovCi0JCWlmIChzZWFyY2hfZGlyZWN0b3J5KFhMT0dESVIsIGZu YW1lKSkKKwkJaWYgKHNlYXJjaF9kaXJlY3RvcnkoWExPR0RJUiwgZm5hbWUsIFdhbFNlZ1N6KSkK IAkJCXJldHVybiBwZ19zdHJkdXAoWExPR0RJUik7CiAKIAkJZGF0YWRpciA9IGdldGVudigiUEdE QVRBIik7CkBAIC0zMTksNyArMzE5LDcgQEAgaWRlbnRpZnlfdGFyZ2V0X2RpcmVjdG9yeShjaGFy ICpkaXJlY3RvcnksIGNoYXIgKmZuYW1lKQogCQlpZiAoZGF0YWRpciAhPSBOVUxMKQogCQl7CiAJ CQlzbnByaW50ZihmcGF0aCwgTUFYUEdQQVRILCAiJXMvJXMiLCBkYXRhZGlyLCBYTE9HRElSKTsK LQkJCWlmIChzZWFyY2hfZGlyZWN0b3J5KGZwYXRoLCBmbmFtZSkpCisJCQlpZiAoc2VhcmNoX2Rp cmVjdG9yeShmcGF0aCwgZm5hbWUsIFdhbFNlZ1N6KSkKIAkJCQlyZXR1cm4gcGdfc3RyZHVwKGZw YXRoKTsKIAkJfQogCX0KQEAgLTgwMSw2ICs4MDEsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoq YXJndikKIAlYTG9nUmVjUHRyCWZpcnN0X3JlY29yZDsKIAljaGFyCSAgICp3YWxkaXIgPSBOVUxM OwogCWNoYXIJICAgKmVycm9ybXNnOworCWludAkJCVdhbFNlZ1N6OwogCiAJc3RhdGljIHN0cnVj dCBvcHRpb24gbG9uZ19vcHRpb25zW10gPSB7CiAJCXsiYmtwLWRldGFpbHMiLCBub19hcmd1bWVu dCwgTlVMTCwgJ2InfSwKQEAgLTExMjcsNyArMTEyOCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIg Kiphcmd2KQogCQkJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiBkaXJlY3RvcnkgXCIlc1wiOiAl bSIsIHdhbGRpcik7CiAJCX0KIAotCQl3YWxkaXIgPSBpZGVudGlmeV90YXJnZXRfZGlyZWN0b3J5 KHdhbGRpciwgZm5hbWUpOworCQl3YWxkaXIgPSBpZGVudGlmeV90YXJnZXRfZGlyZWN0b3J5KHdh bGRpciwgZm5hbWUsICZXYWxTZWdTeik7CiAJCWZkID0gb3Blbl9maWxlX2luX2RpcmVjdG9yeSh3 YWxkaXIsIGZuYW1lKTsKIAkJaWYgKGZkIDwgMCkKIAkJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3Bl biBmaWxlIFwiJXNcIiIsIGZuYW1lKTsKQEAgLTExODksNyArMTE5MCw3IEBAIG1haW4oaW50IGFy Z2MsIGNoYXIgKiphcmd2KQogCQl9CiAJfQogCWVsc2UKLQkJd2FsZGlyID0gaWRlbnRpZnlfdGFy Z2V0X2RpcmVjdG9yeSh3YWxkaXIsIE5VTEwpOworCQl3YWxkaXIgPSBpZGVudGlmeV90YXJnZXRf ZGlyZWN0b3J5KHdhbGRpciwgTlVMTCwgJldhbFNlZ1N6KTsKIAogCS8qIHdlIGRvbid0IGtub3cg d2hhdCB0byBwcmludCAqLwogCWlmICghWExvZ1JlY1B0cklzVmFsaWQocHJpdmF0ZS5zdGFydHB0 cikpCi0tIAoyLjQ3LjEKCg== --000000000000abfa1406495d7654 Content-Type: application/octet-stream; name="v11-0002-Refactor-pg_waldump-Move-some-declarations-to-ne.patch" Content-Disposition: attachment; filename="v11-0002-Refactor-pg_waldump-Move-some-declarations-to-ne.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mkwjph7w1 RnJvbSAxZTZkN2YyYmE0NTUwZWFlZGQ2ZWIwZmRjZjMwOWRiMjYzN2E2YTM4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFRo dSwgMjIgSmFuIDIwMjYgMTA6Mjg6MzIgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxMSAyLzldIFJl ZmFjdG9yOiBwZ193YWxkdW1wOiBNb3ZlIHNvbWUgZGVjbGFyYXRpb25zIHRvIG5ldwogcGdfd2Fs ZHVtcC5oCgpUaGlzIGNoYW5nZSBwcmVwYXJlcyBmb3IgYSBzZWNvbmQgc291cmNlIGZpbGUgaW4g dGhpcyBkaXJlY3RvcnkgdG8Kc3VwcG9ydCByZWFkaW5nIFdBTCBmcm9tIHRhciBmaWxlcy4gQ29t bW9uIHN0cnVjdHVyZXMsIGRlY2xhcmF0aW9ucywKYW5kIGZ1bmN0aW9ucyBhcmUgYmVpbmcgZXhw b3J0ZWQgdGhyb3VnaCB0aGlzIGluY2x1ZGUgZmlsZSBzbwp0aGV5IGNhbiBiZSB1c2VkIGluIGJv dGggZmlsZXMuCi0tLQogc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYyB8ICA5ICstLS0t LS0tLQogc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuaCB8IDI1ICsrKysrKysrKysrKysr KysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMjYgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlv bnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5o CgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYyBiL3NyYy9iaW4v cGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKaW5kZXggZjM0NDYzODVkNmEuLjRiNzQxMWE2NDk4IDEw MDY0NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jCisrKyBiL3NyYy9iaW4v cGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJjb21t b24vbG9nZ2luZy5oIgogI2luY2x1ZGUgImNvbW1vbi9yZWxwYXRoLmgiCiAjaW5jbHVkZSAiZ2V0 b3B0X2xvbmcuaCIKKyNpbmNsdWRlICJwZ193YWxkdW1wLmgiCiAjaW5jbHVkZSAicm1ncmRlc2Mu aCIKICNpbmNsdWRlICJzdG9yYWdlL2J1ZnBhZ2UuaCIKIApAQCAtNDMsMTQgKzQ0LDYgQEAgc3Rh dGljIHZvbGF0aWxlIHNpZ19hdG9taWNfdCB0aW1lX3RvX3N0b3AgPSBmYWxzZTsKIAogc3RhdGlj IGNvbnN0IFJlbEZpbGVMb2NhdG9yIGVtcHR5UmVsRmlsZUxvY2F0b3IgPSB7MCwgMCwgMH07CiAK LXR5cGVkZWYgc3RydWN0IFhMb2dEdW1wUHJpdmF0ZQotewotCVRpbWVMaW5lSUQJdGltZWxpbmU7 Ci0JWExvZ1JlY1B0cglzdGFydHB0cjsKLQlYTG9nUmVjUHRyCWVuZHB0cjsKLQlib29sCQllbmRw dHJfcmVhY2hlZDsKLX0gWExvZ0R1bXBQcml2YXRlOwotCiB0eXBlZGVmIHN0cnVjdCBYTG9nRHVt cENvbmZpZwogewogCS8qIGRpc3BsYXkgb3B0aW9ucyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w Z193YWxkdW1wL3BnX3dhbGR1bXAuaCBiL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmgK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmI4ODU0Mzg1NmU1Ci0tLSAv ZGV2L251bGwKKysrIGIvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuaApAQCAtMCwwICsx LDI1IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBwZ193YWxkdW1wLmggLSBkZWNvZGUg YW5kIGRpc3BsYXkgV0FMCisgKgorICogQ29weXJpZ2h0IChjKSAyMDI2LCBQb3N0Z3JlU1FMIEds b2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkJICBzcmMv YmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5oCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lm bmRlZiBQR19XQUxEVU1QX0gKKyNkZWZpbmUgUEdfV0FMRFVNUF9ICisKKyNpbmNsdWRlICJhY2Nl c3MveGxvZ2RlZnMuaCIKKworLyogQ29udGFpbnMgdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiB0 byBkcml2ZSBXQUwgZGVjb2RpbmcgKi8KK3R5cGVkZWYgc3RydWN0IFhMb2dEdW1wUHJpdmF0ZQor eworCVRpbWVMaW5lSUQJdGltZWxpbmU7CisJWExvZ1JlY1B0cglzdGFydHB0cjsKKwlYTG9nUmVj UHRyCWVuZHB0cjsKKwlib29sCQllbmRwdHJfcmVhY2hlZDsKK30gWExvZ0R1bXBQcml2YXRlOwor CisjZW5kaWYJCQkJCQkJLyogZW5kIG9mIFBHX1dBTERVTVBfSCAqLwotLSAKMi40Ny4xCgo= --000000000000abfa1406495d7654 Content-Type: application/octet-stream; name="v11-0003-Refactor-pg_waldump-Separate-logic-used-to-calcu.patch" Content-Disposition: attachment; filename="v11-0003-Refactor-pg_waldump-Separate-logic-used-to-calcu.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mkwjpm2s2 RnJvbSAxZWFkM2MwNzYxN2NkZjYzNTdlYTA1Mjk2YzVlODEyMjljNjMxNTY0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFRo dSwgMjIgSmFuIDIwMjYgMTA6Mzg6MTYgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxMSAzLzldIFJl ZmFjdG9yOiBwZ193YWxkdW1wOiBTZXBhcmF0ZSBsb2dpYyB1c2VkIHRvCiBjYWxjdWxhdGUgdGhl IHJlcXVpcmVkIHJlYWQgc2l6ZS4KClRoaXMgcmVmYWN0b3JpbmcgcHJlcGFyZXMgdGhlIGNvZGVi YXNlIGZvciBhbiB1cGNvbWluZyBwYXRjaCB0aGF0IHdpbGwKc3VwcG9ydCByZWFkaW5nIFdBTCBm cm9tIHRhciBmaWxlcy4gVGhlIGxvZ2ljIGZvciBjYWxjdWxhdGluZyB0aGUKcmVxdWlyZWQgcmVh ZCBzaXplIGhhcyBiZWVuIHVwZGF0ZWQgdG8gaGFuZGxlIGJvdGggbm9ybWFsIFdBTCBmaWxlcwph bmQgV0FMIGZpbGVzIGxvY2F0ZWQgaW5zaWRlIGEgdGFyIGFyY2hpdmUuCi0tLQogc3JjL2Jpbi9w Z193YWxkdW1wL3BnX3dhbGR1bXAuYyB8IDQzICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0t LS0tLQogMSBmaWxlIGNoYW5nZWQsIDMwIGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMgYi9zcmMvYmluL3Bn X3dhbGR1bXAvcGdfd2FsZHVtcC5jCmluZGV4IDRiNzQxMWE2NDk4Li45NThhNzFhMDFjZiAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYworKysgYi9zcmMvYmluL3Bn X3dhbGR1bXAvcGdfd2FsZHVtcC5jCkBAIC0zMjYsNiArMzI2LDMyIEBAIGlkZW50aWZ5X3Rhcmdl dF9kaXJlY3RvcnkoY2hhciAqZGlyZWN0b3J5LCBjaGFyICpmbmFtZSwgaW50ICpXYWxTZWdTeikK IAlyZXR1cm4gTlVMTDsJCQkJLyogbm90IHJlYWNoZWQgKi8KIH0KIAorLyoKKyAqIFJldHVybnMg dGhlIHNpemUgaW4gYnl0ZXMgb2YgdGhlIGRhdGEgdG8gYmUgcmVhZC4gUmV0dXJucyAtMSBpZiB0 aGUgZW5kCisgKiBwb2ludCBoYXMgYWxyZWFkeSBiZWVuIHJlYWNoZWQuCisgKi8KK3N0YXRpYyBp bmxpbmUgaW50CityZXF1aXJlZF9yZWFkX2xlbihYTG9nRHVtcFByaXZhdGUgKnByaXZhdGUsIFhM b2dSZWNQdHIgdGFyZ2V0UGFnZVB0ciwKKwkJCQkgIGludCByZXFMZW4pCit7CisJaW50CQkJY291 bnQgPSBYTE9HX0JMQ0tTWjsKKworCWlmIChYTG9nUmVjUHRySXNWYWxpZChwcml2YXRlLT5lbmRw dHIpKQorCXsKKwkJaWYgKHRhcmdldFBhZ2VQdHIgKyBYTE9HX0JMQ0tTWiA8PSBwcml2YXRlLT5l bmRwdHIpCisJCQljb3VudCA9IFhMT0dfQkxDS1NaOworCQllbHNlIGlmICh0YXJnZXRQYWdlUHRy ICsgcmVxTGVuIDw9IHByaXZhdGUtPmVuZHB0cikKKwkJCWNvdW50ID0gcHJpdmF0ZS0+ZW5kcHRy IC0gdGFyZ2V0UGFnZVB0cjsKKwkJZWxzZQorCQl7CisJCQlwcml2YXRlLT5lbmRwdHJfcmVhY2hl ZCA9IHRydWU7CisJCQlyZXR1cm4gLTE7CisJCX0KKwl9CisKKwlyZXR1cm4gY291bnQ7Cit9CisK IC8qIHBnX3dhbGR1bXAncyBYTG9nUmVhZGVyUm91dGluZS0+c2VnbWVudF9vcGVuIGNhbGxiYWNr ICovCiBzdGF0aWMgdm9pZAogV0FMRHVtcE9wZW5TZWdtZW50KFhMb2dSZWFkZXJTdGF0ZSAqc3Rh dGUsIFhMb2dTZWdObyBuZXh0U2VnTm8sCkBAIC0zODMsMjEgKzQwOSwxMiBAQCBXQUxEdW1wUmVh ZFBhZ2UoWExvZ1JlYWRlclN0YXRlICpzdGF0ZSwgWExvZ1JlY1B0ciB0YXJnZXRQYWdlUHRyLCBp bnQgcmVxTGVuLAogCQkJCVhMb2dSZWNQdHIgdGFyZ2V0UHRyLCBjaGFyICpyZWFkQnVmZikKIHsK IAlYTG9nRHVtcFByaXZhdGUgKnByaXZhdGUgPSBzdGF0ZS0+cHJpdmF0ZV9kYXRhOwotCWludAkJ CWNvdW50ID0gWExPR19CTENLU1o7CisJaW50CQkJY291bnQgPSByZXF1aXJlZF9yZWFkX2xlbihw cml2YXRlLCB0YXJnZXRQYWdlUHRyLCByZXFMZW4pOwogCVdBTFJlYWRFcnJvciBlcnJpbmZvOwog Ci0JaWYgKFhMb2dSZWNQdHJJc1ZhbGlkKHByaXZhdGUtPmVuZHB0cikpCi0JewotCQlpZiAodGFy Z2V0UGFnZVB0ciArIFhMT0dfQkxDS1NaIDw9IHByaXZhdGUtPmVuZHB0cikKLQkJCWNvdW50ID0g WExPR19CTENLU1o7Ci0JCWVsc2UgaWYgKHRhcmdldFBhZ2VQdHIgKyByZXFMZW4gPD0gcHJpdmF0 ZS0+ZW5kcHRyKQotCQkJY291bnQgPSBwcml2YXRlLT5lbmRwdHIgLSB0YXJnZXRQYWdlUHRyOwot CQllbHNlCi0JCXsKLQkJCXByaXZhdGUtPmVuZHB0cl9yZWFjaGVkID0gdHJ1ZTsKLQkJCXJldHVy biAtMTsKLQkJfQotCX0KKwkvKiBCYWlsIG91dCBpZiB0aGUgY291bnQgdG8gYmUgcmVhZCBpcyBu b3QgdmFsaWQgKi8KKwlpZiAoY291bnQgPCAwKQorCQlyZXR1cm4gLTE7CiAKIAlpZiAoIVdBTFJl YWQoc3RhdGUsIHJlYWRCdWZmLCB0YXJnZXRQYWdlUHRyLCBjb3VudCwgcHJpdmF0ZS0+dGltZWxp bmUsCiAJCQkJICZlcnJpbmZvKSkKLS0gCjIuNDcuMQoK --000000000000abfa1406495d7654 Content-Type: application/octet-stream; name="v11-0004-Refactor-pg_waldump-Restructure-TAP-tests.patch" Content-Disposition: attachment; filename="v11-0004-Refactor-pg_waldump-Restructure-TAP-tests.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mkwjprwp3 RnJvbSAxMjMwODIwMzgxMjYzYWFmMTA5YWJiMTQyZTFlNjEzY2EyYmQwY2M5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFRo dSwgMjIgSmFuIDIwMjYgMTE6MDY6MDUgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxMSA0LzldIFJl ZmFjdG9yOiBwZ193YWxkdW1wOiBSZXN0cnVjdHVyZSBUQVAgdGVzdHMuCgpSZXN0cnVjdHVyZWQg dGVzdHMgdGhhdCBkbyBub3QgaGF2ZSBhIFdBTCBmaWxlIGFyZ3VtZW50IHRvIHJ1biB3aXRoaW4K YSBsb29wLCBmYWNpbGl0YXRpbmcgdGhlaXIgcmUtZXhlY3V0aW9uIGZvciBkZWNvZGluZyBXQUwg ZnJvbSB0YXIKYXJjaGl2ZXMuCgo9PSBOT1RFID09CiAgVGhpcyBpcyBub3QgaW50ZW5kZWQgdG8g YmUgY29tbWl0dGVkIHNlcGFyYXRlbHkuIEl0IGNhbiBiZSBtZXJnZWQKICB3aXRoIHRoZSBuZXh0 IHBhdGNoLCB3aGljaCBpcyB0aGUgbWFpbiBwYXRjaCBpbXBsZW1lbnRpbmcgdGhpcwogIGZlYXR1 cmUuCi0tLQogc3JjL2Jpbi9wZ193YWxkdW1wL3QvMDAxX2Jhc2ljLnBsIHwgMTIzICsrKysrKysr KysrKysrKystLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDY3IGluc2VydGlvbnMoKyks IDU2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfd2FsZHVtcC90LzAwMV9i YXNpYy5wbCBiL3NyYy9iaW4vcGdfd2FsZHVtcC90LzAwMV9iYXNpYy5wbAppbmRleCA1ZGI1ZDIw MTM2Zi4uMzI4OGZhZGNmNDggMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfd2FsZHVtcC90LzAwMV9i YXNpYy5wbAorKysgYi9zcmMvYmluL3BnX3dhbGR1bXAvdC8wMDFfYmFzaWMucGwKQEAgLTE5OCwy OCArMTk4LDYgQEAgY29tbWFuZF9saWtlKAogCV0sCiAJcXIvLi8sCiAJJ3J1bnMgd2l0aCBzdGFy dCBhbmQgZW5kIHNlZ21lbnQgc3BlY2lmaWVkJyk7Ci1jb21tYW5kX2ZhaWxzX2xpa2UoCi0JWyAn cGdfd2FsZHVtcCcsICctLXBhdGgnID0+ICRub2RlLT5kYXRhX2RpciBdLAotCXFyL2Vycm9yOiBu byBzdGFydCBXQUwgbG9jYXRpb24gZ2l2ZW4vLAotCSdwYXRoIG9wdGlvbiByZXF1aXJlcyBzdGFy dCBsb2NhdGlvbicpOwotY29tbWFuZF9saWtlKAotCVsKLQkJJ3BnX3dhbGR1bXAnLAotCQknLS1w YXRoJyA9PiAkbm9kZS0+ZGF0YV9kaXIsCi0JCSctLXN0YXJ0JyA9PiAkc3RhcnRfbHNuLAotCQkn LS1lbmQnID0+ICRlbmRfbHNuLAotCV0sCi0JcXIvLi8sCi0JJ3J1bnMgd2l0aCBwYXRoIG9wdGlv biBhbmQgc3RhcnQgYW5kIGVuZCBsb2NhdGlvbnMnKTsKLWNvbW1hbmRfZmFpbHNfbGlrZSgKLQlb Ci0JCSdwZ193YWxkdW1wJywKLQkJJy0tcGF0aCcgPT4gJG5vZGUtPmRhdGFfZGlyLAotCQknLS1z dGFydCcgPT4gJHN0YXJ0X2xzbiwKLQldLAotCXFyL2Vycm9yOiBlcnJvciBpbiBXQUwgcmVjb3Jk IGF0LywKLQknZmFsbGluZyBvZmYgdGhlIGVuZCBvZiB0aGUgV0FMIHJlc3VsdHMgaW4gYW4gZXJy b3InKTsKLQogY29tbWFuZF9saWtlKAogCVsKIAkJJ3BnX3dhbGR1bXAnLCAnLS1xdWlldCcsCkBA IC0yMjcsMTUgKzIwNSw2IEBAIGNvbW1hbmRfbGlrZSgKIAldLAogCXFyL14kLywKIAknbm8gb3V0 cHV0IHdpdGggLS1xdWlldCBvcHRpb24nKTsKLWNvbW1hbmRfZmFpbHNfbGlrZSgKLQlbCi0JCSdw Z193YWxkdW1wJywgJy0tcXVpZXQnLAotCQknLS1wYXRoJyA9PiAkbm9kZS0+ZGF0YV9kaXIsCi0J CSctLXN0YXJ0JyA9PiAkc3RhcnRfbHNuCi0JXSwKLQlxci9lcnJvcjogZXJyb3IgaW4gV0FMIHJl Y29yZCBhdC8sCi0JJ2Vycm9ycyBhcmUgc2hvd24gd2l0aCAtLXF1aWV0Jyk7Ci0KIAogIyBUZXN0 IGZvcjogRGlzcGxheSBhIG1lc3NhZ2UgdGhhdCB3ZSdyZSBza2lwcGluZyBkYXRhIGlmIGBmcm9t YAogIyB3YXNuJ3QgYSBwb2ludGVyIHRvIHRoZSBzdGFydCBvZiBhIHJlY29yZC4KQEAgLTI3Miw3 ICsyNDEsNiBAQCBzdWIgdGVzdF9wZ193YWxkdW1wCiAKIAlteSAkcmVzdWx0ID0gSVBDOjpSdW46 OnJ1biBbCiAJCSdwZ193YWxkdW1wJywKLQkJJy0tcGF0aCcgPT4gJG5vZGUtPmRhdGFfZGlyLAog CQknLS1zdGFydCcgPT4gJHN0YXJ0X2xzbiwKIAkJJy0tZW5kJyA9PiAkZW5kX2xzbiwKIAkJQG9w dHMKQEAgLTI4OCwzOCArMjU2LDgxIEBAIHN1YiB0ZXN0X3BnX3dhbGR1bXAKIAogbXkgQGxpbmVz OwogCi1AbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXA7Ci1pcyhncmVwKCEvXnJtZ3I6IFx3LywgQGxp bmVzKSwgMCwgJ2FsbCBvdXRwdXQgbGluZXMgYXJlIHJtZ3IgbGluZXMnKTsKK215IEBzY2VuYXJp b3MgPSAoCisJeworCQkncGF0aCcgPT4gJG5vZGUtPmRhdGFfZGlyCisJfSk7CiAKLUBsaW5lcyA9 IHRlc3RfcGdfd2FsZHVtcCgnLS1saW1pdCcgPT4gNik7Ci1pcyhAbGluZXMsIDYsICdsaW1pdCBv cHRpb24gb2JzZXJ2ZWQnKTsKK2ZvciBteSAkc2NlbmFyaW8gKEBzY2VuYXJpb3MpCit7CisJbXkg JHBhdGggPSAkc2NlbmFyaW8tPnsncGF0aCd9OwogCi1AbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAo Jy0tZnVsbHBhZ2UnKTsKLWlzKGdyZXAoIS9ecm1ncjouKlxiRlBXXGIvLCBAbGluZXMpLCAwLCAn YWxsIG91dHB1dCBsaW5lcyBhcmUgRlBXJyk7CisJU0tJUDoKKwl7CisJCWNvbW1hbmRfZmFpbHNf bGlrZSgKKwkJCVsgJ3BnX3dhbGR1bXAnLCAnLS1wYXRoJyA9PiAkcGF0aCBdLAorCQkJcXIvZXJy b3I6IG5vIHN0YXJ0IFdBTCBsb2NhdGlvbiBnaXZlbi8sCisJCQkncGF0aCBvcHRpb24gcmVxdWly ZXMgc3RhcnQgbG9jYXRpb24nKTsKKwkJY29tbWFuZF9saWtlKAorCQkJWworCQkJCSdwZ193YWxk dW1wJywKKwkJCQknLS1wYXRoJyA9PiAkcGF0aCwKKwkJCQknLS1zdGFydCcgPT4gJHN0YXJ0X2xz biwKKwkJCQknLS1lbmQnID0+ICRlbmRfbHNuLAorCQkJXSwKKwkJCXFyLy4vLAorCQkJJ3J1bnMg d2l0aCBwYXRoIG9wdGlvbiBhbmQgc3RhcnQgYW5kIGVuZCBsb2NhdGlvbnMnKTsKKwkJY29tbWFu ZF9mYWlsc19saWtlKAorCQkJWworCQkJCSdwZ193YWxkdW1wJywKKwkJCQknLS1wYXRoJyA9PiAk cGF0aCwKKwkJCQknLS1zdGFydCcgPT4gJHN0YXJ0X2xzbiwKKwkJCV0sCisJCQlxci9lcnJvcjog ZXJyb3IgaW4gV0FMIHJlY29yZCBhdC8sCisJCQknZmFsbGluZyBvZmYgdGhlIGVuZCBvZiB0aGUg V0FMIHJlc3VsdHMgaW4gYW4gZXJyb3InKTsKIAotQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCct LXN0YXRzJyk7Ci1saWtlKCRsaW5lc1swXSwgcXIvV0FMIHN0YXRpc3RpY3MvLCAic3RhdGlzdGlj cyBvbiBzdGRvdXQiKTsKLWlzKGdyZXAoL15ybWdyOi8sIEBsaW5lcyksIDAsICdubyBybWdyIGxp bmVzIG91dHB1dCcpOworCQljb21tYW5kX2ZhaWxzX2xpa2UoCisJCQlbCisJCQkJJ3BnX3dhbGR1 bXAnLCAnLS1xdWlldCcsCisJCQkJJy0tcGF0aCcgPT4gJHBhdGgsCisJCQkJJy0tc3RhcnQnID0+ ICRzdGFydF9sc24KKwkJCV0sCisJCQlxci9lcnJvcjogZXJyb3IgaW4gV0FMIHJlY29yZCBhdC8s CisJCQknZXJyb3JzIGFyZSBzaG93biB3aXRoIC0tcXVpZXQnKTsKIAotQGxpbmVzID0gdGVzdF9w Z193YWxkdW1wKCctLXN0YXRzPXJlY29yZCcpOwotbGlrZSgkbGluZXNbMF0sIHFyL1dBTCBzdGF0 aXN0aWNzLywgInN0YXRpc3RpY3Mgb24gc3Rkb3V0Iik7Ci1pcyhncmVwKC9ecm1ncjovLCBAbGlu ZXMpLCAwLCAnbm8gcm1nciBsaW5lcyBvdXRwdXQnKTsKKwkJQGxpbmVzID0gdGVzdF9wZ193YWxk dW1wKCctLXBhdGgnID0+ICRwYXRoKTsKKwkJaXMoZ3JlcCghL15ybWdyOiBcdy8sIEBsaW5lcyks IDAsICdhbGwgb3V0cHV0IGxpbmVzIGFyZSBybWdyIGxpbmVzJyk7CiAKLUBsaW5lcyA9IHRlc3Rf cGdfd2FsZHVtcCgnLS1ybWdyJyA9PiAnQnRyZWUnKTsKLWlzKGdyZXAoIS9ecm1ncjogQnRyZWUv LCBAbGluZXMpLCAwLCAnb25seSBCdHJlZSBsaW5lcycpOworCQlAbGluZXMgPSB0ZXN0X3BnX3dh bGR1bXAoJy0tcGF0aCcgPT4gJHBhdGgsICctLWxpbWl0JyA9PiA2KTsKKwkJaXMoQGxpbmVzLCA2 LCAnbGltaXQgb3B0aW9uIG9ic2VydmVkJyk7CiAKLUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgn LS1mb3JrJyA9PiAnaW5pdCcpOwotaXMoZ3JlcCghL2ZvcmsgaW5pdC8sIEBsaW5lcyksIDAsICdv bmx5IGluaXQgZm9yayBsaW5lcycpOworCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJy0tcGF0 aCcgPT4gJHBhdGgsICctLWZ1bGxwYWdlJyk7CisJCWlzKGdyZXAoIS9ecm1ncjouKlxiRlBXXGIv LCBAbGluZXMpLCAwLCAnYWxsIG91dHB1dCBsaW5lcyBhcmUgRlBXJyk7CiAKLUBsaW5lcyA9IHRl c3RfcGdfd2FsZHVtcCgKLQknLS1yZWxhdGlvbicgPT4gIiRkZWZhdWx0X3RzX29pZC8kcG9zdGdy ZXNfZGJfb2lkLyRyZWxfdDFfb2lkIik7Ci1pcyhncmVwKCEvcmVsICRkZWZhdWx0X3RzX29pZFwv JHBvc3RncmVzX2RiX29pZFwvJHJlbF90MV9vaWQvLCBAbGluZXMpLAotCTAsICdvbmx5IGxpbmVz IGZvciBzZWxlY3RlZCByZWxhdGlvbicpOworCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJy0t cGF0aCcgPT4gJHBhdGgsICctLXN0YXRzJyk7CisJCWxpa2UoJGxpbmVzWzBdLCBxci9XQUwgc3Rh dGlzdGljcy8sICJzdGF0aXN0aWNzIG9uIHN0ZG91dCIpOworCQlpcyhncmVwKC9ecm1ncjovLCBA bGluZXMpLCAwLCAnbm8gcm1nciBsaW5lcyBvdXRwdXQnKTsKIAotQGxpbmVzID0gdGVzdF9wZ193 YWxkdW1wKAotCSctLXJlbGF0aW9uJyA9PiAiJGRlZmF1bHRfdHNfb2lkLyRwb3N0Z3Jlc19kYl9v aWQvJHJlbF9pMWFfb2lkIiwKLQknLS1ibG9jaycgPT4gMSk7Ci1pcyhncmVwKCEvXGJibGsgMVxi LywgQGxpbmVzKSwgMCwgJ29ubHkgbGluZXMgZm9yIHNlbGVjdGVkIGJsb2NrJyk7CisJCUBsaW5l cyA9IHRlc3RfcGdfd2FsZHVtcCgnLS1wYXRoJyA9PiAkcGF0aCwgJy0tc3RhdHM9cmVjb3JkJyk7 CisJCWxpa2UoJGxpbmVzWzBdLCBxci9XQUwgc3RhdGlzdGljcy8sICJzdGF0aXN0aWNzIG9uIHN0 ZG91dCIpOworCQlpcyhncmVwKC9ecm1ncjovLCBAbGluZXMpLCAwLCAnbm8gcm1nciBsaW5lcyBv dXRwdXQnKTsKIAorCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJy0tcGF0aCcgPT4gJHBhdGgs ICctLXJtZ3InID0+ICdCdHJlZScpOworCQlpcyhncmVwKCEvXnJtZ3I6IEJ0cmVlLywgQGxpbmVz KSwgMCwgJ29ubHkgQnRyZWUgbGluZXMnKTsKKworCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAo Jy0tcGF0aCcgPT4gJHBhdGgsICctLWZvcmsnID0+ICdpbml0Jyk7CisJCWlzKGdyZXAoIS9mb3Jr IGluaXQvLCBAbGluZXMpLCAwLCAnb25seSBpbml0IGZvcmsgbGluZXMnKTsKKworCQlAbGluZXMg PSB0ZXN0X3BnX3dhbGR1bXAoJy0tcGF0aCcgPT4gJHBhdGgsCisJCQknLS1yZWxhdGlvbicgPT4g IiRkZWZhdWx0X3RzX29pZC8kcG9zdGdyZXNfZGJfb2lkLyRyZWxfdDFfb2lkIik7CisJCWlzKGdy ZXAoIS9yZWwgJGRlZmF1bHRfdHNfb2lkXC8kcG9zdGdyZXNfZGJfb2lkXC8kcmVsX3QxX29pZC8s IEBsaW5lcyksCisJCQkwLCAnb25seSBsaW5lcyBmb3Igc2VsZWN0ZWQgcmVsYXRpb24nKTsKKwor CQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJy0tcGF0aCcgPT4gJHBhdGgsCisJCQknLS1yZWxh dGlvbicgPT4gIiRkZWZhdWx0X3RzX29pZC8kcG9zdGdyZXNfZGJfb2lkLyRyZWxfaTFhX29pZCIs CisJCQknLS1ibG9jaycgPT4gMSk7CisJCWlzKGdyZXAoIS9cYmJsayAxXGIvLCBAbGluZXMpLCAw LCAnb25seSBsaW5lcyBmb3Igc2VsZWN0ZWQgYmxvY2snKTsKKwl9Cit9CiAKIGRvbmVfdGVzdGlu ZygpOwotLSAKMi40Ny4xCgo= --000000000000abfa1406495d7654 Content-Type: application/octet-stream; name="v11-0005-pg_waldump-Add-support-for-archived-WAL-decoding.patch" Content-Disposition: attachment; filename="v11-0005-pg_waldump-Add-support-for-archived-WAL-decoding.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mkwjpydr4 RnJvbSA2MGEzMTk0MTc2NWQzMTQyMGU2MmI3N2RjYzYwNzk3MzgyMzUyMWU3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFR1 ZSwgMjcgSmFuIDIwMjYgMTU6NDQ6MDkgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxMSA1LzldIHBn X3dhbGR1bXA6IEFkZCBzdXBwb3J0IGZvciBhcmNoaXZlZCBXQUwgZGVjb2RpbmcuCgpwZ193YWxk dW1wIGNhbiBub3cgYWNjZXB0IHRoZSBwYXRoIHRvIGEgdGFyIGFyY2hpdmUgY29udGFpbmluZyBX QUwKZmlsZXMgYW5kIGRlY29kZSB0aGVtLiBUaGlzIGZlYXR1cmUgd2FzIGFkZGVkIHByaW1hcmls eSBmb3IKcGdfdmVyaWZ5YmFja3VwLCB3aGljaCBwcmV2aW91c2x5IGRpc2FibGVkIFdBTCBwYXJz aW5nIGZvcgp0YXItZm9ybWF0dGVkIGJhY2t1cHMuCgpOb3RlIHRoYXQgdGhpcyBwYXRjaCByZXF1 aXJlcyB0aGF0IHRoZSBXQUwgZmlsZXMgd2l0aGluIHRoZSBhcmNoaXZlIGJlCmluIHNlcXVlbnRp YWwgb3JkZXI7IGFuIGVycm9yIHdpbGwgYmUgcmVwb3J0ZWQgb3RoZXJ3aXNlLiBUaGUgbmV4dApw YXRjaCBpcyBwbGFubmVkIHRvIHJlbW92ZSB0aGlzIHJlc3RyaWN0aW9uLgotLS0KIGRvYy9zcmMv c2dtbC9yZWYvcGdfd2FsZHVtcC5zZ21sICAgICB8ICAgOCArLQogc3JjL2Jpbi9wZ193YWxkdW1w L01ha2VmaWxlICAgICAgICAgIHwgICA3ICstCiBzcmMvYmluL3BnX3dhbGR1bXAvYXJjaGl2ZV93 YWxkdW1wLmMgfCA2MTUgKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmluL3BnX3dh bGR1bXAvbWVzb24uYnVpbGQgICAgICAgfCAgIDQgKy0KIHNyYy9iaW4vcGdfd2FsZHVtcC9wZ193 YWxkdW1wLmMgICAgICB8IDIzNSArKysrKysrLS0tCiBzcmMvYmluL3BnX3dhbGR1bXAvcGdfd2Fs ZHVtcC5oICAgICAgfCAgNDQgKysKIHNyYy9iaW4vcGdfd2FsZHVtcC90LzAwMV9iYXNpYy5wbCAg ICB8ICA4NCArKystCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgfCAgIDMg KwogOCBmaWxlcyBjaGFuZ2VkLCA5MjUgaW5zZXJ0aW9ucygrKSwgNzUgZGVsZXRpb25zKC0pCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Jpbi9wZ193YWxkdW1wL2FyY2hpdmVfd2FsZHVtcC5jCgpk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9wZ193YWxkdW1wLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvcmVmL3BnX3dhbGR1bXAuc2dtbAppbmRleCBjZTIzYWRkNTU3Ny4uZDAwNGJiMGY2N2UgMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfd2FsZHVtcC5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9yZWYvcGdfd2FsZHVtcC5zZ21sCkBAIC0xNDEsMTMgKzE0MSwxNyBAQCBQb3N0Z3JlU1FM IGRvY3VtZW50YXRpb24KICAgICAgIDx0ZXJtPjxvcHRpb24+LS1wYXRoPTxyZXBsYWNlYWJsZT5w YXRoPC9yZXBsYWNlYWJsZT48L29wdGlvbj48L3Rlcm0+CiAgICAgICA8bGlzdGl0ZW0+CiAgICAg ICAgPHBhcmE+Ci0gICAgICAgIFNwZWNpZmllcyBhIGRpcmVjdG9yeSB0byBzZWFyY2ggZm9yIFdB TCBzZWdtZW50IGZpbGVzIG9yIGEKLSAgICAgICAgZGlyZWN0b3J5IHdpdGggYSA8bGl0ZXJhbD5w Z193YWw8L2xpdGVyYWw+IHN1YmRpcmVjdG9yeSB0aGF0CisgICAgICAgIFNwZWNpZmllcyBhIHRh ciBhcmNoaXZlIG9yIGEgZGlyZWN0b3J5IHRvIHNlYXJjaCBmb3IgV0FMIHNlZ21lbnQgZmlsZXMK KyAgICAgICAgb3IgYSBkaXJlY3Rvcnkgd2l0aCBhIDxsaXRlcmFsPnBnX3dhbDwvbGl0ZXJhbD4g c3ViZGlyZWN0b3J5IHRoYXQKICAgICAgICAgY29udGFpbnMgc3VjaCBmaWxlcy4gIFRoZSBkZWZh dWx0IGlzIHRvIHNlYXJjaCBpbiB0aGUgY3VycmVudAogICAgICAgICBkaXJlY3RvcnksIHRoZSA8 bGl0ZXJhbD5wZ193YWw8L2xpdGVyYWw+IHN1YmRpcmVjdG9yeSBvZiB0aGUKICAgICAgICAgY3Vy cmVudCBkaXJlY3RvcnksIGFuZCB0aGUgPGxpdGVyYWw+cGdfd2FsPC9saXRlcmFsPiBzdWJkaXJl Y3RvcnkKICAgICAgICAgb2YgPGVudmFyPlBHREFUQTwvZW52YXI+LgogICAgICAgIDwvcGFyYT4K KyAgICAgICA8cGFyYT4KKyAgICAgICAgSWYgYSB0YXIgYXJjaGl2ZSBpcyBwcm92aWRlZCwgaXRz IFdBTCBzZWdtZW50IGZpbGVzIG11c3QgYmUgaW4KKyAgICAgICAgc2VxdWVudGlhbCBvcmRlcjsg b3RoZXJ3aXNlLCBhbiBlcnJvciB3aWxsIGJlIHJlcG9ydGVkLgorICAgICAgIDwvcGFyYT4KICAg ICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCmRpZmYgLS1naXQgYS9zcmMv YmluL3BnX3dhbGR1bXAvTWFrZWZpbGUgYi9zcmMvYmluL3BnX3dhbGR1bXAvTWFrZWZpbGUKaW5k ZXggNGMxZWU2NDk1MDEuLmFhYmI4NzU2NmEyIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1 bXAvTWFrZWZpbGUKKysrIGIvc3JjL2Jpbi9wZ193YWxkdW1wL01ha2VmaWxlCkBAIC0zLDYgKzMs OSBAQAogUEdGSUxFREVTQyA9ICJwZ193YWxkdW1wIC0gZGVjb2RlIGFuZCBkaXNwbGF5IFdBTCIK IFBHQVBQSUNPTj13aW4zMgogCisjIG1ha2UgdGhlc2UgYXZhaWxhYmxlIHRvIFRBUCB0ZXN0IHNj cmlwdHMKK2V4cG9ydCBUQVIKKwogc3ViZGlyID0gc3JjL2Jpbi9wZ193YWxkdW1wCiB0b3BfYnVp bGRkaXIgPSAuLi8uLi8uLgogaW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmds b2JhbApAQCAtMTAsMTMgKzEzLDE1IEBAIGluY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtl ZmlsZS5nbG9iYWwKIE9CSlMgPSBcCiAJJChSTUdSREVTQ09CSlMpIFwKIAkkKFdJTjMyUkVTKSBc CisJYXJjaGl2ZV93YWxkdW1wLm8gXAogCWNvbXBhdC5vIFwKIAlwZ193YWxkdW1wLm8gXAogCXJt Z3JkZXNjLm8gXAogCXhsb2dyZWFkZXIubyBcCiAJeGxvZ3N0YXRzLm8KIAotb3ZlcnJpZGUgQ1BQ RkxBR1MgOj0gLURGUk9OVEVORCAkKENQUEZMQUdTKQorb3ZlcnJpZGUgQ1BQRkxBR1MgOj0gLURG Uk9OVEVORCAtSSQobGlicHFfc3JjZGlyKSAkKENQUEZMQUdTKQorTERGTEFHU19JTlRFUk5BTCAr PSAtTCQodG9wX2J1aWxkZGlyKS9zcmMvZmVfdXRpbHMgLWxwZ2ZldXRpbHMKIAogUk1HUkRFU0NT T1VSQ0VTID0gJChzb3J0ICQobm90ZGlyICQod2lsZGNhcmQgJCh0b3Bfc3JjZGlyKS9zcmMvYmFj a2VuZC9hY2Nlc3Mvcm1ncmRlc2MvKmRlc2MqLmMpKSkKIFJNR1JERVNDT0JKUyA9ICQocGF0c3Vi c3QgJS5jLCUubywkKFJNR1JERVNDU09VUkNFUykpCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3dh bGR1bXAvYXJjaGl2ZV93YWxkdW1wLmMgYi9zcmMvYmluL3BnX3dhbGR1bXAvYXJjaGl2ZV93YWxk dW1wLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjBiODM1MmZmNmU4 Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2Jpbi9wZ193YWxkdW1wL2FyY2hpdmVfd2FsZHVtcC5j CkBAIC0wLDAgKzEsNjE1IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBhcmNoaXZlX3dh bGR1bXAuYworICoJCUEgZ2VuZXJpYyBmYWNpbGl0eSBmb3IgcmVhZGluZyBXQUwgZGF0YSBmcm9t IHRhciBhcmNoaXZlcyB2aWEgYXJjaGl2ZQorICoJCXN0cmVhbWVyLgorICoKKyAqIFBvcnRpb25z IENvcHlyaWdodCAoYykgMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAK KyAqCisgKiBJREVOVElGSUNBVElPTgorICoJCXNyYy9iaW4vcGdfd2FsZHVtcC9hcmNoaXZlX3dh bGR1bXAuYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJwb3N0Z3Jl c19mZS5oIgorCisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKyNpbmNsdWRlICJhY2Nlc3MveGxvZ19p bnRlcm5hbC5oIgorI2luY2x1ZGUgImNvbW1vbi9oYXNoZm4uaCIKKyNpbmNsdWRlICJjb21tb24v bG9nZ2luZy5oIgorI2luY2x1ZGUgImZlX3V0aWxzL3NpbXBsZV9saXN0LmgiCisjaW5jbHVkZSAi cGdfd2FsZHVtcC5oIgorCisvKgorICogSG93IG1hbnkgYnl0ZXMgc2hvdWxkIHdlIHRyeSB0byBy ZWFkIGZyb20gYSBmaWxlIGF0IG9uY2U/CisgKi8KKyNkZWZpbmUgUkVBRF9DSFVOS19TSVpFCQkJ CSgxMjggKiAxMDI0KQorCisvKgorICogSGFzaCBlbnRyeSByZXByZXNlbnRpbmcgYSBXQUwgc2Vn bWVudCByZXRyaWV2ZWQgZnJvbSB0aGUgYXJjaGl2ZS4KKyAqCisgKiBXaGlsZSBXQUwgc2VnbWVu dHMgYXJlIHR5cGljYWxseSByZWFkIHNlcXVlbnRpYWxseSwgaW5kaXZpZHVhbCBlbnRyaWVzCisg KiBtYWludGFpbiB0aGVpciBvd24gYnVmZmVycyBmb3IgdGhlIGZvbGxvd2luZyByZWFzb25zOgor ICoKKyAqIDEuIEJvdW5kYXJ5IEhhbmRsaW5nOiBUaGUgYXJjaGl2ZSBzdHJlYW1lciBwcm92aWRl cyBhIGNvbnRpbnVvdXMgYnl0ZQorICogc3RyZWFtLiBBIHNpbmdsZSBzdHJlYW1pbmcgY2h1bmsg bWF5IGNvbnRhaW4gdGhlIGVuZCBvZiBvbmUgV0FMIHNlZ21lbnQKKyAqIGFuZCB0aGUgc3RhcnQg b2YgdGhlIG5leHQuIFNlcGFyYXRlIGJ1ZmZlcnMgYWxsb3cgdXMgdG8gZWFzaWx5CisgKiBwYXJ0 aXRpb24gYW5kIHRyYWNrIHRoZXNlIGJ5dGVzIGJ5IHRoZWlyIHJlc3BlY3RpdmUgc2VnbWVudHMu CisgKgorICogMi4gT3V0LW9mLU9yZGVyIFN1cHBvcnQ6IERlZGljYXRlZCBidWZmZXJzIHNpbXBs aWZ5IGxvZ2ljIGlmIHNlZ21lbnRzCisgKiBhcmUgZXZlciBhcmNoaXZlZCBvciByZXRyaWV2ZWQg b3V0IG9mIHNlcXVlbmNlLgorICoKKyAqIFRvIG1pbmltaXplIHRoZSBtZW1vcnkgZm9vdHByaW50 LCBlbnRyaWVzIGFuZCB0aGVpciBhc3NvY2lhdGVkIGJ1ZmZlcnMgYXJlCisgKiBmcmVlZCBpbW1l ZGlhdGVseSBvbmNlIGNvbnN1bWVkLiBTaW5jZSBwZ193YWxkdW1wIGRvZXMgbm90IHJlcXVlc3Qg dGhlIHNhbWUKKyAqIGJ5dGVzIHR3aWNlLCBhIHNlZ21lbnQgaXMgZGlzY2FyZGVkIGFzIHNvb24g YXMgaXQgbW92ZXMgcGFzdCBpdC4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgQXJjaGl2ZWRXQUxGaWxl Cit7CisJdWludDMyCQlzdGF0dXM7CQkJLyogaGFzaCBzdGF0dXMgKi8KKwljb25zdCBjaGFyICpm bmFtZTsJCQkvKiBoYXNoIGtleTogV0FMIHNlZ21lbnQgbmFtZSAqLworCisJU3RyaW5nSW5mbwli dWY7CisKKwlpbnQJCQl0b3RhbF9yZWFkOwkJLyogdG90YWwgc2l6ZSBvZiBhIFdBTCByZWFkIGZy b20gYXJjaGl2ZSAqLworfSBBcmNoaXZlZFdBTEZpbGU7CisKK3N0YXRpYyB1aW50MzIgaGFzaF9z dHJpbmdfcG9pbnRlcihjb25zdCBjaGFyICpzKTsKKyNkZWZpbmUgU0hfUFJFRklYCQkJCUFyY2hp dmVkV0FMCisjZGVmaW5lIFNIX0VMRU1FTlRfVFlQRQkJCUFyY2hpdmVkV0FMRmlsZQorI2RlZmlu ZSBTSF9LRVlfVFlQRQkJCQljb25zdCBjaGFyICoKKyNkZWZpbmUgU0hfS0VZCQkJCQlmbmFtZQor I2RlZmluZSBTSF9IQVNIX0tFWSh0Yiwga2V5KQloYXNoX3N0cmluZ19wb2ludGVyKGtleSkKKyNk ZWZpbmUgU0hfRVFVQUwodGIsIGEsIGIpCQkoc3RyY21wKGEsIGIpID09IDApCisjZGVmaW5lIFNI X1NDT1BFCQkJCXN0YXRpYyBpbmxpbmUKKyNkZWZpbmUgU0hfUkFXX0FMTE9DQVRPUgkJcGdfbWFs bG9jMAorI2RlZmluZSBTSF9ERUNMQVJFCisjZGVmaW5lIFNIX0RFRklORQorI2luY2x1ZGUgImxp Yi9zaW1wbGVoYXNoLmgiCisKK3R5cGVkZWYgc3RydWN0IGFzdHJlYW1lcl93YWxkdW1wCit7CisJ YXN0cmVhbWVyCWJhc2U7CisJWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbzsKK30gYXN0cmVh bWVyX3dhbGR1bXA7CisKK3N0YXRpYyBBcmNoaXZlZFdBTEZpbGUgKmdldF9hcmNoaXZlX3dhbF9l bnRyeShjb25zdCBjaGFyICpmbmFtZSwKKwkJCQkJCQkJCQkJICBYTG9nRHVtcFByaXZhdGUgKnBy aXZhdGVJbmZvLAorCQkJCQkJCQkJCQkgIGludCBXYWxTZWdTeik7CitzdGF0aWMgaW50CXJlYWRf YXJjaGl2ZV9maWxlKFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8sIFNpemUgY291bnQpOwor CitzdGF0aWMgYXN0cmVhbWVyICphc3RyZWFtZXJfd2FsZHVtcF9uZXcoWExvZ0R1bXBQcml2YXRl ICpwcml2YXRlSW5mbyk7CitzdGF0aWMgdm9pZCBhc3RyZWFtZXJfd2FsZHVtcF9jb250ZW50KGFz dHJlYW1lciAqc3RyZWFtZXIsCisJCQkJCQkJCQkgIGFzdHJlYW1lcl9tZW1iZXIgKm1lbWJlciwK KwkJCQkJCQkJCSAgY29uc3QgY2hhciAqZGF0YSwgaW50IGxlbiwKKwkJCQkJCQkJCSAgYXN0cmVh bWVyX2FyY2hpdmVfY29udGV4dCBjb250ZXh0KTsKK3N0YXRpYyB2b2lkIGFzdHJlYW1lcl93YWxk dW1wX2ZpbmFsaXplKGFzdHJlYW1lciAqc3RyZWFtZXIpOworc3RhdGljIHZvaWQgYXN0cmVhbWVy X3dhbGR1bXBfZnJlZShhc3RyZWFtZXIgKnN0cmVhbWVyKTsKKworc3RhdGljIGJvb2wgbWVtYmVy X2lzX3dhbF9maWxlKGFzdHJlYW1lcl93YWxkdW1wICpteXN0cmVhbWVyLAorCQkJCQkJCSAgIGFz dHJlYW1lcl9tZW1iZXIgKm1lbWJlciwKKwkJCQkJCQkgICBjaGFyICoqZm5hbWUpOworCitzdGF0 aWMgY29uc3QgYXN0cmVhbWVyX29wcyBhc3RyZWFtZXJfd2FsZHVtcF9vcHMgPSB7CisJLmNvbnRl bnQgPSBhc3RyZWFtZXJfd2FsZHVtcF9jb250ZW50LAorCS5maW5hbGl6ZSA9IGFzdHJlYW1lcl93 YWxkdW1wX2ZpbmFsaXplLAorCS5mcmVlID0gYXN0cmVhbWVyX3dhbGR1bXBfZnJlZQorfTsKKwor LyoKKyAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhIHRhciBhcmNoaXZlIGFu ZCBvdXRwdXRzIGl0cyBjb21wcmVzc2lvbgorICogYWxnb3JpdGhtLgorICovCitib29sCitpc19h cmNoaXZlX2ZpbGUoY29uc3QgY2hhciAqZm5hbWUsIHBnX2NvbXByZXNzX2FsZ29yaXRobSAqY29t cHJlc3Npb24pCit7CisJaW50CQkJZm5hbWVfbGVuID0gc3RybGVuKGZuYW1lKTsKKwlwZ19jb21w cmVzc19hbGdvcml0aG0gY29tcHJlc3NfYWxnbzsKKworCS8qIE5vdywgY2hlY2sgdGhlIGNvbXBy ZXNzaW9uIHR5cGUgb2YgdGhlIHRhciAqLworCWlmIChmbmFtZV9sZW4gPiA0ICYmCisJCXN0cmNt cChmbmFtZSArIGZuYW1lX2xlbiAtIDQsICIudGFyIikgPT0gMCkKKwkJY29tcHJlc3NfYWxnbyA9 IFBHX0NPTVBSRVNTSU9OX05PTkU7CisJZWxzZSBpZiAoZm5hbWVfbGVuID4gNCAmJgorCQkJIHN0 cmNtcChmbmFtZSArIGZuYW1lX2xlbiAtIDQsICIudGd6IikgPT0gMCkKKwkJY29tcHJlc3NfYWxn byA9IFBHX0NPTVBSRVNTSU9OX0daSVA7CisJZWxzZSBpZiAoZm5hbWVfbGVuID4gNyAmJgorCQkJ IHN0cmNtcChmbmFtZSArIGZuYW1lX2xlbiAtIDcsICIudGFyLmd6IikgPT0gMCkKKwkJY29tcHJl c3NfYWxnbyA9IFBHX0NPTVBSRVNTSU9OX0daSVA7CisJZWxzZSBpZiAoZm5hbWVfbGVuID4gOCAm JgorCQkJIHN0cmNtcChmbmFtZSArIGZuYW1lX2xlbiAtIDgsICIudGFyLmx6NCIpID09IDApCisJ CWNvbXByZXNzX2FsZ28gPSBQR19DT01QUkVTU0lPTl9MWjQ7CisJZWxzZSBpZiAoZm5hbWVfbGVu ID4gOCAmJgorCQkJIHN0cmNtcChmbmFtZSArIGZuYW1lX2xlbiAtIDgsICIudGFyLnpzdCIpID09 IDApCisJCWNvbXByZXNzX2FsZ28gPSBQR19DT01QUkVTU0lPTl9aU1REOworCWVsc2UKKwkJcmV0 dXJuIGZhbHNlOworCisJKmNvbXByZXNzaW9uID0gY29tcHJlc3NfYWxnbzsKKworCXJldHVybiB0 cnVlOworfQorCisvKgorICogSW5pdGlhbGl6ZXMgdGhlIHRhciBhcmNoaXZlIHJlYWRlciwgY3Jl YXRlcyBhIGhhc2ggdGFibGUgZm9yIFdBTCBlbnRyaWVzLAorICogY2hlY2tzIGZvciBleGlzdGlu ZyB2YWxpZCBXQUwgc2VnbWVudHMgaW4gdGhlIGFyY2hpdmUgZmlsZSBhbmQgcmV0cmlldmVzIHRo ZQorICogc2VnbWVudCBzaXplLCBhbmQgc2V0cyB1cCBmaWx0ZXJzIGZvciByZWxldmFudCBlbnRy aWVzLgorICovCit2b2lkCitpbml0X2FyY2hpdmVfcmVhZGVyKFhMb2dEdW1wUHJpdmF0ZSAqcHJp dmF0ZUluZm8sIGNvbnN0IGNoYXIgKndhbGRpciwKKwkJCQkJaW50ICpXYWxTZWdTeiwgcGdfY29t cHJlc3NfYWxnb3JpdGhtIGNvbXByZXNzaW9uKQoreworCWludAkJCWZkOworCWFzdHJlYW1lciAg KnN0cmVhbWVyOworCUFyY2hpdmVkV0FMRmlsZSAqZW50cnkgPSBOVUxMOworCVhMb2dMb25nUGFn ZUhlYWRlciBsb25naGRyOworCisJLyogT3BlbiB0YXIgYXJjaGl2ZSBhbmQgc3RvcmUgaXRzIGZp bGUgZGVzY3JpcHRvciAqLworCWZkID0gb3Blbl9maWxlX2luX2RpcmVjdG9yeSh3YWxkaXIsIHBy aXZhdGVJbmZvLT5hcmNoaXZlX25hbWUpOworCisJaWYgKGZkIDwgMCkKKwkJcGdfZmF0YWwoImNv dWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiIiwgcHJpdmF0ZUluZm8tPmFyY2hpdmVfbmFtZSk7CisK Kwlwcml2YXRlSW5mby0+YXJjaGl2ZV9mZCA9IGZkOworCisJc3RyZWFtZXIgPSBhc3RyZWFtZXJf d2FsZHVtcF9uZXcocHJpdmF0ZUluZm8pOworCisJLyogQmVmb3JlIHRoYXQgd2UgbXVzdCBwYXJz ZSB0aGUgdGFyIGFyY2hpdmUuICovCisJc3RyZWFtZXIgPSBhc3RyZWFtZXJfdGFyX3BhcnNlcl9u ZXcoc3RyZWFtZXIpOworCisJLyogQmVmb3JlIHRoYXQgd2UgbXVzdCBkZWNvbXByZXNzLCBpZiBh cmNoaXZlIGlzIGNvbXByZXNzZWQuICovCisJaWYgKGNvbXByZXNzaW9uID09IFBHX0NPTVBSRVNT SU9OX0daSVApCisJCXN0cmVhbWVyID0gYXN0cmVhbWVyX2d6aXBfZGVjb21wcmVzc29yX25ldyhz dHJlYW1lcik7CisJZWxzZSBpZiAoY29tcHJlc3Npb24gPT0gUEdfQ09NUFJFU1NJT05fTFo0KQor CQlzdHJlYW1lciA9IGFzdHJlYW1lcl9sejRfZGVjb21wcmVzc29yX25ldyhzdHJlYW1lcik7CisJ ZWxzZSBpZiAoY29tcHJlc3Npb24gPT0gUEdfQ09NUFJFU1NJT05fWlNURCkKKwkJc3RyZWFtZXIg PSBhc3RyZWFtZXJfenN0ZF9kZWNvbXByZXNzb3JfbmV3KHN0cmVhbWVyKTsKKworCXByaXZhdGVJ bmZvLT5hcmNoaXZlX3N0cmVhbWVyID0gc3RyZWFtZXI7CisKKwkvKiBIYXNoIHRhYmxlIHN0b3Jp bmcgV0FMIGVudHJpZXMgcmVhZCBmcm9tIHRoZSBhcmNoaXZlICovCisJcHJpdmF0ZUluZm8tPmFy Y2hpdmVfd2FsX2h0YWIgPSBBcmNoaXZlZFdBTF9jcmVhdGUoMTYsIE5VTEwpOworCisJLyoKKwkg KiBWZXJpZnkgdGhhdCB0aGUgYXJjaGl2ZSBjb250YWlucyB2YWxpZCBXQUwgZmlsZXMgYW5kIGZl dGNoIFdBTCBzZWdtZW50CisJICogc2l6ZQorCSAqLworCXdoaWxlIChlbnRyeSA9PSBOVUxMIHx8 IGVudHJ5LT5idWYtPmxlbiA8IFhMT0dfQkxDS1NaKQorCXsKKwkJaWYgKHJlYWRfYXJjaGl2ZV9m aWxlKHByaXZhdGVJbmZvLCBYTE9HX0JMQ0tTWikgPT0gMCkKKwkJCXBnX2ZhdGFsKCJjb3VsZCBu b3QgZmluZCBXQUwgaW4gXCIlc1wiIGFyY2hpdmUiLAorCQkJCQkgcHJpdmF0ZUluZm8tPmFyY2hp dmVfbmFtZSk7CisKKwkJZW50cnkgPSBwcml2YXRlSW5mby0+Y3VyX2ZpbGU7CisJfQorCisJLyog U2V0IFdhbFNlZ1N6IGlmIFdBTCBkYXRhIGlzIHN1Y2Nlc3NmdWxseSByZWFkICovCisJbG9uZ2hk ciA9IChYTG9nTG9uZ1BhZ2VIZWFkZXIpIGVudHJ5LT5idWYtPmRhdGE7CisKKwlpZiAoIUlzVmFs aWRXYWxTZWdTaXplKGxvbmdoZHItPnhscF9zZWdfc2l6ZSkpCisJeworCQlwZ19sb2dfZXJyb3Io bmdldHRleHQoImludmFsaWQgV0FMIHNlZ21lbnQgc2l6ZSBpbiBXQUwgZmlsZSBmcm9tIGFyY2hp dmUgXCIlc1wiICglZCBieXRlKSIsCisJCQkJCQkJICAiaW52YWxpZCBXQUwgc2VnbWVudCBzaXpl IGluIFdBTCBmaWxlIGZyb20gYXJjaGl2ZSBcIiVzXCIgKCVkIGJ5dGVzKSIsCisJCQkJCQkJICBs b25naGRyLT54bHBfc2VnX3NpemUpLAorCQkJCQkgcHJpdmF0ZUluZm8tPmFyY2hpdmVfbmFtZSwg bG9uZ2hkci0+eGxwX3NlZ19zaXplKTsKKwkJcGdfbG9nX2Vycm9yX2RldGFpbCgiVGhlIFdBTCBz ZWdtZW50IHNpemUgbXVzdCBiZSBhIHBvd2VyIG9mIHR3byBiZXR3ZWVuIDEgTUIgYW5kIDEgR0Iu Iik7CisJCWV4aXQoMSk7CisJfQorCisJKldhbFNlZ1N6ID0gbG9uZ2hkci0+eGxwX3NlZ19zaXpl OworCisJLyoKKwkgKiBXaXRoIHRoZSBXQUwgc2VnbWVudCBzaXplIGF2YWlsYWJsZSwgd2UgY2Fu IG5vdyBpbml0aWFsaXplIHRoZQorCSAqIGRlcGVuZGVudCBzdGFydCBhbmQgZW5kIHNlZ21lbnQg bnVtYmVycy4KKwkgKi8KKwlBc3NlcnQoIVhMb2dSZWNQdHJJc0ludmFsaWQocHJpdmF0ZUluZm8t PnN0YXJ0cHRyKSk7CisJWExCeXRlVG9TZWcocHJpdmF0ZUluZm8tPnN0YXJ0cHRyLCBwcml2YXRl SW5mby0+c3RhcnRTZWdObywgKldhbFNlZ1N6KTsKKworCWlmIChYTG9nUmVjUHRySXNJbnZhbGlk KHByaXZhdGVJbmZvLT5lbmRwdHIpKQorCQlwcml2YXRlSW5mby0+ZW5kU2VnTm8gPSBVSU5UNjRf TUFYOworCWVsc2UKKwkJWExCeXRlVG9TZWcocHJpdmF0ZUluZm8tPmVuZHB0ciwgcHJpdmF0ZUlu Zm8tPmVuZFNlZ05vLCAqV2FsU2VnU3opOworfQorCisvKgorICogUmVsZWFzZSB0aGUgYXJjaGl2 ZSBzdHJlYW1lciBjaGFpbiBhbmQgY2xvc2UgdGhlIGFyY2hpdmUgZmlsZS4KKyAqLwordm9pZAor ZnJlZV9hcmNoaXZlX3JlYWRlcihYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvKQoreworCS8q CisJICogTkI6IE5vcm1hbGx5LCBhc3RyZWFtZXJfZmluYWxpemUoKSBpcyBjYWxsZWQgYmVmb3Jl IGFzdHJlYW1lcl9mcmVlKCkgdG8KKwkgKiBmbHVzaCBhbnkgcmVtYWluaW5nIGJ1ZmZlcmVkIGRh dGEgb3IgdG8gZW5zdXJlIHRoZSBlbmQgb2YgdGhlIHRhcgorCSAqIGFyY2hpdmUgaXMgcmVhY2hl ZC4gSG93ZXZlciwgd2hlbiBkZWNvZGluZyBhIFdBTCBmaWxlLCBvbmNlIHdlIGhpdCB0aGUKKwkg KiBlbmQgTFNOLCBhbnkgcmVtYWluaW5nIFdBTCBkYXRhIGluIHRoZSBidWZmZXIgb3IgdGhlIHRh ciBhcmNoaXZlJ3MKKwkgKiB1bnJlYWNoZWQgZW5kIGNhbiBiZSBzYWZlbHkgaWdub3JlZC4KKwkg Ki8KKwlhc3RyZWFtZXJfZnJlZShwcml2YXRlSW5mby0+YXJjaGl2ZV9zdHJlYW1lcik7CisKKwkv KiBDbG9zZSB0aGUgZmlsZS4gKi8KKwlpZiAoY2xvc2UocHJpdmF0ZUluZm8tPmFyY2hpdmVfZmQp ICE9IDApCisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGNsb3NlIGZpbGUgXCIlc1wiOiAlbSIs CisJCQkJCSBwcml2YXRlSW5mby0+YXJjaGl2ZV9uYW1lKTsKK30KKworLyoKKyAqIENvcGllcyBX QUwgZGF0YSBmcm9tIGFzdHJlYW1lciB0byByZWFkQnVmZjsgaWYgdW5hdmFpbGFibGUsIGZldGNo ZXMgbW9yZQorICogZnJvbSB0aGUgdGFyIGFyY2hpdmUgdmlhIGFzdHJlYW1lci4KKyAqLworaW50 CityZWFkX2FyY2hpdmVfd2FsX3BhZ2UoWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbywgWExv Z1JlY1B0ciB0YXJnZXRQYWdlUHRyLAorCQkJCQkgIFNpemUgY291bnQsIGNoYXIgKnJlYWRCdWZm LCBpbnQgV2FsU2VnU3opCit7CisJY2hhcgkgICAqcCA9IHJlYWRCdWZmOworCVNpemUJCW5ieXRl cyA9IGNvdW50OworCVhMb2dSZWNQdHIJcmVjcHRyID0gdGFyZ2V0UGFnZVB0cjsKKwlYTG9nU2Vn Tm8Jc2Vnbm87CisJY2hhcgkJZm5hbWVbTUFYRk5BTUVMRU5dOworCUFyY2hpdmVkV0FMRmlsZSAq ZW50cnk7CisKKwkvKiBJZGVudGlmeSB0aGUgc2VnbWVudCBhbmQgbG9jYXRlIGl0cyBlbnRyeSBp biB0aGUgYXJjaGl2ZSBoYXNoICovCisJWExCeXRlVG9TZWcodGFyZ2V0UGFnZVB0ciwgc2Vnbm8s IFdhbFNlZ1N6KTsKKwlYTG9nRmlsZU5hbWUoZm5hbWUsIHByaXZhdGVJbmZvLT50aW1lbGluZSwg c2Vnbm8sIFdhbFNlZ1N6KTsKKwllbnRyeSA9IGdldF9hcmNoaXZlX3dhbF9lbnRyeShmbmFtZSwg cHJpdmF0ZUluZm8sIFdhbFNlZ1N6KTsKKworCXdoaWxlIChuYnl0ZXMgPiAwKQorCXsKKwkJY2hh cgkgICAqYnVmID0gZW50cnktPmJ1Zi0+ZGF0YTsKKwkJaW50CQkJYnVmTGVuID0gZW50cnktPmJ1 Zi0+bGVuOworCQlYTG9nUmVjUHRyCWVuZFB0cjsKKwkJWExvZ1JlY1B0cglzdGFydFB0cjsKKwor CQkvKiBDYWxjdWxhdGUgdGhlIExTTiByYW5nZSBjdXJyZW50bHkgcmVzaWRpbmcgaW4gdGhlIGJ1 ZmZlciAqLworCQlYTG9nU2VnTm9PZmZzZXRUb1JlY1B0cihzZWdubywgZW50cnktPnRvdGFsX3Jl YWQsIFdhbFNlZ1N6LCBlbmRQdHIpOworCQlzdGFydFB0ciA9IGVuZFB0ciAtIGJ1ZkxlbjsKKwor CQkvKgorCQkgKiBDb3B5IHRoZSByZXF1ZXN0ZWQgV0FMIHJlY29yZCBpZiBpdCBleGlzdHMgaW4g dGhlIGJ1ZmZlci4KKwkJICovCisJCWlmIChidWZMZW4gPiAwICYmIHN0YXJ0UHRyIDw9IHJlY3B0 ciAmJiByZWNwdHIgPCBlbmRQdHIpCisJCXsKKwkJCWludAkJCWNvcHlCeXRlczsKKwkJCWludAkJ CW9mZnNldCA9IHJlY3B0ciAtIHN0YXJ0UHRyOworCisJCQkvKgorCQkJICogR2l2ZW4gc3RhcnRQ dHIgPD0gcmVjcHRyIDwgZW5kUHRyIGFuZCBhIHRvdGFsIGJ1ZmZlciBzaXplCisJCQkgKiAnYnVm TGVuJywgdGhlIG9mZnNldCAocmVjcHRyIC0gc3RhcnRQdHIpIHdpbGwgYWx3YXlzIGJlIGxlc3MK KwkJCSAqIHRoYW4gJ2J1ZkxlbicuCisJCQkgKi8KKwkJCUFzc2VydChvZmZzZXQgPCBidWZMZW4p OworCisJCQljb3B5Qnl0ZXMgPSBNaW4obmJ5dGVzLCBidWZMZW4gLSBvZmZzZXQpOworCQkJbWVt Y3B5KHAsIGJ1ZiArIG9mZnNldCwgY29weUJ5dGVzKTsKKworCQkJLyogVXBkYXRlIHN0YXRlIGZv ciByZWFkICovCisJCQlyZWNwdHIgKz0gY29weUJ5dGVzOworCQkJbmJ5dGVzIC09IGNvcHlCeXRl czsKKwkJCXAgKz0gY29weUJ5dGVzOworCQl9CisJCWVsc2UKKwkJeworCQkJLyoKKwkJCSAqIHBn X3dhbGR1bXAgbWF5IHJlcXVlc3QgdG8gcmUtcmVhZCB0aGUgY3VycmVudGx5IGFjdGl2ZSBwYWdl LAorCQkJICogYnV0IG5ldmVyIGEgcGFnZSBvbGRlciB0aGFuIHRoZSBjdXJyZW50IG9uZS4gVGhl cmVmb3JlLCBhbnkKKwkJCSAqIGZ1bGx5IGNvbnN1bWVkIFdBTCBkYXRhIHByZWNlZGluZyB0aGUg Y3VycmVudCBwYWdlIGNhbiBiZQorCQkJICogc2FmZWx5IGRpc2NhcmRlZC4KKwkJCSAqLworCQkJ cmVzZXRTdHJpbmdJbmZvKGVudHJ5LT5idWYpOworCisJCQkvKgorCQkJICogUHVzaCBiYWNrIHRo ZSBwYXJ0aWFsIHBhZ2UgZGF0YSBmb3IgdGhlIGN1cnJlbnQgcGFnZSB0byB0aGUKKwkJCSAqIGJ1 ZmZlciwgZW5zdXJpbmcgaXQgcmVtYWlucyBmdWxsIHBhZ2UgYXZhaWxhYmxlIGZvciByZS1yZWFk aW5nCisJCQkgKiBpZiByZXF1ZXN0ZWQuCisJCQkgKi8KKwkJCWlmIChwID4gcmVhZEJ1ZmYpCisJ CQl7CisJCQkJQXNzZXJ0KChjb3VudCAtIG5ieXRlcykgPiAwKTsKKwkJCQlhcHBlbmRCaW5hcnlT dHJpbmdJbmZvKGVudHJ5LT5idWYsIHJlYWRCdWZmLCBjb3VudCAtIG5ieXRlcyk7CisJCQl9CisK KwkJCS8qCisJCQkgKiBOb3csIGZldGNoIG1vcmUgZGF0YTsgcmFpc2UgYW4gZXJyb3IgaWYgaXQn cyBub3QgdGhlIGN1cnJlbnQKKwkJCSAqIHNlZ21lbnQgYmVpbmcgcmVhZCBieSB0aGUgYXJjaGl2 ZSBzdHJlYW1lciBvciBpZiByZWFkaW5nIG9mIHRoZQorCQkJICogYXJjaGl2ZWQgZmlsZSBoYXMg ZmluaXNoZWQuCisJCQkgKi8KKwkJCWlmIChwcml2YXRlSW5mby0+Y3VyX2ZpbGUgIT0gZW50cnkg fHwKKwkJCQlyZWFkX2FyY2hpdmVfZmlsZShwcml2YXRlSW5mbywgUkVBRF9DSFVOS19TSVpFKSA9 PSAwKQorCQkJCXBnX2ZhdGFsKCJjb3VsZCBub3QgcmVhZCBmaWxlIFwiJXNcIiBmcm9tIGFyY2hp dmUgXCIlc1wiOiByZWFkICVsbGQgb2YgJWxsZCIsCisJCQkJCQkgZm5hbWUsIHByaXZhdGVJbmZv LT5hcmNoaXZlX25hbWUsCisJCQkJCQkgKGxvbmcgbG9uZyBpbnQpIGNvdW50IC0gbmJ5dGVzLAor CQkJCQkJIChsb25nIGxvbmcgaW50KSBuYnl0ZXMpOworCQl9CisJfQorCisJLyoKKwkgKiBTaG91 bGQgaGF2ZSBlaXRoZXIgaGF2ZSBzdWNjZXNzZnVsbHkgcmVhZCBhbGwgdGhlIHJlcXVlc3RlZCBi eXRlcyBvcgorCSAqIHJlcG9ydGVkIGEgZmFpbHVyZSBiZWZvcmUgdGhpcyBwb2ludC4KKwkgKi8K KwlBc3NlcnQobmJ5dGVzID09IDApOworCisJLyoKKwkgKiBOQjogV2UgcmV0dXJuIHRoZSBmaXhl ZCB2YWx1ZSBwcm92aWRlZCBhcyBpbnB1dC4gQWx0aG91Z2ggd2UgY291bGQKKwkgKiByZXR1cm4g YSBib29sZWFuIHNpbmNlIHdlIGVpdGhlciBzdWNjZXNzZnVsbHkgcmVhZCB0aGUgV0FMIHBhZ2Ug b3IKKwkgKiByYWlzZSBhbiBlcnJvciwgYnV0IHRoZSBjYWxsZXIgZXhwZWN0cyB0aGlzIHZhbHVl IHRvIGJlIHJldHVybmVkLiBUaGUKKwkgKiByb3V0aW5lIHRoYXQgcmVhZHMgV0FMIHBhZ2VzIGZy b20gdGhlIHBoeXNpY2FsIFdBTCBmaWxlIGZvbGxvd3MgdGhlCisJICogc2FtZSBjb252ZW50aW9u LgorCSAqLworCXJldHVybiBjb3VudDsKK30KKworLyoKKyAqIENsZWFycyB0aGUgYnVmZmVyIG9m IGEgV0FMIGVudHJ5IHRoYXQgaXMgYmVpbmcgaWdub3JlZC4gIFRoaXMgZnJlZXMgdXAgbWVtb3J5 CisgKiBhbmQgcHJldmVudHMgdGhlIGFjY3VtdWxhdGlvbiBvZiBpcnJlbGV2YW50IFdBTCBkYXRh LiAgQWRkaXRpb25hbGx5LAorICogY29uZGl0aW9uYWxseSBzZXR0aW5nIGN1cl9maWxlIHdpdGhp biBwcml2YXRlaW5mbyB0byBOVUxMIGVuc3VyZXMgdGhlCisgKiBhcmNoaXZlIHN0cmVhbWVyIHNr aXBzIHVubmVjZXNzYXJ5IGNvcHkgb3BlcmF0aW9ucworICovCit2b2lkCitmcmVlX2FyY2hpdmVf d2FsX2VudHJ5KGNvbnN0IGNoYXIgKmZuYW1lLCBYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZv KQoreworCUFyY2hpdmVkV0FMRmlsZSAqZW50cnk7CisKKwllbnRyeSA9IEFyY2hpdmVkV0FMX2xv b2t1cChwcml2YXRlSW5mby0+YXJjaGl2ZV93YWxfaHRhYiwgZm5hbWUpOworCisJaWYgKGVudHJ5 ID09IE5VTEwpCisJCXJldHVybjsKKworCS8qIERlc3Ryb3kgdGhlIGJ1ZmZlciAqLworCWRlc3Ry b3lTdHJpbmdJbmZvKGVudHJ5LT5idWYpOworCWVudHJ5LT5idWYgPSBOVUxMOworCisJLyogU2V0 IGN1cl9maWxlIHRvIE5VTEwgaWYgaXQgbWF0Y2hlcyB0aGUgZW50cnkgYmVpbmcgaWdub3JlZCAq LworCWlmIChwcml2YXRlSW5mby0+Y3VyX2ZpbGUgPT0gZW50cnkpCisJCXByaXZhdGVJbmZvLT5j dXJfZmlsZSA9IE5VTEw7CisKKwlBcmNoaXZlZFdBTF9kZWxldGVfaXRlbShwcml2YXRlSW5mby0+ YXJjaGl2ZV93YWxfaHRhYiwgZW50cnkpOworfQorCisvKgorICogUmV0dXJucyB0aGUgYXJjaGl2 ZWQgV0FMIGVudHJ5IGZyb20gdGhlIGhhc2ggdGFibGUgaWYgaXQgZXhpc3RzLiAgT3RoZXJ3aXNl LAorICogaXQgaW52b2tlcyB0aGUgcm91dGluZSB0byByZWFkIHRoZSBhcmNoaXZlZCBmaWxlLCB3 aGljaCB0aGVuIHBvcHVsYXRlcyB0aGUKKyAqIGVudHJ5IGluIHRoZSBoYXNoIHRhYmxlIGlmIHRo YXQgV0FMIGV4aXN0cyBpbiB0aGUgYXJjaGl2ZS4KKyAqLworc3RhdGljIEFyY2hpdmVkV0FMRmls ZSAqCitnZXRfYXJjaGl2ZV93YWxfZW50cnkoY29uc3QgY2hhciAqZm5hbWUsIFhMb2dEdW1wUHJp dmF0ZSAqcHJpdmF0ZUluZm8sCisJCQkJCSAgaW50IFdhbFNlZ1N6KQoreworCUFyY2hpdmVkV0FM RmlsZSAqZW50cnkgPSBOVUxMOworCVhMb2dTZWdObwlzZWdubzsKKwlUaW1lTGluZUlECXRpbWVs aW5lOworCisJLyogU2VhcmNoIGhhc2ggdGFibGUgKi8KKwllbnRyeSA9IEFyY2hpdmVkV0FMX2xv b2t1cChwcml2YXRlSW5mby0+YXJjaGl2ZV93YWxfaHRhYiwgZm5hbWUpOworCisJaWYgKGVudHJ5 ICE9IE5VTEwpCisJCXJldHVybiBlbnRyeTsKKworCS8qIEdldCBzZWdtZW50IG51bWJlciBmb3Ig ZmFzdGVyIGNvbXBhcmlzb24gdGhhbiBzdHJpbmctYmFzZWQgbmFtZXMgKi8KKwlYTG9nRnJvbUZp bGVOYW1lKGZuYW1lLCAmdGltZWxpbmUsICZzZWdubywgV2FsU2VnU3opOworCisJLyogTmVlZGVk IFdBTCB5ZXQgdG8gYmUgZGVjb2RlZCBmcm9tIGFyY2hpdmUsIGRvIHRoZSBzYW1lICovCisJd2hp bGUgKDEpCisJeworCQlYTG9nU2VnTm8JY3VyU2VnTm87CisJCVRpbWVMaW5lSUQJY3VyU2VnVGlt ZWxpbmU7CisKKwkJLyogRmV0Y2ggbW9yZSBkYXRhICovCisJCWlmIChyZWFkX2FyY2hpdmVfZmls ZShwcml2YXRlSW5mbywgUkVBRF9DSFVOS19TSVpFKSA9PSAwKQorCQkJYnJlYWs7CQkJCS8qIGFy Y2hpdmUgZmlsZSBlbmRlZCAqLworCisJCS8qCisJCSAqIEVpdGhlciwgaGVyZSBmb3IgdGhlIGZp cnN0IHRpbWUsIG9yIHRoZSBhcmNoaXZlZCBzdHJlYW1lciBpcworCQkgKiByZWFkaW5nIGEgbm9u LVdBTCBmaWxlIG9yIGFuIGlycmVsZXZhbnQgV0FMIGZpbGUuCisJCSAqLworCQlpZiAocHJpdmF0 ZUluZm8tPmN1cl9maWxlID09IE5VTEwpCisJCQljb250aW51ZTsKKworCQllbnRyeSA9IHByaXZh dGVJbmZvLT5jdXJfZmlsZTsKKworCQkvKgorCQkgKiBJZ25vcmUgaWYgdGhlIHRpbWVsaW5lIGlz IGRpZmZlcmVudCBvciB0aGUgY3VycmVudCBzZWdtZW50IGlzIG5vdAorCQkgKiB0aGUgZGVzaXJl ZCBvbmUuCisJCSAqLworCQlYTG9nRnJvbUZpbGVOYW1lKGVudHJ5LT5mbmFtZSwgJmN1clNlZ1Rp bWVsaW5lLCAmY3VyU2VnTm8sIFdhbFNlZ1N6KTsKKwkJaWYgKHByaXZhdGVJbmZvLT50aW1lbGlu ZSAhPSBjdXJTZWdUaW1lbGluZSB8fAorCQkJcHJpdmF0ZUluZm8tPnN0YXJ0U2VnTm8gPiBjdXJT ZWdObyB8fAorCQkJcHJpdmF0ZUluZm8tPmVuZFNlZ05vIDwgY3VyU2VnTm8gfHwKKwkJCXNlZ25v ID4gY3VyU2VnTm8pCisJCXsKKwkJCWZyZWVfYXJjaGl2ZV93YWxfZW50cnkoZW50cnktPmZuYW1l LCBwcml2YXRlSW5mbyk7CisJCQljb250aW51ZTsKKwkJfQorCisJCS8qIEZvdW5kIHRoZSByZXF1 aXJlZCBlbnRyeSAqLworCQlpZiAoY3VyU2VnTm8gPT0gc2Vnbm8pCisJCQlyZXR1cm4gZW50cnk7 CisKKwkJLyogV0FMIHNlZ21lbnRzIG11c3QgYmUgYXJjaGl2ZWQgaW4gb3JkZXIgKi8KKwkJcGdf bG9nX2Vycm9yKCJXQUwgZmlsZXMgYXJlIG5vdCBhcmNoaXZlZCBpbiBzZXF1ZW50aWFsIG9yZGVy Iik7CisJCXBnX2xvZ19lcnJvcl9kZXRhaWwoIkV4cGVjdGluZyBzZWdtZW50IG51bWJlciAiIFVJ TlQ2NF9GT1JNQVQgIiBidXQgZm91bmQgIiBVSU5UNjRfRk9STUFUICIuIiwKKwkJCQkJCQlzZWdu bywgY3VyU2VnTm8pOworCQlleGl0KDEpOworCX0KKworCS8qIFJlcXVlc3RlZCBXQUwgc2VnbWVu dCBub3QgZm91bmQgKi8KKwlwZ19mYXRhbCgiY291bGQgbm90IGZpbmQgZmlsZSBcIiVzXCIgaW4g YXJjaGl2ZSIsIGZuYW1lKTsKK30KKworLyoKKyAqIFJlYWRzIHRoZSBhcmNoaXZlIGZpbGUgYW5k IHBhc3NlcyBpdCB0byB0aGUgYXJjaGl2ZSBzdHJlYW1lciBmb3IKKyAqIGRlY29tcHJlc3Npb24u CisgKi8KK3N0YXRpYyBpbnQKK3JlYWRfYXJjaGl2ZV9maWxlKFhMb2dEdW1wUHJpdmF0ZSAqcHJp dmF0ZUluZm8sIFNpemUgY291bnQpCit7CisJaW50CQkJcmM7CisJY2hhcgkgICAqYnVmZmVyOwor CisJYnVmZmVyID0gcGdfbWFsbG9jKFJFQURfQ0hVTktfU0laRSAqIHNpemVvZih1aW50OCkpOwor CisJcmMgPSByZWFkKHByaXZhdGVJbmZvLT5hcmNoaXZlX2ZkLCBidWZmZXIsIGNvdW50KTsKKwlp ZiAocmMgPCAwKQorCQlwZ19mYXRhbCgiY291bGQgbm90IHJlYWQgZmlsZSBcIiVzXCI6ICVtIiwK KwkJCQkgcHJpdmF0ZUluZm8tPmFyY2hpdmVfbmFtZSk7CisKKwkvKgorCSAqIERlY29tcHJlc3Mg KGlmIHJlcXVpcmVkKSwgYW5kIHRoZW4gcGFyc2UgdGhlIHByZXZpb3VzbHkgcmVhZCBjb250ZW50 cworCSAqIG9mIHRoZSB0YXIgZmlsZS4KKwkgKi8KKwlpZiAocmMgPiAwKQorCQlhc3RyZWFtZXJf Y29udGVudChwcml2YXRlSW5mby0+YXJjaGl2ZV9zdHJlYW1lciwgTlVMTCwKKwkJCQkJCSAgYnVm ZmVyLCByYywgQVNUUkVBTUVSX1VOS05PV04pOworCXBnX2ZyZWUoYnVmZmVyKTsKKworCXJldHVy biByYzsKK30KKworLyoKKyAqIENyZWF0ZSBhbiBhc3RyZWFtZXIgdGhhdCBjYW4gcmVhZCBXQUwg ZnJvbSBhIHRhciBmaWxlLgorICovCitzdGF0aWMgYXN0cmVhbWVyICoKK2FzdHJlYW1lcl93YWxk dW1wX25ldyhYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvKQoreworCWFzdHJlYW1lcl93YWxk dW1wICpzdHJlYW1lcjsKKworCXN0cmVhbWVyID0gcGFsbG9jMChzaXplb2YoYXN0cmVhbWVyX3dh bGR1bXApKTsKKwkqKChjb25zdCBhc3RyZWFtZXJfb3BzICoqKSAmc3RyZWFtZXItPmJhc2UuYmJz X29wcykgPQorCQkmYXN0cmVhbWVyX3dhbGR1bXBfb3BzOworCisJc3RyZWFtZXItPnByaXZhdGVJ bmZvID0gcHJpdmF0ZUluZm87CisKKwlyZXR1cm4gJnN0cmVhbWVyLT5iYXNlOworfQorCisvKgor ICogTWFpbiBlbnRyeSBwb2ludCBvZiB0aGUgYXJjaGl2ZSBzdHJlYW1lciBmb3IgcmVhZGluZyBX QUwgZGF0YSBmcm9tIGEgdGFyCisgKiBmaWxlLiBJZiBhIG1lbWJlciBpcyBpZGVudGlmaWVkIGFz IGEgdmFsaWQgV0FMIGZpbGUsIGEgaGFzaCBlbnRyeSBpcyBjcmVhdGVkCisgKiBmb3IgaXQsIGFu ZCBpdHMgY29udGVudHMgYXJlIGNvcGllZCBpbnRvIHRoYXQgZW50cnkncyBidWZmZXIsIG1ha2lu ZyB0aGVtCisgKiBhY2Nlc3NpYmxlIHRvIHRoZSBkZWNvZGluZyByb3V0aW5lLgorICovCitzdGF0 aWMgdm9pZAorYXN0cmVhbWVyX3dhbGR1bXBfY29udGVudChhc3RyZWFtZXIgKnN0cmVhbWVyLCBh c3RyZWFtZXJfbWVtYmVyICptZW1iZXIsCisJCQkJCQkgIGNvbnN0IGNoYXIgKmRhdGEsIGludCBs ZW4sCisJCQkJCQkgIGFzdHJlYW1lcl9hcmNoaXZlX2NvbnRleHQgY29udGV4dCkKK3sKKwlhc3Ry ZWFtZXJfd2FsZHVtcCAqbXlzdHJlYW1lciA9IChhc3RyZWFtZXJfd2FsZHVtcCAqKSBzdHJlYW1l cjsKKwlYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvID0gbXlzdHJlYW1lci0+cHJpdmF0ZUlu Zm87CisKKwlBc3NlcnQoY29udGV4dCAhPSBBU1RSRUFNRVJfVU5LTk9XTik7CisKKwlzd2l0Y2gg KGNvbnRleHQpCisJeworCQljYXNlIEFTVFJFQU1FUl9NRU1CRVJfSEVBREVSOgorCQkJeworCQkJ CWNoYXIJICAgKmZuYW1lID0gTlVMTDsKKwkJCQlBcmNoaXZlZFdBTEZpbGUgKmVudHJ5OworCQkJ CWJvb2wJCWZvdW5kOworCisJCQkJcGdfbG9nX2RlYnVnKCJyZWFkaW5nIFwiJXNcIiIsIG1lbWJl ci0+cGF0aG5hbWUpOworCisJCQkJaWYgKCFtZW1iZXJfaXNfd2FsX2ZpbGUobXlzdHJlYW1lciwg bWVtYmVyLCAmZm5hbWUpKQorCQkJCQlicmVhazsKKworCQkJCWVudHJ5ID0gQXJjaGl2ZWRXQUxf aW5zZXJ0KHByaXZhdGVJbmZvLT5hcmNoaXZlX3dhbF9odGFiLAorCQkJCQkJCQkJCSAgIGZuYW1l LCAmZm91bmQpOworCisJCQkJLyoKKwkJCQkgKiBTaG91bGRuJ3QgaGFwcGVuLCBidXQgaWYgaXQg ZG9lcywgc2ltcGx5IGlnbm9yZSB0aGUKKwkJCQkgKiBkdXBsaWNhdGUgV0FMIGZpbGUuCisJCQkJ ICovCisJCQkJaWYgKGZvdW5kKQorCQkJCXsKKwkJCQkJcGdfbG9nX3dhcm5pbmcoImlnbm9yaW5n IGR1cGxpY2F0ZSBXQUwgZmlsZSBmb3VuZCBpbiBhcmNoaXZlOiBcIiVzXCIiLAorCQkJCQkJCQkg ICBtZW1iZXItPnBhdGhuYW1lKTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCisJCQkJZW50cnktPmJ1 ZiA9IG1ha2VTdHJpbmdJbmZvKCk7CisJCQkJcHJpdmF0ZUluZm8tPmN1cl9maWxlID0gZW50cnk7 CisJCQl9CisJCQlicmVhazsKKworCQljYXNlIEFTVFJFQU1FUl9NRU1CRVJfQ09OVEVOVFM6CisJ CQlpZiAocHJpdmF0ZUluZm8tPmN1cl9maWxlKQorCQkJeworCQkJCWFwcGVuZEJpbmFyeVN0cmlu Z0luZm8ocHJpdmF0ZUluZm8tPmN1cl9maWxlLT5idWYsIGRhdGEsIGxlbik7CisJCQkJcHJpdmF0 ZUluZm8tPmN1cl9maWxlLT50b3RhbF9yZWFkICs9IGxlbjsKKwkJCX0KKwkJCWJyZWFrOworCisJ CWNhc2UgQVNUUkVBTUVSX01FTUJFUl9UUkFJTEVSOgorCQkJcHJpdmF0ZUluZm8tPmN1cl9maWxl ID0gTlVMTDsKKwkJCWJyZWFrOworCisJCWNhc2UgQVNUUkVBTUVSX0FSQ0hJVkVfVFJBSUxFUjoK KwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQkvKiBTaG91bGRuJ3QgaGFwcGVuLiAqLworCQkJ cGdfZmF0YWwoInVuZXhwZWN0ZWQgc3RhdGUgd2hpbGUgcGFyc2luZyB0YXIgZmlsZSIpOworCX0K K30KKworLyoKKyAqIEVuZC1vZi1zdHJlYW0gcHJvY2Vzc2luZyBmb3IgYW4gYXN0cmVhbWVyX3dh bGR1bXAgc3RyZWFtLgorICovCitzdGF0aWMgdm9pZAorYXN0cmVhbWVyX3dhbGR1bXBfZmluYWxp emUoYXN0cmVhbWVyICpzdHJlYW1lcikKK3sKKwlBc3NlcnQoc3RyZWFtZXItPmJic19uZXh0ID09 IE5VTEwpOworfQorCisvKgorICogRnJlZSBtZW1vcnkgYXNzb2NpYXRlZCB3aXRoIGEgYXN0cmVh bWVyX3dhbGR1bXAgc3RyZWFtLgorICovCitzdGF0aWMgdm9pZAorYXN0cmVhbWVyX3dhbGR1bXBf ZnJlZShhc3RyZWFtZXIgKnN0cmVhbWVyKQoreworCUFzc2VydChzdHJlYW1lci0+YmJzX25leHQg PT0gTlVMTCk7CisJcGZyZWUoc3RyZWFtZXIpOworfQorCisvKgorICogUmV0dXJucyB0cnVlIGlm IHRoZSBhcmNoaXZlIG1lbWJlciBuYW1lIG1hdGNoZXMgdGhlIFdBTCBuYW1pbmcgZm9ybWF0LiBJ ZgorICogc3VjY2Vzc2Z1bCwgaXQgYWxzbyBvdXRwdXRzIHRoZSBXQUwgc2VnbWVudCBuYW1lLgor ICovCitzdGF0aWMgYm9vbAorbWVtYmVyX2lzX3dhbF9maWxlKGFzdHJlYW1lcl93YWxkdW1wICpt eXN0cmVhbWVyLCBhc3RyZWFtZXJfbWVtYmVyICptZW1iZXIsCisJCQkJICAgY2hhciAqKmZuYW1l KQoreworCWludAkJCXBhdGhsZW47CisJY2hhcgkgICAqZmlsZW5hbWU7CisKKwkvKiBXZSBhcmUg b25seSBpbnRlcmVzdGVkIGluIG5vcm1hbCBmaWxlcy4gKi8KKwlpZiAobWVtYmVyLT5pc19kaXJl Y3RvcnkgfHwgbWVtYmVyLT5pc19saW5rKQorCQlyZXR1cm4gZmFsc2U7CisKKwlwYXRobGVuID0g c3RybGVuKG1lbWJlci0+cGF0aG5hbWUpOworCWlmIChwYXRobGVuIDwgWExPR19GTkFNRV9MRU4p CisJCXJldHVybiBmYWxzZTsKKworCS8qIFdBTCBmaWxlcyBmcm9tIHRoZSB0b3AtbGV2ZWwgb3Ig cGdfd2FsIGRpcmVjdG9yeSB3aWxsIGJlIGRlY29kZWQgKi8KKwlpZiAocGF0aGxlbiA+IFhMT0df Rk5BTUVfTEVOICYmCisJCXN0cm5jbXAobWVtYmVyLT5wYXRobmFtZSwgWExPR0RJUiwgc3RybGVu KFhMT0dESVIpKSAhPSAwKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBXQUwgZmlsZSBjb3VsZCBi ZSB3aXRoIGZ1bGwgcGF0aCAqLworCWZpbGVuYW1lID0gbWVtYmVyLT5wYXRobmFtZSArIChwYXRo bGVuIC0gWExPR19GTkFNRV9MRU4pOworCWlmICghSXNYTG9nRmlsZU5hbWUoZmlsZW5hbWUpKQor CQlyZXR1cm4gZmFsc2U7CisKKwkqZm5hbWUgPSBwbnN0cmR1cChmaWxlbmFtZSwgWExPR19GTkFN RV9MRU4pOworCisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb24gZm9y IGZpbGVtYXAgaGFzaCB0YWJsZS4KKyAqLworc3RhdGljIHVpbnQzMgoraGFzaF9zdHJpbmdfcG9p bnRlcihjb25zdCBjaGFyICpzKQoreworCXVuc2lnbmVkIGNoYXIgKnNzID0gKHVuc2lnbmVkIGNo YXIgKikgczsKKworCXJldHVybiBoYXNoX2J5dGVzKHNzLCBzdHJsZW4ocykpOworfQpkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wL21lc29uLmJ1aWxkIGIvc3JjL2Jpbi9wZ193YWxkdW1w L21lc29uLmJ1aWxkCmluZGV4IDYzM2E5ODc0YmI1Li5hOTNiZDk0N2NhMiAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wZ193YWxkdW1wL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9t ZXNvbi5idWlsZApAQCAtMSw2ICsxLDcgQEAKICMgQ29weXJpZ2h0IChjKSAyMDIyLTIwMjYsIFBv c3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCiAKIHBnX3dhbGR1bXBfc291cmNlcyA9 IGZpbGVzKAorICAnYXJjaGl2ZV93YWxkdW1wLmMnLAogICAnY29tcGF0LmMnLAogICAncGdfd2Fs ZHVtcC5jJywKICAgJ3JtZ3JkZXNjLmMnLApAQCAtMTgsNyArMTksNyBAQCBlbmRpZgogCiBwZ193 YWxkdW1wID0gZXhlY3V0YWJsZSgncGdfd2FsZHVtcCcsCiAgIHBnX3dhbGR1bXBfc291cmNlcywK LSAgZGVwZW5kZW5jaWVzOiBbZnJvbnRlbmRfY29kZSwgbHo0LCB6c3RkXSwKKyAgZGVwZW5kZW5j aWVzOiBbZnJvbnRlbmRfY29kZSwgbHo0LCB6c3RkLCBsaWJwcV0sCiAgIGNfYXJnczogWyctREZS T05URU5EJ10sICMgbmVlZGVkIGZvciB4bG9ncmVhZGVyIGV0IGFsCiAgIGt3YXJnczogZGVmYXVs dF9iaW5fYXJncywKICkKQEAgLTI5LDYgKzMwLDcgQEAgdGVzdHMgKz0gewogICAnc2QnOiBtZXNv bi5jdXJyZW50X3NvdXJjZV9kaXIoKSwKICAgJ2JkJzogbWVzb24uY3VycmVudF9idWlsZF9kaXIo KSwKICAgJ3RhcCc6IHsKKyAgICAnZW52JzogeydUQVInOiB0YXIuZm91bmQoKSA/IHRhci5mdWxs X3BhdGgoKSA6ICcnfSwKICAgICAndGVzdHMnOiBbCiAgICAgICAndC8wMDFfYmFzaWMucGwnLAog ICAgICAgJ3QvMDAyX3NhdmVfZnVsbHBhZ2UucGwnLApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193 YWxkdW1wL3BnX3dhbGR1bXAuYyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKaW5k ZXggOTU4YTcxYTAxY2YuLjNjZDI3OWNhZGVkIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1 bXAvcGdfd2FsZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKQEAg LTE3Niw3ICsxNzYsNyBAQCBzcGxpdF9wYXRoKGNvbnN0IGNoYXIgKnBhdGgsIGNoYXIgKipkaXIs IGNoYXIgKipmbmFtZSkKICAqCiAgKiByZXR1cm4gYSByZWFkIG9ubHkgZmQKICAqLwotc3RhdGlj IGludAoraW50CiBvcGVuX2ZpbGVfaW5fZGlyZWN0b3J5KGNvbnN0IGNoYXIgKmRpcmVjdG9yeSwg Y29uc3QgY2hhciAqZm5hbWUpCiB7CiAJaW50CQkJZmQgPSAtMTsKQEAgLTQ0MCw2ICs0NDAsNjMg QEAgV0FMRHVtcFJlYWRQYWdlKFhMb2dSZWFkZXJTdGF0ZSAqc3RhdGUsIFhMb2dSZWNQdHIgdGFy Z2V0UGFnZVB0ciwgaW50IHJlcUxlbiwKIAlyZXR1cm4gY291bnQ7CiB9CiAKKy8qCisgKiBwZ193 YWxkdW1wJ3MgWExvZ1JlYWRlclJvdXRpbmUtPnNlZ21lbnRfb3BlbiBjYWxsYmFjayB0byBzdXBw b3J0IGR1bXBpbmcgV0FMCisgKiBmaWxlcyBmcm9tIHRhciBhcmNoaXZlcy4KKyAqLworc3RhdGlj IHZvaWQKK1RhcldBTER1bXBPcGVuU2VnbWVudChYTG9nUmVhZGVyU3RhdGUgKnN0YXRlLCBYTG9n U2VnTm8gbmV4dFNlZ05vLAorCQkJCQkgIFRpbWVMaW5lSUQgKnRsaV9wKQoreworCS8qIE5vIGFj dGlvbiBuZWVkZWQgKi8KK30KKworLyoKKyAqIHBnX3dhbGR1bXAncyBYTG9nUmVhZGVyUm91dGlu ZS0+c2VnbWVudF9jbG9zZSBjYWxsYmFjay4KKyAqLworc3RhdGljIHZvaWQKK1RhcldBTER1bXBD bG9zZVNlZ21lbnQoWExvZ1JlYWRlclN0YXRlICpzdGF0ZSkKK3sKKwkvKiBObyBhY3Rpb24gbmVl ZGVkICovCit9CisKKy8qCisgKiBwZ193YWxkdW1wJ3MgWExvZ1JlYWRlclJvdXRpbmUtPnBhZ2Vf cmVhZCBjYWxsYmFjayB0byBzdXBwb3J0IGR1bXBpbmcgV0FMCisgKiBmaWxlcyBmcm9tIHRhciBh cmNoaXZlcy4KKyAqLworc3RhdGljIGludAorVGFyV0FMRHVtcFJlYWRQYWdlKFhMb2dSZWFkZXJT dGF0ZSAqc3RhdGUsIFhMb2dSZWNQdHIgdGFyZ2V0UGFnZVB0ciwgaW50IHJlcUxlbiwKKwkJCQkg ICBYTG9nUmVjUHRyIHRhcmdldFB0ciwgY2hhciAqcmVhZEJ1ZmYpCit7CisJWExvZ0R1bXBQcml2 YXRlICpwcml2YXRlID0gc3RhdGUtPnByaXZhdGVfZGF0YTsKKwlpbnQJCQljb3VudCA9IHJlcXVp cmVkX3JlYWRfbGVuKHByaXZhdGUsIHRhcmdldFBhZ2VQdHIsIHJlcUxlbik7CisJaW50CQkJV2Fs U2VnU3ogPSBzdGF0ZS0+c2VnY3h0LndzX3NlZ3NpemU7CisJWExvZ1NlZ05vCW5leHRTZWdObzsK KworCS8qIEJhaWwgb3V0IGlmIHRoZSBjb3VudCB0byBiZSByZWFkIGlzIG5vdCB2YWxpZCAqLwor CWlmIChjb3VudCA8IDApCisJCXJldHVybiAtMTsKKworCS8qCisJICogSWYgdGhlIHRhcmdldCBw YWdlIGlzIGluIGEgZGlmZmVyZW50IHNlZ21lbnQsIGZyZWUgdGhlIGJ1ZmZlciBzcGFjZQorCSAq IG9jY3VwaWVkIGJ5IHRoZSBwcmV2aW91cyBzZWdtZW50IGRhdGEuIFNpbmNlIHBnX3dhbGR1bXAg bmV2ZXIgcmVxdWVzdHMKKwkgKiB0aGUgc2FtZSBXQUwgYnl0ZXMgdHdpY2UsIG1vdmluZyB0byBh IG5ldyBzZWdtZW50IGltcGxpZXMgdGhlIHByZXZpb3VzCisJICogYnVmZmVyJ3MgZGF0YSBhbmQg dGhhdCBzZWdtZW50IHdpbGwgbm90IGJlIG5lZWRlZCBhZ2Fpbi4KKwkgKi8KKwluZXh0U2VnTm8g PSBzdGF0ZS0+c2VnLndzX3NlZ25vOworCWlmICghWExCeXRlSW5TZWcodGFyZ2V0UGFnZVB0ciwg bmV4dFNlZ05vLCBXYWxTZWdTeikpCisJeworCQljaGFyCQlmbmFtZVtNQVhGTkFNRUxFTl07CisK KwkJWExvZ0ZpbGVOYW1lKGZuYW1lLCBzdGF0ZS0+c2VnLndzX3RsaSwgbmV4dFNlZ05vLCBXYWxT ZWdTeik7CisJCWZyZWVfYXJjaGl2ZV93YWxfZW50cnkoZm5hbWUsIHByaXZhdGUpOworCX0KKwor CS8qIFJlYWQgdGhlIFdBTCBwYWdlIGZyb20gdGhlIGFyY2hpdmUgc3RyZWFtZXIgKi8KKwlyZXR1 cm4gcmVhZF9hcmNoaXZlX3dhbF9wYWdlKHByaXZhdGUsIHRhcmdldFBhZ2VQdHIsIGNvdW50LCBy ZWFkQnVmZiwKKwkJCQkJCQkJIFdhbFNlZ1N6KTsKK30KKwogLyoKICAqIEJvb2xlYW4gdG8gcmV0 dXJuIHdoZXRoZXIgdGhlIGdpdmVuIFdBTCByZWNvcmQgbWF0Y2hlcyBhIHNwZWNpZmljIHJlbGF0 aW9uCiAgKiBhbmQgb3B0aW9uYWxseSBibG9jay4KQEAgLTc3Nyw4ICs4MzQsOCBAQCB1c2FnZSh2 b2lkKQogCXByaW50ZihfKCIgIC1GLCAtLWZvcms9Rk9SSyAgICAgICAgb25seSBzaG93IHJlY29y ZHMgdGhhdCBtb2RpZnkgYmxvY2tzIGluIGZvcmsgRk9SSztcbiIKIAkJCSAiICAgICAgICAgICAg ICAgICAgICAgICAgIHZhbGlkIG5hbWVzIGFyZSBtYWluLCBmc20sIHZtLCBpbml0XG4iKSk7CiAJ cHJpbnRmKF8oIiAgLW4sIC0tbGltaXQ9TiAgICAgICAgICBudW1iZXIgb2YgcmVjb3JkcyB0byBk aXNwbGF5XG4iKSk7Ci0JcHJpbnRmKF8oIiAgLXAsIC0tcGF0aD1QQVRIICAgICAgICBkaXJlY3Rv cnkgaW4gd2hpY2ggdG8gZmluZCBXQUwgc2VnbWVudCBmaWxlcyBvciBhXG4iCi0JCQkgIiAgICAg ICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcnkgd2l0aCBhIC4vcGdfd2FsIHRoYXQgY29udGFp bnMgc3VjaCBmaWxlc1xuIgorCXByaW50ZihfKCIgIC1wLCAtLXBhdGg9UEFUSCAgICAgICAgdGFy IGFyY2hpdmUgb3IgYSBkaXJlY3RvcnkgaW4gd2hpY2ggdG8gZmluZCBXQUwgc2VnbWVudCBmaWxl cyBvclxuIgorCQkJICIgICAgICAgICAgICAgICAgICAgICAgICAgYSBkaXJlY3Rvcnkgd2l0aCBh IC4vcGdfd2FsIHRoYXQgY29udGFpbnMgc3VjaCBmaWxlc1xuIgogCQkJICIgICAgICAgICAgICAg ICAgICAgICAgICAgKGRlZmF1bHQ6IGN1cnJlbnQgZGlyZWN0b3J5LCAuL3BnX3dhbCwgJFBHREFU QS9wZ193YWwpXG4iKSk7CiAJcHJpbnRmKF8oIiAgLXEsIC0tcXVpZXQgICAgICAgICAgICBkbyBu b3QgcHJpbnQgYW55IG91dHB1dCwgZXhjZXB0IGZvciBlcnJvcnNcbiIpKTsKIAlwcmludGYoXygi ICAtciwgLS1ybWdyPVJNR1IgICAgICAgIG9ubHkgc2hvdyByZWNvcmRzIGdlbmVyYXRlZCBieSBy ZXNvdXJjZSBtYW5hZ2VyIFJNR1I7XG4iCkBAIC04MTAsOCArODY3LDExIEBAIG1haW4oaW50IGFy Z2MsIGNoYXIgKiphcmd2KQogCVhMb2dSZWNvcmQgKnJlY29yZDsKIAlYTG9nUmVjUHRyCWZpcnN0 X3JlY29yZDsKIAljaGFyCSAgICp3YWxkaXIgPSBOVUxMOworCWNoYXIJICAgKndhbHBhdGggPSBO VUxMOwogCWNoYXIJICAgKmVycm9ybXNnOwogCWludAkJCVdhbFNlZ1N6OworCWJvb2wJCWlzX2Fy Y2hpdmUgPSBmYWxzZTsKKwlwZ19jb21wcmVzc19hbGdvcml0aG0gY29tcHJlc3Npb247CiAKIAlz dGF0aWMgc3RydWN0IG9wdGlvbiBsb25nX29wdGlvbnNbXSA9IHsKIAkJeyJia3AtZGV0YWlscyIs IG5vX2FyZ3VtZW50LCBOVUxMLCAnYid9LApAQCAtOTQzLDcgKzEwMDMsNyBAQCBtYWluKGludCBh cmdjLCBjaGFyICoqYXJndikKIAkJCQl9CiAJCQkJYnJlYWs7CiAJCQljYXNlICdwJzoKLQkJCQl3 YWxkaXIgPSBwZ19zdHJkdXAob3B0YXJnKTsKKwkJCQl3YWxwYXRoID0gcGdfc3RyZHVwKG9wdGFy Zyk7CiAJCQkJYnJlYWs7CiAJCQljYXNlICdxJzoKIAkJCQljb25maWcucXVpZXQgPSB0cnVlOwpA QCAtMTEwNywxMCArMTE2NywyMCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJZ290 byBiYWRfYXJndW1lbnQ7CiAJfQogCi0JaWYgKHdhbGRpciAhPSBOVUxMKQorCWlmICh3YWxwYXRo ICE9IE5VTEwpCiAJeworCQkvKiB2YWxpZGF0ZSBwYXRoIHBvaW50cyB0byB0YXIgYXJjaGl2ZSAq LworCQlpZiAoaXNfYXJjaGl2ZV9maWxlKHdhbHBhdGgsICZjb21wcmVzc2lvbikpCisJCXsKKwkJ CWNoYXIJICAgKmZuYW1lID0gTlVMTDsKKworCQkJc3BsaXRfcGF0aCh3YWxwYXRoLCAmd2FsZGly LCAmZm5hbWUpOworCisJCQlwcml2YXRlLmFyY2hpdmVfbmFtZSA9IGZuYW1lOworCQkJaXNfYXJj aGl2ZSA9IHRydWU7CisJCX0KIAkJLyogdmFsaWRhdGUgcGF0aCBwb2ludHMgdG8gZGlyZWN0b3J5 ICovCi0JCWlmICghdmVyaWZ5X2RpcmVjdG9yeSh3YWxkaXIpKQorCQllbHNlIGlmICghdmVyaWZ5 X2RpcmVjdG9yeSh3YWxwYXRoKSkKIAkJewogCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgb3Bl biBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIHdhbGRpcik7CiAJCQlnb3RvIGJhZF9hcmd1bWVudDsK QEAgLTExMjgsNiArMTE5OCwxNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJaW50 CQkJZmQ7CiAJCVhMb2dTZWdObwlzZWdubzsKIAorCQkvKgorCQkgKiBJZiBhIHRhciBhcmNoaXZl IGlzIHBhc3NlZCB1c2luZyB0aGUgLS1wYXRoIG9wdGlvbiwgYWxsIG90aGVyCisJCSAqIGFyZ3Vt ZW50cyBiZWNvbWUgdW5uZWNlc3NhcnkuCisJCSAqLworCQlpZiAoaXNfYXJjaGl2ZSkKKwkJewor CQkJcGdfbG9nX2Vycm9yKCJ1bm5lY2Vzc2FyeSBjb21tYW5kLWxpbmUgYXJndW1lbnRzIHNwZWNp ZmllZCB3aXRoIHRhciBhcmNoaXZlIChmaXJzdCBpcyBcIiVzXCIpIiwKKwkJCQkJCSBhcmd2W29w dGluZF0pOworCQkJZ290byBiYWRfYXJndW1lbnQ7CisJCX0KKwogCQlzcGxpdF9wYXRoKGFyZ3Zb b3B0aW5kXSwgJmRpcmVjdG9yeSwgJmZuYW1lKTsKIAogCQlpZiAod2FsZGlyID09IE5VTEwgJiYg ZGlyZWN0b3J5ICE9IE5VTEwpCkBAIC0xMTM4LDY5ICsxMjE5LDc3IEBAIG1haW4oaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQogCQkJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiBkaXJlY3RvcnkgXCIl c1wiOiAlbSIsIHdhbGRpcik7CiAJCX0KIAotCQl3YWxkaXIgPSBpZGVudGlmeV90YXJnZXRfZGly ZWN0b3J5KHdhbGRpciwgZm5hbWUsICZXYWxTZWdTeik7Ci0JCWZkID0gb3Blbl9maWxlX2luX2Rp cmVjdG9yeSh3YWxkaXIsIGZuYW1lKTsKLQkJaWYgKGZkIDwgMCkKLQkJCXBnX2ZhdGFsKCJjb3Vs ZCBub3Qgb3BlbiBmaWxlIFwiJXNcIiIsIGZuYW1lKTsKLQkJY2xvc2UoZmQpOwotCi0JCS8qIHBh cnNlIHBvc2l0aW9uIGZyb20gZmlsZSAqLwotCQlYTG9nRnJvbUZpbGVOYW1lKGZuYW1lLCAmcHJp dmF0ZS50aW1lbGluZSwgJnNlZ25vLCBXYWxTZWdTeik7Ci0KLQkJaWYgKCFYTG9nUmVjUHRySXNW YWxpZChwcml2YXRlLnN0YXJ0cHRyKSkKLQkJCVhMb2dTZWdOb09mZnNldFRvUmVjUHRyKHNlZ25v LCAwLCBXYWxTZWdTeiwgcHJpdmF0ZS5zdGFydHB0cik7Ci0JCWVsc2UgaWYgKCFYTEJ5dGVJblNl Zyhwcml2YXRlLnN0YXJ0cHRyLCBzZWdubywgV2FsU2VnU3opKQorCQlpZiAoZm5hbWUgIT0gTlVM TCAmJiBpc19hcmNoaXZlX2ZpbGUoZm5hbWUsICZjb21wcmVzc2lvbikpCiAJCXsKLQkJCXBnX2xv Z19lcnJvcigic3RhcnQgV0FMIGxvY2F0aW9uICVYLyUwOFggaXMgbm90IGluc2lkZSBmaWxlIFwi JXNcIiIsCi0JCQkJCQkgTFNOX0ZPUk1BVF9BUkdTKHByaXZhdGUuc3RhcnRwdHIpLAotCQkJCQkJ IGZuYW1lKTsKLQkJCWdvdG8gYmFkX2FyZ3VtZW50OworCQkJcHJpdmF0ZS5hcmNoaXZlX25hbWUg PSBmbmFtZTsKKwkJCWlzX2FyY2hpdmUgPSB0cnVlOwogCQl9Ci0KLQkJLyogbm8gc2Vjb25kIGZp bGUgc3BlY2lmaWVkLCBzZXQgZW5kIHBvc2l0aW9uICovCi0JCWlmICghKG9wdGluZCArIDEgPCBh cmdjKSAmJiAhWExvZ1JlY1B0cklzVmFsaWQocHJpdmF0ZS5lbmRwdHIpKQotCQkJWExvZ1NlZ05v T2Zmc2V0VG9SZWNQdHIoc2Vnbm8gKyAxLCAwLCBXYWxTZWdTeiwgcHJpdmF0ZS5lbmRwdHIpOwot Ci0JCS8qIHBhcnNlIEVORFNFRyBpZiBwYXNzZWQgKi8KLQkJaWYgKG9wdGluZCArIDEgPCBhcmdj KQorCQllbHNlCiAJCXsKLQkJCVhMb2dTZWdObwllbmRzZWdubzsKLQotCQkJLyogaWdub3JlIGRp cmVjdG9yeSwgYWxyZWFkeSBoYXZlIHRoYXQgKi8KLQkJCXNwbGl0X3BhdGgoYXJndltvcHRpbmQg KyAxXSwgJmRpcmVjdG9yeSwgJmZuYW1lKTsKLQorCQkJd2FsZGlyID0gaWRlbnRpZnlfdGFyZ2V0 X2RpcmVjdG9yeSh3YWxkaXIsIGZuYW1lLCAmV2FsU2VnU3opOwogCQkJZmQgPSBvcGVuX2ZpbGVf aW5fZGlyZWN0b3J5KHdhbGRpciwgZm5hbWUpOwogCQkJaWYgKGZkIDwgMCkKIAkJCQlwZ19mYXRh bCgiY291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCIiLCBmbmFtZSk7CiAJCQljbG9zZShmZCk7CiAK IAkJCS8qIHBhcnNlIHBvc2l0aW9uIGZyb20gZmlsZSAqLwotCQkJWExvZ0Zyb21GaWxlTmFtZShm bmFtZSwgJnByaXZhdGUudGltZWxpbmUsICZlbmRzZWdubywgV2FsU2VnU3opOworCQkJWExvZ0Zy b21GaWxlTmFtZShmbmFtZSwgJnByaXZhdGUudGltZWxpbmUsICZzZWdubywgV2FsU2VnU3opOwog Ci0JCQlpZiAoZW5kc2Vnbm8gPCBzZWdubykKLQkJCQlwZ19mYXRhbCgiRU5EU0VHICVzIGlzIGJl Zm9yZSBTVEFSVFNFRyAlcyIsCi0JCQkJCQkgYXJndltvcHRpbmQgKyAxXSwgYXJndltvcHRpbmRd KTsKKwkJCWlmICghWExvZ1JlY1B0cklzVmFsaWQocHJpdmF0ZS5zdGFydHB0cikpCisJCQkJWExv Z1NlZ05vT2Zmc2V0VG9SZWNQdHIoc2Vnbm8sIDAsIFdhbFNlZ1N6LCBwcml2YXRlLnN0YXJ0cHRy KTsKKwkJCWVsc2UgaWYgKCFYTEJ5dGVJblNlZyhwcml2YXRlLnN0YXJ0cHRyLCBzZWdubywgV2Fs U2VnU3opKQorCQkJeworCQkJCXBnX2xvZ19lcnJvcigic3RhcnQgV0FMIGxvY2F0aW9uICVYLyUw OFggaXMgbm90IGluc2lkZSBmaWxlIFwiJXNcIiIsCisJCQkJCQkJIExTTl9GT1JNQVRfQVJHUyhw cml2YXRlLnN0YXJ0cHRyKSwKKwkJCQkJCQkgZm5hbWUpOworCQkJCWdvdG8gYmFkX2FyZ3VtZW50 OworCQkJfQogCi0JCQlpZiAoIVhMb2dSZWNQdHJJc1ZhbGlkKHByaXZhdGUuZW5kcHRyKSkKLQkJ CQlYTG9nU2VnTm9PZmZzZXRUb1JlY1B0cihlbmRzZWdubyArIDEsIDAsIFdhbFNlZ1N6LAotCQkJ CQkJCQkJCXByaXZhdGUuZW5kcHRyKTsKKwkJCS8qIG5vIHNlY29uZCBmaWxlIHNwZWNpZmllZCwg c2V0IGVuZCBwb3NpdGlvbiAqLworCQkJaWYgKCEob3B0aW5kICsgMSA8IGFyZ2MpICYmICFYTG9n UmVjUHRySXNWYWxpZChwcml2YXRlLmVuZHB0cikpCisJCQkJWExvZ1NlZ05vT2Zmc2V0VG9SZWNQ dHIoc2Vnbm8gKyAxLCAwLCBXYWxTZWdTeiwgcHJpdmF0ZS5lbmRwdHIpOwogCi0JCQkvKiBzZXQg c2Vnbm8gdG8gZW5kc2Vnbm8gZm9yIGNoZWNrIG9mIC0tZW5kICovCi0JCQlzZWdubyA9IGVuZHNl Z25vOwotCQl9CisJCQkvKiBwYXJzZSBFTkRTRUcgaWYgcGFzc2VkICovCisJCQlpZiAob3B0aW5k ICsgMSA8IGFyZ2MpCisJCQl7CisJCQkJWExvZ1NlZ05vCWVuZHNlZ25vOwogCisJCQkJLyogaWdu b3JlIGRpcmVjdG9yeSwgYWxyZWFkeSBoYXZlIHRoYXQgKi8KKwkJCQlzcGxpdF9wYXRoKGFyZ3Zb b3B0aW5kICsgMV0sICZkaXJlY3RvcnksICZmbmFtZSk7CiAKLQkJaWYgKCFYTEJ5dGVJblNlZyhw cml2YXRlLmVuZHB0ciwgc2Vnbm8sIFdhbFNlZ1N6KSAmJgotCQkJcHJpdmF0ZS5lbmRwdHIgIT0g KHNlZ25vICsgMSkgKiBXYWxTZWdTeikKLQkJewotCQkJcGdfbG9nX2Vycm9yKCJlbmQgV0FMIGxv Y2F0aW9uICVYLyUwOFggaXMgbm90IGluc2lkZSBmaWxlIFwiJXNcIiIsCi0JCQkJCQkgTFNOX0ZP Uk1BVF9BUkdTKHByaXZhdGUuZW5kcHRyKSwKLQkJCQkJCSBhcmd2W2FyZ2MgLSAxXSk7Ci0JCQln b3RvIGJhZF9hcmd1bWVudDsKKwkJCQlmZCA9IG9wZW5fZmlsZV9pbl9kaXJlY3Rvcnkod2FsZGly LCBmbmFtZSk7CisJCQkJaWYgKGZkIDwgMCkKKwkJCQkJcGdfZmF0YWwoImNvdWxkIG5vdCBvcGVu IGZpbGUgXCIlc1wiIiwgZm5hbWUpOworCQkJCWNsb3NlKGZkKTsKKworCQkJCS8qIHBhcnNlIHBv c2l0aW9uIGZyb20gZmlsZSAqLworCQkJCVhMb2dGcm9tRmlsZU5hbWUoZm5hbWUsICZwcml2YXRl LnRpbWVsaW5lLCAmZW5kc2Vnbm8sIFdhbFNlZ1N6KTsKKworCQkJCWlmIChlbmRzZWdubyA8IHNl Z25vKQorCQkJCQlwZ19mYXRhbCgiRU5EU0VHICVzIGlzIGJlZm9yZSBTVEFSVFNFRyAlcyIsCisJ CQkJCQkJIGFyZ3Zbb3B0aW5kICsgMV0sIGFyZ3Zbb3B0aW5kXSk7CisKKwkJCQlpZiAoIVhMb2dS ZWNQdHJJc1ZhbGlkKHByaXZhdGUuZW5kcHRyKSkKKwkJCQkJWExvZ1NlZ05vT2Zmc2V0VG9SZWNQ dHIoZW5kc2Vnbm8gKyAxLCAwLCBXYWxTZWdTeiwKKwkJCQkJCQkJCQkJcHJpdmF0ZS5lbmRwdHIp OworCisJCQkJLyogc2V0IHNlZ25vIHRvIGVuZHNlZ25vIGZvciBjaGVjayBvZiAtLWVuZCAqLwor CQkJCXNlZ25vID0gZW5kc2Vnbm87CisJCQl9CisKKworCQkJaWYgKCFYTEJ5dGVJblNlZyhwcml2 YXRlLmVuZHB0ciwgc2Vnbm8sIFdhbFNlZ1N6KSAmJgorCQkJCXByaXZhdGUuZW5kcHRyICE9IChz ZWdubyArIDEpICogV2FsU2VnU3opCisJCQl7CisJCQkJcGdfbG9nX2Vycm9yKCJlbmQgV0FMIGxv Y2F0aW9uICVYLyUwOFggaXMgbm90IGluc2lkZSBmaWxlIFwiJXNcIiIsCisJCQkJCQkJIExTTl9G T1JNQVRfQVJHUyhwcml2YXRlLmVuZHB0ciksCisJCQkJCQkJIGFyZ3ZbYXJnYyAtIDFdKTsKKwkJ CQlnb3RvIGJhZF9hcmd1bWVudDsKKwkJCX0KIAkJfQogCX0KLQllbHNlCi0JCXdhbGRpciA9IGlk ZW50aWZ5X3RhcmdldF9kaXJlY3Rvcnkod2FsZGlyLCBOVUxMLCAmV2FsU2VnU3opOworCWVsc2Ug aWYgKCFpc19hcmNoaXZlKQorCQl3YWxkaXIgPSBpZGVudGlmeV90YXJnZXRfZGlyZWN0b3J5KHdh bHBhdGgsIE5VTEwsICZXYWxTZWdTeik7CiAKIAkvKiB3ZSBkb24ndCBrbm93IHdoYXQgdG8gcHJp bnQgKi8KIAlpZiAoIVhMb2dSZWNQdHJJc1ZhbGlkKHByaXZhdGUuc3RhcnRwdHIpKQpAQCAtMTIx MiwxMiArMTMwMSwzNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkvKiBkb25lIHdp dGggYXJndW1lbnQgcGFyc2luZywgZG8gdGhlIGFjdHVhbCB3b3JrICovCiAKIAkvKiB3ZSBoYXZl IGV2ZXJ5dGhpbmcgd2UgbmVlZCwgc3RhcnQgcmVhZGluZyAqLwotCXhsb2dyZWFkZXJfc3RhdGUg PQotCQlYTG9nUmVhZGVyQWxsb2NhdGUoV2FsU2VnU3osIHdhbGRpciwKLQkJCQkJCSAgIFhMX1JP VVRJTkUoLnBhZ2VfcmVhZCA9IFdBTER1bXBSZWFkUGFnZSwKLQkJCQkJCQkJCSAgLnNlZ21lbnRf b3BlbiA9IFdBTER1bXBPcGVuU2VnbWVudCwKLQkJCQkJCQkJCSAgLnNlZ21lbnRfY2xvc2UgPSBX QUxEdW1wQ2xvc2VTZWdtZW50KSwKLQkJCQkJCSAgICZwcml2YXRlKTsKKwlpZiAoaXNfYXJjaGl2 ZSkKKwl7CisJCS8qCisJCSAqIEEgTlVMTCBXQUwgZGlyZWN0b3J5IGluZGljYXRlcyB0aGF0IHRo ZSBhcmNoaXZlIGZpbGUgaXMgbG9jYXRlZCBpbgorCQkgKiB0aGUgY3VycmVudCB3b3JraW5nIGRp cmVjdG9yeSBvZiB0aGUgcGdfd2FsZHVtcCBleGVjdXRpb24KKwkJICovCisJCWlmICh3YWxkaXIg PT0gTlVMTCkKKwkJCXdhbGRpciA9IHBnX3N0cmR1cCgiLiIpOworCisJCS8qIFNldCB1cCBmb3Ig cmVhZGluZyB0YXIgZmlsZSAqLworCQlpbml0X2FyY2hpdmVfcmVhZGVyKCZwcml2YXRlLCB3YWxk aXIsICZXYWxTZWdTeiwgY29tcHJlc3Npb24pOworCisJCS8qIFJvdXRpbmUgdG8gZGVjb2RlIFdB TCBmaWxlcyBpbiB0YXIgYXJjaGl2ZSAqLworCQl4bG9ncmVhZGVyX3N0YXRlID0KKwkJCVhMb2dS ZWFkZXJBbGxvY2F0ZShXYWxTZWdTeiwgd2FsZGlyLAorCQkJCQkJCSAgIFhMX1JPVVRJTkUoLnBh Z2VfcmVhZCA9IFRhcldBTER1bXBSZWFkUGFnZSwKKwkJCQkJCQkJCQkgIC5zZWdtZW50X29wZW4g PSBUYXJXQUxEdW1wT3BlblNlZ21lbnQsCisJCQkJCQkJCQkJICAuc2VnbWVudF9jbG9zZSA9IFRh cldBTER1bXBDbG9zZVNlZ21lbnQpLAorCQkJCQkJCSAgICZwcml2YXRlKTsKKwl9CisJZWxzZQor CXsKKwkJLyogUm91dGluZSB0byBkZWNvZGUgV0FMIGZpbGVzICovCisJCXhsb2dyZWFkZXJfc3Rh dGUgPQorCQkJWExvZ1JlYWRlckFsbG9jYXRlKFdhbFNlZ1N6LCB3YWxkaXIsCisJCQkJCQkJICAg WExfUk9VVElORSgucGFnZV9yZWFkID0gV0FMRHVtcFJlYWRQYWdlLAorCQkJCQkJCQkJCSAgLnNl Z21lbnRfb3BlbiA9IFdBTER1bXBPcGVuU2VnbWVudCwKKwkJCQkJCQkJCQkgIC5zZWdtZW50X2Ns b3NlID0gV0FMRHVtcENsb3NlU2VnbWVudCksCisJCQkJCQkJICAgJnByaXZhdGUpOworCX0KKwog CWlmICgheGxvZ3JlYWRlcl9zdGF0ZSkKIAkJcGdfZmF0YWwoIm91dCBvZiBtZW1vcnkgd2hpbGUg YWxsb2NhdGluZyBhIFdBTCByZWFkaW5nIHByb2Nlc3NvciIpOwogCkBAIC0xMzI2LDYgKzE0NDAs OSBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAogCVhMb2dSZWFkZXJGcmVlKHhsb2dy ZWFkZXJfc3RhdGUpOwogCisJaWYgKGlzX2FyY2hpdmUpCisJCWZyZWVfYXJjaGl2ZV9yZWFkZXIo JnByaXZhdGUpOworCiAJcmV0dXJuIEVYSVRfU1VDQ0VTUzsKIAogYmFkX2FyZ3VtZW50OgpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuaCBiL3NyYy9iaW4vcGdfd2Fs ZHVtcC9wZ193YWxkdW1wLmgKaW5kZXggYjg4NTQzODU2ZTUuLmU5OGEyMDE1MmRhIDEwMDY0NAot LS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5oCisrKyBiL3NyYy9iaW4vcGdfd2Fs ZHVtcC9wZ193YWxkdW1wLmgKQEAgLTEyLDYgKzEyLDExIEBACiAjZGVmaW5lIFBHX1dBTERVTVBf SAogCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dkZWZzLmgiCisjaW5jbHVkZSAiZmVfdXRpbHMvYXN0 cmVhbWVyLmgiCisKKy8qIEZvcndhcmQgZGVjbGFyYXRpb24gKi8KK3N0cnVjdCBBcmNoaXZlZFdB TEZpbGU7CitzdHJ1Y3QgQXJjaGl2ZWRXQUxfaGFzaDsKIAogLyogQ29udGFpbnMgdGhlIG5lY2Vz c2FyeSBpbmZvcm1hdGlvbiB0byBkcml2ZSBXQUwgZGVjb2RpbmcgKi8KIHR5cGVkZWYgc3RydWN0 IFhMb2dEdW1wUHJpdmF0ZQpAQCAtMjAsNiArMjUsNDUgQEAgdHlwZWRlZiBzdHJ1Y3QgWExvZ0R1 bXBQcml2YXRlCiAJWExvZ1JlY1B0cglzdGFydHB0cjsKIAlYTG9nUmVjUHRyCWVuZHB0cjsKIAli b29sCQllbmRwdHJfcmVhY2hlZDsKKworCS8qIEZpZWxkcyByZXF1aXJlZCB0byByZWFkIFdBTCBm cm9tIGFyY2hpdmUgKi8KKwljaGFyCSAgICphcmNoaXZlX25hbWU7CS8qIFRhciBhcmNoaXZlIG5h bWUgKi8KKwlpbnQJCQlhcmNoaXZlX2ZkOwkJLyogRmlsZSBkZXNjcmlwdG9yIGZvciB0aGUgb3Bl biB0YXIgZmlsZSAqLworCisJYXN0cmVhbWVyICAqYXJjaGl2ZV9zdHJlYW1lcjsKKworCS8qIFdo YXQgdGhlIGFyY2hpdmUgc3RyZWFtZXIgaXMgY3VycmVudGx5IHJlYWRpbmcgKi8KKwlzdHJ1Y3Qg QXJjaGl2ZWRXQUxGaWxlICpjdXJfZmlsZTsKKworCS8qCisJICogSGFzaCB0YWJsZSBvZiBhbGwg V0FMIGZpbGVzIHRoYXQgdGhlIGFyY2hpdmUgc3RyZWFtIGhhcyByZWFkLCBpbmNsdWRpbmcKKwkg KiB0aGUgb25lIGN1cnJlbnRseSBpbiBwcm9ncmVzcy4KKwkgKi8KKwlzdHJ1Y3QgQXJjaGl2ZWRX QUxfaGFzaCAqYXJjaGl2ZV93YWxfaHRhYjsKKworCS8qCisJICogQWx0aG91Z2ggdGhlc2UgdmFs dWVzIGNhbiBiZSBlYXNpbHkgZGVyaXZlZCBmcm9tIHN0YXJ0cHRyIGFuZCBlbmRwdHIsCisJICog ZG9pbmcgc28gcmVwZWF0ZWRseSBmb3IgZWFjaCBhcmNoaXZlZCBtZW1iZXIgd291bGQgYmUgaW5l ZmZpY2llbnQsIGFzCisJICogaXQgd291bGQgaW52b2x2ZSByZWNhbGN1bGF0aW5nIGFuZCBmaWx0 ZXJpbmcgb3V0IGlycmVsZXZhbnQgV0FMCisJICogc2VnbWVudHMuCisJICovCisJWExvZ1NlZ05v CXN0YXJ0U2VnTm87CisJWExvZ1NlZ05vCWVuZFNlZ05vOwogfSBYTG9nRHVtcFByaXZhdGU7CiAK K2V4dGVybiBpbnQJb3Blbl9maWxlX2luX2RpcmVjdG9yeShjb25zdCBjaGFyICpkaXJlY3Rvcnks IGNvbnN0IGNoYXIgKmZuYW1lKTsKKworZXh0ZXJuIGJvb2wgaXNfYXJjaGl2ZV9maWxlKGNvbnN0 IGNoYXIgKmZuYW1lLAorCQkJCQkJCXBnX2NvbXByZXNzX2FsZ29yaXRobSAqY29tcHJlc3Npb24p OworZXh0ZXJuIHZvaWQgaW5pdF9hcmNoaXZlX3JlYWRlcihYTG9nRHVtcFByaXZhdGUgKnByaXZh dGVJbmZvLAorCQkJCQkJCQljb25zdCBjaGFyICp3YWxkaXIsIGludCAqV2FsU2VnU3osCisJCQkJ CQkJCXBnX2NvbXByZXNzX2FsZ29yaXRobSBjb21wcmVzc2lvbik7CitleHRlcm4gdm9pZCBmcmVl X2FyY2hpdmVfcmVhZGVyKFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8pOworZXh0ZXJuIGlu dAlyZWFkX2FyY2hpdmVfd2FsX3BhZ2UoWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbywKKwkJ CQkJCQkJICBYTG9nUmVjUHRyIHRhcmdldFBhZ2VQdHIsCisJCQkJCQkJCSAgU2l6ZSBjb3VudCwg Y2hhciAqcmVhZEJ1ZmYsCisJCQkJCQkJCSAgaW50IFdhbFNlZ1N6KTsKK2V4dGVybiB2b2lkIGZy ZWVfYXJjaGl2ZV93YWxfZW50cnkoY29uc3QgY2hhciAqZm5hbWUsCisJCQkJCQkJCSAgIFhMb2dE dW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8pOworCiAjZW5kaWYJCQkJCQkJLyogZW5kIG9mIFBHX1dB TERVTVBfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wL3QvMDAxX2Jhc2ljLnBs IGIvc3JjL2Jpbi9wZ193YWxkdW1wL3QvMDAxX2Jhc2ljLnBsCmluZGV4IDMyODhmYWRjZjQ4Li4x MzU2N2ZiZGJhMSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ193YWxkdW1wL3QvMDAxX2Jhc2ljLnBs CisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC90LzAwMV9iYXNpYy5wbApAQCAtMywxMCArMywxMyBA QAogCiB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwordXNlIEN3ZDsK IHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0 aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKK215ICR0YXIgPSAkRU5We1RBUn07CisKIHByb2dyYW1f aGVscF9vaygncGdfd2FsZHVtcCcpOwogcHJvZ3JhbV92ZXJzaW9uX29rKCdwZ193YWxkdW1wJyk7 CiBwcm9ncmFtX29wdGlvbnNfaGFuZGxpbmdfb2soJ3BnX3dhbGR1bXAnKTsKQEAgLTIzNSw3ICsy MzgsNyBAQCBjb21tYW5kX2xpa2UoCiBzdWIgdGVzdF9wZ193YWxkdW1wCiB7CiAJbG9jYWwgJFRl c3Q6OkJ1aWxkZXI6OkxldmVsID0gJFRlc3Q6OkJ1aWxkZXI6OkxldmVsICsgMTsKLQlteSBAb3B0 cyA9IEBfOworCW15ICgkcGF0aCwgQG9wdHMpID0gQF87CiAKIAlteSAoJHN0ZG91dCwgJHN0ZGVy cik7CiAKQEAgLTI0Myw2ICsyNDYsNyBAQCBzdWIgdGVzdF9wZ193YWxkdW1wCiAJCSdwZ193YWxk dW1wJywKIAkJJy0tc3RhcnQnID0+ICRzdGFydF9sc24sCiAJCSctLWVuZCcgPT4gJGVuZF9sc24s CisJCSctLXBhdGgnID0+ICRwYXRoLAogCQlAb3B0cwogCSAgXSwKIAkgICc+JyA9PiBcJHN0ZG91 dCwKQEAgLTI1NCwxMSArMjU4LDUwIEBAIHN1YiB0ZXN0X3BnX3dhbGR1bXAKIAlyZXR1cm4gQGxp bmVzOwogfQogCi1teSBAbGluZXM7CisjIENyZWF0ZSBhIHRhciBhcmNoaXZlLCBzb3J0aW5nIHRo ZSBmaWxlIG9yZGVyCitzdWIgZ2VuZXJhdGVfYXJjaGl2ZQoreworCW15ICgkYXJjaGl2ZSwgJGRp cmVjdG9yeSwgJGNvbXByZXNzaW9uX2ZsYWdzKSA9IEBfOworCisJbXkgQGZpbGVzOworCW9wZW5k aXIgbXkgJGRoLCAkZGlyZWN0b3J5IG9yIGRpZSAib3BlbmRpcjogJCEiOworCXdoaWxlIChteSAk ZW50cnkgPSByZWFkZGlyICRkaCkgeworCQkjIFNraXAgJy4nIGFuZCAnLi4nCisJCW5leHQgaWYg JGVudHJ5IGVxICcuJyB8fCAkZW50cnkgZXEgJy4uJzsKKwkJcHVzaCBAZmlsZXMsICRlbnRyeTsK Kwl9CisJY2xvc2VkaXIgJGRoOworCisJQGZpbGVzID0gc29ydCBAZmlsZXM7CisKKwkjIG1vdmUg aW50byB0aGUgV0FMIGRpcmVjdG9yeSBiZWZvcmUgYXJjaGl2aW5nIGZpbGVzCisJbXkgJGN3ZCA9 IGdldGN3ZDsKKwljaGRpcigkZGlyZWN0b3J5KSB8fCBkaWUgImNoZGlyOiAkISI7CisJY29tbWFu ZF9vayhbJHRhciwgJGNvbXByZXNzaW9uX2ZsYWdzLCAkYXJjaGl2ZSwgQGZpbGVzXSk7CisJY2hk aXIoJGN3ZCkgfHwgZGllICJjaGRpcjogJCEiOworfQorCitteSAkdG1wX2RpciA9IFBvc3RncmVT UUw6OlRlc3Q6OlV0aWxzOjp0ZW1wZGlyX3Nob3J0KCk7CiAKIG15IEBzY2VuYXJpb3MgPSAoCiAJ ewotCQkncGF0aCcgPT4gJG5vZGUtPmRhdGFfZGlyCisJCSdwYXRoJyA9PiAkbm9kZS0+ZGF0YV9k aXIsCisJCSdpc19hcmNoaXZlJyA9PiAwLAorCQknZW5hYmxlZCcgPT4gMQorCX0sCisJeworCQkn cGF0aCcgPT4gIiR0bXBfZGlyL3BnX3dhbC50YXIiLAorCQknY29tcHJlc3Npb25fbWV0aG9kJyA9 PiAnbm9uZScsCisJCSdjb21wcmVzc2lvbl9mbGFncycgPT4gJy1jZicsCisJCSdpc19hcmNoaXZl JyA9PiAxLAorCQknZW5hYmxlZCcgPT4gMQorCX0sCisJeworCQkncGF0aCcgPT4gIiR0bXBfZGly L3BnX3dhbC50YXIuZ3oiLAorCQknY29tcHJlc3Npb25fbWV0aG9kJyA9PiAnZ3ppcCcsCisJCSdj b21wcmVzc2lvbl9mbGFncycgPT4gJy1jemYnLAorCQknaXNfYXJjaGl2ZScgPT4gMSwKKwkJJ2Vu YWJsZWQnID0+IGNoZWNrX3BnX2NvbmZpZygiI2RlZmluZSBIQVZFX0xJQlogMSIpCiAJfSk7CiAK IGZvciBteSAkc2NlbmFyaW8gKEBzY2VuYXJpb3MpCkBAIC0yNjcsNiArMzEwLDE5IEBAIGZvciBt eSAkc2NlbmFyaW8gKEBzY2VuYXJpb3MpCiAKIAlTS0lQOgogCXsKKwkJc2tpcCAidGFyIGNvbW1h bmQgaXMgbm90IGF2YWlsYWJsZSIsIDMKKwkJICBpZiAhZGVmaW5lZCAkdGFyOworCQlza2lwICIk c2NlbmFyaW8tPnsnY29tcHJlc3Npb25fbWV0aG9kJ30gY29tcHJlc3Npb24gbm90IHN1cHBvcnRl ZCBieSB0aGlzIGJ1aWxkIiwgMworCQkgIGlmICEkc2NlbmFyaW8tPnsnZW5hYmxlZCd9ICYmICRz Y2VuYXJpby0+eydpc19hcmNoaXZlJ307CisKKwkJICAjIGNyZWF0ZSBwZ193YWwgYXJjaGl2ZQor CQkgIGlmICgkc2NlbmFyaW8tPnsnaXNfYXJjaGl2ZSd9KQorCQkgIHsKKwkJCSAgZ2VuZXJhdGVf YXJjaGl2ZSgkcGF0aCwKKwkJCQkgICRub2RlLT5kYXRhX2RpciAuICcvcGdfd2FsJywKKwkJCQkg ICRzY2VuYXJpby0+eydjb21wcmVzc2lvbl9mbGFncyd9KTsKKwkJICB9CisKIAkJY29tbWFuZF9m YWlsc19saWtlKAogCQkJWyAncGdfd2FsZHVtcCcsICctLXBhdGgnID0+ICRwYXRoIF0sCiAJCQlx ci9lcnJvcjogbm8gc3RhcnQgV0FMIGxvY2F0aW9uIGdpdmVuLywKQEAgLTI5OCwzOCArMzU0LDQy IEBAIGZvciBteSAkc2NlbmFyaW8gKEBzY2VuYXJpb3MpCiAJCQlxci9lcnJvcjogZXJyb3IgaW4g V0FMIHJlY29yZCBhdC8sCiAJCQknZXJyb3JzIGFyZSBzaG93biB3aXRoIC0tcXVpZXQnKTsKIAot CQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJy0tcGF0aCcgPT4gJHBhdGgpOworCQlteSBAbGlu ZXM7CisJCUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgkcGF0aCk7CiAJCWlzKGdyZXAoIS9ecm1n cjogXHcvLCBAbGluZXMpLCAwLCAnYWxsIG91dHB1dCBsaW5lcyBhcmUgcm1nciBsaW5lcycpOwog Ci0JCUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgnLS1wYXRoJyA9PiAkcGF0aCwgJy0tbGltaXQn ID0+IDYpOworCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJHBhdGgsICctLWxpbWl0JyA9PiA2 KTsKIAkJaXMoQGxpbmVzLCA2LCAnbGltaXQgb3B0aW9uIG9ic2VydmVkJyk7CiAKLQkJQGxpbmVz ID0gdGVzdF9wZ193YWxkdW1wKCctLXBhdGgnID0+ICRwYXRoLCAnLS1mdWxscGFnZScpOworCQlA bGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJHBhdGgsICctLWZ1bGxwYWdlJyk7CiAJCWlzKGdyZXAo IS9ecm1ncjouKlxiRlBXXGIvLCBAbGluZXMpLCAwLCAnYWxsIG91dHB1dCBsaW5lcyBhcmUgRlBX Jyk7CiAKLQkJQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCctLXBhdGgnID0+ICRwYXRoLCAnLS1z dGF0cycpOworCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJHBhdGgsICctLXN0YXRzJyk7CiAJ CWxpa2UoJGxpbmVzWzBdLCBxci9XQUwgc3RhdGlzdGljcy8sICJzdGF0aXN0aWNzIG9uIHN0ZG91 dCIpOwogCQlpcyhncmVwKC9ecm1ncjovLCBAbGluZXMpLCAwLCAnbm8gcm1nciBsaW5lcyBvdXRw dXQnKTsKIAotCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJy0tcGF0aCcgPT4gJHBhdGgsICct LXN0YXRzPXJlY29yZCcpOworCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJHBhdGgsICctLXN0 YXRzPXJlY29yZCcpOwogCQlsaWtlKCRsaW5lc1swXSwgcXIvV0FMIHN0YXRpc3RpY3MvLCAic3Rh dGlzdGljcyBvbiBzdGRvdXQiKTsKIAkJaXMoZ3JlcCgvXnJtZ3I6LywgQGxpbmVzKSwgMCwgJ25v IHJtZ3IgbGluZXMgb3V0cHV0Jyk7CiAKLQkJQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCctLXBh dGgnID0+ICRwYXRoLCAnLS1ybWdyJyA9PiAnQnRyZWUnKTsKKwkJQGxpbmVzID0gdGVzdF9wZ193 YWxkdW1wKCRwYXRoLCAnLS1ybWdyJyA9PiAnQnRyZWUnKTsKIAkJaXMoZ3JlcCghL15ybWdyOiBC dHJlZS8sIEBsaW5lcyksIDAsICdvbmx5IEJ0cmVlIGxpbmVzJyk7CiAKLQkJQGxpbmVzID0gdGVz dF9wZ193YWxkdW1wKCctLXBhdGgnID0+ICRwYXRoLCAnLS1mb3JrJyA9PiAnaW5pdCcpOworCQlA bGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJHBhdGgsICctLWZvcmsnID0+ICdpbml0Jyk7CiAJCWlz KGdyZXAoIS9mb3JrIGluaXQvLCBAbGluZXMpLCAwLCAnb25seSBpbml0IGZvcmsgbGluZXMnKTsK IAotCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJy0tcGF0aCcgPT4gJHBhdGgsCisJCUBsaW5l cyA9IHRlc3RfcGdfd2FsZHVtcCgkcGF0aCwKIAkJCSctLXJlbGF0aW9uJyA9PiAiJGRlZmF1bHRf dHNfb2lkLyRwb3N0Z3Jlc19kYl9vaWQvJHJlbF90MV9vaWQiKTsKIAkJaXMoZ3JlcCghL3JlbCAk ZGVmYXVsdF90c19vaWRcLyRwb3N0Z3Jlc19kYl9vaWRcLyRyZWxfdDFfb2lkLywgQGxpbmVzKSwK IAkJCTAsICdvbmx5IGxpbmVzIGZvciBzZWxlY3RlZCByZWxhdGlvbicpOwogCi0JCUBsaW5lcyA9 IHRlc3RfcGdfd2FsZHVtcCgnLS1wYXRoJyA9PiAkcGF0aCwKKwkJQGxpbmVzID0gdGVzdF9wZ193 YWxkdW1wKCRwYXRoLAogCQkJJy0tcmVsYXRpb24nID0+ICIkZGVmYXVsdF90c19vaWQvJHBvc3Rn cmVzX2RiX29pZC8kcmVsX2kxYV9vaWQiLAogCQkJJy0tYmxvY2snID0+IDEpOwogCQlpcyhncmVw KCEvXGJibGsgMVxiLywgQGxpbmVzKSwgMCwgJ29ubHkgbGluZXMgZm9yIHNlbGVjdGVkIGJsb2Nr Jyk7CisKKwkJIyBDbGVhbnVwLgorCQl1bmxpbmsgJHBhdGggaWYgJHNjZW5hcmlvLT57J2lzX2Fy Y2hpdmUnfTsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVm cy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggZGRiZTRjNjQ5 NzEuLmMzMjIwMDFlMDc2IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMu bGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMTQ0LDYgKzE0 NCw4IEBAIEFyY2hpdmVPcHRzCiBBcmNoaXZlU2h1dGRvd25DQgogQXJjaGl2ZVN0YXJ0dXBDQgog QXJjaGl2ZVN0cmVhbVN0YXRlCitBcmNoaXZlZFdBTEZpbGUKK0FyY2hpdmVkV0FMX2hhc2gKIEFy Y2hpdmVyT3V0cHV0CiBBcmNoaXZlclN0YWdlCiBBcnJheUFuYWx5emVFeHRyYURhdGEKQEAgLTM1 MDQsNiArMzUwNiw3IEBAIGFzdHJlYW1lcl9yZWNvdmVyeV9pbmplY3RvcgogYXN0cmVhbWVyX3Rh cl9hcmNoaXZlcgogYXN0cmVhbWVyX3Rhcl9wYXJzZXIKIGFzdHJlYW1lcl92ZXJpZnkKK2FzdHJl YW1lcl93YWxkdW1wCiBhc3RyZWFtZXJfenN0ZF9mcmFtZQogYXV0aF9wYXNzd29yZF9ob29rX3R5 cAogYXV0b3ZhY190YWJsZQotLSAKMi40Ny4xCgo= --000000000000abfa1406495d7654 Content-Type: application/octet-stream; name="v11-0006-pg_waldump-Remove-the-restriction-on-the-order-o.patch" Content-Disposition: attachment; filename="v11-0006-pg_waldump-Remove-the-restriction-on-the-order-o.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mkwjq5au5 RnJvbSAxYmFmNmVlMzY3ZDVlNzMyMjJhN2YzYmU3YWZkY2UwYjI3M2Q1ODZlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFR1 ZSwgMjcgSmFuIDIwMjYgMTU6Mzg6MzQgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxMSA2LzldIHBn X3dhbGR1bXA6IFJlbW92ZSB0aGUgcmVzdHJpY3Rpb24gb24gdGhlIG9yZGVyIG9mCiBhcmNoaXZl ZCBXQUwgZmlsZXMuCgpXaXRoIHByZXZpb3VzIHBhdGNoLCBwZ193YWxkdW1wIHdvdWxkIHN0b3Ag ZGVjb2RpbmcgaWYgV0FMIGZpbGVzIHdlcmUKbm90IGluIHRoZSByZXF1aXJlZCBzZXF1ZW5jZS4g V2l0aCB0aGlzIHBhdGNoLCBkZWNvZGluZyB3aWxsIG5vdwpjb250aW51ZS4gIEFueSBXQUwgZmls ZSB0aGF0IGlzIG91dCBvZiBvcmRlciB3aWxsIGJlIHdyaXR0ZW4gdG8gYQp0ZW1wb3JhcnkgbG9j YXRpb24sIGZyb20gd2hpY2ggaXQgd2lsbCBiZSByZWFkIGxhdGVyLiBPbmNlIGEgdGVtcG9yYXJ5 CmZpbGUgaGFzIGJlZW4gcmVhZCwgaXQgd2lsbCBiZSByZW1vdmVkLgotLS0KIGRvYy9zcmMvc2dt bC9yZWYvcGdfd2FsZHVtcC5zZ21sICAgICB8ICAgOCArLQogc3JjL2Jpbi9wZ193YWxkdW1wL2Fy Y2hpdmVfd2FsZHVtcC5jIHwgMTczICsrKysrKysrKysrKysrKysrKysrKysrKy0tLQogc3JjL2Jp bi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYyAgICAgIHwgIDM1ICsrKysrLQogc3JjL2Jpbi9wZ193 YWxkdW1wL3BnX3dhbGR1bXAuaCAgICAgIHwgICAzICsKIHNyYy9iaW4vcGdfd2FsZHVtcC90LzAw MV9iYXNpYy5wbCAgICB8ICAgMyArLQogNSBmaWxlcyBjaGFuZ2VkLCAyMDAgaW5zZXJ0aW9ucygr KSwgMjIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9wZ193YWxk dW1wLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3BnX3dhbGR1bXAuc2dtbAppbmRleCBkMDA0YmIw ZjY3ZS4uMjdhZGY3Nzc1NWMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfd2FsZHVt cC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfd2FsZHVtcC5zZ21sCkBAIC0xNDksOCAr MTQ5LDEyIEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogICAgICAgICBvZiA8ZW52YXI+UEdE QVRBPC9lbnZhcj4uCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgotICAgICAgICBJZiBh IHRhciBhcmNoaXZlIGlzIHByb3ZpZGVkLCBpdHMgV0FMIHNlZ21lbnQgZmlsZXMgbXVzdCBiZSBp bgotICAgICAgICBzZXF1ZW50aWFsIG9yZGVyOyBvdGhlcndpc2UsIGFuIGVycm9yIHdpbGwgYmUg cmVwb3J0ZWQuCisgICAgICAgIElmIGEgdGFyIGFyY2hpdmUgaXMgcHJvdmlkZWQgYW5kIGl0cyBX QUwgc2VnbWVudCBmaWxlcyBhcmUgbm90IGluCisgICAgICAgIHNlcXVlbnRpYWwgb3JkZXIsIHRo b3NlIGZpbGVzIHdpbGwgYmUgd3JpdHRlbiB0byBhIHRlbXBvcmFyeSBkaXJlY3RvcnkKKyAgICAg ICAgbmFtZWQgc3RhcnRpbmcgd2l0aCA8ZmlsZW5hbWU+d2FsZHVtcF90bXA8L2ZpbGVuYW1lPi4g VGhpcyBkaXJlY3Rvcnkgd2lsbCBiZQorICAgICAgICBjcmVhdGVkIGluc2lkZSB0aGUgZGlyZWN0 b3J5IHNwZWNpZmllZCBieSB0aGUgPGVudmFyPlRNUERJUjwvZW52YXI+CisgICAgICAgIGVudmly b25tZW50IHZhcmlhYmxlIGlmIGl0IGlzIHNldDsgb3RoZXJ3aXNlLCBpdCB3aWxsIGJlIGNyZWF0 ZWQgd2l0aGluCisgICAgICAgIHRoZSBzYW1lIGRpcmVjdG9yeSBhcyB0aGUgdGFyIGFyY2hpdmUu CiAgICAgICAgPC9wYXJhPgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+ CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3dhbGR1bXAvYXJjaGl2ZV93YWxkdW1wLmMgYi9zcmMv YmluL3BnX3dhbGR1bXAvYXJjaGl2ZV93YWxkdW1wLmMKaW5kZXggMGI4MzUyZmY2ZTguLmI1MjRm ZGFkMzdmIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvYXJjaGl2ZV93YWxkdW1wLmMK KysrIGIvc3JjL2Jpbi9wZ193YWxkdW1wL2FyY2hpdmVfd2FsZHVtcC5jCkBAIC0xNyw2ICsxNyw3 IEBACiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ19pbnRlcm5h bC5oIgorI2luY2x1ZGUgImNvbW1vbi9maWxlX3Blcm0uaCIKICNpbmNsdWRlICJjb21tb24vaGFz aGZuLmgiCiAjaW5jbHVkZSAiY29tbW9uL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJmZV91dGlscy9z aW1wbGVfbGlzdC5oIgpAQCAtMjcsNiArMjgsOSBAQAogICovCiAjZGVmaW5lIFJFQURfQ0hVTktf U0laRQkJCQkoMTI4ICogMTAyNCkKIAorLyogVGVtcG9yYXJ5IGV4cG9ydGVkIFdBTCBmaWxlIGRp cmVjdG9yeSAqLworY2hhcgkgICAqVG1wV2FsU2VnRGlyID0gTlVMTDsKKwogLyoKICAqIEhhc2gg ZW50cnkgcmVwcmVzZW50aW5nIGEgV0FMIHNlZ21lbnQgcmV0cmlldmVkIGZyb20gdGhlIGFyY2hp dmUuCiAgKgpAQCAtNTEsNiArNTUsNyBAQCB0eXBlZGVmIHN0cnVjdCBBcmNoaXZlZFdBTEZpbGUK IAljb25zdCBjaGFyICpmbmFtZTsJCQkvKiBoYXNoIGtleTogV0FMIHNlZ21lbnQgbmFtZSAqLwog CiAJU3RyaW5nSW5mbwlidWY7CisJYm9vbAkJdG1wZmlsZV9leGlzdHM7IC8qIHNwaWxsIGZpbGUg ZXhpc3RzPyAqLwogCiAJaW50CQkJdG90YWxfcmVhZDsJCS8qIHRvdGFsIHNpemUgb2YgYSBXQUwg cmVhZCBmcm9tIGFyY2hpdmUgKi8KIH0gQXJjaGl2ZWRXQUxGaWxlOwpAQCAtNzgsNiArODMsMTEg QEAgc3RhdGljIEFyY2hpdmVkV0FMRmlsZSAqZ2V0X2FyY2hpdmVfd2FsX2VudHJ5KGNvbnN0IGNo YXIgKmZuYW1lLAogCQkJCQkJCQkJCQkgIFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8sCiAJ CQkJCQkJCQkJCSAgaW50IFdhbFNlZ1N6KTsKIHN0YXRpYyBpbnQJcmVhZF9hcmNoaXZlX2ZpbGUo WExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbywgU2l6ZSBjb3VudCk7CitzdGF0aWMgdm9pZCBz ZXR1cF90bXB3YWxfZGlyKGNvbnN0IGNoYXIgKndhbGRpcik7CitzdGF0aWMgdm9pZCBjbGVhbnVw X3RtcHdhbF9kaXJfYXRleGl0KHZvaWQpOworCitzdGF0aWMgRklMRSAqcHJlcGFyZV90bXBfd3Jp dGUoY29uc3QgY2hhciAqZm5hbWUpOworc3RhdGljIHZvaWQgcGVyZm9ybV90bXBfd3JpdGUoY29u c3QgY2hhciAqZm5hbWUsIFN0cmluZ0luZm8gYnVmLCBGSUxFICpmaWxlKTsKIAogc3RhdGljIGFz dHJlYW1lciAqYXN0cmVhbWVyX3dhbGR1bXBfbmV3KFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUlu Zm8pOwogc3RhdGljIHZvaWQgYXN0cmVhbWVyX3dhbGR1bXBfY29udGVudChhc3RyZWFtZXIgKnN0 cmVhbWVyLApAQCAtMTM0LDcgKzE0NCw5IEBAIGlzX2FyY2hpdmVfZmlsZShjb25zdCBjaGFyICpm bmFtZSwgcGdfY29tcHJlc3NfYWxnb3JpdGhtICpjb21wcmVzc2lvbikKIC8qCiAgKiBJbml0aWFs aXplcyB0aGUgdGFyIGFyY2hpdmUgcmVhZGVyLCBjcmVhdGVzIGEgaGFzaCB0YWJsZSBmb3IgV0FM IGVudHJpZXMsCiAgKiBjaGVja3MgZm9yIGV4aXN0aW5nIHZhbGlkIFdBTCBzZWdtZW50cyBpbiB0 aGUgYXJjaGl2ZSBmaWxlIGFuZCByZXRyaWV2ZXMgdGhlCi0gKiBzZWdtZW50IHNpemUsIGFuZCBz ZXRzIHVwIGZpbHRlcnMgZm9yIHJlbGV2YW50IGVudHJpZXMuCisgKiBzZWdtZW50IHNpemUsIGFu ZCBzZXRzIHVwIGZpbHRlcnMgZm9yIHJlbGV2YW50IGVudHJpZXMuIEl0IGFsc28gY29uZmlndXJl cyBhCisgKiB0ZW1wb3JhcnkgZGlyZWN0b3J5IGZvciBvdXQtb2Ytb3JkZXIgV0FMIGRhdGEgYW5k IHJlZ2lzdGVycyBhbiBleGl0IGNhbGxiYWNrCisgKiB0byBjbGVhbiB1cCB0ZW1wb3JhcnkgZmls ZXMuCiAgKi8KIHZvaWQKIGluaXRfYXJjaGl2ZV9yZWFkZXIoWExvZ0R1bXBQcml2YXRlICpwcml2 YXRlSW5mbywgY29uc3QgY2hhciAqd2FsZGlyLApAQCAtMjEwLDYgKzIyMiwxMyBAQCBpbml0X2Fy Y2hpdmVfcmVhZGVyKFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8sIGNvbnN0IGNoYXIgKndh bGRpciwKIAkJcHJpdmF0ZUluZm8tPmVuZFNlZ05vID0gVUlOVDY0X01BWDsKIAllbHNlCiAJCVhM Qnl0ZVRvU2VnKHByaXZhdGVJbmZvLT5lbmRwdHIsIHByaXZhdGVJbmZvLT5lbmRTZWdObywgKldh bFNlZ1N6KTsKKworCS8qCisJICogU2V0dXAgdGVtcG9yYXJ5IGRpcmVjdG9yeSB0byBzdG9yZSBX QUwgc2VnbWVudHMgYW5kIHNldCB1cCBhbiBleGl0CisJICogY2FsbGJhY2sgdG8gcmVtb3ZlIGl0 IHVwb24gY29tcGxldGlvbi4KKwkgKi8KKwlzZXR1cF90bXB3YWxfZGlyKHdhbGRpcik7CisJYXRl eGl0KGNsZWFudXBfdG1wd2FsX2Rpcl9hdGV4aXQpOwogfQogCiAvKgpAQCAtMzU4LDYgKzM3Nywx NyBAQCBmcmVlX2FyY2hpdmVfd2FsX2VudHJ5KGNvbnN0IGNoYXIgKmZuYW1lLCBYTG9nRHVtcFBy aXZhdGUgKnByaXZhdGVJbmZvKQogCWRlc3Ryb3lTdHJpbmdJbmZvKGVudHJ5LT5idWYpOwogCWVu dHJ5LT5idWYgPSBOVUxMOwogCisJLyogUmVtb3ZlIHRlbXBvcmFyeSBmaWxlIGlmIGFueSAqLwor CWlmIChlbnRyeS0+dG1wZmlsZV9leGlzdHMpCisJeworCQljaGFyCQlmcGF0aFtNQVhQR1BBVEhd OworCisJCXNucHJpbnRmKGZwYXRoLCBNQVhQR1BBVEgsICIlcy8lcyIsIFRtcFdhbFNlZ0Rpciwg Zm5hbWUpOworCisJCWlmICh1bmxpbmsoZnBhdGgpID09IDApCisJCQlwZ19sb2dfZGVidWcoInJl bW92ZWQgZmlsZSBcIiVzXCIiLCBmcGF0aCk7CisJfQorCiAJLyogU2V0IGN1cl9maWxlIHRvIE5V TEwgaWYgaXQgbWF0Y2hlcyB0aGUgZW50cnkgYmVpbmcgaWdub3JlZCAqLwogCWlmIChwcml2YXRl SW5mby0+Y3VyX2ZpbGUgPT0gZW50cnkpCiAJCXByaXZhdGVJbmZvLT5jdXJfZmlsZSA9IE5VTEw7 CkBAIC0zNjksNiArMzk5LDkgQEAgZnJlZV9hcmNoaXZlX3dhbF9lbnRyeShjb25zdCBjaGFyICpm bmFtZSwgWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbykKICAqIFJldHVybnMgdGhlIGFyY2hp dmVkIFdBTCBlbnRyeSBmcm9tIHRoZSBoYXNoIHRhYmxlIGlmIGl0IGV4aXN0cy4gIE90aGVyd2lz ZSwKICAqIGl0IGludm9rZXMgdGhlIHJvdXRpbmUgdG8gcmVhZCB0aGUgYXJjaGl2ZWQgZmlsZSwg d2hpY2ggdGhlbiBwb3B1bGF0ZXMgdGhlCiAgKiBlbnRyeSBpbiB0aGUgaGFzaCB0YWJsZSBpZiB0 aGF0IFdBTCBleGlzdHMgaW4gdGhlIGFyY2hpdmUuCisgKiBJZiB0aGUgYXJjaGl2ZSBzdHJlYW1l ciBoYXBwZW5zIHRvIGJlIHJlYWRpbmcgYQorICogV0FMIGZyb20gYXJjaGl2ZSBmaWxlIHRoYXQg aXMgbm90IGN1cnJlbnRseSBuZWVkZWQsIHRoYXQgV0FMIGRhdGEgaXMgd3JpdHRlbgorICogdG8g YSB0ZW1wb3JhcnkgZmlsZS4KICAqLwogc3RhdGljIEFyY2hpdmVkV0FMRmlsZSAqCiBnZXRfYXJj aGl2ZV93YWxfZW50cnkoY29uc3QgY2hhciAqZm5hbWUsIFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0 ZUluZm8sCkBAIC0zNzcsNiArNDEwLDcgQEAgZ2V0X2FyY2hpdmVfd2FsX2VudHJ5KGNvbnN0IGNo YXIgKmZuYW1lLCBYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvLAogCUFyY2hpdmVkV0FMRmls ZSAqZW50cnkgPSBOVUxMOwogCVhMb2dTZWdObwlzZWdubzsKIAlUaW1lTGluZUlECXRpbWVsaW5l OworCUZJTEUJICAgKndyaXRlX2ZwID0gTlVMTDsKIAogCS8qIFNlYXJjaCBoYXNoIHRhYmxlICov CiAJZW50cnkgPSBBcmNoaXZlZFdBTF9sb29rdXAocHJpdmF0ZUluZm8tPmFyY2hpdmVfd2FsX2h0 YWIsIGZuYW1lKTsKQEAgLTM5MywxOSArNDI3LDI5IEBAIGdldF9hcmNoaXZlX3dhbF9lbnRyeShj b25zdCBjaGFyICpmbmFtZSwgWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbywKIAkJWExvZ1Nl Z05vCWN1clNlZ05vOwogCQlUaW1lTGluZUlECWN1clNlZ1RpbWVsaW5lOwogCisJCS8qCisJCSAq IFRoZSBXQUwgZmlsZSBlbnRyeSBjdXJyZW50bHkgYmVpbmcgcHJvY2Vzc2VkIG1heSBjaGFuZ2Ug ZHVyaW5nCisJCSAqIGFyY2hpdmUgc3RyZWFtZXIgZXhlY3V0aW9uLiBUaGVyZWZvcmUsIG1haW50 YWluIGEgbG9jYWwgdmFyaWFibGUgdG8KKwkJICogcmVmZXJlbmNlIHRoZSBwcmV2aW91cyBlbnRy eSwgZW5zdXJpbmcgdGhhdCBhbnkgcmVtYWluaW5nIGRhdGEgaW4KKwkJICogaXRzIGJ1ZmZlciBp cyBzdWNjZXNzZnVsbHkgZmx1c2hlZCB0byB0aGUgdGVtcG9yYXJ5IGZpbGUgYmVmb3JlCisJCSAq IHN3aXRjaGluZyB0byB0aGUgbmV4dCBXQUwgZW50cnkuCisJCSAqLworCQllbnRyeSA9IHByaXZh dGVJbmZvLT5jdXJfZmlsZTsKKwogCQkvKiBGZXRjaCBtb3JlIGRhdGEgKi8KLQkJaWYgKHJlYWRf YXJjaGl2ZV9maWxlKHByaXZhdGVJbmZvLCBSRUFEX0NIVU5LX1NJWkUpID09IDApCi0JCQlicmVh azsJCQkJLyogYXJjaGl2ZSBmaWxlIGVuZGVkICovCisJCWlmIChlbnRyeSA9PSBOVUxMIHx8IGVu dHJ5LT5idWYtPmxlbiA9PSAwKQorCQl7CisJCQlpZiAocmVhZF9hcmNoaXZlX2ZpbGUocHJpdmF0 ZUluZm8sIFJFQURfQ0hVTktfU0laRSkgPT0gMCkKKwkJCQlicmVhazsJCQkvKiBhcmNoaXZlIGZp bGUgZW5kZWQgKi8KKwkJfQogCiAJCS8qCiAJCSAqIEVpdGhlciwgaGVyZSBmb3IgdGhlIGZpcnN0 IHRpbWUsIG9yIHRoZSBhcmNoaXZlZCBzdHJlYW1lciBpcwogCQkgKiByZWFkaW5nIGEgbm9uLVdB TCBmaWxlIG9yIGFuIGlycmVsZXZhbnQgV0FMIGZpbGUuCiAJCSAqLwotCQlpZiAocHJpdmF0ZUlu Zm8tPmN1cl9maWxlID09IE5VTEwpCisJCWlmIChlbnRyeSA9PSBOVUxMKQogCQkJY29udGludWU7 CiAKLQkJZW50cnkgPSBwcml2YXRlSW5mby0+Y3VyX2ZpbGU7Ci0KIAkJLyoKIAkJICogSWdub3Jl IGlmIHRoZSB0aW1lbGluZSBpcyBkaWZmZXJlbnQgb3IgdGhlIGN1cnJlbnQgc2VnbWVudCBpcyBu b3QKIAkJICogdGhlIGRlc2lyZWQgb25lLgpAQCAtNDEzLDggKzQ1Nyw3IEBAIGdldF9hcmNoaXZl X3dhbF9lbnRyeShjb25zdCBjaGFyICpmbmFtZSwgWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5m bywKIAkJWExvZ0Zyb21GaWxlTmFtZShlbnRyeS0+Zm5hbWUsICZjdXJTZWdUaW1lbGluZSwgJmN1 clNlZ05vLCBXYWxTZWdTeik7CiAJCWlmIChwcml2YXRlSW5mby0+dGltZWxpbmUgIT0gY3VyU2Vn VGltZWxpbmUgfHwKIAkJCXByaXZhdGVJbmZvLT5zdGFydFNlZ05vID4gY3VyU2VnTm8gfHwKLQkJ CXByaXZhdGVJbmZvLT5lbmRTZWdObyA8IGN1clNlZ05vIHx8Ci0JCQlzZWdubyA+IGN1clNlZ05v KQorCQkJcHJpdmF0ZUluZm8tPmVuZFNlZ05vIDwgY3VyU2VnTm8pCiAJCXsKIAkJCWZyZWVfYXJj aGl2ZV93YWxfZW50cnkoZW50cnktPmZuYW1lLCBwcml2YXRlSW5mbyk7CiAJCQljb250aW51ZTsK QEAgLTQyNCwxMSArNDY3LDMyIEBAIGdldF9hcmNoaXZlX3dhbF9lbnRyeShjb25zdCBjaGFyICpm bmFtZSwgWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbywKIAkJaWYgKGN1clNlZ05vID09IHNl Z25vKQogCQkJcmV0dXJuIGVudHJ5OwogCi0JCS8qIFdBTCBzZWdtZW50cyBtdXN0IGJlIGFyY2hp dmVkIGluIG9yZGVyICovCi0JCXBnX2xvZ19lcnJvcigiV0FMIGZpbGVzIGFyZSBub3QgYXJjaGl2 ZWQgaW4gc2VxdWVudGlhbCBvcmRlciIpOwotCQlwZ19sb2dfZXJyb3JfZGV0YWlsKCJFeHBlY3Rp bmcgc2VnbWVudCBudW1iZXIgIiBVSU5UNjRfRk9STUFUICIgYnV0IGZvdW5kICIgVUlOVDY0X0ZP Uk1BVCAiLiIsCi0JCQkJCQkJc2Vnbm8sIGN1clNlZ05vKTsKLQkJZXhpdCgxKTsKKwkJLyoKKwkJ ICogQXJjaGl2ZSBzdHJlYW1lciBpcyBjdXJyZW50bHkgcmVhZGluZyBhIGZpbGUgdGhhdCBpc24n dCB0aGUgb25lCisJCSAqIGFza2VkIGZvciwgYnV0IGl0J3MgcmVxdWlyZWQgaW4gdGhlIGZ1dHVy ZS4gSXQgc2hvdWxkIGJlIHdyaXR0ZW4gdG8KKwkJICogYSB0ZW1wb3JhcnkgbG9jYXRpb24gZm9y IHJldHJpZXZhbCB3aGVuIG5lZWRlZC4KKwkJICovCisKKwkJLyogQ3JlYXRlIGEgdGVtcG9yYXJ5 IGZpbGUgaWYgb25lIGRvZXMgbm90IGFscmVhZHkgZXhpc3QgKi8KKwkJaWYgKCFlbnRyeS0+dG1w ZmlsZV9leGlzdHMpCisJCXsKKwkJCXdyaXRlX2ZwID0gcHJlcGFyZV90bXBfd3JpdGUoZW50cnkt PmZuYW1lKTsKKwkJCWVudHJ5LT50bXBmaWxlX2V4aXN0cyA9IHRydWU7CisJCX0KKworCQkvKiBG bHVzaCBkYXRhIGZyb20gdGhlIGJ1ZmZlciB0byB0aGUgZmlsZSAqLworCQlwZXJmb3JtX3RtcF93 cml0ZShlbnRyeS0+Zm5hbWUsIGVudHJ5LT5idWYsIHdyaXRlX2ZwKTsKKwkJcmVzZXRTdHJpbmdJ bmZvKGVudHJ5LT5idWYpOworCisJCS8qCisJCSAqIFRoZSBjaGFuZ2UgaW4gdGhlIGN1cnJlbnQg c2VnbWVudCBlbnRyeSBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVhZGluZworCQkgKiBvZiB0aGlzIGZp bGUgaGFzIGVuZGVkLgorCQkgKi8KKwkJaWYgKGVudHJ5ICE9IHByaXZhdGVJbmZvLT5jdXJfZmls ZSAmJiB3cml0ZV9mcCAhPSBOVUxMKQorCQl7CisJCQlmY2xvc2Uod3JpdGVfZnApOworCQkJd3Jp dGVfZnAgPSBOVUxMOworCQl9CiAJfQogCiAJLyogUmVxdWVzdGVkIFdBTCBzZWdtZW50IG5vdCBm b3VuZCAqLwpAQCAtNDY1LDcgKzUyOSw4OCBAQCByZWFkX2FyY2hpdmVfZmlsZShYTG9nRHVtcFBy aXZhdGUgKnByaXZhdGVJbmZvLCBTaXplIGNvdW50KQogfQogCiAvKgotICogQ3JlYXRlIGFuIGFz dHJlYW1lciB0aGF0IGNhbiByZWFkIFdBTCBmcm9tIGEgdGFyIGZpbGUuCisgKiBTZXQgdXAgYSB0 ZW1wb3JhcnkgZGlyZWN0b3J5IHRvIHRlbXBvcmFyaWx5IHN0b3JlIFdBTCBzZWdtZW50cy4KKyAq Lworc3RhdGljIHZvaWQKK3NldHVwX3RtcHdhbF9kaXIoY29uc3QgY2hhciAqd2FsZGlyKQorewor CWNoYXIJICAgKnRlbXBsYXRlOworCisJLyoKKwkgKiBVc2UgdGhlIGRpcmVjdG9yeSBzcGVjaWZp ZWQgYnkgdGhlIFRNUERJUiBlbnZpcm9ubWVudCB2YXJpYWJsZS4gSWYgaXQncworCSAqIG5vdCBz ZXQsIHVzZSB0aGUgcHJvdmlkZWQgV0FMIGRpcmVjdG9yeSB0byBleHRyYWN0IFdBTCBmaWxlCisJ ICogdGVtcG9yYXJpbHkuCisJICovCisJdGVtcGxhdGUgPSBwc3ByaW50ZigiJXMvd2FsZHVtcF90 bXAtWFhYWFhYIiwKKwkJCQkJCWdldGVudigiVE1QRElSIikgPyBnZXRlbnYoIlRNUERJUiIpIDog d2FsZGlyKTsKKwlUbXBXYWxTZWdEaXIgPSBta2R0ZW1wKHRlbXBsYXRlKTsKKworCWlmIChUbXBX YWxTZWdEaXIgPT0gTlVMTCkKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCBjcmVhdGUgZGlyZWN0b3J5 IFwiJXNcIjogJW0iLCB0ZW1wbGF0ZSk7CisKKwljYW5vbmljYWxpemVfcGF0aChUbXBXYWxTZWdE aXIpOworCisJcGdfbG9nX2RlYnVnKCJjcmVhdGVkIGRpcmVjdG9yeSBcIiVzXCIiLCBUbXBXYWxT ZWdEaXIpOworfQorCisvKgorICogUmVtb3ZlIHRlbXBvcmFyeSBkaXJlY3RvcnkgYXQgZXhpdCwg aWYgYW55LgorICovCitzdGF0aWMgdm9pZAorY2xlYW51cF90bXB3YWxfZGlyX2F0ZXhpdCh2b2lk KQoreworCXJtdHJlZShUbXBXYWxTZWdEaXIsIHRydWUpOworfQorCisvKgorICogQ3JlYXRlIGFu IGVtcHR5IHBsYWNlaG9sZGVyIGZpbGUgYW5kIHJldHVybiBpdHMgaGFuZGxlLgorICovCitzdGF0 aWMgRklMRSAqCitwcmVwYXJlX3RtcF93cml0ZShjb25zdCBjaGFyICpmbmFtZSkKK3sKKwljaGFy CQlmcGF0aFtNQVhQR1BBVEhdOworCUZJTEUJICAgKmZpbGU7CisKKwlzbnByaW50ZihmcGF0aCwg TUFYUEdQQVRILCAiJXMvJXMiLCBUbXBXYWxTZWdEaXIsIGZuYW1lKTsKKworCS8qIENyZWF0ZSBh biBlbXB0eSBwbGFjZWhvbGRlciAqLworCWZpbGUgPSBmb3BlbihmcGF0aCwgUEdfQklOQVJZX1cp OworCWlmIChmaWxlID09IE5VTEwpCisJCXBnX2ZhdGFsKCJjb3VsZCBub3QgY3JlYXRlIGZpbGUg XCIlc1wiOiAlbSIsIGZwYXRoKTsKKworI2lmbmRlZiBXSU4zMgorCWlmIChjaG1vZChmcGF0aCwg cGdfZmlsZV9jcmVhdGVfbW9kZSkpCisJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgc2V0IHBlcm1pc3Np b25zIG9uIGZpbGUgXCIlc1wiOiAlbSIsCisJCQkJIGZwYXRoKTsKKyNlbmRpZgorCisJcGdfbG9n X2RlYnVnKCJ0ZW1wb3JhcmlseSBleHBvcnRpbmcgZmlsZSBcIiVzXCIiLCBmcGF0aCk7CisKKwly ZXR1cm4gZmlsZTsKK30KKworLyoKKyAqIFdyaXRlIGJ1ZmZlciBkYXRhIHRvIHRoZSBnaXZlbiBm aWxlIGhhbmRsZS4KKyAqLworc3RhdGljIHZvaWQKK3BlcmZvcm1fdG1wX3dyaXRlKGNvbnN0IGNo YXIgKmZuYW1lLCBTdHJpbmdJbmZvIGJ1ZiwgRklMRSAqZmlsZSkKK3sKKwlBc3NlcnQoZmlsZSk7 CisKKwllcnJubyA9IDA7CisJaWYgKGJ1Zi0+bGVuID4gMCAmJiBmd3JpdGUoYnVmLT5kYXRhLCBi dWYtPmxlbiwgMSwgZmlsZSkgIT0gMSkKKwl7CisJCS8qCisJCSAqIElmIHdyaXRlIGRpZG4ndCBz ZXQgZXJybm8sIGFzc3VtZSBwcm9ibGVtIGlzIG5vIGRpc2sgc3BhY2UKKwkJICovCisJCWlmIChl cnJubyA9PSAwKQorCQkJZXJybm8gPSBFTk9TUEM7CisJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgd3Jp dGUgdG8gZmlsZSBcIiVzXCI6ICVtIiwgZm5hbWUpOworCX0KK30KKworLyoKKyAqIENyZWF0ZSBh biBhc3RyZWFtZXIgdGhhdCBjYW4gcmVhZCBXQUwgZnJvbSB0YXIgZmlsZS4KICAqLwogc3RhdGlj IGFzdHJlYW1lciAqCiBhc3RyZWFtZXJfd2FsZHVtcF9uZXcoWExvZ0R1bXBQcml2YXRlICpwcml2 YXRlSW5mbykKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMgYi9z cmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jCmluZGV4IDNjZDI3OWNhZGVkLi42MDU2YTlj MTRlOCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYworKysgYi9z cmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jCkBAIC00NzgsMjEgKzQ3OCw0NiBAQCBUYXJX QUxEdW1wUmVhZFBhZ2UoWExvZ1JlYWRlclN0YXRlICpzdGF0ZSwgWExvZ1JlY1B0ciB0YXJnZXRQ YWdlUHRyLCBpbnQgcmVxTGVuLAogCQlyZXR1cm4gLTE7CiAKIAkvKgotCSAqIElmIHRoZSB0YXJn ZXQgcGFnZSBpcyBpbiBhIGRpZmZlcmVudCBzZWdtZW50LCBmcmVlIHRoZSBidWZmZXIgc3BhY2UK LQkgKiBvY2N1cGllZCBieSB0aGUgcHJldmlvdXMgc2VnbWVudCBkYXRhLiBTaW5jZSBwZ193YWxk dW1wIG5ldmVyIHJlcXVlc3RzCi0JICogdGhlIHNhbWUgV0FMIGJ5dGVzIHR3aWNlLCBtb3Zpbmcg dG8gYSBuZXcgc2VnbWVudCBpbXBsaWVzIHRoZSBwcmV2aW91cwotCSAqIGJ1ZmZlcidzIGRhdGEg YW5kIHRoYXQgc2VnbWVudCB3aWxsIG5vdCBiZSBuZWVkZWQgYWdhaW4uCisJICogSWYgdGhlIHRh cmdldCBwYWdlIGlzIGluIGEgZGlmZmVyZW50IHNlZ21lbnQsIGZyZWUgdGhlIGJ1ZmZlciBhbmQv b3IKKwkgKiB0ZW1wb3JhcnkgZmlsZSBkaXNrIHNwYWNlIG9jY3VwaWVkIGJ5IHRoZSBwcmV2aW91 cyBzZWdtZW50J3MgZGF0YS4KKwkgKiBTaW5jZSBwZ193YWxkdW1wIG5ldmVyIHJlcXVlc3RzIHRo ZSBzYW1lIFdBTCBieXRlcyB0d2ljZSwgbW92aW5nIHRvIGEKKwkgKiBuZXcgc2VnbWVudCBpbXBs aWVzIHRoZSBwcmV2aW91cyBidWZmZXIncyBkYXRhIGFuZCB0aGF0IHNlZ21lbnQgd2lsbAorCSAq IG5vdCBiZSBuZWVkZWQgYWdhaW4uCisJICoKKwkgKiBBZnRlcndhcmQsIGNoZWNrIGZvciB0aGUg bmV4dCByZXF1aXJlZCBXQUwgc2VnbWVudCdzIHBoeXNpY2FsIGV4aXN0ZW5jZQorCSAqIGluIHRo ZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGZpcnN0IGJlZm9yZSBpbnZva2luZyB0aGUgYXJjaGl2ZSBz dHJlYW1lci4KIAkgKi8KIAluZXh0U2VnTm8gPSBzdGF0ZS0+c2VnLndzX3NlZ25vOwogCWlmICgh WExCeXRlSW5TZWcodGFyZ2V0UGFnZVB0ciwgbmV4dFNlZ05vLCBXYWxTZWdTeikpCiAJewogCQlj aGFyCQlmbmFtZVtNQVhGTkFNRUxFTl07CiAKKwkJaWYgKHN0YXRlLT5zZWcud3NfZmlsZSA+PSAw KQorCQl7CisJCQljbG9zZShzdGF0ZS0+c2VnLndzX2ZpbGUpOworCQkJc3RhdGUtPnNlZy53c19m aWxlID0gLTE7CisJCX0KKwogCQlYTG9nRmlsZU5hbWUoZm5hbWUsIHN0YXRlLT5zZWcud3NfdGxp LCBuZXh0U2VnTm8sIFdhbFNlZ1N6KTsKIAkJZnJlZV9hcmNoaXZlX3dhbF9lbnRyeShmbmFtZSwg cHJpdmF0ZSk7CisKKwkJWExCeXRlVG9TZWcodGFyZ2V0UGFnZVB0ciwgbmV4dFNlZ05vLCBXYWxT ZWdTeik7CisJCXN0YXRlLT5zZWcud3NfdGxpID0gcHJpdmF0ZS0+dGltZWxpbmU7CisJCXN0YXRl LT5zZWcud3Nfc2Vnbm8gPSBuZXh0U2VnTm87CisKKwkJLyoKKwkJICogSWYgdGhlIG5leHQgc2Vn bWVudCBleGlzdHMsIG9wZW4gaXQgYW5kIGNvbnRpbnVlIHJlYWRpbmcgZnJvbSB0aGVyZQorCQkg Ki8KKwkJWExvZ0ZpbGVOYW1lKGZuYW1lLCBzdGF0ZS0+c2VnLndzX3RsaSwgbmV4dFNlZ05vLCBX YWxTZWdTeik7CisJCXN0YXRlLT5zZWcud3NfZmlsZSA9IG9wZW5fZmlsZV9pbl9kaXJlY3Rvcnko VG1wV2FsU2VnRGlyLCBmbmFtZSk7CiAJfQogCi0JLyogUmVhZCB0aGUgV0FMIHBhZ2UgZnJvbSB0 aGUgYXJjaGl2ZSBzdHJlYW1lciAqLworCS8qIENvbnRpbnVlIHJlYWRpbmcgZnJvbSB0aGUgb3Bl biBXQUwgc2VnbWVudCwgaWYgYW55ICovCisJaWYgKHN0YXRlLT5zZWcud3NfZmlsZSA+PSAwKQor CQlyZXR1cm4gV0FMRHVtcFJlYWRQYWdlKHN0YXRlLCB0YXJnZXRQYWdlUHRyLCBjb3VudCwgdGFy Z2V0UHRyLAorCQkJCQkJCSAgIHJlYWRCdWZmKTsKKworCS8qIE90aGVyd2lzZSwgcmVhZCB0aGUg V0FMIHBhZ2UgZnJvbSB0aGUgYXJjaGl2ZSBzdHJlYW1lciAqLwogCXJldHVybiByZWFkX2FyY2hp dmVfd2FsX3BhZ2UocHJpdmF0ZSwgdGFyZ2V0UGFnZVB0ciwgY291bnQsIHJlYWRCdWZmLAogCQkJ CQkJCQkgV2FsU2VnU3opOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dh bGR1bXAuaCBiL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmgKaW5kZXggZTk4YTIwMTUy ZGEuLjEzMTg3ODAyMDA5IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVt cC5oCisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmgKQEAgLTE4LDYgKzE4LDkg QEAKIHN0cnVjdCBBcmNoaXZlZFdBTEZpbGU7CiBzdHJ1Y3QgQXJjaGl2ZWRXQUxfaGFzaDsKIAor LyogVGVtcG9yYXJ5IGRpcmVjdG9yeSAqLworZXh0ZXJuIGNoYXIgKlRtcFdhbFNlZ0RpcjsKKwog LyogQ29udGFpbnMgdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiB0byBkcml2ZSBXQUwgZGVjb2Rp bmcgKi8KIHR5cGVkZWYgc3RydWN0IFhMb2dEdW1wUHJpdmF0ZQogewpkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wZ193YWxkdW1wL3QvMDAxX2Jhc2ljLnBsIGIvc3JjL2Jpbi9wZ193YWxkdW1wL3QvMDAx X2Jhc2ljLnBsCmluZGV4IDEzNTY3ZmJkYmExLi42OGIwY2RkMjllNSAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ193YWxkdW1wL3QvMDAxX2Jhc2ljLnBsCisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC90 LzAwMV9iYXNpYy5wbApAQCAtNyw2ICs3LDcgQEAgdXNlIEN3ZDsKIHVzZSBQb3N0Z3JlU1FMOjpU ZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1v cmU7Cit1c2UgTGlzdDo6VXRpbCBxdyhzaHVmZmxlKTsKIAogbXkgJHRhciA9ICRFTlZ7VEFSfTsK IApAQCAtMjcyLDcgKzI3Myw3IEBAIHN1YiBnZW5lcmF0ZV9hcmNoaXZlCiAJfQogCWNsb3NlZGly ICRkaDsKIAotCUBmaWxlcyA9IHNvcnQgQGZpbGVzOworCUBmaWxlcyA9IHNodWZmbGUgQGZpbGVz OwogCiAJIyBtb3ZlIGludG8gdGhlIFdBTCBkaXJlY3RvcnkgYmVmb3JlIGFyY2hpdmluZyBmaWxl cwogCW15ICRjd2QgPSBnZXRjd2Q7Ci0tIAoyLjQ3LjEKCg== --000000000000abfa1406495d7654 Content-Type: application/octet-stream; name="v11-0007-pg_verifybackup-Delay-default-WAL-directory-prep.patch" Content-Disposition: attachment; filename="v11-0007-pg_verifybackup-Delay-default-WAL-directory-prep.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mkwjqbbt6 RnJvbSBhN2Q1NDBkM2RmZGUyOTYzMGVkODYxMDMxNzVjNjI5M2RlZjMxMTI4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMTYgSnVsIDIwMjUgMTQ6NDc6NDMgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxMSA3LzldIHBn X3ZlcmlmeWJhY2t1cDogRGVsYXkgZGVmYXVsdCBXQUwgZGlyZWN0b3J5CiBwcmVwYXJhdGlvbi4K CldlIGFyZSBub3Qgc3VyZSB3aGV0aGVyIHRvIHBhcnNlIFdBTCBmcm9tIGEgZGlyZWN0b3J5IG9y IGFuIGFyY2hpdmUKdW50aWwgdGhlIGJhY2t1cCBmb3JtYXQgaXMga25vd24uIFRoZXJlZm9yZSwg d2UgZGVsYXkgcHJlcGFyaW5nIHRoZQpkZWZhdWx0IFdBTCBkaXJlY3RvcnkgdW50aWwgdGhlIHBv aW50IG9mIHBhcnNpbmcuIFRoaXMgZGVsYXkgaXMKaGFybWxlc3MsIGFzIHRoZSBXQUwgZGlyZWN0 b3J5IGlzIG5vdCB1c2VkIGVsc2V3aGVyZS4KLS0tCiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9w Z192ZXJpZnliYWNrdXAuYyB8IDggKysrKy0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlv bnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ192ZXJpZnliYWNr dXAvcGdfdmVyaWZ5YmFja3VwLmMgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9wZ192ZXJpZnli YWNrdXAuYwppbmRleCBmOWYyZDQ1N2YyZi4uYWIwMWM0ZDAwM2EgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcGdfdmVyaWZ5YmFja3VwL3BnX3ZlcmlmeWJhY2t1cC5jCisrKyBiL3NyYy9iaW4vcGdfdmVy aWZ5YmFja3VwL3BnX3ZlcmlmeWJhY2t1cC5jCkBAIC0yODUsMTAgKzI4NSw2IEBAIG1haW4oaW50 IGFyZ2MsIGNoYXIgKiphcmd2KQogCQltYW5pZmVzdF9wYXRoID0gcHNwcmludGYoIiVzL2JhY2t1 cF9tYW5pZmVzdCIsCiAJCQkJCQkJCSBjb250ZXh0LmJhY2t1cF9kaXJlY3RvcnkpOwogCi0JLyog QnkgZGVmYXVsdCwgbG9vayBmb3IgdGhlIFdBTCBpbiB0aGUgYmFja3VwIGRpcmVjdG9yeSwgdG9v LiAqLwotCWlmICh3YWxfZGlyZWN0b3J5ID09IE5VTEwpCi0JCXdhbF9kaXJlY3RvcnkgPSBwc3By aW50ZigiJXMvcGdfd2FsIiwgY29udGV4dC5iYWNrdXBfZGlyZWN0b3J5KTsKLQogCS8qCiAJICog VHJ5IHRvIHJlYWQgdGhlIG1hbmlmZXN0LiBXZSB0cmVhdCBhbnkgZXJyb3JzIGVuY291bnRlcmVk IHdoaWxlIHBhcnNpbmcKIAkgKiB0aGUgbWFuaWZlc3QgYXMgZmF0YWw7IHRoZXJlIGRvZXNuJ3Qg c2VlbSB0byBiZSBtdWNoIHBvaW50IGluIHRyeWluZyB0bwpAQCAtMzY4LDYgKzM2NCwxMCBAQCBt YWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAlpZiAoY29udGV4dC5mb3JtYXQgPT0gJ3AnICYm ICFjb250ZXh0LnNraXBfY2hlY2tzdW1zKQogCQl2ZXJpZnlfYmFja3VwX2NoZWNrc3VtcygmY29u dGV4dCk7CiAKKwkvKiBCeSBkZWZhdWx0LCBsb29rIGZvciB0aGUgV0FMIGluIHRoZSBiYWNrdXAg ZGlyZWN0b3J5LCB0b28uICovCisJaWYgKHdhbF9kaXJlY3RvcnkgPT0gTlVMTCkKKwkJd2FsX2Rp cmVjdG9yeSA9IHBzcHJpbnRmKCIlcy9wZ193YWwiLCBjb250ZXh0LmJhY2t1cF9kaXJlY3Rvcnkp OworCiAJLyoKIAkgKiBUcnkgdG8gcGFyc2UgdGhlIHJlcXVpcmVkIHJhbmdlcyBvZiBXQUwgcmVj b3JkcywgdW5sZXNzIHdlIHdlcmUgdG9sZAogCSAqIG5vdCB0byBkbyBzby4KLS0gCjIuNDcuMQoK --000000000000abfa1406495d7654 Content-Type: application/octet-stream; name="v11-0008-pg_verifybackup-Rename-the-wal-directory-switch-.patch" Content-Disposition: attachment; filename="v11-0008-pg_verifybackup-Rename-the-wal-directory-switch-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mkwjqn5x7 RnJvbSAyOTgxODI2MTFjM2UzNTVjZGI4NWNlNDhiNzI1YTE2NzcwOTZjMmM3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFR1 ZSwgMjUgTm92IDIwMjUgMTc6MzI6MTQgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxMSA4LzldIHBn X3ZlcmlmeWJhY2t1cDogUmVuYW1lIHRoZSB3YWwtZGlyZWN0b3J5IHN3aXRjaCB0bwogd2FsLXBh dGgKCldpdGggcHJldmlvdXMgcGF0Y2hlcyB0byBwZ193YWxkdW1wIGNhbiBub3cgZGVjb2RlIFdB TCBkaXJlY3RseSBmcm9tCnRhciBmaWxlcy4gIFRoaXMgbWVhbnMgeW91J2xsIGJlIGFibGUgdG8g c3BlY2lmeSBhIHRhciBhcmNoaXZlIHBhdGgKaW5zdGVhZCBvZiBhIHRyYWRpdGlvbmFsIFdBTCBk aXJlY3RvcnkuCgpUbyBrZWVwIHRoaW5ncyBjb25zaXN0ZW50IGFuZCBtb3JlIHZlcnNhdGlsZSwg d2Ugc2hvdWxkIGFsc28KZ2VuZXJhbGl6ZSB0aGUgaW5wdXQgc3dpdGNoIGZvciBwZ192ZXJpZnli YWNrdXAuIEl0IHNob3VsZCBhY2NlcHQKZWl0aGVyIGEgZGlyZWN0b3J5IG9yIGEgdGFyIGZpbGUg cGF0aCB0aGF0IGNvbnRhaW5zIFdBTHMuIFRoaXMgY2hhbmdlCndpbGwgYWxzbyBhbGlnbmluZyBp dCB3aXRoIHRoZSBleGlzdGluZyBtYW5pZmVzdC1wYXRoIHN3aXRjaCBuYW1pbmcuCgo9PSBOT1RF ID09CiAgVGhlIGNvcnJlc3BvbmRpbmcgUE8gZmlsZXMgcmVxdWlyZSB1cGRhdGluZyBkdWUgdG8g dGhpcyBjaGFuZ2UuCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9wZ192ZXJpZnliYWNrdXAuc2dtbCAg ICAgfCAgMiArLQogc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvcGdfdmVyaWZ5YmFja3VwLmMgfCAy MiArKysrKysrKysrKy0tLS0tLS0tLS0tCiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAwN193 YWwucGwgICAgICB8ICA0ICsrLS0KIDMgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwg MTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9wZ192ZXJpZnli YWNrdXAuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfdmVyaWZ5YmFja3VwLnNnbWwKaW5kZXgg NjFjMTI5NzVlNGEuLmU5YjhiZmQ1MWIxIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3Bn X3ZlcmlmeWJhY2t1cC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfdmVyaWZ5YmFja3Vw LnNnbWwKQEAgLTI2MSw3ICsyNjEsNyBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KIAogICAg ICA8dmFybGlzdGVudHJ5PgogICAgICAgPHRlcm0+PG9wdGlvbj4tdyA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cGF0aDwvcmVwbGFjZWFibGU+PC9vcHRpb24+PC90ZXJtPgotICAgICAg PHRlcm0+PG9wdGlvbj4tLXdhbC1kaXJlY3Rvcnk9PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnBhdGg8L3JlcGxhY2VhYmxlPjwvb3B0aW9uPjwvdGVybT4KKyAgICAgIDx0ZXJtPjxvcHRp b24+LS13YWwtcGF0aD08cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGF0aDwvcmVwbGFj ZWFibGU+PC9vcHRpb24+PC90ZXJtPgogICAgICAgPGxpc3RpdGVtPgogICAgICAgIDxwYXJhPgog ICAgICAgICBUcnkgdG8gcGFyc2UgV0FMIGZpbGVzIHN0b3JlZCBpbiB0aGUgc3BlY2lmaWVkIGRp cmVjdG9yeSwgcmF0aGVyIHRoYW4KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3Vw L3BnX3ZlcmlmeWJhY2t1cC5jIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvcGdfdmVyaWZ5YmFj a3VwLmMKaW5kZXggYWIwMWM0ZDAwM2EuLjMxMDNkMzZmMWI5IDEwMDY0NAotLS0gYS9zcmMvYmlu L3BnX3ZlcmlmeWJhY2t1cC9wZ192ZXJpZnliYWNrdXAuYworKysgYi9zcmMvYmluL3BnX3Zlcmlm eWJhY2t1cC9wZ192ZXJpZnliYWNrdXAuYwpAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgdm9pZCB2 ZXJpZnlfZmlsZV9jaGVja3N1bSh2ZXJpZmllcl9jb250ZXh0ICpjb250ZXh0LAogCQkJCQkJCQkg dWludDggKmJ1ZmZlcik7CiBzdGF0aWMgdm9pZCBwYXJzZV9yZXF1aXJlZF93YWwodmVyaWZpZXJf Y29udGV4dCAqY29udGV4dCwKIAkJCQkJCQkgICBjaGFyICpwZ193YWxkdW1wX3BhdGgsCi0JCQkJ CQkJICAgY2hhciAqd2FsX2RpcmVjdG9yeSk7CisJCQkJCQkJICAgY2hhciAqd2FsX3BhdGgpOwog c3RhdGljIGFzdHJlYW1lciAqY3JlYXRlX2FyY2hpdmVfdmVyaWZpZXIodmVyaWZpZXJfY29udGV4 dCAqY29udGV4dCwKIAkJCQkJCQkJCQkgIGNoYXIgKmFyY2hpdmVfbmFtZSwKIAkJCQkJCQkJCQkg IE9pZCB0YmxzcGNfb2lkLApAQCAtMTI2LDcgKzEyNiw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIg Kiphcmd2KQogCQl7InByb2dyZXNzIiwgbm9fYXJndW1lbnQsIE5VTEwsICdQJ30sCiAJCXsicXVp ZXQiLCBub19hcmd1bWVudCwgTlVMTCwgJ3EnfSwKIAkJeyJza2lwLWNoZWNrc3VtcyIsIG5vX2Fy Z3VtZW50LCBOVUxMLCAncyd9LAotCQl7IndhbC1kaXJlY3RvcnkiLCByZXF1aXJlZF9hcmd1bWVu dCwgTlVMTCwgJ3cnfSwKKwkJeyJ3YWwtcGF0aCIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAn dyd9LAogCQl7TlVMTCwgMCwgTlVMTCwgMH0KIAl9OwogCkBAIC0xMzUsNyArMTM1LDcgQEAgbWFp bihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJY2hhcgkgICAqbWFuaWZlc3RfcGF0aCA9IE5VTEw7 CiAJYm9vbAkJbm9fcGFyc2Vfd2FsID0gZmFsc2U7CiAJYm9vbAkJcXVpZXQgPSBmYWxzZTsKLQlj aGFyCSAgICp3YWxfZGlyZWN0b3J5ID0gTlVMTDsKKwljaGFyCSAgICp3YWxfcGF0aCA9IE5VTEw7 CiAJY2hhcgkgICAqcGdfd2FsZHVtcF9wYXRoID0gTlVMTDsKIAlESVIJCSAgICpkaXI7CiAKQEAg LTIyMSw4ICsyMjEsOCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCQljb250ZXh0 LnNraXBfY2hlY2tzdW1zID0gdHJ1ZTsKIAkJCQlicmVhazsKIAkJCWNhc2UgJ3cnOgotCQkJCXdh bF9kaXJlY3RvcnkgPSBwc3RyZHVwKG9wdGFyZyk7Ci0JCQkJY2Fub25pY2FsaXplX3BhdGgod2Fs X2RpcmVjdG9yeSk7CisJCQkJd2FsX3BhdGggPSBwc3RyZHVwKG9wdGFyZyk7CisJCQkJY2Fub25p Y2FsaXplX3BhdGgod2FsX3BhdGgpOwogCQkJCWJyZWFrOwogCQkJZGVmYXVsdDoKIAkJCQkvKiBn ZXRvcHRfbG9uZyBhbHJlYWR5IGVtaXR0ZWQgYSBjb21wbGFpbnQgKi8KQEAgLTM2NSwxNSArMzY1 LDE1IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQl2ZXJpZnlfYmFja3VwX2NoZWNr c3VtcygmY29udGV4dCk7CiAKIAkvKiBCeSBkZWZhdWx0LCBsb29rIGZvciB0aGUgV0FMIGluIHRo ZSBiYWNrdXAgZGlyZWN0b3J5LCB0b28uICovCi0JaWYgKHdhbF9kaXJlY3RvcnkgPT0gTlVMTCkK LQkJd2FsX2RpcmVjdG9yeSA9IHBzcHJpbnRmKCIlcy9wZ193YWwiLCBjb250ZXh0LmJhY2t1cF9k aXJlY3RvcnkpOworCWlmICh3YWxfcGF0aCA9PSBOVUxMKQorCQl3YWxfcGF0aCA9IHBzcHJpbnRm KCIlcy9wZ193YWwiLCBjb250ZXh0LmJhY2t1cF9kaXJlY3RvcnkpOwogCiAJLyoKIAkgKiBUcnkg dG8gcGFyc2UgdGhlIHJlcXVpcmVkIHJhbmdlcyBvZiBXQUwgcmVjb3JkcywgdW5sZXNzIHdlIHdl cmUgdG9sZAogCSAqIG5vdCB0byBkbyBzby4KIAkgKi8KIAlpZiAoIW5vX3BhcnNlX3dhbCkKLQkJ cGFyc2VfcmVxdWlyZWRfd2FsKCZjb250ZXh0LCBwZ193YWxkdW1wX3BhdGgsIHdhbF9kaXJlY3Rv cnkpOworCQlwYXJzZV9yZXF1aXJlZF93YWwoJmNvbnRleHQsIHBnX3dhbGR1bXBfcGF0aCwgd2Fs X3BhdGgpOwogCiAJLyoKIAkgKiBJZiBldmVyeXRoaW5nIGxvb2tzIE9LLCB0ZWxsIHRoZSB1c2Vy IHRoaXMsIHVubGVzcyB3ZSB3ZXJlIGFza2VkIHRvCkBAIC0xMTk4LDcgKzExOTgsNyBAQCB2ZXJp ZnlfZmlsZV9jaGVja3N1bSh2ZXJpZmllcl9jb250ZXh0ICpjb250ZXh0LCBtYW5pZmVzdF9maWxl ICptLAogICovCiBzdGF0aWMgdm9pZAogcGFyc2VfcmVxdWlyZWRfd2FsKHZlcmlmaWVyX2NvbnRl eHQgKmNvbnRleHQsIGNoYXIgKnBnX3dhbGR1bXBfcGF0aCwKLQkJCQkgICBjaGFyICp3YWxfZGly ZWN0b3J5KQorCQkJCSAgIGNoYXIgKndhbF9wYXRoKQogewogCW1hbmlmZXN0X2RhdGEgKm1hbmlm ZXN0ID0gY29udGV4dC0+bWFuaWZlc3Q7CiAJbWFuaWZlc3Rfd2FsX3JhbmdlICp0aGlzX3dhbF9y YW5nZSA9IG1hbmlmZXN0LT5maXJzdF93YWxfcmFuZ2U7CkBAIC0xMjA4LDcgKzEyMDgsNyBAQCBw YXJzZV9yZXF1aXJlZF93YWwodmVyaWZpZXJfY29udGV4dCAqY29udGV4dCwgY2hhciAqcGdfd2Fs ZHVtcF9wYXRoLAogCQljaGFyCSAgICpwZ193YWxkdW1wX2NtZDsKIAogCQlwZ193YWxkdW1wX2Nt ZCA9IHBzcHJpbnRmKCJcIiVzXCIgLS1xdWlldCAtLXBhdGg9XCIlc1wiIC0tdGltZWxpbmU9JXUg LS1zdGFydD0lWC8lMDhYIC0tZW5kPSVYLyUwOFhcbiIsCi0JCQkJCQkJCSAgcGdfd2FsZHVtcF9w YXRoLCB3YWxfZGlyZWN0b3J5LCB0aGlzX3dhbF9yYW5nZS0+dGxpLAorCQkJCQkJCQkgIHBnX3dh bGR1bXBfcGF0aCwgd2FsX3BhdGgsIHRoaXNfd2FsX3JhbmdlLT50bGksCiAJCQkJCQkJCSAgTFNO X0ZPUk1BVF9BUkdTKHRoaXNfd2FsX3JhbmdlLT5zdGFydF9sc24pLAogCQkJCQkJCQkgIExTTl9G T1JNQVRfQVJHUyh0aGlzX3dhbF9yYW5nZS0+ZW5kX2xzbikpOwogCQlmZmx1c2goTlVMTCk7CkBA IC0xMzc2LDcgKzEzNzYsNyBAQCB1c2FnZSh2b2lkKQogCXByaW50ZihfKCIgIC1QLCAtLXByb2dy ZXNzICAgICAgICAgICAgICBzaG93IHByb2dyZXNzIGluZm9ybWF0aW9uXG4iKSk7CiAJcHJpbnRm KF8oIiAgLXEsIC0tcXVpZXQgICAgICAgICAgICAgICAgIGRvIG5vdCBwcmludCBhbnkgb3V0cHV0 LCBleGNlcHQgZm9yIGVycm9yc1xuIikpOwogCXByaW50ZihfKCIgIC1zLCAtLXNraXAtY2hlY2tz dW1zICAgICAgICBza2lwIGNoZWNrc3VtIHZlcmlmaWNhdGlvblxuIikpOwotCXByaW50ZihfKCIg IC13LCAtLXdhbC1kaXJlY3Rvcnk9UEFUSCAgICB1c2Ugc3BlY2lmaWVkIHBhdGggZm9yIFdBTCBm aWxlc1xuIikpOworCXByaW50ZihfKCIgIC13LCAtLXdhbC1wYXRoPVBBVEggICAgICAgICB1c2Ug c3BlY2lmaWVkIHBhdGggZm9yIFdBTCBmaWxlc1xuIikpOwogCXByaW50ZihfKCIgIC1WLCAtLXZl cnNpb24gICAgICAgICAgICAgICBvdXRwdXQgdmVyc2lvbiBpbmZvcm1hdGlvbiwgdGhlbiBleGl0 XG4iKSk7CiAJcHJpbnRmKF8oIiAgLT8sIC0taGVscCAgICAgICAgICAgICAgICAgIHNob3cgdGhp cyBoZWxwLCB0aGVuIGV4aXRcbiIpKTsKIAlwcmludGYoXygiXG5SZXBvcnQgYnVncyB0byA8JXM+ LlxuIiksIFBBQ0tBR0VfQlVHUkVQT1JUKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdmVyaWZ5 YmFja3VwL3QvMDA3X3dhbC5wbCBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDA3X3dhbC5w bAppbmRleCA3OTA4N2ExZjZiZS4uOGFkMjIzNDQ1M2QgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdf dmVyaWZ5YmFja3VwL3QvMDA3X3dhbC5wbAorKysgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90 LzAwN193YWwucGwKQEAgLTQyLDEwICs0MiwxMCBAQCBjb21tYW5kX29rKFsgJ3BnX3ZlcmlmeWJh Y2t1cCcsICctLW5vLXBhcnNlLXdhbCcsICRiYWNrdXBfcGF0aCBdLAogY29tbWFuZF9vaygKIAlb CiAJCSdwZ192ZXJpZnliYWNrdXAnLAotCQknLS13YWwtZGlyZWN0b3J5JyA9PiAkcmVsb2NhdGVk X3BnX3dhbCwKKwkJJy0td2FsLXBhdGgnID0+ICRyZWxvY2F0ZWRfcGdfd2FsLAogCQkkYmFja3Vw X3BhdGgKIAldLAotCSctLXdhbC1kaXJlY3RvcnkgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBXQUwg ZGlyZWN0b3J5Jyk7CisJJy0td2FsLXBhdGggY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBXQUwgZGly ZWN0b3J5Jyk7CiAKICMgTW92ZSBkaXJlY3RvcnkgYmFjayB0byBvcmlnaW5hbCBsb2NhdGlvbi4K IHJlbmFtZSgkcmVsb2NhdGVkX3BnX3dhbCwgJG9yaWdpbmFsX3BnX3dhbCkgfHwgZGllICJyZW5h bWUgcGdfd2FsIGJhY2s6ICQhIjsKLS0gCjIuNDcuMQoK --000000000000abfa1406495d7654 Content-Type: application/octet-stream; name="v11-0009-pg_verifybackup-enabled-WAL-parsing-for-tar-form.patch" Content-Disposition: attachment; filename="v11-0009-pg_verifybackup-enabled-WAL-parsing-for-tar-form.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mkwjqrwf8 RnJvbSBmYzhkYTcxMjRiNjY1ZDMyODQ5ZTZlZWM0MDE3MjhlZTU4NzQ4Nzg4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFR1 ZSwgMjUgTm92IDIwMjUgMTc6MzQ6MjYgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxMSA5LzldIHBn X3ZlcmlmeWJhY2t1cDogZW5hYmxlZCBXQUwgcGFyc2luZyBmb3IgdGFyLWZvcm1hdAogYmFja3Vw CgpOb3cgdGhhdCBwZ193YWxkdW1wIHN1cHBvcnRzIGRlY29kaW5nIGZyb20gdGFyIGFyY2hpdmVz LCB3ZSBzaG91bGQKbGV2ZXJhZ2UgdGhpcyBmdW5jdGlvbmFsaXR5IHRvIHJlbW92ZSB0aGUgcHJl dmlvdXMgcmVzdHJpY3Rpb24gb24gV0FMCnBhcnNpbmcgZm9yIHRhci1iYWNrZWQgZm9ybWF0cy4K LS0tCiBkb2Mvc3JjL3NnbWwvcmVmL3BnX3ZlcmlmeWJhY2t1cC5zZ21sICAgICAgICAgfCAgNSAr LQogc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvcGdfdmVyaWZ5YmFja3VwLmMgICAgIHwgNjYgKysr KysrKysrKysrKy0tLS0tLQogc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDJfYWxnb3JpdGht LnBsICAgIHwgIDQgLS0KIHNyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDAzX2NvcnJ1cHRpb24u cGwgICB8ICA0ICstCiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAwOF91bnRhci5wbCAgICAg ICAgfCAgNSArLQogc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMTBfY2xpZW50X3VudGFyLnBs IHwgIDUgKy0KIDYgZmlsZXMgY2hhbmdlZCwgNTAgaW5zZXJ0aW9ucygrKSwgMzkgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9wZ192ZXJpZnliYWNrdXAuc2dtbCBi L2RvYy9zcmMvc2dtbC9yZWYvcGdfdmVyaWZ5YmFja3VwLnNnbWwKaW5kZXggZTliOGJmZDUxYjEu LjE2YjUwYjVhNGRmIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX3ZlcmlmeWJhY2t1 cC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfdmVyaWZ5YmFja3VwLnNnbWwKQEAgLTM2 LDEwICszNiw3IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogICAgPGxpdGVyYWw+YmFja3Vw X21hbmlmZXN0PC9saXRlcmFsPiBnZW5lcmF0ZWQgYnkgdGhlIHNlcnZlciBhdCB0aGUgdGltZQog ICAgb2YgdGhlIGJhY2t1cC4gVGhlIGJhY2t1cCBtYXkgYmUgc3RvcmVkIGVpdGhlciBpbiB0aGUg InBsYWluIiBvciB0aGUgInRhciIKICAgIGZvcm1hdDsgdGhpcyBpbmNsdWRlcyB0YXItZm9ybWF0 IGJhY2t1cHMgY29tcHJlc3NlZCB3aXRoIGFueSBhbGdvcml0aG0KLSAgIHN1cHBvcnRlZCBieSA8 YXBwbGljYXRpb24+cGdfYmFzZWJhY2t1cDwvYXBwbGljYXRpb24+LiBIb3dldmVyLCBhdCBwcmVz ZW50LAotICAgPGxpdGVyYWw+V0FMPC9saXRlcmFsPiB2ZXJpZmljYXRpb24gaXMgc3VwcG9ydGVk IG9ubHkgZm9yIHBsYWluLWZvcm1hdAotICAgYmFja3Vwcy4gVGhlcmVmb3JlLCBpZiB0aGUgYmFj a3VwIGlzIHN0b3JlZCBpbiB0YXItZm9ybWF0LCB0aGUKLSAgIDxsaXRlcmFsPi1uLCAtLW5vLXBh cnNlLXdhbDwvbGl0ZXJhbD4gb3B0aW9uIHNob3VsZCBiZSB1c2VkLgorICAgc3VwcG9ydGVkIGJ5 IDxhcHBsaWNhdGlvbj5wZ19iYXNlYmFja3VwPC9hcHBsaWNhdGlvbj4uCiAgIDwvcGFyYT4KIAog ICA8cGFyYT4KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3BnX3ZlcmlmeWJh Y2t1cC5jIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvcGdfdmVyaWZ5YmFja3VwLmMKaW5kZXgg MzEwM2QzNmYxYjkuLmNjNDkyNzI4YWU4IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3ZlcmlmeWJh Y2t1cC9wZ192ZXJpZnliYWNrdXAuYworKysgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9wZ192 ZXJpZnliYWNrdXAuYwpAQCAtNzQsNyArNzQsOSBAQCBwZ19ub3JldHVybiBzdGF0aWMgdm9pZCBy ZXBvcnRfbWFuaWZlc3RfZXJyb3IoSnNvbk1hbmlmZXN0UGFyc2VDb250ZXh0ICpjb250ZXh0LAog CQkJCQkJCQkJCQkgIGNvbnN0IGNoYXIgKmZtdCwuLi4pCiAJCQlwZ19hdHRyaWJ1dGVfcHJpbnRm KDIsIDMpOwogCi1zdGF0aWMgdm9pZCB2ZXJpZnlfdGFyX2JhY2t1cCh2ZXJpZmllcl9jb250ZXh0 ICpjb250ZXh0LCBESVIgKmRpcik7CitzdGF0aWMgdm9pZCB2ZXJpZnlfdGFyX2JhY2t1cCh2ZXJp Zmllcl9jb250ZXh0ICpjb250ZXh0LCBESVIgKmRpciwKKwkJCQkJCQkgIGNoYXIgKipiYXNlX2Fy Y2hpdmVfcGF0aCwKKwkJCQkJCQkgIGNoYXIgKip3YWxfYXJjaGl2ZV9wYXRoKTsKIHN0YXRpYyB2 b2lkIHZlcmlmeV9wbGFpbl9iYWNrdXBfZGlyZWN0b3J5KHZlcmlmaWVyX2NvbnRleHQgKmNvbnRl eHQsCiAJCQkJCQkJCQkJICBjaGFyICpyZWxwYXRoLCBjaGFyICpmdWxscGF0aCwKIAkJCQkJCQkJ CQkgIERJUiAqZGlyKTsKQEAgLTgzLDcgKzg1LDkgQEAgc3RhdGljIHZvaWQgdmVyaWZ5X3BsYWlu X2JhY2t1cF9maWxlKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQsIGNoYXIgKnJlbHBhdGgsCiBz dGF0aWMgdm9pZCB2ZXJpZnlfY29udHJvbF9maWxlKGNvbnN0IGNoYXIgKmNvbnRyb2xwYXRoLAog CQkJCQkJCQl1aW50NjQgbWFuaWZlc3Rfc3lzdGVtX2lkZW50aWZpZXIpOwogc3RhdGljIHZvaWQg cHJlY2hlY2tfdGFyX2JhY2t1cF9maWxlKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQsIGNoYXIg KnJlbHBhdGgsCi0JCQkJCQkJCQkgY2hhciAqZnVsbHBhdGgsIFNpbXBsZVB0ckxpc3QgKnRhcmZp bGVzKTsKKwkJCQkJCQkJCSBjaGFyICpmdWxscGF0aCwgU2ltcGxlUHRyTGlzdCAqdGFyZmlsZXMs CisJCQkJCQkJCQkgY2hhciAqKmJhc2VfYXJjaGl2ZV9wYXRoLAorCQkJCQkJCQkJIGNoYXIgKip3 YWxfYXJjaGl2ZV9wYXRoKTsKIHN0YXRpYyB2b2lkIHZlcmlmeV90YXJfZmlsZSh2ZXJpZmllcl9j b250ZXh0ICpjb250ZXh0LCBjaGFyICpyZWxwYXRoLAogCQkJCQkJCWNoYXIgKmZ1bGxwYXRoLCBh c3RyZWFtZXIgKnN0cmVhbWVyKTsKIHN0YXRpYyB2b2lkIHJlcG9ydF9leHRyYV9iYWNrdXBfZmls ZXModmVyaWZpZXJfY29udGV4dCAqY29udGV4dCk7CkBAIC0xMzYsNiArMTQwLDggQEAgbWFpbihp bnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJYm9vbAkJbm9fcGFyc2Vfd2FsID0gZmFsc2U7CiAJYm9v bAkJcXVpZXQgPSBmYWxzZTsKIAljaGFyCSAgICp3YWxfcGF0aCA9IE5VTEw7CisJY2hhcgkgICAq YmFzZV9hcmNoaXZlX3BhdGggPSBOVUxMOworCWNoYXIJICAgKndhbF9hcmNoaXZlX3BhdGggPSBO VUxMOwogCWNoYXIJICAgKnBnX3dhbGR1bXBfcGF0aCA9IE5VTEw7CiAJRElSCQkgICAqZGlyOwog CkBAIC0zMjcsMTcgKzMzMyw2IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQlwZnJl ZShwYXRoKTsKIAl9CiAKLQkvKgotCSAqIFhYWDogSW4gdGhlIGZ1dHVyZSwgd2Ugc2hvdWxkIGNv bnNpZGVyIGVuaGFuY2luZyBwZ193YWxkdW1wIHRvIHJlYWQgV0FMCi0JICogZmlsZXMgZnJvbSBh biBhcmNoaXZlLgotCSAqLwotCWlmICghbm9fcGFyc2Vfd2FsICYmIGNvbnRleHQuZm9ybWF0ID09 ICd0JykKLQl7Ci0JCXBnX2xvZ19lcnJvcigicGdfd2FsZHVtcCBjYW5ub3QgcmVhZCB0YXIgZmls ZXMiKTsKLQkJcGdfbG9nX2Vycm9yX2hpbnQoIllvdSBtdXN0IHVzZSAtbi8tLW5vLXBhcnNlLXdh bCB3aGVuIHZlcmlmeWluZyBhIHRhci1mb3JtYXQgYmFja3VwLiIpOwotCQlleGl0KDEpOwotCX0K LQogCS8qCiAJICogUGVyZm9ybSB0aGUgYXBwcm9wcmlhdGUgdHlwZSBvZiB2ZXJpZmljYXRpb24g YXBwcm9wcmlhdGUgYmFzZWQgb24gdGhlCiAJICogYmFja3VwIGZvcm1hdC4gVGhpcyB3aWxsIGNs b3NlICdkaXInLgpAQCAtMzQ2LDcgKzM0MSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2 KQogCQl2ZXJpZnlfcGxhaW5fYmFja3VwX2RpcmVjdG9yeSgmY29udGV4dCwgTlVMTCwgY29udGV4 dC5iYWNrdXBfZGlyZWN0b3J5LAogCQkJCQkJCQkJICBkaXIpOwogCWVsc2UKLQkJdmVyaWZ5X3Rh cl9iYWNrdXAoJmNvbnRleHQsIGRpcik7CisJCXZlcmlmeV90YXJfYmFja3VwKCZjb250ZXh0LCBk aXIsICZiYXNlX2FyY2hpdmVfcGF0aCwgJndhbF9hcmNoaXZlX3BhdGgpOwogCiAJLyoKIAkgKiBU aGUgIm1hdGNoZWQiIGZsYWcgc2hvdWxkIG5vdyBiZSBzZXQgb24gZXZlcnkgZW50cnkgaW4gdGhl IGhhc2ggdGFibGUuCkBAIC0zNjQsOSArMzU5LDI4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiph cmd2KQogCWlmIChjb250ZXh0LmZvcm1hdCA9PSAncCcgJiYgIWNvbnRleHQuc2tpcF9jaGVja3N1 bXMpCiAJCXZlcmlmeV9iYWNrdXBfY2hlY2tzdW1zKCZjb250ZXh0KTsKIAotCS8qIEJ5IGRlZmF1 bHQsIGxvb2sgZm9yIHRoZSBXQUwgaW4gdGhlIGJhY2t1cCBkaXJlY3RvcnksIHRvby4gKi8KKwkv KgorCSAqIEJ5IGRlZmF1bHQsIFdBTCBmaWxlcyBhcmUgZXhwZWN0ZWQgdG8gYmUgZm91bmQgaW4g dGhlIGJhY2t1cCBkaXJlY3RvcnkKKwkgKiBmb3IgcGxhaW4tZm9ybWF0IGJhY2t1cHMuIEluIHRo ZSBjYXNlIG9mIHRhci1mb3JtYXQgYmFja3VwcywgaWYgYQorCSAqIHNlcGFyYXRlIFdBTCBhcmNo aXZlIGlzIG5vdCBmb3VuZCwgdGhlIFdBTCBmaWxlcyBhcmUgbW9zdCBsaWtlbHkKKwkgKiBpbmNs dWRlZCB3aXRoaW4gdGhlIG1haW4gZGF0YSBkaXJlY3RvcnkgYXJjaGl2ZS4KKwkgKi8KIAlpZiAo d2FsX3BhdGggPT0gTlVMTCkKLQkJd2FsX3BhdGggPSBwc3ByaW50ZigiJXMvcGdfd2FsIiwgY29u dGV4dC5iYWNrdXBfZGlyZWN0b3J5KTsKKwl7CisJCWlmIChjb250ZXh0LmZvcm1hdCA9PSAncCcp CisJCQl3YWxfcGF0aCA9IHBzcHJpbnRmKCIlcy9wZ193YWwiLCBjb250ZXh0LmJhY2t1cF9kaXJl Y3RvcnkpOworCQllbHNlIGlmICh3YWxfYXJjaGl2ZV9wYXRoKQorCQkJd2FsX3BhdGggPSB3YWxf YXJjaGl2ZV9wYXRoOworCQllbHNlIGlmIChiYXNlX2FyY2hpdmVfcGF0aCkKKwkJCXdhbF9wYXRo ID0gYmFzZV9hcmNoaXZlX3BhdGg7CisJCWVsc2UKKwkJeworCQkJcGdfbG9nX2Vycm9yKCJXQUwg YXJjaGl2ZSBub3QgZm91bmQiKTsKKwkJCXBnX2xvZ19lcnJvcl9oaW50KCJTcGVjaWZ5IHRoZSBj b3JyZWN0IHBhdGggdXNpbmcgdGhlIG9wdGlvbiAtdy8tLXdhbC1wYXRoLiAgIgorCQkJCQkJCSAg Ik9yIHlvdSBtdXN0IHVzZSAtbi8tLW5vLXBhcnNlLXdhbCB3aGVuIHZlcmlmeWluZyBhIHRhci1m b3JtYXQgYmFja3VwLiIpOworCQkJZXhpdCgxKTsKKwkJfQorCX0KIAogCS8qCiAJICogVHJ5IHRv IHBhcnNlIHRoZSByZXF1aXJlZCByYW5nZXMgb2YgV0FMIHJlY29yZHMsIHVubGVzcyB3ZSB3ZXJl IHRvbGQKQEAgLTc4Nyw3ICs4MDEsOCBAQCB2ZXJpZnlfY29udHJvbF9maWxlKGNvbnN0IGNoYXIg KmNvbnRyb2xwYXRoLCB1aW50NjQgbWFuaWZlc3Rfc3lzdGVtX2lkZW50aWZpZXIpCiAgKiBjbG9z ZSB3aGVuIHdlJ3JlIGRvbmUgd2l0aCBpdC4KICAqLwogc3RhdGljIHZvaWQKLXZlcmlmeV90YXJf YmFja3VwKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQsIERJUiAqZGlyKQordmVyaWZ5X3Rhcl9i YWNrdXAodmVyaWZpZXJfY29udGV4dCAqY29udGV4dCwgRElSICpkaXIsIGNoYXIgKipiYXNlX2Fy Y2hpdmVfcGF0aCwKKwkJCQkgIGNoYXIgKip3YWxfYXJjaGl2ZV9wYXRoKQogewogCXN0cnVjdCBk aXJlbnQgKmRpcmVudDsKIAlTaW1wbGVQdHJMaXN0IHRhcmZpbGVzID0ge05VTEwsIE5VTEx9OwpA QCAtODE2LDcgKzgzMSw4IEBAIHZlcmlmeV90YXJfYmFja3VwKHZlcmlmaWVyX2NvbnRleHQgKmNv bnRleHQsIERJUiAqZGlyKQogCQkJY2hhcgkgICAqZnVsbHBhdGg7CiAKIAkJCWZ1bGxwYXRoID0g cHNwcmludGYoIiVzLyVzIiwgY29udGV4dC0+YmFja3VwX2RpcmVjdG9yeSwgZmlsZW5hbWUpOwot CQkJcHJlY2hlY2tfdGFyX2JhY2t1cF9maWxlKGNvbnRleHQsIGZpbGVuYW1lLCBmdWxscGF0aCwg JnRhcmZpbGVzKTsKKwkJCXByZWNoZWNrX3Rhcl9iYWNrdXBfZmlsZShjb250ZXh0LCBmaWxlbmFt ZSwgZnVsbHBhdGgsICZ0YXJmaWxlcywKKwkJCQkJCQkJCSBiYXNlX2FyY2hpdmVfcGF0aCwgd2Fs X2FyY2hpdmVfcGF0aCk7CiAJCQlwZnJlZShmdWxscGF0aCk7CiAJCX0KIAl9CkBAIC04NzUsMTEg Kzg5MSwxMyBAQCB2ZXJpZnlfdGFyX2JhY2t1cCh2ZXJpZmllcl9jb250ZXh0ICpjb250ZXh0LCBE SVIgKmRpcikKICAqCiAgKiBUaGUgYXJndW1lbnRzIHRvIHRoaXMgZnVuY3Rpb24gYXJlIG1vc3Rs eSB0aGUgc2FtZSBhcyB0aGUKICAqIHZlcmlmeV9wbGFpbl9iYWNrdXBfZmlsZS4gVGhlIGFkZGl0 aW9uYWwgYXJndW1lbnQgb3V0cHV0cyBhIGxpc3Qgb2YgdmFsaWQKLSAqIHRhciBmaWxlcy4KKyAq IHRhciBmaWxlcywgYWxvbmcgd2l0aCB0aGUgZnVsbCBwYXRocyB0byB0aGUgbWFpbiBhcmNoaXZl IGFuZCB0aGUgV0FMCisgKiBkaXJlY3RvcnkgYXJjaGl2ZS4KICAqLwogc3RhdGljIHZvaWQKIHBy ZWNoZWNrX3Rhcl9iYWNrdXBfZmlsZSh2ZXJpZmllcl9jb250ZXh0ICpjb250ZXh0LCBjaGFyICpy ZWxwYXRoLAotCQkJCQkJIGNoYXIgKmZ1bGxwYXRoLCBTaW1wbGVQdHJMaXN0ICp0YXJmaWxlcykK KwkJCQkJCSBjaGFyICpmdWxscGF0aCwgU2ltcGxlUHRyTGlzdCAqdGFyZmlsZXMsCisJCQkJCQkg Y2hhciAqKmJhc2VfYXJjaGl2ZV9wYXRoLCBjaGFyICoqd2FsX2FyY2hpdmVfcGF0aCkKIHsKIAlz dHJ1Y3Qgc3RhdCBzYjsKIAlPaWQJCQl0YmxzcGNfb2lkID0gSW52YWxpZE9pZDsKQEAgLTkxOCw5 ICs5MzYsMTcgQEAgcHJlY2hlY2tfdGFyX2JhY2t1cF9maWxlKHZlcmlmaWVyX2NvbnRleHQgKmNv bnRleHQsIGNoYXIgKnJlbHBhdGgsCiAJICogZXh0ZW5zaW9uIHN1Y2ggYXMgLmd6LCAubHo0LCBv ciAuenN0LgogCSAqLwogCWlmIChzdHJuY21wKCJiYXNlIiwgcmVscGF0aCwgNCkgPT0gMCkKKwl7 CiAJCXN1ZmZpeCA9IHJlbHBhdGggKyA0OworCisJCSpiYXNlX2FyY2hpdmVfcGF0aCA9IHBzdHJk dXAoZnVsbHBhdGgpOworCX0KIAllbHNlIGlmIChzdHJuY21wKCJwZ193YWwiLCByZWxwYXRoLCA2 KSA9PSAwKQorCXsKIAkJc3VmZml4ID0gcmVscGF0aCArIDY7CisKKwkJKndhbF9hcmNoaXZlX3Bh dGggPSBwc3RyZHVwKGZ1bGxwYXRoKTsKKwl9CiAJZWxzZQogCXsKIAkJLyogRXhwZWN0ZWQgYSA8 dGFibGVzcGFjZW9pZD4udGFyIGZpbGUgaGVyZS4gKi8KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf dmVyaWZ5YmFja3VwL3QvMDAyX2FsZ29yaXRobS5wbCBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3Vw L3QvMDAyX2FsZ29yaXRobS5wbAppbmRleCAwNTU2MTkxZWM5ZC4uZWRjNTE1ZDU5MDQgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDAyX2FsZ29yaXRobS5wbAorKysgYi9z cmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAwMl9hbGdvcml0aG0ucGwKQEAgLTMwLDEwICszMCw2 IEBAIHN1YiB0ZXN0X2NoZWNrc3VtcwogCXsKIAkJIyBBZGQgc3dpdGNoIHRvIGdldCBhIHRhci1m b3JtYXQgYmFja3VwCiAJCXB1c2ggQGJhY2t1cCwgKCctLWZvcm1hdCcgPT4gJ3RhcicpOwotCi0J CSMgQWRkIHN3aXRjaCB0byBza2lwIFdBTCB2ZXJpZmljYXRpb24sIHdoaWNoIGlzIG5vdCB5ZXQg c3VwcG9ydGVkIGZvcgotCQkjIHRhci1mb3JtYXQgYmFja3VwcwotCQlwdXNoIEB2ZXJpZnksICgn LS1uby1wYXJzZS13YWwnKTsKIAl9CiAKIAkjIEEgYmFja3VwIHdpdGggYSBib2d1cyBhbGdvcml0 aG0gc2hvdWxkIGZhaWwuCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAw M19jb3JydXB0aW9uLnBsIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDNfY29ycnVwdGlv bi5wbAppbmRleCBiMWQ2NWI4YWEwZi4uODgyZDc1ZDlkYzIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cGdfdmVyaWZ5YmFja3VwL3QvMDAzX2NvcnJ1cHRpb24ucGwKKysrIGIvc3JjL2Jpbi9wZ192ZXJp ZnliYWNrdXAvdC8wMDNfY29ycnVwdGlvbi5wbApAQCAtMTkzLDEwICsxOTMsOCBAQCBmb3IgbXkg JHNjZW5hcmlvIChAc2NlbmFyaW8pCiAJCQljb21tYW5kX29rKFsgJHRhciwgJy1jZicgPT4gIiR0 YXJfYmFja3VwX3BhdGgvYmFzZS50YXIiLCAnLicgXSk7CiAJCQljaGRpcigkY3dkKSB8fCBkaWUg ImNoZGlyOiAkISI7CiAKLQkJCSMgTm93IGNoZWNrIHRoYXQgdGhlIGJhY2t1cCBubyBsb25nZXIg dmVyaWZpZXMuIFdlIG11c3QgdXNlIC1uCi0JCQkjIGhlcmUsIGJlY2F1c2UgcGdfd2FsZHVtcCBj YW4ndCB5ZXQgcmVhZCBXQUwgZnJvbSBhIHRhcmZpbGUuCiAJCQljb21tYW5kX2ZhaWxzX2xpa2Uo Ci0JCQkJWyAncGdfdmVyaWZ5YmFja3VwJywgJy0tbm8tcGFyc2Utd2FsJywgJHRhcl9iYWNrdXBf cGF0aCBdLAorCQkJCVsgJ3BnX3ZlcmlmeWJhY2t1cCcsICR0YXJfYmFja3VwX3BhdGggXSwKIAkJ CQkkc2NlbmFyaW8tPnsnZmFpbHNfbGlrZSd9LAogCQkJCSJjb3JydXB0IGJhY2t1cCBmYWlscyB2 ZXJpZmljYXRpb246ICRuYW1lIik7CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdmVyaWZ5YmFj a3VwL3QvMDA4X3VudGFyLnBsIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDhfdW50YXIu cGwKaW5kZXggYWU2N2FlODVhMzEuLjE2MWMwOGMxOTBkIDEwMDY0NAotLS0gYS9zcmMvYmluL3Bn X3ZlcmlmeWJhY2t1cC90LzAwOF91bnRhci5wbAorKysgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1 cC90LzAwOF91bnRhci5wbApAQCAtNDcsNyArNDcsNiBAQCBteSAkdHNvaWQgPSAkcHJpbWFyeS0+ c2FmZV9wc3FsKAogCQlTRUxFQ1Qgb2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVSRSBzcGNuYW1l ID0gJ3JlZ3Jlc3NfdHMxJykpOwogCiBteSAkYmFja3VwX3BhdGggPSAkcHJpbWFyeS0+YmFja3Vw X2RpciAuICcvc2VydmVyLWJhY2t1cCc7Ci1teSAkZXh0cmFjdF9wYXRoID0gJHByaW1hcnktPmJh Y2t1cF9kaXIgLiAnL2V4dHJhY3RlZC1iYWNrdXAnOwogCiBteSBAdGVzdF9jb25maWd1cmF0aW9u ID0gKAogCXsKQEAgLTEyMywxNCArMTIyLDEyIEBAIGZvciBteSAkdGMgKEB0ZXN0X2NvbmZpZ3Vy YXRpb24pCiAJCSMgVmVyaWZ5IHRhciBiYWNrdXAuCiAJCSRwcmltYXJ5LT5jb21tYW5kX29rKAog CQkJWwotCQkJCSdwZ192ZXJpZnliYWNrdXAnLCAnLS1uby1wYXJzZS13YWwnLAotCQkJCSctLWV4 aXQtb24tZXJyb3InLCAkYmFja3VwX3BhdGgsCisJCQkJJ3BnX3ZlcmlmeWJhY2t1cCcsICctLWV4 aXQtb24tZXJyb3InLCAkYmFja3VwX3BhdGgsCiAJCQldLAogCQkJInZlcmlmeSBiYWNrdXAsIGNv bXByZXNzaW9uICRtZXRob2QiKTsKIAogCQkjIENsZWFudXAuCiAJCXJtdHJlZSgkYmFja3VwX3Bh dGgpOwotCQlybXRyZWUoJGV4dHJhY3RfcGF0aCk7CiAJfQogfQogCmRpZmYgLS1naXQgYS9zcmMv YmluL3BnX3ZlcmlmeWJhY2t1cC90LzAxMF9jbGllbnRfdW50YXIucGwgYi9zcmMvYmluL3BnX3Zl cmlmeWJhY2t1cC90LzAxMF9jbGllbnRfdW50YXIucGwKaW5kZXggMWFjN2I1ZGI3NWEuLjk2NzBm YmU0ZmRhIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAxMF9jbGllbnRf dW50YXIucGwKKysrIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMTBfY2xpZW50X3VudGFy LnBsCkBAIC0zMiw3ICszMiw2IEBAIHByaW50ICRqZiAkanVua19kYXRhOwogY2xvc2UgJGpmOwog CiBteSAkYmFja3VwX3BhdGggPSAkcHJpbWFyeS0+YmFja3VwX2RpciAuICcvY2xpZW50LWJhY2t1 cCc7Ci1teSAkZXh0cmFjdF9wYXRoID0gJHByaW1hcnktPmJhY2t1cF9kaXIgLiAnL2V4dHJhY3Rl ZC1iYWNrdXAnOwogCiBteSBAdGVzdF9jb25maWd1cmF0aW9uID0gKAogCXsKQEAgLTEzNywxMyAr MTM2LDExIEBAIGZvciBteSAkdGMgKEB0ZXN0X2NvbmZpZ3VyYXRpb24pCiAJCSMgVmVyaWZ5IHRh ciBiYWNrdXAuCiAJCSRwcmltYXJ5LT5jb21tYW5kX29rKAogCQkJWwotCQkJCSdwZ192ZXJpZnli YWNrdXAnLCAnLS1uby1wYXJzZS13YWwnLAotCQkJCSctLWV4aXQtb24tZXJyb3InLCAkYmFja3Vw X3BhdGgsCisJCQkJJ3BnX3ZlcmlmeWJhY2t1cCcsICctLWV4aXQtb24tZXJyb3InLCAkYmFja3Vw X3BhdGgsCiAJCQldLAogCQkJInZlcmlmeSBiYWNrdXAsIGNvbXByZXNzaW9uICRtZXRob2QiKTsK IAogCQkjIENsZWFudXAuCi0JCXJtdHJlZSgkZXh0cmFjdF9wYXRoKTsKIAkJcm10cmVlKCRiYWNr dXBfcGF0aCk7CiAJfQogfQotLSAKMi40Ny4xCgo= --000000000000abfa1406495d7654--