From: Oleksandr Andrushchenko Subject: [PATCH v4 1/1] cameraif: add ABI for para-virtual camera Date: Tue, 15 Jan 2019 11:38:53 +0200 Message-ID: <20190115093853.15495-2-andr2000@gmail.com> References: <20190115093853.15495-1-andr2000@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gjLBe-0005fj-GS for xen-devel@lists.xenproject.org; Tue, 15 Jan 2019 09:39:10 +0000 Received: by mail-lf1-x142.google.com with SMTP id b20so1485014lfa.12 for ; Tue, 15 Jan 2019 01:39:06 -0800 (PST) In-Reply-To: <20190115093853.15495-1-andr2000@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org, konrad.wilk@oracle.com, jgross@suse.com, boris.ostrovsky@oracle.com, mchehab@kernel.org, linux-media@vger.kernel.org, sakari.ailus@linux.intel.com, koji.matsuoka.xm@renesas.com, hverkuil@xs4all.nl Cc: Oleksandr Andrushchenko List-Id: xen-devel@lists.xenproject.org RnJvbTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVw YW0uY29tPgoKVGhpcyBpcyB0aGUgQUJJIGZvciB0aGUgdHdvIGhhbHZlcyBvZiBhIHBhcmEtdmly dHVhbGl6ZWQKY2FtZXJhIGRyaXZlciB3aGljaCBleHRlbmRzIFhlbidzIHJlYWNoIG11bHRpbWVk aWEgY2FwYWJpbGl0aWVzIGV2ZW4KZmFydGhlciBlbmFibGluZyBpdCBmb3IgdmlkZW8gY29uZmVy ZW5jaW5nLCBJbi1WZWhpY2xlIEluZm90YWlubWVudCwKaGlnaCBkZWZpbml0aW9uIG1hcHMgZXRj LgoKVGhlIGluaXRpYWwgZ29hbCBpcyB0byBzdXBwb3J0IG1vc3QgbmVlZGVkIGZ1bmN0aW9uYWxp dHkgd2l0aCB0aGUKZmluYWwgaWRlYSB0byBtYWtlIGl0IHBvc3NpYmxlIHRvIGV4dGVuZCB0aGUg cHJvdG9jb2wgaWYgbmVlZCBiZToKCjEuIFByb3ZpZGUgbWVhbnMgZm9yIGJhc2UgdmlydHVhbCBk ZXZpY2UgY29uZmlndXJhdGlvbjoKIC0gcGl4ZWwgZm9ybWF0cwogLSByZXNvbHV0aW9ucwogLSBm cmFtZSByYXRlcwoyLiBTdXBwb3J0IGJhc2ljIGNhbWVyYSBjb250cm9sczoKIC0gY29udHJhc3QK IC0gYnJpZ2h0bmVzcwogLSBodWUKIC0gc2F0dXJhdGlvbgozLiBTdXBwb3J0IHN0cmVhbWluZyBj b250cm9sCgpTaWduZWQtb2ZmLWJ5OiBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyA8b2xla3NhbmRy X2FuZHJ1c2hjaGVua29AZXBhbS5jb20+Ci0tLQogeGVuL2luY2x1ZGUvcHVibGljL2lvL2NhbWVy YWlmLmggfCAxMzY0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5n ZWQsIDEzNjQgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL3B1 YmxpYy9pby9jYW1lcmFpZi5oCgpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL2lvL2Nh bWVyYWlmLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvaW8vY2FtZXJhaWYuaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjI0NmViMjQ1N2Y0MAotLS0gL2Rldi9udWxsCisr KyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9pby9jYW1lcmFpZi5oCkBAIC0wLDAgKzEsMTM2NCBAQAor LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgorICogY2FtZXJhaWYuaAorICoKKyAqIFVuaWZpZWQgY2Ft ZXJhIGRldmljZSBJL08gaW50ZXJmYWNlIGZvciBYZW4gZ3Vlc3QgT1Nlcy4KKyAqCisgKiBQZXJt aXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBv YnRhaW5pbmcgYSBjb3B5CisgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3Vt ZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KKyAqIGRlYWwgaW4gdGhlIFNvZnR3 YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhl CisgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmli dXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKKyAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwg YW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNo ZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAq IFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNo YWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25z IG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElT IiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwg SU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC SUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklO R0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhP TERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJ TElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNF LCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZU V0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisg KgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgRVBBTSBTeXN0ZW1zIEluYy4KKyAqCisgKiBB dXRob3I6IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIDxvbGVrc2FuZHJfYW5kcnVzaGNoZW5rb0Bl cGFtLmNvbT4KKyAqLworCisjaWZuZGVmIF9fWEVOX1BVQkxJQ19JT19DQU1FUkFJRl9IX18KKyNk ZWZpbmUgX19YRU5fUFVCTElDX0lPX0NBTUVSQUlGX0hfXworCisjaW5jbHVkZSAicmluZy5oIgor I2luY2x1ZGUgIi4uL2dyYW50X3RhYmxlLmgiCisKKy8qCisgKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3RvY29sIHZlcnNpb24KKyAqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKKyAqLworI2RlZmluZSBYRU5DQU1FUkFfUFJPVE9DT0xfVkVSU0lPTiAg ICAgIjEiCisKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAg IEZlYXR1cmUgYW5kIFBhcmFtZXRlciBOZWdvdGlhdGlvbgorICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgorICoKKyAqIEZyb250LT5iYWNrIG5vdGlmaWNhdGlvbnM6IHdoZW4gZW5xdWV1aW5nIGEgbmV3 IHJlcXVlc3QsIHNlbmRpbmcgYQorICogbm90aWZpY2F0aW9uIGNhbiBiZSBtYWRlIGNvbmRpdGlv bmFsIG9uIHhlbmNhbWVyYV9yZXEgKGkuZS4sIHRoZSBnZW5lcmljCisgKiBob2xkLW9mZiBtZWNo YW5pc20gcHJvdmlkZWQgYnkgdGhlIHJpbmcgbWFjcm9zKS4gQmFja2VuZHMgbXVzdCBzZXQKKyAq IHhlbmNhbWVyYV9yZXEgYXBwcm9wcmlhdGVseSAoZS5nLiwgdXNpbmcgUklOR19GSU5BTF9DSEVD S19GT1JfUkVRVUVTVFMoKSkuCisgKgorICogQmFjay0+ZnJvbnQgbm90aWZpY2F0aW9uczogd2hl biBlbnF1ZXVpbmcgYSBuZXcgcmVzcG9uc2UsIHNlbmRpbmcgYQorICogbm90aWZpY2F0aW9uIGNh biBiZSBtYWRlIGNvbmRpdGlvbmFsIG9uIHhlbmNhbWVyYV9yZXNwIChpLmUuLCB0aGUgZ2VuZXJp YworICogaG9sZC1vZmYgbWVjaGFuaXNtIHByb3ZpZGVkIGJ5IHRoZSByaW5nIG1hY3JvcykuIEZy b250ZW5kcyBtdXN0IHNldAorICogeGVuY2FtZXJhX3Jlc3AgYXBwcm9wcmlhdGVseSAoZS5nLiwg dXNpbmcgUklOR19GSU5BTF9DSEVDS19GT1JfUkVTUE9OU0VTKCkpLgorICoKKyAqIFRoZSB0d28g aGFsdmVzIG9mIGEgcGFyYS12aXJ0dWFsIGNhbWVyYSBkcml2ZXIgdXRpbGl6ZSBub2RlcyB3aXRo aW4KKyAqIFhlblN0b3JlIHRvIGNvbW11bmljYXRlIGNhcGFiaWxpdGllcyBhbmQgdG8gbmVnb3Rp YXRlIG9wZXJhdGluZyBwYXJhbWV0ZXJzLgorICogVGhpcyBzZWN0aW9uIGVudW1lcmF0ZXMgdGhl c2Ugbm9kZXMgd2hpY2ggcmVzaWRlIGluIHRoZSByZXNwZWN0aXZlIGZyb250IGFuZAorICogYmFj a2VuZCBwb3J0aW9ucyBvZiBYZW5TdG9yZSwgZm9sbG93aW5nIHRoZSBYZW5CdXMgY29udmVudGlv bi4KKyAqCisgKiBBbGwgZGF0YSBpbiBYZW5TdG9yZSBpcyBzdG9yZWQgYXMgc3RyaW5ncy4gTm9k ZXMgc3BlY2lmeWluZyBudW1lcmljCisgKiB2YWx1ZXMgYXJlIGVuY29kZWQgaW4gZGVjaW1hbC4g SW50ZWdlciB2YWx1ZSByYW5nZXMgbGlzdGVkIGJlbG93IGFyZQorICogZXhwcmVzc2VkIGFzIGZp eGVkIHNpemVkIGludGVnZXIgdHlwZXMgY2FwYWJsZSBvZiBzdG9yaW5nIHRoZSBjb252ZXJzaW9u CisgKiBvZiBhIHByb3Blcmx5IGZvcm1hdHRlZCBub2RlIHN0cmluZywgd2l0aG91dCBsb3NzIG9m IGluZm9ybWF0aW9uLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAg ICAgICAgICAgICAgRXhhbXBsZSBjb25maWd1cmF0aW9uCisgKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CisgKgorICogVGhpcyBpcyBhbiBleGFtcGxlIG9mIGJhY2tlbmQgYW5kIGZyb250ZW5kIGNvbmZp Z3VyYXRpb246CisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQmFja2Vu ZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIC9sb2NhbC9kb21h aW4vMC9iYWNrZW5kL3ZjYW1lcmEvMS8wL2Zyb250ZW5kLWlkID0gIjEiCisgKiAvbG9jYWwvZG9t YWluLzAvYmFja2VuZC92Y2FtZXJhLzEvMC9mcm9udGVuZCA9ICIvbG9jYWwvZG9tYWluLzEvZGV2 aWNlL3ZjYW1lcmEvMCIKKyAqIC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZjYW1lcmEvMS8wL3N0 YXRlID0gIjQiCisgKiAvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92Y2FtZXJhLzEvMC92ZXJzaW9u cyA9ICIxLDIiCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnJvbnRl bmQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIC9sb2NhbC9kb21h aW4vMS9kZXZpY2UvdmNhbWVyYS8wL2JhY2tlbmQtaWQgPSAiMCIKKyAqIC9sb2NhbC9kb21haW4v MS9kZXZpY2UvdmNhbWVyYS8wL2JhY2tlbmQgPSAiL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmNh bWVyYS8xIgorICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92Y2FtZXJhLzAvc3RhdGUgPSAiNCIK KyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmNhbWVyYS8wL3ZlcnNpb24gPSAiMSIKKyAqIC9s b2NhbC9kb21haW4vMS9kZXZpY2UvdmNhbWVyYS8wL2JlLWFsbG9jID0gIjEiCisgKgorICotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERldmljZSAwIGNvbmZpZ3VyYXRpb24gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmNhbWVyYS8w L21heC1idWZmZXJzID0gIjMiCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZjYW1lcmEvMC9j b250cm9scyA9ICJjb250cmFzdCxodWUiCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZjYW1l cmEvMC9mb3JtYXRzL1lVWVYvNjQweDQ4MC9mcmFtZS1yYXRlcyA9ICIzMC8xLDE1LzEiCisgKiAv bG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZjYW1lcmEvMC9mb3JtYXRzL1lVWVYvMTkyMHgxMDgwL2Zy YW1lLXJhdGVzID0gIjE1LzIiCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZjYW1lcmEvMC9m b3JtYXRzL0JHUkEvNjQweDQ4MC9mcmFtZS1yYXRlcyA9ICIxNS8xLDE1LzIiCisgKiAvbG9jYWwv ZG9tYWluLzEvZGV2aWNlL3ZjYW1lcmEvMC9mb3JtYXRzL0JHUkEvMTIwMHg3MjAvZnJhbWUtcmF0 ZXMgPSAiMTUvMiIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmNhbWVyYS8wL3VuaXF1ZS1p ZCA9ICIwIgorICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92Y2FtZXJhLzAvcmVxLXJpbmctcmVm ID0gIjI4MzIiCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZjYW1lcmEvMC9yZXEtZXZlbnQt Y2hhbm5lbCA9ICIxNSIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmNhbWVyYS8wL2V2dC1y aW5nLXJlZiA9ICIzODciCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZjYW1lcmEvMC9ldnQt ZXZlbnQtY2hhbm5lbCA9ICIxNiIKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g RGV2aWNlIDEgY29uZmlndXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICog L2xvY2FsL2RvbWFpbi8xL2RldmljZS92Y2FtZXJhLzEvbWF4LWJ1ZmZlcnMgPSAiOCIKKyAqIC9s b2NhbC9kb21haW4vMS9kZXZpY2UvdmNhbWVyYS8xL2NvbnRyb2xzID0gImJyaWdodG5lc3Msc2F0 dXJhdGlvbixodWUiCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZjYW1lcmEvMS9mb3JtYXRz L1lVWVYvNjQweDQ4MC9mcmFtZS1yYXRlcyA9ICIzMC8xLDE1LzIiCisgKiAvbG9jYWwvZG9tYWlu LzEvZGV2aWNlL3ZjYW1lcmEvMS9mb3JtYXRzL1lVWVYvMTkyMHgxMDgwL2ZyYW1lLXJhdGVzID0g IjE1LzIiCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZjYW1lcmEvMS91bmlxdWUtaWQgPSAi MSIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmNhbWVyYS8xL3JlcS1yaW5nLXJlZiA9ICIy ODMzIgorICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92Y2FtZXJhLzEvcmVxLWV2ZW50LWNoYW5u ZWwgPSAiMTciCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZjYW1lcmEvMS9ldnQtcmluZy1y ZWYgPSAiMzg4IgorICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92Y2FtZXJhLzEvZXZ0LWV2ZW50 LWNoYW5uZWwgPSAiMTgiCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAg ICAgICAgICAgICAgICAgICAgQmFja2VuZCBYZW5CdXMgTm9kZXMKKyAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3RvY29sIHZlcnNp b24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogdmVyc2lvbnMKKyAqICAg ICAgVmFsdWVzOiAgICAgICAgIDxzdHJpbmc+CisgKgorICogICAgICBMaXN0IG9mIFhFTkNBTUVS QV9MSVNUX1NFUEFSQVRPUiBzZXBhcmF0ZWQgcHJvdG9jb2wgdmVyc2lvbnMgc3VwcG9ydGVkCisg KiAgICAgIGJ5IHRoZSBiYWNrZW5kLiBGb3IgZXhhbXBsZSAiMSwyLDMiLgorICoKKyAqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyb250ZW5kIFhl bkJ1cyBOb2RlcworICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0gQWRkcmVzc2luZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqCisgKiBkb20taWQKKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50MTZfdD4K KyAqCisgKiAgICAgIERvbWFpbiBpZGVudGlmaWVyLgorICoKKyAqIGRldi1pZAorICogICAgICBW YWx1ZXM6ICAgICAgICAgPHVpbnQxNl90PgorICoKKyAqICAgICAgRGV2aWNlIGlkZW50aWZpZXIu CisgKgorICogICAgICAvbG9jYWwvZG9tYWluLzxkb20taWQ+L2RldmljZS92Y2FtZXJhLzxkZXYt aWQ+Ly4uLgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJvdG9jb2wgdmVy c2lvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiB2ZXJzaW9uCisgKiAg ICAgIFZhbHVlczogICAgICAgICA8c3RyaW5nPgorICoKKyAqICAgICAgUHJvdG9jb2wgdmVyc2lv biwgY2hvc2VuIGFtb25nIHRoZSBvbmVzIHN1cHBvcnRlZCBieSB0aGUgYmFja2VuZC4KKyAqCisg Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQmFja2VuZCBidWZmZXIgYWxsb2NhdGlvbiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogYmUtYWxsb2MKKyAqICAgICAgVmFsdWVzOiAg ICAgICAgICIwIiwgIjEiCisgKgorICogICAgICBJZiB2YWx1ZSBpcyBzZXQgdG8gIjEiLCB0aGVu IGJhY2tlbmQgd2lsbCBiZSB0aGUgYnVmZmVyCisgKiAgICAgIHByb3ZpZGVyL2FsbG9jYXRvciBm b3IgdGhpcyBkb21haW4gZHVyaW5nIFhFTkNBTUVSQV9PUF9CVUZfQ1JFQVRFCisgKiAgICAgIG9w ZXJhdGlvbi4KKyAqICAgICAgSWYgdmFsdWUgaXMgbm90ICIxIiBvciBvbWl0dGVkIGZyb250ZW5k IG11c3QgYWxsb2NhdGUgYnVmZmVycyBpdHNlbGYuCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tIENhbWVyYSBzZXR0aW5ncyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICoKKyAqIHVuaXF1ZS1pZAorICogICAgICBWYWx1ZXM6ICAgICAgICAgPHN0cmluZz4KKyAq CisgKiAgICAgIEFmdGVyIGRldmljZSBpbnN0YW5jZSBpbml0aWFsaXphdGlvbiBlYWNoIGNhbWVy YSBpcyBhc3NpZ25lZCBhCisgKiAgICAgIHVuaXF1ZSBJRCwgc28gaXQgY2FuIGJlIGlkZW50aWZp ZWQgYnkgdGhlIGJhY2tlbmQgYnkgdGhpcyBJRC4KKyAqICAgICAgVGhpcyBjYW4gYmUgVVVJRCBv ciBzdWNoLgorICoKKyAqIG1heC1idWZmZXJzCisgKiAgICAgIFZhbHVlczogICAgICAgICA8dWlu dDhfdD4KKyAqCisgKiAgICAgIE1heGltdW0gbnVtYmVyIG9mIGNhbWVyYSBidWZmZXJzIHRoaXMg ZnJvbnRlbmQgbWF5IHVzZS4KKyAqCisgKiBjb250cm9scworICogICAgICBWYWx1ZXM6ICAgICAg ICAgPGxpc3Qgb2Ygc3RyaW5nPgorICoKKyAqICAgICAgTGlzdCBvZiBzdXBwb3J0ZWQgY2FtZXJh IGNvbnRyb2xzIHNlcGFyYXRlZCBieSBYRU5DQU1FUkFfTElTVF9TRVBBUkFUT1IuCisgKiAgICAg IENhbWVyYSBjb250cm9scyBhcmUgZXhwcmVzc2VkIGFzIGEgbGlzdCBvZiBzdHJpbmcgdmFsdWVz IHcvbyBhbnkKKyAqICAgICAgb3JkZXJpbmcgcmVxdWlyZW1lbnQuCisgKgorICogZm9ybWF0cwor ICogICAgICBWYWx1ZXM6ICAgICAgICAgPGZvcm1hdCwgY2hhcls3XT4KKyAqCisgKiAgICAgIEZv cm1hdHMgYXJlIG9yZ2FuaXplZCBhcyBhIHNldCBvZiBkaXJlY3RvcmllcyBvbmUgcGVyIGVhY2gK KyAqICAgICAgc3VwcG9ydGVkIHBpeGVsIGZvcm1hdC4gVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9y eSBpcyB0aGUKKyAqICAgICAgY29ycmVzcG9uZGluZyBGT1VSQ0Mgc3RyaW5nIGxhYmVsLiBUaGUg bmV4dCBsZXZlbCBvZgorICogICAgICB0aGUgZGlyZWN0b3J5IHVuZGVyIDxmb3JtYXRzPiByZXBy ZXNlbnRzIHN1cHBvcnRlZCByZXNvbHV0aW9ucy4KKyAqICAgICAgSWYgdGhlIGZvcm1hdCByZXBy ZXNlbnRzIGEgYmlnLWVuZGlhbiB2YXJpYW50IG9mIGEgbGl0dGxlCisgKiAgICAgIGVuZGlhbiBm b3JtYXQsIHRoZW4gdGhlICItQkUiIHN1ZmZpeCBtdXN0IGJlIGFkZGVkLiBFLmcuICdBUjE1JyB2 cworICogICAgICAnQVIxNS1CRScuCisgKiAgICAgIElmIEZPVVJDQyBzdHJpbmcgbGFiZWwgaGFz IHNwYWNlcyB0aGVuIHRob3NlIGFyZSBvbmx5IGFsbG93ZWQgdG8KKyAqICAgICAgYmUgYXQgdGhl IGVuZCBvZiB0aGUgbGFiZWwgYW5kIG11c3QgYmUgdHJpbW1lZCwgZm9yIGV4YW1wbGUKKyAqICAg ICAgJ1kxNicgYW5kICdZMTYtQkUnIHdpbGwgYmUgdHJpbW1lZC4KKyAqCisgKiByZXNvbHV0aW9u CisgKiAgICAgIFZhbHVlczogICAgICAgICA8d2lkdGgsIHVpbnQzMl90Png8aGVpZ2h0LCB1aW50 MzJfdD4KKyAqCisgKiAgICAgIFJlc29sdXRpb25zIGFyZSBvcmdhbml6ZWQgYXMgYSBzZXQgb2Yg ZGlyZWN0b3JpZXMgb25lIHBlciBlYWNoCisgKiAgICAgIHN1cHBvcnRlZCByZXNvbHV0aW9uIHVu ZGVyIGNvcnJlc3BvbmRpbmcgPGZvcm1hdHM+IGRpcmVjdG9yeS4KKyAqICAgICAgVGhlIG5hbWUg b2YgdGhlIGRpcmVjdG9yeSBpcyB0aGUgc3VwcG9ydGVkIHdpZHRoIGFuZCBoZWlnaHQKKyAqICAg ICAgb2YgdGhlIGNhbWVyYSByZXNvbHV0aW9uIGluIHBpeGVscy4KKyAqCisgKiBmcmFtZS1yYXRl cworICogICAgICBWYWx1ZXM6ICAgICAgICAgPG51bWVyYXRvciwgdWludDMyX3Q+LzxkZW5vbWlu YXRvciwgdWludDMyX3Q+CisgKgorICogICAgICBMaXN0IG9mIFhFTkNBTUVSQV9GUkFNRV9SQVRF X1NFUEFSQVRPUiBzZXBhcmF0ZWQgc3VwcG9ydGVkIGZyYW1lIHJhdGVzCisgKiAgICAgIG9mIHRo ZSBjYW1lcmEgZXhwcmVzc2VkIGFzIG51bWVyYXRvciBhbmQgZGVub21pbmF0b3Igb2YgdGhlCisg KiAgICAgIGNvcnJlc3BvbmRpbmcgZnJhbWUgcmF0ZS4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0t LS0gQ2FtZXJhIFJlcXVlc3QgVHJhbnNwb3J0IFBhcmFtZXRlcnMgLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgKgorICogVGhpcyBjb21tdW5pY2F0aW9uIHBhdGggaXMgdXNlZCB0byBkZWxpdmVyIHJl cXVlc3RzIGZyb20gZnJvbnRlbmQgdG8gYmFja2VuZAorICogYW5kIGdldCB0aGUgY29ycmVzcG9u ZGluZyByZXNwb25zZXMgZnJvbSBiYWNrZW5kIHRvIGZyb250ZW5kLAorICogc2V0IHVwIHBlciB2 aXJ0dWFsIGNhbWVyYSBkZXZpY2UuCisgKgorICogcmVxLWV2ZW50LWNoYW5uZWwKKyAqICAgICAg VmFsdWVzOiAgICAgICAgIDx1aW50MzJfdD4KKyAqCisgKiAgICAgIFRoZSBpZGVudGlmaWVyIG9m IHRoZSBYZW4gY2FtZXJhJ3MgY29udHJvbCBldmVudCBjaGFubmVsCisgKiAgICAgIHVzZWQgdG8g c2lnbmFsIGFjdGl2aXR5IGluIHRoZSByaW5nIGJ1ZmZlci4KKyAqCisgKiByZXEtcmluZy1yZWYK KyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50MzJfdD4KKyAqCisgKiAgICAgIFRoZSBYZW4g Z3JhbnQgcmVmZXJlbmNlIGdyYW50aW5nIHBlcm1pc3Npb24gZm9yIHRoZSBiYWNrZW5kIHRvIG1h cAorICogICAgICBhIHNvbGUgcGFnZSBvZiBjYW1lcmEncyBjb250cm9sIHJpbmcgYnVmZmVyLgor ICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2FtZXJhIEV2ZW50IFRyYW5zcG9ydCBQYXJhbWV0 ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBUaGlzIGNvbW11bmljYXRpb24gcGF0 aCBpcyB1c2VkIHRvIGRlbGl2ZXIgYXN5bmNocm9ub3VzIGV2ZW50cyBmcm9tIGJhY2tlbmQKKyAq IHRvIGZyb250ZW5kLCBzZXQgdXAgcGVyIHZpcnR1YWwgY2FtZXJhIGRldmljZS4KKyAqCisgKiBl dnQtZXZlbnQtY2hhbm5lbAorICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQzMl90PgorICoK KyAqICAgICAgVGhlIGlkZW50aWZpZXIgb2YgdGhlIFhlbiBjYW1lcmEncyBldmVudCBjaGFubmVs CisgKiAgICAgIHVzZWQgdG8gc2lnbmFsIGFjdGl2aXR5IGluIHRoZSByaW5nIGJ1ZmZlci4KKyAq CisgKiBldnQtcmluZy1yZWYKKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50MzJfdD4KKyAq CisgKiAgICAgIFRoZSBYZW4gZ3JhbnQgcmVmZXJlbmNlIGdyYW50aW5nIHBlcm1pc3Npb24gZm9y IHRoZSBiYWNrZW5kIHRvIG1hcAorICogICAgICBhIHNvbGUgcGFnZSBvZiBjYW1lcmEncyBldmVu dCByaW5nIGJ1ZmZlci4KKyAqLworCisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RBVEUgRElBR1JBTVMKKyAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKKyAqCisgKiBUb29sIHN0YWNrIGNyZWF0ZXMgZnJvbnQgYW5kIGJhY2sgc3RhdGUg bm9kZXMgd2l0aCBpbml0aWFsIHN0YXRlCisgKiBYZW5idXNTdGF0ZUluaXRpYWxpc2luZy4KKyAq IFRvb2wgc3RhY2sgY3JlYXRlcyBhbmQgc2V0cyB1cCBmcm9udGVuZCBjYW1lcmEgY29uZmlndXJh dGlvbgorICogbm9kZXMgcGVyIGRvbWFpbi4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tIE5vcm1hbCBmbG93IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg KgorICogRnJvbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhY2sKKyAqID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgICA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CisgKiBYZW5idXNTdGF0ZUluaXRpYWxpc2luZyAgICAgICAgICAgICAgWGVu YnVzU3RhdGVJbml0aWFsaXNpbmcKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbyBRdWVyeSBiYWNrZW5kIGRldmljZSBpZGVudGlmaWNhdGlvbgorICogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuCisgKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG8gT3BlbiBhbmQgdmFsaWRhdGUgYmFja2VuZCBkZXZpY2Uu CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAq ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWCisgKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWGVuYnVzU3RhdGVJbml0V2FpdAorICoKKyAq IG8gUXVlcnkgZnJvbnRlbmQgY29uZmlndXJhdGlvbgorICogbyBBbGxvY2F0ZSBhbmQgaW5pdGlh bGl6ZQorICogICBldmVudCBjaGFubmVscyBwZXIgY29uZmlndXJlZAorICogICBjYW1lcmEuCisg KiBvIFB1Ymxpc2ggdHJhbnNwb3J0IHBhcmFtZXRlcnMKKyAqICAgdGhhdCB3aWxsIGJlIGluIGVm ZmVjdCBkdXJpbmcKKyAqICAgdGhpcyBjb25uZWN0aW9uLgorICogICAgICAgICAgICAgIHwKKyAq ICAgICAgICAgICAgICB8CisgKiAgICAgICAgICAgICAgVgorICogWGVuYnVzU3RhdGVJbml0aWFs aXNlZAorICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyBRdWVy eSBmcm9udGVuZCB0cmFuc3BvcnQgcGFyYW1ldGVycy4KKyAqICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbyBDb25uZWN0IHRvIHRoZSBldmVudCBjaGFubmVscy4KKyAqICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFYKKyAqICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBYZW5idXNTdGF0ZUNvbm5lY3RlZAorICoKKyAqICBvIENy ZWF0ZSBhbmQgaW5pdGlhbGl6ZSBPUworICogICAgdmlydHVhbCBjYW1lcmEgYXMgcGVyCisgKiAg ICBjb25maWd1cmF0aW9uLgorICogICAgICAgICAgICAgIHwKKyAqICAgICAgICAgICAgICB8Cisg KiAgICAgICAgICAgICAgVgorICogWGVuYnVzU3RhdGVDb25uZWN0ZWQKKyAqCisgKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWGVuYnVzU3RhdGVVbmtub3duCisgKiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWGVuYnVzU3RhdGVDbG9zZWQKKyAqICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYZW5idXNTdGF0ZUNsb3NpbmcKKyAq IG8gUmVtb3ZlIHZpcnR1YWwgY2FtZXJhIGRldmljZQorICogbyBSZW1vdmUgZXZlbnQgY2hhbm5l bHMKKyAqICAgICAgICAgICAgICB8CisgKiAgICAgICAgICAgICAgfAorICogICAgICAgICAgICAg IFYKKyAqIFhlbmJ1c1N0YXRlQ2xvc2VkCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tIFJlY292ZXJ5IGZsb3cgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoK KyAqIEluIGNhc2Ugb2YgZnJvbnRlbmQgdW5yZWNvdmVyYWJsZSBlcnJvcnMgYmFja2VuZCBoYW5k bGVzIHRoYXQgYXMKKyAqIGlmIGZyb250ZW5kIGdvZXMgaW50byB0aGUgWGVuYnVzU3RhdGVDbG9z ZWQgc3RhdGUuCisgKgorICogSW4gY2FzZSBvZiBiYWNrZW5kIHVucmVjb3ZlcmFibGUgZXJyb3Jz IGZyb250ZW5kIHRyaWVzIHJlbW92aW5nCisgKiB0aGUgdmlydHVhbGl6ZWQgZGV2aWNlLiBJZiB0 aGlzIGlzIHBvc3NpYmxlIGF0IHRoZSBtb21lbnQgb2YgZXJyb3IsCisgKiB0aGVuIGZyb250ZW5k IGdvZXMgaW50byB0aGUgWGVuYnVzU3RhdGVJbml0aWFsaXNpbmcgc3RhdGUgYW5kIGlzIHJlYWR5 IGZvcgorICogbmV3IGNvbm5lY3Rpb24gd2l0aCBiYWNrZW5kLiBJZiB0aGUgdmlydHVhbGl6ZWQg ZGV2aWNlIGlzIHN0aWxsIGluIHVzZSBhbmQKKyAqIGNhbm5vdCBiZSByZW1vdmVkLCB0aGVuIGZy b250ZW5kIGdvZXMgaW50byB0aGUgWGVuYnVzU3RhdGVSZWNvbmZpZ3VyaW5nIHN0YXRlCisgKiB1 bnRpbCBlaXRoZXIgdGhlIHZpcnR1YWxpemVkIGRldmljZSBpcyByZW1vdmVkIG9yIGJhY2tlbmQg aW5pdGlhdGVzIGEgbmV3CisgKiBjb25uZWN0aW9uLiBPbiB0aGUgdmlydHVhbGl6ZWQgZGV2aWNl IHJlbW92YWwgZnJvbnRlbmQgZ29lcyBpbnRvIHRoZQorICogWGVuYnVzU3RhdGVJbml0aWFsaXNp bmcgc3RhdGUuCisgKgorICogTm90ZSBvbiBYZW5idXNTdGF0ZVJlY29uZmlndXJpbmcgc3RhdGUg b2YgdGhlIGZyb250ZW5kOiBpZiBiYWNrZW5kIGhhcworICogdW5yZWNvdmVyYWJsZSBlcnJvcnMg dGhlbiBmcm9udGVuZCBjYW5ub3Qgc2VuZCByZXF1ZXN0cyB0byB0aGUgYmFja2VuZAorICogYW5k IHRodXMgY2Fubm90IHByb3ZpZGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgdmlydHVhbGl6ZWQgZGV2 aWNlIGFueW1vcmUuCisgKiBBZnRlciBiYWNrZW5kIGlzIGJhY2sgdG8gbm9ybWFsIHRoZSB2aXJ0 dWFsaXplZCBkZXZpY2UgbWF5IHN0aWxsIGhvbGQgc29tZQorICogc3RhdGU6IGNvbmZpZ3VyYXRp b24gaW4gdXNlLCBhbGxvY2F0ZWQgYnVmZmVycywgY2xpZW50IGFwcGxpY2F0aW9uIHN0YXRlIGV0 Yy4KKyAqIEluIG1vc3QgY2FzZXMsIHRoaXMgd2lsbCByZXF1aXJlIGZyb250ZW5kIHRvIGltcGxl bWVudCBjb21wbGV4IHJlY292ZXJ5CisgKiByZWNvbm5lY3QgbG9naWMuIEluc3RlYWQsIGJ5IGdv aW5nIGludG8gWGVuYnVzU3RhdGVSZWNvbmZpZ3VyaW5nIHN0YXRlLAorICogZnJvbnRlbmQgd2ls bCBtYWtlIHN1cmUgbm8gbmV3IGNsaWVudHMgb2YgdGhlIHZpcnR1YWxpemVkIGRldmljZSBhcmUK KyAqIGFjY2VwdGVkLCBhbGxvdyBleGlzdGluZyBjbGllbnQocykgdG8gZXhpdCBncmFjZWZ1bGx5 IGJ5IHNpZ25hbGluZyBlcnJvcgorICogc3RhdGUgZXRjLgorICogT25jZSBhbGwgdGhlIGNsaWVu dHMgYXJlIGdvbmUgZnJvbnRlbmQgY2FuIHJlaW5pdGlhbGl6ZSB0aGUgdmlydHVhbGl6ZWQKKyAq IGRldmljZSBhbmQgZ2V0IGludG8gWGVuYnVzU3RhdGVJbml0aWFsaXNpbmcgc3RhdGUgYWdhaW4g c2lnbmFsaW5nIHRoZQorICogYmFja2VuZCB0aGF0IGEgbmV3IGNvbm5lY3Rpb24gY2FuIGJlIG1h ZGUuCisgKgorICogVGhlcmUgYXJlIG11bHRpcGxlIGNvbmRpdGlvbnMgcG9zc2libGUgdW5kZXIg d2hpY2ggZnJvbnRlbmQgd2lsbCBnbyBmcm9tCisgKiBYZW5idXNTdGF0ZVJlY29uZmlndXJpbmcg aW50byBYZW5idXNTdGF0ZUluaXRpYWxpc2luZywgc29tZSBvZiB0aGVtIGFyZSBPUworICogc3Bl Y2lmaWMuIEZvciBleGFtcGxlOgorICogMS4gVGhlIHVuZGVybHlpbmcgT1MgZnJhbWV3b3JrIG1h eSBwcm92aWRlIGNhbGxiYWNrcyB0byBzaWduYWwgdGhhdCB0aGUgbGFzdAorICogICAgY2xpZW50 IG9mIHRoZSB2aXJ0dWFsaXplZCBkZXZpY2UgaGFzIGdvbmUgYW5kIHRoZSBkZXZpY2UgY2FuIGJl IHJlbW92ZWQKKyAqIDIuIEZyb250ZW5kIGNhbiBzY2hlZHVsZSBhIGRlZmVycmVkIHdvcmsgKHRp bWVyL3Rhc2tsZXQvd29ya3F1ZXVlKQorICogICAgdG8gcGVyaW9kaWNhbGx5IGNoZWNrIGlmIHRo aXMgaXMgdGhlIHJpZ2h0IHRpbWUgdG8gcmUtdHJ5IHJlbW92YWwgb2YKKyAqICAgIHRoZSB2aXJ0 dWFsaXplZCBkZXZpY2UuCisgKiAzLiBCeSBhbnkgb3RoZXIgbWVhbnMuCisgKgorICoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFUVVFU1QgQ09E RVMKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworI2RlZmluZSBYRU5DQU1FUkFfT1BfQ09O RklHX1NFVCAgICAgICAgMHgwMAorI2RlZmluZSBYRU5DQU1FUkFfT1BfQ09ORklHX0dFVCAgICAg ICAgMHgwMQorI2RlZmluZSBYRU5DQU1FUkFfT1BfQ09ORklHX1ZBTElEQVRFICAgMHgwMgorI2Rl ZmluZSBYRU5DQU1FUkFfT1BfRlJBTUVfUkFURV9TRVQgICAgMHgwMworI2RlZmluZSBYRU5DQU1F UkFfT1BfQlVGX0dFVF9MQVlPVVQgICAgMHgwNAorI2RlZmluZSBYRU5DQU1FUkFfT1BfQlVGX1JF UVVFU1QgICAgICAgMHgwNQorI2RlZmluZSBYRU5DQU1FUkFfT1BfQlVGX0NSRUFURSAgICAgICAg MHgwNgorI2RlZmluZSBYRU5DQU1FUkFfT1BfQlVGX0RFU1RST1kgICAgICAgMHgwNworI2RlZmlu ZSBYRU5DQU1FUkFfT1BfQlVGX1FVRVVFICAgICAgICAgMHgwOAorI2RlZmluZSBYRU5DQU1FUkFf T1BfQlVGX0RFUVVFVUUgICAgICAgMHgwOQorI2RlZmluZSBYRU5DQU1FUkFfT1BfQ1RSTF9FTlVN ICAgICAgICAgMHgwYQorI2RlZmluZSBYRU5DQU1FUkFfT1BfQ1RSTF9TRVQgICAgICAgICAgMHgw YgorI2RlZmluZSBYRU5DQU1FUkFfT1BfQ1RSTF9HRVQgICAgICAgICAgMHgwYworI2RlZmluZSBY RU5DQU1FUkFfT1BfU1RSRUFNX1NUQVJUICAgICAgMHgwZAorI2RlZmluZSBYRU5DQU1FUkFfT1Bf U1RSRUFNX1NUT1AgICAgICAgMHgwZQorCisjZGVmaW5lIFhFTkNBTUVSQV9DVFJMX0JSSUdIVE5F U1MgICAgICAwCisjZGVmaW5lIFhFTkNBTUVSQV9DVFJMX0NPTlRSQVNUICAgICAgICAxCisjZGVm aW5lIFhFTkNBTUVSQV9DVFJMX1NBVFVSQVRJT04gICAgICAyCisjZGVmaW5lIFhFTkNBTUVSQV9D VFJMX0hVRSAgICAgICAgICAgICAzCisKKy8qIE51bWJlciBvZiBzdXBwb3J0ZWQgY29udHJvbHMu ICovCisjZGVmaW5lIFhFTkNBTUVSQV9NQVhfQ1RSTCAgICAgICAgICAgICA0CisKKy8qIENvbnRy b2wgaXMgcmVhZC1vbmx5LiAqLworI2RlZmluZSBYRU5DQU1FUkFfQ1RSTF9GTEdfUk8gICAgICAg ICAgKDEgPDwgMCkKKy8qIENvbnRyb2wgaXMgd3JpdGUtb25seS4gKi8KKyNkZWZpbmUgWEVOQ0FN RVJBX0NUUkxfRkxHX1dPICAgICAgICAgICgxIDw8IDEpCisvKiBDb250cm9sJ3MgdmFsdWUgaXMg dm9sYXRpbGUuICovCisjZGVmaW5lIFhFTkNBTUVSQV9DVFJMX0ZMR19WT0xBVElMRSAgICAoMSA8 PCAyKQorCisvKiBTdXBwb3J0ZWQgY29sb3Igc3BhY2VzLiAqLworI2RlZmluZSBYRU5DQU1FUkFf Q09MT1JTUEFDRV9ERUZBVUxUICAgMAorI2RlZmluZSBYRU5DQU1FUkFfQ09MT1JTUEFDRV9TTVBU RTE3ME0gMQorI2RlZmluZSBYRU5DQU1FUkFfQ09MT1JTUEFDRV9SRUM3MDkgICAgMgorI2RlZmlu ZSBYRU5DQU1FUkFfQ09MT1JTUEFDRV9TUkdCICAgICAgMworI2RlZmluZSBYRU5DQU1FUkFfQ09M T1JTUEFDRV9PUFJHQiAgICAgNAorI2RlZmluZSBYRU5DQU1FUkFfQ09MT1JTUEFDRV9CVDIwMjAg ICAgNQorI2RlZmluZSBYRU5DQU1FUkFfQ09MT1JTUEFDRV9EQ0lfUDMgICAgNgorCisvKiBDb2xv ciBzcGFjZSB0cmFuc2ZlciBmdW5jdGlvbi4gKi8KKyNkZWZpbmUgWEVOQ0FNRVJBX1hGRVJfRlVO Q19ERUZBVUxUICAgIDAKKyNkZWZpbmUgWEVOQ0FNRVJBX1hGRVJfRlVOQ183MDkgICAgICAgIDEK KyNkZWZpbmUgWEVOQ0FNRVJBX1hGRVJfRlVOQ19TUkdCICAgICAgIDIKKyNkZWZpbmUgWEVOQ0FN RVJBX1hGRVJfRlVOQ19PUFJHQiAgICAgIDMKKyNkZWZpbmUgWEVOQ0FNRVJBX1hGRVJfRlVOQ19O T05FICAgICAgIDQKKyNkZWZpbmUgWEVOQ0FNRVJBX1hGRVJfRlVOQ19EQ0lfUDMgICAgIDUKKyNk ZWZpbmUgWEVOQ0FNRVJBX1hGRVJfRlVOQ19TTVBURTIwODQgIDYKKworLyogQ29sb3Igc3BhY2Ug WeKAmUNiQ3IgZW5jb2RpbmcuICovCisjZGVmaW5lIFhFTkNBTUVSQV9ZQ0JDUl9FTkNfSUdOT1JF ICAgICAgICAgICAwCisjZGVmaW5lIFhFTkNBTUVSQV9ZQ0JDUl9FTkNfNjAxICAgICAgICAgICAg ICAxCisjZGVmaW5lIFhFTkNBTUVSQV9ZQ0JDUl9FTkNfNzA5ICAgICAgICAgICAgICAyCisjZGVm aW5lIFhFTkNBTUVSQV9ZQ0JDUl9FTkNfWFY2MDEgICAgICAgICAgICAzCisjZGVmaW5lIFhFTkNB TUVSQV9ZQ0JDUl9FTkNfWFY3MDkgICAgICAgICAgICA0CisjZGVmaW5lIFhFTkNBTUVSQV9ZQ0JD Ul9FTkNfQlQyMDIwICAgICAgICAgICA1CisjZGVmaW5lIFhFTkNBTUVSQV9ZQ0JDUl9FTkNfQlQy MDIwX0NPTlNUX0xVTSA2CisKKy8qIFF1YW50aXphdGlvbiByYW5nZS4gKi8KKyNkZWZpbmUgWEVO Q0FNRVJBX1FVQU5USVpBVElPTl9ERUZBVUxUICAgICAgIDAKKyNkZWZpbmUgWEVOQ0FNRVJBX1FV QU5USVpBVElPTl9GVUxMX1JBTkdFICAgIDEKKyNkZWZpbmUgWEVOQ0FNRVJBX1FVQU5USVpBVElP Tl9MSU1fUkFOR0UgICAgIDIKKworLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgRVZFTlQgQ09ERVMKKyAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKKyAqLworI2RlZmluZSBYRU5DQU1FUkFfRVZUX0ZSQU1FX0FWQUlMICAgICAgMHgwMAor I2RlZmluZSBYRU5DQU1FUkFfRVZUX0NUUkxfQ0hBTkdFICAgICAgMHgwMQorCisvKiBSZXNvbHV0 aW9uIGhhcyBjaGFuZ2VkLiAqLworI2RlZmluZSBYRU5DQU1FUkFfRVZUX0NGR19GTEdfUkVTT0wg ICAgKDEgPDwgMCkKKworLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAg ICAgWEVOU1RPUkUgRklFTEQgQU5EIFBBVEggTkFNRSBTVFJJTkdTLCBIRUxQRVJTCisgKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCisgKi8KKyNkZWZpbmUgWEVOQ0FNRVJBX0RSSVZFUl9OQU1FICAgICAg ICAgICJ2Y2FtZXJhIgorCisjZGVmaW5lIFhFTkNBTUVSQV9MSVNUX1NFUEFSQVRPUiAgICAgICAi LCIKKyNkZWZpbmUgWEVOQ0FNRVJBX1JFU09MVVRJT05fU0VQQVJBVE9SICJ4IgorI2RlZmluZSBY RU5DQU1FUkFfRlJBQ1RJT05fU0VQQVJBVE9SICAgIi8iCisKKyNkZWZpbmUgWEVOQ0FNRVJBX0ZJ RUxEX0JFX1ZFUlNJT05TICAgICJ2ZXJzaW9ucyIKKyNkZWZpbmUgWEVOQ0FNRVJBX0ZJRUxEX0ZF X1ZFUlNJT04gICAgICJ2ZXJzaW9uIgorI2RlZmluZSBYRU5DQU1FUkFfRklFTERfUkVRX1JJTkdf UkVGICAgInJlcS1yaW5nLXJlZiIKKyNkZWZpbmUgWEVOQ0FNRVJBX0ZJRUxEX1JFUV9DSEFOTkVM ICAgICJyZXEtZXZlbnQtY2hhbm5lbCIKKyNkZWZpbmUgWEVOQ0FNRVJBX0ZJRUxEX0VWVF9SSU5H X1JFRiAgICJldnQtcmluZy1yZWYiCisjZGVmaW5lIFhFTkNBTUVSQV9GSUVMRF9FVlRfQ0hBTk5F TCAgICAiZXZ0LWV2ZW50LWNoYW5uZWwiCisjZGVmaW5lIFhFTkNBTUVSQV9GSUVMRF9NQVhfQlVG RkVSUyAgICAibWF4LWJ1ZmZlcnMiCisjZGVmaW5lIFhFTkNBTUVSQV9GSUVMRF9DT05UUk9MUyAg ICAgICAiY29udHJvbHMiCisjZGVmaW5lIFhFTkNBTUVSQV9GSUVMRF9GT1JNQVRTICAgICAgICAi Zm9ybWF0cyIKKyNkZWZpbmUgWEVOQ0FNRVJBX0ZJRUxEX0ZSQU1FX1JBVEVTICAgICJmcmFtZS1y YXRlcyIKKyNkZWZpbmUgWEVOQ0FNRVJBX0ZJRUxEX0JFX0FMTE9DICAgICAgICJiZS1hbGxvYyIK KyNkZWZpbmUgWEVOQ0FNRVJBX0ZJRUxEX1VOSVFVRV9JRCAgICAgICJ1bmlxdWUtaWQiCisKKyNk ZWZpbmUgWEVOQ0FNRVJBX0NUUkxfQlJJR0hUTkVTU19TVFIgICJicmlnaHRuZXNzIgorI2RlZmlu ZSBYRU5DQU1FUkFfQ1RSTF9DT05UUkFTVF9TVFIgICAgImNvbnRyYXN0IgorI2RlZmluZSBYRU5D QU1FUkFfQ1RSTF9TQVRVUkFUSU9OX1NUUiAgInNhdHVyYXRpb24iCisjZGVmaW5lIFhFTkNBTUVS QV9DVFJMX0hVRV9TVFIgICAgICAgICAiaHVlIgorCisjZGVmaW5lIFhFTkNBTUVSQV9GT1VSQ0Nf QklHRU5ESUFOX1NUUiAiLUJFIgorCisvKiBNYXhpbXVtIG51bWJlciBvZiBidWZmZXIgcGxhbmVz IHN1cHBvcnRlZC4gKi8KKyNkZWZpbmUgWEVOQ0FNRVJBX01BWF9QTEFORSAgICAgICAgICAgIDQK KworLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAg ICBTVEFUVVMgUkVUVVJOIENPREVTCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogU3Rh dHVzIHJldHVybiBjb2RlIGlzIHplcm8gb24gc3VjY2VzcyBhbmQgLVhFTl9FWFggb24gZmFpbHVy ZS4KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEFzc3VtcHRpb25zCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogLSB1c2Fn ZSBvZiBncmFudCByZWZlcmVuY2UgMCBhcyBpbnZhbGlkIGdyYW50IHJlZmVyZW5jZToKKyAqICAg Z3JhbnQgcmVmZXJlbmNlIDAgaXMgdmFsaWQsIGJ1dCBuZXZlciBleHBvc2VkIHRvIGEgUFYgZHJp dmVyLAorICogICBiZWNhdXNlIG9mIHRoZSBmYWN0IGl0IGlzIGFscmVhZHkgaW4gdXNlL3Jlc2Vy dmVkIGJ5IHRoZSBQViBjb25zb2xlLgorICogLSBhbGwgcmVmZXJlbmNlcyBpbiB0aGlzIGRvY3Vt ZW50IHRvIHBhZ2Ugc2l6ZXMgbXVzdCBiZSB0cmVhdGVkCisgKiAgIGFzIHBhZ2VzIG9mIHNpemUg WEVOX1BBR0VfU0laRSB1bmxlc3Mgb3RoZXJ3aXNlIG5vdGVkLgorICogLSBhbGwgRk9VUkNDIG1h cHBpbmdzIHVzZWQgZm9yIGNvbmZpZ3VyYXRpb24gYW5kIG1lc3NhZ2luZyBhcmUKKyAqICAgTGlu dXggVjRMMiBvbmVzOiBodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVs L2dpdC90b3J2YWxkcy9saW51eC5naXQvdHJlZS9pbmNsdWRlL3VhcGkvbGludXgvdmlkZW9kZXYy LmgKKyAqICAgd2l0aCB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbnM6CisgKiAgICAgLSBjaGFyYWN0 ZXJzIGFyZSBhbGxvd2VkIGluIFsweDIwOyAweDdmXSByYW5nZQorICogICAgIC0gd2hlbiB1c2Vk IGZvciBYZW5TdG9yZSBjb25maWd1cmF0aW9uIGVudHJpZXMgdGhlIGZvbGxvd2luZworICogICAg ICAgYXJlIG5vdCBhbGxvd2VkOgorICogICAgICAgLSAnLycsICdcJywgJyAnIChzcGFjZSksICc8 JywgJz4nLCAnOicsICciJywgJ3wnLCAnPycsICcqJworICogICAgICAgLSBpZiB0cmFpbGluZyBz cGFjZXMgYXJlIHBhcnQgb2YgdGhlIEZPVVJDQyBjb2RlIHRoZW4gdGhvc2UgbXVzdCBiZQorICog ICAgICAgICB0cmltbWVkCisgKgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAg IERlc2NyaXB0aW9uIG9mIHRoZSBwcm90b2NvbCBiZXR3ZWVuIGZyb250ZW5kIGFuZCBiYWNrZW5k IGRyaXZlcgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIFRoZSB0d28gaGFsdmVzIG9m IGEgUGFyYS12aXJ0dWFsIGNhbWVyYSBkcml2ZXIgY29tbXVuaWNhdGUgd2l0aAorICogZWFjaCBv dGhlciB1c2luZyBzaGFyZWQgcGFnZXMgYW5kIGV2ZW50IGNoYW5uZWxzLgorICogU2hhcmVkIHBh Z2UgY29udGFpbnMgYSByaW5nIHdpdGggcmVxdWVzdC9yZXNwb25zZSBwYWNrZXRzLgorICoKKyAq IEFsbCByZXNlcnZlZCBmaWVsZHMgaW4gdGhlIHN0cnVjdHVyZXMgYmVsb3cgbXVzdCBiZSAwLgor ICoKKyAqIEZvciBhbGwgcmVxdWVzdC9yZXNwb25zZS9ldmVudCBwYWNrZXRzOgorICogICAtIGZy YW1lIHJhdGUgcGFyYW1ldGVyIGlzIHJlcHJlc2VudGVkIGFzIGEgcGFpciBvZiA0IG9jdGV0IGxv bmcKKyAqICAgICBudW1lcmF0b3IgYW5kIGRlbm9taW5hdG9yOgorICogICAgICAgLSBmcmFtZV9y YXRlX251bWVyIC0gdWludDMyX3QsIG51bWVyYXRvciBvZiB0aGUgZnJhbWUgcmF0ZQorICogICAg ICAgLSBmcmFtZV9yYXRlX2Rlbm9tIC0gdWludDMyX3QsIGRlbm9taW5hdG9yIG9mIHRoZSBmcmFt ZSByYXRlCisgKiAgICAgVGhlIGNvcnJlc3BvbmRpbmcgZnJhbWUgcmF0ZSAoSHopIGlzIGNhbGN1 bGF0ZWQgYXM6CisgKiAgICAgICBmcmFtZV9yYXRlID0gZnJhbWVfcmF0ZV9udW1lciAvIGZyYW1l X3JhdGVfZGVub20KKyAqICAgLSBidWZmZXIgaW5kZXggaXMgYSB6ZXJvIGJhc2VkIGluZGV4IG9m IHRoZSBidWZmZXIuIE11c3QgYmUgbGVzcyB0aGFuCisgKiAgICAgdGhlIHZhbHVlIG9mIFhFTkNB TUVSQV9PUF9DT05GSUdfU0VULm51bV9idWZzIHJlc3BvbnNlOgorICogICAgICAgLSBpbmRleCAt IHVpbnQ4X3QsIGluZGV4IG9mIHRoZSBidWZmZXIuCisgKgorICoKKyAqLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSBSZXF1ZXN0cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqCisgKiBBbGwgcmVxdWVzdCBwYWNrZXRzIGhhdmUgdGhlIHNhbWUgbGVuZ3RoICg2 NCBvY3RldHMpLgorICogQWxsIHJlcXVlc3QgcGFja2V0cyBoYXZlIGNvbW1vbiBoZWFkZXI6Cisg KiAgICAgICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAg ICAgIDMgICAgICAgIG9jdGV0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICBp ZCAgICAgICAgICAgICAgICB8ICAgIG9wZXJhdGlvbiAgIHwgICByZXNlcnZlZCAgICAgfCA0Cisg KiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVk ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA4CisgKiArLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqICAg aWQgLSB1aW50MTZfdCwgcHJpdmF0ZSBndWVzdCB2YWx1ZSwgZWNob2VkIGluIHJlc3BvbnNlLgor ICogICBvcGVyYXRpb24gLSB1aW50OF90LCBvcGVyYXRpb24gY29kZSwgWEVOQ0FNRVJBX09QX1hY WC4KKyAqCisgKgorICogUmVxdWVzdCB0byBzZXQvdmFsaWRhdGUgdGhlIGNvbmZpZ3VyYXRpb24g LSByZXF1ZXN0IHRvIHNldCB0aGUKKyAqIGNvbmZpZ3VyYXRpb24vbW9kZSBvZiB0aGUgY2FtZXJh IChYRU5DQU1FUkFfT1BfQ09ORklHX1NFVCkgb3IgdG8KKyAqIGNoZWNrIGlmIHRoZSBjb25maWd1 cmF0aW9uIGlzIHZhbGlkIGFuZCBjYW4gYmUgdXNlZAorICogKFhFTkNBTUVSQV9PUF9DT05GSUdf VkFMSURBVEUpOgorICogICAgICAgICAwICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAg IDIgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAg ICAgICAgICAgICAgaWQgICAgICAgICAgICAgICAgfCBfT1BfQ09ORklHX1hYWCB8ICAgcmVzZXJ2 ZWQgICAgIHwgNAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOAorICogKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVsIGZvcm1hdCAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgMTIKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IDE2CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaGVpZ2h0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMAorICogKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgMjQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98 CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2Vy dmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA2NAorICogKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisg KgorICogcGl4ZWxfZm9ybWF0IC0gdWludDMyX3QsIHBpeGVsIGZvcm1hdCB0byBiZSB1c2VkLCBG T1VSQ0MgY29kZS4KKyAqIHdpZHRoIC0gdWludDMyX3QsIHdpZHRoIGluIHBpeGVscy4KKyAqIGhl aWdodCAtIHVpbnQzMl90LCBoZWlnaHQgaW4gcGl4ZWxzLgorICoKKyAqIFNlZSByZXNwb25zZSBm b3JtYXQgZm9yIHRoaXMgcmVxdWVzdC4KKyAqCisgKiBOb3RlczoKKyAqICAtIHRoZSBvbmx5IGRp ZmZlcmVuY2UgYmV0d2VlbiBYRU5DQU1FUkFfT1BfQ09ORklHX1ZBTElEQVRFIGFuZAorICogICAg WEVOQ0FNRVJBX09QX0NPTkZJR19TRVQgaXMgdGhhdCB0aGUgZm9ybWVyIGRvZXNuJ3QgYWN0dWFs bHkgY2hhbmdlCisgKiAgICBjYW1lcmEgY29uZmlndXJhdGlvbiwgYnV0IHF1ZXJpZXMgaWYgdGhl IGNvbmZpZ3VyYXRpb24gaXMgdmFsaWQuCisgKiAgICBUaGlzIGNhbiBiZSB1c2VkIHdoaWxlIHN0 cmVhbSBpcyBhY3RpdmUgYW5kL29yIGJ1ZmZlcnMgYWxsb2NhdGVkLgorICogIC0gZnJvbnRlbmQg bXVzdCBjaGVjayB0aGUgY29ycmVzcG9uZGluZyByZXNwb25zZSBpbiBvcmRlciB0byBzZWUKKyAq ICAgIGlmIHRoZSB2YWx1ZXMgcmVwb3J0ZWQgYmFjayBieSB0aGUgYmFja2VuZCBkbyBtYXRjaCB0 aGUgZGVzaXJlZCBvbmVzCisgKiAgICBhbmQgY2FuIGJlIGFjY2VwdGVkLgorICogIC0gZnJvbnRl bmQgbWF5IHNlbmQgbXVsdGlwbGUgWEVOQ0FNRVJBX09QX0NPTkZJR19TRVQgcmVxdWVzdHMgYmVm b3JlCisgKiAgICBzZW5kaW5nIFhFTkNBTUVSQV9PUF9TVFJFQU1fU1RBUlQgcmVxdWVzdCB0byB1 cGRhdGUgb3IgdHVuZSB0aGUKKyAqICAgIGZpbmFsIHN0cmVhbSBjb25maWd1cmF0aW9uLgorICog IC0gY29uZmlndXJhdGlvbiBjYW5ub3QgYmUgY2hhbmdlZCBkdXJpbmcgYWN0aXZlIHN0cmVhbWlu ZywgZS5nLgorICogICAgYWZ0ZXIgWEVOQ0FNRVJBX09QX1NUUkVBTV9TVEFSVCBhbmQgYmVmb3Jl IFhFTkNBTUVSQV9PUF9TVFJFQU1fU1RPUAorICogICAgcmVxdWVzdHMuCisgKi8KK3N0cnVjdCB4 ZW5jYW1lcmFfY29uZmlnX3JlcSB7CisgICAgdWludDMyX3QgcGl4ZWxfZm9ybWF0OworICAgIHVp bnQzMl90IHdpZHRoOworICAgIHVpbnQzMl90IGhlaWdodDsKK307CisKKy8qCisgKiBSZXF1ZXN0 IGN1cnJlbnQgY29uZmlndXJhdGlvbiBvZiB0aGUgY2FtZXJhOgorICogICAgICAgICAwICAgICAg ICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAgICAgICBvY3Rl dAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgaWQgICAgICAgICAgICAgICAg fCBfT1BfQ09ORklHX0dFVCB8ICAgcmVzZXJ2ZWQgICAgIHwgNAorICogKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisg KiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgOAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8L1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAqICst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8IDY0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqCisgKiBT ZWUgcmVzcG9uc2UgZm9ybWF0IGZvciB0aGlzIHJlcXVlc3QuCisgKgorICoKKyAqIFJlcXVlc3Qg dG8gc2V0IHRoZSBmcmFtZSByYXRlIG9mIHRoZSBzdHJlYW06CisgKiAgICAgICAgIDAgICAgICAg ICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0 CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICBpZCAgICAgICAgICAgICAgICB8 IF9GUkFNRV9SQVRFX1NFVHwgICByZXNlcnZlZCAgICAgfCA0CisgKiArLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAq IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCA4CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAg ICAgICAgIGZyYW1lX3JhdGVfbnVtZXIgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMgorICog Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZV9yYXRlX2Rl bm9tICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTYKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IDIwCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAorICogKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgNjQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICoKKyAqIGZyYW1l X3JhdGVfbnVtZXIgLSB1aW50MzJfdCwgbnVtZXJhdG9yIG9mIHRoZSBmcmFtZSByYXRlLgorICog ZnJhbWVfcmF0ZV9kZW5vbSAtIHVpbnQzMl90LCBkZW5vbWluYXRvciBvZiB0aGUgZnJhbWUgcmF0 ZS4KKyAqCisgKiBOb3RlczoKKyAqICAtIHRvIHF1ZXJ5IHRoZSBjdXJyZW50IChhY3R1YWwpIGZy YW1lIHJhdGUgdXNlIFhFTkNBTUVSQV9PUF9DT05GSUdfR0VUCisgKiAgICByZXF1ZXN0LgorICog IC0gdGhpcyByZXF1ZXN0IGNhbiBiZSB1c2VkIHdpdGggY2FtZXJhIGJ1ZmZlcnMgYWxsb2NhdGVk LCBidXQgc3RyZWFtCisgKiAgICBzdG9wcGVkLCBlLmcuIGZyb250ZW5kIGlzIGFsbG93ZWQgdG8g c3RvcCB0aGUgc3RyZWFtIHdpdGgKKyAqICAgIFhFTkNBTUVSQV9PUF9TVFJFQU1fU1RPUCwgaG9s ZCB0aGUgYnVmZmVycyBhbGxvY2F0ZWQgKGUuZy4ga2VlcCB0aGUKKyAqICAgIGNvbmZpZ3VyYXRp b24gc2V0IHdpdGggWEVOQ0FNRVJBX09QX0NPTkZJR19TRVQpLCBjaGFuZ2UgdGhlCisgKiAgICBm cmFtZSByYXRlIG9mIHRoZSBzdHJlYW0gYW5kIChyZSlzdGFydCB0aGUgc3RyZWFtIGFnYWluIHdp dGgKKyAqICAgIFhFTkNBTUVSQV9PUF9TVFJFQU1fU1RBUlQuCisgKiAgLSBmcmFtZSByYXRlIGNh bm5vdCBiZSBjaGFuZ2VkIGR1cmluZyBhY3RpdmUgc3RyZWFtaW5nLCBlLmcuCisgKiAgICBhZnRl ciBYRU5DQU1FUkFfT1BfU1RSRUFNX1NUQVJUIGFuZCBiZWZvcmUgWEVOQ0FNRVJBX09QX1NUUkVB TV9TVE9QCisgKiAgICBjb21tYW5kcy4KKyAqLworc3RydWN0IHhlbmNhbWVyYV9mcmFtZV9yYXRl X3JlcSB7CisgICAgdWludDMyX3QgZnJhbWVfcmF0ZV9udW1lcjsKKyAgICB1aW50MzJfdCBmcmFt ZV9yYXRlX2Rlbm9tOworfTsKKworLyoKKyAqIFJlcXVlc3QgY2FtZXJhIGJ1ZmZlcidzIGxheW91 dDoKKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAyICAgICAg ICAgICAgICAgMyAgICAgICAgb2N0ZXQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAg ICAgIGlkICAgICAgICAgICAgICAgIHwgX0JVRl9HRVRfTEFZT1VUfCAgIHJlc2VydmVkICAgICB8 IDQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz ZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDgKKyAqICstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwor ICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC98CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA2NAorICog Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rCisgKgorICogU2VlIHJlc3BvbnNlIGZvcm1hdCBmb3IgdGhpcyByZXF1ZXN0 LgorICoKKyAqCisgKiBSZXF1ZXN0IG51bWJlciBvZiBidWZmZXJzIHRvIGJlIHVzZWQ6CisgKiAg ICAgICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAg IDMgICAgICAgIG9jdGV0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICBpZCAg ICAgICAgICAgICAgICB8IF9PUF9CVUZfUkVRVUVTVHwgICByZXNlcnZlZCAgICAgfCA0CisgKiAr LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA4CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAg bnVtX2J1ZnMgICAgfCAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAg ICAgICAgfCAxMgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTYKKyAqICstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKworICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCA2NAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKgorICogbnVtX2J1ZnMgLSB1aW50OF90LCBkZXNpcmVk IG51bWJlciBvZiBidWZmZXJzIHRvIGJlIHVzZWQuIFRoaXMgaXMKKyAqICAgbGltaXRlZCB0byB0 aGUgdmFsdWUgY29uZmlndXJlZCBpbiBYZW5TdG9yZS5tYXgtYnVmZmVycy4KKyAqICAgUGFzc2lu ZyB6ZXJvIG51bV9idWZzIGluIHRoaXMgcmVxdWVzdCAoYWZ0ZXIgc3RyZWFtaW5nIGhhcyBzdG9w cGVkCisgKiAgIGFuZCBhbGwgYnVmZmVycyBkZXN0cm95ZWQpIHVuYmxvY2tzIGNhbWVyYSBjb25m aWd1cmF0aW9uIGNoYW5nZXMuCisgKgorICogU2VlIHJlc3BvbnNlIGZvcm1hdCBmb3IgdGhpcyBy ZXF1ZXN0LgorICoKKyAqIE5vdGVzOgorICogIC0gZnJvbnRlbmQgbXVzdCBjaGVjayB0aGUgY29y cmVzcG9uZGluZyByZXNwb25zZSBpbiBvcmRlciB0byBzZWUKKyAqICAgIGlmIHRoZSB2YWx1ZXMg cmVwb3J0ZWQgYmFjayBieSB0aGUgYmFja2VuZCBkbyBtYXRjaCB0aGUgZGVzaXJlZCBvbmVzCisg KiAgICBhbmQgY2FuIGJlIGFjY2VwdGVkLgorICogIC0gZnJvbnRlbmQgbWF5IHNlbmQgbXVsdGlw bGUgWEVOQ0FNRVJBX09QX0JVRl9SRVFVRVNUIHJlcXVlc3RzIGJlZm9yZQorICogICAgc2VuZGlu ZyBYRU5DQU1FUkFfT1BfU1RSRUFNX1NUQVJUIHJlcXVlc3QgdG8gdXBkYXRlIG9yIHR1bmUgdGhl CisgKiAgICBjb25maWd1cmF0aW9uLgorICogIC0gYWZ0ZXIgdGhpcyByZXF1ZXN0IGNhbWVyYSBj b25maWd1cmF0aW9uIGNhbm5vdCBiZSBjaGFuZ2VkLCB1bmxlc3MKKyAqICAgIHN0cmVhbWluZyBp cyBzdG9wcGVkIGFuZCBidWZmZXJzIGRlc3Ryb3llZAorICovCitzdHJ1Y3QgeGVuY2FtZXJhX2J1 Zl9yZXF1ZXN0IHsKKyAgICB1aW50OF90IG51bV9idWZzOworfTsKKworLyoKKyAqIFJlcXVlc3Qg Y2FtZXJhIGJ1ZmZlciBjcmVhdGlvbjoKKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAg ICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKKyAqICstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKworICogfCAgICAgICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHwgX09QX0JVRl9DUkVB VEUgfCAgIHJlc2VydmVkICAgICB8IDQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IDgKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgIGluZGV4ICAgICB8ICAgICAgICAgICAgICAg ICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICB8IDEyCisgKiArLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsK KyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFuZV9vZmZzZXRbMF0gICAgICAgICAg ICAgICAgICAgICAgICAgfCAxNgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGxhbmVfb2Zmc2V0WzFdICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAK KyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYW5lX29m ZnNldFsyXSAgICAgICAgICAgICAgICAgICAgICAgICB8IDI0CisgKiArLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAq IHwgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFuZV9vZmZzZXRbM10gICAgICAgICAgICAg ICAgICAgICAgICAgfCAyOAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgZ3JlZl9kaXJlY3RvcnkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzIKKyAq ICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDM2CisgKiArLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvfAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNjQKKyAqICstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKworICoKKyAqIEFuIGF0dGVtcHQgdG8gY3JlYXRlIG11bHRpcGxlIGJ1ZmZlcnMgd2l0 aCB0aGUgc2FtZSBpbmRleCBpcyBhbiBlcnJvci4KKyAqIGluZGV4IGNhbiBiZSByZS11c2VkIGFm dGVyIGRlc3Ryb3lpbmcgdGhlIGNvcnJlc3BvbmRpbmcgY2FtZXJhIGJ1ZmZlci4KKyAqCisgKiBp bmRleCAtIHVpbnQ4X3QsIGluZGV4IG9mIHRoZSBidWZmZXIgdG8gYmUgY3JlYXRlZCBpbiB0aGUg cmFuZ2UKKyAqICAgZnJvbSAwIHRvIHRoZSBudW1fYnVmcyBmaWVsZCByZXR1cm5lZCBpbiByZXNw b25zZSBmb3IKKyAqICAgWEVOQ0FNRVJBX09QX0JVRl9SRVFVRVNUIHJlcXVlc3QKKyAqIHBsYW5l X29mZnNldCAtIGFycmF5IG9mIHVpbnQzMl90LCBvZmZzZXQgb2YgdGhlIGNvcnJlc3BvbmRpbmcg cGxhbmUKKyAqICAgaW4gb2N0ZXRzIGZyb20gdGhlIGJ1ZmZlciBzdGFydC4gTnVtYmVyIG9mIG9m ZnNldHMgcmV0dXJuZWQgaXMKKyAqICAgZXF1YWwgdG8gdGhlIHZhbHVlIHJldHVybmVkIGluIFhF TkNBTUVSQV9PUF9CVUZfR0VUX0xBWU9VVC5udW1fcGxhbmVzLgorICogZ3JlZl9kaXJlY3Rvcnkg LSBncmFudF9yZWZfdCwgYSByZWZlcmVuY2UgdG8gdGhlIGZpcnN0IHNoYXJlZCBwYWdlCisgKiAg IGRlc2NyaWJpbmcgc2hhcmVkIGJ1ZmZlciByZWZlcmVuY2VzLiBUaGUgc2l6ZSBvZiB0aGUgYnVm ZmVyIGlzIGVxdWFsIHRvCisgKiAgIFhFTkNBTUVSQV9PUF9CVUZfR0VUX0xBWU9VVC5zaXplIHJl c3BvbnNlLiBBdCBsZWFzdCBvbmUgcGFnZSBleGlzdHMuIElmCisgKiAgIHNoYXJlZCBidWZmZXIg c2l6ZSBleGNlZWRzIHdoYXQgY2FuIGJlIGFkZHJlc3NlZCBieSB0aGlzIHNpbmdsZSBwYWdlLAor ICogICB0aGVuIHJlZmVyZW5jZSB0byB0aGUgbmV4dCBzaGFyZWQgcGFnZSBtdXN0IGJlIHN1cHBs aWVkIChzZWUKKyAqICAgZ3JlZl9kaXJfbmV4dF9wYWdlIGJlbG93KS4KKyAqCisgKiBJZiBYRU5D QU1FUkFfRklFTERfQkVfQUxMT0MgY29uZmlndXJhdGlvbiBlbnRyeSBpcyBzZXQsIHRoZW4gYmFj a2VuZCB3aWxsCisgKiBhbGxvY2F0ZSB0aGUgYnVmZmVyIHdpdGggdGhlIHBhcmFtZXRlcnMgcHJv dmlkZWQgaW4gdGhpcyByZXF1ZXN0IGFuZCBwYWdlCisgKiBkaXJlY3RvcnkgaXMgaGFuZGxlZCBh cyBmb2xsb3dzOgorICogICBGcm9udGVuZCBvbiByZXF1ZXN0OgorICogICAgIC0gYWxsb2NhdGVz IHBhZ2VzIGZvciB0aGUgZGlyZWN0b3J5IChncmVmX2RpcmVjdG9yeSwKKyAqICAgICAgIGdyZWZf ZGlyX25leHRfcGFnZShzKQorICogICAgIC0gZ3JhbnRzIHBlcm1pc3Npb25zIGZvciB0aGUgcGFn ZXMgb2YgdGhlIGRpcmVjdG9yeSB0byB0aGUgYmFja2VuZAorICogICAgIC0gc2V0cyBncmVmX2Rp cl9uZXh0X3BhZ2UgZmllbGRzCisgKiAgIEJhY2tlbmQgb24gcmVzcG9uc2U6CisgKiAgICAgLSBn cmFudHMgcGVybWlzc2lvbnMgZm9yIHRoZSBwYWdlcyBvZiB0aGUgYnVmZmVyIGFsbG9jYXRlZCB0 bworICogICAgICAgdGhlIGZyb250ZW5kCisgKiAgICAgLSBmaWxscyBpbiBwYWdlIGRpcmVjdG9y eSB3aXRoIGdyYW50IHJlZmVyZW5jZXMKKyAqICAgICAgIChncmVmW10gaW4gc3RydWN0IHhlbmNh bWVyYV9wYWdlX2RpcmVjdG9yeSkKKyAqLworc3RydWN0IHhlbmNhbWVyYV9idWZfY3JlYXRlX3Jl cSB7CisgICAgdWludDhfdCBpbmRleDsKKyAgICB1aW50OF90IHJlc2VydmVkWzNdOworICAgIHVp bnQzMl90IHBsYW5lX29mZnNldFtYRU5DQU1FUkFfTUFYX1BMQU5FXTsKKyAgICBncmFudF9yZWZf dCBncmVmX2RpcmVjdG9yeTsKK307CisKKy8qCisgKiBTaGFyZWQgcGFnZSBmb3IgWEVOQ0FNRVJB X09QX0JVRl9DUkVBVEUgYnVmZmVyIGRlc2NyaXB0b3IgKGdyZWZfZGlyZWN0b3J5IGluCisgKiB0 aGUgcmVxdWVzdCkgZW1wbG95cyBhIGxpc3Qgb2YgcGFnZXMsIGRlc2NyaWJpbmcgYWxsIHBhZ2Vz IG9mIHRoZSBzaGFyZWQKKyAqIGRhdGEgYnVmZmVyOgorICogICAgICAgICAwICAgICAgICAgICAg ICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAorICog Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgZ3JlZl9kaXJfbmV4dF9w YWdlICAgICAgICAgICAgICAgICAgICAgICAgIHwgNAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JlZlswXSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgOAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAqICstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyZWZbaV0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IGkqNCs4CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvfAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn cmVmW04gLSAxXSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTio0KzgKKyAqICstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKworICoKKyAqIGdyZWZfZGlyX25leHRfcGFnZSAtIGdyYW50X3JlZl90LCByZWZlcmVuY2Ug dG8gdGhlIG5leHQgcGFnZSBkZXNjcmliaW5nCisgKiAgIHBhZ2UgZGlyZWN0b3J5LiBNdXN0IGJl IDAgaWYgdGhlcmUgYXJlIG5vIG1vcmUgcGFnZXMgaW4gdGhlIGxpc3QuCisgKiBncmVmW2ldIC0g Z3JhbnRfcmVmX3QsIHJlZmVyZW5jZSB0byBhIHNoYXJlZCBwYWdlIG9mIHRoZSBidWZmZXIKKyAq ICAgYWxsb2NhdGVkIGF0IFhFTkNBTUVSQV9PUF9CVUZfQ1JFQVRFLgorICoKKyAqIE51bWJlciBv ZiBncmFudF9yZWZfdCBlbnRyaWVzIGluIHRoZSB3aG9sZSBwYWdlIGRpcmVjdG9yeSBpcyBub3QK KyAqIHBhc3NlZCwgYnV0IGluc3RlYWQgY2FuIGJlIGNhbGN1bGF0ZWQgYXM6CisgKiAgIG51bV9n cmVmc190b3RhbCA9IChYRU5DQU1FUkFfT1BfQlVGX1JFUVVFU1Quc2l6ZSArIFhFTl9QQUdFX1NJ WkUgLSAxKSAvCisgKiAgICAgICBYRU5fUEFHRV9TSVpFCisgKi8KK3N0cnVjdCB4ZW5jYW1lcmFf cGFnZV9kaXJlY3RvcnkgeworICAgIGdyYW50X3JlZl90IGdyZWZfZGlyX25leHRfcGFnZTsKKyAg ICBncmFudF9yZWZfdCBncmVmWzFdOyAvKiBWYXJpYWJsZSBsZW5ndGggKi8KK307CisKKy8qCisg KiBSZXF1ZXN0IGJ1ZmZlciBkZXN0cnVjdGlvbiAtIGRlc3Ryb3kgYSBwcmV2aW91c2x5IGFsbG9j YXRlZCBjYW1lcmEgYnVmZmVyOgorICogICAgICAgICAwICAgICAgICAgICAgICAgIDEgICAgICAg ICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAorICogKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r CisgKiB8ICAgICAgICAgICAgICAgaWQgICAgICAgICAgICAgICAgfCBfT1BfQlVGX0RFU1RST1l8 ICAgcmVzZXJ2ZWQgICAgIHwgNAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOAor ICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgaW5kZXggICAgIHwgICAgICAgICAgICAgICAgICAg ICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgIHwgMTIKKyAqICstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICog fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IDE2CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAorICogKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgNjQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICoKKyAqIGlu ZGV4IC0gdWludDhfdCwgaW5kZXggb2YgdGhlIGJ1ZmZlciB0byBiZSBkZXN0cm95ZWQuCisgKgor ICoKKyAqIFJlcXVlc3QgcXVldWVpbmcgb2YgdGhlIGJ1ZmZlciBmb3IgYmFja2VuZCB1c2U6Cisg KiAgICAgICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAg ICAgIDMgICAgICAgIG9jdGV0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICBp ZCAgICAgICAgICAgICAgICB8IF9PUF9CVUZfUVVFVUUgIHwgICByZXNlcnZlZCAgICAgfCA0Cisg KiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVk ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA4CisgKiArLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwg ICAgICBpbmRleCAgICAgfCAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAg ICAgICAgICAgfCAxMgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTYKKyAqICst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKworICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCA2NAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKgorICogTm90ZXM6CisgKiAgLSBmcm9udGVuZHMg bXVzdCBub3QgYWNjZXNzIHRoZSBidWZmZXIgY29udGVudCBhZnRlciB0aGlzIHJlcXVlc3QgdW50 aWwKKyAqICAgIHJlc3BvbnNlIHRvIFhFTkNBTUVSQV9PUF9CVUZfREVRVUVVRSBoYXMgYmVlbiBy ZWNlaXZlZC4KKyAqICAtIGJ1ZmZlcnMgbXVzdCBiZSBxdWV1ZWQgdG8gdGhlIGJhY2tlbmQgYmVm b3JlIGRlc3Ryb3lpbmcgdGhlbSB3aXRoCisgKiAgICBYRU5DQU1FUkFfT1BfQlVGX0RFU1RST1ku CisgKgorICogaW5kZXggLSB1aW50OF90LCBpbmRleCBvZiB0aGUgYnVmZmVyIHRvIGJlIHF1ZXVl ZC4KKyAqCisgKgorICogUmVxdWVzdCBkZXF1ZXVlaW5nIG9mIHRoZSBidWZmZXIgZm9yIGZyb250 ZW5kIHVzZToKKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAy ICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAg ICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHxfT1BfQlVGX0RFUVVFVUUgfCAgIHJlc2VydmVk ICAgICB8IDQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDgKKyAqICstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKworICogfCAgICAgIGluZGV4ICAgICB8ICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQg ICAgICAgICAgICAgICAgICAgICB8IDEyCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAxNgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAqICstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwor ICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDY0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqCisgKiBOb3RlczoKKyAqICAt IGZyb250ZW5kIGlzIGFsbG93ZWQgdG8gYWNjZXNzIHRoZSBidWZmZXIgY29udGVudCBhZnRlciB0 aGUgY29ycmVzcG9uZGluZworICogICAgcmVzcG9uc2UgdG8gdGhpcyByZXF1ZXN0LgorICoKKyAq IGluZGV4IC0gdWludDhfdCwgaW5kZXggb2YgdGhlIGJ1ZmZlciB0byBiZSBxdWV1ZWQuCisgKgor ICoKKyAqIFJlcXVlc3QgY2FtZXJhIGNvbnRyb2wgZGV0YWlsczoKKyAqICAgICAgICAgMCAgICAg ICAgICAgICAgICAxICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgMyAgICAgICAgb2N0 ZXQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgIGlkICAgICAgICAgICAgICAg IHwgX09QX0NUUkxfRU5VTSAgfCAgIHJlc2VydmVkICAgICB8IDQKKyAqICstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwor ICogfCAgICAgIGluZGV4ICAgICB8ICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAg ICAgICAgICAgICAgICB8IDgKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEyCisg KiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSsKKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgNjQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICoKKyAqIFNlZSByZXNwb25zZSBmb3JtYXQg Zm9yIHRoaXMgcmVxdWVzdC4KKyAqCisgKiBpbmRleCAtIHVpbnQ4X3QsIGluZGV4IG9mIHRoZSBj b250cm9sIHRvIGJlIHF1ZXJpZWQuCisgKi8KK3N0cnVjdCB4ZW5jYW1lcmFfaW5kZXggeworICAg IHVpbnQ4X3QgaW5kZXg7Cit9OworCisvKgorICogUmVxdWVzdCBjYW1lcmEgY29udHJvbCBjaGFu Z2U6CisgKiAgICAgICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAgICAg ICAgICAgICAgIDMgICAgICAgIG9jdGV0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAg ICAgICBpZCAgICAgICAgICAgICAgICB8ICBfT1BfU0VUX0NUUkwgIHwgICByZXNlcnZlZCAgICAg fCA0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgdHlwZSAgICAgfCAgICAgICAgICAgICAg ICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgfCA4CisgKiArLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsK KyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAxMgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTYK KyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgbG93 IDMyLWJpdCAgICAgICAgICAgICAgICAgICAgICAgICB8IDIwCisgKiArLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAq IHwgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlIGhpZ2ggMzItYml0ICAgICAgICAgICAg ICAgICAgICAgICAgfCAyNAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjgKKyAq ICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKworICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCA2NAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKgorICogdHlwZSAtIHVpbnQ4X3QsIHR5cGUg b2YgdGhlIGNvbnRyb2wsIG9uZSBvZiB0aGUgWEVOQ0FNRVJBX0NUUkxfWFhYLgorICogdmFsdWUg LSBpbnQ2NF90LCBuZXcgdmFsdWUgb2YgdGhlIGNvbnRyb2wuCisgKi8KK3N0cnVjdCB4ZW5jYW1l cmFfY3RybF92YWx1ZSB7CisgICAgdWludDhfdCB0eXBlOworICAgIHVpbnQ4X3QgcmVzZXJ2ZWRb N107CisgICAgaW50NjRfdCB2YWx1ZTsKK307CisKKy8qCisgKiBSZXF1ZXN0IGNhbWVyYSBjb250 cm9sIHN0YXRlOgorICogICAgICAgICAwICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAg IDIgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAg ICAgICAgICAgICAgaWQgICAgICAgICAgICAgICAgfCAgX09QX0dFVF9DVFJMICB8ICAgcmVzZXJ2 ZWQgICAgIHwgNAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgIHR5cGUgICAgIHwgICAgICAg ICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgIHwgOAorICogKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgMTIKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC98CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl c2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA2NAorICogKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r CisgKgorICogU2VlIHJlc3BvbnNlIGZvcm1hdCBmb3IgdGhpcyByZXF1ZXN0LgorICoKKyAqIHR5 cGUgLSB1aW50OF90LCB0eXBlIG9mIHRoZSBjb250cm9sLCBvbmUgb2YgdGhlIFhFTkNBTUVSQV9D VFJMX1hYWC4KKyAqLworc3RydWN0IHhlbmNhbWVyYV9nZXRfY3RybF9yZXEgeworICAgIHVpbnQ4 X3QgdHlwZTsKK307CisKKy8qCisgKiBSZXF1ZXN0IGNhbWVyYSBjYXB0dXJlIHN0cmVhbSBzdGFy dDoKKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAyICAgICAg ICAgICAgICAgMyAgICAgICAgb2N0ZXQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAg ICAgIGlkICAgICAgICAgICAgICAgIHxfT1BfU1RSRUFNX1NUQVJUfCAgIHJlc2VydmVkICAgICB8 IDQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz ZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDgKKyAqICstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwor ICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC98CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA2NAorICog Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rCisgKgorICoKKyAqIFJlcXVlc3QgY2FtZXJhIGNhcHR1cmUgc3RyZWFtIHN0 b3A6CisgKiAgICAgICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAgICAg ICAgICAgICAgIDMgICAgICAgIG9jdGV0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAg ICAgICBpZCAgICAgICAgICAgICAgICB8X09QX1NUUkVBTV9TVE9QIHwgICByZXNlcnZlZCAgICAg fCA0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl c2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA4CisgKiArLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsK KyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvfAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNjQKKyAq ICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKworICoKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0gUmVzcG9uc2VzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogQWxs IHJlc3BvbnNlIHBhY2tldHMgaGF2ZSB0aGUgc2FtZSBsZW5ndGggKDY0IG9jdGV0cykuCisgKgor ICogQWxsIHJlc3BvbnNlIHBhY2tldHMgaGF2ZSBjb21tb24gaGVhZGVyOgorICogICAgICAgICAw ICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAgICAg ICBvY3RldAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgaWQgICAgICAgICAg ICAgICAgfCAgICBvcGVyYXRpb24gICB8ICAgIHJlc2VydmVkICAgIHwgNAorICogKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgOAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKgorICogaWQgLSB1aW50 MTZfdCwgY29waWVkIGZyb20gdGhlIHJlcXVlc3QuCisgKiBvcGVyYXRpb24gLSB1aW50OF90LCBY RU5DQU1FUkFfT1BfKiAtIGNvcGllZCBmcm9tIHJlcXVlc3QuCisgKiBzdGF0dXMgLSBpbnQzMl90 LCByZXNwb25zZSBzdGF0dXMsIHplcm8gb24gc3VjY2VzcyBhbmQgLVhFTl9FWFggb24gZmFpbHVy ZS4KKyAqCisgKgorICogQ29uZmlndXJhdGlvbiByZXNwb25zZSAtIHJlc3BvbnNlIGZvciBYRU5D QU1FUkFfT1BfQ09ORklHX1NFVCwKKyAqIFhFTkNBTUVSQV9PUF9DT05GSUdfR0VUIGFuZCBYRU5D QU1FUkFfT1BfQ09ORklHX1ZBTElEQVRFIHJlcXVlc3RzOgorICogICAgICAgICAwICAgICAgICAg ICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAor ICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgaWQgICAgICAgICAgICAgICAgfCBf T1BfQ09ORklHX1hYWCB8ICAgIHJlc2VydmVkICAgIHwgNAorICogKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgOAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBpeGVsIGZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTIKKyAqICst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE2CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAyMAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb2xvcnNwYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjQKKyAqICstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGZlcl9mdW5jICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IDI4CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHljYmNyX2VuYyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAzMgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg IHF1YW50aXphdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzYKKyAqICstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxfYXNwX3JhdGlvX251bWVyICAg ICAgICAgICAgICAgICAgICAgICB8IDQwCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAg ICAgICAgICAgICAgIGRpc3BsX2FzcF9yYXRpb19kZW5vbSAgICAgICAgICAgICAgICAgICAgICAg fCA0NAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFt ZV9yYXRlX251bWVyICAgICAgICAgICAgICAgICAgICAgICAgIHwgNDgKKyAqICstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t KworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVfcmF0ZV9kZW5vbSAgICAgICAg ICAgICAgICAgICAgICAgICB8IDUyCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA1 NgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCisgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAqICstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICog fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IDY0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqCisgKiBNZWFuaW5nIG9mIHRoZSBj b3JyZXNwb25kaW5nIHZhbHVlcyBpbiB0aGlzIHJlc3BvbnNlIGlzIHRoZSBzYW1lIGFzIGZvcgor ICogWEVOQ0FNRVJBX09QX0NPTkZJR19TRVQgYW5kIFhFTkNBTUVSQV9PUF9GUkFNRV9SQVRFX1NF VCByZXF1ZXN0cy4KKyAqCisgKiBjb2xvcnNwYWNlIC0gdWludDMyX3QsIHRoaXMgc3VwcGxlbWVu dHMgcGl4ZWxfZm9ybWF0IHBhcmFtZXRlciwKKyAqICAgb25lIG9mIHRoZSBYRU5DQU1FUkFfQ09M T1JTUEFDRV9YWFguCisgKiB4ZmVyX2Z1bmMgLSB1aW50MzJfdCwgdGhpcyBzdXBwbGVtZW50cyBj b2xvcnNwYWNlIHBhcmFtZXRlciwKKyAqICAgb25lIG9mIHRoZSBYRU5DQU1FUkFfWEZFUl9GVU5D X1hYWC4KKyAqIHljYmNyX2VuYyAtIHVpbnQzMl90LCB0aGlzIHN1cHBsZW1lbnRzIGNvbG9yc3Bh Y2UgcGFyYW1ldGVyLAorICogICBvbmUgb2YgdGhlIFhFTkNBTUVSQV9ZQ0JDUl9FTkNfWFhYLiBQ bGVhc2Ugbm90ZSwgdGhhdCB5Y2Jjcl9lbmMgaXMgb25seQorICogICB2YWxpZCBmb3IgWUNiQ3Ig cGl4ZWxmb3JtYXRzIGFuZCBzaG91bGQgYmUgaWdub3JlZCBvdGhlcndpc2UuCisgKiBxdWFudGl6 YXRpb24gLSB1aW50MzJfdCwgdGhpcyBzdXBwbGVtZW50cyBjb2xvcnNwYWNlIHBhcmFtZXRlciwK KyAqICAgb25lIG9mIHRoZSBYRU5DQU1FUkFfUVVBTlRJWkFUSU9OX1hYWC4KKyAqIGRpc3BsX2Fz cF9yYXRpb19udW1lciAtIHVpbnQzMl90LCBudW1lcmF0b3Igb2YgdGhlIGRpc3BsYXkgYXNwZWN0 IHJhdGlvLgorICogZGlzcGxfYXNwX3JhdGlvX2Rlbm9tIC0gdWludDMyX3QsIGRlbm9taW5hdG9y IG9mIHRoZSBkaXNwbGF5IGFzcGVjdCByYXRpby4KKyAqLworc3RydWN0IHhlbmNhbWVyYV9jb25m aWdfcmVzcCB7CisgICAgdWludDMyX3QgcGl4ZWxfZm9ybWF0OworICAgIHVpbnQzMl90IHdpZHRo OworICAgIHVpbnQzMl90IGhlaWdodDsKKyAgICB1aW50MzJfdCBjb2xvcnNwYWNlOworICAgIHVp bnQzMl90IHhmZXJfZnVuYzsKKyAgICB1aW50MzJfdCB5Y2Jjcl9lbmM7CisgICAgdWludDMyX3Qg cXVhbnRpemF0aW9uOworICAgIHVpbnQzMl90IGRpc3BsX2FzcF9yYXRpb19udW1lcjsKKyAgICB1 aW50MzJfdCBkaXNwbF9hc3BfcmF0aW9fZGVub207CisgICAgdWludDMyX3QgZnJhbWVfcmF0ZV9u dW1lcjsKKyAgICB1aW50MzJfdCBmcmFtZV9yYXRlX2Rlbm9tOworfTsKKworLyoKKyAqIFJlcXVl c3QgYnVmZmVyIHJlc3BvbnNlIC0gcmVzcG9uc2UgZm9yIFhFTkNBTUVSQV9PUF9CVUZfR0VUX0xB WU9VVAorICogcmVxdWVzdDoKKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAg ICAgICAgICAyICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKKyAqICstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwor ICogfCAgICAgICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHxfQlVGX0dFVF9MQVlPVVQgfCAg ICByZXNlcnZlZCAgICB8IDQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdGF0dXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDgKKyAq ICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKworICogfCAgIG51bV9wbGFuZXMgICB8ICAgICAgICAgICAgICAgICAgICAg cmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICB8IDEyCisgKiArLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAxNgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGxhbmVfc2l6ZVswXSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAKKyAqICst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYW5lX3NpemVbMV0g ICAgICAgICAgICAgICAgICAgICAgICAgICB8IDI0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAg ICAgICAgICAgICAgICAgICAgICAgICBwbGFuZV9zaXplWzJdICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAyOAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAg ICAgcGxhbmVfc2l6ZVszXSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzIKKyAqICstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhbmVfc3RyaWRlWzBdICAg ICAgICAgICAgICAgICAgICAgICAgICB8IDM2CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAg ICAgICAgICAgICAgICAgICAgIHBsYW5lX3N0cmlkZVsxXSAgICAgICAgICAgICAgICAgICAgICAg ICAgfCA0MAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICBw bGFuZV9zdHJpZGVbMl0gICAgICAgICAgICAgICAgICAgICAgICAgIHwgNDQKKyAqICstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhbmVfc3RyaWRlWzNdICAgICAg ICAgICAgICAgICAgICAgICAgICB8IDQ4CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv fAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNl cnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNjQKKyAqICstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwor ICoKKyAqIG51bV9wbGFuZXMgLSB1aW50OF90LCBudW1iZXIgb2YgcGxhbmVzIG9mIHRoZSBidWZm ZXIuCisgKiBzaXplIC0gdWludDMyX3QsIG92ZXJhbGwgc2l6ZSBvZiB0aGUgYnVmZmVyIGluY2x1 ZGluZyBzaXplcyBvZiB0aGUKKyAqICAgaW5kaXZpZHVhbCBwbGFuZXMgYW5kIHBhZGRpbmcgaWYg YXBwbGljYWJsZS4KKyAqIHBsYW5lX3NpemUgLSBhcnJheSBvZiB1aW50MzJfdCwgc2l6ZSBpbiBv Y3RldHMgb2YgdGhlIGNvcnJlc3BvbmRpbmcgcGxhbmUKKyAqICAgaW5jbHVkaW5nIHBhZGRpbmcu CisgKiBwbGFuZV9zdHJpZGUgLSBhcnJheSBvZiB1aW50MzJfdCwgc2l6ZSBpbiBvY3RldHMgb2Nj dXBpZWQgYnkgdGhlCisgKiAgIGNvcnJlc3BvbmRpbmcgc2luZ2xlIGltYWdlIGxpbmUgaW5jbHVk aW5nIHBhZGRpbmcgaWYgYXBwbGljYWJsZS4KKyAqCisgKiBOb3RlISBUaGUgc2l6ZXMgYW5kIHN0 cmlkZXMgaW4gdGhpcyByZXNwb25zZSBhcHBseSB0byBhbGwgYnVmZmVycyBjcmVhdGVkCisgKiB3 aXRoIFhFTkNBTUVSQV9PUF9CVUZfQ1JFQVRFIGNvbW1hbmQsIGJ1dCBpbmRpdmlkdWFsIGJ1ZmZl cnMgbWF5IGhhdmUKKyAqIGRpZmZlcmVudCBwbGFuZSBvZmZzZXRzLCBzZWUgWEVOQ0FNRVJBX09Q X0JVRl9SRVFVRVNULnBsYW5lX29mZnNldC4KKyAqLworc3RydWN0IHhlbmNhbWVyYV9idWZfZ2V0 X2xheW91dF9yZXNwIHsKKyAgICB1aW50OF90IG51bV9wbGFuZXM7CisgICAgdWludDhfdCByZXNl cnZlZFszXTsKKyAgICB1aW50MzJfdCBzaXplOworICAgIHVpbnQzMl90IHBsYW5lX3NpemVbWEVO Q0FNRVJBX01BWF9QTEFORV07CisgICAgdWludDMyX3QgcGxhbmVfc3RyaWRlW1hFTkNBTUVSQV9N QVhfUExBTkVdOworfTsKKworLyoKKyAqIFJlcXVlc3QgYnVmZmVyIHJlc3BvbnNlIC0gcmVzcG9u c2UgZm9yIFhFTkNBTUVSQV9PUF9CVUZfUkVRVUVTVAorICogcmVxdWVzdDoKKyAqICAgICAgICAg MCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgMyAgICAg ICAgb2N0ZXQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgIGlkICAgICAgICAg ICAgICAgIHxfT1BfQlVGX1JFUVVFU1QgfCAgICByZXNlcnZlZCAgICB8IDQKKyAqICstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IDgKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgIG51bV9idWZm ZXJzICB8ICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICB8 IDEyCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl c2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNgorICogKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r CisgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL3wKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDY0Cisg KiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSsKKyAqCisgKiBudW1fYnVmZmVycyAtIHVpbnQ4X3QsIG51bWJlciBvZiBi dWZmZXJzIHRvIGJlIHVzZWQuCisgKgorICoKKyAqIENvbnRyb2wgZW51bWVyYXRlIHJlc3BvbnNl IC0gcmVzcG9uc2UgZm9yIFhFTkNBTUVSQV9PUF9DVFJMX0VOVU06CisgKiAgICAgICAgIDAgICAg ICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgIDMgICAgICAgIG9j dGV0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICBpZCAgICAgICAgICAgICAg ICB8IF9PUF9DVFJMX0VOVU0gIHwgICAgcmVzZXJ2ZWQgICAgfCA0CisgKiArLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsK KyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCA4CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgIGluZGV4ICAgICAg fCAgICAgIHR5cGUgICAgICB8ICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgfCAxMgor ICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdz ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTYKKyAqICstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICog fCAgICAgICAgICAgICAgICAgICAgICAgICAgbWluIGxvdyAzMi1iaXRzICAgICAgICAgICAgICAg ICAgICAgICAgICB8IDIwCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAg ICAgICAgIG1pbiBoaWdoIDMyLWJpdHMgICAgICAgICAgICAgICAgICAgICAgICAgfCAyNAorICog Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICBtYXggbG93IDMyLWJp dHMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjgKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAg ICAgICAgICAgICAgICAgICAgICAgICAgbWF4IGhpZ2ggMzItYml0cyAgICAgICAgICAgICAgICAg ICAgICAgICB8IDMyCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAg ICAgc3RlcCBsb3cgMzItYml0cyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzNgorICogKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXAgaGlnaCAzMi1iaXRz ICAgICAgICAgICAgICAgICAgICAgICAgIHwgNDAKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAg ICAgICAgICAgICAgICAgICAgIGRlZl92YWwgbG93IDMyLWJpdHMgICAgICAgICAgICAgICAgICAg ICAgICB8IDQ0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICBk ZWZfdmFsIGhpZ2ggMzItYml0cyAgICAgICAgICAgICAgICAgICAgICAgfCA0OAorICogKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgNTIKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC98CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl c2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA2NAorICogKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r CisgKgorICogaW5kZXggLSB1aW50OF90LCBpbmRleCBvZiB0aGUgY2FtZXJhIGNvbnRyb2wgaW4g cmVzcG9uc2UuCisgKiB0eXBlIC0gdWludDhfdCwgdHlwZSBvZiB0aGUgY29udHJvbCwgb25lIG9m IHRoZSBYRU5DQU1FUkFfQ1RSTF9YWFguCisgKiBmbGFncyAtIHVpbnQzMl90LCBmbGFncyBvZiB0 aGUgY29udHJvbCwgb25lIG9mIHRoZSBYRU5DQU1FUkFfQ1RSTF9GTEdfWFhYLgorICogbWluIC0g aW50NjRfdCwgbWluaW11bSB2YWx1ZSBvZiB0aGUgY29udHJvbC4KKyAqIG1heCAtIGludDY0X3Qs IG1heGltdW0gdmFsdWUgb2YgdGhlIGNvbnRyb2wuCisgKiBzdGVwIC0gaW50NjRfdCwgbWluaW11 bSBzaXplIGluIHdoaWNoIGNvbnRyb2wgdmFsdWUgY2FuIGJlIGNoYW5nZWQuCisgKiBkZWZfdmFs IC0gaW50NjRfdCwgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgY29udHJvbC4KKyAqLworc3RydWN0IHhl bmNhbWVyYV9jdHJsX2VudW1fcmVzcCB7CisgICAgdWludDhfdCBpbmRleDsKKyAgICB1aW50OF90 IHR5cGU7CisgICAgdWludDhfdCByZXNlcnZlZFsyXTsKKyAgICB1aW50MzJfdCBmbGFnczsKKyAg ICBpbnQ2NF90IG1pbjsKKyAgICBpbnQ2NF90IG1heDsKKyAgICBpbnQ2NF90IHN0ZXA7CisgICAg aW50NjRfdCBkZWZfdmFsOworfTsKKworLyoKKyAqIEdldCBjb250cm9sIHJlc3BvbnNlIC0gcmVz cG9uc2UgZm9yIFhFTkNBTUVSQV9PUF9DVFJMX0dFVDoKKyAqICAgICAgICAgMCAgICAgICAgICAg ICAgICAxICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKKyAq ICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHwgX09Q X0NUUkxfR0VUICAgfCAgICByZXNlcnZlZCAgICB8IDQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IDgKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICB0eXBlICAgICB8ICAgICAg ICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICB8IDEyCisgKiArLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAxNgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgMjAKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAg dmFsdWUgbG93IDMyLWJpdCAgICAgICAgICAgICAgICAgICAgICAgICB8IDI0CisgKiArLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlIGhpZ2ggMzItYml0ICAg ICAgICAgICAgICAgICAgICAgICAgfCAyOAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgMzIKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98CisgKiArLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsK KyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCA2NAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKgorICogdHlwZSAtIHVpbnQ4 X3QsIHR5cGUgb2YgdGhlIGNvbnRyb2wsIG9uZSBvZiB0aGUgWEVOQ0FNRVJBX0NUUkxfWFhYLgor ICogdmFsdWUgLSBpbnQ2NF90LCBuZXcgdmFsdWUgb2YgdGhlIGNvbnRyb2wuCisgKi8KKworLyoK KyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXZlbnRzIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBFdmVudHMgYXJlIHNlbnQgdmlhIGEgc2hh cmVkIHBhZ2UgYWxsb2NhdGVkIGJ5IHRoZSBmcm9udCBhbmQgcHJvcGFnYXRlZCBieQorICogICBl dnQtZXZlbnQtY2hhbm5lbC9ldnQtcmluZy1yZWYgWGVuU3RvcmUgZW50cmllcy4KKyAqCisgKiBB bGwgZXZlbnQgcGFja2V0cyBoYXZlIHRoZSBzYW1lIGxlbmd0aCAoNjQgb2N0ZXRzKS4KKyAqIEFs bCBldmVudCBwYWNrZXRzIGhhdmUgY29tbW9uIGhlYWRlcjoKKyAqICAgICAgICAgMCAgICAgICAg ICAgICAgICAxICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQK KyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHwg ICAgICB0eXBlICAgICAgfCAgIHJlc2VydmVkICAgICB8IDQKKyAqICstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICog fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IDgKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICoKKyAqIGlkIC0gdWludDE2X3QsIGV2 ZW50IGlkLCBtYXkgYmUgdXNlZCBieSBmcm9udC4KKyAqIHR5cGUgLSB1aW50OF90LCB0eXBlIG9m IHRoZSBldmVudC4KKyAqCisgKgorICogRnJhbWUgY2FwdHVyZWQgZXZlbnQgLSBldmVudCBmcm9t IGJhY2sgdG8gZnJvbnQgd2hlbiBhIG5ldyBjYXB0dXJlZAorICogZnJhbWUgaXMgYXZhaWxhYmxl OgorICogICAgICAgICAwICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAg ICAgICAgICAzICAgICAgICBvY3RldAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAg ICAgaWQgICAgICAgICAgICAgICAgfF9FVlRfRlJBTUVfQVZBSUx8ICAgcmVzZXJ2ZWQgICAgIHwg NAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNl cnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOAorICogKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisg KiB8ICAgICAgaW5kZXggICAgIHwgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAg ICAgICAgICAgICAgIHwgMTIKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVzZWRfc3ogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE2Cisg KiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXFfbnVt ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMAorICogKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgMjQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98CisgKiArLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCA2NAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKgorICogaW5k ZXggLSB1aW50OF90LCBpbmRleCBvZiB0aGUgYnVmZmVyIHRoYXQgY29udGFpbnMgbmV3IGNhcHR1 cmVkIGZyYW1lLAorICogICBzZWUgWEVOQ0FNRVJBX09QX0JVRl9DUkVBVEUgZGVzY3JpcHRpb24g b24gdGhlIHJhbmdlCisgKiB1c2VkX3N6IC0gdWludDMyX3QsIG51bWJlciBvZiBvY3RldHMgdGhp cyBmcmFtZSBoYXMuIFRoaXMgY2FuIGJlIGxlc3MKKyAqIHRoYW4gdGhlIFhFTkNBTUVSQV9PUF9C VUZfUkVRVUVTVC5zaXplIChyZXNwb25zZSkgZm9yIGNvbXByZXNzZWQgZm9ybWF0cy4KKyAqIHNl cV9udW0gLSB1aW50MzJfdCwgc2VxdWVudGlhbCBudW1iZXIgb2YgdGhlIGZyYW1lLiBNdXN0IGJl CisgKiAgIG1vbm90b25pY2FsbHkgaW5jcmVhc2luZy4gSWYgc2tpcHMgYXJlIGRldGVjdGVkIGlu IHNlcV9udW0gdGhlbiB0aGF0CisgKiAgIG1lYW5zIHRoYXQgdGhlIGZyYW1lcyBpbi1iZXR3ZWVu IHdlcmUgZHJvcHBlZC4gTm90ZSBob3dldmVyIHRoYXQgbm90CisgKiAgIGFsbCB2aWRlbyBjYXB0 dXJlIGhhcmR3YXJlIGlzIGNhcGFibGUgb2YgZGV0ZWN0aW5nIGRyb3BwZWQgZnJhbWVzLgorICog ICBJbiB0aGF0IGNhc2UgdGhlcmUgd2lsbCBiZSBubyBza2lwcyBpbiB0aGUgc2VxdWVuY2UgY291 bnRlci4KKyAqLworc3RydWN0IHhlbmNhbWVyYV9mcmFtZV9hdmFpbF9ldnQgeworICAgIHVpbnQ4 X3QgaW5kZXg7CisgICAgdWludDhfdCByZXNlcnZlZFszXTsKKyAgICB1aW50MzJfdCB1c2VkX3N6 OworICAgIHVpbnQzMl90IHNlcV9udW07Cit9OworCisvKgorICogQ29udHJvbCBjaGFuZ2UgZXZl bnQtIGV2ZW50IGZyb20gYmFjayB0byBmcm9udCB3aGVuIGNhbWVyYSBjb250cm9sCisgKiBoYXMg Y2hhbmdlZDoKKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAy ICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAg ICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHxfRVZUX0NUUkxfQ0hBTkdFfCAgIHJlc2VydmVk ICAgICB8IDQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICB0eXBlICAgICB8ICAgICAgICAg ICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICB8IDgKKyAqICstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IDEyCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAxNgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1 ZSBsb3cgMzItYml0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAKKyAqICstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t KworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgaGlnaCAzMi1iaXQgICAgICAg ICAgICAgICAgICAgICAgICB8IDI0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAy OAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCisgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAqICstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICog fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IDY0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqCisgKiB0eXBlIC0gdWludDhfdCwg dHlwZSBvZiB0aGUgY29udHJvbCwgb25lIG9mIHRoZSBYRU5DQU1FUkFfQ1RSTF9YWFguCisgKiB2 YWx1ZSAtIGludDY0X3QsIG5ldyB2YWx1ZSBvZiB0aGUgY29udHJvbC4KKyAqCisgKiBOb3RlczoK KyAqICAtIHRoaXMgZXZlbnQgaXMgbm90IHNlbnQgZm9yIHdyaXRlLW9ubHkgY29udHJvbHMKKyAq ICAtIHRoaXMgZXZlbnQgaXMgbm90IHNlbnQgdG8gdGhlIG9yaWdpbmF0b3Igb2YgdGhlIGNvbnRy b2wgY2hhbmdlCisgKiAgLSB0aGlzIGV2ZW50IGlzIG5vdCBzZW50IHdoZW4gZnJvbnRlbmQgZmly c3QgY29ubmVjdHMsIGUuZy4gaW5pdGlhbAorICogICAgY29udHJvbCBzdGF0ZSBtdXN0IGJlIGV4 cGxpY2l0bHkgcXVlcmllZAorICovCisKK3N0cnVjdCB4ZW5jYW1lcmFfcmVxIHsKKyAgICB1aW50 MTZfdCBpZDsKKyAgICB1aW50OF90IG9wZXJhdGlvbjsKKyAgICB1aW50OF90IHJlc2VydmVkWzVd OworICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0IHhlbmNhbWVyYV9jb25maWdfcmVxIGNvbmZp ZzsKKyAgICAgICAgc3RydWN0IHhlbmNhbWVyYV9mcmFtZV9yYXRlX3JlcSBmcmFtZV9yYXRlOwor ICAgICAgICBzdHJ1Y3QgeGVuY2FtZXJhX2J1Zl9yZXF1ZXN0IGJ1Zl9yZXF1ZXN0OworICAgICAg ICBzdHJ1Y3QgeGVuY2FtZXJhX2J1Zl9jcmVhdGVfcmVxIGJ1Zl9jcmVhdGU7CisgICAgICAgIHN0 cnVjdCB4ZW5jYW1lcmFfaW5kZXggaW5kZXg7CisgICAgICAgIHN0cnVjdCB4ZW5jYW1lcmFfY3Ry bF92YWx1ZSBjdHJsX3ZhbHVlOworICAgICAgICBzdHJ1Y3QgeGVuY2FtZXJhX2dldF9jdHJsX3Jl cSBnZXRfY3RybDsKKyAgICAgICAgdWludDhfdCByZXNlcnZlZFs1Nl07CisgICAgfSByZXE7Cit9 OworCitzdHJ1Y3QgeGVuY2FtZXJhX3Jlc3AgeworICAgIHVpbnQxNl90IGlkOworICAgIHVpbnQ4 X3Qgb3BlcmF0aW9uOworICAgIHVpbnQ4X3QgcmVzZXJ2ZWQ7CisgICAgaW50MzJfdCBzdGF0dXM7 CisgICAgdW5pb24geworICAgICAgICBzdHJ1Y3QgeGVuY2FtZXJhX2NvbmZpZ19yZXNwIGNvbmZp ZzsKKyAgICAgICAgc3RydWN0IHhlbmNhbWVyYV9idWZfZ2V0X2xheW91dF9yZXNwIGJ1Zl9sYXlv dXQ7CisgICAgICAgIHN0cnVjdCB4ZW5jYW1lcmFfYnVmX3JlcXVlc3QgYnVmX3JlcXVlc3Q7Cisg ICAgICAgIHN0cnVjdCB4ZW5jYW1lcmFfY3RybF9lbnVtX3Jlc3AgY3RybF9lbnVtOworICAgICAg ICBzdHJ1Y3QgeGVuY2FtZXJhX2N0cmxfdmFsdWUgY3RybF92YWx1ZTsKKyAgICAgICAgdWludDhf dCByZXNlcnZlZDFbNTZdOworICAgIH0gcmVzcDsKK307CisKK3N0cnVjdCB4ZW5jYW1lcmFfZXZ0 IHsKKyAgICB1aW50MTZfdCBpZDsKKyAgICB1aW50OF90IHR5cGU7CisgICAgdWludDhfdCByZXNl cnZlZFs1XTsKKyAgICB1bmlvbiB7CisgICAgICAgIHN0cnVjdCB4ZW5jYW1lcmFfZnJhbWVfYXZh aWxfZXZ0IGZyYW1lX2F2YWlsOworICAgICAgICBzdHJ1Y3QgeGVuY2FtZXJhX2N0cmxfdmFsdWUg Y3RybF92YWx1ZTsKKyAgICAgICAgdWludDhfdCByZXNlcnZlZFs1Nl07CisgICAgfSBldnQ7Cit9 OworCitERUZJTkVfUklOR19UWVBFUyh4ZW5fY2FtZXJhaWYsIHN0cnVjdCB4ZW5jYW1lcmFfcmVx LCBzdHJ1Y3QgeGVuY2FtZXJhX3Jlc3ApOworCisvKgorICoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor ICogICAgICAgICAgICAgICAgICAgICAgICBCYWNrIHRvIGZyb250IGV2ZW50cyBkZWxpdmVyeQor ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgorICogSW4gb3JkZXIgdG8gZGVsaXZlciBhc3luY2hyb25v dXMgZXZlbnRzIGZyb20gYmFjayB0byBmcm9udCBhIHNoYXJlZCBwYWdlIGlzCisgKiBhbGxvY2F0 ZWQgYnkgZnJvbnQgYW5kIGl0cyBncmFudGVkIHJlZmVyZW5jZSBwcm9wYWdhdGVkIHRvIGJhY2sg dmlhCisgKiBYZW5TdG9yZSBlbnRyaWVzIChldnQtcmluZy1yZWYvZXZ0LWV2ZW50LWNoYW5uZWwp LgorICogVGhpcyBwYWdlIGhhcyBhIGNvbW1vbiBoZWFkZXIgdXNlZCBieSBib3RoIGZyb250IGFu ZCBiYWNrIHRvIHN5bmNocm9uaXplCisgKiBhY2Nlc3MgYW5kIGNvbnRyb2wgZXZlbnQncyByaW5n IGJ1ZmZlciwgd2hpbGUgYmFjayBiZWluZyBhIHByb2R1Y2VyIG9mIHRoZQorICogZXZlbnRzIGFu ZCBmcm9udCBiZWluZyBhIGNvbnN1bWVyLiBUaGUgcmVzdCBvZiB0aGUgcGFnZSBhZnRlciB0aGUg aGVhZGVyCisgKiBpcyB1c2VkIGZvciBldmVudCBwYWNrZXRzLgorICoKKyAqIFVwb24gcmVjZXB0 aW9uIG9mIGFuIGV2ZW50KHMpIGZyb250IG1heSBjb25maXJtIGl0cyByZWNlcHRpb24KKyAqIGZv ciBlaXRoZXIgZWFjaCBldmVudCwgZ3JvdXAgb2YgZXZlbnRzIG9yIG5vbmUuCisgKi8KKworc3Ry dWN0IHhlbmNhbWVyYV9ldmVudF9wYWdlIHsKKyAgICB1aW50MzJfdCBpbl9jb25zOworICAgIHVp bnQzMl90IGluX3Byb2Q7CisgICAgdWludDhfdCByZXNlcnZlZFs1Nl07Cit9OworCisjZGVmaW5l IFhFTkNBTUVSQV9FVkVOVF9QQUdFX1NJWkUgNDA5NgorI2RlZmluZSBYRU5DQU1FUkFfSU5fUklO R19PRkZTIChzaXplb2Yoc3RydWN0IHhlbmNhbWVyYV9ldmVudF9wYWdlKSkKKyNkZWZpbmUgWEVO Q0FNRVJBX0lOX1JJTkdfU0laRSAoWEVOQ0FNRVJBX0VWRU5UX1BBR0VfU0laRSAtIFhFTkNBTUVS QV9JTl9SSU5HX09GRlMpCisjZGVmaW5lIFhFTkNBTUVSQV9JTl9SSU5HX0xFTiAoWEVOQ0FNRVJB X0lOX1JJTkdfU0laRSAvIHNpemVvZihzdHJ1Y3QgeGVuY2FtZXJhX2V2dCkpCisjZGVmaW5lIFhF TkNBTUVSQV9JTl9SSU5HKHBhZ2UpIFwKKyAgICAoKHN0cnVjdCB4ZW5jYW1lcmFfZXZ0ICopKChj aGFyICopKHBhZ2UpICsgWEVOQ0FNRVJBX0lOX1JJTkdfT0ZGUykpCisjZGVmaW5lIFhFTkNBTUVS QV9JTl9SSU5HX1JFRihwYWdlLCBpZHgpIFwKKyAgICAoWEVOQ0FNRVJBX0lOX1JJTkcoKHBhZ2Up KVsoaWR4KSAlIFhFTkNBTUVSQV9JTl9SSU5HX0xFTl0pCisKKyNlbmRpZiAvKiBfX1hFTl9QVUJM SUNfSU9fQ0FNRVJBSUZfSF9fICovCisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2Rl OiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFi LXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwotLSAKMi4y MC4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVu LWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6 Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==