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 1m5J1g-0005hR-V4 for pgsql-hackers@arkaria.postgresql.org; Mon, 19 Jul 2021 02:29: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 1m5J1d-0004H5-GA for pgsql-hackers@arkaria.postgresql.org; Mon, 19 Jul 2021 02:28:57 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1m5J1d-0004Dy-5h for pgsql-hackers@lists.postgresql.org; Mon, 19 Jul 2021 02:28:57 +0000 Received: from oss.nttdata.com ([49.212.34.109]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1m5J1T-0002jK-SO for pgsql-hackers@postgresql.org; Mon, 19 Jul 2021 02:28:55 +0000 Received: from oss.nttdata.com (localhost [127.0.0.1]) by oss.nttdata.com (Postfix) with ESMTPA id C85B36099C; Mon, 19 Jul 2021 11:28:40 +0900 (JST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.3 at oss.nttdata.com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_3b5bb4a94cbecc85ea0e5136d64d1daa" Content-Transfer-Encoding: 7bit Date: Mon, 19 Jul 2021 11:28:40 +0900 From: torikoshia To: Masahiro Ikeda Cc: Bharath Rupireddy , Fujii Masao , Dilip Kumar , Pgsql Hackers Subject: Re: RFC: Logging plan of the running query In-Reply-To: References: <0842b5da697a03869fb50be93817e4e1@oss.nttdata.com> <1c1590d3962cea6e06621da76677b5f3@oss.nttdata.com> <64f716c44629e303b66e6c24502147cc@oss.nttdata.com> User-Agent: Roundcube Webmail/1.4.11 Message-ID: <9e5fb51def46911ed3dd6d2273250feb@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 --=_3b5bb4a94cbecc85ea0e5136d64d1daa Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On Tue, Jul 13, 2021 at 11:11 PM Masahiro Ikeda wrote: > When I tried this feature, I realized two things. So, I share them. Thanks for your review! > (1) About output contents > > > The format of the query plan is the same as when FORMAT > > TEXT > > and VEBOSE are used in the > > EXPLAIN command. > > For example: > I think the above needs to add COSTS and SETTINGS options too, and it's > better to use an > example which the SETTINGS option works like the following. Agreed. Updated the patch. > (2) About EXPLAIN "BUFFER" option > > When I checked EXPLAIN option, I found there is another option "BUFFER" > which can be > used without the "ANALYZE" option. > > I'm not sure it's useful because your target use-case is analyzing a > long-running query, > not its planning phase. If so, the planning buffer usage is not so much > useful. But, since > the overhead to output buffer usages is not high and it's used for > debugging use cases, > I wonder it's not a bad idea to output buffer usages too. Thought? As you pointed out, I also think it would be useful when queries are taking a long time in the planning phase. However, as far as I read ExplainOneQuery(), the buffer usages in the planner phase are not retrieved by default. They are retrieved only when BUFFERS is specified in the EXPLAIN. If we change it to always get the buffer usages and expose them as a global variable, we can get them through pg_log_current_plan(), but I think it doesn't pay. Regards, -- Atsushi Torikoshi NTT DATA CORPORATION --=_3b5bb4a94cbecc85ea0e5136d64d1daa Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v6-0001-log-running-query-plan.patch Content-Disposition: attachment; filename=v6-0001-log-running-query-plan.patch; size=19794 CkZyb20gN2FkOWEyODBiNmY3NGU0NzE4MjkzODYzNzE2MDQ2YzAyYjBhMzgzNSBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogYXRvcmlrIDx0b3Jpa29zaGlhQG9zcy5udHRkYXRhLmNvbT4K RGF0ZTogTW9uLCAxOSBKdWwgMjAyMSAxMDozMzowMiArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjZd IEFkZCBmdW5jdGlvbiB0byBsb2cgdGhlIHVudHJ1bmNhdGVkIHF1ZXJ5IHN0cmluZyBhbmQgaXRz CiBwbGFuIGZvciB0aGUgcXVlcnkgY3VycmVudGx5IHJ1bm5pbmcgb24gdGhlIGJhY2tlbmQgd2l0 aCB0aGUgc3BlY2lmaWVkCiBwcm9jZXNzIElELgoKQ3VycmVudGx5LCB3ZSBoYXZlIHRvIHdhaXQg Zm9yIHRoZSBxdWVyeSBleGVjdXRpb24gdG8gZmluaXNoCmJlZm9yZSB3ZSBjaGVjayBpdHMgcGxh bi4gVGhpcyBpcyBub3Qgc28gY29udmVuaWVudCB3aGVuCmludmVzdGlnYXRpbmcgbG9uZy1ydW5u aW5nIHF1ZXJpZXMgb24gcHJvZHVjdGlvbiBlbnZpcm9ubWVudHMKd2hlcmUgd2UgY2Fubm90IHVz ZSBkZWJ1Z2dlcnMuClRvIGltcHJvdmUgdGhpcyBzaXR1YXRpb24sIHRoaXMgcGF0Y2ggYWRkcwpw Z19sb2dfY3VycmVudF9xdWVyeV9wbGFuKCkgZnVuY3Rpb24gdGhhdCByZXF1ZXN0cyB0byBsb2cg dGhlCnBsYW4gb2YgdGhlIHNwZWNpZmllZCBiYWNrZW5kIHByb2Nlc3MuCgpPbmx5IHN1cGVydXNl cnMgYXJlIGFsbG93ZWQgdG8gcmVxdWVzdCB0byBsb2cgdGhlIHBsYW5zIGJlY2F1c2UKYWxsb3dp bmcgYW55IHVzZXJzIHRvIGlzc3VlIHRoaXMgcmVxdWVzdCBhdCBhbiB1bmJvdW5kZWQgcmF0ZQp3 b3VsZCBjYXVzZSBsb3RzIG9mIGxvZyBtZXNzYWdlcyBhbmQgd2hpY2ggY2FuIGxlYWQgdG8gZGVu aWFsCm9mIHNlcnZpY2UuCgpPbiByZWNlaXB0IG9mIHRoZSByZXF1ZXN0LCBhdCB0aGUgbmV4dCBD SEVDS19GT1JfSU5URVJSVVBUUygpLAp0aGUgdGFyZ2V0IGJhY2tlbmQgbG9ncyBpdHMgcGxhbiBh dCBMT0dfU0VSVkVSX09OTFkgbGV2ZWwsIHNvCnRoYXQgdGhlc2UgcGxhbnMgd2lsbCBhcHBlYXIg aW4gdGhlIHNlcnZlciBsb2cgYnV0IG5vdCBiZSBzZW50CnRvIHRoZSBjbGllbnQuCgpTaW5jZSBz b21lIGNvZGVzIGFuZCBjb21tZW50cyBvZiBwZ19sb2dfY3VycmVudF9xdWVyeV9wbGFuKCkgCmFy ZSB0aGUgc2FtZSB3aXRoIHBnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cygpLCB0aGlzCnBh dGNoIGFsc28gcmVmYWN0b3JzIHRoZW0gdG8gbWFrZSB0aGVtIGNvbW1vbi4KClJldmlld2VkLWJ5 OiBCaGFyYXRoIFJ1cGlyZWRkeSwgRnVqaWkgTWFzYW8sIERpbGlwIEt1bWFyLCBNYXNhaGlybyBJ a2VkYQotLS0KIGRvYy9zcmMvc2dtbC9mdW5jLnNnbWwgICAgICAgICAgICAgICAgICAgICAgIHwg NDYgKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgICAgICAg ICAgICB8IDc5ICsrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9w cm9jc2lnbmFsLmMgICAgICAgICB8IDY2ICsrKysrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL3Rj b3AvcG9zdGdyZXMuYyAgICAgICAgICAgICAgICAgIHwgIDQgKwogc3JjL2JhY2tlbmQvdXRpbHMv YWR0L21jeHRmdW5jcy5jICAgICAgICAgICAgfCA1MyArKy0tLS0tLS0tLS0tCiBzcmMvYmFja2Vu ZC91dGlscy9pbml0L2dsb2JhbHMuYyAgICAgICAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICAgIHwgIDYgKysKIHNyYy9pbmNsdWRlL2NvbW1h bmRzL2V4cGxhaW4uaCAgICAgICAgICAgICAgIHwgIDIgKwogc3JjL2luY2x1ZGUvbWlzY2FkbWlu LmggICAgICAgICAgICAgICAgICAgICAgfCAgMSArCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2Nz aWduYWwuaCAgICAgICAgICAgICB8ICAzICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbWlz Y19mdW5jdGlvbnMub3V0IHwgMTYgKysrLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvbWlzY19mdW5j dGlvbnMuc3FsICAgICAgfCAxMiArLS0KIDEyIGZpbGVzIGNoYW5nZWQsIDIzMiBpbnNlcnRpb25z KCspLCA1NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21s IGIvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbAppbmRleCBhYzYzNDdhOTcxLi4yMWNkOGM5ZmJiIDEw MDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9mdW5j LnNnbWwKQEAgLTI0OTQwLDYgKzI0OTQwLDI3IEBAIFNFTEVDVCBjb2xsYXRpb24gZm9yICgnZm9v JyBDT0xMQVRFICJkZV9ERSIpOwogICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICAgPC9yb3c+ CiAKKyAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5IHJvbGU9ImZ1bmNfdGFibGVfZW50cnkiPjxw YXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KKyAgICAgICAgPGluZGV4dGVybT4KKyAgICAgICAg IDxwcmltYXJ5PnBnX2xvZ19jdXJyZW50X3F1ZXJ5X3BsYW48L3ByaW1hcnk+CisgICAgICAgIDwv aW5kZXh0ZXJtPgorICAgICAgICA8ZnVuY3Rpb24+cGdfbG9nX2N1cnJlbnRfcXVlcnlfcGxhbjwv ZnVuY3Rpb24+ICggPHBhcmFtZXRlcj5waWQ8L3BhcmFtZXRlcj4gPHR5cGU+aW50ZWdlcjwvdHlw ZT4gKQorICAgICAgICA8cmV0dXJudmFsdWU+Ym9vbGVhbjwvcmV0dXJudmFsdWU+CisgICAgICAg PC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBSZXF1ZXN0cyB0byBsb2cgdGhlIHBsYW4g b2YgdGhlIHF1ZXJ5IGN1cnJlbnRseSBydW5uaW5nIG9uIHRoZQorICAgICAgICBiYWNrZW5kIHdp dGggc3BlY2lmaWVkIHByb2Nlc3MgSUQgYWxvbmcgd2l0aCB0aGUgdW50cnVuY2F0ZWQKKyAgICAg ICAgcXVlcnkgc3RyaW5nLgorICAgICAgICBUaGV5IHdpbGwgYmUgbG9nZ2VkIGF0IDxsaXRlcmFs PkxPRzwvbGl0ZXJhbD4gbWVzc2FnZSBsZXZlbCBhbmQKKyAgICAgICAgd2lsbCBhcHBlYXIgaW4g dGhlIHNlcnZlciBsb2cgYmFzZWQgb24gdGhlIGxvZworICAgICAgICBjb25maWd1cmF0aW9uIHNl dCAoU2VlIDx4cmVmIGxpbmtlbmQ9InJ1bnRpbWUtY29uZmlnLWxvZ2dpbmciLz4KKyAgICAgICAg Zm9yIG1vcmUgaW5mb3JtYXRpb24pLCBidXQgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY2xpZW50 CisgICAgICAgIHJlZ2FyZGxlc3Mgb2YgPHhyZWYgbGlua2VuZD0iZ3VjLWNsaWVudC1taW4tbWVz c2FnZXMiLz4uCisgICAgICAgIE9ubHkgc3VwZXJ1c2VycyBjYW4gcmVxdWVzdCB0byBsb2cgcGxh biBvZiB0aGUgcnVubmluZyBxdWVyeS4KKyAgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgIDwv cm93PgorCiAgICAgICA8cm93PgogICAgICAgIDxlbnRyeSByb2xlPSJmdW5jX3RhYmxlX2VudHJ5 Ij48cGFyYSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+CiAgICAgICAgIDxpbmRleHRlcm0+CkBAIC0y NTA1Myw2ICsyNTA3NCwzMSBAQCBMT0c6ICBHcmFuZCB0b3RhbDogMTY1MTkyMCBieXRlcyBpbiAy MDEgYmxvY2tzOyA2MjIzNjAgZnJlZSAoODggY2h1bmtzKTsgMTAyOTU2MAogICAgIGJlY2F1c2Ug aXQgbWF5IGdlbmVyYXRlIGEgbGFyZ2UgbnVtYmVyIG9mIGxvZyBtZXNzYWdlcy4KICAgIDwvcGFy YT4KIAorICAgPHBhcmE+CisgICAgPGZ1bmN0aW9uPnBnX2xvZ19jdXJyZW50X3F1ZXJ5X3BsYW48 L2Z1bmN0aW9uPiBjYW4gYmUgdXNlZAorICAgIHRvIGxvZyB0aGUgcGxhbiBvZiBhIGJhY2tlbmQg cHJvY2Vzcy4gRm9yIGV4YW1wbGU6Cis8cHJvZ3JhbWxpc3Rpbmc+Citwb3N0Z3Jlcz0jIFNFTEVD VCBwZ19sb2dfY3VycmVudF9xdWVyeV9wbGFuKDE3NzkzKTsKKyBwZ19sb2dfY3VycmVudF9xdWVy eV9wbGFuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCis8L3Byb2dy YW1saXN0aW5nPgorVGhlIGZvcm1hdCBvZiB0aGUgcXVlcnkgcGxhbiBpcyB0aGUgc2FtZSBhcyB3 aGVuIDxsaXRlcmFsPlZFUkJPU0U8L2xpdGVyYWw+LAorPGxpdGVyYWw+Q09TVFM8L2xpdGVyYWw+ LCA8bGl0ZXJhbD5TRVRUSU5HUzwvbGl0ZXJhbD4gYW5kCis8bGl0ZXJhbD5GT1JNQVQgVEVYVDwv bGl0ZXJhbD4gYXJlIHVzZWQgaW4gdGhlIDxjb21tYW5kPkVYUExBSU48L2NvbW1hbmQ+Citjb21t YW5kLiBGb3IgZXhhbXBsZToKKzxzY3JlZW4+CitMT0c6ICBwbGFuIG9mIHRoZSBxdWVyeSBydW5u aW5nIG9uIGJhY2tlbmQgd2l0aCBQSUQgMTc3OTMgaXM6CisgICAgICAgIFF1ZXJ5IFRleHQ6IFNF TEVDVCAqIEZST00gcGdiZW5jaF9hY2NvdW50czsKKyAgICAgICAgU2VxIFNjYW4gb24gcHVibGlj LnBnYmVuY2hfYWNjb3VudHMgIChjb3N0PTAuMDAuLjUyNzg3LjAwIHJvd3M9MjAwMDAwMCB3aWR0 aD05NykKKyAgICAgICAgICBPdXRwdXQ6IGFpZCwgYmlkLCBhYmFsYW5jZSwgZmlsbGVyCisgICAg ICAgIFNldHRpbmdzOiB3b3JrX21lbSA9ICcxTUInCis8L3NjcmVlbj4KKyAgICBOb3RlIHRoYXQg bmVzdGVkIHN0YXRlbWVudHMgKHN0YXRlbWVudHMgZXhlY3V0ZWQgaW5zaWRlIGEgZnVuY3Rpb24p IGFyZSBub3QKKyAgICBjb25zaWRlcmVkIGZvciBsb2dnaW5nLiBPbmx5IHRvcC1sZXZlbCBxdWVy eSBwbGFucyBhcmUgbG9nZ2VkLgorICAgPC9wYXJhPgorCiAgIDwvc2VjdDI+CiAKICAgPHNlY3Qy IGlkPSJmdW5jdGlvbnMtYWRtaW4tYmFja3VwIj4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2V4cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCAz NDBkYjJiYWM0Li5jYjNlZDI3M2Y0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9l eHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC0yMSw2ICsy MSw3IEBACiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZUhhc2guaCIKICNpbmNsdWRlICJmb3JlaWdu L2Zkd2FwaS5oIgogI2luY2x1ZGUgImppdC9qaXQuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIK ICNpbmNsdWRlICJub2Rlcy9leHRlbnNpYmxlLmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNz LmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCkBAIC0yOCw2ICsyOSw4IEBACiAjaW5j bHVkZSAicGFyc2VyL3BhcnNldHJlZS5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZUhhbmRs ZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJv Y2FycmF5LmgiCisjaW5jbHVkZSAidGNvcC9wcXVlcnkuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bw cm90LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9ndWNf dGFibGVzLmgiCkBAIC00OTIxLDMgKzQ5MjQsNzkgQEAgZXNjYXBlX3lhbWwoU3RyaW5nSW5mbyBi dWYsIGNvbnN0IGNoYXIgKnN0cikKIHsKIAllc2NhcGVfanNvbihidWYsIHN0cik7CiB9CisKKy8q CisgKiBIYW5kbGVMb2dDdXJyZW50UGxhbkludGVycnVwdAorICoJCUhhbmRsZSByZWNlaXB0IG9m IGFuIGludGVycnVwdCBpbmRpY2F0aW5nIGxvZ2dpbmcgdGhlIHBsYW4gb2YKKyAqCQl0aGUgY3Vy cmVudGx5IHJ1bm5pbmcgcXVlcnkuCisgKgorICogQWxsIHRoZSBhY3R1YWwgd29yayBpcyBkZWZl cnJlZCB0byBQcm9jZXNzTG9nQ3VycmVudFBsYW5JbnRlcnJ1cHQoKSwKKyAqIGJlY2F1c2Ugd2Ug Y2Fubm90IHNhZmVseSBlbWl0IGEgbG9nIG1lc3NhZ2UgaW5zaWRlIHRoZSBzaWduYWwgaGFuZGxl ci4KKyAqLwordm9pZAorSGFuZGxlTG9nQ3VycmVudFBsYW5JbnRlcnJ1cHQodm9pZCkKK3sKKwlJ bnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKKwlMb2dDdXJyZW50UGxhblBlbmRpbmcgPSB0cnVlOwor CS8qIGxhdGNoIHdpbGwgYmUgc2V0IGJ5IHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyICovCit9 CisKKy8qCisgKiBQcm9jZXNzTG9nQ3VycmVudFBsYW5JbnRlcnJ1cHQKKyAqIAkJUGVyZm9ybSBs b2dnaW5nIHRoZSBwbGFuIG9mIHRoZSBjdXJyZW50bHkgcnVubmluZyBxdWVyeSBvbiB0aGlzCisg KiAJCWJhY2tlbmQgcHJvY2Vzcy4KKyAqCisgKiBBbnkgYmFja2VuZCB0aGF0IHBhcnRpY2lwYXRl cyBpbiBQcm9jU2lnbmFsIHNpZ25hbGluZyBtdXN0IGFycmFuZ2UgdG8gY2FsbAorICogdGhpcyBm dW5jdGlvbiBpZiB3ZSBzZWUgTG9nQ3VycmVudFBsYW5QZW5kaW5nIHNldC4KKyAqIEl0IGlzIGNh bGxlZCBmcm9tIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCksIHdoaWNoIGlzIGVub3VnaCBiZWNhdXNl IHRoZSB0YXJnZXQKKyAqIHByb2Nlc3MgZm9yIGxvZ2dpbmcgcGxhbiBpcyBhIGJhY2tlbmQuCisg Ki8KK3ZvaWQKK1Byb2Nlc3NMb2dDdXJyZW50UGxhbkludGVycnVwdCh2b2lkKQoreworCUV4cGxh aW5TdGF0ZSAqZXM7CisJTG9nQ3VycmVudFBsYW5QZW5kaW5nID0gZmFsc2U7CisKKwlpZiAoIUFj dGl2ZVBvcnRhbCB8fCAhQWN0aXZlUG9ydGFsLT5xdWVyeURlc2MpCisJeworCQllcmVwb3J0KExP R19TRVJWRVJfT05MWSwKKwkJCQkoZXJybXNnKCJiYWNrZW5kIHdpdGggUElEICVkIGlzIG5vdCBy dW5uaW5nIGEgcXVlcnkiLAorCQkJCQlNeVByb2NQaWQpKSk7CisJCXJldHVybjsKKwl9CisKKwll cyA9IE5ld0V4cGxhaW5TdGF0ZSgpOworCisJZXMtPmZvcm1hdCA9IEVYUExBSU5fRk9STUFUX1RF WFQ7CisJZXMtPnNldHRpbmdzID0gdHJ1ZTsKKwllcy0+dmVyYm9zZSA9IHRydWU7CisKKwlFeHBs YWluUXVlcnlUZXh0KGVzLCBBY3RpdmVQb3J0YWwtPnF1ZXJ5RGVzYyk7CisJRXhwbGFpblByaW50 UGxhbihlcywgQWN0aXZlUG9ydGFsLT5xdWVyeURlc2MpOworCUV4cGxhaW5QcmludEpJVFN1bW1h cnkoZXMsIEFjdGl2ZVBvcnRhbC0+cXVlcnlEZXNjKTsKKworCS8qIFJlbW92ZSBsYXN0IGxpbmUg YnJlYWsgKi8KKwlpZiAoZXMtPnN0ci0+bGVuID4gMCAmJiBlcy0+c3RyLT5kYXRhW2VzLT5zdHIt PmxlbiAtIDFdID09ICdcbicpCisJCWVzLT5zdHItPmRhdGFbLS1lcy0+c3RyLT5sZW5dID0gJ1ww JzsKKworCWVyZXBvcnQoTE9HX1NFUlZFUl9PTkxZLAorCQkJKGVycm1zZygicGxhbiBvZiB0aGUg cXVlcnkgcnVubmluZyBvbiBiYWNrZW5kIHdpdGggUElEICVkIGlzOlxuJXMiLAorCQkJCQlNeVBy b2NQaWQsIGVzLT5zdHItPmRhdGEpLAorCQkJIGVycmhpZGVzdG10KHRydWUpKSk7Cit9CisKKy8q CisgKiBwZ19sb2dfY3VycmVudF9xdWVyeV9wbGFuCisgKgkJU2lnbmFsIGEgYmFja2VuZCBwcm9j ZXNzIHRvIGxvZyB0aGUgcXVlcnkgcGxhbiBvZiB0aGUgcnVubmluZyBxdWVyeS4KKyAqLworRGF0 dW0KK3BnX2xvZ19jdXJyZW50X3F1ZXJ5X3BsYW4oUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlwaWRf dAkJcGlkOworCWJvb2wJCXJlc3VsdDsKKworCXBpZCA9IFBHX0dFVEFSR19JTlQzMigwKTsKKwly ZXN1bHQgPSBTZW5kUHJvY1NpZ25hbEZvckxvZ0luZm8ocGlkLCBQUk9DU0lHX0xPR19DVVJSRU5U X1BMQU4pOworCisJUEdfUkVUVVJOX0JPT0wocmVzdWx0KTsKK30KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3Byb2NzaWduYWwuYwppbmRleCBkZWZiNzVhYTI2Li5iODllOWE5OGE1IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKKysrIGIvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvcHJvY3NpZ25hbC5jCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiYWNjZXNz L3BhcmFsbGVsLmgiCiAjaW5jbHVkZSAicG9ydC9wZ19iaXR1dGlscy5oIgogI2luY2x1ZGUgImNv bW1hbmRzL2FzeW5jLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvZXhwbGFpbi5oIgogI2luY2x1ZGUg Im1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9u L3dhbHNlbmRlci5oIgpAQCAtMjcsNiArMjgsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgor I2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5o IgogI2luY2x1ZGUgInN0b3JhZ2Uvc2ludmFsLmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5o IgpAQCAtMzEyLDYgKzMxNCw2NyBAQCBTZW5kUHJvY1NpZ25hbChwaWRfdCBwaWQsIFByb2NTaWdu YWxSZWFzb24gcmVhc29uLCBCYWNrZW5kSWQgYmFja2VuZElkKQogCXJldHVybiAtMTsKIH0KIAor LyoKKyAqIFNlbmRQcm9jU2lnbmFsRm9yTG9nSW5mbworICoJCVNpZ25hbCBhIGJhY2tlbmQgcHJv Y2VzcyB0byBsb2cgaXRzIGluZm9ybWF0aW9uLgorICoKKyAqIE9ubHkgc3VwZXJ1c2VycyBhcmUg YWxsb3dlZCB0byBzaWduYWwgdG8gbG9nIGluZm9ybWF0aW9uIGJlY2F1c2UKKyAqIGFsbG93aW5n IGFueSB1c2VycyB0byBpc3N1ZSB0aGlzIHJlcXVlc3QgYXQgYW4gdW5ib3VuZGVkIHJhdGUKKyAq IHdvdWxkIGNhdXNlIGxvdHMgb2YgbG9nIG1lc3NhZ2VzIGFuZCB3aGljaCBjYW4gbGVhZCB0byBk ZW5pYWwgb2YKKyAqIHNlcnZpY2UuCisgKgorICogT24gcmVjZWlwdCBvZiB0aGlzIHNpZ25hbCwg YSBiYWNrZW5kIHNldHMgdGhlIGZsYWcgaW4gdGhlIHNpZ25hbAorICogaGFuZGxlciwgd2hpY2gg Y2F1c2VzIHRoZSBuZXh0IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgdG8gbG9nIHRoZQorICogaW5m b3JtYXRpb24uCisgKi8KK2Jvb2wKK1NlbmRQcm9jU2lnbmFsRm9yTG9nSW5mbyhwaWRfdCBwaWQs IFByb2NTaWduYWxSZWFzb24gcmVhc29uKQoreworCVBHUFJPQwkgICAqcHJvYzsKKworCUFzc2Vy dChyZWFzb24gPT0gUFJPQ1NJR19MT0dfTUVNT1JZX0NPTlRFWFQgfHwKKwkJICAgcmVhc29uID09 IFBST0NTSUdfTE9HX0NVUlJFTlRfUExBTik7CisKKwkvKiBPbmx5IGFsbG93IHN1cGVydXNlcnMg dG8gbG9nIGluZm9ybWF0aW9uLiAqLworCWlmICghc3VwZXJ1c2VyKCkpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKKwkJCQkg ZXJybXNnKCJtdXN0IGJlIGEgc3VwZXJ1c2VyIHRvIGxvZyBpbmZvcm1hdGlvbiBhYm91dCBzcGVj aWZpZWQgcHJvY2VzcyIpKSk7CisKKwlwcm9jID0gQmFja2VuZFBpZEdldFByb2MocGlkKTsKKwor CS8qCisJICogQmFja2VuZFBpZEdldFByb2MgcmV0dXJucyBOVUxMIGlmIHRoZSBwaWQgaXNuJ3Qg dmFsaWQ7IGJ1dCBieSB0aGUgdGltZQorCSAqIHdlIHJlYWNoIGtpbGwoKSwgYSBwcm9jZXNzIGZv ciB3aGljaCB3ZSBnZXQgYSB2YWxpZCBwcm9jIGhlcmUgbWlnaHQKKwkgKiBoYXZlIHRlcm1pbmF0 ZWQgb24gaXRzIG93bi4gIFRoZXJlJ3Mgbm8gd2F5IHRvIGFjcXVpcmUgYSBsb2NrIG9uIGFuCisJ ICogYXJiaXRyYXJ5IHByb2Nlc3MgdG8gcHJldmVudCB0aGF0LiBCdXQgc2luY2UgdGhpcyBtZWNo YW5pc20gaXMgdXN1YWxseQorCSAqIHVzZWQgdG8gYmVsb3cgcHVycG9zZXMsIGl0IG1pZ2h0IGVu ZCBpdHMgb3duIGZpcnN0IGFuZCB0aGUgaW5mb3JtYXRpb24KKwkgKiBpcyBub3QgbG9nZ2VkIGlz IG5vdCBhIHByb2JsZW0uCisJICogLSBkZWJ1ZyBhIGJhY2tlbmQgcnVubmluZyBhbmQgY29uc3Vt aW5nIGxvdHMgb2YgbWVtb3J5CisJICogLSBsb29rIGludG8gdGhlIHBsYW4gb2YgdGhlIGxvbmcg cnVubmluZyBxdWVyeQorCSAqLworCWlmIChwcm9jID09IE5VTEwpCisJeworCQkvKgorCQkgKiBU aGlzIGlzIGp1c3QgYSB3YXJuaW5nIHNvIGEgbG9vcC10aHJvdWdoLXJlc3VsdHNldCB3aWxsIG5v dCBhYm9ydAorCQkgKiBpZiBvbmUgYmFja2VuZCB0ZXJtaW5hdGVkIG9uIGl0cyBvd24gZHVyaW5n IHRoZSBydW4uCisJCSAqLworCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJKGVycm1zZygiUElEICVk IGlzIG5vdCBhIFBvc3RncmVTUUwgc2VydmVyIHByb2Nlc3MiLCBwaWQpKSk7CisJCVBHX1JFVFVS Tl9CT09MKGZhbHNlKTsKKwl9CisKKwlpZiAoU2VuZFByb2NTaWduYWwocGlkLCByZWFzb24sIHBy b2MtPmJhY2tlbmRJZCkgPCAwKQorCXsKKwkJLyogQWdhaW4sIGp1c3QgYSB3YXJuaW5nIHRvIGFs bG93IGxvb3BzICovCisJCWVyZXBvcnQoV0FSTklORywKKwkJCQkoZXJybXNnKCJjb3VsZCBub3Qg c2VuZCBzaWduYWwgdG8gcHJvY2VzcyAlZDogJW0iLCBwaWQpKSk7CisJCVBHX1JFVFVSTl9CT09M KGZhbHNlKTsKKwl9CisKKwlQR19SRVRVUk5fQk9PTCh0cnVlKTsKK30KKwogLyoKICAqIEVtaXRQ cm9jU2lnbmFsQmFycmllcgogICoJCVNlbmQgYSBzaWduYWwgdG8gZXZlcnkgUG9zdGdyZXMgcHJv Y2VzcwpAQCAtNjYxLDYgKzcyNCw5IEBAIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKFNJR05B TF9BUkdTKQogCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19MT0dfTUVNT1JZX0NPTlRFWFQp KQogCQlIYW5kbGVMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KCk7CiAKKwlpZiAoQ2hlY2tQcm9j U2lnbmFsKFBST0NTSUdfTE9HX0NVUlJFTlRfUExBTikpCisJCUhhbmRsZUxvZ0N1cnJlbnRQbGFu SW50ZXJydXB0KCk7CisKIAlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfUkVDT1ZFUllfQ09O RkxJQ1RfREFUQUJBU0UpKQogCQlSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KFBST0NTSUdfUkVD T1ZFUllfQ09ORkxJQ1RfREFUQUJBU0UpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29w L3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKaW5kZXggOGNlYTEwYzkw MS4uYWM4ZWE2N2U4MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCisr KyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1 ZGUgImFjY2Vzcy94YWN0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVk ZSAiY29tbWFuZHMvYXN5bmMuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9leHBsYWluLmgiCiAjaW5j bHVkZSAiY29tbWFuZHMvcHJlcGFyZS5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL3NwaS5oIgogI2lu Y2x1ZGUgImppdC9qaXQuaCIKQEAgLTMzNjYsNiArMzM2Nyw5IEBAIFByb2Nlc3NJbnRlcnJ1cHRz KHZvaWQpCiAKIAlpZiAoTG9nTWVtb3J5Q29udGV4dFBlbmRpbmcpCiAJCVByb2Nlc3NMb2dNZW1v cnlDb250ZXh0SW50ZXJydXB0KCk7CisKKwlpZiAoTG9nQ3VycmVudFBsYW5QZW5kaW5nKQorCQlQ cm9jZXNzTG9nQ3VycmVudFBsYW5JbnRlcnJ1cHQoKTsKIH0KIAogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9hZHQvbWN4dGZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbWN4 dGZ1bmNzLmMKaW5kZXggMGQ1MjYxM2JjMy4uMjVjNjIxZTc3NiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9t Y3h0ZnVuY3MuYwpAQCAtMTgsNyArMTgsNiBAQAogI2luY2x1ZGUgImZ1bmNhcGkuaCIKICNpbmNs dWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgotI2luY2x1ZGUgInN0 b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCiAjaW5jbHVkZSAi dXRpbHMvYnVpbHRpbnMuaCIKIApAQCAtMTYxLDU3ICsxNjAsMTUgQEAgcGdfZ2V0X2JhY2tlbmRf bWVtb3J5X2NvbnRleHRzKFBHX0ZVTkNUSU9OX0FSR1MpCiAvKgogICogcGdfbG9nX2JhY2tlbmRf bWVtb3J5X2NvbnRleHRzCiAgKgkJU2lnbmFsIGEgYmFja2VuZCBwcm9jZXNzIHRvIGxvZyBpdHMg bWVtb3J5IGNvbnRleHRzLgotICoKLSAqIE9ubHkgc3VwZXJ1c2VycyBhcmUgYWxsb3dlZCB0byBz aWduYWwgdG8gbG9nIHRoZSBtZW1vcnkgY29udGV4dHMKLSAqIGJlY2F1c2UgYWxsb3dpbmcgYW55 IHVzZXJzIHRvIGlzc3VlIHRoaXMgcmVxdWVzdCBhdCBhbiB1bmJvdW5kZWQKLSAqIHJhdGUgd291 bGQgY2F1c2UgbG90cyBvZiBsb2cgbWVzc2FnZXMgYW5kIHdoaWNoIGNhbiBsZWFkIHRvCi0gKiBk ZW5pYWwgb2Ygc2VydmljZS4KLSAqCi0gKiBPbiByZWNlaXB0IG9mIHRoaXMgc2lnbmFsLCBhIGJh Y2tlbmQgc2V0cyB0aGUgZmxhZyBpbiB0aGUgc2lnbmFsCi0gKiBoYW5kbGVyLCB3aGljaCBjYXVz ZXMgdGhlIG5leHQgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSB0byBsb2cgdGhlCi0gKiBtZW1vcnkg Y29udGV4dHMuCiAgKi8KIERhdHVtCiBwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMoUEdf RlVOQ1RJT05fQVJHUykKIHsKLQlpbnQJCQlwaWQgPSBQR19HRVRBUkdfSU5UMzIoMCk7Ci0JUEdQ Uk9DCSAgICpwcm9jOwotCi0JLyogT25seSBhbGxvdyBzdXBlcnVzZXJzIHRvIGxvZyBtZW1vcnkg Y29udGV4dHMuICovCi0JaWYgKCFzdXBlcnVzZXIoKSkKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQko ZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLAotCQkJCSBlcnJtc2coIm11 c3QgYmUgYSBzdXBlcnVzZXIgdG8gbG9nIG1lbW9yeSBjb250ZXh0cyIpKSk7Ci0KLQlwcm9jID0g QmFja2VuZFBpZEdldFByb2MocGlkKTsKLQotCS8qCi0JICogQmFja2VuZFBpZEdldFByb2MgcmV0 dXJucyBOVUxMIGlmIHRoZSBwaWQgaXNuJ3QgdmFsaWQ7IGJ1dCBieSB0aGUgdGltZQotCSAqIHdl IHJlYWNoIGtpbGwoKSwgYSBwcm9jZXNzIGZvciB3aGljaCB3ZSBnZXQgYSB2YWxpZCBwcm9jIGhl cmUgbWlnaHQKLQkgKiBoYXZlIHRlcm1pbmF0ZWQgb24gaXRzIG93bi4gIFRoZXJlJ3Mgbm8gd2F5 IHRvIGFjcXVpcmUgYSBsb2NrIG9uIGFuCi0JICogYXJiaXRyYXJ5IHByb2Nlc3MgdG8gcHJldmVu dCB0aGF0LiBCdXQgc2luY2UgdGhpcyBtZWNoYW5pc20gaXMgdXN1YWxseQotCSAqIHVzZWQgdG8g ZGVidWcgYSBiYWNrZW5kIHJ1bm5pbmcgYW5kIGNvbnN1bWluZyBsb3RzIG9mIG1lbW9yeSwgdGhh dCBpdAotCSAqIG1pZ2h0IGVuZCBvbiBpdHMgb3duIGZpcnN0IGFuZCBpdHMgbWVtb3J5IGNvbnRl eHRzIGFyZSBub3QgbG9nZ2VkIGlzCi0JICogbm90IGEgcHJvYmxlbS4KLQkgKi8KLQlpZiAocHJv YyA9PSBOVUxMKQotCXsKLQkJLyoKLQkJICogVGhpcyBpcyBqdXN0IGEgd2FybmluZyBzbyBhIGxv b3AtdGhyb3VnaC1yZXN1bHRzZXQgd2lsbCBub3QgYWJvcnQKLQkJICogaWYgb25lIGJhY2tlbmQg dGVybWluYXRlZCBvbiBpdHMgb3duIGR1cmluZyB0aGUgcnVuLgotCQkgKi8KLQkJZXJlcG9ydChX QVJOSU5HLAotCQkJCShlcnJtc2coIlBJRCAlZCBpcyBub3QgYSBQb3N0Z3JlU1FMIHNlcnZlciBw cm9jZXNzIiwgcGlkKSkpOwotCQlQR19SRVRVUk5fQk9PTChmYWxzZSk7Ci0JfQorCXBpZF90CQlw aWQ7CisJYm9vbAkJcmVzdWx0OwogCi0JaWYgKFNlbmRQcm9jU2lnbmFsKHBpZCwgUFJPQ1NJR19M T0dfTUVNT1JZX0NPTlRFWFQsIHByb2MtPmJhY2tlbmRJZCkgPCAwKQotCXsKLQkJLyogQWdhaW4s IGp1c3QgYSB3YXJuaW5nIHRvIGFsbG93IGxvb3BzICovCi0JCWVyZXBvcnQoV0FSTklORywKLQkJ CQkoZXJybXNnKCJjb3VsZCBub3Qgc2VuZCBzaWduYWwgdG8gcHJvY2VzcyAlZDogJW0iLCBwaWQp KSk7Ci0JCVBHX1JFVFVSTl9CT09MKGZhbHNlKTsKLQl9CisJcGlkID0gUEdfR0VUQVJHX0lOVDMy KDApOworCXJlc3VsdCA9IFNlbmRQcm9jU2lnbmFsRm9yTG9nSW5mbyhwaWQsIFBST0NTSUdfTE9H X01FTU9SWV9DT05URVhUKTsKIAotCVBHX1JFVFVSTl9CT09MKHRydWUpOworCVBHX1JFVFVSTl9C T09MKHJlc3VsdCk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2Jh bHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jCmluZGV4IDM4MWQ5ZTU0OGQu LjEyNmVkMTAzNjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jCkBAIC0zNiw2ICszNiw3IEBA IHZvbGF0aWxlIHNpZ19hdG9taWNfdCBJZGxlSW5UcmFuc2FjdGlvblNlc3Npb25UaW1lb3V0UGVu ZGluZyA9IGZhbHNlOwogdm9sYXRpbGUgc2lnX2F0b21pY190IElkbGVTZXNzaW9uVGltZW91dFBl bmRpbmcgPSBmYWxzZTsKIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBQcm9jU2lnbmFsQmFycmllclBl bmRpbmcgPSBmYWxzZTsKIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBMb2dNZW1vcnlDb250ZXh0UGVu ZGluZyA9IGZhbHNlOwordm9sYXRpbGUgc2lnX2F0b21pY190IExvZ0N1cnJlbnRQbGFuUGVuZGlu ZyA9IGZhbHNlOwogdm9sYXRpbGUgdWludDMyIEludGVycnVwdEhvbGRvZmZDb3VudCA9IDA7CiB2 b2xhdGlsZSB1aW50MzIgUXVlcnlDYW5jZWxIb2xkb2ZmQ291bnQgPSAwOwogdm9sYXRpbGUgdWlu dDMyIENyaXRTZWN0aW9uQ291bnQgPSAwOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggOGJm OWQ3MDRiNy4uZWQyMmExN2JkMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w cm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC03OTc0LDYg Kzc5NzQsMTIgQEAKICAgcHJvcmV0dHlwZSA9PiAnYm9vbCcsIHByb2FyZ3R5cGVzID0+ICdpbnQ0 JywKICAgcHJvc3JjID0+ICdwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMnIH0sCiAKKyMg bG9nZ2luZyBwbGFuIG9mIHRoZSBydW5uaW5nIHF1ZXJ5IG9uIHRoZSBzcGVjaWZpZWQgYmFja2Vu ZAoreyBvaWQgPT4gJzQ1NDQnLCBkZXNjciA9PiAnbG9nIHBsYW4gb2YgdGhlIHJ1bm5pbmcgcXVl cnkgb24gdGhlIHNwZWNpZmllZCBiYWNrZW5kJywKKyAgcHJvbmFtZSA9PiAncGdfbG9nX2N1cnJl bnRfcXVlcnlfcGxhbicsCisgIHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAnYm9v bCcsCisgIHByb2FyZ3R5cGVzID0+ICdpbnQ0JywgcHJvc3JjID0+ICdwZ19sb2dfY3VycmVudF9x dWVyeV9wbGFuJyB9LAorCiAjIG5vbi1wZXJzaXN0ZW50IHNlcmllcyBnZW5lcmF0b3IKIHsgb2lk ID0+ICcxMDY2JywgZGVzY3IgPT4gJ25vbi1wZXJzaXN0ZW50IHNlcmllcyBnZW5lcmF0b3InLAog ICBwcm9uYW1lID0+ICdnZW5lcmF0ZV9zZXJpZXMnLCBwcm9yb3dzID0+ICcxMDAwJywKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaCBiL3NyYy9pbmNsdWRlL2NvbW1h bmRzL2V4cGxhaW4uaAppbmRleCBlOTRkOWU0OWNmLi5mYTgxYmViNTUzIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMv ZXhwbGFpbi5oCkBAIC0xMjQsNCArMTI0LDYgQEAgZXh0ZXJuIHZvaWQgRXhwbGFpbk9wZW5Hcm91 cChjb25zdCBjaGFyICpvYmp0eXBlLCBjb25zdCBjaGFyICpsYWJlbG5hbWUsCiBleHRlcm4gdm9p ZCBFeHBsYWluQ2xvc2VHcm91cChjb25zdCBjaGFyICpvYmp0eXBlLCBjb25zdCBjaGFyICpsYWJl bG5hbWUsCiAJCQkJCQkJICBib29sIGxhYmVsZWQsIEV4cGxhaW5TdGF0ZSAqZXMpOwogCitleHRl cm4gdm9pZCBIYW5kbGVMb2dDdXJyZW50UGxhbkludGVycnVwdCh2b2lkKTsKK2V4dGVybiB2b2lk IFByb2Nlc3NMb2dDdXJyZW50UGxhbkludGVycnVwdCh2b2lkKTsKICNlbmRpZgkJCQkJCQkvKiBF WFBMQUlOX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oIGIvc3JjL2lu Y2x1ZGUvbWlzY2FkbWluLmgKaW5kZXggNGRjMzQzY2JjNS4uMzU1ZTNkYjYyMiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKKysrIGIvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgK QEAgLTk0LDYgKzk0LDcgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNf dCBJZGxlSW5UcmFuc2FjdGlvblNlc3Npb25UaW1lb3V0UGVuZGluZzsKIGV4dGVybiBQR0RMTElN UE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgSWRsZVNlc3Npb25UaW1lb3V0UGVuZGluZzsKIGV4 dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgUHJvY1NpZ25hbEJhcnJpZXJQ ZW5kaW5nOwogZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBMb2dNZW1v cnlDb250ZXh0UGVuZGluZzsKK2V4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWlj X3QgTG9nQ3VycmVudFBsYW5QZW5kaW5nOwogCiBleHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUg c2lnX2F0b21pY190IENoZWNrQ2xpZW50Q29ubmVjdGlvblBlbmRpbmc7CiBleHRlcm4gUEdETExJ TVBPUlQgdm9sYXRpbGUgc2lnX2F0b21pY190IENsaWVudENvbm5lY3Rpb25Mb3N0OwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmggYi9zcmMvaW5jbHVkZS9zdG9y YWdlL3Byb2NzaWduYWwuaAppbmRleCBlZWMxODZiZTJlLi45MjI5MGMyZWQ5IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9y YWdlL3Byb2NzaWduYWwuaApAQCAtMzUsNiArMzUsNyBAQCB0eXBlZGVmIGVudW0KIAlQUk9DU0lH X1dBTFNORF9JTklUX1NUT1BQSU5HLAkvKiBhc2sgd2Fsc2VuZGVycyB0byBwcmVwYXJlIGZvciBz aHV0ZG93biAgKi8KIAlQUk9DU0lHX0JBUlJJRVIsCQkJLyogZ2xvYmFsIGJhcnJpZXIgaW50ZXJy dXB0ICAqLwogCVBST0NTSUdfTE9HX01FTU9SWV9DT05URVhULCAvKiBhc2sgYmFja2VuZCB0byBs b2cgdGhlIG1lbW9yeSBjb250ZXh0cyAqLworCVBST0NTSUdfTE9HX0NVUlJFTlRfUExBTiwgLyog YXNrIGJhY2tlbmQgdG8gbG9nIHBsYW4gb2YgdGhlIGN1cnJlbnQgcXVlcnkgKi8KIAogCS8qIFJl Y292ZXJ5IGNvbmZsaWN0IHJlYXNvbnMgKi8KIAlQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0RB VEFCQVNFLApAQCAtNjYsNiArNjcsOCBAQCBleHRlcm4gdm9pZCBQcm9jU2lnbmFsU2htZW1Jbml0 KHZvaWQpOwogZXh0ZXJuIHZvaWQgUHJvY1NpZ25hbEluaXQoaW50IHBzc19pZHgpOwogZXh0ZXJu IGludAlTZW5kUHJvY1NpZ25hbChwaWRfdCBwaWQsIFByb2NTaWduYWxSZWFzb24gcmVhc29uLAog CQkJCQkJICAgQmFja2VuZElkIGJhY2tlbmRJZCk7CitleHRlcm4gYm9vbAlTZW5kUHJvY1NpZ25h bEZvckxvZ0luZm8ocGlkX3QgcGlkLAorCQkJCQkJICAgUHJvY1NpZ25hbFJlYXNvbiByZWFzb24p OwogCiBleHRlcm4gdWludDY0IEVtaXRQcm9jU2lnbmFsQmFycmllcihQcm9jU2lnbmFsQmFycmll clR5cGUgdHlwZSk7CiBleHRlcm4gdm9pZCBXYWl0Rm9yUHJvY1NpZ25hbEJhcnJpZXIodWludDY0 IGdlbmVyYXRpb24pOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9taXNj X2Z1bmN0aW9ucy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL21pc2NfZnVuY3Rpb25z Lm91dAppbmRleCBlODQ1MDQyZDM4Li45ODAxN2Y4M2E5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL21pc2NfZnVuY3Rpb25zLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL21pc2NfZnVuY3Rpb25zLm91dApAQCAtMTM0LDE4ICsxMzQsMjYgQEAgTElORSAx OiBTRUxFQ1QgbnVtX251bGxzKCk7CiAgICAgICAgICAgICAgICBeCiBISU5UOiAgTm8gZnVuY3Rp b24gbWF0Y2hlcyB0aGUgZ2l2ZW4gbmFtZSBhbmQgYXJndW1lbnQgdHlwZXMuIFlvdSBtaWdodCBu ZWVkIHRvIGFkZCBleHBsaWNpdCB0eXBlIGNhc3RzLgogLS0KLS0tIHBnX2xvZ19iYWNrZW5kX21l bW9yeV9jb250ZXh0cygpCistLSBUZXN0IGxvZ2dpbmcgZnVuY3Rpb25zCiAtLQotLS0gTWVtb3J5 IGNvbnRleHRzIGFyZSBsb2dnZWQgYW5kIHRoZXkgYXJlIG5vdCByZXR1cm5lZCB0byB0aGUgZnVu Y3Rpb24uCi0tLSBGdXJ0aGVybW9yZSwgdGhlaXIgY29udGVudHMgY2FuIHZhcnkgZGVwZW5kaW5n IG9uIHRoZSB0aW1pbmcuIEhvd2V2ZXIsCistLSBUaGVzZSBmdW5jdGlvbnMgcmV0dXJuIHRydWUg aWYgdGhlIHNwZWNpZmllZCBiYWNrZW5kIGlzIHN1Y2Nlc3NmdWxseQorLS0gc2lnbmFsZWQsIG90 aGVyd2lzZSBmYWxzZS4gVXBvbiByZWNlaXZpbmcgdGhlIHNpZ25hbCwgdGhlIGJhY2tlbmQKKy0t IHdpbGwgbG9nIHRoZSBpbmZvcm1hdGlvbiB0byB0aGUgc2VydmVyIGxvZy4KKy0tIEFsdGhvdWdo IHRoZWlyIGNvbnRlbnRzIGNhbiB2YXJ5IGRlcGVuZGluZyBvbiB0aGUgdGltaW5nLAogLS0gd2Ug Y2FuIGF0IGxlYXN0IHZlcmlmeSB0aGF0IHRoZSBjb2RlIGRvZXNuJ3QgZmFpbC4KIC0tCi1TRUxF Q1QgKiBGUk9NIHBnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cyhwZ19iYWNrZW5kX3BpZCgp KTsKK1NFTEVDVCBwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMocGdfYmFja2VuZF9waWQo KSk7CiAgcGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzIAogLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KICB0CiAoMSByb3cpCiAKK1NFTEVDVCBwZ19sb2dfY3VycmVudF9xdWVy eV9wbGFuKHBnX2JhY2tlbmRfcGlkKCkpOworIHBnX2xvZ19jdXJyZW50X3F1ZXJ5X3BsYW4gCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKIC0tCiAtLSBUZXN0IHNv bWUgYnVpbHQtaW4gU1JGcwogLS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL21p c2NfZnVuY3Rpb25zLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL21pc2NfZnVuY3Rpb25zLnNx bAppbmRleCBhMzk4MzQ5YWZjLi45NzlhNDE4ZThlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9taXNjX2Z1bmN0aW9ucy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbWlz Y19mdW5jdGlvbnMuc3FsCkBAIC0yOSwxNSArMjksMTcgQEAgU0VMRUNUIG51bV9udWxscyhWQVJJ QURJQyAne30nOjppbnRbXSk7CiAtLSBzaG91bGQgZmFpbCwgb25lIG9yIG1vcmUgYXJndW1lbnRz IGlzIHJlcXVpcmVkCiBTRUxFQ1QgbnVtX25vbm51bGxzKCk7CiBTRUxFQ1QgbnVtX251bGxzKCk7 Ci0KIC0tCi0tLSBwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMoKQorLS0gVGVzdCBsb2dn aW5nIGZ1bmN0aW9ucwogLS0KLS0tIE1lbW9yeSBjb250ZXh0cyBhcmUgbG9nZ2VkIGFuZCB0aGV5 IGFyZSBub3QgcmV0dXJuZWQgdG8gdGhlIGZ1bmN0aW9uLgotLS0gRnVydGhlcm1vcmUsIHRoZWly IGNvbnRlbnRzIGNhbiB2YXJ5IGRlcGVuZGluZyBvbiB0aGUgdGltaW5nLiBIb3dldmVyLAorLS0g VGhlc2UgZnVuY3Rpb25zIHJldHVybiB0cnVlIGlmIHRoZSBzcGVjaWZpZWQgYmFja2VuZCBpcyBz dWNjZXNzZnVsbHkKKy0tIHNpZ25hbGVkLCBvdGhlcndpc2UgZmFsc2UuIFVwb24gcmVjZWl2aW5n IHRoZSBzaWduYWwsIHRoZSBiYWNrZW5kCistLSB3aWxsIGxvZyB0aGUgaW5mb3JtYXRpb24gdG8g dGhlIHNlcnZlciBsb2cuCistLSBBbHRob3VnaCB0aGVpciBjb250ZW50cyBjYW4gdmFyeSBkZXBl bmRpbmcgb24gdGhlIHRpbWluZywKIC0tIHdlIGNhbiBhdCBsZWFzdCB2ZXJpZnkgdGhhdCB0aGUg Y29kZSBkb2Vzbid0IGZhaWwuCiAtLQotU0VMRUNUICogRlJPTSBwZ19sb2dfYmFja2VuZF9tZW1v cnlfY29udGV4dHMocGdfYmFja2VuZF9waWQoKSk7CitTRUxFQ1QgcGdfbG9nX2JhY2tlbmRfbWVt b3J5X2NvbnRleHRzKHBnX2JhY2tlbmRfcGlkKCkpOworU0VMRUNUIHBnX2xvZ19jdXJyZW50X3F1 ZXJ5X3BsYW4ocGdfYmFja2VuZF9waWQoKSk7CiAKIC0tCiAtLSBUZXN0IHNvbWUgYnVpbHQtaW4g U1JGcwoKYmFzZS1jb21taXQ6IGYwZTIxZjJmNjE2NzVmNGU1NmFlNTNkMzJlYTU0ZDU4N2E3YzIy NTcKLS0gCjIuMjcuMAoK --=_3b5bb4a94cbecc85ea0e5136d64d1daa--