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 1vsQyn-000zKZ-2e for pgsql-hackers@arkaria.postgresql.org; Tue, 17 Feb 2026 19:43:30 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vsQyl-00Bksv-0z for pgsql-hackers@arkaria.postgresql.org; Tue, 17 Feb 2026 19:43:27 +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 1vsQyk-00BksV-2G for pgsql-hackers@lists.postgresql.org; Tue, 17 Feb 2026 19:43:27 +0000 Received: from mail-oo1-xc2c.google.com ([2607:f8b0:4864:20::c2c]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vsQyi-000000016bB-1TQv for pgsql-hackers@lists.postgresql.org; Tue, 17 Feb 2026 19:43:25 +0000 Received: by mail-oo1-xc2c.google.com with SMTP id 006d021491bc7-662efd1bdd4so104712eaf.0 for ; Tue, 17 Feb 2026 11:43:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1771357404; cv=none; d=google.com; s=arc-20240605; b=LCiXBXUAFUmzVI6q6uLL6QwEZVN1oUBjGZS9KmKJs4KBvDyXb6HfPH/AZ8DHRzede/ KfbL3JKVguoFzDiPOumT6Q7zyVguNa07bb0qrM55FVgMgzRCA1sW+p55tyKQrGeqlWL2 1uapSeENmI/3l3CCmwxfzqsxhl9QCMrGKJ34KWTfW2j3dRi9hzOZqRTY6J/SKeFaLE6c hAz/93ZAdkEnp3Ed2J2YW6idgXNEALSVrcbgX438cnVXXv36PZYYpgWJctImdlxskAnz PVHd82Kk4+BuWmxA8mfnvuq6C5mMtf2KVEkukFUqCot8m4LhBy0ZXM4CzOZoLj9jSyZj HSiQ== 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=YK7J/y0S69ud3HPuKPy+7ID+3gUjySQfLPMpqa6+UJ8=; fh=rh1oJU5AprhJ4aDJ9lSY4TArtpO6+5fJwKmNVvnDin0=; b=IYLt7yUZUcZFPCBJl4RQ68ipS5qMi/pnfkbu/Z9f58h9WKbeCaSi+RqItHkE4pywVJ cxiSuL8rtlOxBSvNEtjpws+TS0aFvWKlvsQL4lJx3bclUKezMF/aB0xJg01J6bfqBGNQ 8AQBFo6owJMypuJHZ1sA2jtTcZ1vtrgOnUhTBzaHlR85J1qDNk/MZ/V3pWNlsB8+nwQ/ e3L1HcjhFJUbvUQ1FFo8sMQPazrtp6S1BTXFlk8TStEmOerlHSlXioG2OPOPw7r0ew4I ddzpjBYFNIifAJOUSfkf/v4+m94BiXAqziRPdMAzWquDEceDGxmp7I5Cub/enpN2Z2yR JW8w==; 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=1771357404; x=1771962204; 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=YK7J/y0S69ud3HPuKPy+7ID+3gUjySQfLPMpqa6+UJ8=; b=T5wUJN8BY4mnKJyODwqtuhKrqC16iwadLSWZ6viMikkSAUbf2DP221MDiNhjfCdghU z6MOcOgp3ggO3EI+fwpCORoyLtTv5JdP4Rb9K1KarPH+b1Wa2XryJGuFfeuttdE6gcos QOEG8/MmTfMt7hYRxLGLPSLhK8AQ7zPBYbtYbc4laAQhmkvfed7cStfLa5HW4khxaq5v hs8XZj4ZxuwLUVHBP+kKBAbbw2eLW1D7S6wCB48BjDSrN3gmgfEXDwSz31SJyZT1OtyP nunPboJGfKw5KaBn6sQFATT2jiL9eChJMDfLGgwlBEeYNMRS8P88tyjCyezyKyP0T0mO Me9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771357404; x=1771962204; 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=YK7J/y0S69ud3HPuKPy+7ID+3gUjySQfLPMpqa6+UJ8=; b=Mt2PIAPtiB12IpOpeivRiJ+ps9OWEz+fAD1llPXVcNAqRFTrw8XTxDXBQfZklimDDO Vzuf+K4fof81xRkAcTv0o7A/quGsbAfzj1raHhxA5P6c5JJiQ2xFBWkXANMetkimUQTQ emHBGG9OJ4sVFYa9M3yS6ZI0dOUAvD50u8Qzh6+nAeSWSNe0ytin8qI317ZIlt6mA9i1 Bwv3nbeetUP6FH9LFkPQYJwLRtZJ8njl6oGSM71U4RRGG6wMFeS7/sP1z1ngs6g68hLp KZackjIp6FkivT8Slu+E1Fl71871v5dgNtbAa4iTEd/1xrLA686tmwGiAqNGz8k8q2GO 4Qaw== X-Forwarded-Encrypted: i=1; AJvYcCWBjxd4nwGDA5KZ4L9UPAAHvl+fNA3dLwxAz8uHuPJG7C0faj2XYKjCh1Knbg1tyEFpKIP+M84pqDVIjCNh@lists.postgresql.org X-Gm-Message-State: AOJu0YxcXBCkwiXCXkZu4RaI/guz7SZ9QexNIqZUnf6tCuYHYVEJ0hA7 k1kAD7QxzwOYLspF3cjtq83AJ3nFJ5/ONphWvlcN1GMMebBj9LnGggf1FjQjclH4RczWD5GxXzL C39AbeCzIkakjkgDvLWye9b/ENKrII5w= X-Gm-Gg: AZuq6aIJfILKB9kRwLxotl0ERQ9Z4BBGL2iTjkDuV+UmfV56Z8mBqMpjNpnjdRcHqPv rcpZ/veZU8Z1COb5tVkmsg57g4TUAAWAb+3GnYFlltYSbpCAJSA30Tg+9Y3q01o+43qDkWfOJ5D pTPGlpf989deJyuZrKv/GWAHbQKESv1QiUVo1HwKLr6s/iqG0KJL244daxz/wHv5IrSOQOpEvzs OudMATIzyENXue9gvRfmu1Xs9N1GnQs/LDsXbledcdeBvtTujji/RIPjL7uNvohlN4aD3vjQ+BG zv/mSaYPc964goHBMxkeeeBy3djued+7yvuZtPEjdaPOviSPjPxm X-Received: by 2002:a05:6820:2d04:b0:676:7a1d:2c54 with SMTP id 006d021491bc7-6782360ff6cmr5766204eaf.37.1771357404439; Tue, 17 Feb 2026 11:43:24 -0800 (PST) MIME-Version: 1.0 References: <21076.1748617331@localhost> <2724612.1748655287@sss.pgh.pa.us> <11894.1767966998@localhost> In-Reply-To: From: Greg Sabino Mullane Date: Tue, 17 Feb 2026 14:42:48 -0500 X-Gm-Features: AaiRm50EwkwIaQKaQ0mNgzzxLdBgBVq_q556ycCzpypckZNKelXXH-tmWWRU_1c Message-ID: Subject: Re: POC: Carefully exposing information without authentication To: Antonin Houska Cc: Tom Lane , "pgsql-hackers@lists.postgresql.org" Content-Type: multipart/mixed; boundary="000000000000dd306b064b0a48fa" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000dd306b064b0a48fa Content-Type: multipart/alternative; boundary="000000000000dd306a064b0a48f8" --000000000000dd306a064b0a48f8 Content-Type: text/plain; charset="UTF-8" Please find attached a rebased and lightly reworked version of this patch. The most significant change is the test file now uses IO::Socket::INET via $node->raw_connect. Also changed to allow case-insensitive calls, moved to a better docs group, moved the defines and typedefs up, and changed the exit to just a simple _exit() Cheers, Greg --000000000000dd306a064b0a48f8 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Please find attached a rebased and lightly reworked versio= n of this patch. The most significant change is the test file now uses IO::= Socket::INET via $node->raw_connect. Also changed to allow case-insensit= ive calls, moved to a better docs group, moved the defines and typedefs up,= and changed the exit to just a simple _exit()

Chee= rs,
Greg

--000000000000dd306a064b0a48f8-- --000000000000dd306b064b0a48fa Content-Type: application/octet-stream; name="0005-Allow-specific-information-to-be-output-directly-by-Postgres.patch" Content-Disposition: attachment; filename="0005-Allow-specific-information-to-be-output-directly-by-Postgres.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlr0f5k00 RnJvbSA0MzhkOTM1Mzg3YTliNThjODVjMmQ1NjZjYTE4YTFjYTYwOTEwODMyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIFNhYmlubyBNdWxsYW5lIDxncmVnQHR1cm5zdGVwLmNv bT4KRGF0ZTogVHVlLCAxNyBGZWIgMjAyNiAxNDozNTozMiAtMDUwMApTdWJqZWN0OiBbUEFUQ0hd IEFsbG93IHNwZWNpZmljIGluZm9ybWF0aW9uIHRvIGJlIG91dHB1dCBkaXJlY3RseSBieSBQb3N0 Z3Jlcy4KCi0tLQogc3JjL2JhY2tlbmQvdGNvcC9iYWNrZW5kX3N0YXJ0dXAuYyAgICAgICAgICAg IHwgMTg1ICsrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFy YW1ldGVycy5kYXQgICAgIHwgIDE5ICsrCiBzcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVz cWwuY29uZi5zYW1wbGUgfCAgIDYgKwogc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9wb3N0bWFzdGVy LmggICAgICAgICAgIHwgICAzICsKIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9taXNjL21lc29uLmJ1 aWxkICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfbWlzYy90LzAxMV9leHBv c2UucGwgICAgfCAxMjIgKysrKysrKysrKysrCiA2IGZpbGVzIGNoYW5nZWQsIDMzNiBpbnNlcnRp b25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvdC8w MTFfZXhwb3NlLnBsCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9iYWNrZW5kX3N0YXJ0 dXAuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvYmFja2VuZF9zdGFydHVwLmMKaW5kZXggYzUxNzExNTky N2MuLmU3Njk2ZDM0ZDU5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL2JhY2tlbmRfc3Rh cnR1cC5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvYmFja2VuZF9zdGFydHVwLmMKQEAgLTQ2LDYg KzQ2LDI5IEBACiBib29sCQlUcmFjZV9jb25uZWN0aW9uX25lZ290aWF0aW9uID0gZmFsc2U7CiB1 aW50MzIJCWxvZ19jb25uZWN0aW9ucyA9IDA7CiBjaGFyCSAgICpsb2dfY29ubmVjdGlvbnNfc3Ry aW5nID0gTlVMTDsKK2Jvb2wJCWV4cG9zZV9yZWNvdmVyeSA9IGZhbHNlOworYm9vbAkJZXhwb3Nl X3N5c2lkID0gZmFsc2U7Citib29sCQlleHBvc2VfdmVyc2lvbiA9IGZhbHNlOworCisjZGVmaW5l IEVYUE9TRV9NSU5fUVVFUlkgOQkJLyogU2hvcnRlc3QgcG9zc2libGUgbGluZTogIkdldCAvaW5m byIgKi8KKyNkZWZpbmUgRVhQT1NFX01BWF9RVUVSWSAxNgkJLyogTG9uZ2VzdCBwb3NzaWJsZSBH RVQgbGluZSAqLworCit0eXBlZGVmIGVudW0KK3sKKwlFWFBPU0VfTk9USElORywKKwlFWFBPU0Vf SEVBRF9SRVBMSUNBLAorCUVYUE9TRV9HRVRfQUxMLAorCUVYUE9TRV9HRVRfUkVQTElDQSwKKwlF WFBPU0VfR0VUX1NZU0lELAorCUVYUE9TRV9HRVRfVkVSU0lPTiwKK30JCQlFeHBvc2VSZXR1cm5U eXBlOworCit0eXBlZGVmIHN0cnVjdAoreworCWNvbnN0IGNoYXIgKmVuZHBvaW50OworCWNvbnN0 IGJvb2wgKnJlcXVpcmU7CisJRXhwb3NlUmV0dXJuVHlwZQl0eXBlOworfQkJCWVuZHBvaW50X2Fj dGlvbjsKIAogLyogT3RoZXIgZ2xvYmFscyAqLwogCkBAIC02NSw2ICs4OCw3IEBAIHN0YXRpYyB2 b2lkIFNlbmROZWdvdGlhdGVQcm90b2NvbFZlcnNpb24oTGlzdCAqdW5yZWNvZ25pemVkX3Byb3Rv Y29sX29wdGlvbnMpOwogc3RhdGljIHZvaWQgcHJvY2Vzc19zdGFydHVwX3BhY2tldF9kaWUoU0lH TkFMX0FSR1MpOwogc3RhdGljIHZvaWQgU3RhcnR1cFBhY2tldFRpbWVvdXRIYW5kbGVyKHZvaWQp Owogc3RhdGljIGJvb2wgdmFsaWRhdGVfbG9nX2Nvbm5lY3Rpb25zX29wdGlvbnMoTGlzdCAqZWxl bWxpc3QsIHVpbnQzMiAqZmxhZ3MpOworc3RhdGljIGJvb2wgRXhwb3NlSW5mb3JtYXRpb24ocGdz b2NrZXQgZmQpOwogCiAvKgogICogRW50cnkgcG9pbnQgZm9yIGEgbmV3IGJhY2tlbmQgcHJvY2Vz cy4KQEAgLTE0OCw2ICsxNzIsMTQgQEAgQmFja2VuZEluaXRpYWxpemUoQ2xpZW50U29ja2V0ICpj bGllbnRfc29jaywgQ0FDX3N0YXRlIGNhYykKIAlTdHJpbmdJbmZvRGF0YSBwc19kYXRhOwogCU1l bW9yeUNvbnRleHQgb2xkY29udGV4dDsKIAorCS8qCisJICogU2NhbiBmb3IgYSBzaW1wbGUgR0VU IC8gSEVBRCByZXF1ZXN0LiBJZiB0aGlzIGlzIGRldGVjdGVkIGFuZAorCSAqIGhhbmRsZWQsIHdl IGFyZSBkb25lIGFuZCBjYW4gaW1tZWRpYXRlbHkgZXhpdAorCSAqLworCWlmICgoZXhwb3NlX3Jl Y292ZXJ5IHx8IGV4cG9zZV9zeXNpZCB8fCBleHBvc2VfdmVyc2lvbikKKwkJJiYgRXhwb3NlSW5m b3JtYXRpb24oY2xpZW50X3NvY2stPnNvY2spKQorCQlfZXhpdCgwKTsgLyogU2FmZSB0byB1c2Ug ZXhpdDogbm8gc3RhdGUgb3IgcmVzb3VyY2VzIGNyZWF0ZWQgeWV0ICovCisKIAkvKiBUZWxsIGZk LmMgYWJvdXQgdGhlIGxvbmctbGl2ZWQgRkQgYXNzb2NpYXRlZCB3aXRoIHRoZSBjbGllbnRfc29j ayAqLwogCVJlc2VydmVFeHRlcm5hbEZEKCk7CiAKQEAgLTExMjUsMyArMTE1NywxNTYgQEAgYXNz aWduX2xvZ19jb25uZWN0aW9ucyhjb25zdCBjaGFyICpuZXd2YWwsIHZvaWQgKmV4dHJhKQogewog CWxvZ19jb25uZWN0aW9ucyA9ICooKGludCAqKSBleHRyYSk7CiB9CisKKy8qCisgKiBFeHBvc2VJ bmZvcm1hdGlvbgorICoKKyAqIEhhbmRsZSBlYXJseSBzb2NrZXQgcHJvYmUgYmVmb3JlIGZ1bGwg YmFja2VuZCBzdGFydHVwLgorICogUmVzcG9uZHMgdG8gc21hbGwgc2V0IG9mIHByZWRlZmluZWQg ZW5kcG9pbnRzIChlLmcuIEdFVCAvaW5mbykKKyAqCisgKiBSZXF1aXJlcyBhdCBsZWFzdCBvbmUg ImV4cG9zZV8iIEdVQyB0byBiZSB0cnVlLgorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiBhbnkgZW5k cG9pbnQgaXMgcmVjb2duaXplZC4KKyAqLworCitzdGF0aWMgYm9vbAorRXhwb3NlSW5mb3JtYXRp b24ocGdzb2NrZXQgZmQpCit7CisJc3RhdGljIGVuZHBvaW50X2FjdGlvbiBlbmRwb2ludF9hY3Rp b25zW10gPQorCXsKKwkJeworCQkJIkhFQUQgL3JlcGxpY2EiLCAmZXhwb3NlX3JlY292ZXJ5LCBF WFBPU0VfSEVBRF9SRVBMSUNBCisJCX0sCisJCXsKKwkJCSJHRVQgL3JlcGxpY2EiLCAmZXhwb3Nl X3JlY292ZXJ5LCBFWFBPU0VfR0VUX1JFUExJQ0EKKwkJfSwKKwkJeworCQkJIkdFVCAvc3lzaWQi LCAmZXhwb3NlX3N5c2lkLCBFWFBPU0VfR0VUX1NZU0lECisJCX0sCisJCXsKKwkJCSJHRVQgL3Zl cnNpb24iLCAmZXhwb3NlX3ZlcnNpb24sIEVYUE9TRV9HRVRfVkVSU0lPTgorCQl9LAorCQl7CisJ CQkiR0VUIC9pbmZvIiwgTlVMTCwgRVhQT1NFX0dFVF9BTEwKKwkJfQorCX07CisKKwlzc2l6ZV90 CQluOworCWNoYXIJCWJ1ZltFWFBPU0VfTUFYX1FVRVJZICsgMV07CisJRXhwb3NlUmV0dXJuVHlw ZQl0eXBlOworCisJQXNzZXJ0KGV4cG9zZV9yZWNvdmVyeSB8fCBleHBvc2Vfc3lzaWQgfHwgZXhw b3NlX3ZlcnNpb24pOworCisJZG8KKwl7CisJCW4gPSByZWN2KGZkLCBidWYsIEVYUE9TRV9NQVhf UVVFUlksIE1TR19QRUVLKTsKKwl9IHdoaWxlIChuIDwgMCAmJiBlcnJubyA9PSBFSU5UUik7CisK KwkvKgorCSAqIExlYXZlIGFzIHNvb24gYXMgcG9zc2libGUgaWYgbm8gY2hhbmNlIHdlIGFyZSBp bnRlcmVzdGVkLgorCSAqICh3ZSBhbHNvIGxlYXZlIG9uIHBhcnRpYWwgcmVhZHMgZnJvbSBzbG93 IGNsaWVudHMpCisJICogV2UgYWxzbyBzaW1wbHkgcmV0dXJuIGZhbHNlIGZvciBuID09IC0xCisJ ICovCisJaWYgKG4gPCBFWFBPU0VfTUlOX1FVRVJZKQorCQlyZXR1cm4gZmFsc2U7CisKKwlidWZb bl0gPSAnXDAnOworCisJdHlwZSA9IEVYUE9TRV9OT1RISU5HOworCWZvciAoaW50IGkgPSAwOyBp IDwgbGVuZ3Rob2YoZW5kcG9pbnRfYWN0aW9ucyk7IGkrKykKKwl7CisJCWlmICgKKwkJCXBnX3N0 cm5jYXNlY21wKGJ1ZiwgZW5kcG9pbnRfYWN0aW9uc1tpXS5lbmRwb2ludCwgc3RybGVuKGVuZHBv aW50X2FjdGlvbnNbaV0uZW5kcG9pbnQpKSA9PSAwCisJCQkmJgorCQkJKGVuZHBvaW50X2FjdGlv bnNbaV0ucmVxdWlyZSA9PSBOVUxMCisJCQkgfHwKKwkJCSAqKGVuZHBvaW50X2FjdGlvbnNbaV0u cmVxdWlyZSkKKwkJCSApKQorCQl7CisJCQl0eXBlID0gZW5kcG9pbnRfYWN0aW9uc1tpXS50eXBl OworCQkJYnJlYWs7CisJCX0KKwl9CisKKwlpZiAodHlwZSA9PSBFWFBPU0VfTk9USElORykKKwkJ cmV0dXJuIGZhbHNlOworCisJeworCQlzdGF0aWMgY29uc3QgY2hhciBodHRwX3ZlcnNpb25bXSA9 ICJIVFRQLzEuMSI7CisJCXN0YXRpYyBjb25zdCBjaGFyIGh0dHBfdHlwZVtdID0gIkNvbnRlbnQt VHlwZTogdGV4dC9wbGFpbiI7CisJCXN0YXRpYyBjb25zdCBjaGFyIGh0dHBfY29ubltdID0gIkNv bm5lY3Rpb246IGNsb3NlIjsKKwkJc3RhdGljIGNvbnN0IGNoYXIgaHR0cF9sZW5bXSA9ICJDb250 ZW50LUxlbmd0aCI7CisKKwkJU3RyaW5nSW5mb0RhdGEgbXNnOworCisJCWlmICh0eXBlID09IEVY UE9TRV9IRUFEX1JFUExJQ0EpCisJCXsKKwkJCS8qCisJCQkgKiBDYWxsZXIgb25seSBjYXJlcyBh Ym91dCB0aGUgSFRUUCByZXNwb25zZSBjb2RlLCBzbyBubyBjb250ZW50CisJCQkgKiBuZWVkZWQK KwkJCSAqLworCisJCQlpbml0U3RyaW5nSW5mb0V4dCgmbXNnLCA2NCk7CisKKwkJCWFwcGVuZFN0 cmluZ0luZm8oJm1zZywKKwkJCQkJCQkgIiVzICVzXHJcbiIKKwkJCQkJCQkgIiVzXHJcbiIKKwkJ CQkJCQkgIiVzXHJcblxyXG4iLAorCQkJCQkJCSBodHRwX3ZlcnNpb24sCisJCQkJCQkJIChSZWNv dmVyeUluUHJvZ3Jlc3MoKSA/ICIyMDAgT0siIDogIjUwMyBTZXJ2aWNlIFVuYXZhaWxhYmxlIiks CisJCQkJCQkJIGh0dHBfdHlwZSwKKwkJCQkJCQkgaHR0cF9jb25uCisJCQkJKTsKKwkJfQorCQll bHNlCisJCXsKKwkJCVN0cmluZ0luZm9EYXRhIGNvbnRlbnQ7CisKKwkJCWluaXRTdHJpbmdJbmZv RXh0KCZjb250ZW50LCA2NCk7CisKKwkJCWlmIChleHBvc2VfcmVjb3ZlcnkgJiYgKHR5cGUgPT0g RVhQT1NFX0dFVF9BTEwgfHwgdHlwZSA9PSBFWFBPU0VfR0VUX1JFUExJQ0EpKQorCQkJCWFwcGVu ZFN0cmluZ0luZm8oJmNvbnRlbnQsICIlcyVkXHJcbiIsCisJCQkJCQkJCSB0eXBlID09IEVYUE9T RV9HRVRfQUxMID8gIlJFQ09WRVJZOiAiIDogIiIsCisJCQkJCQkJCSBSZWNvdmVyeUluUHJvZ3Jl c3MoKSA/IDEgOiAwKTsKKwkJCWlmIChleHBvc2Vfc3lzaWQgJiYgKHR5cGUgPT0gRVhQT1NFX0dF VF9BTEwgfHwgdHlwZSA9PSBFWFBPU0VfR0VUX1NZU0lEKSkKKwkJCQlhcHBlbmRTdHJpbmdJbmZv KCZjb250ZW50LCAiJXMiICBVSU5UNjRfRk9STUFUICJcclxuIiwKKwkJCQkJCQkJIHR5cGUgPT0g RVhQT1NFX0dFVF9BTEwgPyAiU1lTSUQ6ICIgOiAiIiwKKwkJCQkJCQkJIEdldFN5c3RlbUlkZW50 aWZpZXIoKSk7CisJCQlpZiAoZXhwb3NlX3ZlcnNpb24gJiYgKHR5cGUgPT0gRVhQT1NFX0dFVF9B TEwgfHwgdHlwZSA9PSBFWFBPU0VfR0VUX1ZFUlNJT04pKQorCQkJCWFwcGVuZFN0cmluZ0luZm8o JmNvbnRlbnQsICIlcyVkXHJcbiIsCisJCQkJCQkJCSB0eXBlID09IEVYUE9TRV9HRVRfQUxMID8g IlZFUlNJT046ICIgOiAiIiwKKwkJCQkJCQkJIFBHX1ZFUlNJT05fTlVNKTsKKworCQkJaW5pdFN0 cmluZ0luZm9FeHQoJm1zZywgMjU2KTsKKworCQkJYXBwZW5kU3RyaW5nSW5mbygmbXNnLAorCQkJ CQkJCSAiJXMgMjAwIE9LXHJcbiIKKwkJCQkJCQkgIiVzXHJcbiIKKwkJCQkJCQkgIiVzOiAlZFxy XG4iCisJCQkJCQkJICIlc1xyXG5cclxuIgorCQkJCQkJCSAiJXMiLAorCQkJCQkJCSBodHRwX3Zl cnNpb24sCisJCQkJCQkJIGh0dHBfdHlwZSwKKwkJCQkJCQkgaHR0cF9sZW4sIGNvbnRlbnQubGVu LAorCQkJCQkJCSBodHRwX2Nvbm4sCisJCQkJCQkJIGNvbnRlbnQuZGF0YQorCQkJCSk7CisKKwkJ CXBmcmVlKGNvbnRlbnQuZGF0YSk7CisJCX0KKworCQlkbworCQl7CisJCQluID0gc2VuZChmZCwg bXNnLmRhdGEsIG1zZy5sZW4sIDApOworCQl9IHdoaWxlIChuIDwgMCAmJiBlcnJubyA9PSBFSU5U Uik7CisKKwkJcGZyZWUobXNnLmRhdGEpOworCisJCWlmIChuIDwgMCkKKwkJCWVsb2coREVCVUcx LCAiY291bGQgbm90IHNlbmQgdG8gY2xpZW50OiAlbSIpOworCisJCXJldHVybiB0cnVlOworCisJ fQorCit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJz LmRhdCBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0CmluZGV4IDI3 MWMwMzM5NTJlLi4zZTk5ZDlmNmI3YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlz Yy9ndWNfcGFyYW1ldGVycy5kYXQKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFy YW1ldGVycy5kYXQKQEAgLTEwMTAsNiArMTAxMCwyNSBAQAogICBib290X3ZhbCA9PiAnZmFsc2Un LAogfSwKIAoreyBuYW1lID0+ICdleHBvc2VfcmVjb3ZlcnknLCB0eXBlID0+ICdib29sJywgY29u dGV4dCA9PiAnUEdDX1NJR0hVUCcsIGdyb3VwID0+ICdDT05OX0FVVEhfQVVUSCcsCisgIHNob3J0 X2Rlc2MgPT4gJ0V4cG9zZXMgaWYgdGhlIHNlcnZlciBpcyBpbiByZWNvdmVyeSBtb2RlIHdpdGhv dXQgYSBsb2dpbi4nLAorICB2YXJpYWJsZSA9PiAnZXhwb3NlX3JlY292ZXJ5JywKKyAgYm9vdF92 YWwgPT4gJ2ZhbHNlJywKK30sCisKK3sgbmFtZSA9PiAnZXhwb3NlX3N5c2lkJywgdHlwZSA9PiAn Ym9vbCcsIGNvbnRleHQgPT4gJ1BHQ19TSUdIVVAnLCBncm91cCA9PiAnQ09OTl9BVVRIX0FVVEgn LAorICBzaG9ydF9kZXNjID0+ICdFeHBvc2VzIHRoZSBzeXN0ZW0gaWRlbnRpZmllciB3aXRob3V0 IGEgbG9naW4uJywKKyAgdmFyaWFibGUgPT4gJ2V4cG9zZV9zeXNpZCcsCisgIGJvb3RfdmFsID0+ ICdmYWxzZScsCit9LAorCit7IG5hbWUgPT4gJ2V4cG9zZV92ZXJzaW9uJywgdHlwZSA9PiAnYm9v bCcsIGNvbnRleHQgPT4gJ1BHQ19TSUdIVVAnLCBncm91cCA9PiAnQ09OTl9BVVRIX0FVVEgnLAor ICBzaG9ydF9kZXNjID0+ICdFeHBvc2VzIHRoZSBzZXJ2ZXIgdmVyc2lvbiB3aXRob3V0IGEgbG9n aW4uJywKKyAgdmFyaWFibGUgPT4gJ2V4cG9zZV92ZXJzaW9uJywKKyAgYm9vdF92YWwgPT4gJ2Zh bHNlJywKK30sCisKKwogeyBuYW1lID0+ICdleHRlbnNpb25fY29udHJvbF9wYXRoJywgdHlwZSA9 PiAnc3RyaW5nJywgY29udGV4dCA9PiAnUEdDX1NVU0VUJywgZ3JvdXAgPT4gJ0NMSUVOVF9DT05O X09USEVSJywKICAgc2hvcnRfZGVzYyA9PiAnU2V0cyB0aGUgcGF0aCBmb3IgZXh0ZW5zaW9uIGNv bnRyb2wgZmlsZXMuJywKICAgbG9uZ19kZXNjID0+ICdUaGUgcmVtYWluaW5nIGV4dGVuc2lvbiBz Y3JpcHQgYW5kIHNlY29uZGFyeSBjb250cm9sIGZpbGVzIGFyZSB0aGVuIGxvYWRlZCBmcm9tIHRo ZSBzYW1lIGRpcmVjdG9yeSB3aGVyZSB0aGUgcHJpbWFyeSBjb250cm9sIGZpbGUgd2FzIGZvdW5k LicsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5z YW1wbGUgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKaW5k ZXggZjkzOGNjNjVhM2EuLjc2YjY0MGU0ODc4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlz Yy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCkBAIC05MSw2ICs5MSwxMiBAQAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZGlzY29ubmVjdGlvbiB3aGlsZSBydW5uaW5n IHF1ZXJpZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAwIGZv ciBuZXZlcgogCisjIC0gRXhwb3NlIGluZm9ybWF0aW9uIC0KKworI2V4cG9zZV9yZWNvdmVyeSA9 IG9mZgorI2V4cG9zZV9zeXNpZCA9IG9mZgorI2V4cG9zZV92ZXJzaW9uID0gb2ZmCisKICMgLSBB dXRoZW50aWNhdGlvbiAtCiAKICNhdXRoZW50aWNhdGlvbl90aW1lb3V0ID0gMW1pbiAgICAgICAg ICAjIDFzLTYwMHMKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rl ci5oIGIvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmgKaW5kZXggZDZhYjllZTJk OTYuLmIwNDIzMzY3MjhmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL3Bvc3Rt YXN0ZXIuaAorKysgYi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuaApAQCAtNzAs NiArNzAsOSBAQCBleHRlcm4gUEdETExJTVBPUlQgYm9vbCByZXN0YXJ0X2FmdGVyX2NyYXNoOwog ZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgcmVtb3ZlX3RlbXBfZmlsZXNfYWZ0ZXJfY3Jhc2g7CiBl eHRlcm4gUEdETExJTVBPUlQgYm9vbCBzZW5kX2Fib3J0X2Zvcl9jcmFzaDsKIGV4dGVybiBQR0RM TElNUE9SVCBib29sIHNlbmRfYWJvcnRfZm9yX2tpbGw7CitleHRlcm4gUEdETExJTVBPUlQgYm9v bCBleHBvc2VfcmVjb3Zlcnk7CitleHRlcm4gUEdETExJTVBPUlQgYm9vbCBleHBvc2Vfc3lzaWQ7 CitleHRlcm4gUEdETExJTVBPUlQgYm9vbCBleHBvc2VfdmVyc2lvbjsKIAogI2lmZGVmIFdJTjMy CiBleHRlcm4gUEdETExJTVBPUlQgSEFORExFIFBvc3RtYXN0ZXJIYW5kbGU7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfbWlzYy9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9taXNjL21lc29uLmJ1aWxkCmluZGV4IDZlOGRiMTYyMWE3Li5jNDBhMDQ1NTcwOCAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvbWVzb24uYnVpbGQKKysrIGIv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvbWVzb24uYnVpbGQKQEAgLTE5LDYgKzE5LDcgQEAg dGVzdHMgKz0gewogICAgICAgJ3QvMDA4X3JlcGxzbG90X3NpbmdsZV91c2VyLnBsJywKICAgICAg ICd0LzAwOV9sb2dfdGVtcF9maWxlcy5wbCcsCiAgICAgICAndC8wMTBfaW5kZXhfY29uY3VycmVu dGx5X3Vwc2VydC5wbCcsCisgICAgICAndC8wMTFfZXhwb3NlLnBsJywKICAgICBdLAogICAgICMg VGhlIGluamVjdGlvbiBwb2ludHMgYXJlIGNsdXN0ZXItd2lkZSwgc28gZGlzYWJsZSBpbnN0YWxs Y2hlY2sKICAgICAncnVubmluZ2NoZWNrJzogZmFsc2UsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9t b2R1bGVzL3Rlc3RfbWlzYy90LzAxMV9leHBvc2UucGwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf bWlzYy90LzAxMV9leHBvc2UucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjM0OTZlM2FlMjgzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X21pc2MvdC8wMTFfZXhwb3NlLnBsCkBAIC0wLDAgKzEsMTIyIEBACisjIENvcHlyaWdodCAoYykg MjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBUZXN0IGdhdGhl cmluZyBpbmZvcm1hdGlvbiBiZWZvcmUgYXV0aGVudGljYXRpb24gdmlhIGV4cG9zZV8qIHZhcmlh YmxlcworCisjIEZvcmNlIHVzZSBvZiBUQ1AvSVAgLSBjYWxsIGJlZm9yZSB0aGUgJ3VzZScKK0lO SVR7ICRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dXNlX3VuaXhfc29ja2V0cyA9IDA7IH0KKwor dXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy OwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKK215ICRu b2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdub2RlMScpOworCisjIFNldCBh cyBsb2dpY2FsIGhlcmUgc28gd2UgY2FuIHJlc3RhcnQgaXQgYXMgYSByZXBsaWNhIGxhdGVyCisk bm9kZS0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7Ciskbm9kZS0+c3RhcnQ7 CisKK215ICRzZXJ2ZXJfdmVyc2lvbiA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ3No b3cgc2VydmVyX3ZlcnNpb25fbnVtJyk7CitteSAkYmluZGlyID0gJG5vZGUtPmNvbmZpZ19kYXRh KCctLWJpbmRpcicpOworbXkgJGRhdGFkaXIgPSAkbm9kZS0+ZGF0YV9kaXI7CitteSAkY2RhdGEg PSBxeHskYmluZGlyL3BnX2NvbnRyb2xkYXRhIC1EICRkYXRhZGlyIDI+JjF9OworbXkgKCRzeXNp ZCkgPSAkY2RhdGEgPX4gL0RhdGFiYXNlIHN5c3RlbSBpZGVudGlmaWVyOlxzKyhcZCspLzsKK215 ICRyZWNlaXZlX2xlbmd0aCA9IDIwMDsKKworbXkgKCRzb2NrZXQsICRyZXNwb25zZSwgJHRlc3Qp OworCitzdWIgY2FsbF9zb2NrZXQgeworCW15ICRzdHJpbmcgPSBzaGlmdDsKKwkkc29ja2V0LT5j bG9zZSgpIGlmIGRlZmluZWQgJHNvY2tldDsKKwkkc29ja2V0ID0gJG5vZGUtPnJhd19jb25uZWN0 KCk7CisJJHNvY2tldC0+c2VuZCgkc3RyaW5nKTsKKwkkcmVzcG9uc2UgPSAnJzsKKwlzZWxlY3Qo dW5kZWYsIHVuZGVmLCB1bmRlZiwgMC4xKTsKKwkkc29ja2V0LT5yZWN2KCRyZXNwb25zZSwgJHJl Y2VpdmVfbGVuZ3RoKTsKKwlyZXR1cm47Cit9CisKKyR0ZXN0ID0gJ0dFVCAvaW5mbyByZXR1cm5z IG5vdGhpbmcgd2hlbiBub3RoaW5nIGlzIGxpc3RlbmluZyc7CitjYWxsX3NvY2tldCgnR0VUIC9p bmZvJyk7CitpcyAoJHJlc3BvbnNlLCAnJywgJHRlc3QpOworCiskdGVzdCA9ICdIRUFEIC9yZXBs aWNhIHJldHVybnMgbm90aGluZyB3aGVuIG5vdGhpbmcgaXMgbGlzdGVuaW5nJzsKK2NhbGxfc29j a2V0KCdIRUFEIC9yZXBsaWNhJyk7CitpcyAoJHJlc3BvbnNlLCAnJywgJHRlc3QpOworCiskbm9k ZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICdleHBvc2VfcmVjb3Zlcnk9b24nKTsK KyRub2RlLT5yZWxvYWQoKTsKKworJHRlc3QgPSAnR0VUIC9yZXBsaWNhIHJldHVybnMgSFRUUCBj b2RlIDIwMCB3aGVuIGV4cG9zZV9yZWNvdmVyeSBpcyB0cnVlIChwcmltYXJ5KSc7CitjYWxsX3Nv Y2tldCgnR0VUIC9yZXBsaWNhJyk7CitsaWtlICgkcmVzcG9uc2UsIHFye15IVFRQLzEuMSAyMDAg fSwgJHRlc3QpOworCiskdGVzdCA9ICdHRVQgL3JlcGxpY2EgcmV0dXJucyAiMCIgd2hlbiBleHBv c2VfcmVjb3ZlcnkgaXMgdHJ1ZSAocHJpbWFyeSknOworbGlrZSAoJHJlc3BvbnNlLCBxcntcclxu MFxyXG59LCAkdGVzdCk7CisKKyR0ZXN0ID0gJ0hFQUQgL3JlcGxpY2EgcmV0dXJucyBIVFRQIGNv ZGUgNTAzIHdoZW4gZXhwb3NlX3JlY292ZXJ5IGlzIHRydWUgKHByaW1hcnkpJzsKK2NhbGxfc29j a2V0KCdIRUFEIC9yZXBsaWNhJyk7CitsaWtlICgkcmVzcG9uc2UsIHFye15IVFRQLzEuMSA1MDMg fSwgJHRlc3QpOworCiskdGVzdCA9ICdHRVQgL2luZm8gcmV0dXJucyAiUkVDT1ZFUlk6IDAiIHdo ZW4gZXhwb3NlX3JlY292ZXJ5IGlzIHRydWUgKHByaW1hcnkpJzsKK2NhbGxfc29ja2V0KCdHRVQg L2luZm8nKTsKK2xpa2UgKCRyZXNwb25zZSwgcXJ7UkVDT1ZFUlk6IDBcclxufSwgJHRlc3QpOwor CiskdGVzdCA9ICdHRVQgL2luZm8gZG9lcyBub3QgcmV0dXJuIHZlcnNpb24gaW5mb3JtYXRpb24g d2hlbiBleHBvc2VfdmVyc2lvbiBpcyBmYWxzZSc7Cit1bmxpa2UgKCRyZXNwb25zZSwgcXJ7VkVS U0lPTn0sICR0ZXN0KTsKKworJHRlc3QgPSAnR0VUIC9pbmZvIGRvZXMgbm90IHJldHVybiBzeXNp ZCBpbmZvcm1hdGlvbiB3aGVuIGV4cG9zZV9zeXNpZCBpcyBmYWxzZSc7Cit1bmxpa2UgKCRyZXNw b25zZSwgcXJ7U1lTSUR9LCAkdGVzdCk7CisKKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNx bC5jb25mJywgJ2V4cG9zZV92ZXJzaW9uPW9uJyk7Ciskbm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3Rn cmVzcWwuY29uZicsICdleHBvc2Vfc3lzaWQ9b24nKTsKKyRub2RlLT5yZWxvYWQoKTsKKworJHRl c3QgPSAnR0VUIC9pbmZvIHJldHVybnMgY29ycmVjdCB2ZXJzaW9uIHdoZW4gZXhwb3NlX3ZlcnNp b24gaXMgdHJ1ZSc7CitjYWxsX3NvY2tldCgnR0VUIC9pbmZvJyk7CitsaWtlICgkcmVzcG9uc2Us IHFyL1ZFUlNJT046ICRzZXJ2ZXJfdmVyc2lvbi8sICR0ZXN0KTsKKworJHRlc3QgPSAnR0VUIC9p bmZvIHJldHVybnMgY29ycmVjdCB2YWx1ZSB3aGVuIGV4cG9zZV9zeXNpZCBpcyB0cnVlJzsKK2xp a2UgKCRyZXNwb25zZSwgcXIvU1lTSUQ6ICRzeXNpZC8sICR0ZXN0KTsKKworJHRlc3QgPSAnR2V0 IC9zeXNpZCByZXR1cm5zIGNvcnJlY3QgdmFsdWUgd2hlbiBleHBvc2Vfc3lzaWQgaXMgdHJ1ZSc7 CitjYWxsX3NvY2tldCgnR2V0IC9zeXNpZCcpOyAjIyBOb3QgcmVxdWlyZWQgdG8gYmUgYWxsIHVw cGVyY2FzZSBhY2NvcmRpbmcgdG8gdGhlIHNwZWMhCitsaWtlICgkcmVzcG9uc2UsIHFyL14kc3lz aWRcclxuL20sICR0ZXN0KTsKKworJHRlc3QgPSAnR0VUIC92ZXJzaW9uIHJldHVybnMgY29ycmVj dCB2YWx1ZSB3aGVuIGV4cG9zZV92ZXJzaW9uIGlzIHRydWUnOworY2FsbF9zb2NrZXQoJ0dFVCAv dmVyc2lvbicpOworbGlrZSAoJHJlc3BvbnNlLCBxci9eJHNlcnZlcl92ZXJzaW9uXHJcbi9tLCAk dGVzdCk7CisKKyR0ZXN0ID0gJ0dFVCAvZm9vYmFyIHJldHVybnMgbm90aGluZyc7CitjYWxsX3Nv Y2tldCgnR0VUIC9mb29iYXInKTsKK2lzICgkcmVzcG9uc2UsICcnLCAkdGVzdCk7CisKKyRub2Rl LT5zZXRfc3RhbmRieV9tb2RlKCk7Ciskbm9kZS0+cmVzdGFydCgpOworCiskdGVzdCA9ICdHRVQg L3JlcGxpY2EgcmV0dXJucyBIVFRQIGNvZGUgMjAwIHdoZW4gZXhwb3NlX3JlY292ZXJ5IGlzIHRy dWUgKHJlcGxpY2EpJzsKK2NhbGxfc29ja2V0KCdHRVQgL3JlcGxpY2EnKTsKK2xpa2UgKCRyZXNw b25zZSwgcXJ7XkhUVFAvMS4xIDIwMCB9LCAkdGVzdCk7CisKKyR0ZXN0ID0gJ0dFVCAvcmVwbGlj YSByZXR1cm5zICIxIiB3aGVuIGV4cG9zZV9yZWNvdmVyeSBpcyB0cnVlIChyZXBsaWNhKSc7Cits aWtlICgkcmVzcG9uc2UsIHFye14xXHJcbn1tLCAkdGVzdCk7CisKKyR0ZXN0ID0gJ0hFQUQgL3Jl cGxpY2EgcmV0dXJucyBIVFRQIGNvZGUgMjAwIHdoZW4gZXhwb3NlX3JlY292ZXJ5IGlzIHRydWUg KHJlcGxpY2EpJzsKK2NhbGxfc29ja2V0KCdIRUFEIC9yZXBsaWNhJyk7CitsaWtlICgkcmVzcG9u c2UsIHFye15IVFRQLzEuMSAyMDAgfSwgJHRlc3QpOworCiskdGVzdCA9ICdHRVQgL2luZm8gcmV0 dXJucyAiUkVDT1ZFUlk6IDEiIHdoZW4gZXhwb3NlX3JlY292ZXJ5IGlzIHRydWUgKHJlcGxpY2Ep JzsKK2NhbGxfc29ja2V0KCdHRVQgL2luZm8nKTsKK2xpa2UgKCRyZXNwb25zZSwgcXIvUkVDT1ZF Ulk6IDEvLCAkdGVzdCk7CisKKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywg J2V4cG9zZV92ZXJzaW9uPW9mZicpOworJG5vZGUtPnJlbG9hZCgpOworCiskdGVzdCA9ICdHRVQg L3ZlcnNpb24gcmV0dXJucyBub3RoaW5nIGFmdGVyIGV4cG9zZV92ZXJzaW9uIHR1cm5lZCBiYWNr IG9mZic7CitjYWxsX3NvY2tldCgnR0VUIC92ZXJzaW9uJyk7CitpcyAoJHJlc3BvbnNlLCAnJywg JHRlc3QpOworCiskc29ja2V0LT5jbG9zZSgpOworCitkb25lX3Rlc3RpbmcoKTsKLS0gCjIuNDcu MwoK --000000000000dd306b064b0a48fa--