Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1thTlv-002wBC-TO for pgsql-hackers@arkaria.postgresql.org; Mon, 10 Feb 2025 13:24:24 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1thTks-001FCw-Mq for pgsql-hackers@arkaria.postgresql.org; Mon, 10 Feb 2025 13:23:18 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1thTks-001FCk-9M for pgsql-hackers@lists.postgresql.org; Mon, 10 Feb 2025 13:23:18 +0000 Received: from oss.nttdata.com ([49.212.34.109]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1thTkm-0002SN-0G for pgsql-hackers@postgresql.org; Mon, 10 Feb 2025 13:23:16 +0000 Received: from oss.nttdata.com (localhost [127.0.0.1]) by oss.nttdata.com (Postfix) with ESMTPA id 7B40B619B8; Mon, 10 Feb 2025 22:23:06 +0900 (JST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at oss.nttdata.com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_a3f5cbe253a87c1c40838a23fa6ce248" Content-Transfer-Encoding: 8bit Date: Mon, 10 Feb 2025 22:23:06 +0900 From: torikoshia To: Jelte Fennema-Nio , andres@anarazel.de, tgl@sss.pgh.pa.us Cc: pgsql-hackers@postgresql.org, rjuju123@gmail.com, Bruce Momjian Subject: Re: RFC: Allow EXPLAIN to Output Page Fault Information In-Reply-To: References: <3861403.1735576764@sss.pgh.pa.us> <1f22794321b745549d54359d343e37b8@oss.nttdata.com> <2c9d6eaf26df17bec13bb03bf1e9bcbb@oss.nttdata.com> <2035079.1739124342@sss.pgh.pa.us> User-Agent: Roundcube Webmail/1.4.11 Message-ID: <30ce8c5be7d1f67d53276540c29fa1c7@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 --=_a3f5cbe253a87c1c40838a23fa6ce248 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed On 2025-02-10 05:06, Jelte Fennema-Nio wrote: Thanks for reviewing the patch and comments! Fixed issues you pointed out and attached v2 patch. > On Sun, 9 Feb 2025 at 19:05, Tom Lane wrote: >> >> Andres Freund writes: >> > I'm somewhat against this patch, as it's fairly fundamentally incompatible >> > with AIO. There's no real way to get information in this manner if the IO >> > isn't executed synchronously in process context... > > Hmm, I had not considered how this would interact with your AIO work. > I agree that getting this info would be hard/impossible to do > efficiently, when IOs are done by background IO processes that > interleave IOs from different queries. But I'd expect that AIOs that > are done using iouring would be tracked correctly without having to > change this code at all (because I assume those are done from the > query backend process). > > One other thought: I think the primary benefit of this feature is > being able to see how many read IOs actually hit the disk, as opposed > to hitting OS page cache. That benefit disappears when using Direct > IO, because then there's no OS page cache. > > How many years away do you think that widespread general use of > AIO+Direct IO is, though? I think that for the N years from now until > then, it would be very nice to have this feature to help debug query > performance problems. Then once the numbers become too > inaccurate/useless at some point, we could simply remove them again. AIO efforts are something I haven't fully grasped yet, but Jelte's comments seem reasonable to me. Of course, as someone proposing this, I'm naturally biased toward thinking it’s beneficial. What do you think? >> Even without looking ahead to AIO, there's bgwriter, walwriter, and >> checkpointer processes that all take I/O load away from foreground >> processes. I don't really believe that this will produce useful >> numbers. > > The bgwriter, walwriter, and checkpointer should only take away > *write* IOs. For read IOs the numbers should be very accurate and as > explained above read IOs is where I think the primary benefit of this > feature is. > > But even for write IOs I think the numbers would be useful when > looking at them with the goal of finding out why a particular query is > slow: If the bgwriter or checkpointer do the writes, then the query > should be roughly as fast as if no writes to the disk had taken place > at all, but if the query process does the writes then those writes are > probably blocking further execution of the query and thus slowing it > down. I agree with this as well. For example, in a SELECT query executed immediately after a large number of INSERTs, we can observe that writes to storage occur due to WAL writes for hint bits. This makes the query take longer compared to a scenario where these writes do not occur. I think we can guess what is happening from the output: postgres=# insert into t1 (select i, repeat('a', 1000) from generate_series(1, 1000000) i); INSERT 0 1000000 postgres=# explain analyze table t1; QUERY PLAN ------------------------------------------------------------------------------------------------------------------- Seq Scan on t1 (cost=0.00..382665.25 rows=21409025 width=36) (actual time=1.926..11035.531 rows=1000100 loops=1) Buffers: shared read=168575 dirtied=142858 written=142479 Planning: Buffers: shared hit=3 read=3 written=1 Storage I/O: read=48 times write=16 times Planning Time: 4.472 ms Execution: Storage I/O: read=2697272 times write=4480096 times // many writes Execution Time: 11099.424 ms // slow (9 rows) postgres=# explain analyze table t1; QUERY PLAN ------------------------------------------------------------------------------------------------------------------ Seq Scan on t1 (cost=0.00..382665.25 rows=21409025 width=36) (actual time=2.066..2926.394 rows=1000100 loops=1) Buffers: shared read=168575 written=14 Planning Time: 0.295 ms Execution: Storage I/O: read=2697200 times write=224 times // few writes Execution Time: 3016.257 ms // fast (6 rows) -- Regards, -- Atsushi Torikoshi Seconded from NTT DATA GROUP CORPORATION to SRA OSS K.K. --=_a3f5cbe253a87c1c40838a23fa6ce248 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v2-0001-Add-storage-I-O-tracking-to-BUFFERS-option.patch Content-Disposition: attachment; filename=v2-0001-Add-storage-I-O-tracking-to-BUFFERS-option.patch; size=34729 RnJvbSA1NDU5MzI2ZmNmY2E4ZTExOWNlNWQ2OTRmMjE4MDgzOTk1OGIzZDVjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtvc2hpYUBvc3MubnR0 ZGF0YS5jb20+CkRhdGU6IE1vbiwgMTAgRmViIDIwMjUgMjE6NTM6NTYgKzA5MDAKU3ViamVjdDog W1BBVENIIHYyXSBBZGQgc3RvcmFnZSBJL08gdHJhY2tpbmcgdG8gJ0JVRkZFUlMnIG9wdGlvbgoK VGhlICdCVUZGRVJTJyBvcHRpb24gY3VycmVudGx5IGluZGljYXRlcyB3aGV0aGVyIGEgYmxvY2sg aGl0IHRoZSBzaGFyZWQKYnVmZmVyLCBidXQgZG9lcyBub3QgZGlzdGluZ3Vpc2ggYmV0d2VlbiBh IGNhY2hlIGhpdCBpbiB0aGUgT1MgY2FjaGUgb3IKYSBzdG9yYWdlIEkvTyBvcGVyYXRpb24uCldo aWxlIHNoYXJlZCBidWZmZXJzIGFuZCBPUyBjYWNoZSBvZmZlciBzaW1pbGFyIHBlcmZvcm1hbmNl LCBzdG9yYWdlCkkvTyBpcyBzaWduaWZpY2FudGx5IHNsb3dlciBpbiBjb21wYXJpc29uLiAgQnkg bWVhc3VyaW5nIHRoZSBudW1iZXJzIG9mCiBzdG9yYWdlIEkvTyByZWFkIGFuZCB3cml0ZSwgd2Ug Y2FuIGJldHRlciBpZGVudGlmeSBpZiBzdG9yYWdlIEkvTyBpcyBhCiBib3R0bGVuZWNrIGluIHBl cmZvcm1hbmNlLgoKQWRkZWQgdHJhY2tpbmcgb2Ygc3RvcmFnZSBJL08gdXNhZ2UgYnkgY2FsbGlu ZyBnZXRydXNhZ2UoMikgYXQgYm90aCB0aGUKcGxhbm5pbmcgYW5kIGV4ZWN1dGlvbiBwaGFzZSBz dGFydCBhbmQgZW5kIHBvaW50cy4KCkEgbW9yZSBncmFudWxhciBhcHByb2FjaCBhcyB3ZWxsIGFz IGN1cnJlbnQgQlVGRkVSUyBvcHRpb24odHJhY2tpbmcgYXQKZWFjaCBwbGFuIG5vZGUpIHdhcyBj b25zaWRlcmVkIGJ1dCBmb3VuZCB0byBiZSBpbXByYWN0aWNhbCBkdWUgdG8gdGhlCmhpZ2ggcGVy Zm9ybWFuY2UgY29zdCBvZiBmcmVxdWVudCBnZXRydXNhZ2UoKSBjYWxscy4KClRPRE86CkkgYmVs aWV2ZSB0aGlzIGluZm9ybWF0aW9uIGlzIG1haW5seSB1c2VmdWwgd2hlbiB1c2VkIGluIGF1dG9f ZXhwbGFpbi4KSSdsbCBpbXBsZW1lbnQgaXQgbGF0ZXIuCgpSZXZpZXdlZC1ieTogSmVsdGUgRmVu bmVtYS1OaW8gPHBvc3RncmVzQGplbHRlZi5ubD4KLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL2V4cGxh aW4uc2dtbCAgICAgICAgIHwgIDI1ICsrKystLQogc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJp bi5jICAgICAgICB8ICAgOCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMg ICB8ICAgOCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jICAgICAgICB8IDExMCAr KysrKysrKysrKysrKysrKysrKysrKysrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5j ICAgICAgICB8ICAgOCArKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyB8 ICAgOCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgICB8ICAzNSArKysr KystLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jICAgICB8ICA2MiArKysrKysr KysrKysrKy0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaCAgICAgICAgfCAgIDEgKwog c3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmggICB8ICAgMiArCiBzcmMvaW5jbHVk ZS9leGVjdXRvci9pbnN0cnVtZW50LmggICAgIHwgIDE5ICsrKystCiBzcmMvaW5jbHVkZS9wb3J0 L3dpbjMyL3N5cy9yZXNvdXJjZS5oIHwgICAyICsKIHNyYy9wb3J0L3dpbjMyZ2V0cnVzYWdlLmMg ICAgICAgICAgICAgfCAgIDQgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9leHBsYWluLm91 dCB8ICAzNyArKysrKysrKy0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAg fCAgIDEgKwogMTUgZmlsZXMgY2hhbmdlZCwgMjkyIGluc2VydGlvbnMoKyksIDM4IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvZXhwbGFpbi5zZ21sIGIvZG9jL3Ny Yy9zZ21sL3JlZi9leHBsYWluLnNnbWwKaW5kZXggNjM2MWExNGU2NS4uN2I0NWEzNGZjMiAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9leHBsYWluLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L3JlZi9leHBsYWluLnNnbWwKQEAgLTE5OCwxMyArMTk4LDI0IEBAIFJPTExCQUNLOwogICAgICAg cHJldmlvdXNseSB1bm1vZGlmaWVkIGJsb2NrcyB0aGF0IHdlcmUgY2hhbmdlZCBieSB0aGlzIHF1 ZXJ5OyB3aGlsZSB0aGUKICAgICAgIG51bWJlciBvZiBibG9ja3MgPGVtcGhhc2lzPndyaXR0ZW48 L2VtcGhhc2lzPiBpbmRpY2F0ZXMgdGhlIG51bWJlciBvZgogICAgICAgcHJldmlvdXNseS1kaXJ0 aWVkIGJsb2NrcyBldmljdGVkIGZyb20gY2FjaGUgYnkgdGhpcyBiYWNrZW5kIGR1cmluZwotICAg ICAgcXVlcnkgcHJvY2Vzc2luZy4KLSAgICAgIFRoZSBudW1iZXIgb2YgYmxvY2tzIHNob3duIGZv ciBhbgotICAgICAgdXBwZXItbGV2ZWwgbm9kZSBpbmNsdWRlcyB0aG9zZSB1c2VkIGJ5IGFsbCBp dHMgY2hpbGQgbm9kZXMuICBJbiB0ZXh0Ci0gICAgICBmb3JtYXQsIG9ubHkgbm9uLXplcm8gdmFs dWVzIGFyZSBwcmludGVkLiAgQnVmZmVycyBpbmZvcm1hdGlvbiBpcwotICAgICAgaW5jbHVkZWQg YnkgZGVmYXVsdCB3aGVuIDxsaXRlcmFsPkFOQUxZWkU8L2xpdGVyYWw+IGlzIHVzZWQgYnV0Ci0g ICAgICBvdGhlcndpc2UgaXMgbm90IGluY2x1ZGVkIGJ5IGRlZmF1bHQsIGJ1dCBjYW4gYmUgZW5h YmxlZCB1c2luZyB0aGlzCi0gICAgICBvcHRpb24uCisgICAgICBxdWVyeSBwcm9jZXNzaW5nLiBJ biB0ZXh0IGZvcm1hdCwgb25seSBub24temVybyB2YWx1ZXMgYXJlIHByaW50ZWQuCisgICAgICBJ ZiBwb3NzaWJsZSwgdGhpcyBvcHRpb24gYWxzbyBkaXNwbGF5cyB0aGUgbnVtYmVyIG9mIHJlYWQg YW5kIHdyaXRlCisgICAgICBvcGVyYXRpb25zIHBlcmZvcm1lZCBvbiBzdG9yYWdlIGR1cmluZyB0 aGUgcGxhbm5pbmcgYW5kIGV4ZWN1dGlvbiBwaGFzZXMsCisgICAgICBzaG93biBhdCB0aGUgZW5k IG9mIHRoZSBwbGFuLiBUaGVzZSB2YWx1ZXMgYXJlIG9idGFpbmVkIGZyb20gdGhlCisgICAgICA8 ZnVuY3Rpb24+Z2V0cnVzYWdlKCk8L2Z1bmN0aW9uPiBzeXN0ZW0gY2FsbC4gTm90ZSB0aGF0IG9u IHBsYXRmb3JtcyB0aGF0CisgICAgICBkbyBub3Qgc3VwcG9ydCA8ZnVuY3Rpb24+Z2V0cnVzYWdl KCk8L2Z1bmN0aW9uPiwgc3VjaCBhcyBXaW5kb3dzLCBubyBvdXRwdXQKKyAgICAgIHdpbGwgYmUg c2hvd24sIGV2ZW4gaWYgcmVhZHMgb3Igd3JpdGVzIGFjdHVhbGx5IG9jY3VyLiBBZGRpdGlvbmFs bHksIGV2ZW4KKyAgICAgIG9uIHBsYXRmb3JtcyB3aGVyZSA8ZnVuY3Rpb24+Z2V0cnVzYWdlKCk8 L2Z1bmN0aW9uPiBpcyBzdXBwb3J0ZWQsIGlmIHRoZQorICAgICAga2VybmVsIGlzIGJ1aWx0IHdp dGhvdXQgdGhlIG5lY2Vzc2FyeSBvcHRpb25zIHRvIHRyYWNrIHN0b3JhZ2UgcmVhZCBhbmQKKyAg ICAgIHdyaXRlIG9wZXJhdGlvbnMsIG5vIG91dHB1dCB3aWxsIGJlIHNob3duLgorICAgICAgVGhl IHRpbWluZyBhbmQgdW5pdCBvZiBtZWFzdXJlbWVudCBmb3IgcmVhZCBhbmQgd3JpdGUgb3BlcmF0 aW9ucyBtYXkgdmFyeQorICAgICAgZGVwZW5kaW5nIG9uIHRoZSBwbGF0Zm9ybS4gRm9yIGV4YW1w bGUsIG9uIExpbnV4LCBhIHJlYWQgaXMgY291bnRlZCBvbmx5CisgICAgICBpZiB0aGlzIHByb2Nl c3MgY2F1c2VkIGRhdGEgdG8gYmUgZmV0Y2hlZCBmcm9tIHRoZSBzdG9yYWdlIGxheWVyLCBhbmQg YQorICAgICAgd3JpdGUgaXMgY291bnRlZCBhdCB0aGUgcGFnZS1kaXJ0eWluZyB0aW1lLiBPbiBM aW51eCwgdGhlIHVuaXQgb2YKKyAgICAgIG1lYXN1cmVtZW50IGZvciByZWFkIGFuZCB3cml0ZSBv cGVyYXRpb25zIGlzIDUxMiBLQi4KKyAgICAgIEJ1ZmZlcnMgaW5mb3JtYXRpb24gaXMgaW5jbHVk ZWQgYnkgZGVmYXVsdCB3aGVuIDxsaXRlcmFsPkFOQUxZWkU8L2xpdGVyYWw+CisgICAgICBpcyB1 c2VkIGJ1dCBvdGhlcndpc2UgaXMgbm90IGluY2x1ZGVkIGJ5IGRlZmF1bHQsIGJ1dCBjYW4gYmUg ZW5hYmxlZCB1c2luZworICAgICAgdGhpcyBvcHRpb24uCiAgICAgIDwvcGFyYT4KICAgICA8L2xp c3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvYnJpbi9icmluLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKaW5kZXggY2Nm ODI0YmJkYi4uZmM3MTFiZTJlMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4v YnJpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYwpAQCAtMjU1MSw3ICsy NTUxLDcgQEAgX2JyaW5fZW5kX3BhcmFsbGVsKEJyaW5MZWFkZXIgKmJyaW5sZWFkZXIsIEJyaW5C dWlsZFN0YXRlICpzdGF0ZSkKIAkgKiBvciB3ZSBtaWdodCBnZXQgaW5jb21wbGV0ZSBkYXRhLikK IAkgKi8KIAlmb3IgKGkgPSAwOyBpIDwgYnJpbmxlYWRlci0+cGN4dC0+bndvcmtlcnNfbGF1bmNo ZWQ7IGkrKykKLQkJSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnkoJmJyaW5sZWFkZXItPmJ1ZmZlcnVz YWdlW2ldLCAmYnJpbmxlYWRlci0+d2FsdXNhZ2VbaV0pOworCQlJbnN0ckFjY3VtUGFyYWxsZWxR dWVyeSgmYnJpbmxlYWRlci0+YnVmZmVydXNhZ2VbaV0sIE5VTEwsICZicmlubGVhZGVyLT53YWx1 c2FnZVtpXSk7CiAKIAkvKiBGcmVlIGxhc3QgcmVmZXJlbmNlIHRvIE1WQ0Mgc25hcHNob3QsIGlm IG9uZSB3YXMgdXNlZCAqLwogCWlmIChJc01WQ0NTbmFwc2hvdChicmlubGVhZGVyLT5zbmFwc2hv dCkpCkBAIC0yOTEzLDcgKzI5MTMsNyBAQCBfYnJpbl9wYXJhbGxlbF9idWlsZF9tYWluKGRzbV9z ZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAl0dXBsZXNvcnRfYXR0YWNoX3NoYXJlZChzaGFy ZWRzb3J0LCBzZWcpOwogCiAJLyogUHJlcGFyZSB0byB0cmFjayBidWZmZXIgdXNhZ2UgZHVyaW5n IHBhcmFsbGVsIGV4ZWN1dGlvbiAqLwotCUluc3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KCk7CisJSW5z dHJTdGFydFBhcmFsbGVsUXVlcnkoTlVMTCk7CiAKIAkvKgogCSAqIE1pZ2h0IGFzIHdlbGwgdXNl IHJlbGlhYmxlIGZpZ3VyZSB3aGVuIGRvbGluZyBvdXQgbWFpbnRlbmFuY2Vfd29ya19tZW0KQEAg LTI5MjgsOCArMjkyOCw4IEBAIF9icmluX3BhcmFsbGVsX2J1aWxkX21haW4oZHNtX3NlZ21lbnQg KnNlZywgc2htX3RvYyAqdG9jKQogCS8qIFJlcG9ydCBXQUwvYnVmZmVyIHVzYWdlIGR1cmluZyBw YXJhbGxlbCBleGVjdXRpb24gKi8KIAlidWZmZXJ1c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywg UEFSQUxMRUxfS0VZX0JVRkZFUl9VU0FHRSwgZmFsc2UpOwogCXdhbHVzYWdlID0gc2htX3RvY19s b29rdXAodG9jLCBQQVJBTExFTF9LRVlfV0FMX1VTQUdFLCBmYWxzZSk7Ci0JSW5zdHJFbmRQYXJh bGxlbFF1ZXJ5KCZidWZmZXJ1c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0sCi0JCQkJCQkgICZ3 YWx1c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0pOworCUluc3RyRW5kUGFyYWxsZWxRdWVyeSgm YnVmZmVydXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdLCBOVUxMLAorCQkJCQkJICAmd2FsdXNh Z2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdLCBOVUxMKTsKIAogCWluZGV4X2Nsb3NlKGluZGV4UmVs LCBpbmRleExvY2ttb2RlKTsKIAl0YWJsZV9jbG9zZShoZWFwUmVsLCBoZWFwTG9ja21vZGUpOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYwppbmRleCA3YWJhODUyZGI5Li45OGNmZGU4ODc1 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYwpAQCAtMTYxOSw3ICsxNjE5LDcgQEAg X2J0X2VuZF9wYXJhbGxlbChCVExlYWRlciAqYnRsZWFkZXIpCiAJICogb3Igd2UgbWlnaHQgZ2V0 IGluY29tcGxldGUgZGF0YS4pCiAJICovCiAJZm9yIChpID0gMDsgaSA8IGJ0bGVhZGVyLT5wY3h0 LT5ud29ya2Vyc19sYXVuY2hlZDsgaSsrKQotCQlJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeSgmYnRs ZWFkZXItPmJ1ZmZlcnVzYWdlW2ldLCAmYnRsZWFkZXItPndhbHVzYWdlW2ldKTsKKwkJSW5zdHJB Y2N1bVBhcmFsbGVsUXVlcnkoJmJ0bGVhZGVyLT5idWZmZXJ1c2FnZVtpXSwgTlVMTCwgJmJ0bGVh ZGVyLT53YWx1c2FnZVtpXSk7CiAKIAkvKiBGcmVlIGxhc3QgcmVmZXJlbmNlIHRvIE1WQ0Mgc25h cHNob3QsIGlmIG9uZSB3YXMgdXNlZCAqLwogCWlmIChJc01WQ0NTbmFwc2hvdChidGxlYWRlci0+ c25hcHNob3QpKQpAQCAtMTgyNyw3ICsxODI3LDcgQEAgX2J0X3BhcmFsbGVsX2J1aWxkX21haW4o ZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCX0KIAogCS8qIFByZXBhcmUgdG8gdHJh Y2sgYnVmZmVyIHVzYWdlIGR1cmluZyBwYXJhbGxlbCBleGVjdXRpb24gKi8KLQlJbnN0clN0YXJ0 UGFyYWxsZWxRdWVyeSgpOworCUluc3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KE5VTEwpOwogCiAJLyog UGVyZm9ybSBzb3J0aW5nIG9mIHNwb29sLCBhbmQgcG9zc2libHkgYSBzcG9vbDIgKi8KIAlzb3J0 bWVtID0gbWFpbnRlbmFuY2Vfd29ya19tZW0gLyBidHNoYXJlZC0+c2NhbnR1cGxlc29ydHN0YXRl czsKQEAgLTE4MzcsOCArMTgzNyw4IEBAIF9idF9wYXJhbGxlbF9idWlsZF9tYWluKGRzbV9zZWdt ZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAkvKiBSZXBvcnQgV0FML2J1ZmZlciB1c2FnZSBkdXJp bmcgcGFyYWxsZWwgZXhlY3V0aW9uICovCiAJYnVmZmVydXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0 b2MsIFBBUkFMTEVMX0tFWV9CVUZGRVJfVVNBR0UsIGZhbHNlKTsKIAl3YWx1c2FnZSA9IHNobV90 b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1dBTF9VU0FHRSwgZmFsc2UpOwotCUluc3RyRW5k UGFyYWxsZWxRdWVyeSgmYnVmZmVydXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdLAotCQkJCQkJ ICAmd2FsdXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdKTsKKwlJbnN0ckVuZFBhcmFsbGVsUXVl cnkoJmJ1ZmZlcnVzYWdlW1BhcmFsbGVsV29ya2VyTnVtYmVyXSwgTlVMTCwKKwkJCQkJCSAgJndh bHVzYWdlW1BhcmFsbGVsV29ya2VyTnVtYmVyXSwgTlVMTCk7CiAKICNpZmRlZiBCVFJFRV9CVUlM RF9TVEFUUwogCWlmIChsb2dfYnRyZWVfYnVpbGRfc3RhdHMpCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMK aW5kZXggYzI0ZTY2ZjgyZS4uZDIzYmJiMzY5OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvZXhwbGFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpAQCAt MTQ1LDYgKzE0NSw4IEBAIHN0YXRpYyB2b2lkIHNob3dfZm9yZWlnbnNjYW5faW5mbyhGb3JlaWdu U2NhblN0YXRlICpmc3N0YXRlLCBFeHBsYWluU3RhdGUgKmVzKTsKIHN0YXRpYyBjb25zdCBjaGFy ICpleHBsYWluX2dldF9pbmRleF9uYW1lKE9pZCBpbmRleElkKTsKIHN0YXRpYyBib29sIHBlZWtf YnVmZmVyX3VzYWdlKEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IEJ1ZmZlclVzYWdlICp1c2FnZSk7 CiBzdGF0aWMgdm9pZCBzaG93X2J1ZmZlcl91c2FnZShFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBC dWZmZXJVc2FnZSAqdXNhZ2UpOworc3RhdGljIGJvb2wgcGVla19zdG9yYWdlaW9fdXNhZ2UoRXhw bGFpblN0YXRlICplcywgY29uc3QgU3RvcmFnZUlPVXNhZ2UgKnVzYWdlKTsKK3N0YXRpYyB2b2lk IHNob3dfc3RvcmFnZWlvX3VzYWdlKEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IFN0b3JhZ2VJT1Vz YWdlICp1c2FnZSk7CiBzdGF0aWMgdm9pZCBzaG93X3dhbF91c2FnZShFeHBsYWluU3RhdGUgKmVz LCBjb25zdCBXYWxVc2FnZSAqdXNhZ2UpOwogc3RhdGljIHZvaWQgc2hvd19tZW1vcnlfY291bnRl cnMoRXhwbGFpblN0YXRlICplcywKIAkJCQkJCQkJIGNvbnN0IE1lbW9yeUNvbnRleHRDb3VudGVy cyAqbWVtX2NvdW50ZXJzKTsKQEAgLTQ3NSw2ICs0NzcsOCBAQCBzdGFuZGFyZF9FeHBsYWluT25l UXVlcnkoUXVlcnkgKnF1ZXJ5LCBpbnQgY3Vyc29yT3B0aW9ucywKIAkJCQlwbGFuZHVyYXRpb247 CiAJQnVmZmVyVXNhZ2UgYnVmdXNhZ2Vfc3RhcnQsCiAJCQkJYnVmdXNhZ2U7CisJU3RvcmFnZUlP VXNhZ2Ugc3RvcmFnZWlvLAorCQkJCXN0b3JhZ2Vpb19zdGFydDsKIAlNZW1vcnlDb250ZXh0Q291 bnRlcnMgbWVtX2NvdW50ZXJzOwogCU1lbW9yeUNvbnRleHQgcGxhbm5lcl9jdHggPSBOVUxMOwog CU1lbW9yeUNvbnRleHQgc2F2ZWRfY3R4ID0gTlVMTDsKQEAgLTQ5Niw3ICs1MDAsMTAgQEAgc3Rh bmRhcmRfRXhwbGFpbk9uZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50IGN1cnNvck9wdGlvbnMsCiAJ fQogCiAJaWYgKGVzLT5idWZmZXJzKQorCXsKIAkJYnVmdXNhZ2Vfc3RhcnQgPSBwZ0J1ZmZlclVz YWdlOworCQlHZXRTdG9yYWdlSU9Vc2FnZSgmc3RvcmFnZWlvX3N0YXJ0KTsKKwl9CiAJSU5TVFJf VElNRV9TRVRfQ1VSUkVOVChwbGFuc3RhcnQpOwogCiAJLyogcGxhbiB0aGUgcXVlcnkgKi8KQEAg LTUxNiwxMSArNTIzLDE2IEBAIHN0YW5kYXJkX0V4cGxhaW5PbmVRdWVyeShRdWVyeSAqcXVlcnks IGludCBjdXJzb3JPcHRpb25zLAogCXsKIAkJbWVtc2V0KCZidWZ1c2FnZSwgMCwgc2l6ZW9mKEJ1 ZmZlclVzYWdlKSk7CiAJCUJ1ZmZlclVzYWdlQWNjdW1EaWZmKCZidWZ1c2FnZSwgJnBnQnVmZmVy VXNhZ2UsICZidWZ1c2FnZV9zdGFydCk7CisKKwkJR2V0U3RvcmFnZUlPVXNhZ2UoJnN0b3JhZ2Vp byk7CisJCXN0b3JhZ2Vpby5pbmJsb2NrIC09IHN0b3JhZ2Vpb19zdGFydC5pbmJsb2NrOworCQlz dG9yYWdlaW8ub3V0YmxvY2sgLT0gc3RvcmFnZWlvX3N0YXJ0Lm91dGJsb2NrOwogCX0KIAogCS8q IHJ1biBpdCAoaWYgbmVlZGVkKSBhbmQgcHJvZHVjZSBvdXRwdXQgKi8KIAlFeHBsYWluT25lUGxh bihwbGFuLCBpbnRvLCBlcywgcXVlcnlTdHJpbmcsIHBhcmFtcywgcXVlcnlFbnYsCiAJCQkJICAg JnBsYW5kdXJhdGlvbiwgKGVzLT5idWZmZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCksCisJCQkJICAg KGVzLT5idWZmZXJzID8gJnN0b3JhZ2VpbyA6IE5VTEwpLAogCQkJCSAgIGVzLT5tZW1vcnkgPyAm bWVtX2NvdW50ZXJzIDogTlVMTCk7CiB9CiAKQEAgLTY0NCw3ICs2NTYsNyBAQCB2b2lkCiBFeHBs YWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4 cGxhaW5TdGF0ZSAqZXMsCiAJCQkgICBjb25zdCBjaGFyICpxdWVyeVN0cmluZywgUGFyYW1MaXN0 SW5mbyBwYXJhbXMsCiAJCQkgICBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwgY29uc3QgaW5z dHJfdGltZSAqcGxhbmR1cmF0aW9uLAotCQkJICAgY29uc3QgQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdl LAorCQkJICAgY29uc3QgQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlLCBjb25zdCBTdG9yYWdlSU9Vc2Fn ZSAqcGxhbnN0b3JhZ2VpbywKIAkJCSAgIGNvbnN0IE1lbW9yeUNvbnRleHRDb3VudGVycyAqbWVt X2NvdW50ZXJzKQogewogCURlc3RSZWNlaXZlciAqZGVzdDsKQEAgLTY1NCw2ICs2NjYsNyBAQCBF eHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmludG8s IEV4cGxhaW5TdGF0ZSAqZXMsCiAJaW50CQkJZWZsYWdzOwogCWludAkJCWluc3RydW1lbnRfb3B0 aW9uID0gMDsKIAlTZXJpYWxpemVNZXRyaWNzIHNlcmlhbGl6ZU1ldHJpY3MgPSB7MH07CisJU3Rv cmFnZUlPVXNhZ2Ugc3RvcmFnZWlvX3N0YXJ0OwogCiAJQXNzZXJ0KHBsYW5uZWRzdG10LT5jb21t YW5kVHlwZSAhPSBDTURfVVRJTElUWSk7CiAKQEAgLTY2Myw3ICs2NzYsMTkgQEAgRXhwbGFpbk9u ZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWlu U3RhdGUgKmVzLAogCQlpbnN0cnVtZW50X29wdGlvbiB8PSBJTlNUUlVNRU5UX1JPV1M7CiAKIAlp ZiAoZXMtPmJ1ZmZlcnMpCisJeworCQlHZXRTdG9yYWdlSU9Vc2FnZSgmc3RvcmFnZWlvX3N0YXJ0 KTsKKworCQkvKgorCQkgKiBJbml0aWFsaXplIGdsb2JhbCB2YXJpYWJsZSBjb3VudGVycyBmb3Ig cGFyYWxsZWwgcXVlcnkgd29ya2Vycy4KKwkJICogRXZlbiBpZiB0aGUgcXVlcnkgaXMgY2FuY2Vs bGVkIG9uIHRoZSB3YXksIHRoZSBFWFBMQUlOIGV4ZWN1dGlvbgorCQkgKiBhbHdheXMgcGFzc2Vz IGhlcmUsIHNvIGl0IGNhbiBiZSBpbml0aWFsaXplZCBoZXJlLgorCQkgKi8KKwkJcGdTdG9yYWdl SU9Vc2FnZVBhcmFsbGVsLmluYmxvY2sgPSAwOworCQlwZ1N0b3JhZ2VJT1VzYWdlUGFyYWxsZWwu b3V0YmxvY2sgPSAwOworCiAJCWluc3RydW1lbnRfb3B0aW9uIHw9IElOU1RSVU1FTlRfQlVGRkVS UzsKKwl9CiAJaWYgKGVzLT53YWwpCiAJCWluc3RydW1lbnRfb3B0aW9uIHw9IElOU1RSVU1FTlRf V0FMOwogCkBAIC03NDcsOCArNzcyLDkgQEAgRXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBs YW5uZWRzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCS8qIENyZWF0 ZSB0ZXh0dWFsIGR1bXAgb2YgcGxhbiB0cmVlICovCiAJRXhwbGFpblByaW50UGxhbihlcywgcXVl cnlEZXNjKTsKIAotCS8qIFNob3cgYnVmZmVyIGFuZC9vciBtZW1vcnkgdXNhZ2UgaW4gcGxhbm5p bmcgKi8KLQlpZiAocGVla19idWZmZXJfdXNhZ2UoZXMsIGJ1ZnVzYWdlKSB8fCBtZW1fY291bnRl cnMpCisJLyogU2hvdyBidWZmZXIsIHN0b3JhZ2UgSS9PLCBhbmQvb3IgbWVtb3J5IHVzYWdlIGlu IHBsYW5uaW5nICovCisJaWYgKHBlZWtfYnVmZmVyX3VzYWdlKGVzLCBidWZ1c2FnZSkgfHwgcGVl a19zdG9yYWdlaW9fdXNhZ2UoZXMsIHBsYW5zdG9yYWdlaW8pIHx8CisJCW1lbV9jb3VudGVycykK IAl7CiAJCUV4cGxhaW5PcGVuR3JvdXAoIlBsYW5uaW5nIiwgIlBsYW5uaW5nIiwgdHJ1ZSwgZXMp OwogCkBAIC03NjAsOCArNzg2LDEwIEBAIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFu bmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAkJfQogCiAJCWlm IChidWZ1c2FnZSkKKwkJewogCQkJc2hvd19idWZmZXJfdXNhZ2UoZXMsIGJ1ZnVzYWdlKTsKLQor CQkJc2hvd19zdG9yYWdlaW9fdXNhZ2UoZXMsIHBsYW5zdG9yYWdlaW8pOworCQl9CiAJCWlmICht ZW1fY291bnRlcnMpCiAJCQlzaG93X21lbW9yeV9jb3VudGVycyhlcywgbWVtX2NvdW50ZXJzKTsK IApAQCAtODEzLDYgKzg0MSwzNSBAQCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5l ZHN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAKIAl0b3RhbHRpbWUg Kz0gZWxhcHNlZF90aW1lKCZzdGFydHRpbWUpOwogCisJLyogU2hvdyBzdG9yYWdlIEkvTyB1c2Fn ZSBpbiBleGVjdXRpb24gKi8KKwlpZiAoZXMtPmJ1ZmZlcnMpCisJeworCQlTdG9yYWdlSU9Vc2Fn ZSBzdG9yYWdlaW8gPSB7MH07CisJCVN0b3JhZ2VJT1VzYWdlIHN0b3JhZ2Vpb19lbmQ7CisKKwkJ R2V0U3RvcmFnZUlPVXNhZ2UoJnN0b3JhZ2Vpb19lbmQpOworCQlTdG9yYWdlSU9Vc2FnZUFjY3Vt RGlmZigmc3RvcmFnZWlvLCAmc3RvcmFnZWlvX2VuZCwgJnN0b3JhZ2Vpb19zdGFydCk7CisJCVN0 b3JhZ2VJT1VzYWdlQWRkKCZzdG9yYWdlaW8sICZwZ1N0b3JhZ2VJT1VzYWdlUGFyYWxsZWwpOwor CisJCWlmIChwZWVrX3N0b3JhZ2Vpb191c2FnZShlcywgJnN0b3JhZ2VpbykpCisJCXsKKwkJCUV4 cGxhaW5PcGVuR3JvdXAoIkV4ZWN1dGlvbiIsICJFeGVjdXRpb24iLCB0cnVlLCBlcyk7CisKKwkJ CWlmIChlcy0+Zm9ybWF0ID09IEVYUExBSU5fRk9STUFUX1RFWFQpCisJCQl7CisJCQkJRXhwbGFp bkluZGVudFRleHQoZXMpOworCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoZXMtPnN0ciwgIkV4 ZWN1dGlvbjpcbiIpOworCQkJCWVzLT5pbmRlbnQrKzsKKwkJCX0KKwkJCXNob3dfc3RvcmFnZWlv X3VzYWdlKGVzLCAmc3RvcmFnZWlvKTsKKworCQkJaWYgKGVzLT5mb3JtYXQgPT0gRVhQTEFJTl9G T1JNQVRfVEVYVCkKKwkJCQllcy0+aW5kZW50LS07CisKKwkJCUV4cGxhaW5DbG9zZUdyb3VwKCJF eGVjdXRpb24iLCAiRXhlY3V0aW9uIiwgdHJ1ZSwgZXMpOworCQl9CisJfQorCiAJLyoKIAkgKiBX ZSBvbmx5IHJlcG9ydCBleGVjdXRpb24gdGltZSBpZiB3ZSBhY3R1YWxseSByYW4gdGhlIHF1ZXJ5 ICh0aGF0IGlzLAogCSAqIHRoZSB1c2VyIHNwZWNpZmllZCBBTkFMWVpFKSwgYW5kIGlmIHN1bW1h cnkgcmVwb3J0aW5nIGlzIGVuYWJsZWQgKHRoZQpAQCAtNDIzMiw2ICs0Mjg5LDUxIEBAIHNob3df YnVmZmVyX3VzYWdlKEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IEJ1ZmZlclVzYWdlICp1c2FnZSkK IAl9CiB9CiAKKy8qCisgKiBSZXR1cm4gd2hldGhlciBzaG93X3N0b3JhZ2Vpb191c2FnZSB3b3Vs ZCBoYXZlIGFueXRoaW5nIHRvIHByaW50LCBpZiBnaXZlbgorICogdGhlIHNhbWUgJ3VzYWdlJyBk YXRhLiAgTm90ZSB0aGF0IHdoZW4gdGhlIGZvcm1hdCBpcyBhbnl0aGluZyBvdGhlciB0aGFuCisg KiB0ZXh0LCB3ZSBwcmludCBldmVuIGlmIHRoZSBjb3VudGVycyBhcmUgYWxsIHplcm9lcy4KKyAq Lworc3RhdGljIGJvb2wKK3BlZWtfc3RvcmFnZWlvX3VzYWdlKEV4cGxhaW5TdGF0ZSAqZXMsIGNv bnN0IFN0b3JhZ2VJT1VzYWdlICp1c2FnZSkKK3sKKwlpZiAodXNhZ2UgPT0gTlVMTCkKKwkJcmV0 dXJuIGZhbHNlOworCisJaWYgKGVzLT5mb3JtYXQgIT0gRVhQTEFJTl9GT1JNQVRfVEVYVCkKKwkJ cmV0dXJuIHRydWU7CisKKwlyZXR1cm4gdXNhZ2UtPmluYmxvY2sgPiAwIHx8IHVzYWdlLT5vdXRi bG9jayA+IDA7Cit9CisKKy8qCisgKiBTaG93IHN0b3JhZ2UgSS9PIHVzYWdlLgorICovCitzdGF0 aWMgdm9pZAorc2hvd19zdG9yYWdlaW9fdXNhZ2UoRXhwbGFpblN0YXRlICplcywgY29uc3QgU3Rv cmFnZUlPVXNhZ2UgKnVzYWdlKQoreworCWlmIChlcy0+Zm9ybWF0ID09IEVYUExBSU5fRk9STUFU X1RFWFQpCisJeworCQkvKiBTaG93IG9ubHkgcG9zaXRpdmUgY291bnRlciB2YWx1ZXMuICovCisJ CWlmICh1c2FnZS0+aW5ibG9jayA8PSAwICYmIHVzYWdlLT5vdXRibG9jayA8PSAwKQorCQkJcmV0 dXJuOworCisJCUV4cGxhaW5JbmRlbnRUZXh0KGVzKTsKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmlu Zyhlcy0+c3RyLCAiU3RvcmFnZSBJL086Iik7CisJCWFwcGVuZFN0cmluZ0luZm8oZXMtPnN0ciwg IiByZWFkPSVsZCB0aW1lcyIsIChsb25nKSB1c2FnZS0+aW5ibG9jayk7CisJCWFwcGVuZFN0cmlu Z0luZm8oZXMtPnN0ciwgIiB3cml0ZT0lbGQgdGltZXMiLCAobG9uZykgdXNhZ2UtPm91dGJsb2Nr KTsKKworCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihlcy0+c3RyLCAnXG4nKTsKKwl9CisJZWxzZQor CXsKKwkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiU3RvcmFnZSBJL08gUmVhZCIsIE5VTEwsCisJ CQkJCQkJICAgdXNhZ2UtPmluYmxvY2ssIGVzKTsKKwkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigi U3RvcmFnZSBJL08gUmVhZCIsIE5VTEwsCisJCQkJCQkJICAgdXNhZ2UtPm91dGJsb2NrLCBlcyk7 CisJfQorfQorCiAvKgogICogU2hvdyBXQUwgdXNhZ2UgZGV0YWlscy4KICAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv cHJlcGFyZS5jCmluZGV4IDg5ODljMGM4ODIuLmUxMTYwMWIyMWQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVw YXJlLmMKQEAgLTU3OSw2ICs1NzksOCBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10 ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAlpbnN0cl90 aW1lCXBsYW5kdXJhdGlvbjsKIAlCdWZmZXJVc2FnZSBidWZ1c2FnZV9zdGFydCwKIAkJCQlidWZ1 c2FnZTsKKwlTdG9yYWdlSU9Vc2FnZSBzdG9yYWdlaW8sCisJCQkJc3RvcmFnZWlvX3N0YXJ0Owog CU1lbW9yeUNvbnRleHRDb3VudGVycyBtZW1fY291bnRlcnM7CiAJTWVtb3J5Q29udGV4dCBwbGFu bmVyX2N0eCA9IE5VTEw7CiAJTWVtb3J5Q29udGV4dCBzYXZlZF9jdHggPSBOVUxMOwpAQCAtNTk0 LDcgKzU5NiwxMSBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10ICpleGVjc3RtdCwg SW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAl9CiAKIAlpZiAoZXMtPmJ1ZmZl cnMpCisJewogCQlidWZ1c2FnZV9zdGFydCA9IHBnQnVmZmVyVXNhZ2U7CisJCUdldFN0b3JhZ2VJ T1VzYWdlKCZzdG9yYWdlaW9fc3RhcnQpOworCX0KKwogCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQo cGxhbnN0YXJ0KTsKIAogCS8qIExvb2sgaXQgdXAgaW4gdGhlIGhhc2ggdGFibGUgKi8KQEAgLTY0 NCw2ICs2NTAsNyBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10ICpleGVjc3RtdCwg SW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAl7CiAJCW1lbXNldCgmYnVmdXNh Z2UsIDAsIHNpemVvZihCdWZmZXJVc2FnZSkpOwogCQlCdWZmZXJVc2FnZUFjY3VtRGlmZigmYnVm dXNhZ2UsICZwZ0J1ZmZlclVzYWdlLCAmYnVmdXNhZ2Vfc3RhcnQpOworCQlHZXRTdG9yYWdlSU9V c2FnZSgmc3RvcmFnZWlvKTsKIAl9CiAKIAlwbGFuX2xpc3QgPSBjcGxhbi0+c3RtdF9saXN0OwpA QCAtNjU2LDYgKzY2Myw3IEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQgKmV4ZWNz dG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCQlpZiAocHN0bXQtPmNv bW1hbmRUeXBlICE9IENNRF9VVElMSVRZKQogCQkJRXhwbGFpbk9uZVBsYW4ocHN0bXQsIGludG8s IGVzLCBxdWVyeV9zdHJpbmcsIHBhcmFtTEksIHBzdGF0ZS0+cF9xdWVyeUVudiwKIAkJCQkJCSAg ICZwbGFuZHVyYXRpb24sIChlcy0+YnVmZmVycyA/ICZidWZ1c2FnZSA6IE5VTEwpLAorCQkJCQkJ ICAgKGVzLT5idWZmZXJzID8gJnN0b3JhZ2VpbyA6IE5VTEwpLAogCQkJCQkJICAgZXMtPm1lbW9y eSA/ICZtZW1fY291bnRlcnMgOiBOVUxMKTsKIAkJZWxzZQogCQkJRXhwbGFpbk9uZVV0aWxpdHko cHN0bXQtPnV0aWxpdHlTdG10LCBpbnRvLCBlcywgcHN0YXRlLCBwYXJhbUxJKTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCmluZGV4IGRjMzMyMmMyNTYuLmNkNGJmMjIwODIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwpAQCAtNzM3LDcgKzczNyw3IEBAIHBh cmFsbGVsX3ZhY3V1bV9wcm9jZXNzX2FsbF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2 cywgaW50IG51bV9pbmRleF9zY2FuCiAJCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0ZpbmlzaChw dnMtPnBjeHQpOwogCiAJCWZvciAoaW50IGkgPSAwOyBpIDwgcHZzLT5wY3h0LT5ud29ya2Vyc19s YXVuY2hlZDsgaSsrKQotCQkJSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnkoJnB2cy0+YnVmZmVyX3Vz YWdlW2ldLCAmcHZzLT53YWxfdXNhZ2VbaV0pOworCQkJSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnko JnB2cy0+YnVmZmVyX3VzYWdlW2ldLCBOVUxMLCAmcHZzLT53YWxfdXNhZ2VbaV0pOwogCX0KIAog CS8qCkBAIC0xMDgzLDcgKzEwODMsNyBAQCBwYXJhbGxlbF92YWN1dW1fbWFpbihkc21fc2VnbWVu dCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJZXJyb3JfY29udGV4dF9zdGFjayA9ICZlcnJjYWxsYmFj azsKIAogCS8qIFByZXBhcmUgdG8gdHJhY2sgYnVmZmVyIHVzYWdlIGR1cmluZyBwYXJhbGxlbCBl eGVjdXRpb24gKi8KLQlJbnN0clN0YXJ0UGFyYWxsZWxRdWVyeSgpOworCUluc3RyU3RhcnRQYXJh bGxlbFF1ZXJ5KE5VTEwpOwogCiAJLyogUHJvY2VzcyBpbmRleGVzIHRvIHBlcmZvcm0gdmFjdXVt L2NsZWFudXAgKi8KIAlwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19zYWZlX2luZGV4ZXMoJnB2cyk7 CkBAIC0xMDkxLDggKzEwOTEsOCBAQCBwYXJhbGxlbF92YWN1dW1fbWFpbihkc21fc2VnbWVudCAq c2VnLCBzaG1fdG9jICp0b2MpCiAJLyogUmVwb3J0IGJ1ZmZlci9XQUwgdXNhZ2UgZHVyaW5nIHBh cmFsbGVsIGV4ZWN1dGlvbiAqLwogCWJ1ZmZlcl91c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywg UEFSQUxMRUxfVkFDVVVNX0tFWV9CVUZGRVJfVVNBR0UsIGZhbHNlKTsKIAl3YWxfdXNhZ2UgPSBz aG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX1ZBQ1VVTV9LRVlfV0FMX1VTQUdFLCBmYWxzZSk7 Ci0JSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KCZidWZmZXJfdXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1i ZXJdLAotCQkJCQkJICAmd2FsX3VzYWdlW1BhcmFsbGVsV29ya2VyTnVtYmVyXSk7CisJSW5zdHJF bmRQYXJhbGxlbFF1ZXJ5KCZidWZmZXJfdXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdLCBOVUxM LAorCQkJCQkJICAmd2FsX3VzYWdlW1BhcmFsbGVsV29ya2VyTnVtYmVyXSwgTlVMTCk7CiAKIAlU aWRTdG9yZURldGFjaChkZWFkX2l0ZW1zKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1BhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwu YwppbmRleCAxMzRmZjYyZjVjLi5hY2VkMGJiZTRiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjUGFyYWxsZWwuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFy YWxsZWwuYwpAQCAtNjQsNiArNjQsNyBAQAogI2RlZmluZSBQQVJBTExFTF9LRVlfUVVFUllfVEVY VAkJVUlOVDY0Q09OU1QoMHhFMDAwMDAwMDAwMDAwMDA4KQogI2RlZmluZSBQQVJBTExFTF9LRVlf SklUX0lOU1RSVU1FTlRBVElPTiBVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAwMDAwMDkpCiAjZGVm aW5lIFBBUkFMTEVMX0tFWV9XQUxfVVNBR0UJCQlVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAwMDAw MEEpCisjZGVmaW5lIFBBUkFMTEVMX0tFWV9TVE9SQUdFSU9fVVNBR0UJVUlOVDY0Q09OU1QoMHhF MDAwMDAwMDAwMDAwMDBCKQogCiAjZGVmaW5lIFBBUkFMTEVMX1RVUExFX1FVRVVFX1NJWkUJCTY1 NTM2CiAKQEAgLTU5OSw2ICs2MDAsNyBAQCBFeGVjSW5pdFBhcmFsbGVsUGxhbihQbGFuU3RhdGUg KnBsYW5zdGF0ZSwgRVN0YXRlICplc3RhdGUsCiAJY2hhcgkgICAqcHN0bXRfc3BhY2U7CiAJY2hh cgkgICAqcGFyYW1saXN0aW5mb19zcGFjZTsKIAlCdWZmZXJVc2FnZSAqYnVmdXNhZ2Vfc3BhY2U7 CisJU3RvcmFnZUlPVXNhZ2UgKnN0b3JhZ2Vpb3VzYWdlX3NwYWNlOwogCVdhbFVzYWdlICAgKndh bHVzYWdlX3NwYWNlOwogCVNoYXJlZEV4ZWN1dG9ySW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50 YXRpb24gPSBOVUxMOwogCVNoYXJlZEppdEluc3RydW1lbnRhdGlvbiAqaml0X2luc3RydW1lbnRh dGlvbiA9IE5VTEw7CkBAIC02ODAsNiArNjgyLDEzIEBAIEV4ZWNJbml0UGFyYWxsZWxQbGFuKFBs YW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwKIAkJCQkJCSAgIG11bF9zaXplKHNp emVvZihXYWxVc2FnZSksIHBjeHQtPm53b3JrZXJzKSk7CiAJc2htX3RvY19lc3RpbWF0ZV9rZXlz KCZwY3h0LT5lc3RpbWF0b3IsIDEpOwogCisJLyoKKwkgKiBTYW1lIHRoaW5nIGZvciBTdG9yYWdl SU9Vc2FnZS4KKwkgKi8KKwlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3Is CisJCQkJCQkgICBtdWxfc2l6ZShzaXplb2YoU3RvcmFnZUlPVXNhZ2UpLCBwY3h0LT5ud29ya2Vy cykpOworCXNobV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAxKTsKKwogCS8q IEVzdGltYXRlIHNwYWNlIGZvciB0dXBsZSBxdWV1ZXMuICovCiAJc2htX3RvY19lc3RpbWF0ZV9j aHVuaygmcGN4dC0+ZXN0aW1hdG9yLAogCQkJCQkJICAgbXVsX3NpemUoUEFSQUxMRUxfVFVQTEVf UVVFVUVfU0laRSwgcGN4dC0+bndvcmtlcnMpKTsKQEAgLTc3NSw2ICs3ODQsMTIgQEAgRXhlY0lu aXRQYXJhbGxlbFBsYW4oUGxhblN0YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCXNo bV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZX1dBTF9VU0FHRSwgd2FsdXNhZ2Vf c3BhY2UpOwogCXBlaS0+d2FsX3VzYWdlID0gd2FsdXNhZ2Vfc3BhY2U7CiAKKwkvKiBTYW1lIGZv ciBTdG9yYWdlSU9Vc2FnZS4gKi8KKwlzdG9yYWdlaW91c2FnZV9zcGFjZSA9IHNobV90b2NfYWxs b2NhdGUocGN4dC0+dG9jLAorCQkJCQkJCQkJCQltdWxfc2l6ZShzaXplb2YoU3RvcmFnZUlPVXNh Z2UpLCBwY3h0LT5ud29ya2VycykpOworCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxM RUxfS0VZX1NUT1JBR0VJT19VU0FHRSwgc3RvcmFnZWlvdXNhZ2Vfc3BhY2UpOworCXBlaS0+c3Rv cmFnZWlvX3VzYWdlID0gc3RvcmFnZWlvdXNhZ2Vfc3BhY2U7CisKIAkvKiBTZXQgdXAgdGhlIHR1 cGxlIHF1ZXVlcyB0aGF0IHRoZSB3b3JrZXJzIHdpbGwgd3JpdGUgaW50by4gKi8KIAlwZWktPnRx dWV1ZSA9IEV4ZWNQYXJhbGxlbFNldHVwVHVwbGVRdWV1ZXMocGN4dCwgZmFsc2UpOwogCkBAIC0x MTcwLDExICsxMTg1LDExIEBAIEV4ZWNQYXJhbGxlbEZpbmlzaChQYXJhbGxlbEV4ZWN1dG9ySW5m byAqcGVpKQogCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0ZpbmlzaChwZWktPnBjeHQpOwogCiAJ LyoKLQkgKiBOZXh0LCBhY2N1bXVsYXRlIGJ1ZmZlci9XQUwgdXNhZ2UuICAoVGhpcyBtdXN0IHdh aXQgZm9yIHRoZSB3b3JrZXJzIHRvCi0JICogZmluaXNoLCBvciB3ZSBtaWdodCBnZXQgaW5jb21w bGV0ZSBkYXRhLikKKwkgKiBOZXh0LCBhY2N1bXVsYXRlIGJ1ZmZlciwgV0FMLCBhbmQgU3RvcmFn ZSBJL08gdXNhZ2UuIChUaGlzIG11c3Qgd2FpdAorCSAqIGZvciB0aGUgd29ya2VycyB0byBmaW5p c2gsIG9yIHdlIG1pZ2h0IGdldCBpbmNvbXBsZXRlIGRhdGEuKQogCSAqLwogCWZvciAoaSA9IDA7 IGkgPCBud29ya2VyczsgaSsrKQotCQlJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeSgmcGVpLT5idWZm ZXJfdXNhZ2VbaV0sICZwZWktPndhbF91c2FnZVtpXSk7CisJCUluc3RyQWNjdW1QYXJhbGxlbFF1 ZXJ5KCZwZWktPmJ1ZmZlcl91c2FnZVtpXSwgJnBlaS0+c3RvcmFnZWlvX3VzYWdlW2ldLCAmcGVp LT53YWxfdXNhZ2VbaV0pOwogCiAJcGVpLT5maW5pc2hlZCA9IHRydWU7CiB9CkBAIC0xNDA2LDYg KzE0MjEsOCBAQCBQYXJhbGxlbFF1ZXJ5TWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0 b2MpCiB7CiAJRml4ZWRQYXJhbGxlbEV4ZWN1dG9yU3RhdGUgKmZwZXM7CiAJQnVmZmVyVXNhZ2Ug KmJ1ZmZlcl91c2FnZTsKKwlTdG9yYWdlSU9Vc2FnZSAqc3RvcmFnZWlvX3VzYWdlOworCVN0b3Jh Z2VJT1VzYWdlIHN0b3JhZ2Vpb191c2FnZV9zdGFydCA9IHswfTsKIAlXYWxVc2FnZSAgICp3YWxf dXNhZ2U7CiAJRGVzdFJlY2VpdmVyICpyZWNlaXZlcjsKIAlRdWVyeURlc2MgICpxdWVyeURlc2M7 CkBAIC0xNDU5LDEzICsxNDc2LDE0IEBAIFBhcmFsbGVsUXVlcnlNYWluKGRzbV9zZWdtZW50ICpz ZWcsIHNobV90b2MgKnRvYykKIAlFeGVjU2V0VHVwbGVCb3VuZChmcGVzLT50dXBsZXNfbmVlZGVk LCBxdWVyeURlc2MtPnBsYW5zdGF0ZSk7CiAKIAkvKgotCSAqIFByZXBhcmUgdG8gdHJhY2sgYnVm ZmVyL1dBTCB1c2FnZSBkdXJpbmcgcXVlcnkgZXhlY3V0aW9uLgorCSAqIFByZXBhcmUgdG8gdHJh Y2sgYnVmZmVyLCBXQUwsIGFuZCBTdG9yYWdlSS9PIHVzYWdlIGR1cmluZyBxdWVyeQorCSAqIGV4 ZWN1dGlvbi4KIAkgKgogCSAqIFdlIGRvIHRoaXMgYWZ0ZXIgc3RhcnRpbmcgdXAgdGhlIGV4ZWN1 dG9yIHRvIG1hdGNoIHdoYXQgaGFwcGVucyBpbiB0aGUKIAkgKiBsZWFkZXIsIHdoaWNoIGFsc28g ZG9lc24ndCBjb3VudCBidWZmZXIgYWNjZXNzZXMgYW5kIFdBTCBhY3Rpdml0eSB0aGF0CiAJICog b2NjdXIgZHVyaW5nIGV4ZWN1dG9yIHN0YXJ0dXAuCiAJICovCi0JSW5zdHJTdGFydFBhcmFsbGVs UXVlcnkoKTsKKwlJbnN0clN0YXJ0UGFyYWxsZWxRdWVyeSgmc3RvcmFnZWlvX3VzYWdlX3N0YXJ0 KTsKIAogCS8qCiAJICogUnVuIHRoZSBwbGFuLiAgSWYgd2Ugc3BlY2lmaWVkIGEgdHVwbGUgYm91 bmQsIGJlIGNhcmVmdWwgbm90IHRvIGRlbWFuZApAQCAtMTQ3OCwxMSArMTQ5NiwxNCBAQCBQYXJh bGxlbFF1ZXJ5TWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJLyogU2h1dCBk b3duIHRoZSBleGVjdXRvciAqLwogCUV4ZWN1dG9yRmluaXNoKHF1ZXJ5RGVzYyk7CiAKLQkvKiBS ZXBvcnQgYnVmZmVyL1dBTCB1c2FnZSBkdXJpbmcgcGFyYWxsZWwgZXhlY3V0aW9uLiAqLworCS8q IFJlcG9ydCBidWZmZXIsIFdBTCwgYW5kIHN0b3JhZ2VJTyB1c2FnZSBkdXJpbmcgcGFyYWxsZWwg ZXhlY3V0aW9uLiAqLwogCWJ1ZmZlcl91c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxM RUxfS0VZX0JVRkZFUl9VU0FHRSwgZmFsc2UpOworCXN0b3JhZ2Vpb191c2FnZSA9IHNobV90b2Nf bG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1NUT1JBR0VJT19VU0FHRSwgZmFsc2UpOwogCXdhbF91 c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1dBTF9VU0FHRSwgZmFsc2Up OwogCUluc3RyRW5kUGFyYWxsZWxRdWVyeSgmYnVmZmVyX3VzYWdlW1BhcmFsbGVsV29ya2VyTnVt YmVyXSwKLQkJCQkJCSAgJndhbF91c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0pOworCQkJCQkJ ICAmc3RvcmFnZWlvX3VzYWdlW1BhcmFsbGVsV29ya2VyTnVtYmVyXSwKKwkJCQkJCSAgJndhbF91 c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0sCisJCQkJCQkgICZzdG9yYWdlaW9fdXNhZ2Vfc3Rh cnQpOwogCiAJLyogUmVwb3J0IGluc3RydW1lbnRhdGlvbiBkYXRhIGlmIGFueSBpbnN0cnVtZW50 YXRpb24gb3B0aW9ucyBhcmUgc2V0LiAqLwogCWlmIChpbnN0cnVtZW50YXRpb24gIT0gTlVMTCkK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYwppbmRleCAyZDM1NjliMzc0Li45NDY2NGQ1ZmFiIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCkBAIC0xMywxNiArMTMsMjEgQEAKICAqLwogI2lu Y2x1ZGUgInBvc3RncmVzLmgiCiAKKyNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KICNpbmNsdWRl IDx1bmlzdGQuaD4KIAogI2luY2x1ZGUgImV4ZWN1dG9yL2luc3RydW1lbnQuaCIKIAogQnVmZmVy VXNhZ2UgcGdCdWZmZXJVc2FnZTsKIHN0YXRpYyBCdWZmZXJVc2FnZSBzYXZlX3BnQnVmZmVyVXNh Z2U7CisKKy8qIE9ubHkgY291bnQgcGFyYWxsZWwgd29ya2VycycgdXNhZ2UgKi8KK1N0b3JhZ2VJ T1VzYWdlIHBnU3RvcmFnZUlPVXNhZ2VQYXJhbGxlbDsKIFdhbFVzYWdlCXBnV2FsVXNhZ2U7CiBz dGF0aWMgV2FsVXNhZ2Ugc2F2ZV9wZ1dhbFVzYWdlOwogCiBzdGF0aWMgdm9pZCBCdWZmZXJVc2Fn ZUFkZChCdWZmZXJVc2FnZSAqZHN0LCBjb25zdCBCdWZmZXJVc2FnZSAqYWRkKTsKK3ZvaWQJCVN0 b3JhZ2VJT1VzYWdlQWRkKFN0b3JhZ2VJT1VzYWdlICpkc3QsIGNvbnN0IFN0b3JhZ2VJT1VzYWdl ICphZGQpOwogc3RhdGljIHZvaWQgV2FsVXNhZ2VBZGQoV2FsVXNhZ2UgKmRzdCwgV2FsVXNhZ2Ug KmFkZCk7CiAKIApAQCAtMTk3LDI3ICsyMDIsNDYgQEAgSW5zdHJBZ2dOb2RlKEluc3RydW1lbnRh dGlvbiAqZHN0LCBJbnN0cnVtZW50YXRpb24gKmFkZCkKIAogLyogbm90ZSBjdXJyZW50IHZhbHVl cyBkdXJpbmcgcGFyYWxsZWwgZXhlY3V0b3Igc3RhcnR1cCAqLwogdm9pZAotSW5zdHJTdGFydFBh cmFsbGVsUXVlcnkodm9pZCkKK0luc3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KFN0b3JhZ2VJT1VzYWdl ICpzdG9yYWdlaW91c2FnZSkKIHsKIAlzYXZlX3BnQnVmZmVyVXNhZ2UgPSBwZ0J1ZmZlclVzYWdl OwogCXNhdmVfcGdXYWxVc2FnZSA9IHBnV2FsVXNhZ2U7CisKKwlpZiAoc3RvcmFnZWlvdXNhZ2Ug IT0gTlVMTCkKKwkJR2V0U3RvcmFnZUlPVXNhZ2Uoc3RvcmFnZWlvdXNhZ2UpOwogfQogCiAvKiBy ZXBvcnQgdXNhZ2UgYWZ0ZXIgcGFyYWxsZWwgZXhlY3V0b3Igc2h1dGRvd24gKi8KIHZvaWQKLUlu c3RyRW5kUGFyYWxsZWxRdWVyeShCdWZmZXJVc2FnZSAqYnVmdXNhZ2UsIFdhbFVzYWdlICp3YWx1 c2FnZSkKK0luc3RyRW5kUGFyYWxsZWxRdWVyeShCdWZmZXJVc2FnZSAqYnVmdXNhZ2UsIFN0b3Jh Z2VJT1VzYWdlICpzdG9yYWdlaW91c2FnZSwgV2FsVXNhZ2UgKndhbHVzYWdlLCBTdG9yYWdlSU9V c2FnZSAqc3RvcmFnZWlvdXNhZ2Vfc3RhcnQpCiB7CiAJbWVtc2V0KGJ1ZnVzYWdlLCAwLCBzaXpl b2YoQnVmZmVyVXNhZ2UpKTsKIAlCdWZmZXJVc2FnZUFjY3VtRGlmZihidWZ1c2FnZSwgJnBnQnVm ZmVyVXNhZ2UsICZzYXZlX3BnQnVmZmVyVXNhZ2UpOworCisJaWYgKHN0b3JhZ2Vpb3VzYWdlICE9 IE5VTEwgJiYgc3RvcmFnZWlvdXNhZ2Vfc3RhcnQgIT0gTlVMTCkKKwl7CisJCXN0cnVjdCBTdG9y YWdlSU9Vc2FnZSBzdG9yYWdlaW91c2FnZV9lbmQ7CisKKwkJR2V0U3RvcmFnZUlPVXNhZ2UoJnN0 b3JhZ2Vpb3VzYWdlX2VuZCk7CisKKwkJbWVtc2V0KHN0b3JhZ2Vpb3VzYWdlLCAwLCBzaXplb2Yo U3RvcmFnZUlPVXNhZ2UpKTsKKwkJU3RvcmFnZUlPVXNhZ2VBY2N1bURpZmYoc3RvcmFnZWlvdXNh Z2UsICZzdG9yYWdlaW91c2FnZV9lbmQsIHN0b3JhZ2Vpb3VzYWdlX3N0YXJ0KTsKKworCQllcmVw b3J0KERFQlVHMSwKKwkJCQkoZXJybXNnKCJQYXJhbGxlbCB3b3JrZXIncyBzdG9yYWdlIEkvTyB0 aW1lczogaW5ibG9jazolbGQgb3V0YmxvY2s6JWxkIiwKKwkJCQkJCXN0b3JhZ2Vpb3VzYWdlLT5p bmJsb2NrLCBzdG9yYWdlaW91c2FnZS0+b3V0YmxvY2spKSk7CisJfQogCW1lbXNldCh3YWx1c2Fn ZSwgMCwgc2l6ZW9mKFdhbFVzYWdlKSk7CiAJV2FsVXNhZ2VBY2N1bURpZmYod2FsdXNhZ2UsICZw Z1dhbFVzYWdlLCAmc2F2ZV9wZ1dhbFVzYWdlKTsKIH0KIAogLyogYWNjdW11bGF0ZSB3b3JrIGRv bmUgYnkgd29ya2VycyBpbiBsZWFkZXIncyBzdGF0cyAqLwogdm9pZAotSW5zdHJBY2N1bVBhcmFs bGVsUXVlcnkoQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlLCBXYWxVc2FnZSAqd2FsdXNhZ2UpCitJbnN0 ckFjY3VtUGFyYWxsZWxRdWVyeShCdWZmZXJVc2FnZSAqYnVmdXNhZ2UsIFN0b3JhZ2VJT1VzYWdl ICpzdG9yYWdlaW91c2FnZSwgV2FsVXNhZ2UgKndhbHVzYWdlKQogewogCUJ1ZmZlclVzYWdlQWRk KCZwZ0J1ZmZlclVzYWdlLCBidWZ1c2FnZSk7CisJaWYgKHN0b3JhZ2Vpb3VzYWdlICE9IE5VTEwp CisJCVN0b3JhZ2VJT1VzYWdlQWRkKCZwZ1N0b3JhZ2VJT1VzYWdlUGFyYWxsZWwsIHN0b3JhZ2Vp b3VzYWdlKTsKIAlXYWxVc2FnZUFkZCgmcGdXYWxVc2FnZSwgd2FsdXNhZ2UpOwogfQogCkBAIC0y NzMsNiArMjk3LDM4IEBAIEJ1ZmZlclVzYWdlQWNjdW1EaWZmKEJ1ZmZlclVzYWdlICpkc3QsCiAJ CQkJCQkgIGFkZC0+dGVtcF9ibGtfd3JpdGVfdGltZSwgc3ViLT50ZW1wX2Jsa193cml0ZV90aW1l KTsKIH0KIAorLyogaGVscGVyIGZ1bmN0aW9ucyBmb3IgU3RvcmFnZUlPVXNhZ2UgdXNhZ2UgYWNj dW11bGF0aW9uICovCit2b2lkCitTdG9yYWdlSU9Vc2FnZUFkZChTdG9yYWdlSU9Vc2FnZSAqZHN0 LCBjb25zdCBTdG9yYWdlSU9Vc2FnZSAqYWRkKQoreworCWRzdC0+aW5ibG9jayArPSBhZGQtPmlu YmxvY2s7CisJZHN0LT5vdXRibG9jayArPSBhZGQtPm91dGJsb2NrOworfQorCisvKiBkc3QgKz0g YWRkIC0gc3ViICovCit2b2lkCitTdG9yYWdlSU9Vc2FnZUFjY3VtRGlmZihTdG9yYWdlSU9Vc2Fn ZSAqZHN0LCBjb25zdCBTdG9yYWdlSU9Vc2FnZSAqYWRkLCBjb25zdCBTdG9yYWdlSU9Vc2FnZSAq c3ViKQoreworCWRzdC0+aW5ibG9jayArPSBhZGQtPmluYmxvY2sgLSBzdWItPmluYmxvY2s7CisJ ZHN0LT5vdXRibG9jayArPSBhZGQtPm91dGJsb2NrIC0gc3ViLT5vdXRibG9jazsKK30KKworLyog Q2FwdHVyZXMgdGhlIGN1cnJlbnQgc3RvcmFnZSBJL08gdXNhZ2Ugc3RhdGlzdGljcyAqLwordm9p ZAorR2V0U3RvcmFnZUlPVXNhZ2UoU3RvcmFnZUlPVXNhZ2UgKnVzYWdlKQoreworCXN0cnVjdCBy dXNhZ2UgcnVzYWdlOworCisJaWYgKGdldHJ1c2FnZShSVVNBR0VfU0VMRiwgJnJ1c2FnZSkpCisJ eworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfU1lTVEVNX0VSUk9SKSwK KwkJCQkgZXJybXNnKCJnZXRydXNhZ2UoKSBmYWlsZWQ6ICVtIikpKTsKKwl9CisJdXNhZ2UtPmlu YmxvY2sgPSBydXNhZ2UucnVfaW5ibG9jazsKKwl1c2FnZS0+b3V0YmxvY2sgPSBydXNhZ2UucnVf b3VibG9jazsKK30KKwogLyogaGVscGVyIGZ1bmN0aW9ucyBmb3IgV0FMIHVzYWdlIGFjY3VtdWxh dGlvbiAqLwogc3RhdGljIHZvaWQKIFdhbFVzYWdlQWRkKFdhbFVzYWdlICpkc3QsIFdhbFVzYWdl ICphZGQpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmggYi9zcmMv aW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKaW5kZXggZWE3NDE5OTUxZi4uOGU2N2RkNTdiMyAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oCisrKyBiL3NyYy9pbmNs dWRlL2NvbW1hbmRzL2V4cGxhaW4uaApAQCAtMTA4LDYgKzEwOCw3IEBAIGV4dGVybiB2b2lkIEV4 cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywK IAkJCQkJCSAgIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVu diwKIAkJCQkJCSAgIGNvbnN0IGluc3RyX3RpbWUgKnBsYW5kdXJhdGlvbiwKIAkJCQkJCSAgIGNv bnN0IEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwKKwkJCQkJCSAgIGNvbnN0IFN0b3JhZ2VJT1VzYWdl ICpwbGFuc3RvcmFnZWlvLAogCQkJCQkJICAgY29uc3QgTWVtb3J5Q29udGV4dENvdW50ZXJzICpt ZW1fY291bnRlcnMpOwogCiBleHRlcm4gdm9pZCBFeHBsYWluUHJpbnRQbGFuKEV4cGxhaW5TdGF0 ZSAqZXMsIFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWNQYXJhbGxlbC5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcmFsbGVs LmgKaW5kZXggNWU3MTA2YzM5Ny4uNWM4YmM3NmM1MyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv ZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1Bh cmFsbGVsLmgKQEAgLTI2LDYgKzI2LDggQEAgdHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxFeGVjdXRv ckluZm8KIAlQbGFuU3RhdGUgICpwbGFuc3RhdGU7CQkvKiBwbGFuIHN1YnRyZWUgd2UncmUgcnVu bmluZyBpbiBwYXJhbGxlbCAqLwogCVBhcmFsbGVsQ29udGV4dCAqcGN4dDsJCS8qIHBhcmFsbGVs IGNvbnRleHQgd2UncmUgdXNpbmcgKi8KIAlCdWZmZXJVc2FnZSAqYnVmZmVyX3VzYWdlOwkvKiBw b2ludHMgdG8gYnVmdXNhZ2UgYXJlYSBpbiBEU00gKi8KKwlTdG9yYWdlSU9Vc2FnZSAqc3RvcmFn ZWlvX3VzYWdlOwkvKiBwb2ludHMgdG8gc3RvcmFnZWlvIHVzYWdlIGFyZWEgaW4KKwkJCQkJCQkJ CQkgKiBEU00gKi8KIAlXYWxVc2FnZSAgICp3YWxfdXNhZ2U7CQkvKiB3YWx1c2FnZSBhcmVhIGlu IERTTSAqLwogCVNoYXJlZEV4ZWN1dG9ySW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50YXRpb247 IC8qIG9wdGlvbmFsICovCiAJc3RydWN0IFNoYXJlZEppdEluc3RydW1lbnRhdGlvbiAqaml0X2lu c3RydW1lbnRhdGlvbjsJLyogb3B0aW9uYWwgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL2luc3RydW1lbnQuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaApp bmRleCA1YTZlZmY3NWM2Li43ZmM3MjgxYjFhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVj dXRvci9pbnN0cnVtZW50LmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5o CkBAIC00MSw2ICs0MSwxNCBAQCB0eXBlZGVmIHN0cnVjdCBCdWZmZXJVc2FnZQogCWluc3RyX3Rp bWUJdGVtcF9ibGtfd3JpdGVfdGltZTsJLyogdGltZSBzcGVudCB3cml0aW5nIHRlbXAgYmxvY2tz ICovCiB9IEJ1ZmZlclVzYWdlOwogCit0eXBlZGVmIHN0cnVjdCBTdG9yYWdlSU9Vc2FnZQorewor CWxvbmcJCWluYmxvY2s7CQkvKiAjIG9mIHRpbWVzIHRoZSBmaWxlIHN5c3RlbSBoYWQgdG8gcGVy Zm9ybQorCQkJCQkJCQkgKiBpbnB1dCAqLworCWxvbmcJCW91dGJsb2NrOwkJLyogIyBvZiB0aW1l cyB0aGUgZmlsZSBzeXN0ZW0gaGFkIHRvIHBlcmZvcm0KKwkJCQkJCQkJICogb3V0cHV0ICovCit9 IFN0b3JhZ2VJT1VzYWdlOworCiAvKgogICogV2FsVXNhZ2UgdHJhY2tzIG9ubHkgV0FMIGFjdGl2 aXR5IGxpa2UgV0FMIHJlY29yZHMgZ2VuZXJhdGlvbiB0aGF0CiAgKiBjYW4gYmUgbWVhc3VyZWQg cGVyIHF1ZXJ5IGFuZCBpcyBkaXNwbGF5ZWQgYnkgRVhQTEFJTiBjb21tYW5kLApAQCAtOTksNiAr MTA3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgV29ya2VySW5zdHJ1bWVudGF0aW9uCiB9IFdvcmtlcklu c3RydW1lbnRhdGlvbjsKIAogZXh0ZXJuIFBHRExMSU1QT1JUIEJ1ZmZlclVzYWdlIHBnQnVmZmVy VXNhZ2U7CitleHRlcm4gUEdETExJTVBPUlQgU3RvcmFnZUlPVXNhZ2UgcGdTdG9yYWdlSU9Vc2Fn ZVBhcmFsbGVsOwogZXh0ZXJuIFBHRExMSU1QT1JUIFdhbFVzYWdlIHBnV2FsVXNhZ2U7CiAKIGV4 dGVybiBJbnN0cnVtZW50YXRpb24gKkluc3RyQWxsb2MoaW50IG4sIGludCBpbnN0cnVtZW50X29w dGlvbnMsCkBAIC0xMDksMTEgKzExOCwxNSBAQCBleHRlcm4gdm9pZCBJbnN0clN0b3BOb2RlKElu c3RydW1lbnRhdGlvbiAqaW5zdHIsIGRvdWJsZSBuVHVwbGVzKTsKIGV4dGVybiB2b2lkIEluc3Ry VXBkYXRlVHVwbGVDb3VudChJbnN0cnVtZW50YXRpb24gKmluc3RyLCBkb3VibGUgblR1cGxlcyk7 CiBleHRlcm4gdm9pZCBJbnN0ckVuZExvb3AoSW5zdHJ1bWVudGF0aW9uICppbnN0cik7CiBleHRl cm4gdm9pZCBJbnN0ckFnZ05vZGUoSW5zdHJ1bWVudGF0aW9uICpkc3QsIEluc3RydW1lbnRhdGlv biAqYWRkKTsKLWV4dGVybiB2b2lkIEluc3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KHZvaWQpOwotZXh0 ZXJuIHZvaWQgSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwgV2Fs VXNhZ2UgKndhbHVzYWdlKTsKLWV4dGVybiB2b2lkIEluc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KEJ1 ZmZlclVzYWdlICpidWZ1c2FnZSwgV2FsVXNhZ2UgKndhbHVzYWdlKTsKK2V4dGVybiB2b2lkIElu c3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KFN0b3JhZ2VJT1VzYWdlICpzdG9yYWdlaW91c2FnZSk7Citl eHRlcm4gdm9pZCBJbnN0ckVuZFBhcmFsbGVsUXVlcnkoQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlLCBT dG9yYWdlSU9Vc2FnZSAqc3RvcmFnZWlvdXNhZ2UsIFdhbFVzYWdlICp3YWx1c2FnZSwgU3RvcmFn ZUlPVXNhZ2UgKnN0b3JhZ2Vpb3VzYWdlX3N0YXJ0KTsKK2V4dGVybiB2b2lkIEluc3RyQWNjdW1Q YXJhbGxlbFF1ZXJ5KEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwgU3RvcmFnZUlPVXNhZ2UgKnN0b3Jh Z2Vpb3VzYWdlLCBXYWxVc2FnZSAqd2FsdXNhZ2UpOwogZXh0ZXJuIHZvaWQgQnVmZmVyVXNhZ2VB Y2N1bURpZmYoQnVmZmVyVXNhZ2UgKmRzdCwKIAkJCQkJCQkJIGNvbnN0IEJ1ZmZlclVzYWdlICph ZGQsIGNvbnN0IEJ1ZmZlclVzYWdlICpzdWIpOworZXh0ZXJuIHZvaWQgU3RvcmFnZUlPVXNhZ2VB Y2N1bURpZmYoU3RvcmFnZUlPVXNhZ2UgKmRzdCwKKwkJCQkJCQkJCWNvbnN0IFN0b3JhZ2VJT1Vz YWdlICphZGQsIGNvbnN0IFN0b3JhZ2VJT1VzYWdlICpzdWIpOworZXh0ZXJuIHZvaWQgU3RvcmFn ZUlPVXNhZ2VBZGQoU3RvcmFnZUlPVXNhZ2UgKmRzdCwgY29uc3QgU3RvcmFnZUlPVXNhZ2UgKmFk ZCk7CitleHRlcm4gdm9pZCBHZXRTdG9yYWdlSU9Vc2FnZShTdG9yYWdlSU9Vc2FnZSAqdXNhZ2Up OwogZXh0ZXJuIHZvaWQgV2FsVXNhZ2VBY2N1bURpZmYoV2FsVXNhZ2UgKmRzdCwgY29uc3QgV2Fs VXNhZ2UgKmFkZCwKIAkJCQkJCQkgIGNvbnN0IFdhbFVzYWdlICpzdWIpOwogCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9wb3J0L3dpbjMyL3N5cy9yZXNvdXJjZS5oIGIvc3JjL2luY2x1ZGUvcG9y dC93aW4zMi9zeXMvcmVzb3VyY2UuaAppbmRleCBhMTRmZWViNTg0Li4yNzBkYzM3Yzg0IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9wb3J0L3dpbjMyL3N5cy9yZXNvdXJjZS5oCisrKyBiL3NyYy9p bmNsdWRlL3BvcnQvd2luMzIvc3lzL3Jlc291cmNlLmgKQEAgLTEzLDYgKzEzLDggQEAgc3RydWN0 IHJ1c2FnZQogewogCXN0cnVjdCB0aW1ldmFsIHJ1X3V0aW1lOwkvKiB1c2VyIHRpbWUgdXNlZCAq LwogCXN0cnVjdCB0aW1ldmFsIHJ1X3N0aW1lOwkvKiBzeXN0ZW0gdGltZSB1c2VkICovCisJbG9u ZwkJcnVfaW5ibG9jazsJCS8qIEN1cnJlbnRseSBhbHdheXMgMCBmb3IgV2luZG93cyAqLworCWxv bmcJCXJ1X291YmxvY2s7CQkvKiBDdXJyZW50bHkgYWx3YXlzIDAgZm9yIFdpbmRvd3MgKi8KIH07 CiAKIGV4dGVybiBpbnQJZ2V0cnVzYWdlKGludCB3aG8sIHN0cnVjdCBydXNhZ2UgKnJ1c2FnZSk7 CmRpZmYgLS1naXQgYS9zcmMvcG9ydC93aW4zMmdldHJ1c2FnZS5jIGIvc3JjL3BvcnQvd2luMzJn ZXRydXNhZ2UuYwppbmRleCA2YTE5N2M5NDM3Li4yN2YwZWEwNTJhIDEwMDY0NAotLS0gYS9zcmMv cG9ydC93aW4zMmdldHJ1c2FnZS5jCisrKyBiL3NyYy9wb3J0L3dpbjMyZ2V0cnVzYWdlLmMKQEAg LTU3LDUgKzU3LDkgQEAgZ2V0cnVzYWdlKGludCB3aG8sIHN0cnVjdCBydXNhZ2UgKnJ1c2FnZSkK IAlydXNhZ2UtPnJ1X3V0aW1lLnR2X3NlYyA9IGxpLlF1YWRQYXJ0IC8gMTAwMDAwMEw7CiAJcnVz YWdlLT5ydV91dGltZS50dl91c2VjID0gbGkuUXVhZFBhcnQgJSAxMDAwMDAwTDsKIAorCS8qIEN1 cnJlbnRseSBhbHdheXMgMCBmb3IgV2luZG93cyAqLworCXJ1c2FnZS0+cnVfaW5ibG9jayA9IDA7 CisJcnVzYWdlLT5ydV9vdWJsb2NrID0gMDsKKwogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9leHBsYWluLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvZXhwbGFpbi5vdXQKaW5kZXggZWUzMWU0MWQ1MC4uZjU2OWQ4ZjZmZCAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9leHBsYWluLm91dAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2V4cGxhaW4ub3V0CkBAIC0xMjcsMTAgKzEyNywxNiBAQCBzZWxl Y3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5emUsIGJ1ZmZlcnMsIGZvcm1hdCB4bWwp IHNlbGVjdCAqIGZyb20gaW50OAogICAgICAgIDxMb2NhbC1Xcml0dGVuLUJsb2Nrcz5OPC9Mb2Nh bC1Xcml0dGVuLUJsb2Nrcz4gICsKICAgICAgICA8VGVtcC1SZWFkLUJsb2Nrcz5OPC9UZW1wLVJl YWQtQmxvY2tzPiAgICAgICAgICArCiAgICAgICAgPFRlbXAtV3JpdHRlbi1CbG9ja3M+TjwvVGVt cC1Xcml0dGVuLUJsb2Nrcz4gICAgKworICAgICAgIDxTdG9yYWdlLUktTy1SZWFkPk48L1N0b3Jh Z2UtSS1PLVJlYWQ+ICAgICAgICAgICsKKyAgICAgICA8U3RvcmFnZS1JLU8tUmVhZD5OPC9TdG9y YWdlLUktTy1SZWFkPiAgICAgICAgICArCiAgICAgIDwvUGxhbm5pbmc+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKwogICAgICA8UGxhbm5pbmctVGltZT5OLk48L1BsYW5u aW5nLVRpbWU+ICAgICAgICAgICAgICAgICsKICAgICAgPFRyaWdnZXJzPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCiAgICAgIDwvVHJpZ2dlcnM+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICA8RXhlY3V0aW9uPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICA8U3RvcmFnZS1JLU8tUmVhZD5O PC9TdG9yYWdlLUktTy1SZWFkPiAgICAgICAgICArCisgICAgICAgPFN0b3JhZ2UtSS1PLVJlYWQ+ TjwvU3RvcmFnZS1JLU8tUmVhZD4gICAgICAgICAgKworICAgICA8L0V4ZWN1dGlvbj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKICAgICAgPEV4ZWN1dGlvbi1UaW1lPk4u TjwvRXhlY3V0aW9uLVRpbWU+ICAgICAgICAgICAgICArCiAgICA8L1F1ZXJ5PiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwogIDwvZXhwbGFpbj4KQEAgLTE3NSw2 ICsxODEsOCBAQCBzZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5emUsIHNlcmlh bGl6ZSwgYnVmZmVycywgZm9ybWF0IHlhbWwpIHNlbGVjdAogICAgICBMb2NhbCBXcml0dGVuIEJs b2NrczogTiAgKwogICAgICBUZW1wIFJlYWQgQmxvY2tzOiBOICAgICAgKwogICAgICBUZW1wIFdy aXR0ZW4gQmxvY2tzOiBOICAgKworICAgICBTdG9yYWdlIEkvTyBSZWFkOiBOICAgICAgKworICAg ICBTdG9yYWdlIEkvTyBSZWFkOiBOICAgICAgKwogICAgUGxhbm5pbmcgVGltZTogTi5OICAgICAg ICAgKwogICAgVHJpZ2dlcnM6ICAgICAgICAgICAgICAgICAgKwogICAgU2VyaWFsaXphdGlvbjog ICAgICAgICAgICAgKwpAQCAtMTkxLDYgKzE5OSw5IEBAIHNlbGVjdCBleHBsYWluX2ZpbHRlcign ZXhwbGFpbiAoYW5hbHl6ZSwgc2VyaWFsaXplLCBidWZmZXJzLCBmb3JtYXQgeWFtbCkgc2VsZWN0 CiAgICAgIExvY2FsIFdyaXR0ZW4gQmxvY2tzOiBOICArCiAgICAgIFRlbXAgUmVhZCBCbG9ja3M6 IE4gICAgICArCiAgICAgIFRlbXAgV3JpdHRlbiBCbG9ja3M6IE4gICArCisgICBFeGVjdXRpb246 ICAgICAgICAgICAgICAgICArCisgICAgIFN0b3JhZ2UgSS9PIFJlYWQ6IE4gICAgICArCisgICAg IFN0b3JhZ2UgSS9PIFJlYWQ6IE4gICAgICArCiAgICBFeGVjdXRpb24gVGltZTogTi5OCiAoMSBy b3cpCiAKQEAgLTIzNyw3ICsyNDgsMTMgQEAgc2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdleHBsYWlu IChidWZmZXJzLCBmb3JtYXQganNvbikgc2VsZWN0ICogZnJvbSBpbnQ4X3RibCBpOCcKICAgICAg ICAiTG9jYWwgRGlydGllZCBCbG9ja3MiOiBOLCAgKwogICAgICAgICJMb2NhbCBXcml0dGVuIEJs b2NrcyI6IE4sICArCiAgICAgICAgIlRlbXAgUmVhZCBCbG9ja3MiOiBOLCAgICAgICsKLSAgICAg ICAiVGVtcCBXcml0dGVuIEJsb2NrcyI6IE4gICAgKworICAgICAgICJUZW1wIFdyaXR0ZW4gQmxv Y2tzIjogTiwgICArCisgICAgICAgIlN0b3JhZ2UgSS9PIFJlYWQiOiBOLCAgICAgICsKKyAgICAg ICAiU3RvcmFnZSBJL08gUmVhZCI6IE4gICAgICAgKworICAgICB9LCAgICAgICAgICAgICAgICAg ICAgICAgICAgICArCisgICAgICJFeGVjdXRpb24iOiB7ICAgICAgICAgICAgICAgICsKKyAgICAg ICAiU3RvcmFnZSBJL08gUmVhZCI6IE4sICAgICAgKworICAgICAgICJTdG9yYWdlIEkvTyBSZWFk IjogTiAgICAgICArCiAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKICAgIH0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwogIF0KQEAgLTI5OSwxMSArMzE2LDE3IEBA IHNlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAoYW5hbHl6ZSwgYnVmZmVycywgZm9ybWF0 IGpzb24pIHNlbGVjdCAqIGZyb20gaW50CiAgICAgICAgIkxvY2FsIEkvTyBSZWFkIFRpbWUiOiBO Lk4sICArCiAgICAgICAgIkxvY2FsIEkvTyBXcml0ZSBUaW1lIjogTi5OLCArCiAgICAgICAgIlRl bXAgSS9PIFJlYWQgVGltZSI6IE4uTiwgICArCi0gICAgICAgIlRlbXAgSS9PIFdyaXRlIFRpbWUi OiBOLk4gICArCisgICAgICAgIlRlbXAgSS9PIFdyaXRlIFRpbWUiOiBOLk4sICArCisgICAgICAg IlN0b3JhZ2UgSS9PIFJlYWQiOiBOLCAgICAgICArCisgICAgICAgIlN0b3JhZ2UgSS9PIFJlYWQi OiBOICAgICAgICArCiAgICAgIH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCiAgICAg ICJQbGFubmluZyBUaW1lIjogTi5OLCAgICAgICAgICArCiAgICAgICJUcmlnZ2VycyI6IFsgICAg ICAgICAgICAgICAgICArCiAgICAgIF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisg ICAgICJFeGVjdXRpb24iOiB7ICAgICAgICAgICAgICAgICArCisgICAgICAgIlN0b3JhZ2UgSS9P IFJlYWQiOiBOLCAgICAgICArCisgICAgICAgIlN0b3JhZ2UgSS9PIFJlYWQiOiBOICAgICAgICAr CisgICAgIH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCiAgICAgICJFeGVjdXRpb24g VGltZSI6IE4uTiAgICAgICAgICArCiAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArCiAgXQpAQCAtNDIzLDEyICs0NDYsMTggQEAgc2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdleHBs YWluIChtZW1vcnksIGFuYWx5emUsIGZvcm1hdCBqc29uKSBzZWxlY3QgKiBmcm9tIGludDgKICAg ICAgICAiTG9jYWwgV3JpdHRlbiBCbG9ja3MiOiBOLCAgKwogICAgICAgICJUZW1wIFJlYWQgQmxv Y2tzIjogTiwgICAgICArCiAgICAgICAgIlRlbXAgV3JpdHRlbiBCbG9ja3MiOiBOLCAgICsKKyAg ICAgICAiU3RvcmFnZSBJL08gUmVhZCI6IE4sICAgICAgKworICAgICAgICJTdG9yYWdlIEkvTyBS ZWFkIjogTiwgICAgICArCiAgICAgICAgIk1lbW9yeSBVc2VkIjogTiwgICAgICAgICAgICsKICAg ICAgICAiTWVtb3J5IEFsbG9jYXRlZCI6IE4gICAgICAgKwogICAgICB9LCAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCiAgICAgICJQbGFubmluZyBUaW1lIjogTi5OLCAgICAgICAgICsKICAg ICAgIlRyaWdnZXJzIjogWyAgICAgICAgICAgICAgICAgKwogICAgICBdLCAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgICAgICJFeGVjdXRpb24iOiB7ICAgICAgICAgICAgICAgICsKKyAg ICAgICAiU3RvcmFnZSBJL08gUmVhZCI6IE4sICAgICAgKworICAgICAgICJTdG9yYWdlIEkvTyBS ZWFkIjogTiAgICAgICArCisgICAgIH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKICAg ICAgIkV4ZWN1dGlvbiBUaW1lIjogTi5OICAgICAgICAgKwogICAgfSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCiAgXQpAQCAtNjQxLDYgKzY3MCw3IEBAIHNlbGVjdCBqc29uYl9wcmV0 dHkoCiAgICAgICAgICB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArCiAgICAgICAgICAiUGxhbm5pbmciOiB7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCiAgICAgICAgICAgICAgIkxvY2FsIEhpdCBCbG9ja3MiOiAwLCAgICAg ICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgIlN0b3JhZ2UgSS9PIFJlYWQiOiAw LCAgICAgICAgICAgICAgICAgICAgICAgICArCiAgICAgICAgICAgICAgIlRlbXAgUmVhZCBCbG9j a3MiOiAwLCAgICAgICAgICAgICAgICAgICAgICAgICArCiAgICAgICAgICAgICAgIkxvY2FsIFJl YWQgQmxvY2tzIjogMCwgICAgICAgICAgICAgICAgICAgICAgICArCiAgICAgICAgICAgICAgIlNo YXJlZCBIaXQgQmxvY2tzIjogMCwgICAgICAgICAgICAgICAgICAgICAgICArCkBAIC02NTMsNiAr NjgzLDkgQEAgc2VsZWN0IGpzb25iX3ByZXR0eSgKICAgICAgICAgIH0sICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKICAgICAgICAgICJUcmlnZ2VycyI6 IFsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKICAgICAgICAgIF0sICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAg ICJFeGVjdXRpb24iOiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAg ICAgICAgICAgICAiU3RvcmFnZSBJL08gUmVhZCI6IDAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyAgICAgICAgIH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICsKICAgICAgICAgICJQbGFubmluZyBUaW1lIjogMC4wLCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKICAgICAgICAgICJFeGVjdXRpb24gVGltZSI6IDAuMCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsKICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVu dC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXgg OWEzYmVlOTNkZS4uYTVlZWFjYTU1YyAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5 cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTI1 NTgsNiArMjU1OCw3IEBAIFNTTAogU1NMRXh0ZW5zaW9uSW5mb0NvbnRleHQKIFNTTF9DVFgKIFNU QVJUVVBJTkZPCitTdG9yYWdlSU9Vc2FnZQogU1RSTEVOCiBTVgogU1lOQ0hST05JWkFUSU9OX0JB UlJJRVIKCmJhc2UtY29tbWl0OiAzZDE3ZDdkN2ZiN2E0NjAzYjQ4YWNiMjc1YjVhNDE2ZjExMGRi NDY0Ci0tIAoyLjQzLjAKCg== --=_a3f5cbe253a87c1c40838a23fa6ce248--