Received: from malur.postgresql.org ([2a02:16a8:dc51::56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fvitC-0002Oy-LY for pgsql-hackers@arkaria.postgresql.org; Fri, 31 Aug 2018 12:51:02 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1fvitA-0003zU-T1 for pgsql-hackers@arkaria.postgresql.org; Fri, 31 Aug 2018 12:51:00 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fvitA-0003wM-Dc for pgsql-hackers@lists.postgresql.org; Fri, 31 Aug 2018 12:51:00 +0000 Received: from gauss.credativ.com ([93.94.130.89]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fvit6-0001tL-Fp for pgsql-hackers@postgresql.org; Fri, 31 Aug 2018 12:50:59 +0000 Received: from gauss.credativ.com (localhost [127.0.0.1]) by gauss.credativ.com (Postfix) with ESMTP id E5C4E1E1EA9; Fri, 31 Aug 2018 14:50:52 +0200 (CEST) Received: from kohn (fw-front.credativ.com [62.154.226.94]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: mba@gauss.credativ.com) by gauss.credativ.com (Postfix) with ESMTPSA id 7BC9B1E1C88; Fri, 31 Aug 2018 14:50:52 +0200 (CEST) Message-ID: <1535719851.1286.17.camel@credativ.de> Subject: Progress reporting for pg_verify_checksums From: Michael Banck To: pgsql-hackers Date: Fri, 31 Aug 2018 14:50:51 +0200 Organization: credativ GmbH Content-Type: multipart/mixed; boundary="=-Xd2DyRmx7ED8z82vSBbB" X-Mailer: Evolution 3.22.6-1+deb9u1 Mime-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --=-Xd2DyRmx7ED8z82vSBbB Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit Hi, my colleague Bernd Helmle recently added progress reporting to our pg_checksums application[1]. I have now forward ported this to pg_verify_checksums for the September commitfest, please see the attached patch. Here's the description: This optionally prints the progress of pg_verify_checksums via read kilobytes to the terminal with the new command line argument -P. If -P was forgotten and pg_verify_checksums operates on a large cluster, the caller can send SIGUSR1 to pg_verify_checksums to turn progress status reporting on during runtime. Michael [1] https://github.com/credativ/pg_checksums/commit/2b691 -- Michael Banck Projektleiter / Senior Berater Tel.: +49 2166 9901-171 Fax: +49 2166 9901-100 Email: michael.banck@credativ.de credativ GmbH, HRB Mönchengladbach 12080 USt-ID-Nummer: DE204566209 Trompeterallee 108, 41189 Mönchengladbach Geschäftsführung: Dr. Michael Meskes, Jörg Folz, Sascha Heuer Unser Umgang mit personenbezogenen Daten unterliegt folgenden Bestimmungen: https://www.credativ.de/datenschutz --=-Xd2DyRmx7ED8z82vSBbB Content-Disposition: attachment; filename="pg_verify_checksums_progress.patch" Content-Type: text/x-patch; name="pg_verify_checksums_progress.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 Y29tbWl0IGFkNjliNDNhMjRhNmVlZjhhN2RlZWY0Yzk4MTBlZTMxMmYzNDk2ZmIKQXV0aG9yOiBN aWNoYWVsIEJhbmNrIDxtaWNoYWVsLmJhbmNrQGNyZWRhdGl2LmRlPgpEYXRlOiAgIEZyaSBBdWcg MzEgMTM6MDQ6NTkgMjAxOCArMDIwMAoKICAgIEFkZCBwcm9ncmVzcyByZXBvcnRpbmcgdG8gcGdf dmVyaWZ5X2NoZWNrc3Vtcy4KICAgIAogICAgVGhpcyBvcHRpb25hbGx5IHByaW50cyB0aGUgcHJv Z3Jlc3Mgb2YgcGdfdmVyaWZ5X2NoZWNrc3VtcyB2aWEgcmVhZCBraWxvYnl0ZXMKICAgIHRvIHRo ZSB0ZXJtaW5hbCB3aXRoIHRoZSBuZXcgY29tbWFuZCBsaW5lIGFyZ3VtZW50IC1QLgogICAgCiAg ICBJZiAtUCB3YXMgZm9yZ290dGVuIGFuZCBwZ192ZXJpZnlfY2hlY2tzdW1zIG9wZXJhdGVzIG9u IGEgbGFyZ2UgY2x1c3RlciwgdGhlCiAgICBjYWxsZXIgY2FuIHNlbmQgU0lHVVNSMSB0byBwZ192 ZXJpZnlfY2hlY2tzdW1zIHRvIHR1cm4gcHJvZ3Jlc3Mgc3RhdHVzCiAgICByZXBvcnRpbmcgb24g ZHVyaW5nIHJ1bnRpbWUuCiAgICAKICAgIEF1dGhvcjogQmVybmQgSGVsbWxlCgpkaWZmIC0tZ2l0 IGEvc3JjL2Jpbi9wZ192ZXJpZnlfY2hlY2tzdW1zL3BnX3ZlcmlmeV9jaGVja3N1bXMuYyBiL3Ny Yy9iaW4vcGdfdmVyaWZ5X2NoZWNrc3Vtcy9wZ192ZXJpZnlfY2hlY2tzdW1zLmMKaW5kZXggYTk0 MTIzNjU2My4uMjdiMTEwMzkwMiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ192ZXJpZnlfY2hlY2tz dW1zL3BnX3ZlcmlmeV9jaGVja3N1bXMuYworKysgYi9zcmMvYmluL3BnX3ZlcmlmeV9jaGVja3N1 bXMvcGdfdmVyaWZ5X2NoZWNrc3Vtcy5jCkBAIC0yMSw2ICsyMSw4IEBACiAjaW5jbHVkZSA8c3lz L3N0YXQuaD4KICNpbmNsdWRlIDxkaXJlbnQuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNs dWRlIDxzaWduYWwuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CiAKICNpbmNsdWRlICJwZ19nZXRvcHQu aCIKIApAQCAtMzIsOSArMzQsMTggQEAgc3RhdGljIENvbnRyb2xGaWxlRGF0YSAqQ29udHJvbEZp bGU7CiAKIHN0YXRpYyBjaGFyICpvbmx5X3JlbGZpbGVub2RlID0gTlVMTDsKIHN0YXRpYyBib29s IHZlcmJvc2UgPSBmYWxzZTsKK3N0YXRpYyBib29sIHNob3dfcHJvZ3Jlc3MgPSBmYWxzZTsKIAog c3RhdGljIGNvbnN0IGNoYXIgKnByb2duYW1lOwogCisvKgorICogUHJvZ3Jlc3Mgc3RhdHVzIGlu Zm9ybWF0aW9uLgorICovCitpbnQ2NAkJdG90YWxfc2l6ZSA9IDA7CitpbnQ2NAkJY3VycmVudF9z aXplID0gMDsKK3BnX3RpbWVfdAlsYXN0X3Byb2dyZXNzX3VwZGF0ZTsKK3BnX3RpbWVfdAlzY2Fu X3N0YXJ0ZWQ7CisKIHN0YXRpYyB2b2lkCiB1c2FnZSgpCiB7CkBAIC00NSw2ICs1Niw3IEBAIHVz YWdlKCkKIAlwcmludGYoXygiIFstRCwgLS1wZ2RhdGE9XURBVEFESVIgIGRhdGEgZGlyZWN0b3J5 XG4iKSk7CiAJcHJpbnRmKF8oIiAgLXYsIC0tdmVyYm9zZSAgICAgICAgICBvdXRwdXQgdmVyYm9z ZSBtZXNzYWdlc1xuIikpOwogCXByaW50ZihfKCIgIC1yIFJFTEZJTEVOT0RFICAgICAgICAgY2hl Y2sgb25seSByZWxhdGlvbiB3aXRoIHNwZWNpZmllZCByZWxmaWxlbm9kZVxuIikpOworCXByaW50 ZihfKCIgIC1QICAgICAgICAgICAgICAgICAgICAgc2hvdyBwcm9ncmVzcyBpbmZvcm1hdGlvblxu IikpOwogCXByaW50ZihfKCIgIC1WLCAtLXZlcnNpb24gICAgICAgICAgb3V0cHV0IHZlcnNpb24g aW5mb3JtYXRpb24sIHRoZW4gZXhpdFxuIikpOwogCXByaW50ZihfKCIgIC0/LCAtLWhlbHAgICAg ICAgICAgICAgc2hvdyB0aGlzIGhlbHAsIHRoZW4gZXhpdFxuIikpOwogCXByaW50ZihfKCJcbklm IG5vIGRhdGEgZGlyZWN0b3J5IChEQVRBRElSKSBpcyBzcGVjaWZpZWQsICIKQEAgLTYwLDYgKzcy LDY5IEBAIHN0YXRpYyBjb25zdCBjaGFyICpza2lwW10gPSB7CiAJTlVMTCwKIH07CiAKK3N0YXRp YyB2b2lkCitlbmFibGVfcHJvZ3Jlc3NfcmVwb3J0KGludCBzaWdubywKKwkJCQkJICAgc2lnaW5m b190ICogc2lnaW5mbywKKwkJCQkJICAgdm9pZCAqY29udGV4dCkKK3sKKworCS8qIHdlIGhhbmRs ZSBTSUdVU1IxIG9ubHkgKi8KKwlpZiAoc2lnbm8gPT0gU0lHVVNSMSkKKwl7CisJCXNob3dfcHJv Z3Jlc3MgPSB0cnVlOworCX0KKworfQorCisvKgorICogUmVwb3J0IGN1cnJlbnQgcHJvZ3Jlc3Mg c3RhdHVzLiBQYXJ0cyBib3Jyb3dlZCBmcm9tCisgKiBQb3N0Z3JlU1FMcycgc3JjL2Jpbi9wZ19i YXNlYmFja3VwLmMKKyAqLworc3RhdGljIHZvaWQKK3JlcG9ydF9wcm9ncmVzcyhib29sIGZvcmNl KQoreworCXBnX3RpbWVfdAlub3cgPSB0aW1lKE5VTEwpOworCWludAkJCXRvdGFsX3BlcmNlbnQg PSAwOworCisJY2hhcgkJdG90YWxzdHJbMzJdOworCWNoYXIJCWN1cnJlbnRzdHJbMzJdOworCWNo YXIJCWN1cnJzcGVlZHN0clszMl07CisKKwkvKiBNYWtlIHN1cmUgd2UganVzdCByZXBvcnQgYXQg bGVhc3Qgb25jZSBhIHNlY29uZCAqLworCWlmICgobm93ID09IGxhc3RfcHJvZ3Jlc3NfdXBkYXRl KSAmJiAhZm9yY2UpCisJCXJldHVybjsKKworCS8qIFNhdmUgY3VycmVudCB0aW1lICovCisJbGFz dF9wcm9ncmVzc191cGRhdGUgPSBub3c7CisKKwkvKgorCSAqIENhbGN1bGF0ZSBjdXJyZW50IHBl cmNlbnQgZG9uZSwgYmFzZWQgb24gS2lCLi4uCisJICovCisJdG90YWxfcGVyY2VudCA9IHRvdGFs X3NpemUgPyAoaW50NjQpICgoY3VycmVudF9zaXplIC8gMTAyNCkgKiAxMDAgLyAodG90YWxfc2l6 ZSAvIDEwMjQpKSA6IDA7CisKKwkvKiBEb24ndCBkaXNwbGF5IGxhcmdlciB0aGFuIDEwMCUgKi8K KwlpZiAodG90YWxfcGVyY2VudCA+IDEwMCkKKwkJdG90YWxfcGVyY2VudCA9IDEwMDsKKworCS8q IFRoZSBzYW1lIGZvciB0b3RhbCBzaXplICovCisJaWYgKGN1cnJlbnRfc2l6ZSA+IHRvdGFsX3Np emUpCisJCXRvdGFsX3NpemUgPSBjdXJyZW50X3NpemUgLyAxMDI0OworCisJc25wcmludGYodG90 YWxzdHIsIHNpemVvZih0b3RhbHN0ciksIElOVDY0X0ZPUk1BVCwKKwkJCSB0b3RhbF9zaXplIC8g MTAyNCk7CisJc25wcmludGYoY3VycmVudHN0ciwgc2l6ZW9mKGN1cnJlbnRzdHIpLCBJTlQ2NF9G T1JNQVQsCisJCQkgY3VycmVudF9zaXplIC8gMTAyNCk7CisJc25wcmludGYoY3VycnNwZWVkc3Ry LCBzaXplb2YoY3VycnNwZWVkc3RyKSwgSU5UNjRfRk9STUFULAorCQkJIChjdXJyZW50X3NpemUg LyAxMDI0KSAvICgoKHRpbWUoTlVMTCkgLSBzY2FuX3N0YXJ0ZWQpID09IDApID8gMSA6ICh0aW1l KE5VTEwpIC0gc2Nhbl9zdGFydGVkKSkpOworCWZwcmludGYoc3RkZXJyLCAiJXMvJXMga0IgKCVk JSUsICVzIGtCL3MpIiwKKwkJCWN1cnJlbnRzdHIsIHRvdGFsc3RyLCB0b3RhbF9wZXJjZW50LCBj dXJyc3BlZWRzdHIpOworCisJaWYgKGlzYXR0eShmaWxlbm8oc3RkZXJyKSkpCisJCWZwcmludGYo c3RkZXJyLCAiXHIiKTsKKwllbHNlCisJCWZwcmludGYoc3RkZXJyLCAiXG4iKTsKK30KKwogc3Rh dGljIGJvb2wKIHNraXBmaWxlKGNoYXIgKmZuKQogewpAQCAtNzYsNyArMTUxLDcgQEAgc2tpcGZp bGUoY2hhciAqZm4pCiB9CiAKIHN0YXRpYyB2b2lkCi1zY2FuX2ZpbGUoY2hhciAqZm4sIGludCBz ZWdtZW50bm8pCitzY2FuX2ZpbGUoY2hhciAqZm4sIGludCBzZWdtZW50bm8sIGJvb2wgc2l6ZW9u bHkpCiB7CiAJY2hhcgkJYnVmW0JMQ0tTWl07CiAJUGFnZUhlYWRlcgloZWFkZXIgPSAoUGFnZUhl YWRlcikgYnVmOwpAQCAtMTEzLDYgKzE4OCw3IEBAIHNjYW5fZmlsZShjaGFyICpmbiwgaW50IHNl Z21lbnRubykKIAkJCWNvbnRpbnVlOwogCiAJCWNzdW0gPSBwZ19jaGVja3N1bV9wYWdlKGJ1Ziwg YmxvY2tubyArIHNlZ21lbnRubyAqIFJFTFNFR19TSVpFKTsKKwkJY3VycmVudF9zaXplICs9IHI7 CiAJCWlmIChjc3VtICE9IGhlYWRlci0+cGRfY2hlY2tzdW0pCiAJCXsKIAkJCWlmIChDb250cm9s RmlsZS0+ZGF0YV9jaGVja3N1bV92ZXJzaW9uID09IFBHX0RBVEFfQ0hFQ0tTVU1fVkVSU0lPTikK QEAgLTEyMCw2ICsxOTYsOSBAQCBzY2FuX2ZpbGUoY2hhciAqZm4sIGludCBzZWdtZW50bm8pCiAJ CQkJCQlwcm9nbmFtZSwgZm4sIGJsb2Nrbm8sIGNzdW0sIGhlYWRlci0+cGRfY2hlY2tzdW0pOwog CQkJYmFkYmxvY2tzKys7CiAJCX0KKworCQlpZiAoc2hvd19wcm9ncmVzcykKKwkJCXJlcG9ydF9w cm9ncmVzcyhmYWxzZSk7CiAJfQogCiAJaWYgKHZlcmJvc2UpCkBAIC0xMjksOSArMjA4LDEwIEBA IHNjYW5fZmlsZShjaGFyICpmbiwgaW50IHNlZ21lbnRubykKIAljbG9zZShmKTsKIH0KIAotc3Rh dGljIHZvaWQKLXNjYW5fZGlyZWN0b3J5KGNoYXIgKmJhc2VkaXIsIGNoYXIgKnN1YmRpcikKK3N0 YXRpYyBpbnQ2NAorc2Nhbl9kaXJlY3RvcnkoY2hhciAqYmFzZWRpciwgY2hhciAqc3ViZGlyLCBi b29sIHNpemVvbmx5KQogeworCWludDY0CQlkaXJzaXplID0gMDsKIAljaGFyCQlwYXRoW01BWFBH UEFUSF07CiAJRElSCQkgICAqZGlyOwogCXN0cnVjdCBkaXJlbnQgKmRlOwpAQCAtMTkyLDE2ICsy NzIsMjIgQEAgc2Nhbl9kaXJlY3RvcnkoY2hhciAqYmFzZWRpciwgY2hhciAqc3ViZGlyKQogCQkJ CS8qIFJlbGZpbGVub2RlIG5vdCB0byBiZSBpbmNsdWRlZCAqLwogCQkJCWNvbnRpbnVlOwogCi0J CQlzY2FuX2ZpbGUoZm4sIHNlZ21lbnRubyk7CisJCQlkaXJzaXplICs9IHN0LnN0X3NpemU7CisK KwkJCWlmICghc2l6ZW9ubHkpCisJCQl7CisJCQkJc2Nhbl9maWxlKGZuLCBzZWdtZW50bm8sIHNp emVvbmx5KTsKKwkJCX0KIAkJfQogI2lmbmRlZiBXSU4zMgogCQllbHNlIGlmIChTX0lTRElSKHN0 LnN0X21vZGUpIHx8IFNfSVNMTksoc3Quc3RfbW9kZSkpCiAjZWxzZQogCQllbHNlIGlmIChTX0lT RElSKHN0LnN0X21vZGUpIHx8IHBnd2luMzJfaXNfanVuY3Rpb24oZm4pKQogI2VuZGlmCi0JCQlz Y2FuX2RpcmVjdG9yeShwYXRoLCBkZS0+ZF9uYW1lKTsKKwkJCWRpcnNpemUgKz0gc2Nhbl9kaXJl Y3RvcnkocGF0aCwgZGUtPmRfbmFtZSwgc2l6ZW9ubHkpOwogCX0KIAljbG9zZWRpcihkaXIpOwor CXJldHVybiBkaXJzaXplOwogfQogCiBpbnQKQEAgLTIxOCw2ICszMDQsOCBAQCBtYWluKGludCBh cmdjLCBjaGFyICphcmd2W10pCiAJaW50CQkJb3B0aW9uX2luZGV4OwogCWJvb2wJCWNyY19vazsK IAorCXN0cnVjdCBzaWdhY3Rpb24gYWN0OyAvKiB0byB0dXJuIHByb2dyZXNzIHN0YXR1cyBpbmZv IG9uICovCisKIAlzZXRfcGdsb2NhbGVfcGdzZXJ2aWNlKGFyZ3ZbMF0sIFBHX1RFWFRET01BSU4o InBnX3ZlcmlmeV9jaGVja3N1bXMiKSk7CiAKIAlwcm9nbmFtZSA9IGdldF9wcm9nbmFtZShhcmd2 WzBdKTsKQEAgLTIzNiw3ICszMjQsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJ CX0KIAl9CiAKLQl3aGlsZSAoKGMgPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAiRDpyOnYiLCBs b25nX29wdGlvbnMsICZvcHRpb25faW5kZXgpKSAhPSAtMSkKKwl3aGlsZSAoKGMgPSBnZXRvcHRf bG9uZyhhcmdjLCBhcmd2LCAiRDpyOnZQIiwgbG9uZ19vcHRpb25zLCAmb3B0aW9uX2luZGV4KSkg IT0gLTEpCiAJewogCQlzd2l0Y2ggKGMpCiAJCXsKQEAgLTI1NCw2ICszNDIsOSBAQCBtYWluKGlu dCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQkJfQogCQkJCW9ubHlfcmVsZmlsZW5vZGUgPSBwc3Ry ZHVwKG9wdGFyZyk7CiAJCQkJYnJlYWs7CisJCQljYXNlICdQJzoKKwkJCQlzaG93X3Byb2dyZXNz ID0gdHJ1ZTsKKwkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJZnByaW50ZihzdGRlcnIsIF8o IlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksIHByb2duYW1lKTsK IAkJCQlleGl0KDEpOwpAQCAtMzA3LDEwICszOTgsNTYgQEAgbWFpbihpbnQgYXJnYywgY2hhciAq YXJndltdKQogCQlleGl0KDEpOwogCX0KIAorCisJLyoKKwkgKiBBc3NpZ24gU0lHVVNSMSBzaWdu YWwgaGFuZGxlciB0byB0dXJuIHByb2dyZXNzIHN0YXR1cyBpbmZvcm1hdGlvbgorCSAqIG9uIGlu IGNhc2Ugc29tZW9uZSBoYXMgZm9yZ290dGVuIC1QIChhbmQgZG9lc24ndCB3YW50IHRvCisJICog cmVzdGFydCkuLi4KKwkgKi8KKwltZW1zZXQoJmFjdCwgJ1wwJywgc2l6ZW9mKGFjdCkpOworCWFj dC5zYV9zaWdhY3Rpb24gPSAmZW5hYmxlX3Byb2dyZXNzX3JlcG9ydDsKKwlhY3Quc2FfZmxhZ3Mg PSBTQV9TSUdJTkZPOworCisJLyoKKwkgKiBFbmFibGUgc2lnbmFsIGhhbmRsZXIsIGJ1dCBkb24n dCB0cmVhdCBpdCBhcyBzZXZlcmUgaWYgd2UgZG9uJ3QKKwkgKiBzdWNjZWVkIGhlcmUuIEp1c3Qg Z2l2ZSBhIG1lc3NhZ2Ugb24gU1RERVJSLgorCSAqLworCWlmIChzaWdhY3Rpb24oU0lHVVNSMSwg JmFjdCwgTlVMTCkgPCAwKQorCXsKKwkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qg c2V0IHNpZ25hbCBoYW5kbGVyIHRvIHR1cm4gb24gcHJvZ3Jlc3MgYmFyXG4iKSwKKwkJCQlwcm9n bmFtZTsKKwl9CisKKwkvKgorCSAqIElmZiBwcm9ncmVzcyBzdGF0dXMgaW5mb3JtYXRpb24gaXMg cmVxdWVzdGVkLCB3ZSBuZWVkIHRvIHNjYW4gdGhlCisJICogZGlyZWN0b3J5IHRyZWUocykgdHdp Y2UsIG9uY2UgdG8gZ2V0IHRoZSBpZGVhIGhvdyBtdWNoIGRhdGEgd2UgbmVlZAorCSAqIHRvIHNj YW4gYW5kIGZpbmFsbHkgdG8gZG8gdGhlIHJlYWwgbGVnd29yay4KKwkgKi8KKwl0b3RhbF9zaXpl ID0gc2Nhbl9kaXJlY3RvcnkoRGF0YURpciwgImdsb2JhbCIsIHRydWUpOworCXRvdGFsX3NpemUg Kz0gc2Nhbl9kaXJlY3RvcnkoRGF0YURpciwgImJhc2UiLCB0cnVlKTsKKwl0b3RhbF9zaXplICs9 IHNjYW5fZGlyZWN0b3J5KERhdGFEaXIsICJwZ190YmxzcGMiLCB0cnVlKTsKKworCS8qCisJICog UmVtZW1iZXIgc3RhcnQgdGltZS4gUmVxdWlyZWQgdG8gY2FsY3VsYXRlIHRoZSBjdXJyZW50IHNw ZWVkIGluCisJICogcmVwb3J0X3Byb2dyZXNzKCkKKwkgKi8KKwlzY2FuX3N0YXJ0ZWQgPSB0aW1l KE5VTEwpOworCiAJLyogU2NhbiBhbGwgZmlsZXMgKi8KLQlzY2FuX2RpcmVjdG9yeShEYXRhRGly LCAiZ2xvYmFsIik7Ci0Jc2Nhbl9kaXJlY3RvcnkoRGF0YURpciwgImJhc2UiKTsKLQlzY2FuX2Rp cmVjdG9yeShEYXRhRGlyLCAicGdfdGJsc3BjIik7CisJc2Nhbl9kaXJlY3RvcnkoRGF0YURpciwg Imdsb2JhbCIsIGZhbHNlKTsKKwlzY2FuX2RpcmVjdG9yeShEYXRhRGlyLCAiYmFzZSIsIGZhbHNl KTsKKwlzY2FuX2RpcmVjdG9yeShEYXRhRGlyLCAicGdfdGJsc3BjIiwgZmFsc2UpOworCisJLyoK KwkgKiBEb25lLiBNb3ZlIHRvIG5leHQgbGluZSBpbiBjYXNlIHByb2dyZXNzIGluZm9ybWF0aW9u IHdhcyBzaG93bi4KKwkgKiBPdGhlcndpc2Ugd2UgY2x1dHRlciB0aGUgc3VtbWFyeSBvdXRwdXQu CisJICovCisJaWYgKHNob3dfcHJvZ3Jlc3MpCisJeworCQlyZXBvcnRfcHJvZ3Jlc3ModHJ1ZSk7 CisJCWlmIChpc2F0dHkoZmlsZW5vKHN0ZGVycikpKQorCQkJZnByaW50ZihzdGRlcnIsICJcbiIp OworCX0KIAogCXByaW50ZihfKCJDaGVja3N1bSBzY2FuIGNvbXBsZXRlZFxuIikpOwogCXByaW50 ZihfKCJEYXRhIGNoZWNrc3VtIHZlcnNpb246ICVkXG4iKSwgQ29udHJvbEZpbGUtPmRhdGFfY2hl Y2tzdW1fdmVyc2lvbik7Cg== --=-Xd2DyRmx7ED8z82vSBbB--