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 1u1ZhP-004Z3m-Ni for pgsql-hackers@arkaria.postgresql.org; Sun, 06 Apr 2025 23:46:48 +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 1u1ZhM-005DZJ-F4 for pgsql-hackers@arkaria.postgresql.org; Sun, 06 Apr 2025 23:46:44 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1u1ZhL-005DYn-5d for pgsql-hackers@lists.postgresql.org; Sun, 06 Apr 2025 23:46:44 +0000 Received: from mail-vk1-xa2e.google.com ([2607:f8b0:4864:20::a2e]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1u1ZhI-003Mmq-1A for pgsql-hackers@postgresql.org; Sun, 06 Apr 2025 23:46:42 +0000 Received: by mail-vk1-xa2e.google.com with SMTP id 71dfb90a1353d-523de5611a3so1675224e0c.1 for ; Sun, 06 Apr 2025 16:46:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743983199; x=1744587999; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=brIihWXVgXPdoTBNInz7GHsG+rTI4im9FpsFxnVZcqs=; b=U63ZoXc18mAIc8lFMHO2ZaPxuoTKsptKSJFbhyDBs9XZMsZ+m8tLT6rL20f8Oi0YGy XcQuccsL2WwaXRNHxIkq4lspTdwS8deMej6enkrmEF0WDrWQzKg/idvLJ5DzXrjrncPI MFvCURcWlDjMhb5HLRqWU1nTl3DV+bUyUdJ6v4LoGNEhlKA7KfWjet94JVdBahT9oNCT LnCsj+hxmRxiSQhlZomRc90LpOA9tpiLmqPfGNpQrIWSthfRaSEmkmWXvK0UXHAGtNMz 6Yj09xboamZ8Jxvp4EAON84ijeSo1Fy9gaAUALOrY1dCjzPDVjChHkGBEFwzoZdBTmmF Y63w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743983199; x=1744587999; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=brIihWXVgXPdoTBNInz7GHsG+rTI4im9FpsFxnVZcqs=; b=La5uctwnS1p+5E347cdvT4Wyy5knyTlVjGZNDBf4ZtzekPJfu60UqEANelyXOvmPCg EVQvcG7tQQkOkvJYqgIjwhr6aSqDc/mcGE5aVL1KX3s6Q0DGjGquytlcHboJPm3s3sYp 2OlHgbV2JVbIhO02qds/oCThrP6UZxRuwSFqL8rlS9BJokKF7ZhHx8ybp0HLku+CLkgt 5AwGQ27s12U8lopZYc+ghgQuJlAT91t41+fLlWhauJx8sR62WIeN8514UwvwQem2O+S0 KYPKz4ZP7G/ibALNDdQzGKhNjqGTzmU3U3zLN1ntYPejb9UilffaAvN+o64gf+MAclSv jYhQ== X-Forwarded-Encrypted: i=1; AJvYcCVu+4QwtLcVNRTm2aqE8g5ev7nJTD0V1upyFZorA+xxXjIRwxrK3x2x/85XSkYbUxnE8lfhT5YfS5q/nE7g@postgresql.org X-Gm-Message-State: AOJu0Yw1AmrUcc5KbnUIrTY1N3tjel1RC8pv5TILXvhSQBCMmUGtdhYP NS3LDYIhgBNREd5m6U7tdFRne4LYYQFE9sKRlk0gZd7p23T0kb1GT5aeH6MAek2XMb22JroXUdl HAhmhis2UyAfPIRx7GeUI7v0US54= X-Gm-Gg: ASbGncvRnd34Ot7tY5WurRj9xTUNcyM4uSbnGUVcqCdlwgPcQolxET1dG9SZCq3AGMf byY/S5V501cAIvxz3wQQGGNjArUW/5H22ErLLHWMIo+GAkhIGpmuXXVUc0aGEPOx6u1qj91UvWX JQ1/ivK9n53nnXC6QphSYUSuQTJQ== X-Google-Smtp-Source: AGHT+IHmtqme4d+nt72fMZAXMeAsnUC8BT1vUqeyEn9D+9WIscozk4yskj5quySmVOVjUyhz4IbnsKxLS10wL5SfPOU= X-Received: by 2002:a05:6122:4f91:b0:527:67da:74ee with SMTP id 71dfb90a1353d-52767da815amr7077264e0c.5.1743983199337; Sun, 06 Apr 2025 16:46:39 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Mihail Nikalayeu Date: Mon, 7 Apr 2025 01:45:00 +0200 X-Gm-Features: ATxdqUEJBO_soWFwI6JmvR8OgS8JH9qYM7YNrpoL5o_5MHn_fq70LBlSRhqVBDk Message-ID: Subject: Re: Revisiting {CREATE INDEX, REINDEX} CONCURRENTLY improvements To: Mihail Nikalayeu Cc: alvherre@alvh.no-ip.org, Michael Paquier , PostgreSQL Hackers , Andrey Borodin , Melanie Plageman , Matthias van de Meent Content-Type: multipart/mixed; boundary="000000000000176c55063224bb18" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000176c55063224bb18 Content-Type: multipart/alternative; boundary="000000000000176c54063224bb16" --000000000000176c54063224bb16 Content-Type: text/plain; charset="UTF-8" Hello, everyone! Rebased, updated accordingly to some changes. Best regards, Mikhail. --000000000000176c54063224bb16 Content-Type: text/html; charset="UTF-8"
Hello, everyone!

Rebased, updated accordingly to some changes.

Best regards,
Mikhail.
--000000000000176c54063224bb16-- --000000000000176c55063224bb18 Content-Type: application/octet-stream; name="v17-0005-Allow-snapshot-resets-in-concurrent-unique-index.patch" Content-Disposition: attachment; filename="v17-0005-Allow-snapshot-resets-in-concurrent-unique-index.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m967p8974 RnJvbSA1M2IyZWJjNTY1NjUwMTdkNGM4MjEyZWJmNmE1NzczYzc3Yzk5YTA0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogVGh1LCA2IE1hciAyMDI1IDE0OjU0OjQ0ICswMTAwClN1YmplY3Q6IFtQQVRDSCB2MTcgMDUv MTJdIEFsbG93IHNuYXBzaG90IHJlc2V0cyBpbiBjb25jdXJyZW50IHVuaXF1ZSBpbmRleAogYnVp bGRzCgpQcmV2aW91c2x5LCBjb25jdXJyZW50IHVuaXF1ZSBpbmRleCBidWlsZHMgdXNlZCBhIGZp eGVkIHNuYXBzaG90IGZvciB0aGUgZW50aXJlIHNjYW4gdG8gZW5zdXJlIHByb3BlciB1bmlxdWVu ZXNzIGNoZWNrcy4gVGhpcyBjb3VsZCBkZWxheSB2YWN1dW0ncyBhYmlsaXR5IHRvIGNsZWFuIHVw IGRlYWQgdHVwbGVzLgoKTm93IHJlc2V0IHNuYXBzaG90cyBwZXJpb2RpY2FsbHkgZHVyaW5nIGNv bmN1cnJlbnQgdW5pcXVlIGluZGV4IGJ1aWxkcywgd2hpbGUgc3RpbGwgbWFpbnRhaW5pbmcgdW5p cXVlbmVzcyBieToKCjEuIElnbm9yaW5nIGRlYWQgdHVwbGVzIGR1cmluZyB1bmlxdWVuZXNzIGNo ZWNrcyBpbiB0dXBsZXNvcnQKMi4gQWRkaW5nIGEgdW5pcXVlbmVzcyBjaGVjayBpbiBfYnRfbG9h ZCB0aGF0IGRldGVjdHMgbXVsdGlwbGUgYWxpdmUgdHVwbGVzIHdpdGggdGhlIHNhbWUga2V5IHZh bHVlcwoKVGhpcyBpbXByb3ZlcyB2YWN1dW0gZWZmZWN0aXZlbmVzcyBkdXJpbmcgbG9uZy1ydW5u aW5nIGluZGV4IGJ1aWxkcyB3aXRob3V0ICBjb21wcm9taXNpbmcgaW5kZXggdW5pcXVlbmVzcyBl bmZvcmNlbWVudC4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UICAgICAg ICAgICAgfCAgMTIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMg ICAgICB8ICAgNiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRkZWR1cC5jICAgICAg ICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyAgICAgICAg ICAgfCAxOTIgKysrKysrKysrKysrKystLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25i dHNwbGl0bG9jLmMgICAgICAgfCAgMTIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0 dXRpbHMuYyAgICAgICAgICB8ICAzMSArKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAg ICAgICAgICAgICAgICAgICB8ICAgOCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRz LmMgICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29y dHZhcmlhbnRzLmMgICAgfCAgNjkgKysrKystLQogc3JjL2luY2x1ZGUvYWNjZXNzL25idHJlZS5o ICAgICAgICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5o ICAgICAgICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc29ydC5o ICAgICAgICAgICAgICAgICB8ICAgMSArCiAuLi4vZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90 cy5vdXQgICAgICAgICAgfCAgIDYgKwogMTMgZmlsZXMgY2hhbmdlZCwgMjY0IGluc2VydGlvbnMo KyksIDk0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L1JFQURNRS5IT1QgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UCmluZGV4IDc0 ZTQwN2YzNzVhLi44MjlkYWQxMTk0ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvUkVBRE1FLkhPVAorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UCkBA IC0zODYsMTIgKzM4NiwxMiBAQCBoYXZlIHRoZSBIT1Qtc2FmZXR5IHByb3BlcnR5IGVuZm9yY2Vk IGJlZm9yZSB3ZSBzdGFydCB0byBidWlsZCB0aGUgbmV3CiBpbmRleC4KIAogQWZ0ZXIgd2FpdGlu ZyBmb3IgdHJhbnNhY3Rpb25zIHdoaWNoIGhhZCB0aGUgdGFibGUgb3Blbiwgd2UgYnVpbGQgdGhl IGluZGV4Ci1mb3IgYWxsIHJvd3MgdGhhdCBhcmUgdmFsaWQgaW4gYSBmcmVzaCBzbmFwc2hvdC4g IEFueSB0dXBsZXMgdmlzaWJsZSBpbiB0aGUKLXNuYXBzaG90IHdpbGwgaGF2ZSBvbmx5IHZhbGlk IGZvcndhcmQtZ3Jvd2luZyBIT1QgY2hhaW5zLiAgKFRoZXkgbWlnaHQgaGF2ZQotb2xkZXIgSE9U IHVwZGF0ZXMgYmVoaW5kIHRoZW0gd2hpY2ggYXJlIGJyb2tlbiwgYnV0IHRoaXMgaXMgT0sgZm9y IHRoZSBzYW1lCi1yZWFzb24gaXQncyBPSyBpbiBhIHJlZ3VsYXIgaW5kZXggYnVpbGQuKSAgQXMg YWJvdmUsIHdlIHBvaW50IHRoZSBpbmRleAotZW50cnkgYXQgdGhlIHJvb3Qgb2YgdGhlIEhPVC11 cGRhdGUgY2hhaW4gYnV0IHdlIHVzZSB0aGUga2V5IHZhbHVlIGZyb20gdGhlCi1saXZlIHR1cGxl LgorZm9yIGFsbCByb3dzIHRoYXQgYXJlIHZhbGlkIGluIGEgZnJlc2ggc25hcHNob3QsIHdoaWNo IGlzIHVwZGF0ZWQgZXZlcnkgc28KK29mdGVuLiBBbnkgdHVwbGVzIHZpc2libGUgaW4gdGhlIHNu YXBzaG90IHdpbGwgaGF2ZSBvbmx5IHZhbGlkIGZvcndhcmQtZ3Jvd2luZworSE9UIGNoYWlucy4g IChUaGV5IG1pZ2h0IGhhdmUgb2xkZXIgSE9UIHVwZGF0ZXMgYmVoaW5kIHRoZW0gd2hpY2ggYXJl IGJyb2tlbiwKK2J1dCB0aGlzIGlzIE9LIGZvciB0aGUgc2FtZSByZWFzb24gaXQncyBPSyBpbiBh IHJlZ3VsYXIgaW5kZXggYnVpbGQuKQorQXMgYWJvdmUsIHdlIHBvaW50IHRoZSBpbmRleCBlbnRy eSBhdCB0aGUgcm9vdCBvZiB0aGUgSE9ULXVwZGF0ZSBjaGFpbiBidXQgd2UKK3VzZSB0aGUga2V5 IHZhbHVlIGZyb20gdGhlIGxpdmUgdHVwbGUuCiAKIFdlIG1hcmsgdGhlIGluZGV4IG9wZW4gZm9y IGluc2VydHMgKGJ1dCBzdGlsbCBub3QgcmVhZHkgZm9yIHJlYWRzKSB0aGVuCiB3ZSBhZ2FpbiB3 YWl0IGZvciB0cmFuc2FjdGlvbnMgd2hpY2ggaGF2ZSB0aGUgdGFibGUgb3Blbi4gIFRoZW4gd2Ug dGFrZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIu YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKaW5kZXggNzI3M2Ix YWVlMDAuLjBlYWE0ZGY1NTgyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1faGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5k bGVyLmMKQEAgLTEyMzYsMTUgKzEyMzYsMTUgQEAgaGVhcGFtX2luZGV4X2J1aWxkX3JhbmdlX3Nj YW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCSAqIHF1YWwgY2hlY2tzIChiZWNhdXNlIHdlIGhh dmUgdG8gaW5kZXggUkVDRU5UTFlfREVBRCB0dXBsZXMpLiBJbiBhCiAJICogY29uY3VycmVudCBi dWlsZCwgb3IgZHVyaW5nIGJvb3RzdHJhcCwgd2UgdGFrZSBhIHJlZ3VsYXIgTVZDQyBzbmFwc2hv dAogCSAqIGFuZCBpbmRleCB3aGF0ZXZlcidzIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQgd2hpbGUg dGhhdCBzbmFwc2hvdCBpcyByZXNldAotCSAqIGV2ZXJ5IHNvIG9mdGVuIChpbiBjYXNlIG9mIG5v bi11bmlxdWUgaW5kZXgpLgorCSAqIGV2ZXJ5IHNvIG9mdGVuLgogCSAqLwogCU9sZGVzdFhtaW4g PSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAogCS8qCi0JICogRm9yIHVuaXF1ZSBpbmRleCB3ZSBu ZWVkIGNvbnNpc3RlbnQgc25hcHNob3QgZm9yIHRoZSB3aG9sZSBzY2FuLgorCSAqIEZvciBjb25j dXJyZW50IGJ1aWxkcyBvZiBub24tc3lzdGVtIGluZGV4ZXMsIHdlIG1heSB3YW50IHRvIHBlcmlv ZGljYWxseQorCSAqIHJlc2V0IHNuYXBzaG90cyB0byBhbGxvdyB2YWN1dW0gdG8gY2xlYW4gdXAg dHVwbGVzLgogCSAqLwogCXJlc2V0X3NuYXBzaG90cyA9IGluZGV4SW5mby0+aWlfQ29uY3VycmVu dCAmJgotCQkJCQkgICFpbmRleEluZm8tPmlpX1VuaXF1ZSAmJgogCQkJCQkgICFpc19zeXN0ZW1f Y2F0YWxvZzsgLyoganVzdCBmb3IgdGhlIGNhc2UgKi8KIAogCS8qIG9rYXkgdG8gaWdub3JlIGxh enkgVkFDVVVNcyBoZXJlICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idGRlZHVwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGRlZHVwLmMKaW5kZXgg MDg4ODQxMTZhZWMuLjM0N2I1MGQ2ZTUxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv bmJ0cmVlL25idGRlZHVwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRkZWR1 cC5jCkBAIC0xNDgsNyArMTQ4LDcgQEAgX2J0X2RlZHVwX3Bhc3MoUmVsYXRpb24gcmVsLCBCdWZm ZXIgYnVmLCBJbmRleFR1cGxlIG5ld2l0ZW0sIFNpemUgbmV3aXRlbXN6LAogCQkJX2J0X2RlZHVw X3N0YXJ0X3BlbmRpbmcoc3RhdGUsIGl0dXAsIG9mZm51bSk7CiAJCX0KIAkJZWxzZSBpZiAoc3Rh dGUtPmRlZHVwbGljYXRlICYmCi0JCQkJIF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBzdGF0ZS0+ YmFzZSwgaXR1cCkgPiBua2V5YXR0cyAmJgorCQkJCSBfYnRfa2VlcF9uYXR0c19mYXN0KHJlbCwg c3RhdGUtPmJhc2UsIGl0dXAsIE5VTEwpID4gbmtleWF0dHMgJiYKIAkJCQkgX2J0X2RlZHVwX3Nh dmVfaHRpZChzdGF0ZSwgaXR1cCkpCiAJCXsKIAkJCS8qCkBAIC0zNzQsNyArMzc0LDcgQEAgX2J0 X2JvdHRvbXVwZGVsX3Bhc3MoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLCBSZWxhdGlvbiBoZWFw UmVsLAogCQkJLyogaXR1cCBzdGFydHMgZmlyc3QgcGVuZGluZyBpbnRlcnZhbCAqLwogCQkJX2J0 X2RlZHVwX3N0YXJ0X3BlbmRpbmcoc3RhdGUsIGl0dXAsIG9mZm51bSk7CiAJCX0KLQkJZWxzZSBp ZiAoX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIHN0YXRlLT5iYXNlLCBpdHVwKSA+IG5rZXlhdHRz ICYmCisJCWVsc2UgaWYgKF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBzdGF0ZS0+YmFzZSwgaXR1 cCwgTlVMTCkgPiBua2V5YXR0cyAmJgogCQkJCSBfYnRfZGVkdXBfc2F2ZV9odGlkKHN0YXRlLCBp dHVwKSkKIAkJewogCQkJLyogVHVwbGUgaXMgZXF1YWw7IGp1c3QgYWRkZWQgaXRzIFRJRHMgdG8g cGVuZGluZyBpbnRlcnZhbCAqLwpAQCAtNzg5LDEyICs3ODksMTIgQEAgX2J0X2RvX3NpbmdsZXZh bChSZWxhdGlvbiByZWwsIFBhZ2UgcGFnZSwgQlREZWR1cFN0YXRlIHN0YXRlLAogCWl0ZW1pZCA9 IFBhZ2VHZXRJdGVtSWQocGFnZSwgbWlub2ZmKTsKIAlpdHVwID0gKEluZGV4VHVwbGUpIFBhZ2VH ZXRJdGVtKHBhZ2UsIGl0ZW1pZCk7CiAKLQlpZiAoX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIG5l d2l0ZW0sIGl0dXApID4gbmtleWF0dHMpCisJaWYgKF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBu ZXdpdGVtLCBpdHVwLCBOVUxMKSA+IG5rZXlhdHRzKQogCXsKIAkJaXRlbWlkID0gUGFnZUdldEl0 ZW1JZChwYWdlLCBQYWdlR2V0TWF4T2Zmc2V0TnVtYmVyKHBhZ2UpKTsKIAkJaXR1cCA9IChJbmRl eFR1cGxlKSBQYWdlR2V0SXRlbShwYWdlLCBpdGVtaWQpOwogCi0JCWlmIChfYnRfa2VlcF9uYXR0 c19mYXN0KHJlbCwgbmV3aXRlbSwgaXR1cCkgPiBua2V5YXR0cykKKwkJaWYgKF9idF9rZWVwX25h dHRzX2Zhc3QocmVsLCBuZXdpdGVtLCBpdHVwLCBOVUxMKSA+IG5rZXlhdHRzKQogCQkJcmV0dXJu IHRydWU7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNv cnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCmluZGV4IDJmNDVhZTk2 YzBjLi5kMTg2Y2U5ZWMzNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnRzb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKQEAgLTgz LDYgKzgzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQlRTcG9vbAogCVJlbGF0aW9uCWluZGV4OwogCWJv b2wJCWlzdW5pcXVlOwogCWJvb2wJCW51bGxzX25vdF9kaXN0aW5jdDsKKwlib29sCQl1bmlxdWVf ZGVhZF9pZ25vcmVkOwogfSBCVFNwb29sOwogCiAvKgpAQCAtMTAxLDYgKzEwMiw3IEBAIHR5cGVk ZWYgc3RydWN0IEJUU2hhcmVkCiAJT2lkCQkJaW5kZXhyZWxpZDsKIAlib29sCQlpc3VuaXF1ZTsK IAlib29sCQludWxsc19ub3RfZGlzdGluY3Q7CisJYm9vbAkJdW5pcXVlX2RlYWRfaWdub3JlZDsK IAlib29sCQlpc2NvbmN1cnJlbnQ7CiAJaW50CQkJc2NhbnR1cGxlc29ydHN0YXRlczsKIApAQCAt MjAzLDE1ICsyMDUsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgQlRMZWFkZXIKICAqLwogdHlwZWRlZiBz dHJ1Y3QgQlRCdWlsZFN0YXRlCiB7Ci0JYm9vbAkJaXN1bmlxdWU7Ci0JYm9vbAkJbnVsbHNfbm90 X2Rpc3RpbmN0OwogCWJvb2wJCWhhdmVkZWFkOwogCVJlbGF0aW9uCWhlYXA7CiAJQlRTcG9vbCAg ICAqc3Bvb2w7CiAKIAkvKgotCSAqIHNwb29sMiBpcyBuZWVkZWQgb25seSB3aGVuIHRoZSBpbmRl eCBpcyBhIHVuaXF1ZSBpbmRleC4gRGVhZCB0dXBsZXMgYXJlCi0JICogcHV0IGludG8gc3Bvb2wy IGluc3RlYWQgb2Ygc3Bvb2wgaW4gb3JkZXIgdG8gYXZvaWQgdW5pcXVlbmVzcyBjaGVjay4KKwkg KiBzcG9vbDIgaXMgbmVlZGVkIG9ubHkgd2hlbiB0aGUgaW5kZXggaXMgYSB1bmlxdWUgaW5kZXgg YW5kIGJ1aWxkIG5vbi1jb25jdXJyZW50bHkuCisJICogRGVhZCB0dXBsZXMgYXJlIHB1dCBpbnRv IHNwb29sMiBpbnN0ZWFkIG9mIHNwb29sIGluIG9yZGVyIHRvIGF2b2lkIHVuaXF1ZW5lc3MgY2hl Y2suCiAJICovCiAJQlRTcG9vbCAgICAqc3Bvb2wyOwogCWRvdWJsZQkJaW5kdHVwbGVzOwpAQCAt MjU4LDcgKzI1OCw3IEBAIHN0YXRpYyBkb3VibGUgX2J0X3Nwb29sc19oZWFwc2NhbihSZWxhdGlv biBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIHN0YXRpYyB2b2lkIF9idF9zcG9vbGRlc3Ryb3koQlRT cG9vbCAqYnRzcG9vbCk7CiBzdGF0aWMgdm9pZCBfYnRfc3Bvb2woQlRTcG9vbCAqYnRzcG9vbCwg SXRlbVBvaW50ZXIgc2VsZiwKIAkJCQkJICBEYXR1bSAqdmFsdWVzLCBib29sICppc251bGwpOwot c3RhdGljIHZvaWQgX2J0X2xlYWZidWlsZChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNw b29sMiwgYm9vbCByZXNldF9zbmFwc2hvdHMpOworc3RhdGljIHZvaWQgX2J0X2xlYWZidWlsZChC VFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMiwgYm9vbCBpc2NvbmN1cnJlbnQpOwog c3RhdGljIHZvaWQgX2J0X2J1aWxkX2NhbGxiYWNrKFJlbGF0aW9uIGluZGV4LCBJdGVtUG9pbnRl ciB0aWQsIERhdHVtICp2YWx1ZXMsCiAJCQkJCQkJICAgYm9vbCAqaXNudWxsLCBib29sIHR1cGxl SXNBbGl2ZSwgdm9pZCAqc3RhdGUpOwogc3RhdGljIEJ1bGtXcml0ZUJ1ZmZlciBfYnRfYmxuZXdw YWdlKEJUV3JpdGVTdGF0ZSAqd3N0YXRlLCB1aW50MzIgbGV2ZWwpOwpAQCAtMzAzLDggKzMwMyw2 IEBAIGJ0YnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5k ZXhJbmZvKQogCQlSZXNldFVzYWdlKCk7CiAjZW5kaWYJCQkJCQkJLyogQlRSRUVfQlVJTERfU1RB VFMgKi8KIAotCWJ1aWxkc3RhdGUuaXN1bmlxdWUgPSBpbmRleEluZm8tPmlpX1VuaXF1ZTsKLQli dWlsZHN0YXRlLm51bGxzX25vdF9kaXN0aW5jdCA9IGluZGV4SW5mby0+aWlfTnVsbHNOb3REaXN0 aW5jdDsKIAlidWlsZHN0YXRlLmhhdmVkZWFkID0gZmFsc2U7CiAJYnVpbGRzdGF0ZS5oZWFwID0g aGVhcDsKIAlidWlsZHN0YXRlLnNwb29sID0gTlVMTDsKQEAgLTMyMSwyMCArMzE5LDIwIEBAIGJ0 YnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZv KQogCQkJIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGluZGV4KSk7CiAKIAlyZWx0dXBsZXMgPSBf YnRfc3Bvb2xzX2hlYXBzY2FuKGhlYXAsIGluZGV4LCAmYnVpbGRzdGF0ZSwgaW5kZXhJbmZvKTsK LQlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCBpbmRleEluZm8tPmlpX1VuaXF1 ZSB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJQXNzZXJ0KCFpbmRl eEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1p bikpOwogCiAJLyoKIAkgKiBGaW5pc2ggdGhlIGJ1aWxkIGJ5ICgxKSBjb21wbGV0aW5nIHRoZSBz b3J0IG9mIHRoZSBzcG9vbCBmaWxlLCAoMikKIAkgKiBpbnNlcnRpbmcgdGhlIHNvcnRlZCB0dXBs ZXMgaW50byBidHJlZSBwYWdlcyBhbmQgKDMpIGJ1aWxkaW5nIHRoZSB1cHBlcgogCSAqIGxldmVs cy4gIEZpbmFsbHksIGl0IG1heSBhbHNvIGJlIG5lY2Vzc2FyeSB0byBlbmQgdXNlIG9mIHBhcmFs bGVsaXNtLgogCSAqLwotCV9idF9sZWFmYnVpbGQoYnVpbGRzdGF0ZS5zcG9vbCwgYnVpbGRzdGF0 ZS5zcG9vbDIsICFpbmRleEluZm8tPmlpX1VuaXF1ZSAmJiBpbmRleEluZm8tPmlpX0NvbmN1cnJl bnQpOworCV9idF9sZWFmYnVpbGQoYnVpbGRzdGF0ZS5zcG9vbCwgYnVpbGRzdGF0ZS5zcG9vbDIs IGluZGV4SW5mby0+aWlfQ29uY3VycmVudCk7CiAJX2J0X3Nwb29sZGVzdHJveShidWlsZHN0YXRl LnNwb29sKTsKIAlpZiAoYnVpbGRzdGF0ZS5zcG9vbDIpCiAJCV9idF9zcG9vbGRlc3Ryb3koYnVp bGRzdGF0ZS5zcG9vbDIpOwogCWlmIChidWlsZHN0YXRlLmJ0bGVhZGVyKQogCQlfYnRfZW5kX3Bh cmFsbGVsKGJ1aWxkc3RhdGUuYnRsZWFkZXIpOwotCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25j dXJyZW50IHx8IGluZGV4SW5mby0+aWlfVW5pcXVlIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChN eVByb2MtPnhtaW4pKTsKKwlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJh bnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAlyZXN1bHQgPSAoSW5kZXhCdWls ZFJlc3VsdCAqKSBwYWxsb2Moc2l6ZW9mKEluZGV4QnVpbGRSZXN1bHQpKTsKIApAQCAtMzgxLDYg KzM3OSwxMSBAQCBfYnRfc3Bvb2xzX2hlYXBzY2FuKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGlu ZGV4LCBCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsCiAJYnRzcG9vbC0+aW5kZXggPSBpbmRleDsK IAlidHNwb29sLT5pc3VuaXF1ZSA9IGluZGV4SW5mby0+aWlfVW5pcXVlOwogCWJ0c3Bvb2wtPm51 bGxzX25vdF9kaXN0aW5jdCA9IGluZGV4SW5mby0+aWlfTnVsbHNOb3REaXN0aW5jdDsKKwkvKgor CSAqIFdlIG5lZWQgdG8gaWdub3JlIGRlYWQgdHVwbGVzIGZvciB1bmlxdWUgY2hlY2tzIGluIGNh c2Ugb2YgY29uY3VycmVudCBidWlsZC4KKwkgKiBJdCBpcyByZXF1aXJlZCBiZWNhdXNlIG9yIHBl cmlvZGljIHJlc2V0IG9mIHNuYXBzaG90LgorCSAqLworCWJ0c3Bvb2wtPnVuaXF1ZV9kZWFkX2ln bm9yZWQgPSBpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgJiYgaW5kZXhJbmZvLT5paV9VbmlxdWU7 CiAKIAkvKiBTYXZlIGFzIHByaW1hcnkgc3Bvb2wgKi8KIAlidWlsZHN0YXRlLT5zcG9vbCA9IGJ0 c3Bvb2w7CkBAIC00MjksOCArNDMyLDkgQEAgX2J0X3Nwb29sc19oZWFwc2NhbihSZWxhdGlvbiBo ZWFwLCBSZWxhdGlvbiBpbmRleCwgQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLAogCSAqIHRoZSB1 c2Ugb2YgcGFyYWxsZWxpc20gb3IgYW55IG90aGVyIGZhY3Rvci4KIAkgKi8KIAlidWlsZHN0YXRl LT5zcG9vbC0+c29ydHN0YXRlID0KLQkJdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKGhlYXAs IGluZGV4LCBidWlsZHN0YXRlLT5pc3VuaXF1ZSwKLQkJCQkJCQkJCWJ1aWxkc3RhdGUtPm51bGxz X25vdF9kaXN0aW5jdCwKKwkJdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKGhlYXAsIGluZGV4 LCBidHNwb29sLT5pc3VuaXF1ZSwKKwkJCQkJCQkJCWJ0c3Bvb2wtPm51bGxzX25vdF9kaXN0aW5j dCwKKwkJCQkJCQkJCWJ0c3Bvb2wtPnVuaXF1ZV9kZWFkX2lnbm9yZWQsCiAJCQkJCQkJCQltYWlu dGVuYW5jZV93b3JrX21lbSwgY29vcmRpbmF0ZSwKIAkJCQkJCQkJCVRVUExFU09SVF9OT05FKTsK IApAQCAtNDM4LDggKzQ0MiwxMiBAQCBfYnRfc3Bvb2xzX2hlYXBzY2FuKFJlbGF0aW9uIGhlYXAs IFJlbGF0aW9uIGluZGV4LCBCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsCiAJICogSWYgYnVpbGRp bmcgYSB1bmlxdWUgaW5kZXgsIHB1dCBkZWFkIHR1cGxlcyBpbiBhIHNlY29uZCBzcG9vbCB0byBr ZWVwCiAJICogdGhlbSBvdXQgb2YgdGhlIHVuaXF1ZW5lc3MgY2hlY2suICBXZSBleHBlY3QgdGhh dCB0aGUgc2Vjb25kIHNwb29sIChmb3IKIAkgKiBkZWFkIHR1cGxlcykgd29uJ3QgZ2V0IHZlcnkg ZnVsbCwgc28gd2UgZ2l2ZSBpdCBvbmx5IHdvcmtfbWVtLgorCSAqCisJICogSW4gY2FzZSBvZiBj b25jdXJyZW50IGJ1aWxkIGRlYWQgdHVwbGVzIGFyZSBub3QgbmVlZCB0byBiZSBwdXQgaW50byBp bmRleAorCSAqIHNpbmNlIHdlIHdhaXQgZm9yIGFsbCBzbmFwc2hvdHMgb2xkZXIgdGhhbiByZWZl cmVuY2Ugc25hcHNob3QgZHVyaW5nIHRoZQorCSAqIHZhbGlkYXRpb24gcGhhc2UuCiAJICovCi0J aWYgKGluZGV4SW5mby0+aWlfVW5pcXVlKQorCWlmIChpbmRleEluZm8tPmlpX1VuaXF1ZSAmJiAh aW5kZXhJbmZvLT5paV9Db25jdXJyZW50KQogCXsKIAkJQlRTcG9vbCAgICAqYnRzcG9vbDIgPSAo QlRTcG9vbCAqKSBwYWxsb2MwKHNpemVvZihCVFNwb29sKSk7CiAJCVNvcnRDb29yZGluYXRlIGNv b3JkaW5hdGUyID0gTlVMTDsKQEAgLTQ3MCw3ICs0NzgsNyBAQCBfYnRfc3Bvb2xzX2hlYXBzY2Fu KFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUs CiAJCSAqIGZ1bGwsIHNvIHdlIGdpdmUgaXQgb25seSB3b3JrX21lbQogCQkgKi8KIAkJYnVpbGRz dGF0ZS0+c3Bvb2wyLT5zb3J0c3RhdGUgPQotCQkJdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVl KGhlYXAsIGluZGV4LCBmYWxzZSwgZmFsc2UsIHdvcmtfbWVtLAorCQkJdHVwbGVzb3J0X2JlZ2lu X2luZGV4X2J0cmVlKGhlYXAsIGluZGV4LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB3b3JrX21lbSwK IAkJCQkJCQkJCQljb29yZGluYXRlMiwgVFVQTEVTT1JUX05PTkUpOwogCX0KIApAQCAtNDgzLDcg KzQ5MSw3IEBAIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5k ZXgsIEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKIAkJcmVsdHVwbGVzID0gX2J0X3BhcmFsbGVs X2hlYXBzY2FuKGJ1aWxkc3RhdGUsCiAJCQkJCQkJCQkJICAmaW5kZXhJbmZvLT5paV9Ccm9rZW5I b3RDaGFpbik7CiAJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOwotCUFzc2VydCghaW5kZXhJ bmZvLT5paV9Db25jdXJyZW50IHx8IGluZGV4SW5mby0+aWlfVW5pcXVlIHx8ICFUcmFuc2FjdGlv bklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3Vy cmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkvKgogCSAq IFNldCB0aGUgcHJvZ3Jlc3MgdGFyZ2V0IGZvciB0aGUgbmV4dCBwaGFzZS4gIFJlc2V0IHRoZSBi bG9jayBudW1iZXIKQEAgLTUzOSw3ICs1NDcsNyBAQCBfYnRfc3Bvb2woQlRTcG9vbCAqYnRzcG9v bCwgSXRlbVBvaW50ZXIgc2VsZiwgRGF0dW0gKnZhbHVlcywgYm9vbCAqaXNudWxsKQogICogY3Jl YXRlIGFuIGVudGlyZSBidHJlZS4KICAqLwogc3RhdGljIHZvaWQKLV9idF9sZWFmYnVpbGQoQlRT cG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIsIGJvb2wgcmVzZXRfc25hcHNob3RzKQor X2J0X2xlYWZidWlsZChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMiwgYm9vbCBp c2NvbmN1cnJlbnQpCiB7CiAJQlRXcml0ZVN0YXRlIHdzdGF0ZTsKIApAQCAtNTYxLDcgKzU2OSw3 IEBAIF9idF9sZWFmYnVpbGQoQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIsIGJv b2wgcmVzZXRfc25hcHNob3RzKQogCQkJCQkJCQkJIFBST0dSRVNTX0JUUkVFX1BIQVNFX1BFUkZP Uk1TT1JUXzIpOwogCQl0dXBsZXNvcnRfcGVyZm9ybXNvcnQoYnRzcG9vbDItPnNvcnRzdGF0ZSk7 CiAJfQotCUFzc2VydCghcmVzZXRfc25hcHNob3RzIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChN eVByb2MtPnhtaW4pKTsKKwlBc3NlcnQoIWlzY29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElz VmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAl3c3RhdGUuaGVhcCA9IGJ0c3Bvb2wtPmhlYXA7CiAJ d3N0YXRlLmluZGV4ID0gYnRzcG9vbC0+aW5kZXg7CkBAIC01NzUsNyArNTgzLDcgQEAgX2J0X2xl YWZidWlsZChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMiwgYm9vbCByZXNldF9z bmFwc2hvdHMpCiAKIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFU RUlEWF9TVUJQSEFTRSwKIAkJCQkJCQkJIFBST0dSRVNTX0JUUkVFX1BIQVNFX0xFQUZfTE9BRCk7 Ci0JQXNzZXJ0KCFyZXNldF9zbmFwc2hvdHMgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJv Yy0+eG1pbikpOworCUFzc2VydCghaXNjb25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxp ZChNeVByb2MtPnhtaW4pKTsKIAlfYnRfbG9hZCgmd3N0YXRlLCBidHNwb29sLCBidHNwb29sMik7 CiB9CiAKQEAgLTExNTQsMTMgKzExNjIsMTE3IEBAIF9idF9sb2FkKEJUV3JpdGVTdGF0ZSAqd3N0 YXRlLCBCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMikKIAlTb3J0U3VwcG9ydCBz b3J0S2V5czsKIAlpbnQ2NAkJdHVwbGVzX2RvbmUgPSAwOwogCWJvb2wJCWRlZHVwbGljYXRlOwor CWJvb2wJCWZhaWxfb25fYWxpdmVfZHVwbGljYXRlOwogCiAJd3N0YXRlLT5idWxrc3RhdGUgPSBz bWdyX2J1bGtfc3RhcnRfcmVsKHdzdGF0ZS0+aW5kZXgsIE1BSU5fRk9SS05VTSk7CiAKIAlkZWR1 cGxpY2F0ZSA9IHdzdGF0ZS0+aW5za2V5LT5hbGxlcXVhbGltYWdlICYmICFidHNwb29sLT5pc3Vu aXF1ZSAmJgogCQlCVEdldERlZHVwbGljYXRlSXRlbXMod3N0YXRlLT5pbmRleCk7CisJLyoKKwkg KiBUaGUgdW5pcXVlX2RlYWRfaWdub3JlZCBkb2VzIG5vdCBndWFyYW50ZWUgYWJzZW5jZSBvZiBt dWx0aXBsZSBhbGl2ZQorCSAqIHR1cGxlcyB3aXRoIHNhbWUgdmFsdWVzIGV4aXN0cyBpbiB0aGUg c3Bvb2wuIFN1Y2ggdGhpbmcgbWF5IGhhcHBlbiBpZgorCSAqIGFsaXZlIHR1cGxlcyBhcmUgbG9j YXRlZCBiZXR3ZWVuIGEgZmV3IGRlYWQgdHVwbGVzLCBsaWtlIHRoaXM6IGFkZGRhLgorCSAqLwor CWZhaWxfb25fYWxpdmVfZHVwbGljYXRlID0gYnRzcG9vbC0+dW5pcXVlX2RlYWRfaWdub3JlZDsK IAotCWlmIChtZXJnZSkKKwlpZiAoZmFpbF9vbl9hbGl2ZV9kdXBsaWNhdGUpCisJeworCQlib29s CXNlZW5fYWxpdmUgPSBmYWxzZSwKKwkJCQlwcmV2X3Rlc3RlZCA9IGZhbHNlOworCQlJbmRleFR1 cGxlIHByZXYgPSBOVUxMOworCQlUdXBsZVRhYmxlU2xvdCAJCSpzbG90ID0gTWFrZVNpbmdsZVR1 cGxlVGFibGVTbG90KFJlbGF0aW9uR2V0RGVzY3Iod3N0YXRlLT5oZWFwKSwKKwkJCQkJCQkJCQkJ CQkJCSAgICZUVFNPcHNCdWZmZXJIZWFwVHVwbGUpOworCQlJbmRleEZldGNoVGFibGVEYXRhICpm ZXRjaCA9IHRhYmxlX2luZGV4X2ZldGNoX2JlZ2luKHdzdGF0ZS0+aGVhcCk7CisKKwkJQXNzZXJ0 KGJ0c3Bvb2wtPmlzdW5pcXVlKTsKKwkJQXNzZXJ0KCFidHNwb29sMik7CisKKwkJd2hpbGUgKChp dHVwID0gdHVwbGVzb3J0X2dldGluZGV4dHVwbGUoYnRzcG9vbC0+c29ydHN0YXRlLCB0cnVlKSkg IT0gTlVMTCkKKwkJeworCQkJYm9vbAl0dXBsZXNfZXF1YWwgPSBmYWxzZTsKKworCQkJLyogV2hl biB3ZSBzZWUgZmlyc3QgdHVwbGUsIGNyZWF0ZSBmaXJzdCBpbmRleCBwYWdlICovCisJCQlpZiAo c3RhdGUgPT0gTlVMTCkKKwkJCQlzdGF0ZSA9IF9idF9wYWdlc3RhdGUod3N0YXRlLCAwKTsKKwor CQkJaWYgKHByZXYgIT0gTlVMTCkgLyogaWYgaXMgbm90IHRoZSBmaXJzdCB0dXBsZSAqLworCQkJ eworCQkJCWJvb2wJaGFzX251bGxzID0gZmFsc2UsCisJCQkJCQljYWxsX2FnYWluLCAvKiBqdXN0 IHRvIHBhc3Mgc29tZXRoaW5nICovCisJCQkJCQlpZ25vcmVkLCAgLyoganVzdCB0byBwYXNzIHNv bWV0aGluZyAqLworCQkJCQkJbm93X2FsaXZlOworCQkJCUl0ZW1Qb2ludGVyRGF0YSB0aWQ7CisK KwkJCQkvKiBpZiB0aGlzIHR1cGxlcyBlcXVhbCB0byBwcmV2aW91c2Ugb25lPyAqLworCQkJCWlm ICh3c3RhdGUtPmluc2tleS0+YWxsZXF1YWxpbWFnZSkKKwkJCQkJdHVwbGVzX2VxdWFsID0gX2J0 X2tlZXBfbmF0dHNfZmFzdCh3c3RhdGUtPmluZGV4LCBwcmV2LCBpdHVwLCAmaGFzX251bGxzKSA+ IGtleXN6OworCQkJCWVsc2UKKwkJCQkJdHVwbGVzX2VxdWFsID0gX2J0X2tlZXBfbmF0dHMod3N0 YXRlLT5pbmRleCwgcHJldiwgaXR1cCx3c3RhdGUtPmluc2tleSwgJmhhc19udWxscykgPiBrZXlz ejsKKworCQkJCS8qIGhhbmRsZSBudWxsIHZhbHVlcyBjb3JyZWN0bHkgKi8KKwkJCQlpZiAoaGFz X251bGxzICYmICFidHNwb29sLT5udWxsc19ub3RfZGlzdGluY3QpCisJCQkJCXR1cGxlc19lcXVh bCA9IGZhbHNlOworCisJCQkJaWYgKHR1cGxlc19lcXVhbCkKKwkJCQl7CisJCQkJCS8qIGNoZWNr IHByZXZpb3VzIHR1cGxlIGlmIG5vdCB5ZXQgKi8KKwkJCQkJaWYgKCFwcmV2X3Rlc3RlZCkKKwkJ CQkJeworCQkJCQkJY2FsbF9hZ2FpbiA9IGZhbHNlOworCQkJCQkJdGlkID0gcHJldi0+dF90aWQ7 CisJCQkJCQlzZWVuX2FsaXZlID0gdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGUoZmV0Y2gsICZ0aWQs IFNuYXBzaG90U2VsZiwgc2xvdCwgJmNhbGxfYWdhaW4sICZpZ25vcmVkKTsKKwkJCQkJCXByZXZf dGVzdGVkID0gdHJ1ZTsKKwkJCQkJfQorCisJCQkJCWNhbGxfYWdhaW4gPSBmYWxzZTsKKwkJCQkJ dGlkID0gaXR1cC0+dF90aWQ7CisJCQkJCW5vd19hbGl2ZSA9IHRhYmxlX2luZGV4X2ZldGNoX3R1 cGxlKGZldGNoLCAmdGlkLCBTbmFwc2hvdFNlbGYsIHNsb3QsICZjYWxsX2FnYWluLCAmaWdub3Jl ZCk7CisKKwkJCQkJLyogYXJlIG11bHRpcGxlIGFsaXZlIHR1cGxlcyBkZXRlY3RlZCBpbiBlcXVh bCBncm91cD8gKi8KKwkJCQkJaWYgKHNlZW5fYWxpdmUgJiYgbm93X2FsaXZlKQorCQkJCQl7CisJ CQkJCQljaGFyICprZXlfZGVzYzsKKwkJCQkJCVR1cGxlRGVzYyB0dXBEZXMgPSBSZWxhdGlvbkdl dERlc2NyKHdzdGF0ZS0+aW5kZXgpOworCQkJCQkJYm9vbCBpc251bGxbSU5ERVhfTUFYX0tFWVNd OworCQkJCQkJRGF0dW0gdmFsdWVzW0lOREVYX01BWF9LRVlTXTsKKworCQkJCQkJaW5kZXhfZGVm b3JtX3R1cGxlKGl0dXAsIHR1cERlcywgdmFsdWVzLCBpc251bGwpOworCisJCQkJCQlrZXlfZGVz YyA9IEJ1aWxkSW5kZXhWYWx1ZURlc2NyaXB0aW9uKHdzdGF0ZS0+aW5kZXgsIHZhbHVlcywgaXNu dWxsKTsKKworCQkJCQkJLyoga2VlcCB0aGlzIG1lc3NhZ2UgaW4gc3luYyB3aXRoIHRoZSBzYW1l IGluIGNvbXBhcmV0dXBfaW5kZXhfYnRyZWVfdGllYnJlYWsgKi8KKwkJCQkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5JUVVFX1ZJT0xBVElPTiksCisJCQkJCQkJ CQkJZXJybXNnKCJjb3VsZCBub3QgY3JlYXRlIHVuaXF1ZSBpbmRleCBcIiVzXCIiLAorCQkJCQkJ CQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh3c3RhdGUtPmluZGV4KSksCisJCQkJCQkJ CQkJa2V5X2Rlc2MgPyBlcnJkZXRhaWwoIktleSAlcyBpcyBkdXBsaWNhdGVkLiIsIGtleV9kZXNj KSA6CisJCQkJCQkJCQkJZXJyZGV0YWlsKCJEdXBsaWNhdGUga2V5cyBleGlzdC4iKSwKKwkJCQkJ CQkJCQllcnJ0YWJsZWNvbnN0cmFpbnQod3N0YXRlLT5oZWFwLAorCQkJCQkJCQkJCQkJCQkgICBS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh3c3RhdGUtPmluZGV4KSkpKTsKKwkJCQkJfQorCQkJCQlz ZWVuX2FsaXZlIHw9IG5vd19hbGl2ZTsKKwkJCQl9CisJCQl9CisKKwkJCWlmICghdHVwbGVzX2Vx dWFsKQorCQkJeworCQkJCXNlZW5fYWxpdmUgPSBmYWxzZTsKKwkJCQlwcmV2X3Rlc3RlZCA9IGZh bHNlOworCQkJfQorCisJCQlfYnRfYnVpbGRhZGQod3N0YXRlLCBzdGF0ZSwgaXR1cCwgMCk7CisJ CQlpZiAocHJldikgcGZyZWUocHJldik7CisJCQlwcmV2ID0gQ29weUluZGV4VHVwbGUoaXR1cCk7 CisKKwkJCS8qIFJlcG9ydCBwcm9ncmVzcyAqLworCQkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9w YXJhbShQUk9HUkVTU19DUkVBVEVJRFhfVFVQTEVTX0RPTkUsCisJCQkJCQkJCQkJICsrdHVwbGVz X2RvbmUpOworCQl9CisJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CisJCXRh YmxlX2luZGV4X2ZldGNoX2VuZChmZXRjaCk7CisJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFs aWQoTXlQcm9jLT54bWluKSk7CisJfQorCWVsc2UgaWYgKG1lcmdlKQogCXsKIAkJLyoKIAkJICog QW5vdGhlciBCVFNwb29sIGZvciBkZWFkIHR1cGxlcyBleGlzdHMuIE5vdyB3ZSBoYXZlIHRvIG1l cmdlCkBAIC0xMzIwLDcgKzE0MzIsNyBAQCBfYnRfbG9hZChCVFdyaXRlU3RhdGUgKndzdGF0ZSwg QlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIpCiAJCQkJCQkJCQkJSW52YWxpZE9m ZnNldE51bWJlcik7CiAJCQl9CiAJCQllbHNlIGlmIChfYnRfa2VlcF9uYXR0c19mYXN0KHdzdGF0 ZS0+aW5kZXgsIGRzdGF0ZS0+YmFzZSwKLQkJCQkJCQkJCQkgaXR1cCkgPiBrZXlzeiAmJgorCQkJ CQkJCQkJCSBpdHVwLCBOVUxMKSA+IGtleXN6ICYmCiAJCQkJCSBfYnRfZGVkdXBfc2F2ZV9odGlk KGRzdGF0ZSwgaXR1cCkpCiAJCQl7CiAJCQkJLyoKQEAgLTE0MTcsNyArMTUyOSw2IEBAIF9idF9i ZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50 LCBpbnQgcmVxdWVzdCkKIAlCdWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7CiAJYm9vbAkJbGVhZGVy cGFydGljaXBhdGVzID0gdHJ1ZTsKIAlib29sCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSB0 cnVlOwotCWJvb2wJCXJlc2V0X3NuYXBzaG90OwogCWludAkJCXF1ZXJ5bGVuOwogCiAjaWZkZWYg RElTQUJMRV9MRUFERVJfUEFSVElDSVBBVElPTgpAQCAtMTQzNSwyMSArMTU0NiwxMiBAQCBfYnRf YmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVu dCwgaW50IHJlcXVlc3QpCiAKIAlzY2FudHVwbGVzb3J0c3RhdGVzID0gbGVhZGVycGFydGljaXBh dGVzID8gcmVxdWVzdCArIDEgOiByZXF1ZXN0OwogCi0gICAgLyoKLQkgKiBGb3IgY29uY3VycmVu dCBub24tdW5pcXVlIGluZGV4IGJ1aWxkcywgd2UgY2FuIHBlcmlvZGljYWxseSByZXNldCBzbmFw c2hvdHMKLQkgKiB0byBhbGxvdyB0aGUgeG1pbiBob3Jpem9uIHRvIGFkdmFuY2UuIFRoaXMgaXMg c2FmZSBzaW5jZSB0aGVzZSBidWlsZHMgZG9uJ3QKLQkgKiByZXF1aXJlIGEgY29uc2lzdGVudCB2 aWV3IGFjcm9zcyB0aGUgZW50aXJlIHNjYW4uIFVuaXF1ZSBpbmRleGVzIHN0aWxsIG5lZWQKLQkg KiBhIHN0YWJsZSBzbmFwc2hvdCB0byBwcm9wZXJseSBlbmZvcmNlIHVuaXF1ZW5lc3MgY29uc3Ry YWludHMuCi0gICAgICovCi0JcmVzZXRfc25hcHNob3QgPSBpc2NvbmN1cnJlbnQgJiYgIWJ0c3Bv b2wtPmlzdW5pcXVlOwotCiAJLyoKIAkgKiBQcmVwYXJlIGZvciBzY2FuIG9mIHRoZSBiYXNlIHJl bGF0aW9uLiAgSW4gYSBub3JtYWwgaW5kZXggYnVpbGQsIHdlIHVzZQogCSAqIFNuYXBzaG90QW55 IGJlY2F1c2Ugd2UgbXVzdCByZXRyaWV2ZSBhbGwgdHVwbGVzIGFuZCBkbyBvdXIgb3duIHRpbWUK IAkgKiBxdWFsIGNoZWNrcyAoYmVjYXVzZSB3ZSBoYXZlIHRvIGluZGV4IFJFQ0VOVExZX0RFQUQg dHVwbGVzKS4gIEluIGEKIAkgKiBjb25jdXJyZW50IGJ1aWxkLCB3ZSB0YWtlIGEgcmVndWxhciBN VkNDIHNuYXBzaG90IGFuZCBpbmRleCB3aGF0ZXZlcidzCi0JICogbGl2ZSBhY2NvcmRpbmcgdG8g dGhhdCwgd2hpbGUgdGhhdCBzbmFwc2hvdCBtYXkgYmUgcmVzZXQgcGVyaW9kaWNhbGx5IGluCi0J ICogY2FzZSBvZiBub24tdW5pcXVlIGluZGV4LgorCSAqIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQs IHdoaWxlIHRoYXQgc25hcHNob3QgbWF5IGJlIHJlc2V0IHBlcmlvZGljYWxseS4KIAkgKi8KIAlp ZiAoIWlzY29uY3VycmVudCkKIAl7CkBAIC0xNDU3LDE2ICsxNTU5LDE2IEBAIF9idF9iZWdpbl9w YXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQg cmVxdWVzdCkKIAkJc25hcHNob3QgPSBTbmFwc2hvdEFueTsKIAkJbmVlZF9wb3BfYWN0aXZlX3Nu YXBzaG90ID0gZmFsc2U7CiAJfQotCWVsc2UgaWYgKHJlc2V0X3NuYXBzaG90KQorCWVsc2UKIAl7 CisJCS8qCisJCSAqIEZvciBjb25jdXJyZW50IGluZGV4IGJ1aWxkcywgd2UgY2FuIHBlcmlvZGlj YWxseSByZXNldCBzbmFwc2hvdHMgdG8gYWxsb3cKKwkJICogdGhlIHhtaW4gaG9yaXpvbiB0byBh ZHZhbmNlLiBUaGlzIGlzIHNhZmUgc2luY2UgdGhlc2UgYnVpbGRzIGRvbid0CisJCSAqIHJlcXVp cmUgYSBjb25zaXN0ZW50IHZpZXcgYWNyb3NzIHRoZSBlbnRpcmUgc2Nhbi4KKwkJICovCiAJCXNu YXBzaG90ID0gSW52YWxpZFNuYXBzaG90OwogCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNh Y3Rpb25TbmFwc2hvdCgpKTsKIAl9Ci0JZWxzZQotCXsKLQkJc25hcHNob3QgPSBSZWdpc3RlclNu YXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7Ci0JCVB1c2hBY3RpdmVTbmFwc2hvdChz bmFwc2hvdCk7Ci0JfQogCiAJLyoKIAkgKiBFc3RpbWF0ZSBzaXplIGZvciBvdXIgb3duIFBBUkFM TEVMX0tFWV9CVFJFRV9TSEFSRUQgd29ya3NwYWNlLCBhbmQKQEAgLTE1MzYsNiArMTYzOCw3IEBA IF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25j dXJyZW50LCBpbnQgcmVxdWVzdCkKIAlidHNoYXJlZC0+aW5kZXhyZWxpZCA9IFJlbGF0aW9uR2V0 UmVsaWQoYnRzcG9vbC0+aW5kZXgpOwogCWJ0c2hhcmVkLT5pc3VuaXF1ZSA9IGJ0c3Bvb2wtPmlz dW5pcXVlOwogCWJ0c2hhcmVkLT5udWxsc19ub3RfZGlzdGluY3QgPSBidHNwb29sLT5udWxsc19u b3RfZGlzdGluY3Q7CisJYnRzaGFyZWQtPnVuaXF1ZV9kZWFkX2lnbm9yZWQgPSBidHNwb29sLT51 bmlxdWVfZGVhZF9pZ25vcmVkOwogCWJ0c2hhcmVkLT5pc2NvbmN1cnJlbnQgPSBpc2NvbmN1cnJl bnQ7CiAJYnRzaGFyZWQtPnNjYW50dXBsZXNvcnRzdGF0ZXMgPSBzY2FudHVwbGVzb3J0c3RhdGVz OwogCWJ0c2hhcmVkLT5xdWVyeWlkID0gcGdzdGF0X2dldF9teV9xdWVyeV9pZCgpOwpAQCAtMTU1 MCw3ICsxNjUzLDcgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0 ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCXRhYmxlX3BhcmFsbGVsc2Nhbl9p bml0aWFsaXplKGJ0c3Bvb2wtPmhlYXAsCiAJCQkJCQkJCSAgUGFyYWxsZWxUYWJsZVNjYW5Gcm9t QlRTaGFyZWQoYnRzaGFyZWQpLAogCQkJCQkJCQkgIHNuYXBzaG90LAotCQkJCQkJCQkgIHJlc2V0 X3NuYXBzaG90KTsKKwkJCQkJCQkJICBpc2NvbmN1cnJlbnQpOwogCiAJLyoKIAkgKiBTdG9yZSBz aGFyZWQgdHVwbGVzb3J0LXByaXZhdGUgc3RhdGUsIGZvciB3aGljaCB3ZSByZXNlcnZlZCBzcGFj ZS4KQEAgLTE2MzAsNyArMTczMyw3IEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUg KmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAkgKiBJbiBjYXNl IG9mIGNvbmN1cnJlbnQgYnVpbGQgc25hcHNob3RzIGFyZSBnb2luZyB0byBiZSByZXNldCBwZXJp b2RpY2FsbHkuCiAJICogV2FpdCB1bnRpbCBhbGwgd29ya2VycyBpbXBvcnRlZCBpbml0aWFsIHNu YXBzaG90LgogCSAqLwotCWlmIChyZXNldF9zbmFwc2hvdCkKKwlpZiAoaXNjb25jdXJyZW50KQog CQlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCwgdHJ1ZSk7CiAKIAkvKiBKb2lu IGhlYXAgc2NhbiBvdXJzZWx2ZXMgKi8KQEAgLTE2NDEsNyArMTc0NCw3IEBAIF9idF9iZWdpbl9w YXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQg cmVxdWVzdCkKIAkgKiBDYWxsZXIgbmVlZHMgdG8gd2FpdCBmb3IgYWxsIGxhdW5jaGVkIHdvcmtl cnMgd2hlbiB3ZSByZXR1cm4uICBNYWtlCiAJICogc3VyZSB0aGF0IHRoZSBmYWlsdXJlLXRvLXN0 YXJ0IGNhc2Ugd2lsbCBub3QgaGFuZyBmb3JldmVyLgogCSAqLwotCWlmICghcmVzZXRfc25hcHNo b3QpCisJaWYgKCFpc2NvbmN1cnJlbnQpCiAJCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFj aChwY3h0LCBmYWxzZSk7CiAJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKIAkJUG9wQWN0 aXZlU25hcHNob3QoKTsKQEAgLTE3NDQsNiArMTg0Nyw3IEBAIF9idF9sZWFkZXJfcGFydGljaXBh dGVfYXNfd29ya2VyKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSkKIAlsZWFkZXJ3b3JrZXItPmlu ZGV4ID0gYnVpbGRzdGF0ZS0+c3Bvb2wtPmluZGV4OwogCWxlYWRlcndvcmtlci0+aXN1bmlxdWUg PSBidWlsZHN0YXRlLT5zcG9vbC0+aXN1bmlxdWU7CiAJbGVhZGVyd29ya2VyLT5udWxsc19ub3Rf ZGlzdGluY3QgPSBidWlsZHN0YXRlLT5zcG9vbC0+bnVsbHNfbm90X2Rpc3RpbmN0OworCWxlYWRl cndvcmtlci0+dW5pcXVlX2RlYWRfaWdub3JlZCA9IGJ1aWxkc3RhdGUtPnNwb29sLT51bmlxdWVf ZGVhZF9pZ25vcmVkOwogCiAJLyogSW5pdGlhbGl6ZSBzZWNvbmQgc3Bvb2wsIGlmIHJlcXVpcmVk ICovCiAJaWYgKCFidGxlYWRlci0+YnRzaGFyZWQtPmlzdW5pcXVlKQpAQCAtMTg0NywxMSArMTk1 MSwxMiBAQCBfYnRfcGFyYWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9j ICp0b2MpCiAJYnRzcG9vbC0+aW5kZXggPSBpbmRleFJlbDsKIAlidHNwb29sLT5pc3VuaXF1ZSA9 IGJ0c2hhcmVkLT5pc3VuaXF1ZTsKIAlidHNwb29sLT5udWxsc19ub3RfZGlzdGluY3QgPSBidHNo YXJlZC0+bnVsbHNfbm90X2Rpc3RpbmN0OworCWJ0c3Bvb2wtPnVuaXF1ZV9kZWFkX2lnbm9yZWQg PSBidHNoYXJlZC0+dW5pcXVlX2RlYWRfaWdub3JlZDsKIAogCS8qIExvb2sgdXAgc2hhcmVkIHN0 YXRlIHByaXZhdGUgdG8gdHVwbGVzb3J0LmMgKi8KIAlzaGFyZWRzb3J0ID0gc2htX3RvY19sb29r dXAodG9jLCBQQVJBTExFTF9LRVlfVFVQTEVTT1JULCBmYWxzZSk7CiAJdHVwbGVzb3J0X2F0dGFj aF9zaGFyZWQoc2hhcmVkc29ydCwgc2VnKTsKLQlpZiAoIWJ0c2hhcmVkLT5pc3VuaXF1ZSkKKwlp ZiAoIWJ0c2hhcmVkLT5pc3VuaXF1ZSB8fCBidHNoYXJlZC0+aXNjb25jdXJyZW50KQogCXsKIAkJ YnRzcG9vbDIgPSBOVUxMOwogCQlzaGFyZWRzb3J0MiA9IE5VTEw7CkBAIC0xOTMxLDYgKzIwMzYs NyBAQCBfYnRfcGFyYWxsZWxfc2Nhbl9hbmRfc29ydChCVFNwb29sICpidHNwb29sLCBCVFNwb29s ICpidHNwb29sMiwKIAkJCQkJCQkJCQkJCQkgYnRzcG9vbC0+aW5kZXgsCiAJCQkJCQkJCQkJCQkJ IGJ0c3Bvb2wtPmlzdW5pcXVlLAogCQkJCQkJCQkJCQkJCSBidHNwb29sLT5udWxsc19ub3RfZGlz dGluY3QsCisJCQkJCQkJCQkJCQkJIGJ0c3Bvb2wtPnVuaXF1ZV9kZWFkX2lnbm9yZWQsCiAJCQkJ CQkJCQkJCQkJIHNvcnRtZW0sIGNvb3JkaW5hdGUsCiAJCQkJCQkJCQkJCQkJIFRVUExFU09SVF9O T05FKTsKIApAQCAtMTk1MywxNCArMjA1OSwxMiBAQCBfYnRfcGFyYWxsZWxfc2Nhbl9hbmRfc29y dChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMiwKIAkJY29vcmRpbmF0ZTItPm5Q YXJ0aWNpcGFudHMgPSAtMTsKIAkJY29vcmRpbmF0ZTItPnNoYXJlZHNvcnQgPSBzaGFyZWRzb3J0 MjsKIAkJYnRzcG9vbDItPnNvcnRzdGF0ZSA9Ci0JCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRy ZWUoYnRzcG9vbC0+aGVhcCwgYnRzcG9vbC0+aW5kZXgsIGZhbHNlLCBmYWxzZSwKKwkJCXR1cGxl c29ydF9iZWdpbl9pbmRleF9idHJlZShidHNwb29sLT5oZWFwLCBidHNwb29sLT5pbmRleCwgZmFs c2UsIGZhbHNlLCBmYWxzZSwKIAkJCQkJCQkJCQlNaW4oc29ydG1lbSwgd29ya19tZW0pLCBjb29y ZGluYXRlMiwKIAkJCQkJCQkJCQlmYWxzZSk7CiAJfQogCiAJLyogRmlsbCBpbiBidWlsZHN0YXRl IGZvciBfYnRfYnVpbGRfY2FsbGJhY2soKSAqLwotCWJ1aWxkc3RhdGUuaXN1bmlxdWUgPSBidHNo YXJlZC0+aXN1bmlxdWU7Ci0JYnVpbGRzdGF0ZS5udWxsc19ub3RfZGlzdGluY3QgPSBidHNoYXJl ZC0+bnVsbHNfbm90X2Rpc3RpbmN0OwogCWJ1aWxkc3RhdGUuaGF2ZWRlYWQgPSBmYWxzZTsKIAli dWlsZHN0YXRlLmhlYXAgPSBidHNwb29sLT5oZWFwOwogCWJ1aWxkc3RhdGUuc3Bvb2wgPSBidHNw b29sOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzcGxpdGxvYy5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzcGxpdGxvYy5jCmluZGV4IGU2YzlhYWEw NDU0Li43Y2IxZjNlMWJjNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnRzcGxpdGxvYy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c3BsaXRsb2Mu YwpAQCAtNjg3LDcgKzY4Nyw3IEBAIF9idF9hZnRlcm5ld2l0ZW1vZmYoRmluZFNwbGl0RGF0YSAq c3RhdGUsIE9mZnNldE51bWJlciBtYXhvZmYsCiAJewogCQlpdGVtaWQgPSBQYWdlR2V0SXRlbUlk KHN0YXRlLT5vcmlncGFnZSwgbWF4b2ZmKTsKIAkJdHVwID0gKEluZGV4VHVwbGUpIFBhZ2VHZXRJ dGVtKHN0YXRlLT5vcmlncGFnZSwgaXRlbWlkKTsKLQkJa2VlcG5hdHRzID0gX2J0X2tlZXBfbmF0 dHNfZmFzdChzdGF0ZS0+cmVsLCB0dXAsIHN0YXRlLT5uZXdpdGVtKTsKKwkJa2VlcG5hdHRzID0g X2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVsLCB0dXAsIHN0YXRlLT5uZXdpdGVtLCBOVUxM KTsKIAogCQlpZiAoa2VlcG5hdHRzID4gMSAmJiBrZWVwbmF0dHMgPD0gbmtleWF0dHMpCiAJCXsK QEAgLTcxOCw3ICs3MTgsNyBAQCBfYnRfYWZ0ZXJuZXdpdGVtb2ZmKEZpbmRTcGxpdERhdGEgKnN0 YXRlLCBPZmZzZXROdW1iZXIgbWF4b2ZmLAogCQkhX2J0X2FkamFjZW50aHRpZCgmdHVwLT50X3Rp ZCwgJnN0YXRlLT5uZXdpdGVtLT50X3RpZCkpCiAJCXJldHVybiBmYWxzZTsKIAkvKiBDaGVjayBz YW1lIGNvbmRpdGlvbnMgYXMgcmlnaHRtb3N0IGl0ZW0gY2FzZSwgdG9vICovCi0Ja2VlcG5hdHRz ID0gX2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVsLCB0dXAsIHN0YXRlLT5uZXdpdGVtKTsK KwlrZWVwbmF0dHMgPSBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRlLT5yZWwsIHR1cCwgc3RhdGUt Pm5ld2l0ZW0sIE5VTEwpOwogCiAJaWYgKGtlZXBuYXR0cyA+IDEgJiYga2VlcG5hdHRzIDw9IG5r ZXlhdHRzKQogCXsKQEAgLTk2Nyw3ICs5NjcsNyBAQCBfYnRfc3RyYXRlZ3koRmluZFNwbGl0RGF0 YSAqc3RhdGUsIFNwbGl0UG9pbnQgKmxlZnRwYWdlLAogCSAqIGF2b2lkIGFwcGVuZGluZyBhIGhl YXAgVElEIGluIG5ldyBoaWdoIGtleSwgd2UncmUgZG9uZS4gIEZpbmlzaCBzcGxpdAogCSAqIHdp dGggZGVmYXVsdCBzdHJhdGVneSBhbmQgaW5pdGlhbCBzcGxpdCBpbnRlcnZhbC4KIAkgKi8KLQlw ZXJmZWN0cGVuYWx0eSA9IF9idF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwgbGVmdG1vc3Qs IHJpZ2h0bW9zdCk7CisJcGVyZmVjdHBlbmFsdHkgPSBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRl LT5yZWwsIGxlZnRtb3N0LCByaWdodG1vc3QsIE5VTEwpOwogCWlmIChwZXJmZWN0cGVuYWx0eSA8 PSBpbmRua2V5YXR0cykKIAkJcmV0dXJuIHBlcmZlY3RwZW5hbHR5OwogCkBAIC05ODgsNyArOTg4 LDcgQEAgX2J0X3N0cmF0ZWd5KEZpbmRTcGxpdERhdGEgKnN0YXRlLCBTcGxpdFBvaW50ICpsZWZ0 cGFnZSwKIAkgKiBJZiBwYWdlIGlzIGVudGlyZWx5IGZ1bGwgb2YgZHVwbGljYXRlcywgYSBzaW5n bGUgdmFsdWUgc3RyYXRlZ3kgc3BsaXQKIAkgKiB3aWxsIGJlIHBlcmZvcm1lZC4KIAkgKi8KLQlw ZXJmZWN0cGVuYWx0eSA9IF9idF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwgbGVmdG1vc3Qs IHJpZ2h0bW9zdCk7CisJcGVyZmVjdHBlbmFsdHkgPSBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRl LT5yZWwsIGxlZnRtb3N0LCByaWdodG1vc3QsIE5VTEwpOwogCWlmIChwZXJmZWN0cGVuYWx0eSA8 PSBpbmRua2V5YXR0cykKIAl7CiAJCSpzdHJhdGVneSA9IFNQTElUX01BTllfRFVQTElDQVRFUzsK QEAgLTEwMjcsNyArMTAyNyw3IEBAIF9idF9zdHJhdGVneShGaW5kU3BsaXREYXRhICpzdGF0ZSwg U3BsaXRQb2ludCAqbGVmdHBhZ2UsCiAJCWl0ZW1pZCA9IFBhZ2VHZXRJdGVtSWQoc3RhdGUtPm9y aWdwYWdlLCBQX0hJS0VZKTsKIAkJaGlrZXkgPSAoSW5kZXhUdXBsZSkgUGFnZUdldEl0ZW0oc3Rh dGUtPm9yaWdwYWdlLCBpdGVtaWQpOwogCQlwZXJmZWN0cGVuYWx0eSA9IF9idF9rZWVwX25hdHRz X2Zhc3Qoc3RhdGUtPnJlbCwgaGlrZXksCi0JCQkJCQkJCQkJCSBzdGF0ZS0+bmV3aXRlbSk7CisJ CQkJCQkJCQkJCSBzdGF0ZS0+bmV3aXRlbSwgTlVMTCk7CiAJCWlmIChwZXJmZWN0cGVuYWx0eSA8 PSBpbmRua2V5YXR0cykKIAkJCSpzdHJhdGVneSA9IFNQTElUX1NJTkdMRV9WQUxVRTsKIAkJZWxz ZQpAQCAtMTE0OSw3ICsxMTQ5LDcgQEAgX2J0X3NwbGl0X3BlbmFsdHkoRmluZFNwbGl0RGF0YSAq c3RhdGUsIFNwbGl0UG9pbnQgKnNwbGl0KQogCWxhc3RsZWZ0ID0gX2J0X3NwbGl0X2xhc3RsZWZ0 KHN0YXRlLCBzcGxpdCk7CiAJZmlyc3RyaWdodCA9IF9idF9zcGxpdF9maXJzdHJpZ2h0KHN0YXRl LCBzcGxpdCk7CiAKLQlyZXR1cm4gX2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVsLCBsYXN0 bGVmdCwgZmlyc3RyaWdodCk7CisJcmV0dXJuIF9idF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJl bCwgbGFzdGxlZnQsIGZpcnN0cmlnaHQsIE5VTEwpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR1dGlscy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25i dHJlZS9uYnR1dGlscy5jCmluZGV4IDllMjczMDJmZTgxLi44ZDdmNTkwNWZjMiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9uYnRyZWUvbmJ0dXRpbHMuYwpAQCAtNjYsOCArNjYsNiBAQCBzdGF0aWMgYm9vbCBf YnRfY2hlY2tfcm93Y29tcGFyZShTY2FuS2V5IHNrZXksCiAJCQkJCQkJCSBTY2FuRGlyZWN0aW9u IGRpciwgYm9vbCBmb3JjZW5vbnJlcXVpcmVkLCBib29sICpjb250aW51ZXNjYW4pOwogc3RhdGlj IHZvaWQgX2J0X2NoZWNra2V5c19sb29rX2FoZWFkKEluZGV4U2NhbkRlc2Mgc2NhbiwgQlRSZWFk UGFnZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQkgaW50IHR1cG5hdHRzLCBUdXBsZURlc2MgdHVw ZGVzYyk7Ci1zdGF0aWMgaW50CV9idF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBs ZSBsYXN0bGVmdCwKLQkJCQkJCSAgIEluZGV4VHVwbGUgZmlyc3RyaWdodCwgQlRTY2FuSW5zZXJ0 IGl0dXBfa2V5KTsKIAogCiAvKgpAQCAtMjUxNSw3ICsyNTEzLDcgQEAgX2J0X3NldF9zdGFydGlr ZXkoSW5kZXhTY2FuRGVzYyBzY2FuLCBCVFJlYWRQYWdlU3RhdGUgKnBzdGF0ZSkKIAlsYXN0dHVw ID0gKEluZGV4VHVwbGUpIFBhZ2VHZXRJdGVtKHBzdGF0ZS0+cGFnZSwgaWlkKTsKIAogCS8qIERl dGVybWluZSB0aGUgZmlyc3QgYXR0cmlidXRlIHdob3NlIHZhbHVlcyBjaGFuZ2Ugb24gY2FsbGVy J3MgcGFnZSAqLwotCWZpcnN0Y2hhbmdpbmdhdHRudW0gPSBfYnRfa2VlcF9uYXR0c19mYXN0KHJl bCwgZmlyc3R0dXAsIGxhc3R0dXApOworCWZpcnN0Y2hhbmdpbmdhdHRudW0gPSBfYnRfa2VlcF9u YXR0c19mYXN0KHJlbCwgZmlyc3R0dXAsIGxhc3R0dXAsIE5VTEwpOwogCiAJZm9yICg7IHN0YXJ0 aWtleSA8IHNvLT5udW1iZXJPZktleXM7IHN0YXJ0aWtleSsrKQogCXsKQEAgLTM4MDUsNyArMzgw Myw3IEBAIF9idF90cnVuY2F0ZShSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsIElu ZGV4VHVwbGUgZmlyc3RyaWdodCwKIAlBc3NlcnQoIUJUcmVlVHVwbGVJc1Bpdm90KGxhc3RsZWZ0 KSAmJiAhQlRyZWVUdXBsZUlzUGl2b3QoZmlyc3RyaWdodCkpOwogCiAJLyogRGV0ZXJtaW5lIGhv dyBtYW55IGF0dHJpYnV0ZXMgbXVzdCBiZSBrZXB0IGluIHRydW5jYXRlZCB0dXBsZSAqLwotCWtl ZXBuYXR0cyA9IF9idF9rZWVwX25hdHRzKHJlbCwgbGFzdGxlZnQsIGZpcnN0cmlnaHQsIGl0dXBf a2V5KTsKKwlrZWVwbmF0dHMgPSBfYnRfa2VlcF9uYXR0cyhyZWwsIGxhc3RsZWZ0LCBmaXJzdHJp Z2h0LCBpdHVwX2tleSwgTlVMTCk7CiAKICNpZmRlZiBERUJVR19OT19UUlVOQ0FURQogCS8qIEZv cmNlIHRydW5jYXRpb24gdG8gYmUgaW5lZmZlY3RpdmUgZm9yIHRlc3RpbmcgcHVycG9zZXMgKi8K QEAgLTM5MjMsMTcgKzM5MjEsMjQgQEAgX2J0X3RydW5jYXRlKFJlbGF0aW9uIHJlbCwgSW5kZXhU dXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LAogLyoKICAqIF9idF9rZWVwX25h dHRzIC0gaG93IG1hbnkga2V5IGF0dHJpYnV0ZXMgdG8ga2VlcCB3aGVuIHRydW5jYXRpbmcuCiAg KgorICogVGhpcyBpcyBleHBvcnRlZCB0byBiZSB1c2VkIGFzIGNvbXBhcmlzb24gZnVuY3Rpb24g ZHVyaW5nIGNvbmN1cnJlbnQKKyAqIHVuaXF1ZSBpbmRleCBidWlsZCBpbiBjYXNlIF9idF9rZWVw X25hdHRzX2Zhc3QgaXMgbm90IHN1aXRhYmxlIGJlY2F1c2UKKyAqIGNvbGxhdGlvbiBpcyBub3Qg ImFsbGVxdWFsaW1hZ2UiL2RlZHVwbGljYXRpb24tc2FmZS4KKyAqCiAgKiBDYWxsZXIgcHJvdmlk ZXMgdHdvIHR1cGxlcyB0aGF0IGVuY2xvc2UgYSBzcGxpdCBwb2ludC4gIENhbGxlcidzIGluc2Vy dGlvbgogICogc2NhbmtleSBpcyB1c2VkIHRvIGNvbXBhcmUgdGhlIHR1cGxlczsgdGhlIHNjYW5r ZXkncyBhcmd1bWVudCB2YWx1ZXMgYXJlCiAgKiBub3QgY29uc2lkZXJlZCBoZXJlLgogICoKKyAq IGhhc251bGxzIHZhbHVlIHNldCB0byB0cnVlIGluIGNhc2Ugb2YgYW55IG51bGwgY29sdW1uIGlu IGFueSB0dXBsZS4KKyAqCiAgKiBUaGlzIGNhbiByZXR1cm4gYSBudW1iZXIgb2YgYXR0cmlidXRl cyB0aGF0IGlzIG9uZSBncmVhdGVyIHRoYW4gdGhlCiAgKiBudW1iZXIgb2Yga2V5IGF0dHJpYnV0 ZXMgZm9yIHRoZSBpbmRleCByZWxhdGlvbi4gIFRoaXMgaW5kaWNhdGVzIHRoYXQgdGhlCiAgKiBj YWxsZXIgbXVzdCB1c2UgYSBoZWFwIFRJRCBhcyBhIHVuaXF1ZS1pZmllciBpbiBuZXcgcGl2b3Qg dHVwbGUuCiAgKi8KLXN0YXRpYyBpbnQKK2ludAogX2J0X2tlZXBfbmF0dHMoUmVsYXRpb24gcmVs LCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQsCi0JCQkgICBCVFNj YW5JbnNlcnQgaXR1cF9rZXkpCisJCQkgICBCVFNjYW5JbnNlcnQgaXR1cF9rZXksCisJCQkgICBi b29sICpoYXNudWxscykKIHsKIAlpbnQJCQlua2V5YXR0cyA9IEluZGV4UmVsYXRpb25HZXROdW1i ZXJPZktleUF0dHJpYnV0ZXMocmVsKTsKIAlUdXBsZURlc2MJaXR1cGRlc2MgPSBSZWxhdGlvbkdl dERlc2NyKHJlbCk7CkBAIC0zOTU5LDYgKzM5NjQsOCBAQCBfYnRfa2VlcF9uYXR0cyhSZWxhdGlv biByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdodCwKIAogCQlk YXR1bTEgPSBpbmRleF9nZXRhdHRyKGxhc3RsZWZ0LCBhdHRudW0sIGl0dXBkZXNjLCAmaXNOdWxs MSk7CiAJCWRhdHVtMiA9IGluZGV4X2dldGF0dHIoZmlyc3RyaWdodCwgYXR0bnVtLCBpdHVwZGVz YywgJmlzTnVsbDIpOworCQlpZiAoaGFzbnVsbHMpCisJCQkoKmhhc251bGxzKSB8PSAoaXNOdWxs MSB8fCBpc051bGwyKTsKIAogCQlpZiAoaXNOdWxsMSAhPSBpc051bGwyKQogCQkJYnJlYWs7CkBA IC0zOTc4LDcgKzM5ODUsNyBAQCBfYnRfa2VlcF9uYXR0cyhSZWxhdGlvbiByZWwsIEluZGV4VHVw bGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdodCwKIAkgKiBleHBlY3RlZCBpbiBhbiBh bGxlcXVhbGltYWdlIGluZGV4LgogCSAqLwogCUFzc2VydCghaXR1cF9rZXktPmFsbGVxdWFsaW1h Z2UgfHwKLQkJICAga2VlcG5hdHRzID09IF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBsYXN0bGVm dCwgZmlyc3RyaWdodCkpOworCQkgICBrZWVwbmF0dHMgPT0gX2J0X2tlZXBfbmF0dHNfZmFzdChy ZWwsIGxhc3RsZWZ0LCBmaXJzdHJpZ2h0LCBOVUxMKSk7CiAKIAlyZXR1cm4ga2VlcG5hdHRzOwog fQpAQCAtMzk4OSw3ICszOTk2LDggQEAgX2J0X2tlZXBfbmF0dHMoUmVsYXRpb24gcmVsLCBJbmRl eFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQsCiAgKiBUaGlzIGlzIGV4cG9y dGVkIHNvIHRoYXQgYSBjYW5kaWRhdGUgc3BsaXQgcG9pbnQgY2FuIGhhdmUgaXRzIGVmZmVjdCBv bgogICogc3VmZml4IHRydW5jYXRpb24gaW5leHBlbnNpdmVseSBldmFsdWF0ZWQgYWhlYWQgb2Yg dGltZSB3aGVuIGZpbmRpbmcgYQogICogc3BsaXQgbG9jYXRpb24uICBBIG5haXZlIGJpdHdpc2Ug YXBwcm9hY2ggdG8gZGF0dW0gY29tcGFyaXNvbnMgaXMgdXNlZCB0bwotICogc2F2ZSBjeWNsZXMu CisgKiBzYXZlIGN5Y2xlcy4gQWxzbywgaXQgbWF5IGJlIHVzZWQgYXMgY29tcGFyaXNvbiBmdW5j dGlvbiBkdXJpbmcgY29uY3VycmVudAorICogYnVpbGQgb2YgdW5pcXVlIGluZGV4LgogICoKICAq IFRoZSBhcHByb2FjaCB0YWtlbiBoZXJlIHVzdWFsbHkgcHJvdmlkZXMgdGhlIHNhbWUgYW5zd2Vy IGFzIF9idF9rZWVwX25hdHRzCiAgKiB3aWxsIChmb3IgdGhlIHNhbWUgcGFpciBvZiB0dXBsZXMg ZnJvbSBhIGhlYXBrZXlzcGFjZSBpbmRleCksIHNpbmNlIHRoZQpAQCAtMzk5OCw2ICs0MDA2LDgg QEAgX2J0X2tlZXBfbmF0dHMoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRl eFR1cGxlIGZpcnN0cmlnaHQsCiAgKiAiZXF1YWwgaW1hZ2UiIGNvbHVtbnMsIHJvdXRpbmUgaXMg Z3VhcmFudGVlZCB0byBnaXZlIHRoZSBzYW1lIHJlc3VsdCBhcwogICogX2J0X2tlZXBfbmF0dHMg d291bGQuCiAgKgorICogaGFzbnVsbHMgdmFsdWUgc2V0IHRvIHRydWUgaW4gY2FzZSBvZiBhbnkg bnVsbCBjb2x1bW4gaW4gYW55IHR1cGxlLgorICoKICAqIENhbGxlcnMgY2FuIHJlbHkgb24gdGhl IGZhY3QgdGhhdCBhdHRyaWJ1dGVzIGNvbnNpZGVyZWQgZXF1YWwgaGVyZSBhcmUKICAqIGRlZmlu aXRlbHkgYWxzbyBlcXVhbCBhY2NvcmRpbmcgdG8gX2J0X2tlZXBfbmF0dHMsIGV2ZW4gd2hlbiB0 aGUgaW5kZXggdXNlcwogICogYW4gb3BjbGFzcyBvciBjb2xsYXRpb24gdGhhdCBpcyBub3QgImFs bGVxdWFsaW1hZ2UiL2RlZHVwbGljYXRpb24tc2FmZS4KQEAgLTQwMDYsNyArNDAxNiw4IEBAIF9i dF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBs ZSBmaXJzdHJpZ2h0LAogICogbW9yZSBiYWxhbmNlZCBzcGxpdCBwb2ludC4KICAqLwogaW50Ci1f YnRfa2VlcF9uYXR0c19mYXN0KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5k ZXhUdXBsZSBmaXJzdHJpZ2h0KQorX2J0X2tlZXBfbmF0dHNfZmFzdChSZWxhdGlvbiByZWwsIElu ZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdodCwKKwkJCQkJYm9vbCAqaGFz bnVsbHMpCiB7CiAJVHVwbGVEZXNjCWl0dXBkZXNjID0gUmVsYXRpb25HZXREZXNjcihyZWwpOwog CWludAkJCWtleXN6ID0gSW5kZXhSZWxhdGlvbkdldE51bWJlck9mS2V5QXR0cmlidXRlcyhyZWwp OwpAQCAtNDAyMyw2ICs0MDM0LDggQEAgX2J0X2tlZXBfbmF0dHNfZmFzdChSZWxhdGlvbiByZWws IEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdodCkKIAogCQlkYXR1bTEg PSBpbmRleF9nZXRhdHRyKGxhc3RsZWZ0LCBhdHRudW0sIGl0dXBkZXNjLCAmaXNOdWxsMSk7CiAJ CWRhdHVtMiA9IGluZGV4X2dldGF0dHIoZmlyc3RyaWdodCwgYXR0bnVtLCBpdHVwZGVzYywgJmlz TnVsbDIpOworCQlpZiAoaGFzbnVsbHMpCisJCQkqaGFzbnVsbHMgfD0gKGlzTnVsbDEgfCBpc051 bGwyKTsKIAkJYXR0ID0gVHVwbGVEZXNjQ29tcGFjdEF0dHIoaXR1cGRlc2MsIGF0dG51bSAtIDEp OwogCiAJCWlmIChpc051bGwxICE9IGlzTnVsbDIpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j YXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5kZXggNjQzMmVm NTVjZGMuLmNjYTFkYmI4ZTM3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4 LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCkBAIC0xNTMyLDcgKzE1MzIsNyBA QCBpbmRleF9jb25jdXJyZW50bHlfYnVpbGQoT2lkIGhlYXBSZWxhdGlvbklkLAogCiAJLyogSW52 YWxpZGF0ZSBjYXRhbG9nIHNuYXBzaG90IGp1c3QgZm9yIGFzc2VydCAqLwogCUludmFsaWRhdGVD YXRhbG9nU25hcHNob3QoKTsKLQlBc3NlcnQoaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwgIVRyYW5z YWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCUFzc2VydCghVHJhbnNhY3Rpb25JZElz VmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkvKiBSb2xsIGJhY2sgYW55IEdVQyBjaGFuZ2VzIGV4 ZWN1dGVkIGJ5IGluZGV4IGZ1bmN0aW9ucyAqLwogCUF0RU9YYWN0X0dVQyhmYWxzZSwgc2F2ZV9u ZXN0bGV2ZWwpOwpAQCAtMzMyMyw5ICszMzIzLDkgQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxh dGlvbiBoZWFwUmVsYXRpb24sCiAgKiBpZiB3ZSB1c2VkIEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1 bSkuICBUaGlzIGxlYXZlcyB1cyB3aXRoIGFuIGluZGV4IHRoYXQKICAqIGRvZXMgbm90IGNvbnRh aW4gYW55IHR1cGxlcyBhZGRlZCB0byB0aGUgdGFibGUgd2hpbGUgd2UgYnVpbHQgdGhlIGluZGV4 LgogICoKLSAqIEZ1cnRoZXJtb3JlLCBpbiBjYXNlIG9mIG5vbi11bmlxdWUgaW5kZXggd2Ugc2V0 IFNPX1JFU0VUX1NOQVBTSE9UIGZvciB0aGUKLSAqIHNjYW4sIHdoaWNoIGNhdXNlcyBuZXcgc25h cHNob3QgdG8gYmUgc2V0IGFzIGFjdGl2ZSBldmVyeSBzbyBvZnRlbi4gVGhlIHJlYXNvbgotICog Zm9yIHRoYXQgaXMgdG8gcHJvcGFnYXRlIHRoZSB4bWluIGhvcml6b24gZm9yd2FyZC4KKyAqIEZ1 cnRoZXJtb3JlLCB3ZSBzZXQgU09fUkVTRVRfU05BUFNIT1QgZm9yIHRoZSBzY2FuLCB3aGljaCBj YXVzZXMgbmV3CisgKiBzbmFwc2hvdCB0byBiZSBzZXQgYXMgYWN0aXZlIGV2ZXJ5IHNvIG9mdGVu LiBUaGUgcmVhc29uICBmb3IgdGhhdCBpcyB0bworICogcHJvcGFnYXRlIHRoZSB4bWluIGhvcml6 b24gZm9yd2FyZC4KICAqCiAgKiBOZXh0LCB3ZSBtYXJrIHRoZSBpbmRleCAiaW5kaXNyZWFkeSIg KGJ1dCBzdGlsbCBub3QgImluZGlzdmFsaWQiKSBhbmQKICAqIGNvbW1pdCB0aGUgc2Vjb25kIHRy YW5zYWN0aW9uIGFuZCBzdGFydCBhIHRoaXJkLiAgQWdhaW4gd2Ugd2FpdCBmb3IgYWxsCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2luZGV4Y21kcy5jCmluZGV4IGQ2ODc2NDZlZmVkLi43NzhkOTUyOGMyNSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvaW5kZXhjbWRzLmMKQEAgLTE2OTQsOCArMTY5NCw4IEBAIERlZmluZUluZGV4KE9p ZCB0YWJsZUlkLAogCSAqIGNoYWlucyBjYW4gYmUgY3JlYXRlZCB3aGVyZSB0aGUgbmV3IHR1cGxl IGFuZCB0aGUgb2xkIHR1cGxlIGluIHRoZQogCSAqIGNoYWluIGhhdmUgZGlmZmVyZW50IGluZGV4 IGtleXMuCiAJICoKLQkgKiBXZSBidWlsZCB0aGUgaW5kZXggdXNpbmcgYWxsIHR1cGxlcyB0aGF0 IGFyZSB2aXNpYmxlIHVzaW5nIHNpbmdsZSBvcgotCSAqIG11bHRpcGxlIHJlZnJlc2hpbmcgc25h cHNob3RzLiBXZSBjYW4gYmUgc3VyZSB0aGF0IGFueSBIT1QgdXBkYXRlcyB0bworCSAqIFdlIGJ1 aWxkIHRoZSBpbmRleCB1c2luZyBhbGwgdHVwbGVzIHRoYXQgYXJlIHZpc2libGUgdXNpbmcgbXVs dGlwbGUKKwkgKiByZWZyZXNoaW5nIHNuYXBzaG90cy4gV2UgY2FuIGJlIHN1cmUgdGhhdCBhbnkg SE9UIHVwZGF0ZXMgdG8KIAkgKiB0aGVzZSB0dXBsZXMgd2lsbCBiZSBjb21wYXRpYmxlIHdpdGgg dGhlIGluZGV4LCBzaW5jZSBhbnkgdXBkYXRlcyBtYWRlCiAJICogYnkgdHJhbnNhY3Rpb25zIHRo YXQgZGlkbid0IGtub3cgYWJvdXQgdGhlIGluZGV4IGFyZSBub3cgY29tbWl0dGVkIG9yCiAJICog cm9sbGVkIGJhY2suICBUaHVzLCBlYWNoIHZpc2libGUgdHVwbGUgaXMgZWl0aGVyIHRoZSBlbmQg b2YgaXRzCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29ydHZhcmlh bnRzLmMgYi9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29ydHZhcmlhbnRzLmMKaW5kZXgg NWY3MGU4ZGRkYWMuLjcxYTVjMjFlMGRmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9z b3J0L3R1cGxlc29ydHZhcmlhbnRzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBs ZXNvcnR2YXJpYW50cy5jCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgi CiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvdHVwbGVzb3J0 LmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAKIAogLyogc29ydC10eXBlIGNvZGVzIGZv ciBzb3J0X19zdGFydCBwcm9iZXMgKi8KQEAgLTEzMyw2ICsxMzQsNyBAQCB0eXBlZGVmIHN0cnVj dAogCiAJYm9vbAkJZW5mb3JjZVVuaXF1ZTsJLyogY29tcGxhaW4gaWYgd2UgZmluZCBkdXBsaWNh dGUgdHVwbGVzICovCiAJYm9vbAkJdW5pcXVlTnVsbHNOb3REaXN0aW5jdDsgLyogdW5pcXVlIGNv bnN0cmFpbnQgbnVsbCB0cmVhdG1lbnQgKi8KKwlib29sCQl1bmlxdWVEZWFkSWdub3JlZDsgLyog aWdub3JlIGRlYWQgdHVwbGVzIGluIHVuaXF1ZSBjaGVjayAqLwogfSBUdXBsZXNvcnRJbmRleEJU cmVlQXJnOwogCiAvKgpAQCAtMzU4LDYgKzM2MCw3IEBAIHR1cGxlc29ydF9iZWdpbl9pbmRleF9i dHJlZShSZWxhdGlvbiBoZWFwUmVsLAogCQkJCQkJCVJlbGF0aW9uIGluZGV4UmVsLAogCQkJCQkJ CWJvb2wgZW5mb3JjZVVuaXF1ZSwKIAkJCQkJCQlib29sIHVuaXF1ZU51bGxzTm90RGlzdGluY3Qs CisJCQkJCQkJYm9vbCB1bmlxdWVEZWFkSWdub3JlZCwKIAkJCQkJCQlpbnQgd29ya01lbSwKIAkJ CQkJCQlTb3J0Q29vcmRpbmF0ZSBjb29yZGluYXRlLAogCQkJCQkJCWludCBzb3J0b3B0KQpAQCAt NDAwLDYgKzQwMyw3IEBAIHR1cGxlc29ydF9iZWdpbl9pbmRleF9idHJlZShSZWxhdGlvbiBoZWFw UmVsLAogCWFyZy0+aW5kZXguaW5kZXhSZWwgPSBpbmRleFJlbDsKIAlhcmctPmVuZm9yY2VVbmlx dWUgPSBlbmZvcmNlVW5pcXVlOwogCWFyZy0+dW5pcXVlTnVsbHNOb3REaXN0aW5jdCA9IHVuaXF1 ZU51bGxzTm90RGlzdGluY3Q7CisJYXJnLT51bmlxdWVEZWFkSWdub3JlZCA9IHVuaXF1ZURlYWRJ Z25vcmVkOwogCiAJaW5kZXhTY2FuS2V5ID0gX2J0X21rc2NhbmtleShpbmRleFJlbCwgTlVMTCk7 CiAKQEAgLTE2NTMsNiArMTY1Nyw3IEBAIGNvbXBhcmV0dXBfaW5kZXhfYnRyZWVfdGllYnJlYWso Y29uc3QgU29ydFR1cGxlICphLCBjb25zdCBTb3J0VHVwbGUgKmIsCiAJCURhdHVtCQl2YWx1ZXNb SU5ERVhfTUFYX0tFWVNdOwogCQlib29sCQlpc251bGxbSU5ERVhfTUFYX0tFWVNdOwogCQljaGFy CSAgICprZXlfZGVzYzsKKwkJYm9vbAkJdW5pcXVlQ2hlY2tGYWlsID0gdHJ1ZTsKIAogCQkvKgog CQkgKiBTb21lIHJhdGhlciBicmFpbi1kZWFkIGltcGxlbWVudGF0aW9ucyBvZiBxc29ydCAoc3Vj aCBhcyB0aGUgb25lIGluCkBAIC0xNjYyLDE4ICsxNjY3LDU4IEBAIGNvbXBhcmV0dXBfaW5kZXhf YnRyZWVfdGllYnJlYWsoY29uc3QgU29ydFR1cGxlICphLCBjb25zdCBTb3J0VHVwbGUgKmIsCiAJ CSAqLwogCQlBc3NlcnQodHVwbGUxICE9IHR1cGxlMik7CiAKLQkJaW5kZXhfZGVmb3JtX3R1cGxl KHR1cGxlMSwgdHVwRGVzLCB2YWx1ZXMsIGlzbnVsbCk7Ci0KLQkJa2V5X2Rlc2MgPSBCdWlsZElu ZGV4VmFsdWVEZXNjcmlwdGlvbihhcmctPmluZGV4LmluZGV4UmVsLCB2YWx1ZXMsIGlzbnVsbCk7 Ci0KLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX1VOSVFVRV9WSU9MQVRJ T04pLAotCQkJCSBlcnJtc2coImNvdWxkIG5vdCBjcmVhdGUgdW5pcXVlIGluZGV4IFwiJXNcIiIs Ci0JCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhcmctPmluZGV4LmluZGV4UmVsKSksCi0J CQkJIGtleV9kZXNjID8gZXJyZGV0YWlsKCJLZXkgJXMgaXMgZHVwbGljYXRlZC4iLCBrZXlfZGVz YykgOgotCQkJCSBlcnJkZXRhaWwoIkR1cGxpY2F0ZSBrZXlzIGV4aXN0LiIpLAotCQkJCSBlcnJ0 YWJsZWNvbnN0cmFpbnQoYXJnLT5pbmRleC5oZWFwUmVsLAotCQkJCQkJCQkJUmVsYXRpb25HZXRS ZWxhdGlvbk5hbWUoYXJnLT5pbmRleC5pbmRleFJlbCkpKSk7CisJCS8qIFRoaXMgaXMgZmFpbC1m YXN0IGNoZWNrLCBzZWUgX2J0X2xvYWQgZm9yIGRldGFpbHMuICovCisJCWlmIChhcmctPnVuaXF1 ZURlYWRJZ25vcmVkKQorCQl7CisJCQlib29sCWFueV90dXBsZV9kZWFkLAorCQkJCQljYWxsX2Fn YWluID0gZmFsc2UsCisJCQkJCWlnbm9yZWQ7CisKKwkJCVR1cGxlVGFibGVTbG90CSpzbG90ID0g TWFrZVNpbmdsZVR1cGxlVGFibGVTbG90KFJlbGF0aW9uR2V0RGVzY3IoYXJnLT5pbmRleC5oZWFw UmVsKSwKKwkJCQkJCQkJCQkJCQkJCSAmVFRTT3BzQnVmZmVySGVhcFR1cGxlKTsKKwkJCUl0ZW1Q b2ludGVyRGF0YSB0aWQgPSB0dXBsZTEtPnRfdGlkOworCisJCQlJbmRleEZldGNoVGFibGVEYXRh ICpmZXRjaCA9IHRhYmxlX2luZGV4X2ZldGNoX2JlZ2luKGFyZy0+aW5kZXguaGVhcFJlbCk7CisJ CQlhbnlfdHVwbGVfZGVhZCA9ICF0YWJsZV9pbmRleF9mZXRjaF90dXBsZShmZXRjaCwgJnRpZCwg U25hcHNob3RTZWxmLCBzbG90LCAmY2FsbF9hZ2FpbiwgJmlnbm9yZWQpOworCisJCQlpZiAoIWFu eV90dXBsZV9kZWFkKQorCQkJeworCQkJCWNhbGxfYWdhaW4gPSBmYWxzZTsKKwkJCQl0aWQgPSB0 dXBsZTItPnRfdGlkOworCQkJCWFueV90dXBsZV9kZWFkID0gIXRhYmxlX2luZGV4X2ZldGNoX3R1 cGxlKGZldGNoLCAmdHVwbGUyLT50X3RpZCwgU25hcHNob3RTZWxmLCBzbG90LCAmY2FsbF9hZ2Fp biwKKwkJCQkJCQkJCQkJCQkJICAmaWdub3JlZCk7CisJCQl9CisKKwkJCWlmIChhbnlfdHVwbGVf ZGVhZCkKKwkJCXsKKwkJCQllbG9nKERFQlVHNSwgInNraXBwaW5nIGR1cGxpY2F0ZSB2YWx1ZXMg YmVjYXVzZSBzb21lIG9mIHRoZW0gYXJlIGRlYWQ6ICgldSwldSkgdnMgKCV1LCV1KSIsCisJCQkJ CSBJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKCZ0dXBsZTEtPnRfdGlkKSwKKwkJCQkJIEl0ZW1Q b2ludGVyR2V0T2Zmc2V0TnVtYmVyKCZ0dXBsZTEtPnRfdGlkKSwKKwkJCQkJIEl0ZW1Qb2ludGVy R2V0QmxvY2tOdW1iZXIoJnR1cGxlMi0+dF90aWQpLAorCQkJCQkgSXRlbVBvaW50ZXJHZXRPZmZz ZXROdW1iZXIoJnR1cGxlMi0+dF90aWQpKTsKKworCQkJCXVuaXF1ZUNoZWNrRmFpbCA9IGZhbHNl OworCQkJfQorCQkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKKwkJCXRhYmxl X2luZGV4X2ZldGNoX2VuZChmZXRjaCk7CisJCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlk KE15UHJvYy0+eG1pbikpOworCQl9CisJCWlmICh1bmlxdWVDaGVja0ZhaWwpCisJCXsKKwkJCWlu ZGV4X2RlZm9ybV90dXBsZSh0dXBsZTEsIHR1cERlcywgdmFsdWVzLCBpc251bGwpOworCisJCQlr ZXlfZGVzYyA9IEJ1aWxkSW5kZXhWYWx1ZURlc2NyaXB0aW9uKGFyZy0+aW5kZXguaW5kZXhSZWws IHZhbHVlcywgaXNudWxsKTsKKworCQkJLyoga2VlcCB0aGlzIGVycm9yIG1lc3NhZ2UgaW4gc3lu YyB3aXRoIHRoZSBzYW1lIGluIF9idF9sb2FkICovCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQko ZXJyY29kZShFUlJDT0RFX1VOSVFVRV9WSU9MQVRJT04pLAorCQkJCQkJCWVycm1zZygiY291bGQg bm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggXCIlc1wiIiwKKwkJCQkJCQkJICAgUmVsYXRpb25HZXRS ZWxhdGlvbk5hbWUoYXJnLT5pbmRleC5pbmRleFJlbCkpLAorCQkJCQkJCWtleV9kZXNjID8gZXJy ZGV0YWlsKCJLZXkgJXMgaXMgZHVwbGljYXRlZC4iLCBrZXlfZGVzYykgOgorCQkJCQkJCWVycmRl dGFpbCgiRHVwbGljYXRlIGtleXMgZXhpc3QuIiksCisJCQkJCQkJZXJydGFibGVjb25zdHJhaW50 KGFyZy0+aW5kZXguaGVhcFJlbCwKKwkJCQkJCQkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUoYXJnLT5pbmRleC5pbmRleFJlbCkpKSk7CisJCX0KIAl9CiAKIAkvKgpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvYWNjZXNzL25idHJlZS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL25idHJlZS5o CmluZGV4IGViY2EwMjU4OGQzLi4zODQ3MWU5MGEwYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv YWNjZXNzL25idHJlZS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnRyZWUuaApAQCAtMTMz OSw4ICsxMzM5LDEwIEBAIGV4dGVybiBib29sIGJ0cHJvcGVydHkoT2lkIGluZGV4X29pZCwgaW50 IGF0dG5vLAogZXh0ZXJuIGNoYXIgKmJ0YnVpbGRwaGFzZW5hbWUoaW50NjQgcGhhc2VudW0pOwog ZXh0ZXJuIEluZGV4VHVwbGUgX2J0X3RydW5jYXRlKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBs YXN0bGVmdCwKIAkJCQkJCQkgICBJbmRleFR1cGxlIGZpcnN0cmlnaHQsIEJUU2Nhbkluc2VydCBp dHVwX2tleSk7CitleHRlcm4gaW50CV9idF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwgSW5kZXhU dXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LAorCQkJCQkJICAgQlRTY2FuSW5z ZXJ0IGl0dXBfa2V5LCBib29sICpoYXNudWxscyk7CiBleHRlcm4gaW50CV9idF9rZWVwX25hdHRz X2Zhc3QoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LAotCQkJCQkJCQlJbmRleFR1 cGxlIGZpcnN0cmlnaHQpOworCQkJCQkJCQlJbmRleFR1cGxlIGZpcnN0cmlnaHQsIGJvb2wgKmhh c251bGxzKTsKIGV4dGVybiBib29sIF9idF9jaGVja19uYXR0cyhSZWxhdGlvbiByZWwsIGJvb2wg aGVhcGtleXNwYWNlLCBQYWdlIHBhZ2UsCiAJCQkJCQkJT2Zmc2V0TnVtYmVyIG9mZm51bSk7CiBl eHRlcm4gdm9pZCBfYnRfY2hlY2tfdGhpcmRfcGFnZShSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhl YXAsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRleCAzODdjMzA4ZWMyZi4uNTE4MjAxM2FhYmQgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL3RhYmxlYW0uaApAQCAtMTc1NCw5ICsxNzU0LDggQEAgdGFibGVfc2Nhbl9hbmFseXplX25l eHRfdHVwbGUoVGFibGVTY2FuRGVzYyBzY2FuLCBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCiAg KiBUaGlzIG9ubHkgcmVhbGx5IG1ha2VzIHNlbnNlIGZvciBoZWFwIEFNLCBpdCBtaWdodCBuZWVk IHRvIGJlIGdlbmVyYWxpemVkCiAgKiBmb3Igb3RoZXIgQU1zIGxhdGVyLgogICoKLSAqIEluIGNh c2Ugb2Ygbm9uLXVuaXF1ZSBjb25jdXJyZW50ICBpbmRleCBidWlsZCBTT19SRVNFVF9TTkFQU0hP VCBpcyBhcHBsaWVkCi0gKiBmb3IgdGhlIHNjYW4uIFRoYXQgbGVhZHMgZm9yIGNoYW5naW5nIHNu YXBzaG90cyBvbiB0aGUgZmx5IHRvIGFsbG93IHhtaW4KLSAqIGhvcml6b24gcHJvcGFnYXRlLgor ICogSW4gY2FzZSBvZiBjb25jdXJyZW50IGluZGV4IGJ1aWxkIFNPX1JFU0VUX1NOQVBTSE9UIGlz IGFwcGxpZWQgZm9yIHRoZSBzY2FuLgorICogVGhhdCBsZWFkcyBmb3IgY2hhbmdpbmcgc25hcHNo b3RzIG9uIHRoZSBmbHkgdG8gYWxsb3cgeG1pbiBob3Jpem9uIHByb3BhZ2F0ZS4KICAqLwogc3Rh dGljIGlubGluZSBkb3VibGUKIHRhYmxlX2luZGV4X2J1aWxkX3NjYW4oUmVsYXRpb24gdGFibGVf cmVsLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmggYi9zcmMvaW5j bHVkZS91dGlscy90dXBsZXNvcnQuaAppbmRleCBlZjc5ZjI1OWY5My4uZWI5YmMzMGU1ZGEgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc29ydC5oCisrKyBiL3NyYy9pbmNsdWRl L3V0aWxzL3R1cGxlc29ydC5oCkBAIC00MjksNiArNDI5LDcgQEAgZXh0ZXJuIFR1cGxlc29ydHN0 YXRlICp0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoUmVsYXRpb24gaGVhcFJlbCwKIAkJCQkJ CQkJCQkJCSAgIFJlbGF0aW9uIGluZGV4UmVsLAogCQkJCQkJCQkJCQkJICAgYm9vbCBlbmZvcmNl VW5pcXVlLAogCQkJCQkJCQkJCQkJICAgYm9vbCB1bmlxdWVOdWxsc05vdERpc3RpbmN0LAorCQkJ CQkJCQkJCQkJICAgYm9vbAl1bmlxdWVEZWFkSWdub3JlZCwKIAkJCQkJCQkJCQkJCSAgIGludCB3 b3JrTWVtLCBTb3J0Q29vcmRpbmF0ZSBjb29yZGluYXRlLAogCQkJCQkJCQkJCQkJICAgaW50IHNv cnRvcHQpOwogZXh0ZXJuIFR1cGxlc29ydHN0YXRlICp0dXBsZXNvcnRfYmVnaW5faW5kZXhfaGFz aChSZWxhdGlvbiBoZWFwUmVsLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rp b25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0IGIvc3JjL3Rlc3QvbW9k dWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0Cmlu ZGV4IDU5NWE0MDAwY2UwLi45ZjAzZmEzMDMzYyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxl cy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0CisrKyBi L3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25h cHNob3RzLm91dApAQCAtNDEsNyArNDEsMTEgQEAgRU5EOyAkJDsKIC0tLS0tLS0tLS0tLS0tLS0K IEFMVEVSIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9MCk7 CiBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAu dGJsKGkpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRh YmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmln Z2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0 aXZlCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJ Q0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2Fu X3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5q ZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKIERST1AgSU5E RVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIENSRUFURSBJTkRFWCBDT05DVVJS RU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKIE5PVElDRTogIG5vdGljZSB0cmln Z2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25h cHNob3RzCkBAIC04Niw3ICs5MCw5IEBAIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgn aGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZScpOwogKDEgcm93KQogCiBDUkVBVEUg VU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOwor Tk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFs bGVsc2Nhbl9pbml0aWFsaXplCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQg dGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNp Y19yZXNldF9zbmFwLmlkeDsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19y ZXNldF9zbmFwLnRibChpKTsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlv biBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQotLSAKMi40My4wCgo= --000000000000176c55063224bb18 Content-Type: application/octet-stream; name="v17-0002-Add-stress-tests-for-concurrent-index-operations.patch" Content-Disposition: attachment; filename="v17-0002-Add-stress-tests-for-concurrent-index-operations.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m967p8931 RnJvbSAwODEwMmYyZjg4YzFkNDhhNDY2ZTY4OGZjMzg4YmRhNGE5NWVkODc2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAzMCBOb3YgMjAyNCAxNjoyNDoyMCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjE3IDAy LzEyXSBBZGQgc3RyZXNzIHRlc3RzIGZvciBjb25jdXJyZW50IGluZGV4IG9wZXJhdGlvbnMKCkFk ZCBjb21wcmVoZW5zaXZlIHN0cmVzcyB0ZXN0cyBmb3IgY29uY3VycmVudCBpbmRleCBvcGVyYXRp b25zLCBmb2N1c2luZyBvbjoKKiBUZXN0aW5nIENSRUFURS9SRUlOREVYL0RST1AgSU5ERVggQ09O Q1VSUkVOVExZIHVuZGVyIGhlYXZ5IHdyaXRlIGxvYWQKKiBWZXJpZnlpbmcgaW5kZXggaW50ZWdy aXR5IGR1cmluZyBjb25jdXJyZW50IEhPVCB1cGRhdGVzCiogVGVzdGluZyB2YXJpb3VzIGluZGV4 IHR5cGVzIGluY2x1ZGluZyB1bmlxdWUgYW5kIHBhcnRpYWwgaW5kZXhlcwoqIFZhbGlkYXRpbmcg aW5kZXggY29ycmVjdG5lc3MgdXNpbmcgYW1jaGVjawoqIEV4ZXJjaXNpbmcgcGFyYWxsZWwgd29y a2VyIGNvbmZpZ3VyYXRpb25zCgpUaGVzZSBzdHJlc3MgdGVzdHMgaGVscCBlbnN1cmUgcmVsaWFi aWxpdHkgb2YgY29uY3VycmVudCBpbmRleCBvcGVyYXRpb25zCnVuZGVyIGhlYXZ5IGxvYWQgY29u ZGl0aW9ucy4KLS0tCiBzcmMvYmluL3BnX2FtY2hlY2svbWVzb24uYnVpbGQgIHwgICAxICsKIHNy Yy9iaW4vcGdfYW1jaGVjay90LzAwNl9jaWMucGwgfCAyMjMgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMjI0IGluc2VydGlvbnMoKykKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvYmluL3BnX2FtY2hlY2svdC8wMDZfY2ljLnBsCgpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ19hbWNoZWNrL21lc29uLmJ1aWxkIGIvc3JjL2Jpbi9wZ19hbWNoZWNrL21lc29u LmJ1aWxkCmluZGV4IDMxNmVhMGQ0MGI4Li43ZGYxNTQzNWZiYiAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ19hbWNoZWNrL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iaW4vcGdfYW1jaGVjay9tZXNvbi5i dWlsZApAQCAtMjgsNiArMjgsNyBAQCB0ZXN0cyArPSB7CiAgICAgICAndC8wMDNfY2hlY2sucGwn LAogICAgICAgJ3QvMDA0X3ZlcmlmeV9oZWFwYW0ucGwnLAogICAgICAgJ3QvMDA1X29wY2xhc3Nf ZGFtYWdlLnBsJywKKyAgICAgICd0LzAwNl9jaWMucGwnLAogICAgIF0sCiAgIH0sCiB9CmRpZmYg LS1naXQgYS9zcmMvYmluL3BnX2FtY2hlY2svdC8wMDZfY2ljLnBsIGIvc3JjL2Jpbi9wZ19hbWNo ZWNrL3QvMDA2X2NpYy5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u MmFhZDBlOGRhYTgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmluL3BnX2FtY2hlY2svdC8wMDZf Y2ljLnBsCkBAIC0wLDAgKzEsMjIzIEBACisjIENvcHlyaWdodCAoYykgMjAyNCwgUG9zdGdyZVNR TCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBUZXN0IFJFSU5ERVggQ09OQ1VSUkVOVExZ IHdpdGggY29uY3VycmVudCBtb2RpZmljYXRpb25zIGFuZCBIT1QgdXBkYXRlcwordXNlIHN0cmlj dDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKKwordXNlIFBvc3RncmVTUUw6OlRlc3Q6 OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsK KworVGVzdDo6TW9yZS0+YnVpbGRlci0+dG9kb19zdGFydCgnZmlsZXN5c3RlbSBidWcnKQorICBp ZiBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6aGFzX3dhbF9yZWFkX2J1ZzsKKworbXkgKCRub2Rl LCAkcmVzdWx0KTsKKworIworIyBUZXN0IHNldC11cAorIworJG5vZGUgPSBQb3N0Z3JlU1FMOjpU ZXN0OjpDbHVzdGVyLT5uZXcoJ1JDX3Rlc3QnKTsKKyRub2RlLT5pbml0OworJG5vZGUtPmFwcGVu ZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCSdsb2NrX3RpbWVvdXQgPSAnIC4gKDEwMDAgKiAk UG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCkpOworJG5vZGUtPmFwcGVu ZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnZnN5bmMgPSBvZmYnKTsKKyRub2RlLT5zdGFydDsK KyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDUkVBVEUgRVhURU5TSU9OIGFtY2hlY2sp KTsKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDUkVBVEUgVEFCTEUgdGJsKGkgaW50 IHByaW1hcnkga2V5LAorCQkJCQkJCQljMSBtb25leSBkZWZhdWx0IDAsIGMyIG1vbmV5IGRlZmF1 bHQgMCwKKwkJCQkJCQkJYzMgbW9uZXkgZGVmYXVsdCAwLCB1cGRhdGVkX2F0IHRpbWVzdGFtcCwK KwkJCQkJCQkJaWEgaW50NFtdLCBwIHBvaW50KSkpOworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCBxKENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIHRibChpLCB1cGRhdGVkX2F0 KTspKTsKKyMgY3JlYXRlIHNlcXVlbmNlCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEo Q1JFQVRFIFVOTE9HR0VEIFNFUVVFTkNFIGluX3Jvd19yZWJ1aWxkIFNUQVJUIDEgSU5DUkVNRU5U IDE7KSk7Ciskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoU0VMRUNUIG5leHR2YWwoJ2lu X3Jvd19yZWJ1aWxkJyk7KSk7CisKKyMgQ3JlYXRlIGhlbHBlciBmdW5jdGlvbnMgZm9yIHByZWRp Y2F0ZSB0ZXN0cworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKAorCUNSRUFURSBGVU5D VElPTiBwcmVkaWNhdGVfc3RhYmxlKCkgUkVUVVJOUyBib29sIElNTVVUQUJMRQorCUxBTkdVQUdF IHBscGdzcWwgQVMgJCQKKwlCRUdJTgorCQlFWEVDVVRFICdTRUxFQ1QgdHhpZF9jdXJyZW50KCkn OworCQlSRVRVUk4gdHJ1ZTsKKwlFTkQ7ICQkOworKSk7CisKKyRub2RlLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgcSgKKwlDUkVBVEUgRlVOQ1RJT04gcHJlZGljYXRlX2NvbnN0KGludGVnZXIpIFJF VFVSTlMgYm9vbCBJTU1VVEFCTEUKKwlMQU5HVUFHRSBwbHBnc3FsIEFTICQkCisJQkVHSU4KKwkJ UkVUVVJOIE1PRCgkMSwgMikgPSAwOworCUVORDsgJCQ7CispKTsKKworIyBSdW4gQ0lDL1JJQyBp biBkaWZmZXJlbnQgb3B0aW9ucyBjb25jdXJyZW50bHkgd2l0aCB1cHNlcnRzCiskbm9kZS0+cGdi ZW5jaCgKKwknLS1uby12YWN1dW0gLS1jbGllbnQ9MzAgLS1qb2JzPTQgLS1leGl0LW9uLWFib3J0 IC0tdHJhbnNhY3Rpb25zPTI1MDAnLAorCTAsCisJW3Fye2FjdHVhbGx5IHByb2Nlc3NlZH1dLAor CVtxcnteJH1dLAorCSdjb25jdXJyZW50IG9wZXJhdGlvbnMgd2l0aCBSRUlOREVYL0NSRUFURSBJ TkRFWCBDT05DVVJSRU5UTFknLAorCXsKKwkJJ2NvbmN1cnJlbnRfb3BzJyA9PiBxKAorCQkJU0VU IGRlYnVnX3BhcmFsbGVsX3F1ZXJ5ID0gb2ZmOyAtLSB0aGlzIGlzIGJlY2F1c2UgcHJlZGljYXRl X3N0YWJsZSBpbXBsZW1lbnRhdGlvbgorCQkJU0VMRUNUIHBnX3RyeV9hZHZpc29yeV9sb2NrKDQy KTo6aW50ZWdlciBBUyBnb3Rsb2NrIFxnc2V0CisJCQlcaWYgOmdvdGxvY2sKKwkJCQlTRUxFQ1Qg bmV4dHZhbCgnaW5fcm93X3JlYnVpbGQnKSBBUyBsYXN0X3ZhbHVlIFxnc2V0CisJCQkJXHNldCB2 YXJpYW50IHJhbmRvbSgwLCA1KQorCQkJCVxzZXQgcGFyYWxsZWxzIHJhbmRvbSgwLCA0KQorCQkJ CVxpZiA6bGFzdF92YWx1ZSA8IDMKKwkJCQkJQUxURVIgVEFCTEUgdGJsIFNFVCAocGFyYWxsZWxf d29ya2Vycz06cGFyYWxsZWxzKTsKKwkJCQkJXGlmIDp2YXJpYW50ID0gMAorCQkJCQkJQ1JFQVRF IElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4IE9OIHRibChpLCB1cGRhdGVkX2F0KTsKKwkJCQkJ XGVsaWYgOnZhcmlhbnQgPSAxCisJCQkJCQlDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIG5ld19p ZHggT04gdGJsKGksIHVwZGF0ZWRfYXQpIFdIRVJFIHByZWRpY2F0ZV9zdGFibGUoKTsKKwkJCQkJ XGVsaWYgOnZhcmlhbnQgPSAyCisJCQkJCQlDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIG5ld19p ZHggT04gdGJsKGksIHVwZGF0ZWRfYXQpIFdIRVJFIE1PRChpLCAyKSA9IDA7CisJCQkJCVxlbGlm IDp2YXJpYW50ID0gMworCQkJCQkJQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4IE9O IHRibChpLCB1cGRhdGVkX2F0KSBXSEVSRSBwcmVkaWNhdGVfY29uc3QoaSk7CisJCQkJCVxlbGlm IDp2YXJpYW50ID0gNAorCQkJCQkJQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4IE9O IHRibChwcmVkaWNhdGVfY29uc3QoaSkpOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDUKKwkJCQkJ CUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeCBPTiB0YmwoaSwgcHJlZGljYXRlX2Nv bnN0KGkpLCB1cGRhdGVkX2F0KSBXSEVSRSBwcmVkaWNhdGVfY29uc3QoaSk7CisJCQkJCVxlbmRp ZgorCQkJCQlcc2xlZXAgMTAgbXMKKwkJCQkJU0VMRUNUIGJ0X2luZGV4X2NoZWNrKCduZXdfaWR4 JywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1ZSwgY2hlY2t1bmlxdWUgPT4gdHJ1ZSk7CisJCQkJCVJF SU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHg7CisJCQkJCVxzbGVlcCAxMCBtcworCQkJ CQlTRUxFQ1QgYnRfaW5kZXhfY2hlY2soJ25ld19pZHgnLCBoZWFwYWxsaW5kZXhlZCA9PiB0cnVl LCBjaGVja3VuaXF1ZSA9PiB0cnVlKTsKKwkJCQkJRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgbmV3 X2lkeDsKKwkJCQlcZW5kaWYKKwkJCQlTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDQyKTsKKwkJ CVxlbHNlCisJCQkJXHNldCBudW0gcmFuZG9tKDEwMDAsIDEwMDAwMCkKKwkJCQlCRUdJTjsKKwkJ CQlJTlNFUlQgSU5UTyB0YmwgVkFMVUVTKGZsb29yKHJhbmRvbSgpKjpudW0pLDAsMCwwLG5vdygp KQorCQkJCQlPTiBDT05GTElDVChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTsK KwkJCQlJTlNFUlQgSU5UTyB0YmwgVkFMVUVTKGZsb29yKHJhbmRvbSgpKjpudW0pLDAsMCwwLG5v dygpKQorCQkJCQlPTiBDT05GTElDVChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3co KTsKKwkJCQlJTlNFUlQgSU5UTyB0YmwgVkFMVUVTKGZsb29yKHJhbmRvbSgpKjpudW0pLDAsMCww LG5vdygpKQorCQkJCQlPTiBDT05GTElDVChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBu b3coKTsKKwkJCQlJTlNFUlQgSU5UTyB0YmwgVkFMVUVTKGZsb29yKHJhbmRvbSgpKjpudW0pLDAs MCwwLG5vdygpKQorCQkJCQlPTiBDT05GTElDVChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQg PSBub3coKTsKKwkJCQlJTlNFUlQgSU5UTyB0YmwgVkFMVUVTKGZsb29yKHJhbmRvbSgpKjpudW0p LDAsMCwwLG5vdygpKQorCQkJCQlPTiBDT05GTElDVChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRf YXQgPSBub3coKTsKKwkJCQlTRUxFQ1Qgc2V0dmFsKCdpbl9yb3dfcmVidWlsZCcsIDEpOworCQkJ CUNPTU1JVDsKKwkJCVxlbmRpZgorCQkpCisJfSk7CisKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgcShUUlVOQ0FURSBUQUJMRSB0Ymw7KSk7CisKKyMgUnVuIENJQy9SSUMgZm9yIHVuaXF1 ZSBpbmRleCBjb25jdXJyZW50bHkgd2l0aCB1cHNlcnRzCiskbm9kZS0+cGdiZW5jaCgKKwknLS1u by12YWN1dW0gLS1jbGllbnQ9MzAgLS1qb2JzPTQgLS1leGl0LW9uLWFib3J0IC0tdHJhbnNhY3Rp b25zPTI1MDAnLAorCTAsCisJW3Fye2FjdHVhbGx5IHByb2Nlc3NlZH1dLAorCVtxcnteJH1dLAor CSdjb25jdXJyZW50IG9wZXJhdGlvbnMgd2l0aCBSRUlOREVYL0NSRUFURSBJTkRFWCBDT05DVVJS RU5UTFkgZm9yIHVuaXF1ZSBCVFJFRScsCisJeworCQknY29uY3VycmVudF9vcHNfdW5pcXVlX2lk eCcgPT4gcSgKKwkJCVNFTEVDVCBwZ190cnlfYWR2aXNvcnlfbG9jayg0Mik6OmludGVnZXIgQVMg Z290bG9jayBcZ3NldAorCQkJXGlmIDpnb3Rsb2NrCisJCQkJU0VMRUNUIG5leHR2YWwoJ2luX3Jv d19yZWJ1aWxkJykgQVMgbGFzdF92YWx1ZSBcZ3NldAorCQkJCVxzZXQgcGFyYWxsZWxzIHJhbmRv bSgwLCA0KQorCQkJCVxpZiA6bGFzdF92YWx1ZSA8IDMKKwkJCQkJQUxURVIgVEFCTEUgdGJsIFNF VCAocGFyYWxsZWxfd29ya2Vycz06cGFyYWxsZWxzKTsKKwkJCQkJQ1JFQVRFIFVOSVFVRSBJTkRF WCBDT05DVVJSRU5UTFkgbmV3X2lkeCBPTiB0YmwoaSk7CisJCQkJCVxzbGVlcCAxMCBtcworCQkJ CQlTRUxFQ1QgYnRfaW5kZXhfY2hlY2soJ25ld19pZHgnLCBoZWFwYWxsaW5kZXhlZCA9PiB0cnVl LCBjaGVja3VuaXF1ZSA9PiB0cnVlKTsKKwkJCQkJUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkg bmV3X2lkeDsKKwkJCQkJXHNsZWVwIDEwIG1zCisJCQkJCVNFTEVDVCBidF9pbmRleF9jaGVjaygn bmV3X2lkeCcsIGhlYXBhbGxpbmRleGVkID0+IHRydWUsIGNoZWNrdW5pcXVlID0+IHRydWUpOwor CQkJCQlEUk9QIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4OworCQkJCVxlbmRpZgorCQkJCVNF TEVDVCBwZ19hZHZpc29yeV91bmxvY2soNDIpOworCQkJXGVsc2UKKwkJCQlcc2V0IG51bSByYW5k b20oMSwgcG93ZXIoMTAsIHJhbmRvbSgxLCA1KSkpCisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVF UyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkg RE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7CisJCQkJU0VMRUNUIHNldHZhbCgnaW5f cm93X3JlYnVpbGQnLCAxKTsKKwkJCVxlbmRpZgorCQkpCisJfSk7CisKKyRub2RlLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgcShUUlVOQ0FURSBUQUJMRSB0Ymw7KSk7CisKKyMgUnVuIENJQy9SSUMg Zm9yIEdJTiB3aXRoIHVwc2VydHMKKyRub2RlLT5wZ2JlbmNoKAorCSctLW5vLXZhY3V1bSAtLWNs aWVudD0zMCAtLWpvYnM9NCAtLWV4aXQtb24tYWJvcnQgLS10cmFuc2FjdGlvbnM9MjUwMCcsCisJ MCwKKwlbcXJ7YWN0dWFsbHkgcHJvY2Vzc2VkfV0sCisJW3Fye14kfV0sCisJJ2NvbmN1cnJlbnQg b3BlcmF0aW9ucyB3aXRoIFJFSU5ERVgvQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBmb3IgR0lO L0dJU1QvQlJJTi9IQVNIL1NQR0lTVCcsCisJeworCQknY29uY3VycmVudF9vcHNfZ2luX2lkeCcg PT4gcSgKKwkJCVNFTEVDVCBwZ190cnlfYWR2aXNvcnlfbG9jayg0Mik6OmludGVnZXIgQVMgZ290 bG9jayBcZ3NldAorCQkJXGlmIDpnb3Rsb2NrCisJCQkJU0VMRUNUIG5leHR2YWwoJ2luX3Jvd19y ZWJ1aWxkJykgQVMgbGFzdF92YWx1ZSBcZ3NldAorCQkJCVxzZXQgcGFyYWxsZWxzIHJhbmRvbSgw LCA0KQorCQkJCVxpZiA6bGFzdF92YWx1ZSA8IDMKKwkJCQkJQUxURVIgVEFCTEUgdGJsIFNFVCAo cGFyYWxsZWxfd29ya2Vycz06cGFyYWxsZWxzKTsKKwkJCQkJQ1JFQVRFIElOREVYIENPTkNVUlJF TlRMWSBuZXdfaWR4IE9OIHRibCBVU0lORyBHSU4gKGlhKTsKKwkJCQkJXHNsZWVwIDEwIG1zCisJ CQkJCVNFTEVDVCBnaW5faW5kZXhfY2hlY2soJ25ld19pZHgnKTsKKwkJCQkJUkVJTkRFWCBJTkRF WCBDT05DVVJSRU5UTFkgbmV3X2lkeDsKKwkJCQkJXHNsZWVwIDEwIG1zCisJCQkJCVNFTEVDVCBn aW5faW5kZXhfY2hlY2soJ25ld19pZHgnKTsKKwkJCQkJRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkg bmV3X2lkeDsKKwkJCQlcZW5kaWYKKwkJCQlTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDQyKTsK KwkJCVxlbHNlCisJCQkJXHNldCBudW0gcmFuZG9tKDEsIHBvd2VyKDEwLCByYW5kb20oMSwgNSkp KQorCQkJCUlOU0VSVCBJTlRPIHRibCBWQUxVRVMoZmxvb3IocmFuZG9tKCkqOm51bSksMCwwLDAs bm93KCkpCisJCQkJCU9OIENPTkZMSUNUKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5v dygpOworCQkJCVNFTEVDVCBzZXR2YWwoJ2luX3Jvd19yZWJ1aWxkJywgMSk7CisJCQlcZW5kaWYK KwkJKQorCX0pOworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoVFJVTkNBVEUgVEFC TEUgdGJsOykpOworCisjIFJ1biBDSUMvUklDIGZvciBHSVNUL0JSSU4vSEFTSC9TUEdJU1QgaW5k ZXggY29uY3VycmVudGx5IHdpdGggdXBzZXJ0cworJG5vZGUtPnBnYmVuY2goCisJJy0tbm8tdmFj dXVtIC0tY2xpZW50PTMwIC0tam9icz00IC0tZXhpdC1vbi1hYm9ydCAtLXRyYW5zYWN0aW9ucz0y NTAwJywKKwkwLAorCVtxcnthY3R1YWxseSBwcm9jZXNzZWR9XSwKKwlbcXJ7XiR9XSwKKwknY29u Y3VycmVudCBvcGVyYXRpb25zIHdpdGggUkVJTkRFWC9DUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZ IGZvciBHSU4vR0lTVC9CUklOL0hBU0gvU1BHSVNUJywKKwl7CisJCSdjb25jdXJyZW50X29wc19v dGhlcl9pZHgnID0+IHEoCisJCQlTRUxFQ1QgcGdfdHJ5X2Fkdmlzb3J5X2xvY2soNDIpOjppbnRl Z2VyIEFTIGdvdGxvY2sgXGdzZXQKKwkJCVxpZiA6Z290bG9jaworCQkJCVNFTEVDVCBuZXh0dmFs KCdpbl9yb3dfcmVidWlsZCcpIEFTIGxhc3RfdmFsdWUgXGdzZXQKKwkJCQlcc2V0IHBhcmFsbGVs cyByYW5kb20oMCwgNCkKKwkJCQlcaWYgOmxhc3RfdmFsdWUgPCAzCisJCQkJCUFMVEVSIFRBQkxF IHRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9OnBhcmFsbGVscyk7CisJCQkJCVxzZXQgdmFyaWFu dCByYW5kb20oMCwgMykKKwkJCQkJXGlmIDp2YXJpYW50ID0gMAorCQkJCQkJQ1JFQVRFIElOREVY IENPTkNVUlJFTlRMWSBuZXdfaWR4IE9OIHRibCBVU0lORyBHSVNUIChwKTsKKwkJCQkJXGVsaWYg OnZhcmlhbnQgPSAxCisJCQkJCQlDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHggT04g dGJsIFVTSU5HIEJSSU4gKHVwZGF0ZWRfYXQpOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDIKKwkJ CQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeCBPTiB0YmwgVVNJTkcgSEFTSCAo dXBkYXRlZF9hdCk7CisJCQkJCVxlbGlmIDp2YXJpYW50ID0gMworCQkJCQkJQ1JFQVRFIElOREVY IENPTkNVUlJFTlRMWSBuZXdfaWR4IE9OIHRibCBVU0lORyBTUEdJU1QgKHApOworCQkJCQlcZW5k aWYKKwkJCQkJXHNsZWVwIDEwIG1zCisJCQkJCVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIG5l d19pZHg7CisJCQkJCVxzbGVlcCAxMCBtcworCQkJCQlEUk9QIElOREVYIENPTkNVUlJFTlRMWSBu ZXdfaWR4OworCQkJCVxlbmRpZgorCQkJCVNFTEVDVCBwZ19hZHZpc29yeV91bmxvY2soNDIpOwor CQkJXGVsc2UKKwkJCQlcc2V0IG51bSByYW5kb20oMSwgcG93ZXIoMTAsIHJhbmRvbSgxLCA1KSkp CisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxu b3coKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93 KCk7CisJCQkJU0VMRUNUIHNldHZhbCgnaW5fcm93X3JlYnVpbGQnLCAxKTsKKwkJCVxlbmRpZgor CQkpCisJfSk7CisKKyRub2RlLT5zdG9wOworZG9uZV90ZXN0aW5nKCk7ClwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQotLSAKMi40My4wCgo= --000000000000176c55063224bb18 Content-Type: application/octet-stream; name="v17-0003-Allow-advancing-xmin-during-non-unique-non-paral.patch" Content-Disposition: attachment; filename="v17-0003-Allow-advancing-xmin-during-non-unique-non-paral.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m967p8952 RnJvbSBkNTEwNjljMTcwYzM3NDQ1ZmMwZWEzMDI0OWE2MGQ0M2M0ZjA5MjllIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAzMSBEZWMgMjAyNCAyMToxMDoyMyArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjE3IDAz LzEyXSBBbGxvdyBhZHZhbmNpbmcgeG1pbiBkdXJpbmcgbm9uLXVuaXF1ZSwKIG5vbi1wYXJhbGxl bCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyBieSBwZXJpb2RpY2FsbHkgcmVzZXR0aW5nIHNuYXBz aG90cwoKTG9uZy1ydW5uaW5nIHRyYW5zYWN0aW9ucyBsaWtlIHRob3NlIHVzZWQgYnkgQ1JFQVRF IElOREVYIENPTkNVUlJFTlRMWSBhbmQgUkVJTkRFWCBDT05DVVJSRU5UTFkgY2FuIGhvbGQgYmFj ayB0aGUgZ2xvYmFsIHhtaW4gaG9yaXpvbiwgcHJldmVudGluZyBWQUNVVU0gZnJvbSBjbGVhbmlu ZyB1cCBkZWFkIHR1cGxlcyBhbmQgcG90ZW50aWFsbHkgbGVhZGluZyB0byB0cmFuc2FjdGlvbiBJ RCB3cmFwYXJvdW5kIGlzc3Vlcy4gSW4gUG9zdGdyZVNRTCAxNCwgY29tbWl0IGQ5ZDA3NjIyMmY1 YiBhdHRlbXB0ZWQgdG8gYWxsb3cgVkFDVVVNIHRvIGlnbm9yZSBpbmRleGluZyB0cmFuc2FjdGlv bnMgd2l0aCBDT05DVVJSRU5UTFkgdG8gbWl0aWdhdGUgdGhpcyBwcm9ibGVtLiBIb3dldmVyLCB0 aGlzIHdhcyByZXZlcnRlZCBpbiBjb21taXQgZTI4YmI4ODUxOTY5IGJlY2F1c2UgaXQgY291bGQg Y2F1c2UgaW5kZXhlcyB0byBtaXNzIGhlYXAgdHVwbGVzIHRoYXQgd2VyZSBIT1QtdXBkYXRlZCBh bmQgSE9ULXBydW5lZCBkdXJpbmcgdGhlIGluZGV4IGNyZWF0aW9uLCBsZWFkaW5nIHRvIGluZGV4 IGNvcnJ1cHRpb24uCgpUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBzYWZlIGFsdGVybmF0aXZlIGJ5 IHBlcmlvZGljYWxseSByZXNldHRpbmcgdGhlIHNuYXBzaG90IHVzZWQgZHVyaW5nIG5vbi11bmlx dWUsIG5vbi1wYXJhbGxlbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcy4gQnkgcmVzZXR0aW5nIHRo ZSBzbmFwc2hvdCBldmVyeSBOIHBhZ2VzIGR1cmluZyB0aGUgaGVhcCBzY2FuLCB3ZSBhbGxvdyB0 aGUgeG1pbiBob3Jpem9uIHRvIGFkdmFuY2Ugd2l0aG91dCByaXNraW5nIGluZGV4IGNvcnJ1cHRp b24uIFRoaXMgYXBwcm9hY2ggaXMgc2FmZSBmb3Igbm9uLXVuaXF1ZSBpbmRleCBidWlsZHMgYmVj YXVzZSB0aGV5IGRvIG5vdCBlbmZvcmNlIHVuaXF1ZW5lc3MgY29uc3RyYWludHMgdGhhdCByZXF1 aXJlIGEgY29uc2lzdGVudCBzbmFwc2hvdCBhY3Jvc3MgdGhlIGVudGlyZSBzY2FuLgoKQ3VycmVu dGx5LCB0aGlzIHRlY2huaXF1ZSBpcyBhcHBsaWVkIHRvOgoKTm9uLXBhcmFsbGVsIGluZGV4IGJ1 aWxkczogUGFyYWxsZWwgaW5kZXggYnVpbGRzIGFyZSBub3QgeWV0IHN1cHBvcnRlZCBhbmQgd2ls bCBiZSBhZGRyZXNzZWQgaW4gYSBmdXR1cmUgY29tbWl0LgpOb24tdW5pcXVlIGluZGV4ZXM6IFVu aXF1ZSBpbmRleCBidWlsZHMgc3RpbGwgcmVxdWlyZSBhIGNvbnNpc3RlbnQgc25hcHNob3QgdG8g ZW5mb3JjZSB1bmlxdWVuZXNzIGNvbnN0cmFpbnRzLCBhbmQgc3VwcG9ydCBmb3IgdGhlbSBtYXkg YmUgYWRkZWQgaW4gdGhlIGZ1dHVyZS4KT25seSBkdXJpbmcgdGhlIGZpcnN0IHNjYW4gb2YgdGhl IGhlYXA6IFRoZSBzZWNvbmQgc2NhbiBkdXJpbmcgaW5kZXggdmFsaWRhdGlvbiBzdGlsbCB1c2Vz IGEgc2luZ2xlIHNuYXBzaG90IHRvIGVuc3VyZSBpbmRleCBjb3JyZWN0bmVzcy4KClRvIGltcGxl bWVudCB0aGlzLCBhIG5ldyBzY2FuIG9wdGlvbiBTT19SRVNFVF9TTkFQU0hPVCBpcyBpbnRyb2R1 Y2VkLiBXaGVuIHNldCwgaXQgY2F1c2VzIHRoZSBzbmFwc2hvdCB0byBiZSByZXNldCBldmVyeSBT T19SRVNFVF9TTkFQU0hPVF9FQUNIX05fUEFHRSBwYWdlcyBkdXJpbmcgdGhlIHNjYW4uIFRoZSBo ZWFwIHNjYW4gY29kZSBpcyBhZGp1c3RlZCB0byBzdXBwb3J0IHRoaXMgb3B0aW9uLCBhbmQgdGhl IGluZGV4IGJ1aWxkIGNvZGUgaXMgbW9kaWZpZWQgdG8gdXNlIGl0IGZvciBhcHBsaWNhYmxlIGNv bmN1cnJlbnQgaW5kZXggYnVpbGRzIHRoYXQgYXJlIG5vdCBvbiBzeXN0ZW0gY2F0YWxvZ3MgYW5k IG5vdCB1c2luZyBwYXJhbGxlbCB3b3JrZXJzLgoKVGhpcyBhZGRyZXNzZXMgdGhlIGlzc3VlcyB0 aGF0IGxlZCB0byB0aGUgcmV2ZXJzaW9uIG9mIGNvbW1pdCBkOWQwNzYyMjJmNWIsIHByb3ZpZGlu ZyBhIHNhZmUgd2F5IHRvIGFsbG93IHhtaW4gYWR2YW5jZW1lbnQgZHVyaW5nIGxvbmctcnVubmlu ZyBub24tdW5pcXVlLCBub24tcGFyYWxsZWwgY29uY3VycmVudCBpbmRleCBidWlsZHMgd2hpbGUg ZW5zdXJpbmcgaW5kZXggY29ycmVjdG5lc3MuCgpSZWdyZXNzaW9uIHRlc3RzIGFyZSBhZGRlZCB0 byB2ZXJpZnkgdGhlIGJlaGF2aW9yLgotLS0KIGNvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVl LmMgICAgICAgICAgICAgICB8ICAgMyArLQogY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBs ZS5jICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMg ICAgICAgICAgICAgICAgfCAgMTkgKysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNl cnQuYyAgICAgICAgICAgIHwgIDIxICsrKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3Ri dWlsZC5jICAgICAgICAgICB8ICAgMyArCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMg ICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMg ICAgICAgICAgICAgIHwgIDQ1ICsrKysrKysrCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW1faGFuZGxlci5jICAgICAgfCAgNTcgKysrKysrKystLQogc3JjL2JhY2tlbmQvYWNjZXNzL2lu ZGV4L2dlbmFtLmMgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0 cmVlL25idHNvcnQuYyAgICAgICAgICAgfCAgMzAgKysrKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9z cGdpc3Qvc3BnaW5zZXJ0LmMgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9jYXRhbG9nL2lu ZGV4LmMgICAgICAgICAgICAgICAgICAgfCAgMzAgKysrKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L2luZGV4Y21kcy5jICAgICAgICAgICAgICB8ICAxNCArLS0KIHNyYy9iYWNrZW5kL29wdGltaXpl ci9wbGFuL3BsYW5uZXIuYyAgICAgICAgICB8ICAgOSArKwogc3JjL2luY2x1ZGUvYWNjZXNzL2hl YXBhbS5oICAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJs ZWFtLmggICAgICAgICAgICAgICAgICB8ICAyOCArKysrLQogc3JjL3Rlc3QvbW9kdWxlcy9pbmpl Y3Rpb25fcG9pbnRzL01ha2VmaWxlICAgIHwgICAyICstCiAuLi4vZXhwZWN0ZWQvY2ljX3Jlc2V0 X3NuYXBzaG90cy5vdXQgICAgICAgICAgfCAxMDUgKysrKysrKysrKysrKysrKysrCiBzcmMvdGVz dC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVzb24uYnVpbGQgfCAgIDEgKwogLi4uL3NxbC9j aWNfcmVzZXRfc25hcHNob3RzLnNxbCAgICAgICAgICAgICAgIHwgIDg2ICsrKysrKysrKysrKysr CiAyMCBmaWxlcyBjaGFuZ2VkLCA0MjcgaW5zZXJ0aW9ucygrKSwgMzUgZGVsZXRpb25zKC0pCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVj dGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qv bW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbAoKZGlm ZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMgYi9jb250cmliL2FtY2hl Y2svdmVyaWZ5X25idHJlZS5jCmluZGV4IGYxMWM0M2EwZWQ3Li5kNjliNjU4ZWYyMCAxMDA2NDQK LS0tIGEvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYworKysgYi9jb250cmliL2FtY2hl Y2svdmVyaWZ5X25idHJlZS5jCkBAIC01NjUsNyArNTY1LDggQEAgYnRfY2hlY2tfZXZlcnlfbGV2 ZWwoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBib29sIGhlYXBrZXlzcGFjZSwKIAkJ CQkJCQkJCSAwLCAvKiBudW1iZXIgb2Yga2V5cyAqLwogCQkJCQkJCQkJIE5VTEwsCS8qIHNjYW4g a2V5ICovCiAJCQkJCQkJCQkgdHJ1ZSwJLyogYnVmZmVyIGFjY2VzcyBzdHJhdGVneSBPSyAqLwot CQkJCQkJCQkJIHRydWUpOyAvKiBzeW5jc2NhbiBPSz8gKi8KKwkJCQkJCQkJCSB0cnVlLCAvKiBz eW5jc2NhbiBPSz8gKi8KKwkJCQkJCQkJCSBmYWxzZSk7CiAKIAkJLyoKIAkJICogU2NhbiB3aWxs IGJlaGF2ZSBhcyB0aGUgZmlyc3Qgc2NhbiBvZiBhIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkK ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYyBiL2NvbnRyaWIv cGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYwppbmRleCAwZDljMmIwYjY1My4uYTZkYWQ1NGZmNTgg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYworKysgYi9jb250 cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdHR1cGxlLmMKQEAgLTMzNSw3ICszMzUsNyBAQCBwZ3N0YXRf aGVhcChSZWxhdGlvbiByZWwsIEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvKQogCQkJCSBlcnJtc2co Im9ubHkgaGVhcCBBTSBpcyBzdXBwb3J0ZWQiKSkpOwogCiAJLyogRGlzYWJsZSBzeW5jc2NhbiBi ZWNhdXNlIHdlIGFzc3VtZSB3ZSBzY2FuIGZyb20gYmxvY2sgemVybyB1cHdhcmRzICovCi0Jc2Nh biA9IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChyZWwsIFNuYXBzaG90QW55LCAwLCBOVUxMLCB0cnVl LCBmYWxzZSk7CisJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChyZWwsIFNuYXBzaG90QW55 LCAwLCBOVUxMLCB0cnVlLCBmYWxzZSwgZmFsc2UpOwogCWhzY2FuID0gKEhlYXBTY2FuRGVzYykg c2NhbjsKIAogCUluaXREaXJ0eVNuYXBzaG90KFNuYXBzaG90RGlydHkpOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4v YnJpbi5jCmluZGV4IDAxZTFkYjdmODU2Li5lNWE5NDVhMWIxNCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2Jy aW4uYwpAQCAtMTIxNiwxMSArMTIxNiwxMiBAQCBicmluYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVs YXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQlzdGF0ZS0+YnNfc29ydHN0YXRl ID0KIAkJCXR1cGxlc29ydF9iZWdpbl9pbmRleF9icmluKG1haW50ZW5hbmNlX3dvcmtfbWVtLCBj b29yZGluYXRlLAogCQkJCQkJCQkJICAgVFVQTEVTT1JUX05PTkUpOwotCisJCUludmFsaWRhdGVD YXRhbG9nU25hcHNob3QoKTsKIAkJLyogc2NhbiB0aGUgcmVsYXRpb24gYW5kIG1lcmdlIHBlci13 b3JrZXIgcmVzdWx0cyAqLwogCQlyZWx0dXBsZXMgPSBfYnJpbl9wYXJhbGxlbF9tZXJnZShzdGF0 ZSk7CiAKIAkJX2JyaW5fZW5kX3BhcmFsbGVsKHN0YXRlLT5ic19sZWFkZXIsIHN0YXRlKTsKKwkJ QXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlk KE15UHJvYy0+eG1pbikpOwogCX0KIAllbHNlCQkJCQkJLyogbm8gcGFyYWxsZWwgaW5kZXggYnVp bGQgKi8KIAl7CkBAIC0xMjMzLDYgKzEyMzQsNyBAQCBicmluYnVpbGQoUmVsYXRpb24gaGVhcCwg UmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQlyZWx0dXBsZXMgPSB0YWJs ZV9pbmRleF9idWlsZF9zY2FuKGhlYXAsIGluZGV4LCBpbmRleEluZm8sIGZhbHNlLCB0cnVlLAog CQkJCQkJCQkJCSAgIGJyaW5idWlsZENhbGxiYWNrLCBzdGF0ZSwgTlVMTCk7CiAKKwkJSW52YWxp ZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOwogCQkvKgogCQkgKiBwcm9jZXNzIHRoZSBmaW5hbCBiYXRj aAogCQkgKgpAQCAtMTI1Miw2ICsxMjU0LDcgQEAgYnJpbmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJl bGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAkJYnJpbl9maWxsX2VtcHR5X3Jh bmdlcyhzdGF0ZSwKIAkJCQkJCQkgICBzdGF0ZS0+YnNfY3VyclJhbmdlU3RhcnQsCiAJCQkJCQkJ ICAgc3RhdGUtPmJzX21heFJhbmdlU3RhcnQpOworCQlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29u Y3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAJfQogCiAJ LyogcmVsZWFzZSByZXNvdXJjZXMgKi8KQEAgLTIzNzQsNiArMjM3Nyw3IEBAIF9icmluX2JlZ2lu X3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxh dGlvbiBpbmRleCwKIAlXYWxVc2FnZSAgICp3YWx1c2FnZTsKIAlCdWZmZXJVc2FnZSAqYnVmZmVy dXNhZ2U7CiAJYm9vbAkJbGVhZGVycGFydGljaXBhdGVzID0gdHJ1ZTsKKwlib29sCQluZWVkX3Bv cF9hY3RpdmVfc25hcHNob3QgPSB0cnVlOwogCWludAkJCXF1ZXJ5bGVuOwogCiAjaWZkZWYgRElT QUJMRV9MRUFERVJfUEFSVElDSVBBVElPTgpAQCAtMjM5OSw5ICsyNDAzLDE2IEBAIF9icmluX2Jl Z2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBS ZWxhdGlvbiBpbmRleCwKIAkgKiBsaXZlIGFjY29yZGluZyB0byB0aGF0LgogCSAqLwogCWlmICgh aXNjb25jdXJyZW50KQorCXsKKwkJQXNzZXJ0KEFjdGl2ZVNuYXBzaG90U2V0KCkpOwogCQlzbmFw c2hvdCA9IFNuYXBzaG90QW55OworCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSBmYWxzZTsK Kwl9CiAJZWxzZQorCXsKIAkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0 aW9uU25hcHNob3QoKSk7CisJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBz aG90KCkpOworCX0KIAogCS8qCiAJICogRXN0aW1hdGUgc2l6ZSBmb3Igb3VyIG93biBQQVJBTExF TF9LRVlfQlJJTl9TSEFSRUQgd29ya3NwYWNlLgpAQCAtMjQ0NCw2ICsyNDU1LDggQEAgX2JyaW5f YmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAs IFJlbGF0aW9uIGluZGV4LAogCS8qIElmIG5vIERTTSBzZWdtZW50IHdhcyBhdmFpbGFibGUsIGJh Y2sgb3V0IChkbyBzZXJpYWwgYnVpbGQpICovCiAJaWYgKHBjeHQtPnNlZyA9PSBOVUxMKQogCXsK KwkJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7 CiAJCWlmIChJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCiAJCQlVbnJlZ2lzdGVyU25hcHNob3Qo c25hcHNob3QpOwogCQlEZXN0cm95UGFyYWxsZWxDb250ZXh0KHBjeHQpOwpAQCAtMjUyMyw2ICsy NTM2LDggQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUs IFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCS8qIElmIG5vIHdvcmtlcnMgd2VyZSBz dWNjZXNzZnVsbHkgbGF1bmNoZWQsIGJhY2sgb3V0IChkbyBzZXJpYWwgYnVpbGQpICovCiAJaWYg KHBjeHQtPm53b3JrZXJzX2xhdW5jaGVkID09IDApCiAJeworCQlpZiAobmVlZF9wb3BfYWN0aXZl X3NuYXBzaG90KQorCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkJX2JyaW5fZW5kX3BhcmFsbGVs KGJyaW5sZWFkZXIsIE5VTEwpOwogCQlyZXR1cm47CiAJfQpAQCAtMjUzOSw2ICsyNTU0LDggQEAg X2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9u IGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCSAqIHN1cmUgdGhhdCB0aGUgZmFpbHVyZS10by1zdGFy dCBjYXNlIHdpbGwgbm90IGhhbmcgZm9yZXZlci4KIAkgKi8KIAlXYWl0Rm9yUGFyYWxsZWxXb3Jr ZXJzVG9BdHRhY2gocGN4dCk7CisJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJUG9w QWN0aXZlU25hcHNob3QoKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9naW4vZ2luaW5zZXJ0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jCmlu ZGV4IGUyNWQ4MTdjMTk1Li4wZDU3OTJmZjdmZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2dpbi9naW5pbnNlcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2Vy dC5jCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3ByZWRpY2F0ZS5oIgorI2luY2x1ZGUg InN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKICNpbmNsdWRlICJ1 dGlscy9kYXR1bS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCkBAIC02NDYsNiArNjQ3 LDggQEAgZ2luYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAq aW5kZXhJbmZvKQogCWJ1aWxkc3RhdGUuYWNjdW0uZ2luc3RhdGUgPSAmYnVpbGRzdGF0ZS5naW5z dGF0ZTsKIAlnaW5Jbml0QkEoJmJ1aWxkc3RhdGUuYWNjdW0pOwogCisJQXNzZXJ0KCFpbmRleElu Zm8tPmlpX0NvbmN1cnJlbnQgfHwgaW5kZXhJbmZvLT5paV9QYXJhbGxlbFdvcmtlcnMgfHwgIVRy YW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eGlkKSk7CisKIAkvKiBSZXBvcnQgdGFibGUgc2Nh biBwaGFzZSBzdGFydGVkICovCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVT U19DUkVBVEVJRFhfU1VCUEhBU0UsCiAJCQkJCQkJCSBQUk9HUkVTU19HSU5fUEhBU0VfSU5ERVhC VUlMRF9UQUJMRVNDQU4pOwpAQCAtNzA4LDExICs3MTEsMTMgQEAgZ2luYnVpbGQoUmVsYXRpb24g aGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQkJdHVwbGVzb3J0 X2JlZ2luX2luZGV4X2dpbihoZWFwLCBpbmRleCwKIAkJCQkJCQkJCSAgbWFpbnRlbmFuY2Vfd29y a19tZW0sIGNvb3JkaW5hdGUsCiAJCQkJCQkJCQkgIFRVUExFU09SVF9OT05FKTsKKwkJSW52YWxp ZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOwogCiAJCS8qIHNjYW4gdGhlIHJlbGF0aW9uIGluIHBhcmFs bGVsIGFuZCBtZXJnZSBwZXItd29ya2VyIHJlc3VsdHMgKi8KIAkJcmVsdHVwbGVzID0gX2dpbl9w YXJhbGxlbF9tZXJnZShzdGF0ZSk7CiAKIAkJX2dpbl9lbmRfcGFyYWxsZWwoc3RhdGUtPmJzX2xl YWRlciwgc3RhdGUpOworCQlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJh bnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAJfQogCWVsc2UJCQkJCQkvKiBubyBw YXJhbGxlbCBpbmRleCBidWlsZCAqLwogCXsKQEAgLTcyMiw2ICs3MjcsNyBAQCBnaW5idWlsZChS ZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJCSAq LwogCQlyZWx0dXBsZXMgPSB0YWJsZV9pbmRleF9idWlsZF9zY2FuKGhlYXAsIGluZGV4LCBpbmRl eEluZm8sIGZhbHNlLCB0cnVlLAogCQkJCQkJCQkJCSAgIGdpbkJ1aWxkQ2FsbGJhY2ssICZidWls ZHN0YXRlLCBOVUxMKTsKKwkJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOwogCiAJCS8qIGR1 bXAgcmVtYWluaW5nIGVudHJpZXMgdG8gdGhlIGluZGV4ICovCiAJCW9sZEN0eCA9IE1lbW9yeUNv bnRleHRTd2l0Y2hUbyhidWlsZHN0YXRlLnRtcEN0eCk7CkBAIC03MzUsNiArNzQxLDcgQEAgZ2lu YnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZv KQogCQkJCQkJICAgbGlzdCwgbmxpc3QsICZidWlsZHN0YXRlLmJ1aWxkU3RhdHMpOwogCQl9CiAJ CU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRDdHgpOworCQlBc3NlcnQoIWluZGV4SW5mby0+aWlf Q29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAJfQog CiAJTWVtb3J5Q29udGV4dERlbGV0ZShidWlsZHN0YXRlLmZ1bmNDdHgpOwpAQCAtOTA3LDYgKzkx NCw3IEBAIF9naW5fYmVnaW5fcGFyYWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVs YXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJV2FsVXNhZ2UgICAqd2FsdXNhZ2U7CiAJQnVm ZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOwogCWJvb2wJCWxlYWRlcnBhcnRpY2lwYXRlcyA9IHRydWU7 CisJYm9vbAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKIAlpbnQJCQlxdWVyeWxl bjsKIAogI2lmZGVmIERJU0FCTEVfTEVBREVSX1BBUlRJQ0lQQVRJT04KQEAgLTkzMSw5ICs5Mzks MTYgQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxh dGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkgKiBsaXZlIGFjY29yZGluZyB0byB0aGF0Lgog CSAqLwogCWlmICghaXNjb25jdXJyZW50KQorCXsKKwkJQXNzZXJ0KEFjdGl2ZVNuYXBzaG90U2V0 KCkpOwogCQlzbmFwc2hvdCA9IFNuYXBzaG90QW55OworCQluZWVkX3BvcF9hY3RpdmVfc25hcHNo b3QgPSBmYWxzZTsKKwl9CiAJZWxzZQorCXsKIAkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90 KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFu c2FjdGlvblNuYXBzaG90KCkpOworCX0KIAogCS8qCiAJICogRXN0aW1hdGUgc2l6ZSBmb3Igb3Vy IG93biBQQVJBTExFTF9LRVlfR0lOX1NIQVJFRCB3b3Jrc3BhY2UuCkBAIC05NzYsNiArOTkxLDgg QEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlv biBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkvKiBJZiBubyBEU00gc2VnbWVudCB3YXMgYXZhaWxh YmxlLCBiYWNrIG91dCAoZG8gc2VyaWFsIGJ1aWxkKSAqLwogCWlmIChwY3h0LT5zZWcgPT0gTlVM TCkKIAl7CisJCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCisJCQlQb3BBY3RpdmVTbmFw c2hvdCgpOwogCQlpZiAoSXNNVkNDU25hcHNob3Qoc25hcHNob3QpKQogCQkJVW5yZWdpc3RlclNu YXBzaG90KHNuYXBzaG90KTsKIAkJRGVzdHJveVBhcmFsbGVsQ29udGV4dChwY3h0KTsKQEAgLTEw NTAsNiArMTA2Nyw4IEBAIF9naW5fYmVnaW5fcGFyYWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRz dGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJLyogSWYgbm8gd29ya2VycyB3 ZXJlIHN1Y2Nlc3NmdWxseSBsYXVuY2hlZCwgYmFjayBvdXQgKGRvIHNlcmlhbCBidWlsZCkgKi8K IAlpZiAocGN4dC0+bndvcmtlcnNfbGF1bmNoZWQgPT0gMCkKIAl7CisJCWlmIChuZWVkX3BvcF9h Y3RpdmVfc25hcHNob3QpCisJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCQlfZ2luX2VuZF9wYXJh bGxlbChnaW5sZWFkZXIsIE5VTEwpOwogCQlyZXR1cm47CiAJfQpAQCAtMTA2Niw2ICsxMDg1LDgg QEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlv biBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkgKiBzdXJlIHRoYXQgdGhlIGZhaWx1cmUtdG8tc3Rh cnQgY2FzZSB3aWxsIG5vdCBoYW5nIGZvcmV2ZXIuCiAJICovCiAJV2FpdEZvclBhcmFsbGVsV29y a2Vyc1RvQXR0YWNoKHBjeHQpOworCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCisJCVBv cEFjdGl2ZVNuYXBzaG90KCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvZ2lzdC9naXN0YnVpbGQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5j CmluZGV4IDllNzA3MTY3ZDk4Li41Njk4MTE0N2FlMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lz dGJ1aWxkLmMKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJvcHRpbWl6ZXIvb3B0aW1pemVy LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1bGtf d3JpdGUuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKIAogI2luY2x1ZGUgInV0aWxzL21l bXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCkBAIC0yNTksNiArMjYwLDcgQEAgZ2lz dGJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5m bykKIAlidWlsZHN0YXRlLmluZHR1cGxlcyA9IDA7CiAJYnVpbGRzdGF0ZS5pbmR0dXBsZXNTaXpl ID0gMDsKIAorCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlv bklkSXNWYWxpZChNeVByb2MtPnhpZCkpOwogCWlmIChidWlsZHN0YXRlLmJ1aWxkTW9kZSA9PSBH SVNUX1NPUlRFRF9CVUlMRCkKIAl7CiAJCS8qCkBAIC0zNTAsNiArMzUyLDcgQEAgZ2lzdGJ1aWxk KFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAog CXJlc3VsdC0+aGVhcF90dXBsZXMgPSByZWx0dXBsZXM7CiAJcmVzdWx0LT5pbmRleF90dXBsZXMg PSAoZG91YmxlKSBidWlsZHN0YXRlLmluZHR1cGxlczsKKwlBc3NlcnQoIWluZGV4SW5mby0+aWlf Q29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54aWQpKTsKIAogCXJl dHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNo LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMKaW5kZXggNTMwNjFjODE5ZmIuLjM3 MTFiYWVhMDUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaC5jCkBAIC0xOTcsNiArMTk3LDcgQEAgaGFz aGJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5m bykKIAogCXJlc3VsdC0+aGVhcF90dXBsZXMgPSByZWx0dXBsZXM7CiAJcmVzdWx0LT5pbmRleF90 dXBsZXMgPSBidWlsZHN0YXRlLmluZHR1cGxlczsKKwlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29u Y3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54aWQpKTsKIAogCXJldHVy biByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0u YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCmluZGV4IGVkMmUzMDIxNzk5Li40 ZDI4MDcwYTIxMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTUzLDYgKzUzLDcgQEAK ICNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgogI2luY2x1ZGUgInV0aWxzL3NwY2NhY2hlLmgiCiAj aW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9p bnQuaCIKIAogCiBzdGF0aWMgSGVhcFR1cGxlIGhlYXBfcHJlcGFyZV9pbnNlcnQoUmVsYXRpb24g cmVsYXRpb24sIEhlYXBUdXBsZSB0dXAsCkBAIC02MTIsNiArNjEzLDM2IEBAIGhlYXBfcHJlcGFy ZV9wYWdlc2NhbihUYWJsZVNjYW5EZXNjIHNzY2FuKQogCUxvY2tCdWZmZXIoYnVmZmVyLCBCVUZG RVJfTE9DS19VTkxPQ0spOwogfQogCisvKgorICogUmVzZXQgdGhlIGFjdGl2ZSBzbmFwc2hvdCBk dXJpbmcgYSBzY2FuLgorICogVGhpcyBlbnN1cmVzIHRoZSB4bWluIGhvcml6b24gY2FuIGFkdmFu Y2Ugd2hpbGUgbWFpbnRhaW5pbmcgc2FmZSB0dXBsZSB2aXNpYmlsaXR5LgorICogTm90ZTogTm8g b3RoZXIgc25hcHNob3Qgc2hvdWxkIGJlIGFjdGl2ZSBkdXJpbmcgdGhpcyBvcGVyYXRpb24uCisg Ki8KK3N0YXRpYyBpbmxpbmUgdm9pZAoraGVhcF9yZXNldF9zY2FuX3NuYXBzaG90KFRhYmxlU2Nh bkRlc2Mgc3NjYW4pCit7CisJLyogTWFrZSBzdXJlIG5vIG90aGVyIHNuYXBzaG90IHdhcyBzZXQg YXMgYWN0aXZlLiAqLworCUFzc2VydChHZXRBY3RpdmVTbmFwc2hvdCgpID09IHNzY2FuLT5yc19z bmFwc2hvdCk7CisJLyogQW5kIG1ha2Ugc3VyZSBhY3RpdmUgc25hcHNob3QgaXMgbm90IHJlZ2lz dGVyZWQuICovCisJQXNzZXJ0KEdldEFjdGl2ZVNuYXBzaG90KCktPnJlZ2RfY291bnQgPT0gMCk7 CisJUG9wQWN0aXZlU25hcHNob3QoKTsKKworCXNzY2FuLT5yc19zbmFwc2hvdCA9IEludmFsaWRT bmFwc2hvdDsgLyoganVzdCBvdCBiZSB0aWR5ICovCisJQXNzZXJ0KCFIYXZlUmVnaXN0ZXJlZE9y QWN0aXZlU25hcHNob3QoKSk7CisJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCisJLyog R29hbCBvZiBzbmFwc2hvdCByZXNldCBpcyB0byBhbGxvdyBob3Jpem9uIHRvIGFkdmFuY2UuICov CisJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKyNpZiBVU0Vf SU5KRUNUSU9OX1BPSU5UUworCS8qIEluIHNvbWUgY2FzZXMgaXQgaXMgc3RpbGwgbm90IHBvc3Np YmxlIGR1ZSB4aWQgYXNzaWduLiAqLworCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9j LT54aWQpKQorCQlJTkpFQ1RJT05fUE9JTlQoImhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZl Y3RpdmUiKTsKKyNlbmRpZgorCisJUHVzaEFjdGl2ZVNuYXBzaG90KEdldExhdGVzdFNuYXBzaG90 KCkpOworCXNzY2FuLT5yc19zbmFwc2hvdCA9IEdldEFjdGl2ZVNuYXBzaG90KCk7Cit9CisKIC8q CiAgKiBoZWFwX2ZldGNoX25leHRfYnVmZmVyIC0gcmVhZCBhbmQgcGluIHRoZSBuZXh0IGJsb2Nr IGZyb20gTUFJTl9GT1JLTlVNLgogICoKQEAgLTY1Myw3ICs2ODQsMTIgQEAgaGVhcF9mZXRjaF9u ZXh0X2J1ZmZlcihIZWFwU2NhbkRlc2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIpCiAKIAlzY2Fu LT5yc19jYnVmID0gcmVhZF9zdHJlYW1fbmV4dF9idWZmZXIoc2Nhbi0+cnNfcmVhZF9zdHJlYW0s IE5VTEwpOwogCWlmIChCdWZmZXJJc1ZhbGlkKHNjYW4tPnJzX2NidWYpKQorCXsKIAkJc2Nhbi0+ cnNfY2Jsb2NrID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIoc2Nhbi0+cnNfY2J1Zik7CisJCWlmICgo c2Nhbi0+cnNfYmFzZS5yc19mbGFncyAmIFNPX1JFU0VUX1NOQVBTSE9UKSAmJgorCQkJKHNjYW4t PnJzX2NibG9jayAlIFNPX1JFU0VUX1NOQVBTSE9UX0VBQ0hfTl9QQUdFID09IDApKQorCQkJaGVh cF9yZXNldF9zY2FuX3NuYXBzaG90KChUYWJsZVNjYW5EZXNjKSBzY2FuKTsKKwl9CiB9CiAKIC8q CkBAIC0xMzA0LDYgKzEzNDAsMTUgQEAgaGVhcF9lbmRzY2FuKFRhYmxlU2NhbkRlc2Mgc3NjYW4p CiAJaWYgKHNjYW4tPnJzX3BhcmFsbGVsd29ya2VyZGF0YSAhPSBOVUxMKQogCQlwZnJlZShzY2Fu LT5yc19wYXJhbGxlbHdvcmtlcmRhdGEpOwogCisJaWYgKHNjYW4tPnJzX2Jhc2UucnNfZmxhZ3Mg JiBTT19SRVNFVF9TTkFQU0hPVCkKKwl7CisJCUFzc2VydCghKHNjYW4tPnJzX2Jhc2UucnNfZmxh Z3MgJiBTT19URU1QX1NOQVBTSE9UKSk7CisJCS8qIE1ha2Ugc3VyZSBubyBvdGhlciBzbmFwc2hv dCB3YXMgc2V0IGFzIGFjdGl2ZS4gKi8KKwkJQXNzZXJ0KEdldEFjdGl2ZVNuYXBzaG90KCkgPT0g c3NjYW4tPnJzX3NuYXBzaG90KTsKKwkJLyogQW5kIG1ha2Ugc3VyZSBzbmFwc2hvdCBpcyBub3Qg cmVnaXN0ZXJlZC4gKi8KKwkJQXNzZXJ0KEdldEFjdGl2ZVNuYXBzaG90KCktPnJlZ2RfY291bnQg PT0gMCk7CisJfQorCiAJaWYgKHNjYW4tPnJzX2Jhc2UucnNfZmxhZ3MgJiBTT19URU1QX1NOQVBT SE9UKQogCQlVbnJlZ2lzdGVyU25hcHNob3Qoc2Nhbi0+cnNfYmFzZS5yc19zbmFwc2hvdCk7CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4IGFjMDgyZmVmYTc3 Li44YTU4NGRiNTk1YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt X2hhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5j CkBAIC0xMTk0LDYgKzExOTQsOCBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxh dGlvbiBoZWFwUmVsYXRpb24sCiAJRXhwckNvbnRleHQgKmVjb250ZXh0OwogCVNuYXBzaG90CXNu YXBzaG90OwogCWJvb2wJCW5lZWRfdW5yZWdpc3Rlcl9zbmFwc2hvdCA9IGZhbHNlOworCWJvb2wJ CW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IGZhbHNlOworCWJvb2wJCXJlc2V0X3NuYXBzaG90 cyA9IGZhbHNlOwogCVRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbjsKIAlCbG9ja051bWJlciBwcmV2 aW91c19ibGtubyA9IEludmFsaWRCbG9ja051bWJlcjsKIAlCbG9ja051bWJlciByb290X2Jsa25v ID0gSW52YWxpZEJsb2NrTnVtYmVyOwpAQCAtMTIyOCw5ICsxMjMwLDYgQEAgaGVhcGFtX2luZGV4 X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCS8qIEFycmFuZ2UgZm9y IGVjb250ZXh0J3Mgc2NhbiB0dXBsZSB0byBiZSB0aGUgdHVwbGUgdW5kZXIgdGVzdCAqLwogCWVj b250ZXh0LT5lY3h0X3NjYW50dXBsZSA9IHNsb3Q7CiAKLQkvKiBTZXQgdXAgZXhlY3V0aW9uIHN0 YXRlIGZvciBwcmVkaWNhdGUsIGlmIGFueS4gKi8KLQlwcmVkaWNhdGUgPSBFeGVjUHJlcGFyZVF1 YWwoaW5kZXhJbmZvLT5paV9QcmVkaWNhdGUsIGVzdGF0ZSk7Ci0KIAkvKgogCSAqIFByZXBhcmUg Zm9yIHNjYW4gb2YgdGhlIGJhc2UgcmVsYXRpb24uICBJbiBhIG5vcm1hbCBpbmRleCBidWlsZCwg d2UgdXNlCiAJICogU25hcHNob3RBbnkgYmVjYXVzZSB3ZSBtdXN0IHJldHJpZXZlIGFsbCB0dXBs ZXMgYW5kIGRvIG91ciBvd24gdGltZQpAQCAtMTI0MCw2ICsxMjM5LDE1IEBAIGhlYXBhbV9pbmRl eF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkgKi8KIAlPbGRlc3RY bWluID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKKwkvKgorCSAqIEZvciB1bmlxdWUgaW5kZXgg d2UgbmVlZCBjb25zaXN0ZW50IHNuYXBzaG90IGZvciB0aGUgd2hvbGUgc2Nhbi4KKwkgKiBJbiBj YXNlIG9mIHBhcmFsbGVsIHNjYW4gc29tZSBhZGRpdGlvbmFsIGluZnJhc3RydWN0dXJlIHJlcXVp cmVkCisJICogdG8gcGVyZm9ybSBzY2FuIHdpdGggU09fUkVTRVRfU05BUFNIT1Qgd2hpY2ggaXMg bm90IHlldCByZWFkeS4KKwkgKi8KKwlyZXNldF9zbmFwc2hvdHMgPSBpbmRleEluZm8tPmlpX0Nv bmN1cnJlbnQgJiYKKwkJCQkJICAhaW5kZXhJbmZvLT5paV9VbmlxdWUgJiYKKwkJCQkJICAhaXNf c3lzdGVtX2NhdGFsb2c7IC8qIGp1c3QgZm9yIHRoZSBjYXNlICovCisKIAkvKiBva2F5IHRvIGln bm9yZSBsYXp5IFZBQ1VVTXMgaGVyZSAqLwogCWlmICghSXNCb290c3RyYXBQcm9jZXNzaW5nTW9k ZSgpICYmICFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQpCiAJCU9sZGVzdFhtaW4gPSBHZXRPbGRl c3ROb25SZW1vdmFibGVUcmFuc2FjdGlvbklkKGhlYXBSZWxhdGlvbik7CkBAIC0xMjQ4LDI0ICsx MjU2LDQxIEBAIGhlYXBhbV9pbmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxh dGlvbiwKIAl7CiAJCS8qCiAJCSAqIFNlcmlhbCBpbmRleCBidWlsZC4KLQkJICoKLQkJICogTXVz dCBiZWdpbiBvdXIgb3duIGhlYXAgc2NhbiBpbiB0aGlzIGNhc2UuICBXZSBtYXkgYWxzbyBuZWVk IHRvCi0JCSAqIHJlZ2lzdGVyIGEgc25hcHNob3Qgd2hvc2UgbGlmZXRpbWUgaXMgdW5kZXIgb3Vy IGRpcmVjdCBjb250cm9sLgogCQkgKi8KIAkJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChPbGRl c3RYbWluKSkKIAkJewotCQkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0 aW9uU25hcHNob3QoKSk7Ci0JCQluZWVkX3VucmVnaXN0ZXJfc25hcHNob3QgPSB0cnVlOworCQkJ c25hcHNob3QgPSBHZXRUcmFuc2FjdGlvblNuYXBzaG90KCk7CisJCQkvKgorCQkJICogTXVzdCBi ZWdpbiBvdXIgb3duIGhlYXAgc2NhbiBpbiB0aGlzIGNhc2UuICBXZSBtYXkgYWxzbyBuZWVkIHRv CisJCQkgKiByZWdpc3RlciBhIHNuYXBzaG90IHdob3NlIGxpZmV0aW1lIGlzIHVuZGVyIG91ciBk aXJlY3QgY29udHJvbC4KKwkJCSAqIEluIGNhc2Ugb2YgcmVzZXR0aW5nIG9mIHNuYXBzaG90IGR1 cmluZyB0aGUgc2NhbiByZWdpc3RyYXRpb24gaXMKKwkJCSAqIG5vdCBhbGxvd2VkIGJlY2F1c2Ug c25hcHNob3QgaXMgZ29pbmcgdG8gYmUgY2hhbmdlZCBldmVyeSBzbworCQkJICogb2Z0ZW4uCisJ CQkgKi8KKwkJCWlmICghcmVzZXRfc25hcHNob3RzKQorCQkJeworCQkJCXNuYXBzaG90ID0gUmVn aXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CisJCQkJbmVlZF91bnJlZ2lzdGVyX3NuYXBzaG90ID0g dHJ1ZTsKKwkJCX0KKwkJCUFzc2VydCghQWN0aXZlU25hcHNob3RTZXQoKSk7CisJCQlQdXNoQWN0 aXZlU25hcHNob3Qoc25hcHNob3QpOworCQkJLyogc3RvcmUgbGluayB0byBzbmFwc2hvdCBiZWNh dXNlIGl0IG1heSBiZSBjb3BpZWQgKi8KKwkJCXNuYXBzaG90ID0gR2V0QWN0aXZlU25hcHNob3Qo KTsKKwkJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7CiAJCX0KIAkJZWxzZQorCQl7 CisJCQlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCk7CiAJCQlzbmFwc2hvdCA9IFNu YXBzaG90QW55OworCQl9CiAKIAkJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChoZWFwUmVs YXRpb24sCS8qIHJlbGF0aW9uICovCiAJCQkJCQkJCQkgc25hcHNob3QsCS8qIHNuYXBzaG90ICov CiAJCQkJCQkJCQkgMCwgLyogbnVtYmVyIG9mIGtleXMgKi8KIAkJCQkJCQkJCSBOVUxMLAkvKiBz Y2FuIGtleSAqLwogCQkJCQkJCQkJIHRydWUsCS8qIGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kgT0sg Ki8KLQkJCQkJCQkJCSBhbGxvd19zeW5jKTsJLyogc3luY3NjYW4gT0s/ICovCisJCQkJCQkJCQkg YWxsb3dfc3luYywJLyogc3luY3NjYW4gT0s/ICovCisJCQkJCQkJCQkgcmVzZXRfc25hcHNob3Rz IC8qIHJlc2V0IHNuYXBzaG90cz8gKi8pOwogCX0KIAllbHNlCiAJewpAQCAtMTI3OSw2ICsxMzA0 LDggQEAgaGVhcGFtX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9u LAogCQlBc3NlcnQoIUlzQm9vdHN0cmFwUHJvY2Vzc2luZ01vZGUoKSk7CiAJCUFzc2VydChhbGxv d19zeW5jKTsKIAkJc25hcHNob3QgPSBzY2FuLT5yc19zbmFwc2hvdDsKKwkJUHVzaEFjdGl2ZVNu YXBzaG90KHNuYXBzaG90KTsKKwkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKIAl9 CiAKIAloc2NhbiA9IChIZWFwU2NhbkRlc2MpIHNjYW47CkBAIC0xMjkzLDYgKzEzMjAsMTMgQEAg aGVhcGFtX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCUFz c2VydChzbmFwc2hvdCA9PSBTbmFwc2hvdEFueSA/IFRyYW5zYWN0aW9uSWRJc1ZhbGlkKE9sZGVz dFhtaW4pIDoKIAkJICAgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE9sZGVzdFhtaW4pKTsKIAlBc3Nl cnQoc25hcHNob3QgPT0gU25hcHNob3RBbnkgfHwgIWFueXZpc2libGUpOworCUFzc2VydChzbmFw c2hvdCA9PSBTbmFwc2hvdEFueSB8fCBBY3RpdmVTbmFwc2hvdFNldCgpKTsKKworCS8qIFNldCB1 cCBleGVjdXRpb24gc3RhdGUgZm9yIHByZWRpY2F0ZSwgaWYgYW55LiAqLworCXByZWRpY2F0ZSA9 IEV4ZWNQcmVwYXJlUXVhbChpbmRleEluZm8tPmlpX1ByZWRpY2F0ZSwgZXN0YXRlKTsKKwkvKiBD bGVhciByZWZlcmVuY2UgdG8gc25hcHNob3Qgc2luY2UgaXQgbWF5IGJlIGNoYW5nZWQgYnkgdGhl IHNjYW4gaXRzZWxmLiAqLworCWlmIChyZXNldF9zbmFwc2hvdHMpCisJCXNuYXBzaG90ID0gSW52 YWxpZFNuYXBzaG90OwogCiAJLyogUHVibGlzaCBudW1iZXIgb2YgYmxvY2tzIHRvIHNjYW4gKi8K IAlpZiAocHJvZ3Jlc3MpCkBAIC0xNzI4LDYgKzE3NjIsOCBAQCBoZWFwYW1faW5kZXhfYnVpbGRf cmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAKIAl0YWJsZV9lbmRzY2FuKHNjYW4p OwogCisJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJUG9wQWN0aXZlU25hcHNob3Qo KTsKIAkvKiB3ZSBjYW4gbm93IGZvcmdldCBvdXIgc25hcHNob3QsIGlmIHNldCBhbmQgcmVnaXN0 ZXJlZCBieSB1cyAqLwogCWlmIChuZWVkX3VucmVnaXN0ZXJfc25hcHNob3QpCiAJCVVucmVnaXN0 ZXJTbmFwc2hvdChzbmFwc2hvdCk7CkBAIC0xODAwLDcgKzE4MzYsOCBAQCBoZWFwYW1faW5kZXhf dmFsaWRhdGVfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJCQkJCSAwLCAvKiBudW1i ZXIgb2Yga2V5cyAqLwogCQkJCQkJCQkgTlVMTCwJLyogc2NhbiBrZXkgKi8KIAkJCQkJCQkJIHRy dWUsCS8qIGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kgT0sgKi8KLQkJCQkJCQkJIGZhbHNlKTsJLyog c3luY3NjYW4gbm90IE9LICovCisJCQkJCQkJCSBmYWxzZSwJLyogc3luY3NjYW4gbm90IE9LICov CisJCQkJCQkJCSBmYWxzZSk7CiAJaHNjYW4gPSAoSGVhcFNjYW5EZXNjKSBzY2FuOwogCiAJcGdz dGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19TQ0FOX0JMT0NLU19UT1RBTCwKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2luZGV4L2dlbmFtLmMKaW5kZXggOGY1MzJlMTQ1OTAuLjQyOTIxMDIwMzE2IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYwpAQCAtNDY0LDcgKzQ2NCw3IEBAIHN5c3RhYmxlX2JlZ2lu c2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCSAqLwogCQlzeXNzY2FuLT5zY2FuID0gdGFi bGVfYmVnaW5zY2FuX3N0cmF0KGhlYXBSZWxhdGlvbiwgc25hcHNob3QsCiAJCQkJCQkJCQkJCSAg bmtleXMsIGtleSwKLQkJCQkJCQkJCQkJICB0cnVlLCBmYWxzZSk7CisJCQkJCQkJCQkJCSAgdHJ1 ZSwgZmFsc2UsIGZhbHNlKTsKIAkJc3lzc2Nhbi0+aXNjYW4gPSBOVUxMOwogCX0KIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvbmJ0cmVlL25idHNvcnQuYwppbmRleCAzNzk0Y2M5MjRhZC4uZjM5ODZkMDg2YjYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCkBAIC0yNTgsNyArMjU4LDcgQEAgc3RhdGlj IGRvdWJsZSBfYnRfc3Bvb2xzX2hlYXBzY2FuKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4 LAogc3RhdGljIHZvaWQgX2J0X3Nwb29sZGVzdHJveShCVFNwb29sICpidHNwb29sKTsKIHN0YXRp YyB2b2lkIF9idF9zcG9vbChCVFNwb29sICpidHNwb29sLCBJdGVtUG9pbnRlciBzZWxmLAogCQkJ CQkgIERhdHVtICp2YWx1ZXMsIGJvb2wgKmlzbnVsbCk7Ci1zdGF0aWMgdm9pZCBfYnRfbGVhZmJ1 aWxkKEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyKTsKK3N0YXRpYyB2b2lkIF9i dF9sZWFmYnVpbGQoQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIsIGJvb2wgcmVz ZXRfc25hcHNob3RzKTsKIHN0YXRpYyB2b2lkIF9idF9idWlsZF9jYWxsYmFjayhSZWxhdGlvbiBp bmRleCwgSXRlbVBvaW50ZXIgdGlkLCBEYXR1bSAqdmFsdWVzLAogCQkJCQkJCSAgIGJvb2wgKmlz bnVsbCwgYm9vbCB0dXBsZUlzQWxpdmUsIHZvaWQgKnN0YXRlKTsKIHN0YXRpYyBCdWxrV3JpdGVC dWZmZXIgX2J0X2JsbmV3cGFnZShCVFdyaXRlU3RhdGUgKndzdGF0ZSwgdWludDMyIGxldmVsKTsK QEAgLTMyMSwxOCArMzIxLDIyIEBAIGJ0YnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5k ZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQkJIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGlu ZGV4KSk7CiAKIAlyZWx0dXBsZXMgPSBfYnRfc3Bvb2xzX2hlYXBzY2FuKGhlYXAsIGluZGV4LCAm YnVpbGRzdGF0ZSwgaW5kZXhJbmZvKTsKKwlBc3NlcnQoaW5kZXhJbmZvLT5paV9QYXJhbGxlbFdv cmtlcnMgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwKKwkJICAhaW5kZXhJbmZvLT5paV9Db25j dXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8qCiAJ ICogRmluaXNoIHRoZSBidWlsZCBieSAoMSkgY29tcGxldGluZyB0aGUgc29ydCBvZiB0aGUgc3Bv b2wgZmlsZSwgKDIpCiAJICogaW5zZXJ0aW5nIHRoZSBzb3J0ZWQgdHVwbGVzIGludG8gYnRyZWUg cGFnZXMgYW5kICgzKSBidWlsZGluZyB0aGUgdXBwZXIKIAkgKiBsZXZlbHMuICBGaW5hbGx5LCBp dCBtYXkgYWxzbyBiZSBuZWNlc3NhcnkgdG8gZW5kIHVzZSBvZiBwYXJhbGxlbGlzbS4KIAkgKi8K LQlfYnRfbGVhZmJ1aWxkKGJ1aWxkc3RhdGUuc3Bvb2wsIGJ1aWxkc3RhdGUuc3Bvb2wyKTsKKwlf YnRfbGVhZmJ1aWxkKGJ1aWxkc3RhdGUuc3Bvb2wsIGJ1aWxkc3RhdGUuc3Bvb2wyLCAhaW5kZXhJ bmZvLT5paV9QYXJhbGxlbFdvcmtlcnMgJiYgaW5kZXhJbmZvLT5paV9Db25jdXJyZW50KTsKIAlf YnRfc3Bvb2xkZXN0cm95KGJ1aWxkc3RhdGUuc3Bvb2wpOwogCWlmIChidWlsZHN0YXRlLnNwb29s MikKIAkJX2J0X3Nwb29sZGVzdHJveShidWlsZHN0YXRlLnNwb29sMik7CiAJaWYgKGJ1aWxkc3Rh dGUuYnRsZWFkZXIpCiAJCV9idF9lbmRfcGFyYWxsZWwoYnVpbGRzdGF0ZS5idGxlYWRlcik7CisJ QXNzZXJ0KGluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzIHx8IGluZGV4SW5mby0+aWlfVW5p cXVlIHx8CisJCSAgIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElz VmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAlyZXN1bHQgPSAoSW5kZXhCdWlsZFJlc3VsdCAqKSBw YWxsb2Moc2l6ZW9mKEluZGV4QnVpbGRSZXN1bHQpKTsKIApAQCAtNDgwLDYgKzQ4NCw5IEBAIF9i dF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEJUQnVpbGRT dGF0ZSAqYnVpbGRzdGF0ZSwKIAllbHNlCiAJCXJlbHR1cGxlcyA9IF9idF9wYXJhbGxlbF9oZWFw c2NhbihidWlsZHN0YXRlLAogCQkJCQkJCQkJCSAgJmluZGV4SW5mby0+aWlfQnJva2VuSG90Q2hh aW4pOworCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwlBc3NlcnQoaW5kZXhJbmZvLT5p aV9QYXJhbGxlbFdvcmtlcnMgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwKKwkJICAhaW5kZXhJ bmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4p KTsKIAogCS8qCiAJICogU2V0IHRoZSBwcm9ncmVzcyB0YXJnZXQgZm9yIHRoZSBuZXh0IHBoYXNl LiAgUmVzZXQgdGhlIGJsb2NrIG51bWJlcgpAQCAtNTM1LDcgKzU0Miw3IEBAIF9idF9zcG9vbChC VFNwb29sICpidHNwb29sLCBJdGVtUG9pbnRlciBzZWxmLCBEYXR1bSAqdmFsdWVzLCBib29sICpp c251bGwpCiAgKiBjcmVhdGUgYW4gZW50aXJlIGJ0cmVlLgogICovCiBzdGF0aWMgdm9pZAotX2J0 X2xlYWZidWlsZChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMikKK19idF9sZWFm YnVpbGQoQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIsIGJvb2wgcmVzZXRfc25h cHNob3RzKQogewogCUJUV3JpdGVTdGF0ZSB3c3RhdGU7CiAKQEAgLTU1NywxOCArNTY0LDIxIEBA IF9idF9sZWFmYnVpbGQoQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIpCiAJCQkJ CQkJCQkgUFJPR1JFU1NfQlRSRUVfUEhBU0VfUEVSRk9STVNPUlRfMik7CiAJCXR1cGxlc29ydF9w ZXJmb3Jtc29ydChidHNwb29sMi0+c29ydHN0YXRlKTsKIAl9CisJQXNzZXJ0KCFyZXNldF9zbmFw c2hvdHMgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJd3N0YXRl LmhlYXAgPSBidHNwb29sLT5oZWFwOwogCXdzdGF0ZS5pbmRleCA9IGJ0c3Bvb2wtPmluZGV4Owog CXdzdGF0ZS5pbnNrZXkgPSBfYnRfbWtzY2Fua2V5KHdzdGF0ZS5pbmRleCwgTlVMTCk7CiAJLyog X2J0X21rc2NhbmtleSgpIHdvbid0IHNldCBhbGxlcXVhbGltYWdlIHdpdGhvdXQgbWV0YXBhZ2Ug Ki8KIAl3c3RhdGUuaW5za2V5LT5hbGxlcXVhbGltYWdlID0gX2J0X2FsbGVxdWFsaW1hZ2Uod3N0 YXRlLmluZGV4LCB0cnVlKTsKKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CiAKIAkvKiBy ZXNlcnZlIHRoZSBtZXRhcGFnZSAqLwogCXdzdGF0ZS5idHdzX3BhZ2VzX2FsbG9jZWQgPSBCVFJF RV9NRVRBUEFHRSArIDE7CiAKIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNT X0NSRUFURUlEWF9TVUJQSEFTRSwKIAkJCQkJCQkJIFBST0dSRVNTX0JUUkVFX1BIQVNFX0xFQUZf TE9BRCk7CisJQXNzZXJ0KCFyZXNldF9zbmFwc2hvdHMgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlk KE15UHJvYy0+eG1pbikpOwogCV9idF9sb2FkKCZ3c3RhdGUsIGJ0c3Bvb2wsIGJ0c3Bvb2wyKTsK IH0KIApAQCAtMTQwOSw2ICsxNDE5LDcgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0 ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCVdhbFVzYWdl ICAgKndhbHVzYWdlOwogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKIAlib29sCQlsZWFkZXJw YXJ0aWNpcGF0ZXMgPSB0cnVlOworCWJvb2wJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRy dWU7CiAJaW50CQkJcXVlcnlsZW47CiAKICNpZmRlZiBESVNBQkxFX0xFQURFUl9QQVJUSUNJUEFU SU9OCkBAIC0xNDM0LDkgKzE0NDUsMTYgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0 ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCSAqIGxpdmUg YWNjb3JkaW5nIHRvIHRoYXQuCiAJICovCiAJaWYgKCFpc2NvbmN1cnJlbnQpCisJeworCQlBc3Nl cnQoQWN0aXZlU25hcHNob3RTZXQoKSk7CiAJCXNuYXBzaG90ID0gU25hcHNob3RBbnk7CisJCW5l ZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IGZhbHNlOworCX0KIAllbHNlCisJewogCQlzbmFwc2hv dCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkJUHVzaEFj dGl2ZVNuYXBzaG90KHNuYXBzaG90KTsKKwl9CiAKIAkvKgogCSAqIEVzdGltYXRlIHNpemUgZm9y IG91ciBvd24gUEFSQUxMRUxfS0VZX0JUUkVFX1NIQVJFRCB3b3Jrc3BhY2UsIGFuZApAQCAtMTQ5 MCw2ICsxNTA4LDggQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0 ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCS8qIElmIG5vIERTTSBzZWdtZW50 IHdhcyBhdmFpbGFibGUsIGJhY2sgb3V0IChkbyBzZXJpYWwgYnVpbGQpICovCiAJaWYgKHBjeHQt PnNlZyA9PSBOVUxMKQogCXsKKwkJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJCVBv cEFjdGl2ZVNuYXBzaG90KCk7CiAJCWlmIChJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCiAJCQlV bnJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3QpOwogCQlEZXN0cm95UGFyYWxsZWxDb250ZXh0KHBj eHQpOwpAQCAtMTU4NCw2ICsxNjA0LDggQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0 ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCS8qIElmIG5v IHdvcmtlcnMgd2VyZSBzdWNjZXNzZnVsbHkgbGF1bmNoZWQsIGJhY2sgb3V0IChkbyBzZXJpYWwg YnVpbGQpICovCiAJaWYgKHBjeHQtPm53b3JrZXJzX2xhdW5jaGVkID09IDApCiAJeworCQlpZiAo bmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkJX2J0 X2VuZF9wYXJhbGxlbChidGxlYWRlcik7CiAJCXJldHVybjsKIAl9CkBAIC0xNjAwLDYgKzE2MjIs OCBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlz Y29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJICogc3VyZSB0aGF0IHRoZSBmYWlsdXJlLXRvLXN0 YXJ0IGNhc2Ugd2lsbCBub3QgaGFuZyBmb3JldmVyLgogCSAqLwogCVdhaXRGb3JQYXJhbGxlbFdv cmtlcnNUb0F0dGFjaChwY3h0KTsKKwlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQlQ b3BBY3RpdmVTbmFwc2hvdCgpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL3NwZ2lzdC9zcGdpbnNlcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BnaW5z ZXJ0LmMKaW5kZXggNmE2MWUwOTNmYTAuLjA2YzAxY2YzMzYwIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2luc2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9z cGdpc3Qvc3BnaW5zZXJ0LmMKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJub2Rlcy9leGVj bm9kZXMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv YnVsa193cml0ZS5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInV0aWxz L21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAKQEAgLTE0Myw2ICsxNDQsNyBA QCBzcGdidWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRl eEluZm8pCiAJcmVzdWx0ID0gKEluZGV4QnVpbGRSZXN1bHQgKikgcGFsbG9jMChzaXplb2YoSW5k ZXhCdWlsZFJlc3VsdCkpOwogCXJlc3VsdC0+aGVhcF90dXBsZXMgPSByZWx0dXBsZXM7CiAJcmVz dWx0LT5pbmRleF90dXBsZXMgPSBidWlsZHN0YXRlLmluZHR1cGxlczsKKwlBc3NlcnQoIWluZGV4 SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWlu KSk7CiAKIAlyZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IDczOWE5MmJkY2Mx Li5jYmQwYmE5YWEwMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisr KyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAtODAsNiArODAsNyBAQAogI2luY2x1 ZGUgInV0aWxzL3NuYXBtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogI2luY2x1 ZGUgInV0aWxzL3R1cGxlc29ydC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogCiAvKiBQ b3RlbnRpYWxseSBzZXQgYnkgcGdfdXBncmFkZV9zdXBwb3J0IGZ1bmN0aW9ucyAqLwogT2lkCQkJ YmluYXJ5X3VwZ3JhZGVfbmV4dF9pbmRleF9wZ19jbGFzc19vaWQgPSBJbnZhbGlkT2lkOwpAQCAt MTQ5Miw4ICsxNDkzLDggQEAgaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKE9pZCBoZWFwUmVsYXRp b25JZCwKIAlSZWxhdGlvbglpbmRleFJlbGF0aW9uOwogCUluZGV4SW5mbyAgKmluZGV4SW5mbzsK IAotCS8qIFRoaXMgaGFkIGJldHRlciBtYWtlIHN1cmUgdGhhdCBhIHNuYXBzaG90IGlzIGFjdGl2 ZSAqLwotCUFzc2VydChBY3RpdmVTbmFwc2hvdFNldCgpKTsKKwlBc3NlcnQoIVRyYW5zYWN0aW9u SWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQo TXlQcm9jLT54aWQpKTsKIAogCS8qIE9wZW4gYW5kIGxvY2sgdGhlIHBhcmVudCBoZWFwIHJlbGF0 aW9uICovCiAJaGVhcFJlbCA9IHRhYmxlX29wZW4oaGVhcFJlbGF0aW9uSWQsIFNoYXJlVXBkYXRl RXhjbHVzaXZlTG9jayk7CkBAIC0xNTExLDE5ICsxNTEyLDI4IEBAIGluZGV4X2NvbmN1cnJlbnRs eV9idWlsZChPaWQgaGVhcFJlbGF0aW9uSWQsCiAKIAlpbmRleFJlbGF0aW9uID0gaW5kZXhfb3Bl bihpbmRleFJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCisJLyogQnVpbGRJbmRleElu Zm8gbWF5IHJlcXVpcmUgYXMgc25hcHNob3QgZm9yIGV4cHJlc3Npb25zIGFuZCBwcmVkaWNhdGVz ICovCisJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CiAJLyoK IAkgKiBXZSBoYXZlIHRvIHJlLWJ1aWxkIHRoZSBJbmRleEluZm8gc3RydWN0LCBzaW5jZSBpdCB3 YXMgbG9zdCBpbiB0aGUKIAkgKiBjb21taXQgb2YgdGhlIHRyYW5zYWN0aW9uIHdoZXJlIHRoaXMg Y29uY3VycmVudCBpbmRleCB3YXMgY3JlYXRlZCBhdAogCSAqIHRoZSBjYXRhbG9nIGxldmVsLgog CSAqLwogCWluZGV4SW5mbyA9IEJ1aWxkSW5kZXhJbmZvKGluZGV4UmVsYXRpb24pOworCS8qIERv bmUgd2l0aCBzbmFwc2hvdCAqLworCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJQXNzZXJ0KCFpbmRl eEluZm8tPmlpX1JlYWR5Rm9ySW5zZXJ0cyk7CiAJaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ID0g dHJ1ZTsKIAlpbmRleEluZm8tPmlpX0Jyb2tlbkhvdENoYWluID0gZmFsc2U7CisJQXNzZXJ0KCFU cmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8qIE5vdyBidWlsZCB0aGUg aW5kZXggKi8KIAlpbmRleF9idWlsZChoZWFwUmVsLCBpbmRleFJlbGF0aW9uLCBpbmRleEluZm8s IGZhbHNlLCB0cnVlKTsKIAorCS8qIEludmFsaWRhdGUgY2F0YWxvZyBzbmFwc2hvdCBqdXN0IGZv ciBhc3NlcnQgKi8KKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisJQXNzZXJ0KChpbmRl eEluZm8tPmlpX1BhcmFsbGVsV29ya2VycyB8fCBpbmRleEluZm8tPmlpX1VuaXF1ZSkgfHwgIVRy YW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCiAJLyogUm9sbCBiYWNrIGFueSBH VUMgY2hhbmdlcyBleGVjdXRlZCBieSBpbmRleCBmdW5jdGlvbnMgKi8KIAlBdEVPWGFjdF9HVUMo ZmFsc2UsIHNhdmVfbmVzdGxldmVsKTsKIApAQCAtMTUzNCwxMiArMTU0NCwxOSBAQCBpbmRleF9j b25jdXJyZW50bHlfYnVpbGQoT2lkIGhlYXBSZWxhdGlvbklkLAogCXRhYmxlX2Nsb3NlKGhlYXBS ZWwsIE5vTG9jayk7CiAJaW5kZXhfY2xvc2UoaW5kZXhSZWxhdGlvbiwgTm9Mb2NrKTsKIAorCS8q CisJICogVXBkYXRpbmcgcGdfaW5kZXggbWlnaHQgaW52b2x2ZSBUT0FTVCB0YWJsZSBhY2Nlc3Ms IHNvIGVuc3VyZSB3ZQorCSAqIGhhdmUgYSB2YWxpZCBzbmFwc2hvdC4KKwkgKi8KKwlQdXNoQWN0 aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAkvKgogCSAqIFVwZGF0ZSB0 aGUgcGdfaW5kZXggcm93IHRvIG1hcmsgdGhlIGluZGV4IGFzIHJlYWR5IGZvciBpbnNlcnRzLiBP bmNlIHdlCiAJICogY29tbWl0IHRoaXMgdHJhbnNhY3Rpb24sIGFueSBuZXcgdHJhbnNhY3Rpb25z IHRoYXQgb3BlbiB0aGUgdGFibGUgbXVzdAogCSAqIGluc2VydCBuZXcgZW50cmllcyBpbnRvIHRo ZSBpbmRleCBmb3IgaW5zZXJ0aW9ucyBhbmQgbm9uLUhPVCB1cGRhdGVzLgogCSAqLwogCWluZGV4 X3NldF9zdGF0ZV9mbGFncyhpbmRleFJlbGF0aW9uSWQsIElOREVYX0NSRUFURV9TRVRfUkVBRFkp OworCS8qIHdlIGNhbiBkbyBhd2F5IHdpdGggb3VyIHNuYXBzaG90ICovCisJUG9wQWN0aXZlU25h cHNob3QoKTsKIH0KIAogLyoKQEAgLTMyMzYsNyArMzI1Myw4IEBAIEluZGV4Q2hlY2tFeGNsdXNp b24oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJCQkgMCwgLyogbnVtYmVyIG9mIGtleXMg Ki8KIAkJCQkJCQkJIE5VTEwsCS8qIHNjYW4ga2V5ICovCiAJCQkJCQkJCSB0cnVlLAkvKiBidWZm ZXIgYWNjZXNzIHN0cmF0ZWd5IE9LICovCi0JCQkJCQkJCSB0cnVlKTsgLyogc3luY3NjYW4gT0sg Ki8KKwkJCQkJCQkJIHRydWUsIC8qIHN5bmNzY2FuIE9LICovCisJCQkJCQkJCSBmYWxzZSk7CiAK IAl3aGlsZSAodGFibGVfc2Nhbl9nZXRuZXh0c2xvdChzY2FuLCBGb3J3YXJkU2NhbkRpcmVjdGlv biwgc2xvdCkpCiAJewpAQCAtMzI5OSwxMiArMzMxNywxNiBAQCBJbmRleENoZWNrRXhjbHVzaW9u KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKICAqIGFzIG9mIHRoZSBzdGFydCBvZiB0aGUgc2NhbiAo c2VlIHRhYmxlX2luZGV4X2J1aWxkX3NjYW4pLCB3aGVyZWFzIGEgbm9ybWFsCiAgKiBidWlsZCB0 YWtlcyBjYXJlIHRvIGluY2x1ZGUgcmVjZW50bHktZGVhZCB0dXBsZXMuICBUaGlzIGlzIE9LIGJl Y2F1c2UKICAqIHdlIHdvbid0IG1hcmsgdGhlIGluZGV4IHZhbGlkIHVudGlsIGFsbCB0cmFuc2Fj dGlvbnMgdGhhdCBtaWdodCBiZSBhYmxlCi0gKiB0byBzZWUgdGhvc2UgdHVwbGVzIGFyZSBnb25l LiAgVGhlIHJlYXNvbiBmb3IgZG9pbmcgdGhhdCBpcyB0byBhdm9pZAorICogdG8gc2VlIHRob3Nl IHR1cGxlcyBhcmUgZ29uZS4gIE9uZSBvZiByZWFzb25zIGZvciBkb2luZyB0aGF0IGlzIHRvIGF2 b2lkCiAgKiBib2d1cyB1bmlxdWUtaW5kZXggZmFpbHVyZXMgZHVlIHRvIGNvbmN1cnJlbnQgVVBE QVRFcyAod2UgbWlnaHQgc2VlCiAgKiBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgdGhlIHNhbWUgcm93 IGFzIGJlaW5nIHZhbGlkIHdoZW4gd2UgcGFzcyBvdmVyIHRoZW0sCiAgKiBpZiB3ZSB1c2VkIEhl YXBUdXBsZVNhdGlzZmllc1ZhY3V1bSkuICBUaGlzIGxlYXZlcyB1cyB3aXRoIGFuIGluZGV4IHRo YXQKICAqIGRvZXMgbm90IGNvbnRhaW4gYW55IHR1cGxlcyBhZGRlZCB0byB0aGUgdGFibGUgd2hp bGUgd2UgYnVpbHQgdGhlIGluZGV4LgogICoKKyAqIEZ1cnRoZXJtb3JlLCBpbiBjYXNlIG9mIG5v bi11bmlxdWUgaW5kZXggd2Ugc2V0IFNPX1JFU0VUX1NOQVBTSE9UIGZvciB0aGUKKyAqIHNjYW4s IHdoaWNoIGNhdXNlcyBuZXcgc25hcHNob3QgdG8gYmUgc2V0IGFzIGFjdGl2ZSBldmVyeSBzbyBv ZnRlbi4gVGhlIHJlYXNvbgorICogZm9yIHRoYXQgaXMgdG8gcHJvcGFnYXRlIHRoZSB4bWluIGhv cml6b24gZm9yd2FyZC4KKyAqCiAgKiBOZXh0LCB3ZSBtYXJrIHRoZSBpbmRleCAiaW5kaXNyZWFk eSIgKGJ1dCBzdGlsbCBub3QgImluZGlzdmFsaWQiKSBhbmQKICAqIGNvbW1pdCB0aGUgc2Vjb25k IHRyYW5zYWN0aW9uIGFuZCBzdGFydCBhIHRoaXJkLiAgQWdhaW4gd2Ugd2FpdCBmb3IgYWxsCiAg KiB0cmFuc2FjdGlvbnMgdGhhdCBjb3VsZCBoYXZlIGJlZW4gbW9kaWZ5aW5nIHRoZSB0YWJsZSB0 byB0ZXJtaW5hdGUuICBOb3cKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4 Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKaW5kZXggYmIwMTU1ZmRj MjQuLmQ2ODc2NDZlZmVkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNt ZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwpAQCAtMTY5NCwyMyAr MTY5NCwxNyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkgKiBjaGFpbnMgY2FuIGJlIGNy ZWF0ZWQgd2hlcmUgdGhlIG5ldyB0dXBsZSBhbmQgdGhlIG9sZCB0dXBsZSBpbiB0aGUKIAkgKiBj aGFpbiBoYXZlIGRpZmZlcmVudCBpbmRleCBrZXlzLgogCSAqCi0JICogV2Ugbm93IHRha2UgYSBu ZXcgc25hcHNob3QsIGFuZCBidWlsZCB0aGUgaW5kZXggdXNpbmcgYWxsIHR1cGxlcyB0aGF0Ci0J ICogYXJlIHZpc2libGUgaW4gdGhpcyBzbmFwc2hvdC4gIFdlIGNhbiBiZSBzdXJlIHRoYXQgYW55 IEhPVCB1cGRhdGVzIHRvCisJICogV2UgYnVpbGQgdGhlIGluZGV4IHVzaW5nIGFsbCB0dXBsZXMg dGhhdCBhcmUgdmlzaWJsZSB1c2luZyBzaW5nbGUgb3IKKwkgKiBtdWx0aXBsZSByZWZyZXNoaW5n IHNuYXBzaG90cy4gV2UgY2FuIGJlIHN1cmUgdGhhdCBhbnkgSE9UIHVwZGF0ZXMgdG8KIAkgKiB0 aGVzZSB0dXBsZXMgd2lsbCBiZSBjb21wYXRpYmxlIHdpdGggdGhlIGluZGV4LCBzaW5jZSBhbnkg dXBkYXRlcyBtYWRlCiAJICogYnkgdHJhbnNhY3Rpb25zIHRoYXQgZGlkbid0IGtub3cgYWJvdXQg dGhlIGluZGV4IGFyZSBub3cgY29tbWl0dGVkIG9yCiAJICogcm9sbGVkIGJhY2suICBUaHVzLCBl YWNoIHZpc2libGUgdHVwbGUgaXMgZWl0aGVyIHRoZSBlbmQgb2YgaXRzCiAJICogSE9ULWNoYWlu IG9yIHRoZSBleHRlbnNpb24gb2YgdGhlIGNoYWluIGlzIEhPVC1zYWZlIGZvciB0aGlzIGluZGV4 LgogCSAqLwogCi0JLyogU2V0IEFjdGl2ZVNuYXBzaG90IHNpbmNlIGZ1bmN0aW9ucyBpbiB0aGUg aW5kZXhlcyBtYXkgbmVlZCBpdCAqLwotCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlv blNuYXBzaG90KCkpOwotCiAJLyogUGVyZm9ybSBjb25jdXJyZW50IGJ1aWxkIG9mIGluZGV4ICov CiAJaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKHRhYmxlSWQsIGluZGV4UmVsYXRpb25JZCk7CiAK LQkvKiB3ZSBjYW4gZG8gYXdheSB3aXRoIG91ciBzbmFwc2hvdCAqLwotCVBvcEFjdGl2ZVNuYXBz aG90KCk7Ci0KIAkvKgogCSAqIENvbW1pdCB0aGlzIHRyYW5zYWN0aW9uIHRvIG1ha2UgdGhlIGlu ZGlzcmVhZHkgdXBkYXRlIHZpc2libGUuCiAJICovCkBAIC00MDczLDkgKzQwNjcsNiBAQCBSZWlu ZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxh dGlvbk9pZCwgY29uc3QgUmVpbgogCQlpZiAobmV3aWR4LT5zYWZlKQogCQkJc2V0X2luZGV4c2Fm ZV9wcm9jZmxhZ3MoKTsKIAotCQkvKiBTZXQgQWN0aXZlU25hcHNob3Qgc2luY2UgZnVuY3Rpb25z IGluIHRoZSBpbmRleGVzIG1heSBuZWVkIGl0ICovCi0JCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRU cmFuc2FjdGlvblNuYXBzaG90KCkpOwotCiAJCS8qCiAJCSAqIFVwZGF0ZSBwcm9ncmVzcyBmb3Ig dGhlIGluZGV4IHRvIGJ1aWxkLCB3aXRoIHRoZSBjb3JyZWN0IHBhcmVudAogCQkgKiB0YWJsZSBp bnZvbHZlZC4KQEAgLTQwOTAsNyArNDA4MSw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRs eShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJ CS8qIFBlcmZvcm0gY29uY3VycmVudCBidWlsZCBvZiBuZXcgaW5kZXggKi8KIAkJaW5kZXhfY29u Y3VycmVudGx5X2J1aWxkKG5ld2lkeC0+dGFibGVJZCwgbmV3aWR4LT5pbmRleElkKTsKIAotCQlQ b3BBY3RpdmVTbmFwc2hvdCgpOwogCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAl9CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyBiL3NyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwppbmRleCA1NjZjZTViM2NiNC4uNDQ1Y2Ez NzVlOWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwor KysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKQEAgLTYyLDYgKzYyLDcg QEAKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIK ICNpbmNsdWRlICJ1dGlscy9zZWxmdW5jcy5oIgorI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIK IAogLyogR1VDIHBhcmFtZXRlcnMgKi8KIGRvdWJsZQkJY3Vyc29yX3R1cGxlX2ZyYWN0aW9uID0g REVGQVVMVF9DVVJTT1JfVFVQTEVfRlJBQ1RJT047CkBAIC02ODUzLDYgKzY4NTQsNyBAQCBwbGFu X2NyZWF0ZV9pbmRleF93b3JrZXJzKE9pZCB0YWJsZU9pZCwgT2lkIGluZGV4T2lkKQogCVJlbGF0 aW9uCWhlYXA7CiAJUmVsYXRpb24JaW5kZXg7CiAJUmVsT3B0SW5mbyAqcmVsOworCWJvb2wJCW5l ZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IGZhbHNlOwogCWludAkJCXBhcmFsbGVsX3dvcmtlcnM7 CiAJQmxvY2tOdW1iZXIgaGVhcF9ibG9ja3M7CiAJZG91YmxlCQlyZWx0dXBsZXM7CkBAIC02OTA4 LDYgKzY5MTAsMTEgQEAgcGxhbl9jcmVhdGVfaW5kZXhfd29ya2VycyhPaWQgdGFibGVPaWQsIE9p ZCBpbmRleE9pZCkKIAloZWFwID0gdGFibGVfb3Blbih0YWJsZU9pZCwgTm9Mb2NrKTsKIAlpbmRl eCA9IGluZGV4X29wZW4oaW5kZXhPaWQsIE5vTG9jayk7CiAKKwkvKiBTZXQgQWN0aXZlU25hcHNo b3Qgc2luY2UgZnVuY3Rpb25zIGluIHRoZSBpbmRleGVzIG1heSBuZWVkIGl0ICovCisJaWYgKCFB Y3RpdmVTbmFwc2hvdFNldCgpKSB7CisJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlv blNuYXBzaG90KCkpOworCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSB0cnVlOworCX0KIAkv KgogCSAqIERldGVybWluZSBpZiBpdCdzIHNhZmUgdG8gcHJvY2VlZC4KIAkgKgpAQCAtNjk2NSw2 ICs2OTcyLDggQEAgcGxhbl9jcmVhdGVfaW5kZXhfd29ya2VycyhPaWQgdGFibGVPaWQsIE9pZCBp bmRleE9pZCkKIAkJcGFyYWxsZWxfd29ya2Vycy0tOwogCiBkb25lOgorCWlmIChuZWVkX3BvcF9h Y3RpdmVfc25hcHNob3QpCisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJaW5kZXhfY2xvc2UoaW5k ZXgsIE5vTG9jayk7CiAJdGFibGVfY2xvc2UoaGVhcCwgTm9Mb2NrKTsKIApkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5o CmluZGV4IGU0OGZlNDM0Y2QzLi42Y2FhZDQyZWE0YyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv YWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAtNDIs NiArNDIsOCBAQAogI2RlZmluZSBIRUFQX1BBR0VfUFJVTkVfTUFSS19VTlVTRURfTk9XCQkoMSA8 PCAwKQogI2RlZmluZSBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFCQkJCSgxIDw8IDEpCiAKKyNkZWZp bmUgU09fUkVTRVRfU05BUFNIT1RfRUFDSF9OX1BBR0UJCTQwOTYKKwogdHlwZWRlZiBzdHJ1Y3Qg QnVsa0luc2VydFN0YXRlRGF0YSAqQnVsa0luc2VydFN0YXRlOwogc3RydWN0IFR1cGxlVGFibGVT bG90Owogc3RydWN0IFZhY3V1bUN1dG9mZnM7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nl c3MvdGFibGVhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRleCA4NzEzZTEy Y2JmYi4uN2U4ZmE1ZTFiNTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFt LmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAtMjQsNiArMjQsNyBAQAog I2luY2x1ZGUgInN0b3JhZ2UvcmVhZF9zdHJlYW0uaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIK ICNpbmNsdWRlICJ1dGlscy9zbmFwc2hvdC5oIgorI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9w b2ludC5oIgogCiAKICNkZWZpbmUgREVGQVVMVF9UQUJMRV9BQ0NFU1NfTUVUSE9ECSJoZWFwIgpA QCAtNjIsNiArNjMsMTcgQEAgdHlwZWRlZiBlbnVtIFNjYW5PcHRpb25zCiAKIAkvKiB1bnJlZ2lz dGVyIHNuYXBzaG90IGF0IHNjYW4gZW5kPyAqLwogCVNPX1RFTVBfU05BUFNIT1QgPSAxIDw8IDks CisJLyoKKwkgKiBSZXNldCBzY2FuIGFuZCBjYXRhbG9nIHNuYXBzaG90IGV2ZXJ5IHNvIG9mdGVu PyBJZiBzbywgZWFjaAorCSAqIFNPX1JFU0VUX1NOQVBTSE9UX0VBQ0hfTl9QQUdFIHBhZ2VzIGFj dGl2ZSBzbmFwc2hvdCBpcyBwb3BwZWQsCisJICogY2F0YWxvZyBzbmFwc2hvdCBpbnZhbGlkYXRl ZCwgbGF0ZXN0IHNuYXBzaG90IHB1c2hlZCBhcyBhY3RpdmUuCisJICoKKwkgKiBBdCB0aGUgZW5k IG9mIHRoZSBzY2FuIHNuYXBzaG90IGlzIG5vdCBwb3BwZWQuCisJICogR29hbCBvZiBzdWNoIG1v ZGUgaXMga2VlcCB4bWluIHByb3BhZ2F0aW5nIGhvcml6b24gZm9yd2FyZC4KKwkgKgorCSAqIHNl ZSBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3QgZm9yIGRldGFpbHMuCisJICovCisJU09fUkVTRVRf U05BUFNIT1QgPSAxIDw8IDEwLAogfQkJCVNjYW5PcHRpb25zOwogCiAvKgpAQCAtODkzLDcgKzkw NSw4IEBAIGV4dGVybiBUYWJsZVNjYW5EZXNjIHRhYmxlX2JlZ2luc2Nhbl9jYXRhbG9nKFJlbGF0 aW9uIHJlbGF0aW9uLCBpbnQgbmtleXMsCiBzdGF0aWMgaW5saW5lIFRhYmxlU2NhbkRlc2MKIHRh YmxlX2JlZ2luc2Nhbl9zdHJhdChSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90LAogCQkJ CQkgIGludCBua2V5cywgc3RydWN0IFNjYW5LZXlEYXRhICprZXksCi0JCQkJCSAgYm9vbCBhbGxv d19zdHJhdCwgYm9vbCBhbGxvd19zeW5jKQorCQkJCQkgIGJvb2wgYWxsb3dfc3RyYXQsIGJvb2wg YWxsb3dfc3luYywKKwkJCQkJICBib29sIHJlc2V0X3NuYXBzaG90KQogewogCXVpbnQzMgkJZmxh Z3MgPSBTT19UWVBFX1NFUVNDQU4gfCBTT19BTExPV19QQUdFTU9ERTsKIApAQCAtOTAxLDYgKzkx NCwxNSBAQCB0YWJsZV9iZWdpbnNjYW5fc3RyYXQoUmVsYXRpb24gcmVsLCBTbmFwc2hvdCBzbmFw c2hvdCwKIAkJZmxhZ3MgfD0gU09fQUxMT1dfU1RSQVQ7CiAJaWYgKGFsbG93X3N5bmMpCiAJCWZs YWdzIHw9IFNPX0FMTE9XX1NZTkM7CisJaWYgKHJlc2V0X3NuYXBzaG90KQorCXsKKwkJSU5KRUNU SU9OX1BPSU5UKCJ0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzIik7CisJCS8q IEFjdGl2ZSBzbmFwc2hvdCBpcyByZXF1aXJlZCBvbiBzdGFydC4gKi8KKwkJQXNzZXJ0KEdldEFj dGl2ZVNuYXBzaG90KCkgPT0gc25hcHNob3QpOworCQkvKiBBY3RpdmUgc25hcHNob3Qgc2hvdWxk IG5vdCBiZSByZWdpc3RlcmVkIHRvIGtlZXAgeG1pbiBwcm9wYWdhdGluZy4gKi8KKwkJQXNzZXJ0 KEdldEFjdGl2ZVNuYXBzaG90KCktPnJlZ2RfY291bnQgPT0gMCk7CisJCWZsYWdzIHw9IChTT19S RVNFVF9TTkFQU0hPVCk7CisJfQogCiAJcmV0dXJuIHJlbC0+cmRfdGFibGVhbS0+c2Nhbl9iZWdp bihyZWwsIHNuYXBzaG90LCBua2V5cywga2V5LCBOVUxMLCBmbGFncyk7CiB9CkBAIC0xNzMwLDYg KzE3NTIsMTAgQEAgdGFibGVfc2Nhbl9hbmFseXplX25leHRfdHVwbGUoVGFibGVTY2FuRGVzYyBz Y2FuLCBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCiAgKiB2ZXJ5IGhhcmQgdG8gZGV0ZWN0IHdo ZXRoZXIgdGhleSdyZSByZWFsbHkgaW5jb21wYXRpYmxlIHdpdGggdGhlIGNoYWluIHRpcC4KICAq IFRoaXMgb25seSByZWFsbHkgbWFrZXMgc2Vuc2UgZm9yIGhlYXAgQU0sIGl0IG1pZ2h0IG5lZWQg dG8gYmUgZ2VuZXJhbGl6ZWQKICAqIGZvciBvdGhlciBBTXMgbGF0ZXIuCisgKgorICogSW4gY2Fz ZSBvZiBub24tdW5pcXVlIGluZGV4IGFuZCBub24tcGFyYWxsZWwgY29uY3VycmVudCBidWlsZAor ICogU09fUkVTRVRfU05BUFNIT1QgaXMgYXBwbGllZCBmb3IgdGhlIHNjYW4uIFRoYXQgbGVhZHMg Zm9yIGNoYW5naW5nIHNuYXBzaG90cworICogb24gdGhlIGZseSB0byBhbGxvdyB4bWluIGhvcml6 b24gcHJvcGFnYXRlLgogICovCiBzdGF0aWMgaW5saW5lIGRvdWJsZQogdGFibGVfaW5kZXhfYnVp bGRfc2NhbihSZWxhdGlvbiB0YWJsZV9yZWwsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVz L2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9w b2ludHMvTWFrZWZpbGUKaW5kZXggZTY4MDk5MWY4ZDQuLjE5ZDI2NDA4YzJhIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUKKysrIGIvc3JjL3Rl c3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL01ha2VmaWxlCkBAIC0xMSw3ICsxMSw3IEBAIEVY VEVOU0lPTiA9IGluamVjdGlvbl9wb2ludHMKIERBVEEgPSBpbmplY3Rpb25fcG9pbnRzLS0xLjAu c3FsCiBQR0ZJTEVERVNDID0gImluamVjdGlvbl9wb2ludHMgLSBmYWNpbGl0eSBmb3IgaW5qZWN0 aW9uIHBvaW50cyIKIAotUkVHUkVTUyA9IGluamVjdGlvbl9wb2ludHMgaGFzaGFnZyByZWluZGV4 X2NvbmMKK1JFR1JFU1MgPSBpbmplY3Rpb25fcG9pbnRzIGhhc2hhZ2cgcmVpbmRleF9jb25jIGNp Y19yZXNldF9zbmFwc2hvdHMKIFJFR1JFU1NfT1BUUyA9IC0tZGxwYXRoPSQodG9wX2J1aWxkZGly KS9zcmMvdGVzdC9yZWdyZXNzCiAKIElTT0xBVElPTiA9IGJhc2ljIGlucGxhY2Ugc3lzY2FjaGUt dXBkYXRlLXBydW5lZApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9p bnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy9p bmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0Cm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45NDhkMTIzMmFhMAotLS0gL2Rldi9udWxs CisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVz ZXRfc25hcHNob3RzLm91dApAQCAtMCwwICsxLDEwNSBAQAorQ1JFQVRFIEVYVEVOU0lPTiBpbmpl Y3Rpb25fcG9pbnRzOworU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CisgaW5q ZWN0aW9uX3BvaW50c19zZXRfbG9jYWwgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg CisoMSByb3cpCisKK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnaGVhcF9yZXNldF9z Y2FuX3NuYXBzaG90X2VmZmVjdGl2ZScsICdub3RpY2UnKTsKKyBpbmplY3Rpb25fcG9pbnRzX2F0 dGFjaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGlu amVjdGlvbl9wb2ludHNfYXR0YWNoKCd0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNo b3RzJywgJ25vdGljZScpOworIGluamVjdGlvbl9wb2ludHNfYXR0YWNoIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitDUkVBVEUgU0NIRU1BIGNpY19yZXNldF9zbmFw OworQ1JFQVRFIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibChpIGludCBwcmltYXJ5IGtleSwgaiBp bnQpOworSU5TRVJUIElOVE8gY2ljX3Jlc2V0X3NuYXAudGJsIFNFTEVDVCBpLCBpICogSSBGUk9N IGdlbmVyYXRlX3NlcmllcygxLCAyMDApIHMoaSk7CitDUkVBVEUgRlVOQ1RJT04gY2ljX3Jlc2V0 X3NuYXAucHJlZGljYXRlX3N0YWJsZShpbnRlZ2VyKSBSRVRVUk5TIGJvb2wgSU1NVVRBQkxFCisJ CQkJCQkJCQkgIExBTkdVQUdFIHBscGdzcWwgQVMgJCQKK0JFR0lOCisgICAgRVhFQ1VURSAnU0VM RUNUIHR4aWRfY3VycmVudCgpJzsKKyAgICBSRVRVUk4gTU9EKCQxLCAyKSA9IDA7CitFTkQ7ICQk OworQ1JFQVRFIEZVTkNUSU9OIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGVfbm9fcGFy YW0oKSBSRVRVUk5TIGJvb2wgSU1NVVRBQkxFCisJCQkJCQkJCQkgIExBTkdVQUdFIHBscGdzcWwg QVMgJCQKK0JFR0lOCisgICAgRVhFQ1VURSAnU0VMRUNUIHR4aWRfY3VycmVudCgpJzsKKyAgICBS RVRVUk4gZmFsc2U7CitFTkQ7ICQkOworLS0tLS0tLS0tLS0tLS0tLQorQUxURVIgVEFCTEUgY2lj X3Jlc2V0X3NuYXAudGJsIFNFVCAocGFyYWxsZWxfd29ya2Vycz0wKTsKK0NSRUFURSBVTklRVUUg SU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitSRUlOREVY IElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNV UlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlk eCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZv ciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cwor Tk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRf c2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBw b2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3Rp Y2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90 X2VmZmVjdGl2ZQorRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4Owor Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKE1PRChp LCAyKSwgaikgV0hFUkUgTU9EKGksIDIpID0gMDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQg Zm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3Rz CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNl dF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2lj X3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9u IHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5v dGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNo b3RfZWZmZWN0aXZlCitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7 CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwg aikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShpKTsKK05PVElDRTogIG5v dGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRf cmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24g cG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorUkVJTkRFWCBJTkRFWCBD T05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJl ZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hv dHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jl c2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNf cmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVz ZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZV9u b19wYXJhbSgpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50 IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK1JFSU5ERVggSU5ERVggQ09O Q1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQg Zm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3Rz CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5E RVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwgVVNJTkcgQlJJTihpKTsK K05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdp bnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZv ciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorUkVJ TkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90 aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9y ZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBw b2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitEUk9QIElOREVYIENPTkNV UlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CistLSBUaGUgc2FtZSBpbiBwYXJhbGxlbCBtb2Rl CitBTFRFUiBUQUJMRSBjaWNfcmVzZXRfc25hcC50YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTIp OworQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFw LnRibChpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK K0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRF WCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKK1JFSU5ERVggSU5E RVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVO VExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9O IGNpY19yZXNldF9zbmFwLnRibChNT0QoaSwgMiksIGopIFdIRVJFIE1PRChpLCAyKSA9IDA7CitS RUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVY IENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVO VExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAu cHJlZGljYXRlX3N0YWJsZShpKTsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVj dGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6 ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3Nu YXBzaG90X2VmZmVjdGl2ZQorUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3Nu YXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRh YmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmln Z2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0 aXZlCitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUg SU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUg Y2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpOworUkVJTkRFWCBJTkRF WCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5U TFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04g Y2ljX3Jlc2V0X3NuYXAudGJsKGkgREVTQyBOVUxMUyBMQVNUKTsKK1JFSU5ERVggSU5ERVggQ09O Q1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNp Y19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19y ZXNldF9zbmFwLnRibCBVU0lORyBCUklOKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3Nu YXAuaWR4OworRFJPUCBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXAgQ0FTQ0FERTsKK05PVElDRTogIGRy b3AgY2FzY2FkZXMgdG8gMyBvdGhlciBvYmplY3RzCitERVRBSUw6ICBkcm9wIGNhc2NhZGVzIHRv IHRhYmxlIGNpY19yZXNldF9zbmFwLnRibAorZHJvcCBjYXNjYWRlcyB0byBmdW5jdGlvbiBjaWNf cmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlKGludGVnZXIpCitkcm9wIGNhc2NhZGVzIHRvIGZ1 bmN0aW9uIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGVfbm9fcGFyYW0oKQorRFJPUCBF WFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMv aW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9u X3BvaW50cy9tZXNvbi5idWlsZAppbmRleCBkNjExNDk3MTJmZC4uODQ3NmJmZTcyYTcgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZAorKysg Yi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVzb24uYnVpbGQKQEAgLTM3LDYg KzM3LDcgQEAgdGVzdHMgKz0gewogICAgICAgJ2luamVjdGlvbl9wb2ludHMnLAogICAgICAgJ2hh c2hhZ2cnLAogICAgICAgJ3JlaW5kZXhfY29uYycsCisgICAgICAnY2ljX3Jlc2V0X3NuYXBzaG90 cycsCiAgICAgXSwKICAgICAncmVncmVzc19hcmdzJzogWyctLWRscGF0aCcsIG1lc29uLmJ1aWxk X3Jvb3QoKSAvICdzcmMvdGVzdC9yZWdyZXNzJ10sCiAgICAgIyBUaGUgaW5qZWN0aW9uIHBvaW50 cyBhcmUgY2x1c3Rlci13aWRlLCBzbyBkaXNhYmxlIGluc3RhbGxjaGVjawpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3Rz LnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvY2ljX3Jlc2V0X3Nu YXBzaG90cy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjUwNzI1 MzViMzU1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9p bnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbApAQCAtMCwwICsxLDg2IEBACitDUkVBVEUg RVhURU5TSU9OIGluamVjdGlvbl9wb2ludHM7CisKK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3Nl dF9sb2NhbCgpOworU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdoZWFwX3Jlc2V0X3Nj YW5fc25hcHNob3RfZWZmZWN0aXZlJywgJ25vdGljZScpOworU0VMRUNUIGluamVjdGlvbl9wb2lu dHNfYXR0YWNoKCd0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzJywgJ25vdGlj ZScpOworCisKK0NSRUFURSBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXA7CitDUkVBVEUgVEFCTEUgY2lj X3Jlc2V0X3NuYXAudGJsKGkgaW50IHByaW1hcnkga2V5LCBqIGludCk7CitJTlNFUlQgSU5UTyBj aWNfcmVzZXRfc25hcC50YmwgU0VMRUNUIGksIGkgKiBJIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDIwMCkgcyhpKTsKKworQ1JFQVRFIEZVTkNUSU9OIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9z dGFibGUoaW50ZWdlcikgUkVUVVJOUyBib29sIElNTVVUQUJMRQorCQkJCQkJCQkJICBMQU5HVUFH RSBwbHBnc3FsIEFTICQkCitCRUdJTgorICAgIEVYRUNVVEUgJ1NFTEVDVCB0eGlkX2N1cnJlbnQo KSc7CisgICAgUkVUVVJOIE1PRCgkMSwgMikgPSAwOworRU5EOyAkJDsKKworQ1JFQVRFIEZVTkNU SU9OIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGVfbm9fcGFyYW0oKSBSRVRVUk5TIGJv b2wgSU1NVVRBQkxFCisJCQkJCQkJCQkgIExBTkdVQUdFIHBscGdzcWwgQVMgJCQKK0JFR0lOCisg ICAgRVhFQ1VURSAnU0VMRUNUIHR4aWRfY3VycmVudCgpJzsKKyAgICBSRVRVUk4gZmFsc2U7CitF TkQ7ICQkOworCistLS0tLS0tLS0tLS0tLS0tCitBTFRFUiBUQUJMRSBjaWNfcmVzZXRfc25hcC50 YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTApOworCitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNV UlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOworUkVJTkRFWCBJTkRFWCBDT05D VVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2lj X3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNf cmVzZXRfc25hcC50YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisK K0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChNT0Qo aSwgMiksIGopIFdIRVJFIE1PRChpLCAyKSA9IDA7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRM WSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9z bmFwLnRibChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlKGkpOwor UkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRF WCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VS UkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3Nu YXAucHJlZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5U TFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0 X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRf c25hcC50YmwgVVNJTkcgQlJJTihpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlk eDsKKworLS0gVGhlIHNhbWUgaW4gcGFyYWxsZWwgbW9kZQorQUxURVIgVEFCTEUgY2ljX3Jlc2V0 X3NuYXAudGJsIFNFVCAocGFyYWxsZWxfd29ya2Vycz0yKTsKKworQ1JFQVRFIFVOSVFVRSBJTkRF WCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKK1JFSU5ERVggSU5E RVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVO VExZIGNpY19yZXNldF9zbmFwLmlkeDsKKworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHgg T04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2lj X3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAu aWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50 YmwoTU9EKGksIDIpLCBqKSBXSEVSRSBNT0QoaSwgMikgPSAwOworUkVJTkRFWCBJTkRFWCBDT05D VVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2lj X3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNf cmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJs ZShpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RS T1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKworQ1JFQVRFIElOREVY IENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19y ZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGVfbm9fcGFyYW0oKTsKK1JFSU5ERVggSU5ERVggQ09O Q1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNp Y19yZXNldF9zbmFwLmlkeDsKKworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2lj X3Jlc2V0X3NuYXAudGJsKGkgREVTQyBOVUxMUyBMQVNUKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VS UkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKKworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jl c2V0X3NuYXAudGJsIFVTSU5HIEJSSU4oaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBj aWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25h cC5pZHg7CisKK0RST1AgU0NIRU1BIGNpY19yZXNldF9zbmFwIENBU0NBREU7CisKK0RST1AgRVhU RU5TSU9OIGluamVjdGlvbl9wb2ludHM7Ci0tIAoyLjQzLjAKCg== --000000000000176c55063224bb18 Content-Type: application/octet-stream; name="v17-0001-This-is-https-commitfest.postgresql.org-50-5160-.patch" Content-Disposition: attachment; filename="v17-0001-This-is-https-commitfest.postgresql.org-50-5160-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m967p88v0 RnJvbSBjYjg4M2RmNDE2ZDUyYzVhMTUxYThhMjViYTRkNTkzNzM1MDc1ZDcyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAzMSBEZWMgMjAyNCAxNDowOTo1MiArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjE3IDAx LzEyXSBUaGlzIGlzIGh0dHBzOi8vY29tbWl0ZmVzdC5wb3N0Z3Jlc3FsLm9yZy81MC81MTYwLwog bWVyZ2VkIGluIHNpbmdsZSBjb21taXQuIGl0IGlzIHJlcXVpcmVkIGZvciBzdGFiaWxpdHkgb2Yg c3RyZXNzIHRlc3RzLgoKLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyAgICAg ICB8ICAgNCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMgICAgfCAgIDMg Kwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jICAgfCAxMTkgKysrKysrKysr KysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgfCAg IDIgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jICAgfCAxMzUgKysrKysr KysrKysrKysrKysrLS0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMgICAg ICAgfCAgIDIgKwogNiBmaWxlcyBjaGFuZ2VkLCAyMTYgaW5zZXJ0aW9ucygrKSwgNDkgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwppbmRleCAzM2MyMTA2YzE3Yy4uYmIwMTU1 ZmRjMjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCkBAIC0xNzkwLDYgKzE3OTAsNyBAQCBE ZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkgKiBiZWZvcmUgdGhlIHJlZmVyZW5jZSBzbmFwIHdh cyB0YWtlbiwgd2UgaGF2ZSB0byB3YWl0IG91dCBhbnkKIAkgKiB0cmFuc2FjdGlvbnMgdGhhdCBt aWdodCBoYXZlIG9sZGVyIHNuYXBzaG90cy4KIAkgKi8KKwlJTkpFQ1RJT05fUE9JTlQoImRlZmlu ZV9pbmRleF9iZWZvcmVfc2V0X3ZhbGlkIik7CiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJh bShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCiAJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhf UEhBU0VfV0FJVF8zKTsKIAlXYWl0Rm9yT2xkZXJTbmFwc2hvdHMobGltaXRYbWluLCB0cnVlKTsK QEAgLTQxOTUsNyArNDE5Niw3IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBS ZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJICogdGhlIHNh bWUgdGltZSB0byBtYWtlIHN1cmUgd2Ugb25seSBnZXQgY29uc3RyYWludCB2aW9sYXRpb25zIGZy b20gdGhlCiAJICogaW5kZXhlcyB3aXRoIHRoZSBjb3JyZWN0IG5hbWVzLgogCSAqLwotCisJSU5K RUNUSU9OX1BPSU5UKCJyZWluZGV4X3JlbGF0aW9uX2NvbmN1cnJlbnRseV9iZWZvcmVfc3dhcCIp OwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKIAkvKgpAQCAtNDI3NCw2ICs0Mjc1LDcg QEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBP aWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkgKiBpbmRleF9kcm9wKCkgZm9yIG1vcmUgZGV0 YWlscy4KIAkgKi8KIAorCUlOSkVDVElPTl9QT0lOVCgicmVpbmRleF9yZWxhdGlvbl9jb25jdXJy ZW50bHlfYmVmb3JlX3NldF9kZWFkIik7CiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQ Uk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCiAJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhB U0VfV0FJVF80KTsKIAlXYWl0Rm9yTG9ja2Vyc011bHRpcGxlKGxvY2tUYWdzLCBBY2Nlc3NFeGNs dXNpdmVMb2NrLCB0cnVlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJ bmRleGluZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMKaW5kZXggZTNm ZTliNzhiYjUuLjU1NDkxYzdiOGIxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjSW5kZXhpbmcuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYwpA QCAtMTE3LDYgKzExNyw3IEBACiAjaW5jbHVkZSAidXRpbHMvbXVsdGlyYW5nZXR5cGVzLmgiCiAj aW5jbHVkZSAidXRpbHMvcmFuZ2V0eXBlcy5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIK KyNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKIAogLyogd2FpdE1vZGUgYXJndW1l bnQgdG8gY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50KCkgKi8KIHR5cGVkZWYg ZW51bQpAQCAtOTQzLDYgKzk0NCw4IEBAIHJldHJ5OgogCWVjb250ZXh0LT5lY3h0X3NjYW50dXBs ZSA9IHNhdmVfc2NhbnR1cGxlOwogCiAJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChleGlz dGluZ19zbG90KTsKKwlpZiAoIWNvbmZsaWN0KQorCQlJTkpFQ1RJT05fUE9JTlQoImNoZWNrX2V4 Y2x1c2lvbl9vcl91bmlxdWVfY29uc3RyYWludF9ub19jb25mbGljdCIpOwogCiAJcmV0dXJuICFj b25mbGljdDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRp b24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwppbmRleCAwMzc0NDc2 ZmZhZC4uNmU3NGM5YjdlODcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQ YXJ0aXRpb24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKQEAg LTQ4Nyw2ICs0ODcsNDggQEAgRXhlY0ZpbmRQYXJ0aXRpb24oTW9kaWZ5VGFibGVTdGF0ZSAqbXRz dGF0ZSwKIAlyZXR1cm4gcnJpOwogfQogCisvKgorICogSXNJbmRleENvbXBhdGlibGVBc0FyYml0 ZXIKKyAqIAkJQ2hlY2tzIGlmIHRoZSBpbmRleGVzIGFyZSBpZGVudGljYWwgaW4gdGVybXMgb2Yg YmVpbmcgdXNlZAorICogCQlhcyBhcmJpdGVycyBmb3IgdGhlIElOU0VSVCBPTiBDT05GTElDVCBv cGVyYXRpb24gYnkgY29tcGFyaW5nCisgKiAJCXRoZW0gdG8gdGhlIHByb3ZpZGVkIGFyYml0ZXIg aW5kZXguCisgKgorICogUmV0dXJucyB0aGUgdHJ1ZSBpZiBpbmRleGVzIGFyZSBjb21wYXRpYmxl LgorICovCitzdGF0aWMgYm9vbAorSXNJbmRleENvbXBhdGlibGVBc0FyYml0ZXIoUmVsYXRpb24J YXJiaXRlckluZGV4UmVsYXRpb24sCisJCQkJCQkgICBJbmRleEluZm8gICphcmJpdGVySW5kZXhJ bmZvLAorCQkJCQkJICAgUmVsYXRpb24JaW5kZXhSZWxhdGlvbiwKKwkJCQkJCSAgIEluZGV4SW5m byAgKmluZGV4SW5mbykKK3sKKwlpbnQgaTsKKworCWlmIChhcmJpdGVySW5kZXhJbmZvLT5paV9V bmlxdWUgIT0gaW5kZXhJbmZvLT5paV9VbmlxdWUpCisJCXJldHVybiBmYWxzZTsKKwkvKiBpdCBp cyBub3Qgc3VwcG9ydGVkIGZvciBjYXNlcyBvZiBleGNsdXNpb24gY29uc3RyYWludHMuICovCisJ aWYgKGFyYml0ZXJJbmRleEluZm8tPmlpX0V4Y2x1c2lvbk9wcyAhPSBOVUxMIHx8IGluZGV4SW5m by0+aWlfRXhjbHVzaW9uT3BzICE9IE5VTEwpCisJCXJldHVybiBmYWxzZTsKKwlpZiAoYXJiaXRl ckluZGV4UmVsYXRpb24tPnJkX2luZGV4LT5pbmRua2V5YXR0cyAhPSBpbmRleFJlbGF0aW9uLT5y ZF9pbmRleC0+aW5kbmtleWF0dHMpCisJCXJldHVybiBmYWxzZTsKKworCWZvciAoaSA9IDA7IGkg PCBpbmRleFJlbGF0aW9uLT5yZF9pbmRleC0+aW5kbmtleWF0dHM7IGkrKykKKwl7CisJCWludAkJ CWFyYml0ZXJBdHRvTm8gPSBhcmJpdGVySW5kZXhSZWxhdGlvbi0+cmRfaW5kZXgtPmluZGtleS52 YWx1ZXNbaV07CisJCWludAkJCWF0dG9ObyA9IGluZGV4UmVsYXRpb24tPnJkX2luZGV4LT5pbmRr ZXkudmFsdWVzW2ldOworCQlpZiAoYXJiaXRlckF0dG9ObyAhPSBhdHRvTm8pCisJCQlyZXR1cm4g ZmFsc2U7CisJfQorCisJaWYgKGxpc3RfZGlmZmVyZW5jZShSZWxhdGlvbkdldEluZGV4RXhwcmVz c2lvbnMoYXJiaXRlckluZGV4UmVsYXRpb24pLAorCQkJCQkJUmVsYXRpb25HZXRJbmRleEV4cHJl c3Npb25zKGluZGV4UmVsYXRpb24pKSAhPSBOSUwpCisJCXJldHVybiBmYWxzZTsKKworCWlmIChs aXN0X2RpZmZlcmVuY2UoUmVsYXRpb25HZXRJbmRleFByZWRpY2F0ZShhcmJpdGVySW5kZXhSZWxh dGlvbiksCisJCQkJCQlSZWxhdGlvbkdldEluZGV4UHJlZGljYXRlKGluZGV4UmVsYXRpb24pKSAh PSBOSUwpCisJCXJldHVybiBmYWxzZTsKKwlyZXR1cm4gdHJ1ZTsKK30KKwogLyoKICAqIEV4ZWNJ bml0UGFydGl0aW9uSW5mbwogICoJCUxvY2sgdGhlIHBhcnRpdGlvbiBhbmQgaW5pdGlhbGl6ZSBS ZXN1bHRSZWxJbmZvLiAgQWxzbyBzZXR1cCBvdGhlcgpAQCAtNjk3LDYgKzczOSw4IEBAIEV4ZWNJ bml0UGFydGl0aW9uSW5mbyhNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLCBFU3RhdGUgKmVzdGF0 ZSwKIAkJaWYgKHJvb3RSZXN1bHRSZWxJbmZvLT5yaV9vbkNvbmZsaWN0QXJiaXRlckluZGV4ZXMg IT0gTklMKQogCQl7CiAJCQlMaXN0CSAgICpjaGlsZElkeHM7CisJCQlMaXN0IAkgICAqbm9uQW5j ZXN0b3JJZHhzID0gTklMOworCQkJaW50CQkgICBpLCBqLCBhZGRpdGlvbmFsX2FyYml0ZXJzID0g MDsKIAogCQkJY2hpbGRJZHhzID0gUmVsYXRpb25HZXRJbmRleExpc3QobGVhZl9wYXJ0X3JyaS0+ cmlfUmVsYXRpb25EZXNjKTsKIApAQCAtNzA3LDIzICs3NTEsNzQgQEAgRXhlY0luaXRQYXJ0aXRp b25JbmZvKE1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCQkJCUxp c3RDZWxsICAgKmxjMjsKIAogCQkJCWFuY2VzdG9ycyA9IGdldF9wYXJ0aXRpb25fYW5jZXN0b3Jz KGNoaWxkSWR4KTsKLQkJCQlmb3JlYWNoKGxjMiwgcm9vdFJlc3VsdFJlbEluZm8tPnJpX29uQ29u ZmxpY3RBcmJpdGVySW5kZXhlcykKKwkJCQlpZiAoYW5jZXN0b3JzKQogCQkJCXsKLQkJCQkJaWYg KGxpc3RfbWVtYmVyX29pZChhbmNlc3RvcnMsIGxmaXJzdF9vaWQobGMyKSkpCi0JCQkJCQlhcmJp dGVySW5kZXhlcyA9IGxhcHBlbmRfb2lkKGFyYml0ZXJJbmRleGVzLCBjaGlsZElkeCk7CisJCQkJ CWZvcmVhY2gobGMyLCByb290UmVzdWx0UmVsSW5mby0+cmlfb25Db25mbGljdEFyYml0ZXJJbmRl eGVzKQorCQkJCQl7CisJCQkJCQlpZiAobGlzdF9tZW1iZXJfb2lkKGFuY2VzdG9ycywgbGZpcnN0 X29pZChsYzIpKSkKKwkJCQkJCQlhcmJpdGVySW5kZXhlcyA9IGxhcHBlbmRfb2lkKGFyYml0ZXJJ bmRleGVzLCBjaGlsZElkeCk7CisJCQkJCX0KIAkJCQl9CisJCQkJZWxzZSAvKiBObyBhbmNlc3Rv ciB3YXMgZm91bmQgZm9yIHRoYXQgaW5kZXguIFNhdmUgaXQgZm9yIHJlY2hlY2tpbmcgbGF0ZXIu ICovCisJCQkJCW5vbkFuY2VzdG9ySWR4cyA9IGxhcHBlbmRfb2lkKG5vbkFuY2VzdG9ySWR4cywg Y2hpbGRJZHgpOwogCQkJCWxpc3RfZnJlZShhbmNlc3RvcnMpOwogCQkJfQorCisJCQkvKgorCQkJ ICogSWYgYW55IG5vbi1hbmNlc3RvciBpbmRleGVzIGFyZSBmb3VuZCwgd2UgbmVlZCB0byBjb21w YXJlIHRoZW0gd2l0aCBvdGhlcgorCQkJICogaW5kZXhlcyBvZiB0aGUgcmVsYXRpb24gdGhhdCB3 aWxsIGJlIHVzZWQgYXMgYXJiaXRlcnMuIFRoaXMgaXMgbmVjZXNzYXJ5CisJCQkgKiB3aGVuIGEg cGFydGl0aW9uZWQgaW5kZXggaXMgcHJvY2Vzc2VkIGJ5IFJFSU5ERVggQ09OQ1VSUkVOVExZLiBC b3RoIGluZGV4ZXMKKwkJCSAqIG11c3QgYmUgY29uc2lkZXJlZCBhcyBhcmJpdGVycyB0byBlbnN1 cmUgdGhhdCBhbGwgY29uY3VycmVudCB0cmFuc2FjdGlvbnMKKwkJCSAqIHVzZSB0aGUgc2FtZSBz ZXQgb2YgYXJiaXRlcnMuCisJCQkgKi8KKwkJCWlmIChub25BbmNlc3RvcklkeHMpCisJCQl7CisJ CQkJZm9yIChpID0gMDsgaSA8IGxlYWZfcGFydF9ycmktPnJpX051bUluZGljZXM7IGkrKykKKwkJ CQl7CisJCQkJCWlmIChsaXN0X21lbWJlcl9vaWQobm9uQW5jZXN0b3JJZHhzLCBsZWFmX3BhcnRf cnJpLT5yaV9JbmRleFJlbGF0aW9uRGVzY3NbaV0tPnJkX2luZGV4LT5pbmRleHJlbGlkKSkKKwkJ CQkJeworCQkJCQkJUmVsYXRpb24gbm9uQW5jZXN0b3JJbmRleFJlbGF0aW9uID0gbGVhZl9wYXJ0 X3JyaS0+cmlfSW5kZXhSZWxhdGlvbkRlc2NzW2ldOworCQkJCQkJSW5kZXhJbmZvICpub25BbmNl c3RvckluZGV4SW5mbyA9IGxlYWZfcGFydF9ycmktPnJpX0luZGV4UmVsYXRpb25JbmZvW2ldOwor CQkJCQkJQXNzZXJ0KCFsaXN0X21lbWJlcl9vaWQoYXJiaXRlckluZGV4ZXMsIG5vbkFuY2VzdG9y SW5kZXhSZWxhdGlvbi0+cmRfaW5kZXgtPmluZGV4cmVsaWQpKTsKKworCQkJCQkJLyogSXQgaXMg dG9vIGVhcmx5IHRvIHVzIG5vbi1yZWFkeSBpbmRleGVzIGFzIGFyYml0ZXJzICovCisJCQkJCQlp ZiAoIW5vbkFuY2VzdG9ySW5kZXhJbmZvLT5paV9SZWFkeUZvckluc2VydHMpCisJCQkJCQkJY29u dGludWU7CisKKwkJCQkJCWZvciAoaiA9IDA7IGogPCBsZWFmX3BhcnRfcnJpLT5yaV9OdW1JbmRp Y2VzOyBqKyspCisJCQkJCQl7CisJCQkJCQkJaWYgKGxpc3RfbWVtYmVyX29pZChhcmJpdGVySW5k ZXhlcywKKwkJCQkJCQkJCQkJCWxlYWZfcGFydF9ycmktPnJpX0luZGV4UmVsYXRpb25EZXNjc1tq XS0+cmRfaW5kZXgtPmluZGV4cmVsaWQpKQorCQkJCQkJCXsKKwkJCQkJCQkJUmVsYXRpb24gYXJi aXRlckluZGV4UmVsYXRpb24gPSBsZWFmX3BhcnRfcnJpLT5yaV9JbmRleFJlbGF0aW9uRGVzY3Nb al07CisJCQkJCQkJCUluZGV4SW5mbyAqYXJiaXRlckluZGV4SW5mbyA9IGxlYWZfcGFydF9ycmkt PnJpX0luZGV4UmVsYXRpb25JbmZvW2pdOworCisJCQkJCQkJCS8qIElmIG5vbi1hbmNlc3RvciBp bmRleCBhcmUgY29tcGF0aWJsZSB0byBhcmJpdGVyIC0gdXNlIGl0IGFzIGFyYml0ZXIgdG9vLiAq LworCQkJCQkJCQlpZiAoSXNJbmRleENvbXBhdGlibGVBc0FyYml0ZXIoYXJiaXRlckluZGV4UmVs YXRpb24sIGFyYml0ZXJJbmRleEluZm8sCisJCQkJCQkJCQkJCQkJCQkgICBub25BbmNlc3Rvcklu ZGV4UmVsYXRpb24sIG5vbkFuY2VzdG9ySW5kZXhJbmZvKSkKKwkJCQkJCQkJeworCQkJCQkJCQkJ YXJiaXRlckluZGV4ZXMgPSBsYXBwZW5kX29pZChhcmJpdGVySW5kZXhlcywKKwkJCQkJCQkJCQkJ CQkJCQkgbm9uQW5jZXN0b3JJbmRleFJlbGF0aW9uLT5yZF9pbmRleC0+aW5kZXhyZWxpZCk7CisJ CQkJCQkJCQlhZGRpdGlvbmFsX2FyYml0ZXJzKys7CisJCQkJCQkJCX0KKwkJCQkJCQl9CisJCQkJ CQl9CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCQlsaXN0X2ZyZWUobm9uQW5jZXN0b3JJZHhzKTsK KworCQkJLyoKKwkJCSAqIElmIHRoZSByZXN1bHRpbmcgbGlzdHMgYXJlIG9mIGluZXF1YWwgbGVu Z3RoLCBzb21ldGhpbmcgaXMgd3JvbmcuCisJCQkgKiAoVGhpcyBzaG91bGRuJ3QgaGFwcGVuLCBz aW5jZSBhcmJpdGVyIGluZGV4IHNlbGVjdGlvbiBzaG91bGQgbm90CisJCQkgKiBwaWNrIHVwIGEg bm9uLXJlYWR5IGluZGV4LikKKwkJCSAqCisJCQkgKiBCdXQgd2UgbmVlZCB0byBjb25zaWRlciBh biBhZGRpdGlvbmFsIGFyYml0ZXIgaW5kZXhlcyBhbHNvLgorCQkJICovCisJCQlpZiAobGlzdF9s ZW5ndGgocm9vdFJlc3VsdFJlbEluZm8tPnJpX29uQ29uZmxpY3RBcmJpdGVySW5kZXhlcykgIT0K KwkJCQlsaXN0X2xlbmd0aChhcmJpdGVySW5kZXhlcykgLSBhZGRpdGlvbmFsX2FyYml0ZXJzKQor CQkJCWVsb2coRVJST1IsICJpbnZhbGlkIGFyYml0ZXIgaW5kZXggbGlzdCIpOwogCQl9Ci0KLQkJ LyoKLQkJICogSWYgdGhlIHJlc3VsdGluZyBsaXN0cyBhcmUgb2YgaW5lcXVhbCBsZW5ndGgsIHNv bWV0aGluZyBpcyB3cm9uZy4KLQkJICogKFRoaXMgc2hvdWxkbid0IGhhcHBlbiwgc2luY2UgYXJi aXRlciBpbmRleCBzZWxlY3Rpb24gc2hvdWxkIG5vdAotCQkgKiBwaWNrIHVwIGFuIGludmFsaWQg aW5kZXguKQotCQkgKi8KLQkJaWYgKGxpc3RfbGVuZ3RoKHJvb3RSZXN1bHRSZWxJbmZvLT5yaV9v bkNvbmZsaWN0QXJiaXRlckluZGV4ZXMpICE9Ci0JCQlsaXN0X2xlbmd0aChhcmJpdGVySW5kZXhl cykpCi0JCQllbG9nKEVSUk9SLCAiaW52YWxpZCBhcmJpdGVyIGluZGV4IGxpc3QiKTsKIAkJbGVh Zl9wYXJ0X3JyaS0+cmlfb25Db25mbGljdEFyYml0ZXJJbmRleGVzID0gYXJiaXRlckluZGV4ZXM7 CiAKIAkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJs ZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKaW5kZXggMzA5ZTI3 ZjhiNWYuLjNmNGFlZTViYTNiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TW9kaWZ5VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUu YwpAQCAtNjksNiArNjksNyBAQAogI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5jbHVkZSAi dXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgorI2luY2x1ZGUgInV0aWxz L2luamVjdGlvbl9wb2ludC5oIgogCiAKIHR5cGVkZWYgc3RydWN0IE1UVGFyZ2V0UmVsTG9va3Vw CkBAIC0xMTU4LDYgKzExNTksNyBAQCBFeGVjSW5zZXJ0KE1vZGlmeVRhYmxlQ29udGV4dCAqY29u dGV4dCwKIAkJCQkJcmV0dXJuIE5VTEw7CiAJCQkJfQogCQkJfQorCQkJSU5KRUNUSU9OX1BPSU5U KCJleGVjX2luc2VydF9iZWZvcmVfaW5zZXJ0X3NwZWN1bGF0aXZlIik7CiAKIAkJCS8qCiAJCQkg KiBCZWZvcmUgd2Ugc3RhcnQgaW5zZXJ0aW9uIHByb3BlciwgYWNxdWlyZSBvdXIgInNwZWN1bGF0 aXZlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKaW5kZXggNjdkODc5YmU4YjguLjIx NWY5Nzg2NDY5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0 LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jCkBAIC03MTQsMTIg KzcxNCwxNCBAQCBpbmZlcl9hcmJpdGVyX2luZGV4ZXMoUGxhbm5lckluZm8gKnJvb3QpCiAJTGlz dAkgICAqaW5kZXhMaXN0OwogCUxpc3RDZWxsICAgKmw7CiAKLQkvKiBOb3JtYWxpemVkIGluZmVy ZW5jZSBhdHRyaWJ1dGVzIGFuZCBpbmZlcmVuY2UgZXhwcmVzc2lvbnM6ICovCi0JQml0bWFwc2V0 ICAqaW5mZXJBdHRycyA9IE5VTEw7Ci0JTGlzdAkgICAqaW5mZXJFbGVtcyA9IE5JTDsKKwkvKiBO b3JtYWxpemVkIHJlcXVpcmVkIGF0dHJpYnV0ZXMgYW5kIGV4cHJlc3Npb25zOiAqLworCUJpdG1h cHNldCAgKnJlcXVpcmVkQXJiaXRlckF0dHJzID0gTlVMTDsKKwlMaXN0CSAgICpyZXF1aXJlZEFy Yml0ZXJFbGVtcyA9IE5JTDsKKwlMaXN0CSAgICpyZXF1aXJlZEluZGV4UHJlZEV4cHJzID0gKExp c3QgKikgb25jb25mbGljdC0+YXJiaXRlcldoZXJlOwogCiAJLyogUmVzdWx0cyAqLwogCUxpc3QJ ICAgKnJlc3VsdHMgPSBOSUw7CisJYm9vbAkgICBmb3VuZFZhbGlkID0gZmFsc2U7CiAKIAkvKgog CSAqIFF1aWNrbHkgcmV0dXJuIE5JTCBmb3IgT04gQ09ORkxJQ1QgRE8gTk9USElORyB3aXRob3V0 IGFuIGluZmVyZW5jZQpAQCAtNzU0LDggKzc1Niw4IEBAIGluZmVyX2FyYml0ZXJfaW5kZXhlcyhQ bGFubmVySW5mbyAqcm9vdCkKIAogCQlpZiAoIUlzQShlbGVtLT5leHByLCBWYXIpKQogCQl7Ci0J CQkvKiBJZiBub3QgYSBwbGFpbiBWYXIsIGp1c3Qgc2hvdmUgaXQgaW4gaW5mZXJFbGVtcyBmb3Ig bm93ICovCi0JCQlpbmZlckVsZW1zID0gbGFwcGVuZChpbmZlckVsZW1zLCBlbGVtLT5leHByKTsK KwkJCS8qIElmIG5vdCBhIHBsYWluIFZhciwganVzdCBzaG92ZSBpdCBpbiByZXF1aXJlZEFyYml0 ZXJFbGVtcyBmb3Igbm93ICovCisJCQlyZXF1aXJlZEFyYml0ZXJFbGVtcyA9IGxhcHBlbmQocmVx dWlyZWRBcmJpdGVyRWxlbXMsIGVsZW0tPmV4cHIpOwogCQkJY29udGludWU7CiAJCX0KIApAQCAt NzY3LDMwICs3NjksNzYgQEAgaW5mZXJfYXJiaXRlcl9pbmRleGVzKFBsYW5uZXJJbmZvICpyb290 KQogCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJCSBl cnJtc2coIndob2xlIHJvdyB1bmlxdWUgaW5kZXggaW5mZXJlbmNlIHNwZWNpZmljYXRpb25zIGFy ZSBub3Qgc3VwcG9ydGVkIikpKTsKIAotCQlpbmZlckF0dHJzID0gYm1zX2FkZF9tZW1iZXIoaW5m ZXJBdHRycywKKwkJcmVxdWlyZWRBcmJpdGVyQXR0cnMgPSBibXNfYWRkX21lbWJlcihyZXF1aXJl ZEFyYml0ZXJBdHRycywKIAkJCQkJCQkJCWF0dG5vIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJp YnV0ZU51bWJlcik7CiAJfQogCisJaW5kZXhMaXN0ID0gUmVsYXRpb25HZXRJbmRleExpc3QocmVs YXRpb24pOworCiAJLyoKIAkgKiBMb29rdXAgbmFtZWQgY29uc3RyYWludCdzIGluZGV4LiAgVGhp cyBpcyBub3QgaW1tZWRpYXRlbHkgcmV0dXJuZWQKLQkgKiBiZWNhdXNlIHNvbWUgYWRkaXRpb25h bCBzYW5pdHkgY2hlY2tzIGFyZSByZXF1aXJlZC4KKwkgKiBiZWNhdXNlIHNvbWUgYWRkaXRpb25h bCBzYW5pdHkgY2hlY2tzIGFyZSByZXF1aXJlZC4gQWRkaXRpb25hbGx5LCB3ZQorCSAqIG5lZWQg dG8gcHJvY2VzcyBvdGhlciBpbmRleGVzIGFzIHBvdGVudGlhbCBhcmJpdGVycyB0byBhY2NvdW50 IGZvcgorCSAqIGNhc2VzIHdoZXJlIFJFSU5ERVggQ09OQ1VSUkVOVExZIGlzIHByb2Nlc3Npbmcg YW4gaW5kZXggdXNlZCBhcyBhCisJICogbmFtZWQgY29uc3RyYWludC4KIAkgKi8KIAlpZiAob25j b25mbGljdC0+Y29uc3RyYWludCAhPSBJbnZhbGlkT2lkKQogCXsKIAkJaW5kZXhPaWRGcm9tQ29u c3RyYWludCA9IGdldF9jb25zdHJhaW50X2luZGV4KG9uY29uZmxpY3QtPmNvbnN0cmFpbnQpOwog CiAJCWlmIChpbmRleE9pZEZyb21Db25zdHJhaW50ID09IEludmFsaWRPaWQpCisJCXsKIAkJCWVy ZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAot CQkJCQkgZXJybXNnKCJjb25zdHJhaW50IGluIE9OIENPTkZMSUNUIGNsYXVzZSBoYXMgbm8gYXNz b2NpYXRlZCBpbmRleCIpKSk7CisJCQkJCWVycm1zZygiY29uc3RyYWludCBpbiBPTiBDT05GTElD VCBjbGF1c2UgaGFzIG5vIGFzc29jaWF0ZWQgaW5kZXgiKSkpOworCQl9CisKKwkJLyoKKwkJICog RmluZCB0aGUgbmFtZWQgY29uc3RyYWludCBpbmRleCB0byBleHRyYWN0IGl0cyBhdHRyaWJ1dGVz IGFuZCBwcmVkaWNhdGVzLgorCQkgKiBXZSBvcGVuIGFsbCBpbmRleGVzIGluIHRoZSBsb29wIHRv IGF2b2lkIGRlYWRsb2NrIG9mIGNoYW5nZWQgb3JkZXIgb2YgbG9ja3MuCisJCSAqICovCisJCWZv cmVhY2gobCwgaW5kZXhMaXN0KQorCQl7CisJCQlPaWQJCQlpbmRleG9pZCA9IGxmaXJzdF9vaWQo bCk7CisJCQlSZWxhdGlvbglpZHhSZWw7CisJCQlGb3JtX3BnX2luZGV4IGlkeEZvcm07CisJCQlB dHRyTnVtYmVyCW5hdHQ7CisKKwkJCWlkeFJlbCA9IGluZGV4X29wZW4oaW5kZXhvaWQsIHJ0ZS0+ cmVsbG9ja21vZGUpOworCQkJaWR4Rm9ybSA9IGlkeFJlbC0+cmRfaW5kZXg7CisKKwkJCWlmIChp ZHhGb3JtLT5pbmRpc3JlYWR5KQorCQkJeworCQkJCWlmIChpbmRleE9pZEZyb21Db25zdHJhaW50 ID09IGlkeEZvcm0tPmluZGV4cmVsaWQpCisJCQkJeworCQkJCQkvKgorCQkJCQkgKiBQcmVwYXJl IHJlcXVpcmVtZW50cyBmb3Igb3RoZXIgaW5kZXhlcyB0byBiZSB1c2VkIGFzIGFyYml0ZXIgdG9n ZXRoZXIKKwkJCQkJICogd2l0aCBpbmRleE9pZEZyb21Db25zdHJhaW50LiBJdCBpcyByZXF1aXJl ZCB0byBpbnZvbHZlIGJvdGggZXF1YWxzIGluZGV4ZXMKKwkJCQkJICogaW4gY2FzZSBvZiBSRUlO REVYIENPTkNVUlJFTlRMWS4KKwkJCQkJICovCisJCQkJCWZvciAobmF0dCA9IDA7IG5hdHQgPCBp ZHhGb3JtLT5pbmRua2V5YXR0czsgbmF0dCsrKQorCQkJCQl7CisJCQkJCQlpbnQJCQlhdHRubyA9 IGlkeFJlbC0+cmRfaW5kZXgtPmluZGtleS52YWx1ZXNbbmF0dF07CisKKwkJCQkJCWlmIChhdHRu byAhPSAwKQorCQkJCQkJCXJlcXVpcmVkQXJiaXRlckF0dHJzID0gYm1zX2FkZF9tZW1iZXIocmVx dWlyZWRBcmJpdGVyQXR0cnMsCisJCQkJCQkJCQkJCQkJCSAgYXR0bm8gLSBGaXJzdExvd0ludmFs aWRIZWFwQXR0cmlidXRlTnVtYmVyKTsKKwkJCQkJfQorCQkJCQlyZXF1aXJlZEFyYml0ZXJFbGVt cyA9IFJlbGF0aW9uR2V0SW5kZXhFeHByZXNzaW9ucyhpZHhSZWwpOworCQkJCQlyZXF1aXJlZElu ZGV4UHJlZEV4cHJzID0gUmVsYXRpb25HZXRJbmRleFByZWRpY2F0ZShpZHhSZWwpOworCQkJCQkv KiBXZSBhcmUgZG9uZSwgc28sIHF1aXRlIHRoZSBsb29wLiAqLworCQkJCQlpbmRleF9jbG9zZShp ZHhSZWwsIE5vTG9jayk7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKwkJCWluZGV4X2Nsb3Nl KGlkeFJlbCwgTm9Mb2NrKTsKKwkJfQogCX0KIAogCS8qCiAJICogVXNpbmcgdGhhdCByZXByZXNl bnRhdGlvbiwgaXRlcmF0ZSB0aHJvdWdoIHRoZSBsaXN0IG9mIGluZGV4ZXMgb24gdGhlCiAJICog dGFyZ2V0IHJlbGF0aW9uIHRvIHRyeSBhbmQgZmluZCBhIG1hdGNoCiAJICovCi0JaW5kZXhMaXN0 ID0gUmVsYXRpb25HZXRJbmRleExpc3QocmVsYXRpb24pOwotCiAJZm9yZWFjaChsLCBpbmRleExp c3QpCiAJewogCQlPaWQJCQlpbmRleG9pZCA9IGxmaXJzdF9vaWQobCk7CkBAIC04MTMsNyArODYx LDEzIEBAIGluZmVyX2FyYml0ZXJfaW5kZXhlcyhQbGFubmVySW5mbyAqcm9vdCkKIAkJaWR4UmVs ID0gaW5kZXhfb3BlbihpbmRleG9pZCwgcnRlLT5yZWxsb2NrbW9kZSk7CiAJCWlkeEZvcm0gPSBp ZHhSZWwtPnJkX2luZGV4OwogCi0JCWlmICghaWR4Rm9ybS0+aW5kaXN2YWxpZCkKKwkJLyoKKwkJ ICogV2UgbmVlZCB0byBjb25zaWRlciBib3RoIGluZGlzdmFsaWQgYW5kIGluZGlzcmVhZHkgaW5k ZXhlcyBiZWNhdXNlCisJCSAqIHRoZW0gbWF5IGJlY29tZSBpbmRpc3ZhbGlkIGJlZm9yZSBleGVj dXRpb24gcGhhc2UuIEl0IGlzIHJlcXVpcmVkCisJCSAqIHRvIGtlZXAgc2V0IG9mIGluZGV4ZXMg dXNlZCBhcyBhcmJpdGVyIHRvIGJlIHRoZSBzYW1lIGZvciBhbGwKKwkJICogY29uY3VycmVudCB0 cmFuc2FjdGlvbnMuCisJCSAqLworCQlpZiAoIWlkeEZvcm0tPmluZGlzcmVhZHkpCiAJCQlnb3Rv IG5leHQ7CiAKIAkJLyoKQEAgLTgzMywyNyArODg3LDIzIEBAIGluZmVyX2FyYml0ZXJfaW5kZXhl cyhQbGFubmVySW5mbyAqcm9vdCkKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJKGVycmNvZGUo RVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCiAJCQkJCQkgZXJybXNnKCJPTiBDT05GTElDVCBE TyBVUERBVEUgbm90IHN1cHBvcnRlZCB3aXRoIGV4Y2x1c2lvbiBjb25zdHJhaW50cyIpKSk7Ci0K LQkJCXJlc3VsdHMgPSBsYXBwZW5kX29pZChyZXN1bHRzLCBpZHhGb3JtLT5pbmRleHJlbGlkKTsK LQkJCWxpc3RfZnJlZShpbmRleExpc3QpOwotCQkJaW5kZXhfY2xvc2UoaWR4UmVsLCBOb0xvY2sp OwotCQkJdGFibGVfY2xvc2UocmVsYXRpb24sIE5vTG9jayk7Ci0JCQlyZXR1cm4gcmVzdWx0czsK KwkJCWdvdG8gZm91bmQ7CiAJCX0KIAkJZWxzZSBpZiAoaW5kZXhPaWRGcm9tQ29uc3RyYWludCAh PSBJbnZhbGlkT2lkKQogCQl7Ci0JCQkvKiBObyBwb2ludCBpbiBmdXJ0aGVyIHdvcmsgZm9yIGlu ZGV4IGluIG5hbWVkIGNvbnN0cmFpbnQgY2FzZSAqLwotCQkJZ290byBuZXh0OworCQkJLyogSW4g dGhlIGNhc2Ugb2YgIk9OIGNvbnN0cmFpbnRfbmFtZSBETyBVUERBVEUiIHdlIG5lZWQgdG8gc2tp cCBub24tdW5pcXVlIGNhbmRpZGF0ZXMuICovCisJCQlpZiAoIWlkeEZvcm0tPmluZGlzdW5pcXVl ICYmIG9uY29uZmxpY3QtPmFjdGlvbiA9PSBPTkNPTkZMSUNUX1VQREFURSkKKwkJCQlnb3RvIG5l eHQ7CisJCX0gIGVsc2UgeworCQkJLyoKKwkJCSAqIE9ubHkgY29uc2lkZXJpbmcgY29udmVudGlv bmFsIGluZmVyZW5jZSBhdCB0aGlzIHBvaW50IChub3QgbmFtZWQKKwkJCSAqIGNvbnN0cmFpbnRz KSwgc28gaW5kZXggdW5kZXIgY29uc2lkZXJhdGlvbiBjYW4gYmUgaW1tZWRpYXRlbHkKKwkJCSAq IHNraXBwZWQgaWYgaXQncyBub3QgdW5pcXVlCisJCQkgKi8KKwkJCWlmICghaWR4Rm9ybS0+aW5k aXN1bmlxdWUpCisJCQkJZ290byBuZXh0OwogCQl9CiAKLQkJLyoKLQkJICogT25seSBjb25zaWRl cmluZyBjb252ZW50aW9uYWwgaW5mZXJlbmNlIGF0IHRoaXMgcG9pbnQgKG5vdCBuYW1lZAotCQkg KiBjb25zdHJhaW50cyksIHNvIGluZGV4IHVuZGVyIGNvbnNpZGVyYXRpb24gY2FuIGJlIGltbWVk aWF0ZWx5Ci0JCSAqIHNraXBwZWQgaWYgaXQncyBub3QgdW5pcXVlCi0JCSAqLwotCQlpZiAoIWlk eEZvcm0tPmluZGlzdW5pcXVlKQotCQkJZ290byBuZXh0OwotCiAJCS8qCiAJCSAqIFNvLWNhbGxl ZCB1bmlxdWUgY29uc3RyYWludHMgd2l0aCBXSVRIT1VUIE9WRVJMQVBTIGFyZSByZWFsbHkKIAkJ ICogZXhjbHVzaW9uIGNvbnN0cmFpbnRzLCBzbyBza2lwIHRob3NlIHRvby4KQEAgLTg3Myw3ICs5 MjMsNyBAQCBpbmZlcl9hcmJpdGVyX2luZGV4ZXMoUGxhbm5lckluZm8gKnJvb3QpCiAJCX0KIAog CQkvKiBOb24tZXhwcmVzc2lvbiBhdHRyaWJ1dGVzIChpZiBhbnkpIG11c3QgbWF0Y2ggKi8KLQkJ aWYgKCFibXNfZXF1YWwoaW5kZXhlZEF0dHJzLCBpbmZlckF0dHJzKSkKKwkJaWYgKCFibXNfZXF1 YWwoaW5kZXhlZEF0dHJzLCByZXF1aXJlZEFyYml0ZXJBdHRycykpCiAJCQlnb3RvIG5leHQ7CiAK IAkJLyogRXhwcmVzc2lvbiBhdHRyaWJ1dGVzIChpZiBhbnkpIG11c3QgbWF0Y2ggKi8KQEAgLTg4 MSw2ICs5MzEsMTAgQEAgaW5mZXJfYXJiaXRlcl9pbmRleGVzKFBsYW5uZXJJbmZvICpyb290KQog CQlpZiAoaWR4RXhwcnMgJiYgdmFybm8gIT0gMSkKIAkJCUNoYW5nZVZhck5vZGVzKChOb2RlICop IGlkeEV4cHJzLCAxLCB2YXJubywgMCk7CiAKKwkJLyoKKwkJICogSWYgYXJiaXRlckVsZW1zIGFy ZSBwcmVzZW50LCBjaGVjayB0aGVtLiBJZiBuYW1lID5jb25zdHJhaW50IGlzCisJCSAqIHByZXNl bnQgYXJiaXRlckVsZW1zID09IE5JTC4KKwkJICovCiAJCWZvcmVhY2goZWwsIG9uY29uZmxpY3Qt PmFyYml0ZXJFbGVtcykKIAkJewogCQkJSW5mZXJlbmNlRWxlbSAqZWxlbSA9IChJbmZlcmVuY2VF bGVtICopIGxmaXJzdChlbCk7CkBAIC05MTgsMjcgKzk3MiwzNSBAQCBpbmZlcl9hcmJpdGVyX2lu ZGV4ZXMoUGxhbm5lckluZm8gKnJvb3QpCiAJCX0KIAogCQkvKgotCQkgKiBOb3cgdGhhdCBhbGwg aW5mZXJlbmNlIGVsZW1lbnRzIHdlcmUgbWF0Y2hlZCwgZW5zdXJlIHRoYXQgdGhlCisJCSAqIElu IGNhc2Ugb2YgdGhlIGNvbnZlbnRpb25hbCBpbmZlcmVuY2UgaW52b2x2ZWQgZW5zdXJlIHRoYXQg dGhlCiAJCSAqIGV4cHJlc3Npb24gZWxlbWVudHMgZnJvbSBpbmZlcmVuY2UgY2xhdXNlIGFyZSBu b3QgbWlzc2luZyBhbnkKIAkJICogY2F0YWxvZ2VkIGV4cHJlc3Npb25zLiAgVGhpcyBkb2VzIHRo ZSByaWdodCB0aGluZyB3aGVuIHVuaXF1ZQogCQkgKiBpbmRleGVzIHJlZHVuZGFudGx5IHJlcGVh dCB0aGUgc2FtZSBhdHRyaWJ1dGUsIG9yIGlmIGF0dHJpYnV0ZXMKIAkJICogcmVkdW5kYW50bHkg YXBwZWFyIG11bHRpcGxlIHRpbWVzIHdpdGhpbiBhbiBpbmZlcmVuY2UgY2xhdXNlLgorCQkgKgor CQkgKiBJbiB0aGUgY2FzZSBvZiBuYW1lZCBjb25zdHJhaW50IGVuc3VyZSBjYW5kaWRhdGUgaGFz IGVxdWFsIHNldAorCQkgKiBvZiBleHByZXNzaW9ucyBhcyB0aGUgbmFtZWQgY29uc3RyYWludCBp bmRleC4KIAkJICovCi0JCWlmIChsaXN0X2RpZmZlcmVuY2UoaWR4RXhwcnMsIGluZmVyRWxlbXMp ICE9IE5JTCkKKwkJaWYgKGxpc3RfZGlmZmVyZW5jZShpZHhFeHBycywgcmVxdWlyZWRBcmJpdGVy RWxlbXMpICE9IE5JTCkKIAkJCWdvdG8gbmV4dDsKIAotCQkvKgotCQkgKiBJZiBpdCdzIGEgcGFy dGlhbCBpbmRleCwgaXRzIHByZWRpY2F0ZSBtdXN0IGJlIGltcGxpZWQgYnkgdGhlIE9OCi0JCSAq IENPTkZMSUNUJ3MgV0hFUkUgY2xhdXNlLgotCQkgKi8KIAkJcHJlZEV4cHJzID0gUmVsYXRpb25H ZXRJbmRleFByZWRpY2F0ZShpZHhSZWwpOwogCQlpZiAocHJlZEV4cHJzICYmIHZhcm5vICE9IDEp CiAJCQlDaGFuZ2VWYXJOb2RlcygoTm9kZSAqKSBwcmVkRXhwcnMsIDEsIHZhcm5vLCAwKTsKIAot CQlpZiAoIXByZWRpY2F0ZV9pbXBsaWVkX2J5KHByZWRFeHBycywgKExpc3QgKikgb25jb25mbGlj dC0+YXJiaXRlcldoZXJlLCBmYWxzZSkpCisJCS8qCisJCSAqIElmIGl0J3MgYSBwYXJ0aWFsIGlu ZGV4IGFuZCBjb252ZW50aW9uYWwgaW5mZXJlbmNlLCBpdHMgcHJlZGljYXRlIG11c3QgYmUgaW1w bGllZAorCQkgKiBieSB0aGUgT04gQ09ORkxJQ1QncyBXSEVSRSBjbGF1c2UuCisJCSAqLworCQlp ZiAoaW5kZXhPaWRGcm9tQ29uc3RyYWludCA9PSBJbnZhbGlkT2lkICYmICFwcmVkaWNhdGVfaW1w bGllZF9ieShwcmVkRXhwcnMsIHJlcXVpcmVkSW5kZXhQcmVkRXhwcnMsIGZhbHNlKSkKKwkJCWdv dG8gbmV4dDsKKwkJLyogSWYgaXQncyBhIHBhcnRpYWwgaW5kZXggYW5kIG5hbWVkIGNvbnN0cmFp bnQgcHJlZGljYXRlcyBtdXN0IGJlIGVxdWFsLiAqLworCQlpZiAoaW5kZXhPaWRGcm9tQ29uc3Ry YWludCAhPSBJbnZhbGlkT2lkICYmIGxpc3RfZGlmZmVyZW5jZShwcmVkRXhwcnMsIHJlcXVpcmVk SW5kZXhQcmVkRXhwcnMpICE9IE5JTCkKIAkJCWdvdG8gbmV4dDsKIAorZm91bmQ6CiAJCXJlc3Vs dHMgPSBsYXBwZW5kX29pZChyZXN1bHRzLCBpZHhGb3JtLT5pbmRleHJlbGlkKTsKKwkJZm91bmRW YWxpZCB8PSBpZHhGb3JtLT5pbmRpc3ZhbGlkOwogbmV4dDoKIAkJaW5kZXhfY2xvc2UoaWR4UmVs LCBOb0xvY2spOwogCX0KQEAgLTk0Niw3ICsxMDA4LDggQEAgbmV4dDoKIAlsaXN0X2ZyZWUoaW5k ZXhMaXN0KTsKIAl0YWJsZV9jbG9zZShyZWxhdGlvbiwgTm9Mb2NrKTsKIAotCWlmIChyZXN1bHRz ID09IE5JTCkKKwkvKiBJdCBpcyByZXF1aXJlZCB0byBoYXZlIGF0IGxlYXN0IG9uZSBpbmRpc3Zh bGlkIGluZGV4IGR1cmluZyB0aGUgcGxhbm5pbmcuICovCisJaWYgKHJlc3VsdHMgPT0gTklMIHx8 ICFmb3VuZFZhbGlkKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5W QUxJRF9DT0xVTU5fUkVGRVJFTkNFKSwKIAkJCQkgZXJybXNnKCJ0aGVyZSBpcyBubyB1bmlxdWUg b3IgZXhjbHVzaW9uIGNvbnN0cmFpbnQgbWF0Y2hpbmcgdGhlIE9OIENPTkZMSUNUIHNwZWNpZmlj YXRpb24iKSkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMg Yi9zcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3IuYwppbmRleCBlYTM1ZjMwZjQ5NC4uZGNm ZTE2YTk4MjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUvc25hcG1nci5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUvc25hcG1nci5jCkBAIC0xMjMsNiArMTIzLDcgQEAK ICNpbmNsdWRlICJ1dGlscy9yZXNvd25lci5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIK ICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9w b2ludC5oIgogCiAKIC8qCkBAIC00NDcsNiArNDQ4LDcgQEAgSW52YWxpZGF0ZUNhdGFsb2dTbmFw c2hvdCh2b2lkKQogCQlwYWlyaW5naGVhcF9yZW1vdmUoJlJlZ2lzdGVyZWRTbmFwc2hvdHMsICZD YXRhbG9nU25hcHNob3QtPnBoX25vZGUpOwogCQlDYXRhbG9nU25hcHNob3QgPSBOVUxMOwogCQlT bmFwc2hvdFJlc2V0WG1pbigpOworCQlJTkpFQ1RJT05fUE9JTlQoImludmFsaWRhdGVfY2F0YWxv Z19zbmFwc2hvdF9lbmQiKTsKIAl9CiB9CiAKLS0gCjIuNDMuMAoK --000000000000176c55063224bb18 Content-Type: application/octet-stream; name="v17-0004-Allow-snapshot-resets-during-parallel-concurrent.patch" Content-Disposition: attachment; filename="v17-0004-Allow-snapshot-resets-during-parallel-concurrent.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m967p8963 RnJvbSBjNTdlZDU0MTdjZTQ0NGEyODk5Y2Q2MTE0NzU4MTY2NDJkMzAyOTZlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAxIEphbiAyMDI1IDE1OjI1OjIwICswMTAwClN1YmplY3Q6IFtQQVRDSCB2MTcgMDQv MTJdIEFsbG93IHNuYXBzaG90IHJlc2V0cyBkdXJpbmcgcGFyYWxsZWwgY29uY3VycmVudAogaW5k ZXggYnVpbGRzCgpQcmV2aW91c2x5LCBub24tdW5pcXVlIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRz IGluIHBhcmFsbGVsIG1vZGUgcmVxdWlyZWQgYQpjb25zaXN0ZW50IE1WQ0Mgc25hcHNob3QgdGhy b3VnaG91dCB0aGUgYnVpbGQsIHdoaWNoIGNvdWxkIGhvbGQgYmFjayB0aGUgeG1pbgpob3Jpem9u IGFuZCBwcmV2ZW50IGRlYWQgdHVwbGUgY2xlYW51cC4gVGhpcyBwYXRjaCBleHRlbmRzIHRoZSBw cmV2aW91cyB3b3JrCm9uIHNuYXBzaG90IHJlc2V0cyAoaW50cm9kdWNlZCBmb3Igbm9uLXBhcmFs bGVsIGJ1aWxkcykgdG8gYWxzbyBzdXBwb3J0CnBhcmFsbGVsIGJ1aWxkcy4KCktleSBjaGFuZ2Vz OgotIEFkZCBpbmZyYXN0cnVjdHVyZSB0byB0cmFjayBzbmFwc2hvdCByZXN0b3JhdGlvbiBpbiBw YXJhbGxlbCB3b3JrZXJzCi0gRXh0ZW5kIHBhcmFsbGVsIHNjYW4gaW5pdGlhbGl6YXRpb24gdG8g c3VwcG9ydCBwZXJpb2RpYyBzbmFwc2hvdCByZXNldHMKLSBXYWl0IGZvciBwYXJhbGxlbCB3b3Jr ZXJzIHRvIHJlc3RvcmUgdGhlaXIgaW5pdGlhbCBzbmFwc2hvdHMgYmVmb3JlIHByb2NlZWRpbmcg d2l0aCBzY2FuCi0gQWRkIHJlZ3Jlc3Npb24gdGVzdHMgdG8gdmVyaWZ5IGJlaGF2aW9yIHdpdGgg dmFyaW91cyBpbmRleCB0eXBlcwoKVGhlIHNuYXBzaG90IHJlc2V0IGFwcHJvYWNoIGlzIHNhZmUg Zm9yIG5vbi11bmlxdWUgaW5kZXhlcyBzaW5jZSB0aGV5IGRvbid0Cm5lZWQgc25hcHNob3QgY29u c2lzdGVuY3kgYWNyb3NzIHRoZSBlbnRpcmUgc2Nhbi4gRm9yIHVuaXF1ZSBpbmRleGVzLCB3ZQpj b250aW51ZSB0byBtYWludGFpbiBhIGNvbnNpc3RlbnQgc25hcHNob3QgdG8gcHJvcGVybHkgZW5m b3JjZSB1bmlxdWVuZXNzCmNvbnN0cmFpbnRzLgoKVGhpcyBoZWxwcyByZWR1Y2UgdGhlIHhtaW4g aG9yaXpvbiBpbXBhY3Qgb2YgbG9uZy1ydW5uaW5nIGNvbmN1cnJlbnQgaW5kZXgKYnVpbGRzIGlu IHBhcmFsbGVsIG1vZGUsIGltcHJvdmluZyBWQUNVVU0ncyBhYmlsaXR5IHRvIGNsZWFuIHVwIGRl YWQgdHVwbGVzLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYyAgICAgICAgICAg ICAgICB8IDUwICsrKysrKysrKy0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5z ZXJ0LmMgICAgICAgICAgICB8IDUwICsrKysrKysrKy0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgICAgICB8IDEyICsrLS0KIHNyYy9iYWNrZW5kL2FjY2Vz cy9uYnRyZWUvbmJ0c29ydC5jICAgICAgICAgICB8IDU3ICsrKysrKysrKysrKysrLS0tLS0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMgICAgICAgICAgICB8IDM3ICsrKysrKysr KystLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYyAgICAgICAgIHwgNTAg KysrKysrKysrKysrKystLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgICAg ICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgICAgICAg ICAgICB8ICAzICstCiBzcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3IuYyAgICAgICAgICAg ICAgfCAgOCAtLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5oICAgICAgICAgICAgICAg ICB8ICAzICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oICAgICAgICAgICAgICAgICAg fCAgMSArCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAgICAgICAgfCAg OSArLS0KIC4uLi9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dCAgICAgICAgICB8IDI1 ICsrKysrKystCiAuLi4vc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsICAgICAgICAgICAgICAg fCAgNyArKy0KIDE0IGZpbGVzIGNoYW5nZWQsIDIyNSBpbnNlcnRpb25zKCspLCA4OSBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKaW5kZXggZTVhOTQ1YTFiMTQuLjQyMzQyNGU1MWEy IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCkBAIC0xNDMsNyArMTQzLDYgQEAgdHlwZWRlZiBzdHJ1 Y3QgQnJpbkxlYWRlcgogCSAqLwogCUJyaW5TaGFyZWQgKmJyaW5zaGFyZWQ7CiAJU2hhcmVkc29y dCAqc2hhcmVkc29ydDsKLQlTbmFwc2hvdAlzbmFwc2hvdDsKIAlXYWxVc2FnZSAgICp3YWx1c2Fn ZTsKIAlCdWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7CiB9IEJyaW5MZWFkZXI7CkBAIC0yMzEsNyAr MjMwLDcgQEAgc3RhdGljIHZvaWQgYnJpbl9maWxsX2VtcHR5X3JhbmdlcyhCcmluQnVpbGRTdGF0 ZSAqc3RhdGUsCiBzdGF0aWMgdm9pZCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0 ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJCQkJCQkJCSBi b29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpOwogc3RhdGljIHZvaWQgX2JyaW5fZW5kX3Bh cmFsbGVsKEJyaW5MZWFkZXIgKmJyaW5sZWFkZXIsIEJyaW5CdWlsZFN0YXRlICpzdGF0ZSk7Ci1z dGF0aWMgU2l6ZSBfYnJpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoUmVsYXRpb24gaGVhcCwg U25hcHNob3Qgc25hcHNob3QpOworc3RhdGljIFNpemUgX2JyaW5fcGFyYWxsZWxfZXN0aW1hdGVf c2hhcmVkKFJlbGF0aW9uIGhlYXApOwogc3RhdGljIGRvdWJsZSBfYnJpbl9wYXJhbGxlbF9oZWFw c2NhbihCcmluQnVpbGRTdGF0ZSAqc3RhdGUpOwogc3RhdGljIGRvdWJsZSBfYnJpbl9wYXJhbGxl bF9tZXJnZShCcmluQnVpbGRTdGF0ZSAqc3RhdGUpOwogc3RhdGljIHZvaWQgX2JyaW5fbGVhZGVy X3BhcnRpY2lwYXRlX2FzX3dvcmtlcihCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKQEAgLTEy MjEsNyArMTIyMCw2IEBAIGJyaW5idWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwg SW5kZXhJbmZvICppbmRleEluZm8pCiAJCXJlbHR1cGxlcyA9IF9icmluX3BhcmFsbGVsX21lcmdl KHN0YXRlKTsKIAogCQlfYnJpbl9lbmRfcGFyYWxsZWwoc3RhdGUtPmJzX2xlYWRlciwgc3RhdGUp OwotCQlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElz VmFsaWQoTXlQcm9jLT54bWluKSk7CiAJfQogCWVsc2UJCQkJCQkvKiBubyBwYXJhbGxlbCBpbmRl eCBidWlsZCAqLwogCXsKQEAgLTEyNTQsNyArMTI1Miw2IEBAIGJyaW5idWlsZChSZWxhdGlvbiBo ZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJCWJyaW5fZmlsbF9l bXB0eV9yYW5nZXMoc3RhdGUsCiAJCQkJCQkJICAgc3RhdGUtPmJzX2N1cnJSYW5nZVN0YXJ0LAog CQkJCQkJCSAgIHN0YXRlLT5ic19tYXhSYW5nZVN0YXJ0KTsKLQkJQXNzZXJ0KCFpbmRleEluZm8t PmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwog CX0KIAogCS8qIHJlbGVhc2UgcmVzb3VyY2VzICovCkBAIC0xMjY5LDYgKzEyNjYsNyBAQCBicmlu YnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZv KQogCiAJcmVzdWx0LT5oZWFwX3R1cGxlcyA9IHJlbHR1cGxlczsKIAlyZXN1bHQtPmluZGV4X3R1 cGxlcyA9IGlkeHR1cGxlczsKKwlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAh VHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54aWQpKTsKIAogCXJldHVybiByZXN1bHQ7CiB9 CkBAIC0yMzY4LDcgKzIzNjYsNiBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0 ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiB7CiAJUGFyYWxs ZWxDb250ZXh0ICpwY3h0OwogCWludAkJCXNjYW50dXBsZXNvcnRzdGF0ZXM7Ci0JU25hcHNob3QJ c25hcHNob3Q7CiAJU2l6ZQkJZXN0YnJpbnNoYXJlZDsKIAlTaXplCQllc3Rzb3J0OwogCUJyaW5T aGFyZWQgKmJyaW5zaGFyZWQ7CkBAIC0yMzk5LDI1ICsyMzk2LDI1IEBAIF9icmluX2JlZ2luX3Bh cmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlv biBpbmRleCwKIAkgKiBQcmVwYXJlIGZvciBzY2FuIG9mIHRoZSBiYXNlIHJlbGF0aW9uLiAgSW4g YSBub3JtYWwgaW5kZXggYnVpbGQsIHdlIHVzZQogCSAqIFNuYXBzaG90QW55IGJlY2F1c2Ugd2Ug bXVzdCByZXRyaWV2ZSBhbGwgdHVwbGVzIGFuZCBkbyBvdXIgb3duIHRpbWUKIAkgKiBxdWFsIGNo ZWNrcyAoYmVjYXVzZSB3ZSBoYXZlIHRvIGluZGV4IFJFQ0VOVExZX0RFQUQgdHVwbGVzKS4gIElu IGEKLQkgKiBjb25jdXJyZW50IGJ1aWxkLCB3ZSB0YWtlIGEgcmVndWxhciBNVkNDIHNuYXBzaG90 IGFuZCBpbmRleCB3aGF0ZXZlcidzCi0JICogbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdC4KKwkgKiBj b25jdXJyZW50IGJ1aWxkLCB3ZSB0YWtlIGEgcmVndWxhciBNVkNDIHNuYXBzaG90IGFuZCBwdXNo IGl0IGFzIGFjdGl2ZS4KKwkgKiBMYXRlciB3ZSBpbmRleCB3aGF0ZXZlcidzIGxpdmUgYWNjb3Jk aW5nIHRvIHRoYXQgc25hcHNob3Qgd2hpbGUgdGhhdAorCSAqIHNuYXBzaG90IGlzIHJlc2V0IHBl cmlvZGljYWxseS4KIAkgKi8KIAlpZiAoIWlzY29uY3VycmVudCkKIAl7CiAJCUFzc2VydChBY3Rp dmVTbmFwc2hvdFNldCgpKTsKLQkJc25hcHNob3QgPSBTbmFwc2hvdEFueTsKIAkJbmVlZF9wb3Bf YWN0aXZlX3NuYXBzaG90ID0gZmFsc2U7CiAJfQogCWVsc2UKIAl7Ci0JCXNuYXBzaG90ID0gUmVn aXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQlBc3NlcnQoIUFjdGl2 ZVNuYXBzaG90U2V0KCkpOwogCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFw c2hvdCgpKTsKIAl9CiAKIAkvKgogCSAqIEVzdGltYXRlIHNpemUgZm9yIG91ciBvd24gUEFSQUxM RUxfS0VZX0JSSU5fU0hBUkVEIHdvcmtzcGFjZS4KIAkgKi8KLQllc3Ricmluc2hhcmVkID0gX2Jy aW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hhcmVkKGhlYXAsIHNuYXBzaG90KTsKKwllc3Ricmluc2hh cmVkID0gX2JyaW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hhcmVkKGhlYXApOwogCXNobV90b2NfZXN0 aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwgZXN0YnJpbnNoYXJlZCk7CiAJZXN0c29ydCA9 IHR1cGxlc29ydF9lc3RpbWF0ZV9zaGFyZWQoc2NhbnR1cGxlc29ydHN0YXRlcyk7CiAJc2htX3Rv Y19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBlc3Rzb3J0KTsKQEAgLTI0NTcsOCAr MjQ1NCw2IEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRl LCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAl7CiAJCWlmIChuZWVkX3BvcF9hY3Rp dmVfc25hcHNob3QpCiAJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwotCQlpZiAoSXNNVkNDU25hcHNo b3Qoc25hcHNob3QpKQotCQkJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKIAkJRGVzdHJv eVBhcmFsbGVsQ29udGV4dChwY3h0KTsKIAkJRXhpdFBhcmFsbGVsTW9kZSgpOwogCQlyZXR1cm47 CkBAIC0yNDgzLDcgKzI0NzgsOCBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0 ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAKIAl0YWJsZV9w YXJhbGxlbHNjYW5faW5pdGlhbGl6ZShoZWFwLAogCQkJCQkJCQkgIFBhcmFsbGVsVGFibGVTY2Fu RnJvbUJyaW5TaGFyZWQoYnJpbnNoYXJlZCksCi0JCQkJCQkJCSAgc25hcHNob3QpOworCQkJCQkJ CQkgIGlzY29uY3VycmVudCA/IEludmFsaWRTbmFwc2hvdCA6IFNuYXBzaG90QW55LAorCQkJCQkJ CQkgIGlzY29uY3VycmVudCk7CiAKIAkvKgogCSAqIFN0b3JlIHNoYXJlZCB0dXBsZXNvcnQtcHJp dmF0ZSBzdGF0ZSwgZm9yIHdoaWNoIHdlIHJlc2VydmVkIHNwYWNlLgpAQCAtMjUyOSw3ICsyNTI1 LDYgQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJl bGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCQlicmlubGVhZGVyLT5ucGFydGljaXBhbnR0 dXBsZXNvcnRzKys7CiAJYnJpbmxlYWRlci0+YnJpbnNoYXJlZCA9IGJyaW5zaGFyZWQ7CiAJYnJp bmxlYWRlci0+c2hhcmVkc29ydCA9IHNoYXJlZHNvcnQ7Ci0JYnJpbmxlYWRlci0+c25hcHNob3Qg PSBzbmFwc2hvdDsKIAlicmlubGVhZGVyLT53YWx1c2FnZSA9IHdhbHVzYWdlOwogCWJyaW5sZWFk ZXItPmJ1ZmZlcnVzYWdlID0gYnVmZmVydXNhZ2U7CiAKQEAgLTI1NDUsNiArMjU0MCwxMyBAQCBf YnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24g aGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJLyogU2F2ZSBsZWFkZXIgc3RhdGUgbm93IHRoYXQgaXQn cyBjbGVhciBidWlsZCB3aWxsIGJlIHBhcmFsbGVsICovCiAJYnVpbGRzdGF0ZS0+YnNfbGVhZGVy ID0gYnJpbmxlYWRlcjsKIAorCS8qCisJICogSW4gY2FzZSBvZiBjb25jdXJyZW50IGJ1aWxkIHNu YXBzaG90cyBhcmUgZ29pbmcgdG8gYmUgcmVzZXQgcGVyaW9kaWNhbGx5LgorCSAqIFdlIG5lZWQg dG8gd2FpdCB1bnRpbCBhbGwgd29ya2VycyBpbXBvcnRlZCBpbml0aWFsIHNuYXBzaG90LgorCSAq LworCWlmIChpc2NvbmN1cnJlbnQpCisJCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChw Y3h0LCB0cnVlKTsKKwogCS8qIEpvaW4gaGVhcCBzY2FuIG91cnNlbHZlcyAqLwogCWlmIChsZWFk ZXJwYXJ0aWNpcGF0ZXMpCiAJCV9icmluX2xlYWRlcl9wYXJ0aWNpcGF0ZV9hc193b3JrZXIoYnVp bGRzdGF0ZSwgaGVhcCwgaW5kZXgpOwpAQCAtMjU1Myw3ICsyNTU1LDggQEAgX2JyaW5fYmVnaW5f cGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0 aW9uIGluZGV4LAogCSAqIENhbGxlciBuZWVkcyB0byB3YWl0IGZvciBhbGwgbGF1bmNoZWQgd29y a2VycyB3aGVuIHdlIHJldHVybi4gIE1ha2UKIAkgKiBzdXJlIHRoYXQgdGhlIGZhaWx1cmUtdG8t c3RhcnQgY2FzZSB3aWxsIG5vdCBoYW5nIGZvcmV2ZXIuCiAJICovCi0JV2FpdEZvclBhcmFsbGVs V29ya2Vyc1RvQXR0YWNoKHBjeHQpOworCWlmICghaXNjb25jdXJyZW50KQorCQlXYWl0Rm9yUGFy YWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCwgZmFsc2UpOwogCWlmIChuZWVkX3BvcF9hY3RpdmVf c25hcHNob3QpCiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiB9CkBAIC0yNTc2LDkgKzI1NzksNiBA QCBfYnJpbl9lbmRfcGFyYWxsZWwoQnJpbkxlYWRlciAqYnJpbmxlYWRlciwgQnJpbkJ1aWxkU3Rh dGUgKnN0YXRlKQogCWZvciAoaSA9IDA7IGkgPCBicmlubGVhZGVyLT5wY3h0LT5ud29ya2Vyc19s YXVuY2hlZDsgaSsrKQogCQlJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeSgmYnJpbmxlYWRlci0+YnVm ZmVydXNhZ2VbaV0sICZicmlubGVhZGVyLT53YWx1c2FnZVtpXSk7CiAKLQkvKiBGcmVlIGxhc3Qg cmVmZXJlbmNlIHRvIE1WQ0Mgc25hcHNob3QsIGlmIG9uZSB3YXMgdXNlZCAqLwotCWlmIChJc01W Q0NTbmFwc2hvdChicmlubGVhZGVyLT5zbmFwc2hvdCkpCi0JCVVucmVnaXN0ZXJTbmFwc2hvdChi cmlubGVhZGVyLT5zbmFwc2hvdCk7CiAJRGVzdHJveVBhcmFsbGVsQ29udGV4dChicmlubGVhZGVy LT5wY3h0KTsKIAlFeGl0UGFyYWxsZWxNb2RlKCk7CiB9CkBAIC0yNzc4LDE0ICsyNzc4LDE0IEBA IF9icmluX3BhcmFsbGVsX21lcmdlKEJyaW5CdWlsZFN0YXRlICpzdGF0ZSkKIAogLyoKICAqIFJl dHVybnMgc2l6ZSBvZiBzaGFyZWQgbWVtb3J5IHJlcXVpcmVkIHRvIHN0b3JlIHN0YXRlIGZvciBh IHBhcmFsbGVsCi0gKiBicmluIGluZGV4IGJ1aWxkIGJhc2VkIG9uIHRoZSBzbmFwc2hvdCBpdHMg cGFyYWxsZWwgc2NhbiB3aWxsIHVzZS4KKyAqIGJyaW4gaW5kZXggYnVpbGQuCiAgKi8KIHN0YXRp YyBTaXplCi1fYnJpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoUmVsYXRpb24gaGVhcCwgU25h cHNob3Qgc25hcHNob3QpCitfYnJpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoUmVsYXRpb24g aGVhcCkKIHsKIAkvKiBjLmYuIHNobV90b2NfYWxsb2NhdGUgYXMgdG8gd2h5IEJVRkZFUkFMSUdO IGlzIHVzZWQgKi8KIAlyZXR1cm4gYWRkX3NpemUoQlVGRkVSQUxJR04oc2l6ZW9mKEJyaW5TaGFy ZWQpKSwKLQkJCQkJdGFibGVfcGFyYWxsZWxzY2FuX2VzdGltYXRlKGhlYXAsIHNuYXBzaG90KSk7 CisJCQkJCXRhYmxlX3BhcmFsbGVsc2Nhbl9lc3RpbWF0ZShoZWFwLCBJbnZhbGlkU25hcHNob3Qp KTsKIH0KIAogLyoKQEAgLTI4MDcsNiArMjgwNyw3IEBAIF9icmluX2xlYWRlcl9wYXJ0aWNpcGF0 ZV9hc193b3JrZXIoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJl CiAJLyogUGVyZm9ybSB3b3JrIGNvbW1vbiB0byBhbGwgcGFydGljaXBhbnRzICovCiAJX2JyaW5f cGFyYWxsZWxfc2Nhbl9hbmRfYnVpbGQoYnVpbGRzdGF0ZSwgYnJpbmxlYWRlci0+YnJpbnNoYXJl ZCwKIAkJCQkJCQkJICBicmlubGVhZGVyLT5zaGFyZWRzb3J0LCBoZWFwLCBpbmRleCwgc29ydG1l bSwgdHJ1ZSk7CisJQXNzZXJ0KCFicmlubGVhZGVyLT5icmluc2hhcmVkLT5pc2NvbmN1cnJlbnQg fHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eGlkKSk7CiB9CiAKIC8qCkBAIC0yOTQ3 LDYgKzI5NDgsMTMgQEAgX2JyaW5fcGFyYWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVudCAqc2Vn LCBzaG1fdG9jICp0b2MpCiAKIAlfYnJpbl9wYXJhbGxlbF9zY2FuX2FuZF9idWlsZChidWlsZHN0 YXRlLCBicmluc2hhcmVkLCBzaGFyZWRzb3J0LAogCQkJCQkJCQkgIGhlYXBSZWwsIGluZGV4UmVs LCBzb3J0bWVtLCBmYWxzZSk7CisJaWYgKGJyaW5zaGFyZWQtPmlzY29uY3VycmVudCkKKwl7CisJ CVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwkJ QXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhpZCkpOworCQlQdXNoQWN0aXZl U25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwl9CiAKIAkvKiBSZXBvcnQgV0FM L2J1ZmZlciB1c2FnZSBkdXJpbmcgcGFyYWxsZWwgZXhlY3V0aW9uICovCiAJYnVmZmVydXNhZ2Ug PSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9CVUZGRVJfVVNBR0UsIGZhbHNlKTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jCmluZGV4IDBkNTc5MmZmN2ZmLi5mZTBiNzlhNWZk ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jCkBAIC0xMzIsNyArMTMyLDYgQEAgdHlw ZWRlZiBzdHJ1Y3QgR2luTGVhZGVyCiAJICovCiAJR2luQnVpbGRTaGFyZWQgKmdpbnNoYXJlZDsK IAlTaGFyZWRzb3J0ICpzaGFyZWRzb3J0OwotCVNuYXBzaG90CXNuYXBzaG90OwogCVdhbFVzYWdl ICAgKndhbHVzYWdlOwogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKIH0gR2luTGVhZGVyOwpA QCAtMTgwLDcgKzE3OSw3IEBAIHR5cGVkZWYgc3RydWN0CiBzdGF0aWMgdm9pZCBfZ2luX2JlZ2lu X3BhcmFsbGVsKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0 aW9uIGluZGV4LAogCQkJCQkJCQlib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpOwogc3Rh dGljIHZvaWQgX2dpbl9lbmRfcGFyYWxsZWwoR2luTGVhZGVyICpnaW5sZWFkZXIsIEdpbkJ1aWxk U3RhdGUgKnN0YXRlKTsKLXN0YXRpYyBTaXplIF9naW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hhcmVk KFJlbGF0aW9uIGhlYXAsIFNuYXBzaG90IHNuYXBzaG90KTsKK3N0YXRpYyBTaXplIF9naW5fcGFy YWxsZWxfZXN0aW1hdGVfc2hhcmVkKFJlbGF0aW9uIGhlYXApOwogc3RhdGljIGRvdWJsZSBfZ2lu X3BhcmFsbGVsX2hlYXBzY2FuKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUpOwogc3RhdGljIGRv dWJsZSBfZ2luX3BhcmFsbGVsX21lcmdlKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUpOwogc3Rh dGljIHZvaWQgX2dpbl9sZWFkZXJfcGFydGljaXBhdGVfYXNfd29ya2VyKEdpbkJ1aWxkU3RhdGUg KmJ1aWxkc3RhdGUsCkBAIC03MTcsNyArNzE2LDYgQEAgZ2luYnVpbGQoUmVsYXRpb24gaGVhcCwg UmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQlyZWx0dXBsZXMgPSBfZ2lu X3BhcmFsbGVsX21lcmdlKHN0YXRlKTsKIAogCQlfZ2luX2VuZF9wYXJhbGxlbChzdGF0ZS0+YnNf bGVhZGVyLCBzdGF0ZSk7Ci0JCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFU cmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAl9CiAJZWxzZQkJCQkJCS8qIG5v IHBhcmFsbGVsIGluZGV4IGJ1aWxkICovCiAJewpAQCAtNzQxLDcgKzczOSw2IEBAIGdpbmJ1aWxk KFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAkJ CQkJCSAgIGxpc3QsIG5saXN0LCAmYnVpbGRzdGF0ZS5idWlsZFN0YXRzKTsKIAkJfQogCQlNZW1v cnlDb250ZXh0U3dpdGNoVG8ob2xkQ3R4KTsKLQkJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1 cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCX0KIAogCU1l bW9yeUNvbnRleHREZWxldGUoYnVpbGRzdGF0ZS5mdW5jQ3R4KTsKQEAgLTc3MSw2ICs3NjgsNyBA QCBnaW5idWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRl eEluZm8pCiAKIAlyZXN1bHQtPmhlYXBfdHVwbGVzID0gcmVsdHVwbGVzOwogCXJlc3VsdC0+aW5k ZXhfdHVwbGVzID0gYnVpbGRzdGF0ZS5pbmR0dXBsZXM7CisJQXNzZXJ0KCFpbmRleEluZm8tPmlp X0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJ cmV0dXJuIHJlc3VsdDsKIH0KQEAgLTkwNSw3ICs5MDMsNiBAQCBfZ2luX2JlZ2luX3BhcmFsbGVs KEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4 LAogewogCVBhcmFsbGVsQ29udGV4dCAqcGN4dDsKIAlpbnQJCQlzY2FudHVwbGVzb3J0c3RhdGVz OwotCVNuYXBzaG90CXNuYXBzaG90OwogCVNpemUJCWVzdGdpbnNoYXJlZDsKIAlTaXplCQllc3Rz b3J0OwogCUdpbkJ1aWxkU2hhcmVkICpnaW5zaGFyZWQ7CkBAIC05MzUsMjUgKzkzMiwyNSBAQCBf Z2luX2JlZ2luX3BhcmFsbGVsKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhl YXAsIFJlbGF0aW9uIGluZGV4LAogCSAqIFByZXBhcmUgZm9yIHNjYW4gb2YgdGhlIGJhc2UgcmVs YXRpb24uICBJbiBhIG5vcm1hbCBpbmRleCBidWlsZCwgd2UgdXNlCiAJICogU25hcHNob3RBbnkg YmVjYXVzZSB3ZSBtdXN0IHJldHJpZXZlIGFsbCB0dXBsZXMgYW5kIGRvIG91ciBvd24gdGltZQog CSAqIHF1YWwgY2hlY2tzIChiZWNhdXNlIHdlIGhhdmUgdG8gaW5kZXggUkVDRU5UTFlfREVBRCB0 dXBsZXMpLiAgSW4gYQotCSAqIGNvbmN1cnJlbnQgYnVpbGQsIHdlIHRha2UgYSByZWd1bGFyIE1W Q0Mgc25hcHNob3QgYW5kIGluZGV4IHdoYXRldmVyJ3MKLQkgKiBsaXZlIGFjY29yZGluZyB0byB0 aGF0LgorCSAqIGNvbmN1cnJlbnQgYnVpbGQsIHdlIHRha2UgYSByZWd1bGFyIE1WQ0Mgc25hcHNo b3QgYW5kIHB1c2ggaXQgYXMgYWN0aXZlLgorCSAqIExhdGVyIHdlIGluZGV4IHdoYXRldmVyJ3Mg bGl2ZSBhY2NvcmRpbmcgdG8gdGhhdCBzbmFwc2hvdCB3aGlsZSB0aGF0CisJICogc25hcHNob3Qg aXMgcmVzZXQgcGVyaW9kaWNhbGx5LgogCSAqLwogCWlmICghaXNjb25jdXJyZW50KQogCXsKIAkJ QXNzZXJ0KEFjdGl2ZVNuYXBzaG90U2V0KCkpOwotCQlzbmFwc2hvdCA9IFNuYXBzaG90QW55Owog CQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSBmYWxzZTsKIAl9CiAJZWxzZQogCXsKLQkJc25h cHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJCUFz c2VydCghQWN0aXZlU25hcHNob3RTZXQoKSk7CiAJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFu c2FjdGlvblNuYXBzaG90KCkpOwogCX0KIAogCS8qCiAJICogRXN0aW1hdGUgc2l6ZSBmb3Igb3Vy IG93biBQQVJBTExFTF9LRVlfR0lOX1NIQVJFRCB3b3Jrc3BhY2UuCiAJICovCi0JZXN0Z2luc2hh cmVkID0gX2dpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoaGVhcCwgc25hcHNob3QpOworCWVz dGdpbnNoYXJlZCA9IF9naW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hhcmVkKGhlYXApOwogCXNobV90 b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwgZXN0Z2luc2hhcmVkKTsKIAllc3Rz b3J0ID0gdHVwbGVzb3J0X2VzdGltYXRlX3NoYXJlZChzY2FudHVwbGVzb3J0c3RhdGVzKTsKIAlz aG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsIGVzdHNvcnQpOwpAQCAtOTkz LDggKzk5MCw2IEBAIF9naW5fYmVnaW5fcGFyYWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0 ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJewogCQlpZiAobmVlZF9wb3BfYWN0 aXZlX3NuYXBzaG90KQogCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKLQkJaWYgKElzTVZDQ1NuYXBz aG90KHNuYXBzaG90KSkKLQkJCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CiAJCURlc3Ry b3lQYXJhbGxlbENvbnRleHQocGN4dCk7CiAJCUV4aXRQYXJhbGxlbE1vZGUoKTsKIAkJcmV0dXJu OwpAQCAtMTAxOCw3ICsxMDEzLDggQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRl ICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAogCXRhYmxlX3Bh cmFsbGVsc2Nhbl9pbml0aWFsaXplKGhlYXAsCiAJCQkJCQkJCSAgUGFyYWxsZWxUYWJsZVNjYW5G cm9tR2luQnVpbGRTaGFyZWQoZ2luc2hhcmVkKSwKLQkJCQkJCQkJICBzbmFwc2hvdCk7CisJCQkJ CQkJCSAgaXNjb25jdXJyZW50ID8gSW52YWxpZFNuYXBzaG90IDogU25hcHNob3RBbnksCisJCQkJ CQkJCSAgaXNjb25jdXJyZW50KTsKIAogCS8qCiAJICogU3RvcmUgc2hhcmVkIHR1cGxlc29ydC1w cml2YXRlIHN0YXRlLCBmb3Igd2hpY2ggd2UgcmVzZXJ2ZWQgc3BhY2UuCkBAIC0xMDYwLDcgKzEw NTYsNiBAQCBfZ2luX2JlZ2luX3BhcmFsbGVsKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJl bGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCQlnaW5sZWFkZXItPm5wYXJ0aWNpcGFudHR1 cGxlc29ydHMrKzsKIAlnaW5sZWFkZXItPmdpbnNoYXJlZCA9IGdpbnNoYXJlZDsKIAlnaW5sZWFk ZXItPnNoYXJlZHNvcnQgPSBzaGFyZWRzb3J0OwotCWdpbmxlYWRlci0+c25hcHNob3QgPSBzbmFw c2hvdDsKIAlnaW5sZWFkZXItPndhbHVzYWdlID0gd2FsdXNhZ2U7CiAJZ2lubGVhZGVyLT5idWZm ZXJ1c2FnZSA9IGJ1ZmZlcnVzYWdlOwogCkBAIC0xMDc2LDYgKzEwNzEsMTMgQEAgX2dpbl9iZWdp bl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxh dGlvbiBpbmRleCwKIAkvKiBTYXZlIGxlYWRlciBzdGF0ZSBub3cgdGhhdCBpdCdzIGNsZWFyIGJ1 aWxkIHdpbGwgYmUgcGFyYWxsZWwgKi8KIAlidWlsZHN0YXRlLT5ic19sZWFkZXIgPSBnaW5sZWFk ZXI7CiAKKwkvKgorCSAqIEluIGNhc2Ugb2YgY29uY3VycmVudCBidWlsZCBzbmFwc2hvdHMgYXJl IGdvaW5nIHRvIGJlIHJlc2V0IHBlcmlvZGljYWxseS4KKwkgKiBXZSBuZWVkIHRvIHdhaXQgdW50 aWwgYWxsIHdvcmtlcnMgaW1wb3J0ZWQgaW5pdGlhbCBzbmFwc2hvdC4KKwkgKi8KKwlpZiAoaXNj b25jdXJyZW50KQorCQlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCwgdHJ1ZSk7 CisKIAkvKiBKb2luIGhlYXAgc2NhbiBvdXJzZWx2ZXMgKi8KIAlpZiAobGVhZGVycGFydGljaXBh dGVzKQogCQlfZ2luX2xlYWRlcl9wYXJ0aWNpcGF0ZV9hc193b3JrZXIoYnVpbGRzdGF0ZSwgaGVh cCwgaW5kZXgpOwpAQCAtMTA4NCw3ICsxMDg2LDggQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5C dWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkg KiBDYWxsZXIgbmVlZHMgdG8gd2FpdCBmb3IgYWxsIGxhdW5jaGVkIHdvcmtlcnMgd2hlbiB3ZSBy ZXR1cm4uICBNYWtlCiAJICogc3VyZSB0aGF0IHRoZSBmYWlsdXJlLXRvLXN0YXJ0IGNhc2Ugd2ls bCBub3QgaGFuZyBmb3JldmVyLgogCSAqLwotCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFj aChwY3h0KTsKKwlpZiAoIWlzY29uY3VycmVudCkKKwkJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1Rv QXR0YWNoKHBjeHQsIGZhbHNlKTsKIAlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQogCQlQ b3BBY3RpdmVTbmFwc2hvdCgpOwogfQpAQCAtMTEwNyw5ICsxMTEwLDYgQEAgX2dpbl9lbmRfcGFy YWxsZWwoR2luTGVhZGVyICpnaW5sZWFkZXIsIEdpbkJ1aWxkU3RhdGUgKnN0YXRlKQogCWZvciAo aSA9IDA7IGkgPCBnaW5sZWFkZXItPnBjeHQtPm53b3JrZXJzX2xhdW5jaGVkOyBpKyspCiAJCUlu c3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KCZnaW5sZWFkZXItPmJ1ZmZlcnVzYWdlW2ldLCAmZ2lubGVh ZGVyLT53YWx1c2FnZVtpXSk7CiAKLQkvKiBGcmVlIGxhc3QgcmVmZXJlbmNlIHRvIE1WQ0Mgc25h cHNob3QsIGlmIG9uZSB3YXMgdXNlZCAqLwotCWlmIChJc01WQ0NTbmFwc2hvdChnaW5sZWFkZXIt PnNuYXBzaG90KSkKLQkJVW5yZWdpc3RlclNuYXBzaG90KGdpbmxlYWRlci0+c25hcHNob3QpOwog CURlc3Ryb3lQYXJhbGxlbENvbnRleHQoZ2lubGVhZGVyLT5wY3h0KTsKIAlFeGl0UGFyYWxsZWxN b2RlKCk7CiB9CkBAIC0xNzc4LDE0ICsxNzc4LDE0IEBAIF9naW5fcGFyYWxsZWxfbWVyZ2UoR2lu QnVpbGRTdGF0ZSAqc3RhdGUpCiAKIC8qCiAgKiBSZXR1cm5zIHNpemUgb2Ygc2hhcmVkIG1lbW9y eSByZXF1aXJlZCB0byBzdG9yZSBzdGF0ZSBmb3IgYSBwYXJhbGxlbAotICogZ2luIGluZGV4IGJ1 aWxkIGJhc2VkIG9uIHRoZSBzbmFwc2hvdCBpdHMgcGFyYWxsZWwgc2NhbiB3aWxsIHVzZS4KKyAq IGdpbiBpbmRleCBidWlsZC4KICAqLwogc3RhdGljIFNpemUKLV9naW5fcGFyYWxsZWxfZXN0aW1h dGVfc2hhcmVkKFJlbGF0aW9uIGhlYXAsIFNuYXBzaG90IHNuYXBzaG90KQorX2dpbl9wYXJhbGxl bF9lc3RpbWF0ZV9zaGFyZWQoUmVsYXRpb24gaGVhcCkKIHsKIAkvKiBjLmYuIHNobV90b2NfYWxs b2NhdGUgYXMgdG8gd2h5IEJVRkZFUkFMSUdOIGlzIHVzZWQgKi8KIAlyZXR1cm4gYWRkX3NpemUo QlVGRkVSQUxJR04oc2l6ZW9mKEdpbkJ1aWxkU2hhcmVkKSksCi0JCQkJCXRhYmxlX3BhcmFsbGVs c2Nhbl9lc3RpbWF0ZShoZWFwLCBzbmFwc2hvdCkpOworCQkJCQl0YWJsZV9wYXJhbGxlbHNjYW5f ZXN0aW1hdGUoaGVhcCwgSW52YWxpZFNuYXBzaG90KSk7CiB9CiAKIC8qCkBAIC0xODA4LDYgKzE4 MDgsNyBAQCBfZ2luX2xlYWRlcl9wYXJ0aWNpcGF0ZV9hc193b3JrZXIoR2luQnVpbGRTdGF0ZSAq YnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYQogCV9naW5fcGFyYWxsZWxfc2Nhbl9hbmRf YnVpbGQoYnVpbGRzdGF0ZSwgZ2lubGVhZGVyLT5naW5zaGFyZWQsCiAJCQkJCQkJCSBnaW5sZWFk ZXItPnNoYXJlZHNvcnQsIGhlYXAsIGluZGV4LAogCQkJCQkJCQkgc29ydG1lbSwgdHJ1ZSk7CisJ QXNzZXJ0KCFnaW5sZWFkZXItPmdpbnNoYXJlZC0+aXNjb25jdXJyZW50IHx8ICFUcmFuc2FjdGlv bklkSXNWYWxpZChNeVByb2MtPnhpZCkpOwogfQogCiAvKgpAQCAtMjE2Nyw2ICsyMTY4LDEzIEBA IF9naW5fcGFyYWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2Mp CiAKIAlfZ2luX3BhcmFsbGVsX3NjYW5fYW5kX2J1aWxkKCZidWlsZHN0YXRlLCBnaW5zaGFyZWQs IHNoYXJlZHNvcnQsCiAJCQkJCQkJCSBoZWFwUmVsLCBpbmRleFJlbCwgc29ydG1lbSwgZmFsc2Up OworCWlmIChnaW5zaGFyZWQtPmlzY29uY3VycmVudCkKKwl7CisJCVBvcEFjdGl2ZVNuYXBzaG90 KCk7CisJCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwkJQXNzZXJ0KCFUcmFuc2FjdGlv bklkSXNWYWxpZChNeVByb2MtPnhpZCkpOworCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNh Y3Rpb25TbmFwc2hvdCgpKTsKKwl9CiAKIAkvKiBSZXBvcnQgV0FML2J1ZmZlciB1c2FnZSBkdXJp bmcgcGFyYWxsZWwgZXhlY3V0aW9uICovCiAJYnVmZmVydXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0 b2MsIFBBUkFMTEVMX0tFWV9CVUZGRVJfVVNBR0UsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4IDhhNTg0ZGI1OTVhLi43MjczYjFhZWUwMCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCkBAIC0xMjM1LDE0ICsxMjM1 LDEzIEBAIGhlYXBhbV9pbmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlv biwKIAkgKiBTbmFwc2hvdEFueSBiZWNhdXNlIHdlIG11c3QgcmV0cmlldmUgYWxsIHR1cGxlcyBh bmQgZG8gb3VyIG93biB0aW1lCiAJICogcXVhbCBjaGVja3MgKGJlY2F1c2Ugd2UgaGF2ZSB0byBp bmRleCBSRUNFTlRMWV9ERUFEIHR1cGxlcykuIEluIGEKIAkgKiBjb25jdXJyZW50IGJ1aWxkLCBv ciBkdXJpbmcgYm9vdHN0cmFwLCB3ZSB0YWtlIGEgcmVndWxhciBNVkNDIHNuYXBzaG90Ci0JICog YW5kIGluZGV4IHdoYXRldmVyJ3MgbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdC4KKwkgKiBhbmQgaW5k ZXggd2hhdGV2ZXIncyBsaXZlIGFjY29yZGluZyB0byB0aGF0IHdoaWxlIHRoYXQgc25hcHNob3Qg aXMgcmVzZXQKKwkgKiBldmVyeSBzbyBvZnRlbiAoaW4gY2FzZSBvZiBub24tdW5pcXVlIGluZGV4 KS4KIAkgKi8KIAlPbGRlc3RYbWluID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKIAkvKgogCSAq IEZvciB1bmlxdWUgaW5kZXggd2UgbmVlZCBjb25zaXN0ZW50IHNuYXBzaG90IGZvciB0aGUgd2hv bGUgc2Nhbi4KLQkgKiBJbiBjYXNlIG9mIHBhcmFsbGVsIHNjYW4gc29tZSBhZGRpdGlvbmFsIGlu ZnJhc3RydWN0dXJlIHJlcXVpcmVkCi0JICogdG8gcGVyZm9ybSBzY2FuIHdpdGggU09fUkVTRVRf U05BUFNIT1Qgd2hpY2ggaXMgbm90IHlldCByZWFkeS4KIAkgKi8KIAlyZXNldF9zbmFwc2hvdHMg PSBpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgJiYKIAkJCQkJICAhaW5kZXhJbmZvLT5paV9Vbmlx dWUgJiYKQEAgLTEzMDQsOCArMTMwMywxMSBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2Nh bihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCUFzc2VydCghSXNCb290c3RyYXBQcm9jZXNzaW5n TW9kZSgpKTsKIAkJQXNzZXJ0KGFsbG93X3N5bmMpOwogCQlzbmFwc2hvdCA9IHNjYW4tPnJzX3Nu YXBzaG90OwotCQlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOwotCQluZWVkX3BvcF9hY3Rp dmVfc25hcHNob3QgPSB0cnVlOworCQlpZiAoIXJlc2V0X3NuYXBzaG90cykKKwkJeworCQkJUHVz aEFjdGl2ZVNuYXBzaG90KHNuYXBzaG90KTsKKwkJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9 IHRydWU7CisJCX0KIAl9CiAKIAloc2NhbiA9IChIZWFwU2NhbkRlc2MpIHNjYW47CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9uYnRyZWUvbmJ0c29ydC5jCmluZGV4IGYzOTg2ZDA4NmI2Li4yZjQ1YWU5NmMwYyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKQEAgLTMyMSwyMiArMzIxLDIwIEBAIGJ0YnVp bGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQog CQkJIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGluZGV4KSk7CiAKIAlyZWx0dXBsZXMgPSBfYnRf c3Bvb2xzX2hlYXBzY2FuKGhlYXAsIGluZGV4LCAmYnVpbGRzdGF0ZSwgaW5kZXhJbmZvKTsKLQlB c3NlcnQoaW5kZXhJbmZvLT5paV9QYXJhbGxlbFdvcmtlcnMgfHwgaW5kZXhJbmZvLT5paV9Vbmlx dWUgfHwKLQkJICAhaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNW YWxpZChNeVByb2MtPnhtaW4pKTsKKwlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8 fCBpbmRleEluZm8tPmlpX1VuaXF1ZSB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54 bWluKSk7CiAKIAkvKgogCSAqIEZpbmlzaCB0aGUgYnVpbGQgYnkgKDEpIGNvbXBsZXRpbmcgdGhl IHNvcnQgb2YgdGhlIHNwb29sIGZpbGUsICgyKQogCSAqIGluc2VydGluZyB0aGUgc29ydGVkIHR1 cGxlcyBpbnRvIGJ0cmVlIHBhZ2VzIGFuZCAoMykgYnVpbGRpbmcgdGhlIHVwcGVyCiAJICogbGV2 ZWxzLiAgRmluYWxseSwgaXQgbWF5IGFsc28gYmUgbmVjZXNzYXJ5IHRvIGVuZCB1c2Ugb2YgcGFy YWxsZWxpc20uCiAJICovCi0JX2J0X2xlYWZidWlsZChidWlsZHN0YXRlLnNwb29sLCBidWlsZHN0 YXRlLnNwb29sMiwgIWluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzICYmIGluZGV4SW5mby0+ aWlfQ29uY3VycmVudCk7CisJX2J0X2xlYWZidWlsZChidWlsZHN0YXRlLnNwb29sLCBidWlsZHN0 YXRlLnNwb29sMiwgIWluZGV4SW5mby0+aWlfVW5pcXVlICYmIGluZGV4SW5mby0+aWlfQ29uY3Vy cmVudCk7CiAJX2J0X3Nwb29sZGVzdHJveShidWlsZHN0YXRlLnNwb29sKTsKIAlpZiAoYnVpbGRz dGF0ZS5zcG9vbDIpCiAJCV9idF9zcG9vbGRlc3Ryb3koYnVpbGRzdGF0ZS5zcG9vbDIpOwogCWlm IChidWlsZHN0YXRlLmJ0bGVhZGVyKQogCQlfYnRfZW5kX3BhcmFsbGVsKGJ1aWxkc3RhdGUuYnRs ZWFkZXIpOwotCUFzc2VydChpbmRleEluZm8tPmlpX1BhcmFsbGVsV29ya2VycyB8fCBpbmRleElu Zm8tPmlpX1VuaXF1ZSB8fAotCQkgICFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5z YWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCUFzc2VydCghaW5kZXhJbmZvLT5paV9D b25jdXJyZW50IHx8IGluZGV4SW5mby0+aWlfVW5pcXVlIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxp ZChNeVByb2MtPnhtaW4pKTsKIAogCXJlc3VsdCA9IChJbmRleEJ1aWxkUmVzdWx0ICopIHBhbGxv YyhzaXplb2YoSW5kZXhCdWlsZFJlc3VsdCkpOwogCkBAIC00ODUsOCArNDgzLDcgQEAgX2J0X3Nw b29sc19oZWFwc2NhbihSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgQlRCdWlsZFN0YXRl ICpidWlsZHN0YXRlLAogCQlyZWx0dXBsZXMgPSBfYnRfcGFyYWxsZWxfaGVhcHNjYW4oYnVpbGRz dGF0ZSwKIAkJCQkJCQkJCQkgICZpbmRleEluZm8tPmlpX0Jyb2tlbkhvdENoYWluKTsKIAlJbnZh bGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7Ci0JQXNzZXJ0KGluZGV4SW5mby0+aWlfUGFyYWxsZWxX b3JrZXJzIHx8IGluZGV4SW5mby0+aWlfVW5pcXVlIHx8Ci0JCSAgIWluZGV4SW5mby0+aWlfQ29u Y3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJQXNzZXJ0 KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwgIVRy YW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyoKIAkgKiBTZXQgdGhlIHBy b2dyZXNzIHRhcmdldCBmb3IgdGhlIG5leHQgcGhhc2UuICBSZXNldCB0aGUgYmxvY2sgbnVtYmVy CkBAIC0xNDIwLDYgKzE0MTcsNyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpi dWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJQnVmZmVyVXNhZ2Ug KmJ1ZmZlcnVzYWdlOwogCWJvb2wJCWxlYWRlcnBhcnRpY2lwYXRlcyA9IHRydWU7CiAJYm9vbAkJ bmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKKwlib29sCQlyZXNldF9zbmFwc2hvdDsK IAlpbnQJCQlxdWVyeWxlbjsKIAogI2lmZGVmIERJU0FCTEVfTEVBREVSX1BBUlRJQ0lQQVRJT04K QEAgLTE0MzcsMTIgKzE0MzUsMjEgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAq YnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCiAJc2NhbnR1cGxl c29ydHN0YXRlcyA9IGxlYWRlcnBhcnRpY2lwYXRlcyA/IHJlcXVlc3QgKyAxIDogcmVxdWVzdDsK IAorICAgIC8qCisJICogRm9yIGNvbmN1cnJlbnQgbm9uLXVuaXF1ZSBpbmRleCBidWlsZHMsIHdl IGNhbiBwZXJpb2RpY2FsbHkgcmVzZXQgc25hcHNob3RzCisJICogdG8gYWxsb3cgdGhlIHhtaW4g aG9yaXpvbiB0byBhZHZhbmNlLiBUaGlzIGlzIHNhZmUgc2luY2UgdGhlc2UgYnVpbGRzIGRvbid0 CisJICogcmVxdWlyZSBhIGNvbnNpc3RlbnQgdmlldyBhY3Jvc3MgdGhlIGVudGlyZSBzY2FuLiBV bmlxdWUgaW5kZXhlcyBzdGlsbCBuZWVkCisJICogYSBzdGFibGUgc25hcHNob3QgdG8gcHJvcGVy bHkgZW5mb3JjZSB1bmlxdWVuZXNzIGNvbnN0cmFpbnRzLgorICAgICAqLworCXJlc2V0X3NuYXBz aG90ID0gaXNjb25jdXJyZW50ICYmICFidHNwb29sLT5pc3VuaXF1ZTsKKwogCS8qCiAJICogUHJl cGFyZSBmb3Igc2NhbiBvZiB0aGUgYmFzZSByZWxhdGlvbi4gIEluIGEgbm9ybWFsIGluZGV4IGJ1 aWxkLCB3ZSB1c2UKIAkgKiBTbmFwc2hvdEFueSBiZWNhdXNlIHdlIG11c3QgcmV0cmlldmUgYWxs IHR1cGxlcyBhbmQgZG8gb3VyIG93biB0aW1lCiAJICogcXVhbCBjaGVja3MgKGJlY2F1c2Ugd2Ug aGF2ZSB0byBpbmRleCBSRUNFTlRMWV9ERUFEIHR1cGxlcykuICBJbiBhCiAJICogY29uY3VycmVu dCBidWlsZCwgd2UgdGFrZSBhIHJlZ3VsYXIgTVZDQyBzbmFwc2hvdCBhbmQgaW5kZXggd2hhdGV2 ZXIncwotCSAqIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQuCisJICogbGl2ZSBhY2NvcmRpbmcgdG8g dGhhdCwgd2hpbGUgdGhhdCBzbmFwc2hvdCBtYXkgYmUgcmVzZXQgcGVyaW9kaWNhbGx5IGluCisJ ICogY2FzZSBvZiBub24tdW5pcXVlIGluZGV4LgogCSAqLwogCWlmICghaXNjb25jdXJyZW50KQog CXsKQEAgLTE0NTAsNiArMTQ1NywxMSBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRl ICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJCXNuYXBzaG90 ID0gU25hcHNob3RBbnk7CiAJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IGZhbHNlOwogCX0K KwllbHNlIGlmIChyZXNldF9zbmFwc2hvdCkKKwl7CisJCXNuYXBzaG90ID0gSW52YWxpZFNuYXBz aG90OworCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwl9 CiAJZWxzZQogCXsKIAkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0aW9u U25hcHNob3QoKSk7CkBAIC0xNTEwLDcgKzE1MjIsNyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRC dWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJ ewogCQlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQogCQkJUG9wQWN0aXZlU25hcHNob3Qo KTsKLQkJaWYgKElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkKKwkJaWYgKHNuYXBzaG90ICE9IElu dmFsaWRTbmFwc2hvdCAmJiBJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCiAJCQlVbnJlZ2lzdGVy U25hcHNob3Qoc25hcHNob3QpOwogCQlEZXN0cm95UGFyYWxsZWxDb250ZXh0KHBjeHQpOwogCQlF eGl0UGFyYWxsZWxNb2RlKCk7CkBAIC0xNTM3LDcgKzE1NDksOCBAQCBfYnRfYmVnaW5fcGFyYWxs ZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVl c3QpCiAJYnRzaGFyZWQtPmJyb2tlbmhvdGNoYWluID0gZmFsc2U7CiAJdGFibGVfcGFyYWxsZWxz Y2FuX2luaXRpYWxpemUoYnRzcG9vbC0+aGVhcCwKIAkJCQkJCQkJICBQYXJhbGxlbFRhYmxlU2Nh bkZyb21CVFNoYXJlZChidHNoYXJlZCksCi0JCQkJCQkJCSAgc25hcHNob3QpOworCQkJCQkJCQkg IHNuYXBzaG90LAorCQkJCQkJCQkgIHJlc2V0X3NuYXBzaG90KTsKIAogCS8qCiAJICogU3RvcmUg c2hhcmVkIHR1cGxlc29ydC1wcml2YXRlIHN0YXRlLCBmb3Igd2hpY2ggd2UgcmVzZXJ2ZWQgc3Bh Y2UuCkBAIC0xNjEzLDYgKzE2MjYsMTMgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0 ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCS8qIFNhdmUg bGVhZGVyIHN0YXRlIG5vdyB0aGF0IGl0J3MgY2xlYXIgYnVpbGQgd2lsbCBiZSBwYXJhbGxlbCAq LwogCWJ1aWxkc3RhdGUtPmJ0bGVhZGVyID0gYnRsZWFkZXI7CiAKKwkvKgorCSAqIEluIGNhc2Ug b2YgY29uY3VycmVudCBidWlsZCBzbmFwc2hvdHMgYXJlIGdvaW5nIHRvIGJlIHJlc2V0IHBlcmlv ZGljYWxseS4KKwkgKiBXYWl0IHVudGlsIGFsbCB3b3JrZXJzIGltcG9ydGVkIGluaXRpYWwgc25h cHNob3QuCisJICovCisJaWYgKHJlc2V0X3NuYXBzaG90KQorCQlXYWl0Rm9yUGFyYWxsZWxXb3Jr ZXJzVG9BdHRhY2gocGN4dCwgdHJ1ZSk7CisKIAkvKiBKb2luIGhlYXAgc2NhbiBvdXJzZWx2ZXMg Ki8KIAlpZiAobGVhZGVycGFydGljaXBhdGVzKQogCQlfYnRfbGVhZGVyX3BhcnRpY2lwYXRlX2Fz X3dvcmtlcihidWlsZHN0YXRlKTsKQEAgLTE2MjEsNyArMTY0MSw4IEBAIF9idF9iZWdpbl9wYXJh bGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVx dWVzdCkKIAkgKiBDYWxsZXIgbmVlZHMgdG8gd2FpdCBmb3IgYWxsIGxhdW5jaGVkIHdvcmtlcnMg d2hlbiB3ZSByZXR1cm4uICBNYWtlCiAJICogc3VyZSB0aGF0IHRoZSBmYWlsdXJlLXRvLXN0YXJ0 IGNhc2Ugd2lsbCBub3QgaGFuZyBmb3JldmVyLgogCSAqLwotCVdhaXRGb3JQYXJhbGxlbFdvcmtl cnNUb0F0dGFjaChwY3h0KTsKKwlpZiAoIXJlc2V0X3NuYXBzaG90KQorCQlXYWl0Rm9yUGFyYWxs ZWxXb3JrZXJzVG9BdHRhY2gocGN4dCwgZmFsc2UpOwogCWlmIChuZWVkX3BvcF9hY3RpdmVfc25h cHNob3QpCiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiB9CkBAIC0xNjQ1LDcgKzE2NjYsNyBAQCBf YnRfZW5kX3BhcmFsbGVsKEJUTGVhZGVyICpidGxlYWRlcikKIAkJSW5zdHJBY2N1bVBhcmFsbGVs UXVlcnkoJmJ0bGVhZGVyLT5idWZmZXJ1c2FnZVtpXSwgJmJ0bGVhZGVyLT53YWx1c2FnZVtpXSk7 CiAKIAkvKiBGcmVlIGxhc3QgcmVmZXJlbmNlIHRvIE1WQ0Mgc25hcHNob3QsIGlmIG9uZSB3YXMg dXNlZCAqLwotCWlmIChJc01WQ0NTbmFwc2hvdChidGxlYWRlci0+c25hcHNob3QpKQorCWlmIChi dGxlYWRlci0+c25hcHNob3QgIT0gSW52YWxpZFNuYXBzaG90ICYmIElzTVZDQ1NuYXBzaG90KGJ0 bGVhZGVyLT5zbmFwc2hvdCkpCiAJCVVucmVnaXN0ZXJTbmFwc2hvdChidGxlYWRlci0+c25hcHNo b3QpOwogCURlc3Ryb3lQYXJhbGxlbENvbnRleHQoYnRsZWFkZXItPnBjeHQpOwogCUV4aXRQYXJh bGxlbE1vZGUoKTsKQEAgLTE4OTUsNiArMTkxNiw3IEBAIF9idF9wYXJhbGxlbF9zY2FuX2FuZF9z b3J0KEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLAogCVNvcnRDb29yZGluYXRl IGNvb3JkaW5hdGU7CiAJQlRCdWlsZFN0YXRlIGJ1aWxkc3RhdGU7CiAJVGFibGVTY2FuRGVzYyBz Y2FuOworCVBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbjsKIAlkb3VibGUJCXJlbHR1cGxlczsK IAlJbmRleEluZm8gICppbmRleEluZm87CiAKQEAgLTE5NDksMTEgKzE5NzEsMTUgQEAgX2J0X3Bh cmFsbGVsX3NjYW5fYW5kX3NvcnQoQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIs CiAJLyogSm9pbiBwYXJhbGxlbCBzY2FuICovCiAJaW5kZXhJbmZvID0gQnVpbGRJbmRleEluZm8o YnRzcG9vbC0+aW5kZXgpOwogCWluZGV4SW5mby0+aWlfQ29uY3VycmVudCA9IGJ0c2hhcmVkLT5p c2NvbmN1cnJlbnQ7Ci0Jc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChidHNwb29sLT5o ZWFwLAotCQkJCQkJCQkJUGFyYWxsZWxUYWJsZVNjYW5Gcm9tQlRTaGFyZWQoYnRzaGFyZWQpKTsK Kwlwc2NhbiA9IFBhcmFsbGVsVGFibGVTY2FuRnJvbUJUU2hhcmVkKGJ0c2hhcmVkKTsKKwlzY2Fu ID0gdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKGJ0c3Bvb2wtPmhlYXAsIHBzY2FuKTsKIAlyZWx0 dXBsZXMgPSB0YWJsZV9pbmRleF9idWlsZF9zY2FuKGJ0c3Bvb2wtPmhlYXAsIGJ0c3Bvb2wtPmlu ZGV4LCBpbmRleEluZm8sCiAJCQkJCQkJCQkgICB0cnVlLCBwcm9ncmVzcywgX2J0X2J1aWxkX2Nh bGxiYWNrLAogCQkJCQkJCQkJICAgJmJ1aWxkc3RhdGUsIHNjYW4pOworCUludmFsaWRhdGVDYXRh bG9nU25hcHNob3QoKTsKKwlpZiAocHNjYW4tPnBoc19yZXNldF9zbmFwc2hvdCkKKwkJUG9wQWN0 aXZlU25hcHNob3QoKTsKKwlBc3NlcnQoIXBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QgfHwgIVRy YW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyogRXhlY3V0ZSB0aGlzIHdv cmtlcidzIHBhcnQgb2YgdGhlIHNvcnQgKi8KIAlpZiAocHJvZ3Jlc3MpCkBAIC0xOTg5LDQgKzIw MTUsNyBAQCBfYnRfcGFyYWxsZWxfc2Nhbl9hbmRfc29ydChCVFNwb29sICpidHNwb29sLCBCVFNw b29sICpidHNwb29sMiwKIAl0dXBsZXNvcnRfZW5kKGJ0c3Bvb2wtPnNvcnRzdGF0ZSk7CiAJaWYg KGJ0c3Bvb2wyKQogCQl0dXBsZXNvcnRfZW5kKGJ0c3Bvb2wyLT5zb3J0c3RhdGUpOworCUFzc2Vy dCghcHNjYW4tPnBoc19yZXNldF9zbmFwc2hvdCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQ cm9jLT54bWluKSk7CisJaWYgKHBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QpCisJCVB1c2hBY3Rp dmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwogfQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJs ZS90YWJsZWFtLmMKaW5kZXggYTU2YzVlY2ViMTQuLjI3N2M3OWRkNTU0IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy90YWJsZS90YWJsZWFtLmMKQEAgLTEzMiwxMCArMTMyLDEwIEBAIHRhYmxlX3BhcmFsbGVsc2Nh bl9lc3RpbWF0ZShSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90KQogewogCVNpemUJCXN6 ID0gMDsKIAotCWlmIChJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCisJaWYgKHNuYXBzaG90ICE9 IEludmFsaWRTbmFwc2hvdCAmJiBJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCiAJCXN6ID0gYWRk X3NpemUoc3osIEVzdGltYXRlU25hcHNob3RTcGFjZShzbmFwc2hvdCkpOwogCWVsc2UKLQkJQXNz ZXJ0KHNuYXBzaG90ID09IFNuYXBzaG90QW55KTsKKwkJQXNzZXJ0KHNuYXBzaG90ID09IFNuYXBz aG90QW55IHx8IHNuYXBzaG90ID09IEludmFsaWRTbmFwc2hvdCk7CiAKIAlzeiA9IGFkZF9zaXpl KHN6LCByZWwtPnJkX3RhYmxlYW0tPnBhcmFsbGVsc2Nhbl9lc3RpbWF0ZShyZWwpKTsKIApAQCAt MTQ0LDIxICsxNDQsMzYgQEAgdGFibGVfcGFyYWxsZWxzY2FuX2VzdGltYXRlKFJlbGF0aW9uIHJl bCwgU25hcHNob3Qgc25hcHNob3QpCiAKIHZvaWQKIHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFs aXplKFJlbGF0aW9uIHJlbCwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuLAotCQkJCQkJCSAg U25hcHNob3Qgc25hcHNob3QpCisJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwgYm9vbCByZXNl dF9zbmFwc2hvdCkKIHsKIAlTaXplCQlzbmFwc2hvdF9vZmYgPSByZWwtPnJkX3RhYmxlYW0tPnBh cmFsbGVsc2Nhbl9pbml0aWFsaXplKHJlbCwgcHNjYW4pOwogCiAJcHNjYW4tPnBoc19zbmFwc2hv dF9vZmYgPSBzbmFwc2hvdF9vZmY7CiAKLQlpZiAoSXNNVkNDU25hcHNob3Qoc25hcHNob3QpKQor CS8qCisJICogSW5pdGlhbGl6ZSBwYXJhbGxlbCBzY2FuIGRlc2NyaXB0aW9uLiBGb3Igbm9ybWFs IHNjYW5zIHdpdGggYSByZWd1bGFyCisJICogTVZDQyBzbmFwc2hvdCwgc2VyaWFsaXplIHRoZSBz bmFwc2hvdCBpbmZvLiBGb3Igc2NhbnMgdGhhdCB1c2UgcGVyaW9kaWMKKwkgKiBzbmFwc2hvdCBy ZXNldHMsIG1hcmsgdGhlIHNjYW4gYWNjb3JkaW5nbHkuCisJICovCisJaWYgKHJlc2V0X3NuYXBz aG90KQorCXsKKwkJQXNzZXJ0KHNuYXBzaG90ID09IEludmFsaWRTbmFwc2hvdCk7CisJCXBzY2Fu LT5waHNfc25hcHNob3RfYW55ID0gZmFsc2U7CisJCXBzY2FuLT5waHNfcmVzZXRfc25hcHNob3Qg PSB0cnVlOworCQlJTkpFQ1RJT05fUE9JTlQoInRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXpl Iik7CisJfQorCWVsc2UgaWYgKElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkKIAl7CiAJCVNlcmlh bGl6ZVNuYXBzaG90KHNuYXBzaG90LCAoY2hhciAqKSBwc2NhbiArIHBzY2FuLT5waHNfc25hcHNo b3Rfb2ZmKTsKIAkJcHNjYW4tPnBoc19zbmFwc2hvdF9hbnkgPSBmYWxzZTsKKwkJcHNjYW4tPnBo c19yZXNldF9zbmFwc2hvdCA9IGZhbHNlOwogCX0KIAllbHNlCiAJewogCQlBc3NlcnQoc25hcHNo b3QgPT0gU25hcHNob3RBbnkpOworCQlBc3NlcnQoIXJlc2V0X3NuYXBzaG90KTsKIAkJcHNjYW4t PnBoc19zbmFwc2hvdF9hbnkgPSB0cnVlOworCQlwc2Nhbi0+cGhzX3Jlc2V0X3NuYXBzaG90ID0g ZmFsc2U7CiAJfQogfQogCkBAIC0xNzEsNyArMTg2LDE5IEBAIHRhYmxlX2JlZ2luc2Nhbl9wYXJh bGxlbChSZWxhdGlvbiByZWxhdGlvbiwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuKQogCiAJ QXNzZXJ0KFJlbEZpbGVMb2NhdG9yRXF1YWxzKHJlbGF0aW9uLT5yZF9sb2NhdG9yLCBwc2Nhbi0+ cGhzX2xvY2F0b3IpKTsKIAotCWlmICghcHNjYW4tPnBoc19zbmFwc2hvdF9hbnkpCisJLyoKKwkg KiBGb3Igc2NhbnMgdGhhdAorCSAqIHVzZSBwZXJpb2RpYyBzbmFwc2hvdCByZXNldHMsIG1hcmsg dGhlIHNjYW4gYWNjb3JkaW5nbHkgYW5kIHVzZSB0aGUgYWN0aXZlCisJICogc25hcHNob3QgYXMg dGhlIGluaXRpYWwgc3RhdGUuCisJICovCisJaWYgKHBzY2FuLT5waHNfcmVzZXRfc25hcHNob3Qp CisJeworCQlBc3NlcnQoQWN0aXZlU25hcHNob3RTZXQoKSk7CisJCWZsYWdzIHw9IFNPX1JFU0VU X1NOQVBTSE9UOworCQkvKiBTdGFydCB3aXRoIGN1cnJlbnQgYWN0aXZlIHNuYXBzaG90LiAqLwor CQlzbmFwc2hvdCA9IEdldEFjdGl2ZVNuYXBzaG90KCk7CisJfQorCWVsc2UgaWYgKCFwc2Nhbi0+ cGhzX3NuYXBzaG90X2FueSkKIAl7CiAJCS8qIFNuYXBzaG90IHdhcyBzZXJpYWxpemVkIC0tIHJl c3RvcmUgaXQgKi8KIAkJc25hcHNob3QgPSBSZXN0b3JlU25hcHNob3QoKGNoYXIgKikgcHNjYW4g KyBwc2Nhbi0+cGhzX3NuYXBzaG90X29mZik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS9wYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxs ZWwuYwppbmRleCA5NGRiMWVjMzAxMi4uMDY1ZWE5ZDI2ZjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0vcGFyYWxsZWwuYwpAQCAtNzcsNiArNzcsNyBAQAogI2RlZmluZSBQQVJBTExFTF9LRVlf UkVMTUFQUEVSX1NUQVRFCQlVSU5UNjRDT05TVCgweEZGRkZGRkZGRkZGRjAwMEQpCiAjZGVmaW5l IFBBUkFMTEVMX0tFWV9VTkNPTU1JVFRFREVOVU1TCQlVSU5UNjRDT05TVCgweEZGRkZGRkZGRkZG RjAwMEUpCiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9DTElFTlRDT05OSU5GTwkJCVVJTlQ2NENPTlNU KDB4RkZGRkZGRkZGRkZGMDAwRikKKyNkZWZpbmUgUEFSQUxMRUxfS0VZX1NOQVBTSE9UX1JFU1RP UkVECQlVSU5UNjRDT05TVCgweEZGRkZGRkZGRkZGRjAwMTApCiAKIC8qIEZpeGVkLXNpemUgcGFy YWxsZWwgc3RhdGUuICovCiB0eXBlZGVmIHN0cnVjdCBGaXhlZFBhcmFsbGVsU3RhdGUKQEAgLTMw NSw2ICszMDYsMTAgQEAgSW5pdGlhbGl6ZVBhcmFsbGVsRFNNKFBhcmFsbGVsQ29udGV4dCAqcGN4 dCkKIAkJCQkJCQkJCQlwY3h0LT5ud29ya2VycykpOwogCQlzaG1fdG9jX2VzdGltYXRlX2tleXMo JnBjeHQtPmVzdGltYXRvciwgMSk7CiAKKwkJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ ZXN0aW1hdG9yLCBtdWxfc2l6ZShzaXplb2YoYm9vbCksCisJCQkJCQkJICAgcGN4dC0+bndvcmtl cnMpKTsKKwkJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEpOworCiAJ CS8qIEVzdGltYXRlIGhvdyBtdWNoIHdlJ2xsIG5lZWQgZm9yIHRoZSBlbnRyeXBvaW50IGluZm8u ICovCiAJCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwgc3RybGVuKHBj eHQtPmxpYnJhcnlfbmFtZSkgKwogCQkJCQkJCSAgIHN0cmxlbihwY3h0LT5mdW5jdGlvbl9uYW1l KSArIDIpOwpAQCAtMzc2LDYgKzM4MSw3IEBAIEluaXRpYWxpemVQYXJhbGxlbERTTShQYXJhbGxl bENvbnRleHQgKnBjeHQpCiAJCWNoYXIJICAgKmVudHJ5cG9pbnRzdGF0ZTsKIAkJY2hhcgkgICAq dW5jb21taXR0ZWRlbnVtc3NwYWNlOwogCQljaGFyCSAgICpjbGllbnRjb25uaW5mb3NwYWNlOwor CQlib29sCSAgICpzbmFwc2hvdF9zZXRfZmxhZ19zcGFjZTsKIAkJU2l6ZQkJbG5hbWVsZW47CiAK IAkJLyogU2VyaWFsaXplIHNoYXJlZCBsaWJyYXJpZXMgd2UgaGF2ZSBsb2FkZWQuICovCkBAIC00 OTEsNiArNDk3LDE5IEBAIEluaXRpYWxpemVQYXJhbGxlbERTTShQYXJhbGxlbENvbnRleHQgKnBj eHQpCiAJCXN0cmNweShlbnRyeXBvaW50c3RhdGUsIHBjeHQtPmxpYnJhcnlfbmFtZSk7CiAJCXN0 cmNweShlbnRyeXBvaW50c3RhdGUgKyBsbmFtZWxlbiArIDEsIHBjeHQtPmZ1bmN0aW9uX25hbWUp OwogCQlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9FTlRSWVBPSU5ULCBl bnRyeXBvaW50c3RhdGUpOworCisJCS8qCisJCSAqIEVzdGFibGlzaCBkeW5hbWljIHNoYXJlZCBt ZW1vcnkgdG8gcGFzcyBpbmZvcm1hdGlvbiBhYm91dCBpbXBvcnRpbmcKKwkJICogb2Ygc25hcHNo b3QuCisJCSAqLworCQlzbmFwc2hvdF9zZXRfZmxhZ19zcGFjZSA9CisJCQkJc2htX3RvY19hbGxv Y2F0ZShwY3h0LT50b2MsIG11bF9zaXplKHNpemVvZihib29sKSwgcGN4dC0+bndvcmtlcnMpKTsK KwkJZm9yIChpID0gMDsgaSA8IHBjeHQtPm53b3JrZXJzOyArK2kpCisJCXsKKwkJCXBjeHQtPndv cmtlcltpXS5zbmFwc2hvdF9yZXN0b3JlZCA9IHNuYXBzaG90X3NldF9mbGFnX3NwYWNlICsgaSAq IHNpemVvZihib29sKTsKKwkJCSpwY3h0LT53b3JrZXJbaV0uc25hcHNob3RfcmVzdG9yZWQgPSBm YWxzZTsKKwkJfQorCQlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9TTkFQ U0hPVF9SRVNUT1JFRCwgc25hcHNob3Rfc2V0X2ZsYWdfc3BhY2UpOwogCX0KIAogCS8qIFVwZGF0 ZSBud29ya2Vyc190b19sYXVuY2gsIGluIGNhc2Ugd2UgY2hhbmdlZCBud29ya2VycyBhYm92ZS4g Ki8KQEAgLTU0Niw2ICs1NjUsMTcgQEAgUmVpbml0aWFsaXplUGFyYWxsZWxEU00oUGFyYWxsZWxD b250ZXh0ICpwY3h0KQogCQkJcGN4dC0+d29ya2VyW2ldLmVycm9yX21xaCA9IHNobV9tcV9hdHRh Y2gobXEsIHBjeHQtPnNlZywgTlVMTCk7CiAJCX0KIAl9CisKKwkvKiBTZXQgc25hcHNob3QgcmVz dG9yZWQgZmxhZyB0byBmYWxzZS4gKi8KKwlpZiAocGN4dC0+bndvcmtlcnMgPiAwKQorCXsKKwkJ Ym9vbAkgICAqc25hcHNob3RfcmVzdG9yZWRfc3BhY2U7CisJCWludAkJCWk7CisJCXNuYXBzaG90 X3Jlc3RvcmVkX3NwYWNlID0KKwkJCQlzaG1fdG9jX2xvb2t1cChwY3h0LT50b2MsIFBBUkFMTEVM X0tFWV9TTkFQU0hPVF9SRVNUT1JFRCwgZmFsc2UpOworCQlmb3IgKGkgPSAwOyBpIDwgcGN4dC0+ bndvcmtlcnM7ICsraSkKKwkJCXNuYXBzaG90X3Jlc3RvcmVkX3NwYWNlW2ldID0gZmFsc2U7CisJ fQogfQogCiAvKgpAQCAtNjYxLDYgKzY5MSwxMCBAQCBMYXVuY2hQYXJhbGxlbFdvcmtlcnMoUGFy YWxsZWxDb250ZXh0ICpwY3h0KQogICogV2FpdCBmb3IgYWxsIHdvcmtlcnMgdG8gYXR0YWNoIHRv IHRoZWlyIGVycm9yIHF1ZXVlcywgYW5kIHRocm93IGFuIGVycm9yIGlmCiAgKiBhbnkgd29ya2Vy IGZhaWxzIHRvIGRvIHRoaXMuCiAgKgorICogd2FpdF9mb3Jfc25hcHNob3Q6IHRyYWNrIHdoZXRo ZXIgZWFjaCBwYXJhbGxlbCB3b3JrZXIgaGFzIHN1Y2Nlc3NmdWxseSByZXN0b3JlZAorICogaXRz IHNuYXBzaG90LiBUaGlzIGlzIG5lZWRlZCB3aGVuIHVzaW5nIHBlcmlvZGljIHNuYXBzaG90IHJl c2V0cyB0byBlbnN1cmUgYWxsCisgKiB3b3JrZXJzIGhhdmUgYSB2YWxpZCBpbml0aWFsIHNuYXBz aG90IGJlZm9yZSBwcm9jZWVkaW5nIHdpdGggdGhlIHNjYW4uCisgKgogICogQ2FsbGVycyBjYW4g YXNzdW1lIHRoYXQgaWYgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHN1Y2Nlc3NmdWxseSwgdGhlbiB0 aGUKICAqIG51bWJlciBvZiB3b3JrZXJzIGdpdmVuIGJ5IHBjeHQtPm53b3JrZXJzX2xhdW5jaGVk IGhhdmUgaW5pdGlhbGl6ZWQgYW5kCiAgKiBhdHRhY2hlZCB0byB0aGVpciBlcnJvciBxdWV1ZXMu ICBXaGV0aGVyIG9yIG5vdCB0aGVzZSB3b3JrZXJzIGFyZSBndWFyYW50ZWVkCkBAIC02OTAsNyAr NzI0LDcgQEAgTGF1bmNoUGFyYWxsZWxXb3JrZXJzKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKICAq IGNhbGwgdGhpcyBmdW5jdGlvbiBhdCBhbGwuCiAgKi8KIHZvaWQKLVdhaXRGb3JQYXJhbGxlbFdv cmtlcnNUb0F0dGFjaChQYXJhbGxlbENvbnRleHQgKnBjeHQpCitXYWl0Rm9yUGFyYWxsZWxXb3Jr ZXJzVG9BdHRhY2goUGFyYWxsZWxDb250ZXh0ICpwY3h0LCBib29sIHdhaXRfZm9yX3NuYXBzaG90 KQogewogCWludAkJCWk7CiAKQEAgLTczNCw5ICs3NjgsMTIgQEAgV2FpdEZvclBhcmFsbGVsV29y a2Vyc1RvQXR0YWNoKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKIAkJCQltcSA9IHNobV9tcV9nZXRf cXVldWUocGN4dC0+d29ya2VyW2ldLmVycm9yX21xaCk7CiAJCQkJaWYgKHNobV9tcV9nZXRfc2Vu ZGVyKG1xKSAhPSBOVUxMKQogCQkJCXsKLQkJCQkJLyogWWVzLCBzbyBpdCBpcyBrbm93biB0byBi ZSBhdHRhY2hlZC4gKi8KLQkJCQkJcGN4dC0+a25vd25fYXR0YWNoZWRfd29ya2Vyc1tpXSA9IHRy dWU7Ci0JCQkJCSsrcGN4dC0+bmtub3duX2F0dGFjaGVkX3dvcmtlcnM7CisJCQkJCWlmICghd2Fp dF9mb3Jfc25hcHNob3QgfHwgKihwY3h0LT53b3JrZXJbaV0uc25hcHNob3RfcmVzdG9yZWQpKQor CQkJCQl7CisJCQkJCQkvKiBZZXMsIHNvIGl0IGlzIGtub3duIHRvIGJlIGF0dGFjaGVkLiAqLwor CQkJCQkJcGN4dC0+a25vd25fYXR0YWNoZWRfd29ya2Vyc1tpXSA9IHRydWU7CisJCQkJCQkrK3Bj eHQtPm5rbm93bl9hdHRhY2hlZF93b3JrZXJzOworCQkJCQl9CiAJCQkJfQogCQkJfQogCQkJZWxz ZSBpZiAoc3RhdHVzID09IEJHV0hfU1RPUFBFRCkKQEAgLTEyOTUsNiArMTMzMiw3IEBAIFBhcmFs bGVsV29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAlzaG1fdG9jICAgICp0b2M7CiAJRml4ZWRQ YXJhbGxlbFN0YXRlICpmcHM7CiAJY2hhcgkgICAqZXJyb3JfcXVldWVfc3BhY2U7CisJYm9vbAkg ICAqc25hcHNob3RfcmVzdG9yZWRfc3BhY2U7CiAJc2htX21xCSAgICptcTsKIAlzaG1fbXFfaGFu ZGxlICptcWg7CiAJY2hhcgkgICAqbGlicmFyeXNwYWNlOwpAQCAtMTQ5OSw2ICsxNTM3LDEwIEBA IFBhcmFsbGVsV29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAkJCQkJCQkgICBmcHMtPnBhcmFs bGVsX2xlYWRlcl9wZ3Byb2MpOwogCVB1c2hBY3RpdmVTbmFwc2hvdChhc25hcHNob3QpOwogCisJ LyogU25hcHNob3QgaXMgcmVzdG9yZWQsIHNldCBmbGFnIHRvIG1ha2UgbGVhZGVyIGtub3cgYWJv dXQgaXQuICovCisJc25hcHNob3RfcmVzdG9yZWRfc3BhY2UgPSBzaG1fdG9jX2xvb2t1cCh0b2Ms IFBBUkFMTEVMX0tFWV9TTkFQU0hPVF9SRVNUT1JFRCwgZmFsc2UpOworCXNuYXBzaG90X3Jlc3Rv cmVkX3NwYWNlW1BhcmFsbGVsV29ya2VyTnVtYmVyXSA9IHRydWU7CisKIAkvKgogCSAqIFdlJ3Zl IGNoYW5nZWQgd2hpY2ggdHVwbGVzIHdlIGNhbiBzZWUsIGFuZCBtdXN0IHRoZXJlZm9yZSBpbnZh bGlkYXRlCiAJICogc3lzdGVtIGNhY2hlcy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvaW5kZXguYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCBjYmQwYmE5YWEw MS4uNjQzMmVmNTVjZGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwor KysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTE1MzIsNyArMTUzMiw3IEBAIGlu ZGV4X2NvbmN1cnJlbnRseV9idWlsZChPaWQgaGVhcFJlbGF0aW9uSWQsCiAKIAkvKiBJbnZhbGlk YXRlIGNhdGFsb2cgc25hcHNob3QganVzdCBmb3IgYXNzZXJ0ICovCiAJSW52YWxpZGF0ZUNhdGFs b2dTbmFwc2hvdCgpOwotCUFzc2VydCgoaW5kZXhJbmZvLT5paV9QYXJhbGxlbFdvcmtlcnMgfHwg aW5kZXhJbmZvLT5paV9VbmlxdWUpIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnht aW4pKTsKKwlBc3NlcnQoaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9uSWRJc1Zh bGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyogUm9sbCBiYWNrIGFueSBHVUMgY2hhbmdlcyBleGVj dXRlZCBieSBpbmRleCBmdW5jdGlvbnMgKi8KIAlBdEVPWGFjdF9HVUMoZmFsc2UsIHNhdmVfbmVz dGxldmVsKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCmluZGV4IDZmOWU5OTFlZWFlLi5i YzYzOTk2NGFkYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4u YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCkBAIC0zNjcsNyArMzY3 LDggQEAgRXhlY1NlcVNjYW5Jbml0aWFsaXplRFNNKFNlcVNjYW5TdGF0ZSAqbm9kZSwKIAlwc2Nh biA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLCBub2RlLT5wc2Nhbl9sZW4pOwogCXRhYmxl X3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKIAkJ CQkJCQkJICBwc2NhbiwKLQkJCQkJCQkJICBlc3RhdGUtPmVzX3NuYXBzaG90KTsKKwkJCQkJCQkJ ICBlc3RhdGUtPmVzX3NuYXBzaG90LAorCQkJCQkJCQkgIGZhbHNlKTsKIAlzaG1fdG9jX2luc2Vy dChwY3h0LT50b2MsIG5vZGUtPnNzLnBzLnBsYW4tPnBsYW5fbm9kZV9pZCwgcHNjYW4pOwogCW5v ZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9CiAJCXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChu b2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sIHBzY2FuKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL3RpbWUvc25hcG1nci5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdy LmMKaW5kZXggZGNmZTE2YTk4MjQuLjU4MGFjNTQ4NTZmIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy90aW1lL3NuYXBtZ3IuYworKysgYi9zcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBt Z3IuYwpAQCAtMzQyLDE0ICszNDIsNiBAQCBHZXRUcmFuc2FjdGlvblNuYXBzaG90KHZvaWQpCiBT bmFwc2hvdAogR2V0TGF0ZXN0U25hcHNob3Qodm9pZCkKIHsKLQkvKgotCSAqIFdlIG1pZ2h0IGJl IGFibGUgdG8gcmVsYXggdGhpcywgYnV0IG5vdGhpbmcgdGhhdCBjb3VsZCBvdGhlcndpc2Ugd29y awotCSAqIG5lZWRzIGl0LgotCSAqLwotCWlmIChJc0luUGFyYWxsZWxNb2RlKCkpCi0JCWVsb2co RVJST1IsCi0JCQkgImNhbm5vdCB1cGRhdGUgU2Vjb25kYXJ5U25hcHNob3QgZHVyaW5nIGEgcGFy YWxsZWwgb3BlcmF0aW9uIik7Ci0KIAkvKgogCSAqIFNvIGZhciB0aGVyZSBhcmUgbm8gY2FzZXMg cmVxdWlyaW5nIHN1cHBvcnQgZm9yIEdldExhdGVzdFNuYXBzaG90KCkKIAkgKiBkdXJpbmcgbG9n aWNhbCBkZWNvZGluZywgYnV0IGl0IHdvdWxkbid0IGJlIGhhcmQgdG8gYWRkIGlmIHJlcXVpcmVk LgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3BhcmFsbGVsLmggYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvcGFyYWxsZWwuaAppbmRleCBmMzdiZTZkNTY5MC4uYTczNjJmN2I0M2IgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5oCisrKyBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9wYXJhbGxlbC5oCkBAIC0yNiw2ICsyNiw3IEBAIHR5cGVkZWYgc3RydWN0IFBhcmFsbGVs V29ya2VySW5mbwogewogCUJhY2tncm91bmRXb3JrZXJIYW5kbGUgKmJnd2hhbmRsZTsKIAlzaG1f bXFfaGFuZGxlICplcnJvcl9tcWg7CisJYm9vbAkJICAqc25hcHNob3RfcmVzdG9yZWQ7CiB9IFBh cmFsbGVsV29ya2VySW5mbzsKIAogdHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxDb250ZXh0CkBAIC02 NSw3ICs2Niw3IEBAIGV4dGVybiB2b2lkIEluaXRpYWxpemVQYXJhbGxlbERTTShQYXJhbGxlbENv bnRleHQgKnBjeHQpOwogZXh0ZXJuIHZvaWQgUmVpbml0aWFsaXplUGFyYWxsZWxEU00oUGFyYWxs ZWxDb250ZXh0ICpwY3h0KTsKIGV4dGVybiB2b2lkIFJlaW5pdGlhbGl6ZVBhcmFsbGVsV29ya2Vy cyhQYXJhbGxlbENvbnRleHQgKnBjeHQsIGludCBud29ya2Vyc190b19sYXVuY2gpOwogZXh0ZXJu IHZvaWQgTGF1bmNoUGFyYWxsZWxXb3JrZXJzKFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7Ci1leHRl cm4gdm9pZCBXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2goUGFyYWxsZWxDb250ZXh0ICpw Y3h0KTsKK2V4dGVybiB2b2lkIFdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChQYXJhbGxl bENvbnRleHQgKnBjeHQsIGJvb2wgd2FpdF9mb3Jfc25hcHNob3QpOwogZXh0ZXJuIHZvaWQgV2Fp dEZvclBhcmFsbGVsV29ya2Vyc1RvRmluaXNoKFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7CiBleHRl cm4gdm9pZCBEZXN0cm95UGFyYWxsZWxDb250ZXh0KFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7CiBl eHRlcm4gYm9vbCBQYXJhbGxlbENvbnRleHRBY3RpdmUodm9pZCk7CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaApp bmRleCBiNWUwZmIzODZjMC4uNTA0NDFjNThjZWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9yZWxzY2FuLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaApAQCAtODIs NiArODIsNyBAQCB0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbFRhYmxlU2NhbkRlc2NEYXRhCiAJUmVs RmlsZUxvY2F0b3IgcGhzX2xvY2F0b3I7IC8qIHBoeXNpY2FsIHJlbGF0aW9uIHRvIHNjYW4gKi8K IAlib29sCQlwaHNfc3luY3NjYW47CS8qIHJlcG9ydCBsb2NhdGlvbiB0byBzeW5jc2NhbiBsb2dp Yz8gKi8KIAlib29sCQlwaHNfc25hcHNob3RfYW55OwkvKiBTbmFwc2hvdEFueSwgbm90IHBoc19z bmFwc2hvdF9kYXRhPyAqLworCWJvb2wJCXBoc19yZXNldF9zbmFwc2hvdDsgLyogdXNlIFNPX1JF U0VUX1NOQVBTSE9UPyAqLwogCVNpemUJCXBoc19zbmFwc2hvdF9vZmY7CS8qIGRhdGEgZm9yIHNu YXBzaG90ICovCiB9IFBhcmFsbGVsVGFibGVTY2FuRGVzY0RhdGE7CiB0eXBlZGVmIHN0cnVjdCBQ YXJhbGxlbFRhYmxlU2NhbkRlc2NEYXRhICpQYXJhbGxlbFRhYmxlU2NhbkRlc2M7CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3Rh YmxlYW0uaAppbmRleCA3ZThmYTVlMWI1Ny4uMzg3YzMwOGVjMmYgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0u aApAQCAtMTEzNSw3ICsxMTM1LDggQEAgZXh0ZXJuIFNpemUgdGFibGVfcGFyYWxsZWxzY2FuX2Vz dGltYXRlKFJlbGF0aW9uIHJlbCwgU25hcHNob3Qgc25hcHNob3QpOwogICovCiBleHRlcm4gdm9p ZCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZShSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkJ ICBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4sCi0JCQkJCQkJCQkJICBTbmFwc2hvdCBzbmFw c2hvdCk7CisJCQkJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwKKwkJCQkJCQkJCQkgIGJvb2wg cmVzZXRfc25hcHNob3QpOwogCiAvKgogICogQmVnaW4gYSBwYXJhbGxlbCBzY2FuLiBgcHNjYW5g IG5lZWRzIHRvIGhhdmUgYmVlbiBpbml0aWFsaXplZCB3aXRoCkBAIC0xNzUzLDkgKzE3NTQsOSBA QCB0YWJsZV9zY2FuX2FuYWx5emVfbmV4dF90dXBsZShUYWJsZVNjYW5EZXNjIHNjYW4sIFRyYW5z YWN0aW9uSWQgT2xkZXN0WG1pbiwKICAqIFRoaXMgb25seSByZWFsbHkgbWFrZXMgc2Vuc2UgZm9y IGhlYXAgQU0sIGl0IG1pZ2h0IG5lZWQgdG8gYmUgZ2VuZXJhbGl6ZWQKICAqIGZvciBvdGhlciBB TXMgbGF0ZXIuCiAgKgotICogSW4gY2FzZSBvZiBub24tdW5pcXVlIGluZGV4IGFuZCBub24tcGFy YWxsZWwgY29uY3VycmVudCBidWlsZAotICogU09fUkVTRVRfU05BUFNIT1QgaXMgYXBwbGllZCBm b3IgdGhlIHNjYW4uIFRoYXQgbGVhZHMgZm9yIGNoYW5naW5nIHNuYXBzaG90cwotICogb24gdGhl IGZseSB0byBhbGxvdyB4bWluIGhvcml6b24gcHJvcGFnYXRlLgorICogSW4gY2FzZSBvZiBub24t dW5pcXVlIGNvbmN1cnJlbnQgIGluZGV4IGJ1aWxkIFNPX1JFU0VUX1NOQVBTSE9UIGlzIGFwcGxp ZWQKKyAqIGZvciB0aGUgc2Nhbi4gVGhhdCBsZWFkcyBmb3IgY2hhbmdpbmcgc25hcHNob3RzIG9u IHRoZSBmbHkgdG8gYWxsb3cgeG1pbgorICogaG9yaXpvbiBwcm9wYWdhdGUuCiAgKi8KIHN0YXRp YyBpbmxpbmUgZG91YmxlCiB0YWJsZV9pbmRleF9idWlsZF9zY2FuKFJlbGF0aW9uIHRhYmxlX3Jl bCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3Rl ZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3Bv aW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dAppbmRleCA5NDhkMTIzMmFhMC4u NTk1YTQwMDBjZTAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50 cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dAorKysgYi9zcmMvdGVzdC9tb2R1bGVz L2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKQEAgLTE3 LDYgKzE3LDEyIEBAIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgndGFibGVfYmVnaW5z Y2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cycsICdub3RpY2UnCiAgCiAoMSByb3cpCiAKK1NFTEVD VCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgndGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUn LCAnbm90aWNlJyk7CisgaW5qZWN0aW9uX3BvaW50c19hdHRhY2ggCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgCisoMSByb3cpCisKIENSRUFURSBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXA7CiBD UkVBVEUgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsKGkgaW50IHByaW1hcnkga2V5LCBqIGludCk7 CiBJTlNFUlQgSU5UTyBjaWNfcmVzZXRfc25hcC50YmwgU0VMRUNUIGksIGkgKiBJIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDIwMCkgcyhpKTsKQEAgLTcyLDMwICs3OCw0NSBAQCBOT1RJQ0U6ICBu b3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBz aG90X2VmZmVjdGl2ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4 OwogLS0gVGhlIHNhbWUgaW4gcGFyYWxsZWwgbW9kZQogQUxURVIgVEFCTEUgY2ljX3Jlc2V0X3Nu YXAudGJsIFNFVCAocGFyYWxsZWxfd29ya2Vycz0yKTsKKy0tIERldGFjaCB0byBrZWVwIHRlc3Qg c3RhYmxlLCBzaW5jZSBwYXJhbGxlbCB3b3JrZXIgbWF5IGNvbXBsZXRlIHNjYW4gYmVmb3JlIGxl YWRlcgorU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdoZWFwX3Jlc2V0X3NjYW5fc25h cHNob3RfZWZmZWN0aXZlJyk7CisgaW5qZWN0aW9uX3BvaW50c19kZXRhY2ggCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKIENSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VS UkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CiBSRUlOREVYIElOREVYIENPTkNV UlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNf cmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVz ZXRfc25hcC50YmwoaSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24g cG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIFJFSU5ERVggSU5ERVggQ09OQ1VS UkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9y IGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogRFJPUCBJTkRF WCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJF TlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKE1PRChpLCAyKSwgaikgV0hFUkUgTU9EKGks IDIpID0gMDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0 YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0 aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBEUk9QIElOREVYIENPTkNV UlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlk eCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGlj YXRlX3N0YWJsZShpKTsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBw b2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCi1OT1RJQ0U6ICBub3Rp Y2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90 X2VmZmVjdGl2ZQogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4 OwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2Jl Z2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKLU5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQg Zm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCiBE Uk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVgg Q09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jl c2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpOworTk9USUNFOiAgbm90aWNlIHRy aWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXpl CiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6 ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2Fu X2luaXRpYWxpemUKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK IENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpIERF U0MgTlVMTFMgTEFTVCk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24g cG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIFJFSU5ERVggSU5ERVggQ09OQ1VS UkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9y IGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogRFJPUCBJTkRF WCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJF TlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsIFVTSU5HIEJSSU4oaSk7CitOT1RJQ0U6ICBu b3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2lu aXRpYWxpemUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK K05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJh bGxlbHNjYW5faW5pdGlhbGl6ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3Nu YXAuaWR4OwogRFJPUCBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXAgQ0FTQ0FERTsKIE5PVElDRTogIGRy b3AgY2FzY2FkZXMgdG8gMyBvdGhlciBvYmplY3RzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1 bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsIGIvc3JjL3Rl c3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbApp bmRleCA1MDcyNTM1YjM1NS4uMjk0MWFhN2FlMzggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVs ZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwKKysrIGIvc3Jj L3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNx bApAQCAtMyw3ICszLDcgQEAgQ1JFQVRFIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOwogU0VM RUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50 c19hdHRhY2goJ2hlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUnLCAnbm90aWNlJyk7 CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX2JlZ2luc2Nhbl9zdHJhdF9y ZXNldF9zbmFwc2hvdHMnLCAnbm90aWNlJyk7Ci0KK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0 dGFjaCgndGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUnLCAnbm90aWNlJyk7CiAKIENSRUFU RSBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXA7CiBDUkVBVEUgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJs KGkgaW50IHByaW1hcnkga2V5LCBqIGludCk7CkBAIC01Myw2ICs1Myw5IEBAIERST1AgSU5ERVgg Q09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIC0tIFRoZSBzYW1lIGluIHBhcmFsbGVs IG1vZGUKIEFMVEVSIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQgKHBhcmFsbGVsX3dvcmtl cnM9Mik7CiAKKy0tIERldGFjaCB0byBrZWVwIHRlc3Qgc3RhYmxlLCBzaW5jZSBwYXJhbGxlbCB3 b3JrZXIgbWF5IGNvbXBsZXRlIHNjYW4gYmVmb3JlIGxlYWRlcgorU0VMRUNUIGluamVjdGlvbl9w b2ludHNfZGV0YWNoKCdoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlJyk7CisKIENS RUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50Ymwo aSk7CiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBEUk9Q IElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CkBAIC04Myw0ICs4Niw0IEBA IERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIAogRFJPUCBTQ0hF TUEgY2ljX3Jlc2V0X3NuYXAgQ0FTQ0FERTsKIAotRFJPUCBFWFRFTlNJT04gaW5qZWN0aW9uX3Bv aW50czsKK0RST1AgRVhURU5TSU9OIGluamVjdGlvbl9wb2ludHM7ClwgTm8gbmV3bGluZSBhdCBl bmQgb2YgZmlsZQotLSAKMi40My4wCgo= --000000000000176c55063224bb18 Content-Type: application/octet-stream; name="v17-0006-Add-STIR-Short-Term-Index-Replacement-access-met.patch" Content-Disposition: attachment; filename="v17-0006-Add-STIR-Short-Term-Index-Replacement-access-met.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m967p8995 RnJvbSA4Y2E5NTcwNDM4MzZmOTI0YzMyNzgzZGI5YmIwYWI3ZjYxMGU2MmRjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAyMSBEZWMgMjAyNCAxODozNjoxMCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjE3IDA2 LzEyXSBBZGQgU1RJUiAoU2hvcnQtVGVybSBJbmRleCBSZXBsYWNlbWVudCkgYWNjZXNzCiBtZXRo b2QKClRoaXMgcGF0Y2ggcHJvdmlkZXMgZm91bmRhdGlvbmFsIGluZnJhc3RydWN0dXJlIGZvciB1 cGNvbWluZyBlbmhhbmNlbWVudHMgdG8KY29uY3VycmVudCBpbmRleCBidWlsZHMgYnkgaW50cm9k dWNpbmc6CgotICoqaWlfQXV4aWxpYXJ5KiogaW4gYEluZGV4SW5mb2A6IEluZGljYXRlcyB0aGF0 IGFuIGluZGV4IGlzIGFuIGF1eGlsaWFyeQogIGluZGV4LCBzcGVjaWZpY2FsbHkgZm9yIHVzZSBk dXJpbmcgY29uY3VycmVudCBpbmRleCBidWlsZHMuCi0gKip2YWxpZGF0ZV9pbmRleCoqIGluIGBJ bmRleFZhY3V1bUluZm9gOiBTaWduYWxzIHdoZW4gYSB2YWN1dW0gb3IgY2xlYW51cAogIG9wZXJh dGlvbiBpcyB2YWxpZGF0aW5nIGEgbmV3bHkgYnVpbHQgaW5kZXggKGUuZy4sIGR1cmluZyBjb25j dXJyZW50IGJ1aWxkKS4KCkFkZGl0aW9uYWxseSwgYSBuZXcgKipTVElSIChTaG9ydC1UZXJtIElu ZGV4IFJlcGxhY2VtZW50KSoqIGFjY2VzcyBtZXRob2QgaXMKaW50cm9kdWNlZCwgaW50ZW5kZWQg c29sZWx5IGZvciBzaG9ydC1saXZlZCwgYXV4aWxpYXJ5IHVzYWdlLiBTVElSIGZ1bmN0aW9ucwph cyBhbiBlcGhlbWVyYWwgaGVscGVyIGR1cmluZyBjb25jdXJyZW50IGluZGV4IGJ1aWxkcywgdGVt cG9yYXJpbHkgc3RvcmluZyBUSURzCndpdGhvdXQgcHJvdmlkaW5nIHRoZSBmdWxsIGZlYXR1cmVz IG9mIGEgdHlwaWNhbCBpbmRleC4gQXMgc3VjaCwgaXQgcmFpc2VzCndhcm5pbmdzIG9yIGVycm9y cyB3aGVuIGFjY2Vzc2VkIG91dHNpZGUgaXRzIHNwZWNpYWxpemVkIHVzYWdlIHBhdGguCgpUaGVz ZSBjaGFuZ2VzIGxheSBlc3NlbnRpYWwgZ3JvdW5kd29yayBmb3IgZnVydGhlciBpbXByb3ZlbWVu dHMgdG8gY29uY3VycmVudAppbmRleCBidWlsZHMuCi0tLQogY29udHJpYi9wZ3N0YXR0dXBsZS9w Z3N0YXR0dXBsZS5jICAgICAgICB8ICAgMyArCiBzcmMvYmFja2VuZC9hY2Nlc3MvTWFrZWZpbGUg ICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9tZXNvbi5idWlsZCAgICAgICAgICAg fCAgIDEgKwogc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIvTWFrZWZpbGUgICAgICAgICB8ICAxOCAr CiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9tZXNvbi5idWlsZCAgICAgIHwgICA1ICsKIHNyYy9i YWNrZW5kL2FjY2Vzcy9zdGlyL3N0aXIuYyAgICAgICAgICAgfCA1NzMgKysrKysrKysrKysrKysr KysrKysrKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAgICAgfCAgIDEg Kwogc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jICAgICAgICAgICB8ICAgMSArCiBzcmMv YmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jICAgIHwgICAxICsKIHNyYy9iYWNrZW5k L25vZGVzL21ha2VmdW5jcy5jICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvYWNjZXNz L2dlbmFtLmggICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9hY2Nlc3MvcmVsb3B0 aW9ucy5oICAgICAgICAgIHwgICAzICstCiBzcmMvaW5jbHVkZS9hY2Nlc3Mvc3Rpci5oICAgICAg ICAgICAgICAgIHwgMTE3ICsrKysrCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtLmRhdCAgICAg ICAgICAgIHwgICAzICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BjbGFzcy5kYXQgICAgICAg fCAgIDQgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGZhbWlseS5kYXQgICAgICB8ICAgMiAr CiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgIHwgICA0ICsKIHNyYy9p bmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy9pbmNsdWRl L3V0aWxzL2luZGV4X3NlbGZ1bmNzLmggICAgICAgfCAgIDggKwogc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9hbXV0aWxzLm91dCAgICB8ICAgOCArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9vcHJfc2FuaXR5Lm91dCB8ICAgNyArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3Fs Lm91dCAgICAgICB8ICAyNCArLQogMjMgZmlsZXMgY2hhbmdlZCwgNzc3IGluc2VydGlvbnMoKyks IDE4IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2FjY2Vzcy9z dGlyL01ha2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIv bWVzb24uYnVpbGQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9z dGlyLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9hY2Nlc3Mvc3Rpci5oCgpkaWZm IC0tZ2l0IGEvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jIGIvY29udHJpYi9wZ3N0 YXR0dXBsZS9wZ3N0YXR0dXBsZS5jCmluZGV4IGE2ZGFkNTRmZjU4Li5jYTUyMTQ0NjFlNiAxMDA2 NDQKLS0tIGEvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jCisrKyBiL2NvbnRyaWIv cGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYwpAQCAtMjg1LDYgKzI4NSw5IEBAIHBnc3RhdF9yZWxh dGlvbihSZWxhdGlvbiByZWwsIEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvKQogCQkJY2FzZSBTUEdJ U1RfQU1fT0lEOgogCQkJCWVyciA9ICJzcGdpc3QgaW5kZXgiOwogCQkJCWJyZWFrOworCQkJY2Fz ZSBTVElSX0FNX09JRDoKKwkJCQllcnIgPSAic3RpciBpbmRleCI7CisJCQkJYnJlYWs7CiAJCQlj YXNlIEJSSU5fQU1fT0lEOgogCQkJCWVyciA9ICJicmluIGluZGV4IjsKIAkJCQlicmVhazsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9NYWtlZmlsZQppbmRleCAxOTMyZDExZDE1NC4uY2Q2NTI0YTU0YWIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvTWFrZWZp bGUKQEAgLTksNiArOSw2IEBAIHRvcF9idWlsZGRpciA9IC4uLy4uLy4uCiBpbmNsdWRlICQodG9w X2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCiAKIFNVQkRJUlMJICAgID0gYnJpbiBjb21t b24gZ2luIGdpc3QgaGFzaCBoZWFwIGluZGV4IG5idHJlZSBybWdyZGVzYyBzcGdpc3QgXAotCQkJ ICBzZXF1ZW5jZSB0YWJsZSB0YWJsZXNhbXBsZSB0cmFuc2FtCisJCQkgIHN0aXIgc2VxdWVuY2Ug dGFibGUgdGFibGVzYW1wbGUgdHJhbnNhbQogCiBpbmNsdWRlICQodG9wX3NyY2Rpcikvc3JjL2Jh Y2tlbmQvY29tbW9uLm1rCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1 dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggZjI4 MzI2YmFkMDkuLjIzMmM4N2VjMjY3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5j CkBAIC0zMDkyLDYgKzMwOTIsNyBAQCBsYXp5X3ZhY3V1bV9vbmVfaW5kZXgoUmVsYXRpb24gaW5k cmVsLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKmlzdGF0LAogCWl2aW5mby5tZXNzYWdlX2xldmVs ID0gREVCVUcyOwogCWl2aW5mby5udW1faGVhcF90dXBsZXMgPSByZWx0dXBsZXM7CiAJaXZpbmZv LnN0cmF0ZWd5ID0gdmFjcmVsLT5ic3RyYXRlZ3k7CisJaXZpbmZvLnZhbGlkYXRlX2luZGV4ID0g ZmFsc2U7CiAKIAkvKgogCSAqIFVwZGF0ZSBlcnJvciB0cmFjZWJhY2sgaW5mb3JtYXRpb24uCkBA IC0zMTQzLDYgKzMxNDQsNyBAQCBsYXp5X2NsZWFudXBfb25lX2luZGV4KFJlbGF0aW9uIGluZHJl bCwgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICppc3RhdCwKIAogCWl2aW5mby5udW1faGVhcF90dXBs ZXMgPSByZWx0dXBsZXM7CiAJaXZpbmZvLnN0cmF0ZWd5ID0gdmFjcmVsLT5ic3RyYXRlZ3k7CisJ aXZpbmZvLnZhbGlkYXRlX2luZGV4ID0gZmFsc2U7CiAKIAkvKgogCSAqIFVwZGF0ZSBlcnJvciB0 cmFjZWJhY2sgaW5mb3JtYXRpb24uCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbWVz b24uYnVpbGQgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbWVzb24uYnVpbGQKaW5kZXggN2EyZDBkZGI2 ODkuLmExNTZjZGRmZjM1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbWVzb24uYnVp bGQKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL21lc29uLmJ1aWxkCkBAIC0xMSw2ICsxMSw3IEBA IHN1YmRpcignbmJ0cmVlJykKIHN1YmRpcigncm1ncmRlc2MnKQogc3ViZGlyKCdzZXF1ZW5jZScp CiBzdWJkaXIoJ3NwZ2lzdCcpCitzdWJkaXIoJ3N0aXInKQogc3ViZGlyKCd0YWJsZScpCiBzdWJk aXIoJ3RhYmxlc2FtcGxlJykKIHN1YmRpcigndHJhbnNhbScpCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3Mvc3Rpci9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL01ha2Vm aWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mYWU1ODk4YjhkNwot LS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL01ha2VmaWxlCkBAIC0w LDAgKzEsMTggQEAKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjCisjIE1ha2VmaWxlLS0KKyMgICAgTWFr ZWZpbGUgZm9yIGFjY2Vzcy9zdGlyCisjCisjIElERU5USUZJQ0FUSU9OCisjICAgIHNyYy9iYWNr ZW5kL2FjY2Vzcy9zdGlyL01ha2VmaWxlCisjCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdWJkaXIg PSBzcmMvYmFja2VuZC9hY2Nlc3Mvc3RpcgordG9wX2J1aWxkZGlyID0gLi4vLi4vLi4vLi4KK2lu Y2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKKworT0JKUyA9IFwKKwlz dGlyLm8KKworaW5jbHVkZSAkKHRvcF9zcmNkaXIpL3NyYy9iYWNrZW5kL2NvbW1vbi5tawpcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9z dGlyL21lc29uLmJ1aWxkIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIvbWVzb24uYnVpbGQKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjM5YzZlY2E4NDhkCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIvbWVzb24uYnVpbGQKQEAgLTAsMCAr MSw1IEBACisjIENvcHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1l bnQgR3JvdXAKKworYmFja2VuZF9zb3VyY2VzICs9IGZpbGVzKAorCSdzdGlyLmMnLAorKQpcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9z dGlyL3N0aXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL3N0aXIuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMDFmM2I2NjBmNGIKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9zdGlyLmMKQEAgLTAsMCArMSw1NzMgQEAKKy8qLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICoKKyAqIHN0aXIuYworICoJICBJbXBsZW1lbnRhdGlvbiBvZiBTaG9y dC1UZXJtIEluZGV4IFJlcGxhY2VtZW50LgorICoKKyAqIFNUSVIgaXMgYSBzcGVjaWFsaXplZCBh Y2Nlc3MgbWV0aG9kIHR5cGUgZGVzaWduZWQgZm9yIHRlbXBvcmFyeSBzdG9yYWdlCisgKiBvZiBU SUQgdmFsdWVzIGR1cmluZyBjb25jdXJlcm50IGluZGV4IGJ1aWxkIG9wZXJhdGlvbnMuCisgKgor ICogVGhlIHR5cGljYWwgbGlmZWN5Y2xlIG9mIGEgU1RJUiBpbmRleCBpczoKKyAqIDEuIGNyZWF0 ZWQgYXMgYW4gYXV4aWxpYXJ5IGluZGV4IGZvciBDSUMvUklDCisgKiAyLiBhY2NlcHRzIGluc2Vy dHMgZm9yIGEgcGVyaW9kCisgKiAzLiBzdGlyYnVsa2RlbGV0ZSBjYWxsZWQgZHVyaW5nIGluZGV4 IHZhbGlkYXRpb24gcGhhc2UKKyAqIDUuIGdldHMgZHJvcHBlZAorICoKKyAqIFBvcnRpb25zIENv cHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAq CisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9zdGlyLmMK KyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNp bmNsdWRlICJhY2Nlc3Mvc3Rpci5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUg ImFjY2Vzcy9hbXZhbGlkYXRlLmgiCisjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgor I2luY2x1ZGUgImFjY2Vzcy90YWJsZWFtLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9pbmRleC5oIgor I2luY2x1ZGUgImNhdGFsb2cvcGdfYW1vcC5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BjbGFz cy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BmYW1pbHkuaCIKKyNpbmNsdWRlICJjb21tYW5k cy92YWN1dW0uaCIKKyNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgorI2luY2x1ZGUgInV0aWxz L2NhdGNhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvZm1ncnByb3Rvcy5oIgorI2luY2x1ZGUgInV0 aWxzL2luZGV4X3NlbGZ1bmNzLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNs dWRlICJ1dGlscy9yZWdwcm9jLmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKKworLyoK KyAqIFN0aXIgaGFuZGxlciBmdW5jdGlvbjogcmV0dXJuIEluZGV4QW1Sb3V0aW5lIHdpdGggYWNj ZXNzIG1ldGhvZCBwYXJhbWV0ZXJzCisgKiBhbmQgY2FsbGJhY2tzLgorICovCitEYXR1bQorc3Rp cmhhbmRsZXIoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlJbmRleEFtUm91dGluZSAqYW1yb3V0aW5l ID0gbWFrZU5vZGUoSW5kZXhBbVJvdXRpbmUpOworCisJLyogU2V0IFNUSVItc3BlY2lmaWMgc3Ry YXRlZ3kgYW5kIHByb2NlZHVyZSBudW1iZXJzICovCisJYW1yb3V0aW5lLT5hbXN0cmF0ZWdpZXMg PSBTVElSX05TVFJBVEVHSUVTOworCWFtcm91dGluZS0+YW1zdXBwb3J0ID0gU1RJUl9OUFJPQzsK KwlhbXJvdXRpbmUtPmFtb3B0c3Byb2NudW0gPSBTVElSX09QVElPTlNfUFJPQzsKKworCS8qIFNU SVIgZG9lc24ndCBzdXBwb3J0IG1vc3QgaW5kZXggb3BlcmF0aW9ucyAqLworCWFtcm91dGluZS0+ YW1jYW5vcmRlciA9IGZhbHNlOworCWFtcm91dGluZS0+YW1jYW5vcmRlcmJ5b3AgPSBmYWxzZTsK KwlhbXJvdXRpbmUtPmFtY2FuYmFja3dhcmQgPSBmYWxzZTsKKwlhbXJvdXRpbmUtPmFtY2FudW5p cXVlID0gZmFsc2U7CisJYW1yb3V0aW5lLT5hbWNhbm11bHRpY29sID0gdHJ1ZTsKKwlhbXJvdXRp bmUtPmFtb3B0aW9uYWxrZXkgPSB0cnVlOworCWFtcm91dGluZS0+YW1zZWFyY2hhcnJheSA9IGZh bHNlOworCWFtcm91dGluZS0+YW1zZWFyY2hudWxscyA9IGZhbHNlOworCWFtcm91dGluZS0+YW1z dG9yYWdlID0gZmFsc2U7CisJYW1yb3V0aW5lLT5hbWNsdXN0ZXJhYmxlID0gZmFsc2U7CisJYW1y b3V0aW5lLT5hbXByZWRsb2NrcyA9IGZhbHNlOworCWFtcm91dGluZS0+YW1jYW5wYXJhbGxlbCA9 IGZhbHNlOworCWFtcm91dGluZS0+YW1jYW5idWlsZHBhcmFsbGVsID0gZmFsc2U7CisJYW1yb3V0 aW5lLT5hbWNhbmluY2x1ZGUgPSB0cnVlOworCWFtcm91dGluZS0+YW11c2VtYWludGVuYW5jZXdv cmttZW0gPSBmYWxzZTsKKwlhbXJvdXRpbmUtPmFtcGFyYWxsZWx2YWN1dW1vcHRpb25zID0KKwkJ CVZBQ1VVTV9PUFRJT05fUEFSQUxMRUxfQlVMS0RFTCB8IFZBQ1VVTV9PUFRJT05fUEFSQUxMRUxf Q0xFQU5VUDsKKwlhbXJvdXRpbmUtPmFta2V5dHlwZSA9IEludmFsaWRPaWQ7CisKKwkvKiBTZXQg dXAgZnVuY3Rpb24gY2FsbGJhY2tzICovCisJYW1yb3V0aW5lLT5hbWJ1aWxkID0gc3RpcmJ1aWxk OworCWFtcm91dGluZS0+YW1idWlsZGVtcHR5ID0gc3RpcmJ1aWxkZW1wdHk7CisJYW1yb3V0aW5l LT5hbWluc2VydCA9IHN0aXJpbnNlcnQ7CisJYW1yb3V0aW5lLT5hbWluc2VydGNsZWFudXAgPSBO VUxMOworCWFtcm91dGluZS0+YW1idWxrZGVsZXRlID0gc3RpcmJ1bGtkZWxldGU7CisJYW1yb3V0 aW5lLT5hbXZhY3V1bWNsZWFudXAgPSBzdGlydmFjdXVtY2xlYW51cDsKKwlhbXJvdXRpbmUtPmFt Y2FucmV0dXJuID0gTlVMTDsKKwlhbXJvdXRpbmUtPmFtY29zdGVzdGltYXRlID0gc3RpcmNvc3Rl c3RpbWF0ZTsKKwlhbXJvdXRpbmUtPmFtb3B0aW9ucyA9IHN0aXJvcHRpb25zOworCWFtcm91dGlu ZS0+YW1wcm9wZXJ0eSA9IE5VTEw7CisJYW1yb3V0aW5lLT5hbWJ1aWxkcGhhc2VuYW1lID0gTlVM TDsKKwlhbXJvdXRpbmUtPmFtdmFsaWRhdGUgPSBzdGlydmFsaWRhdGU7CisJYW1yb3V0aW5lLT5h bWFkanVzdG1lbWJlcnMgPSBOVUxMOworCWFtcm91dGluZS0+YW1iZWdpbnNjYW4gPSBzdGlyYmVn aW5zY2FuOworCWFtcm91dGluZS0+YW1yZXNjYW4gPSBzdGlycmVzY2FuOworCWFtcm91dGluZS0+ YW1nZXR0dXBsZSA9IE5VTEw7CisJYW1yb3V0aW5lLT5hbWdldGJpdG1hcCA9IE5VTEw7CisJYW1y b3V0aW5lLT5hbWVuZHNjYW4gPSBzdGlyZW5kc2NhbjsKKwlhbXJvdXRpbmUtPmFtbWFya3BvcyA9 IE5VTEw7CisJYW1yb3V0aW5lLT5hbXJlc3RycG9zID0gTlVMTDsKKwlhbXJvdXRpbmUtPmFtZXN0 aW1hdGVwYXJhbGxlbHNjYW4gPSBOVUxMOworCWFtcm91dGluZS0+YW1pbml0cGFyYWxsZWxzY2Fu ID0gTlVMTDsKKwlhbXJvdXRpbmUtPmFtcGFyYWxsZWxyZXNjYW4gPSBOVUxMOworCisJUEdfUkVU VVJOX1BPSU5URVIoYW1yb3V0aW5lKTsKK30KKworLyoKKyAqIFZhbGlkYXRlcyBvcGVyYXRvciBj bGFzcyBmb3IgU1RJUiBpbmRleC4KKyAqCisgKiBTVElSIGlzIG5vdCBhbiByZWFsIGluZGV4LCBz byB2YWxpZGF0aW8gbWF5IGJlIHNraXBwZWQuCisgKiBCdXQgd2UgZG8gaXQganVzdCBmb3IgY29u c2lzdGVuY3kuCisgKi8KK2Jvb2wKK3N0aXJ2YWxpZGF0ZShPaWQgb3BjbGFzc29pZCkKK3sKKwli b29sIHJlc3VsdCA9IHRydWU7CisJSGVhcFR1cGxlIGNsYXNzdHVwOworCUZvcm1fcGdfb3BjbGFz cyBjbGFzc2Zvcm07CisJT2lkIG9wZmFtaWx5b2lkOworCUhlYXBUdXBsZSBmYW1pbHl0dXA7CisJ Rm9ybV9wZ19vcGZhbWlseSBmYW1pbHlmb3JtOworCWNoYXIgKm9wZmFtaWx5bmFtZTsKKwlDYXRD TGlzdCAqcHJvY2xpc3QsCisJCQkqb3BybGlzdDsKKwlpbnQgaTsKKworCS8qIEZldGNoIG9wY2xh c3MgaW5mb3JtYXRpb24gKi8KKwljbGFzc3R1cCA9IFNlYXJjaFN5c0NhY2hlMShDTEFPSUQsIE9i amVjdElkR2V0RGF0dW0ob3BjbGFzc29pZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZChjbGFz c3R1cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBvcGVyYXRvciBj bGFzcyAldSIsIG9wY2xhc3NvaWQpOworCWNsYXNzZm9ybSA9IChGb3JtX3BnX29wY2xhc3MpIEdF VFNUUlVDVChjbGFzc3R1cCk7CisKKwlvcGZhbWlseW9pZCA9IGNsYXNzZm9ybS0+b3BjZmFtaWx5 OworCisKKwkvKiBGZXRjaCBvcGZhbWlseSBpbmZvcm1hdGlvbiAqLworCWZhbWlseXR1cCA9IFNl YXJjaFN5c0NhY2hlMShPUEZBTUlMWU9JRCwgT2JqZWN0SWRHZXREYXR1bShvcGZhbWlseW9pZCkp OworCWlmICghSGVhcFR1cGxlSXNWYWxpZChmYW1pbHl0dXApKQorCQllbG9nKEVSUk9SLCAiY2Fj aGUgbG9va3VwIGZhaWxlZCBmb3Igb3BlcmF0b3IgZmFtaWx5ICV1Iiwgb3BmYW1pbHlvaWQpOwor CWZhbWlseWZvcm0gPSAoRm9ybV9wZ19vcGZhbWlseSkgR0VUU1RSVUNUKGZhbWlseXR1cCk7CisK KwlvcGZhbWlseW5hbWUgPSBOYW1lU3RyKGZhbWlseWZvcm0tPm9wZm5hbWUpOworCisJLyogRmV0 Y2ggYWxsIG9wZXJhdG9ycyBhbmQgc3VwcG9ydCBmdW5jdGlvbnMgb2YgdGhlIG9wZmFtaWx5ICov CisJb3BybGlzdCA9IFNlYXJjaFN5c0NhY2hlTGlzdDEoQU1PUFNUUkFURUdZLCBPYmplY3RJZEdl dERhdHVtKG9wZmFtaWx5b2lkKSk7CisJcHJvY2xpc3QgPSBTZWFyY2hTeXNDYWNoZUxpc3QxKEFN UFJPQ05VTSwgT2JqZWN0SWRHZXREYXR1bShvcGZhbWlseW9pZCkpOworCisJLyogQ2hlY2sgaW5k aXZpZHVhbCBvcGVyYXRvcnMgKi8KKwlmb3IgKGkgPSAwOyBpIDwgb3BybGlzdC0+bl9tZW1iZXJz OyBpKyspCisJeworCQlIZWFwVHVwbGUgb3BydHVwID0gJm9wcmxpc3QtPm1lbWJlcnNbaV0tPnR1 cGxlOworCQlGb3JtX3BnX2Ftb3Agb3ByZm9ybSA9IChGb3JtX3BnX2Ftb3ApIEdFVFNUUlVDVChv cHJ0dXApOworCisJCS8qIENoZWNrIGl0J3MgYWxsb3dlZCBzdHJhdGVneSBmb3Igc3RpciAqLwor CQlpZiAob3ByZm9ybS0+YW1vcHN0cmF0ZWd5IDwgMSB8fAorCQkJb3ByZm9ybS0+YW1vcHN0cmF0 ZWd5ID4gU1RJUl9OU1RSQVRFR0lFUykKKwkJeworCQkJZXJlcG9ydChJTkZPLAorCQkJCQkoZXJy Y29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCWVycm1zZygi c3RpciBvcGZhbWlseSAlcyBjb250YWlucyBvcGVyYXRvciAlcyB3aXRoIGludmFsaWQgc3RyYXRl Z3kgbnVtYmVyICVkIiwKKwkJCQkJCQkJICAgb3BmYW1pbHluYW1lLAorCQkJCQkJCQkgICBmb3Jt YXRfb3BlcmF0b3Iob3ByZm9ybS0+YW1vcG9wciksCisJCQkJCQkJCSAgIG9wcmZvcm0tPmFtb3Bz dHJhdGVneSkpKTsKKwkJCXJlc3VsdCA9IGZhbHNlOworCQl9CisKKwkJLyogc3RpciBkb2Vzbid0 IHN1cHBvcnQgT1JERVIgQlkgb3BlcmF0b3JzICovCisJCWlmIChvcHJmb3JtLT5hbW9wcHVycG9z ZSAhPSBBTU9QX1NFQVJDSCB8fAorCQkJT2lkSXNWYWxpZChvcHJmb3JtLT5hbW9wc29ydGZhbWls eSkpCisJCXsKKwkJCWVyZXBvcnQoSU5GTywKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElE X09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCQllcnJtc2coInN0aXIgb3BmYW1pbHkgJXMgY29u dGFpbnMgaW52YWxpZCBPUkRFUiBCWSBzcGVjaWZpY2F0aW9uIGZvciBvcGVyYXRvciAlcyIsCisJ CQkJCQkJCSAgIG9wZmFtaWx5bmFtZSwKKwkJCQkJCQkJICAgZm9ybWF0X29wZXJhdG9yKG9wcmZv cm0tPmFtb3BvcHIpKSkpOworCQkJcmVzdWx0ID0gZmFsc2U7CisJCX0KKworCQkvKiBDaGVjayBv cGVyYXRvciBzaWduYXR1cmUgLS0tIHNhbWUgZm9yIGFsbCBzdGlyIHN0cmF0ZWdpZXMgKi8KKwkJ aWYgKCFjaGVja19hbW9wX3NpZ25hdHVyZShvcHJmb3JtLT5hbW9wb3ByLCBCT09MT0lELAorCQkJ CQkJCQkgIG9wcmZvcm0tPmFtb3BsZWZ0dHlwZSwKKwkJCQkJCQkJICBvcHJmb3JtLT5hbW9wcmln aHR0eXBlKSkKKwkJeworCQkJZXJlcG9ydChJTkZPLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lO VkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCWVycm1zZygic3RpciBvcGZhbWlseSAl cyBjb250YWlucyBvcGVyYXRvciAlcyB3aXRoIHdyb25nIHNpZ25hdHVyZSIsCisJCQkJCQkJCSAg IG9wZmFtaWx5bmFtZSwKKwkJCQkJCQkJICAgZm9ybWF0X29wZXJhdG9yKG9wcmZvcm0tPmFtb3Bv cHIpKSkpOworCQkJcmVzdWx0ID0gZmFsc2U7CisJCX0KKwl9CisKKworCVJlbGVhc2VDYXRDYWNo ZUxpc3QocHJvY2xpc3QpOworCVJlbGVhc2VDYXRDYWNoZUxpc3Qob3BybGlzdCk7CisJUmVsZWFz ZVN5c0NhY2hlKGZhbWlseXR1cCk7CisJUmVsZWFzZVN5c0NhY2hlKGNsYXNzdHVwKTsKKworCXJl dHVybiByZXN1bHQ7Cit9CisKKworLyoKKyAqIEluaXRpYWxpemUgbWV0YXBhZ2Ugb2YgYSBTVElS IGluZGV4LgorICogVGhlIHNraXBJbnNlcnRzIGZsYWcgZGV0ZXJtaW5lcyBpZiBuZXcgaW5zZXJ0 cyB3aWxsIGJlIGFjY2VwdGVkIG9yIHNraXBwZWQuCisgKi8KK3ZvaWQKK1N0aXJGaWxsTWV0YXBh Z2UoUmVsYXRpb24gaW5kZXgsIFBhZ2UgbWV0YVBhZ2UsIGJvb2wgc2tpcEluc2VydHMpCit7CisJ U3Rpck1ldGFQYWdlRGF0YSAqbWV0YWRhdGE7CisKKwlTdGlySW5pdFBhZ2UobWV0YVBhZ2UsIFNU SVJfTUVUQSk7CisJbWV0YWRhdGEgPSBTdGlyUGFnZUdldE1ldGEobWV0YVBhZ2UpOworCW1lbXNl dChtZXRhZGF0YSwgMCwgc2l6ZW9mKFN0aXJNZXRhUGFnZURhdGEpKTsKKwltZXRhZGF0YS0+bWFn aWNrTnVtYmVyID0gU1RJUl9NQUdJQ0tfTlVNQkVSOworCW1ldGFkYXRhLT5za2lwSW5zZXJ0cyA9 IHNraXBJbnNlcnRzOworCSgoUGFnZUhlYWRlcikgbWV0YVBhZ2UpLT5wZF9sb3dlciArPSBzaXpl b2YoU3Rpck1ldGFQYWdlRGF0YSk7Cit9CisKKy8qCisgKiBDcmVhdGUgYW5kIGluaXRpYWxpemUg dGhlIG1ldGFwYWdlIGZvciBhIFNUSVIgaW5kZXguCisgKiBUaGlzIGlzIGNhbGxlZCBkdXJpbmcg aW5kZXggY3JlYXRpb24uCisgKi8KK3ZvaWQKK1N0aXJJbml0TWV0YXBhZ2UoUmVsYXRpb24gaW5k ZXgsIEZvcmtOdW1iZXIgZm9ya251bSkKK3sKKwlCdWZmZXIgbWV0YUJ1ZmZlcjsKKwlQYWdlIG1l dGFQYWdlOworCisJQXNzZXJ0KCFSZWxhdGlvbk5lZWRzV0FMKGluZGV4KSk7CisJLyoKKwkgKiBN YWtlIGEgbmV3IHBhZ2U7IHNpbmNlIGl0IGlzIGZpcnN0IHBhZ2UgaXQgc2hvdWxkIGJlIGFzc29j aWF0ZWQgd2l0aAorCSAqIGJsb2NrIG51bWJlciAwIChTVElSX01FVEFQQUdFX0JMS05PKS4gIE5v IG5lZWQgdG8gaG9sZCB0aGUgZXh0ZW5zaW9uCisJICogbG9jayBiZWNhdXNlIHRoZXJlIGNhbm5v dCBiZSBjb25jdXJyZW50IGluc2VydGVycyB5ZXQuCisJICovCisJbWV0YUJ1ZmZlciA9IFJlYWRC dWZmZXJFeHRlbmRlZChpbmRleCwgZm9ya251bSwgUF9ORVcsIFJCTV9OT1JNQUwsIE5VTEwpOwor CVNUQVJUX0NSSVRfU0VDVElPTigpOworCUxvY2tCdWZmZXIobWV0YUJ1ZmZlciwgQlVGRkVSX0xP Q0tfRVhDTFVTSVZFKTsKKwlBc3NlcnQoQnVmZmVyR2V0QmxvY2tOdW1iZXIobWV0YUJ1ZmZlcikg PT0gU1RJUl9NRVRBUEFHRV9CTEtOTyk7CisKKwltZXRhUGFnZSA9ICBCdWZmZXJHZXRQYWdlKG1l dGFCdWZmZXIpOworCVN0aXJGaWxsTWV0YXBhZ2UoaW5kZXgsIG1ldGFQYWdlLCBmb3JrbnVtID09 IElOSVRfRk9SS05VTSk7CisKKwlNYXJrQnVmZmVyRGlydHkobWV0YUJ1ZmZlcik7CisJRU5EX0NS SVRfU0VDVElPTigpOworCVVubG9ja1JlbGVhc2VCdWZmZXIobWV0YUJ1ZmZlcik7Cit9CisKKy8q CisgKiBJbml0aWFsaXplIGFueSBwYWdlIG9mIGEgc3RpciBpbmRleC4KKyAqLwordm9pZAorU3Rp ckluaXRQYWdlKFBhZ2UgcGFnZSwgdWludDE2IGZsYWdzKQoreworCVN0aXJQYWdlT3BhcXVlIG9w YXF1ZTsKKworCVBhZ2VJbml0KHBhZ2UsIEJMQ0tTWiwgc2l6ZW9mKFN0aXJQYWdlT3BhcXVlRGF0 YSkpOworCisJb3BhcXVlID0gU3RpclBhZ2VHZXRPcGFxdWUocGFnZSk7CisJb3BhcXVlLT5mbGFn cyA9IGZsYWdzOworCW9wYXF1ZS0+c3Rpcl9wYWdlX2lkID0gU1RJUl9QQUdFX0lEOworfQorCisv KgorICogQWRkIGEgdHVwbGUgdG8gYSBTVElSIHBhZ2UuIFJldHVybnMgZmFsc2UgaWYgdHVwbGUg ZG9lc24ndCBmaXQuCisgKiBUaGUgdHVwbGUgaXMgYWRkZWQgdG8gdGhlIGVuZCBvZiB0aGUgcGFn ZS4KKyAqLworc3RhdGljIGJvb2wKK1N0aXJQYWdlQWRkSXRlbShQYWdlIHBhZ2UsIFN0aXJUdXBs ZSAqdHVwbGUpCit7CisJU3RpclR1cGxlICppdHVwOworCVN0aXJQYWdlT3BhcXVlIG9wYXF1ZTsK KwlQb2ludGVyIHB0cjsKKworCS8qIFdlIHNob3VsZG4ndCBiZSBwb2ludGVkIHRvIGFuIGludmFs aWQgcGFnZSAqLworCUFzc2VydCghUGFnZUlzTmV3KHBhZ2UpKTsKKworCS8qIERvZXMgbmV3IHR1 cGxlIGZpdCBvbiB0aGUgcGFnZT8gKi8KKwlpZiAoU3RpclBhZ2VHZXRGcmVlU3BhY2Uoc3RhdGUs IHBhZ2UpIDwgc2l6ZW9mKFN0aXJUdXBsZSkpCisJCXJldHVybiBmYWxzZTsKKworCS8qIENvcHkg bmV3IHR1cGxlIHRvIHRoZSBlbmQgb2YgcGFnZSAqLworCW9wYXF1ZSA9IFN0aXJQYWdlR2V0T3Bh cXVlKHBhZ2UpOworCWl0dXAgPSBTdGlyUGFnZUdldFR1cGxlKHBhZ2UsIG9wYXF1ZS0+bWF4b2Zm ICsgMSk7CisJbWVtY3B5KChQb2ludGVyKSBpdHVwLCAoUG9pbnRlcikgdHVwbGUsIHNpemVvZihT dGlyVHVwbGUpKTsKKworCS8qIEFkanVzdCBtYXhvZmYgYW5kIHBkX2xvd2VyICovCisJb3BhcXVl LT5tYXhvZmYrKzsKKwlwdHIgPSAoUG9pbnRlcikgU3RpclBhZ2VHZXRUdXBsZShwYWdlLCBvcGFx dWUtPm1heG9mZiArIDEpOworCSgoUGFnZUhlYWRlcikgcGFnZSktPnBkX2xvd2VyID0gcHRyIC0g cGFnZTsKKworCS8qIEFzc2VydCB3ZSBkaWRuJ3Qgb3ZlcnJ1biBhdmFpbGFibGUgc3BhY2UgKi8K KwlBc3NlcnQoKChQYWdlSGVhZGVyKSBwYWdlKS0+cGRfbG93ZXIgPD0gKChQYWdlSGVhZGVyKSBw YWdlKS0+cGRfdXBwZXIpOworCXJldHVybiB0cnVlOworfQorCisvKgorICogSW5zZXJ0IGEgbmV3 IHR1cGxlIGludG8gYSBTVElSIGluZGV4LgorICovCitib29sCitzdGlyaW5zZXJ0KFJlbGF0aW9u IGluZGV4LCBEYXR1bSAqdmFsdWVzLCBib29sICppc251bGwsCisJCSAgSXRlbVBvaW50ZXIgaHRf Y3RpZCwgUmVsYXRpb24gaGVhcFJlbCwKKwkJICBJbmRleFVuaXF1ZUNoZWNrIGNoZWNrVW5pcXVl LAorCQkgIGJvb2wgaW5kZXhVbmNoYW5nZWQsCisJCSAgc3RydWN0IEluZGV4SW5mbyAqaW5kZXhJ bmZvKQoreworCVN0aXJUdXBsZSAqaXR1cDsKKwlNZW1vcnlDb250ZXh0IG9sZEN0eDsKKwlNZW1v cnlDb250ZXh0IGluc2VydEN0eDsKKwlTdGlyTWV0YVBhZ2VEYXRhICptZXRhRGF0YTsKKwlCdWZm ZXIgYnVmZmVyLAorCQkJbWV0YUJ1ZmZlcjsKKwlQYWdlIHBhZ2U7CisJdWludDE2IGJsa05vOwor CisJLyogQ3JlYXRlIHRlbXBvcmFyeSBjb250ZXh0IGZvciBpbnNlcnQgb3BlcmF0aW9uICovCisJ aW5zZXJ0Q3R4ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKEN1cnJlbnRNZW1vcnlDb250ZXh0LAor CQkJCQkJCQkJICAiU3RpciBpbnNlcnQgdGVtcG9yYXJ5IGNvbnRleHQiLAorCQkJCQkJCQkJICBB TExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKKworCW9sZEN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hU byhpbnNlcnRDdHgpOworCisJLyogQ3JlYXRlIG5ldyB0dXBsZSB3aXRoIGhlYXAgcG9pbnRlciAq LworCWl0dXAgPSAoU3RpclR1cGxlICopIHBhbGxvYzAoc2l6ZW9mKFN0aXJUdXBsZSkpOworCWl0 dXAtPmhlYXBQdHIgPSAqaHRfY3RpZDsKKworCUFzc2VydCghUmVsYXRpb25OZWVkc1dBTChpbmRl eCkpOworCW1ldGFCdWZmZXIgPSBSZWFkQnVmZmVyKGluZGV4LCBTVElSX01FVEFQQUdFX0JMS05P KTsKKworCWZvciAoOzspCisJeworCQlMb2NrQnVmZmVyKG1ldGFCdWZmZXIsIEJVRkZFUl9MT0NL X1NIQVJFKTsKKwkJbWV0YURhdGEgPSBTdGlyUGFnZUdldE1ldGEoQnVmZmVyR2V0UGFnZShtZXRh QnVmZmVyKSk7CisJCS8qIENoZWNrIGlmIGluc2VydHMgYXJlIGFsbG93ZWQgKi8KKwkJaWYgKG1l dGFEYXRhLT5za2lwSW5zZXJ0cykKKwkJeworCQkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihtZXRhQnVm ZmVyKTsKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCQlibGtObyA9IG1ldGFEYXRhLT5sYXN0Qmxr Tm87CisJCS8qIERvbid0IGhvbGQgbWV0YWJ1ZmZlciBsb2NrIHdoaWxlIGRvaW5nIGluc2VydCAq LworCQlMb2NrQnVmZmVyKG1ldGFCdWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CisKKwkJaWYg KGJsa05vID4gMCkKKwkJeworCQkJYnVmZmVyID0gUmVhZEJ1ZmZlcihpbmRleCwgYmxrTm8pOwor CQkJTG9ja0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7CisJCQlTVEFSVF9D UklUX1NFQ1RJT04oKTsKKworCQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKKworCQkJ QXNzZXJ0KCFQYWdlSXNOZXcocGFnZSkpOworCisJCQkvKiBUcnkgdG8gYWRkIHR1cGxlIHRvIGV4 aXN0aW5nIHBhZ2UgKi8KKwkJCWlmIChTdGlyUGFnZUFkZEl0ZW0ocGFnZSwgaXR1cCkpCisJCQl7 CisJCQkJLyogU3VjY2VzcyEgIEFwcGx5IHRoZSBjaGFuZ2UsIGNsZWFuIHVwLCBhbmQgZXhpdCAq LworCQkJCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOworCQkJCUVORF9DUklUX1NFQ1RJT04oKTsK KworCQkJCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKKwkJCQlSZWxlYXNlQnVmZmVyKG1l dGFCdWZmZXIpOworCQkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRDdHgpOworCQkJCU1lbW9y eUNvbnRleHREZWxldGUoaW5zZXJ0Q3R4KTsKKwkJCQlyZXR1cm4gZmFsc2U7CisJCQl9CisKKwkJ CUVORF9DUklUX1NFQ1RJT04oKTsKKwkJCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKKwkJ fQorCisJCS8qIE5lZWQgdG8gYWRkIG5ldyBwYWdlIC0gZ2V0IGV4Y2x1c2l2ZSBsb2NrIG9uIG1l dGEgcGFnZSAqLworCQlMb2NrQnVmZmVyKG1ldGFCdWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lW RSk7CisKKwkJbWV0YURhdGEgPSBTdGlyUGFnZUdldE1ldGEoQnVmZmVyR2V0UGFnZShtZXRhQnVm ZmVyKSk7CisJCS8qIENoZWNrIGlmIGFub3RoZXIgYmFja2VuZCBhbHJlYWR5IGV4dGVuZGVkIHRo ZSBpbmRleCAqLworCisJCWlmIChibGtObyAhPSBtZXRhRGF0YS0+bGFzdEJsa05vKQorCQl7CisJ CQlBc3NlcnQoYmxrTm8gPCBtZXRhRGF0YS0+bGFzdEJsa05vKTsKKwkJCS8qIFNvbWVvbmUgZWxz ZSBpbnNlcnRlZCB0aGUgbmV3IHBhZ2UgaW50byB0aGUgaW5kZXgsIGxldHMgdHJ5IGFnYWluICov CisJCQlMb2NrQnVmZmVyKG1ldGFCdWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CisJCQljb250 aW51ZTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qIE11c3QgZXh0ZW5kIHRoZSBmaWxlICovCisJ CQlidWZmZXIgPSBFeHRlbmRCdWZmZXJlZFJlbChCTVJfUkVMKGluZGV4KSwgTUFJTl9GT1JLTlVN LCBOVUxMLAorCQkJCQkJCQkJICAgRUJfTE9DS19GSVJTVCk7CisJCQlwYWdlID0gQnVmZmVyR2V0 UGFnZShidWZmZXIpOworCQkJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7CisKKwkJCVN0aXJJbml0UGFn ZShwYWdlLCAwKTsKKworCQkJaWYgKCFTdGlyUGFnZUFkZEl0ZW0ocGFnZSwgaXR1cCkpCisJCQl7 CisJCQkJLyogV2Ugc2hvdWxkbid0IGJlIGhlcmUgc2luY2Ugd2UncmUgaW5zZXJ0aW5nIHRvIGFu IGVtcHR5IHBhZ2UgKi8KKwkJCQllbG9nKEVSUk9SLCAiY291bGQgbm90IGFkZCBuZXcgc3RpciB0 dXBsZSB0byBlbXB0eSBwYWdlIik7CisJCQl9CisKKwkJCS8qIFVwZGF0ZSBtZXRhIHBhZ2Ugd2l0 aCBuZXcgbGFzdCBibG9jayBudW1iZXIgKi8KKwkJCW1ldGFEYXRhLT5sYXN0QmxrTm8gPSBCdWZm ZXJHZXRCbG9ja051bWJlcihidWZmZXIpOworCisJCQlNYXJrQnVmZmVyRGlydHkobWV0YUJ1ZmZl cik7CisJCQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKKworCQkJRU5EX0NSSVRfU0VDVElPTigp OworCisJCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7CisJCQlVbmxvY2tSZWxlYXNlQnVm ZmVyKG1ldGFCdWZmZXIpOworCisJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkQ3R4KTsKKwkJ CU1lbW9yeUNvbnRleHREZWxldGUoaW5zZXJ0Q3R4KTsKKworCQkJcmV0dXJuIGZhbHNlOworCQl9 CisJfQorfQorCisvKgorICogU1RJUiBkb2Vzbid0IHN1cHBvcnQgc2NhbnMgLSB0aGVzZSBmdW5j dGlvbnMgYWxsIGVycm9yIG91dAorICovCitJbmRleFNjYW5EZXNjIHN0aXJiZWdpbnNjYW4oUmVs YXRpb24gciwgaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzKQoreworCWVyZXBvcnQoRVJST1IsIChl cnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwgZXJybXNnKCJcIiVzXCIgaXMg bm90IGEgbm90IGltcGxlbWVudGVkIiwgX19mdW5jX18pKSk7Cit9CisKK3ZvaWQKK3N0aXJyZXNj YW4oSW5kZXhTY2FuRGVzYyBzY2FuLCBTY2FuS2V5IHNjYW5rZXksIGludCBuc2NhbmtleXMsCisJ CSAgU2NhbktleSBvcmRlcmJ5cywgaW50IG5vcmRlcmJ5cykKK3sKKwllcmVwb3J0KEVSUk9SLCAo ZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksIGVycm1zZygiXCIlc1wiIGlz IG5vdCBhIG5vdCBpbXBsZW1lbnRlZCIsIF9fZnVuY19fKSkpOworfQorCit2b2lkIHN0aXJlbmRz Y2FuKEluZGV4U2NhbkRlc2Mgc2NhbikKK3sKKwllcmVwb3J0KEVSUk9SLCAoZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksIGVycm1zZygiXCIlc1wiIGlzIG5vdCBhIG5vdCBp bXBsZW1lbnRlZCIsIF9fZnVuY19fKSkpOworfQorCisvKgorICogQnVpbGQgYSBTVElSIGluZGV4 IC0gb25seSBhbGxvd2VkIGZvciBhdXhpbGlhcnkgaW5kZXhlcy4KKyAqIEp1c3QgaW5pdGlhbGl6 ZXMgdGhlIG1ldGEgcGFnZSB3aXRob3V0IGFueSBoZWFwIHNjYW5zLgorICovCitJbmRleEJ1aWxk UmVzdWx0ICpzdGlyYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCisJCQkJCQkg ICBzdHJ1Y3QgSW5kZXhJbmZvICppbmRleEluZm8pCit7CisJSW5kZXhCdWlsZFJlc3VsdCAqcmVz dWx0OworCisJaWYgKCFpbmRleEluZm8tPmlpX0F1eGlsaWFyeSkKKwkJZXJlcG9ydChFUlJPUiwg KGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLCBlcnJtc2coIlNUSVIgaW5k ZXhlcyBhcmUgbm90IHN1cHBvcnRlZCB0byBiZSBidWlsdCIpKSk7CisKKwlTdGlySW5pdE1ldGFw YWdlKGluZGV4LCBNQUlOX0ZPUktOVU0pOworCisJcmVzdWx0ID0gKEluZGV4QnVpbGRSZXN1bHQg KikgcGFsbG9jKHNpemVvZihJbmRleEJ1aWxkUmVzdWx0KSk7CisJcmVzdWx0LT5oZWFwX3R1cGxl cyA9IDA7CisJcmVzdWx0LT5pbmRleF90dXBsZXMgPSAwOworCXJldHVybiByZXN1bHQ7Cit9CisK K3ZvaWQgc3RpcmJ1aWxkZW1wdHkoUmVsYXRpb24gaW5kZXgpCit7CisJU3RpckluaXRNZXRhcGFn ZShpbmRleCwgSU5JVF9GT1JLTlVNKTsKK30KKworSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGly YnVsa2RlbGV0ZShJbmRleFZhY3V1bUluZm8gKmluZm8sCisJCQkJCQkJCQkgSW5kZXhCdWxrRGVs ZXRlUmVzdWx0ICpzdGF0cywKKwkJCQkJCQkJCSBJbmRleEJ1bGtEZWxldGVDYWxsYmFjayBjYWxs YmFjaywKKwkJCQkJCQkJCSB2b2lkICpjYWxsYmFja19zdGF0ZSkKK3sKKwlSZWxhdGlvbiBpbmRl eCA9IGluZm8tPmluZGV4OworCUJsb2NrTnVtYmVyIGJsa25vLCBucGFnZXM7CisJQnVmZmVyIGJ1 ZmZlcjsKKwlQYWdlIHBhZ2U7CisKKwkvKiBGb3Igbm9ybWFsIFZBQ1VVTSwgbWFyayB0byBza2lw IGluc2VydHMgYW5kIHdhcm4gYWJvdXQgaW5kZXggZHJvcCBuZWVkZWQgKi8KKwlpZiAoIWluZm8t PnZhbGlkYXRlX2luZGV4KQorCXsKKwkJU3Rpck1hcmtBc1NraXBJbnNlcnRzKGluZGV4KTsKKwor CQllcmVwb3J0KFdBUk5JTkcsIChlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVE KSwKKwkJCQllcnJtc2coIlwiJXNcIiBpcyBub3QgYSBub3QgaW1wbGVtZW50ZWQsIHNlZW1zIGxp a2UgdGhpcyBpbmRleCBuZWVkIHRvIGJlIGRyb3BwZWQiLCBfX2Z1bmNfXykpKTsKKwkJcmV0dXJu IE5VTEw7CisJfQorCisJaWYgKHN0YXRzID09IE5VTEwpCisJCXN0YXRzID0gKEluZGV4QnVsa0Rl bGV0ZVJlc3VsdCAqKSBwYWxsb2MwKHNpemVvZihJbmRleEJ1bGtEZWxldGVSZXN1bHQpKTsKKwor CS8qCisJICogSXRlcmF0ZSBvdmVyIHRoZSBwYWdlcy4gV2UgZG9uJ3QgY2FyZSBhYm91dCBjb25j dXJyZW50bHkgYWRkZWQgcGFnZXMsCisJICogYmVjYXVzZSBpbmRleCBpcyBtYXJrZWQgYXMgbm90 LXJlYWR5IGZvciB0aGF0IG1vbW1lbnQgYW5kIGluZGV4IG5vdAorCSAqIHVzZWQgZm9yIGluc2Vy dC4KKwkgKi8KKwlucGFnZXMgPSBSZWxhdGlvbkdldE51bWJlck9mQmxvY2tzKGluZGV4KTsKKwlm b3IgKGJsa25vID0gU1RJUl9IRUFEX0JMS05POyBibGtubyA8IG5wYWdlczsgYmxrbm8rKykKKwl7 CisJCVN0aXJUdXBsZSAqaXR1cCwgKml0dXBFbmQ7CisKKwkJdmFjdXVtX2RlbGF5X3BvaW50KGZh bHNlKTsKKworCQlidWZmZXIgPSBSZWFkQnVmZmVyRXh0ZW5kZWQoaW5kZXgsIE1BSU5fRk9SS05V TSwgYmxrbm8sCisJCQkJCQkJCQlSQk1fTk9STUFMLCBpbmZvLT5zdHJhdGVneSk7CisKKwkJTG9j a0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX1NIQVJFKTsKKwkJcGFnZSA9IEJ1ZmZlckdldFBh Z2UoYnVmZmVyKTsKKworCQlpZiAoUGFnZUlzTmV3KHBhZ2UpKQorCQl7CisJCQlVbmxvY2tSZWxl YXNlQnVmZmVyKGJ1ZmZlcik7CisJCQljb250aW51ZTsKKwkJfQorCisJCWl0dXAgPSBTdGlyUGFn ZUdldFR1cGxlKHBhZ2UsIEZpcnN0T2Zmc2V0TnVtYmVyKTsKKwkJaXR1cEVuZCA9IFN0aXJQYWdl R2V0VHVwbGUocGFnZSwgT2Zmc2V0TnVtYmVyTmV4dChTdGlyUGFnZUdldE1heE9mZnNldChwYWdl KSkpOworCQl3aGlsZSAoaXR1cCA8IGl0dXBFbmQpCisJCXsKKwkJCS8qIERvIHdlIGhhdmUgdG8g ZGVsZXRlIHRoaXMgdHVwbGU/ICovCisJCQlpZiAoY2FsbGJhY2soJml0dXAtPmhlYXBQdHIsIGNh bGxiYWNrX3N0YXRlKSkKKwkJCXsKKwkJCQllcmVwb3J0KEVSUk9SLCAoZXJyY29kZShFUlJDT0RF X0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksIGVycm1zZygid2UgbmV2ZXIgZGVsZXRlIGluIHN0aXIi KSkpOworCQkJfQorCisJCQlpdHVwID0gU3RpclBhZ2VHZXROZXh0VHVwbGUoaXR1cCk7CisJCX0K KworCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7CisJfQorCisJcmV0dXJuIHN0YXRzOwor fQorCisvKgorICogTWFyayBhIFNUSVIgaW5kZXggdG8gc2tpcCBmdXR1cmUgaW5zZXJ0cworICov Cit2b2lkIFN0aXJNYXJrQXNTa2lwSW5zZXJ0cyhSZWxhdGlvbiBpbmRleCkKK3sKKwlTdGlyTWV0 YVBhZ2VEYXRhICptZXRhRGF0YTsKKwlCdWZmZXIgbWV0YUJ1ZmZlcjsKKwlQYWdlIG1ldGFQYWdl OworCisJQXNzZXJ0KCFSZWxhdGlvbk5lZWRzV0FMKGluZGV4KSk7CisJbWV0YUJ1ZmZlciA9IFJl YWRCdWZmZXIoaW5kZXgsIFNUSVJfTUVUQVBBR0VfQkxLTk8pOworCUxvY2tCdWZmZXIobWV0YUJ1 ZmZlciwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZFKTsKKwlTVEFSVF9DUklUX1NFQ1RJT04oKTsKKwor CW1ldGFQYWdlID0gQnVmZmVyR2V0UGFnZShtZXRhQnVmZmVyKTsKKwltZXRhRGF0YSA9IFN0aXJQ YWdlR2V0TWV0YShtZXRhUGFnZSk7CisKKwlpZiAoIW1ldGFEYXRhLT5za2lwSW5zZXJ0cykKKwl7 CisJCW1ldGFEYXRhLT5za2lwSW5zZXJ0cyA9IHRydWU7CisJCU1hcmtCdWZmZXJEaXJ0eShtZXRh QnVmZmVyKTsKKwl9CisJVW5sb2NrUmVsZWFzZUJ1ZmZlcihtZXRhQnVmZmVyKTsKK30KKworSW5k ZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGlydmFjdXVtY2xlYW51cChJbmRleFZhY3V1bUluZm8gKmlu Zm8sCisJCQkJCQkJCQkJSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0cykKK3sKKwlTdGlyTWFy a0FzU2tpcEluc2VydHMoaW5mby0+aW5kZXgpOworCWVyZXBvcnQoV0FSTklORywgKGVycmNvZGUo RVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJZXJybXNnKCJcIiVzXCIgaXMgbm90 IGEgbm90IGltcGxlbWVudGVkLCBzZWVtcyBsaWtlIHRoaXMgaW5kZXggbmVlZCB0byBiZSBkcm9w cGVkIiwgX19mdW5jX18pKSk7CisJcmV0dXJuIE5VTEw7Cit9CisKK2J5dGVhICpzdGlyb3B0aW9u cyhEYXR1bSByZWxvcHRpb25zLCBib29sIHZhbGlkYXRlKQoreworCXJldHVybiBOVUxMOworfQor Cit2b2lkIHN0aXJjb3N0ZXN0aW1hdGUoUGxhbm5lckluZm8gKnJvb3QsIEluZGV4UGF0aCAqcGF0 aCwKKwkJCQkJIGRvdWJsZSBsb29wX2NvdW50LCBDb3N0ICppbmRleFN0YXJ0dXBDb3N0LAorCQkJ CQkgQ29zdCAqaW5kZXhUb3RhbENvc3QsIFNlbGVjdGl2aXR5ICppbmRleFNlbGVjdGl2aXR5LAor CQkJCQkgZG91YmxlICppbmRleENvcnJlbGF0aW9uLCBkb3VibGUgKmluZGV4UGFnZXMpCit7CisJ ZXJlcG9ydChFUlJPUiwgKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLCBl cnJtc2coIlwiJXNcIiBpcyBub3QgYSBub3QgaW1wbGVtZW50ZWQiLCBfX2Z1bmNfXykpKTsKK30K XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRh bG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5kZXggY2NhMWRiYjhl MzcuLmU5ZTIyZWMwZTg0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMK KysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCkBAIC0zNDMzLDYgKzM0MzMsNyBAQCB2 YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgU25hcHNob3Qgc25hcHNob3Qp CiAJaXZpbmZvLm1lc3NhZ2VfbGV2ZWwgPSBERUJVRzI7CiAJaXZpbmZvLm51bV9oZWFwX3R1cGxl cyA9IGhlYXBSZWxhdGlvbi0+cmRfcmVsLT5yZWx0dXBsZXM7CiAJaXZpbmZvLnN0cmF0ZWd5ID0g TlVMTDsKKwlpdmluZm8udmFsaWRhdGVfaW5kZXggPSB0cnVlOwogCiAJLyoKIAkgKiBFbmNvZGUg VElEcyBhcyBpbnQ4IHZhbHVlcyBmb3IgdGhlIHNvcnQsIHJhdGhlciB0aGFuIGRpcmVjdGx5IHNv cnRpbmcKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYwppbmRleCA0ZmZmYjc2ZTU1Ny4uMzg2MDJlNmE3MmQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9hbmFseXplLmMKQEAgLTcyMCw2ICs3MjAsNyBAQCBkb19hbmFseXplX3Jl bChSZWxhdGlvbiBvbmVyZWwsIFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCQkJaXZpbmZvLm1lc3Nh Z2VfbGV2ZWwgPSBlbGV2ZWw7CiAJCQlpdmluZm8ubnVtX2hlYXBfdHVwbGVzID0gb25lcmVsLT5y ZF9yZWwtPnJlbHR1cGxlczsKIAkJCWl2aW5mby5zdHJhdGVneSA9IHZhY19zdHJhdGVneTsKKwkJ CWl2aW5mby52YWxpZGF0ZV9pbmRleCA9IGZhbHNlOwogCiAJCQlzdGF0cyA9IGluZGV4X3ZhY3V1 bV9jbGVhbnVwKCZpdmluZm8sIE5VTEwpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy92YWN1dW1wYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxs ZWwuYwppbmRleCAyYjlkNTQ4Y2RlYi4uMjg2ZmNjY2VjM2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv dmFjdXVtcGFyYWxsZWwuYwpAQCAtODg0LDYgKzg4NCw3IEBAIHBhcmFsbGVsX3ZhY3V1bV9wcm9j ZXNzX29uZV9pbmRleChQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIFJlbGF0aW9uIGluZHJlbCwK IAlpdmluZm8uZXN0aW1hdGVkX2NvdW50ID0gcHZzLT5zaGFyZWQtPmVzdGltYXRlZF9jb3VudDsK IAlpdmluZm8ubnVtX2hlYXBfdHVwbGVzID0gcHZzLT5zaGFyZWQtPnJlbHR1cGxlczsKIAlpdmlu Zm8uc3RyYXRlZ3kgPSBwdnMtPmJzdHJhdGVneTsKKwlpdmluZm8udmFsaWRhdGVfaW5kZXggPSBm YWxzZTsKIAogCS8qIFVwZGF0ZSBlcnJvciB0cmFjZWJhY2sgaW5mb3JtYXRpb24gKi8KIAlwdnMt PmluZG5hbWUgPSBwc3RyZHVwKFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGluZHJlbCkpOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rl cy9tYWtlZnVuY3MuYwppbmRleCBlMmQ5ZTliZTQxYS4uZTk3ZTA5NDNmNWIgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL21h a2VmdW5jcy5jCkBAIC04NzUsNiArODc1LDcgQEAgbWFrZUluZGV4SW5mbyhpbnQgbnVtYXR0cnMs IGludCBudW1rZXlhdHRycywgT2lkIGFtb2lkLCBMaXN0ICpleHByZXNzaW9ucywKIAkvKiBpbml0 aWFsaXplIGluZGV4LWJ1aWxkIHN0YXRlIHRvIGRlZmF1bHQgKi8KIAluLT5paV9Ccm9rZW5Ib3RD aGFpbiA9IGZhbHNlOwogCW4tPmlpX1BhcmFsbGVsV29ya2VycyA9IDA7CisJbi0+aWlfQXV4aWxp YXJ5ID0gZmFsc2U7CiAKIAkvKiBzZXQgdXAgZm9yIHBvc3NpYmxlIHVzZSBieSBpbmRleCBBTSAq LwogCW4tPmlpX0FtID0gYW1vaWQ7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2Vu YW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oCmluZGV4IDViMmFiMTgxYjVmLi5iOTk5 MTZlZGI0YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgKKysrIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgKQEAgLTczLDYgKzczLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg SW5kZXhWYWN1dW1JbmZvCiAJYm9vbAkJZXN0aW1hdGVkX2NvdW50OwkvKiBudW1faGVhcF90dXBs ZXMgaXMgYW4gZXN0aW1hdGUgKi8KIAlpbnQJCQltZXNzYWdlX2xldmVsOwkvKiBlcmVwb3J0IGxl dmVsIGZvciBwcm9ncmVzcyBtZXNzYWdlcyAqLwogCWRvdWJsZQkJbnVtX2hlYXBfdHVwbGVzOwkv KiB0dXBsZXMgcmVtYWluaW5nIGluIGhlYXAgKi8KKwlib29sCQl2YWxpZGF0ZV9pbmRleDsgLyog dmFsaWRhdGluZyBjb25jdXJyZW50bHkgYnVpbHQgaW5kZXg/ICovCiAJQnVmZmVyQWNjZXNzU3Ry YXRlZ3kgc3RyYXRlZ3k7CS8qIGFjY2VzcyBzdHJhdGVneSBmb3IgcmVhZHMgKi8KIH0gSW5kZXhW YWN1dW1JbmZvOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsb3B0aW9ucy5o IGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbG9wdGlvbnMuaAppbmRleCBkZmJiNGM4NTQ2MC4uYTEy MWI0ZDMxYzkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxvcHRpb25zLmgKKysr IGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbG9wdGlvbnMuaApAQCAtNTEsOCArNTEsOSBAQCB0eXBl ZGVmIGVudW0gcmVsb3B0X2tpbmQKIAlSRUxPUFRfS0lORF9WSUVXID0gKDEgPDwgOSksCiAJUkVM T1BUX0tJTkRfQlJJTiA9ICgxIDw8IDEwKSwKIAlSRUxPUFRfS0lORF9QQVJUSVRJT05FRCA9ICgx IDw8IDExKSwKKwlSRUxPUFRfS0lORF9TVElSID0gKDEgPDwgMTIpLAogCS8qIGlmIHlvdSBhZGQg YSBuZXcga2luZCwgbWFrZSBzdXJlIHlvdSB1cGRhdGUgImxhc3RfZGVmYXVsdCIgdG9vICovCi0J UkVMT1BUX0tJTkRfTEFTVF9ERUZBVUxUID0gUkVMT1BUX0tJTkRfUEFSVElUSU9ORUQsCisJUkVM T1BUX0tJTkRfTEFTVF9ERUZBVUxUID0gUkVMT1BUX0tJTkRfU1RJUiwKIAkvKiBzb21lIGNvbXBp bGVycyB0cmVhdCBlbnVtcyBhcyBzaWduZWQgaW50cywgc28gd2UgY2FuJ3QgdXNlIDEgPDwgMzEg Ki8KIAlSRUxPUFRfS0lORF9NQVggPSAoMSA8PCAzMCkKIH0gcmVsb3B0X2tpbmQ7CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3Rpci5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3N0aXIu aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOTk0M2M0MmE5N2UKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3Rpci5oCkBAIC0wLDAgKzEsMTE3 IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBzdGlyLmgKKyAqCSAgaGVhZGVyIGZpbGUg Zm9yIHBvc3RncmVzIHN0aXIgYWNjZXNzIG1ldGhvZCBpbXBsZW1lbnRhdGlvbi4KKyAqCisgKgor ICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9w bWVudCBHcm91cAorICoKKyAqIHNyYy9pbmNsdWRlL2FjY2Vzcy9zdGlyLmgKKyAqCisgKi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqLworI2lmbmRlZiBfU1RJUl9IXworI2RlZmluZSBfU1RJUl9IXworCisj aW5jbHVkZSAiYW1hcGkuaCIKKyNpbmNsdWRlICJ4bG9nLmgiCisjaW5jbHVkZSAiZ2VuZXJpY194 bG9nLmgiCisjaW5jbHVkZSAiaXR1cC5oIgorI2luY2x1ZGUgImZtZ3IuaCIKKyNpbmNsdWRlICJu b2Rlcy9wYXRobm9kZXMuaCIKKworLyogU3VwcG9ydCBwcm9jZWR1cmVzIG51bWJlcnMgKi8KKyNk ZWZpbmUgU1RJUl9OUFJPQwkJCQkwCisKKy8qIFNjYW4gc3RyYXRlZ2llcyAqLworI2RlZmluZSBT VElSX05TVFJBVEVHSUVTCQkxCisKKyNkZWZpbmUgU1RJUl9PUFRJT05TX1BST0MJCQkJMAorCisv KiBNYWNyb3MgZm9yIGFjY2Vzc2luZyBzdGlyIHBhZ2Ugc3RydWN0dXJlcyAqLworI2RlZmluZSBT dGlyUGFnZUdldE9wYXF1ZShwYWdlKSAoKFN0aXJQYWdlT3BhcXVlKSBQYWdlR2V0U3BlY2lhbFBv aW50ZXIocGFnZSkpCisjZGVmaW5lIFN0aXJQYWdlR2V0TWF4T2Zmc2V0KHBhZ2UpIChTdGlyUGFn ZUdldE9wYXF1ZShwYWdlKS0+bWF4b2ZmKQorI2RlZmluZSBTdGlyUGFnZUlzTWV0YShwYWdlKSBc CisJKChTdGlyUGFnZUdldE9wYXF1ZShwYWdlKS0+ZmxhZ3MgJiBTVElSX01FVEEpICE9IDApCisj ZGVmaW5lIFN0aXJQYWdlR2V0RGF0YShwYWdlKQkJKChTdGlyVHVwbGUgKilQYWdlR2V0Q29udGVu dHMocGFnZSkpCisjZGVmaW5lIFN0aXJQYWdlR2V0VHVwbGUocGFnZSwgb2Zmc2V0KSBcCisJKChT dGlyVHVwbGUgKikoUGFnZUdldENvbnRlbnRzKHBhZ2UpIFwKKwkJKyBzaXplb2YoU3RpclR1cGxl KSAqICgob2Zmc2V0KSAtIDEpKSkKKyNkZWZpbmUgU3RpclBhZ2VHZXROZXh0VHVwbGUodHVwbGUp IFwKKwkoKFN0aXJUdXBsZSAqKSgoUG9pbnRlcikodHVwbGUpICsgc2l6ZW9mKFN0aXJUdXBsZSkp KQorCisKKworLyogUHJlc2VydmVkIHBhZ2UgbnVtYmVycyAqLworI2RlZmluZSBTVElSX01FVEFQ QUdFX0JMS05PCSgwKQorI2RlZmluZSBTVElSX0hFQURfQkxLTk8JCSgxKSAvKiBmaXJzdCBkYXRh IHBhZ2UgKi8KKworCisvKiBPcGFxdWUgZm9yIHN0aXIgcGFnZXMgKi8KK3R5cGVkZWYgc3RydWN0 IFN0aXJQYWdlT3BhcXVlRGF0YQoreworCU9mZnNldE51bWJlciBtYXhvZmY7CQkvKiBudW1iZXIg b2YgaW5kZXggdHVwbGVzIG9uIHBhZ2UgKi8KKwl1aW50MTYJCWZsYWdzOwkJCS8qIHNlZSBiaXQg ZGVmaW5pdGlvbnMgYmVsb3cgKi8KKwl1aW50MTYJCXVudXNlZDsJCQkvKiBwbGFjZWhvbGRlciB0 byBmb3JjZSBtYXhhbGlnbmluZyBvZiBzaXplIG9mCisJCQkJCQkJCSAqIFN0aXJQYWdlT3BhcXVl RGF0YSBhbmQgdG8gcGxhY2UKKwkJCQkJCQkJICogc3Rpcl9wYWdlX2lkIGV4YWN0bHkgYXQgdGhl IGVuZCBvZiBwYWdlICovCisJdWludDE2CQlzdGlyX3BhZ2VfaWQ7CS8qIGZvciBpZGVudGlmaWNh dGlvbiBvZiBTVElSIGluZGV4ZXMgKi8KK30gU3RpclBhZ2VPcGFxdWVEYXRhOworCisvKiBTdGly IHBhZ2UgZmxhZ3MgKi8KKyNkZWZpbmUgU1RJUl9NRVRBCQkoMTw8MCkKKwordHlwZWRlZiBTdGly UGFnZU9wYXF1ZURhdGEgKlN0aXJQYWdlT3BhcXVlOworCisjZGVmaW5lIFNUSVJfUEFHRV9JRAkJ MHhGRjg0CisKKy8qIE1ldGFkYXRhIG9mIHN0aXIgaW5kZXggKi8KK3R5cGVkZWYgc3RydWN0IFN0 aXJNZXRhUGFnZURhdGEKK3sKKwl1aW50MzIJCW1hZ2lja051bWJlcjsKKwl1aW50MTYJCWxhc3RC bGtObzsKKwlib29sCQlza2lwSW5zZXJ0czsJLyogc2hvdWxkIHdlIGp1c3QgZXhpdCB3aXRob3V0 IGFueSBpbnNlcnRzICovCit9IFN0aXJNZXRhUGFnZURhdGE7CisKKy8qIE1hZ2ljIG51bWJlciB0 byBkaXN0aW5ndWlzaCBzdGlyIHBhZ2VzIGZyb20gb3RoZXJzICovCisjZGVmaW5lIFNUSVJfTUFH SUNLX05VTUJFUiAoMHhEQkFDMERFRikKKworI2RlZmluZSBTdGlyUGFnZUdldE1ldGEocGFnZSkJ KChTdGlyTWV0YVBhZ2VEYXRhICopIFBhZ2VHZXRDb250ZW50cyhwYWdlKSkKKwordHlwZWRlZiBz dHJ1Y3QgU3RpclR1cGxlCit7CisJSXRlbVBvaW50ZXJEYXRhIGhlYXBQdHI7Cit9IFN0aXJUdXBs ZTsKKworI2RlZmluZSBTdGlyUGFnZUdldEZyZWVTcGFjZShzdGF0ZSwgcGFnZSkgXAorCShCTENL U1ogLSBNQVhBTElHTihTaXplT2ZQYWdlSGVhZGVyRGF0YSkgXAorCQktIFN0aXJQYWdlR2V0TWF4 T2Zmc2V0KHBhZ2UpICogKHNpemVvZihTdGlyVHVwbGUpKSBcCisJCS0gTUFYQUxJR04oc2l6ZW9m KFN0aXJQYWdlT3BhcXVlRGF0YSkpKQorCitleHRlcm4gdm9pZCBTdGlyRmlsbE1ldGFwYWdlKFJl bGF0aW9uIGluZGV4LCBQYWdlIG1ldGFQYWdlLCBib29sIHNraXBJbnNlcnRzKTsKK2V4dGVybiB2 b2lkIFN0aXJJbml0TWV0YXBhZ2UoUmVsYXRpb24gaW5kZXgsIEZvcmtOdW1iZXIgZm9ya251bSk7 CitleHRlcm4gdm9pZCBTdGlySW5pdFBhZ2UoUGFnZSBwYWdlLCB1aW50MTYgZmxhZ3MpOworZXh0 ZXJuIHZvaWQgU3Rpck1hcmtBc1NraXBJbnNlcnRzKFJlbGF0aW9uIGluZGV4KTsKKworLyogaW5k ZXggYWNjZXNzIG1ldGhvZCBpbnRlcmZhY2UgZnVuY3Rpb25zICovCitleHRlcm4gYm9vbCBzdGly dmFsaWRhdGUoT2lkIG9wY2xhc3NvaWQpOworZXh0ZXJuIGJvb2wgc3Rpcmluc2VydChSZWxhdGlv biBpbmRleCwgRGF0dW0gKnZhbHVlcywgYm9vbCAqaXNudWxsLAorCQkJCQkgSXRlbVBvaW50ZXIg aHRfY3RpZCwgUmVsYXRpb24gaGVhcFJlbCwKKwkJCQkJIEluZGV4VW5pcXVlQ2hlY2sgY2hlY2tV bmlxdWUsCisJCQkJCSBib29sIGluZGV4VW5jaGFuZ2VkLAorCQkJCQkgc3RydWN0IEluZGV4SW5m byAqaW5kZXhJbmZvKTsKK2V4dGVybiBJbmRleFNjYW5EZXNjIHN0aXJiZWdpbnNjYW4oUmVsYXRp b24gciwgaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzKTsKK2V4dGVybiB2b2lkIHN0aXJyZXNjYW4o SW5kZXhTY2FuRGVzYyBzY2FuLCBTY2FuS2V5IHNjYW5rZXksIGludCBuc2NhbmtleXMsCisJCQkJ CSBTY2FuS2V5IG9yZGVyYnlzLCBpbnQgbm9yZGVyYnlzKTsKK2V4dGVybiB2b2lkIHN0aXJlbmRz Y2FuKEluZGV4U2NhbkRlc2Mgc2Nhbik7CitleHRlcm4gSW5kZXhCdWlsZFJlc3VsdCAqc3RpcmJ1 aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAorCQkJCQkJCQkgc3RydWN0IEluZGV4 SW5mbyAqaW5kZXhJbmZvKTsKK2V4dGVybiB2b2lkIHN0aXJidWlsZGVtcHR5KFJlbGF0aW9uIGlu ZGV4KTsKK2V4dGVybiBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0aXJidWxrZGVsZXRlKEluZGV4 VmFjdXVtSW5mbyAqaW5mbywKKwkJCQkJCQkJCQkgICBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0 YXRzLCBJbmRleEJ1bGtEZWxldGVDYWxsYmFjayBjYWxsYmFjaywKKwkJCQkJCQkJCQkgICB2b2lk ICpjYWxsYmFja19zdGF0ZSk7CitleHRlcm4gSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGlydmFj dXVtY2xlYW51cChJbmRleFZhY3V1bUluZm8gKmluZm8sCisJCQkJCQkJCQkJCSAgSW5kZXhCdWxr RGVsZXRlUmVzdWx0ICpzdGF0cyk7CitleHRlcm4gYnl0ZWEgKnN0aXJvcHRpb25zKERhdHVtIHJl bG9wdGlvbnMsIGJvb2wgdmFsaWRhdGUpOworCisjZW5kaWYKXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtLmRhdCBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfYW0uZGF0CmluZGV4IDI2ZDE1OTI4YTE1Li5hNWVjZjkyMDhhZCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbS5kYXQKKysrIGIvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19hbS5kYXQKQEAgLTMzLDUgKzMzLDggQEAKIHsgb2lkID0+ICczNTgwJywg b2lkX3N5bWJvbCA9PiAnQlJJTl9BTV9PSUQnLAogICBkZXNjciA9PiAnYmxvY2sgcmFuZ2UgaW5k ZXggKEJSSU4pIGFjY2VzcyBtZXRob2QnLAogICBhbW5hbWUgPT4gJ2JyaW4nLCBhbWhhbmRsZXIg PT4gJ2JyaW5oYW5kbGVyJywgYW10eXBlID0+ICdpJyB9LAoreyBvaWQgPT4gJzU1NTUnLCBvaWRf c3ltYm9sID0+ICdTVElSX0FNX09JRCcsCisgIGRlc2NyID0+ICdzaG9ydCB0ZXJtIGluZGV4IHJl cGxhY2VtZW50IGFjY2VzcyBtZXRob2QnLAorICBhbW5hbWUgPT4gJ3N0aXInLCBhbWhhbmRsZXIg PT4gJ3N0aXJoYW5kbGVyJywgYW10eXBlID0+ICdpJyB9LAogCiBdCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX29wY2xhc3MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19v cGNsYXNzLmRhdAppbmRleCA0YTk2MjQ4MDJhYS4uNjIyN2M1NjU4ZmMgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BjbGFzcy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19vcGNsYXNzLmRhdApAQCAtNDg4LDQgKzQ4OCw4IEBACiAKICMgbm8gYnJpbiBvcGNsYXNz IGZvciB0aGUgZ2VvbWV0cmljIHR5cGVzIGV4Y2VwdCBib3gKIAorIyBhbGxvdyBhbnkgdHlwZXMg Zm9yIFNUSVIKK3sgb3BjbWV0aG9kID0+ICdzdGlyJywgb2lkX3N5bWJvbCA9PiAnQU5ZX1NUSVJf T1BTX09JRCcsIG9wY25hbWUgPT4gJ3N0aXJfb3BzJywKKyAgb3BjZmFtaWx5ID0+ICdzdGlyL2Fu eV9vcHMnLCBvcGNpbnR5cGUgPT4gJ2FueSd9LAorCiBdCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX29wZmFtaWx5LmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BmYW1p bHkuZGF0CmluZGV4IGY3ZGNiOTZiNDNjLi44MzhhZDMyYzkzMiAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19vcGZhbWlseS5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19vcGZhbWlseS5kYXQKQEAgLTMwNCw1ICszMDQsNyBAQAogICBvcGZtZXRob2QgPT4gJ2hhc2gn LCBvcGZuYW1lID0+ICdtdWx0aXJhbmdlX29wcycgfSwKIHsgb2lkID0+ICc2MTU4JywKICAgb3Bm bWV0aG9kID0+ICdnaXN0Jywgb3BmbmFtZSA9PiAnbXVsdGlyYW5nZV9vcHMnIH0sCit7IG9pZCA9 PiAnNTU1OCcsCisgIG9wZm1ldGhvZCA9PiAnc3RpcicsIG9wZm5hbWUgPT4gJ2FueV9vcHMnIH0s CiAKIF0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDVkNWJlOGJhNGUxLi5lMjljZDQzMTY1 OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC05MzUsNiArOTM1LDEwIEBACiAgIHByb25h bWUgPT4gJ2JyaW5oYW5kbGVyJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAogICBwcm9yZXR0eXBlID0+ ICdpbmRleF9hbV9oYW5kbGVyJywgcHJvYXJndHlwZXMgPT4gJ2ludGVybmFsJywKICAgcHJvc3Jj ID0+ICdicmluaGFuZGxlcicgfSwKK3sgb2lkID0+ICc1NTU2JywgZGVzY3IgPT4gJ3Nob3J0IHRl cm0gaW5kZXggcmVwbGFjZW1lbnQgYWNjZXNzIG1ldGhvZCBoYW5kbGVyJywKKyAgcHJvbmFtZSA9 PiAnc3RpcmhhbmRsZXInLCBwcm92b2xhdGlsZSA9PiAndicsCisgIHByb3JldHR5cGUgPT4gJ2lu ZGV4X2FtX2hhbmRsZXInLCBwcm9hcmd0eXBlcyA9PiAnaW50ZXJuYWwnLAorICBwcm9zcmMgPT4g J3N0aXJoYW5kbGVyJyB9LAogeyBvaWQgPT4gJzM5NTInLCBkZXNjciA9PiAnYnJpbjogc3RhbmRh bG9uZSBzY2FuIG5ldyB0YWJsZSBwYWdlcycsCiAgIHByb25hbWUgPT4gJ2JyaW5fc3VtbWFyaXpl X25ld192YWx1ZXMnLCBwcm92b2xhdGlsZSA9PiAndicsCiAgIHByb3BhcmFsbGVsID0+ICd1Jywg cHJvcmV0dHlwZSA9PiAnaW50NCcsIHByb2FyZ3R5cGVzID0+ICdyZWdjbGFzcycsCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oCmluZGV4IDViNmNhZGI1YTZjLi4zODUwZGRlNGFkYiAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25v ZGVzLmgKQEAgLTE4MiwxMiArMTgyLDEzIEBAIHR5cGVkZWYgc3RydWN0IEV4cHJTdGF0ZQogICoJ CUJyb2tlbkhvdENoYWluCQlkaWQgd2UgZGV0ZWN0IGFueSBicm9rZW4gSE9UIGNoYWlucz8KICAq CQlTdW1tYXJpemluZwkJCWlzIGl0IGEgc3VtbWFyaXppbmcgaW5kZXg/CiAgKgkJUGFyYWxsZWxX b3JrZXJzCQkjIG9mIHdvcmtlcnMgcmVxdWVzdGVkIChleGNsdWRlcyBsZWFkZXIpCisgKgkJQXV4 aWxpYXJ5CQkJIyBpbmRleC1oZWxwZXIgZm9yIGNvbmN1cnJlbnQgYnVpbGQ/CiAgKgkJQW0JCQkJ CU9pZCBvZiBpbmRleCBBTQogICoJCUFtQ2FjaGUJCQkJcHJpdmF0ZSBjYWNoZSBhcmVhIGZvciBp bmRleCBBTQogICoJCUNvbnRleHQJCQkJbWVtb3J5IGNvbnRleHQgaG9sZGluZyB0aGlzIEluZGV4 SW5mbwogICoKLSAqIGlpX0NvbmN1cnJlbnQsIGlpX0Jyb2tlbkhvdENoYWluLCBhbmQgaWlfUGFy YWxsZWxXb3JrZXJzIGFyZSB1c2VkIG9ubHkKLSAqIGR1cmluZyBpbmRleCBidWlsZDsgdGhleSdy ZSBjb252ZW50aW9uYWxseSB6ZXJvZWQgb3RoZXJ3aXNlLgorICogaWlfQ29uY3VycmVudCwgaWlf QnJva2VuSG90Q2hhaW4sIGlpX0F1eGlsaWFyeSBhbmQgaWlfUGFyYWxsZWxXb3JrZXJzCisgKiBh cmUgdXNlZCBvbmx5IGR1cmluZyBpbmRleCBidWlsZDsgdGhleSdyZSBjb252ZW50aW9uYWxseSB6 ZXJvZWQgb3RoZXJ3aXNlLgogICogLS0tLS0tLS0tLS0tLS0tLQogICovCiB0eXBlZGVmIHN0cnVj dCBJbmRleEluZm8KQEAgLTIxNiw2ICsyMTcsNyBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleEluZm8K IAlib29sCQlpaV9TdW1tYXJpemluZzsKIAlib29sCQlpaV9XaXRob3V0T3ZlcmxhcHM7CiAJaW50 CQkJaWlfUGFyYWxsZWxXb3JrZXJzOworCWJvb2wJCWlpX0F1eGlsaWFyeTsKIAlPaWQJCQlpaV9B bTsKIAl2b2lkCSAgICppaV9BbUNhY2hlOwogCU1lbW9yeUNvbnRleHQgaWlfQ29udGV4dDsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2luZGV4X3NlbGZ1bmNzLmggYi9zcmMvaW5jbHVk ZS91dGlscy9pbmRleF9zZWxmdW5jcy5oCmluZGV4IDZjNjRkYjZkNDU2Li5lMGQ5MzlkNjg1NyAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvaW5kZXhfc2VsZnVuY3MuaAorKysgYi9zcmMv aW5jbHVkZS91dGlscy9pbmRleF9zZWxmdW5jcy5oCkBAIC02Miw2ICs2MiwxNCBAQCBleHRlcm4g dm9pZCBzcGdjb3N0ZXN0aW1hdGUoc3RydWN0IFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCVNl bGVjdGl2aXR5ICppbmRleFNlbGVjdGl2aXR5LAogCQkJCQkJCWRvdWJsZSAqaW5kZXhDb3JyZWxh dGlvbiwKIAkJCQkJCQlkb3VibGUgKmluZGV4UGFnZXMpOworZXh0ZXJuIHZvaWQgc3RpcmNvc3Rl c3RpbWF0ZShzdHJ1Y3QgUGxhbm5lckluZm8gKnJvb3QsCisJCQkJCQkJc3RydWN0IEluZGV4UGF0 aCAqcGF0aCwKKwkJCQkJCQlkb3VibGUgbG9vcF9jb3VudCwKKwkJCQkJCQlDb3N0ICppbmRleFN0 YXJ0dXBDb3N0LAorCQkJCQkJCUNvc3QgKmluZGV4VG90YWxDb3N0LAorCQkJCQkJCVNlbGVjdGl2 aXR5ICppbmRleFNlbGVjdGl2aXR5LAorCQkJCQkJCWRvdWJsZSAqaW5kZXhDb3JyZWxhdGlvbiwK KwkJCQkJCQlkb3VibGUgKmluZGV4UGFnZXMpOwogZXh0ZXJuIHZvaWQgZ2luY29zdGVzdGltYXRl KHN0cnVjdCBQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQlzdHJ1Y3QgSW5kZXhQYXRoICpwYXRo LAogCQkJCQkJCWRvdWJsZSBsb29wX2NvdW50LApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9hbXV0aWxzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYW11dGls cy5vdXQKaW5kZXggN2FiNjExM2M2MTkuLjkyYzAzM2EyMDEwIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2FtdXRpbHMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvYW11dGlscy5vdXQKQEAgLTE3Myw3ICsxNzMsMTMgQEAgc2VsZWN0IGFtbmFtZSwgcHJv cCwgcGdfaW5kZXhhbV9oYXNfcHJvcGVydHkoYS5vaWQsIHByb3ApIGFzIHAKICBzcGdpc3QgfCBj YW5fZXhjbHVkZSAgIHwgdAogIHNwZ2lzdCB8IGNhbl9pbmNsdWRlICAgfCB0CiAgc3BnaXN0IHwg Ym9ndXMgICAgICAgICB8IAotKDM2IHJvd3MpCisgc3RpciAgIHwgY2FuX29yZGVyICAgICB8IGYK KyBzdGlyICAgfCBjYW5fdW5pcXVlICAgIHwgZgorIHN0aXIgICB8IGNhbl9tdWx0aV9jb2wgfCB0 Cisgc3RpciAgIHwgY2FuX2V4Y2x1ZGUgICB8IGYKKyBzdGlyICAgfCBjYW5faW5jbHVkZSAgIHwg dAorIHN0aXIgICB8IGJvZ3VzICAgICAgICAgfCAKKyg0MiByb3dzKQogCiAtLQogLS0gYWRkaXRp b25hbCBjaGVja3MgZm9yIHBnX2luZGV4X2NvbHVtbl9oYXNfcHJvcGVydHkKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3ByX3Nhbml0eS5vdXQgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL29wcl9zYW5pdHkub3V0CmluZGV4IDIwYmY5ZWE5Y2RmLi5mYzExNmI4NGEy OCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91dAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29wcl9zYW5pdHkub3V0CkBAIC0yMTIyLDkg KzIxMjIsMTAgQEAgRlJPTSBwZ19vcGNsYXNzIEFTIGMxCiBXSEVSRSBOT1QgRVhJU1RTKFNFTEVD VCAxIEZST00gcGdfYW1vcCBBUyBhMQogICAgICAgICAgICAgICAgICBXSEVSRSBhMS5hbW9wZmFt aWx5ID0gYzEub3BjZmFtaWx5CiAgICAgICAgICAgICAgICAgICAgQU5EIGJpbmFyeV9jb2VyY2li bGUoYzEub3BjaW50eXBlLCBhMS5hbW9wbGVmdHR5cGUpKTsKLSBvcGNuYW1lIHwgb3BjZmFtaWx5 IAotLS0tLS0tLS0tKy0tLS0tLS0tLS0tCi0oMCByb3dzKQorIG9wY25hbWUgIHwgb3BjZmFtaWx5 IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIHN0aXJfb3BzIHwgICAgICA1NTU4CisoMSByb3cp CiAKIC0tIENoZWNrIHRoYXQgZWFjaCBvcGVyYXRvciBsaXN0ZWQgaW4gcGdfYW1vcCBoYXMgYW4g YXNzb2NpYXRlZCBvcGNsYXNzLAogLS0gdGhhdCBpcyBvbmUgd2hvc2Ugb3BjaW50eXBlIG1hdGNo ZXMgb3BybGVmdCAocG9zc2libHkgYnkgY29lcmNpb24pLgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9wc3FsLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNx bC5vdXQKaW5kZXggY2Y0OGFlNmQwYzIuLjUyZGRlNTc2ODBkIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcHNxbC5vdXQKQEAgLTUxMzcsNyArNTEzNyw4IEBAIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMK ICBoZWFwICAgfCBUYWJsZQogIGhlYXAyICB8IFRhYmxlCiAgc3BnaXN0IHwgSW5kZXgKLSg4IHJv d3MpCisgc3RpciAgIHwgSW5kZXgKKyg5IHJvd3MpCiAKIFxkQSAqCiBMaXN0IG9mIGFjY2VzcyBt ZXRob2RzCkBAIC01MTUxLDcgKzUxNTIsOCBAQCBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCiAgaGVh cCAgIHwgVGFibGUKICBoZWFwMiAgfCBUYWJsZQogIHNwZ2lzdCB8IEluZGV4Ci0oOCByb3dzKQor IHN0aXIgICB8IEluZGV4CisoOSByb3dzKQogCiBcZEEgaCoKIExpc3Qgb2YgYWNjZXNzIG1ldGhv ZHMKQEAgLTUxNzYsOSArNTE3OCw5IEBAIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMKIAogXGRBOiBl eHRyYSBhcmd1bWVudCAiYmFyIiBpZ25vcmVkCiBcZEErCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMKLSAgTmFtZSAgfCBUeXBlICB8ICAgICAgIEhh bmRsZXIgICAgICAgIHwgICAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgCi0t LS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExp c3Qgb2YgYWNjZXNzIG1ldGhvZHMKKyAgTmFtZSAgfCBUeXBlICB8ICAgICAgIEhhbmRsZXIgICAg ICAgIHwgICAgICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgIAorLS0tLS0t LS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgYnJpbiAgIHwgSW5kZXggfCBicmluaGFuZGxlciAgICAg ICAgICB8IGJsb2NrIHJhbmdlIGluZGV4IChCUklOKSBhY2Nlc3MgbWV0aG9kCiAgYnRyZWUgIHwg SW5kZXggfCBidGhhbmRsZXIgICAgICAgICAgICB8IGItdHJlZSBpbmRleCBhY2Nlc3MgbWV0aG9k CiAgZ2luICAgIHwgSW5kZXggfCBnaW5oYW5kbGVyICAgICAgICAgICB8IEdJTiBpbmRleCBhY2Nl c3MgbWV0aG9kCkBAIC01MTg3LDEyICs1MTg5LDEzIEBAIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMK ICBoZWFwICAgfCBUYWJsZSB8IGhlYXBfdGFibGVhbV9oYW5kbGVyIHwgaGVhcCB0YWJsZSBhY2Nl c3MgbWV0aG9kCiAgaGVhcDIgIHwgVGFibGUgfCBoZWFwX3RhYmxlYW1faGFuZGxlciB8IAogIHNw Z2lzdCB8IEluZGV4IHwgc3BnaGFuZGxlciAgICAgICAgICAgfCBTUC1HaVNUIGluZGV4IGFjY2Vz cyBtZXRob2QKLSg4IHJvd3MpCisgc3RpciAgIHwgSW5kZXggfCBzdGlyaGFuZGxlciAgICAgICAg ICB8IHNob3J0IHRlcm0gaW5kZXggcmVwbGFjZW1lbnQgYWNjZXNzIG1ldGhvZAorKDkgcm93cykK IAogXGRBKyAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgYWNjZXNzIG1l dGhvZHMKLSAgTmFtZSAgfCBUeXBlICB8ICAgICAgIEhhbmRsZXIgICAgICAgIHwgICAgICAgICAg ICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgCi0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMKKyAg TmFtZSAgfCBUeXBlICB8ICAgICAgIEhhbmRsZXIgICAgICAgIHwgICAgICAgICAgICAgICAgRGVz Y3JpcHRpb24gICAgICAgICAgICAgICAgIAorLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAg YnJpbiAgIHwgSW5kZXggfCBicmluaGFuZGxlciAgICAgICAgICB8IGJsb2NrIHJhbmdlIGluZGV4 IChCUklOKSBhY2Nlc3MgbWV0aG9kCiAgYnRyZWUgIHwgSW5kZXggfCBidGhhbmRsZXIgICAgICAg ICAgICB8IGItdHJlZSBpbmRleCBhY2Nlc3MgbWV0aG9kCiAgZ2luICAgIHwgSW5kZXggfCBnaW5o YW5kbGVyICAgICAgICAgICB8IEdJTiBpbmRleCBhY2Nlc3MgbWV0aG9kCkBAIC01MjAxLDcgKzUy MDQsOCBAQCBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCiAgaGVhcCAgIHwgVGFibGUgfCBoZWFwX3Rh YmxlYW1faGFuZGxlciB8IGhlYXAgdGFibGUgYWNjZXNzIG1ldGhvZAogIGhlYXAyICB8IFRhYmxl IHwgaGVhcF90YWJsZWFtX2hhbmRsZXIgfCAKICBzcGdpc3QgfCBJbmRleCB8IHNwZ2hhbmRsZXIg ICAgICAgICAgIHwgU1AtR2lTVCBpbmRleCBhY2Nlc3MgbWV0aG9kCi0oOCByb3dzKQorIHN0aXIg ICB8IEluZGV4IHwgc3RpcmhhbmRsZXIgICAgICAgICAgfCBzaG9ydCB0ZXJtIGluZGV4IHJlcGxh Y2VtZW50IGFjY2VzcyBtZXRob2QKKyg5IHJvd3MpCiAKIFxkQSsgaCoKICAgICAgICAgICAgICAg ICAgICAgIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMKLS0gCjIuNDMuMAoK --000000000000176c55063224bb18 Content-Type: application/octet-stream; name="v17-0008-Improve-CREATE-REINDEX-INDEX-CONCURRENTLY-using-.patch" Content-Disposition: attachment; filename="v17-0008-Improve-CREATE-REINDEX-INDEX-CONCURRENTLY-using-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m967p89b7 RnJvbSA4OTBhNjYyMzI1YWFkNDcwM2I2NjMwNWVkYTQzYmNkNjI2NjM0OWM2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAzMSBEZWMgMjAyNCAxNTowMzoxMCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjE3IDA4 LzEyXSBJbXByb3ZlIENSRUFURS9SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSB1c2luZwogYXV4 aWxpYXJ5IGluZGV4CgpNb2RpZnkgdGhlIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRpbmcgcHJvY2Vz cyB0byB1c2UgYW4gYXV4aWxpYXJ5IHVubG9nZ2VkIGluZGV4CmR1cmluZyBjb25zdHJ1Y3Rpb24u IFRoaXMgaW1wcm92ZXMgZWZmaWNpZW5jeSBvZiBjb25jdXJyZW50CmluZGV4IG9wZXJhdGlvbnMg Ynk6CgotIENyZWF0aW5nIGFuIGF1eGlsaWFyeSBTVElSIChTaG9ydCBUZXJtIEluZGV4IFJlcGxh Y2VtZW50KSBpbmRleCB0byB0cmFjayBuZXcgdHVwbGVzIGR1cmluZyB0aGUgbWFpbiBpbmRleCBi dWlsZAotIFVzaW5nIHRoZSBhdXhpbGlhcnkgaW5kZXggdG8gY2F0Y2ggYWxsIHR1cGxlcyBpbnNl cnRlZCBkdXJpbmcgdGhlIGJ1aWxkIHBoYXNlIGluc3RlYWQgb2YgcmVseWluZyBvbiBhIHNlY29u ZCBoZWFwIHNjYW4KLSBNZXJnaW5nIHRoZSBhdXhpbGlhcnkgaW5kZXggY29udGVudCB3aXRoIHRo ZSBtYWluIGluZGV4IGR1cmluZyB2YWxpZGF0aW9uCi0gQXV0b21hdGljYWxseSBjbGVhbmluZyB1 cCB0aGUgYXV4aWxpYXJ5IGluZGV4IGFmdGVyIHRoZSBtYWluIGluZGV4IGlzIHJlYWR5CgpUaGlz IGFwcHJvYWNoIGVsaW1pbmF0ZXMgdGhlIG5lZWQgZm9yIGEgc2Vjb25kIGZ1bGwgdGFibGUgc2Nh biBkdXJpbmcgaW5kZXgKdmFsaWRhdGlvbiwgbWFraW5nIHRoZSBwcm9jZXNzIG1vcmUgZWZmaWNp ZW50IGVzcGVjaWFsbHkgZm9yIGxhcmdlIHRhYmxlcy4KVGhlIGF1eGlsaWFyeSBpbmRleCBpcyBh dXRvbWF0aWNhbGx5IGRyb3BwZWQgYWZ0ZXIgdGhlIG1haW4gaW5kZXggYmVjb21lcyB2YWxpZC4K ClRoaXMgY2hhbmdlIGFmZmVjdHMgYm90aCBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGFuZCBS RUlOREVYIElOREVYIENPTkNVUlJFTlRMWQpvcGVyYXRpb25zLiBUaGUgU1RJUiBhY2Nlc3MgbWV0 aG9kIGlzIGFkZGVkIHNwZWNpZmljYWxseSBmb3IgdGhlc2UgYXV4aWxpYXJ5CmluZGV4ZXMgYW5k IGNhbm5vdCBiZSB1c2VkIGRpcmVjdGx5IGJ5IHVzZXJzLgotLS0KIGRvYy9zcmMvc2dtbC9tb25p dG9yaW5nLnNnbWwgICAgICAgICAgICAgICAgICB8ICAyNiArLQogZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfaW5kZXguc2dtbCAgICAgICAgICAgIHwgIDMzICstCiBkb2Mvc3JjL3NnbWwvcmVmL3Jl aW5kZXguc2dtbCAgICAgICAgICAgICAgICAgfCAgNDMgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL1JFQURNRS5IT1QgICAgICAgICAgICB8ICAxNSArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwgNTkyICsrKysrKysrKysrKy0tLS0tLQogc3JjL2Jh Y2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgICAgICAgICAgIHwgMzEyICsrKysrKystLQog c3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsICAgICAgICAgIHwgIDE3ICstCiBz cmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMgICAgICAgICAgICAgICAgfCAgIDMgKy0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jICAgICAgICAgICAgICB8IDM3NiArKysrKysr Ky0tLQogc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMgICAgICAgICAgICAgICAgIHwgICA0 ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAgICAgICAgfCAgMzEg Ky0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCAgICAgICAgICAgICAgICAgICB8ICAxMiAr LQogc3JjL2luY2x1ZGUvY29tbWFuZHMvcHJvZ3Jlc3MuaCAgICAgICAgICAgICAgIHwgIDEzICst CiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgIDQgKy0K IHNyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oICAgICAgICAgICAgICAgICB8ICAgMyArLQog Li4uL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0ICAgICAgICAgIHwgIDI4ICsKIC4u Li9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQgICAgfCAgNDIgKysKIHNyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5kZXhpbmcub3V0ICAgICAgICB8ICAgMyArLQogc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgICAgICAgICAgIHwgIDE3ICstCiBzcmMvdGVz dC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsICAgICAgICAgfCAgMjEgKwogMjEgZmlsZXMg Y2hhbmdlZCwgMTE5NCBpbnNlcnRpb25zKCspLCA0MDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5n LnNnbWwKaW5kZXggYzQyMWQ4OWVkZmYuLmJjZjAyZDUxMWM0IDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwvbW9uaXRvcmluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwK QEAgLTYzMDUsNiArNjMwNSwxOCBAQCBGUk9NIHBnX3N0YXRfZ2V0X2JhY2tlbmRfaWRzZXQoKSBB UyBiYWNrZW5kaWQ7CiAgICAgICAgaW5mb3JtYXRpb24gZm9yIHRoaXMgcGhhc2UuCiAgICAgICA8 L2VudHJ5PgogICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD53 YWl0aW5nIGZvciB3cml0ZXJzIHRvIHVzZSBhdXhpbGlhcnkgaW5kZXg8L2xpdGVyYWw+PC9lbnRy eT4KKyAgICAgIDxlbnRyeT4KKyAgICAgICA8Y29tbWFuZD5DUkVBVEUgSU5ERVggQ09OQ1VSUkVO VExZPC9jb21tYW5kPiBvciA8Y29tbWFuZD5SRUlOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4g aXMgd2FpdGluZyBmb3IgdHJhbnNhY3Rpb25zCisgICAgICAgd2l0aCB3cml0ZSBsb2NrcyB0aGF0 IGNhbiBwb3RlbnRpYWxseSBzZWUgdGhlIHRhYmxlIHRvIGZpbmlzaCwgdG8gZW5zdXJlIHVzZSBv ZiBhdXhpbGlhcnkgaW5kZXggZm9yIG5ldyB0dXBsZXMgaW4KKyAgICAgICBmdXR1cmUgdHJhbnNh Y3Rpb25zLgorICAgICAgIFRoaXMgcGhhc2UgaXMgc2tpcHBlZCB3aGVuIG5vdCBpbiBjb25jdXJy ZW50IG1vZGUuCisgICAgICAgQ29sdW1ucyA8c3RydWN0bmFtZT5sb2NrZXJzX3RvdGFsPC9zdHJ1 Y3RuYW1lPiwgPHN0cnVjdG5hbWU+bG9ja2Vyc19kb25lPC9zdHJ1Y3RuYW1lPgorICAgICAgIGFu ZCA8c3RydWN0bmFtZT5jdXJyZW50X2xvY2tlcl9waWQ8L3N0cnVjdG5hbWU+IGNvbnRhaW4gdGhl IHByb2dyZXNzCisgICAgICAgaW5mb3JtYXRpb24gZm9yIHRoaXMgcGhhc2UuCisgICAgICA8L2Vu dHJ5PgorICAgICA8L3Jvdz4KICAgICAgPHJvdz4KICAgICAgIDxlbnRyeT48bGl0ZXJhbD5idWls ZGluZyBpbmRleDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgPGVudHJ5PgpAQCAtNjM0NSwxMyAr NjM1NywxMiBAQCBGUk9NIHBnX3N0YXRfZ2V0X2JhY2tlbmRfaWRzZXQoKSBBUyBiYWNrZW5kaWQ7 CiAgICAgICA8L2VudHJ5PgogICAgICA8L3Jvdz4KICAgICAgPHJvdz4KLSAgICAgIDxlbnRyeT48 bGl0ZXJhbD5pbmRleCB2YWxpZGF0aW9uOiBzY2FubmluZyB0YWJsZTwvbGl0ZXJhbD48L2VudHJ5 PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPmluZGV4IHZhbGlkYXRpb246IG1lcmdpbmcgaW5kZXhl czwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgPGVudHJ5PgotICAgICAgIDxjb21tYW5kPkNSRUFU RSBJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+IGlzIHNjYW5uaW5nIHRoZSB0YWJsZQotICAg ICAgIHRvIHZhbGlkYXRlIHRoZSBpbmRleCB0dXBsZXMgY29sbGVjdGVkIGluIHRoZSBwcmV2aW91 cyB0d28gcGhhc2VzLgorICAgICAgIDxjb21tYW5kPkNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFk8 L2NvbW1hbmQ+IG1lcmdpbmcgY29udGVudCBvZiBhdXhpbGlhcnkgaW5kZXggd2l0aCB0aGUgdGFy Z2V0IGluZGV4LgogICAgICAgIFRoaXMgcGhhc2UgaXMgc2tpcHBlZCB3aGVuIG5vdCBpbiBjb25j dXJyZW50IG1vZGUuCi0gICAgICAgQ29sdW1ucyA8c3RydWN0bmFtZT5ibG9ja3NfdG90YWw8L3N0 cnVjdG5hbWU+IChzZXQgdG8gdGhlIHRvdGFsIHNpemUgb2YgdGhlIHRhYmxlKQotICAgICAgIGFu ZCA8c3RydWN0bmFtZT5ibG9ja3NfZG9uZTwvc3RydWN0bmFtZT4gY29udGFpbiB0aGUgcHJvZ3Jl c3MgaW5mb3JtYXRpb24gZm9yIHRoaXMgcGhhc2UuCisgICAgICAgQ29sdW1ucyA8c3RydWN0bmFt ZT50dXBsZXNfdG90YWw8L3N0cnVjdG5hbWU+IChzZXQgdG8gdGhlIG51bWJlciBvZiB0dXBsZXMg dG8gYmUgbWVyZ2VkKQorICAgICAgIGFuZCA8c3RydWN0bmFtZT50dXBsZXNfZG9uZTwvc3RydWN0 bmFtZT4gY29udGFpbiB0aGUgcHJvZ3Jlc3MgaW5mb3JtYXRpb24gZm9yIHRoaXMgcGhhc2UuCiAg ICAgICA8L2VudHJ5PgogICAgICA8L3Jvdz4KICAgICAgPHJvdz4KQEAgLTYzNjgsOCArNjM3OSw5 IEBAIEZST00gcGdfc3RhdF9nZXRfYmFja2VuZF9pZHNldCgpIEFTIGJhY2tlbmRpZDsKICAgICAg PHJvdz4KICAgICAgIDxlbnRyeT48bGl0ZXJhbD53YWl0aW5nIGZvciByZWFkZXJzIGJlZm9yZSBt YXJraW5nIGRlYWQ8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgIDxlbnRyeT4KLSAgICAgICA8Y29t bWFuZD5SRUlOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4gaXMgd2FpdGluZyBmb3IgdHJhbnNh Y3Rpb25zCi0gICAgICAgd2l0aCByZWFkIGxvY2tzIG9uIHRoZSB0YWJsZSB0byBmaW5pc2gsIGJl Zm9yZSBtYXJraW5nIHRoZSBvbGQgaW5kZXggZGVhZC4KKyAgICAgICA8Y29tbWFuZD5DUkVBVEUg SU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPiBpcyB3YWl0aW5nIGZvciB0cmFuc2FjdGlvbnMK KyAgICAgICAgd2l0aCByZWFkIGxvY2tzIG9uIHRoZSB0YWJsZSB0byBmaW5pc2gsIGJlZm9yZSBt YXJraW5nIHRoZSBhdXhpbGlhcnkgaW5kZXggYXMgZGVhZC4KKyAgICAgICA8Y29tbWFuZD5SRUlO REVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4gaXMgYWxzbyB3YWl0aW5nIGJlZm9yZSBtYXJraW5n IHRoZSBvbGQgaW5kZXggYXMgZGVhZC4KICAgICAgICBUaGlzIHBoYXNlIGlzIHNraXBwZWQgd2hl biBub3QgaW4gY29uY3VycmVudCBtb2RlLgogICAgICAgIENvbHVtbnMgPHN0cnVjdG5hbWU+bG9j a2Vyc190b3RhbDwvc3RydWN0bmFtZT4sIDxzdHJ1Y3RuYW1lPmxvY2tlcnNfZG9uZTwvc3RydWN0 bmFtZT4KICAgICAgICBhbmQgPHN0cnVjdG5hbWU+Y3VycmVudF9sb2NrZXJfcGlkPC9zdHJ1Y3Ru YW1lPiBjb250YWluIHRoZSBwcm9ncmVzcwpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfaW5kZXguc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwKaW5k ZXggMjA4Mzg5ZTgwMDYuLmUzMzM0NWY2YTM0IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVm L2NyZWF0ZV9pbmRleC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNn bWwKQEAgLTYxNCwyNSArNjE0LDI0IEBAIENSRUFURSBbIFVOSVFVRSBdIElOREVYIFsgQ09OQ1VS UkVOVExZIF0gWyBbIElGIE5PVCBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9CiAgICAgb3V0 IHdyaXRlcy4gIFRoaXMgbWV0aG9kIGlzIGludm9rZWQgYnkgc3BlY2lmeWluZyB0aGUKICAgICA8 bGl0ZXJhbD5DT05DVVJSRU5UTFk8L2xpdGVyYWw+IG9wdGlvbiBvZiA8Y29tbWFuZD5DUkVBVEUg SU5ERVg8L2NvbW1hbmQ+LgogICAgIFdoZW4gdGhpcyBvcHRpb24gaXMgdXNlZCwKLSAgICA8cHJv ZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IG11c3QgcGVyZm9ybSB0d28gc2NhbnMg b2YgdGhlIHRhYmxlLCBhbmQgaW4KLSAgICBhZGRpdGlvbiBpdCBtdXN0IHdhaXQgZm9yIGFsbCBl eGlzdGluZyB0cmFuc2FjdGlvbnMgdGhhdCBjb3VsZCBwb3RlbnRpYWxseQotICAgIG1vZGlmeSBv ciB1c2UgdGhlIGluZGV4IHRvIHRlcm1pbmF0ZS4gIFRodXMKLSAgICB0aGlzIG1ldGhvZCByZXF1 aXJlcyBtb3JlIHRvdGFsIHdvcmsgdGhhbiBhIHN0YW5kYXJkIGluZGV4IGJ1aWxkIGFuZCB0YWtl cwotICAgIHNpZ25pZmljYW50bHkgbG9uZ2VyIHRvIGNvbXBsZXRlLiAgSG93ZXZlciwgc2luY2Ug aXQgYWxsb3dzIG5vcm1hbAorICAgIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFt ZT4gbXVzdCBwZXJmb3JtIHNldmVyYWwgc3RlcHMgdG8gZW5zdXJlIGRhdGEKKyAgICBjb25zaXN0 ZW5jeSB3aGlsZSBhbGxvd2luZyBub3JtYWwgb3BlcmF0aW9ucyB0byBjb250aW51ZS4KKyAgICBU aGlzIG1ldGhvZCByZXF1aXJlcyBtb3JlIHRvdGFsIHdvcmsgdGhhbiBhIHN0YW5kYXJkIGluZGV4 IGJ1aWxkIGFuZCB0YWtlcworICAgIGxvbmdlciB0byBjb21wbGV0ZS4gIEhvd2V2ZXIsIHNpbmNl IGl0IGFsbG93cyBub3JtYWwKICAgICBvcGVyYXRpb25zIHRvIGNvbnRpbnVlIHdoaWxlIHRoZSBp bmRleCBpcyBidWlsdCwgdGhpcyBtZXRob2QgaXMgdXNlZnVsIGZvcgogICAgIGFkZGluZyBuZXcg aW5kZXhlcyBpbiBhIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQuICBPZiBjb3Vyc2UsIHRoZSBleHRy YSBDUFUKICAgICBhbmQgSS9PIGxvYWQgaW1wb3NlZCBieSB0aGUgaW5kZXggY3JlYXRpb24gbWln aHQgc2xvdyBvdGhlciBvcGVyYXRpb25zLgogICAgPC9wYXJhPgogCiAgICA8cGFyYT4KLSAgICBJ biBhIGNvbmN1cnJlbnQgaW5kZXggYnVpbGQsIHRoZSBpbmRleCBpcyBhY3R1YWxseSBlbnRlcmVk IGFzIGFuCisgICAgSW4gYSBjb25jdXJyZW50IGluZGV4IGJ1aWxkLCB0aGUgbWFpbiBhbmQgYXV4 aWxpYXJ5IGluZGV4ZXMgaXMgYWN0dWFsbHkgZW50ZXJlZCBhcyBhbgogICAgIDxxdW90ZT5pbnZh bGlkPC9xdW90ZT4gaW5kZXggaW50bwotICAgIHRoZSBzeXN0ZW0gY2F0YWxvZ3MgaW4gb25lIHRy YW5zYWN0aW9uLCB0aGVuIHR3byB0YWJsZSBzY2FucyBvY2N1ciBpbgotICAgIHR3byBtb3JlIHRy YW5zYWN0aW9ucy4gIEJlZm9yZSBlYWNoIHRhYmxlIHNjYW4sIHRoZSBpbmRleCBidWlsZCBtdXN0 CisgICAgdGhlIHN5c3RlbSBjYXRhbG9ncyBpbiBvbmUgdHJhbnNhY3Rpb24sIHRoZW4gdHdvIHBo YXNlcyBvY2N1ciBpbgorICAgIG11bHRpcGxlIHRyYW5zYWN0aW9ucy4gIEJlZm9yZSBlYWNoIHBo YXNlLCB0aGUgaW5kZXggYnVpbGQgbXVzdAogICAgIHdhaXQgZm9yIGV4aXN0aW5nIHRyYW5zYWN0 aW9ucyB0aGF0IGhhdmUgbW9kaWZpZWQgdGhlIHRhYmxlIHRvIHRlcm1pbmF0ZS4KLSAgICBBZnRl ciB0aGUgc2Vjb25kIHNjYW4sIHRoZSBpbmRleCBidWlsZCBtdXN0IHdhaXQgZm9yIGFueSB0cmFu c2FjdGlvbnMKKyAgICBBZnRlciB0aGUgc2Vjb25kIHBoYXNlLCB0aGUgaW5kZXggYnVpbGQgbXVz dCB3YWl0IGZvciBhbnkgdHJhbnNhY3Rpb25zCiAgICAgdGhhdCBoYXZlIGEgc25hcHNob3QgKHNl ZSA8eHJlZiBsaW5rZW5kPSJtdmNjIi8+KSBwcmVkYXRpbmcgdGhlIHNlY29uZAotICAgIHNjYW4g dG8gdGVybWluYXRlLCBpbmNsdWRpbmcgdHJhbnNhY3Rpb25zIHVzZWQgYnkgYW55IHBoYXNlIG9m IGNvbmN1cnJlbnQKKyAgICBwaGFzZSB0byB0ZXJtaW5hdGUsIGluY2x1ZGluZyB0cmFuc2FjdGlv bnMgdXNlZCBieSBhbnkgcGhhc2Ugb2YgY29uY3VycmVudAogICAgIGluZGV4IGJ1aWxkcyBvbiBv dGhlciB0YWJsZXMsIGlmIHRoZSBpbmRleGVzIGludm9sdmVkIGFyZSBwYXJ0aWFsIG9yIGhhdmUK ICAgICBjb2x1bW5zIHRoYXQgYXJlIG5vdCBzaW1wbGUgY29sdW1uIHJlZmVyZW5jZXMuCiAgICAg VGhlbiBmaW5hbGx5IHRoZSBpbmRleCBjYW4gYmUgbWFya2VkIDxxdW90ZT52YWxpZDwvcXVvdGU+ IGFuZCByZWFkeSBmb3IgdXNlLApAQCAtNjQ1LDEwICs2NDQsMTEgQEAgQ1JFQVRFIFsgVU5JUVVF IF0gSU5ERVggWyBDT05DVVJSRU5UTFkgXSBbIFsgSUYgTk9UIEVYSVNUUyBdIDxyZXBsYWNlYWJs ZSBjbGFzcz0KICAgIDxwYXJhPgogICAgIElmIGEgcHJvYmxlbSBhcmlzZXMgd2hpbGUgc2Nhbm5p bmcgdGhlIHRhYmxlLCBzdWNoIGFzIGEgZGVhZGxvY2sgb3IgYQogICAgIHVuaXF1ZW5lc3Mgdmlv bGF0aW9uIGluIGEgdW5pcXVlIGluZGV4LCB0aGUgPGNvbW1hbmQ+Q1JFQVRFIElOREVYPC9jb21t YW5kPgotICAgIGNvbW1hbmQgd2lsbCBmYWlsIGJ1dCBsZWF2ZSBiZWhpbmQgYW4gPHF1b3RlPmlu dmFsaWQ8L3F1b3RlPiBpbmRleC4gVGhpcyBpbmRleAotICAgIHdpbGwgYmUgaWdub3JlZCBmb3Ig cXVlcnlpbmcgcHVycG9zZXMgYmVjYXVzZSBpdCBtaWdodCBiZSBpbmNvbXBsZXRlOwotICAgIGhv d2V2ZXIgaXQgd2lsbCBzdGlsbCBjb25zdW1lIHVwZGF0ZSBvdmVyaGVhZC4gVGhlIDxhcHBsaWNh dGlvbj5wc3FsPC9hcHBsaWNhdGlvbj4KLSAgICA8Y29tbWFuZD5cZDwvY29tbWFuZD4gY29tbWFu ZCB3aWxsIHJlcG9ydCBzdWNoIGFuIGluZGV4IGFzIDxsaXRlcmFsPklOVkFMSUQ8L2xpdGVyYWw+ OgorICAgIGNvbW1hbmQgd2lsbCBmYWlsIGJ1dCBsZWF2ZSBiZWhpbmQgYW4gPHF1b3RlPmludmFs aWQ8L3F1b3RlPiBpbmRleCBhbmQgaXRzCisgICAgYXNzb2NpYXRlZCBhdXhpbGlhcnkgaW5kZXgu IFRoZXNlIGluZGV4ZXMKKyAgICB3aWxsIGJlIGlnbm9yZWQgZm9yIHF1ZXJ5aW5nIHB1cnBvc2Vz IGJlY2F1c2UgdGhleSBtaWdodCBiZSBpbmNvbXBsZXRlOworICAgIGhvd2V2ZXIgdGhleSB3aWxs IHN0aWxsIGNvbnN1bWUgdXBkYXRlIG92ZXJoZWFkLiBUaGUgPGFwcGxpY2F0aW9uPnBzcWw8L2Fw cGxpY2F0aW9uPgorICAgIDxjb21tYW5kPlxkPC9jb21tYW5kPiBjb21tYW5kIHdpbGwgcmVwb3J0 IHN1Y2ggaW5kZXhlcyBhcyA8bGl0ZXJhbD5JTlZBTElEPC9saXRlcmFsPjoKIAogPHByb2dyYW1s aXN0aW5nPgogcG9zdGdyZXM9IyBcZCB0YWIKQEAgLTY1OCwxMSArNjU4LDEyIEBAIHBvc3RncmVz PSMgXGQgdGFiCiAgY29sICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwKIElu ZGV4ZXM6CiAgICAgImlkeCIgYnRyZWUgKGNvbCkgSU5WQUxJRAorICAgICJpZHhfY2NhdXgiIHN0 aXIgKGNvbCkgSU5WQUxJRAogPC9wcm9ncmFtbGlzdGluZz4KIAogICAgIFRoZSByZWNvbW1lbmRl ZCByZWNvdmVyeQotICAgIG1ldGhvZCBpbiBzdWNoIGNhc2VzIGlzIHRvIGRyb3AgdGhlIGluZGV4 IGFuZCB0cnkgYWdhaW4gdG8gcGVyZm9ybQotICAgIDxjb21tYW5kPkNSRUFURSBJTkRFWCBDT05D VVJSRU5UTFk8L2NvbW1hbmQ+LiAgKEFub3RoZXIgcG9zc2liaWxpdHkgaXMKKyAgICBtZXRob2Qg aW4gc3VjaCBjYXNlcyBpcyB0byBkcm9wIHRoZXNlIGluZGV4ZXMgYW5kIHRyeSBhZ2FpbiB0byBw ZXJmb3JtCisgICAgPGNvbW1hbmQ+Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4u IChBbm90aGVyIHBvc3NpYmlsaXR5IGlzCiAgICAgdG8gcmVidWlsZCB0aGUgaW5kZXggd2l0aCA8 Y29tbWFuZD5SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4pLgogICAgPC9wYXJh PgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbCBiL2RvYy9zcmMv c2dtbC9yZWYvcmVpbmRleC5zZ21sCmluZGV4IDViM2M3Njk4MDBlLi42YTA1NjIwYmQ2NyAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L3JlZi9yZWluZGV4LnNnbWwKQEAgLTM2OCwxMSArMzY4LDEwIEBAIFJFSU5ERVggWyAoIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkg XSB7IERBCiAgICAgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBzdXBwb3J0 cyByZWJ1aWxkaW5nIGluZGV4ZXMgd2l0aCBtaW5pbXVtIGxvY2tpbmcKICAgICBvZiB3cml0ZXMu ICBUaGlzIG1ldGhvZCBpcyBpbnZva2VkIGJ5IHNwZWNpZnlpbmcgdGhlCiAgICAgPGxpdGVyYWw+ Q09OQ1VSUkVOVExZPC9saXRlcmFsPiBvcHRpb24gb2YgPGNvbW1hbmQ+UkVJTkRFWDwvY29tbWFu ZD4uIFdoZW4gdGhpcyBvcHRpb24KLSAgICBpcyB1c2VkLCA8cHJvZHVjdG5hbWU+UG9zdGdyZVNR TDwvcHJvZHVjdG5hbWU+IG11c3QgcGVyZm9ybSB0d28gc2NhbnMgb2YgdGhlIHRhYmxlCi0gICAg Zm9yIGVhY2ggaW5kZXggdGhhdCBuZWVkcyB0byBiZSByZWJ1aWx0IGFuZCB3YWl0IGZvciB0ZXJt aW5hdGlvbiBvZgotICAgIGFsbCBleGlzdGluZyB0cmFuc2FjdGlvbnMgdGhhdCBjb3VsZCBwb3Rl bnRpYWxseSB1c2UgdGhlIGluZGV4LgorICAgIGlzIHVzZWQsIDxwcm9kdWN0bmFtZT5Qb3N0Z3Jl U1FMPC9wcm9kdWN0bmFtZT4gbXVzdCBwZXJmb3JtIHNldmVyYWwgc3RlcHMgdG8gZW5zdXJlIGRh dGEKKyAgICBjb25zaXN0ZW5jeSB3aGlsZSBhbGxvd2luZyBub3JtYWwgb3BlcmF0aW9ucyB0byBj b250aW51ZS4KICAgICBUaGlzIG1ldGhvZCByZXF1aXJlcyBtb3JlIHRvdGFsIHdvcmsgdGhhbiBh IHN0YW5kYXJkIGluZGV4Ci0gICAgcmVidWlsZCBhbmQgdGFrZXMgc2lnbmlmaWNhbnRseSBsb25n ZXIgdG8gY29tcGxldGUgYXMgaXQgbmVlZHMgdG8gd2FpdAorICAgIHJlYnVpbGQgYW5kIHRha2Vz IGxvbmdlciB0byBjb21wbGV0ZSBhcyBpdCBuZWVkcyB0byB3YWl0CiAgICAgZm9yIHVuZmluaXNo ZWQgdHJhbnNhY3Rpb25zIHRoYXQgbWlnaHQgbW9kaWZ5IHRoZSBpbmRleC4gSG93ZXZlciwgc2lu Y2UKICAgICBpdCBhbGxvd3Mgbm9ybWFsIG9wZXJhdGlvbnMgdG8gY29udGludWUgd2hpbGUgdGhl IGluZGV4IGlzIGJlaW5nIHJlYnVpbHQsIHRoaXMKICAgICBtZXRob2QgaXMgdXNlZnVsIGZvciBy ZWJ1aWxkaW5nIGluZGV4ZXMgaW4gYSBwcm9kdWN0aW9uIGVudmlyb25tZW50LiBPZgpAQCAtMzg4 LDcgKzM4Nyw3IEBAIFJFSU5ERVggWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5v cHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgXSB7IERBCiAgICAgPG9yZGVyZWRsaXN0Pgog ICAgICA8bGlzdGl0ZW0+CiAgICAgICA8cGFyYT4KLSAgICAgICBBIG5ldyB0cmFuc2llbnQgaW5k ZXggZGVmaW5pdGlvbiBpcyBhZGRlZCB0byB0aGUgY2F0YWxvZworICAgICAgIEEgbmV3IHRyYW5z aWVudCBpbmRleCBkZWZpbml0aW9uIGFuZCBhbiBhdXhpbGlhcnkgaW5kZXggYXJlIGFkZGVkIHRv IHRoZSBjYXRhbG9nCiAgICAgICAgPGxpdGVyYWw+cGdfaW5kZXg8L2xpdGVyYWw+LiAgVGhpcyBk ZWZpbml0aW9uIHdpbGwgYmUgdXNlZCB0byByZXBsYWNlCiAgICAgICAgdGhlIG9sZCBpbmRleC4g IEEgPGxpdGVyYWw+U0hBUkUgVVBEQVRFIEVYQ0xVU0lWRTwvbGl0ZXJhbD4gbG9jayBhdAogICAg ICAgIHNlc3Npb24gbGV2ZWwgaXMgdGFrZW4gb24gdGhlIGluZGV4ZXMgYmVpbmcgcmVpbmRleGVk IGFzIHdlbGwgYXMgdGhlaXIKQEAgLTM5OCw3ICszOTcsMTUgQEAgUkVJTkRFWCBbICggPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBd IHsgREEKIAogICAgICA8bGlzdGl0ZW0+CiAgICAgICA8cGFyYT4KLSAgICAgICBBIGZpcnN0IHBh c3MgdG8gYnVpbGQgdGhlIGluZGV4IGlzIGRvbmUgZm9yIGVhY2ggbmV3IGluZGV4LiAgT25jZSB0 aGUKKyAgICAgICBUaGUgYXV4aWxpYXJ5IGluZGV4IGlzIG1hcmtlZCBhcyAicmVhZHkgZm9yIGlu c2VydHMiLCBtYWtpbmcKKyAgICAgICBpdCB2aXNpYmxlIHRvIG90aGVyIHNlc3Npb25zLiBUaGlz IGluZGV4IGVmZmljaWVudGx5IHRyYWNrcyBhbGwgbmV3CisgICAgICAgdHVwbGVzIGR1cmluZyB0 aGUgcmVpbmRleCBwcm9jZXNzLgorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorCisg ICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBuZXcgbWFpbiBpbmRleCBp cyBidWlsdCBieSBzY2FubmluZyB0aGUgdGFibGUuICBPbmNlIHRoZQogICAgICAgIGluZGV4IGlz IGJ1aWx0LCBpdHMgZmxhZyA8bGl0ZXJhbD5wZ19pbmRleC5pbmRpc3JlYWR5PC9saXRlcmFsPiBp cwogICAgICAgIHN3aXRjaGVkIHRvIDxxdW90ZT50cnVlPC9xdW90ZT4gdG8gbWFrZSBpdCByZWFk eSBmb3IgaW5zZXJ0cywgbWFraW5nIGl0CiAgICAgICAgdmlzaWJsZSB0byBvdGhlciBzZXNzaW9u cyBvbmNlIHRoZSB0cmFuc2FjdGlvbiB0aGF0IHBlcmZvcm1lZCB0aGUgYnVpbGQKQEAgLTQwOSw5 ICs0MTYsOSBAQCBSRUlOREVYIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3B0 aW9uPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0geyBEQQogCiAgICAgIDxsaXN0aXRlbT4KICAg ICAgIDxwYXJhPgotICAgICAgIFRoZW4gYSBzZWNvbmQgcGFzcyBpcyBwZXJmb3JtZWQgdG8gYWRk IHR1cGxlcyB0aGF0IHdlcmUgYWRkZWQgd2hpbGUgdGhlCi0gICAgICAgZmlyc3QgcGFzcyB3YXMg cnVubmluZy4gIFRoaXMgc3RlcCBpcyBhbHNvIGRvbmUgaW4gYSBzZXBhcmF0ZQotICAgICAgIHRy YW5zYWN0aW9uIGZvciBlYWNoIGluZGV4LgorICAgICAgIEEgdmFsaWRhdGlvbiBwaGFzZSBtZXJn ZXMgYW55IG1pc3NpbmcgZW50cmllcyBmcm9tIHRoZSBhdXhpbGlhcnkgaW5kZXgKKyAgICAgICBp bnRvIHRoZSBtYWluIGluZGV4LCBlbnN1cmluZyBhbGwgY29uY3VycmVudCBjaGFuZ2VzIGFyZSBj YXB0dXJlZC4KKyAgICAgICBUaGlzIHN0ZXAgaXMgYWxzbyBkb25lIGluIGEgc2VwYXJhdGUgdHJh bnNhY3Rpb24gZm9yIGVhY2ggaW5kZXguCiAgICAgICA8L3BhcmE+CiAgICAgIDwvbGlzdGl0ZW0+ CiAKQEAgLTQyOCw3ICs0MzUsNyBAQCBSRUlOREVYIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+b3B0aW9uPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0geyBEQQogCiAgICAgIDxs aXN0aXRlbT4KICAgICAgIDxwYXJhPgotICAgICAgIFRoZSBvbGQgaW5kZXhlcyBoYXZlIDxsaXRl cmFsPnBnX2luZGV4LmluZGlzcmVhZHk8L2xpdGVyYWw+IHN3aXRjaGVkIHRvCisgICAgICAgVGhl IG9sZCBhbmQgYXV4aWxpYXJ5IGluZGV4ZXMgaGF2ZSA8bGl0ZXJhbD5wZ19pbmRleC5pbmRpc3Jl YWR5PC9saXRlcmFsPiBzd2l0Y2hlZCB0bwogICAgICAgIDxxdW90ZT5mYWxzZTwvcXVvdGU+IHRv IHByZXZlbnQgYW55IG5ldyB0dXBsZSBpbnNlcnRpb25zLCBhZnRlciB3YWl0aW5nCiAgICAgICAg Zm9yIHJ1bm5pbmcgcXVlcmllcyB0aGF0IG1pZ2h0IHJlZmVyZW5jZSB0aGUgb2xkIGluZGV4IHRv IGNvbXBsZXRlLgogICAgICAgPC9wYXJhPgpAQCAtNDM2LDcgKzQ0Myw3IEBAIFJFSU5ERVggWyAo IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAu Li5dICkgXSB7IERBCiAKICAgICAgPGxpc3RpdGVtPgogICAgICAgPHBhcmE+Ci0gICAgICAgVGhl IG9sZCBpbmRleGVzIGFyZSBkcm9wcGVkLiAgVGhlIDxsaXRlcmFsPlNIQVJFIFVQREFURQorICAg ICAgIFRoZSBvbGQgYW5kIGF1eGlsaWFyeSBpbmRleGVzIGFyZSBkcm9wcGVkLiAgVGhlIDxsaXRl cmFsPlNIQVJFIFVQREFURQogICAgICAgIEVYQ0xVU0lWRTwvbGl0ZXJhbD4gc2Vzc2lvbiBsb2Nr cyBmb3IgdGhlIGluZGV4ZXMgYW5kIHRoZSB0YWJsZSBhcmUKICAgICAgICByZWxlYXNlZC4KICAg ICAgIDwvcGFyYT4KQEAgLTQ0NywxMSArNDU0LDExIEBAIFJFSU5ERVggWyAoIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgXSB7IERB CiAgICA8cGFyYT4KICAgICBJZiBhIHByb2JsZW0gYXJpc2VzIHdoaWxlIHJlYnVpbGRpbmcgdGhl IGluZGV4ZXMsIHN1Y2ggYXMgYQogICAgIHVuaXF1ZW5lc3MgdmlvbGF0aW9uIGluIGEgdW5pcXVl IGluZGV4LCB0aGUgPGNvbW1hbmQ+UkVJTkRFWDwvY29tbWFuZD4KLSAgICBjb21tYW5kIHdpbGwg ZmFpbCBidXQgbGVhdmUgYmVoaW5kIGFuIDxxdW90ZT5pbnZhbGlkPC9xdW90ZT4gbmV3IGluZGV4 IGluIGFkZGl0aW9uIHRvCi0gICAgdGhlIHByZS1leGlzdGluZyBvbmUuIFRoaXMgaW5kZXggd2ls bCBiZSBpZ25vcmVkIGZvciBxdWVyeWluZyBwdXJwb3NlcwotICAgIGJlY2F1c2UgaXQgbWlnaHQg YmUgaW5jb21wbGV0ZTsgaG93ZXZlciBpdCB3aWxsIHN0aWxsIGNvbnN1bWUgdXBkYXRlCisgICAg Y29tbWFuZCB3aWxsIGZhaWwgYnV0IGxlYXZlIGJlaGluZCBhbiA8cXVvdGU+aW52YWxpZDwvcXVv dGU+IG5ldyBpbmRleCBhbmQgaXRzIGF1eGlsaWFyeSBpbmRleCBpbiBhZGRpdGlvbiB0bworICAg IHRoZSBwcmUtZXhpc3Rpbmcgb25lLiBUaGVzZSBpbmRleGVzIHdpbGwgYmUgaWdub3JlZCBmb3Ig cXVlcnlpbmcgcHVycG9zZXMKKyAgICBiZWNhdXNlIHRoZXkgbWlnaHQgYmUgaW5jb21wbGV0ZTsg aG93ZXZlciB0aGV5IHdpbGwgc3RpbGwgY29uc3VtZSB1cGRhdGUKICAgICBvdmVyaGVhZC4gVGhl IDxhcHBsaWNhdGlvbj5wc3FsPC9hcHBsaWNhdGlvbj4gPGNvbW1hbmQ+XGQ8L2NvbW1hbmQ+IGNv bW1hbmQgd2lsbCByZXBvcnQKLSAgICBzdWNoIGFuIGluZGV4IGFzIDxsaXRlcmFsPklOVkFMSUQ8 L2xpdGVyYWw+OgorICAgIHN1Y2ggaW5kZXhlcyBhcyA8bGl0ZXJhbD5JTlZBTElEPC9saXRlcmFs PjoKIAogPHByb2dyYW1saXN0aW5nPgogcG9zdGdyZXM9IyBcZCB0YWIKQEAgLTQ2MiwxMiArNDY5 LDE0IEBAIHBvc3RncmVzPSMgXGQgdGFiCiBJbmRleGVzOgogICAgICJpZHgiIGJ0cmVlIChjb2wp CiAgICAgImlkeF9jY25ldyIgYnRyZWUgKGNvbCkgSU5WQUxJRAorICAgICJpZHhfY2NhdXgiIHN0 aXIgKGNvbCkgSU5WQUxJRAorCiA8L3Byb2dyYW1saXN0aW5nPgogCiAgICAgSWYgdGhlIGluZGV4 IG1hcmtlZCA8bGl0ZXJhbD5JTlZBTElEPC9saXRlcmFsPiBpcyBzdWZmaXhlZAotICAgIDxsaXRl cmFsPmNjbmV3PC9saXRlcmFsPiwgdGhlbiBpdCBjb3JyZXNwb25kcyB0byB0aGUgdHJhbnNpZW50 CisgICAgPGxpdGVyYWw+Y2NuZXc8L2xpdGVyYWwgb3IgPGxpdGVyYWw+Y2NhdXg8L2xpdGVyYWw+ LCB0aGVuIGl0IGNvcnJlc3BvbmRzIHRvIHRoZSB0cmFuc2llbnQgb3IgYXV4aWxpYXJ5CiAgICAg aW5kZXggY3JlYXRlZCBkdXJpbmcgdGhlIGNvbmN1cnJlbnQgb3BlcmF0aW9uLCBhbmQgdGhlIHJl Y29tbWVuZGVkCi0gICAgcmVjb3ZlcnkgbWV0aG9kIGlzIHRvIGRyb3AgaXQgdXNpbmcgPGxpdGVy YWw+RFJPUCBJTkRFWDwvbGl0ZXJhbD4sCisgICAgcmVjb3ZlcnkgbWV0aG9kIGlzIHRvIGRyb3Ag dGhlc2UgaW5kZXhlcyB1c2luZyA8bGl0ZXJhbD5EUk9QIElOREVYPC9saXRlcmFsPiwKICAgICB0 aGVuIGF0dGVtcHQgPGNvbW1hbmQ+UkVJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+IGFnYWlu LgogICAgIElmIHRoZSBpbnZhbGlkIGluZGV4IGlzIGluc3RlYWQgc3VmZml4ZWQgPGxpdGVyYWw+ Y2NvbGQ8L2xpdGVyYWw+LAogICAgIGl0IGNvcnJlc3BvbmRzIHRvIHRoZSBvcmlnaW5hbCBpbmRl eCB3aGljaCBjb3VsZCBub3QgYmUgZHJvcHBlZDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL1JFQURNRS5IT1QgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9U CmluZGV4IDgyOWRhZDExOTRlLi5kNDE2MDljOTdjZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvUkVBRE1FLkhPVAorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFE TUUuSE9UCkBAIC0zNzUsNiArMzc1LDExIEBAIGNvbnN0cmFpbnQgb24gd2hpY2ggdXBkYXRlcyBj YW4gYmUgSE9ULiAgT3RoZXIgdHJhbnNhY3Rpb25zIG11c3QgaW5jbHVkZQogc3VjaCBhbiBpbmRl eCB3aGVuIGRldGVybWluaW5nIEhPVC1zYWZldHkgb2YgdXBkYXRlcywgZXZlbiB0aG91Z2ggdGhl eQogbXVzdCBpZ25vcmUgaXQgZm9yIGJvdGggaW5zZXJ0aW9uIGFuZCBzZWFyY2hpbmcgcHVycG9z ZXMuCiAKK0Fsc28sIHNwZWNpYWwgYXV4aWxpYXJ5IGluZGV4IGlzIGNyZWF0ZWQgdGhlIHNhbWUg d2F5LiBJdCBtYXJrZWQgYXMKKyJyZWFkeSBmb3IgaW5zZXJ0cyIgd2l0aG91dCBhbnkgYWN0dWFs IHRhYmxlIHNjYW4uIEl0cyBwdXJwb3NlIGlzIGNvbGxlY3QKK25ldyB0dXBsZXMgaW5zZXJ0ZWQg aW50byB0YWJsZSB3aGlsZSBvdXIgdGFyZ2V0IGluZGV4IGlzIHN0aWxsICJub3QgcmVhZHkKK2Zv ciBpbnNlcnRzIgorCiBXZSBtdXN0IGRvIHRoaXMgdG8gYXZvaWQgbWFraW5nIGluY29ycmVjdCBp bmRleCBlbnRyaWVzLiAgRm9yIGV4YW1wbGUsCiBzdXBwb3NlIHdlIGFyZSBidWlsZGluZyBhbiBp bmRleCBvbiBjb2x1bW4gWCBhbmQgd2UgbWFrZSBhbiBpbmRleCBlbnRyeSBmb3IKIGEgbm9uLUhP VCB0dXBsZSB3aXRoIFg9MS4gIFRoZW4gc29tZSBvdGhlciBiYWNrZW5kLCB1bmF3YXJlIHRoYXQg WCBpcyBhbgpAQCAtMzk0LDE0ICszOTksMTQgQEAgQXMgYWJvdmUsIHdlIHBvaW50IHRoZSBpbmRl eCBlbnRyeSBhdCB0aGUgcm9vdCBvZiB0aGUgSE9ULXVwZGF0ZSBjaGFpbiBidXQgd2UKIHVzZSB0 aGUga2V5IHZhbHVlIGZyb20gdGhlIGxpdmUgdHVwbGUuCiAKIFdlIG1hcmsgdGhlIGluZGV4IG9w ZW4gZm9yIGluc2VydHMgKGJ1dCBzdGlsbCBub3QgcmVhZHkgZm9yIHJlYWRzKSB0aGVuCi13ZSBh Z2FpbiB3YWl0IGZvciB0cmFuc2FjdGlvbnMgd2hpY2ggaGF2ZSB0aGUgdGFibGUgb3Blbi4gIFRo ZW4gd2UgdGFrZQotYSBzZWNvbmQgcmVmZXJlbmNlIHNuYXBzaG90IGFuZCB2YWxpZGF0ZSB0aGUg aW5kZXguICBUaGlzIHNlYXJjaGVzIGZvcgotdHVwbGVzIG1pc3NpbmcgZnJvbSB0aGUgaW5kZXgs IGFuZCBpbnNlcnRzIGFueSBtaXNzaW5nIG9uZXMuICBBZ2FpbiwKLXRoZSBpbmRleCBlbnRyaWVz IGhhdmUgdG8gaGF2ZSBUSURzIGVxdWFsIHRvIEhPVC1jaGFpbiByb290IFRJRHMsIGJ1dAord2Ug YWdhaW4gd2FpdCBmb3IgdHJhbnNhY3Rpb25zIHdoaWNoIGhhdmUgdGhlIHRhYmxlIG9wZW4uICBU aGVuIHZhbGlkYXRlCit0aGUgaW5kZXguICBUaGlzIHNlYXJjaGVzIGZvciB0dXBsZXMgbWlzc2lu ZyBmcm9tIHRoZSBpbmRleCBpbiBhdXhpbGlhcnkKK2luZGV4LCBhbmQgaW5zZXJ0cyBhbnkgbWlz c2luZyBvbmVzIGlmIHRoZW0gdmlzaWJsZSB0byBmcmVzaCBzbmFwc2hvdC4KK0FnYWluLCB0aGUg aW5kZXggZW50cmllcyBoYXZlIHRvIGhhdmUgVElEcyBlcXVhbCB0byBIT1QtY2hhaW4gcm9vdCBU SURzLCBidXQKIHRoZSB2YWx1ZSB0byBiZSBpbnNlcnRlZCBpcyB0aGUgb25lIGZyb20gdGhlIGxp dmUgdHVwbGUuCiAKIFRoZW4gd2Ugd2FpdCB1bnRpbCBldmVyeSB0cmFuc2FjdGlvbiB0aGF0IGNv dWxkIGhhdmUgYSBzbmFwc2hvdCBvbGRlciB0aGFuCi10aGUgc2Vjb25kIHJlZmVyZW5jZSBzbmFw c2hvdCBpcyBmaW5pc2hlZC4gIFRoaXMgZW5zdXJlcyB0aGF0IG5vYm9keSBpcwordGhlIGxhdGVz dCB1c2VkIHNuYXBzaG90IGlzIGZpbmlzaGVkLiAgVGhpcyBlbnN1cmVzIHRoYXQgbm9ib2R5IGlz CiBhbGl2ZSBhbnkgbG9uZ2VyIHdobyBjb3VsZCBuZWVkIHRvIHNlZSBhbnkgdHVwbGVzIHRoYXQg bWlnaHQgYmUgbWlzc2luZwogZnJvbSB0aGUgaW5kZXgsIGFzIHdlbGwgYXMgZW5zdXJpbmcgdGhh dCBubyBvbmUgY2FuIHNlZSBhbnkgaW5jb25zaXN0ZW50CiByb3dzIGluIGEgYnJva2VuIEhPVCBj aGFpbiAodGhlIGZpcnN0IGNvbmRpdGlvbiBpcyBzdHJvbmdlciB0aGFuIHRoZQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKaW5kZXggMGVhYTRkZjU1ODIuLjE1NmM0Mjlj MWFmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTQxLDYg KzQxLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2J1ZnBhZ2UuaCIKICNpbmNsdWRlICJzdG9yYWdl L2xtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3ByZWRpY2F0ZS5oIgorI2luY2x1ZGUgInN0b3Jh Z2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9zbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKQEAgLTE3ODEsMjQ2ICsx NzgyLDQ1MSBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFwUmVs YXRpb24sCiAJcmV0dXJuIHJlbHR1cGxlczsKIH0KIAotc3RhdGljIHZvaWQKKy8qCisgKiBDYWxj dWxhdGUgc2V0IGRpZmZlcmVuY2UgKHJlbGF0aXZlIGNvbXBsZW1lbnQpIG9mIG1haW4gYW5kIGF1 eAorICogc2V0cy4KKyAqCisgKiBBbGwgcmVjb3JkcyB3aGljaCBhcmUgcHJlc2VudCBpbiBhdXhs aWFyeSB0dXBsZXNvcnQgYnV0IG5vdCBpcworICogbWFpbiBhcmUgYWRkZWQgdG8gdGhlIHN0b3Jl LgorICoKKyAqIEluIHNldCB0aGVvcnkgbm90YXRpb24gc3RvcmUgPSBhdXggLSBtYWluIG9yIHN0 b3JlID0gYXV4IC8gbWFpbi4KKyAqCisgKiByZXR1cm5zIG51bWJlciBvZiBpdGVtcyBhZGRlZCB0 byBzdG9yZQorICovCitzdGF0aWMgaW50CitoZWFwYW1faW5kZXhfdmFsaWRhdGVfdHVwbGVzb3J0 X2RpZmZlcmVuY2UoVHVwbGVzb3J0c3RhdGUgICptYWluLAorCQkJCQkJCQkJCSAgIFR1cGxlc29y dHN0YXRlICAqYXV4LAorCQkJCQkJCQkJCSAgIFR1cGxlc3RvcmVzdGF0ZSAqc3RvcmUpCit7CisJ aW50CQkJCW51bSA9IDA7CisJLyogc3RhdGUgdmFyaWFibGVzIGZvciB0aGUgbWVyZ2UgKi8KKwlJ dGVtUG9pbnRlciAJaW5kZXhjdXJzb3IgPSBOVUxMLAorCQkJCQlhdXhpbmRleGN1cnNvciA9IE5V TEw7CisJSXRlbVBvaW50ZXJEYXRhIGRlY29kZWQsCisJCQkJCWF1eGRlY29kZWQ7CisJYm9vbAkJ CXR1cGxlc29ydF9lbXB0eSA9IGZhbHNlLAorCQkJCQlhdXh0dXBsZXNvcnRfZW1wdHkgPSBmYWxz ZTsKKworCS8qIEluaXRpYWxpemUgcG9pbnRlcnMuICovCisJSXRlbVBvaW50ZXJTZXRJbnZhbGlk KCZkZWNvZGVkKTsKKwlJdGVtUG9pbnRlclNldEludmFsaWQoJmF1eGRlY29kZWQpOworCisJLyoK KwkgKiBNYWluIGxvb3A6IHdlIHN0ZXAgdGhyb3VnaCB0aGUgYXV4aWxpYXJ5IHNvcnQgKGF1eFN0 YXRlLT50dXBsZXNvcnQpLAorCSAqIHdoaWNoIGhvbGRzIFRJRHMgdGhhdCBtdXN0IGNvbXBhcmVk IHRvIHRob3NlIGZyb20gdGhlICJtYWluIiBzb3J0CisJICogKHN0YXRlLT50dXBsZXNvcnQpLgor CSAqLworCXdoaWxlICghYXV4dHVwbGVzb3J0X2VtcHR5KQorCXsKKwkJRGF0dW0JCXRzX3ZhbDsK KwkJYm9vbAkJdHNfaXNudWxsOworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCS8qCisJ CSogQXR0ZW1wdCB0byBmZXRjaCB0aGUgbmV4dCBUSUQgZnJvbSB0aGUgYXV4aWxpYXJ5IHNvcnQu IElmIGl0J3MKKwkJKiBlbXB0eSwgd2Ugc2V0IGF1eGluZGV4Y3Vyc29yIHRvIE5VTEwuCisJCSov CisJCWF1eHR1cGxlc29ydF9lbXB0eSA9ICF0dXBsZXNvcnRfZ2V0ZGF0dW0oYXV4LCB0cnVlLAor CQkJCQkJCQkJCQkJIGZhbHNlLCAmdHNfdmFsLCAmdHNfaXNudWxsLAorCQkJCQkJCQkJCQkJIE5V TEwpOworCQlBc3NlcnQoYXV4dHVwbGVzb3J0X2VtcHR5IHx8ICF0c19pc251bGwpOworCQlpZiAo IWF1eHR1cGxlc29ydF9lbXB0eSkKKwkJeworCQkJaXRlbXB0cl9kZWNvZGUoJmF1eGRlY29kZWQs IERhdHVtR2V0SW50NjQodHNfdmFsKSk7CisJCQlhdXhpbmRleGN1cnNvciA9ICZhdXhkZWNvZGVk OworCQl9CisJCWVsc2UKKwkJeworCQkJYXV4aW5kZXhjdXJzb3IgPSBOVUxMOworCQl9CisKKwkJ LyoKKwkJKiBJZiB0aGUgYXV4aWxpYXJ5IHNvcnQgaXMgbm90IHlldCBlbXB0eSwgd2Ugbm93IHRy eSB0byBzeW5jaHJvbml6ZQorCQkqIHRoZSAibWFpbiIgc29ydCBjdXJzb3IgKGluZGV4Y3Vyc29y KSB3aXRoIGF1eGluZGV4Y3Vyc29yLiBXZSBhZHZhbmNlCisJCSogdGhlIG1haW4gc29ydCBjdXJz b3IgdW50aWwgd2UndmUgcmVhY2hlZCBvciBwYXNzZWQgdGhlIGF1eGlsaWFyeSBUSUQuCisJCSov CisJCWlmICghYXV4dHVwbGVzb3J0X2VtcHR5KQorCQl7CisJCQkvKgorCQkJICogTW92ZSB0aGUg bWFpbiBzb3J0IGZvcndhcmQgd2hpbGU6CisJCQkgKiAgICgxKSBJdCdzIG5vdCBleGhhdXN0ZWQg KHR1cGxlc29ydF9lbXB0eSA9PSBmYWxzZSksIGFuZAorCQkJICogICAoMikgRWl0aGVyIGluZGV4 Y3Vyc29yIGlzIE5VTEwgKGZpcnN0IGl0ZXJhdGlvbikgb3IKKwkJCSAqICAgICAgIGluZGV4Y3Vy c29yIDwgYXV4aW5kZXhjdXJzb3IgaW4gVElEIG9yZGVyLgorCQkJICovCisJCQl3aGlsZSAoIXR1 cGxlc29ydF9lbXB0eSAmJiAoaW5kZXhjdXJzb3IgPT0gTlVMTCB8fCAvKiBudWxsIG9uIGZpcnN0 IHRpbWUgaGVyZSAqLworCQkJCQkJSXRlbVBvaW50ZXJDb21wYXJlKGluZGV4Y3Vyc29yLCBhdXhp bmRleGN1cnNvcikgPCAwKSkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIEdldCB0aGUgbmV4dCBUSUQg ZnJvbSB0aGUgbWFpbiBzb3J0LiBJZiBpdCdzIGVtcHR5LAorCQkJCSAqIHdlIHNldCBpbmRleGN1 cnNvciB0byBOVUxMLgorCQkJCSAqLworCQkJCXR1cGxlc29ydF9lbXB0eSA9ICF0dXBsZXNvcnRf Z2V0ZGF0dW0obWFpbiwgdHJ1ZSwKKwkJCQkJCQkJCQkJCQkgIGZhbHNlLCAmdHNfdmFsLCAmdHNf aXNudWxsLAorCQkJCQkJCQkJCQkJCSAgTlVMTCk7CisJCQkJQXNzZXJ0KHR1cGxlc29ydF9lbXB0 eSB8fCAhdHNfaXNudWxsKTsKKworCQkJCWlmICghdHVwbGVzb3J0X2VtcHR5KQorCQkJCXsKKwkJ CQkJaXRlbXB0cl9kZWNvZGUoJmRlY29kZWQsIERhdHVtR2V0SW50NjQodHNfdmFsKSk7CisJCQkJ CWluZGV4Y3Vyc29yID0gJmRlY29kZWQ7CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCWlu ZGV4Y3Vyc29yID0gTlVMTDsKKwkJCQl9CisKKwkJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwor CQkJfQorCisJCQkvKgorCQkJICogTm93LCBpZiBlaXRoZXI6CisJCQkgKiAgLSB0aGUgbWFpbiBz b3J0IGlzIGVtcHR5LCBvcgorCQkJICogIC0gaW5kZXhjdXJzb3IgPiBhdXhpbmRleGN1cnNvciwK KwkJCSAqCisJCQkgKiB0aGVuIGF1eGluZGV4Y3Vyc29yIGlkZW50aWZpZXMgYSBUSUQgdGhhdCBk b2Vzbid0IGFwcGVhciBpbgorCQkJICogdGhlIG1haW4gc29ydC4gV2UgbGlrZWx5IG5lZWQgdG8g aW5zZXJ0IGl0CisJCQkgKiBpbnRvIHRoZSB0YXJnZXQgaW5kZXggaWYgaXTigJlzIHZpc2libGUg aW4gdGhlIGhlYXAuCisJCQkgKi8KKwkJCWlmICh0dXBsZXNvcnRfZW1wdHkgfHwgSXRlbVBvaW50 ZXJDb21wYXJlKGluZGV4Y3Vyc29yLCBhdXhpbmRleGN1cnNvcikgPiAwKQorCQkJeworCQkJCXR1 cGxlc3RvcmVfcHV0ZGF0dW0oc3RvcmUsIEludDY0R2V0RGF0dW0oaXRlbXB0cl9lbmNvZGUoYXV4 aW5kZXhjdXJzb3IpKSk7CisJCQkJbnVtKys7CisJCQl9CisJCX0KKwl9CisKKwlyZXR1cm4gbnVt OworfQorCit0eXBlZGVmIHN0cnVjdCBWYWxpZGF0ZUluZGV4U2NhblN0YXRlCit7CisJVHVwbGVz dG9yZXN0YXRlCQkqc3RvcmU7CisJQmxvY2tOdW1iZXIJCQlwcmV2X2Jsb2NrX251bWJlcjsKKwlP ZmZzZXROdW1iZXIJCXByZXZfb2ZmX29mZnNldF9udW1iZXI7Cit9IFZhbGlkYXRlSW5kZXhTY2Fu U3RhdGU7CisKKy8qCisgKiBUaGlzIGlzIFJlYWRTdHJlYW1CbG9ja051bWJlckNCIGltcGxlbWVu dGF0aW9uIHdoaWNoIHdvcmtzIGFzIGZvbGxvd3M6CisgKgorICogMSkgSXQgaXRlcmF0ZXMgb3Zl ciBhIHNvcnRlZCB0dXBsZXN0b3JlLCB3aGVyZSBlYWNoIGVsZW1lbnQgaXMgYW4gZW5jb2RlZAor ICogICAgSXRlbVBvaW50ZXIKKyAqCisgKiAyKSBJdCByZXR1cm5zIHRoZSBjdXJyZW50IEJsb2Nr TnVtYmVyIGFuZCBjb2xsZWN0cyBhbGwgT2Zmc2V0TnVtYmVycworICogICAgZm9yIHRoYXQgYmxv Y2sgaW4gcGVyX2J1ZmZlcl9kYXRhLgorICoKKyAqIDMpIE9uY2UgdGhlIGNvZGUgZW5jb3VudGVy cyBhIG5ldyBCbG9ja051bWJlciwgaXQgc3RvcHMgcmVhZGluZyBtb3JlCisgKiAgICBvZmZzZXRz IGFuZCBzYXZlcyB0aGUgT2Zmc2V0TnVtYmVyIG9mIHRoZSBuZXcgYmxvY2sgZm9yIHRoZSBuZXh0 IGNhbGwuCisgKgorICogNCkgVGhlIGxpc3Qgb2Ygb2Zmc2V0cyBmb3IgYSBibG9jayBpcyBhbHdh eXMgdGVybWluYXRlZCB3aXRoIEludmFsaWRPZmZzZXROdW1iZXIuCisgKgorICogVGhpcyBmdW5j dGlvbiBpcyBpbnRlbmRlZCB0byBiZSByZXBlYXRlZGx5IGNhbGxlZCwgZWFjaCB0aW1lIHJldHVy bmluZworICogdGhlIG5leHQgYmxvY2sgYW5kIGl0cyBjb3JyZXNwb25kaW5nIHNldCBvZiBvZmZz ZXRzLgorICovCitzdGF0aWMgQmxvY2tOdW1iZXIKK2hlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2Fu X3JlYWRfc3RyZWFtX25leHQoCisJCQkJCQkJCSAgUmVhZFN0cmVhbSAqc3RyZWFtLAorCQkJCQkJ CQkgIHZvaWQgKnZvaWRfY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLAorCQkJCQkJCQkgIHZvaWQgKnZv aWRfcGVyX2J1ZmZlcl9kYXRhCisJCQkJCQkJCSAgKQoreworCWJvb2wgc2hvdWRfZnJlZTsKKwlE YXR1bSBkYXR1bTsKKwlCbG9ja051bWJlciByZXN1bHQgPSBJbnZhbGlkQmxvY2tOdW1iZXI7CisJ aW50IGkgPSAwOworCisJLyoKKwkgKiBSZXRyaWV2ZSB0aGUgc3BlY2lhbGl6ZWQgY2FsbGJhY2sg c3RhdGUgYW5kIHRoZSBvdXRwdXQgYnVmZmVyLgorCSAqIGNhbGxiYWNrX3ByaXZhdGVfZGF0YSBr ZWVwcyB0cmFjayBvZiB0aGUgcHJldmlvdXMgYmxvY2sgYW5kIG9mZnNldAorCSAqIGZyb20gYSBw cmlvciBpbnZvY2F0aW9uLCBpZiBhbnkuCisJICovCisJVmFsaWRhdGVJbmRleFNjYW5TdGF0ZSAq Y2FsbGJhY2tfcHJpdmF0ZV9kYXRhID0gdm9pZF9jYWxsYmFja19wcml2YXRlX2RhdGE7CisJT2Zm c2V0TnVtYmVyICpwZXJfYnVmZmVyX2RhdGEgPSB2b2lkX3Blcl9idWZmZXJfZGF0YTsKKworCS8q CisJICogSWYgdGhlcmUgaXMgYSAibGVmdG92ZXIiIG9mZnNldCBudW1iZXIgZnJvbSB0aGUgcHJl dmlvdXMgaW52b2NhdGlvbiwKKwkgKiBpdCBtZWFucyB3ZSBoYWQgc3dpdGNoZWQgdG8gYSBuZXcg YmxvY2sgaW4gdGhlIG1pZGRsZSBvZiB0aGUgbGFzdCBjYWxsLgorCSAqIFdlIHBsYWNlIHRoYXQg bGVmdG92ZXIgb2Zmc2V0IG51bWJlciBpbnRvIHRoZSBidWZmZXIgZmlyc3QuCisJICovCisJaWYg KGNhbGxiYWNrX3ByaXZhdGVfZGF0YS0+cHJldl9vZmZfb2Zmc2V0X251bWJlciAhPSBJbnZhbGlk T2Zmc2V0TnVtYmVyKQorCXsKKwkJQXNzZXJ0KGNhbGxiYWNrX3ByaXZhdGVfZGF0YS0+cHJldl9i bG9ja19udW1iZXIgIT0gSW52YWxpZEJsb2NrTnVtYmVyKTsKKwkJLyoKKwkJICogJ3Jlc3VsdCcg aXMgdGhlIGJsb2NrIG51bWJlciB0byByZXR1cm4uIFdlIHNldCBpdCB0byB0aGUgYmxvY2sKKwkJ ICogZnJvbSB0aGUgcHJldmlvdXMgbGVmdG92ZXIgb2Zmc2V0LgorCQkgKi8KKwkJcmVzdWx0ID0g Y2FsbGJhY2tfcHJpdmF0ZV9kYXRhLT5wcmV2X2Jsb2NrX251bWJlcjsKKwkJLyogUGxhY2UgbGVm dG92ZXIgb2Zmc2V0IG51bWJlciBpbiB0aGUgb3V0cHV0IGJ1ZmZlci4gKi8KKwkJcGVyX2J1ZmZl cl9kYXRhW2krK10gPSBjYWxsYmFja19wcml2YXRlX2RhdGEtPnByZXZfb2ZmX29mZnNldF9udW1i ZXI7CisJCS8qCisJCSAqIENsZWFyIHRoZSBsZWZ0b3ZlciBvZmZzZXQgbnVtYmVyIHNvIGl0IHdv bid0IGJlIHJldXNlZCB1bmxlc3MKKwkJICogd2UgZW5jb3VudGVyIGFub3RoZXIgYmxvY2sgY2hh bmdlLgorCQkgKi8KKwkJY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLT5wcmV2X29mZl9vZmZzZXRfbnVt YmVyID0gSW52YWxpZE9mZnNldE51bWJlcjsKKwl9CisKKwkvKgorCSAqIFJlYWQgZnJvbSB0aGUg dHVwbGVzdG9yZSB1bnRpbCB3ZSBlaXRoZXIgcnVuIG91dCBvZiB0dXBsZXMgb3Igd2UKKwkgKiBl bmNvdW50ZXIgYSBibG9jayBjaGFuZ2UuIEZvciBlYWNoIHR1cGxlOgorCSAqCisJICogICAxKSBE ZWNvZGUgaXRzIGJsb2NrL29mZnNldCBmcm9tIHRoZSBEYXR1bS4KKwkgKiAgIDIpIElmIGl0J3Mg dGhlIGZpcnN0IHRpbWUgaW4gdGhpcyBjYWxsIChwcmV2X2Jsb2NrX251bWJlciA9PSBJbnZhbGlk QmxvY2tOdW1iZXIpLAorCSAqICAgICAgaW5pdGlhbGl6ZSBwcmV2X2Jsb2NrX251bWJlci4KKwkg KiAgIDMpIElmIHRoZSBibG9jayBudW1iZXIgbWF0Y2hlcyB0aGUgY3VycmVudCBibG9jaywgY29s bGVjdCB0aGUgb2Zmc2V0LgorCSAqICAgNCkgSWYgdGhlIGJsb2NrIG51bWJlciBkaWZmZXJzLCBz YXZlIHRoYXQgb2Zmc2V0IGFzIGxlZnRvdmVyIGFuZCBicmVhaworCSAqICAgICAgc28gdGhhdCB0 aGUgbmV4dCBjYWxsIGNhbiBoYW5kbGUgdGhlIG5ldyBibG9jay4KKwkgKi8KKwl3aGlsZSAodHVw bGVzdG9yZV9nZXRkYXR1bShjYWxsYmFja19wcml2YXRlX2RhdGEtPnN0b3JlLCB0cnVlLCAmc2hv dWRfZnJlZSwgJmRhdHVtKSkKKwl7CisJCUJsb2NrTnVtYmVyIG5leHRfYmxvY2tfbnVtYmVyOwor CQlJdGVtUG9pbnRlckRhdGEgbmV4dF9kYXRhOworCisJCS8qIERlY29kZSB0aGUgZGF0dW0gaW50 byBhbiBJdGVtUG9pbnRlciAoYmxvY2sgKyBvZmZzZXQpLiAqLworCQlpdGVtcHRyX2RlY29kZSgm bmV4dF9kYXRhLCBEYXR1bUdldEludDY0KGRhdHVtKSk7CisJCW5leHRfYmxvY2tfbnVtYmVyID0g SXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcigmbmV4dF9kYXRhKTsKKworCQkvKgorCQkgKiBJZiB3 ZSBoYXZlbid0IHNldCBhIGJsb2NrIG51bWJlciB5ZXQgdGhpcyByb3VuZCwgaW5pdGlhbGl6ZSBp dAorCQkgKiB1c2luZyB0aGUgZmlyc3QgdHVwbGUgd2UgcmVhZC4KKwkJICovCisJCWlmIChjYWxs YmFja19wcml2YXRlX2RhdGEtPnByZXZfYmxvY2tfbnVtYmVyID09IEludmFsaWRCbG9ja051bWJl cikKKwkJCWNhbGxiYWNrX3ByaXZhdGVfZGF0YS0+cHJldl9ibG9ja19udW1iZXIgPSBuZXh0X2Js b2NrX251bWJlcjsKKworCQkvKgorCQkgKiBBbHdheXMgc2V0IHRoZSByZXN1bHQgdG8gYmUgdGhl ICJjdXJyZW50IiBibG9jayBudW1iZXIKKwkJICogd2UgYXJlIGZpbGxpbmcgb2Zmc2V0cyBmb3Iu CisJCSAqLworCQlyZXN1bHQgPSBjYWxsYmFja19wcml2YXRlX2RhdGEtPnByZXZfYmxvY2tfbnVt YmVyOworCisJCS8qCisJCSAqIElmIHRoaXMgdHVwbGUgaXMgZnJvbSB0aGUgc2FtZSBibG9jaywg anVzdCBzdG9yZSBpdHMgb2Zmc2V0CisJCSAqIGluIG91ciBwZXJfYnVmZmVyX2RhdGEgYXJyYXku CisJCSAqLworCQlpZiAobmV4dF9ibG9ja19udW1iZXIgPT0gY2FsbGJhY2tfcHJpdmF0ZV9kYXRh LT5wcmV2X2Jsb2NrX251bWJlcikKKwkJeworCQkJcGVyX2J1ZmZlcl9kYXRhW2krK10gPSBJdGVt UG9pbnRlckdldE9mZnNldE51bWJlcigmbmV4dF9kYXRhKTsKKworCQkJLyogRnJlZSB0aGUgZGF0 dW0gaWYgbmVlZGVkLiAqLworCQkJaWYgKHNob3VkX2ZyZWUpCisJCQkJcGZyZWUoRGF0dW1HZXRQ b2ludGVyKGRhdHVtKSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJICogSWYgdGhlIGJs b2NrIGp1c3QgY2hhbmdlZCwgc3RvcmUgdGhlIG9mZnNldCBvZiB0aGUgbmV3IGJsb2NrCisJCQkg KiBhcyBsZWZ0b3ZlciBmb3IgdGhlIG5leHQgaW52b2NhdGlvbiBhbmQgYnJlYWsgb3V0LgorCQkJ ICovCisJCQljYWxsYmFja19wcml2YXRlX2RhdGEtPnByZXZfYmxvY2tfbnVtYmVyID0gbmV4dF9i bG9ja19udW1iZXI7CisJCQljYWxsYmFja19wcml2YXRlX2RhdGEtPnByZXZfb2ZmX29mZnNldF9u dW1iZXIgPSAgSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIoJm5leHRfZGF0YSk7CisKKwkJCS8q IEZyZWUgdGhlIGRhdHVtIGlmIG5lZWRlZC4gKi8KKwkJCWlmIChzaG91ZF9mcmVlKQorCQkJCXBm cmVlKERhdHVtR2V0UG9pbnRlcihkYXR1bSkpOworCisJCQkvKiBCcmVhayB0byBsZXQgdGhlIG5l eHQgY2FsbCBoYW5kbGUgdGhlIG5ldyBibG9jay4gKi8KKwkJCWJyZWFrOworCQl9CisJfQorCisJ LyoKKwkgKiBUZXJtaW5hdGUgdGhlIGxpc3Qgb2Ygb2Zmc2V0cyBmb3IgdGhpcyBibG9jayB3aXRo IGFuIEludmFsaWRPZmZzZXROdW1iZXIuCisJICovCisJcGVyX2J1ZmZlcl9kYXRhW2ldID0gSW52 YWxpZE9mZnNldE51bWJlcjsKKwlyZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgVHJhbnNhY3Rp b25JZAogaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAog CQkJCQkJICAgUmVsYXRpb24gaW5kZXhSZWxhdGlvbiwKIAkJCQkJCSAgIEluZGV4SW5mbyAqaW5k ZXhJbmZvLAotCQkJCQkJICAgU25hcHNob3Qgc25hcHNob3QsCi0JCQkJCQkgICBWYWxpZGF0ZUlu ZGV4U3RhdGUgKnN0YXRlKQorCQkJCQkJICAgVmFsaWRhdGVJbmRleFN0YXRlICpzdGF0ZSwKKwkJ CQkJCSAgIFZhbGlkYXRlSW5kZXhTdGF0ZSAqYXV4U3RhdGUpCiB7Ci0JVGFibGVTY2FuRGVzYyBz Y2FuOwotCUhlYXBTY2FuRGVzYyBoc2NhbjsKLQlIZWFwVHVwbGUJaGVhcFR1cGxlOworCVRyYW5z YWN0aW9uSWQgbGltaXRYbWluOworCiAJRGF0dW0JCXZhbHVlc1tJTkRFWF9NQVhfS0VZU107CiAJ Ym9vbAkJaXNudWxsW0lOREVYX01BWF9LRVlTXTsKLQlFeHByU3RhdGUgICpwcmVkaWNhdGU7Ci0J VHVwbGVUYWJsZVNsb3QgKnNsb3Q7Ci0JRVN0YXRlCSAgICplc3RhdGU7Ci0JRXhwckNvbnRleHQg KmVjb250ZXh0OwotCUJsb2NrTnVtYmVyIHJvb3RfYmxrbm8gPSBJbnZhbGlkQmxvY2tOdW1iZXI7 Ci0JT2Zmc2V0TnVtYmVyIHJvb3Rfb2Zmc2V0c1tNYXhIZWFwVHVwbGVzUGVyUGFnZV07Ci0JYm9v bAkJaW5faW5kZXhbTWF4SGVhcFR1cGxlc1BlclBhZ2VdOwotCUJsb2NrTnVtYmVyIHByZXZpb3Vz X2Jsa25vID0gSW52YWxpZEJsb2NrTnVtYmVyOwotCi0JLyogc3RhdGUgdmFyaWFibGVzIGZvciB0 aGUgbWVyZ2UgKi8KLQlJdGVtUG9pbnRlciBpbmRleGN1cnNvciA9IE5VTEw7Ci0JSXRlbVBvaW50 ZXJEYXRhIGRlY29kZWQ7Ci0JYm9vbAkJdHVwbGVzb3J0X2VtcHR5ID0gZmFsc2U7CisKKwlTbmFw c2hvdAkJc25hcHNob3Q7CisJVHVwbGVUYWJsZVNsb3QgICpzbG90OworCUVTdGF0ZQkJCSplc3Rh dGU7CisJRXhwckNvbnRleHQJCSplY29udGV4dDsKKwlCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3Ry YXRlZ3kgPSBHZXRBY2Nlc3NTdHJhdGVneShCQVNfQlVMS1JFQUQpOworCisJaW50CQkJCW51bV90 b19jaGVjazsKKwlUdXBsZXN0b3Jlc3RhdGUgKnR1cGxlc19mb3JfY2hlY2s7CisJVmFsaWRhdGVJ bmRleFNjYW5TdGF0ZSBjYWxsYmFja19wcml2YXRlX2RhdGE7CisKKwlCdWZmZXIgYnVmOworCU9m ZnNldE51bWJlciogdHVwbGVzOworCVJlYWRTdHJlYW0gKnJlYWRfc3RyZWFtOworCisJLyogVXNl IDEwJSBvZiBtZW1vcnkgZm9yIHR1cGxlIHN0b3JlLiAqLworCWludAkJc3RvcmVfd29ya19tZW1f cGFydCA9IG1haW50ZW5hbmNlX3dvcmtfbWVtIC8gMTA7CisKKwkvKgorCSAqIE5vdyB0YWtlIHRo ZSBzbmFwc2hvdCB0aGF0IHdpbGwgYmUgdXNlZCBieSB0byBmaWx0ZXIgY2FuZGlkYXRlCisJICog dHVwbGVzLgorCSAqCisJICogQmV3YXJlISAgVGhlcmUgbWlnaHQgc3RpbGwgYmUgc25hcHNob3Rz IGluIHVzZSB0aGF0IHRyZWF0IHNvbWUgdHJhbnNhY3Rpb24KKwkgKiBhcyBpbi1wcm9ncmVzcyB0 aGF0IG91ciB0ZW1wb3Jhcnkgc25hcHNob3QgdHJlYXRzIGFzIGNvbW1pdHRlZC4KKwkgKgorCSAq IElmIHN1Y2ggYSByZWNlbnRseS1jb21taXR0ZWQgdHJhbnNhY3Rpb24gZGVsZXRlZCB0dXBsZXMg aW4gdGhlIHRhYmxlLAorCSAqIHdlIHdpbGwgbm90IGluY2x1ZGUgdGhlbSBpbiB0aGUgaW5kZXg7 IHlldCB0aG9zZSB0cmFuc2FjdGlvbnMgd2hpY2gKKwkgKiBzZWUgdGhlIGRlbGV0aW5nIG9uZSBh cyBzdGlsbC1pbi1wcm9ncmVzcyB3aWxsIGV4cGVjdCBzdWNoIHR1cGxlcyB0bworCSAqIGJlIHRo ZXJlIG9uY2Ugd2UgbWFyayB0aGUgaW5kZXggYXMgdmFsaWQuCisJICoKKwkgKiBXZSBzb2x2ZSB0 aGlzIGJ5IHdhaXRpbmcgZm9yIGFsbCBlbmRhbmdlcmVkIHRyYW5zYWN0aW9ucyB0byBleGl0IGJl Zm9yZQorCSAqIHdlIG1hcmsgdGhlIGluZGV4IGFzIHZhbGlkLCBmb3IgdGhhdCByZWFzb24gbGlt aXRYbWluIGlzIHN1cHBvcnRlZC4KKwkgKgorCSAqIFdlIGFsc28gc2V0IEFjdGl2ZVNuYXBzaG90 IHRvIHRoaXMgc25hcCwgc2luY2UgZnVuY3Rpb25zIGluIGluZGV4ZXMgbWF5CisJICogbmVlZCBh IHNuYXBzaG90LgorCSAqLworCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2Fj dGlvblNuYXBzaG90KCkpOworCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7CisJbGltaXRY bWluID0gc25hcHNob3QtPnhtaW47CisKKwkvKgorCSAqIEVuY29kZSBUSURzIGFzIGludDggdmFs dWVzIGZvciB0aGUgc29ydCwgcmF0aGVyIHRoYW4gZGlyZWN0bHkgc29ydGluZworCSAqIGl0ZW0g cG9pbnRlcnMuICBUaGlzIGNhbiBiZSBzaWduaWZpY2FudGx5IGZhc3RlciwgcHJpbWFyaWx5IGJl Y2F1c2UgVElECisJICogaXMgYSBwYXNzLWJ5LXJlZmVyZW5jZSB0eXBlIG9uIGFsbCBwbGF0Zm9y bXMsIHdoZXJlYXMgaW50OCBpcworCSAqIHBhc3MtYnktdmFsdWUgb24gbW9zdCBwbGF0Zm9ybXMu CisJICovCisJdHVwbGVzX2Zvcl9jaGVjayA9ICB0dXBsZXN0b3JlX2JlZ2luX2RhdHVtKElOVDhP SUQsIGZhbHNlLCBmYWxzZSwgc3RvcmVfd29ya19tZW1fcGFydCk7CiAKIAkvKgogCSAqIHNhbml0 eSBjaGVja3MKIAkgKi8KIAlBc3NlcnQoT2lkSXNWYWxpZChpbmRleFJlbGF0aW9uLT5yZF9yZWwt PnJlbGFtKSk7CiAKLQkvKgotCSAqIE5lZWQgYW4gRVN0YXRlIGZvciBldmFsdWF0aW9uIG9mIGlu ZGV4IGV4cHJlc3Npb25zIGFuZCBwYXJ0aWFsLWluZGV4Ci0JICogcHJlZGljYXRlcy4gIEFsc28g YSBzbG90IHRvIGhvbGQgdGhlIGN1cnJlbnQgdHVwbGUuCi0JICovCisJbnVtX3RvX2NoZWNrID0g aGVhcGFtX2luZGV4X3ZhbGlkYXRlX3R1cGxlc29ydF9kaWZmZXJlbmNlKHN0YXRlLT50dXBsZXNv cnQsCisJCQkJCQkJCQkJCQkJCSBhdXhTdGF0ZS0+dHVwbGVzb3J0LAorCQkJCQkJCQkJCQkJCQkg dHVwbGVzX2Zvcl9jaGVjayk7CisKKwkvKiBJdCBpcyBvdXIgcmVzcG9uc2liaWxpdHkgdG8gc2xv ZSB0dXBsZSBzb3J0IGFzIGZhc3QgYXMgd2UgY2FuICovCisJdHVwbGVzb3J0X2VuZChzdGF0ZS0+ dHVwbGVzb3J0KTsKKwl0dXBsZXNvcnRfZW5kKGF1eFN0YXRlLT50dXBsZXNvcnQpOworCisJc3Rh dGUtPnR1cGxlc29ydCA9IGF1eFN0YXRlLT50dXBsZXNvcnQgPSBOVUxMOworCiAJZXN0YXRlID0g Q3JlYXRlRXhlY3V0b3JTdGF0ZSgpOwogCWVjb250ZXh0ID0gR2V0UGVyVHVwbGVFeHByQ29udGV4 dChlc3RhdGUpOwogCXNsb3QgPSBNYWtlU2luZ2xlVHVwbGVUYWJsZVNsb3QoUmVsYXRpb25HZXRE ZXNjcihoZWFwUmVsYXRpb24pLAotCQkJCQkJCQkJJlRUU09wc0hlYXBUdXBsZSk7CisJCQkJCQkJ CQkmVFRTT3BzQnVmZmVySGVhcFR1cGxlKTsKIAogCS8qIEFycmFuZ2UgZm9yIGVjb250ZXh0J3Mg c2NhbiB0dXBsZSB0byBiZSB0aGUgdHVwbGUgdW5kZXIgdGVzdCAqLwogCWVjb250ZXh0LT5lY3h0 X3NjYW50dXBsZSA9IHNsb3Q7CiAKLQkvKiBTZXQgdXAgZXhlY3V0aW9uIHN0YXRlIGZvciBwcmVk aWNhdGUsIGlmIGFueS4gKi8KLQlwcmVkaWNhdGUgPSBFeGVjUHJlcGFyZVF1YWwoaW5kZXhJbmZv LT5paV9QcmVkaWNhdGUsIGVzdGF0ZSk7Ci0KIAkvKgotCSAqIFByZXBhcmUgZm9yIHNjYW4gb2Yg dGhlIGJhc2UgcmVsYXRpb24uICBXZSBuZWVkIGp1c3QgdGhvc2UgdHVwbGVzCi0JICogc2F0aXNm eWluZyB0aGUgcGFzc2VkLWluIHJlZmVyZW5jZSBzbmFwc2hvdC4gIFdlIG11c3QgZGlzYWJsZSBz eW5jc2NhbgotCSAqIGhlcmUsIGJlY2F1c2UgaXQncyBjcml0aWNhbCB0aGF0IHdlIHJlYWQgZnJv bSBibG9jayB6ZXJvIGZvcndhcmQgdG8KLQkgKiBtYXRjaCB0aGUgc29ydGVkIFRJRHMuCisJICog UHJlcGFyZSB0byBmZXRjaCBoZWFwIHR1cGxlcyBpbiBpbmRleCBzdHlsZS4gVGhpcyBoZWxwcyB0 byByZWNvbnN0cnVjdAorCSAqIGEgdHVwbGUgZnJvbSB0aGUgaGVhcCB3aGVuIHdlIG9ubHkgaGF2 ZSBhbiBJdGVtUG9pbnRlci4KIAkgKi8KLQlzY2FuID0gdGFibGVfYmVnaW5zY2FuX3N0cmF0KGhl YXBSZWxhdGlvbiwJLyogcmVsYXRpb24gKi8KLQkJCQkJCQkJIHNuYXBzaG90LAkvKiBzbmFwc2hv dCAqLwotCQkJCQkJCQkgMCwgLyogbnVtYmVyIG9mIGtleXMgKi8KLQkJCQkJCQkJIE5VTEwsCS8q IHNjYW4ga2V5ICovCi0JCQkJCQkJCSB0cnVlLAkvKiBidWZmZXIgYWNjZXNzIHN0cmF0ZWd5IE9L ICovCi0JCQkJCQkJCSBmYWxzZSwJLyogc3luY3NjYW4gbm90IE9LICovCi0JCQkJCQkJCSBmYWxz ZSk7Ci0JaHNjYW4gPSAoSGVhcFNjYW5EZXNjKSBzY2FuOworCWNhbGxiYWNrX3ByaXZhdGVfZGF0 YS5wcmV2X2Jsb2NrX251bWJlciA9IEludmFsaWRCbG9ja051bWJlcjsKKwljYWxsYmFja19wcml2 YXRlX2RhdGEuc3RvcmUgPSB0dXBsZXNfZm9yX2NoZWNrOworCWNhbGxiYWNrX3ByaXZhdGVfZGF0 YS5wcmV2X29mZl9vZmZzZXRfbnVtYmVyID0gSW52YWxpZE9mZnNldE51bWJlcjsKIAotCXBnc3Rh dF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfU0NBTl9CTE9DS1NfVE9UQUwsCi0JCQkJ CQkJCSBoc2Nhbi0+cnNfbmJsb2Nrcyk7CisJcmVhZF9zdHJlYW0gPSByZWFkX3N0cmVhbV9iZWdp bl9yZWxhdGlvbihSRUFEX1NUUkVBTV9NQUlOVEVOQU5DRSB8IFJFQURfU1RSRUFNX1VTRV9CQVRD SElORywKKwkJCQkJCQkJCQkJCQkJIGJzdHJhdGVneSwKKwkJCQkJCQkJCQkJCQkJIGhlYXBSZWxh dGlvbiwgTUFJTl9GT1JLTlVNLAorCQkJCQkJCQkJCQkJCQkgaGVhcGFtX2luZGV4X3ZhbGlkYXRl X3NjYW5fcmVhZF9zdHJlYW1fbmV4dCwKKwkJCQkJCQkJCQkJCQkJICZjYWxsYmFja19wcml2YXRl X2RhdGEsCisJCQkJCQkJCQkJCQkJCSAoTWF4SGVhcFR1cGxlc1BlclBhZ2UgKyAxKSAqIHNpemVv ZihPZmZzZXROdW1iZXIpKTsKIAotCS8qCi0JICogU2NhbiBhbGwgdHVwbGVzIG1hdGNoaW5nIHRo ZSBzbmFwc2hvdC4KLQkgKi8KLQl3aGlsZSAoKGhlYXBUdXBsZSA9IGhlYXBfZ2V0bmV4dChzY2Fu LCBGb3J3YXJkU2NhbkRpcmVjdGlvbikpICE9IE5VTEwpCisJcGdzdGF0X3Byb2dyZXNzX3VwZGF0 ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfVFVQTEVTX1RPVEFMLCBudW1fdG9fY2hlY2spOwor CXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1RVUExFU19E T05FLCAwKTsKKworCXdoaWxlICgoYnVmID0gcmVhZF9zdHJlYW1fbmV4dF9idWZmZXIocmVhZF9z dHJlYW0sICh2b2lkKikgJnR1cGxlcykpICE9IEludmFsaWRCdWZmZXIpCiAJewotCQlJdGVtUG9p bnRlciBoZWFwY3Vyc29yID0gJmhlYXBUdXBsZS0+dF9zZWxmOwotCQlJdGVtUG9pbnRlckRhdGEg cm9vdFR1cGxlOwotCQlPZmZzZXROdW1iZXIgcm9vdF9vZmZudW07CisJCUhlYXBUdXBsZURhdGEJ aGVhcF90dXBsZV9kYXRhW01heEhlYXBUdXBsZXNQZXJQYWdlXTsKKwkJaW50IGk7CisJCU9mZnNl dE51bWJlciBvZmY7CisJCUJsb2NrTnVtYmVyIGJsb2NrX251bWJlcjsKIAogCQlDSEVDS19GT1Jf SU5URVJSVVBUUygpOwogCi0JCXN0YXRlLT5odHVwcyArPSAxOworCQlMb2NrQnVmZmVyKGJ1Ziwg QlVGRkVSX0xPQ0tfU0hBUkUpOworCQlibG9ja19udW1iZXIgPSBCdWZmZXJHZXRCbG9ja051bWJl cihidWYpOwogCi0JCWlmICgocHJldmlvdXNfYmxrbm8gPT0gSW52YWxpZEJsb2NrTnVtYmVyKSB8 fAotCQkJKGhzY2FuLT5yc19jYmxvY2sgIT0gcHJldmlvdXNfYmxrbm8pKQorCQlpID0gMDsKKwkJ d2hpbGUgKChvZmYgPSB0dXBsZXNbaV0pICE9IEludmFsaWRPZmZzZXROdW1iZXIpCiAJCXsKLQkJ CXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfU0NBTl9CTE9DS1NfRE9ORSwK LQkJCQkJCQkJCQkgaHNjYW4tPnJzX2NibG9jayk7Ci0JCQlwcmV2aW91c19ibGtubyA9IGhzY2Fu LT5yc19jYmxvY2s7CisJCQlJdGVtUG9pbnRlckRhdGEgdGlkOworCQkJYm9vbAkJYWxsX2RlYWQs IGZvdW5kOworCQkJSXRlbVBvaW50ZXJTZXQoJnRpZCwgYmxvY2tfbnVtYmVyLCBvZmYpOworCisJ CQlmb3VuZCA9IGhlYXBfaG90X3NlYXJjaF9idWZmZXIoJnRpZCwgaGVhcFJlbGF0aW9uLCBidWYs IHNuYXBzaG90LAorCQkJCQkJCQkJCSAgICZoZWFwX3R1cGxlX2RhdGFbaV0sICZhbGxfZGVhZCwg dHJ1ZSk7CisJCQlpZiAoIWZvdW5kKQorCQkJCUl0ZW1Qb2ludGVyU2V0SW52YWxpZCgmaGVhcF90 dXBsZV9kYXRhW2ldLnRfc2VsZik7CisJCQlpKys7CiAJCX0KKwkJTG9ja0J1ZmZlcihidWYsIEJV RkZFUl9MT0NLX1VOTE9DSyk7CiAKLQkJLyoKLQkJICogQXMgY29tbWVudGVkIGluIHRhYmxlX2lu ZGV4X2J1aWxkX3NjYW4sIHdlIHNob3VsZCBpbmRleCBoZWFwLW9ubHkKLQkJICogdHVwbGVzIHVu ZGVyIHRoZSBUSURzIG9mIHRoZWlyIHJvb3QgdHVwbGVzOyBzbyB3aGVuIHdlIGFkdmFuY2Ugb250 bwotCQkgKiBhIG5ldyBoZWFwIHBhZ2UsIGJ1aWxkIGEgbWFwIG9mIHJvb3QgaXRlbSBvZmZzZXRz IG9uIHRoZSBwYWdlLgotCQkgKgotCQkgKiBUaGlzIGNvbXBsaWNhdGVzIG1lcmdpbmcgYWdhaW5z dCB0aGUgdHVwbGVzb3J0IG91dHB1dDogd2Ugd2lsbAotCQkgKiB2aXNpdCB0aGUgbGl2ZSB0dXBs ZXMgaW4gb3JkZXIgYnkgdGhlaXIgb2Zmc2V0cywgYnV0IHRoZSByb290Ci0JCSAqIG9mZnNldHMg dGhhdCB3ZSBuZWVkIHRvIGNvbXBhcmUgYWdhaW5zdCB0aGUgaW5kZXggY29udGVudHMgbWlnaHQg YmUKLQkJICogb3JkZXJlZCBkaWZmZXJlbnRseS4gIFNvIHdlIG1pZ2h0IGhhdmUgdG8gImxvb2sg YmFjayIgd2l0aGluIHRoZQotCQkgKiB0dXBsZXNvcnQgb3V0cHV0LCBidXQgb25seSB3aXRoaW4g dGhlIGN1cnJlbnQgcGFnZS4gIFdlIGhhbmRsZSB0aGF0Ci0JCSAqIGJ5IGtlZXBpbmcgYSBib29s IGFycmF5IGluX2luZGV4W10gc2hvd2luZyBhbGwgdGhlCi0JCSAqIGFscmVhZHktcGFzc2VkLW92 ZXIgdHVwbGVzb3J0IG91dHB1dCBUSURzIG9mIHRoZSBjdXJyZW50IHBhZ2UuIFdlCi0JCSAqIGNs ZWFyIHRoYXQgYXJyYXkgaGVyZSwgd2hlbiBhZHZhbmNpbmcgb250byBhIG5ldyBoZWFwIHBhZ2Uu Ci0JCSAqLwotCQlpZiAoaHNjYW4tPnJzX2NibG9jayAhPSByb290X2Jsa25vKQorCQlpID0gMDsK KwkJd2hpbGUgKChvZmYgPSB0dXBsZXNbaV0pICE9IEludmFsaWRPZmZzZXROdW1iZXIpCiAJCXsK LQkJCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGhzY2FuLT5yc19jYnVmKTsKLQotCQkJTG9j a0J1ZmZlcihoc2Nhbi0+cnNfY2J1ZiwgQlVGRkVSX0xPQ0tfU0hBUkUpOwotCQkJaGVhcF9nZXRf cm9vdF90dXBsZXMocGFnZSwgcm9vdF9vZmZzZXRzKTsKLQkJCUxvY2tCdWZmZXIoaHNjYW4tPnJz X2NidWYsIEJVRkZFUl9MT0NLX1VOTE9DSyk7Ci0KLQkJCW1lbXNldChpbl9pbmRleCwgMCwgc2l6 ZW9mKGluX2luZGV4KSk7Ci0KLQkJCXJvb3RfYmxrbm8gPSBoc2Nhbi0+cnNfY2Jsb2NrOwotCQl9 Ci0KLQkJLyogQ29udmVydCBhY3R1YWwgdHVwbGUgVElEIHRvIHJvb3QgVElEICovCi0JCXJvb3RU dXBsZSA9ICpoZWFwY3Vyc29yOwotCQlyb290X29mZm51bSA9IEl0ZW1Qb2ludGVyR2V0T2Zmc2V0 TnVtYmVyKGhlYXBjdXJzb3IpOwotCi0JCWlmIChIZWFwVHVwbGVJc0hlYXBPbmx5KGhlYXBUdXBs ZSkpCi0JCXsKLQkJCXJvb3Rfb2ZmbnVtID0gcm9vdF9vZmZzZXRzW3Jvb3Rfb2ZmbnVtIC0gMV07 Ci0JCQlpZiAoIU9mZnNldE51bWJlcklzVmFsaWQocm9vdF9vZmZudW0pKQotCQkJCWVyZXBvcnQo RVJST1IsCi0JCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFfQ09SUlVQVEVEKSwKLQkJCQkJCSBl cnJtc2dfaW50ZXJuYWwoImZhaWxlZCB0byBmaW5kIHBhcmVudCB0dXBsZSBmb3IgaGVhcC1vbmx5 IHR1cGxlIGF0ICgldSwldSkgaW4gdGFibGUgXCIlc1wiIiwKLQkJCQkJCQkJCQkgSXRlbVBvaW50 ZXJHZXRCbG9ja051bWJlcihoZWFwY3Vyc29yKSwKLQkJCQkJCQkJCQkgSXRlbVBvaW50ZXJHZXRP ZmZzZXROdW1iZXIoaGVhcGN1cnNvciksCi0JCQkJCQkJCQkJIFJlbGF0aW9uR2V0UmVsYXRpb25O YW1lKGhlYXBSZWxhdGlvbikpKSk7Ci0JCQlJdGVtUG9pbnRlclNldE9mZnNldE51bWJlcigmcm9v dFR1cGxlLCByb290X29mZm51bSk7Ci0JCX0KLQotCQkvKgotCQkgKiAibWVyZ2UiIGJ5IHNraXBw aW5nIHRocm91Z2ggdGhlIGluZGV4IHR1cGxlcyB1bnRpbCB3ZSBmaW5kIG9yIHBhc3MKLQkJICog dGhlIGN1cnJlbnQgcm9vdCB0dXBsZS4KLQkJICovCi0JCXdoaWxlICghdHVwbGVzb3J0X2VtcHR5 ICYmCi0JCQkgICAoIWluZGV4Y3Vyc29yIHx8Ci0JCQkJSXRlbVBvaW50ZXJDb21wYXJlKGluZGV4 Y3Vyc29yLCAmcm9vdFR1cGxlKSA8IDApKQotCQl7Ci0JCQlEYXR1bQkJdHNfdmFsOwotCQkJYm9v bAkJdHNfaXNudWxsOwotCi0JCQlpZiAoaW5kZXhjdXJzb3IpCisJCQlpZiAoSXRlbVBvaW50ZXJJ c1ZhbGlkKCZoZWFwX3R1cGxlX2RhdGFbaV0udF9zZWxmKSkKIAkJCXsKKwkJCQlJdGVtUG9pbnRl ckRhdGEgcm9vdF90aWQ7CisJCQkJSXRlbVBvaW50ZXJTZXQoJnJvb3RfdGlkLCBibG9ja19udW1i ZXIsIG9mZik7CisKKwkJCQkvKiBSZXNldCB0aGUgcGVyLXR1cGxlIG1lbW9yeSBjb250ZXh0IGZv ciB0aGUgbmV4dCBmZXRjaC4gKi8KKwkJCQlNZW1vcnlDb250ZXh0UmVzZXQoZWNvbnRleHQtPmVj eHRfcGVyX3R1cGxlX21lbW9yeSk7CisJCQkJRXhlY1N0b3JlQnVmZmVySGVhcFR1cGxlKCZoZWFw X3R1cGxlX2RhdGFbaV0sIHNsb3QsIGJ1Zik7CisKKwkJCQkvKiBDb21wdXRlIHRoZSBrZXkgdmFs dWVzIGFuZCBudWxsIGZsYWdzIGZvciB0aGlzIHR1cGxlLiAqLworCQkJCUZvcm1JbmRleERhdHVt KGluZGV4SW5mbywKKwkJCQkJCQkgICBzbG90LAorCQkJCQkJCSAgIGVzdGF0ZSwKKwkJCQkJCQkg ICB2YWx1ZXMsCisJCQkJCQkJICAgaXNudWxsKTsKKwogCQkJCS8qCi0JCQkJICogUmVtZW1iZXIg aW5kZXggaXRlbXMgc2VlbiBlYXJsaWVyIG9uIHRoZSBjdXJyZW50IGhlYXAgcGFnZQorCQkJCSAq IEluc2VydCB0aGUgdHVwbGUgaW50byB0aGUgdGFyZ2V0IGluZGV4LgogCQkJCSAqLwotCQkJCWlm IChJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKGluZGV4Y3Vyc29yKSA9PSByb290X2Jsa25vKQot CQkJCQlpbl9pbmRleFtJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcihpbmRleGN1cnNvcikgLSAx XSA9IHRydWU7Ci0JCQl9Ci0KLQkJCXR1cGxlc29ydF9lbXB0eSA9ICF0dXBsZXNvcnRfZ2V0ZGF0 dW0oc3RhdGUtPnR1cGxlc29ydCwgdHJ1ZSwKLQkJCQkJCQkJCQkJCSAgZmFsc2UsICZ0c192YWws ICZ0c19pc251bGwsCi0JCQkJCQkJCQkJCQkgIE5VTEwpOwotCQkJQXNzZXJ0KHR1cGxlc29ydF9l bXB0eSB8fCAhdHNfaXNudWxsKTsKLQkJCWlmICghdHVwbGVzb3J0X2VtcHR5KQotCQkJewotCQkJ CWl0ZW1wdHJfZGVjb2RlKCZkZWNvZGVkLCBEYXR1bUdldEludDY0KHRzX3ZhbCkpOwotCQkJCWlu ZGV4Y3Vyc29yID0gJmRlY29kZWQ7Ci0JCQl9Ci0JCQllbHNlCi0JCQl7Ci0JCQkJLyogQmUgdGlk eSAqLwotCQkJCWluZGV4Y3Vyc29yID0gTlVMTDsKKwkJCQlpbmRleF9pbnNlcnQoaW5kZXhSZWxh dGlvbiwKKwkJCQkJCQkgdmFsdWVzLAorCQkJCQkJCSBpc251bGwsCisJCQkJCQkJICZyb290X3Rp ZCwgLyogaW5zZXJ0IHJvb3QgdHVwbGUgKi8KKwkJCQkJCQkgaGVhcFJlbGF0aW9uLAorCQkJCQkJ CSBpbmRleEluZm8tPmlpX1VuaXF1ZSA/CisJCQkJCQkJIFVOSVFVRV9DSEVDS19ZRVMgOiBVTklR VUVfQ0hFQ0tfTk8sCisJCQkJCQkJIGZhbHNlLAorCQkJCQkJCSBpbmRleEluZm8pOwogCQkJfQor CQkJc3RhdGUtPmh0dXBzICs9IDE7CisJCQlwZ3N0YXRfcHJvZ3Jlc3NfaW5jcl9wYXJhbShQUk9H UkVTU19DUkVBVEVJRFhfVFVQTEVTX0RPTkUsIDEpOworCQkJaSsrOwogCQl9CiAKLQkJLyoKLQkJ ICogSWYgdGhlIHR1cGxlc29ydCBoYXMgb3ZlcnNob3QgKmFuZCogd2UgZGlkbid0IHNlZSBhIG1h dGNoIGVhcmxpZXIsCi0JCSAqIHRoZW4gdGhpcyB0dXBsZSBpcyBtaXNzaW5nIGZyb20gdGhlIGlu ZGV4LCBzbyBpbnNlcnQgaXQuCi0JCSAqLwotCQlpZiAoKHR1cGxlc29ydF9lbXB0eSB8fAotCQkJ IEl0ZW1Qb2ludGVyQ29tcGFyZShpbmRleGN1cnNvciwgJnJvb3RUdXBsZSkgPiAwKSAmJgotCQkJ IWluX2luZGV4W3Jvb3Rfb2ZmbnVtIC0gMV0pCi0JCXsKLQkJCU1lbW9yeUNvbnRleHRSZXNldChl Y29udGV4dC0+ZWN4dF9wZXJfdHVwbGVfbWVtb3J5KTsKLQotCQkJLyogU2V0IHVwIGZvciBwcmVk aWNhdGUgb3IgZXhwcmVzc2lvbiBldmFsdWF0aW9uICovCi0JCQlFeGVjU3RvcmVIZWFwVHVwbGUo aGVhcFR1cGxlLCBzbG90LCBmYWxzZSk7Ci0KLQkJCS8qCi0JCQkgKiBJbiBhIHBhcnRpYWwgaW5k ZXgsIGRpc2NhcmQgdHVwbGVzIHRoYXQgZG9uJ3Qgc2F0aXNmeSB0aGUKLQkJCSAqIHByZWRpY2F0 ZS4KLQkJCSAqLwotCQkJaWYgKHByZWRpY2F0ZSAhPSBOVUxMKQotCQkJewotCQkJCWlmICghRXhl Y1F1YWwocHJlZGljYXRlLCBlY29udGV4dCkpCi0JCQkJCWNvbnRpbnVlOwotCQkJfQotCi0JCQkv KgotCQkJICogRm9yIHRoZSBjdXJyZW50IGhlYXAgdHVwbGUsIGV4dHJhY3QgYWxsIHRoZSBhdHRy aWJ1dGVzIHdlIHVzZQotCQkJICogaW4gdGhpcyBpbmRleCwgYW5kIG5vdGUgd2hpY2ggYXJlIG51 bGwuICBUaGlzIGFsc28gcGVyZm9ybXMKLQkJCSAqIGV2YWx1YXRpb24gb2YgYW55IGV4cHJlc3Np b25zIG5lZWRlZC4KLQkJCSAqLwotCQkJRm9ybUluZGV4RGF0dW0oaW5kZXhJbmZvLAotCQkJCQkJ ICAgc2xvdCwKLQkJCQkJCSAgIGVzdGF0ZSwKLQkJCQkJCSAgIHZhbHVlcywKLQkJCQkJCSAgIGlz bnVsbCk7Ci0KLQkJCS8qCi0JCQkgKiBZb3UnZCB0aGluayB3ZSBzaG91bGQgZ28gYWhlYWQgYW5k IGJ1aWxkIHRoZSBpbmRleCB0dXBsZSBoZXJlLAotCQkJICogYnV0IHNvbWUgaW5kZXggQU1zIHdh bnQgdG8gZG8gZnVydGhlciBwcm9jZXNzaW5nIG9uIHRoZSBkYXRhCi0JCQkgKiBmaXJzdC4gU28g cGFzcyB0aGUgdmFsdWVzW10gYW5kIGlzbnVsbFtdIGFycmF5cywgaW5zdGVhZC4KLQkJCSAqLwot Ci0JCQkvKgotCQkJICogSWYgdGhlIHR1cGxlIGlzIGFscmVhZHkgY29tbWl0dGVkIGRlYWQsIHlv dSBtaWdodCB0aGluayB3ZQotCQkJICogY291bGQgc3VwcHJlc3MgdW5pcXVlbmVzcyBjaGVja2lu ZywgYnV0IHRoaXMgaXMgbm8gbG9uZ2VyIHRydWUKLQkJCSAqIGluIHRoZSBwcmVzZW5jZSBvZiBI T1QsIGJlY2F1c2UgdGhlIGluc2VydCBpcyBhY3R1YWxseSBhIHByb3h5Ci0JCQkgKiBmb3IgYSB1 bmlxdWVuZXNzIGNoZWNrIG9uIHRoZSB3aG9sZSBIT1QtY2hhaW4uICBUaGF0IGlzLCB0aGUKLQkJ CSAqIHR1cGxlIHdlIGhhdmUgaGVyZSBjb3VsZCBiZSBkZWFkIGJlY2F1c2UgaXQgd2FzIGFscmVh ZHkKLQkJCSAqIEhPVC11cGRhdGVkLCBhbmQgaWYgc28gdGhlIHVwZGF0aW5nIHRyYW5zYWN0aW9u IHdpbGwgbm90IGhhdmUKLQkJCSAqIHRob3VnaHQgaXQgc2hvdWxkIGluc2VydCBpbmRleCBlbnRy aWVzLiAgVGhlIGluZGV4IEFNIHdpbGwKLQkJCSAqIGNoZWNrIHRoZSB3aG9sZSBIT1QtY2hhaW4g YW5kIGNvcnJlY3RseSBkZXRlY3QgYSBjb25mbGljdCBpZgotCQkJICogdGhlcmUgaXMgb25lLgot CQkJICovCi0KLQkJCWluZGV4X2luc2VydChpbmRleFJlbGF0aW9uLAotCQkJCQkJIHZhbHVlcywK LQkJCQkJCSBpc251bGwsCi0JCQkJCQkgJnJvb3RUdXBsZSwKLQkJCQkJCSBoZWFwUmVsYXRpb24s Ci0JCQkJCQkgaW5kZXhJbmZvLT5paV9VbmlxdWUgPwotCQkJCQkJIFVOSVFVRV9DSEVDS19ZRVMg OiBVTklRVUVfQ0hFQ0tfTk8sCi0JCQkJCQkgZmFsc2UsCi0JCQkJCQkgaW5kZXhJbmZvKTsKLQot CQkJc3RhdGUtPnR1cHNfaW5zZXJ0ZWQgKz0gMTsKLQkJfQorCQlSZWxlYXNlQnVmZmVyKGJ1Zik7 CiAJfQogCi0JdGFibGVfZW5kc2NhbihzY2FuKTsKLQogCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJs ZVNsb3Qoc2xvdCk7CiAKIAlGcmVlRXhlY3V0b3JTdGF0ZShlc3RhdGUpOwogCisJcmVhZF9zdHJl YW1fZW5kKHJlYWRfc3RyZWFtKTsKKwl0dXBsZXN0b3JlX2VuZCh0dXBsZXNfZm9yX2NoZWNrKTsK KworCS8qCisJICogRHJvcCB0aGUgbGF0ZXN0IHNuYXBzaG90LiAgV2UgbXVzdCBkbyB0aGlzIGJl Zm9yZSB3YWl0aW5nIG91dCBvdGhlcgorCSAqIHNuYXBzaG90IGhvbGRlcnMsIGVsc2Ugd2Ugd2ls bCBkZWFkbG9jayBhZ2FpbnN0IG90aGVyIHByb2Nlc3NlcyBhbHNvCisJICogZG9pbmcgQ1JFQVRF IElOREVYIENPTkNVUlJFTlRMWSwgd2hpY2ggd291bGQgc2VlIG91ciBzbmFwc2hvdCBhcyBvbmUK KwkgKiB0aGV5IG11c3Qgd2FpdCBmb3IuCisJICovCisJUG9wQWN0aXZlU25hcHNob3QoKTsKKwlV bnJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3QpOworCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3Qo KTsKKwlBc3NlcnQoTXlQcm9jLT54bWluID09IEludmFsaWRUcmFuc2FjdGlvbklkKTsKKyNpZiBV U0VfSU5KRUNUSU9OX1BPSU5UUworCWlmIChNeVByb2MtPnhpZCA9PSBJbnZhbGlkVHJhbnNhY3Rp b25JZCkKKwkJSU5KRUNUSU9OX1BPSU5UKCJoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194 aWQiKTsKKyNlbmRpZgogCS8qIFRoZXNlIG1heSBoYXZlIGJlZW4gcG9pbnRpbmcgdG8gdGhlIG5v dy1nb25lIGVzdGF0ZSAqLwogCWluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnNTdGF0ZSA9IE5JTDsK IAlpbmRleEluZm8tPmlpX1ByZWRpY2F0ZVN0YXRlID0gTlVMTDsKKworCXJldHVybiBsaW1pdFht aW47CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9z cmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5kZXggZTllMjJlYzBlODQuLmE5M2RlMmJhOWEz IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKKysrIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9pbmRleC5jCkBAIC03MTUsMTEgKzcxNSwxNiBAQCBVcGRhdGVJbmRleFJlbGF0 aW9uKE9pZCBpbmRleG9pZCwKICAqCQkJYWxyZWFkeSBleGlzdHMuCiAgKgkJSU5ERVhfQ1JFQVRF X1BBUlRJVElPTkVEOgogICoJCQljcmVhdGUgYSBwYXJ0aXRpb25lZCBpbmRleCAodGFibGUgbXVz dCBiZSBwYXJ0aXRpb25lZCkKKyAqCQlJTkRFWF9DUkVBVEVfQVVYSUxJQVJZOgorICoJCQltYXJr IGluZGV4IGFzIGF1eGlsaWFyeSBpbmRleAogICogY29uc3RyX2ZsYWdzOiBmbGFncyBwYXNzZWQg dG8gaW5kZXhfY29uc3RyYWludF9jcmVhdGUKICAqCQkob25seSBpZiBJTkRFWF9DUkVBVEVfQURE X0NPTlNUUkFJTlQgaXMgc2V0KQogICogYWxsb3dfc3lzdGVtX3RhYmxlX21vZHM6IGFsbG93IHRh YmxlIHRvIGJlIGEgc3lzdGVtIGNhdGFsb2cKICAqIGlzX2ludGVybmFsOiBpZiB0cnVlLCBwb3N0 IGNyZWF0aW9uIGhvb2sgZm9yIG5ldyBpbmRleAogICogY29uc3RyYWludElkOiBpZiBub3QgTlVM TCwgcmVjZWl2ZXMgT0lEIG9mIGNyZWF0ZWQgY29uc3RyYWludAorICogcmVscGVyc2lzdGVuY2U6 IHBlcnNpc3RlbmNlIGxldmVsIHRvIHVzZSBmb3IgaW5kZXguIEluIG1vc3Qgb2YgdGhlCisgKgkJ Y2FzZXMgaXQgaXMgc2hvdWxkIGJlIGVxdWFsIHRvIHBlcnNpc3RlbmNlIGxldmVsIG9mIHRhYmxl LAorICoJCWF1eGlsaWFyeSBpbmRleGVzIGFyZSBvbmx5IGV4Y2VwdGlvbiBoZXJlLgogICoKICAq IFJldHVybnMgdGhlIE9JRCBvZiB0aGUgY3JlYXRlZCBpbmRleC4KICAqLwpAQCAtNzQ0LDcgKzc0 OSw4IEBAIGluZGV4X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkgYml0czE2IGNv bnN0cl9mbGFncywKIAkJCSBib29sIGFsbG93X3N5c3RlbV90YWJsZV9tb2RzLAogCQkJIGJvb2wg aXNfaW50ZXJuYWwsCi0JCQkgT2lkICpjb25zdHJhaW50SWQpCisJCQkgT2lkICpjb25zdHJhaW50 SWQsCisJCQkgY2hhciByZWxwZXJzaXN0ZW5jZSkKIHsKIAlPaWQJCQloZWFwUmVsYXRpb25JZCA9 IFJlbGF0aW9uR2V0UmVsaWQoaGVhcFJlbGF0aW9uKTsKIAlSZWxhdGlvbglwZ19jbGFzczsKQEAg LTc1NSwxMSArNzYxLDExIEBAIGluZGV4X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJ Ym9vbAkJaXNfZXhjbHVzaW9uOwogCU9pZAkJCW5hbWVzcGFjZUlkOwogCWludAkJCWk7Ci0JY2hh cgkJcmVscGVyc2lzdGVuY2U7CiAJYm9vbAkJaXNwcmltYXJ5ID0gKGZsYWdzICYgSU5ERVhfQ1JF QVRFX0lTX1BSSU1BUlkpICE9IDA7CiAJYm9vbAkJaW52YWxpZCA9IChmbGFncyAmIElOREVYX0NS RUFURV9JTlZBTElEKSAhPSAwOwogCWJvb2wJCWNvbmN1cnJlbnQgPSAoZmxhZ3MgJiBJTkRFWF9D UkVBVEVfQ09OQ1VSUkVOVCkgIT0gMDsKIAlib29sCQlwYXJ0aXRpb25lZCA9IChmbGFncyAmIElO REVYX0NSRUFURV9QQVJUSVRJT05FRCkgIT0gMDsKKwlib29sCQlhdXhpbGlhcnkgPSAoZmxhZ3Mg JiBJTkRFWF9DUkVBVEVfQVVYSUxJQVJZKSAhPSAwOwogCWNoYXIJCXJlbGtpbmQ7CiAJVHJhbnNh Y3Rpb25JZCByZWxmcm96ZW54aWQ7CiAJTXVsdGlYYWN0SWQgcmVsbWlubXhpZDsKQEAgLTc4NSw3 ICs3OTEsNiBAQCBpbmRleF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCW5hbWVzcGFj ZUlkID0gUmVsYXRpb25HZXROYW1lc3BhY2UoaGVhcFJlbGF0aW9uKTsKIAlzaGFyZWRfcmVsYXRp b24gPSBoZWFwUmVsYXRpb24tPnJkX3JlbC0+cmVsaXNzaGFyZWQ7CiAJbWFwcGVkX3JlbGF0aW9u ID0gUmVsYXRpb25Jc01hcHBlZChoZWFwUmVsYXRpb24pOwotCXJlbHBlcnNpc3RlbmNlID0gaGVh cFJlbGF0aW9uLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlOwogCiAJLyoKIAkgKiBjaGVjayBwYXJh bWV0ZXJzCkBAIC03OTMsNiArNzk4LDExIEBAIGluZGV4X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVs YXRpb24sCiAJaWYgKGluZGV4SW5mby0+aWlfTnVtSW5kZXhBdHRycyA8IDEpCiAJCWVsb2coRVJS T1IsICJtdXN0IGluZGV4IGF0IGxlYXN0IG9uZSBjb2x1bW4iKTsKIAorCWlmIChpbmRleEluZm8t PmlpX0FtID09IFNUSVJfQU1fT0lEICYmICFhdXhpbGlhcnkpCisJCWVyZXBvcnQoRVJST1IsCisJ CQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2co InVzZXItZGVmaW5lZCBpbmRleGVzIHdpdGggU1RJUiBhY2Nlc3MgbWV0aG9kIGFyZSBub3Qgc3Vw cG9ydGVkIikpKTsKKwogCWlmICghYWxsb3dfc3lzdGVtX3RhYmxlX21vZHMgJiYKIAkJSXNTeXN0 ZW1SZWxhdGlvbihoZWFwUmVsYXRpb24pICYmCiAJCUlzTm9ybWFsUHJvY2Vzc2luZ01vZGUoKSkK QEAgLTEzOTgsNyArMTQwOCw4IEBAIGluZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfY29weShSZWxh dGlvbiBoZWFwUmVsYXRpb24sIE9pZCBvbGRJbmRleElkLAogCQkJCQkJCWZhbHNlLAkvKiBub3Qg cmVhZHkgZm9yIGluc2VydHMgKi8KIAkJCQkJCQl0cnVlLAogCQkJCQkJCWluZGV4UmVsYXRpb24t PnJkX2luZGFtLT5hbXN1bW1hcml6aW5nLAotCQkJCQkJCW9sZEluZm8tPmlpX1dpdGhvdXRPdmVy bGFwcyk7CisJCQkJCQkJb2xkSW5mby0+aWlfV2l0aG91dE92ZXJsYXBzLAorCQkJCQkJCWZhbHNl KTsKIAogCS8qCiAJICogRXh0cmFjdCB0aGUgbGlzdCBvZiBjb2x1bW4gbmFtZXMgYW5kIHRoZSBj b2x1bW4gbnVtYmVycyBmb3IgdGhlIG5ldwpAQCAtMTQ2Myw3ICsxNDc0LDggQEAgaW5kZXhfY29u Y3VycmVudGx5X2NyZWF0ZV9jb3B5KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwgT2lkIG9sZEluZGV4 SWQsCiAJCQkJCQkJICAwLAogCQkJCQkJCSAgdHJ1ZSwgLyogYWxsb3cgdGFibGUgdG8gYmUgYSBz eXN0ZW0gY2F0YWxvZz8gKi8KIAkJCQkJCQkgIGZhbHNlLAkvKiBpc19pbnRlcm5hbD8gKi8KLQkJ CQkJCQkgIE5VTEwpOworCQkJCQkJCSAgTlVMTCwKKwkJCQkJCQkgIGhlYXBSZWxhdGlvbi0+cmRf cmVsLT5yZWxwZXJzaXN0ZW5jZSk7CiAKIAkvKiBDbG9zZSB0aGUgcmVsYXRpb25zIHVzZWQgYW5k IGNsZWFuIHVwICovCiAJaW5kZXhfY2xvc2UoaW5kZXhSZWxhdGlvbiwgTm9Mb2NrKTsKQEAgLTE0 NzMsNiArMTQ4NSwxNTUgQEAgaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9jb3B5KFJlbGF0aW9u IGhlYXBSZWxhdGlvbiwgT2lkIG9sZEluZGV4SWQsCiAJcmV0dXJuIG5ld0luZGV4SWQ7CiB9CiAK Ky8qCisgKiBpbmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2F1eAorICoKKyAqIENyZWF0ZSBjb25j dXJyZW50bHkgYW4gYXV4aWxpYXJ5IGluZGV4IGJhc2VkIG9uIHRoZSBkZWZpbml0aW9uIG9mIHRo ZSBvbmUKKyAqIHByb3ZpZGVkIGJ5IGNhbGxlci4gIFRoZSBpbmRleCBpcyBpbnNlcnRlZCBpbnRv IGNhdGFsb2dzIGFuZCBuZWVkcyB0byBiZQorICogYnVpbHQgbGF0ZXIgb24uIFRoaXMgaXMgY2Fs bGVkIGR1cmluZyBjb25jdXJyZW50IHJlaW5kZXggcHJvY2Vzc2luZy4KKyAqCisgKiAidGFibGVz cGFjZU9pZCIgaXMgdGhlIHRhYmxlc3BhY2UgdG8gdXNlIGZvciB0aGlzIGluZGV4LgorICovCitP aWQKK2luZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfYXV4KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwg T2lkIG1haW5JbmRleElkLAorCQkJCQkJCSAgIE9pZCB0YWJsZXNwYWNlT2lkLCBjb25zdCBjaGFy ICpuZXdOYW1lKQoreworCVJlbGF0aW9uCWluZGV4UmVsYXRpb247CisJSW5kZXhJbmZvICAqb2xk SW5mbywKKwkJCSpuZXdJbmZvOworCU9pZAkJCW5ld0luZGV4SWQgPSBJbnZhbGlkT2lkOworCUhl YXBUdXBsZQlpbmRleFR1cGxlOworCisJTGlzdAkgICAqaW5kZXhDb2xOYW1lcyA9IE5JTDsKKwlM aXN0CSAgICppbmRleEV4cHJzID0gTklMOworCUxpc3QJICAgKmluZGV4UHJlZHMgPSBOSUw7CisK KwlPaWQgKmF1eE9wY2xhc3NJZHM7CisJaW50MTYgKmF1eENvbG9wdGlvbnM7CisKKwlpbmRleFJl bGF0aW9uID0gaW5kZXhfb3BlbihtYWluSW5kZXhJZCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwkv KiBUaGUgbmV3IGluZGV4IG5lZWRzIHNvbWUgaW5mb3JtYXRpb24gZnJvbSB0aGUgb2xkIGluZGV4 ICovCisJb2xkSW5mbyA9IEJ1aWxkSW5kZXhJbmZvKGluZGV4UmVsYXRpb24pOworCisJLyoKKwkg KiBCdWlsZCBvZiBhbiBhdXhpbGlhcnkgaW5kZXggd2l0aCBleGNsdXNpb24gY29uc3RyYWludHMg aXMgbm90CisJICogc3VwcG9ydGVkLgorCSAqLworCWlmIChvbGRJbmZvLT5paV9FeGNsdXNpb25P cHMgIT0gTlVMTCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRV UkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQllcnJtc2coImF1eGlsaWFyeSBpbmRleCBjcmVhdGlv biBmb3IgZXhjbHVzaW9uIGNvbnN0cmFpbnRzIGlzIG5vdCBzdXBwb3J0ZWQiKSkpOworCisJLyog R2V0IHRoZSBhcnJheSBvZiBjbGFzcyBhbmQgY29sdW1uIG9wdGlvbnMgSURzIGZyb20gaW5kZXgg aW5mbyAqLworCWluZGV4VHVwbGUgPSBTZWFyY2hTeXNDYWNoZTEoSU5ERVhSRUxJRCwgT2JqZWN0 SWRHZXREYXR1bShtYWluSW5kZXhJZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZChpbmRleFR1 cGxlKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGluZGV4ICV1Iiwg bWFpbkluZGV4SWQpOworCisKKwkvKgorCSAqIEZldGNoIHRoZSBsaXN0IG9mIGV4cHJlc3Npb25z IGFuZCBwcmVkaWNhdGVzIGRpcmVjdGx5IGZyb20gdGhlCisJICogY2F0YWxvZ3MuICBUaGlzIGNh bm5vdCByZWx5IG9uIHRoZSBpbmZvcm1hdGlvbiBmcm9tIEluZGV4SW5mbyBvZiB0aGUKKwkgKiBv bGQgaW5kZXggYXMgdGhlc2UgaGF2ZSBiZWVuIGZsYXR0ZW5lZCBmb3IgdGhlIHBsYW5uZXIuCisJ ICovCisJaWYgKG9sZEluZm8tPmlpX0V4cHJlc3Npb25zICE9IE5JTCkKKwl7CisJCURhdHVtCQll eHByRGF0dW07CisJCWNoYXIJICAgKmV4cHJTdHJpbmc7CisKKwkJZXhwckRhdHVtID0gU3lzQ2Fj aGVHZXRBdHRyTm90TnVsbChJTkRFWFJFTElELCBpbmRleFR1cGxlLAorCQkJCQkJCQkJCSAgIEFu dW1fcGdfaW5kZXhfaW5kZXhwcnMpOworCQlleHByU3RyaW5nID0gVGV4dERhdHVtR2V0Q1N0cmlu ZyhleHByRGF0dW0pOworCQlpbmRleEV4cHJzID0gKExpc3QgKikgc3RyaW5nVG9Ob2RlKGV4cHJT dHJpbmcpOworCQlwZnJlZShleHByU3RyaW5nKTsKKwl9CisJaWYgKG9sZEluZm8tPmlpX1ByZWRp Y2F0ZSAhPSBOSUwpCisJeworCQlEYXR1bQkJcHJlZERhdHVtOworCQljaGFyCSAgICpwcmVkU3Ry aW5nOworCisJCXByZWREYXR1bSA9IFN5c0NhY2hlR2V0QXR0ck5vdE51bGwoSU5ERVhSRUxJRCwg aW5kZXhUdXBsZSwKKwkJCQkJCQkJCQkgICBBbnVtX3BnX2luZGV4X2luZHByZWQpOworCQlwcmVk U3RyaW5nID0gVGV4dERhdHVtR2V0Q1N0cmluZyhwcmVkRGF0dW0pOworCQlpbmRleFByZWRzID0g KExpc3QgKikgc3RyaW5nVG9Ob2RlKHByZWRTdHJpbmcpOworCisJCS8qIEFsc28gY29udmVydCB0 byBpbXBsaWNpdC1BTkQgZm9ybWF0ICovCisJCWluZGV4UHJlZHMgPSBtYWtlX2FuZHNfaW1wbGlj aXQoKEV4cHIgKikgaW5kZXhQcmVkcyk7CisJCXBmcmVlKHByZWRTdHJpbmcpOworCX0KKworCS8q CisJICogQnVpbGQgdGhlIGluZGV4IGluZm9ybWF0aW9uIGZvciB0aGUgbmV3IGluZGV4LiAgTm90 ZSB0aGF0IHJlYnVpbGQgb2YKKwkgKiBpbmRleGVzIHdpdGggZXhjbHVzaW9uIGNvbnN0cmFpbnRz IGlzIG5vdCBzdXBwb3J0ZWQsIGhlbmNlIHRoZXJlIGlzIG5vCisJICogbmVlZCB0byBmaWxsIGFs bCB0aGUgaWlfRXhjbHVzaW9uKiBmaWVsZHMuCisJICovCisJbmV3SW5mbyA9IG1ha2VJbmRleElu Zm8ob2xkSW5mby0+aWlfTnVtSW5kZXhBdHRycywKKwkJCQkJCQlvbGRJbmZvLT5paV9OdW1JbmRl eEtleUF0dHJzLAorCQkJCQkJCVNUSVJfQU1fT0lELCAvKiBzcGVjaWFsIEFNIGZvciBhdXggaW5k ZXhlcyAqLworCQkJCQkJCWluZGV4RXhwcnMsCisJCQkJCQkJaW5kZXhQcmVkcywKKwkJCQkJCQlm YWxzZSwJLyogYXV4IGluZGV4IGFyZSBub3QgdW5pcXVlICovCisJCQkJCQkJb2xkSW5mby0+aWlf TnVsbHNOb3REaXN0aW5jdCwKKwkJCQkJCQlmYWxzZSwJLyogbm90IHJlYWR5IGZvciBpbnNlcnRz ICovCisJCQkJCQkJdHJ1ZSwKKwkJCQkJCQlmYWxzZSwJLyogYXV4IGFyZSBub3Qgc3VtbWFyaXpp bmcgKi8KKwkJCQkJCQlmYWxzZSwJLyogYXV4IGFyZSBub3Qgd2l0aG91dCBvdmVybGFwcyAqLwor CQkJCQkJCXRydWUJLyogYXV4aWxpYXJ5ICovKTsKKworCS8qCisJICogRXh0cmFjdCB0aGUgbGlz dCBvZiBjb2x1bW4gbmFtZXMgYW5kIHRoZSBjb2x1bW4gbnVtYmVycyBmb3IgdGhlIG5ldworCSAq IGluZGV4IGluZm9ybWF0aW9uLiAgQWxsIHRoaXMgaW5mb3JtYXRpb24gd2lsbCBiZSB1c2VkIGZv ciB0aGUgaW5kZXgKKwkgKiBjcmVhdGlvbi4KKwkgKi8KKwlmb3IgKGludCBpID0gMDsgaSA8IG9s ZEluZm8tPmlpX051bUluZGV4QXR0cnM7IGkrKykKKwl7CisJCVR1cGxlRGVzYwlpbmRleFR1cERl c2MgPSBSZWxhdGlvbkdldERlc2NyKGluZGV4UmVsYXRpb24pOworCQlGb3JtX3BnX2F0dHJpYnV0 ZSBhdHQgPSBUdXBsZURlc2NBdHRyKGluZGV4VHVwRGVzYywgaSk7CisKKwkJaW5kZXhDb2xOYW1l cyA9IGxhcHBlbmQoaW5kZXhDb2xOYW1lcywgTmFtZVN0cihhdHQtPmF0dG5hbWUpKTsKKwkJbmV3 SW5mby0+aWlfSW5kZXhBdHRyTnVtYmVyc1tpXSA9IG9sZEluZm8tPmlpX0luZGV4QXR0ck51bWJl cnNbaV07CisJfQorCisJYXV4T3BjbGFzc0lkcyA9IHBhbGxvYzAoc2l6ZW9mKE9pZCkgKiBuZXdJ bmZvLT5paV9OdW1JbmRleEF0dHJzKTsKKwlhdXhDb2xvcHRpb25zID0gcGFsbG9jMChzaXplb2Yo aW50MTYpICogbmV3SW5mby0+aWlfTnVtSW5kZXhBdHRycyk7CisKKwkvKiBGaWxsIHdpdGggImFu eSBvcHMiICovCisJZm9yIChpbnQgaSA9IDA7IGkgPCBuZXdJbmZvLT5paV9OdW1JbmRleEF0dHJz OyBpKyspCisJeworCQlhdXhPcGNsYXNzSWRzW2ldID0gQU5ZX1NUSVJfT1BTX09JRDsKKwkJYXV4 Q29sb3B0aW9uc1tpXSA9IDA7CisJfQorCisJbmV3SW5kZXhJZCA9IGluZGV4X2NyZWF0ZShoZWFw UmVsYXRpb24sCisJCQkJCQkJICBuZXdOYW1lLAorCQkJCQkJCSAgSW52YWxpZE9pZCwgICAgLyog aW5kZXhSZWxhdGlvbklkICovCisJCQkJCQkJICBJbnZhbGlkT2lkLCAgICAvKiBwYXJlbnRJbmRl eFJlbGlkICovCisJCQkJCQkJICBJbnZhbGlkT2lkLCAgICAvKiBwYXJlbnRDb25zdHJhaW50SWQg Ki8KKwkJCQkJCQkgIEludmFsaWRSZWxGaWxlTnVtYmVyLCAvKiByZWxGaWxlTnVtYmVyICovCisJ CQkJCQkJICBuZXdJbmZvLAorCQkJCQkJCSAgaW5kZXhDb2xOYW1lcywKKwkJCQkJCQkgIFNUSVJf QU1fT0lELAorCQkJCQkJCSAgdGFibGVzcGFjZU9pZCwKKwkJCQkJCQkgIGluZGV4UmVsYXRpb24t PnJkX2luZGNvbGxhdGlvbiwKKwkJCQkJCQkgIGF1eE9wY2xhc3NJZHMsCisJCQkJCQkJICBOVUxM LAorCQkJCQkJCSAgYXV4Q29sb3B0aW9ucywKKwkJCQkJCQkgIE5VTEwsCisJCQkJCQkJICAoRGF0 dW0pIDAsCisJCQkJCQkJICBJTkRFWF9DUkVBVEVfU0tJUF9CVUlMRCB8IElOREVYX0NSRUFURV9D T05DVVJSRU5UIHwgSU5ERVhfQ1JFQVRFX0FVWElMSUFSWSwKKwkJCQkJCQkgIDAsCisJCQkJCQkJ ICB0cnVlLCAvKiBhbGxvdyB0YWJsZSB0byBiZSBhIHN5c3RlbSBjYXRhbG9nPyAqLworCQkJCQkJ CSAgZmFsc2UsICAgIC8qIGlzX2ludGVybmFsPyAqLworCQkJCQkJCSAgTlVMTCwKKwkJCQkJCQkg IFJFTFBFUlNJU1RFTkNFX1VOTE9HR0VEKTsgLyogYXV4IGluZGV4ZXMgdW5sb2dnZWQgKi8KKwor CS8qIENsb3NlIHRoZSByZWxhdGlvbnMgdXNlZCBhbmQgY2xlYW4gdXAgKi8KKwlpbmRleF9jbG9z ZShpbmRleFJlbGF0aW9uLCBOb0xvY2spOworCVJlbGVhc2VTeXNDYWNoZShpbmRleFR1cGxlKTsK KworCXJldHVybiBuZXdJbmRleElkOworfQorCiAvKgogICogaW5kZXhfY29uY3VycmVudGx5X2J1 aWxkCiAgKgpAQCAtMjQ2OSw3ICsyNjMwLDggQEAgQnVpbGRJbmRleEluZm8oUmVsYXRpb24gaW5k ZXgpCiAJCQkJCSAgIGluZGV4U3RydWN0LT5pbmRpc3JlYWR5LAogCQkJCQkgICBmYWxzZSwKIAkJ CQkJICAgaW5kZXgtPnJkX2luZGFtLT5hbXN1bW1hcml6aW5nLAotCQkJCQkgICBpbmRleFN0cnVj dC0+aW5kaXNleGNsdXNpb24gJiYgaW5kZXhTdHJ1Y3QtPmluZGlzdW5pcXVlKTsKKwkJCQkJICAg aW5kZXhTdHJ1Y3QtPmluZGlzZXhjbHVzaW9uICYmIGluZGV4U3RydWN0LT5pbmRpc3VuaXF1ZSwK KwkJCQkJICAgaW5kZXgtPnJkX3JlbC0+cmVsYW0gPT0gU1RJUl9BTV9PSUQgLyogYXV4aWxpYXJ5 IGlmZiBTVElSICovKTsKIAogCS8qIGZpbGwgaW4gYXR0cmlidXRlIG51bWJlcnMgKi8KIAlmb3Ig KGkgPSAwOyBpIDwgbnVtQXR0czsgaSsrKQpAQCAtMjUyOSw3ICsyNjkxLDggQEAgQnVpbGREdW1t eUluZGV4SW5mbyhSZWxhdGlvbiBpbmRleCkKIAkJCQkJICAgaW5kZXhTdHJ1Y3QtPmluZGlzcmVh ZHksCiAJCQkJCSAgIGZhbHNlLAogCQkJCQkgICBpbmRleC0+cmRfaW5kYW0tPmFtc3VtbWFyaXpp bmcsCi0JCQkJCSAgIGluZGV4U3RydWN0LT5pbmRpc2V4Y2x1c2lvbiAmJiBpbmRleFN0cnVjdC0+ aW5kaXN1bmlxdWUpOworCQkJCQkgICBpbmRleFN0cnVjdC0+aW5kaXNleGNsdXNpb24gJiYgaW5k ZXhTdHJ1Y3QtPmluZGlzdW5pcXVlLAorCQkJCQkgICBpbmRleC0+cmRfcmVsLT5yZWxhbSA9PSBT VElSX0FNX09JRCAvKiBhdXhpbGlhcnkgaWZmIFNUSVIgKi8pOwogCiAJLyogZmlsbCBpbiBhdHRy aWJ1dGUgbnVtYmVycyAqLwogCWZvciAoaSA9IDA7IGkgPCBudW1BdHRzOyBpKyspCkBAIC0zMzA2 LDEyICszNDY5LDIxIEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJlbGF0aW9u LAogICoKICAqIFdlIGRvIGEgY29uY3VycmVudCBpbmRleCBidWlsZCBieSBmaXJzdCBpbnNlcnRp bmcgdGhlIGNhdGFsb2cgZW50cnkgZm9yIHRoZQogICogaW5kZXggdmlhIGluZGV4X2NyZWF0ZSgp LCBtYXJraW5nIGl0IG5vdCBpbmRpc3JlYWR5IGFuZCBub3QgaW5kaXN2YWxpZC4KKyAqIFRoZW4g d2UgY3JlYXRlIHNwZWNpYWwgYXV4aWxpYXJ5IGluZGV4IHRoZSBzYW1lIHdheS4gSXQgYmFzZWQg b24gU1RJUiBBTS4KICAqIFRoZW4gd2UgY29tbWl0IG91ciB0cmFuc2FjdGlvbiBhbmQgc3RhcnQg YSBuZXcgb25lLCB0aGVuIHdlIHdhaXQgZm9yIGFsbAogICogdHJhbnNhY3Rpb25zIHRoYXQgY291 bGQgaGF2ZSBiZWVuIG1vZGlmeWluZyB0aGUgdGFibGUgdG8gdGVybWluYXRlLiAgTm93Ci0gKiB3 ZSBrbm93IHRoYXQgYW55IHN1YnNlcXVlbnRseS1zdGFydGVkIHRyYW5zYWN0aW9ucyB3aWxsIHNl ZSB0aGUgaW5kZXggYW5kCisgKiB3ZSBrbm93IHRoYXQgYW55IHN1YnNlcXVlbnRseS1zdGFydGVk IHRyYW5zYWN0aW9ucyB3aWxsIHNlZSBpbmRleGVzIGFuZAogICogaG9ub3IgaXRzIGNvbnN0cmFp bnRzIG9uIEhPVCB1cGRhdGVzOyBzbyB3aGlsZSBleGlzdGluZyBIT1QtY2hhaW5zIG1pZ2h0CiAg KiBiZSBicm9rZW4gd2l0aCByZXNwZWN0IHRvIHRoZSBpbmRleCwgbm8gY3VycmVudGx5IGxpdmUg dHVwbGUgd2lsbCBoYXZlIGFuCi0gKiBpbmNvbXBhdGlibGUgSE9UIHVwZGF0ZSBkb25lIHRvIGl0 LiAgV2Ugbm93IGJ1aWxkIHRoZSBpbmRleCBub3JtYWxseSB2aWEKKyAqIGluY29tcGF0aWJsZSBI T1QgdXBkYXRlIGRvbmUgdG8gaXQuCisgKgorICogQWZ0ZXIgd2UgYnVpbGQgYXV4aWxpYXJ5IGlu ZGV4LiBJdCBpcyBmYXN0IG9wZXJhdGlvbiB3aXRob3V0IGFueSBhY3R1YWwKKyAqIHRhYmxlIHNj YW4uIEFzIHJlc3VsdCwgd2UgaGF2ZSBlbXB0eSBTVElSIGluZGV4LiBXZSBjb21taXQgdHJhbnNh Y3Rpb24gYW5kCisgKiBhZ2FpbiB3YWl0IGZvciBhbGwgdHJhbnNhY3Rpb25zIHRoYXQgY291bGQg aGF2ZSBiZWVuIG1vZGlmeWluZyB0aGUgdGFibGUKKyAqIHRvIHRlcm1pbmF0ZS4gQXQgdGhhdCBt b21lbnQgYWxsIG5ldyB0dXBsZXMgYXJlIGdvaW5nIHRvIGJlIGluc2VydGVkIGludG8KKyAqIGF1 eGlsaWFyeSBpbmRleC4KKyAqCisgKiBXZSBub3cgYnVpbGQgdGhlIGluZGV4IG5vcm1hbGx5IHZp YQogICogaW5kZXhfYnVpbGQoKSwgd2hpbGUgaG9sZGluZyBhIHdlYWsgbG9jayB0aGF0IGFsbG93 cyBjb25jdXJyZW50CiAgKiBpbnNlcnQvdXBkYXRlL2RlbGV0ZS4gIEFsc28sIHdlIGluZGV4IG9u bHkgdHVwbGVzIHRoYXQgYXJlIHZhbGlkCiAgKiBhcyBvZiB0aGUgc3RhcnQgb2YgdGhlIHNjYW4g KHNlZSB0YWJsZV9pbmRleF9idWlsZF9zY2FuKSwgd2hlcmVhcyBhIG5vcm1hbApAQCAtMzMyMSwx OCArMzQ5MywyMSBAQCBJbmRleENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwK ICAqIGJvZ3VzIHVuaXF1ZS1pbmRleCBmYWlsdXJlcyBkdWUgdG8gY29uY3VycmVudCBVUERBVEVz ICh3ZSBtaWdodCBzZWUKICAqIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUgc2FtZSByb3cgYXMg YmVpbmcgdmFsaWQgd2hlbiB3ZSBwYXNzIG92ZXIgdGhlbSwKICAqIGlmIHdlIHVzZWQgSGVhcFR1 cGxlU2F0aXNmaWVzVmFjdXVtKS4gIFRoaXMgbGVhdmVzIHVzIHdpdGggYW4gaW5kZXggdGhhdAot ICogZG9lcyBub3QgY29udGFpbiBhbnkgdHVwbGVzIGFkZGVkIHRvIHRoZSB0YWJsZSB3aGlsZSB3 ZSBidWlsdCB0aGUgaW5kZXguCisgKiBkb2VzIG5vdCBjb250YWluIGFueSB0dXBsZXMgYWRkZWQg dG8gdGhlIHRhYmxlIHdoaWxlIHdlIGJ1aWx0IHRoZSBpbmRleAorICogKHV0IHRoZXNlIHR1cGxl cyBjb250YWluZWQgaW4gYXV4aWxpYXJ5IGluZGV4KS4KICAqCiAgKiBGdXJ0aGVybW9yZSwgd2Ug c2V0IFNPX1JFU0VUX1NOQVBTSE9UIGZvciB0aGUgc2Nhbiwgd2hpY2ggY2F1c2VzIG5ldwogICog c25hcHNob3QgdG8gYmUgc2V0IGFzIGFjdGl2ZSBldmVyeSBzbyBvZnRlbi4gVGhlIHJlYXNvbiAg Zm9yIHRoYXQgaXMgdG8KICAqIHByb3BhZ2F0ZSB0aGUgeG1pbiBob3Jpem9uIGZvcndhcmQuCiAg KgogICogTmV4dCwgd2UgbWFyayB0aGUgaW5kZXggImluZGlzcmVhZHkiIChidXQgc3RpbGwgbm90 ICJpbmRpc3ZhbGlkIikgYW5kCi0gKiBjb21taXQgdGhlIHNlY29uZCB0cmFuc2FjdGlvbiBhbmQg c3RhcnQgYSB0aGlyZC4gIEFnYWluIHdlIHdhaXQgZm9yIGFsbAorICogY29tbWl0IHRoZSB0aGly ZCB0cmFuc2FjdGlvbiBhbmQgc3RhcnQgYSBmb3VydGguICBBZ2FpbiB3ZSB3YWl0IGZvciBhbGwK ICAqIHRyYW5zYWN0aW9ucyB0aGF0IGNvdWxkIGhhdmUgYmVlbiBtb2RpZnlpbmcgdGhlIHRhYmxl IHRvIHRlcm1pbmF0ZS4gIE5vdwogICogd2Uga25vdyB0aGF0IGFueSBzdWJzZXF1ZW50bHktc3Rh cnRlZCB0cmFuc2FjdGlvbnMgd2lsbCBzZWUgdGhlIGluZGV4IGFuZAotICogaW5zZXJ0IHRoZWly IG5ldyB0dXBsZXMgaW50byBpdC4gIFdlIHRoZW4gdGFrZSBhIG5ldyByZWZlcmVuY2Ugc25hcHNo b3QKLSAqIHdoaWNoIGlzIHBhc3NlZCB0byB2YWxpZGF0ZV9pbmRleCgpLiAgQW55IHR1cGxlcyB0 aGF0IGFyZSB2YWxpZCBhY2NvcmRpbmcKKyAqIGluc2VydCB0aGVpciBuZXcgdHVwbGVzIGludG8g aXQuIEF0IHRoZSBzYW1lIG1vbWVudCB3ZSBjbGVhciAiaW5kaXNyZWFkeSIgZm9yCisgKiBhdXhp bGlhcnkgaW5kZXgsIHNpbmNlIGl0IGlzIG5vIG1vcmUgcmVxdWlyZWQuCisgKgorICogV2UgdGhl biB0YWtlIGEgbmV3IHJlZmVyZW5jZSBzbmFwc2hvdCwgYW55IHR1cGxlcyB0aGF0IGFyZSB2YWxp ZCBhY2NvcmRpbmcKICAqIHRvIHRoaXMgc25hcCwgYnV0IGFyZSBub3QgaW4gdGhlIGluZGV4LCBt dXN0IGJlIGFkZGVkIHRvIHRoZSBpbmRleC4KICAqIChBbnkgdHVwbGVzIGNvbW1pdHRlZCBsaXZl IGFmdGVyIHRoZSBzbmFwIHdpbGwgYmUgaW5zZXJ0ZWQgaW50byB0aGUKICAqIGluZGV4IGJ5IHRo ZWlyIG9yaWdpbmF0aW5nIHRyYW5zYWN0aW9uLiAgQW55IHR1cGxlcyBjb21taXR0ZWQgZGVhZCBi ZWZvcmUKQEAgLTMzNDAsMTIgKzM1MTUsMTQgQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlv biBoZWFwUmVsYXRpb24sCiAgKiB0aGF0IG1pZ2h0IGNhcmUgYWJvdXQgdGhlbSBiZWZvcmUgd2Ug bWFyayB0aGUgaW5kZXggdmFsaWQuKQogICoKICAqIHZhbGlkYXRlX2luZGV4KCkgd29ya3MgYnkg Zmlyc3QgZ2F0aGVyaW5nIGFsbCB0aGUgVElEcyBjdXJyZW50bHkgaW4gdGhlCi0gKiBpbmRleCwg dXNpbmcgYSBidWxrZGVsZXRlIGNhbGxiYWNrIHRoYXQganVzdCBzdG9yZXMgdGhlIFRJRHMgYW5k IGRvZXNuJ3QKKyAqIGluZGV4ZXMsIHVzaW5nIGEgYnVsa2RlbGV0ZSBjYWxsYmFjayB0aGF0IGp1 c3Qgc3RvcmVzIHRoZSBUSURzIGFuZCBkb2Vzbid0CiAgKiBldmVyIHNheSAiZGVsZXRlIGl0Ii4g IChUaGlzIHNob3VsZCBiZSBmYXN0ZXIgdGhhbiBhIHBsYWluIGluZGV4c2NhbjsKICAqIGFsc28s IG5vdCBhbGwgaW5kZXggQU1zIHN1cHBvcnQgZnVsbC1pbmRleCBpbmRleHNjYW4uKSAgVGhlbiB3 ZSBzb3J0IHRoZQotICogVElEcywgYW5kIGZpbmFsbHkgc2NhbiB0aGUgdGFibGUgZG9pbmcgYSAi bWVyZ2Ugam9pbiIgYWdhaW5zdCB0aGUgVElEIGxpc3QKLSAqIHRvIHNlZSB3aGljaCB0dXBsZXMg YXJlIG1pc3NpbmcgZnJvbSB0aGUgaW5kZXguICBUaHVzIHdlIHdpbGwgZW5zdXJlIHRoYXQKLSAq IGFsbCB0dXBsZXMgdmFsaWQgYWNjb3JkaW5nIHRvIHRoZSByZWZlcmVuY2Ugc25hcHNob3QgYXJl IGluIHRoZSBpbmRleC4KKyAqIFRJRHMgb2YgYm90aCBhdXhpbGlhcnkgYW5kIHRhcmdldCBpbmRl eGVzLCBhbmQgZG9pbmcgYSAibWVyZ2Ugam9pbiIgYWdhaW5zdAorICogdGhlIFRJRCBsaXN0cyB0 byBzZWUgd2hpY2ggdHVwbGVzIGZyb20gYXV4aWxpYXJ5IGluZGV4IGFyZSBtaXNzaW5nIGZyb20g dGhlCisgKiB0YXJnZXQgaW5kZXguICBUaHVzIHdlIHdpbGwgZW5zdXJlIHRoYXQgYWxsIHR1cGxl cyB2YWxpZCBhY2NvcmRpbmcgdG8gdGhlCisgKiByZWZlcmVuY2Ugc25hcHNob3QgYXJlIGluIHRo ZSBpbmRleC4gTm90aWNlIHdlIG5lZWQgdG8gZG8gYnVsa2RlbGV0ZSBpbiB0aGUKKyAqIHBhcnRp Y3VsYXIgb3JkZXI6IGF1eGlsaWFyeSBmaXJzdCwgdGFyZ2V0IGxhc3QuCiAgKgogICogQnVpbGRp bmcgYSB1bmlxdWUgaW5kZXggdGhpcyB3YXkgaXMgdHJpY2t5OiB3ZSBtaWdodCB0cnkgdG8gaW5z ZXJ0IGEKICAqIHR1cGxlIHRoYXQgaXMgYWxyZWFkeSBkZWFkIG9yIGlzIGluIHByb2Nlc3Mgb2Yg YmVpbmcgZGVsZXRlZCwgYW5kIHdlCkBAIC0zMzYzLDIyICszNTQwLDI3IEBAIEluZGV4Q2hlY2tF eGNsdXNpb24oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogICogbm90IGluZGV4KS4gIFRoZW4gd2Ug bWFyayB0aGUgaW5kZXggImluZGlzdmFsaWQiIGFuZCBjb21taXQuICBTdWJzZXF1ZW50CiAgKiB0 cmFuc2FjdGlvbnMgd2lsbCBiZSBhYmxlIHRvIHVzZSBpdCBmb3IgcXVlcmllcy4KICAqCi0gKiBE b2luZyB0d28gZnVsbCB0YWJsZSBzY2FucyBpcyBhIGJydXRlLWZvcmNlIHN0cmF0ZWd5LiAgV2Ug Y291bGQgdHJ5IHRvIGJlCi0gKiBjbGV2ZXJlciwgZWcgc3RvcmluZyBuZXcgdHVwbGVzIGluIGEg c3BlY2lhbCBhcmVhIG9mIHRoZSB0YWJsZSAocGVyaGFwcwotICogbWFraW5nIHRoZSB0YWJsZSBh cHBlbmQtb25seSBieSBzZXR0aW5nIHVzZV9mc20pLiAgSG93ZXZlciB0aGF0IHdvdWxkCi0gKiBh ZGQgeWV0IG1vcmUgbG9ja2luZyBpc3N1ZXMuCisgKiBBbHNvLCBzb21lIGFjdGlvbnMgdG8gY29u Y3VycmVudCBkcm9wIHRoZSBhdXhpbGlhcnkgaW5kZXggYXJlIHBlcmZvcm1lZC4KICAqLwotdm9p ZAotdmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIFNuYXBzaG90IHNuYXBz aG90KQorVHJhbnNhY3Rpb25JZAordmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4 SWQsIE9pZCBhdXhJbmRleElkKQogewogCVJlbGF0aW9uCWhlYXBSZWxhdGlvbiwKLQkJCQlpbmRl eFJlbGF0aW9uOworCQkJCWluZGV4UmVsYXRpb24sCisJCQkJYXV4SW5kZXhSZWxhdGlvbjsKIAlJ bmRleEluZm8gICppbmRleEluZm87Ci0JSW5kZXhWYWN1dW1JbmZvIGl2aW5mbzsKLQlWYWxpZGF0 ZUluZGV4U3RhdGUgc3RhdGU7CisJVHJhbnNhY3Rpb25JZCBsaW1pdFhtaW47CisJSW5kZXhWYWN1 dW1JbmZvIGl2aW5mbywgYXV4aXZpbmZvOworCVZhbGlkYXRlSW5kZXhTdGF0ZSBzdGF0ZSwgYXV4 U3RhdGU7CiAJT2lkCQkJc2F2ZV91c2VyaWQ7CiAJaW50CQkJc2F2ZV9zZWNfY29udGV4dDsKIAlp bnQJCQlzYXZlX25lc3RsZXZlbDsKKwkvKiBVc2UgODAlIG9mIG1haW50ZW5hbmNlX3dvcmtfbWVt IHRvIHRhcmdldCBpbmRleCBzb3J0aW5nIGFuZAorCSAqIDEwJSByZXN0IGZvciBhdXhpbGlhcnku CisJICoKKwkgKiBSZXN0IDEwJSB3aWxsIGJlIHVzZWQgZm9yIHR1cGxlc3RvcmUgbGF0ZXIuICov CisJaW50NjQJCW1haW5fd29ya19tZW1fcGFydCA9IChpbnQ2NCkgbWFpbnRlbmFuY2Vfd29ya19t ZW0gKiA4IC8gMTA7CisJaW50CQkJYXV4X3dvcmtfbWVtX3BhcnQgPSBtYWludGVuYW5jZV93b3Jr X21lbSAvIDEwOwogCiAJewogCQljb25zdCBpbnQJcHJvZ3Jlc3NfaW5kZXhbXSA9IHsKQEAgLTM0 MTEsMTIgKzM1OTMsMTYgQEAgdmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQs IFNuYXBzaG90IHNuYXBzaG90KQogCVJlc3RyaWN0U2VhcmNoUGF0aCgpOwogCiAJaW5kZXhSZWxh dGlvbiA9IGluZGV4X29wZW4oaW5kZXhJZCwgUm93RXhjbHVzaXZlTG9jayk7CisJYXV4SW5kZXhS ZWxhdGlvbiA9IGluZGV4X29wZW4oYXV4SW5kZXhJZCwgUm93RXhjbHVzaXZlTG9jayk7CiAKIAkv KgogCSAqIEZldGNoIGluZm8gbmVlZGVkIGZvciBpbmRleF9pbnNlcnQuICAoWW91IG1pZ2h0IHRo aW5rIHRoaXMgc2hvdWxkIGJlCiAJICogcGFzc2VkIGluIGZyb20gRGVmaW5lSW5kZXgsIGJ1dCBp dHMgY29weSBpcyBsb25nIGdvbmUgZHVlIHRvIGhhdmluZwogCSAqIGJlZW4gYnVpbHQgaW4gYSBw cmV2aW91cyB0cmFuc2FjdGlvbi4pCisJICoKKwkgKiBXZSBtaWdodCBuZWVkIHNuYXBzaG90IGZv ciBpbmRleCBleHByZXNzaW9ucyBvciBwcmVkaWNhdGVzLgogCSAqLworCVB1c2hBY3RpdmVTbmFw c2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwogCWluZGV4SW5mbyA9IEJ1aWxkSW5kZXhJ bmZvKGluZGV4UmVsYXRpb24pOwogCiAJLyogbWFyayBidWlsZCBpcyBjb25jdXJyZW50IGp1c3Qg Zm9yIGNvbnNpc3RlbmN5ICovCkBAIC0zNDM1LDE1ICszNjIxLDMwIEBAIHZhbGlkYXRlX2luZGV4 KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBTbmFwc2hvdCBzbmFwc2hvdCkKIAlpdmluZm8uc3Ry YXRlZ3kgPSBOVUxMOwogCWl2aW5mby52YWxpZGF0ZV9pbmRleCA9IHRydWU7CiAKKwkvKgorCSAq IENvcHkgYWxsIGluZm8gdG8gYXV4aWxpYXJ5IGluZm8sIGNoYW5naW5nIG9ubHkgcmVsYXRpb24u CisJICovCisJYXV4aXZpbmZvID0gaXZpbmZvOworCWF1eGl2aW5mby5pbmRleCA9IGF1eEluZGV4 UmVsYXRpb247CisKIAkvKgogCSAqIEVuY29kZSBUSURzIGFzIGludDggdmFsdWVzIGZvciB0aGUg c29ydCwgcmF0aGVyIHRoYW4gZGlyZWN0bHkgc29ydGluZwogCSAqIGl0ZW0gcG9pbnRlcnMuICBU aGlzIGNhbiBiZSBzaWduaWZpY2FudGx5IGZhc3RlciwgcHJpbWFyaWx5IGJlY2F1c2UgVElECiAJ ICogaXMgYSBwYXNzLWJ5LXJlZmVyZW5jZSB0eXBlIG9uIGFsbCBwbGF0Zm9ybXMsIHdoZXJlYXMg aW50OCBpcwogCSAqIHBhc3MtYnktdmFsdWUgb24gbW9zdCBwbGF0Zm9ybXMuCiAJICovCisJYXV4 U3RhdGUudHVwbGVzb3J0ID0gdHVwbGVzb3J0X2JlZ2luX2RhdHVtKElOVDhPSUQsIEludDhMZXNz T3BlcmF0b3IsCisJCQkJCQkJCQkJICAgSW52YWxpZE9pZCwgZmFsc2UsCisJCQkJCQkJCQkJICAg YXV4X3dvcmtfbWVtX3BhcnQsCisJCQkJCQkJCQkJICAgTlVMTCwgVFVQTEVTT1JUX05PTkUpOwor CWF1eFN0YXRlLmh0dXBzID0gYXV4U3RhdGUuaXR1cHMgPSBhdXhTdGF0ZS50dXBzX2luc2VydGVk ID0gMDsKKworCSh2b2lkKSBpbmRleF9idWxrX2RlbGV0ZSgmYXV4aXZpbmZvLCBOVUxMLAorCQkJ CQkJCSB2YWxpZGF0ZV9pbmRleF9jYWxsYmFjaywgJmF1eFN0YXRlKTsKKwogCXN0YXRlLnR1cGxl c29ydCA9IHR1cGxlc29ydF9iZWdpbl9kYXR1bShJTlQ4T0lELCBJbnQ4TGVzc09wZXJhdG9yLAog CQkJCQkJCQkJCQlJbnZhbGlkT2lkLCBmYWxzZSwKLQkJCQkJCQkJCQkJbWFpbnRlbmFuY2Vfd29y a19tZW0sCisJCQkJCQkJCQkJCShpbnQpIG1haW5fd29ya19tZW1fcGFydCwKIAkJCQkJCQkJCQkJ TlVMTCwgVFVQTEVTT1JUX05PTkUpOwogCXN0YXRlLmh0dXBzID0gc3RhdGUuaXR1cHMgPSBzdGF0 ZS50dXBzX2luc2VydGVkID0gMDsKIApAQCAtMzQ2NiwyNyArMzY2NywzMyBAQCB2YWxpZGF0ZV9p bmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgU25hcHNob3Qgc25hcHNob3QpCiAJCXBnc3Rh dF9wcm9ncmVzc191cGRhdGVfbXVsdGlfcGFyYW0oMywgcHJvZ3Jlc3NfaW5kZXgsIHByb2dyZXNz X3ZhbHMpOwogCX0KIAl0dXBsZXNvcnRfcGVyZm9ybXNvcnQoc3RhdGUudHVwbGVzb3J0KTsKKwl0 dXBsZXNvcnRfcGVyZm9ybXNvcnQoYXV4U3RhdGUudHVwbGVzb3J0KTsKKworCVBvcEFjdGl2ZVNu YXBzaG90KCk7CisJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCUFzc2VydCghVHJhbnNh Y3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkvKgotCSAqIE5vdyBzY2FuIHRoZSBo ZWFwIGFuZCAibWVyZ2UiIGl0IHdpdGggdGhlIGluZGV4CisJICogTm93IG1lcmdlIGJvdGggaW5k ZXhlcwogCSAqLwogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRF SURYX1BIQVNFLAotCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1ZBTElEQVRFX1RB QkxFU0NBTik7Ci0JdGFibGVfaW5kZXhfdmFsaWRhdGVfc2NhbihoZWFwUmVsYXRpb24sCi0JCQkJ CQkJICBpbmRleFJlbGF0aW9uLAotCQkJCQkJCSAgaW5kZXhJbmZvLAotCQkJCQkJCSAgc25hcHNo b3QsCi0JCQkJCQkJICAmc3RhdGUpOworCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNF X1ZBTElEQVRFX0lEWE1FUkdFKTsKKwlsaW1pdFhtaW4gPSB0YWJsZV9pbmRleF92YWxpZGF0ZV9z Y2FuKGhlYXBSZWxhdGlvbiwKKwkJCQkJCQkJCQkgIGluZGV4UmVsYXRpb24sCisJCQkJCQkJCQkJ ICBpbmRleEluZm8sCisJCQkJCQkJCQkJICAmc3RhdGUsCisJCQkJCQkJCQkJICAmYXV4U3RhdGUp OwogCi0JLyogRG9uZSB3aXRoIHR1cGxlc29ydCBvYmplY3QgKi8KLQl0dXBsZXNvcnRfZW5kKHN0 YXRlLnR1cGxlc29ydCk7CisJLyogVHVwbGUgc29ydCBjbG9zZWQgYnkgdGFibGVfaW5kZXhfdmFs aWRhdGVfc2NhbiAqLworCUFzc2VydChzdGF0ZS50dXBsZXNvcnQgPT0gTlVMTCAmJiBhdXhTdGF0 ZS50dXBsZXNvcnQgPT0gTlVMTCk7CiAKIAkvKiBNYWtlIHN1cmUgdG8gcmVsZWFzZSByZXNvdXJj ZXMgY2FjaGVkIGluIGluZGV4SW5mbyAoaWYgbmVlZGVkKS4gKi8KIAlpbmRleF9pbnNlcnRfY2xl YW51cChpbmRleFJlbGF0aW9uLCBpbmRleEluZm8pOwogCiAJZWxvZyhERUJVRzIsCi0JCSAidmFs aWRhdGVfaW5kZXggZm91bmQgJS4wZiBoZWFwIHR1cGxlcywgJS4wZiBpbmRleCB0dXBsZXM7IGlu c2VydGVkICUuMGYgbWlzc2luZyB0dXBsZXMiLAotCQkgc3RhdGUuaHR1cHMsIHN0YXRlLml0dXBz LCBzdGF0ZS50dXBzX2luc2VydGVkKTsKKwkJICJ2YWxpZGF0ZV9pbmRleCBmZXRjaGVkICUuMGYg aGVhcCB0dXBsZXMsICUuMGYgaW5kZXggdHVwbGVzOyIKKwkJCQkJCSIgJS4wZiBhdXggaW5kZXgg dHVwbGVzOyBpbnNlcnRlZCAlLjBmIG1pc3NpbmcgdHVwbGVzIiwKKwkJIHN0YXRlLmh0dXBzLCBz dGF0ZS5pdHVwcywgYXV4U3RhdGUuaXR1cHMsIHN0YXRlLnR1cHNfaW5zZXJ0ZWQpOwogCiAJLyog Um9sbCBiYWNrIGFueSBHVUMgY2hhbmdlcyBleGVjdXRlZCBieSBpbmRleCBmdW5jdGlvbnMgKi8K IAlBdEVPWGFjdF9HVUMoZmFsc2UsIHNhdmVfbmVzdGxldmVsKTsKQEAgLTM0OTUsOCArMzcwMiwx MiBAQCB2YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgU25hcHNob3Qgc25h cHNob3QpCiAJU2V0VXNlcklkQW5kU2VjQ29udGV4dChzYXZlX3VzZXJpZCwgc2F2ZV9zZWNfY29u dGV4dCk7CiAKIAkvKiBDbG9zZSByZWxzLCBidXQga2VlcCBsb2NrcyAqLworCWluZGV4X2Nsb3Nl KGF1eEluZGV4UmVsYXRpb24sIE5vTG9jayk7CiAJaW5kZXhfY2xvc2UoaW5kZXhSZWxhdGlvbiwg Tm9Mb2NrKTsKIAl0YWJsZV9jbG9zZShoZWFwUmVsYXRpb24sIE5vTG9jayk7CisKKwlBc3NlcnQo IVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCXJldHVybiBsaW1pdFhtaW47 CiB9CiAKIC8qCkBAIC0zNTU1LDYgKzM3NjYsMTEgQEAgaW5kZXhfc2V0X3N0YXRlX2ZsYWdzKE9p ZCBpbmRleElkLCBJbmRleFN0YXRlRmxhZ3NBY3Rpb24gYWN0aW9uKQogCQkJQXNzZXJ0KCFpbmRl eEZvcm0tPmluZGlzdmFsaWQpOwogCQkJaW5kZXhGb3JtLT5pbmRpc3ZhbGlkID0gdHJ1ZTsKIAkJ CWJyZWFrOworCQljYXNlIElOREVYX0RST1BfQ0xFQVJfUkVBRFk6CisJCQkvKiBDbGVhciBpbmRp c3JlYWR5IGR1cmluZyBhIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgc2VxdWVuY2UgKi8KKwkJ CUFzc2VydCghaW5kZXhGb3JtLT5pbmRpc3ZhbGlkKTsKKwkJCWluZGV4Rm9ybS0+aW5kaXNyZWFk eSA9IGZhbHNlOworCQkJYnJlYWs7CiAJCWNhc2UgSU5ERVhfRFJPUF9DTEVBUl9WQUxJRDoKIAog CQkJLyoKQEAgLTM4MjYsNiArNDA0MiwxMyBAQCByZWluZGV4X2luZGV4KGNvbnN0IFJlaW5kZXhT dG10ICpzdG10LCBPaWQgaW5kZXhJZCwKIAkJaW5kZXhJbmZvLT5paV9FeGNsdXNpb25TdHJhdHMg PSBOVUxMOwogCX0KIAorCS8qIEF1eGlsaWFyeSBpbmRleGVzIGFyZSBub3QgYWxsb3dlZCB0byBi ZSByZWJ1aWx0ICovCisJaWYgKGluZGV4SW5mby0+aWlfQXV4aWxpYXJ5KQorCQllcmVwb3J0KEVS Uk9SLAorCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJIGVy cm1zZygicmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXggXCIlc1wiIG5vdCBzdXBwb3J0ZWQiLAor CQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShpUmVsKSkpKTsKKwogCS8qIFN1cHByZXNzIHVz ZSBvZiB0aGUgdGFyZ2V0IGluZGV4IHdoaWxlIHJlYnVpbGRpbmcgaXQgKi8KIAlTZXRSZWluZGV4 UHJvY2Vzc2luZyhoZWFwSWQsIGluZGV4SWQpOwogCkBAIC00MDY4LDYgKzQyOTEsNyBAQCByZWlu ZGV4X3JlbGF0aW9uKGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsaWQsIGludCBmbGFn cywKIAl7CiAJCU9pZAkJCWluZGV4T2lkID0gbGZpcnN0X29pZChpbmRleElkKTsKIAkJT2lkCQkJ aW5kZXhOYW1lc3BhY2VJZCA9IGdldF9yZWxfbmFtZXNwYWNlKGluZGV4T2lkKTsKKwkJT2lkCQkJ aW5kZXhBbSA9IGdldF9yZWxfcmVsYW0oaW5kZXhPaWQpOwogCiAJCS8qCiAJCSAqIFNraXAgYW55 IGludmFsaWQgaW5kZXhlcyBvbiBhIFRPQVNUIHRhYmxlLiAgVGhlc2UgY2FuIG9ubHkgYmUKQEAg LTQwOTMsNiArNDMxNywxOCBAQCByZWluZGV4X3JlbGF0aW9uKGNvbnN0IFJlaW5kZXhTdG10ICpz dG10LCBPaWQgcmVsaWQsIGludCBmbGFncywKIAkJCWNvbnRpbnVlOwogCQl9CiAKKwkJaWYgKGlu ZGV4QW0gPT0gU1RJUl9BTV9PSUQpCisJCXsKKwkJCWVyZXBvcnQoV0FSTklORywKKwkJCQkJKGVy cmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkgZXJybXNnKCJza2lw cGluZyByZWluZGV4IG9mIGF1eGlsaWFyeSBpbmRleCBcIiVzLiVzXCIiLAorCQkJCQkJCWdldF9u YW1lc3BhY2VfbmFtZShpbmRleE5hbWVzcGFjZUlkKSwKKwkJCQkJCQlnZXRfcmVsX25hbWUoaW5k ZXhPaWQpKSkpOworCQkJaWYgKGZsYWdzICYgUkVJTkRFWF9SRUxfU1VQUFJFU1NfSU5ERVhfVVNF KQorCQkJCVJlbW92ZVJlaW5kZXhQZW5kaW5nKGluZGV4T2lkKTsKKwkJCWNvbnRpbnVlOworCQl9 CisKIAkJcmVpbmRleF9pbmRleChzdG10LCBpbmRleE9pZCwgIShmbGFncyAmIFJFSU5ERVhfUkVM X0NIRUNLX0NPTlNUUkFJTlRTKSwKIAkJCQkJICBwZXJzaXN0ZW5jZSwgcGFyYW1zKTsKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IDI3MzAwOGRiMzdmLi4yNTkzZmYyODY4 OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCisrKyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApAQCAtMTI3NSwxNiArMTI3NSwx NyBAQCBDUkVBVEUgVklFVyBwZ19zdGF0X3Byb2dyZXNzX2NyZWF0ZV9pbmRleCBBUwogICAgICAg ICAgICAgICAgICAgICAgIEVORCBBUyBjb21tYW5kLAogICAgICAgICBDQVNFIFMucGFyYW0xMCBX SEVOIDAgVEhFTiAnaW5pdGlhbGl6aW5nJwogICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDEg VEhFTiAnd2FpdGluZyBmb3Igd3JpdGVycyBiZWZvcmUgYnVpbGQnCi0gICAgICAgICAgICAgICAg ICAgICAgIFdIRU4gMiBUSEVOICdidWlsZGluZyBpbmRleCcgfHwKKyAgICAgICAgICAgICAgICAg ICAgICAgV0hFTiAyIFRIRU4gJ3dhaXRpbmcgZm9yIHdyaXRlcnMgdG8gdXNlIGF1eGlsaWFyeSBp bmRleCcKKyAgICAgICAgICAgICAgICAgICAgICAgV0hFTiAzIFRIRU4gJ2J1aWxkaW5nIGluZGV4 JyB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09BTEVTQ0UoKCc6ICcgfHwgcGdfaW5k ZXhhbV9wcm9ncmVzc19waGFzZW5hbWUoUy5wYXJhbTk6Om9pZCwgUy5wYXJhbTExKSksCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJykKLSAgICAgICAgICAgICAgICAgICAg ICAgV0hFTiAzIFRIRU4gJ3dhaXRpbmcgZm9yIHdyaXRlcnMgYmVmb3JlIHZhbGlkYXRpb24nCi0g ICAgICAgICAgICAgICAgICAgICAgIFdIRU4gNCBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBzY2Fu bmluZyBpbmRleCcKLSAgICAgICAgICAgICAgICAgICAgICAgV0hFTiA1IFRIRU4gJ2luZGV4IHZh bGlkYXRpb246IHNvcnRpbmcgdHVwbGVzJwotICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDYg VEhFTiAnaW5kZXggdmFsaWRhdGlvbjogc2Nhbm5pbmcgdGFibGUnCi0gICAgICAgICAgICAgICAg ICAgICAgIFdIRU4gNyBUSEVOICd3YWl0aW5nIGZvciBvbGQgc25hcHNob3RzJwotICAgICAgICAg ICAgICAgICAgICAgICBXSEVOIDggVEhFTiAnd2FpdGluZyBmb3IgcmVhZGVycyBiZWZvcmUgbWFy a2luZyBkZWFkJwotICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDkgVEhFTiAnd2FpdGluZyBm b3IgcmVhZGVycyBiZWZvcmUgZHJvcHBpbmcnCisgICAgICAgICAgICAgICAgICAgICAgIFdIRU4g NCBUSEVOICd3YWl0aW5nIGZvciB3cml0ZXJzIGJlZm9yZSB2YWxpZGF0aW9uJworICAgICAgICAg ICAgICAgICAgICAgICBXSEVOIDUgVEhFTiAnaW5kZXggdmFsaWRhdGlvbjogc2Nhbm5pbmcgaW5k ZXgnCisgICAgICAgICAgICAgICAgICAgICAgIFdIRU4gNiBUSEVOICdpbmRleCB2YWxpZGF0aW9u OiBzb3J0aW5nIHR1cGxlcycKKyAgICAgICAgICAgICAgICAgICAgICAgV0hFTiA3IFRIRU4gJ2lu ZGV4IHZhbGlkYXRpb246IG1lcmdpbmcgaW5kZXhlcycKKyAgICAgICAgICAgICAgICAgICAgICAg V0hFTiA4IFRIRU4gJ3dhaXRpbmcgZm9yIG9sZCBzbmFwc2hvdHMnCisgICAgICAgICAgICAgICAg ICAgICAgIFdIRU4gOSBUSEVOICd3YWl0aW5nIGZvciByZWFkZXJzIGJlZm9yZSBtYXJraW5nIGRl YWQnCisgICAgICAgICAgICAgICAgICAgICAgIFdIRU4gMTAgVEhFTiAnd2FpdGluZyBmb3IgcmVh ZGVycyBiZWZvcmUgZHJvcHBpbmcnCiAgICAgICAgICAgICAgICAgICAgICAgIEVORCBhcyBwaGFz ZSwKICAgICAgICAgUy5wYXJhbTQgQVMgbG9ja2Vyc190b3RhbCwKICAgICAgICAgUy5wYXJhbTUg QVMgbG9ja2Vyc19kb25lLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGlu Zy5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jCmluZGV4IDg3NGE4ZmM4OWFkLi4w ZWUyZmQ1ZTdkZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jCisr KyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYwpAQCAtMzI1LDcgKzMyNSw4IEBAIGNy ZWF0ZV90b2FzdF90YWJsZShSZWxhdGlvbiByZWwsIE9pZCB0b2FzdE9pZCwgT2lkIHRvYXN0SW5k ZXhPaWQsCiAJCQkJIEJUUkVFX0FNX09JRCwKIAkJCQkgcmVsLT5yZF9yZWwtPnJlbHRhYmxlc3Bh Y2UsCiAJCQkJIGNvbGxhdGlvbklkcywgb3BjbGFzc0lkcywgTlVMTCwgY29sb3B0aW9ucywgTlVM TCwgKERhdHVtKSAwLAotCQkJCSBJTkRFWF9DUkVBVEVfSVNfUFJJTUFSWSwgMCwgdHJ1ZSwgdHJ1 ZSwgTlVMTCk7CisJCQkJIElOREVYX0NSRUFURV9JU19QUklNQVJZLCAwLCB0cnVlLCB0cnVlLCBO VUxMLAorCQkJCSB0b2FzdF9yZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UpOwogCiAJdGFibGVf Y2xvc2UodG9hc3RfcmVsLCBOb0xvY2spOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy9pbmRleGNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCmluZGV4 IDc3OGQ5NTI4YzI1Li4yYzJhZTc5OGM1NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvaW5kZXhjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKQEAg LTE4Miw2ICsxODIsNyBAQCBDaGVja0luZGV4Q29tcGF0aWJsZShPaWQgb2xkSWQsCiAJCQkJCSBi b29sIGlzV2l0aG91dE92ZXJsYXBzKQogewogCWJvb2wJCWlzY29uc3RyYWludDsKKwlib29sCQlp c2F1eGlsaWFyeTsKIAlPaWQJCSAgICp0eXBlSWRzOwogCU9pZAkJICAgKmNvbGxhdGlvbklkczsK IAlPaWQJCSAgICpvcGNsYXNzSWRzOwpAQCAtMjMyLDYgKzIzMyw3IEBAIENoZWNrSW5kZXhDb21w YXRpYmxlKE9pZCBvbGRJZCwKIAogCWFtY2Fub3JkZXIgPSBhbVJvdXRpbmUtPmFtY2Fub3JkZXI7 CiAJYW1zdW1tYXJpemluZyA9IGFtUm91dGluZS0+YW1zdW1tYXJpemluZzsKKwlpc2F1eGlsaWFy eSA9IGFjY2Vzc01ldGhvZElkID09IFNUSVJfQU1fT0lEOwogCiAJLyoKIAkgKiBDb21wdXRlIHRo ZSBvcGVyYXRvciBjbGFzc2VzLCBjb2xsYXRpb25zLCBhbmQgZXhjbHVzaW9uIG9wZXJhdG9ycyBm b3IKQEAgLTI0Myw3ICsyNDUsOCBAQCBDaGVja0luZGV4Q29tcGF0aWJsZShPaWQgb2xkSWQsCiAJ ICovCiAJaW5kZXhJbmZvID0gbWFrZUluZGV4SW5mbyhudW1iZXJPZkF0dHJpYnV0ZXMsIG51bWJl ck9mQXR0cmlidXRlcywKIAkJCQkJCQkgIGFjY2Vzc01ldGhvZElkLCBOSUwsIE5JTCwgZmFsc2Us IGZhbHNlLAotCQkJCQkJCSAgZmFsc2UsIGZhbHNlLCBhbXN1bW1hcml6aW5nLCBpc1dpdGhvdXRP dmVybGFwcyk7CisJCQkJCQkJICBmYWxzZSwgZmFsc2UsIGFtc3VtbWFyaXppbmcsCisJCQkJCQkJ ICBpc1dpdGhvdXRPdmVybGFwcywgaXNhdXhpbGlhcnkpOwogCXR5cGVJZHMgPSBwYWxsb2NfYXJy YXkoT2lkLCBudW1iZXJPZkF0dHJpYnV0ZXMpOwogCWNvbGxhdGlvbklkcyA9IHBhbGxvY19hcnJh eShPaWQsIG51bWJlck9mQXR0cmlidXRlcyk7CiAJb3BjbGFzc0lkcyA9IHBhbGxvY19hcnJheShP aWQsIG51bWJlck9mQXR0cmlidXRlcyk7CkBAIC01NTMsNiArNTU2LDcgQEAgRGVmaW5lSW5kZXgo T2lkIHRhYmxlSWQsCiB7CiAJYm9vbAkJY29uY3VycmVudDsKIAljaGFyCSAgICppbmRleFJlbGF0 aW9uTmFtZTsKKwljaGFyCSAgICphdXhJbmRleFJlbGF0aW9uTmFtZSA9IE5VTEw7CiAJY2hhcgkg ICAqYWNjZXNzTWV0aG9kTmFtZTsKIAlPaWQJCSAgICp0eXBlSWRzOwogCU9pZAkJICAgKmNvbGxh dGlvbklkczsKQEAgLTU2Miw2ICs1NjYsNyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAlP aWQJCQluYW1lc3BhY2VJZDsKIAlPaWQJCQl0YWJsZXNwYWNlSWQ7CiAJT2lkCQkJY3JlYXRlZENv bnN0cmFpbnRJZCA9IEludmFsaWRPaWQ7CisJT2lkCQkJYXV4SW5kZXhSZWxhdGlvbklkID0gSW52 YWxpZE9pZDsKIAlMaXN0CSAgICppbmRleENvbE5hbWVzOwogCUxpc3QJICAgKmFsbEluZGV4UGFy YW1zOwogCVJlbGF0aW9uCXJlbDsKQEAgLTU4MywxMCArNTg4LDEwIEBAIERlZmluZUluZGV4KE9p ZCB0YWJsZUlkLAogCWludAkJCW51bWJlck9mS2V5QXR0cmlidXRlczsKIAlUcmFuc2FjdGlvbklk IGxpbWl0WG1pbjsKIAlPYmplY3RBZGRyZXNzIGFkZHJlc3M7CisJT2JqZWN0QWRkcmVzcyBhdXhB ZGRyZXNzOwogCUxvY2tSZWxJZAloZWFwcmVsaWQ7CiAJTE9DS1RBRwkJaGVhcGxvY2t0YWc7CiAJ TE9DS01PREUJbG9ja21vZGU7Ci0JU25hcHNob3QJc25hcHNob3Q7CiAJT2lkCQkJcm9vdF9zYXZl X3VzZXJpZDsKIAlpbnQJCQlyb290X3NhdmVfc2VjX2NvbnRleHQ7CiAJaW50CQkJcm9vdF9zYXZl X25lc3RsZXZlbDsKQEAgLTgzMyw2ICs4MzgsMTUgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQs CiAJCQkJCQkJCQkJCXN0bXQtPmV4Y2x1ZGVPcE5hbWVzLAogCQkJCQkJCQkJCQlzdG10LT5wcmlt YXJ5LAogCQkJCQkJCQkJCQlzdG10LT5pc2NvbnN0cmFpbnQpOworCS8qCisJICogU2VsZWN0IG5h bWUgZm9yIGF1eGlsaWFyeSBpbmRleAorCSAqLworCWlmIChjb25jdXJyZW50KQorCQlhdXhJbmRl eFJlbGF0aW9uTmFtZSA9IENob29zZVJlbGF0aW9uTmFtZShpbmRleFJlbGF0aW9uTmFtZSwKKwkJ CQkJCQkJCQkJCSAgTlVMTCwKKwkJCQkJCQkJCQkJCSAgImNjYXV4IiwKKwkJCQkJCQkJCQkJCSAg bmFtZXNwYWNlSWQsCisJCQkJCQkJCQkJCQkgIGZhbHNlKTsKIAogCS8qCiAJICogbG9vayB1cCB0 aGUgYWNjZXNzIG1ldGhvZCwgdmVyaWZ5IGl0IGNhbiBoYW5kbGUgdGhlIHJlcXVlc3RlZCBmZWF0 dXJlcwpAQCAtOTI4LDcgKzk0Miw4IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCQkJCQkJ CSAgIWNvbmN1cnJlbnQsCiAJCQkJCQkJICBjb25jdXJyZW50LAogCQkJCQkJCSAgYW1pc3N1bW1h cml6aW5nLAotCQkJCQkJCSAgc3RtdC0+aXN3aXRob3V0b3ZlcmxhcHMpOworCQkJCQkJCSAgc3Rt dC0+aXN3aXRob3V0b3ZlcmxhcHMsCisJCQkJCQkJICBmYWxzZSk7CiAKIAl0eXBlSWRzID0gcGFs bG9jX2FycmF5KE9pZCwgbnVtYmVyT2ZBdHRyaWJ1dGVzKTsKIAljb2xsYXRpb25JZHMgPSBwYWxs b2NfYXJyYXkoT2lkLCBudW1iZXJPZkF0dHJpYnV0ZXMpOwpAQCAtMTI1MSw3ICsxMjY2LDggQEAg RGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJCQkJCSBjb2xvcHRpb25zLCBOVUxMLCByZWxvcHRp b25zLAogCQkJCQkgZmxhZ3MsIGNvbnN0cl9mbGFncywKIAkJCQkJIGFsbG93U3lzdGVtVGFibGVN b2RzLCAhY2hlY2tfcmlnaHRzLAotCQkJCQkgJmNyZWF0ZWRDb25zdHJhaW50SWQpOworCQkJCQkg JmNyZWF0ZWRDb25zdHJhaW50SWQsCisJCQkJCSByZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2Up OwogCiAJT2JqZWN0QWRkcmVzc1NldChhZGRyZXNzLCBSZWxhdGlvblJlbGF0aW9uSWQsIGluZGV4 UmVsYXRpb25JZCk7CiAKQEAgLTE1OTMsNiArMTYwOSwxNiBAQCBEZWZpbmVJbmRleChPaWQgdGFi bGVJZCwKIAkJcmV0dXJuIGFkZHJlc3M7CiAJfQogCisJLyoKKwkgKiBJbiBjYXNlIG9mIGNvbmN1 cnJlbnQgYnVpbGQgLSBjcmVhdGUgYXV4aWxpYXJ5IGluZGV4IHJlY29yZC4KKwkgKi8KKwlpZiAo Y29uY3VycmVudCkKKwl7CisJCWF1eEluZGV4UmVsYXRpb25JZCA9IGluZGV4X2NvbmN1cnJlbnRs eV9jcmVhdGVfYXV4KHJlbCwgaW5kZXhSZWxhdGlvbklkLAorCQkJCQkJCQkJCQl0YWJsZXNwYWNl SWQsIGF1eEluZGV4UmVsYXRpb25OYW1lKTsKKwkJT2JqZWN0QWRkcmVzc1NldChhdXhBZGRyZXNz LCBSZWxhdGlvblJlbGF0aW9uSWQsIGF1eEluZGV4UmVsYXRpb25JZCk7CisJfQorCiAJQXRFT1hh Y3RfR1VDKGZhbHNlLCByb290X3NhdmVfbmVzdGxldmVsKTsKIAlTZXRVc2VySWRBbmRTZWNDb250 ZXh0KHJvb3Rfc2F2ZV91c2VyaWQsIHJvb3Rfc2F2ZV9zZWNfY29udGV4dCk7CiAKQEAgLTE2MjEs MTEgKzE2NDcsMTEgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJLyoKIAkgKiBGb3IgYSBj b25jdXJyZW50IGJ1aWxkLCBpdCdzIGltcG9ydGFudCB0byBtYWtlIHRoZSBjYXRhbG9nIGVudHJp ZXMKIAkgKiB2aXNpYmxlIHRvIG90aGVyIHRyYW5zYWN0aW9ucyBiZWZvcmUgd2Ugc3RhcnQgdG8g YnVpbGQgdGhlIGluZGV4LiBUaGF0Ci0JICogd2lsbCBwcmV2ZW50IHRoZW0gZnJvbSBtYWtpbmcg aW5jb21wYXRpYmxlIEhPVCB1cGRhdGVzLiAgVGhlIG5ldyBpbmRleAotCSAqIHdpbGwgYmUgbWFy a2VkIG5vdCBpbmRpc3JlYWR5IGFuZCBub3QgaW5kaXN2YWxpZCwgc28gdGhhdCBubyBvbmUgZWxz ZQotCSAqIHRyaWVzIHRvIGVpdGhlciBpbnNlcnQgaW50byBpdCBvciB1c2UgaXQgZm9yIHF1ZXJp ZXMuCisJICogd2lsbCBwcmV2ZW50IHRoZW0gZnJvbSBtYWtpbmcgaW5jb21wYXRpYmxlIEhPVCB1 cGRhdGVzLiBOZXcgaW5kZXhlcworCSAqIChtYWluIGFuZCBhdXhpbGlhcnkpIHdpbGwgYmUgbWFy a2VkIG5vdCBpbmRpc3JlYWR5IGFuZCBub3QgaW5kaXN2YWxpZCwKKwkgKiBzbyB0aGF0IG5vIG9u ZSBlbHNlIHRyaWVzIHRvIGVpdGhlciBpbnNlcnQgaW50byBpdCBvciB1c2UgaXQgZm9yIHF1ZXJp ZXMuCiAJICoKLQkgKiBXZSBtdXN0IGNvbW1pdCBvdXIgY3VycmVudCB0cmFuc2FjdGlvbiBzbyB0 aGF0IHRoZSBpbmRleCBiZWNvbWVzCisJICogV2UgbXVzdCBjb21taXQgb3VyIGN1cnJlbnQgdHJh bnNhY3Rpb24gc28gdGhhdCB0aGUgaW5kZXhlcyBiZWNvbWVzCiAJICogdmlzaWJsZTsgdGhlbiBz dGFydCBhbm90aGVyLiAgTm90ZSB0aGF0IGFsbCB0aGUgZGF0YSBzdHJ1Y3R1cmVzIHdlIGp1c3QK IAkgKiBidWlsdCBhcmUgbG9zdCBpbiB0aGUgY29tbWl0LiAgVGhlIG9ubHkgZGF0YSB3ZSBrZWVw IHBhc3QgaGVyZSBhcmUgdGhlCiAJICogcmVsYXRpb24gSURzLgpAQCAtMTYzNSw3ICsxNjYxLDcg QEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJICogY2Fubm90IGJsb2NrLCBldmVuIGlmIHNv bWVvbmUgZWxzZSBpcyB3YWl0aW5nIGZvciBhY2Nlc3MsIGJlY2F1c2Ugd2UKIAkgKiBhbHJlYWR5 IGhhdmUgdGhlIHNhbWUgbG9jayB3aXRoaW4gb3VyIHRyYW5zYWN0aW9uLgogCSAqCi0JICogTm90 ZTogd2UgZG9uJ3QgY3VycmVudGx5IGJvdGhlciB3aXRoIGEgc2Vzc2lvbiBsb2NrIG9uIHRoZSBp bmRleCwKKwkgKiBOb3RlOiB3ZSBkb24ndCBjdXJyZW50bHkgYm90aGVyIHdpdGggYSBzZXNzaW9u IGxvY2sgb24gdGhlIGluZGV4ZXMsCiAJICogYmVjYXVzZSB0aGVyZSBhcmUgbm8gb3BlcmF0aW9u cyB0aGF0IGNvdWxkIGNoYW5nZSBpdHMgc3RhdGUgd2hpbGUgd2UKIAkgKiBob2xkIGxvY2sgb24g dGhlIHBhcmVudCB0YWJsZS4gIFRoaXMgbWlnaHQgbmVlZCB0byBjaGFuZ2UgbGF0ZXIuCiAJICov CkBAIC0xNjc0LDcgKzE3MDAsNyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkgKiB3aXRo IHRoZSBvbGQgbGlzdCBvZiBpbmRleGVzLiAgVXNlIFNoYXJlTG9jayB0byBjb25zaWRlciBydW5u aW5nCiAJICogdHJhbnNhY3Rpb25zIHRoYXQgaG9sZCBsb2NrcyB0aGF0IHBlcm1pdCB3cml0aW5n IHRvIHRoZSB0YWJsZS4gIE5vdGUgd2UKIAkgKiBkbyBub3QgbmVlZCB0byB3b3JyeSBhYm91dCB4 YWN0cyB0aGF0IG9wZW4gdGhlIHRhYmxlIGZvciB3cml0aW5nIGFmdGVyCi0JICogdGhpcyBwb2lu dDsgdGhleSB3aWxsIHNlZSB0aGUgbmV3IGluZGV4IHdoZW4gdGhleSBvcGVuIGl0LgorCSAqIHRo aXMgcG9pbnQ7IHRoZXkgd2lsbCBzZWUgdGhlIG5ldyBpbmRleGVzIHdoZW4gdGhleSBvcGVuIGl0 LgogCSAqCiAJICogTm90ZTogdGhlIHJlYXNvbiB3ZSB1c2UgYWN0dWFsIGxvY2sgYWNxdWlzaXRp b24gaGVyZSwgcmF0aGVyIHRoYW4ganVzdAogCSAqIGNoZWNraW5nIHRoZSBQcm9jQXJyYXkgYW5k IHNsZWVwaW5nLCBpcyB0aGF0IGRlYWRsb2NrIGlzIHBvc3NpYmxlIGlmCkBAIC0xNjg2LDE1ICsx NzEyLDM5IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCiAJLyoKIAkgKiBBdCB0aGlzIG1v bWVudCB3ZSBhcmUgc3VyZSB0aGF0IHRoZXJlIGFyZSBubyB0cmFuc2FjdGlvbnMgd2l0aCB0aGUK LQkgKiB0YWJsZSBvcGVuIGZvciB3cml0ZSB0aGF0IGRvbid0IGhhdmUgdGhpcyBuZXcgaW5kZXgg aW4gdGhlaXIgbGlzdCBvZgorCSAqIHRhYmxlIG9wZW4gZm9yIHdyaXRlIHRoYXQgZG9uJ3QgaGF2 ZSB0aGlzIG5ldyBpbmRleGVzIGluIHRoZWlyIGxpc3Qgb2YKIAkgKiBpbmRleGVzLiAgV2UgaGF2 ZSB3YWl0ZWQgb3V0IGFsbCB0aGUgZXhpc3RpbmcgdHJhbnNhY3Rpb25zIGFuZCBhbnkgbmV3Ci0J ICogdHJhbnNhY3Rpb24gd2lsbCBoYXZlIHRoZSBuZXcgaW5kZXggaW4gaXRzIGxpc3QsIGJ1dCB0 aGUgaW5kZXggaXMgc3RpbGwKLQkgKiBtYXJrZWQgYXMgIm5vdC1yZWFkeS1mb3ItaW5zZXJ0cyIu ICBUaGUgaW5kZXggaXMgY29uc3VsdGVkIHdoaWxlCisJICogdHJhbnNhY3Rpb24gd2lsbCBoYXZl IGJvdGggbmV3IGluZGV4ZXMgaW4gaXRzIGxpc3QsIGJ1dCBpbmRleGVzIGFyZSBzdGlsbAorCSAq IG1hcmtlZCBhcyAibm90LXJlYWR5LWZvci1pbnNlcnRzIi4gVGhlIGluZGV4ZXMgYXJlIGNvbnN1 bHRlZCB3aGlsZQogCSAqIGRlY2lkaW5nIEhPVC1zYWZldHkgdGhvdWdoLiAgVGhpcyBhcnJhbmdl bWVudCBlbnN1cmVzIHRoYXQgbm8gbmV3IEhPVAogCSAqIGNoYWlucyBjYW4gYmUgY3JlYXRlZCB3 aGVyZSB0aGUgbmV3IHR1cGxlIGFuZCB0aGUgb2xkIHR1cGxlIGluIHRoZQogCSAqIGNoYWluIGhh dmUgZGlmZmVyZW50IGluZGV4IGtleXMuCiAJICoKLQkgKiBXZSBidWlsZCB0aGUgaW5kZXggdXNp bmcgYWxsIHR1cGxlcyB0aGF0IGFyZSB2aXNpYmxlIHVzaW5nIG11bHRpcGxlCisJICogTm93IGNh bGwgYnVpbGQgb24gYXV4aWxpYXJ5IGluZGV4LiBJbmRleCB3aWxsIGJlIGNyZWF0ZWQgZW1wdHkg d2l0aG91dAorCSAqIGFueSBhY3R1YWwgaGVhcCBzY2FuLCBidXQgbWFya2VkIGFzICJyZWFkeS1m b3ItaW5zZXJ0cyIuIFRoZSBnb2FsIG9mCisJICogdGhhdCBpbmRleCBpcyBhY2N1bXVsYXRlIG5l dyB0dXBsZXMgd2hpbGUgbWFpbiBpbmRleCBpcyBhY3R1YWxseSBidWlsdC4KKwkgKi8KKwlpbmRl eF9jb25jdXJyZW50bHlfYnVpbGQodGFibGVJZCwgYXV4SW5kZXhSZWxhdGlvbklkKTsKKworCUNv bW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisK KwkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRvIGlnbm9yZSB1cywgaWYgaW5kZXgg cXVhbGlmaWVzICovCisJaWYgKHNhZmVfaW5kZXgpCisJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdz KCk7CisJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhB U0UsCisJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzIpOworCS8qCisJICog Tm93IHdlIG5lZWQgdG8gZW5zdXJlIGFyZSBubyB0cmFuc2FjdGlvbnMgd2l0aCB0aGUgd2l0aCBh dXhpbGlhcnkgaW5kZXgKKwkgKiBtYXJrZWQgYXMgIm5vdC1yZWFkeS1mb3ItaW5zZXJ0cyIuCisJ ICovCisJV2FpdEZvckxvY2tlcnMoaGVhcGxvY2t0YWcsIFNoYXJlTG9jaywgdHJ1ZSk7CisKKwkv KgorCSAqIEF0IHRoaXMgbW9tZW50IHdlIGFyZSBzdXJlIHdoYXQgYWxsIG5ldyB0dXBsZXMgaW4g dGFibGUgYXJlIGluc2VydGVkIGludG8KKwkgKiBhdXhpbGlhcnkgaW5kZXguIE5vdyBpdCBpcyB0 aW1lIHRvIGJ1aWxkIHRoZSB0YXJnZXQgaW5kZXggaXRzZWxmLgorCSAqCisJICogV2UgYnVpbGQg dGhhdCBpbmRleCB1c2luZyBhbGwgdHVwbGVzIHRoYXQgYXJlIHZpc2libGUgdXNpbmcgbXVsdGlw bGUKIAkgKiByZWZyZXNoaW5nIHNuYXBzaG90cy4gV2UgY2FuIGJlIHN1cmUgdGhhdCBhbnkgSE9U IHVwZGF0ZXMgdG8KIAkgKiB0aGVzZSB0dXBsZXMgd2lsbCBiZSBjb21wYXRpYmxlIHdpdGggdGhl IGluZGV4LCBzaW5jZSBhbnkgdXBkYXRlcyBtYWRlCiAJICogYnkgdHJhbnNhY3Rpb25zIHRoYXQg ZGlkbid0IGtub3cgYWJvdXQgdGhlIGluZGV4IGFyZSBub3cgY29tbWl0dGVkIG9yCkBAIC0xNzIy LDQzICsxNzcyLDMxIEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCSAqIHRoZSBpbmRleCBt YXJrZWQgYXMgcmVhZC1vbmx5IGZvciB1cGRhdGVzLgogCSAqLwogCXBnc3RhdF9wcm9ncmVzc191 cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAotCQkJCQkJCQkgUFJPR1JFU1Nf Q1JFQVRFSURYX1BIQVNFX1dBSVRfMik7CisJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhB U0VfV0FJVF8zKTsKIAlXYWl0Rm9yTG9ja2VycyhoZWFwbG9ja3RhZywgU2hhcmVMb2NrLCB0cnVl KTsKIAogCS8qCi0JICogTm93IHRha2UgdGhlICJyZWZlcmVuY2Ugc25hcHNob3QiIHRoYXQgd2ls bCBiZSB1c2VkIGJ5IHZhbGlkYXRlX2luZGV4KCkKLQkgKiB0byBmaWx0ZXIgY2FuZGlkYXRlIHR1 cGxlcy4gIEJld2FyZSEgIFRoZXJlIG1pZ2h0IHN0aWxsIGJlIHNuYXBzaG90cyBpbgotCSAqIHVz ZSB0aGF0IHRyZWF0IHNvbWUgdHJhbnNhY3Rpb24gYXMgaW4tcHJvZ3Jlc3MgdGhhdCBvdXIgcmVm ZXJlbmNlCi0JICogc25hcHNob3QgdHJlYXRzIGFzIGNvbW1pdHRlZC4gIElmIHN1Y2ggYSByZWNl bnRseS1jb21taXR0ZWQgdHJhbnNhY3Rpb24KLQkgKiBkZWxldGVkIHR1cGxlcyBpbiB0aGUgdGFi bGUsIHdlIHdpbGwgbm90IGluY2x1ZGUgdGhlbSBpbiB0aGUgaW5kZXg7IHlldAotCSAqIHRob3Nl IHRyYW5zYWN0aW9ucyB3aGljaCBzZWUgdGhlIGRlbGV0aW5nIG9uZSBhcyBzdGlsbC1pbi1wcm9n cmVzcyB3aWxsCi0JICogZXhwZWN0IHN1Y2ggdHVwbGVzIHRvIGJlIHRoZXJlIG9uY2Ugd2UgbWFy ayB0aGUgaW5kZXggYXMgdmFsaWQuCi0JICoKLQkgKiBXZSBzb2x2ZSB0aGlzIGJ5IHdhaXRpbmcg Zm9yIGFsbCBlbmRhbmdlcmVkIHRyYW5zYWN0aW9ucyB0byBleGl0IGJlZm9yZQotCSAqIHdlIG1h cmsgdGhlIGluZGV4IGFzIHZhbGlkLgotCSAqCi0JICogV2UgYWxzbyBzZXQgQWN0aXZlU25hcHNo b3QgdG8gdGhpcyBzbmFwLCBzaW5jZSBmdW5jdGlvbnMgaW4gaW5kZXhlcyBtYXkKLQkgKiBuZWVk IGEgc25hcHNob3QuCisJICogVXBkYXRpbmcgcGdfaW5kZXggbWlnaHQgaW52b2x2ZSBUT0FTVCB0 YWJsZSBhY2Nlc3MsIHNvIGVuc3VyZSB3ZQorCSAqIGhhdmUgYSB2YWxpZCBzbmFwc2hvdC4KIAkg Ki8KLQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgp KTsKLQlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOwotCisJUHVzaEFjdGl2ZVNuYXBzaG90 KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CiAJLyoKLQkgKiBTY2FuIHRoZSBpbmRleCBhbmQg dGhlIGhlYXAsIGluc2VydCBhbnkgbWlzc2luZyBpbmRleCBlbnRyaWVzLgorCSAqIE5vdyB0YXJn ZXQgaW5kZXggaXMgbWFya2VkIGFzICJyZWFkeSIgZm9yIGFsbCB0cmFuc2FjdGlvbnMuIFNvLCBh dXhpbGlhcnkKKwkgKiBpbmRleCBpcyBub3QgbW9yZSBuZWVkZWQuIFNvLCBzdGFydCByZW1vdmlu ZyBwcm9jZXNzIGJ5IHJldmVydGluZyAicmVhZHkiCisJICogZmxhZy4KIAkgKi8KLQl2YWxpZGF0 ZV9pbmRleCh0YWJsZUlkLCBpbmRleFJlbGF0aW9uSWQsIHNuYXBzaG90KTsKLQotCS8qCi0JICog RHJvcCB0aGUgcmVmZXJlbmNlIHNuYXBzaG90LiAgV2UgbXVzdCBkbyB0aGlzIGJlZm9yZSB3YWl0 aW5nIG91dCBvdGhlcgotCSAqIHNuYXBzaG90IGhvbGRlcnMsIGVsc2Ugd2Ugd2lsbCBkZWFkbG9j ayBhZ2FpbnN0IG90aGVyIHByb2Nlc3NlcyBhbHNvCi0JICogZG9pbmcgQ1JFQVRFIElOREVYIENP TkNVUlJFTlRMWSwgd2hpY2ggd291bGQgc2VlIG91ciBzbmFwc2hvdCBhcyBvbmUKLQkgKiB0aGV5 IG11c3Qgd2FpdCBmb3IuICBCdXQgZmlyc3QsIHNhdmUgdGhlIHNuYXBzaG90J3MgeG1pbiB0byB1 c2UgYXMKLQkgKiBsaW1pdFhtaW4gZm9yIEdldEN1cnJlbnRWaXJ0dWFsWElEcygpLgotCSAqLwot CWxpbWl0WG1pbiA9IHNuYXBzaG90LT54bWluOwotCisJaW5kZXhfc2V0X3N0YXRlX2ZsYWdzKGF1 eEluZGV4UmVsYXRpb25JZCwgSU5ERVhfRFJPUF9DTEVBUl9SRUFEWSk7CiAJUG9wQWN0aXZlU25h cHNob3QoKTsKLQlVbnJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3QpOworCisJQ29tbWl0VHJhbnNh Y3Rpb25Db21tYW5kKCk7CisJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkvKiBUZWxsIGNv bmN1cnJlbnQgaW5kZXggYnVpbGRzIHRvIGlnbm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICov CisJaWYgKHNhZmVfaW5kZXgpCisJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7CisJLyoKKwkg KiBNZXJnZSBjb250ZW50IG9mIGF1eGlsaWFyeSBhbmQgdGFyZ2V0IGluZGV4ZXMgLSBpbnNlcnQg YW55IG1pc3NpbmcgaW5kZXggZW50cmllcy4KKwkgKi8KKwlsaW1pdFhtaW4gPSB2YWxpZGF0ZV9p bmRleCh0YWJsZUlkLCBpbmRleFJlbGF0aW9uSWQsIGF1eEluZGV4UmVsYXRpb25JZCk7CiAKIAkv KgogCSAqIFRoZSBzbmFwc2hvdCBzdWJzeXN0ZW0gY291bGQgc3RpbGwgY29udGFpbiByZWdpc3Rl cmVkIHNuYXBzaG90cyB0aGF0CkBAIC0xNzgxLDEyICsxODE5LDEyIEBAIERlZmluZUluZGV4KE9p ZCB0YWJsZUlkLAogCS8qCiAJICogVGhlIGluZGV4IGlzIG5vdyB2YWxpZCBpbiB0aGUgc2Vuc2Ug dGhhdCBpdCBjb250YWlucyBhbGwgY3VycmVudGx5CiAJICogaW50ZXJlc3RpbmcgdHVwbGVzLiAg QnV0IHNpbmNlIGl0IG1pZ2h0IG5vdCBjb250YWluIHR1cGxlcyBkZWxldGVkIGp1c3QKLQkgKiBi ZWZvcmUgdGhlIHJlZmVyZW5jZSBzbmFwIHdhcyB0YWtlbiwgd2UgaGF2ZSB0byB3YWl0IG91dCBh bnkKLQkgKiB0cmFuc2FjdGlvbnMgdGhhdCBtaWdodCBoYXZlIG9sZGVyIHNuYXBzaG90cy4KKwkg KiBiZWZvcmUgdGhlIGxhc3Qgc25hcHNob3QgZHVyaW5nIHZhbGlkYXRpbmcgd2FzIHRha2VuLCB3 ZSBoYXZlIHRvIHdhaXQKKwkgKiBvdXQgYW55IHRyYW5zYWN0aW9ucyB0aGF0IG1pZ2h0IGhhdmUg b2xkZXIgc25hcHNob3RzLgogCSAqLwogCUlOSkVDVElPTl9QT0lOVCgiZGVmaW5lX2luZGV4X2Jl Zm9yZV9zZXRfdmFsaWQiKTsKIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNT X0NSRUFURUlEWF9QSEFTRSwKLQkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlU XzMpOworCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNCk7CiAJV2FpdEZv ck9sZGVyU25hcHNob3RzKGxpbWl0WG1pbiwgdHJ1ZSk7CiAKIAkvKgpAQCAtMTgxMSw2ICsxODQ5 LDUzIEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCSAqIHRvIHJlcGxhbjsgc28gcmVsY2Fj aGUgZmx1c2ggb24gdGhlIGluZGV4IGl0c2VsZiB3YXMgc3VmZmljaWVudC4pCiAJICovCiAJQ2Fj aGVJbnZhbGlkYXRlUmVsY2FjaGVCeVJlbGlkKGhlYXByZWxpZC5yZWxJZCk7CisJQ29tbWl0VHJh bnNhY3Rpb25Db21tYW5kKCk7CisJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCS8qIFRl bGwgY29uY3VycmVudCBpbmRleCBidWlsZHMgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZp ZXMgKi8KKwlpZiAoc2FmZV9pbmRleCkKKwkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKKwor CXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAor CQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF81KTsKKwkvKiBOb3cgd2FpdCBm b3IgYWxsIHRyYW5zYWN0aW9uIHRvIHNlZSBhdXhpbGlhcnkgYXMgIm5vbi1yZWFkeSBmb3IgaW5z ZXJ0cyIgKi8KKwlXYWl0Rm9yTG9ja2VycyhoZWFwbG9ja3RhZywgQWNjZXNzRXhjbHVzaXZlTG9j aywgdHJ1ZSk7CisKKwlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwlTdGFydFRyYW5zYWN0 aW9uQ29tbWFuZCgpOworCisJLyoKKwkgKiBVcGRhdGluZyBwZ19pbmRleCBtaWdodCBpbnZvbHZl IFRPQVNUIHRhYmxlIGFjY2Vzcywgc28gZW5zdXJlIHdlCisJICogaGF2ZSBhIHZhbGlkIHNuYXBz aG90LgorCSAqLworCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkp OworCS8qIE5vdyBpdCBpcyB0aW1lIHRvIG1hcmsgYXV4aWxpYXJ5IGluZGV4IGFzIGRlYWQgKi8K KwlpbmRleF9jb25jdXJyZW50bHlfc2V0X2RlYWQodGFibGVJZCwgYXV4SW5kZXhSZWxhdGlvbklk KTsKKwlQb3BBY3RpdmVTbmFwc2hvdCgpOworCisJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7 CisJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCS8qIFRlbGwgY29uY3VycmVudCBpbmRl eCBidWlsZHMgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KKwlpZiAoc2FmZV9p bmRleCkKKwkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKKworCXBnc3RhdF9wcm9ncmVzc191 cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAorCQkJCQkJCSBQUk9HUkVTU19D UkVBVEVJRFhfUEhBU0VfV0FJVF82KTsKKwkvKiBOb3cgd2FpdCBmb3IgYWxsIHRyYW5zYWN0aW9u IHRvIGlnbm9yZSBhdXhpbGlhcnkgYmVjYXVzZSBpdCBpcyBkZWFkICovCisJV2FpdEZvckxvY2tl cnMoaGVhcGxvY2t0YWcsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2ssIHRydWUpOworCisJQ29tbWl0VHJh bnNhY3Rpb25Db21tYW5kKCk7CisJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCS8qCisJ ICogRHJvcCBhdXhpbGlhcnkgaW5kZXguCisJICoKKwkgKiBVc2UgUEVSRk9STV9ERUxFVElPTl9D T05DVVJSRU5UX0xPQ0sgc28gdGhhdCBpbmRleF9kcm9wKCkgdXNlcyB0aGUKKwkgKiByaWdodCBs b2NrIGxldmVsLgorCSAqLworCXBlcmZvcm1EZWxldGlvbigmYXV4QWRkcmVzcywgRFJPUF9SRVNU UklDVCwKKwkJCQkJCQkgUEVSRk9STV9ERUxFVElPTl9DT05DVVJSRU5UX0xPQ0sgfCBQRVJGT1JN X0RFTEVUSU9OX0lOVEVSTkFMKTsKIAogCS8qCiAJICogTGFzdCB0aGluZyB0byBkbyBpcyByZWxl YXNlIHRoZSBzZXNzaW9uLWxldmVsIGxvY2sgb24gdGhlIHBhcmVudCB0YWJsZS4KQEAgLTM1MzEs NiArMzYxNiw3IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3Rt dCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJdHlwZWRlZiBzdHJ1Y3QgUmVp bmRleEluZGV4SW5mbwogCXsKIAkJT2lkCQkJaW5kZXhJZDsKKwkJT2lkCQkJYXV4SW5kZXhJZDsK IAkJT2lkCQkJdGFibGVJZDsKIAkJT2lkCQkJYW1JZDsKIAkJYm9vbAkJc2FmZTsJCS8qIGZvciBz ZXRfaW5kZXhzYWZlX3Byb2NmbGFncyAqLwpAQCAtMzYzNiw4ICszNzIyLDE1IEBAIFJlaW5kZXhS ZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9u T2lkLCBjb25zdCBSZWluCiAJCQkJCU9pZAkJCWNlbGxPaWQgPSBsZmlyc3Rfb2lkKGxjKTsKIAkJ CQkJUmVsYXRpb24JaW5kZXhSZWxhdGlvbiA9IGluZGV4X29wZW4oY2VsbE9pZCwKIAkJCQkJCQkJ CQkJCQkJICAgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKKwkJCQkJSW5kZXhJbmZvKglpbmRl eEluZm8gPSBCdWlsZER1bW15SW5kZXhJbmZvKGluZGV4UmVsYXRpb24pOwogCi0JCQkJCWlmICgh aW5kZXhSZWxhdGlvbi0+cmRfaW5kZXgtPmluZGlzdmFsaWQpCisKKwkJCQkJaWYgKGluZGV4SW5m by0+aWlfQXV4aWxpYXJ5KQorCQkJCQkJZXJlcG9ydChXQVJOSU5HLChlcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCQkgZXJybXNnKCJza2lwcGluZyByZWluZGV4 IG9mIGF1eGlsaWFyeSBpbmRleCBcIiVzLiVzXCIiLAorCQkJCQkJCQkJZ2V0X25hbWVzcGFjZV9u YW1lKGdldF9yZWxfbmFtZXNwYWNlKGNlbGxPaWQpKSwKKwkJCQkJCQkJCWdldF9yZWxfbmFtZShj ZWxsT2lkKSkpKTsKKwkJCQkJZWxzZSBpZiAoIWluZGV4UmVsYXRpb24tPnJkX2luZGV4LT5pbmRp c3ZhbGlkKQogCQkJCQkJZXJlcG9ydChXQVJOSU5HLAogCQkJCQkJCQkoZXJyY29kZShFUlJDT0RF X09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKIAkJCQkJCQkJIGVycm1zZygic2tp cHBpbmcgcmVpbmRleCBvZiBpbnZhbGlkIGluZGV4IFwiJXMuJXNcIiIsCkBAIC0zNjg5LDggKzM3 ODIsMTUgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpz dG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJCQkJCU9pZAkJCWNlbGxPaWQgPSBs Zmlyc3Rfb2lkKGxjMik7CiAJCQkJCQlSZWxhdGlvbglpbmRleFJlbGF0aW9uID0gaW5kZXhfb3Bl bihjZWxsT2lkLAogCQkJCQkJCQkJCQkJCQkJICAgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsK KwkJCQkJCUluZGV4SW5mbyoJaW5kZXhJbmZvID0gQnVpbGREdW1teUluZGV4SW5mbyhpbmRleFJl bGF0aW9uKTsKIAotCQkJCQkJaWYgKCFpbmRleFJlbGF0aW9uLT5yZF9pbmRleC0+aW5kaXN2YWxp ZCkKKwkJCQkJCWlmIChpbmRleEluZm8tPmlpX0F1eGlsaWFyeSkKKwkJCQkJCQllcmVwb3J0KFdB Uk5JTkcsCisJCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCks CisJCQkJCQkJCQkgZXJybXNnKCJza2lwcGluZyByZWluZGV4IG9mIGF1eGlsaWFyeSBpbmRleCBc IiVzLiVzXCIiLAorCQkJCQkJCQkJCQlnZXRfbmFtZXNwYWNlX25hbWUoZ2V0X3JlbF9uYW1lc3Bh Y2UoY2VsbE9pZCkpLAorCQkJCQkJCQkJCQlnZXRfcmVsX25hbWUoY2VsbE9pZCkpKSk7CisJCQkJ CQllbHNlIGlmICghaW5kZXhSZWxhdGlvbi0+cmRfaW5kZXgtPmluZGlzdmFsaWQpCiAJCQkJCQkJ ZXJlcG9ydChXQVJOSU5HLAogCQkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lO X1BSRVJFUVVJU0lURV9TVEFURSksCiAJCQkJCQkJCQkgZXJybXNnKCJza2lwcGluZyByZWluZGV4 IG9mIGludmFsaWQgaW5kZXggXCIlcy4lc1wiIiwKQEAgLTM3NTEsNiArMzg1MSwxMyBAQCBSZWlu ZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxh dGlvbk9pZCwgY29uc3QgUmVpbgogCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1Rf U1VQUE9SVEVEKSwKIAkJCQkJCQkgZXJybXNnKCJjYW5ub3QgcmVpbmRleCBpbnZhbGlkIGluZGV4 IG9uIFRPQVNUIHRhYmxlIikpKTsKIAorCQkJCS8qIEF1eGlsaWFyeSBpbmRleGVzIGFyZSBub3Qg YWxsb3dlZCB0byBiZSByZWJ1aWx0ICovCisJCQkJaWYgKGdldF9yZWxfcmVsYW0ocmVsYXRpb25P aWQpID09IFNUSVJfQU1fT0lEKQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUo RVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJIGVycm1zZygicmVpbmRleCBv ZiBhdXhpbGlhcnkgaW5kZXggXCIlc1wiIG5vdCBzdXBwb3J0ZWQiLAorCQkJCQkJCQlnZXRfcmVs X25hbWUocmVsYXRpb25PaWQpKSkpOworCiAJCQkJLyoKIAkJCQkgKiBDaGVjayBpZiBwYXJlbnQg cmVsYXRpb24gY2FuIGJlIGxvY2tlZCBhbmQgaWYgaXQgZXhpc3RzLAogCQkJCSAqIHRoaXMgbmVl ZHMgdG8gYmUgZG9uZSBhdCB0aGlzIHN0YWdlIGFzIHRoZSBsaXN0IG9mIGluZGV4ZXMKQEAgLTM4 NTQsMTUgKzM5NjEsMTggQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5k ZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAlmb3JlYWNoKGxjLCBp bmRleElkcykKIAl7CiAJCWNoYXIJICAgKmNvbmN1cnJlbnROYW1lOworCQljaGFyCSAgICphdXhD b25jdXJyZW50TmFtZTsKIAkJUmVpbmRleEluZGV4SW5mbyAqaWR4ID0gbGZpcnN0KGxjKTsKIAkJ UmVpbmRleEluZGV4SW5mbyAqbmV3aWR4OwogCQlPaWQJCQluZXdJbmRleElkOworCQlPaWQJCQlh dXhJbmRleElkOwogCQlSZWxhdGlvbglpbmRleFJlbDsKIAkJUmVsYXRpb24JaGVhcFJlbDsKIAkJ T2lkCQkJc2F2ZV91c2VyaWQ7CiAJCWludAkJCXNhdmVfc2VjX2NvbnRleHQ7CiAJCWludAkJCXNh dmVfbmVzdGxldmVsOwogCQlSZWxhdGlvbgluZXdJbmRleFJlbDsKKwkJUmVsYXRpb24JYXV4SW5k ZXhSZWw7CiAJCUxvY2tSZWxJZCAgKmxvY2tyZWxpZDsKIAkJT2lkCQkJdGFibGVzcGFjZWlkOwog CkBAIC0zOTEzLDYgKzQwMjMsMTEgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0 IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJCQkJCQkJ CQkJImNjbmV3IiwKIAkJCQkJCQkJCQkJZ2V0X3JlbF9uYW1lc3BhY2UoaW5kZXhSZWwtPnJkX2lu ZGV4LT5pbmRyZWxpZCksCiAJCQkJCQkJCQkJCWZhbHNlKTsKKwkJYXV4Q29uY3VycmVudE5hbWUg PSBDaG9vc2VSZWxhdGlvbk5hbWUoZ2V0X3JlbF9uYW1lKGlkeC0+aW5kZXhJZCksCisJCQkJCQkJ CQkJCU5VTEwsCisJCQkJCQkJCQkJCSJjY2F1eCIsCisJCQkJCQkJCQkJCWdldF9yZWxfbmFtZXNw YWNlKGluZGV4UmVsLT5yZF9pbmRleC0+aW5kcmVsaWQpLAorCQkJCQkJCQkJCQlmYWxzZSk7CiAK IAkJLyogQ2hvb3NlIHRoZSBuZXcgdGFibGVzcGFjZSwgaW5kZXhlcyBvZiB0b2FzdCB0YWJsZXMg YXJlIG5vdCBtb3ZlZCAqLwogCQlpZiAoT2lkSXNWYWxpZChwYXJhbXMtPnRhYmxlc3BhY2VPaWQp ICYmCkBAIC0zOTI2LDEyICs0MDQxLDE3IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShj b25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCQkJ CQkJCQkJCQkJaWR4LT5pbmRleElkLAogCQkJCQkJCQkJCQkJCXRhYmxlc3BhY2VpZCwKIAkJCQkJ CQkJCQkJCQljb25jdXJyZW50TmFtZSk7CisJCWF1eEluZGV4SWQgPSBpbmRleF9jb25jdXJyZW50 bHlfY3JlYXRlX2F1eChoZWFwUmVsLAorCQkJCQkJCQkJCQkJICAgbmV3SW5kZXhJZCwKKwkJCQkJ CQkJCQkJCSAgIHRhYmxlc3BhY2VpZCwKKwkJCQkJCQkJCQkJCSAgIGF1eENvbmN1cnJlbnROYW1l KTsKIAogCQkvKgogCQkgKiBOb3cgb3BlbiB0aGUgcmVsYXRpb24gb2YgdGhlIG5ldyBpbmRleCwg YSBzZXNzaW9uLWxldmVsIGxvY2sgaXMKIAkJICogYWxzbyBuZWVkZWQgb24gaXQuCiAJCSAqLwog CQluZXdJbmRleFJlbCA9IGluZGV4X29wZW4obmV3SW5kZXhJZCwgU2hhcmVVcGRhdGVFeGNsdXNp dmVMb2NrKTsKKwkJYXV4SW5kZXhSZWwgPSBpbmRleF9vcGVuKGF1eEluZGV4SWQsIFNoYXJlVXBk YXRlRXhjbHVzaXZlTG9jayk7CiAKIAkJLyoKIAkJICogU2F2ZSB0aGUgbGlzdCBvZiBPSURzIGFu ZCBsb2NrcyBpbiBwcml2YXRlIGNvbnRleHQKQEAgLTM5NDAsNiArNDA2MCw3IEBAIFJlaW5kZXhS ZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9u T2lkLCBjb25zdCBSZWluCiAKIAkJbmV3aWR4ID0gcGFsbG9jX29iamVjdChSZWluZGV4SW5kZXhJ bmZvKTsKIAkJbmV3aWR4LT5pbmRleElkID0gbmV3SW5kZXhJZDsKKwkJbmV3aWR4LT5hdXhJbmRl eElkID0gYXV4SW5kZXhJZDsKIAkJbmV3aWR4LT5zYWZlID0gaWR4LT5zYWZlOwogCQluZXdpZHgt PnRhYmxlSWQgPSBpZHgtPnRhYmxlSWQ7CiAJCW5ld2lkeC0+YW1JZCA9IGlkeC0+YW1JZDsKQEAg LTM5NTgsMTAgKzQwNzksMTQgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJl aW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJbG9ja3JlbGlk ID0gcGFsbG9jX29iamVjdChMb2NrUmVsSWQpOwogCQkqbG9ja3JlbGlkID0gbmV3SW5kZXhSZWwt PnJkX2xvY2tJbmZvLmxvY2tSZWxJZDsKIAkJcmVsYXRpb25Mb2NrcyA9IGxhcHBlbmQocmVsYXRp b25Mb2NrcywgbG9ja3JlbGlkKTsKKwkJbG9ja3JlbGlkID0gcGFsbG9jX29iamVjdChMb2NrUmVs SWQpOworCQkqbG9ja3JlbGlkID0gYXV4SW5kZXhSZWwtPnJkX2xvY2tJbmZvLmxvY2tSZWxJZDsK KwkJcmVsYXRpb25Mb2NrcyA9IGxhcHBlbmQocmVsYXRpb25Mb2NrcywgbG9ja3JlbGlkKTsKIAog CQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CiAKIAkJaW5kZXhfY2xvc2UoaW5k ZXhSZWwsIE5vTG9jayk7CisJCWluZGV4X2Nsb3NlKGF1eEluZGV4UmVsLCBOb0xvY2spOwogCQlp bmRleF9jbG9zZShuZXdJbmRleFJlbCwgTm9Mb2NrKTsKIAogCQkvKiBSb2xsIGJhY2sgYW55IEdV QyBjaGFuZ2VzIGV4ZWN1dGVkIGJ5IGluZGV4IGZ1bmN0aW9ucyAqLwpAQCAtNDA0MiwxMyArNDE2 Nyw1NSBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0 bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCSAqIGRvaW5nIHRoYXQsIHdhaXQgdW50 aWwgbm8gcnVubmluZyB0cmFuc2FjdGlvbnMgY291bGQgaGF2ZSB0aGUgdGFibGUgb2YKIAkgKiB0 aGUgaW5kZXggb3BlbiB3aXRoIHRoZSBvbGQgbGlzdCBvZiBpbmRleGVzLiAgU2VlICJwaGFzZSAy IiBpbgogCSAqIERlZmluZUluZGV4KCkgZm9yIG1vcmUgZGV0YWlscy4KKwkqLworCXBnc3RhdF9w cm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAorCQkJCQkJCSBQ Uk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8xKTsKKwlXYWl0Rm9yTG9ja2Vyc011bHRpcGxl KGxvY2tUYWdzLCBTaGFyZUxvY2ssIHRydWUpOworCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgp OworCisJLyoKKwkgKiBOb3cgYnVpbGQgYWxsIGF1eGlsaWFyeSBpbmRleGVzIGFuZCBtYXJrIHRo ZW0gYXMgInJlYWR5LWZvci1pbnNlcnRzIi4KKwkgKi8KKwlmb3JlYWNoKGxjLCBuZXdJbmRleElk cykKKwl7CisJCVJlaW5kZXhJbmRleEluZm8gKm5ld2lkeCA9IGxmaXJzdChsYyk7CisKKwkJU3Rh cnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQkvKgorCQkgKiBDaGVjayBmb3IgdXNlci1yZXF1 ZXN0ZWQgYWJvcnQuICBUaGlzIGlzIGluc2lkZSBhIHRyYW5zYWN0aW9uIHNvIGFzCisJCSAqIHhh Y3QuYyBkb2VzIG5vdCBpc3N1ZSBhIHVzZWxlc3MgV0FSTklORywgYW5kIGVuc3VyZXMgdGhhdAor CQkgKiBzZXNzaW9uLWxldmVsIGxvY2tzIGFyZSBjbGVhbmVkIHVwIG9uIGFib3J0LgorCQkgKi8K KwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCQkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXhp bmcgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KKwkJaWYgKG5ld2lkeC0+c2Fm ZSkKKwkJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7CisKKwkJLyogQnVpbGQgYXV4aWxpYXJ5 IGluZGV4LCBpdCBpcyBmYXN0IC0gd2l0aG91dCBhbnkgYWN0dWFsIGhlYXAgc2NhbiwganVzdCBh biBlbXB0eSBpbmRleC4gKi8KKwkJaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKG5ld2lkeC0+dGFi bGVJZCwgbmV3aWR4LT5hdXhJbmRleElkKTsKKworCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQo KTsKKwl9CisKKwlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJLyoKKwkgKiBCZWNhdXNl IHdlIGRvbid0IHRha2UgYSBzbmFwc2hvdCBpbiB0aGlzIHRyYW5zYWN0aW9uLCB0aGVyZSdzIG5v IG5lZWQKKwkgKiB0byBzZXQgdGhlIFBST0NfSU5fU0FGRV9JQyBmbGFnIGhlcmUuCiAJICovCiAK IAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwK LQkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzEpOworCQkJCQkJCQkgUFJP R1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMik7CisJLyoKKwkgKiBXYWl0IHVudGlsIGFsbCBh dXhpbGlhcnkgaW5kZXhlcyBhcmUgdGFrZW4gaW50byBhY2NvdW50IGJ5IGFsbAorCSAqIHRyYW5z YWN0aW9ucy4KKwkgKi8KIAlXYWl0Rm9yTG9ja2Vyc011bHRpcGxlKGxvY2tUYWdzLCBTaGFyZUxv Y2ssIHRydWUpOwogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCisJLyogTm93IGl0IGlz IHRpbWUgdG8gcGVyZm9ybSB0YXJnZXQgaW5kZXggYnVpbGQuICovCiAJZm9yZWFjaChsYywgbmV3 SW5kZXhJZHMpCiAJewogCQlSZWluZGV4SW5kZXhJbmZvICpuZXdpZHggPSBsZmlyc3QobGMpOwpA QCAtNDA5MSwyNCArNDI1OCw1MiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3Qg UmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCSAqIG5lZWQg dG8gc2V0IHRoZSBQUk9DX0lOX1NBRkVfSUMgZmxhZyBoZXJlLgogCSAqLwogCisJcGdzdGF0X3By b2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCisJCQkJCQkJCSBQ Uk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8zKTsKKwlXYWl0Rm9yTG9ja2Vyc011bHRpcGxl KGxvY2tUYWdzLCBTaGFyZUxvY2ssIHRydWUpOworCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgp OworCisJLyoKKwkgKiBBdCB0aGlzIG1vbWVudCBhbGwgdGFyZ2V0IGluZGV4ZXMgYXJlIG1hcmtl ZCBhcyAicmVhZHktdG8taW5zZXJ0Ii4gU28sCisJICogd2UgYXJlIGZyZWUgdG8gc3RhcnQgcHJv Y2VzcyBvZiBkcm9wcGluZyBhdXhpbGlhcnkgaW5kZXhlcy4KKwkgKi8KKwlmb3JlYWNoKGxjLCBu ZXdJbmRleElkcykKKwl7CisJCVJlaW5kZXhJbmRleEluZm8gKm5ld2lkeCA9IGxmaXJzdChsYyk7 CisJCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCS8qCisJCSAqIENoZWNrIGZvciB1c2Vy LXJlcXVlc3RlZCBhYm9ydC4gIFRoaXMgaXMgaW5zaWRlIGEgdHJhbnNhY3Rpb24gc28gYXMKKwkJ ICogeGFjdC5jIGRvZXMgbm90IGlzc3VlIGEgdXNlbGVzcyBXQVJOSU5HLCBhbmQgZW5zdXJlcyB0 aGF0CisJCSAqIHNlc3Npb24tbGV2ZWwgbG9ja3MgYXJlIGNsZWFuZWQgdXAgb24gYWJvcnQuCisJ CSAqLworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCS8qIFRlbGwgY29uY3VycmVudCBp bmRleGluZyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLworCQlpZiAobmV3aWR4 LT5zYWZlKQorCQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKKworCQkvKgorCQkgKiBVcGRh dGluZyBwZ19pbmRleCBtaWdodCBpbnZvbHZlIFRPQVNUIHRhYmxlIGFjY2Vzcywgc28gZW5zdXJl IHdlCisJCSAqIGhhdmUgYSB2YWxpZCBzbmFwc2hvdC4KKwkJICovCisJCVB1c2hBY3RpdmVTbmFw c2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQlpbmRleF9zZXRfc3RhdGVfZmxhZ3Mo bmV3aWR4LT5hdXhJbmRleElkLCBJTkRFWF9EUk9QX0NMRUFSX1JFQURZKTsKKwkJUG9wQWN0aXZl U25hcHNob3QoKTsKKworCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwl9CisKIAkvKgog CSAqIFBoYXNlIDMgb2YgUkVJTkRFWCBDT05DVVJSRU5UTFkKIAkgKgotCSAqIER1cmluZyB0aGlz IHBoYXNlIHRoZSBvbGQgaW5kZXhlcyBjYXRjaCB1cCB3aXRoIGFueSBuZXcgdHVwbGVzIHRoYXQK KwkgKiBEdXJpbmcgdGhpcyBwaGFzZSB0aGUgbmV3IGluZGV4ZXMgY2F0Y2ggdXAgd2l0aCBhbnkg bmV3IHR1cGxlcyB0aGF0CiAJICogd2VyZSBjcmVhdGVkIGR1cmluZyB0aGUgcHJldmlvdXMgcGhh c2UuICBTZWUgInBoYXNlIDMiIGluIERlZmluZUluZGV4KCkKIAkgKiBmb3IgbW9yZSBkZXRhaWxz LgogCSAqLwotCi0JcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJ RFhfUEhBU0UsCi0JCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8yKTsKLQlX YWl0Rm9yTG9ja2Vyc011bHRpcGxlKGxvY2tUYWdzLCBTaGFyZUxvY2ssIHRydWUpOwotCUNvbW1p dFRyYW5zYWN0aW9uQ29tbWFuZCgpOwotCiAJZm9yZWFjaChsYywgbmV3SW5kZXhJZHMpCiAJewog CQlSZWluZGV4SW5kZXhJbmZvICpuZXdpZHggPSBsZmlyc3QobGMpOwogCQlUcmFuc2FjdGlvbklk IGxpbWl0WG1pbjsKLQkJU25hcHNob3QJc25hcHNob3Q7CiAKIAkJU3RhcnRUcmFuc2FjdGlvbkNv bW1hbmQoKTsKIApAQCAtNDEyMywxMyArNDMxOCw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJl bnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWlu CiAJCWlmIChuZXdpZHgtPnNhZmUpCiAJCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOwogCi0J CS8qCi0JCSAqIFRha2UgdGhlICJyZWZlcmVuY2Ugc25hcHNob3QiIHRoYXQgd2lsbCBiZSB1c2Vk IGJ5IHZhbGlkYXRlX2luZGV4KCkKLQkJICogdG8gZmlsdGVyIGNhbmRpZGF0ZSB0dXBsZXMuCi0J CSAqLwotCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hv dCgpKTsKLQkJUHVzaEFjdGl2ZVNuYXBzaG90KHNuYXBzaG90KTsKLQogCQkvKgogCQkgKiBVcGRh dGUgcHJvZ3Jlc3MgZm9yIHRoZSBpbmRleCB0byBidWlsZCwgd2l0aCB0aGUgY29ycmVjdCBwYXJl bnQKIAkJICogdGFibGUgaW52b2x2ZWQuCkBAIC00MTQxLDE2ICs0MzI5LDggQEAgUmVpbmRleFJl bGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25P aWQsIGNvbnN0IFJlaW4KIAkJcHJvZ3Jlc3NfdmFsc1szXSA9IG5ld2lkeC0+YW1JZDsKIAkJcGdz dGF0X3Byb2dyZXNzX3VwZGF0ZV9tdWx0aV9wYXJhbSg0LCBwcm9ncmVzc19pbmRleCwgcHJvZ3Jl c3NfdmFscyk7CiAKLQkJdmFsaWRhdGVfaW5kZXgobmV3aWR4LT50YWJsZUlkLCBuZXdpZHgtPmlu ZGV4SWQsIHNuYXBzaG90KTsKLQotCQkvKgotCQkgKiBXZSBjYW4gbm93IGRvIGF3YXkgd2l0aCBv dXIgYWN0aXZlIHNuYXBzaG90LCB3ZSBzdGlsbCBuZWVkIHRvIHNhdmUKLQkJICogdGhlIHhtaW4g bGltaXQgdG8gd2FpdCBmb3Igb2xkZXIgc25hcHNob3RzLgotCQkgKi8KLQkJbGltaXRYbWluID0g c25hcHNob3QtPnhtaW47Ci0KLQkJUG9wQWN0aXZlU25hcHNob3QoKTsKLQkJVW5yZWdpc3RlclNu YXBzaG90KHNuYXBzaG90KTsKKwkJbGltaXRYbWluID0gdmFsaWRhdGVfaW5kZXgobmV3aWR4LT50 YWJsZUlkLCBuZXdpZHgtPmluZGV4SWQsIG5ld2lkeC0+YXV4SW5kZXhJZCk7CisJCUFzc2VydCgh VHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkJLyoKIAkJICogVG8gZW5z dXJlIG5vIGRlYWRsb2Nrcywgd2UgbXVzdCBjb21taXQgYW5kIHN0YXJ0IHlldCBhbm90aGVyCkBA IC00MTcwLDcgKzQzNTAsNyBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVp bmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkgKiB0aGVyZSdz IG5vIG5lZWQgdG8gc2V0IHRoZSBQUk9DX0lOX1NBRkVfSUMgZmxhZyBoZXJlLgogCQkgKi8KIAkJ cGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCi0J CQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMyk7CisJCQkJCQkJCQkgUFJP R1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNCk7CiAJCVdhaXRGb3JPbGRlclNuYXBzaG90cyhs aW1pdFhtaW4sIHRydWUpOwogCiAJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwpAQCAtNDI2 MCwxNCArNDQ0MCwxNCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRl eFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCS8qCiAJICogUGhhc2Ug NSBvZiBSRUlOREVYIENPTkNVUlJFTlRMWQogCSAqCi0JICogTWFyayB0aGUgb2xkIGluZGV4ZXMg YXMgZGVhZC4gIEZpcnN0IHdlIG11c3Qgd2FpdCB1bnRpbCBubyBydW5uaW5nCi0JICogdHJhbnNh Y3Rpb24gY291bGQgYmUgdXNpbmcgdGhlIGluZGV4IGZvciBhIHF1ZXJ5LiAgU2VlIGFsc28KKwkg KiBNYXJrIHRoZSBvbGQgYW5kIGF1eGlsaWFyeSBpbmRleGVzIGFzIGRlYWQuIEZpcnN0IHdlIG11 c3Qgd2FpdCB1bnRpbCBubworCSAqIHJ1bm5pbmcgdHJhbnNhY3Rpb24gY291bGQgYmUgdXNpbmcg dGhlIGluZGV4IGZvciBhIHF1ZXJ5LiAgU2VlIGFsc28KIAkgKiBpbmRleF9kcm9wKCkgZm9yIG1v cmUgZGV0YWlscy4KIAkgKi8KIAogCUlOSkVDVElPTl9QT0lOVCgicmVpbmRleF9yZWxhdGlvbl9j b25jdXJyZW50bHlfYmVmb3JlX3NldF9kZWFkIik7CiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9w YXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCi0JCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJ RFhfUEhBU0VfV0FJVF80KTsKKwkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlU XzUpOwogCVdhaXRGb3JMb2NrZXJzTXVsdGlwbGUobG9ja1RhZ3MsIEFjY2Vzc0V4Y2x1c2l2ZUxv Y2ssIHRydWUpOwogCiAJZm9yZWFjaChsYywgaW5kZXhJZHMpCkBAIC00MjkyLDYgKzQ0NzIsMjgg QEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBP aWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAl9CiAK Kwlmb3JlYWNoKGxjLCBuZXdJbmRleElkcykKKwl7CisJCVJlaW5kZXhJbmRleEluZm8gKm5ld2lk eCA9IGxmaXJzdChsYyk7CisKKwkJLyoKKwkJICogQ2hlY2sgZm9yIHVzZXItcmVxdWVzdGVkIGFi b3J0LiAgVGhpcyBpcyBpbnNpZGUgYSB0cmFuc2FjdGlvbiBzbyBhcworCQkgKiB4YWN0LmMgZG9l cyBub3QgaXNzdWUgYSB1c2VsZXNzIFdBUk5JTkcsIGFuZCBlbnN1cmVzIHRoYXQKKwkJICogc2Vz c2lvbi1sZXZlbCBsb2NrcyBhcmUgY2xlYW5lZCB1cCBvbiBhYm9ydC4KKwkJICovCisJCUNIRUNL X0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJLyoKKwkJICogVXBkYXRpbmcgcGdfaW5kZXggbWlnaHQg aW52b2x2ZSBUT0FTVCB0YWJsZSBhY2Nlc3MsIHNvIGVuc3VyZSB3ZQorCQkgKiBoYXZlIGEgdmFs aWQgc25hcHNob3QuCisJCSAqLworCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25T bmFwc2hvdCgpKTsKKworCQlpbmRleF9jb25jdXJyZW50bHlfc2V0X2RlYWQobmV3aWR4LT50YWJs ZUlkLCBuZXdpZHgtPmF1eEluZGV4SWQpOworCisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJfQor CiAJLyogQ29tbWl0IHRoaXMgdHJhbnNhY3Rpb24gdG8gbWFrZSB0aGUgdXBkYXRlcyB2aXNpYmxl LiAqLwogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCVN0YXJ0VHJhbnNhY3Rpb25Db21t YW5kKCk7CkBAIC00MzA1LDExICs0NTA3LDExIEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRs eShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJ LyoKIAkgKiBQaGFzZSA2IG9mIFJFSU5ERVggQ09OQ1VSUkVOVExZCiAJICoKLQkgKiBEcm9wIHRo ZSBvbGQgaW5kZXhlcy4KKwkgKiBEcm9wIHRoZSBvbGQgYW5kIGF1eGlsaWFyeSBpbmRleGVzLgog CSAqLwogCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhf UEhBU0UsCi0JCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF81KTsKKwkJCQkJ CQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzYpOwogCVdhaXRGb3JMb2NrZXJzTXVs dGlwbGUobG9ja1RhZ3MsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2ssIHRydWUpOwogCiAJUHVzaEFjdGl2 ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CkBAIC00MzI5LDYgKzQ1MzEsMTgg QEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBP aWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJCWFkZF9leGFjdF9vYmplY3RfYWRkcmVzcygm b2JqZWN0LCBvYmplY3RzKTsKIAkJfQogCisJCWZvcmVhY2gobGMsIG5ld0luZGV4SWRzKQorCQl7 CisJCQlSZWluZGV4SW5kZXhJbmZvICppZHggPSBsZmlyc3QobGMpOworCQkJT2JqZWN0QWRkcmVz cyBvYmplY3Q7CisKKwkJCW9iamVjdC5jbGFzc0lkID0gUmVsYXRpb25SZWxhdGlvbklkOworCQkJ b2JqZWN0Lm9iamVjdElkID0gaWR4LT5hdXhJbmRleElkOworCQkJb2JqZWN0Lm9iamVjdFN1Yklk ID0gMDsKKworCQkJYWRkX2V4YWN0X29iamVjdF9hZGRyZXNzKCZvYmplY3QsIG9iamVjdHMpOwor CQl9CisKIAkJLyoKIAkJICogVXNlIFBFUkZPUk1fREVMRVRJT05fQ09OQ1VSUkVOVF9MT0NLIHNv IHRoYXQgaW5kZXhfZHJvcCgpIHVzZXMgdGhlCiAJCSAqIHJpZ2h0IGxvY2sgbGV2ZWwuCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVz L21ha2VmdW5jcy5jCmluZGV4IGU5N2UwOTQzZjViLi5iNTU2YmE0ODE3YiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvbWFr ZWZ1bmNzLmMKQEAgLTgzNCw3ICs4MzQsNyBAQCBJbmRleEluZm8gKgogbWFrZUluZGV4SW5mbyhp bnQgbnVtYXR0cnMsIGludCBudW1rZXlhdHRycywgT2lkIGFtb2lkLCBMaXN0ICpleHByZXNzaW9u cywKIAkJCSAgTGlzdCAqcHJlZGljYXRlcywgYm9vbCB1bmlxdWUsIGJvb2wgbnVsbHNfbm90X2Rp c3RpbmN0LAogCQkJICBib29sIGlzcmVhZHksIGJvb2wgY29uY3VycmVudCwgYm9vbCBzdW1tYXJp emluZywKLQkJCSAgYm9vbCB3aXRob3V0b3ZlcmxhcHMpCisJCQkgIGJvb2wgd2l0aG91dG92ZXJs YXBzLCBib29sIGF1eGlsaWFyeSkKIHsKIAlJbmRleEluZm8gICpuID0gbWFrZU5vZGUoSW5kZXhJ bmZvKTsKIApAQCAtODUwLDYgKzg1MCw3IEBAIG1ha2VJbmRleEluZm8oaW50IG51bWF0dHJzLCBp bnQgbnVta2V5YXR0cnMsIE9pZCBhbW9pZCwgTGlzdCAqZXhwcmVzc2lvbnMsCiAJbi0+aWlfQ29u Y3VycmVudCA9IGNvbmN1cnJlbnQ7CiAJbi0+aWlfU3VtbWFyaXppbmcgPSBzdW1tYXJpemluZzsK IAluLT5paV9XaXRob3V0T3ZlcmxhcHMgPSB3aXRob3V0b3ZlcmxhcHM7CisJbi0+aWlfQXV4aWxp YXJ5ID0gYXV4aWxpYXJ5OwogCiAJLyogc3VtbWFyaXppbmcgaW5kZXhlcyBjYW5ub3QgY29udGFp biBub24ta2V5IGF0dHJpYnV0ZXMgKi8KIAlBc3NlcnQoIXN1bW1hcml6aW5nIHx8IChudW1rZXlh dHRycyA9PSBudW1hdHRycykpOwpAQCAtODc1LDcgKzg3Niw2IEBAIG1ha2VJbmRleEluZm8oaW50 IG51bWF0dHJzLCBpbnQgbnVta2V5YXR0cnMsIE9pZCBhbW9pZCwgTGlzdCAqZXhwcmVzc2lvbnMs CiAJLyogaW5pdGlhbGl6ZSBpbmRleC1idWlsZCBzdGF0ZSB0byBkZWZhdWx0ICovCiAJbi0+aWlf QnJva2VuSG90Q2hhaW4gPSBmYWxzZTsKIAluLT5paV9QYXJhbGxlbFdvcmtlcnMgPSAwOwotCW4t PmlpX0F1eGlsaWFyeSA9IGZhbHNlOwogCiAJLyogc2V0IHVwIGZvciBwb3NzaWJsZSB1c2UgYnkg aW5kZXggQU0gKi8KIAluLT5paV9BbSA9IGFtb2lkOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv YWNjZXNzL3RhYmxlYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKaW5kZXggNTE4 MjAxM2FhYmQuLjRjZjUxZTk0NmVkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFi bGVhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKQEAgLTcwOCwxMSArNzA4 LDExIEBAIHR5cGVkZWYgc3RydWN0IFRhYmxlQW1Sb3V0aW5lCiAJCQkJCQkJCQkJICAgVGFibGVT Y2FuRGVzYyBzY2FuKTsKIAogCS8qIHNlZSB0YWJsZV9pbmRleF92YWxpZGF0ZV9zY2FuIGZvciBy ZWZlcmVuY2UgYWJvdXQgcGFyYW1ldGVycyAqLwotCXZvaWQJCSgqaW5kZXhfdmFsaWRhdGVfc2Nh bikgKFJlbGF0aW9uIHRhYmxlX3JlbCwKLQkJCQkJCQkJCQlSZWxhdGlvbiBpbmRleF9yZWwsCi0J CQkJCQkJCQkJc3RydWN0IEluZGV4SW5mbyAqaW5kZXhfaW5mbywKLQkJCQkJCQkJCQlTbmFwc2hv dCBzbmFwc2hvdCwKLQkJCQkJCQkJCQlzdHJ1Y3QgVmFsaWRhdGVJbmRleFN0YXRlICpzdGF0ZSk7 CisJVHJhbnNhY3Rpb25JZCAJCSgqaW5kZXhfdmFsaWRhdGVfc2NhbikgKFJlbGF0aW9uIHRhYmxl X3JlbCwKKwkJCQkJCQkJCQkJCVJlbGF0aW9uIGluZGV4X3JlbCwKKwkJCQkJCQkJCQkJCXN0cnVj dCBJbmRleEluZm8gKmluZGV4X2luZm8sCisJCQkJCQkJCQkJCQlzdHJ1Y3QgVmFsaWRhdGVJbmRl eFN0YXRlICpzdGF0ZSwKKwkJCQkJCQkJCQkJCXN0cnVjdCBWYWxpZGF0ZUluZGV4U3RhdGUgKmF1 eF9zdGF0ZSk7CiAKIAogCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTgxNywyMiArMTgxNywyNSBA QCB0YWJsZV9pbmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIHRhYmxlX3JlbCwKIH0KIAog LyoKLSAqIHRhYmxlX2luZGV4X3ZhbGlkYXRlX3NjYW4gLSBzZWNvbmQgdGFibGUgc2NhbiBmb3Ig Y29uY3VycmVudCBpbmRleCBidWlsZAorICogdGFibGVfaW5kZXhfdmFsaWRhdGVfc2NhbiAtIHZh bGlkYXRpb24gc2NhbiBmb3IgY29uY3VycmVudCBpbmRleCBidWlsZAogICoKICAqIFNlZSB2YWxp ZGF0ZV9pbmRleCgpIGZvciBhbiBleHBsYW5hdGlvbi4KKyAqCisgKiBOb3RlOiBpdCBpcyByZXNw b25zaWJpbGl0eSBvZiB0aGF0IGZ1bmN0aW9uIHRvIGNsb3NlIHNvcnRzdGF0ZXMgaW4KKyAqIGJv dGggc3RhdGUgYW5kIGF1eHN0YXRlLgogICovCi1zdGF0aWMgaW5saW5lIHZvaWQKK3N0YXRpYyBp bmxpbmUgVHJhbnNhY3Rpb25JZAogdGFibGVfaW5kZXhfdmFsaWRhdGVfc2NhbihSZWxhdGlvbiB0 YWJsZV9yZWwsCiAJCQkJCQkgIFJlbGF0aW9uIGluZGV4X3JlbCwKIAkJCQkJCSAgc3RydWN0IElu ZGV4SW5mbyAqaW5kZXhfaW5mbywKLQkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QsCi0JCQkJCQkg IHN0cnVjdCBWYWxpZGF0ZUluZGV4U3RhdGUgKnN0YXRlKQorCQkJCQkJICBzdHJ1Y3QgVmFsaWRh dGVJbmRleFN0YXRlICpzdGF0ZSwKKwkJCQkJCSAgc3RydWN0IFZhbGlkYXRlSW5kZXhTdGF0ZSAq YXV4c3RhdGUpCiB7Ci0JdGFibGVfcmVsLT5yZF90YWJsZWFtLT5pbmRleF92YWxpZGF0ZV9zY2Fu KHRhYmxlX3JlbCwKLQkJCQkJCQkJCQkJICAgaW5kZXhfcmVsLAotCQkJCQkJCQkJCQkgICBpbmRl eF9pbmZvLAotCQkJCQkJCQkJCQkgICBzbmFwc2hvdCwKLQkJCQkJCQkJCQkJICAgc3RhdGUpOwor CXJldHVybiB0YWJsZV9yZWwtPnJkX3RhYmxlYW0tPmluZGV4X3ZhbGlkYXRlX3NjYW4odGFibGVf cmVsLAorCQkJCQkJCQkJCQkJCSAgaW5kZXhfcmVsLAorCQkJCQkJCQkJCQkJCSAgaW5kZXhfaW5m bywKKwkJCQkJCQkJCQkJCQkgIHN0YXRlLAorCQkJCQkJCQkJCQkJCSAgYXV4c3RhdGUpOwogfQog CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvaW5kZXguaAppbmRleCA0ZGFhOGJlZjVlZS4uMDFmODVlNTdlYTIgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L2luZGV4LmgKQEAgLTI1LDYgKzI1LDcgQEAgdHlwZWRlZiBlbnVtCiB7CiAJSU5ERVhfQ1JFQVRF X1NFVF9SRUFEWSwKIAlJTkRFWF9DUkVBVEVfU0VUX1ZBTElELAorCUlOREVYX0RST1BfQ0xFQVJf UkVBRFksCiAJSU5ERVhfRFJPUF9DTEVBUl9WQUxJRCwKIAlJTkRFWF9EUk9QX1NFVF9ERUFELAog fSBJbmRleFN0YXRlRmxhZ3NBY3Rpb247CkBAIC02NSw2ICs2Niw3IEBAIGV4dGVybiB2b2lkIGlu ZGV4X2NoZWNrX3ByaW1hcnlfa2V5KFJlbGF0aW9uIGhlYXBSZWwsCiAjZGVmaW5lCUlOREVYX0NS RUFURV9JRl9OT1RfRVhJU1RTCQkJKDEgPDwgNCkKICNkZWZpbmUJSU5ERVhfQ1JFQVRFX1BBUlRJ VElPTkVECQkJKDEgPDwgNSkKICNkZWZpbmUgSU5ERVhfQ1JFQVRFX0lOVkFMSUQJCQkJKDEgPDwg NikKKyNkZWZpbmUgSU5ERVhfQ1JFQVRFX0FVWElMSUFSWQkJCQkoMSA8PCA3KQogCiBleHRlcm4g T2lkCWluZGV4X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJCQkgY29uc3QgY2hh ciAqaW5kZXhSZWxhdGlvbk5hbWUsCkBAIC04Niw3ICs4OCw4IEBAIGV4dGVybiBPaWQJaW5kZXhf Y3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQkJCSBiaXRzMTYgY29uc3RyX2ZsYWdz LAogCQkJCQkJIGJvb2wgYWxsb3dfc3lzdGVtX3RhYmxlX21vZHMsCiAJCQkJCQkgYm9vbCBpc19p bnRlcm5hbCwKLQkJCQkJCSBPaWQgKmNvbnN0cmFpbnRJZCk7CisJCQkJCQkgT2lkICpjb25zdHJh aW50SWQsCisJCQkJCQkgY2hhciByZWxwZXJzaXN0ZW5jZSk7CiAKICNkZWZpbmUJSU5ERVhfQ09O U1RSX0NSRUFURV9NQVJLX0FTX1BSSU1BUlkJKDEgPDwgMCkKICNkZWZpbmUJSU5ERVhfQ09OU1RS X0NSRUFURV9ERUZFUlJBQkxFCQkoMSA8PCAxKQpAQCAtMTAwLDYgKzEwMywxMSBAQCBleHRlcm4g T2lkCWluZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfY29weShSZWxhdGlvbiBoZWFwUmVsYXRpb24s CiAJCQkJCQkJCQkJICAgT2lkIHRhYmxlc3BhY2VPaWQsCiAJCQkJCQkJCQkJICAgY29uc3QgY2hh ciAqbmV3TmFtZSk7CiAKK2V4dGVybiBPaWQJaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9hdXgo UmVsYXRpb24gaGVhcFJlbGF0aW9uLAorCQkJCQkJCQkJCSAgT2lkIG1haW5JbmRleElkLAorCQkJ CQkJCQkJCSAgT2lkIHRhYmxlc3BhY2VPaWQsCisJCQkJCQkJCQkJICBjb25zdCBjaGFyICpuZXdO YW1lKTsKKwogZXh0ZXJuIHZvaWQgaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKE9pZCBoZWFwUmVs YXRpb25JZCwKIAkJCQkJCQkJCSBPaWQgaW5kZXhSZWxhdGlvbklkKTsKIApAQCAtMTQ1LDcgKzE1 Myw3IEBAIGV4dGVybiB2b2lkIGluZGV4X2J1aWxkKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJ CQkJCWJvb2wgaXNyZWluZGV4LAogCQkJCQkJYm9vbCBwYXJhbGxlbCk7CiAKLWV4dGVybiB2b2lk IHZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBTbmFwc2hvdCBzbmFwc2hv dCk7CitleHRlcm4gVHJhbnNhY3Rpb25JZCB2YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQg aW5kZXhJZCwgT2lkIGF1eEluZGV4SWQpOwogCiBleHRlcm4gdm9pZCBpbmRleF9zZXRfc3RhdGVf ZmxhZ3MoT2lkIGluZGV4SWQsIEluZGV4U3RhdGVGbGFnc0FjdGlvbiBhY3Rpb24pOwogCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9wcm9ncmVzcy5oIGIvc3JjL2luY2x1ZGUvY29t bWFuZHMvcHJvZ3Jlc3MuaAppbmRleCA3YzczNmU3YjAzYi4uNmUxNDU3N2VmOWIgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3Byb2dyZXNzLmgKKysrIGIvc3JjL2luY2x1ZGUvY29t bWFuZHMvcHJvZ3Jlc3MuaApAQCAtOTQsMTQgKzk0LDE1IEBACiAKIC8qIFBoYXNlcyBvZiBDUkVB VEUgSU5ERVggKGFzIGFkdmVydGlzZWQgdmlhIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSkgKi8K ICNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMQkJCTEKLSNkZWZpbmUgUFJP R1JFU1NfQ1JFQVRFSURYX1BIQVNFX0JVSUxECQkJMgotI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJ RFhfUEhBU0VfV0FJVF8yCQkJMwotI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfVkFM SURBVEVfSURYU0NBTgk0Ci0jZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9WQUxJREFU RV9TT1JUCQk1Ci0jZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9WQUxJREFURV9UQUJM RVNDQU4JNgotI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8zCQkJNworI2Rl ZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8yCQkJMgorI2RlZmluZSBQUk9HUkVT U19DUkVBVEVJRFhfUEhBU0VfQlVJTEQJCQkzCisjZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9Q SEFTRV9XQUlUXzMJCQk0CisjZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9WQUxJREFU RV9JRFhTQ0FOCTUKKyNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1ZBTElEQVRFX1NP UlQJCTYKKyNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1ZBTElEQVRFX0lEWE1FUkdF CTcKICNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNAkJCTgKICNkZWZpbmUg UFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNQkJCTkKKyNkZWZpbmUgUFJPR1JFU1NfQ1JF QVRFSURYX1BIQVNFX1dBSVRfNgkJCTEwCiAKIC8qCiAgKiBTdWJwaGFzZXMgb2YgQ1JFQVRFIElO REVYLCBmb3IgaW5kZXhfYnVpbGQuCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVj bm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDM4NTBkZGU0YWRi Li43NmYyNWVjNjg2ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgK KysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTE4Nyw4ICsxODcsOCBAQCB0 eXBlZGVmIHN0cnVjdCBFeHByU3RhdGUKICAqCQlBbUNhY2hlCQkJCXByaXZhdGUgY2FjaGUgYXJl YSBmb3IgaW5kZXggQU0KICAqCQlDb250ZXh0CQkJCW1lbW9yeSBjb250ZXh0IGhvbGRpbmcgdGhp cyBJbmRleEluZm8KICAqCi0gKiBpaV9Db25jdXJyZW50LCBpaV9Ccm9rZW5Ib3RDaGFpbiwgaWlf QXV4aWxpYXJ5IGFuZCBpaV9QYXJhbGxlbFdvcmtlcnMKLSAqIGFyZSB1c2VkIG9ubHkgZHVyaW5n IGluZGV4IGJ1aWxkOyB0aGV5J3JlIGNvbnZlbnRpb25hbGx5IHplcm9lZCBvdGhlcndpc2UuCisg KiBpaV9Db25jdXJyZW50LCBpaV9Ccm9rZW5Ib3RDaGFpbiwgYW5kIGlpX1BhcmFsbGVsV29ya2Vy cyBhcmUgdXNlZCBvbmx5CisgKiBkdXJpbmcgaW5kZXggYnVpbGQ7IHRoZXkncmUgY29udmVudGlv bmFsbHkgemVyb2VkIG90aGVyd2lzZS4KICAqIC0tLS0tLS0tLS0tLS0tLS0KICAqLwogdHlwZWRl ZiBzdHJ1Y3QgSW5kZXhJbmZvCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVu Y3MuaCBiL3NyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oCmluZGV4IDU0NzNjZTlhMjg4Li40 OTA0NzQ4ZjVmYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmgKKysr IGIvc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmgKQEAgLTk5LDcgKzk5LDggQEAgZXh0ZXJu IEluZGV4SW5mbyAqbWFrZUluZGV4SW5mbyhpbnQgbnVtYXR0cnMsIGludCBudW1rZXlhdHRycywg T2lkIGFtb2lkLAogCQkJCQkJCQlMaXN0ICpleHByZXNzaW9ucywgTGlzdCAqcHJlZGljYXRlcywK IAkJCQkJCQkJYm9vbCB1bmlxdWUsIGJvb2wgbnVsbHNfbm90X2Rpc3RpbmN0LAogCQkJCQkJCQli b29sIGlzcmVhZHksIGJvb2wgY29uY3VycmVudCwKLQkJCQkJCQkJYm9vbCBzdW1tYXJpemluZywg Ym9vbCB3aXRob3V0b3ZlcmxhcHMpOworCQkJCQkJCQlib29sIHN1bW1hcml6aW5nLCBib29sIHdp dGhvdXRvdmVybGFwcywKKwkJCQkJCQkJYm9vbCBhdXhpbGlhcnkpOwogCiBleHRlcm4gTm9kZSAq bWFrZVN0cmluZ0NvbnN0KGNoYXIgKnN0ciwgaW50IGxvY2F0aW9uKTsKIGV4dGVybiBEZWZFbGVt ICptYWtlRGVmRWxlbShjaGFyICpuYW1lLCBOb2RlICphcmcsIGludCBsb2NhdGlvbik7CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jl c2V0X3NuYXBzaG90cy5vdXQgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhw ZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKaW5kZXggOWYwM2ZhMzAzM2MuLjc4MDMxM2Y0 NzdiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0 ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rp b25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0CkBAIC0yMyw2ICsyMywx MiBAQCBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX3BhcmFsbGVsc2Nhbl9p bml0aWFsaXplJywgJ25vdGljZScpOwogIAogKDEgcm93KQogCitTRUxFQ1QgaW5qZWN0aW9uX3Bv aW50c19hdHRhY2goJ2hlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZCcsICdub3RpY2Un KTsKKyBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAKKygxIHJvdykKKwogQ1JFQVRFIFNDSEVNQSBjaWNfcmVzZXRfc25hcDsKIENSRUFURSBUQUJM RSBjaWNfcmVzZXRfc25hcC50YmwoaSBpbnQgcHJpbWFyeSBrZXksIGogaW50KTsKIElOU0VSVCBJ TlRPIGNpY19yZXNldF9zbmFwLnRibCBTRUxFQ1QgaSwgaSAqIEkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgMjAwKSBzKGkpOwpAQCAtNDMsMzAgKzQ5LDM4IEBAIEFMVEVSIFRBQkxFIGNpY19yZXNl dF9zbmFwLnRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9MCk7CiBDUkVBVEUgVU5JUVVFIElOREVY IENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOwogTk9USUNFOiAgbm90 aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9y ZXNldF9zbmFwc2hvdHMKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBw b2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitOT1RJQ0U6ICBub3RpY2Ug dHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5f bm9feGlkCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBO T1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5z Y2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3Ig aW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK05PVElD RTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwYW1faW5kZXhfdmFs aWRhdGVfc2Nhbl9ub194aWQKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFw LmlkeDsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRi bChpKTsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJs ZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dl cmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2 ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBhbV9p bmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2lj X3Jlc2V0X3NuYXAuaWR4OwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9u IHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKIE5PVElDRTogIG5v dGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNo b3RfZWZmZWN0aXZlCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9p bnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBEUk9QIElOREVYIENPTkNVUlJF TlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBP TiBjaWNfcmVzZXRfc25hcC50YmwoTU9EKGksIDIpLCBqKSBXSEVSRSBNT0QoaSwgMikgPSAwOwog Tk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2lu c2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9y IGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitOT1RJ Q0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcGFtX2luZGV4X3Zh bGlkYXRlX3NjYW5fbm9feGlkCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQg dGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cwogTk9USUNFOiAgbm90aWNlIHRy aWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZl Y3RpdmUKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFw YW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNp Y19yZXNldF9zbmFwLmlkeDsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19y ZXNldF9zbmFwLnRibChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxl KGkpOwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxl X2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKIE5PVElDRTogIG5vdGljZSB0cmlnZ2Vy ZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZl CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcGFtX2lu ZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNf cmVzZXRfc25hcC5pZHg7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24g cG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cwogTk9USUNFOiAgbm90 aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hv dF9lZmZlY3RpdmUKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2lu dCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIERST1AgSU5ERVggQ09OQ1VSUkVO VExZIGNpY19yZXNldF9zbmFwLmlkeDsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9O IGNpY19yZXNldF9zbmFwLnRibChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVf c3RhYmxlX25vX3BhcmFtKCk7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rp b24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cwpAQCAtNzYsOSAr OTAsMTEgQEAgRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JF QVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsIFVTSU5HIEJS SU4oaSk7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFi bGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cwogTk9USUNFOiAgbm90aWNlIHRyaWdn ZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3Rp dmUKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwYW1f aW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNp Y19yZXNldF9zbmFwLmlkeDsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlv biBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCiBOT1RJQ0U6ICBu b3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBz aG90X2VmZmVjdGl2ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBv aW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogRFJPUCBJTkRFWCBDT05DVVJS RU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogLS0gVGhlIHNhbWUgaW4gcGFyYWxsZWwgbW9kZQog QUxURVIgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsIFNFVCAocGFyYWxsZWxfd29ya2Vycz0yKTsK QEAgLTkxLDIzICsxMDcsMzEgQEAgU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdoZWFw X3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlJyk7CiAKIENSRUFURSBVTklRVUUgSU5ERVgg Q09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CiBOT1RJQ0U6ICBub3Rp Y2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRp YWxpemUKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFw YW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZ IGNpY19yZXNldF9zbmFwLmlkeDsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVj dGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQorTk9USUNFOiAgbm90aWNl IHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2Fu X25vX3hpZAogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JF QVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOwogTk9U SUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVs c2Nhbl9pbml0aWFsaXplCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24g cG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBSRUlOREVYIElOREVYIENP TkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVk IGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKK05PVElD RTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwYW1faW5kZXhfdmFs aWRhdGVfc2Nhbl9ub194aWQKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFw LmlkeDsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRi bChNT0QoaSwgMiksIGopIFdIRVJFIE1PRChpLCAyKSA9IDA7CiBOT1RJQ0U6ICBub3RpY2UgdHJp Z2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUK K05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwYW1faW5k ZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBw b2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQorTk9USUNFOiAgbm90aWNlIHRyaWdn ZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hp ZAogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElO REVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNp Y19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGUoaSk7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dl cmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBz aG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBh bV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0 aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTog IG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwYW1faW5kZXhfdmFsaWRh dGVfc2Nhbl9ub194aWQKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlk eDsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChp LCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlX25vX3BhcmFtKCk7CiBO T1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxs ZWxzY2FuX2luaXRpYWxpemUKQEAgLTExNiwxMyArMTQwLDE3IEBAIE5PVElDRTogIG5vdGljZSB0 cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6 ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElO REVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkgREVTQyBOVUxMUyBM QVNUKTsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJs ZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3Ig aW5qZWN0aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogUkVJTkRF WCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogTk9USUNFOiAgbm90aWNl IHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFs aXplCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcGFt X2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNf cmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVz ZXRfc25hcC50YmwgVVNJTkcgQlJJTihpKTsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9y IGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQorTk9USUNFOiAg bm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0 ZV9zY2FuX25vX3hpZAogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAu aWR4OwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxl X3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBp bmplY3Rpb24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBEUk9QIElO REVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBEUk9QIFNDSEVNQSBjaWNfcmVz ZXRfc25hcCBDQVNDQURFOwogTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byAzIG90aGVyIG9iamVj dHMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvY2lj X3Jlc2V0X3NuYXBzaG90cy5zcWwgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMv c3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsCmluZGV4IDI5NDFhYTdhZTM4Li4yNDlkMTA2MWFk YSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNf cmVzZXRfc25hcHNob3RzLnNxbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2lu dHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsCkBAIC00LDYgKzQsNyBAQCBTRUxFQ1QgaW5q ZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFj aCgnaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZScsICdub3RpY2UnKTsKIFNFTEVD VCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgndGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3Nu YXBzaG90cycsICdub3RpY2UnKTsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgndGFi bGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUnLCAnbm90aWNlJyk7CitTRUxFQ1QgaW5qZWN0aW9u X3BvaW50c19hdHRhY2goJ2hlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZCcsICdub3Rp Y2UnKTsKIAogQ1JFQVRFIFNDSEVNQSBjaWNfcmVzZXRfc25hcDsKIENSRUFURSBUQUJMRSBjaWNf cmVzZXRfc25hcC50YmwoaSBpbnQgcHJpbWFyeSBrZXksIGogaW50KTsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dCBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dAppbmRleCA5YWRlN2I4MzVlNi4uY2E3NDg0NGI1 YzYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91 dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQKQEAgLTE0 MjMsNiArMTQyMyw3IEBAIERFVEFJTDogIEtleSAoZjEpPShiKSBhbHJlYWR5IGV4aXN0cy4KIENS RUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGNvbmN1cl9pbmRleDMgT04gY29uY3VyX2hl YXAoZjIpOwogRVJST1I6ICBjb3VsZCBub3QgY3JlYXRlIHVuaXF1ZSBpbmRleCAiY29uY3VyX2lu ZGV4MyIKIERFVEFJTDogIEtleSAoZjIpPShiKSBpcyBkdXBsaWNhdGVkLgorRFJPUCBJTkRFWCBj b25jdXJfaW5kZXgzX2NjYXV4OwogLS0gdGVzdCB0aGF0IGV4cHJlc3Npb24gaW5kZXhlcyBhbmQg cGFydGlhbCBpbmRleGVzIHdvcmsgY29uY3VycmVudGx5CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVO VExZIGNvbmN1cl9pbmRleDQgb24gY29uY3VyX2hlYXAoZjIpIFdIRVJFIGYxPSdhJzsKIENSRUFU RSBJTkRFWCBDT05DVVJSRU5UTFkgY29uY3VyX2luZGV4NSBvbiBjb25jdXJfaGVhcChmMikgV0hF UkUgZjE9J3gnOwpAQCAtMzE5Nyw2ICszMTk4LDcgQEAgSU5TRVJUIElOVE8gY29uY3VyX3JlaW5k ZXhfdGFiNCBWQUxVRVMgKDEpLCAoMSksICgyKTsKIENSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VS UkVOVExZIGNvbmN1cl9yZWluZGV4X2luZDUgT04gY29uY3VyX3JlaW5kZXhfdGFiNCAoYzEpOwog RVJST1I6ICBjb3VsZCBub3QgY3JlYXRlIHVuaXF1ZSBpbmRleCAiY29uY3VyX3JlaW5kZXhfaW5k NSIKIERFVEFJTDogIEtleSAoYzEpPSgxKSBpcyBkdXBsaWNhdGVkLgorRFJPUCBJTkRFWCBjb25j dXJfcmVpbmRleF9pbmQ1X2NjYXV4OwogLS0gUmVpbmRleGluZyBjb25jdXJyZW50bHkgdGhpcyBp bmRleCBmYWlscyB3aXRoIHRoZSBzYW1lIGZhaWx1cmUuCiAtLSBUaGUgZXh0cmEgaW5kZXggY3Jl YXRlZCBpcyBpdHNlbGYgaW52YWxpZCwgYW5kIGNhbiBiZSBkcm9wcGVkLgogUkVJTkRFWCBJTkRF WCBDT05DVVJSRU5UTFkgY29uY3VyX3JlaW5kZXhfaW5kNTsKQEAgLTMyMDksOCArMzIxMSwxMCBA QCBERVRBSUw6ICBLZXkgKGMxKT0oMSkgaXMgZHVwbGljYXRlZC4KICBjMSAgICAgfCBpbnRlZ2Vy IHwgICAgICAgICAgIHwgICAgICAgICAgfCAKIEluZGV4ZXM6CiAgICAgImNvbmN1cl9yZWluZGV4 X2luZDUiIFVOSVFVRSwgYnRyZWUgKGMxKSBJTlZBTElECisgICAgImNvbmN1cl9yZWluZGV4X2lu ZDVfY2NhdXgiIHN0aXIgKGMxKSBJTlZBTElECiAgICAgImNvbmN1cl9yZWluZGV4X2luZDVfY2Nu ZXciIFVOSVFVRSwgYnRyZWUgKGMxKSBJTlZBTElECiAKK0RST1AgSU5ERVggY29uY3VyX3JlaW5k ZXhfaW5kNV9jY2F1eDsKIERST1AgSU5ERVggY29uY3VyX3JlaW5kZXhfaW5kNV9jY25ldzsKIC0t IFRoaXMgbWFrZXMgdGhlIHByZXZpb3VzIGZhaWx1cmUgZ28gYXdheSwgc28gdGhlIGluZGV4IGNh biBiZWNvbWUgdmFsaWQuCiBERUxFVEUgRlJPTSBjb25jdXJfcmVpbmRleF90YWI0IFdIRVJFIGMx ID0gMTsKQEAgLTMyMzgsNiArMzI0Miw0NCBAQCBJbmRleGVzOgogICAgICJjb25jdXJfcmVpbmRl eF9pbmQ1IiBVTklRVUUsIGJ0cmVlIChjMSkKIAogRFJPUCBUQUJMRSBjb25jdXJfcmVpbmRleF90 YWI0OworLS0gQ2hlY2sgaGFuZGxpbmcgb2YgYXV4aWxpYXJ5IGluZGV4ZXMKK0NSRUFURSBUQUJM RSBhdXhfaW5kZXhfdGFiNSAoYzEgaW50KTsKK0lOU0VSVCBJTlRPIGF1eF9pbmRleF90YWI1IFZB TFVFUyAoMSksICgxKSwgKDIpOworLS0gVGhpcyB0cmljayBjcmVhdGVzIGFuIGludmFsaWQgaW5k ZXggYW5kIGF1eGlsaWFyeSBpbmRleCBmb3IgaXQKK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VS UkVOVExZIGF1eF9pbmRleF9pbmQ2IE9OIGF1eF9pbmRleF90YWI1IChjMSk7CitFUlJPUjogIGNv dWxkIG5vdCBjcmVhdGUgdW5pcXVlIGluZGV4ICJhdXhfaW5kZXhfaW5kNiIKK0RFVEFJTDogIEtl eSAoYzEpPSgxKSBpcyBkdXBsaWNhdGVkLgorXGQgYXV4X2luZGV4X3RhYjUKKyAgICAgICAgICAg VGFibGUgInB1YmxpYy5hdXhfaW5kZXhfdGFiNSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0 aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tCisgYzEgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAg ICAgICAgIHwgCitJbmRleGVzOgorICAgICJhdXhfaW5kZXhfaW5kNiIgVU5JUVVFLCBidHJlZSAo YzEpIElOVkFMSUQKKyAgICAiYXV4X2luZGV4X2luZDZfY2NhdXgiIHN0aXIgKGMxKSBJTlZBTElE CisKKy0tIE5vdCBhbGxvd2VkIHRvIHJlaW5kZXggYXV4aWxpYXJ5IGluZGV4CitSRUlOREVYIElO REVYIGF1eF9pbmRleF9pbmQ2X2NjYXV4OworRVJST1I6ICByZWluZGV4IG9mIGF1eGlsaWFyeSBp bmRleCAiYXV4X2luZGV4X2luZDZfY2NhdXgiIG5vdCBzdXBwb3J0ZWQKKy0tIENvbmN1cnJlbnRs eSBhbHNvCitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5kNl9jY2F1eDsK K0VSUk9SOiAgcmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXggImF1eF9pbmRleF9pbmQ2X2NjYXV4 IiBub3Qgc3VwcG9ydGVkCistLSBUaGlzIG1ha2VzIHRoZSBwcmV2aW91cyBmYWlsdXJlIGdvIGF3 YXksIHNvIHRoZSBpbmRleCBjYW4gYmVjb21lIHZhbGlkLgorREVMRVRFIEZST00gY29uY3VyX3Jl aW5kZXhfdGFiNCBXSEVSRSBjMSA9IDE7CitFUlJPUjogIHJlbGF0aW9uICJjb25jdXJfcmVpbmRl eF90YWI0IiBkb2VzIG5vdCBleGlzdAorTElORSAxOiBERUxFVEUgRlJPTSBjb25jdXJfcmVpbmRl eF90YWI0IFdIRVJFIGMxID0gMTsKKyAgICAgICAgICAgICAgICAgICAgXgorLS0gU2hvdWxkIGJl IHNraXBwZWQgZHVyaW5nIHJlaW5kZXgKK1JFSU5ERVggVEFCTEUgYXV4X2luZGV4X3RhYjU7CitF UlJPUjogIGNvdWxkIG5vdCBjcmVhdGUgdW5pcXVlIGluZGV4ICJhdXhfaW5kZXhfaW5kNiIKK0RF VEFJTDogIEtleSAoYzEpPSgxKSBpcyBkdXBsaWNhdGVkLgorLS0gU2hvdWxkIGJlIHNraXBwZWQg ZHVyaW5nIGNvbmN1cnJlbnQgcmVpbmRleAorUkVJTkRFWCBUQUJMRSBDT05DVVJSRU5UTFkgYXV4 X2luZGV4X3RhYjU7CitXQVJOSU5HOiAgc2tpcHBpbmcgcmVpbmRleCBvZiBpbnZhbGlkIGluZGV4 ICJwdWJsaWMuYXV4X2luZGV4X2luZDYiCitISU5UOiAgVXNlIERST1AgSU5ERVggb3IgUkVJTkRF WCBJTkRFWC4KK1dBUk5JTkc6ICBza2lwcGluZyByZWluZGV4IG9mIGF1eGlsaWFyeSBpbmRleCAi cHVibGljLmF1eF9pbmRleF9pbmQ2X2NjYXV4IgorTk9USUNFOiAgdGFibGUgImF1eF9pbmRleF90 YWI1IiBoYXMgbm8gaW5kZXhlcyB0aGF0IGNhbiBiZSByZWluZGV4ZWQgY29uY3VycmVudGx5CitE Uk9QIFRBQkxFIGF1eF9pbmRleF90YWI1OwogLS0gQ2hlY2sgaGFuZGxpbmcgb2YgaW5kZXhlcyB3 aXRoIGV4cHJlc3Npb25zIGFuZCBwcmVkaWNhdGVzLiAgVGhlCiAtLSBkZWZpbml0aW9ucyBvZiB0 aGUgcmVidWlsdCBpbmRleGVzIHNob3VsZCBtYXRjaCB0aGUgb3JpZ2luYWwKIC0tIGRlZmluaXRp b25zLgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbmRleGluZy5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luZGV4aW5nLm91dAppbmRleCBiY2YxZGIxMWQ3 My4uM2ZlY2FhMzg4NTAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5k ZXhpbmcub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5kZXhpbmcub3V0CkBA IC0xNTg1LDEwICsxNTg1LDExIEBAIHNlbGVjdCBpbmRleHJlbGlkOjpyZWdjbGFzcywgaW5kaXN2 YWxpZCwKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgcGFy dGVkX2lzdmFsaWRfaWR4ICAgICAgICAgICAgIHwgZiAgICAgICAgICB8IHBhcnRlZF9pc3ZhbGlk X3RhYiAgICB8IAogIHBhcnRlZF9pc3ZhbGlkX2lkeF8xMSAgICAgICAgICB8IGYgICAgICAgICAg fCBwYXJ0ZWRfaXN2YWxpZF90YWJfMTEgfCBwYXJ0ZWRfaXN2YWxpZF90YWJfMV9leHByX2lkeAor IHBhcnRlZF9pc3ZhbGlkX2lkeF8xMV9jY2F1eCAgICB8IGYgICAgICAgICAgfCBwYXJ0ZWRfaXN2 YWxpZF90YWJfMTEgfCAKICBwYXJ0ZWRfaXN2YWxpZF90YWJfMTJfZXhwcl9pZHggfCB0ICAgICAg ICAgIHwgcGFydGVkX2lzdmFsaWRfdGFiXzEyIHwgcGFydGVkX2lzdmFsaWRfdGFiXzFfZXhwcl9p ZHgKICBwYXJ0ZWRfaXN2YWxpZF90YWJfMV9leHByX2lkeCAgfCBmICAgICAgICAgIHwgcGFydGVk X2lzdmFsaWRfdGFiXzEgIHwgcGFydGVkX2lzdmFsaWRfaWR4CiAgcGFydGVkX2lzdmFsaWRfdGFi XzJfZXhwcl9pZHggIHwgdCAgICAgICAgICB8IHBhcnRlZF9pc3ZhbGlkX3RhYl8yICB8IHBhcnRl ZF9pc3ZhbGlkX2lkeAotKDUgcm93cykKKyg2IHJvd3MpCiAKIGRyb3AgdGFibGUgcGFydGVkX2lz dmFsaWRfdGFiOwogLS0gQ2hlY2sgc3RhdGUgb2YgcmVwbGljYSBpbmRleGVzIHdoZW4gYXR0YWNo aW5nIGEgcGFydGl0aW9uLgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9y dWxlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAppbmRleCA2NzNj NjNiOGQxYi4uZTE0NzQwOTZhYTYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcnVsZXMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CkBA IC0yMDM3LDE0ICsyMDM3LDE1IEBAIHBnX3N0YXRfcHJvZ3Jlc3NfY3JlYXRlX2luZGV4fCBTRUxF Q1Qgcy5waWQsCiAgICAgICAgIENBU0Ugcy5wYXJhbTEwCiAgICAgICAgICAgICBXSEVOIDAgVEhF TiAnaW5pdGlhbGl6aW5nJzo6dGV4dAogICAgICAgICAgICAgV0hFTiAxIFRIRU4gJ3dhaXRpbmcg Zm9yIHdyaXRlcnMgYmVmb3JlIGJ1aWxkJzo6dGV4dAotICAgICAgICAgICAgV0hFTiAyIFRIRU4g KCdidWlsZGluZyBpbmRleCc6OnRleHQgfHwgQ09BTEVTQ0UoKCc6ICc6OnRleHQgfHwgcGdfaW5k ZXhhbV9wcm9ncmVzc19waGFzZW5hbWUoKHMucGFyYW05KTo6b2lkLCBzLnBhcmFtMTEpKSwgJyc6 OnRleHQpKQotICAgICAgICAgICAgV0hFTiAzIFRIRU4gJ3dhaXRpbmcgZm9yIHdyaXRlcnMgYmVm b3JlIHZhbGlkYXRpb24nOjp0ZXh0Ci0gICAgICAgICAgICBXSEVOIDQgVEhFTiAnaW5kZXggdmFs aWRhdGlvbjogc2Nhbm5pbmcgaW5kZXgnOjp0ZXh0Ci0gICAgICAgICAgICBXSEVOIDUgVEhFTiAn aW5kZXggdmFsaWRhdGlvbjogc29ydGluZyB0dXBsZXMnOjp0ZXh0Ci0gICAgICAgICAgICBXSEVO IDYgVEhFTiAnaW5kZXggdmFsaWRhdGlvbjogc2Nhbm5pbmcgdGFibGUnOjp0ZXh0Ci0gICAgICAg ICAgICBXSEVOIDcgVEhFTiAnd2FpdGluZyBmb3Igb2xkIHNuYXBzaG90cyc6OnRleHQKLSAgICAg ICAgICAgIFdIRU4gOCBUSEVOICd3YWl0aW5nIGZvciByZWFkZXJzIGJlZm9yZSBtYXJraW5nIGRl YWQnOjp0ZXh0Ci0gICAgICAgICAgICBXSEVOIDkgVEhFTiAnd2FpdGluZyBmb3IgcmVhZGVycyBi ZWZvcmUgZHJvcHBpbmcnOjp0ZXh0CisgICAgICAgICAgICBXSEVOIDIgVEhFTiAnd2FpdGluZyBm b3Igd3JpdGVycyB0byB1c2UgYXV4aWxpYXJ5IGluZGV4Jzo6dGV4dAorICAgICAgICAgICAgV0hF TiAzIFRIRU4gKCdidWlsZGluZyBpbmRleCc6OnRleHQgfHwgQ09BTEVTQ0UoKCc6ICc6OnRleHQg fHwgcGdfaW5kZXhhbV9wcm9ncmVzc19waGFzZW5hbWUoKHMucGFyYW05KTo6b2lkLCBzLnBhcmFt MTEpKSwgJyc6OnRleHQpKQorICAgICAgICAgICAgV0hFTiA0IFRIRU4gJ3dhaXRpbmcgZm9yIHdy aXRlcnMgYmVmb3JlIHZhbGlkYXRpb24nOjp0ZXh0CisgICAgICAgICAgICBXSEVOIDUgVEhFTiAn aW5kZXggdmFsaWRhdGlvbjogc2Nhbm5pbmcgaW5kZXgnOjp0ZXh0CisgICAgICAgICAgICBXSEVO IDYgVEhFTiAnaW5kZXggdmFsaWRhdGlvbjogc29ydGluZyB0dXBsZXMnOjp0ZXh0CisgICAgICAg ICAgICBXSEVOIDcgVEhFTiAnaW5kZXggdmFsaWRhdGlvbjogbWVyZ2luZyBpbmRleGVzJzo6dGV4 dAorICAgICAgICAgICAgV0hFTiA4IFRIRU4gJ3dhaXRpbmcgZm9yIG9sZCBzbmFwc2hvdHMnOjp0 ZXh0CisgICAgICAgICAgICBXSEVOIDkgVEhFTiAnd2FpdGluZyBmb3IgcmVhZGVycyBiZWZvcmUg bWFya2luZyBkZWFkJzo6dGV4dAorICAgICAgICAgICAgV0hFTiAxMCBUSEVOICd3YWl0aW5nIGZv ciByZWFkZXJzIGJlZm9yZSBkcm9wcGluZyc6OnRleHQKICAgICAgICAgICAgIEVMU0UgTlVMTDo6 dGV4dAogICAgICAgICBFTkQgQVMgcGhhc2UsCiAgICAgcy5wYXJhbTQgQVMgbG9ja2Vyc190b3Rh bCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsCmluZGV4IGUyMWZmNDI2NTE5Li4y Y2ZmMWFjMjliZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4 LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsCkBAIC00OTks NiArNDk5LDcgQEAgQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgSUYgTk9UIEVYSVNU UyBjb25jdXJfaW5kZXgyIE9OIGNvbmN1cl9oZWFwKGYxKTsKIElOU0VSVCBJTlRPIGNvbmN1cl9o ZWFwIFZBTFVFUyAoJ2InLCd4Jyk7CiAtLSBjaGVjayBpZiBjb25zdHJhaW50IGlzIGVuZm9yY2Vk IHByb3Blcmx5IGF0IGJ1aWxkIHRpbWUKIENSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZ IGNvbmN1cl9pbmRleDMgT04gY29uY3VyX2hlYXAoZjIpOworRFJPUCBJTkRFWCBjb25jdXJfaW5k ZXgzX2NjYXV4OwogLS0gdGVzdCB0aGF0IGV4cHJlc3Npb24gaW5kZXhlcyBhbmQgcGFydGlhbCBp bmRleGVzIHdvcmsgY29uY3VycmVudGx5CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGNvbmN1 cl9pbmRleDQgb24gY29uY3VyX2hlYXAoZjIpIFdIRVJFIGYxPSdhJzsKIENSRUFURSBJTkRFWCBD T05DVVJSRU5UTFkgY29uY3VyX2luZGV4NSBvbiBjb25jdXJfaGVhcChmMikgV0hFUkUgZjE9J3gn OwpAQCAtMTMxMSwxMCArMTMxMiwxMiBAQCBDUkVBVEUgVEFCTEUgY29uY3VyX3JlaW5kZXhfdGFi NCAoYzEgaW50KTsKIElOU0VSVCBJTlRPIGNvbmN1cl9yZWluZGV4X3RhYjQgVkFMVUVTICgxKSwg KDEpLCAoMik7CiAtLSBUaGlzIHRyaWNrIGNyZWF0ZXMgYW4gaW52YWxpZCBpbmRleC4KIENSRUFU RSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGNvbmN1cl9yZWluZGV4X2luZDUgT04gY29uY3Vy X3JlaW5kZXhfdGFiNCAoYzEpOworRFJPUCBJTkRFWCBjb25jdXJfcmVpbmRleF9pbmQ1X2NjYXV4 OwogLS0gUmVpbmRleGluZyBjb25jdXJyZW50bHkgdGhpcyBpbmRleCBmYWlscyB3aXRoIHRoZSBz YW1lIGZhaWx1cmUuCiAtLSBUaGUgZXh0cmEgaW5kZXggY3JlYXRlZCBpcyBpdHNlbGYgaW52YWxp ZCwgYW5kIGNhbiBiZSBkcm9wcGVkLgogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY29uY3Vy X3JlaW5kZXhfaW5kNTsKIFxkIGNvbmN1cl9yZWluZGV4X3RhYjQKK0RST1AgSU5ERVggY29uY3Vy X3JlaW5kZXhfaW5kNV9jY2F1eDsKIERST1AgSU5ERVggY29uY3VyX3JlaW5kZXhfaW5kNV9jY25l dzsKIC0tIFRoaXMgbWFrZXMgdGhlIHByZXZpb3VzIGZhaWx1cmUgZ28gYXdheSwgc28gdGhlIGlu ZGV4IGNhbiBiZWNvbWUgdmFsaWQuCiBERUxFVEUgRlJPTSBjb25jdXJfcmVpbmRleF90YWI0IFdI RVJFIGMxID0gMTsKQEAgLTEzMjYsNiArMTMyOSwyNCBAQCBSRUlOREVYIElOREVYIENPTkNVUlJF TlRMWSBjb25jdXJfcmVpbmRleF9pbmQ1OwogXGQgY29uY3VyX3JlaW5kZXhfdGFiNAogRFJPUCBU QUJMRSBjb25jdXJfcmVpbmRleF90YWI0OwogCistLSBDaGVjayBoYW5kbGluZyBvZiBhdXhpbGlh cnkgaW5kZXhlcworQ1JFQVRFIFRBQkxFIGF1eF9pbmRleF90YWI1IChjMSBpbnQpOworSU5TRVJU IElOVE8gYXV4X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpLCAoMik7CistLSBUaGlzIHRyaWNr IGNyZWF0ZXMgYW4gaW52YWxpZCBpbmRleCBhbmQgYXV4aWxpYXJ5IGluZGV4IGZvciBpdAorQ1JF QVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDYgT04gYXV4X2luZGV4 X3RhYjUgKGMxKTsKK1xkIGF1eF9pbmRleF90YWI1CistLSBOb3QgYWxsb3dlZCB0byByZWluZGV4 IGF1eGlsaWFyeSBpbmRleAorUkVJTkRFWCBJTkRFWCBhdXhfaW5kZXhfaW5kNl9jY2F1eDsKKy0t IENvbmN1cnJlbnRseSBhbHNvCitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhf aW5kNl9jY2F1eDsKKy0tIFRoaXMgbWFrZXMgdGhlIHByZXZpb3VzIGZhaWx1cmUgZ28gYXdheSwg c28gdGhlIGluZGV4IGNhbiBiZWNvbWUgdmFsaWQuCitERUxFVEUgRlJPTSBjb25jdXJfcmVpbmRl eF90YWI0IFdIRVJFIGMxID0gMTsKKy0tIFNob3VsZCBiZSBza2lwcGVkIGR1cmluZyByZWluZGV4 CitSRUlOREVYIFRBQkxFIGF1eF9pbmRleF90YWI1OworLS0gU2hvdWxkIGJlIHNraXBwZWQgZHVy aW5nIGNvbmN1cnJlbnQgcmVpbmRleAorUkVJTkRFWCBUQUJMRSBDT05DVVJSRU5UTFkgYXV4X2lu ZGV4X3RhYjU7CitEUk9QIFRBQkxFIGF1eF9pbmRleF90YWI1OworCiAtLSBDaGVjayBoYW5kbGlu ZyBvZiBpbmRleGVzIHdpdGggZXhwcmVzc2lvbnMgYW5kIHByZWRpY2F0ZXMuICBUaGUKIC0tIGRl ZmluaXRpb25zIG9mIHRoZSByZWJ1aWx0IGluZGV4ZXMgc2hvdWxkIG1hdGNoIHRoZSBvcmlnaW5h bAogLS0gZGVmaW5pdGlvbnMuCi0tIAoyLjQzLjAKCg== --000000000000176c55063224bb18 Content-Type: application/octet-stream; name="v17-0007-tuplestore-add-support-for-storing-Datum-values.patch" Content-Disposition: attachment; filename="v17-0007-tuplestore-add-support-for-storing-Datum-values.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m967p89a6 RnJvbSBmMmM4ZmRhNzQ5MmRkN2NlOWI5ZjlmYjI1YzZkNjFkYzhhOGQ1YTdkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAyNSBKYW4gMjAyNSAxMzozMzoyMSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjE3IDA3 LzEyXSB0dXBsZXN0b3JlOiBhZGQgc3VwcG9ydCBmb3Igc3RvcmluZyBEYXR1bSB2YWx1ZXMKCkFk ZCBhYmlsaXR5IHRvIHN0b3JlIGFuZCByZXRyaWV2ZSBpbmRpdmlkdWFsIERhdHVtIHZhbHVlcyBp biB0dXBsZXN0b3JlLCBvcHRpbWl6aW5nIHN0b3JhZ2UgYmFzZWQgb24gdHlwZToKCi0gRml4ZWQt bGVuZ3RoOiBzdG9yZXMgcmF3IGJ5dGVzIHdpdGhvdXQgbGVuZ3RoIHByZWZpeAotIFZhcmlhYmxl LWxlbmd0aDogaW5jbHVkZXMgbGVuZ3RoIHByZWZpeC9zdWZmaXgKLSBCeS12YWx1ZSB0eXBlcyBo YW5kbGVkIGlubGluZQoKVGhpcyBleHRlbmRzIHR1cGxlc3RvcmUgYmV5b25kIGp1c3QgaGFuZGxp bmcgdHVwbGVzLCBwbGFubmVkIHRvIGJlIHVzZWQgaW4gbmV4dCBwYXRjaC4KLS0tCiBzcmMvYmFj a2VuZC91dGlscy9zb3J0L3R1cGxlc3RvcmUuYyB8IDI3MCArKysrKysrKysrKysrKysrKysrKysr Ky0tLS0tCiBzcmMvaW5jbHVkZS91dGlscy90dXBsZXN0b3JlLmggICAgICB8ICAzMyArKy0tCiAy IGZpbGVzIGNoYW5nZWQsIDI0NCBpbnNlcnRpb25zKCspLCA1OSBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc3RvcmUuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL3NvcnQvdHVwbGVzdG9yZS5jCmluZGV4IGM5YWVjYWI4ZDY2Li4xMmFlNzA1YzA5MSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXN0b3JlLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXN0b3JlLmMKQEAgLTEsMTYgKzEsMTkgQEAKIC8qLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogICoKICAqIHR1cGxlc3RvcmUuYwotICoJICBHZW5lcmFsaXplZCByb3V0 aW5lcyBmb3IgdGVtcG9yYXJ5IHR1cGxlIHN0b3JhZ2UuCisgKgkgIEdlbmVyYWxpemVkIHJvdXRp bmVzIGZvciB0ZW1wb3Jhcnkgc3RvcmFnZSBvZiB0dXBsZXMgYW5kIERhdHVtcy4KKyAqCisgKiBU aGlzIG1vZHVsZSBoYW5kbGVzIHRlbXBvcmFyeSBzdG9yYWdlIG9mIGVpdGhlciB0dXBsZXMgb3Ig c2luZ2xlCisgKiBEYXR1bSB2YWx1ZXMgZm9yIHB1cnBvc2VzIHN1Y2ggYXMgTWF0ZXJpYWxpemUg bm9kZXMsIGhhc2hqb2luIGJhdGNoCisgKiBmaWxlcywgZXRjLiBJdCBpcyBlc3NlbnRpYWxseSBh IGR1bWJlZC1kb3duIHZlcnNpb24gb2YgdHVwbGVzb3J0LmM7CisgKiBpdCBkb2VzIG5vIHNvcnRp bmcgb2YgdHVwbGVzIGJ1dCBjYW4gb25seSBzdG9yZSBhbmQgcmVndXJnaXRhdGUgYSBzZXF1ZW5j ZQorICogb2YgdHVwbGVzLiAgSG93ZXZlciwgYmVjYXVzZSBubyBzb3J0IGlzIHJlcXVpcmVkLCBp dCBpcyBhbGxvd2VkIHRvIHN0YXJ0CisgKiByZWFkaW5nIHRoZSBzZXF1ZW5jZSBiZWZvcmUgaXQg aGFzIGFsbCBiZWVuIHdyaXR0ZW4uCisgKgorICogVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVs IGZvciBjdXJzb3JzLCBiZWNhdXNlIGl0IGFsbG93cyByYW5kb20gYWNjZXNzCisgKiB3aXRoaW4g dGhlIGFscmVhZHktc2Nhbm5lZCBwb3J0aW9uIG9mIGEgcXVlcnkgd2l0aG91dCBoYXZpbmcgdG8g cHJvY2VzcworICogdGhlIHVuZGVybHlpbmcgc2NhbiB0byBjb21wbGV0aW9uLgogICoKLSAqIFRo aXMgbW9kdWxlIGhhbmRsZXMgdGVtcG9yYXJ5IHN0b3JhZ2Ugb2YgdHVwbGVzIGZvciBwdXJwb3Nl cyBzdWNoCi0gKiBhcyBNYXRlcmlhbGl6ZSBub2RlcywgaGFzaGpvaW4gYmF0Y2ggZmlsZXMsIGV0 Yy4gIEl0IGlzIGVzc2VudGlhbGx5Ci0gKiBhIGR1bWJlZC1kb3duIHZlcnNpb24gb2YgdHVwbGVz b3J0LmM7IGl0IGRvZXMgbm8gc29ydGluZyBvZiB0dXBsZXMKLSAqIGJ1dCBjYW4gb25seSBzdG9y ZSBhbmQgcmVndXJnaXRhdGUgYSBzZXF1ZW5jZSBvZiB0dXBsZXMuICBIb3dldmVyLAotICogYmVj YXVzZSBubyBzb3J0IGlzIHJlcXVpcmVkLCBpdCBpcyBhbGxvd2VkIHRvIHN0YXJ0IHJlYWRpbmcg dGhlIHNlcXVlbmNlCi0gKiBiZWZvcmUgaXQgaGFzIGFsbCBiZWVuIHdyaXR0ZW4uICBUaGlzIGlz IHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIGN1cnNvcnMsCi0gKiBiZWNhdXNlIGl0IGFsbG93cyBy YW5kb20gYWNjZXNzIHdpdGhpbiB0aGUgYWxyZWFkeS1zY2FubmVkIHBvcnRpb24gb2YKLSAqIGEg cXVlcnkgd2l0aG91dCBoYXZpbmcgdG8gcHJvY2VzcyB0aGUgdW5kZXJseWluZyBzY2FuIHRvIGNv bXBsZXRpb24uCiAgKiBBbHNvLCBpdCBpcyBwb3NzaWJsZSB0byBzdXBwb3J0IG11bHRpcGxlIGlu ZGVwZW5kZW50IHJlYWQgcG9pbnRlcnMuCiAgKgogICogQSB0ZW1wb3JhcnkgZmlsZSBpcyB1c2Vk IHRvIGhhbmRsZSB0aGUgZGF0YSBpZiBpdCBleGNlZWRzIHRoZQpAQCAtNjEsNiArNjQsOCBAQAog I2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9idWZmaWxlLmgiCisjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKKyNp bmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgog I2luY2x1ZGUgInV0aWxzL3Jlc293bmVyLmgiCiAKQEAgLTExNSwxNiArMTIwLDE1IEBAIHN0cnVj dCBUdXBsZXN0b3Jlc3RhdGUKIAlCdWZGaWxlICAgICpteWZpbGU7CQkJLyogdW5kZXJseWluZyBm aWxlLCBvciBOVUxMIGlmIG5vbmUgKi8KIAlNZW1vcnlDb250ZXh0IGNvbnRleHQ7CQkvKiBtZW1v cnkgY29udGV4dCBmb3IgaG9sZGluZyB0dXBsZXMgKi8KIAlSZXNvdXJjZU93bmVyIHJlc293bmVy OwkJLyogcmVzb3duZXIgZm9yIGhvbGRpbmcgdGVtcCBmaWxlcyAqLworCU9pZAkJCWRhdHVtVHlw ZTsJCS8qIEludmFsaWRPaWQgb3Igb2lkIG9mIERhdHVtJ3MgdG8gYmUgc3RvcmVkICovCisJaW50 MTYJCWRhdHVtVHlwZUxlbjsJLyogdHlwZWxlbiBvZiB0aGF0IERhdHVtICovCisJYm9vbAkJZGF0 dW1UeXBlQnlWYWw7IC8qIGJ5LXZhbHVlIG9mIHRoYXQgYXR1bSAqLwogCiAJLyoKIAkgKiBUaGVz ZSBmdW5jdGlvbiBwb2ludGVycyBkZWNvdXBsZSB0aGUgcm91dGluZXMgdGhhdCBtdXN0IGtub3cg d2hhdCBraW5kCiAJICogb2YgdHVwbGUgd2UgYXJlIGhhbmRsaW5nIGZyb20gdGhlIHJvdXRpbmVz IHRoYXQgZG9uJ3QgbmVlZCB0byBrbm93IGl0LgogCSAqIFRoZXkgYXJlIHNldCB1cCBieSB0aGUg dHVwbGVzdG9yZV9iZWdpbl94eHggcm91dGluZXMuCiAJICoKLQkgKiAoQWx0aG91Z2ggdHVwbGVz dG9yZS5jIGN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIGhlYXAgdHVwbGVzLCBJJ3ZlIGNvcGllZAot CSAqIHRoaXMgcGFydCBvZiB0dXBsZXNvcnQuYyBzbyB0aGF0IGV4dGVuc2lvbiB0byBvdGhlciBr aW5kcyBvZiBvYmplY3RzCi0JICogd2lsbCBiZSBlYXN5IGlmIGl0J3MgZXZlciBuZWVkZWQuKQot CSAqCiAJICogRnVuY3Rpb24gdG8gY29weSBhIHN1cHBsaWVkIGlucHV0IHR1cGxlIGludG8gcGFs bG9jJ2Qgc3BhY2UuIChOQjogd2UKIAkgKiBhc3N1bWUgdGhhdCBhIHNpbmdsZSBwZnJlZSgpIGlz IGVub3VnaCB0byByZWxlYXNlIHRoZSB0dXBsZSBsYXRlciwgc28KIAkgKiB0aGUgcmVwcmVzZW50 YXRpb24gbXVzdCBiZSAiZmxhdCIgaW4gb25lIHBhbGxvYyBjaHVuay4pIHN0YXRlLT5hdmFpbE1l bQpAQCAtMTQzLDEyICsxNDcsMTggQEAgc3RydWN0IFR1cGxlc3RvcmVzdGF0ZQogCiAJLyoKIAkg KiBGdW5jdGlvbiB0byByZWFkIGEgc3RvcmVkIHR1cGxlIGZyb20gdGFwZSBiYWNrIGludG8gbWVt b3J5LiAnbGVuJyBpcwotCSAqIHRoZSBhbHJlYWR5LXJlYWQgbGVuZ3RoIG9mIHRoZSBzdG9yZWQg dHVwbGUuICBDcmVhdGUgYW5kIHJldHVybiBhCi0JICogcGFsbG9jJ2QgY29weSwgYW5kIGRlY3Jl YXNlIHN0YXRlLT5hdmFpbE1lbSBieSB0aGUgYW1vdW50IG9mIG1lbW9yeQotCSAqIHNwYWNlIGNv bnN1bWVkLgorCSAqIHRoZSBhbHJlYWR5LWtub3duIChyZWFkIG9mIGNvbnN0YW50KSBsZW5ndGgg b2YgdGhlIHN0b3JlZCB0dXBsZS4KKwkgKiBDcmVhdGUgYW5kIHJldHVybiBhIHBhbGxvYydkIGNv cHksIGFuZCBkZWNyZWFzZSBzdGF0ZS0+YXZhaWxNZW0gYnkgdGhlCisJICogYW1vdW50IG9mIG1l bW9yeSBzcGFjZSBjb25zdW1lZC4KIAkgKi8KIAl2b2lkCSAgICooKnJlYWR0dXApIChUdXBsZXN0 b3Jlc3RhdGUgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGVuKTsKIAorCS8qCisJICogRnVuY3Rpb24g dG8gZ2V0IGxlbmdoIG9mIHR1cGxlIGZyb20gdGFwZS4gVXNlZCB0byBwcm92aWRlICdsZW4nIGFy Z3VtZW50CisJICogZm9yIHJlYWR0dXAgKHNlZSBhYm92ZSkuCisJICovCisJdW5zaWduZWQgaW50 KCpsZW50dXApKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wgZW9mT0spOworCiAJLyoKIAkg KiBUaGlzIGFycmF5IGhvbGRzIHBvaW50ZXJzIHRvIHR1cGxlcyBpbiBtZW1vcnkgaWYgd2UgYXJl IGluIHN0YXRlIElOTUVNLgogCSAqIEluIHN0YXRlcyBXUklURUZJTEUgYW5kIFJFQURGSUxFIGl0 J3Mgbm90IHVzZWQuCkBAIC0xODUsNiArMTk1LDcgQEAgc3RydWN0IFR1cGxlc3RvcmVzdGF0ZQog I2RlZmluZSBDT1BZVFVQKHN0YXRlLHR1cCkJKCgqKHN0YXRlKS0+Y29weXR1cCkgKHN0YXRlLCB0 dXApKQogI2RlZmluZSBXUklURVRVUChzdGF0ZSx0dXApICgoKihzdGF0ZSktPndyaXRldHVwKSAo c3RhdGUsIHR1cCkpCiAjZGVmaW5lIFJFQURUVVAoc3RhdGUsbGVuKQkoKCooc3RhdGUpLT5yZWFk dHVwKSAoc3RhdGUsIGxlbikpCisjZGVmaW5lIExFTlRVUChzdGF0ZSxlb2ZPSykJKCgqKHN0YXRl KS0+bGVudHVwKSAoc3RhdGUsIGVvZk9LKSkKICNkZWZpbmUgTEFDS01FTShzdGF0ZSkJCSgoc3Rh dGUpLT5hdmFpbE1lbSA8IDApCiAjZGVmaW5lIFVTRU1FTShzdGF0ZSxhbXQpCSgoc3RhdGUpLT5h dmFpbE1lbSAtPSAoYW10KSkKICNkZWZpbmUgRlJFRU1FTShzdGF0ZSxhbXQpCSgoc3RhdGUpLT5h dmFpbE1lbSArPSAoYW10KSkKQEAgLTE5Myw5ICsyMDQsOSBAQCBzdHJ1Y3QgVHVwbGVzdG9yZXN0 YXRlCiAgKgogICogTk9URVMgYWJvdXQgb24tdGFwZSByZXByZXNlbnRhdGlvbiBvZiB0dXBsZXM6 CiAgKgotICogV2UgcmVxdWlyZSB0aGUgZmlyc3QgInVuc2lnbmVkIGludCIgb2YgYSBzdG9yZWQg dHVwbGUgdG8gYmUgdGhlIHRvdGFsIHNpemUKLSAqIG9uLXRhcGUgb2YgdGhlIHR1cGxlLCBpbmNs dWRpbmcgaXRzZWxmIChzbyBpdCBpcyBuZXZlciB6ZXJvKS4KLSAqIFRoZSByZW1haW5kZXIgb2Yg dGhlIHN0b3JlZCB0dXBsZQorICogSW4gY2FzZSBvZiB0dXBsZXMgd2UgdXNlIGZpcnN0ICJ1bnNp Z25lZCBpbnQiIG9mIGEgc3RvcmVkIHR1cGxlCisgKiB0byBiZSB0aGUgdG90YWwgc2l6ZSBvbi10 YXBlIG9mIHRoZSB0dXBsZSwgaW5jbHVkaW5nIGl0c2VsZgorICogKHNvIGl0IGlzIG5ldmVyIHpl cm8pLiBUaGUgcmVtYWluZGVyIG9mIHRoZSBzdG9yZWQgdHVwbGUKICAqIG1heSBvciBtYXkgbm90 IG1hdGNoIHRoZSBpbi1tZW1vcnkgcmVwcmVzZW50YXRpb24gb2YgdGhlIHR1cGxlIC0tLQogICog YW55IGNvbnZlcnNpb24gbmVlZGVkIGlzIHRoZSBqb2Igb2YgdGhlIHdyaXRldHVwIGFuZCByZWFk dHVwIHJvdXRpbmVzLgogICoKQEAgLTIwNiwxMCArMjE3LDEzIEBAIHN0cnVjdCBUdXBsZXN0b3Jl c3RhdGUKICAqIHN0YXRlLT5iYWNrd2FyZCBpcyBub3Qgc2V0LCB0aGUgd3JpdGUvcmVhZCByb3V0 aW5lcyBtYXkgb21pdCB0aGUgZXh0cmEKICAqIGxlbmd0aCB3b3JkLgogICoKKyAqIEluIGNhc2Ug b2YgRGF0dW0gd2l0aCBjb25zdGFudCBsZW5naHQgYm90aCAidW5zaWduZWQgaW50IiBhcmUgb21t aXR0ZWQuCisgKgogICogd3JpdGV0dXAgaXMgZXhwZWN0ZWQgdG8gd3JpdGUgYm90aCBsZW5ndGgg d29yZHMgYXMgd2VsbCBhcyB0aGUgdHVwbGUKICAqIGRhdGEuICBXaGVuIHJlYWR0dXAgaXMgY2Fs bGVkLCB0aGUgdGFwZSBpcyBwb3NpdGlvbmVkIGp1c3QgYWZ0ZXIgdGhlCi0gKiBmcm9udCBsZW5n dGggd29yZDsgcmVhZHR1cCBtdXN0IHJlYWQgdGhlIHR1cGxlIGRhdGEgYW5kIGFkdmFuY2UgcGFz dAotICogdGhlIGJhY2sgbGVuZ3RoIHdvcmQgKGlmIHByZXNlbnQpLgorICogZnJvbnQgbGVuZ3Ro IHdvcmQgKGlmIGl0IG5vdCBvbW1pdHRlZCBsaWtlIGluIGNhc2Ugb2YgY29udGFudC1zaXplIERh dHVtKTsKKyAqIHJlYWR0dXAgbXVzdCByZWFkIHRoZSB0dXBsZSBkYXRhIGFuZCBhZHZhbmNlIHBh c3QgdGhlIGJhY2sgbGVuZ3RoIHdvcmQKKyAqIChpZiBwcmVzZW50KS4KICAqCiAgKiBUaGUgd3Jp dGUvcmVhZCByb3V0aW5lcyBjYW4gbWFrZSB1c2Ugb2YgdGhlIHR1cGxlIGRlc2NyaXB0aW9uIGRh dGEKICAqIHN0b3JlZCBpbiB0aGUgVHVwbGVzdG9yZXN0YXRlIHJlY29yZCwgaWYgbmVlZGVkLiBU aGV5IGFyZSBhbHNvIGV4cGVjdGVkCkBAIC0yNDEsMTEgKzI1NSwxNiBAQCBzdGF0aWMgVHVwbGVz dG9yZXN0YXRlICp0dXBsZXN0b3JlX2JlZ2luX2NvbW1vbihpbnQgZWZsYWdzLAogc3RhdGljIHZv aWQgdHVwbGVzdG9yZV9wdXR0dXBsZV9jb21tb24oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdm9p ZCAqdHVwbGUpOwogc3RhdGljIHZvaWQgZHVtcHR1cGxlcyhUdXBsZXN0b3Jlc3RhdGUgKnN0YXRl KTsKIHN0YXRpYyB2b2lkIHR1cGxlc3RvcmVfdXBkYXRlbWF4KFR1cGxlc3RvcmVzdGF0ZSAqc3Rh dGUpOwotc3RhdGljIHVuc2lnbmVkIGludCBnZXRsZW4oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwg Ym9vbCBlb2ZPSyk7CisKK3N0YXRpYyB1bnNpZ25lZCBpbnQgbGVudHVwX2hlYXAoVHVwbGVzdG9y ZXN0YXRlICpzdGF0ZSwgYm9vbCBlb2ZPSyk7CiBzdGF0aWMgdm9pZCAqY29weXR1cF9oZWFwKFR1 cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIHZvaWQgKnR1cCk7CiBzdGF0aWMgdm9pZCB3cml0ZXR1cF9o ZWFwKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIHZvaWQgKnR1cCk7CiBzdGF0aWMgdm9pZCAqcmVh ZHR1cF9oZWFwKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIHVuc2lnbmVkIGludCBsZW4pOwogCitz dGF0aWMgdW5zaWduZWQgaW50IGxlbnR1cF9kYXR1bShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBi b29sIGVvZk9LKTsKK3N0YXRpYyB2b2lkICpjb3B5dHVwX2RhdHVtKFR1cGxlc3RvcmVzdGF0ZSAq c3RhdGUsIHZvaWQgKmRhdHVtKTsKK3N0YXRpYyB2b2lkIHdyaXRldHVwX2RhdHVtKFR1cGxlc3Rv cmVzdGF0ZSAqc3RhdGUsIHZvaWQgKmRhdHVtKTsKK3N0YXRpYyB2b2lkICpyZWFkdHVwX2RhdHVt KFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIHVuc2lnbmVkIGludCBsZW4pOwogCiAvKgogICoJCXR1 cGxlc3RvcmVfYmVnaW5feHh4CkBAIC0yNjgsNiArMjg3LDEyIEBAIHR1cGxlc3RvcmVfYmVnaW5f Y29tbW9uKGludCBlZmxhZ3MsIGJvb2wgaW50ZXJYYWN0LCBpbnQgbWF4S0J5dGVzKQogCXN0YXRl LT5hbGxvd2VkTWVtID0gbWF4S0J5dGVzICogKGludDY0KSAxMDI0OwogCXN0YXRlLT5hdmFpbE1l bSA9IHN0YXRlLT5hbGxvd2VkTWVtOwogCXN0YXRlLT5teWZpbGUgPSBOVUxMOworCS8qCisJICog U2V0IERhdHVtIHJlbGF0ZWQgZGF0YSB0byBpbnZhbGlkIGJ5IGRlZmF1bHQuCisJICovCisJc3Rh dGUtPmRhdHVtVHlwZSA9IEludmFsaWRPaWQ7CisJc3RhdGUtPmRhdHVtVHlwZUxlbiA9ICAwOwor CXN0YXRlLT5kYXR1bVR5cGVCeVZhbCA9IGZhbHNlOwogCiAJLyoKIAkgKiBUaGUgcGFsbG9jL3Bm cmVlIHBhdHRlcm4gZm9yIHR1cGxlIG1lbW9yeSBpcyBpbiBhIEZJRk8gcGF0dGVybi4gIEEKQEAg LTM0NSw2ICszNzAsMzYgQEAgdHVwbGVzdG9yZV9iZWdpbl9oZWFwKGJvb2wgcmFuZG9tQWNjZXNz LCBib29sIGludGVyWGFjdCwgaW50IG1heEtCeXRlcykKIAlzdGF0ZS0+Y29weXR1cCA9IGNvcHl0 dXBfaGVhcDsKIAlzdGF0ZS0+d3JpdGV0dXAgPSB3cml0ZXR1cF9oZWFwOwogCXN0YXRlLT5yZWFk dHVwID0gcmVhZHR1cF9oZWFwOworCXN0YXRlLT5sZW50dXAgPSBsZW50dXBfaGVhcDsKKworCXJl dHVybiBzdGF0ZTsKK30KKworLyoKKyAqIFRoZSBzYW1lIGFzIHR1cGxlc3RvcmVfYmVnaW5faGVh cCBidXQgY3JlYXRlIHN0b3JlIGZvciBEYXR1bSB2YWx1ZXMuCisgKi8KK1R1cGxlc3RvcmVzdGF0 ZSAqCit0dXBsZXN0b3JlX2JlZ2luX2RhdHVtKE9pZCBkYXR1bVR5cGUsIGJvb2wgcmFuZG9tQWNj ZXNzLCBib29sIGludGVyWGFjdCwgaW50IG1heEtCeXRlcykKK3sKKwlUdXBsZXN0b3Jlc3RhdGUg KnN0YXRlOworCWludAkJCWVmbGFnczsKKworCS8qCisJICogVGhpcyBpbnRlcnByZXRhdGlvbiBv ZiB0aGUgbWVhbmluZyBvZiByYW5kb21BY2Nlc3MgaXMgY29tcGF0aWJsZSB3aXRoCisJICogdGhl IHByZS04LjMgYmVoYXZpb3Igb2YgdHVwbGVzdG9yZXMuCisJICovCisJZWZsYWdzID0gcmFuZG9t QWNjZXNzID8KKwkJKEVYRUNfRkxBR19CQUNLV0FSRCB8IEVYRUNfRkxBR19SRVdJTkQpIDoKKwkJ KEVYRUNfRkxBR19SRVdJTkQpOworCisJc3RhdGUgPSB0dXBsZXN0b3JlX2JlZ2luX2NvbW1vbihl ZmxhZ3MsIGludGVyWGFjdCwgbWF4S0J5dGVzKTsKKwlzdGF0ZS0+ZGF0dW1UeXBlID0gZGF0dW1U eXBlOworCWdldF90eXBsZW5ieXZhbChzdGF0ZS0+ZGF0dW1UeXBlLCAmc3RhdGUtPmRhdHVtVHlw ZUxlbiwgJnN0YXRlLT5kYXR1bVR5cGVCeVZhbCk7CisKKwlzdGF0ZS0+Y29weXR1cCA9IGNvcHl0 dXBfZGF0dW07CisJc3RhdGUtPndyaXRldHVwID0gd3JpdGV0dXBfZGF0dW07CisJc3RhdGUtPnJl YWR0dXAgPSByZWFkdHVwX2RhdHVtOworCXN0YXRlLT5sZW50dXAgPSBsZW50dXBfZGF0dW07CiAK IAlyZXR1cm4gc3RhdGU7CiB9CkBAIC03NzYsNiArODMxLDI1IEBAIHR1cGxlc3RvcmVfcHV0dHVw bGUoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgSGVhcFR1cGxlIHR1cGxlKQogCU1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhvbGRjeHQpOwogfQogCisvKgorICogTGlrZSB0dXBsZXN0b3JlX3B1dHR1cGxl c2xvdCBidXQgZm9yIHNpbmdsZSBEYXR1bS4KKyAqLwordm9pZAordHVwbGVzdG9yZV9wdXRkYXR1 bShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBEYXR1bSBkYXR1bSkKK3sKKwlNZW1vcnlDb250ZXh0 IG9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhzdGF0ZS0+Y29udGV4dCk7CisKKwkvKgor CSAqIENvcHkgdGhlIERhdHVtLiAgKE11c3QgZG8gdGhpcyBldmVuIGluIFdSSVRFRklMRSBjYXNl LiAgTm90ZSB0aGF0CisJICogQ09QWVRVUCBpbmNsdWRlcyBVU0VNRU0sIHNvIHdlIG5lZWRuJ3Qg ZG8gdGhhdCBoZXJlLikKKwkgKi8KKwlkYXR1bSA9IFBvaW50ZXJHZXREYXR1bShDT1BZVFVQKHN0 YXRlLCBEYXR1bUdldFBvaW50ZXIoZGF0dW0pKSk7CisKKwl0dXBsZXN0b3JlX3B1dHR1cGxlX2Nv bW1vbihzdGF0ZSwgRGF0dW1HZXRQb2ludGVyKGRhdHVtKSk7CisKKwlNZW1vcnlDb250ZXh0U3dp dGNoVG8ob2xkY3h0KTsKK30KKwogLyoKICAqIFNpbWlsYXIgdG8gdHVwbGVzdG9yZV9wdXR0dXBs ZSgpLCBidXQgd29yayBmcm9tIHZhbHVlcyArIG51bGxzIGFycmF5cy4KICAqIFRoaXMgYXZvaWRz IGFuIGV4dHJhIHR1cGxlLWNvbnN0cnVjdGlvbiBvcGVyYXRpb24uCkBAIC0xMDMwLDcgKzExMDQs NyBAQCB0dXBsZXN0b3JlX2dldHR1cGxlKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wgZm9y d2FyZCwKIAkJCSpzaG91bGRfZnJlZSA9IHRydWU7CiAJCQlpZiAoZm9yd2FyZCkKIAkJCXsKLQkJ CQlpZiAoKHR1cGxlbiA9IGdldGxlbihzdGF0ZSwgdHJ1ZSkpICE9IDApCisJCQkJaWYgKCh0dXBs ZW4gPSBMRU5UVVAoc3RhdGUsIHRydWUpKSAhPSAwKQogCQkJCXsKIAkJCQkJdHVwID0gUkVBRFRV UChzdGF0ZSwgdHVwbGVuKTsKIAkJCQkJcmV0dXJuIHR1cDsKQEAgLTEwNTksNyArMTEzMyw3IEBA IHR1cGxlc3RvcmVfZ2V0dHVwbGUoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBmb3J3YXJk LAogCQkJCUFzc2VydCghc3RhdGUtPnRydW5jYXRlZCk7CiAJCQkJcmV0dXJuIE5VTEw7CiAJCQl9 Ci0JCQl0dXBsZW4gPSBnZXRsZW4oc3RhdGUsIGZhbHNlKTsKKwkJCXR1cGxlbiA9IExFTlRVUChz dGF0ZSwgZmFsc2UpOwogCiAJCQlpZiAocmVhZHB0ci0+ZW9mX3JlYWNoZWQpCiAJCQl7CkBAIC0x MDkwLDcgKzExNjQsNyBAQCB0dXBsZXN0b3JlX2dldHR1cGxlKFR1cGxlc3RvcmVzdGF0ZSAqc3Rh dGUsIGJvb2wgZm9yd2FyZCwKIAkJCQkJQXNzZXJ0KCFzdGF0ZS0+dHJ1bmNhdGVkKTsKIAkJCQkJ cmV0dXJuIE5VTEw7CiAJCQkJfQotCQkJCXR1cGxlbiA9IGdldGxlbihzdGF0ZSwgZmFsc2UpOwor CQkJCXR1cGxlbiA9IExFTlRVUChzdGF0ZSwgZmFsc2UpOwogCQkJfQogCiAJCQkvKgpAQCAtMTE1 Miw2ICsxMjI2LDI1IEBAIHR1cGxlc3RvcmVfZ2V0dHVwbGVzbG90KFR1cGxlc3RvcmVzdGF0ZSAq c3RhdGUsIGJvb2wgZm9yd2FyZCwKIAl9CiB9CiAKK2V4dGVybiBib29sIHR1cGxlc3RvcmVfZ2V0 ZGF0dW0oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBmb3J3YXJkLAorCQkJCQkJCQlib29s ICpzaG91bGRfZnJlZSwgRGF0dW0gKnJlc3VsdCkKK3sKKwlEYXR1bSBkYXR1bTsKKwkqc2hvdWxk X2ZyZWUgPSBmYWxzZTsKKworCWRhdHVtID0gKERhdHVtKSB0dXBsZXN0b3JlX2dldHR1cGxlKHN0 YXRlLCBmb3J3YXJkLCBzaG91bGRfZnJlZSk7CisJaWYgKGRhdHVtKQorCXsKKwkJKnJlc3VsdCA9 ZGF0dW07CisJCXJldHVybiB0cnVlOworCX0KKwllbHNlCisJeworCQkqcmVzdWx0ID0gUG9pbnRl ckdldERhdHVtKE5VTEwpOworCQlyZXR1cm4gZmFsc2U7CisJfQorfQorCiAvKgogICogdHVwbGVz dG9yZV9hZHZhbmNlIC0gZXhwb3J0ZWQgZnVuY3Rpb24gdG8gYWRqdXN0IHBvc2l0aW9uIHdpdGhv dXQgZmV0Y2hpbmcKICAqCkBAIC0xNTU2LDI1ICsxNjQ5LDYgQEAgdHVwbGVzdG9yZV9pbl9tZW1v cnkoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSkKIAlyZXR1cm4gKHN0YXRlLT5zdGF0dXMgPT0gVFNT X0lOTUVNKTsKIH0KIAotCi0vKgotICogVGFwZSBpbnRlcmZhY2Ugcm91dGluZXMKLSAqLwotCi1z dGF0aWMgdW5zaWduZWQgaW50Ci1nZXRsZW4oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBl b2ZPSykKLXsKLQl1bnNpZ25lZCBpbnQgbGVuOwotCXNpemVfdAkJbmJ5dGVzOwotCi0JbmJ5dGVz ID0gQnVmRmlsZVJlYWRNYXliZUVPRihzdGF0ZS0+bXlmaWxlLCAmbGVuLCBzaXplb2YobGVuKSwg ZW9mT0spOwotCWlmIChuYnl0ZXMgPT0gMCkKLQkJcmV0dXJuIDA7Ci0JZWxzZQotCQlyZXR1cm4g bGVuOwotfQotCi0KIC8qCiAgKiBSb3V0aW5lcyBzcGVjaWFsaXplZCBmb3IgSGVhcFR1cGxlIGNh c2UKICAqCkBAIC0xNTg1LDYgKzE2NTksMTkgQEAgZ2V0bGVuKFR1cGxlc3RvcmVzdGF0ZSAqc3Rh dGUsIGJvb2wgZW9mT0spCiAgKiB0byB3cml0ZSB0aGF0IHNlcGFyYXRlbHkuCiAgKi8KIAorc3Rh dGljIHVuc2lnbmVkIGludAorbGVudHVwX2hlYXAoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9v bCBlb2ZPSykKK3sKKwl1bnNpZ25lZCBpbnQgbGVuOworCXNpemVfdAkJbmJ5dGVzOworCisJbmJ5 dGVzID0gQnVmRmlsZVJlYWRNYXliZUVPRihzdGF0ZS0+bXlmaWxlLCAmbGVuLCBzaXplb2YobGVu KSwgZW9mT0spOworCWlmIChuYnl0ZXMgPT0gMCkKKwkJcmV0dXJuIDA7CisJZWxzZQorCQlyZXR1 cm4gbGVuOworfQorCiBzdGF0aWMgdm9pZCAqCiBjb3B5dHVwX2hlYXAoVHVwbGVzdG9yZXN0YXRl ICpzdGF0ZSwgdm9pZCAqdHVwKQogewpAQCAtMTYzMSwzICsxNzE4LDk4IEBAIHJlYWR0dXBfaGVh cChUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGVuKQogCQlCdWZGaWxlUmVh ZEV4YWN0KHN0YXRlLT5teWZpbGUsICZ0dXBsZW4sIHNpemVvZih0dXBsZW4pKTsKIAlyZXR1cm4g dHVwbGU7CiB9CisKKy8qCisgKiBSb3V0aW5lcyBzcGVjaWFsaXplZCBmb3IgRGF0dW0gY2FzZS4K KyAqCisgKiBIYW5kbGVzIGJvdGggZml4ZWQgYW5kIHZhcmlhYmxlLWxlbmd0aCBEYXR1bXMgZWZm aWNpZW50bHk6CisgKiAtIEZpeGVkLWxlbmd0aDogc3RvcmVzIHJhdyBieXRlcyB3aXRob3V0IGxl bmd0aCBwcmVmaXgKKyAqIC0gVmFyaWFibGUtbGVuZ3RoOiBpbmNsdWRlcyBsZW5ndGggcHJlZml4 IChhbmQgc3VmZml4IGlmIGJhY2t3YXJkIHNjYW4pCisgKiAtIEJ5LXZhbHVlIHR5cGVzIGhhbmRs ZWQgaW5saW5lIHdpdGhvdXQgZXh0cmEgY29weWluZworICovCisKK3N0YXRpYyB1bnNpZ25lZCBp bnQKK2xlbnR1cF9kYXR1bShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBib29sIGVvZk9LKQorewor CXVuc2lnbmVkIGludCBsZW47CisJc2l6ZV90CQluYnl0ZXM7CisKKwlBc3NlcnQoc3RhdGUtPmRh dHVtVHlwZSAhPSBJbnZhbGlkT2lkKTsKKworCWlmIChzdGF0ZS0+ZGF0dW1UeXBlTGVuID4gMCkK KwkJcmV0dXJuIHN0YXRlLT5kYXR1bVR5cGVMZW47CisKKwluYnl0ZXMgPSBCdWZGaWxlUmVhZE1h eWJlRU9GKHN0YXRlLT5teWZpbGUsICZsZW4sIHNpemVvZihsZW4pLCBlb2ZPSyk7CisJaWYgKG5i eXRlcyA9PSAwKQorCQlyZXR1cm4gMDsKKwllbHNlCisJCXJldHVybiBsZW47Cit9CisKK3N0YXRp YyB2b2lkICoKK2NvcHl0dXBfZGF0dW0oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdm9pZCogZGF0 dW0pCit7CisJQXNzZXJ0KHN0YXRlLT5kYXR1bVR5cGUgIT0gSW52YWxpZE9pZCk7CisJaWYgKHN0 YXRlLT5kYXR1bVR5cGVCeVZhbCkKKwkJcmV0dXJuIERhdHVtR2V0UG9pbnRlcihQb2ludGVyR2V0 RGF0dW0oZGF0dW0pKTsKKwllbHNlCisJeworCQlEYXR1bSBkID0gZGF0dW1Db3B5KFBvaW50ZXJH ZXREYXR1bShkYXR1bSksIHN0YXRlLT5kYXR1bVR5cGVCeVZhbCwgc3RhdGUtPmRhdHVtVHlwZUxl bik7CisJCVVTRU1FTShzdGF0ZSwgR2V0TWVtb3J5Q2h1bmtTcGFjZShEYXR1bUdldFBvaW50ZXIo ZCkpKTsKKwkJcmV0dXJuIERhdHVtR2V0UG9pbnRlcihkKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lk Cit3cml0ZXR1cF9kYXR1bShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCB2b2lkKiBkYXR1bSkKK3sK KwlBc3NlcnQoc3RhdGUtPmRhdHVtVHlwZSAhPSBJbnZhbGlkT2lkKTsKKwlpZiAoc3RhdGUtPmRh dHVtVHlwZUJ5VmFsKQorCXsKKwkJQXNzZXJ0KHN0YXRlLT5kYXR1bVR5cGVMZW4gPiAwKTsKKwkJ QnVmRmlsZVdyaXRlKHN0YXRlLT5teWZpbGUsIGRhdHVtLCBzdGF0ZS0+ZGF0dW1UeXBlTGVuKTsK Kwl9CisJZWxzZQorCXsKKwkJU2l6ZSBzaXplID0gc3RhdGUtPmRhdHVtVHlwZUxlbjsKKwkJaWYg KHN0YXRlLT5kYXR1bVR5cGVMZW4gPCAwKQorCQl7CisJCQlCdWZGaWxlV3JpdGUoc3RhdGUtPm15 ZmlsZSwgJnNpemUsIHNpemVvZihzaXplKSk7CisJCQlzaXplID0gZGF0dW1HZXRTaXplKFBvaW50 ZXJHZXREYXR1bShkYXR1bSksIHN0YXRlLT5kYXR1bVR5cGVCeVZhbCwgc3RhdGUtPmRhdHVtVHlw ZUxlbik7CisJCX0KKworCQlCdWZGaWxlV3JpdGUoc3RhdGUtPm15ZmlsZSwgZGF0dW0sIHNpemUp OworCisJCS8qIG5lZWQgdHJhaWxpbmcgbGVuZ3RoIHdvcmQ/ICovCisJCWlmIChzdGF0ZS0+YmFj a3dhcmQgJiYgc3RhdGUtPmRhdHVtVHlwZUxlbiA8IDApCisJCQlCdWZGaWxlV3JpdGUoc3RhdGUt Pm15ZmlsZSwgJnNpemUsIHNpemVvZihzaXplKSk7CisKKwkJRlJFRU1FTShzdGF0ZSwgR2V0TWVt b3J5Q2h1bmtTcGFjZShkYXR1bSkpOworCQlwZnJlZShkYXR1bSk7CisJfQorfQorCitzdGF0aWMg dm9pZCoKK3JlYWR0dXBfZGF0dW0oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdW5zaWduZWQgaW50 IGxlbikKK3sKKwlBc3NlcnQoc3RhdGUtPmRhdHVtVHlwZSAhPSBJbnZhbGlkT2lkKTsKKwlpZiAo c3RhdGUtPmRhdHVtVHlwZUJ5VmFsKQorCXsKKwkJRGF0dW0gZGF0dW0gPSBQb2ludGVyR2V0RGF0 dW0oTlVMTCk7CisJCUFzc2VydChzdGF0ZS0+ZGF0dW1UeXBlTGVuID4gMCk7CisJCUFzc2VydChs ZW4gPT0gc3RhdGUtPmRhdHVtVHlwZUxlbik7CisJCUJ1ZkZpbGVSZWFkRXhhY3Qoc3RhdGUtPm15 ZmlsZSwgJmRhdHVtLCBzdGF0ZS0+ZGF0dW1UeXBlTGVuKTsKKwkJcmV0dXJuIERhdHVtR2V0UG9p bnRlcihkYXR1bSk7CisJfQorCWVsc2UKKwl7CisJCURhdHVtICpkYXR1bXMgPSBwYWxsb2MobGVu KTsKKwkJQnVmRmlsZVJlYWRFeGFjdChzdGF0ZS0+bXlmaWxlLCAmZGF0dW1zLCBsZW4pOworCisJ CS8qIG5lZWQgdHJhaWxpbmcgbGVuZ3RoIHdvcmQ/ICovCisJCWlmIChzdGF0ZS0+YmFja3dhcmQg JiYgc3RhdGUtPmRhdHVtVHlwZUxlbiA8IDApCisJCQlCdWZGaWxlUmVhZEV4YWN0KHN0YXRlLT5t eWZpbGUsICZsZW4sIHNpemVvZihsZW4pKTsKKworCQlyZXR1cm4gRGF0dW1HZXRQb2ludGVyKCpk YXR1bXMpOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc3RvcmUu aCBiL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc3RvcmUuaAppbmRleCBlZDdjNDU0ZjQ0ZS4uMWY0 MzE4NjMzODcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc3RvcmUuaAorKysg Yi9zcmMvaW5jbHVkZS91dGlscy90dXBsZXN0b3JlLmgKQEAgLTEsMTcgKzEsMTggQEAKIC8qLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogICoKICAqIHR1cGxlc3RvcmUuaAotICoJICBHZW5lcmFsaXplZCByb3V0 aW5lcyBmb3IgdGVtcG9yYXJ5IHR1cGxlIHN0b3JhZ2UuCisgKgkgIEdlbmVyYWxpemVkIHJvdXRp bmVzIGZvciB0ZW1wb3Jhcnkgc3RvcmFnZSBvZiB0dXBsZXMgYW5kIERhdHVtcy4KICAqCi0gKiBU aGlzIG1vZHVsZSBoYW5kbGVzIHRlbXBvcmFyeSBzdG9yYWdlIG9mIHR1cGxlcyBmb3IgcHVycG9z ZXMgc3VjaAotICogYXMgTWF0ZXJpYWxpemUgbm9kZXMsIGhhc2hqb2luIGJhdGNoIGZpbGVzLCBl dGMuICBJdCBpcyBlc3NlbnRpYWxseQotICogYSBkdW1iZWQtZG93biB2ZXJzaW9uIG9mIHR1cGxl c29ydC5jOyBpdCBkb2VzIG5vIHNvcnRpbmcgb2YgdHVwbGVzCi0gKiBidXQgY2FuIG9ubHkgc3Rv cmUgYW5kIHJlZ3VyZ2l0YXRlIGEgc2VxdWVuY2Ugb2YgdHVwbGVzLiAgSG93ZXZlciwKLSAqIGJl Y2F1c2Ugbm8gc29ydCBpcyByZXF1aXJlZCwgaXQgaXMgYWxsb3dlZCB0byBzdGFydCByZWFkaW5n IHRoZSBzZXF1ZW5jZQotICogYmVmb3JlIGl0IGhhcyBhbGwgYmVlbiB3cml0dGVuLiAgVGhpcyBp cyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBjdXJzb3JzLAotICogYmVjYXVzZSBpdCBhbGxvd3Mg cmFuZG9tIGFjY2VzcyB3aXRoaW4gdGhlIGFscmVhZHktc2Nhbm5lZCBwb3J0aW9uIG9mCi0gKiBh IHF1ZXJ5IHdpdGhvdXQgaGF2aW5nIHRvIHByb2Nlc3MgdGhlIHVuZGVybHlpbmcgc2NhbiB0byBj b21wbGV0aW9uLgotICogQWxzbywgaXQgaXMgcG9zc2libGUgdG8gc3VwcG9ydCBtdWx0aXBsZSBp bmRlcGVuZGVudCByZWFkIHBvaW50ZXJzLgorICogVGhpcyBtb2R1bGUgaGFuZGxlcyB0ZW1wb3Jh cnkgc3RvcmFnZSBvZiBlaXRoZXIgdHVwbGVzIG9yIHNpbmdsZQorICogRGF0dW0gdmFsdWVzIGZv ciBwdXJwb3NlcyBzdWNoIGFzIE1hdGVyaWFsaXplIG5vZGVzLCBoYXNoam9pbiBiYXRjaAorICog ZmlsZXMsIGV0Yy4gSXQgaXMgZXNzZW50aWFsbHkgYSBkdW1iZWQtZG93biB2ZXJzaW9uIG9mIHR1 cGxlc29ydC5jOworICogaXQgZG9lcyBubyBzb3J0aW5nIG9mIHR1cGxlcyBidXQgY2FuIG9ubHkg c3RvcmUgYW5kIHJlZ3VyZ2l0YXRlIGEgc2VxdWVuY2UKKyAqIG9mIHR1cGxlcy4gIEhvd2V2ZXIs IGJlY2F1c2Ugbm8gc29ydCBpcyByZXF1aXJlZCwgaXQgaXMgYWxsb3dlZCB0byBzdGFydAorICog cmVhZGluZyB0aGUgc2VxdWVuY2UgYmVmb3JlIGl0IGhhcyBhbGwgYmVlbiB3cml0dGVuLgorICoK KyAqIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgY3Vyc29ycywgYmVjYXVzZSBpdCBh bGxvd3MgcmFuZG9tIGFjY2VzcworICogd2l0aGluIHRoZSBhbHJlYWR5LXNjYW5uZWQgcG9ydGlv biBvZiBhIHF1ZXJ5IHdpdGhvdXQgaGF2aW5nIHRvIHByb2Nlc3MKKyAqIHRoZSB1bmRlcmx5aW5n IHNjYW4gdG8gY29tcGxldGlvbi4KICAqCiAgKiBBIHRlbXBvcmFyeSBmaWxlIGlzIHVzZWQgdG8g aGFuZGxlIHRoZSBkYXRhIGlmIGl0IGV4Y2VlZHMgdGhlCiAgKiBzcGFjZSBsaW1pdCBzcGVjaWZp ZWQgYnkgdGhlIGNhbGxlci4KQEAgLTM5LDE0ICs0MCwxMyBAQAogICovCiB0eXBlZGVmIHN0cnVj dCBUdXBsZXN0b3Jlc3RhdGUgVHVwbGVzdG9yZXN0YXRlOwogCi0vKgotICogQ3VycmVudGx5IHdl IG9ubHkgbmVlZCB0byBzdG9yZSBNaW5pbWFsVHVwbGVzLCBidXQgaXQgd291bGQgYmUgZWFzeQot ICogdG8gc3VwcG9ydCB0aGUgc2FtZSBiZWhhdmlvciBmb3IgSW5kZXhUdXBsZXMgYW5kL29yIGJh cmUgRGF0dW1zLgotICovCi0KIGV4dGVybiBUdXBsZXN0b3Jlc3RhdGUgKnR1cGxlc3RvcmVfYmVn aW5faGVhcChib29sIHJhbmRvbUFjY2VzcywKIAkJCQkJCQkJCQkJICBib29sIGludGVyWGFjdCwK IAkJCQkJCQkJCQkJICBpbnQgbWF4S0J5dGVzKTsKK2V4dGVybiBUdXBsZXN0b3Jlc3RhdGUgKnR1 cGxlc3RvcmVfYmVnaW5fZGF0dW0oT2lkIGRhdHVtVHlwZSwKKwkJCQkJCQkJCQkJIGJvb2wgcmFu ZG9tQWNjZXNzLAorCQkJCQkJCQkJCQkgYm9vbCBpbnRlclhhY3QsCisJCQkJCQkJCQkJCSBpbnQg bWF4S0J5dGVzKTsKIAogZXh0ZXJuIHZvaWQgdHVwbGVzdG9yZV9zZXRfZWZsYWdzKFR1cGxlc3Rv cmVzdGF0ZSAqc3RhdGUsIGludCBlZmxhZ3MpOwogCkBAIC01NSw2ICs1NSw3IEBAIGV4dGVybiB2 b2lkIHR1cGxlc3RvcmVfcHV0dHVwbGVzbG90KFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsCiBleHRl cm4gdm9pZCB0dXBsZXN0b3JlX3B1dHR1cGxlKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIEhlYXBU dXBsZSB0dXBsZSk7CiBleHRlcm4gdm9pZCB0dXBsZXN0b3JlX3B1dHZhbHVlcyhUdXBsZXN0b3Jl c3RhdGUgKnN0YXRlLCBUdXBsZURlc2MgdGRlc2MsCiAJCQkJCQkJCSBjb25zdCBEYXR1bSAqdmFs dWVzLCBjb25zdCBib29sICppc251bGwpOworZXh0ZXJuIHZvaWQgdHVwbGVzdG9yZV9wdXRkYXR1 bShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBEYXR1bSBkYXR1bSk7CiAKIGV4dGVybiBpbnQJdHVw bGVzdG9yZV9hbGxvY19yZWFkX3BvaW50ZXIoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgaW50IGVm bGFncyk7CiAKQEAgLTcyLDYgKzczLDggQEAgZXh0ZXJuIGJvb2wgdHVwbGVzdG9yZV9pbl9tZW1v cnkoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSk7CiAKIGV4dGVybiBib29sIHR1cGxlc3RvcmVfZ2V0 dHVwbGVzbG90KFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wgZm9yd2FyZCwKIAkJCQkJCQkJ CWJvb2wgY29weSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QpOworZXh0ZXJuIGJvb2wgdHVwbGVzdG9y ZV9nZXRkYXR1bShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBib29sIGZvcndhcmQsCisJCQkJCQkJ CWJvb2wgKnNob3VsZF9mcmVlLCBEYXR1bSAqcmVzdWx0KTsKIAogZXh0ZXJuIGJvb2wgdHVwbGVz dG9yZV9hZHZhbmNlKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wgZm9yd2FyZCk7CiAKLS0g CjIuNDMuMAoK --000000000000176c55063224bb18 Content-Type: application/octet-stream; name="v17-0012-Updates-index-insert-and-value-computation-logic.patch" Content-Disposition: attachment; filename="v17-0012-Updates-index-insert-and-value-computation-logic.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m967p89g11 RnJvbSBiOTlhOGE1ZGFhYzAyODM2MGE0NjdhNDFkMGFlMzMyMDdjMTYxYTc4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxua2V5QHRvbG9rYS5haT4KRGF0ZTogTW9uLCAzMCBE ZWMgMjAyNCAxNjozNzoxMiArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjE3IDEyLzEyXSBVcGRhdGVz IGluZGV4IGluc2VydCBhbmQgdmFsdWUgY29tcHV0YXRpb24gbG9naWMgdG8KIG9wdGltaXplIGF1 eGlsaWFyeSBpbmRleCBoYW5kbGluZy4KCiogU2tpcCBpbmRleCB2YWx1ZSBjb21wdXRhdGlvbiBm b3IgYXV4aWxpYXJ5IGluZGljZXMgc2luY2UgdGhleSBhcmUgbm90IG5lZWRlZAoqIFNldCBpbmRl eFVuY2hhbmdlZD1mYWxzZSBmb3IgYXV4aWxpYXJ5IGluZGljZXMgdG8gYXZvaWQgdW5uZWNlc3Nh cnkgY2hlY2tzCi0tLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgfCAxMSAr KysrKysrKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMgfCAxMSArKysr KysrLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvaW5kZXguYwppbmRleCA4MmYwMmRmNzQzMC4uMzQzZjc0YTQwZTggMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9n L2luZGV4LmMKQEAgLTI5MzIsNiArMjkzMiwxNyBAQCBGb3JtSW5kZXhEYXR1bShJbmRleEluZm8g KmluZGV4SW5mbywKIAlMaXN0Q2VsbCAgICppbmRleHByX2l0ZW07CiAJaW50CQkJaTsKIAorCS8q IEF1eGlsaWFyeSBpbmRleCBkb2VzIG5vdCBuZWVkIGFueSB2YWx1ZXMgdG8gYmUgY29tcHV0ZWQg Ki8KKwlpZiAodW5saWtlbHkoaW5kZXhJbmZvLT5paV9BdXhpbGlhcnkpKQorCXsKKwkJZm9yIChp ID0gMDsgaSA8IGluZGV4SW5mby0+aWlfTnVtSW5kZXhBdHRyczsgaSsrKQorCQl7CisJCQl2YWx1 ZXNbaV0gPSBQb2ludGVyR2V0RGF0dW0oTlVMTCk7CisJCQlpc251bGxbaV0gPSB0cnVlOworCQl9 CisJCXJldHVybjsKKwl9CisKIAlpZiAoaW5kZXhJbmZvLT5paV9FeHByZXNzaW9ucyAhPSBOSUwg JiYKIAkJaW5kZXhJbmZvLT5paV9FeHByZXNzaW9uc1N0YXRlID09IE5JTCkKIAl7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNJbmRleGluZy5jCmluZGV4IDU1NDkxYzdiOGIxLi43YzMwMmNhZmM4MSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMKQEAgLTQ0MSwxMSArNDQxLDE0IEBAIEV4ZWNJ bnNlcnRJbmRleFR1cGxlcyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQkgKiBUaGVy ZSdzIGRlZmluaXRlbHkgZ29pbmcgdG8gYmUgYW4gaW5kZXhfaW5zZXJ0KCkgY2FsbCBmb3IgdGhp cwogCQkgKiBpbmRleC4gIElmIHdlJ3JlIGJlaW5nIGNhbGxlZCBhcyBwYXJ0IG9mIGFuIFVQREFU RSBzdGF0ZW1lbnQsCiAJCSAqIGNvbnNpZGVyIGlmIHRoZSAnaW5kZXhVbmNoYW5nZWQnID0gdHJ1 ZSBoaW50IHNob3VsZCBiZSBwYXNzZWQuCisJCSAqCisJCSAqIEluIGNhc2Ugb2YgYXV4aWxpYXJ5 IGluZGV4IGFsd2F5cyBwYXNzIGZhbHNlIGFzIG9wdGltaXNhdGlvbi4KIAkJICovCi0JCWluZGV4 VW5jaGFuZ2VkID0gdXBkYXRlICYmIGluZGV4X3VuY2hhbmdlZF9ieV91cGRhdGUocmVzdWx0UmVs SW5mbywKLQkJCQkJCQkJCQkJCQkJCSBlc3RhdGUsCi0JCQkJCQkJCQkJCQkJCQkgaW5kZXhJbmZv LAotCQkJCQkJCQkJCQkJCQkJIGluZGV4UmVsYXRpb24pOworCQlpbmRleFVuY2hhbmdlZCA9IHVw ZGF0ZSAmJiBsaWtlbHkoIWluZGV4SW5mby0+aWlfQXV4aWxpYXJ5KSAmJgorCQkJCQkJCQkJaW5k ZXhfdW5jaGFuZ2VkX2J5X3VwZGF0ZShyZXN1bHRSZWxJbmZvLAorCQkJCQkJCQkJCQkJCQkJICBl c3RhdGUsCisJCQkJCQkJCQkJCQkJCQkgIGluZGV4SW5mbywKKwkJCQkJCQkJCQkJCQkJCSAgaW5k ZXhSZWxhdGlvbik7CiAKIAkJc2F0aXNmaWVzQ29uc3RyYWludCA9CiAJCQlpbmRleF9pbnNlcnQo aW5kZXhSZWxhdGlvbiwgLyogaW5kZXggcmVsYXRpb24gKi8KLS0gCjIuNDMuMAoK --000000000000176c55063224bb18 Content-Type: application/octet-stream; name="v17-0009-Concurrently-built-index-validation-uses-fresh-s.patch" Content-Disposition: attachment; filename="v17-0009-Concurrently-built-index-validation-uses-fresh-s.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m967p89c8 RnJvbSAyZjMzYzA5NGYwNWUzMWRmZGZkZWNjOTE1YjhlY2ViNGNjYjJlOGVmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAyNSBKYW4gMjAyNSAxNzoyMToyOSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjE3IDA5 LzEyXSBDb25jdXJyZW50bHkgYnVpbHQgaW5kZXggdmFsaWRhdGlvbiB1c2VzIGZyZXNoCiBzbmFw c2hvdHMKClRoaXMgY29tbWl0IG1vZGlmaWVzIHRoZSB2YWxpZGF0aW9uIHByb2Nlc3MgZm9yIGNv bmN1cnJlbnRseSBidWlsdCBpbmRleGVzIHRvIHVzZSBmcmVzaCBzbmFwc2hvdHMgaW5zdGVhZCBv ZiBhIHNpbmdsZSByZWZlcmVuY2Ugc25hcHNob3QuCgpUaGUgcHJldmlvdXMgYXBwcm9hY2ggb2Yg dXNpbmcgYSBzaW5nbGUgcmVmZXJlbmNlIHNuYXBzaG90IGNvdWxkIGxlYWQgdG8gaXNzdWVzIHdp dGggeG1pbiBwcm9wYWdhdGlvbi4gU3BlY2lmaWNhbGx5LCBpZiB0aGUgaW5kZXggYnVpbGQgdG9v ayBhIGxvbmcgdGltZSwgdGhlIHJlZmVyZW5jZSBzbmFwc2hvdCdzIHhtaW4gY291bGQgYmVjb21l IG91dGRhdGVkLCBjYXVzaW5nIHRoZSBpbmRleCB0byBtaXNzIHR1cGxlcyB0aGF0IHdlcmUgZGVs ZXRlZCBieSB0cmFuc2FjdGlvbnMgdGhhdCBjb21taXR0ZWQgYWZ0ZXIgdGhlIHJlZmVyZW5jZSBz bmFwc2hvdCB3YXMgdGFrZW4uCgpUbyBhZGRyZXNzIHRoaXMsIHRoZSB2YWxpZGF0aW9uIHByb2Nl c3Mgbm93IHBlcmlvZGljYWxseSByZXBsYWNlcyB0aGUgc25hcHNob3Qgd2l0aCBhIG5ld2VyIG9u ZS4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGluZGV4J3MgeG1pbiBpcyBrZXB0IHVwLXRvLWRhdGUg YW5kIHRoYXQgYWxsIHJlbGV2YW50IHR1cGxlcyBhcmUgaW5jbHVkZWQgaW4gdGhlIGluZGV4Lgot LS0KIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwgICAgICAgfCAxMSArKystCiBk b2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbCAgICAgICAgICAgIHwgMTEgKystLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyB8IDc3ICsrKysrKysrKysrKysrKy0t LS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgICAgICB8ICAyICst CiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jICAgIHwgMTIgKysrLQogc3Jj L2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgICAgICB8IDIwICsrKystLQogc3JjL2Jh Y2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgICAgICAgICB8ICAyICstCiBzcmMvaW5jbHVkZS9h Y2Nlc3MvdHJhbnNhbS5oICAgICAgICAgICAgIHwgMTUgKysrKysKIDggZmlsZXMgY2hhbmdlZCwg MTA0IGluc2VydGlvbnMoKyksIDQ2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9pbmRl eC5zZ21sCmluZGV4IGUzMzM0NWY2YTM0Li41NDU2NjIyM2NiMCAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL3JlZi9jcmVhdGVfaW5kZXguc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0 ZV9pbmRleC5zZ21sCkBAIC04NjgsOSArODY4LDE0IEBAIEluZGV4ZXM6CiAgIDwvcGFyYT4KIAog ICA8cGFyYT4KLSAgIExpa2UgYW55IGxvbmctcnVubmluZyB0cmFuc2FjdGlvbiwgPGNvbW1hbmQ+ Q1JFQVRFIElOREVYPC9jb21tYW5kPiBvbiBhCi0gICB0YWJsZSBjYW4gYWZmZWN0IHdoaWNoIHR1 cGxlcyBjYW4gYmUgcmVtb3ZlZCBieSBjb25jdXJyZW50Ci0gICA8Y29tbWFuZD5WQUNVVU08L2Nv bW1hbmQ+IG9uIGFueSBvdGhlciB0YWJsZS4KKyAgIER1ZSB0byB0aGUgaW1wcm92ZWQgaW1wbGVt ZW50YXRpb24gdXNpbmcgcGVyaW9kaWNhbGx5IHJlZnJlc2hlZCBzbmFwc2hvdHMgYW5kCisgICBh dXhpbGlhcnkgaW5kZXhlcywgY29uY3VycmVudCBpbmRleCBidWlsZHMgaGF2ZSBtaW5pbWFsIGlt cGFjdCBvbiBjb25jdXJyZW50CisgICA8Y29tbWFuZD5WQUNVVU08L2NvbW1hbmQ+IG9wZXJhdGlv bnMuIFRoZSBzeXN0ZW0gYXV0b21hdGljYWxseSBhZHZhbmNlcyBpdHMKKyAgIGludGVybmFsIHRy YW5zYWN0aW9uIGhvcml6b24gZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLCBhbGxvd2luZworICAg PGNvbW1hbmQ+VkFDVVVNPC9jb21tYW5kPiB0byByZW1vdmUgZGVhZCB0dXBsZXMgb24gb3RoZXIg dGFibGVzIHdpdGhvdXQKKyAgIGhhdmluZyB0byB3YWl0IGZvciB0aGUgZW50aXJlIGluZGV4IGJ1 aWxkIHRvIGNvbXBsZXRlLiBPbmx5IGR1cmluZyB2ZXJ5IGJyaWVmCisgICBwZXJpb2RzIHdoZW4g c25hcHNob3RzIGFyZSBiZWluZyByZWZyZXNoZWQgbWlnaHQgdGhlcmUgYmUgYW55IHRlbXBvcmFy eSBlZmZlY3QKKyAgIG9uIGNvbmN1cnJlbnQgPGNvbW1hbmQ+VkFDVVVNPC9jb21tYW5kPiBvcGVy YXRpb25zLgogICA8L3BhcmE+CiAKICAgPHBhcmE+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv cmVmL3JlaW5kZXguc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcmVpbmRleC5zZ21sCmluZGV4IDZh MDU2MjBiZDY3Li42NGM2MzNlMDM5OCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9yZWlu ZGV4LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwKQEAgLTQ5NSwxMCAr NDk1LDEzIEBAIEluZGV4ZXM6CiAgICA8L3BhcmE+CiAKICAgIDxwYXJhPgotICAgIExpa2UgYW55 IGxvbmctcnVubmluZyB0cmFuc2FjdGlvbiwgPGNvbW1hbmQ+UkVJTkRFWDwvY29tbWFuZD4gb24g YSB0YWJsZQotICAgIGNhbiBhZmZlY3Qgd2hpY2ggdHVwbGVzIGNhbiBiZSByZW1vdmVkIGJ5IGNv bmN1cnJlbnQKLSAgICA8Y29tbWFuZD5WQUNVVU08L2NvbW1hbmQ+IG9uIGFueSBvdGhlciB0YWJs ZS4KLSAgIDwvcGFyYT4KKyAgICA8Y29tbWFuZD5SRUlOREVYIENPTkNVUlJFTlRMWTwvY29tbWFu ZD4gaGFzIG1pbmltYWwKKyAgICBpbXBhY3Qgb24gd2hpY2ggdHVwbGVzIGNhbiBiZSByZW1vdmVk IGJ5IGNvbmN1cnJlbnQgPGNvbW1hbmQ+VkFDVVVNPC9jb21tYW5kPgorICAgIG9wZXJhdGlvbnMg b24gb3RoZXIgdGFibGVzLiBUaGlzIGlzIGFjaGlldmVkIHRocm91Z2ggcGVyaW9kaWMgc25hcHNo b3QKKyAgICByZWZyZXNoZXMgYW5kIHRoZSB1c2Ugb2YgYXV4aWxpYXJ5IGluZGV4ZXMgZHVyaW5n IHRoZSByZWJ1aWxkIHByb2Nlc3MsCisgICAgYWxsb3dpbmcgdGhlIHN5c3RlbSB0byBhZHZhbmNl IGl0cyB0cmFuc2FjdGlvbiBob3Jpem9uIHJlZ3VsYXJseSByYXRoZXIgdGhhbgorICAgIG1haW50 YWluaW5nIGEgc2luZ2xlIGxvbmctcnVubmluZyBzbmFwc2hvdC4KKyAgPC9wYXJhPgogCiAgICA8 cGFyYT4KICAgICA8Y29tbWFuZD5SRUlOREVYIFNZU1RFTTwvY29tbWFuZD4gZG9lcyBub3Qgc3Vw cG9ydApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIu YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKaW5kZXggMTU2YzQy OWMxYWYuLjMyYTY2ZjNlNmY2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1faGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5k bGVyLmMKQEAgLTE3OTUsOCArMTc5NSw4IEBAIGhlYXBhbV9pbmRleF9idWlsZF9yYW5nZV9zY2Fu KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKICAqLwogc3RhdGljIGludAogaGVhcGFtX2luZGV4X3Zh bGlkYXRlX3R1cGxlc29ydF9kaWZmZXJlbmNlKFR1cGxlc29ydHN0YXRlICAqbWFpbiwKLQkJCQkJ CQkJCQkgICBUdXBsZXNvcnRzdGF0ZSAgKmF1eCwKLQkJCQkJCQkJCQkgICBUdXBsZXN0b3Jlc3Rh dGUgKnN0b3JlKQorCQkJCQkJCQkJICBUdXBsZXNvcnRzdGF0ZSAgKmF1eCwKKwkJCQkJCQkJCSAg VHVwbGVzdG9yZXN0YXRlICpzdG9yZSkKIHsKIAlpbnQJCQkJbnVtID0gMDsKIAkvKiBzdGF0ZSB2 YXJpYWJsZXMgZm9yIHRoZSBtZXJnZSAqLwpAQCAtMjA1Miw3ICsyMDUyLDggQEAgaGVhcGFtX2lu ZGV4X3ZhbGlkYXRlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCUV4cHJDb250ZXh0CQkq ZWNvbnRleHQ7CiAJQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5ID0gR2V0QWNjZXNzU3Ry YXRlZ3koQkFTX0JVTEtSRUFEKTsKIAotCWludAkJCQludW1fdG9fY2hlY2s7CisJaW50CQkJCW51 bV90b19jaGVjaywKKwkJCQkJcGFnZV9yZWFkX2NvdW50ZXIgPSAxOyAvKiBzZXQgdG8gMSB0byBz a2lwIHNuYXBzaG90IHJlc2VydCBhdCBzdGFydCAqLwogCVR1cGxlc3RvcmVzdGF0ZSAqdHVwbGVz X2Zvcl9jaGVjazsKIAlWYWxpZGF0ZUluZGV4U2NhblN0YXRlIGNhbGxiYWNrX3ByaXZhdGVfZGF0 YTsKIApAQCAtMjA2Myw5ICsyMDY0LDM1IEBAIGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuKFJl bGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkvKiBVc2UgMTAlIG9mIG1lbW9yeSBmb3IgdHVwbGUgc3Rv cmUuICovCiAJaW50CQlzdG9yZV93b3JrX21lbV9wYXJ0ID0gbWFpbnRlbmFuY2Vfd29ya19tZW0g LyAxMDsKIAorCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwor CisJdHVwbGVzX2Zvcl9jaGVjayA9ICB0dXBsZXN0b3JlX2JlZ2luX2RhdHVtKElOVDhPSUQsIGZh bHNlLCBmYWxzZSwgc3RvcmVfd29ya19tZW1fcGFydCk7CisKKwlQb3BBY3RpdmVTbmFwc2hvdCgp OworCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKworCUFzc2VydCghSGF2ZVJlZ2lzdGVy ZWRPckFjdGl2ZVNuYXBzaG90KCkpOworCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQ cm9jLT54bWluKSk7CisKIAkvKgotCSAqIE5vdyB0YWtlIHRoZSBzbmFwc2hvdCB0aGF0IHdpbGwg YmUgdXNlZCBieSB0byBmaWx0ZXIgY2FuZGlkYXRlCi0JICogdHVwbGVzLgorCSAqIHNhbml0eSBj aGVja3MKKwkgKi8KKwlBc3NlcnQoT2lkSXNWYWxpZChpbmRleFJlbGF0aW9uLT5yZF9yZWwtPnJl bGFtKSk7CisKKwludW1fdG9fY2hlY2sgPSBoZWFwYW1faW5kZXhfdmFsaWRhdGVfdHVwbGVzb3J0 X2RpZmZlcmVuY2Uoc3RhdGUtPnR1cGxlc29ydCwKKwkJCQkJCQkJCQkJCQkJCSAgYXV4U3RhdGUt PnR1cGxlc29ydCwKKwkJCQkJCQkJCQkJCQkJCSAgdHVwbGVzX2Zvcl9jaGVjayk7CisKKwkvKiBJ dCBpcyBvdXIgcmVzcG9uc2liaWxpdHkgdG8gc2xvZSB0dXBsZSBzb3J0IGFzIGZhc3QgYXMgd2Ug Y2FuICovCisJdHVwbGVzb3J0X2VuZChzdGF0ZS0+dHVwbGVzb3J0KTsKKwl0dXBsZXNvcnRfZW5k KGF1eFN0YXRlLT50dXBsZXNvcnQpOworCisJc3RhdGUtPnR1cGxlc29ydCA9IGF1eFN0YXRlLT50 dXBsZXNvcnQgPSBOVUxMOworCisJLyoKKwkgKiBOb3cgdGFrZSB0aGUgZmlyc3Qgc25hcHNob3Qg dGhhdCB3aWxsIGJlIHVzZWQgYnkgdG8gZmlsdGVyIGNhbmRpZGF0ZQorCSAqIHR1cGxlcy4gV2Ug YXJlIGdvaW5nIHRvIHJlcGxhY2UgaXQgYnkgbmV3ZXIgc25hcHNob3QgZXZlcnkgc28gb2Z0ZW4K KwkgKiB0byBwcm9wYWdhdGUgaG9yaXpvbi4KIAkgKgogCSAqIEJld2FyZSEgIFRoZXJlIG1pZ2h0 IHN0aWxsIGJlIHNuYXBzaG90cyBpbiB1c2UgdGhhdCB0cmVhdCBzb21lIHRyYW5zYWN0aW9uCiAJ ICogYXMgaW4tcHJvZ3Jlc3MgdGhhdCBvdXIgdGVtcG9yYXJ5IHNuYXBzaG90IHRyZWF0cyBhcyBj b21taXR0ZWQuCkBAIC0yMDgxLDMzICsyMTA4LDEwIEBAIGhlYXBhbV9pbmRleF92YWxpZGF0ZV9z Y2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkgKiBXZSBhbHNvIHNldCBBY3RpdmVTbmFwc2hv dCB0byB0aGlzIHNuYXAsIHNpbmNlIGZ1bmN0aW9ucyBpbiBpbmRleGVzIG1heQogCSAqIG5lZWQg YSBzbmFwc2hvdC4KIAkgKi8KLQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNh Y3Rpb25TbmFwc2hvdCgpKTsKKwlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0 U25hcHNob3QoKSk7CiAJUHVzaEFjdGl2ZVNuYXBzaG90KHNuYXBzaG90KTsKIAlsaW1pdFhtaW4g PSBzbmFwc2hvdC0+eG1pbjsKIAotCS8qCi0JICogRW5jb2RlIFRJRHMgYXMgaW50OCB2YWx1ZXMg Zm9yIHRoZSBzb3J0LCByYXRoZXIgdGhhbiBkaXJlY3RseSBzb3J0aW5nCi0JICogaXRlbSBwb2lu dGVycy4gIFRoaXMgY2FuIGJlIHNpZ25pZmljYW50bHkgZmFzdGVyLCBwcmltYXJpbHkgYmVjYXVz ZSBUSUQKLQkgKiBpcyBhIHBhc3MtYnktcmVmZXJlbmNlIHR5cGUgb24gYWxsIHBsYXRmb3Jtcywg d2hlcmVhcyBpbnQ4IGlzCi0JICogcGFzcy1ieS12YWx1ZSBvbiBtb3N0IHBsYXRmb3Jtcy4KLQkg Ki8KLQl0dXBsZXNfZm9yX2NoZWNrID0gIHR1cGxlc3RvcmVfYmVnaW5fZGF0dW0oSU5UOE9JRCwg ZmFsc2UsIGZhbHNlLCBzdG9yZV93b3JrX21lbV9wYXJ0KTsKLQotCS8qCi0JICogc2FuaXR5IGNo ZWNrcwotCSAqLwotCUFzc2VydChPaWRJc1ZhbGlkKGluZGV4UmVsYXRpb24tPnJkX3JlbC0+cmVs YW0pKTsKLQotCW51bV90b19jaGVjayA9IGhlYXBhbV9pbmRleF92YWxpZGF0ZV90dXBsZXNvcnRf ZGlmZmVyZW5jZShzdGF0ZS0+dHVwbGVzb3J0LAotCQkJCQkJCQkJCQkJCQkgYXV4U3RhdGUtPnR1 cGxlc29ydCwKLQkJCQkJCQkJCQkJCQkJIHR1cGxlc19mb3JfY2hlY2spOwotCi0JLyogSXQgaXMg b3VyIHJlc3BvbnNpYmlsaXR5IHRvIHNsb2UgdHVwbGUgc29ydCBhcyBmYXN0IGFzIHdlIGNhbiAq LwotCXR1cGxlc29ydF9lbmQoc3RhdGUtPnR1cGxlc29ydCk7Ci0JdHVwbGVzb3J0X2VuZChhdXhT dGF0ZS0+dHVwbGVzb3J0KTsKLQotCXN0YXRlLT50dXBsZXNvcnQgPSBhdXhTdGF0ZS0+dHVwbGVz b3J0ID0gTlVMTDsKLQogCWVzdGF0ZSA9IENyZWF0ZUV4ZWN1dG9yU3RhdGUoKTsKIAllY29udGV4 dCA9IEdldFBlclR1cGxlRXhwckNvbnRleHQoZXN0YXRlKTsKIAlzbG90ID0gTWFrZVNpbmdsZVR1 cGxlVGFibGVTbG90KFJlbGF0aW9uR2V0RGVzY3IoaGVhcFJlbGF0aW9uKSwKQEAgLTIxNDUsNiAr MjE0OSw3IEBAIGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlv biwKIAogCQlMb2NrQnVmZmVyKGJ1ZiwgQlVGRkVSX0xPQ0tfU0hBUkUpOwogCQlibG9ja19udW1i ZXIgPSBCdWZmZXJHZXRCbG9ja051bWJlcihidWYpOworCQlwYWdlX3JlYWRfY291bnRlcisrOwog CiAJCWkgPSAwOwogCQl3aGlsZSAoKG9mZiA9IHR1cGxlc1tpXSkgIT0gSW52YWxpZE9mZnNldE51 bWJlcikKQEAgLTIxOTksNiArMjIwNCwyMCBAQCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2NhbihS ZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCX0KIAogCQlSZWxlYXNlQnVmZmVyKGJ1Zik7CisKKwkJ aWYgKHBhZ2VfcmVhZF9jb3VudGVyICUgU09fUkVTRVRfU05BUFNIT1RfRUFDSF9OX1BBR0UgPT0g MCkKKwkJeworCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKKwkJCVVucmVnaXN0ZXJTbmFwc2hvdChz bmFwc2hvdCk7CisJCQkvKiB0byBtYWtlIHN1cmUgd2UgcHJvcGFnYXRlIHhtaW4gKi8KKwkJCUlu dmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwkJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFs aWQoTXlQcm9jLT54bWluKSk7CisKKwkJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRM YXRlc3RTbmFwc2hvdCgpKTsKKwkJCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7CisJCQkv KiB4bWluIHNob3VsZCBub3QgZ28gYmFja3dhcmRzLCBidXQganVzdCBmb3IgdGhlIGNhc2UqLwor CQkJbGltaXRYbWluID0gVHJhbnNhY3Rpb25JZE5ld2VyKGxpbWl0WG1pbiwgc25hcHNob3QtPnht aW4pOworCQl9CiAJfQogCiAJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKaW5kZXggZDE4NmNlOWVjMzcuLjhkNzU1NDcwZThj IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYwpAQCAtNDQ0LDcgKzQ0NCw3IEBAIF9i dF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEJUQnVpbGRT dGF0ZSAqYnVpbGRzdGF0ZSwKIAkgKiBkZWFkIHR1cGxlcykgd29uJ3QgZ2V0IHZlcnkgZnVsbCwg c28gd2UgZ2l2ZSBpdCBvbmx5IHdvcmtfbWVtLgogCSAqCiAJICogSW4gY2FzZSBvZiBjb25jdXJy ZW50IGJ1aWxkIGRlYWQgdHVwbGVzIGFyZSBub3QgbmVlZCB0byBiZSBwdXQgaW50byBpbmRleAot CSAqIHNpbmNlIHdlIHdhaXQgZm9yIGFsbCBzbmFwc2hvdHMgb2xkZXIgdGhhbiByZWZlcmVuY2Ug c25hcHNob3QgZHVyaW5nIHRoZQorCSAqIHNpbmNlIHdlIHdhaXQgZm9yIGFsbCBzbmFwc2hvdHMg b2xkZXIgdGhhbiBsYXRlc3Qgc25hcHNob3QgZHVyaW5nIHRoZQogCSAqIHZhbGlkYXRpb24gcGhh c2UuCiAJICovCiAJaWYgKGluZGV4SW5mby0+aWlfVW5pcXVlICYmICFpbmRleEluZm8tPmlpX0Nv bmN1cnJlbnQpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1 bS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYwppbmRleCA4MTE3MWYz NTQ1MS4uZDcyMWZhNDVhMGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qv c3BndmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYwpA QCAtMTkxLDE0ICsxOTEsMTYgQEAgdmFjdXVtTGVhZlBhZ2Uoc3BnQnVsa0RlbGV0ZVN0YXRlICpi ZHMsIFJlbGF0aW9uIGluZGV4LCBCdWZmZXIgYnVmZmVyLAogCQkJICogQWRkIHRhcmdldCBUSUQg dG8gcGVuZGluZyBsaXN0IGlmIHRoZSByZWRpcmVjdGlvbiBjb3VsZCBoYXZlCiAJCQkgKiBoYXBw ZW5lZCBzaW5jZSBWQUNVVU0gc3RhcnRlZC4gIChJZiB4aWQgaXMgaW52YWxpZCwgYXNzdW1lIGl0 CiAJCQkgKiBtdXN0IGhhdmUgaGFwcGVuZWQgYmVmb3JlIFZBQ1VVTSBzdGFydGVkLCBzaW5jZSBS RUlOREVYCi0JCQkgKiBDT05DVVJSRU5UTFkgbG9ja3Mgb3V0IFZBQ1VVTS4pCisJCQkgKiBDT05D VVJSRU5UTFkgbG9ja3Mgb3V0IFZBQ1VVTSwgaWYgbXlYbWluIGlzIGludmFsaWQgaXQgaXMKKwkJ CSAqIHZhbGlkYXRpb24gc2Nhbi4pCiAJCQkgKgogCQkJICogTm90ZTogd2UgY291bGQgbWFrZSBh IHRpZ2h0ZXIgdGVzdCBieSBzZWVpbmcgaWYgdGhlIHhpZCBpcwogCQkJICogInJ1bm5pbmciIGFj Y29yZGluZyB0byB0aGUgYWN0aXZlIHNuYXBzaG90OyBidXQgc25hcG1nci5jCiAJCQkgKiBkb2Vz bid0IGN1cnJlbnRseSBleHBvcnQgYSBzdWl0YWJsZSBBUEksIGFuZCBpdCdzIG5vdCBlbnRpcmVs eQogCQkJICogY2xlYXIgdGhhdCBhIHRpZ2h0ZXIgdGVzdCBpcyB3b3J0aCB0aGUgY3ljbGVzIGFu eXdheS4KIAkJCSAqLwotCQkJaWYgKFRyYW5zYWN0aW9uSWRGb2xsb3dzT3JFcXVhbHMoZHQtPnhp ZCwgYmRzLT5teVhtaW4pKQorCQkJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChiZHMtPm15WG1p bikgfHwKKwkJCQkJVHJhbnNhY3Rpb25JZEZvbGxvd3NPckVxdWFscyhkdC0+eGlkLCBiZHMtPm15 WG1pbikpCiAJCQkJc3BnQWRkUGVuZGluZ1RJRChiZHMsICZkdC0+cG9pbnRlcik7CiAJCX0KIAkJ ZWxzZQpAQCAtODA4LDcgKzgxMCw2IEBAIHNwZ3ZhY3V1bXNjYW4oc3BnQnVsa0RlbGV0ZVN0YXRl ICpiZHMpCiAJLyogRmluaXNoIHNldHRpbmcgdXAgc3BnQnVsa0RlbGV0ZVN0YXRlICovCiAJaW5p dFNwR2lzdFN0YXRlKCZiZHMtPnNwZ3N0YXRlLCBpbmRleCk7CiAJYmRzLT5wZW5kaW5nTGlzdCA9 IE5VTEw7Ci0JYmRzLT5teVhtaW4gPSBHZXRBY3RpdmVTbmFwc2hvdCgpLT54bWluOwogCWJkcy0+ bGFzdEZpbGxlZEJsb2NrID0gU1BHSVNUX0xBU1RfRklYRURfQkxLTk87CiAKIAkvKgpAQCAtOTU4 LDYgKzk1OSwxMCBAQCBzcGdidWxrZGVsZXRlKEluZGV4VmFjdXVtSW5mbyAqaW5mbywgSW5kZXhC dWxrRGVsZXRlUmVzdWx0ICpzdGF0cywKIAliZHMuc3RhdHMgPSBzdGF0czsKIAliZHMuY2FsbGJh Y2sgPSBjYWxsYmFjazsKIAliZHMuY2FsbGJhY2tfc3RhdGUgPSBjYWxsYmFja19zdGF0ZTsKKwlp ZiAoaW5mby0+dmFsaWRhdGVfaW5kZXgpCisJCWJkcy5teVhtaW4gPSBJbnZhbGlkVHJhbnNhY3Rp b25JZDsKKwllbHNlCisJCWJkcy5teVhtaW4gPSBHZXRBY3RpdmVTbmFwc2hvdCgpLT54bWluOwog CiAJc3BndmFjdXVtc2NhbigmYmRzKTsKIApAQCAtOTk4LDYgKzEwMDMsNyBAQCBzcGd2YWN1dW1j bGVhbnVwKEluZGV4VmFjdXVtSW5mbyAqaW5mbywgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0 cykKIAkJYmRzLnN0YXRzID0gc3RhdHM7CiAJCWJkcy5jYWxsYmFjayA9IGR1bW15X2NhbGxiYWNr OwogCQliZHMuY2FsbGJhY2tfc3RhdGUgPSBOVUxMOworCQliZHMubXlYbWluID0gR2V0QWN0aXZl U25hcHNob3QoKS0+eG1pbjsKIAogCQlzcGd2YWN1dW1zY2FuKCZiZHMpOwogCX0KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5k ZXguYwppbmRleCBhOTNkZTJiYTlhMy4uYmZkNmEwYTM3ZjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAg LTM1MDcsOCArMzUwNyw5IEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJlbGF0 aW9uLAogICogaW5zZXJ0IHRoZWlyIG5ldyB0dXBsZXMgaW50byBpdC4gQXQgdGhlIHNhbWUgbW9t ZW50IHdlIGNsZWFyICJpbmRpc3JlYWR5IiBmb3IKICAqIGF1eGlsaWFyeSBpbmRleCwgc2luY2Ug aXQgaXMgbm8gbW9yZSByZXF1aXJlZC4KICAqCi0gKiBXZSB0aGVuIHRha2UgYSBuZXcgcmVmZXJl bmNlIHNuYXBzaG90LCBhbnkgdHVwbGVzIHRoYXQgYXJlIHZhbGlkIGFjY29yZGluZwotICogdG8g dGhpcyBzbmFwLCBidXQgYXJlIG5vdCBpbiB0aGUgaW5kZXgsIG11c3QgYmUgYWRkZWQgdG8gdGhl IGluZGV4LgorICogV2UgdGhlbiB0YWtlIGEgbmV3IHNuYXBzaG90LCBhbnkgdHVwbGVzIHRoYXQg YXJlIHZhbGlkIGFjY29yZGluZworICogdG8gdGhpcyBzbmFwLCBidXQgYXJlIG5vdCBpbiB0aGUg aW5kZXgsIG11c3QgYmUgYWRkZWQgdG8gdGhlIGluZGV4LiBJbgorICogb3JkZXIgdG8gcHJvcGFn YXRlIHhtaW4gd2UgcmVzZXQgdGhhdCBzbmFwc2hvdCBldmVyeSBmZXcgc28gb2Z0ZW4uCiAgKiAo QW55IHR1cGxlcyBjb21taXR0ZWQgbGl2ZSBhZnRlciB0aGUgc25hcCB3aWxsIGJlIGluc2VydGVk IGludG8gdGhlCiAgKiBpbmRleCBieSB0aGVpciBvcmlnaW5hdGluZyB0cmFuc2FjdGlvbi4gIEFu eSB0dXBsZXMgY29tbWl0dGVkIGRlYWQgYmVmb3JlCiAgKiB0aGUgc25hcCBuZWVkIG5vdCBiZSBp bmRleGVkLCBiZWNhdXNlIHdlIHdpbGwgd2FpdCBvdXQgYWxsIHRyYW5zYWN0aW9ucwpAQCAtMzUy MSw3ICszNTIyLDcgQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRpb24s CiAgKiBUSURzIG9mIGJvdGggYXV4aWxpYXJ5IGFuZCB0YXJnZXQgaW5kZXhlcywgYW5kIGRvaW5n IGEgIm1lcmdlIGpvaW4iIGFnYWluc3QKICAqIHRoZSBUSUQgbGlzdHMgdG8gc2VlIHdoaWNoIHR1 cGxlcyBmcm9tIGF1eGlsaWFyeSBpbmRleCBhcmUgbWlzc2luZyBmcm9tIHRoZQogICogdGFyZ2V0 IGluZGV4LiAgVGh1cyB3ZSB3aWxsIGVuc3VyZSB0aGF0IGFsbCB0dXBsZXMgdmFsaWQgYWNjb3Jk aW5nIHRvIHRoZQotICogcmVmZXJlbmNlIHNuYXBzaG90IGFyZSBpbiB0aGUgaW5kZXguIE5vdGlj ZSB3ZSBuZWVkIHRvIGRvIGJ1bGtkZWxldGUgaW4gdGhlCisgKiBsYXRlc3Qgc25hcHNob3QgYXJl IGluIHRoZSBpbmRleC4gTm90aWNlIHdlIG5lZWQgdG8gZG8gYnVsa2RlbGV0ZSBpbiB0aGUKICAq IHBhcnRpY3VsYXIgb3JkZXI6IGF1eGlsaWFyeSBmaXJzdCwgdGFyZ2V0IGxhc3QuCiAgKgogICog QnVpbGRpbmcgYSB1bmlxdWUgaW5kZXggdGhpcyB3YXkgaXMgdHJpY2t5OiB3ZSBtaWdodCB0cnkg dG8gaW5zZXJ0IGEKQEAgLTM2MDQsNiArMzYwNSw3IEBAIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFw SWQsIE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCkKIAkgKi8KIAlQdXNoQWN0aXZlU25hcHNo b3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAlpbmRleEluZm8gPSBCdWlsZEluZGV4SW5m byhpbmRleFJlbGF0aW9uKTsKKwlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCiAJLyogbWFyayBidWls ZCBpcyBjb25jdXJyZW50IGp1c3QgZm9yIGNvbnNpc3RlbmN5ICovCiAJaW5kZXhJbmZvLT5paV9D b25jdXJyZW50ID0gdHJ1ZTsKQEAgLTM2MzksNiArMzY0MSw5IEBAIHZhbGlkYXRlX2luZGV4KE9p ZCBoZWFwSWQsIE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCkKIAkJCQkJCQkJCQkgICBOVUxM LCBUVVBMRVNPUlRfTk9ORSk7CiAJYXV4U3RhdGUuaHR1cHMgPSBhdXhTdGF0ZS5pdHVwcyA9IGF1 eFN0YXRlLnR1cHNfaW5zZXJ0ZWQgPSAwOwogCisJLyogdHVwbGVzb3J0X2JlZ2luX2RhdHVtIG1h eSByZXF1aXJlIGNhdGFsb2cgc25hcHNob3QgKi8KKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90 KCk7CisKIAkodm9pZCkgaW5kZXhfYnVsa19kZWxldGUoJmF1eGl2aW5mbywgTlVMTCwKIAkJCQkJ CQkgdmFsaWRhdGVfaW5kZXhfY2FsbGJhY2ssICZhdXhTdGF0ZSk7CiAKQEAgLTM2NDgsNiArMzY1 Myw5IEBAIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBPaWQgYXV4SW5k ZXhJZCkKIAkJCQkJCQkJCQkJTlVMTCwgVFVQTEVTT1JUX05PTkUpOwogCXN0YXRlLmh0dXBzID0g c3RhdGUuaXR1cHMgPSBzdGF0ZS50dXBzX2luc2VydGVkID0gMDsKIAorCS8qIHR1cGxlc29ydF9i ZWdpbl9kYXR1bSBtYXkgcmVxdWlyZSBjYXRhbG9nIHNuYXBzaG90ICovCisJSW52YWxpZGF0ZUNh dGFsb2dTbmFwc2hvdCgpOworCiAJLyogYW1idWxrZGVsZXRlIHVwZGF0ZXMgcHJvZ3Jlc3MgbWV0 cmljcyAqLwogCSh2b2lkKSBpbmRleF9idWxrX2RlbGV0ZSgmaXZpbmZvLCBOVUxMLAogCQkJCQkJ CSB2YWxpZGF0ZV9pbmRleF9jYWxsYmFjaywgJnN0YXRlKTsKQEAgLTM2NjcsOSArMzY3NSwxMSBA QCB2YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgT2lkIGF1eEluZGV4SWQp CiAJCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfbXVsdGlfcGFyYW0oMywgcHJvZ3Jlc3NfaW5kZXgs IHByb2dyZXNzX3ZhbHMpOwogCX0KIAl0dXBsZXNvcnRfcGVyZm9ybXNvcnQoc3RhdGUudHVwbGVz b3J0KTsKKwkvKiB0dXBsZXNvcnRfcGVyZm9ybXNvcnQgbWF5IHJlcXVpcmUgY2F0YWxvZyBzbmFw c2hvdCAqLworCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwogCXR1cGxlc29ydF9wZXJm b3Jtc29ydChhdXhTdGF0ZS50dXBsZXNvcnQpOwotCi0JUG9wQWN0aXZlU25hcHNob3QoKTsKKwkv KiB0dXBsZXNvcnRfcGVyZm9ybXNvcnQgbWF5IHJlcXVpcmUgY2F0YWxvZyBzbmFwc2hvdCAqLwog CUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKIAlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1Zh bGlkKE15UHJvYy0+eG1pbikpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9p bmRleGNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCmluZGV4IDJjMmFl Nzk4YzU3Li40ZjljY2M5Y2E4ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5k ZXhjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKQEAgLTQzNDMs NyArNDM0Myw3IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3Rt dCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCS8qCiAJCSAqIFRoZSBpbmRl eCBpcyBub3cgdmFsaWQgaW4gdGhlIHNlbnNlIHRoYXQgaXQgY29udGFpbnMgYWxsIGN1cnJlbnRs eQogCQkgKiBpbnRlcmVzdGluZyB0dXBsZXMuICBCdXQgc2luY2UgaXQgbWlnaHQgbm90IGNvbnRh aW4gdHVwbGVzIGRlbGV0ZWQKLQkJICoganVzdCBiZWZvcmUgdGhlIHJlZmVyZW5jZSBzbmFwIHdh cyB0YWtlbiwgd2UgaGF2ZSB0byB3YWl0IG91dCBhbnkKKwkJICoganVzdCBiZWZvcmUgdGhlIGxh dGVzdCBzbmFwIHdhcyB0YWtlbiwgd2UgaGF2ZSB0byB3YWl0IG91dCBhbnkKIAkJICogdHJhbnNh Y3Rpb25zIHRoYXQgbWlnaHQgaGF2ZSBvbGRlciBzbmFwc2hvdHMuCiAJCSAqCiAJCSAqIEJlY2F1 c2Ugd2UgZG9uJ3QgdGFrZSBhIHNuYXBzaG90IG9yIFhpZCBpbiB0aGlzIHRyYW5zYWN0aW9uLApk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RyYW5zYW0uaCBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy90cmFuc2FtLmgKaW5kZXggN2Q4MmNkMmViNTYuLjE1ZTM0NWM3YTE5IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9hY2Nlc3MvdHJhbnNhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90 cmFuc2FtLmgKQEAgLTM1NSw2ICszNTUsMjEgQEAgTm9ybWFsVHJhbnNhY3Rpb25JZE9sZGVyKFRy YW5zYWN0aW9uSWQgYSwgVHJhbnNhY3Rpb25JZCBiKQogCXJldHVybiBiOwogfQogCisvKiByZXR1 cm4gdGhlIG5ld2VyIG9mIHRoZSB0d28gSURzICovCitzdGF0aWMgaW5saW5lIFRyYW5zYWN0aW9u SWQKK1RyYW5zYWN0aW9uSWROZXdlcihUcmFuc2FjdGlvbklkIGEsIFRyYW5zYWN0aW9uSWQgYikK K3sKKwlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKGEpKQorCQlyZXR1cm4gYjsKKworCWlmICgh VHJhbnNhY3Rpb25JZElzVmFsaWQoYikpCisJCXJldHVybiBhOworCisJaWYgKFRyYW5zYWN0aW9u SWRGb2xsb3dzKGEsIGIpKQorCQlyZXR1cm4gYTsKKwlyZXR1cm4gYjsKK30KKwogLyogcmV0dXJu IHRoZSBuZXdlciBvZiB0aGUgdHdvIElEcyAqLwogc3RhdGljIGlubGluZSBGdWxsVHJhbnNhY3Rp b25JZAogRnVsbFRyYW5zYWN0aW9uSWROZXdlcihGdWxsVHJhbnNhY3Rpb25JZCBhLCBGdWxsVHJh bnNhY3Rpb25JZCBiKQotLSAKMi40My4wCgo= --000000000000176c55063224bb18 Content-Type: application/octet-stream; name="v17-0010-Remove-PROC_IN_SAFE_IC-optimization.patch" Content-Disposition: attachment; filename="v17-0010-Remove-PROC_IN_SAFE_IC-optimization.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m967p89e9 RnJvbSBhN2IyYjcyMzkyNmQ1ZmMxNGRkZDY1MGE1ZmI1YjVlYTIzNTMzMWMwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAzMSBEZWMgMjAyNCAxNDoyNDo0OCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjE3IDEw LzEyXSBSZW1vdmUgUFJPQ19JTl9TQUZFX0lDIG9wdGltaXphdGlvbgoKUmVtb3ZlIHRoZSBvcHRp bWl6YXRpb24gdGhhdCBhbGxvd2VkIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRvIGlnbm9yZSBv dGhlcgpjb25jdXJyZW50IGJ1aWxkcyBvZiAic2FmZSIgaW5kZXhlcyAodGhvc2Ugd2l0aG91dCBl eHByZXNzaW9ucyBvciBwcmVkaWNhdGVzKS4KVGhpcyBvcHRpbWl6YXRpb24gaXMgbm8gbG9uZ2Vy IG5lZWRlZCB3aXRoIHRoZSBuZXcgc25hcHNob3QgaGFuZGxpbmcgYXBwcm9hY2gKdGhhdCB1c2Vz IHBlcmlvZGljYWxseSByZWZyZXNoZWQgc25hcHNob3RzIGluc3RlYWQgb2YgYSBzaW5nbGUgcmVm ZXJlbmNlCnNuYXBzaG90LgoKVGhlIGNoYW5nZSBncmVhdGx5IHNpbXBsaWZpZXMgdGhlIGNvbmN1 cnJlbnQgaW5kZXggYnVpbGQgY29kZSBieToKLSBSZW1vdmluZyB0aGUgUFJPQ19JTl9TQUZFX0lD IHByb2Nlc3Mgc3RhdHVzIGZsYWcKLSBSZW1vdmluZyBhbGwgc2V0X2luZGV4c2FmZV9wcm9jZmxh Z3MoKSBjYWxscyBhbmQgcmVsYXRlZCBsb2dpYwotIFJlbW92aW5nIHNwZWNpYWwgY2FzZSBoYW5k bGluZyBpbiBHZXRDdXJyZW50VmlydHVhbFhJRHMoKQotIFJlbW92aW5nIHJlbGF0ZWQgdGVzdCBj YXNlcyBhbmQgaW5qZWN0aW9uIHBvaW50cwoKVGhpcyBpcyBwYXJ0IG9mIGltcHJvdmluZyBjb25j dXJyZW50IGluZGV4IGJ1aWxkcyB0byBiZXR0ZXIgaGFuZGxlIHhtaW4KcHJvcGFnYXRpb24gZHVy aW5nIGxvbmctcnVubmluZyBvcGVyYXRpb25zLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmlu L2JyaW4uYyAgICAgICAgICAgICAgICB8ICAgNiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9n aW5pbnNlcnQuYyAgICAgICAgICAgIHwgICA2ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idHNvcnQuYyAgICAgICAgICAgfCAgIDYgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4 Y21kcy5jICAgICAgICAgICAgICB8IDE0MiArLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRl L3N0b3JhZ2UvcHJvYy5oICAgICAgICAgICAgICAgICAgICB8ICAgOCArLQogc3JjL3Rlc3QvbW9k dWxlcy9pbmplY3Rpb25fcG9pbnRzL01ha2VmaWxlICAgIHwgICAyICstCiAuLi4vZXhwZWN0ZWQv cmVpbmRleF9jb25jLm91dCAgICAgICAgICAgICAgICAgfCAgNTEgLS0tLS0tLQogc3JjL3Rlc3Qv bW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL21lc29uLmJ1aWxkIHwgICAxIC0KIC4uLi9pbmplY3Rp b25fcG9pbnRzL3NxbC9yZWluZGV4X2NvbmMuc3FsICAgICB8ICAyOCAtLS0tCiA5IGZpbGVzIGNo YW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDIzNyBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEw MDY0NCBzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvcmVpbmRleF9j b25jLm91dAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3Bv aW50cy9zcWwvcmVpbmRleF9jb25jLnNxbAoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9icmluL2JyaW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYwppbmRleCA0MjM0 MjRlNTFhMi4uOTNhZDNmM2Y2MzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmlu L2JyaW4uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKQEAgLTI4OTMsMTEg KzI4OTMsOSBAQCBfYnJpbl9wYXJhbGxlbF9idWlsZF9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNo bV90b2MgKnRvYykKIAlpbnQJCQlzb3J0bWVtOwogCiAJLyoKLQkgKiBUaGUgb25seSBwb3NzaWJs ZSBzdGF0dXMgZmxhZyB0aGF0IGNhbiBiZSBzZXQgdG8gdGhlIHBhcmFsbGVsIHdvcmtlciBpcwot CSAqIFBST0NfSU5fU0FGRV9JQy4KKwkgKiBUaGVyZSBhcmUgbm8gcG9zc2libGUgc3RhdHVzIGZs YWcgdGhhdCBjYW4gYmUgc2V0IHRvIHRoZSBwYXJhbGxlbCB3b3JrZXIuCiAJICovCi0JQXNzZXJ0 KChNeVByb2MtPnN0YXR1c0ZsYWdzID09IDApIHx8Ci0JCSAgIChNeVByb2MtPnN0YXR1c0ZsYWdz ID09IFBST0NfSU5fU0FGRV9JQykpOworCUFzc2VydChNeVByb2MtPnN0YXR1c0ZsYWdzID09IDAp OwogCiAJLyogU2V0IGRlYnVnX3F1ZXJ5X3N0cmluZyBmb3IgaW5kaXZpZHVhbCB3b3JrZXJzIGZp cnN0ICovCiAJc2hhcmVkcXVlcnkgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9R VUVSWV9URVhULCB0cnVlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2lu aW5zZXJ0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jCmluZGV4IGZlMGI3 OWE1ZmRkLi40YzYwMmY3NDk1NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9n aW5pbnNlcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jCkBAIC0y MDk0LDExICsyMDk0LDkgQEAgX2dpbl9wYXJhbGxlbF9idWlsZF9tYWluKGRzbV9zZWdtZW50ICpz ZWcsIHNobV90b2MgKnRvYykKIAlpbnQJCQlzb3J0bWVtOwogCiAJLyoKLQkgKiBUaGUgb25seSBw b3NzaWJsZSBzdGF0dXMgZmxhZyB0aGF0IGNhbiBiZSBzZXQgdG8gdGhlIHBhcmFsbGVsIHdvcmtl ciBpcwotCSAqIFBST0NfSU5fU0FGRV9JQy4KKwkgKiBUaGVyZSBhcmUgbm8gcG9zc2libGUgc3Rh dHVzIGZsYWcgdGhhdCBjYW4gYmUgc2V0IHRvIHRoZSBwYXJhbGxlbCB3b3JrZXIuCiAJICovCi0J QXNzZXJ0KChNeVByb2MtPnN0YXR1c0ZsYWdzID09IDApIHx8Ci0JCSAgIChNeVByb2MtPnN0YXR1 c0ZsYWdzID09IFBST0NfSU5fU0FGRV9JQykpOworCUFzc2VydChNeVByb2MtPnN0YXR1c0ZsYWdz ID09IDApOwogCiAJLyogU2V0IGRlYnVnX3F1ZXJ5X3N0cmluZyBmb3IgaW5kaXZpZHVhbCB3b3Jr ZXJzIGZpcnN0ICovCiAJc2hhcmVkcXVlcnkgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVM X0tFWV9RVUVSWV9URVhULCB0cnVlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9u YnRyZWUvbmJ0c29ydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKaW5k ZXggOGQ3NTU0NzBlOGMuLjAwYzg2YmZjZmM2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvbmJ0cmVlL25idHNvcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNv cnQuYwpAQCAtMTkxMCwxMSArMTkxMCw5IEBAIF9idF9wYXJhbGxlbF9idWlsZF9tYWluKGRzbV9z ZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKICNlbmRpZgkJCQkJCQkvKiBCVFJFRV9CVUlMRF9T VEFUUyAqLwogCiAJLyoKLQkgKiBUaGUgb25seSBwb3NzaWJsZSBzdGF0dXMgZmxhZyB0aGF0IGNh biBiZSBzZXQgdG8gdGhlIHBhcmFsbGVsIHdvcmtlciBpcwotCSAqIFBST0NfSU5fU0FGRV9JQy4K KwkgKiBUaGVyZSBhcmUgbm8gcG9zc2libGUgc3RhdHVzIGZsYWcgdGhhdCBjYW4gYmUgc2V0IHRv IHRoZSBwYXJhbGxlbCB3b3JrZXIuCiAJICovCi0JQXNzZXJ0KChNeVByb2MtPnN0YXR1c0ZsYWdz ID09IDApIHx8Ci0JCSAgIChNeVByb2MtPnN0YXR1c0ZsYWdzID09IFBST0NfSU5fU0FGRV9JQykp OworCUFzc2VydChNeVByb2MtPnN0YXR1c0ZsYWdzID09IDApOwogCiAJLyogU2V0IGRlYnVnX3F1 ZXJ5X3N0cmluZyBmb3IgaW5kaXZpZHVhbCB3b3JrZXJzIGZpcnN0ICovCiAJc2hhcmVkcXVlcnkg PSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9RVUVSWV9URVhULCB0cnVlKTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvaW5kZXhjbWRzLmMKaW5kZXggNGY5Y2NjOWNhOGQuLmJlMzk2MzY4YTA5IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9pbmRleGNtZHMuYwpAQCAtMTE1LDcgKzExNSw2IEBAIHN0YXRpYyBib29sIFJl aW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwKIAkJCQkJ CQkJCQlPaWQgcmVsYXRpb25PaWQsCiAJCQkJCQkJCQkJY29uc3QgUmVpbmRleFBhcmFtcyAqcGFy YW1zKTsKIHN0YXRpYyB2b2lkIHVwZGF0ZV9yZWxpc3BhcnRpdGlvbihPaWQgcmVsYXRpb25JZCwg Ym9vbCBuZXd2YWwpOwotc3RhdGljIGlubGluZSB2b2lkIHNldF9pbmRleHNhZmVfcHJvY2ZsYWdz KHZvaWQpOwogCiAvKgogICogY2FsbGJhY2sgYXJndW1lbnQgdHlwZSBmb3IgUmFuZ2VWYXJDYWxs YmFja0ZvclJlaW5kZXhJbmRleCgpCkBAIC00MTgsMTAgKzQxNyw3IEBAIENvbXBhcmVPcGNsYXNz T3B0aW9ucyhjb25zdCBEYXR1bSAqb3B0czEsIGNvbnN0IERhdHVtICpvcHRzMiwgaW50IG5hdHRz KQogICogbGF6eSBWQUNVVU1zLCBiZWNhdXNlIHRoZXkgd29uJ3QgYmUgZmF6ZWQgYnkgbWlzc2lu ZyBpbmRleCBlbnRyaWVzCiAgKiBlaXRoZXIuICAoTWFudWFsIEFOQUxZWkVzLCBob3dldmVyLCBj YW4ndCBiZSBleGNsdWRlZCBiZWNhdXNlIHRoZXkKICAqIG1pZ2h0IGJlIHdpdGhpbiB0cmFuc2Fj dGlvbnMgdGhhdCBhcmUgZ29pbmcgdG8gZG8gYXJiaXRyYXJ5IG9wZXJhdGlvbnMKLSAqIGxhdGVy LikgIFByb2Nlc3NlcyBydW5uaW5nIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgb3IgUkVJTkRF WCBDT05DVVJSRU5UTFkKLSAqIG9uIGluZGV4ZXMgdGhhdCBhcmUgbmVpdGhlciBleHByZXNzaW9u YWwgbm9yIHBhcnRpYWwgYXJlIGFsc28gc2FmZSB0bwotICogaWdub3JlLCBzaW5jZSB3ZSBrbm93 IHRoYXQgdGhvc2UgcHJvY2Vzc2VzIHdvbid0IGV4YW1pbmUgYW55IGRhdGEKLSAqIG91dHNpZGUg dGhlIHRhYmxlIHRoZXkncmUgaW5kZXhpbmcuCisgKiBsYXRlci4pCiAgKgogICogQWxzbywgR2V0 Q3VycmVudFZpcnR1YWxYSURzIG5ldmVyIHJlcG9ydHMgb3VyIG93biB2eGlkLCBzbyB3ZSBuZWVk IG5vdAogICogY2hlY2sgZm9yIHRoYXQuCkBAIC00NDIsOCArNDM4LDcgQEAgV2FpdEZvck9sZGVy U25hcHNob3RzKFRyYW5zYWN0aW9uSWQgbGltaXRYbWluLCBib29sIHByb2dyZXNzKQogCVZpcnR1 YWxUcmFuc2FjdGlvbklkICpvbGRfc25hcHNob3RzOwogCiAJb2xkX3NuYXBzaG90cyA9IEdldEN1 cnJlbnRWaXJ0dWFsWElEcyhsaW1pdFhtaW4sIHRydWUsIGZhbHNlLAotCQkJCQkJCQkJCSAgUFJP Q19JU19BVVRPVkFDVVVNIHwgUFJPQ19JTl9WQUNVVU0KLQkJCQkJCQkJCQkgIHwgUFJPQ19JTl9T QUZFX0lDLAorCQkJCQkJCQkJCSAgUFJPQ19JU19BVVRPVkFDVVVNIHwgUFJPQ19JTl9WQUNVVU0s CiAJCQkJCQkJCQkJICAmbl9vbGRfc25hcHNob3RzKTsKIAlpZiAocHJvZ3Jlc3MpCiAJCXBnc3Rh dF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfV0FJVEZPUl9UT1RBTCwgbl9vbGRfc25h cHNob3RzKTsKQEAgLTQ2Myw4ICs0NTgsNyBAQCBXYWl0Rm9yT2xkZXJTbmFwc2hvdHMoVHJhbnNh Y3Rpb25JZCBsaW1pdFhtaW4sIGJvb2wgcHJvZ3Jlc3MpCiAKIAkJCW5ld2VyX3NuYXBzaG90cyA9 IEdldEN1cnJlbnRWaXJ0dWFsWElEcyhsaW1pdFhtaW4sCiAJCQkJCQkJCQkJCQkJdHJ1ZSwgZmFs c2UsCi0JCQkJCQkJCQkJCQkJUFJPQ19JU19BVVRPVkFDVVVNIHwgUFJPQ19JTl9WQUNVVU0KLQkJ CQkJCQkJCQkJCQl8IFBST0NfSU5fU0FGRV9JQywKKwkJCQkJCQkJCQkJCQlQUk9DX0lTX0FVVE9W QUNVVU0gfCBQUk9DX0lOX1ZBQ1VVTSwKIAkJCQkJCQkJCQkJCQkmbl9uZXdlcl9zbmFwc2hvdHMp OwogCQkJZm9yIChqID0gaTsgaiA8IG5fb2xkX3NuYXBzaG90czsgaisrKQogCQkJewpAQCAtNTc4 LDcgKzU3Miw2IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCWFtb3B0aW9uc19mdW5jdGlv biBhbW9wdGlvbnM7CiAJYm9vbAkJZXhjbHVzaW9uOwogCWJvb2wJCXBhcnRpdGlvbmVkOwotCWJv b2wJCXNhZmVfaW5kZXg7CiAJRGF0dW0JCXJlbG9wdGlvbnM7CiAJaW50MTYJICAgKmNvbG9wdGlv bnM7CiAJSW5kZXhJbmZvICAqaW5kZXhJbmZvOwpAQCAtMTE4MSwxMCArMTE3NCw2IEBAIERlZmlu ZUluZGV4KE9pZCB0YWJsZUlkLAogCQl9CiAJfQogCi0JLyogSXMgaW5kZXggc2FmZSBmb3Igb3Ro ZXJzIHRvIGlnbm9yZT8gIFNlZSBzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpICovCi0Jc2FmZV9p bmRleCA9IGluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnMgPT0gTklMICYmCi0JCWluZGV4SW5mby0+ aWlfUHJlZGljYXRlID09IE5JTDsKLQogCS8qCiAJICogUmVwb3J0IGluZGV4IGNyZWF0aW9uIGlm IGFwcHJvcHJpYXRlIChkZWxheSB0aGlzIHRpbGwgYWZ0ZXIgbW9zdCBvZiB0aGUKIAkgKiBlcnJv ciBjaGVja3MpCkBAIC0xNjcxLDEwICsxNjYwLDYgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQs CiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQo KTsKIAotCS8qIFRlbGwgY29uY3VycmVudCBpbmRleCBidWlsZHMgdG8gaWdub3JlIHVzLCBpZiBp bmRleCBxdWFsaWZpZXMgKi8KLQlpZiAoc2FmZV9pbmRleCkKLQkJc2V0X2luZGV4c2FmZV9wcm9j ZmxhZ3MoKTsKLQogCS8qCiAJICogVGhlIGluZGV4IGlzIG5vdyB2aXNpYmxlLCBzbyB3ZSBjYW4g cmVwb3J0IHRoZSBPSUQuICBXaGlsZSBvbiBpdCwKIAkgKiBpbmNsdWRlIHRoZSByZXBvcnQgZm9y IHRoZSBiZWdpbm5pbmcgb2YgcGhhc2UgMi4KQEAgLTE3MjksOSArMTcxNCw2IEBAIERlZmluZUlu ZGV4KE9pZCB0YWJsZUlkLAogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCVN0YXJ0VHJh bnNhY3Rpb25Db21tYW5kKCk7CiAKLQkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRv IGlnbm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCi0JaWYgKHNhZmVfaW5kZXgpCi0JCXNl dF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7CiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQ Uk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCiAJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFT RV9XQUlUXzIpOwogCS8qCkBAIC0xNzYxLDEwICsxNzQzLDYgQEAgRGVmaW5lSW5kZXgoT2lkIHRh YmxlSWQsCiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJU3RhcnRUcmFuc2FjdGlvbkNv bW1hbmQoKTsKIAotCS8qIFRlbGwgY29uY3VycmVudCBpbmRleCBidWlsZHMgdG8gaWdub3JlIHVz LCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KLQlpZiAoc2FmZV9pbmRleCkKLQkJc2V0X2luZGV4c2Fm ZV9wcm9jZmxhZ3MoKTsKLQogCS8qCiAJICogUGhhc2UgMyBvZiBjb25jdXJyZW50IGluZGV4IGJ1 aWxkCiAJICoKQEAgLTE3OTAsOSArMTc2OCw3IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAog CiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQo KTsKLQkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRvIGlnbm9yZSB1cywgaWYgaW5k ZXggcXVhbGlmaWVzICovCi0JaWYgKHNhZmVfaW5kZXgpCi0JCXNldF9pbmRleHNhZmVfcHJvY2Zs YWdzKCk7CisKIAkvKgogCSAqIE1lcmdlIGNvbnRlbnQgb2YgYXV4aWxpYXJ5IGFuZCB0YXJnZXQg aW5kZXhlcyAtIGluc2VydCBhbnkgbWlzc2luZyBpbmRleCBlbnRyaWVzLgogCSAqLwpAQCAtMTgw OSw5ICsxNzg1LDYgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJQ29tbWl0VHJhbnNhY3Rp b25Db21tYW5kKCk7CiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qIFRlbGwgY29u Y3VycmVudCBpbmRleCBidWlsZHMgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8K LQlpZiAoc2FmZV9pbmRleCkKLQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKIAogCS8qIFdl IHNob3VsZCBub3cgZGVmaW5pdGVseSBub3QgYmUgYWR2ZXJ0aXNpbmcgYW55IHhtaW4uICovCiAJ QXNzZXJ0KE15UHJvYy0+eG1pbiA9PSBJbnZhbGlkVHJhbnNhY3Rpb25JZCk7CkBAIC0xODUyLDEw ICsxODI1LDYgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJQ29tbWl0VHJhbnNhY3Rpb25D b21tYW5kKCk7CiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qIFRlbGwgY29uY3Vy cmVudCBpbmRleCBidWlsZHMgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KLQlp ZiAoc2FmZV9pbmRleCkKLQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKLQogCXBnc3RhdF9w cm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAogCQkJCQkJCSBQ Uk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF81KTsKIAkvKiBOb3cgd2FpdCBmb3IgYWxsIHRy YW5zYWN0aW9uIHRvIHNlZSBhdXhpbGlhcnkgYXMgIm5vbi1yZWFkeSBmb3IgaW5zZXJ0cyIgKi8K QEAgLTE4NzYsMTAgKzE4NDUsNiBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAlDb21taXRU cmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JLyog VGVsbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxp ZmllcyAqLwotCWlmIChzYWZlX2luZGV4KQotCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOwot CiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0Us CiAJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzYpOwogCS8qIE5vdyB3YWl0 IGZvciBhbGwgdHJhbnNhY3Rpb24gdG8gaWdub3JlIGF1eGlsaWFyeSBiZWNhdXNlIGl0IGlzIGRl YWQgKi8KQEAgLTM2MTksNyArMzU4NCw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShj b25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCU9p ZAkJCWF1eEluZGV4SWQ7CiAJCU9pZAkJCXRhYmxlSWQ7CiAJCU9pZAkJCWFtSWQ7Ci0JCWJvb2wJ CXNhZmU7CQkvKiBmb3Igc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MgKi8KIAl9IFJlaW5kZXhJbmRl eEluZm87CiAJTGlzdAkgICAqaGVhcFJlbGF0aW9uSWRzID0gTklMOwogCUxpc3QJICAgKmluZGV4 SWRzID0gTklMOwpAQCAtMzk5MSwxNyArMzk1NSw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJl bnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWlu CiAJCXNhdmVfbmVzdGxldmVsID0gTmV3R1VDTmVzdExldmVsKCk7CiAJCVJlc3RyaWN0U2VhcmNo UGF0aCgpOwogCi0JCS8qIGRldGVybWluZSBzYWZldHkgb2YgdGhpcyBpbmRleCBmb3Igc2V0X2lu ZGV4c2FmZV9wcm9jZmxhZ3MgKi8KLQkJaWR4LT5zYWZlID0gKFJlbGF0aW9uR2V0SW5kZXhFeHBy ZXNzaW9ucyhpbmRleFJlbCkgPT0gTklMICYmCi0JCQkJCSBSZWxhdGlvbkdldEluZGV4UHJlZGlj YXRlKGluZGV4UmVsKSA9PSBOSUwpOwotCi0jaWZkZWYgVVNFX0lOSkVDVElPTl9QT0lOVFMKLQkJ aWYgKGlkeC0+c2FmZSkKLQkJCUlOSkVDVElPTl9QT0lOVCgicmVpbmRleC1jb25jLWluZGV4LXNh ZmUiKTsKLQkJZWxzZQotCQkJSU5KRUNUSU9OX1BPSU5UKCJyZWluZGV4LWNvbmMtaW5kZXgtbm90 LXNhZmUiKTsKLSNlbmRpZgotCiAJCWlkeC0+dGFibGVJZCA9IFJlbGF0aW9uR2V0UmVsaWQoaGVh cFJlbCk7CiAJCWlkeC0+YW1JZCA9IGluZGV4UmVsLT5yZF9yZWwtPnJlbGFtOwogCkBAIC00MDYx LDcgKzQwMTQsNiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0 bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQluZXdpZHggPSBwYWxsb2Nf b2JqZWN0KFJlaW5kZXhJbmRleEluZm8pOwogCQluZXdpZHgtPmluZGV4SWQgPSBuZXdJbmRleElk OwogCQluZXdpZHgtPmF1eEluZGV4SWQgPSBhdXhJbmRleElkOwotCQluZXdpZHgtPnNhZmUgPSBp ZHgtPnNhZmU7CiAJCW5ld2lkeC0+dGFibGVJZCA9IGlkeC0+dGFibGVJZDsKIAkJbmV3aWR4LT5h bUlkID0gaWR4LT5hbUlkOwogCkBAIC00MTU0LDExICs0MTA2LDYgQEAgUmVpbmRleFJlbGF0aW9u Q29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNv bnN0IFJlaW4KIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlTdGFydFRyYW5zYWN0aW9u Q29tbWFuZCgpOwogCi0JLyoKLQkgKiBCZWNhdXNlIHdlIGRvbid0IHRha2UgYSBzbmFwc2hvdCBp biB0aGlzIHRyYW5zYWN0aW9uLCB0aGVyZSdzIG5vIG5lZWQKLQkgKiB0byBzZXQgdGhlIFBST0Nf SU5fU0FGRV9JQyBmbGFnIGhlcmUuCi0JICovCi0KIAkvKgogCSAqIFBoYXNlIDIgb2YgUkVJTkRF WCBDT05DVVJSRU5UTFkKIAkgKgpAQCAtNDE4OSwxMCArNDEzNiw2IEBAIFJlaW5kZXhSZWxhdGlv bkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBj b25zdCBSZWluCiAJCSAqLwogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCi0JCS8qIFRlbGwg Y29uY3VycmVudCBpbmRleGluZyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLwot CQlpZiAobmV3aWR4LT5zYWZlKQotCQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKLQogCQkv KiBCdWlsZCBhdXhpbGlhcnkgaW5kZXgsIGl0IGlzIGZhc3QgLSB3aXRob3V0IGFueSBhY3R1YWwg aGVhcCBzY2FuLCBqdXN0IGFuIGVtcHR5IGluZGV4LiAqLwogCQlpbmRleF9jb25jdXJyZW50bHlf YnVpbGQobmV3aWR4LT50YWJsZUlkLCBuZXdpZHgtPmF1eEluZGV4SWQpOwogCkBAIC00MjAxLDEx ICs0MTQ0LDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10 ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAogCVN0YXJ0VHJhbnNhY3Rpb25D b21tYW5kKCk7CiAKLQkvKgotCSAqIEJlY2F1c2Ugd2UgZG9uJ3QgdGFrZSBhIHNuYXBzaG90IGlu IHRoaXMgdHJhbnNhY3Rpb24sIHRoZXJlJ3Mgbm8gbmVlZAotCSAqIHRvIHNldCB0aGUgUFJPQ19J Tl9TQUZFX0lDIGZsYWcgaGVyZS4KLQkgKi8KLQogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFy YW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAogCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURY X1BIQVNFX1dBSVRfMik7CiAJLyoKQEAgLTQyMzAsMTAgKzQxNjgsNiBAQCBSZWluZGV4UmVsYXRp b25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwg Y29uc3QgUmVpbgogCQkgKi8KIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAotCQkvKiBUZWxs IGNvbmN1cnJlbnQgaW5kZXhpbmcgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8K LQkJaWYgKG5ld2lkeC0+c2FmZSkKLQkJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7Ci0KIAkJ LyoKIAkJICogVXBkYXRlIHByb2dyZXNzIGZvciB0aGUgaW5kZXggdG8gYnVpbGQsIHdpdGggdGhl IGNvcnJlY3QgcGFyZW50CiAJCSAqIHRhYmxlIGludm9sdmVkLgpAQCAtNDI1MywxMSArNDE4Nyw2 IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwg T2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAKIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgp OwogCi0JLyoKLQkgKiBCZWNhdXNlIHdlIGRvbid0IHRha2UgYSBzbmFwc2hvdCBvciBYaWQgaW4g dGhpcyB0cmFuc2FjdGlvbiwgdGhlcmUncyBubwotCSAqIG5lZWQgdG8gc2V0IHRoZSBQUk9DX0lO X1NBRkVfSUMgZmxhZyBoZXJlLgotCSAqLwotCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJh bShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCiAJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhf UEhBU0VfV0FJVF8zKTsKIAlXYWl0Rm9yTG9ja2Vyc011bHRpcGxlKGxvY2tUYWdzLCBTaGFyZUxv Y2ssIHRydWUpOwpAQCAtNDI3OCwxMCArNDIwNyw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJl bnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWlu CiAJCSAqLwogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCi0JCS8qIFRlbGwgY29uY3VycmVu dCBpbmRleGluZyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLwotCQlpZiAobmV3 aWR4LT5zYWZlKQotCQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKLQogCQkvKgogCQkgKiBV cGRhdGluZyBwZ19pbmRleCBtaWdodCBpbnZvbHZlIFRPQVNUIHRhYmxlIGFjY2Vzcywgc28gZW5z dXJlIHdlCiAJCSAqIGhhdmUgYSB2YWxpZCBzbmFwc2hvdC4KQEAgLTQzMTQsMTAgKzQyMzksNiBA QCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9p ZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkgKi8KIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMo KTsKIAotCQkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXhpbmcgdG8gaWdub3JlIHVzLCBpZiBpbmRl eCBxdWFsaWZpZXMgKi8KLQkJaWYgKG5ld2lkeC0+c2FmZSkKLQkJCXNldF9pbmRleHNhZmVfcHJv Y2ZsYWdzKCk7Ci0KIAkJLyoKIAkJICogVXBkYXRlIHByb2dyZXNzIGZvciB0aGUgaW5kZXggdG8g YnVpbGQsIHdpdGggdGhlIGNvcnJlY3QgcGFyZW50CiAJCSAqIHRhYmxlIGludm9sdmVkLgpAQCAt NDM0NSw5ICs0MjY2LDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5k ZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJICogaW50ZXJlc3Rp bmcgdHVwbGVzLiAgQnV0IHNpbmNlIGl0IG1pZ2h0IG5vdCBjb250YWluIHR1cGxlcyBkZWxldGVk CiAJCSAqIGp1c3QgYmVmb3JlIHRoZSBsYXRlc3Qgc25hcCB3YXMgdGFrZW4sIHdlIGhhdmUgdG8g d2FpdCBvdXQgYW55CiAJCSAqIHRyYW5zYWN0aW9ucyB0aGF0IG1pZ2h0IGhhdmUgb2xkZXIgc25h cHNob3RzLgotCQkgKgotCQkgKiBCZWNhdXNlIHdlIGRvbid0IHRha2UgYSBzbmFwc2hvdCBvciBY aWQgaW4gdGhpcyB0cmFuc2FjdGlvbiwKLQkJICogdGhlcmUncyBubyBuZWVkIHRvIHNldCB0aGUg UFJPQ19JTl9TQUZFX0lDIGZsYWcgaGVyZS4KIAkJICovCiAJCXBnc3RhdF9wcm9ncmVzc191cGRh dGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAogCQkJCQkJCQkJIFBST0dSRVNTX0NS RUFURUlEWF9QSEFTRV9XQUlUXzQpOwpAQCAtNDM2OSwxMyArNDI4Nyw2IEBAIFJlaW5kZXhSZWxh dGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lk LCBjb25zdCBSZWluCiAJSU5KRUNUSU9OX1BPSU5UKCJyZWluZGV4X3JlbGF0aW9uX2NvbmN1cnJl bnRseV9iZWZvcmVfc3dhcCIpOwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQkvKgot CSAqIEJlY2F1c2UgdGhpcyB0cmFuc2FjdGlvbiBvbmx5IGRvZXMgY2F0YWxvZyBtYW5pcHVsYXRp b25zIGFuZCBkb2Vzbid0IGRvCi0JICogYW55IGluZGV4IG9wZXJhdGlvbnMsIHdlIGNhbiBzZXQg dGhlIFBST0NfSU5fU0FGRV9JQyBmbGFnIGhlcmUKLQkgKiB1bmNvbmRpdGlvbmFsbHkuCi0JICov Ci0Jc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKLQogCWZvcmJvdGgobGMsIGluZGV4SWRzLCBs YzIsIG5ld0luZGV4SWRzKQogCXsKIAkJUmVpbmRleEluZGV4SW5mbyAqb2xkaWR4ID0gbGZpcnN0 KGxjKTsKQEAgLTQ0MzEsMTIgKzQzNDIsNiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHko Y29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCUNv bW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAK LQkvKgotCSAqIFdoaWxlIHdlIGNvdWxkIHNldCBQUk9DX0lOX1NBRkVfSUMgaWYgYWxsIGluZGV4 ZXMgcXVhbGlmaWVkLCB0aGVyZSdzIG5vCi0JICogcmVhbCBuZWVkIGZvciB0aGF0LCBiZWNhdXNl IHdlIG9ubHkgYWNxdWlyZSBhbiBYaWQgYWZ0ZXIgdGhlIHdhaXQgaXMKLQkgKiBkb25lLCBhbmQg dGhhdCBsYXN0cyBmb3IgYSB2ZXJ5IHNob3J0IHBlcmlvZC4KLQkgKi8KLQogCS8qCiAJICogUGhh c2UgNSBvZiBSRUlOREVYIENPTkNVUlJFTlRMWQogCSAqCkBAIC00NDk4LDEyICs0NDAzLDYgQEAg UmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQg cmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlT dGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JLyoKLQkgKiBXaGlsZSB3ZSBjb3VsZCBzZXQg UFJPQ19JTl9TQUZFX0lDIGlmIGFsbCBpbmRleGVzIHF1YWxpZmllZCwgdGhlcmUncyBubwotCSAq IHJlYWwgbmVlZCBmb3IgdGhhdCwgYmVjYXVzZSB3ZSBvbmx5IGFjcXVpcmUgYW4gWGlkIGFmdGVy IHRoZSB3YWl0IGlzCi0JICogZG9uZSwgYW5kIHRoYXQgbGFzdHMgZm9yIGEgdmVyeSBzaG9ydCBw ZXJpb2QuCi0JICovCi0KIAkvKgogCSAqIFBoYXNlIDYgb2YgUkVJTkRFWCBDT05DVVJSRU5UTFkK IAkgKgpAQCAtNDc2MywzNiArNDY2MiwzIEBAIHVwZGF0ZV9yZWxpc3BhcnRpdGlvbihPaWQgcmVs YXRpb25JZCwgYm9vbCBuZXd2YWwpCiAJdGFibGVfY2xvc2UoY2xhc3NSZWwsIFJvd0V4Y2x1c2l2 ZUxvY2spOwogfQogCi0vKgotICogU2V0IHRoZSBQUk9DX0lOX1NBRkVfSUMgZmxhZyBpbiBNeVBy b2MtPnN0YXR1c0ZsYWdzLgotICoKLSAqIFdoZW4gZG9pbmcgY29uY3VycmVudCBpbmRleCBidWls ZHMsIHdlIGNhbiBzZXQgdGhpcyBmbGFnCi0gKiB0byB0ZWxsIG90aGVyIHByb2Nlc3NlcyBjb25j dXJyZW50bHkgcnVubmluZyBDUkVBVEUKLSAqIElOREVYIENPTkNVUlJFTlRMWSBvciBSRUlOREVY IENPTkNVUlJFTlRMWSB0byBpZ25vcmUgdXMgd2hlbgotICogZG9pbmcgdGhlaXIgd2FpdHMgZm9y IGNvbmN1cnJlbnQgc25hcHNob3RzLiAgT24gb25lIGhhbmQgaXQKLSAqIGF2b2lkcyBwb2ludGxl c3NseSB3YWl0aW5nIGZvciBhIHByb2Nlc3MgdGhhdCdzIG5vdCBpbnRlcmVzdGluZwotICogYW55 d2F5OyBidXQgbW9yZSBpbXBvcnRhbnRseSBpdCBhdm9pZHMgZGVhZGxvY2tzIGluIHNvbWUgY2Fz ZXMuCi0gKgotICogVGhpcyBjYW4gYmUgZG9uZSBzYWZlbHkgb25seSBmb3IgaW5kZXhlcyB0aGF0 IGRvbid0IGV4ZWN1dGUgYW55Ci0gKiBleHByZXNzaW9ucyB0aGF0IGNvdWxkIGFjY2VzcyBvdGhl ciB0YWJsZXMsIHNvIGluZGV4IG11c3Qgbm90IGJlCi0gKiBleHByZXNzaW9uYWwgbm9yIHBhcnRp YWwuICBDYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIG9ubHkgY2FsbGluZwotICogdGhpcyByb3V0 aW5lIHdoZW4gdGhhdCBhc3N1bXB0aW9uIGhvbGRzIHRydWUuCi0gKgotICogKFRoZSBmbGFnIGlz IHJlc2V0IGF1dG9tYXRpY2FsbHkgYXQgdHJhbnNhY3Rpb24gZW5kLCBzbyBpdCBtdXN0IGJlCi0g KiBzZXQgZm9yIGVhY2ggdHJhbnNhY3Rpb24uKQotICovCi1zdGF0aWMgaW5saW5lIHZvaWQKLXNl dF9pbmRleHNhZmVfcHJvY2ZsYWdzKHZvaWQpCi17Ci0JLyoKLQkgKiBUaGlzIHNob3VsZCBvbmx5 IGJlIGNhbGxlZCBiZWZvcmUgaW5zdGFsbGluZyB4aWQgb3IgeG1pbiBpbiBNeVByb2M7Ci0JICog b3RoZXJ3aXNlLCBjb25jdXJyZW50IHByb2Nlc3NlcyBjb3VsZCBzZWUgYW4gWG1pbiB0aGF0IG1v dmVzIGJhY2t3YXJkcy4KLQkgKi8KLQlBc3NlcnQoTXlQcm9jLT54aWQgPT0gSW52YWxpZFRyYW5z YWN0aW9uSWQgJiYKLQkJICAgTXlQcm9jLT54bWluID09IEludmFsaWRUcmFuc2FjdGlvbklkKTsK LQotCUxXTG9ja0FjcXVpcmUoUHJvY0FycmF5TG9jaywgTFdfRVhDTFVTSVZFKTsKLQlNeVByb2Mt PnN0YXR1c0ZsYWdzIHw9IFBST0NfSU5fU0FGRV9JQzsKLQlQcm9jR2xvYmFsLT5zdGF0dXNGbGFn c1tNeVByb2MtPnBneGFjdG9mZl0gPSBNeVByb2MtPnN0YXR1c0ZsYWdzOwotCUxXTG9ja1JlbGVh c2UoUHJvY0FycmF5TG9jayk7Ci19CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3By b2MuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCmluZGV4IGY1MWIwM2QzODIyLi5kZTI3 MWY4YWIzNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmgKKysrIGIvc3Jj L2luY2x1ZGUvc3RvcmFnZS9wcm9jLmgKQEAgLTU2LDEwICs1Niw2IEBAIHN0cnVjdCBYaWRDYWNo ZQogICovCiAjZGVmaW5lCQlQUk9DX0lTX0FVVE9WQUNVVU0JMHgwMQkvKiBpcyBpdCBhbiBhdXRv dmFjIHdvcmtlcj8gKi8KICNkZWZpbmUJCVBST0NfSU5fVkFDVVVNCQkweDAyCS8qIGN1cnJlbnRs eSBydW5uaW5nIGxhenkgdmFjdXVtICovCi0jZGVmaW5lCQlQUk9DX0lOX1NBRkVfSUMJCTB4MDQJ LyogY3VycmVudGx5IHJ1bm5pbmcgQ1JFQVRFIElOREVYCi0JCQkJCQkJCQkJICogQ09OQ1VSUkVO VExZIG9yIFJFSU5ERVgKLQkJCQkJCQkJCQkgKiBDT05DVVJSRU5UTFkgb24gbm9uLWV4cHJlc3Np b25hbCwKLQkJCQkJCQkJCQkgKiBub24tcGFydGlhbCBpbmRleCAqLwogI2RlZmluZQkJUFJPQ19W QUNVVU1fRk9SX1dSQVBBUk9VTkQJMHgwOAkvKiBzZXQgYnkgYXV0b3ZhYyBvbmx5ICovCiAjZGVm aW5lCQlQUk9DX0lOX0xPR0lDQUxfREVDT0RJTkcJMHgxMAkvKiBjdXJyZW50bHkgZG9pbmcgbG9n aWNhbAogCQkJCQkJCQkJCQkJICogZGVjb2Rpbmcgb3V0c2lkZSB4YWN0ICovCkBAIC02OSwxMyAr NjUsMTMgQEAgc3RydWN0IFhpZENhY2hlCiAKIC8qIGZsYWdzIHJlc2V0IGF0IEVPWGFjdCAqLwog I2RlZmluZQkJUFJPQ19WQUNVVU1fU1RBVEVfTUFTSyBcCi0JKFBST0NfSU5fVkFDVVVNIHwgUFJP Q19JTl9TQUZFX0lDIHwgUFJPQ19WQUNVVU1fRk9SX1dSQVBBUk9VTkQpCisJKFBST0NfSU5fVkFD VVVNIHwgUFJPQ19WQUNVVU1fRk9SX1dSQVBBUk9VTkQpCiAKIC8qCiAgKiBYbWluLXJlbGF0ZWQg ZmxhZ3MuIE1ha2Ugc3VyZSBhbnkgZmxhZ3MgdGhhdCBhZmZlY3QgaG93IHRoZSBwcm9jZXNzJyBY bWluCiAgKiB2YWx1ZSBpcyBpbnRlcnByZXRlZCBieSBWQUNVVU0gYXJlIGluY2x1ZGVkIGhlcmUu CiAgKi8KLSNkZWZpbmUJCVBST0NfWE1JTl9GTEFHUyAoUFJPQ19JTl9WQUNVVU0gfCBQUk9DX0lO X1NBRkVfSUMpCisjZGVmaW5lCQlQUk9DX1hNSU5fRkxBR1MgKFBST0NfSU5fVkFDVVVNKQogCiAv KgogICogV2UgYWxsb3cgYSBsaW1pdGVkIG51bWJlciBvZiAid2VhayIgcmVsYXRpb24gbG9ja3Mg KEFjY2Vzc1NoYXJlTG9jaywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9u X3BvaW50cy9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9NYWtl ZmlsZQppbmRleCAxOWQyNjQwOGMyYS4uODJhY2YzMDA2YmQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9NYWtlZmlsZQorKysgYi9zcmMvdGVzdC9tb2R1bGVz L2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUKQEAgLTExLDcgKzExLDcgQEAgRVhURU5TSU9OID0g aW5qZWN0aW9uX3BvaW50cwogREFUQSA9IGluamVjdGlvbl9wb2ludHMtLTEuMC5zcWwKIFBHRklM RURFU0MgPSAiaW5qZWN0aW9uX3BvaW50cyAtIGZhY2lsaXR5IGZvciBpbmplY3Rpb24gcG9pbnRz IgogCi1SRUdSRVNTID0gaW5qZWN0aW9uX3BvaW50cyBoYXNoYWdnIHJlaW5kZXhfY29uYyBjaWNf cmVzZXRfc25hcHNob3RzCitSRUdSRVNTID0gaW5qZWN0aW9uX3BvaW50cyBoYXNoYWdnIGNpY19y ZXNldF9zbmFwc2hvdHMKIFJFR1JFU1NfT1BUUyA9IC0tZGxwYXRoPSQodG9wX2J1aWxkZGlyKS9z cmMvdGVzdC9yZWdyZXNzCiAKIElTT0xBVElPTiA9IGJhc2ljIGlucGxhY2Ugc3lzY2FjaGUtdXBk YXRlLXBydW5lZApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRz L2V4cGVjdGVkL3JlaW5kZXhfY29uYy5vdXQgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9w b2ludHMvZXhwZWN0ZWQvcmVpbmRleF9jb25jLm91dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggZGI4ZGU0YmJlODUuLjAwMDAwMDAwMDAwCi0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5q ZWN0aW9uX3BvaW50cy9leHBlY3RlZC9yZWluZGV4X2NvbmMub3V0CisrKyAvZGV2L251bGwKQEAg LTEsNTEgKzAsMCBAQAotLS0gVGVzdHMgZm9yIFJFSU5ERVggQ09OQ1VSUkVOVExZCi1DUkVBVEUg RVhURU5TSU9OIGluamVjdGlvbl9wb2ludHM7Ci0tLSBDaGVjayBzYWZldHkgb2YgaW5kZXhlcyB3 aXRoIHByZWRpY2F0ZXMgYW5kIGV4cHJlc3Npb25zLgotU0VMRUNUIGluamVjdGlvbl9wb2ludHNf c2V0X2xvY2FsKCk7Ci0gaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwgCi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCi0gCi0oMSByb3cpCi0KLVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0 dGFjaCgncmVpbmRleC1jb25jLWluZGV4LXNhZmUnLCAnbm90aWNlJyk7Ci0gaW5qZWN0aW9uX3Bv aW50c19hdHRhY2ggCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gCi0oMSByb3cpCi0KLVNF TEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgncmVpbmRleC1jb25jLWluZGV4LW5vdC1zYWZl JywgJ25vdGljZScpOwotIGluamVjdGlvbl9wb2ludHNfYXR0YWNoIAotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQotIAotKDEgcm93KQotCi1DUkVBVEUgU0NIRU1BIHJlaW5kZXhfaW5qOwotQ1JF QVRFIFRBQkxFIHJlaW5kZXhfaW5qLnRibChpIGludCBwcmltYXJ5IGtleSwgdXBkYXRlZF9hdCB0 aW1lc3RhbXApOwotQ1JFQVRFIFVOSVFVRSBJTkRFWCBpbmRfc2ltcGxlIE9OIHJlaW5kZXhfaW5q LnRibChpKTsKLUNSRUFURSBVTklRVUUgSU5ERVggaW5kX2V4cHIgT04gcmVpbmRleF9pbmoudGJs KEFCUyhpKSk7Ci1DUkVBVEUgVU5JUVVFIElOREVYIGluZF9wcmVkIE9OIHJlaW5kZXhfaW5qLnRi bChpKSBXSEVSRSBtb2QoaSwgMikgPSAwOwotQ1JFQVRFIFVOSVFVRSBJTkRFWCBpbmRfZXhwcl9w cmVkIE9OIHJlaW5kZXhfaW5qLnRibChhYnMoaSkpIFdIRVJFIG1vZChpLCAyKSA9IDA7Ci1SRUlO REVYIElOREVYIENPTkNVUlJFTlRMWSByZWluZGV4X2luai5pbmRfc2ltcGxlOwotTk9USUNFOiAg bm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHJlaW5kZXgtY29uYy1pbmRleC1z YWZlCi1SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSByZWluZGV4X2luai5pbmRfZXhwcjsKLU5P VElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCByZWluZGV4LWNvbmMt aW5kZXgtbm90LXNhZmUKLVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIHJlaW5kZXhfaW5qLmlu ZF9wcmVkOwotTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHJl aW5kZXgtY29uYy1pbmRleC1ub3Qtc2FmZQotUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgcmVp bmRleF9pbmouaW5kX2V4cHJfcHJlZDsKLU5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGlu amVjdGlvbiBwb2ludCByZWluZGV4LWNvbmMtaW5kZXgtbm90LXNhZmUKLS0tIENsZWFudXAKLVNF TEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgncmVpbmRleC1jb25jLWluZGV4LXNhZmUnKTsK LSBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAK LSgxIHJvdykKLQotU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdyZWluZGV4LWNvbmMt aW5kZXgtbm90LXNhZmUnKTsKLSBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCAKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KLSAKLSgxIHJvdykKLQotRFJPUCBUQUJMRSByZWluZGV4X2luai50Ymw7 Ci1EUk9QIFNDSEVNQSByZWluZGV4X2luajsKLURST1AgRVhURU5TSU9OIGluamVjdGlvbl9wb2lu dHM7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVzb24u YnVpbGQgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVzb24uYnVpbGQKaW5k ZXggODQ3NmJmZTcyYTcuLmJkZGYyMmRmM2FjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVz L2luamVjdGlvbl9wb2ludHMvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmpl Y3Rpb25fcG9pbnRzL21lc29uLmJ1aWxkCkBAIC0zNiw3ICszNiw2IEBAIHRlc3RzICs9IHsKICAg ICAnc3FsJzogWwogICAgICAgJ2luamVjdGlvbl9wb2ludHMnLAogICAgICAgJ2hhc2hhZ2cnLAot ICAgICAgJ3JlaW5kZXhfY29uYycsCiAgICAgICAnY2ljX3Jlc2V0X3NuYXBzaG90cycsCiAgICAg XSwKICAgICAncmVncmVzc19hcmdzJzogWyctLWRscGF0aCcsIG1lc29uLmJ1aWxkX3Jvb3QoKSAv ICdzcmMvdGVzdC9yZWdyZXNzJ10sCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVj dGlvbl9wb2ludHMvc3FsL3JlaW5kZXhfY29uYy5zcWwgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVj dGlvbl9wb2ludHMvc3FsL3JlaW5kZXhfY29uYy5zcWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDZjZjIxMWU2ZDVkLi4wMDAwMDAwMDAwMAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2lu amVjdGlvbl9wb2ludHMvc3FsL3JlaW5kZXhfY29uYy5zcWwKKysrIC9kZXYvbnVsbApAQCAtMSwy OCArMCwwIEBACi0tLSBUZXN0cyBmb3IgUkVJTkRFWCBDT05DVVJSRU5UTFkKLUNSRUFURSBFWFRF TlNJT04gaW5qZWN0aW9uX3BvaW50czsKLQotLS0gQ2hlY2sgc2FmZXR5IG9mIGluZGV4ZXMgd2l0 aCBwcmVkaWNhdGVzIGFuZCBleHByZXNzaW9ucy4KLVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3Nl dF9sb2NhbCgpOwotU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdyZWluZGV4LWNvbmMt aW5kZXgtc2FmZScsICdub3RpY2UnKTsKLVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgn cmVpbmRleC1jb25jLWluZGV4LW5vdC1zYWZlJywgJ25vdGljZScpOwotCi1DUkVBVEUgU0NIRU1B IHJlaW5kZXhfaW5qOwotQ1JFQVRFIFRBQkxFIHJlaW5kZXhfaW5qLnRibChpIGludCBwcmltYXJ5 IGtleSwgdXBkYXRlZF9hdCB0aW1lc3RhbXApOwotCi1DUkVBVEUgVU5JUVVFIElOREVYIGluZF9z aW1wbGUgT04gcmVpbmRleF9pbmoudGJsKGkpOwotQ1JFQVRFIFVOSVFVRSBJTkRFWCBpbmRfZXhw ciBPTiByZWluZGV4X2luai50YmwoQUJTKGkpKTsKLUNSRUFURSBVTklRVUUgSU5ERVggaW5kX3By ZWQgT04gcmVpbmRleF9pbmoudGJsKGkpIFdIRVJFIG1vZChpLCAyKSA9IDA7Ci1DUkVBVEUgVU5J UVVFIElOREVYIGluZF9leHByX3ByZWQgT04gcmVpbmRleF9pbmoudGJsKGFicyhpKSkgV0hFUkUg bW9kKGksIDIpID0gMDsKLQotUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgcmVpbmRleF9pbmou aW5kX3NpbXBsZTsKLVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIHJlaW5kZXhfaW5qLmluZF9l eHByOwotUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgcmVpbmRleF9pbmouaW5kX3ByZWQ7Ci1S RUlOREVYIElOREVYIENPTkNVUlJFTlRMWSByZWluZGV4X2luai5pbmRfZXhwcl9wcmVkOwotCi0t LSBDbGVhbnVwCi1TRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ3JlaW5kZXgtY29uYy1p bmRleC1zYWZlJyk7Ci1TRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ3JlaW5kZXgtY29u Yy1pbmRleC1ub3Qtc2FmZScpOwotRFJPUCBUQUJMRSByZWluZGV4X2luai50Ymw7Ci1EUk9QIFND SEVNQSByZWluZGV4X2luajsKLQotRFJPUCBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKLS0g CjIuNDMuMAoK --000000000000176c55063224bb18 Content-Type: application/octet-stream; name="v17-0011-Add-proper-handling-of-auxiliary-indexes-during-.patch" Content-Disposition: attachment; filename="v17-0011-Add-proper-handling-of-auxiliary-indexes-during-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m967p89f10 RnJvbSBkNjZmOTZmNmM4YzkzZjI3YzJmNDIxNTkzODhiMDNiZGZmYTU2ZTBmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAzMSBEZWMgMjAyNCAxNDozNjozMSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjE3IDEx LzEyXSBBZGQgcHJvcGVyIGhhbmRsaW5nIG9mIGF1eGlsaWFyeSBpbmRleGVzIGR1cmluZwogRFJP UC9SRUlOREVYIG9wZXJhdGlvbnMKCkR1cmluZyBjb25jdXJyZW50IGluZGV4IG9wZXJhdGlvbnMs IGFuIGF1eGlsaWFyeSBpbmRleCBtYXkgYmUgY3JlYXRlZCB0byBoZWxwCndpdGggdGhlIHByb2Nl c3MuIEluIGNhc2Ugb2YgZXJyb3IgZHVyaW5nIHRoZSBidWlsZGluZyBwcm9jZXNzIChmb3IgZXhh bXBsZSBpbiBjYXNlIG9mIGluZGV4IGNvbnN0cmFpbnQgdmlvbGF0aW9uKSBzdWNoIGluZGV4ZXMg YmVjYW1lIGp1bmstaW5kZXhlcyB3aXRob3V0IGFueSBmdW5jdGlvbi4gVGhpcyBwYXRjaCBpbXBy b3ZlcyB0aGUgaGFuZGxpbmcgb2Ygc3VjaCBhdXhpbGlhcnkgaW5kZXhlczoKCiogQWRkIGF1eGls aWFyeUZvckluZGV4SWQgcGFyYW1ldGVyIHRvIGluZGV4X2NyZWF0ZSgpIHRvIHRyYWNrIGRlcGVu ZGVuY2llcwoqIEF1dG9tYXRpY2FsbHkgZHJvcCBhdXhpbGlhcnkgaW5kZXhlcyB3aGVuIHRoZSBt YWluIGluZGV4IGlzIGRyb3BwZWQKKiBEZWxldGUganVuayBhdXhpbGlhcnkgaW5kZXhlcyBwcm9w ZXJseSBkdXJpbmcgUkVJTkRFWCBvcGVyYXRpb25zCiogQWRkIHJlZ3Jlc3Npb24gdGVzdHMgdG8g dmVyaWZ5IG5ldyBiZWhhdmlvdXIKLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9pbmRleC5z Z21sICAgICAgICAgfCAgMTQgKystCiBkb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbCAgICAg ICAgICAgICAgfCAgMTkgKystLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMgICAg ICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICAgICAgICAg ICAgfCAgNjQgKysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19kZXBlbmQuYyAg ICAgICAgICAgIHwgIDU3ICsrKysrKysrKysrCiBzcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5n LmMgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5j ICAgICAgICAgICB8ICAzNSArKysrKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YyAgICAgICAgICAgfCAgNDggKysrKysrKysrLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRl bmN5LmggICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCAgICAg ICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRl eC5vdXQgfCAxMDUgKysrKysrKysrKysrKysrKysrKy0tCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9j cmVhdGVfaW5kZXguc3FsICAgICAgfCAgNTcgKysrKysrKysrKy0KIDEyIGZpbGVzIGNoYW5nZWQs IDM2MyBpbnNlcnRpb25zKCspLCA0MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvcmVmL2NyZWF0ZV9pbmRleC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfaW5k ZXguc2dtbAppbmRleCA1NDU2NjIyM2NiMC4uZmI3Y2QxNWY1ZmUgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfaW5kZXguc2dtbApAQCAtNjYxLDEwICs2NjEsMTYgQEAgSW5kZXhlczoKICAgICAiaWR4X2Nj YXV4IiBzdGlyIChjb2wpIElOVkFMSUQKIDwvcHJvZ3JhbWxpc3Rpbmc+CiAKLSAgICBUaGUgcmVj b21tZW5kZWQgcmVjb3ZlcnkKLSAgICBtZXRob2QgaW4gc3VjaCBjYXNlcyBpcyB0byBkcm9wIHRo ZXNlIGluZGV4ZXMgYW5kIHRyeSBhZ2FpbiB0byBwZXJmb3JtCi0gICAgPGNvbW1hbmQ+Q1JFQVRF IElOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4uIChBbm90aGVyIHBvc3NpYmlsaXR5IGlzCi0g ICAgdG8gcmVidWlsZCB0aGUgaW5kZXggd2l0aCA8Y29tbWFuZD5SRUlOREVYIElOREVYIENPTkNV UlJFTlRMWTwvY29tbWFuZD4pLgorICAgIFRoZSByZWNvbW1lbmRlZCByZWNvdmVyeSBtZXRob2Qg aW4gc3VjaCBjYXNlcyBpcyB0byBkcm9wIHRoZSBpbmRleCB3aXRoCisgICAgPGNvbW1hbmQ+RFJP UCBJTkRFWDwvY29tbWFuZD4uIFRoZSBhdXhpbGlhcnkgaW5kZXggKHN1ZmZpeGVkIHdpdGgKKyAg ICA8bGl0ZXJhbD5jY2F1eDwvbGl0ZXJhbD4pIHdpbGwgYmUgYXV0b21hdGljYWxseSBkcm9wcGVk IHdoZW4gdGhlIG1haW4KKyAgICBpbmRleCBpcyBkcm9wcGVkLiBBZnRlciBkcm9wcGluZyB0aGUg aW5kZXhlcywgeW91IGNhbiB0cnkgYWdhaW4gdG8gcGVyZm9ybQorICAgIDxjb21tYW5kPkNSRUFU RSBJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+LiAoQW5vdGhlciBwb3NzaWJpbGl0eSBpcyB0 bworICAgIHJlYnVpbGQgdGhlIGluZGV4IHdpdGggPGNvbW1hbmQ+UkVJTkRFWCBJTkRFWCBDT05D VVJSRU5UTFk8L2NvbW1hbmQ+LAorICAgIHdoaWNoIHdpbGwgYWxzbyBoYW5kbGUgY2xlYW51cCBv ZiBhbnkgaW52YWxpZCBhdXhpbGlhcnkgaW5kZXhlcy4pCisgICAgSWYgdGhlIG9ubHkgaW52YWxp ZCBpbmRleCBpcyBvbmUgc3VmZml4ZWQgPGxpdGVyYWw+Y2NhdXg8L2xpdGVyYWw+CisgICAgcmVj b21tZW5kZWQgcmVjb3ZlcnkgbWV0aG9kIGlzIGp1c3QgPGxpdGVyYWw+RFJPUCBJTkRFWDwvbGl0 ZXJhbD4KKyAgICBmb3IgdGhhdCBpbmRleC4KICAgIDwvcGFyYT4KIAogICAgPHBhcmE+CmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYv cmVpbmRleC5zZ21sCmluZGV4IDY0YzYzM2UwMzk4Li5jNmRiNWQ1NzE2NyAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9yZWlu ZGV4LnNnbWwKQEAgLTQ3NCwxNCArNDc0LDE3IEBAIEluZGV4ZXM6CiA8L3Byb2dyYW1saXN0aW5n PgogCiAgICAgSWYgdGhlIGluZGV4IG1hcmtlZCA8bGl0ZXJhbD5JTlZBTElEPC9saXRlcmFsPiBp cyBzdWZmaXhlZAotICAgIDxsaXRlcmFsPmNjbmV3PC9saXRlcmFsIG9yIDxsaXRlcmFsPmNjYXV4 PC9saXRlcmFsPiwgdGhlbiBpdCBjb3JyZXNwb25kcyB0byB0aGUgdHJhbnNpZW50IG9yIGF1eGls aWFyeQotICAgIGluZGV4IGNyZWF0ZWQgZHVyaW5nIHRoZSBjb25jdXJyZW50IG9wZXJhdGlvbiwg YW5kIHRoZSByZWNvbW1lbmRlZAotICAgIHJlY292ZXJ5IG1ldGhvZCBpcyB0byBkcm9wIHRoZXNl IGluZGV4ZXMgdXNpbmcgPGxpdGVyYWw+RFJPUCBJTkRFWDwvbGl0ZXJhbD4sCi0gICAgdGhlbiBh dHRlbXB0IDxjb21tYW5kPlJFSU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPiBhZ2Fpbi4KLSAg ICBJZiB0aGUgaW52YWxpZCBpbmRleCBpcyBpbnN0ZWFkIHN1ZmZpeGVkIDxsaXRlcmFsPmNjb2xk PC9saXRlcmFsPiwKLSAgICBpdCBjb3JyZXNwb25kcyB0byB0aGUgb3JpZ2luYWwgaW5kZXggd2hp Y2ggY291bGQgbm90IGJlIGRyb3BwZWQ7Ci0gICAgdGhlIHJlY29tbWVuZGVkIHJlY292ZXJ5IG1l dGhvZCBpcyB0byBqdXN0IGRyb3Agc2FpZCBpbmRleCwgc2luY2UgdGhlCi0gICAgcmVidWlsZCBw cm9wZXIgaGFzIGJlZW4gc3VjY2Vzc2Z1bC4KKyAgICA8bGl0ZXJhbD5jY25ldzwvbGl0ZXJhbD4s IHRoZW4gaXQgY29ycmVzcG9uZHMgdG8gdGhlIHRyYW5zaWVudCBpbmRleAorICAgIGNyZWF0ZWQg ZHVyaW5nIHRoZSBjb25jdXJyZW50IG9wZXJhdGlvbi4gVGhlIHJlY29tbWVuZGVkIHJlY292ZXJ5 CisgICAgbWV0aG9kIGlzIHRvIGRyb3AgaXQgdXNpbmcgPGxpdGVyYWw+RFJPUCBJTkRFWDwvbGl0 ZXJhbD4sIHRoZW4gYXR0ZW1wdAorICAgIDxjb21tYW5kPlJFSU5ERVggQ09OQ1VSUkVOVExZPC9j b21tYW5kPiBhZ2Fpbi4gVGhlIGF1eGlsaWFyeSBpbmRleAorICAgIChzdWZmaXhlZCB3aXRoIDxs aXRlcmFsPmNjYXV4PC9saXRlcmFsPikgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGRyb3BwZWQKKyAg ICBhbG9uZyB3aXRoIGl0cyBtYWluIGluZGV4LiBJZiB0aGUgaW52YWxpZCBpbmRleCBpcyBpbnN0 ZWFkIHN1ZmZpeGVkCisgICAgPGxpdGVyYWw+Y2NvbGQ8L2xpdGVyYWw+LCBpdCBjb3JyZXNwb25k cyB0byB0aGUgb3JpZ2luYWwgaW5kZXggd2hpY2gKKyAgICBjb3VsZCBub3QgYmUgZHJvcHBlZDsg dGhlIHJlY29tbWVuZGVkIHJlY292ZXJ5IG1ldGhvZCBpcyB0byBqdXN0IGRyb3AKKyAgICBzYWlk IGluZGV4LCBzaW5jZSB0aGUgcmVidWlsZCBwcm9wZXIgaGFzIGJlZW4gc3VjY2Vzc2Z1bC4gSWYg dGhlIG9ubHkKKyAgICBpbnZhbGlkIGluZGV4IGlzIG9uZSBzdWZmaXhlZCA8bGl0ZXJhbD5jY2F1 eDwvbGl0ZXJhbD4gcmVjb21tZW5kZWQKKyAgICByZWNvdmVyeSBtZXRob2QgaXMganVzdCA8bGl0 ZXJhbD5EUk9QIElOREVYPC9saXRlcmFsPiBmb3IgdGhhdCBpbmRleC4KICAgIDwvcGFyYT4KIAog ICAgPHBhcmE+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jCmluZGV4IDE4MzE2YTM5NjhiLi5hYjRj M2UyZmI0YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMKKysr IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMKQEAgLTI4Niw3ICsyODYsNyBAQCBw ZXJmb3JtRGVsZXRpb24oY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LAogCSAqIEFjcXVpcmUg ZGVsZXRpb24gbG9jayBvbiB0aGUgdGFyZ2V0IG9iamVjdC4gIChJZGVhbGx5IHRoZSBjYWxsZXIg aGFzCiAJICogZG9uZSB0aGlzIGFscmVhZHksIGJ1dCBtYW55IHBsYWNlcyBhcmUgc2xvcHB5IGFi b3V0IGl0LikKIAkgKi8KLQlBY3F1aXJlRGVsZXRpb25Mb2NrKG9iamVjdCwgMCk7CisJQWNxdWly ZURlbGV0aW9uTG9jayhvYmplY3QsIGZsYWdzKTsKIAogCS8qCiAJICogQ29uc3RydWN0IGEgbGlz dCBvZiBvYmplY3RzIHRvIGRlbGV0ZSAoaWUsIHRoZSBnaXZlbiBvYmplY3QgcGx1cwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9p bmRleC5jCmluZGV4IGJmZDZhMGEzN2YwLi44MmYwMmRmNzQzMCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpA QCAtNjg4LDYgKzY4OCw4IEBAIFVwZGF0ZUluZGV4UmVsYXRpb24oT2lkIGluZGV4b2lkLAogICoJ CXBhcmVudCBpbmRleDsgb3RoZXJ3aXNlIEludmFsaWRPaWQuCiAgKiBwYXJlbnRDb25zdHJhaW50 SWQ6IGlmIGNyZWF0aW5nIGEgY29uc3RyYWludCBvbiBhIHBhcnRpdGlvbiwgdGhlIE9JRAogICoJ CW9mIHRoZSBjb25zdHJhaW50IGluIHRoZSBwYXJlbnQ7IG90aGVyd2lzZSBJbnZhbGlkT2lkLgor ICogYXV4aWxpYXJ5Rm9ySW5kZXhJZDogaWYgY3JlYXRpbmcgYXV4aWxpYXJ5IGluZGV4LCB0aGUg T0lEIG9mIHRoZSBtYWluCisgKgkJaW5kZXg7IG90aGVyd2lzZSBJbnZhbGlkT2lkLgogICogcmVs RmlsZU51bWJlcjogbm9ybWFsbHksIHBhc3MgSW52YWxpZFJlbEZpbGVOdW1iZXIgdG8gZ2V0IG5l dyBzdG9yYWdlLgogICoJCU1heSBiZSBub256ZXJvIHRvIGF0dGFjaCBhbiBleGlzdGluZyB2YWxp ZCBidWlsZC4KICAqIGluZGV4SW5mbzogc2FtZSBpbmZvIGV4ZWN1dG9yIHVzZXMgdG8gaW5zZXJ0 IGludG8gdGhlIGluZGV4CkBAIC03MzQsNiArNzM2LDcgQEAgaW5kZXhfY3JlYXRlKFJlbGF0aW9u IGhlYXBSZWxhdGlvbiwKIAkJCSBPaWQgaW5kZXhSZWxhdGlvbklkLAogCQkJIE9pZCBwYXJlbnRJ bmRleFJlbGlkLAogCQkJIE9pZCBwYXJlbnRDb25zdHJhaW50SWQsCisJCQkgT2lkIGF1eGlsaWFy eUZvckluZGV4SWQsCiAJCQkgUmVsRmlsZU51bWJlciByZWxGaWxlTnVtYmVyLAogCQkJIEluZGV4 SW5mbyAqaW5kZXhJbmZvLAogCQkJIGNvbnN0IExpc3QgKmluZGV4Q29sTmFtZXMsCkBAIC03NzYs NiArNzc5LDggQEAgaW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJICAgKChm bGFncyAmIElOREVYX0NSRUFURV9BRERfQ09OU1RSQUlOVCkgIT0gMCkpOwogCS8qIHBhcnRpdGlv bmVkIGluZGV4ZXMgbXVzdCBuZXZlciBiZSAiYnVpbHQiIGJ5IHRoZW1zZWx2ZXMgKi8KIAlBc3Nl cnQoIXBhcnRpdGlvbmVkIHx8IChmbGFncyAmIElOREVYX0NSRUFURV9TS0lQX0JVSUxEKSk7CisJ LyogYXV4aWxpYXJ5Rm9ySW5kZXhJZCBhbmQgSU5ERVhfQ1JFQVRFX0FVWElMSUFSWSBhcmUgcmVx dWlyZWQgYm90aCBvciBuZWl0aGVyICovCisJQXNzZXJ0KE9pZElzVmFsaWQoYXV4aWxpYXJ5Rm9y SW5kZXhJZCkgPT0gYXV4aWxpYXJ5KTsKIAogCXJlbGtpbmQgPSBwYXJ0aXRpb25lZCA/IFJFTEtJ TkRfUEFSVElUSU9ORURfSU5ERVggOiBSRUxLSU5EX0lOREVYOwogCWlzX2V4Y2x1c2lvbiA9IChp bmRleEluZm8tPmlpX0V4Y2x1c2lvbk9wcyAhPSBOVUxMKTsKQEAgLTExNzcsNiArMTE4MiwxNSBA QCBpbmRleF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJcmVjb3JkRGVwZW5kZW5j eU9uKCZteXNlbGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX1BBUlRJVElPTl9TRUMpOwogCQl9 CiAKKwkJLyoKKwkJICogUmVjb3JkIGRlcGVuZGVuY3kgb24gdGhlIG1haW4gaW5kZXggaW4gY2Fz ZSBvZiBhdXhpbGlhcnkgaW5kZXguCisJCSAqLworCQlpZiAoT2lkSXNWYWxpZChhdXhpbGlhcnlG b3JJbmRleElkKSkKKwkJeworCQkJT2JqZWN0QWRkcmVzc1NldChyZWZlcmVuY2VkLCBSZWxhdGlv blJlbGF0aW9uSWQsIGF1eGlsaWFyeUZvckluZGV4SWQpOworCQkJcmVjb3JkRGVwZW5kZW5jeU9u KCZteXNlbGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX0FVVE8pOworCQl9CisKIAkJLyogcGxh Y2Vob2xkZXIgZm9yIG5vcm1hbCBkZXBlbmRlbmNpZXMgKi8KIAkJYWRkcnMgPSBuZXdfb2JqZWN0 X2FkZHJlc3NlcygpOwogCkBAIC0xNDU5LDYgKzE0NzMsNyBAQCBpbmRleF9jb25jdXJyZW50bHlf Y3JlYXRlX2NvcHkoUmVsYXRpb24gaGVhcFJlbGF0aW9uLCBPaWQgb2xkSW5kZXhJZCwKIAkJCQkJ CQkgIEludmFsaWRPaWQsCS8qIGluZGV4UmVsYXRpb25JZCAqLwogCQkJCQkJCSAgSW52YWxpZE9p ZCwJLyogcGFyZW50SW5kZXhSZWxpZCAqLwogCQkJCQkJCSAgSW52YWxpZE9pZCwJLyogcGFyZW50 Q29uc3RyYWludElkICovCisJCQkJCQkJICBJbnZhbGlkT2lkLAkvKiBhdXhpbGlhcnlGb3JJbmRl eElkICovCiAJCQkJCQkJICBJbnZhbGlkUmVsRmlsZU51bWJlciwgLyogcmVsRmlsZU51bWJlciAq LwogCQkJCQkJCSAgbmV3SW5mbywKIAkJCQkJCQkgIGluZGV4Q29sTmFtZXMsCkBAIC0xNjA5LDYg KzE2MjQsNyBAQCBpbmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2F1eChSZWxhdGlvbiBoZWFwUmVs YXRpb24sIE9pZCBtYWluSW5kZXhJZCwKIAkJCQkJCQkgIEludmFsaWRPaWQsICAgIC8qIGluZGV4 UmVsYXRpb25JZCAqLwogCQkJCQkJCSAgSW52YWxpZE9pZCwgICAgLyogcGFyZW50SW5kZXhSZWxp ZCAqLwogCQkJCQkJCSAgSW52YWxpZE9pZCwgICAgLyogcGFyZW50Q29uc3RyYWludElkICovCisJ CQkJCQkJICBtYWluSW5kZXhJZCwgICAvKiBhdXhpbGlhcnlGb3JJbmRleElkICovCiAJCQkJCQkJ ICBJbnZhbGlkUmVsRmlsZU51bWJlciwgLyogcmVsRmlsZU51bWJlciAqLwogCQkJCQkJCSAgbmV3 SW5mbywKIAkJCQkJCQkgIGluZGV4Q29sTmFtZXMsCkBAIC0zODYyLDYgKzM4NzgsNyBAQCByZWlu ZGV4X2luZGV4KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgaW5kZXhJZCwKIAkJCQloZWFw UmVsYXRpb247CiAJT2lkCQkJaGVhcElkOwogCU9pZAkJCXNhdmVfdXNlcmlkOworCU9pZAkJCWp1 bmtBdXhJbmRleElkOwogCWludAkJCXNhdmVfc2VjX2NvbnRleHQ7CiAJaW50CQkJc2F2ZV9uZXN0 bGV2ZWw7CiAJSW5kZXhJbmZvICAqaW5kZXhJbmZvOwpAQCAtMzkxOCw2ICszOTM1LDE5IEBAIHJl aW5kZXhfaW5kZXgoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCBpbmRleElkLAogCQlwZ3N0 YXRfcHJvZ3Jlc3NfdXBkYXRlX211bHRpX3BhcmFtKDIsIHByb2dyZXNzX2NvbHMsIHByb2dyZXNz X3ZhbHMpOwogCX0KIAorCS8qIENoZWNrIGZvciB0aGUgYXV4aWxpYXJ5IGluZGV4IGZvciB0aGF0 IGluZGV4LCBpdCBuZWVkcyB0byBkcm9wcGVkICovCisJanVua0F1eEluZGV4SWQgPSBnZXRfYXV4 aWxpYXJ5X2luZGV4KGluZGV4SWQpOworCWlmIChPaWRJc1ZhbGlkKGp1bmtBdXhJbmRleElkKSkK Kwl7CisJCU9iamVjdEFkZHJlc3Mgb2JqZWN0OworCQlvYmplY3QuY2xhc3NJZCA9IFJlbGF0aW9u UmVsYXRpb25JZDsKKwkJb2JqZWN0Lm9iamVjdElkID0ganVua0F1eEluZGV4SWQ7CisJCW9iamVj dC5vYmplY3RTdWJJZCA9IDA7CisJCXBlcmZvcm1EZWxldGlvbigmb2JqZWN0LCBEUk9QX1JFU1RS SUNULAorCQkJCQkJCQkgUEVSRk9STV9ERUxFVElPTl9JTlRFUk5BTCB8CisJCQkJCQkJCSBQRVJG T1JNX0RFTEVUSU9OX1FVSUVUTFkpOworCX0KKwogCS8qCiAJICogT3BlbiB0aGUgdGFyZ2V0IGlu ZGV4IHJlbGF0aW9uIGFuZCBnZXQgYW4gZXhjbHVzaXZlIGxvY2sgb24gaXQsIHRvCiAJICogZW5z dXJlIHRoYXQgbm8gb25lIGVsc2UgaXMgdG91Y2hpbmcgdGhpcyBwYXJ0aWN1bGFyIGluZGV4LgpA QCAtNDIwNiw3ICs0MjM2LDggQEAgcmVpbmRleF9yZWxhdGlvbihjb25zdCBSZWluZGV4U3RtdCAq c3RtdCwgT2lkIHJlbGlkLCBpbnQgZmxhZ3MsCiB7CiAJUmVsYXRpb24JcmVsOwogCU9pZAkJCXRv YXN0X3JlbGlkOwotCUxpc3QJICAgKmluZGV4SWRzOworCUxpc3QJICAgKmluZGV4SWRzLAorCQkJ ICAgKmF1eEluZGV4SWRzID0gTklMOwogCWNoYXIJCXBlcnNpc3RlbmNlOwogCWJvb2wJCXJlc3Vs dCA9IGZhbHNlOwogCUxpc3RDZWxsICAgKmluZGV4SWQ7CkBAIC00Mjk1LDEzICs0MzI2LDMwIEBA IHJlaW5kZXhfcmVsYXRpb24oY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxpZCwgaW50 IGZsYWdzLAogCWVsc2UKIAkJcGVyc2lzdGVuY2UgPSByZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVu Y2U7CiAKKwlmb3JlYWNoKGluZGV4SWQsIGluZGV4SWRzKQorCXsKKwkJT2lkCQkJaW5kZXhPaWQg PSBsZmlyc3Rfb2lkKGluZGV4SWQpOworCQlPaWQJCQlpbmRleEFtID0gZ2V0X3JlbF9yZWxhbShp bmRleE9pZCk7CisKKwkJLyogQWxsIFNUSVIgaW5kZXhlcyBhcmUgYXV4aWxpYXJ5IGluZGV4ZXMg Ki8KKwkJaWYgKGluZGV4QW0gPT0gU1RJUl9BTV9PSUQpCisJCXsKKwkJCWlmIChmbGFncyAmIFJF SU5ERVhfUkVMX1NVUFBSRVNTX0lOREVYX1VTRSkKKwkJCQlSZW1vdmVSZWluZGV4UGVuZGluZyhp bmRleE9pZCk7CisJCQlhdXhJbmRleElkcyA9IGxhcHBlbmRfb2lkKGF1eEluZGV4SWRzLCBpbmRl eE9pZCk7CisJCX0KKwl9CisKIAkvKiBSZWluZGV4IGFsbCB0aGUgaW5kZXhlcy4gKi8KIAlpID0g MTsKIAlmb3JlYWNoKGluZGV4SWQsIGluZGV4SWRzKQogCXsKIAkJT2lkCQkJaW5kZXhPaWQgPSBs Zmlyc3Rfb2lkKGluZGV4SWQpOwogCQlPaWQJCQlpbmRleE5hbWVzcGFjZUlkID0gZ2V0X3JlbF9u YW1lc3BhY2UoaW5kZXhPaWQpOwotCQlPaWQJCQlpbmRleEFtID0gZ2V0X3JlbF9yZWxhbShpbmRl eE9pZCk7CisKKwkJLyogQXV4aWxpYXJ5IGluZGV4ZXMgYXJlIGdvaW5nIHRvIGJlIGRyb3BwZWQg ZHVyaW5nIG1haW4gaW5kZXggcmVidWlsZCAqLworCQlpZiAobGlzdF9tZW1iZXJfb2lkKGF1eElu ZGV4SWRzLCBpbmRleE9pZCkpCisJCQljb250aW51ZTsKIAogCQkvKgogCQkgKiBTa2lwIGFueSBp bnZhbGlkIGluZGV4ZXMgb24gYSBUT0FTVCB0YWJsZS4gIFRoZXNlIGNhbiBvbmx5IGJlCkBAIC00 MzI3LDE4ICs0Mzc1LDYgQEAgcmVpbmRleF9yZWxhdGlvbihjb25zdCBSZWluZGV4U3RtdCAqc3Rt dCwgT2lkIHJlbGlkLCBpbnQgZmxhZ3MsCiAJCQljb250aW51ZTsKIAkJfQogCi0JCWlmIChpbmRl eEFtID09IFNUSVJfQU1fT0lEKQotCQl7Ci0JCQllcmVwb3J0KFdBUk5JTkcsCi0JCQkJCShlcnJj b2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKLQkJCQkJIGVycm1zZygic2tpcHBp bmcgcmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXggXCIlcy4lc1wiIiwKLQkJCQkJCQlnZXRfbmFt ZXNwYWNlX25hbWUoaW5kZXhOYW1lc3BhY2VJZCksCi0JCQkJCQkJZ2V0X3JlbF9uYW1lKGluZGV4 T2lkKSkpKTsKLQkJCWlmIChmbGFncyAmIFJFSU5ERVhfUkVMX1NVUFBSRVNTX0lOREVYX1VTRSkK LQkJCQlSZW1vdmVSZWluZGV4UGVuZGluZyhpbmRleE9pZCk7Ci0JCQljb250aW51ZTsKLQkJfQot CiAJCXJlaW5kZXhfaW5kZXgoc3RtdCwgaW5kZXhPaWQsICEoZmxhZ3MgJiBSRUlOREVYX1JFTF9D SEVDS19DT05TVFJBSU5UUyksCiAJCQkJCSAgcGVyc2lzdGVuY2UsIHBhcmFtcyk7CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfZGVwZW5kLmMgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX2RlcGVuZC5jCmluZGV4IGM4YjExZjg4N2UyLi4xYzI3NWVmMzczZiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19kZXBlbmQuYworKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX2RlcGVuZC5jCkBAIC0xMDM1LDYgKzEwMzUsNjMgQEAgZ2V0X2luZGV4X2NvbnN0cmFp bnQoT2lkIGluZGV4SWQpCiAJcmV0dXJuIGNvbnN0cmFpbnRJZDsKIH0KIAorLyoKKyAqIGdldF9h dXhpbGlhcnlfaW5kZXgKKyAqCQlHaXZlbiB0aGUgT0lEIG9mIGFuIGluZGV4LCByZXR1cm4gdGhl IE9JRCBvZiBpdHMgYXV4aWxpYXJ5CisgKgkJaW5kZXgsIG9yIEludmFsaWRPaWQgaWYgdGhlcmUg aXMgbm8gYXV4aWxpYXJ5IGluZGV4LgorICovCitPaWQKK2dldF9hdXhpbGlhcnlfaW5kZXgoT2lk IGluZGV4SWQpCit7CisJT2lkCQkJYXV4aWxpYXJ5SW5kZXhPaWQgPSBJbnZhbGlkT2lkOworCVJl bGF0aW9uCWRlcFJlbDsKKwlTY2FuS2V5RGF0YSBrZXlbM107CisJU3lzU2NhbkRlc2Mgc2NhbjsK KwlIZWFwVHVwbGUJdHVwOworCisJLyogU2VhcmNoIHRoZSBkZXBlbmRlbmN5IHRhYmxlIGZvciB0 aGUgaW5kZXggKi8KKwlkZXBSZWwgPSB0YWJsZV9vcGVuKERlcGVuZFJlbGF0aW9uSWQsIEFjY2Vz c1NoYXJlTG9jayk7CisKKwlTY2FuS2V5SW5pdCgma2V5WzBdLAorCQkJCUFudW1fcGdfZGVwZW5k X3JlZmNsYXNzaWQsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJCU9i amVjdElkR2V0RGF0dW0oUmVsYXRpb25SZWxhdGlvbklkKSk7CisJU2NhbktleUluaXQoJmtleVsx XSwKKwkJCQlBbnVtX3BnX2RlcGVuZF9yZWZvYmppZCwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1i ZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0SWRHZXREYXR1bShpbmRleElkKSk7CisJU2NhbktleUlu aXQoJmtleVsyXSwKKwkJCQlBbnVtX3BnX2RlcGVuZF9yZWZvYmpzdWJpZCwKKwkJCQlCVEVxdWFs U3RyYXRlZ3lOdW1iZXIsIEZfSU5UNEVRLAorCQkJCUludDMyR2V0RGF0dW0oMCkpOworCisJc2Nh biA9IHN5c3RhYmxlX2JlZ2luc2NhbihkZXBSZWwsIERlcGVuZFJlZmVyZW5jZUluZGV4SWQsIHRy dWUsCisJCQkJCQkJICBOVUxMLCAzLCBrZXkpOworCisKKwl3aGlsZSAoSGVhcFR1cGxlSXNWYWxp ZCh0dXAgPSBzeXN0YWJsZV9nZXRuZXh0KHNjYW4pKSkKKwl7CisJCUZvcm1fcGdfZGVwZW5kIGRl cHJlYyA9IChGb3JtX3BnX2RlcGVuZCkgR0VUU1RSVUNUKHR1cCk7CisKKwkJLyoKKwkJICogV2Ug YXNzdW1lIGFueSBBVVRPIGRlcGVuZGVuY3kgb24gaW5kZXggd2l0aCByZWxfa2luZAorCQkgKiBv ZiBSRUxLSU5EX0lOREVYIGlzIHRoYXQgd2UgYXJlIGxvb2tpbmcgZm9yLgorCQkgKi8KKwkJaWYg KGRlcHJlYy0+Y2xhc3NpZCA9PSBSZWxhdGlvblJlbGF0aW9uSWQgJiYKKwkJCShkZXByZWMtPmRl cHR5cGUgPT0gREVQRU5ERU5DWV9BVVRPKSAmJgorCQkJZ2V0X3JlbF9yZWxraW5kKGRlcHJlYy0+ b2JqaWQpID09IFJFTEtJTkRfSU5ERVgpCisJCXsKKwkJCWF1eGlsaWFyeUluZGV4T2lkID0gZGVw cmVjLT5vYmppZDsKKwkJCWJyZWFrOworCQl9CisJfQorCisJc3lzdGFibGVfZW5kc2NhbihzY2Fu KTsKKwl0YWJsZV9jbG9zZShkZXBSZWwsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlyZXR1cm4gYXV4 aWxpYXJ5SW5kZXhPaWQ7Cit9CisKIC8qCiAgKiBnZXRfaW5kZXhfcmVmX2NvbnN0cmFpbnRzCiAg KgkJR2l2ZW4gdGhlIE9JRCBvZiBhbiBpbmRleCwgcmV0dXJuIHRoZSBPSUQgb2YgYWxsIGZvcmVp Z24ga2V5CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMgYi9zcmMv YmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMKaW5kZXggMGVlMmZkNWU3ZGUuLjBlZThjYmY0Y2E2 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY2F0YWxvZy90b2FzdGluZy5jCkBAIC0zMTksNyArMzE5LDcgQEAgY3JlYXRlX3RvYXN0 X3RhYmxlKFJlbGF0aW9uIHJlbCwgT2lkIHRvYXN0T2lkLCBPaWQgdG9hc3RJbmRleE9pZCwKIAlj b2xvcHRpb25zWzFdID0gMDsKIAogCWluZGV4X2NyZWF0ZSh0b2FzdF9yZWwsIHRvYXN0X2lkeG5h bWUsIHRvYXN0SW5kZXhPaWQsIEludmFsaWRPaWQsCi0JCQkJIEludmFsaWRPaWQsIEludmFsaWRP aWQsCisJCQkJIEludmFsaWRPaWQsIEludmFsaWRPaWQsIEludmFsaWRPaWQsCiAJCQkJIGluZGV4 SW5mbywKIAkJCQkgbGlzdF9tYWtlMigiY2h1bmtfaWQiLCAiY2h1bmtfc2VxIiksCiAJCQkJIEJU UkVFX0FNX09JRCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKaW5kZXggYmUzOTYzNjhhMDkuLmE2 NzQ0NWRkNmEyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwpAQCAtMTI0OCw3ICsxMjQ4LDcg QEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAKIAlpbmRleFJlbGF0aW9uSWQgPQogCQlpbmRl eF9jcmVhdGUocmVsLCBpbmRleFJlbGF0aW9uTmFtZSwgaW5kZXhSZWxhdGlvbklkLCBwYXJlbnRJ bmRleElkLAotCQkJCQkgcGFyZW50Q29uc3RyYWludElkLAorCQkJCQkgcGFyZW50Q29uc3RyYWlu dElkLCBJbnZhbGlkT2lkLAogCQkJCQkgc3RtdC0+b2xkTnVtYmVyLCBpbmRleEluZm8sIGluZGV4 Q29sTmFtZXMsCiAJCQkJCSBhY2Nlc3NNZXRob2RJZCwgdGFibGVzcGFjZUlkLAogCQkJCQkgY29s bGF0aW9uSWRzLCBvcGNsYXNzSWRzLCBvcGNsYXNzT3B0aW9ucywKQEAgLTM1ODIsNiArMzU4Miw3 IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwg T2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJewogCQlPaWQJCQlpbmRleElkOwogCQlPaWQJ CQlhdXhJbmRleElkOworCQlPaWQJCQlqdW5rQXV4SW5kZXhJZDsKIAkJT2lkCQkJdGFibGVJZDsK IAkJT2lkCQkJYW1JZDsKIAl9IFJlaW5kZXhJbmRleEluZm87CkBAIC0zOTMwLDYgKzM5MzEsNyBA QCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9p ZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlSZWluZGV4SW5kZXhJbmZvICpuZXdpZHg7CiAJ CU9pZAkJCW5ld0luZGV4SWQ7CiAJCU9pZAkJCWF1eEluZGV4SWQ7CisJCU9pZAkJCWp1bmtBdXhJ bmRleElkOwogCQlSZWxhdGlvbglpbmRleFJlbDsKIAkJUmVsYXRpb24JaGVhcFJlbDsKIAkJT2lk CQkJc2F2ZV91c2VyaWQ7CkBAIC0zOTM3LDYgKzM5MzksNyBAQCBSZWluZGV4UmVsYXRpb25Db25j dXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3Qg UmVpbgogCQlpbnQJCQlzYXZlX25lc3RsZXZlbDsKIAkJUmVsYXRpb24JbmV3SW5kZXhSZWw7CiAJ CVJlbGF0aW9uCWF1eEluZGV4UmVsOworCQlSZWxhdGlvbglqdW5rQXV4SW5kZXhSZWw7CiAJCUxv Y2tSZWxJZCAgKmxvY2tyZWxpZDsKIAkJT2lkCQkJdGFibGVzcGFjZWlkOwogCkBAIC0zOTk5LDEy ICs0MDAyLDE3IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3Rt dCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCQkJCQkJCQkJCQkgICB0YWJs ZXNwYWNlaWQsCiAJCQkJCQkJCQkJCQkgICBhdXhDb25jdXJyZW50TmFtZSk7CiAKKwkJLyogU2Vh cmNoIGZvciBhdXhpbGlhcnkgaW5kZXggZm9yIHJlaW5kZXhlZCBpbmRleCwgdG8gZHJvcCBpdCAq LworCQlqdW5rQXV4SW5kZXhJZCA9IGdldF9hdXhpbGlhcnlfaW5kZXgoaWR4LT5pbmRleElkKTsK KwogCQkvKgogCQkgKiBOb3cgb3BlbiB0aGUgcmVsYXRpb24gb2YgdGhlIG5ldyBpbmRleCwgYSBz ZXNzaW9uLWxldmVsIGxvY2sgaXMKIAkJICogYWxzbyBuZWVkZWQgb24gaXQuCiAJCSAqLwogCQlu ZXdJbmRleFJlbCA9IGluZGV4X29wZW4obmV3SW5kZXhJZCwgU2hhcmVVcGRhdGVFeGNsdXNpdmVM b2NrKTsKIAkJYXV4SW5kZXhSZWwgPSBpbmRleF9vcGVuKGF1eEluZGV4SWQsIFNoYXJlVXBkYXRl RXhjbHVzaXZlTG9jayk7CisJCWlmIChPaWRJc1ZhbGlkKGp1bmtBdXhJbmRleElkKSkKKwkJCWp1 bmtBdXhJbmRleFJlbCA9IGluZGV4X29wZW4oanVua0F1eEluZGV4SWQsIFNoYXJlVXBkYXRlRXhj bHVzaXZlTG9jayk7CiAKIAkJLyoKIAkJICogU2F2ZSB0aGUgbGlzdCBvZiBPSURzIGFuZCBsb2Nr cyBpbiBwcml2YXRlIGNvbnRleHQKQEAgLTQwMTQsNiArNDAyMiw3IEBAIFJlaW5kZXhSZWxhdGlv bkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBj b25zdCBSZWluCiAJCW5ld2lkeCA9IHBhbGxvY19vYmplY3QoUmVpbmRleEluZGV4SW5mbyk7CiAJ CW5ld2lkeC0+aW5kZXhJZCA9IG5ld0luZGV4SWQ7CiAJCW5ld2lkeC0+YXV4SW5kZXhJZCA9IGF1 eEluZGV4SWQ7CisJCW5ld2lkeC0+anVua0F1eEluZGV4SWQgPSBqdW5rQXV4SW5kZXhJZDsKIAkJ bmV3aWR4LT50YWJsZUlkID0gaWR4LT50YWJsZUlkOwogCQluZXdpZHgtPmFtSWQgPSBpZHgtPmFt SWQ7CiAKQEAgLTQwMzQsMTAgKzQwNDMsMTggQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5 KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJ bG9ja3JlbGlkID0gcGFsbG9jX29iamVjdChMb2NrUmVsSWQpOwogCQkqbG9ja3JlbGlkID0gYXV4 SW5kZXhSZWwtPnJkX2xvY2tJbmZvLmxvY2tSZWxJZDsKIAkJcmVsYXRpb25Mb2NrcyA9IGxhcHBl bmQocmVsYXRpb25Mb2NrcywgbG9ja3JlbGlkKTsKKwkJaWYgKE9pZElzVmFsaWQoanVua0F1eElu ZGV4SWQpKQorCQl7CisJCQlsb2NrcmVsaWQgPSBwYWxsb2Nfb2JqZWN0KExvY2tSZWxJZCk7CisJ CQkqbG9ja3JlbGlkID0ganVua0F1eEluZGV4UmVsLT5yZF9sb2NrSW5mby5sb2NrUmVsSWQ7CisJ CQlyZWxhdGlvbkxvY2tzID0gbGFwcGVuZChyZWxhdGlvbkxvY2tzLCBsb2NrcmVsaWQpOworCQl9 CiAKIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwogCiAJCWluZGV4X2Nsb3Nl KGluZGV4UmVsLCBOb0xvY2spOworCQlpZiAoT2lkSXNWYWxpZChqdW5rQXV4SW5kZXhJZCkpCisJ CQlpbmRleF9jbG9zZShqdW5rQXV4SW5kZXhSZWwsIE5vTG9jayk7CiAJCWluZGV4X2Nsb3NlKGF1 eEluZGV4UmVsLCBOb0xvY2spOwogCQlpbmRleF9jbG9zZShuZXdJbmRleFJlbCwgTm9Mb2NrKTsK IApAQCAtNDE5NCw3ICs0MjExLDggQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0 IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAogCS8qCiAJ ICogQXQgdGhpcyBtb21lbnQgYWxsIHRhcmdldCBpbmRleGVzIGFyZSBtYXJrZWQgYXMgInJlYWR5 LXRvLWluc2VydCIuIFNvLAotCSAqIHdlIGFyZSBmcmVlIHRvIHN0YXJ0IHByb2Nlc3Mgb2YgZHJv cHBpbmcgYXV4aWxpYXJ5IGluZGV4ZXMuCisJICogd2UgYXJlIGZyZWUgdG8gc3RhcnQgcHJvY2Vz cyBvZiBkcm9wcGluZyBhdXhpbGlhcnkgaW5kZXhlcyAtIGluY2x1ZGluZworCSAqIGp1c3QgaW5k ZXhlcyBkZXRlY3RlZCBlYXJsaWVyLgogCSAqLwogCWZvcmVhY2gobGMsIG5ld0luZGV4SWRzKQog CXsKQEAgLTQyMTMsNiArNDIzMSw5IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25z dCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCSAqLwog CQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAkJaW5kZXhf c2V0X3N0YXRlX2ZsYWdzKG5ld2lkeC0+YXV4SW5kZXhJZCwgSU5ERVhfRFJPUF9DTEVBUl9SRUFE WSk7CisJCS8qIEVuc3VyZSBqdXN0IGluZGV4IGlzIG1hcmtlZCBhcyBub24tcmVhZHkgKi8KKwkJ aWYgKE9pZElzVmFsaWQobmV3aWR4LT5qdW5rQXV4SW5kZXhJZCkpCisJCQlpbmRleF9zZXRfc3Rh dGVfZmxhZ3MobmV3aWR4LT5qdW5rQXV4SW5kZXhJZCwgSU5ERVhfRFJPUF9DTEVBUl9SRUFEWSk7 CiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAKIAkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7 CkBAIC00Mzk1LDYgKzQ0MTYsOCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3Qg UmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlQdXNoQWN0 aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAogCQlpbmRleF9jb25jdXJy ZW50bHlfc2V0X2RlYWQobmV3aWR4LT50YWJsZUlkLCBuZXdpZHgtPmF1eEluZGV4SWQpOworCQlp ZiAoT2lkSXNWYWxpZChuZXdpZHgtPmp1bmtBdXhJbmRleElkKSkKKwkJCWluZGV4X2NvbmN1cnJl bnRseV9zZXRfZGVhZChuZXdpZHgtPnRhYmxlSWQsIG5ld2lkeC0+anVua0F1eEluZGV4SWQpOwog CiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJfQpAQCAtNDQ0MCw2ICs0NDYzLDE0IEBAIFJlaW5k ZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0 aW9uT2lkLCBjb25zdCBSZWluCiAJCQlvYmplY3Qub2JqZWN0U3ViSWQgPSAwOwogCiAJCQlhZGRf ZXhhY3Rfb2JqZWN0X2FkZHJlc3MoJm9iamVjdCwgb2JqZWN0cyk7CisKKwkJCWlmIChPaWRJc1Zh bGlkKGlkeC0+anVua0F1eEluZGV4SWQpKQorCQkJeworCisJCQkJb2JqZWN0Lm9iamVjdElkID0g aWR4LT5qdW5rQXV4SW5kZXhJZDsKKwkJCQlvYmplY3Qub2JqZWN0U3ViSWQgPSAwOworCQkJCWFk ZF9leGFjdF9vYmplY3RfYWRkcmVzcygmb2JqZWN0LCBvYmplY3RzKTsKKwkJCX0KIAkJfQogCiAJ CS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IDQzOTcxMjMzOThlLi44MGQxNjA1Y2Y1 YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTE1MjgsNiArMTUyOCw4IEBAIFJlbW92 ZVJlbGF0aW9ucyhEcm9wU3RtdCAqZHJvcCkKIAlMaXN0Q2VsbCAgICpjZWxsOwogCWludAkJCWZs YWdzID0gMDsKIAlMT0NLTU9ERQlsb2NrbW9kZSA9IEFjY2Vzc0V4Y2x1c2l2ZUxvY2s7CisJTWVt b3J5Q29udGV4dCBwcml2YXRlX2NvbnRleHQsCisJCQkJICBvbGRjb250ZXh0OwogCiAJLyogRFJP UCBDT05DVVJSRU5UTFkgdXNlcyBhIHdlYWtlciBsb2NrLCBhbmQgaGFzIHNvbWUgcmVzdHJpY3Rp b25zICovCiAJaWYgKGRyb3AtPmNvbmN1cnJlbnQpCkBAIC0xNTg4LDkgKzE1OTAsMjAgQEAgUmVt b3ZlUmVsYXRpb25zKERyb3BTdG10ICpkcm9wKQogCQkJcmVsa2luZCA9IDA7CQkvKiBrZWVwIGNv bXBpbGVyIHF1aWV0ICovCiAJCQlicmVhazsKIAl9CisJLyoKKwkgKiBDcmVhdGUgYSBtZW1vcnkg Y29udGV4dCB0aGF0IHdpbGwgc3Vydml2ZSBmb3JjZWQgdHJhbnNhY3Rpb24gY29tbWl0cyB3ZQor CSAqIG1heSBuZWVkIHRvIGRvIGJlbG93IChpbiBjYXNlIG9mIGNvbmN1cnJlbnQgaW5kZXggZHJv cCkuCisJICogU2luY2UgaXQgaXMgYSBjaGlsZCBvZiBQb3J0YWxDb250ZXh0LCBpdCB3aWxsIGdv IGF3YXkgZXZlbnR1YWxseSBldmVuIGlmCisJICogd2Ugc3VmZmVyIGFuIGVycm9yOyB0aGVyZSdz IG5vIG5lZWQgZm9yIHNwZWNpYWwgYWJvcnQgY2xlYW51cCBsb2dpYy4KKwkgKi8KKwlwcml2YXRl X2NvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoUG9ydGFsQ29udGV4dCwKKwkJCQkJCQkJ CQkJIlJlbW92ZVJlbGF0aW9ucyIsCisJCQkJCQkJCQkJCUFMTE9DU0VUX1NNQUxMX1NJWkVTKTsK IAorCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocHJpdmF0ZV9jb250ZXh0KTsK IAkvKiBMb2NrIGFuZCB2YWxpZGF0ZSBlYWNoIHJlbGF0aW9uOyBidWlsZCBhIGxpc3Qgb2Ygb2Jq ZWN0IGFkZHJlc3NlcyAqLwogCW9iamVjdHMgPSBuZXdfb2JqZWN0X2FkZHJlc3NlcygpOworCU1l bW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIAogCWZvcmVhY2goY2VsbCwgZHJvcC0+ b2JqZWN0cykKIAl7CkBAIC0xNjQyLDYgKzE2NTUsMzQgQEAgUmVtb3ZlUmVsYXRpb25zKERyb3BT dG10ICpkcm9wKQogCQkJZmxhZ3MgfD0gUEVSRk9STV9ERUxFVElPTl9DT05DVVJSRU5UTFk7CiAJ CX0KIAorCQkvKgorCQkgKiBDb25jdXJyZW50IGluZGV4IGRyb3AgcmVxdWlyZXMgdG8gYmUgdGhl IGZpcnN0IHRyYW5zYWN0aW9uLiBCdXQgaW4KKwkJICogY2FzZSB3ZSBoYXZlIGp1bmsgYXV4aWxp YXJ5IGluZGV4IC0gd2Ugd2FudCB0byBkcm9wIGl0IHRvbyAoYW5kIGFsc28KKwkJICogaW4gYSBj b25jdXJyZW50IHdheSkuIEluIHRoaXMgY2FzZSBwZXJmb3JtIHNpbGVudCBpbnRlcm5hbCBkZWxl dGlvbgorCQkgKiBvZiBhdXhpbGlhcnkgaW5kZXgsIGFuZCByZXN0b3JlIHRyYW5zYWN0aW9uIHN0 YXRlLiBJdCBpcyBmaW5lIHRvIGRvIGl0CisJCSAqIGluIHRoZSBsb29wIGJlY2F1c2UgdGhlcmUg aXMgb25seSBzaW5nbGUgZWxlbWVudCBpbiBkcm9wLT5vYmplY3RzLgorCQkgKi8KKwkJaWYgKChm bGFncyAmIFBFUkZPUk1fREVMRVRJT05fQ09OQ1VSUkVOVExZKSAhPSAwICYmCisJCQlzdGF0ZS5h Y3R1YWxfcmVsa2luZCA9PSBSRUxLSU5EX0lOREVYKQorCQl7CisJCQlPaWQganVua0F1eEluZGV4 T2lkID0gZ2V0X2F1eGlsaWFyeV9pbmRleChyZWxPaWQpOworCQkJaWYgKE9pZElzVmFsaWQoanVu a0F1eEluZGV4T2lkKSkKKwkJCXsKKwkJCQlPYmplY3RBZGRyZXNzIG9iamVjdDsKKwkJCQlvYmpl Y3QuY2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRpb25JZDsKKwkJCQlvYmplY3Qub2JqZWN0SWQgPSBq dW5rQXV4SW5kZXhPaWQ7CisJCQkJb2JqZWN0Lm9iamVjdFN1YklkID0gMDsKKwkJCQlwZXJmb3Jt RGVsZXRpb24oJm9iamVjdCwgRFJPUF9SRVNUUklDVCwKKwkJCQkJCQkJCQkgUEVSRk9STV9ERUxF VElPTl9DT05DVVJSRU5UTFkgfAorCQkJCQkJCQkJCSBQRVJGT1JNX0RFTEVUSU9OX0lOVEVSTkFM IHwKKwkJCQkJCQkJCQkgUEVSRk9STV9ERUxFVElPTl9RVUlFVExZKTsKKwkJCQlDb21taXRUcmFu c2FjdGlvbkNvbW1hbmQoKTsKKwkJCQlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQkJCVB1 c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQkJCVByZXZlbnRJ blRyYW5zYWN0aW9uQmxvY2sodHJ1ZSwgIkRST1AgSU5ERVggQ09OQ1VSUkVOVExZIik7CisJCQl9 CisJCX0KKwogCQkvKgogCQkgKiBDb25jdXJyZW50IGluZGV4IGRyb3AgY2Fubm90IGJlIHVzZWQg d2l0aCBwYXJ0aXRpb25lZCBpbmRleGVzLAogCQkgKiBlaXRoZXIuCkBAIC0xNjcwLDEyICsxNzEx LDE3IEBAIFJlbW92ZVJlbGF0aW9ucyhEcm9wU3RtdCAqZHJvcCkKIAkJb2JqLm9iamVjdElkID0g cmVsT2lkOwogCQlvYmoub2JqZWN0U3ViSWQgPSAwOwogCisJCW9sZGNvbnRleHQgPSBNZW1vcnlD b250ZXh0U3dpdGNoVG8ocHJpdmF0ZV9jb250ZXh0KTsKIAkJYWRkX2V4YWN0X29iamVjdF9hZGRy ZXNzKCZvYmosIG9iamVjdHMpOworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7 CiAJfQogCisJLyogRGVsZXRpb24gbWF5IGludm9sdmUgbXVsdGlwbGUgY29tbWl0cywgc28sIHN3 aXRjaCB0byBtZW1vcnkgY29udGV4dCAqLworCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dp dGNoVG8ocHJpdmF0ZV9jb250ZXh0KTsKIAlwZXJmb3JtTXVsdGlwbGVEZWxldGlvbnMob2JqZWN0 cywgZHJvcC0+YmVoYXZpb3IsIGZsYWdzKTsKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29u dGV4dCk7CiAKLQlmcmVlX29iamVjdF9hZGRyZXNzZXMob2JqZWN0cyk7CisJTWVtb3J5Q29udGV4 dERlbGV0ZShwcml2YXRlX2NvbnRleHQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3ku aAppbmRleCAwZWE3Y2NmNTI0My4uMDJiY2Y1ZTkzMTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvZGVwZW5kZW5jeS5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5j eS5oCkBAIC0xODAsNiArMTgwLDcgQEAgZXh0ZXJuIExpc3QgKmdldE93bmVkU2VxdWVuY2VzKE9p ZCByZWxpZCk7CiBleHRlcm4gT2lkCWdldElkZW50aXR5U2VxdWVuY2UoUmVsYXRpb24gcmVsLCBB dHRyTnVtYmVyIGF0dG51bSwgYm9vbCBtaXNzaW5nX29rKTsKIAogZXh0ZXJuIE9pZAlnZXRfaW5k ZXhfY29uc3RyYWludChPaWQgaW5kZXhJZCk7CitleHRlcm4gT2lkCWdldF9hdXhpbGlhcnlfaW5k ZXgoT2lkIGluZGV4SWQpOwogCiBleHRlcm4gTGlzdCAqZ2V0X2luZGV4X3JlZl9jb25zdHJhaW50 cyhPaWQgaW5kZXhJZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXgu aCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaAppbmRleCAwMWY4NWU1N2VhMi4uOGZlMGFj YzFlNmIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaAorKysgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKQEAgLTczLDYgKzczLDcgQEAgZXh0ZXJuIE9pZAlpbmRl eF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJIE9pZCBpbmRleFJlbGF0aW9u SWQsCiAJCQkJCQkgT2lkIHBhcmVudEluZGV4UmVsaWQsCiAJCQkJCQkgT2lkIHBhcmVudENvbnN0 cmFpbnRJZCwKKwkJCQkJCSBPaWQgYXV4aWxpYXJ5Rm9ySW5kZXhJZCwKIAkJCQkJCSBSZWxGaWxl TnVtYmVyIHJlbEZpbGVOdW1iZXIsCiAJCQkJCQkgSW5kZXhJbmZvICppbmRleEluZm8sCiAJCQkJ CQkgY29uc3QgTGlzdCAqaW5kZXhDb2xOYW1lcywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv Y3JlYXRlX2luZGV4Lm91dAppbmRleCBjYTc0ODQ0YjVjNi4uYWNhNmVjNTdhZDcgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQKQEAgLTMyNjUsMjAgKzMyNjUs MTA5IEBAIEVSUk9SOiAgcmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXggImF1eF9pbmRleF9pbmQ2 X2NjYXV4IiBub3Qgc3VwcG9ydGVkCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5k ZXhfaW5kNl9jY2F1eDsKIEVSUk9SOiAgcmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXggImF1eF9p bmRleF9pbmQ2X2NjYXV4IiBub3Qgc3VwcG9ydGVkCiAtLSBUaGlzIG1ha2VzIHRoZSBwcmV2aW91 cyBmYWlsdXJlIGdvIGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVjb21lIHZhbGlkLgotREVMRVRF IEZST00gY29uY3VyX3JlaW5kZXhfdGFiNCBXSEVSRSBjMSA9IDE7Ci1FUlJPUjogIHJlbGF0aW9u ICJjb25jdXJfcmVpbmRleF90YWI0IiBkb2VzIG5vdCBleGlzdAotTElORSAxOiBERUxFVEUgRlJP TSBjb25jdXJfcmVpbmRleF90YWI0IFdIRVJFIGMxID0gMTsKLSAgICAgICAgICAgICAgICAgICAg XgorREVMRVRFIEZST00gYXV4X2luZGV4X3RhYjUgV0hFUkUgYzEgPSAxOworLS0gU2hvdWxkIGJl IHNraXBwZWQgZHVyaW5nIHJlaW5kZXggYW5kIGRyb3BwZWQKK1JFSU5ERVggSU5ERVggYXV4X2lu ZGV4X2luZDY7CistLSBNYWtlIHN1cmUgYXV4IGluZGV4IGlzIGRyb3BwZWQKK1xkIGF1eF9pbmRl eF90YWI1CisgICAgICAgICAgIFRhYmxlICJwdWJsaWMuYXV4X2luZGV4X3RhYjUiCisgQ29sdW1u IHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGMxICAgICB8IGludGVn ZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorSW5kZXhlczoKKyAgICAiYXV4X2luZGV4X2lu ZDYiIFVOSVFVRSwgYnRyZWUgKGMxKQorCitEUk9QIElOREVYIGF1eF9pbmRleF9pbmQ2OworLS0g SW5zZXJ0IGR1cGxpY2F0ZXMgYWdhaW4KK0lOU0VSVCBJTlRPIGF1eF9pbmRleF90YWI1IFZBTFVF UyAoMSksICgxKTsKKy0tIENyZWF0ZSBpbnZhbGlkIGluZGV4IGFnYWluCitDUkVBVEUgVU5JUVVF IElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5kNiBPTiBhdXhfaW5kZXhfdGFiNSAoYzEp OworRVJST1I6ICBjb3VsZCBub3QgY3JlYXRlIHVuaXF1ZSBpbmRleCAiYXV4X2luZGV4X2luZDYi CitERVRBSUw6ICBLZXkgKGMxKT0oMSkgaXMgZHVwbGljYXRlZC4KKy0tIFRoaXMgbWFrZXMgdGhl IHByZXZpb3VzIGZhaWx1cmUgZ28gYXdheSwgc28gdGhlIGluZGV4IGNhbiBiZWNvbWUgdmFsaWQu CitERUxFVEUgRlJPTSBhdXhfaW5kZXhfdGFiNSBXSEVSRSBjMSA9IDE7CiAtLSBTaG91bGQgYmUg c2tpcHBlZCBkdXJpbmcgcmVpbmRleAotUkVJTkRFWCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsKLUVS Uk9SOiAgY291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggImF1eF9pbmRleF9pbmQ2IgotREVU QUlMOiAgS2V5IChjMSk9KDEpIGlzIGR1cGxpY2F0ZWQuCi0tLSBTaG91bGQgYmUgc2tpcHBlZCBk dXJpbmcgY29uY3VycmVudCByZWluZGV4CiBSRUlOREVYIFRBQkxFIENPTkNVUlJFTlRMWSBhdXhf aW5kZXhfdGFiNTsKIFdBUk5JTkc6ICBza2lwcGluZyByZWluZGV4IG9mIGludmFsaWQgaW5kZXgg InB1YmxpYy5hdXhfaW5kZXhfaW5kNiIKIEhJTlQ6ICBVc2UgRFJPUCBJTkRFWCBvciBSRUlOREVY IElOREVYLgogV0FSTklORzogIHNraXBwaW5nIHJlaW5kZXggb2YgYXV4aWxpYXJ5IGluZGV4ICJw dWJsaWMuYXV4X2luZGV4X2luZDZfY2NhdXgiCiBOT1RJQ0U6ICB0YWJsZSAiYXV4X2luZGV4X3Rh YjUiIGhhcyBubyBpbmRleGVzIHRoYXQgY2FuIGJlIHJlaW5kZXhlZCBjb25jdXJyZW50bHkKKy0t IE1ha2Ugc3VyZSBpdCBpcyBzdGlsbCBleGlzdHMKK1xkIGF1eF9pbmRleF90YWI1CisgICAgICAg ICAgIFRhYmxlICJwdWJsaWMuYXV4X2luZGV4X3RhYjUiCisgQ29sdW1uIHwgIFR5cGUgICB8IENv bGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGMxICAgICB8IGludGVnZXIgfCAgICAgICAgICAg fCAgICAgICAgICB8IAorSW5kZXhlczoKKyAgICAiYXV4X2luZGV4X2luZDYiIFVOSVFVRSwgYnRy ZWUgKGMxKSBJTlZBTElECisgICAgImF1eF9pbmRleF9pbmQ2X2NjYXV4IiBzdGlyIChjMSkgSU5W QUxJRAorCistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleCBhbmQgZHJvcHBlZAor UkVJTkRFWCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsKKy0tIE1ha2Ugc3VyZSBhdXggaW5kZXggaXMg ZHJvcHBlZAorXGQgYXV4X2luZGV4X3RhYjUKKyAgICAgICAgICAgVGFibGUgInB1YmxpYy5hdXhf aW5kZXhfdGFiNSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBE ZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0t LS0tCisgYzEgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitJbmRleGVz OgorICAgICJhdXhfaW5kZXhfaW5kNiIgVU5JUVVFLCBidHJlZSAoYzEpCisKK0RST1AgSU5ERVgg YXV4X2luZGV4X2luZDY7CistLSBJbnNlcnQgZHVwbGljYXRlcyBhZ2FpbgorSU5TRVJUIElOVE8g YXV4X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpOworLS0gQ3JlYXRlIGludmFsaWQgaW5kZXgg YWdhaW4KK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2IE9O IGF1eF9pbmRleF90YWI1IChjMSk7CitFUlJPUjogIGNvdWxkIG5vdCBjcmVhdGUgdW5pcXVlIGlu ZGV4ICJhdXhfaW5kZXhfaW5kNiIKK0RFVEFJTDogIEtleSAoYzEpPSgxKSBpcyBkdXBsaWNhdGVk LgorLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFpbHVyZSBnbyBhd2F5LCBzbyB0aGUgaW5k ZXggY2FuIGJlY29tZSB2YWxpZC4KK0RFTEVURSBGUk9NIGF1eF9pbmRleF90YWI1IFdIRVJFIGMx ID0gMTsKKy0tIFNob3VsZCBiZSBza2lwcGVkIGR1cmluZyByZWluZGV4IGFuZCBkcm9wcGVkCitS RUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5kNjsKKy0tIE1ha2Ugc3VyZSBh dXggaW5kZXggaXMgZHJvcHBlZAorXGQgYXV4X2luZGV4X3RhYjUKKyAgICAgICAgICAgVGFibGUg InB1YmxpYy5hdXhfaW5kZXhfdGFiNSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwg TnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tCisgYzEgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAg IHwgCitJbmRleGVzOgorICAgICJhdXhfaW5kZXhfaW5kNiIgVU5JUVVFLCBidHJlZSAoYzEpCisK K0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7CistLSBJbnNlcnQgZHVwbGljYXRlcyBhZ2Fpbgor SU5TRVJUIElOVE8gYXV4X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpOworLS0gQ3JlYXRlIGlu dmFsaWQgaW5kZXggYWdhaW4KK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9p bmRleF9pbmQ2IE9OIGF1eF9pbmRleF90YWI1IChjMSk7CitFUlJPUjogIGNvdWxkIG5vdCBjcmVh dGUgdW5pcXVlIGluZGV4ICJhdXhfaW5kZXhfaW5kNiIKK0RFVEFJTDogIEtleSAoYzEpPSgxKSBp cyBkdXBsaWNhdGVkLgorLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFpbHVyZSBnbyBhd2F5 LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxpZC4KK0RFTEVURSBGUk9NIGF1eF9pbmRleF90 YWI1IFdIRVJFIGMxID0gMTsKKy0tIERyb3AgbWFpbiBpbmRleCBDT05DVVJSRU5UTFkKK0RST1Ag SU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2OworLS0gTWFrZSBzdXJlIGF1eGlsaWFy eSBpbmRleCBkcm9wcGVkIHRvbworXGQgYXV4X2luZGV4X3RhYjUKKyAgICAgICAgICAgVGFibGUg InB1YmxpYy5hdXhfaW5kZXhfdGFiNSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwg TnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tCisgYzEgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAg IHwgCisKK0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7CitFUlJPUjogIGluZGV4ICJhdXhfaW5k ZXhfaW5kNiIgZG9lcyBub3QgZXhpc3QKKy0tIEluc2VydCBkdXBsaWNhdGVzIGFnYWluCitJTlNF UlQgSU5UTyBhdXhfaW5kZXhfdGFiNSBWQUxVRVMgKDEpLCAoMSk7CistLSBDcmVhdGUgaW52YWxp ZCBpbmRleCBhZ2FpbgorQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4 X2luZDYgT04gYXV4X2luZGV4X3RhYjUgKGMxKTsKK0VSUk9SOiAgY291bGQgbm90IGNyZWF0ZSB1 bmlxdWUgaW5kZXggImF1eF9pbmRleF9pbmQ2IgorREVUQUlMOiAgS2V5IChjMSk9KDEpIGlzIGR1 cGxpY2F0ZWQuCistLSBEcm9wIG1haW4gaW5kZXgKK0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7 CistLSBNYWtlIHN1cmUgYXV4aWxpYXJ5IGluZGV4IGRyb3BwZWQgdG9vCitcZCBhdXhfaW5kZXhf dGFiNQorICAgICAgICAgICBUYWJsZSAicHVibGljLmF1eF9pbmRleF90YWI1IgorIENvbHVtbiB8 ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBjMSAgICAgfCBpbnRlZ2Vy IHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKwogRFJPUCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsK IC0tIENoZWNrIGhhbmRsaW5nIG9mIGluZGV4ZXMgd2l0aCBleHByZXNzaW9ucyBhbmQgcHJlZGlj YXRlcy4gIFRoZQogLS0gZGVmaW5pdGlvbnMgb2YgdGhlIHJlYnVpbHQgaW5kZXhlcyBzaG91bGQg bWF0Y2ggdGhlIG9yaWdpbmFsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVh dGVfaW5kZXguc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbAppbmRl eCAyY2ZmMWFjMjliZS4uZTE0NjRlYWE2N2MgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2NyZWF0ZV9pbmRleC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2lu ZGV4LnNxbApAQCAtMTM0MCwxMSArMTM0MCw2MiBAQCBSRUlOREVYIElOREVYIGF1eF9pbmRleF9p bmQ2X2NjYXV4OwogLS0gQ29uY3VycmVudGx5IGFsc28KIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVO VExZIGF1eF9pbmRleF9pbmQ2X2NjYXV4OwogLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFp bHVyZSBnbyBhd2F5LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxpZC4KLURFTEVURSBGUk9N IGNvbmN1cl9yZWluZGV4X3RhYjQgV0hFUkUgYzEgPSAxOworREVMRVRFIEZST00gYXV4X2luZGV4 X3RhYjUgV0hFUkUgYzEgPSAxOworLS0gU2hvdWxkIGJlIHNraXBwZWQgZHVyaW5nIHJlaW5kZXgg YW5kIGRyb3BwZWQKK1JFSU5ERVggSU5ERVggYXV4X2luZGV4X2luZDY7CistLSBNYWtlIHN1cmUg YXV4IGluZGV4IGlzIGRyb3BwZWQKK1xkIGF1eF9pbmRleF90YWI1CitEUk9QIElOREVYIGF1eF9p bmRleF9pbmQ2OworCistLSBJbnNlcnQgZHVwbGljYXRlcyBhZ2FpbgorSU5TRVJUIElOVE8gYXV4 X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpOworLS0gQ3JlYXRlIGludmFsaWQgaW5kZXggYWdh aW4KK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2IE9OIGF1 eF9pbmRleF90YWI1IChjMSk7CistLSBUaGlzIG1ha2VzIHRoZSBwcmV2aW91cyBmYWlsdXJlIGdv IGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVjb21lIHZhbGlkLgorREVMRVRFIEZST00gYXV4X2lu ZGV4X3RhYjUgV0hFUkUgYzEgPSAxOwogLS0gU2hvdWxkIGJlIHNraXBwZWQgZHVyaW5nIHJlaW5k ZXgKLVJFSU5ERVggVEFCTEUgYXV4X2luZGV4X3RhYjU7Ci0tLSBTaG91bGQgYmUgc2tpcHBlZCBk dXJpbmcgY29uY3VycmVudCByZWluZGV4CiBSRUlOREVYIFRBQkxFIENPTkNVUlJFTlRMWSBhdXhf aW5kZXhfdGFiNTsKKy0tIE1ha2Ugc3VyZSBpdCBpcyBzdGlsbCBleGlzdHMKK1xkIGF1eF9pbmRl eF90YWI1CistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleCBhbmQgZHJvcHBlZAor UkVJTkRFWCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsKKy0tIE1ha2Ugc3VyZSBhdXggaW5kZXggaXMg ZHJvcHBlZAorXGQgYXV4X2luZGV4X3RhYjUKK0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7CisK Ky0tIEluc2VydCBkdXBsaWNhdGVzIGFnYWluCitJTlNFUlQgSU5UTyBhdXhfaW5kZXhfdGFiNSBW QUxVRVMgKDEpLCAoMSk7CistLSBDcmVhdGUgaW52YWxpZCBpbmRleCBhZ2FpbgorQ1JFQVRFIFVO SVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDYgT04gYXV4X2luZGV4X3RhYjUg KGMxKTsKKy0tIFRoaXMgbWFrZXMgdGhlIHByZXZpb3VzIGZhaWx1cmUgZ28gYXdheSwgc28gdGhl IGluZGV4IGNhbiBiZWNvbWUgdmFsaWQuCitERUxFVEUgRlJPTSBhdXhfaW5kZXhfdGFiNSBXSEVS RSBjMSA9IDE7CistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleCBhbmQgZHJvcHBl ZAorUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDY7CistLSBNYWtlIHN1 cmUgYXV4IGluZGV4IGlzIGRyb3BwZWQKK1xkIGF1eF9pbmRleF90YWI1CitEUk9QIElOREVYIGF1 eF9pbmRleF9pbmQ2OworCistLSBJbnNlcnQgZHVwbGljYXRlcyBhZ2FpbgorSU5TRVJUIElOVE8g YXV4X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpOworLS0gQ3JlYXRlIGludmFsaWQgaW5kZXgg YWdhaW4KK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2IE9O IGF1eF9pbmRleF90YWI1IChjMSk7CistLSBUaGlzIG1ha2VzIHRoZSBwcmV2aW91cyBmYWlsdXJl IGdvIGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVjb21lIHZhbGlkLgorREVMRVRFIEZST00gYXV4 X2luZGV4X3RhYjUgV0hFUkUgYzEgPSAxOworLS0gRHJvcCBtYWluIGluZGV4IENPTkNVUlJFTlRM WQorRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDY7CistLSBNYWtlIHN1cmUg YXV4aWxpYXJ5IGluZGV4IGRyb3BwZWQgdG9vCitcZCBhdXhfaW5kZXhfdGFiNQorRFJPUCBJTkRF WCBhdXhfaW5kZXhfaW5kNjsKKworLS0gSW5zZXJ0IGR1cGxpY2F0ZXMgYWdhaW4KK0lOU0VSVCBJ TlRPIGF1eF9pbmRleF90YWI1IFZBTFVFUyAoMSksICgxKTsKKy0tIENyZWF0ZSBpbnZhbGlkIGlu ZGV4IGFnYWluCitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5k NiBPTiBhdXhfaW5kZXhfdGFiNSAoYzEpOworLS0gRHJvcCBtYWluIGluZGV4CitEUk9QIElOREVY IGF1eF9pbmRleF9pbmQ2OworLS0gTWFrZSBzdXJlIGF1eGlsaWFyeSBpbmRleCBkcm9wcGVkIHRv bworXGQgYXV4X2luZGV4X3RhYjUKKwogRFJPUCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsKIAogLS0g Q2hlY2sgaGFuZGxpbmcgb2YgaW5kZXhlcyB3aXRoIGV4cHJlc3Npb25zIGFuZCBwcmVkaWNhdGVz LiAgVGhlCi0tIAoyLjQzLjAKCg== --000000000000176c55063224bb18--