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 1vT60x-00CkjN-21 for pgsql-hackers@arkaria.postgresql.org; Tue, 09 Dec 2025 22:16:59 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vT60w-007dfg-0X for pgsql-hackers@arkaria.postgresql.org; Tue, 09 Dec 2025 22:16:58 +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 1vT60v-007dfY-1w for pgsql-hackers@lists.postgresql.org; Tue, 09 Dec 2025 22:16:58 +0000 Received: from mail-lf1-x130.google.com ([2a00:1450:4864:20::130]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vT60u-0040Rx-07 for pgsql-hackers@lists.postgresql.org; Tue, 09 Dec 2025 22:16:57 +0000 Received: by mail-lf1-x130.google.com with SMTP id 2adb3069b0e04-594330147efso6769735e87.2 for ; Tue, 09 Dec 2025 14:16:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1765318614; x=1765923414; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=MzyXNaqdpu35v6w4GrGGOAlVAf12kKH3nlNM9kM+CH8=; b=Vs3L+bn+poECMdAY+FLMVYVffh3G34SdbxuupaSnMewLulQs//ONNW2HixVTzdeeo1 F6h98RYxxitYtCjZ7QqLPNusCaIO2stEtJyBr+U8k3Qr2EHk9KSlOtFpjmOzH3wKJbjx XJo+tlWdMPs7cuLGjkIqX1fDziBQbqxlY1IGKUnoBkF826oR0sltNOfQ8TeiXN7ENXzT 0fXxmFuQjPIowjTLFvUZKw1bsWqodJI7knLEunFBZGsPhTOICc/0gvH7sHSM3aDKxdcj NJgygEUsfR1S7P6rIVK/VyRCviGqVgMl5C6ogfUZ+cZRwku0Y6O8wS/0BwyarhzwZw7i tfJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765318614; x=1765923414; h=cc:to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=MzyXNaqdpu35v6w4GrGGOAlVAf12kKH3nlNM9kM+CH8=; b=Y9AtEZ+g3fWNxztIS7B3fQGR+a9QXLZUuyDNFYP2RlJ+nls3pR6PVgAzwoOEeuZf8m I39XumnHb2HOfsYmSlamIgucTnnf60hQZZmZF+aOBFuZkNflqQ5GE5UpmQXjen9ucqnq DfNODXceJdkny8rIQpKm48NXWFWMu2kpfEsDcam+xbYBMKCeOB/l6580uEnQSvcww8ri Zw46VuwhWAu7MnY5YhMutDAW+CIMXgqPm+RlQmNMG14xZCsNrOvL9mCpJK3oVU+DqIC+ Y4EJ0Ucczyvwb3OQewJwP9/02mpd+y+6C5aiPfHNezCm4eD2JAuNVMCRSi6f3JMgC5PZ d1eg== X-Gm-Message-State: AOJu0YzW6y+/5jalaxP6LZ4RiiS8lxb7t+/GlvLXx1ofWcg6dD1PunR3 NjQQPJ82n1XzZc7Z6aTK8paazHiRqhAnc7YUEqnIM6/qocbqTuYYfvXryB68YCVPboIV0g5GkD9 DQf4halp8++4C0fyVCXR+syZy3TEic/P6uyQv X-Gm-Gg: ASbGncvUAguw/DsiojRGWvrJE4c8e0DeHAqJ9DcuWqJutvDyFXmwz8jsfS8vJqc+7My tSwRSZMvrjh/v6m2cR0STdBQr2sZo21Xm9aUt+Aa40drNQhBo8351DWrPbj4OjMbzsBp8oqAjDG SGbVbVjUiuAKC/XKO/CBf46NAd4hngZ5IQBIJVNhFYJHb8Gzp/1vCqZdLDbL9zB+s2ESv5kwT/i PNH2N24XwntGaNu6w0a+WP1AM21Rh+on7kjlrxKgGhw1tw7CJ1OtE2obTyUBUta8j0/ X-Google-Smtp-Source: AGHT+IEhXA2wjJltd8d2Mf5tPCq2gr+NKKPBo7+K/h71RgcKEPK9YCBfrskzwPlm0IMrvl448iRzy+IqnZgiOrUEysM= X-Received: by 2002:a05:6512:2c04:b0:595:8fee:fd8c with SMTP id 2adb3069b0e04-598ee4db073mr162346e87.8.1765318613473; Tue, 09 Dec 2025 14:16:53 -0800 (PST) MIME-Version: 1.0 From: Gyan Sreejith Date: Tue, 9 Dec 2025 17:16:40 -0500 X-Gm-Features: AQt7F2qJKmnVY0i6YJ3ho95bU1Qf8qS6q0R5l8GhMLvENYDr6_CPPQxPzcNxJcg Message-ID: Subject: [Proposal] Adding Log File Capability to pg_createsubscriber To: pgsql-hackers@lists.postgresql.org Cc: vignesh C Content-Type: multipart/mixed; boundary="000000000000df3cb006458c44b2" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000df3cb006458c44b2 Content-Type: multipart/alternative; boundary="000000000000df3cb006458c44b0" --000000000000df3cb006458c44b0 Content-Type: text/plain; charset="UTF-8" Background: - pg_createsubscriber currently outputs all messages (internal validation messages, standby server start/stop logs, recovery progress output, and output from utilities) directly to the console. As a result, users may find debugging and handling errors difficult. It would be more convenient if messages were separated and stored in different log files. There is already a similar implementation in pg_upgrade. Proposed Solution: - Based on issues mentioned previously, I would like to propose a new argument -l which can be specified for pg_createsubscriber. Using it would create the following log files: - logdir/pg_createsubscriber_server.log which captures all logs related to starting and stopping the standby server. - logdir/pg_createsubscriber_resetwal.log which captures the output of pg_resetwal - logdir/pg_createsubscriber_internal.log which captures internal diagnostic output from pg_createsubscriber (validations, checks, etc.) Overall, this proposed solution could make the pg_createsubscriber command output messages more organized. The command would be easier to use as users will only have to read individual log files rather than parse through lots of possibly irrelevant output messages. I have attached the patch for this change. Special thanks to Vignesh C. for his offlist guidance on this project. Regards, Gyan Sreejith --000000000000df3cb006458c44b0 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

Background:

  • pg_createsubscriber currently outputs all messa= ges (internal validation messages, standby server start/stop logs, recovery= progress output, and output from utilities) directly to the console. As a = result, users may find debugging and handling errors difficult. It would be= more convenient if messages were separated and stored in different log fil= es. There is already a similar implementation in pg_upgrade.<= /p>

P= roposed Solution:

  • Based on issues mentioned previously, I would= like to propose a new argument -l <logdir> which can be specified fo= r pg_createsubscriber. Using it would create the following log files:

    • logdir/pg_createsubscriber_server.log which captures all logs = related to starting and stopping the standby server.

    • =
    • logdir/pg_createsubscriber_resetwal.log which captu= res the output of pg_resetwal

    • logdir/pg_createsubscriber_internal.log which captures internal diagno= stic output from pg_createsubscriber (validations, checks, etc.)

Overall, this proposed solution could make the pg_createsubscriber = command output messages more organized. The command would be easier to use = as users will only have to read individual log files rather than parse thro= ugh lots of possibly irrelevant output messages. I have attached the patch = for this change.=C2=A0

Special thanks to Vignesh C. = for his offlist guidance on this project.=C2=A0


=

Regards, Gyan Sreejith



--000000000000df3cb006458c44b0-- --000000000000df3cb006458c44b2 Content-Type: application/octet-stream; name="diff.patch" Content-Disposition: attachment; filename="diff.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_miz519070 ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19jcmVhdGVzdWJzY3JpYmVyLmMg Yi9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdfY3JlYXRlc3Vic2NyaWJlci5jCmluZGV4IGY1OWMy OTNkODc1Li5lOGQ3YjA3MzBlOSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3Bn X2NyZWF0ZXN1YnNjcmliZXIuYworKysgYi9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdfY3JlYXRl c3Vic2NyaWJlci5jCkBAIC0zNiw2ICszNiw3IEBACiBzdHJ1Y3QgQ3JlYXRlU3Vic2NyaWJlck9w dGlvbnMKIHsKIAljaGFyCSAgICpjb25maWdfZmlsZTsJLyogY29uZmlndXJhdGlvbiBmaWxlICov CisJY2hhcgkgICAqbG9nX2RpcjsJCS8qIGxvZyBkaXJlY3RvcnkgKi8KIAljaGFyCSAgICpwdWJf Y29ubmluZm9fc3RyOwkvKiBwdWJsaXNoZXIgY29ubmVjdGlvbiBzdHJpbmcgKi8KIAljaGFyCSAg ICpzb2NrZXRfZGlyOwkJLyogZGlyZWN0b3J5IGZvciBVbml4LWRvbWFpbiBzb2NrZXQsIGlmIGFu eSAqLwogCWNoYXIJICAgKnN1Yl9wb3J0OwkJLyogc3Vic2NyaWJlciBwb3J0IG51bWJlciAqLwpA QCAtMTUwLDYgKzE1MSw4IEBAIHN0YXRpYyBwZ19wcm5nX3N0YXRlIHBybmdfc3RhdGU7CiBzdGF0 aWMgY2hhciAqcGdfY3RsX3BhdGggPSBOVUxMOwogc3RhdGljIGNoYXIgKnBnX3Jlc2V0d2FsX3Bh dGggPSBOVUxMOwogCitzdGF0aWMgY2hhciAqaW50ZXJuYWxfbG9nX2ZpbGUgPSBOVUxMOworCiAv KiBzdGFuZGJ5IC8gc3Vic2NyaWJlciBkYXRhIGRpcmVjdG9yeSAqLwogc3RhdGljIGNoYXIgKnN1 YnNjcmliZXJfZGlyID0gTlVMTDsKIApAQCAtMjUxLDYgKzI1NCw3IEBAIHVzYWdlKHZvaWQpCiAJ CQkgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhYmFzZXMgYW5kIGRhdGFi YXNlcyB0aGF0IGRvbid0IGFsbG93IGNvbm5lY3Rpb25zXG4iKSk7CiAJcHJpbnRmKF8oIiAgLWQs IC0tZGF0YWJhc2U9REJOQU1FICAgICAgICAgICBkYXRhYmFzZSBpbiB3aGljaCB0byBjcmVhdGUg YSBzdWJzY3JpcHRpb25cbiIpKTsKIAlwcmludGYoXygiICAtRCwgLS1wZ2RhdGE9REFUQURJUiAg ICAgICAgICAgIGxvY2F0aW9uIGZvciB0aGUgc3Vic2NyaWJlciBkYXRhIGRpcmVjdG9yeVxuIikp OworCXByaW50ZihfKCIgIC1sLCAtLWxvZ2Rpcj1MT0dESVIgICAgICAgICAgICAgbG9jYXRpb24g Zm9yIHRoZSBuZXcgbG9nIGRpcmVjdG9yeVxuIikpOwogCXByaW50ZihfKCIgIC1uLCAtLWRyeS1y dW4gICAgICAgICAgICAgICAgICAgZHJ5IHJ1biwganVzdCBzaG93IHdoYXQgd291bGQgYmUgZG9u ZVxuIikpOwogCXByaW50ZihfKCIgIC1wLCAtLXN1YnNjcmliZXItcG9ydD1QT1JUICAgICAgc3Vi c2NyaWJlciBwb3J0IG51bWJlciAoZGVmYXVsdCAlcylcbiIpLCBERUZBVUxUX1NVQl9QT1JUKTsK IAlwcmludGYoXygiICAtUCwgLS1wdWJsaXNoZXItc2VydmVyPUNPTk5TVFIgIHB1Ymxpc2hlciBj b25uZWN0aW9uIHN0cmluZ1xuIikpOwpAQCAtNjcwLDYgKzY3NCw3IEBAIG1vZGlmeV9zdWJzY3Jp YmVyX3N5c2lkKGNvbnN0IHN0cnVjdCBDcmVhdGVTdWJzY3JpYmVyT3B0aW9ucyAqb3B0KQogCWJv b2wJCWNyY19vazsKIAlzdHJ1Y3QgdGltZXZhbCB0djsKIAorCWNoYXIJICAgKm91dF9maWxlOwog CWNoYXIJICAgKmNtZF9zdHI7CiAKIAlwZ19sb2dfaW5mbygibW9kaWZ5aW5nIHN5c3RlbSBpZGVu dGlmaWVyIG9mIHN1YnNjcmliZXIiKTsKQEAgLTcwMyw4ICs3MDgsMTQgQEAgbW9kaWZ5X3N1YnNj cmliZXJfc3lzaWQoY29uc3Qgc3RydWN0IENyZWF0ZVN1YnNjcmliZXJPcHRpb25zICpvcHQpCiAJ ZWxzZQogCQlwZ19sb2dfaW5mbygicnVubmluZyBwZ19yZXNldHdhbCBvbiB0aGUgc3Vic2NyaWJl ciIpOwogCisKKwlpZiAob3B0LT5sb2dfZGlyICE9IE5VTEwpCisJCW91dF9maWxlID0gcHNwcmlu dGYoIiVzL3BnX2NyZWF0ZXN1YnNjcmliZXJfcmVzZXR3YWwubG9nIiwgb3B0LT5sb2dfZGlyKTsK KwllbHNlCisJCW91dF9maWxlID0gREVWTlVMTDsKKwogCWNtZF9zdHIgPSBwc3ByaW50ZigiXCIl c1wiIC1EIFwiJXNcIiA+IFwiJXNcIiIsIHBnX3Jlc2V0d2FsX3BhdGgsCi0JCQkJCSAgIHN1YnNj cmliZXJfZGlyLCBERVZOVUxMKTsKKwkJCQkJICAgc3Vic2NyaWJlcl9kaXIsIG91dF9maWxlKTsK IAogCXBnX2xvZ19kZWJ1ZygicGdfcmVzZXR3YWwgY29tbWFuZCBpczogJXMiLCBjbWRfc3RyKTsK IApAQCAtODkzLDggKzkwNCwxOCBAQCBjaGVja19wdWJsaXNoZXIoY29uc3Qgc3RydWN0IExvZ2lj YWxSZXBJbmZvICpkYmluZm8pCiAJaW50CQkJY3VyX3dhbHNlbmRlcnM7CiAJaW50CQkJbWF4X3By ZXBhcmVkX3RyYW5zYWN0aW9uczsKIAljaGFyCSAgICptYXhfc2xvdF93YWxfa2VlcF9zaXplOwor CUZJTEUJICAgKmZwOwogCi0JcGdfbG9nX2luZm8oImNoZWNraW5nIHNldHRpbmdzIG9uIHB1Ymxp c2hlciIpOworCWlmIChpbnRlcm5hbF9sb2dfZmlsZSAhPSBOVUxMKQorCXsKKwkJaWYgKChmcCA9 IGZvcGVuKGludGVybmFsX2xvZ19maWxlLCAiYSIpKSA9PSBOVUxMKQorCQkJcGdfZmF0YWwoImNv dWxkIG5vdCB3cml0ZSB0byBsb2cgZmlsZSBcIiVzXCI6ICVtIiwgaW50ZXJuYWxfbG9nX2ZpbGUp OworCisJCWZwcmludGYoZnAsICJjaGVja2luZyBzZXR0aW5ncyBvbiBwdWJsaXNoZXJcbiIpOwor CQlmY2xvc2UoZnApOworCX0KKwllbHNlCisJCXBnX2xvZ19pbmZvKCJjaGVja2luZyBzZXR0aW5n cyBvbiBwdWJsaXNoZXIiKTsKIAogCWNvbm4gPSBjb25uZWN0X2RhdGFiYXNlKGRiaW5mb1swXS5w dWJjb25uaW5mbywgdHJ1ZSk7CiAKQEAgLTEwMjgsOCArMTA0OSwxOCBAQCBjaGVja19zdWJzY3Jp YmVyKGNvbnN0IHN0cnVjdCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZvKQogCWludAkJCW1heF9scndv cmtlcnM7CiAJaW50CQkJbWF4X3JlcG9yaWdpbnM7CiAJaW50CQkJbWF4X3dwcm9jczsKKwlGSUxF CSAgICpmcDsKIAotCXBnX2xvZ19pbmZvKCJjaGVja2luZyBzZXR0aW5ncyBvbiBzdWJzY3JpYmVy Iik7CisJaWYgKGludGVybmFsX2xvZ19maWxlICE9IE5VTEwpCisJeworCQlpZiAoKGZwID0gZm9w ZW4oaW50ZXJuYWxfbG9nX2ZpbGUsICJhIikpID09IE5VTEwpCisJCQlwZ19mYXRhbCgiY291bGQg bm90IHdyaXRlIHRvIGxvZyBmaWxlIFwiJXNcIjogJW0iLCBpbnRlcm5hbF9sb2dfZmlsZSk7CisK KwkJZnByaW50ZihmcCwgImNoZWNraW5nIHNldHRpbmdzIG9uIHN1YnNjcmliZXJcbiIpOworCQlm Y2xvc2UoZnApOworCX0KKwllbHNlCisJCXBnX2xvZ19pbmZvKCJjaGVja2luZyBzZXR0aW5ncyBv biBzdWJzY3JpYmVyIik7CiAKIAljb25uID0gY29ubmVjdF9kYXRhYmFzZShkYmluZm9bMF0uc3Vi Y29ubmluZm8sIHRydWUpOwogCkBAIC0xNTQ4LDYgKzE1NzksMTEgQEAgc3RhcnRfc3RhbmRieV9z ZXJ2ZXIoY29uc3Qgc3RydWN0IENyZWF0ZVN1YnNjcmliZXJPcHRpb25zICpvcHQsIGJvb2wgcmVz dHJpY3RlZF8KIAlpZiAocmVzdHJpY3RfbG9naWNhbF93b3JrZXIpCiAJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKHBnX2N0bF9jbWQsICIgLW8gXCItYyBtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3Jr ZXJzPTBcIiIpOwogCisJaWYgKG9wdC0+bG9nX2RpciAhPSBOVUxMKQorCXsKKwkJYXBwZW5kUFFF eHBCdWZmZXIocGdfY3RsX2NtZCwgIiAtbCAlcy9wZ19jcmVhdGVzdWJzY3JpYmVyX3NlcnZlci5s b2ciLCBvcHQtPmxvZ19kaXIpOworCX0KKwogCXBnX2xvZ19kZWJ1ZygicGdfY3RsIGNvbW1hbmQg aXM6ICVzIiwgcGdfY3RsX2NtZC0+ZGF0YSk7CiAJcmMgPSBzeXN0ZW0ocGdfY3RsX2NtZC0+ZGF0 YSk7CiAJcGdfY3RsX3N0YXR1cyhwZ19jdGxfY21kLT5kYXRhLCByYyk7CkBAIC0yMDcxLDYgKzIx MDcsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJeyJhbGwiLCBub19hcmd1bWVu dCwgTlVMTCwgJ2EnfSwKIAkJeyJkYXRhYmFzZSIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAn ZCd9LAogCQl7InBnZGF0YSIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnRCd9LAorCQl7Imxv Z2RpciIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnbCd9LAogCQl7ImRyeS1ydW4iLCBub19h cmd1bWVudCwgTlVMTCwgJ24nfSwKIAkJeyJzdWJzY3JpYmVyLXBvcnQiLCByZXF1aXJlZF9hcmd1 bWVudCwgTlVMTCwgJ3AnfSwKIAkJeyJwdWJsaXNoZXItc2VydmVyIiwgcmVxdWlyZWRfYXJndW1l bnQsIE5VTEwsICdQJ30sCkBAIC0yMTI5LDYgKzIxNjYsNyBAQCBtYWluKGludCBhcmdjLCBjaGFy ICoqYXJndikKIAkvKiBEZWZhdWx0IHNldHRpbmdzICovCiAJc3Vic2NyaWJlcl9kaXIgPSBOVUxM OwogCW9wdC5jb25maWdfZmlsZSA9IE5VTEw7CisJb3B0LmxvZ19kaXIgPSBOVUxMOwogCW9wdC5w dWJfY29ubmluZm9fc3RyID0gTlVMTDsKIAlvcHQuc29ja2V0X2RpciA9IE5VTEw7CiAJb3B0LnN1 Yl9wb3J0ID0gREVGQVVMVF9TVUJfUE9SVDsKQEAgLTIxNTcsNyArMjE5NSw3IEBAIG1haW4oaW50 IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJZ2V0X3Jlc3RyaWN0ZWRfdG9rZW4oKTsKIAotCXdoaWxl ICgoYyA9IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsICJhZDpEOm5wOlA6czp0OlRVOnYiLAorCXdo aWxlICgoYyA9IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsICJhZDpEOmw6bnA6UDpzOnQ6VFU6diIs CiAJCQkJCQkJbG9uZ19vcHRpb25zLCAmb3B0aW9uX2luZGV4KSkgIT0gLTEpCiAJewogCQlzd2l0 Y2ggKGMpCkBAIC0yMTc4LDYgKzIyMTYsMjMgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp CiAJCQkJc3Vic2NyaWJlcl9kaXIgPSBwZ19zdHJkdXAob3B0YXJnKTsKIAkJCQljYW5vbmljYWxp emVfcGF0aChzdWJzY3JpYmVyX2Rpcik7CiAJCQkJYnJlYWs7CisJCQljYXNlICdsJzoKKwkJCQlv cHQubG9nX2RpciA9IHBnX3N0cmR1cChvcHRhcmcpOworCQkJCWNhbm9uaWNhbGl6ZV9wYXRoKG9w dC5sb2dfZGlyKTsKKworCQkJCWlmIChzdGF0KG9wdC5sb2dfZGlyLCAmc3RhdGJ1ZikgIT0gMCkK KwkJCQl7CisJCQkJCWlmIChlcnJubyA9PSBFTk9FTlQpCisJCQkJCXsKKwkJCQkJCW1rZGlyKG9w dC5sb2dfZGlyLCBTX0lSV1hVKTsKKwkJCQkJCXBnX2xvZ19pbmZvKCJsb2cgZGlyZWN0b3J5IGNy ZWF0ZWQiKTsKKwkJCQkJfQorCQkJCQllbHNlCisJCQkJCQlwZ19mYXRhbCgiY291bGQgbm90IGFj Y2VzcyBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIG9wdC5sb2dfZGlyKTsKKwkJCQl9CisKKwkJCQlp bnRlcm5hbF9sb2dfZmlsZSA9IHBzcHJpbnRmKCIlcy9wZ19jcmVhdGVzdWJzY3JpYmVyX2ludGVy bmFsLmxvZyIsIG9wdC5sb2dfZGlyKTsKKwkJCQlicmVhazsKIAkJCWNhc2UgJ24nOgogCQkJCWRy eV9ydW4gPSB0cnVlOwogCQkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19iYXNlYmFj a3VwL3QvMDQwX3BnX2NyZWF0ZXN1YnNjcmliZXIucGwgYi9zcmMvYmluL3BnX2Jhc2ViYWNrdXAv dC8wNDBfcGdfY3JlYXRlc3Vic2NyaWJlci5wbAppbmRleCAzZDYwODZkYzQ4OS4uZTFlZjQ5YTZj M2MgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC90LzA0MF9wZ19jcmVhdGVzdWJz Y3JpYmVyLnBsCisrKyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC90LzA0MF9wZ19jcmVhdGVzdWJz Y3JpYmVyLnBsCkBAIC0xMyw3ICsxMyw5IEBAIHByb2dyYW1faGVscF9vaygncGdfY3JlYXRlc3Vi c2NyaWJlcicpOwogcHJvZ3JhbV92ZXJzaW9uX29rKCdwZ19jcmVhdGVzdWJzY3JpYmVyJyk7CiBw cm9ncmFtX29wdGlvbnNfaGFuZGxpbmdfb2soJ3BnX2NyZWF0ZXN1YnNjcmliZXInKTsKIAotbXkg JGRhdGFkaXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGVtcGRpcjsKK215ICRkYXRhZGly ID0gUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRlbXBkaXIgKyAiL2RhdGFkaXIiOworbXkgJGxv Z2RpciA9IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0ZW1wZGlyICsgIi9sb2dkaXIiOworCiAK ICMgR2VuZXJhdGUgYSBkYXRhYmFzZSB3aXRoIGEgbmFtZSBtYWRlIG9mIGEgcmFuZ2Ugb2YgQVND SUkgY2hhcmFjdGVycy4KICMgRXh0cmFjdGVkIGZyb20gMDAyX3BnX3VwZ3JhZGUucGwuCkBAIC0x MjEsNiArMTIzLDcgQEAgY29tbWFuZF9mYWlscygKICMgU2V0IHVwIG5vZGUgUCBhcyBwcmltYXJ5 CiBteSAkbm9kZV9wID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdub2RlX3AnKTsK IG15ICRwY29ubnN0ciA9ICRub2RlX3AtPmNvbm5zdHI7CisKICRub2RlX3AtPmluaXQoYWxsb3dz X3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwogIyBEaXNhYmxlIGF1dG92YWN1dW0gdG8gYXZvaWQg Z2VuZXJhdGluZyB4aWQgZHVyaW5nIHN0YXRzIHVwZGF0ZSBhcyBvdGhlcndpc2UKICMgdGhlIG5l dyBYSUQgY291bGQgdGhlbiBiZSByZXBsaWNhdGVkIHRvIHN0YW5kYnkgYXQgc29tZSByYW5kb20g cG9pbnQgbWFraW5nCkBAIC01MzcsMTAgKzU0MCw0NCBAQCBteSAkc3lzaWRfcyA9ICRub2RlX3Mt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSdTRUxFQ1Qgc3lzdGVtX2lkZW50aWZpZXIgRlJPTSBw Z19jb250cm9sX3N5c3RlbSgpJyk7CiBpc250KCRzeXNpZF9wLCAkc3lzaWRfcywgJ3N5c3RlbSBp ZGVudGlmaWVyIHdhcyBjaGFuZ2VkJyk7CiAKKyRub2RlX3AtPmJhY2t1cCgnYmFja3VwXzMnKTsK KworIyBTZXQgdXAgbm9kZSBSIGFzIGEgbG9naWNhbCByZXBsaWNhIG5vZGUKK215ICRub2RlX3Ig PSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ25vZGVfcicpOworJG5vZGVfci0+aW5p dF9mcm9tX2JhY2t1cCgkbm9kZV9wLCAnYmFja3VwXzMnLCBoYXNfc3RyZWFtaW5nID0+IDEpOwor JG5vZGVfci0+YXBwZW5kX2NvbmYoCisJJ3Bvc3RncmVzcWwuY29uZicsIHFxWworcHJpbWFyeV9j b25uaW5mbyA9ICckcGNvbm5zdHIgZGJuYW1lPXBvc3RncmVzJworaG90X3N0YW5kYnlfZmVlZGJh Y2sgPSBvbgorXSk7Ciskbm9kZV9yLT5zZXRfc3RhbmRieV9tb2RlKCk7CisKKyMgVGVzdCB0aGF0 IC0tbG9nZGlyIHdvcmtzIGZvciBwZ19jcmVhdGVzdWJzY3JpYmVyCitjb21tYW5kX29rKAorCVsK KwkJJ3BnX2NyZWF0ZXN1YnNjcmliZXInLAorCQknLS12ZXJib3NlJywKKwkJJy0tcGdkYXRhJyA9 PiAkbm9kZV9yLT5kYXRhX2RpciwKKwkJJy0tcHVibGlzaGVyLXNlcnZlcicgPT4gJHBjb25uc3Ry LAorCQknLS1kYXRhYmFzZScgPT4gJ3Bvc3RncmVzJywKKwkJJy0tbG9nZGlyJyA9PiAkbG9nZGly LAorCV0sCisJJ2NoZWNrIGZvciBsb2cgZmlsZSBjcmVhdGlvbiBmb3IgcGdfY3JlYXRlU3Vic2Ny aWJlcicpOworCisjIENoZWNrIHRoYXQgYWxsIGxvZyBmaWxlcyB3ZXJlIGNyZWF0ZWQKK29rKCAt ZiAiJGxvZ2Rpci9wZ19jcmVhdGVzdWJzY3JpYmVyX3NlcnZlci5sb2ciLAorCSdwZ19jcmVhdGVz dWJzY3JpYmVyX3NlcnZlci5sb2cgZmlsZSB3YXMgY3JlYXRlZCcpOworb2soLWYgIiRsb2dkaXIv cGdfY3JlYXRlc3Vic2NyaWJlcl9yZXNldHdhbC5sb2ciLAorCSdwZ19yZXNldHdhbC5sb2cgZmls ZSB3YXMgY3JlYXRlZCcpOworb2soIC1mICIkbG9nZGlyL3BnX2NyZWF0ZXN1YnNjcmliZXJfaW50 ZXJuYWwubG9nIiwKKwkncGdfY3JlYXRlc3Vic3JpYmVyLmxvZyBmaWxlIHdhcyBjcmVhdGVkJyk7 CisKKwogIyBjbGVhbiB1cAogJG5vZGVfcC0+dGVhcmRvd25fbm9kZTsKICRub2RlX3MtPnRlYXJk b3duX25vZGU7CiAkbm9kZV90LT50ZWFyZG93bl9ub2RlOwogJG5vZGVfZi0+dGVhcmRvd25fbm9k ZTsKKyRub2RlX3ItPnRlYXJkb3duX25vZGU7CiAKIGRvbmVfdGVzdGluZygpOwo= --000000000000df3cb006458c44b2--