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 1lRTvg-00028O-Nm for pgsql-hackers@arkaria.postgresql.org; Wed, 31 Mar 2021 06:02:13 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1lRTvf-0000pp-Lf for pgsql-hackers@arkaria.postgresql.org; Wed, 31 Mar 2021 06:02:11 +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 1lRTvf-0000mQ-BR for pgsql-hackers@lists.postgresql.org; Wed, 31 Mar 2021 06:02:11 +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 1lRTvb-0006x3-N8 for pgsql-hackers@postgresql.org; Wed, 31 Mar 2021 06:02:10 +0000 Received: from oss.nttdata.com (localhost [127.0.0.1]) by oss.nttdata.com (Postfix) with ESMTP id 861D46028D; Wed, 31 Mar 2021 15:02:02 +0900 (JST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.102.3 at oss.nttdata.com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_4140ce604dae261af10f874881742d36" Date: Wed, 31 Mar 2021 15:02:02 +0900 From: torikoshia To: Fujii Masao Cc: Kyotaro Horiguchi , pgsql-hackers@postgresql.org, tgl@sss.pgh.pa.us, gkokolatos@protonmail.com, kasahara.tatsuhito@gmail.com, craig@2ndquadrant.com Subject: Re: Get memory contexts of an arbitrary backend process In-Reply-To: <1f259e90-08c8-2202-be66-f7ee05d22cd2@oss.nttdata.com> References: <20210326.131721.583838520933682740.horikyota.ntt@gmail.com> <20210326.132836.985270106396322831.horikyota.ntt@gmail.com> <20210326.140851.1169798659519899419.horikyota.ntt@gmail.com> <168dbd34-c081-b832-e795-ffcd7c5be35c@oss.nttdata.com> <1f259e90-08c8-2202-be66-f7ee05d22cd2@oss.nttdata.com> Message-ID: X-Sender: torikoshia@oss.nttdata.com User-Agent: Roundcube Webmail/1.1.9 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_4140ce604dae261af10f874881742d36 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2021-03-31 04:36, Fujii Masao wrote: > On 2021/03/30 22:06, torikoshia wrote: >> Modified the patch according to the suggestions. > > Thanks for updating the patch! > > I applied the cosmetic changes to the patch and added the example of > the function call into the document. Attached is the updated version > of the patch. Could you check this version? > Thanks a lot! +The memory contexts will be logged in the log file. For example: When 'log_destination = stderr' and 'logging_collector = off', it does not log in the file but in the stderr. Description like below would be a bit more accurate but I'm wondering it's repeating the same words. + The memory contexts will be logged based on the log configuration set. For example: How do you think? + +postgres=# SELECT pg_log_backend_memory_contexts(pg_backend_pid()); + pg_log_backend_memory_contexts +-------------------------------- + t +(1 row) + +The memory contexts will be logged in the log file. For example: +LOG: logging memory contexts of PID 10377 +STATEMENT: SELECT pg_log_backend_memory_contexts(pg_backend_pid()); +LOG: level: 0; TopMemoryContext: 80800 total in 6 blocks; 14432 free (5 chunks); 66368 used +LOG: level: 1; pgstat TabStatusArray lookup hash table: 8192 total in 1 blocks; 1408 free (0 chunks); 6784 used The line "The memory contexts will be logged in the log file. For example:" is neither nor SQL command and its outputs, it might be better to differentiate it. What about the following like attached patch? + +postgres=# SELECT pg_log_backend_memory_contexts(pg_backend_pid()); + pg_log_backend_memory_contexts +-------------------------------- + t +(1 row) + +The memory contexts will be logged in the log file. For example: + +LOG: logging memory contexts of PID 10377 +STATEMENT: SELECT pg_log_backend_memory_contexts(pg_backend_pid()); +LOG: level: 0; TopMemoryContext: 80800 total in 6 blocks; 14432 free (5 chunks); 66368 used +LOG: level: 1; pgstat TabStatusArray lookup hash table: 8192 total in 1 blocks; 1408 free (0 chunks); 6784 used ...(snip)... +LOG: level: 1; ErrorContext: 8192 total in 1 blocks; 7928 free (3 chunks); 264 used +LOG: Grand total: 1651920 bytes in 201 blocks; 622360 free (88 chunks); 1029560 used + Regards. --=_4140ce604dae261af10f874881742d36 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v8-0001-add-memorycontext-elog-print.patch Content-Disposition: attachment; filename=v8-0001-add-memorycontext-elog-print.patch; size=26850 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZnVuYy5z Z21sCmluZGV4IGZiZjYwNjJkMGEuLmNlMDFkNTFiMjEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9mdW5jLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbApAQCAtMjQ5MTcsNiArMjQ5 MTcsMjMgQEAgU0VMRUNUIGNvbGxhdGlvbiBmb3IgKCdmb28nIENPTExBVEUgImRlX0RFIik7CiAg ICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgICA8L3Jvdz4KIAorICAgICAgPHJvdz4KKyAgICAg ICA8ZW50cnkgcm9sZT0iZnVuY190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iZnVuY19zaWduYXR1 cmUiPgorICAgICAgICA8aW5kZXh0ZXJtPgorICAgICAgICAgPHByaW1hcnk+cGdfbG9nX2JhY2tl bmRfbWVtb3J5X2NvbnRleHRzPC9wcmltYXJ5PgorICAgICAgICA8L2luZGV4dGVybT4KKyAgICAg ICAgPGZ1bmN0aW9uPnBnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0czwvZnVuY3Rpb24+ICgg PHBhcmFtZXRlcj5waWQ8L3BhcmFtZXRlcj4gPHR5cGU+aW50ZWdlcjwvdHlwZT4gKQorICAgICAg ICA8cmV0dXJudmFsdWU+Ym9vbGVhbjwvcmV0dXJudmFsdWU+CisgICAgICAgPC9wYXJhPgorICAg ICAgIDxwYXJhPgorICAgICAgICBMb2dzIHRoZSBtZW1vcnkgY29udGV4dHMgd2hvc2UgYmFja2Vu ZCBwcm9jZXNzIGhhcyB0aGUgc3BlY2lmaWVkCisgICAgICAgIHByb2Nlc3MgSUQuCisgICAgICAg IE1lbW9yeSBjb250ZXh0cyB3aWxsIGJlIGxvZ2dlZCBiYXNlZCBvbiB0aGUgbG9nIGNvbmZpZ3Vy YXRpb24gc2V0LgorICAgICAgICBTZWUgPHhyZWYgbGlua2VuZD0icnVudGltZS1jb25maWctbG9n Z2luZyIvPiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgT25seSBzdXBlcnVzZXJzIGNh biBsb2cgdGhlIG1lbW9yeSBjb250ZXh0cy4KKyAgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAg IDwvcm93PgorCiAgICAgICA8cm93PgogICAgICAgIDxlbnRyeSByb2xlPSJmdW5jX3RhYmxlX2Vu dHJ5Ij48cGFyYSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+CiAgICAgICAgIDxpbmRleHRlcm0+CkBA IC0yNDk4Nyw2ICsyNTAwNCwzNiBAQCBTRUxFQ1QgY29sbGF0aW9uIGZvciAoJ2ZvbycgQ09MTEFU RSAiZGVfREUiKTsKICAgICA8c3RydWN0bmFtZT5wZ19zdGF0X2FjdGl2aXR5PC9zdHJ1Y3RuYW1l PiB2aWV3LgogICAgPC9wYXJhPgogCisgICA8cGFyYT4KKyAgICA8ZnVuY3Rpb24+cGdfbG9nX2Jh Y2tlbmRfbWVtb3J5X2NvbnRleHRzPC9mdW5jdGlvbj4gY2FuIGJlIHVzZWQKKyAgICB0byBsb2cg dGhlIG1lbW9yeSBjb250ZXh0cyBvZiB0aGUgYmFja2VuZCBwcm9jZXNzLiBGb3IgZXhhbXBsZSwK Kzxwcm9ncmFtbGlzdGluZz4KK3Bvc3RncmVzPSMgU0VMRUNUIHBnX2xvZ19iYWNrZW5kX21lbW9y eV9jb250ZXh0cyhwZ19iYWNrZW5kX3BpZCgpKTsKKyBwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29u dGV4dHMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKzwv cHJvZ3JhbWxpc3Rpbmc+CitUaGUgbWVtb3J5IGNvbnRleHRzIHdpbGwgYmUgbG9nZ2VkIGluIHRo ZSBsb2cgZmlsZS4gRm9yIGV4YW1wbGU6Cis8c2NyZWVuPgorTE9HOiAgbG9nZ2luZyBtZW1vcnkg Y29udGV4dHMgb2YgUElEIDEwMzc3CitTVEFURU1FTlQ6ICBTRUxFQ1QgcGdfbG9nX2JhY2tlbmRf bWVtb3J5X2NvbnRleHRzKHBnX2JhY2tlbmRfcGlkKCkpOworTE9HOiAgbGV2ZWw6IDA7IFRvcE1l bW9yeUNvbnRleHQ6IDgwODAwIHRvdGFsIGluIDYgYmxvY2tzOyAxNDQzMiBmcmVlICg1IGNodW5r cyk7IDY2MzY4IHVzZWQKK0xPRzogIGxldmVsOiAxOyBwZ3N0YXQgVGFiU3RhdHVzQXJyYXkgbG9v a3VwIGhhc2ggdGFibGU6IDgxOTIgdG90YWwgaW4gMSBibG9ja3M7IDE0MDggZnJlZSAoMCBjaHVu a3MpOyA2Nzg0IHVzZWQKK0xPRzogIGxldmVsOiAxOyBUb3BUcmFuc2FjdGlvbkNvbnRleHQ6IDgx OTIgdG90YWwgaW4gMSBibG9ja3M7IDc3MjAgZnJlZSAoMSBjaHVua3MpOyA0NzIgdXNlZAorTE9H OiAgbGV2ZWw6IDE7IFJvd0Rlc2NyaXB0aW9uQ29udGV4dDogODE5MiB0b3RhbCBpbiAxIGJsb2Nr czsgNjg4MCBmcmVlICgwIGNodW5rcyk7IDEzMTIgdXNlZAorTE9HOiAgbGV2ZWw6IDE7IE1lc3Nh Z2VDb250ZXh0OiAxNjM4NCB0b3RhbCBpbiAyIGJsb2NrczsgNTE1MiBmcmVlICgwIGNodW5rcyk7 IDExMjMyIHVzZWQKK0xPRzogIGxldmVsOiAxOyBPcGVyYXRvciBjbGFzcyBjYWNoZTogODE5MiB0 b3RhbCBpbiAxIGJsb2NrczsgNTEyIGZyZWUgKDAgY2h1bmtzKTsgNzY4MCB1c2VkCitMT0c6ICBs ZXZlbDogMTsgc21nciByZWxhdGlvbiB0YWJsZTogMTYzODQgdG90YWwgaW4gMiBibG9ja3M7IDQ1 NDQgZnJlZSAoMyBjaHVua3MpOyAxMTg0MCB1c2VkCitMT0c6ICBsZXZlbDogMTsgVHJhbnNhY3Rp b25BYm9ydENvbnRleHQ6IDMyNzY4IHRvdGFsIGluIDEgYmxvY2tzOyAzMjUwNCBmcmVlICgwIGNo dW5rcyk7IDI2NCB1c2VkCisuLi4KK0xPRzogIGxldmVsOiAxOyBFcnJvckNvbnRleHQ6IDgxOTIg dG90YWwgaW4gMSBibG9ja3M7IDc5MjggZnJlZSAoMyBjaHVua3MpOyAyNjQgdXNlZAorTE9HOiAg R3JhbmQgdG90YWw6IDE2NTE5MjAgYnl0ZXMgaW4gMjAxIGJsb2NrczsgNjIyMzYwIGZyZWUgKDg4 IGNodW5rcyk7IDEwMjk1NjAgdXNlZAorPC9zY3JlZW4+CisgICAgRm9yIG1vcmUgdGhhbiAxMDAg Y2hpbGQgY29udGV4dHMgdW5kZXIgdGhlIHNhbWUgcGFyZW50IG9uZSwKKyAgICAxMDAgY2hpbGQg Y29udGV4dHMgYW5kIGEgc3VtbWFyeSBvZiB0aGUgcmVtYWluaW5nIG9uZXMgd2lsbCBiZSBsb2dn ZWQuCisgICA8L3BhcmE+CisKICAgPC9zZWN0Mj4KIAogICA8c2VjdDIgaWQ9ImZ1bmN0aW9ucy1h ZG1pbi1iYWNrdXAiPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3Np Z25hbC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCmluZGV4IGM2YThk NDYxMWUuLmVhYzY4OTUxNDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3By b2NzaWduYWwuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKQEAg LTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9zaW52YWwuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCisjaW5jbHVkZSAidXRp bHMvbWVtdXRpbHMuaCIKIAogLyoKICAqIFRoZSBTSUdVU1IxIHNpZ25hbCBpcyBtdWx0aXBsZXhl ZCB0byBzdXBwb3J0IHNpZ25hbGluZyBtdWx0aXBsZSBldmVudApAQCAtNjU3LDYgKzY1OCw5IEBA IHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKFNJR05BTF9BUkdTKQogCWlmIChDaGVja1Byb2NT aWduYWwoUFJPQ1NJR19CQVJSSUVSKSkKIAkJSGFuZGxlUHJvY1NpZ25hbEJhcnJpZXJJbnRlcnJ1 cHQoKTsKIAorCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19MT0dfTUVNT1JZX0NPTlRFWFQp KQorCQlIYW5kbGVMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KCk7CisKIAlpZiAoQ2hlY2tQcm9j U2lnbmFsKFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfREFUQUJBU0UpKQogCQlSZWNvdmVyeUNv bmZsaWN0SW50ZXJydXB0KFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfREFUQUJBU0UpOwogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29w L3Bvc3RncmVzLmMKaW5kZXggMmIxYjY4MTA5Zi4uYWZhZjNiMWNjZSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMu YwpAQCAtMzI5NSw2ICszMjk1LDkgQEAgUHJvY2Vzc0ludGVycnVwdHModm9pZCkKIAogCWlmIChQ YXJhbGxlbE1lc3NhZ2VQZW5kaW5nKQogCQlIYW5kbGVQYXJhbGxlbE1lc3NhZ2VzKCk7CisKKwlp ZiAoTG9nTWVtb3J5Q29udGV4dFBlbmRpbmcpCisJCVByb2Nlc3NMb2dNZW1vcnlDb250ZXh0SW50 ZXJydXB0KCk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRm dW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5jCmluZGV4IGMwMmZhNDc1 NTAuLmZlOWI3OTc5ZTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tY3h0ZnVu Y3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbWN4dGZ1bmNzLmMKQEAgLTE4LDYgKzE4 LDggQEAKICNpbmNsdWRlICJmdW5jYXBpLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5j bHVkZSAibWIvcGdfd2NoYXIuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKKyNpbmNsdWRl ICJzdG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAKIC8q IC0tLS0tLS0tLS0KQEAgLTYxLDcgKzYzLDcgQEAgUHV0TWVtb3J5Q29udGV4dHNTdGF0c1R1cGxl U3RvcmUoVHVwbGVzdG9yZXN0YXRlICp0dXBzdG9yZSwKIAogCS8qIEV4YW1pbmUgdGhlIGNvbnRl eHQgaXRzZWxmICovCiAJbWVtc2V0KCZzdGF0LCAwLCBzaXplb2Yoc3RhdCkpOwotCSgqY29udGV4 dC0+bWV0aG9kcy0+c3RhdHMpIChjb250ZXh0LCBOVUxMLCAodm9pZCAqKSAmbGV2ZWwsICZzdGF0 KTsKKwkoKmNvbnRleHQtPm1ldGhvZHMtPnN0YXRzKSAoY29udGV4dCwgTlVMTCwgKHZvaWQgKikg JmxldmVsLCAmc3RhdCwgdHJ1ZSk7CiAKIAltZW1zZXQodmFsdWVzLCAwLCBzaXplb2YodmFsdWVz KSk7CiAJbWVtc2V0KG51bGxzLCAwLCBzaXplb2YobnVsbHMpKTsKQEAgLTE1NSwzICsxNTcsNTkg QEAgcGdfZ2V0X2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAly ZXR1cm4gKERhdHVtKSAwOwogfQorCisvKgorICogcGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRl eHRzCisgKgkJU2lnbmFsIGEgYmFja2VuZCBwcm9jZXNzIHRvIGxvZyBpdHMgbWVtb3J5IGNvbnRl eHRzLgorICoKKyAqIE9ubHkgc3VwZXJ1c2VycyBhcmUgYWxsb3dlZCB0byBzaWduYWwgdG8gbG9n IHRoZSBtZW1vcnkgY29udGV4dHMKKyAqIGJlY2F1c2UgYWxsb3dpbmcgYW55IHVzZXJzIHRvIGlz c3VlIHRoaXMgcmVxdWVzdCBhdCBhbiB1bmJvdW5kZWQKKyAqIHJhdGUgd291bGQgY2F1c2UgbG90 cyBvZiBsb2cgbWVzc2FnZXMgYW5kIHdoaWNoIGNhbiBsZWFkIHRvCisgKiBkZW5pYWwgb2Ygc2Vy dmljZS4KKyAqCisgKiBPbiByZWNlaXB0IG9mIHRoaXMgc2lnbmFsLCBhIGJhY2tlbmQgc2V0cyB0 aGUgZmxhZyBpbiB0aGUgc2lnbmFsCisgKiBoYW5kbGVyLCBhbmQgdGhlbiB3aGljaCBjYXVzZXMg dGhlIG5leHQgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKQorICogdG8gbG9nIHRoZSBtZW1vcnkgY29u dGV4dHMuCisgKi8KK0RhdHVtCitwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMoUEdfRlVO Q1RJT05fQVJHUykKK3sKKwlpbnQJCQlwaWQgPSBQR19HRVRBUkdfSU5UMzIoMCk7CisJUEdQUk9D CSAgICpwcm9jID0gQmFja2VuZFBpZEdldFByb2MocGlkKTsKKworCS8qCisJICogQmFja2VuZFBp ZEdldFByb2MgcmV0dXJucyBOVUxMIGlmIHRoZSBwaWQgaXNuJ3QgdmFsaWQ7IGJ1dCBieSB0aGUg dGltZQorCSAqIHdlIHJlYWNoIGtpbGwoKSwgYSBwcm9jZXNzIGZvciB3aGljaCB3ZSBnZXQgYSB2 YWxpZCBwcm9jIGhlcmUgbWlnaHQKKwkgKiBoYXZlIHRlcm1pbmF0ZWQgb24gaXRzIG93bi4gIFRo ZXJlJ3Mgbm8gd2F5IHRvIGFjcXVpcmUgYSBsb2NrIG9uIGFuCisJICogYXJiaXRyYXJ5IHByb2Nl c3MgdG8gcHJldmVudCB0aGF0LiBCdXQgc2luY2UgdGhpcyBtZWNoYW5pc20gaXMgdXN1YWxseQor CSAqIHVzZWQgdG8gZGVidWcgYSBiYWNrZW5kIHJ1bm5pbmcgYW5kIGNvbnN1bWluZyBsb3RzIG9m IG1lbW9yeSwgdGhhdCBpdAorCSAqIG1pZ2h0IGVuZCBvbiBpdHMgb3duIGZpcnN0IGFuZCBpdHMg bWVtb3J5IGNvbnRleHRzIGFyZSBub3QgbG9nZ2VkIGlzCisJICogbm90IGEgcHJvYmxlbS4KKwkg Ki8KKwlpZiAocHJvYyA9PSBOVUxMKQorCXsKKwkJLyoKKwkJICogVGhpcyBpcyBqdXN0IGEgd2Fy bmluZyBzbyBhIGxvb3AtdGhyb3VnaC1yZXN1bHRzZXQgd2lsbCBub3QgYWJvcnQKKwkJICogaWYg b25lIGJhY2tlbmQgbG9nZ2VkIGl0cyBtZW1vcnkgY29udGV4dHMgZHVyaW5nIHRoZSBydW4uCisJ CSAqLworCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJKGVycm1zZygiUElEICVkIGlzIG5vdCBhIFBv c3RncmVTUUwgc2VydmVyIHByb2Nlc3MiLCBwaWQpKSk7CisJCVBHX1JFVFVSTl9CT09MKGZhbHNl KTsKKwl9CisKKwkvKiBPbmx5IGFsbG93IHN1cGVydXNlcnMgdG8gbG9nIG1lbW9yeSBjb250ZXh0 cy4gKi8KKwlpZiAoIXN1cGVydXNlcigpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2Rl KEVSUkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSksCisJCQkJIGVycm1zZygibXVzdCBiZSBh IHN1cGVydXNlciB0byBsb2cgbWVtb3J5IGNvbnRleHRzIikpKTsKKworCWlmIChTZW5kUHJvY1Np Z25hbChwaWQsIFBST0NTSUdfTE9HX01FTU9SWV9DT05URVhULCBwcm9jLT5iYWNrZW5kSWQpIDwg MCkKKwl7CisJCS8qIEFnYWluLCBqdXN0IGEgd2FybmluZyB0byBhbGxvdyBsb29wcyAqLworCQll cmVwb3J0KFdBUk5JTkcsCisJCQkJKGVycm1zZygiY291bGQgbm90IHNlbmQgc2lnbmFsIHRvIHBy b2Nlc3MgJWQ6ICVtIiwgcGlkKSkpOworCQlQR19SRVRVUk5fQk9PTChmYWxzZSk7CisJfQorCisJ UEdfUkVUVVJOX0JPT0wodHJ1ZSk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9p bml0L2dsb2JhbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jCmluZGV4IDcz ZTBhNjcyYWUuLjZjMjcwNjVmOTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQv Z2xvYmFscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jCkBAIC0zNCw2 ICszNCw3IEBAIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBDbGllbnRDb25uZWN0aW9uTG9zdCA9IGZh bHNlOwogdm9sYXRpbGUgc2lnX2F0b21pY190IElkbGVJblRyYW5zYWN0aW9uU2Vzc2lvblRpbWVv dXRQZW5kaW5nID0gZmFsc2U7CiB2b2xhdGlsZSBzaWdfYXRvbWljX3QgSWRsZVNlc3Npb25UaW1l b3V0UGVuZGluZyA9IGZhbHNlOwogdm9sYXRpbGUgc2lnX2F0b21pY190IFByb2NTaWduYWxCYXJy aWVyUGVuZGluZyA9IGZhbHNlOwordm9sYXRpbGUgc2lnX2F0b21pY190IExvZ01lbW9yeUNvbnRl eHRQZW5kaW5nID0gZmFsc2U7CiB2b2xhdGlsZSB1aW50MzIgSW50ZXJydXB0SG9sZG9mZkNvdW50 ID0gMDsKIHZvbGF0aWxlIHVpbnQzMiBRdWVyeUNhbmNlbEhvbGRvZmZDb3VudCA9IDA7CiB2b2xh dGlsZSB1aW50MzIgQ3JpdFNlY3Rpb25Db3VudCA9IDA7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9tbWdyL2FzZXQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvYXNldC5jCmluZGV4 IGVjNmMxMzBkMGYuLjc3ODcyZTc3YmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21t Z3IvYXNldC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvYXNldC5jCkBAIC0yNzIsNyAr MjcyLDggQEAgc3RhdGljIFNpemUgQWxsb2NTZXRHZXRDaHVua1NwYWNlKE1lbW9yeUNvbnRleHQg Y29udGV4dCwgdm9pZCAqcG9pbnRlcik7CiBzdGF0aWMgYm9vbCBBbGxvY1NldElzRW1wdHkoTWVt b3J5Q29udGV4dCBjb250ZXh0KTsKIHN0YXRpYyB2b2lkIEFsbG9jU2V0U3RhdHMoTWVtb3J5Q29u dGV4dCBjb250ZXh0LAogCQkJCQkJICBNZW1vcnlTdGF0c1ByaW50RnVuYyBwcmludGZ1bmMsIHZv aWQgKnBhc3N0aHJ1LAotCQkJCQkJICBNZW1vcnlDb250ZXh0Q291bnRlcnMgKnRvdGFscyk7CisJ CQkJCQkgIE1lbW9yeUNvbnRleHRDb3VudGVycyAqdG90YWxzLAorCQkJCQkJICBib29sIHByaW50 X3RvX3N0ZGVycik7CiAKICNpZmRlZiBNRU1PUllfQ09OVEVYVF9DSEVDS0lORwogc3RhdGljIHZv aWQgQWxsb2NTZXRDaGVjayhNZW1vcnlDb250ZXh0IGNvbnRleHQpOwpAQCAtMTMzNiwxMSArMTMz NywxMiBAQCBBbGxvY1NldElzRW1wdHkoTWVtb3J5Q29udGV4dCBjb250ZXh0KQogICogcHJpbnRm dW5jOiBpZiBub3QgTlVMTCwgcGFzcyBhIGh1bWFuLXJlYWRhYmxlIHN0YXRzIHN0cmluZyB0byB0 aGlzLgogICogcGFzc3RocnU6IHBhc3MgdGhpcyBwb2ludGVyIHRocm91Z2ggdG8gcHJpbnRmdW5j LgogICogdG90YWxzOiBpZiBub3QgTlVMTCwgYWRkIHN0YXRzIGFib3V0IHRoaXMgY29udGV4dCBp bnRvICp0b3RhbHMuCisgKiBwcmludF90b19zdGRlcnI6IHByaW50IHN0YXRzIHRvIHN0ZGVyciBp ZiB0cnVlLCBlbG9nIG90aGVyd2lzZS4KICAqLwogc3RhdGljIHZvaWQKIEFsbG9jU2V0U3RhdHMo TWVtb3J5Q29udGV4dCBjb250ZXh0LAogCQkJICBNZW1vcnlTdGF0c1ByaW50RnVuYyBwcmludGZ1 bmMsIHZvaWQgKnBhc3N0aHJ1LAotCQkJICBNZW1vcnlDb250ZXh0Q291bnRlcnMgKnRvdGFscykK KwkJCSAgTWVtb3J5Q29udGV4dENvdW50ZXJzICp0b3RhbHMsIGJvb2wgcHJpbnRfdG9fc3RkZXJy KQogewogCUFsbG9jU2V0CXNldCA9IChBbGxvY1NldCkgY29udGV4dDsKIAlTaXplCQluYmxvY2tz ID0gMDsKQEAgLTEzNzksNyArMTM4MSw3IEBAIEFsbG9jU2V0U3RhdHMoTWVtb3J5Q29udGV4dCBj b250ZXh0LAogCQkJCSAiJXp1IHRvdGFsIGluICV6ZCBibG9ja3M7ICV6dSBmcmVlICglemQgY2h1 bmtzKTsgJXp1IHVzZWQiLAogCQkJCSB0b3RhbHNwYWNlLCBuYmxvY2tzLCBmcmVlc3BhY2UsIGZy ZWVjaHVua3MsCiAJCQkJIHRvdGFsc3BhY2UgLSBmcmVlc3BhY2UpOwotCQlwcmludGZ1bmMoY29u dGV4dCwgcGFzc3RocnUsIHN0YXRzX3N0cmluZyk7CisJCXByaW50ZnVuYyhjb250ZXh0LCBwYXNz dGhydSwgc3RhdHNfc3RyaW5nLCBwcmludF90b19zdGRlcnIpOwogCX0KIAogCWlmICh0b3RhbHMp CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL2dlbmVyYXRpb24uYyBiL3NyYy9i YWNrZW5kL3V0aWxzL21tZ3IvZ2VuZXJhdGlvbi5jCmluZGV4IDJiOTAwMzQ3NjQuLjU4NGNkNjE0 ZGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvZ2VuZXJhdGlvbi5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvZ2VuZXJhdGlvbi5jCkBAIC0xNTUsNyArMTU1LDggQEAg c3RhdGljIFNpemUgR2VuZXJhdGlvbkdldENodW5rU3BhY2UoTWVtb3J5Q29udGV4dCBjb250ZXh0 LCB2b2lkICpwb2ludGVyKTsKIHN0YXRpYyBib29sIEdlbmVyYXRpb25Jc0VtcHR5KE1lbW9yeUNv bnRleHQgY29udGV4dCk7CiBzdGF0aWMgdm9pZCBHZW5lcmF0aW9uU3RhdHMoTWVtb3J5Q29udGV4 dCBjb250ZXh0LAogCQkJCQkJCU1lbW9yeVN0YXRzUHJpbnRGdW5jIHByaW50ZnVuYywgdm9pZCAq cGFzc3RocnUsCi0JCQkJCQkJTWVtb3J5Q29udGV4dENvdW50ZXJzICp0b3RhbHMpOworCQkJCQkJ CU1lbW9yeUNvbnRleHRDb3VudGVycyAqdG90YWxzLAorCQkJCQkJCWJvb2wgcHJpbnRfdG9fc3Rk ZXJyKTsKIAogI2lmZGVmIE1FTU9SWV9DT05URVhUX0NIRUNLSU5HCiBzdGF0aWMgdm9pZCBHZW5l cmF0aW9uQ2hlY2soTWVtb3J5Q29udGV4dCBjb250ZXh0KTsKQEAgLTY2NSw2ICs2NjYsNyBAQCBH ZW5lcmF0aW9uSXNFbXB0eShNZW1vcnlDb250ZXh0IGNvbnRleHQpCiAgKiBwcmludGZ1bmM6IGlm IG5vdCBOVUxMLCBwYXNzIGEgaHVtYW4tcmVhZGFibGUgc3RhdHMgc3RyaW5nIHRvIHRoaXMuCiAg KiBwYXNzdGhydTogcGFzcyB0aGlzIHBvaW50ZXIgdGhyb3VnaCB0byBwcmludGZ1bmMuCiAgKiB0 b3RhbHM6IGlmIG5vdCBOVUxMLCBhZGQgc3RhdHMgYWJvdXQgdGhpcyBjb250ZXh0IGludG8gKnRv dGFscy4KKyAqIHByaW50X3RvX3N0ZGVycjogcHJpbnQgc3RhdHMgdG8gc3RkZXJyIGlmIHRydWUs IGVsb2cgb3RoZXJ3aXNlLgogICoKICAqIFhYWCBmcmVlc3BhY2Ugb25seSBhY2NvdW50cyBmb3Ig ZW1wdHkgc3BhY2UgYXQgdGhlIGVuZCBvZiB0aGUgYmxvY2ssIG5vdAogICogc3BhY2Ugb2YgZnJl ZWQgY2h1bmtzICh3aGljaCBpcyB1bmtub3duKS4KQEAgLTY3Miw3ICs2NzQsNyBAQCBHZW5lcmF0 aW9uSXNFbXB0eShNZW1vcnlDb250ZXh0IGNvbnRleHQpCiBzdGF0aWMgdm9pZAogR2VuZXJhdGlv blN0YXRzKE1lbW9yeUNvbnRleHQgY29udGV4dCwKIAkJCQlNZW1vcnlTdGF0c1ByaW50RnVuYyBw cmludGZ1bmMsIHZvaWQgKnBhc3N0aHJ1LAotCQkJCU1lbW9yeUNvbnRleHRDb3VudGVycyAqdG90 YWxzKQorCQkJCU1lbW9yeUNvbnRleHRDb3VudGVycyAqdG90YWxzLCBib29sIHByaW50X3RvX3N0 ZGVycikKIHsKIAlHZW5lcmF0aW9uQ29udGV4dCAqc2V0ID0gKEdlbmVyYXRpb25Db250ZXh0ICop IGNvbnRleHQ7CiAJU2l6ZQkJbmJsb2NrcyA9IDA7CkBAIC03MDQsNyArNzA2LDcgQEAgR2VuZXJh dGlvblN0YXRzKE1lbW9yeUNvbnRleHQgY29udGV4dCwKIAkJCQkgIiV6dSB0b3RhbCBpbiAlemQg YmxvY2tzICglemQgY2h1bmtzKTsgJXp1IGZyZWUgKCV6ZCBjaHVua3MpOyAlenUgdXNlZCIsCiAJ CQkJIHRvdGFsc3BhY2UsIG5ibG9ja3MsIG5jaHVua3MsIGZyZWVzcGFjZSwKIAkJCQkgbmZyZWVj aHVua3MsIHRvdGFsc3BhY2UgLSBmcmVlc3BhY2UpOwotCQlwcmludGZ1bmMoY29udGV4dCwgcGFz c3RocnUsIHN0YXRzX3N0cmluZyk7CisJCXByaW50ZnVuYyhjb250ZXh0LCBwYXNzdGhydSwgc3Rh dHNfc3RyaW5nLCBwcmludF90b19zdGRlcnIpOwogCX0KIAogCWlmICh0b3RhbHMpCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL21jeHQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21t Z3IvbWN4dC5jCmluZGV4IDg0NDcyYjkxNTguLmJkNDFmOGQzMWEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL21tZ3IvbWN4dC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvbWN4 dC5jCkBAIC0yMyw2ICsyMywxMCBAQAogCiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKICNpbmNs dWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKKyNpbmNsdWRlICJz dG9yYWdlL3Byb2NhcnJheS5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgorI2lu Y2x1ZGUgInV0aWxzL2ZtZ3Jwcm90b3MuaCIKICNpbmNsdWRlICJ1dGlscy9tZW1kZWJ1Zy5oIgog I2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAKQEAgLTU1LDkgKzU5LDExIEBAIE1lbW9yeUNv bnRleHQgUG9ydGFsQ29udGV4dCA9IE5VTEw7CiBzdGF0aWMgdm9pZCBNZW1vcnlDb250ZXh0Q2Fs bFJlc2V0Q2FsbGJhY2tzKE1lbW9yeUNvbnRleHQgY29udGV4dCk7CiBzdGF0aWMgdm9pZCBNZW1v cnlDb250ZXh0U3RhdHNJbnRlcm5hbChNZW1vcnlDb250ZXh0IGNvbnRleHQsIGludCBsZXZlbCwK IAkJCQkJCQkJCSAgIGJvb2wgcHJpbnQsIGludCBtYXhfY2hpbGRyZW4sCi0JCQkJCQkJCQkgICBN ZW1vcnlDb250ZXh0Q291bnRlcnMgKnRvdGFscyk7CisJCQkJCQkJCQkgICBNZW1vcnlDb250ZXh0 Q291bnRlcnMgKnRvdGFscywKKwkJCQkJCQkJCSAgIGJvb2wgcHJpbnRfdG9fc3RkZXJyKTsKIHN0 YXRpYyB2b2lkIE1lbW9yeUNvbnRleHRTdGF0c1ByaW50KE1lbW9yeUNvbnRleHQgY29udGV4dCwg dm9pZCAqcGFzc3RocnUsCi0JCQkJCQkJCQljb25zdCBjaGFyICpzdGF0c19zdHJpbmcpOworCQkJ CQkJCQkJY29uc3QgY2hhciAqc3RhdHNfc3RyaW5nLAorCQkJCQkJCQkJYm9vbCBwcmludF90b19z dGRlcnIpOwogCiAvKgogICogWW91IHNob3VsZCBub3QgZG8gbWVtb3J5IGFsbG9jYXRpb25zIHdp dGhpbiBhIGNyaXRpY2FsIHNlY3Rpb24sIGJlY2F1c2UKQEAgLTQ5OSw3ICs1MDUsNyBAQCB2b2lk CiBNZW1vcnlDb250ZXh0U3RhdHMoTWVtb3J5Q29udGV4dCBjb250ZXh0KQogewogCS8qIEEgaGFy ZC13aXJlZCBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuIGlzIHVzdWFsbHkgZ29vZCBl bm91Z2ggKi8KLQlNZW1vcnlDb250ZXh0U3RhdHNEZXRhaWwoY29udGV4dCwgMTAwKTsKKwlNZW1v cnlDb250ZXh0U3RhdHNEZXRhaWwoY29udGV4dCwgMTAwLCB0cnVlKTsKIH0KIAogLyoKQEAgLTUw OCwxOSArNTE0LDM0IEBAIE1lbW9yeUNvbnRleHRTdGF0cyhNZW1vcnlDb250ZXh0IGNvbnRleHQp CiAgKiBFbnRyeSBwb2ludCBmb3IgdXNlIGlmIHlvdSB3YW50IHRvIHZhcnkgdGhlIG51bWJlciBv ZiBjaGlsZCBjb250ZXh0cyBzaG93bi4KICAqLwogdm9pZAotTWVtb3J5Q29udGV4dFN0YXRzRGV0 YWlsKE1lbW9yeUNvbnRleHQgY29udGV4dCwgaW50IG1heF9jaGlsZHJlbikKK01lbW9yeUNvbnRl eHRTdGF0c0RldGFpbChNZW1vcnlDb250ZXh0IGNvbnRleHQsIGludCBtYXhfY2hpbGRyZW4sCisJ CQkJCQkgYm9vbCBwcmludF90b19zdGRlcnIpCiB7CiAJTWVtb3J5Q29udGV4dENvdW50ZXJzIGdy YW5kX3RvdGFsczsKIAogCW1lbXNldCgmZ3JhbmRfdG90YWxzLCAwLCBzaXplb2YoZ3JhbmRfdG90 YWxzKSk7CiAKLQlNZW1vcnlDb250ZXh0U3RhdHNJbnRlcm5hbChjb250ZXh0LCAwLCB0cnVlLCBt YXhfY2hpbGRyZW4sICZncmFuZF90b3RhbHMpOworCU1lbW9yeUNvbnRleHRTdGF0c0ludGVybmFs KGNvbnRleHQsIDAsIHRydWUsIG1heF9jaGlsZHJlbiwgJmdyYW5kX3RvdGFscywgcHJpbnRfdG9f c3RkZXJyKTsKIAotCWZwcmludGYoc3RkZXJyLAotCQkJIkdyYW5kIHRvdGFsOiAlenUgYnl0ZXMg aW4gJXpkIGJsb2NrczsgJXp1IGZyZWUgKCV6ZCBjaHVua3MpOyAlenUgdXNlZFxuIiwKLQkJCWdy YW5kX3RvdGFscy50b3RhbHNwYWNlLCBncmFuZF90b3RhbHMubmJsb2NrcywKLQkJCWdyYW5kX3Rv dGFscy5mcmVlc3BhY2UsIGdyYW5kX3RvdGFscy5mcmVlY2h1bmtzLAotCQkJZ3JhbmRfdG90YWxz LnRvdGFsc3BhY2UgLSBncmFuZF90b3RhbHMuZnJlZXNwYWNlKTsKKwlpZiAocHJpbnRfdG9fc3Rk ZXJyKQorCQlmcHJpbnRmKHN0ZGVyciwKKwkJCQkiR3JhbmQgdG90YWw6ICV6dSBieXRlcyBpbiAl emQgYmxvY2tzOyAlenUgZnJlZSAoJXpkIGNodW5rcyk7ICV6dSB1c2VkXG4iLAorCQkJCWdyYW5k X3RvdGFscy50b3RhbHNwYWNlLCBncmFuZF90b3RhbHMubmJsb2NrcywKKwkJCQlncmFuZF90b3Rh bHMuZnJlZXNwYWNlLCBncmFuZF90b3RhbHMuZnJlZWNodW5rcywKKwkJCQlncmFuZF90b3RhbHMu dG90YWxzcGFjZSAtIGdyYW5kX3RvdGFscy5mcmVlc3BhY2UpOworCWVsc2UKKworCQkvKgorCQkg KiBVc2UgTE9HX1NFUlZFUl9PTkxZIHRvIHByZXZlbnQgdGhlIG1lbW9yeSBjb250ZXh0cyBmcm9t IGJlaW5nIHNlbnQKKwkJICogdG8gdGhlIGNvbm5lY3RlZCBjbGllbnQuCisJCSAqLworCQllcmVw b3J0KExPR19TRVJWRVJfT05MWSwKKwkJCQkoZXJyaGlkZXN0bXQodHJ1ZSksCisJCQkJIGVycmhp ZGVjb250ZXh0KHRydWUpLAorCQkJCSBlcnJtc2dfaW50ZXJuYWwoIkdyYW5kIHRvdGFsOiAlenUg Ynl0ZXMgaW4gJXpkIGJsb2NrczsgJXp1IGZyZWUgKCV6ZCBjaHVua3MpOyAlenUgdXNlZCIsCisJ CQkJCQkJCSBncmFuZF90b3RhbHMudG90YWxzcGFjZSwgZ3JhbmRfdG90YWxzLm5ibG9ja3MsCisJ CQkJCQkJCSBncmFuZF90b3RhbHMuZnJlZXNwYWNlLCBncmFuZF90b3RhbHMuZnJlZWNodW5rcywK KwkJCQkJCQkJIGdyYW5kX3RvdGFscy50b3RhbHNwYWNlIC0gZ3JhbmRfdG90YWxzLmZyZWVzcGFj ZSkpKTsKIH0KIAogLyoKQEAgLTUzMyw3ICs1NTQsOCBAQCBNZW1vcnlDb250ZXh0U3RhdHNEZXRh aWwoTWVtb3J5Q29udGV4dCBjb250ZXh0LCBpbnQgbWF4X2NoaWxkcmVuKQogc3RhdGljIHZvaWQK IE1lbW9yeUNvbnRleHRTdGF0c0ludGVybmFsKE1lbW9yeUNvbnRleHQgY29udGV4dCwgaW50IGxl dmVsLAogCQkJCQkJICAgYm9vbCBwcmludCwgaW50IG1heF9jaGlsZHJlbiwKLQkJCQkJCSAgIE1l bW9yeUNvbnRleHRDb3VudGVycyAqdG90YWxzKQorCQkJCQkJICAgTWVtb3J5Q29udGV4dENvdW50 ZXJzICp0b3RhbHMsCisJCQkJCQkgICBib29sIHByaW50X3RvX3N0ZGVycikKIHsKIAlNZW1vcnlD b250ZXh0Q291bnRlcnMgbG9jYWxfdG90YWxzOwogCU1lbW9yeUNvbnRleHQgY2hpbGQ7CkBAIC01 NDUsNyArNTY3LDcgQEAgTWVtb3J5Q29udGV4dFN0YXRzSW50ZXJuYWwoTWVtb3J5Q29udGV4dCBj b250ZXh0LCBpbnQgbGV2ZWwsCiAJY29udGV4dC0+bWV0aG9kcy0+c3RhdHMoY29udGV4dCwKIAkJ CQkJCQlwcmludCA/IE1lbW9yeUNvbnRleHRTdGF0c1ByaW50IDogTlVMTCwKIAkJCQkJCQkodm9p ZCAqKSAmbGV2ZWwsCi0JCQkJCQkJdG90YWxzKTsKKwkJCQkJCQl0b3RhbHMsIHByaW50X3RvX3N0 ZGVycik7CiAKIAkvKgogCSAqIEV4YW1pbmUgY2hpbGRyZW4uICBJZiB0aGVyZSBhcmUgbW9yZSB0 aGFuIG1heF9jaGlsZHJlbiBvZiB0aGVtLCB3ZSBkbwpAQCAtNTYwLDExICs1ODIsMTMgQEAgTWVt b3J5Q29udGV4dFN0YXRzSW50ZXJuYWwoTWVtb3J5Q29udGV4dCBjb250ZXh0LCBpbnQgbGV2ZWws CiAJCWlmIChpY2hpbGQgPCBtYXhfY2hpbGRyZW4pCiAJCQlNZW1vcnlDb250ZXh0U3RhdHNJbnRl cm5hbChjaGlsZCwgbGV2ZWwgKyAxLAogCQkJCQkJCQkJICAgcHJpbnQsIG1heF9jaGlsZHJlbiwK LQkJCQkJCQkJCSAgIHRvdGFscyk7CisJCQkJCQkJCQkgICB0b3RhbHMsCisJCQkJCQkJCQkgICBw cmludF90b19zdGRlcnIpOwogCQllbHNlCiAJCQlNZW1vcnlDb250ZXh0U3RhdHNJbnRlcm5hbChj aGlsZCwgbGV2ZWwgKyAxLAogCQkJCQkJCQkJICAgZmFsc2UsIG1heF9jaGlsZHJlbiwKLQkJCQkJ CQkJCSAgICZsb2NhbF90b3RhbHMpOworCQkJCQkJCQkJICAgJmxvY2FsX3RvdGFscywKKwkJCQkJ CQkJCSAgIHByaW50X3RvX3N0ZGVycik7CiAJfQogCiAJLyogRGVhbCB3aXRoIGV4Y2VzcyBjaGls ZHJlbiAqLwpAQCAtNTcyLDE4ICs1OTYsMzMgQEAgTWVtb3J5Q29udGV4dFN0YXRzSW50ZXJuYWwo TWVtb3J5Q29udGV4dCBjb250ZXh0LCBpbnQgbGV2ZWwsCiAJewogCQlpZiAocHJpbnQpCiAJCXsK LQkJCWludAkJCWk7Ci0KLQkJCWZvciAoaSA9IDA7IGkgPD0gbGV2ZWw7IGkrKykKLQkJCQlmcHJp bnRmKHN0ZGVyciwgIiAgIik7Ci0JCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJIiVkIG1vcmUgY2hp bGQgY29udGV4dHMgY29udGFpbmluZyAlenUgdG90YWwgaW4gJXpkIGJsb2NrczsgJXp1IGZyZWUg KCV6ZCBjaHVua3MpOyAlenUgdXNlZFxuIiwKLQkJCQkJaWNoaWxkIC0gbWF4X2NoaWxkcmVuLAot CQkJCQlsb2NhbF90b3RhbHMudG90YWxzcGFjZSwKLQkJCQkJbG9jYWxfdG90YWxzLm5ibG9ja3Ms Ci0JCQkJCWxvY2FsX3RvdGFscy5mcmVlc3BhY2UsCi0JCQkJCWxvY2FsX3RvdGFscy5mcmVlY2h1 bmtzLAotCQkJCQlsb2NhbF90b3RhbHMudG90YWxzcGFjZSAtIGxvY2FsX3RvdGFscy5mcmVlc3Bh Y2UpOworCQkJaWYgKHByaW50X3RvX3N0ZGVycikKKwkJCXsKKwkJCQlpbnQJCQlpOworCisJCQkJ Zm9yIChpID0gMDsgaSA8PSBsZXZlbDsgaSsrKQorCQkJCQlmcHJpbnRmKHN0ZGVyciwgIiAgIik7 CisJCQkJZnByaW50ZihzdGRlcnIsCisJCQkJCQkiJWQgbW9yZSBjaGlsZCBjb250ZXh0cyBjb250 YWluaW5nICV6dSB0b3RhbCBpbiAlemQgYmxvY2tzOyAlenUgZnJlZSAoJXpkIGNodW5rcyk7ICV6 dSB1c2VkXG4iLAorCQkJCQkJaWNoaWxkIC0gbWF4X2NoaWxkcmVuLAorCQkJCQkJbG9jYWxfdG90 YWxzLnRvdGFsc3BhY2UsCisJCQkJCQlsb2NhbF90b3RhbHMubmJsb2NrcywKKwkJCQkJCWxvY2Fs X3RvdGFscy5mcmVlc3BhY2UsCisJCQkJCQlsb2NhbF90b3RhbHMuZnJlZWNodW5rcywKKwkJCQkJ CWxvY2FsX3RvdGFscy50b3RhbHNwYWNlIC0gbG9jYWxfdG90YWxzLmZyZWVzcGFjZSk7CisJCQl9 CisJCQllbHNlCisJCQkJZXJlcG9ydChMT0dfU0VSVkVSX09OTFksCisJCQkJCQkoZXJyaGlkZXN0 bXQodHJ1ZSksCisJCQkJCQkgZXJyaGlkZWNvbnRleHQodHJ1ZSksCisJCQkJCQkgZXJybXNnX2lu dGVybmFsKCJsZXZlbDogJWQ7ICVkIG1vcmUgY2hpbGQgY29udGV4dHMgY29udGFpbmluZyAlenUg dG90YWwgaW4gJXpkIGJsb2NrczsgJXp1IGZyZWUgKCV6ZCBjaHVua3MpOyAlenUgdXNlZCIsCisJ CQkJCQkJCQkJIGxldmVsLAorCQkJCQkJCQkJCSBpY2hpbGQgLSBtYXhfY2hpbGRyZW4sCisJCQkJ CQkJCQkJIGxvY2FsX3RvdGFscy50b3RhbHNwYWNlLAorCQkJCQkJCQkJCSBsb2NhbF90b3RhbHMu bmJsb2NrcywKKwkJCQkJCQkJCQkgbG9jYWxfdG90YWxzLmZyZWVzcGFjZSwKKwkJCQkJCQkJCQkg bG9jYWxfdG90YWxzLmZyZWVjaHVua3MsCisJCQkJCQkJCQkJIGxvY2FsX3RvdGFscy50b3RhbHNw YWNlIC0gbG9jYWxfdG90YWxzLmZyZWVzcGFjZSkpKTsKIAkJfQogCiAJCWlmICh0b3RhbHMpCkBA IC02MDUsMTEgKzY0NCwxMyBAQCBNZW1vcnlDb250ZXh0U3RhdHNJbnRlcm5hbChNZW1vcnlDb250 ZXh0IGNvbnRleHQsIGludCBsZXZlbCwKICAqLwogc3RhdGljIHZvaWQKIE1lbW9yeUNvbnRleHRT dGF0c1ByaW50KE1lbW9yeUNvbnRleHQgY29udGV4dCwgdm9pZCAqcGFzc3RocnUsCi0JCQkJCQlj b25zdCBjaGFyICpzdGF0c19zdHJpbmcpCisJCQkJCQljb25zdCBjaGFyICpzdGF0c19zdHJpbmcs CisJCQkJCQlib29sIHByaW50X3RvX3N0ZGVycikKIHsKIAlpbnQJCQlsZXZlbCA9ICooaW50ICop IHBhc3N0aHJ1OwogCWNvbnN0IGNoYXIgKm5hbWUgPSBjb250ZXh0LT5uYW1lOwogCWNvbnN0IGNo YXIgKmlkZW50ID0gY29udGV4dC0+aWRlbnQ7CisJY2hhcgkJdHJ1bmNhdGVkX2lkZW50WzExMF07 CiAJaW50CQkJaTsKIAogCS8qCkBAIC02MjMsOSArNjY0LDggQEAgTWVtb3J5Q29udGV4dFN0YXRz UHJpbnQoTWVtb3J5Q29udGV4dCBjb250ZXh0LCB2b2lkICpwYXNzdGhydSwKIAkJaWRlbnQgPSBO VUxMOwogCX0KIAotCWZvciAoaSA9IDA7IGkgPCBsZXZlbDsgaSsrKQotCQlmcHJpbnRmKHN0ZGVy ciwgIiAgIik7Ci0JZnByaW50ZihzdGRlcnIsICIlczogJXMiLCBuYW1lLCBzdGF0c19zdHJpbmcp OworCXRydW5jYXRlZF9pZGVudFswXSA9ICdcMCc7CisKIAlpZiAoaWRlbnQpCiAJewogCQkvKgpA QCAtNjM3LDI0ICs2NzcsNDEgQEAgTWVtb3J5Q29udGV4dFN0YXRzUHJpbnQoTWVtb3J5Q29udGV4 dCBjb250ZXh0LCB2b2lkICpwYXNzdGhydSwKIAkJaW50CQkJaWRsZW4gPSBzdHJsZW4oaWRlbnQp OwogCQlib29sCQl0cnVuY2F0ZWQgPSBmYWxzZTsKIAorCQlzdHJjcHkodHJ1bmNhdGVkX2lkZW50 LCAiOiAiKTsKKwkJaSA9IHN0cmxlbih0cnVuY2F0ZWRfaWRlbnQpOworCiAJCWlmIChpZGxlbiA+ IDEwMCkKIAkJewogCQkJaWRsZW4gPSBwZ19tYmNsaXBsZW4oaWRlbnQsIGlkbGVuLCAxMDApOwog CQkJdHJ1bmNhdGVkID0gdHJ1ZTsKIAkJfQotCQlmcHJpbnRmKHN0ZGVyciwgIjogIik7CisKIAkJ d2hpbGUgKGlkbGVuLS0gPiAwKQogCQl7CiAJCQl1bnNpZ25lZCBjaGFyIGMgPSAqaWRlbnQrKzsK IAogCQkJaWYgKGMgPCAnICcpCiAJCQkJYyA9ICcgJzsKLQkJCWZwdXRjKGMsIHN0ZGVycik7CisJ CQl0cnVuY2F0ZWRfaWRlbnRbaSsrXSA9IGM7CiAJCX0KKwkJdHJ1bmNhdGVkX2lkZW50W2ldID0g J1wwJzsKKwogCQlpZiAodHJ1bmNhdGVkKQotCQkJZnByaW50ZihzdGRlcnIsICIuLi4iKTsKKwkJ CXN0cmNhdCh0cnVuY2F0ZWRfaWRlbnQsICIuLi4iKTsKIAl9Ci0JZnB1dGMoJ1xuJywgc3RkZXJy KTsKKworCWlmIChwcmludF90b19zdGRlcnIpCisJeworCQlmb3IgKGkgPSAwOyBpIDwgbGV2ZWw7 IGkrKykKKwkJCWZwcmludGYoc3RkZXJyLCAiICAiKTsKKwkJZnByaW50ZihzdGRlcnIsICIlczog JXMlc1xuIiwgbmFtZSwgc3RhdHNfc3RyaW5nLCB0cnVuY2F0ZWRfaWRlbnQpOworCX0KKwllbHNl CisJCWVyZXBvcnQoTE9HX1NFUlZFUl9PTkxZLAorCQkJCShlcnJoaWRlc3RtdCh0cnVlKSwKKwkJ CQkgZXJyaGlkZWNvbnRleHQodHJ1ZSksCisJCQkJIGVycm1zZ19pbnRlcm5hbCgibGV2ZWw6ICVk OyAlczogJXMlcyIsCisJCQkJCQkJCSBsZXZlbCwgbmFtZSwgc3RhdHNfc3RyaW5nLCB0cnVuY2F0 ZWRfaWRlbnQpKSk7CiB9CiAKIC8qCkBAIC05NDYsNiArMTAwMyw1MiBAQCBNZW1vcnlDb250ZXh0 QWxsb2NFeHRlbmRlZChNZW1vcnlDb250ZXh0IGNvbnRleHQsIFNpemUgc2l6ZSwgaW50IGZsYWdz KQogCXJldHVybiByZXQ7CiB9CiAKKy8qCisgKiBIYW5kbGVMb2dNZW1vcnlDb250ZXh0SW50ZXJy dXB0CisgKgkJSGFuZGxlIHJlY2VpcHQgb2YgYW4gaW50ZXJydXB0IGluZGljYXRpbmcgbG9nZ2lu ZyBvZiBtZW1vcnkKKyAqCQljb250ZXh0cy4KKyAqCisgKiBBbGwgdGhlIGFjdHVhbCB3b3JrIGlz IGRlZmVycmVkIHRvIFByb2Nlc3NMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KCksCisgKiBiZWNh dXNlIHdlIGNhbm5vdCBzYWZlbHkgZW1pdCBhIGxvZyBtZXNzYWdlIGluc2lkZSB0aGUgc2lnbmFs IGhhbmRsZXIuCisgKi8KK3ZvaWQKK0hhbmRsZUxvZ01lbW9yeUNvbnRleHRJbnRlcnJ1cHQodm9p ZCkKK3sKKwlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKKwlMb2dNZW1vcnlDb250ZXh0UGVuZGlu ZyA9IHRydWU7CisJLyogbGF0Y2ggd2lsbCBiZSBzZXQgYnkgcHJvY3NpZ25hbF9zaWd1c3IxX2hh bmRsZXIgKi8KK30KKworLyoKKyAqIFByb2Nlc3NMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0Cisg KiAJCVBlcmZvcm0gbG9nZ2luZyBvZiBtZW1vcnkgY29udGV4dHMgb2YgdGhpcyBiYWNrZW5kIHBy b2Nlc3MuCisgKgorICogQW55IGJhY2tlbmQgdGhhdCBwYXJ0aWNpcGF0ZXMgaW4gUHJvY1NpZ25h bCBzaWduYWxpbmcgbXVzdCBhcnJhbmdlCisgKiB0byBjYWxsIHRoaXMgZnVuY3Rpb24gaWYgd2Ug c2VlIExvZ01lbW9yeUNvbnRleHRQZW5kaW5nIHNldC4KKyAqIEl0IGlzIGNhbGxlZCBmcm9tIENI RUNLX0ZPUl9JTlRFUlJVUFRTKCksIHdoaWNoIGlzIGVub3VnaCBiZWNhdXNlCisgKiB0aGUgdGFy Z2V0IHByb2Nlc3MgZm9yIGxvZ2dpbmcgb2YgbWVtb3J5IGNvbnRleHRzIGlzIGEgYmFja2VuZC4K KyAqLwordm9pZAorUHJvY2Vzc0xvZ01lbW9yeUNvbnRleHRJbnRlcnJ1cHQodm9pZCkKK3sKKwlM b2dNZW1vcnlDb250ZXh0UGVuZGluZyA9IGZhbHNlOworCisJZXJlcG9ydChMT0csCisJCQkoZXJy bXNnKCJsb2dnaW5nIG1lbW9yeSBjb250ZXh0cyBvZiBQSUQgJWQiLCBNeVByb2NQaWQpKSk7CisK KwkvKgorCSAqIFdoZW4gYSBiYWNrZW5kIHByb2Nlc3MgaXMgY29uc3VtaW5nIGh1Z2UgbWVtb3J5 LCBsb2dnaW5nIGFsbCBpdHMgbWVtb3J5CisJICogY29udGV4dHMgbWlnaHQgb3ZlcnJ1biBhdmFp bGFibGUgZGlzayBzcGFjZS4gVG8gcHJldmVudCB0aGlzLCB3ZSBsaW1pdAorCSAqIHRoZSBudW1i ZXIgb2YgY2hpbGQgY29udGV4dHMgdG8gbG9nIHBlciBwYXJlbnQgdG8gMTAwLgorCSAqCisJICog QXMgd2l0aCBNZW1vcnlDb250ZXh0U3RhdHMoKSwgd2Ugc3VwcG9zZSB0aGF0IHByYWN0aWNhbCBj YXNlcyB3aGVyZSB0aGUKKwkgKiBkdW1wIGdldHMgbG9uZyB3aWxsIHR5cGljYWxseSBiZSBodWdl IG51bWJlcnMgb2Ygc2libGluZ3MgdW5kZXIgdGhlCisJICogc2FtZSBwYXJlbnQgY29udGV4dDsg d2hpbGUgdGhlIGFkZGl0aW9uYWwgZGVidWdnaW5nIHZhbHVlIGZyb20gc2VlaW5nCisJICogZGV0 YWlscyBhYm91dCBpbmRpdmlkdWFsIHNpYmxpbmdzIGJleW9uZCAxMDAgd2lsbCBub3QgYmUgbGFy Z2UuCisJICovCisJTWVtb3J5Q29udGV4dFN0YXRzRGV0YWlsKFRvcE1lbW9yeUNvbnRleHQsIDEw MCwgZmFsc2UpOworfQorCiB2b2lkICoKIHBhbGxvYyhTaXplIHNpemUpCiB7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3NsYWIuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3Iv c2xhYi5jCmluZGV4IDkyMTNiZTdjOTUuLjU1M2RkN2Y2NjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL21tZ3Ivc2xhYi5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3Ivc2xhYi5j CkBAIC0xMzUsNyArMTM1LDggQEAgc3RhdGljIFNpemUgU2xhYkdldENodW5rU3BhY2UoTWVtb3J5 Q29udGV4dCBjb250ZXh0LCB2b2lkICpwb2ludGVyKTsKIHN0YXRpYyBib29sIFNsYWJJc0VtcHR5 KE1lbW9yeUNvbnRleHQgY29udGV4dCk7CiBzdGF0aWMgdm9pZCBTbGFiU3RhdHMoTWVtb3J5Q29u dGV4dCBjb250ZXh0LAogCQkJCQkgIE1lbW9yeVN0YXRzUHJpbnRGdW5jIHByaW50ZnVuYywgdm9p ZCAqcGFzc3RocnUsCi0JCQkJCSAgTWVtb3J5Q29udGV4dENvdW50ZXJzICp0b3RhbHMpOworCQkJ CQkgIE1lbW9yeUNvbnRleHRDb3VudGVycyAqdG90YWxzLAorCQkJCQkgIGJvb2wgcHJpbnRfdG9f c3RkZXJyKTsKICNpZmRlZiBNRU1PUllfQ09OVEVYVF9DSEVDS0lORwogc3RhdGljIHZvaWQgU2xh YkNoZWNrKE1lbW9yeUNvbnRleHQgY29udGV4dCk7CiAjZW5kaWYKQEAgLTYzMiwxMSArNjMzLDEz IEBAIFNsYWJJc0VtcHR5KE1lbW9yeUNvbnRleHQgY29udGV4dCkKICAqIHByaW50ZnVuYzogaWYg bm90IE5VTEwsIHBhc3MgYSBodW1hbi1yZWFkYWJsZSBzdGF0cyBzdHJpbmcgdG8gdGhpcy4KICAq IHBhc3N0aHJ1OiBwYXNzIHRoaXMgcG9pbnRlciB0aHJvdWdoIHRvIHByaW50ZnVuYy4KICAqIHRv dGFsczogaWYgbm90IE5VTEwsIGFkZCBzdGF0cyBhYm91dCB0aGlzIGNvbnRleHQgaW50byAqdG90 YWxzLgorICogcHJpbnRfdG9fc3RkZXJyOiBwcmludCBzdGF0cyB0byBzdGRlcnIgaWYgdHJ1ZSwg ZWxvZyBvdGhlcndpc2UuCiAgKi8KIHN0YXRpYyB2b2lkCiBTbGFiU3RhdHMoTWVtb3J5Q29udGV4 dCBjb250ZXh0LAogCQkgIE1lbW9yeVN0YXRzUHJpbnRGdW5jIHByaW50ZnVuYywgdm9pZCAqcGFz c3RocnUsCi0JCSAgTWVtb3J5Q29udGV4dENvdW50ZXJzICp0b3RhbHMpCisJCSAgTWVtb3J5Q29u dGV4dENvdW50ZXJzICp0b3RhbHMsCisJCSAgYm9vbCBwcmludF90b19zdGRlcnIpCiB7CiAJU2xh YkNvbnRleHQgKnNsYWIgPSBjYXN0Tm9kZShTbGFiQ29udGV4dCwgY29udGV4dCk7CiAJU2l6ZQkJ bmJsb2NrcyA9IDA7CkBAIC02NzEsNyArNjc0LDcgQEAgU2xhYlN0YXRzKE1lbW9yeUNvbnRleHQg Y29udGV4dCwKIAkJCQkgIiV6dSB0b3RhbCBpbiAlemQgYmxvY2tzOyAlenUgZnJlZSAoJXpkIGNo dW5rcyk7ICV6dSB1c2VkIiwKIAkJCQkgdG90YWxzcGFjZSwgbmJsb2NrcywgZnJlZXNwYWNlLCBm cmVlY2h1bmtzLAogCQkJCSB0b3RhbHNwYWNlIC0gZnJlZXNwYWNlKTsKLQkJcHJpbnRmdW5jKGNv bnRleHQsIHBhc3N0aHJ1LCBzdGF0c19zdHJpbmcpOworCQlwcmludGZ1bmMoY29udGV4dCwgcGFz c3RocnUsIHN0YXRzX3N0cmluZywgcHJpbnRfdG9fc3RkZXJyKTsKIAl9CiAKIAlpZiAodG90YWxz KQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggYmZiODllMDU3NS4uODA0OTU4NzcwNyAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC03OTQ2LDYgKzc5NDYsMTIgQEAKICAgcHJvYXJnbmFt ZXMgPT4gJ3tuYW1lLCBpZGVudCwgcGFyZW50LCBsZXZlbCwgdG90YWxfYnl0ZXMsIHRvdGFsX25i bG9ja3MsIGZyZWVfYnl0ZXMsIGZyZWVfY2h1bmtzLCB1c2VkX2J5dGVzfScsCiAgIHByb3NyYyA9 PiAncGdfZ2V0X2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzJyB9LAogCisjIGxvZyBtZW1vcnkgY29u dGV4dHMgb2YgdGhlIHNwZWNpZmllZCBiYWNrZW5kCit7IG9pZCA9PiAnNDU0MycsIGRlc2NyID0+ ICdsb2cgbWVtb3J5IGNvbnRleHRzIG9mIHRoZSBzcGVjaWZpZWQgYmFja2VuZCcsCisgIHByb25h bWUgPT4gJ3BnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cycsCisgIHByb3ZvbGF0aWxlID0+ ICd2JywgcHJvcmV0dHlwZSA9PiAnYm9vbCcsCisgIHByb2FyZ3R5cGVzID0+ICdpbnQ0JywgcHJv c3JjID0+ICdwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMnIH0sCisKICMgbm9uLXBlcnNp c3RlbnQgc2VyaWVzIGdlbmVyYXRvcgogeyBvaWQgPT4gJzEwNjYnLCBkZXNjciA9PiAnbm9uLXBl cnNpc3RlbnQgc2VyaWVzIGdlbmVyYXRvcicsCiAgIHByb25hbWUgPT4gJ2dlbmVyYXRlX3Nlcmll cycsIHByb3Jvd3MgPT4gJzEwMDAnLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbWlzY2FkbWlu LmggYi9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAppbmRleCAwMTM4NTBhYzI4Li4wODE4MjI4MjNj IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAorKysgYi9zcmMvaW5jbHVkZS9t aXNjYWRtaW4uaApAQCAtODQsNiArODQsNyBAQCBleHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUg c2lnX2F0b21pY190IFByb2NEaWVQZW5kaW5nOwogZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxl IHNpZ19hdG9taWNfdCBJZGxlSW5UcmFuc2FjdGlvblNlc3Npb25UaW1lb3V0UGVuZGluZzsKIGV4 dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgSWRsZVNlc3Npb25UaW1lb3V0 UGVuZGluZzsKIGV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgUHJvY1Np Z25hbEJhcnJpZXJQZW5kaW5nOworZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9t aWNfdCBMb2dNZW1vcnlDb250ZXh0UGVuZGluZzsKIAogZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0 aWxlIHNpZ19hdG9taWNfdCBDbGllbnRDb25uZWN0aW9uTG9zdDsKIApkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvbm9kZXMvbWVtbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL21lbW5vZGVzLmgK aW5kZXggOTMzMWVmODBmZC4uZTZhNzU3ZDZhMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9k ZXMvbWVtbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9tZW1ub2Rlcy5oCkBAIC01Miw3 ICs1Miw4IEBAIHR5cGVkZWYgc3RydWN0IE1lbW9yeUNvbnRleHRDb3VudGVycwogICovCiAKIHR5 cGVkZWYgdm9pZCAoKk1lbW9yeVN0YXRzUHJpbnRGdW5jKSAoTWVtb3J5Q29udGV4dCBjb250ZXh0 LCB2b2lkICpwYXNzdGhydSwKLQkJCQkJCQkJCSAgY29uc3QgY2hhciAqc3RhdHNfc3RyaW5nKTsK KwkJCQkJCQkJCSAgY29uc3QgY2hhciAqc3RhdHNfc3RyaW5nLAorCQkJCQkJCQkJICBib29sIHBy aW50X3RvX3N0ZGVycik7CiAKIHR5cGVkZWYgc3RydWN0IE1lbW9yeUNvbnRleHRNZXRob2RzCiB7 CkBAIC02Niw3ICs2Nyw4IEBAIHR5cGVkZWYgc3RydWN0IE1lbW9yeUNvbnRleHRNZXRob2RzCiAJ Ym9vbAkJKCppc19lbXB0eSkgKE1lbW9yeUNvbnRleHQgY29udGV4dCk7CiAJdm9pZAkJKCpzdGF0 cykgKE1lbW9yeUNvbnRleHQgY29udGV4dCwKIAkJCQkJCSAgTWVtb3J5U3RhdHNQcmludEZ1bmMg cHJpbnRmdW5jLCB2b2lkICpwYXNzdGhydSwKLQkJCQkJCSAgTWVtb3J5Q29udGV4dENvdW50ZXJz ICp0b3RhbHMpOworCQkJCQkJICBNZW1vcnlDb250ZXh0Q291bnRlcnMgKnRvdGFscywKKwkJCQkJ CSAgYm9vbCBwcmludF90b19zdGRlcnIpOwogI2lmZGVmIE1FTU9SWV9DT05URVhUX0NIRUNLSU5H CiAJdm9pZAkJKCpjaGVjaykgKE1lbW9yeUNvbnRleHQgY29udGV4dCk7CiAjZW5kaWYKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oIGIvc3JjL2luY2x1ZGUvc3Rv cmFnZS9wcm9jc2lnbmFsLmgKaW5kZXggNGFlN2RjMzNiOC4uZWVjMTg2YmUyZSAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvc3Rv cmFnZS9wcm9jc2lnbmFsLmgKQEAgLTM0LDYgKzM0LDcgQEAgdHlwZWRlZiBlbnVtCiAJUFJPQ1NJ R19QQVJBTExFTF9NRVNTQUdFLAkvKiBtZXNzYWdlIGZyb20gY29vcGVyYXRpbmcgcGFyYWxsZWwg YmFja2VuZCAqLwogCVBST0NTSUdfV0FMU05EX0lOSVRfU1RPUFBJTkcsCS8qIGFzayB3YWxzZW5k ZXJzIHRvIHByZXBhcmUgZm9yIHNodXRkb3duICAqLwogCVBST0NTSUdfQkFSUklFUiwJCQkvKiBn bG9iYWwgYmFycmllciBpbnRlcnJ1cHQgICovCisJUFJPQ1NJR19MT0dfTUVNT1JZX0NPTlRFWFQs IC8qIGFzayBiYWNrZW5kIHRvIGxvZyB0aGUgbWVtb3J5IGNvbnRleHRzICovCiAKIAkvKiBSZWNv dmVyeSBjb25mbGljdCByZWFzb25zICovCiAJUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9EQVRB QkFTRSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL21lbXV0aWxzLmggYi9zcmMvaW5j bHVkZS91dGlscy9tZW11dGlscy5oCmluZGV4IDM2YWFlNGU1MWMuLmZmODcyMjc0ZDQgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL21lbXV0aWxzLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRp bHMvbWVtdXRpbHMuaApAQCAtODQsNyArODQsOCBAQCBleHRlcm4gTWVtb3J5Q29udGV4dCBNZW1v cnlDb250ZXh0R2V0UGFyZW50KE1lbW9yeUNvbnRleHQgY29udGV4dCk7CiBleHRlcm4gYm9vbCBN ZW1vcnlDb250ZXh0SXNFbXB0eShNZW1vcnlDb250ZXh0IGNvbnRleHQpOwogZXh0ZXJuIFNpemUg TWVtb3J5Q29udGV4dE1lbUFsbG9jYXRlZChNZW1vcnlDb250ZXh0IGNvbnRleHQsIGJvb2wgcmVj dXJzZSk7CiBleHRlcm4gdm9pZCBNZW1vcnlDb250ZXh0U3RhdHMoTWVtb3J5Q29udGV4dCBjb250 ZXh0KTsKLWV4dGVybiB2b2lkIE1lbW9yeUNvbnRleHRTdGF0c0RldGFpbChNZW1vcnlDb250ZXh0 IGNvbnRleHQsIGludCBtYXhfY2hpbGRyZW4pOworZXh0ZXJuIHZvaWQgTWVtb3J5Q29udGV4dFN0 YXRzRGV0YWlsKE1lbW9yeUNvbnRleHQgY29udGV4dCwgaW50IG1heF9jaGlsZHJlbiwKKwkJCQkJ CQkJCSBib29sIHByaW50X3RvX3N0ZGVycik7CiBleHRlcm4gdm9pZCBNZW1vcnlDb250ZXh0QWxs b3dJbkNyaXRpY2FsU2VjdGlvbihNZW1vcnlDb250ZXh0IGNvbnRleHQsCiAJCQkJCQkJCQkJCQli b29sIGFsbG93KTsKIApAQCAtMTQ0LDYgKzE0NSw4IEBAIGV4dGVybiB2b2lkIE1lbW9yeUNvbnRl eHRDcmVhdGUoTWVtb3J5Q29udGV4dCBub2RlLAogCQkJCQkJCQlNZW1vcnlDb250ZXh0IHBhcmVu dCwKIAkJCQkJCQkJY29uc3QgY2hhciAqbmFtZSk7CiAKK2V4dGVybiB2b2lkIEhhbmRsZUxvZ01l bW9yeUNvbnRleHRJbnRlcnJ1cHQodm9pZCk7CitleHRlcm4gdm9pZCBQcm9jZXNzTG9nTWVtb3J5 Q29udGV4dEludGVycnVwdCh2b2lkKTsKIAogLyoKICAqIE1lbW9yeS1jb250ZXh0LXR5cGUtc3Bl Y2lmaWMgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL21p c2NfZnVuY3Rpb25zLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbWlzY19mdW5jdGlv bnMub3V0CmluZGV4IGQzYWNiOThkMDQuLmU4NDUwNDJkMzggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvbWlzY19mdW5jdGlvbnMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvbWlzY19mdW5jdGlvbnMub3V0CkBAIC0xMzMsNiArMTMzLDE5IEBAIEVSUk9S OiAgZnVuY3Rpb24gbnVtX251bGxzKCkgZG9lcyBub3QgZXhpc3QKIExJTkUgMTogU0VMRUNUIG51 bV9udWxscygpOwogICAgICAgICAgICAgICAgXgogSElOVDogIE5vIGZ1bmN0aW9uIG1hdGNoZXMg dGhlIGdpdmVuIG5hbWUgYW5kIGFyZ3VtZW50IHR5cGVzLiBZb3UgbWlnaHQgbmVlZCB0byBhZGQg ZXhwbGljaXQgdHlwZSBjYXN0cy4KKy0tCistLSBwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4 dHMoKQorLS0KKy0tIE1lbW9yeSBjb250ZXh0cyBhcmUgbG9nZ2VkIGFuZCB0aGV5IGFyZSBub3Qg cmV0dXJuZWQgdG8gdGhlIGZ1bmN0aW9uLgorLS0gRnVydGhlcm1vcmUsIHRoZWlyIGNvbnRlbnRz IGNhbiB2YXJ5IGRlcGVuZGluZyBvbiB0aGUgdGltaW5nLiBIb3dldmVyLAorLS0gd2UgY2FuIGF0 IGxlYXN0IHZlcmlmeSB0aGF0IHRoZSBjb2RlIGRvZXNuJ3QgZmFpbC4KKy0tCitTRUxFQ1QgKiBG Uk9NIHBnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cyhwZ19iYWNrZW5kX3BpZCgpKTsKKyBw Z19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIHQKKygxIHJvdykKKwogLS0KIC0tIFRlc3Qgc29tZSBidWlsdC1pbiBTUkZzCiAt LQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbWlzY19mdW5jdGlvbnMuc3FsIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvbWlzY19mdW5jdGlvbnMuc3FsCmluZGV4IDA5NGU4ZjgyOTYu LmEzOTgzNDlhZmMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL21pc2NfZnVuY3Rp b25zLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9taXNjX2Z1bmN0aW9ucy5zcWwKQEAg LTMwLDYgKzMwLDE1IEBAIFNFTEVDVCBudW1fbnVsbHMoVkFSSUFESUMgJ3t9Jzo6aW50W10pOwog U0VMRUNUIG51bV9ub25udWxscygpOwogU0VMRUNUIG51bV9udWxscygpOwogCistLQorLS0gcGdf bG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKCkKKy0tCistLSBNZW1vcnkgY29udGV4dHMgYXJl IGxvZ2dlZCBhbmQgdGhleSBhcmUgbm90IHJldHVybmVkIHRvIHRoZSBmdW5jdGlvbi4KKy0tIEZ1 cnRoZXJtb3JlLCB0aGVpciBjb250ZW50cyBjYW4gdmFyeSBkZXBlbmRpbmcgb24gdGhlIHRpbWlu Zy4gSG93ZXZlciwKKy0tIHdlIGNhbiBhdCBsZWFzdCB2ZXJpZnkgdGhhdCB0aGUgY29kZSBkb2Vz bid0IGZhaWwuCistLQorU0VMRUNUICogRlJPTSBwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4 dHMocGdfYmFja2VuZF9waWQoKSk7CisKIC0tCiAtLSBUZXN0IHNvbWUgYnVpbHQtaW4gU1JGcwog LS0K --=_4140ce604dae261af10f874881742d36--