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 1mqS5f-00032U-0D for pgsql-hackers@arkaria.postgresql.org; Fri, 26 Nov 2021 03:39:59 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mqS5d-0005vz-Jz for pgsql-hackers@arkaria.postgresql.org; Fri, 26 Nov 2021 03:39:57 +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 1mqS5c-0005vq-UY for pgsql-hackers@lists.postgresql.org; Fri, 26 Nov 2021 03:39:57 +0000 Received: from oss.nttdata.com ([49.212.34.109]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mqS5Y-0007tY-7f for pgsql-hackers@lists.postgresql.org; Fri, 26 Nov 2021 03:39:55 +0000 Received: from oss.nttdata.com (localhost [127.0.0.1]) by oss.nttdata.com (Postfix) with ESMTPA id 25A0F6098F; Fri, 26 Nov 2021 12:39:48 +0900 (JST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.4 at oss.nttdata.com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_4e0356b6c00bf4964113ca86f31498c3" Content-Transfer-Encoding: 8bit Date: Fri, 26 Nov 2021 12:39:48 +0900 From: torikoshia To: Ekaterina Sokolova Cc: pgsql-hackers@lists.postgresql.org Subject: Re: RFC: Logging plan of the running query In-Reply-To: References: <577370a1bd9f622e41f6cda8ed895534@oss.nttdata.com> User-Agent: Roundcube Webmail/1.4.11 Message-ID: <2995aecc0414faf3df3e6fe437d5fe55@oss.nttdata.com> X-Sender: torikoshia@oss.nttdata.com List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_4e0356b6c00bf4964113ca86f31498c3 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed On 2021-11-17 22:44, Ekaterina Sokolova wrote: > Hi! > > You forgot my last fix to build correctly on Mac. I have added it. Thanks for the notification! Since the patch could not be applied to the HEAD anymore, I also updated 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. Thanks for your information and help! -- Regards, -- Atsushi Torikoshi NTT DATA CORPORATION --=_4e0356b6c00bf4964113ca86f31498c3 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v14-0001-log-running-query-plan.patch Content-Disposition: attachment; filename=v14-0001-log-running-query-plan.patch; size=29075 RnJvbSBiODM2N2UyMmQ3YTk4OThlNGI4NTYyN2JhOGMyMDNiZTI3M2ZjMjJmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtvc2hpYUBvc3MubnR0 ZGF0YS5jb20+CkRhdGU6IEZyaSwgMjYgTm92IDIwMjEgMTA6MzE6MDAgKzA5MDAKU3ViamVjdDog W1BBVENIIHYxNF0gQWRkIGZ1bmN0aW9uIHRvIGxvZyB0aGUgdW50cnVuY2F0ZWQgcXVlcnkgc3Ry 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 YS9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbAppbmRleCAw YTcyNWE2NzExLi5iODRlYWQ0MzQxIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKQEAgLTI1MzU4LDYgKzI1MzU4LDI2IEBAIFNF 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+CkBAIC0yNTQ3MSw2 ICsyNTQ5MSwzMSBAQCBMT0c6ICBHcmFuZCB0b3RhbDogMTY1MTkyMCBieXRlcyBpbiAyMDEgYmxv 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 bAppbmRleCBmNjc4OTAyNWE1Li5hMjI4OGI2MGM5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j YXRhbG9nL3N5c3RlbV9mdW5jdGlvbnMuc3FsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lz dGVtX2Z1bmN0aW9ucy5zcWwKQEAgLTcwNyw2ICs3MDcsOCBAQCBSRVZPS0UgRVhFQ1VURSBPTiBG VU5DVElPTiBwZ19sc19sb2dpY2FsbWFwZGlyKCkgRlJPTSBQVUJMSUM7CiAKIFJFVk9LRSBFWEVD VVRFIE9OIEZVTkNUSU9OIHBnX2xzX3JlcGxzbG90ZGlyKHRleHQpIEZST00gUFVCTElDOwogCitS RVZPS0UgRVhFQ1VURSBPTiBGVU5DVElPTiBwZ19sb2dfcXVlcnlfcGxhbihpbnRlZ2VyKSBGUk9N IFBVQkxJQzsKKwogLS0KIC0tIFdlIGFsc28gc2V0IHVwIHNvbWUgdGhpbmdzIGFzIGFjY2Vzc2li bGUgdG8gc3RhbmRhcmQgcm9sZXMuCiAtLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmluZGV4IDA5ZjUy NTNhYmIuLjQxYTZkODliODAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxh aW4uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKQEAgLTIxLDYgKzIxLDcg QEAKICNpbmNsdWRlICJleGVjdXRvci9ub2RlSGFzaC5oIgogI2luY2x1ZGUgImZvcmVpZ24vZmR3 YXBpLmgiCiAjaW5jbHVkZSAiaml0L2ppdC5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2lu Y2x1ZGUgIm5vZGVzL2V4dGVuc2libGUuaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIK ICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKQEAgLTI4LDYgKzI5LDkgQEAKICNpbmNsdWRl ICJwYXJzZXIvcGFyc2V0cmVlLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlSGFuZGxlci5o IgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJy YXkuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3NpZ25hbGZ1bmNzLmgiCisjaW5jbHVkZSAidGNvcC9w cXVlcnkuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVp bHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9ndWNfdGFibGVzLmgiCkBAIC00MCw3ICs0NCw2IEBA CiAjaW5jbHVkZSAidXRpbHMvdHlwY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy94bWwuaCIKIAot CiAvKiBIb29rIGZvciBwbHVnaW5zIHRvIGdldCBjb250cm9sIGluIEV4cGxhaW5PbmVRdWVyeSgp ICovCiBFeHBsYWluT25lUXVlcnlfaG9va190eXBlIEV4cGxhaW5PbmVRdWVyeV9ob29rID0gTlVM TDsKIApAQCAtMTU5NCw2ICsxNTk3LDkgQEAgRXhwbGFpbk5vZGUoUGxhblN0YXRlICpwbGFuc3Rh dGUsIExpc3QgKmFuY2VzdG9ycywKIAkvKgogCSAqIFdlIGhhdmUgdG8gZm9yY2libHkgY2xlYW4g dXAgdGhlIGluc3RydW1lbnRhdGlvbiBzdGF0ZSBiZWNhdXNlIHdlCiAJICogaGF2ZW4ndCBkb25l IEV4ZWN1dG9yRW5kIHlldC4gIFRoaXMgaXMgcHJldHR5IGdyb3R0eSAuLi4KKwkgKiBUaGlzIGNs ZWFudXAgc2hvdWxkIG5vdCBiZSBkb25lIHdoZW4gdGhlIHF1ZXJ5IGhhcyBhbHJlYWR5IGJlZW4K KwkgKiBleGVjdXRlZCwgYXMgdGhlIHRhcmdldCBxdWVyeSBtYXkgdXNlIGluc3RydW1lbnRhdGlv biBhbmQgY2xlYW4KKwkgKiBpdHNlbGYgdXAuCiAJICoKIAkgKiBOb3RlOiBjb250cmliL2F1dG9f ZXhwbGFpbiBjb3VsZCBjYXVzZSBpbnN0cnVtZW50YXRpb24gdG8gYmUgc2V0IHVwCiAJICogZXZl biB0aG91Z2ggd2UgZGlkbid0IGFzayBmb3IgaXQgaGVyZS4gIEJlIGNhcmVmdWwgbm90IHRvIHBy aW50IGFueQpAQCAtMTYwMSw3ICsxNjA3LDcgQEAgRXhwbGFpbk5vZGUoUGxhblN0YXRlICpwbGFu c3RhdGUsIExpc3QgKmFuY2VzdG9ycywKIAkgKiBJbnN0ckVuZExvb3AgY2FsbCBhbnl3YXksIGlm IHBvc3NpYmxlLCB0byByZWR1Y2UgdGhlIG51bWJlciBvZiBjYXNlcwogCSAqIGF1dG9fZXhwbGFp biBoYXMgdG8gY29udGVuZCB3aXRoLgogCSAqLwotCWlmIChwbGFuc3RhdGUtPmluc3RydW1lbnQp CisJaWYgKHBsYW5zdGF0ZS0+aW5zdHJ1bWVudCAmJiAhZXMtPnJ1bm5pbmcpCiAJCUluc3RyRW5k TG9vcChwbGFuc3RhdGUtPmluc3RydW1lbnQpOwogCiAJaWYgKGVzLT5hbmFseXplICYmCkBAIC00 OTI1LDMgKzQ5MzEsMTEwIEBAIGVzY2FwZV95YW1sKFN0cmluZ0luZm8gYnVmLCBjb25zdCBjaGFy ICpzdHIpCiB7CiAJZXNjYXBlX2pzb24oYnVmLCBzdHIpOwogfQorCisvKgorICogSGFuZGxlTG9n Q3VycmVudFBsYW5JbnRlcnJ1cHQKKyAqCQlIYW5kbGUgcmVjZWlwdCBvZiBhbiBpbnRlcnJ1cHQg aW5kaWNhdGluZyBsb2dnaW5nIHRoZSBwbGFuIG9mCisgKgkJdGhlIGN1cnJlbnRseSBydW5uaW5n IHF1ZXJ5LgorICoKKyAqIEFsbCB0aGUgYWN0dWFsIHdvcmsgaXMgZGVmZXJyZWQgdG8gUHJvY2Vz c0xvZ0N1cnJlbnRQbGFuSW50ZXJydXB0KCksCisgKiBiZWNhdXNlIHdlIGNhbm5vdCBzYWZlbHkg ZW1pdCBhIGxvZyBtZXNzYWdlIGluc2lkZSB0aGUgc2lnbmFsIGhhbmRsZXIuCisgKi8KK3ZvaWQK K0hhbmRsZUxvZ0N1cnJlbnRQbGFuSW50ZXJydXB0KHZvaWQpCit7CisJSW50ZXJydXB0UGVuZGlu ZyA9IHRydWU7CisJTG9nQ3VycmVudFBsYW5QZW5kaW5nID0gdHJ1ZTsKKwkvKiBsYXRjaCB3aWxs IGJlIHNldCBieSBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlciAqLworfQorCisvKgorICogUHJv Y2Vzc0xvZ0N1cnJlbnRQbGFuSW50ZXJydXB0CisgKiAJCVBlcmZvcm0gbG9nZ2luZyB0aGUgcGxh biBvZiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgcXVlcnkgb24gdGhpcworICogCQliYWNrZW5kIHBy b2Nlc3MuCisgKgorICogQW55IGJhY2tlbmQgdGhhdCBwYXJ0aWNpcGF0ZXMgaW4gUHJvY1NpZ25h bCBzaWduYWxpbmcgbXVzdCBhcnJhbmdlIHRvIGNhbGwKKyAqIHRoaXMgZnVuY3Rpb24gaWYgd2Ug c2VlIExvZ0N1cnJlbnRQbGFuUGVuZGluZyBzZXQuCisgKiBJdCBpcyBjYWxsZWQgZnJvbSBDSEVD S19GT1JfSU5URVJSVVBUUygpLCB3aGljaCBpcyBlbm91Z2ggYmVjYXVzZSB0aGUgdGFyZ2V0Cisg KiBwcm9jZXNzIGZvciBsb2dnaW5nIHBsYW4gaXMgYSBiYWNrZW5kLgorICovCit2b2lkCitQcm9j ZXNzTG9nQ3VycmVudFBsYW5JbnRlcnJ1cHQodm9pZCkKK3sKKwlFeHBsYWluU3RhdGUgKmVzOwor CUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7CisJTE9DQUxMT0NLICAqbG9jYWxsb2NrOworCUxvZ0N1 cnJlbnRQbGFuUGVuZGluZyA9IGZhbHNlOworCisJaWYgKEFjdGl2ZVF1ZXJ5RGVzYyA9PSBOVUxM KQorCXsKKwkJZXJlcG9ydChMT0dfU0VSVkVSX09OTFksCisJCQkJZXJybXNnKCJiYWNrZW5kIHdp dGggUElEICVkIGlzIG5vdCBydW5uaW5nIGEgcXVlcnkiLAorCQkJCQlNeVByb2NQaWQpKTsKKwkJ cmV0dXJuOworCX0KKworCS8qCisJICogRW5zdXJlIG5vIHBhZ2UgbG9jayBpcyBoZWxkIG9uIHRo aXMgcHJvY2Vzcy4KKwkgKgorCSAqIElmIHBhZ2UgbG9jayBpcyBoZWxkIGF0IHRoZSB0aW1lIG9m IHRoZSBpbnRlcnJ1cHQsIHdlIGNhbid0IGFjcXVpcmUgYW55CisJICogb3RoZXIgaGVhdnl3ZWln aHQgbG9jaywgd2hpY2ggbWlnaHQgYmUgbmVjZXNzYXJ5IGZvciBleHBsYWluaW5nIHRoZSBwbGFu CisJICogd2hlbiByZXRyaWV2aW5nIGNvbHVtbiBuYW1lcy4KKwkgKgorCSAqIFRoaXMgbWF5IGJl IG92ZXJraWxsLCBidXQgc2luY2UgcGFnZSBsb2NrcyBhcmUgaGVsZCBmb3IgYSBzaG9ydCBkdXJh dGlvbgorCSAqIHdlIGNoZWNrIGFsbCB0aGUgTG9jYWxMb2NrIGVudHJpZXMgYW5kIHdoZW4gZmlu ZGluZyBldmVuIG9uZSwgZ2l2ZSB1cAorCSAqIGxvZ2dpbmcgdGhlIHBsYW4uCisJICovCisJaGFz aF9zZXFfaW5pdCgmc3RhdHVzLCBHZXRMb2NrTWV0aG9kTG9jYWxIYXNoKCkpOworCXdoaWxlICgo bG9jYWxsb2NrID0gKExPQ0FMTE9DSyAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5V TEwpCisJeworCQlpZiAoTE9DQUxMT0NLX0xPQ0tUQUcoKmxvY2FsbG9jaykgPT0gTE9DS1RBR19Q QUdFKQorCQl7CisJCQllcmVwb3J0KExPR19TRVJWRVJfT05MWSwKKwkJCQllcnJtc2coImJhY2tl bmQgd2l0aCBQSUQgJWQgaXMgaG9sZGluZyBhIHBhZ2UgbG9jay4gVHJ5IGFnYWluIiwKKwkJCQkJ TXlQcm9jUGlkKSk7CisJCQloYXNoX3NlcV90ZXJtKCZzdGF0dXMpOworCQkJcmV0dXJuOworCQl9 CisJfQorCisJZXMgPSBOZXdFeHBsYWluU3RhdGUoKTsKKworCWVzLT5mb3JtYXQgPSBFWFBMQUlO X0ZPUk1BVF9URVhUOworCWVzLT5zZXR0aW5ncyA9IHRydWU7CisJZXMtPnZlcmJvc2UgPSB0cnVl OworCWVzLT5ydW5uaW5nID0gdHJ1ZTsKKworCUV4cGxhaW5CZWdpbk91dHB1dChlcyk7CisJRXhw bGFpblF1ZXJ5VGV4dChlcywgQWN0aXZlUXVlcnlEZXNjKTsKKwlFeHBsYWluUHJpbnRQbGFuKGVz LCBBY3RpdmVRdWVyeURlc2MpOworCWlmIChlcy0+Y29zdHMpCisJCUV4cGxhaW5QcmludEpJVFN1 bW1hcnkoZXMsIEFjdGl2ZVF1ZXJ5RGVzYyk7CisJRXhwbGFpbkVuZE91dHB1dChlcyk7CisKKwkv KiBSZW1vdmUgbGFzdCBsaW5lIGJyZWFrICovCisJaWYgKGVzLT5zdHItPmxlbiA+IDAgJiYgZXMt PnN0ci0+ZGF0YVtlcy0+c3RyLT5sZW4gLSAxXSA9PSAnXG4nKQorCQllcy0+c3RyLT5kYXRhWy0t ZXMtPnN0ci0+bGVuXSA9ICdcMCc7CisKKwllcmVwb3J0KExPR19TRVJWRVJfT05MWSwKKwkJCWVy cm1zZygicXVlcnkgcGxhbiBydW5uaW5nIG9uIGJhY2tlbmQgd2l0aCBQSUQgJWQgaXM6XG4lcyIs CisJCQkJCU15UHJvY1BpZCwgZXMtPnN0ci0+ZGF0YSksCisJCQkgZXJyaGlkZXN0bXQodHJ1ZSks CisJCQkgZXJyaGlkZWNvbnRleHQodHJ1ZSkpOworfQorCisvKgorICogcGdfbG9nX3F1ZXJ5X3Bs YW4KKyAqCQlTaWduYWwgYSBiYWNrZW5kIHByb2Nlc3MgdG8gbG9nIHRoZSBxdWVyeSBwbGFuIG9m IHRoZSBydW5uaW5nIHF1ZXJ5LgorICoKKyAqIEJ5IGRlZmF1bHQsIG9ubHkgc3VwZXJ1c2VycyBh cmUgYWxsb3dlZCB0byBzaWduYWwgdG8gbG9nIHRoZSBwbGFuIGJlY2F1c2UKKyAqIGFsbG93aW5n IGFueSB1c2VycyB0byBpc3N1ZSB0aGlzIHJlcXVlc3QgYXQgYW4gdW5ib3VuZGVkIHJhdGUgd291 bGQKKyAqIGNhdXNlIGxvdHMgb2YgbG9nIG1lc3NhZ2VzIGFuZCB3aGljaCBjYW4gbGVhZCB0byBk ZW5pYWwgb2Ygc2VydmljZS4KKyAqIEFkZGl0aW9uYWwgcm9sZXMgY2FuIGJlIHBlcm1pdHRlZCB3 aXRoIEdSQU5ULgorICovCitEYXR1bQorcGdfbG9nX3F1ZXJ5X3BsYW4oUEdfRlVOQ1RJT05fQVJH UykKK3sKKwlpbnQJCQlwaWQgPSBQR19HRVRBUkdfSU5UMzIoMCk7CisJUEdfUkVUVVJOX0JPT0wo U2VuZFByb2NTaWduYWxGb3JMb2dJbmZvKHBpZCwgUFJPQ1NJR19MT0dfQ1VSUkVOVF9QTEFOKSk7 Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRleCBiM2NlNGJhZTUzLi5jNzRhYTFkMDRlIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTc2LDYgKzc2LDkgQEAgRXhlY3V0b3JFbmRfaG9v a190eXBlIEV4ZWN1dG9yRW5kX2hvb2sgPSBOVUxMOwogLyogSG9vayBmb3IgcGx1Z2luIHRvIGdl dCBjb250cm9sIGluIEV4ZWNDaGVja1JUUGVybXMoKSAqLwogRXhlY3V0b3JDaGVja1Blcm1zX2hv b2tfdHlwZSBFeGVjdXRvckNoZWNrUGVybXNfaG9vayA9IE5VTEw7CiAKKy8qIEN1cnJlbnRseSBl eGVjdXRpbmcgcXVlcnkncyBRdWVyeURlc2MgKi8KK1F1ZXJ5RGVzYyAqQWN0aXZlUXVlcnlEZXNj ID0gTlVMTDsKKwogLyogZGVjbHMgZm9yIGxvY2FsIHJvdXRpbmVzIG9ubHkgdXNlZCB3aXRoaW4g dGhpcyBtb2R1bGUgKi8KIHN0YXRpYyB2b2lkIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNj LCBpbnQgZWZsYWdzKTsKIHN0YXRpYyB2b2lkIENoZWNrVmFsaWRSb3dNYXJrUmVsKFJlbGF0aW9u IHJlbCwgUm93TWFya1R5cGUgbWFya1R5cGUpOwpAQCAtMjk5LDEwICszMDIsMTcgQEAgRXhlY3V0 b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCiAJCQlTY2FuRGlyZWN0aW9uIGRpcmVjdGlvbiwg dWludDY0IGNvdW50LAogCQkJYm9vbCBleGVjdXRlX29uY2UpCiB7CisJUXVlcnlEZXNjICpzYXZl X0FjdGl2ZVF1ZXJ5RGVzYzsKKworCXNhdmVfQWN0aXZlUXVlcnlEZXNjID0gQWN0aXZlUXVlcnlE ZXNjOworCUFjdGl2ZVF1ZXJ5RGVzYyA9IHF1ZXJ5RGVzYzsKKwogCWlmIChFeGVjdXRvclJ1bl9o b29rKQogCQkoKkV4ZWN1dG9yUnVuX2hvb2spIChxdWVyeURlc2MsIGRpcmVjdGlvbiwgY291bnQs IGV4ZWN1dGVfb25jZSk7CiAJZWxzZQogCQlzdGFuZGFyZF9FeGVjdXRvclJ1bihxdWVyeURlc2Ms IGRpcmVjdGlvbiwgY291bnQsIGV4ZWN1dGVfb25jZSk7CisKKwlBY3RpdmVRdWVyeURlc2MgPSBz YXZlX0FjdGl2ZVF1ZXJ5RGVzYzsKIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3Np Z25hbC5jCmluZGV4IDZlNjkzOThjZGQuLjZlYTYzZTBjNTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9wcm9jc2lnbmFsLmMKQEAgLTIwLDYgKzIwLDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvcGFyYWxs ZWwuaCIKICNpbmNsdWRlICJwb3J0L3BnX2JpdHV0aWxzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMv YXN5bmMuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9leHBsYWluLmgiCiAjaW5jbHVkZSAibWlzY2Fk bWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2Fsc2Vu ZGVyLmgiCkBAIC02NjEsNiArNjYyLDkgQEAgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIoU0lH TkFMX0FSR1MpCiAJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX0xPR19NRU1PUllfQ09OVEVY VCkpCiAJCUhhbmRsZUxvZ01lbW9yeUNvbnRleHRJbnRlcnJ1cHQoKTsKIAorCWlmIChDaGVja1By b2NTaWduYWwoUFJPQ1NJR19MT0dfQ1VSUkVOVF9QTEFOKSkKKwkJSGFuZGxlTG9nQ3VycmVudFBs YW5JbnRlcnJ1cHQoKTsKKwogCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19SRUNPVkVSWV9D T05GTElDVF9EQVRBQkFTRSkpCiAJCVJlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUFJPQ1NJR19S RUNPVkVSWV9DT05GTElDVF9EQVRBQkFTRSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvaXBjL3NpZ25hbGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaWduYWxm dW5jcy5jCmluZGV4IGRlNjlkNjBlNzkuLjdhZWVjNjllYTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL3NpZ25hbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvc2lnbmFsZnVuY3MuYwpAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvcG1z aWduYWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3By b2NhcnJheS5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc2lnbmFsZnVuY3MuaCIKICNpbmNsdWRlICJ1 dGlscy9hY2wuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogCkBAIC0yOTgsMyArMjk5 LDU3IEBAIHBnX3JvdGF0ZV9sb2dmaWxlX3YyKFBHX0ZVTkNUSU9OX0FSR1MpCiAJU2VuZFBvc3Rt YXN0ZXJTaWduYWwoUE1TSUdOQUxfUk9UQVRFX0xPR0ZJTEUpOwogCVBHX1JFVFVSTl9CT09MKHRy dWUpOwogfQorCisvKgorICogU2lnbmFsIGEgYmFja2VuZCBwcm9jZXNzIHRvIGxvZyBpdHMgaW5m b3JtYXRpb24uCisgKgorICogQnkgZGVmYXVsdCwgb25seSBzdXBlcnVzZXJzIGFyZSBhbGxvd2Vk IHRvIHNpZ25hbCB0byBsb2cgaW5mb3JtYXRpb24KKyAqIGJlY2F1c2UgYWxsb3dpbmcgYW55IHVz ZXJzIHRvIGlzc3VlIHRoaXMgcmVxdWVzdCBhdCBhbiB1bmJvdW5kZWQKKyAqIHJhdGUgd291bGQg Y2F1c2UgbG90cyBvZiBsb2cgbWVzc2FnZXMgd2hpY2ggY2FuIGxlYWQgdG8gZGVuaWFsIG9mCisg KiBzZXJ2aWNlLiBBZGRpdGlvbmFsIHJvbGVzIGNhbiBiZSBwZXJtaXR0ZWQgd2l0aCBHUkFOVC4K KyAqCisgKiBPbiByZWNlaXB0IG9mIHRoaXMgc2lnbmFsLCBhIGJhY2tlbmQgc2V0cyB0aGUgZmxh ZyBpbiB0aGUgc2lnbmFsCisgKiBoYW5kbGVyLCB3aGljaCBjYXVzZXMgdGhlIG5leHQgQ0hFQ0tf Rk9SX0lOVEVSUlVQVFMoKSB0byBsb2cgdGhlCisgKiBpbmZvcm1hdGlvbi4KKyAqLworYm9vbAor U2VuZFByb2NTaWduYWxGb3JMb2dJbmZvKHBpZF90IHBpZCwgUHJvY1NpZ25hbFJlYXNvbiByZWFz b24pCit7CisJUEdQUk9DCSAgICpwcm9jOworCisJQXNzZXJ0KHJlYXNvbiA9PSBQUk9DU0lHX0xP R19NRU1PUllfQ09OVEVYVCB8fAorCQkgICByZWFzb24gPT0gUFJPQ1NJR19MT0dfQ1VSUkVOVF9Q TEFOKTsKKworCXByb2MgPSBCYWNrZW5kUGlkR2V0UHJvYyhwaWQpOworCisJLyoKKwkgKiBCYWNr ZW5kUGlkR2V0UHJvYyByZXR1cm5zIE5VTEwgaWYgdGhlIHBpZCBpc24ndCB2YWxpZDsgYnV0IGJ5 IHRoZSB0aW1lCisJICogd2UgcmVhY2gga2lsbCgpLCBhIHByb2Nlc3MgZm9yIHdoaWNoIHdlIGdl dCBhIHZhbGlkIHByb2MgaGVyZSBtaWdodAorCSAqIGhhdmUgdGVybWluYXRlZCBvbiBpdHMgb3du LiAgVGhlcmUncyBubyB3YXkgdG8gYWNxdWlyZSBhIGxvY2sgb24gYW4KKwkgKiBhcmJpdHJhcnkg cHJvY2VzcyB0byBwcmV2ZW50IHRoYXQuIEJ1dCBzaW5jZSB0aGlzIG1lY2hhbmlzbSBpcyB1c3Vh bGx5CisJICogdXNlZCBmb3IgYmVsb3cgcHVycG9zZXMsIGl0IG1pZ2h0IGVuZCBpdHMgb3duIGZp cnN0IGFuZCB0aGUgaW5mb3JtYXRpb24KKwkgKiBpcyBub3QgbG9nZ2VkIGlzIG5vdCBhIHByb2Js ZW0uCisJICogLSBkZWJ1ZyBhIGJhY2tlbmQgcnVubmluZyBhbmQgY29uc3VtaW5nIGxvdHMgb2Yg bWVtb3J5CisJICogLSBsb29rIGludG8gdGhlIHBsYW4gb2YgdGhlIGxvbmcgcnVubmluZyBxdWVy eQorCSAqLworCWlmIChwcm9jID09IE5VTEwpCisJeworCQkvKgorCQkgKiBUaGlzIGlzIGp1c3Qg YSB3YXJuaW5nIHNvIGEgbG9vcC10aHJvdWdoLXJlc3VsdHNldCB3aWxsIG5vdCBhYm9ydAorCQkg KiBpZiBvbmUgYmFja2VuZCB0ZXJtaW5hdGVkIG9uIGl0cyBvd24gZHVyaW5nIHRoZSBydW4uCisJ CSAqLworCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJZXJybXNnKCJQSUQgJWQgaXMgbm90IGEgUG9z dGdyZVNRTCBzZXJ2ZXIgcHJvY2VzcyIsIHBpZCkpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJ aWYgKFNlbmRQcm9jU2lnbmFsKHBpZCwgcmVhc29uLCBwcm9jLT5iYWNrZW5kSWQpIDwgMCkKKwl7 CisJCS8qIEFnYWluLCBqdXN0IGEgd2FybmluZyB0byBhbGxvdyBsb29wcyAqLworCQllcmVwb3J0 KFdBUk5JTkcsCisJCQkJZXJybXNnKCJjb3VsZCBub3Qgc2VuZCBzaWduYWwgdG8gcHJvY2VzcyAl ZDogJW0iLCBwaWQpKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCXJldHVybiB0cnVlOworfQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xvY2suYyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvbG1nci9sb2NrLmMKaW5kZXggYzI1YWY3ZmUwOS4uOGE3MGE2ZDk0ZSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xvY2suYworKysgYi9zcmMvYmFja2VuZC9z dG9yYWdlL2xtZ3IvbG9jay5jCkBAIC02MTQsMTcgKzYxNCwxOCBAQCBMb2NrSGVsZEJ5TWUoY29u c3QgTE9DS1RBRyAqbG9ja3RhZywgTE9DS01PREUgbG9ja21vZGUpCiAJcmV0dXJuIChsb2NhbGxv Y2sgJiYgbG9jYWxsb2NrLT5uTG9ja3MgPiAwKTsKIH0KIAotI2lmZGVmIFVTRV9BU1NFUlRfQ0hF Q0tJTkcKIC8qCi0gKiBHZXRMb2NrTWV0aG9kTG9jYWxIYXNoIC0tIHJldHVybiB0aGUgaGFzaCBv ZiBsb2NhbCBsb2NrcywgZm9yIG1vZHVsZXMgdGhhdAotICoJCWV2YWx1YXRlIGFzc2VydGlvbnMg YmFzZWQgb24gYWxsIGxvY2tzIGhlbGQuCisgKiBHZXRMb2NrTWV0aG9kTG9jYWxIYXNoIC0tIHJl dHVybiB0aGUgaGFzaCBvZiBsb2NhbCBsb2NrcywgbWFpbmx5IGZvcgorICoJCW1vZHVsZXMgdGhh dCBldmFsdWF0ZSBhc3NlcnRpb25zIGJhc2VkIG9uIGFsbCBsb2NrcyBoZWxkLgorICoKKyAqIE5P VEU6IFdoZW4gdGhlcmUgYXJlIG1hbnkgZW50cmllcyBpbiBMb2NrTWV0aG9kTG9jYWxIYXNoLCBj YWxsaW5nIHRoaXMKKyAqIGZ1bmN0aW9uIGFuZCBsb29raW5nIGludG8gYWxsIG9mIHRoZW0gY2Fu IGxlYWQgdG8gcGVyZm9ybWFuY2UgcHJvYmxlbXMuCiAgKi8KIEhUQUIgKgogR2V0TG9ja01ldGhv ZExvY2FsSGFzaCh2b2lkKQogewogCXJldHVybiBMb2NrTWV0aG9kTG9jYWxIYXNoOwogfQotI2Vu ZGlmCiAKIC8qCiAgKiBMb2NrSGFzV2FpdGVycyAtLSBsb29rIHVwICdsb2NrdGFnJyBhbmQgY2hl Y2sgaWYgcmVsZWFzaW5nIHRoaXMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdy ZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwppbmRleCAwNzc1YWJlMzVkLi43NzRk YWRiODdhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKKysrIGIvc3Jj L2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiYWNj ZXNzL3hhY3QuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjb21t YW5kcy9hc3luYy5oIgorI2luY2x1ZGUgImNvbW1hbmRzL2V4cGxhaW4uaCIKICNpbmNsdWRlICJj b21tYW5kcy9wcmVwYXJlLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Ivc3BpLmgiCiAjaW5jbHVkZSAi aml0L2ppdC5oIgpAQCAtMzM2Niw2ICszMzY3LDkgQEAgUHJvY2Vzc0ludGVycnVwdHModm9pZCkK IAogCWlmIChMb2dNZW1vcnlDb250ZXh0UGVuZGluZykKIAkJUHJvY2Vzc0xvZ01lbW9yeUNvbnRl eHRJbnRlcnJ1cHQoKTsKKworCWlmIChMb2dDdXJyZW50UGxhblBlbmRpbmcpCisJCVByb2Nlc3NM b2dDdXJyZW50UGxhbkludGVycnVwdCgpOwogfQogCiAKQEAgLTQyODksNiArNDI5Myw5IEBAIFBv c3RncmVzTWFpbihjb25zdCBjaGFyICpkYm5hbWUsIGNvbnN0IGNoYXIgKnVzZXJuYW1lKQogCQkv KiBXZSBkb24ndCBoYXZlIGEgdHJhbnNhY3Rpb24gY29tbWFuZCBvcGVuIGFueW1vcmUgKi8KIAkJ eGFjdF9zdGFydGVkID0gZmFsc2U7CiAKKwkJLyogV2UgaGF2ZSBubyBydW5uaW5nIHF1ZXJ5ICov CisJCUFjdGl2ZVF1ZXJ5RGVzYyA9IE5VTEw7CisKIAkJLyoKIAkJICogSWYgYW4gZXJyb3Igb2Nj dXJyZWQgd2hpbGUgd2Ugd2VyZSByZWFkaW5nIGEgbWVzc2FnZSBmcm9tIHRoZQogCQkgKiBjbGll bnQsIHdlIGhhdmUgcG90ZW50aWFsbHkgbG9zdCB0cmFjayBvZiB3aGVyZSB0aGUgcHJldmlvdXMK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tY3h0ZnVuY3MuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9tY3h0ZnVuY3MuYwppbmRleCA2ZGRiZjcwYjMwLi4yZGI2NjIyODJmIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbWN4dGZ1bmNzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5jCkBAIC0xOCw4ICsxOCw4IEBACiAjaW5jbHVkZSAi ZnVuY2FwaS5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm1iL3BnX3djaGFy LmgiCi0jaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJy YXkuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3NpZ25hbGZ1bmNzLmgiCiAjaW5jbHVkZSAidXRpbHMv YnVpbHRpbnMuaCIKIAogLyogLS0tLS0tLS0tLQpAQCAtMTc1LDM3ICsxNzUsNSBAQCBEYXR1bQog cGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJaW50 CQkJcGlkID0gUEdfR0VUQVJHX0lOVDMyKDApOwotCVBHUFJPQwkgICAqcHJvYzsKLQotCXByb2Mg PSBCYWNrZW5kUGlkR2V0UHJvYyhwaWQpOwotCi0JLyoKLQkgKiBCYWNrZW5kUGlkR2V0UHJvYyBy ZXR1cm5zIE5VTEwgaWYgdGhlIHBpZCBpc24ndCB2YWxpZDsgYnV0IGJ5IHRoZSB0aW1lCi0JICog d2UgcmVhY2gga2lsbCgpLCBhIHByb2Nlc3MgZm9yIHdoaWNoIHdlIGdldCBhIHZhbGlkIHByb2Mg aGVyZSBtaWdodAotCSAqIGhhdmUgdGVybWluYXRlZCBvbiBpdHMgb3duLiAgVGhlcmUncyBubyB3 YXkgdG8gYWNxdWlyZSBhIGxvY2sgb24gYW4KLQkgKiBhcmJpdHJhcnkgcHJvY2VzcyB0byBwcmV2 ZW50IHRoYXQuIEJ1dCBzaW5jZSB0aGlzIG1lY2hhbmlzbSBpcyB1c3VhbGx5Ci0JICogdXNlZCB0 byBkZWJ1ZyBhIGJhY2tlbmQgcnVubmluZyBhbmQgY29uc3VtaW5nIGxvdHMgb2YgbWVtb3J5LCB0 aGF0IGl0Ci0JICogbWlnaHQgZW5kIG9uIGl0cyBvd24gZmlyc3QgYW5kIGl0cyBtZW1vcnkgY29u dGV4dHMgYXJlIG5vdCBsb2dnZWQgaXMKLQkgKiBub3QgYSBwcm9ibGVtLgotCSAqLwotCWlmIChw cm9jID09IE5VTEwpCi0JewotCQkvKgotCQkgKiBUaGlzIGlzIGp1c3QgYSB3YXJuaW5nIHNvIGEg bG9vcC10aHJvdWdoLXJlc3VsdHNldCB3aWxsIG5vdCBhYm9ydAotCQkgKiBpZiBvbmUgYmFja2Vu ZCB0ZXJtaW5hdGVkIG9uIGl0cyBvd24gZHVyaW5nIHRoZSBydW4uCi0JCSAqLwotCQllcmVwb3J0 KFdBUk5JTkcsCi0JCQkJKGVycm1zZygiUElEICVkIGlzIG5vdCBhIFBvc3RncmVTUUwgc2VydmVy IHByb2Nlc3MiLCBwaWQpKSk7Ci0JCVBHX1JFVFVSTl9CT09MKGZhbHNlKTsKLQl9Ci0KLQlpZiAo U2VuZFByb2NTaWduYWwocGlkLCBQUk9DU0lHX0xPR19NRU1PUllfQ09OVEVYVCwgcHJvYy0+YmFj a2VuZElkKSA8IDApCi0JewotCQkvKiBBZ2FpbiwganVzdCBhIHdhcm5pbmcgdG8gYWxsb3cgbG9v cHMgKi8KLQkJZXJlcG9ydChXQVJOSU5HLAotCQkJCShlcnJtc2coImNvdWxkIG5vdCBzZW5kIHNp Z25hbCB0byBwcm9jZXNzICVkOiAlbSIsIHBpZCkpKTsKLQkJUEdfUkVUVVJOX0JPT0woZmFsc2Up OwotCX0KLQotCVBHX1JFVFVSTl9CT09MKHRydWUpOworCVBHX1JFVFVSTl9CT09MKFNlbmRQcm9j U2lnbmFsRm9yTG9nSW5mbyhwaWQsIFBST0NTSUdfTE9HX01FTU9SWV9DT05URVhUKSk7CiB9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL2luaXQvZ2xvYmFscy5jCmluZGV4IDM4MWQ5ZTU0OGQuLjEyNmVkMTAzNjIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2luaXQvZ2xvYmFscy5jCkBAIC0zNiw2ICszNiw3IEBAIHZvbGF0aWxlIHNpZ19hdG9t aWNfdCBJZGxlSW5UcmFuc2FjdGlvblNlc3Npb25UaW1lb3V0UGVuZGluZyA9IGZhbHNlOwogdm9s YXRpbGUgc2lnX2F0b21pY190IElkbGVTZXNzaW9uVGltZW91dFBlbmRpbmcgPSBmYWxzZTsKIHZv bGF0aWxlIHNpZ19hdG9taWNfdCBQcm9jU2lnbmFsQmFycmllclBlbmRpbmcgPSBmYWxzZTsKIHZv bGF0aWxlIHNpZ19hdG9taWNfdCBMb2dNZW1vcnlDb250ZXh0UGVuZGluZyA9IGZhbHNlOwordm9s YXRpbGUgc2lnX2F0b21pY190IExvZ0N1cnJlbnRQbGFuUGVuZGluZyA9IGZhbHNlOwogdm9sYXRp bGUgdWludDMyIEludGVycnVwdEhvbGRvZmZDb3VudCA9IDA7CiB2b2xhdGlsZSB1aW50MzIgUXVl cnlDYW5jZWxIb2xkb2ZmQ291bnQgPSAwOwogdm9sYXRpbGUgdWludDMyIENyaXRTZWN0aW9uQ291 bnQgPSAwOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggZTkzNDM2MWRjMy4uMmZlZDFlYTVl MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC04MDQyLDYgKzgwNDIsMTIgQEAKICAgcHJv cmV0dHlwZSA9PiAnYm9vbCcsIHByb2FyZ3R5cGVzID0+ICdpbnQ0JywKICAgcHJvc3JjID0+ICdw Z19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMnIH0sCiAKKyMgbG9nZ2luZyBwbGFuIG9mIHRo ZSBydW5uaW5nIHF1ZXJ5IG9uIHRoZSBzcGVjaWZpZWQgYmFja2VuZAoreyBvaWQgPT4gJzQ1NDUn LCBkZXNjciA9PiAnbG9nIHBsYW4gb2YgdGhlIHJ1bm5pbmcgcXVlcnkgb24gdGhlIHNwZWNpZmll ZCBiYWNrZW5kJywKKyAgcHJvbmFtZSA9PiAncGdfbG9nX3F1ZXJ5X3BsYW4nLAorICBwcm92b2xh dGlsZSA9PiAndicsIHByb3JldHR5cGUgPT4gJ2Jvb2wnLAorICBwcm9hcmd0eXBlcyA9PiAnaW50 NCcsIHByb3NyYyA9PiAncGdfbG9nX3F1ZXJ5X3BsYW4nIH0sCisKICMgbm9uLXBlcnNpc3RlbnQg c2VyaWVzIGdlbmVyYXRvcgogeyBvaWQgPT4gJzEwNjYnLCBkZXNjciA9PiAnbm9uLXBlcnNpc3Rl bnQgc2VyaWVzIGdlbmVyYXRvcicsCiAgIHByb25hbWUgPT4gJ2dlbmVyYXRlX3NlcmllcycsIHBy b3Jvd3MgPT4gJzEwMDAnLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFp bi5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oCmluZGV4IGU5NGQ5ZTQ5Y2YuLjdj MmRjZTdjZGYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaAorKysg Yi9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKQEAgLTU5LDYgKzU5LDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgRXhwbGFpblN0YXRlCiAJYm9vbAkJaGlkZV93b3JrZXJzOwkvKiBzZXQgaWYgd2Ug ZmluZCBhbiBpbnZpc2libGUgR2F0aGVyICovCiAJLyogc3RhdGUgcmVsYXRlZCB0byB0aGUgY3Vy cmVudCBwbGFuIG5vZGUgKi8KIAlFeHBsYWluV29ya2Vyc1N0YXRlICp3b3JrZXJzX3N0YXRlOyAv KiBuZWVkZWQgaWYgcGFyYWxsZWwgcGxhbiAqLworCWJvb2wJCXJ1bm5pbmc7CQkvKiB3aGV0aGVy IHRhcmdldCBxdWVyeSBpcyBhbHJlYWR5IHJ1bm5pbmcgKi8KIH0gRXhwbGFpblN0YXRlOwogCiAv KiBIb29rIGZvciBwbHVnaW5zIHRvIGdldCBjb250cm9sIGluIEV4cGxhaW5PbmVRdWVyeSgpICov CkBAIC0xMjQsNCArMTI1LDYgQEAgZXh0ZXJuIHZvaWQgRXhwbGFpbk9wZW5Hcm91cChjb25zdCBj aGFyICpvYmp0eXBlLCBjb25zdCBjaGFyICpsYWJlbG5hbWUsCiBleHRlcm4gdm9pZCBFeHBsYWlu Q2xvc2VHcm91cChjb25zdCBjaGFyICpvYmp0eXBlLCBjb25zdCBjaGFyICpsYWJlbG5hbWUsCiAJ CQkJCQkJICBib29sIGxhYmVsZWQsIEV4cGxhaW5TdGF0ZSAqZXMpOwogCitleHRlcm4gdm9pZCBI YW5kbGVMb2dDdXJyZW50UGxhbkludGVycnVwdCh2b2lkKTsKK2V4dGVybiB2b2lkIFByb2Nlc3NM b2dDdXJyZW50UGxhbkludGVycnVwdCh2b2lkKTsKICNlbmRpZgkJCQkJCQkvKiBFWFBMQUlOX0gg Ki8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oIGIvc3JjL2luY2x1ZGUvbWlz Y2FkbWluLmgKaW5kZXggOTBhMzAxNjA2NS4uMGZiMGRhNzdlMiAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvbWlzY2FkbWluLmgKKysrIGIvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKQEAgLTk0LDYg Kzk0LDcgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBJZGxlSW5U cmFuc2FjdGlvblNlc3Npb25UaW1lb3V0UGVuZGluZzsKIGV4dGVybiBQR0RMTElNUE9SVCB2b2xh dGlsZSBzaWdfYXRvbWljX3QgSWRsZVNlc3Npb25UaW1lb3V0UGVuZGluZzsKIGV4dGVybiBQR0RM TElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgUHJvY1NpZ25hbEJhcnJpZXJQZW5kaW5nOwog ZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBMb2dNZW1vcnlDb250ZXh0 UGVuZGluZzsKK2V4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgTG9nQ3Vy cmVudFBsYW5QZW5kaW5nOwogCiBleHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2lnX2F0b21p Y190IENoZWNrQ2xpZW50Q29ubmVjdGlvblBlbmRpbmc7CiBleHRlcm4gUEdETExJTVBPUlQgdm9s YXRpbGUgc2lnX2F0b21pY190IENsaWVudENvbm5lY3Rpb25Mb3N0OwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvc3RvcmFnZS9sb2NrLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2suaAppbmRl eCBhNTI4NmZhYjg5Li40ZjBlYWY4M2ZiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdl L2xvY2suaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2suaApAQCAtNTYxLDkgKzU2MSw3 IEBAIGV4dGVybiB2b2lkIExvY2tSZWxlYXNlU2Vzc2lvbihMT0NLTUVUSE9ESUQgbG9ja21ldGhv ZGlkKTsKIGV4dGVybiB2b2lkIExvY2tSZWxlYXNlQ3VycmVudE93bmVyKExPQ0FMTE9DSyAqKmxv Y2FsbG9ja3MsIGludCBubG9ja3MpOwogZXh0ZXJuIHZvaWQgTG9ja1JlYXNzaWduQ3VycmVudE93 bmVyKExPQ0FMTE9DSyAqKmxvY2FsbG9ja3MsIGludCBubG9ja3MpOwogZXh0ZXJuIGJvb2wgTG9j a0hlbGRCeU1lKGNvbnN0IExPQ0tUQUcgKmxvY2t0YWcsIExPQ0tNT0RFIGxvY2ttb2RlKTsKLSNp ZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCiBleHRlcm4gSFRBQiAqR2V0TG9ja01ldGhvZExvY2Fs SGFzaCh2b2lkKTsKLSNlbmRpZgogZXh0ZXJuIGJvb2wgTG9ja0hhc1dhaXRlcnMoY29uc3QgTE9D S1RBRyAqbG9ja3RhZywKIAkJCQkJCSAgIExPQ0tNT0RFIGxvY2ttb2RlLCBib29sIHNlc3Npb25M b2NrKTsKIGV4dGVybiBWaXJ0dWFsVHJhbnNhY3Rpb25JZCAqR2V0TG9ja0NvbmZsaWN0cyhjb25z dCBMT0NLVEFHICpsb2NrdGFnLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9j c2lnbmFsLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaAppbmRleCBlZWMxODZi ZTJlLi5jMWE3MjE4ZDY5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWdu YWwuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaApAQCAtMzUsNiArMzUs NyBAQCB0eXBlZGVmIGVudW0KIAlQUk9DU0lHX1dBTFNORF9JTklUX1NUT1BQSU5HLAkvKiBhc2sg d2Fsc2VuZGVycyB0byBwcmVwYXJlIGZvciBzaHV0ZG93biAgKi8KIAlQUk9DU0lHX0JBUlJJRVIs CQkJLyogZ2xvYmFsIGJhcnJpZXIgaW50ZXJydXB0ICAqLwogCVBST0NTSUdfTE9HX01FTU9SWV9D T05URVhULCAvKiBhc2sgYmFja2VuZCB0byBsb2cgdGhlIG1lbW9yeSBjb250ZXh0cyAqLworCVBS T0NTSUdfTE9HX0NVUlJFTlRfUExBTiwgLyogYXNrIGJhY2tlbmQgdG8gbG9nIHBsYW4gb2YgdGhl IGN1cnJlbnQgcXVlcnkgKi8KIAogCS8qIFJlY292ZXJ5IGNvbmZsaWN0IHJlYXNvbnMgKi8KIAlQ Uk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0RBVEFCQVNFLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvc3RvcmFnZS9zaWduYWxmdW5jcy5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaWduYWxmdW5j cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjVmNmIxMjQzNzIKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3NpZ25hbGZ1bmNzLmgKQEAgLTAs MCArMSwyMiBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogc2lnbmFsZnVuY3MuaAorICoJ ICBGdW5jdGlvbnMgZm9yIHNpZ25hbGluZyBiYWNrZW5kcworICoKKyAqCisgKiBQb3J0aW9ucyBD b3B5cmlnaHQgKGMpIDE5OTYtMjAyMSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3Jv dXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVy c2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogc3JjL2luY2x1ZGUvc3RvcmFnZS9zaWduYWxmdW5j cy5oCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpZm5kZWYgUFJPQ1NJR05BTEZVTkNf SAorI2RlZmluZSBQUk9DU0lHTkFMRlVOQ19ICisKKy8qCisgKiBwcm90b3R5cGVzIGZvciBmdW5j dGlvbnMgaW4gc2lnbmFsZnVuY3MuYworICovCitleHRlcm4gYm9vbCBTZW5kUHJvY1NpZ25hbEZv ckxvZ0luZm8ocGlkX3QgcGlkLCBQcm9jU2lnbmFsUmVhc29uIHJlYXNvbik7CisKKyNlbmRpZgkJ CQkJCQkvKiBQUk9DU0lHTkFMRlVOQ19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS90Y29w L3BxdWVyeS5oIGIvc3JjL2luY2x1ZGUvdGNvcC9wcXVlcnkuaAppbmRleCAyMzE4ZjA0ZmYwLi5k MzdhNWViODM3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS90Y29wL3BxdWVyeS5oCisrKyBiL3Ny Yy9pbmNsdWRlL3Rjb3AvcHF1ZXJ5LmgKQEAgLTIxLDYgKzIxLDcgQEAgc3RydWN0IFBsYW5uZWRT dG10OwkJCQkvKiBhdm9pZCBpbmNsdWRpbmcgcGxhbm5vZGVzLmggaGVyZSAqLwogCiAKIGV4dGVy biBQR0RMTElNUE9SVCBQb3J0YWwgQWN0aXZlUG9ydGFsOworZXh0ZXJuIFBHRExMSU1QT1JUIFF1 ZXJ5RGVzYyAqQWN0aXZlUXVlcnlEZXNjOwogCiAKIGV4dGVybiBQb3J0YWxTdHJhdGVneSBDaG9v c2VQb3J0YWxTdHJhdGVneShMaXN0ICpzdG10cyk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL21pc2NfZnVuY3Rpb25zLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvbWlzY19mdW5jdGlvbnMub3V0CmluZGV4IDEwMTNkMTdmODcuLjg3NjA1MjAzNGQgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbWlzY19mdW5jdGlvbnMub3V0CisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbWlzY19mdW5jdGlvbnMub3V0CkBAIC0xMzQsMjEg KzEzNCwyMiBAQCBMSU5FIDE6IFNFTEVDVCBudW1fbnVsbHMoKTsKICAgICAgICAgICAgICAgIF4K IEhJTlQ6ICBObyBmdW5jdGlvbiBtYXRjaGVzIHRoZSBnaXZlbiBuYW1lIGFuZCBhcmd1bWVudCB0 eXBlcy4gWW91IG1pZ2h0IG5lZWQgdG8gYWRkIGV4cGxpY2l0IHR5cGUgY2FzdHMuCiAtLQotLS0g cGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKCkKKy0tIFRlc3QgbG9nZ2luZyBmdW5jdGlv bnMKIC0tCi0tLSBNZW1vcnkgY29udGV4dHMgYXJlIGxvZ2dlZCBhbmQgdGhleSBhcmUgbm90IHJl dHVybmVkIHRvIHRoZSBmdW5jdGlvbi4KKy0tIFRoZSBvdXRwdXRzIG9mIHRoZXNlIGZ1bmN0aW9u cyBhcmUgbG9nZ2VkIGFuZCB0aGV5IGFyZSBub3QgcmV0dXJuZWQgdG8KKy0tIHRoZSBmdW5jdGlv bi4KIC0tIEZ1cnRoZXJtb3JlLCB0aGVpciBjb250ZW50cyBjYW4gdmFyeSBkZXBlbmRpbmcgb24g dGhlIHRpbWluZy4gSG93ZXZlciwKIC0tIHdlIGNhbiBhdCBsZWFzdCB2ZXJpZnkgdGhhdCB0aGUg Y29kZSBkb2Vzbid0IGZhaWwsIGFuZCB0aGF0IHRoZQogLS0gcGVybWlzc2lvbnMgYXJlIHNldCBw cm9wZXJseS4KLS0tCistLSBwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMoKQorQ1JFQVRF IFJPTEUgcmVncmVzc19sb2c7CiBTRUxFQ1QgcGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRz KHBnX2JhY2tlbmRfcGlkKCkpOwogIHBnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cyAKIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgdAogKDEgcm93KQogCi1DUkVBVEUgUk9M RSByZWdyZXNzX2xvZ19tZW1vcnk7Ci1TRUxFQ1QgaGFzX2Z1bmN0aW9uX3ByaXZpbGVnZSgncmVn cmVzc19sb2dfbWVtb3J5JywKK1NFTEVDVCBoYXNfZnVuY3Rpb25fcHJpdmlsZWdlKCdyZWdyZXNz X2xvZycsCiAgICdwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMoaW50ZWdlciknLCAnRVhF Q1VURScpOyAtLSBubwogIGhhc19mdW5jdGlvbl9wcml2aWxlZ2UgCiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KQEAgLTE1NiwxNSArMTU3LDE1IEBAIFNFTEVDVCBoYXNfZnVuY3Rpb25fcHJpdmls ZWdlKCdyZWdyZXNzX2xvZ19tZW1vcnknLAogKDEgcm93KQogCiBHUkFOVCBFWEVDVVRFIE9OIEZV TkNUSU9OIHBnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cyhpbnRlZ2VyKQotICBUTyByZWdy ZXNzX2xvZ19tZW1vcnk7Ci1TRUxFQ1QgaGFzX2Z1bmN0aW9uX3ByaXZpbGVnZSgncmVncmVzc19s b2dfbWVtb3J5JywKKyAgVE8gcmVncmVzc19sb2c7CitTRUxFQ1QgaGFzX2Z1bmN0aW9uX3ByaXZp bGVnZSgncmVncmVzc19sb2cnLAogICAncGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKGlu dGVnZXIpJywgJ0VYRUNVVEUnKTsgLS0geWVzCiAgaGFzX2Z1bmN0aW9uX3ByaXZpbGVnZSAKIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIHQKICgxIHJvdykKIAotU0VUIFJPTEUgcmVncmVzc19s b2dfbWVtb3J5OworU0VUIFJPTEUgcmVncmVzc19sb2c7CiBTRUxFQ1QgcGdfbG9nX2JhY2tlbmRf bWVtb3J5X2NvbnRleHRzKHBnX2JhY2tlbmRfcGlkKCkpOwogIHBnX2xvZ19iYWNrZW5kX21lbW9y eV9jb250ZXh0cyAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNzMsOCAr MTc0LDQxIEBAIFNFTEVDVCBwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMocGdfYmFja2Vu ZF9waWQoKSk7CiAKIFJFU0VUIFJPTEU7CiBSRVZPS0UgRVhFQ1VURSBPTiBGVU5DVElPTiBwZ19s b2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMoaW50ZWdlcikKLSAgRlJPTSByZWdyZXNzX2xvZ19t ZW1vcnk7Ci1EUk9QIFJPTEUgcmVncmVzc19sb2dfbWVtb3J5OworICBGUk9NIHJlZ3Jlc3NfbG9n OworLS0gcGdfbG9nX3F1ZXJ5X3BsYW4oKQorU0VMRUNUIHBnX2xvZ19xdWVyeV9wbGFuKHBnX2Jh Y2tlbmRfcGlkKCkpOworIHBnX2xvZ19xdWVyeV9wbGFuIAorLS0tLS0tLS0tLS0tLS0tLS0tLQor IHQKKygxIHJvdykKKworU0VMRUNUIGhhc19mdW5jdGlvbl9wcml2aWxlZ2UoJ3JlZ3Jlc3NfbG9n JywKKyAgJ3BnX2xvZ19xdWVyeV9wbGFuKGludGVnZXIpJywgJ0VYRUNVVEUnKTsgLS0gbm8KKyBo YXNfZnVuY3Rpb25fcHJpdmlsZWdlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgZgorKDEg cm93KQorCitHUkFOVCBFWEVDVVRFIE9OIEZVTkNUSU9OIHBnX2xvZ19xdWVyeV9wbGFuKGludGVn ZXIpCisgIFRPIHJlZ3Jlc3NfbG9nOworU0VMRUNUIGhhc19mdW5jdGlvbl9wcml2aWxlZ2UoJ3Jl Z3Jlc3NfbG9nJywKKyAgJ3BnX2xvZ19xdWVyeV9wbGFuKGludGVnZXIpJywgJ0VYRUNVVEUnKTsg LS0geWVzCisgaGFzX2Z1bmN0aW9uX3ByaXZpbGVnZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIHQKKygxIHJvdykKKworU0VUIFJPTEUgcmVncmVzc19sb2c7CitTRUxFQ1QgcGdfbG9nX3F1 ZXJ5X3BsYW4ocGdfYmFja2VuZF9waWQoKSk7CisgcGdfbG9nX3F1ZXJ5X3BsYW4gCistLS0tLS0t LS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitSRVNFVCBST0xFOworUkVWT0tFIEVYRUNVVEUg T04gRlVOQ1RJT04gcGdfbG9nX3F1ZXJ5X3BsYW4oaW50ZWdlcikKKyAgRlJPTSByZWdyZXNzX2xv ZzsKK0RST1AgUk9MRSByZWdyZXNzX2xvZzsKIC0tCiAtLSBUZXN0IHNvbWUgYnVpbHQtaW4gU1JG cwogLS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL21pc2NfZnVuY3Rpb25zLnNx bCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL21pc2NfZnVuY3Rpb25zLnNxbAppbmRleCA3YWI5YjJh MTUwLi5iNGRkNzI1MDcyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9taXNjX2Z1 bmN0aW9ucy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbWlzY19mdW5jdGlvbnMuc3Fs CkBAIC0zMSwzNSArMzEsNTUgQEAgU0VMRUNUIG51bV9ub25udWxscygpOwogU0VMRUNUIG51bV9u dWxscygpOwogCiAtLQotLS0gcGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKCkKKy0tIFRl c3QgbG9nZ2luZyBmdW5jdGlvbnMKIC0tCi0tLSBNZW1vcnkgY29udGV4dHMgYXJlIGxvZ2dlZCBh bmQgdGhleSBhcmUgbm90IHJldHVybmVkIHRvIHRoZSBmdW5jdGlvbi4KKy0tIFRoZSBvdXRwdXRz IG9mIHRoZXNlIGZ1bmN0aW9ucyBhcmUgbG9nZ2VkIGFuZCB0aGV5IGFyZSBub3QgcmV0dXJuZWQg dG8KKy0tIHRoZSBmdW5jdGlvbi4KIC0tIEZ1cnRoZXJtb3JlLCB0aGVpciBjb250ZW50cyBjYW4g dmFyeSBkZXBlbmRpbmcgb24gdGhlIHRpbWluZy4gSG93ZXZlciwKIC0tIHdlIGNhbiBhdCBsZWFz dCB2ZXJpZnkgdGhhdCB0aGUgY29kZSBkb2Vzbid0IGZhaWwsIGFuZCB0aGF0IHRoZQogLS0gcGVy bWlzc2lvbnMgYXJlIHNldCBwcm9wZXJseS4KLS0tCiAKLVNFTEVDVCBwZ19sb2dfYmFja2VuZF9t ZW1vcnlfY29udGV4dHMocGdfYmFja2VuZF9waWQoKSk7CistLSBwZ19sb2dfYmFja2VuZF9tZW1v cnlfY29udGV4dHMoKQorQ1JFQVRFIFJPTEUgcmVncmVzc19sb2c7CiAKLUNSRUFURSBST0xFIHJl Z3Jlc3NfbG9nX21lbW9yeTsKK1NFTEVDVCBwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMo cGdfYmFja2VuZF9waWQoKSk7CiAKLVNFTEVDVCBoYXNfZnVuY3Rpb25fcHJpdmlsZWdlKCdyZWdy ZXNzX2xvZ19tZW1vcnknLAorU0VMRUNUIGhhc19mdW5jdGlvbl9wcml2aWxlZ2UoJ3JlZ3Jlc3Nf bG9nJywKICAgJ3BnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cyhpbnRlZ2VyKScsICdFWEVD VVRFJyk7IC0tIG5vCiAKIEdSQU5UIEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfbG9nX2JhY2tlbmRf bWVtb3J5X2NvbnRleHRzKGludGVnZXIpCi0gIFRPIHJlZ3Jlc3NfbG9nX21lbW9yeTsKKyAgVE8g cmVncmVzc19sb2c7CiAKLVNFTEVDVCBoYXNfZnVuY3Rpb25fcHJpdmlsZWdlKCdyZWdyZXNzX2xv Z19tZW1vcnknLAorU0VMRUNUIGhhc19mdW5jdGlvbl9wcml2aWxlZ2UoJ3JlZ3Jlc3NfbG9nJywK ICAgJ3BnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cyhpbnRlZ2VyKScsICdFWEVDVVRFJyk7 IC0tIHllcwogCi1TRVQgUk9MRSByZWdyZXNzX2xvZ19tZW1vcnk7CitTRVQgUk9MRSByZWdyZXNz X2xvZzsKIFNFTEVDVCBwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMocGdfYmFja2VuZF9w aWQoKSk7CiBSRVNFVCBST0xFOwogCiBSRVZPS0UgRVhFQ1VURSBPTiBGVU5DVElPTiBwZ19sb2df YmFja2VuZF9tZW1vcnlfY29udGV4dHMoaW50ZWdlcikKLSAgRlJPTSByZWdyZXNzX2xvZ19tZW1v cnk7CisgIEZST00gcmVncmVzc19sb2c7CisKKy0tIHBnX2xvZ19xdWVyeV9wbGFuKCkKK1NFTEVD VCBwZ19sb2dfcXVlcnlfcGxhbihwZ19iYWNrZW5kX3BpZCgpKTsKKworU0VMRUNUIGhhc19mdW5j dGlvbl9wcml2aWxlZ2UoJ3JlZ3Jlc3NfbG9nJywKKyAgJ3BnX2xvZ19xdWVyeV9wbGFuKGludGVn ZXIpJywgJ0VYRUNVVEUnKTsgLS0gbm8KKworR1JBTlQgRVhFQ1VURSBPTiBGVU5DVElPTiBwZ19s b2dfcXVlcnlfcGxhbihpbnRlZ2VyKQorICBUTyByZWdyZXNzX2xvZzsKKworU0VMRUNUIGhhc19m dW5jdGlvbl9wcml2aWxlZ2UoJ3JlZ3Jlc3NfbG9nJywKKyAgJ3BnX2xvZ19xdWVyeV9wbGFuKGlu dGVnZXIpJywgJ0VYRUNVVEUnKTsgLS0geWVzCisKK1NFVCBST0xFIHJlZ3Jlc3NfbG9nOworU0VM RUNUIHBnX2xvZ19xdWVyeV9wbGFuKHBnX2JhY2tlbmRfcGlkKCkpOworUkVTRVQgUk9MRTsKKwor UkVWT0tFIEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfbG9nX3F1ZXJ5X3BsYW4oaW50ZWdlcikKKyAg RlJPTSByZWdyZXNzX2xvZzsKIAotRFJPUCBST0xFIHJlZ3Jlc3NfbG9nX21lbW9yeTsKK0RST1Ag Uk9MRSByZWdyZXNzX2xvZzsKIAogLS0KIC0tIFRlc3Qgc29tZSBidWlsdC1pbiBTUkZzCgpiYXNl LWNvbW1pdDogOTllNGQyNGE5ZDc3ZTdiYjg3ZTE1YjMxOGU5NmRjMzY2NTFhN2RhMgotLSAKMi4y Ny4wCgo= --=_4e0356b6c00bf4964113ca86f31498c3--