Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mnLFE-0000Nt-A2 for pgsql-hackers@arkaria.postgresql.org; Wed, 17 Nov 2021 13:45:01 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mnLFD-00051j-7i for pgsql-hackers@arkaria.postgresql.org; Wed, 17 Nov 2021 13:44:59 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mnLFC-00051R-Ew for pgsql-hackers@lists.postgresql.org; Wed, 17 Nov 2021 13:44:58 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by makus.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mnLF7-0003JI-Q1 for pgsql-hackers@lists.postgresql.org; Wed, 17 Nov 2021 13:44:57 +0000 Received: from mail.postgrespro.ru (cyclops.postgrespro.ru [93.174.131.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mail.postgrespro.ru (Postfix) with ESMTPSA id AD36421C3800; Wed, 17 Nov 2021 16:44:51 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1637156691; bh=TENhR5R+UvmIDWKfcwhoIkbtUWqLTyJuSptxn+eeIPI=; h=Date:From:To:Cc:Subject:In-Reply-To:References; b=FK4xNdCDb4rp7JiixHynzaiXKuWz7pgAAWHPXNBXLPSQ34BtyHD9MW8RF1JF/H2Nb q5p+bYUlhhYZuVAYdP6vNOCY4XUt73RBVw+/grCs8BEg/u0MJruu9Rb4WYc/NcFmn0 f2f7c5ty4avnbZWr6uFRIrzyfkZpHoZIq6jXh9LM= MIME-Version: 1.0 Date: Wed, 17 Nov 2021 16:44:51 +0300 From: Ekaterina Sokolova To: torikoshia Cc: pgsql-hackers@lists.postgresql.org Subject: Re: RFC: Logging plan of the running query In-Reply-To: <577370a1bd9f622e41f6cda8ed895534@oss.nttdata.com> References: <577370a1bd9f622e41f6cda8ed895534@oss.nttdata.com> User-Agent: Roundcube Webmail/1.4.11 Message-ID: X-Sender: e.sokolova@postgrespro.ru Organization: Postgres Professional Content-Type: multipart/mixed; boundary="=_0d4486ec1640dd6a319510741191718a" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_0d4486ec1640dd6a319510741191718a Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed Hi! You forgot my last fix to build correctly on Mac. I have added it. About our discussion of pg_query_state: torikoshia писал 2021-11-04 15:49: >> I doubt that it was the right link. > Sorry for make you confused, here is the link. > https://www.postgresql.org/message-id/CA%2BTgmobkpFV0UB67kzXuD36--OFHwz1bs%3DL_6PZbD4nxKqUQMw%40mail.gmail.com Thank you. I'll see it soon. > I imagined the following procedure. > Does it cause dead lock in pg_query_state? > > - session1 > BEGIN; TRUNCATE t; > > - session2 > BEGIN; TRUNCATE t; -- wait > > - session1 > SELECT * FROM pg_query_state(); -- wait and dead > locked? As I know, pg_query_state use non-blocking read and write. I have wrote few tests trying to deadlock it (on 14 version), but all finished correctly. Have a nice day. Please feel free to contact me if you need any further information. -- Ekaterina Sokolova Postgres Professional: http://www.postgrespro.com The Russian Postgres Company --=_0d4486ec1640dd6a319510741191718a Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v13-0002-log-running-query-plan.patch Content-Disposition: attachment; filename=v13-0002-log-running-query-plan.patch; size=29103 RnJvbSBiODM2N2UyMmQ3YTk4OThlNGI4NTYyN2JhOGMyMDNiZTI3M2ZjMjJmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtvc2hpYUBvc3MubnR0 ZGF0YS5jb20+CkRhdGU6IE1vbiwgMTUgTm92IDIwMjEgMjI6MzE6MDAgKzA5MDAKU3ViamVjdDog W1BBVENIIHYxM10gQWRkIGZ1bmN0aW9uIHRvIGxvZyB0aGUgdW50cnVuY2F0ZWQgcXVlcnkgc3Ry aW5nIGFuZCBpdHMKIHBsYW4gZm9yIHRoZSBxdWVyeSBjdXJyZW50bHkgcnVubmluZyBvbiB0aGUg YmFja2VuZCB3aXRoIHRoZSBzcGVjaWZpZWQKIHByb2Nlc3MgSUQuCgpDdXJyZW50bHksIHdlIGhh dmUgdG8gd2FpdCBmb3IgdGhlIHF1ZXJ5IGV4ZWN1dGlvbiB0byBmaW5pc2gKdG8gY2hlY2sgaXRz IHBsYW4uIFRoaXMgaXMgbm90IHNvIGNvbnZlbmllbnQgd2hlbgppbnZlc3RpZ2F0aW5nIGxvbmct cnVubmluZyBxdWVyaWVzIG9uIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzCndoZXJlIHdlIGNhbm5v dCB1c2UgZGVidWdnZXJzLgpUbyBpbXByb3ZlIHRoaXMgc2l0dWF0aW9uLCB0aGlzIHBhdGNoIGFk ZHMKcGdfbG9nX3F1ZXJ5X3BsYW4oKSBmdW5jdGlvbiB0aGF0IHJlcXVlc3RzIHRvIGxvZyB0aGUK cGxhbiBvZiB0aGUgc3BlY2lmaWVkIGJhY2tlbmQgcHJvY2Vzcy4KCkJ5IGRlZmF1bHQsIG9ubHkg c3VwZXJ1c2VycyBhcmUgYWxsb3dlZCB0byByZXF1ZXN0IHRvIGxvZyB0aGUKcGxhbnMgYmVjYXVz ZSBhbGxvd2luZyBhbnkgdXNlcnMgdG8gaXNzdWUgdGhpcyByZXF1ZXN0IGF0IGFuCnVuYm91bmRl ZCByYXRlIHdvdWxkIGNhdXNlIGxvdHMgb2YgbG9nIG1lc3NhZ2VzIGFuZCB3aGljaCBjYW4KbGVh ZCB0byBkZW5pYWwgb2Ygc2VydmljZS4KCk9uIHJlY2VpcHQgb2YgdGhlIHJlcXVlc3QsIGF0IHRo ZSBuZXh0IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCksCnRoZSB0YXJnZXQgYmFja2VuZCBsb2dzIGl0 cyBwbGFuIGF0IExPR19TRVJWRVJfT05MWSBsZXZlbCwgc28KdGhhdCB0aGVzZSBwbGFucyB3aWxs IGFwcGVhciBpbiB0aGUgc2VydmVyIGxvZyBidXQgbm90IGJlIHNlbnQKdG8gdGhlIGNsaWVudC4K ClNpbmNlIHNvbWUgY29kZXMsIHRlc3RzIGFuZCBjb21tZW50cyBvZgpwZ19sb2dfcXVlcnlfcGxh bigpIGFyZSB0aGUgc2FtZSB3aXRoCnBnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cygpLCB0 aGlzIHBhdGNoIGFsc28gcmVmYWN0b3JzCnRoZW0gdG8gbWFrZSB0aGVtIGNvbW1vbi4KClJldmll d2VkLWJ5OiBCaGFyYXRoIFJ1cGlyZWRkeSwgRnVqaWkgTWFzYW8sIERpbGlwIEt1bWFyLCBNYXNh aGlybyBJa2VkYSwgRWthdGVyaW5hIFNva29sb3ZhLCBKdXN0aW4gUHJ5emJ5CgotLS0KIGRvYy9z cmMvc2dtbC9mdW5jLnNnbWwgICAgICAgICAgICAgICAgICAgICAgIHwgIDQ1ICsrKysrKysKIHNy Yy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX2Z1bmN0aW9ucy5zcWwgICAgIHwgICAyICsKIHNyYy9i YWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyAgICAgICAgICAgICAgIHwgMTE3ICsrKysrKysrKysr KysrKysrKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgICAgICAgIHwg IDEwICsrCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgICAgICAgICB8ICAg NCArCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaWduYWxmdW5jcy5jICAgICAgICB8ICA1NSAr KysrKysrKysKIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMgICAgICAgICAgICAgIHwg ICA5ICstCiBzcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgICAgICB8ICAg NyArKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5jICAgICAgICAgICAgfCAgMzYg Ky0tLS0tCiBzcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYyAgICAgICAgICAgICB8ICAg MSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICB8ICAgNiAr CiBzcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmggICAgICAgICAgICAgICB8ICAgMyArCiBz cmMvaW5jbHVkZS9taXNjYWRtaW4uaCAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMv aW5jbHVkZS9zdG9yYWdlL2xvY2suaCAgICAgICAgICAgICAgICAgICB8ICAgMiAtCiBzcmMvaW5j bHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaCAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVk ZS9zdG9yYWdlL3NpZ25hbGZ1bmNzLmggICAgICAgICAgICB8ICAyMiArKysrCiBzcmMvaW5jbHVk ZS90Y29wL3BxdWVyeS5oICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL21pc2NfZnVuY3Rpb25zLm91dCB8ICA1NCArKysrKysrLS0KIHNyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL21pc2NfZnVuY3Rpb25zLnNxbCAgICAgIHwgIDQyICsrKysrLS0KIDE5IGZp bGVzIGNoYW5nZWQsIDM1NSBpbnNlcnRpb25zKCspLCA2MyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9zdG9yYWdlL3NpZ25hbGZ1bmNzLmgKCmRpZmYgLS1naXQg YS9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbAppbmRleCAy NDQ0N2MwMDE3Li43ZmZhYTlhNTVkIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKQEAgLTI1MzQ1LDYgKzI1MzQ1LDI2IEBAIFNF TEVDVCBjb2xsYXRpb24gZm9yICgnZm9vJyBDT0xMQVRFICJkZV9ERSIpOwogICAgICAgIDwvcGFy YT48L2VudHJ5PgogICAgICAgPC9yb3c+CiAKKyAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5IHJv bGU9ImZ1bmNfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KKyAgICAg ICAgPGluZGV4dGVybT4KKyAgICAgICAgIDxwcmltYXJ5PnBnX2xvZ19xdWVyeV9wbGFuPC9wcmlt YXJ5PgorICAgICAgICA8L2luZGV4dGVybT4KKyAgICAgICAgPGZ1bmN0aW9uPnBnX2xvZ19xdWVy eV9wbGFuPC9mdW5jdGlvbj4gKCA8cGFyYW1ldGVyPnBpZDwvcGFyYW1ldGVyPiA8dHlwZT5pbnRl Z2VyPC90eXBlPiApCisgICAgICAgIDxyZXR1cm52YWx1ZT5ib29sZWFuPC9yZXR1cm52YWx1ZT4K KyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIFJlcXVlc3RzIHRvIGxvZyB0 aGUgcGxhbiBvZiB0aGUgcXVlcnkgY3VycmVudGx5IHJ1bm5pbmcgb24gdGhlCisgICAgICAgIGJh Y2tlbmQgd2l0aCBzcGVjaWZpZWQgcHJvY2VzcyBJRCBhbG9uZyB3aXRoIHRoZSB1bnRydW5jYXRl ZAorICAgICAgICBxdWVyeSBzdHJpbmcuCisgICAgICAgIFRoZXkgd2lsbCBiZSBsb2dnZWQgYXQg PGxpdGVyYWw+TE9HPC9saXRlcmFsPiBtZXNzYWdlIGxldmVsIGFuZAorICAgICAgICB3aWxsIGFw cGVhciBpbiB0aGUgc2VydmVyIGxvZyBiYXNlZCBvbiB0aGUgbG9nCisgICAgICAgIGNvbmZpZ3Vy YXRpb24gc2V0IChTZWUgPHhyZWYgbGlua2VuZD0icnVudGltZS1jb25maWctbG9nZ2luZyIvPgor ICAgICAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbiksIGJ1dCB3aWxsIG5vdCBiZSBzZW50IHRvIHRo ZSBjbGllbnQKKyAgICAgICAgcmVnYXJkbGVzcyBvZiA8eHJlZiBsaW5rZW5kPSJndWMtY2xpZW50 LW1pbi1tZXNzYWdlcyIvPi4KKyAgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgIDwvcm93Pgor CiAgICAgICA8cm93PgogICAgICAgIDxlbnRyeSByb2xlPSJmdW5jX3RhYmxlX2VudHJ5Ij48cGFy YSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+CiAgICAgICAgIDxpbmRleHRlcm0+CkBAIC0yNTQ1OCw2 ICsyNTQ3OCwzMSBAQCBMT0c6ICBHcmFuZCB0b3RhbDogMTY1MTkyMCBieXRlcyBpbiAyMDEgYmxv Y2tzOyA2MjIzNjAgZnJlZSAoODggY2h1bmtzKTsgMTAyOTU2MAogICAgIGJlY2F1c2UgaXQgbWF5 IGdlbmVyYXRlIGEgbGFyZ2UgbnVtYmVyIG9mIGxvZyBtZXNzYWdlcy4KICAgIDwvcGFyYT4KIAor ICAgPHBhcmE+CisgICAgPGZ1bmN0aW9uPnBnX2xvZ19xdWVyeV9wbGFuPC9mdW5jdGlvbj4gY2Fu IGJlIHVzZWQKKyAgICB0byBsb2cgdGhlIHBsYW4gb2YgYSBiYWNrZW5kIHByb2Nlc3MuIEZvciBl eGFtcGxlOgorPHByb2dyYW1saXN0aW5nPgorcG9zdGdyZXM9IyBTRUxFQ1QgcGdfbG9nX3F1ZXJ5 X3BsYW4oMjAxMTE2KTsKKyBwZ19sb2dfcXVlcnlfcGxhbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgdAorKDEgcm93KQorPC9wcm9ncmFtbGlzdGluZz4KK1RoZSBmb3JtYXQgb2YgdGhl IHF1ZXJ5IHBsYW4gaXMgdGhlIHNhbWUgYXMgd2hlbiA8bGl0ZXJhbD5WRVJCT1NFPC9saXRlcmFs PiwKKzxsaXRlcmFsPkNPU1RTPC9saXRlcmFsPiwgPGxpdGVyYWw+U0VUVElOR1M8L2xpdGVyYWw+ IGFuZAorPGxpdGVyYWw+Rk9STUFUIFRFWFQ8L2xpdGVyYWw+IGFyZSB1c2VkIGluIHRoZSA8Y29t bWFuZD5FWFBMQUlOPC9jb21tYW5kPgorY29tbWFuZC4gRm9yIGV4YW1wbGU6Cis8c2NyZWVuPgor TE9HOiAgcGxhbiBvZiB0aGUgcXVlcnkgcnVubmluZyBvbiBiYWNrZW5kIHdpdGggUElEIDE3Nzkz IGlzOgorICAgICAgICBRdWVyeSBUZXh0OiBTRUxFQ1QgKiBGUk9NIHBnYmVuY2hfYWNjb3VudHM7 CisgICAgICAgIFNlcSBTY2FuIG9uIHB1YmxpYy5wZ2JlbmNoX2FjY291bnRzICAoY29zdD0wLjAw Li41Mjc4Ny4wMCByb3dzPTIwMDAwMDAgd2lkdGg9OTcpCisgICAgICAgICAgT3V0cHV0OiBhaWQs IGJpZCwgYWJhbGFuY2UsIGZpbGxlcgorICAgICAgICBTZXR0aW5nczogd29ya19tZW0gPSAnMU1C JworPC9zY3JlZW4+CisgICAgTm90ZSB0aGF0IG5lc3RlZCBzdGF0ZW1lbnRzIChzdGF0ZW1lbnRz IGV4ZWN1dGVkIGluc2lkZSBhIGZ1bmN0aW9uKSBhcmUgbm90CisgICAgY29uc2lkZXJlZCBmb3Ig bG9nZ2luZy4gT25seSB0aGUgcGxhbiBvZiB0aGUgbW9zdCBkZWVwbHkgbmVzdGVkIHF1ZXJ5IGlz IGxvZ2dlZC4KKyAgIDwvcGFyYT4KKwogICA8L3NlY3QyPgogCiAgIDxzZWN0MiBpZD0iZnVuY3Rp b25zLWFkbWluLWJhY2t1cCI+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3Rl bV9mdW5jdGlvbnMuc3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fZnVuY3Rpb25zLnNx bAppbmRleCA1NGM5M2IxNmM0Li5kN2YwMDEwZTQ3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j YXRhbG9nL3N5c3RlbV9mdW5jdGlvbnMuc3FsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lz dGVtX2Z1bmN0aW9ucy5zcWwKQEAgLTcwMSw2ICs3MDEsOCBAQCBSRVZPS0UgRVhFQ1VURSBPTiBG VU5DVElPTiBwZ19sc19kaXIodGV4dCxib29sZWFuLGJvb2xlYW4pIEZST00gcHVibGljOwogCiBS RVZPS0UgRVhFQ1VURSBPTiBGVU5DVElPTiBwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMo aW50ZWdlcikgRlJPTSBQVUJMSUM7CiAKK1JFVk9LRSBFWEVDVVRFIE9OIEZVTkNUSU9OIHBnX2xv Z19xdWVyeV9wbGFuKGludGVnZXIpIEZST00gUFVCTElDOworCiAtLQogLS0gV2UgYWxzbyBzZXQg dXAgc29tZSB0aGluZ3MgYXMgYWNjZXNzaWJsZSB0byBzdGFuZGFyZCByb2xlcy4KIC0tCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9leHBsYWluLmMKaW5kZXggMTA2NDRkZmFjNC4uZDkzMDIwMDk4NyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2V4cGxhaW4uYwpAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVIYXNo LmgiCiAjaW5jbHVkZSAiZm9yZWlnbi9mZHdhcGkuaCIKICNpbmNsdWRlICJqaXQvaml0LmgiCisj aW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvZXh0ZW5zaWJsZS5oIgogI2lu Y2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgogI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgpA QCAtMjgsNiArMjksOSBAQAogI2luY2x1ZGUgInBhcnNlci9wYXJzZXRyZWUuaCIKICNpbmNsdWRl ICJyZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIK KyNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc2lnbmFs ZnVuY3MuaCIKKyNpbmNsdWRlICJ0Y29wL3BxdWVyeS5oIgogI2luY2x1ZGUgInRjb3AvdGNvcHBy b3QuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2d1Y190 YWJsZXMuaCIKQEAgLTQwLDcgKzQ0LDYgQEAKICNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgog I2luY2x1ZGUgInV0aWxzL3htbC5oIgogCi0KIC8qIEhvb2sgZm9yIHBsdWdpbnMgdG8gZ2V0IGNv bnRyb2wgaW4gRXhwbGFpbk9uZVF1ZXJ5KCkgKi8KIEV4cGxhaW5PbmVRdWVyeV9ob29rX3R5cGUg RXhwbGFpbk9uZVF1ZXJ5X2hvb2sgPSBOVUxMOwogCkBAIC0xNTk0LDYgKzE1OTcsOSBAQCBFeHBs YWluTm9kZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgTGlzdCAqYW5jZXN0b3JzLAogCS8qCiAJICog V2UgaGF2ZSB0byBmb3JjaWJseSBjbGVhbiB1cCB0aGUgaW5zdHJ1bWVudGF0aW9uIHN0YXRlIGJl Y2F1c2Ugd2UKIAkgKiBoYXZlbid0IGRvbmUgRXhlY3V0b3JFbmQgeWV0LiAgVGhpcyBpcyBwcmV0 dHkgZ3JvdHR5IC4uLgorCSAqIFRoaXMgY2xlYW51cCBzaG91bGQgbm90IGJlIGRvbmUgd2hlbiB0 aGUgcXVlcnkgaGFzIGFscmVhZHkgYmVlbgorCSAqIGV4ZWN1dGVkLCBhcyB0aGUgdGFyZ2V0IHF1 ZXJ5IG1heSB1c2UgaW5zdHJ1bWVudGF0aW9uIGFuZCBjbGVhbgorCSAqIGl0c2VsZiB1cC4KIAkg KgogCSAqIE5vdGU6IGNvbnRyaWIvYXV0b19leHBsYWluIGNvdWxkIGNhdXNlIGluc3RydW1lbnRh dGlvbiB0byBiZSBzZXQgdXAKIAkgKiBldmVuIHRob3VnaCB3ZSBkaWRuJ3QgYXNrIGZvciBpdCBo ZXJlLiAgQmUgY2FyZWZ1bCBub3QgdG8gcHJpbnQgYW55CkBAIC0xNjAxLDcgKzE2MDcsNyBAQCBF eHBsYWluTm9kZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgTGlzdCAqYW5jZXN0b3JzLAogCSAqIElu c3RyRW5kTG9vcCBjYWxsIGFueXdheSwgaWYgcG9zc2libGUsIHRvIHJlZHVjZSB0aGUgbnVtYmVy IG9mIGNhc2VzCiAJICogYXV0b19leHBsYWluIGhhcyB0byBjb250ZW5kIHdpdGguCiAJICovCi0J aWYgKHBsYW5zdGF0ZS0+aW5zdHJ1bWVudCkKKwlpZiAocGxhbnN0YXRlLT5pbnN0cnVtZW50ICYm ICFlcy0+cnVubmluZykKIAkJSW5zdHJFbmRMb29wKHBsYW5zdGF0ZS0+aW5zdHJ1bWVudCk7CiAK IAlpZiAoZXMtPmFuYWx5emUgJiYKQEAgLTQ5MjIsMyArNDkyOCwxMTAgQEAgZXNjYXBlX3lhbWwo U3RyaW5nSW5mbyBidWYsIGNvbnN0IGNoYXIgKnN0cikKIHsKIAllc2NhcGVfanNvbihidWYsIHN0 cik7CiB9CisKKy8qCisgKiBIYW5kbGVMb2dDdXJyZW50UGxhbkludGVycnVwdAorICoJCUhhbmRs ZSByZWNlaXB0IG9mIGFuIGludGVycnVwdCBpbmRpY2F0aW5nIGxvZ2dpbmcgdGhlIHBsYW4gb2YK KyAqCQl0aGUgY3VycmVudGx5IHJ1bm5pbmcgcXVlcnkuCisgKgorICogQWxsIHRoZSBhY3R1YWwg d29yayBpcyBkZWZlcnJlZCB0byBQcm9jZXNzTG9nQ3VycmVudFBsYW5JbnRlcnJ1cHQoKSwKKyAq IGJlY2F1c2Ugd2UgY2Fubm90IHNhZmVseSBlbWl0IGEgbG9nIG1lc3NhZ2UgaW5zaWRlIHRoZSBz aWduYWwgaGFuZGxlci4KKyAqLwordm9pZAorSGFuZGxlTG9nQ3VycmVudFBsYW5JbnRlcnJ1cHQo dm9pZCkKK3sKKwlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKKwlMb2dDdXJyZW50UGxhblBlbmRp bmcgPSB0cnVlOworCS8qIGxhdGNoIHdpbGwgYmUgc2V0IGJ5IHByb2NzaWduYWxfc2lndXNyMV9o YW5kbGVyICovCit9CisKKy8qCisgKiBQcm9jZXNzTG9nQ3VycmVudFBsYW5JbnRlcnJ1cHQKKyAq IAkJUGVyZm9ybSBsb2dnaW5nIHRoZSBwbGFuIG9mIHRoZSBjdXJyZW50bHkgcnVubmluZyBxdWVy eSBvbiB0aGlzCisgKiAJCWJhY2tlbmQgcHJvY2Vzcy4KKyAqCisgKiBBbnkgYmFja2VuZCB0aGF0 IHBhcnRpY2lwYXRlcyBpbiBQcm9jU2lnbmFsIHNpZ25hbGluZyBtdXN0IGFycmFuZ2UgdG8gY2Fs bAorICogdGhpcyBmdW5jdGlvbiBpZiB3ZSBzZWUgTG9nQ3VycmVudFBsYW5QZW5kaW5nIHNldC4K KyAqIEl0IGlzIGNhbGxlZCBmcm9tIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCksIHdoaWNoIGlzIGVu b3VnaCBiZWNhdXNlIHRoZSB0YXJnZXQKKyAqIHByb2Nlc3MgZm9yIGxvZ2dpbmcgcGxhbiBpcyBh IGJhY2tlbmQuCisgKi8KK3ZvaWQKK1Byb2Nlc3NMb2dDdXJyZW50UGxhbkludGVycnVwdCh2b2lk KQoreworCUV4cGxhaW5TdGF0ZSAqZXM7CisJSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKKwlMT0NB TExPQ0sgICpsb2NhbGxvY2s7CisJTG9nQ3VycmVudFBsYW5QZW5kaW5nID0gZmFsc2U7CisKKwlp ZiAoQWN0aXZlUXVlcnlEZXNjID09IE5VTEwpCisJeworCQllcmVwb3J0KExPR19TRVJWRVJfT05M WSwKKwkJCQllcnJtc2coImJhY2tlbmQgd2l0aCBQSUQgJWQgaXMgbm90IHJ1bm5pbmcgYSBxdWVy eSIsCisJCQkJCU15UHJvY1BpZCkpOworCQlyZXR1cm47CisJfQorCisJLyoKKwkgKiBFbnN1cmUg bm8gcGFnZSBsb2NrIGlzIGhlbGQgb24gdGhpcyBwcm9jZXNzLgorCSAqCisJICogSWYgcGFnZSBs b2NrIGlzIGhlbGQgYXQgdGhlIHRpbWUgb2YgdGhlIGludGVycnVwdCwgd2UgY2FuJ3QgYWNxdWly ZSBhbnkKKwkgKiBvdGhlciBoZWF2eXdlaWdodCBsb2NrLCB3aGljaCBtaWdodCBiZSBuZWNlc3Nh cnkgZm9yIGV4cGxhaW5pbmcgdGhlIHBsYW4KKwkgKiB3aGVuIHJldHJpZXZpbmcgY29sdW1uIG5h bWVzLgorCSAqCisJICogVGhpcyBtYXkgYmUgb3ZlcmtpbGwsIGJ1dCBzaW5jZSBwYWdlIGxvY2tz IGFyZSBoZWxkIGZvciBhIHNob3J0IGR1cmF0aW9uCisJICogd2UgY2hlY2sgYWxsIHRoZSBMb2Nh bExvY2sgZW50cmllcyBhbmQgd2hlbiBmaW5kaW5nIGV2ZW4gb25lLCBnaXZlIHVwCisJICogbG9n Z2luZyB0aGUgcGxhbi4KKwkgKi8KKwloYXNoX3NlcV9pbml0KCZzdGF0dXMsIEdldExvY2tNZXRo b2RMb2NhbEhhc2goKSk7CisJd2hpbGUgKChsb2NhbGxvY2sgPSAoTE9DQUxMT0NLICopIGhhc2hf c2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwl7CisJCWlmIChMT0NBTExPQ0tfTE9DS1RB RygqbG9jYWxsb2NrKSA9PSBMT0NLVEFHX1BBR0UpCisJCXsKKwkJCWVyZXBvcnQoTE9HX1NFUlZF Ul9PTkxZLAorCQkJCWVycm1zZygiYmFja2VuZCB3aXRoIFBJRCAlZCBpcyBob2xkaW5nIGEgcGFn ZSBsb2NrLiBUcnkgYWdhaW4iLAorCQkJCQlNeVByb2NQaWQpKTsKKwkJCWhhc2hfc2VxX3Rlcm0o JnN0YXR1cyk7CisJCQlyZXR1cm47CisJCX0KKwl9CisKKwllcyA9IE5ld0V4cGxhaW5TdGF0ZSgp OworCisJZXMtPmZvcm1hdCA9IEVYUExBSU5fRk9STUFUX1RFWFQ7CisJZXMtPnNldHRpbmdzID0g dHJ1ZTsKKwllcy0+dmVyYm9zZSA9IHRydWU7CisJZXMtPnJ1bm5pbmcgPSB0cnVlOworCisJRXhw bGFpbkJlZ2luT3V0cHV0KGVzKTsKKwlFeHBsYWluUXVlcnlUZXh0KGVzLCBBY3RpdmVRdWVyeURl c2MpOworCUV4cGxhaW5QcmludFBsYW4oZXMsIEFjdGl2ZVF1ZXJ5RGVzYyk7CisJaWYgKGVzLT5j b3N0cykKKwkJRXhwbGFpblByaW50SklUU3VtbWFyeShlcywgQWN0aXZlUXVlcnlEZXNjKTsKKwlF eHBsYWluRW5kT3V0cHV0KGVzKTsKKworCS8qIFJlbW92ZSBsYXN0IGxpbmUgYnJlYWsgKi8KKwlp ZiAoZXMtPnN0ci0+bGVuID4gMCAmJiBlcy0+c3RyLT5kYXRhW2VzLT5zdHItPmxlbiAtIDFdID09 ICdcbicpCisJCWVzLT5zdHItPmRhdGFbLS1lcy0+c3RyLT5sZW5dID0gJ1wwJzsKKworCWVyZXBv cnQoTE9HX1NFUlZFUl9PTkxZLAorCQkJZXJybXNnKCJxdWVyeSBwbGFuIHJ1bm5pbmcgb24gYmFj a2VuZCB3aXRoIFBJRCAlZCBpczpcbiVzIiwKKwkJCQkJTXlQcm9jUGlkLCBlcy0+c3RyLT5kYXRh KSwKKwkJCSBlcnJoaWRlc3RtdCh0cnVlKSwKKwkJCSBlcnJoaWRlY29udGV4dCh0cnVlKSk7Cit9 CisKKy8qCisgKiBwZ19sb2dfcXVlcnlfcGxhbgorICoJCVNpZ25hbCBhIGJhY2tlbmQgcHJvY2Vz cyB0byBsb2cgdGhlIHF1ZXJ5IHBsYW4gb2YgdGhlIHJ1bm5pbmcgcXVlcnkuCisgKgorICogQnkg ZGVmYXVsdCwgb25seSBzdXBlcnVzZXJzIGFyZSBhbGxvd2VkIHRvIHNpZ25hbCB0byBsb2cgdGhl IHBsYW4gYmVjYXVzZQorICogYWxsb3dpbmcgYW55IHVzZXJzIHRvIGlzc3VlIHRoaXMgcmVxdWVz dCBhdCBhbiB1bmJvdW5kZWQgcmF0ZSB3b3VsZAorICogY2F1c2UgbG90cyBvZiBsb2cgbWVzc2Fn ZXMgYW5kIHdoaWNoIGNhbiBsZWFkIHRvIGRlbmlhbCBvZiBzZXJ2aWNlLgorICogQWRkaXRpb25h bCByb2xlcyBjYW4gYmUgcGVybWl0dGVkIHdpdGggR1JBTlQuCisgKi8KK0RhdHVtCitwZ19sb2df cXVlcnlfcGxhbihQR19GVU5DVElPTl9BUkdTKQoreworCWludAkJCXBpZCA9IFBHX0dFVEFSR19J TlQzMigwKTsKKwlQR19SRVRVUk5fQk9PTChTZW5kUHJvY1NpZ25hbEZvckxvZ0luZm8ocGlkLCBQ Uk9DU0lHX0xPR19DVVJSRU5UX1BMQU4pKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4 IGIzY2U0YmFlNTMuLmM3NGFhMWQwNGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAtNzYs NiArNzYsOSBAQCBFeGVjdXRvckVuZF9ob29rX3R5cGUgRXhlY3V0b3JFbmRfaG9vayA9IE5VTEw7 CiAvKiBIb29rIGZvciBwbHVnaW4gdG8gZ2V0IGNvbnRyb2wgaW4gRXhlY0NoZWNrUlRQZXJtcygp ICovCiBFeGVjdXRvckNoZWNrUGVybXNfaG9va190eXBlIEV4ZWN1dG9yQ2hlY2tQZXJtc19ob29r ID0gTlVMTDsKIAorLyogQ3VycmVudGx5IGV4ZWN1dGluZyBxdWVyeSdzIFF1ZXJ5RGVzYyAqLwor UXVlcnlEZXNjICpBY3RpdmVRdWVyeURlc2MgPSBOVUxMOworCiAvKiBkZWNscyBmb3IgbG9jYWwg cm91dGluZXMgb25seSB1c2VkIHdpdGhpbiB0aGlzIG1vZHVsZSAqLwogc3RhdGljIHZvaWQgSW5p dFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOwogc3RhdGljIHZvaWQgQ2hl Y2tWYWxpZFJvd01hcmtSZWwoUmVsYXRpb24gcmVsLCBSb3dNYXJrVHlwZSBtYXJrVHlwZSk7CkBA IC0yOTksMTAgKzMwMiwxNyBAQCBFeGVjdXRvclJ1bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywKIAkJ CVNjYW5EaXJlY3Rpb24gZGlyZWN0aW9uLCB1aW50NjQgY291bnQsCiAJCQlib29sIGV4ZWN1dGVf b25jZSkKIHsKKwlRdWVyeURlc2MgKnNhdmVfQWN0aXZlUXVlcnlEZXNjOworCisJc2F2ZV9BY3Rp dmVRdWVyeURlc2MgPSBBY3RpdmVRdWVyeURlc2M7CisJQWN0aXZlUXVlcnlEZXNjID0gcXVlcnlE ZXNjOworCiAJaWYgKEV4ZWN1dG9yUnVuX2hvb2spCiAJCSgqRXhlY3V0b3JSdW5faG9vaykgKHF1 ZXJ5RGVzYywgZGlyZWN0aW9uLCBjb3VudCwgZXhlY3V0ZV9vbmNlKTsKIAllbHNlCiAJCXN0YW5k YXJkX0V4ZWN1dG9yUnVuKHF1ZXJ5RGVzYywgZGlyZWN0aW9uLCBjb3VudCwgZXhlY3V0ZV9vbmNl KTsKKworCUFjdGl2ZVF1ZXJ5RGVzYyA9IHNhdmVfQWN0aXZlUXVlcnlEZXNjOwogfQogCiB2b2lk CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgYi9zcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKaW5kZXggNmU2OTM5OGNkZC4uNmVhNjNl MGM1MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCisr KyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwpAQCAtMjAsNiArMjAsNyBA QAogI2luY2x1ZGUgImFjY2Vzcy9wYXJhbGxlbC5oIgogI2luY2x1ZGUgInBvcnQvcGdfYml0dXRp bHMuaCIKICNpbmNsdWRlICJjb21tYW5kcy9hc3luYy5oIgorI2luY2x1ZGUgImNvbW1hbmRzL2V4 cGxhaW4uaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNp bmNsdWRlICJyZXBsaWNhdGlvbi93YWxzZW5kZXIuaCIKQEAgLTY2MSw2ICs2NjIsOSBAQCBwcm9j c2lnbmFsX3NpZ3VzcjFfaGFuZGxlcihTSUdOQUxfQVJHUykKIAlpZiAoQ2hlY2tQcm9jU2lnbmFs KFBST0NTSUdfTE9HX01FTU9SWV9DT05URVhUKSkKIAkJSGFuZGxlTG9nTWVtb3J5Q29udGV4dElu dGVycnVwdCgpOwogCisJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX0xPR19DVVJSRU5UX1BM QU4pKQorCQlIYW5kbGVMb2dDdXJyZW50UGxhbkludGVycnVwdCgpOworCiAJaWYgKENoZWNrUHJv Y1NpZ25hbChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0RBVEFCQVNFKSkKIAkJUmVjb3ZlcnlD b25mbGljdEludGVycnVwdChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0RBVEFCQVNFKTsKIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2lnbmFsZnVuY3MuYyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3NpZ25hbGZ1bmNzLmMKaW5kZXggZGU2OWQ2MGU3OS4uN2FlZWM2 OWVhNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2lnbmFsZnVuY3MuYwor KysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaWduYWxmdW5jcy5jCkBAIC0yMyw2ICsyMyw3 IEBACiAjaW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJv Yy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCisjaW5jbHVkZSAic3RvcmFnZS9z aWduYWxmdW5jcy5oIgogI2luY2x1ZGUgInV0aWxzL2FjbC5oIgogI2luY2x1ZGUgInV0aWxzL2J1 aWx0aW5zLmgiCiAKQEAgLTI5OCwzICsyOTksNTcgQEAgcGdfcm90YXRlX2xvZ2ZpbGVfdjIoUEdf RlVOQ1RJT05fQVJHUykKIAlTZW5kUG9zdG1hc3RlclNpZ25hbChQTVNJR05BTF9ST1RBVEVfTE9H RklMRSk7CiAJUEdfUkVUVVJOX0JPT0wodHJ1ZSk7CiB9CisKKy8qCisgKiBTaWduYWwgYSBiYWNr ZW5kIHByb2Nlc3MgdG8gbG9nIGl0cyBpbmZvcm1hdGlvbi4KKyAqCisgKiBCeSBkZWZhdWx0LCBv bmx5IHN1cGVydXNlcnMgYXJlIGFsbG93ZWQgdG8gc2lnbmFsIHRvIGxvZyBpbmZvcm1hdGlvbgor ICogYmVjYXVzZSBhbGxvd2luZyBhbnkgdXNlcnMgdG8gaXNzdWUgdGhpcyByZXF1ZXN0IGF0IGFu IHVuYm91bmRlZAorICogcmF0ZSB3b3VsZCBjYXVzZSBsb3RzIG9mIGxvZyBtZXNzYWdlcyB3aGlj aCBjYW4gbGVhZCB0byBkZW5pYWwgb2YKKyAqIHNlcnZpY2UuIEFkZGl0aW9uYWwgcm9sZXMgY2Fu IGJlIHBlcm1pdHRlZCB3aXRoIEdSQU5ULgorICoKKyAqIE9uIHJlY2VpcHQgb2YgdGhpcyBzaWdu YWwsIGEgYmFja2VuZCBzZXRzIHRoZSBmbGFnIGluIHRoZSBzaWduYWwKKyAqIGhhbmRsZXIsIHdo aWNoIGNhdXNlcyB0aGUgbmV4dCBDSEVDS19GT1JfSU5URVJSVVBUUygpIHRvIGxvZyB0aGUKKyAq IGluZm9ybWF0aW9uLgorICovCitib29sCitTZW5kUHJvY1NpZ25hbEZvckxvZ0luZm8ocGlkX3Qg cGlkLCBQcm9jU2lnbmFsUmVhc29uIHJlYXNvbikKK3sKKwlQR1BST0MJICAgKnByb2M7CisKKwlB c3NlcnQocmVhc29uID09IFBST0NTSUdfTE9HX01FTU9SWV9DT05URVhUIHx8CisJCSAgIHJlYXNv biA9PSBQUk9DU0lHX0xPR19DVVJSRU5UX1BMQU4pOworCisJcHJvYyA9IEJhY2tlbmRQaWRHZXRQ cm9jKHBpZCk7CisKKwkvKgorCSAqIEJhY2tlbmRQaWRHZXRQcm9jIHJldHVybnMgTlVMTCBpZiB0 aGUgcGlkIGlzbid0IHZhbGlkOyBidXQgYnkgdGhlIHRpbWUKKwkgKiB3ZSByZWFjaCBraWxsKCks IGEgcHJvY2VzcyBmb3Igd2hpY2ggd2UgZ2V0IGEgdmFsaWQgcHJvYyBoZXJlIG1pZ2h0CisJICog aGF2ZSB0ZXJtaW5hdGVkIG9uIGl0cyBvd24uICBUaGVyZSdzIG5vIHdheSB0byBhY3F1aXJlIGEg bG9jayBvbiBhbgorCSAqIGFyYml0cmFyeSBwcm9jZXNzIHRvIHByZXZlbnQgdGhhdC4gQnV0IHNp bmNlIHRoaXMgbWVjaGFuaXNtIGlzIHVzdWFsbHkKKwkgKiB1c2VkIGZvciBiZWxvdyBwdXJwb3Nl cywgaXQgbWlnaHQgZW5kIGl0cyBvd24gZmlyc3QgYW5kIHRoZSBpbmZvcm1hdGlvbgorCSAqIGlz IG5vdCBsb2dnZWQgaXMgbm90IGEgcHJvYmxlbS4KKwkgKiAtIGRlYnVnIGEgYmFja2VuZCBydW5u aW5nIGFuZCBjb25zdW1pbmcgbG90cyBvZiBtZW1vcnkKKwkgKiAtIGxvb2sgaW50byB0aGUgcGxh biBvZiB0aGUgbG9uZyBydW5uaW5nIHF1ZXJ5CisJICovCisJaWYgKHByb2MgPT0gTlVMTCkKKwl7 CisJCS8qCisJCSAqIFRoaXMgaXMganVzdCBhIHdhcm5pbmcgc28gYSBsb29wLXRocm91Z2gtcmVz dWx0c2V0IHdpbGwgbm90IGFib3J0CisJCSAqIGlmIG9uZSBiYWNrZW5kIHRlcm1pbmF0ZWQgb24g aXRzIG93biBkdXJpbmcgdGhlIHJ1bi4KKwkJICovCisJCWVyZXBvcnQoV0FSTklORywKKwkJCQll cnJtc2coIlBJRCAlZCBpcyBub3QgYSBQb3N0Z3JlU1FMIHNlcnZlciBwcm9jZXNzIiwgcGlkKSk7 CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlpZiAoU2VuZFByb2NTaWduYWwocGlkLCByZWFzb24s IHByb2MtPmJhY2tlbmRJZCkgPCAwKQorCXsKKwkJLyogQWdhaW4sIGp1c3QgYSB3YXJuaW5nIHRv IGFsbG93IGxvb3BzICovCisJCWVyZXBvcnQoV0FSTklORywKKwkJCQllcnJtc2coImNvdWxkIG5v dCBzZW5kIHNpZ25hbCB0byBwcm9jZXNzICVkOiAlbSIsIHBpZCkpOworCQlyZXR1cm4gZmFsc2U7 CisJfQorCisJcmV0dXJuIHRydWU7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdl L2xtZ3IvbG9jay5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xvY2suYwppbmRleCBjMjVh ZjdmZTA5Li44YTcwYTZkOTRlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3Iv bG9jay5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMKQEAgLTYxNCwxNyAr NjE0LDE4IEBAIExvY2tIZWxkQnlNZShjb25zdCBMT0NLVEFHICpsb2NrdGFnLCBMT0NLTU9ERSBs b2NrbW9kZSkKIAlyZXR1cm4gKGxvY2FsbG9jayAmJiBsb2NhbGxvY2stPm5Mb2NrcyA+IDApOwog fQogCi0jaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORwogLyoKLSAqIEdldExvY2tNZXRob2RMb2Nh bEhhc2ggLS0gcmV0dXJuIHRoZSBoYXNoIG9mIGxvY2FsIGxvY2tzLCBmb3IgbW9kdWxlcyB0aGF0 Ci0gKgkJZXZhbHVhdGUgYXNzZXJ0aW9ucyBiYXNlZCBvbiBhbGwgbG9ja3MgaGVsZC4KKyAqIEdl dExvY2tNZXRob2RMb2NhbEhhc2ggLS0gcmV0dXJuIHRoZSBoYXNoIG9mIGxvY2FsIGxvY2tzLCBt YWlubHkgZm9yCisgKgkJbW9kdWxlcyB0aGF0IGV2YWx1YXRlIGFzc2VydGlvbnMgYmFzZWQgb24g YWxsIGxvY2tzIGhlbGQuCisgKgorICogTk9URTogV2hlbiB0aGVyZSBhcmUgbWFueSBlbnRyaWVz IGluIExvY2tNZXRob2RMb2NhbEhhc2gsIGNhbGxpbmcgdGhpcworICogZnVuY3Rpb24gYW5kIGxv b2tpbmcgaW50byBhbGwgb2YgdGhlbSBjYW4gbGVhZCB0byBwZXJmb3JtYW5jZSBwcm9ibGVtcy4K ICAqLwogSFRBQiAqCiBHZXRMb2NrTWV0aG9kTG9jYWxIYXNoKHZvaWQpCiB7CiAJcmV0dXJuIExv Y2tNZXRob2RMb2NhbEhhc2g7CiB9Ci0jZW5kaWYKIAogLyoKICAqIExvY2tIYXNXYWl0ZXJzIC0t IGxvb2sgdXAgJ2xvY2t0YWcnIGFuZCBjaGVjayBpZiByZWxlYXNpbmcgdGhpcwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jl cy5jCmluZGV4IDA3NzVhYmUzNWQuLjc3NGRhZGI4N2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTQx LDYgKzQxLDcgQEAKICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgogI2luY2x1ZGUgImNhdGFsb2cv cGdfdHlwZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2FzeW5jLmgiCisjaW5jbHVkZSAiY29tbWFu ZHMvZXhwbGFpbi5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ByZXBhcmUuaCIKICNpbmNsdWRlICJl eGVjdXRvci9zcGkuaCIKICNpbmNsdWRlICJqaXQvaml0LmgiCkBAIC0zMzY2LDYgKzMzNjcsOSBA QCBQcm9jZXNzSW50ZXJydXB0cyh2b2lkKQogCiAJaWYgKExvZ01lbW9yeUNvbnRleHRQZW5kaW5n KQogCQlQcm9jZXNzTG9nTWVtb3J5Q29udGV4dEludGVycnVwdCgpOworCisJaWYgKExvZ0N1cnJl bnRQbGFuUGVuZGluZykKKwkJUHJvY2Vzc0xvZ0N1cnJlbnRQbGFuSW50ZXJydXB0KCk7CiB9CiAK IApAQCAtNDI4OSw2ICs0MjkzLDkgQEAgUG9zdGdyZXNNYWluKGNvbnN0IGNoYXIgKmRibmFtZSwg Y29uc3QgY2hhciAqdXNlcm5hbWUpCiAJCS8qIFdlIGRvbid0IGhhdmUgYSB0cmFuc2FjdGlvbiBj b21tYW5kIG9wZW4gYW55bW9yZSAqLwogCQl4YWN0X3N0YXJ0ZWQgPSBmYWxzZTsKIAorCQkvKiBX ZSBoYXZlIG5vIHJ1bm5pbmcgcXVlcnkgKi8KKwkJQWN0aXZlUXVlcnlEZXNjID0gTlVMTDsKKwog CQkvKgogCQkgKiBJZiBhbiBlcnJvciBvY2N1cnJlZCB3aGlsZSB3ZSB3ZXJlIHJlYWRpbmcgYSBt ZXNzYWdlIGZyb20gdGhlCiAJCSAqIGNsaWVudCwgd2UgaGF2ZSBwb3RlbnRpYWxseSBsb3N0IHRy YWNrIG9mIHdoZXJlIHRoZSBwcmV2aW91cwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L21jeHRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5jCmluZGV4 IDZkZGJmNzBiMzAuLjJkYjY2MjI4MmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9tY3h0ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbWN4dGZ1bmNzLmMKQEAg LTE4LDggKzE4LDggQEAKICNpbmNsdWRlICJmdW5jYXBpLmgiCiAjaW5jbHVkZSAibWlzY2FkbWlu LmgiCiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKLSNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIK ICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc2lnbmFs ZnVuY3MuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogCiAvKiAtLS0tLS0tLS0tCkBA IC0xNzUsMzcgKzE3NSw1IEBAIERhdHVtCiBwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMo UEdfRlVOQ1RJT05fQVJHUykKIHsKIAlpbnQJCQlwaWQgPSBQR19HRVRBUkdfSU5UMzIoMCk7Ci0J UEdQUk9DCSAgICpwcm9jOwotCi0JcHJvYyA9IEJhY2tlbmRQaWRHZXRQcm9jKHBpZCk7Ci0KLQkv KgotCSAqIEJhY2tlbmRQaWRHZXRQcm9jIHJldHVybnMgTlVMTCBpZiB0aGUgcGlkIGlzbid0IHZh bGlkOyBidXQgYnkgdGhlIHRpbWUKLQkgKiB3ZSByZWFjaCBraWxsKCksIGEgcHJvY2VzcyBmb3Ig d2hpY2ggd2UgZ2V0IGEgdmFsaWQgcHJvYyBoZXJlIG1pZ2h0Ci0JICogaGF2ZSB0ZXJtaW5hdGVk IG9uIGl0cyBvd24uICBUaGVyZSdzIG5vIHdheSB0byBhY3F1aXJlIGEgbG9jayBvbiBhbgotCSAq IGFyYml0cmFyeSBwcm9jZXNzIHRvIHByZXZlbnQgdGhhdC4gQnV0IHNpbmNlIHRoaXMgbWVjaGFu aXNtIGlzIHVzdWFsbHkKLQkgKiB1c2VkIHRvIGRlYnVnIGEgYmFja2VuZCBydW5uaW5nIGFuZCBj b25zdW1pbmcgbG90cyBvZiBtZW1vcnksIHRoYXQgaXQKLQkgKiBtaWdodCBlbmQgb24gaXRzIG93 biBmaXJzdCBhbmQgaXRzIG1lbW9yeSBjb250ZXh0cyBhcmUgbm90IGxvZ2dlZCBpcwotCSAqIG5v dCBhIHByb2JsZW0uCi0JICovCi0JaWYgKHByb2MgPT0gTlVMTCkKLQl7Ci0JCS8qCi0JCSAqIFRo aXMgaXMganVzdCBhIHdhcm5pbmcgc28gYSBsb29wLXRocm91Z2gtcmVzdWx0c2V0IHdpbGwgbm90 IGFib3J0Ci0JCSAqIGlmIG9uZSBiYWNrZW5kIHRlcm1pbmF0ZWQgb24gaXRzIG93biBkdXJpbmcg dGhlIHJ1bi4KLQkJICovCi0JCWVyZXBvcnQoV0FSTklORywKLQkJCQkoZXJybXNnKCJQSUQgJWQg aXMgbm90IGEgUG9zdGdyZVNRTCBzZXJ2ZXIgcHJvY2VzcyIsIHBpZCkpKTsKLQkJUEdfUkVUVVJO X0JPT0woZmFsc2UpOwotCX0KLQotCWlmIChTZW5kUHJvY1NpZ25hbChwaWQsIFBST0NTSUdfTE9H X01FTU9SWV9DT05URVhULCBwcm9jLT5iYWNrZW5kSWQpIDwgMCkKLQl7Ci0JCS8qIEFnYWluLCBq dXN0IGEgd2FybmluZyB0byBhbGxvdyBsb29wcyAqLwotCQllcmVwb3J0KFdBUk5JTkcsCi0JCQkJ KGVycm1zZygiY291bGQgbm90IHNlbmQgc2lnbmFsIHRvIHByb2Nlc3MgJWQ6ICVtIiwgcGlkKSkp OwotCQlQR19SRVRVUk5fQk9PTChmYWxzZSk7Ci0JfQotCi0JUEdfUkVUVVJOX0JPT0wodHJ1ZSk7 CisJUEdfUkVUVVJOX0JPT0woU2VuZFByb2NTaWduYWxGb3JMb2dJbmZvKHBpZCwgUFJPQ1NJR19M T0dfTUVNT1JZX0NPTlRFWFQpKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2lu aXQvZ2xvYmFscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMKaW5kZXggMzgx ZDllNTQ4ZC4uMTI2ZWQxMDM2MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9n bG9iYWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMKQEAgLTM2LDYg KzM2LDcgQEAgdm9sYXRpbGUgc2lnX2F0b21pY190IElkbGVJblRyYW5zYWN0aW9uU2Vzc2lvblRp bWVvdXRQZW5kaW5nID0gZmFsc2U7CiB2b2xhdGlsZSBzaWdfYXRvbWljX3QgSWRsZVNlc3Npb25U aW1lb3V0UGVuZGluZyA9IGZhbHNlOwogdm9sYXRpbGUgc2lnX2F0b21pY190IFByb2NTaWduYWxC YXJyaWVyUGVuZGluZyA9IGZhbHNlOwogdm9sYXRpbGUgc2lnX2F0b21pY190IExvZ01lbW9yeUNv bnRleHRQZW5kaW5nID0gZmFsc2U7Cit2b2xhdGlsZSBzaWdfYXRvbWljX3QgTG9nQ3VycmVudFBs YW5QZW5kaW5nID0gZmFsc2U7CiB2b2xhdGlsZSB1aW50MzIgSW50ZXJydXB0SG9sZG9mZkNvdW50 ID0gMDsKIHZvbGF0aWxlIHVpbnQzMiBRdWVyeUNhbmNlbEhvbGRvZmZDb3VudCA9IDA7CiB2b2xh dGlsZSB1aW50MzIgQ3JpdFNlY3Rpb25Db3VudCA9IDA7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApp bmRleCBkMDY4ZDY1MzJlLi4wYjk2Y2Y2MWIyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAg LTgwMzgsNiArODAzOCwxMiBAQAogICBwcm9yZXR0eXBlID0+ICdib29sJywgcHJvYXJndHlwZXMg PT4gJ2ludDQnLAogICBwcm9zcmMgPT4gJ3BnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cycg fSwKIAorIyBsb2dnaW5nIHBsYW4gb2YgdGhlIHJ1bm5pbmcgcXVlcnkgb24gdGhlIHNwZWNpZmll ZCBiYWNrZW5kCit7IG9pZCA9PiAnNDU0NScsIGRlc2NyID0+ICdsb2cgcGxhbiBvZiB0aGUgcnVu bmluZyBxdWVyeSBvbiB0aGUgc3BlY2lmaWVkIGJhY2tlbmQnLAorICBwcm9uYW1lID0+ICdwZ19s b2dfcXVlcnlfcGxhbicsCisgIHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAnYm9v bCcsCisgIHByb2FyZ3R5cGVzID0+ICdpbnQ0JywgcHJvc3JjID0+ICdwZ19sb2dfcXVlcnlfcGxh bicgfSwKKwogIyBub24tcGVyc2lzdGVudCBzZXJpZXMgZ2VuZXJhdG9yCiB7IG9pZCA9PiAnMTA2 NicsIGRlc2NyID0+ICdub24tcGVyc2lzdGVudCBzZXJpZXMgZ2VuZXJhdG9yJywKICAgcHJvbmFt ZSA9PiAnZ2VuZXJhdGVfc2VyaWVzJywgcHJvcm93cyA9PiAnMTAwMCcsCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBs YWluLmgKaW5kZXggZTk0ZDllNDljZi4uN2MyZGNlN2NkZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvY29tbWFuZHMvZXhwbGFpbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4u aApAQCAtNTksNiArNTksNyBAQCB0eXBlZGVmIHN0cnVjdCBFeHBsYWluU3RhdGUKIAlib29sCQlo aWRlX3dvcmtlcnM7CS8qIHNldCBpZiB3ZSBmaW5kIGFuIGludmlzaWJsZSBHYXRoZXIgKi8KIAkv KiBzdGF0ZSByZWxhdGVkIHRvIHRoZSBjdXJyZW50IHBsYW4gbm9kZSAqLwogCUV4cGxhaW5Xb3Jr ZXJzU3RhdGUgKndvcmtlcnNfc3RhdGU7IC8qIG5lZWRlZCBpZiBwYXJhbGxlbCBwbGFuICovCisJ Ym9vbAkJcnVubmluZzsJCS8qIHdoZXRoZXIgdGFyZ2V0IHF1ZXJ5IGlzIGFscmVhZHkgcnVubmlu ZyAqLwogfSBFeHBsYWluU3RhdGU7CiAKIC8qIEhvb2sgZm9yIHBsdWdpbnMgdG8gZ2V0IGNvbnRy b2wgaW4gRXhwbGFpbk9uZVF1ZXJ5KCkgKi8KQEAgLTEyNCw0ICsxMjUsNiBAQCBleHRlcm4gdm9p ZCBFeHBsYWluT3Blbkdyb3VwKGNvbnN0IGNoYXIgKm9ianR5cGUsIGNvbnN0IGNoYXIgKmxhYmVs bmFtZSwKIGV4dGVybiB2b2lkIEV4cGxhaW5DbG9zZUdyb3VwKGNvbnN0IGNoYXIgKm9ianR5cGUs IGNvbnN0IGNoYXIgKmxhYmVsbmFtZSwKIAkJCQkJCQkgIGJvb2wgbGFiZWxlZCwgRXhwbGFpblN0 YXRlICplcyk7CiAKK2V4dGVybiB2b2lkIEhhbmRsZUxvZ0N1cnJlbnRQbGFuSW50ZXJydXB0KHZv aWQpOworZXh0ZXJuIHZvaWQgUHJvY2Vzc0xvZ0N1cnJlbnRQbGFuSW50ZXJydXB0KHZvaWQpOwog I2VuZGlmCQkJCQkJCS8qIEVYUExBSU5fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbWlz Y2FkbWluLmggYi9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAppbmRleCA5MGEzMDE2MDY1Li4wZmIw ZGE3N2UyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAorKysgYi9zcmMvaW5j bHVkZS9taXNjYWRtaW4uaApAQCAtOTQsNiArOTQsNyBAQCBleHRlcm4gUEdETExJTVBPUlQgdm9s YXRpbGUgc2lnX2F0b21pY190IElkbGVJblRyYW5zYWN0aW9uU2Vzc2lvblRpbWVvdXRQZW5kaW5n OwogZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBJZGxlU2Vzc2lvblRp bWVvdXRQZW5kaW5nOwogZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBQ cm9jU2lnbmFsQmFycmllclBlbmRpbmc7CiBleHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2ln X2F0b21pY190IExvZ01lbW9yeUNvbnRleHRQZW5kaW5nOworZXh0ZXJuIFBHRExMSU1QT1JUIHZv bGF0aWxlIHNpZ19hdG9taWNfdCBMb2dDdXJyZW50UGxhblBlbmRpbmc7CiAKIGV4dGVybiBQR0RM TElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgQ2hlY2tDbGllbnRDb25uZWN0aW9uUGVuZGlu ZzsKIGV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgQ2xpZW50Q29ubmVj dGlvbkxvc3Q7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2suaCBiL3NyYy9p bmNsdWRlL3N0b3JhZ2UvbG9jay5oCmluZGV4IGE1Mjg2ZmFiODkzLi40ZjBlYWY4M2ZiYyAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9sb2NrLmgKKysrIGIvc3JjL2luY2x1ZGUvc3Rv cmFnZS9sb2NrLmgKQEAgLTU2MSw5ICs1NjEsNyBAQCBleHRlcm4gdm9pZCBMb2NrUmVsZWFzZVNl c3Npb24oTE9DS01FVEhPRElEIGxvY2ttZXRob2RpZCk7CiBleHRlcm4gdm9pZCBMb2NrUmVsZWFz ZUN1cnJlbnRPd25lcihMT0NBTExPQ0sgKipsb2NhbGxvY2tzLCBpbnQgbmxvY2tzKTsKIGV4dGVy biB2b2lkIExvY2tSZWFzc2lnbkN1cnJlbnRPd25lcihMT0NBTExPQ0sgKipsb2NhbGxvY2tzLCBp bnQgbmxvY2tzKTsKIGV4dGVybiBib29sIExvY2tIZWxkQnlNZShjb25zdCBMT0NLVEFHICpsb2Nr dGFnLCBMT0NLTU9ERSBsb2NrbW9kZSk7Ci0jaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORwogZXh0 ZXJuIEhUQUIgKkdldExvY2tNZXRob2RMb2NhbEhhc2godm9pZCk7Ci0jZW5kaWYKIGV4dGVybiBi b29sIExvY2tIYXNXYWl0ZXJzKGNvbnN0IExPQ0tUQUcgKmxvY2t0YWcsCiAJCQkJCQkgICBMT0NL TU9ERSBsb2NrbW9kZSwgYm9vbCBzZXNzaW9uTG9jayk7CiBleHRlcm4gVmlydHVhbFRyYW5zYWN0 aW9uSWQgKkdldExvY2tDb25mbGljdHMoY29uc3QgTE9DS1RBRyAqbG9ja3RhZywKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oIGIvc3JjL2luY2x1ZGUvc3RvcmFn ZS9wcm9jc2lnbmFsLmgKaW5kZXggZWVjMTg2YmUyZS4uYzFhNzIxOGQ2OSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFn ZS9wcm9jc2lnbmFsLmgKQEAgLTM1LDYgKzM1LDcgQEAgdHlwZWRlZiBlbnVtCiAJUFJPQ1NJR19X QUxTTkRfSU5JVF9TVE9QUElORywJLyogYXNrIHdhbHNlbmRlcnMgdG8gcHJlcGFyZSBmb3Igc2h1 dGRvd24gICovCiAJUFJPQ1NJR19CQVJSSUVSLAkJCS8qIGdsb2JhbCBiYXJyaWVyIGludGVycnVw dCAgKi8KIAlQUk9DU0lHX0xPR19NRU1PUllfQ09OVEVYVCwgLyogYXNrIGJhY2tlbmQgdG8gbG9n IHRoZSBtZW1vcnkgY29udGV4dHMgKi8KKwlQUk9DU0lHX0xPR19DVVJSRU5UX1BMQU4sIC8qIGFz ayBiYWNrZW5kIHRvIGxvZyBwbGFuIG9mIHRoZSBjdXJyZW50IHF1ZXJ5ICovCiAKIAkvKiBSZWNv dmVyeSBjb25mbGljdCByZWFzb25zICovCiAJUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9EQVRB QkFTRSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2lnbmFsZnVuY3MuaCBiL3Ny Yy9pbmNsdWRlL3N0b3JhZ2Uvc2lnbmFsZnVuY3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwLi41ZjZiMTI0MzcyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUv c3RvcmFnZS9zaWduYWxmdW5jcy5oCkBAIC0wLDAgKzEsMjIgQEAKKy8qLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICoKKyAqIHNpZ25hbGZ1bmNzLmgKKyAqCSAgRnVuY3Rpb25zIGZvciBzaWduYWxpbmcgYmFj a2VuZHMKKyAqCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjEsIFBvc3Rn cmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMp IDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIHNy Yy9pbmNsdWRlL3N0b3JhZ2Uvc2lnbmFsZnVuY3MuaAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICovCisjaWZuZGVmIFBST0NTSUdOQUxGVU5DX0gKKyNkZWZpbmUgUFJPQ1NJR05BTEZVTkNfSAor CisvKgorICogcHJvdG90eXBlcyBmb3IgZnVuY3Rpb25zIGluIHNpZ25hbGZ1bmNzLmMKKyAqLwor ZXh0ZXJuIGJvb2wgU2VuZFByb2NTaWduYWxGb3JMb2dJbmZvKHBpZF90IHBpZCwgUHJvY1NpZ25h bFJlYXNvbiByZWFzb24pOworCisjZW5kaWYJCQkJCQkJLyogUFJPQ1NJR05BTEZVTkNfSCAqLwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdGNvcC9wcXVlcnkuaCBiL3NyYy9pbmNsdWRlL3Rjb3Av cHF1ZXJ5LmgKaW5kZXggMjMxOGYwNGZmMC4uZDM3YTVlYjgzNyAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvdGNvcC9wcXVlcnkuaAorKysgYi9zcmMvaW5jbHVkZS90Y29wL3BxdWVyeS5oCkBAIC0y MSw2ICsyMSw3IEBAIHN0cnVjdCBQbGFubmVkU3RtdDsJCQkJLyogYXZvaWQgaW5jbHVkaW5nIHBs YW5ub2Rlcy5oIGhlcmUgKi8KIAogCiBleHRlcm4gUEdETExJTVBPUlQgUG9ydGFsIEFjdGl2ZVBv cnRhbDsKK2V4dGVybiBQR0RMTElNUE9SVCBRdWVyeURlc2MgKkFjdGl2ZVF1ZXJ5RGVzYzsKIAog CiBleHRlcm4gUG9ydGFsU3RyYXRlZ3kgQ2hvb3NlUG9ydGFsU3RyYXRlZ3koTGlzdCAqc3RtdHMp OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9taXNjX2Z1bmN0aW9ucy5v dXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL21pc2NfZnVuY3Rpb25zLm91dAppbmRleCA3 MWQzMTZjYWQzLi4xYjZiYzdhODlkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL21pc2NfZnVuY3Rpb25zLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL21p c2NfZnVuY3Rpb25zLm91dApAQCAtMTM0LDIxICsxMzQsMjIgQEAgTElORSAxOiBTRUxFQ1QgbnVt X251bGxzKCk7CiAgICAgICAgICAgICAgICBeCiBISU5UOiAgTm8gZnVuY3Rpb24gbWF0Y2hlcyB0 aGUgZ2l2ZW4gbmFtZSBhbmQgYXJndW1lbnQgdHlwZXMuIFlvdSBtaWdodCBuZWVkIHRvIGFkZCBl eHBsaWNpdCB0eXBlIGNhc3RzLgogLS0KLS0tIHBnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0 cygpCistLSBUZXN0IGxvZ2dpbmcgZnVuY3Rpb25zCiAtLQotLS0gTWVtb3J5IGNvbnRleHRzIGFy ZSBsb2dnZWQgYW5kIHRoZXkgYXJlIG5vdCByZXR1cm5lZCB0byB0aGUgZnVuY3Rpb24uCistLSBU aGUgb3V0cHV0cyBvZiB0aGVzZSBmdW5jdGlvbnMgYXJlIGxvZ2dlZCBhbmQgdGhleSBhcmUgbm90 IHJldHVybmVkIHRvCistLSB0aGUgZnVuY3Rpb24uCiAtLSBGdXJ0aGVybW9yZSwgdGhlaXIgY29u dGVudHMgY2FuIHZhcnkgZGVwZW5kaW5nIG9uIHRoZSB0aW1pbmcuIEhvd2V2ZXIsCiAtLSB3ZSBj YW4gYXQgbGVhc3QgdmVyaWZ5IHRoYXQgdGhlIGNvZGUgZG9lc24ndCBmYWlsLCBhbmQgdGhhdCB0 aGUKIC0tIHBlcm1pc3Npb25zIGFyZSBzZXQgcHJvcGVybHkuCi0tLQorLS0gcGdfbG9nX2JhY2tl bmRfbWVtb3J5X2NvbnRleHRzKCkKK0NSRUFURSBST0xFIHJlZ3Jlc3NfbG9nOwogU0VMRUNUIHBn X2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cyhwZ19iYWNrZW5kX3BpZCgpKTsKICBwZ19sb2df YmFja2VuZF9tZW1vcnlfY29udGV4dHMgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogIHQKICgxIHJvdykKIAotQ1JFQVRFIFJPTEUgcmVncmVzc19sb2dfbWVtb3J5OwotU0VMRUNU IGhhc19mdW5jdGlvbl9wcml2aWxlZ2UoJ3JlZ3Jlc3NfbG9nX21lbW9yeScsCitTRUxFQ1QgaGFz X2Z1bmN0aW9uX3ByaXZpbGVnZSgncmVncmVzc19sb2cnLAogICAncGdfbG9nX2JhY2tlbmRfbWVt b3J5X2NvbnRleHRzKGludGVnZXIpJywgJ0VYRUNVVEUnKTsgLS0gbm8KICBoYXNfZnVuY3Rpb25f cHJpdmlsZWdlIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNTYsMTUgKzE1NywxNSBA QCBTRUxFQ1QgaGFzX2Z1bmN0aW9uX3ByaXZpbGVnZSgncmVncmVzc19sb2dfbWVtb3J5JywKICgx IHJvdykKIAogR1JBTlQgRVhFQ1VURSBPTiBGVU5DVElPTiBwZ19sb2dfYmFja2VuZF9tZW1vcnlf Y29udGV4dHMoaW50ZWdlcikKLSAgVE8gcmVncmVzc19sb2dfbWVtb3J5OwotU0VMRUNUIGhhc19m dW5jdGlvbl9wcml2aWxlZ2UoJ3JlZ3Jlc3NfbG9nX21lbW9yeScsCisgIFRPIHJlZ3Jlc3NfbG9n OworU0VMRUNUIGhhc19mdW5jdGlvbl9wcml2aWxlZ2UoJ3JlZ3Jlc3NfbG9nJywKICAgJ3BnX2xv Z19iYWNrZW5kX21lbW9yeV9jb250ZXh0cyhpbnRlZ2VyKScsICdFWEVDVVRFJyk7IC0tIHllcwog IGhhc19mdW5jdGlvbl9wcml2aWxlZ2UgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICB0CiAo MSByb3cpCiAKLVNFVCBST0xFIHJlZ3Jlc3NfbG9nX21lbW9yeTsKK1NFVCBST0xFIHJlZ3Jlc3Nf bG9nOwogU0VMRUNUIHBnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cyhwZ19iYWNrZW5kX3Bp ZCgpKTsKICBwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMgCiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQpAQCAtMTczLDggKzE3NCw0MSBAQCBTRUxFQ1QgcGdfbG9nX2JhY2tl bmRfbWVtb3J5X2NvbnRleHRzKHBnX2JhY2tlbmRfcGlkKCkpOwogCiBSRVNFVCBST0xFOwogUkVW T0tFIEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKGlu dGVnZXIpCi0gIEZST00gcmVncmVzc19sb2dfbWVtb3J5OwotRFJPUCBST0xFIHJlZ3Jlc3NfbG9n X21lbW9yeTsKKyAgRlJPTSByZWdyZXNzX2xvZzsKKy0tIHBnX2xvZ19xdWVyeV9wbGFuKCkKK1NF TEVDVCBwZ19sb2dfcXVlcnlfcGxhbihwZ19iYWNrZW5kX3BpZCgpKTsKKyBwZ19sb2dfcXVlcnlf cGxhbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFTEVDVCBoYXNfZnVu Y3Rpb25fcHJpdmlsZWdlKCdyZWdyZXNzX2xvZycsCisgICdwZ19sb2dfcXVlcnlfcGxhbihpbnRl Z2VyKScsICdFWEVDVVRFJyk7IC0tIG5vCisgaGFzX2Z1bmN0aW9uX3ByaXZpbGVnZSAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworR1JBTlQgRVhFQ1VURSBPTiBGVU5D VElPTiBwZ19sb2dfcXVlcnlfcGxhbihpbnRlZ2VyKQorICBUTyByZWdyZXNzX2xvZzsKK1NFTEVD VCBoYXNfZnVuY3Rpb25fcHJpdmlsZWdlKCdyZWdyZXNzX2xvZycsCisgICdwZ19sb2dfcXVlcnlf cGxhbihpbnRlZ2VyKScsICdFWEVDVVRFJyk7IC0tIHllcworIGhhc19mdW5jdGlvbl9wcml2aWxl Z2UgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFVCBST0xFIHJl Z3Jlc3NfbG9nOworU0VMRUNUIHBnX2xvZ19xdWVyeV9wbGFuKHBnX2JhY2tlbmRfcGlkKCkpOwor IHBnX2xvZ19xdWVyeV9wbGFuIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKwor UkVTRVQgUk9MRTsKK1JFVk9LRSBFWEVDVVRFIE9OIEZVTkNUSU9OIHBnX2xvZ19xdWVyeV9wbGFu KGludGVnZXIpCisgIEZST00gcmVncmVzc19sb2c7CitEUk9QIFJPTEUgcmVncmVzc19sb2c7CiAt LQogLS0gVGVzdCBzb21lIGJ1aWx0LWluIFNSRnMKIC0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9taXNjX2Z1bmN0aW9ucy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9taXNj X2Z1bmN0aW9ucy5zcWwKaW5kZXggOGMyMzg3NGIzZi4uNWNiMmE2NGFhZCAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvbWlzY19mdW5jdGlvbnMuc3FsCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL21pc2NfZnVuY3Rpb25zLnNxbApAQCAtMzEsMzUgKzMxLDU1IEBAIFNFTEVDVCBu dW1fbm9ubnVsbHMoKTsKIFNFTEVDVCBudW1fbnVsbHMoKTsKIAogLS0KLS0tIHBnX2xvZ19iYWNr ZW5kX21lbW9yeV9jb250ZXh0cygpCistLSBUZXN0IGxvZ2dpbmcgZnVuY3Rpb25zCiAtLQotLS0g TWVtb3J5IGNvbnRleHRzIGFyZSBsb2dnZWQgYW5kIHRoZXkgYXJlIG5vdCByZXR1cm5lZCB0byB0 aGUgZnVuY3Rpb24uCistLSBUaGUgb3V0cHV0cyBvZiB0aGVzZSBmdW5jdGlvbnMgYXJlIGxvZ2dl ZCBhbmQgdGhleSBhcmUgbm90IHJldHVybmVkIHRvCistLSB0aGUgZnVuY3Rpb24uCiAtLSBGdXJ0 aGVybW9yZSwgdGhlaXIgY29udGVudHMgY2FuIHZhcnkgZGVwZW5kaW5nIG9uIHRoZSB0aW1pbmcu IEhvd2V2ZXIsCiAtLSB3ZSBjYW4gYXQgbGVhc3QgdmVyaWZ5IHRoYXQgdGhlIGNvZGUgZG9lc24n dCBmYWlsLCBhbmQgdGhhdCB0aGUKIC0tIHBlcm1pc3Npb25zIGFyZSBzZXQgcHJvcGVybHkuCi0t LQogCi1TRUxFQ1QgcGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKHBnX2JhY2tlbmRfcGlk KCkpOworLS0gcGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKCkKK0NSRUFURSBST0xFIHJl Z3Jlc3NfbG9nOwogCi1DUkVBVEUgUk9MRSByZWdyZXNzX2xvZ19tZW1vcnk7CitTRUxFQ1QgcGdf bG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKHBnX2JhY2tlbmRfcGlkKCkpOwogCi1TRUxFQ1Qg aGFzX2Z1bmN0aW9uX3ByaXZpbGVnZSgncmVncmVzc19sb2dfbWVtb3J5JywKK1NFTEVDVCBoYXNf ZnVuY3Rpb25fcHJpdmlsZWdlKCdyZWdyZXNzX2xvZycsCiAgICdwZ19sb2dfYmFja2VuZF9tZW1v cnlfY29udGV4dHMoaW50ZWdlciknLCAnRVhFQ1VURScpOyAtLSBubwogCiBHUkFOVCBFWEVDVVRF IE9OIEZVTkNUSU9OIHBnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cyhpbnRlZ2VyKQotICBU TyByZWdyZXNzX2xvZ19tZW1vcnk7CisgIFRPIHJlZ3Jlc3NfbG9nOwogCi1TRUxFQ1QgaGFzX2Z1 bmN0aW9uX3ByaXZpbGVnZSgncmVncmVzc19sb2dfbWVtb3J5JywKK1NFTEVDVCBoYXNfZnVuY3Rp b25fcHJpdmlsZWdlKCdyZWdyZXNzX2xvZycsCiAgICdwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29u dGV4dHMoaW50ZWdlciknLCAnRVhFQ1VURScpOyAtLSB5ZXMKIAotU0VUIFJPTEUgcmVncmVzc19s b2dfbWVtb3J5OworU0VUIFJPTEUgcmVncmVzc19sb2c7CiBTRUxFQ1QgcGdfbG9nX2JhY2tlbmRf bWVtb3J5X2NvbnRleHRzKHBnX2JhY2tlbmRfcGlkKCkpOwogUkVTRVQgUk9MRTsKIAogUkVWT0tF IEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKGludGVn ZXIpCi0gIEZST00gcmVncmVzc19sb2dfbWVtb3J5OworICBGUk9NIHJlZ3Jlc3NfbG9nOworCist LSBwZ19sb2dfcXVlcnlfcGxhbigpCitTRUxFQ1QgcGdfbG9nX3F1ZXJ5X3BsYW4ocGdfYmFja2Vu ZF9waWQoKSk7CisKK1NFTEVDVCBoYXNfZnVuY3Rpb25fcHJpdmlsZWdlKCdyZWdyZXNzX2xvZycs CisgICdwZ19sb2dfcXVlcnlfcGxhbihpbnRlZ2VyKScsICdFWEVDVVRFJyk7IC0tIG5vCisKK0dS QU5UIEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfbG9nX3F1ZXJ5X3BsYW4oaW50ZWdlcikKKyAgVE8g cmVncmVzc19sb2c7CisKK1NFTEVDVCBoYXNfZnVuY3Rpb25fcHJpdmlsZWdlKCdyZWdyZXNzX2xv ZycsCisgICdwZ19sb2dfcXVlcnlfcGxhbihpbnRlZ2VyKScsICdFWEVDVVRFJyk7IC0tIHllcwor CitTRVQgUk9MRSByZWdyZXNzX2xvZzsKK1NFTEVDVCBwZ19sb2dfcXVlcnlfcGxhbihwZ19iYWNr ZW5kX3BpZCgpKTsKK1JFU0VUIFJPTEU7CisKK1JFVk9LRSBFWEVDVVRFIE9OIEZVTkNUSU9OIHBn X2xvZ19xdWVyeV9wbGFuKGludGVnZXIpCisgIEZST00gcmVncmVzc19sb2c7CiAKLURST1AgUk9M RSByZWdyZXNzX2xvZ19tZW1vcnk7CitEUk9QIFJPTEUgcmVncmVzc19sb2c7CiAKIC0tCiAtLSBU ZXN0IHNvbWUgYnVpbHQtaW4gU1JGcwoKYmFzZS1jb21taXQ6IGIwZjc0MjVlYzI0NDU2NzhmMzIz ODFkZThiZDMxNzRkM2NjMjE2N2UKLS0gCjIuMjcuMAoK --=_0d4486ec1640dd6a319510741191718a--