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 1lQi7g-0000c7-Jo for pgsql-hackers@arkaria.postgresql.org; Mon, 29 Mar 2021 02:59:24 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1lQi7f-0005bG-HQ for pgsql-hackers@arkaria.postgresql.org; Mon, 29 Mar 2021 02:59:23 +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 1lQi7f-0005b8-7y for pgsql-hackers@lists.postgresql.org; Mon, 29 Mar 2021 02:59:23 +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 1lQi7a-0005WS-Ma for pgsql-hackers@postgresql.org; Mon, 29 Mar 2021 02:59:22 +0000 Received: from oss.nttdata.com (localhost [127.0.0.1]) by oss.nttdata.com (Postfix) with ESMTP id 3CE5C625FE; Mon, 29 Mar 2021 11:59:13 +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="=_ba2b8304e87651aa3da8226616a5836e" Date: Mon, 29 Mar 2021 11:59:13 +0900 From: torikoshia To: masao.fujii@oss.nttdata.com, Kyotaro Horiguchi Cc: 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: <20210326.140851.1169798659519899419.horikyota.ntt@gmail.com> References: <20210326.131721.583838520933682740.horikyota.ntt@gmail.com> <20210326.132836.985270106396322831.horikyota.ntt@gmail.com> <20210326.140851.1169798659519899419.horikyota.ntt@gmail.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 --=_ba2b8304e87651aa3da8226616a5836e Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2021-03-26 14:08, Kyotaro Horiguchi wrote: > At Fri, 26 Mar 2021 14:02:49 +0900, Fujii Masao > wrote in >> >> >> On 2021/03/26 13:28, Kyotaro Horiguchi wrote: >> >> "some contexts are omitted" >> >> "n child contexts: total_bytes = ..." >> > Sorry I missed that is already implemented. So my opnion is I agree >> > with limiting with a fixed-number, and preferablly sorted in >> > descending order of... totalspace/nblocks? >> >> This may be an improvement, but makes us modify >> MemoryContextStatsInternal() >> very much. I'm afraid that it's too late to do that at this stage... >> What about leaving the output order as it is at the first version? > > So I said "preferably":p (with a misspelling...) > I'm fine with that. > > regards. Thanks for the comments! Attached a new patch. It adds pg_log_backend_memory_contexts(pid) which logs memory contexts of the specified backend process. The number of child contexts to be logged per parent is limited to 100 as with MemoryContextStats(). As written in commit 7b5ef8f2d07, which limits the verbosity of memory context statistics dumps, it supposes that practical cases where the dump gets long will typically be huge numbers of siblings under the same parent context; while the additional debugging value from seeing details about individual siblings beyond 100 will not be large. Thoughts? Regards. --=_ba2b8304e87651aa3da8226616a5836e Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v5-0001-add-memorycontext-elog-print.patch Content-Disposition: attachment; filename=v5-0001-add-memorycontext-elog-print.patch; size=25190 RnJvbSBlNWFiNTUzYzFlNWI3ZmE1M2M1MWUwZTRmYTQ0NzJiZGFlY2VkNGUxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtvc2hpYUBvc3MubnR0 ZGF0YS5jb20+CkRhdGU6IE1vbiwgMjkgTWFyIDIwMjEgMDk6MzA6MjMgKzA5MDAKU3ViamVjdDog W1BBVENIXSBBZnRlciBjb21taXQgM2U5OGMwYmFmYjI4ZGUsIHdlIGNhbiBkaXNwbGF5IHRoZSB1 c2FnZSBvZgogbWVtb3J5IGNvbnRleHRzIHVzaW5nIHBnX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRz IHN5c3RlbSB2aWV3LiBIb3dldmVyLCBpdHMKIHRhcmdldCBwcm9jZXNzIGlzIGxpbWl0ZWQgdG8g dGhlIGJhY2tlbmQgd2hpY2ggaXMgc2hvd2luZyB0aGUgdmlldy4gVGhpcwogcGF0Y2ggaW50cm9k dWNlcyBwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMocGlkKSB3aGljaCBsb2dzIG1lbW9y eQogY29udGV4dHMgb2YgdGhlIHNwZWNpZmllZCBiYWNrZW5kIHByb2Nlc3MuCgpDdXJyZW50bHkg dGhlIG51bWJlciBvZiBjaGlsZCBjb250ZXh0cyB0byBiZSBsb2dnZWQgcGVyIHBhcmVudAppcyBs aW1pdGVkIHRvIDEwMC4KQXMgd2l0aCBNZW1vcnlDb250ZXh0U3RhdHMoKSwgaXQgc3VwcG9zZXMg dGhhdCBwcmFjdGljYWwgY2FzZXMKd2hlcmUgdGhlIGR1bXAgZ2V0cyBsb25nIHdpbGwgdHlwaWNh bGx5IGJlIGh1Z2UgbnVtYmVycyBvZgpzaWJsaW5ncyB1bmRlciB0aGUgc2FtZSBwYXJlbnQgY29u dGV4dDsgd2hpbGUgdGhlIGFkZGl0aW9uYWwKZGVidWdnaW5nIHZhbHVlIGZyb20gc2VlaW5nIGRl dGFpbHMgYWJvdXQgaW5kaXZpZHVhbCBzaWJsaW5ncwpiZXlvbmQgMTAwIHdpbGwgbm90IGJlIGxh cmdlLgotLS0KIGRvYy9zcmMvc2dtbC9mdW5jLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICB8 ICAyMCArKysKIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYyAgICAgICAgICB8 ICAzNyArKysrCiBzcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgICAgICAg fCAgIDMgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5jICAgICAgICAgICAgIHwg ICAyICstCiBzcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYyAgICAgICAgICAgICAgfCAg IDEgKwogc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9hc2V0LmMgICAgICAgICAgICAgICAgIHwgICA4 ICstCiBzcmMvYmFja2VuZC91dGlscy9tbWdyL2dlbmVyYXRpb24uYyAgICAgICAgICAgfCAgIDgg Ky0KIHNyYy9iYWNrZW5kL3V0aWxzL21tZ3IvbWN4dC5jICAgICAgICAgICAgICAgICB8IDE2NCAr KysrKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL21tZ3Ivc2xhYi5jICAgICAgICAg ICAgICAgICB8ICAgOSArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAg ICAgICAgIHwgICA2ICsKIHNyYy9pbmNsdWRlL21pc2NhZG1pbi5oICAgICAgICAgICAgICAgICAg ICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9tZW1ub2Rlcy5oICAgICAgICAgICAgICAg ICAgfCAgIDYgKy0KIHNyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oICAgICAgICAgICAg ICB8ICAgMyArCiBzcmMvaW5jbHVkZS91dGlscy9tZW11dGlscy5oICAgICAgICAgICAgICAgICAg fCAgIDMgKy0KIC4uLi90LzAwMl9sb2dfbWVtb3J5X2NvbnRleHRfdmFsaWRhdGlvbi5wbCAgICB8 ICAzMSArKysrCiAxNSBmaWxlcyBjaGFuZ2VkLCAyNTcgaW5zZXJ0aW9ucygrKSwgNDUgZGVsZXRp b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvdC8w MDJfbG9nX21lbW9yeV9jb250ZXh0X3ZhbGlkYXRpb24ucGwKCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvZnVuYy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbAppbmRleCAxOTI4NWFlMTM2 Li43YTgwNjA3MzY2IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sCisrKyBiL2Rv Yy9zcmMvc2dtbC9mdW5jLnNnbWwKQEAgLTI0ODcxLDYgKzI0ODcxLDI2IEBAIFNFTEVDVCBjb2xs YXRpb24gZm9yICgnZm9vJyBDT0xMQVRFICJkZV9ERSIpOwogICAgICAgIDwvcGFyYT48L2VudHJ5 PgogICAgICAgPC9yb3c+CiAKKyAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5IHJvbGU9ImZ1bmNf dGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KKyAgICAgICAgPGluZGV4 dGVybT4KKyAgICAgICAgIDxwcmltYXJ5PnBnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0czwv cHJpbWFyeT4KKyAgICAgICAgPC9pbmRleHRlcm0+CisgICAgICAgIDxmdW5jdGlvbj5wZ19sb2df YmFja2VuZF9tZW1vcnlfY29udGV4dHM8L2Z1bmN0aW9uPiAoIDxwYXJhbWV0ZXI+cGlkPC9wYXJh bWV0ZXI+IDx0eXBlPmludGVnZXI8L3R5cGU+ICkKKyAgICAgICAgPHJldHVybnZhbHVlPmJvb2xl YW48L3JldHVybnZhbHVlPgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAg TG9nIHRoZSBtZW1vcnkgY29udGV4dHMgd2hvc2UgYmFja2VuZCBwcm9jZXNzIGhhcyB0aGUgc3Bl Y2lmaWVkCisgICAgICAgIHByb2Nlc3MgSUQuCisgICAgICAgIE1lbW9yeSBjb250ZXh0cyB3aWxs IGJlIHByaW50ZWQgYmFzZWQgb24gdGhlIGxvZyBjb25maWd1cmF0aW9uIHNldC4KKyAgICAgICAg U2VlIDx4cmVmIGxpbmtlbmQ9InJ1bnRpbWUtY29uZmlnLWxvZ2dpbmciLz4gZm9yIG1vcmUgaW5m b3JtYXRpb24uCisgICAgICAgIFRoZSBudW1iZXIgb2YgY2hpbGQgY29udGV4dHMgcGVyIHBhcmVu dCBpcyBsaW1pdGVkIHRvIDEwMC4KKyAgICAgICAgRm9yIGNvbnRleHRzIHdpdGggbW9yZSB0aGFu IDEwMCBjaGlsZHJlbiwgc3VtbWFyeSB3aWxsIGJlIHNob3duLgorICAgICAgICBPbmx5IHN1cGVy dXNlcnMgY2FuIGxvZyB0aGUgbWVtb3J5IGNvbnRleHRzIGV2ZW4gd2hlbiB0aGUgc3BlY2lmaWVk CisgICAgICAgIHByb2Nlc3MgaXMgbm9uLXN1cGVydXNlciBiYWNrZW5kLgorICAgICAgIDwvcGFy YT48L2VudHJ5PgorICAgICAgPC9yb3c+CisKICAgICAgIDxyb3c+CiAgICAgICAgPGVudHJ5IHJv bGU9ImZ1bmNfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KICAgICAg ICAgPGluZGV4dGVybT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2Nz aWduYWwuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwppbmRleCBjNmE4 ZDQ2MTFlLi41NTBhYTJmZmVhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9w cm9jc2lnbmFsLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCkBA IC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgogI2luY2x1ZGUgInN0 b3JhZ2Uvc2ludmFsLmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgorI2luY2x1ZGUgInV0 aWxzL21lbXV0aWxzLmgiCiAKIC8qCiAgKiBUaGUgU0lHVVNSMSBzaWduYWwgaXMgbXVsdGlwbGV4 ZWQgdG8gc3VwcG9ydCBzaWduYWxpbmcgbXVsdGlwbGUgZXZlbnQKQEAgLTQ0MCw2ICs0NDEsMjAg QEAgSGFuZGxlUHJvY1NpZ25hbEJhcnJpZXJJbnRlcnJ1cHQodm9pZCkKIAkvKiBsYXRjaCB3aWxs IGJlIHNldCBieSBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlciAqLwogfQogCisvKgorICogSGFu ZGxlUHJvY1NpZ25hbExvZ01lbW9yeUNvbnRleHQKKyAqCisgKiBIYW5kbGUgcmVjZWlwdCBvZiBh biBpbnRlcnJ1cHQgaW5kaWNhdGluZyBsb2cgbWVtb3J5IGNvbnRleHQuCisgKiBTaWduYWwgaGFu ZGxlciBwb3J0aW9uIG9mIGludGVycnVwdCBoYW5kbGluZy4KKyAqLworc3RhdGljIHZvaWQKK0hh bmRsZVByb2NTaWduYWxMb2dNZW1vcnlDb250ZXh0KHZvaWQpCit7CisJSW50ZXJydXB0UGVuZGlu ZyA9IHRydWU7CisJTG9nTWVtb3J5Q29udGV4dFBlbmRpbmcgPSB0cnVlOworCS8qIGxhdGNoIHdp bGwgYmUgc2V0IGJ5IHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyICovCit9CisKIC8qCiAgKiBQ ZXJmb3JtIGdsb2JhbCBiYXJyaWVyIHJlbGF0ZWQgaW50ZXJydXB0IGNoZWNraW5nLgogICoKQEAg LTU4MCw2ICs1OTUsMjUgQEAgUHJvY2Vzc1Byb2NTaWduYWxCYXJyaWVyKHZvaWQpCiAJQ29uZGl0 aW9uVmFyaWFibGVCcm9hZGNhc3QoJk15UHJvY1NpZ25hbFNsb3QtPnBzc19iYXJyaWVyQ1YpOwog fQogCisvKgorICogUHJvY2Vzc0xvZ01lbW9yeUNvbnRleHRJbnRlcnJ1cHQKKyAqCisgKiBUaGUg cG9ydGlvbiBvZiBsb2dnaW5nIG1lbW9yeSBjb250ZXh0IGludGVycnVwdCBoYW5kbGluZyB0aGF0 IHJ1bnMKKyAqIG91dHNpZGUgb2YgdGhlIHNpZ25hbCBoYW5kbGVyLgorICovCit2b2lkCitQcm9j ZXNzTG9nTWVtb3J5Q29udGV4dEludGVycnVwdCh2b2lkKQoreworCUxvZ01lbW9yeUNvbnRleHRQ ZW5kaW5nID0gZmFsc2U7CisKKwllcmVwb3J0KExPRywKKwkJKGVycm1zZygiTG9nZ2luZyBtZW1v cnkgY29udGV4dHMgb2YgUElEICVkIiwgTXlQcm9jUGlkKSkpOworCisJLyogQSBoYXJkLXdpcmVk IGxpbWl0IG9uIHRoZSBudW1iZXIgb2YgY2hpbGRyZW4gaXMgdXN1YWxseSBnb29kIGVub3VnaCAq LworCU1lbW9yeUNvbnRleHRTdGF0c0RldGFpbChUb3BNZW1vcnlDb250ZXh0LCAxMDAsIGZhbHNl KTsKK30KKworCiAvKgogICogSWYgaXQgdHVybnMgb3V0IHRoYXQgd2UgY291bGRuJ3QgYWJzb3Ji IG9uZSBvciBtb3JlIGJhcnJpZXIgdHlwZXMsIGVpdGhlcgogICogYmVjYXVzZSB0aGUgYmFycmll ci1wcm9jZXNzaW5nIGZ1bmN0aW9ucyByZXR1cm5lZCBmYWxzZSBvciBkdWUgdG8gYW4gZXJyb3Is CkBAIC02NTQsNiArNjg4LDkgQEAgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIoU0lHTkFMX0FS R1MpCiAJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX1dBTFNORF9JTklUX1NUT1BQSU5HKSkK IAkJSGFuZGxlV2FsU25kSW5pdFN0b3BwaW5nKCk7CiAKKwlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBS T0NTSUdfTE9HX01FTU9SWV9DT05URVhUKSkKKwkJSGFuZGxlUHJvY1NpZ25hbExvZ01lbW9yeUNv bnRleHQoKTsKKwogCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19CQVJSSUVSKSkKIAkJSGFu ZGxlUHJvY1NpZ25hbEJhcnJpZXJJbnRlcnJ1cHQoKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4IDJi MWI2ODEwOWYuLmFmYWYzYjFjY2UgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdy ZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTMyOTUsNiArMzI5NSw5 IEBAIFByb2Nlc3NJbnRlcnJ1cHRzKHZvaWQpCiAKIAlpZiAoUGFyYWxsZWxNZXNzYWdlUGVuZGlu ZykKIAkJSGFuZGxlUGFyYWxsZWxNZXNzYWdlcygpOworCisJaWYgKExvZ01lbW9yeUNvbnRleHRQ ZW5kaW5nKQorCQlQcm9jZXNzTG9nTWVtb3J5Q29udGV4dEludGVycnVwdCgpOwogfQogCiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tY3h0ZnVuY3MuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9tY3h0ZnVuY3MuYwppbmRleCBjMDJmYTQ3NTUwLi4wN2E5NWRkMTE1IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbWN4dGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L21jeHRmdW5jcy5jCkBAIC02MSw3ICs2MSw3IEBAIFB1dE1lbW9yeUNvbnRl eHRzU3RhdHNUdXBsZVN0b3JlKFR1cGxlc3RvcmVzdGF0ZSAqdHVwc3RvcmUsCiAKIAkvKiBFeGFt aW5lIHRoZSBjb250ZXh0IGl0c2VsZiAqLwogCW1lbXNldCgmc3RhdCwgMCwgc2l6ZW9mKHN0YXQp KTsKLQkoKmNvbnRleHQtPm1ldGhvZHMtPnN0YXRzKSAoY29udGV4dCwgTlVMTCwgKHZvaWQgKikg JmxldmVsLCAmc3RhdCk7CisJKCpjb250ZXh0LT5tZXRob2RzLT5zdGF0cykgKGNvbnRleHQsIE5V TEwsICh2b2lkICopICZsZXZlbCwgJnN0YXQsIHRydWUpOwogCiAJbWVtc2V0KHZhbHVlcywgMCwg c2l6ZW9mKHZhbHVlcykpOwogCW1lbXNldChudWxscywgMCwgc2l6ZW9mKG51bGxzKSk7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2luaXQvZ2xvYmFscy5jCmluZGV4IDczZTBhNjcyYWUuLjZjMjcwNjVmOTYgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2luaXQvZ2xvYmFscy5jCkBAIC0zNCw2ICszNCw3IEBAIHZvbGF0aWxlIHNpZ19hdG9taWNf dCBDbGllbnRDb25uZWN0aW9uTG9zdCA9IGZhbHNlOwogdm9sYXRpbGUgc2lnX2F0b21pY190IElk bGVJblRyYW5zYWN0aW9uU2Vzc2lvblRpbWVvdXRQZW5kaW5nID0gZmFsc2U7CiB2b2xhdGlsZSBz aWdfYXRvbWljX3QgSWRsZVNlc3Npb25UaW1lb3V0UGVuZGluZyA9IGZhbHNlOwogdm9sYXRpbGUg c2lnX2F0b21pY190IFByb2NTaWduYWxCYXJyaWVyUGVuZGluZyA9IGZhbHNlOwordm9sYXRpbGUg c2lnX2F0b21pY190IExvZ01lbW9yeUNvbnRleHRQZW5kaW5nID0gZmFsc2U7CiB2b2xhdGlsZSB1 aW50MzIgSW50ZXJydXB0SG9sZG9mZkNvdW50ID0gMDsKIHZvbGF0aWxlIHVpbnQzMiBRdWVyeUNh bmNlbEhvbGRvZmZDb3VudCA9IDA7CiB2b2xhdGlsZSB1aW50MzIgQ3JpdFNlY3Rpb25Db3VudCA9 IDA7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL2FzZXQuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL21tZ3IvYXNldC5jCmluZGV4IGVjNmMxMzBkMGYuLjk4MGMwOTI1NTggMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvYXNldC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL21tZ3IvYXNldC5jCkBAIC0yNzIsNyArMjcyLDggQEAgc3RhdGljIFNpemUgQWxsb2NTZXRH ZXRDaHVua1NwYWNlKE1lbW9yeUNvbnRleHQgY29udGV4dCwgdm9pZCAqcG9pbnRlcik7CiBzdGF0 aWMgYm9vbCBBbGxvY1NldElzRW1wdHkoTWVtb3J5Q29udGV4dCBjb250ZXh0KTsKIHN0YXRpYyB2 b2lkIEFsbG9jU2V0U3RhdHMoTWVtb3J5Q29udGV4dCBjb250ZXh0LAogCQkJCQkJICBNZW1vcnlT dGF0c1ByaW50RnVuYyBwcmludGZ1bmMsIHZvaWQgKnBhc3N0aHJ1LAotCQkJCQkJICBNZW1vcnlD b250ZXh0Q291bnRlcnMgKnRvdGFscyk7CisJCQkJCQkgIE1lbW9yeUNvbnRleHRDb3VudGVycyAq dG90YWxzLAorCQkJCQkJICBib29sIGlzX2RzdF9zdGRlcnIpOwogCiAjaWZkZWYgTUVNT1JZX0NP TlRFWFRfQ0hFQ0tJTkcKIHN0YXRpYyB2b2lkIEFsbG9jU2V0Q2hlY2soTWVtb3J5Q29udGV4dCBj b250ZXh0KTsKQEAgLTEzMzYsMTEgKzEzMzcsMTIgQEAgQWxsb2NTZXRJc0VtcHR5KE1lbW9yeUNv bnRleHQgY29udGV4dCkKICAqIHByaW50ZnVuYzogaWYgbm90IE5VTEwsIHBhc3MgYSBodW1hbi1y ZWFkYWJsZSBzdGF0cyBzdHJpbmcgdG8gdGhpcy4KICAqIHBhc3N0aHJ1OiBwYXNzIHRoaXMgcG9p bnRlciB0aHJvdWdoIHRvIHByaW50ZnVuYy4KICAqIHRvdGFsczogaWYgbm90IE5VTEwsIGFkZCBz dGF0cyBhYm91dCB0aGlzIGNvbnRleHQgaW50byAqdG90YWxzLgorICogaXNfZHN0X3N0ZGVycjog aXMgdGhlIG91dHB1dCBpcyBzdGRlcnIgb3IgZWxvZy4KICAqLwogc3RhdGljIHZvaWQKIEFsbG9j U2V0U3RhdHMoTWVtb3J5Q29udGV4dCBjb250ZXh0LAogCQkJICBNZW1vcnlTdGF0c1ByaW50RnVu YyBwcmludGZ1bmMsIHZvaWQgKnBhc3N0aHJ1LAotCQkJICBNZW1vcnlDb250ZXh0Q291bnRlcnMg KnRvdGFscykKKwkJCSAgTWVtb3J5Q29udGV4dENvdW50ZXJzICp0b3RhbHMsIGJvb2wgaXNfZHN0 X3N0ZGVycikKIHsKIAlBbGxvY1NldAlzZXQgPSAoQWxsb2NTZXQpIGNvbnRleHQ7CiAJU2l6ZQkJ bmJsb2NrcyA9IDA7CkBAIC0xMzc5LDcgKzEzODEsNyBAQCBBbGxvY1NldFN0YXRzKE1lbW9yeUNv bnRleHQgY29udGV4dCwKIAkJCQkgIiV6dSB0b3RhbCBpbiAlemQgYmxvY2tzOyAlenUgZnJlZSAo JXpkIGNodW5rcyk7ICV6dSB1c2VkIiwKIAkJCQkgdG90YWxzcGFjZSwgbmJsb2NrcywgZnJlZXNw YWNlLCBmcmVlY2h1bmtzLAogCQkJCSB0b3RhbHNwYWNlIC0gZnJlZXNwYWNlKTsKLQkJcHJpbnRm dW5jKGNvbnRleHQsIHBhc3N0aHJ1LCBzdGF0c19zdHJpbmcpOworCQlwcmludGZ1bmMoY29udGV4 dCwgcGFzc3RocnUsIHN0YXRzX3N0cmluZywgaXNfZHN0X3N0ZGVycik7CiAJfQogCiAJaWYgKHRv dGFscykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvZ2VuZXJhdGlvbi5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvbW1nci9nZW5lcmF0aW9uLmMKaW5kZXggMmI5MDAzNDc2NC4uYjI4 NjMwOGFhNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9nZW5lcmF0aW9uLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9nZW5lcmF0aW9uLmMKQEAgLTE1NSw3ICsxNTUs OCBAQCBzdGF0aWMgU2l6ZSBHZW5lcmF0aW9uR2V0Q2h1bmtTcGFjZShNZW1vcnlDb250ZXh0IGNv bnRleHQsIHZvaWQgKnBvaW50ZXIpOwogc3RhdGljIGJvb2wgR2VuZXJhdGlvbklzRW1wdHkoTWVt b3J5Q29udGV4dCBjb250ZXh0KTsKIHN0YXRpYyB2b2lkIEdlbmVyYXRpb25TdGF0cyhNZW1vcnlD b250ZXh0IGNvbnRleHQsCiAJCQkJCQkJTWVtb3J5U3RhdHNQcmludEZ1bmMgcHJpbnRmdW5jLCB2 b2lkICpwYXNzdGhydSwKLQkJCQkJCQlNZW1vcnlDb250ZXh0Q291bnRlcnMgKnRvdGFscyk7CisJ CQkJCQkJTWVtb3J5Q29udGV4dENvdW50ZXJzICp0b3RhbHMsCisJCQkJCQkJYm9vbCBpc19kc3Rf c3RkZXJyKTsKIAogI2lmZGVmIE1FTU9SWV9DT05URVhUX0NIRUNLSU5HCiBzdGF0aWMgdm9pZCBH ZW5lcmF0aW9uQ2hlY2soTWVtb3J5Q29udGV4dCBjb250ZXh0KTsKQEAgLTY2NSw2ICs2NjYsNyBA QCBHZW5lcmF0aW9uSXNFbXB0eShNZW1vcnlDb250ZXh0IGNvbnRleHQpCiAgKiBwcmludGZ1bmM6 IGlmIG5vdCBOVUxMLCBwYXNzIGEgaHVtYW4tcmVhZGFibGUgc3RhdHMgc3RyaW5nIHRvIHRoaXMu CiAgKiBwYXNzdGhydTogcGFzcyB0aGlzIHBvaW50ZXIgdGhyb3VnaCB0byBwcmludGZ1bmMuCiAg KiB0b3RhbHM6IGlmIG5vdCBOVUxMLCBhZGQgc3RhdHMgYWJvdXQgdGhpcyBjb250ZXh0IGludG8g KnRvdGFscy4KKyAqIGlzX2RzdF9zdGRlcnI6IGlzIHRoZSBvdXRwdXQgc2hvdWxkIGJlIHN0ZGVy ciBvciBlbG9nLgogICoKICAqIFhYWCBmcmVlc3BhY2Ugb25seSBhY2NvdW50cyBmb3IgZW1wdHkg c3BhY2UgYXQgdGhlIGVuZCBvZiB0aGUgYmxvY2ssIG5vdAogICogc3BhY2Ugb2YgZnJlZWQgY2h1 bmtzICh3aGljaCBpcyB1bmtub3duKS4KQEAgLTY3Miw3ICs2NzQsNyBAQCBHZW5lcmF0aW9uSXNF bXB0eShNZW1vcnlDb250ZXh0IGNvbnRleHQpCiBzdGF0aWMgdm9pZAogR2VuZXJhdGlvblN0YXRz KE1lbW9yeUNvbnRleHQgY29udGV4dCwKIAkJCQlNZW1vcnlTdGF0c1ByaW50RnVuYyBwcmludGZ1 bmMsIHZvaWQgKnBhc3N0aHJ1LAotCQkJCU1lbW9yeUNvbnRleHRDb3VudGVycyAqdG90YWxzKQor CQkJCU1lbW9yeUNvbnRleHRDb3VudGVycyAqdG90YWxzLCBib29sIGlzX2RzdF9zdGRlcnIpCiB7 CiAJR2VuZXJhdGlvbkNvbnRleHQgKnNldCA9IChHZW5lcmF0aW9uQ29udGV4dCAqKSBjb250ZXh0 OwogCVNpemUJCW5ibG9ja3MgPSAwOwpAQCAtNzA0LDcgKzcwNiw3IEBAIEdlbmVyYXRpb25TdGF0 cyhNZW1vcnlDb250ZXh0IGNvbnRleHQsCiAJCQkJICIlenUgdG90YWwgaW4gJXpkIGJsb2NrcyAo JXpkIGNodW5rcyk7ICV6dSBmcmVlICglemQgY2h1bmtzKTsgJXp1IHVzZWQiLAogCQkJCSB0b3Rh bHNwYWNlLCBuYmxvY2tzLCBuY2h1bmtzLCBmcmVlc3BhY2UsCiAJCQkJIG5mcmVlY2h1bmtzLCB0 b3RhbHNwYWNlIC0gZnJlZXNwYWNlKTsKLQkJcHJpbnRmdW5jKGNvbnRleHQsIHBhc3N0aHJ1LCBz dGF0c19zdHJpbmcpOworCQlwcmludGZ1bmMoY29udGV4dCwgcGFzc3RocnUsIHN0YXRzX3N0cmlu ZywgaXNfZHN0X3N0ZGVycik7CiAJfQogCiAJaWYgKHRvdGFscykKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL21tZ3IvbWN4dC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9tY3h0LmMK aW5kZXggODQ0NzJiOTE1OC4uYmIwY2MwNDI1ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvbW1nci9tY3h0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9tY3h0LmMKQEAgLTIz LDYgKzIzLDEwIEBACiAKICNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgogI2luY2x1ZGUgIm1pc2Nh ZG1pbi5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJv Y2FycmF5LmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCisjaW5jbHVkZSAidXRp bHMvZm1ncnByb3Rvcy5oIgogI2luY2x1ZGUgInV0aWxzL21lbWRlYnVnLmgiCiAjaW5jbHVkZSAi dXRpbHMvbWVtdXRpbHMuaCIKIApAQCAtNTUsOSArNTksMTEgQEAgTWVtb3J5Q29udGV4dCBQb3J0 YWxDb250ZXh0ID0gTlVMTDsKIHN0YXRpYyB2b2lkIE1lbW9yeUNvbnRleHRDYWxsUmVzZXRDYWxs YmFja3MoTWVtb3J5Q29udGV4dCBjb250ZXh0KTsKIHN0YXRpYyB2b2lkIE1lbW9yeUNvbnRleHRT dGF0c0ludGVybmFsKE1lbW9yeUNvbnRleHQgY29udGV4dCwgaW50IGxldmVsLAogCQkJCQkJCQkJ ICAgYm9vbCBwcmludCwgaW50IG1heF9jaGlsZHJlbiwKLQkJCQkJCQkJCSAgIE1lbW9yeUNvbnRl eHRDb3VudGVycyAqdG90YWxzKTsKKwkJCQkJCQkJCSAgIE1lbW9yeUNvbnRleHRDb3VudGVycyAq dG90YWxzLAorCQkJCQkJCQkJICAgYm9vbCBpc19kc3Rfc3RkZXJyKTsKIHN0YXRpYyB2b2lkIE1l bW9yeUNvbnRleHRTdGF0c1ByaW50KE1lbW9yeUNvbnRleHQgY29udGV4dCwgdm9pZCAqcGFzc3Ro cnUsCi0JCQkJCQkJCQljb25zdCBjaGFyICpzdGF0c19zdHJpbmcpOworCQkJCQkJCQkJY29uc3Qg Y2hhciAqc3RhdHNfc3RyaW5nLAorCQkJCQkJCQkJYm9vbCBpc19kc3Rfc3RkZXJyKTsKIAogLyoK ICAqIFlvdSBzaG91bGQgbm90IGRvIG1lbW9yeSBhbGxvY2F0aW9ucyB3aXRoaW4gYSBjcml0aWNh bCBzZWN0aW9uLCBiZWNhdXNlCkBAIC00ODcsNiArNDkzLDU0IEBAIE1lbW9yeUNvbnRleHRNZW1B bGxvY2F0ZWQoTWVtb3J5Q29udGV4dCBjb250ZXh0LCBib29sIHJlY3Vyc2UpCiAJcmV0dXJuIHRv dGFsOwogfQogCisvKgorICogcGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzCisgKgkJUHJp bnQgbWVtb3J5IGNvbnRleHQgb2YgdGhlIHNwZWNpZmllZCBiYWNrZW5kIHByb2Nlc3MuCisgKi8K K0RhdHVtCitwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMoUEdfRlVOQ1RJT05fQVJHUykK K3sKKwlpbnQJCXBpZCA9IFBHX0dFVEFSR19JTlQzMigwKTsKKwlQR1BST0MJCSpwcm9jID0gQmFj a2VuZFBpZEdldFByb2MocGlkKTsKKworCS8qIENoZWNrIHdoZXRoZXIgdGhlIHRhcmdldCBwcm9j ZXNzIGlzIFBvc3RncmVTUUwgYmFja2VuZCBwcm9jZXNzLiAqLworCWlmIChwcm9jID09IE5VTEwp CisJeworCQkvKgorCQkgKiBBY2NvcmRpbmcgdG8gdGhlIHRocmVhZCBiZWxvdywgaXQgbWlnaHQg YmUgYmV0dGVyIHRvCisJCSAqIGNoYW5nZSB0aGlzIG1lc3NhZ2UuCisJCSAqCisJCSAqIGh0dHBz Oi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvQ0FMajJBQ1c3UnItUjdtQmNCUWlYV1Bw JTNESlY1Y2hhampUZHVkTGlGNVljcFctQm1IaGclNDBtYWlsLmdtYWlsLmNvbQorCQkgKgorCQkg KiBVbnRpbCB0aGUgY29uY2x1c2lvbiBvZiB0aGUgZGlzY3Vzc2lvbiwgb3V0cHV0IHRoZSBzYW1l CisJCSAqIG1lc3NhZ2UgYXMgcGdfY2FuY2VsX2JhY2tlbmQoKS4KKwkJICovCisJCWVyZXBvcnQo V0FSTklORywKKwkJCQkoZXJybXNnKCJQSUQgJWQgaXMgbm90IGEgUG9zdGdyZVNRTCBzZXJ2ZXIg cHJvY2VzcyIsIHBpZCkpKTsKKworCQlQR19SRVRVUk5fQk9PTChmYWxzZSk7CisJfQorCisJLyog T25seSBhbGxvdyBzdXBlcnVzZXJzIHRvIGxvZyBtZW1vcnkgY29udGV4dHMuICovCisJaWYgKCFz dXBlcnVzZXIoKSkKKwl7CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9J TlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKKwkJCQkgZXJybXNnKCJtdXN0IGJlIGEgc3VwZXJ1c2Vy IHRvIGxvZyBtZW1vcnkgY29udGV4dHMiKSkpOworCQlQR19SRVRVUk5fQk9PTChmYWxzZSk7CisJ fQorCisJaWYoIVNlbmRQcm9jU2lnbmFsKHBpZCwgUFJPQ1NJR19MT0dfTUVNT1JZX0NPTlRFWFQs IHByb2MtPmJhY2tlbmRJZCkpCisJCVBHX1JFVFVSTl9CT09MKHRydWUpOworCWVsc2UKKwl7CisJ CWVyZXBvcnQoV0FSTklORywKKwkJCQkoZXJybXNnKCJjb3VsZCBub3Qgc2VuZCBzaWduYWwgdG8g cHJvY2VzcyAlZDogJW0iLCBwaWQpKSk7CisKKwkJUEdfUkVUVVJOX0JPT0woZmFsc2UpOworCX0K K30KKwogLyoKICAqIE1lbW9yeUNvbnRleHRTdGF0cwogICoJCVByaW50IHN0YXRpc3RpY3MgYWJv dXQgdGhlIG5hbWVkIGNvbnRleHQgYW5kIGFsbCBpdHMgZGVzY2VuZGFudHMuCkBAIC00OTksNyAr NTUzLDcgQEAgdm9pZAogTWVtb3J5Q29udGV4dFN0YXRzKE1lbW9yeUNvbnRleHQgY29udGV4dCkK IHsKIAkvKiBBIGhhcmQtd2lyZWQgbGltaXQgb24gdGhlIG51bWJlciBvZiBjaGlsZHJlbiBpcyB1 c3VhbGx5IGdvb2QgZW5vdWdoICovCi0JTWVtb3J5Q29udGV4dFN0YXRzRGV0YWlsKGNvbnRleHQs IDEwMCk7CisJTWVtb3J5Q29udGV4dFN0YXRzRGV0YWlsKGNvbnRleHQsIDEwMCwgdHJ1ZSk7CiB9 CiAKIC8qCkBAIC01MDgsMTkgKzU2MiwyOCBAQCBNZW1vcnlDb250ZXh0U3RhdHMoTWVtb3J5Q29u dGV4dCBjb250ZXh0KQogICogRW50cnkgcG9pbnQgZm9yIHVzZSBpZiB5b3Ugd2FudCB0byB2YXJ5 IHRoZSBudW1iZXIgb2YgY2hpbGQgY29udGV4dHMgc2hvd24uCiAgKi8KIHZvaWQKLU1lbW9yeUNv bnRleHRTdGF0c0RldGFpbChNZW1vcnlDb250ZXh0IGNvbnRleHQsIGludCBtYXhfY2hpbGRyZW4p CitNZW1vcnlDb250ZXh0U3RhdHNEZXRhaWwoTWVtb3J5Q29udGV4dCBjb250ZXh0LCBpbnQgbWF4 X2NoaWxkcmVuLCBib29sIGlzX2RzdF9zdGRlcnIpCiB7CiAJTWVtb3J5Q29udGV4dENvdW50ZXJz IGdyYW5kX3RvdGFsczsKIAogCW1lbXNldCgmZ3JhbmRfdG90YWxzLCAwLCBzaXplb2YoZ3JhbmRf dG90YWxzKSk7CiAKLQlNZW1vcnlDb250ZXh0U3RhdHNJbnRlcm5hbChjb250ZXh0LCAwLCB0cnVl LCBtYXhfY2hpbGRyZW4sICZncmFuZF90b3RhbHMpOworCU1lbW9yeUNvbnRleHRTdGF0c0ludGVy bmFsKGNvbnRleHQsIDAsIHRydWUsIG1heF9jaGlsZHJlbiwgJmdyYW5kX3RvdGFscywgaXNfZHN0 X3N0ZGVycik7CiAKLQlmcHJpbnRmKHN0ZGVyciwKLQkJCSJHcmFuZCB0b3RhbDogJXp1IGJ5dGVz IGluICV6ZCBibG9ja3M7ICV6dSBmcmVlICglemQgY2h1bmtzKTsgJXp1IHVzZWRcbiIsCi0JCQln cmFuZF90b3RhbHMudG90YWxzcGFjZSwgZ3JhbmRfdG90YWxzLm5ibG9ja3MsCi0JCQlncmFuZF90 b3RhbHMuZnJlZXNwYWNlLCBncmFuZF90b3RhbHMuZnJlZWNodW5rcywKLQkJCWdyYW5kX3RvdGFs cy50b3RhbHNwYWNlIC0gZ3JhbmRfdG90YWxzLmZyZWVzcGFjZSk7CisJaWYgKGlzX2RzdF9zdGRl cnIpCisJCWZwcmludGYoc3RkZXJyLAorCQkJCSJHcmFuZCB0b3RhbDogJXp1IGJ5dGVzIGluICV6 ZCBibG9ja3M7ICV6dSBmcmVlICglemQgY2h1bmtzKTsgJXp1IHVzZWRcbiIsCisJCQkJZ3JhbmRf dG90YWxzLnRvdGFsc3BhY2UsIGdyYW5kX3RvdGFscy5uYmxvY2tzLAorCQkJCWdyYW5kX3RvdGFs cy5mcmVlc3BhY2UsIGdyYW5kX3RvdGFscy5mcmVlY2h1bmtzLAorCQkJCWdyYW5kX3RvdGFscy50 b3RhbHNwYWNlIC0gZ3JhbmRfdG90YWxzLmZyZWVzcGFjZSk7CisJZWxzZQorCQllcmVwb3J0KExP R19TRVJWRVJfT05MWSwKKwkJCQkoZXJyaGlkZXN0bXQodHJ1ZSksCisJCQkJZXJyaGlkZWNvbnRl eHQodHJ1ZSksCisJCQkJZXJybXNnX2ludGVybmFsKCJHcmFuZCB0b3RhbDogJXp1IGJ5dGVzIGlu ICV6ZCBibG9ja3M7ICV6dSBmcmVlICglemQgY2h1bmtzKTsgJXp1IHVzZWQiLAorCQkJCWdyYW5k X3RvdGFscy50b3RhbHNwYWNlLCBncmFuZF90b3RhbHMubmJsb2NrcywKKwkJCQlncmFuZF90b3Rh bHMuZnJlZXNwYWNlLCBncmFuZF90b3RhbHMuZnJlZWNodW5rcywKKwkJCQlncmFuZF90b3RhbHMu dG90YWxzcGFjZSAtIGdyYW5kX3RvdGFscy5mcmVlc3BhY2UpKSk7CiB9CiAKIC8qCkBAIC01MzMs NyArNTk2LDggQEAgTWVtb3J5Q29udGV4dFN0YXRzRGV0YWlsKE1lbW9yeUNvbnRleHQgY29udGV4 dCwgaW50IG1heF9jaGlsZHJlbikKIHN0YXRpYyB2b2lkCiBNZW1vcnlDb250ZXh0U3RhdHNJbnRl cm5hbChNZW1vcnlDb250ZXh0IGNvbnRleHQsIGludCBsZXZlbCwKIAkJCQkJCSAgIGJvb2wgcHJp bnQsIGludCBtYXhfY2hpbGRyZW4sCi0JCQkJCQkgICBNZW1vcnlDb250ZXh0Q291bnRlcnMgKnRv dGFscykKKwkJCQkJCSAgIE1lbW9yeUNvbnRleHRDb3VudGVycyAqdG90YWxzLAorCQkJCQkJICAg Ym9vbCBpc19kc3Rfc3RkZXJyKQogewogCU1lbW9yeUNvbnRleHRDb3VudGVycyBsb2NhbF90b3Rh bHM7CiAJTWVtb3J5Q29udGV4dCBjaGlsZDsKQEAgLTU0NSw3ICs2MDksNyBAQCBNZW1vcnlDb250 ZXh0U3RhdHNJbnRlcm5hbChNZW1vcnlDb250ZXh0IGNvbnRleHQsIGludCBsZXZlbCwKIAljb250 ZXh0LT5tZXRob2RzLT5zdGF0cyhjb250ZXh0LAogCQkJCQkJCXByaW50ID8gTWVtb3J5Q29udGV4 dFN0YXRzUHJpbnQgOiBOVUxMLAogCQkJCQkJCSh2b2lkICopICZsZXZlbCwKLQkJCQkJCQl0b3Rh bHMpOworCQkJCQkJCXRvdGFscywgaXNfZHN0X3N0ZGVycik7CiAKIAkvKgogCSAqIEV4YW1pbmUg Y2hpbGRyZW4uICBJZiB0aGVyZSBhcmUgbW9yZSB0aGFuIG1heF9jaGlsZHJlbiBvZiB0aGVtLCB3 ZSBkbwpAQCAtNTYwLDExICs2MjQsMTMgQEAgTWVtb3J5Q29udGV4dFN0YXRzSW50ZXJuYWwoTWVt b3J5Q29udGV4dCBjb250ZXh0LCBpbnQgbGV2ZWwsCiAJCWlmIChpY2hpbGQgPCBtYXhfY2hpbGRy ZW4pCiAJCQlNZW1vcnlDb250ZXh0U3RhdHNJbnRlcm5hbChjaGlsZCwgbGV2ZWwgKyAxLAogCQkJ CQkJCQkJICAgcHJpbnQsIG1heF9jaGlsZHJlbiwKLQkJCQkJCQkJCSAgIHRvdGFscyk7CisJCQkJ CQkJCQkgICB0b3RhbHMsCisJCQkJCQkJCQkgICBpc19kc3Rfc3RkZXJyKTsKIAkJZWxzZQogCQkJ TWVtb3J5Q29udGV4dFN0YXRzSW50ZXJuYWwoY2hpbGQsIGxldmVsICsgMSwKIAkJCQkJCQkJCSAg IGZhbHNlLCBtYXhfY2hpbGRyZW4sCi0JCQkJCQkJCQkgICAmbG9jYWxfdG90YWxzKTsKKwkJCQkJ CQkJCSAgICZsb2NhbF90b3RhbHMsCisJCQkJCQkJCQkgICBpc19kc3Rfc3RkZXJyKTsKIAl9CiAK IAkvKiBEZWFsIHdpdGggZXhjZXNzIGNoaWxkcmVuICovCkBAIC01NzQsMTYgKzY0MCwzMSBAQCBN ZW1vcnlDb250ZXh0U3RhdHNJbnRlcm5hbChNZW1vcnlDb250ZXh0IGNvbnRleHQsIGludCBsZXZl bCwKIAkJewogCQkJaW50CQkJaTsKIAotCQkJZm9yIChpID0gMDsgaSA8PSBsZXZlbDsgaSsrKQot CQkJCWZwcmludGYoc3RkZXJyLCAiICAiKTsKLQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQkiJWQg bW9yZSBjaGlsZCBjb250ZXh0cyBjb250YWluaW5nICV6dSB0b3RhbCBpbiAlemQgYmxvY2tzOyAl enUgZnJlZSAoJXpkIGNodW5rcyk7ICV6dSB1c2VkXG4iLAotCQkJCQlpY2hpbGQgLSBtYXhfY2hp bGRyZW4sCi0JCQkJCWxvY2FsX3RvdGFscy50b3RhbHNwYWNlLAotCQkJCQlsb2NhbF90b3RhbHMu bmJsb2NrcywKLQkJCQkJbG9jYWxfdG90YWxzLmZyZWVzcGFjZSwKLQkJCQkJbG9jYWxfdG90YWxz LmZyZWVjaHVua3MsCi0JCQkJCWxvY2FsX3RvdGFscy50b3RhbHNwYWNlIC0gbG9jYWxfdG90YWxz LmZyZWVzcGFjZSk7CisJCQlpZiAoaXNfZHN0X3N0ZGVycikKKwkJCXsKKwkJCQlmb3IgKGkgPSAw OyBpIDw9IGxldmVsOyBpKyspCisJCQkJCWZwcmludGYoc3RkZXJyLCAiICAiKTsKKwkJCQlmcHJp bnRmKHN0ZGVyciwKKwkJCQkJCSIlZCBtb3JlIGNoaWxkIGNvbnRleHRzIGNvbnRhaW5pbmcgJXp1 IHRvdGFsIGluICV6ZCBibG9ja3M7ICV6dSBmcmVlICglemQgY2h1bmtzKTsgJXp1IHVzZWRcbiIs CisJCQkJCQlpY2hpbGQgLSBtYXhfY2hpbGRyZW4sCisJCQkJCQlsb2NhbF90b3RhbHMudG90YWxz cGFjZSwKKwkJCQkJCWxvY2FsX3RvdGFscy5uYmxvY2tzLAorCQkJCQkJbG9jYWxfdG90YWxzLmZy ZWVzcGFjZSwKKwkJCQkJCWxvY2FsX3RvdGFscy5mcmVlY2h1bmtzLAorCQkJCQkJbG9jYWxfdG90 YWxzLnRvdGFsc3BhY2UgLSBsb2NhbF90b3RhbHMuZnJlZXNwYWNlKTsKKwkJCX0KKwkJCWVsc2UK KwkJCQllcmVwb3J0KExPR19TRVJWRVJfT05MWSwKKwkJCQkJCShlcnJoaWRlc3RtdCh0cnVlKSwK KwkJCQkJCWVycmhpZGVjb250ZXh0KHRydWUpLAorCQkJCQkJZXJybXNnX2ludGVybmFsKCJsZXZl bDogJWQgJWQgbW9yZSBjaGlsZCBjb250ZXh0cyBjb250YWluaW5nICV6dSB0b3RhbCBpbiAlemQg YmxvY2tzOyAlenUgZnJlZSAoJXpkIGNodW5rcyk7ICV6dSB1c2VkIiwKKwkJCQkJCWxldmVsLAor CQkJCQkJaWNoaWxkIC0gbWF4X2NoaWxkcmVuLAorCQkJCQkJbG9jYWxfdG90YWxzLnRvdGFsc3Bh Y2UsCisJCQkJCQlsb2NhbF90b3RhbHMubmJsb2NrcywKKwkJCQkJCWxvY2FsX3RvdGFscy5mcmVl c3BhY2UsCisJCQkJCQlsb2NhbF90b3RhbHMuZnJlZWNodW5rcywKKwkJCQkJCWxvY2FsX3RvdGFs cy50b3RhbHNwYWNlIC0gbG9jYWxfdG90YWxzLmZyZWVzcGFjZSkpKTsKIAkJfQogCiAJCWlmICh0 b3RhbHMpCkBAIC02MDUsMTEgKzY4NiwxMyBAQCBNZW1vcnlDb250ZXh0U3RhdHNJbnRlcm5hbChN ZW1vcnlDb250ZXh0IGNvbnRleHQsIGludCBsZXZlbCwKICAqLwogc3RhdGljIHZvaWQKIE1lbW9y eUNvbnRleHRTdGF0c1ByaW50KE1lbW9yeUNvbnRleHQgY29udGV4dCwgdm9pZCAqcGFzc3RocnUs Ci0JCQkJCQljb25zdCBjaGFyICpzdGF0c19zdHJpbmcpCisJCQkJCQljb25zdCBjaGFyICpzdGF0 c19zdHJpbmcsCisJCQkJCQlib29sIGlzX2RzdF9zdGRlcnIpCiB7CiAJaW50CQkJbGV2ZWwgPSAq KGludCAqKSBwYXNzdGhydTsKIAljb25zdCBjaGFyICpuYW1lID0gY29udGV4dC0+bmFtZTsKIAlj b25zdCBjaGFyICppZGVudCA9IGNvbnRleHQtPmlkZW50OworCWNoYXIJCXRydW5jYXRlZF9pZGVu dFsxMTBdOwogCWludAkJCWk7CiAKIAkvKgpAQCAtNjIzLDkgKzcwNiw4IEBAIE1lbW9yeUNvbnRl eHRTdGF0c1ByaW50KE1lbW9yeUNvbnRleHQgY29udGV4dCwgdm9pZCAqcGFzc3RocnUsCiAJCWlk ZW50ID0gTlVMTDsKIAl9CiAKLQlmb3IgKGkgPSAwOyBpIDwgbGV2ZWw7IGkrKykKLQkJZnByaW50 ZihzdGRlcnIsICIgICIpOwotCWZwcmludGYoc3RkZXJyLCAiJXM6ICVzIiwgbmFtZSwgc3RhdHNf c3RyaW5nKTsKKwl0cnVuY2F0ZWRfaWRlbnRbMF0gPSAnXDAnOworCiAJaWYgKGlkZW50KQogCXsK IAkJLyoKQEAgLTYzNywyNCArNzE5LDQyIEBAIE1lbW9yeUNvbnRleHRTdGF0c1ByaW50KE1lbW9y eUNvbnRleHQgY29udGV4dCwgdm9pZCAqcGFzc3RocnUsCiAJCWludAkJCWlkbGVuID0gc3RybGVu KGlkZW50KTsKIAkJYm9vbAkJdHJ1bmNhdGVkID0gZmFsc2U7CiAKKwkJc3RyY3B5KHRydW5jYXRl ZF9pZGVudCwgIjogIik7CisKIAkJaWYgKGlkbGVuID4gMTAwKQogCQl7CiAJCQlpZGxlbiA9IHBn X21iY2xpcGxlbihpZGVudCwgaWRsZW4sIDEwMCk7CiAJCQl0cnVuY2F0ZWQgPSB0cnVlOwogCQl9 Ci0JCWZwcmludGYoc3RkZXJyLCAiOiAiKTsKKworCQlpID0gc3RybGVuKHRydW5jYXRlZF9pZGVu dCk7CisKIAkJd2hpbGUgKGlkbGVuLS0gPiAwKQogCQl7CiAJCQl1bnNpZ25lZCBjaGFyIGMgPSAq aWRlbnQrKzsKIAogCQkJaWYgKGMgPCAnICcpCiAJCQkJYyA9ICcgJzsKLQkJCWZwdXRjKGMsIHN0 ZGVycik7CisJCQl0cnVuY2F0ZWRfaWRlbnRbaSsrXSA9IGM7CiAJCX0KKwkJdHJ1bmNhdGVkX2lk ZW50W2ldID0gJ1wwJzsKKwogCQlpZiAodHJ1bmNhdGVkKQotCQkJZnByaW50ZihzdGRlcnIsICIu Li4iKTsKKwkJCXN0cmNhdCh0cnVuY2F0ZWRfaWRlbnQsICIuLi4iKTsKIAl9Ci0JZnB1dGMoJ1xu Jywgc3RkZXJyKTsKKworCWlmIChpc19kc3Rfc3RkZXJyKQorCXsKKwkJZm9yIChpID0gMDsgaSA8 IGxldmVsOyBpKyspCisJCQlmcHJpbnRmKHN0ZGVyciwgIiAgIik7CisJCWZwcmludGYoc3RkZXJy LCAiJXM6ICVzJXNcbiIsIG5hbWUsIHN0YXRzX3N0cmluZywgdHJ1bmNhdGVkX2lkZW50KTsKKwl9 CisJZWxzZQorCQllcmVwb3J0KExPR19TRVJWRVJfT05MWSwKKwkJCQkoZXJyaGlkZXN0bXQodHJ1 ZSksCisJCQkJIGVycmhpZGVjb250ZXh0KHRydWUpLAorCQkJCSBlcnJtc2dfaW50ZXJuYWwoImxl dmVsOiAlZCAlczogJXMlcyIsCisJCQkJCQkJCQkgbGV2ZWwsIG5hbWUsIHN0YXRzX3N0cmluZywg dHJ1bmNhdGVkX2lkZW50KSkpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvbW1nci9zbGFiLmMgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3NsYWIuYwppbmRleCA5MjEz YmU3Yzk1Li40NzliMDhiZWRkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3Ns YWIuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3NsYWIuYwpAQCAtMTM1LDcgKzEzNSw4 IEBAIHN0YXRpYyBTaXplIFNsYWJHZXRDaHVua1NwYWNlKE1lbW9yeUNvbnRleHQgY29udGV4dCwg dm9pZCAqcG9pbnRlcik7CiBzdGF0aWMgYm9vbCBTbGFiSXNFbXB0eShNZW1vcnlDb250ZXh0IGNv bnRleHQpOwogc3RhdGljIHZvaWQgU2xhYlN0YXRzKE1lbW9yeUNvbnRleHQgY29udGV4dCwKIAkJ CQkJICBNZW1vcnlTdGF0c1ByaW50RnVuYyBwcmludGZ1bmMsIHZvaWQgKnBhc3N0aHJ1LAotCQkJ CQkgIE1lbW9yeUNvbnRleHRDb3VudGVycyAqdG90YWxzKTsKKwkJCQkJICBNZW1vcnlDb250ZXh0 Q291bnRlcnMgKnRvdGFscywKKwkJCQkJICBib29sIGlzX2RzdF9zdGRlcnIpOwogI2lmZGVmIE1F TU9SWV9DT05URVhUX0NIRUNLSU5HCiBzdGF0aWMgdm9pZCBTbGFiQ2hlY2soTWVtb3J5Q29udGV4 dCBjb250ZXh0KTsKICNlbmRpZgpAQCAtNjMyLDExICs2MzMsMTMgQEAgU2xhYklzRW1wdHkoTWVt b3J5Q29udGV4dCBjb250ZXh0KQogICogcHJpbnRmdW5jOiBpZiBub3QgTlVMTCwgcGFzcyBhIGh1 bWFuLXJlYWRhYmxlIHN0YXRzIHN0cmluZyB0byB0aGlzLgogICogcGFzc3RocnU6IHBhc3MgdGhp cyBwb2ludGVyIHRocm91Z2ggdG8gcHJpbnRmdW5jLgogICogdG90YWxzOiBpZiBub3QgTlVMTCwg YWRkIHN0YXRzIGFib3V0IHRoaXMgY29udGV4dCBpbnRvICp0b3RhbHMuCisgKiBpc19kc3Rfc3Rk ZXJyOiBpcyB0aGUgb3V0cHV0IHNob3VsZCBiZSBzdGRlcnIgb3IgZWxvZy4KICAqLwogc3RhdGlj IHZvaWQKIFNsYWJTdGF0cyhNZW1vcnlDb250ZXh0IGNvbnRleHQsCiAJCSAgTWVtb3J5U3RhdHNQ cmludEZ1bmMgcHJpbnRmdW5jLCB2b2lkICpwYXNzdGhydSwKLQkJICBNZW1vcnlDb250ZXh0Q291 bnRlcnMgKnRvdGFscykKKwkJICBNZW1vcnlDb250ZXh0Q291bnRlcnMgKnRvdGFscywKKwkJICBi b29sIGlzX2RzdF9zdGRlcnIpCiB7CiAJU2xhYkNvbnRleHQgKnNsYWIgPSBjYXN0Tm9kZShTbGFi Q29udGV4dCwgY29udGV4dCk7CiAJU2l6ZQkJbmJsb2NrcyA9IDA7CkBAIC02NzEsNyArNjc0LDcg QEAgU2xhYlN0YXRzKE1lbW9yeUNvbnRleHQgY29udGV4dCwKIAkJCQkgIiV6dSB0b3RhbCBpbiAl emQgYmxvY2tzOyAlenUgZnJlZSAoJXpkIGNodW5rcyk7ICV6dSB1c2VkIiwKIAkJCQkgdG90YWxz cGFjZSwgbmJsb2NrcywgZnJlZXNwYWNlLCBmcmVlY2h1bmtzLAogCQkJCSB0b3RhbHNwYWNlIC0g ZnJlZXNwYWNlKTsKLQkJcHJpbnRmdW5jKGNvbnRleHQsIHBhc3N0aHJ1LCBzdGF0c19zdHJpbmcp OworCQlwcmludGZ1bmMoY29udGV4dCwgcGFzc3RocnUsIHN0YXRzX3N0cmluZywgaXNfZHN0X3N0 ZGVycik7CiAJfQogCiAJaWYgKHRvdGFscykKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IGNj N2Q5MGQyYjAuLjdlMDliYWQ4ZGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtNzk0Niw2 ICs3OTQ2LDEyIEBACiAgIHByb2FyZ25hbWVzID0+ICd7bmFtZSwgaWRlbnQsIHBhcmVudCwgbGV2 ZWwsIHRvdGFsX2J5dGVzLCB0b3RhbF9uYmxvY2tzLCBmcmVlX2J5dGVzLCBmcmVlX2NodW5rcywg dXNlZF9ieXRlc30nLAogICBwcm9zcmMgPT4gJ3BnX2dldF9iYWNrZW5kX21lbW9yeV9jb250ZXh0 cycgfSwKIAorIyBsb2cgbWVtb3J5IGNvbnRleHQgb2Ygc3BlY2lmaWVkIGJhY2tlbmQKK3sgb2lk ID0+ICc0NTQzJywgZGVzY3IgPT4gJ2xvZyBtZW1vcnkgY29udGV4dHMgb2Ygc3BlY2lmaWVkIGJh Y2tlbmQnLAorICBwcm9uYW1lID0+ICdwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMnLAor ICBwcm92b2xhdGlsZSA9PiAndicsIHByb3JldHR5cGUgPT4gJ2Jvb2wnLAorICBwcm9hcmd0eXBl cyA9PiAnaW50NCcsIHByb3NyYyA9PiAncGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzJyB9 LAorCiAjIG5vbi1wZXJzaXN0ZW50IHNlcmllcyBnZW5lcmF0b3IKIHsgb2lkID0+ICcxMDY2Jywg ZGVzY3IgPT4gJ25vbi1wZXJzaXN0ZW50IHNlcmllcyBnZW5lcmF0b3InLAogICBwcm9uYW1lID0+ ICdnZW5lcmF0ZV9zZXJpZXMnLCBwcm9yb3dzID0+ICcxMDAwJywKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL21pc2NhZG1pbi5oIGIvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKaW5kZXggMDEzODUw YWMyOC4uMDgxODIyODIzYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKKysr IGIvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKQEAgLTg0LDYgKzg0LDcgQEAgZXh0ZXJuIFBHRExM SU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBQcm9jRGllUGVuZGluZzsKIGV4dGVybiBQR0RM TElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgSWRsZUluVHJhbnNhY3Rpb25TZXNzaW9uVGlt ZW91dFBlbmRpbmc7CiBleHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2lnX2F0b21pY190IElk bGVTZXNzaW9uVGltZW91dFBlbmRpbmc7CiBleHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2ln X2F0b21pY190IFByb2NTaWduYWxCYXJyaWVyUGVuZGluZzsKK2V4dGVybiBQR0RMTElNUE9SVCB2 b2xhdGlsZSBzaWdfYXRvbWljX3QgTG9nTWVtb3J5Q29udGV4dFBlbmRpbmc7CiAKIGV4dGVybiBQ R0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgQ2xpZW50Q29ubmVjdGlvbkxvc3Q7CiAK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL21lbW5vZGVzLmggYi9zcmMvaW5jbHVkZS9u b2Rlcy9tZW1ub2Rlcy5oCmluZGV4IDkzMzFlZjgwZmQuLjg3YTg1MDFjMzcgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL25vZGVzL21lbW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvbWVt bm9kZXMuaApAQCAtNTIsNyArNTIsOCBAQCB0eXBlZGVmIHN0cnVjdCBNZW1vcnlDb250ZXh0Q291 bnRlcnMKICAqLwogCiB0eXBlZGVmIHZvaWQgKCpNZW1vcnlTdGF0c1ByaW50RnVuYykgKE1lbW9y eUNvbnRleHQgY29udGV4dCwgdm9pZCAqcGFzc3RocnUsCi0JCQkJCQkJCQkgIGNvbnN0IGNoYXIg KnN0YXRzX3N0cmluZyk7CisJCQkJCQkJCQkgIGNvbnN0IGNoYXIgKnN0YXRzX3N0cmluZywKKwkJ CQkJCQkJCSAgYm9vbCBpc19kc3Rfc3RkZXJyKTsKIAogdHlwZWRlZiBzdHJ1Y3QgTWVtb3J5Q29u dGV4dE1ldGhvZHMKIHsKQEAgLTY2LDcgKzY3LDggQEAgdHlwZWRlZiBzdHJ1Y3QgTWVtb3J5Q29u dGV4dE1ldGhvZHMKIAlib29sCQkoKmlzX2VtcHR5KSAoTWVtb3J5Q29udGV4dCBjb250ZXh0KTsK IAl2b2lkCQkoKnN0YXRzKSAoTWVtb3J5Q29udGV4dCBjb250ZXh0LAogCQkJCQkJICBNZW1vcnlT dGF0c1ByaW50RnVuYyBwcmludGZ1bmMsIHZvaWQgKnBhc3N0aHJ1LAotCQkJCQkJICBNZW1vcnlD b250ZXh0Q291bnRlcnMgKnRvdGFscyk7CisJCQkJCQkgIE1lbW9yeUNvbnRleHRDb3VudGVycyAq dG90YWxzLAorCQkJCQkJICBib29sIGlzX2RzdF9zdGRlcnIpOwogI2lmZGVmIE1FTU9SWV9DT05U RVhUX0NIRUNLSU5HCiAJdm9pZAkJKCpjaGVjaykgKE1lbW9yeUNvbnRleHQgY29udGV4dCk7CiAj ZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oIGIvc3Jj L2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKaW5kZXggNGFlN2RjMzNiOC4uMTE0NDUzNjAz MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKKysrIGIvc3Jj L2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKQEAgLTM0LDYgKzM0LDggQEAgdHlwZWRlZiBl bnVtCiAJUFJPQ1NJR19QQVJBTExFTF9NRVNTQUdFLAkvKiBtZXNzYWdlIGZyb20gY29vcGVyYXRp bmcgcGFyYWxsZWwgYmFja2VuZCAqLwogCVBST0NTSUdfV0FMU05EX0lOSVRfU1RPUFBJTkcsCS8q IGFzayB3YWxzZW5kZXJzIHRvIHByZXBhcmUgZm9yIHNodXRkb3duICAqLwogCVBST0NTSUdfQkFS UklFUiwJCQkvKiBnbG9iYWwgYmFycmllciBpbnRlcnJ1cHQgICovCisJUFJPQ1NJR19MT0dfTUVN T1JZX0NPTlRFWFQsCQkvKiBhc2sgc3BlY2lmaWVkIGJhY2tlbmQgdG8gbG9nIHRoZQorCQkJCQkJ CW1lbW9yeSBjb250ZXh0ICovCiAKIAkvKiBSZWNvdmVyeSBjb25mbGljdCByZWFzb25zICovCiAJ UFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9EQVRBQkFTRSwKQEAgLTY5LDYgKzcxLDcgQEAgZXh0 ZXJuIGludAlTZW5kUHJvY1NpZ25hbChwaWRfdCBwaWQsIFByb2NTaWduYWxSZWFzb24gcmVhc29u LAogZXh0ZXJuIHVpbnQ2NCBFbWl0UHJvY1NpZ25hbEJhcnJpZXIoUHJvY1NpZ25hbEJhcnJpZXJU eXBlIHR5cGUpOwogZXh0ZXJuIHZvaWQgV2FpdEZvclByb2NTaWduYWxCYXJyaWVyKHVpbnQ2NCBn ZW5lcmF0aW9uKTsKIGV4dGVybiB2b2lkIFByb2Nlc3NQcm9jU2lnbmFsQmFycmllcih2b2lkKTsK K2V4dGVybiB2b2lkIFByb2Nlc3NMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KHZvaWQpOwogCiBl eHRlcm4gdm9pZCBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlcihTSUdOQUxfQVJHUyk7CiAKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL21lbXV0aWxzLmggYi9zcmMvaW5jbHVkZS91dGls cy9tZW11dGlscy5oCmluZGV4IDM2YWFlNGU1MWMuLmZkMTBmODBlZGEgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3V0aWxzL21lbXV0aWxzLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvbWVtdXRp bHMuaApAQCAtODQsNyArODQsOCBAQCBleHRlcm4gTWVtb3J5Q29udGV4dCBNZW1vcnlDb250ZXh0 R2V0UGFyZW50KE1lbW9yeUNvbnRleHQgY29udGV4dCk7CiBleHRlcm4gYm9vbCBNZW1vcnlDb250 ZXh0SXNFbXB0eShNZW1vcnlDb250ZXh0IGNvbnRleHQpOwogZXh0ZXJuIFNpemUgTWVtb3J5Q29u dGV4dE1lbUFsbG9jYXRlZChNZW1vcnlDb250ZXh0IGNvbnRleHQsIGJvb2wgcmVjdXJzZSk7CiBl eHRlcm4gdm9pZCBNZW1vcnlDb250ZXh0U3RhdHMoTWVtb3J5Q29udGV4dCBjb250ZXh0KTsKLWV4 dGVybiB2b2lkIE1lbW9yeUNvbnRleHRTdGF0c0RldGFpbChNZW1vcnlDb250ZXh0IGNvbnRleHQs IGludCBtYXhfY2hpbGRyZW4pOworZXh0ZXJuIHZvaWQgTWVtb3J5Q29udGV4dFN0YXRzRGV0YWls KE1lbW9yeUNvbnRleHQgY29udGV4dCwgaW50IG1heF9jaGlsZHJlbiwKKwkJCQkJCQkJCQlib29s IGlzX2RzdF9zdGRlcnIpOwogZXh0ZXJuIHZvaWQgTWVtb3J5Q29udGV4dEFsbG93SW5Dcml0aWNh bFNlY3Rpb24oTWVtb3J5Q29udGV4dCBjb250ZXh0LAogCQkJCQkJCQkJCQkJYm9vbCBhbGxvdyk7 CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9taXNjL3QvMDAyX2xvZ19tZW1v cnlfY29udGV4dF92YWxpZGF0aW9uLnBsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvdC8w MDJfbG9nX21lbW9yeV9jb250ZXh0X3ZhbGlkYXRpb24ucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMC4uNTQxNjE2YzVmYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9taXNjL3QvMDAyX2xvZ19tZW1vcnlfY29udGV4dF92YWxpZGF0aW9uLnBs CkBAIC0wLDAgKzEsMzEgQEAKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgUG9zdGdy ZXNOb2RlOwordXNlIFRlc3RMaWI7Cit1c2UgVGVzdDo6TW9yZSB0ZXN0cyA9PiAyOworCisjIFNl dCB1cCBub2RlIHdpdGggbG9nZ2luZyBjb2xsZWN0b3IKK215ICRub2RlID0gZ2V0X25ld19ub2Rl KCdwcmltYXJ5Jyk7Ciskbm9kZS0+aW5pdCgpOworJG5vZGUtPnN0YXJ0KCk7CisKKyMgVmVyaWZ5 IHRoYXQgbWVtb3J5IGNvbnRleHRzIGFyZSBsb2dnZWQKKyRub2RlLT5wc3FsKCdwb3N0Z3Jlcycs ICdzZWxlY3QgcGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKHBnX2JhY2tlbmRfcGlkKCkp Jyk7CisKK215ICRsb2dmaWxlID0gc2x1cnBfZmlsZSgkbm9kZS0+bG9nZmlsZSk7CitsaWtlKCRs b2dmaWxlLCBxci9HcmFuZCB0b3RhbDogXGQrIGJ5dGVzIGluIFxkKyBibG9ja3MvLAorCQknZm91 bmQgZXhwZWN0ZWQgbWVtb3J5IGNvbnRleHQgcHJpbnQgaW4gdGhlIGxvZyBmaWxlJyk7CisKKyMg VmVyaWZ5IFBJRCBjaGVjayBpcyB3b3JraW5nCitteSAkb3V0cHV0OworCiskbm9kZS0+cHNxbCgn cG9zdGdyZXMnLAorCSdzZWxlY3QgcGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKHBpZCkg ZnJvbSBwZ19zdGF0X2FjdGl2aXR5IHdoZXJlIGJhY2tlbmRfdHlwZSA9IFwnY2hlY2twb2ludGVy XCcnLAorCXN0ZGVyciA9PiBcJG91dHB1dCk7CisKK2xpa2UoCisJJG91dHB1dCwKKwlxci9QSUQg XGQrIGlzIG5vdCBhIFBvc3RncmVTUUwgc2VydmVyIHByb2Nlc3MvLAorCSdleHBlY3RlZCBQSUQg Y2hlY2sgd29ya2luZycpOworCiskbm9kZS0+c3RvcCgnZmFzdCcpOwotLSAKMi4xOC4xCgo= --=_ba2b8304e87651aa3da8226616a5836e--