Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vdwaE-006z0R-0h for pgsql-hackers@arkaria.postgresql.org; Thu, 08 Jan 2026 20:26:15 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vdwaC-004GHy-07 for pgsql-hackers@arkaria.postgresql.org; Thu, 08 Jan 2026 20:26:12 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vdwaA-004GHk-2X for pgsql-hackers@lists.postgresql.org; Thu, 08 Jan 2026 20:26:12 +0000 Received: from fhigh-b5-smtp.messagingengine.com ([202.12.124.156]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vdwa8-004x4l-1u for pgsql-hackers@postgresql.org; Thu, 08 Jan 2026 20:26:10 +0000 Received: from phl-compute-01.internal (phl-compute-01.internal [10.202.2.41]) by mailfhigh.stl.internal (Postfix) with ESMTP id E8C637A00AB for ; Thu, 8 Jan 2026 15:26:06 -0500 (EST) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-01.internal (MEProxy); Thu, 08 Jan 2026 15:26:06 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=burd.me; h=cc :content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm2; t=1767903966; x=1767990366; bh=He7TmSLBDx 5ytHCaiRVGL99kxZbp2hcp2kKTZ42QTB8=; b=TBnJLsrBpjUhw8JpwZVF6x2M2k Dqg9JrLBibvlcr14/ngbC+l9ByuN8Nf6oyRn+/fNVew+8enQPvhg4ODdCubmjcK8 J2xYyjVaHyWJmeYiYBnGhs/KwnZyCKAV5GURtHeFeYgNIzJ+r8LIyZ28/fq6lW7K Yta3+vhowfZMa3yzoKKlp8J2VkxbjP4L210F6sSh+q3VldkVGRf3ZwEz4DJOCijh 6jb8dDg5qtexAc7aFkTh/6AZbdLoYEndEto2Rlua3B9OAE0nC2YTCeq9FBUdtW65 sxx85r+Y9dB8h7KDXrZ5tSzCGZcYDqvmQx86mFFKvv974Eb56lQ+vNsVmrEQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t= 1767903966; x=1767990366; bh=He7TmSLBDx5ytHCaiRVGL99kxZbp2hcp2kK TZ42QTB8=; b=piXcMP6umSaUrgHAicu5t1xEZLn+yl9hMn7X1xhbhtq/GquohIb Sx9CymZUkylkU+KTJAlNl3G2l0t3RrjfH/CxyN+SpzidN7i02qB2StRktBGxsEnU aWcewzANQ3olbkOP0HhdS5i2mw2gpkWfXSbFzJORo+4vBr+oouOyeSib0IbxH3gq qBS8H/2Ko9rbEKZ5WvmMLjNQMfGL+mRk/wVAOuZL9h6fiX9c01ltluMyNnrSEygX tBuRjArAnohu2oO+51GwxmeDnLSKJEH+WoUeg4J2Z8G8u95iscH80moA2Uc3edbD giSsHA9+10qIUqYAn4264FUpbjLPN/WYtRg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgddutdeiledtucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucenucfjughrpeffhffvkfgjfhfuofggtgesmhdtmherre dtjeenucfhrhhomhepifhrvghguceuuhhrugcuoehgrhgvghessghurhgurdhmvgeqnecu ggftrfgrthhtvghrnhepfeeluedutdeludduieekgfduffehffffieelueeuvddtveejve euueegkeeuteeunecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhf rhhomhepghhrvghgsegsuhhrugdrmhgvpdhnsggprhgtphhtthhopedupdhmohguvgepsh hmthhpohhuthdprhgtphhtthhopehpghhsqhhlqdhhrggtkhgvrhhssehpohhsthhgrhgv shhqlhdrohhrgh X-ME-Proxy: Feedback-ID: i675e48f3:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Thu, 8 Jan 2026 15:26:06 -0500 (EST) Date: Thu, 8 Jan 2026 15:25:55 -0500 From: Greg Burd To: "=?utf-8?Q?pgsql-hackers=40postgresql.org?=" Message-ID: <5165C147-B476-4E3D-AAA9-11C0B966FC4D@greg.burd.me> In-Reply-To: References: Subject: Re: Expanding HOT updates for expression and partial indexes X-Mailer: Mailspring MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="696012d3_36a751cf_1975" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --696012d3_36a751cf_1975 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Content-Disposition: inline Rebased to address conflicts. best. -greg --696012d3_36a751cf_1975 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="=?utf-8?Q?v27-0001-Prepare-heapam=5Ftuple=5Fupdate-and-simple=5Fheap=5Fupda.patch?=" RnJvbSA4MmE3NmJhMTkyZTM3YjAzOGFmMGFkZWJmYTJlY2EwYWVkZDBlM2Q4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTogU3VuLCAy IE5vdiAyMDI1IDExOjM2OjIwIC0wNTAwClN1YmplY3Q6IFtQQVRDSCB2MjcgMS80XSBQcmVwYXJl IGhlYXBhbV90dXBsZV91cGRhdGUoKSBhbmQKIHNpbXBsZV9oZWFwX3VwZGF0ZSgpIGZvciBkaXZl cmdlbmNlCgpUaGlzIGNvbW1pdCBsYXlzIHRoZSBmb3VuZGF0aW9uIGZvciBsYXJnZXIgY2hhbmdl cyB0byBjb21lIGJ5IHRha2luZyB0aGUKZmlyc3QgcG9ydGlvbiBvZiBoZWFwX3VwZGF0ZSgpIHRo cm91Z2ggdGhlIEhlYXBEZXRlcm1pbkNvbHVtbnNJbmZvKCkgYW5kCnJlcGxpY2F0aW5nIHRoYXQg bG9naWMgaW4gYm90aCBoZWFwYW1fdHVwbGVfdXBkYXRlKCkgYW5kCnNpbXBsZV9oZWFwX3VwYXRl KCkuICBUaGlzIGlzIGRvbmUgc28gdGhhdCB0aGVzZSB0d28gcGF0aHMgbWlnaHQgZGl2ZXJnZQpp biBpbXBsZW1lbnRhdGlvbiBsYXRlciBvbi4gIFRoZSBzaW1wbGVfaGVhcF91cGRhdGUoKSBwYXRo IGRlYWxzIHNvbGVseQp3aXRoIHVwZGF0ZXMgdG8gY2F0YWxvZyB0dXBsZXMgd2hpY2ggY291bGQg cmVjb3JkIHRoZWlyIG1vZGlmaWVkCmF0dHJpYnV0ZXMgcmF0aGVyIHRoYW4gcmVsZWFybiB0aGVt LiAgVGhlIHJlbWFpbmluZyBjYWxscyBmcm9tIHRoZQpleGVjdXRvciBpbnRvIHRoZSB0YWJsZSBB TSB1cGRhdGUgQVBJIGNvdWxkIGluY2x1ZGUgdGhlIHNldCBvZiB1cGRhdGVkCmF0dHJpYnV0ZXMu ICBUaGlzIGlzIGZvcmVzaGFkb3dpbmcuLi4gb2YgY291cnNlLCBhcyB0aGF0J3Mgd2hhdCB0aGUg bmV4dApjb21taXQgd2lsbCBzdGFydCB0byBkby4KCkFzIHBhcnQgb2YgdGhpcyByZW9yZ2FuaXph dGlvbiwgdGhlIGhhbmRsaW5nIG9mIHJlcGxpY2EgaWRlbnRpdHkga2V5CmF0dHJpYnV0ZXMgaGFz IGJlZW4gYWRqdXN0ZWQuIEluc3RlYWQgb2YgZmV0Y2hpbmcgYSBzZWNvbmQgY29weSBvZgp0aGUg Yml0bWFwIGR1cmluZyBhbiB1cGRhdGUgb3BlcmF0aW9uLCB0aGUgY2FsbGVyIGlzIG5vdyByZXF1 aXJlZCB0bwpwcm92aWRlIGl0LiBUaGlzIGNoYW5nZSBhcHBsaWVzIHRvIGJvdGggaGVhcF91cGRh dGUoKSBhbmQKaGVhcF9kZWxldGUoKS4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW0uYyAgICAgICAgIHwgNTY4ICsrKysrKysrKysrLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIHwgMTE3ICsrKystCiBzcmMvaW5jbHVkZS9hY2Nl c3MvaGVhcGFtLmggICAgICAgICAgICAgIHwgIDI0ICstCiAzIGZpbGVzIGNoYW5nZWQsIDQxMCBp bnNlcnRpb25zKCspLCAyOTkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpp bmRleCBhZDlkNjMzOGVjMi4uMjU3OWYyMWUyMTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5j CkBAIC0zOSwxOCArMzksMjQgQEAKICNpbmNsdWRlICJhY2Nlc3Mvc3luY3NjYW4uaCIKICNpbmNs dWRlICJhY2Nlc3MvdmFsaWQuaCIKICNpbmNsdWRlICJhY2Nlc3MvdmlzaWJpbGl0eW1hcC5oIgor I2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dpbnNlcnQuaCIK KyNpbmNsdWRlICJjYXRhbG9nL2NhdGFsb2cuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2RhdGFi YXNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19kYXRhYmFzZV9kLmgiCiAjaW5jbHVkZSAiY29t bWFuZHMvdmFjdXVtLmgiCisjaW5jbHVkZSAibm9kZXMvYml0bWFwc2V0LmgiCiAjaW5jbHVkZSAi cGdzdGF0LmgiCiAjaW5jbHVkZSAicG9ydC9wZ19iaXR1dGlscy5oIgorI2luY2x1ZGUgInN0b3Jh Z2UvYnVmbWdyLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pdGVtcHRyLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcmVkaWNhdGUuaCIKICNpbmNsdWRlICJz dG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5jbHVkZSAi dXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCiAjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIKKyNpbmNs dWRlICJ1dGlscy9yZWxjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3NwY2NhY2hlLmgiCiAjaW5j bHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKIApAQCAtNjIsMTYgKzY4LDggQEAgc3RhdGljIFhMb2dS ZWNQdHIgbG9nX2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbG4sIEJ1ZmZlciBvbGRidWYsCiAJCQkJ CQkJCSAgSGVhcFR1cGxlIG5ld3R1cCwgSGVhcFR1cGxlIG9sZF9rZXlfdHVwbGUsCiAJCQkJCQkJ CSAgYm9vbCBhbGxfdmlzaWJsZV9jbGVhcmVkLCBib29sIG5ld19hbGxfdmlzaWJsZV9jbGVhcmVk KTsKICNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCi1zdGF0aWMgdm9pZCBjaGVja19sb2NrX2lm X2lucGxhY2VfdXBkYXRlYWJsZV9yZWwoUmVsYXRpb24gcmVsYXRpb24sCi0JCQkJCQkJCQkJCQkg Y29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLAotCQkJCQkJCQkJCQkJIEhlYXBUdXBsZSBuZXd0 dXApOwogc3RhdGljIHZvaWQgY2hlY2tfaW5wbGFjZV9yZWxfbG9jayhIZWFwVHVwbGUgb2xkdHVw KTsKICNlbmRpZgotc3RhdGljIEJpdG1hcHNldCAqSGVhcERldGVybWluZUNvbHVtbnNJbmZvKFJl bGF0aW9uIHJlbGF0aW9uLAotCQkJCQkJCQkJCSAgIEJpdG1hcHNldCAqaW50ZXJlc3RpbmdfY29s cywKLQkJCQkJCQkJCQkgICBCaXRtYXBzZXQgKmV4dGVybmFsX2NvbHMsCi0JCQkJCQkJCQkJICAg SGVhcFR1cGxlIG9sZHR1cCwgSGVhcFR1cGxlIG5ld3R1cCwKLQkJCQkJCQkJCQkgICBib29sICpo YXNfZXh0ZXJuYWwpOwogc3RhdGljIGJvb2wgaGVhcF9hY3F1aXJlX3R1cGxvY2soUmVsYXRpb24g cmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkLAogCQkJCQkJCQkgTG9ja1R1cGxl TW9kZSBtb2RlLCBMb2NrV2FpdFBvbGljeSB3YWl0X3BvbGljeSwKIAkJCQkJCQkJIGJvb2wgKmhh dmVfdHVwbGVfbG9jayk7CkBAIC0xMDYsMTAgKzEwNCwxMCBAQCBzdGF0aWMgYm9vbCBDb25kaXRp b25hbE11bHRpWGFjdElkV2FpdChNdWx0aVhhY3RJZCBtdWx0aSwgTXVsdGlYYWN0U3RhdHVzIHN0 YXR1cwogc3RhdGljIHZvaWQgaW5kZXhfZGVsZXRlX3NvcnQoVE1fSW5kZXhEZWxldGVPcCAqZGVs c3RhdGUpOwogc3RhdGljIGludAlib3R0b211cF9zb3J0X2FuZF9zaHJpbmsoVE1fSW5kZXhEZWxl dGVPcCAqZGVsc3RhdGUpOwogc3RhdGljIFhMb2dSZWNQdHIgbG9nX2hlYXBfbmV3X2NpZChSZWxh dGlvbiByZWxhdGlvbiwgSGVhcFR1cGxlIHR1cCk7Ci1zdGF0aWMgSGVhcFR1cGxlIEV4dHJhY3RS ZXBsaWNhSWRlbnRpdHkoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0cCwgYm9vbCBrZXlf cmVxdWlyZWQsCitzdGF0aWMgSGVhcFR1cGxlIEV4dHJhY3RSZXBsaWNhSWRlbnRpdHkoUmVsYXRp b24gcmVsYXRpb24sIEhlYXBUdXBsZSB0cCwKKwkJCQkJCQkJCQlCaXRtYXBzZXQgKnJpZF9hdHRy cywgYm9vbCBrZXlfcmVxdWlyZWQsCiAJCQkJCQkJCQkJYm9vbCAqY29weSk7CiAKLQogLyoKICAq IEVhY2ggdHVwbGUgbG9jayBtb2RlIGhhcyBhIGNvcnJlc3BvbmRpbmcgaGVhdnl3ZWlnaHQgbG9j aywgYW5kIG9uZSBvciB0d28KICAqIGNvcnJlc3BvbmRpbmcgTXVsdGlYYWN0U3RhdHVzZXMgKG9u ZSB0byBtZXJlbHkgbG9jayB0dXBsZXMsIGFub3RoZXIgb25lIHRvCkBAIC0yODE3LDYgKzI4MTUs NyBAQCBoZWFwX2RlbGV0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRh ICp0aWQsCiAJQnVmZmVyCQlidWZmZXI7CiAJQnVmZmVyCQl2bWJ1ZmZlciA9IEludmFsaWRCdWZm ZXI7CiAJVHJhbnNhY3Rpb25JZCBuZXdfeG1heDsKKwlCaXRtYXBzZXQgICpyaWRfYXR0cnM7CiAJ dWludDE2CQluZXdfaW5mb21hc2ssCiAJCQkJbmV3X2luZm9tYXNrMjsKIAlib29sCQloYXZlX3R1 cGxlX2xvY2sgPSBmYWxzZTsKQEAgLTI4MjksNiArMjgyOCw4IEBAIGhlYXBfZGVsZXRlKFJlbGF0 aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKnRpZCwKIAogCUFzc2VydEhhc1Nu YXBzaG90Rm9yVG9hc3QocmVsYXRpb24pOwogCisJcmlkX2F0dHJzID0gUmVsYXRpb25HZXRJbmRl eEF0dHJCaXRtYXAocmVsYXRpb24sIElOREVYX0FUVFJfQklUTUFQX0lERU5USVRZX0tFWSk7CisK IAkvKgogCSAqIEZvcmJpZCB0aGlzIGR1cmluZyBhIHBhcmFsbGVsIG9wZXJhdGlvbiwgbGVzdCBp dCBhbGxvY2F0ZSBhIGNvbWJvIENJRC4KIAkgKiBPdGhlciB3b3JrZXJzIG1pZ2h0IG5lZWQgdGhh dCBjb21ibyBDSUQgZm9yIHZpc2liaWxpdHkgY2hlY2tzLCBhbmQgd2UKQEAgLTMwMzIsNiArMzAz Myw3IEBAIGwxOgogCQkJVW5sb2NrVHVwbGVUdXBsb2NrKHJlbGF0aW9uLCAmKHRwLnRfc2VsZiks IExvY2tUdXBsZUV4Y2x1c2l2ZSk7CiAJCWlmICh2bWJ1ZmZlciAhPSBJbnZhbGlkQnVmZmVyKQog CQkJUmVsZWFzZUJ1ZmZlcih2bWJ1ZmZlcik7CisJCWJtc19mcmVlKHJpZF9hdHRycyk7CiAJCXJl dHVybiByZXN1bHQ7CiAJfQogCkBAIC0zMDUzLDcgKzMwNTUsMTAgQEAgbDE6CiAJICogQ29tcHV0 ZSByZXBsaWNhIGlkZW50aXR5IHR1cGxlIGJlZm9yZSBlbnRlcmluZyB0aGUgY3JpdGljYWwgc2Vj dGlvbiBzbwogCSAqIHdlIGRvbid0IFBBTklDIHVwb24gYSBtZW1vcnkgYWxsb2NhdGlvbiBmYWls dXJlLgogCSAqLwotCW9sZF9rZXlfdHVwbGUgPSBFeHRyYWN0UmVwbGljYUlkZW50aXR5KHJlbGF0 aW9uLCAmdHAsIHRydWUsICZvbGRfa2V5X2NvcGllZCk7CisJb2xkX2tleV90dXBsZSA9IEV4dHJh Y3RSZXBsaWNhSWRlbnRpdHkocmVsYXRpb24sICZ0cCwgcmlkX2F0dHJzLAorCQkJCQkJCQkJCSAg IHRydWUsICZvbGRfa2V5X2NvcGllZCk7CisJYm1zX2ZyZWUocmlkX2F0dHJzKTsKKwlyaWRfYXR0 cnMgPSBOVUxMOwogCiAJLyoKIAkgKiBJZiB0aGlzIGlzIHRoZSBmaXJzdCBwb3NzaWJseS1tdWx0 aXhhY3QtYWJsZSBvcGVyYXRpb24gaW4gdGhlIGN1cnJlbnQKQEAgLTMyNjUsNyArMzI3MCwxMCBA QCBzaW1wbGVfaGVhcF9kZWxldGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVy RGF0YSAqdGlkKQogICoJaGVhcF91cGRhdGUgLSByZXBsYWNlIGEgdHVwbGUKICAqCiAgKiBTZWUg dGFibGVfdHVwbGVfdXBkYXRlKCkgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIHRoZSBwYXJhbWV0ZXJz LCBleGNlcHQgdGhhdAotICogdGhpcyByb3V0aW5lIGRpcmVjdGx5IHRha2VzIGEgdHVwbGUgcmF0 aGVyIHRoYW4gYSBzbG90LgorICogdGhpcyByb3V0aW5lIGRpcmVjdGx5IHRha2VzIGEgaGVhcCB0 dXBsZSByYXRoZXIgdGhhbiBhIHNsb3QuCisgKgorICogSXQncyByZXF1aXJlZCB0aGF0IHRoZSBj YWxsZXIgaGFzIGFjcXVpcmVkIHRoZSBwaW4gYW5kIGxvY2sgb24gdGhlIGJ1ZmZlci4KKyAqIFRo YXQgbG9jayBhbmQgcGluIHdpbGwgYmUgbWFuYWdlZCBoZXJlLCBub3QgaW4gdGhlIGNhbGxlci4K ICAqCiAgKiBJbiB0aGUgZmFpbHVyZSBjYXNlcywgdGhlIHJvdXRpbmUgZmlsbHMgKnRtZmQgd2l0 aCB0aGUgdHVwbGUncyB0X2N0aWQsCiAgKiB0X3htYXggKHJlc29sdmluZyBhIHBvc3NpYmxlIE11 bHRpWGFjdCwgaWYgbmVjZXNzYXJ5KSwgYW5kIHRfY21heCAodGhlIGxhc3QKQEAgLTMyNzMsMzAg KzMyODEsMjEgQEAgc2ltcGxlX2hlYXBfZGVsZXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJ dGVtUG9pbnRlckRhdGEgKnRpZCkKICAqIGdlbmVyYXRlZCBieSBhbm90aGVyIHRyYW5zYWN0aW9u KS4KICAqLwogVE1fUmVzdWx0Ci1oZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3Qg SXRlbVBvaW50ZXJEYXRhICpvdGlkLCBIZWFwVHVwbGUgbmV3dHVwLAotCQkJQ29tbWFuZElkIGNp ZCwgU25hcHNob3QgY3Jvc3NjaGVjaywgYm9vbCB3YWl0LAotCQkJVE1fRmFpbHVyZURhdGEgKnRt ZmQsIExvY2tUdXBsZU1vZGUgKmxvY2ttb2RlLAotCQkJVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRl X2luZGV4ZXMpCitoZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgSGVhcFR1cGxlRGF0YSAq b2xkdHVwLAorCQkJSGVhcFR1cGxlIG5ld3R1cCwgQ29tbWFuZElkIGNpZCwgU25hcHNob3QgY3Jv c3NjaGVjaywgYm9vbCB3YWl0LAorCQkJVE1fRmFpbHVyZURhdGEgKnRtZmQsIExvY2tUdXBsZU1v ZGUgKmxvY2ttb2RlLCBCdWZmZXIgYnVmZmVyLAorCQkJUGFnZSBwYWdlLCBCbG9ja051bWJlciBi bG9jaywgSXRlbUlkIGxwLCBCaXRtYXBzZXQgKmhvdF9hdHRycywKKwkJCUJpdG1hcHNldCAqc3Vt X2F0dHJzLCBCaXRtYXBzZXQgKnBrX2F0dHJzLCBCaXRtYXBzZXQgKnJpZF9hdHRycywKKwkJCUJp dG1hcHNldCAqbWl4X2F0dHJzLCBCdWZmZXIgKnZtYnVmZmVyLAorCQkJYm9vbCByZXBfaWRfa2V5 X3JlcXVpcmVkLCBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKIHsKIAlUTV9SZXN1 bHQJcmVzdWx0OwogCVRyYW5zYWN0aW9uSWQgeGlkID0gR2V0Q3VycmVudFRyYW5zYWN0aW9uSWQo KTsKLQlCaXRtYXBzZXQgICpob3RfYXR0cnM7Ci0JQml0bWFwc2V0ICAqc3VtX2F0dHJzOwotCUJp dG1hcHNldCAgKmtleV9hdHRyczsKLQlCaXRtYXBzZXQgICppZF9hdHRyczsKLQlCaXRtYXBzZXQg ICppbnRlcmVzdGluZ19hdHRyczsKLQlCaXRtYXBzZXQgICptb2RpZmllZF9hdHRyczsKLQlJdGVt SWQJCWxwOwotCUhlYXBUdXBsZURhdGEgb2xkdHVwOwogCUhlYXBUdXBsZQloZWFwdHVwOwogCUhl YXBUdXBsZQlvbGRfa2V5X3R1cGxlID0gTlVMTDsKIAlib29sCQlvbGRfa2V5X2NvcGllZCA9IGZh bHNlOwotCVBhZ2UJCXBhZ2U7Ci0JQmxvY2tOdW1iZXIgYmxvY2s7CiAJTXVsdGlYYWN0U3RhdHVz IG14YWN0X3N0YXR1czsKLQlCdWZmZXIJCWJ1ZmZlciwKLQkJCQluZXdidWYsCi0JCQkJdm1idWZm ZXIgPSBJbnZhbGlkQnVmZmVyLAorCUJ1ZmZlcgkJbmV3YnVmLAogCQkJCXZtYnVmZmVyX25ldyA9 IEludmFsaWRCdWZmZXI7CiAJYm9vbAkJbmVlZF90b2FzdDsKIAlTaXplCQluZXd0dXBzaXplLApA QCAtMzMxMCw3ICszMzA5LDYgQEAgaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0 IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxlIG5ld3R1cCwKIAlib29sCQlhbGxfdmlz aWJsZV9jbGVhcmVkX25ldyA9IGZhbHNlOwogCWJvb2wJCWNoZWNrZWRfbG9ja2VyczsKIAlib29s CQlsb2NrZXJfcmVtYWluczsKLQlib29sCQlpZF9oYXNfZXh0ZXJuYWwgPSBmYWxzZTsKIAlUcmFu c2FjdGlvbklkIHhtYXhfbmV3X3R1cGxlLAogCQkJCXhtYXhfb2xkX3R1cGxlOwogCXVpbnQxNgkJ aW5mb21hc2tfb2xkX3R1cGxlLApAQCAtMzMxOCwxNDQgKzMzMTYsMTMgQEAgaGVhcF91cGRhdGUo UmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxl IG5ld3R1cCwKIAkJCQlpbmZvbWFza19uZXdfdHVwbGUsCiAJCQkJaW5mb21hc2syX25ld190dXBs ZTsKIAotCUFzc2VydChJdGVtUG9pbnRlcklzVmFsaWQob3RpZCkpOwotCi0JLyogQ2hlYXAsIHNp bXBsaXN0aWMgY2hlY2sgdGhhdCB0aGUgdHVwbGUgbWF0Y2hlcyB0aGUgcmVsJ3Mgcm93dHlwZS4g Ki8KLQlBc3NlcnQoSGVhcFR1cGxlSGVhZGVyR2V0TmF0dHMobmV3dHVwLT50X2RhdGEpIDw9Ci0J CSAgIFJlbGF0aW9uR2V0TnVtYmVyT2ZBdHRyaWJ1dGVzKHJlbGF0aW9uKSk7Ci0KKwlBc3NlcnQo QnVmZmVySXNMb2NrZWRCeU1lKGJ1ZmZlcikpOworCUFzc2VydChJdGVtSWRJc05vcm1hbChscCkp OwogCUFzc2VydEhhc1NuYXBzaG90Rm9yVG9hc3QocmVsYXRpb24pOwogCi0JLyoKLQkgKiBGb3Ji aWQgdGhpcyBkdXJpbmcgYSBwYXJhbGxlbCBvcGVyYXRpb24sIGxlc3QgaXQgYWxsb2NhdGUgYSBj b21ibyBDSUQuCi0JICogT3RoZXIgd29ya2VycyBtaWdodCBuZWVkIHRoYXQgY29tYm8gQ0lEIGZv ciB2aXNpYmlsaXR5IGNoZWNrcywgYW5kIHdlCi0JICogaGF2ZSBubyBwcm92aXNpb24gZm9yIGJy b2FkY2FzdGluZyBpdCB0byB0aGVtLgotCSAqLwotCWlmIChJc0luUGFyYWxsZWxNb2RlKCkpCi0J CWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1RSQU5TQUNUSU9O X1NUQVRFKSwKLQkJCQkgZXJybXNnKCJjYW5ub3QgdXBkYXRlIHR1cGxlcyBkdXJpbmcgYSBwYXJh bGxlbCBvcGVyYXRpb24iKSkpOwotCi0jaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORwotCWNoZWNr X2xvY2tfaWZfaW5wbGFjZV91cGRhdGVhYmxlX3JlbChyZWxhdGlvbiwgb3RpZCwgbmV3dHVwKTsK LSNlbmRpZgotCi0JLyoKLQkgKiBGZXRjaCB0aGUgbGlzdCBvZiBhdHRyaWJ1dGVzIHRvIGJlIGNo ZWNrZWQgZm9yIHZhcmlvdXMgb3BlcmF0aW9ucy4KLQkgKgotCSAqIEZvciBIT1QgY29uc2lkZXJh dGlvbnMsIHRoaXMgaXMgd2FzdGVkIGVmZm9ydCBpZiB3ZSBmYWlsIHRvIHVwZGF0ZSBvcgotCSAq IGhhdmUgdG8gcHV0IHRoZSBuZXcgdHVwbGUgb24gYSBkaWZmZXJlbnQgcGFnZS4gIEJ1dCB3ZSBt dXN0IGNvbXB1dGUgdGhlCi0JICogbGlzdCBiZWZvcmUgb2J0YWluaW5nIGJ1ZmZlciBsb2NrIC0t LSBpbiB0aGUgd29yc3QgY2FzZSwgaWYgd2UgYXJlCi0JICogZG9pbmcgYW4gdXBkYXRlIG9uIG9u ZSBvZiB0aGUgcmVsZXZhbnQgc3lzdGVtIGNhdGFsb2dzLCB3ZSBjb3VsZAotCSAqIGRlYWRsb2Nr IGlmIHdlIHRyeSB0byBmZXRjaCB0aGUgbGlzdCBsYXRlci4gIEluIGFueSBjYXNlLCB0aGUgcmVs Y2FjaGUKLQkgKiBjYWNoZXMgdGhlIGRhdGEgc28gdGhpcyBpcyB1c3VhbGx5IHByZXR0eSBjaGVh cC4KLQkgKgotCSAqIFdlIGFsc28gbmVlZCBjb2x1bW5zIHVzZWQgYnkgdGhlIHJlcGxpY2EgaWRl bnRpdHkgYW5kIGNvbHVtbnMgdGhhdCBhcmUKLQkgKiBjb25zaWRlcmVkIHRoZSAia2V5IiBvZiBy b3dzIGluIHRoZSB0YWJsZS4KLQkgKgotCSAqIE5vdGUgdGhhdCB3ZSBnZXQgY29waWVzIG9mIGVh Y2ggYml0bWFwLCBzbyB3ZSBuZWVkIG5vdCB3b3JyeSBhYm91dAotCSAqIHJlbGNhY2hlIGZsdXNo IGhhcHBlbmluZyBtaWR3YXkgdGhyb3VnaC4KLQkgKi8KLQlob3RfYXR0cnMgPSBSZWxhdGlvbkdl dEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwKLQkJCQkJCQkJCQkgICBJTkRFWF9BVFRSX0JJVE1B UF9IT1RfQkxPQ0tJTkcpOwotCXN1bV9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFw KHJlbGF0aW9uLAotCQkJCQkJCQkJCSAgIElOREVYX0FUVFJfQklUTUFQX1NVTU1BUklaRUQpOwot CWtleV9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLCBJTkRFWF9B VFRSX0JJVE1BUF9LRVkpOwotCWlkX2F0dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAo cmVsYXRpb24sCi0JCQkJCQkJCQkJICBJTkRFWF9BVFRSX0JJVE1BUF9JREVOVElUWV9LRVkpOwot CWludGVyZXN0aW5nX2F0dHJzID0gTlVMTDsKLQlpbnRlcmVzdGluZ19hdHRycyA9IGJtc19hZGRf bWVtYmVycyhpbnRlcmVzdGluZ19hdHRycywgaG90X2F0dHJzKTsKLQlpbnRlcmVzdGluZ19hdHRy cyA9IGJtc19hZGRfbWVtYmVycyhpbnRlcmVzdGluZ19hdHRycywgc3VtX2F0dHJzKTsKLQlpbnRl cmVzdGluZ19hdHRycyA9IGJtc19hZGRfbWVtYmVycyhpbnRlcmVzdGluZ19hdHRycywga2V5X2F0 dHJzKTsKLQlpbnRlcmVzdGluZ19hdHRycyA9IGJtc19hZGRfbWVtYmVycyhpbnRlcmVzdGluZ19h dHRycywgaWRfYXR0cnMpOwotCi0JYmxvY2sgPSBJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKG90 aWQpOwotCUlOSkVDVElPTl9QT0lOVCgiaGVhcF91cGRhdGUtYmVmb3JlLXBpbiIsIE5VTEwpOwot CWJ1ZmZlciA9IFJlYWRCdWZmZXIocmVsYXRpb24sIGJsb2NrKTsKLQlwYWdlID0gQnVmZmVyR2V0 UGFnZShidWZmZXIpOwotCi0JLyoKLQkgKiBCZWZvcmUgbG9ja2luZyB0aGUgYnVmZmVyLCBwaW4g dGhlIHZpc2liaWxpdHkgbWFwIHBhZ2UgaWYgaXQgYXBwZWFycyB0bwotCSAqIGJlIG5lY2Vzc2Fy eS4gIFNpbmNlIHdlIGhhdmVuJ3QgZ290IHRoZSBsb2NrIHlldCwgc29tZW9uZSBlbHNlIG1pZ2h0 IGJlCi0JICogaW4gdGhlIG1pZGRsZSBvZiBjaGFuZ2luZyB0aGlzLCBzbyB3ZSdsbCBuZWVkIHRv IHJlY2hlY2sgYWZ0ZXIgd2UgaGF2ZQotCSAqIHRoZSBsb2NrLgotCSAqLwotCWlmIChQYWdlSXNB bGxWaXNpYmxlKHBhZ2UpKQotCQl2aXNpYmlsaXR5bWFwX3BpbihyZWxhdGlvbiwgYmxvY2ssICZ2 bWJ1ZmZlcik7Ci0KLQlMb2NrQnVmZmVyKGJ1ZmZlciwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZFKTsK LQotCWxwID0gUGFnZUdldEl0ZW1JZChwYWdlLCBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcihv dGlkKSk7Ci0KLQkvKgotCSAqIFVzdWFsbHksIGEgYnVmZmVyIHBpbiBhbmQvb3Igc25hcHNob3Qg YmxvY2tzIHBydW5pbmcgb2Ygb3RpZCwgZW5zdXJpbmcKLQkgKiB3ZSBzZWUgTFBfTk9STUFMIGhl cmUuICBXaGVuIHRoZSBvdGlkIG9yaWdpbiBpcyBhIHN5c2NhY2hlLCB3ZSBtYXkgaGF2ZQotCSAq IG5laXRoZXIgYSBwaW4gbm9yIGEgc25hcHNob3QuICBIZW5jZSwgd2UgbWF5IHNlZSBvdGhlciBM UF8gc3RhdGVzLCBlYWNoCi0JICogb2Ygd2hpY2ggaW5kaWNhdGVzIGNvbmN1cnJlbnQgcHJ1bmlu Zy4KLQkgKgotCSAqIEZhaWxpbmcgd2l0aCBUTV9VcGRhdGVkIHdvdWxkIGJlIG1vc3QgYWNjdXJh dGUuICBIb3dldmVyLCB1bmxpa2Ugb3RoZXIKLQkgKiBUTV9VcGRhdGVkIHNjZW5hcmlvcywgd2Ug ZG9uJ3Qga25vdyB0aGUgc3VjY2Vzc29yIGN0aWQgaW4gTFBfVU5VU0VEIGFuZAotCSAqIExQX0RF QUQgY2FzZXMuICBXaGlsZSB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiBUTV9VcGRhdGVkIGFuZCBU TV9EZWxldGVkCi0JICogZG9lcyBtYXR0ZXIgdG8gU1FMIHN0YXRlbWVudHMgVVBEQVRFIGFuZCBN RVJHRSwgdGhvc2UgU1FMIHN0YXRlbWVudHMKLQkgKiBob2xkIGEgc25hcHNob3QgdGhhdCBlbnN1 cmVzIExQX05PUk1BTC4gIEhlbmNlLCB0aGUgY2hvaWNlIGJldHdlZW4KLQkgKiBUTV9VcGRhdGVk IGFuZCBUTV9EZWxldGVkIGFmZmVjdHMgb25seSB0aGUgd29yZGluZyBvZiBlcnJvciBtZXNzYWdl cy4KLQkgKiBTZXR0bGUgb24gVE1fRGVsZXRlZCwgZm9yIHR3byByZWFzb25zLiAgRmlyc3QsIGl0 IGF2b2lkcyBjb21wbGljYXRpbmcKLQkgKiB0aGUgc3BlY2lmaWNhdGlvbiBvZiB3aGVuIHRtZmQt PmN0aWQgaXMgdmFsaWQuICBTZWNvbmQsIGl0IGNyZWF0ZXMKLQkgKiBlcnJvciBsb2cgZXZpZGVu Y2UgdGhhdCB3ZSB0b29rIHRoaXMgYnJhbmNoLgotCSAqCi0JICogU2luY2UgaXQncyBwb3NzaWJs ZSB0byBzZWUgTFBfVU5VU0VEIGF0IG90aWQsIGl0J3MgYWxzbyBwb3NzaWJsZSB0byBzZWUKLQkg KiBMUF9OT1JNQUwgZm9yIGEgdHVwbGUgdGhhdCByZXBsYWNlZCBMUF9VTlVTRUQuICBJZiBpdCdz IGEgdHVwbGUgZm9yIGFuCi0JICogdW5yZWxhdGVkIHJvdywgd2UnbGwgZmFpbCB3aXRoICJkdXBs aWNhdGUga2V5IHZhbHVlIHZpb2xhdGVzIHVuaXF1ZSIuCi0JICogWFhYIGlmIG90aWQgaXMgdGhl IGxpdmUsIG5ld2VyIHZlcnNpb24gb2YgdGhlIG5ld3R1cCByb3csIHdlJ2xsIGRpc2NhcmQKLQkg KiBjaGFuZ2VzIG9yaWdpbmF0aW5nIGluIHZlcnNpb25zIG9mIHRoaXMgY2F0YWxvZyByb3cgYWZ0 ZXIgdGhlIHZlcnNpb24KLQkgKiB0aGUgY2FsbGVyIGdvdCBmcm9tIHN5c2NhY2hlLiAgU2VlIHN5 c2NhY2hlLXVwZGF0ZS1wcnVuZWQuc3BlYy4KLQkgKi8KLQlpZiAoIUl0ZW1JZElzTm9ybWFsKGxw KSkKLQl7Ci0JCUFzc2VydChSZWxhdGlvblN1cHBvcnRzU3lzQ2FjaGUoUmVsYXRpb25HZXRSZWxp ZChyZWxhdGlvbikpKTsKLQotCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7Ci0JCUFzc2Vy dCghaGF2ZV90dXBsZV9sb2NrKTsKLQkJaWYgKHZtYnVmZmVyICE9IEludmFsaWRCdWZmZXIpCi0J CQlSZWxlYXNlQnVmZmVyKHZtYnVmZmVyKTsKLQkJdG1mZC0+Y3RpZCA9ICpvdGlkOwotCQl0bWZk LT54bWF4ID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7Ci0JCXRtZmQtPmNtYXggPSBJbnZhbGlkQ29t bWFuZElkOwotCQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9Ob25lOwotCi0JCWJtc19mcmVlKGhvdF9h dHRycyk7Ci0JCWJtc19mcmVlKHN1bV9hdHRycyk7Ci0JCWJtc19mcmVlKGtleV9hdHRycyk7Ci0J CWJtc19mcmVlKGlkX2F0dHJzKTsKLQkJLyogbW9kaWZpZWRfYXR0cnMgbm90IHlldCBpbml0aWFs aXplZCAqLwotCQlibXNfZnJlZShpbnRlcmVzdGluZ19hdHRycyk7Ci0JCXJldHVybiBUTV9EZWxl dGVkOwotCX0KLQotCS8qCi0JICogRmlsbCBpbiBlbm91Z2ggZGF0YSBpbiBvbGR0dXAgZm9yIEhl YXBEZXRlcm1pbmVDb2x1bW5zSW5mbyB0byB3b3JrCi0JICogcHJvcGVybHkuCi0JICovCi0Jb2xk dHVwLnRfdGFibGVPaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKTsKLQlvbGR0dXAudF9k YXRhID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0ocGFnZSwgbHApOwotCW9sZHR1cC50 X2xlbiA9IEl0ZW1JZEdldExlbmd0aChscCk7Ci0Jb2xkdHVwLnRfc2VsZiA9ICpvdGlkOwotCi0J LyogdGhlIG5ldyB0dXBsZSBpcyByZWFkeSwgZXhjZXB0IGZvciB0aGlzOiAqLworCS8qIFRoZSBu ZXcgdHVwbGUgaXMgcmVhZHksIGV4Y2VwdCBmb3IgdGhpcyAqLwogCW5ld3R1cC0+dF90YWJsZU9p ZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pOwogCi0JLyoKLQkgKiBEZXRlcm1pbmUgY29s dW1ucyBtb2RpZmllZCBieSB0aGUgdXBkYXRlLiAgQWRkaXRpb25hbGx5LCBpZGVudGlmeQotCSAq IHdoZXRoZXIgYW55IG9mIHRoZSB1bm1vZGlmaWVkIHJlcGxpY2EgaWRlbnRpdHkga2V5IGF0dHJp YnV0ZXMgaW4gdGhlCi0JICogb2xkIHR1cGxlIGlzIGV4dGVybmFsbHkgc3RvcmVkIG9yIG5vdC4g IFRoaXMgaXMgcmVxdWlyZWQgYmVjYXVzZSBmb3IKLQkgKiBzdWNoIGF0dHJpYnV0ZXMgdGhlIGZs YXR0ZW5lZCB2YWx1ZSB3b24ndCBiZSBXQUwgbG9nZ2VkIGFzIHBhcnQgb2YgdGhlCi0JICogbmV3 IHR1cGxlIHNvIHdlIG11c3QgaW5jbHVkZSBpdCBhcyBwYXJ0IG9mIHRoZSBvbGRfa2V5X3R1cGxl LiAgU2VlCi0JICogRXh0cmFjdFJlcGxpY2FJZGVudGl0eS4KLQkgKi8KLQltb2RpZmllZF9hdHRy cyA9IEhlYXBEZXRlcm1pbmVDb2x1bW5zSW5mbyhyZWxhdGlvbiwgaW50ZXJlc3RpbmdfYXR0cnMs Ci0JCQkJCQkJCQkJCSAgaWRfYXR0cnMsICZvbGR0dXAsCi0JCQkJCQkJCQkJCSAgbmV3dHVwLCAm aWRfaGFzX2V4dGVybmFsKTsKLQogCS8qCiAJICogSWYgd2UncmUgbm90IHVwZGF0aW5nIGFueSAi a2V5IiBjb2x1bW4sIHdlIGNhbiBncmFiIGEgd2Vha2VyIGxvY2sgdHlwZS4KIAkgKiBUaGlzIGFs bG93cyBmb3IgbW9yZSBjb25jdXJyZW5jeSB3aGVuIHdlIGFyZSBydW5uaW5nIHNpbXVsdGFuZW91 c2x5CkBAIC0zNDY3LDcgKzMzMzQsNyBAQCBoZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwg Y29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLCBIZWFwVHVwbGUgbmV3dHVwLAogCSAqIGlzIHVw ZGF0ZXMgdGhhdCBkb24ndCBtYW5pcHVsYXRlIGtleSBjb2x1bW5zLCBub3QgdGhvc2UgdGhhdAog CSAqIHNlcmVuZGlwaXRvdXNseSBhcnJpdmUgYXQgdGhlIHNhbWUga2V5IHZhbHVlcy4KIAkgKi8K LQlpZiAoIWJtc19vdmVybGFwKG1vZGlmaWVkX2F0dHJzLCBrZXlfYXR0cnMpKQorCWlmICghYm1z X292ZXJsYXAobWl4X2F0dHJzLCBwa19hdHRycykpCiAJewogCQkqbG9ja21vZGUgPSBMb2NrVHVw bGVOb0tleUV4Y2x1c2l2ZTsKIAkJbXhhY3Rfc3RhdHVzID0gTXVsdGlYYWN0U3RhdHVzTm9LZXlV cGRhdGU7CkBAIC0zNDkxLDE3ICszMzU4LDEwIEBAIGhlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0 aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSBuZXd0dXAsCiAJCWtl eV9pbnRhY3QgPSBmYWxzZTsKIAl9CiAKLQkvKgotCSAqIE5vdGU6IGJleW9uZCB0aGlzIHBvaW50 LCB1c2Ugb2xkdHVwIG5vdCBvdGlkIHRvIHJlZmVyIHRvIG9sZCB0dXBsZS4KLQkgKiBvdGlkIG1h eSB2ZXJ5IHdlbGwgcG9pbnQgYXQgbmV3dHVwLT50X3NlbGYsIHdoaWNoIHdlIHdpbGwgb3Zlcndy aXRlCi0JICogd2l0aCB0aGUgbmV3IHR1cGxlJ3MgbG9jYXRpb24sIHNvIHRoZXJlJ3MgZ3JlYXQg cmlzayBvZiBjb25mdXNpb24gaWYgd2UKLQkgKiB1c2Ugb3RpZCBhbnltb3JlLgotCSAqLwotCiBs MjoKIAljaGVja2VkX2xvY2tlcnMgPSBmYWxzZTsKIAlsb2NrZXJfcmVtYWlucyA9IGZhbHNlOwot CXJlc3VsdCA9IEhlYXBUdXBsZVNhdGlzZmllc1VwZGF0ZSgmb2xkdHVwLCBjaWQsIGJ1ZmZlcik7 CisJcmVzdWx0ID0gSGVhcFR1cGxlU2F0aXNmaWVzVXBkYXRlKG9sZHR1cCwgY2lkLCBidWZmZXIp OwogCiAJLyogc2VlIGJlbG93IGFib3V0IHRoZSAibm8gd2FpdCIgY2FzZSAqLwogCUFzc2VydChy ZXN1bHQgIT0gVE1fQmVpbmdNb2RpZmllZCB8fCB3YWl0KTsKQEAgLTM1MzMsOCArMzM5Myw4IEBA IGwyOgogCQkgKi8KIAogCQkvKiBtdXN0IGNvcHkgc3RhdGUgZGF0YSBiZWZvcmUgdW5sb2NraW5n IGJ1ZmZlciAqLwotCQl4d2FpdCA9IEhlYXBUdXBsZUhlYWRlckdldFJhd1htYXgob2xkdHVwLnRf ZGF0YSk7Ci0JCWluZm9tYXNrID0gb2xkdHVwLnRfZGF0YS0+dF9pbmZvbWFzazsKKwkJeHdhaXQg PSBIZWFwVHVwbGVIZWFkZXJHZXRSYXdYbWF4KG9sZHR1cC0+dF9kYXRhKTsKKwkJaW5mb21hc2sg PSBvbGR0dXAtPnRfZGF0YS0+dF9pbmZvbWFzazsKIAogCQkvKgogCQkgKiBOb3cgd2UgaGF2ZSB0 byBkbyBzb21ldGhpbmcgYWJvdXQgdGhlIGV4aXN0aW5nIGxvY2tlci4gIElmIGl0J3MgYQpAQCAt MzU3NCwxMyArMzQzNCwxMiBAQCBsMjoKIAkJCQkgKiByZXF1ZXN0aW5nIGEgbG9jayBhbmQgYWxy ZWFkeSBoYXZlIG9uZTsgYXZvaWRzIGRlYWRsb2NrKS4KIAkJCQkgKi8KIAkJCQlpZiAoIWN1cnJl bnRfaXNfbWVtYmVyKQotCQkJCQloZWFwX2FjcXVpcmVfdHVwbG9jayhyZWxhdGlvbiwgJihvbGR0 dXAudF9zZWxmKSwgKmxvY2ttb2RlLAorCQkJCQloZWFwX2FjcXVpcmVfdHVwbG9jayhyZWxhdGlv biwgJm9sZHR1cC0+dF9zZWxmLCAqbG9ja21vZGUsCiAJCQkJCQkJCQkJIExvY2tXYWl0QmxvY2ss ICZoYXZlX3R1cGxlX2xvY2spOwogCiAJCQkJLyogd2FpdCBmb3IgbXVsdGl4YWN0ICovCiAJCQkJ TXVsdGlYYWN0SWRXYWl0KChNdWx0aVhhY3RJZCkgeHdhaXQsIG14YWN0X3N0YXR1cywgaW5mb21h c2ssCi0JCQkJCQkJCXJlbGF0aW9uLCAmb2xkdHVwLnRfc2VsZiwgWExUV19VcGRhdGUsCi0JCQkJ CQkJCSZyZW1haW4pOworCQkJCQkJCQlyZWxhdGlvbiwgJm9sZHR1cC0+dF9zZWxmLCBYTFRXX1Vw ZGF0ZSwgJnJlbWFpbik7CiAJCQkJY2hlY2tlZF9sb2NrZXJzID0gdHJ1ZTsKIAkJCQlsb2NrZXJf cmVtYWlucyA9IHJlbWFpbiAhPSAwOwogCQkJCUxvY2tCdWZmZXIoYnVmZmVyLCBCVUZGRVJfTE9D S19FWENMVVNJVkUpOwpAQCAtMzU5MCw5ICszNDQ5LDkgQEAgbDI6CiAJCQkJICogY291bGQgdXBk YXRlIHRoaXMgdHVwbGUgYmVmb3JlIHdlIGdldCB0byB0aGlzIHBvaW50LiAgQ2hlY2sKIAkJCQkg KiBmb3IgeG1heCBjaGFuZ2UsIGFuZCBzdGFydCBvdmVyIGlmIHNvLgogCQkJCSAqLwotCQkJCWlm ICh4bWF4X2luZm9tYXNrX2NoYW5nZWQob2xkdHVwLnRfZGF0YS0+dF9pbmZvbWFzaywKKwkJCQlp ZiAoeG1heF9pbmZvbWFza19jaGFuZ2VkKG9sZHR1cC0+dF9kYXRhLT50X2luZm9tYXNrLAogCQkJ CQkJCQkJCSAgaW5mb21hc2spIHx8Ci0JCQkJCSFUcmFuc2FjdGlvbklkRXF1YWxzKEhlYXBUdXBs ZUhlYWRlckdldFJhd1htYXgob2xkdHVwLnRfZGF0YSksCisJCQkJCSFUcmFuc2FjdGlvbklkRXF1 YWxzKEhlYXBUdXBsZUhlYWRlckdldFJhd1htYXgob2xkdHVwLT50X2RhdGEpLAogCQkJCQkJCQkJ CSB4d2FpdCkpCiAJCQkJCWdvdG8gbDI7CiAJCQl9CkBAIC0zNjE3LDggKzM0NzYsOCBAQCBsMjoK IAkJCSAqIGJlZm9yZSB0aGlzIG9uZSwgd2hpY2ggYXJlIGltcG9ydGFudCB0byBrZWVwIGluIGNh c2UgdGhpcwogCQkJICogc3VieGFjdCBhYm9ydHMuCiAJCQkgKi8KLQkJCWlmICghSEVBUF9YTUFY X0lTX0xPQ0tFRF9PTkxZKG9sZHR1cC50X2RhdGEtPnRfaW5mb21hc2spKQotCQkJCXVwZGF0ZV94 YWN0ID0gSGVhcFR1cGxlR2V0VXBkYXRlWGlkKG9sZHR1cC50X2RhdGEpOworCQkJaWYgKCFIRUFQ X1hNQVhfSVNfTE9DS0VEX09OTFkob2xkdHVwLT50X2RhdGEtPnRfaW5mb21hc2spKQorCQkJCXVw ZGF0ZV94YWN0ID0gSGVhcFR1cGxlR2V0VXBkYXRlWGlkKG9sZHR1cC0+dF9kYXRhKTsKIAkJCWVs c2UKIAkJCQl1cGRhdGVfeGFjdCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCkBAIC0zNjU5LDkg KzM1MTgsOSBAQCBsMjoKIAkJCSAqIGxvY2suCiAJCQkgKi8KIAkJCUxvY2tCdWZmZXIoYnVmZmVy LCBCVUZGRVJfTE9DS19VTkxPQ0spOwotCQkJaGVhcF9hY3F1aXJlX3R1cGxvY2socmVsYXRpb24s ICYob2xkdHVwLnRfc2VsZiksICpsb2NrbW9kZSwKKwkJCWhlYXBfYWNxdWlyZV90dXBsb2NrKHJl bGF0aW9uLCAmb2xkdHVwLT50X3NlbGYsICpsb2NrbW9kZSwKIAkJCQkJCQkJIExvY2tXYWl0Qmxv Y2ssICZoYXZlX3R1cGxlX2xvY2spOwotCQkJWGFjdExvY2tUYWJsZVdhaXQoeHdhaXQsIHJlbGF0 aW9uLCAmb2xkdHVwLnRfc2VsZiwKKwkJCVhhY3RMb2NrVGFibGVXYWl0KHh3YWl0LCByZWxhdGlv biwgJm9sZHR1cC0+dF9zZWxmLAogCQkJCQkJCSAgWExUV19VcGRhdGUpOwogCQkJY2hlY2tlZF9s b2NrZXJzID0gdHJ1ZTsKIAkJCUxvY2tCdWZmZXIoYnVmZmVyLCBCVUZGRVJfTE9DS19FWENMVVNJ VkUpOwpAQCAtMzY3MSwyMCArMzUzMCwyMCBAQCBsMjoKIAkJCSAqIG90aGVyIHhhY3QgY291bGQg dXBkYXRlIHRoaXMgdHVwbGUgYmVmb3JlIHdlIGdldCB0byB0aGlzIHBvaW50LgogCQkJICogQ2hl Y2sgZm9yIHhtYXggY2hhbmdlLCBhbmQgc3RhcnQgb3ZlciBpZiBzby4KIAkJCSAqLwotCQkJaWYg KHhtYXhfaW5mb21hc2tfY2hhbmdlZChvbGR0dXAudF9kYXRhLT50X2luZm9tYXNrLCBpbmZvbWFz aykgfHwKKwkJCWlmICh4bWF4X2luZm9tYXNrX2NoYW5nZWQob2xkdHVwLT50X2RhdGEtPnRfaW5m b21hc2ssIGluZm9tYXNrKSB8fAogCQkJCSFUcmFuc2FjdGlvbklkRXF1YWxzKHh3YWl0LAotCQkJ CQkJCQkJIEhlYXBUdXBsZUhlYWRlckdldFJhd1htYXgob2xkdHVwLnRfZGF0YSkpKQorCQkJCQkJ CQkJIEhlYXBUdXBsZUhlYWRlckdldFJhd1htYXgob2xkdHVwLT50X2RhdGEpKSkKIAkJCQlnb3Rv IGwyOwogCiAJCQkvKiBPdGhlcndpc2UgY2hlY2sgaWYgaXQgY29tbWl0dGVkIG9yIGFib3J0ZWQg Ki8KLQkJCVVwZGF0ZVhtYXhIaW50Qml0cyhvbGR0dXAudF9kYXRhLCBidWZmZXIsIHh3YWl0KTsK LQkJCWlmIChvbGR0dXAudF9kYXRhLT50X2luZm9tYXNrICYgSEVBUF9YTUFYX0lOVkFMSUQpCisJ CQlVcGRhdGVYbWF4SGludEJpdHMob2xkdHVwLT50X2RhdGEsIGJ1ZmZlciwgeHdhaXQpOworCQkJ aWYgKG9sZHR1cC0+dF9kYXRhLT50X2luZm9tYXNrICYgSEVBUF9YTUFYX0lOVkFMSUQpCiAJCQkJ Y2FuX2NvbnRpbnVlID0gdHJ1ZTsKIAkJfQogCiAJCWlmIChjYW5fY29udGludWUpCiAJCQlyZXN1 bHQgPSBUTV9PazsKLQkJZWxzZSBpZiAoIUl0ZW1Qb2ludGVyRXF1YWxzKCZvbGR0dXAudF9zZWxm LCAmb2xkdHVwLnRfZGF0YS0+dF9jdGlkKSkKKwkJZWxzZSBpZiAoIUl0ZW1Qb2ludGVyRXF1YWxz KCZvbGR0dXAtPnRfc2VsZiwgJm9sZHR1cC0+dF9kYXRhLT50X2N0aWQpKQogCQkJcmVzdWx0ID0g VE1fVXBkYXRlZDsKIAkJZWxzZQogCQkJcmVzdWx0ID0gVE1fRGVsZXRlZDsKQEAgLTM2OTcsMzkg KzM1NTYsMzMgQEAgbDI6CiAJCQkgICByZXN1bHQgPT0gVE1fVXBkYXRlZCB8fAogCQkJICAgcmVz dWx0ID09IFRNX0RlbGV0ZWQgfHwKIAkJCSAgIHJlc3VsdCA9PSBUTV9CZWluZ01vZGlmaWVkKTsK LQkJQXNzZXJ0KCEob2xkdHVwLnRfZGF0YS0+dF9pbmZvbWFzayAmIEhFQVBfWE1BWF9JTlZBTElE KSk7CisJCUFzc2VydCghKG9sZHR1cC0+dF9kYXRhLT50X2luZm9tYXNrICYgSEVBUF9YTUFYX0lO VkFMSUQpKTsKIAkJQXNzZXJ0KHJlc3VsdCAhPSBUTV9VcGRhdGVkIHx8Ci0JCQkgICAhSXRlbVBv aW50ZXJFcXVhbHMoJm9sZHR1cC50X3NlbGYsICZvbGR0dXAudF9kYXRhLT50X2N0aWQpKTsKKwkJ CSAgICFJdGVtUG9pbnRlckVxdWFscygmb2xkdHVwLT50X3NlbGYsICZvbGR0dXAtPnRfZGF0YS0+ dF9jdGlkKSk7CiAJfQogCiAJaWYgKGNyb3NzY2hlY2sgIT0gSW52YWxpZFNuYXBzaG90ICYmIHJl c3VsdCA9PSBUTV9PaykKIAl7CiAJCS8qIFBlcmZvcm0gYWRkaXRpb25hbCBjaGVjayBmb3IgdHJh bnNhY3Rpb24tc25hcHNob3QgbW9kZSBSSSB1cGRhdGVzICovCi0JCWlmICghSGVhcFR1cGxlU2F0 aXNmaWVzVmlzaWJpbGl0eSgmb2xkdHVwLCBjcm9zc2NoZWNrLCBidWZmZXIpKQorCQlpZiAoIUhl YXBUdXBsZVNhdGlzZmllc1Zpc2liaWxpdHkob2xkdHVwLCBjcm9zc2NoZWNrLCBidWZmZXIpKQog CQkJcmVzdWx0ID0gVE1fVXBkYXRlZDsKIAl9CiAKIAlpZiAocmVzdWx0ICE9IFRNX09rKQogCXsK LQkJdG1mZC0+Y3RpZCA9IG9sZHR1cC50X2RhdGEtPnRfY3RpZDsKLQkJdG1mZC0+eG1heCA9IEhl YXBUdXBsZUhlYWRlckdldFVwZGF0ZVhpZChvbGR0dXAudF9kYXRhKTsKKwkJdG1mZC0+Y3RpZCA9 IG9sZHR1cC0+dF9kYXRhLT50X2N0aWQ7CisJCXRtZmQtPnhtYXggPSBIZWFwVHVwbGVIZWFkZXJH ZXRVcGRhdGVYaWQob2xkdHVwLT50X2RhdGEpOwogCQlpZiAocmVzdWx0ID09IFRNX1NlbGZNb2Rp ZmllZCkKLQkJCXRtZmQtPmNtYXggPSBIZWFwVHVwbGVIZWFkZXJHZXRDbWF4KG9sZHR1cC50X2Rh dGEpOworCQkJdG1mZC0+Y21heCA9IEhlYXBUdXBsZUhlYWRlckdldENtYXgob2xkdHVwLT50X2Rh dGEpOwogCQllbHNlCiAJCQl0bWZkLT5jbWF4ID0gSW52YWxpZENvbW1hbmRJZDsKIAkJVW5sb2Nr UmVsZWFzZUJ1ZmZlcihidWZmZXIpOwogCQlpZiAoaGF2ZV90dXBsZV9sb2NrKQotCQkJVW5sb2Nr VHVwbGVUdXBsb2NrKHJlbGF0aW9uLCAmKG9sZHR1cC50X3NlbGYpLCAqbG9ja21vZGUpOwotCQlp ZiAodm1idWZmZXIgIT0gSW52YWxpZEJ1ZmZlcikKLQkJCVJlbGVhc2VCdWZmZXIodm1idWZmZXIp OworCQkJVW5sb2NrVHVwbGVUdXBsb2NrKHJlbGF0aW9uLCAmb2xkdHVwLT50X3NlbGYsICpsb2Nr bW9kZSk7CisJCWlmICgqdm1idWZmZXIgIT0gSW52YWxpZEJ1ZmZlcikKKwkJCVJlbGVhc2VCdWZm ZXIoKnZtYnVmZmVyKTsKIAkJKnVwZGF0ZV9pbmRleGVzID0gVFVfTm9uZTsKIAotCQlibXNfZnJl ZShob3RfYXR0cnMpOwotCQlibXNfZnJlZShzdW1fYXR0cnMpOwotCQlibXNfZnJlZShrZXlfYXR0 cnMpOwotCQlibXNfZnJlZShpZF9hdHRycyk7Ci0JCWJtc19mcmVlKG1vZGlmaWVkX2F0dHJzKTsK LQkJYm1zX2ZyZWUoaW50ZXJlc3RpbmdfYXR0cnMpOwogCQlyZXR1cm4gcmVzdWx0OwogCX0KIApA QCAtMzc0MiwxMCArMzU5NSwxMCBAQCBsMjoKIAkgKiB0dXBsZSBoYXMgYmVlbiBsb2NrZWQgb3Ig dXBkYXRlZCB1bmRlciB1cywgYnV0IGhvcGVmdWxseSBpdCB3b24ndAogCSAqIGhhcHBlbiB2ZXJ5 IG9mdGVuLgogCSAqLwotCWlmICh2bWJ1ZmZlciA9PSBJbnZhbGlkQnVmZmVyICYmIFBhZ2VJc0Fs bFZpc2libGUocGFnZSkpCisJaWYgKCp2bWJ1ZmZlciA9PSBJbnZhbGlkQnVmZmVyICYmIFBhZ2VJ c0FsbFZpc2libGUocGFnZSkpCiAJewogCQlMb2NrQnVmZmVyKGJ1ZmZlciwgQlVGRkVSX0xPQ0tf VU5MT0NLKTsKLQkJdmlzaWJpbGl0eW1hcF9waW4ocmVsYXRpb24sIGJsb2NrLCAmdm1idWZmZXIp OworCQl2aXNpYmlsaXR5bWFwX3BpbihyZWxhdGlvbiwgYmxvY2ssIHZtYnVmZmVyKTsKIAkJTG9j a0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7CiAJCWdvdG8gbDI7CiAJfQpA QCAtMzc1Niw5ICszNjA5LDkgQEAgbDI6CiAJICogSWYgdGhlIHR1cGxlIHdlJ3JlIHVwZGF0aW5n IGlzIGxvY2tlZCwgd2UgbmVlZCB0byBwcmVzZXJ2ZSB0aGUgbG9ja2luZwogCSAqIGluZm8gaW4g dGhlIG9sZCB0dXBsZSdzIFhtYXguICBQcmVwYXJlIGEgbmV3IFhtYXggdmFsdWUgZm9yIHRoaXMu CiAJICovCi0JY29tcHV0ZV9uZXdfeG1heF9pbmZvbWFzayhIZWFwVHVwbGVIZWFkZXJHZXRSYXdY bWF4KG9sZHR1cC50X2RhdGEpLAotCQkJCQkJCSAgb2xkdHVwLnRfZGF0YS0+dF9pbmZvbWFzaywK LQkJCQkJCQkgIG9sZHR1cC50X2RhdGEtPnRfaW5mb21hc2syLAorCWNvbXB1dGVfbmV3X3htYXhf aW5mb21hc2soSGVhcFR1cGxlSGVhZGVyR2V0UmF3WG1heChvbGR0dXAtPnRfZGF0YSksCisJCQkJ CQkJICBvbGR0dXAtPnRfZGF0YS0+dF9pbmZvbWFzaywKKwkJCQkJCQkgIG9sZHR1cC0+dF9kYXRh LT50X2luZm9tYXNrMiwKIAkJCQkJCQkgIHhpZCwgKmxvY2ttb2RlLCB0cnVlLAogCQkJCQkJCSAg JnhtYXhfb2xkX3R1cGxlLCAmaW5mb21hc2tfb2xkX3R1cGxlLAogCQkJCQkJCSAgJmluZm9tYXNr Ml9vbGRfdHVwbGUpOwpAQCAtMzc3MCwxMiArMzYyMywxMiBAQCBsMjoKIAkgKiB0dXBsZS4gIChJ biByYXJlIGNhc2VzIHRoYXQgbWlnaHQgYWxzbyBiZSBJbnZhbGlkVHJhbnNhY3Rpb25JZCBhbmQg eWV0CiAJICogbm90IGhhdmUgdGhlIEhFQVBfWE1BWF9JTlZBTElEIGJpdCBzZXQ7IHRoYXQncyBm aW5lLikKIAkgKi8KLQlpZiAoKG9sZHR1cC50X2RhdGEtPnRfaW5mb21hc2sgJiBIRUFQX1hNQVhf SU5WQUxJRCkgfHwKLQkJSEVBUF9MT0NLRURfVVBHUkFERUQob2xkdHVwLnRfZGF0YS0+dF9pbmZv bWFzaykgfHwKKwlpZiAoKG9sZHR1cC0+dF9kYXRhLT50X2luZm9tYXNrICYgSEVBUF9YTUFYX0lO VkFMSUQpIHx8CisJCUhFQVBfTE9DS0VEX1VQR1JBREVEKG9sZHR1cC0+dF9kYXRhLT50X2luZm9t YXNrKSB8fAogCQkoY2hlY2tlZF9sb2NrZXJzICYmICFsb2NrZXJfcmVtYWlucykpCiAJCXhtYXhf bmV3X3R1cGxlID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAJZWxzZQotCQl4bWF4X25ld190dXBs ZSA9IEhlYXBUdXBsZUhlYWRlckdldFJhd1htYXgob2xkdHVwLnRfZGF0YSk7CisJCXhtYXhfbmV3 X3R1cGxlID0gSGVhcFR1cGxlSGVhZGVyR2V0UmF3WG1heChvbGR0dXAtPnRfZGF0YSk7CiAKIAlp ZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhtYXhfbmV3X3R1cGxlKSkKIAl7CkBAIC0zNzkwLDcg KzM2NDMsNyBAQCBsMjoKIAkJICogTm90ZSB0aGF0IHNpbmNlIHdlJ3JlIGRvaW5nIGFuIHVwZGF0 ZSwgdGhlIG9ubHkgcG9zc2liaWxpdHkgaXMgdGhhdAogCQkgKiB0aGUgbG9ja2VycyBoYWQgRk9S IEtFWSBTSEFSRSBsb2NrLgogCQkgKi8KLQkJaWYgKG9sZHR1cC50X2RhdGEtPnRfaW5mb21hc2sg JiBIRUFQX1hNQVhfSVNfTVVMVEkpCisJCWlmIChvbGR0dXAtPnRfZGF0YS0+dF9pbmZvbWFzayAm IEhFQVBfWE1BWF9JU19NVUxUSSkKIAkJewogCQkJR2V0TXVsdGlYYWN0SWRIaW50Qml0cyh4bWF4 X25ld190dXBsZSwgJmluZm9tYXNrX25ld190dXBsZSwKIAkJCQkJCQkJICAgJmluZm9tYXNrMl9u ZXdfdHVwbGUpOwpAQCAtMzgxOCw3ICszNjcxLDcgQEAgbDI6CiAJICogUmVwbGFjZSBjaWQgd2l0 aCBhIGNvbWJvIENJRCBpZiBuZWNlc3NhcnkuICBOb3RlIHRoYXQgd2UgYWxyZWFkeSBwdXQKIAkg KiB0aGUgcGxhaW4gY2lkIGludG8gdGhlIG5ldyB0dXBsZS4KIAkgKi8KLQlIZWFwVHVwbGVIZWFk ZXJBZGp1c3RDbWF4KG9sZHR1cC50X2RhdGEsICZjaWQsICZpc2NvbWJvKTsKKwlIZWFwVHVwbGVI ZWFkZXJBZGp1c3RDbWF4KG9sZHR1cC0+dF9kYXRhLCAmY2lkLCAmaXNjb21ibyk7CiAKIAkvKgog CSAqIElmIHRoZSB0b2FzdGVyIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCwgT1IgaWYgdGhlIG5ldyB0 dXBsZSB3aWxsIG5vdCBmaXQKQEAgLTM4MzUsMTIgKzM2ODgsMTIgQEAgbDI6CiAJCXJlbGF0aW9u LT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9NQVRWSUVXKQogCXsKIAkJLyogdG9hc3QgdGFi bGUgZW50cmllcyBzaG91bGQgbmV2ZXIgYmUgcmVjdXJzaXZlbHkgdG9hc3RlZCAqLwotCQlBc3Nl cnQoIUhlYXBUdXBsZUhhc0V4dGVybmFsKCZvbGR0dXApKTsKKwkJQXNzZXJ0KCFIZWFwVHVwbGVI YXNFeHRlcm5hbChvbGR0dXApKTsKIAkJQXNzZXJ0KCFIZWFwVHVwbGVIYXNFeHRlcm5hbChuZXd0 dXApKTsKIAkJbmVlZF90b2FzdCA9IGZhbHNlOwogCX0KIAllbHNlCi0JCW5lZWRfdG9hc3QgPSAo SGVhcFR1cGxlSGFzRXh0ZXJuYWwoJm9sZHR1cCkgfHwKKwkJbmVlZF90b2FzdCA9IChIZWFwVHVw bGVIYXNFeHRlcm5hbChvbGR0dXApIHx8CiAJCQkJCSAgSGVhcFR1cGxlSGFzRXh0ZXJuYWwobmV3 dHVwKSB8fAogCQkJCQkgIG5ld3R1cC0+dF9sZW4gPiBUT0FTVF9UVVBMRV9USFJFU0hPTEQpOwog CkBAIC0zODczLDkgKzM3MjYsOSBAQCBsMjoKIAkJICogdXBkYXRpbmcsIGJlY2F1c2UgdGhlIHBv dGVudGlhbGx5IGNyZWF0ZWQgbXVsdGl4YWN0IHdvdWxkIG90aGVyd2lzZQogCQkgKiBiZSB3cm9u Zy4KIAkJICovCi0JCWNvbXB1dGVfbmV3X3htYXhfaW5mb21hc2soSGVhcFR1cGxlSGVhZGVyR2V0 UmF3WG1heChvbGR0dXAudF9kYXRhKSwKLQkJCQkJCQkJICBvbGR0dXAudF9kYXRhLT50X2luZm9t YXNrLAotCQkJCQkJCQkgIG9sZHR1cC50X2RhdGEtPnRfaW5mb21hc2syLAorCQljb21wdXRlX25l d194bWF4X2luZm9tYXNrKEhlYXBUdXBsZUhlYWRlckdldFJhd1htYXgob2xkdHVwLT50X2RhdGEp LAorCQkJCQkJCQkgIG9sZHR1cC0+dF9kYXRhLT50X2luZm9tYXNrLAorCQkJCQkJCQkgIG9sZHR1 cC0+dF9kYXRhLT50X2luZm9tYXNrMiwKIAkJCQkJCQkJICB4aWQsICpsb2NrbW9kZSwgZmFsc2Us CiAJCQkJCQkJCSAgJnhtYXhfbG9ja19vbGRfdHVwbGUsICZpbmZvbWFza19sb2NrX29sZF90dXBs ZSwKIAkJCQkJCQkJICAmaW5mb21hc2syX2xvY2tfb2xkX3R1cGxlKTsKQEAgLTM4ODUsMTggKzM3 MzgsMTggQEAgbDI6CiAJCVNUQVJUX0NSSVRfU0VDVElPTigpOwogCiAJCS8qIENsZWFyIG9ic29s ZXRlIHZpc2liaWxpdHkgZmxhZ3MgLi4uICovCi0JCW9sZHR1cC50X2RhdGEtPnRfaW5mb21hc2sg Jj0gfihIRUFQX1hNQVhfQklUUyB8IEhFQVBfTU9WRUQpOwotCQlvbGR0dXAudF9kYXRhLT50X2lu Zm9tYXNrMiAmPSB+SEVBUF9LRVlTX1VQREFURUQ7Ci0JCUhlYXBUdXBsZUNsZWFySG90VXBkYXRl ZCgmb2xkdHVwKTsKKwkJb2xkdHVwLT50X2RhdGEtPnRfaW5mb21hc2sgJj0gfihIRUFQX1hNQVhf QklUUyB8IEhFQVBfTU9WRUQpOworCQlvbGR0dXAtPnRfZGF0YS0+dF9pbmZvbWFzazIgJj0gfkhF QVBfS0VZU19VUERBVEVEOworCQlIZWFwVHVwbGVDbGVhckhvdFVwZGF0ZWQob2xkdHVwKTsKIAkJ LyogLi4uIGFuZCBzdG9yZSBpbmZvIGFib3V0IHRyYW5zYWN0aW9uIHVwZGF0aW5nIHRoaXMgdHVw bGUgKi8KIAkJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhtYXhfbG9ja19vbGRfdHVwbGUp KTsKLQkJSGVhcFR1cGxlSGVhZGVyU2V0WG1heChvbGR0dXAudF9kYXRhLCB4bWF4X2xvY2tfb2xk X3R1cGxlKTsKLQkJb2xkdHVwLnRfZGF0YS0+dF9pbmZvbWFzayB8PSBpbmZvbWFza19sb2NrX29s ZF90dXBsZTsKLQkJb2xkdHVwLnRfZGF0YS0+dF9pbmZvbWFzazIgfD0gaW5mb21hc2syX2xvY2tf b2xkX3R1cGxlOwotCQlIZWFwVHVwbGVIZWFkZXJTZXRDbWF4KG9sZHR1cC50X2RhdGEsIGNpZCwg aXNjb21ibyk7CisJCUhlYXBUdXBsZUhlYWRlclNldFhtYXgob2xkdHVwLT50X2RhdGEsIHhtYXhf bG9ja19vbGRfdHVwbGUpOworCQlvbGR0dXAtPnRfZGF0YS0+dF9pbmZvbWFzayB8PSBpbmZvbWFz a19sb2NrX29sZF90dXBsZTsKKwkJb2xkdHVwLT50X2RhdGEtPnRfaW5mb21hc2syIHw9IGluZm9t YXNrMl9sb2NrX29sZF90dXBsZTsKKwkJSGVhcFR1cGxlSGVhZGVyU2V0Q21heChvbGR0dXAtPnRf ZGF0YSwgY2lkLCBpc2NvbWJvKTsKIAogCQkvKiB0ZW1wb3JhcmlseSBtYWtlIGl0IGxvb2sgbm90 LXVwZGF0ZWQsIGJ1dCBsb2NrZWQgKi8KLQkJb2xkdHVwLnRfZGF0YS0+dF9jdGlkID0gb2xkdHVw LnRfc2VsZjsKKwkJb2xkdHVwLT50X2RhdGEtPnRfY3RpZCA9IG9sZHR1cC0+dF9zZWxmOwogCiAJ CS8qCiAJCSAqIENsZWFyIGFsbC1mcm96ZW4gYml0IG9uIHZpc2liaWxpdHkgbWFwIGlmIG5lZWRl ZC4gV2UgY291bGQKQEAgLTM5MDUsNyArMzc1OCw3IEBAIGwyOgogCQkgKiB3b3J0aHdoaWxlLgog CQkgKi8KIAkJaWYgKFBhZ2VJc0FsbFZpc2libGUocGFnZSkgJiYKLQkJCXZpc2liaWxpdHltYXBf Y2xlYXIocmVsYXRpb24sIGJsb2NrLCB2bWJ1ZmZlciwKKwkJCXZpc2liaWxpdHltYXBfY2xlYXIo cmVsYXRpb24sIGJsb2NrLCAqdm1idWZmZXIsCiAJCQkJCQkJCVZJU0lCSUxJVFlNQVBfQUxMX0ZS T1pFTikpCiAJCQljbGVhcmVkX2FsbF9mcm96ZW4gPSB0cnVlOwogCkBAIC0zOTE5LDEwICszNzcy LDEwIEBAIGwyOgogCQkJWExvZ0JlZ2luSW5zZXJ0KCk7CiAJCQlYTG9nUmVnaXN0ZXJCdWZmZXIo MCwgYnVmZmVyLCBSRUdCVUZfU1RBTkRBUkQpOwogCi0JCQl4bHJlYy5vZmZudW0gPSBJdGVtUG9p bnRlckdldE9mZnNldE51bWJlcigmb2xkdHVwLnRfc2VsZik7CisJCQl4bHJlYy5vZmZudW0gPSBJ dGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmb2xkdHVwLT50X3NlbGYpOwogCQkJeGxyZWMueG1h eCA9IHhtYXhfbG9ja19vbGRfdHVwbGU7Ci0JCQl4bHJlYy5pbmZvYml0c19zZXQgPSBjb21wdXRl X2luZm9iaXRzKG9sZHR1cC50X2RhdGEtPnRfaW5mb21hc2ssCi0JCQkJCQkJCQkJCQkgIG9sZHR1 cC50X2RhdGEtPnRfaW5mb21hc2syKTsKKwkJCXhscmVjLmluZm9iaXRzX3NldCA9IGNvbXB1dGVf aW5mb2JpdHMob2xkdHVwLT50X2RhdGEtPnRfaW5mb21hc2ssCisJCQkJCQkJCQkJCQkgIG9sZHR1 cC0+dF9kYXRhLT50X2luZm9tYXNrMik7CiAJCQl4bHJlYy5mbGFncyA9CiAJCQkJY2xlYXJlZF9h bGxfZnJvemVuID8gWExIX0xPQ0tfQUxMX0ZST1pFTl9DTEVBUkVEIDogMDsKIAkJCVhMb2dSZWdp c3RlckRhdGEoJnhscmVjLCBTaXplT2ZIZWFwTG9jayk7CkBAIC0zOTQ0LDcgKzM3OTcsNyBAQCBs MjoKIAkJaWYgKG5lZWRfdG9hc3QpCiAJCXsKIAkJCS8qIE5vdGUgd2UgYWx3YXlzIHVzZSBXQUwg YW5kIEZTTSBkdXJpbmcgdXBkYXRlcyAqLwotCQkJaGVhcHR1cCA9IGhlYXBfdG9hc3RfaW5zZXJ0 X29yX3VwZGF0ZShyZWxhdGlvbiwgbmV3dHVwLCAmb2xkdHVwLCAwKTsKKwkJCWhlYXB0dXAgPSBo ZWFwX3RvYXN0X2luc2VydF9vcl91cGRhdGUocmVsYXRpb24sIG5ld3R1cCwgb2xkdHVwLCAwKTsK IAkJCW5ld3R1cHNpemUgPSBNQVhBTElHTihoZWFwdHVwLT50X2xlbik7CiAJCX0KIAkJZWxzZQpA QCAtMzk4MCwyMCArMzgzMywyMCBAQCBsMjoKIAkJCQkvKiBJdCBkb2Vzbid0IGZpdCwgbXVzdCB1 c2UgUmVsYXRpb25HZXRCdWZmZXJGb3JUdXBsZS4gKi8KIAkJCQluZXdidWYgPSBSZWxhdGlvbkdl dEJ1ZmZlckZvclR1cGxlKHJlbGF0aW9uLCBoZWFwdHVwLT50X2xlbiwKIAkJCQkJCQkJCQkJCSAg IGJ1ZmZlciwgMCwgTlVMTCwKLQkJCQkJCQkJCQkJCSAgICZ2bWJ1ZmZlcl9uZXcsICZ2bWJ1ZmZl ciwKKwkJCQkJCQkJCQkJCSAgICZ2bWJ1ZmZlcl9uZXcsIHZtYnVmZmVyLAogCQkJCQkJCQkJCQkJ ICAgMCk7CiAJCQkJLyogV2UncmUgYWxsIGRvbmUuICovCiAJCQkJYnJlYWs7CiAJCQl9CiAJCQkv KiBBY3F1aXJlIFZNIHBhZ2UgcGluIGlmIG5lZWRlZCBhbmQgd2UgZG9uJ3QgaGF2ZSBpdC4gKi8K LQkJCWlmICh2bWJ1ZmZlciA9PSBJbnZhbGlkQnVmZmVyICYmIFBhZ2VJc0FsbFZpc2libGUocGFn ZSkpCi0JCQkJdmlzaWJpbGl0eW1hcF9waW4ocmVsYXRpb24sIGJsb2NrLCAmdm1idWZmZXIpOwor CQkJaWYgKCp2bWJ1ZmZlciA9PSBJbnZhbGlkQnVmZmVyICYmIFBhZ2VJc0FsbFZpc2libGUocGFn ZSkpCisJCQkJdmlzaWJpbGl0eW1hcF9waW4ocmVsYXRpb24sIGJsb2NrLCB2bWJ1ZmZlcik7CiAJ CQkvKiBSZS1hY3F1aXJlIHRoZSBsb2NrIG9uIHRoZSBvbGQgdHVwbGUncyBwYWdlLiAqLwogCQkJ TG9ja0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7CiAJCQkvKiBSZS1jaGVj ayB1c2luZyB0aGUgdXAtdG8tZGF0ZSBmcmVlIHNwYWNlICovCiAJCQlwYWdlZnJlZSA9IFBhZ2VH ZXRIZWFwRnJlZVNwYWNlKHBhZ2UpOwogCQkJaWYgKG5ld3R1cHNpemUgPiBwYWdlZnJlZSB8fAot CQkJCSh2bWJ1ZmZlciA9PSBJbnZhbGlkQnVmZmVyICYmIFBhZ2VJc0FsbFZpc2libGUocGFnZSkp KQorCQkJCSgqdm1idWZmZXIgPT0gSW52YWxpZEJ1ZmZlciAmJiBQYWdlSXNBbGxWaXNpYmxlKHBh Z2UpKSkKIAkJCXsKIAkJCQkvKgogCQkJCSAqIFJhdHMsIGl0IGRvZXNuJ3QgZml0IGFueW1vcmUs IG9yIHNvbWVib2R5IGp1c3Qgbm93IHNldCB0aGUKQEAgLTQwMzEsNyArMzg4NCw3IEBAIGwyOgog CSAqIHdpbGwgaW5jbHVkZSBjaGVja2luZyB0aGUgcmVsYXRpb24gbGV2ZWwsIHRoZXJlIGlzIG5v IGJlbmVmaXQgdG8gYQogCSAqIHNlcGFyYXRlIGNoZWNrIGZvciB0aGUgbmV3IHR1cGxlLgogCSAq LwotCUNoZWNrRm9yU2VyaWFsaXphYmxlQ29uZmxpY3RJbihyZWxhdGlvbiwgJm9sZHR1cC50X3Nl bGYsCisJQ2hlY2tGb3JTZXJpYWxpemFibGVDb25mbGljdEluKHJlbGF0aW9uLCAmb2xkdHVwLT50 X3NlbGYsCiAJCQkJCQkJCSAgIEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZmZlcikpOwogCiAJLyoK QEAgLTQwMzksNyArMzg5Miw2IEBAIGwyOgogCSAqIGhhcyBlbm91Z2ggc3BhY2UgZm9yIHRoZSBu ZXcgdHVwbGUuICBJZiB0aGV5IGFyZSB0aGUgc2FtZSBidWZmZXIsIG9ubHkKIAkgKiBvbmUgcGlu IGlzIGhlbGQuCiAJICovCi0KIAlpZiAobmV3YnVmID09IGJ1ZmZlcikKIAl7CiAJCS8qCkBAIC00 MDQ3LDcgKzM4OTksNyBAQCBsMjoKIAkJICogdG8gZG8gYSBIT1QgdXBkYXRlLiAgQ2hlY2sgaWYg YW55IG9mIHRoZSBpbmRleCBjb2x1bW5zIGhhdmUgYmVlbgogCQkgKiBjaGFuZ2VkLgogCQkgKi8K LQkJaWYgKCFibXNfb3ZlcmxhcChtb2RpZmllZF9hdHRycywgaG90X2F0dHJzKSkKKwkJaWYgKCFi bXNfb3ZlcmxhcChtaXhfYXR0cnMsIGhvdF9hdHRycykpCiAJCXsKIAkJCXVzZV9ob3RfdXBkYXRl ID0gdHJ1ZTsKIApAQCAtNDA1OCw3ICszOTEwLDcgQEAgbDI6CiAJCQkgKiBpbmRleGVzIGlmIHRo ZSBjb2x1bW5zIHdlcmUgdXBkYXRlZCwgb3Igd2UgbWF5IGZhaWwgdG8gZGV0ZWN0CiAJCQkgKiBl LmcuIHZhbHVlIGJvdW5kIGNoYW5nZXMgaW4gQlJJTiBtaW5tYXggaW5kZXhlcy4KIAkJCSAqLwot CQkJaWYgKGJtc19vdmVybGFwKG1vZGlmaWVkX2F0dHJzLCBzdW1fYXR0cnMpKQorCQkJaWYgKGJt c19vdmVybGFwKG1peF9hdHRycywgc3VtX2F0dHJzKSkKIAkJCQlzdW1tYXJpemVkX3VwZGF0ZSA9 IHRydWU7CiAJCX0KIAl9CkBAIC00MDc1LDEwICszOTI3LDggQEAgbDI6CiAJICogbG9nZ2VkLiAg UGFzcyBvbGQga2V5IHJlcXVpcmVkIGFzIHRydWUgb25seSBpZiB0aGUgcmVwbGljYSBpZGVudGl0 eSBrZXkKIAkgKiBjb2x1bW5zIGFyZSBtb2RpZmllZCBvciBpdCBoYXMgZXh0ZXJuYWwgZGF0YS4K IAkgKi8KLQlvbGRfa2V5X3R1cGxlID0gRXh0cmFjdFJlcGxpY2FJZGVudGl0eShyZWxhdGlvbiwg Jm9sZHR1cCwKLQkJCQkJCQkJCQkgICBibXNfb3ZlcmxhcChtb2RpZmllZF9hdHRycywgaWRfYXR0 cnMpIHx8Ci0JCQkJCQkJCQkJICAgaWRfaGFzX2V4dGVybmFsLAotCQkJCQkJCQkJCSAgICZvbGRf a2V5X2NvcGllZCk7CisJb2xkX2tleV90dXBsZSA9IEV4dHJhY3RSZXBsaWNhSWRlbnRpdHkocmVs YXRpb24sIG9sZHR1cCwgcmlkX2F0dHJzLAorCQkJCQkJCQkJCSAgIHJlcF9pZF9rZXlfcmVxdWly ZWQsICZvbGRfa2V5X2NvcGllZCk7CiAKIAkvKiBOTyBFUkVQT1JUKEVSUk9SKSBmcm9tIGhlcmUg dGlsbCBjaGFuZ2VzIGFyZSBsb2dnZWQgKi8KIAlTVEFSVF9DUklUX1NFQ1RJT04oKTsKQEAgLTQx MDAsNyArMzk1MCw3IEBAIGwyOgogCWlmICh1c2VfaG90X3VwZGF0ZSkKIAl7CiAJCS8qIE1hcmsg dGhlIG9sZCB0dXBsZSBhcyBIT1QtdXBkYXRlZCAqLwotCQlIZWFwVHVwbGVTZXRIb3RVcGRhdGVk KCZvbGR0dXApOworCQlIZWFwVHVwbGVTZXRIb3RVcGRhdGVkKG9sZHR1cCk7CiAJCS8qIEFuZCBt YXJrIHRoZSBuZXcgdHVwbGUgYXMgaGVhcC1vbmx5ICovCiAJCUhlYXBUdXBsZVNldEhlYXBPbmx5 KGhlYXB0dXApOwogCQkvKiBNYXJrIHRoZSBjYWxsZXIncyBjb3B5IHRvbywgaW4gY2FzZSBkaWZm ZXJlbnQgZnJvbSBoZWFwdHVwICovCkBAIC00MTA5LDcgKzM5NTksNyBAQCBsMjoKIAllbHNlCiAJ ewogCQkvKiBNYWtlIHN1cmUgdHVwbGVzIGFyZSBjb3JyZWN0bHkgbWFya2VkIGFzIG5vdC1IT1Qg Ki8KLQkJSGVhcFR1cGxlQ2xlYXJIb3RVcGRhdGVkKCZvbGR0dXApOworCQlIZWFwVHVwbGVDbGVh ckhvdFVwZGF0ZWQob2xkdHVwKTsKIAkJSGVhcFR1cGxlQ2xlYXJIZWFwT25seShoZWFwdHVwKTsK IAkJSGVhcFR1cGxlQ2xlYXJIZWFwT25seShuZXd0dXApOwogCX0KQEAgLTQxMTgsMTcgKzM5Njgs MTcgQEAgbDI6CiAKIAogCS8qIENsZWFyIG9ic29sZXRlIHZpc2liaWxpdHkgZmxhZ3MsIHBvc3Np Ymx5IHNldCBieSBvdXJzZWx2ZXMgYWJvdmUuLi4gKi8KLQlvbGR0dXAudF9kYXRhLT50X2luZm9t YXNrICY9IH4oSEVBUF9YTUFYX0JJVFMgfCBIRUFQX01PVkVEKTsKLQlvbGR0dXAudF9kYXRhLT50 X2luZm9tYXNrMiAmPSB+SEVBUF9LRVlTX1VQREFURUQ7CisJb2xkdHVwLT50X2RhdGEtPnRfaW5m b21hc2sgJj0gfihIRUFQX1hNQVhfQklUUyB8IEhFQVBfTU9WRUQpOworCW9sZHR1cC0+dF9kYXRh LT50X2luZm9tYXNrMiAmPSB+SEVBUF9LRVlTX1VQREFURUQ7CiAJLyogLi4uIGFuZCBzdG9yZSBp bmZvIGFib3V0IHRyYW5zYWN0aW9uIHVwZGF0aW5nIHRoaXMgdHVwbGUgKi8KIAlBc3NlcnQoVHJh bnNhY3Rpb25JZElzVmFsaWQoeG1heF9vbGRfdHVwbGUpKTsKLQlIZWFwVHVwbGVIZWFkZXJTZXRY bWF4KG9sZHR1cC50X2RhdGEsIHhtYXhfb2xkX3R1cGxlKTsKLQlvbGR0dXAudF9kYXRhLT50X2lu Zm9tYXNrIHw9IGluZm9tYXNrX29sZF90dXBsZTsKLQlvbGR0dXAudF9kYXRhLT50X2luZm9tYXNr MiB8PSBpbmZvbWFzazJfb2xkX3R1cGxlOwotCUhlYXBUdXBsZUhlYWRlclNldENtYXgob2xkdHVw LnRfZGF0YSwgY2lkLCBpc2NvbWJvKTsKKwlIZWFwVHVwbGVIZWFkZXJTZXRYbWF4KG9sZHR1cC0+ dF9kYXRhLCB4bWF4X29sZF90dXBsZSk7CisJb2xkdHVwLT50X2RhdGEtPnRfaW5mb21hc2sgfD0g aW5mb21hc2tfb2xkX3R1cGxlOworCW9sZHR1cC0+dF9kYXRhLT50X2luZm9tYXNrMiB8PSBpbmZv bWFzazJfb2xkX3R1cGxlOworCUhlYXBUdXBsZUhlYWRlclNldENtYXgob2xkdHVwLT50X2RhdGEs IGNpZCwgaXNjb21ibyk7CiAKIAkvKiByZWNvcmQgYWRkcmVzcyBvZiBuZXcgdHVwbGUgaW4gdF9j dGlkIG9mIG9sZCBvbmUgKi8KLQlvbGR0dXAudF9kYXRhLT50X2N0aWQgPSBoZWFwdHVwLT50X3Nl bGY7CisJb2xkdHVwLT50X2RhdGEtPnRfY3RpZCA9IGhlYXB0dXAtPnRfc2VsZjsKIAogCS8qIGNs ZWFyIFBEX0FMTF9WSVNJQkxFIGZsYWdzLCByZXNldCBhbGwgdmlzaWJpbGl0eW1hcCBiaXRzICov CiAJaWYgKFBhZ2VJc0FsbFZpc2libGUoQnVmZmVyR2V0UGFnZShidWZmZXIpKSkKQEAgLTQxMzYs NyArMzk4Niw3IEBAIGwyOgogCQlhbGxfdmlzaWJsZV9jbGVhcmVkID0gdHJ1ZTsKIAkJUGFnZUNs ZWFyQWxsVmlzaWJsZShCdWZmZXJHZXRQYWdlKGJ1ZmZlcikpOwogCQl2aXNpYmlsaXR5bWFwX2Ns ZWFyKHJlbGF0aW9uLCBCdWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIpLAotCQkJCQkJCXZtYnVm ZmVyLCBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpOworCQkJCQkJCSp2bWJ1ZmZlciwgVklTSUJJ TElUWU1BUF9WQUxJRF9CSVRTKTsKIAl9CiAJaWYgKG5ld2J1ZiAhPSBidWZmZXIgJiYgUGFnZUlz QWxsVmlzaWJsZShCdWZmZXJHZXRQYWdlKG5ld2J1ZikpKQogCXsKQEAgLTQxNjEsMTIgKzQwMTEs MTIgQEAgbDI6CiAJCSAqLwogCQlpZiAoUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNv ZGluZyhyZWxhdGlvbikpCiAJCXsKLQkJCWxvZ19oZWFwX25ld19jaWQocmVsYXRpb24sICZvbGR0 dXApOworCQkJbG9nX2hlYXBfbmV3X2NpZChyZWxhdGlvbiwgb2xkdHVwKTsKIAkJCWxvZ19oZWFw X25ld19jaWQocmVsYXRpb24sIGhlYXB0dXApOwogCQl9CiAKIAkJcmVjcHRyID0gbG9nX2hlYXBf dXBkYXRlKHJlbGF0aW9uLCBidWZmZXIsCi0JCQkJCQkJCSBuZXdidWYsICZvbGR0dXAsIGhlYXB0 dXAsCisJCQkJCQkJCSBuZXdidWYsIG9sZHR1cCwgaGVhcHR1cCwKIAkJCQkJCQkJIG9sZF9rZXlf dHVwbGUsCiAJCQkJCQkJCSBhbGxfdmlzaWJsZV9jbGVhcmVkLAogCQkJCQkJCQkgYWxsX3Zpc2li bGVfY2xlYXJlZF9uZXcpOwpAQCAtNDE5MSw3ICs0MDQxLDcgQEAgbDI6CiAJICogYm90aCB0dXBs ZSB2ZXJzaW9ucyBpbiBvbmUgY2FsbCB0byBpbnZhbC5jIHNvIHdlIGNhbiBhdm9pZCByZWR1bmRh bnQKIAkgKiBzaW52YWwgbWVzc2FnZXMuKQogCSAqLwotCUNhY2hlSW52YWxpZGF0ZUhlYXBUdXBs ZShyZWxhdGlvbiwgJm9sZHR1cCwgaGVhcHR1cCk7CisJQ2FjaGVJbnZhbGlkYXRlSGVhcFR1cGxl KHJlbGF0aW9uLCBvbGR0dXAsIGhlYXB0dXApOwogCiAJLyogTm93IHdlIGNhbiByZWxlYXNlIHRo ZSBidWZmZXIocykgKi8KIAlpZiAobmV3YnVmICE9IGJ1ZmZlcikKQEAgLTQxOTksMTQgKzQwNDks MTQgQEAgbDI6CiAJUmVsZWFzZUJ1ZmZlcihidWZmZXIpOwogCWlmIChCdWZmZXJJc1ZhbGlkKHZt YnVmZmVyX25ldykpCiAJCVJlbGVhc2VCdWZmZXIodm1idWZmZXJfbmV3KTsKLQlpZiAoQnVmZmVy SXNWYWxpZCh2bWJ1ZmZlcikpCi0JCVJlbGVhc2VCdWZmZXIodm1idWZmZXIpOworCWlmIChCdWZm ZXJJc1ZhbGlkKCp2bWJ1ZmZlcikpCisJCVJlbGVhc2VCdWZmZXIoKnZtYnVmZmVyKTsKIAogCS8q CiAJICogUmVsZWFzZSB0aGUgbG1nciB0dXBsZSBsb2NrLCBpZiB3ZSBoYWQgaXQuCiAJICovCiAJ aWYgKGhhdmVfdHVwbGVfbG9jaykKLQkJVW5sb2NrVHVwbGVUdXBsb2NrKHJlbGF0aW9uLCAmKG9s ZHR1cC50X3NlbGYpLCAqbG9ja21vZGUpOworCQlVbmxvY2tUdXBsZVR1cGxvY2socmVsYXRpb24s ICZvbGR0dXAtPnRfc2VsZiwgKmxvY2ttb2RlKTsKIAogCXBnc3RhdF9jb3VudF9oZWFwX3VwZGF0 ZShyZWxhdGlvbiwgdXNlX2hvdF91cGRhdGUsIG5ld2J1ZiAhPSBidWZmZXIpOwogCkBAIC00MjM5 LDEzICs0MDg5LDYgQEAgbDI6CiAJaWYgKG9sZF9rZXlfdHVwbGUgIT0gTlVMTCAmJiBvbGRfa2V5 X2NvcGllZCkKIAkJaGVhcF9mcmVldHVwbGUob2xkX2tleV90dXBsZSk7CiAKLQlibXNfZnJlZSho b3RfYXR0cnMpOwotCWJtc19mcmVlKHN1bV9hdHRycyk7Ci0JYm1zX2ZyZWUoa2V5X2F0dHJzKTsK LQlibXNfZnJlZShpZF9hdHRycyk7Ci0JYm1zX2ZyZWUobW9kaWZpZWRfYXR0cnMpOwotCWJtc19m cmVlKGludGVyZXN0aW5nX2F0dHJzKTsKLQogCXJldHVybiBUTV9PazsKIH0KIApAQCAtNDI1NCw3 ICs0MDk3LDcgQEAgbDI6CiAgKiBDb25maXJtIGFkZXF1YXRlIGxvY2sgaGVsZCBkdXJpbmcgaGVh cF91cGRhdGUoKSwgcGVyIHJ1bGVzIGZyb20KICAqIFJFQURNRS50dXBsb2NrIHNlY3Rpb24gIkxv Y2tpbmcgdG8gd3JpdGUgaW5wbGFjZS11cGRhdGVkIHRhYmxlcyIuCiAgKi8KLXN0YXRpYyB2b2lk Cit2b2lkCiBjaGVja19sb2NrX2lmX2lucGxhY2VfdXBkYXRlYWJsZV9yZWwoUmVsYXRpb24gcmVs YXRpb24sCiAJCQkJCQkJCQkgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLAogCQkJCQkJCQkJ IEhlYXBUdXBsZSBuZXd0dXApCkBAIC00NDI2LDcgKzQyNjksNyBAQCBoZWFwX2F0dHJfZXF1YWxz KFR1cGxlRGVzYyB0dXBkZXNjLCBpbnQgYXR0cm51bSwgRGF0dW0gdmFsdWUxLCBEYXR1bSB2YWx1 ZTIsCiAgKiBsaXN0ZWQgYXMgaW50ZXJlc3RpbmcpIG9mIHRoZSBvbGQgdHVwbGUgaXMgYSBtZW1i ZXIgb2YgZXh0ZXJuYWxfY29scyBhbmQgaXMKICAqIHN0b3JlZCBleHRlcm5hbGx5LgogICovCi1z dGF0aWMgQml0bWFwc2V0ICoKK0JpdG1hcHNldCAqCiBIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8o UmVsYXRpb24gcmVsYXRpb24sCiAJCQkJCQkgQml0bWFwc2V0ICppbnRlcmVzdGluZ19jb2xzLAog CQkJCQkJIEJpdG1hcHNldCAqZXh0ZXJuYWxfY29scywKQEAgLTQ1MDksMjUgKzQzNTIsMTc1IEBA IEhlYXBEZXRlcm1pbmVDb2x1bW5zSW5mbyhSZWxhdGlvbiByZWxhdGlvbiwKIH0KIAogLyoKLSAq CXNpbXBsZV9oZWFwX3VwZGF0ZSAtIHJlcGxhY2UgYSB0dXBsZQotICoKLSAqIFRoaXMgcm91dGlu ZSBtYXkgYmUgdXNlZCB0byB1cGRhdGUgYSB0dXBsZSB3aGVuIGNvbmN1cnJlbnQgdXBkYXRlcyBv ZgotICogdGhlIHRhcmdldCB0dXBsZSBhcmUgbm90IGV4cGVjdGVkIChmb3IgZXhhbXBsZSwgYmVj YXVzZSB3ZSBoYXZlIGEgbG9jawotICogb24gdGhlIHJlbGF0aW9uIGFzc29jaWF0ZWQgd2l0aCB0 aGUgdHVwbGUpLiAgQW55IGZhaWx1cmUgaXMgcmVwb3J0ZWQKLSAqIHZpYSBlcmVwb3J0KCkuCisg KiBUaGlzIHJvdXRpbmUgbWF5IGJlIHVzZWQgdG8gdXBkYXRlIGEgdHVwbGUgd2hlbiBjb25jdXJy ZW50IHVwZGF0ZXMgb2YgdGhlCisgKiB0YXJnZXQgdHVwbGUgYXJlIG5vdCBleHBlY3RlZCAoZm9y IGV4YW1wbGUsIGJlY2F1c2Ugd2UgaGF2ZSBhIGxvY2sgb24gdGhlCisgKiByZWxhdGlvbiBhc3Nv Y2lhdGVkIHdpdGggdGhlIHR1cGxlKS4gIEFueSBmYWlsdXJlIGlzIHJlcG9ydGVkIHZpYSBlcmVw b3J0KCkuCiAgKi8KIHZvaWQKLXNpbXBsZV9oZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwg Y29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLCBIZWFwVHVwbGUgdHVwLAorc2ltcGxlX2hlYXBf dXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhl YXBUdXBsZSB0dXBsZSwKIAkJCQkgICBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykK IHsKIAlUTV9SZXN1bHQJcmVzdWx0OwogCVRNX0ZhaWx1cmVEYXRhIHRtZmQ7CiAJTG9ja1R1cGxl TW9kZSBsb2NrbW9kZTsKKwlCdWZmZXIJCWJ1ZmZlcjsKKwlCdWZmZXIJCXZtYnVmZmVyID0gSW52 YWxpZEJ1ZmZlcjsKKwlQYWdlCQlwYWdlOworCUJsb2NrTnVtYmVyIGJsb2NrOworCUJpdG1hcHNl dCAgKmhvdF9hdHRycywKKwkJCSAgICpzdW1fYXR0cnMsCisJCQkgICAqcGtfYXR0cnMsCisJCQkg ICAqcmlkX2F0dHJzLAorCQkJICAgKm1peF9hdHRycywKKwkJCSAgICppZHhfYXR0cnM7CisJSXRl bUlkCQlscDsKKwlIZWFwVHVwbGVEYXRhIG9sZHR1cDsKKwlib29sCQlyZXBfaWRfa2V5X3JlcXVp cmVkID0gZmFsc2U7CisKKwlBc3NlcnQoSXRlbVBvaW50ZXJJc1ZhbGlkKG90aWQpKTsKKworCS8q IENoZWFwLCBzaW1wbGlzdGljIGNoZWNrIHRoYXQgdGhlIHR1cGxlIG1hdGNoZXMgdGhlIHJlbCdz IHJvd3R5cGUuICovCisJQXNzZXJ0KEhlYXBUdXBsZUhlYWRlckdldE5hdHRzKHR1cGxlLT50X2Rh dGEpIDw9CisJCSAgIFJlbGF0aW9uR2V0TnVtYmVyT2ZBdHRyaWJ1dGVzKHJlbGF0aW9uKSk7CisK KwkvKgorCSAqIEZvcmJpZCB0aGlzIGR1cmluZyBhIHBhcmFsbGVsIG9wZXJhdGlvbiwgbGVzdCBp dCBhbGxvY2F0ZSBhIGNvbWJvIENJRC4KKwkgKiBPdGhlciB3b3JrZXJzIG1pZ2h0IG5lZWQgdGhh dCBjb21ibyBDSUQgZm9yIHZpc2liaWxpdHkgY2hlY2tzLCBhbmQgd2UKKwkgKiBoYXZlIG5vIHBy b3Zpc2lvbiBmb3IgYnJvYWRjYXN0aW5nIGl0IHRvIHRoZW0uCisJICovCisJaWYgKElzSW5QYXJh bGxlbE1vZGUoKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFM SURfVFJBTlNBQ1RJT05fU1RBVEUpLAorCQkJCSBlcnJtc2coImNhbm5vdCB1cGRhdGUgdHVwbGVz IGR1cmluZyBhIHBhcmFsbGVsIG9wZXJhdGlvbiIpKSk7CisKKyNpZmRlZiBVU0VfQVNTRVJUX0NI RUNLSU5HCisJY2hlY2tfbG9ja19pZl9pbnBsYWNlX3VwZGF0ZWFibGVfcmVsKHJlbGF0aW9uLCBv dGlkLCB0dXBsZSk7CisjZW5kaWYKKworCS8qCisJICogRmV0Y2ggdGhlIGxpc3Qgb2YgYXR0cmli dXRlcyB0byBiZSBjaGVja2VkIGZvciB2YXJpb3VzIG9wZXJhdGlvbnMuCisJICoKKwkgKiBGb3Ig SE9UIGNvbnNpZGVyYXRpb25zLCB0aGlzIGlzIHdhc3RlZCBlZmZvcnQgaWYgd2UgZmFpbCB0byB1 cGRhdGUgb3IKKwkgKiBoYXZlIHRvIHB1dCB0aGUgbmV3IHR1cGxlIG9uIGEgZGlmZmVyZW50IHBh Z2UuICBCdXQgd2UgbXVzdCBjb21wdXRlIHRoZQorCSAqIGxpc3QgYmVmb3JlIG9idGFpbmluZyBi dWZmZXIgbG9jayAtLS0gaW4gdGhlIHdvcnN0IGNhc2UsIGlmIHdlIGFyZQorCSAqIGRvaW5nIGFu IHVwZGF0ZSBvbiBvbmUgb2YgdGhlIHJlbGV2YW50IHN5c3RlbSBjYXRhbG9ncywgd2UgY291bGQK KwkgKiBkZWFkbG9jayBpZiB3ZSB0cnkgdG8gZmV0Y2ggdGhlIGxpc3QgbGF0ZXIuICBJbiBhbnkg Y2FzZSwgdGhlIHJlbGNhY2hlCisJICogY2FjaGVzIHRoZSBkYXRhIHNvIHRoaXMgaXMgdXN1YWxs eSBwcmV0dHkgY2hlYXAuCisJICoKKwkgKiBXZSBhbHNvIG5lZWQgY29sdW1ucyB1c2VkIGJ5IHRo ZSByZXBsaWNhIGlkZW50aXR5IGFuZCBjb2x1bW5zIHRoYXQgYXJlCisJICogY29uc2lkZXJlZCB0 aGUgImtleSIgb2Ygcm93cyBpbiB0aGUgdGFibGUuCisJICoKKwkgKiBOb3RlIHRoYXQgd2UgZ2V0 IGNvcGllcyBvZiBlYWNoIGJpdG1hcCwgc28gd2UgbmVlZCBub3Qgd29ycnkgYWJvdXQKKwkgKiBy ZWxjYWNoZSBmbHVzaCBoYXBwZW5pbmcgbWlkd2F5IHRocm91Z2guCisJICovCisJaG90X2F0dHJz ID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sCisJCQkJCQkJCQkJICAgSU5E RVhfQVRUUl9CSVRNQVBfSE9UX0JMT0NLSU5HKTsKKwlzdW1fYXR0cnMgPSBSZWxhdGlvbkdldElu ZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwKKwkJCQkJCQkJCQkgICBJTkRFWF9BVFRSX0JJVE1BUF9T VU1NQVJJWkVEKTsKKwlwa19hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0 aW9uLCBJTkRFWF9BVFRSX0JJVE1BUF9LRVkpOworCXJpZF9hdHRycyA9IFJlbGF0aW9uR2V0SW5k ZXhBdHRyQml0bWFwKHJlbGF0aW9uLAorCQkJCQkJCQkJCSAgIElOREVYX0FUVFJfQklUTUFQX0lE RU5USVRZX0tFWSk7CisKKwlpZHhfYXR0cnMgPSBibXNfY29weShob3RfYXR0cnMpOworCWlkeF9h dHRycyA9IGJtc19hZGRfbWVtYmVycyhpZHhfYXR0cnMsIHN1bV9hdHRycyk7CisJaWR4X2F0dHJz ID0gYm1zX2FkZF9tZW1iZXJzKGlkeF9hdHRycywgcGtfYXR0cnMpOworCWlkeF9hdHRycyA9IGJt c19hZGRfbWVtYmVycyhpZHhfYXR0cnMsIHJpZF9hdHRycyk7CisKKwlibG9jayA9IEl0ZW1Qb2lu dGVyR2V0QmxvY2tOdW1iZXIob3RpZCk7CisJSU5KRUNUSU9OX1BPSU5UKCJoZWFwX3VwZGF0ZS1i ZWZvcmUtcGluIiwgTlVMTCk7CisJYnVmZmVyID0gUmVhZEJ1ZmZlcihyZWxhdGlvbiwgYmxvY2sp OworCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CisKKwkvKgorCSAqIEJlZm9yZSBsb2Nr aW5nIHRoZSBidWZmZXIsIHBpbiB0aGUgdmlzaWJpbGl0eSBtYXAgcGFnZSBpZiBpdCBhcHBlYXJz IHRvCisJICogYmUgbmVjZXNzYXJ5LiAgU2luY2Ugd2UgaGF2ZW4ndCBnb3QgdGhlIGxvY2sgeWV0 LCBzb21lb25lIGVsc2UgbWlnaHQgYmUKKwkgKiBpbiB0aGUgbWlkZGxlIG9mIGNoYW5naW5nIHRo aXMsIHNvIHdlJ2xsIG5lZWQgdG8gcmVjaGVjayBhZnRlciB3ZSBoYXZlCisJICogdGhlIGxvY2su CisJICovCisJaWYgKFBhZ2VJc0FsbFZpc2libGUocGFnZSkpCisJCXZpc2liaWxpdHltYXBfcGlu KHJlbGF0aW9uLCBibG9jaywgJnZtYnVmZmVyKTsKKworCUxvY2tCdWZmZXIoYnVmZmVyLCBCVUZG RVJfTE9DS19FWENMVVNJVkUpOworCisJbHAgPSBQYWdlR2V0SXRlbUlkKHBhZ2UsIEl0ZW1Qb2lu dGVyR2V0T2Zmc2V0TnVtYmVyKG90aWQpKTsKKworCS8qCisJICogVXN1YWxseSwgYSBidWZmZXIg cGluIGFuZC9vciBzbmFwc2hvdCBibG9ja3MgcHJ1bmluZyBvZiBvdGlkLCBlbnN1cmluZworCSAq IHdlIHNlZSBMUF9OT1JNQUwgaGVyZS4gIFdoZW4gdGhlIG90aWQgb3JpZ2luIGlzIGEgc3lzY2Fj aGUsIHdlIG1heSBoYXZlCisJICogbmVpdGhlciBhIHBpbiBub3IgYSBzbmFwc2hvdC4gIEhlbmNl LCB3ZSBtYXkgc2VlIG90aGVyIExQXyBzdGF0ZXMsIGVhY2gKKwkgKiBvZiB3aGljaCBpbmRpY2F0 ZXMgY29uY3VycmVudCBwcnVuaW5nLgorCSAqCisJICogRmFpbGluZyB3aXRoIFRNX1VwZGF0ZWQg d291bGQgYmUgbW9zdCBhY2N1cmF0ZS4gIEhvd2V2ZXIsIHVubGlrZSBvdGhlcgorCSAqIFRNX1Vw ZGF0ZWQgc2NlbmFyaW9zLCB3ZSBkb24ndCBrbm93IHRoZSBzdWNjZXNzb3IgY3RpZCBpbiBMUF9V TlVTRUQgYW5kCisJICogTFBfREVBRCBjYXNlcy4gIFdoaWxlIHRoZSBkaXN0aW5jdGlvbiBiZXR3 ZWVuIFRNX1VwZGF0ZWQgYW5kIFRNX0RlbGV0ZWQKKwkgKiBkb2VzIG1hdHRlciB0byBTUUwgc3Rh dGVtZW50cyBVUERBVEUgYW5kIE1FUkdFLCB0aG9zZSBTUUwgc3RhdGVtZW50cworCSAqIGhvbGQg YSBzbmFwc2hvdCB0aGF0IGVuc3VyZXMgTFBfTk9STUFMLiAgSGVuY2UsIHRoZSBjaG9pY2UgYmV0 d2VlbgorCSAqIFRNX1VwZGF0ZWQgYW5kIFRNX0RlbGV0ZWQgYWZmZWN0cyBvbmx5IHRoZSB3b3Jk aW5nIG9mIGVycm9yIG1lc3NhZ2VzLgorCSAqIFNldHRsZSBvbiBUTV9EZWxldGVkLCBmb3IgdHdv IHJlYXNvbnMuICBGaXJzdCwgaXQgYXZvaWRzIGNvbXBsaWNhdGluZworCSAqIHRoZSBzcGVjaWZp Y2F0aW9uIG9mIHdoZW4gdG1mZC0+Y3RpZCBpcyB2YWxpZC4gIFNlY29uZCwgaXQgY3JlYXRlcwor CSAqIGVycm9yIGxvZyBldmlkZW5jZSB0aGF0IHdlIHRvb2sgdGhpcyBicmFuY2guCisJICoKKwkg KiBTaW5jZSBpdCdzIHBvc3NpYmxlIHRvIHNlZSBMUF9VTlVTRUQgYXQgb3RpZCwgaXQncyBhbHNv IHBvc3NpYmxlIHRvIHNlZQorCSAqIExQX05PUk1BTCBmb3IgYSB0dXBsZSB0aGF0IHJlcGxhY2Vk IExQX1VOVVNFRC4gIElmIGl0J3MgYSB0dXBsZSBmb3IgYW4KKwkgKiB1bnJlbGF0ZWQgcm93LCB3 ZSdsbCBmYWlsIHdpdGggImR1cGxpY2F0ZSBrZXkgdmFsdWUgdmlvbGF0ZXMgdW5pcXVlIi4KKwkg KiBYWFggaWYgb3RpZCBpcyB0aGUgbGl2ZSwgbmV3ZXIgdmVyc2lvbiBvZiB0aGUgbmV3dHVwIHJv dywgd2UnbGwgZGlzY2FyZAorCSAqIGNoYW5nZXMgb3JpZ2luYXRpbmcgaW4gdmVyc2lvbnMgb2Yg dGhpcyBjYXRhbG9nIHJvdyBhZnRlciB0aGUgdmVyc2lvbgorCSAqIHRoZSBjYWxsZXIgZ290IGZy b20gc3lzY2FjaGUuICBTZWUgc3lzY2FjaGUtdXBkYXRlLXBydW5lZC5zcGVjLgorCSAqLworCWlm ICghSXRlbUlkSXNOb3JtYWwobHApKQorCXsKKwkJQXNzZXJ0KFJlbGF0aW9uU3VwcG9ydHNTeXND YWNoZShSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKSkpOworCisJCVVubG9ja1JlbGVhc2VCdWZm ZXIoYnVmZmVyKTsKKwkJaWYgKHZtYnVmZmVyICE9IEludmFsaWRCdWZmZXIpCisJCQlSZWxlYXNl QnVmZmVyKHZtYnVmZmVyKTsKKwkJKnVwZGF0ZV9pbmRleGVzID0gVFVfTm9uZTsKKworCQlibXNf ZnJlZShob3RfYXR0cnMpOworCQlibXNfZnJlZShzdW1fYXR0cnMpOworCQlibXNfZnJlZShwa19h dHRycyk7CisJCWJtc19mcmVlKHJpZF9hdHRycyk7CisJCWJtc19mcmVlKGlkeF9hdHRycyk7CisJ CS8qIG1peF9hdHRycyBub3QgeWV0IGluaXRpYWxpemVkICovCisKKwkJZWxvZyhFUlJPUiwgInR1 cGxlIGNvbmN1cnJlbnRseSBkZWxldGVkIik7CisKKwkJcmV0dXJuOworCX0KKworCS8qCisJICog UGFydGlhbGx5IGNvbnN0cnVjdCB0aGUgb2xkdHVwIGZvciBIZWFwRGV0ZXJtaW5lQ29sdW1uc0lu Zm8gdG8gd29yayBhbmQKKwkgKiB0aGVuIHBhc3MgdGhhdCBvbiB0byBoZWFwX3VwZGF0ZS4KKwkg Ki8KKwlvbGR0dXAudF90YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pOworCW9s ZHR1cC50X2RhdGEgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBscCk7CisJ b2xkdHVwLnRfbGVuID0gSXRlbUlkR2V0TGVuZ3RoKGxwKTsKKwlvbGR0dXAudF9zZWxmID0gKm90 aWQ7CisKKwltaXhfYXR0cnMgPSBIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8ocmVsYXRpb24sIGlk eF9hdHRycywgcmlkX2F0dHJzLAorCQkJCQkJCQkJCSAmb2xkdHVwLCB0dXBsZSwgJnJlcF9pZF9r ZXlfcmVxdWlyZWQpOworCisJLyoKKwkgKiBXZSdsbCBuZWVkIHRvIFdBTCBsb2cgdGhlIHJlcGxp Y2EgaWRlbnRpdHkgYXR0cmlidXRlcyBpZiBlaXRoZXIgdGhleQorCSAqIG92ZXJsYXAgd2l0aCB0 aGUgbW9kaWZpZWQgaW5kZXhlZCBhdHRyaWJ1dGVzIG9yLCBhcyB3ZSd2ZSBjaGVja2VkIGZvcgor CSAqIGp1c3Qgbm93IGluIEhlYXBEZXRlcm1pbmVDb2x1bW5zSW5mbywgdGhleSB3ZXJlIHVubW9k aWZpZWQgZXh0ZXJuYWwKKwkgKiBpbmRleGVkIGF0dHJpYnV0ZXMuCisJICovCisJcmVwX2lkX2tl eV9yZXF1aXJlZCA9IHJlcF9pZF9rZXlfcmVxdWlyZWQgfHwgYm1zX292ZXJsYXAobWl4X2F0dHJz LCByaWRfYXR0cnMpOworCisJcmVzdWx0ID0gaGVhcF91cGRhdGUocmVsYXRpb24sICZvbGR0dXAs IHR1cGxlLCBHZXRDdXJyZW50Q29tbWFuZElkKHRydWUpLAorCQkJCQkJIEludmFsaWRTbmFwc2hv dCwgdHJ1ZSAvKiB3YWl0IGZvciBjb21taXQgKi8gLCAmdG1mZCwgJmxvY2ttb2RlLAorCQkJCQkJ IGJ1ZmZlciwgcGFnZSwgYmxvY2ssIGxwLCBob3RfYXR0cnMsIHN1bV9hdHRycywgcGtfYXR0cnMs CisJCQkJCQkgcmlkX2F0dHJzLCBtaXhfYXR0cnMsICZ2bWJ1ZmZlciwgcmVwX2lkX2tleV9yZXF1 aXJlZCwKKwkJCQkJCSB1cGRhdGVfaW5kZXhlcyk7CisKKwlibXNfZnJlZShob3RfYXR0cnMpOwor CWJtc19mcmVlKHN1bV9hdHRycyk7CisJYm1zX2ZyZWUocGtfYXR0cnMpOworCWJtc19mcmVlKHJp ZF9hdHRycyk7CisJYm1zX2ZyZWUobWl4X2F0dHJzKTsKKwlibXNfZnJlZShpZHhfYXR0cnMpOwog Ci0JcmVzdWx0ID0gaGVhcF91cGRhdGUocmVsYXRpb24sIG90aWQsIHR1cCwKLQkJCQkJCSBHZXRD dXJyZW50Q29tbWFuZElkKHRydWUpLCBJbnZhbGlkU25hcHNob3QsCi0JCQkJCQkgdHJ1ZSAvKiB3 YWl0IGZvciBjb21taXQgKi8gLAotCQkJCQkJICZ0bWZkLCAmbG9ja21vZGUsIHVwZGF0ZV9pbmRl eGVzKTsKIAlzd2l0Y2ggKHJlc3VsdCkKIAl7CiAJCWNhc2UgVE1fU2VsZk1vZGlmaWVkOgpAQCAt OTE4MywxMiArOTE3NiwxMSBAQCBsb2dfaGVhcF9uZXdfY2lkKFJlbGF0aW9uIHJlbGF0aW9uLCBI ZWFwVHVwbGUgdHVwKQogICogdGhlIHNhbWUgdHVwbGUgdGhhdCB3YXMgcGFzc2VkIGluLgogICov CiBzdGF0aWMgSGVhcFR1cGxlCi1FeHRyYWN0UmVwbGljYUlkZW50aXR5KFJlbGF0aW9uIHJlbGF0 aW9uLCBIZWFwVHVwbGUgdHAsIGJvb2wga2V5X3JlcXVpcmVkLAotCQkJCQkgICBib29sICpjb3B5 KQorRXh0cmFjdFJlcGxpY2FJZGVudGl0eShSZWxhdGlvbiByZWxhdGlvbiwgSGVhcFR1cGxlIHRw LCBCaXRtYXBzZXQgKnJpZF9hdHRycywKKwkJCQkJICAgYm9vbCBrZXlfcmVxdWlyZWQsIGJvb2wg KmNvcHkpCiB7CiAJVHVwbGVEZXNjCWRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbGF0aW9uKTsK IAljaGFyCQlyZXBsaWRlbnQgPSByZWxhdGlvbi0+cmRfcmVsLT5yZWxyZXBsaWRlbnQ7Ci0JQml0 bWFwc2V0ICAqaWRhdHRyczsKIAlIZWFwVHVwbGUJa2V5X3R1cGxlOwogCWJvb2wJCW51bGxzW01h eEhlYXBBdHRyaWJ1dGVOdW1iZXJdOwogCURhdHVtCQl2YWx1ZXNbTWF4SGVhcEF0dHJpYnV0ZU51 bWJlcl07CkBAIC05MjE5LDE3ICs5MjExLDEzIEBAIEV4dHJhY3RSZXBsaWNhSWRlbnRpdHkoUmVs YXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0cCwgYm9vbCBrZXlfcmVxdWlyZWQsCiAJaWYgKCFr ZXlfcmVxdWlyZWQpCiAJCXJldHVybiBOVUxMOwogCi0JLyogZmluZCBvdXQgdGhlIHJlcGxpY2Eg aWRlbnRpdHkgY29sdW1ucyAqLwotCWlkYXR0cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1h cChyZWxhdGlvbiwKLQkJCQkJCQkJCQkgSU5ERVhfQVRUUl9CSVRNQVBfSURFTlRJVFlfS0VZKTsK LQogCS8qCiAJICogSWYgdGhlcmUncyBubyBkZWZpbmVkIHJlcGxpY2EgaWRlbnRpdHkgY29sdW1u cywgdHJlYXQgYXMgIWtleV9yZXF1aXJlZC4KIAkgKiAoVGhpcyBjYXNlIHNob3VsZCBub3QgYmUg cmVhY2hhYmxlIGZyb20gaGVhcF91cGRhdGUsIHNpbmNlIHRoYXQgc2hvdWxkCiAJICogY2FsY3Vs YXRlIGtleV9yZXF1aXJlZCBhY2N1cmF0ZWx5LiAgQnV0IGhlYXBfZGVsZXRlIGp1c3QgcGFzc2Vz CiAJICogY29uc3RhbnQgdHJ1ZSBmb3Iga2V5X3JlcXVpcmVkLCBzbyB3ZSBjYW4gaGl0IHRoaXMg Y2FzZSBpbiBkZWxldGVzLikKIAkgKi8KLQlpZiAoYm1zX2lzX2VtcHR5KGlkYXR0cnMpKQorCWlm IChibXNfaXNfZW1wdHkocmlkX2F0dHJzKSkKIAkJcmV0dXJuIE5VTEw7CiAKIAkvKgpAQCAtOTI0 Miw3ICs5MjMwLDcgQEAgRXh0cmFjdFJlcGxpY2FJZGVudGl0eShSZWxhdGlvbiByZWxhdGlvbiwg SGVhcFR1cGxlIHRwLCBib29sIGtleV9yZXF1aXJlZCwKIAlmb3IgKGludCBpID0gMDsgaSA8IGRl c2MtPm5hdHRzOyBpKyspCiAJewogCQlpZiAoYm1zX2lzX21lbWJlcihpICsgMSAtIEZpcnN0TG93 SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIsCi0JCQkJCQkgIGlkYXR0cnMpKQorCQkJCQkJICBy aWRfYXR0cnMpKQogCQkJQXNzZXJ0KCFudWxsc1tpXSk7CiAJCWVsc2UKIAkJCW51bGxzW2ldID0g dHJ1ZTsKQEAgLTkyNTEsOCArOTIzOSw2IEBAIEV4dHJhY3RSZXBsaWNhSWRlbnRpdHkoUmVsYXRp b24gcmVsYXRpb24sIEhlYXBUdXBsZSB0cCwgYm9vbCBrZXlfcmVxdWlyZWQsCiAJa2V5X3R1cGxl ID0gaGVhcF9mb3JtX3R1cGxlKGRlc2MsIHZhbHVlcywgbnVsbHMpOwogCSpjb3B5ID0gdHJ1ZTsK IAotCWJtc19mcmVlKGlkYXR0cnMpOwotCiAJLyoKIAkgKiBJZiB0aGUgdHVwbGUsIHdoaWNoIGJ5 IGhlcmUgb25seSBjb250YWlucyBpbmRleGVkIGNvbHVtbnMsIHN0aWxsIGhhcwogCSAqIHRvYXN0 ZWQgY29sdW1ucywgZm9yY2UgdGhlbSB0byBiZSBpbmxpbmVkLiBUaGlzIGlzIHNvbWV3aGF0IHVu bGlrZWx5CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxl ci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCAwOWE0 NTZlOTk2Ni4uN2Q4YzgwZDNmZjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L2hlYXBhbV9oYW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hh bmRsZXIuYwpAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5Lmgi CiAjaW5jbHVkZSAic3RvcmFnZS9zbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIK KyNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwu aCIKIAogc3RhdGljIHZvaWQgcmVmb3JtX2FuZF9yZXdyaXRlX3R1cGxlKEhlYXBUdXBsZSB0dXBs ZSwKQEAgLTMxMiwyMyArMzEzLDEzMyBAQCBoZWFwYW1fdHVwbGVfZGVsZXRlKFJlbGF0aW9uIHJl bGF0aW9uLCBJdGVtUG9pbnRlciB0aWQsIENvbW1hbmRJZCBjaWQsCiAJcmV0dXJuIGhlYXBfZGVs ZXRlKHJlbGF0aW9uLCB0aWQsIGNpZCwgY3Jvc3NjaGVjaywgd2FpdCwgdG1mZCwgY2hhbmdpbmdQ YXJ0KTsKIH0KIAotCiBzdGF0aWMgVE1fUmVzdWx0CiBoZWFwYW1fdHVwbGVfdXBkYXRlKFJlbGF0 aW9uIHJlbGF0aW9uLCBJdGVtUG9pbnRlciBvdGlkLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJ CQkJQ29tbWFuZElkIGNpZCwgU25hcHNob3Qgc25hcHNob3QsIFNuYXBzaG90IGNyb3NzY2hlY2ss CiAJCQkJCWJvb2wgd2FpdCwgVE1fRmFpbHVyZURhdGEgKnRtZmQsCiAJCQkJCUxvY2tUdXBsZU1v ZGUgKmxvY2ttb2RlLCBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKIHsKKwlib29s CQlyZXBfaWRfa2V5X3JlcXVpcmVkID0gZmFsc2U7CiAJYm9vbAkJc2hvdWxkRnJlZSA9IHRydWU7 CiAJSGVhcFR1cGxlCXR1cGxlID0gRXhlY0ZldGNoU2xvdEhlYXBUdXBsZShzbG90LCB0cnVlLCAm c2hvdWxkRnJlZSk7CisJSGVhcFR1cGxlRGF0YSBvbGR0dXA7CisJQnVmZmVyCQlidWZmZXI7CisJ QnVmZmVyCQl2bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CisJUGFnZQkJcGFnZTsKKwlCbG9ja051 bWJlciBibG9jazsKKwlJdGVtSWQJCWxwOworCUJpdG1hcHNldCAgKmhvdF9hdHRycywKKwkJCSAg ICpzdW1fYXR0cnMsCisJCQkgICAqcGtfYXR0cnMsCisJCQkgICAqcmlkX2F0dHJzLAorCQkJICAg Km1peF9hdHRycywKKwkJCSAgICppZHhfYXR0cnM7CiAJVE1fUmVzdWx0CXJlc3VsdDsKIAorCUFz c2VydChJdGVtUG9pbnRlcklzVmFsaWQob3RpZCkpOworCisJLyogQ2hlYXAsIHNpbXBsaXN0aWMg Y2hlY2sgdGhhdCB0aGUgdHVwbGUgbWF0Y2hlcyB0aGUgcmVsJ3Mgcm93dHlwZS4gKi8KKwlBc3Nl cnQoSGVhcFR1cGxlSGVhZGVyR2V0TmF0dHModHVwbGUtPnRfZGF0YSkgPD0KKwkJICAgUmVsYXRp b25HZXROdW1iZXJPZkF0dHJpYnV0ZXMocmVsYXRpb24pKTsKKworCS8qCisJICogRm9yYmlkIHRo aXMgZHVyaW5nIGEgcGFyYWxsZWwgb3BlcmF0aW9uLCBsZXN0IGl0IGFsbG9jYXRlIGEgY29tYm8g Q0lELgorCSAqIE90aGVyIHdvcmtlcnMgbWlnaHQgbmVlZCB0aGF0IGNvbWJvIENJRCBmb3Igdmlz aWJpbGl0eSBjaGVja3MsIGFuZCB3ZQorCSAqIGhhdmUgbm8gcHJvdmlzaW9uIGZvciBicm9hZGNh c3RpbmcgaXQgdG8gdGhlbS4KKwkgKi8KKwlpZiAoSXNJblBhcmFsbGVsTW9kZSgpKQorCQllcmVw b3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9UUkFOU0FDVElPTl9TVEFU RSksCisJCQkJIGVycm1zZygiY2Fubm90IHVwZGF0ZSB0dXBsZXMgZHVyaW5nIGEgcGFyYWxsZWwg b3BlcmF0aW9uIikpKTsKKworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwljaGVja19sb2Nr X2lmX2lucGxhY2VfdXBkYXRlYWJsZV9yZWwocmVsYXRpb24sIG90aWQsIHR1cGxlKTsKKyNlbmRp ZgorCisJLyoKKwkgKiBGZXRjaCB0aGUgbGlzdCBvZiBhdHRyaWJ1dGVzIHRvIGJlIGNoZWNrZWQg Zm9yIHZhcmlvdXMgb3BlcmF0aW9ucy4KKwkgKgorCSAqIEZvciBIT1QgY29uc2lkZXJhdGlvbnMs IHRoaXMgaXMgd2FzdGVkIGVmZm9ydCBpZiB3ZSBmYWlsIHRvIHVwZGF0ZSBvcgorCSAqIGhhdmUg dG8gcHV0IHRoZSBuZXcgdHVwbGUgb24gYSBkaWZmZXJlbnQgcGFnZS4gIEJ1dCB3ZSBtdXN0IGNv bXB1dGUgdGhlCisJICogbGlzdCBiZWZvcmUgb2J0YWluaW5nIGJ1ZmZlciBsb2NrIC0tLSBpbiB0 aGUgd29yc3QgY2FzZSwgaWYgd2UgYXJlCisJICogZG9pbmcgYW4gdXBkYXRlIG9uIG9uZSBvZiB0 aGUgcmVsZXZhbnQgc3lzdGVtIGNhdGFsb2dzLCB3ZSBjb3VsZAorCSAqIGRlYWRsb2NrIGlmIHdl IHRyeSB0byBmZXRjaCB0aGUgbGlzdCBsYXRlci4gIEluIGFueSBjYXNlLCB0aGUgcmVsY2FjaGUK KwkgKiBjYWNoZXMgdGhlIGRhdGEgc28gdGhpcyBpcyB1c3VhbGx5IHByZXR0eSBjaGVhcC4KKwkg KgorCSAqIFdlIGFsc28gbmVlZCBjb2x1bW5zIHVzZWQgYnkgdGhlIHJlcGxpY2EgaWRlbnRpdHkg YW5kIGNvbHVtbnMgdGhhdCBhcmUKKwkgKiBjb25zaWRlcmVkIHRoZSAia2V5IiBvZiByb3dzIGlu IHRoZSB0YWJsZS4KKwkgKgorCSAqIE5vdGUgdGhhdCB3ZSBnZXQgY29waWVzIG9mIGVhY2ggYml0 bWFwLCBzbyB3ZSBuZWVkIG5vdCB3b3JyeSBhYm91dAorCSAqIHJlbGNhY2hlIGZsdXNoIGhhcHBl bmluZyBtaWR3YXkgdGhyb3VnaC4KKwkgKi8KKwlob3RfYXR0cnMgPSBSZWxhdGlvbkdldEluZGV4 QXR0ckJpdG1hcChyZWxhdGlvbiwKKwkJCQkJCQkJCQkgICBJTkRFWF9BVFRSX0JJVE1BUF9IT1Rf QkxPQ0tJTkcpOworCXN1bV9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0 aW9uLAorCQkJCQkJCQkJCSAgIElOREVYX0FUVFJfQklUTUFQX1NVTU1BUklaRUQpOworCXBrX2F0 dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sIElOREVYX0FUVFJfQklU TUFQX0tFWSk7CisJcmlkX2F0dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRp b24sCisJCQkJCQkJCQkJICAgSU5ERVhfQVRUUl9CSVRNQVBfSURFTlRJVFlfS0VZKTsKKworCWlk eF9hdHRycyA9IGJtc19jb3B5KGhvdF9hdHRycyk7CisJaWR4X2F0dHJzID0gYm1zX2FkZF9tZW1i ZXJzKGlkeF9hdHRycywgc3VtX2F0dHJzKTsKKwlpZHhfYXR0cnMgPSBibXNfYWRkX21lbWJlcnMo aWR4X2F0dHJzLCBwa19hdHRycyk7CisJaWR4X2F0dHJzID0gYm1zX2FkZF9tZW1iZXJzKGlkeF9h dHRycywgcmlkX2F0dHJzKTsKKworCWJsb2NrID0gSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcihv dGlkKTsKKwlJTkpFQ1RJT05fUE9JTlQoImhlYXBfdXBkYXRlLWJlZm9yZS1waW4iLCBOVUxMKTsK KwlidWZmZXIgPSBSZWFkQnVmZmVyKHJlbGF0aW9uLCBibG9jayk7CisJcGFnZSA9IEJ1ZmZlckdl dFBhZ2UoYnVmZmVyKTsKKworCS8qCisJICogQmVmb3JlIGxvY2tpbmcgdGhlIGJ1ZmZlciwgcGlu IHRoZSB2aXNpYmlsaXR5IG1hcCBwYWdlIGlmIGl0IGFwcGVhcnMgdG8KKwkgKiBiZSBuZWNlc3Nh cnkuICBTaW5jZSB3ZSBoYXZlbid0IGdvdCB0aGUgbG9jayB5ZXQsIHNvbWVvbmUgZWxzZSBtaWdo dCBiZQorCSAqIGluIHRoZSBtaWRkbGUgb2YgY2hhbmdpbmcgdGhpcywgc28gd2UnbGwgbmVlZCB0 byByZWNoZWNrIGFmdGVyIHdlIGhhdmUKKwkgKiB0aGUgbG9jay4KKwkgKi8KKwlpZiAoUGFnZUlz QWxsVmlzaWJsZShwYWdlKSkKKwkJdmlzaWJpbGl0eW1hcF9waW4ocmVsYXRpb24sIGJsb2NrLCAm dm1idWZmZXIpOworCisJTG9ja0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7 CisKKwlscCA9IFBhZ2VHZXRJdGVtSWQocGFnZSwgSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIo b3RpZCkpOworCisJQXNzZXJ0KEl0ZW1JZElzTm9ybWFsKGxwKSk7CisKKwkvKgorCSAqIFBhcnRp YWxseSBjb25zdHJ1Y3QgdGhlIG9sZHR1cCBmb3IgSGVhcERldGVybWluZUNvbHVtbnNJbmZvIHRv IHdvcmsgYW5kCisJICogdGhlbiBwYXNzIHRoYXQgb24gdG8gaGVhcF91cGRhdGUuCisJICovCisJ b2xkdHVwLnRfdGFibGVPaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKTsKKwlvbGR0dXAu dF9kYXRhID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0ocGFnZSwgbHApOworCW9sZHR1 cC50X2xlbiA9IEl0ZW1JZEdldExlbmd0aChscCk7CisJb2xkdHVwLnRfc2VsZiA9ICpvdGlkOwor CisJbWl4X2F0dHJzID0gSGVhcERldGVybWluZUNvbHVtbnNJbmZvKHJlbGF0aW9uLCBpZHhfYXR0 cnMsIHJpZF9hdHRycywKKwkJCQkJCQkJCQkgJm9sZHR1cCwgdHVwbGUsICZyZXBfaWRfa2V5X3Jl cXVpcmVkKTsKKworCS8qCisJICogV2UnbGwgbmVlZCB0byBXQUwgbG9nIHRoZSByZXBsaWNhIGlk ZW50aXR5IGF0dHJpYnV0ZXMgaWYgZWl0aGVyIHRoZXkKKwkgKiBvdmVybGFwIHdpdGggdGhlIG1v ZGlmaWVkIGluZGV4ZWQgYXR0cmlidXRlcyBvciwgYXMgd2UndmUgY2hlY2tlZCBmb3IKKwkgKiBq dXN0IG5vdyBpbiBIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8sIHRoZXkgd2VyZSB1bm1vZGlmaWVk IGV4dGVybmFsCisJICogaW5kZXhlZCBhdHRyaWJ1dGVzLgorCSAqLworCXJlcF9pZF9rZXlfcmVx dWlyZWQgPSByZXBfaWRfa2V5X3JlcXVpcmVkIHx8IGJtc19vdmVybGFwKG1peF9hdHRycywgcmlk X2F0dHJzKTsKKwogCS8qIFVwZGF0ZSB0aGUgdHVwbGUgd2l0aCB0YWJsZSBvaWQgKi8KIAlzbG90 LT50dHNfdGFibGVPaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKTsKIAl0dXBsZS0+dF90 YWJsZU9pZCA9IHNsb3QtPnR0c190YWJsZU9pZDsKIAotCXJlc3VsdCA9IGhlYXBfdXBkYXRlKHJl bGF0aW9uLCBvdGlkLCB0dXBsZSwgY2lkLCBjcm9zc2NoZWNrLCB3YWl0LAotCQkJCQkJIHRtZmQs IGxvY2ttb2RlLCB1cGRhdGVfaW5kZXhlcyk7CisJcmVzdWx0ID0gaGVhcF91cGRhdGUocmVsYXRp b24sICZvbGR0dXAsIHR1cGxlLCBjaWQsIGNyb3NzY2hlY2ssIHdhaXQsIHRtZmQsIGxvY2ttb2Rl LAorCQkJCQkJIGJ1ZmZlciwgcGFnZSwgYmxvY2ssIGxwLCBob3RfYXR0cnMsIHN1bV9hdHRycywg cGtfYXR0cnMsCisJCQkJCQkgcmlkX2F0dHJzLCBtaXhfYXR0cnMsICZ2bWJ1ZmZlciwgcmVwX2lk X2tleV9yZXF1aXJlZCwgdXBkYXRlX2luZGV4ZXMpOworCisJYm1zX2ZyZWUoaG90X2F0dHJzKTsK KwlibXNfZnJlZShzdW1fYXR0cnMpOworCWJtc19mcmVlKHBrX2F0dHJzKTsKKwlibXNfZnJlZShy aWRfYXR0cnMpOworCWJtc19mcmVlKG1peF9hdHRycyk7CisJYm1zX2ZyZWUoaWR4X2F0dHJzKTsK KwogCUl0ZW1Qb2ludGVyQ29weSgmdHVwbGUtPnRfc2VsZiwgJnNsb3QtPnR0c190aWQpOwogCiAJ LyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRl L2FjY2Vzcy9oZWFwYW0uaAppbmRleCBjZTQ4ZmFjNDJiYS4uNDExOTNkNWIzZDIgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mv aGVhcGFtLmgKQEAgLTM2NCwxMSArMzY0LDEzIEBAIGV4dGVybiBUTV9SZXN1bHQgaGVhcF9kZWxl dGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkLAogCQkJCQkJ CSBUTV9GYWlsdXJlRGF0YSAqdG1mZCwgYm9vbCBjaGFuZ2luZ1BhcnQpOwogZXh0ZXJuIHZvaWQg aGVhcF9maW5pc2hfc3BlY3VsYXRpdmUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2lu dGVyRGF0YSAqdGlkKTsKIGV4dGVybiB2b2lkIGhlYXBfYWJvcnRfc3BlY3VsYXRpdmUoUmVsYXRp b24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkKTsKLWV4dGVybiBUTV9SZXN1 bHQgaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAq b3RpZCwKLQkJCQkJCQkgSGVhcFR1cGxlIG5ld3R1cCwKLQkJCQkJCQkgQ29tbWFuZElkIGNpZCwg U25hcHNob3QgY3Jvc3NjaGVjaywgYm9vbCB3YWl0LAotCQkJCQkJCSBUTV9GYWlsdXJlRGF0YSAq dG1mZCwgTG9ja1R1cGxlTW9kZSAqbG9ja21vZGUsCi0JCQkJCQkJIFRVX1VwZGF0ZUluZGV4ZXMg KnVwZGF0ZV9pbmRleGVzKTsKK2V4dGVybiBUTV9SZXN1bHQgaGVhcF91cGRhdGUoUmVsYXRpb24g cmVsYXRpb24sIEhlYXBUdXBsZURhdGEgKm9sZHR1cCwKKwkJCQkJCQkgSGVhcFR1cGxlIG5ld3R1 cCwgQ29tbWFuZElkIGNpZCwgU25hcHNob3QgY3Jvc3NjaGVjaywgYm9vbCB3YWl0LAorCQkJCQkJ CSBUTV9GYWlsdXJlRGF0YSAqdG1mZCwgTG9ja1R1cGxlTW9kZSAqbG9ja21vZGUsIEJ1ZmZlciBi dWZmZXIsCisJCQkJCQkJIFBhZ2UgcGFnZSwgQmxvY2tOdW1iZXIgYmxvY2ssIEl0ZW1JZCBscCwg Qml0bWFwc2V0ICpob3RfYXR0cnMsCisJCQkJCQkJIEJpdG1hcHNldCAqc3VtX2F0dHJzLCBCaXRt YXBzZXQgKnBrX2F0dHJzLCBCaXRtYXBzZXQgKnJpZF9hdHRycywKKwkJCQkJCQkgQml0bWFwc2V0 ICptaXhfYXR0cnMsIEJ1ZmZlciAqdm1idWZmZXIsCisJCQkJCQkJIGJvb2wgcmVwX2lkX2tleV9y ZXF1aXJlZCwgVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4ZXMpOwogZXh0ZXJuIFRNX1Jl c3VsdCBoZWFwX2xvY2tfdHVwbGUoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0dXBsZSwK IAkJCQkJCQkJIENvbW1hbmRJZCBjaWQsIExvY2tUdXBsZU1vZGUgbW9kZSwgTG9ja1dhaXRQb2xp Y3kgd2FpdF9wb2xpY3ksCiAJCQkJCQkJCSBib29sIGZvbGxvd191cGRhdGVzLApAQCAtNDMwLDYg KzQzMiwxOCBAQCBleHRlcm4gdm9pZCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9u IHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkJCQkJCQkJICBPZmZzZXROdW1iZXIgKmRlYWQs IGludCBuZGVhZCwKIAkJCQkJCQkJCSAgT2Zmc2V0TnVtYmVyICp1bnVzZWQsIGludCBudW51c2Vk KTsKIAorLyogaW4gaGVhcC9oZWFwYW0uYyAqLworZXh0ZXJuIEJpdG1hcHNldCAqSGVhcERldGVy bWluZUNvbHVtbnNJbmZvKFJlbGF0aW9uIHJlbGF0aW9uLAorCQkJCQkJCQkJCSAgIEJpdG1hcHNl dCAqaW50ZXJlc3RpbmdfY29scywKKwkJCQkJCQkJCQkgICBCaXRtYXBzZXQgKmV4dGVybmFsX2Nv bHMsCisJCQkJCQkJCQkJICAgSGVhcFR1cGxlIG9sZHR1cCwgSGVhcFR1cGxlIG5ld3R1cCwKKwkJ CQkJCQkJCQkgICBib29sICpoYXNfZXh0ZXJuYWwpOworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJ TkcKK2V4dGVybiB2b2lkIGNoZWNrX2xvY2tfaWZfaW5wbGFjZV91cGRhdGVhYmxlX3JlbChSZWxh dGlvbiByZWxhdGlvbiwKKwkJCQkJCQkJCQkJCSBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQs CisJCQkJCQkJCQkJCQkgSGVhcFR1cGxlIG5ld3R1cCk7CisjZW5kaWYKKwogLyogaW4gaGVhcC92 YWN1dW1sYXp5LmMgKi8KIGV4dGVybiB2b2lkIGhlYXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWws CiAJCQkJCQkJY29uc3QgVmFjdXVtUGFyYW1zIHBhcmFtcywgQnVmZmVyQWNjZXNzU3RyYXRlZ3kg YnN0cmF0ZWd5KTsKLS0gCjIuNTEuMgoK --696012d3_36a751cf_1975 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v27-0004-Identify-if-partial-indexes-are-impacted-by-an-u.patch" RnJvbSA5OWU2NjAzZDVlODJiNGU0MWM0ZmJiNjkyM2U0OTUyN2Y5MWVjMzc2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTogRnJpLCA1 IERlYyAyMDI1IDEzOjQyOjEzIC0wNTAwClN1YmplY3Q6IFtQQVRDSCB2MjcgNC80XSBJZGVudGlm eSBpZiBwYXJ0aWFsIGluZGV4ZXMgYXJlIGltcGFjdGVkIGJ5IGFuCiB1cGRhdGUuCgpUaGUgZXhl Y3V0b3Igbm93IGRldGVybWluZXMgd2hpY2gsIGlmIGFueSwgYXR0cmlidXRlcyB0aGF0IGFyZSBp bmRleGVkCmFyZSBib3RoIG1vZGlmaWVkIGFuZCBmb3JjZSBuZXcgaW5kZXggdHVwbGVzIHRvIGJl IGluc2VydGVkIGFoZWFkIG9mCmNhbGxpbmcgaW50byB0aGUgdGFibGUgQU0gdXBkYXRlIGZ1bmN0 aW9uLiAgUHJpb3IgdG8gdGhpcyBjb21taXQgdGhlCnRlc3QgZm9yIHBhcnRpYWwgaW5kZXhlcyBo YXBwZW5lZCBhZnRlciB0YWJsZSB1cGRhdGUsIHRoaXMgY2hhbmdlcyB0aGF0CnRvIGJlZm9yZSBz byB0aGF0IGluIGNhc2VzIHdoZXJlIHRoZSBiZWZvcmUgYW5kIGFmdGVyIHR1cGxlcyBib3RoIGxp ZQpvdXRzaWRlIHRoZSBwcmVkaWNhdGUgdGhlIGF0dHJpYnV0ZXMgZm9yIHRoZSBwcmVkaWNhdGUg YXJlIG5vdCBpbmNsdWRlZAppbiB0aGUgIm1vZGlmaWVkIGluZGV4ZWQgYXR0cmlidXRlcyIgYml0 bWFwc2V0LgotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jIHwgNTMg KysrKysrKysrKysrKysrKysrKysrKysrLS0KIDEgZmlsZSBjaGFuZ2VkLCA0OSBpbnNlcnRpb25z KCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVNb2RpZnlUYWJsZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMK aW5kZXggOGZjYTVlMDlhMjYuLjVhMmM5NWRjOWE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TW9kaWZ5VGFibGUuYwpAQCAtMjI2LDkgKzIyNiwxMSBAQCBFeGVjQ2hlY2tJbmRleGVkQXR0cnNG b3JDaGFuZ2VzKFJlc3VsdFJlbEluZm8gKnJlbGluZm8sCiAJCUJpdG1hcHNldCAgKm1fYXR0cnMg PSBOVUxMOyAvKiAocG9zc2libHkpIG1vZGlmaWVkIGluZGV4ZWQgYXR0cnMgKi8KIAkJQml0bWFw c2V0ICAqcF9hdHRycyA9IE5VTEw7IC8qIChwb3NzaWJseSkgbW9kaWZpZWQgcHJlZGljYXRlIGF0 dHJzICovCiAJCUJpdG1hcHNldCAgKnVfYXR0cnMgPSBOVUxMOyAvKiB1bm1vZGlmaWVkIGluZGV4 ZWQgYXR0cnMgKi8KKwkJQml0bWFwc2V0ICAqcHJlX2F0dHJzID0gaW5kZXhJbmZvLT5paV9QcmVk aWNhdGVBdHRyczsKIAkJYm9vbAkJaGFzX2FtX2NvbXBhcmUgPSAoYW1yb3V0aW5lLT5hbWNvbXBh cmVkYXR1bXMgIT0gTlVMTCk7CiAJCWJvb2wJCXN1cHBvcnRzX2lvcyA9IChhbXJvdXRpbmUtPmFt Y2FucmV0dXJuICE9IE5VTEwpOwogCQlib29sCQlpc19wYXJ0aWFsID0gKGluZGV4SW5mby0+aWlf UHJlZGljYXRlICE9IE5JTCk7CisJCVR1cGxlVGFibGVTbG90ICpzYXZlX3NjYW50dXBsZTsKIAkJ RXhwckNvbnRleHQgKmVjb250ZXh0ID0gR2V0UGVyVHVwbGVFeHByQ29udGV4dChlc3RhdGUpOwog CQlpbnQJCQludW1fZGF0dW1zID0gc3VwcG9ydHNfaW9zID8KIAkJCWluZGV4SW5mby0+aWlfTnVt SW5kZXhBdHRycyA6IGluZGV4SW5mby0+aWlfTnVtSW5kZXhLZXlBdHRyczsKQEAgLTIzNyw5ICsy MzksNTEgQEAgRXhlY0NoZWNrSW5kZXhlZEF0dHJzRm9yQ2hhbmdlcyhSZXN1bHRSZWxJbmZvICpy ZWxpbmZvLAogCQlpZiAoYm1zX2lzX3N1YnNldChpbmRleEluZm8tPmlpX0luZGV4ZWRBdHRycywg bWl4X2F0dHJzKSkKIAkJCWNvbnRpbnVlOwogCi0JCS8qIEFkZCBwYXJ0aWFsIGluZGV4IGF0dHJp YnV0ZXMgKi8KLQkJaWYgKGlzX3BhcnRpYWwpCi0JCQlwX2F0dHJzID0gYm1zX2FkZF9tZW1iZXJz KHBfYXR0cnMsIGluZGV4SW5mby0+aWlfUHJlZGljYXRlQXR0cnMpOworCQkvKiBDaGVja2luZyBw YXJ0aWFsIGF0IHRoaXMgcG9pbnQgaXNuJ3QgdmlhYmxlIHdoZW4gd2UncmUgc2VyaWFsaXphYmxl ICovCisJCWlmIChpc19wYXJ0aWFsICYmIElzb2xhdGlvbklzU2VyaWFsaXphYmxlKCkpCisJCXsK KwkJCXBfYXR0cnMgPSBibXNfYWRkX21lbWJlcnMocF9hdHRycywgcHJlX2F0dHJzKTsKKwkJfQor CQkvKiBDaGVjayBwYXJ0aWFsIGluZGV4IHByZWRpY2F0ZSAqLworCQllbHNlIGlmIChpc19wYXJ0 aWFsKQorCQl7CisJCQlFeHByU3RhdGUgICpwc3RhdGU7CisJCQlib29sCQlvbGRfcXVhbGlmaWVz LAorCQkJCQkJbmV3X3F1YWxpZmllczsKKworCisJCQlpZiAoIWluZGV4SW5mby0+aWlfQ2hlY2tl ZFByZWRpY2F0ZSkKKwkJCQlwc3RhdGUgPSBFeGVjUHJlcGFyZVF1YWwoaW5kZXhJbmZvLT5paV9Q cmVkaWNhdGUsIGVzdGF0ZSk7CisJCQllbHNlCisJCQkJcHN0YXRlID0gaW5kZXhJbmZvLT5paV9Q cmVkaWNhdGVTdGF0ZTsKKworCQkJc2F2ZV9zY2FudHVwbGUgPSBlY29udGV4dC0+ZWN4dF9zY2Fu dHVwbGU7CisKKwkJCWVjb250ZXh0LT5lY3h0X3NjYW50dXBsZSA9IG9sZF90dHM7CisJCQlvbGRf cXVhbGlmaWVzID0gRXhlY1F1YWwocHN0YXRlLCBlY29udGV4dCk7CisKKwkJCWVjb250ZXh0LT5l Y3h0X3NjYW50dXBsZSA9IG5ld190dHM7CisJCQluZXdfcXVhbGlmaWVzID0gRXhlY1F1YWwocHN0 YXRlLCBlY29udGV4dCk7CisKKwkJCWVjb250ZXh0LT5lY3h0X3NjYW50dXBsZSA9IHNhdmVfc2Nh bnR1cGxlOworCisJCQlpbmRleEluZm8tPmlpX0NoZWNrZWRQcmVkaWNhdGUgPSB0cnVlOworCQkJ aW5kZXhJbmZvLT5paV9QcmVkaWNhdGVTdGF0ZSA9IHBzdGF0ZTsKKwkJCWluZGV4SW5mby0+aWlf UHJlZGljYXRlU2F0aXNmaWVkID0gbmV3X3F1YWxpZmllczsKKworCQkJLyogQm90aCBvdXRzaWRl IHByZWRpY2F0ZSwgaW5kZXggZG9lc24ndCBuZWVkIHVwZGF0ZSAqLworCQkJaWYgKCFvbGRfcXVh bGlmaWVzICYmICFuZXdfcXVhbGlmaWVzKQorCQkJCWNvbnRpbnVlOworCisJCQkvKiBBIHRyYW5z aXRpb24gbWVhbnMgd2UgbmVlZCB0byB1cGRhdGUgdGhlIGluZGV4ICovCisJCQlpZiAob2xkX3F1 YWxpZmllcyAhPSBuZXdfcXVhbGlmaWVzKQorCQkJCXBfYXR0cnMgPSBibXNfY29weShwcmVfYXR0 cnMpOworCisJCQkvKgorCQkJICogV2hlbiBib3RoIGFyZSB3aXRoaW4gdGhlIHByZWRpY2F0ZSB3 ZSBtdXN0IHVwZGF0ZSB0aGlzIGluZGV4LAorCQkJICogYnV0IG9ubHkgaWYgb25lIG9mIHRoZSBp bmRleCBrZXkgYXR0cmlidXRlcyBjaGFuZ2VkLgorCQkJICovCisJCX0KIAogCQkvKiBDb21wYXJl IHRoZSBpbmRleCBkYXR1bXMgZm9yIGVxdWFsaXR5ICovCiAJCWZvciAoaW50IGogPSAwOyBqIDwg bnVtX2RhdHVtczsgaisrKQpAQCAtMjc1LDExICszMTksMTIgQEAgRXhlY0NoZWNrSW5kZXhlZEF0 dHJzRm9yQ2hhbmdlcyhSZXN1bHRSZWxJbmZvICpyZWxpbmZvLAogCQkJICovCiAJCQllbHNlIGlm IChyZWxfYXR0cm51bSA9PSAwKQogCQkJewotCQkJCVR1cGxlVGFibGVTbG90ICpzYXZlX3NjYW50 dXBsZSA9IGVjb250ZXh0LT5lY3h0X3NjYW50dXBsZTsKIAkJCQlPaWQJCQlleHByX3R5cGVfb2lk OwogCQkJCUV4cHIJICAgKmV4cHIgPSAoRXhwciAqKSBsaXN0X250aChpbmRleEluZm8tPmlpX0V4 cHJlc3Npb25zLCBudGhfZXhwcik7CiAJCQkJRXhwclN0YXRlICAqc3RhdGU7CiAKKwkJCQlzYXZl X3NjYW50dXBsZSA9IGVjb250ZXh0LT5lY3h0X3NjYW50dXBsZTsKKwogCQkJCWlmIChpbmRleElu Zm8tPmlpX0V4cHJlc3Npb25zU3RhdGUgPT0gTklMKQogCQkJCXsKIAkJCQkJLyogRmlyc3QgdGlt ZSB0aHJvdWdoLCBzZXQgdXAgZXhwcmVzc2lvbiBldmFsdWF0aW9uIHN0YXRlICovCi0tIAoyLjUx LjIKCg== --696012d3_36a751cf_1975 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="=?utf-8?Q?v27-0003-Replace-index=5Funchanged=5Fby=5Fupdate-with-ri=5FChange.patch?=" RnJvbSA5NDIzNDIxYTY5NWI0ZDU2MGNmN2JmYzdlNmYyZGNkMWM2MzAwODRkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTogRnJpLCAz MSBPY3QgMjAyNSAxNDo1NToyNSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjI3IDMvNF0gUmVwbGFj ZSBpbmRleF91bmNoYW5nZWRfYnlfdXBkYXRlKCkgd2l0aAogcmlfQ2hhbmdlZEluZGV4ZWRDb2xz CgpJbiBleGVjSW5kZXhpbmcgb24gdXBkYXRlcyB3ZSdkIGxpa2UgdG8gcGFzcyBhIGhpbnQgdG8g dGhlIGluZGV4aW5nIGNvZGUKd2hlbiB0aGUgaW5kZXhlZCBhdHRyaWJ1dGVzIGFyZSB1bmNoYW5n ZWQuICBUaGlzIGNvbW1pdCByZXBsYWNlcyB0aGUgbm93CnJlZHVuZGFudCBjb2RlIGluIGluZGV4 X3VuY2hhbmdlZF9ieV91cGRhdGUoKSB3aXRoIHRoZSBzYW1lIGluZm9ybWF0aW9uCmZvdW5kIGVh cmxpZXIgaW4gRXhlY1doaWNoSW5kZXhlc1JlcXVpcmVVcGRhdGVzKCkgYW5kIHN0YXNoZWQgaW4K cmlfQ2hhbmdlZEluZGV4ZWRDb2xzLgotLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3Rpbmcu YyAgICAgIHwgICAyIC0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jIHwgMTU2 ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5j cy5jICAgICAgIHwgICAyIC0KIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgIHwg ICA0IC0KIDQgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDE2MyBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL3RvYXN0aW5nLmMKaW5kZXggZmY4ZGE1YmU1ZjguLjU2NzVjNmY4ZWE5IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMKKysrIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy90b2FzdGluZy5jCkBAIC0zMDQsOCArMzA0LDYgQEAgY3JlYXRlX3RvYXN0X3RhYmxl KFJlbGF0aW9uIHJlbCwgT2lkIHRvYXN0T2lkLCBPaWQgdG9hc3RJbmRleE9pZCwKIAlpbmRleElu Zm8tPmlpX1VuaXF1ZSA9IHRydWU7CiAJaW5kZXhJbmZvLT5paV9OdWxsc05vdERpc3RpbmN0ID0g ZmFsc2U7CiAJaW5kZXhJbmZvLT5paV9SZWFkeUZvckluc2VydHMgPSB0cnVlOwotCWluZGV4SW5m by0+aWlfQ2hlY2tlZFVuY2hhbmdlZCA9IGZhbHNlOwotCWluZGV4SW5mby0+aWlfSW5kZXhVbmNo YW5nZWQgPSBmYWxzZTsKIAlpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgPSBmYWxzZTsKIAlpbmRl eEluZm8tPmlpX0Jyb2tlbkhvdENoYWluID0gZmFsc2U7CiAJaW5kZXhJbmZvLT5paV9QYXJhbGxl bFdvcmtlcnMgPSAwOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4 aW5nLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYwppbmRleCAxMjc1ZmVm ZmFlOS4uYjc1ZTc2NDAxZDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJ bmRleGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCkBAIC0x NDMsMTEgKzE0Myw2IEBAIHN0YXRpYyBib29sIGNoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29u c3RyYWludChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIHN0YXRpYyBib29sIGluZGV4 X3JlY2hlY2tfY29uc3RyYWludChSZWxhdGlvbiBpbmRleCwgY29uc3QgT2lkICpjb25zdHJfcHJv Y3MsCiAJCQkJCQkJCQkgY29uc3QgRGF0dW0gKmV4aXN0aW5nX3ZhbHVlcywgY29uc3QgYm9vbCAq ZXhpc3RpbmdfaXNudWxsLAogCQkJCQkJCQkJIGNvbnN0IERhdHVtICpuZXdfdmFsdWVzKTsKLXN0 YXRpYyBib29sIGluZGV4X3VuY2hhbmdlZF9ieV91cGRhdGUoUmVzdWx0UmVsSW5mbyAqcmVzdWx0 UmVsSW5mbywKLQkJCQkJCQkJCSAgRVN0YXRlICplc3RhdGUsIEluZGV4SW5mbyAqaW5kZXhJbmZv LAotCQkJCQkJCQkJICBSZWxhdGlvbiBpbmRleFJlbGF0aW9uKTsKLXN0YXRpYyBib29sIGluZGV4 X2V4cHJlc3Npb25fY2hhbmdlZF93YWxrZXIoTm9kZSAqbm9kZSwKLQkJCQkJCQkJCQkJQml0bWFw c2V0ICphbGxVcGRhdGVkQ29scyk7CiBzdGF0aWMgdm9pZCBFeGVjV2l0aG91dE92ZXJsYXBzTm90 RW1wdHkoUmVsYXRpb24gcmVsLCBOYW1lRGF0YSBhdHRuYW1lLCBEYXR1bSBhdHR2YWwsCiAJCQkJ CQkJCQkJY2hhciB0eXB0eXBlLCBPaWQgYXR0dHlwaWQpOwogCkBAIC00NTEsMTAgKzQ0Niw3IEBA IEV4ZWNJbnNlcnRJbmRleFR1cGxlcyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQkg KiBpbmRleC4gIElmIHdlJ3JlIGJlaW5nIGNhbGxlZCBhcyBwYXJ0IG9mIGFuIFVQREFURSBzdGF0 ZW1lbnQsCiAJCSAqIGNvbnNpZGVyIGlmIHRoZSAnaW5kZXhVbmNoYW5nZWQnID0gdHJ1ZSBoaW50 IHNob3VsZCBiZSBwYXNzZWQuCiAJCSAqLwotCQlpbmRleFVuY2hhbmdlZCA9IHVwZGF0ZSAmJiBp bmRleF91bmNoYW5nZWRfYnlfdXBkYXRlKHJlc3VsdFJlbEluZm8sCi0JCQkJCQkJCQkJCQkJCQkg ZXN0YXRlLAotCQkJCQkJCQkJCQkJCQkJIGluZGV4SW5mbywKLQkJCQkJCQkJCQkJCQkJCSBpbmRl eFJlbGF0aW9uKTsKKwkJaW5kZXhVbmNoYW5nZWQgPSB1cGRhdGUgJiYgYm1zX2lzX2VtcHR5KHJl c3VsdFJlbEluZm8tPnJpX0NoYW5nZWRJbmRleGVkQ29scyk7CiAKIAkJc2F0aXNmaWVzQ29uc3Ry YWludCA9CiAJCQlpbmRleF9pbnNlcnQoaW5kZXhSZWxhdGlvbiwgLyogaW5kZXggcmVsYXRpb24g Ki8KQEAgLTEwMTQsMTUyICsxMDA2LDYgQEAgaW5kZXhfcmVjaGVja19jb25zdHJhaW50KFJlbGF0 aW9uIGluZGV4LCBjb25zdCBPaWQgKmNvbnN0cl9wcm9jcywKIAlyZXR1cm4gdHJ1ZTsKIH0KIAot LyoKLSAqIENoZWNrIGlmIEV4ZWNJbnNlcnRJbmRleFR1cGxlcygpIHNob3VsZCBwYXNzIGluZGV4 VW5jaGFuZ2VkIGhpbnQuCi0gKgotICogV2hlbiB0aGUgZXhlY3V0b3IgcGVyZm9ybXMgYW4gVVBE QVRFIHRoYXQgcmVxdWlyZXMgYSBuZXcgcm91bmQgb2YgaW5kZXgKLSAqIHR1cGxlcywgZGV0ZXJt aW5lIGlmIHdlIHNob3VsZCBwYXNzICdpbmRleFVuY2hhbmdlZCcgPSB0cnVlIGhpbnQgZm9yIG9u ZQotICogc2luZ2xlIGluZGV4LgotICovCi1zdGF0aWMgYm9vbAotaW5kZXhfdW5jaGFuZ2VkX2J5 X3VwZGF0ZShSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLCBFU3RhdGUgKmVzdGF0ZSwKLQkJ CQkJCSAgSW5kZXhJbmZvICppbmRleEluZm8sIFJlbGF0aW9uIGluZGV4UmVsYXRpb24pCi17Ci0J Qml0bWFwc2V0ICAqdXBkYXRlZENvbHM7Ci0JQml0bWFwc2V0ICAqZXh0cmFVcGRhdGVkQ29sczsK LQlCaXRtYXBzZXQgICphbGxVcGRhdGVkQ29sczsKLQlib29sCQloYXNleHByZXNzaW9uID0gZmFs c2U7Ci0JTGlzdAkgICAqaWR4RXhwcnM7Ci0KLQkvKgotCSAqIENoZWNrIGNhY2hlIGZpcnN0Ci0J ICovCi0JaWYgKGluZGV4SW5mby0+aWlfQ2hlY2tlZFVuY2hhbmdlZCkKLQkJcmV0dXJuIGluZGV4 SW5mby0+aWlfSW5kZXhVbmNoYW5nZWQ7Ci0JaW5kZXhJbmZvLT5paV9DaGVja2VkVW5jaGFuZ2Vk ID0gdHJ1ZTsKLQotCS8qCi0JICogQ2hlY2sgZm9yIGluZGV4ZWQgYXR0cmlidXRlIG92ZXJsYXAg d2l0aCB1cGRhdGVkIGNvbHVtbnMuCi0JICoKLQkgKiBPbmx5IGRvIHRoaXMgZm9yIGtleSBjb2x1 bW5zLiAgQSBjaGFuZ2UgdG8gYSBub24ta2V5IGNvbHVtbiB3aXRoaW4gYW4KLQkgKiBJTkNMVURF IGluZGV4IHNob3VsZCBub3QgYmUgY291bnRlZCBoZXJlLiAgTm9uLWtleSBjb2x1bW4gdmFsdWVz IGFyZQotCSAqIG9wYXF1ZSBwYXlsb2FkIHN0YXRlIHRvIHRoZSBpbmRleCBBTSwgYSBsaXR0bGUg bGlrZSBhbiBleHRyYSB0YWJsZSBUSUQuCi0JICoKLQkgKiBOb3RlIHRoYXQgcm93LWxldmVsIEJF Rk9SRSB0cmlnZ2VycyB3b24ndCBhZmZlY3Qgb3VyIGJlaGF2aW9yLCBzaW5jZQotCSAqIHRoZXkg ZG9uJ3QgYWZmZWN0IHRoZSB1cGRhdGVkQ29scyBiaXRtYXBzIGdlbmVyYWxseS4gIEl0IGRvZXNu J3Qgc2VlbQotCSAqIHdvcnRoIHRoZSB0cm91YmxlIG9mIGNoZWNraW5nIHdoaWNoIGF0dHJpYnV0 ZXMgd2VyZSBjaGFuZ2VkIGRpcmVjdGx5LgotCSAqLwotCXVwZGF0ZWRDb2xzID0gRXhlY0dldFVw ZGF0ZWRDb2xzKHJlc3VsdFJlbEluZm8sIGVzdGF0ZSk7Ci0JZXh0cmFVcGRhdGVkQ29scyA9IEV4 ZWNHZXRFeHRyYVVwZGF0ZWRDb2xzKHJlc3VsdFJlbEluZm8sIGVzdGF0ZSk7Ci0JZm9yIChpbnQg YXR0ciA9IDA7IGF0dHIgPCBpbmRleEluZm8tPmlpX051bUluZGV4S2V5QXR0cnM7IGF0dHIrKykK LQl7Ci0JCWludAkJCWtleWNvbCA9IGluZGV4SW5mby0+aWlfSW5kZXhBdHRyTnVtYmVyc1thdHRy XTsKLQotCQlpZiAoa2V5Y29sIDw9IDApCi0JCXsKLQkJCS8qCi0JCQkgKiBTa2lwIGV4cHJlc3Np b25zIGZvciBub3csIGJ1dCByZW1lbWJlciB0byBkZWFsIHdpdGggdGhlbSBsYXRlcgotCQkJICog b24KLQkJCSAqLwotCQkJaGFzZXhwcmVzc2lvbiA9IHRydWU7Ci0JCQljb250aW51ZTsKLQkJfQot Ci0JCWlmIChibXNfaXNfbWVtYmVyKGtleWNvbCAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1 dGVOdW1iZXIsCi0JCQkJCQkgIHVwZGF0ZWRDb2xzKSB8fAotCQkJYm1zX2lzX21lbWJlcihrZXlj b2wgLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyLAotCQkJCQkJICBleHRyYVVw ZGF0ZWRDb2xzKSkKLQkJewotCQkJLyogQ2hhbmdlZCBrZXkgY29sdW1uIC0tIGRvbid0IGhpbnQg Zm9yIHRoaXMgaW5kZXggKi8KLQkJCWluZGV4SW5mby0+aWlfSW5kZXhVbmNoYW5nZWQgPSBmYWxz ZTsKLQkJCXJldHVybiBmYWxzZTsKLQkJfQotCX0KLQotCS8qCi0JICogV2hlbiB3ZSBnZXQgdGhp cyBmYXIgYW5kIGluZGV4IGhhcyBubyBleHByZXNzaW9ucywgcmV0dXJuIHRydWUgc28gdGhhdAot CSAqIGluZGV4X2luc2VydCgpIGNhbGwgd2lsbCBnbyBvbiB0byBwYXNzICdpbmRleFVuY2hhbmdl ZCcgPSB0cnVlIGhpbnQuCi0JICoKLQkgKiBUaGUgX2Fic2VuY2VfIG9mIGFuIGluZGV4ZWQga2V5 IGF0dHJpYnV0ZSB0aGF0IG92ZXJsYXBzIHdpdGggdXBkYXRlZAotCSAqIGF0dHJpYnV0ZXMgKGlu IGFkZGl0aW9uIHRvIHRoZSB0b3RhbCBhYnNlbmNlIG9mIGluZGV4ZWQgZXhwcmVzc2lvbnMpCi0J ICogc2hvd3MgdGhhdCB0aGUgaW5kZXggYXMgYSB3aG9sZSBpcyBsb2dpY2FsbHkgdW5jaGFuZ2Vk IGJ5IFVQREFURS4KLQkgKi8KLQlpZiAoIWhhc2V4cHJlc3Npb24pCi0JewotCQlpbmRleEluZm8t PmlpX0luZGV4VW5jaGFuZ2VkID0gdHJ1ZTsKLQkJcmV0dXJuIHRydWU7Ci0JfQotCi0JLyoKLQkg KiBOZWVkIHRvIHBhc3Mgb25seSBvbmUgYm1zIHRvIGV4cHJlc3Npb25fdHJlZV93YWxrZXIgaGVs cGVyIGZ1bmN0aW9uLgotCSAqIEF2b2lkIGFsbG9jYXRpbmcgbWVtb3J5IGluIGNvbW1vbiBjYXNl IHdoZXJlIHRoZXJlIGFyZSBubyBleHRyYSBjb2xzLgotCSAqLwotCWlmICghZXh0cmFVcGRhdGVk Q29scykKLQkJYWxsVXBkYXRlZENvbHMgPSB1cGRhdGVkQ29sczsKLQllbHNlCi0JCWFsbFVwZGF0 ZWRDb2xzID0gYm1zX3VuaW9uKHVwZGF0ZWRDb2xzLCBleHRyYVVwZGF0ZWRDb2xzKTsKLQotCS8q Ci0JICogV2UgaGF2ZSB0byB3b3JrIHNsaWdodGx5IGhhcmRlciBpbiB0aGUgZXZlbnQgb2YgaW5k ZXhlZCBleHByZXNzaW9ucywKLQkgKiBidXQgdGhlIHByaW5jaXBsZSBpcyB0aGUgc2FtZSBhcyBi ZWZvcmU6IHRyeSB0byBmaW5kIGNvbHVtbnMgKFZhcnMsCi0JICogYWN0dWFsbHkpIHRoYXQgb3Zl cmxhcCB3aXRoIGtub3duLXVwZGF0ZWQgY29sdW1ucy4KLQkgKgotCSAqIElmIHdlIGZpbmQgYW55 IG1hdGNoaW5nIFZhcnMsIGRvbid0IHBhc3MgaGludCBmb3IgaW5kZXguICBPdGhlcndpc2UKLQkg KiBwYXNzIGhpbnQuCi0JICovCi0JaWR4RXhwcnMgPSBSZWxhdGlvbkdldEluZGV4RXhwcmVzc2lv bnMoaW5kZXhSZWxhdGlvbik7Ci0JaGFzZXhwcmVzc2lvbiA9IGluZGV4X2V4cHJlc3Npb25fY2hh bmdlZF93YWxrZXIoKE5vZGUgKikgaWR4RXhwcnMsCi0JCQkJCQkJCQkJCQkJYWxsVXBkYXRlZENv bHMpOwotCWxpc3RfZnJlZShpZHhFeHBycyk7Ci0JaWYgKGV4dHJhVXBkYXRlZENvbHMpCi0JCWJt c19mcmVlKGFsbFVwZGF0ZWRDb2xzKTsKLQotCWlmIChoYXNleHByZXNzaW9uKQotCXsKLQkJaW5k ZXhJbmZvLT5paV9JbmRleFVuY2hhbmdlZCA9IGZhbHNlOwotCQlyZXR1cm4gZmFsc2U7Ci0JfQot Ci0JLyoKLQkgKiBEZWxpYmVyYXRlbHkgZG9uJ3QgY29uc2lkZXIgaW5kZXggcHJlZGljYXRlcy4g IFdlIHNob3VsZCBldmVuIGdpdmUgdGhlCi0JICogaGludCB3aGVuIHJlc3VsdCByZWwncyAidXBk YXRlZCB0dXBsZSIgaGFzIG5vIGNvcnJlc3BvbmRpbmcgaW5kZXgKLQkgKiB0dXBsZSwgd2hpY2gg aXMgcG9zc2libGUgd2l0aCBhIHBhcnRpYWwgaW5kZXggKHByb3ZpZGVkIHRoZSB1c3VhbAotCSAq IGNvbmRpdGlvbnMgYXJlIG1ldCkuCi0JICovCi0JaW5kZXhJbmZvLT5paV9JbmRleFVuY2hhbmdl ZCA9IHRydWU7Ci0JcmV0dXJuIHRydWU7Ci19Ci0KLS8qCi0gKiBJbmRleGVkIGV4cHJlc3Npb24g aGVscGVyIGZvciBpbmRleF91bmNoYW5nZWRfYnlfdXBkYXRlKCkuCi0gKgotICogUmV0dXJucyB0 cnVlIHdoZW4gVmFyIHRoYXQgYXBwZWFycyB3aXRoaW4gYWxsVXBkYXRlZENvbHMgbG9jYXRlZC4K LSAqLwotc3RhdGljIGJvb2wKLWluZGV4X2V4cHJlc3Npb25fY2hhbmdlZF93YWxrZXIoTm9kZSAq bm9kZSwgQml0bWFwc2V0ICphbGxVcGRhdGVkQ29scykKLXsKLQlpZiAobm9kZSA9PSBOVUxMKQot CQlyZXR1cm4gZmFsc2U7Ci0KLQlpZiAoSXNBKG5vZGUsIFZhcikpCi0JewotCQlWYXIJCSAgICp2 YXIgPSAoVmFyICopIG5vZGU7Ci0KLQkJaWYgKGJtc19pc19tZW1iZXIodmFyLT52YXJhdHRubyAt IEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIsCi0JCQkJCQkgIGFsbFVwZGF0ZWRD b2xzKSkKLQkJewotCQkJLyogVmFyIHdhcyB1cGRhdGVkIC0tIGluZGljYXRlcyB0aGF0IHdlIHNo b3VsZCBub3QgaGludCAqLwotCQkJcmV0dXJuIHRydWU7Ci0JCX0KLQotCQkvKiBTdGlsbCBoYXZl bid0IGZvdW5kIGEgcmVhc29uIHRvIG5vdCBwYXNzIHRoZSBoaW50ICovCi0JCXJldHVybiBmYWxz ZTsKLQl9Ci0KLQlyZXR1cm4gZXhwcmVzc2lvbl90cmVlX3dhbGtlcihub2RlLCBpbmRleF9leHBy ZXNzaW9uX2NoYW5nZWRfd2Fsa2VyLAotCQkJCQkJCQkgIGFsbFVwZGF0ZWRDb2xzKTsKLX0KLQog LyoKICAqIEV4ZWNXaXRob3V0T3ZlcmxhcHNOb3RFbXB0eSAtIHJhaXNlIGFuIGVycm9yIGlmIHRo ZSB0dXBsZSBoYXMgYW4gZW1wdHkKICAqIHJhbmdlIG9yIG11bHRpcmFuZ2UgaW4gdGhlIGdpdmVu IGF0dHJpYnV0ZS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jIGIv c3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMKaW5kZXggZGQwOTJiYWNhZDkuLjlkM2E1Yjc5 ZDI3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYworKysgYi9zcmMv YmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYwpAQCAtODQ1LDggKzg0NSw2IEBAIG1ha2VJbmRleElu Zm8oaW50IG51bWF0dHJzLCBpbnQgbnVta2V5YXR0cnMsIE9pZCBhbW9pZCwgTGlzdCAqZXhwcmVz c2lvbnMsCiAJbi0+aWlfVW5pcXVlID0gdW5pcXVlOwogCW4tPmlpX051bGxzTm90RGlzdGluY3Qg PSBudWxsc19ub3RfZGlzdGluY3Q7CiAJbi0+aWlfUmVhZHlGb3JJbnNlcnRzID0gaXNyZWFkeTsK LQluLT5paV9DaGVja2VkVW5jaGFuZ2VkID0gZmFsc2U7Ci0Jbi0+aWlfSW5kZXhVbmNoYW5nZWQg PSBmYWxzZTsKIAluLT5paV9Db25jdXJyZW50ID0gY29uY3VycmVudDsKIAluLT5paV9TdW1tYXJp emluZyA9IHN1bW1hcml6aW5nOwogCW4tPmlpX1dpdGhvdXRPdmVybGFwcyA9IHdpdGhvdXRvdmVy bGFwczsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2lu Y2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggZDVhZjJmMzRkMGYuLjhlNTgzYjFkOWQzIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVk ZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtMjE2LDEwICsyMTYsNiBAQCB0eXBlZGVmIHN0cnVjdCBJ bmRleEluZm8KIAlib29sCQlpaV9OdWxsc05vdERpc3RpbmN0OwogCS8qIGlzIGl0IHZhbGlkIGZv ciBpbnNlcnRzPyAqLwogCWJvb2wJCWlpX1JlYWR5Rm9ySW5zZXJ0czsKLQkvKiBJbmRleFVuY2hh bmdlZCBzdGF0dXMgZGV0ZXJtaW5lZCB5ZXQ/ICovCi0JYm9vbAkJaWlfQ2hlY2tlZFVuY2hhbmdl ZDsKLQkvKiBhbWluc2VydCBoaW50LCBjYWNoZWQgZm9yIHJldGFpbCBpbnNlcnRzICovCi0JYm9v bAkJaWlfSW5kZXhVbmNoYW5nZWQ7CiAJLyogYXJlIHdlIGRvaW5nIGEgY29uY3VycmVudCBpbmRl eCBidWlsZD8gKi8KIAlib29sCQlpaV9Db25jdXJyZW50OwogCS8qIGRpZCB3ZSBkZXRlY3QgYW55 IGJyb2tlbiBIT1QgY2hhaW5zPyAqLwotLSAKMi41MS4yCgo= --696012d3_36a751cf_1975 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v27-0002-Track-changed-indexed-columns-in-the-executor-du.patch" RnJvbSAwNmMwYTgwOWNiNjM2YmI4NjNhMzljOGRiOWRkMTFlMDM2YjI3ZWQ2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTogU3VuLCAy NiBPY3QgMjAyNSAxMDo0OToyNSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjI3IDIvNF0gVHJhY2sg Y2hhbmdlZCBpbmRleGVkIGNvbHVtbnMgaW4gdGhlIGV4ZWN1dG9yIGR1cmluZwogVVBEQVRFcwoK UmVmYWN0b3IgZXhlY3V0b3IgdXBkYXRlIGxvZ2ljIHRvIGRldGVybWluZSB3aGljaCBpbmRleGVk IGNvbHVtbnMgaGF2ZQphY3R1YWxseSBjaGFuZ2VkIGR1cmluZyBhbiBVUERBVEUgb3BlcmF0aW9u IHJhdGhlciB0aGFuIGxlYXZpbmcgdGhpcyB1cAp0byBIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8o KSBpbiBoZWFwX3VwZGF0ZSgpLgoKRXhlY1doaWNoSW5kZXhlc1JlcXVpcmVVcGRhdGVzKCkgcmVw bGFjZXMgSGVhcERldGVybWluZXNDb2x1bW5zSW5mbygpCndoZW4gaW52b2tlZCBmcm9tIHRoZSB0 YWJsZSBBTSBBUEkgdmlhIGhlYXBhbV90dXBsZV91cGRhdGUoKS4gVGhlCnRlc3QgZm9yIGVxdWFs aXR5IHJlbWFpbnMgZGF0dW1Jc0VxdWFsKCkgYXMgYmVmb3JlLgoKVGhpcyBjaGFuZ2UgbmVjZXNz aXRhdGVkIHNvbWUgbG9naWMgY2hhbmdlcyBpbiBleGVjUmVwbGljYXRpb24oKSBhcyBpdApwZXJm b3JtcyB1cGRhdGVzIG5vdyBtdXN0IHByb3ZpZGUgdGhlIHNldCBvZiBhdHRyaWJ1dGVzIHRoYXQg YXJlIGJvdGgKY2hhbmdlZCBhbmQgcmVmZXJlbmNlZCBieSBpbmRleGVzLiAgTHVja2lsbHksIHRo aXMgaXMgYXZhaWxhYmxlIHdpdGhpbgpjYWxscyB0byBzbG90X21vZGlmeV9kYXRhKCkgd2hlcmUg TG9naWNhbFJlcFR1cGxlRGF0YSBpcyBwcm9jZXNzZWQgYW5kCmhhcyBhIHJlY29yZCBvZiB1cGRh dGVkIGF0dHJpYnV0ZXMuICBJbiB0aGlzIGNhc2UgcmF0aGVyIHRoYW4gdXNpbmcKRXhlY1doaWNo SW5kZXhlc1JlcXVpcmVVcGRhdGVzKCkgd2UgY2FuIHByZXNldmUgd2hhdCBzbG90X21vZGlmeV9k YXRhKCkKaWRlbnRpZmllcyBhcyB0aGUgbW9kaWZpZWQgc2V0IGFuZCB0aGVuIGludGVyc2VjdCB0 aGF0IHdpdGggdGhlIHNldCBvZgppbmRleGVzIG9uIHRoZSByZWxhdGlvbiBhbmQgZ2V0IHRoZSBj b3JyZWN0IHNldCBvZiBtb2RpZmllZCBpbmRleGVkCmF0dHJpYnV0ZXMgcmVxdWlyZWQgb24gaGVh cF91cGRhdGUoKS4KClRoaXMgY29tbWl0IGFsc28gZXh0ZW5kcyB0aGUgcm9sZSBpbmRleCBBTXMg cGxheSBkZXRlcm1pbmluZyBpZiB0aGV5CnJlcXVpcmUgYW4gdXBkYXRlLiBBIG5ldyBvcHRpb25h bCBpbmRleCBBTSBBUEksIGFtY29tcGFyZWRhdHVtcygpLCBpcwphZGRlZCB0byBhbGxvdyBpbmRl eCBhY2Nlc3MgbWV0aG9kcyB0byBwcm92aWRlIGN1c3RvbSBsb2dpYyBmb3IKY29tcGFyaW5nIGRh dHVtcy4gSGFzaCBhbmQgR2luIGluZGV4ZXMgbm93IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uLiBX aGVuCm5vdCBpbXBsZW1lbnRlZCB0aGUgZXhlY3V0b3Igd2lsbCBjb21wYXJlIFR1cGxlVGFibGVT bG90IGRhdHVtIGZvcgplcXVhbGl0eSB1c2luZyBkYXR1bUlzRXF1YWwoKSBhcyBiZWZvcmUuCgpC ZWNhdXNlIGhlYXBfdXBkYXRlKCkgbm93IHJlcXVpcmVzIHRoZSBjYWxsZXIgdG8gcHJvdmlkZSB0 aGUgbW9kaWZpZWQKaW5kZXhlZCBjb2x1bW5zIHNpbXBsZV9oZWFwX3VwZGF0ZSgpIGhhcyBiZWNv bWUgYSB0YWQgbW9yZSBjb21wbGV4LiAgSXQKaXMgb25seSBjYWxsZWQgZnJvbSBDYXRhbG9nVHVw bGVVcGRhdGUoKSB3aGljaCBlaXRoZXIgdXBkYXRlcyBoZWFwCnR1cGxlcyB2aWEgdGhlaXIgRm9y bV9YWFggb3IgYnkgY2FsbGluZyBoZWFwX21vZGlmeV90dXBsZSgpLiAgSW4gYm90aApjYXNlcyB0 aGUgY2FsbGVyIGRvZXMga25vdyB0aGUgbW9kaWZpZWQgc2V0IG9mIGF0dHJpYnV0ZXMsIGJ1dCBz YWRseQp0aG9zZSBhdHRyaWJ1dGVzIGFyZSBsb3N0IGJlZm9yZSBiZWluZyBwcm92aWRlZCB0byBz aW1wbGVfaGVhcF91cGRhdGUoKS4KRHVlIHRvIHRoYXQgdGhlICJzaW1wbGUiIHBhdGggaGFzIHRv IChmb3Igbm93KSByZXRhaW4gdGhlCkhlYXBEZXRlcm1pbmVDb2x1bW5zSW5mbygpIGxvZ2ljIGlu IG9yZGVyIGZvciBjYXRhbG9nIHVwZGF0ZXMgdG8KcG90ZW50aWFsbHkgdGFrZSB0aGUgSE9UIHBh dGguCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jICAgICAgICAgICAgICAgIHwg ICAxICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2ludXRpbC5jICAgICAgICAgICAgICB8ICA5 MCArKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2guYyAgICAgICAgICAgICAgICB8ICA0 NCArKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgICAgICAgIHwgIDIw ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jICAgICAgfCAgNzYg Ky0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cmVlLmMgICAgICAgICAgICB8ICAgMSAr CiBzcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jICAgICAgICAgICAgfCAgIDUgKy0K IHNyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290c3RyYXAuYyAgICAgICAgICAgICB8ICAgOCArCiBz cmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICAgICAgICAgICAgICAgfCAgNTcgKysKIHNy Yy9iYWNrZW5kL2NhdGFsb2cvaW5kZXhpbmcuYyAgICAgICAgICAgICAgICB8ICAxNiArLQogc3Jj L2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jICAgICAgICAgICAgICAgIHwgICA0ICsKIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jICAgICAgICAgICB8ICA0MSArLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jICAgICAgICB8ICAgNyArCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyAgICAgICAgfCAyODcgKysrKysrKy0KIHNyYy9i YWNrZW5kL25vZGVzL2JpdG1hcHNldC5jICAgICAgICAgICAgICAgICB8ICAgNCArCiBzcmMvYmFj a2VuZC9ub2Rlcy9tYWtlZnVuY3MuYyAgICAgICAgICAgICAgICAgfCAgIDQgKwogc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwgIDcwICstCiBzcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jICAgICAgICAgICAgfCAgMTUgKwogc3JjL2luY2x1ZGUv YWNjZXNzL2FtYXBpLmggICAgICAgICAgICAgICAgICAgIHwgIDI4ICsKIHNyYy9pbmNsdWRlL2Fj Y2Vzcy9naW4uaCAgICAgICAgICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvaW5jbHVkZS9hY2Nl c3MvaGVhcGFtLmggICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy9pbmNsdWRlL2FjY2Vz cy9uYnRyZWUuaCAgICAgICAgICAgICAgICAgICB8ICAgNCArCiBzcmMvaW5jbHVkZS9hY2Nlc3Mv dGFibGVhbS5oICAgICAgICAgICAgICAgICAgfCAgIDggKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cv aW5kZXguaCAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9l eGVjdXRvci5oICAgICAgICAgICAgICAgfCAgIDkgKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25v ZGVzLmggICAgICAgICAgICAgICAgIHwgIDIwICsKIHNyYy9pbmNsdWRlL3V0aWxzL3JlbC5oICAg ICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy9yZWxjYWNoZS5o ICAgICAgICAgICAgICAgICAgfCAgIDEgKwogLi4uL2V4cGVjdGVkL2luc2VydC1jb25mbGljdC1z cGVjY29uZmxpY3Qub3V0IHwgIDIwICsKIC4uLi9yZWdyZXNzL2V4cGVjdGVkL2hlYXBfaG90X3Vw ZGF0ZXMub3V0ICAgICB8IDY1MCArKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mv cGFyYWxsZWxfc2NoZWR1bGUgICAgICAgICAgICB8ICAgNiArCiBzcmMvdGVzdC9yZWdyZXNzL3Nx bC9oZWFwX2hvdF91cGRhdGVzLnNxbCAgICAgfCA1MTMgKysrKysrKysrKysrKysKIHNyYy90b29s cy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAgMSArCiAzNCBmaWxlcyBj aGFuZ2VkLCAxOTQ4IGluc2VydGlvbnMoKyksIDc0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaGVhcF9ob3RfdXBkYXRlcy5vdXQKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9oZWFwX2hvdF91cGRhdGVzLnNx bAoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9icmluL2JyaW4uYwppbmRleCA2ODg3ZTQyMTQ0Mi4uYWE5ZmQxMTA4MDIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvYnJpbi9icmluLmMKQEAgLTI5MCw2ICsyOTAsNyBAQCBicmluaGFuZGxlcihQR19G VU5DVElPTl9BUkdTKQogCQkuYW1wcm9wZXJ0eSA9IE5VTEwsCiAJCS5hbWJ1aWxkcGhhc2VuYW1l ID0gTlVMTCwKIAkJLmFtdmFsaWRhdGUgPSBicmludmFsaWRhdGUsCisJCS5hbWNvbXBhcmVkYXR1 bXMgPSBOVUxMLAogCQkuYW1hZGp1c3RtZW1iZXJzID0gTlVMTCwKIAkJLmFtYmVnaW5zY2FuID0g YnJpbmJlZ2luc2NhbiwKIAkJLmFtcmVzY2FuID0gYnJpbnJlc2NhbiwKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2ludXRpbC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9n aW51dGlsLmMKaW5kZXggYTU0NmNhYzE4ZDMuLjlmOTk0ZmVhZTVkIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvZ2luL2dpbnV0aWwuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lu L2dpbnV0aWwuYwpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvaW5kZXhmc20u aCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2luZGV4X3Nl bGZ1bmNzLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9y ZWwuaCIKICNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgogCkBAIC03OCw2ICs3OSw3IEBAIGdp bmhhbmRsZXIoUEdfRlVOQ1RJT05fQVJHUykKIAkJLmFtcHJvcGVydHkgPSBOVUxMLAogCQkuYW1i dWlsZHBoYXNlbmFtZSA9IGdpbmJ1aWxkcGhhc2VuYW1lLAogCQkuYW12YWxpZGF0ZSA9IGdpbnZh bGlkYXRlLAorCQkuYW1jb21wYXJlZGF0dW1zID0gZ2luY29tcGFyZWRhdHVtcywKIAkJLmFtYWRq dXN0bWVtYmVycyA9IGdpbmFkanVzdG1lbWJlcnMsCiAJCS5hbWJlZ2luc2NhbiA9IGdpbmJlZ2lu c2NhbiwKIAkJLmFtcmVzY2FuID0gZ2lucmVzY2FuLApAQCAtNDc4LDEzICs0ODAsNiBAQCBjbXBF bnRyaWVzKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIsIHZvaWQgKmFyZykKIAlyZXR1cm4g cmVzOwogfQogCi0KLS8qCi0gKiBFeHRyYWN0IHRoZSBpbmRleCBrZXkgdmFsdWVzIGZyb20gYW4g aW5kZXhhYmxlIGl0ZW0KLSAqCi0gKiBUaGUgcmVzdWx0aW5nIGtleSB2YWx1ZXMgYXJlIHNvcnRl ZCwgYW5kIGFueSBkdXBsaWNhdGVzIGFyZSByZW1vdmVkLgotICogVGhpcyBhdm9pZHMgZ2VuZXJh dGluZyByZWR1bmRhbnQgaW5kZXggZW50cmllcy4KLSAqLwogRGF0dW0gKgogZ2luRXh0cmFjdEVu dHJpZXMoR2luU3RhdGUgKmdpbnN0YXRlLCBPZmZzZXROdW1iZXIgYXR0bnVtLAogCQkJCSAgRGF0 dW0gdmFsdWUsIGJvb2wgaXNOdWxsLApAQCAtNzMwLDMgKzcyNSw4NCBAQCBnaW5idWlsZHBoYXNl bmFtZShpbnQ2NCBwaGFzZW51bSkKIAkJCXJldHVybiBOVUxMOwogCX0KIH0KKworLyoKKyAqIGdp bmNvbXBhcmVkYXR1bXMgLSBDb21wYXJlIGRhdHVtcyB0byBkZXRlcm1pbmUgaWYgdGhleSBwcm9k dWNlIGlkZW50aWNhbCBrZXlzCisgKgorICogVGhpcyBmdW5jdGlvbiBleHRyYWN0cyBrZXlzIGZy b20gYm90aCBvbGRfZGF0dW0gYW5kIG5ld19kYXR1bSB1c2luZyB0aGUKKyAqIG9wY2xhc3MncyBl eHRyYWN0VmFsdWUgZnVuY3Rpb24sIHRoZW4gY29tcGFyZXMgdGhlIGV4dHJhY3RlZCBrZXkgYXJy YXlzLgorICogUmV0dXJucyB0cnVlIGlmIHRoZSBrZXkgc2V0cyBhcmUgaWRlbnRpY2FsIChzYW1l IGtleXMsIHNhbWUgY291bnRzKS4KKyAqCisgKiBUaGlzIGVuYWJsZXMgSE9UIHVwZGF0ZXMgZm9y IEdJTiBpbmRleGVzIHdoZW4gdGhlIGluZGV4ZWQgcG9ydGlvbnMgb2YgYQorICogdmFsdWUgaGF2 ZW4ndCBjaGFuZ2VkLCBldmVuIGlmIHRoZSB2YWx1ZSBpdHNlbGYgaGFzIGNoYW5nZWQuCisgKgor ICogRXhhbXBsZTogSlNPTkIgY29sdW1uIHdpdGggR0lOIGluZGV4LiBJZiBhbiB1cGRhdGUgY2hh bmdlcyBhIG5vbi1pbmRleGVkCisgKiBrZXkgaW4gdGhlIEpTT05CIGRvY3VtZW50LCB0aGUgZXh0 cmFjdGVkIGtleXMgYXJlIGlkZW50aWNhbCBhbmQgd2UgY2FuCisgKiBkbyBhIEhPVCB1cGRhdGUu CisgKi8KK2Jvb2wKK2dpbmNvbXBhcmVkYXR1bXMoUmVsYXRpb24gaW5kZXgsIGludCBhdHRudW0s CisJCQkJIERhdHVtIG9sZF9kYXR1bSwgYm9vbCBvbGRfaXNudWxsLAorCQkJCSBEYXR1bSBuZXdf ZGF0dW0sIGJvb2wgbmV3X2lzbnVsbCkKK3sKKwlHaW5TdGF0ZQlnaW5zdGF0ZTsKKwlEYXR1bQkg ICAqb2xkX2tleXM7CisJRGF0dW0JICAgKm5ld19rZXlzOworCUdpbk51bGxDYXRlZ29yeSAqb2xk X2NhdGVnb3JpZXM7CisJR2luTnVsbENhdGVnb3J5ICpuZXdfY2F0ZWdvcmllczsKKwlpbnQzMgkJ b2xkX25rZXlzOworCWludDMyCQluZXdfbmtleXM7CisJTWVtb3J5Q29udGV4dCB0bXBjb250ZXh0 OworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKwlib29sCQlyZXN1bHQgPSB0cnVlOworCisJ LyogSGFuZGxlIE5VTEwgY2FzZXMgKi8KKwlpZiAob2xkX2lzbnVsbCAhPSBuZXdfaXNudWxsKQor CQlyZXR1cm4gZmFsc2U7CisJaWYgKG9sZF9pc251bGwpCisJCXJldHVybiB0cnVlOworCisJLyog Q3JlYXRlIHRlbXBvcmFyeSBjb250ZXh0IGZvciBleHRyYWN0aW9uIHdvcmsgKi8KKwl0bXBjb250 ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKEN1cnJlbnRNZW1vcnlDb250ZXh0LAorCQkJCQkJ CQkJICAgIkdJTiBkYXR1bSBjb21wYXJpc29uIiwKKwkJCQkJCQkJCSAgIEFMTE9DU0VUX0RFRkFV TFRfU0laRVMpOworCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8odG1wY29udGV4 dCk7CisKKwlpbml0R2luU3RhdGUoJmdpbnN0YXRlLCBpbmRleCk7CisKKwkvKiBFeHRyYWN0IGtl eXMgZnJvbSBib3RoIGRhdHVtcyB1c2luZyBleGlzdGluZyBHSU4gaW5mcmFzdHJ1Y3R1cmUgKi8K KwlvbGRfa2V5cyA9IGdpbkV4dHJhY3RFbnRyaWVzKCZnaW5zdGF0ZSwgYXR0bnVtLCBvbGRfZGF0 dW0sIG9sZF9pc251bGwsCisJCQkJCQkJCSAmb2xkX25rZXlzLCAmb2xkX2NhdGVnb3JpZXMpOwor CW5ld19rZXlzID0gZ2luRXh0cmFjdEVudHJpZXMoJmdpbnN0YXRlLCBhdHRudW0sIG5ld19kYXR1 bSwgbmV3X2lzbnVsbCwKKwkJCQkJCQkJICZuZXdfbmtleXMsICZuZXdfY2F0ZWdvcmllcyk7CisK KwkvKiBEaWZmZXJlbnQgbnVtYmVyIG9mIGtleXMsIGRlZmluaXRlbHkgZGlmZmVyZW50ICovCisJ aWYgKG9sZF9ua2V5cyAhPSBuZXdfbmtleXMpCisJeworCQlyZXN1bHQgPSBmYWxzZTsKKwkJZ290 byBjbGVhbnVwOworCX0KKworCS8qCisJICogQ29tcGFyZSB0aGUgc29ydGVkIGtleSBhcnJheXMg ZWxlbWVudC1ieS1lbGVtZW50LiBTaW5jZSBib3RoIGFycmF5cyBhcmUKKwkgKiBhbHJlYWR5IHNv cnRlZCBieSBnaW5FeHRyYWN0RW50cmllcywgd2UgY2FuIGRvIGEgc2ltcGxlIE8obikKKwkgKiBj b21wYXJpc29uLgorCSAqLworCWZvciAoaW50IGkgPSAwOyBpIDwgb2xkX25rZXlzOyBpKyspCisJ eworCQlpZiAoZ2luQ29tcGFyZUVudHJpZXMoJmdpbnN0YXRlLCBhdHRudW0sCisJCQkJCQkJICBv bGRfa2V5c1tpXSwgb2xkX2NhdGVnb3JpZXNbaV0sCisJCQkJCQkJICBuZXdfa2V5c1tpXSwgbmV3 X2NhdGVnb3JpZXNbaV0pICE9IDApCisJCXsKKwkJCXJlc3VsdCA9IGZhbHNlOworCQkJYnJlYWs7 CisJCX0KKwl9CisKK2NsZWFudXA6CisJLyogQ2xlYW4gdXAgKi8KKwlNZW1vcnlDb250ZXh0U3dp dGNoVG8ob2xkY29udGV4dCk7CisJTWVtb3J5Q29udGV4dERlbGV0ZSh0bXBjb250ZXh0KTsKKwor CXJldHVybiByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9o YXNoLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMKaW5kZXggZTg4ZGRiMzJhMDUu LjQ5YTk5OTk4MDgzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaC5jCkBAIC01MCw2ICs1MCwxMCBAQCBz dGF0aWMgdm9pZCBoYXNoYnVpbGRDYWxsYmFjayhSZWxhdGlvbiBpbmRleCwKIAkJCQkJCQkgIHZv aWQgKnN0YXRlKTsKIAogCitzdGF0aWMgYm9vbCBoYXNoY29tcGFyZWRhdHVtcyhSZWxhdGlvbiBp bmRleCwgaW50IGF0dG51bSwKKwkJCQkJCQkgIERhdHVtIG9sZF9kYXR1bSwgYm9vbCBvbGRfaXNu dWxsLAorCQkJCQkJCSAgRGF0dW0gbmV3X2RhdHVtLCBib29sIG5ld19pc251bGwpOworCiAvKgog ICogSGFzaCBoYW5kbGVyIGZ1bmN0aW9uOiByZXR1cm4gSW5kZXhBbVJvdXRpbmUgd2l0aCBhY2Nl c3MgbWV0aG9kIHBhcmFtZXRlcnMKICAqIGFuZCBjYWxsYmFja3MuCkBAIC05OCw2ICsxMDIsNyBA QCBoYXNoaGFuZGxlcihQR19GVU5DVElPTl9BUkdTKQogCQkuYW1wcm9wZXJ0eSA9IE5VTEwsCiAJ CS5hbWJ1aWxkcGhhc2VuYW1lID0gTlVMTCwKIAkJLmFtdmFsaWRhdGUgPSBoYXNodmFsaWRhdGUs CisJCS5hbWNvbXBhcmVkYXR1bXMgPSBoYXNoY29tcGFyZWRhdHVtcywKIAkJLmFtYWRqdXN0bWVt YmVycyA9IGhhc2hhZGp1c3RtZW1iZXJzLAogCQkuYW1iZWdpbnNjYW4gPSBoYXNoYmVnaW5zY2Fu LAogCQkuYW1yZXNjYW4gPSBoYXNocmVzY2FuLApAQCAtOTQ0LDMgKzk0OSw0MiBAQCBoYXNodHJh bnNsYXRlY21wdHlwZShDb21wYXJlVHlwZSBjbXB0eXBlLCBPaWQgb3BmYW1pbHkpCiAJCXJldHVy biBIVEVxdWFsU3RyYXRlZ3lOdW1iZXI7CiAJcmV0dXJuIEludmFsaWRTdHJhdGVneTsKIH0KKwor LyoKKyAqIGhhc2hjb21wYXJlZGF0dW1zIC0gQ29tcGFyZSBkYXR1bXMgdG8gZGV0ZXJtaW5lIGlm IHRoZXkgcHJvZHVjZSBpZGVudGljYWwga2V5cworICoKKyAqIFJldHVybnMgdHJ1ZSBpZiB0aGUg aGFzaCB2YWx1ZXMgYXJlIGlkZW50aWNhbCAoaW5kZXggZG9lc24ndCBuZWVkIHVwZGF0ZSkuCisg Ki8KK2Jvb2wKK2hhc2hjb21wYXJlZGF0dW1zKFJlbGF0aW9uIGluZGV4LCBpbnQgYXR0bnVtLAor CQkJCSAgRGF0dW0gb2xkX2RhdHVtLCBib29sIG9sZF9pc251bGwsCisJCQkJICBEYXR1bSBuZXdf ZGF0dW0sIGJvb2wgbmV3X2lzbnVsbCkKK3sKKwl1aW50MzIJCW9sZF9oYXNoa2V5OworCXVpbnQz MgkJbmV3X2hhc2hrZXk7CisKKwkvKiBJZiBib3RoIGFyZSBOVUxMLCB0aGV5J3JlIGVxdWFsICov CisJaWYgKG9sZF9pc251bGwgJiYgbmV3X2lzbnVsbCkKKwkJcmV0dXJuIHRydWU7CisKKwkvKiBJ ZiBOVUxMIHN0YXR1cyBkaWZmZXJzLCB0aGV5J3JlIG5vdCBlcXVhbCAqLworCWlmIChvbGRfaXNu dWxsICE9IG5ld19pc251bGwpCisJCXJldHVybiBmYWxzZTsKKworCS8qCisJICogX2hhc2hfZGF0 dW0yaGFzaGtleSgpIGlzIHVzZWQgYmVjYXVzZSB3ZSBrbm93IHRoaXMgY2FuJ3QgYmUgYSBjcm9z cworCSAqIHR5cGUgY29tcGFyaXNvbi4KKwkgKi8KKwlvbGRfaGFzaGtleSA9IF9oYXNoX2RhdHVt Mmhhc2hrZXkoaW5kZXgsIG9sZF9kYXR1bSk7CisJbmV3X2hhc2hrZXkgPSBfaGFzaF9kYXR1bTJo YXNoa2V5KGluZGV4LCBuZXdfZGF0dW0pOworCisJLyoKKwkgKiBJZiBoYXNoIGtleXMgYXJlIGlk ZW50aWNhbCwgdGhlIGluZGV4IGVudHJ5IHdvdWxkIGJlIHRoZSBzYW1lLiBSZXR1cm4KKwkgKiB0 cnVlIHRvIGluZGljYXRlIG5vIGluZGV4IHVwZGF0ZSBuZWVkZWQuCisJICoKKwkgKiBOb3RlOiBI YXNoIGNvbGxpc2lvbnMgYXJlIHJhcmUgYnV0IHBvc3NpYmxlLiBJZiBoYXNoKHgpID09IGhhc2go eSkgYnV0CisJICogeCAhPSB5LCB0aGUgaGFzaCBpbmRleCBzdGlsbCB0cmVhdHMgdGhlbSBpZGVu dGljYWxseSwgc28gd2UgY29ycmVjdGx5CisJICogcmV0dXJuIHRydWUuCisJICovCisJcmV0dXJu IChvbGRfaGFzaGtleSA9PSBuZXdfaGFzaGtleSk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5j CmluZGV4IDI1NzlmMjFlMjEyLi4wMjNkMDU5NTM0OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt LmMKQEAgLTMyODEsMTIgKzMyODEsMTIgQEAgc2ltcGxlX2hlYXBfZGVsZXRlKFJlbGF0aW9uIHJl bGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKnRpZCkKICAqIGdlbmVyYXRlZCBieSBhbm90 aGVyIHRyYW5zYWN0aW9uKS4KICAqLwogVE1fUmVzdWx0Ci1oZWFwX3VwZGF0ZShSZWxhdGlvbiBy ZWxhdGlvbiwgSGVhcFR1cGxlRGF0YSAqb2xkdHVwLAotCQkJSGVhcFR1cGxlIG5ld3R1cCwgQ29t bWFuZElkIGNpZCwgU25hcHNob3QgY3Jvc3NjaGVjaywgYm9vbCB3YWl0LAotCQkJVE1fRmFpbHVy ZURhdGEgKnRtZmQsIExvY2tUdXBsZU1vZGUgKmxvY2ttb2RlLCBCdWZmZXIgYnVmZmVyLAotCQkJ UGFnZSBwYWdlLCBCbG9ja051bWJlciBibG9jaywgSXRlbUlkIGxwLCBCaXRtYXBzZXQgKmhvdF9h dHRycywKLQkJCUJpdG1hcHNldCAqc3VtX2F0dHJzLCBCaXRtYXBzZXQgKnBrX2F0dHJzLCBCaXRt YXBzZXQgKnJpZF9hdHRycywKLQkJCUJpdG1hcHNldCAqbWl4X2F0dHJzLCBCdWZmZXIgKnZtYnVm ZmVyLAoraGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZURhdGEgKm9sZHR1 cCwgSGVhcFR1cGxlIG5ld3R1cCwKKwkJCUNvbW1hbmRJZCBjaWQsIFNuYXBzaG90IGNyb3NzY2hl Y2ssIGJvb2wgd2FpdCwKKwkJCVRNX0ZhaWx1cmVEYXRhICp0bWZkLCBMb2NrVHVwbGVNb2RlICps b2NrbW9kZSwKKwkJCUJ1ZmZlciBidWZmZXIsIFBhZ2UgcGFnZSwgQmxvY2tOdW1iZXIgYmxvY2ss IEl0ZW1JZCBscCwKKwkJCUJpdG1hcHNldCAqaG90X2F0dHJzLCBCaXRtYXBzZXQgKnN1bV9hdHRy cywgQml0bWFwc2V0ICpwa19hdHRycywKKwkJCUJpdG1hcHNldCAqcmlkX2F0dHJzLCBjb25zdCBC aXRtYXBzZXQgKm1peF9hdHRycywgQnVmZmVyICp2bWJ1ZmZlciwKIAkJCWJvb2wgcmVwX2lkX2tl eV9yZXF1aXJlZCwgVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4ZXMpCiB7CiAJVE1fUmVz dWx0CXJlc3VsdDsKQEAgLTQzNTUsOCArNDM1NSw5IEBAIEhlYXBEZXRlcm1pbmVDb2x1bW5zSW5m byhSZWxhdGlvbiByZWxhdGlvbiwKICAqIFRoaXMgcm91dGluZSBtYXkgYmUgdXNlZCB0byB1cGRh dGUgYSB0dXBsZSB3aGVuIGNvbmN1cnJlbnQgdXBkYXRlcyBvZiB0aGUKICAqIHRhcmdldCB0dXBs ZSBhcmUgbm90IGV4cGVjdGVkIChmb3IgZXhhbXBsZSwgYmVjYXVzZSB3ZSBoYXZlIGEgbG9jayBv biB0aGUKICAqIHJlbGF0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgdHVwbGUpLiAgQW55IGZhaWx1 cmUgaXMgcmVwb3J0ZWQgdmlhIGVyZXBvcnQoKS4KKyAqIFJldHVybnMgdGhlIHNldCBvZiBtb2Rp ZmllZCBpbmRleGVkIGF0dHJpYnV0ZXMuCiAgKi8KLXZvaWQKK0JpdG1hcHNldCAqCiBzaW1wbGVf aGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3Rp ZCwgSGVhcFR1cGxlIHR1cGxlLAogCQkJCSAgIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRl eGVzKQogewpAQCAtNDQ4NSw3ICs0NDg2LDcgQEAgc2ltcGxlX2hlYXBfdXBkYXRlKFJlbGF0aW9u IHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSB0dXAKIAog CQllbG9nKEVSUk9SLCAidHVwbGUgY29uY3VycmVudGx5IGRlbGV0ZWQiKTsKIAotCQlyZXR1cm47 CisJCXJldHVybiBOVUxMOwogCX0KIAogCS8qCkBAIC00NTE4LDcgKzQ1MTksNiBAQCBzaW1wbGVf aGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3Rp ZCwgSGVhcFR1cGxlIHR1cAogCWJtc19mcmVlKHN1bV9hdHRycyk7CiAJYm1zX2ZyZWUocGtfYXR0 cnMpOwogCWJtc19mcmVlKHJpZF9hdHRycyk7Ci0JYm1zX2ZyZWUobWl4X2F0dHJzKTsKIAlibXNf ZnJlZShpZHhfYXR0cnMpOwogCiAJc3dpdGNoIChyZXN1bHQpCkBAIC00NTQ0LDYgKzQ1NDQsOCBA QCBzaW1wbGVfaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVy RGF0YSAqb3RpZCwgSGVhcFR1cGxlIHR1cAogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBo ZWFwX3VwZGF0ZSBzdGF0dXM6ICV1IiwgcmVzdWx0KTsKIAkJCWJyZWFrOwogCX0KKworCXJldHVy biBtaXhfYXR0cnM7CiB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVy LmMKaW5kZXggN2Q4YzgwZDNmZjcuLmQxNzEyNDcxNDVjIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTMxNSw5ICszMTUsMTIgQEAgaGVhcGFtX3R1cGxlX2Rl bGV0ZShSZWxhdGlvbiByZWxhdGlvbiwgSXRlbVBvaW50ZXIgdGlkLCBDb21tYW5kSWQgY2lkLAog CiBzdGF0aWMgVE1fUmVzdWx0CiBoZWFwYW1fdHVwbGVfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9u LCBJdGVtUG9pbnRlciBvdGlkLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKLQkJCQkJQ29tbWFuZElk IGNpZCwgU25hcHNob3Qgc25hcHNob3QsIFNuYXBzaG90IGNyb3NzY2hlY2ssCi0JCQkJCWJvb2wg d2FpdCwgVE1fRmFpbHVyZURhdGEgKnRtZmQsCi0JCQkJCUxvY2tUdXBsZU1vZGUgKmxvY2ttb2Rl LCBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKKwkJCQkJQ29tbWFuZElkIGNpZCwg U25hcHNob3Qgc25hcHNob3QsCisJCQkJCVNuYXBzaG90IGNyb3NzY2hlY2ssIGJvb2wgd2FpdCwK KwkJCQkJVE1fRmFpbHVyZURhdGEgKnRtZmQsCisJCQkJCUxvY2tUdXBsZU1vZGUgKmxvY2ttb2Rl LAorCQkJCQljb25zdCBCaXRtYXBzZXQgKm1peF9hdHRycywKKwkJCQkJVFVfVXBkYXRlSW5kZXhl cyAqdXBkYXRlX2luZGV4ZXMpCiB7CiAJYm9vbAkJcmVwX2lkX2tleV9yZXF1aXJlZCA9IGZhbHNl OwogCWJvb2wJCXNob3VsZEZyZWUgPSB0cnVlOwpAQCAtMzMyLDcgKzMzNSw2IEBAIGhlYXBhbV90 dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIEl0ZW1Qb2ludGVyIG90aWQsIFR1cGxlVGFi bGVTbG90ICpzbG90LAogCQkJICAgKnN1bV9hdHRycywKIAkJCSAgICpwa19hdHRycywKIAkJCSAg ICpyaWRfYXR0cnMsCi0JCQkgICAqbWl4X2F0dHJzLAogCQkJICAgKmlkeF9hdHRyczsKIAlUTV9S ZXN1bHQJcmVzdWx0OwogCkBAIC00MDUsMjUgKzQwNyw2NiBAQCBoZWFwYW1fdHVwbGVfdXBkYXRl KFJlbGF0aW9uIHJlbGF0aW9uLCBJdGVtUG9pbnRlciBvdGlkLCBUdXBsZVRhYmxlU2xvdCAqc2xv dCwKIAogCUFzc2VydChJdGVtSWRJc05vcm1hbChscCkpOwogCi0JLyoKLQkgKiBQYXJ0aWFsbHkg Y29uc3RydWN0IHRoZSBvbGR0dXAgZm9yIEhlYXBEZXRlcm1pbmVDb2x1bW5zSW5mbyB0byB3b3Jr IGFuZAotCSAqIHRoZW4gcGFzcyB0aGF0IG9uIHRvIGhlYXBfdXBkYXRlLgotCSAqLwogCW9sZHR1 cC50X3RhYmxlT2lkID0gUmVsYXRpb25HZXRSZWxpZChyZWxhdGlvbik7CiAJb2xkdHVwLnRfZGF0 YSA9IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VHZXRJdGVtKHBhZ2UsIGxwKTsKIAlvbGR0dXAudF9s ZW4gPSBJdGVtSWRHZXRMZW5ndGgobHApOwogCW9sZHR1cC50X3NlbGYgPSAqb3RpZDsKIAotCW1p eF9hdHRycyA9IEhlYXBEZXRlcm1pbmVDb2x1bW5zSW5mbyhyZWxhdGlvbiwgaWR4X2F0dHJzLCBy aWRfYXR0cnMsCi0JCQkJCQkJCQkJICZvbGR0dXAsIHR1cGxlLCAmcmVwX2lkX2tleV9yZXF1aXJl ZCk7Ci0KIAkvKgotCSAqIFdlJ2xsIG5lZWQgdG8gV0FMIGxvZyB0aGUgcmVwbGljYSBpZGVudGl0 eSBhdHRyaWJ1dGVzIGlmIGVpdGhlciB0aGV5Ci0JICogb3ZlcmxhcCB3aXRoIHRoZSBtb2RpZmll ZCBpbmRleGVkIGF0dHJpYnV0ZXMgb3IsIGFzIHdlJ3ZlIGNoZWNrZWQgZm9yCi0JICoganVzdCBu b3cgaW4gSGVhcERldGVybWluZUNvbHVtbnNJbmZvLCB0aGV5IHdlcmUgdW5tb2RpZmllZCBleHRl cm5hbAotCSAqIGluZGV4ZWQgYXR0cmlidXRlcy4KKwkgKiBXZSdsbCBuZWVkIHRvIGluY2x1ZGUg dGhlIHJlcGxpY2EgaWRlbnRpdHkga2V5IHdoZW4gZWl0aGVyIHRoZSBpZGVudGl0eQorCSAqIGtl eSBhdHRyaWJ1dGVzIG92ZXJsYXAgd2l0aCB0aGUgbW9kaWZpZWQgaW5kZXggYXR0cmlidXRlcyBv ciB3aGVuIHRoZQorCSAqIHJlcGxpY2EgaWRlbnRpdHkgYXR0cmlidXRlcyBhcmUgc3RvcmVkIGV4 dGVybmFsbHkuICBUaGlzIGlzIHJlcXVpcmVkCisJICogYmVjYXVzZSBmb3Igc3VjaCBhdHRyaWJ1 dGVzIHRoZSBmbGF0dGVuZWQgdmFsdWUgd29uJ3QgYmUgV0FMIGxvZ2dlZCBhcworCSAqIHBhcnQg b2YgdGhlIG5ldyB0dXBsZSBzbyB3ZSBtdXN0IGRldGVybWluZSBpZiB3ZSBuZWVkIHRvIGV4dHJh Y3QgYW5kCisJICogaW5jbHVkZSB0aGVtIGFzIHBhcnQgb2YgdGhlIG9sZF9rZXlfdHVwbGUgKHNl ZSBFeHRyYWN0UmVwbGljYUlkZW50aXR5KS4KIAkgKi8KLQlyZXBfaWRfa2V5X3JlcXVpcmVkID0g cmVwX2lkX2tleV9yZXF1aXJlZCB8fCBibXNfb3ZlcmxhcChtaXhfYXR0cnMsIHJpZF9hdHRycyk7 CisJcmVwX2lkX2tleV9yZXF1aXJlZCA9IGJtc19vdmVybGFwKG1peF9hdHRycywgcmlkX2F0dHJz KTsKKwlpZiAoIXJlcF9pZF9rZXlfcmVxdWlyZWQpCisJeworCQlCaXRtYXBzZXQgICphdHRyczsK KwkJVHVwbGVEZXNjCXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbGF0aW9uKTsKKwkJaW50 CQkJYXR0aWR4ID0gLTE7CisKKwkJLyoKKwkJICogV2UgZG9uJ3Qgb3duIGlkeF9hdHRycyBzbyB3 ZSdsbCBjb3B5IGl0IGFuZCByZW1vdmUgdGhlIG1vZGlmaWVkIHNldAorCQkgKiB0byByZWR1Y2Ug dGhlIGF0dHJpYnV0ZXMgd2UgbmVlZCB0byB0ZXN0IGluIHRoZSB3aGlsZSBsb29wIGFuZAorCQkg KiBhdm9pZCBhIHR3byBicmFuY2hlcyBpbiB0aGUgbG9vcC4KKwkJICovCisJCWF0dHJzID0gYm1z X2RpZmZlcmVuY2UoaWR4X2F0dHJzLCBtaXhfYXR0cnMpOworCQlhdHRycyA9IGJtc19pbnRfbWVt YmVycyhhdHRycywgcmlkX2F0dHJzKTsKKworCQl3aGlsZSAoKGF0dGlkeCA9IGJtc19uZXh0X21l bWJlcihhdHRycywgYXR0aWR4KSkgPj0gMCkKKwkJeworCQkJLyoKKwkJCSAqIGF0dGlkeCBpcyB6 ZXJvLWJhc2VkLCBhdHRybnVtIGlzIHRoZSBub3JtYWwgYXR0cmlidXRlIG51bWJlcgorCQkJICov CisJCQlBdHRyTnVtYmVyCWF0dHJudW0gPSBhdHRpZHggKyBGaXJzdExvd0ludmFsaWRIZWFwQXR0 cmlidXRlTnVtYmVyOworCQkJRGF0dW0JCXZhbHVlOworCQkJYm9vbAkJaXNudWxsOworCisJCQkv KgorCQkJICogU3lzdGVtIGF0dHJpYnV0ZXMgYXJlIG5vdCBhZGRlZCBpbnRvIGludGVyZXN0aW5n X2F0dHJzIGluCisJCQkgKiByZWxjYWNoZQorCQkJICovCisJCQlBc3NlcnQoYXR0cm51bSA+IDAp OworCisJCQl2YWx1ZSA9IGhlYXBfZ2V0YXR0cigmb2xkdHVwLCBhdHRybnVtLCB0dXBkZXNjLCAm aXNudWxsKTsKKworCQkJLyogTm8gbmVlZCB0byBjaGVjayBhdHRyaWJ1dGVzIHRoYXQgY2FuJ3Qg YmUgc3RvcmVkIGV4dGVybmFsbHkgKi8KKwkJCWlmIChpc251bGwgfHwKKwkJCQlUdXBsZURlc2ND b21wYWN0QXR0cih0dXBkZXNjLCBhdHRybnVtIC0gMSktPmF0dGxlbiAhPSAtMSkKKwkJCQljb250 aW51ZTsKKworCQkJLyogQ2hlY2sgaWYgdGhlIG9sZCB0dXBsZSdzIGF0dHJpYnV0ZSBpcyBzdG9y ZWQgZXh0ZXJuYWxseSAqLworCQkJaWYgKFZBUkFUVF9JU19FWFRFUk5BTCgoc3RydWN0IHZhcmxl bmEgKikgRGF0dW1HZXRQb2ludGVyKHZhbHVlKSkpCisJCQl7CisJCQkJcmVwX2lkX2tleV9yZXF1 aXJlZCA9IHRydWU7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKworCQlibXNfZnJlZShhdHRycyk7 CisJfQogCiAJLyogVXBkYXRlIHRoZSB0dXBsZSB3aXRoIHRhYmxlIG9pZCAqLwogCXNsb3QtPnR0 c190YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pOwpAQCAtNDM3LDcgKzQ4MCw2 IEBAIGhlYXBhbV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIEl0ZW1Qb2ludGVyIG90 aWQsIFR1cGxlVGFibGVTbG90ICpzbG90LAogCWJtc19mcmVlKHN1bV9hdHRycyk7CiAJYm1zX2Zy ZWUocGtfYXR0cnMpOwogCWJtc19mcmVlKHJpZF9hdHRycyk7Ci0JYm1zX2ZyZWUobWl4X2F0dHJz KTsKIAlibXNfZnJlZShpZHhfYXR0cnMpOwogCiAJSXRlbVBvaW50ZXJDb3B5KCZ0dXBsZS0+dF9z ZWxmLCAmc2xvdC0+dHRzX3RpZCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0 cmVlL25idHJlZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRyZWUuYwppbmRleCAz ZGVjMWVlNjU3ZC4uYjk3NTYxMmJiZGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9u YnRyZWUvbmJ0cmVlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRyZWUuYwpA QCAtMTU2LDYgKzE1Niw3IEBAIGJ0aGFuZGxlcihQR19GVU5DVElPTl9BUkdTKQogCQkuYW1wcm9w ZXJ0eSA9IGJ0cHJvcGVydHksCiAJCS5hbWJ1aWxkcGhhc2VuYW1lID0gYnRidWlsZHBoYXNlbmFt ZSwKIAkJLmFtdmFsaWRhdGUgPSBidHZhbGlkYXRlLAorCQkuYW1jb21wYXJlZGF0dW1zID0gTlVM TCwKIAkJLmFtYWRqdXN0bWVtYmVycyA9IGJ0YWRqdXN0bWVtYmVycywKIAkJLmFtYmVnaW5zY2Fu ID0gYnRiZWdpbnNjYW4sCiAJCS5hbXJlc2NhbiA9IGJ0cmVzY2FuLApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJs ZS90YWJsZWFtLmMKaW5kZXggODc0OTE3OTY1MjMuLjQ1OGQ0OGNhNzllIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy90YWJsZS90YWJsZWFtLmMKQEAgLTM2Nyw2ICszNjcsNyBAQCB2b2lkCiBzaW1wbGVfdGFibGVf dHVwbGVfdXBkYXRlKFJlbGF0aW9uIHJlbCwgSXRlbVBvaW50ZXIgb3RpZCwKIAkJCQkJCSAgVHVw bGVUYWJsZVNsb3QgKnNsb3QsCiAJCQkJCQkgIFNuYXBzaG90IHNuYXBzaG90LAorCQkJCQkJICBj b25zdCBCaXRtYXBzZXQgKm1peF9hdHRycywKIAkJCQkJCSAgVFVfVXBkYXRlSW5kZXhlcyAqdXBk YXRlX2luZGV4ZXMpCiB7CiAJVE1fUmVzdWx0CXJlc3VsdDsKQEAgLTM3Nyw3ICszNzgsOSBAQCBz aW1wbGVfdGFibGVfdHVwbGVfdXBkYXRlKFJlbGF0aW9uIHJlbCwgSXRlbVBvaW50ZXIgb3RpZCwK IAkJCQkJCQkJR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKSwKIAkJCQkJCQkJc25hcHNob3QsIElu dmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJdHJ1ZSAvKiB3YWl0IGZvciBjb21taXQgKi8gLAotCQkJ CQkJCQkmdG1mZCwgJmxvY2ttb2RlLCB1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJCSZ0bWZkLCAm bG9ja21vZGUsCisJCQkJCQkJCW1peF9hdHRycywKKwkJCQkJCQkJdXBkYXRlX2luZGV4ZXMpOwog CiAJc3dpdGNoIChyZXN1bHQpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYm9vdHN0cmFw L2Jvb3RzdHJhcC5jIGIvc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3RzdHJhcC5jCmluZGV4IGRk NTc2MjRiNGY5Li44MTM0N2M3YjQ3ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYm9vdHN0cmFw L2Jvb3RzdHJhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290c3RyYXAuYwpAQCAt OTYzLDEwICs5NjMsMTggQEAgaW5kZXhfcmVnaXN0ZXIoT2lkIGhlYXAsCiAJbmV3aW5kLT5pbF9p bmZvLT5paV9FeHByZXNzaW9ucyA9CiAJCWNvcHlPYmplY3QoaW5kZXhJbmZvLT5paV9FeHByZXNz aW9ucyk7CiAJbmV3aW5kLT5pbF9pbmZvLT5paV9FeHByZXNzaW9uc1N0YXRlID0gTklMOworCS8q IGV4cHJlc3Npb24gYXR0cnMgd2lsbCBsaWtlbHkgYmUgbnVsbCwgYnV0IG1heSBhcyB3ZWxsIGNv cHkgaXQgKi8KKwluZXdpbmQtPmlsX2luZm8tPmlpX0V4cHJlc3Npb25zQXR0cnMgPQorCQljb3B5 T2JqZWN0KGluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnNBdHRycyk7CiAJLyogcHJlZGljYXRlIHdp bGwgbGlrZWx5IGJlIG51bGwsIGJ1dCBtYXkgYXMgd2VsbCBjb3B5IGl0ICovCiAJbmV3aW5kLT5p bF9pbmZvLT5paV9QcmVkaWNhdGUgPQogCQljb3B5T2JqZWN0KGluZGV4SW5mby0+aWlfUHJlZGlj YXRlKTsKIAluZXdpbmQtPmlsX2luZm8tPmlpX1ByZWRpY2F0ZVN0YXRlID0gTlVMTDsKKwkvKiBw cmVkaWNhdGUgYXR0cnMgd2lsbCBsaWtlbHkgYmUgbnVsbCwgYnV0IG1heSBhcyB3ZWxsIGNvcHkg aXQgKi8KKwluZXdpbmQtPmlsX2luZm8tPmlpX1ByZWRpY2F0ZUF0dHJzID0KKwkJY29weU9iamVj dChpbmRleEluZm8tPmlpX1ByZWRpY2F0ZUF0dHJzKTsKKwluZXdpbmQtPmlsX2luZm8tPmlpX0No ZWNrZWRQcmVkaWNhdGUgPSBmYWxzZTsKKwluZXdpbmQtPmlsX2luZm8tPmlpX1ByZWRpY2F0ZVNh dGlzZmllZCA9IGZhbHNlOwogCS8qIG5vIGV4Y2x1c2lvbiBjb25zdHJhaW50cyBhdCBib290c3Ry YXAgdGltZSwgc28gbm8gbmVlZCB0byBjb3B5ICovCiAJQXNzZXJ0KGluZGV4SW5mby0+aWlfRXhj bHVzaW9uT3BzID09IE5VTEwpOwogCUFzc2VydChpbmRleEluZm8tPmlpX0V4Y2x1c2lvblByb2Nz ID09IE5VTEwpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIvc3Jj L2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IDQzZGU0MmNlMzllLi5mZTUzNmM5NzQwZiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvaW5kZXguYwpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy9oZWFw YW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvbXVsdGl4YWN0LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3Jl bHNjYW4uaCIKKyNpbmNsdWRlICJhY2Nlc3Mvc3lzYXR0ci5oIgogI2luY2x1ZGUgImFjY2Vzcy90 YWJsZWFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RvYXN0X2NvbXByZXNzaW9uLmgiCiAjaW5jbHVk ZSAiYWNjZXNzL3RyYW5zYW0uaCIKQEAgLTU4LDYgKzU5LDcgQEAKICNpbmNsdWRlICJjb21tYW5k cy90cmlnZ2VyLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJt aXNjYWRtaW4uaCIKKyNpbmNsdWRlICJub2Rlcy9leGVjbm9kZXMuaCIKICNpbmNsdWRlICJub2Rl cy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKICNpbmNsdWRlICJv cHRpbWl6ZXIvb3B0aW1pemVyLmgiCkBAIC0yNDEyLDYgKzI0MTQsNjEgQEAgaW5kZXhfZHJvcChP aWQgaW5kZXhJZCwgYm9vbCBjb25jdXJyZW50LCBib29sIGNvbmN1cnJlbnRfbG9ja19tb2RlKQog ICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogICovCiAKKy8qIC0tLS0tLS0tLS0tLS0tLS0KKyAqIEJ1aWxkVXBkYXRlSW5k ZXhJbmZvCisgKgorICogRm9yIGV4cHJlc3Npb24gaW5kZXhlcyB1cGRhdGVzIG1heSBub3QgY2hh bmdlIHRoZSBpbmRleGVkIHZhbHVlIGFsbG93aW5nCisgKiBmb3IgYSBIT1QgdXBkYXRlLiAgQWRk IGluZm9ybWF0aW9uIHRvIHRoZSBJbmRleEluZm8gdG8gYWxsb3cgZm9yIGNoZWNraW5nCisgKiBp ZiB0aGUgaW5kZXhlZCB2YWx1ZSBoYXMgY2hhbmdlZC4KKyAqCisgKiBEbyB0aGlzIHByb2Nlc3Np bmcgaGVyZSByYXRoZXIgdGhhbiBpbiBCdWlsZEluZGV4SW5mbygpIHRvIG5vdCBpbmN1ciB0aGUK KyAqIG92ZXJoZWFkIGluIHRoZSBjb21tb24gbm9uLWV4cHJlc3Npb24gY2FzZXMuCisgKiAtLS0t LS0tLS0tLS0tLS0tCisgKi8KK3ZvaWQKK0J1aWxkVXBkYXRlSW5kZXhJbmZvKFJlc3VsdFJlbElu Zm8gKnJlc3VsdFJlbEluZm8pCit7CisJZm9yIChpbnQgaiA9IDA7IGogPCByZXN1bHRSZWxJbmZv LT5yaV9OdW1JbmRpY2VzOyBqKyspCisJeworCQlpbnQJCQlpOworCQlpbnQJCQlpbmRuYXR0czsK KwkJQml0bWFwc2V0ICAqYXR0cnMgPSBOVUxMOworCQlJbmRleEluZm8gICppaSA9IHJlc3VsdFJl bEluZm8tPnJpX0luZGV4UmVsYXRpb25JbmZvW2pdOworCisJCWluZG5hdHRzID0gaWktPmlpX051 bUluZGV4QXR0cnM7CisKKwkJLyogQ29sbGVjdCBrZXkgYXR0cmlidXRlcyB1c2VkIGJ5IHRoZSBp bmRleCwga2V5IGFuZCBpbmNsdWRpbmcgKi8KKwkJZm9yIChpID0gMDsgaSA8IGluZG5hdHRzOyBp KyspCisJCXsKKwkJCUF0dHJOdW1iZXIJYXR0bnVtID0gaWktPmlpX0luZGV4QXR0ck51bWJlcnNb aV07CisKKwkJCWlmIChhdHRudW0gIT0gMCkKKwkJCQlhdHRycyA9IGJtc19hZGRfbWVtYmVyKGF0 dHJzLCBhdHRudW0gLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyKTsKKwkJfQor CisJCS8qIENvbGxlY3QgYXR0cmlidXRlcyB1c2VkIGluIHRoZSBleHByZXNzaW9uICovCisJCWlm IChpaS0+aWlfRXhwcmVzc2lvbnMpCisJCQlwdWxsX3ZhcmF0dG5vcygoTm9kZSAqKSBpaS0+aWlf RXhwcmVzc2lvbnMsCisJCQkJCQkgICByZXN1bHRSZWxJbmZvLT5yaV9SYW5nZVRhYmxlSW5kZXgs CisJCQkJCQkgICAmaWktPmlpX0V4cHJlc3Npb25zQXR0cnMpOworCisJCS8qIENvbGxlY3QgYXR0 cmlidXRlcyB1c2VkIGluIHRoZSBwcmVkaWNhdGUgKi8KKwkJaWYgKGlpLT5paV9QcmVkaWNhdGUp CisJCQlwdWxsX3ZhcmF0dG5vcygoTm9kZSAqKSBpaS0+aWlfUHJlZGljYXRlLAorCQkJCQkJICAg cmVzdWx0UmVsSW5mby0+cmlfUmFuZ2VUYWJsZUluZGV4LAorCQkJCQkJICAgJmlpLT5paV9QcmVk aWNhdGVBdHRycyk7CisKKwkJLyoKKwkJICogQ29tYmluZSBrZXksIGluY2x1ZGluZywgYW5kIGV4 cHJlc3Npb24sIGJ1dCBub3QgcGFydGlhbCBpbmRleAorCQkgKiBwcmVkaWNhdGUgYXR0cmlidXRl cy4KKwkJICovCisJCWlpLT5paV9JbmRleGVkQXR0cnMgPSBibXNfdW5pb24oYXR0cnMsIGlpLT5p aV9FeHByZXNzaW9uc0F0dHJzKTsKKworCQkvKiBBbGwgaW5kZXhlcyBzaG91bGQgaW5kZXggKnNv bWV0aGluZyohICovCisJCUFzc2VydCghYm1zX2lzX2VtcHR5KGlpLT5paV9JbmRleGVkQXR0cnMp KTsKKwl9Cit9CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0KICAqCQlCdWlsZEluZGV4SW5mbwogICoJ CQlDb25zdHJ1Y3QgYW4gSW5kZXhJbmZvIHJlY29yZCBmb3IgYW4gb3BlbiBpbmRleApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleGluZy5jIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9pbmRleGluZy5jCmluZGV4IDBhMWE2OGUwNjQ0Li42OTBhMjUxMTAyMyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cv aW5kZXhpbmcuYwpAQCAtMTAyLDcgKzEwMiw3IEBAIENhdGFsb2dJbmRleEluc2VydChDYXRhbG9n SW5kZXhTdGF0ZSBpbmRzdGF0ZSwgSGVhcFR1cGxlIGhlYXBUdXBsZSwKIAkgKiBHZXQgaW5mb3Jt YXRpb24gZnJvbSB0aGUgc3RhdGUgc3RydWN0dXJlLiAgRmFsbCBvdXQgaWYgbm90aGluZyB0byBk by4KIAkgKi8KIAludW1JbmRleGVzID0gaW5kc3RhdGUtPnJpX051bUluZGljZXM7Ci0JaWYgKG51 bUluZGV4ZXMgPT0gMCkKKwlpZiAobnVtSW5kZXhlcyA9PSAwIHx8IHVwZGF0ZUluZGV4ZXMgPT0g VFVfTm9uZSkKIAkJcmV0dXJuOwogCXJlbGF0aW9uRGVzY3MgPSBpbmRzdGF0ZS0+cmlfSW5kZXhS ZWxhdGlvbkRlc2NzOwogCWluZGV4SW5mb0FycmF5ID0gaW5kc3RhdGUtPnJpX0luZGV4UmVsYXRp b25JbmZvOwpAQCAtMzE0LDE1ICszMTQsMTggQEAgQ2F0YWxvZ1R1cGxlVXBkYXRlKFJlbGF0aW9u IGhlYXBSZWwsIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxlIHR1cCkKIHsK IAlDYXRhbG9nSW5kZXhTdGF0ZSBpbmRzdGF0ZTsKIAlUVV9VcGRhdGVJbmRleGVzIHVwZGF0ZUlu ZGV4ZXMgPSBUVV9BbGw7CisJQml0bWFwc2V0ICAqdXBkYXRlZEF0dHJzOwogCiAJQ2F0YWxvZ1R1 cGxlQ2hlY2tDb25zdHJhaW50cyhoZWFwUmVsLCB0dXApOwogCiAJaW5kc3RhdGUgPSBDYXRhbG9n T3BlbkluZGV4ZXMoaGVhcFJlbCk7CiAKLQlzaW1wbGVfaGVhcF91cGRhdGUoaGVhcFJlbCwgb3Rp ZCwgdHVwLCAmdXBkYXRlSW5kZXhlcyk7Ci0KKwl1cGRhdGVkQXR0cnMgPSBzaW1wbGVfaGVhcF91 cGRhdGUoaGVhcFJlbCwgb3RpZCwgdHVwLCAmdXBkYXRlSW5kZXhlcyk7CisJKChSZXN1bHRSZWxJ bmZvICopIGluZHN0YXRlKS0+cmlfQ2hhbmdlZEluZGV4ZWRDb2xzID0gdXBkYXRlZEF0dHJzOwog CUNhdGFsb2dJbmRleEluc2VydChpbmRzdGF0ZSwgdHVwLCB1cGRhdGVJbmRleGVzKTsKKwogCUNh dGFsb2dDbG9zZUluZGV4ZXMoaW5kc3RhdGUpOworCWJtc19mcmVlKHVwZGF0ZWRBdHRycyk7CiB9 CiAKIC8qCkBAIC0zMzgsMTIgKzM0MSwxNSBAQCBDYXRhbG9nVHVwbGVVcGRhdGVXaXRoSW5mbyhS ZWxhdGlvbiBoZWFwUmVsLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdQogCQkJ CQkJICAgQ2F0YWxvZ0luZGV4U3RhdGUgaW5kc3RhdGUpCiB7CiAJVFVfVXBkYXRlSW5kZXhlcyB1 cGRhdGVJbmRleGVzID0gVFVfQWxsOworCUJpdG1hcHNldCAgKnVwZGF0ZWRBdHRyczsKIAogCUNh dGFsb2dUdXBsZUNoZWNrQ29uc3RyYWludHMoaGVhcFJlbCwgdHVwKTsKIAotCXNpbXBsZV9oZWFw X3VwZGF0ZShoZWFwUmVsLCBvdGlkLCB0dXAsICZ1cGRhdGVJbmRleGVzKTsKLQorCXVwZGF0ZWRB dHRycyA9IHNpbXBsZV9oZWFwX3VwZGF0ZShoZWFwUmVsLCBvdGlkLCB0dXAsICZ1cGRhdGVJbmRl eGVzKTsKKwkoKFJlc3VsdFJlbEluZm8gKikgaW5kc3RhdGUpLT5yaV9DaGFuZ2VkSW5kZXhlZENv bHMgPSB1cGRhdGVkQXR0cnM7CiAJQ2F0YWxvZ0luZGV4SW5zZXJ0KGluZHN0YXRlLCB0dXAsIHVw ZGF0ZUluZGV4ZXMpOworCSgoUmVzdWx0UmVsSW5mbyAqKSBpbmRzdGF0ZSktPnJpX0NoYW5nZWRJ bmRleGVkQ29scyA9IE5VTEw7CisJYm1zX2ZyZWUodXBkYXRlZEF0dHJzKTsKIH0KIAogLyoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYyBiL3NyYy9iYWNrZW5kL2Nh dGFsb2cvdG9hc3RpbmcuYwppbmRleCBjNzhkY2VhOThjMS4uZmY4ZGE1YmU1ZjggMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYworKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3RvYXN0aW5nLmMKQEAgLTI5Miw4ICsyOTIsMTIgQEAgY3JlYXRlX3RvYXN0X3RhYmxlKFJl bGF0aW9uIHJlbCwgT2lkIHRvYXN0T2lkLCBPaWQgdG9hc3RJbmRleE9pZCwKIAlpbmRleEluZm8t PmlpX0luZGV4QXR0ck51bWJlcnNbMV0gPSAyOwogCWluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnMg PSBOSUw7CiAJaW5kZXhJbmZvLT5paV9FeHByZXNzaW9uc1N0YXRlID0gTklMOworCWluZGV4SW5m by0+aWlfRXhwcmVzc2lvbnNBdHRycyA9IE5VTEw7CiAJaW5kZXhJbmZvLT5paV9QcmVkaWNhdGUg PSBOSUw7CiAJaW5kZXhJbmZvLT5paV9QcmVkaWNhdGVTdGF0ZSA9IE5VTEw7CisJaW5kZXhJbmZv LT5paV9QcmVkaWNhdGVBdHRycyA9IE5VTEw7CisJaW5kZXhJbmZvLT5paV9DaGVja2VkUHJlZGlj YXRlID0gZmFsc2U7CisJaW5kZXhJbmZvLT5paV9QcmVkaWNhdGVTYXRpc2ZpZWQgPSBmYWxzZTsK IAlpbmRleEluZm8tPmlpX0V4Y2x1c2lvbk9wcyA9IE5VTEw7CiAJaW5kZXhJbmZvLT5paV9FeGNs dXNpb25Qcm9jcyA9IE5VTEw7CiAJaW5kZXhJbmZvLT5paV9FeGNsdXNpb25TdHJhdHMgPSBOVUxM OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYwppbmRleCA2YWUwZjk1OTU5Mi4uMTI3NWZl ZmZhZTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCkBAIC0xMDksMTEgKzEwOSwx NSBAQAogI2luY2x1ZGUgImFjY2Vzcy9nZW5hbS5oIgogI2luY2x1ZGUgImFjY2Vzcy9yZWxzY2Fu LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlYW0uaCIKKyNpbmNsdWRlICJhY2Nlc3Mvc3lzYXR0 ci5oIgogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9pbmRleC5o IgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCisjaW5jbHVkZSAibm9kZXMvYml0bWFw c2V0LmgiCisjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgiCiAjaW5jbHVkZSAibm9kZXMvbm9k ZUZ1bmNzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCisjaW5jbHVkZSAidXRpbHMvZGF0 dW0uaCIKICNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKICNpbmNsdWRlICJ1dGls cy9tdWx0aXJhbmdldHlwZXMuaCIKICNpbmNsdWRlICJ1dGlscy9yYW5nZXR5cGVzLmgiCkBAIC0z MjQsOCArMzI4LDggQEAgRXhlY0luc2VydEluZGV4VHVwbGVzKFJlc3VsdFJlbEluZm8gKnJlc3Vs dFJlbEluZm8sCiAJUmVsYXRpb24JaGVhcFJlbGF0aW9uOwogCUluZGV4SW5mbyAqKmluZGV4SW5m b0FycmF5OwogCUV4cHJDb250ZXh0ICplY29udGV4dDsKLQlEYXR1bQkJdmFsdWVzW0lOREVYX01B WF9LRVlTXTsKLQlib29sCQlpc251bGxbSU5ERVhfTUFYX0tFWVNdOworCURhdHVtCQlsb2NfdmFs dWVzW0lOREVYX01BWF9LRVlTXTsKKwlib29sCQlsb2NfaXNudWxsW0lOREVYX01BWF9LRVlTXTsK IAogCUFzc2VydChJdGVtUG9pbnRlcklzVmFsaWQodHVwbGVpZCkpOwogCkBAIC0zNDksMTMgKzM1 MywxMyBAQCBFeGVjSW5zZXJ0SW5kZXhUdXBsZXMoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5m bywKIAkvKiBBcnJhbmdlIGZvciBlY29udGV4dCdzIHNjYW4gdHVwbGUgdG8gYmUgdGhlIHR1cGxl IHVuZGVyIHRlc3QgKi8KIAllY29udGV4dC0+ZWN4dF9zY2FudHVwbGUgPSBzbG90OwogCi0JLyoK LQkgKiBmb3IgZWFjaCBpbmRleCwgZm9ybSBhbmQgaW5zZXJ0IHRoZSBpbmRleCB0dXBsZQotCSAq LworCS8qIEluc2VydCBpbnRvIGVhY2ggaW5kZXggdGhhdCBuZWVkcyB1cGRhdGluZyAqLwogCWZv ciAoaSA9IDA7IGkgPCBudW1JbmRpY2VzOyBpKyspCiAJewogCQlSZWxhdGlvbglpbmRleFJlbGF0 aW9uID0gcmVsYXRpb25EZXNjc1tpXTsKIAkJSW5kZXhJbmZvICAqaW5kZXhJbmZvOworCQlEYXR1 bQkgICAqdmFsdWVzOworCQlib29sCSAgICppc251bGw7CiAJCWJvb2wJCWFwcGx5Tm9EdXBFcnI7 CiAJCUluZGV4VW5pcXVlQ2hlY2sgY2hlY2tVbmlxdWU7CiAJCWJvb2wJCWluZGV4VW5jaGFuZ2Vk OwpAQCAtMzcyLDcgKzM3Niw3IEBAIEV4ZWNJbnNlcnRJbmRleFR1cGxlcyhSZXN1bHRSZWxJbmZv ICpyZXN1bHRSZWxJbmZvLAogCiAJCS8qCiAJCSAqIFNraXAgcHJvY2Vzc2luZyBvZiBub24tc3Vt bWFyaXppbmcgaW5kZXhlcyBpZiB3ZSBvbmx5IHVwZGF0ZQotCQkgKiBzdW1tYXJpemluZyBpbmRl eGVzCisJCSAqIHN1bW1hcml6aW5nIGluZGV4ZXMgb3IgaWYgdGhpcyBpbmRleCBpcyB1bmNoYW5n ZWQuCiAJCSAqLwogCQlpZiAob25seVN1bW1hcml6aW5nICYmICFpbmRleEluZm8tPmlpX1N1bW1h cml6aW5nKQogCQkJY29udGludWU7CkBAIC0zOTMsOCArMzk3LDE1IEBAIEV4ZWNJbnNlcnRJbmRl eFR1cGxlcyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQkJCWluZGV4SW5mby0+aWlf UHJlZGljYXRlU3RhdGUgPSBwcmVkaWNhdGU7CiAJCQl9CiAKKwkJCS8qIENoZWNrIHRoZSBpbmRl eCBwcmVkaWNhdGUgaWYgd2UgaGF2ZW4ndCBkb25lIHNvIGVhcmxpZXIgb24gKi8KKwkJCWlmICgh aW5kZXhJbmZvLT5paV9DaGVja2VkUHJlZGljYXRlKQorCQkJeworCQkJCWluZGV4SW5mby0+aWlf UHJlZGljYXRlU2F0aXNmaWVkID0gRXhlY1F1YWwocHJlZGljYXRlLCBlY29udGV4dCk7CisJCQkJ aW5kZXhJbmZvLT5paV9DaGVja2VkUHJlZGljYXRlID0gdHJ1ZTsKKwkJCX0KKwogCQkJLyogU2tp cCB0aGlzIGluZGV4LXVwZGF0ZSBpZiB0aGUgcHJlZGljYXRlIGlzbid0IHNhdGlzZmllZCAqLwot CQkJaWYgKCFFeGVjUXVhbChwcmVkaWNhdGUsIGVjb250ZXh0KSkKKwkJCWlmICghaW5kZXhJbmZv LT5paV9QcmVkaWNhdGVTYXRpc2ZpZWQpCiAJCQkJY29udGludWU7CiAJCX0KIApAQCAtNDAyLDEx ICs0MTMsMTAgQEAgRXhlY0luc2VydEluZGV4VHVwbGVzKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJl bEluZm8sCiAJCSAqIEZvcm1JbmRleERhdHVtIGZpbGxzIGluIGl0cyB2YWx1ZXMgYW5kIGlzbnVs bCBwYXJhbWV0ZXJzIHdpdGggdGhlCiAJCSAqIGFwcHJvcHJpYXRlIHZhbHVlcyBmb3IgdGhlIGNv bHVtbihzKSBvZiB0aGUgaW5kZXguCiAJCSAqLwotCQlGb3JtSW5kZXhEYXR1bShpbmRleEluZm8s Ci0JCQkJCSAgIHNsb3QsCi0JCQkJCSAgIGVzdGF0ZSwKLQkJCQkJICAgdmFsdWVzLAotCQkJCQkg ICBpc251bGwpOworCQlGb3JtSW5kZXhEYXR1bShpbmRleEluZm8sIHNsb3QsIGVzdGF0ZSwgbG9j X3ZhbHVlcywgbG9jX2lzbnVsbCk7CisKKwkJdmFsdWVzID0gbG9jX3ZhbHVlczsKKwkJaXNudWxs ID0gbG9jX2lzbnVsbDsKIAogCQkvKiBDaGVjayB3aGV0aGVyIHRvIGFwcGx5IG5vRHVwRXJyIHRv IHRoaXMgaW5kZXggKi8KIAkJYXBwbHlOb0R1cEVyciA9IG5vRHVwRXJyICYmCkBAIC02MTMsNyAr NjIzLDEyIEBAIEV4ZWNDaGVja0luZGV4Q29uc3RyYWludHMoUmVzdWx0UmVsSW5mbyAqcmVzdWx0 UmVsSW5mbywgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCiAJCWNoZWNrZWRJbmRleCA9IHRydWU7CiAK IAkJLyogQ2hlY2sgZm9yIHBhcnRpYWwgaW5kZXggKi8KLQkJaWYgKGluZGV4SW5mby0+aWlfUHJl ZGljYXRlICE9IE5JTCkKKwkJaWYgKGluZGV4SW5mby0+aWlfQ2hlY2tlZFByZWRpY2F0ZSAmJiAh aW5kZXhJbmZvLT5paV9QcmVkaWNhdGVTYXRpc2ZpZWQpCisJCXsKKwkJCS8qIFdlJ3ZlIGFscmVh ZHkgY2hlY2tlZCBhbmQgdGhlIHByZWRpY2F0ZSB3YXNuJ3Qgc2F0aXNmaWVkLiAqLworCQkJY29u dGludWU7CisJCX0KKwkJZWxzZSBpZiAoaW5kZXhJbmZvLT5paV9QcmVkaWNhdGUgIT0gTklMKQog CQl7CiAJCQlFeHByU3RhdGUgICpwcmVkaWNhdGU7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmlu ZGV4IGNhMTRjZGFiZGQwLi5mYzZmN2FhOGZhZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBA IC0xMjgyLDYgKzEyODIsNyBAQCBJbml0UmVzdWx0UmVsSW5mbyhSZXN1bHRSZWxJbmZvICpyZXN1 bHRSZWxJbmZvLAogCS8qIFRoZSBmb2xsb3dpbmcgZmllbGRzIGFyZSBzZXQgbGF0ZXIgaWYgbmVl ZGVkICovCiAJcmVzdWx0UmVsSW5mby0+cmlfUm93SWRBdHRObyA9IDA7CiAJcmVzdWx0UmVsSW5m by0+cmlfZXh0cmFVcGRhdGVkQ29scyA9IE5VTEw7CisJcmVzdWx0UmVsSW5mby0+cmlfQ2hhbmdl ZEluZGV4ZWRDb2xzID0gTlVMTDsKIAlyZXN1bHRSZWxJbmZvLT5yaV9wcm9qZWN0TmV3ID0gTlVM TDsKIAlyZXN1bHRSZWxJbmZvLT5yaV9uZXdUdXBsZVNsb3QgPSBOVUxMOwogCXJlc3VsdFJlbElu Zm8tPnJpX29sZFR1cGxlU2xvdCA9IE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjUmVwbGljYXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNh dGlvbi5jCmluZGV4IDE3M2QyZmU1NDhkLi4wMTQ2ZTZmNjFlZiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY1JlcGxpY2F0aW9uLmMKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJ1dGlscy9i dWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxz L3JlbC5oIgorI2luY2x1ZGUgInV0aWxzL3JlbGNhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvc25h cG1nci5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvdHlw Y2FjaGUuaCIKQEAgLTkzNiw3ICs5MzcsMTMgQEAgRXhlY1NpbXBsZVJlbGF0aW9uVXBkYXRlKFJl c3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJCWlmIChyZWwtPnJkX3JlbC0+cmVsaXNwYXJ0 aXRpb24pCiAJCQlFeGVjUGFydGl0aW9uQ2hlY2socmVzdWx0UmVsSW5mbywgc2xvdCwgZXN0YXRl LCB0cnVlKTsKIAorCQkvKgorCQkgKiBXZSdyZSBub3QgZ29pbmcgdG8gY2FsbCBFeGVjQ2hlY2tJ bmRleGVkQXR0cnNGb3JDaGFuZ2VzIGhlcmUKKwkJICogYmVjYXVzZSB3ZSd2ZSBhbHJlYWR5IGlk ZW50aWZpZWQgdGhlIGNoYW5nZXMgZWFybGllciBvbiB0aGFua3MgdG8KKwkJICogc2xvdF9tb2Rp ZnlfZGF0YS4KKwkJICovCiAJCXNpbXBsZV90YWJsZV90dXBsZV91cGRhdGUocmVsLCB0aWQsIHNs b3QsIGVzdGF0ZS0+ZXNfc25hcHNob3QsCisJCQkJCQkJCSAgcmVzdWx0UmVsSW5mby0+cmlfQ2hh bmdlZEluZGV4ZWRDb2xzLAogCQkJCQkJCQkgICZ1cGRhdGVfaW5kZXhlcyk7CiAKIAkJY29uZmxp Y3RpbmRleGVzID0gcmVzdWx0UmVsSW5mby0+cmlfb25Db25mbGljdEFyYml0ZXJJbmRleGVzOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwppbmRleCA0NmZmNmRhODI4OS4uOGZj YTVlMDlhMjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJs ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCkBAIC0xNyw2 ICsxNyw3IEBACiAgKgkJRXhlY01vZGlmeVRhYmxlCQktIHJldHJpZXZlIHRoZSBuZXh0IHR1cGxl IGZyb20gdGhlIG5vZGUKICAqCQlFeGVjRW5kTW9kaWZ5VGFibGUJLSBzaHV0IGRvd24gdGhlIE1v ZGlmeVRhYmxlIG5vZGUKICAqCQlFeGVjUmVTY2FuTW9kaWZ5VGFibGUgLSByZXNjYW4gdGhlIE1v ZGlmeVRhYmxlIG5vZGUKKyAqCQlFeGVjQ2hlY2tJbmRleGVkQXR0cnNGb3JDaGFuZ2VzIC0gZmlu ZCBzZXQgb2YgdXBkYXRlZCBpbmRleGVkIGNvbHVtbnMKICAqCiAgKgkgTk9URVMKICAqCQlUaGUg TW9kaWZ5VGFibGUgbm9kZSByZWNlaXZlcyBpbnB1dCBmcm9tIGl0cyBvdXRlclBsYW4sIHdoaWNo IGlzCkBAIC01MywxMiArNTQsMTggQEAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVk ZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgorI2luY2x1ZGUgImFjY2Vzcy9hdHRudW0uaCIKKyNp bmNsdWRlICJhY2Nlc3Mvc3lzYXR0ci5oIgogI2luY2x1ZGUgImFjY2Vzcy90YWJsZWFtLmgiCisj aW5jbHVkZSAiYWNjZXNzL3R1cGNvbnZlcnQuaCIKKyNpbmNsdWRlICJhY2Nlc3MvdHVwZGVzYy5o IgogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9pbmRleC5oIgog I2luY2x1ZGUgImNvbW1hbmRzL3RyaWdnZXIuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjUGFy dGl0aW9uLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJleGVj dXRvci9ub2RlTW9kaWZ5VGFibGUuaCIKKyNpbmNsdWRlICJleGVjdXRvci90dXB0YWJsZS5oIgog I2luY2x1ZGUgImZvcmVpZ24vZmR3YXBpLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5j bHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCkBAIC02OCw4ICs3NSwxMSBAQAogI2luY2x1ZGUgInN0 b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRp bHMvZGF0dW0uaCIKKyNpbmNsdWRlICJ1dGlscy9mbG9hdC5oIgogI2luY2x1ZGUgInV0aWxzL2lu amVjdGlvbl9wb2ludC5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUg InV0aWxzL3JlbC5oIgorI2luY2x1ZGUgInV0aWxzL3JlbGNhY2hlLmgiCiAjaW5jbHVkZSAidXRp bHMvc25hcG1nci5oIgogCiAKQEAgLTE3Niw2ICsxODYsMjI0IEBAIHN0YXRpYyBUdXBsZVRhYmxl U2xvdCAqRXhlY01lcmdlTm90TWF0Y2hlZChNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsCiAJ CQkJCQkJCQkJICAgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJCQkJCQkJCQkgICBi b29sIGNhblNldFRhZyk7CiAKKy8qCisgKiBFeGVjQ2hlY2tJbmRleGVkQXR0cnNGb3JDaGFuZ2Vz CisgKgorICogRGV0ZXJtaW5lIHdoaWNoIGluZGV4ZXMgbmVlZCB1cGRhdGluZyBieSBmaW5kaW5n IHRoZSBzZXQgb2YgbW9kaWZpZWQgaW5kZXhlZAorICogYXR0cmlidXRlcy4KKyAqCisgKiBGb3Ig d2hpY2ggaW1wbGVtZW50IHRoZSBhbWNvbXBhcmVkYXR1bXMoKSBpbmRleCBBTSBBUEkgd2UnbGwg bmVlZCB0byBmb3JtCisgKiBpbmRleCBkYXR1bSBhbmQgY29tcGFyZSBlYWNoIGF0dHJpYnV0ZSB0 byBzZWUgaWYgYW55dGhpbmcgYWN0dWFsbHkgY2hhbmdlZC4KKyAqCisgKiBUaGUgZ29hbCBpcyBm b3IgdGhlIGV4ZWN1dG9yIHRvIGtub3csIGFoZWFkIG9mIGNhbGxpbmcgaW50byB0aGUgdGFibGUg QU0gdG8KKyAqIHByb2Nlc3MgdGhlIHVwZGF0ZSBhbmQgYmVmb3JlIGNhbGxpbmcgaW50byB0aGUg aW5kZXggQU0gZm9yIGluc2VydGluZyBuZXcKKyAqIGluZGV4IHR1cGxlcywgd2hpY2ggYXR0cmli dXRlcyBpbiB0aGUgbmV3IFR1cGxlVGFibGVTbG90LCBpZiBhbnksIHRydWVseQorICogbmVjZXNz aXRhdGUgYSBuZXcgaW5kZXggdHVwbGUuCisgKgorICogUmV0dXJucyBhIEJpdG1hcHNldCBvZiBh dHRyaWJ1dGVzIHRoYXQgaW50ZXJzZWN0cyB3aXRoIGluZGV4ZXMgd2hpY2ggcmVxdWlyZQorICog YSBuZXcgaW5kZXggdHVwbGUuCisgKi8KK0JpdG1hcHNldCAqCitFeGVjQ2hlY2tJbmRleGVkQXR0 cnNGb3JDaGFuZ2VzKFJlc3VsdFJlbEluZm8gKnJlbGluZm8sCisJCQkJCQkJCUVTdGF0ZSAqZXN0 YXRlLAorCQkJCQkJCQlUdXBsZVRhYmxlU2xvdCAqb2xkX3R0cywKKwkJCQkJCQkJVHVwbGVUYWJs ZVNsb3QgKm5ld190dHMpCit7CisJUmVsYXRpb24JcmVsYXRpb24gPSByZWxpbmZvLT5yaV9SZWxh dGlvbkRlc2M7CisJVHVwbGVEZXNjCXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbGF0aW9u KTsKKwlCaXRtYXBzZXQgICptaXhfYXR0cnMgPSBOVUxMOwkvKiBtb2RpZmllZCBpbmRleGVkIGF0 dHJpYnV0ZXMgKi8KKworCS8qIElmIG5vIGluZGV4ZXMsIHdlJ3JlIGRvbmUgKi8KKwlpZiAocmVs aW5mby0+cmlfTnVtSW5kaWNlcyA9PSAwKQorCQlyZXR1cm4gTlVMTDsKKworCS8qIEZpbmQgdGhl IGluZGV4ZXMgdGhhdCByZWZlcmVuY2UgdGhpcyBhdHRyaWJ1dGUgKi8KKwlmb3IgKGludCBpID0g MDsgaSA8IHJlbGluZm8tPnJpX051bUluZGljZXM7IGkrKykKKwl7CisJCVJlbGF0aW9uCWluZGV4 ID0gcmVsaW5mby0+cmlfSW5kZXhSZWxhdGlvbkRlc2NzW2ldOworCQljb25zdCBJbmRleEFtUm91 dGluZSAqYW1yb3V0aW5lID0gaW5kZXgtPnJkX2luZGFtOworCQlJbmRleEluZm8gICppbmRleElu Zm8gPSByZWxpbmZvLT5yaV9JbmRleFJlbGF0aW9uSW5mb1tpXTsKKwkJQml0bWFwc2V0ICAqbV9h dHRycyA9IE5VTEw7IC8qIChwb3NzaWJseSkgbW9kaWZpZWQgaW5kZXhlZCBhdHRycyAqLworCQlC aXRtYXBzZXQgICpwX2F0dHJzID0gTlVMTDsgLyogKHBvc3NpYmx5KSBtb2RpZmllZCBwcmVkaWNh dGUgYXR0cnMgKi8KKwkJQml0bWFwc2V0ICAqdV9hdHRycyA9IE5VTEw7IC8qIHVubW9kaWZpZWQg aW5kZXhlZCBhdHRycyAqLworCQlib29sCQloYXNfYW1fY29tcGFyZSA9IChhbXJvdXRpbmUtPmFt Y29tcGFyZWRhdHVtcyAhPSBOVUxMKTsKKwkJYm9vbAkJc3VwcG9ydHNfaW9zID0gKGFtcm91dGlu ZS0+YW1jYW5yZXR1cm4gIT0gTlVMTCk7CisJCWJvb2wJCWlzX3BhcnRpYWwgPSAoaW5kZXhJbmZv LT5paV9QcmVkaWNhdGUgIT0gTklMKTsKKwkJRXhwckNvbnRleHQgKmVjb250ZXh0ID0gR2V0UGVy VHVwbGVFeHByQ29udGV4dChlc3RhdGUpOworCQlpbnQJCQludW1fZGF0dW1zID0gc3VwcG9ydHNf aW9zID8KKwkJCWluZGV4SW5mby0+aWlfTnVtSW5kZXhBdHRycyA6IGluZGV4SW5mby0+aWlfTnVt SW5kZXhLZXlBdHRyczsKKworCQkvKiBJZiB3ZSd2ZSByZXZpZXdlZCBhbGwgdGhlIGF0dHJpYnV0 ZXMgb24gdGhpcyBpbmRleCwgbW92ZSBvbiAqLworCQlpZiAoYm1zX2lzX3N1YnNldChpbmRleElu Zm8tPmlpX0luZGV4ZWRBdHRycywgbWl4X2F0dHJzKSkKKwkJCWNvbnRpbnVlOworCisJCS8qIEFk ZCBwYXJ0aWFsIGluZGV4IGF0dHJpYnV0ZXMgKi8KKwkJaWYgKGlzX3BhcnRpYWwpCisJCQlwX2F0 dHJzID0gYm1zX2FkZF9tZW1iZXJzKHBfYXR0cnMsIGluZGV4SW5mby0+aWlfUHJlZGljYXRlQXR0 cnMpOworCisJCS8qIENvbXBhcmUgdGhlIGluZGV4IGRhdHVtcyBmb3IgZXF1YWxpdHkgKi8KKwkJ Zm9yIChpbnQgaiA9IDA7IGogPCBudW1fZGF0dW1zOyBqKyspCisJCXsKKwkJCUF0dHJOdW1iZXIJ cmVsX2F0dHJudW0gPSBpbmRleEluZm8tPmlpX0luZGV4QXR0ck51bWJlcnNbal07CisJCQlpbnQJ CQlyZWxfYXR0cmlkeCA9IHJlbF9hdHRybnVtIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0 ZU51bWJlcjsKKwkJCWludAkJCW50aF9leHByID0gMDsKKwkJCWludDE2CQl0eXBsZW47CisJCQli b29sCQl0eXBieXZhbDsKKwkJCURhdHVtCQlvbGRfdmFsdWU7CisJCQlEYXR1bQkJbmV3X3ZhbHVl OworCQkJYm9vbAkJb2xkX251bGw7CisJCQlib29sCQluZXdfbnVsbDsKKwkJCWJvb2wJCXZhbHVl c19lcXVhbCA9IGZhbHNlOworCisJCQkvKiBTeXN0ZW0gYXR0cmlidXRlcyAqLworCQkJaWYgKHJl bF9hdHRybnVtIDwgMCkKKwkJCXsKKwkJCQkvKiBFeHRyYWN0IHN5c3RlbSB2YWx1ZXMgZnJvbSBi b3RoIHNsb3RzIGZvciB0aGlzIGF0dHJpYnV0ZSAqLworCQkJCW9sZF92YWx1ZSA9IHNsb3RfZ2V0 c3lzYXR0cihvbGRfdHRzLCByZWxfYXR0cm51bSwgJm9sZF9udWxsKTsKKwkJCQluZXdfdmFsdWUg PSBzbG90X2dldHN5c2F0dHIobmV3X3R0cywgcmVsX2F0dHJudW0sICZuZXdfbnVsbCk7CisKKwkJ CQkvKiBUaGUgb25seSBhbGxvd2VkIHN5c3RlbSBjb2x1bW5zIGFyZSBPSURzLCBzbyBkbyB0aGlz ICovCisJCQkJdmFsdWVzX2VxdWFsID0gKERhdHVtR2V0T2JqZWN0SWQob2xkX3ZhbHVlKSA9PSBE YXR1bUdldE9iamVjdElkKG5ld192YWx1ZSkpOworCQkJCWdvdG8gZXF1YWxpdHlfZGV0ZXJtaW5l ZDsKKwkJCX0KKworCQkJLyoKKwkJCSAqIFRoaXMgaXMgYW4gZXhwcmVzc2lvbiBhdHRyaWJ1dGUs IGJ1dCBpbiBhbiBlZmZvcnQgdG8gYXZvaWQgdGhlCisJCQkgKiBleHBlbnNlIG9mIEluZGV4Rm9y bURhdHVtIHdlJ3JlIG5vdyBmYWNlZCB3aXRoIHRlc3RpbmcgZm9yCisJCQkgKiBlcXVhbGl0eSBz byB3ZSdsbCBoYXZlIHRvIGV4ZWMgdGhlIGV4cHJlc3Npb25zIGFuZCB0ZXN0IGZvcgorCQkJICog YmluYXJ5IGVxdWFsaXR5IG9mIHRoZSByZXN1bHRzLgorCQkJICovCisJCQllbHNlIGlmIChyZWxf YXR0cm51bSA9PSAwKQorCQkJeworCQkJCVR1cGxlVGFibGVTbG90ICpzYXZlX3NjYW50dXBsZSA9 IGVjb250ZXh0LT5lY3h0X3NjYW50dXBsZTsKKwkJCQlPaWQJCQlleHByX3R5cGVfb2lkOworCQkJ CUV4cHIJICAgKmV4cHIgPSAoRXhwciAqKSBsaXN0X250aChpbmRleEluZm8tPmlpX0V4cHJlc3Np b25zLCBudGhfZXhwcik7CisJCQkJRXhwclN0YXRlICAqc3RhdGU7CisKKwkJCQlpZiAoaW5kZXhJ bmZvLT5paV9FeHByZXNzaW9uc1N0YXRlID09IE5JTCkKKwkJCQl7CisJCQkJCS8qIEZpcnN0IHRp bWUgdGhyb3VnaCwgc2V0IHVwIGV4cHJlc3Npb24gZXZhbHVhdGlvbiBzdGF0ZSAqLworCQkJCQlp bmRleEluZm8tPmlpX0V4cHJlc3Npb25zU3RhdGUgPQorCQkJCQkJRXhlY1ByZXBhcmVFeHByTGlz dChpbmRleEluZm8tPmlpX0V4cHJlc3Npb25zLCBlc3RhdGUpOworCQkJCX0KKworCQkJCXN0YXRl ID0gKEV4cHJTdGF0ZSAqKSBsaXN0X250aChpbmRleEluZm8tPmlpX0V4cHJlc3Npb25zU3RhdGUs IG50aF9leHByKTsKKworCQkJCWVjb250ZXh0LT5lY3h0X3NjYW50dXBsZSA9IG9sZF90dHM7CisJ CQkJb2xkX3ZhbHVlID0gRXhlY0V2YWxFeHByU3dpdGNoQ29udGV4dChzdGF0ZSwKKwkJCQkJCQkJ CQkJCQkgIEdldFBlclR1cGxlRXhwckNvbnRleHQoZXN0YXRlKSwKKwkJCQkJCQkJCQkJCQkgICZv bGRfbnVsbCk7CisKKwkJCQllY29udGV4dC0+ZWN4dF9zY2FudHVwbGUgPSBuZXdfdHRzOworCQkJ CW5ld192YWx1ZSA9IEV4ZWNFdmFsRXhwclN3aXRjaENvbnRleHQoc3RhdGUsCisJCQkJCQkJCQkJ CQkJICBHZXRQZXJUdXBsZUV4cHJDb250ZXh0KGVzdGF0ZSksCisJCQkJCQkJCQkJCQkJICAmbmV3 X251bGwpOworCisJCQkJZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxlID0gc2F2ZV9zY2FudHVwbGU7 CisKKwkJCQkvKgorCQkJCSAqIE5PVEU6IHRlc3QgZm9yIE5VTEwgY2FzZXMgaGVyZSB0byBwb3Rl bnRpYWxseSBhdm9pZCBsb29raW5nCisJCQkJICogdXAgdGhlIHR5cGUgaW5mb3JtYXRpb24uICBJ dCdzIGEgdGFkIHJlZHVuZGFudCwgYnV0IHdvcnRoCisJCQkJICogaXQuCisJCQkJICovCisKKwkJ CQkvKiBBIGNoYW5nZSB0by9mcm9tIE5VTEwsIHNvIG5vdCBlcXVhbCAqLworCQkJCWlmIChvbGRf bnVsbCAhPSBuZXdfbnVsbCkKKwkJCQl7CisJCQkJCXZhbHVlc19lcXVhbCA9IGZhbHNlOworCQkJ CQlnb3RvIGVxdWFsaXR5X2RldGVybWluZWQ7CisJCQkJfQorCisJCQkJLyogQm90aCBOVUxMLCBu byBjaGFuZ2UgcmVjb3JkIGFzIHVubW9kaWZpZWQgKi8KKwkJCQlpZiAob2xkX251bGwpCisJCQkJ eworCQkJCQl2YWx1ZXNfZXF1YWwgPSB0cnVlOworCQkJCQlnb3RvIGVxdWFsaXR5X2RldGVybWlu ZWQ7CisJCQkJfQorCisJCQkJLyogR2V0IHR5cGUgT0lEIGZyb20gdGhlIGV4cHJlc3Npb24gKi8K KwkJCQlleHByX3R5cGVfb2lkID0gZXhwclR5cGUoKE5vZGUgKikgZXhwcik7CisKKwkJCQkvKiBH ZXQgdHlwZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBPSUQgKi8KKwkJCQlnZXRfdHlwbGVuYnl2YWwo ZXhwcl90eXBlX29pZCwgJnR5cGxlbiwgJnR5cGJ5dmFsKTsKKwkJCX0KKwkJCS8qIE5vdCBhIHN5 c3RlbSBvciBleHByZXNzaW9uIGF0dHJpYnV0ZSAqLworCQkJZWxzZQorCQkJeworCQkJCUNvbXBh Y3RBdHRyaWJ1dGUgKmF0dCA9IFR1cGxlRGVzY0NvbXBhY3RBdHRyKHR1cGRlc2MsIHJlbF9hdHRy bnVtIC0gMSk7CisKKwkJCQkvKiBFeHRyYWN0IHZhbHVlcyBmcm9tIGJvdGggc2xvdHMgZm9yIHRo aXMgYXR0cmlidXRlICovCisJCQkJb2xkX3ZhbHVlID0gc2xvdF9nZXRhdHRyKG9sZF90dHMsIHJl bF9hdHRybnVtLCAmb2xkX251bGwpOworCQkJCW5ld192YWx1ZSA9IHNsb3RfZ2V0YXR0cihuZXdf dHRzLCByZWxfYXR0cm51bSwgJm5ld19udWxsKTsKKworCQkJCXR5cGxlbiA9IGF0dC0+YXR0bGVu OworCQkJCXR5cGJ5dmFsID0gYXR0LT5hdHRieXZhbDsKKwkJCX0KKworCQkJLyogQSBjaGFuZ2Ug dG8vZnJvbSBOVUxMLCBzbyBub3QgZXF1YWwgKi8KKwkJCWlmIChvbGRfbnVsbCAhPSBuZXdfbnVs bCkKKwkJCXsKKwkJCQl2YWx1ZXNfZXF1YWwgPSBmYWxzZTsKKwkJCQlnb3RvIGVxdWFsaXR5X2Rl dGVybWluZWQ7CisJCQl9CisKKwkJCS8qIEJvdGggTlVMTCwgbm8gY2hhbmdlIHJlY29yZCBhcyB1 bm1vZGlmaWVkICovCisJCQlpZiAob2xkX251bGwpCisJCQl7CisJCQkJdmFsdWVzX2VxdWFsID0g dHJ1ZTsKKwkJCQlnb3RvIGVxdWFsaXR5X2RldGVybWluZWQ7CisJCQl9CisKKwkJCWlmIChoYXNf YW1fY29tcGFyZSkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIE5PVEU6IEZvciBBTSBjb21wYXJpc29u LCBwYXNzIHRoZSAxLWJhc2VkIGluZGV4IGF0dHJpYnV0ZQorCQkJCSAqIG51bWJlci4gVGhlIEFN J3MgY29tcGFyZSBmdW5jdGlvbiBleHBlY3RzIHRoZSBzYW1lCisJCQkJICogbnVtYmVyaW5nIGFz IHVzZWQgaW50ZXJuYWxseSBieSB0aGUgQU0uCisJCQkJICovCisJCQkJdmFsdWVzX2VxdWFsID0g YW1yb3V0aW5lLT5hbWNvbXBhcmVkYXR1bXMoaW5kZXgsIGogKyAxLAorCQkJCQkJCQkJCQkJCQkg IG9sZF92YWx1ZSwgb2xkX251bGwsCisJCQkJCQkJCQkJCQkJCSAgbmV3X3ZhbHVlLCBuZXdfbnVs bCk7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJdmFsdWVzX2VxdWFsID0gZGF0dW1Jc0VxdWFs KG9sZF92YWx1ZSwgbmV3X3ZhbHVlLCB0eXBieXZhbCwgdHlwbGVuKTsKKwkJCX0KKworCWVxdWFs aXR5X2RldGVybWluZWQ6OworCQkJaWYgKCF2YWx1ZXNfZXF1YWwpCisJCQkJaWYgKHJlbF9hdHRy bnVtID09IDApCisJCQkJeworCQkJCQlFeHByCSAgICpleHByID0gKEV4cHIgKikgbGlzdF9udGgo aW5kZXhJbmZvLT5paV9FeHByZXNzaW9ucywgbnRoX2V4cHIpOworCisJCQkJCXB1bGxfdmFyYXR0 bm9zKChOb2RlICopIGV4cHIsIHJlbGluZm8tPnJpX1JhbmdlVGFibGVJbmRleCwgJm1fYXR0cnMp OworCQkJCX0KKwkJCQllbHNlCisJCQkJCW1fYXR0cnMgPSBibXNfYWRkX21lbWJlcihtX2F0dHJz LCByZWxfYXR0cmlkeCk7CisJCQllbHNlCisJCQkJdV9hdHRycyA9IGJtc19hZGRfbWVtYmVyKHVf YXR0cnMsIHJlbF9hdHRyaWR4KTsKKworCQkJaWYgKHJlbF9hdHRybnVtID09IDApCisJCQkJbnRo X2V4cHIrKzsKKwkJfQorCisJCS8qCisJCSAqIEhlcmUgd2Uga25vdyBhbGwgdGhlIGF0dHJpYnV0 ZXMgdGhhdCBtaWdodCBiZSBtb2RpZmllZCBhbmQgYWxsCisJCSAqIHRob3NlIHdlIGtub3cgaGF2 ZW4ndCBiZWVuIGFjcm9zcyBhbGwgaW5kZXhlcy4gIFRha2UgdGhlIGRpZmZlcmVuY2UKKwkJICog YW5kIGFkZCBpdCB0byB0aGUgbW9kaWZpZWQgaW5kZXhlZCBhdHRyaWJ1dGVzIHNldC4KKwkJICov CisJCW1fYXR0cnMgPSBibXNfZGVsX21lbWJlcnMobV9hdHRycywgdV9hdHRycyk7CisJCXBfYXR0 cnMgPSBibXNfZGVsX21lbWJlcnMocF9hdHRycywgdV9hdHRycyk7CisJCW1peF9hdHRycyA9IGJt c19hZGRfbWVtYmVycyhtaXhfYXR0cnMsIG1fYXR0cnMpOworCQltaXhfYXR0cnMgPSBibXNfYWRk X21lbWJlcnMobWl4X2F0dHJzLCBwX2F0dHJzKTsKKworCQlibXNfZnJlZShtX2F0dHJzKTsKKwkJ Ym1zX2ZyZWUodV9hdHRycyk7CisJCWJtc19mcmVlKHBfYXR0cnMpOworCX0KKworCXJldHVybiBt aXhfYXR0cnM7Cit9CiAKIC8qCiAgKiBWZXJpZnkgdGhhdCB0aGUgdHVwbGVzIHRvIGJlIHByb2R1 Y2VkIGJ5IElOU0VSVCBtYXRjaCB0aGUKQEAgLTIxNjgsMTQgKzIzOTYsMTcgQEAgRXhlY1VwZGF0 ZVByZXBhcmVTbG90KFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAgKi8KIHN0YXRpYyBU TV9SZXN1bHQKIEV4ZWNVcGRhdGVBY3QoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LCBSZXN1 bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAotCQkJICBJdGVtUG9pbnRlciB0dXBsZWlkLCBIZWFw VHVwbGUgb2xkdHVwbGUsIFR1cGxlVGFibGVTbG90ICpzbG90LAotCQkJICBib29sIGNhblNldFRh ZywgVXBkYXRlQ29udGV4dCAqdXBkYXRlQ3h0KQorCQkJICBJdGVtUG9pbnRlciB0dXBsZWlkLCBI ZWFwVHVwbGUgb2xkdHVwbGUsIFR1cGxlVGFibGVTbG90ICpvbGRTbG90LAorCQkJICBUdXBsZVRh YmxlU2xvdCAqc2xvdCwgYm9vbCBjYW5TZXRUYWcsIFVwZGF0ZUNvbnRleHQgKnVwZGF0ZUN4dCkK IHsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IGNvbnRleHQtPmVzdGF0ZTsKIAlSZWxhdGlvbglyZXN1 bHRSZWxhdGlvbkRlc2MgPSByZXN1bHRSZWxJbmZvLT5yaV9SZWxhdGlvbkRlc2M7CiAJYm9vbAkJ cGFydGl0aW9uX2NvbnN0cmFpbnRfZmFpbGVkOwogCVRNX1Jlc3VsdAlyZXN1bHQ7CiAKKwkvKiBU aGUgc2V0IG9mIG1vZGlmaWVkIGluZGV4ZWQgYXR0cmlidXRlcyB0aGF0IHRyaWdnZXIgbmV3IGlu ZGV4IGVudHJpZXMgKi8KKwlCaXRtYXBzZXQgICptaXhfYXR0cnMgPSBOVUxMOworCiAJdXBkYXRl Q3h0LT5jcm9zc1BhcnRVcGRhdGUgPSBmYWxzZTsKIAogCS8qCkBAIC0yMjkyLDkgKzI1MjMsMzgg QEAgbHJlcGxhY2U6CiAJCUV4ZWNDb25zdHJhaW50cyhyZXN1bHRSZWxJbmZvLCBzbG90LCBlc3Rh dGUpOwogCiAJLyoKLQkgKiByZXBsYWNlIHRoZSBoZWFwIHR1cGxlCisJICogSWRlbnRpZnkgd2hp Y2gsIGlmIGFueSwgaW5kZXhlZCBhdHRyaWJ1dGVzIHdlcmUgbW9kaWZpZWQgaGVyZSBzbyB0aGF0 CisJICogd2UgbWlnaHQgcmV1c2UgaXQgaW4gYSBmZXcgcGxhY2VzLgorCSAqLworCWJtc19mcmVl KHJlc3VsdFJlbEluZm8tPnJpX0NoYW5nZWRJbmRleGVkQ29scyk7CisJcmVzdWx0UmVsSW5mby0+ cmlfQ2hhbmdlZEluZGV4ZWRDb2xzID0gTlVMTDsKKworCS8qCisJICogRHVyaW5nIHVwZGF0ZXMg d2UnbGwgbmVlZCBhIGJpdCBtb3JlIGluZm9ybWF0aW9uIGluIEluZGV4SW5mbyBidXQgd2UndmUK KwkgKiBkZWxheWVkIGFkZGluZyBpdCB1bnRpbCBoZXJlLiAgV2UgY2hlY2sgdG8gZW5zdXJlIHRo YXQgdGhlcmUgYXJlCisJICogaW5kZXhlcywgdGhhdCBzb21ldGhpbmcgaGFzIGNoYW5nZWQgdGhh dCBpcyBpbmRleGVkLCBhbmQgdGhhdCB0aGUgZmlyc3QKKwkgKiBpbmRleCBkb2Vzbid0IHlldCBo YXZlIGlpX0luZGV4ZWRBdHRycyBzZXQgYXMgYSB3YXkgdG8gZW5zdXJlIHdlIG9ubHkKKwkgKiBi dWlsZCB0aGlzIHdoZW4gbmVlZGVkIGFuZCBvbmx5IG9uY2UuICBXZSBkb24ndCBidWlsZCB0aGlz IGluCisJICogRXhlY09wZW5JbmRpY2llcygpIGFzIGl0IGlzIHVubmVjZXNzYXJ5IG92ZXJoZWFk IHdoZW4gbm90IHBlcmZvcm1pbmcgYW4KKwkgKiB1cGRhdGUuCisJICovCisJaWYgKHJlc3VsdFJl bEluZm8tPnJpX051bUluZGljZXMgPiAwICYmCisJCWJtc19pc19lbXB0eShyZXN1bHRSZWxJbmZv LT5yaV9JbmRleFJlbGF0aW9uSW5mb1swXS0+aWlfSW5kZXhlZEF0dHJzKSkKKwkJQnVpbGRVcGRh dGVJbmRleEluZm8ocmVzdWx0UmVsSW5mbyk7CisKKwkvKgorCSAqIE5leHQgdXAgd2UgbmVlZCB0 byBmaW5kIG91dCB0aGUgc2V0IG9mIGluZGV4ZWQgYXR0cmlidXRlcyB0aGF0IGhhdmUKKwkgKiBj aGFuZ2VkIGluIHZhbHVlIGFuZCBzaG91bGQgdHJpZ2dlciBhIG5ldyBpbmRleCB0dXBsZS4gIFdl IGNvdWxkIHN0YXJ0CisJICogd2l0aCB0aGUgc2V0IG9mIHVwZGF0ZWQgY29sdW1ucyB2aWEgRXhl Y0dldFVwZGF0ZWRDb2xzKCksIGJ1dCBpZiB3ZSBkbworCSAqIHdlIHdpbGwgb3Zlcmxvb2sgYXR0 cmlidXRlcyBkaXJlY3RseSBtb2RpZmllZCBieSBoZWFwX21vZGlmeV90dXBsZSgpCisJICogd2hp Y2ggYXJlIG5vdCBrbm93biB0byBFeGVjR2V0VXBkYXRlZENvbHMoKS4KKwkgKi8KKwltaXhfYXR0 cnMgPSBFeGVjQ2hlY2tJbmRleGVkQXR0cnNGb3JDaGFuZ2VzKHJlc3VsdFJlbEluZm8sIGVzdGF0 ZSwgb2xkU2xvdCwgc2xvdCk7CisKKwkvKgorCSAqIENhbGwgaW50byB0aGUgdGFibGUgQU0gdG8g dXBkYXRlIHRoZSBoZWFwIHR1cGxlLgogCSAqCi0JICogTm90ZTogaWYgZXNfY3Jvc3NjaGVja19z bmFwc2hvdCBpc24ndCBJbnZhbGlkU25hcHNob3QsIHdlIGNoZWNrIHRoYXQKKwkgKiBOT1RFOiBp ZiBlc19jcm9zc2NoZWNrX3NuYXBzaG90IGlzbid0IEludmFsaWRTbmFwc2hvdCwgd2UgY2hlY2sg dGhhdAogCSAqIHRoZSByb3cgdG8gYmUgdXBkYXRlZCBpcyB2aXNpYmxlIHRvIHRoYXQgc25hcHNo b3QsIGFuZCB0aHJvdyBhCiAJICogY2FuJ3Qtc2VyaWFsaXplIGVycm9yIGlmIG5vdC4gVGhpcyBp cyBhIHNwZWNpYWwtY2FzZSBiZWhhdmlvciBuZWVkZWQKIAkgKiBmb3IgcmVmZXJlbnRpYWwgaW50 ZWdyaXR5IHVwZGF0ZXMgaW4gdHJhbnNhY3Rpb24tc25hcHNob3QgbW9kZQpAQCAtMjMwNiw4ICsy NTY2LDEyIEBAIGxyZXBsYWNlOgogCQkJCQkJCQllc3RhdGUtPmVzX2Nyb3NzY2hlY2tfc25hcHNo b3QsCiAJCQkJCQkJCXRydWUgLyogd2FpdCBmb3IgY29tbWl0ICovICwKIAkJCQkJCQkJJmNvbnRl eHQtPnRtZmQsICZ1cGRhdGVDeHQtPmxvY2ttb2RlLAorCQkJCQkJCQltaXhfYXR0cnMsCiAJCQkJ CQkJCSZ1cGRhdGVDeHQtPnVwZGF0ZUluZGV4ZXMpOwogCisJQXNzZXJ0KGJtc19pc19lbXB0eShy ZXN1bHRSZWxJbmZvLT5yaV9DaGFuZ2VkSW5kZXhlZENvbHMpKTsKKwlyZXN1bHRSZWxJbmZvLT5y aV9DaGFuZ2VkSW5kZXhlZENvbHMgPSBtaXhfYXR0cnM7CisKIAlyZXR1cm4gcmVzdWx0OwogfQog CkBAIC0yMzI1LDcgKzI1ODksNyBAQCBFeGVjVXBkYXRlRXBpbG9ndWUoTW9kaWZ5VGFibGVDb250 ZXh0ICpjb250ZXh0LCBVcGRhdGVDb250ZXh0ICp1cGRhdGVDeHQsCiAJTW9kaWZ5VGFibGVTdGF0 ZSAqbXRzdGF0ZSA9IGNvbnRleHQtPm10c3RhdGU7CiAJTGlzdAkgICAqcmVjaGVja0luZGV4ZXMg PSBOSUw7CiAKLQkvKiBpbnNlcnQgaW5kZXggZW50cmllcyBmb3IgdHVwbGUgaWYgbmVjZXNzYXJ5 ICovCisJLyogSW5zZXJ0IGluZGV4IGVudHJpZXMgZm9yIHR1cGxlIGlmIG5lY2Vzc2FyeSAqLwog CWlmIChyZXN1bHRSZWxJbmZvLT5yaV9OdW1JbmRpY2VzID4gMCAmJiAodXBkYXRlQ3h0LT51cGRh dGVJbmRleGVzICE9IFRVX05vbmUpKQogCQlyZWNoZWNrSW5kZXhlcyA9IEV4ZWNJbnNlcnRJbmRl eFR1cGxlcyhyZXN1bHRSZWxJbmZvLAogCQkJCQkJCQkJCQkgICBzbG90LCBjb250ZXh0LT5lc3Rh dGUsCkBAIC0yNTI0LDggKzI3ODgsOSBAQCBFeGVjVXBkYXRlKE1vZGlmeVRhYmxlQ29udGV4dCAq Y29udGV4dCwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJICovCiByZWRvX2FjdDoK IAkJbG9ja2VkdGlkID0gKnR1cGxlaWQ7Ci0JCXJlc3VsdCA9IEV4ZWNVcGRhdGVBY3QoY29udGV4 dCwgcmVzdWx0UmVsSW5mbywgdHVwbGVpZCwgb2xkdHVwbGUsIHNsb3QsCi0JCQkJCQkJICAgY2Fu U2V0VGFnLCAmdXBkYXRlQ3h0KTsKKworCQlyZXN1bHQgPSBFeGVjVXBkYXRlQWN0KGNvbnRleHQs IHJlc3VsdFJlbEluZm8sIHR1cGxlaWQsIG9sZHR1cGxlLCBvbGRTbG90LAorCQkJCQkJCSAgIHNs b3QsIGNhblNldFRhZywgJnVwZGF0ZUN4dCk7CiAKIAkJLyoKIAkJICogSWYgRXhlY1VwZGF0ZUFj dCByZXBvcnRzIHRoYXQgYSBjcm9zcy1wYXJ0aXRpb24gdXBkYXRlIHdhcyBkb25lLApAQCAtMzIy Miw4ICszNDg3LDggQEAgbG1lcmdlX21hdGNoZWQ6CiAJCQkJCUFzc2VydChvbGR0dXBsZSA9PSBO VUxMKTsKIAogCQkJCQlyZXN1bHQgPSBFeGVjVXBkYXRlQWN0KGNvbnRleHQsIHJlc3VsdFJlbElu Zm8sIHR1cGxlaWQsCi0JCQkJCQkJCQkJICAgTlVMTCwgbmV3c2xvdCwgY2FuU2V0VGFnLAotCQkJ CQkJCQkJCSAgICZ1cGRhdGVDeHQpOworCQkJCQkJCQkJCSAgIE5VTEwsIHJlc3VsdFJlbEluZm8t PnJpX29sZFR1cGxlU2xvdCwKKwkJCQkJCQkJCQkgICBuZXdzbG90LCBjYW5TZXRUYWcsICZ1cGRh dGVDeHQpOwogCiAJCQkJCS8qCiAJCQkJCSAqIEFzIGluIEV4ZWNVcGRhdGUoKSwgaWYgRXhlY1Vw ZGF0ZUFjdCgpIHJlcG9ydHMgdGhhdCBhCkBAIC0zMjQ4LDYgKzM1MTMsNyBAQCBsbWVyZ2VfbWF0 Y2hlZDoKIAkJCQkJCQkJCSAgIHR1cGxlaWQsIE5VTEwsIG5ld3Nsb3QpOwogCQkJCQltdHN0YXRl LT5tdF9tZXJnZV91cGRhdGVkICs9IDE7CiAJCQkJfQorCiAJCQkJYnJlYWs7CiAKIAkJCWNhc2Ug Q01EX0RFTEVURToKQEAgLTQzNTQsNyArNDYyMCw3IEBAIEV4ZWNNb2RpZnlUYWJsZShQbGFuU3Rh dGUgKnBzdGF0ZSkKIAkJICogRm9yIFVQREFURS9ERUxFVEUvTUVSR0UsIGZldGNoIHRoZSByb3cg aWRlbnRpdHkgaW5mbyBmb3IgdGhlIHR1cGxlCiAJCSAqIHRvIGJlIHVwZGF0ZWQvZGVsZXRlZC9t ZXJnZWQuICBGb3IgYSBoZWFwIHJlbGF0aW9uLCB0aGF0J3MgYSBUSUQ7CiAJCSAqIG90aGVyd2lz ZSB3ZSBtYXkgaGF2ZSBhIHdob2xlcm93IGp1bmsgYXR0ciB0aGF0IGNhcnJpZXMgdGhlIG9sZAot CQkgKiB0dXBsZSBpbiB0b3RvLiAgS2VlcCB0aGlzIGluIHN0ZXAgd2l0aCB0aGUgcGFydCBvZgor CQkgKiB0dXBsZSBpbiB0b3RhbC4gIEtlZXAgdGhpcyBpbiBzdGVwIHdpdGggdGhlIHBhcnQgb2YK IAkJICogRXhlY0luaXRNb2RpZnlUYWJsZSB0aGF0IHNldHMgdXAgcmlfUm93SWRBdHROby4KIAkJ ICovCiAJCWlmIChvcGVyYXRpb24gPT0gQ01EX1VQREFURSB8fCBvcGVyYXRpb24gPT0gQ01EX0RF TEVURSB8fApAQCAtNDUzMCw2ICs0Nzk2LDcgQEAgRXhlY01vZGlmeVRhYmxlKFBsYW5TdGF0ZSAq cHN0YXRlKQogCQkJCS8qIE5vdyBhcHBseSB0aGUgdXBkYXRlLiAqLwogCQkJCXNsb3QgPSBFeGVj VXBkYXRlKCZjb250ZXh0LCByZXN1bHRSZWxJbmZvLCB0dXBsZWlkLCBvbGR0dXBsZSwKIAkJCQkJ CQkJICBvbGRTbG90LCBzbG90LCBub2RlLT5jYW5TZXRUYWcpOworCiAJCQkJaWYgKHR1cGxvY2sp CiAJCQkJCVVubG9ja1R1cGxlKHJlc3VsdFJlbEluZm8tPnJpX1JlbGF0aW9uRGVzYywgdHVwbGVp ZCwKIAkJCQkJCQkJSW5wbGFjZVVwZGF0ZVR1cGxlTG9jayk7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9ub2Rlcy9iaXRtYXBzZXQuYyBiL3NyYy9iYWNrZW5kL25vZGVzL2JpdG1hcHNldC5jCmlu ZGV4IGE0NzY1ODc2YzMxLi4xN2Y1ZjY2YjI1ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9k ZXMvYml0bWFwc2V0LmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvYml0bWFwc2V0LmMKQEAgLTIz OCw2ICsyMzgsMTAgQEAgYm1zX21ha2Vfc2luZ2xldG9uKGludCB4KQogdm9pZAogYm1zX2ZyZWUo Qml0bWFwc2V0ICphKQogeworI2lmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwlBc3NlcnQoYm1zX2lz X3ZhbGlkX3NldChhKSk7CisjZW5kaWYKKwogCWlmIChhKQogCQlwZnJlZShhKTsKIH0KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMv bWFrZWZ1bmNzLmMKaW5kZXggMmNhZWM2MjFkNzMuLmRkMDkyYmFjYWQ5IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9tYWtl ZnVuY3MuYwpAQCAtODU3LDEwICs4NTcsMTQgQEAgbWFrZUluZGV4SW5mbyhpbnQgbnVtYXR0cnMs IGludCBudW1rZXlhdHRycywgT2lkIGFtb2lkLCBMaXN0ICpleHByZXNzaW9ucywKIAkvKiBleHBy ZXNzaW9ucyAqLwogCW4tPmlpX0V4cHJlc3Npb25zID0gZXhwcmVzc2lvbnM7CiAJbi0+aWlfRXhw cmVzc2lvbnNTdGF0ZSA9IE5JTDsKKwluLT5paV9FeHByZXNzaW9uc0F0dHJzID0gTlVMTDsKIAog CS8qIHByZWRpY2F0ZXMgICovCiAJbi0+aWlfUHJlZGljYXRlID0gcHJlZGljYXRlczsKIAluLT5p aV9QcmVkaWNhdGVTdGF0ZSA9IE5VTEw7CisJbi0+aWlfUHJlZGljYXRlQXR0cnMgPSBOVUxMOwor CW4tPmlpX0NoZWNrZWRQcmVkaWNhdGUgPSBmYWxzZTsKKwluLT5paV9QcmVkaWNhdGVTYXRpc2Zp ZWQgPSBmYWxzZTsKIAogCS8qIGV4Y2x1c2lvbiBjb25zdHJhaW50cyAqLwogCW4tPmlpX0V4Y2x1 c2lvbk9wcyA9IE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpp bmRleCBhZDI4MWU3MDY5Yi4uOTBiMGMyYzQwZTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC93b3JrZXIuYwpAQCAtMjc1LDcgKzI3NSw2IEBACiAjaW5jbHVkZSAicmVwbGljYXRp b24vbG9naWNhbHJlbGF0aW9uLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHdvcmtl ci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL29yaWdpbi5oIgotI2luY2x1ZGUgInJlcGxpY2F0 aW9uL3Nsb3QuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oIgogI2luY2x1 ZGUgInJlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3 cml0ZUhhbmRsZXIuaCIKQEAgLTI4NSwxMiArMjg0LDE0IEBACiAjaW5jbHVkZSAic3RvcmFnZS9w cm9jYXJyYXkuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAidXRpbHMv YWNsLmgiCisjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIK ICNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgog I2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcGdfbHNuLmgiCiAj aW5jbHVkZSAidXRpbHMvcmVsLmgiCisjaW5jbHVkZSAidXRpbHMvcmVsY2FjaGUuaCIKICNpbmNs dWRlICJ1dGlscy9ybHMuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCiAjaW5jbHVkZSAi dXRpbHMvc3lzY2FjaGUuaCIKQEAgLTExMTAsMTUgKzExMTEsMTggQEAgc2xvdF9zdG9yZV9kYXRh KFR1cGxlVGFibGVTbG90ICpzbG90LCBMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbCwKICAqICJz bG90IiBpcyBmaWxsZWQgd2l0aCBhIGNvcHkgb2YgdGhlIHR1cGxlIGluICJzcmNzbG90IiwgcmVw bGFjaW5nCiAgKiBjb2x1bW5zIHByb3ZpZGVkIGluICJ0dXBsZURhdGEiIGFuZCBsZWF2aW5nIG90 aGVycyBhcy1pcy4KICAqCisgKiBSZXR1cm5zIGEgYml0bWFwIG9mIHRoZSBtb2RpZmllZCBjb2x1 bW5zLgorICoKICAqIENhdXRpb246IHVucmVwbGFjZWQgcGFzcy1ieS1yZWYgY29sdW1ucyBpbiAi c2xvdCIgd2lsbCBwb2ludCBpbnRvIHRoZQogICogc3RvcmFnZSBmb3IgInNyY3Nsb3QiLiAgVGhp cyBpcyBPSyBmb3IgY3VycmVudCB1c2FnZSwgYnV0IHNvbWVkYXkgd2UgbWF5CiAgKiBuZWVkIHRv IG1hdGVyaWFsaXplICJzbG90IiBhdCB0aGUgZW5kIHRvIG1ha2UgaXQgaW5kZXBlbmRlbnQgb2Yg InNyY3Nsb3QiLgogICovCi1zdGF0aWMgdm9pZAorc3RhdGljIEJpdG1hcHNldCAqCiBzbG90X21v ZGlmeV9kYXRhKFR1cGxlVGFibGVTbG90ICpzbG90LCBUdXBsZVRhYmxlU2xvdCAqc3Jjc2xvdCwK IAkJCQkgTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWwsCiAJCQkJIExvZ2ljYWxSZXBUdXBsZURh dGEgKnR1cGxlRGF0YSkKIHsKKwlCaXRtYXBzZXQgICptb2RpZmllZCA9IE5VTEw7CiAJaW50CQkJ bmF0dHMgPSBzbG90LT50dHNfdHVwbGVEZXNjcmlwdG9yLT5uYXR0czsKIAlpbnQJCQlpOwogCkBA IC0xMTk1LDYgKzExOTksMjcgQEAgc2xvdF9tb2RpZnlfZGF0YShUdXBsZVRhYmxlU2xvdCAqc2xv dCwgVHVwbGVUYWJsZVNsb3QgKnNyY3Nsb3QsCiAJCQkJc2xvdC0+dHRzX2lzbnVsbFtpXSA9IHRy dWU7CiAJCQl9CiAKKwkJCS8qCisJCQkgKiBEZXRlcm1pbmUgaWYgdGhlIHJlcGxpY2F0ZWQgdmFs dWUgY2hhbmdlZCB0aGUgbG9jYWwgdmFsdWUgYnkKKwkJCSAqIGNvbXBhcmluZyBzbG90cy4gIFRo aXMgaXMgYSBzdWJzZXQgb2YKKwkJCSAqIEV4ZWNDaGVja0luZGV4ZWRBdHRyc0ZvckNoYW5nZXMu CisJCQkgKi8KKwkJCWlmIChzcmNzbG90LT50dHNfaXNudWxsW2ldICE9IHNsb3QtPnR0c19pc251 bGxbaV0pCisJCQl7CisJCQkJLyogT25lIGlzIE5VTEwsIHRoZSBvdGhlciBpcyBub3Qgc28gdGhl IHZhbHVlIGNoYW5nZWQgKi8KKwkJCQltb2RpZmllZCA9IGJtc19hZGRfbWVtYmVyKG1vZGlmaWVk LCBpICsgMSAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIpOworCQkJfQorCQkJ ZWxzZSBpZiAoIXNyY3Nsb3QtPnR0c19pc251bGxbaV0pCisJCQl7CisJCQkJLyogQm90aCBhcmUg bm90IE5VTEwsIGNvbXBhcmUgdGhlaXIgdmFsdWVzICovCisKKwkJCQlpZiAoIWRhdHVtSXNFcXVh bChzcmNzbG90LT50dHNfdmFsdWVzW2ldLAorCQkJCQkJCQkgIHNsb3QtPnR0c192YWx1ZXNbaV0s CisJCQkJCQkJCSAgYXR0LT5hdHRieXZhbCwKKwkJCQkJCQkJICBhdHQtPmF0dGxlbikpCisJCQkJ CW1vZGlmaWVkID0gYm1zX2FkZF9tZW1iZXIobW9kaWZpZWQsIGkgKyAxIC0gRmlyc3RMb3dJbnZh bGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7CisJCQl9CisKIAkJCS8qIFJlc2V0IGF0dG51bSBmb3Ig ZXJyb3IgY2FsbGJhY2sgKi8KIAkJCWFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZy5yZW1vdGVfYXR0 bnVtID0gLTE7CiAJCX0KQEAgLTEyMDIsNiArMTIyNyw4IEBAIHNsb3RfbW9kaWZ5X2RhdGEoVHVw bGVUYWJsZVNsb3QgKnNsb3QsIFR1cGxlVGFibGVTbG90ICpzcmNzbG90LAogCiAJLyogQW5kIGZp bmFsbHksIGRlY2xhcmUgdGhhdCAic2xvdCIgY29udGFpbnMgYSB2YWxpZCB2aXJ0dWFsIHR1cGxl ICovCiAJRXhlY1N0b3JlVmlydHVhbFR1cGxlKHNsb3QpOworCisJcmV0dXJuIG1vZGlmaWVkOwog fQogCiAvKgpAQCAtMjkxOCw2ICsyOTQ1LDcgQEAgYXBwbHlfaGFuZGxlX3VwZGF0ZV9pbnRlcm5h bChBcHBseUV4ZWN1dGlvbkRhdGEgKmVkYXRhLAogCUNvbmZsaWN0VHVwbGVJbmZvIGNvbmZsaWN0 dHVwbGUgPSB7MH07CiAJYm9vbAkJZm91bmQ7CiAJTWVtb3J5Q29udGV4dCBvbGRjdHg7CisJQml0 bWFwc2V0ICAqaW5kZXhlZCA9IE5VTEw7CiAKIAlFdmFsUGxhblF1YWxJbml0KCZlcHFzdGF0ZSwg ZXN0YXRlLCBOVUxMLCBOSUwsIC0xLCBOSUwpOwogCUV4ZWNPcGVuSW5kaWNlcyhyZWxpbmZvLCBm YWxzZSk7CkBAIC0yOTM0LDYgKzI5NjIsOCBAQCBhcHBseV9oYW5kbGVfdXBkYXRlX2ludGVybmFs KEFwcGx5RXhlY3V0aW9uRGF0YSAqZWRhdGEsCiAJICovCiAJaWYgKGZvdW5kKQogCXsKKwkJQml0 bWFwc2V0ICAqbW9kaWZpZWQgPSBOVUxMOworCiAJCS8qCiAJCSAqIFJlcG9ydCB0aGUgY29uZmxp Y3QgaWYgdGhlIHR1cGxlIHdhcyBtb2RpZmllZCBieSBhIGRpZmZlcmVudAogCQkgKiBvcmlnaW4u CkBAIC0yOTU3LDE1ICsyOTg3LDI5IEBAIGFwcGx5X2hhbmRsZV91cGRhdGVfaW50ZXJuYWwoQXBw bHlFeGVjdXRpb25EYXRhICplZGF0YSwKIAogCQkvKiBQcm9jZXNzIGFuZCBzdG9yZSByZW1vdGUg dHVwbGUgaW4gdGhlIHNsb3QgKi8KIAkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEdl dFBlclR1cGxlTWVtb3J5Q29udGV4dChlc3RhdGUpKTsKLQkJc2xvdF9tb2RpZnlfZGF0YShyZW1v dGVzbG90LCBsb2NhbHNsb3QsIHJlbG1hcGVudHJ5LCBuZXd0dXApOworCQltb2RpZmllZCA9IHNs b3RfbW9kaWZ5X2RhdGEocmVtb3Rlc2xvdCwgbG9jYWxzbG90LCByZWxtYXBlbnRyeSwgbmV3dHVw KTsKIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CiAKKwkJLyoKKwkJICogTm9ybWFs bHkgd2UnZCBjYWxsIEV4ZWNDaGVja0luZGV4ZWRBdHRyRm9yQ2hhbmdlcyBidXQgaGVyZSB3ZSBo YXZlCisJCSAqIHRoZSByZWNvcmQgb2YgY2hhbmdlZCBjb2x1bW5zIGluIHRoZSByZXBsaWNhdGlv biBzdGF0ZSwgc28gbGV0J3MKKwkJICogdXNlIHRoYXQgaW5zdGVhZC4KKwkJICovCisJCWluZGV4 ZWQgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxpbmZvLT5yaV9SZWxhdGlvbkRlc2Ms CisJCQkJCQkJCQkJCSBJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVEKTsKKworCQlibXNfZnJlZShy ZWxpbmZvLT5yaV9DaGFuZ2VkSW5kZXhlZENvbHMpOworCQlyZWxpbmZvLT5yaV9DaGFuZ2VkSW5k ZXhlZENvbHMgPSBibXNfaW50X21lbWJlcnMobW9kaWZpZWQsIGluZGV4ZWQpOworCQlibXNfZnJl ZShpbmRleGVkKTsKKwogCQlFdmFsUGxhblF1YWxTZXRTbG90KCZlcHFzdGF0ZSwgcmVtb3Rlc2xv dCk7CiAKIAkJSW5pdENvbmZsaWN0SW5kZXhlcyhyZWxpbmZvKTsKIAotCQkvKiBEbyB0aGUgYWN0 dWFsIHVwZGF0ZS4gKi8KKwkJLyogRmlyc3QgY2hlY2sgcHJpdmlsZWdlcyAqLwogCQlUYXJnZXRQ cml2aWxlZ2VzQ2hlY2socmVsaW5mby0+cmlfUmVsYXRpb25EZXNjLCBBQ0xfVVBEQVRFKTsKKwor CQkvKiBUaGVuIGRvIHRoZSBhY3R1YWwgdXBkYXRlLiAqLwogCQlFeGVjU2ltcGxlUmVsYXRpb25V cGRhdGUocmVsaW5mbywgZXN0YXRlLCAmZXBxc3RhdGUsIGxvY2Fsc2xvdCwKIAkJCQkJCQkJIHJl bW90ZXNsb3QpOwogCX0KQEAgLTM0NTUsNiArMzQ5OSw4IEBAIGFwcGx5X2hhbmRsZV90dXBsZV9y b3V0aW5nKEFwcGx5RXhlY3V0aW9uRGF0YSAqZWRhdGEsCiAJCQkJYm9vbAkJZm91bmQ7CiAJCQkJ RVBRU3RhdGUJZXBxc3RhdGU7CiAJCQkJQ29uZmxpY3RUdXBsZUluZm8gY29uZmxpY3R0dXBsZSA9 IHswfTsKKwkJCQlCaXRtYXBzZXQgICptb2RpZmllZCA9IE5VTEw7CisJCQkJQml0bWFwc2V0ICAq aW5kZXhlZDsKIAogCQkJCS8qIEdldCB0aGUgbWF0Y2hpbmcgbG9jYWwgdHVwbGUgZnJvbSB0aGUg cGFydGl0aW9uLiAqLwogCQkJCWZvdW5kID0gRmluZFJlcGxUdXBsZUluTG9jYWxSZWwoZWRhdGEs IHBhcnRyZWwsCkBAIC0zNTIzLDggKzM1NjksOCBAQCBhcHBseV9oYW5kbGVfdHVwbGVfcm91dGlu ZyhBcHBseUV4ZWN1dGlvbkRhdGEgKmVkYXRhLAogCQkJCSAqIHJlbW90ZXNsb3RfcGFydC4KIAkJ CQkgKi8KIAkJCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oR2V0UGVyVHVwbGVNZW1v cnlDb250ZXh0KGVzdGF0ZSkpOwotCQkJCXNsb3RfbW9kaWZ5X2RhdGEocmVtb3Rlc2xvdF9wYXJ0 LCBsb2NhbHNsb3QsIHBhcnRfZW50cnksCi0JCQkJCQkJCSBuZXd0dXApOworCQkJCW1vZGlmaWVk ID0gc2xvdF9tb2RpZnlfZGF0YShyZW1vdGVzbG90X3BhcnQsIGxvY2Fsc2xvdCwgcGFydF9lbnRy eSwKKwkJCQkJCQkJCQkJbmV3dHVwKTsKIAkJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4 KTsKIAogCQkJCUV2YWxQbGFuUXVhbEluaXQoJmVwcXN0YXRlLCBlc3RhdGUsIE5VTEwsIE5JTCwg LTEsIE5JTCk7CkBAIC0zNTQ5LDYgKzM1OTUsMTggQEAgYXBwbHlfaGFuZGxlX3R1cGxlX3JvdXRp bmcoQXBwbHlFeGVjdXRpb25EYXRhICplZGF0YSwKIAkJCQkJRXZhbFBsYW5RdWFsU2V0U2xvdCgm ZXBxc3RhdGUsIHJlbW90ZXNsb3RfcGFydCk7CiAJCQkJCVRhcmdldFByaXZpbGVnZXNDaGVjayhw YXJ0cmVsaW5mby0+cmlfUmVsYXRpb25EZXNjLAogCQkJCQkJCQkJCSAgQUNMX1VQREFURSk7CisK KwkJCQkJLyoKKwkJCQkJICogTm9ybWFsbHkgd2UnZCBjYWxsIEV4ZWNDaGVja0luZGV4ZWRBdHRy Rm9yQ2hhbmdlcyBidXQKKwkJCQkJICogaGVyZSB3ZSBoYXZlIHRoZSByZWNvcmQgb2YgY2hhbmdl ZCBjb2x1bW5zIGluIHRoZQorCQkJCQkgKiByZXBsaWNhdGlvbiBzdGF0ZSwgc28gbGV0J3MgdXNl IHRoYXQgaW5zdGVhZC4KKwkJCQkJICovCisJCQkJCWluZGV4ZWQgPSBSZWxhdGlvbkdldEluZGV4 QXR0ckJpdG1hcChwYXJ0cmVsaW5mby0+cmlfUmVsYXRpb25EZXNjLAorCQkJCQkJCQkJCQkJCQkg SU5ERVhfQVRUUl9CSVRNQVBfSU5ERVhFRCk7CisJCQkJCWJtc19mcmVlKHBhcnRyZWxpbmZvLT5y aV9DaGFuZ2VkSW5kZXhlZENvbHMpOworCQkJCQlwYXJ0cmVsaW5mby0+cmlfQ2hhbmdlZEluZGV4 ZWRDb2xzID0gYm1zX2ludF9tZW1iZXJzKG1vZGlmaWVkLCBpbmRleGVkKTsKKwkJCQkJYm1zX2Zy ZWUoaW5kZXhlZCk7CisKIAkJCQkJRXhlY1NpbXBsZVJlbGF0aW9uVXBkYXRlKHBhcnRyZWxpbmZv LCBlc3RhdGUsICZlcHFzdGF0ZSwKIAkJCQkJCQkJCQkJIGxvY2Fsc2xvdCwgcmVtb3Rlc2xvdF9w YXJ0KTsKIAkJCQl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNo ZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwppbmRleCA2YjYzNGM5ZmZm MS4uOGNjOTdlNGZiY2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNh Y2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwpAQCAtMjQ3Nyw2 ICsyNDc3LDcgQEAgUmVsYXRpb25EZXN0cm95UmVsYXRpb24oUmVsYXRpb24gcmVsYXRpb24sIGJv b2wgcmVtZW1iZXJfdHVwZGVzYykKIAlibXNfZnJlZShyZWxhdGlvbi0+cmRfaWRhdHRyKTsKIAli bXNfZnJlZShyZWxhdGlvbi0+cmRfaG90YmxvY2tpbmdhdHRyKTsKIAlibXNfZnJlZShyZWxhdGlv bi0+cmRfc3VtbWFyaXplZGF0dHIpOworCWJtc19mcmVlKHJlbGF0aW9uLT5yZF9pbmRleGVkYXR0 cik7CiAJaWYgKHJlbGF0aW9uLT5yZF9wdWJkZXNjKQogCQlwZnJlZShyZWxhdGlvbi0+cmRfcHVi ZGVzYyk7CiAJaWYgKHJlbGF0aW9uLT5yZF9vcHRpb25zKQpAQCAtNTI3OCw2ICs1Mjc5LDcgQEAg UmVsYXRpb25HZXRJbmRleFByZWRpY2F0ZShSZWxhdGlvbiByZWxhdGlvbikKICAqCQkJCQkJCQkJ aW5kZXggKGVtcHR5IGlmIEZVTEwpCiAgKglJTkRFWF9BVFRSX0JJVE1BUF9IT1RfQkxPQ0tJTkcJ Q29sdW1ucyB0aGF0IGJsb2NrIHVwZGF0ZXMgZnJvbSBiZWluZyBIT1QKICAqCUlOREVYX0FUVFJf QklUTUFQX1NVTU1BUklaRUQJQ29sdW1ucyBpbmNsdWRlZCBpbiBzdW1tYXJpemluZyBpbmRleGVz CisgKglJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVECQlDb2x1bW5zIHJlZmVyZW5jZWQgYnkgaW5k ZXhlcwogICoKICAqIEF0dHJpYnV0ZSBudW1iZXJzIGFyZSBvZmZzZXQgYnkgRmlyc3RMb3dJbnZh bGlkSGVhcEF0dHJpYnV0ZU51bWJlciBzbyB0aGF0CiAgKiB3ZSBjYW4gaW5jbHVkZSBzeXN0ZW0g YXR0cmlidXRlcyAoZS5nLiwgT0lEKSBpbiB0aGUgYml0bWFwIHJlcHJlc2VudGF0aW9uLgpAQCAt NTMwMiw2ICs1MzA0LDcgQEAgUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAoUmVsYXRpb24gcmVs YXRpb24sIEluZGV4QXR0ckJpdG1hcEtpbmQgYXR0cktpbmQpCiAJQml0bWFwc2V0ICAqaWRpbmRl eGF0dHJzOwkvKiBjb2x1bW5zIGluIHRoZSByZXBsaWNhIGlkZW50aXR5ICovCiAJQml0bWFwc2V0 ICAqaG90YmxvY2tpbmdhdHRyczsJLyogY29sdW1ucyB3aXRoIEhPVCBibG9ja2luZyBpbmRleGVz ICovCiAJQml0bWFwc2V0ICAqc3VtbWFyaXplZGF0dHJzOwkvKiBjb2x1bW5zIHdpdGggc3VtbWFy aXppbmcgaW5kZXhlcyAqLworCUJpdG1hcHNldCAgKmluZGV4ZWRhdHRyczsJLyogY29sdW1ucyBy ZWZlcmVuY2VkIGJ5IGluZGV4ZXMgKi8KIAlMaXN0CSAgICppbmRleG9pZGxpc3Q7CiAJTGlzdAkg ICAqbmV3aW5kZXhvaWRsaXN0OwogCU9pZAkJCXJlbHBraW5kZXg7CkBAIC01MzI0LDYgKzUzMjcs OCBAQCBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChSZWxhdGlvbiByZWxhdGlvbiwgSW5kZXhB dHRyQml0bWFwS2luZCBhdHRyS2luZCkKIAkJCQlyZXR1cm4gYm1zX2NvcHkocmVsYXRpb24tPnJk X2hvdGJsb2NraW5nYXR0cik7CiAJCQljYXNlIElOREVYX0FUVFJfQklUTUFQX1NVTU1BUklaRUQ6 CiAJCQkJcmV0dXJuIGJtc19jb3B5KHJlbGF0aW9uLT5yZF9zdW1tYXJpemVkYXR0cik7CisJCQlj YXNlIElOREVYX0FUVFJfQklUTUFQX0lOREVYRUQ6CisJCQkJcmV0dXJuIGJtc19jb3B5KHJlbGF0 aW9uLT5yZF9pbmRleGVkYXR0cik7CiAJCQlkZWZhdWx0OgogCQkJCWVsb2coRVJST1IsICJ1bmtu b3duIGF0dHJLaW5kICV1IiwgYXR0cktpbmQpOwogCQl9CkBAIC01MzY4LDYgKzUzNzMsNyBAQCBy ZXN0YXJ0OgogCWlkaW5kZXhhdHRycyA9IE5VTEw7CiAJaG90YmxvY2tpbmdhdHRycyA9IE5VTEw7 CiAJc3VtbWFyaXplZGF0dHJzID0gTlVMTDsKKwlpbmRleGVkYXR0cnMgPSBOVUxMOwogCWZvcmVh Y2gobCwgaW5kZXhvaWRsaXN0KQogCXsKIAkJT2lkCQkJaW5kZXhPaWQgPSBsZmlyc3Rfb2lkKGwp OwpAQCAtNTUwMCwxMCArNTUwNiwxNCBAQCByZXN0YXJ0OgogCQlibXNfZnJlZShpZGluZGV4YXR0 cnMpOwogCQlibXNfZnJlZShob3RibG9ja2luZ2F0dHJzKTsKIAkJYm1zX2ZyZWUoc3VtbWFyaXpl ZGF0dHJzKTsKKwkJYm1zX2ZyZWUoaW5kZXhlZGF0dHJzKTsKIAogCQlnb3RvIHJlc3RhcnQ7CiAJ fQogCisJLyogQ29tYmluZSBhbGwgaW5kZXggYXR0cmlidXRlcyAqLworCWluZGV4ZWRhdHRycyA9 IGJtc191bmlvbihob3RibG9ja2luZ2F0dHJzLCBzdW1tYXJpemVkYXR0cnMpOworCiAJLyogRG9u J3QgbGVhayB0aGUgb2xkIHZhbHVlcyBvZiB0aGVzZSBiaXRtYXBzLCBpZiBhbnkgKi8KIAlyZWxh dGlvbi0+cmRfYXR0cnN2YWxpZCA9IGZhbHNlOwogCWJtc19mcmVlKHJlbGF0aW9uLT5yZF9rZXlh dHRyKTsKQEAgLTU1MTYsNiArNTUyNiw4IEBAIHJlc3RhcnQ6CiAJcmVsYXRpb24tPnJkX2hvdGJs b2NraW5nYXR0ciA9IE5VTEw7CiAJYm1zX2ZyZWUocmVsYXRpb24tPnJkX3N1bW1hcml6ZWRhdHRy KTsKIAlyZWxhdGlvbi0+cmRfc3VtbWFyaXplZGF0dHIgPSBOVUxMOworCWJtc19mcmVlKHJlbGF0 aW9uLT5yZF9pbmRleGVkYXR0cik7CisJcmVsYXRpb24tPnJkX2luZGV4ZWRhdHRyID0gTlVMTDsK IAogCS8qCiAJICogTm93IHNhdmUgY29waWVzIG9mIHRoZSBiaXRtYXBzIGluIHRoZSByZWxjYWNo ZSBlbnRyeS4gIFdlIGludGVudGlvbmFsbHkKQEAgLTU1MzAsNiArNTU0Miw3IEBAIHJlc3RhcnQ6 CiAJcmVsYXRpb24tPnJkX2lkYXR0ciA9IGJtc19jb3B5KGlkaW5kZXhhdHRycyk7CiAJcmVsYXRp b24tPnJkX2hvdGJsb2NraW5nYXR0ciA9IGJtc19jb3B5KGhvdGJsb2NraW5nYXR0cnMpOwogCXJl bGF0aW9uLT5yZF9zdW1tYXJpemVkYXR0ciA9IGJtc19jb3B5KHN1bW1hcml6ZWRhdHRycyk7CisJ cmVsYXRpb24tPnJkX2luZGV4ZWRhdHRyID0gYm1zX2NvcHkoaW5kZXhlZGF0dHJzKTsKIAlyZWxh dGlvbi0+cmRfYXR0cnN2YWxpZCA9IHRydWU7CiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4 dCk7CiAKQEAgLTU1NDYsNiArNTU1OSw4IEBAIHJlc3RhcnQ6CiAJCQlyZXR1cm4gaG90YmxvY2tp bmdhdHRyczsKIAkJY2FzZSBJTkRFWF9BVFRSX0JJVE1BUF9TVU1NQVJJWkVEOgogCQkJcmV0dXJu IHN1bW1hcml6ZWRhdHRyczsKKwkJY2FzZSBJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVEOgorCQkJ cmV0dXJuIGluZGV4ZWRhdHRyczsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bmtub3du IGF0dHJLaW5kICV1IiwgYXR0cktpbmQpOwogCQkJcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9hY2Nlc3MvYW1hcGkuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9hbWFwaS5oCmlu ZGV4IGVjZmJkMDE3ZDY2Li4yYTM2YjdlNGExOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNj ZXNzL2FtYXBpLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2FtYXBpLmgKQEAgLTIxMSw2ICsy MTEsMzMgQEAgdHlwZWRlZiB2b2lkICgqYW1tYXJrcG9zX2Z1bmN0aW9uKSAoSW5kZXhTY2FuRGVz YyBzY2FuKTsKIC8qIHJlc3RvcmUgbWFya2VkIHNjYW4gcG9zaXRpb24gKi8KIHR5cGVkZWYgdm9p ZCAoKmFtcmVzdHJwb3NfZnVuY3Rpb24pIChJbmRleFNjYW5EZXNjIHNjYW4pOwogCisvKgorICog YW1jb21wYXJlZGF0dW1zIC0gQ29tcGFyZSBkYXR1bXMgdG8gZGV0ZXJtaW5lIGlmIGluZGV4IHVw ZGF0ZSBpcyBuZWVkZWQKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGNvbXBhcmVzIG9sZF9kYXR1bSBh bmQgbmV3X2RhdHVtIHRvIGRldGVybWluZSBpZiB0aGV5IHdvdWxkCisgKiBwcm9kdWNlIGRpZmZl cmVudCBpbmRleCBlbnRyaWVzLiBGb3IgZXh0cmFjdGlvbi1iYXNlZCBpbmRleGVzIChHSU4sIFJV TSksCisgKiB0aGlzIHNob3VsZDoKKyAqICAxLiBFeHRyYWN0IGtleXMgZnJvbSBvbGRfZGF0dW0g dXNpbmcgdGhlIG9wY2xhc3MncyBleHRyYWN0VmFsdWUgZnVuY3Rpb24KKyAqICAyLiBFeHRyYWN0 IGtleXMgZnJvbSBuZXdfZGF0dW0gdXNpbmcgdGhlIG9wY2xhc3MncyBleHRyYWN0VmFsdWUgZnVu Y3Rpb24KKyAqICAzLiBDb21wYXJlIHRoZSB0d28gc2V0cyBvZiBrZXlzIHVzaW5nIGFwcHJvcHJp YXRlIGVxdWFsaXR5IG9wZXJhdG9ycworICogIDQuIFJldHVybiB0cnVlIGlmIHRoZSBzZXRzIGFy ZSBlcXVhbCAobm8gaW5kZXggdXBkYXRlIG5lZWRlZCkKKyAqCisgKiBUaGUgY29tcGFyaXNvbiBz aG91bGQgYWNjb3VudCBmb3I6CisgKiAgLSBEaWZmZXJlbnQgbnVtYmVycyBvZiBleHRyYWN0ZWQg a2V5cworICogIC0gTlVMTCB2YWx1ZXMKKyAqICAtIFR5cGUtc3BlY2lmaWMgZXF1YWxpdHkgKG5v dCBqdXN0IGJpbmFyeSBlcXVhbGl0eSkKKyAqICAtIE9wY2xhc3MgcGFyYW1ldGVycyAoZS5nLiwg cGF0aCBpbiBic29uX3J1bV9zaW5nbGVfcGF0aF9vcHMpCisgKgorICogRm9yIHRoZSBEb2N1bWVu dERCIGV4YW1wbGUgd2l0aCBwYXRoPSdhJywgdGhpcyB3b3VsZCBleHRyYWN0IHZhbHVlcyBhdAor ICogcGF0aCAnYScgZnJvbSBib3RoIG9sZCBhbmQgbmV3IEJTT04gZG9jdW1lbnRzIGFuZCBjb21w YXJlIHRoZW0gdXNpbmcKKyAqIEJTT04ncyBlcXVhbGl0eSBvcGVyYXRvci4KKyAqLworLyogaWRl bnRpZnkgaWYgdXBkYXRlZCBkYXR1bXMgd291bGQgcHJvZHVjZSBvbmUgb3IgbW9yZSBpbmRleCBl bnRyaWVzICovCit0eXBlZGVmIGJvb2wgKCphbWNvbXBhcmVkYXR1bXNfZnVuY3Rpb24pIChSZWxh dGlvbiBpbmRleFJlbGF0aW9uLAorCQkJCQkJCQkJCSAgaW50IGF0dG5vLAorCQkJCQkJCQkJCSAg RGF0dW0gb2xkX2RhdHVtLCBib29sIG9sZF9pc251bGwsCisJCQkJCQkJCQkJICBEYXR1bSBuZXdf ZGF0dW0sIGJvb2wgbmV3X2lzbnVsbCk7CisKIC8qCiAgKiBDYWxsYmFjayBmdW5jdGlvbiBzaWdu YXR1cmVzIC0gZm9yIHBhcmFsbGVsIGluZGV4IHNjYW5zLgogICovCkBAIC0zMTMsNiArMzQwLDcg QEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhBbVJvdXRpbmUKIAlhbWVuZHNjYW5fZnVuY3Rpb24gYW1l bmRzY2FuOwogCWFtbWFya3Bvc19mdW5jdGlvbiBhbW1hcmtwb3M7CS8qIGNhbiBiZSBOVUxMICov CiAJYW1yZXN0cnBvc19mdW5jdGlvbiBhbXJlc3RycG9zOyAvKiBjYW4gYmUgTlVMTCAqLworCWFt Y29tcGFyZWRhdHVtc19mdW5jdGlvbiBhbWNvbXBhcmVkYXR1bXM7CS8qIGNhbiBiZSBOVUxMICov CiAKIAkvKiBpbnRlcmZhY2UgZnVuY3Rpb25zIHRvIHN1cHBvcnQgcGFyYWxsZWwgaW5kZXggc2Nh bnMgKi8KIAlhbWVzdGltYXRlcGFyYWxsZWxzY2FuX2Z1bmN0aW9uIGFtZXN0aW1hdGVwYXJhbGxl bHNjYW47IC8qIGNhbiBiZSBOVUxMICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv Z2luLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2luLmgKaW5kZXggZmExYTNiMjBlMDkuLjY5Nzcx ZmU5NDdiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2luLmgKKysrIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL2dpbi5oCkBAIC0xMDAsNiArMTAwLDkgQEAgZXh0ZXJuIFBHRExMSU1QT1JU IGludCBnaW5fcGVuZGluZ19saXN0X2xpbWl0OwogZXh0ZXJuIHZvaWQgZ2luR2V0U3RhdHMoUmVs YXRpb24gaW5kZXgsIEdpblN0YXRzRGF0YSAqc3RhdHMpOwogZXh0ZXJuIHZvaWQgZ2luVXBkYXRl U3RhdHMoUmVsYXRpb24gaW5kZXgsIGNvbnN0IEdpblN0YXRzRGF0YSAqc3RhdHMsCiAJCQkJCQkg ICBib29sIGlzX2J1aWxkKTsKK2V4dGVybiBib29sIGdpbmNvbXBhcmVkYXR1bXMoUmVsYXRpb24g aW5kZXgsIGludCBhdHRudW0sCisJCQkJCQkJIERhdHVtIG9sZF9kYXR1bSwgYm9vbCBvbGRfaXNu dWxsLAorCQkJCQkJCSBEYXR1bSBuZXdfZGF0dW0sIGJvb2wgbmV3X2lzbnVsbCk7CiAKIGV4dGVy biB2b2lkIF9naW5fcGFyYWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9j ICp0b2MpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMv aW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggNDExOTNkNWIzZDIuLjAyOWY4ZTg0ZThhIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUv YWNjZXNzL2hlYXBhbS5oCkBAIC0zNjksNyArMzY5LDcgQEAgZXh0ZXJuIFRNX1Jlc3VsdCBoZWFw X3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgSGVhcFR1cGxlRGF0YSAqb2xkdHVwLAogCQkJCQkJ CSBUTV9GYWlsdXJlRGF0YSAqdG1mZCwgTG9ja1R1cGxlTW9kZSAqbG9ja21vZGUsIEJ1ZmZlciBi dWZmZXIsCiAJCQkJCQkJIFBhZ2UgcGFnZSwgQmxvY2tOdW1iZXIgYmxvY2ssIEl0ZW1JZCBscCwg Qml0bWFwc2V0ICpob3RfYXR0cnMsCiAJCQkJCQkJIEJpdG1hcHNldCAqc3VtX2F0dHJzLCBCaXRt YXBzZXQgKnBrX2F0dHJzLCBCaXRtYXBzZXQgKnJpZF9hdHRycywKLQkJCQkJCQkgQml0bWFwc2V0 ICptaXhfYXR0cnMsIEJ1ZmZlciAqdm1idWZmZXIsCisJCQkJCQkJIGNvbnN0IEJpdG1hcHNldCAq bWl4X2F0dHJzLCBCdWZmZXIgKnZtYnVmZmVyLAogCQkJCQkJCSBib29sIHJlcF9pZF9rZXlfcmVx dWlyZWQsIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKTsKIGV4dGVybiBUTV9SZXN1 bHQgaGVhcF9sb2NrX3R1cGxlKFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUgdHVwbGUsCiAJ CQkJCQkJCSBDb21tYW5kSWQgY2lkLCBMb2NrVHVwbGVNb2RlIG1vZGUsIExvY2tXYWl0UG9saWN5 IHdhaXRfcG9saWN5LApAQCAtNDA0LDggKzQwNCw4IEBAIGV4dGVybiBib29sIGhlYXBfdHVwbGVf bmVlZHNfZXZlbnR1YWxfZnJlZXplKEhlYXBUdXBsZUhlYWRlciB0dXBsZSk7CiAKIGV4dGVybiB2 b2lkIHNpbXBsZV9oZWFwX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwgSGVhcFR1cGxlIHR1cCk7 CiBleHRlcm4gdm9pZCBzaW1wbGVfaGVhcF9kZWxldGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0 IEl0ZW1Qb2ludGVyRGF0YSAqdGlkKTsKLWV4dGVybiB2b2lkIHNpbXBsZV9oZWFwX3VwZGF0ZShS ZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLAotCQkJCQkJCSAg IEhlYXBUdXBsZSB0dXAsIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKTsKK2V4dGVy biBCaXRtYXBzZXQgKnNpbXBsZV9oZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3Qg SXRlbVBvaW50ZXJEYXRhICpvdGlkLAorCQkJCQkJCQkJIEhlYXBUdXBsZSB0dXAsIFRVX1VwZGF0 ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKTsKIAogZXh0ZXJuIFRyYW5zYWN0aW9uSWQgaGVhcF9p bmRleF9kZWxldGVfdHVwbGVzKFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCQkJICBUTV9JbmRleERl bGV0ZU9wICpkZWxzdGF0ZSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVl LmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmgKaW5kZXggNzcyMjQ4NTk2ODUuLjUzMjY1 NmE0ODdmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmgKKysrIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL25idHJlZS5oCkBAIC0xMTc5LDYgKzExNzksMTAgQEAgZXh0ZXJuIGlu dAlidGdldHRyZWVoZWlnaHQoUmVsYXRpb24gcmVsKTsKIAogZXh0ZXJuIENvbXBhcmVUeXBlIGJ0 dHJhbnNsYXRlc3RyYXRlZ3koU3RyYXRlZ3lOdW1iZXIgc3RyYXRlZ3ksIE9pZCBvcGZhbWlseSk7 CiBleHRlcm4gU3RyYXRlZ3lOdW1iZXIgYnR0cmFuc2xhdGVjbXB0eXBlKENvbXBhcmVUeXBlIGNt cHR5cGUsIE9pZCBvcGZhbWlseSk7CitleHRlcm4gYm9vbCBidGNvbXBhcmVkYXR1bXMoUmVsYXRp b24gaW5kZXgsIGludCBhdHRudW0sCisJCQkJCQkJRGF0dW0gb2xkX2RhdHVtLCBib29sIG9sZF9p c251bGwsCisJCQkJCQkJRGF0dW0gbmV3X2RhdHVtLCBib29sIG5ld19pc251bGwpOworCiAKIC8q CiAgKiBwcm90b3R5cGVzIGZvciBpbnRlcm5hbCBmdW5jdGlvbnMgaW4gbmJ0cmVlLmMKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3Mv dGFibGVhbS5oCmluZGV4IGUyZWM1Mjg5ZDRkLi40YmVkMGY4ZTU2ZSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVh bS5oCkBAIC01NDksNiArNTQ5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgVGFibGVBbVJvdXRpbmUKIAkJ CQkJCQkJIGJvb2wgd2FpdCwKIAkJCQkJCQkJIFRNX0ZhaWx1cmVEYXRhICp0bWZkLAogCQkJCQkJ CQkgTG9ja1R1cGxlTW9kZSAqbG9ja21vZGUsCisJCQkJCQkJCSBjb25zdCBCaXRtYXBzZXQgKnVw ZGF0ZWRfY29scywKIAkJCQkJCQkJIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKTsK IAogCS8qIHNlZSB0YWJsZV90dXBsZV9sb2NrKCkgZm9yIHJlZmVyZW5jZSBhYm91dCBwYXJhbWV0 ZXJzICovCkBAIC0xNTEyLDEyICsxNTEzLDEyIEBAIHN0YXRpYyBpbmxpbmUgVE1fUmVzdWx0CiB0 YWJsZV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsLCBJdGVtUG9pbnRlciBvdGlkLCBUdXBsZVRh YmxlU2xvdCAqc2xvdCwKIAkJCQkgICBDb21tYW5kSWQgY2lkLCBTbmFwc2hvdCBzbmFwc2hvdCwg U25hcHNob3QgY3Jvc3NjaGVjaywKIAkJCQkgICBib29sIHdhaXQsIFRNX0ZhaWx1cmVEYXRhICp0 bWZkLCBMb2NrVHVwbGVNb2RlICpsb2NrbW9kZSwKLQkJCQkgICBUVV9VcGRhdGVJbmRleGVzICp1 cGRhdGVfaW5kZXhlcykKKwkJCQkgICBjb25zdCBCaXRtYXBzZXQgKm1peF9jb2xzLCBUVV9VcGRh dGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKIHsKIAlyZXR1cm4gcmVsLT5yZF90YWJsZWFtLT50 dXBsZV91cGRhdGUocmVsLCBvdGlkLCBzbG90LAogCQkJCQkJCQkJCSBjaWQsIHNuYXBzaG90LCBj cm9zc2NoZWNrLAotCQkJCQkJCQkJCSB3YWl0LCB0bWZkLAotCQkJCQkJCQkJCSBsb2NrbW9kZSwg dXBkYXRlX2luZGV4ZXMpOworCQkJCQkJCQkJCSB3YWl0LCB0bWZkLCBsb2NrbW9kZSwKKwkJCQkJ CQkJCQkgbWl4X2NvbHMsIHVwZGF0ZV9pbmRleGVzKTsKIH0KIAogLyoKQEAgLTIwMjAsNiArMjAy MSw3IEBAIGV4dGVybiB2b2lkIHNpbXBsZV90YWJsZV90dXBsZV9kZWxldGUoUmVsYXRpb24gcmVs LCBJdGVtUG9pbnRlciB0aWQsCiAJCQkJCQkJCQkgIFNuYXBzaG90IHNuYXBzaG90KTsKIGV4dGVy biB2b2lkIHNpbXBsZV90YWJsZV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsLCBJdGVtUG9pbnRl ciBvdGlkLAogCQkJCQkJCQkJICBUdXBsZVRhYmxlU2xvdCAqc2xvdCwgU25hcHNob3Qgc25hcHNo b3QsCisJCQkJCQkJCQkgIGNvbnN0IEJpdG1hcHNldCAqbWl4X2F0dHJzLAogCQkJCQkJCQkJICBU VV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcyk7CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9pbmRleC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCmluZGV4 IGIyNTljNDE0MWVkLi4xNGEzOWJlYWI2ZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9pbmRleC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaApAQCAtMTMyLDYgKzEz Miw3IEBAIGV4dGVybiBib29sIENvbXBhcmVJbmRleEluZm8oY29uc3QgSW5kZXhJbmZvICppbmZv MSwgY29uc3QgSW5kZXhJbmZvICppbmZvMiwKIAkJCQkJCQkgY29uc3QgQXR0ck1hcCAqYXR0bWFw KTsKIAogZXh0ZXJuIHZvaWQgQnVpbGRTcGVjdWxhdGl2ZUluZGV4SW5mbyhSZWxhdGlvbiBpbmRl eCwgSW5kZXhJbmZvICppaSk7CitleHRlcm4gdm9pZCBCdWlsZFVwZGF0ZUluZGV4SW5mbyhSZXN1 bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvKTsKIAogZXh0ZXJuIHZvaWQgRm9ybUluZGV4RGF0dW0o SW5kZXhJbmZvICppbmRleEluZm8sCiAJCQkJCQkgICBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggYi9zcmMvaW5jbHVkZS9l eGVjdXRvci9leGVjdXRvci5oCmluZGV4IDU5MjlhYWJjMzUzLi5iNGM3NTdhZjYxOCAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAorKysgYi9zcmMvaW5jbHVkZS9l eGVjdXRvci9leGVjdXRvci5oCkBAIC03MzksNiArNzM5LDExIEBAIGV4dGVybiBCaXRtYXBzZXQg KkV4ZWNHZXRBbGxVcGRhdGVkQ29scyhSZXN1bHRSZWxJbmZvICpyZWxpbmZvLCBFU3RhdGUgKmVz dGF0ZSk7CiAgKi8KIGV4dGVybiB2b2lkIEV4ZWNPcGVuSW5kaWNlcyhSZXN1bHRSZWxJbmZvICpy ZXN1bHRSZWxJbmZvLCBib29sIHNwZWN1bGF0aXZlKTsKIGV4dGVybiB2b2lkIEV4ZWNDbG9zZUlu ZGljZXMoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbyk7CitleHRlcm4gQml0bWFwc2V0ICpF eGVjV2hpY2hJbmRleGVzUmVxdWlyZVVwZGF0ZXMoUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywKKwkJ CQkJCQkJCQkJCSBCaXRtYXBzZXQgKm1peF9hdHRycywKKwkJCQkJCQkJCQkJCSBFU3RhdGUgKmVz dGF0ZSwKKwkJCQkJCQkJCQkJCSBUdXBsZVRhYmxlU2xvdCAqb2xkX3R0cywKKwkJCQkJCQkJCQkJ CSBUdXBsZVRhYmxlU2xvdCAqbmV3X3R0cyk7CiBleHRlcm4gTGlzdCAqRXhlY0luc2VydEluZGV4 VHVwbGVzKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJCQkJCQkJCSAgIFR1cGxlVGFi bGVTbG90ICpzbG90LCBFU3RhdGUgKmVzdGF0ZSwKIAkJCQkJCQkJICAgYm9vbCB1cGRhdGUsCkBA IC04MDAsNSArODA1LDkgQEAgZXh0ZXJuIFJlc3VsdFJlbEluZm8gKkV4ZWNMb29rdXBSZXN1bHRS ZWxCeU9pZChNb2RpZnlUYWJsZVN0YXRlICpub2RlLAogCQkJCQkJCQkJCQkgICBPaWQgcmVzdWx0 b2lkLAogCQkJCQkJCQkJCQkgICBib29sIG1pc3Npbmdfb2ssCiAJCQkJCQkJCQkJCSAgIGJvb2wg dXBkYXRlX2NhY2hlKTsKK2V4dGVybiBCaXRtYXBzZXQgKkV4ZWNDaGVja0luZGV4ZWRBdHRyc0Zv ckNoYW5nZXMoUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywKKwkJCQkJCQkJCQkJCSAgRVN0YXRlICpl c3RhdGUsCisJCQkJCQkJCQkJCQkgIFR1cGxlVGFibGVTbG90ICpvbGRfdHRzLAorCQkJCQkJCQkJ CQkJICBUdXBsZVRhYmxlU2xvdCAqbmV3X3R0cyk7CiAKICNlbmRpZgkJCQkJCQkvKiBFWEVDVVRP Ul9IICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMv aW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCAwMjI2NTQ1Njk3OC4uZDVhZjJmMzRkMGYg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNs dWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC0xNzQsMTUgKzE3NCwyOSBAQCB0eXBlZGVmIHN0cnVj dCBJbmRleEluZm8KIAkgKi8KIAlBdHRyTnVtYmVyCWlpX0luZGV4QXR0ck51bWJlcnNbSU5ERVhf TUFYX0tFWVNdOwogCisJLyoKKwkgKiBBbGwga2V5LCBleHByZXNzaW9uLCBzdW1hcml6aW5nLCBh bmQgcGFydGl0aW9uIGF0dHJpYnV0ZXMgcmVmZXJlbmNlZCBieQorCSAqIHRoaXMgaW5kZXgKKwkg Ki8KKwlCaXRtYXBzZXQgICppaV9JbmRleGVkQXR0cnM7CisKIAkvKiBleHByIHRyZWVzIGZvciBl eHByZXNzaW9uIGVudHJpZXMsIG9yIE5JTCBpZiBub25lICovCiAJTGlzdAkgICAqaWlfRXhwcmVz c2lvbnM7IC8qIGxpc3Qgb2YgRXhwciAqLwogCS8qIGV4ZWMgc3RhdGUgZm9yIGV4cHJlc3Npb25z LCBvciBOSUwgaWYgbm9uZSAqLwogCUxpc3QJICAgKmlpX0V4cHJlc3Npb25zU3RhdGU7CS8qIGxp c3Qgb2YgRXhwclN0YXRlICovCisJLyogYXR0cmlidXRlcyBleGNsdXNpdmVseSByZWZlcmVuY2Vk IGJ5IGV4cHJlc3Npb24gaW5kZXhlcyAqLworCUJpdG1hcHNldCAgKmlpX0V4cHJlc3Npb25zQXR0 cnM7CiAKIAkvKiBwYXJ0aWFsLWluZGV4IHByZWRpY2F0ZSwgb3IgTklMIGlmIG5vbmUgKi8KIAlM aXN0CSAgICppaV9QcmVkaWNhdGU7CS8qIGxpc3Qgb2YgRXhwciAqLwogCS8qIGV4ZWMgc3RhdGUg Zm9yIGV4cHJlc3Npb25zLCBvciBOSUwgaWYgbm9uZSAqLwogCUV4cHJTdGF0ZSAgKmlpX1ByZWRp Y2F0ZVN0YXRlOworCS8qIGF0dHJpYnV0ZXMgcmVmZXJlbmNlZCBieSB0aGUgcHJlZGljYXRlICov CisJQml0bWFwc2V0ICAqaWlfUHJlZGljYXRlQXR0cnM7CisJLyogcGFydGlhbCBpbmRleCBwcmVk aWNhdGUgZGV0ZXJtaW5lZCB5ZXQ/ICovCisJYm9vbAkJaWlfQ2hlY2tlZFByZWRpY2F0ZTsKKwkv KiBhbXVwZGF0ZSBoaW50IHVzZWQgdG8gYXZvaWQgcmVjaGVja2luZyBwcmVkaWNhdGUgKi8KKwli b29sCQlpaV9QcmVkaWNhdGVTYXRpc2ZpZWQ7CiAKIAkvKiBQZXItY29sdW1uIGV4Y2x1c2lvbiBv cGVyYXRvcnMsIG9yIE5VTEwgaWYgbm9uZSAqLwogCU9pZAkJICAgKmlpX0V4Y2x1c2lvbk9wczsJ LyogYXJyYXkgd2l0aCBvbmUgZW50cnkgcGVyIGNvbHVtbiAqLwpAQCAtNDk5LDYgKzUxMywxMiBA QCB0eXBlZGVmIHN0cnVjdCBSZXN1bHRSZWxJbmZvCiAJLyogdHJ1ZSBpZiB0aGUgYWJvdmUgaGFz IGJlZW4gY29tcHV0ZWQgKi8KIAlib29sCQlyaV9leHRyYVVwZGF0ZWRDb2xzX3ZhbGlkOwogCisJ LyoKKwkgKiBGb3IgVVBEQVRFIGEgQml0bWFwc2V0IG9mIHRoZSBhdHRyaWJ1dGVzIHRoYXQgYXJl IGJvdGggaW5kZXhlZCBhbmQgaGF2ZQorCSAqIGNoYW5nZWQgaW4gdmFsdWUuCisJICovCisJQml0 bWFwc2V0ICAqcmlfQ2hhbmdlZEluZGV4ZWRDb2xzOworCiAJLyogUHJvamVjdGlvbiB0byBnZW5l cmF0ZSBuZXcgdHVwbGUgaW4gYW4gSU5TRVJUL1VQREFURSAqLwogCVByb2plY3Rpb25JbmZvICpy aV9wcm9qZWN0TmV3OwogCS8qIFNsb3QgdG8gaG9sZCB0aGF0IHR1cGxlICovCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS91dGlscy9yZWwuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCmluZGV4 IGQwM2FiMjQ3Nzg4Li45NWIzOGFiZmQ4OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMv cmVsLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKQEAgLTE2NCw2ICsxNjQsNyBAQCB0 eXBlZGVmIHN0cnVjdCBSZWxhdGlvbkRhdGEKIAlCaXRtYXBzZXQgICpyZF9pZGF0dHI7CQkvKiBp bmNsdWRlZCBpbiByZXBsaWNhIGlkZW50aXR5IGluZGV4ICovCiAJQml0bWFwc2V0ICAqcmRfaG90 YmxvY2tpbmdhdHRyOyAvKiBjb2xzIGJsb2NraW5nIEhPVCB1cGRhdGUgKi8KIAlCaXRtYXBzZXQg ICpyZF9zdW1tYXJpemVkYXR0cjsJLyogY29scyBpbmRleGVkIGJ5IHN1bW1hcml6aW5nIGluZGV4 ZXMgKi8KKwlCaXRtYXBzZXQgICpyZF9pbmRleGVkYXR0cjsgLyogYWxsIGNvbHMgcmVmZXJlbmNl ZCBieSBpbmRleGVzICovCiAKIAlQdWJsaWNhdGlvbkRlc2MgKnJkX3B1YmRlc2M7CS8qIHB1Ymxp Y2F0aW9uIGRlc2NyaXB0b3IsIG9yIE5VTEwgKi8KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv dXRpbHMvcmVsY2FjaGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3JlbGNhY2hlLmgKaW5kZXggMjcw MDIyNDkzOWEuLjU4MzRhYjdiOTAzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9yZWxj YWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3JlbGNhY2hlLmgKQEAgLTcxLDYgKzcxLDcg QEAgdHlwZWRlZiBlbnVtIEluZGV4QXR0ckJpdG1hcEtpbmQKIAlJTkRFWF9BVFRSX0JJVE1BUF9J REVOVElUWV9LRVksCiAJSU5ERVhfQVRUUl9CSVRNQVBfSE9UX0JMT0NLSU5HLAogCUlOREVYX0FU VFJfQklUTUFQX1NVTU1BUklaRUQsCisJSU5ERVhfQVRUUl9CSVRNQVBfSU5ERVhFRCwKIH0gSW5k ZXhBdHRyQml0bWFwS2luZDsKIAogZXh0ZXJuIEJpdG1hcHNldCAqUmVsYXRpb25HZXRJbmRleEF0 dHJCaXRtYXAoUmVsYXRpb24gcmVsYXRpb24sCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRp b24vZXhwZWN0ZWQvaW5zZXJ0LWNvbmZsaWN0LXNwZWNjb25mbGljdC5vdXQgYi9zcmMvdGVzdC9p c29sYXRpb24vZXhwZWN0ZWQvaW5zZXJ0LWNvbmZsaWN0LXNwZWNjb25mbGljdC5vdXQKaW5kZXgg ZTM0YTgyMWM0MDMuLjU0YjM5ODE5MThjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9pc29sYXRpb24v ZXhwZWN0ZWQvaW5zZXJ0LWNvbmZsaWN0LXNwZWNjb25mbGljdC5vdXQKKysrIGIvc3JjL3Rlc3Qv aXNvbGF0aW9uL2V4cGVjdGVkL2luc2VydC1jb25mbGljdC1zcGVjY29uZmxpY3Qub3V0CkBAIC04 MCw2ICs4MCwxMCBAQCBwZ19hZHZpc29yeV91bmxvY2sKIHQgICAgICAgICAgICAgICAgIAogKDEg cm93KQogCitzMTogTk9USUNFOiAgYmx1cnRfYW5kX2xvY2tfMTIzKCkgY2FsbGVkIGZvciBrMSBp biBzZXNzaW9uIDEKK3MxOiBOT1RJQ0U6ICBhY3F1aXJpbmcgYWR2aXNvcnkgbG9jayBvbiAyCitz MTogTk9USUNFOiAgYmx1cnRfYW5kX2xvY2tfMTIzKCkgY2FsbGVkIGZvciBrMSBpbiBzZXNzaW9u IDEKK3MxOiBOT1RJQ0U6ICBhY3F1aXJpbmcgYWR2aXNvcnkgbG9jayBvbiAyCiBzMTogTk9USUNF OiAgYmx1cnRfYW5kX2xvY2tfMTIzKCkgY2FsbGVkIGZvciBrMSBpbiBzZXNzaW9uIDEKIHMxOiBO T1RJQ0U6ICBhY3F1aXJpbmcgYWR2aXNvcnkgbG9jayBvbiAyCiBzMTogTk9USUNFOiAgYmx1cnRf YW5kX2xvY2tfMTIzKCkgY2FsbGVkIGZvciBrMSBpbiBzZXNzaW9uIDEKQEAgLTE3Miw2ICsxNzYs MTAgQEAgcGdfYWR2aXNvcnlfdW5sb2NrCiB0ICAgICAgICAgICAgICAgICAKICgxIHJvdykKIAor czI6IE5PVElDRTogIGJsdXJ0X2FuZF9sb2NrXzEyMygpIGNhbGxlZCBmb3IgazEgaW4gc2Vzc2lv biAyCitzMjogTk9USUNFOiAgYWNxdWlyaW5nIGFkdmlzb3J5IGxvY2sgb24gMgorczI6IE5PVElD RTogIGJsdXJ0X2FuZF9sb2NrXzEyMygpIGNhbGxlZCBmb3IgazEgaW4gc2Vzc2lvbiAyCitzMjog Tk9USUNFOiAgYWNxdWlyaW5nIGFkdmlzb3J5IGxvY2sgb24gMgogczI6IE5PVElDRTogIGJsdXJ0 X2FuZF9sb2NrXzEyMygpIGNhbGxlZCBmb3IgazEgaW4gc2Vzc2lvbiAyCiBzMjogTk9USUNFOiAg YWNxdWlyaW5nIGFkdmlzb3J5IGxvY2sgb24gMgogczI6IE5PVElDRTogIGJsdXJ0X2FuZF9sb2Nr XzEyMygpIGNhbGxlZCBmb3IgazEgaW4gc2Vzc2lvbiAyCkBAIC0zNjksNiArMzc3LDEwIEBAIGtl eXxkYXRhCiBzdGVwIHMxX2NvbW1pdDogQ09NTUlUOwogczI6IE5PVElDRTogIGJsdXJ0X2FuZF9s b2NrXzEyMygpIGNhbGxlZCBmb3IgazEgaW4gc2Vzc2lvbiAyCiBzMjogTk9USUNFOiAgYWNxdWly aW5nIGFkdmlzb3J5IGxvY2sgb24gMgorczI6IE5PVElDRTogIGJsdXJ0X2FuZF9sb2NrXzEyMygp IGNhbGxlZCBmb3IgazEgaW4gc2Vzc2lvbiAyCitzMjogTk9USUNFOiAgYWNxdWlyaW5nIGFkdmlz b3J5IGxvY2sgb24gMgorczI6IE5PVElDRTogIGJsdXJ0X2FuZF9sb2NrXzEyMygpIGNhbGxlZCBm b3IgazEgaW4gc2Vzc2lvbiAyCitzMjogTk9USUNFOiAgYWNxdWlyaW5nIGFkdmlzb3J5IGxvY2sg b24gMgogc3RlcCBzMl91cHNlcnQ6IDwuLi4gY29tcGxldGVkPgogc3RlcCBjb250cm9sbGVyX3No b3c6IFNFTEVDVCAqIEZST00gdXBzZXJ0dGVzdDsKIGtleXxkYXRhICAgICAgIApAQCAtNTMwLDYg KzU0MiwxNCBAQCBpc29sYXRpb24vaW5zZXJ0LWNvbmZsaWN0LXNwZWNjb25mbGljdC9zMnx0cmFu c2FjdGlvbmlkfEV4Y2x1c2l2ZUxvY2t8dAogc3RlcCBzMl9jb21taXQ6IENPTU1JVDsKIHMxOiBO T1RJQ0U6ICBibHVydF9hbmRfbG9ja18xMjMoKSBjYWxsZWQgZm9yIGsxIGluIHNlc3Npb24gMQog czE6IE5PVElDRTogIGFjcXVpcmluZyBhZHZpc29yeSBsb2NrIG9uIDIKK3MxOiBOT1RJQ0U6ICBi bHVydF9hbmRfbG9ja18xMjMoKSBjYWxsZWQgZm9yIGsxIGluIHNlc3Npb24gMQorczE6IE5PVElD RTogIGFjcXVpcmluZyBhZHZpc29yeSBsb2NrIG9uIDIKK3MxOiBOT1RJQ0U6ICBibHVydF9hbmRf bG9ja18xMjMoKSBjYWxsZWQgZm9yIGsxIGluIHNlc3Npb24gMQorczE6IE5PVElDRTogIGFjcXVp cmluZyBhZHZpc29yeSBsb2NrIG9uIDIKK3MxOiBOT1RJQ0U6ICBibHVydF9hbmRfbG9ja180KCkg Y2FsbGVkIGZvciBrMSBpbiBzZXNzaW9uIDEKK3MxOiBOT1RJQ0U6ICBhY3F1aXJpbmcgYWR2aXNv cnkgbG9jayBvbiA0CitzMTogTk9USUNFOiAgYmx1cnRfYW5kX2xvY2tfNCgpIGNhbGxlZCBmb3Ig azEgaW4gc2Vzc2lvbiAxCitzMTogTk9USUNFOiAgYWNxdWlyaW5nIGFkdmlzb3J5IGxvY2sgb24g NAogc3RlcCBzMV91cHNlcnQ6IDwuLi4gY29tcGxldGVkPgogc3RlcCBzMV9ub29wOiAKIHN0ZXAg Y29udHJvbGxlcl9zaG93OiBTRUxFQ1QgKiBGUk9NIHVwc2VydHRlc3Q7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2hlYXBfaG90X3VwZGF0ZXMub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9oZWFwX2hvdF91cGRhdGVzLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uMTQyNzZlM2NiY2EKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2hlYXBfaG90X3VwZGF0ZXMub3V0CkBAIC0wLDAgKzEsNjUw IEBACistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLSBUZXN0IFN1aXRlIGZvciBIZWFwLW9ubHkgKEhPVCkgVXBkYXRl cworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0gU2V0dXA6IENyZWF0ZSBmdW5jdGlvbiB0byBtZWFzdXJlIEhPVCB1 cGRhdGVzCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBjaGVja19ob3RfdXBkYXRlcygKKyAg ICBleHBlY3RlZCBJTlQsCisgICAgcF90YWJsZV9uYW1lIFRFWFQgREVGQVVMVCAndCcsCisgICAg cF9zY2hlbWFfbmFtZSBURVhUIERFRkFVTFQgY3VycmVudF9zY2hlbWEoKQorKQorUkVUVVJOUyBU QUJMRSAoCisgICAgdGFibGVfbmFtZSBURVhULAorICAgIHRvdGFsX3VwZGF0ZXMgQklHSU5ULAor ICAgIGhvdF91cGRhdGVzIEJJR0lOVCwKKyAgICBob3RfdXBkYXRlX3BlcmNlbnRhZ2UgTlVNRVJJ QywKKyAgICBtYXRjaGVzX2V4cGVjdGVkIEJPT0xFQU4KKykKK0xBTkdVQUdFIHBscGdzcWwKK0FT ICQkCitERUNMQVJFCisgICAgdl9yZWxpZCBvaWQ7CisgICAgdl9xdWFsaWZpZWRfbmFtZSBURVhU OworICAgIHZfaG90X3VwZGF0ZXMgQklHSU5UOworICAgIHZfdXBkYXRlcyBCSUdJTlQ7CisgICAg dl94YWN0X2hvdF91cGRhdGVzIEJJR0lOVDsKKyAgICB2X3hhY3RfdXBkYXRlcyBCSUdJTlQ7CitC RUdJTgorICAgIC0tIEZvcmNlIHN0YXRpc3RpY3MgdXBkYXRlCisgICAgUEVSRk9STSBwZ19zdGF0 X2ZvcmNlX25leHRfZmx1c2goKTsKKworICAgIC0tIEdldCB0YWJsZSBPSUQKKyAgICB2X3F1YWxp ZmllZF9uYW1lIDo9IHF1b3RlX2lkZW50KHBfc2NoZW1hX25hbWUpIHx8ICcuJyB8fCBxdW90ZV9p ZGVudChwX3RhYmxlX25hbWUpOworICAgIHZfcmVsaWQgOj0gdl9xdWFsaWZpZWRfbmFtZTo6cmVn Y2xhc3M7CisKKyAgICBJRiB2X3JlbGlkIElTIE5VTEwgVEhFTgorCVJBSVNFIEVYQ0VQVElPTiAn VGFibGUgJS4lIG5vdCBmb3VuZCcsIHBfc2NoZW1hX25hbWUsIHBfdGFibGVfbmFtZTsKKyAgICBF TkQgSUY7CisKKyAgICAtLSBHZXQgY3VtdWxhdGl2ZSArIHRyYW5zYWN0aW9uIHN0YXRzCisgICAg dl9ob3RfdXBkYXRlcyA6PSBDT0FMRVNDRShwZ19zdGF0X2dldF90dXBsZXNfaG90X3VwZGF0ZWQo dl9yZWxpZCksIDApOworICAgIHZfdXBkYXRlcyA6PSBDT0FMRVNDRShwZ19zdGF0X2dldF90dXBs ZXNfdXBkYXRlZCh2X3JlbGlkKSwgMCk7CisgICAgdl94YWN0X2hvdF91cGRhdGVzIDo9IENPQUxF U0NFKHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKHZfcmVsaWQpLCAwKTsKKyAg ICB2X3hhY3RfdXBkYXRlcyA6PSBDT0FMRVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxlc191cGRh dGVkKHZfcmVsaWQpLCAwKTsKKworICAgIHZfaG90X3VwZGF0ZXMgOj0gdl9ob3RfdXBkYXRlcyAr IHZfeGFjdF9ob3RfdXBkYXRlczsKKyAgICB2X3VwZGF0ZXMgOj0gdl91cGRhdGVzICsgdl94YWN0 X3VwZGF0ZXM7CisKKyAgICBSRVRVUk4gUVVFUlkKKyAgICBTRUxFQ1QKKwlwX3RhYmxlX25hbWU6 OlRFWFQsCisJdl91cGRhdGVzOjpCSUdJTlQsCisJdl9ob3RfdXBkYXRlczo6QklHSU5ULAorCUNB U0UgV0hFTiB2X3VwZGF0ZXMgPiAwCisJICAgICBUSEVOIFJPVU5EKCh2X2hvdF91cGRhdGVzOjpu dW1lcmljIC8gdl91cGRhdGVzOjpudW1lcmljICogMTAwKTo6bnVtZXJpYywgMikKKwkgICAgIEVM U0UgMAorCUVORCwKKwkodl9ob3RfdXBkYXRlcyA9IGV4cGVjdGVkKTo6Qk9PTEVBTjsKK0VORDsK KyQkOworQ1JFQVRFIENPTExBVElPTiBjYXNlX2luc2Vuc2l0aXZlICgKKyAgICBwcm92aWRlciA9 IGxpYmMsCisgICAgbG9jYWxlID0gJ0MnCispOworLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gR0lOIEluZGV4IG9u IEpTT05CCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CitDUkVBVEUgVEFCTEUgdChpZCBJTlQsIGRhdGEgSlNPTkIpCisg ICAgV0lUSCAoYXV0b3ZhY3V1bV9lbmFibGVkID0gb2ZmLCBmaWxsZmFjdG9yID0gNzApOworQ1JF QVRFIElOREVYIHRfZ2luX2lkeCBPTiB0IFVTSU5HIGdpbihkYXRhKTsKK0lOU0VSVCBJTlRPIHQg VkFMVUVTICgxLCAneyJ0YWdzIjogWyJwb3N0Z3JlcyIsICJkYXRhYmFzZSJdfScpOworLS0gQ2hh bmdlIHRhZ3MgLSBHSU4ga2V5cyBjaGFuZ2VkLCBzaG91bGQgTk9UIGJlIEhPVAorVVBEQVRFIHQg U0VUIGRhdGEgPSAneyJ0YWdzIjogWyJwb3N0Z3JlcyIsICJzcWwiXX0nIFdIRVJFIGlkID0gMTsK K1NFTEVDVCAqIEZST00gY2hlY2tfaG90X3VwZGF0ZXMoMCk7CisgdGFibGVfbmFtZSB8IHRvdGFs X3VwZGF0ZXMgfCBob3RfdXBkYXRlcyB8IGhvdF91cGRhdGVfcGVyY2VudGFnZSB8IG1hdGNoZXNf ZXhwZWN0ZWQgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgdCAgICAgICAgICB8ICAg ICAgICAgICAgIDEgfCAgICAgICAgICAgMCB8ICAgICAgICAgICAgICAgICAgMC4wMCB8IHQKKygx IHJvdykKKworLS0gQ2hhbmdlIHRhZ3MgYWdhaW4gLSBHSU4ga2V5cyBjaGFuZ2VkLCBzaG91bGQg Tk9UIGJlIEhPVAorVVBEQVRFIHQgU0VUIGRhdGEgPSAneyJ0YWdzIjogWyJteXNxbCIsICJzcWwi XX0nIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gY2hlY2tfaG90X3VwZGF0ZXMoMCk7Cisg dGFibGVfbmFtZSB8IHRvdGFsX3VwZGF0ZXMgfCBob3RfdXBkYXRlcyB8IGhvdF91cGRhdGVfcGVy Y2VudGFnZSB8IG1hdGNoZXNfZXhwZWN0ZWQgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t CisgdCAgICAgICAgICB8ICAgICAgICAgICAgIDIgfCAgICAgICAgICAgMCB8ICAgICAgICAgICAg ICAgICAgMC4wMCB8IHQKKygxIHJvdykKKworLS0gQWRkIGZpZWxkIHdpdGhvdXQgY2hhbmdpbmcg ZXhpc3Rpbmcga2V5cyAtIEdJTiBrZXlzIGNoYW5nZWQgKGFkZGVkICJub3RlIiksIE5PVCBIT1QK K1VQREFURSB0IFNFVCBkYXRhID0gJ3sidGFncyI6IFsibXlzcWwiLCAic3FsIl0sICJub3RlIjog InRlc3QifScgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygw KTsKKyB0YWJsZV9uYW1lIHwgdG90YWxfdXBkYXRlcyB8IGhvdF91cGRhdGVzIHwgaG90X3VwZGF0 ZV9wZXJjZW50YWdlIHwgbWF0Y2hlc19leHBlY3RlZCAKKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0KKyB0ICAgICAgICAgIHwgICAgICAgICAgICAgMyB8ICAgICAgICAgICAwIHwgICAgICAg ICAgICAgICAgICAwLjAwIHwgdAorKDEgcm93KQorCitEUk9QIFRBQkxFIHQ7CistLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLSBHSU4gSW5kZXggd2l0aCBVbmNoYW5nZWQgS2V5cworLS0gPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ1JFQVRFIFRB QkxFIHQoaWQgSU5ULCBkYXRhIEpTT05CKQorICAgIFdJVEggKGF1dG92YWN1dW1fZW5hYmxlZCA9 IG9mZiwgZmlsbGZhY3RvciA9IDcwKTsKKy0tIENyZWF0ZSBHSU4gaW5kZXggb24gc3BlY2lmaWMg cGF0aAorQ1JFQVRFIElOREVYIHRfZ2luX2lkeCBPTiB0IFVTSU5HIGdpbigoZGF0YS0+J3RhZ3Mn KSk7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMSwgJ3sidGFncyI6IFsicG9zdGdyZXMiLCAic3Fs Il0sICJzdGF0dXMiOiAiYWN0aXZlIn0nKTsKKy0tIENoYW5nZSBub24taW5kZXhlZCBmaWVsZCAt IEdJTiBrZXlzIG9uICd0YWdzJyB1bmNoYW5nZWQsIHNob3VsZCBiZSBIT1QKK1VQREFURSB0IFNF VCBkYXRhID0gJ3sidGFncyI6IFsicG9zdGdyZXMiLCAic3FsIl0sICJzdGF0dXMiOiAiaW5hY3Rp dmUifScgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygxKTsK KyB0YWJsZV9uYW1lIHwgdG90YWxfdXBkYXRlcyB8IGhvdF91cGRhdGVzIHwgaG90X3VwZGF0ZV9w ZXJjZW50YWdlIHwgbWF0Y2hlc19leHBlY3RlZCAKKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0KKyB0ICAgICAgICAgIHwgICAgICAgICAgICAgMSB8ICAgICAgICAgICAxIHwgICAgICAgICAg ICAgICAgMTAwLjAwIHwgdAorKDEgcm93KQorCistLSBDaGFuZ2UgaW5kZXhlZCB0YWdzIC0gR0lO IGtleXMgY2hhbmdlZCwgc2hvdWxkIE5PVCBiZSBIT1QKK1VQREFURSB0IFNFVCBkYXRhID0gJ3si dGFncyI6IFsibXlzcWwiLCAic3FsIl0sICJzdGF0dXMiOiAiaW5hY3RpdmUifScgV0hFUkUgaWQg PSAxOworU0VMRUNUICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygxKTsKKyB0YWJsZV9uYW1lIHwg dG90YWxfdXBkYXRlcyB8IGhvdF91cGRhdGVzIHwgaG90X3VwZGF0ZV9wZXJjZW50YWdlIHwgbWF0 Y2hlc19leHBlY3RlZCAKKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAg IHwgICAgICAgICAgICAgMiB8ICAgICAgICAgICAxIHwgICAgICAgICAgICAgICAgIDUwLjAwIHwg dAorKDEgcm93KQorCitEUk9QIFRBQkxFIHQ7CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBHSU4gd2l0aCBqc29u Yl9wYXRoX29wcworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorQ1JFQVRFIFRBQkxFIHQoaWQgSU5ULCBkYXRhIEpTT05C KQorICAgIFdJVEggKGF1dG92YWN1dW1fZW5hYmxlZCA9IG9mZiwgZmlsbGZhY3RvciA9IDcwKTsK K0NSRUFURSBJTkRFWCB0X2dpbl9pZHggT04gdCBVU0lORyBnaW4oZGF0YSBqc29uYl9wYXRoX29w cyk7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMSwgJ3sidXNlciI6IHsibmFtZSI6ICJhbGljZSJ9 LCAidGFncyI6IFsiYSIsICJiIl19Jyk7CistLSBDaGFuZ2UgdmFsdWUgYXQgZGlmZmVyZW50IHBh dGggLSBrZXlzIGNoYW5nZWQsIE5PVCBIT1QKK1VQREFURSB0IFNFVCBkYXRhID0gJ3sidXNlciI6 IHsibmFtZSI6ICJib2IifSwgInRhZ3MiOiBbImEiLCAiYiJdfScgV0hFUkUgaWQgPSAxOworU0VM RUNUICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygwKTsKKyB0YWJsZV9uYW1lIHwgdG90YWxfdXBk YXRlcyB8IGhvdF91cGRhdGVzIHwgaG90X3VwZGF0ZV9wZXJjZW50YWdlIHwgbWF0Y2hlc19leHBl Y3RlZCAKKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgIHwgICAgICAg ICAgICAgMSB8ICAgICAgICAgICAwIHwgICAgICAgICAgICAgICAgICAwLjAwIHwgdAorKDEgcm93 KQorCitEUk9QIFRBQkxFIHQ7CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBNaXhlZCBJbmRleCBUeXBlcyAoQlJJ TiArIEV4cHJlc3Npb24pCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDUkVBVEUgVEFCTEUgdChpZCBJTlQsIHZhbHVl IElOVCwgZGF0YSBKU09OQikKKyAgICBXSVRIIChhdXRvdmFjdXVtX2VuYWJsZWQgPSBvZmYsIGZp bGxmYWN0b3IgPSA3MCk7CitDUkVBVEUgSU5ERVggdF9icmluX2lkeCBPTiB0IFVTSU5HIGJyaW4o dmFsdWUpOworQ1JFQVRFIElOREVYIHRfZXhwcl9pZHggT04gdCgoZGF0YS0+J3N0YXR1cycpKTsK K0lOU0VSVCBJTlRPIHQgVkFMVUVTICgxLCAxMDAsICd7InN0YXR1cyI6ICJhY3RpdmUifScpOwor LS0gVXBkYXRlIG9ubHkgQlJJTiBjb2x1bW4gLSBzaG91bGQgYmUgSE9UCitVUERBVEUgdCBTRVQg dmFsdWUgPSAyMDAgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBjaGVja19ob3RfdXBkYXRl cygxKTsKKyB0YWJsZV9uYW1lIHwgdG90YWxfdXBkYXRlcyB8IGhvdF91cGRhdGVzIHwgaG90X3Vw ZGF0ZV9wZXJjZW50YWdlIHwgbWF0Y2hlc19leHBlY3RlZCAKKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0KKyB0ICAgICAgICAgIHwgICAgICAgICAgICAgMSB8ICAgICAgICAgICAxIHwgICAg ICAgICAgICAgICAgMTAwLjAwIHwgdAorKDEgcm93KQorCistLSBVcGRhdGUgb25seSBleHByZXNz aW9uIGNvbHVtbiAtIHNob3VsZCBOT1QgYmUgSE9UCitVUERBVEUgdCBTRVQgZGF0YSA9ICd7InN0 YXR1cyI6ICJpbmFjdGl2ZSJ9JyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGNoZWNrX2hv dF91cGRhdGVzKDEpOworIHRhYmxlX25hbWUgfCB0b3RhbF91cGRhdGVzIHwgaG90X3VwZGF0ZXMg fCBob3RfdXBkYXRlX3BlcmNlbnRhZ2UgfCBtYXRjaGVzX2V4cGVjdGVkIAorLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgICAgfCAgICAgICAgICAgICAyIHwgICAgICAgICAg IDEgfCAgICAgICAgICAgICAgICAgNTAuMDAgfCB0CisoMSByb3cpCisKKy0tIFVwZGF0ZSBib3Ro IC0gc2hvdWxkIE5PVCBiZSBIT1QKK1VQREFURSB0IFNFVCB2YWx1ZSA9IDMwMCwgZGF0YSA9ICd7 InN0YXR1cyI6ICJwZW5kaW5nIn0nIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gY2hlY2tf aG90X3VwZGF0ZXMoMSk7CisgdGFibGVfbmFtZSB8IHRvdGFsX3VwZGF0ZXMgfCBob3RfdXBkYXRl cyB8IGhvdF91cGRhdGVfcGVyY2VudGFnZSB8IG1hdGNoZXNfZXhwZWN0ZWQgCistLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tCisgdCAgICAgICAgICB8ICAgICAgICAgICAgIDMgfCAgICAgICAg ICAgMSB8ICAgICAgICAgICAgICAgICAzMy4zMyB8IHQKKygxIHJvdykKKworRFJPUCBUQUJMRSB0 OworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0gR0lOIEFycmF5IEluZGV4IC0gT3JkZXIgSW5zZW5zaXRpdmUgRXh0 cmFjdGlvbgorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorQ1JFQVRFIFRBQkxFIHQoCisgICAgaWQgSU5UIFBSSU1BUlkg S0VZLAorICAgIGRhdGEgSlNPTkIKKykgV0lUSCAoYXV0b3ZhY3V1bV9lbmFibGVkID0gb2ZmLCBm aWxsZmFjdG9yID0gNzApOworLS0gR0lOIGluZGV4IG9uIEpTT05CIGFycmF5IChleHRyYWN0cyBh bGwgZWxlbWVudHMpCitDUkVBVEUgSU5ERVggdF9pdGVtc19naW4gT04gdCBVU0lORyBHSU4gKChk YXRhLT4naXRlbXMnKSk7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMSwgJ3siaXRlbXMiOiBbMSwg MiwgM10sICJzdGF0dXMiOiAiYWN0aXZlIn0nKTsKKy0tIFVwZGF0ZTogUmVvcmRlciBhcnJheSBl bGVtZW50cworLS0gSlNPTkIgZXF1YWxpdHk6IE5PVCBlcXVhbCAoZGlmZmVyZW50IGFycmF5cykK Ky0tIEdJTiBleHRyYWN0aW9uOiBTYW1lIGVsZW1lbnRzIGV4dHJhY3RlZCAobWlnaHQgYWxsb3cg SE9UIGlmIG5vdCBjYXJlZnVsKQorVVBEQVRFIHQgU0VUIGRhdGEgPSAneyJpdGVtcyI6IFszLCAy LCAxXSwgInN0YXR1cyI6ICJhY3RpdmUifScgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBj aGVja19ob3RfdXBkYXRlcygxKTsKKyB0YWJsZV9uYW1lIHwgdG90YWxfdXBkYXRlcyB8IGhvdF91 cGRhdGVzIHwgaG90X3VwZGF0ZV9wZXJjZW50YWdlIHwgbWF0Y2hlc19leHBlY3RlZCAKKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgIHwgICAgICAgICAgICAgMSB8ICAg ICAgICAgICAxIHwgICAgICAgICAgICAgICAgMTAwLjAwIHwgdAorKDEgcm93KQorCistLSBVcGRh dGU6IEFkZC9yZW1vdmUgZWxlbWVudAorVVBEQVRFIHQgU0VUIGRhdGEgPSAneyJpdGVtcyI6IFsx LCAyLCAzLCA0XSwgInN0YXR1cyI6ICJhY3RpdmUifScgV0hFUkUgaWQgPSAxOworU0VMRUNUICog RlJPTSBjaGVja19ob3RfdXBkYXRlcygxKTsKKyB0YWJsZV9uYW1lIHwgdG90YWxfdXBkYXRlcyB8 IGhvdF91cGRhdGVzIHwgaG90X3VwZGF0ZV9wZXJjZW50YWdlIHwgbWF0Y2hlc19leHBlY3RlZCAK Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgIHwgICAgICAgICAgICAg MiB8ICAgICAgICAgICAxIHwgICAgICAgICAgICAgICAgIDUwLjAwIHwgdAorKDEgcm93KQorCitE Uk9QIFRBQkxFIHQ7CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLSBURVNUOiBHSU4gd2l0aCBUT0FTVGVkIFRFWFQg KHRzdmVjdG9yKQorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorQ1JFQVRFIFRBQkxFIHQoaWQgSU5ULCBjb250ZW50IFRF WFQsIHNlYXJjaF92ZWMgdHN2ZWN0b3IpCisgICAgV0lUSCAoYXV0b3ZhY3V1bV9lbmFibGVkID0g b2ZmLCBmaWxsZmFjdG9yID0gNzApOworLS0gQ3JlYXRlIHRyaWdnZXIgdG8gbWFpbnRhaW4gdHN2 ZWN0b3IKK0NSRUFURSBUUklHR0VSIHRzdmVjdG9ydXBkYXRlX3RvYXN0CisgICAgQkVGT1JFIElO U0VSVCBPUiBVUERBVEUgT04gdAorICAgIEZPUiBFQUNIIFJPVyBFWEVDVVRFIEZVTkNUSU9OCisg ICAgdHN2ZWN0b3JfdXBkYXRlX3RyaWdnZXIoc2VhcmNoX3ZlYywgJ3BnX2NhdGFsb2cuZW5nbGlz aCcsIGNvbnRlbnQpOworQ1JFQVRFIElOREVYIHRfZ2luIE9OIHQgVVNJTkcgZ2luKHNlYXJjaF92 ZWMpOworLS0gSW5zZXJ0IHdpdGggbGFyZ2UgY29udGVudCAod2lsbCBiZSBUT0FTVGVkKQorSU5T RVJUIElOVE8gdCAoaWQsIGNvbnRlbnQpIFZBTFVFUworICAgICgxLCByZXBlYXQoJ2ltcG9ydGFu dCBrZXl3b3JkICcsIDEwMDApIHx8IHJlcGVhdCgnZmlsbGVyIHRleHQgJywgMTAwMDApKTsKKy0t IFZlcmlmeSBpbml0aWFsIHN0YXRlCitTRUxFQ1QgY291bnQoKikgRlJPTSB0IFdIRVJFIHNlYXJj aF92ZWMgQEAgdG9fdHNxdWVyeSgnaW1wb3J0YW50Jyk7CisgY291bnQgCistLS0tLS0tCisgICAg IDEKKygxIHJvdykKKworLS0gRXhwZWN0ZWQ6IDEgcm93CistLSBJTVBPUlRBTlQ6IFRoZSBCRUZP UkUgVVBEQVRFIHRyaWdnZXIgbW9kaWZpZXMgc2VhcmNoX3ZlYywgc28gYnkgdGhlIHRpbWUKKy0t IEV4ZWNXaGljaEluZGV4ZXNSZXF1aXJlVXBkYXRlcygpIHJ1bnMsIHNlYXJjaF92ZWMgaGFzIGFs cmVhZHkgY2hhbmdlZC4KKy0tIFRoaXMgbWVhbnMgdGhlIGNvbXBhcmlzb24gc2VlcyBvbGQgdHN2 ZWN0b3IgdnMuIHRyaWdnZXItbW9kaWZpZWQgdHN2ZWN0b3IsCistLSBub3QgdGhlIG5hdHVyYWwg cHJvZ3Jlc3Npb24uIEhPVCB3b24ndCBoYXBwZW4gYmVjYXVzZSB0aGUgdHJpZ2dlciBjaGFuZ2Vk CistLSB0aGUgaW5kZXhlZCBjb2x1bW4uCistLSBVcGRhdGU6IEV2ZW4gdGhvdWdoIGNvbnRlbnQg a2V5d29yZHMgdW5jaGFuZ2VkLCB0cmlnZ2VyIHN0aWxsIGZpcmVzCitVUERBVEUgdAorU0VUIGNv bnRlbnQgPSByZXBlYXQoJ2ltcG9ydGFudCBrZXl3b3JkICcsIDEwMDApIHx8IHJlcGVhdCgnZGlm ZmVyZW50IGZpbGxlciAnLCAxMDAwMCkKK1dIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gY2hl Y2tfaG90X3VwZGF0ZXMoMCk7CisgdGFibGVfbmFtZSB8IHRvdGFsX3VwZGF0ZXMgfCBob3RfdXBk YXRlcyB8IGhvdF91cGRhdGVfcGVyY2VudGFnZSB8IG1hdGNoZXNfZXhwZWN0ZWQgCistLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgdCAgICAgICAgICB8ICAgICAgICAgICAgIDEgfCAgICAg ICAgICAgMCB8ICAgICAgICAgICAgICAgICAgMC4wMCB8IHQKKygxIHJvdykKKworLS0gRXhwZWN0 ZWQ6IDAgSE9UICh0cmlnZ2VyIG1vZGlmaWVzIHNlYXJjaF92ZWMsIGJsb2NraW5nIEhPVCkKKy0t IFRoaXMgaXMgYWN0dWFsbHkgY29ycmVjdCBiZWhhdmlvciAtIHRoZSB0cmlnZ2VyIHVwZGF0ZWQg YW4gaW5kZXhlZCBjb2x1bW4KKy0tIFVwZGF0ZTogQ2hhbmdlIGluZGV4ZWQga2V5d29yZHMKK1VQ REFURSB0CitTRVQgY29udGVudCA9IHJlcGVhdCgnY3JpdGljYWwga2V5d29yZCAnLCAxMDAwKSB8 fCByZXBlYXQoJ2RpZmZlcmVudCBmaWxsZXIgJywgMTAwMDApCitXSEVSRSBpZCA9IDE7CitTRUxF Q1QgKiBGUk9NIGNoZWNrX2hvdF91cGRhdGVzKDApOworIHRhYmxlX25hbWUgfCB0b3RhbF91cGRh dGVzIHwgaG90X3VwZGF0ZXMgfCBob3RfdXBkYXRlX3BlcmNlbnRhZ2UgfCBtYXRjaGVzX2V4cGVj dGVkIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgICAgfCAgICAgICAg ICAgICAyIHwgICAgICAgICAgIDAgfCAgICAgICAgICAgICAgICAgIDAuMDAgfCB0CisoMSByb3cp CisKKy0tIEV4cGVjdGVkOiAwIEhPVCAoaW5kZXgga2V5cyBjaGFuZ2VkKQorLS0gVmVyaWZ5IHF1 ZXJ5IGNvcnJlY3RuZXNzCitTRUxFQ1QgY291bnQoKikgRlJPTSB0IFdIRVJFIHNlYXJjaF92ZWMg QEAgdG9fdHNxdWVyeSgnY3JpdGljYWwnKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMQorKDEg cm93KQorCistLSBFeHBlY3RlZDogMSByb3cKK0RST1AgVEFCTEUgdCBDQVNDQURFOworLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0gVEVTVDogR0lOIHdpdGggQXJyYXkgb2YgTGFyZ2UgU3RyaW5ncworLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorQ1JFQVRFIFRBQkxFIHQoaWQgSU5ULCB0YWdzIFRFWFRbXSkKKyAgICBXSVRIIChhdXRvdmFj dXVtX2VuYWJsZWQgPSBvZmYsIGZpbGxmYWN0b3IgPSA3MCk7CitDUkVBVEUgSU5ERVggdF9naW4g T04gdCBVU0lORyBnaW4odGFncyk7CistLSBJbnNlcnQgd2l0aCBsYXJnZSBhcnJheSBlbGVtZW50 cyAobWlnaHQgYmUgVE9BU1RlZCkKK0lOU0VSVCBJTlRPIHQgKGlkLCB0YWdzKSBWQUxVRVMKKyAg ICAoMSwgQVJSQVlbcmVwZWF0KCd0YWcxJywgMTAwMCksIHJlcGVhdCgndGFnMicsIDEwMDApXSk7 CistLSBVcGRhdGU6IENoYW5nZSB0byBkaWZmZXJlbnQgbGFyZ2UgdmFsdWVzIC0gTk9UIEhPVAor VVBEQVRFIHQKK1NFVCB0YWdzID0gQVJSQVlbcmVwZWF0KCd0YWczJywgMTAwMCksIHJlcGVhdCgn dGFnNCcsIDEwMDApXQorV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBjaGVja19ob3RfdXBk YXRlcygwKTsKKyB0YWJsZV9uYW1lIHwgdG90YWxfdXBkYXRlcyB8IGhvdF91cGRhdGVzIHwgaG90 X3VwZGF0ZV9wZXJjZW50YWdlIHwgbWF0Y2hlc19leHBlY3RlZCAKKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0KKyB0ICAgICAgICAgIHwgICAgICAgICAgICAgMSB8ICAgICAgICAgICAwIHwg ICAgICAgICAgICAgICAgICAwLjAwIHwgdAorKDEgcm93KQorCistLSBFeHBlY3RlZDogMCBIT1Qg KGtleXMgYWN0dWFsbHkgY2hhbmdlZCkKKy0tIFVwZGF0ZTogS2VlcCBzYW1lIHRhZyB2YWx1ZXMs IGp1c3QgcmVvcmRlciAtIFNIT1VMRCBCRSBIT1QKKy0tIChHSU4gaXMgb3JkZXItaW5zZW5zaXRp dmU6IGJvdGggW3RhZzMsdGFnNF0gYW5kIFt0YWc0LHRhZzNdCistLSBleHRyYWN0IHRvIHRoZSBz YW1lIHNvcnRlZCBrZXkgc2V0IFsndGFnMycsJ3RhZzQnXSkKK1VQREFURSB0CitTRVQgdGFncyA9 IEFSUkFZW3JlcGVhdCgndGFnNCcsIDEwMDApLCByZXBlYXQoJ3RhZzMnLCAxMDAwKV0KK1dIRVJF IGlkID0gMTsKK1NFTEVDVCAqIEZST00gY2hlY2tfaG90X3VwZGF0ZXMoMSk7CisgdGFibGVfbmFt ZSB8IHRvdGFsX3VwZGF0ZXMgfCBob3RfdXBkYXRlcyB8IGhvdF91cGRhdGVfcGVyY2VudGFnZSB8 IG1hdGNoZXNfZXhwZWN0ZWQgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgdCAgICAg ICAgICB8ICAgICAgICAgICAgIDIgfCAgICAgICAgICAgMSB8ICAgICAgICAgICAgICAgICA1MC4w MCB8IHQKKygxIHJvdykKKworLS0gRXhwZWN0ZWQ6IDEgSE9UIChHSU4ga2V5cyBzZW1hbnRpY2Fs bHkgaWRlbnRpY2FsKQorLS0gVXBkYXRlOiBSZW1vdmUgYW4gZWxlbWVudCAtIE5PVCBIT1QgKGtl eXMgY2hhbmdlZCkKK1VQREFURSB0CitTRVQgdGFncyA9IEFSUkFZW3JlcGVhdCgndGFnNCcsIDEw MDApXQorV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygxKTsK KyB0YWJsZV9uYW1lIHwgdG90YWxfdXBkYXRlcyB8IGhvdF91cGRhdGVzIHwgaG90X3VwZGF0ZV9w ZXJjZW50YWdlIHwgbWF0Y2hlc19leHBlY3RlZCAKKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0KKyB0ICAgICAgICAgIHwgICAgICAgICAgICAgMyB8ICAgICAgICAgICAxIHwgICAgICAgICAg ICAgICAgIDMzLjMzIHwgdAorKDEgcm93KQorCistLSBFeHBlY3RlZDogU3RpbGwgMSBIT1QgKG5v dCB0aGlzIG9uZSkKK0RST1AgVEFCTEUgdCBDQVNDQURFOworLS0gPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gQlJJTiBJ bmRleCB3aXRoIFBhcnRpYWwgUHJlZGljYXRlCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDUkVBVEUgVEFCTEUgdCgK KyAgICBpZCBJTlQgUFJJTUFSWSBLRVksCisgICAgdmFsdWUgSU5ULAorICAgIGRlc2NyaXB0aW9u IFRFWFQKKykgV0lUSCAoYXV0b3ZhY3V1bV9lbmFibGVkID0gb2ZmLCBmaWxsZmFjdG9yID0gNzAp OworQ1JFQVRFIElOREVYIHRfYnJpbl9wYXJ0aWFsX2lkeCBPTiB0IFVTSU5HIGJyaW4odmFsdWUp IFdIRVJFIHZhbHVlID4gMTAwOworSU5TRVJUIElOVE8gdCBWQUxVRVMgKDEsIDUwLCAnYmVsb3cg cmFuZ2UnKTsKKy0tIFRlc3QgMTogT3V0c2lkZSBwcmVkaWNhdGUKK1VQREFURSB0IFNFVCBkZXNj cmlwdGlvbiA9ICd1cGRhdGVkJyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGNoZWNrX2hv dF91cGRhdGVzKDEpOworIHRhYmxlX25hbWUgfCB0b3RhbF91cGRhdGVzIHwgaG90X3VwZGF0ZXMg fCBob3RfdXBkYXRlX3BlcmNlbnRhZ2UgfCBtYXRjaGVzX2V4cGVjdGVkIAorLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgICAgfCAgICAgICAgICAgICAxIHwgICAgICAgICAg IDEgfCAgICAgICAgICAgICAgICAxMDAuMDAgfCB0CisoMSByb3cpCisKKy0tIFZhbGlkYXRlOiBQ cmVkaWNhdGUgcXVlcnkgcmV0dXJucyAwIHJvd3MKK1NFTEVDVCBDT1VOVCgqKSBhcyBjbnQgRlJP TSB0IFdIRVJFIHZhbHVlID4gMTAwOworIGNudCAKKy0tLS0tCisgICAwCisoMSByb3cpCisKKy0t IFRlc3QgMjogVHJhbnNpdGlvbiBpbnRvIHByZWRpY2F0ZQorVVBEQVRFIHQgU0VUIHZhbHVlID0g MTUwIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gY2hlY2tfaG90X3VwZGF0ZXMoMik7Cisg dGFibGVfbmFtZSB8IHRvdGFsX3VwZGF0ZXMgfCBob3RfdXBkYXRlcyB8IGhvdF91cGRhdGVfcGVy Y2VudGFnZSB8IG1hdGNoZXNfZXhwZWN0ZWQgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t CisgdCAgICAgICAgICB8ICAgICAgICAgICAgIDIgfCAgICAgICAgICAgMiB8ICAgICAgICAgICAg ICAgIDEwMC4wMCB8IHQKKygxIHJvdykKKworLS0gVmFsaWRhdGU6IFByZWRpY2F0ZSBxdWVyeSBy ZXR1cm5zIDEgcm93IHdpdGggY29ycmVjdCB2YWx1ZQorU0VMRUNUIENPVU5UKCopIGFzIGNudCwg TUFYKHZhbHVlKSBhcyBtYXhfdmFsIEZST00gdCBXSEVSRSB2YWx1ZSA+IDEwMDsKKyBjbnQgfCBt YXhfdmFsIAorLS0tLS0rLS0tLS0tLS0tCisgICAxIHwgICAgIDE1MAorKDEgcm93KQorCistLSBU ZXN0IDM6IEluc2lkZSBwcmVkaWNhdGUsIHZhbHVlIGNoYW5nZXMKK1VQREFURSB0IFNFVCB2YWx1 ZSA9IDE2MCwgZGVzY3JpcHRpb24gPSAndXBkYXRlZCBhZ2FpbicgV0hFUkUgaWQgPSAxOworU0VM RUNUICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygzKTsKKyB0YWJsZV9uYW1lIHwgdG90YWxfdXBk YXRlcyB8IGhvdF91cGRhdGVzIHwgaG90X3VwZGF0ZV9wZXJjZW50YWdlIHwgbWF0Y2hlc19leHBl Y3RlZCAKKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgIHwgICAgICAg ICAgICAgMyB8ICAgICAgICAgICAzIHwgICAgICAgICAgICAgICAgMTAwLjAwIHwgdAorKDEgcm93 KQorCistLSBWYWxpZGF0ZTogVXBkYXRlZCB2YWx1ZSAoMTYwKSBpcyByZXR1cm5lZAorU0VMRUNU IENPVU5UKCopIGFzIGNudCwgTUFYKHZhbHVlKSBhcyBtYXhfdmFsIEZST00gdCBXSEVSRSB2YWx1 ZSA+IDEwMDsKKyBjbnQgfCBtYXhfdmFsIAorLS0tLS0rLS0tLS0tLS0tCisgICAxIHwgICAgIDE2 MAorKDEgcm93KQorCistLSBUZXN0IDQ6IFRyYW5zaXRpb24gb3V0IG9mIHByZWRpY2F0ZQorVVBE QVRFIHQgU0VUIHZhbHVlID0gNTAgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBjaGVja19o b3RfdXBkYXRlcyg0KTsKKyB0YWJsZV9uYW1lIHwgdG90YWxfdXBkYXRlcyB8IGhvdF91cGRhdGVz IHwgaG90X3VwZGF0ZV9wZXJjZW50YWdlIHwgbWF0Y2hlc19leHBlY3RlZCAKKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgIHwgICAgICAgICAgICAgNCB8ICAgICAgICAg ICA0IHwgICAgICAgICAgICAgICAgMTAwLjAwIHwgdAorKDEgcm93KQorCitTRUxFQ1QgQ09VTlQo KikgYXMgY250IEZST00gdCBXSEVSRSB2YWx1ZSA+IDEwMDsKKyBjbnQgCistLS0tLQorICAgMAor KDEgcm93KQorCitTRUxFQ1QgaWQsIHZhbHVlLCBkZXNjcmlwdGlvbiBGUk9NIHQ7CisgaWQgfCB2 YWx1ZSB8ICBkZXNjcmlwdGlvbiAgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgIDEg fCAgICA1MCB8IHVwZGF0ZWQgYWdhaW4KKygxIHJvdykKKworRFJPUCBUQUJMRSB0IENBU0NBREU7 CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLSBIQVNIIEluZGV4IChTaW1wbGUgQ29sdW1uKQorLS0gPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor Q1JFQVRFIFRBQkxFIHQoaWQgSU5ULCBjb2RlIFZBUkNIQVIoMjApLCBkZXNjcmlwdGlvbiBURVhU KQorICAgIFdJVEggKGF1dG92YWN1dW1fZW5hYmxlZCA9IG9mZiwgZmlsbGZhY3RvciA9IDcwKTsK K0NSRUFURSBJTkRFWCB0X2hhc2hfaWR4IE9OIHQgVVNJTkcgaGFzaChjb2RlKTsKK0lOU0VSVCBJ TlRPIHQgVkFMVUVTICgxLCAnQ09ERTAwMScsICdpbml0aWFsJyk7CistLSBVcGRhdGUgbm9uLWlu ZGV4ZWQgY29sdW1uIC0gc2hvdWxkIGJlIEhPVAorVVBEQVRFIHQgU0VUIGRlc2NyaXB0aW9uID0g J3VwZGF0ZWQnIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gY2hlY2tfaG90X3VwZGF0ZXMo MSk7CisgdGFibGVfbmFtZSB8IHRvdGFsX3VwZGF0ZXMgfCBob3RfdXBkYXRlcyB8IGhvdF91cGRh dGVfcGVyY2VudGFnZSB8IG1hdGNoZXNfZXhwZWN0ZWQgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tCisgdCAgICAgICAgICB8ICAgICAgICAgICAgIDEgfCAgICAgICAgICAgMSB8ICAgICAg ICAgICAgICAgIDEwMC4wMCB8IHQKKygxIHJvdykKKworLS0gVXBkYXRlIGluZGV4ZWQgY29sdW1u IC0gSEFTSCBpbmRleCByZXF1aXJlcyB1cGRhdGUsIE5PVCBIT1QKK1VQREFURSB0IFNFVCBjb2Rl ID0gJ0NPREUwMDInIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gY2hlY2tfaG90X3VwZGF0 ZXMoMSk7CisgdGFibGVfbmFtZSB8IHRvdGFsX3VwZGF0ZXMgfCBob3RfdXBkYXRlcyB8IGhvdF91 cGRhdGVfcGVyY2VudGFnZSB8IG1hdGNoZXNfZXhwZWN0ZWQgCistLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tCisgdCAgICAgICAgICB8ICAgICAgICAgICAgIDIgfCAgICAgICAgICAgMSB8ICAg ICAgICAgICAgICAgICA1MC4wMCB8IHQKKygxIHJvdykKKworLS0gVXBkYXRlIGJvdGggLSBOT1Qg SE9UCitVUERBVEUgdCBTRVQgY29kZSA9ICdDT0RFMDAzJywgZGVzY3JpcHRpb24gPSAnY2hhbmdl ZCcgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygxKTsKKyB0 YWJsZV9uYW1lIHwgdG90YWxfdXBkYXRlcyB8IGhvdF91cGRhdGVzIHwgaG90X3VwZGF0ZV9wZXJj ZW50YWdlIHwgbWF0Y2hlc19leHBlY3RlZCAKKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0K KyB0ICAgICAgICAgIHwgICAgICAgICAgICAgMyB8ICAgICAgICAgICAxIHwgICAgICAgICAgICAg ICAgIDMzLjMzIHwgdAorKDEgcm93KQorCistLSBCYWNrIHRvIG9yaWdpbmFsIGNvZGUgLSBOT1Qg SE9UIChkaWZmZXJlbnQgaGFzaCBidWNrZXQgbG9jYXRpb24pCitVUERBVEUgdCBTRVQgY29kZSA9 ICdDT0RFMDAxJyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGNoZWNrX2hvdF91cGRhdGVz KDEpOworIHRhYmxlX25hbWUgfCB0b3RhbF91cGRhdGVzIHwgaG90X3VwZGF0ZXMgfCBob3RfdXBk YXRlX3BlcmNlbnRhZ2UgfCBtYXRjaGVzX2V4cGVjdGVkIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLQorIHQgICAgICAgICAgfCAgICAgICAgICAgICA0IHwgICAgICAgICAgIDEgfCAgICAg ICAgICAgICAgICAgMjUuMDAgfCB0CisoMSByb3cpCisKK0RST1AgVEFCTEUgdCBDQVNDQURFOwor LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0gSEFTSCBJbmRleCBvbiBFeHByZXNzaW9uCistLSA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDUkVB VEUgVEFCTEUgdChpZCBJTlQsIGVtYWlsIFRFWFQsIGRhdGEgSlNPTkIpCisgICAgV0lUSCAoYXV0 b3ZhY3V1bV9lbmFibGVkID0gb2ZmLCBmaWxsZmFjdG9yID0gNzApOworQ1JFQVRFIElOREVYIHRf aGFzaF9sb3dlcl9lbWFpbF9pZHggT04gdCBVU0lORyBIQVNIKGxvd2VyKGVtYWlsKSk7CitJTlNF UlQgSU5UTyB0IFZBTFVFUyAoMSwgJ0FsaWNlQEV4YW1wbGUuY29tJywgJ3sic3RhdHVzIjogIm5l dyJ9Jyk7CistLSBVcGRhdGUgbm9uLWluZGV4ZWQgZmllbGQgLSBzaG91bGQgYmUgSE9UCitVUERB VEUgdCBTRVQgZGF0YSA9ICd7InN0YXR1cyI6ICJhY3RpdmUifScgV0hFUkUgaWQgPSAxOworU0VM RUNUICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygxKTsKKyB0YWJsZV9uYW1lIHwgdG90YWxfdXBk YXRlcyB8IGhvdF91cGRhdGVzIHwgaG90X3VwZGF0ZV9wZXJjZW50YWdlIHwgbWF0Y2hlc19leHBl Y3RlZCAKKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgIHwgICAgICAg ICAgICAgMSB8ICAgICAgICAgICAxIHwgICAgICAgICAgICAgICAgMTAwLjAwIHwgdAorKDEgcm93 KQorCistLSBVcGRhdGUgZW1haWwgd2l0aCBjYXNlIGNoYW5nZSBvbmx5IChzYW1lIGxvd2VyY2Fz ZSkgLSBzaG91bGQgYmUgSE9UCitVUERBVEUgdCBTRVQgZW1haWwgPSAnYWxpY2VAZXhhbXBsZS5j b20nIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gY2hlY2tfaG90X3VwZGF0ZXMoMik7Cisg dGFibGVfbmFtZSB8IHRvdGFsX3VwZGF0ZXMgfCBob3RfdXBkYXRlcyB8IGhvdF91cGRhdGVfcGVy Y2VudGFnZSB8IG1hdGNoZXNfZXhwZWN0ZWQgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t CisgdCAgICAgICAgICB8ICAgICAgICAgICAgIDIgfCAgICAgICAgICAgMiB8ICAgICAgICAgICAg ICAgIDEwMC4wMCB8IHQKKygxIHJvdykKKworLS0gVXBkYXRlIGVtYWlsIHRvIGRpZmZlcmVudCBs b3dlcmNhc2UgLSBOT1QgSE9UCitVUERBVEUgdCBTRVQgZW1haWwgPSAnYm9iQGV4YW1wbGUuY29t JyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGNoZWNrX2hvdF91cGRhdGVzKDIpOworIHRh YmxlX25hbWUgfCB0b3RhbF91cGRhdGVzIHwgaG90X3VwZGF0ZXMgfCBob3RfdXBkYXRlX3BlcmNl bnRhZ2UgfCBtYXRjaGVzX2V4cGVjdGVkIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQor IHQgICAgICAgICAgfCAgICAgICAgICAgICAzIHwgICAgICAgICAgIDIgfCAgICAgICAgICAgICAg ICAgNjYuNjcgfCB0CisoMSByb3cpCisKK0RST1AgVEFCTEUgdCBDQVNDQURFOworLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0gTXVsdGlwbGUgSEFTSCBJbmRleGVzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDUkVBVEUgVEFCTEUgdChp ZCBJTlQsIGNhdGVnb3J5IFZBUkNIQVIsIHN0YXR1cyBWQVJDSEFSLCB2YWx1ZSBJTlQpCisgICAg V0lUSCAoYXV0b3ZhY3V1bV9lbmFibGVkID0gb2ZmLCBmaWxsZmFjdG9yID0gNzApOworQ1JFQVRF IElOREVYIHRfaGFzaF9jYXRlZ29yeV9pZHggT04gdCBVU0lORyBoYXNoKGNhdGVnb3J5KTsKK0NS RUFURSBJTkRFWCB0X2hhc2hfc3RhdHVzX2lkeCBPTiB0IFVTSU5HIGhhc2goc3RhdHVzKTsKK0lO U0VSVCBJTlRPIHQgVkFMVUVTICgxLCAnZWxlY3Ryb25pY3MnLCAnYWN0aXZlJywgMTAwKTsKKy0t IFVwZGF0ZSBub24taW5kZXhlZCBjb2x1bW4gLSBzaG91bGQgYmUgSE9UCitVUERBVEUgdCBTRVQg dmFsdWUgPSAxNTAgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBjaGVja19ob3RfdXBkYXRl cygxKTsKKyB0YWJsZV9uYW1lIHwgdG90YWxfdXBkYXRlcyB8IGhvdF91cGRhdGVzIHwgaG90X3Vw ZGF0ZV9wZXJjZW50YWdlIHwgbWF0Y2hlc19leHBlY3RlZCAKKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0KKyB0ICAgICAgICAgIHwgICAgICAgICAgICAgMSB8ICAgICAgICAgICAxIHwgICAg ICAgICAgICAgICAgMTAwLjAwIHwgdAorKDEgcm93KQorCistLSBVcGRhdGUgb25lIGluZGV4ZWQg Y29sdW1uIC0gTk9UIEhPVAorVVBEQVRFIHQgU0VUIGNhdGVnb3J5ID0gJ2Jvb2tzJyBXSEVSRSBp ZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGNoZWNrX2hvdF91cGRhdGVzKDEpOworIHRhYmxlX25hbWUg fCB0b3RhbF91cGRhdGVzIHwgaG90X3VwZGF0ZXMgfCBob3RfdXBkYXRlX3BlcmNlbnRhZ2UgfCBt YXRjaGVzX2V4cGVjdGVkIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAg ICAgfCAgICAgICAgICAgICAyIHwgICAgICAgICAgIDEgfCAgICAgICAgICAgICAgICAgNTAuMDAg fCB0CisoMSByb3cpCisKKy0tIFVwZGF0ZSBvdGhlciBpbmRleGVkIGNvbHVtbiAtIE5PVCBIT1QK K1VQREFURSB0IFNFVCBzdGF0dXMgPSAnaW5hY3RpdmUnIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAq IEZST00gY2hlY2tfaG90X3VwZGF0ZXMoMSk7CisgdGFibGVfbmFtZSB8IHRvdGFsX3VwZGF0ZXMg fCBob3RfdXBkYXRlcyB8IGhvdF91cGRhdGVfcGVyY2VudGFnZSB8IG1hdGNoZXNfZXhwZWN0ZWQg CistLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgdCAgICAgICAgICB8ICAgICAgICAgICAg IDMgfCAgICAgICAgICAgMSB8ICAgICAgICAgICAgICAgICAzMy4zMyB8IHQKKygxIHJvdykKKwor LS0gVXBkYXRlIGJvdGggaW5kZXhlZCBjb2x1bW5zIC0gTk9UIEhPVAorVVBEQVRFIHQgU0VUIGNh dGVnb3J5ID0gJ3ZpZGVvcycsIHN0YXR1cyA9ICdwZW5kaW5nJyBXSEVSRSBpZCA9IDE7CitTRUxF Q1QgKiBGUk9NIGNoZWNrX2hvdF91cGRhdGVzKDEpOworIHRhYmxlX25hbWUgfCB0b3RhbF91cGRh dGVzIHwgaG90X3VwZGF0ZXMgfCBob3RfdXBkYXRlX3BlcmNlbnRhZ2UgfCBtYXRjaGVzX2V4cGVj dGVkIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgICAgfCAgICAgICAg ICAgICA0IHwgICAgICAgICAgIDEgfCAgICAgICAgICAgICAgICAgMjUuMDAgfCB0CisoMSByb3cp CisKK0RST1AgVEFCTEUgdCBDQVNDQURFOworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gQlJJTiB2cyBIQVNIIENv bXBhcmlzb24KKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KK0NSRUFURSBUQUJMRSB0X2JyaW4oaWQgSU5ULCB2YWx1ZSBJ TlQsIGRhdGEgVEVYVCkKKyAgICBXSVRIIChhdXRvdmFjdXVtX2VuYWJsZWQgPSBvZmYsIGZpbGxm YWN0b3IgPSA3MCk7CitDUkVBVEUgVEFCTEUgdF9oYXNoKGlkIElOVCwgdmFsdWUgSU5ULCBkYXRh IFRFWFQpCisgICAgV0lUSCAoYXV0b3ZhY3V1bV9lbmFibGVkID0gb2ZmLCBmaWxsZmFjdG9yID0g NzApOworQ1JFQVRFIElOREVYIHRfYnJpbl92YWx1ZV9pZHggT04gdF9icmluIFVTSU5HIGJyaW4o dmFsdWUpOworQ1JFQVRFIElOREVYIHRfaGFzaF92YWx1ZV9pZHggT04gdF9oYXNoIFVTSU5HIGhh c2godmFsdWUpOworSU5TRVJUIElOVE8gdF9icmluIFZBTFVFUyAoMSwgMTAwLCAnaW5pdGlhbCcp OworSU5TRVJUIElOVE8gdF9oYXNoIFZBTFVFUyAoMSwgMTAwLCAnaW5pdGlhbCcpOworLS0gU2Ft ZSB1cGRhdGUgb24gYm90aCAtIGRpZmZlcmVudCBIT1QgYmVoYXZpb3IgZXhwZWN0ZWQKKy0tIEJS SU46IG1pZ2h0IGFsbG93IEhPVCAocmFuZ2Ugc3VtbWFyeSB1bmNoYW5nZWQpCistLSBIQVNIOiBi bG9ja3MgSE9UIChoYXNoIGJ1Y2tldCBjaGFuZ2VkKQorVVBEQVRFIHRfYnJpbiBTRVQgdmFsdWUg PSAxNTAgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygxLCAn dF9icmluJyk7CisgdGFibGVfbmFtZSB8IHRvdGFsX3VwZGF0ZXMgfCBob3RfdXBkYXRlcyB8IGhv dF91cGRhdGVfcGVyY2VudGFnZSB8IG1hdGNoZXNfZXhwZWN0ZWQgCistLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tCisgdF9icmluICAgICB8ICAgICAgICAgICAgIDEgfCAgICAgICAgICAgMSB8 ICAgICAgICAgICAgICAgIDEwMC4wMCB8IHQKKygxIHJvdykKKworLS0gRXhwZWN0ZWQ6IDEgSE9U IChCUklOIGFsbG93cyBpdCBmb3Igc2luZ2xlIHJvdykKK1VQREFURSB0X2hhc2ggU0VUIHZhbHVl ID0gMTUwIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gY2hlY2tfaG90X3VwZGF0ZXMoMCwg J3RfaGFzaCcpOworIHRhYmxlX25hbWUgfCB0b3RhbF91cGRhdGVzIHwgaG90X3VwZGF0ZXMgfCBo b3RfdXBkYXRlX3BlcmNlbnRhZ2UgfCBtYXRjaGVzX2V4cGVjdGVkIAorLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLQorIHRfaGFzaCAgICAgfCAgICAgICAgICAgICAxIHwgICAgICAgICAgIDAg fCAgICAgICAgICAgICAgICAgIDAuMDAgfCB0CisoMSByb3cpCisKKy0tIEV4cGVjdGVkOiAwIEhP VCAoSEFTSCBibG9ja3MgaXQpCitEUk9QIFRBQkxFIHRfYnJpbiBDQVNDQURFOworRFJPUCBUQUJM RSB0X2hhc2ggQ0FTQ0FERTsKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEhBU0ggSW5kZXggd2l0aCBOVUxMIFZh bHVlcworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorQ1JFQVRFIFRBQkxFIHQoaWQgSU5ULCBjYXRlZ29yeSBWQVJDSEFS LCBkYXRhIFRFWFQpCisgICAgV0lUSCAoYXV0b3ZhY3V1bV9lbmFibGVkID0gb2ZmLCBmaWxsZmFj dG9yID0gNzApOworQ1JFQVRFIElOREVYIHRfaGFzaF9jYXRlZ29yeV9pZHggT04gdCBVU0lORyBo YXNoKGNhdGVnb3J5KTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgxLCAnZWxlY3Ryb25pY3MnLCAn aW5pdGlhbCcpOworLS0gVXBkYXRlIGluZGV4ZWQgY29sdW1uIHRvIE5VTEwgLSBOT1QgSE9UICho YXNoIHZhbHVlIGNoYW5nZWQpCitVUERBVEUgdCBTRVQgY2F0ZWdvcnkgPSBOVUxMIFdIRVJFIGlk ID0gMTsKK1NFTEVDVCAqIEZST00gY2hlY2tfaG90X3VwZGF0ZXMoMCk7CisgdGFibGVfbmFtZSB8 IHRvdGFsX3VwZGF0ZXMgfCBob3RfdXBkYXRlcyB8IGhvdF91cGRhdGVfcGVyY2VudGFnZSB8IG1h dGNoZXNfZXhwZWN0ZWQgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgdCAgICAgICAg ICB8ICAgICAgICAgICAgIDEgfCAgICAgICAgICAgMCB8ICAgICAgICAgICAgICAgICAgMC4wMCB8 IHQKKygxIHJvdykKKworLS0gRXhwZWN0ZWQ6IDAgSE9UCistLSBVcGRhdGUgaW5kZXhlZCBjb2x1 bW4gZnJvbSBOVUxMIHRvIHZhbHVlIC0gTk9UIEhPVAorVVBEQVRFIHQgU0VUIGNhdGVnb3J5ID0g J2Jvb2tzJyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGNoZWNrX2hvdF91cGRhdGVzKDAp OworIHRhYmxlX25hbWUgfCB0b3RhbF91cGRhdGVzIHwgaG90X3VwZGF0ZXMgfCBob3RfdXBkYXRl X3BlcmNlbnRhZ2UgfCBtYXRjaGVzX2V4cGVjdGVkIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLQorIHQgICAgICAgICAgfCAgICAgICAgICAgICAyIHwgICAgICAgICAgIDAgfCAgICAgICAg ICAgICAgICAgIDAuMDAgfCB0CisoMSByb3cpCisKKy0tIEV4cGVjdGVkOiAwIEhPVAorLS0gVXBk YXRlIG5vbi1pbmRleGVkIGNvbHVtbiAtIHNob3VsZCBiZSBIT1QKK1VQREFURSB0IFNFVCBkYXRh ID0gJ3VwZGF0ZWQnIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gY2hlY2tfaG90X3VwZGF0 ZXMoMSk7CisgdGFibGVfbmFtZSB8IHRvdGFsX3VwZGF0ZXMgfCBob3RfdXBkYXRlcyB8IGhvdF91 cGRhdGVfcGVyY2VudGFnZSB8IG1hdGNoZXNfZXhwZWN0ZWQgCistLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tCisgdCAgICAgICAgICB8ICAgICAgICAgICAgIDMgfCAgICAgICAgICAgMSB8ICAg ICAgICAgICAgICAgICAzMy4zMyB8IHQKKygxIHJvdykKKworLS0gRXhwZWN0ZWQ6IDEgSE9UCitE Uk9QIFRBQkxFIHQgQ0FTQ0FERTsKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEJSSU4gb24gSlNPTkIgRmllbGQK Ky0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KK0NSRUFURSBUQUJMRSB0KGlkIElOVCwgbWV0cmljcyBKU09OQikKKyAgICBX SVRIIChhdXRvdmFjdXVtX2VuYWJsZWQgPSBvZmYsIGZpbGxmYWN0b3IgPSA3MCk7CistLSBCUklO IGRvZXNuJ3QgZGlyZWN0bHkgc3VwcG9ydCBKU09OQiwgYnV0IHdlIGNhbiB0ZXN0IG9uIGV4cHJl c3Npb24KK0NSRUFURSBJTkRFWCB0X2JyaW5fY291bnRfaWR4IE9OIHQgVVNJTkcgYnJpbigKKyAg ICBDQVNUKG1ldHJpY3MtPj4nY291bnQnIEFTIElOVEVHRVIpCispOworSU5TRVJUIElOVE8gdCBW QUxVRVMgKDEsICd7ImNvdW50IjogIjEwMCIsICJ0aW1lc3RhbXAiOiAiMjAyNC0wMS0wMSJ9Jyk7 CistLSBVcGRhdGUgbm9uLWluZGV4ZWQgSlNPTkIgZmllbGQgLSBzaG91bGQgYmUgSE9UCitVUERB VEUgdCBTRVQgbWV0cmljcyA9ICd7ImNvdW50IjogIjEwMCIsICJ0aW1lc3RhbXAiOiAiMjAyNC0w MS0wMiJ9JyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGNoZWNrX2hvdF91cGRhdGVzKDEp OworIHRhYmxlX25hbWUgfCB0b3RhbF91cGRhdGVzIHwgaG90X3VwZGF0ZXMgfCBob3RfdXBkYXRl X3BlcmNlbnRhZ2UgfCBtYXRjaGVzX2V4cGVjdGVkIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLQorIHQgICAgICAgICAgfCAgICAgICAgICAgICAxIHwgICAgICAgICAgIDEgfCAgICAgICAg ICAgICAgICAxMDAuMDAgfCB0CisoMSByb3cpCisKKy0tIEV4cGVjdGVkOiAxIEhPVAorLS0gVXBk YXRlIGluZGV4ZWQgZmllbGQgLSBCUklOIGFsbG93cyBIT1QgZm9yIHNpbmdsZSByb3cKK1VQREFU RSB0IFNFVCBtZXRyaWNzID0gJ3siY291bnQiOiAiMTUwIiwgInRpbWVzdGFtcCI6ICIyMDI0LTAx LTAyIn0nIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gY2hlY2tfaG90X3VwZGF0ZXMoMik7 CisgdGFibGVfbmFtZSB8IHRvdGFsX3VwZGF0ZXMgfCBob3RfdXBkYXRlcyB8IGhvdF91cGRhdGVf cGVyY2VudGFnZSB8IG1hdGNoZXNfZXhwZWN0ZWQgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tCisgdCAgICAgICAgICB8ICAgICAgICAgICAgIDIgfCAgICAgICAgICAgMiB8ICAgICAgICAg ICAgICAgIDEwMC4wMCB8IHQKKygxIHJvdykKKworLS0gRXhwZWN0ZWQ6IDIgSE9UIChCUklOIHBl cm1pdHMgc2luZ2xlLXJvdyB1cGRhdGVzKQorRFJPUCBUQUJMRSB0IENBU0NBREU7CistLSA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLSBNaXhlZCBCUklOICsgSEFTSCBvbiBTYW1lIFRhYmxlCistLSA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDUkVB VEUgVEFCTEUgdChpZCBJTlQsIGNhdGVnb3J5IFZBUkNIQVIsIHRpbWVzdGFtcCBUSU1FU1RBTVAs IHByaWNlIE5VTUVSSUMsIGRhdGEgVEVYVCkKKyAgICBXSVRIIChhdXRvdmFjdXVtX2VuYWJsZWQg PSBvZmYsIGZpbGxmYWN0b3IgPSA3MCk7CitDUkVBVEUgSU5ERVggdF9icmluX3RpbWVzdGFtcF9p ZHggT04gdCBVU0lORyBicmluKHRpbWVzdGFtcCk7CitDUkVBVEUgSU5ERVggdF9oYXNoX2NhdGVn b3J5X2lkeCBPTiB0IFVTSU5HIGhhc2goY2F0ZWdvcnkpOworSU5TRVJUIElOVE8gdCBWQUxVRVMg KDEsICdib29rcycsICcyMDI0LTAxLTAxIDEwOjAwOjAwJywgMjkuOTksICdpbml0aWFsJyk7Cist LSBVcGRhdGUgbm9uLWluZGV4ZWQgY29sdW1uIC0gc2hvdWxkIGJlIEhPVAorVVBEQVRFIHQgU0VU IGRhdGEgPSAndXBkYXRlZCcgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBjaGVja19ob3Rf dXBkYXRlcygxKTsKKyB0YWJsZV9uYW1lIHwgdG90YWxfdXBkYXRlcyB8IGhvdF91cGRhdGVzIHwg aG90X3VwZGF0ZV9wZXJjZW50YWdlIHwgbWF0Y2hlc19leHBlY3RlZCAKKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgIHwgICAgICAgICAgICAgMSB8ICAgICAgICAgICAx IHwgICAgICAgICAgICAgICAgMTAwLjAwIHwgdAorKDEgcm93KQorCistLSBFeHBlY3RlZDogMSBI T1QKKy0tIFVwZGF0ZSBCUklOIGluZGV4ZWQgY29sdW1uIC0gYWxsb3dzIEhPVAorVVBEQVRFIHQg U0VUIHRpbWVzdGFtcCA9ICcyMDI0LTAxLTAyIDEwOjAwOjAwJyBXSEVSRSBpZCA9IDE7CitTRUxF Q1QgKiBGUk9NIGNoZWNrX2hvdF91cGRhdGVzKDIpOworIHRhYmxlX25hbWUgfCB0b3RhbF91cGRh dGVzIHwgaG90X3VwZGF0ZXMgfCBob3RfdXBkYXRlX3BlcmNlbnRhZ2UgfCBtYXRjaGVzX2V4cGVj dGVkIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgICAgfCAgICAgICAg ICAgICAyIHwgICAgICAgICAgIDIgfCAgICAgICAgICAgICAgICAxMDAuMDAgfCB0CisoMSByb3cp CisKKy0tIEV4cGVjdGVkOiAyIEhPVAorLS0gVXBkYXRlIEhBU0ggaW5kZXhlZCBjb2x1bW4gLSBi bG9ja3MgSE9UCitVUERBVEUgdCBTRVQgY2F0ZWdvcnkgPSAndmlkZW9zJyBXSEVSRSBpZCA9IDE7 CitTRUxFQ1QgKiBGUk9NIGNoZWNrX2hvdF91cGRhdGVzKDIpOworIHRhYmxlX25hbWUgfCB0b3Rh bF91cGRhdGVzIHwgaG90X3VwZGF0ZXMgfCBob3RfdXBkYXRlX3BlcmNlbnRhZ2UgfCBtYXRjaGVz X2V4cGVjdGVkIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgICAgfCAg ICAgICAgICAgICAzIHwgICAgICAgICAgIDIgfCAgICAgICAgICAgICAgICAgNjYuNjcgfCB0Ciso MSByb3cpCisKKy0tIEV4cGVjdGVkOiAyIEhPVCAoSEFTSCBibG9ja3MgaXQpCistLSBVcGRhdGUg cHJpY2UgKG5vbi1pbmRleGVkKSAtIHNob3VsZCBiZSBIT1QKK1VQREFURSB0IFNFVCBwcmljZSA9 IDM5Ljk5IFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gY2hlY2tfaG90X3VwZGF0ZXMoMyk7 CisgdGFibGVfbmFtZSB8IHRvdGFsX3VwZGF0ZXMgfCBob3RfdXBkYXRlcyB8IGhvdF91cGRhdGVf cGVyY2VudGFnZSB8IG1hdGNoZXNfZXhwZWN0ZWQgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tCisgdCAgICAgICAgICB8ICAgICAgICAgICAgIDQgfCAgICAgICAgICAgMyB8ICAgICAgICAg ICAgICAgICA3NS4wMCB8IHQKKygxIHJvdykKKworLS0gRXhwZWN0ZWQ6IDMgSE9UCitEUk9QIFRB QkxFIHQgQ0FTQ0FERTsKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEluZGV4IGJvdGggb24gYSBmaWVsZCBpbiBh IEpTT05CIGRvY3VtZW50LCBhbmQgdGhlIGRvY3VtZW50CistLSA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDUkVBVEUgVEFC TEUgdChpZCBJTlQgUFJJTUFSWSBLRVksIGRvY3MgSlNPTkIpIFdJVEggKGF1dG92YWN1dW1fZW5h YmxlZCA9IG9mZiwgZmlsbGZhY3RvciA9IDcwKTsKK0NSRUFURSBJTkRFWCB0X2RvY3NfaWR4IE9O IHQoKGRvY3MtPiduYW1lJykpOworQ1JFQVRFIElOREVYIHRfZG9jc19jb2xfaWR4IE9OIHQoZG9j cyk7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMSwgJ3sibmFtZSI6ICJqb2huIiwgImRhdGEiOiAi c29tZSBkYXRhIn0nKTsKKy0tIFVwZGF0ZSBpbXBhY3RzIGluZGV4IG9uIHdob2xlIGRvY21lbnQg YXR0cmlidXRlLCBjYW4ndCBnbyBIT1QKK1VQREFURSB0IFNFVCBkb2NzPSd7Im5hbWUiOiAiam9o biIsICJkYXRhIjogInNvbWUgb3RoZXIgZGF0YSJ9JyBXSEVSRSBpZD0xOworU0VMRUNUICogRlJP TSBjaGVja19ob3RfdXBkYXRlcygwKTsKKyB0YWJsZV9uYW1lIHwgdG90YWxfdXBkYXRlcyB8IGhv dF91cGRhdGVzIHwgaG90X3VwZGF0ZV9wZXJjZW50YWdlIHwgbWF0Y2hlc19leHBlY3RlZCAKKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgIHwgICAgICAgICAgICAgMSB8 ICAgICAgICAgICAwIHwgICAgICAgICAgICAgICAgICAwLjAwIHwgdAorKDEgcm93KQorCitEUk9Q IFRBQkxFIHQgQ0FTQ0FERTsKKy0tIENsZWFudXAKK0RST1AgRlVOQ1RJT04gY2hlY2tfaG90X3Vw ZGF0ZXMoaW50LCB0ZXh0LCB0ZXh0KTsKK0RST1AgQ09MTEFUSU9OIGNhc2VfaW5zZW5zaXRpdmU7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rl c3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCAwMjFkNTdmNjZiYi4uMmQ2NjQxOTky ZTkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAtMTI1LDYgKzEyNSwxMiBAQCB0 ZXN0OiBwbGFuY2FjaGUgbGltaXQgcGxwZ3NxbCBjb3B5MiB0ZW1wIGRvbWFpbiByYW5nZWZ1bmNz IHByZXBhcmUgY29udmVyc2lvbiB0cgogIyAtLS0tLS0tLS0tCiB0ZXN0OiBwYXJ0aXRpb25fbWVy Z2UgcGFydGl0aW9uX3NwbGl0IHBhcnRpdGlvbl9qb2luIHBhcnRpdGlvbl9wcnVuZSByZWxvcHRp b25zIGhhc2hfcGFydCBpbmRleGluZyBwYXJ0aXRpb25fYWdncmVnYXRlIHBhcnRpdGlvbl9pbmZv IHR1cGxlc29ydCBleHBsYWluIGNvbXByZXNzaW9uIGNvbXByZXNzaW9uX2x6NCBtZW1vaXplIHN0 YXRzIHByZWRpY2F0ZSBudW1hIGVhZ2VyX2FnZ3JlZ2F0ZQogCisKKyMgLS0tLS0tLS0tLQorIyBB bm90aGVyIGdyb3VwIG9mIHBhcmFsbGVsIHRlc3RzLCB0aGVzZSBmb2N1c2VkIG9uIGhlYXAgSE9U IHVwZGF0ZXMKKyMgLS0tLS0tLS0tLQordGVzdDogaGVhcF9ob3RfdXBkYXRlcworCiAjIGV2ZW50 X3RyaWdnZXIgZGVwZW5kcyBvbiBjcmVhdGVfYW0gYW5kIGNhbm5vdCBydW4gY29uY3VycmVudGx5 IHdpdGgKICMgYW55IHRlc3QgdGhhdCBydW5zIERETAogIyBvaWRqb2lucyBpcyByZWFkLW9ubHks IHRob3VnaCwgYW5kIHNob3VsZCBydW4gbGF0ZSBmb3IgYmVzdCBjb3ZlcmFnZQpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaGVhcF9ob3RfdXBkYXRlcy5zcWwgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9oZWFwX2hvdF91cGRhdGVzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uZTA0N2JjZGRmNWMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9oZWFwX2hvdF91cGRhdGVzLnNxbApAQCAtMCwwICsxLDUxMyBAQAorLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0gVGVzdCBTdWl0ZSBmb3IgSGVhcC1vbmx5IChIT1QpIFVwZGF0ZXMKKy0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKworLS0gU2V0dXA6IENyZWF0ZSBmdW5jdGlvbiB0byBtZWFzdXJlIEhPVCB1cGRhdGVzCitD UkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBjaGVja19ob3RfdXBkYXRlcygKKyAgICBleHBlY3Rl ZCBJTlQsCisgICAgcF90YWJsZV9uYW1lIFRFWFQgREVGQVVMVCAndCcsCisgICAgcF9zY2hlbWFf bmFtZSBURVhUIERFRkFVTFQgY3VycmVudF9zY2hlbWEoKQorKQorUkVUVVJOUyBUQUJMRSAoCisg ICAgdGFibGVfbmFtZSBURVhULAorICAgIHRvdGFsX3VwZGF0ZXMgQklHSU5ULAorICAgIGhvdF91 cGRhdGVzIEJJR0lOVCwKKyAgICBob3RfdXBkYXRlX3BlcmNlbnRhZ2UgTlVNRVJJQywKKyAgICBt YXRjaGVzX2V4cGVjdGVkIEJPT0xFQU4KKykKK0xBTkdVQUdFIHBscGdzcWwKK0FTICQkCitERUNM QVJFCisgICAgdl9yZWxpZCBvaWQ7CisgICAgdl9xdWFsaWZpZWRfbmFtZSBURVhUOworICAgIHZf aG90X3VwZGF0ZXMgQklHSU5UOworICAgIHZfdXBkYXRlcyBCSUdJTlQ7CisgICAgdl94YWN0X2hv dF91cGRhdGVzIEJJR0lOVDsKKyAgICB2X3hhY3RfdXBkYXRlcyBCSUdJTlQ7CitCRUdJTgorICAg IC0tIEZvcmNlIHN0YXRpc3RpY3MgdXBkYXRlCisgICAgUEVSRk9STSBwZ19zdGF0X2ZvcmNlX25l eHRfZmx1c2goKTsKKworICAgIC0tIEdldCB0YWJsZSBPSUQKKyAgICB2X3F1YWxpZmllZF9uYW1l IDo9IHF1b3RlX2lkZW50KHBfc2NoZW1hX25hbWUpIHx8ICcuJyB8fCBxdW90ZV9pZGVudChwX3Rh YmxlX25hbWUpOworICAgIHZfcmVsaWQgOj0gdl9xdWFsaWZpZWRfbmFtZTo6cmVnY2xhc3M7CisK KyAgICBJRiB2X3JlbGlkIElTIE5VTEwgVEhFTgorCVJBSVNFIEVYQ0VQVElPTiAnVGFibGUgJS4l IG5vdCBmb3VuZCcsIHBfc2NoZW1hX25hbWUsIHBfdGFibGVfbmFtZTsKKyAgICBFTkQgSUY7CisK KyAgICAtLSBHZXQgY3VtdWxhdGl2ZSArIHRyYW5zYWN0aW9uIHN0YXRzCisgICAgdl9ob3RfdXBk YXRlcyA6PSBDT0FMRVNDRShwZ19zdGF0X2dldF90dXBsZXNfaG90X3VwZGF0ZWQodl9yZWxpZCks IDApOworICAgIHZfdXBkYXRlcyA6PSBDT0FMRVNDRShwZ19zdGF0X2dldF90dXBsZXNfdXBkYXRl ZCh2X3JlbGlkKSwgMCk7CisgICAgdl94YWN0X2hvdF91cGRhdGVzIDo9IENPQUxFU0NFKHBnX3N0 YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKHZfcmVsaWQpLCAwKTsKKyAgICB2X3hhY3Rf dXBkYXRlcyA6PSBDT0FMRVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxlc191cGRhdGVkKHZfcmVs aWQpLCAwKTsKKworICAgIHZfaG90X3VwZGF0ZXMgOj0gdl9ob3RfdXBkYXRlcyArIHZfeGFjdF9o b3RfdXBkYXRlczsKKyAgICB2X3VwZGF0ZXMgOj0gdl91cGRhdGVzICsgdl94YWN0X3VwZGF0ZXM7 CisKKyAgICBSRVRVUk4gUVVFUlkKKyAgICBTRUxFQ1QKKwlwX3RhYmxlX25hbWU6OlRFWFQsCisJ dl91cGRhdGVzOjpCSUdJTlQsCisJdl9ob3RfdXBkYXRlczo6QklHSU5ULAorCUNBU0UgV0hFTiB2 X3VwZGF0ZXMgPiAwCisJICAgICBUSEVOIFJPVU5EKCh2X2hvdF91cGRhdGVzOjpudW1lcmljIC8g dl91cGRhdGVzOjpudW1lcmljICogMTAwKTo6bnVtZXJpYywgMikKKwkgICAgIEVMU0UgMAorCUVO RCwKKwkodl9ob3RfdXBkYXRlcyA9IGV4cGVjdGVkKTo6Qk9PTEVBTjsKK0VORDsKKyQkOworCitD UkVBVEUgQ09MTEFUSU9OIGNhc2VfaW5zZW5zaXRpdmUgKAorICAgIHByb3ZpZGVyID0gbGliYywK KyAgICBsb2NhbGUgPSAnQycKKyk7CisKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gR0lOIEluZGV4IG9uIEpT T05CCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CitDUkVBVEUgVEFCTEUgdChpZCBJTlQsIGRhdGEgSlNPTkIpCisgICAg V0lUSCAoYXV0b3ZhY3V1bV9lbmFibGVkID0gb2ZmLCBmaWxsZmFjdG9yID0gNzApOworQ1JFQVRF IElOREVYIHRfZ2luX2lkeCBPTiB0IFVTSU5HIGdpbihkYXRhKTsKK0lOU0VSVCBJTlRPIHQgVkFM VUVTICgxLCAneyJ0YWdzIjogWyJwb3N0Z3JlcyIsICJkYXRhYmFzZSJdfScpOworCistLSBDaGFu Z2UgdGFncyAtIEdJTiBrZXlzIGNoYW5nZWQsIHNob3VsZCBOT1QgYmUgSE9UCitVUERBVEUgdCBT RVQgZGF0YSA9ICd7InRhZ3MiOiBbInBvc3RncmVzIiwgInNxbCJdfScgV0hFUkUgaWQgPSAxOwor U0VMRUNUICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygwKTsKKworLS0gQ2hhbmdlIHRhZ3MgYWdh aW4gLSBHSU4ga2V5cyBjaGFuZ2VkLCBzaG91bGQgTk9UIGJlIEhPVAorVVBEQVRFIHQgU0VUIGRh dGEgPSAneyJ0YWdzIjogWyJteXNxbCIsICJzcWwiXX0nIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAq IEZST00gY2hlY2tfaG90X3VwZGF0ZXMoMCk7CisKKy0tIEFkZCBmaWVsZCB3aXRob3V0IGNoYW5n aW5nIGV4aXN0aW5nIGtleXMgLSBHSU4ga2V5cyBjaGFuZ2VkIChhZGRlZCAibm90ZSIpLCBOT1Qg SE9UCitVUERBVEUgdCBTRVQgZGF0YSA9ICd7InRhZ3MiOiBbIm15c3FsIiwgInNxbCJdLCAibm90 ZSI6ICJ0ZXN0In0nIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gY2hlY2tfaG90X3VwZGF0 ZXMoMCk7CisKK0RST1AgVEFCTEUgdDsKKworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBHSU4gSW5kZXggd2l0 aCBVbmNoYW5nZWQgS2V5cworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ1JFQVRFIFRBQkxFIHQoaWQgSU5ULCBkYXRh IEpTT05CKQorICAgIFdJVEggKGF1dG92YWN1dW1fZW5hYmxlZCA9IG9mZiwgZmlsbGZhY3RvciA9 IDcwKTsKKy0tIENyZWF0ZSBHSU4gaW5kZXggb24gc3BlY2lmaWMgcGF0aAorQ1JFQVRFIElOREVY IHRfZ2luX2lkeCBPTiB0IFVTSU5HIGdpbigoZGF0YS0+J3RhZ3MnKSk7CitJTlNFUlQgSU5UTyB0 IFZBTFVFUyAoMSwgJ3sidGFncyI6IFsicG9zdGdyZXMiLCAic3FsIl0sICJzdGF0dXMiOiAiYWN0 aXZlIn0nKTsKKworLS0gQ2hhbmdlIG5vbi1pbmRleGVkIGZpZWxkIC0gR0lOIGtleXMgb24gJ3Rh Z3MnIHVuY2hhbmdlZCwgc2hvdWxkIGJlIEhPVAorVVBEQVRFIHQgU0VUIGRhdGEgPSAneyJ0YWdz IjogWyJwb3N0Z3JlcyIsICJzcWwiXSwgInN0YXR1cyI6ICJpbmFjdGl2ZSJ9JyBXSEVSRSBpZCA9 IDE7CitTRUxFQ1QgKiBGUk9NIGNoZWNrX2hvdF91cGRhdGVzKDEpOworCistLSBDaGFuZ2UgaW5k ZXhlZCB0YWdzIC0gR0lOIGtleXMgY2hhbmdlZCwgc2hvdWxkIE5PVCBiZSBIT1QKK1VQREFURSB0 IFNFVCBkYXRhID0gJ3sidGFncyI6IFsibXlzcWwiLCAic3FsIl0sICJzdGF0dXMiOiAiaW5hY3Rp dmUifScgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygxKTsK KworRFJPUCBUQUJMRSB0OworCisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEdJTiB3aXRoIGpzb25iX3BhdGhf b3BzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CitDUkVBVEUgVEFCTEUgdChpZCBJTlQsIGRhdGEgSlNPTkIpCisgICAg V0lUSCAoYXV0b3ZhY3V1bV9lbmFibGVkID0gb2ZmLCBmaWxsZmFjdG9yID0gNzApOworQ1JFQVRF IElOREVYIHRfZ2luX2lkeCBPTiB0IFVTSU5HIGdpbihkYXRhIGpzb25iX3BhdGhfb3BzKTsKK0lO U0VSVCBJTlRPIHQgVkFMVUVTICgxLCAneyJ1c2VyIjogeyJuYW1lIjogImFsaWNlIn0sICJ0YWdz IjogWyJhIiwgImIiXX0nKTsKKworLS0gQ2hhbmdlIHZhbHVlIGF0IGRpZmZlcmVudCBwYXRoIC0g a2V5cyBjaGFuZ2VkLCBOT1QgSE9UCitVUERBVEUgdCBTRVQgZGF0YSA9ICd7InVzZXIiOiB7Im5h bWUiOiAiYm9iIn0sICJ0YWdzIjogWyJhIiwgImIiXX0nIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAq IEZST00gY2hlY2tfaG90X3VwZGF0ZXMoMCk7CisKK0RST1AgVEFCTEUgdDsKKworCistLSA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLSBNaXhlZCBJbmRleCBUeXBlcyAoQlJJTiArIEV4cHJlc3Npb24pCistLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CitDUkVBVEUgVEFCTEUgdChpZCBJTlQsIHZhbHVlIElOVCwgZGF0YSBKU09OQikKKyAgICBXSVRI IChhdXRvdmFjdXVtX2VuYWJsZWQgPSBvZmYsIGZpbGxmYWN0b3IgPSA3MCk7CitDUkVBVEUgSU5E RVggdF9icmluX2lkeCBPTiB0IFVTSU5HIGJyaW4odmFsdWUpOworQ1JFQVRFIElOREVYIHRfZXhw cl9pZHggT04gdCgoZGF0YS0+J3N0YXR1cycpKTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgxLCAx MDAsICd7InN0YXR1cyI6ICJhY3RpdmUifScpOworCistLSBVcGRhdGUgb25seSBCUklOIGNvbHVt biAtIHNob3VsZCBiZSBIT1QKK1VQREFURSB0IFNFVCB2YWx1ZSA9IDIwMCBXSEVSRSBpZCA9IDE7 CitTRUxFQ1QgKiBGUk9NIGNoZWNrX2hvdF91cGRhdGVzKDEpOworCistLSBVcGRhdGUgb25seSBl eHByZXNzaW9uIGNvbHVtbiAtIHNob3VsZCBOT1QgYmUgSE9UCitVUERBVEUgdCBTRVQgZGF0YSA9 ICd7InN0YXR1cyI6ICJpbmFjdGl2ZSJ9JyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGNo ZWNrX2hvdF91cGRhdGVzKDEpOworCistLSBVcGRhdGUgYm90aCAtIHNob3VsZCBOT1QgYmUgSE9U CitVUERBVEUgdCBTRVQgdmFsdWUgPSAzMDAsIGRhdGEgPSAneyJzdGF0dXMiOiAicGVuZGluZyJ9 JyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGNoZWNrX2hvdF91cGRhdGVzKDEpOworCitE Uk9QIFRBQkxFIHQ7CisKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gR0lOIEFycmF5IEluZGV4IC0gT3JkZXIg SW5zZW5zaXRpdmUgRXh0cmFjdGlvbgorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ1JFQVRFIFRBQkxFIHQoCisgICAg aWQgSU5UIFBSSU1BUlkgS0VZLAorICAgIGRhdGEgSlNPTkIKKykgV0lUSCAoYXV0b3ZhY3V1bV9l bmFibGVkID0gb2ZmLCBmaWxsZmFjdG9yID0gNzApOworCistLSBHSU4gaW5kZXggb24gSlNPTkIg YXJyYXkgKGV4dHJhY3RzIGFsbCBlbGVtZW50cykKK0NSRUFURSBJTkRFWCB0X2l0ZW1zX2dpbiBP TiB0IFVTSU5HIEdJTiAoKGRhdGEtPidpdGVtcycpKTsKKworSU5TRVJUIElOVE8gdCBWQUxVRVMg KDEsICd7Iml0ZW1zIjogWzEsIDIsIDNdLCAic3RhdHVzIjogImFjdGl2ZSJ9Jyk7CisKKy0tIFVw ZGF0ZTogUmVvcmRlciBhcnJheSBlbGVtZW50cworLS0gSlNPTkIgZXF1YWxpdHk6IE5PVCBlcXVh bCAoZGlmZmVyZW50IGFycmF5cykKKy0tIEdJTiBleHRyYWN0aW9uOiBTYW1lIGVsZW1lbnRzIGV4 dHJhY3RlZCAobWlnaHQgYWxsb3cgSE9UIGlmIG5vdCBjYXJlZnVsKQorVVBEQVRFIHQgU0VUIGRh dGEgPSAneyJpdGVtcyI6IFszLCAyLCAxXSwgInN0YXR1cyI6ICJhY3RpdmUifScgV0hFUkUgaWQg PSAxOworU0VMRUNUICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygxKTsKKworLS0gVXBkYXRlOiBB ZGQvcmVtb3ZlIGVsZW1lbnQKK1VQREFURSB0IFNFVCBkYXRhID0gJ3siaXRlbXMiOiBbMSwgMiwg MywgNF0sICJzdGF0dXMiOiAiYWN0aXZlIn0nIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00g Y2hlY2tfaG90X3VwZGF0ZXMoMSk7CisKK0RST1AgVEFCTEUgdDsKKworCistLSA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LSBURVNUOiBHSU4gd2l0aCBUT0FTVGVkIFRFWFQgKHRzdmVjdG9yKQorLS0gPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ1JF QVRFIFRBQkxFIHQoaWQgSU5ULCBjb250ZW50IFRFWFQsIHNlYXJjaF92ZWMgdHN2ZWN0b3IpCisg ICAgV0lUSCAoYXV0b3ZhY3V1bV9lbmFibGVkID0gb2ZmLCBmaWxsZmFjdG9yID0gNzApOworCist LSBDcmVhdGUgdHJpZ2dlciB0byBtYWludGFpbiB0c3ZlY3RvcgorQ1JFQVRFIFRSSUdHRVIgdHN2 ZWN0b3J1cGRhdGVfdG9hc3QKKyAgICBCRUZPUkUgSU5TRVJUIE9SIFVQREFURSBPTiB0CisgICAg Rk9SIEVBQ0ggUk9XIEVYRUNVVEUgRlVOQ1RJT04KKyAgICB0c3ZlY3Rvcl91cGRhdGVfdHJpZ2dl cihzZWFyY2hfdmVjLCAncGdfY2F0YWxvZy5lbmdsaXNoJywgY29udGVudCk7CisKK0NSRUFURSBJ TkRFWCB0X2dpbiBPTiB0IFVTSU5HIGdpbihzZWFyY2hfdmVjKTsKKworLS0gSW5zZXJ0IHdpdGgg bGFyZ2UgY29udGVudCAod2lsbCBiZSBUT0FTVGVkKQorSU5TRVJUIElOVE8gdCAoaWQsIGNvbnRl bnQpIFZBTFVFUworICAgICgxLCByZXBlYXQoJ2ltcG9ydGFudCBrZXl3b3JkICcsIDEwMDApIHx8 IHJlcGVhdCgnZmlsbGVyIHRleHQgJywgMTAwMDApKTsKKworLS0gVmVyaWZ5IGluaXRpYWwgc3Rh dGUKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHQgV0hFUkUgc2VhcmNoX3ZlYyBAQCB0b190c3F1ZXJ5 KCdpbXBvcnRhbnQnKTsKKy0tIEV4cGVjdGVkOiAxIHJvdworCistLSBJTVBPUlRBTlQ6IFRoZSBC RUZPUkUgVVBEQVRFIHRyaWdnZXIgbW9kaWZpZXMgc2VhcmNoX3ZlYywgc28gYnkgdGhlIHRpbWUK Ky0tIEV4ZWNXaGljaEluZGV4ZXNSZXF1aXJlVXBkYXRlcygpIHJ1bnMsIHNlYXJjaF92ZWMgaGFz IGFscmVhZHkgY2hhbmdlZC4KKy0tIFRoaXMgbWVhbnMgdGhlIGNvbXBhcmlzb24gc2VlcyBvbGQg dHN2ZWN0b3IgdnMuIHRyaWdnZXItbW9kaWZpZWQgdHN2ZWN0b3IsCistLSBub3QgdGhlIG5hdHVy YWwgcHJvZ3Jlc3Npb24uIEhPVCB3b24ndCBoYXBwZW4gYmVjYXVzZSB0aGUgdHJpZ2dlciBjaGFu Z2VkCistLSB0aGUgaW5kZXhlZCBjb2x1bW4uCisKKy0tIFVwZGF0ZTogRXZlbiB0aG91Z2ggY29u dGVudCBrZXl3b3JkcyB1bmNoYW5nZWQsIHRyaWdnZXIgc3RpbGwgZmlyZXMKK1VQREFURSB0CitT RVQgY29udGVudCA9IHJlcGVhdCgnaW1wb3J0YW50IGtleXdvcmQgJywgMTAwMCkgfHwgcmVwZWF0 KCdkaWZmZXJlbnQgZmlsbGVyICcsIDEwMDAwKQorV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJP TSBjaGVja19ob3RfdXBkYXRlcygwKTsKKy0tIEV4cGVjdGVkOiAwIEhPVCAodHJpZ2dlciBtb2Rp ZmllcyBzZWFyY2hfdmVjLCBibG9ja2luZyBIT1QpCistLSBUaGlzIGlzIGFjdHVhbGx5IGNvcnJl Y3QgYmVoYXZpb3IgLSB0aGUgdHJpZ2dlciB1cGRhdGVkIGFuIGluZGV4ZWQgY29sdW1uCisKKy0t IFVwZGF0ZTogQ2hhbmdlIGluZGV4ZWQga2V5d29yZHMKK1VQREFURSB0CitTRVQgY29udGVudCA9 IHJlcGVhdCgnY3JpdGljYWwga2V5d29yZCAnLCAxMDAwKSB8fCByZXBlYXQoJ2RpZmZlcmVudCBm aWxsZXIgJywgMTAwMDApCitXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGNoZWNrX2hvdF91 cGRhdGVzKDApOworLS0gRXhwZWN0ZWQ6IDAgSE9UIChpbmRleCBrZXlzIGNoYW5nZWQpCisKKy0t IFZlcmlmeSBxdWVyeSBjb3JyZWN0bmVzcworU0VMRUNUIGNvdW50KCopIEZST00gdCBXSEVSRSBz ZWFyY2hfdmVjIEBAIHRvX3RzcXVlcnkoJ2NyaXRpY2FsJyk7CistLSBFeHBlY3RlZDogMSByb3cK KworRFJPUCBUQUJMRSB0IENBU0NBREU7CisKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVEVTVDogR0lOIHdp dGggQXJyYXkgb2YgTGFyZ2UgU3RyaW5ncworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ1JFQVRFIFRBQkxFIHQoaWQg SU5ULCB0YWdzIFRFWFRbXSkKKyAgICBXSVRIIChhdXRvdmFjdXVtX2VuYWJsZWQgPSBvZmYsIGZp bGxmYWN0b3IgPSA3MCk7CitDUkVBVEUgSU5ERVggdF9naW4gT04gdCBVU0lORyBnaW4odGFncyk7 CisKKy0tIEluc2VydCB3aXRoIGxhcmdlIGFycmF5IGVsZW1lbnRzIChtaWdodCBiZSBUT0FTVGVk KQorSU5TRVJUIElOVE8gdCAoaWQsIHRhZ3MpIFZBTFVFUworICAgICgxLCBBUlJBWVtyZXBlYXQo J3RhZzEnLCAxMDAwKSwgcmVwZWF0KCd0YWcyJywgMTAwMCldKTsKKworLS0gVXBkYXRlOiBDaGFu Z2UgdG8gZGlmZmVyZW50IGxhcmdlIHZhbHVlcyAtIE5PVCBIT1QKK1VQREFURSB0CitTRVQgdGFn cyA9IEFSUkFZW3JlcGVhdCgndGFnMycsIDEwMDApLCByZXBlYXQoJ3RhZzQnLCAxMDAwKV0KK1dI RVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gY2hlY2tfaG90X3VwZGF0ZXMoMCk7CistLSBFeHBl Y3RlZDogMCBIT1QgKGtleXMgYWN0dWFsbHkgY2hhbmdlZCkKKworLS0gVXBkYXRlOiBLZWVwIHNh bWUgdGFnIHZhbHVlcywganVzdCByZW9yZGVyIC0gU0hPVUxEIEJFIEhPVAorLS0gKEdJTiBpcyBv cmRlci1pbnNlbnNpdGl2ZTogYm90aCBbdGFnMyx0YWc0XSBhbmQgW3RhZzQsdGFnM10KKy0tIGV4 dHJhY3QgdG8gdGhlIHNhbWUgc29ydGVkIGtleSBzZXQgWyd0YWczJywndGFnNCddKQorVVBEQVRF IHQKK1NFVCB0YWdzID0gQVJSQVlbcmVwZWF0KCd0YWc0JywgMTAwMCksIHJlcGVhdCgndGFnMycs IDEwMDApXQorV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygx KTsKKy0tIEV4cGVjdGVkOiAxIEhPVCAoR0lOIGtleXMgc2VtYW50aWNhbGx5IGlkZW50aWNhbCkK KworLS0gVXBkYXRlOiBSZW1vdmUgYW4gZWxlbWVudCAtIE5PVCBIT1QgKGtleXMgY2hhbmdlZCkK K1VQREFURSB0CitTRVQgdGFncyA9IEFSUkFZW3JlcGVhdCgndGFnNCcsIDEwMDApXQorV0hFUkUg aWQgPSAxOworU0VMRUNUICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygxKTsKKy0tIEV4cGVjdGVk OiBTdGlsbCAxIEhPVCAobm90IHRoaXMgb25lKQorCitEUk9QIFRBQkxFIHQgQ0FTQ0FERTsKKwor CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLSBCUklOIEluZGV4IHdpdGggUGFydGlhbCBQcmVkaWNhdGUKKy0tID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KK0NSRUFURSBUQUJMRSB0KAorICAgIGlkIElOVCBQUklNQVJZIEtFWSwKKyAgICB2YWx1 ZSBJTlQsCisgICAgZGVzY3JpcHRpb24gVEVYVAorKSBXSVRIIChhdXRvdmFjdXVtX2VuYWJsZWQg PSBvZmYsIGZpbGxmYWN0b3IgPSA3MCk7CisKK0NSRUFURSBJTkRFWCB0X2JyaW5fcGFydGlhbF9p ZHggT04gdCBVU0lORyBicmluKHZhbHVlKSBXSEVSRSB2YWx1ZSA+IDEwMDsKKworSU5TRVJUIElO VE8gdCBWQUxVRVMgKDEsIDUwLCAnYmVsb3cgcmFuZ2UnKTsKKworLS0gVGVzdCAxOiBPdXRzaWRl IHByZWRpY2F0ZQorVVBEQVRFIHQgU0VUIGRlc2NyaXB0aW9uID0gJ3VwZGF0ZWQnIFdIRVJFIGlk ID0gMTsKK1NFTEVDVCAqIEZST00gY2hlY2tfaG90X3VwZGF0ZXMoMSk7CisKKy0tIFZhbGlkYXRl OiBQcmVkaWNhdGUgcXVlcnkgcmV0dXJucyAwIHJvd3MKK1NFTEVDVCBDT1VOVCgqKSBhcyBjbnQg RlJPTSB0IFdIRVJFIHZhbHVlID4gMTAwOworCistLSBUZXN0IDI6IFRyYW5zaXRpb24gaW50byBw cmVkaWNhdGUKK1VQREFURSB0IFNFVCB2YWx1ZSA9IDE1MCBXSEVSRSBpZCA9IDE7CitTRUxFQ1Qg KiBGUk9NIGNoZWNrX2hvdF91cGRhdGVzKDIpOworCistLSBWYWxpZGF0ZTogUHJlZGljYXRlIHF1 ZXJ5IHJldHVybnMgMSByb3cgd2l0aCBjb3JyZWN0IHZhbHVlCitTRUxFQ1QgQ09VTlQoKikgYXMg Y250LCBNQVgodmFsdWUpIGFzIG1heF92YWwgRlJPTSB0IFdIRVJFIHZhbHVlID4gMTAwOworCist LSBUZXN0IDM6IEluc2lkZSBwcmVkaWNhdGUsIHZhbHVlIGNoYW5nZXMKK1VQREFURSB0IFNFVCB2 YWx1ZSA9IDE2MCwgZGVzY3JpcHRpb24gPSAndXBkYXRlZCBhZ2FpbicgV0hFUkUgaWQgPSAxOwor U0VMRUNUICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygzKTsKKworLS0gVmFsaWRhdGU6IFVwZGF0 ZWQgdmFsdWUgKDE2MCkgaXMgcmV0dXJuZWQKK1NFTEVDVCBDT1VOVCgqKSBhcyBjbnQsIE1BWCh2 YWx1ZSkgYXMgbWF4X3ZhbCBGUk9NIHQgV0hFUkUgdmFsdWUgPiAxMDA7CisKKy0tIFRlc3QgNDog VHJhbnNpdGlvbiBvdXQgb2YgcHJlZGljYXRlCitVUERBVEUgdCBTRVQgdmFsdWUgPSA1MCBXSEVS RSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGNoZWNrX2hvdF91cGRhdGVzKDQpOworCitTRUxFQ1Qg Q09VTlQoKikgYXMgY250IEZST00gdCBXSEVSRSB2YWx1ZSA+IDEwMDsKKworU0VMRUNUIGlkLCB2 YWx1ZSwgZGVzY3JpcHRpb24gRlJPTSB0OworCitEUk9QIFRBQkxFIHQgQ0FTQ0FERTsKKworCist LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLSBIQVNIIEluZGV4IChTaW1wbGUgQ29sdW1uKQorLS0gPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ1JF QVRFIFRBQkxFIHQoaWQgSU5ULCBjb2RlIFZBUkNIQVIoMjApLCBkZXNjcmlwdGlvbiBURVhUKQor ICAgIFdJVEggKGF1dG92YWN1dW1fZW5hYmxlZCA9IG9mZiwgZmlsbGZhY3RvciA9IDcwKTsKK0NS RUFURSBJTkRFWCB0X2hhc2hfaWR4IE9OIHQgVVNJTkcgaGFzaChjb2RlKTsKK0lOU0VSVCBJTlRP IHQgVkFMVUVTICgxLCAnQ09ERTAwMScsICdpbml0aWFsJyk7CisKKy0tIFVwZGF0ZSBub24taW5k ZXhlZCBjb2x1bW4gLSBzaG91bGQgYmUgSE9UCitVUERBVEUgdCBTRVQgZGVzY3JpcHRpb24gPSAn dXBkYXRlZCcgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygx KTsKKworLS0gVXBkYXRlIGluZGV4ZWQgY29sdW1uIC0gSEFTSCBpbmRleCByZXF1aXJlcyB1cGRh dGUsIE5PVCBIT1QKK1VQREFURSB0IFNFVCBjb2RlID0gJ0NPREUwMDInIFdIRVJFIGlkID0gMTsK K1NFTEVDVCAqIEZST00gY2hlY2tfaG90X3VwZGF0ZXMoMSk7CisKKy0tIFVwZGF0ZSBib3RoIC0g Tk9UIEhPVAorVVBEQVRFIHQgU0VUIGNvZGUgPSAnQ09ERTAwMycsIGRlc2NyaXB0aW9uID0gJ2No YW5nZWQnIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gY2hlY2tfaG90X3VwZGF0ZXMoMSk7 CisKKy0tIEJhY2sgdG8gb3JpZ2luYWwgY29kZSAtIE5PVCBIT1QgKGRpZmZlcmVudCBoYXNoIGJ1 Y2tldCBsb2NhdGlvbikKK1VQREFURSB0IFNFVCBjb2RlID0gJ0NPREUwMDEnIFdIRVJFIGlkID0g MTsKK1NFTEVDVCAqIEZST00gY2hlY2tfaG90X3VwZGF0ZXMoMSk7CisKK0RST1AgVEFCTEUgdCBD QVNDQURFOworCisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEhBU0ggSW5kZXggb24gRXhwcmVzc2lvbgorLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorQ1JFQVRFIFRBQkxFIHQoaWQgSU5ULCBlbWFpbCBURVhULCBkYXRhIEpTT05CKQor ICAgIFdJVEggKGF1dG92YWN1dW1fZW5hYmxlZCA9IG9mZiwgZmlsbGZhY3RvciA9IDcwKTsKK0NS RUFURSBJTkRFWCB0X2hhc2hfbG93ZXJfZW1haWxfaWR4IE9OIHQgVVNJTkcgSEFTSChsb3dlcihl bWFpbCkpOworSU5TRVJUIElOVE8gdCBWQUxVRVMgKDEsICdBbGljZUBFeGFtcGxlLmNvbScsICd7 InN0YXR1cyI6ICJuZXcifScpOworCistLSBVcGRhdGUgbm9uLWluZGV4ZWQgZmllbGQgLSBzaG91 bGQgYmUgSE9UCitVUERBVEUgdCBTRVQgZGF0YSA9ICd7InN0YXR1cyI6ICJhY3RpdmUifScgV0hF UkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygxKTsKKworLS0gVXBk YXRlIGVtYWlsIHdpdGggY2FzZSBjaGFuZ2Ugb25seSAoc2FtZSBsb3dlcmNhc2UpIC0gc2hvdWxk IGJlIEhPVAorVVBEQVRFIHQgU0VUIGVtYWlsID0gJ2FsaWNlQGV4YW1wbGUuY29tJyBXSEVSRSBp ZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGNoZWNrX2hvdF91cGRhdGVzKDIpOworCistLSBVcGRhdGUg ZW1haWwgdG8gZGlmZmVyZW50IGxvd2VyY2FzZSAtIE5PVCBIT1QKK1VQREFURSB0IFNFVCBlbWFp bCA9ICdib2JAZXhhbXBsZS5jb20nIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gY2hlY2tf aG90X3VwZGF0ZXMoMik7CisKK0RST1AgVEFCTEUgdCBDQVNDQURFOworCisKKy0tID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tIE11bHRpcGxlIEhBU0ggSW5kZXhlcworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ1JFQVRFIFRBQkxFIHQoaWQg SU5ULCBjYXRlZ29yeSBWQVJDSEFSLCBzdGF0dXMgVkFSQ0hBUiwgdmFsdWUgSU5UKQorICAgIFdJ VEggKGF1dG92YWN1dW1fZW5hYmxlZCA9IG9mZiwgZmlsbGZhY3RvciA9IDcwKTsKK0NSRUFURSBJ TkRFWCB0X2hhc2hfY2F0ZWdvcnlfaWR4IE9OIHQgVVNJTkcgaGFzaChjYXRlZ29yeSk7CitDUkVB VEUgSU5ERVggdF9oYXNoX3N0YXR1c19pZHggT04gdCBVU0lORyBoYXNoKHN0YXR1cyk7CitJTlNF UlQgSU5UTyB0IFZBTFVFUyAoMSwgJ2VsZWN0cm9uaWNzJywgJ2FjdGl2ZScsIDEwMCk7CisKKy0t IFVwZGF0ZSBub24taW5kZXhlZCBjb2x1bW4gLSBzaG91bGQgYmUgSE9UCitVUERBVEUgdCBTRVQg dmFsdWUgPSAxNTAgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBjaGVja19ob3RfdXBkYXRl cygxKTsKKworLS0gVXBkYXRlIG9uZSBpbmRleGVkIGNvbHVtbiAtIE5PVCBIT1QKK1VQREFURSB0 IFNFVCBjYXRlZ29yeSA9ICdib29rcycgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBjaGVj a19ob3RfdXBkYXRlcygxKTsKKworLS0gVXBkYXRlIG90aGVyIGluZGV4ZWQgY29sdW1uIC0gTk9U IEhPVAorVVBEQVRFIHQgU0VUIHN0YXR1cyA9ICdpbmFjdGl2ZScgV0hFUkUgaWQgPSAxOworU0VM RUNUICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygxKTsKKworLS0gVXBkYXRlIGJvdGggaW5kZXhl ZCBjb2x1bW5zIC0gTk9UIEhPVAorVVBEQVRFIHQgU0VUIGNhdGVnb3J5ID0gJ3ZpZGVvcycsIHN0 YXR1cyA9ICdwZW5kaW5nJyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGNoZWNrX2hvdF91 cGRhdGVzKDEpOworCitEUk9QIFRBQkxFIHQgQ0FTQ0FERTsKKworCistLSA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBC UklOIHZzIEhBU0ggQ29tcGFyaXNvbgorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ1JFQVRFIFRBQkxFIHRfYnJpbihp ZCBJTlQsIHZhbHVlIElOVCwgZGF0YSBURVhUKQorICAgIFdJVEggKGF1dG92YWN1dW1fZW5hYmxl ZCA9IG9mZiwgZmlsbGZhY3RvciA9IDcwKTsKK0NSRUFURSBUQUJMRSB0X2hhc2goaWQgSU5ULCB2 YWx1ZSBJTlQsIGRhdGEgVEVYVCkKKyAgICBXSVRIIChhdXRvdmFjdXVtX2VuYWJsZWQgPSBvZmYs IGZpbGxmYWN0b3IgPSA3MCk7CisKK0NSRUFURSBJTkRFWCB0X2JyaW5fdmFsdWVfaWR4IE9OIHRf YnJpbiBVU0lORyBicmluKHZhbHVlKTsKK0NSRUFURSBJTkRFWCB0X2hhc2hfdmFsdWVfaWR4IE9O IHRfaGFzaCBVU0lORyBoYXNoKHZhbHVlKTsKKworSU5TRVJUIElOVE8gdF9icmluIFZBTFVFUyAo MSwgMTAwLCAnaW5pdGlhbCcpOworSU5TRVJUIElOVE8gdF9oYXNoIFZBTFVFUyAoMSwgMTAwLCAn aW5pdGlhbCcpOworCistLSBTYW1lIHVwZGF0ZSBvbiBib3RoIC0gZGlmZmVyZW50IEhPVCBiZWhh dmlvciBleHBlY3RlZAorLS0gQlJJTjogbWlnaHQgYWxsb3cgSE9UIChyYW5nZSBzdW1tYXJ5IHVu Y2hhbmdlZCkKKy0tIEhBU0g6IGJsb2NrcyBIT1QgKGhhc2ggYnVja2V0IGNoYW5nZWQpCitVUERB VEUgdF9icmluIFNFVCB2YWx1ZSA9IDE1MCBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGNo ZWNrX2hvdF91cGRhdGVzKDEsICd0X2JyaW4nKTsKKy0tIEV4cGVjdGVkOiAxIEhPVCAoQlJJTiBh bGxvd3MgaXQgZm9yIHNpbmdsZSByb3cpCisKK1VQREFURSB0X2hhc2ggU0VUIHZhbHVlID0gMTUw IFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gY2hlY2tfaG90X3VwZGF0ZXMoMCwgJ3RfaGFz aCcpOworLS0gRXhwZWN0ZWQ6IDAgSE9UIChIQVNIIGJsb2NrcyBpdCkKKworRFJPUCBUQUJMRSB0 X2JyaW4gQ0FTQ0FERTsKK0RST1AgVEFCTEUgdF9oYXNoIENBU0NBREU7CisKKworLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0gSEFTSCBJbmRleCB3aXRoIE5VTEwgVmFsdWVzCistLSA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDUkVBVEUgVEFC TEUgdChpZCBJTlQsIGNhdGVnb3J5IFZBUkNIQVIsIGRhdGEgVEVYVCkKKyAgICBXSVRIIChhdXRv dmFjdXVtX2VuYWJsZWQgPSBvZmYsIGZpbGxmYWN0b3IgPSA3MCk7CitDUkVBVEUgSU5ERVggdF9o YXNoX2NhdGVnb3J5X2lkeCBPTiB0IFVTSU5HIGhhc2goY2F0ZWdvcnkpOworSU5TRVJUIElOVE8g dCBWQUxVRVMgKDEsICdlbGVjdHJvbmljcycsICdpbml0aWFsJyk7CisKKy0tIFVwZGF0ZSBpbmRl eGVkIGNvbHVtbiB0byBOVUxMIC0gTk9UIEhPVCAoaGFzaCB2YWx1ZSBjaGFuZ2VkKQorVVBEQVRF IHQgU0VUIGNhdGVnb3J5ID0gTlVMTCBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGNoZWNr X2hvdF91cGRhdGVzKDApOworLS0gRXhwZWN0ZWQ6IDAgSE9UCisKKy0tIFVwZGF0ZSBpbmRleGVk IGNvbHVtbiBmcm9tIE5VTEwgdG8gdmFsdWUgLSBOT1QgSE9UCitVUERBVEUgdCBTRVQgY2F0ZWdv cnkgPSAnYm9va3MnIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gY2hlY2tfaG90X3VwZGF0 ZXMoMCk7CistLSBFeHBlY3RlZDogMCBIT1QKKworLS0gVXBkYXRlIG5vbi1pbmRleGVkIGNvbHVt biAtIHNob3VsZCBiZSBIT1QKK1VQREFURSB0IFNFVCBkYXRhID0gJ3VwZGF0ZWQnIFdIRVJFIGlk ID0gMTsKK1NFTEVDVCAqIEZST00gY2hlY2tfaG90X3VwZGF0ZXMoMSk7CistLSBFeHBlY3RlZDog MSBIT1QKKworRFJPUCBUQUJMRSB0IENBU0NBREU7CisKKworLS0gPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gQlJJTiBv biBKU09OQiBGaWVsZAorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorQ1JFQVRFIFRBQkxFIHQoaWQgSU5ULCBtZXRyaWNz IEpTT05CKQorICAgIFdJVEggKGF1dG92YWN1dW1fZW5hYmxlZCA9IG9mZiwgZmlsbGZhY3RvciA9 IDcwKTsKKy0tIEJSSU4gZG9lc24ndCBkaXJlY3RseSBzdXBwb3J0IEpTT05CLCBidXQgd2UgY2Fu IHRlc3Qgb24gZXhwcmVzc2lvbgorQ1JFQVRFIElOREVYIHRfYnJpbl9jb3VudF9pZHggT04gdCBV U0lORyBicmluKAorICAgIENBU1QobWV0cmljcy0+Pidjb3VudCcgQVMgSU5URUdFUikKKyk7CitJ TlNFUlQgSU5UTyB0IFZBTFVFUyAoMSwgJ3siY291bnQiOiAiMTAwIiwgInRpbWVzdGFtcCI6ICIy MDI0LTAxLTAxIn0nKTsKKworLS0gVXBkYXRlIG5vbi1pbmRleGVkIEpTT05CIGZpZWxkIC0gc2hv dWxkIGJlIEhPVAorVVBEQVRFIHQgU0VUIG1ldHJpY3MgPSAneyJjb3VudCI6ICIxMDAiLCAidGlt ZXN0YW1wIjogIjIwMjQtMDEtMDIifScgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBjaGVj a19ob3RfdXBkYXRlcygxKTsKKy0tIEV4cGVjdGVkOiAxIEhPVAorCistLSBVcGRhdGUgaW5kZXhl ZCBmaWVsZCAtIEJSSU4gYWxsb3dzIEhPVCBmb3Igc2luZ2xlIHJvdworVVBEQVRFIHQgU0VUIG1l dHJpY3MgPSAneyJjb3VudCI6ICIxNTAiLCAidGltZXN0YW1wIjogIjIwMjQtMDEtMDIifScgV0hF UkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygyKTsKKy0tIEV4cGVj dGVkOiAyIEhPVCAoQlJJTiBwZXJtaXRzIHNpbmdsZS1yb3cgdXBkYXRlcykKKworRFJPUCBUQUJM RSB0IENBU0NBREU7CisKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gTWl4ZWQgQlJJTiArIEhBU0ggb24gU2Ft ZSBUYWJsZQorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorQ1JFQVRFIFRBQkxFIHQoaWQgSU5ULCBjYXRlZ29yeSBWQVJD SEFSLCB0aW1lc3RhbXAgVElNRVNUQU1QLCBwcmljZSBOVU1FUklDLCBkYXRhIFRFWFQpCisgICAg V0lUSCAoYXV0b3ZhY3V1bV9lbmFibGVkID0gb2ZmLCBmaWxsZmFjdG9yID0gNzApOworQ1JFQVRF IElOREVYIHRfYnJpbl90aW1lc3RhbXBfaWR4IE9OIHQgVVNJTkcgYnJpbih0aW1lc3RhbXApOwor Q1JFQVRFIElOREVYIHRfaGFzaF9jYXRlZ29yeV9pZHggT04gdCBVU0lORyBoYXNoKGNhdGVnb3J5 KTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgxLCAnYm9va3MnLCAnMjAyNC0wMS0wMSAxMDowMDow MCcsIDI5Ljk5LCAnaW5pdGlhbCcpOworCistLSBVcGRhdGUgbm9uLWluZGV4ZWQgY29sdW1uIC0g c2hvdWxkIGJlIEhPVAorVVBEQVRFIHQgU0VUIGRhdGEgPSAndXBkYXRlZCcgV0hFUkUgaWQgPSAx OworU0VMRUNUICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygxKTsKKy0tIEV4cGVjdGVkOiAxIEhP VAorCistLSBVcGRhdGUgQlJJTiBpbmRleGVkIGNvbHVtbiAtIGFsbG93cyBIT1QKK1VQREFURSB0 IFNFVCB0aW1lc3RhbXAgPSAnMjAyNC0wMS0wMiAxMDowMDowMCcgV0hFUkUgaWQgPSAxOworU0VM RUNUICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygyKTsKKy0tIEV4cGVjdGVkOiAyIEhPVAorCist LSBVcGRhdGUgSEFTSCBpbmRleGVkIGNvbHVtbiAtIGJsb2NrcyBIT1QKK1VQREFURSB0IFNFVCBj YXRlZ29yeSA9ICd2aWRlb3MnIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gY2hlY2tfaG90 X3VwZGF0ZXMoMik7CistLSBFeHBlY3RlZDogMiBIT1QgKEhBU0ggYmxvY2tzIGl0KQorCistLSBV cGRhdGUgcHJpY2UgKG5vbi1pbmRleGVkKSAtIHNob3VsZCBiZSBIT1QKK1VQREFURSB0IFNFVCBw cmljZSA9IDM5Ljk5IFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gY2hlY2tfaG90X3VwZGF0 ZXMoMyk7CistLSBFeHBlY3RlZDogMyBIT1QKKworRFJPUCBUQUJMRSB0IENBU0NBREU7CisKKwor LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0gSW5kZXggYm90aCBvbiBhIGZpZWxkIGluIGEgSlNPTkIgZG9jdW1lbnQs IGFuZCB0aGUgZG9jdW1lbnQKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NSRUFURSBUQUJMRSB0KGlkIElOVCBQUklN QVJZIEtFWSwgZG9jcyBKU09OQikgV0lUSCAoYXV0b3ZhY3V1bV9lbmFibGVkID0gb2ZmLCBmaWxs ZmFjdG9yID0gNzApOworQ1JFQVRFIElOREVYIHRfZG9jc19pZHggT04gdCgoZG9jcy0+J25hbWUn KSk7CitDUkVBVEUgSU5ERVggdF9kb2NzX2NvbF9pZHggT04gdChkb2NzKTsKK0lOU0VSVCBJTlRP IHQgVkFMVUVTICgxLCAneyJuYW1lIjogImpvaG4iLCAiZGF0YSI6ICJzb21lIGRhdGEifScpOwor CistLSBVcGRhdGUgaW1wYWN0cyBpbmRleCBvbiB3aG9sZSBkb2NtZW50IGF0dHJpYnV0ZSwgY2Fu J3QgZ28gSE9UCitVUERBVEUgdCBTRVQgZG9jcz0neyJuYW1lIjogImpvaG4iLCAiZGF0YSI6ICJz b21lIG90aGVyIGRhdGEifScgV0hFUkUgaWQ9MTsKK1NFTEVDVCAqIEZST00gY2hlY2tfaG90X3Vw ZGF0ZXMoMCk7CisKK0RST1AgVEFCTEUgdCBDQVNDQURFOworCisKKy0tIENsZWFudXAKK0RST1Ag RlVOQ1RJT04gY2hlY2tfaG90X3VwZGF0ZXMoaW50LCB0ZXh0LCB0ZXh0KTsKK0RST1AgQ09MTEFU SU9OIGNhc2VfaW5zZW5zaXRpdmU7CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDA5ZTdm MWQ0MjBlLi42Mzc5OTBhYzI1MiAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTM5OSw2 ICszOTksNyBAQCBDYWNoZWRGdW5jdGlvbkNvbXBpbGVDYWxsYmFjawogQ2FjaGVkRnVuY3Rpb25E ZWxldGVDYWxsYmFjawogQ2FjaGVkRnVuY3Rpb25IYXNoRW50cnkKIENhY2hlZEZ1bmN0aW9uSGFz aEtleQorQ2FjaGVkSW5kZXhEYXR1bQogQ2FjaGVkUGxhbgogQ2FjaGVkUGxhblNvdXJjZQogQ2Fs bENvbnRleHQKLS0gCjIuNTEuMgoK --696012d3_36a751cf_1975--