Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gWOa2-00048G-Ku for pgsql-hackers@arkaria.postgresql.org; Mon, 10 Dec 2018 16:38:51 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1gWOa0-0007cO-O5 for pgsql-hackers@arkaria.postgresql.org; Mon, 10 Dec 2018 16:38:48 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gWOa0-0007cH-E3 for pgsql-hackers@lists.postgresql.org; Mon, 10 Dec 2018 16:38:48 +0000 Received: from mail.postgrespro.ru ([93.174.131.138]) by magus.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1gWOZs-0006ju-Tt for pgsql-hackers@postgresql.org; Mon, 10 Dec 2018 16:38:47 +0000 Received: from localhost (localhost [127.0.0.1]) by mail.postgrespro.ru (Postfix) with ESMTP id 7152921D1A96; Mon, 10 Dec 2018 19:38:39 +0300 (MSK) X-Virus-Scanned: Debian amavisd-new at postgrespro.ru X-Spam-Flag: NO X-Spam-Score: 0 X-Spam-Level: X-Spam-Status: No, score=x tagged_above=-99 required=4 WHITELISTED tests=[] autolearn=unavailable Received: from mail.postgrespro.ru (cyclops.l.postgrespro.ru [192.168.27.1]) by mail.postgrespro.ru (Postfix) with ESMTP id 3342D21D1A93; Mon, 10 Dec 2018 19:38:39 +0300 (MSK) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_535d1f80120ea085f78b594b03539f1a" Date: Mon, 10 Dec 2018 19:38:39 +0300 From: s.cherkashin@postgrespro.ru To: Michael Paquier Cc: Alvaro Herrera , Nikita Glukhov , pgsql-hackers@postgresql.org Subject: Re: Psql patch to show access methods info In-Reply-To: <20181129064741.GB2356@paquier.xyz> References: <20181120134241.36tjfswliqimvncv@alvherre.pgsql> <2239fec8b8369bb845ecce8d8504adf6c0214ce5.camel@postgrespro.ru> <20181129064741.GB2356@paquier.xyz> Message-ID: <70e94e339dd0fa2be5d3eebec68da7bf@postgrespro.ru> X-Sender: s.cherkashin@postgrespro.ru User-Agent: Roundcube Webmail/1.3.8 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --=_535d1f80120ea085f78b594b03539f1a Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed Here are some fixes. But I'm not sure that the renaming of columns for the '\dAp' command is sufficiently laconic and informative. If you have any suggestions on how to improve them, I will be very grateful. Best regards, Sergey Cherkashin. --=_535d1f80120ea085f78b594b03539f1a Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0001-psql_add_am_info-v4.patch Content-Disposition: attachment; filename=0001-psql_add_am_info-v4.patch; size=25479 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Nh dGFsb2dzLnNnbWwKaW5kZXggYzEzNGJjYTgwOS4uZTI1NDEyYjdjZSAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwK QEAgLTY3NSw3ICs2NzUsNyBAQAogICAgc2VhcmNoIGFuZCBvcmRlcmluZyBwdXJwb3Nlcy4pCiAg IDwvcGFyYT4KIAotICA8dGFibGU+CisgIDx0YWJsZSBpZD0iY2F0YWxvZy1wZy1hbW9wLXRhYmxl Ij4KICAgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19hbW9wPC9zdHJ1Y3RuYW1lPiBDb2x1bW5zPC90 aXRsZT4KIAogICAgPHRncm91cCBjb2xzPSI0Ij4KQEAgLTgxOCw3ICs4MTgsNyBAQAogICAgaXMg b25lIHJvdyBmb3IgZWFjaCBzdXBwb3J0IGZ1bmN0aW9uIGJlbG9uZ2luZyB0byBhbiBvcGVyYXRv ciBmYW1pbHkuCiAgIDwvcGFyYT4KIAotICA8dGFibGU+CisgIDx0YWJsZSBpZD0iY2F0YWxvZy1w Zy1hbXByb2MtdGFibGUiPgogICAgPHRpdGxlPjxzdHJ1Y3RuYW1lPnBnX2FtcHJvYzwvc3RydWN0 bmFtZT4gQ29sdW1uczwvdGl0bGU+CiAKICAgIDx0Z3JvdXAgY29scz0iNCI+CkBAIC00NDIxLDcg KzQ0MjEsNyBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9uIGNvdW50 Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogICAgT3BlcmF0b3IgY2xhc3NlcyBh cmUgZGVzY3JpYmVkIGF0IGxlbmd0aCBpbiA8eHJlZiBsaW5rZW5kPSJ4aW5kZXgiLz4uCiAgIDwv cGFyYT4KIAotICA8dGFibGU+CisgIDx0YWJsZSBpZD0iY2F0YWxvZy1wZy1vcGNsYXNzLXRhYmxl Ij4KICAgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19vcGNsYXNzPC9zdHJ1Y3RuYW1lPiBDb2x1bW5z PC90aXRsZT4KIAogICAgPHRncm91cCBjb2xzPSI0Ij4KQEAgLTQ2ODMsNyArNDY4Myw3IEBAIFND UkFNLVNIQS0yNTYkPHJlcGxhY2VhYmxlPiZsdDtpdGVyYXRpb24gY291bnQmZ3Q7PC9yZXBsYWNl YWJsZT46PHJlcGxhY2VhYmxlPiZsCiAgICBPcGVyYXRvciBmYW1pbGllcyBhcmUgZGVzY3JpYmVk IGF0IGxlbmd0aCBpbiA8eHJlZiBsaW5rZW5kPSJ4aW5kZXgiLz4uCiAgIDwvcGFyYT4KIAotICA8 dGFibGU+CisgIDx0YWJsZSBpZD0iY2F0YWxvZy1wZy1vcGZhbWlseS10YWJsZSI+CiAgICA8dGl0 bGU+PHN0cnVjdG5hbWU+cGdfb3BmYW1pbHk8L3N0cnVjdG5hbWU+IENvbHVtbnM8L3RpdGxlPgog CiAgICA8dGdyb3VwIGNvbHM9IjQiPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9wc3Fs LXJlZi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sCmluZGV4IDZlNmQwZjQy ZDEuLmJlZTg5ODdjODUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwKQEAgLTEyMDQsNiArMTIwNCw4 MyBAQCB0ZXN0ZGI9Jmd0OwogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgPC92YXJsaXN0ZW50 cnk+CiAKKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgIDx0ZXJtPgorICAgICAgICAgIDxs aXRlcmFsPlxkQWZvCisgICAgICAgICAgICBbPGxpbmsgbGlua2VuZD0iYXBwLXBzcWwtcGF0dGVy bnMiPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5hY2Nlc3MtbWV0aG9kLXBhdHRlcm48 L3JlcGxhY2VhYmxlPjwvbGluaz4KKyAgICAgICAgICAgICAgWzxsaW5rIGxpbmtlbmQ9ImFwcC1w c3FsLXBhdHRlcm5zIj48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3BlcmF0b3ItZmFt aWx5LXBhdHRlcm48L3JlcGxhY2VhYmxlPjwvbGluaz5dXQorICAgICAgICAgIDwvbGl0ZXJhbD4K KyAgICAgICAgPC90ZXJtPgorCisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+Cisg ICAgICAgIExpc3RzIG9wZXJhdG9ycyAoPHhyZWYgbGlua2VuZD0iY2F0YWxvZy1wZy1hbW9wLXRh YmxlIi8+KSBhc3NvY2lhdGVkCisgICAgICAgIHdpdGggYWNjZXNzIG1ldGhvZCBvcGVyYXRvciBm YW1pbGllcy4gSWYKKyAgICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFjY2Vz cy1tZXRob2QtcGF0dHRlcm48L3JlcGxhY2VhYmxlPiBpcworICAgICAgICBzcGVjaWZpZWQsIG9u bHkgb3BlcmF0b3JzIGFzc29jaWF0ZWQgd2l0aCBhY2Nlc3MgbWV0aG9kIHdob3NlIG5hbWUKKyAg ICAgICAgbWF0Y2hlcyBwYXR0ZXJuIGFyZSBzaG93bi4gSWYKKyAgICAgICAgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPm9wZXJhdG9yLWZhbWlseS1wYXR0ZXJuPC9yZXBsYWNlYWJsZT4g aXMKKyAgICAgICAgc3BlY2lmaWVkLCBvbmx5IG9wZXJhdG9ycyBhc3NvY2lhdGVkIHdpdGggZmFt aWxpZXMgd2hvc2UgbmFtZSBtYXRjaGVzCisgICAgICAgIHRoZSBwYXR0ZXJuIGFyZSBzaG93bi4K KyAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50 cnk+CisKKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgIDx0ZXJtPgorICAgICAgICAgIDxs aXRlcmFsPlxkQWZwCisgICAgICAgICAgICBbPGxpbmsgbGlua2VuZD0iYXBwLXBzcWwtcGF0dGVy bnMiPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5hY2Nlc3MtbWV0aG9kLXBhdHRlcm48 L3JlcGxhY2VhYmxlPjwvbGluaz4KKyAgICAgICAgICAgICAgWzxsaW5rIGxpbmtlbmQ9ImFwcC1w c3FsLXBhdHRlcm5zIj48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3BlcmF0b3ItZmFt aWx5LXBhdHRlcm48L3JlcGxhY2VhYmxlPjwvbGluaz5dXQorICAgICAgICAgIDwvbGl0ZXJhbD4K KyAgICAgICAgPC90ZXJtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAg ICAgICBMaXN0IHByb2NlZHVyZXMgKDx4cmVmIGxpbmtlbmQ9ImNhdGFsb2ctcGctYW1wcm9jLXRh YmxlIi8+KSBhc3NvY2lhdGVkCisgICAgICAgIHdpdGggYWNjZXNzIG1ldGhvZCBvcGVyYXRvciBm YW1pbGllcy4KKyAgICAgICAgSWYgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFjY2Vz cy1tZXRob2QtcGF0dHRlcm48L3JlcGxhY2VhYmxlPgorICAgICAgICBpcyBzcGVjaWZpZWQsIG9u bHkgcHJvY2VkdXJlcyBhc3NvY2lhdGVkIHdpdGggYWNjZXNzIG1ldGhvZCB3aG9zZSBuYW1lCisg ICAgICAgIG1hdGNoZXMgcGF0dGVybiBhcmUgc2hvd24uCisgICAgICAgIElmIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5vcGVyYXRvci1mYW1pbHktcGF0dGVybjwvcmVwbGFjZWFibGU+ CisgICAgICAgIGlzIHNwZWNpZmllZCwgb25seSBwcm9jZWR1cmVzIGFzc29jaWF0ZWQgd2l0aCBm YW1pbGllcyB3aG9zZSBuYW1lCisgICAgICAgIG1hdGNoZXMgdGhlIHBhdHRlcm4gYXJlIHNob3du LgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3Rl bnRyeT4KKworICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgPHRlcm0+CisgICAgICAgICAg PGxpdGVyYWw+XGRBb2MKKyAgICAgICAgICAgIFs8bGluayBsaW5rZW5kPSJhcHAtcHNxbC1wYXR0 ZXJucyI+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFjY2Vzcy1tZXRob2QtcGF0dGVy bjwvcmVwbGFjZWFibGU+PC9saW5rPgorICAgICAgICAgICAgICBbPGxpbmsgbGlua2VuZD0iYXBw LXBzcWwtcGF0dGVybnMiPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcGVyYXRvci1j bGFzcy1wYXR0ZXJuPC9yZXBsYWNlYWJsZT48L2xpbms+XV0KKyAgICAgICAgICA8L2xpdGVyYWw+ CisgICAgICAgIDwvdGVybT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAg ICAgICAgU2hvd3MgaW5kZXggYWNjZXNzIG1ldGhvZCBvcGVyYXRvciBjbGFzc2VzIGxpc3RlZCBp bgorICAgICAgICA8eHJlZiBsaW5rZW5kPSJjYXRhbG9nLXBnLW9wY2xhc3MtdGFibGUiLz4uCisg ICAgICAgIElmIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5hY2Nlc3MtbWV0aG9kLXBh dHR0ZXJuPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgaXMgc3BlY2lmaWVkLCBvbmx5IG9wZXJhdG9y IGNsYXNzZXMgYXNzb2NpYXRlZCB3aXRoIGFjY2VzcyBtZXRob2Qgd2hvc2UKKyAgICAgICAgbmFt ZSBtYXRjaGVzIHBhdHRlcm4gYXJlIHNob3duLgorICAgICAgICBJZiA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+b3BlcmF0b3ItY2xhc3MtcGF0dGVybjwvcmVwbGFjZWFibGU+CisgICAg ICAgIGlzIHNwZWNpZmllZCwgb25seSBwcm9jZWR1cmVzIGFzc29jaWF0ZWQgd2l0aCBmYW1pbGll cyB3aG9zZSBuYW1lCisgICAgICAgIG1hdGNoZXMgdGhlIHBhdHRlcm4gYXJlIHNob3duLgorICAg ICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4K KworICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgPHRlcm0+PGxpdGVyYWw+XGRBcCBbIDxs aW5rIGxpbmtlbmQ9ImFwcC1wc3FsLXBhdHRlcm5zIj48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cGF0dGVybjwvcmVwbGFjZWFibGU+PC9saW5rPiBdPC9saXRlcmFsPjwvdGVybT4KKwor ICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICBTaG93cyBhY2Nlc3Mg bWV0aG9kIHByb3BlcnRpZXMgbGlzdGVkIGluCisgICAgICAgIDx4cmVmIGxpbmtlbmQ9ImZ1bmN0 aW9ucy1pbmZvLWluZGV4YW0tcHJvcHMiLz4uCisgICAgICAgIElmIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5wYXR0ZXJuPC9yZXBsYWNlYWJsZT4gaXMgc3BlY2lmaWVkLAorICAgICAg ICBvbmx5IGFjY2VzcyBtZXRob2RzIHdob3NlIG5hbWVzIG1hdGNoIHRoZSBwYXR0ZXJuIGFyZSBz aG93bi4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJs aXN0ZW50cnk+CisKICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgIDx0ZXJtPjxsaXRlcmFs PlxkYlsrXSBbIDxsaW5rIGxpbmtlbmQ9ImFwcC1wc3FsLXBhdHRlcm5zIj48cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cGF0dGVybjwvcmVwbGFjZWFibGU+PC9saW5rPiBdPC9saXRlcmFs PjwvdGVybT4KIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYyBiL3NyYy9iaW4v cHNxbC9jb21tYW5kLmMKaW5kZXggZWU4OGUxY2E1Yy4uN2MzNWFlZDAxOCAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wc3FsL2NvbW1hbmQuYworKysgYi9zcmMvYmluL3BzcWwvY29tbWFuZC5jCkBAIC03 MTksNyArNzE5LDI0IEBAIGV4ZWNfY29tbWFuZF9kKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwg Ym9vbCBhY3RpdmVfYnJhbmNoLCBjb25zdCBjaGFyICpjbWQpCiAJCQkJCXN1Y2Nlc3MgPSBsaXN0 VGFibGVzKCJ0dm1zRSIsIE5VTEwsIHNob3dfdmVyYm9zZSwgc2hvd19zeXN0ZW0pOwogCQkJCWJy ZWFrOwogCQkJY2FzZSAnQSc6Ci0JCQkJc3VjY2VzcyA9IGRlc2NyaWJlQWNjZXNzTWV0aG9kcyhw YXR0ZXJuLCBzaG93X3ZlcmJvc2UpOworCQkJCXsKKwkJCQkJY2hhcgkgICAqcGF0dGVybjIgPSBO VUxMOworCQkJCQlpZiAocGF0dGVybikKKwkJCQkJCXBhdHRlcm4yID0gcHNxbF9zY2FuX3NsYXNo X29wdGlvbihzY2FuX3N0YXRlLCBPVF9OT1JNQUwsIE5VTEwsIHRydWUpOworCisJCQkJCWlmIChz dHJuY21wKGNtZCwgImRBcCIsIDMpID09IDApCisJCQkJCQlzdWNjZXNzID0gZGVzY3JpYmVBY2Nl c3NNZXRob2RQcm9wZXJ0aWVzKHBhdHRlcm4pOworCQkJCQllbHNlIGlmIChzdHJuY21wKGNtZCwg ImRBZm8iLCA0KSA9PSAwKQorCQkJCQkJc3VjY2VzcyA9IGxpc3RGYW1pbHlDbGFzc09wZXJhdG9y cyhwYXR0ZXJuLCBwYXR0ZXJuMiwgc2hvd192ZXJib3NlKTsKKwkJCQkJZWxzZSBpZiAoc3RybmNt cChjbWQsICJkQWZwIiwgNCkgPT0gMCkKKwkJCQkJCXN1Y2Nlc3MgPSBsaXN0T3BlcmF0b3JGYW1p bHlQcm9jZWR1cmVzKHBhdHRlcm4sIHBhdHRlcm4yLCBzaG93X3ZlcmJvc2UpOworCQkJCQllbHNl IGlmIChzdHJuY21wKGNtZCwgImRBb2MiLCA0KSA9PSAwKQorCQkJCQkJc3VjY2VzcyA9IGRlc2Ny aWJlQWNjZXNzTWV0aG9kT3BlcmF0b3JDbGFzc2VzKHBhdHRlcm4sIHBhdHRlcm4yLCBzaG93X3Zl cmJvc2UpOworCQkJCQllbHNlCisJCQkJCQlzdWNjZXNzID0gZGVzY3JpYmVBY2Nlc3NNZXRob2Rz KHBhdHRlcm4sIHNob3dfdmVyYm9zZSk7CisJCQkJCWlmIChwYXR0ZXJuMikKKwkJCQkJCWZyZWUo cGF0dGVybjIpOworCQkJCX0KIAkJCQlicmVhazsKIAkJCWNhc2UgJ2EnOgogCQkJCXN1Y2Nlc3Mg PSBkZXNjcmliZUFnZ3JlZ2F0ZXMocGF0dGVybiwgc2hvd192ZXJib3NlLCBzaG93X3N5c3RlbSk7 CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBiL3NyYy9iaW4vcHNxbC9kZXNj cmliZS5jCmluZGV4IDBhMTgxYjAxZDkuLjQ5NDdmYjY5ZmEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cHNxbC9kZXNjcmliZS5jCisrKyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCkBAIC01NjExLDMg KzU2MTEsMzA1IEBAIHByaW50QUNMQ29sdW1uKFBRRXhwQnVmZmVyIGJ1ZiwgY29uc3QgY2hhciAq Y29sbmFtZSkKIAkJCQkJCSAgInBnX2NhdGFsb2cuYXJyYXlfdG9fc3RyaW5nKCVzLCAnXFxuJykg QVMgXCIlc1wiIiwKIAkJCQkJCSAgY29sbmFtZSwgZ2V0dGV4dF9ub29wKCJBY2Nlc3MgcHJpdmls ZWdlcyIpKTsKIH0KKworLyoKKyAqIFxkQXAKKyAqIERlc2NyaWJlcyBhY2Nlc3MgbWV0aG9kIHBy b3BlcnRpZXMuCisgKgorICogVGFrZXMgYW4gb3B0aW9uYWwgcmVnZXhwIHRvIHNlbGVjdCBwYXJ0 aWN1bGFyIGFjY2VzcyBtZXRob2RzCisgKi8KK2Jvb2wKK2Rlc2NyaWJlQWNjZXNzTWV0aG9kUHJv cGVydGllcyhjb25zdCBjaGFyICpwYXR0ZXJuKQoreworCVBRRXhwQnVmZmVyRGF0YSBidWY7CisJ UEdyZXN1bHQgICAqcmVzOworCXByaW50UXVlcnlPcHQgbXlvcHQgPSBwc2V0LnBvcHQ7CisJc3Rh dGljIGNvbnN0IGJvb2wgdHJhbnNsYXRlX2NvbHVtbnNbXSA9IHtmYWxzZSwgZmFsc2UsIGZhbHNl LCBmYWxzZSwgZmFsc2UsIGZhbHNlfTsKKworCWluaXRQUUV4cEJ1ZmZlcigmYnVmKTsKKworCXBy aW50ZlBRRXhwQnVmZmVyKCZidWYsCisJCQkJCSAgcHNldC5zdmVyc2lvbiA+PSA5MDYwMCA/CisJ CQkJCSAgIlNFTEVDVCBhLmFtbmFtZSBBUyBcIiVzXCIsXG4iCisJCQkJCSAgIiAgcGdfY2F0YWxv Zy5wZ19pbmRleGFtX2hhc19wcm9wZXJ0eShhLm9pZCwgJ2Nhbl9vcmRlcicpIEFTIFwiJXNcIixc biIKKwkJCQkJICAiICBwZ19jYXRhbG9nLnBnX2luZGV4YW1faGFzX3Byb3BlcnR5KGEub2lkLCAn Y2FuX3VuaXF1ZScpIEFTIFwiJXNcIixcbiIKKwkJCQkJICAiICBwZ19jYXRhbG9nLnBnX2luZGV4 YW1faGFzX3Byb3BlcnR5KGEub2lkLCAnY2FuX211bHRpX2NvbCcpIEFTIFwiJXNcIixcbiIKKwkJ CQkJICAiICBwZ19jYXRhbG9nLnBnX2luZGV4YW1faGFzX3Byb3BlcnR5KGEub2lkLCAnY2FuX2V4 Y2x1ZGUnKSBBUyBcIiVzXCIsXG4iCisJCQkJCSAgOgorCQkJCQkgICJTRUxFQ1QgYS5hbW5hbWUg QVMgXCIlc1wiLFxuIgorCQkJCQkgICIgIGEuYW1jYW5vcmRlciBBUyBcIiVzXCIsXG4iCisJCQkJ CSAgIiAgYS5hbWNhbnVuaXF1ZSBBUyBcIiVzXCIsXG4iCisJCQkJCSAgIiAgYS5hbWNhbm11bHRp Y29sIEFTIFwiJXNcIixcbiIKKwkJCQkJICAiICBhLmFtZ2V0dHVwbGUgPD4gMCBBUyBcIiVzXCIs XG4iLAorCQkJCQkgIGdldHRleHRfbm9vcCgiQU0iKSwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIkNh biBvcmRlciIpLAorCQkJCQkgIGdldHRleHRfbm9vcCgiU3VwcG9ydCB1bmlxdWUgaW5kZXhlcyIp LAorCQkJCQkgIGdldHRleHRfbm9vcCgiU3VwcG9ydCBpbmRleGVzIHdpdGggbXVsdGlwbGUgY29s dW1ucyIpLAorCQkJCQkgIGdldHRleHRfbm9vcCgiU3VwcG9ydCBleGNsdXNpb24gY29uc3RyYWlu dHMiKSk7CisKKwlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkgIHBzZXQuc3ZlcnNpb24g Pj0gMTEwMDAwCisJCQkJCQk/ICJwZ19jYXRhbG9nLnBnX2luZGV4YW1faGFzX3Byb3BlcnR5KGEu b2lkLCAnY2FuX2luY2x1ZGUnKSBBUyBcIiVzXCIiCisJCQkJCQk6ICJGQUxTRSBBUyBcIiVzXCIi LAorCQkJCQkgIGdldHRleHRfbm9vcCgiQ2FuIGluY2x1ZGUgbm9uLWtleSBjb2x1bW5zIikpOwor CisJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwKKwkJCQkJCSAiXG5GUk9NIHBnX2NhdGFsb2cu cGdfYW0gYVxuIik7CisKKwlwcm9jZXNzU1FMTmFtZVBhdHRlcm4ocHNldC5kYiwgJmJ1ZiwgcGF0 dGVybiwgZmFsc2UsIGZhbHNlLAorCQkJCQkJICBOVUxMLCAiYW1uYW1lIiwgTlVMTCwgTlVMTCk7 CisKKwlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiT1JERVIgQlkgMTsiKTsKKwlyZXMgPSBQ U1FMZXhlYyhidWYuZGF0YSk7CisJdGVybVBRRXhwQnVmZmVyKCZidWYpOworCWlmICghcmVzKQor CQlyZXR1cm4gZmFsc2U7CisKKwlteW9wdC5udWxsUHJpbnQgPSBOVUxMOworCW15b3B0LnRpdGxl ID0gXygiQWNjZXNzIG1ldGhvZCBwcm9wZXJ0aWVzIik7CisJbXlvcHQudHJhbnNsYXRlX2hlYWRl ciA9IHRydWU7CisJbXlvcHQudHJhbnNsYXRlX2NvbHVtbnMgPSB0cmFuc2xhdGVfY29sdW1uczsK KwlteW9wdC5uX3RyYW5zbGF0ZV9jb2x1bW5zID0gbGVuZ3Rob2YodHJhbnNsYXRlX2NvbHVtbnMp OworCisJcHJpbnRRdWVyeShyZXMsICZteW9wdCwgcHNldC5xdWVyeUZvdXQsIGZhbHNlLCBwc2V0 LmxvZ2ZpbGUpOworCisJUFFjbGVhcihyZXMpOworCXJldHVybiB0cnVlOworfQorCisvKgorICog XGRBZm8KKyAqIExpc3RzIG9wZXJhdG9ycyBhc3NvY2lhdGVkIHdpdGggYWNjZXNzIG1ldGhvZCBv cGVyYXRvciBmYW1pbGllcy4KKyAqCisgKiBUYWtlcyBhbiBvcHRpb25hbCByZWdleHAgdG8gc2Vs ZWN0IHBhcnRpY3VsYXIgYWNjZXNzIG1ldGhvZHMKKyAqIGFuZCBvcGVyYXRvciBmYW1pbGllcwor ICovCitib29sCitsaXN0RmFtaWx5Q2xhc3NPcGVyYXRvcnMoY29uc3QgY2hhciAqYWNjZXNzX21l dGhvZF9wYXR0ZXJuLAorCQkJCQkJIGNvbnN0IGNoYXIgKmZhbWlseV9wYXR0ZXJuLCBib29sIHZl cmJvc2UpCit7CisJUFFFeHBCdWZmZXJEYXRhIGJ1ZjsKKwlQR3Jlc3VsdCAgICpyZXM7CisJcHJp bnRRdWVyeU9wdCBteW9wdCA9IHBzZXQucG9wdDsKKwlib29sCQloYXZlX3doZXJlID0gZmFsc2U7 CisKKwlzdGF0aWMgY29uc3QgYm9vbCB0cmFuc2xhdGVfY29sdW1uc1tdID0ge2ZhbHNlLCBmYWxz ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwkJCQkJCQkJCQkJIGZhbHNlLCBmYWxzZSwgdHJ1ZSwg ZmFsc2V9OworCisJaW5pdFBRRXhwQnVmZmVyKCZidWYpOworCisJcHJpbnRmUFFFeHBCdWZmZXIo JmJ1ZiwKKwkJCQkJICAiU0VMRUNUIERJU1RJTkNUXG4iCisJCQkJCSAgIiAgYW0uYW1uYW1lIEFT IFwiJXNcIixcbiIKKwkJCQkJICAiICBuc2YubnNwbmFtZSBBUyBcIiVzXCIsXG4iCisJCQkJCSAg IiAgb2Yub3BmbmFtZSBBUyBcIiVzXCIsXG4iCisJCQkJCSAgIiAgcGdfY2F0YWxvZy5mb3JtYXRf dHlwZShvLmFtb3BsZWZ0dHlwZSwgTlVMTCkgQVMgXCIlc1wiLFxuIgorCQkJCQkgICIgIHBnX2Nh dGFsb2cuZm9ybWF0X3R5cGUoby5hbW9wcmlnaHR0eXBlLCBOVUxMKSBBUyBcIiVzXCIsXG4iCisJ CQkJCSAgIiAgQ0FTRSBXSEVOIHBnX2NhdGFsb2cucGdfb3BlcmF0b3JfaXNfdmlzaWJsZShvcC5v aWQpIFxuIgorCQkJCQkgICIgICAgVEhFTiBvcC5vcHJuYW1lOjpwZ19jYXRhbG9nLnRleHQgXG4i CisJCQkJCSAgIiAgICBFTFNFIG8uYW1vcG9wcjo6cGdfY2F0YWxvZy5yZWdvcGVyOjpwZ19jYXRh bG9nLnRleHQgXG4iCisJCQkJCSAgIiAgRU5EIEFTIFwiJXNcIlxuIiwKKwkJCQkJICBnZXR0ZXh0 X25vb3AoIkFNIiksCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJPcGZhbWlseSBTY2hlbWEiKSwKKwkJ CQkJICBnZXR0ZXh0X25vb3AoIk9wZmFtaWx5IE5hbWUiKSwKKwkJCQkJICBnZXR0ZXh0X25vb3Ao IkxlZnQgdHlwZSIpLAorCQkJCQkgIGdldHRleHRfbm9vcCgiUmlnaHQgdHlwZSIpLAorCQkJCQkg IGdldHRleHRfbm9vcCgiT3BlcmF0b3IiKSk7CisKKwlpZiAodmVyYm9zZSkKKwkJYXBwZW5kUFFF eHBCdWZmZXIoJmJ1ZiwKKwkJCQkJICAiLCBvLmFtb3BzdHJhdGVneSBBUyBcIiVzXCIsXG4iCisJ CQkJCSAgIiAgQ0FTRSBvLmFtb3BwdXJwb3NlXG4iCisJCQkJCSAgIiAgICBXSEVOICdvJyBUSEVO ICclcydcbiIKKwkJCQkJICAiICAgIFdIRU4gJ3MnIFRIRU4gJyVzJ1xuIgorCQkJCQkgICIgIEVO RCBBUyBcIiVzXCIsXG4iCisJCQkJCSAgIiAgb2ZzLm9wZm5hbWUgQVMgXCIlc1wiXG4iLAorCQkJ CQkgIGdldHRleHRfbm9vcCgiU3RyYXRlZ3kiKSwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIm9yZGVy aW5nIiksCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJzZWFyY2giKSwKKwkJCQkJICBnZXR0ZXh0X25v b3AoIlB1cnBvc2UiKSwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIlNvcnQgZmFtaWx5IikpOworCWFw cGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19hbW9wIG9c biIKKwkJCQkJICAiICBMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19vcGVyYXRvciBvcCBPTiBvcC5v aWQgPSBvLmFtb3BvcHJcbiIKKwkJCQkJICAiICBMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19vcGZh bWlseSBvZiBPTiBvZi5vaWQgPSBvLmFtb3BmYW1pbHlcbiIKKwkJCQkJICAiICBMRUZUIEpPSU4g cGdfY2F0YWxvZy5wZ19hbSBhbSBPTiBhbS5vaWQgPSBvZi5vcGZtZXRob2QgQU5EIGFtLm9pZCA9 IG8uYW1vcG1ldGhvZFxuIgorCQkJCQkgICIgIExFRlQgSk9JTiBwZ19jYXRhbG9nLnBnX25hbWVz cGFjZSBuc2YgT04gb2Yub3BmbmFtZXNwYWNlID0gbnNmLm9pZFxuIik7CisJaWYgKHZlcmJvc2Up CisJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCSAgIiAgTEVGVCBKT0lOIHBnX2NhdGFs b2cucGdfb3BmYW1pbHkgb2ZzIE9OIG9mcy5vaWQgPSBvLmFtb3Bzb3J0ZmFtaWx5XG4iKTsKKwor CWlmIChhY2Nlc3NfbWV0aG9kX3BhdHRlcm4pCisJCWhhdmVfd2hlcmUgPSBwcm9jZXNzU1FMTmFt ZVBhdHRlcm4ocHNldC5kYiwgJmJ1ZiwgYWNjZXNzX21ldGhvZF9wYXR0ZXJuLAorCQkJCQkJCQkJ CSAgIGZhbHNlLCBmYWxzZSwgTlVMTCwgImFtLmFtbmFtZSIsCisJCQkJCQkJCQkJICAgTlVMTCwg TlVMTCk7CisKKwlpZiAoZmFtaWx5X3BhdHRlcm4pCisJCXByb2Nlc3NTUUxOYW1lUGF0dGVybihw c2V0LmRiLCAmYnVmLCBmYW1pbHlfcGF0dGVybiwgaGF2ZV93aGVyZSwgZmFsc2UsCisJCQkJCQkJ ICAibnNmLm5zcG5hbWUiLCAib2Yub3BmbmFtZSIsIE5VTEwsIE5VTEwpOworCisJYXBwZW5kUFFF eHBCdWZmZXJTdHIoJmJ1ZiwgIk9SREVSIEJZIDEsIDIsIDMsIDQsIDUsIDY7Iik7CisKKwlyZXMg PSBQU1FMZXhlYyhidWYuZGF0YSk7CisJdGVybVBRRXhwQnVmZmVyKCZidWYpOworCWlmICghcmVz KQorCQlyZXR1cm4gZmFsc2U7CisKKwlteW9wdC5udWxsUHJpbnQgPSBOVUxMOworCW15b3B0LnRp dGxlID0gXygiTGlzdCBvcGVyYXRvcnMgb2YgZmFtaWx5IHJlbGF0ZWQgdG8gYWNjZXNzIG1ldGhv ZCIpOworCW15b3B0LnRyYW5zbGF0ZV9oZWFkZXIgPSB0cnVlOworCW15b3B0LnRyYW5zbGF0ZV9j b2x1bW5zID0gdHJhbnNsYXRlX2NvbHVtbnM7CisJbXlvcHQubl90cmFuc2xhdGVfY29sdW1ucyA9 IGxlbmd0aG9mKHRyYW5zbGF0ZV9jb2x1bW5zKTsKKworCXByaW50UXVlcnkocmVzLCAmbXlvcHQs IHBzZXQucXVlcnlGb3V0LCBmYWxzZSwgcHNldC5sb2dmaWxlKTsKKworCVBRY2xlYXIocmVzKTsK KwlyZXR1cm4gdHJ1ZTsKK30KKworLyoKKyAqIFxkQWZwCisgKiBMaXN0cyBwcm9jZWR1cmVzIGFz c29jaWF0ZWQgd2l0aCBhY2Nlc3MgbWV0aG9kIG9wZXJhdG9yIGZhbWlsaWVzLgorICoKKyAqIFRh a2VzIGFuIG9wdGlvbmFsIHJlZ2V4cCB0byBzZWxlY3QgcGFydGljdWxhciBhY2Nlc3MgbWV0aG9k cworICogYW5kIG9wZXJhdG9yIGZhbWlsaWVzCisgKi8KK2Jvb2wKK2xpc3RPcGVyYXRvckZhbWls eVByb2NlZHVyZXMoY29uc3QgY2hhciAqYWNjZXNzX21ldGhvZF9wYXR0ZXJuLAorCQkJCQkJCSBj b25zdCBjaGFyICpmYW1pbHlfcGF0dGVybiwgYm9vbCB2ZXJib3NlKQoreworCVBRRXhwQnVmZmVy RGF0YSBidWY7CisJUEdyZXN1bHQgICAqcmVzOworCXByaW50UXVlcnlPcHQgbXlvcHQgPSBwc2V0 LnBvcHQ7CisJYm9vbAkJaGF2ZV93aGVyZSA9IGZhbHNlOworCXN0YXRpYyBjb25zdCBib29sIHRy YW5zbGF0ZV9jb2x1bW5zW10gPSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm YWxzZSwgZmFsc2V9OworCisJaW5pdFBRRXhwQnVmZmVyKCZidWYpOworCisJcHJpbnRmUFFFeHBC dWZmZXIoJmJ1ZiwKKwkJCQkJICAiU0VMRUNUIERJU1RJTkNUXG4iCisJCQkJCSAgIiAgYW0uYW1u YW1lIEFTIFwiJXNcIixcbiIKKwkJCQkJICAiICBucy5uc3BuYW1lIEFTIFwiJXNcIixcbiIKKwkJ CQkJICAiICBvZi5vcGZuYW1lIEFTIFwiJXNcIixcbiIKKwkJCQkJICAiICBwZ19jYXRhbG9nLmZv cm1hdF90eXBlKGFwLmFtcHJvY2xlZnR0eXBlLCBOVUxMKSBBUyBcIiVzXCIsXG4iCisJCQkJCSAg IiAgcGdfY2F0YWxvZy5mb3JtYXRfdHlwZShhcC5hbXByb2NyaWdodHR5cGUsIE5VTEwpIEFTIFwi JXNcIixcbiIKKwkJCQkJICAiICBhcC5hbXByb2NudW0gQVMgXCIlc1wiXG4iLAorCQkJCQkgIGdl dHRleHRfbm9vcCgiQU0iKSwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIkZhbWlseSBzY2hlbWEiKSwK KwkJCQkJICBnZXR0ZXh0X25vb3AoIkZhbWlseSBuYW1lIiksCisJCQkJCSAgZ2V0dGV4dF9ub29w KCJMZWZ0IiksCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJSaWdodCIpLAorCQkJCQkgIGdldHRleHRf bm9vcCgiTnVtYmVyIikpOworCWlmICh2ZXJib3NlKQorCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVm LAorCQkJCQkgICIsIGFwLmFtcHJvYzo6cGdfY2F0YWxvZy5yZWdwcm9jOjpwZ19jYXRhbG9nLnRl eHQgQVMgXCIlc1wiXG4iLAorCQkJCQkgIGdldHRleHRfbm9vcCgiUHJvYyBuYW1lIikpOworCWFw cGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19hbXByb2Mg YXBcbiIKKwkJCQkJICAiICBMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19vcGZhbWlseSBvZiBPTiBv Zi5vaWQgPSBhcC5hbXByb2NmYW1pbHlcbiIKKwkJCQkJICAiICBMRUZUIEpPSU4gcGdfY2F0YWxv Zy5wZ19hbSBhbSBPTiBhbS5vaWQgPSBvZi5vcGZtZXRob2RcbiIKKwkJCQkJICAiICBMRUZUIEpP SU4gcGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UgbnMgT04gb2Yub3BmbmFtZXNwYWNlID0gbnMub2lk XG4iKTsKKworCWlmIChhY2Nlc3NfbWV0aG9kX3BhdHRlcm4pCisJCWhhdmVfd2hlcmUgPSBwcm9j ZXNzU1FMTmFtZVBhdHRlcm4ocHNldC5kYiwgJmJ1ZiwgYWNjZXNzX21ldGhvZF9wYXR0ZXJuLAor CQkJCQkJCQkJCSAgIGZhbHNlLCBmYWxzZSwgTlVMTCwgImFtLmFtbmFtZSIsCisJCQkJCQkJCQkJ ICAgTlVMTCwgTlVMTCk7CisJaWYgKGZhbWlseV9wYXR0ZXJuKQorCQlwcm9jZXNzU1FMTmFtZVBh dHRlcm4ocHNldC5kYiwgJmJ1ZiwgZmFtaWx5X3BhdHRlcm4sIGhhdmVfd2hlcmUsIGZhbHNlLAor CQkJCQkJCSAgIm5zLm5zcG5hbWUiLCAib2Yub3BmbmFtZSIsIE5VTEwsIE5VTEwpOworCisJYXBw ZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwKKwkJCQkJCSAiT1JERVIgQlkgMSwgMiwgMywgNCwgNSwg NjsiKTsKKworCXJlcyA9IFBTUUxleGVjKGJ1Zi5kYXRhKTsKKwl0ZXJtUFFFeHBCdWZmZXIoJmJ1 Zik7CisJaWYgKCFyZXMpCisJCXJldHVybiBmYWxzZTsKKworCW15b3B0Lm51bGxQcmludCA9IE5V TEw7CisJbXlvcHQudGl0bGUgPSBfKCJMaXN0IG9mIG9wZXJhdG9yIGZhbWlseSBwcm9jZWR1cmVz Iik7CisJbXlvcHQudHJhbnNsYXRlX2hlYWRlciA9IHRydWU7CisJbXlvcHQudHJhbnNsYXRlX2Nv bHVtbnMgPSB0cmFuc2xhdGVfY29sdW1uczsKKwlteW9wdC5uX3RyYW5zbGF0ZV9jb2x1bW5zID0g bGVuZ3Rob2YodHJhbnNsYXRlX2NvbHVtbnMpOworCisJcHJpbnRRdWVyeShyZXMsICZteW9wdCwg cHNldC5xdWVyeUZvdXQsIGZhbHNlLCBwc2V0LmxvZ2ZpbGUpOworCisJUFFjbGVhcihyZXMpOwor CXJldHVybiB0cnVlOworfQorCisvKgorICogXGRBb2MKKyAqIExpc3QgaW5kZXggYWNjZXNzIG1l dGhvZCBvcGVyYXRvciBjbGFzc2VzLgorICogVGFrZXMgYW4gb3B0aW9uYWwgcmVnZXhwIHRvIHNl bGVjdCBwYXJ0aWN1bGFyIGFjY2VzcyBtZXRob2QgYW5kIG9wZXJhdG9yIGNsYXNzLgorICovCiti b29sCitkZXNjcmliZUFjY2Vzc01ldGhvZE9wZXJhdG9yQ2xhc3Nlcyhjb25zdCBjaGFyICphY2Nl c3NfbWV0aG9kX3BhdHRlcm4sCisJCQkJCQkJCQljb25zdCBjaGFyICpvcGNsYXNzX3BhdHRlcm4s IGJvb2wgdmVyYm9zZSkKK3sKKwlQUUV4cEJ1ZmZlckRhdGEgYnVmOworCVBHcmVzdWx0ICAgKnJl czsKKwlwcmludFF1ZXJ5T3B0IG15b3B0ID0gcHNldC5wb3B0OworCWJvb2wJCWhhdmVfd2hlcmUg PSBmYWxzZTsKKwlzdGF0aWMgY29uc3QgYm9vbCB0cmFuc2xhdGVfY29sdW1uc1tdID0ge2ZhbHNl LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwkJCQkJCQkJCQkJIGZhbHNlLCBmYWxzZSwg ZmFsc2V9OworCisJaW5pdFBRRXhwQnVmZmVyKCZidWYpOworCisJcHJpbnRmUFFFeHBCdWZmZXIo JmJ1ZiwKKwkJCQkJICAiU0VMRUNUIgorCQkJCQkgICIgIGFtLmFtbmFtZSBBUyBcIiVzXCIsXG4i CisJCQkJCSAgIiAgbi5uc3BuYW1lIEFTIFwiJXNcIixcbiIKKwkJCQkJICAiICBjLm9wY25hbWUg QVMgXCIlc1wiLFxuIiwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIkFjY2VzcyBtZXRob2QiKSwKKwkJ CQkJICBnZXR0ZXh0X25vb3AoIlNjaGVtYSIpLAorCQkJCQkgIGdldHRleHRfbm9vcCgiTmFtZSIp KTsKKwlpZiAodmVyYm9zZSkKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCSAgIiAg cGdfY2F0YWxvZy5wZ19nZXRfdXNlcmJ5aWQoYy5vcGNvd25lcikgQVMgXCIlc1wiLFxuIiwKKwkJ CQkJCSAgZ2V0dGV4dF9ub29wKCJPd25lciIpKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAor CQkJCQkgICIgIChDQVNFIFdIRU4gcGdfY2F0YWxvZy5wZ19vcGZhbWlseV9pc192aXNpYmxlKG9m Lm9pZCkgVEhFTiAnJyBFTFNFIG9mbi5uc3BuYW1lIHx8ICcuJyBFTkQpIHx8IG9mLm9wZm5hbWUg QVMgXCIlc1wiLFxuIgorCQkJCQkgICIgIGMub3BjaW50eXBlOjpwZ19jYXRhbG9nLnJlZ3R5cGUg QVMgXCIlc1wiXG4iLAorCQkJCQkgIGdldHRleHRfbm9vcCgiRmFtaWx5IiksCisJCQkJCSAgZ2V0 dGV4dF9ub29wKCJJbmRleGVkIHR5cGUiKSk7CisJaWYgKHZlcmJvc2UpCisJCWFwcGVuZFBRRXhw QnVmZmVyKCZidWYsCisJCQkJCSAgIiwgYy5vcGNkZWZhdWx0IEFTIFwiJXNcIixcbiIKKwkJCQkJ ICAiICAoQ0FTRSBXSEVOIGMub3Bja2V5dHlwZSA9IDAgT1IgYy5vcGNrZXl0eXBlID0gYy5vcGNp bnR5cGVcbiIKKwkJCQkJICAiICAgIFRIRU4gTlVMTFxuIgorCQkJCQkgICIgICAgRUxTRSBjLm9w Y2tleXR5cGVcbiIKKwkJCQkJICAiICBFTkQpOjpwZ19jYXRhbG9nLnJlZ3R5cGUgQVMgXCIlc1wi XG4iLAorCQkJCQkgIGdldHRleHRfbm9vcCgiSXMgZGVmYXVsdCIpLAorCQkJCQkgIGdldHRleHRf bm9vcCgiU3RvcmVkIHR5cGUiKSk7CisJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJICAi RlJPTSBwZ19jYXRhbG9nLnBnX29wY2xhc3MgY1xuIgorCQkJCQkgICIgIExFRlQgSk9JTiBwZ19j YXRhbG9nLnBnX2FtIGFtIG9uIGFtLm9pZCA9IGMub3BjbWV0aG9kXG4iCisJCQkJCSAgIiAgTEVG VCBKT0lOIHBnX2NhdGFsb2cucGdfbmFtZXNwYWNlIG4gT04gbi5vaWQgPSBjLm9wY25hbWVzcGFj ZVxuIgorCQkJCQkgICIgIExFRlQgSk9JTiBwZ19jYXRhbG9nLnBnX29wZmFtaWx5IG9mIE9OIG9m Lm9pZCA9IGMub3BjZmFtaWx5XG4iCisJCQkJCSAgIiAgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdf bmFtZXNwYWNlIG9mbiBPTiBvZm4ub2lkID0gb2Yub3BmbmFtZXNwYWNlXG4iKTsKKworCWlmIChh Y2Nlc3NfbWV0aG9kX3BhdHRlcm4pCisJCWhhdmVfd2hlcmUgPSBwcm9jZXNzU1FMTmFtZVBhdHRl cm4ocHNldC5kYiwgJmJ1ZiwgYWNjZXNzX21ldGhvZF9wYXR0ZXJuLAorCQkJCQkJCQkJCSAgIGZh bHNlLCBmYWxzZSwgTlVMTCwgImFtLmFtbmFtZSIsIE5VTEwsIE5VTEwpOworCWlmIChvcGNsYXNz X3BhdHRlcm4pCisJCXByb2Nlc3NTUUxOYW1lUGF0dGVybihwc2V0LmRiLCAmYnVmLCBvcGNsYXNz X3BhdHRlcm4sIGhhdmVfd2hlcmUsIGZhbHNlLAorCQkJCQkJCSAgIm4ubnNwbmFtZSIsICJjLm9w Y25hbWUiLCBOVUxMLCBOVUxMKTsKKworCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICJPUkRF UiBCWSAxLDIsMzsiKTsKKwlyZXMgPSBQU1FMZXhlYyhidWYuZGF0YSk7CisJdGVybVBRRXhwQnVm ZmVyKCZidWYpOworCWlmICghcmVzKQorCQlyZXR1cm4gZmFsc2U7CisKKwlteW9wdC5udWxsUHJp bnQgPSBOVUxMOworCW15b3B0LnRpdGxlID0gXygiSW5kZXggYWNjZXNzIG1ldGhvZCBvcGVyYXRv ciBjbGFzc2VzIik7CisJbXlvcHQudHJhbnNsYXRlX2hlYWRlciA9IHRydWU7CisJbXlvcHQudHJh bnNsYXRlX2NvbHVtbnMgPSB0cmFuc2xhdGVfY29sdW1uczsKKwlteW9wdC5uX3RyYW5zbGF0ZV9j b2x1bW5zID0gbGVuZ3Rob2YodHJhbnNsYXRlX2NvbHVtbnMpOworCisJcHJpbnRRdWVyeShyZXMs ICZteW9wdCwgcHNldC5xdWVyeUZvdXQsIGZhbHNlLCBwc2V0LmxvZ2ZpbGUpOworCisJUFFjbGVh cihyZXMpOworCXJldHVybiB0cnVlOworfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2Ny aWJlLmggYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuaAppbmRleCBhNGNjNWVmYWUwLi4yNGE1OTY1 OThmIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuaAorKysgYi9zcmMvYmluL3Bz cWwvZGVzY3JpYmUuaApAQCAtMTExLDQgKzExMSwyMSBAQCBib29sCQlkZXNjcmliZVB1YmxpY2F0 aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKTsKIC8qIFxkUnMgKi8KIGJvb2wJCWRlc2NyaWJlU3Vi c2NyaXB0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UpOwogCisvKiBcZEFm cCAqLworZXh0ZXJuIGJvb2wgbGlzdE9wZXJhdG9yRmFtaWx5UHJvY2VkdXJlcyhjb25zdCBjaGFy ICphY2Nlc3NfbWV0aG9kX3BhdHRlcm4sCisJCQkJCQkJCQkJIGNvbnN0IGNoYXIgKmZhbWlseV9w YXR0ZXJuLAorCQkJCQkJCQkJCSBib29sIHZlcmJvc2UpOworCisvKiBcZEFmbyAqLworZXh0ZXJu IGJvb2wgbGlzdEZhbWlseUNsYXNzT3BlcmF0b3JzKGNvbnN0IGNoYXIgKmFjY2Vzc01ldGhvZF9w YXR0ZXJuLAorCQkJCQkJCQkJIGNvbnN0IGNoYXIgKmZhbWlseV9wYXR0ZXJuLCBib29sIHZlcmJv c2UpOworCisvKiBcZEFwICovCitleHRlcm4gYm9vbCBkZXNjcmliZUFjY2Vzc01ldGhvZFByb3Bl cnRpZXMoY29uc3QgY2hhciAqcGF0dGVybik7CisKKy8qIFxkQW9jICovCitleHRlcm4gYm9vbCBk ZXNjcmliZUFjY2Vzc01ldGhvZE9wZXJhdG9yQ2xhc3Nlcyhjb25zdCBjaGFyICphY2Nlc3NfbWV0 aG9kX3BhdHRlcm4sCisJCQkJCQkJCQkJCQljb25zdCBjaGFyICpvcGNsYXNzX3BhdHRlcm4sCisJ CQkJCQkJCQkJCQlib29sIHZlcmJvc2UpOworCiAjZW5kaWYJCQkJCQkJLyogREVTQ1JJQkVfSCAq LwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2hlbHAuYyBiL3NyYy9iaW4vcHNxbC9oZWxwLmMK aW5kZXggNTg2YWViZGRkMy4uY2RjOGIwZDIxMCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2hl bHAuYworKysgYi9zcmMvYmluL3BzcWwvaGVscC5jCkBAIC0yMjQsNiArMjI0LDEwIEBAIHNsYXNo VXNhZ2UodW5zaWduZWQgc2hvcnQgaW50IHBhZ2VyKQogCWZwcmludGYob3V0cHV0LCBfKCIgIFxc ZFtTK10gIE5BTUUgICAgICAgICAgIGRlc2NyaWJlIHRhYmxlLCB2aWV3LCBzZXF1ZW5jZSwgb3Ig aW5kZXhcbiIpKTsKIAlmcHJpbnRmKG91dHB1dCwgXygiICBcXGRhW1NdICBbUEFUVEVSTl0gICAg ICBsaXN0IGFnZ3JlZ2F0ZXNcbiIpKTsKIAlmcHJpbnRmKG91dHB1dCwgXygiICBcXGRBWytdICBb UEFUVEVSTl0gICAgICBsaXN0IGFjY2VzcyBtZXRob2RzXG4iKSk7CisJZnByaW50ZihvdXRwdXQs IF8oIiAgXFxkQWZvICAgW0FNUFRSTiBbT1BGUFRSTl1dIGxpc3Qgb3BlcmF0b3JzIG9mIGZhbWls eSByZWxhdGVkIHRvIGFjY2VzcyBtZXRob2RcbiIpKTsKKwlmcHJpbnRmKG91dHB1dCwgXygiICBc XGRBZnAgICBbQU1QVFJOIFtPUEZQVFJOXV0gbGlzdCBwcm9jZWR1cmVzIG9mIG9wZXJhdG9yIGZh bWlseSByZWxhdGVkIHRvIGFjY2VzcyBtZXRob2RcbiIpKTsKKwlmcHJpbnRmKG91dHB1dCwgXygi ICBcXGRBb2NbK11bQU1QVFJOIFtPUENQVFJOXV0gbGlzdCBvcGVyYXRvciBjbGFzc2VzIG9mIGlu ZGV4IGFjY2VzcyBtZXRob2RzXG4iKSk7CisJZnByaW50ZihvdXRwdXQsIF8oIiAgXFxkQXAgICAg W1BBVFRFUk5dICAgICAgbGlzdCBhY2Nlc3MgbWV0aG9kcyB3aXRoIHByb3BlcnRpZXNcbiIpKTsK IAlmcHJpbnRmKG91dHB1dCwgXygiICBcXGRiWytdICBbUEFUVEVSTl0gICAgICBsaXN0IHRhYmxl c3BhY2VzXG4iKSk7CiAJZnByaW50ZihvdXRwdXQsIF8oIiAgXFxkY1tTK10gW1BBVFRFUk5dICAg ICAgbGlzdCBjb252ZXJzaW9uc1xuIikpOwogCWZwcmludGYob3V0cHV0LCBfKCIgIFxcZENbK10g IFtQQVRURVJOXSAgICAgIGxpc3QgY2FzdHNcbiIpKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNx bC90YWItY29tcGxldGUuYyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYwppbmRleCA5ZGJk NTU1MTY2Li43ZTlmNmE3ZDExIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRl LmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCkBAIC00NjAsNiArNDYwLDIzIEBA IHN0YXRpYyBjb25zdCBTY2hlbWFRdWVyeSBRdWVyeV9mb3JfbGlzdF9vZl9yZWxhdGlvbnMgPSB7 CiAJLnJlc3VsdCA9ICJwZ19jYXRhbG9nLnF1b3RlX2lkZW50KGMucmVsbmFtZSkiLAogfTsKIAor c3RhdGljIGNvbnN0IFNjaGVtYVF1ZXJ5IFF1ZXJ5X2Zvcl9saXN0X29mX29wZXJhdG9yX2ZhbWls aWVzID0geworCS8qIG1pbl9zZXJ2ZXJfdmVyc2lvbiAqLworCTAsCisJLyogY2F0bmFtZSAqLwor CSJwZ19jYXRhbG9nLnBnX29wZmFtaWx5IGMiLAorCS8qIHNlbGNvbmRpdGlvbiAqLworCU5VTEws CisJLyogdmlzY29uZGl0aW9uICovCisJInRydWUiLAorCS8qIG5hbWVzcGFjZSAqLworCSJjLm9w Zm5hbWVzcGFjZSIsCisJLyogcmVzdWx0ICovCisJInBnX2NhdGFsb2cucXVvdGVfaWRlbnQoYy5v cGZuYW1lKSIsCisJLyogcXVhbHJlc3VsdCAqLworCU5VTEwKK307CisKIC8qIFJlbGF0aW9ucyBz dXBwb3J0aW5nIElOU0VSVCwgVVBEQVRFIG9yIERFTEVURSAqLwogc3RhdGljIGNvbnN0IFNjaGVt YVF1ZXJ5IFF1ZXJ5X2Zvcl9saXN0X29mX3VwZGF0YWJsZXMgPSB7CiAJLmNhdG5hbWUgPSAicGdf Y2F0YWxvZy5wZ19jbGFzcyBjIiwKQEAgLTEzMjksNyArMTM0Niw4IEBAIHBzcWxfY29tcGxldGlv bihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJCSJcXGEiLAogCQkiXFxj b25uZWN0IiwgIlxcY29ubmluZm8iLCAiXFxDIiwgIlxcY2QiLCAiXFxjb3B5IiwKIAkJIlxcY29w eXJpZ2h0IiwgIlxcY3Jvc3N0YWJ2aWV3IiwKLQkJIlxcZCIsICJcXGRhIiwgIlxcZEEiLCAiXFxk YiIsICJcXGRjIiwgIlxcZEMiLCAiXFxkZCIsICJcXGRkcCIsICJcXGREIiwKKwkJIlxcZCIsICJc XGRhIiwgIlxcZEEiLCAiXFxkQXAiLCAiXFxkQWZvIiwgIlxcZEFmcCIsICJcXGRBb2MiLAorCQki XFxkYiIsICJcXGRjIiwgIlxcZEMiLCAiXFxkZCIsICJcXGRkcCIsICJcXGREIiwKIAkJIlxcZGVz IiwgIlxcZGV0IiwgIlxcZGV1IiwgIlxcZGV3IiwgIlxcZEUiLCAiXFxkZiIsCiAJCSJcXGRGIiwg IlxcZEZkIiwgIlxcZEZwIiwgIlxcZEZ0IiwgIlxcZGciLCAiXFxkaSIsICJcXGRsIiwgIlxcZEwi LAogCQkiXFxkbSIsICJcXGRuIiwgIlxcZG8iLCAiXFxkTyIsICJcXGRwIiwKQEAgLTM0MTQsNiAr MzQzMiwxMCBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBp bnQgZW5kKQogCX0KIAllbHNlIGlmIChUYWlsTWF0Y2hlc0NTKCJcXGRhKiIpKQogCQlDT01QTEVU RV9XSVRIX1ZFUlNJT05FRF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfYWdncmVnYXRl cywgTlVMTCk7CisJZWxzZSBpZiAoVGFpbE1hdGNoZXNDUygiXFxkQWYqIikpCisJCUNPTVBMRVRF X1dJVEhfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfYWNjZXNzX21ldGhvZHMpOworCWVsc2UgaWYg KFRhaWxNYXRjaGVzQ1MoIlxcZEFmKiIsIE1hdGNoQW55KSkKKwkJQ09NUExFVEVfV0lUSF9TQ0hF TUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2Zfb3BlcmF0b3JfZmFtaWxpZXMsIE5VTEwpOwogCWVs c2UgaWYgKFRhaWxNYXRjaGVzQ1MoIlxcZEEqIikpCiAJCUNPTVBMRVRFX1dJVEhfUVVFUlkoUXVl cnlfZm9yX2xpc3Rfb2ZfYWNjZXNzX21ldGhvZHMpOwogCWVsc2UgaWYgKFRhaWxNYXRjaGVzQ1Mo IlxcZGIqIikpCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dAppbmRleCAzODE4Y2ZlYTdlLi4x YjI0YTBhMzA3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0 CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNxbC5vdXQKQEAgLTMyNDMsMyArMzI0 Myw5NCBAQCBsYXN0IGVycm9yIG1lc3NhZ2U6IGRpdmlzaW9uIGJ5IHplcm8KIFxlY2hvICdsYXN0 IGVycm9yIGNvZGU6JyA6TEFTVF9FUlJPUl9TUUxTVEFURQogbGFzdCBlcnJvciBjb2RlOiAyMjAx MgogXHVuc2V0IEZFVENIX0NPVU5UCistLSBjaGVjayBwcmludGluZyBpbmZvIGFib3V0IGFjY2Vz cyBtZXRob2RzCitcZEEKK0xpc3Qgb2YgYWNjZXNzIG1ldGhvZHMKKyAgTmFtZSAgfCBUeXBlICAK Ky0tLS0tLS0tKy0tLS0tLS0KKyBicmluICAgfCBJbmRleAorIGJ0cmVlICB8IEluZGV4CisgZ2lu ICAgIHwgSW5kZXgKKyBnaXN0ICAgfCBJbmRleAorIGhhc2ggICB8IEluZGV4Cisgc3BnaXN0IHwg SW5kZXgKKyg2IHJvd3MpCisKK1xkQSsKKyAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Yg YWNjZXNzIG1ldGhvZHMKKyAgTmFtZSAgfCBUeXBlICB8ICAgSGFuZGxlciAgIHwgICAgICAgICAg ICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgCistLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGJyaW4gICB8 IEluZGV4IHwgYnJpbmhhbmRsZXIgfCBibG9jayByYW5nZSBpbmRleCAoQlJJTikgYWNjZXNzIG1l dGhvZAorIGJ0cmVlICB8IEluZGV4IHwgYnRoYW5kbGVyICAgfCBiLXRyZWUgaW5kZXggYWNjZXNz IG1ldGhvZAorIGdpbiAgICB8IEluZGV4IHwgZ2luaGFuZGxlciAgfCBHSU4gaW5kZXggYWNjZXNz IG1ldGhvZAorIGdpc3QgICB8IEluZGV4IHwgZ2lzdGhhbmRsZXIgfCBHaVNUIGluZGV4IGFjY2Vz cyBtZXRob2QKKyBoYXNoICAgfCBJbmRleCB8IGhhc2hoYW5kbGVyIHwgaGFzaCBpbmRleCBhY2Nl c3MgbWV0aG9kCisgc3BnaXN0IHwgSW5kZXggfCBzcGdoYW5kbGVyICB8IFNQLUdpU1QgaW5kZXgg YWNjZXNzIG1ldGhvZAorKDYgcm93cykKKworXGRBIGdpbgorTGlzdCBvZiBhY2Nlc3MgbWV0aG9k cworIE5hbWUgfCBUeXBlICAKKy0tLS0tLSstLS0tLS0tCisgZ2luICB8IEluZGV4CisoMSByb3cp CisKK1xkQSsgZ2luCisgICAgICAgICAgICAgICBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCisgTmFt ZSB8IFR5cGUgIHwgIEhhbmRsZXIgICB8ICAgICAgIERlc2NyaXB0aW9uICAgICAgIAorLS0tLS0t Ky0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBnaW4gIHwg SW5kZXggfCBnaW5oYW5kbGVyIHwgR0lOIGluZGV4IGFjY2VzcyBtZXRob2QKKygxIHJvdykKKwor XGRBcCBnaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEFjY2VzcyBtZXRob2QgcHJvcGVydGllcworIEFNICB8IENhbiBvcmRlciB8 IFN1cHBvcnQgdW5pcXVlIGluZGV4ZXMgfCBTdXBwb3J0IGluZGV4ZXMgd2l0aCBtdWx0aXBsZSBj b2x1bW5zIHwgU3VwcG9ydCBleGNsdXNpb24gY29uc3RyYWludHMgfCBDYW4gaW5jbHVkZSBub24t a2V5IGNvbHVtbnMgCistLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBnaW4gfCBmICAg ICAgICAgfCBmICAgICAgICAgICAgICAgICAgICAgIHwgdCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZgorKDEgcm93 KQorCitcZEFmbyBicmluIHV1aWRfbWlubWF4X29wcworICAgICAgICAgICAgICBMaXN0IG9wZXJh dG9ycyBvZiBmYW1pbHkgcmVsYXRlZCB0byBhY2Nlc3MgbWV0aG9kCisgIEFNICB8IE9wZmFtaWx5 IFNjaGVtYSB8ICBPcGZhbWlseSBOYW1lICB8IExlZnQgdHlwZSB8IFJpZ2h0IHR5cGUgfCBPcGVy YXRvciAKKy0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIGJyaW4gfCBwZ19jYXRhbG9nICAgICAgfCB1 dWlkX21pbm1heF9vcHMgfCB1dWlkICAgICAgfCB1dWlkICAgICAgIHwgPAorIGJyaW4gfCBwZ19j YXRhbG9nICAgICAgfCB1dWlkX21pbm1heF9vcHMgfCB1dWlkICAgICAgfCB1dWlkICAgICAgIHwg PD0KKyBicmluIHwgcGdfY2F0YWxvZyAgICAgIHwgdXVpZF9taW5tYXhfb3BzIHwgdXVpZCAgICAg IHwgdXVpZCAgICAgICB8ID0KKyBicmluIHwgcGdfY2F0YWxvZyAgICAgIHwgdXVpZF9taW5tYXhf b3BzIHwgdXVpZCAgICAgIHwgdXVpZCAgICAgICB8ID4KKyBicmluIHwgcGdfY2F0YWxvZyAgICAg IHwgdXVpZF9taW5tYXhfb3BzIHwgdXVpZCAgICAgIHwgdXVpZCAgICAgICB8ID49CisoNSByb3dz KQorCitcZEFmbyAqIHBnX2NhdGFsb2cuanNvbmJfcGF0aF9vcHMKKyAgICAgICAgICAgICBMaXN0 IG9wZXJhdG9ycyBvZiBmYW1pbHkgcmVsYXRlZCB0byBhY2Nlc3MgbWV0aG9kCisgQU0gIHwgT3Bm YW1pbHkgU2NoZW1hIHwgT3BmYW1pbHkgTmFtZSAgfCBMZWZ0IHR5cGUgfCBSaWdodCB0eXBlIHwg T3BlcmF0b3IgCistLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgZ2luIHwgcGdfY2F0YWxvZyAgICAgIHwg anNvbmJfcGF0aF9vcHMgfCBqc29uYiAgICAgfCBqc29uYiAgICAgIHwgQD4KKygxIHJvdykKKwor XGRBZnAgYnJpbiB1dWlkX21pbm1heF9vcHMKKyAgICAgICAgICAgICAgIExpc3Qgb2Ygb3BlcmF0 b3IgZmFtaWx5IHByb2NlZHVyZXMKKyAgQU0gIHwgRmFtaWx5IHNjaGVtYSB8ICAgRmFtaWx5IG5h bWUgICB8IExlZnQgfCBSaWdodCB8IE51bWJlciAKKy0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0KKyBicmluIHwgcGdfY2F0YWxv ZyAgICB8IHV1aWRfbWlubWF4X29wcyB8IHV1aWQgfCB1dWlkICB8ICAgICAgMQorIGJyaW4gfCBw Z19jYXRhbG9nICAgIHwgdXVpZF9taW5tYXhfb3BzIHwgdXVpZCB8IHV1aWQgIHwgICAgICAyCisg YnJpbiB8IHBnX2NhdGFsb2cgICAgfCB1dWlkX21pbm1heF9vcHMgfCB1dWlkIHwgdXVpZCAgfCAg ICAgIDMKKyBicmluIHwgcGdfY2F0YWxvZyAgICB8IHV1aWRfbWlubWF4X29wcyB8IHV1aWQgfCB1 dWlkICB8ICAgICAgNAorKDQgcm93cykKKworXGRBZnAgKiBwZ19jYXRhbG9nLnV1aWRfb3BzCisg ICAgICAgICAgICAgTGlzdCBvZiBvcGVyYXRvciBmYW1pbHkgcHJvY2VkdXJlcworICBBTSAgIHwg RmFtaWx5IHNjaGVtYSB8IEZhbWlseSBuYW1lIHwgTGVmdCB8IFJpZ2h0IHwgTnVtYmVyIAorLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0rLS0tLS0tLSstLS0tLS0t LQorIGJ0cmVlIHwgcGdfY2F0YWxvZyAgICB8IHV1aWRfb3BzICAgIHwgdXVpZCB8IHV1aWQgIHwg ICAgICAxCisgYnRyZWUgfCBwZ19jYXRhbG9nICAgIHwgdXVpZF9vcHMgICAgfCB1dWlkIHwgdXVp ZCAgfCAgICAgIDIKKyBoYXNoICB8IHBnX2NhdGFsb2cgICAgfCB1dWlkX29wcyAgICB8IHV1aWQg fCB1dWlkICB8ICAgICAgMQorIGhhc2ggIHwgcGdfY2F0YWxvZyAgICB8IHV1aWRfb3BzICAgIHwg dXVpZCB8IHV1aWQgIHwgICAgICAyCisoNCByb3dzKQorCitcZEFvYyBicmluIHBnKi5vaWQqCisg ICAgICAgICAgICAgICAgICAgIEluZGV4IGFjY2VzcyBtZXRob2Qgb3BlcmF0b3IgY2xhc3Nlcwor IEFjY2VzcyBtZXRob2QgfCAgIFNjaGVtYSAgIHwgICAgICBOYW1lICAgICAgfCAgICAgRmFtaWx5 ICAgICB8IEluZGV4ZWQgdHlwZSAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgYnJpbiAgICAgICAg ICB8IHBnX2NhdGFsb2cgfCBvaWRfbWlubWF4X29wcyB8IG9pZF9taW5tYXhfb3BzIHwgb2lkCiso MSByb3cpCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BzcWwuc3FsIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvcHNxbC5zcWwKaW5kZXggYjQ1ZGE5YmI4ZC4uZmZlMDgwMzc2NyAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHNxbC5zcWwKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcHNxbC5zcWwKQEAgLTY4OCwzICs2ODgsMTUgQEAgc2VsZWN0IDEvKDE1LXVu aXF1ZTIpIGZyb20gdGVuazEgb3JkZXIgYnkgdW5pcXVlMiBsaW1pdCAxOTsKIFxlY2hvICdsYXN0 IGVycm9yIGNvZGU6JyA6TEFTVF9FUlJPUl9TUUxTVEFURQogCiBcdW5zZXQgRkVUQ0hfQ09VTlQK KworLS0gY2hlY2sgcHJpbnRpbmcgaW5mbyBhYm91dCBhY2Nlc3MgbWV0aG9kcworXGRBCitcZEEr CitcZEEgZ2luCitcZEErIGdpbgorXGRBcCBnaW4KK1xkQWZvIGJyaW4gdXVpZF9taW5tYXhfb3Bz CitcZEFmbyAqIHBnX2NhdGFsb2cuanNvbmJfcGF0aF9vcHMKK1xkQWZwIGJyaW4gdXVpZF9taW5t YXhfb3BzCitcZEFmcCAqIHBnX2NhdGFsb2cudXVpZF9vcHMKK1xkQW9jIGJyaW4gcGcqLm9pZCoK --=_535d1f80120ea085f78b594b03539f1a Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0002-psql_add_index_info-v4.patch Content-Disposition: attachment; filename=0002-psql_add_index_info-v4.patch; size=15954 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbCBiL2RvYy9zcmMvc2dt bC9yZWYvcHNxbC1yZWYuc2dtbAppbmRleCBiZWU4OTg3Yzg1Li43Mjk0YjEyNTNjIDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Jl Zi9wc3FsLXJlZi5zZ21sCkBAIC0xNDI4LDYgKzE0MjgsMzQgQEAgdGVzdGRiPSZndDsKICAgICAg ICAgPC9saXN0aXRlbT4KICAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgICA8dmFybGlzdGVu dHJ5PgorICAgICAgICA8dGVybT48bGl0ZXJhbD5cZGlwIFsgPGxpbmsgbGlua2VuZD0iYXBwLXBz cWwtcGF0dGVybnMiPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXR0ZXJuPC9yZXBs YWNlYWJsZT48L2xpbms+IF08L2xpdGVyYWw+PC90ZXJtPgorCisgICAgICAgIDxsaXN0aXRlbT4K KyAgICAgICAgPHBhcmE+CisgICAgICAgIFNob3dzIGluZGV4IHByb3BlcnRpZXMgbGlzdGVkIGlu CisgICAgICAgIDx4cmVmIGxpbmtlbmQ9ImZ1bmN0aW9ucy1pbmZvLWluZGV4LXByb3BzIi8+Lgor ICAgICAgICBJZiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGF0dGVybjwvcmVwbGFj ZWFibGU+IGlzCisgICAgICAgIHNwZWNpZmllZCwgb25seSBhY2Nlc3MgbWV0aG9kcyB3aG9zZSBu YW1lcyBtYXRjaCB0aGUgcGF0dGVybiBhcmUgc2hvd24uCisgICAgICAgIDwvcGFyYT4KKyAgICAg ICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgICA8dmFybGlzdGVu dHJ5PgorICAgICAgICA8dGVybT4KKyAgICAgICAgICA8bGl0ZXJhbD5cZGljcCBbIDxsaW5rIGxp bmtlbmQ9ImFwcC1wc3FsLXBhdHRlcm5zIj48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ cGF0dGVybjwvcmVwbGFjZWFibGU+PC9saW5rPl0KKyAgICAgICAgICA8L2xpdGVyYWw+CisgICAg ICAgIDwvdGVybT4KKworICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAg ICBTaG93cyBpbmRleCBjb2x1bW4gcHJvcGVydGllcyBsaXN0ZWQgaW4KKyAgICAgICAgPHhyZWYg bGlua2VuZD0iZnVuY3Rpb25zLWluZm8taW5kZXgtY29sdW1uLXByb3BzIi8+LgorICAgICAgICBJ ZiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGF0dGVybjwvcmVwbGFjZWFibGU+IGlz CisgICAgICAgIHNwZWNpZmllZCwgb25seSBhY2Nlc3MgbWV0aG9kcyB3aG9zZSBuYW1lcyBtYXRj aCB0aGUgcGF0dGVybiBhcmUgc2hvd24uCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0 aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgogCiAgICAgICA8dmFybGlzdGVudHJ5PgogICAg ICAgICA8dGVybT48bGl0ZXJhbD5cZGVzWytdIFsgPGxpbmsgbGlua2VuZD0iYXBwLXBzcWwtcGF0 dGVybnMiPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXR0ZXJuPC9yZXBsYWNlYWJs ZT48L2xpbms+IF08L2xpdGVyYWw+PC90ZXJtPgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Nv bW1hbmQuYyBiL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMKaW5kZXggN2MzNWFlZDAxOC4uYTU0ZGMy NzA5OCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYworKysgYi9zcmMvYmluL3Bz cWwvY29tbWFuZC5jCkBAIC04MDYsNiArODA2LDE2IEBAIGV4ZWNfY29tbWFuZF9kKFBzcWxTY2Fu U3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoLCBjb25zdCBjaGFyICpjbWQpCiAJ CQljYXNlICd2JzoKIAkJCWNhc2UgJ20nOgogCQkJY2FzZSAnaSc6CisJCQkJaWYgKHN0cm5jbXAo Y21kLCAiZGlwIiwgMykgPT0gMCkKKwkJCQl7CisJCQkJCXN1Y2Nlc3MgPSBkZXNjcmliZUluZGV4 UHJvcGVydGllcyhwYXR0ZXJuLCBzaG93X3N5c3RlbSk7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJ CQllbHNlIGlmIChzdHJuY21wKGNtZCwgImRpY3AiLCA0KSA9PSAwKQorCQkJCXsKKwkJCQkJc3Vj Y2VzcyA9IGRlc2NyaWJlSW5kZXhDb2x1bW5Qcm9wZXJ0aWVzKHBhdHRlcm4sIHNob3dfc3lzdGVt KTsKKwkJCQkJYnJlYWs7CisJCQkJfQogCQkJY2FzZSAncyc6CiAJCQljYXNlICdFJzoKIAkJCQlz dWNjZXNzID0gbGlzdFRhYmxlcygmY21kWzFdLCBwYXR0ZXJuLCBzaG93X3ZlcmJvc2UsIHNob3df c3lzdGVtKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9w c3FsL2Rlc2NyaWJlLmMKaW5kZXggNDk0N2ZiNjlmYS4uZGJjMWNmNzI2MCAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKQEAg LTE4LDYgKzE4LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX2Nhc3RfZC5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfY2xhc3NfZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfZGVmYXVsdF9hY2xf ZC5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfaW5kZXguaCIKICNpbmNsdWRlICJmZV91dGlscy9z dHJpbmdfdXRpbHMuaCIKIAogI2luY2x1ZGUgImNvbW1vbi5oIgpAQCAtNDQsNiArNDUsOSBAQCBz dGF0aWMgYm9vbCBkZXNjcmliZU9uZVRTQ29uZmlnKGNvbnN0IGNoYXIgKm9pZCwgY29uc3QgY2hh ciAqbnNwbmFtZSwKIAkJCQkJY29uc3QgY2hhciAqcG5zcG5hbWUsIGNvbnN0IGNoYXIgKnByc25h bWUpOwogc3RhdGljIHZvaWQgcHJpbnRBQ0xDb2x1bW4oUFFFeHBCdWZmZXIgYnVmLCBjb25zdCBj aGFyICpjb2xuYW1lKTsKIHN0YXRpYyBib29sIGxpc3RPbmVFeHRlbnNpb25Db250ZW50cyhjb25z dCBjaGFyICpleHRuYW1lLCBjb25zdCBjaGFyICpvaWQpOworc3RhdGljIGJvb2wgZGVzY3JpYmVP bmVJbmRleENvbHVtblByb3BlcnRpZXMoY29uc3QgY2hhciAqb2lkLCBjb25zdCBjaGFyICpuc3Bu YW1lLAorCQkJCQkJCQkgY29uc3QgY2hhciAqaWR4bmFtZSwgY29uc3QgY2hhciAqYW1uYW1lLAor CQkJCQkJCQkgY29uc3QgY2hhciAqdGFibmFtZSk7CiAKIAogLyotLS0tLS0tLS0tLS0tLS0tCkBA IC01OTEzLDMgKzU5MTcsMjY0IEBAIGRlc2NyaWJlQWNjZXNzTWV0aG9kT3BlcmF0b3JDbGFzc2Vz KGNvbnN0IGNoYXIgKmFjY2Vzc19tZXRob2RfcGF0dGVybiwKIAlQUWNsZWFyKHJlcyk7CiAJcmV0 dXJuIHRydWU7CiB9CisKKy8qCisgKiBcZGlwCisgKiBEZXNjcmliZXMgaW5kZXggcHJvcGVydGll cy4KKyAqCisgKiBUYWtlcyBhbiBvcHRpb25hbCByZWdleHAgdG8gc2VsZWN0IHBhcnRpY3VsYXIg aW5kZXguCisgKi8KK2Jvb2wKK2Rlc2NyaWJlSW5kZXhQcm9wZXJ0aWVzKGNvbnN0IGNoYXIgKnBh dHRlcm4sIGJvb2wgc2hvd1N5c3RlbSkKK3sKKwlQUUV4cEJ1ZmZlckRhdGEgYnVmOworCVBHcmVz dWx0ICAgKnJlczsKKwlwcmludFF1ZXJ5T3B0IG15b3B0ID0gcHNldC5wb3B0OworCisJc3RhdGlj IGNvbnN0IGJvb2wgdHJhbnNsYXRlX2NvbHVtbnNbXSA9IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBm YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZX07CisKKwlpbml0UFFFeHBCdWZmZXIoJmJ1Zik7CisK KwlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkgICJTRUxFQ1QiCisJCQkJCSAgIiAgbi5u c3BuYW1lIEFTIFwiJXNcIixcbiIKKwkJCQkJICAiICBjLnJlbG5hbWUgQVMgXCIlc1wiLFxuIgor CQkJCQkgICIgIGFtLmFtbmFtZSBBUyBcIiVzXCIsXG4iLAorCQkJCQkgIGdldHRleHRfbm9vcCgi U2NoZW1hIiksCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJOYW1lIiksCisJCQkJCSAgZ2V0dGV4dF9u b29wKCJBY2Nlc3MgbWV0aG9kIikpOworCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCXBz ZXQuc3ZlcnNpb24gPj0gOTA2MDAgPworCQkJCQkgICIgIHBnX2NhdGFsb2cucGdfaW5kZXhfaGFz X3Byb3BlcnR5KGMub2lkLCAnY2x1c3RlcmFibGUnKSBBUyBcIiVzXCIsXG4iCisJCQkJCSAgIiAg cGdfY2F0YWxvZy5wZ19pbmRleF9oYXNfcHJvcGVydHkoYy5vaWQsICdpbmRleF9zY2FuJykgQVMg XCIlc1wiLFxuIgorCQkJCQkgICIgIHBnX2NhdGFsb2cucGdfaW5kZXhfaGFzX3Byb3BlcnR5KGMu b2lkLCAnYml0bWFwX3NjYW4nKSAgQVMgXCIlc1wiLFxuIgorCQkJCQkgICIgIHBnX2NhdGFsb2cu cGdfaW5kZXhfaGFzX3Byb3BlcnR5KGMub2lkLCAnYmFja3dhcmRfc2NhbicpIEFTIFwiJXNcIlxu IgorCQkJCQkgIDoKKwkJCQkJICAiICBhbS5hbWNsdXN0ZXJhYmxlIEFTIFwiJXNcIixcbiIKKwkJ CQkJICAiICBhbS5hbWdldHR1cGxlIDw+IDAgQVMgXCIlc1wiLFxuIgorCQkJCQkgICIgIGFtLmFt Z2V0Yml0bWFwIDw+IDAgQVMgXCIlc1wiLFxuIgorCQkJCQkgICIgIGFtLmFtY2FuYmFja3dhcmQg QVMgXCIlc1wiXG4iLAorCQkJCQkgIGdldHRleHRfbm9vcCgiQ2x1c3RlcmFibGUiKSwKKwkJCQkJ ICBnZXR0ZXh0X25vb3AoIkluZGV4IHNjYW4iKSwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIkJpdG1h cCBzY2FuIiksCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJCYWNrd2FyZCBzY2FuIikpOworCWFwcGVu ZFBRRXhwQnVmZmVyU3RyKCZidWYsCisJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBj XG4iCisJCQkJCSAgIiAgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfbmFtZXNwYWNlIG4gT04gbi5v aWQgPSBjLnJlbG5hbWVzcGFjZVxuIgorCQkJCQkgICIgIExFRlQgSk9JTiBwZ19jYXRhbG9nLnBn X2FtIGFtIE9OIGFtLm9pZCA9IGMucmVsYW1cbiIKKwkJCQkJICAiV0hFUkUgYy5yZWxraW5kPSdp J1xuIgorCQkJCQkgICIgIEFORCBuLm5zcG5hbWUgIX4gJ3BnX3RvYXN0J1xuIik7CisKKwlpZiAo IXNob3dTeXN0ZW0gJiYgIXBhdHRlcm4pCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsCisJ CQkJCQkJICIgIEFORCBuLm5zcG5hbWUgPD4gJ3BnX2NhdGFsb2cnXG4iCisJCQkJCQkJICIgIEFO RCBuLm5zcG5hbWUgPD4gJ2luZm9ybWF0aW9uX3NjaGVtYSdcbiIpOworCisJcHJvY2Vzc1NRTE5h bWVQYXR0ZXJuKHBzZXQuZGIsICZidWYsIHBhdHRlcm4sIHRydWUsIGZhbHNlLAorCQkJCQkJICAi bi5uc3BuYW1lIiwgImMucmVsbmFtZSIsIE5VTEwsIE5VTEwpOworCisJYXBwZW5kUFFFeHBCdWZm ZXJTdHIoJmJ1ZiwgIk9SREVSIEJZIDE7Iik7CisJcmVzID0gUFNRTGV4ZWMoYnVmLmRhdGEpOwor CXRlcm1QUUV4cEJ1ZmZlcigmYnVmKTsKKwlpZiAoIXJlcykKKwkJcmV0dXJuIGZhbHNlOworCisJ bXlvcHQubnVsbFByaW50ID0gTlVMTDsKKwlteW9wdC50aXRsZSA9IF8oIkluZGV4IHByb3BlcnRp ZXMiKTsKKwlteW9wdC50cmFuc2xhdGVfaGVhZGVyID0gdHJ1ZTsKKwlteW9wdC50cmFuc2xhdGVf Y29sdW1ucyA9IHRyYW5zbGF0ZV9jb2x1bW5zOworCW15b3B0Lm5fdHJhbnNsYXRlX2NvbHVtbnMg PSBsZW5ndGhvZih0cmFuc2xhdGVfY29sdW1ucyk7CisKKwlwcmludFF1ZXJ5KHJlcywgJm15b3B0 LCBwc2V0LnF1ZXJ5Rm91dCwgZmFsc2UsIHBzZXQubG9nZmlsZSk7CisKKwlQUWNsZWFyKHJlcyk7 CisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBcZGljcAorICogRGVzY3JpYmVzIGluZGV4IGlu ZGV4IGNvbHVtbiBwcm9wZXJ0aWVzLgorICoKKyAqIFRha2VzIGFuIG9wdGlvbmFsIHJlZ2V4cCB0 byBzZWxlY3QgcGFydGljdWxhciBpbmRleC4KKyAqLworYm9vbAorZGVzY3JpYmVJbmRleENvbHVt blByb3BlcnRpZXMoY29uc3QgY2hhciAqaW5kZXhfcGF0dGVybiwgYm9vbCBzaG93U3lzdGVtKQor eworCVBRRXhwQnVmZmVyRGF0YSBidWY7CisJUEdyZXN1bHQgICAqcmVzOworCWludAkJCWk7CisK Kwlpbml0UFFFeHBCdWZmZXIoJmJ1Zik7CisKKwlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJ CQkgICJTRUxFQ1QgRElTVElOQ1QgYy5vaWQsXG4iCisJCQkJCSAgIiAgbi5uc3BuYW1lLFxuIgor CQkJCQkgICIgIGMucmVsbmFtZSxcbiIKKwkJCQkJICAiICBhbS5hbW5hbWUsXG4iCisJCQkJCSAg IiAgYzIucmVsbmFtZVxuIgorCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgY1xuIgor CQkJCQkgICIgIExFRlQgSk9JTiBwZ19jYXRhbG9nLnBnX25hbWVzcGFjZSBuIE9OIG4ub2lkID0g cmVsbmFtZXNwYWNlXG4iCisJCQkJCSAgIiAgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfYW0gYW0g T04gYW0ub2lkID0gYy5yZWxhbVxuIgorCQkJCQkgICIgIExFRlQgSk9JTiBwZ19jYXRhbG9nLnBn X2luZGV4IGkgT04gaS5pbmRleHJlbGlkID0gYy5vaWRcbiIKKwkJCQkJICAiICBMRUZUIEpPSU4g cGdfY2F0YWxvZy5wZ19jbGFzcyBjMiBPTiBpLmluZHJlbGlkID0gYzIub2lkXG4iKTsKKworCWFw cGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICJXSEVSRSBjLnJlbGtpbmQ9J2knXG4iKTsKKworCWlm ICghc2hvd1N5c3RlbSAmJiAhaW5kZXhfcGF0dGVybikKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIo JmJ1ZiwgIkFORCBuLm5zcG5hbWUgPD4gJ3BnX2NhdGFsb2cnXG4iCisJCQkJCQkJICJBTkQgbi5u c3BuYW1lIDw+ICdpbmZvcm1hdGlvbl9zY2hlbWEnXG4iKTsKKworCXByb2Nlc3NTUUxOYW1lUGF0 dGVybihwc2V0LmRiLCAmYnVmLCBpbmRleF9wYXR0ZXJuLCB0cnVlLCBmYWxzZSwKKwkJCQkJCSAg Im4ubnNwbmFtZSIsICJjLnJlbG5hbWUiLCBOVUxMLAorCQkJCQkJICAicGdfY2F0YWxvZy5wZ190 YWJsZV9pc192aXNpYmxlKGMub2lkKSIpOworCisJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1Ziwg Ik9SREVSIEJZIDIsIDM7Iik7CisKKwlyZXMgPSBQU1FMZXhlYyhidWYuZGF0YSk7CisJdGVybVBR RXhwQnVmZmVyKCZidWYpOworCWlmICghcmVzKQorCQlyZXR1cm4gZmFsc2U7CisKKwlpZiAoUFFu dHVwbGVzKHJlcykgPT0gMCkKKwl7CisJCWlmICghcHNldC5xdWlldCkKKwkJeworCQkJaWYgKGlu ZGV4X3BhdHRlcm4pCisJCQkJcHNxbF9lcnJvcigiRGlkIG5vdCBmaW5kIGFueSBpbmRleCBuYW1l ZCBcIiVzXCJcbiIsCisJCQkJCQkgICBpbmRleF9wYXR0ZXJuKTsKKwkJCWVsc2UKKwkJCQlwc3Fs X2Vycm9yKCJEaWQgbm90IGZpbmQgYW55IHJlbGF0aW9ucy5cbiIpOworCQl9CisJCVBRY2xlYXIo cmVzKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCWZvciAoaSA9IDA7IGkgPCBQUW50dXBsZXMo cmVzKTsgaSsrKQorCXsKKwkJY29uc3QgY2hhciAqb2lkID0gUFFnZXR2YWx1ZShyZXMsIGksIDAp OworCQljb25zdCBjaGFyICpuc3BuYW1lID0gUFFnZXR2YWx1ZShyZXMsIGksIDEpOworCQljb25z dCBjaGFyICppZHhuYW1lID0gUFFnZXR2YWx1ZShyZXMsIGksIDIpOworCQljb25zdCBjaGFyICph bW5hbWUgPSBQUWdldHZhbHVlKHJlcywgaSwgMyk7CisJCWNvbnN0IGNoYXIgKnRhYm5hbWUgPSBQ UWdldHZhbHVlKHJlcywgaSwgNCk7CisKKwkJaWYgKCFkZXNjcmliZU9uZUluZGV4Q29sdW1uUHJv cGVydGllcyhvaWQsIG5zcG5hbWUsIGlkeG5hbWUsIGFtbmFtZSwKKwkJCQkJCQkJCQkJICB0YWJu YW1lKSkKKwkJeworCQkJUFFjbGVhcihyZXMpOworCQkJcmV0dXJuIGZhbHNlOworCQl9CisJCWlm IChjYW5jZWxfcHJlc3NlZCkKKwkJeworCQkJUFFjbGVhcihyZXMpOworCQkJcmV0dXJuIGZhbHNl OworCQl9CisJfQorCisJUFFjbGVhcihyZXMpOworCXJldHVybiB0cnVlOworfQorCitzdGF0aWMg Ym9vbAorZGVzY3JpYmVPbmVJbmRleENvbHVtblByb3BlcnRpZXMoY29uc3QgY2hhciAqb2lkLAor CQkJCQkJCQkgY29uc3QgY2hhciAqbnNwbmFtZSwKKwkJCQkJCQkJIGNvbnN0IGNoYXIgKmlkeG5h bWUsCisJCQkJCQkJCSBjb25zdCBjaGFyICphbW5hbWUsCisJCQkJCQkJCSBjb25zdCBjaGFyICp0 YWJuYW1lKQoreworCVBRRXhwQnVmZmVyRGF0YSBidWY7CisJUEdyZXN1bHQgICAqcmVzOworCXBy aW50UXVlcnlPcHQgbXlvcHQgPSBwc2V0LnBvcHQ7CisJY2hhcgkgICAqZm9vdGVyc1szXSA9IHtO VUxMLCBOVUxMfTsKKwlzdGF0aWMgY29uc3QgYm9vbCB0cmFuc2xhdGVfY29sdW1uc1tdID0ge2Zh bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwkJCQkJCQkJCQkJIGZhbHNlLCBmYWxz ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZX07CisKKwlpbml0UFFFeHBCdWZmZXIoJmJ1Zik7CisKKwlw cmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCSAgIlNFTEVDVFxuIgorCQkJCSAgIiAgYS5hdHRu YW1lIEFTIFwiJXNcIixcbiIKKwkJCQkgICIgIHBnX2NhdGFsb2cucGdfZ2V0X2luZGV4ZGVmKGku aW5kZXhyZWxpZCwgYS5hdHRudW0sIHRydWUpIEFTIFwiJXNcIixcbiIKKwkJCQkgICIgIENBU0Ug V0hFTiBwZ19jYXRhbG9nLnBnX29wY2xhc3NfaXNfdmlzaWJsZShvLm9pZCkgVEhFTiAnJyBFTFNF IG4ubnNwbmFtZSB8fCAnLicgRU5EIHx8IG8ub3BjbmFtZSBBUyBcIiVzXCIsXG4iLAorCQkJCSAg Z2V0dGV4dF9ub29wKCJDb2x1bW4gbmFtZSIpLAorCQkJCSAgZ2V0dGV4dF9ub29wKCJFeHByIiks CisJCQkJICBnZXR0ZXh0X25vb3AoIk9wY2xhc3MiKSk7CisKKwlpZiAocHNldC5zdmVyc2lvbiA+ PSA5MDYwMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJICAiICBDQVNFXG4iCisJ CQkJCSAgIiAgICBXSEVOIHBnX2NhdGFsb2cucGdfaW5kZXhfY29sdW1uX2hhc19wcm9wZXJ0eShj Lm9pZCwgYS5hdHRudW0sICdvcmRlcmFibGUnKSA9IHRydWUgXG4iCisJCQkJCSAgIiAgICBUSEVO IHBnX2NhdGFsb2cucGdfaW5kZXhfY29sdW1uX2hhc19wcm9wZXJ0eShjLm9pZCwgYS5hdHRudW0s ICdhc2MnKVxuIgorCQkJCQkgICIgICAgRUxTRSBOVUxMIgorCQkJCQkgICIgIEVORCBBUyBcIiVz XCIsIgorCQkJCQkgICIgIENBU0VcbiIKKwkJCQkJICAiICAgIFdIRU4gcGdfY2F0YWxvZy5wZ19p bmRleF9jb2x1bW5faGFzX3Byb3BlcnR5KGMub2lkLCBhLmF0dG51bSwgJ29yZGVyYWJsZScpID0g dHJ1ZSBcbiIKKwkJCQkJICAiICAgIFRIRU4gcGdfY2F0YWxvZy5wZ19pbmRleF9jb2x1bW5faGFz X3Byb3BlcnR5KGMub2lkLCBhLmF0dG51bSwgJ251bGxzX2ZpcnN0JylcbiIKKwkJCQkJICAiICAg IEVMU0UgTlVMTCIKKwkJCQkJICAiICBFTkQgQVMgXCIlc1wiLCIKKwkJCQkJICAiICBwZ19jYXRh bG9nLnBnX2luZGV4X2NvbHVtbl9oYXNfcHJvcGVydHkoYy5vaWQsIGEuYXR0bnVtLCAnb3JkZXJh YmxlJykgQVMgXCIlc1wiLFxuIgorCQkJCQkgICIgIHBnX2NhdGFsb2cucGdfaW5kZXhfY29sdW1u X2hhc19wcm9wZXJ0eShjLm9pZCwgYS5hdHRudW0sICdkaXN0YW5jZV9vcmRlcmFibGUnKSBBUyBc IiVzXCIsXG4iCisJCQkJCSAgIiAgcGdfY2F0YWxvZy5wZ19pbmRleF9jb2x1bW5faGFzX3Byb3Bl cnR5KGMub2lkLCBhLmF0dG51bSwgJ3JldHVybmFibGUnKSBBUyBcIiVzXCIsXG4iCisJCQkJCSAg IiAgcGdfY2F0YWxvZy5wZ19pbmRleF9jb2x1bW5faGFzX3Byb3BlcnR5KGMub2lkLCBhLmF0dG51 bSwgJ3NlYXJjaF9hcnJheScpIEFTIFwiJXNcIixcbiIKKwkJCQkJICAiICBwZ19jYXRhbG9nLnBn X2luZGV4X2NvbHVtbl9oYXNfcHJvcGVydHkoYy5vaWQsIGEuYXR0bnVtLCAnc2VhcmNoX251bGxz JykgQVMgXCIlc1wiXG4iLAorCQkJCQkgIGdldHRleHRfbm9vcCgiQVNDIiksCisJCQkJCSAgZ2V0 dGV4dF9ub29wKCJOdWxscyBmaXJzdCIpLAorCQkJCQkgIGdldHRleHRfbm9vcCgiT3JkZXJhYmxl IiksCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJEaXN0YW5jZSBvcmRlcmFibGUiKSwKKwkJCQkJICBn ZXR0ZXh0X25vb3AoIlJldHVybmFibGUiKSwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIlNlYXJjaCBh cnJheSIpLAorCQkJCQkgIGdldHRleHRfbm9vcCgiU2VhcmNoIG51bGxzIikpOworCWVsc2UKKwkJ YXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJICAiICBDQVNFIFdIRU4gYW0uYW1jYW5vcmRl ciBUSEVOIChpLmluZG9wdGlvblthLmF0dG51bSAtIDFdICYgJWQpID0gIDAgRUxTRSBOVUxMIEVO RCBBUyBcIiVzXCIsXG4iIC8qIElORE9QVElPTl9ERVNDICovCisJCQkJCSAgIiAgQ0FTRSBXSEVO IGFtLmFtY2Fub3JkZXIgVEhFTiAoaS5pbmRvcHRpb25bYS5hdHRudW0gLSAxXSAmICVkKSA8PiAw IEVMU0UgTlVMTCBFTkQgQVMgXCIlc1wiLFxuIiAvKiBJTkRPUFRJT05fTlVMTFNfRklSU1QgKi8K KwkJCQkJICAiICBhbS5hbWNhbm9yZGVyIEFTIFwiJXNcIixcbiIKKwkJCQkJICAiICBhbS5hbWNh bm9yZGVyYnlvcCBBUyBcIiVzXCIsXG4iCisJCQkJCSAgIiAgYW0uYW1zZWFyY2hhcnJheSBBUyBc IiVzXCIsXG4iCisJCQkJCSAgIiAgYW0uYW1zZWFyY2hudWxscyBBUyBcIiVzXCJcbiIsCisJCQkJ CSAgSU5ET1BUSU9OX0RFU0MsCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJBU0MiKSwKKwkJCQkJICBJ TkRPUFRJT05fTlVMTFNfRklSU1QsCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJOdWxscyBmaXJzdCIp LAorCQkJCQkgIGdldHRleHRfbm9vcCgiT3JkZXJhYmxlIiksCisJCQkJCSAgZ2V0dGV4dF9ub29w KCJEaXN0YW5jZSBvcmRlcmFibGUiKSwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIlNlYXJjaCBhcnJh eSIpLAorCQkJCQkgIGdldHRleHRfbm9vcCgiU2VhcmNoIG51bGxzIikpOworCisJYXBwZW5kUFFF eHBCdWZmZXIoJmJ1ZiwKKwkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGNcbiIKKwkJ CQkJICAiICBMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19pbmRleCBpIE9OIGkuaW5kZXhyZWxpZCA9 IGMub2lkXG4iCisJCQkJCSAgIiAgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfYXR0cmlidXRlIGEg T04gYS5hdHRyZWxpZCA9IGMub2lkXG4iCisJCQkJCSAgIiAgTEVGVCBKT0lOIHBnX2NhdGFsb2cu cGdfb3BjbGFzcyBvIE9OIG8ub2lkID0gKGkuaW5kY2xhc3M6OnBnX2NhdGFsb2cub2lkW10pW2Eu YXR0bnVtIC0gMV1cbiIKKwkJCQkJICAiICBMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19uYW1lc3Bh Y2UgbiBPTiBuLm9pZCA9IG8ub3BjbmFtZXNwYWNlXG4iKTsKKwlpZiAocHNldC5zdmVyc2lvbiA8 IDkwNjAwKQorCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkgICIgIExFRlQgSk9JTiBw Z19jYXRhbG9nLnBnX2FtIGFtIE9OIGFtLm9pZCA9IGMucmVsYW1cbiIpOworCWFwcGVuZFBRRXhw QnVmZmVyKCZidWYsCisJCQkJCSAgIldIRVJFIGMub2lkID0gJXNcbiIKKwkJCQkJICAiT1JERVIg QlkgYS5hdHRudW0iLAorCQkJCQkgIG9pZCk7CisKKwlyZXMgPSBQU1FMZXhlYyhidWYuZGF0YSk7 CisJdGVybVBRRXhwQnVmZmVyKCZidWYpOworCWlmICghcmVzKQorCQlyZXR1cm4gZmFsc2U7CisJ aWYgKFBRbnR1cGxlcyhyZXMpID09IDApCisJeworCQlQUWNsZWFyKHJlcyk7CisJCXJldHVybiB0 cnVlOworCX0KKworCW15b3B0Lm51bGxQcmludCA9IE5VTEw7CisJbXlvcHQudGl0bGUgPSBwc3By aW50ZihfKCJJbmRleCAlcy4lcyIpLCBuc3BuYW1lLCBpZHhuYW1lKTsKKwlmb290ZXJzWzBdID0g cHNwcmludGYoXygiVGFibGU6ICVzIiksIHRhYm5hbWUpOworCWZvb3RlcnNbMV0gPSBwc3ByaW50 ZihfKCJBY2Nlc3MgbWV0aG9kOiAlcyIpLCBhbW5hbWUpOworCW15b3B0LmZvb3RlcnMgPSBmb290 ZXJzOworCW15b3B0LnRvcHQuZGVmYXVsdF9mb290ZXIgPSBmYWxzZTsKKwlteW9wdC50cmFuc2xh dGVfaGVhZGVyID0gdHJ1ZTsKKwlteW9wdC50cmFuc2xhdGVfY29sdW1ucyA9IHRyYW5zbGF0ZV9j b2x1bW5zOworCW15b3B0Lm5fdHJhbnNsYXRlX2NvbHVtbnMgPSBsZW5ndGhvZih0cmFuc2xhdGVf Y29sdW1ucyk7CisKKwlwcmludFF1ZXJ5KHJlcywgJm15b3B0LCBwc2V0LnF1ZXJ5Rm91dCwgZmFs c2UsIHBzZXQubG9nZmlsZSk7CisJUFFjbGVhcihyZXMpOworCXJldHVybiB0cnVlOworfQpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmggYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUu aAppbmRleCAyNGE1OTY1OThmLi42MTk1MTRjNDBkIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwv ZGVzY3JpYmUuaAorKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuaApAQCAtMTI4LDQgKzEyOCwx MSBAQCBleHRlcm4gYm9vbCBkZXNjcmliZUFjY2Vzc01ldGhvZE9wZXJhdG9yQ2xhc3Nlcyhjb25z dCBjaGFyICphY2Nlc3NfbWV0aG9kX3BhdHRlcgogCQkJCQkJCQkJCQkJY29uc3QgY2hhciAqb3Bj bGFzc19wYXR0ZXJuLAogCQkJCQkJCQkJCQkJYm9vbCB2ZXJib3NlKTsKIAorLyogXGRpcCAqLwor ZXh0ZXJuIGJvb2wgZGVzY3JpYmVJbmRleFByb3BlcnRpZXMoY29uc3QgY2hhciAqcGF0dGVybiwg Ym9vbCBzaG93U3lzdGVtKTsKKworLyogXGRpY3AgKi8KK2V4dGVybiBib29sIGRlc2NyaWJlSW5k ZXhDb2x1bW5Qcm9wZXJ0aWVzKGNvbnN0IGNoYXIgKmluZGV4UGF0dGVybiwKKwkJCQkJCQkJCQkg IGJvb2wgc2hvd1N5c3RlbSk7CisKICNlbmRpZgkJCQkJCQkvKiBERVNDUklCRV9IICovCmRpZmYg LS1naXQgYS9zcmMvYmluL3BzcWwvaGVscC5jIGIvc3JjL2Jpbi9wc3FsL2hlbHAuYwppbmRleCBj ZGM4YjBkMjEwLi5hZjRhMjk4ZmZiIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvaGVscC5jCisr KyBiL3NyYy9iaW4vcHNxbC9oZWxwLmMKQEAgLTI0Niw2ICsyNDYsOCBAQCBzbGFzaFVzYWdlKHVu c2lnbmVkIHNob3J0IGludCBwYWdlcikKIAlmcHJpbnRmKG91dHB1dCwgXygiICBcXGRGdFsrXSBb UEFUVEVSTl0gICAgICBsaXN0IHRleHQgc2VhcmNoIHRlbXBsYXRlc1xuIikpOwogCWZwcmludGYo b3V0cHV0LCBfKCIgIFxcZGdbUytdIFtQQVRURVJOXSAgICAgIGxpc3Qgcm9sZXNcbiIpKTsKIAlm cHJpbnRmKG91dHB1dCwgXygiICBcXGRpW1MrXSBbUEFUVEVSTl0gICAgICBsaXN0IGluZGV4ZXNc biIpKTsKKwlmcHJpbnRmKG91dHB1dCwgXygiICBcXGRpcFtTXSBbUEFUVEVSTl0gICAgICBsaXN0 IGluZGV4ZXMgd2l0aCBwcm9wZXJ0aWVzXG4iKSk7CisJZnByaW50ZihvdXRwdXQsIF8oIiAgXFxk aWNwW1NdW1BBVFRFUk5dICAgICAgc2hvdyBpbmRleCBjb2x1bW4gcHJvcGVydGllc1xuIikpOwog CWZwcmludGYob3V0cHV0LCBfKCIgIFxcZGwgICAgICAgICAgICAgICAgICAgIGxpc3QgbGFyZ2Ug b2JqZWN0cywgc2FtZSBhcyBcXGxvX2xpc3RcbiIpKTsKIAlmcHJpbnRmKG91dHB1dCwgXygiICBc XGRMW1MrXSBbUEFUVEVSTl0gICAgICBsaXN0IHByb2NlZHVyYWwgbGFuZ3VhZ2VzXG4iKSk7CiAJ ZnByaW50ZihvdXRwdXQsIF8oIiAgXFxkbVtTK10gW1BBVFRFUk5dICAgICAgbGlzdCBtYXRlcmlh bGl6ZWQgdmlld3NcbiIpKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUu YyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYwppbmRleCA3ZTlmNmE3ZDExLi41ZWE5NDM2 YjRkIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKKysrIGIvc3JjL2Jp bi9wc3FsL3RhYi1jb21wbGV0ZS5jCkBAIC0xMzQ5LDggKzEzNDksOCBAQCBwc3FsX2NvbXBsZXRp b24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkiXFxkIiwgIlxcZGEi LCAiXFxkQSIsICJcXGRBcCIsICJcXGRBZm8iLCAiXFxkQWZwIiwgIlxcZEFvYyIsCiAJCSJcXGRi IiwgIlxcZGMiLCAiXFxkQyIsICJcXGRkIiwgIlxcZGRwIiwgIlxcZEQiLAogCQkiXFxkZXMiLCAi XFxkZXQiLCAiXFxkZXUiLCAiXFxkZXciLCAiXFxkRSIsICJcXGRmIiwKLQkJIlxcZEYiLCAiXFxk RmQiLCAiXFxkRnAiLCAiXFxkRnQiLCAiXFxkZyIsICJcXGRpIiwgIlxcZGwiLCAiXFxkTCIsCi0J CSJcXGRtIiwgIlxcZG4iLCAiXFxkbyIsICJcXGRPIiwgIlxcZHAiLAorCQkiXFxkRiIsICJcXGRG ZCIsICJcXGRGcCIsICJcXGRGdCIsICJcXGRnIiwgIlxcZGkiLCAiXFxkaWNwIiwgIlxcZGlwIiwK KwkJIlxcZGwiLCAiXFxkTCIsICJcXGRtIiwgIlxcZG4iLCAiXFxkbyIsICJcXGRPIiwgIlxcZHAi LAogCQkiXFxkcmRzIiwgIlxcZFJzIiwgIlxcZFJwIiwgIlxcZHMiLCAiXFxkUyIsCiAJCSJcXGR0 IiwgIlxcZFQiLCAiXFxkdiIsICJcXGR1IiwgIlxcZHgiLCAiXFxkeSIsCiAJCSJcXGUiLCAiXFxl Y2hvIiwgIlxcZWYiLCAiXFxlbGlmIiwgIlxcZWxzZSIsICJcXGVuY29kaW5nIiwKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5kZXhpbmcub3V0IGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9pbmRleGluZy5vdXQKaW5kZXggM2U2MWY1MGU3Yy4uYzMzOTJkMWQzNyAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbmRleGluZy5vdXQKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbmRleGluZy5vdXQKQEAgLTE0MDQsMyArMTQwNCwy MCBAQCBpbnNlcnQgaW50byBjb3ZpZHhwYXJ0IHZhbHVlcyAoNCwgMSk7CiBpbnNlcnQgaW50byBj b3ZpZHhwYXJ0IHZhbHVlcyAoNCwgMSk7CiBFUlJPUjogIGR1cGxpY2F0ZSBrZXkgdmFsdWUgdmlv bGF0ZXMgdW5pcXVlIGNvbnN0cmFpbnQgImNvdmlkeHBhcnQ0X2FfYl9pZHgiCiBERVRBSUw6ICBL ZXkgKGEpPSg0KSBhbHJlYWR5IGV4aXN0cy4KKy0tIFRlc3QgcHNxbCBjb21tYW5kIGZvciBkaXNw bGF5aW5nIGluZm9ybWF0aW9uIGFib3V0IGluZGV4ZXMuCitcZGlwIGJyaW5pZHgKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBwcm9wZXJ0aWVzCisgU2NoZW1hIHwg IE5hbWUgICB8IEFjY2VzcyBtZXRob2QgfCBDbHVzdGVyYWJsZSB8IEluZGV4IHNjYW4gfCBCaXRt YXAgc2NhbiB8IEJhY2t3YXJkIHNjYW4gCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tCisgcHVibGljIHwgYnJpbmlkeCB8IGJyaW4gICAgICAgICAgfCBmICAgICAgICAgICB8IGYg ICAgICAgICAgfCB0ICAgICAgICAgICB8IGYKKygxIHJvdykKKworXGRpY3AgYm90aGFycmF5aWR4 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRl eCBwdWJsaWMuYm90aGFycmF5aWR4CisgQ29sdW1uIG5hbWUgfCBFeHByIHwgIE9wY2xhc3MgIHwg QVNDIHwgTnVsbHMgZmlyc3QgfCBPcmRlcmFibGUgfCBEaXN0YW5jZSBvcmRlcmFibGUgfCBSZXR1 cm5hYmxlIHwgU2VhcmNoIGFycmF5IHwgU2VhcmNoIG51bGxzIAorLS0tLS0tLS0tLS0tLSstLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBp ICAgICAgICAgICB8IGkgICAgfCBhcnJheV9vcHMgfCAgICAgfCAgICAgICAgICAgICB8IGYgICAg ICAgICB8IGYgICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgfCBm CisgdCAgICAgICAgICAgfCB0ICAgIHwgYXJyYXlfb3BzIHwgICAgIHwgICAgICAgICAgICAgfCBm ICAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAg IHwgZgorVGFibGU6IGFycmF5X2luZGV4X29wX3Rlc3QKK0FjY2VzcyBtZXRob2Q6IGdpbgorCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9pbmRleGluZy5zcWwgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9pbmRleGluZy5zcWwKaW5kZXggNDAwYjdlYjdiYS4uYmY4NzVkOTgyYSAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaW5kZXhpbmcuc3FsCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2luZGV4aW5nLnNxbApAQCAtNzUzLDMgKzc1Myw3IEBAIGNyZWF0ZSB1bmlx dWUgaW5kZXggb24gY292aWR4cGFydDQgKGEpOwogYWx0ZXIgdGFibGUgY292aWR4cGFydCBhdHRh Y2ggcGFydGl0aW9uIGNvdmlkeHBhcnQ0IGZvciB2YWx1ZXMgaW4gKDQpOwogaW5zZXJ0IGludG8g Y292aWR4cGFydCB2YWx1ZXMgKDQsIDEpOwogaW5zZXJ0IGludG8gY292aWR4cGFydCB2YWx1ZXMg KDQsIDEpOworCistLSBUZXN0IHBzcWwgY29tbWFuZCBmb3IgZGlzcGxheWluZyBpbmZvcm1hdGlv biBhYm91dCBpbmRleGVzLgorXGRpcCBicmluaWR4CitcZGljcCBib3RoYXJyYXlpZHgK --=_535d1f80120ea085f78b594b03539f1a--