Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nt0x9-0005z4-5S for pgsql-hackers@arkaria.postgresql.org; Mon, 23 May 2022 05:50:03 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nt0x8-0007CH-2p for pgsql-hackers@arkaria.postgresql.org; Mon, 23 May 2022 05:50:02 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nt0x7-0007Bm-BK for pgsql-hackers@lists.postgresql.org; Mon, 23 May 2022 05:50:01 +0000 Received: from wout1-smtp.messagingengine.com ([64.147.123.24]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nt0x2-0006y7-LP for pgsql-hackers@postgresql.org; Mon, 23 May 2022 05:50:00 +0000 Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.west.internal (Postfix) with ESMTP id 54281320094E; Mon, 23 May 2022 01:49:55 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute3.internal (MEProxy); Mon, 23 May 2022 01:49:55 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :mime-version:references:reply-to:sender:subject:subject:to:to :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm1; t=1653284994; x=1653371394; bh=OHEgebB44PEANEWK3e1kbGJ8b6Fk PS15UOdzoXXSmOA=; b=YQOcUVvzmewx14bNcHYd2ZlwEZLtBqVcjR5Xm1wCdZS+ PTtSzzR2mN69+sToDlGou2dTUCAmaUewUccEkHZkuJYRIFntnx6v/0C6up3N3bNf gM+rIXYmApsnlKJH6eCjV5+KRIQL2FMpFq90gHOWhkHPGRXOv5IcEtW0qJPzt111 lxJi2UVpLbvtHqoDbrx3ULblt3Y/D7cqgznq7EREmiIHMXY3jvHz0r1+vdeBEVaP YyJVrkirmjSTaz9+yiMy1wFU+Ak0n08br8gSjCyTezS8/ei+TiKmsV+Zd0CK+Zv3 j97WH4fohOg9QiclGaHO+UaIXUoFsDLxBavoRdX1Cw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvfedrieelgdellecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecunecujfgurheptgfkffggfgfuhffvvehfjgesmhdtre ertdefjeenucfhrhhomheprfgvthgvrhcugfhishgvnhhtrhgruhhtuceophgvthgvrhdr vghishgvnhhtrhgruhhtsegvnhhtvghrphhrihhsvggusgdrtghomheqnecuggftrfgrth htvghrnhepjefggfeuuddvuefgueeuieeggfffgfejfefgvdekteevhfdugefhhfevtddv ffevnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepph gvthgvrhdrvghishgvnhhtrhgruhhtsegvnhhtvghrphhrihhsvggusgdrtghomh X-ME-Proxy: Feedback-ID: i131946ab:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 23 May 2022 01:49:53 -0400 (EDT) Content-Type: multipart/mixed; boundary="------------OmXBbY9gLek3zU1qqbyFxau4" Message-ID: Date: Mon, 23 May 2022 07:49:52 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.9.0 Subject: Re: automatically generating node support functions Content-Language: en-US From: Peter Eisentraut To: David Rowley Cc: Tom Lane , pgsql-hackers References: <2f876203-7142-fa71-6d22-6ce00eb26869@enterprisedb.com> <50fedc80-4104-bdc8-d777-04f030fc550f@dunslane.net> <7848b872-7a10-67b2-b55f-7c9c475ae863@enterprisedb.com> <40a2e977-98ba-0c01-af6c-9dfb39e864ba@enterprisedb.com> <812ea8eb-6827-ba32-6ec0-6714f7ffa5dd@enterprisedb.com> <2905876.1644858587@sss.pgh.pa.us> <968928d9-a526-a1b5-dc36-0355632a843e@enterprisedb.com> In-Reply-To: <968928d9-a526-a1b5-dc36-0355632a843e@enterprisedb.com> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------OmXBbY9gLek3zU1qqbyFxau4 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 25.03.22 14:08, Peter Eisentraut wrote: >> 2. Some of these comment lines have become pretty long after having >> added the attribute macro. >> >> e.g. >> >> PlannerInfo *subroot pg_node_attr(readwrite_ignore); /* modified >> "root" for planning the subquery; >>     not printed, too large, not interesting enough */ >> >> I wonder if you'd be better to add a blank line above, then put the >> comment on its own line, i.e: >> >>   /* modified "root" for planning the subquery; not printed, too large, >> not interesting enough */ >> PlannerInfo *subroot pg_node_attr(readwrite_ignore); > > Yes, my idea was to make a separate patch first that reformats many of > the structs and comments in that way. Here is a patch that reformats the relevant (and a few more) comments that way. This has been run through pgindent, so the formatting should be stable. --------------OmXBbY9gLek3zU1qqbyFxau4 Content-Type: text/plain; charset=UTF-8; name="0001-Reformat-node-comments.patch" Content-Disposition: attachment; filename="0001-Reformat-node-comments.patch" Content-Transfer-Encoding: base64 RnJvbSA1ZWVhNjk0MTdlNTI0Nzc5ZTJlM2NjNTE2NDk2NjY0NmNiMmMyYzBlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCAyMyBNYXkgMjAyMiAwNzo0MDoxMiArMDIwMApTdWJqZWN0 OiBbUEFUQ0hdIFJlZm9ybWF0IG5vZGUgY29tbWVudHMKCi0tLQogc3JjL2luY2x1ZGUvbm9k ZXMvcGFyc2Vub2Rlcy5oIHwgICAzICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMu aCAgfCA2ODYgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiBzcmMvaW5jbHVk ZS9ub2Rlcy9wbGFubm9kZXMuaCAgfCA0MjMgKysrKysrKysrKysrKystLS0tLS0KIHNyYy9p bmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oICB8IDE2NiArKysrKy0tLQogNCBmaWxlcyBjaGFu Z2VkLCA4OTkgaW5zZXJ0aW9ucygrKSwgMzc5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3Bh cnNlbm9kZXMuaAppbmRleCA3M2Y2MzViNDU1Li5mOTNkODY2NTQ4IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oCkBAIC0xMjMsNyArMTIzLDggQEAgdHlwZWRlZiBzdHJ1Y3QgUXVlcnkK IAogCVF1ZXJ5U291cmNlIHF1ZXJ5U291cmNlOwkvKiB3aGVyZSBkaWQgSSBjb21lIGZyb20/ ICovCiAKLQl1aW50NjQJCXF1ZXJ5SWQ7CQkvKiBxdWVyeSBpZGVudGlmaWVyIChjYW4gYmUg c2V0IGJ5IHBsdWdpbnMpICovCisJLyogcXVlcnkgaWRlbnRpZmllciAoY2FuIGJlIHNldCBi eSBwbHVnaW5zKSAqLworCXVpbnQ2NAkJcXVlcnlJZDsKIAogCWJvb2wJCWNhblNldFRhZzsJ CS8qIGRvIEkgc2V0IHRoZSBjb21tYW5kIHJlc3VsdCB0YWc/ICovCiAKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0 aG5vZGVzLmgKaW5kZXggYTZlNWRiNGVlYy4uYjg4Y2ZiOGRjMCAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0 aG5vZGVzLmgKQEAgLTIyNiw4ICsyMjYsOCBAQCBzdHJ1Y3QgUGxhbm5lckluZm8KIAkgKiBl dmVuIHdoZW4gdXNpbmcgdGhlIGhhc2ggdGFibGUgZm9yIGxvb2t1cHM7IHRoaXMgc2ltcGxp ZmllcyBsaWZlIGZvcgogCSAqIEdFUU8uCiAJICovCi0JTGlzdAkgICAqam9pbl9yZWxfbGlz dDsJLyogbGlzdCBvZiBqb2luLXJlbGF0aW9uIFJlbE9wdEluZm9zICovCi0Jc3RydWN0IEhU QUIgKmpvaW5fcmVsX2hhc2g7IC8qIG9wdGlvbmFsIGhhc2h0YWJsZSBmb3Igam9pbiByZWxh dGlvbnMgKi8KKwlMaXN0CSAgICpqb2luX3JlbF9saXN0OworCXN0cnVjdCBIVEFCICpqb2lu X3JlbF9oYXNoOwogCiAJLyoKIAkgKiBXaGVuIGRvaW5nIGEgZHluYW1pYy1wcm9ncmFtbWlu Zy1zdHlsZSBqb2luIHNlYXJjaCwgam9pbl9yZWxfbGV2ZWxba10KQEAgLTMyOSwxMSArMzI5 LDE2IEBAIHN0cnVjdCBQbGFubmVySW5mbwogCSAqLwogCUxpc3QJICAgKnVwZGF0ZV9jb2xu b3M7CiAKLQkvKiBGaWVsZHMgZmlsbGVkIGR1cmluZyBjcmVhdGVfcGxhbigpIGZvciB1c2Ug aW4gc2V0cmVmcy5jICovCi0JQXR0ck51bWJlciAqZ3JvdXBpbmdfbWFwOwkvKiBmb3IgR3Jv dXBpbmdGdW5jIGZpeHVwICovCi0JTGlzdAkgICAqbWlubWF4X2FnZ3M7CS8qIExpc3Qgb2Yg TWluTWF4QWdnSW5mb3MgKi8KKwkvKgorCSAqIEZpZWxkcyBmaWxsZWQgZHVyaW5nIGNyZWF0 ZV9wbGFuKCkgZm9yIHVzZSBpbiBzZXRyZWZzLmMKKwkgKi8KKwkvKiBmb3IgR3JvdXBpbmdG dW5jIGZpeHVwICovCisJQXR0ck51bWJlciAqZ3JvdXBpbmdfbWFwOworCS8qIExpc3Qgb2Yg TWluTWF4QWdnSW5mb3MgKi8KKwlMaXN0CSAgICptaW5tYXhfYWdnczsKIAotCU1lbW9yeUNv bnRleHQgcGxhbm5lcl9jeHQ7CS8qIGNvbnRleHQgaG9sZGluZyBQbGFubmVySW5mbyAqLwor CS8qIGNvbnRleHQgaG9sZGluZyBQbGFubmVySW5mbyAqLworCU1lbW9yeUNvbnRleHQgcGxh bm5lcl9jeHQ7CiAKIAlDYXJkaW5hbGl0eSB0b3RhbF90YWJsZV9wYWdlczsJLyogIyBvZiBw YWdlcyBpbiBhbGwgbm9uLWR1bW15IHRhYmxlcyBvZgogCQkJCQkJCQkJICogcXVlcnkgKi8K QEAgLTM2OSw5ICszNzQsMTIgQEAgc3RydWN0IFBsYW5uZXJJbmZvCiAJUmVsaWRzCQljdXJP dXRlclJlbHM7CS8qIG91dGVyIHJlbHMgYWJvdmUgY3VycmVudCBub2RlICovCiAJTGlzdAkg ICAqY3VyT3V0ZXJQYXJhbXM7IC8qIG5vdC15ZXQtYXNzaWduZWQgTmVzdExvb3BQYXJhbXMg Ki8KIAotCS8qIFRoZXNlIGZpZWxkcyBhcmUgd29ya3NwYWNlIGZvciBzZXRyZWZzLmMgKi8K LQlib29sCSAgICppc0FsdFN1YnBsYW47CS8qIGFycmF5IGNvcnJlc3BvbmRpbmcgdG8gZ2xv Yi0+c3VicGxhbnMgKi8KLQlib29sCSAgICppc1VzZWRTdWJwbGFuOwkvKiBhcnJheSBjb3Jy ZXNwb25kaW5nIHRvIGdsb2ItPnN1YnBsYW5zICovCisJLyoKKwkgKiBUaGVzZSBmaWVsZHMg YXJlIHdvcmtzcGFjZSBmb3Igc2V0cmVmcy5jLiAgRWFjaCBpcyBhbiBhcnJheQorCSAqIGNv cnJlc3BvbmRpbmcgdG8gZ2xvYi0+c3VicGxhbnMuCisJICovCisJYm9vbAkgICAqaXNBbHRT dWJwbGFuOworCWJvb2wJICAgKmlzVXNlZFN1YnBsYW47CiAKIAkvKiBvcHRpb25hbCBwcml2 YXRlIGRhdGEgZm9yIGpvaW5fc2VhcmNoX2hvb2ssIGUuZy4sIEdFUU8gKi8KIAl2b2lkCSAg ICpqb2luX3NlYXJjaF9wcml2YXRlOwpAQCAtNjc4LDIxICs2ODYsMzcgQEAgdHlwZWRlZiBz dHJ1Y3QgUmVsT3B0SW5mbwogCiAJUmVsT3B0S2luZAlyZWxvcHRraW5kOwogCi0JLyogYWxs IHJlbGF0aW9ucyBpbmNsdWRlZCBpbiB0aGlzIFJlbE9wdEluZm8gKi8KLQlSZWxpZHMJCXJl bGlkczsJCQkvKiBzZXQgb2YgYmFzZSByZWxpZHMgKHJhbmdldGFibGUgaW5kZXhlcykgKi8K KwkvKgorCSAqIGFsbCByZWxhdGlvbnMgaW5jbHVkZWQgaW4gdGhpcyBSZWxPcHRJbmZvOyBz ZXQgb2YgYmFzZSByZWxpZHMKKwkgKiAocmFuZ2V0YWJsZSBpbmRleGVzKQorCSAqLworCVJl bGlkcwkJcmVsaWRzOwogCi0JLyogc2l6ZSBlc3RpbWF0ZXMgZ2VuZXJhdGVkIGJ5IHBsYW5u ZXIgKi8KLQlDYXJkaW5hbGl0eSByb3dzOwkJCS8qIGVzdGltYXRlZCBudW1iZXIgb2YgcmVz dWx0IHR1cGxlcyAqLworCS8qCisJICogc2l6ZSBlc3RpbWF0ZXMgZ2VuZXJhdGVkIGJ5IHBs YW5uZXIKKwkgKi8KKwkvKiBlc3RpbWF0ZWQgbnVtYmVyIG9mIHJlc3VsdCB0dXBsZXMgKi8K KwlDYXJkaW5hbGl0eSByb3dzOwogCi0JLyogcGVyLXJlbGF0aW9uIHBsYW5uZXIgY29udHJv bCBmbGFncyAqLwotCWJvb2wJCWNvbnNpZGVyX3N0YXJ0dXA7CS8qIGtlZXAgY2hlYXAtc3Rh cnR1cC1jb3N0IHBhdGhzPyAqLwotCWJvb2wJCWNvbnNpZGVyX3BhcmFtX3N0YXJ0dXA7IC8q IGRpdHRvLCBmb3IgcGFyYW1ldGVyaXplZCBwYXRocz8gKi8KLQlib29sCQljb25zaWRlcl9w YXJhbGxlbDsJLyogY29uc2lkZXIgcGFyYWxsZWwgcGF0aHM/ICovCisJLyoKKwkgKiBwZXIt cmVsYXRpb24gcGxhbm5lciBjb250cm9sIGZsYWdzCisJICovCisJLyoga2VlcCBjaGVhcC1z dGFydHVwLWNvc3QgcGF0aHM/ICovCisJYm9vbAkJY29uc2lkZXJfc3RhcnR1cDsKKwkvKiBk aXR0bywgZm9yIHBhcmFtZXRlcml6ZWQgcGF0aHM/ICovCisJYm9vbAkJY29uc2lkZXJfcGFy YW1fc3RhcnR1cDsKKwkvKiBjb25zaWRlciBwYXJhbGxlbCBwYXRocz8gKi8KKwlib29sCQlj b25zaWRlcl9wYXJhbGxlbDsKIAotCS8qIGRlZmF1bHQgcmVzdWx0IHRhcmdldGxpc3QgZm9y IFBhdGhzIHNjYW5uaW5nIHRoaXMgcmVsYXRpb24gKi8KLQlzdHJ1Y3QgUGF0aFRhcmdldCAq cmVsdGFyZ2V0OwkvKiBsaXN0IG9mIFZhcnMvRXhwcnMsIGNvc3QsIHdpZHRoICovCisJLyoK KwkgKiBkZWZhdWx0IHJlc3VsdCB0YXJnZXRsaXN0IGZvciBQYXRocyBzY2FubmluZyB0aGlz IHJlbGF0aW9uOyBsaXN0IG9mCisJICogVmFycy9FeHBycywgY29zdCwgd2lkdGgKKwkgKi8K KwlzdHJ1Y3QgUGF0aFRhcmdldCAqcmVsdGFyZ2V0OwogCi0JLyogbWF0ZXJpYWxpemF0aW9u IGluZm9ybWF0aW9uICovCisJLyoKKwkgKiBtYXRlcmlhbGl6YXRpb24gaW5mb3JtYXRpb24K KwkgKi8KIAlMaXN0CSAgICpwYXRobGlzdDsJCS8qIFBhdGggc3RydWN0dXJlcyAqLwogCUxp c3QJICAgKnBwaWxpc3Q7CQkvKiBQYXJhbVBhdGhJbmZvcyB1c2VkIGluIHBhdGhsaXN0ICov CiAJTGlzdAkgICAqcGFydGlhbF9wYXRobGlzdDsJLyogcGFydGlhbCBQYXRocyAqLwpAQCAt NzAxLDc5ICs3MjUsMTMyIEBAIHR5cGVkZWYgc3RydWN0IFJlbE9wdEluZm8KIAlzdHJ1Y3Qg UGF0aCAqY2hlYXBlc3RfdW5pcXVlX3BhdGg7CiAJTGlzdAkgICAqY2hlYXBlc3RfcGFyYW1l dGVyaXplZF9wYXRoczsKIAotCS8qIHBhcmFtZXRlcml6YXRpb24gaW5mb3JtYXRpb24gbmVl ZGVkIGZvciBib3RoIGJhc2UgcmVscyBhbmQgam9pbiByZWxzICovCi0JLyogKHNlZSBhbHNv IGxhdGVyYWxfdmFycyBhbmQgbGF0ZXJhbF9yZWZlcmVuY2VycykgKi8KLQlSZWxpZHMJCWRp cmVjdF9sYXRlcmFsX3JlbGlkczsJLyogcmVscyBkaXJlY3RseSBsYXRlcmFsbHkgcmVmZXJl bmNlZCAqLwotCVJlbGlkcwkJbGF0ZXJhbF9yZWxpZHM7IC8qIG1pbmltdW0gcGFyYW1ldGVy aXphdGlvbiBvZiByZWwgKi8KKwkvKgorCSAqIHBhcmFtZXRlcml6YXRpb24gaW5mb3JtYXRp b24gbmVlZGVkIGZvciBib3RoIGJhc2UgcmVscyBhbmQgam9pbiByZWxzCisJICogKHNlZSBh bHNvIGxhdGVyYWxfdmFycyBhbmQgbGF0ZXJhbF9yZWZlcmVuY2VycykKKwkgKi8KKwkvKiBy ZWxzIGRpcmVjdGx5IGxhdGVyYWxseSByZWZlcmVuY2VkICovCisJUmVsaWRzCQlkaXJlY3Rf bGF0ZXJhbF9yZWxpZHM7CisJLyogbWluaW11bSBwYXJhbWV0ZXJpemF0aW9uIG9mIHJlbCAq LworCVJlbGlkcwkJbGF0ZXJhbF9yZWxpZHM7CiAKLQkvKiBpbmZvcm1hdGlvbiBhYm91dCBh IGJhc2UgcmVsIChub3Qgc2V0IGZvciBqb2luIHJlbHMhKSAqLworCS8qCisJICogaW5mb3Jt YXRpb24gYWJvdXQgYSBiYXNlIHJlbCAobm90IHNldCBmb3Igam9pbiByZWxzISkKKwkgKi8K IAlJbmRleAkJcmVsaWQ7Ci0JT2lkCQkJcmVsdGFibGVzcGFjZTsJLyogY29udGFpbmluZyB0 YWJsZXNwYWNlICovCi0JUlRFS2luZAkJcnRla2luZDsJCS8qIFJFTEFUSU9OLCBTVUJRVUVS WSwgRlVOQ1RJT04sIGV0YyAqLwotCUF0dHJOdW1iZXIJbWluX2F0dHI7CQkvKiBzbWFsbGVz dCBhdHRybm8gb2YgcmVsIChvZnRlbiA8MCkgKi8KLQlBdHRyTnVtYmVyCW1heF9hdHRyOwkJ LyogbGFyZ2VzdCBhdHRybm8gb2YgcmVsICovCi0JUmVsaWRzCSAgICphdHRyX25lZWRlZDsJ LyogYXJyYXkgaW5kZXhlZCBbbWluX2F0dHIgLi4gbWF4X2F0dHJdICovCi0JaW50MzIJICAg KmF0dHJfd2lkdGhzOwkvKiBhcnJheSBpbmRleGVkIFttaW5fYXR0ciAuLiBtYXhfYXR0cl0g Ki8KLQlMaXN0CSAgICpsYXRlcmFsX3ZhcnM7CS8qIExBVEVSQUwgVmFycyBhbmQgUEhWcyBy ZWZlcmVuY2VkIGJ5IHJlbCAqLwotCVJlbGlkcwkJbGF0ZXJhbF9yZWZlcmVuY2VyczsJLyog cmVscyB0aGF0IHJlZmVyZW5jZSBtZSBsYXRlcmFsbHkgKi8KLQlMaXN0CSAgICppbmRleGxp c3Q7CQkvKiBsaXN0IG9mIEluZGV4T3B0SW5mbyAqLwotCUxpc3QJICAgKnN0YXRsaXN0OwkJ LyogbGlzdCBvZiBTdGF0aXN0aWNFeHRJbmZvICovCi0JQmxvY2tOdW1iZXIgcGFnZXM7CQkJ Lyogc2l6ZSBlc3RpbWF0ZXMgZGVyaXZlZCBmcm9tIHBnX2NsYXNzICovCisJLyogY29udGFp bmluZyB0YWJsZXNwYWNlICovCisJT2lkCQkJcmVsdGFibGVzcGFjZTsKKwkvKiBSRUxBVElP TiwgU1VCUVVFUlksIEZVTkNUSU9OLCBldGMgKi8KKwlSVEVLaW5kCQlydGVraW5kOworCS8q IHNtYWxsZXN0IGF0dHJubyBvZiByZWwgKG9mdGVuIDwwKSAqLworCUF0dHJOdW1iZXIJbWlu X2F0dHI7CisJLyogbGFyZ2VzdCBhdHRybm8gb2YgcmVsICovCisJQXR0ck51bWJlcgltYXhf YXR0cjsKKwkvKiBhcnJheSBpbmRleGVkIFttaW5fYXR0ciAuLiBtYXhfYXR0cl0gKi8KKwlS ZWxpZHMJICAgKmF0dHJfbmVlZGVkOworCS8qIGFycmF5IGluZGV4ZWQgW21pbl9hdHRyIC4u IG1heF9hdHRyXSAqLworCWludDMyCSAgICphdHRyX3dpZHRoczsKKwkvKiBMQVRFUkFMIFZh cnMgYW5kIFBIVnMgcmVmZXJlbmNlZCBieSByZWwgKi8KKwlMaXN0CSAgICpsYXRlcmFsX3Zh cnM7CisJLyogcmVscyB0aGF0IHJlZmVyZW5jZSBtZSBsYXRlcmFsbHkgKi8KKwlSZWxpZHMJ CWxhdGVyYWxfcmVmZXJlbmNlcnM7CisJLyogbGlzdCBvZiBJbmRleE9wdEluZm8gKi8KKwlM aXN0CSAgICppbmRleGxpc3Q7CisJLyogbGlzdCBvZiBTdGF0aXN0aWNFeHRJbmZvICovCisJ TGlzdAkgICAqc3RhdGxpc3Q7CisJLyogc2l6ZSBlc3RpbWF0ZXMgZGVyaXZlZCBmcm9tIHBn X2NsYXNzICovCisJQmxvY2tOdW1iZXIgcGFnZXM7CiAJQ2FyZGluYWxpdHkgdHVwbGVzOwog CWRvdWJsZQkJYWxsdmlzZnJhYzsKLQlCaXRtYXBzZXQgICplY2xhc3NfaW5kZXhlczsgLyog SW5kZXhlcyBpbiBQbGFubmVySW5mbydzIGVxX2NsYXNzZXMgbGlzdCBvZgotCQkJCQkJCQkg KiBFQ3MgdGhhdCBtZW50aW9uIHRoaXMgcmVsICovCisKKwkvKgorCSAqIEluZGV4ZXMgaW4g UGxhbm5lckluZm8ncyBlcV9jbGFzc2VzIGxpc3Qgb2YgRUNzIHRoYXQgbWVudGlvbiB0aGlz IHJlbAorCSAqLworCUJpdG1hcHNldCAgKmVjbGFzc19pbmRleGVzOwogCVBsYW5uZXJJbmZv ICpzdWJyb290OwkJLyogaWYgc3VicXVlcnkgKi8KIAlMaXN0CSAgICpzdWJwbGFuX3BhcmFt czsgLyogaWYgc3VicXVlcnkgKi8KLQlpbnQJCQlyZWxfcGFyYWxsZWxfd29ya2VyczsJLyog d2FudGVkIG51bWJlciBvZiBwYXJhbGxlbCB3b3JrZXJzICovCi0JdWludDMyCQlhbWZsYWdz OwkJLyogQml0bWFzayBvZiBvcHRpb25hbCBmZWF0dXJlcyBzdXBwb3J0ZWQgYnkKLQkJCQkJ CQkJICogdGhlIHRhYmxlIEFNICovCi0KLQkvKiBJbmZvcm1hdGlvbiBhYm91dCBmb3JlaWdu IHRhYmxlcyBhbmQgZm9yZWlnbiBqb2lucyAqLwotCU9pZAkJCXNlcnZlcmlkOwkJLyogaWRl bnRpZmllcyBzZXJ2ZXIgZm9yIHRoZSB0YWJsZSBvciBqb2luICovCi0JT2lkCQkJdXNlcmlk OwkJCS8qIGlkZW50aWZpZXMgdXNlciB0byBjaGVjayBhY2Nlc3MgYXMgKi8KLQlib29sCQl1 c2VyaWRpc2N1cnJlbnQ7CS8qIGpvaW4gaXMgb25seSB2YWxpZCBmb3IgY3VycmVudCB1c2Vy ICovCisJLyogd2FudGVkIG51bWJlciBvZiBwYXJhbGxlbCB3b3JrZXJzICovCisJaW50CQkJ cmVsX3BhcmFsbGVsX3dvcmtlcnM7CisJLyogQml0bWFzayBvZiBvcHRpb25hbCBmZWF0dXJl cyBzdXBwb3J0ZWQgYnkgdGhlIHRhYmxlIEFNICovCisJdWludDMyCQlhbWZsYWdzOworCisJ LyoKKwkgKiBJbmZvcm1hdGlvbiBhYm91dCBmb3JlaWduIHRhYmxlcyBhbmQgZm9yZWlnbiBq b2lucworCSAqLworCS8qIGlkZW50aWZpZXMgc2VydmVyIGZvciB0aGUgdGFibGUgb3Igam9p biAqLworCU9pZAkJCXNlcnZlcmlkOworCS8qIGlkZW50aWZpZXMgdXNlciB0byBjaGVjayBh Y2Nlc3MgYXMgKi8KKwlPaWQJCQl1c2VyaWQ7CisJLyogam9pbiBpcyBvbmx5IHZhbGlkIGZv ciBjdXJyZW50IHVzZXIgKi8KKwlib29sCQl1c2VyaWRpc2N1cnJlbnQ7CiAJLyogdXNlICJz dHJ1Y3QgRmR3Um91dGluZSIgdG8gYXZvaWQgaW5jbHVkaW5nIGZkd2FwaS5oIGhlcmUgKi8K IAlzdHJ1Y3QgRmR3Um91dGluZSAqZmR3cm91dGluZTsKIAl2b2lkCSAgICpmZHdfcHJpdmF0 ZTsKIAotCS8qIGNhY2hlIHNwYWNlIGZvciByZW1lbWJlcmluZyBpZiB3ZSBoYXZlIHByb3Zl biB0aGlzIHJlbGF0aW9uIHVuaXF1ZSAqLwotCUxpc3QJICAgKnVuaXF1ZV9mb3JfcmVsczsJ Lyoga25vd24gdW5pcXVlIGZvciB0aGVzZSBvdGhlciByZWxpZAotCQkJCQkJCQkJICogc2V0 KHMpICovCi0JTGlzdAkgICAqbm9uX3VuaXF1ZV9mb3JfcmVsczsJLyoga25vd24gbm90IHVu aXF1ZSBmb3IgdGhlc2Ugc2V0KHMpICovCi0KLQkvKiB1c2VkIGJ5IHZhcmlvdXMgc2NhbnMg YW5kIGpvaW5zOiAqLwotCUxpc3QJICAgKmJhc2VyZXN0cmljdGluZm87CS8qIFJlc3RyaWN0 SW5mbyBzdHJ1Y3R1cmVzIChpZiBiYXNlIHJlbCkgKi8KLQlRdWFsQ29zdAliYXNlcmVzdHJp Y3Rjb3N0OwkvKiBjb3N0IG9mIGV2YWx1YXRpbmcgdGhlIGFib3ZlICovCi0JSW5kZXgJCWJh c2VyZXN0cmljdF9taW5fc2VjdXJpdHk7CS8qIG1pbiBzZWN1cml0eV9sZXZlbCBmb3VuZCBp bgotCQkJCQkJCQkJCQkgKiBiYXNlcmVzdHJpY3RpbmZvICovCi0JTGlzdAkgICAqam9pbmlu Zm87CQkvKiBSZXN0cmljdEluZm8gc3RydWN0dXJlcyBmb3Igam9pbiBjbGF1c2VzCi0JCQkJ CQkJCSAqIGludm9sdmluZyB0aGlzIHJlbCAqLwotCWJvb2wJCWhhc19lY2xhc3Nfam9pbnM7 CS8qIFQgbWVhbnMgam9pbmluZm8gaXMgaW5jb21wbGV0ZSAqLwotCi0JLyogdXNlZCBieSBw YXJ0aXRpb253aXNlIGpvaW5zOiAqLwotCWJvb2wJCWNvbnNpZGVyX3BhcnRpdGlvbndpc2Vf am9pbjsJLyogY29uc2lkZXIgcGFydGl0aW9ud2lzZSBqb2luCi0JCQkJCQkJCQkJCQkgKiBw YXRocz8gKGlmIHBhcnRpdGlvbmVkIHJlbCkgKi8KLQlSZWxpZHMJCXRvcF9wYXJlbnRfcmVs aWRzOwkvKiBSZWxpZHMgb2YgdG9wbW9zdCBwYXJlbnRzIChpZiAib3RoZXIiCi0JCQkJCQkJ CQkgKiByZWwpICovCi0KLQkvKiB1c2VkIGZvciBwYXJ0aXRpb25lZCByZWxhdGlvbnM6ICov Ci0JUGFydGl0aW9uU2NoZW1lIHBhcnRfc2NoZW1lOwkvKiBQYXJ0aXRpb25pbmcgc2NoZW1l ICovCi0JaW50CQkJbnBhcnRzOwkJCS8qIE51bWJlciBvZiBwYXJ0aXRpb25zOyAtMSBpZiBu b3QgeWV0IHNldDsgaW4KLQkJCQkJCQkJICogY2FzZSBvZiBhIGpvaW4gcmVsYXRpb24gMCBt ZWFucyBpdCdzCi0JCQkJCQkJCSAqIGNvbnNpZGVyZWQgdW5wYXJ0aXRpb25lZCAqLwotCXN0 cnVjdCBQYXJ0aXRpb25Cb3VuZEluZm9EYXRhICpib3VuZGluZm87CS8qIFBhcnRpdGlvbiBi b3VuZHMgKi8KLQlib29sCQlwYXJ0Ym91bmRzX21lcmdlZDsJLyogVHJ1ZSBpZiBwYXJ0aXRp b24gYm91bmRzIHdlcmUgY3JlYXRlZAotCQkJCQkJCQkJICogYnkgcGFydGl0aW9uX2JvdW5k c19tZXJnZSgpICovCi0JTGlzdAkgICAqcGFydGl0aW9uX3F1YWw7IC8qIFBhcnRpdGlvbiBj b25zdHJhaW50LCBpZiBub3QgdGhlIHJvb3QgKi8KLQlzdHJ1Y3QgUmVsT3B0SW5mbyAqKnBh cnRfcmVsczsJLyogQXJyYXkgb2YgUmVsT3B0SW5mb3Mgb2YgcGFydGl0aW9ucywKLQkJCQkJ CQkJCSAqIHN0b3JlZCBpbiB0aGUgc2FtZSBvcmRlciBhcyBib3VuZHMgKi8KLQlCaXRtYXBz ZXQgICpsaXZlX3BhcnRzOwkJLyogQml0bWFwIHdpdGggbWVtYmVycyBhY3RpbmcgYXMgaW5k ZXhlcyBpbnRvCi0JCQkJCQkJCSAqIHRoZSBwYXJ0X3JlbHNbXSBhcnJheSB0byBpbmRpY2F0 ZSB3aGljaAotCQkJCQkJCQkgKiBwYXJ0aXRpb25zIHN1cnZpdmVkIHBhcnRpdGlvbiBwcnVu aW5nLiAqLwotCVJlbGlkcwkJYWxsX3BhcnRyZWxzOwkvKiBSZWxpZHMgc2V0IG9mIGFsbCBw YXJ0aXRpb24gcmVsaWRzICovCi0JTGlzdAkgICoqcGFydGV4cHJzOwkJLyogTm9uLW51bGxh YmxlIHBhcnRpdGlvbiBrZXkgZXhwcmVzc2lvbnMgKi8KLQlMaXN0CSAgKipudWxsYWJsZV9w YXJ0ZXhwcnM7IC8qIE51bGxhYmxlIHBhcnRpdGlvbiBrZXkgZXhwcmVzc2lvbnMgKi8KKwkv KgorCSAqIGNhY2hlIHNwYWNlIGZvciByZW1lbWJlcmluZyBpZiB3ZSBoYXZlIHByb3ZlbiB0 aGlzIHJlbGF0aW9uIHVuaXF1ZQorCSAqLworCS8qIGtub3duIHVuaXF1ZSBmb3IgdGhlc2Ug b3RoZXIgcmVsaWQgc2V0KHMpICovCisJTGlzdAkgICAqdW5pcXVlX2Zvcl9yZWxzOworCS8q IGtub3duIG5vdCB1bmlxdWUgZm9yIHRoZXNlIHNldChzKSAqLworCUxpc3QJICAgKm5vbl91 bmlxdWVfZm9yX3JlbHM7CisKKwkvKgorCSAqIHVzZWQgYnkgdmFyaW91cyBzY2FucyBhbmQg am9pbnM6CisJICovCisJLyogUmVzdHJpY3RJbmZvIHN0cnVjdHVyZXMgKGlmIGJhc2UgcmVs KSAqLworCUxpc3QJICAgKmJhc2VyZXN0cmljdGluZm87CisJLyogY29zdCBvZiBldmFsdWF0 aW5nIHRoZSBhYm92ZSAqLworCVF1YWxDb3N0CWJhc2VyZXN0cmljdGNvc3Q7CisJLyogbWlu IHNlY3VyaXR5X2xldmVsIGZvdW5kIGluIGJhc2VyZXN0cmljdGluZm8gKi8KKwlJbmRleAkJ YmFzZXJlc3RyaWN0X21pbl9zZWN1cml0eTsKKwkvKiBSZXN0cmljdEluZm8gc3RydWN0dXJl cyBmb3Igam9pbiBjbGF1c2VzIGludm9sdmluZyB0aGlzIHJlbCAqLworCUxpc3QJICAgKmpv aW5pbmZvOworCS8qIFQgbWVhbnMgam9pbmluZm8gaXMgaW5jb21wbGV0ZSAqLworCWJvb2wJ CWhhc19lY2xhc3Nfam9pbnM7CisKKwkvKgorCSAqIHVzZWQgYnkgcGFydGl0aW9ud2lzZSBq b2luczoKKwkgKi8KKwkvKiBjb25zaWRlciBwYXJ0aXRpb253aXNlIGpvaW4gcGF0aHM/IChp ZiBwYXJ0aXRpb25lZCByZWwpICovCisJYm9vbAkJY29uc2lkZXJfcGFydGl0aW9ud2lzZV9q b2luOworCS8qIFJlbGlkcyBvZiB0b3Btb3N0IHBhcmVudHMgKGlmICJvdGhlciIgcmVsKSAq LworCVJlbGlkcwkJdG9wX3BhcmVudF9yZWxpZHM7CisKKwkvKgorCSAqIHVzZWQgZm9yIHBh cnRpdGlvbmVkIHJlbGF0aW9uczoKKwkgKi8KKwkvKiBQYXJ0aXRpb25pbmcgc2NoZW1lICov CisJUGFydGl0aW9uU2NoZW1lIHBhcnRfc2NoZW1lOworCisJLyoKKwkgKiBOdW1iZXIgb2Yg cGFydGl0aW9uczsgLTEgaWYgbm90IHlldCBzZXQ7IGluIGNhc2Ugb2YgYSBqb2luIHJlbGF0 aW9uIDAKKwkgKiBtZWFucyBpdCdzIGNvbnNpZGVyZWQgdW5wYXJ0aXRpb25lZAorCSAqLwor CWludAkJCW5wYXJ0czsKKwkvKiBQYXJ0aXRpb24gYm91bmRzICovCisJc3RydWN0IFBhcnRp dGlvbkJvdW5kSW5mb0RhdGEgKmJvdW5kaW5mbzsKKwkvKiBUcnVlIGlmIHBhcnRpdGlvbiBi b3VuZHMgd2VyZSBjcmVhdGVkIGJ5IHBhcnRpdGlvbl9ib3VuZHNfbWVyZ2UoKSAqLworCWJv b2wJCXBhcnRib3VuZHNfbWVyZ2VkOworCS8qIFBhcnRpdGlvbiBjb25zdHJhaW50LCBpZiBu b3QgdGhlIHJvb3QgKi8KKwlMaXN0CSAgICpwYXJ0aXRpb25fcXVhbDsKKworCS8qCisJICog QXJyYXkgb2YgUmVsT3B0SW5mb3Mgb2YgcGFydGl0aW9ucywgc3RvcmVkIGluIHRoZSBzYW1l IG9yZGVyIGFzIGJvdW5kcworCSAqLworCXN0cnVjdCBSZWxPcHRJbmZvICoqcGFydF9yZWxz OworCisJLyoKKwkgKiBCaXRtYXAgd2l0aCBtZW1iZXJzIGFjdGluZyBhcyBpbmRleGVzIGlu dG8gdGhlIHBhcnRfcmVsc1tdIGFycmF5IHRvCisJICogaW5kaWNhdGUgd2hpY2ggcGFydGl0 aW9ucyBzdXJ2aXZlZCBwYXJ0aXRpb24gcHJ1bmluZy4KKwkgKi8KKwlCaXRtYXBzZXQgICps aXZlX3BhcnRzOworCS8qIFJlbGlkcyBzZXQgb2YgYWxsIHBhcnRpdGlvbiByZWxpZHMgKi8K KwlSZWxpZHMJCWFsbF9wYXJ0cmVsczsKKwkvKiBOb24tbnVsbGFibGUgcGFydGl0aW9uIGtl eSBleHByZXNzaW9ucyAqLworCUxpc3QJICAqKnBhcnRleHByczsKKwkvKiBOdWxsYWJsZSBw YXJ0aXRpb24ga2V5IGV4cHJlc3Npb25zICovCisJTGlzdAkgICoqbnVsbGFibGVfcGFydGV4 cHJzOwogfSBSZWxPcHRJbmZvOwogCiAvKgpAQCAtODM2LDU2ICs5MTMsOTMgQEAgc3RydWN0 IEluZGV4T3B0SW5mbwogewogCU5vZGVUYWcJCXR5cGU7CiAKLQlPaWQJCQlpbmRleG9pZDsJ CS8qIE9JRCBvZiB0aGUgaW5kZXggcmVsYXRpb24gKi8KLQlPaWQJCQlyZWx0YWJsZXNwYWNl OwkvKiB0YWJsZXNwYWNlIG9mIGluZGV4IChub3QgdGFibGUpICovCi0JUmVsT3B0SW5mbyAq cmVsOwkJCS8qIGJhY2stbGluayB0byBpbmRleCdzIHRhYmxlICovCi0KLQkvKiBpbmRleC1z aXplIHN0YXRpc3RpY3MgKGZyb20gcGdfY2xhc3MgYW5kIGVsc2V3aGVyZSkgKi8KLQlCbG9j a051bWJlciBwYWdlczsJCQkvKiBudW1iZXIgb2YgZGlzayBwYWdlcyBpbiBpbmRleCAqLwot CUNhcmRpbmFsaXR5IHR1cGxlczsJCQkvKiBudW1iZXIgb2YgaW5kZXggdHVwbGVzIGluIGlu ZGV4ICovCi0JaW50CQkJdHJlZV9oZWlnaHQ7CS8qIGluZGV4IHRyZWUgaGVpZ2h0LCBvciAt MSBpZiB1bmtub3duICovCi0KLQkvKiBpbmRleCBkZXNjcmlwdG9yIGluZm9ybWF0aW9uICov Ci0JaW50CQkJbmNvbHVtbnM7CQkvKiBudW1iZXIgb2YgY29sdW1ucyBpbiBpbmRleCAqLwot CWludAkJCW5rZXljb2x1bW5zOwkvKiBudW1iZXIgb2Yga2V5IGNvbHVtbnMgaW4gaW5kZXgg Ki8KLQlpbnQJCSAgICppbmRleGtleXM7CQkvKiBjb2x1bW4gbnVtYmVycyBvZiBpbmRleCdz IGF0dHJpYnV0ZXMgYm90aAotCQkJCQkJCQkgKiBrZXkgYW5kIGluY2x1ZGVkIGNvbHVtbnMs IG9yIDAgKi8KLQlPaWQJCSAgICppbmRleGNvbGxhdGlvbnM7CS8qIE9JRHMgb2YgY29sbGF0 aW9ucyBvZiBpbmRleCBjb2x1bW5zICovCi0JT2lkCQkgICAqb3BmYW1pbHk7CQkvKiBPSURz IG9mIG9wZXJhdG9yIGZhbWlsaWVzIGZvciBjb2x1bW5zICovCi0JT2lkCQkgICAqb3BjaW50 eXBlOwkJLyogT0lEcyBvZiBvcGNsYXNzIGRlY2xhcmVkIGlucHV0IGRhdGEgdHlwZXMgKi8K LQlPaWQJCSAgICpzb3J0b3BmYW1pbHk7CS8qIE9JRHMgb2YgYnRyZWUgb3BmYW1pbGllcywg aWYgb3JkZXJhYmxlICovCi0JYm9vbAkgICAqcmV2ZXJzZV9zb3J0OwkvKiBpcyBzb3J0IG9y ZGVyIGRlc2NlbmRpbmc/ICovCi0JYm9vbAkgICAqbnVsbHNfZmlyc3Q7CS8qIGRvIE5VTExz IGNvbWUgZmlyc3QgaW4gdGhlIHNvcnQgb3JkZXI/ICovCi0JYnl0ZWEJICAqKm9wY2xhc3Nv cHRpb25zOyAvKiBvcGNsYXNzLXNwZWNpZmljIG9wdGlvbnMgZm9yIGNvbHVtbnMgKi8KLQli b29sCSAgICpjYW5yZXR1cm47CQkvKiB3aGljaCBpbmRleCBjb2xzIGNhbiBiZSByZXR1cm5l ZCBpbiBhbgotCQkJCQkJCQkgKiBpbmRleC1vbmx5IHNjYW4/ICovCi0JT2lkCQkJcmVsYW07 CQkJLyogT0lEIG9mIHRoZSBhY2Nlc3MgbWV0aG9kIChpbiBwZ19hbSkgKi8KLQotCUxpc3QJ ICAgKmluZGV4cHJzOwkJLyogZXhwcmVzc2lvbnMgZm9yIG5vbi1zaW1wbGUgaW5kZXggY29s dW1ucyAqLwotCUxpc3QJICAgKmluZHByZWQ7CQkvKiBwcmVkaWNhdGUgaWYgYSBwYXJ0aWFs IGluZGV4LCBlbHNlIE5JTCAqLwotCi0JTGlzdAkgICAqaW5kZXh0bGlzdDsJCS8qIHRhcmdl dGxpc3QgcmVwcmVzZW50aW5nIGluZGV4IGNvbHVtbnMgKi8KLQotCUxpc3QJICAgKmluZHJl c3RyaWN0aW5mbzsJLyogcGFyZW50IHJlbGF0aW9uJ3MgYmFzZXJlc3RyaWN0aW5mbwotCQkJ CQkJCQkJICogbGlzdCwgbGVzcyBhbnkgY29uZGl0aW9ucyBpbXBsaWVkIGJ5Ci0JCQkJCQkJ CQkgKiB0aGUgaW5kZXgncyBwcmVkaWNhdGUgKHVubGVzcyBpdCdzIGEKLQkJCQkJCQkJCSAq IHRhcmdldCByZWwsIHNlZSBjb21tZW50cyBpbgotCQkJCQkJCQkJICogY2hlY2tfaW5kZXhf cHJlZGljYXRlcygpKSAqLwotCi0JYm9vbAkJcHJlZE9LOwkJCS8qIHRydWUgaWYgaW5kZXgg cHJlZGljYXRlIG1hdGNoZXMgcXVlcnkgKi8KLQlib29sCQl1bmlxdWU7CQkJLyogdHJ1ZSBp ZiBhIHVuaXF1ZSBpbmRleCAqLwotCWJvb2wJCWltbWVkaWF0ZTsJCS8qIGlzIHVuaXF1ZW5l c3MgZW5mb3JjZWQgaW1tZWRpYXRlbHk/ICovCi0JYm9vbAkJaHlwb3RoZXRpY2FsOwkvKiB0 cnVlIGlmIGluZGV4IGRvZXNuJ3QgcmVhbGx5IGV4aXN0ICovCi0KLQkvKiBSZW1haW5pbmcg ZmllbGRzIGFyZSBjb3BpZWQgZnJvbSB0aGUgaW5kZXggQU0ncyBBUEkgc3RydWN0OiAqLwot CWJvb2wJCWFtY2Fub3JkZXJieW9wOyAvKiBkb2VzIEFNIHN1cHBvcnQgb3JkZXIgYnkgb3Bl cmF0b3IgcmVzdWx0PyAqLwotCWJvb2wJCWFtb3B0aW9uYWxrZXk7CS8qIGNhbiBxdWVyeSBv bWl0IGtleSBmb3IgdGhlIGZpcnN0IGNvbHVtbj8gKi8KLQlib29sCQlhbXNlYXJjaGFycmF5 OwkvKiBjYW4gQU0gaGFuZGxlIFNjYWxhckFycmF5T3BFeHByIHF1YWxzPyAqLwotCWJvb2wJ CWFtc2VhcmNobnVsbHM7CS8qIGNhbiBBTSBzZWFyY2ggZm9yIE5VTEwvTk9UIE5VTEwgZW50 cmllcz8gKi8KLQlib29sCQlhbWhhc2dldHR1cGxlOwkvKiBkb2VzIEFNIGhhdmUgYW1nZXR0 dXBsZSBpbnRlcmZhY2U/ICovCi0JYm9vbAkJYW1oYXNnZXRiaXRtYXA7IC8qIGRvZXMgQU0g aGF2ZSBhbWdldGJpdG1hcCBpbnRlcmZhY2U/ICovCi0JYm9vbAkJYW1jYW5wYXJhbGxlbDsJ LyogZG9lcyBBTSBzdXBwb3J0IHBhcmFsbGVsIHNjYW4/ICovCi0JYm9vbAkJYW1jYW5tYXJr cG9zOwkvKiBkb2VzIEFNIHN1cHBvcnQgbWFyay9yZXN0b3JlPyAqLworCS8qIE9JRCBvZiB0 aGUgaW5kZXggcmVsYXRpb24gKi8KKwlPaWQJCQlpbmRleG9pZDsKKwkvKiB0YWJsZXNwYWNl IG9mIGluZGV4IChub3QgdGFibGUpICovCisJT2lkCQkJcmVsdGFibGVzcGFjZTsKKwkvKiBi YWNrLWxpbmsgdG8gaW5kZXgncyB0YWJsZSAqLworCVJlbE9wdEluZm8gKnJlbDsKKworCS8q CisJICogaW5kZXgtc2l6ZSBzdGF0aXN0aWNzIChmcm9tIHBnX2NsYXNzIGFuZCBlbHNld2hl cmUpCisJICovCisJLyogbnVtYmVyIG9mIGRpc2sgcGFnZXMgaW4gaW5kZXggKi8KKwlCbG9j a051bWJlciBwYWdlczsKKwkvKiBudW1iZXIgb2YgaW5kZXggdHVwbGVzIGluIGluZGV4ICov CisJQ2FyZGluYWxpdHkgdHVwbGVzOworCS8qIGluZGV4IHRyZWUgaGVpZ2h0LCBvciAtMSBp ZiB1bmtub3duICovCisJaW50CQkJdHJlZV9oZWlnaHQ7CisKKwkvKgorCSAqIGluZGV4IGRl c2NyaXB0b3IgaW5mb3JtYXRpb24KKwkgKi8KKwkvKiBudW1iZXIgb2YgY29sdW1ucyBpbiBp bmRleCAqLworCWludAkJCW5jb2x1bW5zOworCS8qIG51bWJlciBvZiBrZXkgY29sdW1ucyBp biBpbmRleCAqLworCWludAkJCW5rZXljb2x1bW5zOworCisJLyoKKwkgKiBjb2x1bW4gbnVt YmVycyBvZiBpbmRleCdzIGF0dHJpYnV0ZXMgYm90aCBrZXkgYW5kIGluY2x1ZGVkIGNvbHVt bnMsIG9yCisJICogMAorCSAqLworCWludAkJICAgKmluZGV4a2V5czsKKwkvKiBPSURzIG9m IGNvbGxhdGlvbnMgb2YgaW5kZXggY29sdW1ucyAqLworCU9pZAkJICAgKmluZGV4Y29sbGF0 aW9uczsKKwkvKiBPSURzIG9mIG9wZXJhdG9yIGZhbWlsaWVzIGZvciBjb2x1bW5zICovCisJ T2lkCQkgICAqb3BmYW1pbHk7CisJLyogT0lEcyBvZiBvcGNsYXNzIGRlY2xhcmVkIGlucHV0 IGRhdGEgdHlwZXMgKi8KKwlPaWQJCSAgICpvcGNpbnR5cGU7CisJLyogT0lEcyBvZiBidHJl ZSBvcGZhbWlsaWVzLCBpZiBvcmRlcmFibGUgKi8KKwlPaWQJCSAgICpzb3J0b3BmYW1pbHk7 CisJLyogaXMgc29ydCBvcmRlciBkZXNjZW5kaW5nPyAqLworCWJvb2wJICAgKnJldmVyc2Vf c29ydDsKKwkvKiBkbyBOVUxMcyBjb21lIGZpcnN0IGluIHRoZSBzb3J0IG9yZGVyPyAqLwor CWJvb2wJICAgKm51bGxzX2ZpcnN0OworCS8qIG9wY2xhc3Mtc3BlY2lmaWMgb3B0aW9ucyBm b3IgY29sdW1ucyAqLworCWJ5dGVhCSAgKipvcGNsYXNzb3B0aW9uczsKKwkvKiB3aGljaCBp bmRleCBjb2xzIGNhbiBiZSByZXR1cm5lZCBpbiBhbiBpbmRleC1vbmx5IHNjYW4/ICovCisJ Ym9vbAkgICAqY2FucmV0dXJuOworCS8qIE9JRCBvZiB0aGUgYWNjZXNzIG1ldGhvZCAoaW4g cGdfYW0pICovCisJT2lkCQkJcmVsYW07CisJLyogZXhwcmVzc2lvbnMgZm9yIG5vbi1zaW1w bGUgaW5kZXggY29sdW1ucyAqLworCUxpc3QJICAgKmluZGV4cHJzOworCS8qIHByZWRpY2F0 ZSBpZiBhIHBhcnRpYWwgaW5kZXgsIGVsc2UgTklMICovCisJTGlzdAkgICAqaW5kcHJlZDsK KworCS8qIHRhcmdldGxpc3QgcmVwcmVzZW50aW5nIGluZGV4IGNvbHVtbnMgKi8KKwlMaXN0 CSAgICppbmRleHRsaXN0OworCisJLyoKKwkgKiBwYXJlbnQgcmVsYXRpb24ncyBiYXNlcmVz dHJpY3RpbmZvIGxpc3QsIGxlc3MgYW55IGNvbmRpdGlvbnMgaW1wbGllZCBieQorCSAqIHRo ZSBpbmRleCdzIHByZWRpY2F0ZSAodW5sZXNzIGl0J3MgYSB0YXJnZXQgcmVsLCBzZWUgY29t bWVudHMgaW4KKwkgKiBjaGVja19pbmRleF9wcmVkaWNhdGVzKCkpCisJICovCisJTGlzdAkg ICAqaW5kcmVzdHJpY3RpbmZvOworCisJLyogdHJ1ZSBpZiBpbmRleCBwcmVkaWNhdGUgbWF0 Y2hlcyBxdWVyeSAqLworCWJvb2wJCXByZWRPSzsKKwkvKiB0cnVlIGlmIGEgdW5pcXVlIGlu ZGV4ICovCisJYm9vbAkJdW5pcXVlOworCS8qIGlzIHVuaXF1ZW5lc3MgZW5mb3JjZWQgaW1t ZWRpYXRlbHk/ICovCisJYm9vbAkJaW1tZWRpYXRlOworCS8qIHRydWUgaWYgaW5kZXggZG9l c24ndCByZWFsbHkgZXhpc3QgKi8KKwlib29sCQloeXBvdGhldGljYWw7CisKKwkvKgorCSAq IFJlbWFpbmluZyBmaWVsZHMgYXJlIGNvcGllZCBmcm9tIHRoZSBpbmRleCBBTSdzIEFQSSBz dHJ1Y3QKKwkgKiAoSW5kZXhBbVJvdXRpbmUpCisJICovCisJYm9vbAkJYW1jYW5vcmRlcmJ5 b3A7CisJYm9vbAkJYW1vcHRpb25hbGtleTsKKwlib29sCQlhbXNlYXJjaGFycmF5OworCWJv b2wJCWFtc2VhcmNobnVsbHM7CisJLyogZG9lcyBBTSBoYXZlIGFtZ2V0dHVwbGUgaW50ZXJm YWNlPyAqLworCWJvb2wJCWFtaGFzZ2V0dHVwbGU7CisJLyogZG9lcyBBTSBoYXZlIGFtZ2V0 Yml0bWFwIGludGVyZmFjZT8gKi8KKwlib29sCQlhbWhhc2dldGJpdG1hcDsKKwlib29sCQlh bWNhbnBhcmFsbGVsOworCS8qIGRvZXMgQU0gaGF2ZSBhbW1hcmtwb3MgaW50ZXJmYWNlPyAq LworCWJvb2wJCWFtY2FubWFya3BvczsKIAkvKiBSYXRoZXIgdGhhbiBpbmNsdWRlIGFtYXBp LmggaGVyZSwgd2UgZGVjbGFyZSBhbWNvc3Rlc3RpbWF0ZSBsaWtlIHRoaXMgKi8KIAl2b2lk CQkoKmFtY29zdGVzdGltYXRlKSAoKTsJLyogQU0ncyBjb3N0IGVzdGltYXRvciAqLwogfTsK QEAgLTkwMiwxOSArMTAxNiwzNSBAQCB0eXBlZGVmIHN0cnVjdCBGb3JlaWduS2V5T3B0SW5m bwogewogCU5vZGVUYWcJCXR5cGU7CiAKLQkvKiBCYXNpYyBkYXRhIGFib3V0IHRoZSBmb3Jl aWduIGtleSAoZmV0Y2hlZCBmcm9tIGNhdGFsb2dzKTogKi8KLQlJbmRleAkJY29uX3JlbGlk OwkJLyogUlQgaW5kZXggb2YgdGhlIHJlZmVyZW5jaW5nIHRhYmxlICovCi0JSW5kZXgJCXJl Zl9yZWxpZDsJCS8qIFJUIGluZGV4IG9mIHRoZSByZWZlcmVuY2VkIHRhYmxlICovCi0JaW50 CQkJbmtleXM7CQkJLyogbnVtYmVyIG9mIGNvbHVtbnMgaW4gdGhlIGZvcmVpZ24ga2V5ICov Ci0JQXR0ck51bWJlcgljb25rZXlbSU5ERVhfTUFYX0tFWVNdOyAvKiBjb2xzIGluIHJlZmVy ZW5jaW5nIHRhYmxlICovCi0JQXR0ck51bWJlcgljb25ma2V5W0lOREVYX01BWF9LRVlTXTsJ LyogY29scyBpbiByZWZlcmVuY2VkIHRhYmxlICovCi0JT2lkCQkJY29ucGZlcW9wW0lOREVY X01BWF9LRVlTXTsJLyogUEsgPSBGSyBvcGVyYXRvciBPSURzICovCi0KLQkvKiBEZXJpdmVk IGluZm8gYWJvdXQgd2hldGhlciBGSydzIGVxdWFsaXR5IGNvbmRpdGlvbnMgbWF0Y2ggdGhl IHF1ZXJ5OiAqLwotCWludAkJCW5tYXRjaGVkX2VjOwkvKiAjIG9mIEZLIGNvbHMgbWF0Y2hl ZCBieSBFQ3MgKi8KLQlpbnQJCQluY29uc3RfZWM7CQkvKiAjIG9mIHRoZXNlIEVDcyB0aGF0 IGFyZSBlY19oYXNfY29uc3QgKi8KLQlpbnQJCQlubWF0Y2hlZF9yY29sczsgLyogIyBvZiBG SyBjb2xzIG1hdGNoZWQgYnkgbm9uLUVDIHJpbmZvcyAqLwotCWludAkJCW5tYXRjaGVkX3Jp OwkvKiB0b3RhbCAjIG9mIG5vbi1FQyByaW5mb3MgbWF0Y2hlZCB0byBGSyAqLworCS8qCisJ ICogQmFzaWMgZGF0YSBhYm91dCB0aGUgZm9yZWlnbiBrZXkgKGZldGNoZWQgZnJvbSBjYXRh bG9ncyk6CisJICovCisKKwkvKiBSVCBpbmRleCBvZiB0aGUgcmVmZXJlbmNpbmcgdGFibGUg Ki8KKwlJbmRleAkJY29uX3JlbGlkOworCS8qIFJUIGluZGV4IG9mIHRoZSByZWZlcmVuY2Vk IHRhYmxlICovCisJSW5kZXgJCXJlZl9yZWxpZDsKKwkvKiBudW1iZXIgb2YgY29sdW1ucyBp biB0aGUgZm9yZWlnbiBrZXkgKi8KKwlpbnQJCQlua2V5czsKKwkvKiBjb2xzIGluIHJlZmVy ZW5jaW5nIHRhYmxlICovCisJQXR0ck51bWJlcgljb25rZXlbSU5ERVhfTUFYX0tFWVNdOwor CS8qIGNvbHMgaW4gcmVmZXJlbmNlZCB0YWJsZSAqLworCUF0dHJOdW1iZXIJY29uZmtleVtJ TkRFWF9NQVhfS0VZU107CisJLyogUEsgPSBGSyBvcGVyYXRvciBPSURzICovCisJT2lkCQkJ Y29ucGZlcW9wW0lOREVYX01BWF9LRVlTXTsKKworCS8qCisJICogRGVyaXZlZCBpbmZvIGFi b3V0IHdoZXRoZXIgRksncyBlcXVhbGl0eSBjb25kaXRpb25zIG1hdGNoIHRoZSBxdWVyeToK KwkgKi8KKworCS8qICMgb2YgRksgY29scyBtYXRjaGVkIGJ5IEVDcyAqLworCWludAkJCW5t YXRjaGVkX2VjOworCS8qICMgb2YgdGhlc2UgRUNzIHRoYXQgYXJlIGVjX2hhc19jb25zdCAq LworCWludAkJCW5jb25zdF9lYzsKKwkvKiAjIG9mIEZLIGNvbHMgbWF0Y2hlZCBieSBub24t RUMgcmluZm9zICovCisJaW50CQkJbm1hdGNoZWRfcmNvbHM7CisJLyogdG90YWwgIyBvZiBu b24tRUMgcmluZm9zIG1hdGNoZWQgdG8gRksgKi8KKwlpbnQJCQlubWF0Y2hlZF9yaTsKIAkv KiBQb2ludGVyIHRvIGVjbGFzcyBtYXRjaGluZyBlYWNoIGNvbHVtbidzIGNvbmRpdGlvbiwg aWYgdGhlcmUgaXMgb25lICovCiAJc3RydWN0IEVxdWl2YWxlbmNlQ2xhc3MgKmVjbGFzc1tJ TkRFWF9NQVhfS0VZU107CiAJLyogUG9pbnRlciB0byBlY2xhc3MgbWVtYmVyIGZvciB0aGUg cmVmZXJlbmNpbmcgVmFyLCBpZiB0aGVyZSBpcyBvbmUgKi8KQEAgLTkzNCwxMiArMTA2NCwy MyBAQCB0eXBlZGVmIHN0cnVjdCBTdGF0aXN0aWNFeHRJbmZvCiB7CiAJTm9kZVRhZwkJdHlw ZTsKIAotCU9pZAkJCXN0YXRPaWQ7CQkvKiBPSUQgb2YgdGhlIHN0YXRpc3RpY3Mgcm93ICov Ci0JYm9vbAkJaW5oZXJpdDsJCS8qIGluY2x1ZGVzIGNoaWxkIHJlbGF0aW9ucyAqLwotCVJl bE9wdEluZm8gKnJlbDsJCQkvKiBiYWNrLWxpbmsgdG8gc3RhdGlzdGljJ3MgdGFibGUgKi8K LQljaGFyCQlraW5kOwkJCS8qIHN0YXRpc3RpY3Mga2luZCBvZiB0aGlzIGVudHJ5ICovCi0J Qml0bWFwc2V0ICAqa2V5czsJCQkvKiBhdHRudW1zIG9mIHRoZSBjb2x1bW5zIGNvdmVyZWQg Ki8KLQlMaXN0CSAgICpleHByczsJCQkvKiBleHByZXNzaW9ucyAqLworCS8qIE9JRCBvZiB0 aGUgc3RhdGlzdGljcyByb3cgKi8KKwlPaWQJCQlzdGF0T2lkOworCisJLyogaW5jbHVkZXMg Y2hpbGQgcmVsYXRpb25zICovCisJYm9vbAkJaW5oZXJpdDsKKworCS8qIGJhY2stbGluayB0 byBzdGF0aXN0aWMncyB0YWJsZSAqLworCVJlbE9wdEluZm8gKnJlbDsKKworCS8qIHN0YXRp c3RpY3Mga2luZCBvZiB0aGlzIGVudHJ5ICovCisJY2hhcgkJa2luZDsKKworCS8qIGF0dG51 bXMgb2YgdGhlIGNvbHVtbnMgY292ZXJlZCAqLworCUJpdG1hcHNldCAgKmtleXM7CisKKwkv KiBleHByZXNzaW9ucyAqLworCUxpc3QJICAgKmV4cHJzOwogfSBTdGF0aXN0aWNFeHRJbmZv OwogCiAvKgpAQCAtMTExOSwxMiArMTI2MCwyMSBAQCB0eXBlZGVmIGVudW0gVm9sYXRpbGVG dW5jdGlvblN0YXR1cwogdHlwZWRlZiBzdHJ1Y3QgUGF0aFRhcmdldAogewogCU5vZGVUYWcJ CXR5cGU7Ci0JTGlzdAkgICAqZXhwcnM7CQkJLyogbGlzdCBvZiBleHByZXNzaW9ucyB0byBi ZSBjb21wdXRlZCAqLwotCUluZGV4CSAgICpzb3J0Z3JvdXByZWZzOwkvKiBjb3JyZXNwb25k aW5nIHNvcnQvZ3JvdXAgcmVmbm9zLCBvciAwICovCi0JUXVhbENvc3QJY29zdDsJCQkvKiBj b3N0IG9mIGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb25zICovCi0JaW50CQkJd2lkdGg7CQkJ LyogZXN0aW1hdGVkIGF2ZyB3aWR0aCBvZiByZXN1bHQgdHVwbGVzICovCi0JVm9sYXRpbGVG dW5jdGlvblN0YXR1cyBoYXNfdm9sYXRpbGVfZXhwcjsJLyogaW5kaWNhdGVzIGlmIGV4cHJz IGNvbnRhaW4KLQkJCQkJCQkJCQkJCSAqIGFueSB2b2xhdGlsZSBmdW5jdGlvbnMuICovCisK KwkvKiBsaXN0IG9mIGV4cHJlc3Npb25zIHRvIGJlIGNvbXB1dGVkICovCisJTGlzdAkgICAq ZXhwcnM7CisKKwkvKiBjb3JyZXNwb25kaW5nIHNvcnQvZ3JvdXAgcmVmbm9zLCBvciAwICov CisJSW5kZXgJICAgKnNvcnRncm91cHJlZnM7CisKKwkvKiBjb3N0IG9mIGV2YWx1YXRpbmcg dGhlIGV4cHJlc3Npb25zICovCisJUXVhbENvc3QJY29zdDsKKworCS8qIGVzdGltYXRlZCBh dmcgd2lkdGggb2YgcmVzdWx0IHR1cGxlcyAqLworCWludAkJCXdpZHRoOworCisJLyogaW5k aWNhdGVzIGlmIGV4cHJzIGNvbnRhaW4gYW55IHZvbGF0aWxlIGZ1bmN0aW9ucyAqLworCVZv bGF0aWxlRnVuY3Rpb25TdGF0dXMgaGFzX3ZvbGF0aWxlX2V4cHI7CiB9IFBhdGhUYXJnZXQ7 CiAKIC8qIENvbnZlbmllbmNlIG1hY3JvIHRvIGdldCBhIHNvcnQvZ3JvdXAgcmVmbm8gZnJv bSBhIFBhdGhUYXJnZXQgKi8KQEAgLTExODksMjQgKzEzMzksMzIgQEAgdHlwZWRlZiBzdHJ1 Y3QgUGF0aAogewogCU5vZGVUYWcJCXR5cGU7CiAKLQlOb2RlVGFnCQlwYXRodHlwZTsJCS8q IHRhZyBpZGVudGlmeWluZyBzY2FuL2pvaW4gbWV0aG9kICovCisJLyogdGFnIGlkZW50aWZ5 aW5nIHNjYW4vam9pbiBtZXRob2QgKi8KKwlOb2RlVGFnCQlwYXRodHlwZTsKIAotCVJlbE9w dEluZm8gKnBhcmVudDsJCQkvKiB0aGUgcmVsYXRpb24gdGhpcyBwYXRoIGNhbiBidWlsZCAq LwotCVBhdGhUYXJnZXQgKnBhdGh0YXJnZXQ7CQkvKiBsaXN0IG9mIFZhcnMvRXhwcnMsIGNv c3QsIHdpZHRoICovCisJLyogdGhlIHJlbGF0aW9uIHRoaXMgcGF0aCBjYW4gYnVpbGQgKi8K KwlSZWxPcHRJbmZvICpwYXJlbnQ7CiAKLQlQYXJhbVBhdGhJbmZvICpwYXJhbV9pbmZvOwkv KiBwYXJhbWV0ZXJpemF0aW9uIGluZm8sIG9yIE5VTEwgaWYgbm9uZSAqLworCS8qIGxpc3Qg b2YgVmFycy9FeHBycywgY29zdCwgd2lkdGggKi8KKwlQYXRoVGFyZ2V0ICpwYXRodGFyZ2V0 OwogCi0JYm9vbAkJcGFyYWxsZWxfYXdhcmU7IC8qIGVuZ2FnZSBwYXJhbGxlbC1hd2FyZSBs b2dpYz8gKi8KLQlib29sCQlwYXJhbGxlbF9zYWZlOwkvKiBPSyB0byB1c2UgYXMgcGFydCBv ZiBwYXJhbGxlbCBwbGFuPyAqLwotCWludAkJCXBhcmFsbGVsX3dvcmtlcnM7CS8qIGRlc2ly ZWQgIyBvZiB3b3JrZXJzOyAwID0gbm90IHBhcmFsbGVsICovCisJLyogcGFyYW1ldGVyaXph dGlvbiBpbmZvLCBvciBOVUxMIGlmIG5vbmUgKi8KKwlQYXJhbVBhdGhJbmZvICpwYXJhbV9p bmZvOworCisJLyogZW5nYWdlIHBhcmFsbGVsLWF3YXJlIGxvZ2ljPyAqLworCWJvb2wJCXBh cmFsbGVsX2F3YXJlOworCS8qIE9LIHRvIHVzZSBhcyBwYXJ0IG9mIHBhcmFsbGVsIHBsYW4/ ICovCisJYm9vbAkJcGFyYWxsZWxfc2FmZTsKKwkvKiBkZXNpcmVkICMgb2Ygd29ya2Vyczsg MCA9IG5vdCBwYXJhbGxlbCAqLworCWludAkJCXBhcmFsbGVsX3dvcmtlcnM7CiAKIAkvKiBl c3RpbWF0ZWQgc2l6ZS9jb3N0cyBmb3IgcGF0aCAoc2VlIGNvc3RzaXplLmMgZm9yIG1vcmUg aW5mbykgKi8KIAlDYXJkaW5hbGl0eSByb3dzOwkJCS8qIGVzdGltYXRlZCBudW1iZXIgb2Yg cmVzdWx0IHR1cGxlcyAqLwogCUNvc3QJCXN0YXJ0dXBfY29zdDsJLyogY29zdCBleHBlbmRl ZCBiZWZvcmUgZmV0Y2hpbmcgYW55IHR1cGxlcyAqLwogCUNvc3QJCXRvdGFsX2Nvc3Q7CQkv KiB0b3RhbCBjb3N0IChhc3N1bWluZyBhbGwgdHVwbGVzIGZldGNoZWQpICovCiAKLQlMaXN0 CSAgICpwYXRoa2V5czsJCS8qIHNvcnQgb3JkZXJpbmcgb2YgcGF0aCdzIG91dHB1dCAqLwot CS8qIHBhdGhrZXlzIGlzIGEgTGlzdCBvZiBQYXRoS2V5IG5vZGVzOyBzZWUgYWJvdmUgKi8K KwkvKiBzb3J0IG9yZGVyaW5nIG9mIHBhdGgncyBvdXRwdXQ7IGEgTGlzdCBvZiBQYXRoS2V5 IG5vZGVzOyBzZWUgYWJvdmUgKi8KKwlMaXN0CSAgICpwYXRoa2V5czsKIH0gUGF0aDsKIAog LyogTWFjcm8gZm9yIGV4dHJhY3RpbmcgYSBwYXRoJ3MgcGFyYW1ldGVyaXphdGlvbiByZWxp ZHM7IGJld2FyZSBkb3VibGUgZXZhbCAqLwpAQCAtMjA3MiwyMiArMjIzMCwyOSBAQCB0eXBl ZGVmIHN0cnVjdCBSZXN0cmljdEluZm8KIHsKIAlOb2RlVGFnCQl0eXBlOwogCi0JRXhwcgkg ICAqY2xhdXNlOwkJCS8qIHRoZSByZXByZXNlbnRlZCBjbGF1c2Ugb2YgV0hFUkUgb3IgSk9J TiAqLworCS8qIHRoZSByZXByZXNlbnRlZCBjbGF1c2Ugb2YgV0hFUkUgb3IgSk9JTiAqLwor CUV4cHIJICAgKmNsYXVzZTsKIAotCWJvb2wJCWlzX3B1c2hlZF9kb3duOyAvKiB0cnVlIGlm IGNsYXVzZSB3YXMgcHVzaGVkIGRvd24gaW4gbGV2ZWwgKi8KKwkvKiB0cnVlIGlmIGNsYXVz ZSB3YXMgcHVzaGVkIGRvd24gaW4gbGV2ZWwgKi8KKwlib29sCQlpc19wdXNoZWRfZG93bjsK IAotCWJvb2wJCW91dGVyam9pbl9kZWxheWVkOwkvKiB0cnVlIGlmIGRlbGF5ZWQgYnkgbG93 ZXIgb3V0ZXIgam9pbiAqLworCS8qIHRydWUgaWYgZGVsYXllZCBieSBsb3dlciBvdXRlciBq b2luICovCisJYm9vbAkJb3V0ZXJqb2luX2RlbGF5ZWQ7CiAKLQlib29sCQljYW5fam9pbjsJ CS8qIHNlZSBjb21tZW50IGFib3ZlICovCisJLyogc2VlIGNvbW1lbnQgYWJvdmUgKi8KKwli b29sCQljYW5fam9pbjsKIAotCWJvb2wJCXBzZXVkb2NvbnN0YW50OyAvKiBzZWUgY29tbWVu dCBhYm92ZSAqLworCS8qIHNlZSBjb21tZW50IGFib3ZlICovCisJYm9vbAkJcHNldWRvY29u c3RhbnQ7CiAKLQlib29sCQlsZWFrcHJvb2Y7CQkvKiB0cnVlIGlmIGtub3duIHRvIGNvbnRh aW4gbm8gbGVha2VkIFZhcnMgKi8KKwkvKiB0cnVlIGlmIGtub3duIHRvIGNvbnRhaW4gbm8g bGVha2VkIFZhcnMgKi8KKwlib29sCQlsZWFrcHJvb2Y7CiAKLQlWb2xhdGlsZUZ1bmN0aW9u U3RhdHVzIGhhc192b2xhdGlsZTsJLyogdG8gaW5kaWNhdGUgaWYgY2xhdXNlIGNvbnRhaW5z Ci0JCQkJCQkJCQkJCSAqIGFueSB2b2xhdGlsZSBmdW5jdGlvbnMuICovCisJLyogdG8gaW5k aWNhdGUgaWYgY2xhdXNlIGNvbnRhaW5zIGFueSB2b2xhdGlsZSBmdW5jdGlvbnMuICovCisJ Vm9sYXRpbGVGdW5jdGlvblN0YXR1cyBoYXNfdm9sYXRpbGU7CiAKLQlJbmRleAkJc2VjdXJp dHlfbGV2ZWw7IC8qIHNlZSBjb21tZW50IGFib3ZlICovCisJLyogc2VlIGNvbW1lbnQgYWJv dmUgKi8KKwlJbmRleAkJc2VjdXJpdHlfbGV2ZWw7CiAKIAkvKiBUaGUgc2V0IG9mIHJlbGlk cyAodmFybm9zKSBhY3R1YWxseSByZWZlcmVuY2VkIGluIHRoZSBjbGF1c2U6ICovCiAJUmVs aWRzCQljbGF1c2VfcmVsaWRzOwpAQCAtMjEwMSw0NSArMjI2Niw4NCBAQCB0eXBlZGVmIHN0 cnVjdCBSZXN0cmljdEluZm8KIAkvKiBUaGUgcmVsaWRzIHVzZWQgaW4gdGhlIGNsYXVzZSB0 aGF0IGFyZSBudWxsYWJsZSBieSBsb3dlciBvdXRlciBqb2luczogKi8KIAlSZWxpZHMJCW51 bGxhYmxlX3JlbGlkczsKIAotCS8qIFRoZXNlIGZpZWxkcyBhcmUgc2V0IGZvciBhbnkgYmlu YXJ5IG9wY2xhdXNlOiAqLwotCVJlbGlkcwkJbGVmdF9yZWxpZHM7CS8qIHJlbGlkcyBpbiBs ZWZ0IHNpZGUgb2YgY2xhdXNlICovCi0JUmVsaWRzCQlyaWdodF9yZWxpZHM7CS8qIHJlbGlk cyBpbiByaWdodCBzaWRlIG9mIGNsYXVzZSAqLworCS8qCisJICogUmVsaWRzIGluIHRoZSBs ZWZ0L3JpZ2h0IHNpZGUgb2YgdGhlIGNsYXVzZS4gIFRoZXNlIGZpZWxkcyBhcmUgc2V0IGZv cgorCSAqIGFueSBiaW5hcnkgb3BjbGF1c2UuCisJICovCisJUmVsaWRzCQlsZWZ0X3JlbGlk czsKKwlSZWxpZHMJCXJpZ2h0X3JlbGlkczsKIAotCS8qIFRoaXMgZmllbGQgaXMgTlVMTCB1 bmxlc3MgY2xhdXNlIGlzIGFuIE9SIGNsYXVzZTogKi8KLQlFeHByCSAgICpvcmNsYXVzZTsJ CS8qIG1vZGlmaWVkIGNsYXVzZSB3aXRoIFJlc3RyaWN0SW5mb3MgKi8KKwkvKgorCSAqIE1v ZGlmaWVkIGNsYXVzZSB3aXRoIFJlc3RyaWN0SW5mb3MuICBUaGlzIGZpZWxkIGlzIE5VTEwg dW5sZXNzIGNsYXVzZQorCSAqIGlzIGFuIE9SIGNsYXVzZS4KKwkgKi8KKwlFeHByCSAgICpv cmNsYXVzZTsKIAotCS8qIFRoaXMgZmllbGQgaXMgTlVMTCB1bmxlc3MgY2xhdXNlIGlzIHBv dGVudGlhbGx5IHJlZHVuZGFudDogKi8KLQlFcXVpdmFsZW5jZUNsYXNzICpwYXJlbnRfZWM7 CS8qIGdlbmVyYXRpbmcgRXF1aXZhbGVuY2VDbGFzcyAqLworCS8qCisJICogR2VuZXJhdGlu ZyBFcXVpdmFsZW5jZUNsYXNzLiAgVGhpcyBmaWVsZCBpcyBOVUxMIHVubGVzcyBjbGF1c2Ug aXMKKwkgKiBwb3RlbnRpYWxseSByZWR1bmRhbnQuCisJICovCisJRXF1aXZhbGVuY2VDbGFz cyAqcGFyZW50X2VjOwogCi0JLyogY2FjaGUgc3BhY2UgZm9yIGNvc3QgYW5kIHNlbGVjdGl2 aXR5ICovCi0JUXVhbENvc3QJZXZhbF9jb3N0OwkJLyogZXZhbCBjb3N0IG9mIGNsYXVzZTsg LTEgaWYgbm90IHlldCBzZXQgKi8KLQlTZWxlY3Rpdml0eSBub3JtX3NlbGVjOwkJLyogc2Vs ZWN0aXZpdHkgZm9yICJub3JtYWwiIChKT0lOX0lOTkVSKQotCQkJCQkJCQkgKiBzZW1hbnRp Y3M7IC0xIGlmIG5vdCB5ZXQgc2V0OyA+MSBtZWFucyBhCi0JCQkJCQkJCSAqIHJlZHVuZGFu dCBjbGF1c2UgKi8KLQlTZWxlY3Rpdml0eSBvdXRlcl9zZWxlYzsJLyogc2VsZWN0aXZpdHkg Zm9yIG91dGVyIGpvaW4gc2VtYW50aWNzOyAtMSBpZgotCQkJCQkJCQkgKiBub3QgeWV0IHNl dCAqLworCS8qCisJICogY2FjaGUgc3BhY2UgZm9yIGNvc3QgYW5kIHNlbGVjdGl2aXR5CisJ ICovCiAKLQkvKiB2YWxpZCBpZiBjbGF1c2UgaXMgbWVyZ2Vqb2luYWJsZSwgZWxzZSBOSUwg Ki8KLQlMaXN0CSAgICptZXJnZW9wZmFtaWxpZXM7CS8qIG9wZmFtaWxpZXMgY29udGFpbmlu ZyBjbGF1c2Ugb3BlcmF0b3IgKi8KKwkvKiBldmFsIGNvc3Qgb2YgY2xhdXNlOyAtMSBpZiBu b3QgeWV0IHNldCAqLworCVF1YWxDb3N0CWV2YWxfY29zdDsKIAotCS8qIGNhY2hlIHNwYWNl IGZvciBtZXJnZWNsYXVzZSBwcm9jZXNzaW5nOyBOVUxMIGlmIG5vdCB5ZXQgc2V0ICovCi0J RXF1aXZhbGVuY2VDbGFzcyAqbGVmdF9lYzsJLyogRXF1aXZhbGVuY2VDbGFzcyBjb250YWlu aW5nIGxlZnRoYW5kICovCi0JRXF1aXZhbGVuY2VDbGFzcyAqcmlnaHRfZWM7IC8qIEVxdWl2 YWxlbmNlQ2xhc3MgY29udGFpbmluZyByaWdodGhhbmQgKi8KLQlFcXVpdmFsZW5jZU1lbWJl ciAqbGVmdF9lbTsgLyogRXF1aXZhbGVuY2VNZW1iZXIgZm9yIGxlZnRoYW5kICovCi0JRXF1 aXZhbGVuY2VNZW1iZXIgKnJpZ2h0X2VtOwkvKiBFcXVpdmFsZW5jZU1lbWJlciBmb3Igcmln aHRoYW5kICovCi0JTGlzdAkgICAqc2NhbnNlbF9jYWNoZTsJLyogbGlzdCBvZiBNZXJnZVNj YW5TZWxDYWNoZSBzdHJ1Y3RzICovCisJLyoKKwkgKiBzZWxlY3Rpdml0eSBmb3IgIm5vcm1h bCIgKEpPSU5fSU5ORVIpIHNlbWFudGljczsgLTEgaWYgbm90IHlldCBzZXQ7ID4xCisJICog bWVhbnMgYSByZWR1bmRhbnQgY2xhdXNlCisJICovCisJU2VsZWN0aXZpdHkgbm9ybV9zZWxl YzsKKwkvKiBzZWxlY3Rpdml0eSBmb3Igb3V0ZXIgam9pbiBzZW1hbnRpY3M7IC0xIGlmIG5v dCB5ZXQgc2V0ICovCisJU2VsZWN0aXZpdHkgb3V0ZXJfc2VsZWM7CisKKwkvKgorCSAqIG9w ZmFtaWxpZXMgY29udGFpbmluZyBjbGF1c2Ugb3BlcmF0b3I7IHZhbGlkIGlmIGNsYXVzZSBp cworCSAqIG1lcmdlam9pbmFibGUsIGVsc2UgTklMCisJICovCisJTGlzdAkgICAqbWVyZ2Vv cGZhbWlsaWVzOwogCi0JLyogdHJhbnNpZW50IHdvcmtzcGFjZSBmb3IgdXNlIHdoaWxlIGNv bnNpZGVyaW5nIGEgc3BlY2lmaWMgam9pbiBwYXRoICovCi0JYm9vbAkJb3V0ZXJfaXNfbGVm dDsJLyogVCA9IG91dGVyIHZhciBvbiBsZWZ0LCBGID0gb24gcmlnaHQgKi8KKwkvKgorCSAq IGNhY2hlIHNwYWNlIGZvciBtZXJnZWNsYXVzZSBwcm9jZXNzaW5nOyBOVUxMIGlmIG5vdCB5 ZXQgc2V0CisJICovCiAKLQkvKiB2YWxpZCBpZiBjbGF1c2UgaXMgaGFzaGpvaW5hYmxlLCBl bHNlIEludmFsaWRPaWQ6ICovCi0JT2lkCQkJaGFzaGpvaW5vcGVyYXRvcjsJLyogY29weSBv ZiBjbGF1c2Ugb3BlcmF0b3IgKi8KKwkvKiBFcXVpdmFsZW5jZUNsYXNzIGNvbnRhaW5pbmcg bGVmdGhhbmQgKi8KKwlFcXVpdmFsZW5jZUNsYXNzICpsZWZ0X2VjOworCS8qIEVxdWl2YWxl bmNlQ2xhc3MgY29udGFpbmluZyByaWdodGhhbmQgKi8KKwlFcXVpdmFsZW5jZUNsYXNzICpy aWdodF9lYzsKKwkvKiBFcXVpdmFsZW5jZU1lbWJlciBmb3IgbGVmdGhhbmQgKi8KKwlFcXVp dmFsZW5jZU1lbWJlciAqbGVmdF9lbTsKKwkvKiBFcXVpdmFsZW5jZU1lbWJlciBmb3Igcmln aHRoYW5kICovCisJRXF1aXZhbGVuY2VNZW1iZXIgKnJpZ2h0X2VtOworCS8qIGxpc3Qgb2Yg TWVyZ2VTY2FuU2VsQ2FjaGUgc3RydWN0cyAqLworCUxpc3QJICAgKnNjYW5zZWxfY2FjaGU7 CiAKLQkvKiBjYWNoZSBzcGFjZSBmb3IgaGFzaGNsYXVzZSBwcm9jZXNzaW5nOyAtMSBpZiBu b3QgeWV0IHNldCAqLwotCVNlbGVjdGl2aXR5IGxlZnRfYnVja2V0c2l6ZTsJLyogYXZnIGJ1 Y2tldHNpemUgb2YgbGVmdCBzaWRlICovCi0JU2VsZWN0aXZpdHkgcmlnaHRfYnVja2V0c2l6 ZTsJLyogYXZnIGJ1Y2tldHNpemUgb2YgcmlnaHQgc2lkZSAqLwotCVNlbGVjdGl2aXR5IGxl ZnRfbWN2ZnJlcTsJLyogbGVmdCBzaWRlJ3MgbW9zdCBjb21tb24gdmFsJ3MgZnJlcSAqLwot CVNlbGVjdGl2aXR5IHJpZ2h0X21jdmZyZXE7CS8qIHJpZ2h0IHNpZGUncyBtb3N0IGNvbW1v biB2YWwncyBmcmVxICovCisJLyoKKwkgKiB0cmFuc2llbnQgd29ya3NwYWNlIGZvciB1c2Ug d2hpbGUgY29uc2lkZXJpbmcgYSBzcGVjaWZpYyBqb2luIHBhdGg7IFQgPQorCSAqIG91dGVy IHZhciBvbiBsZWZ0LCBGID0gb24gcmlnaHQKKwkgKi8KKwlib29sCQlvdXRlcl9pc19sZWZ0 OworCisJLyoKKwkgKiBjb3B5IG9mIGNsYXVzZSBvcGVyYXRvcjsgdmFsaWQgaWYgY2xhdXNl IGlzIGhhc2hqb2luYWJsZSwgZWxzZQorCSAqIEludmFsaWRPaWQKKwkgKi8KKwlPaWQJCQlo YXNoam9pbm9wZXJhdG9yOworCisJLyoKKwkgKiBjYWNoZSBzcGFjZSBmb3IgaGFzaGNsYXVz ZSBwcm9jZXNzaW5nOyAtMSBpZiBub3QgeWV0IHNldAorCSAqLworCS8qIGF2ZyBidWNrZXRz aXplIG9mIGxlZnQgc2lkZSAqLworCVNlbGVjdGl2aXR5IGxlZnRfYnVja2V0c2l6ZTsKKwkv KiBhdmcgYnVja2V0c2l6ZSBvZiByaWdodCBzaWRlICovCisJU2VsZWN0aXZpdHkgcmlnaHRf YnVja2V0c2l6ZTsKKwkvKiBsZWZ0IHNpZGUncyBtb3N0IGNvbW1vbiB2YWwncyBmcmVxICov CisJU2VsZWN0aXZpdHkgbGVmdF9tY3ZmcmVxOworCS8qIHJpZ2h0IHNpZGUncyBtb3N0IGNv bW1vbiB2YWwncyBmcmVxICovCisJU2VsZWN0aXZpdHkgcmlnaHRfbWN2ZnJlcTsKIAogCS8q IGhhc2ggZXF1YWxpdHkgb3BlcmF0b3JzIHVzZWQgZm9yIG1lbW9pemUgbm9kZXMsIGVsc2Ug SW52YWxpZE9pZCAqLwogCU9pZAkJCWxlZnRfaGFzaGVxb3BlcmF0b3I7CkBAIC0yMTk4LDEw ICsyNDAyLDE4IEBAIHR5cGVkZWYgc3RydWN0IE1lcmdlU2NhblNlbENhY2hlCiB0eXBlZGVm IHN0cnVjdCBQbGFjZUhvbGRlclZhcgogewogCUV4cHIJCXhwcjsKLQlFeHByCSAgICpwaGV4 cHI7CQkJLyogdGhlIHJlcHJlc2VudGVkIGV4cHJlc3Npb24gKi8KLQlSZWxpZHMJCXBocmVs czsJCQkvKiBiYXNlIHJlbGlkcyBzeW50YWN0aWNhbGx5IHdpdGhpbiBleHByIHNyYyAqLwot CUluZGV4CQlwaGlkOwkJCS8qIElEIGZvciBQSFYgKHVuaXF1ZSB3aXRoaW4gcGxhbm5lciBy dW4pICovCi0JSW5kZXgJCXBobGV2ZWxzdXA7CQkvKiA+IDAgaWYgUEhWIGJlbG9uZ3MgdG8g b3V0ZXIgcXVlcnkgKi8KKworCS8qIHRoZSByZXByZXNlbnRlZCBleHByZXNzaW9uICovCisJ RXhwcgkgICAqcGhleHByOworCisJLyogYmFzZSByZWxpZHMgc3ludGFjdGljYWxseSB3aXRo aW4gZXhwciBzcmMgKi8KKwlSZWxpZHMJCXBocmVsczsKKworCS8qIElEIGZvciBQSFYgKHVu aXF1ZSB3aXRoaW4gcGxhbm5lciBydW4pICovCisJSW5kZXgJCXBoaWQ7CisKKwkvKiA+IDAg aWYgUEhWIGJlbG9uZ3MgdG8gb3V0ZXIgcXVlcnkgKi8KKwlJbmRleAkJcGhsZXZlbHN1cDsK IH0gUGxhY2VIb2xkZXJWYXI7CiAKIC8qCkBAIC0yMzYwLDcgKzI1NzIsNyBAQCB0eXBlZGVm IHN0cnVjdCBBcHBlbmRSZWxJbmZvCiAJICogY2hpbGQgY29sdW1uIGlzIGRyb3BwZWQgb3Ig ZG9lc24ndCBleGlzdCBpbiB0aGUgcGFyZW50LgogCSAqLwogCWludAkJCW51bV9jaGlsZF9j b2xzOyAvKiBsZW5ndGggb2YgYXJyYXkgKi8KLQlBdHRyTnVtYmVyICpwYXJlbnRfY29sbm9z OwkvKiBhcnJheSBvZiBwYXJlbnQgYXR0bm9zLCBvciB6ZXJvZXMgKi8KKwlBdHRyTnVtYmVy ICpwYXJlbnRfY29sbm9zOwogCiAJLyoKIAkgKiBXZSBzdG9yZSB0aGUgcGFyZW50IHRhYmxl J3MgT0lEIGhlcmUgZm9yIGluaGVyaXRhbmNlLCBvciBJbnZhbGlkT2lkIGZvcgpAQCAtMjQy OCwxMiArMjY0MCwyMyBAQCB0eXBlZGVmIHN0cnVjdCBQbGFjZUhvbGRlckluZm8KIHsKIAlO b2RlVGFnCQl0eXBlOwogCi0JSW5kZXgJCXBoaWQ7CQkJLyogSUQgZm9yIFBIICh1bmlxdWUg d2l0aGluIHBsYW5uZXIgcnVuKSAqLwotCVBsYWNlSG9sZGVyVmFyICpwaF92YXI7CQkvKiBj b3B5IG9mIFBsYWNlSG9sZGVyVmFyIHRyZWUgKi8KLQlSZWxpZHMJCXBoX2V2YWxfYXQ7CQkv KiBsb3dlc3QgbGV2ZWwgd2UgY2FuIGV2YWx1YXRlIHZhbHVlIGF0ICovCi0JUmVsaWRzCQlw aF9sYXRlcmFsOwkJLyogcmVsaWRzIG9mIGNvbnRhaW5lZCBsYXRlcmFsIHJlZnMsIGlmIGFu eSAqLwotCVJlbGlkcwkJcGhfbmVlZGVkOwkJLyogaGlnaGVzdCBsZXZlbCB0aGUgdmFsdWUg aXMgbmVlZGVkIGF0ICovCi0JaW50MzIJCXBoX3dpZHRoOwkJLyogZXN0aW1hdGVkIGF0dHJp YnV0ZSB3aWR0aCAqLworCS8qIElEIGZvciBQSCAodW5pcXVlIHdpdGhpbiBwbGFubmVyIHJ1 bikgKi8KKwlJbmRleAkJcGhpZDsKKworCS8qIGNvcHkgb2YgUGxhY2VIb2xkZXJWYXIgdHJl ZSAqLworCVBsYWNlSG9sZGVyVmFyICpwaF92YXI7CisKKwkvKiBsb3dlc3QgbGV2ZWwgd2Ug Y2FuIGV2YWx1YXRlIHZhbHVlIGF0ICovCisJUmVsaWRzCQlwaF9ldmFsX2F0OworCisJLyog cmVsaWRzIG9mIGNvbnRhaW5lZCBsYXRlcmFsIHJlZnMsIGlmIGFueSAqLworCVJlbGlkcwkJ cGhfbGF0ZXJhbDsKKworCS8qIGhpZ2hlc3QgbGV2ZWwgdGhlIHZhbHVlIGlzIG5lZWRlZCBh dCAqLworCVJlbGlkcwkJcGhfbmVlZGVkOworCisJLyogZXN0aW1hdGVkIGF0dHJpYnV0ZSB3 aWR0aCAqLworCWludDMyCQlwaF93aWR0aDsKIH0gUGxhY2VIb2xkZXJJbmZvOwogCiAvKgpA QCAtMjQ0NSwxMyArMjY2OCwyNiBAQCB0eXBlZGVmIHN0cnVjdCBNaW5NYXhBZ2dJbmZvCiB7 CiAJTm9kZVRhZwkJdHlwZTsKIAotCU9pZAkJCWFnZ2Zub2lkOwkJLyogcGdfcHJvYyBPaWQg b2YgdGhlIGFnZ3JlZ2F0ZSAqLwotCU9pZAkJCWFnZ3NvcnRvcDsJCS8qIE9pZCBvZiBpdHMg c29ydCBvcGVyYXRvciAqLwotCUV4cHIJICAgKnRhcmdldDsJCQkvKiBleHByZXNzaW9uIHdl IGFyZSBhZ2dyZWdhdGluZyBvbiAqLwotCVBsYW5uZXJJbmZvICpzdWJyb290OwkJLyogbW9k aWZpZWQgInJvb3QiIGZvciBwbGFubmluZyB0aGUgc3VicXVlcnkgKi8KLQlQYXRoCSAgICpw YXRoOwkJCS8qIGFjY2VzcyBwYXRoIGZvciBzdWJxdWVyeSAqLwotCUNvc3QJCXBhdGhjb3N0 OwkJLyogZXN0aW1hdGVkIGNvc3QgdG8gZmV0Y2ggZmlyc3Qgcm93ICovCi0JUGFyYW0JICAg KnBhcmFtOwkJCS8qIHBhcmFtIGZvciBzdWJwbGFuJ3Mgb3V0cHV0ICovCisJLyogcGdfcHJv YyBPaWQgb2YgdGhlIGFnZ3JlZ2F0ZSAqLworCU9pZAkJCWFnZ2Zub2lkOworCisJLyogT2lk IG9mIGl0cyBzb3J0IG9wZXJhdG9yICovCisJT2lkCQkJYWdnc29ydG9wOworCisJLyogZXhw cmVzc2lvbiB3ZSBhcmUgYWdncmVnYXRpbmcgb24gKi8KKwlFeHByCSAgICp0YXJnZXQ7CisK KwkvKiBtb2RpZmllZCAicm9vdCIgZm9yIHBsYW5uaW5nIHRoZSBzdWJxdWVyeSAqLworCVBs YW5uZXJJbmZvICpzdWJyb290OworCisJLyogYWNjZXNzIHBhdGggZm9yIHN1YnF1ZXJ5ICov CisJUGF0aAkgICAqcGF0aDsKKworCS8qIGVzdGltYXRlZCBjb3N0IHRvIGZldGNoIGZpcnN0 IHJvdyAqLworCUNvc3QJCXBhdGhjb3N0OworCisJLyogcGFyYW0gZm9yIHN1YnBsYW4ncyBv dXRwdXQgKi8KKwlQYXJhbQkgICAqcGFyYW07CiB9IE1pbk1heEFnZ0luZm87CiAKIC8qCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCBiL3NyYy9pbmNsdWRl L25vZGVzL3BsYW5ub2Rlcy5oCmluZGV4IDBlYTlhMjJkZmIuLmQ1YzBlYmU4NTkgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRl L25vZGVzL3BsYW5ub2Rlcy5oCkBAIC0yNzQsMTQgKzI3NCwyOSBAQCB0eXBlZGVmIHN0cnVj dCBBcHBlbmQKIHR5cGVkZWYgc3RydWN0IE1lcmdlQXBwZW5kCiB7CiAJUGxhbgkJcGxhbjsK LQlCaXRtYXBzZXQgICphcHByZWxpZHM7CQkvKiBSVElzIG9mIGFwcGVuZHJlbChzKSBmb3Jt ZWQgYnkgdGhpcyBub2RlICovCisKKwkvKiBSVElzIG9mIGFwcGVuZHJlbChzKSBmb3JtZWQg YnkgdGhpcyBub2RlICovCisJQml0bWFwc2V0ICAqYXBwcmVsaWRzOworCiAJTGlzdAkgICAq bWVyZ2VwbGFuczsKKwogCS8qIHRoZXNlIGZpZWxkcyBhcmUganVzdCBsaWtlIHRoZSBzb3J0 LWtleSBpbmZvIGluIHN0cnVjdCBTb3J0OiAqLwotCWludAkJCW51bUNvbHM7CQkvKiBudW1i ZXIgb2Ygc29ydC1rZXkgY29sdW1ucyAqLwotCUF0dHJOdW1iZXIgKnNvcnRDb2xJZHg7CQkv KiB0aGVpciBpbmRleGVzIGluIHRoZSB0YXJnZXQgbGlzdCAqLwotCU9pZAkJICAgKnNvcnRP cGVyYXRvcnM7CS8qIE9JRHMgb2Ygb3BlcmF0b3JzIHRvIHNvcnQgdGhlbSBieSAqLwotCU9p ZAkJICAgKmNvbGxhdGlvbnM7CQkvKiBPSURzIG9mIGNvbGxhdGlvbnMgKi8KLQlib29sCSAg ICpudWxsc0ZpcnN0OwkJLyogTlVMTFMgRklSU1QvTEFTVCBkaXJlY3Rpb25zICovCisKKwkv KiBudW1iZXIgb2Ygc29ydC1rZXkgY29sdW1ucyAqLworCWludAkJCW51bUNvbHM7CisKKwkv KiB0aGVpciBpbmRleGVzIGluIHRoZSB0YXJnZXQgbGlzdCAqLworCUF0dHJOdW1iZXIgKnNv cnRDb2xJZHg7CisKKwkvKiBPSURzIG9mIG9wZXJhdG9ycyB0byBzb3J0IHRoZW0gYnkgKi8K KwlPaWQJCSAgICpzb3J0T3BlcmF0b3JzOworCisJLyogT0lEcyBvZiBjb2xsYXRpb25zICov CisJT2lkCQkgICAqY29sbGF0aW9uczsKKworCS8qIE5VTExTIEZJUlNUL0xBU1QgZGlyZWN0 aW9ucyAqLworCWJvb2wJICAgKm51bGxzRmlyc3Q7CisKIAkvKiBJbmZvIGZvciBydW4tdGlt ZSBzdWJwbGFuIHBydW5pbmc7IE5VTEwgaWYgd2UncmUgbm90IGRvaW5nIHRoYXQgKi8KIAlz dHJ1Y3QgUGFydGl0aW9uUHJ1bmVJbmZvICpwYXJ0X3BydW5lX2luZm87CiB9IE1lcmdlQXBw ZW5kOwpAQCAtMjk3LDE0ICszMTIsMjQgQEAgdHlwZWRlZiBzdHJ1Y3QgTWVyZ2VBcHBlbmQK IHR5cGVkZWYgc3RydWN0IFJlY3Vyc2l2ZVVuaW9uCiB7CiAJUGxhbgkJcGxhbjsKLQlpbnQJ CQl3dFBhcmFtOwkJLyogSUQgb2YgUGFyYW0gcmVwcmVzZW50aW5nIHdvcmsgdGFibGUgKi8K KworCS8qIElEIG9mIFBhcmFtIHJlcHJlc2VudGluZyB3b3JrIHRhYmxlICovCisJaW50CQkJ d3RQYXJhbTsKKwogCS8qIFJlbWFpbmluZyBmaWVsZHMgYXJlIHplcm8vbnVsbCBpbiBVTklP TiBBTEwgY2FzZSAqLwotCWludAkJCW51bUNvbHM7CQkvKiBudW1iZXIgb2YgY29sdW1ucyB0 byBjaGVjayBmb3IKLQkJCQkJCQkJICogZHVwbGljYXRlLW5lc3MgKi8KLQlBdHRyTnVtYmVy ICpkdXBDb2xJZHg7CQkvKiB0aGVpciBpbmRleGVzIGluIHRoZSB0YXJnZXQgbGlzdCAqLwot CU9pZAkJICAgKmR1cE9wZXJhdG9yczsJLyogZXF1YWxpdHkgb3BlcmF0b3JzIHRvIGNvbXBh cmUgd2l0aCAqLworCisJLyogbnVtYmVyIG9mIGNvbHVtbnMgdG8gY2hlY2sgZm9yIGR1cGxp Y2F0ZS1uZXNzICovCisJaW50CQkJbnVtQ29sczsKKworCS8qIHRoZWlyIGluZGV4ZXMgaW4g dGhlIHRhcmdldCBsaXN0ICovCisJQXR0ck51bWJlciAqZHVwQ29sSWR4OworCisJLyogZXF1 YWxpdHkgb3BlcmF0b3JzIHRvIGNvbXBhcmUgd2l0aCAqLworCU9pZAkJICAgKmR1cE9wZXJh dG9yczsKIAlPaWQJCSAgICpkdXBDb2xsYXRpb25zOwotCWxvbmcJCW51bUdyb3VwczsJCS8q IGVzdGltYXRlZCBudW1iZXIgb2YgZ3JvdXBzIGluIGlucHV0ICovCisKKwkvKiBlc3RpbWF0 ZWQgbnVtYmVyIG9mIGdyb3VwcyBpbiBpbnB1dCAqLworCWxvbmcJCW51bUdyb3VwczsKIH0g UmVjdXJzaXZlVW5pb247CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KQEAgLTc3NywxMyArODAy LDI2IEBAIHR5cGVkZWYgc3RydWN0IE5lc3RMb29wUGFyYW0KIHR5cGVkZWYgc3RydWN0IE1l cmdlSm9pbgogewogCUpvaW4JCWpvaW47Ci0JYm9vbAkJc2tpcF9tYXJrX3Jlc3RvcmU7CS8q IENhbiB3ZSBza2lwIG1hcmsvcmVzdG9yZSBjYWxscz8gKi8KLQlMaXN0CSAgICptZXJnZWNs YXVzZXM7CS8qIG1lcmdlY2xhdXNlcyBhcyBleHByZXNzaW9uIHRyZWVzICovCisKKwkvKiBD YW4gd2Ugc2tpcCBtYXJrL3Jlc3RvcmUgY2FsbHM/ICovCisJYm9vbAkJc2tpcF9tYXJrX3Jl c3RvcmU7CisKKwkvKiBtZXJnZWNsYXVzZXMgYXMgZXhwcmVzc2lvbiB0cmVlcyAqLworCUxp c3QJICAgKm1lcmdlY2xhdXNlczsKKwogCS8qIHRoZXNlIGFyZSBhcnJheXMsIGJ1dCBoYXZl IHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgbWVyZ2VjbGF1c2VzIGxpc3Q6ICovCi0JT2lkCQkg ICAqbWVyZ2VGYW1pbGllczsJLyogcGVyLWNsYXVzZSBPSURzIG9mIGJ0cmVlIG9wZmFtaWxp ZXMgKi8KLQlPaWQJCSAgICptZXJnZUNvbGxhdGlvbnM7CS8qIHBlci1jbGF1c2UgT0lEcyBv ZiBjb2xsYXRpb25zICovCi0JaW50CQkgICAqbWVyZ2VTdHJhdGVnaWVzOwkvKiBwZXItY2xh dXNlIG9yZGVyaW5nIChBU0Mgb3IgREVTQykgKi8KLQlib29sCSAgICptZXJnZU51bGxzRmly c3Q7CS8qIHBlci1jbGF1c2UgbnVsbHMgb3JkZXJpbmcgKi8KKworCS8qIHBlci1jbGF1c2Ug T0lEcyBvZiBidHJlZSBvcGZhbWlsaWVzICovCisJT2lkCQkgICAqbWVyZ2VGYW1pbGllczsK KworCS8qIHBlci1jbGF1c2UgT0lEcyBvZiBjb2xsYXRpb25zICovCisJT2lkCQkgICAqbWVy Z2VDb2xsYXRpb25zOworCisJLyogcGVyLWNsYXVzZSBvcmRlcmluZyAoQVNDIG9yIERFU0Mp ICovCisJaW50CQkgICAqbWVyZ2VTdHJhdGVnaWVzOworCisJLyogcGVyLWNsYXVzZSBudWxs cyBvcmRlcmluZyAqLworCWJvb2wJICAgKm1lcmdlTnVsbHNGaXJzdDsKIH0gTWVyZ2VKb2lu OwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tCkBAIC04MjEsMjEgKzg1OSwzOCBAQCB0eXBlZGVm IHN0cnVjdCBNZW1vaXplCiB7CiAJUGxhbgkJcGxhbjsKIAotCWludAkJCW51bUtleXM7CQkv KiBzaXplIG9mIHRoZSB0d28gYXJyYXlzIGJlbG93ICovCi0KLQlPaWQJCSAgICpoYXNoT3Bl cmF0b3JzOwkvKiBoYXNoIG9wZXJhdG9ycyBmb3IgZWFjaCBrZXkgKi8KLQlPaWQJCSAgICpj b2xsYXRpb25zOwkJLyogY29sbGF0aW9ucyBmb3IgZWFjaCBrZXkgKi8KLQlMaXN0CSAgICpw YXJhbV9leHByczsJLyogY2FjaGUga2V5cyBpbiB0aGUgZm9ybSBvZiBleHBycyBjb250YWlu aW5nCi0JCQkJCQkJCSAqIHBhcmFtZXRlcnMgKi8KLQlib29sCQlzaW5nbGVyb3c7CQkvKiB0 cnVlIGlmIHRoZSBjYWNoZSBlbnRyeSBzaG91bGQgYmUgbWFya2VkIGFzCi0JCQkJCQkJCSAq IGNvbXBsZXRlIGFmdGVyIHdlIHN0b3JlIHRoZSBmaXJzdCB0dXBsZSBpbgotCQkJCQkJCQkg KiBpdC4gKi8KLQlib29sCQliaW5hcnlfbW9kZTsJLyogdHJ1ZSB3aGVuIGNhY2hlIGtleSBz aG91bGQgYmUgY29tcGFyZWQgYml0Ci0JCQkJCQkJCSAqIGJ5IGJpdCwgZmFsc2Ugd2hlbiB1 c2luZyBoYXNoIGVxdWFsaXR5IG9wcyAqLwotCXVpbnQzMgkJZXN0X2VudHJpZXM7CS8qIFRo ZSBtYXhpbXVtIG51bWJlciBvZiBlbnRyaWVzIHRoYXQgdGhlCi0JCQkJCQkJCSAqIHBsYW5u ZXIgZXhwZWN0cyB3aWxsIGZpdCBpbiB0aGUgY2FjaGUsIG9yIDAKLQkJCQkJCQkJICogaWYg dW5rbm93biAqLwotCUJpdG1hcHNldCAgKmtleXBhcmFtaWRzOwkvKiBwYXJhbWlkcyBmcm9t IHBhcmFtX2V4cHJzICovCisJLyogc2l6ZSBvZiB0aGUgdHdvIGFycmF5cyBiZWxvdyAqLwor CWludAkJCW51bUtleXM7CisKKwkvKiBoYXNoIG9wZXJhdG9ycyBmb3IgZWFjaCBrZXkgKi8K KwlPaWQJCSAgICpoYXNoT3BlcmF0b3JzOworCisJLyogY29sbGF0aW9ucyBmb3IgZWFjaCBr ZXkgKi8KKwlPaWQJCSAgICpjb2xsYXRpb25zOworCisJLyogY2FjaGUga2V5cyBpbiB0aGUg Zm9ybSBvZiBleHBycyBjb250YWluaW5nIHBhcmFtZXRlcnMgKi8KKwlMaXN0CSAgICpwYXJh bV9leHByczsKKworCS8qCisJICogdHJ1ZSBpZiB0aGUgY2FjaGUgZW50cnkgc2hvdWxkIGJl IG1hcmtlZCBhcyBjb21wbGV0ZSBhZnRlciB3ZSBzdG9yZSB0aGUKKwkgKiBmaXJzdCB0dXBs ZSBpbiBpdC4KKwkgKi8KKwlib29sCQlzaW5nbGVyb3c7CisKKwkvKgorCSAqIHRydWUgd2hl biBjYWNoZSBrZXkgc2hvdWxkIGJlIGNvbXBhcmVkIGJpdCBieSBiaXQsIGZhbHNlIHdoZW4g dXNpbmcKKwkgKiBoYXNoIGVxdWFsaXR5IG9wcworCSAqLworCWJvb2wJCWJpbmFyeV9tb2Rl OworCisJLyoKKwkgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgZW50cmllcyB0aGF0IHRoZSBw bGFubmVyIGV4cGVjdHMgd2lsbCBmaXQgaW4gdGhlCisJICogY2FjaGUsIG9yIDAgaWYgdW5r bm93bgorCSAqLworCXVpbnQzMgkJZXN0X2VudHJpZXM7CisKKwkvKiBwYXJhbWlkcyBmcm9t IHBhcmFtX2V4cHJzICovCisJQml0bWFwc2V0ICAqa2V5cGFyYW1pZHM7CiB9IE1lbW9pemU7 CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KQEAgLTg0NSwxMSArOTAwLDIxIEBAIHR5cGVkZWYg c3RydWN0IE1lbW9pemUKIHR5cGVkZWYgc3RydWN0IFNvcnQKIHsKIAlQbGFuCQlwbGFuOwot CWludAkJCW51bUNvbHM7CQkvKiBudW1iZXIgb2Ygc29ydC1rZXkgY29sdW1ucyAqLwotCUF0 dHJOdW1iZXIgKnNvcnRDb2xJZHg7CQkvKiB0aGVpciBpbmRleGVzIGluIHRoZSB0YXJnZXQg bGlzdCAqLwotCU9pZAkJICAgKnNvcnRPcGVyYXRvcnM7CS8qIE9JRHMgb2Ygb3BlcmF0b3Jz IHRvIHNvcnQgdGhlbSBieSAqLwotCU9pZAkJICAgKmNvbGxhdGlvbnM7CQkvKiBPSURzIG9m IGNvbGxhdGlvbnMgKi8KLQlib29sCSAgICpudWxsc0ZpcnN0OwkJLyogTlVMTFMgRklSU1Qv TEFTVCBkaXJlY3Rpb25zICovCisKKwkvKiBudW1iZXIgb2Ygc29ydC1rZXkgY29sdW1ucyAq LworCWludAkJCW51bUNvbHM7CisKKwkvKiB0aGVpciBpbmRleGVzIGluIHRoZSB0YXJnZXQg bGlzdCAqLworCUF0dHJOdW1iZXIgKnNvcnRDb2xJZHg7CisKKwkvKiBPSURzIG9mIG9wZXJh dG9ycyB0byBzb3J0IHRoZW0gYnkgKi8KKwlPaWQJCSAgICpzb3J0T3BlcmF0b3JzOworCisJ LyogT0lEcyBvZiBjb2xsYXRpb25zICovCisJT2lkCQkgICAqY29sbGF0aW9uczsKKworCS8q IE5VTExTIEZJUlNUL0xBU1QgZGlyZWN0aW9ucyAqLworCWJvb2wJICAgKm51bGxzRmlyc3Q7 CiB9IFNvcnQ7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KQEAgLTg3MSw5ICs5MzYsMTUgQEAg dHlwZWRlZiBzdHJ1Y3QgSW5jcmVtZW50YWxTb3J0CiB0eXBlZGVmIHN0cnVjdCBHcm91cAog ewogCVBsYW4JCXBsYW47Ci0JaW50CQkJbnVtQ29sczsJCS8qIG51bWJlciBvZiBncm91cGlu ZyBjb2x1bW5zICovCi0JQXR0ck51bWJlciAqZ3JwQ29sSWR4OwkJLyogdGhlaXIgaW5kZXhl cyBpbiB0aGUgdGFyZ2V0IGxpc3QgKi8KLQlPaWQJCSAgICpncnBPcGVyYXRvcnM7CS8qIGVx dWFsaXR5IG9wZXJhdG9ycyB0byBjb21wYXJlIHdpdGggKi8KKworCS8qIG51bWJlciBvZiBn cm91cGluZyBjb2x1bW5zICovCisJaW50CQkJbnVtQ29sczsKKworCS8qIHRoZWlyIGluZGV4 ZXMgaW4gdGhlIHRhcmdldCBsaXN0ICovCisJQXR0ck51bWJlciAqZ3JwQ29sSWR4OworCisJ LyogZXF1YWxpdHkgb3BlcmF0b3JzIHRvIGNvbXBhcmUgd2l0aCAqLworCU9pZAkJICAgKmdy cE9wZXJhdG9yczsKIAlPaWQJCSAgICpncnBDb2xsYXRpb25zOwogfSBHcm91cDsKIApAQCAt ODk0LDE4ICs5NjUsMzkgQEAgdHlwZWRlZiBzdHJ1Y3QgR3JvdXAKIHR5cGVkZWYgc3RydWN0 IEFnZwogewogCVBsYW4JCXBsYW47Ci0JQWdnU3RyYXRlZ3kgYWdnc3RyYXRlZ3k7CS8qIGJh c2ljIHN0cmF0ZWd5LCBzZWUgbm9kZXMuaCAqLwotCUFnZ1NwbGl0CWFnZ3NwbGl0OwkJLyog YWdnLXNwbGl0dGluZyBtb2RlLCBzZWUgbm9kZXMuaCAqLwotCWludAkJCW51bUNvbHM7CQkv KiBudW1iZXIgb2YgZ3JvdXBpbmcgY29sdW1ucyAqLwotCUF0dHJOdW1iZXIgKmdycENvbElk eDsJCS8qIHRoZWlyIGluZGV4ZXMgaW4gdGhlIHRhcmdldCBsaXN0ICovCi0JT2lkCQkgICAq Z3JwT3BlcmF0b3JzOwkvKiBlcXVhbGl0eSBvcGVyYXRvcnMgdG8gY29tcGFyZSB3aXRoICov CisKKwkvKiBiYXNpYyBzdHJhdGVneSwgc2VlIG5vZGVzLmggKi8KKwlBZ2dTdHJhdGVneSBh Z2dzdHJhdGVneTsKKworCS8qIGFnZy1zcGxpdHRpbmcgbW9kZSwgc2VlIG5vZGVzLmggKi8K KwlBZ2dTcGxpdAlhZ2dzcGxpdDsKKworCS8qIG51bWJlciBvZiBncm91cGluZyBjb2x1bW5z ICovCisJaW50CQkJbnVtQ29sczsKKworCS8qIHRoZWlyIGluZGV4ZXMgaW4gdGhlIHRhcmdl dCBsaXN0ICovCisJQXR0ck51bWJlciAqZ3JwQ29sSWR4OworCisJLyogZXF1YWxpdHkgb3Bl cmF0b3JzIHRvIGNvbXBhcmUgd2l0aCAqLworCU9pZAkJICAgKmdycE9wZXJhdG9yczsKIAlP aWQJCSAgICpncnBDb2xsYXRpb25zOwotCWxvbmcJCW51bUdyb3VwczsJCS8qIGVzdGltYXRl ZCBudW1iZXIgb2YgZ3JvdXBzIGluIGlucHV0ICovCi0JdWludDY0CQl0cmFuc2l0aW9uU3Bh Y2U7CS8qIGZvciBwYXNzLWJ5LXJlZiB0cmFuc2l0aW9uIGRhdGEgKi8KLQlCaXRtYXBzZXQg ICphZ2dQYXJhbXM7CQkvKiBJRHMgb2YgUGFyYW1zIHVzZWQgaW4gQWdncmVmIGlucHV0cyAq LworCisJLyogZXN0aW1hdGVkIG51bWJlciBvZiBncm91cHMgaW4gaW5wdXQgKi8KKwlsb25n CQludW1Hcm91cHM7CisKKwkvKiBmb3IgcGFzcy1ieS1yZWYgdHJhbnNpdGlvbiBkYXRhICov CisJdWludDY0CQl0cmFuc2l0aW9uU3BhY2U7CisKKwkvKiBJRHMgb2YgUGFyYW1zIHVzZWQg aW4gQWdncmVmIGlucHV0cyAqLworCUJpdG1hcHNldCAgKmFnZ1BhcmFtczsKKwogCS8qIE5v dGU6IHBsYW5uZXIgcHJvdmlkZXMgbnVtR3JvdXBzICYgYWdnUGFyYW1zIG9ubHkgaW4gSEFT SEVEL01JWEVEIGNhc2UgKi8KLQlMaXN0CSAgICpncm91cGluZ1NldHM7CS8qIGdyb3VwaW5n IHNldHMgdG8gdXNlICovCi0JTGlzdAkgICAqY2hhaW47CQkJLyogY2hhaW5lZCBBZ2cvU29y dCBub2RlcyAqLworCisJLyogZ3JvdXBpbmcgc2V0cyB0byB1c2UgKi8KKwlMaXN0CSAgICpn cm91cGluZ1NldHM7CisKKwkvKiBjaGFpbmVkIEFnZy9Tb3J0IG5vZGVzICovCisJTGlzdAkg ICAqY2hhaW47CiB9IEFnZzsKIAogLyogLS0tLS0tLS0tLS0tLS0tLQpAQCAtOTE1LDI4ICsx MDA3LDcxIEBAIHR5cGVkZWYgc3RydWN0IEFnZwogdHlwZWRlZiBzdHJ1Y3QgV2luZG93QWdn CiB7CiAJUGxhbgkJcGxhbjsKLQlJbmRleAkJd2lucmVmOwkJCS8qIElEIHJlZmVyZW5jZWQg Ynkgd2luZG93IGZ1bmN0aW9ucyAqLwotCWludAkJCXBhcnROdW1Db2xzOwkvKiBudW1iZXIg b2YgY29sdW1ucyBpbiBwYXJ0aXRpb24gY2xhdXNlICovCi0JQXR0ck51bWJlciAqcGFydENv bElkeDsJCS8qIHRoZWlyIGluZGV4ZXMgaW4gdGhlIHRhcmdldCBsaXN0ICovCi0JT2lkCQkg ICAqcGFydE9wZXJhdG9yczsJLyogZXF1YWxpdHkgb3BlcmF0b3JzIGZvciBwYXJ0aXRpb24g Y29sdW1ucyAqLwotCU9pZAkJICAgKnBhcnRDb2xsYXRpb25zOyAvKiBjb2xsYXRpb25zIGZv ciBwYXJ0aXRpb24gY29sdW1ucyAqLwotCWludAkJCW9yZE51bUNvbHM7CQkvKiBudW1iZXIg b2YgY29sdW1ucyBpbiBvcmRlcmluZyBjbGF1c2UgKi8KLQlBdHRyTnVtYmVyICpvcmRDb2xJ ZHg7CQkvKiB0aGVpciBpbmRleGVzIGluIHRoZSB0YXJnZXQgbGlzdCAqLwotCU9pZAkJICAg Km9yZE9wZXJhdG9yczsJLyogZXF1YWxpdHkgb3BlcmF0b3JzIGZvciBvcmRlcmluZyBjb2x1 bW5zICovCi0JT2lkCQkgICAqb3JkQ29sbGF0aW9uczsJLyogY29sbGF0aW9ucyBmb3Igb3Jk ZXJpbmcgY29sdW1ucyAqLwotCWludAkJCWZyYW1lT3B0aW9uczsJLyogZnJhbWVfY2xhdXNl IG9wdGlvbnMsIHNlZSBXaW5kb3dEZWYgKi8KLQlOb2RlCSAgICpzdGFydE9mZnNldDsJLyog ZXhwcmVzc2lvbiBmb3Igc3RhcnRpbmcgYm91bmQsIGlmIGFueSAqLwotCU5vZGUJICAgKmVu ZE9mZnNldDsJCS8qIGV4cHJlc3Npb24gZm9yIGVuZGluZyBib3VuZCwgaWYgYW55ICovCi0J TGlzdAkgICAqcnVuQ29uZGl0aW9uOwkvKiBxdWFsIHRvIGhlbHAgc2hvcnQtY2lyY3VpdCBl eGVjdXRpb24gKi8KLQlMaXN0CSAgICpydW5Db25kaXRpb25PcmlnOwkvKiBydW5Db25kaXRp b24gZm9yIGRpc3BsYXkgaW4gRVhQTEFJTiAqLworCisJLyogSUQgcmVmZXJlbmNlZCBieSB3 aW5kb3cgZnVuY3Rpb25zICovCisJSW5kZXgJCXdpbnJlZjsKKworCS8qIG51bWJlciBvZiBj b2x1bW5zIGluIHBhcnRpdGlvbiBjbGF1c2UgKi8KKwlpbnQJCQlwYXJ0TnVtQ29sczsKKwor CS8qIHRoZWlyIGluZGV4ZXMgaW4gdGhlIHRhcmdldCBsaXN0ICovCisJQXR0ck51bWJlciAq cGFydENvbElkeDsKKworCS8qIGVxdWFsaXR5IG9wZXJhdG9ycyBmb3IgcGFydGl0aW9uIGNv bHVtbnMgKi8KKwlPaWQJCSAgICpwYXJ0T3BlcmF0b3JzOworCisJLyogY29sbGF0aW9ucyBm b3IgcGFydGl0aW9uIGNvbHVtbnMgKi8KKwlPaWQJCSAgICpwYXJ0Q29sbGF0aW9uczsKKwor CS8qIG51bWJlciBvZiBjb2x1bW5zIGluIG9yZGVyaW5nIGNsYXVzZSAqLworCWludAkJCW9y ZE51bUNvbHM7CisKKwkvKiB0aGVpciBpbmRleGVzIGluIHRoZSB0YXJnZXQgbGlzdCAqLwor CUF0dHJOdW1iZXIgKm9yZENvbElkeDsKKworCS8qIGVxdWFsaXR5IG9wZXJhdG9ycyBmb3Ig b3JkZXJpbmcgY29sdW1ucyAqLworCU9pZAkJICAgKm9yZE9wZXJhdG9yczsKKworCS8qIGNv bGxhdGlvbnMgZm9yIG9yZGVyaW5nIGNvbHVtbnMgKi8KKwlPaWQJCSAgICpvcmRDb2xsYXRp b25zOworCisJLyogZnJhbWVfY2xhdXNlIG9wdGlvbnMsIHNlZSBXaW5kb3dEZWYgKi8KKwlp bnQJCQlmcmFtZU9wdGlvbnM7CisKKwkvKiBleHByZXNzaW9uIGZvciBzdGFydGluZyBib3Vu ZCwgaWYgYW55ICovCisJTm9kZQkgICAqc3RhcnRPZmZzZXQ7CisKKwkvKiBleHByZXNzaW9u IGZvciBlbmRpbmcgYm91bmQsIGlmIGFueSAqLworCU5vZGUJICAgKmVuZE9mZnNldDsKKwor CS8qIHF1YWwgdG8gaGVscCBzaG9ydC1jaXJjdWl0IGV4ZWN1dGlvbiAqLworCUxpc3QJICAg KnJ1bkNvbmRpdGlvbjsKKworCS8qIHJ1bkNvbmRpdGlvbiBmb3IgZGlzcGxheSBpbiBFWFBM QUlOICovCisJTGlzdAkgICAqcnVuQ29uZGl0aW9uT3JpZzsKKwogCS8qIHRoZXNlIGZpZWxk cyBhcmUgdXNlZCB3aXRoIFJBTkdFIG9mZnNldCBQUkVDRURJTkcvRk9MTE9XSU5HOiAqLwot CU9pZAkJCXN0YXJ0SW5SYW5nZUZ1bmM7CS8qIGluX3JhbmdlIGZ1bmN0aW9uIGZvciBzdGFy dE9mZnNldCAqLwotCU9pZAkJCWVuZEluUmFuZ2VGdW5jOyAvKiBpbl9yYW5nZSBmdW5jdGlv biBmb3IgZW5kT2Zmc2V0ICovCi0JT2lkCQkJaW5SYW5nZUNvbGw7CS8qIGNvbGxhdGlvbiBm b3IgaW5fcmFuZ2UgdGVzdHMgKi8KLQlib29sCQlpblJhbmdlQXNjOwkJLyogdXNlIEFTQyBz b3J0IG9yZGVyIGZvciBpbl9yYW5nZSB0ZXN0cz8gKi8KLQlib29sCQlpblJhbmdlTnVsbHNG aXJzdDsJLyogbnVsbHMgc29ydCBmaXJzdCBmb3IgaW5fcmFuZ2UgdGVzdHM/ICovCi0JYm9v bAkJdG9wV2luZG93OwkJLyogZmFsc2UgZm9yIGFsbCBhcGFydCBmcm9tIHRoZSBXaW5kb3dB Z2cKLQkJCQkJCQkJICogdGhhdCdzIGNsb3Nlc3QgdG8gdGhlIHJvb3Qgb2YgdGhlIHBsYW4g Ki8KKworCS8qIGluX3JhbmdlIGZ1bmN0aW9uIGZvciBzdGFydE9mZnNldCAqLworCU9pZAkJ CXN0YXJ0SW5SYW5nZUZ1bmM7CisKKwkvKiBpbl9yYW5nZSBmdW5jdGlvbiBmb3IgZW5kT2Zm c2V0ICovCisJT2lkCQkJZW5kSW5SYW5nZUZ1bmM7CisKKwkvKiBjb2xsYXRpb24gZm9yIGlu X3JhbmdlIHRlc3RzICovCisJT2lkCQkJaW5SYW5nZUNvbGw7CisKKwkvKiB1c2UgQVNDIHNv cnQgb3JkZXIgZm9yIGluX3JhbmdlIHRlc3RzPyAqLworCWJvb2wJCWluUmFuZ2VBc2M7CisK KwkvKiBudWxscyBzb3J0IGZpcnN0IGZvciBpbl9yYW5nZSB0ZXN0cz8gKi8KKwlib29sCQlp blJhbmdlTnVsbHNGaXJzdDsKKworCS8qCisJICogZmFsc2UgZm9yIGFsbCBhcGFydCBmcm9t IHRoZSBXaW5kb3dBZ2cgdGhhdCdzIGNsb3Nlc3QgdG8gdGhlIHJvb3Qgb2YKKwkgKiB0aGUg cGxhbgorCSAqLworCWJvb2wJCXRvcFdpbmRvdzsKIH0gV2luZG93QWdnOwogCiAvKiAtLS0t LS0tLS0tLS0tLS0tCkBAIC05NDYsMTAgKzEwODEsMTggQEAgdHlwZWRlZiBzdHJ1Y3QgV2lu ZG93QWdnCiB0eXBlZGVmIHN0cnVjdCBVbmlxdWUKIHsKIAlQbGFuCQlwbGFuOwotCWludAkJ CW51bUNvbHM7CQkvKiBudW1iZXIgb2YgY29sdW1ucyB0byBjaGVjayBmb3IgdW5pcXVlbmVz cyAqLwotCUF0dHJOdW1iZXIgKnVuaXFDb2xJZHg7CQkvKiB0aGVpciBpbmRleGVzIGluIHRo ZSB0YXJnZXQgbGlzdCAqLwotCU9pZAkJICAgKnVuaXFPcGVyYXRvcnM7CS8qIGVxdWFsaXR5 IG9wZXJhdG9ycyB0byBjb21wYXJlIHdpdGggKi8KLQlPaWQJCSAgICp1bmlxQ29sbGF0aW9u czsgLyogY29sbGF0aW9ucyBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMgKi8KKworCS8qIG51 bWJlciBvZiBjb2x1bW5zIHRvIGNoZWNrIGZvciB1bmlxdWVuZXNzICovCisJaW50CQkJbnVt Q29sczsKKworCS8qIHRoZWlyIGluZGV4ZXMgaW4gdGhlIHRhcmdldCBsaXN0ICovCisJQXR0 ck51bWJlciAqdW5pcUNvbElkeDsKKworCS8qIGVxdWFsaXR5IG9wZXJhdG9ycyB0byBjb21w YXJlIHdpdGggKi8KKwlPaWQJCSAgICp1bmlxT3BlcmF0b3JzOworCisJLyogY29sbGF0aW9u cyBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMgKi8KKwlPaWQJCSAgICp1bmlxQ29sbGF0aW9u czsKIH0gVW5pcXVlOwogCiAvKiAtLS0tLS0tLS0tLS0KQEAgLTk4MSwxNiArMTEyNCwzNSBA QCB0eXBlZGVmIHN0cnVjdCBHYXRoZXIKIHR5cGVkZWYgc3RydWN0IEdhdGhlck1lcmdlCiB7 CiAJUGxhbgkJcGxhbjsKLQlpbnQJCQludW1fd29ya2VyczsJLyogcGxhbm5lZCBudW1iZXIg b2Ygd29ya2VyIHByb2Nlc3NlcyAqLwotCWludAkJCXJlc2Nhbl9wYXJhbTsJLyogSUQgb2Yg UGFyYW0gdGhhdCBzaWduYWxzIGEgcmVzY2FuLCBvciAtMSAqLworCisJLyogcGxhbm5lZCBu dW1iZXIgb2Ygd29ya2VyIHByb2Nlc3NlcyAqLworCWludAkJCW51bV93b3JrZXJzOworCisJ LyogSUQgb2YgUGFyYW0gdGhhdCBzaWduYWxzIGEgcmVzY2FuLCBvciAtMSAqLworCWludAkJ CXJlc2Nhbl9wYXJhbTsKKwogCS8qIHJlbWFpbmluZyBmaWVsZHMgYXJlIGp1c3QgbGlrZSB0 aGUgc29ydC1rZXkgaW5mbyBpbiBzdHJ1Y3QgU29ydCAqLwotCWludAkJCW51bUNvbHM7CQkv KiBudW1iZXIgb2Ygc29ydC1rZXkgY29sdW1ucyAqLwotCUF0dHJOdW1iZXIgKnNvcnRDb2xJ ZHg7CQkvKiB0aGVpciBpbmRleGVzIGluIHRoZSB0YXJnZXQgbGlzdCAqLwotCU9pZAkJICAg KnNvcnRPcGVyYXRvcnM7CS8qIE9JRHMgb2Ygb3BlcmF0b3JzIHRvIHNvcnQgdGhlbSBieSAq LwotCU9pZAkJICAgKmNvbGxhdGlvbnM7CQkvKiBPSURzIG9mIGNvbGxhdGlvbnMgKi8KLQli b29sCSAgICpudWxsc0ZpcnN0OwkJLyogTlVMTFMgRklSU1QvTEFTVCBkaXJlY3Rpb25zICov Ci0JQml0bWFwc2V0ICAqaW5pdFBhcmFtOwkJLyogcGFyYW0gaWQncyBvZiBpbml0cGxhbnMg d2hpY2ggYXJlIHJlZmVycmVkCi0JCQkJCQkJCSAqIGF0IGdhdGhlciBtZXJnZSBvciBvbmUg b2YgaXQncyBjaGlsZCBub2RlICovCisKKwkvKiBudW1iZXIgb2Ygc29ydC1rZXkgY29sdW1u cyAqLworCWludAkJCW51bUNvbHM7CisKKwkvKiB0aGVpciBpbmRleGVzIGluIHRoZSB0YXJn ZXQgbGlzdCAqLworCUF0dHJOdW1iZXIgKnNvcnRDb2xJZHg7CisKKwkvKiBPSURzIG9mIG9w ZXJhdG9ycyB0byBzb3J0IHRoZW0gYnkgKi8KKwlPaWQJCSAgICpzb3J0T3BlcmF0b3JzOwor CisJLyogT0lEcyBvZiBjb2xsYXRpb25zICovCisJT2lkCQkgICAqY29sbGF0aW9uczsKKwor CS8qIE5VTExTIEZJUlNUL0xBU1QgZGlyZWN0aW9ucyAqLworCWJvb2wJICAgKm51bGxzRmly c3Q7CisKKwkvKgorCSAqIHBhcmFtIGlkJ3Mgb2YgaW5pdHBsYW5zIHdoaWNoIGFyZSByZWZl cnJlZCBhdCBnYXRoZXIgbWVyZ2Ugb3Igb25lIG9mCisJICogaXQncyBjaGlsZCBub2RlCisJ ICovCisJQml0bWFwc2V0ICAqaW5pdFBhcmFtOwogfSBHYXRoZXJNZXJnZTsKIAogLyogLS0t LS0tLS0tLS0tLS0tLQpAQCAtMTAyNCwxNiArMTE4NiwzMSBAQCB0eXBlZGVmIHN0cnVjdCBI YXNoCiB0eXBlZGVmIHN0cnVjdCBTZXRPcAogewogCVBsYW4JCXBsYW47Ci0JU2V0T3BDbWQJ Y21kOwkJCS8qIHdoYXQgdG8gZG8sIHNlZSBub2Rlcy5oICovCi0JU2V0T3BTdHJhdGVneSBz dHJhdGVneTsJCS8qIGhvdyB0byBkbyBpdCwgc2VlIG5vZGVzLmggKi8KLQlpbnQJCQludW1D b2xzOwkJLyogbnVtYmVyIG9mIGNvbHVtbnMgdG8gY2hlY2sgZm9yCi0JCQkJCQkJCSAqIGR1 cGxpY2F0ZS1uZXNzICovCi0JQXR0ck51bWJlciAqZHVwQ29sSWR4OwkJLyogdGhlaXIgaW5k ZXhlcyBpbiB0aGUgdGFyZ2V0IGxpc3QgKi8KLQlPaWQJCSAgICpkdXBPcGVyYXRvcnM7CS8q IGVxdWFsaXR5IG9wZXJhdG9ycyB0byBjb21wYXJlIHdpdGggKi8KKworCS8qIHdoYXQgdG8g ZG8sIHNlZSBub2Rlcy5oICovCisJU2V0T3BDbWQJY21kOworCisJLyogaG93IHRvIGRvIGl0 LCBzZWUgbm9kZXMuaCAqLworCVNldE9wU3RyYXRlZ3kgc3RyYXRlZ3k7CisKKwkvKiBudW1i ZXIgb2YgY29sdW1ucyB0byBjaGVjayBmb3IgZHVwbGljYXRlLW5lc3MgKi8KKwlpbnQJCQlu dW1Db2xzOworCisJLyogdGhlaXIgaW5kZXhlcyBpbiB0aGUgdGFyZ2V0IGxpc3QgKi8KKwlB dHRyTnVtYmVyICpkdXBDb2xJZHg7CisKKwkvKiBlcXVhbGl0eSBvcGVyYXRvcnMgdG8gY29t cGFyZSB3aXRoICovCisJT2lkCQkgICAqZHVwT3BlcmF0b3JzOwogCU9pZAkJICAgKmR1cENv bGxhdGlvbnM7Ci0JQXR0ck51bWJlcglmbGFnQ29sSWR4OwkJLyogd2hlcmUgaXMgdGhlIGZs YWcgY29sdW1uLCBpZiBhbnkgKi8KLQlpbnQJCQlmaXJzdEZsYWc7CQkvKiBmbGFnIHZhbHVl IGZvciBmaXJzdCBpbnB1dCByZWxhdGlvbiAqLwotCWxvbmcJCW51bUdyb3VwczsJCS8qIGVz dGltYXRlZCBudW1iZXIgb2YgZ3JvdXBzIGluIGlucHV0ICovCisKKwkvKiB3aGVyZSBpcyB0 aGUgZmxhZyBjb2x1bW4sIGlmIGFueSAqLworCUF0dHJOdW1iZXIJZmxhZ0NvbElkeDsKKwor CS8qIGZsYWcgdmFsdWUgZm9yIGZpcnN0IGlucHV0IHJlbGF0aW9uICovCisJaW50CQkJZmly c3RGbGFnOworCisJLyogZXN0aW1hdGVkIG51bWJlciBvZiBncm91cHMgaW4gaW5wdXQgKi8K Kwlsb25nCQludW1Hcm91cHM7CiB9IFNldE9wOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tCkBA IC0xMDYyLDEzICsxMjM5LDI3IEBAIHR5cGVkZWYgc3RydWN0IExvY2tSb3dzCiB0eXBlZGVm IHN0cnVjdCBMaW1pdAogewogCVBsYW4JCXBsYW47Ci0JTm9kZQkgICAqbGltaXRPZmZzZXQ7 CS8qIE9GRlNFVCBwYXJhbWV0ZXIsIG9yIE5VTEwgaWYgbm9uZSAqLwotCU5vZGUJICAgKmxp bWl0Q291bnQ7CQkvKiBDT1VOVCBwYXJhbWV0ZXIsIG9yIE5VTEwgaWYgbm9uZSAqLwotCUxp bWl0T3B0aW9uIGxpbWl0T3B0aW9uOwkvKiBsaW1pdCB0eXBlICovCi0JaW50CQkJdW5pcU51 bUNvbHM7CS8qIG51bWJlciBvZiBjb2x1bW5zIHRvIGNoZWNrIGZvciBzaW1pbGFyaXR5ICAq LwotCUF0dHJOdW1iZXIgKnVuaXFDb2xJZHg7CQkvKiB0aGVpciBpbmRleGVzIGluIHRoZSB0 YXJnZXQgbGlzdCAqLwotCU9pZAkJICAgKnVuaXFPcGVyYXRvcnM7CS8qIGVxdWFsaXR5IG9w ZXJhdG9ycyB0byBjb21wYXJlIHdpdGggKi8KLQlPaWQJCSAgICp1bmlxQ29sbGF0aW9uczsg LyogY29sbGF0aW9ucyBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMgKi8KKworCS8qIE9GRlNF VCBwYXJhbWV0ZXIsIG9yIE5VTEwgaWYgbm9uZSAqLworCU5vZGUJICAgKmxpbWl0T2Zmc2V0 OworCisJLyogQ09VTlQgcGFyYW1ldGVyLCBvciBOVUxMIGlmIG5vbmUgKi8KKwlOb2RlCSAg ICpsaW1pdENvdW50OworCisJLyogbGltaXQgdHlwZSAqLworCUxpbWl0T3B0aW9uIGxpbWl0 T3B0aW9uOworCisJLyogbnVtYmVyIG9mIGNvbHVtbnMgdG8gY2hlY2sgZm9yIHNpbWlsYXJp dHkgICovCisJaW50CQkJdW5pcU51bUNvbHM7CisKKwkvKiB0aGVpciBpbmRleGVzIGluIHRo ZSB0YXJnZXQgbGlzdCAqLworCUF0dHJOdW1iZXIgKnVuaXFDb2xJZHg7CisKKwkvKiBlcXVh bGl0eSBvcGVyYXRvcnMgdG8gY29tcGFyZSB3aXRoICovCisJT2lkCQkgICAqdW5pcU9wZXJh dG9yczsKKworCS8qIGNvbGxhdGlvbnMgZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zICovCisJ T2lkCQkgICAqdW5pcUNvbGxhdGlvbnM7CiB9IExpbWl0OwogCiAKQEAgLTEyMjMsMTMgKzE0 MTQsMjQgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uUHJ1bmVJbmZvCiB0eXBlZGVmIHN0 cnVjdCBQYXJ0aXRpb25lZFJlbFBydW5lSW5mbwogewogCU5vZGVUYWcJCXR5cGU7Ci0JSW5k ZXgJCXJ0aW5kZXg7CQkvKiBSVCBpbmRleCBvZiBwYXJ0aXRpb24gcmVsIGZvciB0aGlzIGxl dmVsICovCi0JQml0bWFwc2V0ICAqcHJlc2VudF9wYXJ0czsJLyogSW5kZXhlcyBvZiBhbGwg cGFydGl0aW9ucyB3aGljaCBzdWJwbGFucyBvcgotCQkJCQkJCQkgKiBzdWJwYXJ0cyBhcmUg cHJlc2VudCBmb3IgKi8KLQlpbnQJCQlucGFydHM7CQkJLyogTGVuZ3RoIG9mIHRoZSBmb2xs b3dpbmcgYXJyYXlzOiAqLwotCWludAkJICAgKnN1YnBsYW5fbWFwOwkvKiBzdWJwbGFuIGlu ZGV4IGJ5IHBhcnRpdGlvbiBpbmRleCwgb3IgLTEgKi8KLQlpbnQJCSAgICpzdWJwYXJ0X21h cDsJLyogc3VicGFydCBpbmRleCBieSBwYXJ0aXRpb24gaW5kZXgsIG9yIC0xICovCi0JT2lk CQkgICAqcmVsaWRfbWFwOwkJLyogcmVsYXRpb24gT0lEIGJ5IHBhcnRpdGlvbiBpbmRleCwg b3IgMCAqLworCisJLyogUlQgaW5kZXggb2YgcGFydGl0aW9uIHJlbCBmb3IgdGhpcyBsZXZl bCAqLworCUluZGV4CQlydGluZGV4OworCisJLyogSW5kZXhlcyBvZiBhbGwgcGFydGl0aW9u cyB3aGljaCBzdWJwbGFucyBvciBzdWJwYXJ0cyBhcmUgcHJlc2VudCBmb3IgKi8KKwlCaXRt YXBzZXQgICpwcmVzZW50X3BhcnRzOworCisJLyogTGVuZ3RoIG9mIHRoZSBmb2xsb3dpbmcg YXJyYXlzOiAqLworCWludAkJCW5wYXJ0czsKKworCS8qIHN1YnBsYW4gaW5kZXggYnkgcGFy dGl0aW9uIGluZGV4LCBvciAtMSAqLworCWludAkJICAgKnN1YnBsYW5fbWFwOworCisJLyog c3VicGFydCBpbmRleCBieSBwYXJ0aXRpb24gaW5kZXgsIG9yIC0xICovCisJaW50CQkgICAq c3VicGFydF9tYXA7CisKKwkvKiByZWxhdGlvbiBPSUQgYnkgcGFydGl0aW9uIGluZGV4LCBv ciAwICovCisJT2lkCQkgICAqcmVsaWRfbWFwOwogCiAJLyoKIAkgKiBpbml0aWFsX3BydW5p bmdfc3RlcHMgc2hvd3MgaG93IHRvIHBydW5lIGR1cmluZyBleGVjdXRvciBzdGFydHVwIChp LmUuLApAQCAtMTIzOSw4ICsxNDQxLDkgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uZWRS ZWxQcnVuZUluZm8KIAkgKi8KIAlMaXN0CSAgICppbml0aWFsX3BydW5pbmdfc3RlcHM7CS8q IExpc3Qgb2YgUGFydGl0aW9uUHJ1bmVTdGVwICovCiAJTGlzdAkgICAqZXhlY19wcnVuaW5n X3N0ZXBzOyAvKiBMaXN0IG9mIFBhcnRpdGlvblBydW5lU3RlcCAqLwotCUJpdG1hcHNldCAg KmV4ZWNwYXJhbWlkczsJLyogQWxsIFBBUkFNX0VYRUMgUGFyYW0gSURzIGluCi0JCQkJCQkJ CSAqIGV4ZWNfcHJ1bmluZ19zdGVwcyAqLworCisJLyogQWxsIFBBUkFNX0VYRUMgUGFyYW0g SURzIGluIGV4ZWNfcHJ1bmluZ19zdGVwcyAqLworCUJpdG1hcHNldCAgKmV4ZWNwYXJhbWlk czsKIH0gUGFydGl0aW9uZWRSZWxQcnVuZUluZm87CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rl cy5oCmluZGV4IDUxNTA1ZWVlODUuLjU0Zjk0MmUwZmQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL25vZGVzL3ByaW1ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rl cy5oCkBAIC0zMjksMjYgKzMyOSw2NiBAQCB0eXBlZGVmIHN0cnVjdCBQYXJhbQogdHlwZWRl ZiBzdHJ1Y3QgQWdncmVmCiB7CiAJRXhwcgkJeHByOwotCU9pZAkJCWFnZ2Zub2lkOwkJLyog cGdfcHJvYyBPaWQgb2YgdGhlIGFnZ3JlZ2F0ZSAqLwotCU9pZAkJCWFnZ3R5cGU7CQkvKiB0 eXBlIE9pZCBvZiByZXN1bHQgb2YgdGhlIGFnZ3JlZ2F0ZSAqLwotCU9pZAkJCWFnZ2NvbGxp ZDsJCS8qIE9JRCBvZiBjb2xsYXRpb24gb2YgcmVzdWx0ICovCi0JT2lkCQkJaW5wdXRjb2xs aWQ7CS8qIE9JRCBvZiBjb2xsYXRpb24gdGhhdCBmdW5jdGlvbiBzaG91bGQgdXNlICovCi0J T2lkCQkJYWdndHJhbnN0eXBlOwkvKiB0eXBlIE9pZCBvZiBhZ2dyZWdhdGUncyB0cmFuc2l0 aW9uIHZhbHVlICovCi0JTGlzdAkgICAqYWdnYXJndHlwZXM7CS8qIHR5cGUgT2lkcyBvZiBk aXJlY3QgYW5kIGFnZ3JlZ2F0ZWQgYXJncyAqLwotCUxpc3QJICAgKmFnZ2RpcmVjdGFyZ3M7 CS8qIGRpcmVjdCBhcmd1bWVudHMsIGlmIGFuIG9yZGVyZWQtc2V0IGFnZyAqLwotCUxpc3QJ ICAgKmFyZ3M7CQkJLyogYWdncmVnYXRlZCBhcmd1bWVudHMgYW5kIHNvcnQgZXhwcmVzc2lv bnMgKi8KLQlMaXN0CSAgICphZ2dvcmRlcjsJCS8qIE9SREVSIEJZIChsaXN0IG9mIFNvcnRH cm91cENsYXVzZSkgKi8KLQlMaXN0CSAgICphZ2dkaXN0aW5jdDsJLyogRElTVElOQ1QgKGxp c3Qgb2YgU29ydEdyb3VwQ2xhdXNlKSAqLwotCUV4cHIJICAgKmFnZ2ZpbHRlcjsJCS8qIEZJ TFRFUiBleHByZXNzaW9uLCBpZiBhbnkgKi8KLQlib29sCQlhZ2dzdGFyOwkJLyogdHJ1ZSBp ZiBhcmd1bWVudCBsaXN0IHdhcyByZWFsbHkgJyonICovCi0JYm9vbAkJYWdndmFyaWFkaWM7 CS8qIHRydWUgaWYgdmFyaWFkaWMgYXJndW1lbnRzIGhhdmUgYmVlbgotCQkJCQkJCQkgKiBj b21iaW5lZCBpbnRvIGFuIGFycmF5IGxhc3QgYXJndW1lbnQgKi8KLQljaGFyCQlhZ2draW5k OwkJLyogYWdncmVnYXRlIGtpbmQgKHNlZSBwZ19hZ2dyZWdhdGUuaCkgKi8KLQlJbmRleAkJ YWdnbGV2ZWxzdXA7CS8qID4gMCBpZiBhZ2cgYmVsb25ncyB0byBvdXRlciBxdWVyeSAqLwot CUFnZ1NwbGl0CWFnZ3NwbGl0OwkJLyogZXhwZWN0ZWQgYWdnLXNwbGl0dGluZyBtb2RlIG9m IHBhcmVudCBBZ2cgKi8KLQlpbnQJCQlhZ2dubzsJCQkvKiB1bmlxdWUgSUQgd2l0aGluIHRo ZSBBZ2cgbm9kZSAqLwotCWludAkJCWFnZ3RyYW5zbm87CQkvKiB1bmlxdWUgSUQgb2YgdHJh bnNpdGlvbiBzdGF0ZSBpbiB0aGUgQWdnICovCi0JaW50CQkJbG9jYXRpb247CQkvKiB0b2tl biBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLworCisJLyogcGdfcHJvYyBPaWQgb2Yg dGhlIGFnZ3JlZ2F0ZSAqLworCU9pZAkJCWFnZ2Zub2lkOworCisJLyogdHlwZSBPaWQgb2Yg cmVzdWx0IG9mIHRoZSBhZ2dyZWdhdGUgKi8KKwlPaWQJCQlhZ2d0eXBlOworCisJLyogT0lE IG9mIGNvbGxhdGlvbiBvZiByZXN1bHQgKi8KKwlPaWQJCQlhZ2djb2xsaWQ7CisKKwkvKiBP SUQgb2YgY29sbGF0aW9uIHRoYXQgZnVuY3Rpb24gc2hvdWxkIHVzZSAqLworCU9pZAkJCWlu cHV0Y29sbGlkOworCisJLyogdHlwZSBPaWQgb2YgYWdncmVnYXRlJ3MgdHJhbnNpdGlvbiB2 YWx1ZSAqLworCU9pZAkJCWFnZ3RyYW5zdHlwZTsKKworCS8qIHR5cGUgT2lkcyBvZiBkaXJl Y3QgYW5kIGFnZ3JlZ2F0ZWQgYXJncyAqLworCUxpc3QJICAgKmFnZ2FyZ3R5cGVzOworCisJ LyogZGlyZWN0IGFyZ3VtZW50cywgaWYgYW4gb3JkZXJlZC1zZXQgYWdnICovCisJTGlzdAkg ICAqYWdnZGlyZWN0YXJnczsKKworCS8qIGFnZ3JlZ2F0ZWQgYXJndW1lbnRzIGFuZCBzb3J0 IGV4cHJlc3Npb25zICovCisJTGlzdAkgICAqYXJnczsKKworCS8qIE9SREVSIEJZIChsaXN0 IG9mIFNvcnRHcm91cENsYXVzZSkgKi8KKwlMaXN0CSAgICphZ2dvcmRlcjsKKworCS8qIERJ U1RJTkNUIChsaXN0IG9mIFNvcnRHcm91cENsYXVzZSkgKi8KKwlMaXN0CSAgICphZ2dkaXN0 aW5jdDsKKworCS8qIEZJTFRFUiBleHByZXNzaW9uLCBpZiBhbnkgKi8KKwlFeHByCSAgICph Z2dmaWx0ZXI7CisKKwkvKiB0cnVlIGlmIGFyZ3VtZW50IGxpc3Qgd2FzIHJlYWxseSAnKicg Ki8KKwlib29sCQlhZ2dzdGFyOworCisJLyoKKwkgKiB0cnVlIGlmIHZhcmlhZGljIGFyZ3Vt ZW50cyBoYXZlIGJlZW4gY29tYmluZWQgaW50byBhbiBhcnJheSBsYXN0CisJICogYXJndW1l bnQKKwkgKi8KKwlib29sCQlhZ2d2YXJpYWRpYzsKKworCS8qIGFnZ3JlZ2F0ZSBraW5kIChz ZWUgcGdfYWdncmVnYXRlLmgpICovCisJY2hhcgkJYWdna2luZDsKKworCS8qID4gMCBpZiBh Z2cgYmVsb25ncyB0byBvdXRlciBxdWVyeSAqLworCUluZGV4CQlhZ2dsZXZlbHN1cDsKKwor CS8qIGV4cGVjdGVkIGFnZy1zcGxpdHRpbmcgbW9kZSBvZiBwYXJlbnQgQWdnICovCisJQWdn U3BsaXQJYWdnc3BsaXQ7CisKKwkvKiB1bmlxdWUgSUQgd2l0aGluIHRoZSBBZ2cgbm9kZSAq LworCWludAkJCWFnZ25vOworCisJLyogdW5pcXVlIElEIG9mIHRyYW5zaXRpb24gc3RhdGUg aW4gdGhlIEFnZyAqLworCWludAkJCWFnZ3RyYW5zbm87CisKKwkvKiB0b2tlbiBsb2NhdGlv biwgb3IgLTEgaWYgdW5rbm93biAqLworCWludAkJCWxvY2F0aW9uOwogfSBBZ2dyZWY7CiAK IC8qCkBAIC0zNzgsMTIgKzQxOCwyMSBAQCB0eXBlZGVmIHN0cnVjdCBBZ2dyZWYKIHR5cGVk ZWYgc3RydWN0IEdyb3VwaW5nRnVuYwogewogCUV4cHIJCXhwcjsKLQlMaXN0CSAgICphcmdz OwkJCS8qIGFyZ3VtZW50cywgbm90IGV2YWx1YXRlZCBidXQga2VwdCBmb3IKLQkJCQkJCQkJ ICogYmVuZWZpdCBvZiBFWFBMQUlOIGV0Yy4gKi8KLQlMaXN0CSAgICpyZWZzOwkJCS8qIHJl c3NvcnRncm91cHJlZnMgb2YgYXJndW1lbnRzICovCi0JTGlzdAkgICAqY29sczsJCQkvKiBh Y3R1YWwgY29sdW1uIHBvc2l0aW9ucyBzZXQgYnkgcGxhbm5lciAqLwotCUluZGV4CQlhZ2ds ZXZlbHN1cDsJLyogc2FtZSBhcyBBZ2dyZWYuYWdnbGV2ZWxzdXAgKi8KLQlpbnQJCQlsb2Nh dGlvbjsJCS8qIHRva2VuIGxvY2F0aW9uICovCisKKwkvKiBhcmd1bWVudHMsIG5vdCBldmFs dWF0ZWQgYnV0IGtlcHQgZm9yIGJlbmVmaXQgb2YgRVhQTEFJTiBldGMuICovCisJTGlzdAkg ICAqYXJnczsKKworCS8qIHJlc3NvcnRncm91cHJlZnMgb2YgYXJndW1lbnRzICovCisJTGlz dAkgICAqcmVmczsKKworCS8qIGFjdHVhbCBjb2x1bW4gcG9zaXRpb25zIHNldCBieSBwbGFu bmVyICovCisJTGlzdAkgICAqY29sczsKKworCS8qIHNhbWUgYXMgQWdncmVmLmFnZ2xldmVs c3VwICovCisJSW5kZXgJCWFnZ2xldmVsc3VwOworCisJLyogdG9rZW4gbG9jYXRpb24gKi8K KwlpbnQJCQlsb2NhdGlvbjsKIH0gR3JvdXBpbmdGdW5jOwogCiAvKgpAQCAtNTQ4LDE0ICs1 OTcsMzAgQEAgdHlwZWRlZiBzdHJ1Y3QgTmFtZWRBcmdFeHByCiB0eXBlZGVmIHN0cnVjdCBP cEV4cHIKIHsKIAlFeHByCQl4cHI7Ci0JT2lkCQkJb3BubzsJCQkvKiBQR19PUEVSQVRPUiBP SUQgb2YgdGhlIG9wZXJhdG9yICovCi0JT2lkCQkJb3BmdW5jaWQ7CQkvKiBQR19QUk9DIE9J RCBvZiB1bmRlcmx5aW5nIGZ1bmN0aW9uICovCi0JT2lkCQkJb3ByZXN1bHR0eXBlOwkvKiBQ R19UWVBFIE9JRCBvZiByZXN1bHQgdmFsdWUgKi8KLQlib29sCQlvcHJldHNldDsJCS8qIHRy dWUgaWYgb3BlcmF0b3IgcmV0dXJucyBzZXQgKi8KLQlPaWQJCQlvcGNvbGxpZDsJCS8qIE9J RCBvZiBjb2xsYXRpb24gb2YgcmVzdWx0ICovCi0JT2lkCQkJaW5wdXRjb2xsaWQ7CS8qIE9J RCBvZiBjb2xsYXRpb24gdGhhdCBvcGVyYXRvciBzaG91bGQgdXNlICovCi0JTGlzdAkgICAq YXJnczsJCQkvKiBhcmd1bWVudHMgdG8gdGhlIG9wZXJhdG9yICgxIG9yIDIpICovCi0JaW50 CQkJbG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLwor CisJLyogUEdfT1BFUkFUT1IgT0lEIG9mIHRoZSBvcGVyYXRvciAqLworCU9pZAkJCW9wbm87 CisKKwkvKiBQR19QUk9DIE9JRCBvZiB1bmRlcmx5aW5nIGZ1bmN0aW9uICovCisJT2lkCQkJ b3BmdW5jaWQ7CisKKwkvKiBQR19UWVBFIE9JRCBvZiByZXN1bHQgdmFsdWUgKi8KKwlPaWQJ CQlvcHJlc3VsdHR5cGU7CisKKwkvKiB0cnVlIGlmIG9wZXJhdG9yIHJldHVybnMgc2V0ICov CisJYm9vbAkJb3ByZXRzZXQ7CisKKwkvKiBPSUQgb2YgY29sbGF0aW9uIG9mIHJlc3VsdCAq LworCU9pZAkJCW9wY29sbGlkOworCisJLyogT0lEIG9mIGNvbGxhdGlvbiB0aGF0IG9wZXJh dG9yIHNob3VsZCB1c2UgKi8KKwlPaWQJCQlpbnB1dGNvbGxpZDsKKworCS8qIGFyZ3VtZW50 cyB0byB0aGUgb3BlcmF0b3IgKDEgb3IgMikgKi8KKwlMaXN0CSAgICphcmdzOworCisJLyog dG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KKwlpbnQJCQlsb2NhdGlvbjsK IH0gT3BFeHByOwogCiAvKgpAQCAtNjA1LDE1ICs2NzAsMzAgQEAgdHlwZWRlZiBPcEV4cHIg TnVsbElmRXhwcjsKIHR5cGVkZWYgc3RydWN0IFNjYWxhckFycmF5T3BFeHByCiB7CiAJRXhw cgkJeHByOwotCU9pZAkJCW9wbm87CQkJLyogUEdfT1BFUkFUT1IgT0lEIG9mIHRoZSBvcGVy YXRvciAqLwotCU9pZAkJCW9wZnVuY2lkOwkJLyogUEdfUFJPQyBPSUQgb2YgY29tcGFyaXNv biBmdW5jdGlvbiAqLwotCU9pZAkJCWhhc2hmdW5jaWQ7CQkvKiBQR19QUk9DIE9JRCBvZiBo YXNoIGZ1bmMgb3IgSW52YWxpZE9pZCAqLwotCU9pZAkJCW5lZ2Z1bmNpZDsJCS8qIFBHX1BS T0MgT0lEIG9mIG5lZ2F0b3Igb2Ygb3BmdW5jaWQgZnVuY3Rpb24KLQkJCQkJCQkJICogb3Ig SW52YWxpZE9pZC4gIFNlZSBhYm92ZSAqLwotCWJvb2wJCXVzZU9yOwkJCS8qIHRydWUgZm9y IEFOWSwgZmFsc2UgZm9yIEFMTCAqLwotCU9pZAkJCWlucHV0Y29sbGlkOwkvKiBPSUQgb2Yg Y29sbGF0aW9uIHRoYXQgb3BlcmF0b3Igc2hvdWxkIHVzZSAqLwotCUxpc3QJICAgKmFyZ3M7 CQkJLyogdGhlIHNjYWxhciBhbmQgYXJyYXkgb3BlcmFuZHMgKi8KLQlpbnQJCQlsb2NhdGlv bjsJCS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3duICovCisKKwkvKiBQR19P UEVSQVRPUiBPSUQgb2YgdGhlIG9wZXJhdG9yICovCisJT2lkCQkJb3BubzsKKworCS8qIFBH X1BST0MgT0lEIG9mIGNvbXBhcmlzb24gZnVuY3Rpb24gKi8KKwlPaWQJCQlvcGZ1bmNpZDsK KworCS8qIFBHX1BST0MgT0lEIG9mIGhhc2ggZnVuYyBvciBJbnZhbGlkT2lkICovCisJT2lk CQkJaGFzaGZ1bmNpZDsKKworCS8qIFBHX1BST0MgT0lEIG9mIG5lZ2F0b3Igb2Ygb3BmdW5j aWQgZnVuY3Rpb24gb3IgSW52YWxpZE9pZC4gIFNlZSBhYm92ZSAqLworCU9pZAkJCW5lZ2Z1 bmNpZDsKKworCS8qIHRydWUgZm9yIEFOWSwgZmFsc2UgZm9yIEFMTCAqLworCWJvb2wJCXVz ZU9yOworCisJLyogT0lEIG9mIGNvbGxhdGlvbiB0aGF0IG9wZXJhdG9yIHNob3VsZCB1c2Ug Ki8KKwlPaWQJCQlpbnB1dGNvbGxpZDsKKworCS8qIHRoZSBzY2FsYXIgYW5kIGFycmF5IG9w ZXJhbmRzICovCisJTGlzdAkgICAqYXJnczsKKworCS8qIHRva2VuIGxvY2F0aW9uLCBvciAt MSBpZiB1bmtub3duICovCisJaW50CQkJbG9jYXRpb247CiB9IFNjYWxhckFycmF5T3BFeHBy OwogCiAvKgotLSAKMi4zNi4xCgo= --------------OmXBbY9gLek3zU1qqbyFxau4--