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 1trQqo-003l60-CN for pgsql-hackers@arkaria.postgresql.org; Mon, 10 Mar 2025 00:18:35 +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 1trQqn-00GgNt-4m for pgsql-hackers@arkaria.postgresql.org; Mon, 10 Mar 2025 00:18:33 +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 1trQqm-00GgNj-Gl for pgsql-hackers@lists.postgresql.org; Mon, 10 Mar 2025 00:18:32 +0000 Received: from relay3-d.mail.gandi.net ([2001:4b98:dc4:8::223]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1trQqi-001vlH-0k for pgsql-hackers@lists.postgresql.org; Mon, 10 Mar 2025 00:18:32 +0000 Received: by mail.gandi.net (Postfix) with ESMTPSA id 824F4204CE; Mon, 10 Mar 2025 00:18:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vondra.me; s=gm1; t=1741565905; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=n6kKtkHuvx9dk3RhMmeDaiQ6k5noC7iP7z+jcgc0zZw=; b=coVvPNhEdgvLoiScj8kt6CnefKEY/0mUWZ6vmwCeCGRQDfqU1ovzusVbwJfcx6sFnPvUUR M5vnQXKgYJZcCaXwoz0L3tV0qbKt3U84QD7YpzuaQEUqU2V5UtxISdgGFAHgH/UaSckdCx 7n13moYkUl83hIruJV+hOPyeTw438T9euoH4UyftktDuxsyx+w901NN/VWQ7DUXu4SuK8h MGAYLNFepIYz1Iq8gd5uYETTjyjvbuSTwMfbieE5gZqGOay9pVWy8pnqW2oPD2kN7FjyYc O00HtK184goY/SIDeV1sAWMr9pYMKET8iyCS1TVeq4uYYwOA0+fggDQaDaIPCw== Content-Type: multipart/mixed; boundary="------------qzhG3TvJfoKQPAu6hWaxRwbV" Message-ID: Date: Mon, 10 Mar 2025 01:18:23 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Changing the state of data checksums in a running cluster From: Tomas Vondra To: Michael Paquier Cc: Daniel Gustafsson , Michael Banck , PostgreSQL Hackers References: <8B317721-1CB7-4F82-B4DA-6B15AB1725D1@yesql.se> <642b8eeb-06ef-4aed-97a8-5297d9f67142@vondra.me> <2bf72a05-a2ce-4470-ba5a-adff3f087b55@vondra.me> <18750566-7D92-4FFE-9AAE-909AF99D3C33@yesql.se> <817F3431-4A4F-4070-B850-196199CD029F@yesql.se> <25edd1d1-e693-4386-bbcc-765ea1820044@vondra.me> Content-Language: en-US In-Reply-To: <25edd1d1-e693-4386-bbcc-765ea1820044@vondra.me> X-GND-State: clean X-GND-Score: -100 X-GND-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdduudejkeekucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuifetpfffkfdpucggtfgfnhhsuhgsshgtrhhisggvnecuuegrihhlohhuthemuceftddunecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjughrpegtkfffgggfuffhvfevfhgjsehmtderredtvdejnecuhfhrohhmpefvohhmrghsucggohhnughrrgcuoehtohhmrghssehvohhnughrrgdrmhgvqeenucggtffrrghtthgvrhhnpeetheegudegieegvdeitdegkeetiedtheelveffgefggfeuvdduueffleeuvdevueenucfkphepkeeirdegledrvdefiedrudelfeenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepihhnvghtpeekiedrgeelrddvfeeirdduleefpdhhvghloheplgdutddrudefjedrtddrvdgnpdhmrghilhhfrhhomhepthhomhgrshesvhhonhgurhgrrdhmvgdpnhgspghrtghpthhtohepgedprhgtphhtthhopehmihgthhgrvghlsehprghquhhivghrrdighiiipdhrtghpthhtohepuggrnhhivghlseihvghsqhhlrdhsvgdprhgtphhtthhopehmsggrnhgtkhesghhmgidrnhgvthdprhgtphhtthhopehpghhsqhhlqdhhrggtkhgvrhhssehlihhsthhsrdhpohhsthhgrhgvshhqlhdrohhrgh X-GND-Sasl: tomas@vondra.me List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------qzhG3TvJfoKQPAu6hWaxRwbV Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 3/10/25 00:35, Tomas Vondra wrote: > Seems cfbot was unhappy with the patches, so here's an improved version, > fixing some minor issues in expected output and a compiler warning. > > There however seems to be some issue with 003_standby_restarts, which > causes failures on freebsd and macos. I don't know what that is about, > but the test runs much longer than on debian. > OK, turns out the failures were caused by the test creating a standby from a backup, without a slot, so sometimes the primary removed the necessary WAL. Fixed in the attached version. There's still a failure on windows, though. I'd bet that's due to the data_checksum/LocalDatachecksumVersion sync not working correctly on builds with EXEC_BACKEND, or something like that, but it's too late so I'll take a closer look tomorrow. regards -- Tomas Vondra --------------qzhG3TvJfoKQPAu6hWaxRwbV Content-Type: text/x-patch; charset=UTF-8; name="v20250310b-0001-Online-enabling-and-disabling-of-data-che.patch" Content-Disposition: attachment; filename*0="v20250310b-0001-Online-enabling-and-disabling-of-data-che.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBjOGU0ODAxMDYwNGEwMDQyZDIyZDFiMGQzYjMxYzMzNTI3N2IxY2ViIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQHZvbmRyYS5tZT4K RGF0ZTogRnJpLCA3IE1hciAyMDI1IDE5OjIxOjIyICswMTAwClN1YmplY3Q6IFtQQVRDSCB2 MjAyNTAzMTBiIDEvNV0gT25saW5lIGVuYWJsaW5nIGFuZCBkaXNhYmxpbmcgb2YgZGF0YQog Y2hlY2tzdW1zCgpUaGlzIGFsbG93cyBkYXRhIGNoZWNrc3VtcyB0byBiZSBlbmFibGVkLCBv ciBkaXNhYmxlZCwgaW4gYSBydW5uaW5nCmNsdXN0ZXIgd2l0aG91dCByZXN0cmljdGluZyBh Y2Nlc3MgdG8gdGhlIGNsdXN0ZXIgZHVyaW5nIHByb2Nlc3NpbmcuCgpEYXRhIGNoZWNrc3Vt cyBjb3VsZCBwcmlvciB0byB0aGlzIG9ubHkgYmUgZW5hYmxlZCBkdXJpbmcgaW5pdGRiIG9y CndoZW4gdGhlIGNsdXN0ZXIgaXMgb2ZmbGluZSB1c2luZyB0aGUgcGdfY2hlY2tzdW1zIGFw cC4gVGhpcyBjb21taXQKaW50cm9kdWNlIGZ1bmN0aW9uYWxpdHkgdG8gZW5hYmxlLCBvciBk aXNhYmxlLCBkYXRhIGNoZWNrc3VtcyB3aGlsZQp0aGUgY2x1c3RlciBpcyBydW5uaW5nIHJl Z2FyZGxlc3Mgb2YgaG93IGl0IHdhcyBpbml0aWFsaXplZC4KCkEgYmFja2dyb3VuZCB3b3Jr ZXIgbGF1bmNoZXIgcHJvY2VzcyBpcyByZXNwb25zaWJsZSBmb3IgbGF1bmNoaW5nIGEKZHlu YW1pYyBwZXItZGF0YWJhc2UgYmFja2dyb3VuZCB3b3JrZXIgd2hpY2ggd2lsbCBtYXJrIGFs bCBidWZmZXJzCmRpcnR5IGZvciBhbGwgcmVsYXRpb24gd2l0aCBzdG9yYWdlIGluIG9yZGVy IGZvciB0aGVtIHRvIGhhdmUgZGF0YQpjaGVja3N1bXMgY2FsY3VhdGVkIG9uIHdyaXRlLiAg T25jZSBhbGwgcmVsYXRpb25zIGluIGFsbCBkYXRhYmFzZXMKaGF2ZSBiZWVuIHByb2Nlc3Nl ZCwgdGhlIGRhdGFfY2hlY2tzdW1zIHN0YXRlIHdpbGwgYmUgc2V0IHRvIG9uIGFuZAp0aGUg Y2x1c3RlciB3aWxsIGF0IHRoYXQgcG9pbnQgYmUgaWRlbnRpY2FsIHRvIG9uZSB3aGljaCBo YWQgZGF0YQpjaGVja3N1bXMgZW5hYmxlZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24gb3Igdmlh IG9mZmxpbmUgcHJvY2Vzc2luZy4KCldoZW4gZGF0YSBjaGVja3N1bXMgYXJlIGJlaW5nIGVu YWJsZWQsIGNvbmN1cnJlbnQgSS9PIG9wZXJhdGlvbnMKZnJvbSBiYWNrZW5kcyBvdGhlciB0 aGFuIHRoZSBkYXRhIGNoZWNrc3VtcyB3b3JrZXIgd2lsbCB3cml0ZSB0aGUKY2hlY2tzdW1z IGJ1dCBub3QgdmVyaWZ5IHRoZW0gb24gcmVhZGluZy4gIE9ubHkgd2hlbiBhbGwgYmFja2Vu ZHMKaGF2ZSBhYnNvcmJlZCB0aGUgcHJvY3NpZ25hbGJhcnJpZXIgZm9yIHNldHRpbmcgZGF0 YV9jaGVja3N1bXMgdG8Kb24gd2lsbCB0aGV5IGFsc28gc3RhcnQgdmVyaWZ5aW5nIGNoZWNr c3VtcyBvbiByZWFkaW5nLiAgVGhlIHNhbWUKcHJvY2VzcyBpcyByZXBlYXRlZCBkdXJpbmcg ZGlzYWJsaW5nOyBhbGwgYmFja2VuZHMgd3JpdGUgY2hlY2tzdW1zCmJ1dCBkbyBub3QgdmVy aWZ5IHRoZW0gdW50aWwgdGhlIGJhcnJpZXIgZm9yIHNldHRpbmcgdGhlIHN0YXRlIHRvCm9m ZiBoYXMgYmVlbiBhYnNvcmJlZCBieSBhbGwuICBUaGlzIGluLXByb2dyZXNzIHN0YXRlIGlz IHVzZWQgdG8KZW5zdXJlIHRoZXJlIGFyZSBubyBmYWxzZSBuZWdhdGl2ZXMgKG9yIHBvc2l0 aXZlcykgZHVlIHRvIHJlYWRpbmcKYSBjaGVja3N1bSB3aGljaCBpcyBub3QgaW4gc3luYyB3 aXRoIHRoZSBwYWdlLgoKVGhpcyB3b3JrIGlzIGJhc2VkIG9uIGFuIGVhcmxpZXIgdmVyc2lv biBvZiB0aGlzIHBhdGNoIHdoaWNoIHdhcwpyZXZpZXdlZCBieSBhbW9uZyBvdGhlcnMgSGVp a2tpIExpbm5ha2FuZ2FzLCBSb2JlcnQgSGFhcywgQW5kcmVzCkZyZXVuZCwgVG9tYXMgVm9u ZHJhLCBNaWNoYWVsIEJhbmNrIGFuZCBBbmRyZXkgQm9yb2Rpbi4KCkF1dGhvcjogRGFuaWVs IEd1c3RhZnNzb24gPGRhbmllbEB5ZXNxbC5zZT4KQXV0aG9yOiBNYWdudXMgSGFnYW5kZXIg PG1hZ251c0BoYWdhbmRlci5uZXQ+ClJldmlld2VkLWJ5OiBUb21hcyBWb25kcmEgPHRvbWFz QHZvbmRyYS5tZT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUJVZXZFeHo5 aFVVT0xuSlZyMmtwdzlDeD1vNE1DcjFTVkt3YnVwenV4UDdja051dEFAbWFpbC5nbWFpbC5j b20KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS8yMDE4MTAzMDA1MTY0My5lbGJ4 and3NWpqZ25qYXhnQGFsYXAzLmFuYXJhemVsLmRlCkRpc2N1c3Npb246IGh0dHBzOi8vcG9z dGdyLmVzL20vQ0FCVWV2RXdFM3VyTHR3eHhxZGdkNU8yb1F6OUo3MTdaek1iaCt6aUNTYTVZ TExVX0JBQG1haWwuZ21haWwuY29tCi0tLQogZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbCAgICAg ICAgICAgICAgICAgICAgICAgIHwgICA3MSArCiBkb2Mvc3JjL3NnbWwvZ2xvc3Nhcnkuc2dt bCAgICAgICAgICAgICAgICAgICAgfCAgIDIzICsKIGRvYy9zcmMvc2dtbC9tb25pdG9yaW5n LnNnbWwgICAgICAgICAgICAgICAgICB8ICAyMDcgKystCiBkb2Mvc3JjL3NnbWwvcmVmL3Bn X2NoZWNrc3Vtcy5zZ21sICAgICAgICAgICAgfCAgICA2ICsKIGRvYy9zcmMvc2dtbC93YWwu c2dtbCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNTcgKy0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9ybWdyZGVzYy94bG9nZGVzYy5jICAgICAgICB8ICAgMjQgKwogc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0veGxvZy5jICAgICAgICAgICAgIHwgIDQ1MCArKysrKy0KIHNyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5jICAgICAgICB8ICAgNDEgKwogc3Jj L2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXAuYyAgICAgICAgICAgICAgIHwgICAgNiArLQog c3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fZnVuY3Rpb25zLnNxbCAgICAgIHwgICAxMSAr CiBzcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgICAgICAgICAgfCAgIDIx ICsKIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvTWFrZWZpbGUgICAgICAgICAgICAgICB8ICAg IDEgKwogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jICAgICAgICAgICAgIHwg ICAgNyArCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL2RhdGFjaGVja3N1bXN3b3JrZXIuYyAg fCAxMzc2ICsrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL21lc29u LmJ1aWxkICAgICAgICAgICAgfCAgICAxICsKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvZGVjb2RlLmMgICAgICB8ICAgIDEgKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv aXBjaS5jICAgICAgICAgICAgICAgIHwgICAgNCArCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9wcm9jc2lnbmFsLmMgICAgICAgICAgfCAgIDEzICsKIHNyYy9iYWNrZW5kL3N0b3JhZ2Uv cGFnZS9SRUFETUUgICAgICAgICAgICAgICB8ICAgIDQgKy0KIHNyYy9iYWNrZW5kL3N0b3Jh Z2UvcGFnZS9idWZwYWdlLmMgICAgICAgICAgICB8ICAgIDYgKy0KIHNyYy9iYWNrZW5kL3V0 aWxzL2FjdGl2aXR5L3Bnc3RhdF9pby5jICAgICAgICB8ICAgIDIgKwogLi4uL3V0aWxzL2Fj dGl2aXR5L3dhaXRfZXZlbnRfbmFtZXMudHh0ICAgICAgIHwgICAgMyArCiBzcmMvYmFja2Vu ZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYyAgICAgICAgICAgfCAgICA4ICstCiBzcmMvYmFj a2VuZC91dGlscy9pbml0L21pc2Npbml0LmMgICAgICAgICAgICAgfCAgICA5ICstCiBzcmMv YmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMgICAgICAgICAgICAgfCAgICA3ICstCiBz cmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyAgICAgICAgICAgfCAgIDMyICst CiBzcmMvYmluL3BnX2NoZWNrc3Vtcy9wZ19jaGVja3N1bXMuYyAgICAgICAgICAgfCAgICAy ICstCiBzcmMvYmluL3BnX3VwZ3JhZGUvY29udHJvbGRhdGEuYyAgICAgICAgICAgICAgfCAg ICA5ICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmggICAgICAgICAgICAgICAgICAgICB8 ICAgMTYgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy94bG9nX2ludGVybmFsLmggICAgICAgICAg ICB8ICAgIDcgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb250cm9sLmggICAgICAgICAg ICAgIHwgICAgMSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAg ICAgICAgfCAgIDE3ICsKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3Byb2dyZXNzLmggICAgICAg ICAgICAgICB8ICAgMTggKwogc3JjL2luY2x1ZGUvbWlzY2FkbWluLmggICAgICAgICAgICAg ICAgICAgICAgIHwgICAgNCArCiBzcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2RhdGFjaGVja3N1 bXN3b3JrZXIuaCAgfCAgIDMxICsKIHNyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmcGFnZS5oICAg ICAgICAgICAgICAgICB8ICAgMTAgKwogc3JjL2luY2x1ZGUvc3RvcmFnZS9jaGVja3N1bS5o ICAgICAgICAgICAgICAgIHwgICAgOCArCiBzcmMvaW5jbHVkZS9zdG9yYWdlL2x3bG9ja2xp c3QuaCAgICAgICAgICAgICAgfCAgICAxICsKIHNyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5o ICAgICAgICAgICAgICAgICAgICB8ICAgIDUgKy0KIHNyYy9pbmNsdWRlL3N0b3JhZ2UvcHJv Y3NpZ25hbC5oICAgICAgICAgICAgICB8ICAgIDUgKwogc3JjL2luY2x1ZGUvdXRpbHMvYmFj a2VuZF9wcm9ncmVzcy5oICAgICAgICAgIHwgICAgMSArCiBzcmMvdGVzdC9NYWtlZmlsZSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDExICstCiBzcmMvdGVzdC9jaGVja3N1 bS8uZ2l0aWdub3JlICAgICAgICAgICAgICAgICAgfCAgICAyICsKIHNyYy90ZXN0L2NoZWNr c3VtL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICB8ICAgMjMgKwogc3JjL3Rlc3QvY2hl Y2tzdW0vUkVBRE1FICAgICAgICAgICAgICAgICAgICAgIHwgICAyMiArCiBzcmMvdGVzdC9j aGVja3N1bS9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgfCAgIDE1ICsKIHNyYy90ZXN0 L2NoZWNrc3VtL3QvMDAxX2Jhc2ljLnBsICAgICAgICAgICAgICB8ICAgODggKysKIHNyYy90 ZXN0L2NoZWNrc3VtL3QvMDAyX3Jlc3RhcnRzLnBsICAgICAgICAgICB8ICAgOTIgKysKIHNy Yy90ZXN0L2NoZWNrc3VtL3QvMDAzX3N0YW5kYnlfcmVzdGFydHMucGwgICB8ICAxMzEgKysK IHNyYy90ZXN0L2NoZWNrc3VtL3QvMDA0X29mZmxpbmUucGwgICAgICAgICAgICB8ICAxMDEg KysKIHNyYy90ZXN0L21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg IDEgKwogc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvQ2x1c3Rlci5wbSAgICAgIHwg ICAzNCArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCAgICAgICAgICAg fCAgIDI4ICsKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAg ICB8ICAgIDYgKwogNTQgZmlsZXMgY2hhbmdlZCwgMzAzMSBpbnNlcnRpb25zKCspLCA0OSBk ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9wb3N0bWFzdGVy L2RhdGFjaGVja3N1bXN3b3JrZXIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRl L3Bvc3RtYXN0ZXIvZGF0YWNoZWNrc3Vtc3dvcmtlci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL3Rlc3QvY2hlY2tzdW0vLmdpdGlnbm9yZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90 ZXN0L2NoZWNrc3VtL01ha2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvY2hl Y2tzdW0vUkVBRE1FCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvY2hlY2tzdW0vbWVz b24uYnVpbGQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9jaGVja3N1bS90LzAwMV9i YXNpYy5wbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2NoZWNrc3VtL3QvMDAyX3Jl c3RhcnRzLnBsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvY2hlY2tzdW0vdC8wMDNf c3RhbmRieV9yZXN0YXJ0cy5wbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2NoZWNr c3VtL3QvMDA0X29mZmxpbmUucGwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZnVuYy5z Z21sIGIvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbAppbmRleCA1MWRkOGFkNjU3MS4uYTA5ODQz ZTRlY2YgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL2Z1bmMuc2dtbApAQCAtMjk4NjUsNiArMjk4NjUsNzcgQEAgcG9zdGdyZXM9IyBT RUxFQ1QgJzAvMCc6OnBnX2xzbiArIHBkLnNlZ21lbnRfbnVtYmVyICogcHMuc2V0dGluZzo6 aW50ICsgOm9mZnNldAogCiAgIDwvc2VjdDI+CiAKKyAgPHNlY3QyIGlkPSJmdW5jdGlvbnMt YWRtaW4tY2hlY2tzdW0iPgorICAgPHRpdGxlPkRhdGEgQ2hlY2tzdW0gRnVuY3Rpb25zPC90 aXRsZT4KKworICAgPHBhcmE+CisgICAgVGhlIGZ1bmN0aW9ucyBzaG93biBpbiA8eHJlZiBs aW5rZW5kPSJmdW5jdGlvbnMtY2hlY2tzdW1zLXRhYmxlIiAvPiBjYW4KKyAgICBiZSB1c2Vk IHRvIGVuYWJsZSBvciBkaXNhYmxlIGRhdGEgY2hlY2tzdW1zIGluIGEgcnVubmluZyBjbHVz dGVyLgorICAgIFNlZSA8eHJlZiBsaW5rZW5kPSJjaGVja3N1bXMiIC8+IGZvciBkZXRhaWxz LgorICAgPC9wYXJhPgorCisgICA8dGFibGUgaWQ9ImZ1bmN0aW9ucy1jaGVja3N1bXMtdGFi bGUiPgorICAgIDx0aXRsZT5EYXRhIENoZWNrc3VtIEZ1bmN0aW9uczwvdGl0bGU+CisgICAg PHRncm91cCBjb2xzPSIxIj4KKyAgICAgPHRoZWFkPgorICAgICAgPHJvdz4KKyAgICAgICA8 ZW50cnkgcm9sZT0iZnVuY190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iZnVuY19zaWduYXR1 cmUiPgorICAgICAgICBGdW5jdGlvbgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4K KyAgICAgICAgRGVzY3JpcHRpb24KKyAgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgIDwv cm93PgorICAgICA8L3RoZWFkPgorCisgICAgIDx0Ym9keT4KKyAgICAgIDxyb3c+CisgICAg ICAgPGVudHJ5IHJvbGU9ImZ1bmNfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2ln bmF0dXJlIj4KKyAgICAgICAgPGluZGV4dGVybT4KKyAgICAgICAgIDxwcmltYXJ5PnBnX2Vu YWJsZV9kYXRhX2NoZWNrc3VtczwvcHJpbWFyeT4KKyAgICAgICAgPC9pbmRleHRlcm0+Cisg ICAgICAgIDxmdW5jdGlvbj5wZ19lbmFibGVfZGF0YV9jaGVja3N1bXM8L2Z1bmN0aW9uPiAo IDxvcHRpb25hbD48cGFyYW1ldGVyPmNvc3RfZGVsYXk8L3BhcmFtZXRlcj4gPHR5cGU+aW50 PC90eXBlPiwgPHBhcmFtZXRlcj5jb3N0X2xpbWl0PC9wYXJhbWV0ZXI+IDx0eXBlPmludDwv dHlwZT48L29wdGlvbmFsPiApCisgICAgICAgIDxyZXR1cm52YWx1ZT52b2lkPC9yZXR1cm52 YWx1ZT4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIEluaXRpYXRl cyBkYXRhIGNoZWNrc3VtcyBmb3IgdGhlIGNsdXN0ZXIuIFRoaXMgd2lsbCBzd2l0Y2ggdGhl IGRhdGEKKyAgICAgICAgY2hlY2tzdW1zIG1vZGUgdG8gPGxpdGVyYWw+aW5wcm9ncmVzcy1v bjwvbGl0ZXJhbD4gYXMgd2VsbCBhcyBzdGFydCBhCisgICAgICAgIGJhY2tncm91bmQgd29y a2VyIHRoYXQgd2lsbCBwcm9jZXNzIGFsbCBwYWdlcyBpbiB0aGUgZGF0YWJhc2UgYW5kCisg ICAgICAgIGVuYWJsZSBjaGVja3N1bXMgb24gdGhlbS4gV2hlbiBhbGwgZGF0YSBwYWdlcyBo YXZlIGhhZCBjaGVja3N1bXMKKyAgICAgICAgZW5hYmxlZCwgdGhlIGNsdXN0ZXIgd2lsbCBh dXRvbWF0aWNhbGx5IHN3aXRjaCBkYXRhIGNoZWNrc3VtcyBtb2RlIHRvCisgICAgICAgIDxs aXRlcmFsPm9uPC9saXRlcmFsPi4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+Cisg ICAgICAgIElmIDxwYXJhbWV0ZXI+Y29zdF9kZWxheTwvcGFyYW1ldGVyPiBhbmQgPHBhcmFt ZXRlcj5jb3N0X2xpbWl0PC9wYXJhbWV0ZXI+IGFyZQorICAgICAgICBzcGVjaWZpZWQsIHRo ZSBzcGVlZCBvZiB0aGUgcHJvY2VzcyBpcyB0aHJvdHRsZWQgdXNpbmcgdGhlIHNhbWUgcHJp bmNpcGxlcyBhcworICAgICAgICA8bGluayBsaW5rZW5kPSJydW50aW1lLWNvbmZpZy1yZXNv dXJjZS12YWN1dW0tY29zdCI+Q29zdC1iYXNlZCBWYWN1dW0gRGVsYXk8L2xpbms+LgorICAg ICAgIDwvcGFyYT48L2VudHJ5PgorICAgICAgPC9yb3c+CisKKyAgICAgIDxyb3c+CisgICAg ICAgPGVudHJ5IHJvbGU9ImZ1bmNfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2ln bmF0dXJlIj4KKyAgICAgICAgPGluZGV4dGVybT4KKyAgICAgICAgIDxwcmltYXJ5PnBnX2Rp c2FibGVfZGF0YV9jaGVja3N1bXM8L3ByaW1hcnk+CisgICAgICAgIDwvaW5kZXh0ZXJtPgor ICAgICAgICA8ZnVuY3Rpb24+cGdfZGlzYWJsZV9kYXRhX2NoZWNrc3VtczwvZnVuY3Rpb24+ ICgpCisgICAgICAgIDxyZXR1cm52YWx1ZT52b2lkPC9yZXR1cm52YWx1ZT4KKyAgICAgICA8 L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIERpc2FibGVzIGRhdGEgY2hlY2tzdW0g dmFsaWRhdGlvbiBhbmQgY2FsY3VsYXRpb24gZm9yIHRoZSBjbHVzdGVyLiBUaGlzCisgICAg ICAgIHdpbGwgc3dpdGNoIHRoZSBkYXRhIGNoZWNrc3VtIG1vZGUgdG8gPGxpdGVyYWw+aW5w cm9ncmVzcy1vZmY8L2xpdGVyYWw+CisgICAgICAgIHdoaWxlIGRhdGEgY2hlY2tzdW1zIGFy ZSBiZWluZyBkaXNhYmxlZC4gV2hlbiBhbGwgYWN0aXZlIGJhY2tlbmRzIGhhdmUKKyAgICAg ICAgc3RvcHBlZCB2YWxpZGF0aW5nIGRhdGEgY2hlY2tzdW1zLCB0aGUgZGF0YSBjaGVja3N1 bSBtb2RlIHdpbGwgYmUKKyAgICAgICAgY2hhbmdlZCB0byA8bGl0ZXJhbD5vZmY8L2xpdGVy YWw+LiAgQXQgdGhpcyBwb2ludCB0aGUgZGF0YSBwYWdlcyB3aWxsCisgICAgICAgIHN0aWxs IGhhdmUgY2hlY2tzdW1zIHJlY29yZGVkIGJ1dCB0aGV5IGFyZSBub3QgdXBkYXRlZCB3aGVu IHBhZ2VzIGFyZQorICAgICAgICBtb2RpZmllZC4KKyAgICAgICA8L3BhcmE+PC9lbnRyeT4K KyAgICAgIDwvcm93PgorICAgICA8L3Rib2R5PgorICAgIDwvdGdyb3VwPgorICAgPC90YWJs ZT4KKworICA8L3NlY3QyPgorCiAgIDxzZWN0MiBpZD0iZnVuY3Rpb25zLWFkbWluLWRib2Jq ZWN0Ij4KICAgIDx0aXRsZT5EYXRhYmFzZSBPYmplY3QgTWFuYWdlbWVudCBGdW5jdGlvbnM8 L3RpdGxlPgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZ2xvc3Nhcnkuc2dtbCBiL2Rv Yy9zcmMvc2dtbC9nbG9zc2FyeS5zZ21sCmluZGV4IGMwZjgxMmUzZjVlLi41NDdlODU4NmQ0 YiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2dsb3NzYXJ5LnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL2dsb3NzYXJ5LnNnbWwKQEAgLTE1OSw2ICsxNTksOCBAQAogICAgICAoYnV0IG5v dCB0aGUgYXV0b3ZhY3V1bSB3b3JrZXJzKSwKICAgICAgdGhlIDxnbG9zc3Rlcm0gbGlua2Vu ZD0iZ2xvc3NhcnktYmFja2dyb3VuZC13cml0ZXIiPmJhY2tncm91bmQgd3JpdGVyPC9nbG9z c3Rlcm0+LAogICAgICB0aGUgPGdsb3NzdGVybSBsaW5rZW5kPSJnbG9zc2FyeS1jaGVja3Bv aW50ZXIiPmNoZWNrcG9pbnRlcjwvZ2xvc3N0ZXJtPiwKKyAgICAgdGhlIDxnbG9zc3Rlcm0g bGlua2VuZD0iZ2xvc3NhcnktZGF0YS1jaGVja3N1bXMtd29ya2VyIj5kYXRhIGNoZWNrc3Vt cyB3b3JrZXI8L2dsb3NzdGVybT4sCisgICAgIHRoZSA8Z2xvc3N0ZXJtIGxpbmtlbmQ9Imds b3NzYXJ5LWRhdGEtY2hlY2tzdW1zLXdvcmtlci1sYXVuY2hlciI+ZGF0YSBjaGVja3N1bXMg d29ya2VyIGxhdW5jaGVyPC9nbG9zc3Rlcm0+LAogICAgICB0aGUgPGdsb3NzdGVybSBsaW5r ZW5kPSJnbG9zc2FyeS1sb2dnZXIiPmxvZ2dlcjwvZ2xvc3N0ZXJtPiwKICAgICAgdGhlIDxn bG9zc3Rlcm0gbGlua2VuZD0iZ2xvc3Nhcnktc3RhcnR1cC1wcm9jZXNzIj5zdGFydHVwIHBy b2Nlc3M8L2dsb3NzdGVybT4sCiAgICAgIHRoZSA8Z2xvc3N0ZXJtIGxpbmtlbmQ9Imdsb3Nz YXJ5LXdhbC1hcmNoaXZlciI+V0FMIGFyY2hpdmVyPC9nbG9zc3Rlcm0+LApAQCAtNTQ4LDYg KzU1MCwyNyBAQAogICAgPC9nbG9zc2RlZj4KICAgPC9nbG9zc2VudHJ5PgogCisgIDxnbG9z c2VudHJ5IGlkPSJnbG9zc2FyeS1kYXRhLWNoZWNrc3Vtcy13b3JrZXIiPgorICAgPGdsb3Nz dGVybT5EYXRhIENoZWNrc3VtcyBXb3JrZXI8L2dsb3NzdGVybT4KKyAgIDxnbG9zc2RlZj4K KyAgICA8cGFyYT4KKyAgICAgQW4gPGdsb3NzdGVybSBsaW5rZW5kPSJnbG9zc2FyeS1hdXhp bGlhcnktcHJvYyI+YXV4aWxpYXJ5IHByb2Nlc3M8L2dsb3NzdGVybT4KKyAgICAgd2hpY2gg ZW5hYmxlcyBvciBkaXNhYmxlcyBkYXRhIGNoZWNrc3VtcyBpbiBhIHNwZWNpZmljIGRhdGFi YXNlLgorICAgIDwvcGFyYT4KKyAgIDwvZ2xvc3NkZWY+CisgIDwvZ2xvc3NlbnRyeT4KKwor ICA8Z2xvc3NlbnRyeSBpZD0iZ2xvc3NhcnktZGF0YS1jaGVja3N1bXMtd29ya2VyLWxhdW5j aGVyIj4KKyAgIDxnbG9zc3Rlcm0+RGF0YSBDaGVja3N1bXMgV29ya2VyIExhdW5jaGVyPC9n bG9zc3Rlcm0+CisgICA8Z2xvc3NkZWY+CisgICAgPHBhcmE+CisgICAgIEFuIDxnbG9zc3Rl cm0gbGlua2VuZD0iZ2xvc3NhcnktYXV4aWxpYXJ5LXByb2MiPmF1eGlsaWFyeSBwcm9jZXNz PC9nbG9zc3Rlcm0+CisgICAgIHdoaWNoIHN0YXJ0cyA8Z2xvc3N0ZXJtIGxpbmtlbmQ9Imds b3NzYXJ5LWRhdGEtY2hlY2tzdW1zLXdvcmtlciI+IHByb2Nlc3NlczwvZ2xvc3N0ZXJtPgor ICAgICBmb3IgZWFjaCBkYXRhYmFzZS4KKyAgICA8L3BhcmE+CisgICA8L2dsb3NzZGVmPgor ICA8L2dsb3NzZW50cnk+CisKICAgPGdsb3NzZW50cnkgaWQ9Imdsb3NzYXJ5LWRiLWNsdXN0 ZXIiPgogICAgPGdsb3NzdGVybT5EYXRhYmFzZSBjbHVzdGVyPC9nbG9zc3Rlcm0+CiAgICA8 Z2xvc3NkZWY+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sIGIv ZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAppbmRleCAxNjY0NmY1NjBlOC4uNGE2ZWY1 ZjE2MDUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbApAQCAtMzQ5Nyw4ICszNDk3LDkgQEAgZGVz Y3JpcHRpb24gfCBXYWl0aW5nIGZvciBhIG5ld2x5IGluaXRpYWxpemVkIFdBTCBmaWxlIHRv IHJlYWNoIGR1cmFibGUgc3RvcmFnZQogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CiAg ICAgICAgTnVtYmVyIG9mIGRhdGEgcGFnZSBjaGVja3N1bSBmYWlsdXJlcyBkZXRlY3RlZCBp biB0aGlzCi0gICAgICAgZGF0YWJhc2UgKG9yIG9uIGEgc2hhcmVkIG9iamVjdCksIG9yIE5V TEwgaWYgZGF0YSBjaGVja3N1bXMgYXJlCi0gICAgICAgZGlzYWJsZWQuCisgICAgICAgZGF0 YWJhc2UgKG9yIG9uIGEgc2hhcmVkIG9iamVjdCkuCisgICAgICAgRGV0ZWN0ZWQgZmFpbHVy ZXMgYXJlIHJlcG9ydGVkIHJlZ2FyZGxlc3Mgb2YgdGhlCisgICAgICAgPHhyZWYgbGlua2Vu ZD0iZ3VjLWRhdGEtY2hlY2tzdW1zIi8+IHNldHRpbmcuCiAgICAgICA8L3BhcmE+PC9lbnRy eT4KICAgICAgPC9yb3c+CiAKQEAgLTM1MDgsOCArMzUwOSw4IEBAIGRlc2NyaXB0aW9uIHwg V2FpdGluZyBmb3IgYSBuZXdseSBpbml0aWFsaXplZCBXQUwgZmlsZSB0byByZWFjaCBkdXJh YmxlIHN0b3JhZ2UKICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgogICAgICAgIFRpbWUg YXQgd2hpY2ggdGhlIGxhc3QgZGF0YSBwYWdlIGNoZWNrc3VtIGZhaWx1cmUgd2FzIGRldGVj dGVkIGluCi0gICAgICAgdGhpcyBkYXRhYmFzZSAob3Igb24gYSBzaGFyZWQgb2JqZWN0KSwg b3IgTlVMTCBpZiBkYXRhIGNoZWNrc3VtcyBhcmUKLSAgICAgICBkaXNhYmxlZC4KKyAgICAg ICB0aGlzIGRhdGFiYXNlIChvciBvbiBhIHNoYXJlZCBvYmplY3QpLiBMYXN0IGZhaWx1cmUg aXMgcmVwb3J0ZWQKKyAgICAgICByZWdhcmRsZXNzIG9mIHRoZSA8eHJlZiBsaW5rZW5kPSJn dWMtZGF0YS1jaGVja3N1bXMiLz4gc2V0dGluZy4KICAgICAgIDwvcGFyYT48L2VudHJ5Pgog ICAgICA8L3Jvdz4KIApAQCAtNjc5Myw2ICs2Nzk0LDIwNCBAQCBGUk9NIHBnX3N0YXRfZ2V0 X2JhY2tlbmRfaWRzZXQoKSBBUyBiYWNrZW5kaWQ7CiAKICA8L3NlY3QyPgogCisgPHNlY3Qy IGlkPSJkYXRhLWNoZWNrc3VtLXByb2dyZXNzLXJlcG9ydGluZyI+CisgIDx0aXRsZT5EYXRh IENoZWNrc3VtIFByb2dyZXNzIFJlcG9ydGluZzwvdGl0bGU+CisKKyAgPGluZGV4dGVybT4K KyAgIDxwcmltYXJ5PnBnX3N0YXRfcHJvZ3Jlc3NfZGF0YV9jaGVja3N1bXM8L3ByaW1hcnk+ CisgIDwvaW5kZXh0ZXJtPgorCisgIDxwYXJhPgorICAgV2hlbiBkYXRhIGNoZWNrc3VtcyBh cmUgYmVpbmcgZW5hYmxlZCBvbiBhIHJ1bm5pbmcgY2x1c3RlciwgdGhlCisgICA8c3RydWN0 bmFtZT5wZ19zdGF0X3Byb2dyZXNzX2RhdGFfY2hlY2tzdW1zPC9zdHJ1Y3RuYW1lPiB2aWV3 IHdpbGwgY29udGFpbgorICAgYSByb3cgZm9yIGVhY2ggYmFja2dyb3VuZCB3b3JrZXIgd2hp Y2ggaXMgY3VycmVudGx5IGNhbGN1bGF0aW5nIGNoZWNrc3VtcworICAgZm9yIHRoZSBkYXRh IHBhZ2VzLgorICA8L3BhcmE+CisKKyAgPHRhYmxlIGlkPSJwZy1zdGF0LXByb2dyZXNzLWRh dGEtY2hlY2tzdW1zLXZpZXciIHhyZWZsYWJlbD0icGdfc3RhdF9wcm9ncmVzc19kYXRhX2No ZWNrc3VtcyI+CisgICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfc3RhdF9wcm9ncmVzc19kYXRh X2NoZWNrc3Vtczwvc3RydWN0bmFtZT4gVmlldzwvdGl0bGU+CisgICA8dGdyb3VwIGNvbHM9 IjEiPgorICAgIDx0aGVhZD4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRh bG9nX3RhYmxlX2VudHJ5Ij4KKyAgICAgICA8cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlv biI+CisgICAgICAgIENvbHVtbiBUeXBlCisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJh PgorICAgICAgICBEZXNjcmlwdGlvbj4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2VudHJ5 PgorICAgICA8L3Jvdz4KKyAgICA8L3RoZWFkPgorCisgICAgPHRib2R5PgorICAgICA8cm93 PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPgorICAgICAgIDxw YXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICAgPHN0cnVjdGZpZWxkPnBp ZDwvc3RydWN0ZmllbGQ+IDx0eXBlPmludGVnZXI8L3R5cGU+CisgICAgICAgPC9wYXJhPgor ICAgICAgIDxwYXJhPgorICAgICAgICBQcm9jZXNzIElEIG9mIGEgZGF0YWNoZWNrc3Vtd29y a2VyIHByb2Nlc3MuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9lbnRyeT4KKyAgICAgPC9y b3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2Vu dHJ5Ij4KKyAgICAgICA8cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAg IDxzdHJ1Y3RmaWVsZD5waGFzZTwvc3RydWN0ZmllbGQ+IDx0eXBlPnRleHQ8L3R5cGU+Cisg ICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBDdXJyZW50IHByb2Nlc3Np bmcgcGhhc2UsIHNlZSA8eHJlZiBsaW5rZW5kPSJkYXRhY2hlY2tzdW0tcGhhc2VzIi8+Cisg ICAgICAgIGZvciBkZXNjcmlwdGlvbiBvZiB0aGUgcGhhc2VzLgorICAgICAgIDwvcGFyYT4K KyAgICAgIDwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50 cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+CisgICAgICAgPHBhcmEgcm9sZT0iY29s dW1uX2RlZmluaXRpb24iPgorICAgICAgICA8c3RydWN0ZmllbGQ+ZGF0YWJhc2VzX3RvdGFs PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50ZWdlcjwvdHlwZT4KKyAgICAgICA8L3BhcmE+Cisg ICAgICAgPHBhcmE+CisgICAgICAgIFRoZSB0b3RhbCBudW1iZXIgb2YgZGF0YWJhc2VzIHdo aWNoIHdpbGwgYmUgcHJvY2Vzc2VkLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvZW50cnk+ CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxv Z190YWJsZV9lbnRyeSI+CisgICAgICAgPHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24i PgorICAgICAgICA8c3RydWN0ZmllbGQ+cmVsYXRpb25zX3RvdGFsPC9zdHJ1Y3RmaWVsZD4g PHR5cGU+aW50ZWdlcjwvdHlwZT4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+Cisg ICAgICAgIFRoZSB0b3RhbCBudW1iZXIgb2YgcmVsYXRpb25zIHdoaWNoIHdpbGwgYmUgcHJv Y2Vzc2VkLCBvcgorICAgICAgICA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPiBpZiB0aGUgZGF0 YSBjaGVja3N1bXMgd29ya2VyIHByb2Nlc3MgaGFzbid0CisgICAgICAgIGNhbGN1bGF0ZWQg dGhlIG51bWJlciBvZiByZWxhdGlvbnMgeWV0LgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwv ZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0i Y2F0YWxvZ190YWJsZV9lbnRyeSI+CisgICAgICAgPHBhcmEgcm9sZT0iY29sdW1uX2RlZmlu aXRpb24iPgorICAgICAgICA8c3RydWN0ZmllbGQ+ZGF0YWJhc2VzX3Byb2Nlc3NlZDwvc3Ry dWN0ZmllbGQ+IDx0eXBlPmludGVnZXI8L3R5cGU+CisgICAgICAgPC9wYXJhPgorICAgICAg IDxwYXJhPgorICAgICAgICBUaGUgbnVtYmVyIG9mIGRhdGFiYXNlcyB3aGljaCBoYXZlIGJl ZW4gcHJvY2Vzc2VkLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvZW50cnk+CisgICAgIDwv cm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9l bnRyeSI+CisgICAgICAgPHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAg ICA8c3RydWN0ZmllbGQ+cmVsYXRpb25zX3Byb2Nlc3NlZDwvc3RydWN0ZmllbGQ+IDx0eXBl PmludGVnZXI8L3R5cGU+CisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAg ICBUaGUgbnVtYmVyIG9mIHJlbGF0aW9ucyB3aGljaCBoYXZlIGJlZW4gcHJvY2Vzc2VkLgor ICAgICAgIDwvcGFyYT4KKyAgICAgIDwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxy b3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+CisgICAgICAg PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgICA8c3RydWN0ZmllbGQ+ ZGF0YWJhc2VzX2N1cnJlbnQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CisgICAg ICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBPSUQgb2YgdGhlIGRhdGFiYXNl IGN1cnJlbnRseSBiZWluZyBwcm9jZXNzZWQuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9l bnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJj YXRhbG9nX3RhYmxlX2VudHJ5Ij4KKyAgICAgICA8cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5p dGlvbiI+CisgICAgICAgIDxzdHJ1Y3RmaWVsZD5yZWxhdGlvbl9jdXJyZW50PC9zdHJ1Y3Rm aWVsZD4gPHR5cGU+b2lkPC90eXBlPgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4K KyAgICAgICAgT0lEIG9mIHRoZSByZWxhdGlvbiBjdXJyZW50bHkgYmVpbmcgcHJvY2Vzc2Vk LgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAg IDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+CisgICAg ICAgPHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgICA8c3RydWN0Zmll bGQ+cmVsYXRpb25fY3VycmVudF9ibG9ja3M8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnRlZ2Vy PC90eXBlPgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIHRv dGFsIG51bWJlciBvZiBibG9ja3MgaW4gdGhlIHJlbGF0aW9uIGN1cnJlbnRseSBiZWluZyBw cm9jZXNzZWQuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+ CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5 Ij4KKyAgICAgICA8cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgIDxz dHJ1Y3RmaWVsZD5yZWxhdGlvbl9jdXJyZW50X2Jsb2Nrc19wcm9jZXNzZWQ8L3N0cnVjdGZp ZWxkPiA8dHlwZT5pbnRlZ2VyPC90eXBlPgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFy YT4KKyAgICAgICAgVGhlIG51bWJlciBvZiBibG9ja3Mgd2hpY2ggaGF2ZSBiZWVuIHByb2Nl c3NlZCBpbiB0aGUgcmVsYXRpb24gY3VycmVudGx5CisgICAgICAgIGJlaW5nIHByb2Nlc3Nl ZC4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAg IDwvdGJvZHk+CisgICA8L3Rncm91cD4KKyAgPC90YWJsZT4KKworICA8dGFibGUgaWQ9ImRh dGFjaGVja3N1bS1waGFzZXMiPgorICAgPHRpdGxlPkRhdGEgQ2hlY2tzdW0gUGhhc2VzPC90 aXRsZT4KKyAgIDx0Z3JvdXAgY29scz0iMiI+CisgICAgPGNvbHNwZWMgY29sbmFtZT0iY29s MSIgY29sd2lkdGg9IjEqIi8+CisgICAgPGNvbHNwZWMgY29sbmFtZT0iY29sMiIgY29sd2lk dGg9IjIqIi8+CisgICAgPHRoZWFkPgorICAgICA8cm93PgorICAgICAgPGVudHJ5PlBoYXNl PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5EZXNjcmlwdGlvbjwvZW50cnk+CisgICAgIDwvcm93 PgorICAgIDwvdGhlYWQ+CisgICAgPHRib2R5PgorICAgICA8cm93PgorICAgICAgPGVudHJ5 PjxsaXRlcmFsPmVuYWJsaW5nPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+Cisg ICAgICAgVGhlIGNvbW1hbmQgaXMgY3VycmVudGx5IGVuYWJsaW5nIGRhdGEgY2hlY2tzdW1z IG9uIHRoZSBjbHVzdGVyLgorICAgICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgIDxy b3c+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+ZGlzYWJsaW5nPC9saXRlcmFsPjwvZW50cnk+ CisgICAgICA8ZW50cnk+CisgICAgICAgVGhlIGNvbW1hbmQgaXMgY3VycmVudGx5IGRpc2Fi bGluZyBkYXRhIGNoZWNrc3VtcyBvbiB0aGUgY2x1c3Rlci4KKyAgICAgIDwvZW50cnk+Cisg ICAgIDwvcm93PgorICAgICA8cm93PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPndhaXRpbmcg b24gYmFja2VuZHM8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT4KKyAgICAgICBU aGUgY29tbWFuZCBpcyBjdXJyZW50bHkgd2FpdGluZyBmb3IgYmFja2VuZHMgdG8gYWNrbm93 bGVkZ2UgdGhlIGRhdGEKKyAgICAgICBjaGVja3N1bSBvcGVyYXRpb24uCisgICAgICA8L2Vu dHJ5PgorICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD53 YWl0aW5nIG9uIHRlbXBvcmFyeSB0YWJsZXM8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxl bnRyeT4KKyAgICAgICBUaGUgY29tbWFuZCBpcyBjdXJyZW50bHkgd2FpdGluZyBmb3IgYWxs IHRlbXBvcmFyeSB0YWJsZXMgd2hpY2ggZXhpc3RlZAorICAgICAgIGF0IHRoZSB0aW1lIHRo ZSBjb21tYW5kIHdhcyBzdGFydGVkIHRvIGJlIHJlbW92ZWQuCisgICAgICA8L2VudHJ5Pgor ICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD5kb25lPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+CisgICAgICAgVGhlIGNvbW1hbmQgaGFz IGZpbmlzaGVkIHByb2Nlc3NpbmcgYW5kIGlzIGV4aXRpbmcuCisgICAgICA8L2VudHJ5Pgor ICAgICA8L3Jvdz4KKyAgICA8L3Rib2R5PgorICAgPC90Z3JvdXA+CisgIDwvdGFibGU+Cisg PC9zZWN0Mj4KKwogIDwvc2VjdDE+CiAKICA8c2VjdDEgaWQ9ImR5bmFtaWMtdHJhY2UiPgpk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9wZ19jaGVja3N1bXMuc2dtbCBiL2RvYy9z cmMvc2dtbC9yZWYvcGdfY2hlY2tzdW1zLnNnbWwKaW5kZXggOTUwNDNhYTMyOWMuLjAzNDM3 MTBhZjUzIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX2NoZWNrc3Vtcy5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfY2hlY2tzdW1zLnNnbWwKQEAgLTQ1LDYgKzQ1 LDEyIEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogICAgZXhpdCBzdGF0dXMgaXMgbm9u emVybyBpZiB0aGUgb3BlcmF0aW9uIGZhaWxlZC4KICAgPC9wYXJhPgogCisgIDxwYXJhPgor ICAgV2hlbiBlbmFibGluZyBjaGVja3N1bXMsIGlmIGNoZWNrc3VtcyB3ZXJlIGluIHRoZSBw cm9jZXNzIG9mIGJlaW5nIGVuYWJsZWQKKyAgIHdoZW4gdGhlIGNsdXN0ZXIgd2FzIHNodXQg ZG93biwgPGFwcGxpY2F0aW9uPnBnX2NoZWNrc3VtczwvYXBwbGljYXRpb24+CisgICB3aWxs IHN0aWxsIHByb2Nlc3MgYWxsIHJlbGF0aW9ucyByZWdhcmRsZXNzIG9mIHRoZSBvbmxpbmUg cHJvY2Vzc2luZy4KKyAgPC9wYXJhPgorCiAgIDxwYXJhPgogICAgV2hlbiB2ZXJpZnlpbmcg Y2hlY2tzdW1zLCBldmVyeSBmaWxlIGluIHRoZSBjbHVzdGVyIGlzIHNjYW5uZWQuIFdoZW4K ICAgIGVuYWJsaW5nIGNoZWNrc3VtcywgZWFjaCByZWxhdGlvbiBmaWxlIGJsb2NrIHdpdGgg YSBjaGFuZ2VkIGNoZWNrc3VtIGlzCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvd2FsLnNn bWwgYi9kb2Mvc3JjL3NnbWwvd2FsLnNnbWwKaW5kZXggZjNiODZiMjZiZTkuLjI1NjJiMWEw MDJjIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvd2FsLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL3dhbC5zZ21sCkBAIC0yNDYsOSArMjQ2LDEwIEBACiAgIDxwYXJhPgogICAgQ2hlY2tz dW1zIGNhbiBiZSBkaXNhYmxlZCB3aGVuIHRoZSBjbHVzdGVyIGlzIGluaXRpYWxpemVkIHVz aW5nIDxsaW5rCiAgICBsaW5rZW5kPSJhcHAtaW5pdGRiLWRhdGEtY2hlY2tzdW1zIj48YXBw bGljYXRpb24+aW5pdGRiPC9hcHBsaWNhdGlvbj48L2xpbms+LgotICAgVGhleSBjYW4gYWxz byBiZSBlbmFibGVkIG9yIGRpc2FibGVkIGF0IGEgbGF0ZXIgdGltZSBhcyBhbiBvZmZsaW5l Ci0gICBvcGVyYXRpb24uIERhdGEgY2hlY2tzdW1zIGFyZSBlbmFibGVkIG9yIGRpc2FibGVk IGF0IHRoZSBmdWxsIGNsdXN0ZXIKLSAgIGxldmVsLCBhbmQgY2Fubm90IGJlIHNwZWNpZmll ZCBpbmRpdmlkdWFsbHkgZm9yIGRhdGFiYXNlcyBvciB0YWJsZXMuCisgICBUaGV5IGNhbiBh bHNvIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgYXQgYSBsYXRlciB0aW1lIGVpdGhlciBhcyBh biBvZmZsaW5lCisgICBvcGVyYXRpb24gb3Igb25saW5lIGluIGEgcnVubmluZyBjbHVzdGVy IGFsbG93aW5nIGNvbmN1cnJlbnQgYWNjZXNzLiBEYXRhCisgICBjaGVja3N1bXMgYXJlIGVu YWJsZWQgb3IgZGlzYWJsZWQgYXQgdGhlIGZ1bGwgY2x1c3RlciBsZXZlbCwgYW5kIGNhbm5v dCBiZQorICAgc3BlY2lmaWVkIGluZGl2aWR1YWxseSBmb3IgZGF0YWJhc2VzIG9yIHRhYmxl cy4KICAgPC9wYXJhPgogCiAgIDxwYXJhPgpAQCAtMjY1LDcgKzI2Niw3IEBACiAgIDwvcGFy YT4KIAogICA8c2VjdDIgaWQ9ImNoZWNrc3Vtcy1vZmZsaW5lLWVuYWJsZS1kaXNhYmxlIj4K LSAgIDx0aXRsZT5PZmYtbGluZSBFbmFibGluZyBvZiBDaGVja3N1bXM8L3RpdGxlPgorICAg PHRpdGxlPk9mZmxpbmUgRW5hYmxpbmcgb2YgQ2hlY2tzdW1zPC90aXRsZT4KIAogICAgPHBh cmE+CiAgICAgVGhlIDxsaW5rIGxpbmtlbmQ9ImFwcC1wZ2NoZWNrc3VtcyI+PGFwcGxpY2F0 aW9uPnBnX2NoZWNrc3VtczwvYXBwbGljYXRpb24+PC9saW5rPgpAQCAtMjc0LDYgKzI3NSw1 NCBAQAogICAgPC9wYXJhPgogCiAgIDwvc2VjdDI+CisKKyAgPHNlY3QyIGlkPSJjaGVja3N1 bXMtb25saW5lLWVuYWJsZS1kaXNhYmxlIj4KKyAgIDx0aXRsZT5PbmxpbmUgRW5hYmxpbmcg b2YgQ2hlY2tzdW1zPC90aXRsZT4KKworICAgPHBhcmE+CisgICAgQ2hlY2tzdW1zIGNhbiBi ZSBlbmFibGVkIG9yIGRpc2FibGVkIG9ubGluZSwgYnkgY2FsbGluZyB0aGUgYXBwcm9wcmlh dGUKKyAgICA8bGluayBsaW5rZW5kPSJmdW5jdGlvbnMtYWRtaW4tY2hlY2tzdW0iPmZ1bmN0 aW9uczwvbGluaz4uCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIEVuYWJsaW5nIGNo ZWNrc3VtcyB3aWxsIHB1dCB0aGUgY2x1c3RlciBjaGVja3N1bSBtb2RlIGluCisgICAgPGxp dGVyYWw+aW5wcm9ncmVzcy1vbjwvbGl0ZXJhbD4gbW9kZS4gIER1cmluZyB0aGlzIHRpbWUs IGNoZWNrc3VtcyB3aWxsIGJlCisgICAgd3JpdHRlbiBidXQgbm90IHZlcmlmaWVkLiBJbiBh ZGRpdGlvbiB0byB0aGlzLCBhIGJhY2tncm91bmQgd29ya2VyIHByb2Nlc3MKKyAgICBpcyBz dGFydGVkIHRoYXQgZW5hYmxlcyBjaGVja3N1bXMgb24gYWxsIGV4aXN0aW5nIGRhdGEgaW4g dGhlIGNsdXN0ZXIuIE9uY2UKKyAgICB0aGlzIHdvcmtlciBoYXMgY29tcGxldGVkIHByb2Nl c3NpbmcgYWxsIGRhdGFiYXNlcyBpbiB0aGUgY2x1c3RlciwgdGhlCisgICAgY2hlY2tzdW0g bW9kZSB3aWxsIGF1dG9tYXRpY2FsbHkgc3dpdGNoIHRvIDxsaXRlcmFsPm9uPC9saXRlcmFs Pi4gVGhlCisgICAgcHJvY2Vzc2luZyB3aWxsIGNvbnN1bWUgdHdvIGJhY2tncm91bmQgd29y a2VyIHByb2Nlc3NlcywgbWFrZSBzdXJlIHRoYXQKKyAgICA8dmFybmFtZT5tYXhfd29ya2Vy X3Byb2Nlc3NlczwvdmFybmFtZT4gYWxsb3dzIGZvciBhdCBsZWFzdCB0d28gbW9yZQorICAg IGFkZGl0aW9uYWwgcHJvY2Vzc2VzLgorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAgICBU aGUgcHJvY2VzcyB3aWxsIGluaXRpYWxseSB3YWl0IGZvciBhbGwgb3BlbiB0cmFuc2FjdGlv bnMgdG8gZmluaXNoIGJlZm9yZQorICAgIGl0IHN0YXJ0cywgc28gdGhhdCBpdCBjYW4gYmUg Y2VydGFpbiB0aGF0IHRoZXJlIGFyZSBubyB0YWJsZXMgdGhhdCBoYXZlIGJlZW4KKyAgICBj cmVhdGVkIGluc2lkZSBhIHRyYW5zYWN0aW9uIHRoYXQgaGFzIG5vdCBjb21taXR0ZWQgeWV0 IGFuZCB0aHVzIHdvdWxkIG5vdAorICAgIGJlIHZpc2libGUgdG8gdGhlIHByb2Nlc3MgZW5h YmxpbmcgY2hlY2tzdW1zLiBJdCB3aWxsIGFsc28sIGZvciBlYWNoIGRhdGFiYXNlLAorICAg IHdhaXQgZm9yIGFsbCBwcmUtZXhpc3RpbmcgdGVtcG9yYXJ5IHRhYmxlcyB0byBnZXQgcmVt b3ZlZCBiZWZvcmUgaXQgZmluaXNoZXMuCisgICAgSWYgbG9uZy1saXZlZCB0ZW1wb3Jhcnkg dGFibGVzIGFyZSB1c2VkIGluIHRoZSBhcHBsaWNhdGlvbiBpdCBtYXkgYmUgbmVjZXNzYXJ5 CisgICAgdG8gdGVybWluYXRlIHRoZXNlIGFwcGxpY2F0aW9uIGNvbm5lY3Rpb25zIHRvIGFs bG93IHRoZSBwcm9jZXNzIHRvIGNvbXBsZXRlLgorICAgPC9wYXJhPgorCisgICA8cGFyYT4K KyAgICBJZiB0aGUgY2x1c3RlciBpcyBzdG9wcGVkIHdoaWxlIGluIDxsaXRlcmFsPmlucHJv Z3Jlc3Mtb248L2xpdGVyYWw+IG1vZGUsIGZvcgorICAgIGFueSByZWFzb24sIHRoZW4gdGhp cyBwcm9jZXNzIG11c3QgYmUgcmVzdGFydGVkIG1hbnVhbGx5LiBUbyBkbyB0aGlzLAorICAg IHJlLWV4ZWN1dGUgdGhlIGZ1bmN0aW9uIDxmdW5jdGlvbj5wZ19lbmFibGVfZGF0YV9jaGVj a3N1bXMoKTwvZnVuY3Rpb24+CisgICAgb25jZSB0aGUgY2x1c3RlciBoYXMgYmVlbiByZXN0 YXJ0ZWQuIFRoZSBiYWNrZ3JvdW5kIHdvcmtlciB3aWxsIGF0dGVtcHQKKyAgICB0byByZXN1 bWUgdGhlIHdvcmsgZnJvbSB3aGVyZSBpdCB3YXMgaW50ZXJydXB0ZWQuCisgICA8L3BhcmE+ CisKKyAgIDxub3RlPgorICAgIDxwYXJhPgorICAgICBFbmFibGluZyBjaGVja3N1bXMgY2Fu IGNhdXNlIHNpZ25pZmljYW50IEkvTyB0byB0aGUgc3lzdGVtLCBhcyBtb3N0IG9mIHRoZQor ICAgICBkYXRhYmFzZSBwYWdlcyB3aWxsIG5lZWQgdG8gYmUgcmV3cml0dGVuLCBhbmQgd2ls bCBiZSB3cml0dGVuIGJvdGggdG8gdGhlCisgICAgIGRhdGEgZmlsZXMgYW5kIHRoZSBXQUwu CisgICAgPC9wYXJhPgorICAgPC9ub3RlPgorCisgIDwvc2VjdDI+CiAgPC9zZWN0MT4KIAog ICA8c2VjdDEgaWQ9IndhbC1pbnRybyI+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3Mvcm1ncmRlc2MveGxvZ2Rlc2MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy94 bG9nZGVzYy5jCmluZGV4IDU4MDQwZjI4NjU2Li4xZTNhZDJhYjY4ZCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL3hsb2dkZXNjLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3JtZ3JkZXNjL3hsb2dkZXNjLmMKQEAgLTE4LDYgKzE4LDcgQEAKICNpbmNs dWRlICJhY2Nlc3MveGxvZy5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9nX2ludGVybmFsLmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb250cm9sLmgiCisjaW5jbHVkZSAic3RvcmFnZS9i dWZwYWdlLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCiAjaW5jbHVkZSAidXRpbHMvdGlt ZXN0YW1wLmgiCiAKQEAgLTE2Nyw2ICsxNjgsMjYgQEAgeGxvZ19kZXNjKFN0cmluZ0luZm8g YnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJbWVtY3B5KCZ3YWxfbGV2ZWwsIHJl Yywgc2l6ZW9mKGludCkpOwogCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIndhbF9sZXZlbCAl cyIsIGdldF93YWxfbGV2ZWxfc3RyaW5nKHdhbF9sZXZlbCkpOwogCX0KKwllbHNlIGlmIChp bmZvID09IFhMT0dfQ0hFQ0tTVU1TKQorCXsKKwkJeGxfY2hlY2tzdW1fc3RhdGUgeGxyZWM7 CisKKwkJbWVtY3B5KCZ4bHJlYywgcmVjLCBzaXplb2YoeGxfY2hlY2tzdW1fc3RhdGUpKTsK KwkJc3dpdGNoICh4bHJlYy5uZXdfY2hlY2tzdW10eXBlKQorCQl7CisJCQljYXNlIFBHX0RB VEFfQ0hFQ0tTVU1fVkVSU0lPTjoKKwkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1Ziwg Im9uIik7CisJCQkJYnJlYWs7CisJCQljYXNlIFBHX0RBVEFfQ0hFQ0tTVU1fSU5QUk9HUkVT U19PRkZfVkVSU0lPTjoKKwkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgImlucHJv Z3Jlc3Mtb2ZmIik7CisJCQkJYnJlYWs7CisJCQljYXNlIFBHX0RBVEFfQ0hFQ0tTVU1fSU5Q Uk9HUkVTU19PTl9WRVJTSU9OOgorCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAi aW5wcm9ncmVzcy1vbiIpOworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQlhcHBlbmRT dHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIm9mZiIpOworCQl9CisJfQogfQogCiBjb25zdCBjaGFy ICoKQEAgLTIxOCw2ICsyMzksOSBAQCB4bG9nX2lkZW50aWZ5KHVpbnQ4IGluZm8pCiAJCWNh c2UgWExPR19DSEVDS1BPSU5UX1JFRE86CiAJCQlpZCA9ICJDSEVDS1BPSU5UX1JFRE8iOwog CQkJYnJlYWs7CisJCWNhc2UgWExPR19DSEVDS1NVTVM6CisJCQlpZCA9ICJDSEVDS1NVTVMi OworCQkJYnJlYWs7CiAJfQogCiAJcmV0dXJuIGlkOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v eGxvZy5jCmluZGV4IDc5OWZjNzM5ZTE4Li5iNTE5MGE3ZTEwNCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3hsb2cuYwpAQCAtNjQ3LDYgKzY0NywxNiBAQCBzdGF0aWMgWExvZ1JlY1B0 ciBMb2NhbE1pblJlY292ZXJ5UG9pbnQ7CiBzdGF0aWMgVGltZUxpbmVJRCBMb2NhbE1pblJl Y292ZXJ5UG9pbnRUTEk7CiBzdGF0aWMgYm9vbCB1cGRhdGVNaW5SZWNvdmVyeVBvaW50ID0g dHJ1ZTsKIAorLyoKKyAqIExvY2FsIHN0YXRlIGZyb3IgQ29udHJvbGZpbGUgZGF0YV9jaGVj a3N1bV92ZXJzaW9uLiBBZnRlciBpbml0aWFsaXphdGlvbgorICogdGhpcyBpcyBvbmx5IHVw ZGF0ZWQgd2hlbiBhYnNvcmJpbmcgYSBwcm9jc2lnbmFsIGJhcnJpZXIgZHVyaW5nIGludGVy cnVwdAorICogcHJvY2Vzc2luZy4gVGhlIHJlYXNvbiBmb3Iga2VlcGluZyBhIGNvcHkgaW4g YmFja2VuZC1wcml2YXRlIG1lbW9yeSBpcyB0bworICogYXZvaWQgbG9ja2luZyBmb3IgaW50 ZXJyb2dhdGluZyBjaGVja3N1bSBzdGF0ZS4gUG9zc2libGUgdmFsdWVzIGFyZSB0aGUKKyAq IGNoZWNrc3VtIHZlcnNpb25zIGRlZmluZWQgaW4gc3RvcmFnZS9idWZwYWdlLmggYXMgd2Vs bCBhcyB6ZXJvIHdoZW4gZGF0YQorICogY2hlY2tzdW1zIGFyZSBkaXNhYmxlZC4KKyAqLwor c3RhdGljIHVpbnQzMiBMb2NhbERhdGFDaGVja3N1bVZlcnNpb24gPSAwOworCiAvKiBGb3Ig V0FMSW5zZXJ0TG9ja0FjcXVpcmUvUmVsZWFzZSBmdW5jdGlvbnMgKi8KIHN0YXRpYyBpbnQJ TXlMb2NrTm8gPSAwOwogc3RhdGljIGJvb2wgaG9sZGluZ0FsbExvY2tzID0gZmFsc2U7CkBA IC03MTUsNiArNzI1LDggQEAgc3RhdGljIHZvaWQgV0FMSW5zZXJ0TG9ja0FjcXVpcmVFeGNs dXNpdmUodm9pZCk7CiBzdGF0aWMgdm9pZCBXQUxJbnNlcnRMb2NrUmVsZWFzZSh2b2lkKTsK IHN0YXRpYyB2b2lkIFdBTEluc2VydExvY2tVcGRhdGVJbnNlcnRpbmdBdChYTG9nUmVjUHRy IGluc2VydGluZ0F0KTsKIAorc3RhdGljIHZvaWQgWExvZ0NoZWNrc3VtcyhDaGVja3N1bVR5 cGUgbmV3X3R5cGUpOworCiAvKgogICogSW5zZXJ0IGFuIFhMT0cgcmVjb3JkIHJlcHJlc2Vu dGVkIGJ5IGFuIGFscmVhZHktY29uc3RydWN0ZWQgY2hhaW4gb2YgZGF0YQogICogY2h1bmtz LiAgVGhpcyBpcyBhIGxvdy1sZXZlbCByb3V0aW5lOyB0byBjb25zdHJ1Y3QgdGhlIFdBTCBy ZWNvcmQgaGVhZGVyCkBAIC04MjgsOSArODQwLDEwIEBAIFhMb2dJbnNlcnRSZWNvcmQoWExv Z1JlY0RhdGEgKnJkYXRhLAogCQkgKiBvbmx5IGhhcHBlbiBqdXN0IGFmdGVyIGEgY2hlY2tw b2ludCwgc28gaXQncyBiZXR0ZXIgdG8gYmUgc2xvdyBpbgogCQkgKiB0aGlzIGNhc2UgYW5k IGZhc3Qgb3RoZXJ3aXNlLgogCQkgKgotCQkgKiBBbHNvIGNoZWNrIHRvIHNlZSBpZiBmdWxs UGFnZVdyaXRlcyB3YXMganVzdCB0dXJuZWQgb24gb3IgdGhlcmUncyBhCi0JCSAqIHJ1bm5p bmcgYmFja3VwICh3aGljaCBmb3JjZXMgZnVsbC1wYWdlIHdyaXRlcyk7IGlmIHdlIHdlcmVu J3QKLQkJICogYWxyZWFkeSBkb2luZyBmdWxsLXBhZ2Ugd3JpdGVzIHRoZW4gZ28gYmFjayBh bmQgcmVjb21wdXRlLgorCQkgKiBBbHNvIGNoZWNrIHRvIHNlZSBpZiBmdWxsUGFnZVdyaXRl cyB3YXMganVzdCB0dXJuZWQgb24sIHRoZXJlJ3MgYQorCQkgKiBydW5uaW5nIGJhY2t1cCBv ciBpZiBjaGVja3N1bXMgYXJlIGVuYWJsZWQgKGFsbCBvZiB3aGljaCBmb3JjZXMKKwkJICog ZnVsbC1wYWdlIHdyaXRlcyk7IGlmIHdlIHdlcmVuJ3QgYWxyZWFkeSBkb2luZyBmdWxsLXBh Z2Ugd3JpdGVzCisJCSAqIHRoZW4gZ28gYmFjayBhbmQgcmVjb21wdXRlLgogCQkgKgogCQkg KiBJZiB3ZSBhcmVuJ3QgZG9pbmcgZnVsbC1wYWdlIHdyaXRlcyB0aGVuIFJlZG9SZWNQdHIg ZG9lc24ndAogCQkgKiBhY3R1YWxseSBhZmZlY3QgdGhlIGNvbnRlbnRzIG9mIHRoZSBYTE9H IHJlY29yZCwgc28gd2UnbGwgdXBkYXRlCkBAIC04NDMsNyArODU2LDkgQEAgWExvZ0luc2Vy dFJlY29yZChYTG9nUmVjRGF0YSAqcmRhdGEsCiAJCQlBc3NlcnQoUmVkb1JlY1B0ciA8IElu c2VydC0+UmVkb1JlY1B0cik7CiAJCQlSZWRvUmVjUHRyID0gSW5zZXJ0LT5SZWRvUmVjUHRy OwogCQl9Ci0JCWRvUGFnZVdyaXRlcyA9IChJbnNlcnQtPmZ1bGxQYWdlV3JpdGVzIHx8IElu c2VydC0+cnVubmluZ0JhY2t1cHMgPiAwKTsKKwkJZG9QYWdlV3JpdGVzID0gKEluc2VydC0+ ZnVsbFBhZ2VXcml0ZXMgfHwKKwkJCQkJCUluc2VydC0+cnVubmluZ0JhY2t1cHMgPiAwIHx8 CisJCQkJCQlEYXRhQ2hlY2tzdW1zTmVlZFdyaXRlKCkpOwogCiAJCWlmIChkb1BhZ2VXcml0 ZXMgJiYKIAkJCSghcHJldkRvUGFnZVdyaXRlcyB8fApAQCAtNDU3OSw5ICs0NTk0LDcgQEAg UmVhZENvbnRyb2xGaWxlKHZvaWQpCiAKIAlDYWxjdWxhdGVDaGVja3BvaW50U2VnbWVudHMo KTsKIAotCS8qIE1ha2UgdGhlIGluaXRkYiBzZXR0aW5ncyB2aXNpYmxlIGFzIEdVQyB2YXJp YWJsZXMsIHRvbyAqLwotCVNldENvbmZpZ09wdGlvbigiZGF0YV9jaGVja3N1bXMiLCBEYXRh Q2hlY2tzdW1zRW5hYmxlZCgpID8gInllcyIgOiAibm8iLAotCQkJCQlQR0NfSU5URVJOQUws IFBHQ19TX0RZTkFNSUNfREVGQVVMVCk7CisJTG9jYWxEYXRhQ2hlY2tzdW1WZXJzaW9uID0g Q29udHJvbEZpbGUtPmRhdGFfY2hlY2tzdW1fdmVyc2lvbjsKIH0KIAogLyoKQEAgLTQ2MTUs MTMgKzQ2MjgsMzQ1IEBAIEdldE1vY2tBdXRoZW50aWNhdGlvbk5vbmNlKHZvaWQpCiB9CiAK IC8qCi0gKiBBcmUgY2hlY2tzdW1zIGVuYWJsZWQgZm9yIGRhdGEgcGFnZXM/CisgKiBEYXRh Q2hlY2tzdW1zTmVlZFdyaXRlCisgKgkJUmV0dXJucyB3aGV0aGVyIGRhdGEgY2hlY2tzdW1z IG11c3QgYmUgd3JpdHRlbiBvciBub3QKKyAqCisgKiBSZXR1cm5zIHRydWUgaWZmIGRhdGEg Y2hlY2tzdW1zIGFyZSBlbmFibGVkIG9yIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZwor ICogZW5hYmxlZC4gRHVyaW5nICJpbnByb2dyZXNzLW9uIiBhbmQgImlucHJvZ3Jlc3Mtb2Zm IiBzdGF0ZXMgY2hlY2tzdW1zIG11c3QKKyAqIGJlIHdyaXR0ZW4gZXZlbiB0aG91Z2ggdGhl eSBhcmUgbm90IHZlcmlmaWVkIChzZWUgZGF0YWNoZWNrc3Vtc3dvcmtlci5jIGZvcgorICog YSBsb25nZXIgZGlzY3Vzc2lvbikuCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRl ZCBmb3IgY2FsbHNpdGVzIHdoaWNoIGFyZSBhYm91dCB0byB3cml0ZSBhIGRhdGEgcGFnZQor ICogdG8gc3RvcmFnZSwgYW5kIG5lZWQgdG8ga25vdyB3aGV0aGVyIHRvIHJlLWNhbGN1bGF0 ZSB0aGUgY2hlY2tzdW0gZm9yIHRoZQorICogcGFnZSBoZWFkZXIuIENhbGxpbmcgdGhpcyBm dW5jdGlvbiBtdXN0IGJlIHBlcmZvcm1lZCBhcyBjbG9zZSB0byB0aGUgd3JpdGUKKyAqIG9w ZXJhdGlvbiBhcyBwb3NzaWJsZSB0byBrZWVwIHRoZSBjcml0aWNhbCBzZWN0aW9uIHNob3J0 LgorICovCitib29sCitEYXRhQ2hlY2tzdW1zTmVlZFdyaXRlKHZvaWQpCit7CisJcmV0dXJu IChMb2NhbERhdGFDaGVja3N1bVZlcnNpb24gPT0gUEdfREFUQV9DSEVDS1NVTV9WRVJTSU9O IHx8CisJCQlMb2NhbERhdGFDaGVja3N1bVZlcnNpb24gPT0gUEdfREFUQV9DSEVDS1NVTV9J TlBST0dSRVNTX09OX1ZFUlNJT04gfHwKKwkJCUxvY2FsRGF0YUNoZWNrc3VtVmVyc2lvbiA9 PSBQR19EQVRBX0NIRUNLU1VNX0lOUFJPR1JFU1NfT0ZGX1ZFUlNJT04pOworfQorCisvKgor ICogRGF0YUNoZWNrc3Vtc05lZWRWZXJpZnkKKyAqCQlSZXR1cm5zIHdoZXRoZXIgZGF0YSBj aGVja3N1bXMgbXVzdCBiZSB2ZXJpZmllZCBvciBub3QKKyAqCisgKiBEYXRhIGNoZWNrc3Vt cyBhcmUgb25seSB2ZXJpZmllZCBpZiB0aGV5IGFyZSBmdWxseSBlbmFibGVkIGluIHRoZSBj bHVzdGVyLgorICogRHVyaW5nIHRoZSAiaW5wcm9ncmVzcy1vbiIgYW5kICJpbnByb2dyZXNz LW9mZiIgc3RhdGVzIHRoZXkgYXJlIG9ubHkKKyAqIHVwZGF0ZWQsIG5vdCB2ZXJpZmllZCAo c2VlIGRhdGFjaGVja3N1bXN3b3JrZXIuYyBmb3IgYSBsb25nZXIgZGlzY3Vzc2lvbikuCisg KgorICogVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCBmb3IgY2FsbHNpdGVzIHdoaWNoIGhh dmUgcmVhZCBkYXRhIGFuZCBhcmUgYWJvdXQKKyAqIHRvIHBlcmZvcm0gY2hlY2tzdW0gdmFs aWRhdGlvbiBiYXNlZCBvbiB0aGUgcmVzdWx0IG9mIHRoaXMuICBDYWxsaW5nIHRoaXMKKyAq IGZ1bmN0aW9uIG11c3QgYmUgcGVyZm9ybWVkIGFzIGNsb3NlIHRvIHRoZSB2YWxpZGF0aW9u IGNhbGwgYXMgcG9zc2libGUgdG8KKyAqIGtlZXAgdGhlIGNyaXRpY2FsIHNlY3Rpb24gc2hv cnQuIFRoaXMgaXMgaW4gb3JkZXIgdG8gcHJvdGVjdCBhZ2FpbnN0IHRpbWUgb2YKKyAqIGNo ZWNrL3RpbWUgb2YgdXNlIHNpdHVhdGlvbnMgYXJvdW5kIGRhdGEgY2hlY2tzdW0gdmFsaWRh dGlvbi4KKyAqLworYm9vbAorRGF0YUNoZWNrc3Vtc05lZWRWZXJpZnkodm9pZCkKK3sKKwly ZXR1cm4gKExvY2FsRGF0YUNoZWNrc3VtVmVyc2lvbiA9PSBQR19EQVRBX0NIRUNLU1VNX1ZF UlNJT04pOworfQorCisvKgorICogRGF0YUNoZWNrc3Vtc09uSW5Qcm9ncmVzcworICoJCVJl dHVybnMgd2hldGhlciBkYXRhIGNoZWNrc3VtcyBhcmUgYmVpbmcgZW5hYmxlZAorICoKKyAq IE1vc3Qgb3BlcmF0aW9ucyBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHRoZSAiaW5wcm9n cmVzcyIgc3RhdGVzLCBhbmQKKyAqIHNob3VsZCB1c2UgRGF0YUNoZWNrc3Vtc05lZWRWZXJp ZnkoKSBvciBEYXRhQ2hlY2tzdW1zTmVlZFdyaXRlKCkuIFRoZQorICogImlucHJvZ3Jlc3Mt b24iIHN0YXRlIGZvciBlbmFibGluZyBjaGVja3N1bXMgaXMgdXNlZCB3aGVuIHRoZSBjaGVj a3N1bQorICogd29ya2VyIGlzIHNldHRpbmcgY2hlY2tzdW1zIG9uIGFsbCBwYWdlcywgaXQg Y2FuIHRodXMgYmUgdXNlZCB0byBjaGVjayBmb3IKKyAqIGFib3J0ZWQgY2hlY2tzdW0gcHJv Y2Vzc2luZyB3aGljaCBuZWVkIHRvIGJlIHJlc3RhcnRlZC4KKyAqLworaW5saW5lIGJvb2wK K0RhdGFDaGVja3N1bXNPbkluUHJvZ3Jlc3Modm9pZCkKK3sKKwlyZXR1cm4gKExvY2FsRGF0 YUNoZWNrc3VtVmVyc2lvbiA9PSBQR19EQVRBX0NIRUNLU1VNX0lOUFJPR1JFU1NfT05fVkVS U0lPTik7Cit9CisKKy8qCisgKiBEYXRhQ2hlY2tzdW1zT2ZmSW5Qcm9ncmVzcworICoJCVJl dHVybnMgd2hldGhlciBkYXRhIGNoZWNrc3VtcyBhcmUgYmVpbmcgZGlzYWJsZWQKKyAqCisg KiBUaGUgImlucHJvZ3Jlc3Mtb2ZmIiBzdGF0ZSBmb3IgZGlzYWJsaW5nIGNoZWNrc3VtcyBp cyB1c2VkIGZvciB3aGVuIHRoZQorICogd29ya2VyIHJlc2V0cyB0aGUgY2F0YWxvZyBzdGF0 ZS4gIERhdGFDaGVja3N1bXNOZWVkVmVyaWZ5KCkgb3IKKyAqIERhdGFDaGVja3N1bXNOZWVk V3JpdGUoKSBzaG91bGQgYmUgdXNlZCBmb3IgZGVjaWRpbmcgd2hldGhlciB0byByZWFkL3dy aXRlCisgKiBjaGVja3N1bXMuCiAgKi8KIGJvb2wKLURhdGFDaGVja3N1bXNFbmFibGVkKHZv aWQpCitEYXRhQ2hlY2tzdW1zT2ZmSW5Qcm9ncmVzcyh2b2lkKQoreworCXJldHVybiAoTG9j YWxEYXRhQ2hlY2tzdW1WZXJzaW9uID09IFBHX0RBVEFfQ0hFQ0tTVU1fSU5QUk9HUkVTU19P RkZfVkVSU0lPTik7Cit9CisKKy8qCisgKiBTZXREYXRhQ2hlY2tzdW1zT25JblByb2dyZXNz CisgKgkJU2V0cyB0aGUgZGF0YSBjaGVja3N1bSBzdGF0ZSB0byAiaW5wcm9ncmVzcy1vbiIg dG8gZW5hYmxlIGNoZWNrc3VtcworICoKKyAqIFRvIHN0YXJ0IHRoZSBwcm9jZXNzIG9mIGVu YWJsaW5nIGRhdGEgY2hlY2tzdW1zIGluIGEgcnVubmluZyBjbHVzdGVyIHRoZQorICogZGF0 YV9jaGVja3N1bV92ZXJzaW9uIHN0YXRlIG11c3QgYmUgY2hhbmdlZCB0byAiaW5wcm9ncmVz cy1vbiIuIFNlZQorICogU2V0RGF0YUNoZWNrc3Vtc09uIGJlbG93IGZvciBhIGRlc2NyaXB0 aW9uIG9uIGhvdyB0aGlzIHN0YXRlIGNoYW5nZSB3b3Jrcy4KKyAqIFRoaXMgZnVuY3Rpb24g YmxvY2tzIHVudGlsIGFsbCBiYWNrZW5kcyBpbiB0aGUgY2x1c3RlciBoYXZlIGFja25vd2xl ZGdlZCB0aGUKKyAqIHN0YXRlIHRyYW5zaXRpb24uCisgKi8KK3ZvaWQKK1NldERhdGFDaGVj a3N1bXNPbkluUHJvZ3Jlc3Modm9pZCkKK3sKKwl1aW50NjQJCWJhcnJpZXI7CisKKwlBc3Nl cnQoQ29udHJvbEZpbGUgIT0gTlVMTCk7CisKKwkvKgorCSAqIFRoZSBzdGF0ZSB0cmFuc2l0 aW9uIGlzIHBlcmZvcm1lZCBpbiBhIGNyaXRpY2FsIHNlY3Rpb24gd2l0aAorCSAqIGNoZWNr cG9pbnRzIGhlbGQgb2ZmIHRvIHByb3ZpZGUgY3Jhc2ggc2FmZXR5LgorCSAqLworCU15UHJv Yy0+ZGVsYXlDaGtwdEZsYWdzIHw9IERFTEFZX0NIS1BUX1NUQVJUOworCVNUQVJUX0NSSVRf U0VDVElPTigpOworCisJWExvZ0NoZWNrc3VtcyhQR19EQVRBX0NIRUNLU1VNX0lOUFJPR1JF U1NfT05fVkVSU0lPTik7CisKKwlMV0xvY2tBY3F1aXJlKENvbnRyb2xGaWxlTG9jaywgTFdf RVhDTFVTSVZFKTsKKwlDb250cm9sRmlsZS0+ZGF0YV9jaGVja3N1bV92ZXJzaW9uID0gUEdf REFUQV9DSEVDS1NVTV9JTlBST0dSRVNTX09OX1ZFUlNJT047CisJTFdMb2NrUmVsZWFzZShD b250cm9sRmlsZUxvY2spOworCisJYmFycmllciA9IEVtaXRQcm9jU2lnbmFsQmFycmllcihQ Uk9DU0lHTkFMX0JBUlJJRVJfQ0hFQ0tTVU1fSU5QUk9HUkVTU19PTik7CisKKwlFTkRfQ1JJ VF9TRUNUSU9OKCk7CisJTXlQcm9jLT5kZWxheUNoa3B0RmxhZ3MgJj0gfkRFTEFZX0NIS1BU X1NUQVJUOworCisJLyoKKwkgKiBBd2FpdCBzdGF0ZSBjaGFuZ2UgaW4gYWxsIGJhY2tlbmRz IHRvIGVuc3VyZSB0aGF0IGFsbCBiYWNrZW5kcyBhcmUgaW4KKwkgKiAiaW5wcm9ncmVzcy1v biIuIE9uY2UgZG9uZSB3ZSBrbm93IHRoYXQgYWxsIGJhY2tlbmRzIGFyZSB3cml0aW5nIGRh dGEKKwkgKiBjaGVja3N1bXMuCisJICovCisJV2FpdEZvclByb2NTaWduYWxCYXJyaWVyKGJh cnJpZXIpOworfQorCisvKgorICogU2V0RGF0YUNoZWNrc3Vtc09uCisgKgkJRW5hYmxlcyBk YXRhIGNoZWNrc3VtcyBjbHVzdGVyLXdpZGUKKyAqCisgKiBFbmFibGluZyBkYXRhIGNoZWNr c3VtcyBpcyBwZXJmb3JtZWQgdXNpbmcgdHdvIGJhcnJpZXJzLCB0aGUgZmlyc3Qgb25lIHRv CisgKiBzZXQgdGhlIGNoZWNrc3VtcyBzdGF0ZSB0byAiaW5wcm9ncmVzcy1vbiIgKHdoaWNo IGlzIHBlcmZvcm1lZCBieQorICogU2V0RGF0YUNoZWNrc3Vtc09uSW5Qcm9ncmVzcygpKSBh bmQgdGhlIHNlY29uZCBvbmUgdG8gc2V0IHRoZSBzdGF0ZSB0byAib24iCisgKiAocGVyZm9y bWVkIGhlcmUpLgorICoKKyAqIFRvIHN0YXJ0IHRoZSBwcm9jZXNzIG9mIGVuYWJsaW5nIGRh dGEgY2hlY2tzdW1zIGluIGEgcnVubmluZyBjbHVzdGVyIHRoZQorICogZGF0YV9jaGVja3N1 bV92ZXJzaW9uIHN0YXRlIG11c3QgYmUgY2hhbmdlZCB0byAiaW5wcm9ncmVzcy1vbiIuICBU aGlzIHN0YXRlCisgKiByZXF1aXJlcyBkYXRhIGNoZWNrc3VtcyB0byBiZSB3cml0dGVuIGJ1 dCBub3QgdmVyaWZpZWQuIFRoaXMgZW5zdXJlcyB0aGF0CisgKiBhbGwgZGF0YSBwYWdlcyBj YW4gYmUgY2hlY2tzdW1tZWQgd2l0aG91dCB0aGUgcmlzayBvZiBmYWxzZSBuZWdhdGl2ZXMg aW4KKyAqIHZhbGlkYXRpb24gZHVyaW5nIHRoZSBwcm9jZXNzLiAgV2hlbiBhbGwgZXhpc3Rp bmcgcGFnZXMgYXJlIGd1YXJhbnRlZWQgdG8KKyAqIGhhdmUgY2hlY2tzdW1zLCBhbmQgYWxs IG5ldyBwYWdlcyB3aWxsIGJlIGluaXRpYXRlZCB3aXRoIGNoZWNrc3VtcywgdGhlCisgKiBz dGF0ZSBjYW4gYmUgY2hhbmdlZCB0byAib24iLiBPbmNlIHRoZSBzdGF0ZSBpcyAib24iIGNo ZWNrc3VtcyB3aWxsIGJlIGJvdGgKKyAqIHdyaXR0ZW4gYW5kIHZlcmlmaWVkLiBTZWUgZGF0 YWNoZWNrc3Vtc3dvcmtlci5jIGZvciBhIGxvbmdlciBkaXNjdXNzaW9uIG9uCisgKiBob3cg ZGF0YSBjaGVja3N1bXMgY2FuIGJlIGVuYWJsZWQgaW4gYSBydW5uaW5nIGNsdXN0ZXIuCisg KgorICogVGhpcyBmdW5jdGlvbiBibG9ja3MgdW50aWwgYWxsIGJhY2tlbmRzIGluIHRoZSBj bHVzdGVyIGhhdmUgYWNrbm93bGVkZ2VkIHRoZQorICogc3RhdGUgdHJhbnNpdGlvbi4KKyAq Lwordm9pZAorU2V0RGF0YUNoZWNrc3Vtc09uKHZvaWQpCiB7CisJdWludDY0CQliYXJyaWVy OworCiAJQXNzZXJ0KENvbnRyb2xGaWxlICE9IE5VTEwpOwotCXJldHVybiAoQ29udHJvbEZp bGUtPmRhdGFfY2hlY2tzdW1fdmVyc2lvbiA+IDApOworCisJTFdMb2NrQWNxdWlyZShDb250 cm9sRmlsZUxvY2ssIExXX0VYQ0xVU0lWRSk7CisKKwkvKgorCSAqIFRoZSBvbmx5IGFsbG93 ZWQgc3RhdGUgdHJhbnNpdGlvbiB0byAib24iIGlzIGZyb20gImlucHJvZ3Jlc3Mtb24iIHNp bmNlCisJICogdGhhdCBzdGF0ZSBlbnN1cmVzIHRoYXQgYWxsIHBhZ2VzIHdpbGwgaGF2ZSBk YXRhIGNoZWNrc3VtcyB3cml0dGVuLgorCSAqLworCWlmIChDb250cm9sRmlsZS0+ZGF0YV9j aGVja3N1bV92ZXJzaW9uICE9IFBHX0RBVEFfQ0hFQ0tTVU1fSU5QUk9HUkVTU19PTl9WRVJT SU9OKQorCXsKKwkJTFdMb2NrUmVsZWFzZShDb250cm9sRmlsZUxvY2spOworCQllbG9nKEVS Uk9SLCAiY2hlY2tzdW1zIG5vdCBpbiBcImlucHJvZ3Jlc3Mtb25cIiBtb2RlIik7CisJfQor CisJTFdMb2NrUmVsZWFzZShDb250cm9sRmlsZUxvY2spOworCisJTXlQcm9jLT5kZWxheUNo a3B0RmxhZ3MgfD0gREVMQVlfQ0hLUFRfU1RBUlQ7CisJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7 CisKKwlYTG9nQ2hlY2tzdW1zKFBHX0RBVEFfQ0hFQ0tTVU1fVkVSU0lPTik7CisKKwlMV0xv Y2tBY3F1aXJlKENvbnRyb2xGaWxlTG9jaywgTFdfRVhDTFVTSVZFKTsKKwlDb250cm9sRmls ZS0+ZGF0YV9jaGVja3N1bV92ZXJzaW9uID0gUEdfREFUQV9DSEVDS1NVTV9WRVJTSU9OOwor CUxXTG9ja1JlbGVhc2UoQ29udHJvbEZpbGVMb2NrKTsKKworCWJhcnJpZXIgPSBFbWl0UHJv Y1NpZ25hbEJhcnJpZXIoUFJPQ1NJR05BTF9CQVJSSUVSX0NIRUNLU1VNX09OKTsKKworCUVO RF9DUklUX1NFQ1RJT04oKTsKKwlNeVByb2MtPmRlbGF5Q2hrcHRGbGFncyAmPSB+REVMQVlf Q0hLUFRfU1RBUlQ7CisKKwkvKgorCSAqIEF3YWl0IHN0YXRlIHRyYW5zaXRpb24gb2YgIm9u IiBpbiBhbGwgYmFja2VuZHMuIFdoZW4gZG9uZSB3ZSBrbm93IHRoYXQKKwkgKiBkYXRhIGNo ZWNrc3VtcyBhcmUgZW5hYmxlZCBpbiBhbGwgYmFja2VuZHMgYW5kIGRhdGEgY2hlY2tzdW1z IGFyZSBib3RoCisJICogd3JpdHRlbiBhbmQgdmVyaWZpZWQuCisJICovCisJV2FpdEZvclBy b2NTaWduYWxCYXJyaWVyKGJhcnJpZXIpOworfQorCisvKgorICogU2V0RGF0YUNoZWNrc3Vt c09mZgorICoJCURpc2FibGVzIGRhdGEgY2hlY2tzdW1zIGNsdXN0ZXItd2lkZQorICoKKyAq IERpc2FibGluZyBkYXRhIGNoZWNrc3VtcyBtdXN0IGJlIHBlcmZvcm1lZCB3aXRoIHR3byBz ZXRzIG9mIGJhcnJpZXJzLCBlYWNoCisgKiBjYXJyeWluZyBhIGRpZmZlcmVudCBzdGF0ZS4g VGhlIHN0YXRlIGlzIGZpcnN0IHNldCB0byAiaW5wcm9ncmVzcy1vZmYiCisgKiBkdXJpbmcg d2hpY2ggY2hlY2tzdW1zIGFyZSBzdGlsbCB3cml0dGVuIGJ1dCBub3QgdmVyaWZpZWQuIFRo aXMgZW5zdXJlcyB0aGF0CisgKiBiYWNrZW5kcyB3aGljaCBoYXZlIHlldCB0byBvYnNlcnZl IHRoZSBzdGF0ZSBjaGFuZ2UgZnJvbSAib24iIHdvbid0IGdldAorICogdmFsaWRhdGlvbiBl cnJvcnMgb24gY29uY3VycmVudGx5IG1vZGlmaWVkIHBhZ2VzLiBPbmNlIGFsbCBiYWNrZW5k cyBoYXZlCisgKiBjaGFuZ2VkIHRvICJpbnByb2dyZXNzLW9mZiIsIHRoZSBiYXJyaWVyIGZv ciBtb3ZpbmcgdG8gIm9mZiIgY2FuIGJlIGVtaXR0ZWQuCisgKiBUaGlzIGZ1bmN0aW9uIGJs b2NrcyB1bnRpbCBhbGwgYmFja2VuZHMgaW4gdGhlIGNsdXN0ZXIgaGF2ZSBhY2tub3dsZWRn ZWQgdGhlCisgKiBzdGF0ZSB0cmFuc2l0aW9uLgorICovCit2b2lkCitTZXREYXRhQ2hlY2tz dW1zT2ZmKHZvaWQpCit7CisJdWludDY0CQliYXJyaWVyOworCisJQXNzZXJ0KENvbnRyb2xG aWxlKTsKKworCUxXTG9ja0FjcXVpcmUoQ29udHJvbEZpbGVMb2NrLCBMV19FWENMVVNJVkUp OworCisJLyogSWYgZGF0YSBjaGVja3N1bXMgYXJlIGFscmVhZHkgZGlzYWJsZWQgdGhlcmUg aXMgbm90aGluZyB0byBkbyAqLworCWlmIChDb250cm9sRmlsZS0+ZGF0YV9jaGVja3N1bV92 ZXJzaW9uID09IDApCisJeworCQlMV0xvY2tSZWxlYXNlKENvbnRyb2xGaWxlTG9jayk7CisJ CXJldHVybjsKKwl9CisKKwkvKgorCSAqIElmIGRhdGEgY2hlY2tzdW1zIGFyZSBjdXJyZW50 bHkgZW5hYmxlZCB3ZSBmaXJzdCB0cmFuc2l0aW9uIHRvIHRoZQorCSAqICJpbnByb2dyZXNz LW9mZiIgc3RhdGUgZHVyaW5nIHdoaWNoIGJhY2tlbmRzIGNvbnRpbnVlIHRvIHdyaXRlCisJ ICogY2hlY2tzdW1zIHdpdGhvdXQgdmVyaWZ5aW5nIHRoZW0uIFdoZW4gYWxsIGJhY2tlbmRz IGFyZSBpbgorCSAqICJpbnByb2dyZXNzLW9mZiIgdGhlIG5leHQgdHJhbnNpdGlvbiB0byAi b2ZmIiBjYW4gYmUgcGVyZm9ybWVkLCBhZnRlcgorCSAqIHdoaWNoIGFsbCBkYXRhIGNoZWNr c3VtIHByb2Nlc3NpbmcgaXMgZGlzYWJsZWQuCisJICovCisJaWYgKENvbnRyb2xGaWxlLT5k YXRhX2NoZWNrc3VtX3ZlcnNpb24gPT0gUEdfREFUQV9DSEVDS1NVTV9WRVJTSU9OKQorCXsK KwkJTFdMb2NrUmVsZWFzZShDb250cm9sRmlsZUxvY2spOworCisJCU15UHJvYy0+ZGVsYXlD aGtwdEZsYWdzIHw9IERFTEFZX0NIS1BUX1NUQVJUOworCQlTVEFSVF9DUklUX1NFQ1RJT04o KTsKKworCQlYTG9nQ2hlY2tzdW1zKFBHX0RBVEFfQ0hFQ0tTVU1fSU5QUk9HUkVTU19PRkZf VkVSU0lPTik7CisKKwkJTFdMb2NrQWNxdWlyZShDb250cm9sRmlsZUxvY2ssIExXX0VYQ0xV U0lWRSk7CisJCUNvbnRyb2xGaWxlLT5kYXRhX2NoZWNrc3VtX3ZlcnNpb24gPSBQR19EQVRB X0NIRUNLU1VNX0lOUFJPR1JFU1NfT0ZGX1ZFUlNJT047CisJCUxXTG9ja1JlbGVhc2UoQ29u dHJvbEZpbGVMb2NrKTsKKworCQliYXJyaWVyID0gRW1pdFByb2NTaWduYWxCYXJyaWVyKFBS T0NTSUdOQUxfQkFSUklFUl9DSEVDS1NVTV9JTlBST0dSRVNTX09GRik7CisKKwkJRU5EX0NS SVRfU0VDVElPTigpOworCQlNeVByb2MtPmRlbGF5Q2hrcHRGbGFncyAmPSB+REVMQVlfQ0hL UFRfU1RBUlQ7CisKKworCQkvKgorCQkgKiBVcGRhdGUgbG9jYWwgc3RhdGUgaW4gYWxsIGJh Y2tlbmRzIHRvIGVuc3VyZSB0aGF0IGFueSBiYWNrZW5kIGluCisJCSAqICJvbiIgc3RhdGUg aXMgY2hhbmdlZCB0byAiaW5wcm9ncmVzcy1vZmYiLgorCQkgKi8KKwkJV2FpdEZvclByb2NT aWduYWxCYXJyaWVyKGJhcnJpZXIpOworCisJCS8qCisJCSAqIEF0IHRoaXMgcG9pbnQgd2Ug a25vdyB0aGF0IG5vIGJhY2tlbmRzIGFyZSB2ZXJpZnlpbmcgZGF0YSBjaGVja3N1bXMKKwkJ ICogZHVyaW5nIHJlYWRpbmcuIE5leHQsIHdlIGNhbiBzYWZlbHkgbW92ZSB0byBzdGF0ZSAi b2ZmIiB0byBhbHNvCisJCSAqIHN0b3Agd3JpdGluZyBjaGVja3N1bXMuCisJCSAqLworCX0K KwllbHNlCisJeworCQkvKgorCQkgKiBFbmRpbmcgdXAgaGVyZSBpbXBsaWVzIHRoYXQgdGhl IGNoZWNrc3VtcyBzdGF0ZSBpcyAiaW5wcm9ncmVzcy1vbiIKKwkJICogb3IgImlucHJvZ3Jl c3Mtb2ZmIiBhbmQgd2UgY2FuIHRyYW5zaXRpb24gZGlyZWN0bHkgdG8gIm9mZiIgZnJvbQor CQkgKiB0aGVyZS4KKwkJICovCisJCUxXTG9ja1JlbGVhc2UoQ29udHJvbEZpbGVMb2NrKTsK Kwl9CisKKwkvKgorCSAqIEVuc3VyZSB0aGF0IHdlIGRvbid0IGluY3VyIGEgY2hlY2twb2lu dCBkdXJpbmcgZGlzYWJsaW5nIGNoZWNrc3Vtcy4KKwkgKi8KKwlNeVByb2MtPmRlbGF5Q2hr cHRGbGFncyB8PSBERUxBWV9DSEtQVF9TVEFSVDsKKwlTVEFSVF9DUklUX1NFQ1RJT04oKTsK KworCVhMb2dDaGVja3N1bXMoMCk7CisKKwlMV0xvY2tBY3F1aXJlKENvbnRyb2xGaWxlTG9j aywgTFdfRVhDTFVTSVZFKTsKKwlDb250cm9sRmlsZS0+ZGF0YV9jaGVja3N1bV92ZXJzaW9u ID0gMDsKKwlMV0xvY2tSZWxlYXNlKENvbnRyb2xGaWxlTG9jayk7CisKKwliYXJyaWVyID0g RW1pdFByb2NTaWduYWxCYXJyaWVyKFBST0NTSUdOQUxfQkFSUklFUl9DSEVDS1NVTV9PRkYp OworCisJRU5EX0NSSVRfU0VDVElPTigpOworCU15UHJvYy0+ZGVsYXlDaGtwdEZsYWdzICY9 IH5ERUxBWV9DSEtQVF9TVEFSVDsKKworCVdhaXRGb3JQcm9jU2lnbmFsQmFycmllcihiYXJy aWVyKTsKK30KKworLyoKKyAqIFByb2NTaWduYWxCYXJyaWVyIGFic29ycHRpb24gZnVuY3Rp b25zIGZvciBlbmFibGluZyBhbmQgZGlzYWJsaW5nIGRhdGEKKyAqIGNoZWNrc3VtcyBpbiBh IHJ1bm5pbmcgY2x1c3Rlci4gVGhlIHByb2NzaWduYWxiYXJyaWVycyBhcmUgZW1pdHRlZCBp biB0aGUKKyAqIFNldERhdGFDaGVja3N1bXMqIGZ1bmN0aW9ucy4KKyAqLworYm9vbAorQWJz b3JiQ2hlY2tzdW1zT25JblByb2dyZXNzQmFycmllcih2b2lkKQoreworCUxvY2FsRGF0YUNo ZWNrc3VtVmVyc2lvbiA9IFBHX0RBVEFfQ0hFQ0tTVU1fSU5QUk9HUkVTU19PTl9WRVJTSU9O OworCXJldHVybiB0cnVlOworfQorCitib29sCitBYnNvcmJDaGVja3N1bXNPbkJhcnJpZXIo dm9pZCkKK3sKKwlBc3NlcnQoTG9jYWxEYXRhQ2hlY2tzdW1WZXJzaW9uID09IFBHX0RBVEFf Q0hFQ0tTVU1fSU5QUk9HUkVTU19PTl9WRVJTSU9OKTsKKwlMb2NhbERhdGFDaGVja3N1bVZl cnNpb24gPSBQR19EQVRBX0NIRUNLU1VNX1ZFUlNJT047CisJcmV0dXJuIHRydWU7Cit9CisK K2Jvb2wKK0Fic29yYkNoZWNrc3Vtc09mZkluUHJvZ3Jlc3NCYXJyaWVyKHZvaWQpCit7CisJ TG9jYWxEYXRhQ2hlY2tzdW1WZXJzaW9uID0gUEdfREFUQV9DSEVDS1NVTV9JTlBST0dSRVNT X09GRl9WRVJTSU9OOworCXJldHVybiB0cnVlOworfQorCitib29sCitBYnNvcmJDaGVja3N1 bXNPZmZCYXJyaWVyKHZvaWQpCit7CisJTG9jYWxEYXRhQ2hlY2tzdW1WZXJzaW9uID0gMDsK KwlyZXR1cm4gdHJ1ZTsKK30KKworLyoKKyAqIEluaXRMb2NhbENvbnRyb2xEYXRhCisgKgor ICogU2V0IHVwIGJhY2tlbmQgbG9jYWwgY2FjaGVzIG9mIGNvbnRyb2xkYXRhIHZhcmlhYmxl cyB3aGljaCBtYXkgY2hhbmdlIGF0CisgKiBhbnkgcG9pbnQgZHVyaW5nIHJ1bnRpbWUgYW5k IHRodXMgcmVxdWlyZSBzcGVjaWFsIGNhc2VkIGxvY2tpbmcuIFNvIGZhcgorICogdGhpcyBv bmx5IGFwcGxpZXMgdG8gZGF0YV9jaGVja3N1bV92ZXJzaW9uLCBidXQgaXQncyBpbnRlbmRl ZCB0byBiZSBnZW5lcmFsCisgKiBwdXJwb3NlIGVub3VnaCB0byBoYW5kbGUgZnV0dXJlIGNh c2VzLgorICovCit2b2lkCitJbml0TG9jYWxDb250cm9sZGF0YSh2b2lkKQoreworCUxXTG9j a0FjcXVpcmUoQ29udHJvbEZpbGVMb2NrLCBMV19FWENMVVNJVkUpOworCUxvY2FsRGF0YUNo ZWNrc3VtVmVyc2lvbiA9IENvbnRyb2xGaWxlLT5kYXRhX2NoZWNrc3VtX3ZlcnNpb247CisJ TFdMb2NrUmVsZWFzZShDb250cm9sRmlsZUxvY2spOworfQorCisvKiBndWMgaG9vayAqLwor Y29uc3QgY2hhciAqCitzaG93X2RhdGFfY2hlY2tzdW1zKHZvaWQpCit7CisJaWYgKExvY2Fs RGF0YUNoZWNrc3VtVmVyc2lvbiA9PSBQR19EQVRBX0NIRUNLU1VNX1ZFUlNJT04pCisJCXJl dHVybiAib24iOworCWVsc2UgaWYgKExvY2FsRGF0YUNoZWNrc3VtVmVyc2lvbiA9PSBQR19E QVRBX0NIRUNLU1VNX0lOUFJPR1JFU1NfT05fVkVSU0lPTikKKwkJcmV0dXJuICJpbnByb2dy ZXNzLW9uIjsKKwllbHNlIGlmIChMb2NhbERhdGFDaGVja3N1bVZlcnNpb24gPT0gUEdfREFU QV9DSEVDS1NVTV9JTlBST0dSRVNTX09GRl9WRVJTSU9OKQorCQlyZXR1cm4gImlucHJvZ3Jl c3Mtb2ZmIjsKKwllbHNlCisJCXJldHVybiAib2ZmIjsKIH0KIAogLyoKQEAgLTYxOTQsNiAr NjUzOSwzMyBAQCBTdGFydHVwWExPRyh2b2lkKQogCSAqLwogCUNvbXBsZXRlQ29tbWl0VHNJ bml0aWFsaXphdGlvbigpOwogCisJLyoKKwkgKiBJZiB3ZSByZWFjaCB0aGlzIHBvaW50IHdp dGggY2hlY2tzdW1zIGJlaW5nIGVuYWJsZWQgKCJpbnByb2dyZXNzLW9uIgorCSAqIHN0YXRl KSwgd2Ugbm90aWZ5IHRoZSB1c2VyIHRoYXQgdGhleSBuZWVkIHRvIG1hbnVhbGx5IHJlc3Rh cnQgdGhlCisJICogcHJvY2VzcyB0byBlbmFibGUgY2hlY2tzdW1zLiBUaGlzIGlzIGJlY2F1 c2Ugd2UgY2Fubm90IGxhdW5jaCBhIGR5bmFtaWMKKwkgKiBiYWNrZ3JvdW5kIHdvcmtlciBk aXJlY3RseSBmcm9tIGhlcmUsIGl0IGhhcyB0byBiZSBsYXVuY2hlZCBmcm9tIGEKKwkgKiBy ZWd1bGFyIGJhY2tlbmQuCisJICovCisJaWYgKENvbnRyb2xGaWxlLT5kYXRhX2NoZWNrc3Vt X3ZlcnNpb24gPT0gUEdfREFUQV9DSEVDS1NVTV9JTlBST0dSRVNTX09OX1ZFUlNJT04pCisJ CWVyZXBvcnQoV0FSTklORywKKwkJCQkoZXJybXNnKCJkYXRhIGNoZWNrc3VtcyBhcmUgYmVp bmcgZW5hYmxlZCwgYnV0IG5vIHdvcmtlciBpcyBydW5uaW5nIiksCisJCQkJIGVycmhpbnQo IklmIGNoZWNrc3VtcyB3ZXJlIGJlaW5nIGVuYWJsZWQgZHVyaW5nIHNodXRkb3duIHRoZW4g cHJvY2Vzc2luZyBtdXN0IGJlIG1hbnVhbGx5IHJlc3RhcnRlZC4iKSkpOworCisJLyoKKwkg KiBJZiBkYXRhIGNoZWNrc3VtcyB3ZXJlIGJlaW5nIGRpc2FibGVkIHdoZW4gdGhlIGNsdXN0 ZXIgd2FzIHNodXQgZG93biwKKwkgKiB3ZSBrbm93IHRoYXQgd2UgaGF2ZSBhIHN0YXRlIHdo ZXJlIGFsbCBiYWNrZW5kcyBoYXZlIHN0b3BwZWQgdmFsaWRhdGluZworCSAqIGNoZWNrc3Vt cyBhbmQgd2UgY2FuIG1vdmUgdG8gb2ZmIGluc3RlYWQgb2YgcHJvbXB0aW5nIHRoZSB1c2Vy IHRvCisJICogcGVyZm9ybSBhbnkgYWN0aW9uLgorCSAqLworCWlmIChDb250cm9sRmlsZS0+ ZGF0YV9jaGVja3N1bV92ZXJzaW9uID09IFBHX0RBVEFfQ0hFQ0tTVU1fSU5QUk9HUkVTU19P RkZfVkVSU0lPTikKKwl7CisJCVhMb2dDaGVja3N1bXMoMCk7CisKKwkJTFdMb2NrQWNxdWly ZShDb250cm9sRmlsZUxvY2ssIExXX0VYQ0xVU0lWRSk7CisJCUNvbnRyb2xGaWxlLT5kYXRh X2NoZWNrc3VtX3ZlcnNpb24gPSAwOworCQlMV0xvY2tSZWxlYXNlKENvbnRyb2xGaWxlTG9j ayk7CisJfQorCiAJLyoKIAkgKiBBbGwgZG9uZSB3aXRoIGVuZC1vZi1yZWNvdmVyeSBhY3Rp b25zLgogCSAqCkBAIC04MjAxLDYgKzg1NzMsMjQgQEAgWExvZ1JlcG9ydFBhcmFtZXRlcnMo dm9pZCkKIAl9CiB9CiAKKy8qCisgKiBMb2cgdGhlIG5ldyBzdGF0ZSBvZiBjaGVja3N1bXMK KyAqLworc3RhdGljIHZvaWQKK1hMb2dDaGVja3N1bXMoQ2hlY2tzdW1UeXBlIG5ld190eXBl KQoreworCXhsX2NoZWNrc3VtX3N0YXRlIHhscmVjOworCVhMb2dSZWNQdHIJcmVjcHRyOwor CisJeGxyZWMubmV3X2NoZWNrc3VtdHlwZSA9IG5ld190eXBlOworCisJWExvZ0JlZ2luSW5z ZXJ0KCk7CisJWExvZ1JlZ2lzdGVyRGF0YSgoY2hhciAqKSAmeGxyZWMsIHNpemVvZih4bF9j aGVja3N1bV9zdGF0ZSkpOworCisJcmVjcHRyID0gWExvZ0luc2VydChSTV9YTE9HX0lELCBY TE9HX0NIRUNLU1VNUyk7CisJWExvZ0ZsdXNoKHJlY3B0cik7Cit9CisKIC8qCiAgKiBVcGRh dGUgZnVsbF9wYWdlX3dyaXRlcyBpbiBzaGFyZWQgbWVtb3J5LCBhbmQgd3JpdGUgYW4KICAq IFhMT0dfRlBXX0NIQU5HRSByZWNvcmQgaWYgbmVjZXNzYXJ5LgpAQCAtODYyOSw2ICs5MDE5 LDQ2IEBAIHhsb2dfcmVkbyhYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAl7CiAJCS8qIG5v dGhpbmcgdG8gZG8gaGVyZSwganVzdCBmb3IgaW5mb3JtYXRpb25hbCBwdXJwb3NlcyAqLwog CX0KKwllbHNlIGlmIChpbmZvID09IFhMT0dfQ0hFQ0tTVU1TKQorCXsKKwkJeGxfY2hlY2tz dW1fc3RhdGUgc3RhdGU7CisJCXVpbnQ2NAkJYmFycmllcjsKKworCQltZW1jcHkoJnN0YXRl LCBYTG9nUmVjR2V0RGF0YShyZWNvcmQpLCBzaXplb2YoeGxfY2hlY2tzdW1fc3RhdGUpKTsK KworCQlMV0xvY2tBY3F1aXJlKENvbnRyb2xGaWxlTG9jaywgTFdfRVhDTFVTSVZFKTsKKwkJ Q29udHJvbEZpbGUtPmRhdGFfY2hlY2tzdW1fdmVyc2lvbiA9IHN0YXRlLm5ld19jaGVja3N1 bXR5cGU7CisJCUxXTG9ja1JlbGVhc2UoQ29udHJvbEZpbGVMb2NrKTsKKworCQkvKgorCQkg KiBCbG9jayBvbiBhIHByb2NzaWduYWxiYXJyaWVyIHRvIGF3YWl0IGFsbCBwcm9jZXNzZXMg aGF2aW5nIHNlZW4gdGhlCisJCSAqIGNoYW5nZSB0byBjaGVja3N1bSBzdGF0dXMuIE9uY2Ug dGhlIGJhcnJpZXIgaGFzIGJlZW4gcGFzc2VkIHdlIGNhbgorCQkgKiBpbml0aWF0ZSB0aGUg Y29ycmVzcG9uZGluZyBwcm9jZXNzaW5nLgorCQkgKi8KKwkJc3dpdGNoIChzdGF0ZS5uZXdf Y2hlY2tzdW10eXBlKQorCQl7CisJCQljYXNlIFBHX0RBVEFfQ0hFQ0tTVU1fSU5QUk9HUkVT U19PTl9WRVJTSU9OOgorCQkJCWJhcnJpZXIgPSBFbWl0UHJvY1NpZ25hbEJhcnJpZXIoUFJP Q1NJR05BTF9CQVJSSUVSX0NIRUNLU1VNX0lOUFJPR1JFU1NfT04pOworCQkJCVdhaXRGb3JQ cm9jU2lnbmFsQmFycmllcihiYXJyaWVyKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBQR19E QVRBX0NIRUNLU1VNX0lOUFJPR1JFU1NfT0ZGX1ZFUlNJT046CisJCQkJYmFycmllciA9IEVt aXRQcm9jU2lnbmFsQmFycmllcihQUk9DU0lHTkFMX0JBUlJJRVJfQ0hFQ0tTVU1fSU5QUk9H UkVTU19PRkYpOworCQkJCVdhaXRGb3JQcm9jU2lnbmFsQmFycmllcihiYXJyaWVyKTsKKwkJ CQlicmVhazsKKworCQkJY2FzZSBQR19EQVRBX0NIRUNLU1VNX1ZFUlNJT046CisJCQkJYmFy cmllciA9IEVtaXRQcm9jU2lnbmFsQmFycmllcihQUk9DU0lHTkFMX0JBUlJJRVJfQ0hFQ0tT VU1fT04pOworCQkJCVdhaXRGb3JQcm9jU2lnbmFsQmFycmllcihiYXJyaWVyKTsKKwkJCQli cmVhazsKKworCQkJZGVmYXVsdDoKKwkJCQlBc3NlcnQoc3RhdGUubmV3X2NoZWNrc3VtdHlw ZSA9PSAwKTsKKwkJCQliYXJyaWVyID0gRW1pdFByb2NTaWduYWxCYXJyaWVyKFBST0NTSUdO QUxfQkFSUklFUl9DSEVDS1NVTV9PRkYpOworCQkJCVdhaXRGb3JQcm9jU2lnbmFsQmFycmll cihiYXJyaWVyKTsKKwkJCQlicmVhazsKKwkJfQorCX0KIH0KIAogLyoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMKaW5kZXggOGMzMDkwMTY1ZjAuLjZiMWMyZWQ4 NWVhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVuY3Mu YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVuY3MuYwpAQCAtMjYs NiArMjYsNyBAQAogI2luY2x1ZGUgImZ1bmNhcGkuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4u aCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJwb3N0bWFzdGVyL2RhdGFjaGVj a3N1bXN3b3JrZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oIgog I2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCkBA IC03NDgsMyArNzQ5LDQzIEBAIHBnX3Byb21vdGUoUEdfRlVOQ1RJT05fQVJHUykKIAkJCQkJ CSAgIHdhaXRfc2Vjb25kcykpKTsKIAlQR19SRVRVUk5fQk9PTChmYWxzZSk7CiB9CisKKy8q CisgKiBEaXNhYmxlcyBkYXRhIGNoZWNrc3VtcyBmb3IgdGhlIGNsdXN0ZXIsIGlmIGFwcGxp Y2FibGUuIFN0YXJ0cyBhIGJhY2tncm91bmQKKyAqIHdvcmtlciB3aGljaCB0dXJucyBvZmYg dGhlIGRhdGEgY2hlY2tzdW1zLgorICovCitEYXR1bQorZGlzYWJsZV9kYXRhX2NoZWNrc3Vt cyhQR19GVU5DVElPTl9BUkdTKQoreworCWlmICghc3VwZXJ1c2VyKCkpCisJCWVyZXBvcnQo RVJST1IsIGVycm1zZygibXVzdCBiZSBzdXBlcnVzZXIiKSk7CisKKwlTdGFydERhdGFDaGVj a3N1bXNXb3JrZXJMYXVuY2hlcihmYWxzZSwgMCwgMCwgZmFsc2UpOworCVBHX1JFVFVSTl9W T0lEKCk7Cit9CisKKy8qCisgKiBFbmFibGVzIGRhdGEgY2hlY2tzdW1zIGZvciB0aGUgY2x1 c3RlciwgaWYgYXBwbGljYWJsZS4gIFN1cHBvcnRzIHZhY3V1bS0KKyAqIGxpa2UgY29zdCBi YXNlZCB0aHJvdHRsaW5nIHRvIGxpbWl0IHN5c3RlbSBsb2FkLiBTdGFydHMgYSBiYWNrZ3Jv dW5kIHdvcmtlcgorICogd2hpY2ggdXBkYXRlcyBkYXRhIGNoZWNrc3VtcyBvbiBleGlzdGlu ZyBkYXRhLgorICovCitEYXR1bQorZW5hYmxlX2RhdGFfY2hlY2tzdW1zKFBHX0ZVTkNUSU9O X0FSR1MpCit7CisJaW50CQkJY29zdF9kZWxheSA9IFBHX0dFVEFSR19JTlQzMigwKTsKKwlp bnQJCQljb3N0X2xpbWl0ID0gUEdfR0VUQVJHX0lOVDMyKDEpOworCWJvb2wJCWZhc3QgPSBQ R19HRVRBUkdfQk9PTCgyKTsKKworCWlmICghc3VwZXJ1c2VyKCkpCisJCWVyZXBvcnQoRVJS T1IsIGVycm1zZygibXVzdCBiZSBzdXBlcnVzZXIiKSk7CisKKwlpZiAoY29zdF9kZWxheSA8 IDApCisJCWVyZXBvcnQoRVJST1IsIGVycm1zZygiY29zdCBkZWxheSBjYW5ub3QgYmUgYSBu ZWdhdGl2ZSB2YWx1ZSIpKTsKKworCWlmIChjb3N0X2xpbWl0IDw9IDApCisJCWVyZXBvcnQo RVJST1IsIGVycm1zZygiY29zdCBsaW1pdCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvIikp OworCisJU3RhcnREYXRhQ2hlY2tzdW1zV29ya2VyTGF1bmNoZXIodHJ1ZSwgY29zdF9kZWxh eSwgY29zdF9saW1pdCwgZmFzdCk7CisKKwlQR19SRVRVUk5fVk9JRCgpOworfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXAuYyBiL3NyYy9iYWNrZW5kL2Jh Y2t1cC9iYXNlYmFja3VwLmMKaW5kZXggM2Y4YTNjNTU3MjUuLjU5OGRkNDFiYWU2IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1cC5jCisrKyBiL3NyYy9iYWNr ZW5kL2JhY2t1cC9iYXNlYmFja3VwLmMKQEAgLTE2MTMsNyArMTYxMyw4IEBAIHNlbmRGaWxl KGJic2luayAqc2luaywgY29uc3QgY2hhciAqcmVhZGZpbGVuYW1lLCBjb25zdCBjaGFyICp0 YXJmaWxlbmFtZSwKIAkgKiBlbmFibGVkIGZvciB0aGlzIGNsdXN0ZXIsIGFuZCBpZiB0aGlz IGlzIGEgcmVsYXRpb24gZmlsZSwgdGhlbiB2ZXJpZnkKIAkgKiB0aGUgY2hlY2tzdW0uCiAJ ICovCi0JaWYgKCFub3ZlcmlmeV9jaGVja3N1bXMgJiYgRGF0YUNoZWNrc3Vtc0VuYWJsZWQo KSAmJgorCWlmICghbm92ZXJpZnlfY2hlY2tzdW1zICYmCisJCURhdGFDaGVja3N1bXNOZWVk V3JpdGUoKSAmJgogCQlSZWxGaWxlTnVtYmVySXNWYWxpZChyZWxmaWxlbnVtYmVyKSkKIAkJ dmVyaWZ5X2NoZWNrc3VtID0gdHJ1ZTsKIApAQCAtMjAwNiw2ICsyMDA3LDkgQEAgdmVyaWZ5 X3BhZ2VfY2hlY2tzdW0oUGFnZSBwYWdlLCBYTG9nUmVjUHRyIHN0YXJ0X2xzbiwgQmxvY2tO dW1iZXIgYmxrbm8sCiAJaWYgKFBhZ2VJc05ldyhwYWdlKSB8fCBQYWdlR2V0TFNOKHBhZ2Up ID49IHN0YXJ0X2xzbikKIAkJcmV0dXJuIHRydWU7CiAKKwlpZiAoIURhdGFDaGVja3N1bXNO ZWVkVmVyaWZ5KCkpCisJCXJldHVybiB0cnVlOworCiAJLyogUGVyZm9ybSB0aGUgYWN0dWFs IGNoZWNrc3VtIGNhbGN1bGF0aW9uLiAqLwogCWNoZWNrc3VtID0gcGdfY2hlY2tzdW1fcGFn ZShwYWdlLCBibGtubyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lz dGVtX2Z1bmN0aW9ucy5zcWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV9mdW5jdGlv bnMuc3FsCmluZGV4IDU2NmYzMDhlNDQzLi5iMThkYjJiNWRkZSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fZnVuY3Rpb25zLnNxbAorKysgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL3N5c3RlbV9mdW5jdGlvbnMuc3FsCkBAIC02NTAsNiArNjUwLDEzIEBAIExB TkdVQUdFIElOVEVSTkFMCiBDQUxMRUQgT04gTlVMTCBJTlBVVCBWT0xBVElMRSBQQVJBTExF TCBTQUZFCiBBUyAncGdfc3RhdF9yZXNldF9zbHJ1JzsKIAorQ1JFQVRFIE9SIFJFUExBQ0Ug RlVOQ1RJT04KKyAgcGdfZW5hYmxlX2RhdGFfY2hlY2tzdW1zKGNvc3RfZGVsYXkgaW50ZWdl ciBERUZBVUxUIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3N0X2xpbWl0IGlu dGVnZXIgREVGQVVMVCAxMDAsCisJCQkJCQkgICBmYXN0IGJvb2xlYW4gREVGQVVMVCBmYWxz ZSkKKyAgUkVUVVJOUyB2b2lkIFNUUklDVCBWT0xBVElMRSBMQU5HVUFHRSBpbnRlcm5hbCBB UyAnZW5hYmxlX2RhdGFfY2hlY2tzdW1zJworICBQQVJBTExFTCBSRVNUUklDVEVEOworCiAt LQogLS0gVGhlIGRlZmF1bHQgcGVybWlzc2lvbnMgZm9yIGZ1bmN0aW9ucyBtZWFuIHRoYXQg YW55b25lIGNhbiBleGVjdXRlIHRoZW0uCiAtLSBBIG51bWJlciBvZiBmdW5jdGlvbnMgc2hv dWxkbid0IGJlIGV4ZWN1dGFibGUgYnkganVzdCBhbnlvbmUsIGJ1dCByYXRoZXIKQEAgLTc3 NSw2ICs3ODIsMTAgQEAgUkVWT0tFIEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfbHNfbG9naWNh bG1hcGRpcigpIEZST00gUFVCTElDOwogCiBSRVZPS0UgRVhFQ1VURSBPTiBGVU5DVElPTiBw Z19sc19yZXBsc2xvdGRpcih0ZXh0KSBGUk9NIFBVQkxJQzsKIAorUkVWT0tFIEVYRUNVVEUg T04gRlVOQ1RJT04gcGdfZW5hYmxlX2RhdGFfY2hlY2tzdW1zKGludGVnZXIsIGludGVnZXIs IGJvb2xlYW4pIEZST00gcHVibGljOworCitSRVZPS0UgRVhFQ1VURSBPTiBGVU5DVElPTiBw Z19kaXNhYmxlX2RhdGFfY2hlY2tzdW1zKCkgRlJPTSBwdWJsaWM7CisKIC0tCiAtLSBXZSBh bHNvIHNldCB1cCBzb21lIHRoaW5ncyBhcyBhY2Nlc3NpYmxlIHRvIHN0YW5kYXJkIHJvbGVz LgogLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNx bCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAppbmRleCBhNGQyY2Zk Y2FmNS4uMGQ2Mjk3NmRjMWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lz dGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5z cWwKQEAgLTEzMzQsNiArMTMzNCwyNyBAQCBDUkVBVEUgVklFVyBwZ19zdGF0X3Byb2dyZXNz X2NvcHkgQVMKICAgICBGUk9NIHBnX3N0YXRfZ2V0X3Byb2dyZXNzX2luZm8oJ0NPUFknKSBB UyBTCiAgICAgICAgIExFRlQgSk9JTiBwZ19kYXRhYmFzZSBEIE9OIFMuZGF0aWQgPSBELm9p ZDsKIAorQ1JFQVRFIFZJRVcgcGdfc3RhdF9wcm9ncmVzc19kYXRhX2NoZWNrc3VtcyBBUwor CVNFTEVDVAorCQlTLnBpZCBBUyBwaWQsIFMuZGF0aWQgQVMgZGF0aWQsIEQuZGF0bmFtZSBB UyBkYXRuYW1lLAorCQlDQVNFIFMucGFyYW0xIFdIRU4gMCBUSEVOICdlbmFibGluZycKKyAg ICAgICAgICAgICAgICAgICAgICBXSEVOIDEgVEhFTiAnZGlzYWJsaW5nJworCQkJCQkgIFdI RU4gMiBUSEVOICd3YWl0aW5nJworCQkJCQkgIFdIRU4gMyBUSEVOICd3YWl0aW5nIG9uIGJh Y2tlbmRzJworCQkJCQkgIFdIRU4gNCBUSEVOICd3YWl0aW5nIG9uIHRlbXBvcmFyeSB0YWJs ZXMnCisJCQkJCSAgV0hFTiA1IFRIRU4gJ2RvbmUnCisJCQkJCSAgRU5EIEFTIHBoYXNlLAor CQlDQVNFIFMucGFyYW0yIFdIRU4gLTEgVEhFTiBOVUxMIEVMU0UgUy5wYXJhbTIgRU5EIEFT IGRhdGFiYXNlc190b3RhbCwKKwkJQ0FTRSBTLnBhcmFtMyBXSEVOIC0xIFRIRU4gTlVMTCBF TFNFIFMucGFyYW0zIEVORCBBUyByZWxhdGlvbnNfdG90YWwsCisJCVMucGFyYW00IEFTIGRh dGFiYXNlc19wcm9jZXNzZWQsCisJCVMucGFyYW01IEFTIHJlbGF0aW9uc19wcm9jZXNzZWQs CisJCVMucGFyYW02IEFTIGRhdGFiYXNlc19jdXJyZW50LAorCQlTLnBhcmFtNyBBUyByZWxh dGlvbl9jdXJyZW50LAorCQlTLnBhcmFtOCBBUyByZWxhdGlvbl9jdXJyZW50X2Jsb2NrcywK KwkJUy5wYXJhbTkgQVMgcmVsYXRpb25fY3VycmVudF9ibG9ja3NfcHJvY2Vzc2VkCisJRlJP TSBwZ19zdGF0X2dldF9wcm9ncmVzc19pbmZvKCdEQVRBQ0hFQ0tTVU1TJykgQVMgUworCQlM RUZUIEpPSU4gcGdfZGF0YWJhc2UgRCBPTiBTLmRhdGlkID0gRC5vaWQ7CisKIENSRUFURSBW SUVXIHBnX3VzZXJfbWFwcGluZ3MgQVMKICAgICBTRUxFQ1QKICAgICAgICAgVS5vaWQgICAg ICAgQVMgdW1pZCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvTWFrZWZp bGUgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL01ha2VmaWxlCmluZGV4IDBmNDQzNWQyZDk3 Li4wYzM2NzY1YWNmZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9NYWtl ZmlsZQorKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL01ha2VmaWxlCkBAIC0xOCw2ICsx OCw3IEBAIE9CSlMgPSBcCiAJYmd3b3JrZXIubyBcCiAJYmd3cml0ZXIubyBcCiAJY2hlY2tw b2ludGVyLm8gXAorCWRhdGFjaGVja3N1bXN3b3JrZXIubyBcCiAJZm9ya19wcm9jZXNzLm8g XAogCWludGVycnVwdC5vIFwKIAlsYXVuY2hfYmFja2VuZC5vIFwKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvYmd3b3JrZXIuYwppbmRleCAxMTZkZGY3YjgzNS4uNTcyMGY2NmIwZmQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYworKysgYi9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKQEAgLTE4LDYgKzE4LDcgQEAKICNpbmNsdWRlICJw Z3N0YXQuaCIKICNpbmNsdWRlICJwb3J0L2F0b21pY3MuaCIKICNpbmNsdWRlICJwb3N0bWFz dGVyL2Jnd29ya2VyX2ludGVybmFscy5oIgorI2luY2x1ZGUgInBvc3RtYXN0ZXIvZGF0YWNo ZWNrc3Vtc3dvcmtlci5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvcG9zdG1hc3Rlci5oIgog I2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oIgogI2luY2x1ZGUgInJl cGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIKQEAgLTEzMiw2ICsxMzMsMTIgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdAogCX0sCiAJewogCQkiVGFibGVzeW5jV29ya2VyTWFpbiIsIFRhYmxl c3luY1dvcmtlck1haW4KKwl9LAorCXsKKwkJIkRhdGFDaGVja3N1bXNXb3JrZXJMYXVuY2hl ck1haW4iLCBEYXRhQ2hlY2tzdW1zV29ya2VyTGF1bmNoZXJNYWluCisJfSwKKwl7CisJCSJE YXRhQ2hlY2tzdW1zV29ya2VyTWFpbiIsIERhdGFDaGVja3N1bXNXb3JrZXJNYWluCiAJfQog fTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9kYXRhY2hlY2tzdW1z d29ya2VyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2RhdGFjaGVja3N1bXN3b3JrZXIu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZGU3YTA3N2Y5YzIK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2RhdGFjaGVja3N1 bXN3b3JrZXIuYwpAQCAtMCwwICsxLDEzNzYgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICoKKyAqIGRhdGFjaGVja3N1bXN3b3JrZXIuYworICoJICBCYWNrZ3JvdW5kIHdvcmtlciBm b3IgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIGRhdGEgY2hlY2tzdW1zIG9ubGluZQorICoKKyAq IFdoZW4gZW5hYmxpbmcgZGF0YSBjaGVja3N1bXMgb24gYSBkYXRhYmFzZSBhdCBpbml0ZGIg dGltZSBvciB3aGVuIHNodXQgZG93bgorICogd2l0aCBwZ19jaGVja3N1bXMsIG5vIGV4dHJh IHByb2Nlc3MgaXMgcmVxdWlyZWQgYXMgZWFjaCBwYWdlIGlzIGNoZWNrc3VtbWVkLAorICog YW5kIHZlcmlmaWVkLCB3aGVuIGFjY2Vzc2VkLiAgV2hlbiBlbmFibGluZyBjaGVja3N1bXMg b24gYW4gYWxyZWFkeSBydW5uaW5nCisgKiBjbHVzdGVyLCB0aGlzIHdvcmtlciB3aWxsIGVu c3VyZSB0aGF0IGFsbCBwYWdlcyBhcmUgY2hlY2tzdW1tZWQgYmVmb3JlCisgKiB2ZXJpZmlj YXRpb24gb2YgdGhlIGNoZWNrc3VtcyBpcyB0dXJuZWQgb24uIEluIHRoZSBjYXNlIG9mIGRp c2FibGluZworICogY2hlY2tzdW1zLCB0aGUgc3RhdGUgdHJhbnNpdGlvbiBpcyBwZXJmb3Jt ZWQgb25seSBpbiB0aGUgY29udHJvbCBmaWxlLCBubworICogY2hhbmdlcyBhcmUgcGVyZm9y bWVkIG9uIHRoZSBkYXRhIHBhZ2VzLgorICoKKyAqIENoZWNrc3VtcyBjYW4gYmUgZWl0aGVy IGVuYWJsZWQgb3IgZGlzYWJsZWQgY2x1c3Rlci13aWRlLCB3aXRoIG9uL29mZiBiZWluZwor ICogdGhlIGVuZCBzdGF0ZSBmb3IgZGF0YV9jaGVja3N1bXMuCisgKgorICogRW5hYmxpbmcg Y2hlY2tzdW1zCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFdoZW4gZW5hYmxpbmcgY2hl Y2tzdW1zIGluIGFuIG9ubGluZSBjbHVzdGVyLCBkYXRhX2NoZWNrc3VtcyB3aWxsIGJlIHNl dCB0bworICogImlucHJvZ3Jlc3Mtb24iIHdoaWNoIHNpZ25hbHMgdGhhdCB3cml0ZSBvcGVy YXRpb25zIE1VU1QgY29tcHV0ZSBhbmQgd3JpdGUKKyAqIHRoZSBjaGVja3N1bSBvbiB0aGUg ZGF0YSBwYWdlLCBidXQgZHVyaW5nIHJlYWRpbmcgdGhlIGNoZWNrc3VtIFNIQUxMIE5PVCBi ZQorICogdmVyaWZpZWQuIFRoaXMgZW5zdXJlcyB0aGF0IGFsbCBvYmplY3RzIGNyZWF0ZWQg ZHVyaW5nIGNoZWNrc3VtbWluZyB3aWxsCisgKiBoYXZlIGNoZWNrc3VtcyBzZXQsIGJ1dCBu byByZWFkcyB3aWxsIGZhaWwgZHVlIHRvIGluY29ycmVjdCBjaGVja3N1bS4gVGhlCisgKiBE YXRhQ2hlY2tzdW1zV29ya2VyIHdpbGwgY29tcGlsZSBhIGxpc3Qgb2YgZGF0YWJhc2VzIHdo aWNoIGV4aXN0IGF0IHRoZQorICogc3RhcnQgb2YgY2hlY2tzdW1taW5nLCBhbmQgYWxsIG9m IHRoZXNlIHdoaWNoIGhhdmVuJ3QgYmVlbiBkcm9wcGVkIGR1cmluZworICogdGhlIHByb2Nl c3NpbmcgTVVTVCBoYXZlIGJlZW4gcHJvY2Vzc2VkIHN1Y2Nlc3NmdWxseSBpbiBvcmRlciBm b3IgY2hlY2tzdW1zCisgKiB0byBiZSBlbmFibGVkLiBBbnkgbmV3IHJlbGF0aW9uIGNyZWF0 ZWQgZHVyaW5nIHByb2Nlc3Npbmcgd2lsbCBzZWUgdGhlCisgKiBpbi1wcm9ncmVzcyBzdGF0 ZSBhbmQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNoZWNrc3VtbWVkLgorICoKKyAqIEZvciBl YWNoIGRhdGFiYXNlLCBhbGwgcmVsYXRpb25zIHdoaWNoIGhhdmUgc3RvcmFnZSBhcmUgcmVh ZCBhbmQgZXZlcnkgZGF0YQorICogcGFnZSBpcyBtYXJrZWQgZGlydHkgdG8gZm9yY2UgYSB3 cml0ZSB3aXRoIHRoZSBjaGVja3N1bS4gVGhpcyB3aWxsIGdlbmVyYXRlCisgKiBhIGxvdCBv ZiBXQUwgYXMgdGhlIGVudGlyZSBkYXRhYmFzZSBpcyByZWFkIGFuZCB3cml0dGVuLgorICoK KyAqIElmIHRoZSBwcm9jZXNzaW5nIGlzIGludGVycnVwdGVkIGJ5IGEgY2x1c3RlciByZXN0 YXJ0LCBpdCB3aWxsIGJlIHJlc3RhcnRlZAorICogZnJvbSB0aGUgYmVnaW5uaW5nIGFnYWlu IGFzIHN0YXRlIGlzbid0IHBlcnNpc3RlZC4KKyAqCisgKiBEaXNhYmxpbmcgY2hlY2tzdW1z CisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBXaGVuIGRpc2FibGluZyBjaGVja3N1bXMs IGRhdGFfY2hlY2tzdW1zIHdpbGwgYmUgc2V0IHRvICJpbnByb2dyZXNzLW9mZiIKKyAqIHdo aWNoIHNpZ25hbHMgdGhhdCBjaGVja3N1bXMgYXJlIHdyaXR0ZW4gYnV0IG5vIGxvbmdlciB2 ZXJpZmllZC4gVGhpcyBlbnN1cmUKKyAqIHRoYXQgYmFja2VuZHMgd2hpY2ggaGF2ZSB5ZXQg dG8gbW92ZSBmcm9tIHRoZSAib24iIHN0YXRlIHdpbGwgc3RpbGwgYmUgYWJsZQorICogdG8g cHJvY2VzcyBkYXRhIGNoZWNrc3VtIHZhbGlkYXRpb24uCisgKgorICogU3luY2hyb25pemF0 aW9uIGFuZCBDb3JyZWN0bmVzcworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICogVGhlIHByb2Nlc3NlcyBpbnZvbHZlZCBpbiBlbmFibGluZywgb3IgZGlzYWJsaW5n LCBkYXRhIGNoZWNrc3VtcyBpbiBhbgorICogb25saW5lIGNsdXN0ZXIgbXVzdCBiZSBwcm9w ZXJseSBzeW5jaHJvbml6ZWQgd2l0aCB0aGUgbm9ybWFsIGJhY2tlbmRzCisgKiBzZXJ2aW5n IGNvbmN1cnJlbnQgcXVlcmllcyB0byBlbnN1cmUgY29ycmVjdG5lc3MuIENvcnJlY3RuZXNz IGlzIGRlZmluZWQKKyAqIGFzIHRoZSBmb2xsb3dpbmc6CisgKgorICogICAgLSBCYWNrZW5k cyBTSEFMTCBOT1QgdmlvbGF0ZSBsb2NhbCBkYXRhX2NoZWNrc3VtcyBzdGF0ZQorICogICAg LSBEYXRhIGNoZWNrc3VtcyBTSEFMTCBOT1QgYmUgY29uc2lkZXJlZCBlbmFibGVkIGNsdXN0 ZXItd2lkZSB1bnRpbCBhbGwKKyAqICAgICAgY3VycmVudGx5IGNvbm5lY3RlZCBiYWNrZW5k cyBoYXZlIHRoZSBsb2NhbCBzdGF0ZSAiZW5hYmxlZCIKKyAqCisgKiBUaGVyZSBhcmUgdHdv IGxldmVscyBvZiBzeW5jaHJvbml6YXRpb24gcmVxdWlyZWQgZm9yIGVuYWJsaW5nIGRhdGEg Y2hlY2tzdW1zCisgKiBpbiBhbiBvbmxpbmUgY2x1c3RlcjogKGkpIGNoYW5naW5nIHN0YXRl IGluIHRoZSBhY3RpdmUgYmFja2VuZHMgKCJvbiIsCisgKiAib2ZmIiwgImlucHJvZ3Jlc3Mt b24iIGFuZCAiaW5wcm9ncmVzcy1vZmYiKSwgYW5kIChpaSkgZW5zdXJpbmcgbm8KKyAqIGlu Y29tcGF0aWJsZSBvYmplY3RzIGFuZCBwcm9jZXNzZXMgYXJlIGxlZnQgaW4gYSBkYXRhYmFz ZSB3aGVuIHdvcmtlcnMgZW5kLgorICogVGhlIGZvcm1lciBkZWFscyB3aXRoIGNsdXN0ZXIt d2lkZSBhZ3JlZW1lbnQgb24gZGF0YSBjaGVja3N1bSBzdGF0ZSBhbmQgdGhlCisgKiBsYXR0 ZXIgd2l0aCBlbnN1cmluZyB0aGF0IGFueSBjb25jdXJyZW50IGFjdGl2aXR5IGNhbm5vdCBi cmVhayB0aGUgZGF0YQorICogY2hlY2tzdW0gY29udHJhY3QgZHVyaW5nIHByb2Nlc3Npbmcu CisgKgorICogU3luY2hyb25pemluZyB0aGUgc3RhdGUgY2hhbmdlIGlzIGRvbmUgd2l0aCBw cm9jc2lnbmFsIGJhcnJpZXJzLCB3aGVyZSB0aGUKKyAqIFdBTCBsb2dnaW5nIGJhY2tlbmQg dXBkYXRpbmcgdGhlIGdsb2JhbCBzdGF0ZSBpbiB0aGUgY29udHJvbGZpbGUgd2lsbCB3YWl0 CisgKiBmb3IgYWxsIG90aGVyIGJhY2tlbmRzIHRvIGFic29yYiB0aGUgYmFycmllci4gQmFy cmllciBhYnNvcnB0aW9uIHdpbGwgaGFwcGVuCisgKiBkdXJpbmcgaW50ZXJydXB0IHByb2Nl c3NpbmcsIHdoaWNoIG1lYW5zIHRoYXQgY29ubmVjdGVkIGJhY2tlbmRzIHdpbGwgY2hhbmdl CisgKiBzdGF0ZSBhdCBkaWZmZXJlbnQgdGltZXMuIFRvIHByZXZlbnQgZGF0YSBjaGVja3N1 bSBzdGF0ZSBjaGFuZ2VzIHdoZW4KKyAqIHdyaXRpbmcgYW5kIHZlcmlmeWluZyBjaGVja3N1 bXMsIGludGVycnVwdHMgc2hhbGwgYmUgaGVsZCBvZmYgYmVmb3JlCisgKiBpbnRlcnJvZ2F0 aW5nIHN0YXRlIGFuZCByZXN1bWVkIHdoZW4gdGhlIElPIG9wZXJhdGlvbiBoYXMgYmVlbiBw ZXJmb3JtZWQuCisgKgorICogICBXaGVuIEVuYWJsaW5nIERhdGEgQ2hlY2tzdW1zCisgKiAg IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqICAgQSBwcm9jZXNzIHdoaWNoIGZh aWxzIHRvIG9ic2VydmUgZGF0YSBjaGVja3N1bXMgYmVpbmcgZW5hYmxlZCBjYW4gaW5kdWNl CisgKiAgIHR3byB0eXBlcyBvZiBlcnJvcnM6IGZhaWxpbmcgdG8gd3JpdGUgdGhlIGNoZWNr c3VtIHdoZW4gbW9kaWZ5aW5nIHRoZSBwYWdlCisgKiAgIGFuZCBmYWlsaW5nIHRvIHZhbGlk YXRlIHRoZSBkYXRhIGNoZWNrc3VtIG9uIHRoZSBwYWdlIHdoZW4gcmVhZGluZyBpdC4KKyAq CisgKiAgIFdoZW4gcHJvY2Vzc2luZyBzdGFydHMgYWxsIGJhY2tlbmRzIGJlbG9uZyB0byBv bmUgb2YgdGhlIGJlbG93IHNldHMsIHdpdGgKKyAqICAgb25lIHNldCBiZWluZyBlbXB0eToK KyAqCisgKiAgIEJkOiBCYWNrZW5kcyBpbiAib2ZmIiBzdGF0ZQorICogICBCaTogQmFja2Vu ZHMgaW4gImlucHJvZ3Jlc3Mtb24iIHN0YXRlCisgKgorICogICBJZiBwcm9jZXNzaW5nIGlz IHN0YXJ0ZWQgaW4gYW4gb25saW5lIGNsdXN0ZXIgdGhlbiBhbGwgYmFja2VuZHMgYXJlIGlu IEJkLgorICogICBJZiBwcm9jZXNzaW5nIHdhcyBoYWx0ZWQgYnkgdGhlIGNsdXN0ZXIgc2h1 dHRpbmcgZG93biwgdGhlIGNvbnRyb2xmaWxlCisgKiAgIHN0YXRlICJpbnByb2dyZXNzLW9u IiB3aWxsIGJlIG9ic2VydmVkIG9uIHN5c3RlbSBzdGFydHVwIGFuZCBhbGwgYmFja2VuZHMK KyAqICAgd2lsbCBiZSBpbiBCZC4gQmFja2VuZHMgdHJhbnNpdGlvbiBCZCAtPiBCaSB2aWEg YSBwcm9jc2lnbmFsYmFycmllci4gIFdoZW4KKyAqICAgdGhlIERhdGFDaGVja3N1bXNXb3Jr ZXIgaGFzIGZpbmlzaGVkIHdyaXRpbmcgY2hlY2tzdW1zIG9uIGFsbCBwYWdlcyBhbmQKKyAq ICAgZW5hYmxlcyBkYXRhIGNoZWNrc3VtcyBjbHVzdGVyLXdpZGUsIHRoZXJlIGFyZSBmb3Vy IHNldHMgb2YgYmFja2VuZHMgd2hlcmUKKyAqICAgQmQgc2hhbGwgYmUgYW4gZW1wdHkgc2V0 OgorICoKKyAqICAgQmc6IEJhY2tlbmQgdXBkYXRpbmcgdGhlIGdsb2JhbCBzdGF0ZSBhbmQg ZW1pdHRpbmcgdGhlIHByb2NzaWduYWxiYXJyaWVyCisgKiAgIEJkOiBCYWNrZW5kcyBpbiAi b2ZmIiBzdGF0ZQorICogICBCZTogQmFja2VuZHMgaW4gIm9uIiBzdGF0ZQorICogICBCaTog QmFja2VuZHMgaW4gImlucHJvZ3Jlc3Mtb24iIHN0YXRlCisgKgorICogICBCYWNrZW5kcyBp biBCaSBhbmQgQmUgd2lsbCB3cml0ZSBjaGVja3N1bXMgd2hlbiBtb2RpZnlpbmcgYSBwYWdl LCBidXQgb25seQorICogICBiYWNrZW5kcyBpbiBCZSB3aWxsIHZlcmlmeSB0aGUgY2hlY2tz dW0gZHVyaW5nIHJlYWRpbmcuIFRoZSBCZyBiYWNrZW5kIGlzCisgKiAgIGJsb2NrZWQgd2Fp dGluZyBmb3IgYWxsIGJhY2tlbmRzIGluIEJpIHRvIHByb2Nlc3MgaW50ZXJydXB0cyBhbmQg bW92ZSB0bworICogICBCZS4gQW55IGJhY2tlbmQgc3RhcnRpbmcgd2hpbGUgQmcgaXMgd2Fp dGluZyBvbiB0aGUgcHJvY3NpZ25hbGJhcnJpZXIgd2lsbAorICogICBvYnNlcnZlIHRoZSBn bG9iYWwgc3RhdGUgYmVpbmcgIm9uIiBhbmQgd2lsbCB0aHVzIGF1dG9tYXRpY2FsbHkgYmVs b25nIHRvCisgKiAgIEJlLiAgQ2hlY2tzdW1zIGFyZSBlbmFibGVkIGNsdXN0ZXItd2lkZSB3 aGVuIEJpIGlzIGFuIGVtcHR5IHNldC4gQmkgYW5kIEJlCisgKiAgIGFyZSBjb21wYXRpYmxl IHNldHMgd2hpbGUgc3RpbGwgb3BlcmF0aW5nIGJhc2VkIG9uIHRoZWlyIGxvY2FsIHN0YXRl IGFzCisgKiAgIGJvdGggd3JpdGUgZGF0YSBjaGVja3N1bXMuCisgKgorICogICBXaGVuIERp c2FibGluZyBEYXRhIENoZWNrc3VtcworICogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICogICBBIHByb2Nlc3Mgd2hpY2ggZmFpbHMgdG8gb2JzZXJ2ZSB0aGF0IGRhdGEg Y2hlY2tzdW1zIGhhdmUgYmVlbiBkaXNhYmxlZAorICogICBjYW4gaW5kdWNlIHR3byB0eXBl cyBvZiBlcnJvcnM6IHdyaXRpbmcgdGhlIGNoZWNrc3VtIHdoZW4gbW9kaWZ5aW5nIHRoZQor ICogICBwYWdlIGFuZCB2YWxpZGF0aW5nIGEgZGF0YSBjaGVja3N1bSB3aGljaCBpcyBubyBs b25nZXIgY29ycmVjdCBkdWUgdG8KKyAqICAgbW9kaWZpY2F0aW9ucyB0byB0aGUgcGFnZS4K KyAqCisgKiAgIEJnOiBCYWNrZW5kIHVwZGF0aW5nIHRoZSBnbG9iYWwgc3RhdGUgYW5kIGVt aXR0aW5nIHRoZSBwcm9jc2lnbmFsYmFycmllcgorICogICBCZDogQmFja2VuZHMgaW4gIm9m ZiIgc3RhdGUKKyAqICAgQmU6IEJhY2tlbmRzIGluICJvbiIgc3RhdGUKKyAqICAgQm86IEJh Y2tlbmRzIGluICJpbnByb2dyZXNzLW9mZiIgc3RhdGUKKyAqCisgKiAgIEJhY2tlbmRzIHRy YW5zaXRpb24gZnJvbSB0aGUgQmUgc3RhdGUgdG8gQmQgbGlrZSBzbzogQmUgLT4gQm8gLT4g QmQKKyAqCisgKiAgIFRoZSBnb2FsIGlzIHRvIHRyYW5zaXRpb24gYWxsIGJhY2tlbmRzIHRv IEJkIG1ha2luZyB0aGUgb3RoZXJzIGVtcHR5IHNldHMuCisgKiAgIEJhY2tlbmRzIGluIEJv IHdyaXRlIGRhdGEgY2hlY2tzdW1zLCBidXQgZG9uJ3QgdmFsaWRhdGUgdGhlbSwgc3VjaCB0 aGF0CisgKiAgIGJhY2tlbmRzIHN0aWxsIGluIEJlIGNhbiBjb250aW51ZSB0byB2YWxpZGF0 ZSBwYWdlcyB1bnRpbCB0aGUgYmFycmllciBoYXMKKyAqICAgYmVlbiBhYnNvcmJlZCBzdWNo IHRoYXQgdGhleSBhcmUgaW4gQm8uIE9uY2UgYWxsIGJhY2tlbmRzIGFyZSBpbiBCbywgdGhl CisgKiAgIGJhcnJpZXIgdG8gdHJhbnNpdGlvbiB0byAib2ZmIiBjYW4gYmUgcmFpc2VkIGFu ZCBhbGwgYmFja2VuZHMgY2FuIHNhZmVseQorICogICBzdG9wIHdyaXRpbmcgZGF0YSBjaGVj a3N1bXMgYXMgbm8gYmFja2VuZCBpcyBlbmZvcmNpbmcgZGF0YSBjaGVja3N1bQorICogICB2 YWxpZGF0aW9uIGFueSBsb25nZXIuCisgKgorICoKKyAqIFBvdGVudGlhbCBvcHRpbWl6YXRp b25zCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogQmVsb3cgYXJlIHNvbWUgcG90 ZW50aWFsIG9wdGltaXphdGlvbnMgYW5kIGltcHJvdmVtZW50cyB3aGljaCB3ZXJlIGJyb3Vn aHQKKyAqIHVwIGR1cmluZyByZXZpZXdzIG9mIHRoaXMgZmVhdHVyZSwgYnV0IHdoaWNoIHdl cmVuJ3QgaW1wbGVtZW50ZWQgaW4gdGhlCisgKiBpbml0aWFsIHZlcnNpb24uIFRoZXNlIGFy ZSBpZGVhcyBsaXN0ZWQgd2l0aG91dCBhbnkgdmFsaWRhdGlvbiBvbiB0aGVpcgorICogZmVh c2liaWxpdHkgb3IgcG90ZW50aWFsIHBheW9mZi4gTW9yZSBkaXNjdXNzaW9uIG9uIHRoZXNl IGNhbiBiZSBmb3VuZCBvbgorICogdGhlIC1oYWNrZXJzIHRocmVhZHMgbGlua2VkIHRvIGlu IHRoZSBjb21taXQgbWVzc2FnZSBvZiB0aGlzIGZlYXR1cmUuCisgKgorICogICAqIExhdW5j aGluZyBkYXRhY2hlY2tzdW1zd29ya2VyIGZvciByZXN1bWluZyBvcGVyYXRpb24gZnJvbSB0 aGUgc3RhcnR1cAorICogICAgIHByb2Nlc3M6IEN1cnJlbnRseSB1c2VycyBoYXZlIHRvIHJl c3RhcnQgcHJvY2Vzc2luZyBtYW51YWxseSBhZnRlciBhCisgKiAgICAgcmVzdGFydCBzaW5j ZSBkeW5hbWljIGJhY2tncm91bmQgd29ya2VyIGNhbm5vdCBiZSBzdGFydGVkIGZyb20gdGhl CisgKiAgICAgcG9zdG1hc3Rlci4gQ2hhbmdpbmcgdGhlIHN0YXJ0dXAgcHJvY2VzcyBjb3Vs ZCBtYWtlIHJlc3RhcnRpbmcgdGhlCisgKiAgICAgcHJvY2Vzc2luZyBhdXRvbWF0aWMgb24g Y2x1c3RlciByZXN0YXJ0LgorICogICAqIEF2b2lkIGRpcnR5aW5nIHRoZSBwYWdlIHdoZW4g Y2hlY2tzdW1zIGFscmVhZHkgbWF0Y2g6IElmZiB0aGUgY2hlY2tzdW0KKyAqICAgICBvbiB0 aGUgcGFnZSBoYXBwZW5zIHRvIGFscmVhZHkgbWF0Y2ggd2Ugc3RpbGwgZGlydHkgdGhlIHBh Z2UuIEl0IHNob3VsZAorICogICAgIGJlIGVub3VnaCB0byBvbmx5IGRvIHRoZSBsb2dfbmV3 cGFnZV9idWZmZXIoKSBjYWxsIGluIHRoYXQgY2FzZS4KKyAqICAgKiBJbnZlbnQgYSBsaWdo dHdlaWdodCBXQUwgcmVjb3JkIHRoYXQgZG9lc24ndCBjb250YWluIHRoZSBmdWxsLXBhZ2UK KyAqICAgICBpbWFnZSBidXQganVzdCB0aGUgYmxvY2sgbnVtYmVyOiBPbiByZXBsYXksIHRo ZSByZWRvIHJvdXRpbmUgd291bGQgcmVhZAorICogICAgIHRoZSBwYWdlIGZyb20gZGlzay4K KyAqICAgKiBUZWFjaCBwZ19jaGVja3N1bXMgdG8gYXZvaWQgY2hlY2tzdW1tZWQgcGFnZXMg d2hlbiBwZ19jaGVja3N1bXMgaXMgdXNlZAorICogICAgIHRvIGVuYWJsZSBjaGVja3N1bXMg b24gYSBjbHVzdGVyIHdoaWNoIGlzIGluIGlucHJvZ3Jlc3Mtb24gc3RhdGUgYW5kCisgKiAg ICAgbWF5IGhhdmUgY2hlY2tzdW1tZWQgcGFnZXMgKG1ha2UgcGdfY2hlY2tzdW1zIGJlIGFi bGUgdG8gcmVzdW1lIGFuCisgKiAgICAgb25saW5lIG9wZXJhdGlvbikuCisgKgorICoKKyAq IFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI0LCBQb3N0Z3JlU1FMIEdsb2JhbCBE ZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdl bnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKgorICogSURFTlRJ RklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9kYXRhY2hlY2tzdW1zd29y a2VyLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2luY2x1ZGUgInBvc3Rn cmVzLmgiCisKKyNpbmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIKKyNpbmNsdWRlICJhY2Nlc3Mv aGVhcGFtLmgiCisjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgorI2luY2x1ZGUg ImFjY2Vzcy94YWN0LmgiCisjaW5jbHVkZSAiYWNjZXNzL3hsb2dpbnNlcnQuaCIKKyNpbmNs dWRlICJjYXRhbG9nL2luZGV4aW5nLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19jbGFzcy5o IgorI2luY2x1ZGUgImNhdGFsb2cvcGdfZGF0YWJhc2UuaCIKKyNpbmNsdWRlICJjb21tYW5k cy9wcm9ncmVzcy5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgorI2luY2x1ZGUg ImNvbW1vbi9yZWxwYXRoLmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAi cGdzdGF0LmgiCisjaW5jbHVkZSAicG9zdG1hc3Rlci9iZ3dvcmtlci5oIgorI2luY2x1ZGUg InBvc3RtYXN0ZXIvYmd3cml0ZXIuaCIKKyNpbmNsdWRlICJwb3N0bWFzdGVyL2RhdGFjaGVj a3N1bXN3b3JrZXIuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgorI2luY2x1ZGUg InN0b3JhZ2UvY2hlY2tzdW0uaCIKKyNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgorI2luY2x1 ZGUgInN0b3JhZ2UvbG1nci5oIgorI2luY2x1ZGUgInN0b3JhZ2UvbHdsb2NrLmgiCisjaW5j bHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3NtZ3IuaCIK KyNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCisjaW5jbHVkZSAidXRpbHMvZm1ncm9pZHMu aCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9wc19z dGF0dXMuaCIKKyNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgorCisvKgorICogTnVtYmVy IG9mIHRpbWVzIHdlIHJldHJ5IHRvIG9wZW4gYSBkYXRhYmFzZSBiZWZvcmUgZ2l2aW5nIHVw IGFuZCBjb25zaWRlcgorICogaXQgdG8gaGF2ZSBmYWlsZWQgcHJvY2Vzc2luZy4KKyAqLwor I2RlZmluZSBEQVRBQ0hFQ0tTVU1TV09SS0VSX01BWF9EQl9SRVRSSUVTIDUKKwordHlwZWRl ZiBlbnVtCit7CisJREFUQUNIRUNLU1VNU1dPUktFUl9TVUNDRVNTRlVMID0gMCwKKwlEQVRB Q0hFQ0tTVU1TV09SS0VSX0FCT1JURUQsCisJREFUQUNIRUNLU1VNU1dPUktFUl9GQUlMRUQs CisJREFUQUNIRUNLU1VNU1dPUktFUl9SRVRSWURCLAorfSBEYXRhQ2hlY2tzdW1zV29ya2Vy UmVzdWx0OworCisvKgorICogU2lnbmFsaW5nIGJldHdlZW4gYmFja2VuZHMgY2FsbGluZyBw Z19lbmFibGUvZGlzYWJsZV9kYXRhX2NoZWNrc3VtcywgdGhlCisgKiBjaGVja3N1bXMgbGF1 bmNoZXIgcHJvY2VzcywgYW5kIHRoZSBjaGVja3N1bXMgd29ya2VyIHByb2Nlc3MuCisgKgor ICogVGhpcyBzdHJ1Y3QgaXMgcHJvdGVjdGVkIGJ5IERhdGFDaGVja3N1bXNXb3JrZXJMb2Nr CisgKi8KK3R5cGVkZWYgc3RydWN0IERhdGFDaGVja3N1bXNXb3JrZXJTaG1lbVN0cnVjdAor eworCS8qCisJICogVGhlc2UgYXJlIHNldCBieSBwZ19lbmFibGUvZGlzYWJsZV9kYXRhX2No ZWNrc3VtcywgdG8gdGVsbCB0aGUgbGF1bmNoZXIKKwkgKiB3aGF0IHRoZSB0YXJnZXQgc3Rh dGUgaXMuCisJICovCisJYm9vbAkJbGF1bmNoX2VuYWJsZV9jaGVja3N1bXM7CS8qIFRydWUg aWYgY2hlY2tzdW1zIGFyZSBiZWluZworCQkJCQkJCQkJCQkgKiBlbmFibGVkLCBlbHNlIGZh bHNlICovCisJaW50CQkJbGF1bmNoX2Nvc3RfZGVsYXk7CisJaW50CQkJbGF1bmNoX2Nvc3Rf bGltaXQ7CisJYm9vbAkJbGF1bmNoX2Zhc3Q7CisKKwkvKgorCSAqIElzIGEgbGF1bmNoZXIg cHJvY2VzcyBpcyBjdXJyZW50bHkgcnVubmluZz8KKwkgKgorCSAqIFRoaXMgaXMgc2V0IGJ5 IHRoZSBsYXVuY2hlciBwcm9jZXNzLCBhZnRlciBpdCBoYXMgcmVhZCB0aGUgYWJvdmUKKwkg KiBsYXVuY2hfKiBwYXJhbWV0ZXJzLgorCSAqLworCWJvb2wJCWxhdW5jaGVyX3J1bm5pbmc7 CisKKwkvKgorCSAqIFRoZXNlIGZpZWxkcyBpbmRpY2F0ZSB0aGUgdGFyZ2V0IHN0YXRlIHRo YXQgdGhlIGxhdW5jaGVyIGlzIGN1cnJlbnRseQorCSAqIHdvcmtpbmcgdG93YXJkcy4gVGhl eSBjYW4gYmUgZGlmZmVyZW50IGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgbGF1bmNoXyoKKwkg KiBmaWVsZHMsIGlmIGEgbmV3IHBnX2VuYWJsZS9kaXNhYmxlX2RhdGFfY2hlY2tzdW1zKCkg Y2FsbCB3YXMgbWFkZSB3aGlsZQorCSAqIHRoZSBsYXVuY2hlci93b3JrZXIgd2FzIGFscmVh ZHkgcnVubmluZy4KKwkgKgorCSAqIFRoZSBiZWxvdyBtZW1iZXJzIGFyZSBzZXQgd2hlbiB0 aGUgbGF1bmNoZXIgc3RhcnRzLCBhbmQgYXJlIG9ubHkKKwkgKiBhY2Nlc3NlZCByZWFkLW9u bHkgYnkgdGhlIHNpbmdsZSB3b3JrZXIuIFRodXMsIHdlIGNhbiBhY2Nlc3MgdGhlc2UKKwkg KiB3aXRob3V0IGEgbG9jay4gSWYgbXVsdGlwbGUgd29ya2Vycywgb3IgZHluYW1pYyBjb3N0 IHBhcmFtZXRlcnMsIGFyZQorCSAqIHN1cHBvcnRlZCBhdCBzb21lIHBvaW50IHRoZW4gdGhp cyB3b3VsZCBuZWVkIHRvIGJlIHJldmlzaXRlZC4KKwkgKi8KKwlib29sCQllbmFibGluZ19j aGVja3N1bXM7IC8qIFRydWUgaWYgY2hlY2tzdW1zIGFyZSBiZWluZyBlbmFibGVkLAorCQkJ CQkJCQkJICogZWxzZSBmYWxzZSAqLworCWludAkJCWNvc3RfZGVsYXk7CisJaW50CQkJY29z dF9saW1pdDsKKwlib29sCQlpbW1lZGlhdGVfY2hlY2twb2ludDsKKworCS8qCisJICogU2ln bmFsaW5nIGJldHdlZW4gdGhlIGxhdW5jaGVyIGFuZCB0aGUgd29ya2VyIHByb2Nlc3MuCisJ ICoKKwkgKiBBcyB0aGVyZSBpcyBvbmx5IGEgc2luZ2xlIHdvcmtlciwgYW5kIHRoZSBsYXVu Y2hlciB3b24ndCByZWFkIHRoZXNlCisJICogdW50aWwgdGhlIHdvcmtlciBleGl0cywgdGhl eSBjYW4gYmUgYWNjZXNzZWQgd2l0aG91dCB0aGUgbmVlZCBmb3IgYQorCSAqIGxvY2suIElm IG11bHRpcGxlIHdvcmtlcnMgYXJlIHN1cHBvcnRlZCB0aGVuIHRoaXMgd2lsbCBoYXZlIHRv IGJlCisJICogcmV2aXNpdGVkLgorCSAqLworCisJLyogcmVzdWx0LCBzZXQgYnkgd29ya2Vy IGJlZm9yZSBleGl0aW5nICovCisJRGF0YUNoZWNrc3Vtc1dvcmtlclJlc3VsdCBzdWNjZXNz OworCisJLyoKKwkgKiB0ZWxscyB0aGUgd29ya2VyIHByb2Nlc3Mgd2hldGhlciBpdCBzaG91 bGQgYWxzbyBwcm9jZXNzIHRoZSBzaGFyZWQKKwkgKiBjYXRhbG9ncworCSAqLworCWJvb2wJ CXByb2Nlc3Nfc2hhcmVkX2NhdGFsb2dzOworfSBEYXRhQ2hlY2tzdW1zV29ya2VyU2htZW1T dHJ1Y3Q7CisKKy8qIFNoYXJlZCBtZW1vcnkgc2VnbWVudCBmb3IgZGF0YWNoZWNrc3Vtc3dv cmtlciAqLworc3RhdGljIERhdGFDaGVja3N1bXNXb3JrZXJTaG1lbVN0cnVjdCAqRGF0YUNo ZWNrc3Vtc1dvcmtlclNobWVtOworCisvKiBCb29ra2VlcGluZyBmb3Igd29yayB0byBkbyAq LwordHlwZWRlZiBzdHJ1Y3QgRGF0YUNoZWNrc3Vtc1dvcmtlckRhdGFiYXNlCit7CisJT2lk CQkJZGJvaWQ7CisJY2hhcgkgICAqZGJuYW1lOworfSBEYXRhQ2hlY2tzdW1zV29ya2VyRGF0 YWJhc2U7CisKK3R5cGVkZWYgc3RydWN0IERhdGFDaGVja3N1bXNXb3JrZXJSZXN1bHRFbnRy eQoreworCU9pZAkJCWRib2lkOworCURhdGFDaGVja3N1bXNXb3JrZXJSZXN1bHQgcmVzdWx0 OworCWludAkJCXJldHJpZXM7Cit9IERhdGFDaGVja3N1bXNXb3JrZXJSZXN1bHRFbnRyeTsK KworCisvKgorICogRmxhZyBzZXQgYnkgdGhlIGludGVycnVwdCBoYW5kbGVyCisgKi8KK3N0 YXRpYyB2b2xhdGlsZSBzaWdfYXRvbWljX3QgYWJvcnRfcmVxdWVzdGVkID0gZmFsc2U7CisK Ky8qCisgKiBIYXZlIHdlIHNldCB0aGUgRGF0YUNoZWNrc3Vtc1dvcmtlclNobWVtU3RydWN0 LT5sYXVuY2hlcl9ydW5uaW5nIGZsYWc/CisgKiBJZiB3ZSBoYXZlLCB3ZSBuZWVkIHRvIGNs ZWFyIGl0IGJlZm9yZSBleGl0aW5nIQorICovCitzdGF0aWMgdm9sYXRpbGUgc2lnX2F0b21p Y190IGxhdW5jaGVyX3J1bm5pbmcgPSBmYWxzZTsKKworLyoKKyAqIEFyZSB3ZSBlbmFibGlu ZyBkYXRhIGNoZWNrc3Vtcywgb3IgZGlzYWJsaW5nIHRoZW0/CisgKi8KK3N0YXRpYyBib29s IGVuYWJsaW5nX2NoZWNrc3VtczsKKworLyogUHJvdG90eXBlcyAqLworc3RhdGljIExpc3Qg KkJ1aWxkRGF0YWJhc2VMaXN0KHZvaWQpOworc3RhdGljIExpc3QgKkJ1aWxkUmVsYXRpb25M aXN0KGJvb2wgdGVtcF9yZWxhdGlvbnMsIGJvb2wgaW5jbHVkZV9zaGFyZWQpOworc3RhdGlj IHZvaWQgRnJlZURhdGFiYXNlTGlzdChMaXN0ICpkYmxpc3QpOworc3RhdGljIERhdGFDaGVj a3N1bXNXb3JrZXJSZXN1bHQgUHJvY2Vzc0RhdGFiYXNlKERhdGFDaGVja3N1bXNXb3JrZXJE YXRhYmFzZSAqZGIpOworc3RhdGljIGJvb2wgUHJvY2Vzc0FsbERhdGFiYXNlcyhib29sIGlt bWVkaWF0ZV9jaGVja3BvaW50KTsKK3N0YXRpYyBib29sIFByb2Nlc3NTaW5nbGVSZWxhdGlv bkZvcmsoUmVsYXRpb24gcmVsbiwgRm9ya051bWJlciBmb3JrTnVtLCBCdWZmZXJBY2Nlc3NT dHJhdGVneSBzdHJhdGVneSk7CitzdGF0aWMgdm9pZCBsYXVuY2hlcl9jYW5jZWxfaGFuZGxl cihTSUdOQUxfQVJHUyk7CitzdGF0aWMgdm9pZCBXYWl0Rm9yQWxsVHJhbnNhY3Rpb25zVG9G aW5pc2godm9pZCk7CisKKy8qCisgKiBTdGFydERhdGFDaGVja3N1bXNXb3JrZXJMYXVuY2hl cgorICoJCU1haW4gZW50cnkgcG9pbnQgZm9yIGRhdGFjaGVja3N1bXN3b3JrZXIgbGF1bmNo ZXIgcHJvY2VzcworICoKKyAqIFRoZSBtYWluIGVudHJ5cG9pbnQgZm9yIHN0YXJ0aW5nIGRh dGEgY2hlY2tzdW1zIHByb2Nlc3NpbmcgZm9yIGVuYWJsaW5nIGFzCisgKiB3ZWxsIGFzIGRp c2FibGluZy4KKyAqLwordm9pZAorU3RhcnREYXRhQ2hlY2tzdW1zV29ya2VyTGF1bmNoZXIo Ym9vbCBlbmFibGVfY2hlY2tzdW1zLAorCQkJCQkJCQkgaW50IGNvc3RfZGVsYXksCisJCQkJ CQkJCSBpbnQgY29zdF9saW1pdCwKKwkJCQkJCQkJIGJvb2wgZmFzdCkKK3sKKwlCYWNrZ3Jv dW5kV29ya2VyIGJndzsKKwlCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpiZ3dfaGFuZGxlOwor CWJvb2wJCWxhdW5jaGVyX3J1bm5pbmc7CisKKwkvKiB0aGUgY29zdCBkZWxheSBzZXR0aW5n cyBoYXZlIG5vIGVmZmVjdCB3aGVuIGRpc2FibGluZyAqLworCUFzc2VydChlbmFibGVfY2hl Y2tzdW1zIHx8IGNvc3RfZGVsYXkgPT0gMCk7CisJQXNzZXJ0KGVuYWJsZV9jaGVja3N1bXMg fHwgY29zdF9saW1pdCA9PSAwKTsKKworCS8qIHN0b3JlIHRoZSBkZXNpcmVkIHN0YXRlIGlu IHNoYXJlZCBtZW1vcnkgKi8KKwlMV0xvY2tBY3F1aXJlKERhdGFDaGVja3N1bXNXb3JrZXJM b2NrLCBMV19FWENMVVNJVkUpOworCisJRGF0YUNoZWNrc3Vtc1dvcmtlclNobWVtLT5sYXVu Y2hfZW5hYmxlX2NoZWNrc3VtcyA9IGVuYWJsZV9jaGVja3N1bXM7CisJRGF0YUNoZWNrc3Vt c1dvcmtlclNobWVtLT5sYXVuY2hfY29zdF9kZWxheSA9IGNvc3RfZGVsYXk7CisJRGF0YUNo ZWNrc3Vtc1dvcmtlclNobWVtLT5sYXVuY2hfY29zdF9saW1pdCA9IGNvc3RfbGltaXQ7CisJ RGF0YUNoZWNrc3Vtc1dvcmtlclNobWVtLT5sYXVuY2hfZmFzdCA9IGZhc3Q7CisKKwkvKiBp cyB0aGUgbGF1bmNoZXIgYWxyZWFkeSBydW5uaW5nPyAqLworCWxhdW5jaGVyX3J1bm5pbmcg PSBEYXRhQ2hlY2tzdW1zV29ya2VyU2htZW0tPmxhdW5jaGVyX3J1bm5pbmc7CisKKwlMV0xv Y2tSZWxlYXNlKERhdGFDaGVja3N1bXNXb3JrZXJMb2NrKTsKKworCS8qCisJICogTGF1bmNo IGEgbmV3IGxhdW5jaGVyIHByb2Nlc3MsIGlmIGl0J3Mgbm90IHJ1bm5pbmcgYWxyZWFkeS4K KwkgKgorCSAqIElmIHRoZSBsYXVuY2hlciBpcyBjdXJyZW50bHkgYnVzeSBlbmFibGluZyB0 aGUgY2hlY2tzdW1zLCBhbmQgd2Ugd2FudAorCSAqIHRoZW0gZGlzYWJsZWQgKG9yIHZpY2Ug dmVyc2EpLCB0aGUgbGF1bmNoZXIgd2lsbCBub3RpY2UgdGhhdCBhdCBsYXRlc3QKKwkgKiB3 aGVuIGl0J3MgYWJvdXQgdG8gZXhpdCwgYW5kIHdpbGwgbG9vcCBiYWNrIHByb2Nlc3MgdGhl IG5ldyByZXF1ZXN0LiBTbworCSAqIGlmIHRoZSBsYXVuY2hlciBpcyBhbHJlYWR5IHJ1bm5p bmcsIHdlIGRvbid0IG5lZWQgdG8gZG8gYW55dGhpbmcgbW9yZQorCSAqIGhlcmUgdG8gYWJv cnQgaXQuCisJICoKKwkgKiBJZiB5b3UgY2FsbCBwZ19lbmFibGUvZGlzYWJsZV9kYXRhX2No ZWNrc3VtcygpIHR3aWNlIGluIGEgcm93LCBiZWZvcmUKKwkgKiB0aGUgbGF1bmNoZXIgaGFz IGhhZCBhIGNoYW5jZSB0byBzdGFydCB1cCwgd2Ugc3RpbGwgZW5kIHVwIGxhdW5jaGluZyBp dAorCSAqIHR3aWNlLiAgVGhhdCdzIE9LLCB0aGUgc2Vjb25kIGludm9jYXRpb24gd2lsbCBz ZWUgdGhhdCBhIGxhdW5jaGVyIGlzCisJICogYWxyZWFkeSBydW5uaW5nIGFuZCBleGl0IHF1 aWNrbHkuCisJICoKKwkgKiBUT0RPOiBXZSBjb3VsZCBvcHRpbWl6ZSBoZXJlIGFuZCBza2lw IGxhdW5jaGluZyB0aGUgbGF1bmNoZXIsIGlmIHdlIGFyZQorCSAqIGFscmVhZHkgaW4gdGhl IGRlc2lyZWQgc3RhdGUsIGkuZS4gaWYgdGhlIGNoZWNrc3VtcyBhcmUgYWxyZWFkeSBlbmFi bGVkCisJICogYW5kIHlvdSBjYWxsIHBnX2VuYWJsZV9kYXRhX2NoZWNrc3VtcygpLgorCSAq LworCWlmICghbGF1bmNoZXJfcnVubmluZykKKwl7CisJCS8qCisJCSAqIFByZXBhcmUgdGhl IEJhY2tncm91bmRXb3JrZXIgYW5kIGxhdW5jaCBpdC4KKwkJICovCisJCW1lbXNldCgmYmd3 LCAwLCBzaXplb2YoYmd3KSk7CisJCWJndy5iZ3dfZmxhZ3MgPSBCR1dPUktFUl9TSE1FTV9B Q0NFU1MgfCBCR1dPUktFUl9CQUNLRU5EX0RBVEFCQVNFX0NPTk5FQ1RJT047CisJCWJndy5i Z3dfc3RhcnRfdGltZSA9IEJnV29ya2VyU3RhcnRfUmVjb3ZlcnlGaW5pc2hlZDsKKwkJc25w cmludGYoYmd3LmJnd19saWJyYXJ5X25hbWUsIEJHV19NQVhMRU4sICJwb3N0Z3JlcyIpOwor CQlzbnByaW50ZihiZ3cuYmd3X2Z1bmN0aW9uX25hbWUsIEJHV19NQVhMRU4sICJEYXRhQ2hl Y2tzdW1zV29ya2VyTGF1bmNoZXJNYWluIik7CisJCXNucHJpbnRmKGJndy5iZ3dfbmFtZSwg QkdXX01BWExFTiwgImRhdGFjaGVja3N1bXN3b3JrZXIgbGF1bmNoZXIiKTsKKwkJc25wcmlu dGYoYmd3LmJnd190eXBlLCBCR1dfTUFYTEVOLCAiZGF0YWNoZWNrc3Vtc3dvcmtlciBsYXVu Y2hlciIpOworCQliZ3cuYmd3X3Jlc3RhcnRfdGltZSA9IEJHV19ORVZFUl9SRVNUQVJUOwor CQliZ3cuYmd3X25vdGlmeV9waWQgPSBNeVByb2NQaWQ7CisJCWJndy5iZ3dfbWFpbl9hcmcg PSAoRGF0dW0pIDA7CisKKwkJaWYgKCFSZWdpc3RlckR5bmFtaWNCYWNrZ3JvdW5kV29ya2Vy KCZiZ3csICZiZ3dfaGFuZGxlKSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJtc2co ImZhaWxlZCB0byBzdGFydCBiYWNrZ3JvdW5kIHdvcmtlciB0byBwcm9jZXNzIGRhdGEgY2hl Y2tzdW1zIikpKTsKKwl9Cit9CisKKy8qCisgKiBQcm9jZXNzU2luZ2xlUmVsYXRpb25Gb3Jr CisgKgkJRW5hYmxlIGRhdGEgY2hlY2tzdW1zIGluIGEgc2luZ2xlIHJlbGF0aW9uL2Zvcmsu CisgKgorICogUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwsIGFuZCBmYWxzZSBpZiAqYWJv cnRlZCouIE9uIGVycm9yLCBhbiBhY3R1YWwKKyAqIGVycm9yIGlzIHJhaXNlZCBpbiB0aGUg bG93ZXIgbGV2ZWxzLgorICovCitzdGF0aWMgYm9vbAorUHJvY2Vzc1NpbmdsZVJlbGF0aW9u Rm9yayhSZWxhdGlvbiByZWxuLCBGb3JrTnVtYmVyIGZvcmtOdW0sIEJ1ZmZlckFjY2Vzc1N0 cmF0ZWd5IHN0cmF0ZWd5KQoreworCUJsb2NrTnVtYmVyIG51bWJsb2NrcyA9IFJlbGF0aW9u R2V0TnVtYmVyT2ZCbG9ja3NJbkZvcmsocmVsbiwgZm9ya051bSk7CisJQmxvY2tOdW1iZXIg YmxrbnVtOworCWNoYXIJCWFjdGl2aXR5W05BTUVEQVRBTEVOICogMiArIDEyOF07CisJY2hh cgkgICAqcmVsbnM7CisKKwlyZWxucyA9IGdldF9uYW1lc3BhY2VfbmFtZShSZWxhdGlvbkdl dE5hbWVzcGFjZShyZWxuKSk7CisKKwlpZiAoIXJlbG5zKQorCQlyZXR1cm4gZmFsc2U7CisK KwkvKiBSZXBvcnQgdGhlIGN1cnJlbnQgcmVsYXRpb24gdG8gcGdzdGF0X2FjdGl2aXR5ICov CisJc25wcmludGYoYWN0aXZpdHksIHNpemVvZihhY3Rpdml0eSkgLSAxLCAicHJvY2Vzc2lu ZzogJXMuJXMgKCVzLCAlZGJsb2NrcykiLAorCQkJIHJlbG5zLCBSZWxhdGlvbkdldFJlbGF0 aW9uTmFtZShyZWxuKSwgZm9ya05hbWVzW2ZvcmtOdW1dLCBudW1ibG9ja3MpOworCXBnc3Rh dF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfUlVOTklORywgYWN0aXZpdHkpOworCisJLyoKKwkg KiBXZSBhcmUgbG9vcGluZyBvdmVyIHRoZSBibG9ja3Mgd2hpY2ggZXhpc3RlZCBhdCB0aGUg dGltZSBvZiBwcm9jZXNzCisJICogc3RhcnQsIHdoaWNoIGlzIHNhZmUgc2luY2UgbmV3IGJs b2NrcyBhcmUgY3JlYXRlZCB3aXRoIGNoZWNrc3VtcyBzZXQKKwkgKiBhbHJlYWR5IGR1ZSB0 byB0aGUgc3RhdGUgYmVpbmcgImlucHJvZ3Jlc3Mtb24iLgorCSAqLworCWZvciAoYmxrbnVt ID0gMDsgYmxrbnVtIDwgbnVtYmxvY2tzOyBibGtudW0rKykKKwl7CisJCUJ1ZmZlcgkJYnVm ID0gUmVhZEJ1ZmZlckV4dGVuZGVkKHJlbG4sIGZvcmtOdW0sIGJsa251bSwgUkJNX05PUk1B TCwgc3RyYXRlZ3kpOworCisJCS8qIE5lZWQgdG8gZ2V0IGFuIGV4Y2x1c2l2ZSBsb2NrIGJl Zm9yZSB3ZSBjYW4gZmxhZyBhcyBkaXJ0eSAqLworCQlMb2NrQnVmZmVyKGJ1ZiwgQlVGRkVS X0xPQ0tfRVhDTFVTSVZFKTsKKworCQkvKgorCQkgKiBNYXJrIHRoZSBidWZmZXIgYXMgZGly dHkgYW5kIGZvcmNlIGEgZnVsbCBwYWdlIHdyaXRlLiAgV2UgaGF2ZSB0bworCQkgKiByZS13 cml0ZSB0aGUgcGFnZSB0byBXQUwgZXZlbiBpZiB0aGUgY2hlY2tzdW0gaGFzbid0IGNoYW5n ZWQsCisJCSAqIGJlY2F1c2UgaWYgdGhlcmUgaXMgYSByZXBsaWNhIGl0IG1pZ2h0IGhhdmUg YSBzbGlnaHRseSBkaWZmZXJlbnQKKwkJICogdmVyc2lvbiBvZiB0aGUgcGFnZSB3aXRoIGFu IGludmFsaWQgY2hlY2tzdW0sIGNhdXNlZCBieSB1bmxvZ2dlZAorCQkgKiBjaGFuZ2VzIChl LmcuIGhpbnRiaXRzKSBvbiB0aGUgbWFzdGVyIGhhcHBlbmluZyB3aGlsZSBjaGVja3N1bXMK KwkJICogd2VyZSBvZmYuIFRoaXMgY2FuIGhhcHBlbiBpZiB0aGVyZSB3YXMgYSB2YWxpZCBj aGVja3N1bSBvbiB0aGUgcGFnZQorCQkgKiBhdCBvbmUgcG9pbnQgaW4gdGhlIHBhc3QsIHNv IG9ubHkgd2hlbiBjaGVja3N1bXMgYXJlIGZpcnN0IG9uLCB0aGVuCisJCSAqIG9mZiwgYW5k IHRoZW4gdHVybmVkIG9uIGFnYWluLiBJZmYgd2FsX2xldmVsIGlzIHNldCB0byAibWluaW1h bCIsCisJCSAqIHRoaXMgY291bGQgYmUgYXZvaWRlZCBpZmYgdGhlIGNoZWNrc3VtIGlzIGNh bGN1bGF0ZWQgdG8gYmUgY29ycmVjdC4KKwkJICovCisJCVNUQVJUX0NSSVRfU0VDVElPTigp OworCQlNYXJrQnVmZmVyRGlydHkoYnVmKTsKKwkJbG9nX25ld3BhZ2VfYnVmZmVyKGJ1Ziwg ZmFsc2UpOworCQlFTkRfQ1JJVF9TRUNUSU9OKCk7CisKKwkJVW5sb2NrUmVsZWFzZUJ1ZmZl cihidWYpOworCisJCS8qCisJCSAqIFRoaXMgaXMgdGhlIG9ubHkgcGxhY2Ugd2hlcmUgd2Ug Y2hlY2sgaWYgd2UgYXJlIGFza2VkIHRvIGFib3J0LCB0aGUKKwkJICogYWJvcnRpb24gd2ls bCBidWJibGUgdXAgZnJvbSBoZXJlLiBJdCdzIHNhZmUgdG8gY2hlY2sgdGhpcyB3aXRob3V0 CisJCSAqIGEgbG9jaywgYmVjYXVzZSBpZiB3ZSBtaXNzIGl0IGJlaW5nIHNldCwgd2Ugd2ls bCB0cnkgYWdhaW4gc29vbi4KKwkJICovCisJCUFzc2VydChlbmFibGluZ19jaGVja3N1bXMp OworCQlpZiAoIURhdGFDaGVja3N1bXNXb3JrZXJTaG1lbS0+bGF1bmNoX2VuYWJsZV9jaGVj a3N1bXMpCisJCQlhYm9ydF9yZXF1ZXN0ZWQgPSB0cnVlOworCQlpZiAoYWJvcnRfcmVxdWVz dGVkKQorCQkJcmV0dXJuIGZhbHNlOworCisJCXZhY3V1bV9kZWxheV9wb2ludCgpOworCX0K KworCXBmcmVlKHJlbG5zKTsKKwlyZXR1cm4gdHJ1ZTsKK30KKworLyoKKyAqIFByb2Nlc3NT aW5nbGVSZWxhdGlvbkJ5T2lkCisgKgkJUHJvY2VzcyBhIHNpbmdsZSByZWxhdGlvbiBiYXNl ZCBvbiBvaWQuCisgKgorICogUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwsIGFuZCBmYWxz ZSBpZiAqYWJvcnRlZCouIE9uIGVycm9yLCBhbiBhY3R1YWwKKyAqIGVycm9yIGlzIHJhaXNl ZCBpbiB0aGUgbG93ZXIgbGV2ZWxzLgorICovCitzdGF0aWMgYm9vbAorUHJvY2Vzc1Npbmds ZVJlbGF0aW9uQnlPaWQoT2lkIHJlbGF0aW9uSWQsIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0 cmF0ZWd5KQoreworCVJlbGF0aW9uCXJlbDsKKwlGb3JrTnVtYmVyCWZudW07CisJYm9vbAkJ YWJvcnRlZCA9IGZhbHNlOworCisJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCXJl bCA9IHRyeV9yZWxhdGlvbl9vcGVuKHJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJ aWYgKHJlbCA9PSBOVUxMKQorCXsKKwkJLyoKKwkJICogUmVsYXRpb24gbm8gbG9uZ2VyIGV4 aXN0cy4gV2UgZG9uJ3QgY29uc2lkZXIgdGhpcyBhbiBlcnJvciBzaW5jZQorCQkgKiB0aGVy ZSBhcmUgbm8gcGFnZXMgaW4gaXQgdGhhdCBuZWVkIGRhdGEgY2hlY2tzdW1zLCBhbmQgdGh1 cyByZXR1cm4KKwkJICogdHJ1ZS4gVGhlIHdvcmtlciBvcGVyYXRlcyBvZmYgYSBsaXN0IG9m IHJlbGF0aW9ucyBnZW5lcmF0ZWQgYXQgdGhlCisJCSAqIHN0YXJ0IG9mIHByb2Nlc3Npbmcs IHNvIHJlbGF0aW9ucyBiZWluZyBkcm9wcGVkIGluIHRoZSBtZWFudGltZSBpcworCQkgKiB0 byBiZSBleHBlY3RlZC4KKwkJICovCisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwor CQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5VTEwpOworCQlyZXR1cm4g dHJ1ZTsKKwl9CisJUmVsYXRpb25HZXRTbWdyKHJlbCk7CisKKwlmb3IgKGZudW0gPSAwOyBm bnVtIDw9IE1BWF9GT1JLTlVNOyBmbnVtKyspCisJeworCQlpZiAoc21ncmV4aXN0cyhyZWwt PnJkX3NtZ3IsIGZudW0pKQorCQl7CisJCQlpZiAoIVByb2Nlc3NTaW5nbGVSZWxhdGlvbkZv cmsocmVsLCBmbnVtLCBzdHJhdGVneSkpCisJCQl7CisJCQkJYWJvcnRlZCA9IHRydWU7CisJ CQkJYnJlYWs7CisJCQl9CisJCX0KKwl9CisJcmVsYXRpb25fY2xvc2UocmVsLCBBY2Nlc3NT aGFyZUxvY2spOworCWVsb2coREVCVUcyLAorCQkgImRhdGEgY2hlY2tzdW0gcHJvY2Vzc2lu ZyBkb25lIGZvciByZWxhdGlvbiB3aXRoIE9JRCAldTogJXMiLAorCQkgcmVsYXRpb25JZCwg KGFib3J0ZWQgPyAiYWJvcnRlZCIgOiAiZmluaXNoZWQiKSk7CisKKwlDb21taXRUcmFuc2Fj dGlvbkNvbW1hbmQoKTsKKworCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRSwg TlVMTCk7CisKKwlyZXR1cm4gIWFib3J0ZWQ7Cit9CisKKy8qCisgKiBQcm9jZXNzRGF0YWJh c2UKKyAqCQlFbmFibGUgZGF0YSBjaGVja3N1bXMgaW4gYSBzaW5nbGUgZGF0YWJhc2UuCisg KgorICogV2UgZG8gdGhpcyBieSBsYXVuY2hpbmcgYSBkeW5hbWljIGJhY2tncm91bmQgd29y a2VyIGludG8gdGhpcyBkYXRhYmFzZSwgYW5kCisgKiB3YWl0aW5nIGZvciBpdCB0byBmaW5p c2guICBXZSBoYXZlIHRvIGRvIHRoaXMgaW4gYSBzZXBhcmF0ZSB3b3JrZXIsIHNpbmNlCisg KiBlYWNoIHByb2Nlc3MgY2FuIG9ubHkgYmUgY29ubmVjdGVkIHRvIG9uZSBkYXRhYmFzZSBk dXJpbmcgaXRzIGxpZmV0aW1lLgorICovCitzdGF0aWMgRGF0YUNoZWNrc3Vtc1dvcmtlclJl c3VsdAorUHJvY2Vzc0RhdGFiYXNlKERhdGFDaGVja3N1bXNXb3JrZXJEYXRhYmFzZSAqZGIp Cit7CisJQmFja2dyb3VuZFdvcmtlciBiZ3c7CisJQmFja2dyb3VuZFdvcmtlckhhbmRsZSAq Ymd3X2hhbmRsZTsKKwlCZ3dIYW5kbGVTdGF0dXMgc3RhdHVzOworCXBpZF90CQlwaWQ7CisJ Y2hhcgkJYWN0aXZpdHlbTkFNRURBVEFMRU4gKyA2NF07CisKKwlEYXRhQ2hlY2tzdW1zV29y a2VyU2htZW0tPnN1Y2Nlc3MgPSBEQVRBQ0hFQ0tTVU1TV09SS0VSX0ZBSUxFRDsKKworCW1l bXNldCgmYmd3LCAwLCBzaXplb2YoYmd3KSk7CisJYmd3LmJnd19mbGFncyA9IEJHV09SS0VS X1NITUVNX0FDQ0VTUyB8IEJHV09SS0VSX0JBQ0tFTkRfREFUQUJBU0VfQ09OTkVDVElPTjsK KwliZ3cuYmd3X3N0YXJ0X3RpbWUgPSBCZ1dvcmtlclN0YXJ0X1JlY292ZXJ5RmluaXNoZWQ7 CisJc25wcmludGYoYmd3LmJnd19saWJyYXJ5X25hbWUsIEJHV19NQVhMRU4sICJwb3N0Z3Jl cyIpOworCXNucHJpbnRmKGJndy5iZ3dfZnVuY3Rpb25fbmFtZSwgQkdXX01BWExFTiwgIiVz IiwgIkRhdGFDaGVja3N1bXNXb3JrZXJNYWluIik7CisJc25wcmludGYoYmd3LmJnd19uYW1l LCBCR1dfTUFYTEVOLCAiZGF0YWNoZWNrc3Vtc3dvcmtlciB3b3JrZXIiKTsKKwlzbnByaW50 ZihiZ3cuYmd3X3R5cGUsIEJHV19NQVhMRU4sICJkYXRhY2hlY2tzdW1zd29ya2VyIHdvcmtl ciIpOworCWJndy5iZ3dfcmVzdGFydF90aW1lID0gQkdXX05FVkVSX1JFU1RBUlQ7CisJYmd3 LmJnd19ub3RpZnlfcGlkID0gTXlQcm9jUGlkOworCWJndy5iZ3dfbWFpbl9hcmcgPSBPYmpl Y3RJZEdldERhdHVtKGRiLT5kYm9pZCk7CisKKwkvKgorCSAqIElmIHRoZXJlIGFyZSBubyB3 b3JrZXIgc2xvdHMgYXZhaWxhYmxlLCBtYWtlIHN1cmUgd2UgcmV0cnkgcHJvY2Vzc2luZwor CSAqIHRoaXMgZGF0YWJhc2UuIFRoaXMgd2lsbCBtYWtlIHRoZSBkYXRhY2hlY2tzdW1zd29y a2VyIG1vdmUgb24gdG8gdGhlCisJICogbmV4dCBkYXRhYmFzZSBhbmQgcXVpdGUgbGlrZWx5 IGZhaWwgd2l0aCB0aGUgc2FtZSBwcm9ibGVtLiBUT0RPOiBNYXliZQorCSAqIHdlIG5lZWQg YSBiYWNrb2ZmIHRvIGF2b2lkIHJ1bm5pbmcgdGhyb3VnaCBhbGwgdGhlIGRhdGFiYXNlcyBo ZXJlIGluCisJICogc2hvcnQgb3JkZXIuCisJICovCisJaWYgKCFSZWdpc3RlckR5bmFtaWNC YWNrZ3JvdW5kV29ya2VyKCZiZ3csICZiZ3dfaGFuZGxlKSkKKwl7CisJCWVyZXBvcnQoV0FS TklORywKKwkJCQkoZXJybXNnKCJmYWlsZWQgdG8gc3RhcnQgd29ya2VyIGZvciBlbmFibGlu ZyBkYXRhIGNoZWNrc3VtcyBpbiBkYXRhYmFzZSBcIiVzXCIsIHJldHJ5aW5nIiwKKwkJCQkJ CWRiLT5kYm5hbWUpLAorCQkJCSBlcnJoaW50KCJUaGUgbWF4X3dvcmtlcl9wcm9jZXNzZXMg c2V0dGluZyBtaWdodCBiZSB0b28gbG93LiIpKSk7CisJCXJldHVybiBEQVRBQ0hFQ0tTVU1T V09SS0VSX1JFVFJZREI7CisJfQorCisJc3RhdHVzID0gV2FpdEZvckJhY2tncm91bmRXb3Jr ZXJTdGFydHVwKGJnd19oYW5kbGUsICZwaWQpOworCWlmIChzdGF0dXMgPT0gQkdXSF9TVE9Q UEVEKQorCXsKKwkJZXJlcG9ydChXQVJOSU5HLAorCQkJCShlcnJtc2coImNvdWxkIG5vdCBz dGFydCBiYWNrZ3JvdW5kIHdvcmtlciBmb3IgZW5hYmxpbmcgZGF0YSBjaGVja3N1bXMgaW4g ZGF0YWJhc2UgXCIlc1wiIiwKKwkJCQkJCWRiLT5kYm5hbWUpLAorCQkJCSBlcnJoaW50KCJN b3JlIGRldGFpbHMgb24gdGhlIGVycm9yIG1pZ2h0IGJlIGZvdW5kIGluIHRoZSBzZXJ2ZXIg bG9nLiIpKSk7CisJCXJldHVybiBEQVRBQ0hFQ0tTVU1TV09SS0VSX0ZBSUxFRDsKKwl9CisK KwkvKgorCSAqIElmIHRoZSBwb3N0bWFzdGVyIGNyYXNoZWQgd2UgY2Fubm90IGVuZCB1cCB3 aXRoIGEgcHJvY2Vzc2VkIGRhdGFiYXNlIHNvCisJICogd2UgaGF2ZSBubyBhbHRlcm5hdGl2 ZSBvdGhlciB0aGFuIGV4aXRpbmcuIFdoZW4gZW5hYmxpbmcgY2hlY2tzdW1zIHdlCisJICog d29uJ3QgYXQgdGhpcyB0aW1lIGhhdmUgY2hhbmdlZCB0aGUgcGdfY29udHJvbCB2ZXJzaW9u IHRvIGVuYWJsZWQgc28KKwkgKiB3aGVuIHRoZSBjbHVzdGVyIGNvbWVzIGJhY2sgdXAgcHJv Y2Vzc2luZyB3aWxsIGhhdmUgdG8gYmUgcmVzdGFydGVkLgorCSAqIFdoZW4gZGlzYWJsaW5n LCB0aGUgcGdfY29udHJvbCB2ZXJzaW9uIHdpbGwgYmUgc2V0IHRvIG9mZiBiZWZvcmUgdGhp cworCSAqIHNvIHdoZW4gdGhlIGNsdXN0ZXIgY29tZXMgdXAgY2hlY2tzdW1zIHdpbGwgYmUg b2ZmIGFzIGV4cGVjdGVkLgorCSAqLworCWlmIChzdGF0dXMgPT0gQkdXSF9QT1NUTUFTVEVS X0RJRUQpCisJCWVyZXBvcnQoRkFUQUwsCisJCQkJKGVycm1zZygiY2Fubm90IGVuYWJsZSBk YXRhIGNoZWNrc3VtcyB3aXRob3V0IHRoZSBwb3N0bWFzdGVyIHByb2Nlc3MiKSwKKwkJCQkg ZXJyaGludCgiUmVzdGFydCB0aGUgZGF0YWJhc2UgYW5kIHJlc3RhcnQgZGF0YSBjaGVja3N1 bSBwcm9jZXNzaW5nIGJ5IGNhbGxpbmcgcGdfZW5hYmxlX2RhdGFfY2hlY2tzdW1zKCkuIikp KTsKKworCUFzc2VydChzdGF0dXMgPT0gQkdXSF9TVEFSVEVEKTsKKwllcmVwb3J0KERFQlVH MSwKKwkJCShlcnJtc2coImluaXRpYXRpbmcgZGF0YSBjaGVja3N1bSBwcm9jZXNzaW5nIGlu IGRhdGFiYXNlIFwiJXNcIiIsCisJCQkJCWRiLT5kYm5hbWUpKSk7CisKKwlzbnByaW50Zihh Y3Rpdml0eSwgc2l6ZW9mKGFjdGl2aXR5KSAtIDEsCisJCQkgIldhaXRpbmcgZm9yIHdvcmtl ciBpbiBkYXRhYmFzZSAlcyAocGlkICVkKSIsIGRiLT5kYm5hbWUsIHBpZCk7CisJcGdzdGF0 X3JlcG9ydF9hY3Rpdml0eShTVEFURV9SVU5OSU5HLCBhY3Rpdml0eSk7CisKKwlzdGF0dXMg PSBXYWl0Rm9yQmFja2dyb3VuZFdvcmtlclNodXRkb3duKGJnd19oYW5kbGUpOworCWlmIChz dGF0dXMgPT0gQkdXSF9QT1NUTUFTVEVSX0RJRUQpCisJCWVyZXBvcnQoRkFUQUwsCisJCQkJ KGVycm1zZygicG9zdG1hc3RlciBleGl0ZWQgZHVyaW5nIGRhdGEgY2hlY2tzdW0gcHJvY2Vz c2luZyBpbiBcIiVzXCIiLAorCQkJCQkJZGItPmRibmFtZSksCisJCQkJIGVycmhpbnQoIlJl c3RhcnQgdGhlIGRhdGFiYXNlIGFuZCByZXN0YXJ0IGRhdGEgY2hlY2tzdW0gcHJvY2Vzc2lu ZyBieSBjYWxsaW5nIHBnX2VuYWJsZV9kYXRhX2NoZWNrc3VtcygpLiIpKSk7CisKKwlpZiAo RGF0YUNoZWNrc3Vtc1dvcmtlclNobWVtLT5zdWNjZXNzID09IERBVEFDSEVDS1NVTVNXT1JL RVJfQUJPUlRFRCkKKwkJZXJlcG9ydChMT0csCisJCQkJKGVycm1zZygiZGF0YSBjaGVja3N1 bXMgcHJvY2Vzc2luZyB3YXMgYWJvcnRlZCBpbiBkYXRhYmFzZSBcIiVzXCIiLAorCQkJCQkJ ZGItPmRibmFtZSkpKTsKKworCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRSwg TlVMTCk7CisKKwlyZXR1cm4gRGF0YUNoZWNrc3Vtc1dvcmtlclNobWVtLT5zdWNjZXNzOwor fQorCisvKgorICogbGF1bmNoZXJfZXhpdAorICoKKyAqIEludGVybmFsIHJvdXRpbmUgZm9y IGNsZWFuaW5nIHVwIHN0YXRlIHdoZW4gdGhlIGxhdW5jaGVyIHByb2Nlc3MgZXhpdHMuIFdl CisgKiBuZWVkIHRvIGNsZWFuIHVwIHRoZSBhYm9ydCBmbGFnIHRvIGVuc3VyZSB0aGF0IHBy b2Nlc3NpbmcgY2FuIGJlIHJlc3RhcnRlZAorICogYWdhaW4gYWZ0ZXIgaXQgd2FzIHByZXZp b3VzbHkgYWJvcnRlZC4KKyAqLworc3RhdGljIHZvaWQKK2xhdW5jaGVyX2V4aXQoaW50IGNv ZGUsIERhdHVtIGFyZykKK3sKKwlpZiAobGF1bmNoZXJfcnVubmluZykKKwl7CisJCUxXTG9j a0FjcXVpcmUoRGF0YUNoZWNrc3Vtc1dvcmtlckxvY2ssIExXX0VYQ0xVU0lWRSk7CisJCWxh dW5jaGVyX3J1bm5pbmcgPSBmYWxzZTsKKwkJRGF0YUNoZWNrc3Vtc1dvcmtlclNobWVtLT5s YXVuY2hlcl9ydW5uaW5nID0gZmFsc2U7CisJCUxXTG9ja1JlbGVhc2UoRGF0YUNoZWNrc3Vt c1dvcmtlckxvY2spOworCX0KK30KKworLyoKKyAqIGxhdW5jaGVyX2NhbmNlbF9oYW5kbGVy CisgKgorICogSW50ZXJuYWwgcm91dGluZSBmb3IgcmVhY3RpbmcgdG8gU0lHSU5UIGFuZCBm bGFnZ2luZyB0aGUgd29ya2VyIHRvIGFib3J0LgorICogVGhlIHdvcmtlciB3b24ndCBiZSBp bnRlcnJ1cHRlZCBpbW1lZGlhdGVseSBidXQgd2lsbCBjaGVjayBmb3IgYWJvcnQgZmxhZwor ICogYmV0d2VlbiBlYWNoIGJsb2NrIGluIGEgcmVsYXRpb24uCisgKi8KK3N0YXRpYyB2b2lk CitsYXVuY2hlcl9jYW5jZWxfaGFuZGxlcihTSUdOQUxfQVJHUykKK3sKKwlpbnQJCQlzYXZl X2Vycm5vID0gZXJybm87CisKKwlhYm9ydF9yZXF1ZXN0ZWQgPSB0cnVlOworCisJLyoKKwkg KiBUaGVyZSBpcyBubyBzbGVlcGluZyBpbiB0aGUgbWFpbiBsb29wLCB0aGUgZmxhZyB3aWxs IGJlIGNoZWNrZWQKKwkgKiBwZXJpb2RpY2FsbHkgaW4gUHJvY2Vzc1NpbmdsZVJlbGF0aW9u Rm9yay4gVGhlIHdvcmtlciBkb2VzIGhvd2V2ZXIKKwkgKiBzbGVlcCB3aGVuIHdhaXRpbmcg Zm9yIGNvbmN1cnJlbnQgdHJhbnNhY3Rpb25zIHRvIGVuZCBzbyB3ZSBzdGlsbCBuZWVkCisJ ICogdG8gc2V0IHRoZSBsYXRjaC4KKwkgKi8KKwlTZXRMYXRjaChNeUxhdGNoKTsKKworCWVy cm5vID0gc2F2ZV9lcnJubzsKK30KKworLyoKKyAqIFdhaXRGb3JBbGxUcmFuc2FjdGlvbnNU b0ZpbmlzaAorICoJCUJsb2NrcyBhd2FpdGluZyBhbGwgY3VycmVudCB0cmFuc2FjdGlvbnMg dG8gZmluaXNoCisgKgorICogUmV0dXJucyB3aGVuIGFsbCB0cmFuc2FjdGlvbnMgd2hpY2gg YXJlIGFjdGl2ZSBhdCB0aGUgY2FsbCBvZiB0aGUgZnVuY3Rpb24KKyAqIGhhdmUgZW5kZWQs IG9yIGlmIHRoZSBwb3N0bWFzdGVyIGRpZXMgd2hpbGUgd2FpdGluZy4gSWYgdGhlIHBvc3Rt YXN0ZXIgZGllcworICogdGhlIGFib3J0IGZsYWcgd2lsbCBiZSBzZXQgdG8gaW5kaWNhdGUg dGhhdCB0aGUgY2FsbGVyIG9mIHRoaXMgc2hvdWxkbid0CisgKiBwcm9jZWVkLgorICoKKyAq IE5COiB0aGlzIHdpbGwgcmV0dXJuIGVhcmx5LCBpZiBhYm9ydGVkIGJ5IFNJR0lOVCBvciBp ZiB0aGUgdGFyZ2V0IHN0YXRlCisgKiBpcyBjaGFuZ2VkIHdoaWxlIHdlJ3JlIHJ1bm5pbmcu CisgKi8KK3N0YXRpYyB2b2lkCitXYWl0Rm9yQWxsVHJhbnNhY3Rpb25zVG9GaW5pc2godm9p ZCkKK3sKKwlUcmFuc2FjdGlvbklkIHdhaXRmb3J4aWQ7CisKKwlMV0xvY2tBY3F1aXJlKFhp ZEdlbkxvY2ssIExXX1NIQVJFRCk7CisJd2FpdGZvcnhpZCA9IFhpZEZyb21GdWxsVHJhbnNh Y3Rpb25JZChUcmFuc2FtVmFyaWFibGVzLT5uZXh0WGlkKTsKKwlMV0xvY2tSZWxlYXNlKFhp ZEdlbkxvY2spOworCisJd2hpbGUgKFRyYW5zYWN0aW9uSWRQcmVjZWRlcyhHZXRPbGRlc3RB Y3RpdmVUcmFuc2FjdGlvbklkKCksIHdhaXRmb3J4aWQpKQorCXsKKwkJY2hhcgkJYWN0aXZp dHlbNjRdOworCQlpbnQJCQlyYzsKKworCQkvKiBPbGRlc3QgcnVubmluZyB4aWQgaXMgb2xk ZXIgdGhhbiB1cywgc28gd2FpdCAqLworCQlzbnByaW50ZihhY3Rpdml0eSwKKwkJCQkgc2l6 ZW9mKGFjdGl2aXR5KSwKKwkJCQkgIldhaXRpbmcgZm9yIGN1cnJlbnQgdHJhbnNhY3Rpb25z IHRvIGZpbmlzaCAod2FpdGluZyBmb3IgJXUpIiwKKwkJCQkgd2FpdGZvcnhpZCk7CisJCXBn c3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfUlVOTklORywgYWN0aXZpdHkpOworCisJCS8q IFJldHJ5IGV2ZXJ5IDUgc2Vjb25kcyAqLworCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQly YyA9IFdhaXRMYXRjaChNeUxhdGNoLAorCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBXTF9USU1F T1VUIHwgV0xfUE9TVE1BU1RFUl9ERUFUSCwKKwkJCQkJICAgNTAwMCwKKwkJCQkJICAgV0FJ VF9FVkVOVF9DSEVDS1NVTV9FTkFCTEVfU1RBUlRDT05ESVRJT04pOworCisJCS8qCisJCSAq IElmIHRoZSBwb3N0bWFzdGVyIGRpZWQgd2Ugd29uJ3QgYmUgYWJsZSB0byBlbmFibGUgY2hl Y2tzdW1zCisJCSAqIGNsdXN0ZXItd2lkZSBzbyBhYm9ydCBhbmQgaG9wZSB0byBjb250aW51 ZSB3aGVuIHJlc3RhcnRlZC4KKwkJICovCisJCWlmIChyYyAmIFdMX1BPU1RNQVNURVJfREVB VEgpCisJCQllcmVwb3J0KEZBVEFMLAorCQkJCQkoZXJybXNnKCJwb3N0bWFzdGVyIGV4aXRl ZCBkdXJpbmcgZGF0YSBjaGVja3N1bSBwcm9jZXNzaW5nIiksCisJCQkJCSBlcnJoaW50KCJS ZXN0YXJ0IHRoZSBkYXRhYmFzZSBhbmQgcmVzdGFydCBkYXRhIGNoZWNrc3VtIHByb2Nlc3Np bmcgYnkgY2FsbGluZyBwZ19lbmFibGVfZGF0YV9jaGVja3N1bXMoKS4iKSkpOworCisJCUxX TG9ja0FjcXVpcmUoRGF0YUNoZWNrc3Vtc1dvcmtlckxvY2ssIExXX1NIQVJFRCk7CisJCWlm IChEYXRhQ2hlY2tzdW1zV29ya2VyU2htZW0tPmxhdW5jaF9lbmFibGVfY2hlY2tzdW1zICE9 IGVuYWJsaW5nX2NoZWNrc3VtcykKKwkJCWFib3J0X3JlcXVlc3RlZCA9IHRydWU7CisJCUxX TG9ja1JlbGVhc2UoRGF0YUNoZWNrc3Vtc1dvcmtlckxvY2spOworCQlpZiAoYWJvcnRfcmVx dWVzdGVkKQorCQkJYnJlYWs7CisJfQorCisJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFU RV9JRExFLCBOVUxMKTsKKwlyZXR1cm47Cit9CisKKy8qCisgKiBEYXRhQ2hlY2tzdW1zV29y a2VyTGF1bmNoZXJNYWluCisgKgorICogTWFpbiBmdW5jdGlvbiBmb3IgbGF1bmNoaW5nIGR5 bmFtaWMgYmFja2dyb3VuZCB3b3JrZXJzIGZvciBwcm9jZXNzaW5nIGRhdGEKKyAqIGNoZWNr c3VtcyBpbiBkYXRhYmFzZXMuIFRoaXMgZnVuY3Rpb24gaGFzIHRoZSBiZ3dvcmtlciBtYW5h Z2VtZW50LCB3aXRoCisgKiBQcm9jZXNzQWxsRGF0YWJhc2VzIGJlaW5nIHJlc3BvbnNpYmxl IGZvciBsb29waW5nIG92ZXIgdGhlIGRhdGFiYXNlcyBhbmQKKyAqIGluaXRpYXRpbmcgcHJv Y2Vzc2luZy4KKyAqLwordm9pZAorRGF0YUNoZWNrc3Vtc1dvcmtlckxhdW5jaGVyTWFpbihE YXR1bSBhcmcpCit7CisJb25fc2htZW1fZXhpdChsYXVuY2hlcl9leGl0LCAwKTsKKworCWVy ZXBvcnQoREVCVUcxLAorCQkJZXJybXNnKCJiYWNrZ3JvdW5kIHdvcmtlciBcImRhdGFjaGVj a3N1bXN3b3JrZXJcIiBsYXVuY2hlciBzdGFydGVkIikpOworCisJcHFzaWduYWwoU0lHVEVS TSwgZGllKTsKKwlwcXNpZ25hbChTSUdJTlQsIGxhdW5jaGVyX2NhbmNlbF9oYW5kbGVyKTsK KworCUJhY2tncm91bmRXb3JrZXJVbmJsb2NrU2lnbmFscygpOworCisJTXlCYWNrZW5kVHlw ZSA9IEJfREFUQUNIRUNLU1VNU1dPUktFUl9MQVVOQ0hFUjsKKwlpbml0X3BzX2Rpc3BsYXko TlVMTCk7CisKKwlMV0xvY2tBY3F1aXJlKERhdGFDaGVja3N1bXNXb3JrZXJMb2NrLCBMV19F WENMVVNJVkUpOworCisJaWYgKERhdGFDaGVja3N1bXNXb3JrZXJTaG1lbS0+bGF1bmNoZXJf cnVubmluZykKKwl7CisJCS8qIExhdW5jaGVyIHdhcyBhbHJlYWR5IHJ1bm5pbmcsIGxldCBp dCBmaW5pc2ggKi8KKwkJTFdMb2NrUmVsZWFzZShEYXRhQ2hlY2tzdW1zV29ya2VyTG9jayk7 CisJCXJldHVybjsKKwl9CisKKwlsYXVuY2hlcl9ydW5uaW5nID0gdHJ1ZTsKKworCS8qCisJ ICogSW5pdGlhbGl6ZSBhIGNvbm5lY3Rpb24gdG8gc2hhcmVkIGNhdGFsb2dzIG9ubHkuCisJ ICovCisJQmFja2dyb3VuZFdvcmtlckluaXRpYWxpemVDb25uZWN0aW9uQnlPaWQoSW52YWxp ZE9pZCwgSW52YWxpZE9pZCwgMCk7CisKKwkvKiBJbml0aWFsaXplIGJhY2tlbmQgc3RhdHVz IGluZm9ybWF0aW9uICovCisJcGdzdGF0X2Jlc3RhcnQoKTsKKworCWVuYWJsaW5nX2NoZWNr c3VtcyA9IERhdGFDaGVja3N1bXNXb3JrZXJTaG1lbS0+bGF1bmNoX2VuYWJsZV9jaGVja3N1 bXM7CisJRGF0YUNoZWNrc3Vtc1dvcmtlclNobWVtLT5sYXVuY2hlcl9ydW5uaW5nID0gdHJ1 ZTsKKwlEYXRhQ2hlY2tzdW1zV29ya2VyU2htZW0tPmVuYWJsaW5nX2NoZWNrc3VtcyA9IGVu YWJsaW5nX2NoZWNrc3VtczsKKwlEYXRhQ2hlY2tzdW1zV29ya2VyU2htZW0tPmNvc3RfZGVs YXkgPSBEYXRhQ2hlY2tzdW1zV29ya2VyU2htZW0tPmxhdW5jaF9jb3N0X2RlbGF5OworCURh dGFDaGVja3N1bXNXb3JrZXJTaG1lbS0+Y29zdF9saW1pdCA9IERhdGFDaGVja3N1bXNXb3Jr ZXJTaG1lbS0+bGF1bmNoX2Nvc3RfbGltaXQ7CisJRGF0YUNoZWNrc3Vtc1dvcmtlclNobWVt LT5pbW1lZGlhdGVfY2hlY2twb2ludCA9IERhdGFDaGVja3N1bXNXb3JrZXJTaG1lbS0+bGF1 bmNoX2Zhc3Q7CisJTFdMb2NrUmVsZWFzZShEYXRhQ2hlY2tzdW1zV29ya2VyTG9jayk7CisK KwkvKgorCSAqIFRoZSB0YXJnZXQgc3RhdGUgY2FuIGNoYW5nZSB3aGlsZSB3ZSBhcmUgYnVz eSBlbmFibGluZy9kaXNhYmxpbmcKKwkgKiBjaGVja3N1bXMsIGlmIHRoZSB1c2VyIGNhbGxz IHBnX2Rpc2FibGUvZW5hYmxlX2RhdGFfY2hlY2tzdW1zKCkgYmVmb3JlCisJICogd2UgYXJl IGZpbmlzaGVkIHdpdGggdGhlIHByZXZpb3VzIHJlcXVlc3QuIEluIHRoYXQgY2FzZSwgd2Ug d2lsbCBsb29wCisJICogYmFjayBoZXJlLCB0byBwcm9jZXNzIHRoZSBuZXcgcmVxdWVzdC4K KwkgKi8KK2FnYWluOgorCisJcGdzdGF0X3Byb2dyZXNzX3N0YXJ0X2NvbW1hbmQoUFJPR1JF U1NfQ09NTUFORF9EQVRBQ0hFQ0tTVU1TLAorCQkJCQkJCQkgIEludmFsaWRPaWQpOworCisJ LyoKKwkgKiBJZiB3ZSdyZSBhc2tlZCB0byBlbmFibGUgY2hlY2tzdW1zLCB3ZSBuZWVkIHRv IGNoZWNrIGlmIHByb2Nlc3Npbmcgd2FzCisJICogcHJldmlvdXNseSBpbnRlcnJ1cHRlZCBz dWNoIHRoYXQgd2Ugc2hvdWxkIHJlc3VtZSByYXRoZXIgdGhhbiBzdGFydAorCSAqIGZyb20g c2NyYXRjaC4KKwkgKi8KKwlpZiAoZW5hYmxpbmdfY2hlY2tzdW1zKQorCXsKKwkJLyoKKwkJ ICogSWYgd2UgYXJlIGFza2VkIHRvIGVuYWJsZSBjaGVja3N1bXMgaW4gYSBjbHVzdGVyIHdo aWNoIGFscmVhZHkgaGFzCisJCSAqIGNoZWNrc3VtcyBlbmFibGVkLCBleGl0IGltbWVkaWF0 ZWx5IGFzIHRoZXJlIGlzIG5vdGhpbmcgbW9yZSB0byBkby4KKwkJICogSG9sZCBpbnRlcnJ1 cHRzIHRvIG1ha2Ugc3VyZSBzdGF0ZSBkb2Vzbid0IGNoYW5nZSBkdXJpbmcgY2hlY2tpbmcu CisJCSAqLworCQlIT0xEX0lOVEVSUlVQVFMoKTsKKwkJaWYgKERhdGFDaGVja3N1bXNOZWVk VmVyaWZ5KCkpCisJCXsKKwkJCVJFU1VNRV9JTlRFUlJVUFRTKCk7CisJCQlnb3RvIGRvbmU7 CisJCX0KKwkJUkVTVU1FX0lOVEVSUlVQVFMoKTsKKworCQkvKgorCQkgKiBJbml0aWFsaXpl IHByb2dyZXNzIGFuZCBpbmRpY2F0ZSB0aGF0IHdlIGFyZSB3YWl0aW5nIG9uIHRoZSBvdGhl cgorCQkgKiBiYWNrZW5kcyB0byBjbGVhciB0aGUgcHJvY3NpZ25hbGJhcnJpZXIuCisJCSAq LworCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0RBVEFDSEVDS1NV TVNfUEhBU0UsCisJCQkJCQkJCQkgUFJPR1JFU1NfREFUQUNIRUNLU1VNU19QSEFTRV9XQUlU SU5HX0JBQ0tFTkRTKTsKKworCQkvKgorCQkgKiBTZXQgdGhlIHN0YXRlIHRvIGlucHJvZ3Jl c3Mtb24gYW5kIHdhaXQgb24gdGhlIHByb2NzaWduYWwgYmFycmllci4KKwkJICovCisJCXBn c3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfREFUQUNIRUNLU1VNU19QSEFT RSwKKwkJCQkJCQkJCSBQUk9HUkVTU19EQVRBQ0hFQ0tTVU1TX1BIQVNFX0VOQUJMSU5HKTsK KwkJU2V0RGF0YUNoZWNrc3Vtc09uSW5Qcm9ncmVzcygpOworCisJCWlmICghUHJvY2Vzc0Fs bERhdGFiYXNlcyhEYXRhQ2hlY2tzdW1zV29ya2VyU2htZW0tPmltbWVkaWF0ZV9jaGVja3Bv aW50KSkKKwkJeworCQkJLyoKKwkJCSAqIElmIHRoZSB0YXJnZXQgc3RhdGUgY2hhbmdlZCBk dXJpbmcgcHJvY2Vzc2luZyB0aGVuIGl0J3Mgbm90IGEKKwkJCSAqIGZhaWx1cmUsIHNvIHJl c3RhcnQgcHJvY2Vzc2luZyBpbnN0ZWFkLgorCQkJICovCisJCQlMV0xvY2tBY3F1aXJlKERh dGFDaGVja3N1bXNXb3JrZXJMb2NrLCBMV19FWENMVVNJVkUpOworCQkJaWYgKERhdGFDaGVj a3N1bXNXb3JrZXJTaG1lbS0+bGF1bmNoX2VuYWJsZV9jaGVja3N1bXMgIT0gZW5hYmxpbmdf Y2hlY2tzdW1zKQorCQkJeworCQkJCUxXTG9ja1JlbGVhc2UoRGF0YUNoZWNrc3Vtc1dvcmtl ckxvY2spOworCQkJCWdvdG8gZG9uZTsKKwkJCX0KKwkJCUxXTG9ja1JlbGVhc2UoRGF0YUNo ZWNrc3Vtc1dvcmtlckxvY2spOworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycm1zZygi dW5hYmxlIHRvIGVuYWJsZSBkYXRhIGNoZWNrc3VtcyBpbiBjbHVzdGVyIikpKTsKKwkJfQor CisJCVNldERhdGFDaGVja3N1bXNPbigpOworCX0KKwllbHNlCisJeworCQlwZ3N0YXRfcHJv Z3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0RBVEFDSEVDS1NVTVNfUEhBU0UsCisJCQkJ CQkJCQkgUFJPR1JFU1NfREFUQUNIRUNLU1VNU19QSEFTRV9ESVNBQkxJTkcpOworCQlTZXRE YXRhQ2hlY2tzdW1zT2ZmKCk7CisJfQorCitkb25lOgorCisJLyoKKwkgKiBBbGwgZG9uZS4g QnV0IGJlZm9yZSB3ZSBleGl0LCBjaGVjayBpZiB0aGUgdGFyZ2V0IHN0YXRlIHdhcyBjaGFu Z2VkCisJICogd2hpbGUgd2Ugd2VyZSBydW5uaW5nLiBJbiB0aGF0IGNhc2Ugd2Ugd2lsbCBo YXZlIHRvIHN0YXJ0IGFsbCBvdmVyCisJICogYWdhaW4uCisJICovCisJTFdMb2NrQWNxdWly ZShEYXRhQ2hlY2tzdW1zV29ya2VyTG9jaywgTFdfRVhDTFVTSVZFKTsKKwlpZiAoRGF0YUNo ZWNrc3Vtc1dvcmtlclNobWVtLT5sYXVuY2hfZW5hYmxlX2NoZWNrc3VtcyAhPSBlbmFibGlu Z19jaGVja3N1bXMpCisJeworCQlEYXRhQ2hlY2tzdW1zV29ya2VyU2htZW0tPmVuYWJsaW5n X2NoZWNrc3VtcyA9IERhdGFDaGVja3N1bXNXb3JrZXJTaG1lbS0+bGF1bmNoX2VuYWJsZV9j aGVja3N1bXM7CisJCWVuYWJsaW5nX2NoZWNrc3VtcyA9IERhdGFDaGVja3N1bXNXb3JrZXJT aG1lbS0+bGF1bmNoX2VuYWJsZV9jaGVja3N1bXM7CisJCURhdGFDaGVja3N1bXNXb3JrZXJT aG1lbS0+Y29zdF9kZWxheSA9IERhdGFDaGVja3N1bXNXb3JrZXJTaG1lbS0+bGF1bmNoX2Nv c3RfZGVsYXk7CisJCURhdGFDaGVja3N1bXNXb3JrZXJTaG1lbS0+Y29zdF9saW1pdCA9IERh dGFDaGVja3N1bXNXb3JrZXJTaG1lbS0+bGF1bmNoX2Nvc3RfbGltaXQ7CisJCUxXTG9ja1Jl bGVhc2UoRGF0YUNoZWNrc3Vtc1dvcmtlckxvY2spOworCQlnb3RvIGFnYWluOworCX0KKwor CS8qIFNodXQgZG93biBwcm9ncmVzcyByZXBvcnRpbmcgYXMgd2UgYXJlIGRvbmUgKi8KKwlw Z3N0YXRfcHJvZ3Jlc3NfZW5kX2NvbW1hbmQoKTsKKworCWxhdW5jaGVyX3J1bm5pbmcgPSBm YWxzZTsKKwlEYXRhQ2hlY2tzdW1zV29ya2VyU2htZW0tPmxhdW5jaGVyX3J1bm5pbmcgPSBm YWxzZTsKKwlMV0xvY2tSZWxlYXNlKERhdGFDaGVja3N1bXNXb3JrZXJMb2NrKTsKK30KKwor LyoKKyAqIFByb2Nlc3NBbGxEYXRhYmFzZXMKKyAqCQlDb21wdXRlIHRoZSBsaXN0IG9mIGFs bCBkYXRhYmFzZXMgYW5kIHByb2Nlc3MgY2hlY2tzdW1zIGluIGVhY2gKKyAqCisgKiBUaGlz IHdpbGwgcmVwZWF0ZWRseSBnZW5lcmF0ZSBhIGxpc3Qgb2YgZGF0YWJhc2VzIHRvIHByb2Nl c3MgZm9yIGVuYWJsaW5nCisgKiBjaGVja3N1bXMuIFVudGlsIG5vIG5ldyBkYXRhYmFzZXMg YXJlIGZvdW5kLCB0aGlzIHdpbGwgbG9vcCBhcm91bmQgY29tcHV0aW5nCisgKiBhIG5ldyBs aXN0IGFuZCBjb21wYXJpbmcgaXQgdG8gdGhlIGFscmVhZHkgc2VlbiBvbmVzLgorICoKKyAq IElmIGltbWVkaWF0ZV9jaGVja3BvaW50IGlzIHNldCB0byB0cnVlIHRoZW4gYSBDSEVDS1BP SU5UX0lNTUVESUFURSB3aWxsIGJlCisgKiBpc3N1ZWQuIFRoaXMgaXMgdXNlZnVsIGZvciB0 ZXN0aW5nIGJ1dCBzaG91bGQgYmUgYXZvaWRlZCBpbiBwcm9kdWN0aW9uIHVzZQorICogYXMg aXQgbWF5IGFmZmVjdCBjbHVzdGVyIHBlcmZvcm1hbmNlIGRyYXN0aWNhbGx5LgorICovCitz dGF0aWMgYm9vbAorUHJvY2Vzc0FsbERhdGFiYXNlcyhib29sIGltbWVkaWF0ZV9jaGVja3Bv aW50KQoreworCUxpc3QJICAgKkRhdGFiYXNlTGlzdDsKKwlIVEFCCSAgICpQcm9jZXNzZWRE YXRhYmFzZXMgPSBOVUxMOworCUhBU0hDVEwJCWhhc2hfY3RsOworCWJvb2wJCWZvdW5kX2Zh aWxlZCA9IGZhbHNlOworCWludAkJCWZsYWdzOworCisJLyogSW5pdGlhbGl6ZSBhIGhhc2gg dHJhY2tpbmcgYWxsIHByb2Nlc3NlZCBkYXRhYmFzZXMgKi8KKwltZW1zZXQoJmhhc2hfY3Rs LCAwLCBzaXplb2YoaGFzaF9jdGwpKTsKKwloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKE9p ZCk7CisJaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKERhdGFDaGVja3N1bXNXb3JrZXJS ZXN1bHRFbnRyeSk7CisJUHJvY2Vzc2VkRGF0YWJhc2VzID0gaGFzaF9jcmVhdGUoIlByb2Nl c3NlZCBkYXRhYmFzZXMiLAorCQkJCQkJCQkJIDY0LAorCQkJCQkJCQkJICZoYXNoX2N0bCwK KwkJCQkJCQkJCSBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKworCS8qCisJICogU2V0IHVw IHNvIGZpcnN0IHJ1biBwcm9jZXNzZXMgc2hhcmVkIGNhdGFsb2dzLCBidXQgbm90IG9uY2Ug aW4gZXZlcnkKKwkgKiBkYi4KKwkgKi8KKwlEYXRhQ2hlY2tzdW1zV29ya2VyU2htZW0tPnBy b2Nlc3Nfc2hhcmVkX2NhdGFsb2dzID0gdHJ1ZTsKKworCS8qCisJICogR2V0IGEgbGlzdCBv ZiBhbGwgZGF0YWJhc2VzIHRvIHByb2Nlc3MuIFRoaXMgbWF5IGluY2x1ZGUgZGF0YWJhc2Vz IHRoYXQKKwkgKiB3ZXJlIGNyZWF0ZWQgZHVyaW5nIG91ciBydW50aW1lLiAgU2luY2UgYSBk YXRhYmFzZSBjYW4gYmUgY3JlYXRlZCBhcyBhCisJICogY29weSBvZiBhbnkgb3RoZXIgZGF0 YWJhc2UgKHdoaWNoIG1heSBub3QgaGF2ZSBleGlzdGVkIGluIG91ciBsYXN0CisJICogcnVu KSwgd2UgaGF2ZSB0byByZXBlYXQgdGhpcyBsb29wIHVudGlsIG5vIG5ldyBkYXRhYmFzZXMg c2hvdyB1cCBpbiB0aGUKKwkgKiBsaXN0LgorCSAqLworCURhdGFiYXNlTGlzdCA9IEJ1aWxk RGF0YWJhc2VMaXN0KCk7CisKKwkvKgorCSAqIFVwZGF0ZSBwcm9ncmVzcyByZXBvcnRpbmcg d2l0aCB0aGUgdG90YWwgbnVtYmVyIG9mIGRhdGFiYXNlcyB3ZSBuZWVkIHRvCisJICogcHJv Y2Vzcy4gVGhpcyBudW1iZXIgc2hvdWxkIG5vdCBiZSBjaGFuZ2VkIGR1cmluZyBwcm9jZXNz aW5nLCB0aGUKKwkgKiBjb2x1bW5zIGZvciBwcm9jZXNzZWQgZGF0YWJhc2VzIGlzIGluc3Rl YWQgaW5jcmVhc2VkIHN1Y2ggdGhhdCBpdCBjYW4KKwkgKiBiZSBjb21wYXJlZCBhZ2FpbnN0 IHRoZSB0b3RhbC4KKwkgKi8KKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dS RVNTX0RBVEFDSEVDS1NVTVNfVE9UQUxfREIsCisJCQkJCQkJCSBsaXN0X2xlbmd0aChEYXRh YmFzZUxpc3QpKTsKKworCXdoaWxlICh0cnVlKQorCXsKKwkJaW50CQkJcHJvY2Vzc2VkX2Rh dGFiYXNlcyA9IDA7CisKKwkJZm9yZWFjaF9wdHIoRGF0YUNoZWNrc3Vtc1dvcmtlckRhdGFi YXNlLCBkYiwgRGF0YWJhc2VMaXN0KQorCQl7CisJCQlEYXRhQ2hlY2tzdW1zV29ya2VyUmVz dWx0IHJlc3VsdDsKKwkJCURhdGFDaGVja3N1bXNXb3JrZXJSZXN1bHRFbnRyeSAqZW50cnk7 CisJCQlib29sCQlmb3VuZDsKKworCQkJLyoKKwkJCSAqIEluZGljYXRlIHdoaWNoIGRhdGFi YXNlIGlzIGJlaW5nIHByb2Nlc3NlZCBzZXQgdGhlIG51bWJlciBvZgorCQkJICogcmVsYXRp b25zIHRvIC0xIHRvIGNsZWFyIGZpZWxkIGZyb20gcHJldmlvdXMgdmFsdWVzLiAtMSB3aWxs CisJCQkgKiB0cmFuc2xhdGUgdG8gTlVMTCBpbiB0aGUgcHJvZ3Jlc3Mgdmlldy4KKwkJCSAq LworCQkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19EQVRBQ0hFQ0tT VU1TX0NVUl9EQiwgZGItPmRib2lkKTsKKwkJCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFy YW0oUFJPR1JFU1NfREFUQUNIRUNLU1VNU19UT1RBTF9SRUwsIC0xKTsKKworCQkJLyoKKwkJ CSAqIENoZWNrIGlmIHRoaXMgZGF0YWJhc2UgaGFzIGJlZW4gcHJvY2Vzc2VkIGFscmVhZHks IGFuZCBpZiBzbworCQkJICogd2hldGhlciBpdCBzaG91bGQgYmUgcmV0cmllZCBvciBza2lw cGVkLgorCQkJICovCisJCQllbnRyeSA9IChEYXRhQ2hlY2tzdW1zV29ya2VyUmVzdWx0RW50 cnkgKikgaGFzaF9zZWFyY2goUHJvY2Vzc2VkRGF0YWJhc2VzLCAmZGItPmRib2lkLAorCQkJ CQkJCQkJCQkJCQkJCSAgIEhBU0hfRklORCwgTlVMTCk7CisKKwkJCWlmIChlbnRyeSkKKwkJ CXsKKwkJCQlpZiAoZW50cnktPnJlc3VsdCA9PSBEQVRBQ0hFQ0tTVU1TV09SS0VSX1JFVFJZ REIpCisJCQkJeworCQkJCQkvKgorCQkJCQkgKiBMaW1pdCB0aGUgbnVtYmVyIG9mIHJldHJp ZXMgdG8gYXZvaWQgaW5maW5pdGUgbG9vcGluZworCQkJCQkgKiBpbiBjYXNlIHRoZXJlIHNp bXBseSB3b24ndCBiZSBlbm91Z2ggd29ya2VycyBpbiB0aGUKKwkJCQkJICogY2x1c3RlciB0 byBmaW5pc2ggdGhpcyBvcGVyYXRpb24uCisJCQkJCSAqLworCQkJCQlpZiAoZW50cnktPnJl dHJpZXMgPiBEQVRBQ0hFQ0tTVU1TV09SS0VSX01BWF9EQl9SRVRSSUVTKQorCQkJCQkJZW50 cnktPnJlc3VsdCA9IERBVEFDSEVDS1NVTVNXT1JLRVJfRkFJTEVEOworCQkJCX0KKworCQkJ CS8qIFNraXAgaWYgdGhpcyBkYXRhYmFzZSBoYXMgYmVlbiBwcm9jZXNzZWQgYWxyZWFkeSAq LworCQkJCWlmIChlbnRyeS0+cmVzdWx0ICE9IERBVEFDSEVDS1NVTVNXT1JLRVJfUkVUUllE QikKKwkJCQkJY29udGludWU7CisJCQl9CisKKwkJCXJlc3VsdCA9IFByb2Nlc3NEYXRhYmFz ZShkYik7CisJCQlwcm9jZXNzZWRfZGF0YWJhc2VzKys7CisKKwkJCWlmIChyZXN1bHQgPT0g REFUQUNIRUNLU1VNU1dPUktFUl9TVUNDRVNTRlVMKQorCQkJeworCQkJCS8qCisJCQkJICog SWYgb25lIGRhdGFiYXNlIGhhcyBjb21wbGV0ZWQgc2hhcmVkIGNhdGFsb2dzLCB3ZSBkb24n dAorCQkJCSAqIGhhdmUgdG8gcHJvY2VzcyB0aGVtIGFnYWluLgorCQkJCSAqLworCQkJCWlm IChEYXRhQ2hlY2tzdW1zV29ya2VyU2htZW0tPnByb2Nlc3Nfc2hhcmVkX2NhdGFsb2dzKQor CQkJCQlEYXRhQ2hlY2tzdW1zV29ya2VyU2htZW0tPnByb2Nlc3Nfc2hhcmVkX2NhdGFsb2dz ID0gZmFsc2U7CisJCQl9CisJCQllbHNlIGlmIChyZXN1bHQgPT0gREFUQUNIRUNLU1VNU1dP UktFUl9BQk9SVEVEKQorCQkJeworCQkJCS8qIEFib3J0IGZsYWcgc2V0LCBzbyBleGl0IHRo ZSB3aG9sZSBwcm9jZXNzICovCisJCQkJcmV0dXJuIGZhbHNlOworCQkJfQorCisJCQllbnRy eSA9IGhhc2hfc2VhcmNoKFByb2Nlc3NlZERhdGFiYXNlcywgJmRiLT5kYm9pZCwgSEFTSF9F TlRFUiwgJmZvdW5kKTsKKwkJCWVudHJ5LT5kYm9pZCA9IGRiLT5kYm9pZDsKKwkJCWVudHJ5 LT5yZXN1bHQgPSByZXN1bHQ7CisJCQlpZiAoIWZvdW5kKQorCQkJCWVudHJ5LT5yZXRyaWVz ID0gMDsKKwkJCWVsc2UKKwkJCQllbnRyeS0+cmV0cmllcysrOworCQl9CisKKwkJZWxvZyhE RUJVRzEsCisJCQkgIiVpIGRhdGFiYXNlcyBwcm9jZXNzZWQgZm9yIGRhdGEgY2hlY2tzdW0g ZW5hYmxpbmcsICVzIiwKKwkJCSBwcm9jZXNzZWRfZGF0YWJhc2VzLAorCQkJIChwcm9jZXNz ZWRfZGF0YWJhc2VzID8gInByb2Nlc3Mgd2l0aCByZXN0YXJ0IiA6ICJwcm9jZXNzIGNvbXBs ZXRlZCIpKTsKKworCQlGcmVlRGF0YWJhc2VMaXN0KERhdGFiYXNlTGlzdCk7CisKKwkJLyoK KwkJICogSWYgbm8gZGF0YWJhc2VzIHdlcmUgcHJvY2Vzc2VkIGluIHRoaXMgcnVuIG9mIHRo ZSBsb29wLCB3ZSBoYXZlIG5vdworCQkgKiBmaW5pc2hlZCBhbGwgZGF0YWJhc2VzIGFuZCBu byBjb25jdXJyZW50bHkgY3JlYXRlZCBvbmVzIGNhbiBleGlzdC4KKwkJICovCisJCWlmIChw cm9jZXNzZWRfZGF0YWJhc2VzID09IDApCisJCQlicmVhazsKKworCQkvKgorCQkgKiBSZS1n ZW5lcmF0ZSB0aGUgbGlzdCBvZiBkYXRhYmFzZXMgZm9yIGFub3RoZXIgcGFzcy4gU2luY2Ug d2Ugd2FpdAorCQkgKiBmb3IgYWxsIHByZS1leGlzdGluZyB0cmFuc2FjdGlvbnMgZmluaXNo LCB0aGlzIHdheSB3ZSBjYW4gYmUKKwkJICogY2VydGFpbiB0aGF0IHRoZXJlIGFyZSBubyBk YXRhYmFzZXMgbGVmdCB3aXRob3V0IGNoZWNrc3Vtcy4KKwkJICovCisJCVdhaXRGb3JBbGxU cmFuc2FjdGlvbnNUb0ZpbmlzaCgpOworCQlEYXRhYmFzZUxpc3QgPSBCdWlsZERhdGFiYXNl TGlzdCgpOworCX0KKworCS8qCisJICogUHJvY2Vzc2VkRGF0YWJhc2VzIG5vdyBoYXMgYWxs IGRhdGFiYXNlcyBhbmQgdGhlIHJlc3VsdHMgb2YgdGhlaXIKKwkgKiBwcm9jZXNzaW5nLiBG YWlsdXJlIHRvIGVuYWJsZSBjaGVja3N1bXMgZm9yIGEgZGF0YWJhc2UgY2FuIGJlIGJlY2F1 c2UKKwkgKiB0aGV5IGFjdHVhbGx5IGZhaWxlZCBmb3Igc29tZSByZWFzb24sIG9yIGJlY2F1 c2UgdGhlIGRhdGFiYXNlIHdhcworCSAqIGRyb3BwZWQgYmV0d2VlbiB1cyBnZXR0aW5nIHRo ZSBkYXRhYmFzZSBsaXN0IGFuZCB0cnlpbmcgdG8gcHJvY2VzcyBpdC4KKwkgKiBHZXQgYSBm cmVzaCBsaXN0IG9mIGRhdGFiYXNlcyB0byBkZXRlY3QgdGhlIHNlY29uZCBjYXNlIHdoZXJl IHRoZQorCSAqIGRhdGFiYXNlIHdhcyBkcm9wcGVkIGJlZm9yZSB3ZSBoYWQgc3RhcnRlZCBw cm9jZXNzaW5nIGl0LiBJZiBhIGRhdGFiYXNlCisJICogc3RpbGwgZXhpc3RzLCBidXQgZW5h YmxpbmcgY2hlY2tzdW1zIGZhaWxlZCB0aGVuIHdlIGZhaWwgdGhlIGVudGlyZQorCSAqIGNo ZWNrc3VtbWluZyBwcm9jZXNzIGFuZCBleGl0IHdpdGggYW4gZXJyb3IuCisJICovCisJV2Fp dEZvckFsbFRyYW5zYWN0aW9uc1RvRmluaXNoKCk7CisJRGF0YWJhc2VMaXN0ID0gQnVpbGRE YXRhYmFzZUxpc3QoKTsKKworCWZvcmVhY2hfcHRyKERhdGFDaGVja3N1bXNXb3JrZXJEYXRh YmFzZSwgZGIsIERhdGFiYXNlTGlzdCkKKwl7CisJCURhdGFDaGVja3N1bXNXb3JrZXJSZXN1 bHQgKmVudHJ5OworCQlib29sCQlmb3VuZDsKKworCQllbnRyeSA9IGhhc2hfc2VhcmNoKFBy b2Nlc3NlZERhdGFiYXNlcywgKHZvaWQgKikgJmRiLT5kYm9pZCwKKwkJCQkJCQlIQVNIX0ZJ TkQsICZmb3VuZCk7CisKKwkJLyoKKwkJICogV2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiB0 aGUgZGF0YWJhc2VzIHdoZXJlIHRoZSBmYWlsZWQgZGF0YWJhc2UKKwkJICogc3RpbGwgZXhp c3RzLgorCQkgKi8KKwkJaWYgKGZvdW5kICYmICplbnRyeSA9PSBEQVRBQ0hFQ0tTVU1TV09S S0VSX0ZBSUxFRCkKKwkJeworCQkJZXJlcG9ydChXQVJOSU5HLAorCQkJCQkoZXJybXNnKCJm YWlsZWQgdG8gZW5hYmxlIGRhdGEgY2hlY2tzdW1zIGluIFwiJXNcIiIsCisJCQkJCQkJZGIt PmRibmFtZSkpKTsKKwkJCWZvdW5kX2ZhaWxlZCA9IGZvdW5kOworCQkJY29udGludWU7CisJ CX0KKwl9CisKKwlGcmVlRGF0YWJhc2VMaXN0KERhdGFiYXNlTGlzdCk7CisKKwlpZiAoZm91 bmRfZmFpbGVkKQorCXsKKwkJLyogRGlzYWJsZSBjaGVja3N1bXMgb24gY2x1c3RlciwgYmVj YXVzZSB3ZSBmYWlsZWQgKi8KKwkJU2V0RGF0YUNoZWNrc3Vtc09mZigpOworCQllcmVwb3J0 KEVSUk9SLAorCQkJCShlcnJtc2coImRhdGEgY2hlY2tzdW1zIGZhaWxlZCB0byBnZXQgZW5h YmxlZCBpbiBhbGwgZGF0YWJhc2VzLCBhYm9ydGluZyIpLAorCQkJCSBlcnJoaW50KCJUaGUg c2VydmVyIGxvZyBtaWdodCBoYXZlIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIGNhdXNlIG9m IHRoZSBlcnJvci4iKSkpOworCX0KKworCS8qCisJICogRm9yY2UgYSBjaGVja3BvaW50IHRv IGdldCBldmVyeXRoaW5nIG91dCB0byBkaXNrLiBUaGUgdXNlIG9mIGltbWVkaWF0ZQorCSAq IGNoZWNrcG9pbnRzIGlzIGZvciBydW5uaW5nIHRlc3RzLCBhcyB0aGV5IHdvdWxkIG90aGVy d2lzZSBub3QgZXhlY3V0ZQorCSAqIGluIHN1Y2ggYSB3YXkgdGhhdCB0aGV5IGNhbiByZWxp YWJseSBiZSBwbGFjZWQgdW5kZXIgdGltZW91dCBjb250cm9sLgorCSAqLworCWZsYWdzID0g Q0hFQ0tQT0lOVF9GT1JDRSB8IENIRUNLUE9JTlRfV0FJVDsKKwlpZiAoaW1tZWRpYXRlX2No ZWNrcG9pbnQpCisJCWZsYWdzID0gZmxhZ3MgfCBDSEVDS1BPSU5UX0lNTUVESUFURTsKKwlS ZXF1ZXN0Q2hlY2twb2ludChmbGFncyk7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworLyoKKyAq IERhdGFDaGVja3N1bXNXb3JrZXJTaG1lbVNpemUKKyAqCQlDb21wdXRlIHJlcXVpcmVkIHNw YWNlIGZvciBkYXRhY2hlY2tzdW1zd29ya2VyLXJlbGF0ZWQgc2hhcmVkIG1lbW9yeQorICov CitTaXplCitEYXRhQ2hlY2tzdW1zV29ya2VyU2htZW1TaXplKHZvaWQpCit7CisJU2l6ZQkJ c2l6ZTsKKworCXNpemUgPSBzaXplb2YoRGF0YUNoZWNrc3Vtc1dvcmtlclNobWVtU3RydWN0 KTsKKwlzaXplID0gTUFYQUxJR04oc2l6ZSk7CisKKwlyZXR1cm4gc2l6ZTsKK30KKworLyoK KyAqIERhdGFDaGVja3N1bXNXb3JrZXJTaG1lbUluaXQKKyAqCQlBbGxvY2F0ZSBhbmQgaW5p dGlhbGl6ZSBkYXRhY2hlY2tzdW1zd29ya2VyLXJlbGF0ZWQgc2hhcmVkIG1lbW9yeQorICov Cit2b2lkCitEYXRhQ2hlY2tzdW1zV29ya2VyU2htZW1Jbml0KHZvaWQpCit7CisJYm9vbAkJ Zm91bmQ7CisKKwlEYXRhQ2hlY2tzdW1zV29ya2VyU2htZW0gPSAoRGF0YUNoZWNrc3Vtc1dv cmtlclNobWVtU3RydWN0ICopCisJCVNobWVtSW5pdFN0cnVjdCgiRGF0YUNoZWNrc3Vtc1dv cmtlciBEYXRhIiwKKwkJCQkJCURhdGFDaGVja3N1bXNXb3JrZXJTaG1lbVNpemUoKSwKKwkJ CQkJCSZmb3VuZCk7CisKKwlNZW1TZXQoRGF0YUNoZWNrc3Vtc1dvcmtlclNobWVtLCAwLCBE YXRhQ2hlY2tzdW1zV29ya2VyU2htZW1TaXplKCkpOworCisJLyoKKwkgKiBFdmVuIGlmIHRo aXMgaXMgYSByZWR1bmRhbnQgYXNzaWdubWVudCwgd2Ugd2FudCB0byBiZSBleHBsaWNpdCBh Ym91dAorCSAqIG91ciBpbnRlbnQgZm9yIHJlYWRhYmlsaXR5LCBzaW5jZSB3ZSB3YW50IHRv IGJlIGFibGUgdG8gcXVlcnkgdGhpcworCSAqIHN0YXRlIGluIGNhc2Ugb2YgcmVzdGFydGFi aWxpdHkuCisJICovCisJRGF0YUNoZWNrc3Vtc1dvcmtlclNobWVtLT5sYXVuY2hfZW5hYmxl X2NoZWNrc3VtcyA9IGZhbHNlOworCURhdGFDaGVja3N1bXNXb3JrZXJTaG1lbS0+bGF1bmNo ZXJfcnVubmluZyA9IGZhbHNlOworCURhdGFDaGVja3N1bXNXb3JrZXJTaG1lbS0+bGF1bmNo X2Zhc3QgPSBmYWxzZTsKK30KKworLyoKKyAqIEJ1aWxkRGF0YWJhc2VMaXN0CisgKgkJQ29t cGlsZSBhIGxpc3Qgb2YgYWxsIGN1cnJlbnRseSBhdmFpbGFibGUgZGF0YWJhc2VzIGluIHRo ZSBjbHVzdGVyCisgKgorICogVGhpcyBjcmVhdGVzIHRoZSBsaXN0IG9mIGRhdGFiYXNlcyBm b3IgdGhlIGRhdGFjaGVja3N1bXN3b3JrZXIgd29ya2VycyB0bworICogYWRkIGNoZWNrc3Vt cyB0by4gSWYgdGhlIGNhbGxlciB3YW50cyB0byBlbnN1cmUgdGhhdCBubyBjb25jdXJyZW50 bHkKKyAqIHJ1bm5pbmcgQ1JFQVRFIERBVEFCQVNFIGNhbGxzIGV4aXN0LCB0aGlzIG5lZWRz IHRvIGJlIHByZWNlZGVkIGJ5IGEgY2FsbAorICogdG8gV2FpdEZvckFsbFRyYW5zYWN0aW9u c1RvRmluaXNoKCkuCisgKi8KK3N0YXRpYyBMaXN0ICoKK0J1aWxkRGF0YWJhc2VMaXN0KHZv aWQpCit7CisJTGlzdAkgICAqRGF0YWJhc2VMaXN0ID0gTklMOworCVJlbGF0aW9uCXJlbDsK KwlUYWJsZVNjYW5EZXNjIHNjYW47CisJSGVhcFR1cGxlCXR1cDsKKwlNZW1vcnlDb250ZXh0 IGN0eCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OworCU1lbW9yeUNvbnRleHQgb2xkY3R4Owor CisJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCXJlbCA9IHRhYmxlX29wZW4oRGF0 YWJhc2VSZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCXNjYW4gPSB0YWJsZV9iZWdp bnNjYW5fY2F0YWxvZyhyZWwsIDAsIE5VTEwpOworCisJd2hpbGUgKEhlYXBUdXBsZUlzVmFs aWQodHVwID0gaGVhcF9nZXRuZXh0KHNjYW4sIEZvcndhcmRTY2FuRGlyZWN0aW9uKSkpCisJ eworCQlGb3JtX3BnX2RhdGFiYXNlIHBnZGIgPSAoRm9ybV9wZ19kYXRhYmFzZSkgR0VUU1RS VUNUKHR1cCk7CisJCURhdGFDaGVja3N1bXNXb3JrZXJEYXRhYmFzZSAqZGI7CisKKwkJb2xk Y3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGN0eCk7CisKKwkJZGIgPSAoRGF0YUNoZWNr c3Vtc1dvcmtlckRhdGFiYXNlICopIHBhbGxvYzAoc2l6ZW9mKERhdGFDaGVja3N1bXNXb3Jr ZXJEYXRhYmFzZSkpOworCisJCWRiLT5kYm9pZCA9IHBnZGItPm9pZDsKKwkJZGItPmRibmFt ZSA9IHBzdHJkdXAoTmFtZVN0cihwZ2RiLT5kYXRuYW1lKSk7CisKKwkJRGF0YWJhc2VMaXN0 ID0gbGFwcGVuZChEYXRhYmFzZUxpc3QsIGRiKTsKKworCQlNZW1vcnlDb250ZXh0U3dpdGNo VG8ob2xkY3R4KTsKKwl9CisKKwl0YWJsZV9lbmRzY2FuKHNjYW4pOworCXRhYmxlX2Nsb3Nl KHJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgp OworCisJcmV0dXJuIERhdGFiYXNlTGlzdDsKK30KKworc3RhdGljIHZvaWQKK0ZyZWVEYXRh YmFzZUxpc3QoTGlzdCAqZGJsaXN0KQoreworCWlmICghZGJsaXN0KQorCQlyZXR1cm47CisK Kwlmb3JlYWNoX3B0cihEYXRhQ2hlY2tzdW1zV29ya2VyRGF0YWJhc2UsIGRiLCBkYmxpc3Qp CisJeworCQlpZiAoZGItPmRibmFtZSAhPSBOVUxMKQorCQkJcGZyZWUoZGItPmRibmFtZSk7 CisJfQorCisJbGlzdF9mcmVlX2RlZXAoZGJsaXN0KTsKK30KKworLyoKKyAqIEJ1aWxkUmVs YXRpb25MaXN0CisgKgkJQ29tcGlsZSBhIGxpc3Qgb2YgcmVsYXRpb25zIGluIHRoZSBkYXRh YmFzZQorICoKKyAqIFJldHVybnMgYSBsaXN0IG9mIE9JRHMgZm9yIHRoZSByZXF1ZXN0IHJl bGF0aW9uIHR5cGVzLiBJZiB0ZW1wX3JlbGF0aW9ucworICogaXMgVHJ1ZSB0aGVuIG9ubHkg dGVtcG9yYXJ5IHJlbGF0aW9ucyBhcmUgcmV0dXJuZWQuIElmIHRlbXBfcmVsYXRpb25zIGlz CisgKiBGYWxzZSB0aGVuIG5vbi10ZW1wb3JhcnkgcmVsYXRpb25zIHdoaWNoIGhhdmUgZGF0 YSBjaGVja3N1bXMgYXJlIHJldHVybmVkLgorICogSWYgaW5jbHVkZV9zaGFyZWQgaXMgVHJ1 ZSB0aGVuIHNoYXJlZCByZWxhdGlvbnMgYXJlIGluY2x1ZGVkIGFzIHdlbGwgaW4gYQorICog bm9uLXRlbXBvcmFyeSBsaXN0LiBpbmNsdWRlX3NoYXJlZCBoYXMgbm8gcmVsZXZhbmNlIHdo ZW4gYnVpbGRpbmcgYSBsaXN0IG9mCisgKiB0ZW1wb3JhcnkgcmVsYXRpb25zLgorICovCitz dGF0aWMgTGlzdCAqCitCdWlsZFJlbGF0aW9uTGlzdChib29sIHRlbXBfcmVsYXRpb25zLCBi b29sIGluY2x1ZGVfc2hhcmVkKQoreworCUxpc3QJICAgKlJlbGF0aW9uTGlzdCA9IE5JTDsK KwlSZWxhdGlvbglyZWw7CisJVGFibGVTY2FuRGVzYyBzY2FuOworCUhlYXBUdXBsZQl0dXA7 CisJTWVtb3J5Q29udGV4dCBjdHggPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKKwlNZW1vcnlD b250ZXh0IG9sZGN0eDsKKworCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwlyZWwg PSB0YWJsZV9vcGVuKFJlbGF0aW9uUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwlz Y2FuID0gdGFibGVfYmVnaW5zY2FuX2NhdGFsb2cocmVsLCAwLCBOVUxMKTsKKworCXdoaWxl IChIZWFwVHVwbGVJc1ZhbGlkKHR1cCA9IGhlYXBfZ2V0bmV4dChzY2FuLCBGb3J3YXJkU2Nh bkRpcmVjdGlvbikpKQorCXsKKwkJRm9ybV9wZ19jbGFzcyBwZ2MgPSAoRm9ybV9wZ19jbGFz cykgR0VUU1RSVUNUKHR1cCk7CisKKwkJLyoKKwkJICogT25seSBpbmNsdWRlIHRlbXBvcmFy eSByZWxhdGlvbnMgd2hlbiBhc2tlZCBmb3IgYSB0ZW1wIHJlbGF0aW9uCisJCSAqIGxpc3Qu CisJCSAqLworCQlpZiAocGdjLT5yZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9U RU1QKQorCQl7CisJCQlpZiAoIXRlbXBfcmVsYXRpb25zKQorCQkJCWNvbnRpbnVlOworCQl9 CisJCWVsc2UKKwkJeworCQkJLyoKKwkJCSAqIElmIHdlIGFyZSBvbmx5IGludGVyZXN0ZWQg aW4gdGVtcCByZWxhdGlvbnMgdGhlbiBjb250aW51ZQorCQkJICogaW1tZWRpYXRlbHkgYXMg dGhlIGN1cnJlbnQgcmVsYXRpb24gaXNuJ3QgYSB0ZW1wIHJlbGF0aW9uLgorCQkJICovCisJ CQlpZiAodGVtcF9yZWxhdGlvbnMpCisJCQkJY29udGludWU7CisKKwkJCWlmICghUkVMS0lO RF9IQVNfU1RPUkFHRShwZ2MtPnJlbGtpbmQpKQorCQkJCWNvbnRpbnVlOworCisJCQlpZiAo cGdjLT5yZWxpc3NoYXJlZCAmJiAhaW5jbHVkZV9zaGFyZWQpCisJCQkJY29udGludWU7CisJ CX0KKworCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oY3R4KTsKKwkJUmVsYXRp b25MaXN0ID0gbGFwcGVuZF9vaWQoUmVsYXRpb25MaXN0LCBwZ2MtPm9pZCk7CisJCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOworCX0KKworCXRhYmxlX2VuZHNjYW4oc2Nhbik7 CisJdGFibGVfY2xvc2UocmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCisJQ29tbWl0VHJhbnNh Y3Rpb25Db21tYW5kKCk7CisKKwlyZXR1cm4gUmVsYXRpb25MaXN0OworfQorCisvKgorICog RGF0YUNoZWNrc3Vtc1dvcmtlck1haW4KKyAqCisgKiBNYWluIGZ1bmN0aW9uIGZvciBlbmFi bGluZyBjaGVja3N1bXMgaW4gYSBzaW5nbGUgZGF0YWJhc2UsIFRoaXMgaXMgdGhlCisgKiBm dW5jdGlvbiBzZXQgYXMgdGhlIGJnd19mdW5jdGlvbl9uYW1lIGluIHRoZSBkeW5hbWljIGJh Y2tncm91bmQgd29ya2VyCisgKiBwcm9jZXNzIGluaXRpYXRlZCBmb3IgZWFjaCBkYXRhYmFz ZSBieSB0aGUgd29ya2VyIGxhdW5jaGVyLiBBZnRlciBlbmFibGluZworICogZGF0YSBjaGVj a3N1bXMgaW4gZWFjaCBhcHBsaWNhYmxlIHJlbGF0aW9uIGluIHRoZSBkYXRhYmFzZSwgaXQg d2lsbCB3YWl0IGZvcgorICogYWxsIHRlbXBvcmFyeSByZWxhdGlvbnMgdGhhdCB3ZXJlIHBy ZXNlbnQgd2hlbiB0aGUgZnVuY3Rpb24gc3RhcnRlZCB0bworICogZGlzYXBwZWFyIGJlZm9y ZSByZXR1cm5pbmcuIFRoaXMgaXMgcmVxdWlyZWQgc2luY2Ugd2UgY2Fubm90IHJld3JpdGUK KyAqIGV4aXN0aW5nIHRlbXBvcmFyeSByZWxhdGlvbnMgd2l0aCBkYXRhIGNoZWNrc3Vtcy4K KyAqLwordm9pZAorRGF0YUNoZWNrc3Vtc1dvcmtlck1haW4oRGF0dW0gYXJnKQoreworCU9p ZAkJCWRib2lkID0gRGF0dW1HZXRPYmplY3RJZChhcmcpOworCUxpc3QJICAgKlJlbGF0aW9u TGlzdCA9IE5JTDsKKwlMaXN0CSAgICpJbml0aWFsVGVtcFRhYmxlTGlzdCA9IE5JTDsKKwlC dWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneTsKKwlib29sCQlhYm9ydGVkID0gZmFsc2U7 CisKKwllbmFibGluZ19jaGVja3N1bXMgPSB0cnVlOworCisJcHFzaWduYWwoU0lHVEVSTSwg ZGllKTsKKworCUJhY2tncm91bmRXb3JrZXJVbmJsb2NrU2lnbmFscygpOworCisJTXlCYWNr ZW5kVHlwZSA9IEJfREFUQUNIRUNLU1VNU1dPUktFUl9XT1JLRVI7CisJaW5pdF9wc19kaXNw bGF5KE5VTEwpOworCisJQmFja2dyb3VuZFdvcmtlckluaXRpYWxpemVDb25uZWN0aW9uQnlP aWQoZGJvaWQsIEludmFsaWRPaWQsCisJCQkJCQkJCQkJCSAgQkdXT1JLRVJfQllQQVNTX0FM TE9XQ09OTik7CisKKwkvKgorCSAqIEdldCBhIGxpc3Qgb2YgYWxsIHRlbXAgdGFibGVzIHBy ZXNlbnQgYXMgd2Ugc3RhcnQgaW4gdGhpcyBkYXRhYmFzZS4gV2UKKwkgKiBuZWVkIHRvIHdh aXQgdW50aWwgdGhleSBhcmUgYWxsIGdvbmUgdW50aWwgd2UgYXJlIGRvbmUsIHNpbmNlIHdl IGNhbm5vdAorCSAqIGFjY2VzcyB0aGVzZSByZWxhdGlvbnMgYW5kIG1vZGlmeSB0aGVtLgor CSAqLworCUluaXRpYWxUZW1wVGFibGVMaXN0ID0gQnVpbGRSZWxhdGlvbkxpc3QodHJ1ZSwg ZmFsc2UpOworCisJLyoKKwkgKiBFbmFibGUgdmFjdXVtIGNvc3QgZGVsYXksIGlmIGFueS4K KwkgKi8KKwlBc3NlcnQoRGF0YUNoZWNrc3Vtc1dvcmtlclNobWVtLT5lbmFibGluZ19jaGVj a3N1bXMpOworCVZhY3V1bUNvc3REZWxheSA9IERhdGFDaGVja3N1bXNXb3JrZXJTaG1lbS0+ Y29zdF9kZWxheTsKKwlWYWN1dW1Db3N0TGltaXQgPSBEYXRhQ2hlY2tzdW1zV29ya2VyU2ht ZW0tPmNvc3RfbGltaXQ7CisJVmFjdXVtQ29zdEFjdGl2ZSA9IChWYWN1dW1Db3N0RGVsYXkg PiAwKTsKKwlWYWN1dW1Db3N0QmFsYW5jZSA9IDA7CisJVmFjdXVtQ29zdFBhZ2VIaXQgPSAw OworCVZhY3V1bUNvc3RQYWdlTWlzcyA9IDA7CisJVmFjdXVtQ29zdFBhZ2VEaXJ0eSA9IDA7 CisKKwkvKgorCSAqIENyZWF0ZSBhbmQgc2V0IHRoZSB2YWN1dW0gc3RyYXRlZ3kgYXMgb3Vy IGJ1ZmZlciBzdHJhdGVneS4KKwkgKi8KKwlzdHJhdGVneSA9IEdldEFjY2Vzc1N0cmF0ZWd5 KEJBU19WQUNVVU0pOworCisJUmVsYXRpb25MaXN0ID0gQnVpbGRSZWxhdGlvbkxpc3QoZmFs c2UsCisJCQkJCQkJCQkgRGF0YUNoZWNrc3Vtc1dvcmtlclNobWVtLT5wcm9jZXNzX3NoYXJl ZF9jYXRhbG9ncyk7CisJZm9yZWFjaF9vaWQocmVsb2lkLCBSZWxhdGlvbkxpc3QpCisJewor CQlpZiAoIVByb2Nlc3NTaW5nbGVSZWxhdGlvbkJ5T2lkKHJlbG9pZCwgc3RyYXRlZ3kpKQor CQl7CisJCQlhYm9ydGVkID0gdHJ1ZTsKKwkJCWJyZWFrOworCQl9CisJfQorCWxpc3RfZnJl ZShSZWxhdGlvbkxpc3QpOworCisJaWYgKGFib3J0ZWQpCisJeworCQlEYXRhQ2hlY2tzdW1z V29ya2VyU2htZW0tPnN1Y2Nlc3MgPSBEQVRBQ0hFQ0tTVU1TV09SS0VSX0FCT1JURUQ7CisJ CWVyZXBvcnQoREVCVUcxLAorCQkJCShlcnJtc2coImRhdGEgY2hlY2tzdW0gcHJvY2Vzc2lu ZyBhYm9ydGVkIGluIGRhdGFiYXNlIE9JRCAldSIsCisJCQkJCQlkYm9pZCkpKTsKKwkJcmV0 dXJuOworCX0KKworCS8qCisJICogV2FpdCBmb3IgYWxsIHRlbXAgdGFibGVzIHRoYXQgZXhp c3RlZCB3aGVuIHdlIHN0YXJ0ZWQgdG8gZ28gYXdheS4gVGhpcworCSAqIGlzIG5lY2Vzc2Fy eSBzaW5jZSB3ZSBjYW5ub3QgInJlYWNoIiB0aGVtIHRvIGVuYWJsZSBjaGVja3N1bXMuIEFu eSB0ZW1wCisJICogdGFibGVzIGNyZWF0ZWQgYWZ0ZXIgd2Ugc3RhcnRlZCB3aWxsIGFscmVh ZHkgaGF2ZSBjaGVja3N1bXMgaW4gdGhlbQorCSAqIChkdWUgdG8gdGhlICJpbnByb2dyZXNz LW9uIiBzdGF0ZSksIHNvIG5vIG5lZWQgdG8gd2FpdCBmb3IgdGhvc2UuCisJICovCisJZm9y ICg7OykKKwl7CisJCUxpc3QJICAgKkN1cnJlbnRUZW1wVGFibGVzOworCQlpbnQJCQludW1s ZWZ0OworCQljaGFyCQlhY3Rpdml0eVs2NF07CisKKwkJQ3VycmVudFRlbXBUYWJsZXMgPSBC dWlsZFJlbGF0aW9uTGlzdCh0cnVlLCBmYWxzZSk7CisJCW51bWxlZnQgPSAwOworCQlmb3Jl YWNoX29pZCh0bXB0YmxvaWQsIEluaXRpYWxUZW1wVGFibGVMaXN0KQorCQl7CisJCQlpZiAo bGlzdF9tZW1iZXJfb2lkKEN1cnJlbnRUZW1wVGFibGVzLCB0bXB0YmxvaWQpKQorCQkJCW51 bWxlZnQrKzsKKwkJfQorCQlsaXN0X2ZyZWUoQ3VycmVudFRlbXBUYWJsZXMpOworCisJCWlm IChudW1sZWZ0ID09IDApCisJCQlicmVhazsKKworCQkvKgorCQkgKiBBdCBsZWFzdCBvbmUg dGVtcCB0YWJsZSBpcyBsZWZ0IHRvIHdhaXQgZm9yLCBpbmRpY2F0ZSBpbiBwZ3N0YXQKKwkJ ICogYWN0aXZpdHkgYW5kIHByb2dyZXNzIHJlcG9ydGluZy4KKwkJICovCisJCXNucHJpbnRm KGFjdGl2aXR5LAorCQkJCSBzaXplb2YoYWN0aXZpdHkpLAorCQkJCSAiV2FpdGluZyBmb3Ig JWQgdGVtcCB0YWJsZXMgdG8gYmUgcmVtb3ZlZCIsIG51bWxlZnQpOworCQlwZ3N0YXRfcmVw b3J0X2FjdGl2aXR5KFNUQVRFX1JVTk5JTkcsIGFjdGl2aXR5KTsKKworCQkvKiBSZXRyeSBl dmVyeSA1IHNlY29uZHMgKi8KKwkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJKHZvaWQpIFdh aXRMYXRjaChNeUxhdGNoLAorCQkJCQkJIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBX TF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJIDUwMDAsCisJCQkJCQkgV0FJVF9FVkVOVF9D SEVDS1NVTV9FTkFCTEVfRklOSVNIQ09ORElUSU9OKTsKKworCQlMV0xvY2tBY3F1aXJlKERh dGFDaGVja3N1bXNXb3JrZXJMb2NrLCBMV19FWENMVVNJVkUpOworCQlhYm9ydGVkID0gRGF0 YUNoZWNrc3Vtc1dvcmtlclNobWVtLT5sYXVuY2hfZW5hYmxlX2NoZWNrc3VtcyAhPSBlbmFi bGluZ19jaGVja3N1bXM7CisJCUxXTG9ja1JlbGVhc2UoRGF0YUNoZWNrc3Vtc1dvcmtlckxv Y2spOworCisJCWlmIChhYm9ydGVkIHx8IGFib3J0X3JlcXVlc3RlZCkKKwkJeworCQkJRGF0 YUNoZWNrc3Vtc1dvcmtlclNobWVtLT5zdWNjZXNzID0gREFUQUNIRUNLU1VNU1dPUktFUl9B Qk9SVEVEOworCQkJZXJlcG9ydChERUJVRzEsCisJCQkJCShlcnJtc2coImRhdGEgY2hlY2tz dW0gcHJvY2Vzc2luZyBhYm9ydGVkIGluIGRhdGFiYXNlIE9JRCAldSIsCisJCQkJCQkJZGJv aWQpKSk7CisJCQlyZXR1cm47CisJCX0KKwl9CisKKwlsaXN0X2ZyZWUoSW5pdGlhbFRlbXBU YWJsZUxpc3QpOworCisJRGF0YUNoZWNrc3Vtc1dvcmtlclNobWVtLT5zdWNjZXNzID0gREFU QUNIRUNLU1VNU1dPUktFUl9TVUNDRVNTRlVMOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9tZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvbWVz b24uYnVpbGQKaW5kZXggMDAwODYwM2NmZWUuLmNlMTBlZjEwNTlhIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvbWVzb24uYnVpbGQKQEAgLTYsNiArNiw3IEBAIGJhY2tlbmRfc291cmNlcyAr PSBmaWxlcygKICAgJ2Jnd29ya2VyLmMnLAogICAnYmd3cml0ZXIuYycsCiAgICdjaGVja3Bv aW50ZXIuYycsCisgICdkYXRhY2hlY2tzdW1zd29ya2VyLmMnLAogICAnZm9ya19wcm9jZXNz LmMnLAogICAnaW50ZXJydXB0LmMnLAogICAnbGF1bmNoX2JhY2tlbmQuYycsCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYwppbmRleCAyNGQ4OGYzNjhkOC4u MDBjY2U0Yzc2NzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvZGVjb2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNv ZGUuYwpAQCAtMTg2LDYgKzE4Niw3IEBAIHhsb2dfZGVjb2RlKExvZ2ljYWxEZWNvZGluZ0Nv bnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKQogCQljYXNlIFhMT0dfRlBXX0NI QU5HRToKIAkJY2FzZSBYTE9HX0ZQSV9GT1JfSElOVDoKIAkJY2FzZSBYTE9HX0ZQSToKKwkJ Y2FzZSBYTE9HX0NIRUNLU1VNUzoKIAkJY2FzZSBYTE9HX09WRVJXUklURV9DT05UUkVDT1JE OgogCQljYXNlIFhMT0dfQ0hFQ0tQT0lOVF9SRURPOgogCQkJYnJlYWs7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9pcGNpLmMKaW5kZXggMTc0ZWVkNzAzNjcuLmU3NzYxYTNkZGI2IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMKKysrIGIvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvaXBjaS5jCkBAIC0zMCw2ICszMCw4IEBACiAjaW5jbHVkZSAicG9zdG1hc3Rl ci9hdXRvdmFjdXVtLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9iZ3dvcmtlcl9pbnRlcm5h bHMuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd3JpdGVyLmgiCisjaW5jbHVkZSAicG9z dG1hc3Rlci9kYXRhY2hlY2tzdW1zd29ya2VyLmgiCisjaW5jbHVkZSAicG9zdG1hc3Rlci9w b3N0bWFzdGVyLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci93YWxzdW1tYXJpemVyLmgiCiAj aW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmgiCiAjaW5jbHVkZSAicmVw bGljYXRpb24vb3JpZ2luLmgiCkBAIC0xNDgsNiArMTUwLDcgQEAgQ2FsY3VsYXRlU2htZW1T aXplKGludCAqbnVtX3NlbWFwaG9yZXMpCiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFdhaXRF dmVudEN1c3RvbVNobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgSW5qZWN0 aW9uUG9pbnRTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFNsb3RTeW5j U2htZW1TaXplKCkpOworCXNpemUgPSBhZGRfc2l6ZShzaXplLCBEYXRhQ2hlY2tzdW1zV29y a2VyU2htZW1TaXplKCkpOwogCiAJLyogaW5jbHVkZSBhZGRpdGlvbmFsIHJlcXVlc3RlZCBz aG1lbSBmcm9tIHByZWxvYWQgbGlicmFyaWVzICovCiAJc2l6ZSA9IGFkZF9zaXplKHNpemUs IHRvdGFsX2FkZGluX3JlcXVlc3QpOwpAQCAtMzMwLDYgKzMzMyw3IEBAIENyZWF0ZU9yQXR0 YWNoU2htZW1TdHJ1Y3RzKHZvaWQpCiAJUGdBcmNoU2htZW1Jbml0KCk7CiAJQXBwbHlMYXVu Y2hlclNobWVtSW5pdCgpOwogCVNsb3RTeW5jU2htZW1Jbml0KCk7CisJRGF0YUNoZWNrc3Vt c1dvcmtlclNobWVtSW5pdCgpOwogCiAJLyoKIAkgKiBTZXQgdXAgb3RoZXIgbW9kdWxlcyB0 aGF0IG5lZWQgc29tZSBzaGFyZWQgbWVtb3J5IHNwYWNlCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9wcm9jc2lnbmFsLmMKaW5kZXggN2QyMDE5NjU1MDMuLjJiMTNhOGNkMjYwIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKKysrIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCkBAIC0xOCw2ICsxOCw3IEBACiAjaW5j bHVkZSA8dW5pc3RkLmg+CiAKICNpbmNsdWRlICJhY2Nlc3MvcGFyYWxsZWwuaCIKKyNpbmNs dWRlICJhY2Nlc3MveGxvZy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2FzeW5jLmgiCiAjaW5j bHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCkBAIC01NzUsNiArNTc2 LDE4IEBAIFByb2Nlc3NQcm9jU2lnbmFsQmFycmllcih2b2lkKQogCQkJCQljYXNlIFBST0NT SUdOQUxfQkFSUklFUl9TTUdSUkVMRUFTRToKIAkJCQkJCXByb2Nlc3NlZCA9IFByb2Nlc3NC YXJyaWVyU21nclJlbGVhc2UoKTsKIAkJCQkJCWJyZWFrOworCQkJCQljYXNlIFBST0NTSUdO QUxfQkFSUklFUl9DSEVDS1NVTV9JTlBST0dSRVNTX09OOgorCQkJCQkJcHJvY2Vzc2VkID0g QWJzb3JiQ2hlY2tzdW1zT25JblByb2dyZXNzQmFycmllcigpOworCQkJCQkJYnJlYWs7CisJ CQkJCWNhc2UgUFJPQ1NJR05BTF9CQVJSSUVSX0NIRUNLU1VNX09OOgorCQkJCQkJcHJvY2Vz c2VkID0gQWJzb3JiQ2hlY2tzdW1zT25CYXJyaWVyKCk7CisJCQkJCQlicmVhazsKKwkJCQkJ Y2FzZSBQUk9DU0lHTkFMX0JBUlJJRVJfQ0hFQ0tTVU1fSU5QUk9HUkVTU19PRkY6CisJCQkJ CQlwcm9jZXNzZWQgPSBBYnNvcmJDaGVja3N1bXNPZmZJblByb2dyZXNzQmFycmllcigpOwor CQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgUFJPQ1NJR05BTF9CQVJSSUVSX0NIRUNLU1VNX09G RjoKKwkJCQkJCXByb2Nlc3NlZCA9IEFic29yYkNoZWNrc3Vtc09mZkJhcnJpZXIoKTsKKwkJ CQkJCWJyZWFrOwogCQkJCX0KIAogCQkJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9z dG9yYWdlL3BhZ2UvUkVBRE1FIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9wYWdlL1JFQURNRQpp bmRleCBlMzBkN2FjNTlhZC4uNzNjMzZhNjM5MDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3N0b3JhZ2UvcGFnZS9SRUFETUUKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9wYWdlL1JF QURNRQpAQCAtMTAsNyArMTAsOSBAQCBodHRwOi8vd3d3LmNzLnRvcm9udG8uZWR1L35iaWFu Y2EvcGFwZXJzL3NpZ21ldHJpY3MwOS5wZGYsIGRpc2N1c3NlZAogMjAxMC8xMi8yMiBvbiAt aGFja2VycyBsaXN0LgogCiBDdXJyZW50IGltcGxlbWVudGF0aW9uIHJlcXVpcmVzIHRoaXMg YmUgZW5hYmxlZCBzeXN0ZW0td2lkZSBhdCBpbml0ZGIgdGltZSwgb3IKLWJ5IHVzaW5nIHRo ZSBwZ19jaGVja3N1bXMgdG9vbCBvbiBhbiBvZmZsaW5lIGNsdXN0ZXIuCitieSB1c2luZyB0 aGUgcGdfY2hlY2tzdW1zIHRvb2wgb24gYW4gb2ZmbGluZSBjbHVzdGVyLiAgQ2hlY2tzdW1z IGNhbiBhbHNvIGJlCitlbmFibGVkIGF0IHJ1bnRpbWUgdXNpbmcgcGdfZW5hYmxlX2RhdGFf Y2hlY2tzdW1zKCksIGFuZCBkaXNhYmxlZCBieSB1c2luZworcGdfZGlzYWJsZV9kYXRhX2No ZWNrc3VtcygpLgogCiBUaGUgY2hlY2tzdW0gaXMgbm90IHZhbGlkIGF0IGFsbCB0aW1lcyBv biBhIGRhdGEgcGFnZSEhCiBUaGUgY2hlY2tzdW0gaXMgdmFsaWQgd2hlbiB0aGUgcGFnZSBs ZWF2ZXMgdGhlIHNoYXJlZCBwb29sIGFuZCBpcyBjaGVja2VkCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9zdG9yYWdlL3BhZ2UvYnVmcGFnZS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9w YWdlL2J1ZnBhZ2UuYwppbmRleCBlY2M4MWFhY2ZjMy4uOGJkNWZlZDhjODUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvcGFnZS9idWZwYWdlLmMKKysrIGIvc3JjL2JhY2tl bmQvc3RvcmFnZS9wYWdlL2J1ZnBhZ2UuYwpAQCAtOTgsNyArOTgsNyBAQCBQYWdlSXNWZXJp ZmllZEV4dGVuZGVkKFBhZ2VEYXRhICpwYWdlLCBCbG9ja051bWJlciBibGtubywgaW50IGZs YWdzKQogCSAqLwogCWlmICghUGFnZUlzTmV3KHBhZ2UpKQogCXsKLQkJaWYgKERhdGFDaGVj a3N1bXNFbmFibGVkKCkpCisJCWlmIChEYXRhQ2hlY2tzdW1zTmVlZFZlcmlmeSgpKQogCQl7 CiAJCQljaGVja3N1bSA9IHBnX2NoZWNrc3VtX3BhZ2UocGFnZSwgYmxrbm8pOwogCkBAIC0x NTAxLDcgKzE1MDEsNyBAQCBQYWdlU2V0Q2hlY2tzdW1Db3B5KFBhZ2UgcGFnZSwgQmxvY2tO dW1iZXIgYmxrbm8pCiAJc3RhdGljIGNoYXIgKnBhZ2VDb3B5ID0gTlVMTDsKIAogCS8qIElm IHdlIGRvbid0IG5lZWQgYSBjaGVja3N1bSwganVzdCByZXR1cm4gdGhlIHBhc3NlZC1pbiBk YXRhICovCi0JaWYgKFBhZ2VJc05ldyhwYWdlKSB8fCAhRGF0YUNoZWNrc3Vtc0VuYWJsZWQo KSkKKwlpZiAoUGFnZUlzTmV3KHBhZ2UpIHx8ICFEYXRhQ2hlY2tzdW1zTmVlZFdyaXRlKCkp CiAJCXJldHVybiBwYWdlOwogCiAJLyoKQEAgLTE1MzEsNyArMTUzMSw3IEBAIHZvaWQKIFBh Z2VTZXRDaGVja3N1bUlucGxhY2UoUGFnZSBwYWdlLCBCbG9ja051bWJlciBibGtubykKIHsK IAkvKiBJZiB3ZSBkb24ndCBuZWVkIGEgY2hlY2tzdW0sIGp1c3QgcmV0dXJuICovCi0JaWYg KFBhZ2VJc05ldyhwYWdlKSB8fCAhRGF0YUNoZWNrc3Vtc0VuYWJsZWQoKSkKKwlpZiAoUGFn ZUlzTmV3KHBhZ2UpIHx8ICFEYXRhQ2hlY2tzdW1zTmVlZFdyaXRlKCkpCiAJCXJldHVybjsK IAogCSgoUGFnZUhlYWRlcikgcGFnZSktPnBkX2NoZWNrc3VtID0gcGdfY2hlY2tzdW1fcGFn ZShwYWdlLCBibGtubyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS9wZ3N0YXRfaW8uYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9pby5j CmluZGV4IGViNTc1MDI1NTk2Li5lN2I0MThhMDAwZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2lvLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWN0aXZpdHkvcGdzdGF0X2lvLmMKQEAgLTM3MCw2ICszNzAsOCBAQCBwZ3N0YXRfdHJhY2tz X2lvX2JrdHlwZShCYWNrZW5kVHlwZSBia3R5cGUpCiAJCWNhc2UgQl9MT0dHRVI6CiAJCQly ZXR1cm4gZmFsc2U7CiAKKwkJY2FzZSBCX0RBVEFDSEVDS1NVTVNXT1JLRVJfTEFVTkNIRVI6 CisJCWNhc2UgQl9EQVRBQ0hFQ0tTVU1TV09SS0VSX1dPUktFUjoKIAkJY2FzZSBCX0FVVE9W QUNfTEFVTkNIRVI6CiAJCWNhc2UgQl9BVVRPVkFDX1dPUktFUjoKIAkJY2FzZSBCX0JBQ0tF TkQ6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50 X25hbWVzLnR4dCBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnRfbmFt ZXMudHh0CmluZGV4IGUxOTlmMDcxNjI4Li5jN2NkNDhlOGQzMyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudF9uYW1lcy50eHQKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudF9uYW1lcy50eHQKQEAgLTExNSw2 ICsxMTUsOCBAQCBDSEVDS1BPSU5UX0RFTEFZX0NPTVBMRVRFCSJXYWl0aW5nIGZvciBhIGJh Y2tlbmQgdGhhdCBibG9ja3MgYSBjaGVja3BvaW50IGZyb20gYwogQ0hFQ0tQT0lOVF9ERUxB WV9TVEFSVAkiV2FpdGluZyBmb3IgYSBiYWNrZW5kIHRoYXQgYmxvY2tzIGEgY2hlY2twb2lu dCBmcm9tIHN0YXJ0aW5nLiIKIENIRUNLUE9JTlRfRE9ORQkiV2FpdGluZyBmb3IgYSBjaGVj a3BvaW50IHRvIGNvbXBsZXRlLiIKIENIRUNLUE9JTlRfU1RBUlQJIldhaXRpbmcgZm9yIGEg Y2hlY2twb2ludCB0byBzdGFydC4iCitDSEVDS1NVTV9FTkFCTEVfU1RBUlRDT05ESVRJT04J IldhaXRpbmcgZm9yIGRhdGEgY2hlY2tzdW1zIGVuYWJsaW5nIHRvIHN0YXJ0LiIKK0NIRUNL U1VNX0VOQUJMRV9GSU5JU0hDT05ESVRJT04JIldhaXRpbmcgZm9yIGRhdGEgY2hlY2tzdW1z IHRvIGJlIGVuYWJsZWQuIgogRVhFQ1VURV9HQVRIRVIJIldhaXRpbmcgZm9yIGFjdGl2aXR5 IGZyb20gYSBjaGlsZCBwcm9jZXNzIHdoaWxlIGV4ZWN1dGluZyBhIDxsaXRlcmFsPkdhdGhl cjwvbGl0ZXJhbD4gcGxhbiBub2RlLiIKIEhBU0hfQkFUQ0hfQUxMT0NBVEUJIldhaXRpbmcg Zm9yIGFuIGVsZWN0ZWQgUGFyYWxsZWwgSGFzaCBwYXJ0aWNpcGFudCB0byBhbGxvY2F0ZSBh IGhhc2ggdGFibGUuIgogSEFTSF9CQVRDSF9FTEVDVAkiV2FpdGluZyB0byBlbGVjdCBhIFBh cmFsbGVsIEhhc2ggcGFydGljaXBhbnQgdG8gYWxsb2NhdGUgYSBoYXNoIHRhYmxlLiIKQEAg LTM0Niw2ICszNDgsNyBAQCBXQUxTdW1tYXJpemVyCSJXYWl0aW5nIHRvIHJlYWQgb3IgdXBk YXRlIFdBTCBzdW1tYXJpemF0aW9uIHN0YXRlLiIKIERTTVJlZ2lzdHJ5CSJXYWl0aW5nIHRv IHJlYWQgb3IgdXBkYXRlIHRoZSBkeW5hbWljIHNoYXJlZCBtZW1vcnkgcmVnaXN0cnkuIgog SW5qZWN0aW9uUG9pbnQJIldhaXRpbmcgdG8gcmVhZCBvciB1cGRhdGUgaW5mb3JtYXRpb24g cmVsYXRlZCB0byBpbmplY3Rpb24gcG9pbnRzLiIKIFNlcmlhbENvbnRyb2wJIldhaXRpbmcg dG8gcmVhZCBvciB1cGRhdGUgc2hhcmVkIDxmaWxlbmFtZT5wZ19zZXJpYWw8L2ZpbGVuYW1l PiBzdGF0ZS4iCitEYXRhQ2hlY2tzdW1zV29ya2VyCSJXYWl0aW5nIGZvciBkYXRhIGNoZWNr c3Vtc3dvcmtlci4iCiAKICMKICMgRU5EIE9GIFBSRURFRklORUQgTFdMT0NLUyAoRE8gTk9U IENIQU5HRSBUSElTIExJTkUpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQv cGdzdGF0ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCmlu ZGV4IDkxNzJlMWNiOWQyLi5mNmJkMWU5ZjBjYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bn c3RhdGZ1bmNzLmMKQEAgLTI3NCw2ICsyNzQsOCBAQCBwZ19zdGF0X2dldF9wcm9ncmVzc19p bmZvKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWNtZHR5cGUgPSBQUk9HUkVTU19DT01NQU5EX0JB U0VCQUNLVVA7CiAJZWxzZSBpZiAocGdfc3RyY2FzZWNtcChjbWQsICJDT1BZIikgPT0gMCkK IAkJY21kdHlwZSA9IFBST0dSRVNTX0NPTU1BTkRfQ09QWTsKKwllbHNlIGlmIChwZ19zdHJj YXNlY21wKGNtZCwgIkRBVEFDSEVDS1NVTVMiKSA9PSAwKQorCQljbWR0eXBlID0gUFJPR1JF U1NfQ09NTUFORF9EQVRBQ0hFQ0tTVU1TOwogCWVsc2UKIAkJZXJlcG9ydChFUlJPUiwKIAkJ CQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKQEAgLTExNDYs OSArMTE0OCw2IEBAIHBnX3N0YXRfZ2V0X2RiX2NoZWNrc3VtX2ZhaWx1cmVzKFBHX0ZVTkNU SU9OX0FSR1MpCiAJaW50NjQJCXJlc3VsdDsKIAlQZ1N0YXRfU3RhdERCRW50cnkgKmRiZW50 cnk7CiAKLQlpZiAoIURhdGFDaGVja3N1bXNFbmFibGVkKCkpCi0JCVBHX1JFVFVSTl9OVUxM KCk7Ci0KIAlpZiAoKGRiZW50cnkgPSBwZ3N0YXRfZmV0Y2hfc3RhdF9kYmVudHJ5KGRiaWQp KSA9PSBOVUxMKQogCQlyZXN1bHQgPSAwOwogCWVsc2UKQEAgLTExNjQsOSArMTE2Myw2IEBA IHBnX3N0YXRfZ2V0X2RiX2NoZWNrc3VtX2xhc3RfZmFpbHVyZShQR19GVU5DVElPTl9BUkdT KQogCVRpbWVzdGFtcFR6IHJlc3VsdDsKIAlQZ1N0YXRfU3RhdERCRW50cnkgKmRiZW50cnk7 CiAKLQlpZiAoIURhdGFDaGVja3N1bXNFbmFibGVkKCkpCi0JCVBHX1JFVFVSTl9OVUxMKCk7 Ci0KIAlpZiAoKGRiZW50cnkgPSBwZ3N0YXRfZmV0Y2hfc3RhdF9kYmVudHJ5KGRiaWQpKSA9 PSBOVUxMKQogCQlyZXN1bHQgPSAwOwogCWVsc2UKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2luaXQvbWlzY2luaXQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2lu aXQuYwppbmRleCBkYzM1MjE0NTdjNy4uYTA3MWJhNmY0NTUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2luaXQvbWlzY2luaXQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9p bml0L21pc2Npbml0LmMKQEAgLTI5Myw2ICsyOTMsMTIgQEAgR2V0QmFja2VuZFR5cGVEZXNj KEJhY2tlbmRUeXBlIGJhY2tlbmRUeXBlKQogCQljYXNlIEJfQ0hFQ0tQT0lOVEVSOgogCQkJ YmFja2VuZERlc2MgPSBnZXR0ZXh0X25vb3AoImNoZWNrcG9pbnRlciIpOwogCQkJYnJlYWs7 CisJCWNhc2UgQl9EQVRBQ0hFQ0tTVU1TV09SS0VSX0xBVU5DSEVSOgorCQkJYmFja2VuZERl c2MgPSAiZGF0YWNoZWNrc3Vtc3dvcmtlciBsYXVuY2hlciI7CisJCQlicmVhazsKKwkJY2Fz ZSBCX0RBVEFDSEVDS1NVTVNXT1JLRVJfV09SS0VSOgorCQkJYmFja2VuZERlc2MgPSAiZGF0 YWNoZWNrc3Vtc3dvcmtlciB3b3JrZXIiOworCQkJYnJlYWs7CiAJCWNhc2UgQl9MT0dHRVI6 CiAJCQliYWNrZW5kRGVzYyA9IGdldHRleHRfbm9vcCgibG9nZ2VyIik7CiAJCQlicmVhazsK QEAgLTg5Miw3ICs4OTgsOCBAQCBJbml0aWFsaXplU2Vzc2lvblVzZXJJZFN0YW5kYWxvbmUo dm9pZCkKIAkgKiB3b3JrZXJzLCBpbiBzbG90IHN5bmMgd29ya2VyIGFuZCBpbiBiYWNrZ3Jv dW5kIHdvcmtlcnMuCiAJICovCiAJQXNzZXJ0KCFJc1VuZGVyUG9zdG1hc3RlciB8fCBBbUF1 dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkgfHwKLQkJICAgQW1Mb2dpY2FsU2xvdFN5bmNXb3Jr ZXJQcm9jZXNzKCkgfHwgQW1CYWNrZ3JvdW5kV29ya2VyUHJvY2VzcygpKTsKKwkJICAgQW1M b2dpY2FsU2xvdFN5bmNXb3JrZXJQcm9jZXNzKCkgfHwgQW1CYWNrZ3JvdW5kV29ya2VyUHJv Y2VzcygpIHx8CisJCSAgIEFtRGF0YUNoZWNrc3Vtc1dvcmtlclByb2Nlc3MoKSk7CiAKIAkv KiBjYWxsIG9ubHkgb25jZSAqLwogCUFzc2VydCghT2lkSXNWYWxpZChBdXRoZW50aWNhdGVk VXNlcklkKSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0 LmMgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMKaW5kZXggZWUxYTlkNWQ5 OGIuLjcwODk5ZTZlZjJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bv c3Rpbml0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jCkBAIC03 MzksNiArNzM5LDExIEBAIEluaXRQb3N0Z3Jlcyhjb25zdCBjaGFyICppbl9kYm5hbWUsIE9p ZCBkYm9pZCwKIAkgKi8KIAlTaGFyZWRJbnZhbEJhY2tlbmRJbml0KGZhbHNlKTsKIAorCS8q CisJICogU2V0IHVwIGJhY2tlbmQgbG9jYWwgY2FjaGUgb2YgQ29udHJvbGRhdGEgdmFsdWVz LgorCSAqLworCUluaXRMb2NhbENvbnRyb2xkYXRhKCk7CisKIAlQcm9jU2lnbmFsSW5pdChN eUNhbmNlbEtleVZhbGlkLCBNeUNhbmNlbEtleSk7CiAKIAkvKgpAQCAtODY5LDcgKzg3NCw3 IEBAIEluaXRQb3N0Z3Jlcyhjb25zdCBjaGFyICppbl9kYm5hbWUsIE9pZCBkYm9pZCwKIAkJ CQkJIGVycmhpbnQoIllvdSBzaG91bGQgaW1tZWRpYXRlbHkgcnVuIENSRUFURSBVU0VSIFwi JXNcIiBTVVBFUlVTRVI7LiIsCiAJCQkJCQkJIHVzZXJuYW1lICE9IE5VTEwgPyB1c2VybmFt ZSA6ICJwb3N0Z3JlcyIpKSk7CiAJfQotCWVsc2UgaWYgKEFtQmFja2dyb3VuZFdvcmtlclBy b2Nlc3MoKSkKKwllbHNlIGlmIChBbUJhY2tncm91bmRXb3JrZXJQcm9jZXNzKCkgfHwgQW1E YXRhQ2hlY2tzdW1zV29ya2VyUHJvY2VzcygpKQogCXsKIAkJaWYgKHVzZXJuYW1lID09IE5V TEwgJiYgIU9pZElzVmFsaWQodXNlcm9pZCkpCiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9n dWNfdGFibGVzLmMKaW5kZXggYWQyNWNiYjM5YzUuLjA1Y2JhM2EwMmUzIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwpAQCAtNDc2LDYgKzQ3NiwxNCBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IGNvbmZpZ19lbnVtX2VudHJ5IHdhbF9jb21wcmVzc2lvbl9vcHRpb25z W10gPSB7CiAJe05VTEwsIDAsIGZhbHNlfQogfTsKIAorc3RhdGljIGNvbnN0IHN0cnVjdCBj b25maWdfZW51bV9lbnRyeSBkYXRhX2NoZWNrc3Vtc19vcHRpb25zW10gPSB7CisJeyJvbiIs IERBVEFfQ0hFQ0tTVU1TX09OLCB0cnVlfSwKKwl7Im9mZiIsIERBVEFfQ0hFQ0tTVU1TX09G RiwgdHJ1ZX0sCisJeyJpbnByb2dyZXNzLW9uIiwgREFUQV9DSEVDS1NVTVNfSU5QUk9HUkVT U19PTiwgdHJ1ZX0sCisJeyJpbnByb2dyZXNzLW9mZiIsIERBVEFfQ0hFQ0tTVU1TX0lOUFJP R1JFU1NfT0ZGLCB0cnVlfSwKKwl7TlVMTCwgMCwgZmFsc2V9Cit9OworCiAvKgogICogT3B0 aW9ucyBmb3IgZW51bSB2YWx1ZXMgc3RvcmVkIGluIG90aGVyIG1vZHVsZXMKICAqLwpAQCAt NjAxLDcgKzYwOSw3IEBAIHN0YXRpYyBpbnQJc2hhcmVkX21lbW9yeV9zaXplX21iOwogc3Rh dGljIGludAlzaGFyZWRfbWVtb3J5X3NpemVfaW5faHVnZV9wYWdlczsKIHN0YXRpYyBpbnQJ d2FsX2Jsb2NrX3NpemU7CiBzdGF0aWMgaW50CW51bV9vc19zZW1hcGhvcmVzOwotc3RhdGlj IGJvb2wgZGF0YV9jaGVja3N1bXM7CitzdGF0aWMgaW50CWRhdGFfY2hlY2tzdW1zOwogc3Rh dGljIGJvb2wgaW50ZWdlcl9kYXRldGltZXM7CiAKICNpZmRlZiBVU0VfQVNTRVJUX0NIRUNL SU5HCkBAIC0xOTUyLDE3ICsxOTYwLDYgQEAgc3RydWN0IGNvbmZpZ19ib29sIENvbmZpZ3Vy ZU5hbWVzQm9vbFtdID0KIAkJTlVMTCwgTlVMTCwgTlVMTAogCX0sCiAKLQl7Ci0JCXsiZGF0 YV9jaGVja3N1bXMiLCBQR0NfSU5URVJOQUwsIFBSRVNFVF9PUFRJT05TLAotCQkJZ2V0dGV4 dF9ub29wKCJTaG93cyB3aGV0aGVyIGRhdGEgY2hlY2tzdW1zIGFyZSB0dXJuZWQgb24gZm9y IHRoaXMgY2x1c3Rlci4iKSwKLQkJCU5VTEwsCi0JCQlHVUNfTk9UX0lOX1NBTVBMRSB8IEdV Q19ESVNBTExPV19JTl9GSUxFIHwgR1VDX1JVTlRJTUVfQ09NUFVURUQKLQkJfSwKLQkJJmRh dGFfY2hlY2tzdW1zLAotCQlmYWxzZSwKLQkJTlVMTCwgTlVMTCwgTlVMTAotCX0sCi0KIAl7 CiAJCXsic3lzbG9nX3NlcXVlbmNlX251bWJlcnMiLCBQR0NfU0lHSFVQLCBMT0dHSU5HX1dI RVJFLAogCQkJZ2V0dGV4dF9ub29wKCJBZGQgc2VxdWVuY2UgbnVtYmVyIHRvIHN5c2xvZyBt ZXNzYWdlcyB0byBhdm9pZCBkdXBsaWNhdGUgc3VwcHJlc3Npb24uIiksCkBAIC01Mjk5LDYg KzUyOTYsMTcgQEAgc3RydWN0IGNvbmZpZ19lbnVtIENvbmZpZ3VyZU5hbWVzRW51bVtdID0K IAkJTlVMTCwgTlVMTCwgTlVMTAogCX0sCiAKKwl7CisJCXsiZGF0YV9jaGVja3N1bXMiLCBQ R0NfSU5URVJOQUwsIFBSRVNFVF9PUFRJT05TLAorCQkJZ2V0dGV4dF9ub29wKCJTaG93cyB3 aGV0aGVyIGRhdGEgY2hlY2tzdW1zIGFyZSB0dXJuZWQgb24gZm9yIHRoaXMgY2x1c3Rlci4i KSwKKwkJCU5VTEwsCisJCQlHVUNfTk9UX0lOX1NBTVBMRSB8IEdVQ19ESVNBTExPV19JTl9G SUxFCisJCX0sCisJCSZkYXRhX2NoZWNrc3VtcywKKwkJREFUQV9DSEVDS1NVTVNfT0ZGLCBk YXRhX2NoZWNrc3Vtc19vcHRpb25zLAorCQlOVUxMLCBOVUxMLCBzaG93X2RhdGFfY2hlY2tz dW1zCisJfSwKKwogCS8qIEVuZC1vZi1saXN0IG1hcmtlciAqLwogCXsKIAkJe05VTEwsIDAs IDAsIE5VTEwsIE5VTEx9LCBOVUxMLCAwLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMCmRpZmYg LS1naXQgYS9zcmMvYmluL3BnX2NoZWNrc3Vtcy9wZ19jaGVja3N1bXMuYyBiL3NyYy9iaW4v cGdfY2hlY2tzdW1zL3BnX2NoZWNrc3Vtcy5jCmluZGV4IDg2N2FlZGRjNjAxLi43OWMzZjg2 MzU3ZSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19jaGVja3N1bXMvcGdfY2hlY2tzdW1zLmMK KysrIGIvc3JjL2Jpbi9wZ19jaGVja3N1bXMvcGdfY2hlY2tzdW1zLmMKQEAgLTU3Niw3ICs1 NzYsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCW1vZGUgPT0gUEdfTU9E RV9ESVNBQkxFKQogCQlwZ19mYXRhbCgiZGF0YSBjaGVja3N1bXMgYXJlIGFscmVhZHkgZGlz YWJsZWQgaW4gY2x1c3RlciIpOwogCi0JaWYgKENvbnRyb2xGaWxlLT5kYXRhX2NoZWNrc3Vt X3ZlcnNpb24gPiAwICYmCisJaWYgKENvbnRyb2xGaWxlLT5kYXRhX2NoZWNrc3VtX3ZlcnNp b24gPT0gREFUQV9DSEVDS1NVTVNfT04gJiYKIAkJbW9kZSA9PSBQR19NT0RFX0VOQUJMRSkK IAkJcGdfZmF0YWwoImRhdGEgY2hlY2tzdW1zIGFyZSBhbHJlYWR5IGVuYWJsZWQgaW4gY2x1 c3RlciIpOwogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUvY29udHJvbGRhdGEu YyBiL3NyYy9iaW4vcGdfdXBncmFkZS9jb250cm9sZGF0YS5jCmluZGV4IGJkNDllYTg2N2Jm Li5mNDg5MzZkM2IwMCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ191cGdyYWRlL2NvbnRyb2xk YXRhLmMKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL2NvbnRyb2xkYXRhLmMKQEAgLTE0LDYg KzE0LDcgQEAKIAogI2luY2x1ZGUgImNvbW1vbi9zdHJpbmcuaCIKICNpbmNsdWRlICJwZ191 cGdyYWRlLmgiCisjaW5jbHVkZSAic3RvcmFnZS9idWZwYWdlLmgiCiAKIAogLyoKQEAgLTcz NSw2ICs3MzYsMTQgQEAgY2hlY2tfY29udHJvbF9kYXRhKENvbnRyb2xEYXRhICpvbGRjdHJs LAogCSAqIGNoZWNrX2Zvcl9pc25fYW5kX2ludDhfcGFzc2luZ19taXNtYXRjaCgpLgogCSAq LwogCisJLyoKKwkgKiBJZiBkYXRhIGNoZWNrc3VtcyBhcmUgaW4gYW55IGluLXByb2dyZXNz IHN0YXRlIHRoZW4gZGlzYWxsb3cgdGhlCisJICogdXBncmFkZS4gVGhlIHVzZXIgc2hvdWxk IGVpdGhlciBsZXQgdGhlIHByb2Nlc3MgZmluaXNoLCBvciB0dXJuIG9mZgorCSAqIGRhdGEg Y2hlY2tzdW1zLCBiZWZvcmUgcmV0cnlpbmcuCisJICovCisJaWYgKG9sZGN0cmwtPmRhdGFf Y2hlY2tzdW1fdmVyc2lvbiA+IFBHX0RBVEFfQ0hFQ0tTVU1fVkVSU0lPTikKKwkJcGdfZmF0 YWwoImNoZWNrc3VtcyBhcmUgYmVpbmcgZW5hYmxlZCBpbiB0aGUgb2xkIGNsdXN0ZXIiKTsK KwogCS8qCiAJICogV2UgbWlnaHQgZXZlbnR1YWxseSBhbGxvdyB1cGdyYWRlcyBmcm9tIGNo ZWNrc3VtIHRvIG5vLWNoZWNrc3VtCiAJICogY2x1c3RlcnMuCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9hY2Nlc3MveGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cuaAppbmRl eCBkMzEzMDk5YzAyNy4uMGJiMzJjOWMwZmMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy94bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cuaApAQCAtMTE3LDcg KzExNyw3IEBAIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgd2FsX2xldmVsOwogICogb2YgdGhl IGJpdHMgbWFrZSBpdCB0byBkaXNrLCBidXQgdGhlIGNoZWNrc3VtIHdvdWxkbid0IG1hdGNo LiAgQWxzbyBXQUwtbG9nCiAgKiB0aGVtIGlmIGZvcmNlZCBieSB3YWxfbG9nX2hpbnRzPW9u LgogICovCi0jZGVmaW5lIFhMb2dIaW50Qml0SXNOZWVkZWQoKSAoRGF0YUNoZWNrc3Vtc0Vu YWJsZWQoKSB8fCB3YWxfbG9nX2hpbnRzKQorI2RlZmluZSBYTG9nSGludEJpdElzTmVlZGVk KCkgKHdhbF9sb2dfaGludHMgfHwgRGF0YUNoZWNrc3Vtc05lZWRXcml0ZSgpKQogCiAvKiBE byB3ZSBuZWVkIHRvIFdBTC1sb2cgaW5mb3JtYXRpb24gcmVxdWlyZWQgb25seSBmb3IgSG90 IFN0YW5kYnkgYW5kIGxvZ2ljYWwgcmVwbGljYXRpb24/ICovCiAjZGVmaW5lIFhMb2dTdGFu ZGJ5SW5mb0FjdGl2ZSgpICh3YWxfbGV2ZWwgPj0gV0FMX0xFVkVMX1JFUExJQ0EpCkBAIC0y MzAsNyArMjMwLDE5IEBAIGV4dGVybiBYTG9nUmVjUHRyIEdldFhMb2dXcml0ZVJlY1B0cih2 b2lkKTsKIAogZXh0ZXJuIHVpbnQ2NCBHZXRTeXN0ZW1JZGVudGlmaWVyKHZvaWQpOwogZXh0 ZXJuIGNoYXIgKkdldE1vY2tBdXRoZW50aWNhdGlvbk5vbmNlKHZvaWQpOwotZXh0ZXJuIGJv b2wgRGF0YUNoZWNrc3Vtc0VuYWJsZWQodm9pZCk7CitleHRlcm4gYm9vbCBEYXRhQ2hlY2tz dW1zTmVlZFdyaXRlKHZvaWQpOworZXh0ZXJuIGJvb2wgRGF0YUNoZWNrc3Vtc05lZWRWZXJp Znkodm9pZCk7CitleHRlcm4gYm9vbCBEYXRhQ2hlY2tzdW1zT25JblByb2dyZXNzKHZvaWQp OworZXh0ZXJuIGJvb2wgRGF0YUNoZWNrc3Vtc09mZkluUHJvZ3Jlc3Modm9pZCk7CitleHRl cm4gdm9pZCBTZXREYXRhQ2hlY2tzdW1zT25JblByb2dyZXNzKHZvaWQpOworZXh0ZXJuIHZv aWQgU2V0RGF0YUNoZWNrc3Vtc09uKHZvaWQpOworZXh0ZXJuIHZvaWQgU2V0RGF0YUNoZWNr c3Vtc09mZih2b2lkKTsKK2V4dGVybiBib29sIEFic29yYkNoZWNrc3Vtc09uSW5Qcm9ncmVz c0JhcnJpZXIodm9pZCk7CitleHRlcm4gYm9vbCBBYnNvcmJDaGVja3N1bXNPZmZJblByb2dy ZXNzQmFycmllcih2b2lkKTsKK2V4dGVybiBib29sIEFic29yYkNoZWNrc3Vtc09uQmFycmll cih2b2lkKTsKK2V4dGVybiBib29sIEFic29yYkNoZWNrc3Vtc09mZkJhcnJpZXIodm9pZCk7 CitleHRlcm4gY29uc3QgY2hhciAqc2hvd19kYXRhX2NoZWNrc3Vtcyh2b2lkKTsKK2V4dGVy biB2b2lkIEluaXRMb2NhbENvbnRyb2xkYXRhKHZvaWQpOwogZXh0ZXJuIGJvb2wgR2V0RGVm YXVsdENoYXJTaWduZWRuZXNzKHZvaWQpOwogZXh0ZXJuIFhMb2dSZWNQdHIgR2V0RmFrZUxT TkZvclVubG9nZ2VkUmVsKHZvaWQpOwogZXh0ZXJuIFNpemUgWExPR1NobWVtU2l6ZSh2b2lk KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nX2ludGVybmFsLmggYi9z cmMvaW5jbHVkZS9hY2Nlc3MveGxvZ19pbnRlcm5hbC5oCmluZGV4IDJjZjhkNTVkNzA2Li5l ZTgyZDRjZTczZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dfaW50ZXJu YWwuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ19pbnRlcm5hbC5oCkBAIC0yNSw2 ICsyNSw3IEBACiAjaW5jbHVkZSAibGliL3N0cmluZ2luZm8uaCIKICNpbmNsdWRlICJwZ3Rp bWUuaCIKICNpbmNsdWRlICJzdG9yYWdlL2Jsb2NrLmgiCisjaW5jbHVkZSAic3RvcmFnZS9j aGVja3N1bS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcmVsZmlsZWxvY2F0b3IuaCIKIAogCkBA IC0yODksNiArMjkwLDEyIEBAIHR5cGVkZWYgc3RydWN0IHhsX3Jlc3RvcmVfcG9pbnQKIAlj aGFyCQlycF9uYW1lW01BWEZOQU1FTEVOXTsKIH0geGxfcmVzdG9yZV9wb2ludDsKIAorLyog SW5mb3JtYXRpb24gbG9nZ2VkIHdoZW4gZGF0YSBjaGVja3N1bSBsZXZlbCBpcyBjaGFuZ2Vk ICovCit0eXBlZGVmIHN0cnVjdCB4bF9jaGVja3N1bV9zdGF0ZQoreworCUNoZWNrc3VtVHlw ZSBuZXdfY2hlY2tzdW10eXBlOworfSB4bF9jaGVja3N1bV9zdGF0ZTsKKwogLyogT3Zlcndy aXRlIG9mIHByaW9yIGNvbnRyZWNvcmQgKi8KIHR5cGVkZWYgc3RydWN0IHhsX292ZXJ3cml0 ZV9jb250cmVjb3JkCiB7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Nv bnRyb2wuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29udHJvbC5oCmluZGV4IDYzZTgz NGE2Y2U0Li45YjVhNTBhZGY1NCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19jb250cm9sLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb250cm9sLmgKQEAg LTgwLDYgKzgwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ2hlY2tQb2ludAogLyogMHhDMCBpcyB1 c2VkIGluIFBvc3RncmVzIDkuNS0xMSAqLwogI2RlZmluZSBYTE9HX09WRVJXUklURV9DT05U UkVDT1JECQkweEQwCiAjZGVmaW5lIFhMT0dfQ0hFQ0tQT0lOVF9SRURPCQkJMHhFMAorI2Rl ZmluZSBYTE9HX0NIRUNLU1VNUwkJCQkJMHhGMAogCiAKIC8qCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w cm9jLmRhdAppbmRleCBjZWRlOTkyYjZlMi4uZmIwZTA2MmI5ODQgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdApAQCAtMTIyNDYsNiArMTIyNDYsMjMgQEAKICAgcHJvbmFtZSA9PiAn anNvbmJfc3Vic2NyaXB0X2hhbmRsZXInLCBwcm9yZXR0eXBlID0+ICdpbnRlcm5hbCcsCiAg IHByb2FyZ3R5cGVzID0+ICdpbnRlcm5hbCcsIHByb3NyYyA9PiAnanNvbmJfc3Vic2NyaXB0 X2hhbmRsZXInIH0sCiAKKyMgZGF0YSBjaGVja3N1bSBtYW5hZ2VtZW50IGZ1bmN0aW9ucwor eyBvaWQgPT4gJzkyNTgnLAorICBkZXNjciA9PiAnZGlzYWJsZSBkYXRhIGNoZWNrc3Vtcycs CisgIHByb25hbWUgPT4gJ3BnX2Rpc2FibGVfZGF0YV9jaGVja3N1bXMnLCBwcm92b2xhdGls ZSA9PiAndicsIHByb3JldHR5cGUgPT4gJ3ZvaWQnLAorICBwcm9wYXJhbGxlbCA9PiAncics CisgIHByb2FyZ3R5cGVzID0+ICcnLAorICBwcm9zcmMgPT4gJ2Rpc2FibGVfZGF0YV9jaGVj a3N1bXMnIH0sCisKK3sgb2lkID0+ICc5MjU3JywKKyAgZGVzY3IgPT4gJ2VuYWJsZSBkYXRh IGNoZWNrc3VtcycsCisgIHByb25hbWUgPT4gJ3BnX2VuYWJsZV9kYXRhX2NoZWNrc3Vtcycs IHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAndm9pZCcsCisgIHByb3BhcmFs bGVsID0+ICdyJywKKyAgcHJvYXJndHlwZXMgPT4gJ2ludDQgaW50NCBib29sJywgcHJvYWxs YXJndHlwZXMgPT4gJ3tpbnQ0LGludDQsYm9vbH0nLAorICBwcm9hcmdtb2RlcyA9PiAne2ks aSxpfScsCisgIHByb2FyZ25hbWVzID0+ICd7Y29zdF9kZWxheSxjb3N0X2xpbWl0LGZhc3R9 JywKKyAgcHJvc3JjID0+ICdlbmFibGVfZGF0YV9jaGVja3N1bXMnIH0sCisKICMgY29sbGF0 aW9uIG1hbmFnZW1lbnQgZnVuY3Rpb25zCiB7IG9pZCA9PiAnMzQ0NScsIGRlc2NyID0+ICdp bXBvcnQgY29sbGF0aW9ucyBmcm9tIG9wZXJhdGluZyBzeXN0ZW0nLAogICBwcm9uYW1lID0+ ICdwZ19pbXBvcnRfc3lzdGVtX2NvbGxhdGlvbnMnLCBwcm9jb3N0ID0+ICcxMDAnLApkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvcHJvZ3Jlc3MuaCBiL3NyYy9pbmNsdWRl L2NvbW1hbmRzL3Byb2dyZXNzLmgKaW5kZXggN2M3MzZlN2IwM2IuLjFlYmQwYzc5MmI0IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9wcm9ncmVzcy5oCisrKyBiL3NyYy9p bmNsdWRlL2NvbW1hbmRzL3Byb2dyZXNzLmgKQEAgLTE1Nyw0ICsxNTcsMjIgQEAKICNkZWZp bmUgUFJPR1JFU1NfQ09QWV9UWVBFX1BJUEUgMwogI2RlZmluZSBQUk9HUkVTU19DT1BZX1RZ UEVfQ0FMTEJBQ0sgNAogCisvKiBQcm9ncmVzcyBwYXJhbWV0ZXJzIGZvciBQUk9HUkVTU19E QVRBQ0hFQ0tTVU1TICovCisjZGVmaW5lIFBST0dSRVNTX0RBVEFDSEVDS1NVTVNfUEhBU0Ug MAorI2RlZmluZSBQUk9HUkVTU19EQVRBQ0hFQ0tTVU1TX1RPVEFMX0RCIDEKKyNkZWZpbmUg UFJPR1JFU1NfREFUQUNIRUNLU1VNU19UT1RBTF9SRUwgMgorI2RlZmluZSBQUk9HUkVTU19E QVRBQ0hFQ0tTVU1TX1BST0NFU1NFRF9EQiAzCisjZGVmaW5lIFBST0dSRVNTX0RBVEFDSEVD S1NVTVNfUFJPQ0VTU0VEX1JFTCA0CisjZGVmaW5lIFBST0dSRVNTX0RBVEFDSEVDS1NVTVNf Q1VSX0RCIDUKKyNkZWZpbmUgUFJPR1JFU1NfREFUQUNIRUNLU1VNU19DVVJfUkVMIDYKKyNk ZWZpbmUgUFJPR1JFU1NfREFUQUNIRUNLU1VNU19DVVJfUkVMX1RPVEFMX0JMT0NLUyA3Cisj ZGVmaW5lIFBST0dSRVNTX0RBVEFDSEVDS1NVTVNfQ1VSX1JFTF9QUk9DRVNTRURfQkxPQ0tT IDgKKworLyogUGhhc2VzIG9mIGRhdGFjaGVja3N1bXN3b3JrZXIgb3BlcmF0aW9uICovCisj ZGVmaW5lIFBST0dSRVNTX0RBVEFDSEVDS1NVTVNfUEhBU0VfRU5BQkxJTkcgMAorI2RlZmlu ZSBQUk9HUkVTU19EQVRBQ0hFQ0tTVU1TX1BIQVNFX0RJU0FCTElORyAxCisjZGVmaW5lIFBS T0dSRVNTX0RBVEFDSEVDS1NVTVNfUEhBU0VfV0FJVElOR19CQUNLRU5EUyAyCisjZGVmaW5l IFBST0dSRVNTX0RBVEFDSEVDS1NVTVNfUEhBU0VfV0FJVElOR19URU1QUkVMIDMKKyNkZWZp bmUgUFJPR1JFU1NfREFUQUNIRUNLU1VNU19ET05FIDQKKwogI2VuZGlmCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaCBiL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCmlu ZGV4IGEyYjYzNDk1ZWVjLi45OTIzYzdmNTE4ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv bWlzY2FkbWluLmgKKysrIGIvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKQEAgLTM2NSw2ICsz NjUsOSBAQCB0eXBlZGVmIGVudW0gQmFja2VuZFR5cGUKIAlCX1dBTF9TVU1NQVJJWkVSLAog CUJfV0FMX1dSSVRFUiwKIAorCUJfREFUQUNIRUNLU1VNU1dPUktFUl9MQVVOQ0hFUiwKKwlC X0RBVEFDSEVDS1NVTVNXT1JLRVJfV09SS0VSLAorCiAJLyoKIAkgKiBMb2dnZXIgaXMgbm90 IGNvbm5lY3RlZCB0byBzaGFyZWQgbWVtb3J5IGFuZCBkb2VzIG5vdCBoYXZlIGEgUEdQUk9D CiAJICogZW50cnkuCkBAIC0zODksNiArMzkyLDcgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIEJh Y2tlbmRUeXBlIE15QmFja2VuZFR5cGU7CiAjZGVmaW5lIEFtV2FsUmVjZWl2ZXJQcm9jZXNz KCkJCShNeUJhY2tlbmRUeXBlID09IEJfV0FMX1JFQ0VJVkVSKQogI2RlZmluZSBBbVdhbFN1 bW1hcml6ZXJQcm9jZXNzKCkJKE15QmFja2VuZFR5cGUgPT0gQl9XQUxfU1VNTUFSSVpFUikK ICNkZWZpbmUgQW1XYWxXcml0ZXJQcm9jZXNzKCkJCShNeUJhY2tlbmRUeXBlID09IEJfV0FM X1dSSVRFUikKKyNkZWZpbmUgQW1EYXRhQ2hlY2tzdW1zV29ya2VyUHJvY2VzcygpCShNeUJh Y2tlbmRUeXBlID09IEJfREFUQUNIRUNLU1VNU1dPUktFUl9MQVVOQ0hFUiB8fCBNeUJhY2tl bmRUeXBlID09IEJfREFUQUNIRUNLU1VNU1dPUktFUl9XT1JLRVIpCiAKICNkZWZpbmUgQW1T cGVjaWFsV29ya2VyUHJvY2VzcygpIFwKIAkoQW1BdXRvVmFjdXVtTGF1bmNoZXJQcm9jZXNz KCkgfHwgXApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9kYXRhY2hlY2tz dW1zd29ya2VyLmggYi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2RhdGFjaGVja3N1bXN3b3Jr ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTljOTAwMGQ2 NDYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2RhdGFjaGVj a3N1bXN3b3JrZXIuaApAQCAtMCwwICsxLDMxIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAqCisgKiBkYXRhY2hlY2tzdW1zd29ya2VyLmgKKyAqCSAgaGVhZGVyIGZpbGUgZm9yIGNo ZWNrc3VtIGhlbHBlciBiYWNrZ3JvdW5kIHdvcmtlcgorICoKKyAqCisgKiBQb3J0aW9ucyBD b3B5cmlnaHQgKGMpIDE5OTYtMjAyNCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQg R3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUg VW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogc3JjL2luY2x1ZGUvcG9zdG1hc3Rl ci9kYXRhY2hlY2tzdW1zd29ya2VyLmgKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAq LworI2lmbmRlZiBEQVRBQ0hFQ0tTVU1TV09SS0VSX0gKKyNkZWZpbmUgREFUQUNIRUNLU1VN U1dPUktFUl9ICisKKy8qIFNoYXJlZCBtZW1vcnkgKi8KK2V4dGVybiBTaXplIERhdGFDaGVj a3N1bXNXb3JrZXJTaG1lbVNpemUodm9pZCk7CitleHRlcm4gdm9pZCBEYXRhQ2hlY2tzdW1z V29ya2VyU2htZW1Jbml0KHZvaWQpOworCisvKiBTdGFydCB0aGUgYmFja2dyb3VuZCBwcm9j ZXNzZXMgZm9yIGVuYWJsaW5nIG9yIGRpc2FibGluZyBjaGVja3N1bXMgKi8KK3ZvaWQJCVN0 YXJ0RGF0YUNoZWNrc3Vtc1dvcmtlckxhdW5jaGVyKGJvb2wgZW5hYmxlX2NoZWNrc3VtcywK KwkJCQkJCQkJCQkJIGludCBjb3N0X2RlbGF5LAorCQkJCQkJCQkJCQkgaW50IGNvc3RfbGlt aXQsCisJCQkJCQkJCQkJCSBib29sIGZhc3QpOworCisvKiBCYWNrZ3JvdW5kIHdvcmtlciBl bnRyeXBvaW50cyAqLwordm9pZAkJRGF0YUNoZWNrc3Vtc1dvcmtlckxhdW5jaGVyTWFpbihE YXR1bSBhcmcpOwordm9pZAkJRGF0YUNoZWNrc3Vtc1dvcmtlck1haW4oRGF0dW0gYXJnKTsK KworI2VuZGlmCQkJCQkJCS8qIERBVEFDSEVDS1NVTVNXT1JLRVJfSCAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZwYWdlLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdl L2J1ZnBhZ2UuaAppbmRleCA2NjQ2YjZmNjM3MS4uNTMyNjc4MjE3MWYgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmcGFnZS5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3Jh Z2UvYnVmcGFnZS5oCkBAIC0yMDUsNyArMjA1LDE3IEBAIHR5cGVkZWYgUGFnZUhlYWRlckRh dGEgKlBhZ2VIZWFkZXI7CiAgKiBoYW5kbGluZyBwYWdlcy4KICAqLwogI2RlZmluZSBQR19Q QUdFX0xBWU9VVF9WRVJTSU9OCQk0CisKKy8qCisgKiBDaGVja3N1bSB2ZXJzaW9uIDAgaXMg dXNlZCBmb3Igd2hlbiBkYXRhIGNoZWNrc3VtcyBhcmUgZGlzYWJsZWQuCisgKiBQR19EQVRB X0NIRUNLU1VNX1ZFUlNJT04gZGVmaW5lcyB0aGF0IGRhdGEgY2hlY2tzdW1zIGFyZSBlbmFi bGVkIGluIHRoZQorICogY2x1c3RlciBhbmQgUEdfREFUQV9DSEVDS1NVTV9JTlBST0dSRVNT X3tPTnxPRkZ9X1ZFUlNJT04gZGVmaW5lcyB0aGF0IGRhdGEKKyAqIGNoZWNrc3VtcyBhcmUg ZWl0aGVyIGN1cnJlbnRseSBiZWluZyBlbmFibGVkIG9yIGRpc2FibGVkLgorICovCiAjZGVm aW5lIFBHX0RBVEFfQ0hFQ0tTVU1fVkVSU0lPTgkxCisjZGVmaW5lIFBHX0RBVEFfQ0hFQ0tT VU1fSU5QUk9HUkVTU19PTl9WRVJTSU9OCTIKKyNkZWZpbmUgUEdfREFUQV9DSEVDS1NVTV9J TlBST0dSRVNTX09GRl9WRVJTSU9OCTMKKwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJCQkJCXBh Z2Ugc3VwcG9ydCBmdW5jdGlvbnMKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uv Y2hlY2tzdW0uaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvY2hlY2tzdW0uaAppbmRleCAyNWQx M2E3OThkMS4uNmZhZmY5NjJlZjAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uv Y2hlY2tzdW0uaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2NoZWNrc3VtLmgKQEAgLTE1 LDYgKzE1LDE0IEBACiAKICNpbmNsdWRlICJzdG9yYWdlL2Jsb2NrLmgiCiAKK3R5cGVkZWYg ZW51bSBDaGVja3N1bVR5cGUKK3sKKwlEQVRBX0NIRUNLU1VNU19PRkYgPSAwLAorCURBVEFf Q0hFQ0tTVU1TX09OLAorCURBVEFfQ0hFQ0tTVU1TX0lOUFJPR1JFU1NfT04sCisJREFUQV9D SEVDS1NVTVNfSU5QUk9HUkVTU19PRkYKK30gQ2hlY2tzdW1UeXBlOworCiAvKgogICogQ29t cHV0ZSB0aGUgY2hlY2tzdW0gZm9yIGEgUG9zdGdyZXMgcGFnZS4gIFRoZSBwYWdlIG11c3Qg YmUgYWxpZ25lZCBvbiBhCiAgKiA0LWJ5dGUgYm91bmRhcnkuCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9zdG9yYWdlL2x3bG9ja2xpc3QuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbHds b2NrbGlzdC5oCmluZGV4IGNmNTY1NDUyMzgyLi5hZmUzOWRiNzUzYyAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvc3RvcmFnZS9sd2xvY2tsaXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvc3Rv cmFnZS9sd2xvY2tsaXN0LmgKQEAgLTgzLDMgKzgzLDQgQEAgUEdfTFdMT0NLKDQ5LCBXQUxT dW1tYXJpemVyKQogUEdfTFdMT0NLKDUwLCBEU01SZWdpc3RyeSkKIFBHX0xXTE9DSyg1MSwg SW5qZWN0aW9uUG9pbnQpCiBQR19MV0xPQ0soNTIsIFNlcmlhbENvbnRyb2wpCitQR19MV0xP Q0soNTMsIERhdGFDaGVja3N1bXNXb3JrZXIpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9z dG9yYWdlL3Byb2MuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCmluZGV4IDExNGVi MWY4Zjc2Li42MWEzZTNhZjlkNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9w cm9jLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmgKQEAgLTQ0Nyw5ICs0NDcs MTAgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIFBHUFJPQyAqUHJlcGFyZWRYYWN0UHJvY3M7CiAg KiBCYWNrZ3JvdW5kIHdyaXRlciwgY2hlY2twb2ludGVyLCBXQUwgd3JpdGVyLCBXQUwgc3Vt bWFyaXplciwgYW5kIGFyY2hpdmVyCiAgKiBydW4gZHVyaW5nIG5vcm1hbCBvcGVyYXRpb24u ICBTdGFydHVwIHByb2Nlc3MgYW5kIFdBTCByZWNlaXZlciBhbHNvIGNvbnN1bWUKICAqIDIg c2xvdHMsIGJ1dCBXQUwgd3JpdGVyIGlzIGxhdW5jaGVkIG9ubHkgYWZ0ZXIgc3RhcnR1cCBo YXMgZXhpdGVkLCBzbyB3ZQotICogb25seSBuZWVkIDYgc2xvdHMuCisgKiBvbmx5IG5lZWQg NiBzbG90cyB0byBjb3ZlciB0aGVzZS4gVGhlIERhdGFDaGVja3N1bXMgd29ya2VyIGFuZCBs YXVuY2hlcgorICogY2FuIGNvbnN1bWUgMiBzbG90cyB3aGVuIGRhdGEgY2hlY2tzdW1zIGFy ZSBlbmFibGVkIG9yIGRpc2FibGVkLgogICovCi0jZGVmaW5lIE5VTV9BVVhJTElBUllfUFJP Q1MJCTYKKyNkZWZpbmUgTlVNX0FVWElMSUFSWV9QUk9DUwkJOAogCiAvKiBjb25maWd1cmFi bGUgb3B0aW9ucyAqLwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBEZWFkbG9ja1RpbWVvdXQ7 CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaCBiL3NyYy9p bmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCmluZGV4IDAyMmZkOGVkOTMzLi44OTM3ZmE2 ZWQzZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKKysr IGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKQEAgLTU0LDYgKzU0LDExIEBA IHR5cGVkZWYgZW51bQogdHlwZWRlZiBlbnVtCiB7CiAJUFJPQ1NJR05BTF9CQVJSSUVSX1NN R1JSRUxFQVNFLCAvKiBhc2sgc21nciB0byBjbG9zZSBmaWxlcyAqLworCisJUFJPQ1NJR05B TF9CQVJSSUVSX0NIRUNLU1VNX09GRiwKKwlQUk9DU0lHTkFMX0JBUlJJRVJfQ0hFQ0tTVU1f SU5QUk9HUkVTU19PTiwKKwlQUk9DU0lHTkFMX0JBUlJJRVJfQ0hFQ0tTVU1fSU5QUk9HUkVT U19PRkYsCisJUFJPQ1NJR05BTF9CQVJSSUVSX0NIRUNLU1VNX09OLAogfSBQcm9jU2lnbmFs QmFycmllclR5cGU7CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9iYWNr ZW5kX3Byb2dyZXNzLmggYi9zcmMvaW5jbHVkZS91dGlscy9iYWNrZW5kX3Byb2dyZXNzLmgK aW5kZXggZGRhODEzYWI0MDcuLmM2NjRlOTJkYmZlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS91dGlscy9iYWNrZW5kX3Byb2dyZXNzLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvYmFj a2VuZF9wcm9ncmVzcy5oCkBAIC0yOCw2ICsyOCw3IEBAIHR5cGVkZWYgZW51bSBQcm9ncmVz c0NvbW1hbmRUeXBlCiAJUFJPR1JFU1NfQ09NTUFORF9DUkVBVEVfSU5ERVgsCiAJUFJPR1JF U1NfQ09NTUFORF9CQVNFQkFDS1VQLAogCVBST0dSRVNTX0NPTU1BTkRfQ09QWSwKKwlQUk9H UkVTU19DT01NQU5EX0RBVEFDSEVDS1NVTVMsCiB9IFByb2dyZXNzQ29tbWFuZFR5cGU7CiAK ICNkZWZpbmUgUEdTVEFUX05VTV9QUk9HUkVTU19QQVJBTQkyMApkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvTWFrZWZpbGUgYi9zcmMvdGVzdC9NYWtlZmlsZQppbmRleCA1MTFhNzJlNjIzOC4u Mjc4Y2UzZThhODYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L01ha2VmaWxlCisrKyBiL3NyYy90 ZXN0L01ha2VmaWxlCkBAIC0xMiw3ICsxMiwxNiBAQCBzdWJkaXIgPSBzcmMvdGVzdAogdG9w X2J1aWxkZGlyID0gLi4vLi4KIGluY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmls ZS5nbG9iYWwKIAotU1VCRElSUyA9IHBlcmwgcG9zdG1hc3RlciByZWdyZXNzIGlzb2xhdGlv biBtb2R1bGVzIGF1dGhlbnRpY2F0aW9uIHJlY292ZXJ5IHN1YnNjcmlwdGlvbgorU1VCRElS UyA9IFwKKwkJcGVybCBcCisJCXBvc3RtYXN0ZXIgXAorCQlyZWdyZXNzIFwKKwkJaXNvbGF0 aW9uIFwKKwkJbW9kdWxlcyBcCisJCWF1dGhlbnRpY2F0aW9uIFwKKwkJcmVjb3ZlcnkgXAor CQlzdWJzY3JpcHRpb24gXAorCQljaGVja3N1bQogCiBpZmVxICgkKHdpdGhfaWN1KSx5ZXMp CiBTVUJESVJTICs9IGljdQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvY2hlY2tzdW0vLmdpdGln bm9yZSBiL3NyYy90ZXN0L2NoZWNrc3VtLy5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLjg3MWU5NDNkNTBlCi0tLSAvZGV2L251bGwKKysrIGIv c3JjL3Rlc3QvY2hlY2tzdW0vLmdpdGlnbm9yZQpAQCAtMCwwICsxLDIgQEAKKyMgR2VuZXJh dGVkIGJ5IHRlc3Qgc3VpdGUKKy90bXBfY2hlY2svCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9j aGVja3N1bS9NYWtlZmlsZSBiL3NyYy90ZXN0L2NoZWNrc3VtL01ha2VmaWxlCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mZDAzYmY3M2RmNAotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L2NoZWNrc3VtL01ha2VmaWxlCkBAIC0wLDAgKzEsMjMgQEAK KyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjCisjIE1ha2VmaWxlIGZvciBzcmMvdGVzdC9jaGVj a3N1bQorIworIyBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNCwgUG9zdGdyZVNR TCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyMgUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAx OTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyMKKyMgc3Jj L3Rlc3QvY2hlY2tzdW0vTWFrZWZpbGUKKyMKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N1 YmRpciA9IHNyYy90ZXN0L2NoZWNrc3VtCit0b3BfYnVpbGRkaXIgPSAuLi8uLi8uLgoraW5j bHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAorCitjaGVjazoKKwkk KHByb3ZlX2NoZWNrKQorCitpbnN0YWxsY2hlY2s6CisJJChwcm92ZV9pbnN0YWxsY2hlY2sp CisKK2NsZWFuIGRpc3RjbGVhbiBtYWludGFpbmVyLWNsZWFuOgorCXJtIC1yZiB0bXBfY2hl Y2sKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2NoZWNrc3VtL1JFQURNRSBiL3NyYy90ZXN0L2No ZWNrc3VtL1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u MGYwMzE3MDYwYjMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9jaGVja3N1bS9SRUFE TUUKQEAgLTAsMCArMSwyMiBAQAorc3JjL3Rlc3QvY2hlY2tzdW0vUkVBRE1FCisKK1JlZ3Jl c3Npb24gdGVzdHMgZm9yIGRhdGEgY2hlY2tzdW1zCis9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorCitUaGlzIGRpcmVjdG9yeSBjb250YWlucyBhIHRlc3Qgc3VpdGUg Zm9yIGVuYWJsaW5nIGRhdGEgY2hlY2tzdW1zCitpbiBhIHJ1bm5pbmcgY2x1c3Rlci4KKwor UnVubmluZyB0aGUgdGVzdHMKKz09PT09PT09PT09PT09PT09CisKKyAgICBtYWtlIGNoZWNr CisKK29yCisKKyAgICBtYWtlIGluc3RhbGxjaGVjaworCitOT1RFOiBUaGlzIGNyZWF0ZXMg YSB0ZW1wb3JhcnkgaW5zdGFsbGF0aW9uIChpbiB0aGUgY2FzZSBvZiAiY2hlY2siKSwKK3dp dGggbXVsdGlwbGUgbm9kZXMsIGJlIHRoZXkgbWFzdGVyIG9yIHN0YW5kYnkocykgZm9yIHRo ZSBwdXJwb3NlIG9mCit0aGUgdGVzdHMuCisKK05PVEU6IFRoaXMgcmVxdWlyZXMgdGhlIC0t ZW5hYmxlLXRhcC10ZXN0cyBhcmd1bWVudCB0byBjb25maWd1cmUuCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9jaGVja3N1bS9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L2NoZWNrc3VtL21lc29u LmJ1aWxkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41Zjk2YjVj MjQ2ZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2NoZWNrc3VtL21lc29uLmJ1aWxk CkBAIC0wLDAgKzEsMTUgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI0LCBQb3N0Z3JlU1FMIEds b2JhbCBEZXZlbG9wbWVudCBHcm91cAorCit0ZXN0cyArPSB7CisgICduYW1lJzogJ2NoZWNr c3VtcycsCisgICdzZCc6IG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpLAorICAnYmQnOiBt ZXNvbi5jdXJyZW50X2J1aWxkX2RpcigpLAorICAndGFwJzogeworICAgICd0ZXN0cyc6IFsK KyAgICAgICd0LzAwMV9iYXNpYy5wbCcsCisgICAgICAndC8wMDJfcmVzdGFydHMucGwnLAor ICAgICAgJ3QvMDAzX3N0YW5kYnlfcmVzdGFydHMucGwnLAorICAgICAgJ3QvMDA0X29mZmxp bmUucGwnLAorICAgIF0sCisgIH0sCit9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9jaGVja3N1 bS90LzAwMV9iYXNpYy5wbCBiL3NyYy90ZXN0L2NoZWNrc3VtL3QvMDAxX2Jhc2ljLnBsCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40YzY0ZjZhMTRmYwotLS0g L2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2NoZWNrc3VtL3QvMDAxX2Jhc2ljLnBsCkBAIC0w LDAgKzEsODggQEAKKworIyBDb3B5cmlnaHQgKGMpIDIwMjQsIFBvc3RncmVTUUwgR2xvYmFs IERldmVsb3BtZW50IEdyb3VwCisKKyMgVGVzdCBzdWl0ZSBmb3IgdGVzdGluZyBlbmFibGlu ZyBkYXRhIGNoZWNrc3VtcyBpbiBhbiBvbmxpbmUgY2x1c3RlcgordXNlIHN0cmljdDsKK3Vz ZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKKwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNs dXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsK KworIyBwZ19lbmFibGVfY2hlY2tzdW1zIHRha2UgdGhyZWUgcGFyYW1zOiBjb3N0X2RlbGF5 LCBjb3N0X2xpbWl0IGFuZCBmYXN0LiBGb3IKKyMgdGVzdGluZyB3ZSBhbHdheXMgd2FudCB0 byBvdmVycmlkZSB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgJ2Zhc3QnIHdpdGggVHJ1ZQorIyB3 aGljaCB3aWxsIGNhdXNlIGltbWVkaWF0ZSBjaGVja3BvaW50cy4gMCBhbmQgMTAwIGFyZSB0 aGUgZGVmYXVsdHMgZm9yCisjIGNvc3RfZGVsYXkgYW5kIGNvc3RfbGltaXQgd2hpY2ggYXJl IGZpbmUgdG8gdXNlIGZvciB0ZXN0aW5nIHNvIGxldCdzIGtlZXAKKyMgdGhlbS4KK215ICRl bmFibGVfcGFyYW1zID0gJzAsIDEwMCwgdHJ1ZSc7CisKKyMgSW5pdGlhbGl6ZSBub2RlIHdp dGggY2hlY2tzdW1zIGRpc2FibGVkLgorbXkgJG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpD bHVzdGVyLT5uZXcoJ21haW4nKTsKKyRub2RlLT5pbml0KG5vX2RhdGFfY2hlY2tzdW1zID0+ IDEpOworJG5vZGUtPnN0YXJ0OworCisjIENyZWF0ZSBzb21lIGNvbnRlbnQgdG8gaGF2ZSB1 bi1jaGVja3N1bW1lZCBkYXRhIGluIHRoZSBjbHVzdGVyCiskbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0IEFTIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMo MSwxMDAwMCkgQVMgYTsiKTsKKworIyBFbnN1cmUgdGhhdCBjaGVja3N1bXMgYXJlIHR1cm5l ZCBvZmYKK215ICRyZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNF TEVDVCBzZXR0aW5nIEZST00gcGdfY2F0YWxvZy5wZ19zZXR0aW5ncyBXSEVSRSBuYW1lID0g J2RhdGFfY2hlY2tzdW1zJzsiCispOworaXMoJHJlc3VsdCwgJ29mZicsICdlbnN1cmUgY2hl Y2tzdW1zIGFyZSBkaXNhYmxlZCcpOworCisjIEVuYWJsZSBkYXRhIGNoZWNrc3VtcworJG5v ZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfZW5hYmxlX2RhdGFfY2hl Y2tzdW1zKCRlbmFibGVfcGFyYW1zKTsiKTsKKworIyBXYWl0IGZvciBjaGVja3N1bXMgdG8g YmVjb21lIGVuYWJsZWQKKyRyZXN1bHQgPSAkbm9kZS0+cG9sbF9xdWVyeV91bnRpbCgKKwkn cG9zdGdyZXMnLAorCSJTRUxFQ1Qgc2V0dGluZyBGUk9NIHBnX2NhdGFsb2cucGdfc2V0dGlu Z3MgV0hFUkUgbmFtZSA9ICdkYXRhX2NoZWNrc3Vtcyc7IiwKKwknb24nKTsKK2lzKCRyZXN1 bHQsIDEsICdlbnN1cmUgY2hlY2tzdW1zIGFyZSBlbmFibGVkJyk7CisKKyMgUnVuIGEgZHVt bXkgcXVlcnkganVzdCB0byBtYWtlIHN1cmUgd2UgY2FuIHJlYWQgYmFjayBzb21lIGRhdGEK KyRyZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQo KikgRlJPTSB0Iik7CitpcygkcmVzdWx0LCAnMTAwMDAnLCAnZW5zdXJlIGNoZWNrc3VtbWVk IHBhZ2VzIGNhbiBiZSByZWFkIGJhY2snKTsKKworIyBFbmFibGUgZGF0YSBjaGVja3N1bXMg YWdhaW4gd2hpY2ggc2hvdWxkIGJlIGEgbm8tb3AuLgorJG5vZGUtPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJTRUxFQ1QgcGdfZW5hYmxlX2RhdGFfY2hlY2tzdW1zKCRlbmFibGVfcGFy YW1zKTsiKTsKKyMgLi5hbmQgbWFrZSBzdXJlIHdlIGNhbiBzdGlsbCByZWFkL3dyaXRlIGRh dGEKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlVQREFURSB0IFNFVCBhID0gYSAr IDE7Iik7CiskcmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNU IGNvdW50KCopIEZST00gdCIpOworaXMoJHJlc3VsdCwgJzEwMDAwJywgJ2Vuc3VyZSBjaGVj a3N1bW1lZCBwYWdlcyBjYW4gYmUgcmVhZCBiYWNrJyk7CisKKyMgRGlzYWJsZSBjaGVja3N1 bXMgYWdhaW4KKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ19kaXNh YmxlX2RhdGFfY2hlY2tzdW1zKCk7Iik7CisKKyRyZXN1bHQgPSAkbm9kZS0+cG9sbF9xdWVy eV91bnRpbCgKKwkncG9zdGdyZXMnLAorCSJTRUxFQ1Qgc2V0dGluZyBGUk9NIHBnX2NhdGFs b2cucGdfc2V0dGluZ3MgV0hFUkUgbmFtZSA9ICdkYXRhX2NoZWNrc3Vtcyc7IiwKKwknb2Zm Jyk7CitpcygkcmVzdWx0LCAxLCAnZW5zdXJlIGNoZWNrc3VtcyBhcmUgZGlzYWJsZWQnKTsK KworIyBUZXN0IHJlYWRpbmcgYWdhaW4KKyRyZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0Iik7CitpcygkcmVzdWx0LCAnMTAw MDAnLCAnZW5zdXJlIHByZXZpb3VzbHkgY2hlY2tzdW1tZWQgcGFnZXMgY2FuIGJlIHJlYWQg YmFjaycpOworCisjIFJlLWVuYWJsZSBjaGVja3N1bXMgYW5kIG1ha2Ugc3VyZSB0aGF0IHRo ZSB1bmRlcmx5aW5nIGRhdGEgaGFzIGNoYW5nZWQgdG8KKyMgZW5zdXJlIHRoYXQgY2hlY2tz dW1zIHdpbGwgYmUgZGlmZmVyZW50LgorJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi VVBEQVRFIHQgU0VUIGEgPSBhICsgMTsiKTsKKworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJTRUxFQ1QgcGdfZW5hYmxlX2RhdGFfY2hlY2tzdW1zKCRlbmFibGVfcGFyYW1z KTsiKTsKKyRyZXN1bHQgPSAkbm9kZS0+cG9sbF9xdWVyeV91bnRpbCgKKwkncG9zdGdyZXMn LAorCSJTRUxFQ1Qgc2V0dGluZyBGUk9NIHBnX2NhdGFsb2cucGdfc2V0dGluZ3MgV0hFUkUg bmFtZSA9ICdkYXRhX2NoZWNrc3Vtcyc7IiwKKwknb24nKTsKK2lzKCRyZXN1bHQsIDEsICdl bnN1cmUgY2hlY2tzdW1zIGFyZSBlbmFibGVkJyk7CisKKyMgUnVuIGEgZHVtbXkgcXVlcnkg anVzdCB0byBtYWtlIHN1cmUgd2UgY2FuIHJlYWQgYmFjayB0aGUgZGF0YQorJHJlc3VsdCA9 ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHQi KTsKK2lzKCRyZXN1bHQsICcxMDAwMCcsICdlbnN1cmUgY2hlY2tzdW1tZWQgcGFnZXMgY2Fu IGJlIHJlYWQgYmFjaycpOworCiskbm9kZS0+c3RvcDsKKworZG9uZV90ZXN0aW5nKCk7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9jaGVja3N1bS90LzAwMl9yZXN0YXJ0cy5wbCBiL3NyYy90 ZXN0L2NoZWNrc3VtL3QvMDAyX3Jlc3RhcnRzLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi4yNjk3YjcyMjI1NwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0L2NoZWNrc3VtL3QvMDAyX3Jlc3RhcnRzLnBsCkBAIC0wLDAgKzEsOTIgQEAKKworIyBD b3B5cmlnaHQgKGMpIDIwMjQsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3Vw CisKKyMgVGVzdCBzdWl0ZSBmb3IgdGVzdGluZyBlbmFibGluZyBkYXRhIGNoZWNrc3VtcyBp biBhbiBvbmxpbmUgY2x1c3RlciB3aXRoCisjIHJlc3RhcnRpbmcgdGhlIHByb2Nlc3NpbmcK K3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CisKK3VzZSBQb3N0 Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwor dXNlIFRlc3Q6Ok1vcmU7CisKKyMgcGdfZW5hYmxlX2NoZWNrc3VtcyB0YWtlIHRocmVlIHBh cmFtczogY29zdF9kZWxheSwgY29zdF9saW1pdCBhbmQgZmFzdC4gRm9yCisjIHRlc3Rpbmcg d2UgYWx3YXlzIHdhbnQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgdmFsdWUgZm9yICdmYXN0 JyB3aXRoIFRydWUKKyMgd2hpY2ggd2lsbCBjYXVzZSBpbW1lZGlhdGUgY2hlY2twb2ludHMu IDAgYW5kIDEwMCBhcmUgdGhlIGRlZmF1bHRzIGZvcgorIyBjb3N0X2RlbGF5IGFuZCBjb3N0 X2xpbWl0IHdoaWNoIGFyZSBmaW5lIHRvIHVzZSBmb3IgdGVzdGluZyBzbyBsZXQncyBrZWVw CisjIHRoZW0uCitteSAkZW5hYmxlX3BhcmFtcyA9ICcwLCAxMDAsIHRydWUnOworCisjIElu aXRpYWxpemUgbm9kZSB3aXRoIGNoZWNrc3VtcyBkaXNhYmxlZC4KK215ICRub2RlID0gUG9z dGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdtYWluJyk7Ciskbm9kZS0+aW5pdChub19k YXRhX2NoZWNrc3VtcyA9PiAxKTsKKyRub2RlLT5zdGFydDsKKworIyBDcmVhdGUgc29tZSBj b250ZW50IHRvIGhhdmUgdW4tY2hlY2tzdW1tZWQgZGF0YSBpbiB0aGUgY2x1c3RlcgorJG5v ZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgdCBBUyBTRUxFQ1Qg Z2VuZXJhdGVfc2VyaWVzKDEsMTAwMDApIEFTIGE7Iik7CisKKyMgRW5zdXJlIHRoYXQgY2hl Y2tzdW1zIGFyZSBkaXNhYmxlZAorbXkgJHJlc3VsdCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiU0VMRUNUIHNldHRpbmcgRlJPTSBwZ19jYXRhbG9nLnBnX3NldHRpbmdz IFdIRVJFIG5hbWUgPSAnZGF0YV9jaGVja3N1bXMnOyIKKyk7CitpcygkcmVzdWx0LCAnb2Zm JywgJ2Vuc3VyZSBjaGVja3N1bXMgYXJlIGRpc2FibGVkJyk7CisKKyMgQ3JlYXRlIGEgYmFy cmllciBmb3IgY2hlY2tzdW1taW5nIHRvIGJsb2NrIG9uLCBpbiB0aGlzIGNhc2UgYSBwcmUt ZXhpc3RpbmcKKyMgdGVtcG9yYXJ5IHRhYmxlIHdoaWNoIGlzIGtlcHQgb3BlbiB3aGlsZSBw cm9jZXNzaW5nIGlzIHN0YXJ0ZWQuIFdlIGNhbgorIyBhY2NvbXBsaXNoIHRoaXMgYnkgc2V0 dGluZyB1cCBhbiBpbnRlcmFjdGl2ZSBwc3FsIHByb2Nlc3Mgd2hpY2gga2VlcHMgdGhlCisj IHRlbXBvcmFyeSB0YWJsZSBjcmVhdGVkIGFzIHdlIGVuYWJsZSBjaGVja3N1bXMgaW4gYW5v dGhlciBwc3FsIHByb2Nlc3MuCisKK215ICRic2Vzc2lvbiA9ICRub2RlLT5iYWNrZ3JvdW5k X3BzcWwoJ3Bvc3RncmVzJyk7CiskYnNlc3Npb24tPnF1ZXJ5X3NhZmUoJ0NSRUFURSBURU1Q T1JBUlkgVEFCTEUgdHQgKGEgaW50ZWdlcik7Jyk7CisKKyMgSW4gYW5vdGhlciBzZXNzaW9u LCBtYWtlIHN1cmUgd2UgY2FuIHNlZSB0aGUgYmxvY2tpbmcgdGVtcCB0YWJsZSBidXQgc3Rh cnQKKyMgcHJvY2Vzc2luZyBhbnl3YXlzIGFuZCBjaGVjayB0aGF0IHdlIGFyZSBibG9ja2Vk IHdpdGggYSBwcm9wZXIgd2FpdCBldmVudC4KKyRyZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIlNFTEVDVCByZWxwZXJzaXN0ZW5jZSBGUk9NIHBnX2NhdGFsb2cu cGdfY2xhc3MgV0hFUkUgcmVsbmFtZSA9ICd0dCc7Iik7CitpcygkcmVzdWx0LCAndCcsICdl bnN1cmUgd2UgY2FuIHNlZSB0aGUgdGVtcG9yYXJ5IHRhYmxlJyk7CisKKyRub2RlLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2VuYWJsZV9kYXRhX2NoZWNrc3Vtcygk ZW5hYmxlX3BhcmFtcyk7Iik7CisKKyRyZXN1bHQgPSAkbm9kZS0+cG9sbF9xdWVyeV91bnRp bCgKKwkncG9zdGdyZXMnLAorCSJTRUxFQ1Qgc2V0dGluZyBGUk9NIHBnX2NhdGFsb2cucGdf c2V0dGluZ3MgV0hFUkUgbmFtZSA9ICdkYXRhX2NoZWNrc3Vtcyc7IiwKKwknaW5wcm9ncmVz cy1vbicpOworaXMoJHJlc3VsdCwgJzEnLCAiZW5zdXJlIGNoZWNrc3VtcyBhcmVuJ3QgZW5h YmxlZCB5ZXQiKTsKKworJGJzZXNzaW9uLT5xdWl0OworJG5vZGUtPnN0b3A7Ciskbm9kZS0+ c3RhcnQ7CisKKyRyZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNF TEVDVCBzZXR0aW5nIEZST00gcGdfY2F0YWxvZy5wZ19zZXR0aW5ncyBXSEVSRSBuYW1lID0g J2RhdGFfY2hlY2tzdW1zJzsiCispOworaXMoJHJlc3VsdCwgJ2lucHJvZ3Jlc3Mtb24nLCAi ZW5zdXJlIGNoZWNrc3VtcyBhcmVuJ3QgZW5hYmxlZCB5ZXQiKTsKKworJG5vZGUtPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfZW5hYmxlX2RhdGFfY2hlY2tzdW1zKCRl bmFibGVfcGFyYW1zKTsiKTsKKworJHJlc3VsdCA9ICRub2RlLT5wb2xsX3F1ZXJ5X3VudGls KAorCSdwb3N0Z3JlcycsCisJIlNFTEVDVCBzZXR0aW5nIEZST00gcGdfY2F0YWxvZy5wZ19z ZXR0aW5ncyBXSEVSRSBuYW1lID0gJ2RhdGFfY2hlY2tzdW1zJzsiLAorCSdvbicpOworaXMo JHJlc3VsdCwgMSwgJ2Vuc3VyZSBjaGVja3N1bXMgYXJlIHR1cm5lZCBvbicpOworCiskcmVz dWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZS T00gdCIpOworaXMoJHJlc3VsdCwgJzEwMDAwJywgJ2Vuc3VyZSBjaGVja3N1bW1lZCBwYWdl cyBjYW4gYmUgcmVhZCBiYWNrJyk7CisKKyRyZXN1bHQgPSAkbm9kZS0+cG9sbF9xdWVyeV91 bnRpbCgKKwkncG9zdGdyZXMnLAorCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19zdGF0X2Fj dGl2aXR5IFdIRVJFIGJhY2tlbmRfdHlwZSBMSUtFICdkYXRhY2hlY2tzdW1zd29ya2VyJSc7 IiwKKwknMCcpOworaXMoJHJlc3VsdCwgMSwgJ2F3YWl0IGRhdGFjaGVja3N1bXMgd29ya2Vy L2xhdW5jaGVyIHRlcm1pbmF0aW9uJyk7CisKKyRyZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfZGlzYWJsZV9kYXRhX2NoZWNrc3VtcygpOyIpOwor JHJlc3VsdCA9ICRub2RlLT5wb2xsX3F1ZXJ5X3VudGlsKAorCSdwb3N0Z3JlcycsCisJIlNF TEVDVCBzZXR0aW5nIEZST00gcGdfY2F0YWxvZy5wZ19zZXR0aW5ncyBXSEVSRSBuYW1lID0g J2RhdGFfY2hlY2tzdW1zJzsiLAorCSdvZmYnKTsKK2lzKCRyZXN1bHQsIDEsICdlbnN1cmUg Y2hlY2tzdW1zIGFyZSB0dXJuZWQgb2ZmJyk7CisKK2RvbmVfdGVzdGluZygpOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvY2hlY2tzdW0vdC8wMDNfc3RhbmRieV9yZXN0YXJ0cy5wbCBiL3Ny Yy90ZXN0L2NoZWNrc3VtL3QvMDAzX3N0YW5kYnlfcmVzdGFydHMucGwKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjZjMGZlOGYzYmY4Ci0tLSAvZGV2L251bGwK KysrIGIvc3JjL3Rlc3QvY2hlY2tzdW0vdC8wMDNfc3RhbmRieV9yZXN0YXJ0cy5wbApAQCAt MCwwICsxLDEzMSBAQAorCisjIENvcHlyaWdodCAoYykgMjAyNCwgUG9zdGdyZVNRTCBHbG9i YWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBUZXN0IHN1aXRlIGZvciB0ZXN0aW5nIGVuYWJs aW5nIGRhdGEgY2hlY2tzdW1zIGluIGFuIG9ubGluZSBjbHVzdGVyIHdpdGgKKyMgc3RyZWFt aW5nIHJlcGxpY2F0aW9uCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzIEZBVEFMID0+ICdh bGwnOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6 VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKworIyBwZ19lbmFibGVfY2hlY2tzdW1z IHRha2UgdGhyZWUgcGFyYW1zOiBjb3N0X2RlbGF5LCBjb3N0X2xpbWl0IGFuZCBmYXN0LiBG b3IKKyMgdGVzdGluZyB3ZSBhbHdheXMgd2FudCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCB2 YWx1ZSBmb3IgJ2Zhc3QnIHdpdGggVHJ1ZQorIyB3aGljaCB3aWxsIGNhdXNlIGltbWVkaWF0 ZSBjaGVja3BvaW50cy4gMCBhbmQgMTAwIGFyZSB0aGUgZGVmYXVsdHMgZm9yCisjIGNvc3Rf ZGVsYXkgYW5kIGNvc3RfbGltaXQgd2hpY2ggYXJlIGZpbmUgdG8gdXNlIGZvciB0ZXN0aW5n IHNvIGxldCdzIGtlZXAKKyMgdGhlbS4KK215ICRlbmFibGVfcGFyYW1zID0gJzAsIDEwMCwg dHJ1ZSc7CisKKyMgSW5pdGlhbGl6ZSBwcmltYXJ5IG5vZGUKK215ICRub2RlX3ByaW1hcnkg PSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3ByaW1hcnknKTsKKyRub2RlX3By aW1hcnktPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAxLCBub19kYXRhX2NoZWNrc3VtcyA9 PiAxKTsKKyRub2RlX3ByaW1hcnktPnN0YXJ0OworbXkgJGJhY2t1cF9uYW1lID0gJ215X2Jh Y2t1cCc7CisKKyMgVGFrZSBiYWNrdXAKKyRub2RlX3ByaW1hcnktPmJhY2t1cCgkYmFja3Vw X25hbWUpOworCisjIENyZWF0ZSBzdHJlYW1pbmcgc3RhbmRieSBsaW5raW5nIHRvIHByaW1h cnkKK215ICRub2RlX3N0YW5kYnlfMSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5l dygnc3RhbmRieV8xJyk7Ciskbm9kZV9zdGFuZGJ5XzEtPmluaXRfZnJvbV9iYWNrdXAoJG5v ZGVfcHJpbWFyeSwgJGJhY2t1cF9uYW1lLAorCWhhc19zdHJlYW1pbmcgPT4gMSk7Ciskbm9k ZV9zdGFuZGJ5XzEtPnN0YXJ0OworCisjIENyZWF0ZSBzb21lIGNvbnRlbnQgb24gdGhlIHBy aW1hcnkgdG8gaGF2ZSB1bi1jaGVja3N1bW1lZCBkYXRhIGluIHRoZSBjbHVzdGVyCiskbm9k ZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHQgQVMg U0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLDEwMDAwKSBBUyBhOyIpOworCisjIFdhaXQgZm9y IHN0YW5kYnlzIHRvIGNhdGNoIHVwCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVw KCRub2RlX3N0YW5kYnlfMSwgJ3JlcGxheScsCisJJG5vZGVfcHJpbWFyeS0+bHNuKCdpbnNl cnQnKSk7CisKKyMgQ2hlY2sgdGhhdCBjaGVja3N1bXMgYXJlIHR1cm5lZCBvZmYgb24gYWxs IG5vZGVzCitteSAkcmVzdWx0ID0gJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIlNFTEVDVCBzZXR0aW5nIEZST00gcGdfY2F0YWxvZy5wZ19zZXR0aW5ncyBXSEVS RSBuYW1lID0gJ2RhdGFfY2hlY2tzdW1zJzsiCispOworaXMoJHJlc3VsdCwgIm9mZiIsICdl bnN1cmUgY2hlY2tzdW1zIGFyZSB0dXJuZWQgb2ZmIG9uIHByaW1hcnknKTsKKworJHJlc3Vs dCA9ICRub2RlX3N0YW5kYnlfMS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBz ZXR0aW5nIEZST00gcGdfY2F0YWxvZy5wZ19zZXR0aW5ncyBXSEVSRSBuYW1lID0gJ2RhdGFf Y2hlY2tzdW1zJzsiCispOworaXMoJHJlc3VsdCwgIm9mZiIsICdlbnN1cmUgY2hlY2tzdW1z IGFyZSB0dXJuZWQgb2ZmIG9uIHN0YW5kYnlfMScpOworCisjIEVuYWJsZSBjaGVja3N1bXMg Zm9yIHRoZSBjbHVzdGVyCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiU0VMRUNUIHBnX2VuYWJsZV9kYXRhX2NoZWNrc3VtcygkZW5hYmxlX3BhcmFtcyk7Iik7 CisKKyMgRW5zdXJlIHRoYXQgdGhlIHByaW1hcnkgc3dpdGNoZXMgdG8gImlucHJvZ3Jlc3Mt b24iCiskcmVzdWx0ID0gJG5vZGVfcHJpbWFyeS0+cG9sbF9xdWVyeV91bnRpbCgKKwkncG9z dGdyZXMnLAorCSJTRUxFQ1Qgc2V0dGluZyBGUk9NIHBnX2NhdGFsb2cucGdfc2V0dGluZ3Mg V0hFUkUgbmFtZSA9ICdkYXRhX2NoZWNrc3Vtcyc7IiwKKwkiaW5wcm9ncmVzcy1vbiIpOwor aXMoJHJlc3VsdCwgMSwgJ2Vuc3VyZSBjaGVja3N1bXMgYXJlIGluIHByb2dyZXNzIG9uIHBy aW1hcnknKTsKKworIyBXYWl0IGZvciBjaGVja3N1bSBlbmFibGUgdG8gYmUgcmVwbGF5ZWQK KyRub2RlX3ByaW1hcnktPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieV8xLCAncmVw bGF5Jyk7CisKKyMgRW5zdXJlIHRoYXQgdGhlIHN0YW5kYnkgaGFzIHN3aXRjaGVkIHRvICJp bnByb2dyZXNzLW9uIiBvciAib24iLiAgTm9ybWFsbHkgaXQKKyMgd291bGQgYmUgImlucHJv Z3Jlc3Mtb24iLCBidXQgaXQgaXMgdGhlb3JldGljYWxseSBwb3NzaWJsZSBmb3IgdGhlIHBy aW1hcnkgdG8KKyMgY29tcGxldGUgdGhlIGNoZWNrc3VtIGVuYWJsaW5nICphbmQqIGhhdmUg dGhlIHN0YW5kYnkgcmVwbGF5IHRoYXQgcmVjb3JkCisjIGJlZm9yZSB3ZSByZWFjaCB0aGUg Y2hlY2sgYmVsb3cuCiskcmVzdWx0ID0gJG5vZGVfc3RhbmRieV8xLT5wb2xsX3F1ZXJ5X3Vu dGlsKAorCSdwb3N0Z3JlcycsCisJIlNFTEVDVCBzZXR0aW5nID0gJ29mZicgRlJPTSBwZ19j YXRhbG9nLnBnX3NldHRpbmdzIFdIRVJFIG5hbWUgPSAnZGF0YV9jaGVja3N1bXMnOyIsCisJ J2YnKTsKK2lzKCRyZXN1bHQsIDEsICdlbnN1cmUgc3RhbmRieSBoYXMgYWJzb3JiZWQgdGhl IGlucHJvZ3Jlc3Mtb24gYmFycmllcicpOworJHJlc3VsdCA9ICRub2RlX3N0YW5kYnlfMS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBzZXR0aW5nIEZST00gcGdfY2F0YWxv Zy5wZ19zZXR0aW5ncyBXSEVSRSBuYW1lID0gJ2RhdGFfY2hlY2tzdW1zJzsiCispOworCitp cygoJHJlc3VsdCBlcSAnaW5wcm9ncmVzcy1vbicgfHwgJHJlc3VsdCBlcSAnb24nKSwKKwkx LCAnZW5zdXJlIGNoZWNrc3VtcyBhcmUgb24sIG9yIGluIHByb2dyZXNzLCBvbiBzdGFuZGJ5 XzEnKTsKKworIyBJbnNlcnQgc29tZSBtb3JlIGRhdGEgd2hpY2ggc2hvdWxkIGJlIGNoZWNr c3VtbWVkIG9uIElOU0VSVAorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIklOU0VSVCBJTlRPIHQgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMDApKTsi KTsKKworIyBXYWl0IGZvciBjaGVja3N1bXMgZW5hYmxlZCBvbiB0aGUgcHJpbWFyeQorJHJl c3VsdCA9ICRub2RlX3ByaW1hcnktPnBvbGxfcXVlcnlfdW50aWwoCisJJ3Bvc3RncmVzJywK KwkiU0VMRUNUIHNldHRpbmcgRlJPTSBwZ19jYXRhbG9nLnBnX3NldHRpbmdzIFdIRVJFIG5h bWUgPSAnZGF0YV9jaGVja3N1bXMnOyIsCisJJ29uJyk7CitpcygkcmVzdWx0LCAxLCAnZW5z dXJlIGNoZWNrc3VtcyBhcmUgZW5hYmxlZCBvbiB0aGUgcHJpbWFyeScpOworCisjIFdhaXQg Zm9yIGNoZWNrc3VtcyBlbmFibGVkIG9uIHRoZSBzdGFuZGJ5CiskcmVzdWx0ID0gJG5vZGVf c3RhbmRieV8xLT5wb2xsX3F1ZXJ5X3VudGlsKAorCSdwb3N0Z3JlcycsCisJIlNFTEVDVCBz ZXR0aW5nIEZST00gcGdfY2F0YWxvZy5wZ19zZXR0aW5ncyBXSEVSRSBuYW1lID0gJ2RhdGFf Y2hlY2tzdW1zJzsiLAorCSdvbicpOworaXMoJHJlc3VsdCwgMSwgJ2Vuc3VyZSBjaGVja3N1 bXMgYXJlIGVuYWJsZWQgb24gdGhlIHN0YW5kYnknKTsKKworJHJlc3VsdCA9ICRub2RlX3By aW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KGEpIEZST00gdCIp OworaXMoJHJlc3VsdCwgJzIwMDAwJywgJ2Vuc3VyZSB3ZSBjYW4gc2FmZWx5IHJlYWQgYWxs IGRhdGEgd2l0aCBjaGVja3N1bXMnKTsKKworJHJlc3VsdCA9ICRub2RlX3ByaW1hcnktPnBv bGxfcXVlcnlfdW50aWwoCisJJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopIEZST00g cGdfc3RhdF9hY3Rpdml0eSBXSEVSRSBiYWNrZW5kX3R5cGUgTElLRSAnZGF0YWNoZWNrc3Vt c3dvcmtlciUnOyIsCisJJzAnKTsKK2lzKCRyZXN1bHQsIDEsICdhd2FpdCBkYXRhY2hlY2tz dW1zIHdvcmtlci9sYXVuY2hlciB0ZXJtaW5hdGlvbicpOworCisjIERpc2FibGUgY2hlY2tz dW1zIGFuZCBlbnN1cmUgaXQncyBwcm9wYWdhdGVkIHRvIHN0YW5kYnkgYW5kIHRoYXQgd2Ug Y2FuCisjIHN0aWxsIHJlYWQgYWxsIGRhdGEKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiU0VMRUNUIHBnX2Rpc2FibGVfZGF0YV9jaGVja3N1bXMoKTsiKTsKKyMg V2FpdCBmb3IgY2hlY2tzdW0gZGlzYWJsZSB0byBiZSByZXBsYXllZAorJG5vZGVfcHJpbWFy eS0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5XzEsICdyZXBsYXknKTsKKyRyZXN1 bHQgPSAkbm9kZV9wcmltYXJ5LT5wb2xsX3F1ZXJ5X3VudGlsKAorCSdwb3N0Z3JlcycsCisJ IlNFTEVDVCBzZXR0aW5nIEZST00gcGdfY2F0YWxvZy5wZ19zZXR0aW5ncyBXSEVSRSBuYW1l ID0gJ2RhdGFfY2hlY2tzdW1zJzsiLAorCSdvZmYnKTsKK2lzKCRyZXN1bHQsIDEsICdlbnN1 cmUgZGF0YSBjaGVja3N1bXMgYXJlIGRpc2FibGVkIG9uIHRoZSBwcmltYXJ5IDInKTsKKwor IyBFbnN1cmUgdGhhdCB0aGUgc3RhbmRieSBoYXMgc3dpdGNoZWQgdG8gb2ZmCiskcmVzdWx0 ID0gJG5vZGVfc3RhbmRieV8xLT5wb2xsX3F1ZXJ5X3VudGlsKAorCSdwb3N0Z3JlcycsCisJ IlNFTEVDVCBzZXR0aW5nIEZST00gcGdfY2F0YWxvZy5wZ19zZXR0aW5ncyBXSEVSRSBuYW1l ID0gJ2RhdGFfY2hlY2tzdW1zJzsiLAorCSdvZmYnKTsKK2lzKCRyZXN1bHQsIDEsICdlbnN1 cmUgY2hlY2tzdW1zIGFyZSBvZmYgb24gc3RhbmRieV8xJyk7CisKKyRyZXN1bHQgPSAkbm9k ZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudChhKSBGUk9N IHQiKTsKK2lzKCRyZXN1bHQsICIyMDAwMCIsICdlbnN1cmUgd2UgY2FuIHNhZmVseSByZWFk IGFsbCBkYXRhIHdpdGhvdXQgY2hlY2tzdW1zJyk7CisKK2RvbmVfdGVzdGluZygpOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvY2hlY2tzdW0vdC8wMDRfb2ZmbGluZS5wbCBiL3NyYy90ZXN0 L2NoZWNrc3VtL3QvMDA0X29mZmxpbmUucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLjljZWU2MmM5YjUyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qv Y2hlY2tzdW0vdC8wMDRfb2ZmbGluZS5wbApAQCAtMCwwICsxLDEwMSBAQAorCisjIENvcHly aWdodCAoYykgMjAyNCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKwor IyBUZXN0IHN1aXRlIGZvciB0ZXN0aW5nIGVuYWJsaW5nIGRhdGEgY2hlY2tzdW1zIG9mZmxp bmUgZnJvbSB2YXJpb3VzIHN0YXRlcworIyBvZiBjaGVja3N1bSBwcm9jZXNzaW5nCit1c2Ug c3RyaWN0OwordXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOworCit1c2UgUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBU ZXN0OjpNb3JlOworCisjIHBnX2VuYWJsZV9jaGVja3N1bXMgdGFrZSB0aHJlZSBwYXJhbXM6 IGNvc3RfZGVsYXksIGNvc3RfbGltaXQgYW5kIGZhc3QuIEZvcgorIyB0ZXN0aW5nIHdlIGFs d2F5cyB3YW50IHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHZhbHVlIGZvciAnZmFzdCcgd2l0 aCBUcnVlCisjIHdoaWNoIHdpbGwgY2F1c2UgaW1tZWRpYXRlIGNoZWNrcG9pbnRzLiAwIGFu ZCAxMDAgYXJlIHRoZSBkZWZhdWx0cyBmb3IKKyMgY29zdF9kZWxheSBhbmQgY29zdF9saW1p dCB3aGljaCBhcmUgZmluZSB0byB1c2UgZm9yIHRlc3Rpbmcgc28gbGV0J3Mga2VlcAorIyB0 aGVtLgorbXkgJGVuYWJsZV9wYXJhbXMgPSAnMCwgMTAwLCB0cnVlJzsKKworIyBJbml0aWFs aXplIG5vZGUgd2l0aCBjaGVja3N1bXMgZGlzYWJsZWQuCitteSAkbm9kZSA9IFBvc3RncmVT UUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnbWFpbicpOworJG5vZGUtPmluaXQobm9fZGF0YV9j aGVja3N1bXMgPT4gMSk7Ciskbm9kZS0+c3RhcnQ7CisKKyMgQ3JlYXRlIHNvbWUgY29udGVu dCB0byBoYXZlIHVuLWNoZWNrc3VtbWVkIGRhdGEgaW4gdGhlIGNsdXN0ZXIKKyRub2RlLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHQgQVMgU0VMRUNUIGdlbmVy YXRlX3NlcmllcygxLDEwMDAwKSBBUyBhOyIpOworCisjIEVuc3VyZSB0aGF0IGNoZWNrc3Vt cyBhcmUgZGlzYWJsZWQKK215ICRyZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIlNFTEVDVCBzZXR0aW5nIEZST00gcGdfY2F0YWxvZy5wZ19zZXR0aW5ncyBXSEVS RSBuYW1lID0gJ2RhdGFfY2hlY2tzdW1zJzsiCispOworaXMoJHJlc3VsdCwgJ29mZicsICdl bnN1cmUgY2hlY2tzdW1zIGFyZSBkaXNhYmxlZCcpOworCisjIEVuYWJsZSBjaGVja3N1bXMg b2ZmbGluZSB1c2luZyBwZ19jaGVja3N1bXMKKyRub2RlLT5zdG9wOworJG5vZGUtPmNoZWNr c3VtX2VuYWJsZV9vZmZsaW5lOworJG5vZGUtPnN0YXJ0OworCisjIEVuc3VyZSB0aGF0IGNo ZWNrc3VtcyBhcmUgZW5hYmxlZAorJHJlc3VsdCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiU0VMRUNUIHNldHRpbmcgRlJPTSBwZ19jYXRhbG9nLnBnX3NldHRpbmdzIFdI RVJFIG5hbWUgPSAnZGF0YV9jaGVja3N1bXMnOyIKKyk7CitpcygkcmVzdWx0LCAnb24nLCAn ZW5zdXJlIGNoZWNrc3VtcyBhcmUgZW5hYmxlZCcpOworCisjIFJ1biBhIGR1bW15IHF1ZXJ5 IGp1c3QgdG8gbWFrZSBzdXJlIHdlIGNhbiByZWFkIGJhY2sgc29tZSBkYXRhCiskcmVzdWx0 ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00g dCIpOworaXMoJHJlc3VsdCwgJzEwMDAwJywgJ2Vuc3VyZSBjaGVja3N1bW1lZCBwYWdlcyBj YW4gYmUgcmVhZCBiYWNrJyk7CisKKyMgRGlzYWJsZSBjaGVja3N1bXMgb2ZmbGluZSBhZ2Fp biB1c2luZyBwZ19jaGVja3N1bXMKKyRub2RlLT5zdG9wOworJG5vZGUtPmNoZWNrc3VtX2Rp c2FibGVfb2ZmbGluZTsKKyRub2RlLT5zdGFydDsKKworIyBFbnN1cmUgdGhhdCBjaGVja3N1 bXMgYXJlIGRpc2FibGVkCiskcmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJTRUxFQ1Qgc2V0dGluZyBGUk9NIHBnX2NhdGFsb2cucGdfc2V0dGluZ3MgV0hFUkUg bmFtZSA9ICdkYXRhX2NoZWNrc3Vtcyc7IgorKTsKK2lzKCRyZXN1bHQsICdvZmYnLCAnZW5z dXJlIGNoZWNrc3VtcyBhcmUgZGlzYWJsZWQnKTsKKworIyBDcmVhdGUgYSBiYXJyaWVyIGZv ciBjaGVja3N1bW1pbmcgdG8gYmxvY2sgb24sIGluIHRoaXMgY2FzZSBhIHByZS1leGlzdGlu ZworIyB0ZW1wb3JhcnkgdGFibGUgd2hpY2ggaXMga2VwdCBvcGVuIHdoaWxlIHByb2Nlc3Np bmcgaXMgc3RhcnRlZC4gV2UgY2FuCisjIGFjY29tcGxpc2ggdGhpcyBieSBzZXR0aW5nIHVw IGFuIGludGVyYWN0aXZlIHBzcWwgcHJvY2VzcyB3aGljaCBrZWVwcyB0aGUKKyMgdGVtcG9y YXJ5IHRhYmxlIGNyZWF0ZWQgYXMgd2UgZW5hYmxlIGNoZWNrc3VtcyBpbiBhbm90aGVyIHBz cWwgcHJvY2Vzcy4KKworbXkgJGJzZXNzaW9uID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgn cG9zdGdyZXMnKTsKKyRic2Vzc2lvbi0+cXVlcnlfc2FmZSgnQ1JFQVRFIFRFTVBPUkFSWSBU QUJMRSB0dCAoYSBpbnRlZ2VyKTsnKTsKKworIyBJbiBhbm90aGVyIHNlc3Npb24sIG1ha2Ug c3VyZSB3ZSBjYW4gc2VlIHRoZSBibG9ja2luZyB0ZW1wIHRhYmxlIGJ1dCBzdGFydAorIyBw cm9jZXNzaW5nIGFueXdheXMgYW5kIGNoZWNrIHRoYXQgd2UgYXJlIGJsb2NrZWQgd2l0aCBh IHByb3BlciB3YWl0IGV2ZW50LgorJHJlc3VsdCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiU0VMRUNUIHJlbHBlcnNpc3RlbmNlIEZST00gcGdfY2F0YWxvZy5wZ19jbGFz cyBXSEVSRSByZWxuYW1lID0gJ3R0JzsiKTsKK2lzKCRyZXN1bHQsICd0JywgJ2Vuc3VyZSB3 ZSBjYW4gc2VlIHRoZSB0ZW1wb3JhcnkgdGFibGUnKTsKKworJG5vZGUtPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfZW5hYmxlX2RhdGFfY2hlY2tzdW1zKCRlbmFibGVf cGFyYW1zKTsiKTsKKworJHJlc3VsdCA9ICRub2RlLT5wb2xsX3F1ZXJ5X3VudGlsKAorCSdw b3N0Z3JlcycsCisJIlNFTEVDVCBzZXR0aW5nIEZST00gcGdfY2F0YWxvZy5wZ19zZXR0aW5n cyBXSEVSRSBuYW1lID0gJ2RhdGFfY2hlY2tzdW1zJzsiLAorCSdpbnByb2dyZXNzLW9uJyk7 CitpcygkcmVzdWx0LCAxLCAnZW5zdXJlIGNoZWNrc3VtcyBhcmUgaW4gdGhlIHByb2Nlc3Mg b2YgYmVpbmcgZW5hYmxlZCcpOworCisjIFR1cm4gdGhlIGNsdXN0ZXIgb2ZmIGFuZCBlbmFi bGUgY2hlY2tzdW1zIG9mZmxpbmUsIHRoZW4gc3RhcnQgYmFjayB1cAorJGJzZXNzaW9uLT5x dWl0OworJG5vZGUtPnN0b3A7Ciskbm9kZS0+Y2hlY2tzdW1fZW5hYmxlX29mZmxpbmU7Cisk bm9kZS0+c3RhcnQ7CisKKyMgRW5zdXJlIHRoYXQgY2hlY2tzdW1zIGFyZSBub3cgZW5hYmxl ZCBldmVuIHRob3VnaCBwcm9jZXNzaW5nIHdhc24ndAorIyByZXN0YXJ0ZWQKKyRyZXN1bHQg PSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBzZXR0aW5nIEZST00g cGdfY2F0YWxvZy5wZ19zZXR0aW5ncyBXSEVSRSBuYW1lID0gJ2RhdGFfY2hlY2tzdW1zJzsi CispOworaXMoJHJlc3VsdCwgJ29uJywgJ2Vuc3VyZSBjaGVja3N1bXMgYXJlIGVuYWJsZWQn KTsKKworIyBSdW4gYSBkdW1teSBxdWVyeSBqdXN0IHRvIG1ha2Ugc3VyZSB3ZSBjYW4gcmVh ZCBiYWNrIHNvbWUgZGF0YQorJHJlc3VsdCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHQiKTsKK2lzKCRyZXN1bHQsICcxMDAwMCcsICdl bnN1cmUgY2hlY2tzdW1tZWQgcGFnZXMgY2FuIGJlIHJlYWQgYmFjaycpOworCitkb25lX3Rl c3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21lc29uLmJ1aWxkIGIvc3JjL3Rlc3Qv bWVzb24uYnVpbGQKaW5kZXggY2NjMzFkNmE4NmEuLmM0YmZlZjJjMGUyIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9tZXNvbi5idWlsZApAQCAt OCw2ICs4LDcgQEAgc3ViZGlyKCdwb3N0bWFzdGVyJykKIHN1YmRpcigncmVjb3ZlcnknKQog c3ViZGlyKCdzdWJzY3JpcHRpb24nKQogc3ViZGlyKCdtb2R1bGVzJykKK3N1YmRpcignY2hl Y2tzdW0nKQogCiBpZiBzc2wuZm91bmQoKQogICBzdWJkaXIoJ3NzbCcpCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtIGIvc3JjL3Rlc3Qv cGVybC9Qb3N0Z3JlU1FML1Rlc3QvQ2x1c3Rlci5wbQppbmRleCBiMTA1Y2JhMDVhNi4uNjY2 YmQyYTJkNGMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L0Ns dXN0ZXIucG0KKysrIGIvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvQ2x1c3Rlci5w bQpAQCAtMzc0OCw2ICszNzQ4LDQwIEBAIHN1YiBhZHZhbmNlX3dhbAogCX0KIH0KIAorPWl0 ZW0gJG5vZGUtPmNoZWNrc3VtX2VuYWJsZV9vZmZsaW5lKCkKKworRW5hYmxlIGRhdGEgcGFn ZSBjaGVja3N1bXMgaW4gYW4gb2ZmbGluZSBjbHVzdGVyIHdpdGggQjxwZ19jaGVja3N1bXM+ LiBUaGUKK2NhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgZW5zdXJpbmcgdGhhdCB0aGUgY2x1 c3RlciBpcyBpbiB0aGUgcmlnaHQgc3RhdGUgZm9yCit0aGlzIG9wZXJhdGlvbi4KKworPWN1 dAorCitzdWIgY2hlY2tzdW1fZW5hYmxlX29mZmxpbmUKK3sKKwlteSAoJHNlbGYpID0gQF87 CisKKwlwcmludCAiIyMjIEVuYWJsaW5nIGNoZWNrc3VtcyBpbiBcIiRzZWxmLT5kYXRhX2Rp clwiXG4iOworCVBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjpzeXN0ZW1fb3JfYmFpbCgncGdf Y2hlY2tzdW1zJywgJy1EJywgJHNlbGYtPmRhdGFfZGlyLCAnLWUnKTsKKwlyZXR1cm47Cit9 CisKKz1pdGVtIGNoZWNrc3VtX2Rpc2FibGVfb2ZmbGluZQorCitEaXNhYmxlIGRhdGEgcGFn ZSBjaGVja3N1bXMgaW4gYW4gb2ZmbGluZSBjbHVzdGVyIHdpdGggQjxwZ19jaGVja3N1bXM+ LiBUaGUKK2NhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgZW5zdXJpbmcgdGhhdCB0aGUgY2x1 c3RlciBpcyBpbiB0aGUgcmlnaHQgc3RhdGUgZm9yCit0aGlzIG9wZXJhdGlvbi4KKworPWN1 dAorCitzdWIgY2hlY2tzdW1fZGlzYWJsZV9vZmZsaW5lCit7CisJbXkgKCRzZWxmKSA9IEBf OworCisJcHJpbnQgIiMjIyBEaXNhYmxpbmcgY2hlY2tzdW1zIGluIFwiJHNlbGYtPmRhdGFf ZGlyXCJcbiI7CisJUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnN5c3RlbV9vcl9iYWlsKCdw Z19jaGVja3N1bXMnLCAnLUQnLCAkc2VsZi0+ZGF0YV9kaXIsICctZCcpOworCXJldHVybjsK K30KKwogPXBvZAogCiA9YmFjawpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9ydWxlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApp bmRleCA2MmY2OWFjMjBiMi4uMzZiZWQ0YjE2OGQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcnVsZXMub3V0CkBAIC0yMDQxLDYgKzIwNDEsMzQgQEAgcGdfc3RhdF9wcm9ncmVzc19j cmVhdGVfaW5kZXh8IFNFTEVDVCBzLnBpZCwKICAgICBzLnBhcmFtMTUgQVMgcGFydGl0aW9u c19kb25lCiAgICBGUk9NIChwZ19zdGF0X2dldF9wcm9ncmVzc19pbmZvKCdDUkVBVEUgSU5E RVgnOjp0ZXh0KSBzKHBpZCwgZGF0aWQsIHJlbGlkLCBwYXJhbTEsIHBhcmFtMiwgcGFyYW0z LCBwYXJhbTQsIHBhcmFtNSwgcGFyYW02LCBwYXJhbTcsIHBhcmFtOCwgcGFyYW05LCBwYXJh bTEwLCBwYXJhbTExLCBwYXJhbTEyLCBwYXJhbTEzLCBwYXJhbTE0LCBwYXJhbTE1LCBwYXJh bTE2LCBwYXJhbTE3LCBwYXJhbTE4LCBwYXJhbTE5LCBwYXJhbTIwKQogICAgICBMRUZUIEpP SU4gcGdfZGF0YWJhc2UgZCBPTiAoKHMuZGF0aWQgPSBkLm9pZCkpKTsKK3BnX3N0YXRfcHJv Z3Jlc3NfZGF0YV9jaGVja3N1bXN8IFNFTEVDVCBzLnBpZCwKKyAgICBzLmRhdGlkLAorICAg IGQuZGF0bmFtZSwKKyAgICAgICAgQ0FTRSBzLnBhcmFtMQorICAgICAgICAgICAgV0hFTiAw IFRIRU4gJ2VuYWJsaW5nJzo6dGV4dAorICAgICAgICAgICAgV0hFTiAxIFRIRU4gJ2Rpc2Fi bGluZyc6OnRleHQKKyAgICAgICAgICAgIFdIRU4gMiBUSEVOICd3YWl0aW5nJzo6dGV4dAor ICAgICAgICAgICAgV0hFTiAzIFRIRU4gJ3dhaXRpbmcgb24gYmFja2VuZHMnOjp0ZXh0Cisg ICAgICAgICAgICBXSEVOIDQgVEhFTiAnd2FpdGluZyBvbiB0ZW1wb3JhcnkgdGFibGVzJzo6 dGV4dAorICAgICAgICAgICAgV0hFTiA1IFRIRU4gJ2RvbmUnOjp0ZXh0CisgICAgICAgICAg ICBFTFNFIE5VTEw6OnRleHQKKyAgICAgICAgRU5EIEFTIHBoYXNlLAorICAgICAgICBDQVNF IHMucGFyYW0yCisgICAgICAgICAgICBXSEVOICctMSc6OmludGVnZXIgVEhFTiBOVUxMOjpi aWdpbnQKKyAgICAgICAgICAgIEVMU0Ugcy5wYXJhbTIKKyAgICAgICAgRU5EIEFTIGRhdGFi YXNlc190b3RhbCwKKyAgICAgICAgQ0FTRSBzLnBhcmFtMworICAgICAgICAgICAgV0hFTiAn LTEnOjppbnRlZ2VyIFRIRU4gTlVMTDo6YmlnaW50CisgICAgICAgICAgICBFTFNFIHMucGFy YW0zCisgICAgICAgIEVORCBBUyByZWxhdGlvbnNfdG90YWwsCisgICAgcy5wYXJhbTQgQVMg ZGF0YWJhc2VzX3Byb2Nlc3NlZCwKKyAgICBzLnBhcmFtNSBBUyByZWxhdGlvbnNfcHJvY2Vz c2VkLAorICAgIHMucGFyYW02IEFTIGRhdGFiYXNlc19jdXJyZW50LAorICAgIHMucGFyYW03 IEFTIHJlbGF0aW9uX2N1cnJlbnQsCisgICAgcy5wYXJhbTggQVMgcmVsYXRpb25fY3VycmVu dF9ibG9ja3MsCisgICAgcy5wYXJhbTkgQVMgcmVsYXRpb25fY3VycmVudF9ibG9ja3NfcHJv Y2Vzc2VkCisgICBGUk9NIChwZ19zdGF0X2dldF9wcm9ncmVzc19pbmZvKCdEQVRBQ0hFQ0tT VU1TJzo6dGV4dCkgcyhwaWQsIGRhdGlkLCByZWxpZCwgcGFyYW0xLCBwYXJhbTIsIHBhcmFt MywgcGFyYW00LCBwYXJhbTUsIHBhcmFtNiwgcGFyYW03LCBwYXJhbTgsIHBhcmFtOSwgcGFy YW0xMCwgcGFyYW0xMSwgcGFyYW0xMiwgcGFyYW0xMywgcGFyYW0xNCwgcGFyYW0xNSwgcGFy YW0xNiwgcGFyYW0xNywgcGFyYW0xOCwgcGFyYW0xOSwgcGFyYW0yMCkKKyAgICAgTEVGVCBK T0lOIHBnX2RhdGFiYXNlIGQgT04gKChzLmRhdGlkID0gZC5vaWQpKSk7CiBwZ19zdGF0X3By b2dyZXNzX3ZhY3V1bXwgU0VMRUNUIHMucGlkLAogICAgIHMuZGF0aWQsCiAgICAgZC5kYXRu YW1lLApkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9z cmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA5ODQwMDYwOTk3Zi4uODZl NDA1N2Y2MWQgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC00MDMsNiArNDAz LDcgQEAgQ2hlY2tQb2ludFN0bXQKIENoZWNrcG9pbnRTdGF0c0RhdGEKIENoZWNrcG9pbnRl clJlcXVlc3QKIENoZWNrcG9pbnRlclNobWVtU3RydWN0CitDaGVja3N1bVR5cGUKIENocm9t b3NvbWUKIENrcHRTb3J0SXRlbQogQ2twdFRzU3RhdHVzCkBAIC01OTMsNiArNTk0LDEwIEBA IERhdGFQYWdlRGVsZXRlU3RhY2sKIERhdGFUeXBlc1VzYWdlQ2hlY2tzCiBEYXRhVHlwZXNV c2FnZVZlcnNpb25DaGVjawogRGF0YWJhc2VJbmZvCitEYXRhQ2hlY2tzdW1zV29ya2VyRGF0 YWJhc2UKK0RhdGFDaGVja3N1bXNXb3JrZXJSZXN1bHQKK0RhdGFDaGVja3N1bXNXb3JrZXJS ZXN1bHRFbnRyeQorRGF0YUNoZWNrc3Vtc1dvcmtlclNobWVtU3RydWN0CiBEYXRlQURUCiBE YXRlVGltZUVycm9yRXh0cmEKIERhdHVtCkBAIC00MTQxLDYgKzQxNDYsNyBAQCB4bF9idHJl ZV9zcGxpdAogeGxfYnRyZWVfdW5saW5rX3BhZ2UKIHhsX2J0cmVlX3VwZGF0ZQogeGxfYnRy ZWVfdmFjdXVtCit4bF9jaGVja3N1bV9zdGF0ZQogeGxfY2xvZ190cnVuY2F0ZQogeGxfY29t bWl0X3RzX3RydW5jYXRlCiB4bF9kYmFzZV9jcmVhdGVfZmlsZV9jb3B5X3JlYwotLSAKMi40 OC4xCgo= --------------qzhG3TvJfoKQPAu6hWaxRwbV Content-Type: text/x-patch; charset=UTF-8; name="v20250310b-0002-simple-post-rebase-fixes.patch" Content-Disposition: attachment; filename="v20250310b-0002-simple-post-rebase-fixes.patch" Content-Transfer-Encoding: base64 RnJvbSAyNTJiNmMzYWQwNmI1NTVlMWNjMjBjYTMzMTU1ZWU0MDhmM2NmZjMzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQHZvbmRyYS5tZT4K RGF0ZTogRnJpLCA3IE1hciAyMDI1IDIwOjE5OjI5ICswMTAwClN1YmplY3Q6IFtQQVRDSCB2 MjAyNTAzMTBiIDIvNV0gc2ltcGxlIHBvc3QtcmViYXNlIGZpeGVzCgotIFVwZGF0ZSBjaGVj a3MgaW4gUG9zdG1hc3RlclN0YXRlTWFjaGluZSB0byBhY2NvdW50IGZvciBkYXRhY2hlY2tz dW0KICB3b3JrZXJzLCBldGMuCgotIFJlbW92ZSBwZ3N0YXRfYmVzdGFydCgpIGNhbGwgLSBp dCB3b3VsZCBuZWVkIHRvIGJlIF9pbml0aWFsKCksIGJ1dCBJCiAgZG9uJ3QgdGhpbmsgaXQn cyBuZWVkZWQuCgotIFVwZGF0ZSB2YWN1dW1fZGVsYXlfcG9pbnQoKSBjYWxsLgoKLSBDYXN0 IFBJRCB0byBsb25nIGluIGVsb2cgY2FsbCAoc2FtZSBhcyB3ZSBkbyBpbiBwb3N0bWFzdGVy LmMpCgotIEZpeCB0ZXN0IDAwM19zdGFuZGJ5X3Jlc3RhcnRzIGJ5IGFkZGluZyBhIHJlcGxp Y2F0aW9uIHNsb3QKLS0tCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL2RhdGFjaGVja3N1bXN3 b3JrZXIuYyB8ICA3ICsrLS0tLS0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rl ci5jICAgICAgICAgIHwgIDUgKysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bn c3RhdF9iYWNrZW5kLmMgIHwgIDIgKysKIHNyYy90ZXN0L2NoZWNrc3VtL3QvMDAzX3N0YW5k YnlfcmVzdGFydHMucGwgIHwgMTAgKysrKysrKysrLQogNCBmaWxlcyBjaGFuZ2VkLCAxOCBp bnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvZGF0YWNoZWNrc3Vtc3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9kYXRhY2hlY2tzdW1zd29ya2VyLmMKaW5kZXggZGU3YTA3N2Y5YzIuLmIzMGQ1NDgx YjA2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2RhdGFjaGVja3N1bXN3 b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2RhdGFjaGVja3N1bXN3b3Jr ZXIuYwpAQCAtNDUwLDcgKzQ1MCw3IEBAIFByb2Nlc3NTaW5nbGVSZWxhdGlvbkZvcmsoUmVs YXRpb24gcmVsbiwgRm9ya051bWJlciBmb3JrTnVtLCBCdWZmZXJBY2Nlc3NTdHJhdGVnCiAJ CWlmIChhYm9ydF9yZXF1ZXN0ZWQpCiAJCQlyZXR1cm4gZmFsc2U7CiAKLQkJdmFjdXVtX2Rl bGF5X3BvaW50KCk7CisJCXZhY3V1bV9kZWxheV9wb2ludChmYWxzZSk7CiAJfQogCiAJcGZy ZWUocmVsbnMpOwpAQCAtNTg3LDcgKzU4Nyw3IEBAIFByb2Nlc3NEYXRhYmFzZShEYXRhQ2hl Y2tzdW1zV29ya2VyRGF0YWJhc2UgKmRiKQogCQkJCQlkYi0+ZGJuYW1lKSkpOwogCiAJc25w cmludGYoYWN0aXZpdHksIHNpemVvZihhY3Rpdml0eSkgLSAxLAotCQkJICJXYWl0aW5nIGZv ciB3b3JrZXIgaW4gZGF0YWJhc2UgJXMgKHBpZCAlZCkiLCBkYi0+ZGJuYW1lLCBwaWQpOwor CQkJICJXYWl0aW5nIGZvciB3b3JrZXIgaW4gZGF0YWJhc2UgJXMgKHBpZCAlbGQpIiwgZGIt PmRibmFtZSwgKGxvbmcpIHBpZCk7CiAJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9S VU5OSU5HLCBhY3Rpdml0eSk7CiAKIAlzdGF0dXMgPSBXYWl0Rm9yQmFja2dyb3VuZFdvcmtl clNodXRkb3duKGJnd19oYW5kbGUpOwpAQCAtNzUyLDkgKzc1Miw2IEBAIERhdGFDaGVja3N1 bXNXb3JrZXJMYXVuY2hlck1haW4oRGF0dW0gYXJnKQogCSAqLwogCUJhY2tncm91bmRXb3Jr ZXJJbml0aWFsaXplQ29ubmVjdGlvbkJ5T2lkKEludmFsaWRPaWQsIEludmFsaWRPaWQsIDAp OwogCi0JLyogSW5pdGlhbGl6ZSBiYWNrZW5kIHN0YXR1cyBpbmZvcm1hdGlvbiAqLwotCXBn c3RhdF9iZXN0YXJ0KCk7Ci0KIAllbmFibGluZ19jaGVja3N1bXMgPSBEYXRhQ2hlY2tzdW1z V29ya2VyU2htZW0tPmxhdW5jaF9lbmFibGVfY2hlY2tzdW1zOwogCURhdGFDaGVja3N1bXNX b3JrZXJTaG1lbS0+bGF1bmNoZXJfcnVubmluZyA9IHRydWU7CiAJRGF0YUNoZWNrc3Vtc1dv cmtlclNobWVtLT5lbmFibGluZ19jaGVja3N1bXMgPSBlbmFibGluZ19jaGVja3N1bXM7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYyBiL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jCmluZGV4IGQyYTdhN2FkZDZmLi4yZmM0 Mzg5ODdiNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVy LmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMKQEAgLTI5NDcs NiArMjk0NywxMSBAQCBQb3N0bWFzdGVyU3RhdGVNYWNoaW5lKHZvaWQpCiAJCQkJCQkJCQlC X0lOVkFMSUQsCiAJCQkJCQkJCQlCX1NUQU5EQUxPTkVfQkFDS0VORCk7CiAKKwkJCS8qIGFs c28gYWRkIGNoZWNrc3VtbWluZyBwcm9jZXNzZXMgKi8KKwkJCXJlbWFpbk1hc2sgPSBidG1h c2tfYWRkKHJlbWFpbk1hc2ssCisJCQkJCQkJCQlCX0RBVEFDSEVDS1NVTVNXT1JLRVJfTEFV TkNIRVIsCisJCQkJCQkJCQlCX0RBVEFDSEVDS1NVTVNXT1JLRVJfV09SS0VSKTsKKwogCQkJ LyogQWxsIHR5cGVzIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0YXJnZXRNYXNrIG9yIHJlbWFp bk1hc2sgKi8KIAkJCUFzc2VydCgocmVtYWluTWFzay5tYXNrIHwgdGFyZ2V0TWFzay5tYXNr KSA9PSBCVFlQRV9NQVNLX0FMTC5tYXNrKTsKIAkJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2JhY2tlbmQuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FjdGl2aXR5L3Bnc3RhdF9iYWNrZW5kLmMKaW5kZXggYTkzNDNiN2I1OWUuLmY0YjJmM2I5 MWQ4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfYmFj a2VuZC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9iYWNrZW5k LmMKQEAgLTI5Miw2ICsyOTIsOCBAQCBwZ3N0YXRfdHJhY2tzX2JhY2tlbmRfYmt0eXBlKEJh Y2tlbmRUeXBlIGJrdHlwZSkKIAkJY2FzZSBCX0JHX1dSSVRFUjoKIAkJY2FzZSBCX0NIRUNL UE9JTlRFUjoKIAkJY2FzZSBCX1NUQVJUVVA6CisJCWNhc2UgQl9EQVRBQ0hFQ0tTVU1TV09S S0VSX0xBVU5DSEVSOgorCQljYXNlIEJfREFUQUNIRUNLU1VNU1dPUktFUl9XT1JLRVI6CiAJ CQlyZXR1cm4gZmFsc2U7CiAKIAkJY2FzZSBCX0FVVE9WQUNfV09SS0VSOgpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvY2hlY2tzdW0vdC8wMDNfc3RhbmRieV9yZXN0YXJ0cy5wbCBiL3NyYy90 ZXN0L2NoZWNrc3VtL3QvMDAzX3N0YW5kYnlfcmVzdGFydHMucGwKaW5kZXggNmMwZmU4ZjNi ZjguLjY3ODI2NjRmNGU2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9jaGVja3N1bS90LzAwM19z dGFuZGJ5X3Jlc3RhcnRzLnBsCisrKyBiL3NyYy90ZXN0L2NoZWNrc3VtL3QvMDAzX3N0YW5k YnlfcmVzdGFydHMucGwKQEAgLTIwLDE1ICsyMCwyMyBAQCBteSAkZW5hYmxlX3BhcmFtcyA9 ICcwLCAxMDAsIHRydWUnOwogbXkgJG5vZGVfcHJpbWFyeSA9IFBvc3RncmVTUUw6OlRlc3Q6 OkNsdXN0ZXItPm5ldygncHJpbWFyeScpOwogJG5vZGVfcHJpbWFyeS0+aW5pdChhbGxvd3Nf c3RyZWFtaW5nID0+IDEsIG5vX2RhdGFfY2hlY2tzdW1zID0+IDEpOwogJG5vZGVfcHJpbWFy eS0+c3RhcnQ7Ci1teSAkYmFja3VwX25hbWUgPSAnbXlfYmFja3VwJzsKKworbXkgJHNsb3Ru YW1lID0gJ3BoeXNpY2FsX3Nsb3QnOworJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIlNFTEVDVCBwZ19jcmVhdGVfcGh5c2ljYWxfcmVwbGljYXRpb25fc2xvdCgn JHNsb3RuYW1lJykiKTsKIAogIyBUYWtlIGJhY2t1cAorbXkgJGJhY2t1cF9uYW1lID0gJ215 X2JhY2t1cCc7CiAkbm9kZV9wcmltYXJ5LT5iYWNrdXAoJGJhY2t1cF9uYW1lKTsKIAogIyBD cmVhdGUgc3RyZWFtaW5nIHN0YW5kYnkgbGlua2luZyB0byBwcmltYXJ5CiBteSAkbm9kZV9z dGFuZGJ5XzEgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N0YW5kYnlfMScp OwogJG5vZGVfc3RhbmRieV8xLT5pbml0X2Zyb21fYmFja3VwKCRub2RlX3ByaW1hcnksICRi YWNrdXBfbmFtZSwKIAloYXNfc3RyZWFtaW5nID0+IDEpOworJG5vZGVfc3RhbmRieV8xLT5h cHBlbmRfY29uZigKKwkncG9zdGdyZXNxbC5jb25mJywgcXFbCitwcmltYXJ5X3Nsb3RfbmFt ZSA9ICckc2xvdG5hbWUnCitdKTsKICRub2RlX3N0YW5kYnlfMS0+c3RhcnQ7CiAKICMgQ3Jl YXRlIHNvbWUgY29udGVudCBvbiB0aGUgcHJpbWFyeSB0byBoYXZlIHVuLWNoZWNrc3VtbWVk IGRhdGEgaW4gdGhlIGNsdXN0ZXIKLS0gCjIuNDguMQoK --------------qzhG3TvJfoKQPAu6hWaxRwbV Content-Type: text/x-patch; charset=UTF-8; name="v20250310b-0003-sync-the-data_checksums-GUC-with-the-loca.patch" Content-Disposition: attachment; filename*0="v20250310b-0003-sync-the-data_checksums-GUC-with-the-loca.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAxYjY4NDlmOWViMWZjNTJiN2NmM2M1OWU5YmUyNTU5ZTEzY2U0MGMwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQHZvbmRyYS5tZT4K RGF0ZTogRnJpLCA3IE1hciAyMDI1IDIzOjA3OjQ0ICswMTAwClN1YmplY3Q6IFtQQVRDSCB2 MjAyNTAzMTBiIDMvNV0gc3luYyB0aGUgZGF0YV9jaGVja3N1bXMgR1VDIHdpdGggdGhlIGxv Y2FsCiB2YXJpYWJsZQoKV2Ugbm93IGhhdmUgdGhyZWUgcGxhY2VzIHRoYXQgaW4gc29tZSB3 YXkgZXhwcmVzcyB0aGUgc3RhdGUgb2YgZGF0YQpjaGVja3N1bXMgaW4gdGhlIGluc3RhbmNl LgoKLSBjb250cm9sIGZpbGUgLyBkYXRhX2NoZWNrc3VtX3ZlcnNpb24KCi0gTG9jYWxEYXRh Q2hlY2tzdW1WZXJzaW9uIGFzIGEgbG9jYWwgY2FjaGUgdG8gcmVkdWNlIGxvY2tpbmcKCi0g ZGF0YV9jaGVja3N1bXMgYmFja2luZyB0aGUgR1VDCgpXZSBuZWVkIHRvIGtlZXAgdGhlIEdV QyB2YXJpYWJsZSBpbiBzeW5jLCB0byBlbnN1cmUgd2UgZ2V0IHRoZSBjb3JyZWN0CnZhbHVl IGV2ZW4gZWFybHkgZHVyaW5nIHN0YXJ0dXAgKGUuZy4gd2l0aCAtQykuCgpJbnRyb2R1Y2Vz IGEgbmV3IFNldExvY2FsRGF0YUNoZWNrc3VtVmVyc2lvbigpIHdoaWNoIHNldHMgdGhlIGxv Y2FsCnZhcmlhYmxlLCBhbmQgYWxzbyB1cGRhdGVzIHRoZSBkYXRhX2NoZWNrc3VtIEdVQyBh dCB0aGUgc2FtZSB0aW1lLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cu YyAgIHwgNTEgKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL3V0 aWxzL21pc2MvZ3VjX3RhYmxlcy5jIHwgIDMgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy94bG9n LmggICAgICAgICAgIHwgIDEgKwogMyBmaWxlcyBjaGFuZ2VkLCA0NyBpbnNlcnRpb25zKCsp LCA4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwppbmRleCBi NTE5MGE3ZTEwNC4uZjEzN2NkYzZkNDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9n LmMKQEAgLTY1Nyw2ICs2NTcsMTQgQEAgc3RhdGljIGJvb2wgdXBkYXRlTWluUmVjb3ZlcnlQ b2ludCA9IHRydWU7CiAgKi8KIHN0YXRpYyB1aW50MzIgTG9jYWxEYXRhQ2hlY2tzdW1WZXJz aW9uID0gMDsKIAorLyoKKyAqIFZhcmlhYmxlIGJhY2tpbmcgdGhlIEdVQywga2VlcCBpdCBp biBzeW5jIHdpdGggTG9jYWxEYXRhQ2hlY2tzdW1WZXJzaW9uLgorICogU2VlIFNldExvY2Fs RGF0YUNoZWNrc3VtVmVyc2lvbigpLgorICovCitpbnQJCQlkYXRhX2NoZWNrc3VtcyA9IDA7 CisKK3N0YXRpYyB2b2lkIFNldExvY2FsRGF0YUNoZWNrc3VtVmVyc2lvbih1aW50MzIgZGF0 YV9jaGVja3N1bV92ZXJzaW9uKTsKKwogLyogRm9yIFdBTEluc2VydExvY2tBY3F1aXJlL1Jl bGVhc2UgZnVuY3Rpb25zICovCiBzdGF0aWMgaW50CU15TG9ja05vID0gMDsKIHN0YXRpYyBi b29sIGhvbGRpbmdBbGxMb2NrcyA9IGZhbHNlOwpAQCAtNDU5NCw3ICs0NjAyLDcgQEAgUmVh ZENvbnRyb2xGaWxlKHZvaWQpCiAKIAlDYWxjdWxhdGVDaGVja3BvaW50U2VnbWVudHMoKTsK IAotCUxvY2FsRGF0YUNoZWNrc3VtVmVyc2lvbiA9IENvbnRyb2xGaWxlLT5kYXRhX2NoZWNr c3VtX3ZlcnNpb247CisJU2V0TG9jYWxEYXRhQ2hlY2tzdW1WZXJzaW9uKENvbnRyb2xGaWxl LT5kYXRhX2NoZWNrc3VtX3ZlcnNpb24pOwogfQogCiAvKgpAQCAtNDkxMyw3ICs0OTIxLDcg QEAgU2V0RGF0YUNoZWNrc3Vtc09mZih2b2lkKQogYm9vbAogQWJzb3JiQ2hlY2tzdW1zT25J blByb2dyZXNzQmFycmllcih2b2lkKQogewotCUxvY2FsRGF0YUNoZWNrc3VtVmVyc2lvbiA9 IFBHX0RBVEFfQ0hFQ0tTVU1fSU5QUk9HUkVTU19PTl9WRVJTSU9OOworCVNldExvY2FsRGF0 YUNoZWNrc3VtVmVyc2lvbihQR19EQVRBX0NIRUNLU1VNX0lOUFJPR1JFU1NfT05fVkVSU0lP Tik7CiAJcmV0dXJuIHRydWU7CiB9CiAKQEAgLTQ5MjEsMjEgKzQ5MjksMjEgQEAgYm9vbAog QWJzb3JiQ2hlY2tzdW1zT25CYXJyaWVyKHZvaWQpCiB7CiAJQXNzZXJ0KExvY2FsRGF0YUNo ZWNrc3VtVmVyc2lvbiA9PSBQR19EQVRBX0NIRUNLU1VNX0lOUFJPR1JFU1NfT05fVkVSU0lP Tik7Ci0JTG9jYWxEYXRhQ2hlY2tzdW1WZXJzaW9uID0gUEdfREFUQV9DSEVDS1NVTV9WRVJT SU9OOworCVNldExvY2FsRGF0YUNoZWNrc3VtVmVyc2lvbihQR19EQVRBX0NIRUNLU1VNX1ZF UlNJT04pOwogCXJldHVybiB0cnVlOwogfQogCiBib29sCiBBYnNvcmJDaGVja3N1bXNPZmZJ blByb2dyZXNzQmFycmllcih2b2lkKQogewotCUxvY2FsRGF0YUNoZWNrc3VtVmVyc2lvbiA9 IFBHX0RBVEFfQ0hFQ0tTVU1fSU5QUk9HUkVTU19PRkZfVkVSU0lPTjsKKwlTZXRMb2NhbERh dGFDaGVja3N1bVZlcnNpb24oUEdfREFUQV9DSEVDS1NVTV9JTlBST0dSRVNTX09GRl9WRVJT SU9OKTsKIAlyZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbAogQWJzb3JiQ2hlY2tzdW1zT2ZmQmFy cmllcih2b2lkKQogewotCUxvY2FsRGF0YUNoZWNrc3VtVmVyc2lvbiA9IDA7CisJU2V0TG9j YWxEYXRhQ2hlY2tzdW1WZXJzaW9uKDApOwogCXJldHVybiB0cnVlOwogfQogCkBAIC00OTUx LDEwICs0OTU5LDQxIEBAIHZvaWQKIEluaXRMb2NhbENvbnRyb2xkYXRhKHZvaWQpCiB7CiAJ TFdMb2NrQWNxdWlyZShDb250cm9sRmlsZUxvY2ssIExXX0VYQ0xVU0lWRSk7Ci0JTG9jYWxE YXRhQ2hlY2tzdW1WZXJzaW9uID0gQ29udHJvbEZpbGUtPmRhdGFfY2hlY2tzdW1fdmVyc2lv bjsKKwlTZXRMb2NhbERhdGFDaGVja3N1bVZlcnNpb24oQ29udHJvbEZpbGUtPmRhdGFfY2hl Y2tzdW1fdmVyc2lvbik7CiAJTFdMb2NrUmVsZWFzZShDb250cm9sRmlsZUxvY2spOwogfQog CisvKgorICogWFhYIHByb2JhYmx5IHNob3VsZCBiZSBjYWxsZWQgaW4gYWxsIHBsYWNlcyB0 aGF0IG1vZGlmeSB0aGUgdmFsdWUgb2YKKyAqIExvY2FsRGF0YUNoZWNrc3VtVmVyc2lvbiAo dG8gbWFrZSBzdXJlIGRhdGFfY2hlY2tzdW1zIEdVQyBpcyBpbiBzeW5jKQorICoKKyAqIFhY WCBhcmVuJ3QgUEdfREFUQV8gYW5kIERBVEFfIGNvbnN0YW50cyB0aGUgc2FtZT8gd2h5IGRv IHdlIG5lZWQgYm90aD8KKyAqLwordm9pZAorU2V0TG9jYWxEYXRhQ2hlY2tzdW1WZXJzaW9u KHVpbnQzMiBkYXRhX2NoZWNrc3VtX3ZlcnNpb24pCit7CisJTG9jYWxEYXRhQ2hlY2tzdW1W ZXJzaW9uID0gZGF0YV9jaGVja3N1bV92ZXJzaW9uOworCisJc3dpdGNoIChMb2NhbERhdGFD aGVja3N1bVZlcnNpb24pCisJeworCQljYXNlIFBHX0RBVEFfQ0hFQ0tTVU1fVkVSU0lPTjoK KwkJCWRhdGFfY2hlY2tzdW1zID0gREFUQV9DSEVDS1NVTVNfT047CisJCQlicmVhazsKKwor CQljYXNlIFBHX0RBVEFfQ0hFQ0tTVU1fSU5QUk9HUkVTU19PTl9WRVJTSU9OOgorCQkJZGF0 YV9jaGVja3N1bXMgPSBEQVRBX0NIRUNLU1VNU19JTlBST0dSRVNTX09OOworCQkJYnJlYWs7 CisKKwkJY2FzZSBQR19EQVRBX0NIRUNLU1VNX0lOUFJPR1JFU1NfT0ZGX1ZFUlNJT046CisJ CQlkYXRhX2NoZWNrc3VtcyA9IERBVEFfQ0hFQ0tTVU1TX0lOUFJPR1JFU1NfT0ZGOworCQkJ YnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCWRhdGFfY2hlY2tzdW1zID0gREFUQV9DSEVDS1NV TVNfT0ZGOworCQkJYnJlYWs7CisJfQorfQorCiAvKiBndWMgaG9vayAqLwogY29uc3QgY2hh ciAqCiBzaG93X2RhdGFfY2hlY2tzdW1zKHZvaWQpCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3Vj X3RhYmxlcy5jCmluZGV4IDA1Y2JhM2EwMmUzLi42NmFiZjA1NjE1OSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKQEAgLTYwOSw3ICs2MDksNiBAQCBzdGF0aWMgaW50 CXNoYXJlZF9tZW1vcnlfc2l6ZV9tYjsKIHN0YXRpYyBpbnQJc2hhcmVkX21lbW9yeV9zaXpl X2luX2h1Z2VfcGFnZXM7CiBzdGF0aWMgaW50CXdhbF9ibG9ja19zaXplOwogc3RhdGljIGlu dAludW1fb3Nfc2VtYXBob3JlczsKLXN0YXRpYyBpbnQJZGF0YV9jaGVja3N1bXM7CiBzdGF0 aWMgYm9vbCBpbnRlZ2VyX2RhdGV0aW1lczsKIAogI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJ TkcKQEAgLTUzMDAsNyArNTI5OSw3IEBAIHN0cnVjdCBjb25maWdfZW51bSBDb25maWd1cmVO YW1lc0VudW1bXSA9CiAJCXsiZGF0YV9jaGVja3N1bXMiLCBQR0NfSU5URVJOQUwsIFBSRVNF VF9PUFRJT05TLAogCQkJZ2V0dGV4dF9ub29wKCJTaG93cyB3aGV0aGVyIGRhdGEgY2hlY2tz dW1zIGFyZSB0dXJuZWQgb24gZm9yIHRoaXMgY2x1c3Rlci4iKSwKIAkJCU5VTEwsCi0JCQlH VUNfTk9UX0lOX1NBTVBMRSB8IEdVQ19ESVNBTExPV19JTl9GSUxFCisJCQlHVUNfTk9UX0lO X1NBTVBMRSB8IEdVQ19ESVNBTExPV19JTl9GSUxFIHwgR1VDX1JVTlRJTUVfQ09NUFVURUQK IAkJfSwKIAkJJmRhdGFfY2hlY2tzdW1zLAogCQlEQVRBX0NIRUNLU1VNU19PRkYsIGRhdGFf Y2hlY2tzdW1zX29wdGlvbnMsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxv Zy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cuaAppbmRleCAwYmIzMmM5YzBmYy4uYWVj M2VhMGJjNjMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmgKKysrIGIv c3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cuaApAQCAtNTYsNiArNTYsNyBAQCBleHRlcm4gUEdE TExJTVBPUlQgaW50IENvbW1pdERlbGF5OwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBDb21t aXRTaWJsaW5nczsKIGV4dGVybiBQR0RMTElNUE9SVCBib29sIHRyYWNrX3dhbF9pb190aW1p bmc7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IHdhbF9kZWNvZGVfYnVmZmVyX3NpemU7Citl eHRlcm4gUEdETExJTVBPUlQgaW50IGRhdGFfY2hlY2tzdW1zOwogCiBleHRlcm4gUEdETExJ TVBPUlQgaW50IENoZWNrUG9pbnRTZWdtZW50czsKIAotLSAKMi40OC4xCgo= --------------qzhG3TvJfoKQPAu6hWaxRwbV Content-Type: text/x-patch; charset=UTF-8; name="v20250310b-0004-make-progress-reporting-work.patch" Content-Disposition: attachment; filename="v20250310b-0004-make-progress-reporting-work.patch" Content-Transfer-Encoding: base64 RnJvbSAzNTFmNjZkNTFjOWY2MDRhOTU2MDgwYWEzY2M1Y2JkOTFiZWNjOGYwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQHZvbmRyYS5tZT4K RGF0ZTogU2F0LCA4IE1hciAyMDI1IDE5OjM0OjUwICswMTAwClN1YmplY3Q6IFtQQVRDSCB2 MjAyNTAzMTBiIDQvNV0gbWFrZSBwcm9ncmVzcyByZXBvcnRpbmcgd29yawoKLSBTcGxpdHMg dGhlIHByb2dyZXNzIHN0YXR1cyBieSB3b3JrZXIgdHlwZSAtIG9uZSByb3cgZm9yIGxhdW5j aGVyLAogIG9uZSByb3cgZm9yIGNoZWNrc3VtIHdvcmtlciAobWlnaHQgYmUgbW9yZSB3aXRo IHBhcmFsbGVsIHdvcmtlcnMpLgoKLSBUaGUgbGF1bmNoZXIgb25seSB1cGRhdGVzIGRhdGFi YXNlIGNvdW50ZXJzLCB0aGUgd29ya2VycyBvbmx5IHNldAogIHJlbGF0aW9uL2Jsb2NrIGNv dW50ZXJzLgoKLSBBbHNvIHJld29ya3MgdGhlIGNvbHVtbnMgaW4gdGhlIHN5c3RlbSB2aWV3 IGEgYml0LCBkaXNjYXJkcyB0aGUKICAiY3VycmVudCIgZmllbGRzICh3ZSBzdGlsbCBrbm93 IHRoZSBkYXRhYmFzZSBmb3IgZWFjaCB3b3JrZXIpLgoKLSBJc3N1ZTogTm90IHN1cmUgd2hh dCB0byBkbyBhYm91dCByZWxhdGlvbiBmb3JrcywgYXQgdGhpcyBwb2ludCBpdAogIHRyYWNr cyBvbmx5IGJsb2NrcyBmb3IgTUFJTiBmb3JrLgotLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cv c3lzdGVtX3ZpZXdzLnNxbCAgICAgICAgIHwgMzYgKysrKy0tLS0KIHNyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvZGF0YWNoZWNrc3Vtc3dvcmtlci5jIHwgOTEgKysrKysrKysrKysrKysrKyst LS0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3Byb2dyZXNzLmggICAgICAgICAgICAgIHwgMjcg KysrLS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCAgICAgICAgICB8 IDI5ICsrKystLS0KIDQgZmlsZXMgY2hhbmdlZCwgMTMxIGluc2VydGlvbnMoKyksIDUyIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3Zp ZXdzLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAppbmRleCAw ZDYyOTc2ZGMxZi4uNDMzMGQwYWQ2NTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92 aWV3cy5zcWwKQEAgLTEzMzUsMjUgKzEzMzUsMjUgQEAgQ1JFQVRFIFZJRVcgcGdfc3RhdF9w cm9ncmVzc19jb3B5IEFTCiAgICAgICAgIExFRlQgSk9JTiBwZ19kYXRhYmFzZSBEIE9OIFMu ZGF0aWQgPSBELm9pZDsKIAogQ1JFQVRFIFZJRVcgcGdfc3RhdF9wcm9ncmVzc19kYXRhX2No ZWNrc3VtcyBBUwotCVNFTEVDVAotCQlTLnBpZCBBUyBwaWQsIFMuZGF0aWQgQVMgZGF0aWQs IEQuZGF0bmFtZSBBUyBkYXRuYW1lLAotCQlDQVNFIFMucGFyYW0xIFdIRU4gMCBUSEVOICdl bmFibGluZycKKyAgICBTRUxFQ1QKKyAgICAgICAgUy5waWQgQVMgcGlkLCBTLmRhdGlkLCBE LmRhdG5hbWUgQVMgZGF0bmFtZSwKKyAgICAgICAgQ0FTRSBTLnBhcmFtMSBXSEVOIDAgVEhF TiAnZW5hYmxpbmcnCiAgICAgICAgICAgICAgICAgICAgICAgV0hFTiAxIFRIRU4gJ2Rpc2Fi bGluZycKLQkJCQkJICBXSEVOIDIgVEhFTiAnd2FpdGluZycKLQkJCQkJICBXSEVOIDMgVEhF TiAnd2FpdGluZyBvbiBiYWNrZW5kcycKLQkJCQkJICBXSEVOIDQgVEhFTiAnd2FpdGluZyBv biB0ZW1wb3JhcnkgdGFibGVzJwotCQkJCQkgIFdIRU4gNSBUSEVOICdkb25lJwotCQkJCQkg IEVORCBBUyBwaGFzZSwKLQkJQ0FTRSBTLnBhcmFtMiBXSEVOIC0xIFRIRU4gTlVMTCBFTFNF IFMucGFyYW0yIEVORCBBUyBkYXRhYmFzZXNfdG90YWwsCi0JCUNBU0UgUy5wYXJhbTMgV0hF TiAtMSBUSEVOIE5VTEwgRUxTRSBTLnBhcmFtMyBFTkQgQVMgcmVsYXRpb25zX3RvdGFsLAot CQlTLnBhcmFtNCBBUyBkYXRhYmFzZXNfcHJvY2Vzc2VkLAotCQlTLnBhcmFtNSBBUyByZWxh dGlvbnNfcHJvY2Vzc2VkLAotCQlTLnBhcmFtNiBBUyBkYXRhYmFzZXNfY3VycmVudCwKLQkJ Uy5wYXJhbTcgQVMgcmVsYXRpb25fY3VycmVudCwKLQkJUy5wYXJhbTggQVMgcmVsYXRpb25f Y3VycmVudF9ibG9ja3MsCi0JCVMucGFyYW05IEFTIHJlbGF0aW9uX2N1cnJlbnRfYmxvY2tz X3Byb2Nlc3NlZAotCUZST00gcGdfc3RhdF9nZXRfcHJvZ3Jlc3NfaW5mbygnREFUQUNIRUNL U1VNUycpIEFTIFMKLQkJTEVGVCBKT0lOIHBnX2RhdGFiYXNlIEQgT04gUy5kYXRpZCA9IEQu b2lkOworICAgICAgICAgICAgICAgICAgICAgIFdIRU4gMiBUSEVOICd3YWl0aW5nJworICAg ICAgICAgICAgICAgICAgICAgIFdIRU4gMyBUSEVOICd3YWl0aW5nIG9uIGJhY2tlbmRzJwor ICAgICAgICAgICAgICAgICAgICAgIFdIRU4gNCBUSEVOICd3YWl0aW5nIG9uIHRlbXBvcmFy eSB0YWJsZXMnCisgICAgICAgICAgICAgICAgICAgICAgV0hFTiA1IFRIRU4gJ3dhaXRpbmcg b24gY2hlY2twb2ludCcKKyAgICAgICAgICAgICAgICAgICAgICBXSEVOIDYgVEhFTiAnZG9u ZScKKyAgICAgICAgICAgICAgICAgICAgICBFTkQgQVMgcGhhc2UsCisgICAgICAgIENBU0Ug Uy5wYXJhbTIgV0hFTiAtMSBUSEVOIE5VTEwgRUxTRSBTLnBhcmFtMiBFTkQgQVMgZGF0YWJh c2VzX3RvdGFsLAorICAgICAgICBTLnBhcmFtMyBBUyBkYXRhYmFzZXNfZG9uZSwKKyAgICAg ICAgQ0FTRSBTLnBhcmFtNCBXSEVOIC0xIFRIRU4gTlVMTCBFTFNFIFMucGFyYW00IEVORCBB UyByZWxhdGlvbnNfdG90YWwsCisgICAgICAgIENBU0UgUy5wYXJhbTUgV0hFTiAtMSBUSEVO IE5VTEwgRUxTRSBTLnBhcmFtNSBFTkQgQVMgcmVsYXRpb25zX2RvbmUsCisgICAgICAgIENB U0UgUy5wYXJhbTYgV0hFTiAtMSBUSEVOIE5VTEwgRUxTRSBTLnBhcmFtNiBFTkQgQVMgYmxv Y2tzX3RvdGFsLAorICAgICAgICBDQVNFIFMucGFyYW03IFdIRU4gLTEgVEhFTiBOVUxMIEVM U0UgUy5wYXJhbTcgRU5EIEFTIGJsb2Nrc19kb25lCisgICAgRlJPTSBwZ19zdGF0X2dldF9w cm9ncmVzc19pbmZvKCdEQVRBQ0hFQ0tTVU1TJykgQVMgUworICAgICAgICBMRUZUIEpPSU4g cGdfZGF0YWJhc2UgRCBPTiBTLmRhdGlkID0gRC5vaWQKKyAgICBPUkRFUiBCWSBTLmRhdGlk OyAtLSByZXR1cm4gdGhlIGxhdW5jaGVyIHByb2Nlc3MgZmlyc3QKIAogQ1JFQVRFIFZJRVcg cGdfdXNlcl9tYXBwaW5ncyBBUwogICAgIFNFTEVDVApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9kYXRhY2hlY2tzdW1zd29ya2VyLmMgYi9zcmMvYmFja2VuZC9wb3N0 bWFzdGVyL2RhdGFjaGVja3N1bXN3b3JrZXIuYwppbmRleCBiMzBkNTQ4MWIwNi4uNDEwMWZk ZmYxMDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvZGF0YWNoZWNrc3Vt c3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvZGF0YWNoZWNrc3Vtc3dv cmtlci5jCkBAIC00MDksNiArNDA5LDExIEBAIFByb2Nlc3NTaW5nbGVSZWxhdGlvbkZvcmso UmVsYXRpb24gcmVsbiwgRm9ya051bWJlciBmb3JrTnVtLCBCdWZmZXJBY2Nlc3NTdHJhdGVn CiAJCQkgcmVsbnMsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbG4pLCBmb3JrTmFtZXNb Zm9ya051bV0sIG51bWJsb2Nrcyk7CiAJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9S VU5OSU5HLCBhY3Rpdml0eSk7CiAKKwkvKiBYWFggb25seSBkbyB0aGlzIGZvciBtYWluIGZv cmtzLCBtYXliZSB3ZSBzaG91bGQgZG8gaXQgZm9yIGFsbD8gKi8KKwlpZiAoZm9ya051bSA9 PSBNQUlOX0ZPUktOVU0pCisJCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JF U1NfREFUQUNIRUNLU1VNU19CTE9DS1NfVE9UQUwsCisJCQkJCQkJCQkgbnVtYmxvY2tzKTsK KwogCS8qCiAJICogV2UgYXJlIGxvb3Bpbmcgb3ZlciB0aGUgYmxvY2tzIHdoaWNoIGV4aXN0 ZWQgYXQgdGhlIHRpbWUgb2YgcHJvY2VzcwogCSAqIHN0YXJ0LCB3aGljaCBpcyBzYWZlIHNp bmNlIG5ldyBibG9ja3MgYXJlIGNyZWF0ZWQgd2l0aCBjaGVja3N1bXMgc2V0CkBAIC00NTAs NiArNDU1LDExIEBAIFByb2Nlc3NTaW5nbGVSZWxhdGlvbkZvcmsoUmVsYXRpb24gcmVsbiwg Rm9ya051bWJlciBmb3JrTnVtLCBCdWZmZXJBY2Nlc3NTdHJhdGVnCiAJCWlmIChhYm9ydF9y ZXF1ZXN0ZWQpCiAJCQlyZXR1cm4gZmFsc2U7CiAKKwkJLyogWFhYIG9ubHkgZG8gdGhpcyBm b3IgbWFpbiBmb3JrcywgbWF5YmUgd2Ugc2hvdWxkIGRvIGl0IGZvciBhbGw/ICovCisJCWlm IChmb3JrTnVtID09IE1BSU5fRk9SS05VTSkKKwkJCXBnc3RhdF9wcm9ncmVzc191cGRhdGVf cGFyYW0oUFJPR1JFU1NfREFUQUNIRUNLU1VNU19CTE9DS1NfRE9ORSwKKwkJCQkJCQkJCQkg KGJsa251bSArIDEpKTsKKwogCQl2YWN1dW1fZGVsYXlfcG9pbnQoZmFsc2UpOwogCX0KIApA QCAtNzk4LDYgKzgwOCw4IEBAIGFnYWluOgogCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3Bh cmFtKFBST0dSRVNTX0RBVEFDSEVDS1NVTVNfUEhBU0UsCiAJCQkJCQkJCQkgUFJPR1JFU1Nf REFUQUNIRUNLU1VNU19QSEFTRV9XQUlUSU5HX0JBQ0tFTkRTKTsKIAorCQkvKiBYWFggaXNu J3QgaXQgd2VpcmQgdGhlcmUncyBubyB3YWl0IGJldHdlZW4gdGhlIHBoYXNlIHVwZGF0ZXM/ ICovCisKIAkJLyoKIAkJICogU2V0IHRoZSBzdGF0ZSB0byBpbnByb2dyZXNzLW9uIGFuZCB3 YWl0IG9uIHRoZSBwcm9jc2lnbmFsIGJhcnJpZXIuCiAJCSAqLwpAQCAtOTA4LDggKzkyMCwy OSBAQCBQcm9jZXNzQWxsRGF0YWJhc2VzKGJvb2wgaW1tZWRpYXRlX2NoZWNrcG9pbnQpCiAJ ICogY29sdW1ucyBmb3IgcHJvY2Vzc2VkIGRhdGFiYXNlcyBpcyBpbnN0ZWFkIGluY3JlYXNl ZCBzdWNoIHRoYXQgaXQgY2FuCiAJICogYmUgY29tcGFyZWQgYWdhaW5zdCB0aGUgdG90YWwu CiAJICovCi0JcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19EQVRBQ0hF Q0tTVU1TX1RPVEFMX0RCLAotCQkJCQkJCQkgbGlzdF9sZW5ndGgoRGF0YWJhc2VMaXN0KSk7 CisJeworCQljb25zdCBpbnQJaW5kZXhbXSA9IHsKKwkJCVBST0dSRVNTX0RBVEFDSEVDS1NV TVNfREJTX1RPVEFMLAorCQkJUFJPR1JFU1NfREFUQUNIRUNLU1VNU19EQlNfRE9ORSwKKwkJ CVBST0dSRVNTX0RBVEFDSEVDS1NVTVNfUkVMU19UT1RBTCwKKwkJCVBST0dSRVNTX0RBVEFD SEVDS1NVTVNfUkVMU19ET05FLAorCQkJUFJPR1JFU1NfREFUQUNIRUNLU1VNU19CTE9DS1Nf VE9UQUwsCisJCQlQUk9HUkVTU19EQVRBQ0hFQ0tTVU1TX0JMT0NLU19ET05FLAorCQl9Owor CisJCWludDY0CXZhbHNbNl07CisKKwkJdmFsc1swXSA9IGxpc3RfbGVuZ3RoKERhdGFiYXNl TGlzdCk7CisJCXZhbHNbMV0gPSAwOworCisJCS8qIHRyYW5zbGF0ZWQgdG8gTlVMTCAqLwor CQl2YWxzWzJdID0gLTE7CisJCXZhbHNbM10gPSAtMTsKKwkJdmFsc1s0XSA9IC0xOworCQl2 YWxzWzVdID0gLTE7CisKKwkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9tdWx0aV9wYXJhbSg2 LCBpbmRleCwgdmFscyk7CisJfQogCiAJd2hpbGUgKHRydWUpCiAJewpAQCAtOTIxLDE0ICs5 NTQsNiBAQCBQcm9jZXNzQWxsRGF0YWJhc2VzKGJvb2wgaW1tZWRpYXRlX2NoZWNrcG9pbnQp CiAJCQlEYXRhQ2hlY2tzdW1zV29ya2VyUmVzdWx0RW50cnkgKmVudHJ5OwogCQkJYm9vbAkJ Zm91bmQ7CiAKLQkJCS8qCi0JCQkgKiBJbmRpY2F0ZSB3aGljaCBkYXRhYmFzZSBpcyBiZWlu ZyBwcm9jZXNzZWQgc2V0IHRoZSBudW1iZXIgb2YKLQkJCSAqIHJlbGF0aW9ucyB0byAtMSB0 byBjbGVhciBmaWVsZCBmcm9tIHByZXZpb3VzIHZhbHVlcy4gLTEgd2lsbAotCQkJICogdHJh bnNsYXRlIHRvIE5VTEwgaW4gdGhlIHByb2dyZXNzIHZpZXcuCi0JCQkgKi8KLQkJCXBnc3Rh dF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfREFUQUNIRUNLU1VNU19DVVJfREIs IGRiLT5kYm9pZCk7Ci0JCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNT X0RBVEFDSEVDS1NVTVNfVE9UQUxfUkVMLCAtMSk7Ci0KIAkJCS8qCiAJCQkgKiBDaGVjayBp ZiB0aGlzIGRhdGFiYXNlIGhhcyBiZWVuIHByb2Nlc3NlZCBhbHJlYWR5LCBhbmQgaWYgc28K IAkJCSAqIHdoZXRoZXIgaXQgc2hvdWxkIGJlIHJldHJpZWQgb3Igc2tpcHBlZC4KQEAgLTk1 Nyw2ICs5ODIsMTIgQEAgUHJvY2Vzc0FsbERhdGFiYXNlcyhib29sIGltbWVkaWF0ZV9jaGVj a3BvaW50KQogCQkJcmVzdWx0ID0gUHJvY2Vzc0RhdGFiYXNlKGRiKTsKIAkJCXByb2Nlc3Nl ZF9kYXRhYmFzZXMrKzsKIAorCQkJLyoKKwkJCSAqIFVwZGF0ZSB0aGUgbnVtYmVyIG9mIHBy b2Nlc3NlZCBkYXRhYmFzZXMgaW4gdGhlIHByb2dyZXNzIHJlcG9ydC4KKwkJCSAqLworCQkJ cGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19EQVRBQ0hFQ0tTVU1TX0RC U19ET05FLAorCQkJCQkJCQkJCSBwcm9jZXNzZWRfZGF0YWJhc2VzKTsKKwogCQkJaWYgKHJl c3VsdCA9PSBEQVRBQ0hFQ0tTVU1TV09SS0VSX1NVQ0NFU1NGVUwpCiAJCQl7CiAJCQkJLyoK QEAgLTEwNTAsNiArMTA4MSwxMyBAQCBQcm9jZXNzQWxsRGF0YWJhc2VzKGJvb2wgaW1tZWRp YXRlX2NoZWNrcG9pbnQpCiAJCQkJIGVycmhpbnQoIlRoZSBzZXJ2ZXIgbG9nIG1pZ2h0IGhh dmUgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgY2F1c2Ugb2YgdGhlIGVycm9yLiIpKSk7CiAJ fQogCisJLyoKKwkgKiBXaGVuIGVuYWJsaW5nIGNoZWNrc3Vtcywgd2UgaGF2ZSB0byB3YWl0 IGZvciBhIGNoZWNrcG9pbnQgZm9yIHRoZQorCSAqIGNoZWNrc3VtcyB0byBlLgorCSAqLwor CXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfREFUQUNIRUNLU1VNU19Q SEFTRSwKKwkJCQkJCQkJIFBST0dSRVNTX0RBVEFDSEVDS1NVTVNfUEhBU0VfV0FJVElOR19D SEVDS1BPSU5UKTsKKwogCS8qCiAJICogRm9yY2UgYSBjaGVja3BvaW50IHRvIGdldCBldmVy eXRoaW5nIG91dCB0byBkaXNrLiBUaGUgdXNlIG9mIGltbWVkaWF0ZQogCSAqIGNoZWNrcG9p bnRzIGlzIGZvciBydW5uaW5nIHRlc3RzLCBhcyB0aGV5IHdvdWxkIG90aGVyd2lzZSBub3Qg ZXhlY3V0ZQpAQCAtMTI1NSw2ICsxMjkzLDcgQEAgRGF0YUNoZWNrc3Vtc1dvcmtlck1haW4o RGF0dW0gYXJnKQogCUxpc3QJICAgKkluaXRpYWxUZW1wVGFibGVMaXN0ID0gTklMOwogCUJ1 ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5OwogCWJvb2wJCWFib3J0ZWQgPSBmYWxzZTsK KwlpbnQ2NAkJcmVsc19kb25lOwogCiAJZW5hYmxpbmdfY2hlY2tzdW1zID0gdHJ1ZTsKIApA QCAtMTI2OCw2ICsxMzA3LDEwIEBAIERhdGFDaGVja3N1bXNXb3JrZXJNYWluKERhdHVtIGFy ZykKIAlCYWNrZ3JvdW5kV29ya2VySW5pdGlhbGl6ZUNvbm5lY3Rpb25CeU9pZChkYm9pZCwg SW52YWxpZE9pZCwKIAkJCQkJCQkJCQkJICBCR1dPUktFUl9CWVBBU1NfQUxMT1dDT05OKTsK IAorCS8qIHdvcmtlciB3aWxsIGhhdmUgYSBzZXBhcmF0ZSBlbnRyeSBpbiBwZ19zdGF0X3By b2dyZXNzX2RhdGFfY2hlY2tzdW1zICovCisJcGdzdGF0X3Byb2dyZXNzX3N0YXJ0X2NvbW1h bmQoUFJPR1JFU1NfQ09NTUFORF9EQVRBQ0hFQ0tTVU1TLAorCQkJCQkJCQkgIEludmFsaWRP aWQpOworCiAJLyoKIAkgKiBHZXQgYSBsaXN0IG9mIGFsbCB0ZW1wIHRhYmxlcyBwcmVzZW50 IGFzIHdlIHN0YXJ0IGluIHRoaXMgZGF0YWJhc2UuIFdlCiAJICogbmVlZCB0byB3YWl0IHVu dGlsIHRoZXkgYXJlIGFsbCBnb25lIHVudGlsIHdlIGFyZSBkb25lLCBzaW5jZSB3ZSBjYW5u b3QKQEAgLTEyOTQsNiArMTMzNywyNCBAQCBEYXRhQ2hlY2tzdW1zV29ya2VyTWFpbihEYXR1 bSBhcmcpCiAKIAlSZWxhdGlvbkxpc3QgPSBCdWlsZFJlbGF0aW9uTGlzdChmYWxzZSwKIAkJ CQkJCQkJCSBEYXRhQ2hlY2tzdW1zV29ya2VyU2htZW0tPnByb2Nlc3Nfc2hhcmVkX2NhdGFs b2dzKTsKKworCS8qIFVwZGF0ZSB0aGUgdG90YWwgbnVtYmVyIG9mIHJlbGF0aW9ucyB0byBi ZSBwcm9jZXNzZWQgaW4gdGhpcyBEQi4gKi8KKwl7CisJCWNvbnN0IGludAlpbmRleFtdID0g eworCQkJUFJPR1JFU1NfREFUQUNIRUNLU1VNU19SRUxTX1RPVEFMLAorCQkJUFJPR1JFU1Nf REFUQUNIRUNLU1VNU19SRUxTX0RPTkUKKwkJfTsKKworCQlpbnQ2NAl2YWxzWzJdOworCisJ CXZhbHNbMF0gPSBsaXN0X2xlbmd0aChSZWxhdGlvbkxpc3QpOworCQl2YWxzWzFdID0gMDsK KworCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX211bHRpX3BhcmFtKDIsIGluZGV4LCB2YWxz KTsKKwl9CisKKwkvKiBwcm9jZXNzIHRoZSByZWxhdGlvbnMgKi8KKwlyZWxzX2RvbmUgPSAw OwogCWZvcmVhY2hfb2lkKHJlbG9pZCwgUmVsYXRpb25MaXN0KQogCXsKIAkJaWYgKCFQcm9j ZXNzU2luZ2xlUmVsYXRpb25CeU9pZChyZWxvaWQsIHN0cmF0ZWd5KSkKQEAgLTEzMDEsNiAr MTM2Miw5IEBAIERhdGFDaGVja3N1bXNXb3JrZXJNYWluKERhdHVtIGFyZykKIAkJCWFib3J0 ZWQgPSB0cnVlOwogCQkJYnJlYWs7CiAJCX0KKworCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRl X3BhcmFtKFBST0dSRVNTX0RBVEFDSEVDS1NVTVNfUkVMU19ET05FLAorCQkJCQkJCQkJICsr cmVsc19kb25lKTsKIAl9CiAJbGlzdF9mcmVlKFJlbGF0aW9uTGlzdCk7CiAKQEAgLTEzMTMs NiArMTM3NywxMCBAQCBEYXRhQ2hlY2tzdW1zV29ya2VyTWFpbihEYXR1bSBhcmcpCiAJCXJl dHVybjsKIAl9CiAKKwkvKiBUaGUgd29ya2VyIGlzIGFib3V0IHRvIHdhaXQgZm9yIHRlbXBv cmFyeSB0YWJsZXMgdG8gZ28gYXdheS4gKi8KKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3Bh cmFtKFBST0dSRVNTX0RBVEFDSEVDS1NVTVNfUEhBU0UsCisJCQkJCQkJCSBQUk9HUkVTU19E QVRBQ0hFQ0tTVU1TX1BIQVNFX1dBSVRJTkdfVEVNUFJFTCk7CisKIAkvKgogCSAqIFdhaXQg Zm9yIGFsbCB0ZW1wIHRhYmxlcyB0aGF0IGV4aXN0ZWQgd2hlbiB3ZSBzdGFydGVkIHRvIGdv IGF3YXkuIFRoaXMKIAkgKiBpcyBuZWNlc3Nhcnkgc2luY2Ugd2UgY2Fubm90ICJyZWFjaCIg dGhlbSB0byBlbmFibGUgY2hlY2tzdW1zLiBBbnkgdGVtcApAQCAtMTM2OSw1ICsxNDM3LDgg QEAgRGF0YUNoZWNrc3Vtc1dvcmtlck1haW4oRGF0dW0gYXJnKQogCiAJbGlzdF9mcmVlKElu aXRpYWxUZW1wVGFibGVMaXN0KTsKIAorCS8qIHdvcmtlciBkb25lICovCisJcGdzdGF0X3By b2dyZXNzX2VuZF9jb21tYW5kKCk7CisKIAlEYXRhQ2hlY2tzdW1zV29ya2VyU2htZW0tPnN1 Y2Nlc3MgPSBEQVRBQ0hFQ0tTVU1TV09SS0VSX1NVQ0NFU1NGVUw7CiB9CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jb21tYW5kcy9wcm9ncmVzcy5oIGIvc3JjL2luY2x1ZGUvY29tbWFu ZHMvcHJvZ3Jlc3MuaAppbmRleCAxZWJkMGM3OTJiNC4uOTRiNDc4YTZjYzkgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3Byb2dyZXNzLmgKKysrIGIvc3JjL2luY2x1ZGUv Y29tbWFuZHMvcHJvZ3Jlc3MuaApAQCAtMTU4LDIxICsxNTgsMjAgQEAKICNkZWZpbmUgUFJP R1JFU1NfQ09QWV9UWVBFX0NBTExCQUNLIDQKIAogLyogUHJvZ3Jlc3MgcGFyYW1ldGVycyBm b3IgUFJPR1JFU1NfREFUQUNIRUNLU1VNUyAqLwotI2RlZmluZSBQUk9HUkVTU19EQVRBQ0hF Q0tTVU1TX1BIQVNFIDAKLSNkZWZpbmUgUFJPR1JFU1NfREFUQUNIRUNLU1VNU19UT1RBTF9E QiAxCi0jZGVmaW5lIFBST0dSRVNTX0RBVEFDSEVDS1NVTVNfVE9UQUxfUkVMIDIKLSNkZWZp bmUgUFJPR1JFU1NfREFUQUNIRUNLU1VNU19QUk9DRVNTRURfREIgMwotI2RlZmluZSBQUk9H UkVTU19EQVRBQ0hFQ0tTVU1TX1BST0NFU1NFRF9SRUwgNAotI2RlZmluZSBQUk9HUkVTU19E QVRBQ0hFQ0tTVU1TX0NVUl9EQiA1Ci0jZGVmaW5lIFBST0dSRVNTX0RBVEFDSEVDS1NVTVNf Q1VSX1JFTCA2Ci0jZGVmaW5lIFBST0dSRVNTX0RBVEFDSEVDS1NVTVNfQ1VSX1JFTF9UT1RB TF9CTE9DS1MgNwotI2RlZmluZSBQUk9HUkVTU19EQVRBQ0hFQ0tTVU1TX0NVUl9SRUxfUFJP Q0VTU0VEX0JMT0NLUyA4CisjZGVmaW5lIFBST0dSRVNTX0RBVEFDSEVDS1NVTVNfUEhBU0UJ CTAKKyNkZWZpbmUgUFJPR1JFU1NfREFUQUNIRUNLU1VNU19EQlNfVE9UQUwJMQorI2RlZmlu ZSBQUk9HUkVTU19EQVRBQ0hFQ0tTVU1TX0RCU19ET05FCQkyCisjZGVmaW5lIFBST0dSRVNT X0RBVEFDSEVDS1NVTVNfUkVMU19UT1RBTAkzCisjZGVmaW5lIFBST0dSRVNTX0RBVEFDSEVD S1NVTVNfUkVMU19ET05FCTQKKyNkZWZpbmUgUFJPR1JFU1NfREFUQUNIRUNLU1VNU19CTE9D S1NfVE9UQUwJNQorI2RlZmluZSBQUk9HUkVTU19EQVRBQ0hFQ0tTVU1TX0JMT0NLU19ET05F CTYKIAogLyogUGhhc2VzIG9mIGRhdGFjaGVja3N1bXN3b3JrZXIgb3BlcmF0aW9uICovCi0j ZGVmaW5lIFBST0dSRVNTX0RBVEFDSEVDS1NVTVNfUEhBU0VfRU5BQkxJTkcgMAotI2RlZmlu ZSBQUk9HUkVTU19EQVRBQ0hFQ0tTVU1TX1BIQVNFX0RJU0FCTElORyAxCi0jZGVmaW5lIFBS T0dSRVNTX0RBVEFDSEVDS1NVTVNfUEhBU0VfV0FJVElOR19CQUNLRU5EUyAyCi0jZGVmaW5l IFBST0dSRVNTX0RBVEFDSEVDS1NVTVNfUEhBU0VfV0FJVElOR19URU1QUkVMIDMKLSNkZWZp bmUgUFJPR1JFU1NfREFUQUNIRUNLU1VNU19ET05FIDQKKyNkZWZpbmUgUFJPR1JFU1NfREFU QUNIRUNLU1VNU19QSEFTRV9FTkFCTElORwkJCTAKKyNkZWZpbmUgUFJPR1JFU1NfREFUQUNI RUNLU1VNU19QSEFTRV9ESVNBQkxJTkcJCQkxCisjZGVmaW5lIFBST0dSRVNTX0RBVEFDSEVD S1NVTVNfUEhBU0VfV0FJVElORwkJCTIKKyNkZWZpbmUgUFJPR1JFU1NfREFUQUNIRUNLU1VN U19QSEFTRV9XQUlUSU5HX0JBQ0tFTkRTCTMKKyNkZWZpbmUgUFJPR1JFU1NfREFUQUNIRUNL U1VNU19QSEFTRV9XQUlUSU5HX1RFTVBSRUwJNAorI2RlZmluZSBQUk9HUkVTU19EQVRBQ0hF Q0tTVU1TX1BIQVNFX1dBSVRJTkdfQ0hFQ0tQT0lOVCA1CiAKICNlbmRpZgpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3J1bGVzLm91dAppbmRleCAzNmJlZDRiMTY4ZC4uMmNmZWE4Mzc1NTQg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CkBAIC0yMDUwLDI1ICsyMDUw LDM0IEBAIHBnX3N0YXRfcHJvZ3Jlc3NfZGF0YV9jaGVja3N1bXN8IFNFTEVDVCBzLnBpZCwK ICAgICAgICAgICAgIFdIRU4gMiBUSEVOICd3YWl0aW5nJzo6dGV4dAogICAgICAgICAgICAg V0hFTiAzIFRIRU4gJ3dhaXRpbmcgb24gYmFja2VuZHMnOjp0ZXh0CiAgICAgICAgICAgICBX SEVOIDQgVEhFTiAnd2FpdGluZyBvbiB0ZW1wb3JhcnkgdGFibGVzJzo6dGV4dAotICAgICAg ICAgICAgV0hFTiA1IFRIRU4gJ2RvbmUnOjp0ZXh0CisgICAgICAgICAgICBXSEVOIDUgVEhF TiAnd2FpdGluZyBvbiBjaGVja3BvaW50Jzo6dGV4dAorICAgICAgICAgICAgV0hFTiA2IFRI RU4gJ2RvbmUnOjp0ZXh0CiAgICAgICAgICAgICBFTFNFIE5VTEw6OnRleHQKICAgICAgICAg RU5EIEFTIHBoYXNlLAogICAgICAgICBDQVNFIHMucGFyYW0yCiAgICAgICAgICAgICBXSEVO ICctMSc6OmludGVnZXIgVEhFTiBOVUxMOjpiaWdpbnQKICAgICAgICAgICAgIEVMU0Ugcy5w YXJhbTIKICAgICAgICAgRU5EIEFTIGRhdGFiYXNlc190b3RhbCwKLSAgICAgICAgQ0FTRSBz LnBhcmFtMworICAgIHMucGFyYW0zIEFTIGRhdGFiYXNlc19kb25lLAorICAgICAgICBDQVNF IHMucGFyYW00CiAgICAgICAgICAgICBXSEVOICctMSc6OmludGVnZXIgVEhFTiBOVUxMOjpi aWdpbnQKLSAgICAgICAgICAgIEVMU0Ugcy5wYXJhbTMKKyAgICAgICAgICAgIEVMU0Ugcy5w YXJhbTQKICAgICAgICAgRU5EIEFTIHJlbGF0aW9uc190b3RhbCwKLSAgICBzLnBhcmFtNCBB UyBkYXRhYmFzZXNfcHJvY2Vzc2VkLAotICAgIHMucGFyYW01IEFTIHJlbGF0aW9uc19wcm9j ZXNzZWQsCi0gICAgcy5wYXJhbTYgQVMgZGF0YWJhc2VzX2N1cnJlbnQsCi0gICAgcy5wYXJh bTcgQVMgcmVsYXRpb25fY3VycmVudCwKLSAgICBzLnBhcmFtOCBBUyByZWxhdGlvbl9jdXJy ZW50X2Jsb2NrcywKLSAgICBzLnBhcmFtOSBBUyByZWxhdGlvbl9jdXJyZW50X2Jsb2Nrc19w cm9jZXNzZWQKKyAgICAgICAgQ0FTRSBzLnBhcmFtNQorICAgICAgICAgICAgV0hFTiAnLTEn OjppbnRlZ2VyIFRIRU4gTlVMTDo6YmlnaW50CisgICAgICAgICAgICBFTFNFIHMucGFyYW01 CisgICAgICAgIEVORCBBUyByZWxhdGlvbnNfZG9uZSwKKyAgICAgICAgQ0FTRSBzLnBhcmFt NgorICAgICAgICAgICAgV0hFTiAnLTEnOjppbnRlZ2VyIFRIRU4gTlVMTDo6YmlnaW50Cisg ICAgICAgICAgICBFTFNFIHMucGFyYW02CisgICAgICAgIEVORCBBUyBibG9ja3NfdG90YWws CisgICAgICAgIENBU0Ugcy5wYXJhbTcKKyAgICAgICAgICAgIFdIRU4gJy0xJzo6aW50ZWdl ciBUSEVOIE5VTEw6OmJpZ2ludAorICAgICAgICAgICAgRUxTRSBzLnBhcmFtNworICAgICAg ICBFTkQgQVMgYmxvY2tzX2RvbmUKICAgIEZST00gKHBnX3N0YXRfZ2V0X3Byb2dyZXNzX2lu Zm8oJ0RBVEFDSEVDS1NVTVMnOjp0ZXh0KSBzKHBpZCwgZGF0aWQsIHJlbGlkLCBwYXJhbTEs IHBhcmFtMiwgcGFyYW0zLCBwYXJhbTQsIHBhcmFtNSwgcGFyYW02LCBwYXJhbTcsIHBhcmFt OCwgcGFyYW05LCBwYXJhbTEwLCBwYXJhbTExLCBwYXJhbTEyLCBwYXJhbTEzLCBwYXJhbTE0 LCBwYXJhbTE1LCBwYXJhbTE2LCBwYXJhbTE3LCBwYXJhbTE4LCBwYXJhbTE5LCBwYXJhbTIw KQotICAgICBMRUZUIEpPSU4gcGdfZGF0YWJhc2UgZCBPTiAoKHMuZGF0aWQgPSBkLm9pZCkp KTsKKyAgICAgTEVGVCBKT0lOIHBnX2RhdGFiYXNlIGQgT04gKChzLmRhdGlkID0gZC5vaWQp KSkKKyAgT1JERVIgQlkgcy5kYXRpZDsKIHBnX3N0YXRfcHJvZ3Jlc3NfdmFjdXVtfCBTRUxF Q1Qgcy5waWQsCiAgICAgcy5kYXRpZCwKICAgICBkLmRhdG5hbWUsCi0tIAoyLjQ4LjEKCg== --------------qzhG3TvJfoKQPAu6hWaxRwbV Content-Type: text/x-patch; charset=UTF-8; name="v20250310b-0005-update-docs.patch" Content-Disposition: attachment; filename="v20250310b-0005-update-docs.patch" Content-Transfer-Encoding: base64 RnJvbSBiMjM2MzdiMzUwOTlhNTgxYWFiNzM3YTNhZmQ1OGZiZWRkYzkwMTZhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQHZvbmRyYS5tZT4K RGF0ZTogU3VuLCA5IE1hciAyMDI1IDEzOjM0OjEwICswMTAwClN1YmplY3Q6IFtQQVRDSCB2 MjAyNTAzMTBiIDUvNV0gdXBkYXRlIGRvY3MKCi0tLQogZG9jL3NyYy9zZ21sL21vbml0b3Jp bmcuc2dtbCB8IDg0ICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQogZG9j L3NyYy9zZ21sL3dhbC5zZ21sICAgICAgICB8ICA4ICsrLS0KIDIgZmlsZXMgY2hhbmdlZCwg NTEgaW5zZXJ0aW9ucygrKSwgNDEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL21vbml0b3Jpbmcuc2dtbCBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwK aW5kZXggNGE2ZWY1ZjE2MDUuLjJhNTY4ZWUyMzU3IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvbW9uaXRvcmluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwK QEAgLTY4MDQsOCArNjgwNCw4IEBAIEZST00gcGdfc3RhdF9nZXRfYmFja2VuZF9pZHNldCgp IEFTIGJhY2tlbmRpZDsKICAgPHBhcmE+CiAgICBXaGVuIGRhdGEgY2hlY2tzdW1zIGFyZSBi ZWluZyBlbmFibGVkIG9uIGEgcnVubmluZyBjbHVzdGVyLCB0aGUKICAgIDxzdHJ1Y3RuYW1l PnBnX3N0YXRfcHJvZ3Jlc3NfZGF0YV9jaGVja3N1bXM8L3N0cnVjdG5hbWU+IHZpZXcgd2ls bCBjb250YWluCi0gICBhIHJvdyBmb3IgZWFjaCBiYWNrZ3JvdW5kIHdvcmtlciB3aGljaCBp cyBjdXJyZW50bHkgY2FsY3VsYXRpbmcgY2hlY2tzdW1zCi0gICBmb3IgdGhlIGRhdGEgcGFn ZXMuCisgICBhIHJvdyBmb3IgdGhlIGxhdW5jaGVyIHByb2Nlc3MsIGFuZCBvbmUgcm93IGZv ciBlYWNoIHdvcmtlciBwcm9jZXNzIHdoaWNoCisgICBpcyBjdXJyZW50bHkgY2FsY3VsYXRp bmcgY2hlY2tzdW1zIGZvciB0aGUgZGF0YSBwYWdlcyBpbiBvbmUgZGF0YWJhc2UuCiAgIDwv cGFyYT4KIAogICA8dGFibGUgaWQ9InBnLXN0YXQtcHJvZ3Jlc3MtZGF0YS1jaGVja3N1bXMt dmlldyIgeHJlZmxhYmVsPSJwZ19zdGF0X3Byb2dyZXNzX2RhdGFfY2hlY2tzdW1zIj4KQEAg LTY4MzcsMzcgKzY4MzcsMzMgQEAgRlJPTSBwZ19zdGF0X2dldF9iYWNrZW5kX2lkc2V0KCkg QVMgYmFja2VuZGlkOwogICAgICA8L3Jvdz4KIAogICAgICA8cm93PgotICAgICAgPGVudHJ5 IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPgotICAgICAgIDxwYXJhIHJvbGU9ImNvbHVt bl9kZWZpbml0aW9uIj4KLSAgICAgICAgPHN0cnVjdGZpZWxkPnBoYXNlPC9zdHJ1Y3RmaWVs ZD4gPHR5cGU+dGV4dDwvdHlwZT4KLSAgICAgICA8L3BhcmE+Ci0gICAgICAgPHBhcmE+Ci0g ICAgICAgIEN1cnJlbnQgcHJvY2Vzc2luZyBwaGFzZSwgc2VlIDx4cmVmIGxpbmtlbmQ9ImRh dGFjaGVja3N1bS1waGFzZXMiLz4KLSAgICAgICAgZm9yIGRlc2NyaXB0aW9uIG9mIHRoZSBw aGFzZXMuCi0gICAgICAgPC9wYXJhPgotICAgICAgPC9lbnRyeT4KKyAgICAgIDxlbnRyeSBy b2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlv biI+CisgICAgICAgPHN0cnVjdGZpZWxkPmRhdGlkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+b2lk PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgT0lEIG9mIHRo aXMgZGF0YWJhc2UsIG9yIDAgZm9yIHRoZSBsYXVuY2hlciBwcm9jZXNzCisgICAgICAgcmVs YXRpb24KKyAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIAogICAgICA8cm93 PgotICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPgotICAgICAgIDxw YXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KLSAgICAgICAgPHN0cnVjdGZpZWxkPmRh dGFiYXNlc190b3RhbDwvc3RydWN0ZmllbGQ+IDx0eXBlPmludGVnZXI8L3R5cGU+Ci0gICAg ICAgPC9wYXJhPgotICAgICAgIDxwYXJhPgotICAgICAgICBUaGUgdG90YWwgbnVtYmVyIG9m IGRhdGFiYXNlcyB3aGljaCB3aWxsIGJlIHByb2Nlc3NlZC4KLSAgICAgICA8L3BhcmE+Ci0g ICAgICA8L2VudHJ5PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnki PjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+ ZGF0bmFtZTwvc3RydWN0ZmllbGQ+IDx0eXBlPm5hbWU8L3R5cGU+CisgICAgICA8L3BhcmE+ CisgICAgICA8cGFyYT4KKyAgICAgICBOYW1lIG9mIHRoaXMgZGF0YWJhc2UsIG9yIDxsaXRl cmFsPk5VTEw8L2xpdGVyYWw+IGZvciB0aGUKKyAgICAgICBsYXVuY2hlciBwcm9jZXNzLgor ICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCiAgICAgIDxyb3c+CiAgICAg ICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+CiAgICAgICAgPHBhcmEgcm9s ZT0iY29sdW1uX2RlZmluaXRpb24iPgotICAgICAgICA8c3RydWN0ZmllbGQ+cmVsYXRpb25z X3RvdGFsPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50ZWdlcjwvdHlwZT4KKyAgICAgICAgPHN0 cnVjdGZpZWxkPnBoYXNlPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGV4dDwvdHlwZT4KICAgICAg ICA8L3BhcmE+CiAgICAgICAgPHBhcmE+Ci0gICAgICAgIFRoZSB0b3RhbCBudW1iZXIgb2Yg cmVsYXRpb25zIHdoaWNoIHdpbGwgYmUgcHJvY2Vzc2VkLCBvcgotICAgICAgICA8bGl0ZXJh bD5OVUxMPC9saXRlcmFsPiBpZiB0aGUgZGF0YSBjaGVja3N1bXMgd29ya2VyIHByb2Nlc3Mg aGFzbid0Ci0gICAgICAgIGNhbGN1bGF0ZWQgdGhlIG51bWJlciBvZiByZWxhdGlvbnMgeWV0 LgorICAgICAgICBDdXJyZW50IHByb2Nlc3NpbmcgcGhhc2UsIHNlZSA8eHJlZiBsaW5rZW5k PSJkYXRhY2hlY2tzdW0tcGhhc2VzIi8+CisgICAgICAgIGZvciBkZXNjcmlwdGlvbiBvZiB0 aGUgcGhhc2VzLgogICAgICAgIDwvcGFyYT4KICAgICAgIDwvZW50cnk+CiAgICAgIDwvcm93 PgpAQCAtNjg3NSwxMCArNjg3MSwxMiBAQCBGUk9NIHBnX3N0YXRfZ2V0X2JhY2tlbmRfaWRz ZXQoKSBBUyBiYWNrZW5kaWQ7CiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0 YWxvZ190YWJsZV9lbnRyeSI+CiAgICAgICAgPHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRp b24iPgotICAgICAgICA8c3RydWN0ZmllbGQ+ZGF0YWJhc2VzX3Byb2Nlc3NlZDwvc3RydWN0 ZmllbGQ+IDx0eXBlPmludGVnZXI8L3R5cGU+CisgICAgICAgIDxzdHJ1Y3RmaWVsZD5kYXRh YmFzZXNfdG90YWw8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnRlZ2VyPC90eXBlPgogICAgICAg IDwvcGFyYT4KICAgICAgICA8cGFyYT4KLSAgICAgICAgVGhlIG51bWJlciBvZiBkYXRhYmFz ZXMgd2hpY2ggaGF2ZSBiZWVuIHByb2Nlc3NlZC4KKyAgICAgICAgVGhlIHRvdGFsIG51bWJl ciBvZiBkYXRhYmFzZXMgd2hpY2ggd2lsbCBiZSBwcm9jZXNzZWQuIE9ubHkgdGhlCisgICAg ICAgIGxhdW5jaGVyIHdvcmtlciBoYXMgdGhpcyB2YWx1ZSBzZXQsIHRoZSBvdGhlciB3b3Jr ZXIgcHJvY2Vzc2VzCisgICAgICAgIGhhdmUgdGhpcyA8bGl0ZXJhbD5OVUxMPC9saXRlcmFs Pi4KICAgICAgICA8L3BhcmE+CiAgICAgICA8L2VudHJ5PgogICAgICA8L3Jvdz4KQEAgLTY4 ODYsMTAgKzY4ODQsMTIgQEAgRlJPTSBwZ19zdGF0X2dldF9iYWNrZW5kX2lkc2V0KCkgQVMg YmFja2VuZGlkOwogICAgICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFi bGVfZW50cnkiPgogICAgICAgIDxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KLSAg ICAgICAgPHN0cnVjdGZpZWxkPnJlbGF0aW9uc19wcm9jZXNzZWQ8L3N0cnVjdGZpZWxkPiA8 dHlwZT5pbnRlZ2VyPC90eXBlPgorICAgICAgICA8c3RydWN0ZmllbGQ+ZGF0YWJhc2VzX2Rv bmU8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnRlZ2VyPC90eXBlPgogICAgICAgIDwvcGFyYT4K ICAgICAgICA8cGFyYT4KLSAgICAgICAgVGhlIG51bWJlciBvZiByZWxhdGlvbnMgd2hpY2gg aGF2ZSBiZWVuIHByb2Nlc3NlZC4KKyAgICAgICAgVGhlIG51bWJlciBvZiBkYXRhYmFzZXMg d2hpY2ggaGF2ZSBiZWVuIHByb2Nlc3NlZC4gT25seSB0aGUKKyAgICAgICAgbGF1bmNoZXIg d29ya2VyIGhhcyB0aGlzIHZhbHVlIHNldCwgdGhlIG90aGVyIHdvcmtlciBwcm9jZXNzZXMK KyAgICAgICAgaGF2ZSB0aGlzIDxsaXRlcmFsPk5VTEw8L2xpdGVyYWw+LgogICAgICAgIDwv cGFyYT4KICAgICAgIDwvZW50cnk+CiAgICAgIDwvcm93PgpAQCAtNjg5NywxMCArNjg5Nywx MyBAQCBGUk9NIHBnX3N0YXRfZ2V0X2JhY2tlbmRfaWRzZXQoKSBBUyBiYWNrZW5kaWQ7CiAg ICAgIDxyb3c+CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+CiAg ICAgICAgPHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgotICAgICAgICA8c3RydWN0 ZmllbGQ+ZGF0YWJhc2VzX2N1cnJlbnQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+ CisgICAgICAgIDxzdHJ1Y3RmaWVsZD5yZWxhdGlvbnNfdG90YWw8L3N0cnVjdGZpZWxkPiA8 dHlwZT5pbnRlZ2VyPC90eXBlPgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KLSAg ICAgICAgT0lEIG9mIHRoZSBkYXRhYmFzZSBjdXJyZW50bHkgYmVpbmcgcHJvY2Vzc2VkLgor ICAgICAgICBUaGUgdG90YWwgbnVtYmVyIG9mIHJlbGF0aW9ucyB3aGljaCB3aWxsIGJlIHBy b2Nlc3NlZCwgb3IKKyAgICAgICAgPGxpdGVyYWw+TlVMTDwvbGl0ZXJhbD4gaWYgdGhlIGRh dGEgY2hlY2tzdW1zIHdvcmtlciBwcm9jZXNzIGhhc24ndAorICAgICAgICBjYWxjdWxhdGVk IHRoZSBudW1iZXIgb2YgcmVsYXRpb25zIHlldC4gVGhlIGxhdW5jaGVyIHByb2Nlc3MgaGFz CisgICAgICAgIHRoaXMgPGxpdGVyYWw+TlVMTDwvbGl0ZXJhbD4uCiAgICAgICAgPC9wYXJh PgogICAgICAgPC9lbnRyeT4KICAgICAgPC9yb3c+CkBAIC02OTA4LDEwICs2OTExLDExIEBA IEZST00gcGdfc3RhdF9nZXRfYmFja2VuZF9pZHNldCgpIEFTIGJhY2tlbmRpZDsKICAgICAg PHJvdz4KICAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij4KICAgICAg ICA8cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+Ci0gICAgICAgIDxzdHJ1Y3RmaWVs ZD5yZWxhdGlvbl9jdXJyZW50PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgorICAg ICAgICA8c3RydWN0ZmllbGQ+cmVsYXRpb25zX2RvbmU8L3N0cnVjdGZpZWxkPiA8dHlwZT5p bnRlZ2VyPC90eXBlPgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KLSAgICAgICAg T0lEIG9mIHRoZSByZWxhdGlvbiBjdXJyZW50bHkgYmVpbmcgcHJvY2Vzc2VkLgorICAgICAg ICBUaGUgbnVtYmVyIG9mIHJlbGF0aW9ucyB3aGljaCBoYXZlIGJlZW4gcHJvY2Vzc2VkLiBU aGUgbGF1bmNoZXIKKyAgICAgICAgcHJvY2VzcyBoYXMgdGhpcyA8bGl0ZXJhbD5OVUxMPC9s aXRlcmFsPi4KICAgICAgICA8L3BhcmE+CiAgICAgICA8L2VudHJ5PgogICAgICA8L3Jvdz4K QEAgLTY5MTksMTAgKzY5MjMsMTMgQEAgRlJPTSBwZ19zdGF0X2dldF9iYWNrZW5kX2lkc2V0 KCkgQVMgYmFja2VuZGlkOwogICAgICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFs b2dfdGFibGVfZW50cnkiPgogICAgICAgIDxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9u Ij4KLSAgICAgICAgPHN0cnVjdGZpZWxkPnJlbGF0aW9uX2N1cnJlbnRfYmxvY2tzPC9zdHJ1 Y3RmaWVsZD4gPHR5cGU+aW50ZWdlcjwvdHlwZT4KKyAgICAgICAgPHN0cnVjdGZpZWxkPmJs b2Nrc190b3RhbDwvc3RydWN0ZmllbGQ+IDx0eXBlPmludGVnZXI8L3R5cGU+CiAgICAgICAg PC9wYXJhPgogICAgICAgIDxwYXJhPgotICAgICAgICBUaGUgdG90YWwgbnVtYmVyIG9mIGJs b2NrcyBpbiB0aGUgcmVsYXRpb24gY3VycmVudGx5IGJlaW5nIHByb2Nlc3NlZC4KKyAgICAg ICAgVGhlIG51bWJlciBvZiBibG9ja3MgaW4gdGhlIGN1cnJlbnQgcmVsYXRpb24gd2hpY2gg d2lsbCBiZSBwcm9jZXNzZWQsCisgICAgICAgIG9yIDxsaXRlcmFsPk5VTEw8L2xpdGVyYWw+ IGlmIHRoZSBkYXRhIGNoZWNrc3VtcyB3b3JrZXIgcHJvY2VzcyBoYXNuJ3QKKyAgICAgICAg Y2FsY3VsYXRlZCB0aGUgbnVtYmVyIG9mIGJsb2NrcyB5ZXQuIFRoZSBsYXVuY2hlciBwcm9j ZXNzIGhhcworICAgICAgICB0aGlzIDxsaXRlcmFsPk5VTEw8L2xpdGVyYWw+LgogICAgICAg IDwvcGFyYT4KICAgICAgIDwvZW50cnk+CiAgICAgIDwvcm93PgpAQCAtNjkzMCwxMSArNjkz NywxMSBAQCBGUk9NIHBnX3N0YXRfZ2V0X2JhY2tlbmRfaWRzZXQoKSBBUyBiYWNrZW5kaWQ7 CiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+ CiAgICAgICAgPHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgotICAgICAgICA8c3Ry dWN0ZmllbGQ+cmVsYXRpb25fY3VycmVudF9ibG9ja3NfcHJvY2Vzc2VkPC9zdHJ1Y3RmaWVs ZD4gPHR5cGU+aW50ZWdlcjwvdHlwZT4KKyAgICAgICAgPHN0cnVjdGZpZWxkPmJsb2Nrc19k b25lPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50ZWdlcjwvdHlwZT4KICAgICAgICA8L3BhcmE+ CiAgICAgICAgPHBhcmE+Ci0gICAgICAgIFRoZSBudW1iZXIgb2YgYmxvY2tzIHdoaWNoIGhh dmUgYmVlbiBwcm9jZXNzZWQgaW4gdGhlIHJlbGF0aW9uIGN1cnJlbnRseQotICAgICAgICBi ZWluZyBwcm9jZXNzZWQuCisgICAgICAgIFRoZSBudW1iZXIgb2YgYmxvY2tzIGluIHRoZSBj dXJyZW50IHJlbGF0aW9uIHdoaWNoIGhhdmUgYmVlbiBwcm9jZXNzZWQuCisgICAgICAgIFRo ZSBsYXVuY2hlciBwcm9jZXNzIGhhcyB0aGlzIDxsaXRlcmFsPk5VTEw8L2xpdGVyYWw+Lgog ICAgICAgIDwvcGFyYT4KICAgICAgIDwvZW50cnk+CiAgICAgIDwvcm93PgpAQCAtNjk4Miw5 ICs2OTg5LDEwIEBAIEZST00gcGdfc3RhdF9nZXRfYmFja2VuZF9pZHNldCgpIEFTIGJhY2tl bmRpZDsKICAgICAgIDwvZW50cnk+CiAgICAgIDwvcm93PgogICAgICA8cm93PgotICAgICAg PGVudHJ5PjxsaXRlcmFsPmRvbmU8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48 bGl0ZXJhbD53YWl0aW5nIG9uIGNoZWNrcG9pbnQ8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAg IDxlbnRyeT4KLSAgICAgICBUaGUgY29tbWFuZCBoYXMgZmluaXNoZWQgcHJvY2Vzc2luZyBh bmQgaXMgZXhpdGluZy4KKyAgICAgICBUaGUgY29tbWFuZCBpcyBjdXJyZW50bHkgd2FpdGlu ZyBmb3IgYSBjaGVja3BvaW50IHRvIHVwZGF0ZSB0aGUgY2hlY2tzdW0KKyAgICAgICBzdGF0 ZSBhdCB0aGUgZW5kLgogICAgICAgPC9lbnRyeT4KICAgICAgPC9yb3c+CiAgICAgPC90Ym9k eT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC93YWwuc2dtbCBiL2RvYy9zcmMvc2dtbC93 YWwuc2dtbAppbmRleCAyNTYyYjFhMDAyYy4uMGFkYTkwY2EwYjEgMTAwNjQ0Ci0tLSBhL2Rv Yy9zcmMvc2dtbC93YWwuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvd2FsLnNnbWwKQEAgLTMx MCwxNSArMzEwLDE3IEBACiAgICAgSWYgdGhlIGNsdXN0ZXIgaXMgc3RvcHBlZCB3aGlsZSBp biA8bGl0ZXJhbD5pbnByb2dyZXNzLW9uPC9saXRlcmFsPiBtb2RlLCBmb3IKICAgICBhbnkg cmVhc29uLCB0aGVuIHRoaXMgcHJvY2VzcyBtdXN0IGJlIHJlc3RhcnRlZCBtYW51YWxseS4g VG8gZG8gdGhpcywKICAgICByZS1leGVjdXRlIHRoZSBmdW5jdGlvbiA8ZnVuY3Rpb24+cGdf ZW5hYmxlX2RhdGFfY2hlY2tzdW1zKCk8L2Z1bmN0aW9uPgotICAgIG9uY2UgdGhlIGNsdXN0 ZXIgaGFzIGJlZW4gcmVzdGFydGVkLiBUaGUgYmFja2dyb3VuZCB3b3JrZXIgd2lsbCBhdHRl bXB0Ci0gICAgdG8gcmVzdW1lIHRoZSB3b3JrIGZyb20gd2hlcmUgaXQgd2FzIGludGVycnVw dGVkLgorICAgIG9uY2UgdGhlIGNsdXN0ZXIgaGFzIGJlZW4gcmVzdGFydGVkLiBUaGUgcHJv Y2VzcyB3aWxsIHN0YXJ0IG92ZXIsIHRoZXJlIGlzCisgICAgbm8gc3VwcG9ydCBmb3IgcmVz dW1pbmcgd29yayBmcm9tIHdoZXJlIGl0IHdhcyBpbnRlcnJ1cHRlZC4KICAgIDwvcGFyYT4K IAogICAgPG5vdGU+CiAgICAgPHBhcmE+CiAgICAgIEVuYWJsaW5nIGNoZWNrc3VtcyBjYW4g Y2F1c2Ugc2lnbmlmaWNhbnQgSS9PIHRvIHRoZSBzeXN0ZW0sIGFzIG1vc3Qgb2YgdGhlCiAg ICAgIGRhdGFiYXNlIHBhZ2VzIHdpbGwgbmVlZCB0byBiZSByZXdyaXR0ZW4sIGFuZCB3aWxs IGJlIHdyaXR0ZW4gYm90aCB0byB0aGUKLSAgICAgZGF0YSBmaWxlcyBhbmQgdGhlIFdBTC4K KyAgICAgZGF0YSBmaWxlcyBhbmQgdGhlIFdBTC4gVGhlIGltcGFjdCBtYXkgYmUgbGltaXRl ZCBieSB0aHJvdHRsaW5nIHVzaW5nIHRoZQorICAgICA8cGFyYW1ldGVyPmNvc3RfZGVsYXk8 L3BhcmFtZXRlcj4gYW5kIDxwYXJhbWV0ZXI+Y29zdF9saW1pdDwvcGFyYW1ldGVyPgorICAg ICBwYXJhbWV0ZXJzIG9mIHRoZSA8ZnVuY3Rpb24+cGdfZW5hYmxlX2RhdGFfY2hlY2tzdW1z PC9mdW5jdGlvbj4gZnVuY3Rpb24uCiAgICAgPC9wYXJhPgogICAgPC9ub3RlPgogCi0tIAoy LjQ4LjEKCg== --------------qzhG3TvJfoKQPAu6hWaxRwbV--