From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: [PATCH 1/1] cameraif: add ABI for para-virtual camera Date: Tue, 31 Jul 2018 12:31:42 +0300 Message-ID: <20180731093142.3828-2-andr2000@gmail.com> References: <20180731093142.3828-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 1fkR0W-0002Xv-PO for xen-devel@lists.xenproject.org; Tue, 31 Jul 2018 09:31:56 +0000 Received: by mail-lj1-x242.google.com with SMTP id j19-v6so13081535ljc.7 for ; Tue, 31 Jul 2018 02:31:53 -0700 (PDT) In-Reply-To: <20180731093142.3828-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 Cc: Oleksandr Andrushchenko List-Id: xen-devel@lists.xenproject.org RnJvbTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVw YW0uY29tPgoKVGhpcyBpcyB0aGUgQUJJIGZvciB0aGUgdHdvIGhhbHZlcyBvZiBhIHBhcmEtdmly dHVhbGl6ZWQKY2FtZXJhIGRyaXZlciB3aGljaCBleHRlbmRzIFhlbidzIHJlYWNoIG11bHRpbWVk aWEgY2FwYWJpbGl0aWVzIGV2ZW4KZmFydGhlciBlbmFibGluZyBpdCBmb3IgdmlkZW8gY29uZmVy ZW5jaW5nLCBJbi1WZWhpY2xlIEluZm90YWlubWVudCwKaGlnaCBkZWZpbml0aW9uIG1hcHMgZXRj LgoKVGhlIGluaXRpYWwgZ29hbCBpcyB0byBzdXBwb3J0IG1vc3QgbmVlZGVkIGZ1bmN0aW9uYWxp dHkgd2l0aCB0aGUKZmluYWwgaWRlYSB0byBtYWtlIGl0IHBvc3NpYmxlIHRvIGV4dGVuZCB0aGUg cHJvdG9jb2wgaWYgbmVlZCBiZToKCjEuIFByb3ZpZGUgbWVhbnMgZm9yIGJhc2UgdmlydHVhbCBk ZXZpY2UgY29uZmlndXJhdGlvbjoKIC0gcGl4ZWwgZm9ybWF0cwogLSByZXNvbHV0aW9ucwogLSBm cmFtZSByYXRlcwoyLiBTdXBwb3J0IGJhc2ljIGNhbWVyYSBjb250cm9sczoKIC0gY29udHJhc3QK IC0gYnJpZ2h0bmVzcwogLSBodWUKIC0gc2F0dXJhdGlvbgozLiBTdXBwb3J0IHN0cmVhbWluZyBj b250cm9sCjQuIFN1cHBvcnQgemVyby1jb3B5aW5nIHVzZS1jYXNlcwoKU2lnbmVkLW9mZi1ieTog T2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29t PgotLS0KIHhlbi9pbmNsdWRlL3B1YmxpYy9pby9jYW1lcmFpZi5oIHwgOTgxICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA5ODEgaW5zZXJ0aW9ucygrKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL3B1YmxpYy9pby9jYW1lcmFpZi5oCgpkaWZm IC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL2lvL2NhbWVyYWlmLmggYi94ZW4vaW5jbHVkZS9w dWJsaWMvaW8vY2FtZXJhaWYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAuLmJkYzZhMTI2MmZjZgotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9p by9jYW1lcmFpZi5oCkBAIC0wLDAgKzEsOTgxIEBACisvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisg KiBjYW1lcmFpZi5oCisgKgorICogVW5pZmllZCBjYW1lcmEgZGV2aWNlIEkvTyBpbnRlcmZhY2Ug Zm9yIFhlbiBndWVzdCBPU2VzLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQs IGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9mIHRo aXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0 d2FyZSIpLCB0bworICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwg aW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKKyAqIHJpZ2h0cyB0byB1c2UsIGNvcHks IG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgor ICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8g d2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0 aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp Y2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFs bCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAq IFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFO WSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVE IFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxM IFRIRQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBD TEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElP TiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBP RiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIK KyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg RVBBTSBTeXN0ZW1zIEluYy4KKyAqCisgKiBBdXRob3I6IE9sZWtzYW5kciBBbmRydXNoY2hlbmtv IDxvbGVrc2FuZHJfYW5kcnVzaGNoZW5rb0BlcGFtLmNvbT4KKyAqLworCisjaWZuZGVmIF9fWEVO X1BVQkxJQ19JT19DQU1FUkFJRl9IX18KKyNkZWZpbmUgX19YRU5fUFVCTElDX0lPX0NBTUVSQUlG X0hfXworCisjaW5jbHVkZSAicmluZy5oIgorI2luY2x1ZGUgIi4uL2dyYW50X3RhYmxlLmgiCisK Ky8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAg IFByb3RvY29sIHZlcnNpb24KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworI2RlZmluZSBY RU5DQU1FUkFfUFJPVE9DT0xfVkVSU0lPTiAgICAgIjEiCisKKy8qCisgKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCisgKiAgICAgICAgICAgICAgICAgIEZlYXR1cmUgYW5kIFBhcmFtZXRlciBOZWdvdGlh dGlvbgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIEZyb250LT5iYWNrIG5vdGlmaWNh dGlvbnM6IHdoZW4gZW5xdWV1aW5nIGEgbmV3IHJlcXVlc3QsIHNlbmRpbmcgYQorICogbm90aWZp Y2F0aW9uIGNhbiBiZSBtYWRlIGNvbmRpdGlvbmFsIG9uIHhlbmNhbWVyYV9yZXEgKGkuZS4sIHRo ZSBnZW5lcmljCisgKiBob2xkLW9mZiBtZWNoYW5pc20gcHJvdmlkZWQgYnkgdGhlIHJpbmcgbWFj cm9zKS4gQmFja2VuZHMgbXVzdCBzZXQKKyAqIHhlbmNhbWVyYV9yZXEgYXBwcm9wcmlhdGVseSAo ZS5nLiwgdXNpbmcgUklOR19GSU5BTF9DSEVDS19GT1JfUkVRVUVTVFMoKSkuCisgKgorICogQmFj ay0+ZnJvbnQgbm90aWZpY2F0aW9uczogd2hlbiBlbnF1ZXVpbmcgYSBuZXcgcmVzcG9uc2UsIHNl bmRpbmcgYQorICogbm90aWZpY2F0aW9uIGNhbiBiZSBtYWRlIGNvbmRpdGlvbmFsIG9uIHhlbmNh bWVyYV9yZXNwIChpLmUuLCB0aGUgZ2VuZXJpYworICogaG9sZC1vZmYgbWVjaGFuaXNtIHByb3Zp ZGVkIGJ5IHRoZSByaW5nIG1hY3JvcykuIEZyb250ZW5kcyBtdXN0IHNldAorICogeGVuY2FtZXJh X3Jlc3AgYXBwcm9wcmlhdGVseSAoZS5nLiwgdXNpbmcgUklOR19GSU5BTF9DSEVDS19GT1JfUkVT UE9OU0VTKCkpLgorICoKKyAqIFRoZSB0d28gaGFsdmVzIG9mIGEgcGFyYS12aXJ0dWFsIGNhbWVy YSBkcml2ZXIgdXRpbGl6ZSBub2RlcyB3aXRoaW4KKyAqIFhlblN0b3JlIHRvIGNvbW11bmljYXRl IGNhcGFiaWxpdGllcyBhbmQgdG8gbmVnb3RpYXRlIG9wZXJhdGluZyBwYXJhbWV0ZXJzLgorICog VGhpcyBzZWN0aW9uIGVudW1lcmF0ZXMgdGhlc2Ugbm9kZXMgd2hpY2ggcmVzaWRlIGluIHRoZSBy ZXNwZWN0aXZlIGZyb250IGFuZAorICogYmFja2VuZCBwb3J0aW9ucyBvZiBYZW5TdG9yZSwgZm9s bG93aW5nIHRoZSBYZW5CdXMgY29udmVudGlvbi4KKyAqCisgKiBBbGwgZGF0YSBpbiBYZW5TdG9y ZSBpcyBzdG9yZWQgYXMgc3RyaW5ncy4gTm9kZXMgc3BlY2lmeWluZyBudW1lcmljCisgKiB2YWx1 ZXMgYXJlIGVuY29kZWQgaW4gZGVjaW1hbC4gSW50ZWdlciB2YWx1ZSByYW5nZXMgbGlzdGVkIGJl bG93IGFyZQorICogZXhwcmVzc2VkIGFzIGZpeGVkIHNpemVkIGludGVnZXIgdHlwZXMgY2FwYWJs ZSBvZiBzdG9yaW5nIHRoZSBjb252ZXJzaW9uCisgKiBvZiBhIHByb3Blcmx5IGZvcm1hdHRlZCBu b2RlIHN0cmluZywgd2l0aG91dCBsb3NzIG9mIGluZm9ybWF0aW9uLgorICoKKyAqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgRXhhbXBsZSBjb25maWd1cmF0 aW9uCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogVGhpcyBpcyBhbiBleGFtcGxlIG9m IGJhY2tlbmQgYW5kIGZyb250ZW5kIGNvbmZpZ3VyYXRpb246CisgKgorICotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0gQmFja2VuZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICoKKyAqIC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZjYW1lcmEvMS8wL2Zyb250 ZW5kLWlkID0gIjEiCisgKiAvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92Y2FtZXJhLzEvMC9mcm9u dGVuZCA9ICIvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZjYW1lcmEvMCIKKyAqIC9sb2NhbC9kb21h aW4vMC9iYWNrZW5kL3ZjYW1lcmEvMS8wL3N0YXRlID0gIjQiCisgKiAvbG9jYWwvZG9tYWluLzAv YmFja2VuZC92Y2FtZXJhLzEvMC92ZXJzaW9ucyA9ICIxLDIiCisgKgorICotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0gRnJvbnRlbmQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICoKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmNhbWVyYS8wL2JhY2tlbmQt aWQgPSAiMCIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmNhbWVyYS8wL2JhY2tlbmQgPSAi L2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmNhbWVyYS8xIgorICogL2xvY2FsL2RvbWFpbi8xL2Rl dmljZS92Y2FtZXJhLzAvc3RhdGUgPSAiNCIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmNh bWVyYS8wL3ZlcnNpb24gPSAiMSIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmNhbWVyYS8w L2JlLWFsbG9jID0gIjEiCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERldmlj ZSAwIGNvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIC9sb2Nh bC9kb21haW4vMS9kZXZpY2UvdmNhbWVyYS8wL2NvbnRyb2xzID0gImNvbnRyYXN0LGh1ZSIKKyAq IC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmNhbWVyYS8wL2Zvcm1hdHMvWVVZVi82NDB4NDgwID0g IjMwLzEsMTUvMSwxNS8yIgorICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92Y2FtZXJhLzAvZm9y bWF0cy9ZVVlWLzE5MjB4MTA4MCA9ICIxNS8yIgorICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92 Y2FtZXJhLzAvZm9ybWF0cy9CR1JBLzY0MHg0ODAgPSAiMTUvMSwxNS8yIgorICogL2xvY2FsL2Rv bWFpbi8xL2RldmljZS92Y2FtZXJhLzAvZm9ybWF0cy9CR1JBLzEyMDB4NzIwID0gIjE1LzIiCisg KiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZjYW1lcmEvMC91bmlxdWUtaWQgPSAiMCIKKyAqIC9s b2NhbC9kb21haW4vMS9kZXZpY2UvdmNhbWVyYS8wL3JlcS1yaW5nLXJlZiA9ICIyODMyIgorICog L2xvY2FsL2RvbWFpbi8xL2RldmljZS92Y2FtZXJhLzAvcmVxLWV2ZW50LWNoYW5uZWwgPSAiMTUi CisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZjYW1lcmEvMC9ldnQtcmluZy1yZWYgPSAiMzg3 IgorICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92Y2FtZXJhLzAvZXZ0LWV2ZW50LWNoYW5uZWwg PSAiMTYiCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERldmljZSAxIGNvbmZp Z3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIC9sb2NhbC9kb21haW4v MS9kZXZpY2UvdmNhbWVyYS8xL2NvbnRyb2xzID0gImJyaWdodG5lc3Msc2F0dXJhdGlvbixodWUi CisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZjYW1lcmEvMS9mb3JtYXRzL1lVWVYvNjQweDQ4 MCA9ICIzMC8xLDE1LzEsMTUvMiIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmNhbWVyYS8x L2Zvcm1hdHMvWVVZVi8xOTIweDEwODAgPSAiMTUvMiIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZp Y2UvdmNhbWVyYS8xL3VuaXF1ZS1pZCA9ICIxIgorICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92 Y2FtZXJhLzEvcmVxLXJpbmctcmVmID0gIjI4MzMiCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNl L3ZjYW1lcmEvMS9yZXEtZXZlbnQtY2hhbm5lbCA9ICIxNyIKKyAqIC9sb2NhbC9kb21haW4vMS9k ZXZpY2UvdmNhbWVyYS8xL2V2dC1yaW5nLXJlZiA9ICIzODgiCisgKiAvbG9jYWwvZG9tYWluLzEv ZGV2aWNlL3ZjYW1lcmEvMS9ldnQtZXZlbnQtY2hhbm5lbCA9ICIxOCIKKyAqCisgKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYWNrZW5kIFhlbkJ1 cyBOb2RlcworICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0gUHJvdG9jb2wgdmVyc2lvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqCisgKiB2ZXJzaW9ucworICogICAgICBWYWx1ZXM6ICAgICAgICAgPHN0cmluZz4KKyAq CisgKiAgICAgIExpc3Qgb2YgWEVOQ0FNRVJBX0xJU1RfU0VQQVJBVE9SIHNlcGFyYXRlZCBwcm90 b2NvbCB2ZXJzaW9ucyBzdXBwb3J0ZWQKKyAqICAgICAgYnkgdGhlIGJhY2tlbmQuIEZvciBleGFt cGxlICIxLDIsMyIuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAg ICAgICAgICAgICAgICAgRnJvbnRlbmQgWGVuQnVzIE5vZGVzCisgKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBZGRyZXNzaW5nIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGRvbS1pZAorICogICAgICBW YWx1ZXM6ICAgICAgICAgPHVpbnQxNl90PgorICoKKyAqICAgICAgRG9tYWluIGlkZW50aWZpZXIu CisgKgorICogZGV2LWlkCisgKiAgICAgIFZhbHVlczogICAgICAgICA8dWludDE2X3Q+CisgKgor ICogICAgICBEZXZpY2UgaWRlbnRpZmllci4KKyAqCisgKiAgICAgIC9sb2NhbC9kb21haW4vPGRv bS1pZD4vZGV2aWNlL3ZjYW1lcmEvPGRldi1pZD4vLi4uCisgKgorICotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSBQcm90b2NvbCB2ZXJzaW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICoKKyAqIHZlcnNpb24KKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDxzdHJpbmc+Cisg KgorICogICAgICBQcm90b2NvbCB2ZXJzaW9uLCBjaG9zZW4gYW1vbmcgdGhlIG9uZXMgc3VwcG9y dGVkIGJ5IHRoZSBiYWNrZW5kLgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBCYWNr ZW5kIGJ1ZmZlciBhbGxvY2F0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBi ZS1hbGxvYworICogICAgICBWYWx1ZXM6ICAgICAgICAgIjAiLCAiMSIKKyAqCisgKiAgICAgIElm IHZhbHVlIGlzIHNldCB0byAiMSIsIHRoZW4gYmFja2VuZCB3aWxsIGJlIHRoZSBidWZmZXIKKyAq ICAgICAgcHJvdmlkZXIvYWxsb2NhdG9yIGZvciB0aGlzIGRvbWFpbiBkdXJpbmcgWEVOQ0FNRVJB X09QX0JVRl9DUkVBVEUKKyAqICAgICAgb3BlcmF0aW9uLgorICogICAgICBJZiB2YWx1ZSBpcyBu b3QgIjEiIG9yIG9taXR0ZWQgZnJvbnRlbmQgbXVzdCBhbGxvY2F0ZSBidWZmZXJzIGl0c2VsZi4K KyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2FtZXJhIHNldHRpbmdzIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogdW5pcXVlLWlkCisgKiAgICAgIFZh bHVlczogICAgICAgICA8c3RyaW5nPgorICoKKyAqICAgICAgQWZ0ZXIgZGV2aWNlIGluc3RhbmNl IGluaXRpYWxpemF0aW9uIGVhY2ggY2FtZXJhIGlzIGFzc2lnbmVkIGEKKyAqICAgICAgdW5pcXVl IElELCBzbyBpdCBjYW4gYmUgaWRlbnRpZmllZCBieSB0aGUgYmFja2VuZCBieSB0aGlzIElELgor ICogICAgICBUaGlzIGNhbiBiZSBVVUlEIG9yIHN1Y2guCisgKgorICogY29udHJvbHMKKyAqICAg ICAgVmFsdWVzOiAgICAgICAgIDxsaXN0IG9mIHN0cmluZz4KKyAqCisgKiAgICAgIExpc3Qgb2Yg c3VwcG9ydGVkIGNhbWVyYSBjb250cm9scyBzZXBhcmF0ZWQgYnkgWEVOQ0FNRVJBX0xJU1RfU0VQ QVJBVE9SLgorICogICAgICBDYW1lcmEgY29udHJvbHMgYXJlIGV4cHJlc3NlZCBhcyBhIGxpc3Qg b2Ygc3RyaW5nIHZhbHVlcyB3L28gYW55CisgKiAgICAgIG9yZGVyaW5nIHJlcXVpcmVtZW50Lgor ICoKKyAqIGZvcm1hdHMKKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDxmb3JtYXQsIGNoYXJbNF0+ CisgKgorICogICAgICBGb3JtYXRzIGFyZSBvcmdhbml6ZWQgYXMgYSBzZXQgb2YgZGlyZWN0b3Jp ZXMgb25lIHBlciBlYWNoCisgKiAgICAgIHN1cHBvcnRlZCBwaXhlbCBmb3JtYXQuIFRoZSBuYW1l IG9mIHRoZSBkaXJlY3RvcnkgaXMgYW4gdXBwZXIgY2FzZQorICogICAgICBzdHJpbmcgb2YgdGhl IGNvcnJlc3BvbmRpbmcgRk9VUkNDIHN0cmluZyBsYWJlbC4gVGhlIG5leHQgbGV2ZWwgb2YKKyAq ICAgICAgdGhlIGRpcmVjdG9yeSB1bmRlciA8Zm9ybWF0cz4gcmVwcmVzZW50cyBzdXBwb3J0ZWQg cmVzb2x1dGlvbnMuCisgKgorICogcmVzb2x1dGlvbgorICogICAgICBWYWx1ZXM6ICAgICAgICAg PHdpZHRoLCB1aW50MzJfdD54PGhlaWdodCwgdWludDMyX3Q+CisgKgorICogICAgICBSZXNvbHV0 aW9ucyBhcmUgb3JnYW5pemVkIGFzIGEgc2V0IG9mIGRpcmVjdG9yaWVzIG9uZSBwZXIgZWFjaAor ICogICAgICBzdXBwb3J0ZWQgcmVzb2x1dGlvbiB1bmRlciBjb3JyZXNwb25kaW5nIDxmb3JtYXRz PiBkaXJlY3RvcnkuCisgKiAgICAgIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgaXMgdGhlIHN1 cHBvcnRlZCB3aWR0aCBhbmQgaGVpZ2h0CisgKiAgICAgIG9mIHRoZSBjYW1lcmEgcmVzb2x1dGlv biBpbiBwaXhlbHMuCisgKgorICogZnJhbWUtcmF0ZXMKKyAqICAgICAgVmFsdWVzOiAgICAgICAg IDxudW1lcmF0b3IsIHVpbnQzMl90Pi88ZGVub21pbmF0b3IsIHVpbnQzMl90PgorICoKKyAqICAg ICAgTGlzdCBvZiBYRU5DQU1FUkFfRlJBTUVfUkFURV9TRVBBUkFUT1Igc2VwYXJhdGVkIHN1cHBv cnRlZCBmcmFtZSByYXRlcworICogICAgICBvZiB0aGUgY2FtZXJhIGV4cHJlc3NlZCBhcyBudW1l cmF0b3IgYW5kIGRlbm9taW5hdG9yIG9mIHRoZQorICogICAgICBjb3JyZXNwb25kaW5nIGZyYW1l IHJhdGUuCisgKgorICogVGhlIGZvcm1hdCBvZiB0aGUgPGZvcm1hdHM+IGRpcmVjdG9yeSB0cmVl IHdpdGggcmVzb2x1dGlvbnMgYW5kIGZyYW1lIHJhdGVzCisgKiBtdXN0IGJlIHN0cnVjdHVyZWQg aW4gdGhlIGZvbGxvd2luZyBmb3JtYXQ6CisgKgorICogLi4uL3ZjYW1lcmEvPGRldi1pZD4vPGZv cm1hdFtpXT4vPHJlc29sdXRpb25bal0+LzxmcmFtZS1yYXRlc1trXT4KKyAqCisgKiB3aGVyZQor ICogIGkgLSBpLXRoIHN1cHBvcnRlZCBwaXhlbCBmb3JtYXQKKyAqICBqIC0gai10aCBzdXBwb3J0 ZWQgcmVzb2x1dGlvbiBmb3IgaS10aCBwaXhlbCBmb3JtYXQKKyAqICBrIC0gay10aCBzdXBwb3J0 ZWQgZnJhbWUgcmF0ZSBmb3IgaS10aCBwaXhlbCBmb3JtYXQgYW5kIGotdGgKKyAqICAgICAgcmVz b2x1dGlvbgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLSBDYW1lcmEgUmVxdWVzdCBUcmFuc3Bv cnQgUGFyYW1ldGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBUaGlzIGNvbW11bmlj YXRpb24gcGF0aCBpcyB1c2VkIHRvIGRlbGl2ZXIgcmVxdWVzdHMgZnJvbSBmcm9udGVuZCB0byBi YWNrZW5kCisgKiBhbmQgZ2V0IHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlcyBmcm9tIGJhY2tl bmQgdG8gZnJvbnRlbmQsCisgKiBzZXQgdXAgcGVyIHZpcnR1YWwgY2FtZXJhIGRldmljZS4KKyAq CisgKiByZXEtZXZlbnQtY2hhbm5lbAorICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQzMl90 PgorICoKKyAqICAgICAgVGhlIGlkZW50aWZpZXIgb2YgdGhlIFhlbiBjYW1lcmEncyBjb250cm9s IGV2ZW50IGNoYW5uZWwKKyAqICAgICAgdXNlZCB0byBzaWduYWwgYWN0aXZpdHkgaW4gdGhlIHJp bmcgYnVmZmVyLgorICoKKyAqIHJlcS1yaW5nLXJlZgorICogICAgICBWYWx1ZXM6ICAgICAgICAg PHVpbnQzMl90PgorICoKKyAqICAgICAgVGhlIFhlbiBncmFudCByZWZlcmVuY2UgZ3JhbnRpbmcg cGVybWlzc2lvbiBmb3IgdGhlIGJhY2tlbmQgdG8gbWFwCisgKiAgICAgIGEgc29sZSBwYWdlIG9m IGNhbWVyYSdzIGNvbnRyb2wgcmluZyBidWZmZXIuCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0t LSBDYW1lcmEgRXZlbnQgVHJhbnNwb3J0IFBhcmFtZXRlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICoKKyAqIFRoaXMgY29tbXVuaWNhdGlvbiBwYXRoIGlzIHVzZWQgdG8gZGVsaXZlciBhc3lu Y2hyb25vdXMgZXZlbnRzIGZyb20gYmFja2VuZAorICogdG8gZnJvbnRlbmQsIHNldCB1cCBwZXIg dmlydHVhbCBjYW1lcmEgZGV2aWNlLgorICoKKyAqIGV2dC1ldmVudC1jaGFubmVsCisgKiAgICAg IFZhbHVlczogICAgICAgICA8dWludDMyX3Q+CisgKgorICogICAgICBUaGUgaWRlbnRpZmllciBv ZiB0aGUgWGVuIGNhbWVyYSdzIGV2ZW50IGNoYW5uZWwKKyAqICAgICAgdXNlZCB0byBzaWduYWwg YWN0aXZpdHkgaW4gdGhlIHJpbmcgYnVmZmVyLgorICoKKyAqIGV2dC1yaW5nLXJlZgorICogICAg ICBWYWx1ZXM6ICAgICAgICAgPHVpbnQzMl90PgorICoKKyAqICAgICAgVGhlIFhlbiBncmFudCBy ZWZlcmVuY2UgZ3JhbnRpbmcgcGVybWlzc2lvbiBmb3IgdGhlIGJhY2tlbmQgdG8gbWFwCisgKiAg ICAgIGEgc29sZSBwYWdlIG9mIGNhbWVyYSdzIGV2ZW50IHJpbmcgYnVmZmVyLgorICovCisKKy8q CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBTVEFURSBESUFHUkFNUworICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIFRvb2wgc3Rh Y2sgY3JlYXRlcyBmcm9udCBhbmQgYmFjayBzdGF0ZSBub2RlcyB3aXRoIGluaXRpYWwgc3RhdGUK KyAqIFhlbmJ1c1N0YXRlSW5pdGlhbGlzaW5nLgorICogVG9vbCBzdGFjayBjcmVhdGVzIGFuZCBz ZXRzIHVwIGZyb250ZW5kIGNhbWVyYSBjb25maWd1cmF0aW9uCisgKiBub2RlcyBwZXIgZG9tYWlu LgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTm9ybWFsIGZsb3cgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBGcm9udCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgQmFjaworICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09ICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqIFhlbmJ1c1N0 YXRlSW5pdGlhbGlzaW5nICAgICAgICAgICAgICBYZW5idXNTdGF0ZUluaXRpYWxpc2luZworICog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvIFF1ZXJ5IGJhY2tlbmQgZGV2 aWNlIGlkZW50aWZpY2F0aW9uCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZGF0YS4KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyBP cGVuIGFuZCB2YWxpZGF0ZSBiYWNrZW5kIGRldmljZS4KKyAqICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFYKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBYZW5idXNTdGF0ZUluaXRXYWl0CisgKgorICogbyBRdWVyeSBmcm9udGVuZCBjb25maWd1 cmF0aW9uCisgKiBvIEFsbG9jYXRlIGFuZCBpbml0aWFsaXplCisgKiAgIGV2ZW50IGNoYW5uZWxz IHBlciBjb25maWd1cmVkCisgKiAgIGNhbWVyYS4KKyAqIG8gUHVibGlzaCB0cmFuc3BvcnQgcGFy YW1ldGVycworICogICB0aGF0IHdpbGwgYmUgaW4gZWZmZWN0IGR1cmluZworICogICB0aGlzIGNv bm5lY3Rpb24uCisgKiAgICAgICAgICAgICAgfAorICogICAgICAgICAgICAgIHwKKyAqICAgICAg ICAgICAgICBWCisgKiBYZW5idXNTdGF0ZUluaXRpYWxpc2VkCisgKgorICogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBvIFF1ZXJ5IGZyb250ZW5kIHRyYW5zcG9ydCBwYXJh bWV0ZXJzLgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvIENvbm5l Y3QgdG8gdGhlIGV2ZW50IGNoYW5uZWxzLgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgVgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhl bmJ1c1N0YXRlQ29ubmVjdGVkCisgKgorICogIG8gQ3JlYXRlIGFuZCBpbml0aWFsaXplIE9TCisg KiAgICB2aXJ0dWFsIGNhbWVyYSBhcyBwZXIKKyAqICAgIGNvbmZpZ3VyYXRpb24uCisgKiAgICAg ICAgICAgICAgfAorICogICAgICAgICAgICAgIHwKKyAqICAgICAgICAgICAgICBWCisgKiBYZW5i dXNTdGF0ZUNvbm5lY3RlZAorICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBYZW5idXNTdGF0ZVVua25vd24KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBYZW5idXNTdGF0ZUNsb3NlZAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFhlbmJ1c1N0YXRlQ2xvc2luZworICogbyBSZW1vdmUgdmlydHVhbCBjYW1lcmEg ZGV2aWNlCisgKiBvIFJlbW92ZSBldmVudCBjaGFubmVscworICogICAgICAgICAgICAgIHwKKyAq ICAgICAgICAgICAgICB8CisgKiAgICAgICAgICAgICAgVgorICogWGVuYnVzU3RhdGVDbG9zZWQK KyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUmVjb3ZlcnkgZmxvdyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogSW4gY2FzZSBvZiBmcm9udGVuZCB1 bnJlY292ZXJhYmxlIGVycm9ycyBiYWNrZW5kIGhhbmRsZXMgdGhhdCBhcworICogaWYgZnJvbnRl bmQgZ29lcyBpbnRvIHRoZSBYZW5idXNTdGF0ZUNsb3NlZCBzdGF0ZS4KKyAqCisgKiBJbiBjYXNl IG9mIGJhY2tlbmQgdW5yZWNvdmVyYWJsZSBlcnJvcnMgZnJvbnRlbmQgdHJpZXMgcmVtb3ZpbmcK KyAqIHRoZSB2aXJ0dWFsaXplZCBkZXZpY2UuIElmIHRoaXMgaXMgcG9zc2libGUgYXQgdGhlIG1v bWVudCBvZiBlcnJvciwKKyAqIHRoZW4gZnJvbnRlbmQgZ29lcyBpbnRvIHRoZSBYZW5idXNTdGF0 ZUluaXRpYWxpc2luZyBzdGF0ZSBhbmQgaXMgcmVhZHkgZm9yCisgKiBuZXcgY29ubmVjdGlvbiB3 aXRoIGJhY2tlbmQuIElmIHRoZSB2aXJ0dWFsaXplZCBkZXZpY2UgaXMgc3RpbGwgaW4gdXNlIGFu ZAorICogY2Fubm90IGJlIHJlbW92ZWQsIHRoZW4gZnJvbnRlbmQgZ29lcyBpbnRvIHRoZSBYZW5i dXNTdGF0ZVJlY29uZmlndXJpbmcgc3RhdGUKKyAqIHVudGlsIGVpdGhlciB0aGUgdmlydHVhbGl6 ZWQgZGV2aWNlIGlzIHJlbW92ZWQgb3IgYmFja2VuZCBpbml0aWF0ZXMgYSBuZXcKKyAqIGNvbm5l Y3Rpb24uIE9uIHRoZSB2aXJ0dWFsaXplZCBkZXZpY2UgcmVtb3ZhbCBmcm9udGVuZCBnb2VzIGlu dG8gdGhlCisgKiBYZW5idXNTdGF0ZUluaXRpYWxpc2luZyBzdGF0ZS4KKyAqCisgKiBOb3RlIG9u IFhlbmJ1c1N0YXRlUmVjb25maWd1cmluZyBzdGF0ZSBvZiB0aGUgZnJvbnRlbmQ6IGlmIGJhY2tl bmQgaGFzCisgKiB1bnJlY292ZXJhYmxlIGVycm9ycyB0aGVuIGZyb250ZW5kIGNhbm5vdCBzZW5k IHJlcXVlc3RzIHRvIHRoZSBiYWNrZW5kCisgKiBhbmQgdGh1cyBjYW5ub3QgcHJvdmlkZSBmdW5j dGlvbmFsaXR5IG9mIHRoZSB2aXJ0dWFsaXplZCBkZXZpY2UgYW55bW9yZS4KKyAqIEFmdGVyIGJh Y2tlbmQgaXMgYmFjayB0byBub3JtYWwgdGhlIHZpcnR1YWxpemVkIGRldmljZSBtYXkgc3RpbGwg aG9sZCBzb21lCisgKiBzdGF0ZTogY29uZmlndXJhdGlvbiBpbiB1c2UsIGFsbG9jYXRlZCBidWZm ZXJzLCBjbGllbnQgYXBwbGljYXRpb24gc3RhdGUgZXRjLgorICogSW4gbW9zdCBjYXNlcywgdGhp cyB3aWxsIHJlcXVpcmUgZnJvbnRlbmQgdG8gaW1wbGVtZW50IGNvbXBsZXggcmVjb3ZlcnkKKyAq IHJlY29ubmVjdCBsb2dpYy4gSW5zdGVhZCwgYnkgZ29pbmcgaW50byBYZW5idXNTdGF0ZVJlY29u ZmlndXJpbmcgc3RhdGUsCisgKiBmcm9udGVuZCB3aWxsIG1ha2Ugc3VyZSBubyBuZXcgY2xpZW50 cyBvZiB0aGUgdmlydHVhbGl6ZWQgZGV2aWNlIGFyZQorICogYWNjZXB0ZWQsIGFsbG93IGV4aXN0 aW5nIGNsaWVudChzKSB0byBleGl0IGdyYWNlZnVsbHkgYnkgc2lnbmFsaW5nIGVycm9yCisgKiBz dGF0ZSBldGMuCisgKiBPbmNlIGFsbCB0aGUgY2xpZW50cyBhcmUgZ29uZSBmcm9udGVuZCBjYW4g cmVpbml0aWFsaXplIHRoZSB2aXJ0dWFsaXplZAorICogZGV2aWNlIGFuZCBnZXQgaW50byBYZW5i dXNTdGF0ZUluaXRpYWxpc2luZyBzdGF0ZSBhZ2FpbiBzaWduYWxpbmcgdGhlCisgKiBiYWNrZW5k IHRoYXQgYSBuZXcgY29ubmVjdGlvbiBjYW4gYmUgbWFkZS4KKyAqCisgKiBUaGVyZSBhcmUgbXVs dGlwbGUgY29uZGl0aW9ucyBwb3NzaWJsZSB1bmRlciB3aGljaCBmcm9udGVuZCB3aWxsIGdvIGZy b20KKyAqIFhlbmJ1c1N0YXRlUmVjb25maWd1cmluZyBpbnRvIFhlbmJ1c1N0YXRlSW5pdGlhbGlz aW5nLCBzb21lIG9mIHRoZW0gYXJlIE9TCisgKiBzcGVjaWZpYy4gRm9yIGV4YW1wbGU6CisgKiAx LiBUaGUgdW5kZXJseWluZyBPUyBmcmFtZXdvcmsgbWF5IHByb3ZpZGUgY2FsbGJhY2tzIHRvIHNp Z25hbCB0aGF0IHRoZSBsYXN0CisgKiAgICBjbGllbnQgb2YgdGhlIHZpcnR1YWxpemVkIGRldmlj ZSBoYXMgZ29uZSBhbmQgdGhlIGRldmljZSBjYW4gYmUgcmVtb3ZlZAorICogMi4gRnJvbnRlbmQg Y2FuIHNjaGVkdWxlIGEgZGVmZXJyZWQgd29yayAodGltZXIvdGFza2xldC93b3JrcXVldWUpCisg KiAgICB0byBwZXJpb2RpY2FsbHkgY2hlY2sgaWYgdGhpcyBpcyB0aGUgcmlnaHQgdGltZSB0byBy ZS10cnkgcmVtb3ZhbCBvZgorICogICAgdGhlIHZpcnR1YWxpemVkIGRldmljZS4KKyAqIDMuIEJ5 IGFueSBvdGhlciBtZWFucy4KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUkVRVUVTVCBDT0RFUworICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgorICovCisjZGVmaW5lIFhFTkNBTUVSQV9PUF9TRVRfQ09ORklHICAgICAgICAweDAwCisjZGVm aW5lIFhFTkNBTUVSQV9PUF9HRVRfQlVGX0RFVEFJTFMgICAweDAxCisjZGVmaW5lIFhFTkNBTUVS QV9PUF9CVUZfQ1JFQVRFICAgICAgICAweDAyCisjZGVmaW5lIFhFTkNBTUVSQV9PUF9CVUZfREVT VFJPWSAgICAgICAweDAzCisjZGVmaW5lIFhFTkNBTUVSQV9PUF9TVFJFQU1fU1RBUlQgICAgICAw eDA0CisjZGVmaW5lIFhFTkNBTUVSQV9PUF9TVFJFQU1fU1RPUCAgICAgICAweDA1CisjZGVmaW5l IFhFTkNBTUVSQV9PUF9HRVRfQ1RSTF9ERVRBSUxTICAweDA2CisjZGVmaW5lIFhFTkNBTUVSQV9P UF9TRVRfQ1RSTCAgICAgICAgICAweDA3CisKKyNkZWZpbmUgWEVOQ0FNRVJBX0NUUkxfQlJJR0hU TkVTUyAgICAgIDB4MDAKKyNkZWZpbmUgWEVOQ0FNRVJBX0NUUkxfQ09OVFJBU1QgICAgICAgIDB4 MDEKKyNkZWZpbmUgWEVOQ0FNRVJBX0NUUkxfU0FUVVJBVElPTiAgICAgIDB4MDIKKyNkZWZpbmUg WEVOQ0FNRVJBX0NUUkxfSFVFICAgICAgICAgICAgIDB4MDMKKworLyoKKyAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVZFTlQgQ09ERVMK KyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKKyAqLworI2RlZmluZSBYRU5DQU1FUkFfRVZUX0ZSQU1F X0FWQUlMICAgICAgMHgwMAorCisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAg ICAgICAgICBYRU5TVE9SRSBGSUVMRCBBTkQgUEFUSCBOQU1FIFNUUklOR1MsIEhFTFBFUlMKKyAq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKKyAqLworI2RlZmluZSBYRU5DQU1FUkFfRFJJVkVSX05BTUUg ICAgICAgICAgInZjYW1lcmEiCisKKyNkZWZpbmUgWEVOQ0FNRVJBX0xJU1RfU0VQQVJBVE9SICAg ICAgICIsIgorI2RlZmluZSBYRU5DQU1FUkFfUkVTT0xVVElPTl9TRVBBUkFUT1IgIngiCisjZGVm aW5lIFhFTkNBTUVSQV9GUkFNRV9SQVRFX1NFUEFSQVRPUiAiLyIKKworI2RlZmluZSBYRU5DQU1F UkFfRklFTERfQkVfVkVSU0lPTlMgICAgInZlcnNpb25zIgorI2RlZmluZSBYRU5DQU1FUkFfRklF TERfRkVfVkVSU0lPTiAgICAgInZlcnNpb24iCisjZGVmaW5lIFhFTkNBTUVSQV9GSUVMRF9SRVFf UklOR19SRUYgICAicmVxLXJpbmctcmVmIgorI2RlZmluZSBYRU5DQU1FUkFfRklFTERfUkVRX0NI QU5ORUwgICAgInJlcS1ldmVudC1jaGFubmVsIgorI2RlZmluZSBYRU5DQU1FUkFfRklFTERfRVZU X1JJTkdfUkVGICAgImV2dC1yaW5nLXJlZiIKKyNkZWZpbmUgWEVOQ0FNRVJBX0ZJRUxEX0VWVF9D SEFOTkVMICAgICJldnQtZXZlbnQtY2hhbm5lbCIKKyNkZWZpbmUgWEVOQ0FNRVJBX0ZJRUxEX0NP TlRST0xTICAgICAgICJjb250cm9scyIKKyNkZWZpbmUgWEVOQ0FNRVJBX0ZJRUxEX0ZPUk1BVFMg ICAgICAgICJmb3JtYXRzIgorI2RlZmluZSBYRU5DQU1FUkFfRklFTERfQkVfQUxMT0MgICAgICAg ImJlLWFsbG9jIgorI2RlZmluZSBYRU5DQU1FUkFfRklFTERfVU5JUVVFX0lEICAgICAgInVuaXF1 ZS1pZCIKKworI2RlZmluZSBYRU5DQU1FUkFfQ1RSTF9CUklHSFRORVNTX1NUUiAgImJyaWdodG5l c3MiCisjZGVmaW5lIFhFTkNBTUVSQV9DVFJMX0NPTlRSQVNUX1NUUiAgICAiY29udHJhc3QiCisj ZGVmaW5lIFhFTkNBTUVSQV9DVFJMX1NBVFVSQVRJT05fU1RSICAic2F0dXJhdGlvbiIKKyNkZWZp bmUgWEVOQ0FNRVJBX0NUUkxfSFVFX1NUUiAgICAgICAgICJodWUiCisKKy8qIE1heGltdW0gbnVt YmVyIG9mIGJ1ZmZlciBwbGFuZXMgc3VwcG9ydGVkLiAqLworI2RlZmluZSBYRU5DQU1FUkFfTUFY X1BMQU5FICAgICAgICAgICAgNAorCisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAg ICAgICAgICAgICAgICAgICAgICAgIFNUQVRVUyBSRVRVUk4gQ09ERVMKKyAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKKyAqCisgKiBTdGF0dXMgcmV0dXJuIGNvZGUgaXMgemVybyBvbiBzdWNjZXNzIGFu ZCAtWEVOX0VYWCBvbiBmYWlsdXJlLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgQXNzdW1wdGlvbnMKKyAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKKyAqCisgKiAtIHVzYWdlIG9mIGdyYW50IHJlZmVyZW5jZSAwIGFzIGludmFsaWQgZ3Jh bnQgcmVmZXJlbmNlOgorICogICBncmFudCByZWZlcmVuY2UgMCBpcyB2YWxpZCwgYnV0IG5ldmVy IGV4cG9zZWQgdG8gYSBQViBkcml2ZXIsCisgKiAgIGJlY2F1c2Ugb2YgdGhlIGZhY3QgaXQgaXMg YWxyZWFkeSBpbiB1c2UvcmVzZXJ2ZWQgYnkgdGhlIFBWIGNvbnNvbGUuCisgKiAtIGFsbCByZWZl cmVuY2VzIGluIHRoaXMgZG9jdW1lbnQgdG8gcGFnZSBzaXplcyBtdXN0IGJlIHRyZWF0ZWQKKyAq ICAgYXMgcGFnZXMgb2Ygc2l6ZSBYRU5fUEFHRV9TSVpFIHVubGVzcyBvdGhlcndpc2Ugbm90ZWQu CisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgRGVzY3JpcHRpb24gb2YgdGhl IHByb3RvY29sIGJldHdlZW4gZnJvbnRlbmQgYW5kIGJhY2tlbmQgZHJpdmVyCisgKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCisgKgorICogVGhlIHR3byBoYWx2ZXMgb2YgYSBQYXJhLXZpcnR1YWwgY2Ft ZXJhIGRyaXZlciBjb21tdW5pY2F0ZSB3aXRoCisgKiBlYWNoIG90aGVyIHVzaW5nIHNoYXJlZCBw YWdlcyBhbmQgZXZlbnQgY2hhbm5lbHMuCisgKiBTaGFyZWQgcGFnZSBjb250YWlucyBhIHJpbmcg d2l0aCByZXF1ZXN0L3Jlc3BvbnNlIHBhY2tldHMuCisgKgorICogQWxsIHJlc2VydmVkIGZpZWxk cyBpbiB0aGUgc3RydWN0dXJlcyBiZWxvdyBtdXN0IGJlIDAuCisgKgorICogRm9yIGFsbCByZXF1 ZXN0L3Jlc3BvbnNlL2V2ZW50IHBhY2tldHM6CisgKiAgIC0gZnJhbWUgcmF0ZSBwYXJhbWV0ZXIg aXMgcmVwcmVzZW50ZWQgYXMgYSBwYWlyIG9mIDQgb2N0ZXQgbG9uZworICogICAgIG51bWVyYXRv ciBhbmQgZGVub21pbmF0b3I6CisgKiAgICAgICAtIGZyYW1lX3JhdGVfbnVtZXIgLSB1aW50MzJf dCwgbnVtZXJhdG9yIG9mIHRoZSBmcmFtZSByYXRlCisgKiAgICAgICAtIGZyYW1lX3JhdGVfZGVu b20gLSB1aW50MzJfdCwgZGVub21pbmF0b3Igb2YgdGhlIGZyYW1lIHJhdGUKKyAqICAgICBUaGUg Y29ycmVzcG9uZGluZyBmcmFtZSByYXRlIChIeikgaXMgY2FsY3VsYXRlZCBhczoKKyAqICAgICAg IGZyYW1lX3JhdGUgPSBmcmFtZV9yYXRlX251bWVyIC8gZnJhbWVfcmF0ZV9kZW5vbQorICogICAt IGJ1ZmZlciBpbmRleCBpcyBhIHplcm8gYmFzZWQgaW5kZXggb2YgdGhlIGJ1ZmZlci4gTXVzdCBi ZSBsZXNzIHRoYW4KKyAqICAgICB0aGUgdmFsdWUgb2YgWEVOQ0FNRVJBX09QX1NFVF9DT05GSUcu bnVtX2J1ZnMgcmVzcG9uc2U6CisgKiAgICAgICAtIGluZGV4IC0gdWludDhfdCwgaW5kZXggb2Yg dGhlIGJ1ZmZlci4KKyAqCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t IFJlcXVlc3RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIEFsbCBy ZXF1ZXN0IHBhY2tldHMgaGF2ZSB0aGUgc2FtZSBsZW5ndGggKDY0IG9jdGV0cykuCisgKiBBbGwg cmVxdWVzdCBwYWNrZXRzIGhhdmUgY29tbW9uIGhlYWRlcjoKKyAqICAgICAgICAgMCAgICAgICAg ICAgICAgICAxICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQK KyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHwg ICAgb3BlcmF0aW9uICAgfCAgIHJlc2VydmVkICAgICB8IDQKKyAqICstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICog fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IDgKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogICBpZCAtIHVpbnQxNl90LCBwcml2 YXRlIGd1ZXN0IHZhbHVlLCBlY2hvZWQgaW4gcmVzcG9uc2UuCisgKiAgIG9wZXJhdGlvbiAtIHVp bnQ4X3QsIG9wZXJhdGlvbiBjb2RlLCBYRU5DQU1FUkFfT1BfWFhYLgorICoKKyAqCisgKiBSZXF1 ZXN0IGNvbmZpZ3VyYXRpb24gc2V0L3Jlc2V0IC0gcmVxdWVzdCB0byBzZXQgb3IgcmVzZXQuCisg KiB0aGUgY29uZmlndXJhdGlvbi9tb2RlIG9mIHRoZSBjYW1lcmE6CisgKiAgICAgICAgIDAgICAg ICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgIDMgICAgICAgIG9j dGV0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICBpZCAgICAgICAgICAgICAg ICB8IF9PUF9TRVRfQ09ORklHIHwgICByZXNlcnZlZCAgICAgfCA0CisgKiArLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsK KyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCA4CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGl4ZWwgZm9ybWF0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMgor ICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRo ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTYKKyAqICstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICog fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IDIwCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAg ICAgICAgIGZyYW1lX3JhdGVfbnVtZXIgICAgICAgICAgICAgICAgICAgICAgICAgfCAyNAorICog Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZV9yYXRlX2Rl bm9tICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjgKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAg ICBudW1fYnVmcyAgICB8ICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAg ICAgICAgICB8IDMyCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzNgorICogKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rCisgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IDY0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqCisgKiBQYXNzIGFsbCB6ZXJvcyB0byByZXNldCwg b3RoZXJ3aXNlIGNvbW1hbmQgaXMgdHJlYXRlZCBhcyBjb25maWd1cmF0aW9uIHNldC4KKyAqCisg KiBwaXhlbF9mb3JtYXQgLSB1aW50MzJfdCwgcGl4ZWwgZm9ybWF0IHRvIGJlIHVzZWQsIEZPVVJD QyBjb2RlLgorICogd2lkdGggLSB1aW50MzJfdCwgd2lkdGggaW4gcGl4ZWxzLgorICogaGVpZ2h0 IC0gdWludDMyX3QsIGhlaWdodCBpbiBwaXhlbHMuCisgKiBmcmFtZV9yYXRlX251bWVyIC0gdWlu dDMyX3QsIG51bWVyYXRvciBvZiB0aGUgZnJhbWUgcmF0ZS4KKyAqIGZyYW1lX3JhdGVfZGVub20g LSB1aW50MzJfdCwgZGVub21pbmF0b3Igb2YgdGhlIGZyYW1lIHJhdGUuCisgKiBudW1fYnVmcyAt IHVpbnQ4X3QsIGRlc2lyZWQgbnVtYmVyIG9mIGJ1ZmZlcnMgdG8gYmUgdXNlZC4KKyAqCisgKiBT ZWUgcmVzcG9uc2UgZm9ybWF0IGZvciB0aGlzIHJlcXVlc3QuCisgKgorICogTm90ZXM6CisgKiAg LSBmcm9udGVuZCBtdXN0IGNoZWNrIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlIGluIG9yZGVy IHRvIHNlZQorICogICAgaWYgdGhlIHZhbHVlcyByZXBvcnRlZCBiYWNrIGJ5IHRoZSBiYWNrZW5k IGRvIG1hdGNoIHRoZSBkZXNpcmVkIG9uZXMKKyAqICAgIGFuZCBjYW4gYmUgYWNjZXB0ZWQuCisg KiAgLSBmcm9udGVuZCBtYXkgc2VuZCBtdWx0aXBsZSBYRU5DQU1FUkFfT1BfU0VUX0NPTkZJRyBy ZXF1ZXN0cyBiZWZvcmUKKyAqICAgIHNlbmRpbmcgWEVOQ0FNRVJBX09QX1NUUkVBTV9TVEFSVCBy ZXF1ZXN0IHRvIHVwZGF0ZSBvciB0dW5lIHRoZQorICogICAgY29uZmlndXJhdGlvbi4KKyAqLwor c3RydWN0IHhlbmNhbWVyYV9jb25maWcgeworICAgIHVpbnQzMl90IHBpeGVsX2Zvcm1hdDsKKyAg ICB1aW50MzJfdCB3aWR0aDsKKyAgICB1aW50MzJfdCBoZWlnaHQ7CisgICAgdWludDMyX3QgZnJh bWVfcmF0ZV9ub207CisgICAgdWludDMyX3QgZnJhbWVfcmF0ZV9kZW5vbTsKKyAgICB1aW50OF90 IG51bV9idWZzOworfTsKKworLyoKKyAqIFJlcXVlc3QgYnVmZmVyIGRldGFpbHMgLSByZXF1ZXN0 IGNhbWVyYSBidWZmZXIncyBtZW1vcnkgbGF5b3V0LgorICogZGV0YWlsZWQgZGVzY3JpcHRpb246 CisgKiAgICAgICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAg ICAgICAgIDMgICAgICAgIG9jdGV0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAg ICBpZCAgICAgICAgICAgICAgICB8X0dFVF9CVUZfREVUQUlMU3wgICByZXNlcnZlZCAgICAgfCA0 CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNl cnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA4CisgKiArLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAq IHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvfAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNjQKKyAqICst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKworICoKKyAqIFNlZSByZXNwb25zZSBmb3JtYXQgZm9yIHRoaXMgcmVxdWVzdC4K KyAqCisgKgorICogUmVxdWVzdCBjYW1lcmEgYnVmZmVyIGNyZWF0aW9uOgorICogICAgICAgICAw ICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAgICAg ICBvY3RldAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgaWQgICAgICAgICAg ICAgICAgfCBfT1BfQlVGX0NSRUFURSB8ICAgcmVzZXJ2ZWQgICAgIHwgNAorICogKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgOAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgaW5kZXgg ICAgIHwgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgIHwg MTIKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyZWZf ZGlyZWN0b3J5ICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE2CisgKiArLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsK KyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAyMAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8L1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAq ICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDY0CisgKiArLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqCisg KiBBbiBhdHRlbXB0IHRvIGNyZWF0ZSBtdWx0aXBsZSBidWZmZXJzIHdpdGggdGhlIHNhbWUgaW5k ZXggaXMgYW4gZXJyb3IuCisgKiBpbmRleCBjYW4gYmUgcmUtdXNlZCBhZnRlciBkZXN0cm95aW5n IHRoZSBjb3JyZXNwb25kaW5nIGNhbWVyYSBidWZmZXIuCisgKgorICogaW5kZXggLSB1aW50OF90 LCBpbmRleCBvZiB0aGUgYnVmZmVyIHRvIGJlIGNyZWF0ZWQuCisgKiBncmVmX2RpcmVjdG9yeSAt IGdyYW50X3JlZl90LCBhIHJlZmVyZW5jZSB0byB0aGUgZmlyc3Qgc2hhcmVkIHBhZ2UKKyAqICAg ZGVzY3JpYmluZyBzaGFyZWQgYnVmZmVyIHJlZmVyZW5jZXMuIFRoZSBzaXplIG9mIHRoZSBidWZm ZXIgaXMgZXF1YWwgdG8KKyAqICAgWEVOQ0FNRVJBX09QX0dFVF9CVUZfREVUQUlMUy5zaXplIHJl c3BvbnNlLiBBdCBsZWFzdCBvbmUgcGFnZSBleGlzdHMuIElmCisgKiAgIHNoYXJlZCBidWZmZXIg c2l6ZSBleGNlZWRzIHdoYXQgY2FuIGJlIGFkZHJlc3NlZCBieSB0aGlzIHNpbmdsZSBwYWdlLAor ICogICB0aGVuIHJlZmVyZW5jZSB0byB0aGUgbmV4dCBzaGFyZWQgcGFnZSBtdXN0IGJlIHN1cHBs aWVkIChzZWUKKyAqICAgZ3JlZl9kaXJfbmV4dF9wYWdlIGJlbG93KS4KKyAqCisgKiBJZiBYRU5D QU1FUkFfRklFTERfQkVfQUxMT0MgY29uZmlndXJhdGlvbiBlbnRyeSBpcyBzZXQsIHRoZW4gYmFj a2VuZCB3aWxsCisgKiBhbGxvY2F0ZSB0aGUgYnVmZmVyIHdpdGggdGhlIHBhcmFtZXRlcnMgcHJv dmlkZWQgaW4gdGhpcyByZXF1ZXN0IGFuZCBwYWdlCisgKiBkaXJlY3RvcnkgaXMgaGFuZGxlZCBh cyBmb2xsb3dzOgorICogICBGcm9udGVuZCBvbiByZXF1ZXN0OgorICogICAgIC0gYWxsb2NhdGVz IHBhZ2VzIGZvciB0aGUgZGlyZWN0b3J5IChncmVmX2RpcmVjdG9yeSwKKyAqICAgICAgIGdyZWZf ZGlyX25leHRfcGFnZShzKQorICogICAgIC0gZ3JhbnRzIHBlcm1pc3Npb25zIGZvciB0aGUgcGFn ZXMgb2YgdGhlIGRpcmVjdG9yeSB0byB0aGUgYmFja2VuZAorICogICAgIC0gc2V0cyBncmVmX2Rp cl9uZXh0X3BhZ2UgZmllbGRzCisgKiAgIEJhY2tlbmQgb24gcmVzcG9uc2U6CisgKiAgICAgLSBn cmFudHMgcGVybWlzc2lvbnMgZm9yIHRoZSBwYWdlcyBvZiB0aGUgYnVmZmVyIGFsbG9jYXRlZCB0 bworICogICAgICAgdGhlIGZyb250ZW5kCisgKiAgICAgLSBmaWxscyBpbiBwYWdlIGRpcmVjdG9y eSB3aXRoIGdyYW50IHJlZmVyZW5jZXMKKyAqICAgICAgIChncmVmW10gaW4gc3RydWN0IHhlbmNh bWVyYV9wYWdlX2RpcmVjdG9yeSkKKyAqLworc3RydWN0IHhlbmNhbWVyYV9idWZfY3JlYXRlX3Jl cSB7CisgICAgdWludDhfdCBpbmRleDsKKyAgICB1aW50OF90IHJlc2VydmVkWzNdOworICAgIGdy YW50X3JlZl90IGdyZWZfZGlyZWN0b3J5OworfTsKKworLyoKKyAqIFNoYXJlZCBwYWdlIGZvciBY RU5DQU1FUkFfT1BfQlVGX0NSRUFURSBidWZmZXIgZGVzY3JpcHRvciAoZ3JlZl9kaXJlY3Rvcnkg aW4KKyAqIHRoZSByZXF1ZXN0KSBlbXBsb3lzIGEgbGlzdCBvZiBwYWdlcywgZGVzY3JpYmluZyBh bGwgcGFnZXMgb2YgdGhlIHNoYXJlZAorICogZGF0YSBidWZmZXI6CisgKiAgICAgICAgIDAgICAg ICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgIDMgICAgICAgIG9j dGV0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICBncmVmX2Rp cl9uZXh0X3BhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgfCA0CisgKiArLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsK KyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmVmWzBdICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCA4CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAorICog Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JlZltpXSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaSo0KzgKKyAqICstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICog fC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC98CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGdyZWZbTiAtIDFdICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOKjQrOAorICog Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rCisgKgorICogZ3JlZl9kaXJfbmV4dF9wYWdlIC0gZ3JhbnRfcmVmX3QsIHJl ZmVyZW5jZSB0byB0aGUgbmV4dCBwYWdlIGRlc2NyaWJpbmcKKyAqICAgcGFnZSBkaXJlY3Rvcnku IE11c3QgYmUgMCBpZiB0aGVyZSBhcmUgbm8gbW9yZSBwYWdlcyBpbiB0aGUgbGlzdC4KKyAqIGdy ZWZbaV0gLSBncmFudF9yZWZfdCwgcmVmZXJlbmNlIHRvIGEgc2hhcmVkIHBhZ2Ugb2YgdGhlIGJ1 ZmZlcgorICogICBhbGxvY2F0ZWQgYXQgWEVOQ0FNRVJBX09QX0JVRl9DUkVBVEUuCisgKgorICog TnVtYmVyIG9mIGdyYW50X3JlZl90IGVudHJpZXMgaW4gdGhlIHdob2xlIHBhZ2UgZGlyZWN0b3J5 IGlzIG5vdAorICogcGFzc2VkLCBidXQgaW5zdGVhZCBjYW4gYmUgY2FsY3VsYXRlZCBhczoKKyAq ICAgbnVtX2dyZWZzX3RvdGFsID0gKFhFTkNBTUVSQV9PUF9HRVRfQlVGX0RFVEFJTFMuc2l6ZSAr IFhFTl9QQUdFX1NJWkUgLSAxKSAvCisgKiAgICAgICBYRU5fUEFHRV9TSVpFCisgKi8KK3N0cnVj dCB4ZW5jYW1lcmFfcGFnZV9kaXJlY3RvcnkgeworICAgIGdyYW50X3JlZl90IGdyZWZfZGlyX25l eHRfcGFnZTsKKyAgICBncmFudF9yZWZfdCBncmVmWzFdOyAvKiBWYXJpYWJsZSBsZW5ndGggKi8K K307CisKKy8qCisgKiBSZXF1ZXN0IGJ1ZmZlciBkZXN0cnVjdGlvbiAtIGRlc3Ryb3kgYSBwcmV2 aW91c2x5IGFsbG9jYXRlZCBjYW1lcmEgYnVmZmVyOgorICogICAgICAgICAwICAgICAgICAgICAg ICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAorICog Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgaWQgICAgICAgICAgICAgICAgfCBfT1Bf QlVGX0RFU1RST1l8ICAgcmVzZXJ2ZWQgICAgIHwgNAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgOAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgaW5kZXggICAgIHwgICAgICAg ICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgIHwgMTIKKyAqICstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IDE2CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvfAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNjQKKyAqICstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t KworICoKKyAqIGluZGV4IC0gdWludDhfdCwgaW5kZXggb2YgdGhlIGJ1ZmZlciB0byBiZSBkZXN0 cm95ZWQuCisgKi8KKworc3RydWN0IHhlbmNhbWVyYV9idWZfZGVzdHJveV9yZXEgeworICAgIHVp bnQ4X3QgaW5kZXg7Cit9OworCisvKgorICogUmVxdWVzdCBjYW1lcmEgY2FwdHVyZSBzdHJlYW0g c3RhcnQ6CisgKiAgICAgICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAg ICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAg ICAgICAgICBpZCAgICAgICAgICAgICAgICB8X09QX1NUUkVBTV9TVEFSVHwgICByZXNlcnZlZCAg ICAgfCA0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA4CisgKiArLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSsKKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvfAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNjQK KyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKworICoKKyAqCisgKiBSZXF1ZXN0IGNhbWVyYSBjYXB0dXJlIHN0cmVh bSBzdG9wOgorICogICAgICAgICAwICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIg ICAgICAgICAgICAgICAzICAgICAgICBvY3RldAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAg ICAgICAgICAgaWQgICAgICAgICAgICAgICAgfF9PUF9TVFJFQU1fU1RPUCB8ICAgcmVzZXJ2ZWQg ICAgIHwgNAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOAorICogKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rCisgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDY0 CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSsKKyAqCisgKgorICogUmVxdWVzdCBjYW1lcmEgY29udHJvbCBkZXRh aWxzOgorICogICAgICAgICAwICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAg ICAgICAgICAgICAzICAgICAgICBvY3RldAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAg ICAgICAgaWQgICAgICAgICAgICAgICAgfEdFVF9DVFJMX0RFVEFJTFN8ICAgcmVzZXJ2ZWQgICAg IHwgNAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgaW5kZXggICAgIHwgICAgICAgICAgICAg ICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgIHwgMTIKKyAqICstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t KworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IDE2CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAor ICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZl ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNjQKKyAqICstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICoK KyAqIFNlZSByZXNwb25zZSBmb3JtYXQgZm9yIHRoaXMgcmVxdWVzdC4KKyAqCisgKiBpbmRleCAt IHVpbnQ4X3QsIGluZGV4IG9mIHRoZSBjb250cm9sIHRvIGJlIHF1ZXJpZWQuCisgKi8KK3N0cnVj dCB4ZW5jYW1lcmFfZ2V0X2N0cmxfZGV0YWlsc19yZXEgeworICAgIHVpbnQ4X3QgaW5kZXg7Cit9 OworCisvKgorICoKKyAqIFJlcXVlc3QgY2FtZXJhIGNvbnRyb2wgY2hhbmdlOgorICogICAgICAg ICAwICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAg ICAgICBvY3RldAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgaWQgICAgICAg ICAgICAgICAgfCAgX09QX1NFVF9DVFJMICB8ICAgcmVzZXJ2ZWQgICAgIHwgNAorICogKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rCisgKiB8ICAgICAgaW5kZXggICAgIHwgICAgICAgICAgICAgICAgICAgICByZXNlcnZl ZCAgICAgICAgICAgICAgICAgICAgIHwgMTIKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IDE2CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMAorICogKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rCisgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDY0 CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSsKKyAqCisgKiBTZWUgcmVzcG9uc2UgZm9ybWF0IGZvciB0aGlzIHJl cXVlc3QuCisgKgorICogaW5kZXggLSB1aW50OF90LCBpbmRleCBvZiB0aGUgY29udHJvbC4KKyAq IHZhbHVlIC0gaW50MzJfdCwgbmV3IHZhbHVlIG9mIHRoZSBjb250cm9sLgorICovCitzdHJ1Y3Qg eGVuY2FtZXJhX3NldF9jdHJsX3JlcSB7CisgICAgdWludDhfdCBpbmRleDsKKyAgICB1aW50OF90 IHJlc2VydmVkWzNdOworICAgIGludDMyX3QgdmFsdWU7Cit9OworCisvKgorICotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFJlc3BvbnNlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICoKKyAqIEFsbCByZXNwb25zZSBwYWNrZXRzIGhhdmUgdGhlIHNhbWUgbGVu Z3RoICg2NCBvY3RldHMpLgorICoKKyAqIEFsbCByZXNwb25zZSBwYWNrZXRzIGhhdmUgY29tbW9u IGhlYWRlcjoKKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAy ICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAg ICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHwgICAgb3BlcmF0aW9uICAgfCAgICByZXNlcnZl ZCAgICB8IDQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0YXR1cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDgKKyAqICstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKworICoKKyAqIGlkIC0gdWludDE2X3QsIGNvcGllZCBmcm9tIHRoZSByZXF1ZXN0LgorICog b3BlcmF0aW9uIC0gdWludDhfdCwgWEVOQ0FNRVJBX09QXyogLSBjb3BpZWQgZnJvbSByZXF1ZXN0 LgorICogc3RhdHVzIC0gaW50MzJfdCwgcmVzcG9uc2Ugc3RhdHVzLCB6ZXJvIG9uIHN1Y2Nlc3Mg YW5kIC1YRU5fRVhYIG9uIGZhaWx1cmUuCisgKgorICoKKyAqIFNldCBjb25maWd1cmF0aW9uIHJl c3BvbnNlIC0gcmVzcG9uc2UgZm9yIFhFTkNBTUVSQV9PUF9TRVRfQ09ORklHOgorICogICAgICAg ICAwICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAg ICAgICBvY3RldAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgaWQgICAgICAg ICAgICAgICAgfCBfT1BfU0VUX0NPTkZJRyB8ICAgIHJlc2VydmVkICAgIHwgNAorICogKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgOAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHBpeGVsIGZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgMTIKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB3aWR0aCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE2CisgKiArLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAyMAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAg ICAgICAgICAgICAgICBmcmFtZV9yYXRlX251bWVyICAgICAgICAgICAgICAgICAgICAgICAgIHwg MjQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVf cmF0ZV9kZW5vbSAgICAgICAgICAgICAgICAgICAgICAgICB8IDI4CisgKiArLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsK KyAqIHwgICAgbnVtX2J1ZnMgICAgfCAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAg ICAgICAgICAgICAgICAgfCAzMgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzYK KyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKworICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98CisgKiArLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCA2NAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKgorICogTWVhbmluZyBvZiB0aGUgY29y cmVzcG9uZGluZyB2YWx1ZXMgaW4gdGhpcyByZXNwb25zZSBpcyB0aGUgc2FtZSBhcyBmb3IKKyAq IFhFTkNBTUVSQV9PUF9TRVRfQ09ORklHIHJlcXVlc3QuCisgKgorICoKKyAqIFJlcXVlc3QgYnVm ZmVyIGRldGFpbHMgcmVzcG9uc2UgLSByZXNwb25zZSBmb3IgWEVOQ0FNRVJBX09QX0dFVF9CVUZf REVUQUlMUworICogcmVxdWVzdDoKKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAg ICAgICAgICAgICAyICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKKyAqICstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t KworICogfCAgICAgICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHxfR0VUX0JVRl9ERVRBSUxT fCAgICByZXNlcnZlZCAgICB8IDQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdGF0dXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDgK KyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6 ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEyCisgKiArLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAq IHwgICBudW1fcGxhbmVzICAgfCAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAg ICAgICAgICAgICAgfCAxNgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAg ICAgICAgICBwbGFuZV9vZmZzZXRbMF0gICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAKKyAq ICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhbmVfb2Zmc2V0 WzFdICAgICAgICAgICAgICAgICAgICAgICAgICB8IDI0CisgKiArLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwg ICAgICAgICAgICAgICAgICAgICAgICAgIHBsYW5lX29mZnNldFsyXSAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAyOAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAg ICAgICBwbGFuZV9vZmZzZXRbM10gICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzIKKyAqICst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYW5lX3NpemVbMF0g ICAgICAgICAgICAgICAgICAgICAgICAgICB8IDM2CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAg ICAgICAgICAgICAgICAgICAgICAgICBwbGFuZV9zaXplWzFdICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCA0MAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAg ICAgcGxhbmVfc2l6ZVsyXSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNDQKKyAqICstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYW5lX3NpemVbM10gICAg ICAgICAgICAgICAgICAgICAgICAgICB8IDQ4CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAg ICBwbGFuZV9zdHJpZGVbMF0gICAgICAgICB8ICAgICAgICAgcGxhbmVfc3RyaWRlWzFdICAgICAg ICAgfCA1MgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgcGxhbmVfc3RyaWRlWzJdICAg ICAgICAgfCAgICAgICAgIHBsYW5lX3N0cmlkZVszXSAgICAgICAgIHwgNTYKKyAqICstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IDYwCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCA2NAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKgorICogc2l6ZSAtIHVpbnQzMl90LCBvdmVyYWxsIHNp emUgb2YgdGhlIGJ1ZmZlciBpbmNsdWRpbmcgc2l6ZXMgb2YgdGhlCisgKiAgIGluZGl2aWR1YWwg cGxhbmVzIGFuZCBwYWRkaW5nIGlmIGFwcGxpY2FibGUuCisgKiBudW1fcGxhbmVzIC0gdWludDhf dCwgbnVtYmVyIG9mIHBsYW5lcyBmb3IgdGhpcyBidWZmZXIuCisgKiBwbGFuZV9vZmZzZXQgLSBh cnJheSBvZiB1aW50MzJfdCwgb2Zmc2V0IG9mIHRoZSBjb3JyZXNwb25kaW5nIHBsYW5lCisgKiAg IGluIG9jdGV0cyBmcm9tIHRoZSBidWZmZXIgc3RhcnQuCisgKiBwbGFuZV9zaXplIC0gYXJyYXkg b2YgdWludDMyX3QsIHNpemUgaW4gb2N0ZXRzIG9mIHRoZSBjb3JyZXNwb25kaW5nIHBsYW5lCisg KiAgIGluY2x1ZGluZyBwYWRkaW5nLgorICogcGxhbmVfc3RyaWRlIC0gYXJyYXkgb2YgdWludDMy X3QsIHNpemUgaW4gb2N0ZXRzIG9jY3VwaWVkIGJ5IHRoZQorICogICBjb3JyZXNwb25kaW5nIHNp bmdsZSBpbWFnZSBsaW5lIGluY2x1ZGluZyBwYWRkaW5nIGlmIGFwcGxpY2FibGUuCisgKi8KK3N0 cnVjdCB4ZW5jYW1lcmFfYnVmX2RldGFpbHNfcmVzcCB7CisgICAgdWludDMyX3Qgc2l6ZTsKKyAg ICB1aW50OF90IG51bV9wbGFuZXM7CisgICAgdWludDhfdCByZXNlcnZlZFszXTsKKyAgICB1aW50 MzJfdCBwbGFuZV9vZmZzZXRbWEVOQ0FNRVJBX01BWF9QTEFORV07CisgICAgdWludDMyX3QgcGxh bmVfc2l6ZVtYRU5DQU1FUkFfTUFYX1BMQU5FXTsKKyAgICB1aW50MTZfdCBwbGFuZV9zdHJpZGVb WEVOQ0FNRVJBX01BWF9QTEFORV07Cit9OworCisvKgorICogR2V0IGNvbnRyb2wgZGV0YWlscyBy ZXNwb25zZSAtIHJlc3BvbnNlIGZvciBYRU5DQU1FUkFfT1BfR0VUX0NUUkxfREVUQUlMUzoKKyAq ICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAyICAgICAgICAgICAg ICAgMyAgICAgICAgb2N0ZXQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgIGlk ICAgICAgICAgICAgICAgIHxHRVRfQ1RSTF9ERVRBSUxTfCAgICByZXNlcnZlZCAgICB8IDQKKyAq ICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDgKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAg ICAgaW5kZXggICAgICB8ICAgICAgdHlwZSAgICAgIHwgICAgICAgICAgICAgcmVzZXJ2ZWQgICAg ICAgICAgICB8IDEyCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG1pbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNgorICogKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXggICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RlcCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IDI0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkZWZfdmFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyOAorICogKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgMzYKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC98CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA2NAorICogKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r CisgKgorICogaW5kZXggLSB1aW50OF90LCBpbmRleCBvZiB0aGUgY2FtZXJhIGNvbnRyb2wgaW4g cmVzcG9uc2UuCisgKiB0eXBlIC0gdWludDhfdCwgdHlwZSBvZiB0aGUgY29udHJvbCwgb25lIG9m IHRoZSBYRU5DQU1FUkFfQ1RSTF9YWFguCisgKiBtaW4gLSBpbnQzMl90LCBtaW5pbXVtIHZhbHVl IG9mIHRoZSBjb250cm9sLgorICogbWF4IC0gaW50MzJfdCwgbWF4aW11bSB2YWx1ZSBvZiB0aGUg Y29udHJvbC4KKyAqIHN0ZXAgLSBpbnQzMl90LCBtaW5pbXVtIHNpemUgaW4gd2hpY2ggY29udHJv bCB2YWx1ZSBjYW4gYmUgY2hhbmdlZC4KKyAqIGRlZl92YWwgLSBpbnQzMl90LCBkZWZhdWx0IHZh bHVlIG9mIHRoZSBjb250cm9sLgorICovCitzdHJ1Y3QgeGVuY2FtZXJhX2dldF9jdHJsX2RldGFp bHNfcmVzcCB7CisgICAgdWludDhfdCBpbmRleDsKKyAgICB1aW50OF90IHR5cGU7CisgICAgdWlu dDhfdCByZXNlcnZlZFsyXTsKKyAgICBpbnQzMl90IG1pbjsKKyAgICBpbnQzMl90IG1heDsKKyAg ICBpbnQzMl90IHN0ZXA7CisgICAgaW50MzJfdCBkZWZfdmFsOworfTsKKworLyoKKyAqLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXZlbnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAqCisgKiBFdmVudHMgYXJlIHNlbnQgdmlhIGEgc2hhcmVkIHBhZ2Ug YWxsb2NhdGVkIGJ5IHRoZSBmcm9udCBhbmQgcHJvcGFnYXRlZCBieQorICogICBldnQtZXZlbnQt Y2hhbm5lbC9ldnQtcmluZy1yZWYgWGVuU3RvcmUgZW50cmllcy4KKyAqCisgKiBBbGwgZXZlbnQg cGFja2V0cyBoYXZlIHRoZSBzYW1lIGxlbmd0aCAoNjQgb2N0ZXRzKS4KKyAqIEFsbCBldmVudCBw YWNrZXRzIGhhdmUgY29tbW9uIGhlYWRlcjoKKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAx ICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKKyAqICstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKworICogfCAgICAgICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHwgICAgICB0eXBl ICAgICAgfCAgIHJlc2VydmVkICAgICB8IDQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IDgKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKworICoKKyAqIGlkIC0gdWludDE2X3QsIGV2ZW50IGlkLCBt YXkgYmUgdXNlZCBieSBmcm9udC4KKyAqIHR5cGUgLSB1aW50OF90LCB0eXBlIG9mIHRoZSBldmVu dC4KKyAqCisgKgorICogRnJhbWUgY2FwdHVyZWQgZXZlbnQgLSBldmVudCBmcm9tIGJhY2sgdG8g ZnJvbnQgd2hlbiBhIG5ldyBjYXB0dXJlZAorICogZnJhbWUgaXMgYXZhaWxhYmxlOgorICogICAg ICAgICAwICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAz ICAgICAgICBvY3RldAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgaWQgICAg ICAgICAgICAgICAgfF9FVlRfRlJBTUVfQVZBSUx8ICAgcmVzZXJ2ZWQgICAgIHwgNAorICogKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgOAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAg aW5kZXggICAgIHwgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAg ICAgIHwgMTIKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVzZWRfc3ogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE2CisgKiArLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAyMAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8L1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L3wKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl c2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDY0CisgKiArLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsK KyAqCisgKiBpbmRleCAtIHVpbnQ4X3QsIGluZGV4IG9mIHRoZSBidWZmZXIgdGhhdCBjb250YWlu cyBuZXcgY2FwdHVyZWQgZnJhbWUuCisgKiB1c2VkX3N6IC0gdWludDMyX3QsIG51bWJlciBvZiBv Y3RldHMgdGhpcyBmcmFtZSBoYXMuIFRoaXMgY2FuIGJlIGxlc3MKKyAqIHRoYW4gdGhlIFhFTkNB TUVSQV9PUF9HRVRfQlVGX0RFVEFJTFMuc2l6ZSBmb3IgY29tcHJlc3NlZCBmb3JtYXRzLgorICov CitzdHJ1Y3QgeGVuY2FtZXJhX2ZyYW1lX2F2YWlsX2V2dCB7CisgICAgdWludDhfdCBpbmRleDsK KyAgICB1aW50OF90IHJlc2VydmVkWzNdOworICAgIHVpbnQzMl90IHVzZWRfc3o7Cit9OworCitz dHJ1Y3QgeGVuY2FtZXJhX3JlcSB7CisgICAgdWludDE2X3QgaWQ7CisgICAgdWludDhfdCBvcGVy YXRpb247CisgICAgdWludDhfdCByZXNlcnZlZFs1XTsKKyAgICB1bmlvbiB7CisgICAgICAgIHN0 cnVjdCB4ZW5jYW1lcmFfY29uZmlnIGNvbmZpZzsKKyAgICAgICAgc3RydWN0IHhlbmNhbWVyYV9i dWZfY3JlYXRlX3JlcSBidWZfY3JlYXRlOworCXN0cnVjdCB4ZW5jYW1lcmFfYnVmX2Rlc3Ryb3lf cmVxIGJ1Zl9kZXN0cm95OworCXN0cnVjdCB4ZW5jYW1lcmFfc2V0X2N0cmxfcmVxIHNldF9jdHJs OworICAgICAgICB1aW50OF90IHJlc2VydmVkWzU2XTsKKyAgICB9IHJlcTsKK307CisKK3N0cnVj dCB4ZW5jYW1lcmFfcmVzcCB7CisgICAgdWludDE2X3QgaWQ7CisgICAgdWludDhfdCBvcGVyYXRp b247CisgICAgdWludDhfdCByZXNlcnZlZDsKKyAgICBpbnQzMl90IHN0YXR1czsKKyAgICB1bmlv biB7CisgICAgICAgIHN0cnVjdCB4ZW5jYW1lcmFfY29uZmlnIGNvbmZpZzsKKyAgICAgICAgc3Ry dWN0IHhlbmNhbWVyYV9idWZfZGV0YWlsc19yZXNwIGJ1Zl9kZXRhaWxzOworCXN0cnVjdCB4ZW5j YW1lcmFfZ2V0X2N0cmxfZGV0YWlsc19yZXNwIGN0cmxfZGV0YWlsczsKKyAgICAgICAgdWludDhf dCByZXNlcnZlZDFbNTZdOworICAgIH0gcmVzcDsKK307CisKK3N0cnVjdCB4ZW5jYW1lcmFfZXZ0 IHsKKyAgICB1aW50MTZfdCBpZDsKKyAgICB1aW50OF90IHR5cGU7CisgICAgdWludDhfdCByZXNl cnZlZFs1XTsKKyAgICB1bmlvbiB7CisgICAgICAgIHN0cnVjdCB4ZW5jYW1lcmFfZnJhbWVfYXZh aWxfZXZ0IGZyYW1lX2F2YWlsOworICAgICAgICB1aW50OF90IHJlc2VydmVkWzU2XTsKKyAgICB9 IGV2dDsKK307CisKK0RFRklORV9SSU5HX1RZUEVTKHhlbl9jYW1lcmFpZiwgc3RydWN0IHhlbmNh bWVyYV9yZXEsIHN0cnVjdCB4ZW5jYW1lcmFfcmVzcCk7CisKKy8qCisgKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgIEJhY2sgdG8gZnJvbnQgZXZlbnRzIGRl bGl2ZXJ5CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBJbiBvcmRlciB0byBkZWxpdmVyIGFz eW5jaHJvbm91cyBldmVudHMgZnJvbSBiYWNrIHRvIGZyb250IGEgc2hhcmVkIHBhZ2UgaXMKKyAq IGFsbG9jYXRlZCBieSBmcm9udCBhbmQgaXRzIGdyYW50ZWQgcmVmZXJlbmNlIHByb3BhZ2F0ZWQg dG8gYmFjayB2aWEKKyAqIFhlblN0b3JlIGVudHJpZXMgKGV2dC1yaW5nLXJlZi9ldnQtZXZlbnQt Y2hhbm5lbCkuCisgKiBUaGlzIHBhZ2UgaGFzIGEgY29tbW9uIGhlYWRlciB1c2VkIGJ5IGJvdGgg ZnJvbnQgYW5kIGJhY2sgdG8gc3luY2hyb25pemUKKyAqIGFjY2VzcyBhbmQgY29udHJvbCBldmVu dCdzIHJpbmcgYnVmZmVyLCB3aGlsZSBiYWNrIGJlaW5nIGEgcHJvZHVjZXIgb2YgdGhlCisgKiBl dmVudHMgYW5kIGZyb250IGJlaW5nIGEgY29uc3VtZXIuIFRoZSByZXN0IG9mIHRoZSBwYWdlIGFm dGVyIHRoZSBoZWFkZXIKKyAqIGlzIHVzZWQgZm9yIGV2ZW50IHBhY2tldHMuCisgKgorICogVXBv biByZWNlcHRpb24gb2YgYW4gZXZlbnQocykgZnJvbnQgbWF5IGNvbmZpcm0gaXRzIHJlY2VwdGlv bgorICogZm9yIGVpdGhlciBlYWNoIGV2ZW50LCBncm91cCBvZiBldmVudHMgb3Igbm9uZS4KKyAq LworCitzdHJ1Y3QgeGVuY2FtZXJhX2V2ZW50X3BhZ2UgeworICAgIHVpbnQzMl90IGluX2NvbnM7 CisgICAgdWludDMyX3QgaW5fcHJvZDsKKyAgICB1aW50OF90IHJlc2VydmVkWzU2XTsKK307CisK KyNkZWZpbmUgWEVOQ0FNRVJBX0VWRU5UX1BBR0VfU0laRSA0MDk2CisjZGVmaW5lIFhFTkNBTUVS QV9JTl9SSU5HX09GRlMgKHNpemVvZihzdHJ1Y3QgeGVuY2FtZXJhX2V2ZW50X3BhZ2UpKQorI2Rl ZmluZSBYRU5DQU1FUkFfSU5fUklOR19TSVpFIChYRU5DQU1FUkFfRVZFTlRfUEFHRV9TSVpFIC0g WEVOQ0FNRVJBX0lOX1JJTkdfT0ZGUykKKyNkZWZpbmUgWEVOQ0FNRVJBX0lOX1JJTkdfTEVOIChY RU5DQU1FUkFfSU5fUklOR19TSVpFIC8gc2l6ZW9mKHN0cnVjdCB4ZW5jYW1lcmFfZXZ0KSkKKyNk ZWZpbmUgWEVOQ0FNRVJBX0lOX1JJTkcocGFnZSkgXAorCSgoc3RydWN0IHhlbmNhbWVyYV9ldnQg KikoKGNoYXIgKikocGFnZSkgKyBYRU5DQU1FUkFfSU5fUklOR19PRkZTKSkKKyNkZWZpbmUgWEVO Q0FNRVJBX0lOX1JJTkdfUkVGKHBhZ2UsIGlkeCkgXAorCShYRU5DQU1FUkFfSU5fUklORygocGFn ZSkpWyhpZHgpICUgWEVOQ0FNRVJBX0lOX1JJTkdfTEVOXSkKKworI2VuZGlmIC8qIF9fWEVOX1BV QkxJQ19JT19DQU1FUkFJRl9IX18gKi8KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1v ZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0 YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCi0tIAoy LjE4LjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpY ZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRw czovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs