From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jim Bride Subject: Re: [PATCH v2 02/10] drm/i915: Unduplicate CHV signal level code Date: Wed, 20 Apr 2016 12:13:20 -0700 Message-ID: <20160420191320.GC13777@shiv> References: <1460569673-13694-1-git-send-email-ander.conselvan.de.oliveira@intel.com> <1460569673-13694-3-git-send-email-ander.conselvan.de.oliveira@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id CC6CB6EAEC for ; Wed, 20 Apr 2016 19:13:20 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1460569673-13694-3-git-send-email-ander.conselvan.de.oliveira@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ander Conselvan de Oliveira Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBBcHIgMTMsIDIwMTYgYXQgMDg6NDc6NDVQTSArMDMwMCwgQW5kZXIgQ29uc2VsdmFu IGRlIE9saXZlaXJhIHdyb3RlOgo+IFRoZSBjb2RlIGZvciBwcm9ncmFtbWluZyB2b2x0YWdlIHN3 aW5nIGFuZCBlbXBoYXNpcyB3YXMgZHVwbGljYXRlZAo+IGJldHdlZW4gRFAgYW5kIEhETUkgY29k ZS4gTW92ZSB0aGF0IHRvIGEgbmV3IGZpbGUsIGludGVsX2RwaW9fcGh5LmMuCj4gCj4gdjI6IEtl ZXAgdGhlICJVc2UgODAwbVYtMGRCIiBjb21tZW50IGluIHRoZSBIRE1JIGNvZGUuIChWaWxsZSkK PiBTaWduZWQtb2ZmLWJ5OiBBbmRlciBDb25zZWx2YW4gZGUgT2xpdmVpcmEgPGFuZGVyLmNvbnNl bHZhbi5kZS5vbGl2ZWlyYUBpbnRlbC5jb20+CgpSZXZpZXdlZC1ieTogSmltIEJyaWRlIDxqaW0u YnJpZGVAbGludXguaW50ZWwuY29tPgoKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFr ZWZpbGUgICAgICAgICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2Lmgg ICAgICAgfCAgIDUgKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyAgICAgICB8 IDEwMyArKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RwaW9fcGh5LmMgfCAxMjIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Kwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMgICAgIHwgIDcwICstLS0tLS0t LS0tLS0tLS0tLS0KPiAgNSBmaWxlcyBjaGFuZ2VkLCAxMzYgaW5zZXJ0aW9ucygrKSwgMTY1IGRl bGV0aW9ucygtKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHBpb19waHkuYwo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtl ZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gaW5kZXggN2ZmYjUxYi4uZWI0 NWUyOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gQEAgLTU3LDYgKzU3LDcgQEAgaTkxNS15 ICs9IGludGVsX2F1ZGlvLm8gXAo+ICAJICBpbnRlbF9iaW9zLm8gXAo+ICAJICBpbnRlbF9jb2xv ci5vIFwKPiAgCSAgaW50ZWxfZGlzcGxheS5vIFwKPiArCSAgaW50ZWxfZHBpb19waHkubyBcCj4g IAkgIGludGVsX2RwbGxfbWdyLm8gXAo+ICAJICBpbnRlbF9mYmMubyBcCj4gIAkgIGludGVsX2Zp Zm9fdW5kZXJydW4ubyBcCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggZjVjOTFiMC4u MjMzMTk4ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0zNTU0LDYgKzM1NTQs MTEgQEAgdm9pZCBpbnRlbF9zYmlfd3JpdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LCB1MTYgcmVnLCB1MzIgdmFsdWUsCj4gIHUzMiB2bHZfZmxpc2RzaV9yZWFkKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIHJlZyk7Cj4gIHZvaWQgdmx2X2ZsaXNkc2lf d3JpdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgcmVnLCB1MzIgdmFs KTsKPiAgCj4gKy8qIGludGVsX2RwaW9fcGh5LmMgKi8KPiArdm9pZCBjaHZfc2V0X3BoeV9zaWdu YWxfbGV2ZWwoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gKwkJCSAgICAgIHUzMiBk ZWVtcGhfcmVnX3ZhbHVlLCB1MzIgbWFyZ2luX3JlZ192YWx1ZSwKPiArCQkJICAgICAgYm9vbCB1 bmlxX3RyYW5zX3NjYWxlKTsKPiArCj4gIGludCBpbnRlbF9ncHVfZnJlcShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCB2YWwpOwo+ICBpbnQgaW50ZWxfZnJlcV9vcGNvZGUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgdmFsKTsKPiAgCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcC5jCj4gaW5kZXggMWI4OWUyYi4uYzJmNzc0YyAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHAuYwo+IEBAIC0zMzM5LDIzICszMzM5LDEyIEBAIHN0YXRpYyB1aW50MzJfdCB2 bHZfc2lnbmFsX2xldmVscyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICAJcmV0dXJuIDA7 Cj4gIH0KPiAgCj4gLXN0YXRpYyBib29sIGNodl9uZWVkX3VuaXFfdHJhbnNfc2NhbGUodWludDhf dCB0cmFpbl9zZXQpCj4gLXsKPiAtCXJldHVybiAodHJhaW5fc2V0ICYgRFBfVFJBSU5fUFJFX0VN UEhBU0lTX01BU0spID09IERQX1RSQUlOX1BSRV9FTVBIX0xFVkVMXzAgJiYKPiAtCQkodHJhaW5f c2V0ICYgRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19NQVNLKSA9PSBEUF9UUkFJTl9WT0xUQUdFX1NX SU5HX0xFVkVMXzM7Cj4gLX0KPiAtCj4gIHN0YXRpYyB1aW50MzJfdCBjaHZfc2lnbmFsX2xldmVs cyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gaW50ZWxfZHBfdG9fZGV2KGludGVsX2RwKTsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gLQlzdHJ1Y3QgaW50ZWxfZGlnaXRh bF9wb3J0ICpkcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKPiAtCXN0cnVjdCBpbnRl bF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhkcG9ydC0+YmFzZS5iYXNlLmNydGMp Owo+IC0JdTMyIGRlZW1waF9yZWdfdmFsdWUsIG1hcmdpbl9yZWdfdmFsdWUsIHZhbDsKPiArCXN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyID0gJmRwX3RvX2RpZ19wb3J0KGludGVsX2RwKS0+ YmFzZTsKPiArCXUzMiBkZWVtcGhfcmVnX3ZhbHVlLCBtYXJnaW5fcmVnX3ZhbHVlOwo+ICsJYm9v bCB1bmlxX3RyYW5zX3NjYWxlID0gZmFsc2U7Cj4gIAl1aW50OF90IHRyYWluX3NldCA9IGludGVs X2RwLT50cmFpbl9zZXRbMF07Cj4gLQllbnVtIGRwaW9fY2hhbm5lbCBjaCA9IHZsdl9kcG9ydF90 b19jaGFubmVsKGRwb3J0KTsKPiAtCWVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsK PiAtCWludCBpOwo+ICAKPiAgCXN3aXRjaCAodHJhaW5fc2V0ICYgRFBfVFJBSU5fUFJFX0VNUEhB U0lTX01BU0spIHsKPiAgCWNhc2UgRFBfVFJBSU5fUFJFX0VNUEhfTEVWRUxfMDoKPiBAQCAtMzM3 NSw3ICszMzY0LDcgQEAgc3RhdGljIHVpbnQzMl90IGNodl9zaWduYWxfbGV2ZWxzKHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHApCj4gIAkJY2FzZSBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX0xFVkVM XzM6Cj4gIAkJCWRlZW1waF9yZWdfdmFsdWUgPSAxMjg7Cj4gIAkJCW1hcmdpbl9yZWdfdmFsdWUg PSAxNTQ7Cj4gLQkJCS8qIEZJWE1FIGV4dHJhIHRvIHNldCBmb3IgMTIwMCAqLwo+ICsJCQl1bmlx X3RyYW5zX3NjYWxlID0gdHJ1ZTsKPiAgCQkJYnJlYWs7Cj4gIAkJZGVmYXVsdDoKPiAgCQkJcmV0 dXJuIDA7Cj4gQEAgLTM0MjcsODggKzM0MTYsOCBAQCBzdGF0aWMgdWludDMyX3QgY2h2X3NpZ25h bF9sZXZlbHMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgCQlyZXR1cm4gMDsKPiAgCX0K PiAgCj4gLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gLQo+IC0JLyogQ2xlYXIg Y2FsYyBpbml0ICovCj4gLQl2YWwgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBWTFZf UENTMDFfRFcxMChjaCkpOwo+IC0JdmFsICY9IH4oRFBJT19QQ1NfU1dJTkdfQ0FMQ19UWDBfVFgy IHwgRFBJT19QQ1NfU1dJTkdfQ0FMQ19UWDFfVFgzKTsKPiAtCXZhbCAmPSB+KERQSU9fUENTX1RY MURFRU1QX01BU0sgfCBEUElPX1BDU19UWDJERUVNUF9NQVNLKTsKPiAtCXZhbCB8PSBEUElPX1BD U19UWDFERUVNUF85UDUgfCBEUElPX1BDU19UWDJERUVNUF85UDU7Cj4gLQl2bHZfZHBpb193cml0 ZShkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzAxX0RXMTAoY2gpLCB2YWwpOwo+IC0KPiAtCWlmIChp bnRlbF9jcnRjLT5jb25maWctPmxhbmVfY291bnQgPiAyKSB7Cj4gLQkJdmFsID0gdmx2X2RwaW9f cmVhZChkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzIzX0RXMTAoY2gpKTsKPiAtCQl2YWwgJj0gfihE UElPX1BDU19TV0lOR19DQUxDX1RYMF9UWDIgfCBEUElPX1BDU19TV0lOR19DQUxDX1RYMV9UWDMp Owo+IC0JCXZhbCAmPSB+KERQSU9fUENTX1RYMURFRU1QX01BU0sgfCBEUElPX1BDU19UWDJERUVN UF9NQVNLKTsKPiAtCQl2YWwgfD0gRFBJT19QQ1NfVFgxREVFTVBfOVA1IHwgRFBJT19QQ1NfVFgy REVFTVBfOVA1Owo+IC0JCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNf RFcxMChjaCksIHZhbCk7Cj4gLQl9Cj4gLQo+IC0JdmFsID0gdmx2X2RwaW9fcmVhZChkZXZfcHJp diwgcGlwZSwgVkxWX1BDUzAxX0RXOShjaCkpOwo+IC0JdmFsICY9IH4oRFBJT19QQ1NfVFgxTUFS R0lOX01BU0sgfCBEUElPX1BDU19UWDJNQVJHSU5fTUFTSyk7Cj4gLQl2YWwgfD0gRFBJT19QQ1Nf VFgxTUFSR0lOXzAwMCB8IERQSU9fUENTX1RYMk1BUkdJTl8wMDA7Cj4gLQl2bHZfZHBpb193cml0 ZShkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzAxX0RXOShjaCksIHZhbCk7Cj4gLQo+IC0JaWYgKGlu dGVsX2NydGMtPmNvbmZpZy0+bGFuZV9jb3VudCA+IDIpIHsKPiAtCQl2YWwgPSB2bHZfZHBpb19y ZWFkKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNfRFc5KGNoKSk7Cj4gLQkJdmFsICY9IH4oRFBJ T19QQ1NfVFgxTUFSR0lOX01BU0sgfCBEUElPX1BDU19UWDJNQVJHSU5fTUFTSyk7Cj4gLQkJdmFs IHw9IERQSU9fUENTX1RYMU1BUkdJTl8wMDAgfCBEUElPX1BDU19UWDJNQVJHSU5fMDAwOwo+IC0J CXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNfRFc5KGNoKSwgdmFsKTsK PiAtCX0KPiAtCj4gLQkvKiBQcm9ncmFtIHN3aW5nIGRlZW1waCAqLwo+IC0JZm9yIChpID0gMDsg aSA8IGludGVsX2NydGMtPmNvbmZpZy0+bGFuZV9jb3VudDsgaSsrKSB7Cj4gLQkJdmFsID0gdmx2 X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgQ0hWX1RYX0RXNChjaCwgaSkpOwo+IC0JCXZhbCAm PSB+RFBJT19TV0lOR19ERUVNUEg5UDVfTUFTSzsKPiAtCQl2YWwgfD0gZGVlbXBoX3JlZ192YWx1 ZSA8PCBEUElPX1NXSU5HX0RFRU1QSDlQNV9TSElGVDsKPiAtCQl2bHZfZHBpb193cml0ZShkZXZf cHJpdiwgcGlwZSwgQ0hWX1RYX0RXNChjaCwgaSksIHZhbCk7Cj4gLQl9Cj4gLQo+IC0JLyogUHJv Z3JhbSBzd2luZyBtYXJnaW4gKi8KPiAtCWZvciAoaSA9IDA7IGkgPCBpbnRlbF9jcnRjLT5jb25m aWctPmxhbmVfY291bnQ7IGkrKykgewo+IC0JCXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYs IHBpcGUsIENIVl9UWF9EVzIoY2gsIGkpKTsKPiAtCj4gLQkJdmFsICY9IH5EUElPX1NXSU5HX01B UkdJTjAwMF9NQVNLOwo+IC0JCXZhbCB8PSBtYXJnaW5fcmVnX3ZhbHVlIDw8IERQSU9fU1dJTkdf TUFSR0lOMDAwX1NISUZUOwo+IC0KPiAtCQkvKgo+IC0JCSAqIFN1cHBvc2VkbHkgdGhpcyB2YWx1 ZSBzaG91bGRuJ3QgbWF0dGVyIHdoZW4gdW5pcXVlIHRyYW5zaXRpb24KPiAtCQkgKiBzY2FsZSBp cyBkaXNhYmxlZCwgYnV0IGluIGZhY3QgaXQgZG9lcyBtYXR0ZXIuIExldCdzIGp1c3QKPiAtCQkg KiBhbHdheXMgcHJvZ3JhbSB0aGUgc2FtZSB2YWx1ZSBhbmQgaG9wZSBpdCdzIE9LLgo+IC0JCSAq Lwo+IC0JCXZhbCAmPSB+KDB4ZmYgPDwgRFBJT19VTklRX1RSQU5TX1NDQUxFX1NISUZUKTsKPiAt CQl2YWwgfD0gMHg5YSA8PCBEUElPX1VOSVFfVFJBTlNfU0NBTEVfU0hJRlQ7Cj4gLQo+IC0JCXZs dl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBDSFZfVFhfRFcyKGNoLCBpKSwgdmFsKTsKPiAt CX0KPiAtCj4gLQkvKgo+IC0JICogVGhlIGRvY3VtZW50IHNhaWQgaXQgbmVlZHMgdG8gc2V0IGJp dCAyNyBmb3IgY2gwIGFuZCBiaXQgMjYKPiAtCSAqIGZvciBjaDEuIE1pZ2h0IGJlIGEgdHlwbyBp biB0aGUgZG9jLgo+IC0JICogRm9yIG5vdywgZm9yIHRoaXMgdW5pcXVlIHRyYW5zaXRpb24gc2Nh bGUgc2VsZWN0aW9uLCBzZXQgYml0Cj4gLQkgKiAyNyBmb3IgY2gwIGFuZCBjaDEuCj4gLQkgKi8K PiAtCWZvciAoaSA9IDA7IGkgPCBpbnRlbF9jcnRjLT5jb25maWctPmxhbmVfY291bnQ7IGkrKykg ewo+IC0JCXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIENIVl9UWF9EVzMoY2gs IGkpKTsKPiAtCQlpZiAoY2h2X25lZWRfdW5pcV90cmFuc19zY2FsZSh0cmFpbl9zZXQpKQo+IC0J CQl2YWwgfD0gRFBJT19UWF9VTklRX1RSQU5TX1NDQUxFX0VOOwo+IC0JCWVsc2UKPiAtCQkJdmFs ICY9IH5EUElPX1RYX1VOSVFfVFJBTlNfU0NBTEVfRU47Cj4gLQkJdmx2X2RwaW9fd3JpdGUoZGV2 X3ByaXYsIHBpcGUsIENIVl9UWF9EVzMoY2gsIGkpLCB2YWwpOwo+IC0JfQo+IC0KPiAtCS8qIFN0 YXJ0IHN3aW5nIGNhbGN1bGF0aW9uICovCj4gLQl2YWwgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2 LCBwaXBlLCBWTFZfUENTMDFfRFcxMChjaCkpOwo+IC0JdmFsIHw9IERQSU9fUENTX1NXSU5HX0NB TENfVFgwX1RYMiB8IERQSU9fUENTX1NXSU5HX0NBTENfVFgxX1RYMzsKPiAtCXZsdl9kcGlvX3dy aXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMDFfRFcxMChjaCksIHZhbCk7Cj4gLQo+IC0JaWYg KGludGVsX2NydGMtPmNvbmZpZy0+bGFuZV9jb3VudCA+IDIpIHsKPiAtCQl2YWwgPSB2bHZfZHBp b19yZWFkKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNfRFcxMChjaCkpOwo+IC0JCXZhbCB8PSBE UElPX1BDU19TV0lOR19DQUxDX1RYMF9UWDIgfCBEUElPX1BDU19TV0lOR19DQUxDX1RYMV9UWDM7 Cj4gLQkJdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzEwKGNoKSwg dmFsKTsKPiAtCX0KPiAtCj4gLQltdXRleF91bmxvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiAr CWNodl9zZXRfcGh5X3NpZ25hbF9sZXZlbChlbmNvZGVyLCBkZWVtcGhfcmVnX3ZhbHVlLAo+ICsJ CQkJIG1hcmdpbl9yZWdfdmFsdWUsIHVuaXFfdHJhbnNfc2NhbGUpOwo+ICAKPiAgCXJldHVybiAw Owo+ICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwaW9fcGh5 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGlvX3BoeS5jCj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi5jYmUxNzAzZAo+IC0tLSAvZGV2L251bGwKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGlvX3BoeS5jCj4gQEAgLTAsMCArMSwxMjIg QEAKPiArLyoKPiArICogQ29weXJpZ2h0IMKpIDIwMTQtMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbgo+ ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwg dG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5k IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+ICsgKiB0 byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0 aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1l cmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+ICsgKiBhbmQvb3Igc2VsbCBj b3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUK PiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xs b3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Ug YW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAo+ICsgKiBwYXJh Z3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9y dGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBUSEUgU09GVFdBUkUgSVMg UFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBP Ugo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5U SUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCj4gKyAqIFRIRSBB VVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1B R0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09O VFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gKyAqIEZST00sIE9VVCBPRiBPUiBJ TiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKPiArICog REVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlICJpbnRlbF9k cnYuaCIKPiArCj4gK3ZvaWQgY2h2X3NldF9waHlfc2lnbmFsX2xldmVsKHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyLAo+ICsJCQkgICAgICB1MzIgZGVlbXBoX3JlZ192YWx1ZSwgdTMyIG1h cmdpbl9yZWdfdmFsdWUsCj4gKwkJCSAgICAgIGJvb2wgdW5pcV90cmFuc19zY2FsZSkKPiArewo+ ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5i YXNlLmRldik7Cj4gKwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkcG9ydCA9IGVuY190b19k aWdfcG9ydCgmZW5jb2Rlci0+YmFzZSk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0 YyA9IHRvX2ludGVsX2NydGMoZHBvcnQtPmJhc2UuYmFzZS5jcnRjKTsKPiArCWVudW0gZHBpb19j aGFubmVsIGNoID0gdmx2X2Rwb3J0X3RvX2NoYW5uZWwoZHBvcnQpOwo+ICsJZW51bSBwaXBlIHBp cGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ICsJdTMyIHZhbDsKPiArCWludCBpOwo+ICsKPiArCW11 dGV4X2xvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiArCj4gKwkvKiBDbGVhciBjYWxjIGluaXQg Ki8KPiArCXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MwMV9EVzEw KGNoKSk7Cj4gKwl2YWwgJj0gfihEUElPX1BDU19TV0lOR19DQUxDX1RYMF9UWDIgfCBEUElPX1BD U19TV0lOR19DQUxDX1RYMV9UWDMpOwo+ICsJdmFsICY9IH4oRFBJT19QQ1NfVFgxREVFTVBfTUFT SyB8IERQSU9fUENTX1RYMkRFRU1QX01BU0spOwo+ICsJdmFsIHw9IERQSU9fUENTX1RYMURFRU1Q XzlQNSB8IERQSU9fUENTX1RYMkRFRU1QXzlQNTsKPiArCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2 LCBwaXBlLCBWTFZfUENTMDFfRFcxMChjaCksIHZhbCk7Cj4gKwo+ICsJaWYgKGludGVsX2NydGMt PmNvbmZpZy0+bGFuZV9jb3VudCA+IDIpIHsKPiArCQl2YWwgPSB2bHZfZHBpb19yZWFkKGRldl9w cml2LCBwaXBlLCBWTFZfUENTMjNfRFcxMChjaCkpOwo+ICsJCXZhbCAmPSB+KERQSU9fUENTX1NX SU5HX0NBTENfVFgwX1RYMiB8IERQSU9fUENTX1NXSU5HX0NBTENfVFgxX1RYMyk7Cj4gKwkJdmFs ICY9IH4oRFBJT19QQ1NfVFgxREVFTVBfTUFTSyB8IERQSU9fUENTX1RYMkRFRU1QX01BU0spOwo+ ICsJCXZhbCB8PSBEUElPX1BDU19UWDFERUVNUF85UDUgfCBEUElPX1BDU19UWDJERUVNUF85UDU7 Cj4gKwkJdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzEwKGNoKSwg dmFsKTsKPiArCX0KPiArCj4gKwl2YWwgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBW TFZfUENTMDFfRFc5KGNoKSk7Cj4gKwl2YWwgJj0gfihEUElPX1BDU19UWDFNQVJHSU5fTUFTSyB8 IERQSU9fUENTX1RYMk1BUkdJTl9NQVNLKTsKPiArCXZhbCB8PSBEUElPX1BDU19UWDFNQVJHSU5f MDAwIHwgRFBJT19QQ1NfVFgyTUFSR0lOXzAwMDsKPiArCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2 LCBwaXBlLCBWTFZfUENTMDFfRFc5KGNoKSwgdmFsKTsKPiArCj4gKwlpZiAoaW50ZWxfY3J0Yy0+ Y29uZmlnLT5sYW5lX2NvdW50ID4gMikgewo+ICsJCXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2X3By aXYsIHBpcGUsIFZMVl9QQ1MyM19EVzkoY2gpKTsKPiArCQl2YWwgJj0gfihEUElPX1BDU19UWDFN QVJHSU5fTUFTSyB8IERQSU9fUENTX1RYMk1BUkdJTl9NQVNLKTsKPiArCQl2YWwgfD0gRFBJT19Q Q1NfVFgxTUFSR0lOXzAwMCB8IERQSU9fUENTX1RYMk1BUkdJTl8wMDA7Cj4gKwkJdmx2X2RwaW9f d3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzkoY2gpLCB2YWwpOwo+ICsJfQo+ICsK PiArCS8qIFByb2dyYW0gc3dpbmcgZGVlbXBoICovCj4gKwlmb3IgKGkgPSAwOyBpIDwgaW50ZWxf Y3J0Yy0+Y29uZmlnLT5sYW5lX2NvdW50OyBpKyspIHsKPiArCQl2YWwgPSB2bHZfZHBpb19yZWFk KGRldl9wcml2LCBwaXBlLCBDSFZfVFhfRFc0KGNoLCBpKSk7Cj4gKwkJdmFsICY9IH5EUElPX1NX SU5HX0RFRU1QSDlQNV9NQVNLOwo+ICsJCXZhbCB8PSBkZWVtcGhfcmVnX3ZhbHVlIDw8IERQSU9f U1dJTkdfREVFTVBIOVA1X1NISUZUOwo+ICsJCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBl LCBDSFZfVFhfRFc0KGNoLCBpKSwgdmFsKTsKPiArCX0KPiArCj4gKwkvKiBQcm9ncmFtIHN3aW5n IG1hcmdpbiAqLwo+ICsJZm9yIChpID0gMDsgaSA8IGludGVsX2NydGMtPmNvbmZpZy0+bGFuZV9j b3VudDsgaSsrKSB7Cj4gKwkJdmFsID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgQ0hW X1RYX0RXMihjaCwgaSkpOwo+ICsKPiArCQl2YWwgJj0gfkRQSU9fU1dJTkdfTUFSR0lOMDAwX01B U0s7Cj4gKwkJdmFsIHw9IG1hcmdpbl9yZWdfdmFsdWUgPDwgRFBJT19TV0lOR19NQVJHSU4wMDBf U0hJRlQ7Cj4gKwo+ICsJCS8qCj4gKwkJICogU3VwcG9zZWRseSB0aGlzIHZhbHVlIHNob3VsZG4n dCBtYXR0ZXIgd2hlbiB1bmlxdWUgdHJhbnNpdGlvbgo+ICsJCSAqIHNjYWxlIGlzIGRpc2FibGVk LCBidXQgaW4gZmFjdCBpdCBkb2VzIG1hdHRlci4gTGV0J3MganVzdAo+ICsJCSAqIGFsd2F5cyBw cm9ncmFtIHRoZSBzYW1lIHZhbHVlIGFuZCBob3BlIGl0J3MgT0suCj4gKwkJICovCj4gKwkJdmFs ICY9IH4oMHhmZiA8PCBEUElPX1VOSVFfVFJBTlNfU0NBTEVfU0hJRlQpOwo+ICsJCXZhbCB8PSAw eDlhIDw8IERQSU9fVU5JUV9UUkFOU19TQ0FMRV9TSElGVDsKPiArCj4gKwkJdmx2X2RwaW9fd3Jp dGUoZGV2X3ByaXYsIHBpcGUsIENIVl9UWF9EVzIoY2gsIGkpLCB2YWwpOwo+ICsJfQo+ICsKPiAr CS8qCj4gKwkgKiBUaGUgZG9jdW1lbnQgc2FpZCBpdCBuZWVkcyB0byBzZXQgYml0IDI3IGZvciBj aDAgYW5kIGJpdCAyNgo+ICsJICogZm9yIGNoMS4gTWlnaHQgYmUgYSB0eXBvIGluIHRoZSBkb2Mu Cj4gKwkgKiBGb3Igbm93LCBmb3IgdGhpcyB1bmlxdWUgdHJhbnNpdGlvbiBzY2FsZSBzZWxlY3Rp b24sIHNldCBiaXQKPiArCSAqIDI3IGZvciBjaDAgYW5kIGNoMS4KPiArCSAqLwo+ICsJZm9yIChp ID0gMDsgaSA8IGludGVsX2NydGMtPmNvbmZpZy0+bGFuZV9jb3VudDsgaSsrKSB7Cj4gKwkJdmFs ID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgQ0hWX1RYX0RXMyhjaCwgaSkpOwo+ICsJ CWlmICh1bmlxX3RyYW5zX3NjYWxlKQo+ICsJCQl2YWwgfD0gRFBJT19UWF9VTklRX1RSQU5TX1ND QUxFX0VOOwo+ICsJCWVsc2UKPiArCQkJdmFsICY9IH5EUElPX1RYX1VOSVFfVFJBTlNfU0NBTEVf RU47Cj4gKwkJdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIENIVl9UWF9EVzMoY2gsIGkp LCB2YWwpOwo+ICsJfQo+ICsKPiArCS8qIFN0YXJ0IHN3aW5nIGNhbGN1bGF0aW9uICovCj4gKwl2 YWwgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMDFfRFcxMChjaCkpOwo+ ICsJdmFsIHw9IERQSU9fUENTX1NXSU5HX0NBTENfVFgwX1RYMiB8IERQSU9fUENTX1NXSU5HX0NB TENfVFgxX1RYMzsKPiArCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMDFf RFcxMChjaCksIHZhbCk7Cj4gKwo+ICsJaWYgKGludGVsX2NydGMtPmNvbmZpZy0+bGFuZV9jb3Vu dCA+IDIpIHsKPiArCQl2YWwgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBWTFZfUENT MjNfRFcxMChjaCkpOwo+ICsJCXZhbCB8PSBEUElPX1BDU19TV0lOR19DQUxDX1RYMF9UWDIgfCBE UElPX1BDU19TV0lOR19DQUxDX1RYMV9UWDM7Cj4gKwkJdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYs IHBpcGUsIFZMVl9QQ1MyM19EVzEwKGNoKSwgdmFsKTsKPiArCX0KPiArCj4gKwltdXRleF91bmxv Y2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiArCj4gK30KPiArCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2hkbWkuYwo+IGluZGV4IDgwZDk4NDEuLmVlZDQ2YzIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfaGRtaS5jCj4gQEAgLTE5MTMsNzcgKzE5MTMsMTEgQEAgc3RhdGljIHZvaWQgY2h2X2hkbWlf cHJlX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAgCS8qIERlYXNzZXJ0 IGRhdGEgbGFuZSByZXNldCAqLwo+ICAJY2h2X2RhdGFfbGFuZV9zb2Z0X3Jlc2V0KGVuY29kZXIs IGZhbHNlKTsKPiAgCj4gLQkvKiBDbGVhciBjYWxjIGluaXQgKi8KPiAtCXZhbCA9IHZsdl9kcGlv X3JlYWQoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MwMV9EVzEwKGNoKSk7Cj4gLQl2YWwgJj0gfihE UElPX1BDU19TV0lOR19DQUxDX1RYMF9UWDIgfCBEUElPX1BDU19TV0lOR19DQUxDX1RYMV9UWDMp Owo+IC0JdmFsICY9IH4oRFBJT19QQ1NfVFgxREVFTVBfTUFTSyB8IERQSU9fUENTX1RYMkRFRU1Q X01BU0spOwo+IC0JdmFsIHw9IERQSU9fUENTX1RYMURFRU1QXzlQNSB8IERQSU9fUENTX1RYMkRF RU1QXzlQNTsKPiAtCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMDFfRFcx MChjaCksIHZhbCk7Cj4gLQo+IC0JdmFsID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwg VkxWX1BDUzIzX0RXMTAoY2gpKTsKPiAtCXZhbCAmPSB+KERQSU9fUENTX1NXSU5HX0NBTENfVFgw X1RYMiB8IERQSU9fUENTX1NXSU5HX0NBTENfVFgxX1RYMyk7Cj4gLQl2YWwgJj0gfihEUElPX1BD U19UWDFERUVNUF9NQVNLIHwgRFBJT19QQ1NfVFgyREVFTVBfTUFTSyk7Cj4gLQl2YWwgfD0gRFBJ T19QQ1NfVFgxREVFTVBfOVA1IHwgRFBJT19QQ1NfVFgyREVFTVBfOVA1Owo+IC0Jdmx2X2RwaW9f d3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzEwKGNoKSwgdmFsKTsKPiAtCj4gLQl2 YWwgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMDFfRFc5KGNoKSk7Cj4g LQl2YWwgJj0gfihEUElPX1BDU19UWDFNQVJHSU5fTUFTSyB8IERQSU9fUENTX1RYMk1BUkdJTl9N QVNLKTsKPiAtCXZhbCB8PSBEUElPX1BDU19UWDFNQVJHSU5fMDAwIHwgRFBJT19QQ1NfVFgyTUFS R0lOXzAwMDsKPiAtCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMDFfRFc5 KGNoKSwgdmFsKTsKPiAtCj4gLQl2YWwgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBW TFZfUENTMjNfRFc5KGNoKSk7Cj4gLQl2YWwgJj0gfihEUElPX1BDU19UWDFNQVJHSU5fTUFTSyB8 IERQSU9fUENTX1RYMk1BUkdJTl9NQVNLKTsKPiAtCXZhbCB8PSBEUElPX1BDU19UWDFNQVJHSU5f MDAwIHwgRFBJT19QQ1NfVFgyTUFSR0lOXzAwMDsKPiAtCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2 LCBwaXBlLCBWTFZfUENTMjNfRFc5KGNoKSwgdmFsKTsKPiArCW11dGV4X3VubG9jaygmZGV2X3By aXYtPnNiX2xvY2spOwo+ICAKPiAgCS8qIEZJWE1FOiBQcm9ncmFtIHRoZSBzdXBwb3J0IHh4eCBW LWRCICovCj4gIAkvKiBVc2UgODAwbVYtMGRCICovCj4gLQlmb3IgKGkgPSAwOyBpIDwgNDsgaSsr KSB7Cj4gLQkJdmFsID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgQ0hWX1RYX0RXNChj aCwgaSkpOwo+IC0JCXZhbCAmPSB+RFBJT19TV0lOR19ERUVNUEg5UDVfTUFTSzsKPiAtCQl2YWwg fD0gMTI4IDw8IERQSU9fU1dJTkdfREVFTVBIOVA1X1NISUZUOwo+IC0JCXZsdl9kcGlvX3dyaXRl KGRldl9wcml2LCBwaXBlLCBDSFZfVFhfRFc0KGNoLCBpKSwgdmFsKTsKPiAtCX0KPiAtCj4gLQlm b3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7Cj4gLQkJdmFsID0gdmx2X2RwaW9fcmVhZChkZXZfcHJp diwgcGlwZSwgQ0hWX1RYX0RXMihjaCwgaSkpOwo+IC0KPiAtCQl2YWwgJj0gfkRQSU9fU1dJTkdf TUFSR0lOMDAwX01BU0s7Cj4gLQkJdmFsIHw9IDEwMiA8PCBEUElPX1NXSU5HX01BUkdJTjAwMF9T SElGVDsKPiAtCj4gLQkJLyoKPiAtCQkgKiBTdXBwb3NlZGx5IHRoaXMgdmFsdWUgc2hvdWxkbid0 IG1hdHRlciB3aGVuIHVuaXF1ZSB0cmFuc2l0aW9uCj4gLQkJICogc2NhbGUgaXMgZGlzYWJsZWQs IGJ1dCBpbiBmYWN0IGl0IGRvZXMgbWF0dGVyLiBMZXQncyBqdXN0Cj4gLQkJICogYWx3YXlzIHBy b2dyYW0gdGhlIHNhbWUgdmFsdWUgYW5kIGhvcGUgaXQncyBPSy4KPiAtCQkgKi8KPiAtCQl2YWwg Jj0gfigweGZmIDw8IERQSU9fVU5JUV9UUkFOU19TQ0FMRV9TSElGVCk7Cj4gLQkJdmFsIHw9IDB4 OWEgPDwgRFBJT19VTklRX1RSQU5TX1NDQUxFX1NISUZUOwo+IC0KPiAtCQl2bHZfZHBpb193cml0 ZShkZXZfcHJpdiwgcGlwZSwgQ0hWX1RYX0RXMihjaCwgaSksIHZhbCk7Cj4gLQl9Cj4gLQo+IC0J LyoKPiAtCSAqIFRoZSBkb2N1bWVudCBzYWlkIGl0IG5lZWRzIHRvIHNldCBiaXQgMjcgZm9yIGNo MCBhbmQgYml0IDI2Cj4gLQkgKiBmb3IgY2gxLiBNaWdodCBiZSBhIHR5cG8gaW4gdGhlIGRvYy4K PiAtCSAqIEZvciBub3csIGZvciB0aGlzIHVuaXF1ZSB0cmFuc2l0aW9uIHNjYWxlIHNlbGVjdGlv biwgc2V0IGJpdAo+IC0JICogMjcgZm9yIGNoMCBhbmQgY2gxLgo+IC0JICovCj4gLQlmb3IgKGkg PSAwOyBpIDwgNDsgaSsrKSB7Cj4gLQkJdmFsID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlw ZSwgQ0hWX1RYX0RXMyhjaCwgaSkpOwo+IC0JCXZhbCAmPSB+RFBJT19UWF9VTklRX1RSQU5TX1ND QUxFX0VOOwo+IC0JCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBDSFZfVFhfRFczKGNo LCBpKSwgdmFsKTsKPiAtCX0KPiAtCj4gLQkvKiBTdGFydCBzd2luZyBjYWxjdWxhdGlvbiAqLwo+ IC0JdmFsID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzAxX0RXMTAoY2gp KTsKPiAtCXZhbCB8PSBEUElPX1BDU19TV0lOR19DQUxDX1RYMF9UWDIgfCBEUElPX1BDU19TV0lO R19DQUxDX1RYMV9UWDM7Cj4gLQl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxWX1BD UzAxX0RXMTAoY2gpLCB2YWwpOwo+IC0KPiAtCXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYs IHBpcGUsIFZMVl9QQ1MyM19EVzEwKGNoKSk7Cj4gLQl2YWwgfD0gRFBJT19QQ1NfU1dJTkdfQ0FM Q19UWDBfVFgyIHwgRFBJT19QQ1NfU1dJTkdfQ0FMQ19UWDFfVFgzOwo+IC0Jdmx2X2RwaW9fd3Jp dGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzEwKGNoKSwgdmFsKTsKPiAtCj4gLQltdXRl eF91bmxvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiArCWNodl9zZXRfcGh5X3NpZ25hbF9sZXZl bChlbmNvZGVyLCAxMjgsIDEwMiwgZmFsc2UpOwo+ICAKPiAgCWludGVsX2hkbWktPnNldF9pbmZv ZnJhbWVzKCZlbmNvZGVyLT5iYXNlLAo+ICAJCQkJICAgaW50ZWxfY3J0Yy0+Y29uZmlnLT5oYXNf aGRtaV9zaW5rLAo+IC0tIAo+IDIuNC4xMQo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK