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.94.2) (envelope-from ) id 1rWpSJ-007POw-5X for pgsql-hackers@arkaria.postgresql.org; Mon, 05 Feb 2024 03:15:35 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rWpSG-00ASNa-LP for pgsql-hackers@arkaria.postgresql.org; Mon, 05 Feb 2024 03:15:32 +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.94.2) (envelope-from ) id 1rWpSG-00ASNS-4g for pgsql-hackers@lists.postgresql.org; Mon, 05 Feb 2024 03:15:32 +0000 Received: from mail-ed1-x52c.google.com ([2a00:1450:4864:20::52c]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rWpSD-0057qY-Mx for pgsql-hackers@postgresql.org; Mon, 05 Feb 2024 03:15:30 +0000 Received: by mail-ed1-x52c.google.com with SMTP id 4fb4d7f45d1cf-55fbbfbc0f5so5805915a12.0 for ; Sun, 04 Feb 2024 19:15:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1707102927; x=1707707727; darn=postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=M/BBukL13Ti9JciJKEumk9wDj/GbjT9FKQnGtgeXs2c=; b=NMO9hEc3eSqskuCVCsoTAgO4UGl1mW7X/RbAie2LCgWwiB7BAejH+sVV97LPtPtIvw gJ8a/Kxn1EJl4+7hWL74RH4uMubZfGlqO/pvvfaYstmLk2xU+2VoF4aHHQR2H09kTMWB lVg9Sin+Iqc6U09OFvepAbQdtK/BZqwgKRdVd62fDaNv/prznXYI3CwpZd8A1x0kdoGE eyZ+FNGuRkXG+plo4y4otAvnROZn6xCDZAgAf8o6R79ZdsnLW4rQnSmaav7tD+53TW/I jLiB7pS8kE5wwJxszFwdW7lEKxDxJ0J4msAtzkv6doOBb6/vksZ8OYbOVfI+Q7H4ko8Z tyXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707102927; x=1707707727; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=M/BBukL13Ti9JciJKEumk9wDj/GbjT9FKQnGtgeXs2c=; b=wxa7l6Xnm5IWbYKbZ9/XVvrgU/8Tl27EoeNTmYfj9QPiVBJ4r9brwgtTCaquqqwdUg 2XDGcamhq/PaLFLg1GfGjeoIh1XrMIrGlr5/vZQmCYm6KoqXvD1bidHzAtJ+MjFkuvg6 Knqljv7Pab60Jvpk/gyvLpTWWKSDqbNlneTWhr1dVEA8KVHsMKgO8DCRkjJYegjz89G5 az3Sd2wAueNMHTXSX+uuJ3J1blER0tcEuT+ZVJ7Pp7vUNsIAslctbGAtffkuSDxcStzH PkKcldnYcwi+f1g2134pTDlbdhXMqAHbVs1MZjPpo8xPfMBP0Rn3pAg9gKU7rY3b5cHe HaLA== X-Gm-Message-State: AOJu0Yxsq6T+0YJFgTzjfmHZH4py3Le5aAjRjiAvCDsJc675YQY+Vtlm E+Rh6YyYVr4FiiW3IeUZHVuQ6zBrKA0Y/VN4W4kmAN2L66IHYAc/rvdVJmGz5j9OUjXKcOEych7 Zd80U2T/nmRWe1RhfOkqt4uCSZeIY++NfsQB+bg== X-Google-Smtp-Source: AGHT+IHMINsycMpq6lF9pbF8z12bQkl3YfH6zhxQKsw1nFtDlOwon5t+kjK7QgT2pzNGqUQFatPIdYwrom4MDviyXI0= X-Received: by 2002:a17:907:7748:b0:a35:6669:9fe with SMTP id kx8-20020a170907774800b00a35666909femr3829592ejc.32.1707102926998; Sun, 04 Feb 2024 19:15:26 -0800 (PST) MIME-Version: 1.0 From: shihao zhong Date: Sun, 4 Feb 2024 22:15:15 -0500 Message-ID: Subject: Encoding protection for pgcrypto To: PostgreSQL-development Content-Type: multipart/mixed; boundary="0000000000008f4900061099df02" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000008f4900061099df02 Content-Type: text/plain; charset="UTF-8" Hi hackers, Currently, pgp_sym_decrypt_text and pgp_pub_decrypt_text doesn't enforce database encoding validation even when returning text. This patch adds validation and dedicated tests to verify its effectiveness. Additionally, some existing unit tests were moved to the new tests as they failed in some encoding. Thanks, SHihao --0000000000008f4900061099df02 Content-Type: application/octet-stream; name="fix_pycrypto.patch" Content-Disposition: attachment; filename="fix_pycrypto.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ls8czbev0 ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdjcnlwdG8vTWFrZWZpbGUgYi9jb250cmliL3BnY3J5cHRv L01ha2VmaWxlCmluZGV4IDVlZmExMGMzMzQuLjJlNTljZGVlOWIgMTAwNjQ0Ci0tLSBhL2NvbnRy aWIvcGdjcnlwdG8vTWFrZWZpbGUKKysrIGIvY29udHJpYi9wZ2NyeXB0by9NYWtlZmlsZQpAQCAt NDIsNyArNDIsNyBAQCBQR0ZJTEVERVNDID0gInBnY3J5cHRvIC0gY3J5cHRvZ3JhcGhpYyBmdW5j dGlvbnMiCiBSRUdSRVNTID0gaW5pdCBtZDUgc2hhMSBobWFjLW1kNSBobWFjLXNoYTEgYmxvd2Zp c2ggcmlqbmRhZWwgXAogCXNoYTIgZGVzIDNkZXMgY2FzdDUgXAogCWNyeXB0LWRlcyBjcnlwdC1t ZDUgY3J5cHQtYmxvd2Zpc2ggY3J5cHQteGRlcyBcCi0JcGdwLWFybW9yIHBncC1kZWNyeXB0IHBn cC1lbmNyeXB0IHBncC1lbmNyeXB0LW1kNSAkKENGX1BHUF9URVNUUykgXAorCXBncC1hcm1vciBw Z3AtZGVjcnlwdCBwZ3AtZGVjcnlwdF91dGY4IHBncC1lbmNyeXB0IHBncC1lbmNyeXB0LW1kNSAk KENGX1BHUF9URVNUUykgXAogCXBncC1wdWJrZXktZGVjcnlwdCBwZ3AtcHVia2V5LWVuY3J5cHQg cGdwLWluZm8KIAogRVhUUkFfQ0xFQU4gPSBnZW4tcnRhYgpkaWZmIC0tZ2l0IGEvY29udHJpYi9w Z2NyeXB0by9leHBlY3RlZC9wZ3AtZGVjcnlwdC5vdXQgYi9jb250cmliL3BnY3J5cHRvL2V4cGVj dGVkL3BncC1kZWNyeXB0Lm91dAppbmRleCBlYjA0OWJhOWQ0Li41MTQxNmJmYTM5IDEwMDY0NAot LS0gYS9jb250cmliL3BnY3J5cHRvL2V4cGVjdGVkL3BncC1kZWNyeXB0Lm91dAorKysgYi9jb250 cmliL3BnY3J5cHRvL2V4cGVjdGVkL3BncC1kZWNyeXB0Lm91dApAQCAtMzE1LDIxICszMTUsNiBA QCBTYVY5TDA0a3kxcUVDTkR4M1hqbm9LTEMrSDdJT1E9PQogIFx4ZGEzOWEzZWU1ZTZiNGIwZDMy NTViZmVmOTU2MDE4OTBhZmQ4MDcwOQogKDEgcm93KQogCi1zZWxlY3QgZGlnZXN0KHBncF9zeW1f ZGVjcnlwdChkZWFybW9yKCcKLS0tLS0tQkVHSU4gUEdQIE1FU1NBR0UtLS0tLQotQ29tbWVudDog ZGF0My5hZXMuc2hhMS5tZGMuczJrMy56MAotCi1qQTBFQndNQ3hRdnhKWjNHL0hSZzBsZ0JlWW1U YTcvdURBalB5RndTWDRDWUJncFpXVm4vSlM4SnpJTHJjV0Y4Ci1nRm5rVUtJRTBQU2FZRnArWWkx VmxSZlV0UlEvWC9MWU5HYTd0V1pTKzRWUWFqejJYdHo0dlVlQUVpWUZZUFhrCi03M0hiOG0xeVJo UUsKLT1pdnJECi0tLS0tLUVORCBQR1AgTUVTU0FHRS0tLS0tCi0nKSwgJzAxMjM0NTY3ODlhYmNk ZWZnaGlqJyksICdzaGExJyk7Ci0gICAgICAgICAgICAgICAgICAgZGlnZXN0ICAgICAgICAgICAg ICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBc eDVlNWMxMzVlZmMwZGQwMDYzM2VmYzZkZmQ2ZTczMWVhNDA4YTViNGMKLSgxIHJvdykKLQogLS0g Q2hlY2tpbmcgQ1JMRgogc2VsZWN0IGRpZ2VzdChwZ3Bfc3ltX2RlY3J5cHQoZGVhcm1vcignCiAt LS0tLUJFR0lOIFBHUCBNRVNTQUdFLS0tLS0KZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdjcnlwdG8v ZXhwZWN0ZWQvcGdwLWRlY3J5cHRfMS5vdXQgYi9jb250cmliL3BnY3J5cHRvL2V4cGVjdGVkL3Bn cC1kZWNyeXB0XzEub3V0CmluZGV4IDgwYTRjNDg2MTMuLmM4YjYwM2I2ZjYgMTAwNjQ0Ci0tLSBh L2NvbnRyaWIvcGdjcnlwdG8vZXhwZWN0ZWQvcGdwLWRlY3J5cHRfMS5vdXQKKysrIGIvY29udHJp Yi9wZ2NyeXB0by9leHBlY3RlZC9wZ3AtZGVjcnlwdF8xLm91dApAQCAtMzExLDIxICszMTEsNiBA QCBTYVY5TDA0a3kxcUVDTkR4M1hqbm9LTEMrSDdJT1E9PQogIFx4ZGEzOWEzZWU1ZTZiNGIwZDMy NTViZmVmOTU2MDE4OTBhZmQ4MDcwOQogKDEgcm93KQogCi1zZWxlY3QgZGlnZXN0KHBncF9zeW1f ZGVjcnlwdChkZWFybW9yKCcKLS0tLS0tQkVHSU4gUEdQIE1FU1NBR0UtLS0tLQotQ29tbWVudDog ZGF0My5hZXMuc2hhMS5tZGMuczJrMy56MAotCi1qQTBFQndNQ3hRdnhKWjNHL0hSZzBsZ0JlWW1U YTcvdURBalB5RndTWDRDWUJncFpXVm4vSlM4SnpJTHJjV0Y4Ci1nRm5rVUtJRTBQU2FZRnArWWkx VmxSZlV0UlEvWC9MWU5HYTd0V1pTKzRWUWFqejJYdHo0dlVlQUVpWUZZUFhrCi03M0hiOG0xeVJo UUsKLT1pdnJECi0tLS0tLUVORCBQR1AgTUVTU0FHRS0tLS0tCi0nKSwgJzAxMjM0NTY3ODlhYmNk ZWZnaGlqJyksICdzaGExJyk7Ci0gICAgICAgICAgICAgICAgICAgZGlnZXN0ICAgICAgICAgICAg ICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBc eDVlNWMxMzVlZmMwZGQwMDYzM2VmYzZkZmQ2ZTczMWVhNDA4YTViNGMKLSgxIHJvdykKLQogLS0g Q2hlY2tpbmcgQ1JMRgogc2VsZWN0IGRpZ2VzdChwZ3Bfc3ltX2RlY3J5cHQoZGVhcm1vcignCiAt LS0tLUJFR0lOIFBHUCBNRVNTQUdFLS0tLS0KZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdjcnlwdG8v ZXhwZWN0ZWQvcGdwLWRlY3J5cHRfdXRmOC5vdXQgYi9jb250cmliL3BnY3J5cHRvL2V4cGVjdGVk L3BncC1kZWNyeXB0X3V0Zjgub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAuLjEzNmJlZjk3MGEKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL3BnY3J5cHRvL2V4cGVj dGVkL3BncC1kZWNyeXB0X3V0Zjgub3V0CkBAIC0wLDAgKzEsMjcgQEAKKy0tCistLSBwZ3AgZGVj cnlwdCB0ZXN0cyB3aXRoIHV0ZjggZW5jb2RpbmcKKy0tCitzZWxlY3QgZ2V0ZGF0YWJhc2VlbmNv ZGluZygpID0gJ1VURjgnIEFTIGVuY29kaW5nX3Rlc3QgXGdzZXQKK1xpZiA6ZW5jb2RpbmdfdGVz dAorc2VsZWN0IGRpZ2VzdChwZ3Bfc3ltX2RlY3J5cHQoZGVhcm1vcignCistLS0tLUJFR0lOIFBH UCBNRVNTQUdFLS0tLS0KK0NvbW1lbnQ6IGRhdDMuYWVzLnNoYTEubWRjLnMyazMuejAKKworakEw RUJ3TUN4UXZ4SlozRy9IUmcwbGdCZVltVGE3L3VEQWpQeUZ3U1g0Q1lCZ3BaV1ZuL0pTOEp6SUxy Y1dGOAorZ0Zua1VLSUUwUFNhWUZwK1lpMVZsUmZVdFJRL1gvTFlOR2E3dFdaUys0VlFhanoyWHR6 NHZVZUFFaVlGWVBYaworNzNIYjhtMXlSaFFLCis9aXZyRAorLS0tLS1FTkQgUEdQIE1FU1NBR0Ut LS0tLQorJyksICcwMTIzNDU2Nzg5YWJjZGVmZ2hpaicpLCAnc2hhMScpOworLS0gRGF0YWJhc2Ug ZW5jb2RpbmcgcHJvdGVjdGlvbi4gIENpcGhlcnRleHQgc291cmNlOgorLS0gIHByaW50ZiAnXHhl MFx4ZTBceGJmZicgfCBncGcgLS1iYXRjaCAtLXBhc3NwaHJhc2UgbXlrZXkgLS10ZXh0bW9kZSAt LWFybW9yIC0tc3ltbWV0cmljCitzZWxlY3QgcGdwX3N5bV9kZWNyeXB0KGRlYXJtb3IoJworLS0t LS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tCisKK2pBMEVDUU1JazROVXErSWErcGIrMGprQmFLV2U4 eTAzTktkZGtvTVRGWnQ0NjdRYytKRXA0emRscVRkQTRkMGQKK1ByNjZJTGZpNjdPOE40QUJ5RWpJ eWVSMlpQdnJLTit4ZFNvPQorPVFLeTQKKy0tLS0tRU5EIFBHUCBNRVNTQUdFLS0tLS0KKycpLCAn bXlrZXknLCAnZGVidWc9MScpOworXHF1aXQKK1xlbmRpZgpkaWZmIC0tZ2l0IGEvY29udHJpYi9w Z2NyeXB0by9leHBlY3RlZC9wZ3AtZGVjcnlwdF91dGY4XzEub3V0IGIvY29udHJpYi9wZ2NyeXB0 by9leHBlY3RlZC9wZ3AtZGVjcnlwdF91dGY4XzEub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAuLjliYzkyN2JlNjMKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL3Bn Y3J5cHRvL2V4cGVjdGVkL3BncC1kZWNyeXB0X3V0ZjhfMS5vdXQKQEAgLTAsMCArMSwyNyBAQAor LS0KKy0tIHBncCBkZWNyeXB0IHRlc3RzIHdpdGggdXRmOCBlbmNvZGluZworLS0KK3NlbGVjdCBn ZXRkYXRhYmFzZWVuY29kaW5nKCkgPSAnVVRGOCcgQVMgZW5jb2RpbmdfdGVzdCBcZ3NldAorXGlm IDplbmNvZGluZ190ZXN0CitzZWxlY3QgZGlnZXN0KHBncF9zeW1fZGVjcnlwdChkZWFybW9yKCcK Ky0tLS0tQkVHSU4gUEdQIE1FU1NBR0UtLS0tLQorQ29tbWVudDogZGF0My5hZXMuc2hhMS5tZGMu czJrMy56MAorCitqQTBFQndNQ3hRdnhKWjNHL0hSZzBsZ0JlWW1UYTcvdURBalB5RndTWDRDWUJn cFpXVm4vSlM4SnpJTHJjV0Y4CitnRm5rVUtJRTBQU2FZRnArWWkxVmxSZlV0UlEvWC9MWU5HYTd0 V1pTKzRWUWFqejJYdHo0dlVlQUVpWUZZUFhrCis3M0hiOG0xeVJoUUsKKz1pdnJECistLS0tLUVO RCBQR1AgTUVTU0FHRS0tLS0tCisnKSwgJzAxMjM0NTY3ODlhYmNkZWZnaGlqJyksICdzaGExJyk7 CistLSBEYXRhYmFzZSBlbmNvZGluZyBwcm90ZWN0aW9uLiAgQ2lwaGVydGV4dCBzb3VyY2U6Cist LSBwcmludGYgJ1x4ZTBceGUwXHhiZmYnIHwgZ3BnIC0tYmF0Y2ggLS1wYXNzcGhyYXNlIG15a2V5 IC0tdGV4dG1vZGUgLS1hcm1vciAtLXN5bW1ldHJpYworc2VsZWN0IHBncF9zeW1fZGVjcnlwdChk ZWFybW9yKCcKKy0tLS0tQkVHSU4gUEdQIE1FU1NBR0UtLS0tLQorCitqQTBFQ1FNSWs0TlVxK0lh K3BiKzBqa0JhS1dlOHkwM05LZGRrb01URlp0NDY3UWMrSkVwNHpkbHFUZEE0ZDBkCitQcjY2SUxm aTY3TzhONEFCeUVqSXllUjJaUHZyS04reGRTbz0KKz1RS3k0CistLS0tLUVORCBQR1AgTUVTU0FH RS0tLS0tCisnKSwgJ215a2V5JywgJ2RlYnVnPTEnKTsKK1xxdWl0CitcZW5kaWYKZGlmZiAtLWdp dCBhL2NvbnRyaWIvcGdjcnlwdG8vbWVzb24uYnVpbGQgYi9jb250cmliL3BnY3J5cHRvL21lc29u LmJ1aWxkCmluZGV4IDg1OTQ4OTE1NDguLjYwMDMwYWQxMjQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv cGdjcnlwdG8vbWVzb24uYnVpbGQKKysrIGIvY29udHJpYi9wZ2NyeXB0by9tZXNvbi5idWlsZApA QCAtNDcsNiArNDcsNyBAQCBwZ2NyeXB0b19yZWdyZXNzID0gWwogICAnY3J5cHQteGRlcycsCiAg ICdwZ3AtYXJtb3InLAogICAncGdwLWRlY3J5cHQnLAorICAncGdwLWRlY3J5cHRfdXRmOCcsCiAg ICdwZ3AtZW5jcnlwdCcsCiAgICdwZ3AtZW5jcnlwdC1tZDUnLAogICAncGdwLXB1YmtleS1kZWNy eXB0JywKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdjcnlwdG8vcGdwLXBnc3FsLmMgYi9jb250cmli L3BnY3J5cHRvL3BncC1wZ3NxbC5jCmluZGV4IGQ5YjE1YjA3YjAuLjgzOGE3YzM4MWYgMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvcGdjcnlwdG8vcGdwLXBnc3FsLmMKKysrIGIvY29udHJpYi9wZ2NyeXB0 by9wZ3AtcGdzcWwuYwpAQCAtNjMxLDYgKzYzMSw3IEBAIHBncF9zeW1fZGVjcnlwdF90ZXh0KFBH X0ZVTkNUSU9OX0FSR1MpCiAJCWFyZyA9IFBHX0dFVEFSR19CWVRFQV9QUCgyKTsKIAogCXJlcyA9 IGRlY3J5cHRfaW50ZXJuYWwoMCwgMSwgZGF0YSwga2V5LCBOVUxMLCBhcmcpOworCXBnX3Zlcmlm eW1ic3RyKFZBUkRBVEFfQU5ZKHJlcyksIFZBUlNJWkVfQU5ZX0VYSERSKHJlcyksIGZhbHNlKTsK IAogCVBHX0ZSRUVfSUZfQ09QWShkYXRhLCAwKTsKIAlQR19GUkVFX0lGX0NPUFkoa2V5LCAxKTsK QEAgLTczMiw2ICs3MzMsNyBAQCBwZ3BfcHViX2RlY3J5cHRfdGV4dChQR19GVU5DVElPTl9BUkdT KQogCQlhcmcgPSBQR19HRVRBUkdfQllURUFfUFAoMyk7CiAKIAlyZXMgPSBkZWNyeXB0X2ludGVy bmFsKDEsIDEsIGRhdGEsIGtleSwgcHN3LCBhcmcpOworCXBnX3ZlcmlmeW1ic3RyKFZBUkRBVEFf QU5ZKHJlcyksIFZBUlNJWkVfQU5ZX0VYSERSKHJlcyksIGZhbHNlKTsKIAogCVBHX0ZSRUVfSUZf Q09QWShkYXRhLCAwKTsKIAlQR19GUkVFX0lGX0NPUFkoa2V5LCAxKTsKZGlmZiAtLWdpdCBhL2Nv bnRyaWIvcGdjcnlwdG8vc3FsL3BncC1kZWNyeXB0LnNxbCBiL2NvbnRyaWIvcGdjcnlwdG8vc3Fs L3BncC1kZWNyeXB0LnNxbAppbmRleCA0OWEwMjY3YmJjLi42MDhkNWEzMWMyIDEwMDY0NAotLS0g YS9jb250cmliL3BnY3J5cHRvL3NxbC9wZ3AtZGVjcnlwdC5zcWwKKysrIGIvY29udHJpYi9wZ2Ny eXB0by9zcWwvcGdwLWRlY3J5cHQuc3FsCkBAIC0yMjgsMTcgKzIyOCw2IEBAIFNhVjlMMDRreTFx RUNORHgzWGpub0tMQytIN0lPUT09CiAtLS0tLUVORCBQR1AgTUVTU0FHRS0tLS0tCiAnKSwgJzAx MjM0NTY3ODlhYmNkZWZnaGlqJyksICdzaGExJyk7CiAKLXNlbGVjdCBkaWdlc3QocGdwX3N5bV9k ZWNyeXB0KGRlYXJtb3IoJwotLS0tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tCi1Db21tZW50OiBk YXQzLmFlcy5zaGExLm1kYy5zMmszLnowCi0KLWpBMEVCd01DeFF2eEpaM0cvSFJnMGxnQmVZbVRh Ny91REFqUHlGd1NYNENZQmdwWldWbi9KUzhKeklMcmNXRjgKLWdGbmtVS0lFMFBTYVlGcCtZaTFW bFJmVXRSUS9YL0xZTkdhN3RXWlMrNFZRYWp6Mlh0ejR2VWVBRWlZRllQWGsKLTczSGI4bTF5UmhR SwotPWl2ckQKLS0tLS0tRU5EIFBHUCBNRVNTQUdFLS0tLS0KLScpLCAnMDEyMzQ1Njc4OWFiY2Rl ZmdoaWonKSwgJ3NoYTEnKTsKLQogLS0gQ2hlY2tpbmcgQ1JMRgogc2VsZWN0IGRpZ2VzdChwZ3Bf c3ltX2RlY3J5cHQoZGVhcm1vcignCiAtLS0tLUJFR0lOIFBHUCBNRVNTQUdFLS0tLS0KZGlmZiAt LWdpdCBhL2NvbnRyaWIvcGdjcnlwdG8vc3FsL3BncC1kZWNyeXB0X3V0Zjguc3FsIGIvY29udHJp Yi9wZ2NyeXB0by9zcWwvcGdwLWRlY3J5cHRfdXRmOC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMC4uNGRmOTNhNDRkYgotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIv cGdjcnlwdG8vc3FsL3BncC1kZWNyeXB0X3V0Zjguc3FsCkBAIC0wLDAgKzEsMjkgQEAKKy0tCist LSBwZ3AgZGVjcnlwdCB0ZXN0cyB3aXRoIHV0ZjggZW5jb2RpbmcKKy0tCitzZWxlY3QgZ2V0ZGF0 YWJhc2VlbmNvZGluZygpID0gJ1VURjgnIEFTIGVuY29kaW5nX3Rlc3QgXGdzZXQKK1xpZiA6ZW5j b2RpbmdfdGVzdAorCitzZWxlY3QgZGlnZXN0KHBncF9zeW1fZGVjcnlwdChkZWFybW9yKCcKKy0t LS0tQkVHSU4gUEdQIE1FU1NBR0UtLS0tLQorQ29tbWVudDogZGF0My5hZXMuc2hhMS5tZGMuczJr My56MAorCitqQTBFQndNQ3hRdnhKWjNHL0hSZzBsZ0JlWW1UYTcvdURBalB5RndTWDRDWUJncFpX Vm4vSlM4SnpJTHJjV0Y4CitnRm5rVUtJRTBQU2FZRnArWWkxVmxSZlV0UlEvWC9MWU5HYTd0V1pT KzRWUWFqejJYdHo0dlVlQUVpWUZZUFhrCis3M0hiOG0xeVJoUUsKKz1pdnJECistLS0tLUVORCBQ R1AgTUVTU0FHRS0tLS0tCisnKSwgJzAxMjM0NTY3ODlhYmNkZWZnaGlqJyksICdzaGExJyk7CisK Ky0tIERhdGFiYXNlIGVuY29kaW5nIHByb3RlY3Rpb24uICBDaXBoZXJ0ZXh0IHNvdXJjZToKKy0t IHByaW50ZiAnXHhlMFx4ZTBceGJmZicgfCBncGcgLS1iYXRjaCAtLXBhc3NwaHJhc2UgbXlrZXkg LS10ZXh0bW9kZSAtLWFybW9yIC0tc3ltbWV0cmljCitzZWxlY3QgcGdwX3N5bV9kZWNyeXB0KGRl YXJtb3IoJworLS0tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tCisKK2pBMEVDUU1JazROVXErSWEr cGIrMGprQmFLV2U4eTAzTktkZGtvTVRGWnQ0NjdRYytKRXA0emRscVRkQTRkMGQKK1ByNjZJTGZp NjdPOE40QUJ5RWpJeWVSMlpQdnJLTit4ZFNvPQorPVFLeTQKKy0tLS0tRU5EIFBHUCBNRVNTQUdF LS0tLS0KKycpLCAnbXlrZXknLCAnZGVidWc9MScpOworXHF1aXQKK1xlbmRpZgo= --0000000000008f4900061099df02--