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.96) (envelope-from ) id 1w8pZ7-000vI0-25 for pgsql-hackers@arkaria.postgresql.org; Sat, 04 Apr 2026 01:12:46 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w8pZ5-00Euf9-1B for pgsql-hackers@arkaria.postgresql.org; Sat, 04 Apr 2026 01:12:43 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w8pZ4-00Euez-24 for pgsql-hackers@lists.postgresql.org; Sat, 04 Apr 2026 01:12:43 +0000 Received: from mail-pj1-x1035.google.com ([2607:f8b0:4864:20::1035]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w8pZ0-00000000RtZ-3Nuq for pgsql-hackers@lists.postgresql.org; Sat, 04 Apr 2026 01:12:42 +0000 Received: by mail-pj1-x1035.google.com with SMTP id 98e67ed59e1d1-35d9827661bso1197919a91.3 for ; Fri, 03 Apr 2026 18:12:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775265158; cv=none; d=google.com; s=arc-20240605; b=XG2A5bATqXfd7CCnM+oK6GZICoFlSxtoGKpDjbKkmn1KYB9sBZc5IMUNU2zSMomGGx rfw1g3dOIlxOK4MJMJTuyEsGvaO0pI240wcc49uHOBzsmw6HGoADgREApePS2OHvNl7y khZukW2Ga/C7NCEB9fClb7WxqLigxmfdL88E1ohWo7RxD7SLTyhbjjm39Mo0V9s8K6Ps 08BK30a/vLzjoX+o06qdzYG36leKmZ8wpl+jxQHIEQePggfove6F3SGpMAsznx166N+D 3dxHROFyu60CjWe5NvP9ZIAm1EHTt4Xmk1iarmuDPNK9vYRRg9DPXD5ETGYp5SCUg+r/ 9xbA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=WHQ33ErZOZYAY4WTGRi/IbqC57MxW0GM0BuaYSmGAUs=; fh=PGAGKX3OQLVwz4WfkBbHvFZPZa/fLHG4xixgeAzEhJA=; b=flfUTr+IFiFaHuYcanwh7BKjzdPe3WtOEYMWlJEYFtGUuVh9Vwvm35UQNK6fRmVfR4 CT0GZLODL8aDHu3U8bDD7+xMGGxefh0VWyr0n4KWQgkULPXIW0tIHXnS2fZS4GeizHe4 +C11KgFpCcBz7zczybT/C+iFL5U2nBVebzCFlsYSsoerLC9nFJp168CjcOH5Xr74+5G/ YK8ON3Jd4lxRL9GQJ5IxRbTn8gRM+gF9WPqZlOOS6sU6naIf3CbKP6FbBn6YjnEoAFJd upvMhFUpfXVdtIpYl9L83FwrBvNfwfmcc//qQqswfe7Cc/yyvg879pBNTpFljcpqCFtj Cm0A==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775265158; x=1775869958; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=WHQ33ErZOZYAY4WTGRi/IbqC57MxW0GM0BuaYSmGAUs=; b=GzmEnuBZVVu9gbZOqZA1UKoTIUl2rA7ev/MtcjdIAklA3gys6JacF1S85iyCZvGFZF uGwXuA6VB2zJQ4kXRJ64ETCMY2mkvIxfBlRFlx7alo1FbZVmoff0GPZ6eMFgrdLYelaw KVazcZCj0I0ZaZ2bii4JT8lvNdCRfdtMHbUKzWXbi7hTVoPhZzyyBnkvKHodUohNO9cx X/D+35o6TKFfFB+YthoUweo8Z4+qPyCdyhwRpg8UGJXaMZQh41o8+P8v46dpIcEAzPwV 5slS18m7sYlQMNNLmCEOG+Z7j56jJcJNeK7zZNuHZ9wf/TWwhPCPFm/9j+gDZMWkl45q OYUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775265158; x=1775869958; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=WHQ33ErZOZYAY4WTGRi/IbqC57MxW0GM0BuaYSmGAUs=; b=iLBKvBrc6FMPFZCnayx2SOZvVWTHRFZfAxNTS4FPseAXt7K2YB18KhejgJNHNbt0NH Dc/5/11aeMyjoHg1HpXI8sL6v7qAqzKqmQuYgTwDEwH4diUZLMU2Zl43DI11LoGr6SiB H5DewqI/OUxpzQYflw0kLVSmcIdsrwLoARFPR12S1MSiRInVazk4Mykg/t6GnodRHCEw w+xaF6V6twWE8tJHD9SJh0nu2lyzOWltOSHovsWJXM0566xystYUWO7VmV2CNcYISKwW E2gfQcP2p53D1LhzqzdqzzLV+mSJ013tQRJF8uazfC3NF6JVH0ZNT4yp67ip6omYl481 OTpQ== X-Forwarded-Encrypted: i=1; AJvYcCWLSjLGkBbDYQdrJrA4TT5+v9kKGobfKzzqZf++03MbjBlTCkmDixLpsxu5skV+PXLdj20o7HmzbNIlsB5E@lists.postgresql.org X-Gm-Message-State: AOJu0YwXg+UtQEk53R2xUk1MLxi+Q+ocLWOeFTJA0BA4QPzKQmDcpgZX GYJ3iCMZmPdn5OMB9LmxTmJs23qGJxe6VDJWRr9Gwm+Cn2JuUvlH0JawD9+AVpV4Nfn/08z6guN wcOWHyuwiD7AXsEHaWxKRHNnr/my3BeY= X-Gm-Gg: AeBDieuieVWt0Yqmkj5B/RJzshBbk8O19V9wTKnhRgJcAjZQuePMn6m8AAg1NgVJJY8 l3F3KTCKRmH8bs4lY7B7NcRSWkAdzYpyAo0N3xF6+t8irqa4hrGUUuiWw3b9TKKQJ8LeWmHMKnw PtmSTtHVDSlavlL4UrpLeqLL/LrwLPaxj1yx+z5TaeHutW0/33DOSqP+52G8sQ7jLsdY1IzHc3e 7S60IehvHYhgMcQIteh39xK57Ngdn4Xgm0wZqLzOaMFi7QmQO23GHTfK+7Q/xa5QAElBbcKYKgD 0eXRb/KJ X-Received: by 2002:a17:90b:6cd:b0:35d:9560:3f09 with SMTP id 98e67ed59e1d1-35de69a5c3fmr3733914a91.24.1775265157990; Fri, 03 Apr 2026 18:12:37 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Masahiko Sawada Date: Fri, 3 Apr 2026 18:11:58 -0700 X-Gm-Features: AQROBzBuO1JYBQqDT9VOtxWh17GFgi5rOqKdGmaAix-NQ9m8agXn0Ok3FcIwpII Message-ID: Subject: Re: POC: Parallel processing of indexes in autovacuum To: Daniil Davydov <3danissimo@gmail.com> Cc: Alexander Korotkov , SATYANARAYANA NARLAPURAM , Bharath Rupireddy , Sami Imseih , Matheus Alcantara , Maxim Orlov , Postgres hackers Content-Type: multipart/mixed; boundary="0000000000001fe710064e9821ed" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000001fe710064e9821ed Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Apr 3, 2026 at 6:45=E2=80=AFAM Daniil Davydov <3danissimo@gmail.com= > wrote: > > Hi, > > On Fri, Apr 3, 2026 at 6:00=E2=80=AFAM Masahiko Sawada wrote: > > > > On Thu, Apr 2, 2026 at 8:10=E2=80=AFAM Daniil Davydov <3danissimo@gmail= .com> wrote: > > > > > > I think we should add some cleanup for autovacuum near the ParallelCo= ntext > > > cleanup, since they are interconnected. I also want to return our tes= ts that > > > are triggering ERROR/PANIC in the leader worker in order to check whe= ther all > > > resources are released. I hope I will be able to get to that by tomor= row > > > evening. > > > > I think that the beginning of vacuum loop (in PG_TRY() block in > > vacuum()) seems better place as we're resetting vacuum delay > > parameters: > > > > in_vacuum =3D true; > > VacuumFailsafeActive =3D false; > > VacuumUpdateCosts(); > > VacuumCostBalance =3D 0; > > VacuumCostBalanceLocal =3D 0; > > VacuumSharedCostBalance =3D NULL; > > VacuumActiveNWorkers =3D NULL; > > > > I am still thinking that this pointer is related to the ParallelContext, = and it > is a bit confusing that we can manipulate it outside all "parallel" logic= . > Since this variable points to the DSM it looks very natural for me if its > lifetime will be similar to the DSM. Please, see attached patch, that res= ets > this pointer during dsm detaching. Sounds a reasonable apporach. Regarding the regression tests, ISTM we no longer need 'autovacuum-leader-before-indexes-processing' injection point since it currently tests that parallel workers update their delay parameters during the initialization (i.e., in parallel_vacuum_main()). In order to verify the behavior of workers updating their delay parameters while processing indexes, we would need another injection ponit to stop parallel workers, which seems overkill to me. So I removed it but the test still covers the propagation logic. Regarding the patch, I don't think it's a good idea to include bgworker_internals.h from reloptions.c: @@ -28,6 +28,7 @@ #include "commands/defrem.h" #include "commands/tablespace.h" #include "nodes/makefuncs.h" +#include "postmaster/bgworker_internals.h" #include "storage/lock.h" #include "utils/array.h" #include "utils/attoptcache.h" @@ -236,6 +237,15 @@ static relopt_int intRelOpts[] =3D }, SPGIST_DEFAULT_FILLFACTOR, SPGIST_MIN_FILLFACTOR, 100 }, + { + { + "autovacuum_parallel_workers", + "Maximum number of parallel autovacuum workers that can be used for processing this table.", + RELOPT_KIND_HEAP, + ShareUpdateExclusiveLock + }, + -1, -1, MAX_PARALLEL_WORKER_LIMIT + }, I'd leave the maximum value as 1024. I've attached patch and please check it. I think it's a good shape and I'm going to push it next Monday barrying objections. Regards, -- Masahiko Sawada Amazon Web Services: https://aws.amazon.com --0000000000001fe710064e9821ed Content-Type: text/x-patch; charset="US-ASCII"; name="v37-0001-Allow-autovacuum-to-use-parallel-vacuum-workers.patch" Content-Disposition: attachment; filename="v37-0001-Allow-autovacuum-to-use-parallel-vacuum-workers.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnjmuzfi0 RnJvbSBkYzYxMDVjODYwYzE0NWEwMThlOTI4Yjk3YTcwYjg0ZTI5ZDA1YzAyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBUdWUsIDE3IE1hciAyMDI2IDAyOjE4OjA5ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MzddIEFsbG93IGF1dG92YWN1dW0gdG8gdXNlIHBhcmFsbGVsIHZhY3V1bSB3b3JrZXJzLgoK UHJldmlvdXNseSwgYXV0b3ZhY3V1bSBhbHdheXMgZGlzYWJsZWQgcGFyYWxsZWwgdmFjdXVtIHJl Z2FyZGxlc3Mgb2YKdGhlIHRhYmxlJ3MgaW5kZXggY291bnQgb3IgY29uZmlndXJhdGlvbi4gVGhp cyBjb21taXQgZW5hYmxlcwphdXRvdmFjdXVtIHdvcmtlcnMgdG8gdXNlIHBhcmFsbGVsIGluZGV4 IHZhY3V1bWluZyBhbmQgaW5kZXggY2xlYW51cCwKdXNpbmcgdGhlIHNhbWUgcGFyYWxsZWwgdmFj dXVtIGluZnJhc3RydWN0dXJlIGFzIG1hbnVhbCBWQUNVVU0uCgpUd28gbmV3IGNvbmZpZ3VyYXRp b24gb3B0aW9ucyBjb250cm9sIHRoZSBmZWF0dXJlLiBUaGUgR1VDCmF1dG92YWN1dW1fbWF4X3Bh cmFsbGVsX3dvcmtlcnMgc2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgcGFyYWxsZWwKd29ya2Vy cyBhIHNpbmdsZSBhdXRvdmFjdXVtIHdvcmtlciBtYXkgbGF1bmNoOyBpdCBkZWZhdWx0cyB0byAw LApwcmVzZXJ2aW5nIGV4aXN0aW5nIGJlaGF2aW9yIHVubGVzcyBleHBsaWNpdGx5IGVuYWJsZWQu IFRoZSBwZXItdGFibGUKc3RvcmFnZSBwYXJhbWV0ZXIgYXV0b3ZhY3V1bV9wYXJhbGxlbF93b3Jr ZXJzIHByb3ZpZGVzIHBlci10YWJsZSBsaW1pdHMuCkEgdmFsdWUgb2YgMCBkaXNhYmxlcyBwYXJh bGxlbCB2YWN1dW0gZm9yIHRoZSB0YWJsZSwgYSBwb3NpdGl2ZSB2YWx1ZQpjYXBzIHRoZSB3b3Jr ZXIgY291bnQgKHN0aWxsIGJvdW5kZWQgYnkgdGhlIEdVQyksIGFuZCAtMSAodGhlIGRlZmF1bHQp CmRlZmVycyB0byB0aGUgR1VDLgoKVG8gaGFuZGxlIGNhc2VzIHdoZXJlIGF1dG92YWN1dW0gd29y a2VycyByZWNlaXZlIGEgU0lHSFVQIGFuZCB1cGRhdGUKdGhlaXIgY29zdC1iYXNlZCB2YWN1dW0g ZGVsYXkgcGFyYW1ldGVycyBtaWQtb3BlcmF0aW9uLCBhIG5ldwpwcm9wYWdhdGlvbiBtZWNoYW5p c20gaXMgYWRkZWQgdG8gdmFjdXVtcGFyYWxsZWwuYy4gVGhlIGxlYWRlciBzdG9yZXMKaXRzIGVm ZmVjdGl2ZSBjb3N0IHBhcmFtZXRlcnMgaW4gYSBEU00gc2VnbWVudC4gUGFyYWxsZWwgdmFjdXVt CndvcmtlcnMgcG9sbCBmb3IgY2hhbmdlcyBpbiB2YWN1dW1fZGVsYXlfcG9pbnQoKTsgaWYgYW4g dXBkYXRlIGlzCmRldGVjdGVkLCB0aGV5IGFwcGx5IHRoZSBuZXcgdmFsdWVzIGxvY2FsbHkgdmlh IFZhY3V1bVVwZGF0ZUNvc3RzKCkuCgpBIG5ldyB0ZXN0IG1vZHVsZSwgc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2F1dG92YWN1dW0sIGlzIGFkZGVkIHRvCnZlcmlmeSB0aGF0IHBhcmFsbGVsIGF1dG92 YWN1dW0gd29ya2VycyBhcmUgY29ycmVjdGx5IGxhdW5jaGVkIGFuZAp0aGF0IGNvc3QtcGFyYW1l dGVyIHVwZGF0ZXMgYXJlIHByb3BhZ2F0ZWQgYXMgZXhwZWN0ZWQuCgpBdXRob3I6IERhbmlpbCBE YXZ5ZG92IDwzZGFuaXNzaW1vQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IE1hc2FoaWtvIFNhd2Fk YSA8c2F3YWRhLm1zaGtAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogU2FtaSBJbXNlaWggPHNhbWlt c2VpaEBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBNYXRoZXVzIEFsY2FudGFyYSA8bWF0aGV1c3Nz aWx2OTdAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQmhhcmF0aCBSdXBpcmVkZHkgPGJoYXJhdGgu cnVwaXJlZGR5Zm9ycG9zdGdyZXNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQWxleGFuZGVyIEtv cm90a292IDxhZWtvcm90a292QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IHplbmdtYW4gPHplbmdt YW5AaGFsb2RidGVjaC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FDRz1l elpPck5zdUxvRVRMRDFnQXN3Wk11SDJuR0dxN09nY2MwUU9FNWhoV2F3PWN3QG1haWwuZ21haWwu Y29tCi0tLQogZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sICAgICAgICAgICAgICAgICAgICAgIHwg IDI0ICsrCiBkb2Mvc3JjL3NnbWwvbWFpbnRlbmFuY2Uuc2dtbCAgICAgICAgICAgICAgICAgfCAg MzQgKysrCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sICAgICAgICAgICAgfCAg MTYgKysKIGRvYy9zcmMvc2dtbC9yZWYvdmFjdXVtLnNnbWwgICAgICAgICAgICAgICAgICB8ICAy MyArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9yZWxvcHRpb25zLmMgICAgICAgIHwgIDEx ICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgICAgICAgICB8ICAxMiAr CiBzcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYyAgICAgICAgICAgICAgICAgfCAgMjIgKy0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgICAgICAgICB8IDIyNyArKysr KysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jICAgICAg ICAgICB8ICAyNSArLQogc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMgICAgICAgICAg ICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMgICAgICAgICAgICAgICAg ICB8ICAxMCArLQogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQgICAg IHwgICA4ICsKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSB8 ICAgMSArCiBzcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgICAgICAgICAgICAgICAgfCAg IDEgKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmggICAgICAgICAgICAgICAgIHwgICAy ICsKIHNyYy9pbmNsdWRlL21pc2NhZG1pbi5oICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSAr CiBzcmMvaW5jbHVkZS91dGlscy9yZWwuaCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwog c3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNy Yy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMv dGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS8uZ2l0aWdub3JlICAgfCAgIDIgKwogc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vTWFrZWZpbGUgICAgIHwgIDIwICsrCiBzcmMvdGVz dC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS9tZXNvbi5idWlsZCAgfCAgMTUgKysKIC4uLi90LzAw MV9wYXJhbGxlbF9hdXRvdmFjdXVtLnBsICAgICAgICAgICAgICB8IDE4OSArKysrKysrKysrKysr KysKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAgMSAr CiAyNCBmaWxlcyBjaGFuZ2VkLCA2MTYgaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vLmdpdGln bm9yZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVt L01ha2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92 YWN1dW0vbWVzb24uYnVpbGQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rl c3RfYXV0b3ZhY3V1bS90LzAwMV9wYXJhbGxlbF9hdXRvdmFjdXVtLnBsCgpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4 IGQzZmVhNzM4Y2EzLi41ODQwZjQ5NzgxNyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZp Zy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAtMjkxOCw2ICsyOTE4LDcg QEAgaW5jbHVkZV9kaXIgJ2NvbmYuZCcKICAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaGVuIGNo YW5naW5nIHRoaXMgdmFsdWUsIGNvbnNpZGVyIGFsc28gYWRqdXN0aW5nCiAgICAgICAgICA8eHJl ZiBsaW5rZW5kPSJndWMtbWF4LXBhcmFsbGVsLXdvcmtlcnMiLz4sCisgICAgICAgICA8eHJlZiBs aW5rZW5kPSJndWMtYXV0b3ZhY3V1bS1tYXgtcGFyYWxsZWwtd29ya2VycyIvPiwKICAgICAgICAg IDx4cmVmIGxpbmtlbmQ9Imd1Yy1tYXgtcGFyYWxsZWwtbWFpbnRlbmFuY2Utd29ya2VycyIvPiwg YW5kCiAgICAgICAgICA8eHJlZiBsaW5rZW5kPSJndWMtbWF4LXBhcmFsbGVsLXdvcmtlcnMtcGVy LWdhdGhlciIvPi4KICAgICAgICAgPC9wYXJhPgpAQCAtOTQ4Niw2ICs5NDg3LDI5IEBAIENPUFkg cG9zdGdyZXNfbG9nIEZST00gJy9mdWxsL3BhdGgvdG8vbG9nZmlsZS5jc3YnIFdJVEggY3N2Owog ICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICAgPHZhcmxp c3RlbnRyeSBpZD0iZ3VjLWF1dG92YWN1dW0tbWF4LXBhcmFsbGVsLXdvcmtlcnMiIHhyZWZsYWJl bD0iYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyI+CisgICAgICAgPHRlcm0+PHZhcm5h bWU+YXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VyczwvdmFybmFtZT4gKDx0eXBlPmludGVn ZXI8L3R5cGU+KQorICAgICAgIDxpbmRleHRlcm0+CisgICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1l PmF1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnM8L3Zhcm5hbWU+PC9wcmltYXJ5PgorICAg ICAgICA8c2Vjb25kYXJ5PmNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9zZWNvbmRhcnk+CisgICAg ICAgPC9pbmRleHRlcm0+CisgICAgICAgPC90ZXJtPgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAg ICAgPHBhcmE+CisgICAgICAgICBTZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBwYXJhbGxlbCB3 b3JrZXJzIHRoYXQgY2FuIGJlIHVzZWQgYnkgYQorICAgICAgICAgc2luZ2xlIGF1dG92YWN1dW0g d29ya2VyIHRvIHByb2Nlc3MgaW5kZXhlcy4gVGhpcyBsaW1pdCBhcHBsaWVzCisgICAgICAgICBz cGVjaWZpY2FsbHkgdG8gdGhlIGluZGV4IHZhY3V1bWluZyBhbmQgaW5kZXggY2xlYW51cCBwaGFz ZXMgKGZvciB0aGUKKyAgICAgICAgIGRldGFpbHMgb2YgZWFjaCBhdXRvdmFjdXVtIHBoYXNlLCBw bGVhc2UgcmVmZXIgdG8gPHhyZWYgbGlua2VuZD0idmFjdXVtLXBoYXNlcyIvPikuCisgICAgICAg ICBUaGUgYWN0dWFsIG51bWJlciBvZiBwYXJhbGxlbCB3b3JrZXJzIGlzIGZ1cnRoZXIgbGltaXRl ZCBieQorICAgICAgICAgPHhyZWYgbGlua2VuZD0iZ3VjLW1heC1wYXJhbGxlbC13b3JrZXJzIi8+ LiBUaGlzIGlzIHRoZQorICAgICAgICAgcGVyLWF1dG92YWN1dW0gd29ya2VyIGVxdWl2YWxlbnQg b2YgdGhlIDxsaXRlcmFsPlBBUkFMTEVMPC9saXRlcmFsPgorICAgICAgICAgb3B0aW9uIG9mIHRo ZSA8bGluayBsaW5rZW5kPSJzcWwtdmFjdXVtIj48Y29tbWFuZD5WQUNVVU08L2NvbW1hbmQ+PC9s aW5rPgorICAgICAgICAgY29tbWFuZC4gU2V0dGluZyB0aGlzIHZhbHVlIHRvIDAgZGlzYWJsZXMg cGFyYWxsZWwgdmFjdXVtIGR1cmluZyBhdXRvdmFjdXVtLgorICAgICAgICAgVGhlIGRlZmF1bHQg aXMgMC4KKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlz dGVudHJ5PgorCiAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgIDwvc2VjdDI+CiAKZGlmZiAtLWdp dCBhL2RvYy9zcmMvc2dtbC9tYWludGVuYW5jZS5zZ21sIGIvZG9jL3NyYy9zZ21sL21haW50ZW5h bmNlLnNnbWwKaW5kZXggMGQyYTI4MjA3ZWQuLjY0YmJjODMxMzQzIDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvbWFpbnRlbmFuY2Uuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbWFpbnRlbmFuY2Uu c2dtbApAQCAtMTAzOCw2ICsxMDM4LDEwIEBAIGFuYWx5emUgdGhyZXNob2xkID0gYW5hbHl6ZSBi YXNlIHRocmVzaG9sZCArIGFuYWx5emUgc2NhbGUgZmFjdG9yICogbnVtYmVyIG9mIHR1CiAgICAg cGVyLXRhYmxlIDxsaXRlcmFsPmF1dG92YWN1dW1fdmFjdXVtX2Nvc3RfZGVsYXk8L2xpdGVyYWw+ IG9yCiAgICAgPGxpdGVyYWw+YXV0b3ZhY3V1bV92YWN1dW1fY29zdF9saW1pdDwvbGl0ZXJhbD4g c3RvcmFnZSBwYXJhbWV0ZXJzIGhhdmUgYmVlbiBzZXQKICAgICBhcmUgbm90IGNvbnNpZGVyZWQg aW4gdGhlIGJhbGFuY2luZyBhbGdvcml0aG0uCisgICAgUGFyYWxsZWwgd29ya2VycyBsYXVuY2hl ZCBmb3IgPHhyZWYgbGlua2VuZD0icGFyYWxsZWwtdmFjdXVtIi8+IGFyZSB1c2luZworICAgIHRo ZSBzYW1lIGNvc3QgZGVsYXkgcGFyYW1ldGVycyBhcyB0aGUgbGVhZGVyIHdvcmtlci4gSWYgYW55 IG9mIHRoZXNlCisgICAgcGFyYW1ldGVycyBhcmUgY2hhbmdlZCBpbiB0aGUgbGVhZGVyIHdvcmtl ciwgaXQgd2lsbCBwcm9wYWdhdGUgdGhlIG5ldworICAgIHBhcmFtZXRlciB2YWx1ZXMgdG8gYWxs IG9mIGl0cyBwYXJhbGxlbCB3b3JrZXJzLgogICAgPC9wYXJhPgogCiAgICA8cGFyYT4KQEAgLTEx NjYsNiArMTE3MCwzNiBAQCBhbmFseXplIHRocmVzaG9sZCA9IGFuYWx5emUgYmFzZSB0aHJlc2hv bGQgKyBhbmFseXplIHNjYWxlIGZhY3RvciAqIG51bWJlciBvZiB0dQogICAgIDwvcGFyYT4KICAg IDwvc2VjdDM+CiAgIDwvc2VjdDI+CisKKyAgPHNlY3QyIGlkPSJwYXJhbGxlbC12YWN1dW0iIHhy ZWZsYWJlbD0iUGFyYWxsZWwgVmFjdXVtIj4KKyAgIDx0aXRsZT5QYXJhbGxlbCBWYWN1dW08L3Rp dGxlPgorCisgICA8cGFyYT4KKyAgICA8Y29tbWFuZD5WQUNVVU08L2NvbW1hbmQ+IGNhbiBwZXJm b3JtIGluZGV4IHZhY3V1bWluZyBhbmQgaW5kZXggY2xlYW51cAorICAgIHBoYXNlcyBpbiBwYXJh bGxlbCB1c2luZyBiYWNrZ3JvdW5kIHdvcmtlcnMgKGZvciB0aGUgZGV0YWlscyBvZiBlYWNoCisg ICAgdmFjdXVtIHBoYXNlLCBwbGVhc2UgcmVmZXIgdG8gPHhyZWYgbGlua2VuZD0idmFjdXVtLXBo YXNlcyIvPikuICBUaGUKKyAgICBkZWdyZWUgb2YgcGFyYWxsZWxpc20gaXMgZGV0ZXJtaW5lZCBi eSB0aGUgbnVtYmVyIG9mIGluZGV4ZXMgb24gdGhlCisgICAgcmVsYXRpb24gdGhhdCBzdXBwb3J0 IHBhcmFsbGVsIHZhY3V1bS4gIEZvciBtYW51YWwgPGNvbW1hbmQ+VkFDVVVNPC9jb21tYW5kPiwK KyAgICB0aGlzIGlzIGxpbWl0ZWQgYnkgdGhlIDxsaXRlcmFsPlBBUkFMTEVMPC9saXRlcmFsPiBv cHRpb24sIHdoaWNoIGlzCisgICAgZnVydGhlciBjYXBwZWQgYnkgPHhyZWYgbGlua2VuZD0iZ3Vj LW1heC1wYXJhbGxlbC1tYWludGVuYW5jZS13b3JrZXJzIi8+LgorICAgIEZvciBhdXRvdmFjdXVt LCBpdCBpcyBsaW1pdGVkIGJ5IHRoZSB0YWJsZSdzCisgICAgPHhyZWYgbGlua2VuZD0icmVsb3B0 aW9uLWF1dG92YWN1dW0tcGFyYWxsZWwtd29ya2VycyIvPiBpZiBhbnkgd2hpY2ggaXMKKyAgICBj YXBwZWQgbGltaXRlZCBieQorICAgIDx4cmVmIGxpbmtlbmQ9Imd1Yy1hdXRvdmFjdXVtLW1heC1w YXJhbGxlbC13b3JrZXJzIi8+IHBhcmFtZXRlci4gIFBsZWFzZQorICAgIG5vdGUgdGhhdCBpdCBp cyBub3QgZ3VhcmFudGVlZCB0aGF0IHRoZSBudW1iZXIgb2YgcGFyYWxsZWwgd29ya2VycyB0aGF0 IHdhcworICAgIGNhbGN1bGF0ZWQgd2lsbCBiZSB1c2VkIGR1cmluZyBleGVjdXRpb24uICBJdCBp cyBwb3NzaWJsZSBmb3IgYSB2YWN1dW0gdG8KKyAgICBydW4gd2l0aCBmZXdlciB3b3JrZXJzIHRo YW4gc3BlY2lmaWVkLCBvciBldmVuIHdpdGggbm8gd29ya2VycyBhdCBhbGwuCisgICA8L3BhcmE+ CisKKyAgIDxwYXJhPgorICAgIEFuIGluZGV4IGNhbiBwYXJ0aWNpcGF0ZSBpbiBwYXJhbGxlbCB2 YWN1dW0gaWYgYW5kIG9ubHkgaWYgdGhlIHNpemUgb2YgdGhlCisgICAgaW5kZXggaXMgbW9yZSB0 aGFuIDx4cmVmIGxpbmtlbmQ9Imd1Yy1taW4tcGFyYWxsZWwtaW5kZXgtc2Nhbi1zaXplIi8+Lgor ICAgIE9ubHkgb25lIHdvcmtlciBjYW4gYmUgdXNlZCBwZXIgaW5kZXguICBTbyBwYXJhbGxlbCB3 b3JrZXJzIGFyZSBsYXVuY2hlZAorICAgIG9ubHkgd2hlbiB0aGVyZSBhcmUgYXQgbGVhc3QgPGxp dGVyYWw+MjwvbGl0ZXJhbD4gaW5kZXhlcyBpbiB0aGUgdGFibGUuCisgICAgV29ya2VycyBmb3Ig dmFjdXVtIGFyZSBsYXVuY2hlZCBiZWZvcmUgdGhlIHN0YXJ0IG9mIGVhY2ggcGhhc2UgYW5kIGV4 aXQgYXQKKyAgICB0aGUgZW5kIG9mIHRoZSBwaGFzZS4gIFRoZXNlIGJlaGF2aW9ycyBtaWdodCBj aGFuZ2UgaW4gYSBmdXR1cmUgcmVsZWFzZS4KKyAgIDwvcGFyYT4KKyAgPC9zZWN0Mj4KICA8L3Nl Y3QxPgogCiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sCmluZGV4IDgwODI5YjIzOTQ1Li5l MzQyNTg1YzdmMCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sCkBAIC0xNzM4LDYgKzE3 MzgsMjIgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51 bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICA8L2xpc3RpdGVtPgogICAgPC92 YXJsaXN0ZW50cnk+CiAKKyAgPHZhcmxpc3RlbnRyeSBpZD0icmVsb3B0aW9uLWF1dG92YWN1dW0t cGFyYWxsZWwtd29ya2VycyIgeHJlZmxhYmVsPSJhdXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtlcnMi PgorICAgIDx0ZXJtPjxsaXRlcmFsPmF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2VyczwvbGl0ZXJh bD4gKDx0eXBlPmludGVnZXI8L3R5cGU+KQorICAgIDxpbmRleHRlcm0+CisgICAgIDxwcmltYXJ5 Pjx2YXJuYW1lPmF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2VyczwvdmFybmFtZT4gc3RvcmFnZSBw YXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgPC9pbmRleHRlcm0+CisgICAgPC90ZXJtPgorICAgIDxs aXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIFBlci10YWJsZSB2YWx1ZSBmb3IgPHhyZWYg bGlua2VuZD0iZ3VjLWF1dG92YWN1dW0tbWF4LXBhcmFsbGVsLXdvcmtlcnMiLz4KKyAgICAgICBw YXJhbWV0ZXIuIElmIC0xIGlzIHNwZWNpZmllZCwgPHZhcm5hbWU+YXV0b3ZhY3V1bV9tYXhfcGFy YWxsZWxfd29ya2VyczwvdmFybmFtZT4KKyAgICAgICB2YWx1ZSB3aWxsIGJlIHVzZWQuIElmIHNl dCB0byAwLCBwYXJhbGxlbCB2YWN1dW0gaXMgZGlzYWJsZWQgZm9yCisgICAgICAgdGhpcyB0YWJs ZS4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgLTEuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVt PgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnkgaWQ9InJlbG9wdGlvbi1h dXRvdmFjdXVtLXZhY3V1bS10aHJlc2hvbGQiIHhyZWZsYWJlbD0iYXV0b3ZhY3V1bV92YWN1dW1f dGhyZXNob2xkIj4KICAgICA8dGVybT48bGl0ZXJhbD5hdXRvdmFjdXVtX3ZhY3V1bV90aHJlc2hv bGQ8L2xpdGVyYWw+LCA8bGl0ZXJhbD50b2FzdC5hdXRvdmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQ8 L2xpdGVyYWw+ICg8dHlwZT5pbnRlZ2VyPC90eXBlPikKICAgICA8aW5kZXh0ZXJtPgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi92YWN1dW0uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvdmFj dXVtLnNnbWwKaW5kZXggYWM1ZDA4M2Q0NjguLjM4ZWU5NzNlYTA1IDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvcmVmL3ZhY3V1bS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvdmFjdXVtLnNn bWwKQEAgLTgxLDcgKzgxLDcgQEAgVkFDVVVNIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+b3B0aW9uPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0gWyA8cmUKICAgIGlzIG5vdCBv YnRhaW5lZC4gIEhvd2V2ZXIsIGV4dHJhIHNwYWNlIGlzIG5vdCByZXR1cm5lZCB0byB0aGUgb3Bl cmF0aW5nCiAgICBzeXN0ZW0gKGluIG1vc3QgY2FzZXMpOyBpdCdzIGp1c3Qga2VwdCBhdmFpbGFi bGUgZm9yIHJlLXVzZSB3aXRoaW4gdGhlCiAgICBzYW1lIHRhYmxlLiAgSXQgYWxzbyBhbGxvd3Mg dXMgdG8gbGV2ZXJhZ2UgbXVsdGlwbGUgQ1BVcyBpbiBvcmRlciB0byBwcm9jZXNzCi0gICBpbmRl eGVzLiAgVGhpcyBmZWF0dXJlIGlzIGtub3duIGFzIDxmaXJzdHRlcm0+cGFyYWxsZWwgdmFjdXVt PC9maXJzdHRlcm0+LgorICAgaW5kZXhlcy4gIFRoaXMgZmVhdHVyZSBpcyBrbm93biBhcyA8Zmly c3R0ZXJtPjx4cmVmIGxpbmtlbmQ9InBhcmFsbGVsLXZhY3V1bSIvPjwvZmlyc3R0ZXJtPi4KICAg IFRvIGRpc2FibGUgdGhpcyBmZWF0dXJlLCBvbmUgY2FuIHVzZSA8bGl0ZXJhbD5QQVJBTExFTDwv bGl0ZXJhbD4gb3B0aW9uIGFuZAogICAgc3BlY2lmeSBwYXJhbGxlbCB3b3JrZXJzIGFzIHplcm8u ICA8Y29tbWFuZD5WQUNVVU0gRlVMTDwvY29tbWFuZD4gcmV3cml0ZXMKICAgIHRoZSBlbnRpcmUg Y29udGVudHMgb2YgdGhlIHRhYmxlIGludG8gYSBuZXcgZGlzayBmaWxlIHdpdGggbm8gZXh0cmEg c3BhY2UsCkBAIC0yNjYsMjQgKzI2Niw5IEBAIFZBQ1VVTSBbICggPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBdIFsgPHJlCiAgICAg PHRlcm0+PGxpdGVyYWw+UEFSQUxMRUw8L2xpdGVyYWw+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4K ICAgICAgPHBhcmE+Ci0gICAgICBQZXJmb3JtIGluZGV4IHZhY3V1bSBhbmQgaW5kZXggY2xlYW51 cCBwaGFzZXMgb2YgPGNvbW1hbmQ+VkFDVVVNPC9jb21tYW5kPgotICAgICAgaW4gcGFyYWxsZWwg dXNpbmcgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmludGVnZXI8L3JlcGxhY2VhYmxl PgotICAgICAgYmFja2dyb3VuZCB3b3JrZXJzIChmb3IgdGhlIGRldGFpbHMgb2YgZWFjaCB2YWN1 dW0gcGhhc2UsIHBsZWFzZQotICAgICAgcmVmZXIgdG8gPHhyZWYgbGlua2VuZD0idmFjdXVtLXBo YXNlcyIvPikuICBUaGUgbnVtYmVyIG9mIHdvcmtlcnMgdXNlZAotICAgICAgdG8gcGVyZm9ybSB0 aGUgb3BlcmF0aW9uIGlzIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgaW5kZXhlcyBvbiB0aGUKLSAg ICAgIHJlbGF0aW9uIHRoYXQgc3VwcG9ydCBwYXJhbGxlbCB2YWN1dW0gd2hpY2ggaXMgbGltaXRl ZCBieSB0aGUgbnVtYmVyIG9mCi0gICAgICB3b3JrZXJzIHNwZWNpZmllZCB3aXRoIDxsaXRlcmFs PlBBUkFMTEVMPC9saXRlcmFsPiBvcHRpb24gaWYgYW55IHdoaWNoIGlzCi0gICAgICBmdXJ0aGVy IGxpbWl0ZWQgYnkgPHhyZWYgbGlua2VuZD0iZ3VjLW1heC1wYXJhbGxlbC1tYWludGVuYW5jZS13 b3JrZXJzIi8+LgotICAgICAgQW4gaW5kZXggY2FuIHBhcnRpY2lwYXRlIGluIHBhcmFsbGVsIHZh Y3V1bSBpZiBhbmQgb25seSBpZiB0aGUgc2l6ZSBvZiB0aGUKLSAgICAgIGluZGV4IGlzIG1vcmUg dGhhbiA8eHJlZiBsaW5rZW5kPSJndWMtbWluLXBhcmFsbGVsLWluZGV4LXNjYW4tc2l6ZSIvPi4K LSAgICAgIFBsZWFzZSBub3RlIHRoYXQgaXQgaXMgbm90IGd1YXJhbnRlZWQgdGhhdCB0aGUgbnVt YmVyIG9mIHBhcmFsbGVsIHdvcmtlcnMKLSAgICAgIHNwZWNpZmllZCBpbiA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+aW50ZWdlcjwvcmVwbGFjZWFibGU+IHdpbGwgYmUKLSAgICAgIHVz ZWQgZHVyaW5nIGV4ZWN1dGlvbi4gIEl0IGlzIHBvc3NpYmxlIGZvciBhIHZhY3V1bSB0byBydW4g d2l0aCBmZXdlcgotICAgICAgd29ya2VycyB0aGFuIHNwZWNpZmllZCwgb3IgZXZlbiB3aXRoIG5v IHdvcmtlcnMgYXQgYWxsLiAgT25seSBvbmUgd29ya2VyCi0gICAgICBjYW4gYmUgdXNlZCBwZXIg aW5kZXguICBTbyBwYXJhbGxlbCB3b3JrZXJzIGFyZSBsYXVuY2hlZCBvbmx5IHdoZW4gdGhlcmUK LSAgICAgIGFyZSBhdCBsZWFzdCA8bGl0ZXJhbD4yPC9saXRlcmFsPiBpbmRleGVzIGluIHRoZSB0 YWJsZS4gIFdvcmtlcnMgZm9yCi0gICAgICB2YWN1dW0gYXJlIGxhdW5jaGVkIGJlZm9yZSB0aGUg c3RhcnQgb2YgZWFjaCBwaGFzZSBhbmQgZXhpdCBhdCB0aGUgZW5kIG9mCi0gICAgICB0aGUgcGhh c2UuICBUaGVzZSBiZWhhdmlvcnMgbWlnaHQgY2hhbmdlIGluIGEgZnV0dXJlIHJlbGVhc2UuICBU aGlzCisgICAgICBTcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVsIHdvcmtl cnMgdGhhdCBjYW4gYmUgdXNlZAorICAgICAgZm9yIDx4cmVmIGxpbmtlbmQ9InBhcmFsbGVsLXZh Y3V1bSIvPiwgd2hpY2ggaXMgZnVydGhlciBsaW1pdGVkCisgICAgICBieSA8eHJlZiBsaW5rZW5k PSJndWMtbWF4LXBhcmFsbGVsLW1haW50ZW5hbmNlLXdvcmtlcnMiLz4uIFRoaXMKICAgICAgIG9w dGlvbiBjYW4ndCBiZSB1c2VkIHdpdGggdGhlIDxsaXRlcmFsPkZVTEw8L2xpdGVyYWw+IG9wdGlv bi4KICAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvY29tbW9uL3JlbG9wdGlvbnMuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24v cmVsb3B0aW9ucy5jCmluZGV4IGI0MWVhZmQ3NjkxLi4zZTgzMmMzNzk3ZSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9yZWxvcHRpb25zLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2NvbW1vbi9yZWxvcHRpb25zLmMKQEAgLTIzNiw2ICsyMzYsMTUgQEAgc3RhdGljIHJl bG9wdF9pbnQgaW50UmVsT3B0c1tdID0KIAkJfSwKIAkJU1BHSVNUX0RFRkFVTFRfRklMTEZBQ1RP UiwgU1BHSVNUX01JTl9GSUxMRkFDVE9SLCAxMDAKIAl9LAorCXsKKwkJeworCQkJImF1dG92YWN1 dW1fcGFyYWxsZWxfd29ya2VycyIsCisJCQkiTWF4aW11bSBudW1iZXIgb2YgcGFyYWxsZWwgYXV0 b3ZhY3V1bSB3b3JrZXJzIHRoYXQgY2FuIGJlIHVzZWQgZm9yIHByb2Nlc3NpbmcgdGhpcyB0YWJs ZS4iLAorCQkJUkVMT1BUX0tJTkRfSEVBUCwKKwkJCVNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jawor CQl9LAorCQktMSwgLTEsIDEwMjQKKwl9LAogCXsKIAkJewogCQkJImF1dG92YWN1dW1fdmFjdXVt X3RocmVzaG9sZCIsCkBAIC0xOTY5LDYgKzE5NzgsOCBAQCBkZWZhdWx0X3JlbG9wdGlvbnMoRGF0 dW0gcmVsb3B0aW9ucywgYm9vbCB2YWxpZGF0ZSwgcmVsb3B0X2tpbmQga2luZCkKIAkJeyJmaWxs ZmFjdG9yIiwgUkVMT1BUX1RZUEVfSU5ULCBvZmZzZXRvZihTdGRSZE9wdGlvbnMsIGZpbGxmYWN0 b3IpfSwKIAkJeyJhdXRvdmFjdXVtX2VuYWJsZWQiLCBSRUxPUFRfVFlQRV9CT09MLAogCQlvZmZz ZXRvZihTdGRSZE9wdGlvbnMsIGF1dG92YWN1dW0pICsgb2Zmc2V0b2YoQXV0b1ZhY09wdHMsIGVu YWJsZWQpfSwKKwkJeyJhdXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtlcnMiLCBSRUxPUFRfVFlQRV9J TlQsCisJCW9mZnNldG9mKFN0ZFJkT3B0aW9ucywgYXV0b3ZhY3V1bSkgKyBvZmZzZXRvZihBdXRv VmFjT3B0cywgYXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzKX0sCiAJCXsiYXV0b3ZhY3V1bV92 YWN1dW1fdGhyZXNob2xkIiwgUkVMT1BUX1RZUEVfSU5ULAogCQlvZmZzZXRvZihTdGRSZE9wdGlv bnMsIGF1dG92YWN1dW0pICsgb2Zmc2V0b2YoQXV0b1ZhY09wdHMsIHZhY3V1bV90aHJlc2hvbGQp fSwKIAkJeyJhdXRvdmFjdXVtX3ZhY3V1bV9tYXhfdGhyZXNob2xkIiwgUkVMT1BUX1RZUEVfSU5U LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDg4YzcxY2Q4NWI2Li4zOTM5 NWFlZDBkNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtMTUyLDYgKzE1 Miw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1n ci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcmVhZF9zdHJlYW0uaCIKKyNpbmNsdWRlICJ1dGlscy9p bmplY3Rpb25fcG9pbnQuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRl ICJ1dGlscy9wZ19ydXNhZ2UuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKQEAgLTg2 Miw2ICs4NjMsMTcgQEAgaGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwgY29uc3QgVmFjdXVt UGFyYW1zICpwYXJhbXMsCiAJbGF6eV9jaGVja193cmFwYXJvdW5kX2ZhaWxzYWZlKHZhY3JlbCk7 CiAJZGVhZF9pdGVtc19hbGxvYyh2YWNyZWwsIHBhcmFtcy0+bndvcmtlcnMpOwogCisjaWZkZWYg VVNFX0lOSkVDVElPTl9QT0lOVFMKKworCS8qCisJICogVXNlZCBieSB0ZXN0cyB0byBwYXVzZSBi ZWZvcmUgcGFyYWxsZWwgdmFjdXVtIGlzIGxhdW5jaGVkLCBhbGxvd2luZworCSAqIHRlc3QgY29k ZSB0byBtb2RpZnkgY29uZmlndXJhdGlvbiB0aGF0IHRoZSBsZWFkZXIgdGhlbiBwcm9wYWdhdGVz IHRvCisJICogd29ya2Vycy4KKwkgKi8KKwlpZiAoQW1BdXRvVmFjdXVtV29ya2VyUHJvY2Vzcygp ICYmIFBhcmFsbGVsVmFjdXVtSXNBY3RpdmUodmFjcmVsKSkKKwkJSU5KRUNUSU9OX1BPSU5UKCJh dXRvdmFjdXVtLXN0YXJ0LXBhcmFsbGVsLXZhY3V1bSIsIE5VTEwpOworI2VuZGlmCisKIAkvKgog CSAqIENhbGwgbGF6eV9zY2FuX2hlYXAgdG8gcGVyZm9ybSBhbGwgcmVxdWlyZWQgaGVhcCBwcnVu aW5nLCBpbmRleAogCSAqIHZhY3V1bWluZywgYW5kIGhlYXAgdmFjdXVtaW5nIChwbHVzIHJlbGF0 ZWQgcHJvY2Vzc2luZykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMKaW5kZXggMGVkMzYzZDFjODUuLmJjM2U1 N2FkNjNjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYworKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwpAQCAtMjQzNSw4ICsyNDM1LDIwIEBAIHZhY3V1 bV9kZWxheV9wb2ludChib29sIGlzX2FuYWx5emUpCiAJLyogQWx3YXlzIGNoZWNrIGZvciBpbnRl cnJ1cHRzICovCiAJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAotCWlmIChJbnRlcnJ1cHRQZW5k aW5nIHx8Ci0JCSghVmFjdXVtQ29zdEFjdGl2ZSAmJiAhQ29uZmlnUmVsb2FkUGVuZGluZykpCisJ aWYgKEludGVycnVwdFBlbmRpbmcpCisJCXJldHVybjsKKworCWlmIChJc1BhcmFsbGVsV29ya2Vy KCkpCisJeworCQkvKgorCQkgKiBVcGRhdGUgY29zdC1iYXNlZCB2YWN1dW0gZGVsYXkgcGFyYW1l dGVycyBmb3IgYSBwYXJhbGxlbCBhdXRvdmFjdXVtCisJCSAqIHdvcmtlciBpZiBhbnkgY2hhbmdl cyBhcmUgZGV0ZWN0ZWQuIEl0IG1pZ2h0IGVuYWJsZSBjb3N0LWJhc2VkCisJCSAqIGRlbGF5IHNv IGl0IG5lZWRzIHRvIGJlIGNhbGxlZCBiZWZvcmUgVmFjdXVtQ29zdEFjdGl2ZSBjaGVjay4KKwkJ ICovCisJCXBhcmFsbGVsX3ZhY3V1bV91cGRhdGVfc2hhcmVkX2RlbGF5X3BhcmFtcygpOworCX0K KworCWlmICghVmFjdXVtQ29zdEFjdGl2ZSAmJiAhQ29uZmlnUmVsb2FkUGVuZGluZykKIAkJcmV0 dXJuOwogCiAJLyoKQEAgLTI0NTAsNiArMjQ2MiwxMiBAQCB2YWN1dW1fZGVsYXlfcG9pbnQoYm9v bCBpc19hbmFseXplKQogCQlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7CiAJCVByb2Nlc3ND b25maWdGaWxlKFBHQ19TSUdIVVApOwogCQlWYWN1dW1VcGRhdGVDb3N0cygpOworCisJCS8qCisJ CSAqIFByb3BhZ2F0ZSBjb3N0LWJhc2VkIHZhY3V1bSBkZWxheSBwYXJhbWV0ZXJzIHRvIHNoYXJl ZCBtZW1vcnkgaWYKKwkJICogYW55IG9mIHRoZW0gaGF2ZSBjaGFuZ2VkIGR1cmluZyB0aGUgY29u ZmlnIHJlbG9hZC4KKwkJICovCisJCXBhcmFsbGVsX3ZhY3V1bV9wcm9wYWdhdGVfc2hhcmVkX2Rl bGF5X3BhcmFtcygpOwogCX0KIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5k cy92YWN1dW1wYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwu YwppbmRleCA3NzgzNGI5NmEyMS4uOTc5YzJiZTRhYmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFj dXVtcGFyYWxsZWwuYwpAQCAtMSw3ICsxLDkgQEAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoKICAq IHZhY3V1bXBhcmFsbGVsLmMKLSAqCSAgU3VwcG9ydCByb3V0aW5lcyBmb3IgcGFyYWxsZWwgdmFj dXVtIGV4ZWN1dGlvbi4KKyAqCSAgU3VwcG9ydCByb3V0aW5lcyBmb3IgcGFyYWxsZWwgdmFjdXVt IGFuZCBhdXRvdmFjdXVtIGV4ZWN1dGlvbi4gSW4gdGhlCisgKgkgIGNvbW1lbnRzIGJlbG93LCB0 aGUgd29yZCAidmFjdXVtIiB3aWxsIHJlZmVyIHRvIGJvdGggdmFjdXVtIGFuZAorICoJICBhdXRv dmFjdXVtLgogICoKICAqIFRoaXMgZmlsZSBjb250YWlucyByb3V0aW5lcyB0aGF0IGFyZSBpbnRl bmRlZCB0byBzdXBwb3J0IHNldHRpbmcgdXAsIHVzaW5nLAogICogYW5kIHRlYXJpbmcgZG93biBh IFBhcmFsbGVsVmFjdXVtU3RhdGUuCkBAIC0xNiw2ICsxOCwxMyBAQAogICogdGhlIHBhcmFsbGVs IGNvbnRleHQgaXMgcmUtaW5pdGlhbGl6ZWQgc28gdGhhdCB0aGUgc2FtZSBEU00gY2FuIGJlIHVz ZWQgZm9yCiAgKiBtdWx0aXBsZSBwYXNzZXMgb2YgaW5kZXggYnVsay1kZWxldGlvbiBhbmQgaW5k ZXggY2xlYW51cC4KICAqCisgKiBGb3IgcGFyYWxsZWwgYXV0b3ZhY3V1bSwgd2UgbmVlZCB0byBw cm9wYWdhdGUgY29zdC1iYXNlZCB2YWN1dW0gZGVsYXkKKyAqIHBhcmFtZXRlcnMgZnJvbSB0aGUg bGVhZGVyIHRvIGl0cyB3b3JrZXJzLCBhcyB0aGUgbGVhZGVyJ3MgcGFyYW1ldGVycyBjYW4KKyAq IGNoYW5nZSBldmVuIHdoaWxlIHByb2Nlc3NpbmcgYSB0YWJsZSAoZS5nLiwgZHVlIHRvIGEgY29u ZmlnIHJlbG9hZCkuCisgKiBUaGUgUFZTaGFyZWRDb3N0UGFyYW1zIHN0cnVjdCBtYW5hZ2VzIHRo ZXNlIHBhcmFtZXRlcnMgdXNpbmcgYQorICogZ2VuZXJhdGlvbiBjb3VudGVyLiBFYWNoIHBhcmFs bGVsIHdvcmtlciBwb2xscyB0aGlzIHNoYXJlZCBzdGF0ZSBhbmQKKyAqIHJlZnJlc2hlcyBpdHMg bG9jYWwgZGVsYXkgcGFyYW1ldGVycyB3aGVuZXZlciBhIGNoYW5nZSBpcyBkZXRlY3RlZC4KKyAq CiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwg RGV2ZWxvcG1lbnQgR3JvdXAKICAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50 cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCiAgKgpAQCAtNTEsNiArNjAsMzMgQEAK ICNkZWZpbmUgUEFSQUxMRUxfVkFDVVVNX0tFWV9XQUxfVVNBR0UJCTQKICNkZWZpbmUgUEFSQUxM RUxfVkFDVVVNX0tFWV9JTkRFWF9TVEFUUwkJNQogCisvKgorICogU3RydWN0IGZvciBjb3N0LWJh c2VkIHZhY3V1bSBkZWxheSByZWxhdGVkIHBhcmFtZXRlcnMgdG8gc2hhcmUgYW1vbmcgYW4KKyAq IGF1dG92YWN1dW0gd29ya2VyIGFuZCBpdHMgcGFyYWxsZWwgdmFjdXVtIHdvcmtlcnMuCisgKi8K K3R5cGVkZWYgc3RydWN0IFBWU2hhcmVkQ29zdFBhcmFtcworeworCS8qCisJICogVGhlIGdlbmVy YXRpb24gY291bnRlciBpcyBpbmNyZW1lbnRlZCBieSB0aGUgbGVhZGVyIHByb2Nlc3MgZWFjaCB0 aW1lCisJICogaXQgdXBkYXRlcyB0aGUgc2hhcmVkIGNvc3QtYmFzZWQgdmFjdXVtIGRlbGF5IHBh cmFtZXRlcnMuIFBhcmFsbGVsCisJICogdmFjdXVtIHdvcmtlcnMgY29tcGFyZSBpdCB3aXRoIHRo ZWlyIGxvY2FsIGdlbmVyYXRpb24sCisJICogc2hhcmVkX3BhcmFtc19nZW5lcmF0aW9uX2xvY2Fs LCB0byBkZXRlY3Qgd2hldGhlciB0aGV5IG5lZWQgdG8gcmVmcmVzaAorCSAqIHRoZWlyIGxvY2Fs IHBhcmFtZXRlcnMuIFRoZSBnZW5lcmF0aW9uIHN0YXJ0cyBmcm9tIDEgc28gdGhhdCBhIGZyZXNo bHkKKwkgKiBzdGFydGVkIHdvcmtlciAod2hvc2UgbG9jYWwgY29weSBpcyAwKSB3aWxsIGFsd2F5 cyBsb2FkIHRoZSBpbml0aWFsCisJICogcGFyYW1ldGVycyBvbiBpdHMgZmlyc3QgY2hlY2suCisJ ICovCisJcGdfYXRvbWljX3VpbnQzMiBnZW5lcmF0aW9uOworCisJc2xvY2tfdAkJbXV0ZXg7CQkJ LyogcHJvdGVjdHMgYWxsIGZpZWxkcyBiZWxvdyAqLworCisJLyogUGFyYW1ldGVycyB0byBzaGFy ZSB3aXRoIHBhcmFsbGVsIHdvcmtlcnMgKi8KKwlkb3VibGUJCWNvc3RfZGVsYXk7CisJaW50CQkJ Y29zdF9saW1pdDsKKwlpbnQJCQljb3N0X3BhZ2VfZGlydHk7CisJaW50CQkJY29zdF9wYWdlX2hp dDsKKwlpbnQJCQljb3N0X3BhZ2VfbWlzczsKK30gUFZTaGFyZWRDb3N0UGFyYW1zOworCiAvKgog ICogU2hhcmVkIGluZm9ybWF0aW9uIGFtb25nIHBhcmFsbGVsIHdvcmtlcnMuICBTbyB0aGlzIGlz IGFsbG9jYXRlZCBpbiB0aGUgRFNNCiAgKiBzZWdtZW50LgpAQCAtMTIwLDYgKzE1NiwxOCBAQCB0 eXBlZGVmIHN0cnVjdCBQVlNoYXJlZAogCiAJLyogU3RhdGlzdGljcyBvZiBzaGFyZWQgZGVhZCBp dGVtcyAqLwogCVZhY0RlYWRJdGVtc0luZm8gZGVhZF9pdGVtc19pbmZvOworCisJLyoKKwkgKiBJ ZiAndHJ1ZScgdGhlbiB3ZSBhcmUgcnVubmluZyBwYXJhbGxlbCBhdXRvdmFjdXVtLiBPdGhlcndp c2UsIHdlIGFyZQorCSAqIHJ1bm5pbmcgcGFyYWxsZWwgbWFpbnRlbmFuY2UgVkFDVVVNLgorCSAq LworCWJvb2wJCWlzX2F1dG92YWN1dW07CisKKwkvKgorCSAqIENvc3QtYmFzZWQgdmFjdXVtIGRl bGF5IHBhcmFtZXRlcnMgc2hhcmVkIGJldHdlZW4gdGhlIGF1dG92YWN1dW0gbGVhZGVyCisJICog YW5kIGl0cyBwYXJhbGxlbCB3b3JrZXJzLgorCSAqLworCVBWU2hhcmVkQ29zdFBhcmFtcyBjb3N0 X3BhcmFtczsKIH0gUFZTaGFyZWQ7CiAKIC8qIFN0YXR1cyB1c2VkIGR1cmluZyBwYXJhbGxlbCBp bmRleCB2YWN1dW0gb3IgY2xlYW51cCAqLwpAQCAtMjIyLDYgKzI3MCwxNyBAQCBzdHJ1Y3QgUGFy YWxsZWxWYWN1dW1TdGF0ZQogCVBWSW5kVmFjU3RhdHVzIHN0YXR1czsKIH07CiAKK3N0YXRpYyBQ VlNoYXJlZENvc3RQYXJhbXMgKnB2X3NoYXJlZF9jb3N0X3BhcmFtcyA9IE5VTEw7CisKKy8qCisg KiBXb3JrZXItbG9jYWwgY29weSBvZiB0aGUgbGFzdCBjb3N0LXBhcmFtZXRlciBnZW5lcmF0aW9u IHRoaXMgd29ya2VyIGhhcworICogYXBwbGllZC4gIEluaXRpYWxpemVkIHRvIDA7IHNpbmNlIHRo ZSBsZWFkZXIgaW5pdGlhbGl6ZXMgdGhlIHNoYXJlZAorICogZ2VuZXJhdGlvbiBjb3VudGVyIHRv IDEsIHRoZSBmaXJzdCBjYWxsIHRvCisgKiBwYXJhbGxlbF92YWN1dW1fdXBkYXRlX3NoYXJlZF9k ZWxheV9wYXJhbXMoKSB3aWxsIGFsd2F5cyBkZXRlY3QgYQorICogbWlzbWF0Y2ggYW5kIHJlYWQg dGhlIGluaXRpYWwgcGFyYW1ldGVycyBmcm9tIHNoYXJlZCBtZW1vcnkuCisgKi8KK3N0YXRpYyB1 aW50MzIgc2hhcmVkX3BhcmFtc19nZW5lcmF0aW9uX2xvY2FsID0gMDsKKwogc3RhdGljIGludAlw YXJhbGxlbF92YWN1dW1fY29tcHV0ZV93b3JrZXJzKFJlbGF0aW9uICppbmRyZWxzLCBpbnQgbmlu ZGV4ZXMsIGludCBucmVxdWVzdGVkLAogCQkJCQkJCQkJCQlib29sICp3aWxsX3BhcmFsbGVsX3Zh Y3V1bSk7CiBzdGF0aWMgdm9pZCBwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19hbGxfaW5kZXhlcyhQ YXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIGludCBudW1faW5kZXhfc2NhbnMsCkBAIC0yMzMsNiAr MjkyLDggQEAgc3RhdGljIHZvaWQgcGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3Nfb25lX2luZGV4KFBh cmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgUmVsYXRpb24KIHN0YXRpYyBib29sIHBhcmFsbGVsX3Zh Y3V1bV9pbmRleF9pc19wYXJhbGxlbF9zYWZlKFJlbGF0aW9uIGluZHJlbCwgaW50IG51bV9pbmRl eF9zY2FucywKIAkJCQkJCQkJCQkJCSAgIGJvb2wgdmFjdXVtKTsKIHN0YXRpYyB2b2lkIHBhcmFs bGVsX3ZhY3V1bV9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcpOworc3RhdGljIGlubGluZSB2b2lk IHBhcmFsbGVsX3ZhY3V1bV9zZXRfY29zdF9wYXJhbWV0ZXJzKFBWU2hhcmVkQ29zdFBhcmFtcyAq cGFyYW1zKTsKK3N0YXRpYyB2b2lkIHBhcmFsbGVsX3ZhY3V1bV9kc21fZGV0YWNoKGRzbV9zZWdt ZW50ICpzZWcsIERhdHVtIGFyZyk7CiAKIC8qCiAgKiBUcnkgdG8gZW50ZXIgcGFyYWxsZWwgbW9k ZSBhbmQgY3JlYXRlIGEgcGFyYWxsZWwgY29udGV4dC4gIFRoZW4gaW5pdGlhbGl6ZQpAQCAtMzc0 LDggKzQzNSw5IEBAIHBhcmFsbGVsX3ZhY3V1bV9pbml0KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24g KmluZHJlbHMsIGludCBuaW5kZXhlcywKIAlzaGFyZWQtPnF1ZXJ5aWQgPSBwZ3N0YXRfZ2V0X215 X3F1ZXJ5X2lkKCk7CiAJc2hhcmVkLT5tYWludGVuYW5jZV93b3JrX21lbV93b3JrZXIgPQogCQko bmluZGV4ZXNfbXdtID4gMCkgPwotCQltYWludGVuYW5jZV93b3JrX21lbSAvIE1pbihwYXJhbGxl bF93b3JrZXJzLCBuaW5kZXhlc19td20pIDoKLQkJbWFpbnRlbmFuY2Vfd29ya19tZW07CisJCXZh Y193b3JrX21lbSAvIE1pbihwYXJhbGxlbF93b3JrZXJzLCBuaW5kZXhlc19td20pIDoKKwkJdmFj X3dvcmtfbWVtOworCiAJc2hhcmVkLT5kZWFkX2l0ZW1zX2luZm8ubWF4X2J5dGVzID0gdmFjX3dv cmtfbWVtICogKHNpemVfdCkgMTAyNDsKIAogCS8qIFByZXBhcmUgRFNBIHNwYWNlIGZvciBkZWFk IGl0ZW1zICovCkBAIC0zOTIsNiArNDU0LDIyIEBAIHBhcmFsbGVsX3ZhY3V1bV9pbml0KFJlbGF0 aW9uIHJlbCwgUmVsYXRpb24gKmluZHJlbHMsIGludCBuaW5kZXhlcywKIAlwZ19hdG9taWNfaW5p dF91MzIoJihzaGFyZWQtPmFjdGl2ZV9ud29ya2VycyksIDApOwogCXBnX2F0b21pY19pbml0X3Uz MigmKHNoYXJlZC0+aWR4KSwgMCk7CiAKKwlzaGFyZWQtPmlzX2F1dG92YWN1dW0gPSBBbUF1dG9W YWN1dW1Xb3JrZXJQcm9jZXNzKCk7CisKKwkvKgorCSAqIEluaXRpYWxpemUgc2hhcmVkIGNvc3Qt YmFzZWQgdmFjdXVtIGRlbGF5IHBhcmFtZXRlcnMgaWYgaXQncyBmb3IKKwkgKiBhdXRvdmFjdXVt LgorCSAqLworCWlmIChzaGFyZWQtPmlzX2F1dG92YWN1dW0pCisJeworCQlwYXJhbGxlbF92YWN1 dW1fc2V0X2Nvc3RfcGFyYW1ldGVycygmc2hhcmVkLT5jb3N0X3BhcmFtcyk7CisJCXBnX2F0b21p Y19pbml0X3UzMigmc2hhcmVkLT5jb3N0X3BhcmFtcy5nZW5lcmF0aW9uLCAxKTsKKwkJU3Bpbkxv Y2tJbml0KCZzaGFyZWQtPmNvc3RfcGFyYW1zLm11dGV4KTsKKworCQlwdl9zaGFyZWRfY29zdF9w YXJhbXMgPSAmKHNoYXJlZC0+Y29zdF9wYXJhbXMpOworCQlvbl9kc21fZGV0YWNoKHBjeHQtPnNl ZywgcGFyYWxsZWxfdmFjdXVtX2RzbV9kZXRhY2gsIChEYXR1bSkgMCk7CisJfQorCiAJc2htX3Rv Y19pbnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9WQUNVVU1fS0VZX1NIQVJFRCwgc2hhcmVkKTsK IAlwdnMtPnNoYXJlZCA9IHNoYXJlZDsKIApAQCAtNDU3LDEwICs1MzUsMjYgQEAgcGFyYWxsZWxf dmFjdXVtX2VuZChQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIEluZGV4QnVsa0RlbGV0ZVJlc3Vs dCAqKmlzdGF0cykKIAlEZXN0cm95UGFyYWxsZWxDb250ZXh0KHB2cy0+cGN4dCk7CiAJRXhpdFBh cmFsbGVsTW9kZSgpOwogCisJaWYgKEFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSkKKwkJcHZf c2hhcmVkX2Nvc3RfcGFyYW1zID0gTlVMTDsKKwogCXBmcmVlKHB2cy0+d2lsbF9wYXJhbGxlbF92 YWN1dW0pOwogCXBmcmVlKHB2cyk7CiB9CiAKKy8qCisgKiBEU00gZGV0YWNoIGNhbGxiYWNrLiBU aGlzIGlzIGludm9rZWQgd2hlbiBhbiBhdXRvdmFjdXVtIHdvcmtlciBkZXRhY2hlcworICogZnJv bSB0aGUgRFNNIHNlZ21lbnQgaG9sZGluZyBQVlNoYXJlZC4gSXQgZW5zdXJlcyB0byByZXNldCB0 aGUgbG9jYWwgcG9pbnRlcgorICogdG8gdGhlIHNoYXJlZCBzdGF0ZSBldmVuIGlmIHBhcmFsZWxs IHZhY3V1bSByYWlzZXMgYW4gZXJyb3IgYW5kIGRvZXNuJ3QKKyAqIGNhbGwgcGFyYWxsZWxfdmFj dXVtX2VuZCgpLgorICovCitzdGF0aWMgdm9pZAorcGFyYWxsZWxfdmFjdXVtX2RzbV9kZXRhY2go ZHNtX3NlZ21lbnQgKnNlZywgRGF0dW0gYXJnKQoreworCUFzc2VydChBbUF1dG9WYWN1dW1Xb3Jr ZXJQcm9jZXNzKCkpOworCXB2X3NoYXJlZF9jb3N0X3BhcmFtcyA9IE5VTEw7Cit9CisKIC8qCiAg KiBSZXR1cm5zIHRoZSBkZWFkIGl0ZW1zIHNwYWNlIGFuZCBkZWFkIGl0ZW1zIGluZm9ybWF0aW9u LgogICovCkBAIC01MzQsNiArNjI4LDEwMyBAQCBwYXJhbGxlbF92YWN1dW1fY2xlYW51cF9hbGxf aW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIGxvbmcgbnVtX3RhYmxlX3R1cAogCXBh cmFsbGVsX3ZhY3V1bV9wcm9jZXNzX2FsbF9pbmRleGVzKHB2cywgbnVtX2luZGV4X3NjYW5zLCBm YWxzZSwgd3N0YXRzKTsKIH0KIAorLyoKKyAqIEZpbGwgaW4gdGhlIGdpdmVuIHN0cnVjdHVyZSB3 aXRoIGNvc3QtYmFzZWQgdmFjdXVtIGRlbGF5IHBhcmFtZXRlciB2YWx1ZXMuCisgKi8KK3N0YXRp YyBpbmxpbmUgdm9pZAorcGFyYWxsZWxfdmFjdXVtX3NldF9jb3N0X3BhcmFtZXRlcnMoUFZTaGFy ZWRDb3N0UGFyYW1zICpwYXJhbXMpCit7CisJcGFyYW1zLT5jb3N0X2RlbGF5ID0gdmFjdXVtX2Nv c3RfZGVsYXk7CisJcGFyYW1zLT5jb3N0X2xpbWl0ID0gdmFjdXVtX2Nvc3RfbGltaXQ7CisJcGFy YW1zLT5jb3N0X3BhZ2VfZGlydHkgPSBWYWN1dW1Db3N0UGFnZURpcnR5OworCXBhcmFtcy0+Y29z dF9wYWdlX2hpdCA9IFZhY3V1bUNvc3RQYWdlSGl0OworCXBhcmFtcy0+Y29zdF9wYWdlX21pc3Mg PSBWYWN1dW1Db3N0UGFnZU1pc3M7Cit9CisKKy8qCisgKiBVcGRhdGVzIHRoZSBjb3N0LWJhc2Vk IHZhY3V1bSBkZWxheSBwYXJhbWV0ZXJzIGZvciBwYXJhbGxlbCBhdXRvdmFjdXVtCisgKiB3b3Jr ZXJzLgorICoKKyAqIEZvciBub24tYXV0b3ZhY3V1bSBwYXJhbGxlbCB3b3JrZXJzLCB0aGlzIGZ1 bmN0aW9uIHdpbGwgaGF2ZSBubyBlZmZlY3QuCisgKi8KK3ZvaWQKK3BhcmFsbGVsX3ZhY3V1bV91 cGRhdGVfc2hhcmVkX2RlbGF5X3BhcmFtcyh2b2lkKQoreworCXVpbnQzMgkJcGFyYW1zX2dlbmVy YXRpb247CisKKwlBc3NlcnQoSXNQYXJhbGxlbFdvcmtlcigpKTsKKworCS8qIFF1aWNrIHJldHVy biBpZiB0aGUgd29ya2VyIGlzIG5vdCBydW5uaW5nIGZvciB0aGUgYXV0b3ZhY3V1bSAqLworCWlm IChwdl9zaGFyZWRfY29zdF9wYXJhbXMgPT0gTlVMTCkKKwkJcmV0dXJuOworCisJcGFyYW1zX2dl bmVyYXRpb24gPSBwZ19hdG9taWNfcmVhZF91MzIoJnB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+Z2Vu ZXJhdGlvbik7CisJQXNzZXJ0KHNoYXJlZF9wYXJhbXNfZ2VuZXJhdGlvbl9sb2NhbCA8PSBwYXJh bXNfZ2VuZXJhdGlvbik7CisKKwkvKiBSZXR1cm4gaWYgcGFyYW1ldGVycyBoYWQgbm90IGNoYW5n ZWQgaW4gdGhlIGxlYWRlciAqLworCWlmIChwYXJhbXNfZ2VuZXJhdGlvbiA9PSBzaGFyZWRfcGFy YW1zX2dlbmVyYXRpb25fbG9jYWwpCisJCXJldHVybjsKKworCVNwaW5Mb2NrQWNxdWlyZSgmcHZf c2hhcmVkX2Nvc3RfcGFyYW1zLT5tdXRleCk7CisJVmFjdXVtQ29zdERlbGF5ID0gcHZfc2hhcmVk X2Nvc3RfcGFyYW1zLT5jb3N0X2RlbGF5OworCVZhY3V1bUNvc3RMaW1pdCA9IHB2X3NoYXJlZF9j b3N0X3BhcmFtcy0+Y29zdF9saW1pdDsKKwlWYWN1dW1Db3N0UGFnZURpcnR5ID0gcHZfc2hhcmVk X2Nvc3RfcGFyYW1zLT5jb3N0X3BhZ2VfZGlydHk7CisJVmFjdXVtQ29zdFBhZ2VIaXQgPSBwdl9z aGFyZWRfY29zdF9wYXJhbXMtPmNvc3RfcGFnZV9oaXQ7CisJVmFjdXVtQ29zdFBhZ2VNaXNzID0g cHZfc2hhcmVkX2Nvc3RfcGFyYW1zLT5jb3N0X3BhZ2VfbWlzczsKKwlTcGluTG9ja1JlbGVhc2Uo JnB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+bXV0ZXgpOworCisJVmFjdXVtVXBkYXRlQ29zdHMoKTsK KworCXNoYXJlZF9wYXJhbXNfZ2VuZXJhdGlvbl9sb2NhbCA9IHBhcmFtc19nZW5lcmF0aW9uOwor CisJZWxvZyhERUJVRzIsCisJCSAicGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXIgdXBkYXRlZCBj b3N0IHBhcmFtczogY29zdF9saW1pdD0lZCwgY29zdF9kZWxheT0lZywgY29zdF9wYWdlX21pc3M9 JWQsIGNvc3RfcGFnZV9kaXJ0eT0lZCwgY29zdF9wYWdlX2hpdD0lZCIsCisJCSB2YWN1dW1fY29z dF9saW1pdCwKKwkJIHZhY3V1bV9jb3N0X2RlbGF5LAorCQkgVmFjdXVtQ29zdFBhZ2VNaXNzLAor CQkgVmFjdXVtQ29zdFBhZ2VEaXJ0eSwKKwkJIFZhY3V1bUNvc3RQYWdlSGl0KTsKK30KKworLyoK KyAqIFN0b3JlIHRoZSBjb3N0LWJhc2VkIHZhY3V1bSBkZWxheSBwYXJhbWV0ZXJzIGluIHRoZSBz aGFyZWQgbWVtb3J5IHNvIHRoYXQKKyAqIHBhcmFsbGVsIHZhY3V1bSB3b3JrZXJzIGNhbiBjb25z dW1lIHRoZW0gKHNlZQorICogcGFyYWxsZWxfdmFjdXVtX3VwZGF0ZV9zaGFyZWRfZGVsYXlfcGFy YW1zKCkpLgorICovCit2b2lkCitwYXJhbGxlbF92YWN1dW1fcHJvcGFnYXRlX3NoYXJlZF9kZWxh eV9wYXJhbXModm9pZCkKK3sKKwlBc3NlcnQoQW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpKTsK KworCS8qCisJICogUXVpY2sgcmV0dXJuIGlmIHRoZSBsZWFkZXIgcHJvY2VzcyBpcyBub3Qgc2hh cmluZyB0aGUgZGVsYXkgcGFyYW1ldGVycy4KKwkgKi8KKwlpZiAocHZfc2hhcmVkX2Nvc3RfcGFy YW1zID09IE5VTEwpCisJCXJldHVybjsKKworCS8qCisJICogQ2hlY2sgaWYgYW55IGRlbGF5IHBh cmFtZXRlcnMgaGF2ZSBjaGFuZ2VkLiBXZSBjYW4gcmVhZCB0aGVtIHdpdGhvdXQKKwkgKiBsb2Nr cyBhcyBvbmx5IHRoZSBsZWFkZXIgY2FuIG1vZGlmeSB0aGVtLgorCSAqLworCWlmICh2YWN1dW1f Y29zdF9kZWxheSA9PSBwdl9zaGFyZWRfY29zdF9wYXJhbXMtPmNvc3RfZGVsYXkgJiYKKwkJdmFj dXVtX2Nvc3RfbGltaXQgPT0gcHZfc2hhcmVkX2Nvc3RfcGFyYW1zLT5jb3N0X2xpbWl0ICYmCisJ CVZhY3V1bUNvc3RQYWdlRGlydHkgPT0gcHZfc2hhcmVkX2Nvc3RfcGFyYW1zLT5jb3N0X3BhZ2Vf ZGlydHkgJiYKKwkJVmFjdXVtQ29zdFBhZ2VIaXQgPT0gcHZfc2hhcmVkX2Nvc3RfcGFyYW1zLT5j b3N0X3BhZ2VfaGl0ICYmCisJCVZhY3V1bUNvc3RQYWdlTWlzcyA9PSBwdl9zaGFyZWRfY29zdF9w YXJhbXMtPmNvc3RfcGFnZV9taXNzKQorCQlyZXR1cm47CisKKwkvKiBVcGRhdGUgdGhlIHNoYXJl ZCBkZWxheSBwYXJhbWV0ZXJzICovCisJU3BpbkxvY2tBY3F1aXJlKCZwdl9zaGFyZWRfY29zdF9w YXJhbXMtPm11dGV4KTsKKwlwYXJhbGxlbF92YWN1dW1fc2V0X2Nvc3RfcGFyYW1ldGVycyhwdl9z aGFyZWRfY29zdF9wYXJhbXMpOworCVNwaW5Mb2NrUmVsZWFzZSgmcHZfc2hhcmVkX2Nvc3RfcGFy YW1zLT5tdXRleCk7CisKKwkvKgorCSAqIEluY3JlbWVudCB0aGUgZ2VuZXJhdGlvbiBvZiB0aGUg cGFyYW1ldGVycywgaS5lLiBsZXQgcGFyYWxsZWwgd29ya2VycworCSAqIGtub3cgdGhhdCB0aGV5 IHNob3VsZCByZS1yZWFkIHNoYXJlZCBjb3N0IHBhcmFtcy4KKwkgKi8KKwlwZ19hdG9taWNfZmV0 Y2hfYWRkX3UzMigmcHZfc2hhcmVkX2Nvc3RfcGFyYW1zLT5nZW5lcmF0aW9uLCAxKTsKK30KKwog LyoKICAqIENvbXB1dGUgdGhlIG51bWJlciBvZiBwYXJhbGxlbCB3b3JrZXIgcHJvY2Vzc2VzIHRv IHJlcXVlc3QuICBCb3RoIGluZGV4CiAgKiB2YWN1dW0gYW5kIGluZGV4IGNsZWFudXAgY2FuIGJl IGV4ZWN1dGVkIHdpdGggcGFyYWxsZWwgd29ya2Vycy4KQEAgLTU1NSwxMiArNzQ2LDE3IEBAIHBh cmFsbGVsX3ZhY3V1bV9jb21wdXRlX3dvcmtlcnMoUmVsYXRpb24gKmluZHJlbHMsIGludCBuaW5k ZXhlcywgaW50IG5yZXF1ZXN0ZWQsCiAJaW50CQkJbmluZGV4ZXNfcGFyYWxsZWxfYnVsa2RlbCA9 IDA7CiAJaW50CQkJbmluZGV4ZXNfcGFyYWxsZWxfY2xlYW51cCA9IDA7CiAJaW50CQkJcGFyYWxs ZWxfd29ya2VyczsKKwlpbnQJCQltYXhfd29ya2VyczsKKworCW1heF93b3JrZXJzID0gQW1BdXRv VmFjdXVtV29ya2VyUHJvY2VzcygpID8KKwkJYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2Vy cyA6CisJCW1heF9wYXJhbGxlbF9tYWludGVuYW5jZV93b3JrZXJzOwogCiAJLyoKIAkgKiBXZSBk b24ndCBhbGxvdyBwZXJmb3JtaW5nIHBhcmFsbGVsIG9wZXJhdGlvbiBpbiBzdGFuZGFsb25lIGJh Y2tlbmQgb3IKIAkgKiB3aGVuIHBhcmFsbGVsaXNtIGlzIGRpc2FibGVkLgogCSAqLwotCWlmICgh SXNVbmRlclBvc3RtYXN0ZXIgfHwgbWF4X3BhcmFsbGVsX21haW50ZW5hbmNlX3dvcmtlcnMgPT0g MCkKKwlpZiAoIUlzVW5kZXJQb3N0bWFzdGVyIHx8IG1heF93b3JrZXJzID09IDApCiAJCXJldHVy biAwOwogCiAJLyoKQEAgLTU5OSw4ICs3OTUsOCBAQCBwYXJhbGxlbF92YWN1dW1fY29tcHV0ZV93 b3JrZXJzKFJlbGF0aW9uICppbmRyZWxzLCBpbnQgbmluZGV4ZXMsIGludCBucmVxdWVzdGVkLAog CXBhcmFsbGVsX3dvcmtlcnMgPSAobnJlcXVlc3RlZCA+IDApID8KIAkJTWluKG5yZXF1ZXN0ZWQs IG5pbmRleGVzX3BhcmFsbGVsKSA6IG5pbmRleGVzX3BhcmFsbGVsOwogCi0JLyogQ2FwIGJ5IG1h eF9wYXJhbGxlbF9tYWludGVuYW5jZV93b3JrZXJzICovCi0JcGFyYWxsZWxfd29ya2VycyA9IE1p bihwYXJhbGxlbF93b3JrZXJzLCBtYXhfcGFyYWxsZWxfbWFpbnRlbmFuY2Vfd29ya2Vycyk7CisJ LyogQ2FwIGJ5IEdVQyB2YXJpYWJsZSAqLworCXBhcmFsbGVsX3dvcmtlcnMgPSBNaW4ocGFyYWxs ZWxfd29ya2VycywgbWF4X3dvcmtlcnMpOwogCiAJcmV0dXJuIHBhcmFsbGVsX3dvcmtlcnM7CiB9 CkBAIC0xMDY0LDcgKzEyNjAsMjEgQEAgcGFyYWxsZWxfdmFjdXVtX21haW4oZHNtX3NlZ21lbnQg KnNlZywgc2htX3RvYyAqdG9jKQogCQkJCQkJCQlzaGFyZWQtPmRlYWRfaXRlbXNfaGFuZGxlKTsK IAogCS8qIFNldCBjb3N0LWJhc2VkIHZhY3V1bSBkZWxheSAqLwotCVZhY3V1bVVwZGF0ZUNvc3Rz KCk7CisJaWYgKHNoYXJlZC0+aXNfYXV0b3ZhY3V1bSkKKwl7CisJCS8qCisJCSAqIFBhcmFsbGVs IGF1dG92YWN1dW0gd29ya2VycyBpbml0aWFsaXplIGNvc3QtYmFzZWQgZGVsYXkgcGFyYW1ldGVy cworCQkgKiBmcm9tIHRoZSBsZWFkZXIncyBzaGFyZWQgc3RhdGUgcmF0aGVyIHRoYW4gR1VDIGRl ZmF1bHRzLCBiZWNhdXNlCisJCSAqIHRoZSBsZWFkZXIgbWF5IGhhdmUgYXBwbGllZCBwZXItdGFi bGUgb3IgYXV0b3ZhY3V1bS1zcGVjaWZpYworCQkgKiBvdmVycmlkZXMuIHB2X3NoYXJlZF9jb3N0 X3BhcmFtcyBtdXN0IGJlIHNldCBiZWZvcmUgY2FsbGluZworCQkgKiBwYXJhbGxlbF92YWN1dW1f dXBkYXRlX3NoYXJlZF9kZWxheV9wYXJhbXMoKS4KKwkJICovCisJCXB2X3NoYXJlZF9jb3N0X3Bh cmFtcyA9ICYoc2hhcmVkLT5jb3N0X3BhcmFtcyk7CisJCXBhcmFsbGVsX3ZhY3V1bV91cGRhdGVf c2hhcmVkX2RlbGF5X3BhcmFtcygpOworCX0KKwllbHNlCisJCVZhY3V1bVVwZGF0ZUNvc3RzKCk7 CisKIAlWYWN1dW1Db3N0QmFsYW5jZSA9IDA7CiAJVmFjdXVtQ29zdEJhbGFuY2VMb2NhbCA9IDA7 CiAJVmFjdXVtU2hhcmVkQ29zdEJhbGFuY2UgPSAmKHNoYXJlZC0+Y29zdF9iYWxhbmNlKTsKQEAg LTExMTksNiArMTMyOSw5IEBAIHBhcmFsbGVsX3ZhY3V1bV9tYWluKGRzbV9zZWdtZW50ICpzZWcs IHNobV90b2MgKnRvYykKIAl2YWNfY2xvc2VfaW5kZXhlcyhuaW5kZXhlcywgaW5kcmVscywgUm93 RXhjbHVzaXZlTG9jayk7CiAJdGFibGVfY2xvc2UocmVsLCBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxv Y2spOwogCUZyZWVBY2Nlc3NTdHJhdGVneShwdnMuYnN0cmF0ZWd5KTsKKworCWlmIChzaGFyZWQt PmlzX2F1dG92YWN1dW0pCisJCXB2X3NoYXJlZF9jb3N0X3BhcmFtcyA9IE5VTEw7CiB9CiAKIC8q CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyBiL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCmluZGV4IDg0MDBlNjcyMmNjLi41OTJiMzdl ZDI2MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKKysr IGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKQEAgLTE2ODksNyArMTY4OSw3 IEBAIFZhY3V1bVVwZGF0ZUNvc3RzKHZvaWQpCiAJfQogCWVsc2UKIAl7Ci0JCS8qIE11c3QgYmUg ZXhwbGljaXQgVkFDVVVNIG9yIEFOQUxZWkUgKi8KKwkJLyogTXVzdCBiZSBleHBsaWNpdCBWQUNV VU0gb3IgQU5BTFlaRSBvciBwYXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtlciAqLwogCQl2YWN1dW1f Y29zdF9kZWxheSA9IFZhY3V1bUNvc3REZWxheTsKIAkJdmFjdXVtX2Nvc3RfbGltaXQgPSBWYWN1 dW1Db3N0TGltaXQ7CiAJfQpAQCAtMjkzMSw4ICsyOTMxLDYgQEAgdGFibGVfcmVjaGVja19hdXRv dmFjKE9pZCByZWxpZCwgSFRBQiAqdGFibGVfdG9hc3RfbWFwLAogCQkgKi8KIAkJdGFiLT5hdF9w YXJhbXMuaW5kZXhfY2xlYW51cCA9IFZBQ09QVFZBTFVFX1VOU1BFQ0lGSUVEOwogCQl0YWItPmF0 X3BhcmFtcy50cnVuY2F0ZSA9IFZBQ09QVFZBTFVFX1VOU1BFQ0lGSUVEOwotCQkvKiBBcyBvZiBu b3csIHdlIGRvbid0IHN1cHBvcnQgcGFyYWxsZWwgdmFjdXVtIGZvciBhdXRvdmFjdXVtICovCi0J CXRhYi0+YXRfcGFyYW1zLm53b3JrZXJzID0gLTE7CiAJCXRhYi0+YXRfcGFyYW1zLmZyZWV6ZV9t aW5fYWdlID0gZnJlZXplX21pbl9hZ2U7CiAJCXRhYi0+YXRfcGFyYW1zLmZyZWV6ZV90YWJsZV9h Z2UgPSBmcmVlemVfdGFibGVfYWdlOwogCQl0YWItPmF0X3BhcmFtcy5tdWx0aXhhY3RfZnJlZXpl X21pbl9hZ2UgPSBtdWx0aXhhY3RfZnJlZXplX21pbl9hZ2U7CkBAIC0yOTQyLDYgKzI5NDAsMjcg QEAgdGFibGVfcmVjaGVja19hdXRvdmFjKE9pZCByZWxpZCwgSFRBQiAqdGFibGVfdG9hc3RfbWFw LAogCQl0YWItPmF0X3BhcmFtcy5sb2dfYW5hbHl6ZV9taW5fZHVyYXRpb24gPSBsb2dfYW5hbHl6 ZV9taW5fZHVyYXRpb247CiAJCXRhYi0+YXRfcGFyYW1zLnRvYXN0X3BhcmVudCA9IEludmFsaWRP aWQ7CiAKKwkJLyogRGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgcGFyYWxsZWwgdmFjdXVtIHdvcmtl cnMgdG8gdXNlICovCisJCXRhYi0+YXRfcGFyYW1zLm53b3JrZXJzID0gMDsKKwkJaWYgKGF2b3B0 cykKKwkJeworCQkJaWYgKGF2b3B0cy0+YXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzID09IDAp CisJCQl7CisJCQkJLyoKKwkJCQkgKiBEaXNhYmxlIHBhcmFsbGVsIHZhY3V1bSwgaWYgdGhlIHJl bG9wdGlvbiBzZXRzIHRoZSBwYXJhbGxlbAorCQkJCSAqIGRlZ3JlZSBhcyB6ZXJvLgorCQkJCSAq LworCQkJCXRhYi0+YXRfcGFyYW1zLm53b3JrZXJzID0gLTE7CisJCQl9CisJCQllbHNlIGlmIChh dm9wdHMtPmF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2VycyA+IDApCisJCQkJdGFiLT5hdF9wYXJh bXMubndvcmtlcnMgPSBhdm9wdHMtPmF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2VyczsKKworCQkJ LyoKKwkJCSAqIGF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2VycyA9PSAtMSBmYWxscyB0aHJvdWdo LCBrZWVwCisJCQkgKiBud29ya2Vycz0wCisJCQkgKi8KKwkJfQorCiAJCS8qCiAJCSAqIExhdGVy LCBpbiB2YWN1dW1fcmVsKCksIHdlIGNoZWNrIHJlbG9wdGlvbnMgZm9yIGFueQogCQkgKiB2YWN1 dW1fbWF4X2VhZ2VyX2ZyZWV6ZV9mYWlsdXJlX3JhdGUgb3ZlcnJpZGUuCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQv Z2xvYmFscy5jCmluZGV4IDM2YWQ3MDhiMzYwLi4yNGRkYjI3NmYwYyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5p dC9nbG9iYWxzLmMKQEAgLTE0Myw2ICsxNDMsNyBAQCBpbnQJCQlOQnVmZmVycyA9IDE2Mzg0Owog aW50CQkJTWF4Q29ubmVjdGlvbnMgPSAxMDA7CiBpbnQJCQltYXhfd29ya2VyX3Byb2Nlc3NlcyA9 IDg7CiBpbnQJCQltYXhfcGFyYWxsZWxfd29ya2VycyA9IDg7CitpbnQJCQlhdXRvdmFjdXVtX21h eF9wYXJhbGxlbF93b3JrZXJzID0gMDsKIGludAkJCU1heEJhY2tlbmRzID0gMDsKIAogLyogR1VD IHBhcmFtZXRlcnMgZm9yIHZhY3V1bSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9ndWMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKaW5kZXggZTE1NDZkOWM5 N2EuLmM0YzNmYmM0ZmUzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKQEAgLTMzNTgsOSArMzM1OCwxNSBA QCBzZXRfY29uZmlnX3dpdGhfaGFuZGxlKGNvbnN0IGNoYXIgKm5hbWUsIGNvbmZpZ19oYW5kbGUg KmhhbmRsZSwKIAkgKgogCSAqIEFsc28gYWxsb3cgbm9ybWFsIHNldHRpbmcgaWYgdGhlIEdVQyBp cyBtYXJrZWQgR1VDX0FMTE9XX0lOX1BBUkFMTEVMLgogCSAqCi0JICogT3RoZXIgY2hhbmdlcyBt aWdodCBuZWVkIHRvIGFmZmVjdCBvdGhlciB3b3JrZXJzLCBzbyBmb3JiaWQgdGhlbS4KKwkgKiBP dGhlciBjaGFuZ2VzIG1pZ2h0IG5lZWQgdG8gYWZmZWN0IG90aGVyIHdvcmtlcnMsIHNvIGZvcmJp ZCB0aGVtLiBOb3RlLAorCSAqIHRoYXQgcGFyYWxsZWwgYXV0b3ZhY3V1bSBsZWFkZXIgaXMgYW4g ZXhjZXB0aW9uIGJlY2F1c2UgY29zdC1iYXNlZAorCSAqIGRlbGF5cyBuZWVkIHRvIGJlIGFmZmVj dGVkIHRvIHBhcmFsbGVsIGF1dG92YWN1dW0gd29ya2Vycy4gVGhlc2UKKwkgKiBwYXJhbWV0ZXJz IGFyZSBwcm9wYWdhdGVkIHRvIGl0cyB3b3JrZXJzIGR1cmluZyBwYXJhbGxlbCB2YWN1dW0gKHNl ZQorCSAqIHZhY3V1bXBhcmFsbGVsLmMgZm9yIGRldGFpbHMpLiBBbGwgb3RoZXIgY2hhbmdlcyB3 aWxsIGFmZmVjdCBvbmx5IHRoZQorCSAqIHBhcmFsbGVsIGF1dG92YWN1dW0gbGVhZGVyLgogCSAq LwotCWlmIChJc0luUGFyYWxsZWxNb2RlKCkgJiYgY2hhbmdlVmFsICYmIGFjdGlvbiAhPSBHVUNf QUNUSU9OX1NBVkUgJiYKKwlpZiAoSXNJblBhcmFsbGVsTW9kZSgpICYmICFBbUF1dG9WYWN1dW1X b3JrZXJQcm9jZXNzKCkgJiYgY2hhbmdlVmFsICYmCisJCWFjdGlvbiAhPSBHVUNfQUNUSU9OX1NB VkUgJiYKIAkJKHJlY29yZC0+ZmxhZ3MgJiBHVUNfQUxMT1dfSU5fUEFSQUxMRUwpID09IDApCiAJ ewogCQllcmVwb3J0KGVsZXZlbCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv Z3VjX3BhcmFtZXRlcnMuZGF0IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVy cy5kYXQKaW5kZXggYTMxNWM0YWI4YWIuLmZhZTNlYzMwYTNjIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdAorKysgYi9zcmMvYmFja2VuZC91dGls cy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdApAQCAtMTcwLDYgKzE3MCwxNCBAQAogICBtYXggPT4g JzEwLjAnLAogfSwKIAoreyBuYW1lID0+ICdhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJz JywgdHlwZSA9PiAnaW50JywgY29udGV4dCA9PiAnUEdDX1NJR0hVUCcsIGdyb3VwID0+ICdWQUNV VU1fQVVUT1ZBQ1VVTScsCisgIHNob3J0X2Rlc2MgPT4gJ01heGltdW0gbnVtYmVyIG9mIHBhcmFs bGVsIHdvcmtlcnMgdGhhdCBjYW4gYmUgdXNlZCBieSBhIHNpbmdsZSBhdXRvdmFjdXVtIHdvcmtl ci4nLAorICB2YXJpYWJsZSA9PiAnYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycycsCisg IGJvb3RfdmFsID0+ICcwJywKKyAgbWluID0+ICcwJywKKyAgbWF4ID0+ICdNQVhfUEFSQUxMRUxf V09SS0VSX0xJTUlUJywKK30sCisKIHsgbmFtZSA9PiAnYXV0b3ZhY3V1bV9tYXhfd29ya2Vycycs IHR5cGUgPT4gJ2ludCcsIGNvbnRleHQgPT4gJ1BHQ19TSUdIVVAnLCBncm91cCA9PiAnVkFDVVVN X0FVVE9WQUNVVU0nLAogICBzaG9ydF9kZXNjID0+ICdTZXRzIHRoZSBtYXhpbXVtIG51bWJlciBv ZiBzaW11bHRhbmVvdXNseSBydW5uaW5nIGF1dG92YWN1dW0gd29ya2VyIHByb2Nlc3Nlcy4nLAog ICB2YXJpYWJsZSA9PiAnYXV0b3ZhY3V1bV9tYXhfd29ya2VycycsCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91 dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKaW5kZXggNmQwMzM3ODUzZTAuLmQ5MDJk NjI5NTA4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29u Zi5zYW1wbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2Ft cGxlCkBAIC03MTMsNiArNzEzLDcgQEAKICNhdXRvdmFjdXVtX3dvcmtlcl9zbG90cyA9IDE2ICAg ICAgICAgICAjIGF1dG92YWN1dW0gd29ya2VyIHNsb3RzIHRvIGFsbG9jYXRlCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAoY2hhbmdlIHJlcXVpcmVzIHJlc3RhcnQp CiAjYXV0b3ZhY3V1bV9tYXhfd29ya2VycyA9IDMgICAgICAgICAgICAgIyBtYXggbnVtYmVyIG9m IGF1dG92YWN1dW0gc3VicHJvY2Vzc2VzCisjYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2Vy cyA9IDAgICAgIyBsaW1pdGVkIGJ5IG1heF9wYXJhbGxlbF93b3JrZXJzCiAjYXV0b3ZhY3V1bV9u YXB0aW1lID0gMW1pbiAgICAgICAgICAgICAgIyB0aW1lIGJldHdlZW4gYXV0b3ZhY3V1bSBydW5z CiAjYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkID0gNTAgICAgICAgIyBtaW4gbnVtYmVyIG9m IHJvdyB1cGRhdGVzIGJlZm9yZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICMgdmFjdXVtCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMg Yi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKaW5kZXggNTNiZjFlMjE3MjEuLjFkOTQx YzExOTk3IDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKKysrIGIv c3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCkBAIC0xNDMyLDYgKzE0MzIsNyBAQCBzdGF0 aWMgY29uc3QgY2hhciAqY29uc3QgdGFibGVfc3RvcmFnZV9wYXJhbWV0ZXJzW10gPSB7CiAJImF1 dG92YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlIiwKIAkiYXV0b3ZhY3V1bV9tdWx0aXhh Y3RfZnJlZXplX21pbl9hZ2UiLAogCSJhdXRvdmFjdXVtX211bHRpeGFjdF9mcmVlemVfdGFibGVf YWdlIiwKKwkiYXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzIiwKIAkiYXV0b3ZhY3V1bV92YWN1 dW1fY29zdF9kZWxheSIsCiAJImF1dG92YWN1dW1fdmFjdXVtX2Nvc3RfbGltaXQiLAogCSJhdXRv dmFjdXVtX3ZhY3V1bV9pbnNlcnRfc2NhbGVfZmFjdG9yIiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NvbW1hbmRzL3ZhY3V1bS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmgKaW5k ZXggNWI4MDIzNjE2YzAuLjY5ZmVjMDc0OTFiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21t YW5kcy92YWN1dW0uaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaApAQCAtNDIy LDYgKzQyMiw4IEBAIGV4dGVybiB2b2lkIHBhcmFsbGVsX3ZhY3V1bV9jbGVhbnVwX2FsbF9pbmRl eGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywKIAkJCQkJCQkJCQkJCWludCBudW1faW5kZXhf c2NhbnMsCiAJCQkJCQkJCQkJCQlib29sIGVzdGltYXRlZF9jb3VudCwKIAkJCQkJCQkJCQkJCVBW V29ya2VyU3RhdHMgKndzdGF0cyk7CitleHRlcm4gdm9pZCBwYXJhbGxlbF92YWN1dW1fdXBkYXRl X3NoYXJlZF9kZWxheV9wYXJhbXModm9pZCk7CitleHRlcm4gdm9pZCBwYXJhbGxlbF92YWN1dW1f cHJvcGFnYXRlX3NoYXJlZF9kZWxheV9wYXJhbXModm9pZCk7CiBleHRlcm4gdm9pZCBwYXJhbGxl bF92YWN1dW1fbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpOwogCiAvKiBpbiBj b21tYW5kcy9hbmFseXplLmMgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5o IGIvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKaW5kZXggNzI3N2MzN2U3NzkuLjJlMTBlM2M4MTRk IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAorKysgYi9zcmMvaW5jbHVkZS9t aXNjYWRtaW4uaApAQCAtMTc4LDYgKzE3OCw3IEBAIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgTWF4 QmFja2VuZHM7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IE1heENvbm5lY3Rpb25zOwogZXh0ZXJu IFBHRExMSU1QT1JUIGludCBtYXhfd29ya2VyX3Byb2Nlc3NlczsKIGV4dGVybiBQR0RMTElNUE9S VCBpbnQgbWF4X3BhcmFsbGVsX3dvcmtlcnM7CitleHRlcm4gUEdETExJTVBPUlQgaW50IGF1dG92 YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnM7CiAKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgY29t bWl0X3RpbWVzdGFtcF9idWZmZXJzOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtdWx0aXhhY3Rf bWVtYmVyX2J1ZmZlcnM7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9yZWwuaCBiL3Ny Yy9pbmNsdWRlL3V0aWxzL3JlbC5oCmluZGV4IDIzNjgzMGY2YjkzLi5jZDFlOTJmMjMwMiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMv cmVsLmgKQEAgLTMxMSw2ICszMTEsOCBAQCB0eXBlZGVmIHN0cnVjdCBGb3JlaWduS2V5Q2FjaGVJ bmZvCiB0eXBlZGVmIHN0cnVjdCBBdXRvVmFjT3B0cwogewogCWJvb2wJCWVuYWJsZWQ7CisKKwlp bnQJCQlhdXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtlcnM7CiAJaW50CQkJdmFjdXVtX3RocmVzaG9s ZDsKIAlpbnQJCQl2YWN1dW1fbWF4X3RocmVzaG9sZDsKIAlpbnQJCQl2YWN1dW1faW5zX3RocmVz aG9sZDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUgYi9zcmMvdGVzdC9t b2R1bGVzL01ha2VmaWxlCmluZGV4IDg2NGI0MDdhYmNmLi43MGZhYzJiMzFiOSAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmlsZQorKysgYi9zcmMvdGVzdC9tb2R1bGVzL01ha2Vm aWxlCkBAIC0xNiw2ICsxNiw3IEBAIFNVQkRJUlMgPSBcCiAJCSAgcGxzYW1wbGUgXAogCQkgIHNw Z2lzdF9uYW1lX29wcyBcCiAJCSAgdGVzdF9haW8gXAorCQkgIHRlc3RfYXV0b3ZhY3V1bSBcCiAJ CSAgdGVzdF9iaW5hcnloZWFwIFwKIAkJICB0ZXN0X2JpdG1hcHNldCBcCiAJCSAgdGVzdF9ibG9v bWZpbHRlciBcCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1aWxkIGIvc3Jj L3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZAppbmRleCBlNWFjYWNkNTA4My4uNmIyYjEzOTFmYTkg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3Qv bW9kdWxlcy9tZXNvbi5idWlsZApAQCAtMTYsNiArMTYsNyBAQCBzdWJkaXIoJ3Bsc2FtcGxlJykK IHN1YmRpcignc3BnaXN0X25hbWVfb3BzJykKIHN1YmRpcignc3NsX3Bhc3NwaHJhc2VfY2FsbGJh Y2snKQogc3ViZGlyKCd0ZXN0X2FpbycpCitzdWJkaXIoJ3Rlc3RfYXV0b3ZhY3V1bScpCiBzdWJk aXIoJ3Rlc3RfYmluYXJ5aGVhcCcpCiBzdWJkaXIoJ3Rlc3RfYml0bWFwc2V0JykKIHN1YmRpcign dGVzdF9ibG9vbWZpbHRlcicpCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0 b3ZhY3V1bS8uZ2l0aWdub3JlIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vLmdp dGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNzE2ZTE3ZjVh MmEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS8u Z2l0aWdub3JlCkBAIC0wLDAgKzEsMiBAQAorIyBHZW5lcmF0ZWQgc3ViZGlyZWN0b3JpZXMKKy90 bXBfY2hlY2svCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS9N YWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL01ha2VmaWxlCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xNWU4MzAxMGMxYwotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL01ha2VmaWxlCkBAIC0w LDAgKzEsMjAgQEAKKyMgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vTWFrZWZpbGUK KworUEdGSUxFREVTQyA9ICJ0ZXN0X2F1dG92YWN1dW0gLSB0ZXN0IGNvZGUgZm9yIGF1dG92YWN1 dW0iCisKK1RBUF9URVNUUyA9IDEKKworRVhUUkFfSU5TVEFMTCA9IHNyYy90ZXN0L21vZHVsZXMv aW5qZWN0aW9uX3BvaW50cworCitleHBvcnQgZW5hYmxlX2luamVjdGlvbl9wb2ludHMKKworaWZk ZWYgVVNFX1BHWFMKK1BHX0NPTkZJRyA9IHBnX2NvbmZpZworUEdYUyA6PSAkKHNoZWxsICQoUEdf Q09ORklHKSAtLXBneHMpCitpbmNsdWRlICQoUEdYUykKK2Vsc2UKK3N1YmRpciA9IHNyYy90ZXN0 L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtCit0b3BfYnVpbGRkaXIgPSAuLi8uLi8uLi8uLgoraW5j bHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAoraW5jbHVkZSAkKHRvcF9z cmNkaXIpL2NvbnRyaWIvY29udHJpYi1nbG9iYWwubWsKK2VuZGlmCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9hdXRvdmFjdXVtL21lc29uLmJ1aWxkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi44NmUzOTJiYzBkZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF9hdXRvdmFjdXVtL21lc29uLmJ1aWxkCkBAIC0wLDAgKzEsMTUgQEAKKyMgQ29w eXJpZ2h0IChjKSAyMDI0LTIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3Vw CisKK3Rlc3RzICs9IHsKKyAgJ25hbWUnOiAndGVzdF9hdXRvdmFjdXVtJywKKyAgJ3NkJzogbWVz b24uY3VycmVudF9zb3VyY2VfZGlyKCksCisgICdiZCc6IG1lc29uLmN1cnJlbnRfYnVpbGRfZGly KCksCisgICd0YXAnOiB7CisgICAgJ2Vudic6IHsKKyAgICAgICAnZW5hYmxlX2luamVjdGlvbl9w b2ludHMnOiBnZXRfb3B0aW9uKCdpbmplY3Rpb25fcG9pbnRzJykgPyAneWVzJyA6ICdubycsCisg ICAgfSwKKyAgICAndGVzdHMnOiBbCisgICAgICAndC8wMDFfcGFyYWxsZWxfYXV0b3ZhY3V1bS5w bCcsCisgICAgXSwKKyAgfSwKK30KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9h dXRvdmFjdXVtL3QvMDAxX3BhcmFsbGVsX2F1dG92YWN1dW0ucGwgYi9zcmMvdGVzdC9tb2R1bGVz L3Rlc3RfYXV0b3ZhY3V1bS90LzAwMV9wYXJhbGxlbF9hdXRvdmFjdXVtLnBsCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jNWEyZTc4MjQ2YQotLS0gL2Rldi9udWxsCisr KyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3QvMDAxX3BhcmFsbGVsX2F1dG92 YWN1dW0ucGwKQEAgLTAsMCArMSwxODkgQEAKKworIyBDb3B5cmlnaHQgKGMpIDIwMjYsIFBvc3Rn cmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyMgVGVzdCBwYXJhbGxlbCBhdXRvdmFj dXVtIGJlaGF2aW9yCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7 Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpV dGlsczsKK3VzZSBUZXN0OjpNb3JlOworCitpZiAoJEVOVntlbmFibGVfaW5qZWN0aW9uX3BvaW50 c30gbmUgJ3llcycpCit7CisJcGxhbiBza2lwX2FsbCA9PiAnSW5qZWN0aW9uIHBvaW50cyBub3Qg c3VwcG9ydGVkIGJ5IHRoaXMgYnVpbGQnOworfQorCisjIEJlZm9yZSBlYWNoIHRlc3Qgd2Ugc2hv dWxkIGRpc2FibGUgYXV0b3ZhY3V1bSBmb3IgJ3Rlc3RfYXV0b3ZhYycgdGFibGUgYW5kCisjIGdl bmVyYXRlIHNvbWUgZGVhZCB0dXBsZXMgaW4gaXQuIFJldHVybnMgdGhlIGN1cnJlbnQgYXV0b3Zh Y3V1bV9jb3VudCBvZgorIyB0aGUgdGFibGUgdGVzdF9hdXRvdmFjLgorc3ViIHByZXBhcmVfZm9y X25leHRfdGVzdAoreworCW15ICgkbm9kZSwgJHRlc3RfbnVtYmVyKSA9IEBfOworCisJJG5vZGUt PnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXF7CisJCUFMVEVSIFRBQkxFIHRlc3RfYXV0b3Zh YyBTRVQgKGF1dG92YWN1dW1fZW5hYmxlZCA9IGZhbHNlKTsKKwkJVVBEQVRFIHRlc3RfYXV0b3Zh YyBTRVQgY29sXzEgPSAkdGVzdF9udW1iZXI7CisJfSk7CisKKwlteSAkY291bnQgPSAkbm9kZS0+ c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxcXsKKwkJU0VMRUNUIGF1dG92YWN1dW1fY291bnQg RlJPTSBwZ19zdGF0X3VzZXJfdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAndGVzdF9hdXRvdmFjJwor CX0pOworCisJcmV0dXJuICRjb3VudDsKK30KKworIyBXYWl0IGZvciB0aGUgdGFibGUgdG8gYmUg dmFjdXVtZWQgYnkgYW4gYXV0b3ZhY3V1bSB3b3JrZXIuCitzdWIgd2FpdF9mb3JfYXV0b3ZhY3V1 bV9jb21wbGV0ZQoreworCW15ICgkbm9kZSwgJG9sZF9jb3VudCkgPSBAXzsKKworCSRub2RlLT5w b2xsX3F1ZXJ5X3VudGlsKAorCQkncG9zdGdyZXMnLCBxcXsKKwkJU0VMRUNUIGF1dG92YWN1dW1f Y291bnQgPiAkb2xkX2NvdW50IEZST00gcGdfc3RhdF91c2VyX3RhYmxlcyBXSEVSRSByZWxuYW1l ID0gJ3Rlc3RfYXV0b3ZhYycKKwl9KTsKK30KKworbXkgJG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyLT5uZXcoJ21haW4nKTsKKyRub2RlLT5pbml0OworCisjIExpbWl0IHRvIG9uZSBh dXRvdmFjdXVtIHdvcmtlciBhbmQgZGlzYWJsZSBhdXRvdmFjdXVtIGxvZ2dpbmcgZ2xvYmFsbHkK KyMgKGVuYWJsZWQgb25seSBvbiB0aGUgdGVzdCB0YWJsZSkgc28gdGhhdCBsb2cgY2hlY2tzIGJl bG93IG1hdGNoIG9ubHkKKyMgYWN0aXZpdHkgb24gdGhlIGV4cGVjdGVkIHRhYmxlLgorJG5vZGUt PmFwcGVuZF9jb25mKAorCSdwb3N0Z3Jlc3FsLmNvbmYnLCBxcXsKK2F1dG92YWN1dW1fbWF4X3dv cmtlcnMgPSAxCithdXRvdmFjdXVtX3dvcmtlcl9zbG90cyA9IDEKK2F1dG92YWN1dW1fbWF4X3Bh cmFsbGVsX3dvcmtlcnMgPSAyCittYXhfd29ya2VyX3Byb2Nlc3NlcyA9IDEwCittYXhfcGFyYWxs ZWxfd29ya2VycyA9IDEwCitsb2dfbWluX21lc3NhZ2VzID0gZGVidWcyCithdXRvdmFjdXVtX25h cHRpbWUgPSAnMXMnCittaW5fcGFyYWxsZWxfaW5kZXhfc2Nhbl9zaXplID0gMAorbG9nX2F1dG92 YWN1dW1fbWluX2R1cmF0aW9uID0gLTEKK30pOworJG5vZGUtPnN0YXJ0OworCisjIENoZWNrIGlm IHRoZSBleHRlbnNpb24gaW5qZWN0aW9uX3BvaW50cyBpcyBhdmFpbGFibGUsIGFzIGl0IG1heSBi ZQorIyBwb3NzaWJsZSB0aGF0IHRoaXMgc2NyaXB0IGlzIHJ1biB3aXRoIGluc3RhbGxjaGVjaywg d2hlcmUgdGhlIG1vZHVsZQorIyB3b3VsZCBub3QgYmUgaW5zdGFsbGVkIGJ5IGRlZmF1bHQuCitp ZiAoISRub2RlLT5jaGVja19leHRlbnNpb24oJ2luamVjdGlvbl9wb2ludHMnKSkKK3sKKwlwbGFu IHNraXBfYWxsID0+ICdFeHRlbnNpb24gaW5qZWN0aW9uX3BvaW50cyBub3QgaW5zdGFsbGVkJzsK K30KKworIyBDcmVhdGUgYWxsIGZ1bmN0aW9ucyBuZWVkZWQgZm9yIHRlc3RpbmcKKyRub2RlLT5z YWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CisJQ1JFQVRFIEVYVEVOU0lPTiBpbmplY3Rpb25f cG9pbnRzOworfSk7CisKK215ICRpbmRleGVzX251bSA9IDM7CitteSAkaW5pdGlhbF9yb3dzX251 bSA9IDEwXzAwMDsKK215ICRhdXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtlcnMgPSAyOworCisjIENy ZWF0ZSB0YWJsZSBhbmQgZmlsbCBpdCB3aXRoIHNvbWUgZGF0YQorJG5vZGUtPnNhZmVfcHNxbCgK KwkncG9zdGdyZXMnLCBxcXsKKwlDUkVBVEUgVEFCTEUgdGVzdF9hdXRvdmFjICgKKwkJaWQgU0VS SUFMIFBSSU1BUlkgS0VZLAorCQljb2xfMSBJTlRFR0VSLCAgY29sXzIgSU5URUdFUiwgIGNvbF8z IElOVEVHRVIsICBjb2xfNCBJTlRFR0VSCisJKSBXSVRIIChhdXRvdmFjdXVtX3BhcmFsbGVsX3dv cmtlcnMgPSAkYXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzLAorCQkJbG9nX2F1dG92YWN1dW1f bWluX2R1cmF0aW9uID0gMCk7CisKKwlJTlNFUlQgSU5UTyB0ZXN0X2F1dG92YWMKKwlTRUxFQ1QK KwkJZyBBUyBjb2wxLAorCQlnICsgMSBBUyBjb2wyLAorCQlnICsgMiBBUyBjb2wzLAorCQlnICsg MyBBUyBjb2w0CisJRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgJGluaXRpYWxfcm93c19udW0pIEFT IGc7Cit9KTsKKworIyBDcmVhdGUgc3BlY2lmaWVkIG51bWJlciBvZiBiLXRyZWUgaW5kZXhlcyBv biB0aGUgdGFibGUKKyRub2RlLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CisJRE8gXCRc JAorCURFQ0xBUkUKKwkJaSBJTlRFR0VSOworCUJFR0lOCisJCUZPUiBpIElOIDEuLiRpbmRleGVz X251bSBMT09QCisJCQlFWEVDVVRFIGZvcm1hdCgnQ1JFQVRFIElOREVYIGlkeF9jb2xfXCVzIE9O IHRlc3RfYXV0b3ZhYyAoY29sX1wlcyk7JywgaSwgaSk7CisJCUVORCBMT09QOworCUVORCBcJFwk OworfSk7CisKKyMgVGVzdCAxIDoKKyMgT3VyIHRhYmxlIGhhcyBlbm91Z2ggaW5kZXhlcyBhbmQg YXBwcm9wcmlhdGUgcmVsb3B0aW9ucywgc28gYXV0b3ZhY3V1bSBtdXN0CisjIGJlIGFibGUgdG8g cHJvY2VzcyBpdCBpbiBwYXJhbGxlbCBtb2RlLiBKdXN0IGNoZWNrIGlmIGl0IGNhbiBkbyBpdC4K KworbXkgJGF2X2NvdW50ID0gcHJlcGFyZV9mb3JfbmV4dF90ZXN0KCRub2RlLCAxKTsKK215ICRs b2dfb2Zmc2V0ID0gLXMgJG5vZGUtPmxvZ2ZpbGU7CisKKyRub2RlLT5zYWZlX3BzcWwoCisJJ3Bv c3RncmVzJywgcXF7CisJQUxURVIgVEFCTEUgdGVzdF9hdXRvdmFjIFNFVCAoYXV0b3ZhY3V1bV9l bmFibGVkID0gdHJ1ZSk7Cit9KTsKKworIyBXYWl0IHVudGlsIHRoZSBwYXJhbGxlbCBhdXRvdmFj dXVtIG9uIHRhYmxlIGlzIGNvbXBsZXRlZC4gQXQgdGhlIHNhbWUgdGltZSwKKyMgd2UgY2hlY2sg dGhhdCB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mIHBhcmFsbGVsIHdvcmtlcnMgaGFzIGJlZW4gc3Rh cnRlZC4KK3dhaXRfZm9yX2F1dG92YWN1dW1fY29tcGxldGUoJG5vZGUsICRhdl9jb3VudCk7Citv ayggJG5vZGUtPmxvZ19jb250YWlucygKKwkJcXIvcGFyYWxsZWwgd29ya2VyczogaW5kZXggdmFj dXVtOiAyIHBsYW5uZWQsIDIgbGF1bmNoZWQgaW4gdG90YWwvLAorCQkkbG9nX29mZnNldCkpOwor CisjIFRlc3QgMjoKKyMgQ2hlY2sgd2hldGhlciBwYXJhbGxlbCBhdXRvdmFjdXVtIGxlYWRlciBj YW4gcHJvcGFnYXRlIGNvc3QtYmFzZWQgcGFyYW1ldGVycworIyB0byB0aGUgcGFyYWxsZWwgd29y a2Vycy4KKworJGF2X2NvdW50ID0gcHJlcGFyZV9mb3JfbmV4dF90ZXN0KCRub2RlLCAyKTsKKyRs b2dfb2Zmc2V0ID0gLXMgJG5vZGUtPmxvZ2ZpbGU7CisKKyRub2RlLT5zYWZlX3BzcWwoCisJJ3Bv c3RncmVzJywgcXF7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdhdXRvdmFjdXVt LXN0YXJ0LXBhcmFsbGVsLXZhY3V1bScsICd3YWl0Jyk7CisKKwlBTFRFUiBUQUJMRSB0ZXN0X2F1 dG92YWMgU0VUIChhdXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtlcnMgPSAxLCBhdXRvdmFjdXVtX2Vu YWJsZWQgPSB0cnVlKTsKK30pOworCisjIFdhaXQgdW50aWwgcGFyYWxsZWwgYXV0b3ZhY3V1bSBp cyBpbml0ZWQKKyRub2RlLT53YWl0X2Zvcl9ldmVudCgnYXV0b3ZhY3V1bSB3b3JrZXInLAorCSdh dXRvdmFjdXVtLXN0YXJ0LXBhcmFsbGVsLXZhY3V1bScpOworCisjIFVwZGF0ZSB0aGUgc2hhcmVk IGNvc3QtYmFzZWQgZGVsYXkgcGFyYW1ldGVycy4KKyRub2RlLT5zYWZlX3BzcWwoCisJJ3Bvc3Rn cmVzJywgcXF7CisJQUxURVIgU1lTVEVNIFNFVCBhdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2xpbWl0 ID0gNTAwOworCUFMVEVSIFNZU1RFTSBTRVQgYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9kZWxheSA9 IDU7CisJQUxURVIgU1lTVEVNIFNFVCB2YWN1dW1fY29zdF9wYWdlX21pc3MgPSAxMDsKKwlBTFRF UiBTWVNURU0gU0VUIHZhY3V1bV9jb3N0X3BhZ2VfZGlydHkgPSAxMDsKKwlBTFRFUiBTWVNURU0g U0VUIHZhY3V1bV9jb3N0X3BhZ2VfaGl0ID0gMTA7CisJU0VMRUNUIHBnX3JlbG9hZF9jb25mKCk7 Cit9KTsKKworIyBSZXN1bWUgdGhlIGxlYWRlciBwcm9jZXNzIHRvIHVwZGF0ZSB0aGUgc2hhcmVk IHBhcmFtZXRlcnMgZHVyaW5nIGhlYXAgc2NhbiAoaS5lLgorIyB2YWN1dW1fZGVsYXlfcG9pbnQo KSBpcyBjYWxsZWQpIGFuZCBsYXVuY2ggYSBwYXJhbGxlbCB2YWN1dW0gd29ya2VyLCBidXQgaXQg c3RvcHMKKyMgYmVmb3JlIHZhY3V1bWluZyBpbmRleGVzIGR1ZSB0byB0aGUgaW5qZWN0aW9uIHBv aW50LgorJG5vZGUtPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKKwlTRUxFQ1QgaW5qZWN0 aW9uX3BvaW50c193YWtldXAoJ2F1dG92YWN1dW0tc3RhcnQtcGFyYWxsZWwtdmFjdXVtJyk7Cit9 KTsKKworIyBDaGVjayB3aGV0aGVyIHBhcmFsbGVsIHdvcmtlciBzdWNjZXNzZnVsbHkgdXBkYXRl ZCBhbGwgcGFyYW1ldGVycyBkdXJpbmcKKyMgaW5kZXggcHJvY2Vzc2luZy4KKyRub2RlLT53YWl0 X2Zvcl9sb2coCisJcXIvcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXIgdXBkYXRlZCBjb3N0IHBh cmFtczogY29zdF9saW1pdD01MDAsIGNvc3RfZGVsYXk9NSwgY29zdF9wYWdlX21pc3M9MTAsIGNv c3RfcGFnZV9kaXJ0eT0xMCwgY29zdF9wYWdlX2hpdD0xMC8sCisJJGxvZ19vZmZzZXQpOworCit3 YWl0X2Zvcl9hdXRvdmFjdXVtX2NvbXBsZXRlKCRub2RlLCAkYXZfY291bnQpOworCisjIENsZWFu dXAKKyRub2RlLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CisJU0VMRUNUIGluamVjdGlv bl9wb2ludHNfZGV0YWNoKCdhdXRvdmFjdXVtLXN0YXJ0LXBhcmFsbGVsLXZhY3V1bScpOworfSk7 CisKKyRub2RlLT5zdG9wOworZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMv cGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 CmluZGV4IGM3MmY2YzU5NTczLi5hNjRmYWEzMjY4MiAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QKQEAgLTIxMDksNiArMjEwOSw3IEBAIFBWSW5kU3RhdHMKIFBWSW5kVmFjU3RhdHVzCiBQVk9J RAogUFZTaGFyZWQKK1BWU2hhcmVkQ29zdFBhcmFtcwogUFZXb3JrZXJVc2FnZQogUFZXb3JrZXJT dGF0cwogUFhfQWxpYXMKLS0gCjIuNTMuMAoK --0000000000001fe710064e9821ed--