From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v4 RESEND] public/io/netif.h: make control ring hash protocol more general Date: Fri, 26 Feb 2016 16:52:20 +0000 Message-ID: <1456505540-21706-1-git-send-email-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xen.org with esmtp (Exim 4.84) (envelope-from ) id 1aZLmT-0003ig-Pm for xen-devel@lists.xenproject.org; Fri, 26 Feb 2016 17:02:17 +0000 List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Wei Liu , Paul Durrant , Ian Jackson , David Vrabel , Jan Beulich List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBtb2RpZmllZCB0aGUgY29udHJvbCByaW5nIHByb3RvY29sIChvZiB3aGljaCB0 aGVyZSBpcwpub3QgeWV0IGFuIGltcGxlbWVudGF0aW9uKSB0byBtYWtlIGl0IG1vcmUgZ2VuZXJh bC4gTW9zdCBvZiB0aGUKY29uY2VwdHMgYXJlIG5vdCBsaW1pdGVkIHRvIHRvZXBsaXR6IGhhc2hp bmcgc28gaXQncyBiZXN0IG5vdCB0bwptYWtlIHRoZW0gdW5uZWNlc3NhcmlseSBzcGVjaWZpYy4K CkFwYXJ0IGZyb20gY2hhbmdpbmcgdGhlIG5hbWVzIG9mIHZhcmlvdXMgZGVmaW5pdGlvbnMgYW5k IG1vZGlmeWluZwpjb21tZW50cywgdGhpcyBwYXRjaDoKCi0gQWRkcyBhIG5ldyBjb250cm9sIG1l c3NhZ2UgdHlwZSB0byBzZWxlY3QgYSBoYXNoIGFsZ29yaXRobS4KLSBBZGRzIGEgcmVmZXJlbmNl IGltcGxlbWVudGF0aW9uIG9mIHRoZSB0b2VwbGl0eiBoYXNoLgotIENoYW5nZXMgdGhlICd0b2Vw bGl0eicgZXh0cmEgaW5mbyBmcmFnbWVudCBpbnRvIGEgJ2hhc2gnIGV4dHJhCiAgaW5mbyBmcmFn bWVudCBhbmQgcmVwbGFjZXMgdGhlIG9jdGV0IG9mIHBhZGRpbmcgd2l0aCB0aGUgaW5kZXggb2YK ICB0aGUgYWxnb3JpdGhtIHRoYXQgd2FzIHVzZWQgdG8gY3JlYXRlIHRoZSBoYXNoIHZhbHVlLgot IFJlbGF4ZXMgdGhlIHJlc3RyaWN0aW9uIHRoYXQgdGhlIG1hcHBpbmcgdGFibGUgaGFzIHRvIGJl CiAgcG93ZXItb2YtMiBzaXplZC4KClRoZSBwYXRjaCBhbHNvIGZpeGVzIGEgZmV3IHNwZWxsaW5n IHR5cG9zIG5vdGljZWQgYWxvbmcgdGhlIHdheS4KClNpZ25lZC1vZmYtYnk6IFBhdWwgRHVycmFu dCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+CkNjOiBJYW4gSmFja3NvbiA8aWFuLmphY2tzb25A ZXUuY2l0cml4LmNvbT4KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQ2M6IFdl aSBMaXUgPHdlaS5saXV3MkBjaXRyaXguY29tPgpDYzogRGF2aWQgVnJhYmVsIDxkYXZpZC52cmFi ZWxAY2l0cml4LmNvbT4KLS0tCgp2MjoKICAtIFJlbW92ZSAnaW5saW5lJyBmcm9tIHJlZmVyZW5j ZSBoYXNoIGRlZmluaXRpb24gYW5kIG1ha2UgdGhlCiAgICBkZWZpbml0aW9uIG9wdGlvbmFsCgp2 MzoKICAtIFVzZSBYRU5fTkVUSUZfIHByZWZpeCBpbnN0ZWFkIG9mIE5FVElGXwogIC0gTWFrZSBo YXNoIG1hcHBpbmcgdGFibGUgb3B0aW9uYWwKICAtIEFsbG93IGEgaGFzaCBtYXBwaW5nIHRhYmxl IHRoYXQgaXMgbm90IHBvd2VyLW9mLXR3byBzaXplZAoKdjQ6CiAgLSBNb3JlIE5FVElGIC0+IFhF Tl9ORVRJRiBzdWJzdGl0dXRpb24KICAtIEFsc28gZGVmaW5lZCBjdHJsIG1lc3NhZ2Ugc3RydWN0 cyB3aXRoIHhlbl8gcHJlZml4IGFuZCBnZXQgcmlkCiAgICBvZiB0eXBlZGVmcwotLS0KIHhlbi9p bmNsdWRlL3B1YmxpYy9pby9uZXRpZi5oIHwgMzUwICsrKysrKysrKysrKysrKysrKysrKysrKysr Ky0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDIyNiBpbnNlcnRpb25zKCspLCAxMjQg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL2lvL25ldGlmLmgg Yi94ZW4vaW5jbHVkZS9wdWJsaWMvaW8vbmV0aWYuaAppbmRleCA4ZDgyNjI1Li5jYTAwNjE0IDEw MDY0NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvaW8vbmV0aWYuaAorKysgYi94ZW4vaW5jbHVk ZS9wdWJsaWMvaW8vbmV0aWYuaApAQCAtMTY0LDcgKzE2NCw3IEBACiAgKiBDb250cm9sIHJpbmcK ICAqID09PT09PT09PT09PQogICoKLSAqIFNvbWUgZmVhdHVyZXMsIHN1Y2ggYXMgdG9lcGxpdHog aGFzaGluZyAoZGV0YWlsZWQgYmVsb3cpLCByZXF1aXJlIGEKKyAqIFNvbWUgZmVhdHVyZXMsIHN1 Y2ggYXMgaGFzaGluZyAoZGV0YWlsZWQgYmVsb3cpLCByZXF1aXJlIGEKICAqIHNpZ25pZmljYW50 IGFtb3VudCBvZiBvdXQtb2YtYmFuZCBkYXRhIHRvIGJlIHBhc3NlZCBmcm9tIGZyb250ZW5kIHRv CiAgKiBiYWNrZW5kLiBVc2Ugb2YgeGVuc3RvcmUgaXMgbm90IHN1aXRhYmxlIGZvciBsYXJnZSBx dWFudGl0aWVzIG9mIGRhdGEKICAqIGJlY2F1c2Ugb2YgcXVvdGEgbGltaXRhdGlvbnMgYW5kIHNv IGEgZGVkaWNhdGVkICdjb250cm9sIHJpbmcnIGlzIHVzZWQuCkBAIC0xOTEsOCArMTkxLDggQEAK ICAqLwogCiAvKgotICogVG9lcGxpdHogaGFzaCB0eXBlcwotICogPT09PT09PT09PT09PT09PT09 PQorICogSGFzaCB0eXBlcworICogPT09PT09PT09PQogICoKICAqIEZvciB0aGUgcHVycG9zZXMg b2YgdGhlIGRlZmluaXRpb25zIGJlbG93LCAnUGFja2V0W10nIGlzIGFuIGFycmF5IG9mCiAgKiBv Y3RldHMgY29udGFpbmluZyBhbiBJUCBwYWNrZXQgd2l0aG91dCBvcHRpb25zLCAnQXJyYXlbWC4u WV0nIG1lYW5zIGEKQEAgLTIwNiwxMCArMjA2LDExIEBACiAgKiBCdWZmZXJbMC4uOF0gPSBQYWNr ZXRbMTIuLjE1XSAoc291cmNlIGFkZHJlc3MpICsKICAqICAgICAgICAgICAgICAgIFBhY2tldFsx Ni4uMTldIChkZXN0aW5hdGlvbiBhZGRyZXNzKQogICoKLSAqIFJlc3VsdCA9IFRvZXBsaXR6SGFz aChCdWZmZXIsIDgpCisgKiBSZXN1bHQgPSBIYXNoKEJ1ZmZlciwgOCkKICAqLwotI2RlZmluZSBf TkVUSUZfQ1RSTF9UT0VQTElUWl9IQVNIX0lQVjQgICAgIDAKLSNkZWZpbmUgTkVUSUZfQ1RSTF9U T0VQTElUWl9IQVNIX0lQVjQgICAgICAoMSA8PCBfTkVUSUZfQ1RSTF9UT0VQTElUWl9IQVNIX0lQ VjQpCisjZGVmaW5lIF9YRU5fTkVUSUZfQ1RSTF9IQVNIX1RZUEVfSVBWNCAwCisjZGVmaW5lIFhF Tl9ORVRJRl9DVFJMX0hBU0hfVFlQRV9JUFY0IFwKKyAgICAoMSA8PCBfWEVOX05FVElGX0NUUkxf SEFTSF9UWVBFX0lQVjQpCiAKIC8qCiAgKiBBIGhhc2ggY2FsY3VsYXRlZCBvdmVyIGFuIElQIHZl cnNpb24gNCBoZWFkZXIgYW5kIFRDUCBoZWFkZXIgYXMKQEAgLTIyMCwxMCArMjIxLDExIEBACiAg KiAgICAgICAgICAgICAgICAgUGFja2V0WzIwLi4yMV0gKHNvdXJjZSBwb3J0KSArCiAgKiAgICAg ICAgICAgICAgICAgUGFja2V0WzIyLi4yM10gKGRlc3RpbmF0aW9uIHBvcnQpCiAgKgotICogUmVz dWx0ID0gVG9lcGxpdHpIYXNoKEJ1ZmZlciwgMTIpCisgKiBSZXN1bHQgPSBIYXNoKEJ1ZmZlciwg MTIpCiAgKi8KLSNkZWZpbmUgX05FVElGX0NUUkxfVE9FUExJVFpfSEFTSF9JUFY0X1RDUCAxCi0j ZGVmaW5lIE5FVElGX0NUUkxfVE9FUExJVFpfSEFTSF9JUFY0X1RDUCAgKDEgPDwgX05FVElGX0NU UkxfVE9FUExJVFpfSEFTSF9JUFY0X1RDUCkKKyNkZWZpbmUgX1hFTl9ORVRJRl9DVFJMX0hBU0hf VFlQRV9JUFY0X1RDUCAxCisjZGVmaW5lIFhFTl9ORVRJRl9DVFJMX0hBU0hfVFlQRV9JUFY0X1RD UCBcCisgICAgKDEgPDwgX1hFTl9ORVRJRl9DVFJMX0hBU0hfVFlQRV9JUFY0X1RDUCkKIAogLyoK ICAqIEEgaGFzaCBjYWxjdWxhdGVkIG92ZXIgYW4gSVAgdmVyc2lvbiA2IGhlYWRlciBhcyBmb2xs b3dzOgpAQCAtMjMxLDEwICsyMzMsMTEgQEAKICAqIEJ1ZmZlclswLi4zMl0gPSBQYWNrZXRbOC4u MjNdICAoc291cmNlIGFkZHJlc3MgKSArCiAgKiAgICAgICAgICAgICAgICAgUGFja2V0WzI0Li4z OV0gKGRlc3RpbmF0aW9uIGFkZHJlc3MpCiAgKgotICogUmVzdWx0ID0gVG9lcGxpdHpIYXNoKEJ1 ZmZlciwgMzIpCisgKiBSZXN1bHQgPSBIYXNoKEJ1ZmZlciwgMzIpCiAgKi8KLSNkZWZpbmUgX05F VElGX0NUUkxfVE9FUExJVFpfSEFTSF9JUFY2ICAgICAyCi0jZGVmaW5lIE5FVElGX0NUUkxfVE9F UExJVFpfSEFTSF9JUFY2ICAgICAgKDEgPDwgX05FVElGX0NUUkxfVE9FUExJVFpfSEFTSF9JUFY2 KQorI2RlZmluZSBfWEVOX05FVElGX0NUUkxfSEFTSF9UWVBFX0lQVjYgMgorI2RlZmluZSBYRU5f TkVUSUZfQ1RSTF9IQVNIX1RZUEVfSVBWNiBcCisgICAgKDEgPDwgX1hFTl9ORVRJRl9DVFJMX0hB U0hfVFlQRV9JUFY2KQogCiAvKgogICogQSBoYXNoIGNhbGN1bGF0ZWQgb3ZlciBhbiBJUCB2ZXJz aW9uIDYgaGVhZGVyIGFuZCBUQ1AgaGVhZGVyIGFzCkBAIC0yNDUsMTQgKzI0OCw4NCBAQAogICog ICAgICAgICAgICAgICAgIFBhY2tldFs0MC4uNDFdIChzb3VyY2UgcG9ydCkgKwogICogICAgICAg ICAgICAgICAgIFBhY2tldFs0Mi4uNDNdIChkZXN0aW5hdGlvbiBwb3J0KQogICoKLSAqIFJlc3Vs dCA9IFRvZXBsaXR6SGFzaChCdWZmZXIsIDM2KQorICogUmVzdWx0ID0gSGFzaChCdWZmZXIsIDM2 KQorICovCisjZGVmaW5lIF9YRU5fTkVUSUZfQ1RSTF9IQVNIX1RZUEVfSVBWNl9UQ1AgMworI2Rl ZmluZSBYRU5fTkVUSUZfQ1RSTF9IQVNIX1RZUEVfSVBWNl9UQ1AgXAorICAgICgxIDw8IF9YRU5f TkVUSUZfQ1RSTF9IQVNIX1RZUEVfSVBWNl9UQ1ApCisKKy8qCisgKiBIYXNoIGFsZ29yaXRobXMK KyAqID09PT09PT09PT09PT09PQorICovCisKKyNkZWZpbmUgWEVOX05FVElGX0NUUkxfSEFTSF9B TEdPUklUSE1fTk9ORSAwCisKKy8qCisgKiBUb2VwbGl0eiBoYXNoOgorICovCisKKyNkZWZpbmUg WEVOX05FVElGX0NUUkxfSEFTSF9BTEdPUklUSE1fVE9FUExJVFogMQorCisvKgorICogVGhpcyBh bGdvcml0aG0gdXNlcyBhICdrZXknIGFzIHdlbGwgYXMgdGhlIGRhdGEgYnVmZmVyIGl0c2VsZi4K KyAqIChCdWZmZXJbXSBhbmQgS2V5W10gYXJlIHRyZWF0ZWQgYXMgc2hpZnQtcmVnaXN0ZXJzIHdo ZXJlIHRoZSBNU0Igb2YKKyAqIEJ1ZmZlci9LZXlbMF0gaXMgY29uc2lkZXJlZCAnbGVmdC1tb3N0 JyBhbmQgdGhlIExTQiBvZiBCdWZmZXIvS2V5W04tMV0KKyAqIGlzIHRoZSAncmlnaHQtbW9zdCcp LgorICoKKyAqIFZhbHVlID0gMAorICogRm9yIG51bWJlciBvZiBiaXRzIGluIEJ1ZmZlcltdCisg KiAgICBJZiAobGVmdC1tb3N0IGJpdCBvZiBCdWZmZXJbXSBpcyAxKQorICogICAgICAgIFZhbHVl IF49IGxlZnQtbW9zdCAzMiBiaXRzIG9mIEtleVtdCisgKiAgICBLZXlbXSA8PCAxCisgKiAgICBC dWZmZXJbXSA8PCAxCisgKgorICogVGhlIGNvZGUgYmVsb3cgaXMgcHJvdmlkZWQgZm9yIGNvbnZl bmllbmNlIHdoZXJlIGFuIG9wZXJhdGluZyBzeXN0ZW0KKyAqIGRvZXMgbm90IGFscmVhZHkgcHJv dmlkZSBhbiBpbXBsZW1lbnRhdGlvbi4KICAqLwotI2RlZmluZSBfTkVUSUZfQ1RSTF9UT0VQTElU Wl9IQVNIX0lQVjZfVENQIDMKLSNkZWZpbmUgTkVUSUZfQ1RSTF9UT0VQTElUWl9IQVNIX0lQVjZf VENQICAoMSA8PCBfTkVUSUZfQ1RSTF9UT0VQTElUWl9IQVNIX0lQVjZfVENQKQorI2lmZGVmIFhF Tl9ORVRJRl9ERUZJTkVfVE9FUExJVFoKK3N0YXRpYyB1aW50MzJfdCB4ZW5fbmV0aWZfdG9lcGxp dHpfaGFzaChjb25zdCB1aW50OF90ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgaW50IGtleWxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpidWYsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGJ1ZmxlbikKK3sKKyAgICB1bnNpZ25l ZCBpbnQga2V5aSwgYnVmaTsKKyAgICB1aW50NjRfdCBwcmVmaXggPSAwOworICAgIHVpbnQ2NF90 IGhhc2ggPSAwOworCisgICAgLyogUHJlLWxvYWQgcHJlZml4IHdpdGggdGhlIGZpcnN0IDggYnl0 ZXMgb2YgdGhlIGtleSAqLworICAgIGZvciAoa2V5aSA9IDA7IGtleWkgPCA4OyBrZXlpKyspIHsK KyAgICAgICAgcHJlZml4IDw8PSA4OworICAgICAgICBwcmVmaXggfD0gKGtleWkgPCBrZXlsZW4p ID8ga2V5W2tleWldIDogMDsKKyAgICB9CisKKyAgICBmb3IgKGJ1ZmkgPSAwOyBidWZpIDwgYnVm bGVuOyBidWZpKyspIHsKKyAgICAgICAgdWludDhfdCBieXRlID0gYnVmW2J1ZmldOworICAgICAg ICB1bnNpZ25lZCBpbnQgYml0OworCisgICAgICAgIGZvciAoYml0ID0gMDsgYml0IDwgODsgYml0 KyspIHsKKyAgICAgICAgICAgIGlmIChieXRlICYgMHg4MCkKKyAgICAgICAgICAgICAgICBoYXNo IF49IHByZWZpeDsKKyAgICAgICAgICAgIHByZWZpeCA8PD0gMTsKKyAgICAgICAgICAgIGJ5dGUg PDw9MTsKKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAqICdwcmVmaXgnIGhhcyBu b3cgYmVlbiBsZWZ0LXNoaWZ0ZWQgYnkgOCwgc28KKyAgICAgICAgICogT1IgaW4gdGhlIG5leHQg Ynl0ZS4KKyAgICAgICAgICovCisgICAgICAgIHByZWZpeCB8PSAoa2V5aSA8IGtleWxlbikgPyBr ZXlba2V5aV0gOiAwOworICAgICAgICBrZXlpKys7CisgICAgfQorCisgICAgLyogVGhlIHZhbGlk IHBhcnQgb2YgdGhlIGhhc2ggaXMgaW4gdGhlIHVwcGVyIDMyIGJpdHMuICovCisgICAgcmV0dXJu IGhhc2ggPj4gMzI7Cit9CisjZW5kaWYgLyogWEVOX05FVElGX0RFRklORV9UT0VQTElUWiAqLwog CiAvKgotICogQ29udHJvbCByZXF1ZXN0cyAobmV0aWZfY3RybF9yZXF1ZXN0X3QpCi0gKiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqIENvbnRyb2wgcmVxdWVzdHMg KHN0cnVjdCB4ZW5fbmV0aWZfY3RybF9yZXF1ZXN0KQorICogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgKgogICogQWxsIHJlcXVlc3RzIGhhdmUgdGhl IGZvbGxvd2luZyBmb3JtYXQ6CiAgKgpAQCAtMjY4LDI1ICszNDEsMjUgQEAKICAqIGRhdGFbXTog YW55IGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSByZXF1ZXN0IChkZXRlcm1pbmVkIGJ5IHR5cGUp CiAgKi8KIAotc3RydWN0IG5ldGlmX2N0cmxfcmVxdWVzdCB7CitzdHJ1Y3QgeGVuX25ldGlmX2N0 cmxfcmVxdWVzdCB7CiAgICAgdWludDE2X3QgaWQ7CiAgICAgdWludDE2X3QgdHlwZTsKIAotI2Rl ZmluZSBORVRJRl9DVFJMX1RZUEVfSU5WQUxJRCAgICAgICAgICAgICAgICAgICAgMAotI2RlZmlu ZSBORVRJRl9DVFJMX1RZUEVfR0VUX1RPRVBMSVRaX0ZMQUdTICAgICAgICAgMQotI2RlZmluZSBO RVRJRl9DVFJMX1RZUEVfU0VUX1RPRVBMSVRaX0ZMQUdTICAgICAgICAgMgotI2RlZmluZSBORVRJ Rl9DVFJMX1RZUEVfU0VUX1RPRVBMSVRaX0tFWSAgICAgICAgICAgMwotI2RlZmluZSBORVRJRl9D VFJMX1RZUEVfR0VUX1RPRVBMSVRaX01BUFBJTkdfT1JERVIgNAotI2RlZmluZSBORVRJRl9DVFJM X1RZUEVfU0VUX1RPRVBMSVRaX01BUFBJTkdfT1JERVIgNQotI2RlZmluZSBORVRJRl9DVFJMX1RZ UEVfU0VUX1RPRVBMSVRaX01BUFBJTkcgICAgICAgNgorI2RlZmluZSBYRU5fTkVUSUZfQ1RSTF9U WVBFX0lOVkFMSUQgICAgICAgICAgICAgICAwCisjZGVmaW5lIFhFTl9ORVRJRl9DVFJMX1RZUEVf R0VUX0hBU0hfRkxBR1MgICAgICAgIDEKKyNkZWZpbmUgWEVOX05FVElGX0NUUkxfVFlQRV9TRVRf SEFTSF9GTEFHUyAgICAgICAgMgorI2RlZmluZSBYRU5fTkVUSUZfQ1RSTF9UWVBFX1NFVF9IQVNI X0tFWSAgICAgICAgICAzCisjZGVmaW5lIFhFTl9ORVRJRl9DVFJMX1RZUEVfR0VUX0hBU0hfTUFQ UElOR19TSVpFIDQKKyNkZWZpbmUgWEVOX05FVElGX0NUUkxfVFlQRV9TRVRfSEFTSF9NQVBQSU5H X1NJWkUgNQorI2RlZmluZSBYRU5fTkVUSUZfQ1RSTF9UWVBFX1NFVF9IQVNIX01BUFBJTkcgICAg ICA2CisjZGVmaW5lIFhFTl9ORVRJRl9DVFJMX1RZUEVfU0VUX0hBU0hfQUxHT1JJVEhNICAgIDcK IAogICAgIHVpbnQzMl90IGRhdGFbM107CiB9OwotdHlwZWRlZiBzdHJ1Y3QgbmV0aWZfY3RybF9y ZXF1ZXN0IG5ldGlmX2N0cmxfcmVxdWVzdF90OwogCiAvKgotICogQ29udHJvbCByZXNwb25zZXMg KG5ldGlmX2N0cmxfcmVzcG9uc2VfdCkKLSAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CisgKiBDb250cm9sIHJlc3BvbnNlcyAoc3RydWN0IHhlbl9uZXRpZl9jdHJs X3Jlc3BvbnNlKQorICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KICAqCiAgKiBBbGwgcmVzcG9uc2VzIGhhdmUgdGhlIGZvbGxvd2luZyBmb3JtYXQ6 CiAgKgpAQCAtMzA0LDQ4ICszNzcsNzQgQEAgdHlwZWRlZiBzdHJ1Y3QgbmV0aWZfY3RybF9yZXF1 ZXN0IG5ldGlmX2N0cmxfcmVxdWVzdF90OwogICogICAgICAgc3RhdHVzKQogICovCiAKLXN0cnVj dCBuZXRpZl9jdHJsX3Jlc3BvbnNlIHsKK3N0cnVjdCB4ZW5fbmV0aWZfY3RybF9yZXNwb25zZSB7 CiAgICAgdWludDE2X3QgaWQ7CiAgICAgdWludDE2X3QgdHlwZTsKICAgICB1aW50MzJfdCBzdGF0 dXM7CiAKLSNkZWZpbmUgTkVUSUZfQ1RSTF9TVEFUVVNfU1VDQ0VTUyAgICAgICAgICAgMAotI2Rl ZmluZSBORVRJRl9DVFJMX1NUQVRVU19OT1RfU1VQUE9SVEVEICAgICAxCi0jZGVmaW5lIE5FVElG X0NUUkxfU1RBVFVTX0lOVkFMSURfUEFSQU1FVEVSIDIKLSNkZWZpbmUgTkVUSUZfQ1RSTF9TVEFU VVNfQlVGRkVSX09WRVJGTE9XICAgMworI2RlZmluZSBYRU5fTkVUSUZfQ1RSTF9TVEFUVVNfU1VD Q0VTUyAgICAgICAgICAgMAorI2RlZmluZSBYRU5fTkVUSUZfQ1RSTF9TVEFUVVNfTk9UX1NVUFBP UlRFRCAgICAgMQorI2RlZmluZSBYRU5fTkVUSUZfQ1RSTF9TVEFUVVNfSU5WQUxJRF9QQVJBTUVU RVIgMgorI2RlZmluZSBYRU5fTkVUSUZfQ1RSTF9TVEFUVVNfQlVGRkVSX09WRVJGTE9XICAgMwog CiAgICAgdWludDMyX3QgZGF0YTsKIH07Ci10eXBlZGVmIHN0cnVjdCBuZXRpZl9jdHJsX3Jlc3Bv bnNlIG5ldGlmX2N0cmxfcmVzcG9uc2VfdDsKIAogLyoKICAqIENvbnRyb2wgbWVzc2FnZXMKICAq ID09PT09PT09PT09PT09PT0KICAqCi0gKiBORVRJRl9DVFJMX1RZUEVfR0VUX1RPRVBMSVRaX0ZM QUdTCisgKiBYRU5fTkVUSUZfQ1RSTF9UWVBFX1NFVF9IQVNIX0FMR09SSVRITQorICogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBUaGlzIGlzIHNlbnQgYnkg dGhlIGZyb250ZW5kIHRvIHNldCB0aGUgZGVzaXJlZCBoYXNoIGFsZ29yaXRobS4KKyAqCisgKiBS ZXF1ZXN0OgorICoKKyAqICB0eXBlICAgID0gWEVOX05FVElGX0NUUkxfVFlQRV9TRVRfSEFTSF9B TEdPUklUSE0KKyAqICBkYXRhWzBdID0gYSBYRU5fTkVUSUZfQ1RSTF9IQVNIX0FMR09SSVRITV8q IHZhbHVlCisgKiAgZGF0YVsxXSA9IDAKKyAqICBkYXRhWzJdID0gMAorICoKKyAqIFJlc3BvbnNl OgorICoKKyAqICBzdGF0dXMgPSBYRU5fTkVUSUZfQ1RSTF9TVEFUVVNfTk9UX1NVUFBPUlRFRCAg ICAgLSBPcGVyYXRpb24gbm90CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkCisgKiAgICAgICAgICAgWEVOX05FVElGX0NUUkxf U1RBVFVTX0lOVkFMSURfUEFSQU1FVEVSIC0gVGhlIGFsZ29yaXRobSBpcyBub3QKKyAqICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWQK KyAqICAgICAgICAgICBYRU5fTkVUSUZfQ1RSTF9TVEFUVVNfU1VDQ0VTUyAgICAgICAgICAgLSBP cGVyYXRpb24gc3VjY2Vzc2Z1bAorICoKKyAqIE5PVEU6IFNldHRpbmcgZGF0YVswXSB0byBYRU5f TkVUSUZfQ1RSTF9IQVNIX0FMR09SSVRITV9OT05FIGRpc2FibGVzCisgKiAgICAgICBoYXNoaW5n IGFuZCB0aGUgYmFja2VuZCBpcyBmcmVlIHRvIGNob29zZSBob3cgaXQgc3RlZXJzIHBhY2tldHMK KyAqICAgICAgIHRvIHF1ZXVlcyAod2hpY2ggaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3VyKS4KKyAq CisgKiBYRU5fTkVUSUZfQ1RSTF9UWVBFX0dFVF9IQVNIX0ZMQUdTCiAgKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgotICogVGhpcyBpcyBzZW50IGJ5IHRoZSBmcm9udGVu ZCB0byBxdWVyeSB0aGUgdHlwZXMgb2YgdG9lcGxpdHoKLSAqIGhhc2ggc3VwcG9ydGVkIGJ5IHRo ZSBiYWNrZW5kLgorICogVGhpcyBpcyBzZW50IGJ5IHRoZSBmcm9udGVuZCB0byBxdWVyeSB0aGUg dHlwZXMgb2YgaGFzaCBzdXBwb3J0ZWQgYnkKKyAqIHRoZSBiYWNrZW5kLgogICoKICAqIFJlcXVl c3Q6CiAgKgotICogIHR5cGUgICAgPSBORVRJRl9DVFJMX1RZUEVfR0VUX1RPRVBMSVRaX0ZMQUdT CisgKiAgdHlwZSAgICA9IFhFTl9ORVRJRl9DVFJMX1RZUEVfR0VUX0hBU0hfRkxBR1MKICAqICBk YXRhWzBdID0gMAogICogIGRhdGFbMV0gPSAwCiAgKiAgZGF0YVsyXSA9IDAKICAqCiAgKiBSZXNw b25zZToKICAqCi0gKiAgc3RhdHVzID0gTkVUSUZfQ1RSTF9TVEFUVVNfTk9UX1NVUFBPUlRFRCAt IE9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkCi0gKiAgICAgICAgICAgTkVUSUZfQ1RSTF9TVEFUVVNf U1VDQ0VTUyAgICAgICAtIE9wZXJhdGlvbiBzdWNjZXNzZnVsCisgKiAgc3RhdHVzID0gWEVOX05F VElGX0NUUkxfU1RBVFVTX05PVF9TVVBQT1JURUQgLSBPcGVyYXRpb24gbm90IHN1cHBvcnRlZAor ICogICAgICAgICAgIFhFTl9ORVRJRl9DVFJMX1NUQVRVU19TVUNDRVNTICAgICAgIC0gT3BlcmF0 aW9uIHN1Y2Nlc3NmdWwKICAqICBkYXRhICAgPSBzdXBwb3J0ZWQgaGFzaCB0eXBlcyAoaWYgb3Bl cmF0aW9uIHdhcyBzdWNjZXNzZnVsKQogICoKLSAqIE5FVElGX0NUUkxfVFlQRV9TRVRfVE9FUExJ VFpfRkxBR1MKKyAqIE5PVEU6IEEgdmFsaWQgaGFzaCBhbGdvcml0aG0gbXVzdCBiZSBzZWxlY3Rl ZCBiZWZvcmUgdGhpcyBvcGVyYXRpb24gY2FuCisgKiAgICAgICBzdWNjZWVkLgorICoKKyAqIFhF Tl9ORVRJRl9DVFJMX1RZUEVfU0VUX0hBU0hfRkxBR1MKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KICAqCi0gKiBUaGlzIGlzIHNlbnQgYnkgdGhlIGZyb250ZW5kIHRvIHNl dCB0aGUgdHlwZXMgb2YgdG9lcGxpdHogaGFzaCB0aGF0Ci0gKiB0aGUgYmFja2VuZCBzaG91bGQg Y2FsY3VsYXRlLiAoU2VlIGFib3ZlIGZvciBoYXNoIHR5cGUgZGVmaW5pdGlvbnMpLgorICogVGhp cyBpcyBzZW50IGJ5IHRoZSBmcm9udGVuZCB0byBzZXQgdGhlIHR5cGVzIG9mIGhhc2ggdGhhdCB0 aGUgYmFja2VuZAorICogc2hvdWxkIGNhbGN1bGF0ZS4gKFNlZSBhYm92ZSBmb3IgaGFzaCB0eXBl IGRlZmluaXRpb25zKS4KICAqIE5vdGUgdGhhdCB0aGUgJ21heGltYWwnIHR5cGUgb2YgaGFzaCBz aG91bGQgYWx3YXlzIGJlIGNob3Nlbi4gRm9yCiAgKiBleGFtcGxlLCBpZiB0aGUgZnJvbnRlbmQg c2V0cyBib3RoIElQVjQgYW5kIElQVjRfVENQIGhhc2ggdHlwZXMgdGhlbgogICogdGhlIGxhdHRl ciBoYXNoIHR5cGUgc2hvdWxkIGJlIGNhbGN1bGF0ZWQgZm9yIGFueSBUQ1AgcGFja2V0IGFuZCB0 aGUKQEAgLTM1Myw0NSArNDUyLDM1IEBAIHR5cGVkZWYgc3RydWN0IG5ldGlmX2N0cmxfcmVzcG9u c2UgbmV0aWZfY3RybF9yZXNwb25zZV90OwogICoKICAqIFJlcXVlc3Q6CiAgKgotICogIHR5cGUg ICAgPSBORVRJRl9DVFJMX1RZUEVfU0VUX1RPRVBMSVRaX0ZMQUdTCi0gKiAgZGF0YVswXSA9IGJp dHdpc2UgT1Igb2YgTkVUSUZfQ1RSTF9UT0VQTElUWl9IQVNIXyogdmFsdWVzCisgKiAgdHlwZSAg ICA9IFhFTl9ORVRJRl9DVFJMX1RZUEVfU0VUX0hBU0hfRkxBR1MKKyAqICBkYXRhWzBdID0gYml0 d2lzZSBPUiBvZiBYRU5fTkVUSUZfQ1RSTF9IQVNIX1RZUEVfKiB2YWx1ZXMKICAqICBkYXRhWzFd ID0gMAogICogIGRhdGFbMl0gPSAwCiAgKgogICogUmVzcG9uc2U6CiAgKgotICogIHN0YXR1cyA9 IE5FVElGX0NUUkxfU1RBVFVTX05PVF9TVVBQT1JURUQgICAgIC0gT3BlcmF0aW9uIG5vdCBzdXBw b3J0ZWQKLSAqICAgICAgICAgICBORVRJRl9DVFJMX1NUQVRVU19JTlZBTElEX1BBUkFNRVRFUiAt IE9uZSBvciBtb3JlIGZsYWcgdmFsdWUKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlzIGludmFsaWQgb3IKLSAqICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc3VwcG9ydGVkCi0gKiAgICAgICAgICAgTkVU SUZfQ1RSTF9TVEFUVVNfU1VDQ0VTUyAgICAgICAgICAgLSBPcGVyYXRpb24gc3VjY2Vzc2Z1bAor ICogIHN0YXR1cyA9IFhFTl9ORVRJRl9DVFJMX1NUQVRVU19OT1RfU1VQUE9SVEVEICAgICAtIE9w ZXJhdGlvbiBub3QKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdXBwb3J0ZWQKKyAqICAgICAgICAgICBYRU5fTkVUSUZfQ1RSTF9TVEFUVVNf SU5WQUxJRF9QQVJBTUVURVIgLSBPbmUgb3IgbW9yZSBmbGFnCisgKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgaXMgaW52YWxpZCBvcgor ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu c3VwcG9ydGVkCisgKiAgICAgICAgICAgWEVOX05FVElGX0NUUkxfU1RBVFVTX1NVQ0NFU1MgICAg ICAgICAgIC0gT3BlcmF0aW9uIHN1Y2Nlc3NmdWwKICAqICBkYXRhICAgPSAwCiAgKgotICogTk9U RTogU2V0dGluZyBkYXRhWzBdIHRvIHplcm8gZGlzYWJsZXMgdG9lcGxpdHogaGFzaGluZyBhbmQg dGhlIGJhY2tlbmQKLSAqICAgICAgIGlzIGZyZWUgdG8gY2hvb3NlIGhvdyBpdCBzdGVlcnMgcGFj a2V0cyB0byBxdWV1ZXMgKHdoaWNoIGlzIHRoZQotICogICAgICAgZGVmYXVsdCBiZWhhdmlvdXIp LgorICogTk9URTogQSB2YWxpZCBoYXNoIGFsZ29yaXRobSBtdXN0IGJlIHNlbGVjdGVkIGJlZm9y ZSB0aGlzIG9wZXJhdGlvbiBjYW4KKyAqICAgICAgIHN1Y2NlZWQuCisgKiAgICAgICBBbHNvLCBz ZXR0aW5nIGRhdGFbMF0gdG8gemVybyBkaXNhYmxlcyBoYXNoaW5nIGFuZCB0aGUgYmFja2VuZAor ICogICAgICAgaXMgZnJlZSB0byBjaG9vc2UgaG93IGl0IHN0ZWVycyBwYWNrZXRzIHRvIHF1ZXVl cy4KICAqCi0gKiBORVRJRl9DVFJMX1RZUEVfU0VUX1RPRVBMSVRaX0tFWQorICogWEVOX05FVElG X0NUUkxfVFlQRV9TRVRfSEFTSF9LRVkKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiAgKgotICogVGhpcyBpcyBzZW50IGJ5IHRoZSBmcm9udGVuZCB0byBzZXQgdGhlIGtleSBv ZiB0aGUgdG9lcGxpdHogaGFzaCB0aGF0Ci0gKiB0aGUgYmFja2VuZCBzaG91bGQgY2FsY3VsYXRl LiBUaGUgdG9lcGxpdHogYWxnb3JpdGhtIGlzIGlsbHVzdHJhdGVkCi0gKiBieSB0aGUgZm9sbG93 aW5nIHBzZXVkby1jb2RlOgotICoKLSAqIChCdWZmZXJbXSBhbmQgS2V5W10gYXJlIHRyZWF0ZWQg YXMgc2hpZnQtcmVnaXN0ZXJzIHdoZXJlIHRoZSBNU0Igb2YKLSAqIEJ1ZmZlci9LZXlbMF0gaXMg Y29uc2lkZXJlZCAnbGVmdC1tb3N0JyBhbmQgdGhlIExTQiBvZiBCdWZmZXIvS2V5W04tMV0KLSAq IGlzIHRoZSAncmlnaHQtbW9zdCcpLgotICoKLSAqIFZhbHVlID0gMAotICogRm9yIG51bWJlciBv ZiBiaXRzIGluIEJ1ZmZlcltdCi0gKiAgICBJZiAobGVmdC1tb3N0IGJpdCBvZiBCdWZmZXJbXSBp cyAxKQotICogICAgICAgIFZhbHVlIF49IGxlZnQtbW9zdCAzMiBiaXRzIG9mIEtleVtdCi0gKiAg ICBLZXlbXSA8PCAxCi0gKiAgICBCdWZmZXJbXSA8PCAxCisgKiBUaGlzIGlzIHNlbnQgYnkgdGhl IGZyb250ZW5kIHRvIHNldCB0aGUga2V5IG9mIHRoZSBoYXNoIGlmIHRoZSBhbGdvcml0aG0KKyAq IHJlcXVpcmVzIGl0LiAoU2VlIGhhc2ggYWxnb3JpdGhtcyBhYm92ZSkuCiAgKgogICogUmVxdWVz dDoKICAqCi0gKiAgdHlwZSAgICA9IE5FVElGX0NUUkxfVFlQRV9TRVRfVE9FUExJVFpfS0VZCisg KiAgdHlwZSAgICA9IFhFTl9ORVRJRl9DVFJMX1RZUEVfU0VUX0hBU0hfS0VZCiAgKiAgZGF0YVsw XSA9IGdyYW50IHJlZmVyZW5jZSBvZiBwYWdlIGNvbnRhaW5pbmcgdGhlIGtleSAoYXNzdW1lZCB0 bwogICogICAgICAgICAgICBzdGFydCBhdCBiZWdpbm5pbmcgb2YgZ3JhbnQpCiAgKiAgZGF0YVsx XSA9IHNpemUgb2Yga2V5IGluIG9jdGV0cwpAQCAtMzk5LDExICs0ODgsMTMgQEAgdHlwZWRlZiBz dHJ1Y3QgbmV0aWZfY3RybF9yZXNwb25zZSBuZXRpZl9jdHJsX3Jlc3BvbnNlX3Q7CiAgKgogICog UmVzcG9uc2U6CiAgKgotICogIHN0YXR1cyA9IE5FVElGX0NUUkxfU1RBVFVTX05PVF9TVVBQT1JU RUQgICAgIC0gT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQKLSAqICAgICAgICAgICBORVRJRl9DVFJM X1NUQVRVU19JTlZBTElEX1BBUkFNRVRFUiAtIEtleSBzaXplIGlzIGludmFsaWQKLSAqICAgICAg ICAgICBORVRJRl9DVFJMX1NUQVRVU19CVUZGRVJfT1ZFUkZMT1cgICAtIEtleSBzaXplIGlzIGxh cmdlciB0aGFuCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0aGUgYmFja2VuZCBzdXBwb3J0cwotICogICAgICAgICAgIE5FVElGX0NUUkxfU1RBVFVT X1NVQ0NFU1MgICAgICAgICAgIC0gT3BlcmF0aW9uIHN1Y2Nlc3NmdWwKKyAqICBzdGF0dXMgPSBY RU5fTkVUSUZfQ1RSTF9TVEFUVVNfTk9UX1NVUFBPUlRFRCAgICAgLSBPcGVyYXRpb24gbm90Cisg KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vw cG9ydGVkCisgKiAgICAgICAgICAgWEVOX05FVElGX0NUUkxfU1RBVFVTX0lOVkFMSURfUEFSQU1F VEVSIC0gS2V5IHNpemUgaXMgaW52YWxpZAorICogICAgICAgICAgIFhFTl9ORVRJRl9DVFJMX1NU QVRVU19CVUZGRVJfT1ZFUkZMT1cgICAtIEtleSBzaXplIGlzIGxhcmdlcgorICogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYW4gdGhlIGJhY2tl bmQKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdXBwb3J0cworICogICAgICAgICAgIFhFTl9ORVRJRl9DVFJMX1NUQVRVU19TVUNDRVNTICAg ICAgICAgICAtIE9wZXJhdGlvbiBzdWNjZXNzZnVsCiAgKiAgZGF0YSAgID0gMAogICoKICAqIE5P VEU6IEFueSBrZXkgb2N0ZXRzIG5vdCBzcGVjaWZpZWQgYXJlIGFzc3VtZWQgdG8gYmUgemVybyAo dGhlIGtleQpAQCAtNDExLDY3ICs1MDIsNzMgQEAgdHlwZWRlZiBzdHJ1Y3QgbmV0aWZfY3RybF9y ZXNwb25zZSBuZXRpZl9jdHJsX3Jlc3BvbnNlX3Q7CiAgKiAgICAgICBpbnZhbGlkYXRlcyBhbnkg cHJldmlvdXMga2V5LCBoZW5jZSBzcGVjaWZ5aW5nIGEga2V5IHNpemUgb2YKICAqICAgICAgIHpl cm8gd2lsbCBjbGVhciB0aGUga2V5ICh3aGljaCBlbnN1cmVzIHRoYXQgdGhlIGNhbGN1bGF0ZWQg aGFzaAogICogICAgICAgd2lsbCBhbHdheXMgYmUgemVybykuCi0gKiAgICAgICBUaGUgbWF4aW11 bSBzaXplIG9mIGtleSBpcyBiYWNrZW5kIHNwZWNpZmljLCBidXQgaXMgYWxzbyBsaW1pdGVkCi0g KiAgICAgICBieSB0aGUgc2luZ2xlIGdyYW50IHJlZmVyZW5jZS4KKyAqICAgICAgIFRoZSBtYXhp bXVtIHNpemUgb2Yga2V5IGlzIGFsZ29yaXRobSBhbmQgYmFja2VuZCBzcGVjaWZpYywgYnV0Cisg KiAgICAgICBpcyBhbHNvIGxpbWl0ZWQgYnkgdGhlIHNpbmdsZSBncmFudCByZWZlcmVuY2UuCiAg KiAgICAgICBUaGUgZ3JhbnQgcmVmZXJlbmNlIG1heSBiZSByZWFkLW9ubHkgYW5kIG11c3QgcmVt YWluIHZhbGlkIHVudGlsCiAgKiAgICAgICB0aGUgcmVzcG9uc2UgaGFzIGJlZW4gcHJvY2Vzc2Vk LgogICoKLSAqIE5FVElGX0NUUkxfVFlQRV9HRVRfVE9FUExJVFpfTUFQUElOR19PUkRFUgotICog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBYRU5fTkVUSUZf Q1RSTF9UWVBFX0dFVF9IQVNIX01BUFBJTkdfU0laRQorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCi0gKiBUaGlzIGlzIHNlbnQgYnkgdGhlIGZyb250ZW5k IHRvIHF1ZXJ5IHRoZSBtYXhpbXVtIG9yZGVyIG9mIG1hcHBpbmcKLSAqIHRhYmxlIHN1cHBvcnRl ZCBieSB0aGUgYmFja2VuZC4gVGhlIG9yZGVyIGlzIHNwZWNpZmllZCBpbiB0ZXJtcyBvZgotICog dGFibGUgZW50cmllcyBpLmUuIHRoZSB0YWJsZSBtYXkgY29udGFpbiB1cCB0byAyXm9yZGVyIGVu dHJpZXMuCisgKiBUaGlzIGlzIHNlbnQgYnkgdGhlIGZyb250ZW5kIHRvIHF1ZXJ5IHRoZSBtYXhp bXVtIHNpemUgb2YgbWFwcGluZworICogdGFibGUgc3VwcG9ydGVkIGJ5IHRoZSBiYWNrZW5kLiBU aGUgc2l6ZSBpcyBzcGVjaWZpZWQgaW4gdGVybXMgb2YKKyAqIHRhYmxlIGVudHJpZXMuCiAgKgog ICogUmVxdWVzdDoKICAqCi0gKiAgdHlwZSAgICA9IE5FVElGX0NUUkxfVFlQRV9HRVRfVE9FUExJ VFpfTUFQUElOR19PUkRFUgorICogIHR5cGUgICAgPSBYRU5fTkVUSUZfQ1RSTF9UWVBFX0dFVF9I QVNIX01BUFBJTkdfU0laRQogICogIGRhdGFbMF0gPSAwCiAgKiAgZGF0YVsxXSA9IDAKICAqICBk YXRhWzJdID0gMAogICoKICAqIFJlc3BvbnNlOgogICoKLSAqICBzdGF0dXMgPSBORVRJRl9DVFJM X1NUQVRVU19OT1RfU1VQUE9SVEVEIC0gT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQKLSAqICAgICAg ICAgICBORVRJRl9DVFJMX1NUQVRVU19TVUNDRVNTICAgICAgIC0gT3BlcmF0aW9uIHN1Y2Nlc3Nm dWwKLSAqICBkYXRhICAgPSBtYXhpbXVtIG9yZGVyIG9mIG1hcHBpbmcgdGFibGUgKGlmIG9wZXJh dGlvbiB3YXMgc3VjY2Vzc2Z1bCkKKyAqICBzdGF0dXMgPSBYRU5fTkVUSUZfQ1RSTF9TVEFUVVNf Tk9UX1NVUFBPUlRFRCAtIE9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkCisgKiAgICAgICAgICAgWEVO X05FVElGX0NUUkxfU1RBVFVTX1NVQ0NFU1MgICAgICAgLSBPcGVyYXRpb24gc3VjY2Vzc2Z1bAor ICogIGRhdGEgICA9IG1heGltdW0gbnVtYmVyIG9mIGVudHJpZXMgYWxsb3dlZCBpbiB0aGUgbWFw cGluZyB0YWJsZQorICogICAgICAgICAgIChpZiBvcGVyYXRpb24gd2FzIHN1Y2Nlc3NmdWwpIG9y IHplcm8gaWYgYSBtYXBwaW5nIHRhYmxlIGlzCisgKiAgICAgICAgICAgbm90IHN1cHBvcnRlZCAo aS5lLiBoYXNoIG1hcHBpbmcgaXMgZG9uZSBvbmx5IGJ5IG1vZHVsYXIKKyAqICAgICAgICAgICBh cml0aG1ldGljKS4KICAqCi0gKiBORVRJRl9DVFJMX1RZUEVfU0VUX1RPRVBMSVRaX01BUFBJTkdf T1JERVIKLSAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICog WEVOX05FVElGX0NUUkxfVFlQRV9TRVRfSEFTSF9NQVBQSU5HX1NJWkUKKyAqIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCi0gKiBUaGlzIGlzIHNlbnQgYnkgdGhlIGZy b250ZW5kIHRvIHNldCB0aGUgYWN0dWFsIG9yZGVyIG9mIHRoZSBtYXBwaW5nCi0gKiB0YWJsZSB0 byBiZSB1c2VkIGJ5IHRoZSBiYWNrZW5kLiBUaGUgb3JkZXIgaXMgc3BlY2lmaWVkIGluIHRlcm1z IG9mCi0gKiB0YWJsZSBlbnRyaWVzIGkuZS4gdGhlIHRhYmxlIHdpbGwgY29udGFpbiB0byAyXm9y ZGVyIGVudHJpZXMuCisgKiBUaGlzIGlzIHNlbnQgYnkgdGhlIGZyb250ZW5kIHRvIHNldCB0aGUg YWN0dWFsIHNpemUgb2YgdGhlIG1hcHBpbmcKKyAqIHRhYmxlIHRvIGJlIHVzZWQgYnkgdGhlIGJh Y2tlbmQuIFRoZSBzaXplIGlzIHNwZWNpZmllZCBpbiB0ZXJtcyBvZgorICogdGFibGUgZW50cmll cy4KICAqIEFueSBwcmV2aW91cyB0YWJsZSBpcyBpbnZhbGlkYXRlZCBieSB0aGlzIG1lc3NhZ2Ug YW5kIGFueSBuZXcgdGFibGUKLSAqIGlzIGFzc3VtZWQgdG8gYmUgemVybyBmaWxsZWQuIFRoZSBk ZWZhdWx0IG9yZGVyIGlzIHplcm8gYW5kIGhlbmNlIHRoZQotICogZGVmYXVsdCB0YWJsZSBjb250 YWlucyBhIHNpbmdsZSBlbnRyeSBtYXBwaW5nIGFsbCBoYXNoZXMgdG8gcXVldWUtMC4KKyAqIGlz IGFzc3VtZWQgdG8gYmUgemVybyBmaWxsZWQuCiAgKgogICogUmVxdWVzdDoKICAqCi0gKiAgdHlw ZSAgICA9IE5FVElGX0NUUkxfVFlQRV9TRVRfVE9FUExJVFpfTUFQUElOR19PUkRFUgotICogIGRh dGFbMF0gPSBvcmRlciBvZiBtYXBwaW5nIHRhYmxlCisgKiAgdHlwZSAgICA9IFhFTl9ORVRJRl9D VFJMX1RZUEVfU0VUX0hBU0hfTUFQUElOR19TSVpFCisgKiAgZGF0YVswXSA9IG51bWJlciBvZiBl bnRyaWVzIGluIG1hcHBpbmcgdGFibGUKICAqICBkYXRhWzFdID0gMAogICogIGRhdGFbMl0gPSAw CiAgKgogICogUmVzcG9uc2U6CiAgKgotICogIHN0YXR1cyA9IE5FVElGX0NUUkxfU1RBVFVTX05P VF9TVVBQT1JURUQgICAgIC0gT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQKLSAqICAgICAgICAgICBO RVRJRl9DVFJMX1NUQVRVU19JTlZBTElEX1BBUkFNRVRFUiAtIFRhYmxlIG9yZGVyIGlzIGludmFs aWQKLSAqICAgICAgICAgICBORVRJRl9DVFJMX1NUQVRVU19TVUNDRVNTICAgICAgICAgICAtIE9w ZXJhdGlvbiBzdWNjZXNzZnVsCisgKiAgc3RhdHVzID0gWEVOX05FVElGX0NUUkxfU1RBVFVTX05P VF9TVVBQT1JURUQgICAgIC0gT3BlcmF0aW9uIG5vdAorICogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZAorICogICAgICAgICAgIFhF Tl9ORVRJRl9DVFJMX1NUQVRVU19JTlZBTElEX1BBUkFNRVRFUiAtIFRhYmxlIHNpemUgaXMgaW52 YWxpZAorICogICAgICAgICAgIFhFTl9ORVRJRl9DVFJMX1NUQVRVU19TVUNDRVNTICAgICAgICAg ICAtIE9wZXJhdGlvbiBzdWNjZXNzZnVsCiAgKiAgZGF0YSAgID0gMAogICoKLSAqIE5FVElGX0NU UkxfVFlQRV9TRVRfVE9FUExJVFpfTUFQUElORworICogTk9URTogU2V0dGluZyBkYXRhWzBdIHRv IDAgbWVhbnMgdGhhdCBoYXNoIG1hcHBpbmcgc2hvdWxkIGJlIGRvbmUKKyAqICAgICAgIHVzaW5n IG1vZHVsYXIgYXJpdGhtZXRpYy4KKyAqCisgKiBYRU5fTkVUSUZfQ1RSTF9UWVBFX1NFVF9IQVNI X01BUFBJTkcKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoKICAq IFRoaXMgaXMgc2VudCBieSB0aGUgZnJvbnRlbmQgdG8gc2V0IHRoZSBjb250ZW50IG9mIHRoZSB0 YWJsZSBtYXBwaW5nCi0gKiB0b2VwbGl0eiBoYXNoIHZhbHVlIHRvIHF1ZXVlIG51bWJlci4gVGhl IGJhY2tlbmQgc2hvdWxkIGNhbGN1bGF0ZSB0aGUKLSAqIGhhc2ggZnJvbSB0aGUgcGFja2V0IGhl YWRlciwgdXNlIGl0IGFzIGFuIGluZGV4IGludG8gdGhlIHRhYmxlIChtb2R1bG8KLSAqIHRoZSBz aXplIG9mIHRoZSB0YWJsZSkgYW5kIHRoZW4gc3RlZXIgdGhlIHBhY2tldCB0byB0aGUgcXVldWUg bnVtYmVyCi0gKiBmb3VuZCBhdCB0aGF0IGluZGV4LgorICogaGFzaCB2YWx1ZSB0byBxdWV1ZSBu dW1iZXIuIFRoZSBiYWNrZW5kIHNob3VsZCBjYWxjdWxhdGUgdGhlIGhhc2ggZnJvbQorICogdGhl IHBhY2tldCBoZWFkZXIsIHVzZSBpdCBhcyBhbiBpbmRleCBpbnRvIHRoZSB0YWJsZSAobW9kdWxv IHRoZSBzaXplCisgKiBvZiB0aGUgdGFibGUpIGFuZCB0aGVuIHN0ZWVyIHRoZSBwYWNrZXQgdG8g dGhlIHF1ZXVlIG51bWJlciBmb3VuZCBhdAorICogdGhhdCBpbmRleC4KICAqCiAgKiBSZXF1ZXN0 OgogICoKLSAqICB0eXBlICAgID0gTkVUSUZfQ1RSTF9UWVBFX1NFVF9UT0VQTElUWl9NQVBQSU5H CisgKiAgdHlwZSAgICA9IFhFTl9ORVRJRl9DVFJMX1RZUEVfU0VUX0hBU0hfTUFQUElORwogICog IGRhdGFbMF0gPSBncmFudCByZWZlcmVuY2Ugb2YgcGFnZSBjb250YWluaW5nIHRoZSBtYXBwaW5n IChzdWItKXRhYmxlCiAgKiAgICAgICAgICAgIChhc3N1bWVkIHRvIHN0YXJ0IGF0IGJlZ2lubmlu ZyBvZiBncmFudCkKICAqICBkYXRhWzFdID0gc2l6ZSBvZiAoc3ViLSl0YWJsZSBpbiBlbnRyaWVz CkBAIC00NzksMTIgKzU3NiwxNCBAQCB0eXBlZGVmIHN0cnVjdCBuZXRpZl9jdHJsX3Jlc3BvbnNl IG5ldGlmX2N0cmxfcmVzcG9uc2VfdDsKICAqCiAgKiBSZXNwb25zZToKICAqCi0gKiAgc3RhdHVz ID0gTkVUSUZfQ1RSTF9TVEFUVVNfTk9UX1NVUFBPUlRFRCAgICAgLSBPcGVyYXRpb24gbm90IHN1 cHBvcnRlZAotICogICAgICAgICAgIE5FVElGX0NUUkxfU1RBVFVTX0lOVkFMSURfUEFSQU1FVEVS IC0gVGFibGUgc2l6ZSBvciBjb250ZW50IGlzCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnZhbGlkCi0gKiAgICAgICAgICAgTkVUSUZfQ1RSTF9T VEFUVVNfQlVGRkVSX09WRVJGTE9XICAgLSBUYWJsZSBzaXplIGlzIGxhcmdlciB0aGFuCi0gKiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYmFja2Vu ZCBzdXBwb3J0cwotICogICAgICAgICAgIE5FVElGX0NUUkxfU1RBVFVTX1NVQ0NFU1MgICAgICAg ICAgIC0gT3BlcmF0aW9uIHN1Y2Nlc3NmdWwKKyAqICBzdGF0dXMgPSBYRU5fTkVUSUZfQ1RSTF9T VEFUVVNfTk9UX1NVUFBPUlRFRCAgICAgLSBPcGVyYXRpb24gbm90CisgKiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkCisgKiAgICAg ICAgICAgWEVOX05FVElGX0NUUkxfU1RBVFVTX0lOVkFMSURfUEFSQU1FVEVSIC0gVGFibGUgc2l6 ZSBvciBjb250ZW50CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaXMgaW52YWxpZAorICogICAgICAgICAgIFhFTl9ORVRJRl9DVFJMX1NUQVRV U19CVUZGRVJfT1ZFUkZMT1cgICAtIFRhYmxlIHNpemUgaXMgbGFyZ2VyCisgKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhbiB0aGUgYmFja2Vu ZAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN1cHBvcnRzCisgKiAgICAgICAgICAgWEVOX05FVElGX0NUUkxfU1RBVFVTX1NVQ0NFU1MgICAg ICAgICAgIC0gT3BlcmF0aW9uIHN1Y2Nlc3NmdWwKICAqICBkYXRhICAgPSAwCiAgKgogICogTk9U RTogVGhlIG92ZXJhbGwgdGFibGUgaGFzIHRoZSBmb2xsb3dpbmcgZm9ybWF0OgpAQCAtNTAwLDkg KzU5OSw4IEBAIHR5cGVkZWYgc3RydWN0IG5ldGlmX2N0cmxfcmVzcG9uc2UgbmV0aWZfY3RybF9y ZXNwb25zZV90OwogICogICAgICAgfCAgICAgIG1hcHBpbmdbTi0yXSAgICAgfCAgICAgIG1hcHBp bmdbTi0xXSAgICAgfAogICogICAgICAgKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0t LS0tKy0tLS0tKy0tLS0tKwogICoKLSAqICAgICAgIHdoZXJlIE4gPT0gMl5vcmRlciBhcyBzcGVj aWZpZWQgYnkgYQotICogICAgICAgTkVUSUZfQ1RSTF9UWVBFX1NFVF9UT0VQTElUWl9NQVBQSU5H X09SREVSIG1lc3NhZ2UgYW5kIGVhY2gKLSAqICAgICAgIG1hcHBpbmcgbXVzdCBzcGVjaWZpZXMg YSBxdWV1ZSBiZXR3ZWVuIDAgYW5kCisgKiAgICAgICB3aGVyZSBOIGlzIHNwZWNpZmllZCBieSBh IFhFTl9ORVRJRl9DVFJMX1RZUEVfU0VUX0hBU0hfTUFQUElOR19TSVpFCisgKiAgICAgICBtZXNz YWdlIGFuZCBlYWNoICBtYXBwaW5nIG11c3Qgc3BlY2lmaWVzIGEgcXVldWUgYmV0d2VlbiAwIGFu ZAogICogICAgICAgIm11bHRpLXF1ZXVlLW51bS1xdWV1ZXMiIChzZWUgYWJvdmUpLgogICogICAg ICAgVGhlIGJhY2tlbmQgbWF5IHN1cHBvcnQgYSBtYXBwaW5nIHRhYmxlIGxhcmdlciB0aGFuIGNh biBiZQogICogICAgICAgbWFwcGVkIGJ5IGEgc2luZ2xlIGdyYW50IHJlZmVyZW5jZS4gVGh1cyBz dWItdGFibGVzIHdpdGhpbiBhCkBAIC01MTMsNyArNjExLDkgQEAgdHlwZWRlZiBzdHJ1Y3QgbmV0 aWZfY3RybF9yZXNwb25zZSBuZXRpZl9jdHJsX3Jlc3BvbnNlX3Q7CiAgKiAgICAgICB0aGUgcmVz cG9uc2UgaGFzIGJlZW4gcHJvY2Vzc2VkLgogICovCiAKLURFRklORV9SSU5HX1RZUEVTKG5ldGlm X2N0cmwsIHN0cnVjdCBuZXRpZl9jdHJsX3JlcXVlc3QsIHN0cnVjdCBuZXRpZl9jdHJsX3Jlc3Bv bnNlKTsKK0RFRklORV9SSU5HX1RZUEVTKHhlbl9uZXRpZl9jdHJsLAorICAgICAgICAgICAgICAg ICAgc3RydWN0IHhlbl9uZXRpZl9jdHJsX3JlcXVlc3QsCisgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgeGVuX25ldGlmX2N0cmxfcmVzcG9uc2UpOwogCiAvKgogICogR3Vlc3QgdHJhbnNtaXQKQEAg LTUzMSw3ICs2MzEsNyBAQCBERUZJTkVfUklOR19UWVBFUyhuZXRpZl9jdHJsLCBzdHJ1Y3QgbmV0 aWZfY3RybF9yZXF1ZXN0LCBzdHJ1Y3QgbmV0aWZfY3RybF9yZXNwbwogICogIC4uLgogICogIEZy YWdtZW50IE46IG5ldGlmX3R4X3JlcXVlc3RfdCAgLSAob25seSBpZiBmcmFnbWVudCBOLTEgZmxh Z3MgaW5jbHVkZQogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUVFhG X21vcmVfZGF0YSAtIGZsYWdzIG9uIHByZWNlZGluZwotICogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZXh0cmFzIGFyZSBub3QgcmVsZXZlbnQgaGVyZSkKKyAqICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhcyBhcmUgbm90IHJlbGV2YW50IGhlcmUp CiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzID0gMAogICogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplID0gZnJhZ21lbnQgc2l6ZQogICoK QEAgLTU4OSw3ICs2ODksNyBAQCBERUZJTkVfUklOR19UWVBFUyhuZXRpZl9jdHJsLCBzdHJ1Y3Qg bmV0aWZfY3RybF9yZXF1ZXN0LCBzdHJ1Y3QgbmV0aWZfY3RybF9yZXNwbwogICogIC4uLgogICog IEZyYWdtZW50IE46IG5ldGlmX3J4X3JlcXVlc3RfdCAgLSAob25seSBpZiBmcmFnbWVudCBOLTEg ZmxhZ3MgaW5jbHVkZQogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVU UlhGX21vcmVfZGF0YSAtIGZsYWdzIG9uIHByZWNlZGluZwotICogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZXh0cmFzIGFyZSBub3QgcmVsZXZlbnQgaGVyZSkKKyAqICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhcyBhcmUgbm90IHJlbGV2YW50IGhl cmUpCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzID0gMAogICog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplID0gZnJhZ21lbnQgc2l6ZQog ICoKQEAgLTYzMSw3ICs3MzEsNyBAQCBERUZJTkVfUklOR19UWVBFUyhuZXRpZl9jdHJsLCBzdHJ1 Y3QgbmV0aWZfY3RybF9yZXF1ZXN0LCBzdHJ1Y3QgbmV0aWZfY3RybF9yZXNwbwogICogICAgICAg ZGVzY3JpYmVkIGJlbG93LCBleHRyYSBpbmZvIHN0cnVjdHVyZXMgb3ZlcmxheSB0aGUgaWQgZmll bGQpLgogICogICAgICAgSW5zdGVhZCBpdCBhc3N1bWVzIHRoYXQgcmVzcG9uc2VzIGFsd2F5cyBh cHBlYXIgaW4gdGhlIHNhbWUgcmluZwogICogICAgICAgc2xvdCBhcyB0aGVpciBjb3JyZXNwb25k aW5nIHJlcXVlc3QuIFRodXMsIHRvIG1haW50YWluCi0gKiAgICAgICBjb21wYXRpYmlsdHksIGJh Y2tlbmRzIG11c3QgbWFrZSBzdXJlIHRoaXMgaXMgdGhlIGNhc2UuCisgKiAgICAgICBjb21wYXRp YmlsaXR5LCBiYWNrZW5kcyBtdXN0IG1ha2Ugc3VyZSB0aGlzIGlzIHRoZSBjYXNlLgogICoKICAq IEV4dHJhIEluZm8KICAqID09PT09PT09PT0KQEAgLTY5NiwyMSArNzk2LDIzIEBAIERFRklORV9S SU5HX1RZUEVTKG5ldGlmX2N0cmwsIHN0cnVjdCBuZXRpZl9jdHJsX3JlcXVlc3QsIHN0cnVjdCBu ZXRpZl9jdHJsX3Jlc3BvCiAgKiBmbGFnczogWEVOX05FVElGX0VYVFJBX0ZMQUdfKgogICogYWRk cjogYWRkcmVzcyB0byBhZGQvcmVtb3ZlCiAgKgotICogWEVOX05FVElGX0VYVFJBX1RZUEVfVE9F UExJVFo6CisgKiBYRU5fTkVUSUZfRVhUUkFfVFlQRV9IQVNIOgogICoKICAqIEEgYmFja2VuZCB0 aGF0IHN1cHBvcnRzIHRlb3BsaXR6IGhhc2hpbmcgaXMgYXNzdW1lZCB0byBhY2NlcHQKICAqIHRo aXMgdHlwZSBvZiBleHRyYSBpbmZvIGluIHRyYW5zbWl0IHBhY2tldHMuCi0gKiBBIGZyb250ZW5k IHRoYXQgZW5hYmxlcyB0b2VwbGl0eiBoYXNoaW5nIGlzIGFzc3VtZWQgdG8gYWNjZXB0CisgKiBB IGZyb250ZW5kIHRoYXQgZW5hYmxlcyBoYXNoaW5nIGlzIGFzc3VtZWQgdG8gYWNjZXB0CiAgKiB0 aGlzIHR5cGUgb2YgZXh0cmEgaW5mbyBpbiByZWNlaXZlIHBhY2tldHMuCiAgKgogICogICAgMCAg ICAgMSAgICAgMiAgICAgMyAgICAgNCAgICAgNSAgICAgNiAgICAgNyAgb2N0ZXQKICAqICstLS0t LSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKLSAqIHx0eXBlIHxm bGFnc3xodHlwZXwgcGFkIHxMU0IgLS0tLSB2YWx1ZSAtLS0tIE1TQnwKKyAqIHx0eXBlIHxmbGFn c3xodHlwZXwgYWxnIHxMU0IgLS0tLSB2YWx1ZSAtLS0tIE1TQnwKICAqICstLS0tLSstLS0tLSst LS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKICAqCi0gKiB0eXBlOiBNdXN0IGJl IFhFTl9ORVRJRl9FWFRSQV9UWVBFX1RPRVBMSVRaCisgKiB0eXBlOiBNdXN0IGJlIFhFTl9ORVRJ Rl9FWFRSQV9UWVBFX0hBU0gKICAqIGZsYWdzOiBYRU5fTkVUSUZfRVhUUkFfRkxBR18qCi0gKiBo dHlwZTogSGFzaCB0eXBlIChvbmUgb2YgX05FVElGX0NUUkxfVE9FUExJVFpfSEFTSF8qIC0gc2Vl IGFib3ZlKQorICogaHR5cGU6IEhhc2ggdHlwZSAob25lIG9mIF9YRU5fTkVUSUZfQ1RSTF9IQVNI X1RZUEVfKiAtIHNlZSBhYm92ZSkKKyAqIGFsZzogVGhlIGFsZ29yaXRobSB1c2VkIHRvIGNhbGN1 bGF0ZSB0aGUgaGFzaCAob25lIG9mCisgKiAgICAgIFhFTl9ORVRJRl9DVFJMX0hBU0hfVFlQRV9B TEdPUklUSE1fKiAtIHNlZSBhYm92ZSkKICAqIHZhbHVlOiBIYXNoIHZhbHVlCiAgKi8KIApAQCAt NzQ1LDcgKzg0Nyw3IEBAIHR5cGVkZWYgc3RydWN0IG5ldGlmX3R4X3JlcXVlc3QgbmV0aWZfdHhf cmVxdWVzdF90OwogI2RlZmluZSBYRU5fTkVUSUZfRVhUUkFfVFlQRV9HU08gICAgICAgKDEpICAv KiB1LmdzbyAqLwogI2RlZmluZSBYRU5fTkVUSUZfRVhUUkFfVFlQRV9NQ0FTVF9BREQgKDIpICAv KiB1Lm1jYXN0ICovCiAjZGVmaW5lIFhFTl9ORVRJRl9FWFRSQV9UWVBFX01DQVNUX0RFTCAoMykg IC8qIHUubWNhc3QgKi8KLSNkZWZpbmUgWEVOX05FVElGX0VYVFJBX1RZUEVfVE9FUExJVFogICg0 KSAgLyogdS50b2VwbGl0eiAqLworI2RlZmluZSBYRU5fTkVUSUZfRVhUUkFfVFlQRV9IQVNIICAg ICAgKDQpICAvKiB1Lmhhc2ggKi8KICNkZWZpbmUgWEVOX05FVElGX0VYVFJBX1RZUEVfTUFYICAg ICAgICg1KQogCiAvKiBuZXRpZl9leHRyYV9pbmZvX3QgZmxhZ3MuICovCkBAIC03NzYsOSArODc4 LDkgQEAgc3RydWN0IG5ldGlmX2V4dHJhX2luZm8gewogICAgICAgICB9IG1jYXN0OwogICAgICAg ICBzdHJ1Y3QgewogICAgICAgICAgICAgdWludDhfdCB0eXBlOwotICAgICAgICAgICAgdWludDhf dCBwYWQ7CisgICAgICAgICAgICB1aW50OF90IGFsZ29yaXRobTsKICAgICAgICAgICAgIHVpbnQ4 X3QgdmFsdWVbNF07Ci0gICAgICAgIH0gdG9lcGxpdHo7CisgICAgICAgIH0gaGFzaDsKICAgICAg ICAgdWludDE2X3QgcGFkWzNdOwogICAgIH0gdTsKIH07Ci0tIAoyLjEuNAoKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxp c3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVs Cg==