From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Anholt Subject: [PATCH i-g-t 1/5] headers: Import drm-next uapi headers. Date: Fri, 10 Nov 2017 13:26:14 -0800 Message-ID: <20171110212618.904-2-eric@anholt.net> References: <20171110212618.904-1-eric@anholt.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from anholt.net (anholt.net [50.246.234.109]) by gabe.freedesktop.org (Postfix) with ESMTP id 241B26EB54 for ; Fri, 10 Nov 2017 21:27:34 +0000 (UTC) In-Reply-To: <20171110212618.904-1-eric@anholt.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org VGhlc2Ugd2lsbCBiZSB1c2VkIGZvciB0ZXN0cyB0aGF0IHdhbnQgdG8gdXNlIGEgbG9jYWwgY29w eSBvZiB0aGUKaGVhZGVycyBpbnN0ZWFkIG9mIGRlcGVuZGluZyBvbiBsaWJkcm0gcmVsZWFzZXMu ICBUYWtlbiBmcm9tIGRybS1uZXh0CmQ2NWQzMTM4OGEyMyAoIk1lcmdlIHRhZyAnZHJtLW1pc2Mt bmV4dC1maXhlcy0yMDE3LTExLTA3JyBvZgpnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy9k cm0vZHJtLW1pc2MgaW50byBkcm0tbmV4dCIpCgpTZWUgUkVBRE1FIGZvciBydWxlcyBvbiB1cGRh dGluZyB0aGVzZSBoZWFkZXJzLgoKU2lnbmVkLW9mZi1ieTogRXJpYyBBbmhvbHQgPGVyaWNAYW5o b2x0Lm5ldD4KLS0tCiBSRUFETUUgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA4ICsKIGlu Y2x1ZGUvZHJtLXVhcGkvYW1kZ3B1X2RybS5oICB8ICA5MzAgKysrKysrKysrKysrKysrKysrKysr KysrCiBpbmNsdWRlL2RybS11YXBpL2FybWFkYV9kcm0uaCAgfCAgIDU1ICsrCiBpbmNsdWRlL2Ry bS11YXBpL2RybS5oICAgICAgICAgfCAgOTg4ICsrKysrKysrKysrKysrKysrKysrKysrKysKIGlu Y2x1ZGUvZHJtLXVhcGkvZHJtX2ZvdXJjYy5oICB8ICA0MTAgKysrKysrKysrKysKIGluY2x1ZGUv ZHJtLXVhcGkvZHJtX21vZGUuaCAgICB8ICA4NTUgKysrKysrKysrKysrKysrKysrKysrKwogaW5j bHVkZS9kcm0tdWFwaS9kcm1fc2FyZWEuaCAgIHwgICA5MiArKysKIGluY2x1ZGUvZHJtLXVhcGkv ZXRuYXZpdl9kcm0uaCB8ICAyODIgKysrKysrKysKIGluY2x1ZGUvZHJtLXVhcGkvZXh5bm9zX2Ry bS5oICB8ICAzNzMgKysrKysrKysrKwogaW5jbHVkZS9kcm0tdWFwaS9pODEwX2RybS5oICAgIHwg IDI5MSArKysrKysrKwogaW5jbHVkZS9kcm0tdWFwaS9pOTE1X2RybS5oICAgIHwgMTU0MiArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBpbmNsdWRlL2RybS11YXBpL21n YV9kcm0uaCAgICAgfCAgNDI3ICsrKysrKysrKysrCiBpbmNsdWRlL2RybS11YXBpL21zbV9kcm0u aCAgICAgfCAgMzA2ICsrKysrKysrCiBpbmNsdWRlL2RybS11YXBpL25vdXZlYXVfZHJtLmggfCAg MTUyICsrKysKIGluY2x1ZGUvZHJtLXVhcGkvb21hcF9kcm0uaCAgICB8ICAxMjUgKysrKwogaW5j bHVkZS9kcm0tdWFwaS9xeGxfZHJtLmggICAgIHwgIDE1OCArKysrCiBpbmNsdWRlL2RybS11YXBp L3IxMjhfZHJtLmggICAgfCAgMzM2ICsrKysrKysrKwogaW5jbHVkZS9kcm0tdWFwaS9yYWRlb25f ZHJtLmggIHwgMTA3OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBpbmNsdWRlL2RybS11 YXBpL3NhdmFnZV9kcm0uaCAgfCAgMjIwICsrKysrKwogaW5jbHVkZS9kcm0tdWFwaS9zaXNfZHJt LmggICAgIHwgICA3NyArKwogaW5jbHVkZS9kcm0tdWFwaS90ZWdyYV9kcm0uaCAgIHwgIDIwOSAr KysrKysKIGluY2x1ZGUvZHJtLXVhcGkvdmM0X2RybS5oICAgICB8ICAzNTkgKysrKysrKysrKwog aW5jbHVkZS9kcm0tdWFwaS92Z2VtX2RybS5oICAgIHwgICA2MiArKwogaW5jbHVkZS9kcm0tdWFw aS92aWFfZHJtLmggICAgIHwgIDI4MiArKysrKysrKwogaW5jbHVkZS9kcm0tdWFwaS92aXJ0Z3B1 X2RybS5oIHwgIDE3NCArKysrKwogaW5jbHVkZS9kcm0tdWFwaS92bXdnZnhfZHJtLmggIHwgMTEy OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMjYgZmlsZXMgY2hhbmdlZCwgMTA5MTkg aW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvZHJtLXVhcGkvYW1kZ3B1 X2RybS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9kcm0tdWFwaS9hcm1hZGFfZHJtLmgK IGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2RybS11YXBpL2RybS5oCiBjcmVhdGUgbW9kZSAx MDA2NDQgaW5jbHVkZS9kcm0tdWFwaS9kcm1fZm91cmNjLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBp bmNsdWRlL2RybS11YXBpL2RybV9tb2RlLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2Ry bS11YXBpL2RybV9zYXJlYS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9kcm0tdWFwaS9l dG5hdml2X2RybS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9kcm0tdWFwaS9leHlub3Nf ZHJtLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2RybS11YXBpL2k4MTBfZHJtLmgKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2RybS11YXBpL2k5MTVfZHJtLmgKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBpbmNsdWRlL2RybS11YXBpL21nYV9kcm0uaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGlu Y2x1ZGUvZHJtLXVhcGkvbXNtX2RybS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9kcm0t dWFwaS9ub3V2ZWF1X2RybS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9kcm0tdWFwaS9v bWFwX2RybS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9kcm0tdWFwaS9xeGxfZHJtLmgK IGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2RybS11YXBpL3IxMjhfZHJtLmgKIGNyZWF0ZSBt b2RlIDEwMDY0NCBpbmNsdWRlL2RybS11YXBpL3JhZGVvbl9kcm0uaAogY3JlYXRlIG1vZGUgMTAw NjQ0IGluY2x1ZGUvZHJtLXVhcGkvc2F2YWdlX2RybS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5j bHVkZS9kcm0tdWFwaS9zaXNfZHJtLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2RybS11 YXBpL3RlZ3JhX2RybS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9kcm0tdWFwaS92YzRf ZHJtLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2RybS11YXBpL3ZnZW1fZHJtLmgKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2RybS11YXBpL3ZpYV9kcm0uaAogY3JlYXRlIG1vZGUg MTAwNjQ0IGluY2x1ZGUvZHJtLXVhcGkvdmlydGdwdV9kcm0uaAogY3JlYXRlIG1vZGUgMTAwNjQ0 IGluY2x1ZGUvZHJtLXVhcGkvdm13Z2Z4X2RybS5oCgpkaWZmIC0tZ2l0IGEvUkVBRE1FIGIvUkVB RE1FCmluZGV4IDJjMmNkMzYzN2E0My4uZTBmODI5ZGVmYjUxIDEwMDY0NAotLS0gYS9SRUFETUUK KysrIGIvUkVBRE1FCkBAIC0xMjYsNiArMTI2LDE0IEBAIGRvY3MvCiAJaW50ZWwtZ3B1LXRvb2xz LXNlY3Rpb25zLnR4dC4gRW50aXJlbHkgbmV3IHNlY3Rpb25zIHdpbGwgYWxzbyBuZWVkIHRvIGJl CiAJYWRkZWQgdG8gaW50ZWwtZ3B1LXRvb2xzLWRvY3MueG1sIGluIHRoZSBhcHByb3ByaWF0ZSBw bGFjZS4KIAoraW5jbHVkZS9kcm0tdWFwaQorCUltcG9ydGVkIERSTSB1YXBpIGhlYWRlcnMgZnJv bSBhaXJsaWVkJ3MgZHJtLW5leHQgYnJhbmNoLgorCVRoZXNlIHNob3VsZCBiZSB1cGRhdGVkIGFs bCB0b2dldGhlciBieSBleGVjdXRpbmcgIm1ha2UKKwloZWFkZXJzX2luc3RhbGwiIGZyb20gdGhh dCBicmFuY2ggb2YgdGhlIGtlcm5lbCBhbmQgdGhlbgorCWNvcHlpbmcgdGhlIHJlc3VsdGluZyAu L3Vzci9pbmNsdWRlL2RybS8qLmggaW4gYW5kIGNvbW1pdHRpbmcKKwl3aXRoIGEgbm90ZSBvZiB3 aGljaCBjb21taXQgb24gYWlybGllZCdzIGJyYW5jaCB3YXMgdXNlZCB0bworCWdlbmVyYXRlIHRo ZW0uCisKIAogUmVxdWlyZW1lbnRzCiAtLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUv ZHJtLXVhcGkvYW1kZ3B1X2RybS5oIGIvaW5jbHVkZS9kcm0tdWFwaS9hbWRncHVfZHJtLmgKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45MTkyNDhmYjQwMjgKLS0tIC9k ZXYvbnVsbAorKysgYi9pbmNsdWRlL2RybS11YXBpL2FtZGdwdV9kcm0uaApAQCAtMCwwICsxLDkz MCBAQAorLyogYW1kZ3B1X2RybS5oIC0tIFB1YmxpYyBoZWFkZXIgZm9yIHRoZSBhbWRncHUgZHJp dmVyIC0qLSBsaW51eC1jIC0qLQorICoKKyAqIENvcHlyaWdodCAyMDAwIFByZWNpc2lvbiBJbnNp Z2h0LCBJbmMuLCBDZWRhciBQYXJrLCBUZXhhcy4KKyAqIENvcHlyaWdodCAyMDAwIFZBIExpbnV4 IFN5c3RlbXMsIEluYy4sIEZyZW1vbnQsIENhbGlmb3JuaWEuCisgKiBDb3B5cmlnaHQgMjAwMiBU dW5nc3RlbiBHcmFwaGljcywgSW5jLiwgQ2VkYXIgUGFyaywgVGV4YXMuCisgKiBDb3B5cmlnaHQg MjAxNCBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuCisgKgorICogUGVybWlzc2lvbiBpcyBo ZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEK KyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZp bGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0 IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRz IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGlj ZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJt aXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNv LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUg Y29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNs dWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29m dHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQg V0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBC VVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICog RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElO IE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQ09QWVJJR0hUIEhPTERFUihTKSBPUiBBVVRIT1IoUykg QkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKKyAqIE9USEVSIExJQUJJTElUWSwg V0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAorICog QVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBP UiBUSEUgVVNFIE9SCisgKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICog QXV0aG9yczoKKyAqICAgIEtldmluIEUuIE1hcnRpbiA8bWFydGluQHZhbGludXguY29tPgorICog ICAgR2FyZXRoIEh1Z2hlcyA8Z2FyZXRoQHZhbGludXguY29tPgorICogICAgS2VpdGggV2hpdHdl bGwgPGtlaXRoQHR1bmdzdGVuZ3JhcGhpY3MuY29tPgorICovCisKKyNpZm5kZWYgX19BTURHUFVf RFJNX0hfXworI2RlZmluZSBfX0FNREdQVV9EUk1fSF9fCisKKyNpbmNsdWRlICJkcm0uaCIKKwor I2lmIGRlZmluZWQoX19jcGx1c3BsdXMpCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisjZGVmaW5l IERSTV9BTURHUFVfR0VNX0NSRUFURQkJMHgwMAorI2RlZmluZSBEUk1fQU1ER1BVX0dFTV9NTUFQ CQkweDAxCisjZGVmaW5lIERSTV9BTURHUFVfQ1RYCQkJMHgwMgorI2RlZmluZSBEUk1fQU1ER1BV X0JPX0xJU1QJCTB4MDMKKyNkZWZpbmUgRFJNX0FNREdQVV9DUwkJCTB4MDQKKyNkZWZpbmUgRFJN X0FNREdQVV9JTkZPCQkJMHgwNQorI2RlZmluZSBEUk1fQU1ER1BVX0dFTV9NRVRBREFUQQkJMHgw NgorI2RlZmluZSBEUk1fQU1ER1BVX0dFTV9XQUlUX0lETEUJMHgwNworI2RlZmluZSBEUk1fQU1E R1BVX0dFTV9WQQkJMHgwOAorI2RlZmluZSBEUk1fQU1ER1BVX1dBSVRfQ1MJCTB4MDkKKyNkZWZp bmUgRFJNX0FNREdQVV9HRU1fT1AJCTB4MTAKKyNkZWZpbmUgRFJNX0FNREdQVV9HRU1fVVNFUlBU UgkJMHgxMQorI2RlZmluZSBEUk1fQU1ER1BVX1dBSVRfRkVOQ0VTCQkweDEyCisjZGVmaW5lIERS TV9BTURHUFVfVk0JCQkweDEzCisjZGVmaW5lIERSTV9BTURHUFVfRkVOQ0VfVE9fSEFORExFCTB4 MTQKKyNkZWZpbmUgRFJNX0FNREdQVV9TQ0hFRAkJMHgxNQorCisjZGVmaW5lIERSTV9JT0NUTF9B TURHUFVfR0VNX0NSRUFURQlEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0FNREdQVV9H RU1fQ1JFQVRFLCB1bmlvbiBkcm1fYW1kZ3B1X2dlbV9jcmVhdGUpCisjZGVmaW5lIERSTV9JT0NU TF9BTURHUFVfR0VNX01NQVAJRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9BTURHUFVf R0VNX01NQVAsIHVuaW9uIGRybV9hbWRncHVfZ2VtX21tYXApCisjZGVmaW5lIERSTV9JT0NUTF9B TURHUFVfQ1RYCQlEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0FNREdQVV9DVFgsIHVu aW9uIGRybV9hbWRncHVfY3R4KQorI2RlZmluZSBEUk1fSU9DVExfQU1ER1BVX0JPX0xJU1QJRFJN X0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9BTURHUFVfQk9fTElTVCwgdW5pb24gZHJtX2Ft ZGdwdV9ib19saXN0KQorI2RlZmluZSBEUk1fSU9DVExfQU1ER1BVX0NTCQlEUk1fSU9XUihEUk1f Q09NTUFORF9CQVNFICsgRFJNX0FNREdQVV9DUywgdW5pb24gZHJtX2FtZGdwdV9jcykKKyNkZWZp bmUgRFJNX0lPQ1RMX0FNREdQVV9JTkZPCQlEUk1fSU9XKERSTV9DT01NQU5EX0JBU0UgKyBEUk1f QU1ER1BVX0lORk8sIHN0cnVjdCBkcm1fYW1kZ3B1X2luZm8pCisjZGVmaW5lIERSTV9JT0NUTF9B TURHUFVfR0VNX01FVEFEQVRBCURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fQU1ER1BV X0dFTV9NRVRBREFUQSwgc3RydWN0IGRybV9hbWRncHVfZ2VtX21ldGFkYXRhKQorI2RlZmluZSBE Uk1fSU9DVExfQU1ER1BVX0dFTV9XQUlUX0lETEUJRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSAr IERSTV9BTURHUFVfR0VNX1dBSVRfSURMRSwgdW5pb24gZHJtX2FtZGdwdV9nZW1fd2FpdF9pZGxl KQorI2RlZmluZSBEUk1fSU9DVExfQU1ER1BVX0dFTV9WQQkJRFJNX0lPVyhEUk1fQ09NTUFORF9C QVNFICsgRFJNX0FNREdQVV9HRU1fVkEsIHN0cnVjdCBkcm1fYW1kZ3B1X2dlbV92YSkKKyNkZWZp bmUgRFJNX0lPQ1RMX0FNREdQVV9XQUlUX0NTCURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBE Uk1fQU1ER1BVX1dBSVRfQ1MsIHVuaW9uIGRybV9hbWRncHVfd2FpdF9jcykKKyNkZWZpbmUgRFJN X0lPQ1RMX0FNREdQVV9HRU1fT1AJCURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fQU1E R1BVX0dFTV9PUCwgc3RydWN0IGRybV9hbWRncHVfZ2VtX29wKQorI2RlZmluZSBEUk1fSU9DVExf QU1ER1BVX0dFTV9VU0VSUFRSCURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fQU1ER1BV X0dFTV9VU0VSUFRSLCBzdHJ1Y3QgZHJtX2FtZGdwdV9nZW1fdXNlcnB0cikKKyNkZWZpbmUgRFJN X0lPQ1RMX0FNREdQVV9XQUlUX0ZFTkNFUwlEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJN X0FNREdQVV9XQUlUX0ZFTkNFUywgdW5pb24gZHJtX2FtZGdwdV93YWl0X2ZlbmNlcykKKyNkZWZp bmUgRFJNX0lPQ1RMX0FNREdQVV9WTQkJRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9B TURHUFVfVk0sIHVuaW9uIGRybV9hbWRncHVfdm0pCisjZGVmaW5lIERSTV9JT0NUTF9BTURHUFVf RkVOQ0VfVE9fSEFORExFIERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fQU1ER1BVX0ZF TkNFX1RPX0hBTkRMRSwgdW5pb24gZHJtX2FtZGdwdV9mZW5jZV90b19oYW5kbGUpCisjZGVmaW5l IERSTV9JT0NUTF9BTURHUFVfU0NIRUQJCURSTV9JT1coRFJNX0NPTU1BTkRfQkFTRSArIERSTV9B TURHUFVfU0NIRUQsIHVuaW9uIGRybV9hbWRncHVfc2NoZWQpCisKKyNkZWZpbmUgQU1ER1BVX0dF TV9ET01BSU5fQ1BVCQkweDEKKyNkZWZpbmUgQU1ER1BVX0dFTV9ET01BSU5fR1RUCQkweDIKKyNk ZWZpbmUgQU1ER1BVX0dFTV9ET01BSU5fVlJBTQkJMHg0CisjZGVmaW5lIEFNREdQVV9HRU1fRE9N QUlOX0dEUwkJMHg4CisjZGVmaW5lIEFNREdQVV9HRU1fRE9NQUlOX0dXUwkJMHgxMAorI2RlZmlu ZSBBTURHUFVfR0VNX0RPTUFJTl9PQQkJMHgyMAorCisvKiBGbGFnIHRoYXQgQ1BVIGFjY2VzcyB3 aWxsIGJlIHJlcXVpcmVkIGZvciB0aGUgY2FzZSBvZiBWUkFNIGRvbWFpbiAqLworI2RlZmluZSBB TURHUFVfR0VNX0NSRUFURV9DUFVfQUNDRVNTX1JFUVVJUkVECSgxIDw8IDApCisvKiBGbGFnIHRo YXQgQ1BVIGFjY2VzcyB3aWxsIG5vdCB3b3JrLCB0aGlzIFZSQU0gZG9tYWluIGlzIGludmlzaWJs ZSAqLworI2RlZmluZSBBTURHUFVfR0VNX0NSRUFURV9OT19DUFVfQUNDRVNTCQkoMSA8PCAxKQor LyogRmxhZyB0aGF0IFVTV0MgYXR0cmlidXRlcyBzaG91bGQgYmUgdXNlZCBmb3IgR1RUICovCisj ZGVmaW5lIEFNREdQVV9HRU1fQ1JFQVRFX0NQVV9HVFRfVVNXQwkJKDEgPDwgMikKKy8qIEZsYWcg dGhhdCB0aGUgbWVtb3J5IHNob3VsZCBiZSBpbiBWUkFNIGFuZCBjbGVhcmVkICovCisjZGVmaW5l IEFNREdQVV9HRU1fQ1JFQVRFX1ZSQU1fQ0xFQVJFRAkJKDEgPDwgMykKKy8qIEZsYWcgdGhhdCBj cmVhdGUgc2hhZG93IGJvKEdUVCkgd2hpbGUgYWxsb2NhdGluZyB2cmFtIGJvICovCisjZGVmaW5l IEFNREdQVV9HRU1fQ1JFQVRFX1NIQURPVwkJKDEgPDwgNCkKKy8qIEZsYWcgdGhhdCBhbGxvY2F0 aW5nIHRoZSBCTyBzaG91bGQgdXNlIGxpbmVhciBWUkFNICovCisjZGVmaW5lIEFNREdQVV9HRU1f Q1JFQVRFX1ZSQU1fQ09OVElHVU9VUwkoMSA8PCA1KQorLyogRmxhZyB0aGF0IEJPIGlzIGFsd2F5 cyB2YWxpZCBpbiB0aGlzIFZNICovCisjZGVmaW5lIEFNREdQVV9HRU1fQ1JFQVRFX1ZNX0FMV0FZ U19WQUxJRAkoMSA8PCA2KQorLyogRmxhZyB0aGF0IEJPIHNoYXJpbmcgd2lsbCBiZSBleHBsaWNp dGx5IHN5bmNocm9uaXplZCAqLworI2RlZmluZSBBTURHUFVfR0VNX0NSRUFURV9FWFBMSUNJVF9T WU5DCQkoMSA8PCA3KQorCitzdHJ1Y3QgZHJtX2FtZGdwdV9nZW1fY3JlYXRlX2luICB7CisJLyoq IHRoZSByZXF1ZXN0ZWQgbWVtb3J5IHNpemUgKi8KKwlfX3U2NCBib19zaXplOworCS8qKiBwaHlz aWNhbCBzdGFydF9hZGRyIGFsaWdubWVudCBpbiBieXRlcyBmb3Igc29tZSBIVyByZXF1aXJlbWVu dHMgKi8KKwlfX3U2NCBhbGlnbm1lbnQ7CisJLyoqIHRoZSByZXF1ZXN0ZWQgbWVtb3J5IGRvbWFp bnMgKi8KKwlfX3U2NCBkb21haW5zOworCS8qKiBhbGxvY2F0aW9uIGZsYWdzICovCisJX191NjQg ZG9tYWluX2ZsYWdzOworfTsKKworc3RydWN0IGRybV9hbWRncHVfZ2VtX2NyZWF0ZV9vdXQgIHsK KwkvKiogcmV0dXJuZWQgR0VNIG9iamVjdCBoYW5kbGUgKi8KKwlfX3UzMiBoYW5kbGU7CisJX191 MzIgX3BhZDsKK307CisKK3VuaW9uIGRybV9hbWRncHVfZ2VtX2NyZWF0ZSB7CisJc3RydWN0IGRy bV9hbWRncHVfZ2VtX2NyZWF0ZV9pbgkJaW47CisJc3RydWN0IGRybV9hbWRncHVfZ2VtX2NyZWF0 ZV9vdXQJb3V0OworfTsKKworLyoqIE9wY29kZSB0byBjcmVhdGUgbmV3IHJlc2lkZW5jeSBsaXN0 LiAgKi8KKyNkZWZpbmUgQU1ER1BVX0JPX0xJU1RfT1BfQ1JFQVRFCTAKKy8qKiBPcGNvZGUgdG8g ZGVzdHJveSBwcmV2aW91c2x5IGNyZWF0ZWQgcmVzaWRlbmN5IGxpc3QgKi8KKyNkZWZpbmUgQU1E R1BVX0JPX0xJU1RfT1BfREVTVFJPWQkxCisvKiogT3Bjb2RlIHRvIHVwZGF0ZSByZXNvdXJjZSBp bmZvcm1hdGlvbiBpbiB0aGUgbGlzdCAqLworI2RlZmluZSBBTURHUFVfQk9fTElTVF9PUF9VUERB VEUJMgorCitzdHJ1Y3QgZHJtX2FtZGdwdV9ib19saXN0X2luIHsKKwkvKiogVHlwZSBvZiBvcGVy YXRpb24gKi8KKwlfX3UzMiBvcGVyYXRpb247CisJLyoqIEhhbmRsZSBvZiBsaXN0IG9yIDAgaWYg d2Ugd2FudCB0byBjcmVhdGUgb25lICovCisJX191MzIgbGlzdF9oYW5kbGU7CisJLyoqIE51bWJl ciBvZiBCT3MgaW4gbGlzdCAgKi8KKwlfX3UzMiBib19udW1iZXI7CisJLyoqIFNpemUgb2YgZWFj aCBlbGVtZW50IGRlc2NyaWJpbmcgQk8gKi8KKwlfX3UzMiBib19pbmZvX3NpemU7CisJLyoqIFBv aW50ZXIgdG8gYXJyYXkgZGVzY3JpYmluZyBCT3MgKi8KKwlfX3U2NCBib19pbmZvX3B0cjsKK307 CisKK3N0cnVjdCBkcm1fYW1kZ3B1X2JvX2xpc3RfZW50cnkgeworCS8qKiBIYW5kbGUgb2YgQk8g Ki8KKwlfX3UzMiBib19oYW5kbGU7CisJLyoqIE5ldyAoaWYgc3BlY2lmaWVkKSBCTyBwcmlvcml0 eSB0byBiZSB1c2VkIGR1cmluZyBtaWdyYXRpb24gKi8KKwlfX3UzMiBib19wcmlvcml0eTsKK307 CisKK3N0cnVjdCBkcm1fYW1kZ3B1X2JvX2xpc3Rfb3V0IHsKKwkvKiogSGFuZGxlIG9mIHJlc291 cmNlIGxpc3QgICovCisJX191MzIgbGlzdF9oYW5kbGU7CisJX191MzIgX3BhZDsKK307CisKK3Vu aW9uIGRybV9hbWRncHVfYm9fbGlzdCB7CisJc3RydWN0IGRybV9hbWRncHVfYm9fbGlzdF9pbiBp bjsKKwlzdHJ1Y3QgZHJtX2FtZGdwdV9ib19saXN0X291dCBvdXQ7Cit9OworCisvKiBjb250ZXh0 IHJlbGF0ZWQgKi8KKyNkZWZpbmUgQU1ER1BVX0NUWF9PUF9BTExPQ19DVFgJMQorI2RlZmluZSBB TURHUFVfQ1RYX09QX0ZSRUVfQ1RYCTIKKyNkZWZpbmUgQU1ER1BVX0NUWF9PUF9RVUVSWV9TVEFU RQkzCisKKy8qIEdQVSByZXNldCBzdGF0dXMgKi8KKyNkZWZpbmUgQU1ER1BVX0NUWF9OT19SRVNF VAkJMAorLyogdGhpcyB0aGUgY29udGV4dCBjYXVzZWQgaXQgKi8KKyNkZWZpbmUgQU1ER1BVX0NU WF9HVUlMVFlfUkVTRVQJCTEKKy8qIHNvbWUgb3RoZXIgY29udGV4dCBjYXVzZWQgaXQgKi8KKyNk ZWZpbmUgQU1ER1BVX0NUWF9JTk5PQ0VOVF9SRVNFVAkyCisvKiB1bmtub3duIGNhdXNlICovCisj ZGVmaW5lIEFNREdQVV9DVFhfVU5LTk9XTl9SRVNFVAkzCisKKy8qIENvbnRleHQgcHJpb3JpdHkg bGV2ZWwgKi8KKyNkZWZpbmUgQU1ER1BVX0NUWF9QUklPUklUWV9VTlNFVCAgICAgICAtMjA0OAor I2RlZmluZSBBTURHUFVfQ1RYX1BSSU9SSVRZX1ZFUllfTE9XICAgIC0xMDIzCisjZGVmaW5lIEFN REdQVV9DVFhfUFJJT1JJVFlfTE9XICAgICAgICAgLTUxMgorI2RlZmluZSBBTURHUFVfQ1RYX1BS SU9SSVRZX05PUk1BTCAgICAgIDAKKy8qIFNlbGVjdGluZyBhIHByaW9yaXR5IGFib3ZlIE5PUk1B TCByZXF1aXJlcyBDQVBfU1lTX05JQ0Ugb3IgRFJNX01BU1RFUiAqLworI2RlZmluZSBBTURHUFVf Q1RYX1BSSU9SSVRZX0hJR0ggICAgICAgIDUxMgorI2RlZmluZSBBTURHUFVfQ1RYX1BSSU9SSVRZ X1ZFUllfSElHSCAgIDEwMjMKKworc3RydWN0IGRybV9hbWRncHVfY3R4X2luIHsKKwkvKiogQU1E R1BVX0NUWF9PUF8qICovCisJX191MzIJb3A7CisJLyoqIEZvciBmdXR1cmUgdXNlLCBubyBmbGFn cyBkZWZpbmVkIHNvIGZhciAqLworCV9fdTMyCWZsYWdzOworCV9fdTMyCWN0eF9pZDsKKwlfX3Mz Mglwcmlvcml0eTsKK307CisKK3VuaW9uIGRybV9hbWRncHVfY3R4X291dCB7CisJCXN0cnVjdCB7 CisJCQlfX3UzMgljdHhfaWQ7CisJCQlfX3UzMglfcGFkOworCQl9IGFsbG9jOworCisJCXN0cnVj dCB7CisJCQkvKiogRm9yIGZ1dHVyZSB1c2UsIG5vIGZsYWdzIGRlZmluZWQgc28gZmFyICovCisJ CQlfX3U2NAlmbGFnczsKKwkJCS8qKiBOdW1iZXIgb2YgcmVzZXRzIGNhdXNlZCBieSB0aGlzIGNv bnRleHQgc28gZmFyLiAqLworCQkJX191MzIJaGFuZ3M7CisJCQkvKiogUmVzZXQgc3RhdHVzIHNp bmNlIHRoZSBsYXN0IGNhbGwgb2YgdGhlIGlvY3RsLiAqLworCQkJX191MzIJcmVzZXRfc3RhdHVz OworCQl9IHN0YXRlOworfTsKKwordW5pb24gZHJtX2FtZGdwdV9jdHggeworCXN0cnVjdCBkcm1f YW1kZ3B1X2N0eF9pbiBpbjsKKwl1bmlvbiBkcm1fYW1kZ3B1X2N0eF9vdXQgb3V0OworfTsKKwor Lyogdm0gaW9jdGwgKi8KKyNkZWZpbmUgQU1ER1BVX1ZNX09QX1JFU0VSVkVfVk1JRAkxCisjZGVm aW5lIEFNREdQVV9WTV9PUF9VTlJFU0VSVkVfVk1JRAkyCisKK3N0cnVjdCBkcm1fYW1kZ3B1X3Zt X2luIHsKKwkvKiogQU1ER1BVX1ZNX09QXyogKi8KKwlfX3UzMglvcDsKKwlfX3UzMglmbGFnczsK K307CisKK3N0cnVjdCBkcm1fYW1kZ3B1X3ZtX291dCB7CisJLyoqIEZvciBmdXR1cmUgdXNlLCBu byBmbGFncyBkZWZpbmVkIHNvIGZhciAqLworCV9fdTY0CWZsYWdzOworfTsKKwordW5pb24gZHJt X2FtZGdwdV92bSB7CisJc3RydWN0IGRybV9hbWRncHVfdm1faW4gaW47CisJc3RydWN0IGRybV9h bWRncHVfdm1fb3V0IG91dDsKK307CisKKy8qIHNjaGVkIGlvY3RsICovCisjZGVmaW5lIEFNREdQ VV9TQ0hFRF9PUF9QUk9DRVNTX1BSSU9SSVRZX09WRVJSSURFCTEKKworc3RydWN0IGRybV9hbWRn cHVfc2NoZWRfaW4geworCS8qIEFNREdQVV9TQ0hFRF9PUF8qICovCisJX191MzIJb3A7CisJX191 MzIJZmQ7CisJX19zMzIJcHJpb3JpdHk7CisJX191MzIJZmxhZ3M7Cit9OworCit1bmlvbiBkcm1f YW1kZ3B1X3NjaGVkIHsKKwlzdHJ1Y3QgZHJtX2FtZGdwdV9zY2hlZF9pbiBpbjsKK307CisKKy8q CisgKiBUaGlzIGlzIG5vdCBhIHJlbGlhYmxlIEFQSSBhbmQgeW91IHNob3VsZCBleHBlY3QgaXQg dG8gZmFpbCBmb3IgYW55CisgKiBudW1iZXIgb2YgcmVhc29ucyBhbmQgaGF2ZSBmYWxsYmFjayBw YXRoIHRoYXQgZG8gbm90IHVzZSB1c2VycHRyIHRvCisgKiBwZXJmb3JtIGFueSBvcGVyYXRpb24u CisgKi8KKyNkZWZpbmUgQU1ER1BVX0dFTV9VU0VSUFRSX1JFQURPTkxZCSgxIDw8IDApCisjZGVm aW5lIEFNREdQVV9HRU1fVVNFUlBUUl9BTk9OT05MWQkoMSA8PCAxKQorI2RlZmluZSBBTURHUFVf R0VNX1VTRVJQVFJfVkFMSURBVEUJKDEgPDwgMikKKyNkZWZpbmUgQU1ER1BVX0dFTV9VU0VSUFRS X1JFR0lTVEVSCSgxIDw8IDMpCisKK3N0cnVjdCBkcm1fYW1kZ3B1X2dlbV91c2VycHRyIHsKKwlf X3U2NAkJYWRkcjsKKwlfX3U2NAkJc2l6ZTsKKwkvKiBBTURHUFVfR0VNX1VTRVJQVFJfKiAqLwor CV9fdTMyCQlmbGFnczsKKwkvKiBSZXN1bHRpbmcgR0VNIGhhbmRsZSAqLworCV9fdTMyCQloYW5k bGU7Cit9OworCisvKiBTSS1DSS1WSTogKi8KKy8qIHNhbWUgbWVhbmluZyBhcyB0aGUgR0JfVElM RV9NT0RFIGFuZCBHTF9NQUNST19USUxFX01PREUgZmllbGRzICovCisjZGVmaW5lIEFNREdQVV9U SUxJTkdfQVJSQVlfTU9ERV9TSElGVAkJCTAKKyNkZWZpbmUgQU1ER1BVX1RJTElOR19BUlJBWV9N T0RFX01BU0sJCQkweGYKKyNkZWZpbmUgQU1ER1BVX1RJTElOR19QSVBFX0NPTkZJR19TSElGVAkJ CTQKKyNkZWZpbmUgQU1ER1BVX1RJTElOR19QSVBFX0NPTkZJR19NQVNLCQkJMHgxZgorI2RlZmlu ZSBBTURHUFVfVElMSU5HX1RJTEVfU1BMSVRfU0hJRlQJCQk5CisjZGVmaW5lIEFNREdQVV9USUxJ TkdfVElMRV9TUExJVF9NQVNLCQkJMHg3CisjZGVmaW5lIEFNREdQVV9USUxJTkdfTUlDUk9fVElM RV9NT0RFX1NISUZUCQkxMgorI2RlZmluZSBBTURHUFVfVElMSU5HX01JQ1JPX1RJTEVfTU9ERV9N QVNLCQkweDcKKyNkZWZpbmUgQU1ER1BVX1RJTElOR19CQU5LX1dJRFRIX1NISUZUCQkJMTUKKyNk ZWZpbmUgQU1ER1BVX1RJTElOR19CQU5LX1dJRFRIX01BU0sJCQkweDMKKyNkZWZpbmUgQU1ER1BV X1RJTElOR19CQU5LX0hFSUdIVF9TSElGVAkJCTE3CisjZGVmaW5lIEFNREdQVV9USUxJTkdfQkFO S19IRUlHSFRfTUFTSwkJCTB4MworI2RlZmluZSBBTURHUFVfVElMSU5HX01BQ1JPX1RJTEVfQVNQ RUNUX1NISUZUCQkxOQorI2RlZmluZSBBTURHUFVfVElMSU5HX01BQ1JPX1RJTEVfQVNQRUNUX01B U0sJCTB4MworI2RlZmluZSBBTURHUFVfVElMSU5HX05VTV9CQU5LU19TSElGVAkJCTIxCisjZGVm aW5lIEFNREdQVV9USUxJTkdfTlVNX0JBTktTX01BU0sJCQkweDMKKworLyogR0ZYOSBhbmQgbGF0 ZXI6ICovCisjZGVmaW5lIEFNREdQVV9USUxJTkdfU1dJWlpMRV9NT0RFX1NISUZUCQkwCisjZGVm aW5lIEFNREdQVV9USUxJTkdfU1dJWlpMRV9NT0RFX01BU0sJCQkweDFmCisKKy8qIFNldC9HZXQg aGVscGVycyBmb3IgdGlsaW5nIGZsYWdzLiAqLworI2RlZmluZSBBTURHUFVfVElMSU5HX1NFVChm aWVsZCwgdmFsdWUpIFwKKwkoKChfX3U2NCkodmFsdWUpICYgQU1ER1BVX1RJTElOR18jI2ZpZWxk IyNfTUFTSykgPDwgQU1ER1BVX1RJTElOR18jI2ZpZWxkIyNfU0hJRlQpCisjZGVmaW5lIEFNREdQ VV9USUxJTkdfR0VUKHZhbHVlLCBmaWVsZCkgXAorCSgoKF9fdTY0KSh2YWx1ZSkgPj4gQU1ER1BV X1RJTElOR18jI2ZpZWxkIyNfU0hJRlQpICYgQU1ER1BVX1RJTElOR18jI2ZpZWxkIyNfTUFTSykK KworI2RlZmluZSBBTURHUFVfR0VNX01FVEFEQVRBX09QX1NFVF9NRVRBREFUQSAgICAgICAgICAg ICAgICAgIDEKKyNkZWZpbmUgQU1ER1BVX0dFTV9NRVRBREFUQV9PUF9HRVRfTUVUQURBVEEgICAg ICAgICAgICAgICAgICAyCisKKy8qKiBUaGUgc2FtZSBzdHJ1Y3R1cmUgaXMgc2hhcmVkIGZvciBp bnB1dC9vdXRwdXQgKi8KK3N0cnVjdCBkcm1fYW1kZ3B1X2dlbV9tZXRhZGF0YSB7CisJLyoqIEdF TSBPYmplY3QgaGFuZGxlICovCisJX191MzIJaGFuZGxlOworCS8qKiBEbyB3ZSB3YW50IGdldCBv ciBzZXQgbWV0YWRhdGEgKi8KKwlfX3UzMglvcDsKKwlzdHJ1Y3QgeworCQkvKiogRm9yIGZ1dHVy ZSB1c2UsIG5vIGZsYWdzIGRlZmluZWQgc28gZmFyICovCisJCV9fdTY0CWZsYWdzOworCQkvKiog ZmFtaWx5IHNwZWNpZmljIHRpbGluZyBpbmZvICovCisJCV9fdTY0CXRpbGluZ19pbmZvOworCQlf X3UzMglkYXRhX3NpemVfYnl0ZXM7CisJCV9fdTMyCWRhdGFbNjRdOworCX0gZGF0YTsKK307CisK K3N0cnVjdCBkcm1fYW1kZ3B1X2dlbV9tbWFwX2luIHsKKwkvKiogdGhlIEdFTSBvYmplY3QgaGFu ZGxlICovCisJX191MzIgaGFuZGxlOworCV9fdTMyIF9wYWQ7Cit9OworCitzdHJ1Y3QgZHJtX2Ft ZGdwdV9nZW1fbW1hcF9vdXQgeworCS8qKiBtbWFwIG9mZnNldCBmcm9tIHRoZSB2bWEgb2Zmc2V0 IG1hbmFnZXIgKi8KKwlfX3U2NCBhZGRyX3B0cjsKK307CisKK3VuaW9uIGRybV9hbWRncHVfZ2Vt X21tYXAgeworCXN0cnVjdCBkcm1fYW1kZ3B1X2dlbV9tbWFwX2luICAgaW47CisJc3RydWN0IGRy bV9hbWRncHVfZ2VtX21tYXBfb3V0IG91dDsKK307CisKK3N0cnVjdCBkcm1fYW1kZ3B1X2dlbV93 YWl0X2lkbGVfaW4geworCS8qKiBHRU0gb2JqZWN0IGhhbmRsZSAqLworCV9fdTMyIGhhbmRsZTsK KwkvKiogRm9yIGZ1dHVyZSB1c2UsIG5vIGZsYWdzIGRlZmluZWQgc28gZmFyICovCisJX191MzIg ZmxhZ3M7CisJLyoqIEFic29sdXRlIHRpbWVvdXQgdG8gd2FpdCAqLworCV9fdTY0IHRpbWVvdXQ7 Cit9OworCitzdHJ1Y3QgZHJtX2FtZGdwdV9nZW1fd2FpdF9pZGxlX291dCB7CisJLyoqIEJPIHN0 YXR1czogIDAgLSBCTyBpcyBpZGxlLCAxIC0gQk8gaXMgYnVzeSAqLworCV9fdTMyIHN0YXR1czsK KwkvKiogUmV0dXJuZWQgY3VycmVudCBtZW1vcnkgZG9tYWluICovCisJX191MzIgZG9tYWluOwor fTsKKwordW5pb24gZHJtX2FtZGdwdV9nZW1fd2FpdF9pZGxlIHsKKwlzdHJ1Y3QgZHJtX2FtZGdw dV9nZW1fd2FpdF9pZGxlX2luICBpbjsKKwlzdHJ1Y3QgZHJtX2FtZGdwdV9nZW1fd2FpdF9pZGxl X291dCBvdXQ7Cit9OworCitzdHJ1Y3QgZHJtX2FtZGdwdV93YWl0X2NzX2luIHsKKwkvKiBDb21t YW5kIHN1Ym1pc3Npb24gaGFuZGxlCisgICAgICAgICAqIGhhbmRsZSBlcXVhbHMgMCBtZWFucyBu b25lIHRvIHdhaXQgZm9yCisgICAgICAgICAqIGhhbmRsZSBlcXVhbHMgfjB1bGwgbWVhbnMgd2Fp dCBmb3IgdGhlIGxhdGVzdCBzZXF1ZW5jZSBudW1iZXIKKyAgICAgICAgICovCisJX191NjQgaGFu ZGxlOworCS8qKiBBYnNvbHV0ZSB0aW1lb3V0IHRvIHdhaXQgKi8KKwlfX3U2NCB0aW1lb3V0Owor CV9fdTMyIGlwX3R5cGU7CisJX191MzIgaXBfaW5zdGFuY2U7CisJX191MzIgcmluZzsKKwlfX3Uz MiBjdHhfaWQ7Cit9OworCitzdHJ1Y3QgZHJtX2FtZGdwdV93YWl0X2NzX291dCB7CisJLyoqIENT IHN0YXR1czogIDAgLSBDUyBjb21wbGV0ZWQsIDEgLSBDUyBzdGlsbCBidXN5ICovCisJX191NjQg c3RhdHVzOworfTsKKwordW5pb24gZHJtX2FtZGdwdV93YWl0X2NzIHsKKwlzdHJ1Y3QgZHJtX2Ft ZGdwdV93YWl0X2NzX2luIGluOworCXN0cnVjdCBkcm1fYW1kZ3B1X3dhaXRfY3Nfb3V0IG91dDsK K307CisKK3N0cnVjdCBkcm1fYW1kZ3B1X2ZlbmNlIHsKKwlfX3UzMiBjdHhfaWQ7CisJX191MzIg aXBfdHlwZTsKKwlfX3UzMiBpcF9pbnN0YW5jZTsKKwlfX3UzMiByaW5nOworCV9fdTY0IHNlcV9u bzsKK307CisKK3N0cnVjdCBkcm1fYW1kZ3B1X3dhaXRfZmVuY2VzX2luIHsKKwkvKiogVGhpcyBw b2ludHMgdG8gdWludDY0X3QgKiB3aGljaCBwb2ludHMgdG8gZmVuY2VzICovCisJX191NjQgZmVu Y2VzOworCV9fdTMyIGZlbmNlX2NvdW50OworCV9fdTMyIHdhaXRfYWxsOworCV9fdTY0IHRpbWVv dXRfbnM7Cit9OworCitzdHJ1Y3QgZHJtX2FtZGdwdV93YWl0X2ZlbmNlc19vdXQgeworCV9fdTMy IHN0YXR1czsKKwlfX3UzMiBmaXJzdF9zaWduYWxlZDsKK307CisKK3VuaW9uIGRybV9hbWRncHVf d2FpdF9mZW5jZXMgeworCXN0cnVjdCBkcm1fYW1kZ3B1X3dhaXRfZmVuY2VzX2luIGluOworCXN0 cnVjdCBkcm1fYW1kZ3B1X3dhaXRfZmVuY2VzX291dCBvdXQ7Cit9OworCisjZGVmaW5lIEFNREdQ VV9HRU1fT1BfR0VUX0dFTV9DUkVBVEVfSU5GTwkwCisjZGVmaW5lIEFNREdQVV9HRU1fT1BfU0VU X1BMQUNFTUVOVAkJMQorCisvKiBTZXRzIG9yIHJldHVybnMgYSB2YWx1ZSBhc3NvY2lhdGVkIHdp dGggYSBidWZmZXIuICovCitzdHJ1Y3QgZHJtX2FtZGdwdV9nZW1fb3AgeworCS8qKiBHRU0gb2Jq ZWN0IGhhbmRsZSAqLworCV9fdTMyCWhhbmRsZTsKKwkvKiogQU1ER1BVX0dFTV9PUF8qICovCisJ X191MzIJb3A7CisJLyoqIElucHV0IG9yIHJldHVybiB2YWx1ZSAqLworCV9fdTY0CXZhbHVlOwor fTsKKworI2RlZmluZSBBTURHUFVfVkFfT1BfTUFQCQkJMQorI2RlZmluZSBBTURHUFVfVkFfT1Bf VU5NQVAJCQkyCisjZGVmaW5lIEFNREdQVV9WQV9PUF9DTEVBUgkJCTMKKyNkZWZpbmUgQU1ER1BV X1ZBX09QX1JFUExBQ0UJCQk0CisKKy8qIERlbGF5IHRoZSBwYWdlIHRhYmxlIHVwZGF0ZSB0aWxs IHRoZSBuZXh0IENTICovCisjZGVmaW5lIEFNREdQVV9WTV9ERUxBWV9VUERBVEUJCSgxIDw8IDAp CisKKy8qIE1hcHBpbmcgZmxhZ3MgKi8KKy8qIHJlYWRhYmxlIG1hcHBpbmcgKi8KKyNkZWZpbmUg QU1ER1BVX1ZNX1BBR0VfUkVBREFCTEUJCSgxIDw8IDEpCisvKiB3cml0YWJsZSBtYXBwaW5nICov CisjZGVmaW5lIEFNREdQVV9WTV9QQUdFX1dSSVRFQUJMRQkoMSA8PCAyKQorLyogZXhlY3V0YWJs ZSBtYXBwaW5nLCBuZXcgZm9yIFZJICovCisjZGVmaW5lIEFNREdQVV9WTV9QQUdFX0VYRUNVVEFC TEUJKDEgPDwgMykKKy8qIHBhcnRpYWxseSByZXNpZGVudCB0ZXh0dXJlICovCisjZGVmaW5lIEFN REdQVV9WTV9QQUdFX1BSVAkJKDEgPDwgNCkKKy8qIE1UWVBFIGZsYWdzIHVzZSBiaXQgNSB0byA4 ICovCisjZGVmaW5lIEFNREdQVV9WTV9NVFlQRV9NQVNLCQkoMHhmIDw8IDUpCisvKiBEZWZhdWx0 IE1UWVBFLiBQcmUtQUkgbXVzdCB1c2UgdGhpcy4gIFJlY29tbWVuZGVkIGZvciBuZXdlciBBU0lD cy4gKi8KKyNkZWZpbmUgQU1ER1BVX1ZNX01UWVBFX0RFRkFVTFQJCSgwIDw8IDUpCisvKiBVc2Ug TkMgTVRZUEUgaW5zdGVhZCBvZiBkZWZhdWx0IE1UWVBFICovCisjZGVmaW5lIEFNREdQVV9WTV9N VFlQRV9OQwkJKDEgPDwgNSkKKy8qIFVzZSBXQyBNVFlQRSBpbnN0ZWFkIG9mIGRlZmF1bHQgTVRZ UEUgKi8KKyNkZWZpbmUgQU1ER1BVX1ZNX01UWVBFX1dDCQkoMiA8PCA1KQorLyogVXNlIENDIE1U WVBFIGluc3RlYWQgb2YgZGVmYXVsdCBNVFlQRSAqLworI2RlZmluZSBBTURHUFVfVk1fTVRZUEVf Q0MJCSgzIDw8IDUpCisvKiBVc2UgVUMgTVRZUEUgaW5zdGVhZCBvZiBkZWZhdWx0IE1UWVBFICov CisjZGVmaW5lIEFNREdQVV9WTV9NVFlQRV9VQwkJKDQgPDwgNSkKKworc3RydWN0IGRybV9hbWRn cHVfZ2VtX3ZhIHsKKwkvKiogR0VNIG9iamVjdCBoYW5kbGUgKi8KKwlfX3UzMiBoYW5kbGU7CisJ X191MzIgX3BhZDsKKwkvKiogQU1ER1BVX1ZBX09QXyogKi8KKwlfX3UzMiBvcGVyYXRpb247CisJ LyoqIEFNREdQVV9WTV9QQUdFXyogKi8KKwlfX3UzMiBmbGFnczsKKwkvKiogdmEgYWRkcmVzcyB0 byBhc3NpZ24gLiBNdXN0IGJlIGNvcnJlY3RseSBhbGlnbmVkLiovCisJX191NjQgdmFfYWRkcmVz czsKKwkvKiogU3BlY2lmeSBvZmZzZXQgaW5zaWRlIG9mIEJPIHRvIGFzc2lnbi4gTXVzdCBiZSBj b3JyZWN0bHkgYWxpZ25lZC4qLworCV9fdTY0IG9mZnNldF9pbl9ibzsKKwkvKiogU3BlY2lmeSBt YXBwaW5nIHNpemUuIE11c3QgYmUgY29ycmVjdGx5IGFsaWduZWQuICovCisJX191NjQgbWFwX3Np emU7Cit9OworCisjZGVmaW5lIEFNREdQVV9IV19JUF9HRlggICAgICAgICAgMAorI2RlZmluZSBB TURHUFVfSFdfSVBfQ09NUFVURSAgICAgIDEKKyNkZWZpbmUgQU1ER1BVX0hXX0lQX0RNQSAgICAg ICAgICAyCisjZGVmaW5lIEFNREdQVV9IV19JUF9VVkQgICAgICAgICAgMworI2RlZmluZSBBTURH UFVfSFdfSVBfVkNFICAgICAgICAgIDQKKyNkZWZpbmUgQU1ER1BVX0hXX0lQX1VWRF9FTkMgICAg ICA1CisjZGVmaW5lIEFNREdQVV9IV19JUF9WQ05fREVDICAgICAgNgorI2RlZmluZSBBTURHUFVf SFdfSVBfVkNOX0VOQyAgICAgIDcKKyNkZWZpbmUgQU1ER1BVX0hXX0lQX05VTSAgICAgICAgICA4 CisKKyNkZWZpbmUgQU1ER1BVX0hXX0lQX0lOU1RBTkNFX01BWF9DT1VOVCAxCisKKyNkZWZpbmUg QU1ER1BVX0NIVU5LX0lEX0lCCQkweDAxCisjZGVmaW5lIEFNREdQVV9DSFVOS19JRF9GRU5DRQkJ MHgwMgorI2RlZmluZSBBTURHUFVfQ0hVTktfSURfREVQRU5ERU5DSUVTCTB4MDMKKyNkZWZpbmUg QU1ER1BVX0NIVU5LX0lEX1NZTkNPQkpfSU4gICAgICAweDA0CisjZGVmaW5lIEFNREdQVV9DSFVO S19JRF9TWU5DT0JKX09VVCAgICAgMHgwNQorCitzdHJ1Y3QgZHJtX2FtZGdwdV9jc19jaHVuayB7 CisJX191MzIJCWNodW5rX2lkOworCV9fdTMyCQlsZW5ndGhfZHc7CisJX191NjQJCWNodW5rX2Rh dGE7Cit9OworCitzdHJ1Y3QgZHJtX2FtZGdwdV9jc19pbiB7CisJLyoqIFJlbmRlcmluZyBjb250 ZXh0IGlkICovCisJX191MzIJCWN0eF9pZDsKKwkvKiogIEhhbmRsZSBvZiByZXNvdXJjZSBsaXN0 IGFzc29jaWF0ZWQgd2l0aCBDUyAqLworCV9fdTMyCQlib19saXN0X2hhbmRsZTsKKwlfX3UzMgkJ bnVtX2NodW5rczsKKwlfX3UzMgkJX3BhZDsKKwkvKiogdGhpcyBwb2ludHMgdG8gX191NjQgKiB3 aGljaCBwb2ludCB0byBjcyBjaHVua3MgKi8KKwlfX3U2NAkJY2h1bmtzOworfTsKKworc3RydWN0 IGRybV9hbWRncHVfY3Nfb3V0IHsKKwlfX3U2NCBoYW5kbGU7Cit9OworCit1bmlvbiBkcm1fYW1k Z3B1X2NzIHsKKwlzdHJ1Y3QgZHJtX2FtZGdwdV9jc19pbiBpbjsKKwlzdHJ1Y3QgZHJtX2FtZGdw dV9jc19vdXQgb3V0OworfTsKKworLyogU3BlY2lmeSBmbGFncyB0byBiZSB1c2VkIGZvciBJQiAq LworCisvKiBUaGlzIElCIHNob3VsZCBiZSBzdWJtaXR0ZWQgdG8gQ0UgKi8KKyNkZWZpbmUgQU1E R1BVX0lCX0ZMQUdfQ0UJKDE8PDApCisKKy8qIFByZWFtYmxlIGZsYWcsIHdoaWNoIG1lYW5zIHRo ZSBJQiBjb3VsZCBiZSBkcm9wcGVkIGlmIG5vIGNvbnRleHQgc3dpdGNoICovCisjZGVmaW5lIEFN REdQVV9JQl9GTEFHX1BSRUFNQkxFICgxPDwxKQorCisvKiBQcmVlbXB0IGZsYWcsIElCIHNob3Vs ZCBzZXQgUHJlX2VuYiBiaXQgaWYgUFJFRU1QVCBmbGFnIGRldGVjdGVkICovCisjZGVmaW5lIEFN REdQVV9JQl9GTEFHX1BSRUVNUFQgKDE8PDIpCisKK3N0cnVjdCBkcm1fYW1kZ3B1X2NzX2NodW5r X2liIHsKKwlfX3UzMiBfcGFkOworCS8qKiBBTURHUFVfSUJfRkxBR18qICovCisJX191MzIgZmxh Z3M7CisJLyoqIFZpcnR1YWwgYWRkcmVzcyB0byBiZWdpbiBJQiBleGVjdXRpb24gKi8KKwlfX3U2 NCB2YV9zdGFydDsKKwkvKiogU2l6ZSBvZiBzdWJtaXNzaW9uICovCisJX191MzIgaWJfYnl0ZXM7 CisJLyoqIEhXIElQIHRvIHN1Ym1pdCB0byAqLworCV9fdTMyIGlwX3R5cGU7CisJLyoqIEhXIElQ IGluZGV4IG9mIHRoZSBzYW1lIHR5cGUgdG8gc3VibWl0IHRvICAqLworCV9fdTMyIGlwX2luc3Rh bmNlOworCS8qKiBSaW5nIGluZGV4IHRvIHN1Ym1pdCB0byAqLworCV9fdTMyIHJpbmc7Cit9Owor CitzdHJ1Y3QgZHJtX2FtZGdwdV9jc19jaHVua19kZXAgeworCV9fdTMyIGlwX3R5cGU7CisJX191 MzIgaXBfaW5zdGFuY2U7CisJX191MzIgcmluZzsKKwlfX3UzMiBjdHhfaWQ7CisJX191NjQgaGFu ZGxlOworfTsKKworc3RydWN0IGRybV9hbWRncHVfY3NfY2h1bmtfZmVuY2UgeworCV9fdTMyIGhh bmRsZTsKKwlfX3UzMiBvZmZzZXQ7Cit9OworCitzdHJ1Y3QgZHJtX2FtZGdwdV9jc19jaHVua19z ZW0geworCV9fdTMyIGhhbmRsZTsKK307CisKKyNkZWZpbmUgQU1ER1BVX0ZFTkNFX1RPX0hBTkRM RV9HRVRfU1lOQ09CSgkwCisjZGVmaW5lIEFNREdQVV9GRU5DRV9UT19IQU5ETEVfR0VUX1NZTkNP QkpfRkQJMQorI2RlZmluZSBBTURHUFVfRkVOQ0VfVE9fSEFORExFX0dFVF9TWU5DX0ZJTEVfRkQJ MgorCit1bmlvbiBkcm1fYW1kZ3B1X2ZlbmNlX3RvX2hhbmRsZSB7CisJc3RydWN0IHsKKwkJc3Ry dWN0IGRybV9hbWRncHVfZmVuY2UgZmVuY2U7CisJCV9fdTMyIHdoYXQ7CisJCV9fdTMyIHBhZDsK Kwl9IGluOworCXN0cnVjdCB7CisJCV9fdTMyIGhhbmRsZTsKKwl9IG91dDsKK307CisKK3N0cnVj dCBkcm1fYW1kZ3B1X2NzX2NodW5rX2RhdGEgeworCXVuaW9uIHsKKwkJc3RydWN0IGRybV9hbWRn cHVfY3NfY2h1bmtfaWIJCWliX2RhdGE7CisJCXN0cnVjdCBkcm1fYW1kZ3B1X2NzX2NodW5rX2Zl bmNlCWZlbmNlX2RhdGE7CisJfTsKK307CisKKy8qKgorICogIFF1ZXJ5IGgvdyBpbmZvOiBGbGFn IHRoYXQgdGhpcyBpcyBpbnRlZ3JhdGVkIChhLmguYS4gZnVzaW9uKSBHUFUKKyAqCisgKi8KKyNk ZWZpbmUgQU1ER1BVX0lEU19GTEFHU19GVVNJT04gICAgICAgICAweDEKKyNkZWZpbmUgQU1ER1BV X0lEU19GTEFHU19QUkVFTVBUSU9OICAgICAweDIKKworLyogaW5kaWNhdGUgaWYgYWNjZWxlcmF0 aW9uIGNhbiBiZSB3b3JraW5nICovCisjZGVmaW5lIEFNREdQVV9JTkZPX0FDQ0VMX1dPUktJTkcJ CTB4MDAKKy8qIGdldCB0aGUgY3J0Y19pZCBmcm9tIHRoZSBtb2RlIG9iamVjdCBpZD8gKi8KKyNk ZWZpbmUgQU1ER1BVX0lORk9fQ1JUQ19GUk9NX0lECQkweDAxCisvKiBxdWVyeSBodyBJUCBpbmZv ICovCisjZGVmaW5lIEFNREdQVV9JTkZPX0hXX0lQX0lORk8JCQkweDAyCisvKiBxdWVyeSBodyBJ UCBpbnN0YW5jZSBjb3VudCBmb3IgdGhlIHNwZWNpZmllZCB0eXBlICovCisjZGVmaW5lIEFNREdQ VV9JTkZPX0hXX0lQX0NPVU5UCQkJMHgwMworLyogdGltZXN0YW1wIGZvciBHTF9BUkJfdGltZXJf cXVlcnkgKi8KKyNkZWZpbmUgQU1ER1BVX0lORk9fVElNRVNUQU1QCQkJMHgwNQorLyogUXVlcnkg dGhlIGZpcm13YXJlIHZlcnNpb24gKi8KKyNkZWZpbmUgQU1ER1BVX0lORk9fRldfVkVSU0lPTgkJ CTB4MGUKKwkvKiBTdWJxdWVyeSBpZDogUXVlcnkgVkNFIGZpcm13YXJlIHZlcnNpb24gKi8KKwkj ZGVmaW5lIEFNREdQVV9JTkZPX0ZXX1ZDRQkJMHgxCisJLyogU3VicXVlcnkgaWQ6IFF1ZXJ5IFVW RCBmaXJtd2FyZSB2ZXJzaW9uICovCisJI2RlZmluZSBBTURHUFVfSU5GT19GV19VVkQJCTB4Mgor CS8qIFN1YnF1ZXJ5IGlkOiBRdWVyeSBHTUMgZmlybXdhcmUgdmVyc2lvbiAqLworCSNkZWZpbmUg QU1ER1BVX0lORk9fRldfR01DCQkweDAzCisJLyogU3VicXVlcnkgaWQ6IFF1ZXJ5IEdGWCBNRSBm aXJtd2FyZSB2ZXJzaW9uICovCisJI2RlZmluZSBBTURHUFVfSU5GT19GV19HRlhfTUUJCTB4MDQK KwkvKiBTdWJxdWVyeSBpZDogUXVlcnkgR0ZYIFBGUCBmaXJtd2FyZSB2ZXJzaW9uICovCisJI2Rl ZmluZSBBTURHUFVfSU5GT19GV19HRlhfUEZQCQkweDA1CisJLyogU3VicXVlcnkgaWQ6IFF1ZXJ5 IEdGWCBDRSBmaXJtd2FyZSB2ZXJzaW9uICovCisJI2RlZmluZSBBTURHUFVfSU5GT19GV19HRlhf Q0UJCTB4MDYKKwkvKiBTdWJxdWVyeSBpZDogUXVlcnkgR0ZYIFJMQyBmaXJtd2FyZSB2ZXJzaW9u ICovCisJI2RlZmluZSBBTURHUFVfSU5GT19GV19HRlhfUkxDCQkweDA3CisJLyogU3VicXVlcnkg aWQ6IFF1ZXJ5IEdGWCBNRUMgZmlybXdhcmUgdmVyc2lvbiAqLworCSNkZWZpbmUgQU1ER1BVX0lO Rk9fRldfR0ZYX01FQwkJMHgwOAorCS8qIFN1YnF1ZXJ5IGlkOiBRdWVyeSBTTUMgZmlybXdhcmUg dmVyc2lvbiAqLworCSNkZWZpbmUgQU1ER1BVX0lORk9fRldfU01DCQkweDBhCisJLyogU3VicXVl cnkgaWQ6IFF1ZXJ5IFNETUEgZmlybXdhcmUgdmVyc2lvbiAqLworCSNkZWZpbmUgQU1ER1BVX0lO Rk9fRldfU0RNQQkJMHgwYgorCS8qIFN1YnF1ZXJ5IGlkOiBRdWVyeSBQU1AgU09TIGZpcm13YXJl IHZlcnNpb24gKi8KKwkjZGVmaW5lIEFNREdQVV9JTkZPX0ZXX1NPUwkJMHgwYworCS8qIFN1YnF1 ZXJ5IGlkOiBRdWVyeSBQU1AgQVNEIGZpcm13YXJlIHZlcnNpb24gKi8KKwkjZGVmaW5lIEFNREdQ VV9JTkZPX0ZXX0FTRAkJMHgwZAorLyogbnVtYmVyIG9mIGJ5dGVzIG1vdmVkIGZvciBUVE0gbWln cmF0aW9uICovCisjZGVmaW5lIEFNREdQVV9JTkZPX05VTV9CWVRFU19NT1ZFRAkJMHgwZgorLyog dGhlIHVzZWQgVlJBTSBzaXplICovCisjZGVmaW5lIEFNREdQVV9JTkZPX1ZSQU1fVVNBR0UJCQkw eDEwCisvKiB0aGUgdXNlZCBHVFQgc2l6ZSAqLworI2RlZmluZSBBTURHUFVfSU5GT19HVFRfVVNB R0UJCQkweDExCisvKiBJbmZvcm1hdGlvbiBhYm91dCBHRFMsIGV0Yy4gcmVzb3VyY2UgY29uZmln dXJhdGlvbiAqLworI2RlZmluZSBBTURHUFVfSU5GT19HRFNfQ09ORklHCQkJMHgxMworLyogUXVl cnkgaW5mb3JtYXRpb24gYWJvdXQgVlJBTSBhbmQgR1RUIGRvbWFpbnMgKi8KKyNkZWZpbmUgQU1E R1BVX0lORk9fVlJBTV9HVFQJCQkweDE0CisvKiBRdWVyeSBpbmZvcm1hdGlvbiBhYm91dCByZWdp c3RlciBpbiBNTVIgYWRkcmVzcyBzcGFjZSovCisjZGVmaW5lIEFNREdQVV9JTkZPX1JFQURfTU1S X1JFRwkJMHgxNQorLyogUXVlcnkgaW5mb3JtYXRpb24gYWJvdXQgZGV2aWNlOiByZXYgaWQsIGZh bWlseSwgZXRjLiAqLworI2RlZmluZSBBTURHUFVfSU5GT19ERVZfSU5GTwkJCTB4MTYKKy8qIHZp c2libGUgdnJhbSB1c2FnZSAqLworI2RlZmluZSBBTURHUFVfSU5GT19WSVNfVlJBTV9VU0FHRQkJ MHgxNworLyogbnVtYmVyIG9mIFRUTSBidWZmZXIgZXZpY3Rpb25zICovCisjZGVmaW5lIEFNREdQ VV9JTkZPX05VTV9FVklDVElPTlMJCTB4MTgKKy8qIFF1ZXJ5IG1lbW9yeSBhYm91dCBWUkFNIGFu ZCBHVFQgZG9tYWlucyAqLworI2RlZmluZSBBTURHUFVfSU5GT19NRU1PUlkJCQkweDE5CisvKiBR dWVyeSB2Y2UgY2xvY2sgdGFibGUgKi8KKyNkZWZpbmUgQU1ER1BVX0lORk9fVkNFX0NMT0NLX1RB QkxFCQkweDFBCisvKiBRdWVyeSB2YmlvcyByZWxhdGVkIGluZm9ybWF0aW9uICovCisjZGVmaW5l IEFNREdQVV9JTkZPX1ZCSU9TCQkJMHgxQgorCS8qIFN1YnF1ZXJ5IGlkOiBRdWVyeSB2YmlvcyBz aXplICovCisJI2RlZmluZSBBTURHUFVfSU5GT19WQklPU19TSVpFCQkweDEKKwkvKiBTdWJxdWVy eSBpZDogUXVlcnkgdmJpb3MgaW1hZ2UgKi8KKwkjZGVmaW5lIEFNREdQVV9JTkZPX1ZCSU9TX0lN QUdFCQkweDIKKy8qIFF1ZXJ5IFVWRCBoYW5kbGVzICovCisjZGVmaW5lIEFNREdQVV9JTkZPX05V TV9IQU5ETEVTCQkJMHgxQworLyogUXVlcnkgc2Vuc29yIHJlbGF0ZWQgaW5mb3JtYXRpb24gKi8K KyNkZWZpbmUgQU1ER1BVX0lORk9fU0VOU09SCQkJMHgxRAorCS8qIFN1YnF1ZXJ5IGlkOiBRdWVy eSBHUFUgc2hhZGVyIGNsb2NrICovCisJI2RlZmluZSBBTURHUFVfSU5GT19TRU5TT1JfR0ZYX1ND TEsJCTB4MQorCS8qIFN1YnF1ZXJ5IGlkOiBRdWVyeSBHUFUgbWVtb3J5IGNsb2NrICovCisJI2Rl ZmluZSBBTURHUFVfSU5GT19TRU5TT1JfR0ZYX01DTEsJCTB4MgorCS8qIFN1YnF1ZXJ5IGlkOiBR dWVyeSBHUFUgdGVtcGVyYXR1cmUgKi8KKwkjZGVmaW5lIEFNREdQVV9JTkZPX1NFTlNPUl9HUFVf VEVNUAkJMHgzCisJLyogU3VicXVlcnkgaWQ6IFF1ZXJ5IEdQVSBsb2FkICovCisJI2RlZmluZSBB TURHUFVfSU5GT19TRU5TT1JfR1BVX0xPQUQJCTB4NAorCS8qIFN1YnF1ZXJ5IGlkOiBRdWVyeSBh dmVyYWdlIEdQVSBwb3dlcgkqLworCSNkZWZpbmUgQU1ER1BVX0lORk9fU0VOU09SX0dQVV9BVkdf UE9XRVIJMHg1CisJLyogU3VicXVlcnkgaWQ6IFF1ZXJ5IG5vcnRoYnJpZGdlIHZvbHRhZ2UgKi8K KwkjZGVmaW5lIEFNREdQVV9JTkZPX1NFTlNPUl9WREROQgkJMHg2CisJLyogU3VicXVlcnkgaWQ6 IFF1ZXJ5IGdyYXBoaWNzIHZvbHRhZ2UgKi8KKwkjZGVmaW5lIEFNREdQVV9JTkZPX1NFTlNPUl9W RERHRlgJCTB4NworLyogTnVtYmVyIG9mIFZSQU0gcGFnZSBmYXVsdHMgb24gQ1BVIGFjY2Vzcy4g Ki8KKyNkZWZpbmUgQU1ER1BVX0lORk9fTlVNX1ZSQU1fQ1BVX1BBR0VfRkFVTFRTCTB4MUUKKyNk ZWZpbmUgQU1ER1BVX0lORk9fVlJBTV9MT1NUX0NPVU5URVIJCTB4MUYKKworI2RlZmluZSBBTURH UFVfSU5GT19NTVJfU0VfSU5ERVhfU0hJRlQJMAorI2RlZmluZSBBTURHUFVfSU5GT19NTVJfU0Vf SU5ERVhfTUFTSwkweGZmCisjZGVmaW5lIEFNREdQVV9JTkZPX01NUl9TSF9JTkRFWF9TSElGVAk4 CisjZGVmaW5lIEFNREdQVV9JTkZPX01NUl9TSF9JTkRFWF9NQVNLCTB4ZmYKKworc3RydWN0IGRy bV9hbWRncHVfcXVlcnlfZncgeworCS8qKiBBTURHUFVfSU5GT19GV18qICovCisJX191MzIgZndf dHlwZTsKKwkvKioKKwkgKiBJbmRleCBvZiB0aGUgSVAgaWYgdGhlcmUgYXJlIG1vcmUgSVBzIG9m CisJICogdGhlIHNhbWUgdHlwZS4KKwkgKi8KKwlfX3UzMiBpcF9pbnN0YW5jZTsKKwkvKioKKwkg KiBJbmRleCBvZiB0aGUgZW5naW5lLiBXaGV0aGVyIHRoaXMgaXMgdXNlZCBkZXBlbmRzCisJICog b24gdGhlIGZpcm13YXJlIHR5cGUuIChlLmcuIE1FQywgU0RNQSkKKwkgKi8KKwlfX3UzMiBpbmRl eDsKKwlfX3UzMiBfcGFkOworfTsKKworLyogSW5wdXQgc3RydWN0dXJlIGZvciB0aGUgSU5GTyBp b2N0bCAqLworc3RydWN0IGRybV9hbWRncHVfaW5mbyB7CisJLyogV2hlcmUgdGhlIHJldHVybiB2 YWx1ZSB3aWxsIGJlIHN0b3JlZCAqLworCV9fdTY0IHJldHVybl9wb2ludGVyOworCS8qIFRoZSBz aXplIG9mIHRoZSByZXR1cm4gdmFsdWUuIEp1c3QgbGlrZSAic2l6ZSIgaW4gInNucHJpbnRmIiwK KwkgKiBpdCBsaW1pdHMgaG93IG1hbnkgYnl0ZXMgdGhlIGtlcm5lbCBjYW4gd3JpdGUuICovCisJ X191MzIgcmV0dXJuX3NpemU7CisJLyogVGhlIHF1ZXJ5IHJlcXVlc3QgaWQuICovCisJX191MzIg cXVlcnk7CisKKwl1bmlvbiB7CisJCXN0cnVjdCB7CisJCQlfX3UzMiBpZDsKKwkJCV9fdTMyIF9w YWQ7CisJCX0gbW9kZV9jcnRjOworCisJCXN0cnVjdCB7CisJCQkvKiogQU1ER1BVX0hXX0lQXyog Ki8KKwkJCV9fdTMyIHR5cGU7CisJCQkvKioKKwkJCSAqIEluZGV4IG9mIHRoZSBJUCBpZiB0aGVy ZSBhcmUgbW9yZSBJUHMgb2YgdGhlIHNhbWUKKwkJCSAqIHR5cGUuIElnbm9yZWQgYnkgQU1ER1BV X0lORk9fSFdfSVBfQ09VTlQuCisJCQkgKi8KKwkJCV9fdTMyIGlwX2luc3RhbmNlOworCQl9IHF1 ZXJ5X2h3X2lwOworCisJCXN0cnVjdCB7CisJCQlfX3UzMiBkd29yZF9vZmZzZXQ7CisJCQkvKiog bnVtYmVyIG9mIHJlZ2lzdGVycyB0byByZWFkICovCisJCQlfX3UzMiBjb3VudDsKKwkJCV9fdTMy IGluc3RhbmNlOworCQkJLyoqIEZvciBmdXR1cmUgdXNlLCBubyBmbGFncyBkZWZpbmVkIHNvIGZh ciAqLworCQkJX191MzIgZmxhZ3M7CisJCX0gcmVhZF9tbXJfcmVnOworCisJCXN0cnVjdCBkcm1f YW1kZ3B1X3F1ZXJ5X2Z3IHF1ZXJ5X2Z3OworCisJCXN0cnVjdCB7CisJCQlfX3UzMiB0eXBlOwor CQkJX191MzIgb2Zmc2V0OworCQl9IHZiaW9zX2luZm87CisKKwkJc3RydWN0IHsKKwkJCV9fdTMy IHR5cGU7CisJCX0gc2Vuc29yX2luZm87CisJfTsKK307CisKK3N0cnVjdCBkcm1fYW1kZ3B1X2lu Zm9fZ2RzIHsKKwkvKiogR0RTIEdGWCBwYXJ0aXRpb24gc2l6ZSAqLworCV9fdTMyIGdkc19nZnhf cGFydGl0aW9uX3NpemU7CisJLyoqIEdEUyBjb21wdXRlIHBhcnRpdGlvbiBzaXplICovCisJX191 MzIgY29tcHV0ZV9wYXJ0aXRpb25fc2l6ZTsKKwkvKiogdG90YWwgR0RTIG1lbW9yeSBzaXplICov CisJX191MzIgZ2RzX3RvdGFsX3NpemU7CisJLyoqIEdXUyBzaXplIHBlciBHRlggcGFydGl0aW9u ICovCisJX191MzIgZ3dzX3Blcl9nZnhfcGFydGl0aW9uOworCS8qKiBHU1cgc2l6ZSBwZXIgY29t cHV0ZSBwYXJ0aXRpb24gKi8KKwlfX3UzMiBnd3NfcGVyX2NvbXB1dGVfcGFydGl0aW9uOworCS8q KiBPQSBzaXplIHBlciBHRlggcGFydGl0aW9uICovCisJX191MzIgb2FfcGVyX2dmeF9wYXJ0aXRp b247CisJLyoqIE9BIHNpemUgcGVyIGNvbXB1dGUgcGFydGl0aW9uICovCisJX191MzIgb2FfcGVy X2NvbXB1dGVfcGFydGl0aW9uOworCV9fdTMyIF9wYWQ7Cit9OworCitzdHJ1Y3QgZHJtX2FtZGdw dV9pbmZvX3ZyYW1fZ3R0IHsKKwlfX3U2NCB2cmFtX3NpemU7CisJX191NjQgdnJhbV9jcHVfYWNj ZXNzaWJsZV9zaXplOworCV9fdTY0IGd0dF9zaXplOworfTsKKworc3RydWN0IGRybV9hbWRncHVf aGVhcF9pbmZvIHsKKwkvKiogbWF4LiBwaHlzaWNhbCBtZW1vcnkgKi8KKwlfX3U2NCB0b3RhbF9o ZWFwX3NpemU7CisKKwkvKiogVGhlb3JldGljYWwgbWF4LiBhdmFpbGFibGUgbWVtb3J5IGluIHRo ZSBnaXZlbiBoZWFwICovCisJX191NjQgdXNhYmxlX2hlYXBfc2l6ZTsKKworCS8qKgorCSAqIE51 bWJlciBvZiBieXRlcyBhbGxvY2F0ZWQgaW4gdGhlIGhlYXAuIFRoaXMgaW5jbHVkZXMgYWxsIHBy b2Nlc3NlcworCSAqIGFuZCBwcml2YXRlIGFsbG9jYXRpb25zIGluIHRoZSBrZXJuZWwuIEl0IGNo YW5nZXMgd2hlbiBuZXcgYnVmZmVycworCSAqIGFyZSBhbGxvY2F0ZWQsIGZyZWVkLCBhbmQgbW92 ZWQuIEl0IGNhbm5vdCBiZSBsYXJnZXIgdGhhbgorCSAqIGhlYXBfc2l6ZS4KKwkgKi8KKwlfX3U2 NCBoZWFwX3VzYWdlOworCisJLyoqCisJICogVGhlb3JldGljYWwgcG9zc2libGUgbWF4LiBzaXpl IG9mIGJ1ZmZlciB3aGljaAorCSAqIGNvdWxkIGJlIGFsbG9jYXRlZCBpbiB0aGUgZ2l2ZW4gaGVh cAorCSAqLworCV9fdTY0IG1heF9hbGxvY2F0aW9uOworfTsKKworc3RydWN0IGRybV9hbWRncHVf bWVtb3J5X2luZm8geworCXN0cnVjdCBkcm1fYW1kZ3B1X2hlYXBfaW5mbyB2cmFtOworCXN0cnVj dCBkcm1fYW1kZ3B1X2hlYXBfaW5mbyBjcHVfYWNjZXNzaWJsZV92cmFtOworCXN0cnVjdCBkcm1f YW1kZ3B1X2hlYXBfaW5mbyBndHQ7Cit9OworCitzdHJ1Y3QgZHJtX2FtZGdwdV9pbmZvX2Zpcm13 YXJlIHsKKwlfX3UzMiB2ZXI7CisJX191MzIgZmVhdHVyZTsKK307CisKKyNkZWZpbmUgQU1ER1BV X1ZSQU1fVFlQRV9VTktOT1dOIDAKKyNkZWZpbmUgQU1ER1BVX1ZSQU1fVFlQRV9HRERSMSAxCisj ZGVmaW5lIEFNREdQVV9WUkFNX1RZUEVfRERSMiAgMgorI2RlZmluZSBBTURHUFVfVlJBTV9UWVBF X0dERFIzIDMKKyNkZWZpbmUgQU1ER1BVX1ZSQU1fVFlQRV9HRERSNCA0CisjZGVmaW5lIEFNREdQ VV9WUkFNX1RZUEVfR0REUjUgNQorI2RlZmluZSBBTURHUFVfVlJBTV9UWVBFX0hCTSAgIDYKKyNk ZWZpbmUgQU1ER1BVX1ZSQU1fVFlQRV9ERFIzICA3CisKK3N0cnVjdCBkcm1fYW1kZ3B1X2luZm9f ZGV2aWNlIHsKKwkvKiogUENJIERldmljZSBJRCAqLworCV9fdTMyIGRldmljZV9pZDsKKwkvKiog SW50ZXJuYWwgY2hpcCByZXZpc2lvbjogQTAsIEExLCBldGMuKSAqLworCV9fdTMyIGNoaXBfcmV2 OworCV9fdTMyIGV4dGVybmFsX3JldjsKKwkvKiogUmV2aXNpb24gaWQgaW4gUENJIENvbmZpZyBz cGFjZSAqLworCV9fdTMyIHBjaV9yZXY7CisJX191MzIgZmFtaWx5OworCV9fdTMyIG51bV9zaGFk ZXJfZW5naW5lczsKKwlfX3UzMiBudW1fc2hhZGVyX2FycmF5c19wZXJfZW5naW5lOworCS8qIGlu IEtIeiAqLworCV9fdTMyIGdwdV9jb3VudGVyX2ZyZXE7CisJX191NjQgbWF4X2VuZ2luZV9jbG9j azsKKwlfX3U2NCBtYXhfbWVtb3J5X2Nsb2NrOworCS8qIGN1IGluZm9ybWF0aW9uICovCisJX191 MzIgY3VfYWN0aXZlX251bWJlcjsKKwkvKiBOT1RFOiBjdV9hb19tYXNrIGlzIElOVkFMSUQsIERP TidUIHVzZSBpdCAqLworCV9fdTMyIGN1X2FvX21hc2s7CisJX191MzIgY3VfYml0bWFwWzRdWzRd OworCS8qKiBSZW5kZXIgYmFja2VuZCBwaXBlIG1hc2suIE9uZSByZW5kZXIgYmFja2VuZCBpcyBD QitEQi4gKi8KKwlfX3UzMiBlbmFibGVkX3JiX3BpcGVzX21hc2s7CisJX191MzIgbnVtX3JiX3Bp cGVzOworCV9fdTMyIG51bV9od19nZnhfY29udGV4dHM7CisJX191MzIgX3BhZDsKKwlfX3U2NCBp ZHNfZmxhZ3M7CisJLyoqIFN0YXJ0aW5nIHZpcnR1YWwgYWRkcmVzcyBmb3IgVU1Ecy4gKi8KKwlf X3U2NCB2aXJ0dWFsX2FkZHJlc3Nfb2Zmc2V0OworCS8qKiBUaGUgbWF4aW11bSB2aXJ0dWFsIGFk ZHJlc3MgKi8KKwlfX3U2NCB2aXJ0dWFsX2FkZHJlc3NfbWF4OworCS8qKiBSZXF1aXJlZCBhbGln bm1lbnQgb2YgdmlydHVhbCBhZGRyZXNzZXMuICovCisJX191MzIgdmlydHVhbF9hZGRyZXNzX2Fs aWdubWVudDsKKwkvKiogUGFnZSB0YWJsZSBlbnRyeSAtIGZyYWdtZW50IHNpemUgKi8KKwlfX3Uz MiBwdGVfZnJhZ21lbnRfc2l6ZTsKKwlfX3UzMiBnYXJ0X3BhZ2Vfc2l6ZTsKKwkvKiogY29uc3Rh bnQgZW5naW5lIHJhbSBzaXplKi8KKwlfX3UzMiBjZV9yYW1fc2l6ZTsKKwkvKiogdmlkZW8gbWVt b3J5IHR5cGUgaW5mbyovCisJX191MzIgdnJhbV90eXBlOworCS8qKiB2aWRlbyBtZW1vcnkgYml0 IHdpZHRoKi8KKwlfX3UzMiB2cmFtX2JpdF93aWR0aDsKKwkvKiB2Y2UgaGFydmVzdGluZyBpbnN0 YW5jZSAqLworCV9fdTMyIHZjZV9oYXJ2ZXN0X2NvbmZpZzsKKwkvKiBnZnggZG91YmxlIG9mZmNo aXAgTERTIGJ1ZmZlcnMgKi8KKwlfX3UzMiBnY19kb3VibGVfb2ZmY2hpcF9sZHNfYnVmOworCS8q IE5HRyBQcmltaXRpdmUgQnVmZmVyICovCisJX191NjQgcHJpbV9idWZfZ3B1X2FkZHI7CisJLyog TkdHIFBvc2l0aW9uIEJ1ZmZlciAqLworCV9fdTY0IHBvc19idWZfZ3B1X2FkZHI7CisJLyogTkdH IENvbnRyb2wgU2lkZWJhbmQgKi8KKwlfX3U2NCBjbnRsX3NiX2J1Zl9ncHVfYWRkcjsKKwkvKiBO R0cgUGFyYW1ldGVyIENhY2hlICovCisJX191NjQgcGFyYW1fYnVmX2dwdV9hZGRyOworCV9fdTMy IHByaW1fYnVmX3NpemU7CisJX191MzIgcG9zX2J1Zl9zaXplOworCV9fdTMyIGNudGxfc2JfYnVm X3NpemU7CisJX191MzIgcGFyYW1fYnVmX3NpemU7CisJLyogd2F2ZWZyb250IHNpemUqLworCV9f dTMyIHdhdmVfZnJvbnRfc2l6ZTsKKwkvKiBzaGFkZXIgdmlzaWJsZSB2Z3BycyovCisJX191MzIg bnVtX3NoYWRlcl92aXNpYmxlX3ZncHJzOworCS8qIENVIHBlciBzaGFkZXIgYXJyYXkqLworCV9f dTMyIG51bV9jdV9wZXJfc2g7CisJLyogbnVtYmVyIG9mIHRjYyBibG9ja3MqLworCV9fdTMyIG51 bV90Y2NfYmxvY2tzOworCS8qIGdzIHZndCB0YWJsZSBkZXB0aCovCisJX191MzIgZ3Nfdmd0X3Rh YmxlX2RlcHRoOworCS8qIGdzIHByaW1pdGl2ZSBidWZmZXIgZGVwdGgqLworCV9fdTMyIGdzX3By aW1fYnVmZmVyX2RlcHRoOworCS8qIG1heCBncyB3YXZlZnJvbnQgcGVyIHZndCovCisJX191MzIg bWF4X2dzX3dhdmVzX3Blcl92Z3Q7CisJX191MzIgX3BhZDE7CisJLyogYWx3YXlzIG9uIGN1IGJp dG1hcCAqLworCV9fdTMyIGN1X2FvX2JpdG1hcFs0XVs0XTsKK307CisKK3N0cnVjdCBkcm1fYW1k Z3B1X2luZm9faHdfaXAgeworCS8qKiBWZXJzaW9uIG9mIGgvdyBJUCAqLworCV9fdTMyICBod19p cF92ZXJzaW9uX21ham9yOworCV9fdTMyICBod19pcF92ZXJzaW9uX21pbm9yOworCS8qKiBDYXBh YmlsaXRpZXMgKi8KKwlfX3U2NCAgY2FwYWJpbGl0aWVzX2ZsYWdzOworCS8qKiBjb21tYW5kIGJ1 ZmZlciBhZGRyZXNzIHN0YXJ0IGFsaWdubWVudCovCisJX191MzIgIGliX3N0YXJ0X2FsaWdubWVu dDsKKwkvKiogY29tbWFuZCBidWZmZXIgc2l6ZSBhbGlnbm1lbnQqLworCV9fdTMyICBpYl9zaXpl X2FsaWdubWVudDsKKwkvKiogQml0bWFzayBvZiBhdmFpbGFibGUgcmluZ3MuIEJpdCAwIG1lYW5z IHJpbmcgMCwgZXRjLiAqLworCV9fdTMyICBhdmFpbGFibGVfcmluZ3M7CisJX191MzIgIF9wYWQ7 Cit9OworCitzdHJ1Y3QgZHJtX2FtZGdwdV9pbmZvX251bV9oYW5kbGVzIHsKKwkvKiogTWF4IGhh bmRsZXMgYXMgc3VwcG9ydGVkIGJ5IGZpcm13YXJlIGZvciBVVkQgKi8KKwlfX3UzMiAgdXZkX21h eF9oYW5kbGVzOworCS8qKiBIYW5kbGVzIGN1cnJlbnRseSBpbiB1c2UgZm9yIFVWRCAqLworCV9f dTMyICB1dmRfdXNlZF9oYW5kbGVzOworfTsKKworI2RlZmluZSBBTURHUFVfVkNFX0NMT0NLX1RB QkxFX0VOVFJJRVMJCTYKKworc3RydWN0IGRybV9hbWRncHVfaW5mb192Y2VfY2xvY2tfdGFibGVf ZW50cnkgeworCS8qKiBTeXN0ZW0gY2xvY2sgKi8KKwlfX3UzMiBzY2xrOworCS8qKiBNZW1vcnkg Y2xvY2sgKi8KKwlfX3UzMiBtY2xrOworCS8qKiBWQ0UgY2xvY2sgKi8KKwlfX3UzMiBlY2xrOwor CV9fdTMyIHBhZDsKK307CisKK3N0cnVjdCBkcm1fYW1kZ3B1X2luZm9fdmNlX2Nsb2NrX3RhYmxl IHsKKwlzdHJ1Y3QgZHJtX2FtZGdwdV9pbmZvX3ZjZV9jbG9ja190YWJsZV9lbnRyeSBlbnRyaWVz W0FNREdQVV9WQ0VfQ0xPQ0tfVEFCTEVfRU5UUklFU107CisJX191MzIgbnVtX3ZhbGlkX2VudHJp ZXM7CisJX191MzIgcGFkOworfTsKKworLyoKKyAqIFN1cHBvcnRlZCBHUFUgZmFtaWxpZXMKKyAq LworI2RlZmluZSBBTURHUFVfRkFNSUxZX1VOS05PV04JCQkwCisjZGVmaW5lIEFNREdQVV9GQU1J TFlfU0kJCQkxMTAgLyogSGFpbmFuLCBPbGFuZCwgVmVyZGUsIFBpdGNhaXJuLCBUYWhpdGkgKi8K KyNkZWZpbmUgQU1ER1BVX0ZBTUlMWV9DSQkJCTEyMCAvKiBCb25haXJlLCBIYXdhaWkgKi8KKyNk ZWZpbmUgQU1ER1BVX0ZBTUlMWV9LVgkJCTEyNSAvKiBLYXZlcmksIEthYmluaSwgTXVsbGlucyAq LworI2RlZmluZSBBTURHUFVfRkFNSUxZX1ZJCQkJMTMwIC8qIEljZWxhbmQsIFRvbmdhICovCisj ZGVmaW5lIEFNREdQVV9GQU1JTFlfQ1oJCQkxMzUgLyogQ2Fycml6bywgU3RvbmV5ICovCisjZGVm aW5lIEFNREdQVV9GQU1JTFlfQUkJCQkxNDEgLyogVmVnYTEwICovCisjZGVmaW5lIEFNREdQVV9G QU1JTFlfUlYJCQkxNDIgLyogUmF2ZW4gKi8KKworI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpCit9 CisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS11YXBpL2FybWFkYV9k cm0uaCBiL2luY2x1ZGUvZHJtLXVhcGkvYXJtYWRhX2RybS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uMGNiOTMyNDE2Y2ZlCi0tLSAvZGV2L251bGwKKysrIGIvaW5j bHVkZS9kcm0tdWFwaS9hcm1hZGFfZHJtLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHly aWdodCAoQykgMjAxMiBSdXNzZWxsIEtpbmcKKyAqICBXaXRoIGluc3BpcmF0aW9uIGZyb20gdGhl IGk5MTUgZHJpdmVyCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNo ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworI2lmbmRlZiBEUk1fQVJN QURBX0lPQ1RMX0gKKyNkZWZpbmUgRFJNX0FSTUFEQV9JT0NUTF9ICisKKyNpbmNsdWRlICJkcm0u aCIKKworI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisj ZGVmaW5lIERSTV9BUk1BREFfR0VNX0NSRUFURQkJMHgwMAorI2RlZmluZSBEUk1fQVJNQURBX0dF TV9NTUFQCQkweDAyCisjZGVmaW5lIERSTV9BUk1BREFfR0VNX1BXUklURQkJMHgwMworCisjZGVm aW5lIEFSTUFEQV9JT0NUTChkaXIsIG5hbWUsIHN0cikgXAorCURSTV8jI2RpcihEUk1fQ09NTUFO RF9CQVNFICsgRFJNX0FSTUFEQV8jI25hbWUsIHN0cnVjdCBkcm1fYXJtYWRhXyMjc3RyKQorCitz dHJ1Y3QgZHJtX2FybWFkYV9nZW1fY3JlYXRlIHsKKwlfX3UzMiBoYW5kbGU7CisJX191MzIgc2l6 ZTsKK307CisjZGVmaW5lIERSTV9JT0NUTF9BUk1BREFfR0VNX0NSRUFURSBcCisJQVJNQURBX0lP Q1RMKElPV1IsIEdFTV9DUkVBVEUsIGdlbV9jcmVhdGUpCisKK3N0cnVjdCBkcm1fYXJtYWRhX2dl bV9tbWFwIHsKKwlfX3UzMiBoYW5kbGU7CisJX191MzIgcGFkOworCV9fdTY0IG9mZnNldDsKKwlf X3U2NCBzaXplOworCV9fdTY0IGFkZHI7Cit9OworI2RlZmluZSBEUk1fSU9DVExfQVJNQURBX0dF TV9NTUFQIFwKKwlBUk1BREFfSU9DVEwoSU9XUiwgR0VNX01NQVAsIGdlbV9tbWFwKQorCitzdHJ1 Y3QgZHJtX2FybWFkYV9nZW1fcHdyaXRlIHsKKwlfX3U2NCBwdHI7CisJX191MzIgaGFuZGxlOwor CV9fdTMyIG9mZnNldDsKKwlfX3UzMiBzaXplOworfTsKKyNkZWZpbmUgRFJNX0lPQ1RMX0FSTUFE QV9HRU1fUFdSSVRFIFwKKwlBUk1BREFfSU9DVEwoSU9XLCBHRU1fUFdSSVRFLCBnZW1fcHdyaXRl KQorCisjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKK30KKyNlbmRpZgorCisjZW5kaWYKZGlmZiAt LWdpdCBhL2luY2x1ZGUvZHJtLXVhcGkvZHJtLmggYi9pbmNsdWRlL2RybS11YXBpL2RybS5oCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZjBiZDkxZGUwY2Y5Ci0tLSAv ZGV2L251bGwKKysrIGIvaW5jbHVkZS9kcm0tdWFwaS9kcm0uaApAQCAtMCwwICsxLDk4OCBAQAor LyoqCisgKiBcZmlsZSBkcm0uaAorICogSGVhZGVyIGZvciB0aGUgRGlyZWN0IFJlbmRlcmluZyBN YW5hZ2VyCisgKgorICogXGF1dGhvciBSaWNrYXJkIEUuIChSaWspIEZhaXRoIDxmYWl0aEB2YWxp bnV4LmNvbT4KKyAqCisgKiBccGFyIEFja25vd2xlZGdtZW50czoKKyAqIERlYyAxOTk5LCBSaWNo YXJkIEhlbmRlcnNvbiA8cnRoQHR3aWRkbGUubmV0PiwgbW92ZSB0byBnZW5lcmljIFxjIGNtcHhj aGcuCisgKi8KKworLyoKKyAqIENvcHlyaWdodCAxOTk5IFByZWNpc2lvbiBJbnNpZ2h0LCBJbmMu LCBDZWRhciBQYXJrLCBUZXhhcy4KKyAqIENvcHlyaWdodCAyMDAwIFZBIExpbnV4IFN5c3RlbXMs IEluYy4sIFN1bm55dmFsZSwgQ2FsaWZvcm5pYS4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg KgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFu eSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2Np YXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGlu IHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1p dGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlz aCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUg U29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUg aXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u czoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u IG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1 ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0 d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBX QVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJV VCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4g Tk8gRVZFTlQgU0hBTEwKKyAqIFZBIExJTlVYIFNZU1RFTVMgQU5EL09SIElUUyBTVVBQTElFUlMg QkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKKyAqIE9USEVSIExJQUJJTElUWSwg V0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAorICog QVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBP UiBUSEUgVVNFIE9SCisgKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKi8KKwor I2lmbmRlZiBfRFJNX0hfCisjZGVmaW5lIF9EUk1fSF8KKworI2lmICAgZGVmaW5lZChfX2xpbnV4 X18pCisKKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorI2luY2x1ZGUgPGFzbS9pb2N0bC5oPgor dHlwZWRlZiB1bnNpZ25lZCBpbnQgZHJtX2hhbmRsZV90OworCisjZWxzZSAvKiBPbmUgb2YgdGhl IEJTRHMgKi8KKworI2luY2x1ZGUgPHN5cy9pb2Njb20uaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMu aD4KK3R5cGVkZWYgaW50OF90ICAgX19zODsKK3R5cGVkZWYgdWludDhfdCAgX191ODsKK3R5cGVk ZWYgaW50MTZfdCAgX19zMTY7Cit0eXBlZGVmIHVpbnQxNl90IF9fdTE2OwordHlwZWRlZiBpbnQz Ml90ICBfX3MzMjsKK3R5cGVkZWYgdWludDMyX3QgX191MzI7Cit0eXBlZGVmIGludDY0X3QgIF9f czY0OwordHlwZWRlZiB1aW50NjRfdCBfX3U2NDsKK3R5cGVkZWYgc2l6ZV90ICAgX19rZXJuZWxf c2l6ZV90OwordHlwZWRlZiB1bnNpZ25lZCBsb25nIGRybV9oYW5kbGVfdDsKKworI2VuZGlmCisK KyNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQorZXh0ZXJuICJDIiB7CisjZW5kaWYKKworI2RlZmlu ZSBEUk1fTkFNRQkiZHJtIgkgIC8qKjwgTmFtZSBpbiBrZXJuZWwsIC9kZXYsIGFuZCAvcHJvYyAq LworI2RlZmluZSBEUk1fTUlOX09SREVSCTUJICAvKio8IEF0IGxlYXN0IDJeNSBieXRlcyA9IDMy IGJ5dGVzICovCisjZGVmaW5lIERSTV9NQVhfT1JERVIJMjIJICAvKio8IFVwIHRvIDJeMjIgYnl0 ZXMgPSA0TUIgKi8KKyNkZWZpbmUgRFJNX1JBTV9QRVJDRU5UIDEwCSAgLyoqPCBIb3cgbXVjaCBz eXN0ZW0gcmFtIGNhbiB3ZSBsb2NrPyAqLworCisjZGVmaW5lIF9EUk1fTE9DS19IRUxECTB4ODAw MDAwMDBVIC8qKjwgSGFyZHdhcmUgbG9jayBpcyBoZWxkICovCisjZGVmaW5lIF9EUk1fTE9DS19D T05UCTB4NDAwMDAwMDBVIC8qKjwgSGFyZHdhcmUgbG9jayBpcyBjb250ZW5kZWQgKi8KKyNkZWZp bmUgX0RSTV9MT0NLX0lTX0hFTEQobG9jaykJICAgKChsb2NrKSAmIF9EUk1fTE9DS19IRUxEKQor I2RlZmluZSBfRFJNX0xPQ0tfSVNfQ09OVChsb2NrKQkgICAoKGxvY2spICYgX0RSTV9MT0NLX0NP TlQpCisjZGVmaW5lIF9EUk1fTE9DS0lOR19DT05URVhUKGxvY2spICgobG9jaykgJiB+KF9EUk1f TE9DS19IRUxEfF9EUk1fTE9DS19DT05UKSkKKwordHlwZWRlZiB1bnNpZ25lZCBpbnQgZHJtX2Nv bnRleHRfdDsKK3R5cGVkZWYgdW5zaWduZWQgaW50IGRybV9kcmF3YWJsZV90OwordHlwZWRlZiB1 bnNpZ25lZCBpbnQgZHJtX21hZ2ljX3Q7CisKKy8qKgorICogQ2xpcHJlY3QuCisgKgorICogXHdh cm5pbmc6IElmIHlvdSBjaGFuZ2UgdGhpcyBzdHJ1Y3R1cmUsIG1ha2Ugc3VyZSB5b3UgY2hhbmdl CisgKiBYRjg2RFJJQ2xpcFJlY3RSZWMgaW4gdGhlIHNlcnZlciBhcyB3ZWxsCisgKgorICogXG5v dGUgS1c6IEFjdHVhbGx5IGl0J3MgaWxsZWdhbCB0byBjaGFuZ2UgZWl0aGVyIGZvcgorICogYmFj a3dhcmRzLWNvbXBhdGliaWxpdHkgcmVhc29ucy4KKyAqLworc3RydWN0IGRybV9jbGlwX3JlY3Qg eworCXVuc2lnbmVkIHNob3J0IHgxOworCXVuc2lnbmVkIHNob3J0IHkxOworCXVuc2lnbmVkIHNo b3J0IHgyOworCXVuc2lnbmVkIHNob3J0IHkyOworfTsKKworLyoqCisgKiBEcmF3YWJsZSBpbmZv cm1hdGlvbi4KKyAqLworc3RydWN0IGRybV9kcmF3YWJsZV9pbmZvIHsKKwl1bnNpZ25lZCBpbnQg bnVtX3JlY3RzOworCXN0cnVjdCBkcm1fY2xpcF9yZWN0ICpyZWN0czsKK307CisKKy8qKgorICog VGV4dHVyZSByZWdpb24sCisgKi8KK3N0cnVjdCBkcm1fdGV4X3JlZ2lvbiB7CisJdW5zaWduZWQg Y2hhciBuZXh0OworCXVuc2lnbmVkIGNoYXIgcHJldjsKKwl1bnNpZ25lZCBjaGFyIGluX3VzZTsK Kwl1bnNpZ25lZCBjaGFyIHBhZGRpbmc7CisJdW5zaWduZWQgaW50IGFnZTsKK307CisKKy8qKgor ICogSGFyZHdhcmUgbG9jay4KKyAqCisgKiBUaGUgbG9jayBzdHJ1Y3R1cmUgaXMgYSBzaW1wbGUg Y2FjaGUtbGluZSBhbGlnbmVkIGludGVnZXIuICBUbyBhdm9pZAorICogcHJvY2Vzc29yIGJ1cyBj b250ZW50aW9uIG9uIGEgbXVsdGlwcm9jZXNzb3Igc3lzdGVtLCB0aGVyZSBzaG91bGQgbm90IGJl IGFueQorICogb3RoZXIgZGF0YSBzdG9yZWQgaW4gdGhlIHNhbWUgY2FjaGUgbGluZS4KKyAqLwor c3RydWN0IGRybV9od19sb2NrIHsKKwlfX3ZvbGF0aWxlX18gdW5zaWduZWQgaW50IGxvY2s7CQkv Kio8IGxvY2sgdmFyaWFibGUgKi8KKwljaGFyIHBhZGRpbmdbNjBdOwkJCS8qKjwgUGFkIHRvIGNh Y2hlIGxpbmUgKi8KK307CisKKy8qKgorICogRFJNX0lPQ1RMX1ZFUlNJT04gaW9jdGwgYXJndW1l bnQgdHlwZS4KKyAqCisgKiBcc2EgZHJtR2V0VmVyc2lvbigpLgorICovCitzdHJ1Y3QgZHJtX3Zl cnNpb24geworCWludCB2ZXJzaW9uX21ham9yOwkgIC8qKjwgTWFqb3IgdmVyc2lvbiAqLworCWlu dCB2ZXJzaW9uX21pbm9yOwkgIC8qKjwgTWlub3IgdmVyc2lvbiAqLworCWludCB2ZXJzaW9uX3Bh dGNobGV2ZWw7CSAgLyoqPCBQYXRjaCBsZXZlbCAqLworCV9fa2VybmVsX3NpemVfdCBuYW1lX2xl bjsJICAvKio8IExlbmd0aCBvZiBuYW1lIGJ1ZmZlciAqLworCWNoYXIgKm5hbWU7CSAgLyoqPCBO YW1lIG9mIGRyaXZlciAqLworCV9fa2VybmVsX3NpemVfdCBkYXRlX2xlbjsJICAvKio8IExlbmd0 aCBvZiBkYXRlIGJ1ZmZlciAqLworCWNoYXIgKmRhdGU7CSAgLyoqPCBVc2VyLXNwYWNlIGJ1ZmZl ciB0byBob2xkIGRhdGUgKi8KKwlfX2tlcm5lbF9zaXplX3QgZGVzY19sZW47CSAgLyoqPCBMZW5n dGggb2YgZGVzYyBidWZmZXIgKi8KKwljaGFyICpkZXNjOwkgIC8qKjwgVXNlci1zcGFjZSBidWZm ZXIgdG8gaG9sZCBkZXNjICovCit9OworCisvKioKKyAqIERSTV9JT0NUTF9HRVRfVU5JUVVFIGlv Y3RsIGFyZ3VtZW50IHR5cGUuCisgKgorICogXHNhIGRybUdldEJ1c2lkKCkgYW5kIGRybVNldEJ1 c0lkKCkuCisgKi8KK3N0cnVjdCBkcm1fdW5pcXVlIHsKKwlfX2tlcm5lbF9zaXplX3QgdW5pcXVl X2xlbjsJICAvKio8IExlbmd0aCBvZiB1bmlxdWUgKi8KKwljaGFyICp1bmlxdWU7CSAgLyoqPCBV bmlxdWUgbmFtZSBmb3IgZHJpdmVyIGluc3RhbnRpYXRpb24gKi8KK307CisKK3N0cnVjdCBkcm1f bGlzdCB7CisJaW50IGNvdW50OwkJICAvKio8IExlbmd0aCBvZiB1c2VyLXNwYWNlIHN0cnVjdHVy ZXMgKi8KKwlzdHJ1Y3QgZHJtX3ZlcnNpb24gKnZlcnNpb247Cit9OworCitzdHJ1Y3QgZHJtX2Js b2NrIHsKKwlpbnQgdW51c2VkOworfTsKKworLyoqCisgKiBEUk1fSU9DVExfQ09OVFJPTCBpb2N0 bCBhcmd1bWVudCB0eXBlLgorICoKKyAqIFxzYSBkcm1DdGxJbnN0SGFuZGxlcigpIGFuZCBkcm1D dGxVbmluc3RIYW5kbGVyKCkuCisgKi8KK3N0cnVjdCBkcm1fY29udHJvbCB7CisJZW51bSB7CisJ CURSTV9BRERfQ09NTUFORCwKKwkJRFJNX1JNX0NPTU1BTkQsCisJCURSTV9JTlNUX0hBTkRMRVIs CisJCURSTV9VTklOU1RfSEFORExFUgorCX0gZnVuYzsKKwlpbnQgaXJxOworfTsKKworLyoqCisg KiBUeXBlIG9mIG1lbW9yeSB0byBtYXAuCisgKi8KK2VudW0gZHJtX21hcF90eXBlIHsKKwlfRFJN X0ZSQU1FX0JVRkZFUiA9IDAsCSAgLyoqPCBXQyAobm8gY2FjaGluZyksIG5vIGNvcmUgZHVtcCAq LworCV9EUk1fUkVHSVNURVJTID0gMSwJICAvKio8IG5vIGNhY2hpbmcsIG5vIGNvcmUgZHVtcCAq LworCV9EUk1fU0hNID0gMiwJCSAgLyoqPCBzaGFyZWQsIGNhY2hlZCAqLworCV9EUk1fQUdQID0g MywJCSAgLyoqPCBBR1AvR0FSVCAqLworCV9EUk1fU0NBVFRFUl9HQVRIRVIgPSA0LCAgLyoqPCBT Y2F0dGVyL2dhdGhlciBtZW1vcnkgZm9yIFBDSSBETUEgKi8KKwlfRFJNX0NPTlNJU1RFTlQgPSA1 CSAgLyoqPCBDb25zaXN0ZW50IG1lbW9yeSBmb3IgUENJIERNQSAqLworfTsKKworLyoqCisgKiBN ZW1vcnkgbWFwcGluZyBmbGFncy4KKyAqLworZW51bSBkcm1fbWFwX2ZsYWdzIHsKKwlfRFJNX1JF U1RSSUNURUQgPSAweDAxLAkgICAgIC8qKjwgQ2Fubm90IGJlIG1hcHBlZCB0byB1c2VyLXZpcnR1 YWwgKi8KKwlfRFJNX1JFQURfT05MWSA9IDB4MDIsCisJX0RSTV9MT0NLRUQgPSAweDA0LAkgICAg IC8qKjwgc2hhcmVkLCBjYWNoZWQsIGxvY2tlZCAqLworCV9EUk1fS0VSTkVMID0gMHgwOCwJICAg ICAvKio8IGtlcm5lbCByZXF1aXJlcyBhY2Nlc3MgKi8KKwlfRFJNX1dSSVRFX0NPTUJJTklORyA9 IDB4MTAsIC8qKjwgdXNlIHdyaXRlLWNvbWJpbmluZyBpZiBhdmFpbGFibGUgKi8KKwlfRFJNX0NP TlRBSU5TX0xPQ0sgPSAweDIwLCAgIC8qKjwgU0hNIHBhZ2UgdGhhdCBjb250YWlucyBsb2NrICov CisJX0RSTV9SRU1PVkFCTEUgPSAweDQwLAkgICAgIC8qKjwgUmVtb3ZhYmxlIG1hcHBpbmcgKi8K KwlfRFJNX0RSSVZFUiA9IDB4ODAJICAgICAvKio8IE1hbmFnZWQgYnkgZHJpdmVyICovCit9Owor CitzdHJ1Y3QgZHJtX2N0eF9wcml2X21hcCB7CisJdW5zaWduZWQgaW50IGN0eF9pZDsJIC8qKjwg Q29udGV4dCByZXF1ZXN0aW5nIHByaXZhdGUgbWFwcGluZyAqLworCXZvaWQgKmhhbmRsZTsJCSAv Kio8IEhhbmRsZSBvZiBtYXAgKi8KK307CisKKy8qKgorICogRFJNX0lPQ1RMX0dFVF9NQVAsIERS TV9JT0NUTF9BRERfTUFQIGFuZCBEUk1fSU9DVExfUk1fTUFQIGlvY3RscworICogYXJndW1lbnQg dHlwZS4KKyAqCisgKiBcc2EgZHJtQWRkTWFwKCkuCisgKi8KK3N0cnVjdCBkcm1fbWFwIHsKKwl1 bnNpZ25lZCBsb25nIG9mZnNldDsJIC8qKjwgUmVxdWVzdGVkIHBoeXNpY2FsIGFkZHJlc3MgKDAg Zm9yIFNBUkVBKSovCisJdW5zaWduZWQgbG9uZyBzaXplOwkgLyoqPCBSZXF1ZXN0ZWQgcGh5c2lj YWwgc2l6ZSAoYnl0ZXMpICovCisJZW51bSBkcm1fbWFwX3R5cGUgdHlwZTsJIC8qKjwgVHlwZSBv ZiBtZW1vcnkgdG8gbWFwICovCisJZW51bSBkcm1fbWFwX2ZsYWdzIGZsYWdzOwkgLyoqPCBGbGFn cyAqLworCXZvaWQgKmhhbmRsZTsJCSAvKio8IFVzZXItc3BhY2U6ICJIYW5kbGUiIHRvIHBhc3Mg dG8gbW1hcCgpICovCisJCQkJIC8qKjwgS2VybmVsLXNwYWNlOiBrZXJuZWwtdmlydHVhbCBhZGRy ZXNzICovCisJaW50IG10cnI7CQkgLyoqPCBNVFJSIHNsb3QgdXNlZCAqLworCS8qICAgUHJpdmF0 ZSBkYXRhICovCit9OworCisvKioKKyAqIERSTV9JT0NUTF9HRVRfQ0xJRU5UIGlvY3RsIGFyZ3Vt ZW50IHR5cGUuCisgKi8KK3N0cnVjdCBkcm1fY2xpZW50IHsKKwlpbnQgaWR4OwkJLyoqPCBXaGlj aCBjbGllbnQgZGVzaXJlZD8gKi8KKwlpbnQgYXV0aDsJCS8qKjwgSXMgY2xpZW50IGF1dGhlbnRp Y2F0ZWQ/ICovCisJdW5zaWduZWQgbG9uZyBwaWQ7CS8qKjwgUHJvY2VzcyBJRCAqLworCXVuc2ln bmVkIGxvbmcgdWlkOwkvKio8IFVzZXIgSUQgKi8KKwl1bnNpZ25lZCBsb25nIG1hZ2ljOwkvKio8 IE1hZ2ljICovCisJdW5zaWduZWQgbG9uZyBpb2NzOwkvKio8IElvY3RsIGNvdW50ICovCit9Owor CitlbnVtIGRybV9zdGF0X3R5cGUgeworCV9EUk1fU1RBVF9MT0NLLAorCV9EUk1fU1RBVF9PUEVO UywKKwlfRFJNX1NUQVRfQ0xPU0VTLAorCV9EUk1fU1RBVF9JT0NUTFMsCisJX0RSTV9TVEFUX0xP Q0tTLAorCV9EUk1fU1RBVF9VTkxPQ0tTLAorCV9EUk1fU1RBVF9WQUxVRSwJLyoqPCBHZW5lcmlj IHZhbHVlICovCisJX0RSTV9TVEFUX0JZVEUsCQkvKio8IEdlbmVyaWMgYnl0ZSBjb3VudGVyICgx MDI0Ynl0ZXMvSykgKi8KKwlfRFJNX1NUQVRfQ09VTlQsCS8qKjwgR2VuZXJpYyBub24tYnl0ZSBj b3VudGVyICgxMDAwL2spICovCisKKwlfRFJNX1NUQVRfSVJRLAkJLyoqPCBJUlEgKi8KKwlfRFJN X1NUQVRfUFJJTUFSWSwJLyoqPCBQcmltYXJ5IERNQSBieXRlcyAqLworCV9EUk1fU1RBVF9TRUNP TkRBUlksCS8qKjwgU2Vjb25kYXJ5IERNQSBieXRlcyAqLworCV9EUk1fU1RBVF9ETUEsCQkvKio8 IERNQSAqLworCV9EUk1fU1RBVF9TUEVDSUFMLAkvKio8IFNwZWNpYWwgRE1BIChlLmcuLCBwcmlv cml0eSBvciBwb2xsZWQpICovCisJX0RSTV9TVEFUX01JU1NFRAkvKio8IE1pc3NlZCBETUEgb3Bw b3J0dW5pdHkgKi8KKwkgICAgLyogQWRkIHRvIHRoZSAqRU5EKiBvZiB0aGUgbGlzdCAqLworfTsK KworLyoqCisgKiBEUk1fSU9DVExfR0VUX1NUQVRTIGlvY3RsIGFyZ3VtZW50IHR5cGUuCisgKi8K K3N0cnVjdCBkcm1fc3RhdHMgeworCXVuc2lnbmVkIGxvbmcgY291bnQ7CisJc3RydWN0IHsKKwkJ dW5zaWduZWQgbG9uZyB2YWx1ZTsKKwkJZW51bSBkcm1fc3RhdF90eXBlIHR5cGU7CisJfSBkYXRh WzE1XTsKK307CisKKy8qKgorICogSGFyZHdhcmUgbG9ja2luZyBmbGFncy4KKyAqLworZW51bSBk cm1fbG9ja19mbGFncyB7CisJX0RSTV9MT0NLX1JFQURZID0gMHgwMSwJICAgICAvKio8IFdhaXQg dW50aWwgaGFyZHdhcmUgaXMgcmVhZHkgZm9yIERNQSAqLworCV9EUk1fTE9DS19RVUlFU0NFTlQg PSAweDAyLCAgLyoqPCBXYWl0IHVudGlsIGhhcmR3YXJlIHF1aWVzY2VudCAqLworCV9EUk1fTE9D S19GTFVTSCA9IDB4MDQsCSAgICAgLyoqPCBGbHVzaCB0aGlzIGNvbnRleHQncyBETUEgcXVldWUg Zmlyc3QgKi8KKwlfRFJNX0xPQ0tfRkxVU0hfQUxMID0gMHgwOCwgIC8qKjwgRmx1c2ggYWxsIERN QSBxdWV1ZXMgZmlyc3QgKi8KKwkvKiBUaGVzZSAqSEFMVCogZmxhZ3MgYXJlbid0IHN1cHBvcnRl ZCB5ZXQKKwkgICAtLSB0aGV5IHdpbGwgYmUgdXNlZCB0byBzdXBwb3J0IHRoZQorCSAgIGZ1bGwt c2NyZWVuIERHQS1saWtlIG1vZGUuICovCisJX0RSTV9IQUxUX0FMTF9RVUVVRVMgPSAweDEwLCAv Kio8IEhhbHQgYWxsIGN1cnJlbnQgYW5kIGZ1dHVyZSBxdWV1ZXMgKi8KKwlfRFJNX0hBTFRfQ1VS X1FVRVVFUyA9IDB4MjAgIC8qKjwgSGFsdCBhbGwgY3VycmVudCBxdWV1ZXMgKi8KK307CisKKy8q KgorICogRFJNX0lPQ1RMX0xPQ0ssIERSTV9JT0NUTF9VTkxPQ0sgYW5kIERSTV9JT0NUTF9GSU5J U0ggaW9jdGwgYXJndW1lbnQgdHlwZS4KKyAqCisgKiBcc2EgZHJtR2V0TG9jaygpIGFuZCBkcm1V bmxvY2soKS4KKyAqLworc3RydWN0IGRybV9sb2NrIHsKKwlpbnQgY29udGV4dDsKKwllbnVtIGRy bV9sb2NrX2ZsYWdzIGZsYWdzOworfTsKKworLyoqCisgKiBETUEgZmxhZ3MKKyAqCisgKiBcd2Fy bmluZworICogVGhlc2UgdmFsdWVzIFxlIG11c3QgbWF0Y2ggeGY4NmRybS5oLgorICoKKyAqIFxz YSBkcm1fZG1hLgorICovCitlbnVtIGRybV9kbWFfZmxhZ3MgeworCS8qIEZsYWdzIGZvciBETUEg YnVmZmVyIGRpc3BhdGNoICovCisJX0RSTV9ETUFfQkxPQ0sgPSAweDAxLAkgICAgICAvKio8CisJ CQkJICAgICAgICogQmxvY2sgdW50aWwgYnVmZmVyIGRpc3BhdGNoZWQuCisJCQkJICAgICAgICoK KwkJCQkgICAgICAgKiBcbm90ZSBUaGUgYnVmZmVyIG1heSBub3QgeWV0IGhhdmUKKwkJCQkgICAg ICAgKiBiZWVuIHByb2Nlc3NlZCBieSB0aGUgaGFyZHdhcmUgLS0KKwkJCQkgICAgICAgKiBnZXR0 aW5nIGEgaGFyZHdhcmUgbG9jayB3aXRoIHRoZQorCQkJCSAgICAgICAqIGhhcmR3YXJlIHF1aWVz Y2VudCB3aWxsIGVuc3VyZQorCQkJCSAgICAgICAqIHRoYXQgdGhlIGJ1ZmZlciBoYXMgYmVlbgor CQkJCSAgICAgICAqIHByb2Nlc3NlZC4KKwkJCQkgICAgICAgKi8KKwlfRFJNX0RNQV9XSElMRV9M T0NLRUQgPSAweDAyLCAvKio8IERpc3BhdGNoIHdoaWxlIGxvY2sgaGVsZCAqLworCV9EUk1fRE1B X1BSSU9SSVRZID0gMHgwNCwgICAgIC8qKjwgSGlnaCBwcmlvcml0eSBkaXNwYXRjaCAqLworCisJ LyogRmxhZ3MgZm9yIERNQSBidWZmZXIgcmVxdWVzdCAqLworCV9EUk1fRE1BX1dBSVQgPSAweDEw LAkgICAgICAvKio8IFdhaXQgZm9yIGZyZWUgYnVmZmVycyAqLworCV9EUk1fRE1BX1NNQUxMRVJf T0sgPSAweDIwLCAgIC8qKjwgU21hbGxlci10aGFuLXJlcXVlc3RlZCBidWZmZXJzIE9LICovCisJ X0RSTV9ETUFfTEFSR0VSX09LID0gMHg0MCAgICAgLyoqPCBMYXJnZXItdGhhbi1yZXF1ZXN0ZWQg YnVmZmVycyBPSyAqLworfTsKKworLyoqCisgKiBEUk1fSU9DVExfQUREX0JVRlMgYW5kIERSTV9J T0NUTF9NQVJLX0JVRlMgaW9jdGwgYXJndW1lbnQgdHlwZS4KKyAqCisgKiBcc2EgZHJtQWRkQnVm cygpLgorICovCitzdHJ1Y3QgZHJtX2J1Zl9kZXNjIHsKKwlpbnQgY291bnQ7CQkgLyoqPCBOdW1i ZXIgb2YgYnVmZmVycyBvZiB0aGlzIHNpemUgKi8KKwlpbnQgc2l6ZTsJCSAvKio8IFNpemUgaW4g Ynl0ZXMgKi8KKwlpbnQgbG93X21hcms7CQkgLyoqPCBMb3cgd2F0ZXIgbWFyayAqLworCWludCBo aWdoX21hcms7CQkgLyoqPCBIaWdoIHdhdGVyIG1hcmsgKi8KKwllbnVtIHsKKwkJX0RSTV9QQUdF X0FMSUdOID0gMHgwMSwJLyoqPCBBbGlnbiBvbiBwYWdlIGJvdW5kYXJpZXMgZm9yIERNQSAqLwor CQlfRFJNX0FHUF9CVUZGRVIgPSAweDAyLAkvKio8IEJ1ZmZlciBpcyBpbiBBR1Agc3BhY2UgKi8K KwkJX0RSTV9TR19CVUZGRVIgPSAweDA0LAkvKio8IFNjYXR0ZXIvZ2F0aGVyIG1lbW9yeSBidWZm ZXIgKi8KKwkJX0RSTV9GQl9CVUZGRVIgPSAweDA4LAkvKio8IEJ1ZmZlciBpcyBpbiBmcmFtZSBi dWZmZXIgKi8KKwkJX0RSTV9QQ0lfQlVGRkVSX1JPID0gMHgxMCAvKio8IE1hcCBQQ0kgRE1BIGJ1 ZmZlciByZWFkLW9ubHkgKi8KKwl9IGZsYWdzOworCXVuc2lnbmVkIGxvbmcgYWdwX3N0YXJ0OyAv Kio8CisJCQkJICAqIFN0YXJ0IGFkZHJlc3Mgb2Ygd2hlcmUgdGhlIEFHUCBidWZmZXJzIGFyZQor CQkJCSAgKiBpbiB0aGUgQUdQIGFwZXJ0dXJlCisJCQkJICAqLworfTsKKworLyoqCisgKiBEUk1f SU9DVExfSU5GT19CVUZTIGlvY3RsIGFyZ3VtZW50IHR5cGUuCisgKi8KK3N0cnVjdCBkcm1fYnVm X2luZm8geworCWludCBjb3VudDsJCS8qKjwgRW50cmllcyBpbiBsaXN0ICovCisJc3RydWN0IGRy bV9idWZfZGVzYyAqbGlzdDsKK307CisKKy8qKgorICogRFJNX0lPQ1RMX0ZSRUVfQlVGUyBpb2N0 bCBhcmd1bWVudCB0eXBlLgorICovCitzdHJ1Y3QgZHJtX2J1Zl9mcmVlIHsKKwlpbnQgY291bnQ7 CisJaW50ICpsaXN0OworfTsKKworLyoqCisgKiBCdWZmZXIgaW5mb3JtYXRpb24KKyAqCisgKiBc c2EgZHJtX2J1Zl9tYXAuCisgKi8KK3N0cnVjdCBkcm1fYnVmX3B1YiB7CisJaW50IGlkeDsJCSAg ICAgICAvKio8IEluZGV4IGludG8gdGhlIG1hc3RlciBidWZmZXIgbGlzdCAqLworCWludCB0b3Rh bDsJCSAgICAgICAvKio8IEJ1ZmZlciBzaXplICovCisJaW50IHVzZWQ7CQkgICAgICAgLyoqPCBB bW91bnQgb2YgYnVmZmVyIGluIHVzZSAoZm9yIERNQSkgKi8KKwl2b2lkICphZGRyZXNzOwkgICAg ICAgLyoqPCBBZGRyZXNzIG9mIGJ1ZmZlciAqLworfTsKKworLyoqCisgKiBEUk1fSU9DVExfTUFQ X0JVRlMgaW9jdGwgYXJndW1lbnQgdHlwZS4KKyAqLworc3RydWN0IGRybV9idWZfbWFwIHsKKwlp bnQgY291bnQ7CQkvKio8IExlbmd0aCBvZiB0aGUgYnVmZmVyIGxpc3QgKi8KKyNpZmRlZiBfX2Nw bHVzcGx1cworCXZvaWQgKnZpcnQ7CisjZWxzZQorCXZvaWQgKnZpcnR1YWw7CQkvKio8IE1tYXAn ZCBhcmVhIGluIHVzZXItdmlydHVhbCAqLworI2VuZGlmCisJc3RydWN0IGRybV9idWZfcHViICps aXN0OwkvKio8IEJ1ZmZlciBpbmZvcm1hdGlvbiAqLworfTsKKworLyoqCisgKiBEUk1fSU9DVExf RE1BIGlvY3RsIGFyZ3VtZW50IHR5cGUuCisgKgorICogSW5kaWNlcyBoZXJlIHJlZmVyIHRvIHRo ZSBvZmZzZXQgaW50byB0aGUgYnVmZmVyIGxpc3QgaW4gZHJtX2J1Zl9nZXQuCisgKgorICogXHNh IGRybURNQSgpLgorICovCitzdHJ1Y3QgZHJtX2RtYSB7CisJaW50IGNvbnRleHQ7CQkJICAvKio8 IENvbnRleHQgaGFuZGxlICovCisJaW50IHNlbmRfY291bnQ7CQkJICAvKio8IE51bWJlciBvZiBi dWZmZXJzIHRvIHNlbmQgKi8KKwlpbnQgKnNlbmRfaW5kaWNlczsJICAvKio8IExpc3Qgb2YgaGFu ZGxlcyB0byBidWZmZXJzICovCisJaW50ICpzZW5kX3NpemVzOwkJICAvKio8IExlbmd0aHMgb2Yg ZGF0YSB0byBzZW5kICovCisJZW51bSBkcm1fZG1hX2ZsYWdzIGZsYWdzOwkgIC8qKjwgRmxhZ3Mg Ki8KKwlpbnQgcmVxdWVzdF9jb3VudDsJCSAgLyoqPCBOdW1iZXIgb2YgYnVmZmVycyByZXF1ZXN0 ZWQgKi8KKwlpbnQgcmVxdWVzdF9zaXplOwkJICAvKio8IERlc2lyZWQgc2l6ZSBmb3IgYnVmZmVy cyAqLworCWludCAqcmVxdWVzdF9pbmRpY2VzOwkgIC8qKjwgQnVmZmVyIGluZm9ybWF0aW9uICov CisJaW50ICpyZXF1ZXN0X3NpemVzOworCWludCBncmFudGVkX2NvdW50OwkJICAvKio8IE51bWJl ciBvZiBidWZmZXJzIGdyYW50ZWQgKi8KK307CisKK2VudW0gZHJtX2N0eF9mbGFncyB7CisJX0RS TV9DT05URVhUX1BSRVNFUlZFRCA9IDB4MDEsCisJX0RSTV9DT05URVhUXzJET05MWSA9IDB4MDIK K307CisKKy8qKgorICogRFJNX0lPQ1RMX0FERF9DVFggaW9jdGwgYXJndW1lbnQgdHlwZS4KKyAq CisgKiBcc2EgZHJtQ3JlYXRlQ29udGV4dCgpIGFuZCBkcm1EZXN0cm95Q29udGV4dCgpLgorICov CitzdHJ1Y3QgZHJtX2N0eCB7CisJZHJtX2NvbnRleHRfdCBoYW5kbGU7CisJZW51bSBkcm1fY3R4 X2ZsYWdzIGZsYWdzOworfTsKKworLyoqCisgKiBEUk1fSU9DVExfUkVTX0NUWCBpb2N0bCBhcmd1 bWVudCB0eXBlLgorICovCitzdHJ1Y3QgZHJtX2N0eF9yZXMgeworCWludCBjb3VudDsKKwlzdHJ1 Y3QgZHJtX2N0eCAqY29udGV4dHM7Cit9OworCisvKioKKyAqIERSTV9JT0NUTF9BRERfRFJBVyBh bmQgRFJNX0lPQ1RMX1JNX0RSQVcgaW9jdGwgYXJndW1lbnQgdHlwZS4KKyAqLworc3RydWN0IGRy bV9kcmF3IHsKKwlkcm1fZHJhd2FibGVfdCBoYW5kbGU7Cit9OworCisvKioKKyAqIERSTV9JT0NU TF9VUERBVEVfRFJBVyBpb2N0bCBhcmd1bWVudCB0eXBlLgorICovCit0eXBlZGVmIGVudW0gewor CURSTV9EUkFXQUJMRV9DTElQUkVDVFMKK30gZHJtX2RyYXdhYmxlX2luZm9fdHlwZV90OworCitz dHJ1Y3QgZHJtX3VwZGF0ZV9kcmF3IHsKKwlkcm1fZHJhd2FibGVfdCBoYW5kbGU7CisJdW5zaWdu ZWQgaW50IHR5cGU7CisJdW5zaWduZWQgaW50IG51bTsKKwl1bnNpZ25lZCBsb25nIGxvbmcgZGF0 YTsKK307CisKKy8qKgorICogRFJNX0lPQ1RMX0dFVF9NQUdJQyBhbmQgRFJNX0lPQ1RMX0FVVEhf TUFHSUMgaW9jdGwgYXJndW1lbnQgdHlwZS4KKyAqLworc3RydWN0IGRybV9hdXRoIHsKKwlkcm1f bWFnaWNfdCBtYWdpYzsKK307CisKKy8qKgorICogRFJNX0lPQ1RMX0lSUV9CVVNJRCBpb2N0bCBh cmd1bWVudCB0eXBlLgorICoKKyAqIFxzYSBkcm1HZXRJbnRlcnJ1cHRGcm9tQnVzSUQoKS4KKyAq Lworc3RydWN0IGRybV9pcnFfYnVzaWQgeworCWludCBpcnE7CS8qKjwgSVJRIG51bWJlciAqLwor CWludCBidXNudW07CS8qKjwgYnVzIG51bWJlciAqLworCWludCBkZXZudW07CS8qKjwgZGV2aWNl IG51bWJlciAqLworCWludCBmdW5jbnVtOwkvKio8IGZ1bmN0aW9uIG51bWJlciAqLworfTsKKwor ZW51bSBkcm1fdmJsYW5rX3NlcV90eXBlIHsKKwlfRFJNX1ZCTEFOS19BQlNPTFVURSA9IDB4MCwJ LyoqPCBXYWl0IGZvciBzcGVjaWZpYyB2Ymxhbmsgc2VxdWVuY2UgbnVtYmVyICovCisJX0RSTV9W QkxBTktfUkVMQVRJVkUgPSAweDEsCS8qKjwgV2FpdCBmb3IgZ2l2ZW4gbnVtYmVyIG9mIHZibGFu a3MgKi8KKwkvKiBiaXRzIDEtNiBhcmUgcmVzZXJ2ZWQgZm9yIGhpZ2ggY3J0Y3MgKi8KKwlfRFJN X1ZCTEFOS19ISUdIX0NSVENfTUFTSyA9IDB4MDAwMDAwM2UsCisJX0RSTV9WQkxBTktfRVZFTlQg PSAweDQwMDAwMDAsICAgLyoqPCBTZW5kIGV2ZW50IGluc3RlYWQgb2YgYmxvY2tpbmcgKi8KKwlf RFJNX1ZCTEFOS19GTElQID0gMHg4MDAwMDAwLCAgIC8qKjwgU2NoZWR1bGVkIGJ1ZmZlciBzd2Fw IHNob3VsZCBmbGlwICovCisJX0RSTV9WQkxBTktfTkVYVE9OTUlTUyA9IDB4MTAwMDAwMDAsCS8q KjwgSWYgbWlzc2VkLCB3YWl0IGZvciBuZXh0IHZibGFuayAqLworCV9EUk1fVkJMQU5LX1NFQ09O REFSWSA9IDB4MjAwMDAwMDAsCS8qKjwgU2Vjb25kYXJ5IGRpc3BsYXkgY29udHJvbGxlciAqLwor CV9EUk1fVkJMQU5LX1NJR05BTCA9IDB4NDAwMDAwMDAJLyoqPCBTZW5kIHNpZ25hbCBpbnN0ZWFk IG9mIGJsb2NraW5nLCB1bnN1cHBvcnRlZCAqLworfTsKKyNkZWZpbmUgX0RSTV9WQkxBTktfSElH SF9DUlRDX1NISUZUIDEKKworI2RlZmluZSBfRFJNX1ZCTEFOS19UWVBFU19NQVNLIChfRFJNX1ZC TEFOS19BQlNPTFVURSB8IF9EUk1fVkJMQU5LX1JFTEFUSVZFKQorI2RlZmluZSBfRFJNX1ZCTEFO S19GTEFHU19NQVNLIChfRFJNX1ZCTEFOS19FVkVOVCB8IF9EUk1fVkJMQU5LX1NJR05BTCB8IFwK KwkJCQlfRFJNX1ZCTEFOS19TRUNPTkRBUlkgfCBfRFJNX1ZCTEFOS19ORVhUT05NSVNTKQorCitz dHJ1Y3QgZHJtX3dhaXRfdmJsYW5rX3JlcXVlc3QgeworCWVudW0gZHJtX3ZibGFua19zZXFfdHlw ZSB0eXBlOworCXVuc2lnbmVkIGludCBzZXF1ZW5jZTsKKwl1bnNpZ25lZCBsb25nIHNpZ25hbDsK K307CisKK3N0cnVjdCBkcm1fd2FpdF92YmxhbmtfcmVwbHkgeworCWVudW0gZHJtX3ZibGFua19z ZXFfdHlwZSB0eXBlOworCXVuc2lnbmVkIGludCBzZXF1ZW5jZTsKKwlsb25nIHR2YWxfc2VjOwor CWxvbmcgdHZhbF91c2VjOworfTsKKworLyoqCisgKiBEUk1fSU9DVExfV0FJVF9WQkxBTksgaW9j dGwgYXJndW1lbnQgdHlwZS4KKyAqCisgKiBcc2EgZHJtV2FpdFZCbGFuaygpLgorICovCit1bmlv biBkcm1fd2FpdF92YmxhbmsgeworCXN0cnVjdCBkcm1fd2FpdF92YmxhbmtfcmVxdWVzdCByZXF1 ZXN0OworCXN0cnVjdCBkcm1fd2FpdF92YmxhbmtfcmVwbHkgcmVwbHk7Cit9OworCisjZGVmaW5l IF9EUk1fUFJFX01PREVTRVQgMQorI2RlZmluZSBfRFJNX1BPU1RfTU9ERVNFVCAyCisKKy8qKgor ICogRFJNX0lPQ1RMX01PREVTRVRfQ1RMIGlvY3RsIGFyZ3VtZW50IHR5cGUKKyAqCisgKiBcc2Eg ZHJtTW9kZXNldEN0bCgpLgorICovCitzdHJ1Y3QgZHJtX21vZGVzZXRfY3RsIHsKKwlfX3UzMiBj cnRjOworCV9fdTMyIGNtZDsKK307CisKKy8qKgorICogRFJNX0lPQ1RMX0FHUF9FTkFCTEUgaW9j dGwgYXJndW1lbnQgdHlwZS4KKyAqCisgKiBcc2EgZHJtQWdwRW5hYmxlKCkuCisgKi8KK3N0cnVj dCBkcm1fYWdwX21vZGUgeworCXVuc2lnbmVkIGxvbmcgbW9kZTsJLyoqPCBBR1AgbW9kZSAqLwor fTsKKworLyoqCisgKiBEUk1fSU9DVExfQUdQX0FMTE9DIGFuZCBEUk1fSU9DVExfQUdQX0ZSRUUg aW9jdGxzIGFyZ3VtZW50IHR5cGUuCisgKgorICogXHNhIGRybUFncEFsbG9jKCkgYW5kIGRybUFn cEZyZWUoKS4KKyAqLworc3RydWN0IGRybV9hZ3BfYnVmZmVyIHsKKwl1bnNpZ25lZCBsb25nIHNp emU7CS8qKjwgSW4gYnl0ZXMgLS0gd2lsbCByb3VuZCB0byBwYWdlIGJvdW5kYXJ5ICovCisJdW5z aWduZWQgbG9uZyBoYW5kbGU7CS8qKjwgVXNlZCBmb3IgYmluZGluZyAvIHVuYmluZGluZyAqLwor CXVuc2lnbmVkIGxvbmcgdHlwZTsJLyoqPCBUeXBlIG9mIG1lbW9yeSB0byBhbGxvY2F0ZSAqLwor CXVuc2lnbmVkIGxvbmcgcGh5c2ljYWw7CS8qKjwgUGh5c2ljYWwgdXNlZCBieSBpODEwICovCit9 OworCisvKioKKyAqIERSTV9JT0NUTF9BR1BfQklORCBhbmQgRFJNX0lPQ1RMX0FHUF9VTkJJTkQg aW9jdGxzIGFyZ3VtZW50IHR5cGUuCisgKgorICogXHNhIGRybUFncEJpbmQoKSBhbmQgZHJtQWdw VW5iaW5kKCkuCisgKi8KK3N0cnVjdCBkcm1fYWdwX2JpbmRpbmcgeworCXVuc2lnbmVkIGxvbmcg aGFuZGxlOwkvKio8IEZyb20gZHJtX2FncF9idWZmZXIgKi8KKwl1bnNpZ25lZCBsb25nIG9mZnNl dDsJLyoqPCBJbiBieXRlcyAtLSB3aWxsIHJvdW5kIHRvIHBhZ2UgYm91bmRhcnkgKi8KK307CisK Ky8qKgorICogRFJNX0lPQ1RMX0FHUF9JTkZPIGlvY3RsIGFyZ3VtZW50IHR5cGUuCisgKgorICog XHNhIGRybUFncFZlcnNpb25NYWpvcigpLCBkcm1BZ3BWZXJzaW9uTWlub3IoKSwgZHJtQWdwR2V0 TW9kZSgpLAorICogZHJtQWdwQmFzZSgpLCBkcm1BZ3BTaXplKCksIGRybUFncE1lbW9yeVVzZWQo KSwgZHJtQWdwTWVtb3J5QXZhaWwoKSwKKyAqIGRybUFncFZlbmRvcklkKCkgYW5kIGRybUFncERl dmljZUlkKCkuCisgKi8KK3N0cnVjdCBkcm1fYWdwX2luZm8geworCWludCBhZ3BfdmVyc2lvbl9t YWpvcjsKKwlpbnQgYWdwX3ZlcnNpb25fbWlub3I7CisJdW5zaWduZWQgbG9uZyBtb2RlOworCXVu c2lnbmVkIGxvbmcgYXBlcnR1cmVfYmFzZTsJLyogcGh5c2ljYWwgYWRkcmVzcyAqLworCXVuc2ln bmVkIGxvbmcgYXBlcnR1cmVfc2l6ZTsJLyogYnl0ZXMgKi8KKwl1bnNpZ25lZCBsb25nIG1lbW9y eV9hbGxvd2VkOwkvKiBieXRlcyAqLworCXVuc2lnbmVkIGxvbmcgbWVtb3J5X3VzZWQ7CisKKwkv KiBQQ0kgaW5mb3JtYXRpb24gKi8KKwl1bnNpZ25lZCBzaG9ydCBpZF92ZW5kb3I7CisJdW5zaWdu ZWQgc2hvcnQgaWRfZGV2aWNlOworfTsKKworLyoqCisgKiBEUk1fSU9DVExfU0dfQUxMT0MgaW9j dGwgYXJndW1lbnQgdHlwZS4KKyAqLworc3RydWN0IGRybV9zY2F0dGVyX2dhdGhlciB7CisJdW5z aWduZWQgbG9uZyBzaXplOwkvKio8IEluIGJ5dGVzIC0tIHdpbGwgcm91bmQgdG8gcGFnZSBib3Vu ZGFyeSAqLworCXVuc2lnbmVkIGxvbmcgaGFuZGxlOwkvKio8IFVzZWQgZm9yIG1hcHBpbmcgLyB1 bm1hcHBpbmcgKi8KK307CisKKy8qKgorICogRFJNX0lPQ1RMX1NFVF9WRVJTSU9OIGlvY3RsIGFy Z3VtZW50IHR5cGUuCisgKi8KK3N0cnVjdCBkcm1fc2V0X3ZlcnNpb24geworCWludCBkcm1fZGlf bWFqb3I7CisJaW50IGRybV9kaV9taW5vcjsKKwlpbnQgZHJtX2RkX21ham9yOworCWludCBkcm1f ZGRfbWlub3I7Cit9OworCisvKiogRFJNX0lPQ1RMX0dFTV9DTE9TRSBpb2N0bCBhcmd1bWVudCB0 eXBlICovCitzdHJ1Y3QgZHJtX2dlbV9jbG9zZSB7CisJLyoqIEhhbmRsZSBvZiB0aGUgb2JqZWN0 IHRvIGJlIGNsb3NlZC4gKi8KKwlfX3UzMiBoYW5kbGU7CisJX191MzIgcGFkOworfTsKKworLyoq IERSTV9JT0NUTF9HRU1fRkxJTksgaW9jdGwgYXJndW1lbnQgdHlwZSAqLworc3RydWN0IGRybV9n ZW1fZmxpbmsgeworCS8qKiBIYW5kbGUgZm9yIHRoZSBvYmplY3QgYmVpbmcgbmFtZWQgKi8KKwlf X3UzMiBoYW5kbGU7CisKKwkvKiogUmV0dXJuZWQgZ2xvYmFsIG5hbWUgKi8KKwlfX3UzMiBuYW1l OworfTsKKworLyoqIERSTV9JT0NUTF9HRU1fT1BFTiBpb2N0bCBhcmd1bWVudCB0eXBlICovCitz dHJ1Y3QgZHJtX2dlbV9vcGVuIHsKKwkvKiogTmFtZSBvZiBvYmplY3QgYmVpbmcgb3BlbmVkICov CisJX191MzIgbmFtZTsKKworCS8qKiBSZXR1cm5lZCBoYW5kbGUgZm9yIHRoZSBvYmplY3QgKi8K KwlfX3UzMiBoYW5kbGU7CisKKwkvKiogUmV0dXJuZWQgc2l6ZSBvZiB0aGUgb2JqZWN0ICovCisJ X191NjQgc2l6ZTsKK307CisKKyNkZWZpbmUgRFJNX0NBUF9EVU1CX0JVRkZFUgkJMHgxCisjZGVm aW5lIERSTV9DQVBfVkJMQU5LX0hJR0hfQ1JUQwkweDIKKyNkZWZpbmUgRFJNX0NBUF9EVU1CX1BS RUZFUlJFRF9ERVBUSAkweDMKKyNkZWZpbmUgRFJNX0NBUF9EVU1CX1BSRUZFUl9TSEFET1cJMHg0 CisjZGVmaW5lIERSTV9DQVBfUFJJTUUJCQkweDUKKyNkZWZpbmUgIERSTV9QUklNRV9DQVBfSU1Q T1JUCQkweDEKKyNkZWZpbmUgIERSTV9QUklNRV9DQVBfRVhQT1JUCQkweDIKKyNkZWZpbmUgRFJN X0NBUF9USU1FU1RBTVBfTU9OT1RPTklDCTB4NgorI2RlZmluZSBEUk1fQ0FQX0FTWU5DX1BBR0Vf RkxJUAkJMHg3CisvKgorICogVGhlIENVUlNPUl9XSURUSCBhbmQgQ1VSU09SX0hFSUdIVCBjYXBh YmlsaXRpZXMgcmV0dXJuIGEgdmFsaWQgd2lkdGh4aGVpZ2h0CisgKiBjb21iaW5hdGlvbiBmb3Ig dGhlIGhhcmR3YXJlIGN1cnNvci4gVGhlIGludGVudGlvbiBpcyB0aGF0IGEgaGFyZHdhcmUKKyAq IGFnbm9zdGljIHVzZXJzcGFjZSBjYW4gcXVlcnkgYSBjdXJzb3IgcGxhbmUgc2l6ZSB0byB1c2Uu CisgKgorICogTm90ZSB0aGF0IHRoZSBjcm9zcy1kcml2ZXIgY29udHJhY3QgaXMgdG8gbWVyZWx5 IHJldHVybiBhIHZhbGlkIHNpemU7CisgKiBkcml2ZXJzIGFyZSBmcmVlIHRvIGF0dGFjaCBhbm90 aGVyIG1lYW5pbmcgb24gdG9wLCBlZy4gaTkxNSByZXR1cm5zIHRoZQorICogbWF4aW11bSBwbGFu ZSBzaXplLgorICovCisjZGVmaW5lIERSTV9DQVBfQ1VSU09SX1dJRFRICQkweDgKKyNkZWZpbmUg RFJNX0NBUF9DVVJTT1JfSEVJR0hUCQkweDkKKyNkZWZpbmUgRFJNX0NBUF9BRERGQjJfTU9ESUZJ RVJTCTB4MTAKKyNkZWZpbmUgRFJNX0NBUF9QQUdFX0ZMSVBfVEFSR0VUCTB4MTEKKyNkZWZpbmUg RFJNX0NBUF9DUlRDX0lOX1ZCTEFOS19FVkVOVAkweDEyCisjZGVmaW5lIERSTV9DQVBfU1lOQ09C SgkJMHgxMworCisvKiogRFJNX0lPQ1RMX0dFVF9DQVAgaW9jdGwgYXJndW1lbnQgdHlwZSAqLwor c3RydWN0IGRybV9nZXRfY2FwIHsKKwlfX3U2NCBjYXBhYmlsaXR5OworCV9fdTY0IHZhbHVlOwor fTsKKworLyoqCisgKiBEUk1fQ0xJRU5UX0NBUF9TVEVSRU9fM0QKKyAqCisgKiBpZiBzZXQgdG8g MSwgdGhlIERSTSBjb3JlIHdpbGwgZXhwb3NlIHRoZSBzdGVyZW8gM0QgY2FwYWJpbGl0aWVzIG9m IHRoZQorICogbW9uaXRvciBieSBhZHZlcnRpc2luZyB0aGUgc3VwcG9ydGVkIDNEIGxheW91dHMg aW4gdGhlIGZsYWdzIG9mIHN0cnVjdAorICogZHJtX21vZGVfbW9kZWluZm8uCisgKi8KKyNkZWZp bmUgRFJNX0NMSUVOVF9DQVBfU1RFUkVPXzNECTEKKworLyoqCisgKiBEUk1fQ0xJRU5UX0NBUF9V TklWRVJTQUxfUExBTkVTCisgKgorICogSWYgc2V0IHRvIDEsIHRoZSBEUk0gY29yZSB3aWxsIGV4 cG9zZSBhbGwgcGxhbmVzIChvdmVybGF5LCBwcmltYXJ5LCBhbmQKKyAqIGN1cnNvcikgdG8gdXNl cnNwYWNlLgorICovCisjZGVmaW5lIERSTV9DTElFTlRfQ0FQX1VOSVZFUlNBTF9QTEFORVMgIDIK KworLyoqCisgKiBEUk1fQ0xJRU5UX0NBUF9BVE9NSUMKKyAqCisgKiBJZiBzZXQgdG8gMSwgdGhl IERSTSBjb3JlIHdpbGwgZXhwb3NlIGF0b21pYyBwcm9wZXJ0aWVzIHRvIHVzZXJzcGFjZQorICov CisjZGVmaW5lIERSTV9DTElFTlRfQ0FQX0FUT01JQwkzCisKKy8qKiBEUk1fSU9DVExfU0VUX0NM SUVOVF9DQVAgaW9jdGwgYXJndW1lbnQgdHlwZSAqLworc3RydWN0IGRybV9zZXRfY2xpZW50X2Nh cCB7CisJX191NjQgY2FwYWJpbGl0eTsKKwlfX3U2NCB2YWx1ZTsKK307CisKKyNkZWZpbmUgRFJN X1JEV1IgT19SRFdSCisjZGVmaW5lIERSTV9DTE9FWEVDIE9fQ0xPRVhFQworc3RydWN0IGRybV9w cmltZV9oYW5kbGUgeworCV9fdTMyIGhhbmRsZTsKKworCS8qKiBGbGFncy4uIG9ubHkgYXBwbGlj YWJsZSBmb3IgaGFuZGxlLT5mZCAqLworCV9fdTMyIGZsYWdzOworCisJLyoqIFJldHVybmVkIGRt YWJ1ZiBmaWxlIGRlc2NyaXB0b3IgKi8KKwlfX3MzMiBmZDsKK307CisKK3N0cnVjdCBkcm1fc3lu Y29ial9jcmVhdGUgeworCV9fdTMyIGhhbmRsZTsKKyNkZWZpbmUgRFJNX1NZTkNPQkpfQ1JFQVRF X1NJR05BTEVEICgxIDw8IDApCisJX191MzIgZmxhZ3M7Cit9OworCitzdHJ1Y3QgZHJtX3N5bmNv YmpfZGVzdHJveSB7CisJX191MzIgaGFuZGxlOworCV9fdTMyIHBhZDsKK307CisKKyNkZWZpbmUg RFJNX1NZTkNPQkpfRkRfVE9fSEFORExFX0ZMQUdTX0lNUE9SVF9TWU5DX0ZJTEUgKDEgPDwgMCkK KyNkZWZpbmUgRFJNX1NZTkNPQkpfSEFORExFX1RPX0ZEX0ZMQUdTX0VYUE9SVF9TWU5DX0ZJTEUg KDEgPDwgMCkKK3N0cnVjdCBkcm1fc3luY29ial9oYW5kbGUgeworCV9fdTMyIGhhbmRsZTsKKwlf X3UzMiBmbGFnczsKKworCV9fczMyIGZkOworCV9fdTMyIHBhZDsKK307CisKKyNkZWZpbmUgRFJN X1NZTkNPQkpfV0FJVF9GTEFHU19XQUlUX0FMTCAoMSA8PCAwKQorI2RlZmluZSBEUk1fU1lOQ09C Sl9XQUlUX0ZMQUdTX1dBSVRfRk9SX1NVQk1JVCAoMSA8PCAxKQorc3RydWN0IGRybV9zeW5jb2Jq X3dhaXQgeworCV9fdTY0IGhhbmRsZXM7CisJLyogYWJzb2x1dGUgdGltZW91dCAqLworCV9fczY0 IHRpbWVvdXRfbnNlYzsKKwlfX3UzMiBjb3VudF9oYW5kbGVzOworCV9fdTMyIGZsYWdzOworCV9f dTMyIGZpcnN0X3NpZ25hbGVkOyAvKiBvbmx5IHZhbGlkIHdoZW4gbm90IHdhaXRpbmcgYWxsICov CisJX191MzIgcGFkOworfTsKKworc3RydWN0IGRybV9zeW5jb2JqX2FycmF5IHsKKwlfX3U2NCBo YW5kbGVzOworCV9fdTMyIGNvdW50X2hhbmRsZXM7CisJX191MzIgcGFkOworfTsKKworLyogUXVl cnkgY3VycmVudCBzY2Fub3V0IHNlcXVlbmNlIG51bWJlciAqLworc3RydWN0IGRybV9jcnRjX2dl dF9zZXF1ZW5jZSB7CisJX191MzIgY3J0Y19pZDsJCS8qIHJlcXVlc3RlZCBjcnRjX2lkICovCisJ X191MzIgYWN0aXZlOwkJLyogcmV0dXJuOiBjcnRjIG91dHB1dCBpcyBhY3RpdmUgKi8KKwlfX3U2 NCBzZXF1ZW5jZTsJCS8qIHJldHVybjogbW9zdCByZWNlbnQgdmJsYW5rIHNlcXVlbmNlICovCisJ X19zNjQgc2VxdWVuY2VfbnM7CS8qIHJldHVybjogbW9zdCByZWNlbnQgdGltZSBvZiBmaXJzdCBw aXhlbCBvdXQgKi8KK307CisKKy8qIFF1ZXVlIGV2ZW50IHRvIGJlIGRlbGl2ZXJlZCBhdCBzcGVj aWZpZWQgc2VxdWVuY2UuIFRpbWUgc3RhbXAgbWFya3MKKyAqIHdoZW4gdGhlIGZpcnN0IHBpeGVs IG9mIHRoZSByZWZyZXNoIGN5Y2xlIGxlYXZlcyB0aGUgZGlzcGxheSBlbmdpbmUKKyAqIGZvciB0 aGUgZGlzcGxheQorICovCisjZGVmaW5lIERSTV9DUlRDX1NFUVVFTkNFX1JFTEFUSVZFCQkweDAw MDAwMDAxCS8qIHNlcXVlbmNlIGlzIHJlbGF0aXZlIHRvIGN1cnJlbnQgKi8KKyNkZWZpbmUgRFJN X0NSVENfU0VRVUVOQ0VfTkVYVF9PTl9NSVNTCQkweDAwMDAwMDAyCS8qIFVzZSBuZXh0IHNlcXVl bmNlIGlmIHdlJ3ZlIG1pc3NlZCAqLworCitzdHJ1Y3QgZHJtX2NydGNfcXVldWVfc2VxdWVuY2Ug eworCV9fdTMyIGNydGNfaWQ7CisJX191MzIgZmxhZ3M7CisJX191NjQgc2VxdWVuY2U7CQkvKiBv biBpbnB1dCwgdGFyZ2V0IHNlcXVlbmNlLiBvbiBvdXRwdXQsIGFjdHVhbCBzZXF1ZW5jZSAqLwor CV9fdTY0IHVzZXJfZGF0YTsJLyogdXNlciBkYXRhIHBhc3NlZCB0byBldmVudCAqLworfTsKKwor I2lmIGRlZmluZWQoX19jcGx1c3BsdXMpCit9CisjZW5kaWYKKworI2luY2x1ZGUgImRybV9tb2Rl LmgiCisKKyNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQorZXh0ZXJuICJDIiB7CisjZW5kaWYKKwor I2RlZmluZSBEUk1fSU9DVExfQkFTRQkJCSdkJworI2RlZmluZSBEUk1fSU8obnIpCQkJX0lPKERS TV9JT0NUTF9CQVNFLG5yKQorI2RlZmluZSBEUk1fSU9SKG5yLHR5cGUpCQlfSU9SKERSTV9JT0NU TF9CQVNFLG5yLHR5cGUpCisjZGVmaW5lIERSTV9JT1cobnIsdHlwZSkJCV9JT1coRFJNX0lPQ1RM X0JBU0UsbnIsdHlwZSkKKyNkZWZpbmUgRFJNX0lPV1IobnIsdHlwZSkJCV9JT1dSKERSTV9JT0NU TF9CQVNFLG5yLHR5cGUpCisKKyNkZWZpbmUgRFJNX0lPQ1RMX1ZFUlNJT04JCURSTV9JT1dSKDB4 MDAsIHN0cnVjdCBkcm1fdmVyc2lvbikKKyNkZWZpbmUgRFJNX0lPQ1RMX0dFVF9VTklRVUUJCURS TV9JT1dSKDB4MDEsIHN0cnVjdCBkcm1fdW5pcXVlKQorI2RlZmluZSBEUk1fSU9DVExfR0VUX01B R0lDCQlEUk1fSU9SKCAweDAyLCBzdHJ1Y3QgZHJtX2F1dGgpCisjZGVmaW5lIERSTV9JT0NUTF9J UlFfQlVTSUQJCURSTV9JT1dSKDB4MDMsIHN0cnVjdCBkcm1faXJxX2J1c2lkKQorI2RlZmluZSBE Uk1fSU9DVExfR0VUX01BUCAgICAgICAgICAgICAgIERSTV9JT1dSKDB4MDQsIHN0cnVjdCBkcm1f bWFwKQorI2RlZmluZSBEUk1fSU9DVExfR0VUX0NMSUVOVCAgICAgICAgICAgIERSTV9JT1dSKDB4 MDUsIHN0cnVjdCBkcm1fY2xpZW50KQorI2RlZmluZSBEUk1fSU9DVExfR0VUX1NUQVRTICAgICAg ICAgICAgIERSTV9JT1IoIDB4MDYsIHN0cnVjdCBkcm1fc3RhdHMpCisjZGVmaW5lIERSTV9JT0NU TF9TRVRfVkVSU0lPTgkJRFJNX0lPV1IoMHgwNywgc3RydWN0IGRybV9zZXRfdmVyc2lvbikKKyNk ZWZpbmUgRFJNX0lPQ1RMX01PREVTRVRfQ1RMICAgICAgICAgICBEUk1fSU9XKDB4MDgsIHN0cnVj dCBkcm1fbW9kZXNldF9jdGwpCisjZGVmaW5lIERSTV9JT0NUTF9HRU1fQ0xPU0UJCURSTV9JT1cg KDB4MDksIHN0cnVjdCBkcm1fZ2VtX2Nsb3NlKQorI2RlZmluZSBEUk1fSU9DVExfR0VNX0ZMSU5L CQlEUk1fSU9XUigweDBhLCBzdHJ1Y3QgZHJtX2dlbV9mbGluaykKKyNkZWZpbmUgRFJNX0lPQ1RM X0dFTV9PUEVOCQlEUk1fSU9XUigweDBiLCBzdHJ1Y3QgZHJtX2dlbV9vcGVuKQorI2RlZmluZSBE Uk1fSU9DVExfR0VUX0NBUAkJRFJNX0lPV1IoMHgwYywgc3RydWN0IGRybV9nZXRfY2FwKQorI2Rl ZmluZSBEUk1fSU9DVExfU0VUX0NMSUVOVF9DQVAJRFJNX0lPVyggMHgwZCwgc3RydWN0IGRybV9z ZXRfY2xpZW50X2NhcCkKKworI2RlZmluZSBEUk1fSU9DVExfU0VUX1VOSVFVRQkJRFJNX0lPVygg MHgxMCwgc3RydWN0IGRybV91bmlxdWUpCisjZGVmaW5lIERSTV9JT0NUTF9BVVRIX01BR0lDCQlE Uk1fSU9XKCAweDExLCBzdHJ1Y3QgZHJtX2F1dGgpCisjZGVmaW5lIERSTV9JT0NUTF9CTE9DSwkJ CURSTV9JT1dSKDB4MTIsIHN0cnVjdCBkcm1fYmxvY2spCisjZGVmaW5lIERSTV9JT0NUTF9VTkJM T0NLCQlEUk1fSU9XUigweDEzLCBzdHJ1Y3QgZHJtX2Jsb2NrKQorI2RlZmluZSBEUk1fSU9DVExf Q09OVFJPTAkJRFJNX0lPVyggMHgxNCwgc3RydWN0IGRybV9jb250cm9sKQorI2RlZmluZSBEUk1f SU9DVExfQUREX01BUAkJRFJNX0lPV1IoMHgxNSwgc3RydWN0IGRybV9tYXApCisjZGVmaW5lIERS TV9JT0NUTF9BRERfQlVGUwkJRFJNX0lPV1IoMHgxNiwgc3RydWN0IGRybV9idWZfZGVzYykKKyNk ZWZpbmUgRFJNX0lPQ1RMX01BUktfQlVGUwkJRFJNX0lPVyggMHgxNywgc3RydWN0IGRybV9idWZf ZGVzYykKKyNkZWZpbmUgRFJNX0lPQ1RMX0lORk9fQlVGUwkJRFJNX0lPV1IoMHgxOCwgc3RydWN0 IGRybV9idWZfaW5mbykKKyNkZWZpbmUgRFJNX0lPQ1RMX01BUF9CVUZTCQlEUk1fSU9XUigweDE5 LCBzdHJ1Y3QgZHJtX2J1Zl9tYXApCisjZGVmaW5lIERSTV9JT0NUTF9GUkVFX0JVRlMJCURSTV9J T1coIDB4MWEsIHN0cnVjdCBkcm1fYnVmX2ZyZWUpCisKKyNkZWZpbmUgRFJNX0lPQ1RMX1JNX01B UAkJRFJNX0lPVyggMHgxYiwgc3RydWN0IGRybV9tYXApCisKKyNkZWZpbmUgRFJNX0lPQ1RMX1NF VF9TQVJFQV9DVFgJCURSTV9JT1coIDB4MWMsIHN0cnVjdCBkcm1fY3R4X3ByaXZfbWFwKQorI2Rl ZmluZSBEUk1fSU9DVExfR0VUX1NBUkVBX0NUWCAJRFJNX0lPV1IoMHgxZCwgc3RydWN0IGRybV9j dHhfcHJpdl9tYXApCisKKyNkZWZpbmUgRFJNX0lPQ1RMX1NFVF9NQVNURVIgICAgICAgICAgICBE Uk1fSU8oMHgxZSkKKyNkZWZpbmUgRFJNX0lPQ1RMX0RST1BfTUFTVEVSICAgICAgICAgICBEUk1f SU8oMHgxZikKKworI2RlZmluZSBEUk1fSU9DVExfQUREX0NUWAkJRFJNX0lPV1IoMHgyMCwgc3Ry dWN0IGRybV9jdHgpCisjZGVmaW5lIERSTV9JT0NUTF9STV9DVFgJCURSTV9JT1dSKDB4MjEsIHN0 cnVjdCBkcm1fY3R4KQorI2RlZmluZSBEUk1fSU9DVExfTU9EX0NUWAkJRFJNX0lPVyggMHgyMiwg c3RydWN0IGRybV9jdHgpCisjZGVmaW5lIERSTV9JT0NUTF9HRVRfQ1RYCQlEUk1fSU9XUigweDIz LCBzdHJ1Y3QgZHJtX2N0eCkKKyNkZWZpbmUgRFJNX0lPQ1RMX1NXSVRDSF9DVFgJCURSTV9JT1co IDB4MjQsIHN0cnVjdCBkcm1fY3R4KQorI2RlZmluZSBEUk1fSU9DVExfTkVXX0NUWAkJRFJNX0lP VyggMHgyNSwgc3RydWN0IGRybV9jdHgpCisjZGVmaW5lIERSTV9JT0NUTF9SRVNfQ1RYCQlEUk1f SU9XUigweDI2LCBzdHJ1Y3QgZHJtX2N0eF9yZXMpCisjZGVmaW5lIERSTV9JT0NUTF9BRERfRFJB VwkJRFJNX0lPV1IoMHgyNywgc3RydWN0IGRybV9kcmF3KQorI2RlZmluZSBEUk1fSU9DVExfUk1f RFJBVwkJRFJNX0lPV1IoMHgyOCwgc3RydWN0IGRybV9kcmF3KQorI2RlZmluZSBEUk1fSU9DVExf RE1BCQkJRFJNX0lPV1IoMHgyOSwgc3RydWN0IGRybV9kbWEpCisjZGVmaW5lIERSTV9JT0NUTF9M T0NLCQkJRFJNX0lPVyggMHgyYSwgc3RydWN0IGRybV9sb2NrKQorI2RlZmluZSBEUk1fSU9DVExf VU5MT0NLCQlEUk1fSU9XKCAweDJiLCBzdHJ1Y3QgZHJtX2xvY2spCisjZGVmaW5lIERSTV9JT0NU TF9GSU5JU0gJCURSTV9JT1coIDB4MmMsIHN0cnVjdCBkcm1fbG9jaykKKworI2RlZmluZSBEUk1f SU9DVExfUFJJTUVfSEFORExFX1RPX0ZEICAgIERSTV9JT1dSKDB4MmQsIHN0cnVjdCBkcm1fcHJp bWVfaGFuZGxlKQorI2RlZmluZSBEUk1fSU9DVExfUFJJTUVfRkRfVE9fSEFORExFICAgIERSTV9J T1dSKDB4MmUsIHN0cnVjdCBkcm1fcHJpbWVfaGFuZGxlKQorCisjZGVmaW5lIERSTV9JT0NUTF9B R1BfQUNRVUlSRQkJRFJNX0lPKCAgMHgzMCkKKyNkZWZpbmUgRFJNX0lPQ1RMX0FHUF9SRUxFQVNF CQlEUk1fSU8oICAweDMxKQorI2RlZmluZSBEUk1fSU9DVExfQUdQX0VOQUJMRQkJRFJNX0lPVygg MHgzMiwgc3RydWN0IGRybV9hZ3BfbW9kZSkKKyNkZWZpbmUgRFJNX0lPQ1RMX0FHUF9JTkZPCQlE Uk1fSU9SKCAweDMzLCBzdHJ1Y3QgZHJtX2FncF9pbmZvKQorI2RlZmluZSBEUk1fSU9DVExfQUdQ X0FMTE9DCQlEUk1fSU9XUigweDM0LCBzdHJ1Y3QgZHJtX2FncF9idWZmZXIpCisjZGVmaW5lIERS TV9JT0NUTF9BR1BfRlJFRQkJRFJNX0lPVyggMHgzNSwgc3RydWN0IGRybV9hZ3BfYnVmZmVyKQor I2RlZmluZSBEUk1fSU9DVExfQUdQX0JJTkQJCURSTV9JT1coIDB4MzYsIHN0cnVjdCBkcm1fYWdw X2JpbmRpbmcpCisjZGVmaW5lIERSTV9JT0NUTF9BR1BfVU5CSU5ECQlEUk1fSU9XKCAweDM3LCBz dHJ1Y3QgZHJtX2FncF9iaW5kaW5nKQorCisjZGVmaW5lIERSTV9JT0NUTF9TR19BTExPQwkJRFJN X0lPV1IoMHgzOCwgc3RydWN0IGRybV9zY2F0dGVyX2dhdGhlcikKKyNkZWZpbmUgRFJNX0lPQ1RM X1NHX0ZSRUUJCURSTV9JT1coIDB4MzksIHN0cnVjdCBkcm1fc2NhdHRlcl9nYXRoZXIpCisKKyNk ZWZpbmUgRFJNX0lPQ1RMX1dBSVRfVkJMQU5LCQlEUk1fSU9XUigweDNhLCB1bmlvbiBkcm1fd2Fp dF92YmxhbmspCisKKyNkZWZpbmUgRFJNX0lPQ1RMX0NSVENfR0VUX1NFUVVFTkNFCURSTV9JT1dS KDB4M2IsIHN0cnVjdCBkcm1fY3J0Y19nZXRfc2VxdWVuY2UpCisjZGVmaW5lIERSTV9JT0NUTF9D UlRDX1FVRVVFX1NFUVVFTkNFCURSTV9JT1dSKDB4M2MsIHN0cnVjdCBkcm1fY3J0Y19xdWV1ZV9z ZXF1ZW5jZSkKKworI2RlZmluZSBEUk1fSU9DVExfVVBEQVRFX0RSQVcJCURSTV9JT1coMHgzZiwg c3RydWN0IGRybV91cGRhdGVfZHJhdykKKworI2RlZmluZSBEUk1fSU9DVExfTU9ERV9HRVRSRVNP VVJDRVMJRFJNX0lPV1IoMHhBMCwgc3RydWN0IGRybV9tb2RlX2NhcmRfcmVzKQorI2RlZmluZSBE Uk1fSU9DVExfTU9ERV9HRVRDUlRDCQlEUk1fSU9XUigweEExLCBzdHJ1Y3QgZHJtX21vZGVfY3J0 YykKKyNkZWZpbmUgRFJNX0lPQ1RMX01PREVfU0VUQ1JUQwkJRFJNX0lPV1IoMHhBMiwgc3RydWN0 IGRybV9tb2RlX2NydGMpCisjZGVmaW5lIERSTV9JT0NUTF9NT0RFX0NVUlNPUgkJRFJNX0lPV1Io MHhBMywgc3RydWN0IGRybV9tb2RlX2N1cnNvcikKKyNkZWZpbmUgRFJNX0lPQ1RMX01PREVfR0VU R0FNTUEJCURSTV9JT1dSKDB4QTQsIHN0cnVjdCBkcm1fbW9kZV9jcnRjX2x1dCkKKyNkZWZpbmUg RFJNX0lPQ1RMX01PREVfU0VUR0FNTUEJCURSTV9JT1dSKDB4QTUsIHN0cnVjdCBkcm1fbW9kZV9j cnRjX2x1dCkKKyNkZWZpbmUgRFJNX0lPQ1RMX01PREVfR0VURU5DT0RFUglEUk1fSU9XUigweEE2 LCBzdHJ1Y3QgZHJtX21vZGVfZ2V0X2VuY29kZXIpCisjZGVmaW5lIERSTV9JT0NUTF9NT0RFX0dF VENPTk5FQ1RPUglEUk1fSU9XUigweEE3LCBzdHJ1Y3QgZHJtX21vZGVfZ2V0X2Nvbm5lY3RvcikK KyNkZWZpbmUgRFJNX0lPQ1RMX01PREVfQVRUQUNITU9ERQlEUk1fSU9XUigweEE4LCBzdHJ1Y3Qg ZHJtX21vZGVfbW9kZV9jbWQpIC8qIGRlcHJlY2F0ZWQgKG5ldmVyIHdvcmtlZCkgKi8KKyNkZWZp bmUgRFJNX0lPQ1RMX01PREVfREVUQUNITU9ERQlEUk1fSU9XUigweEE5LCBzdHJ1Y3QgZHJtX21v ZGVfbW9kZV9jbWQpIC8qIGRlcHJlY2F0ZWQgKG5ldmVyIHdvcmtlZCkgKi8KKworI2RlZmluZSBE Uk1fSU9DVExfTU9ERV9HRVRQUk9QRVJUWQlEUk1fSU9XUigweEFBLCBzdHJ1Y3QgZHJtX21vZGVf Z2V0X3Byb3BlcnR5KQorI2RlZmluZSBEUk1fSU9DVExfTU9ERV9TRVRQUk9QRVJUWQlEUk1fSU9X UigweEFCLCBzdHJ1Y3QgZHJtX21vZGVfY29ubmVjdG9yX3NldF9wcm9wZXJ0eSkKKyNkZWZpbmUg RFJNX0lPQ1RMX01PREVfR0VUUFJPUEJMT0IJRFJNX0lPV1IoMHhBQywgc3RydWN0IGRybV9tb2Rl X2dldF9ibG9iKQorI2RlZmluZSBEUk1fSU9DVExfTU9ERV9HRVRGQgkJRFJNX0lPV1IoMHhBRCwg c3RydWN0IGRybV9tb2RlX2ZiX2NtZCkKKyNkZWZpbmUgRFJNX0lPQ1RMX01PREVfQURERkIJCURS TV9JT1dSKDB4QUUsIHN0cnVjdCBkcm1fbW9kZV9mYl9jbWQpCisjZGVmaW5lIERSTV9JT0NUTF9N T0RFX1JNRkIJCURSTV9JT1dSKDB4QUYsIHVuc2lnbmVkIGludCkKKyNkZWZpbmUgRFJNX0lPQ1RM X01PREVfUEFHRV9GTElQCURSTV9JT1dSKDB4QjAsIHN0cnVjdCBkcm1fbW9kZV9jcnRjX3BhZ2Vf ZmxpcCkKKyNkZWZpbmUgRFJNX0lPQ1RMX01PREVfRElSVFlGQgkJRFJNX0lPV1IoMHhCMSwgc3Ry dWN0IGRybV9tb2RlX2ZiX2RpcnR5X2NtZCkKKworI2RlZmluZSBEUk1fSU9DVExfTU9ERV9DUkVB VEVfRFVNQiBEUk1fSU9XUigweEIyLCBzdHJ1Y3QgZHJtX21vZGVfY3JlYXRlX2R1bWIpCisjZGVm aW5lIERSTV9JT0NUTF9NT0RFX01BUF9EVU1CICAgIERSTV9JT1dSKDB4QjMsIHN0cnVjdCBkcm1f bW9kZV9tYXBfZHVtYikKKyNkZWZpbmUgRFJNX0lPQ1RMX01PREVfREVTVFJPWV9EVU1CICAgIERS TV9JT1dSKDB4QjQsIHN0cnVjdCBkcm1fbW9kZV9kZXN0cm95X2R1bWIpCisjZGVmaW5lIERSTV9J T0NUTF9NT0RFX0dFVFBMQU5FUkVTT1VSQ0VTIERSTV9JT1dSKDB4QjUsIHN0cnVjdCBkcm1fbW9k ZV9nZXRfcGxhbmVfcmVzKQorI2RlZmluZSBEUk1fSU9DVExfTU9ERV9HRVRQTEFORQlEUk1fSU9X UigweEI2LCBzdHJ1Y3QgZHJtX21vZGVfZ2V0X3BsYW5lKQorI2RlZmluZSBEUk1fSU9DVExfTU9E RV9TRVRQTEFORQlEUk1fSU9XUigweEI3LCBzdHJ1Y3QgZHJtX21vZGVfc2V0X3BsYW5lKQorI2Rl ZmluZSBEUk1fSU9DVExfTU9ERV9BRERGQjIJCURSTV9JT1dSKDB4QjgsIHN0cnVjdCBkcm1fbW9k ZV9mYl9jbWQyKQorI2RlZmluZSBEUk1fSU9DVExfTU9ERV9PQkpfR0VUUFJPUEVSVElFUwlEUk1f SU9XUigweEI5LCBzdHJ1Y3QgZHJtX21vZGVfb2JqX2dldF9wcm9wZXJ0aWVzKQorI2RlZmluZSBE Uk1fSU9DVExfTU9ERV9PQkpfU0VUUFJPUEVSVFkJRFJNX0lPV1IoMHhCQSwgc3RydWN0IGRybV9t b2RlX29ial9zZXRfcHJvcGVydHkpCisjZGVmaW5lIERSTV9JT0NUTF9NT0RFX0NVUlNPUjIJCURS TV9JT1dSKDB4QkIsIHN0cnVjdCBkcm1fbW9kZV9jdXJzb3IyKQorI2RlZmluZSBEUk1fSU9DVExf TU9ERV9BVE9NSUMJCURSTV9JT1dSKDB4QkMsIHN0cnVjdCBkcm1fbW9kZV9hdG9taWMpCisjZGVm aW5lIERSTV9JT0NUTF9NT0RFX0NSRUFURVBST1BCTE9CCURSTV9JT1dSKDB4QkQsIHN0cnVjdCBk cm1fbW9kZV9jcmVhdGVfYmxvYikKKyNkZWZpbmUgRFJNX0lPQ1RMX01PREVfREVTVFJPWVBST1BC TE9CCURSTV9JT1dSKDB4QkUsIHN0cnVjdCBkcm1fbW9kZV9kZXN0cm95X2Jsb2IpCisKKyNkZWZp bmUgRFJNX0lPQ1RMX1NZTkNPQkpfQ1JFQVRFCURSTV9JT1dSKDB4QkYsIHN0cnVjdCBkcm1fc3lu Y29ial9jcmVhdGUpCisjZGVmaW5lIERSTV9JT0NUTF9TWU5DT0JKX0RFU1RST1kJRFJNX0lPV1Io MHhDMCwgc3RydWN0IGRybV9zeW5jb2JqX2Rlc3Ryb3kpCisjZGVmaW5lIERSTV9JT0NUTF9TWU5D T0JKX0hBTkRMRV9UT19GRAlEUk1fSU9XUigweEMxLCBzdHJ1Y3QgZHJtX3N5bmNvYmpfaGFuZGxl KQorI2RlZmluZSBEUk1fSU9DVExfU1lOQ09CSl9GRF9UT19IQU5ETEUJRFJNX0lPV1IoMHhDMiwg c3RydWN0IGRybV9zeW5jb2JqX2hhbmRsZSkKKyNkZWZpbmUgRFJNX0lPQ1RMX1NZTkNPQkpfV0FJ VAkJRFJNX0lPV1IoMHhDMywgc3RydWN0IGRybV9zeW5jb2JqX3dhaXQpCisjZGVmaW5lIERSTV9J T0NUTF9TWU5DT0JKX1JFU0VUCQlEUk1fSU9XUigweEM0LCBzdHJ1Y3QgZHJtX3N5bmNvYmpfYXJy YXkpCisjZGVmaW5lIERSTV9JT0NUTF9TWU5DT0JKX1NJR05BTAlEUk1fSU9XUigweEM1LCBzdHJ1 Y3QgZHJtX3N5bmNvYmpfYXJyYXkpCisKKyNkZWZpbmUgRFJNX0lPQ1RMX01PREVfQ1JFQVRFX0xF QVNFCURSTV9JT1dSKDB4QzYsIHN0cnVjdCBkcm1fbW9kZV9jcmVhdGVfbGVhc2UpCisjZGVmaW5l IERSTV9JT0NUTF9NT0RFX0xJU1RfTEVTU0VFUwlEUk1fSU9XUigweEM3LCBzdHJ1Y3QgZHJtX21v ZGVfbGlzdF9sZXNzZWVzKQorI2RlZmluZSBEUk1fSU9DVExfTU9ERV9HRVRfTEVBU0UJRFJNX0lP V1IoMHhDOCwgc3RydWN0IGRybV9tb2RlX2dldF9sZWFzZSkKKyNkZWZpbmUgRFJNX0lPQ1RMX01P REVfUkVWT0tFX0xFQVNFCURSTV9JT1dSKDB4QzksIHN0cnVjdCBkcm1fbW9kZV9yZXZva2VfbGVh c2UpCisKKy8qKgorICogRGV2aWNlIHNwZWNpZmljIGlvY3RscyBzaG91bGQgb25seSBiZSBpbiB0 aGVpciByZXNwZWN0aXZlIGhlYWRlcnMKKyAqIFRoZSBkZXZpY2Ugc3BlY2lmaWMgaW9jdGwgcmFu Z2UgaXMgZnJvbSAweDQwIHRvIDB4OWYuCisgKiBHZW5lcmljIElPQ1RMUyByZXN0YXJ0IGF0IDB4 QTAuCisgKgorICogXHNhIGRybUNvbW1hbmROb25lKCksIGRybUNvbW1hbmRSZWFkKCksIGRybUNv bW1hbmRXcml0ZSgpLCBhbmQKKyAqIGRybUNvbW1hbmRSZWFkV3JpdGUoKS4KKyAqLworI2RlZmlu ZSBEUk1fQ09NTUFORF9CQVNFICAgICAgICAgICAgICAgIDB4NDAKKyNkZWZpbmUgRFJNX0NPTU1B TkRfRU5ECQkJMHhBMAorCisvKioKKyAqIEhlYWRlciBmb3IgZXZlbnRzIHdyaXR0ZW4gYmFjayB0 byB1c2Vyc3BhY2Ugb24gdGhlIGRybSBmZC4gIFRoZQorICogdHlwZSBkZWZpbmVzIHRoZSB0eXBl IG9mIGV2ZW50LCB0aGUgbGVuZ3RoIHNwZWNpZmllcyB0aGUgdG90YWwKKyAqIGxlbmd0aCBvZiB0 aGUgZXZlbnQgKGluY2x1ZGluZyB0aGUgaGVhZGVyKSwgYW5kIHVzZXJfZGF0YSBpcworICogdHlw aWNhbGx5IGEgNjQgYml0IHZhbHVlIHBhc3NlZCB3aXRoIHRoZSBpb2N0bCB0aGF0IHRyaWdnZXJl ZCB0aGUKKyAqIGV2ZW50LiAgQSByZWFkIG9uIHRoZSBkcm0gZmQgd2lsbCBhbHdheXMgb25seSBy ZXR1cm4gY29tcGxldGUKKyAqIGV2ZW50cywgdGhhdCBpcywgaWYgZm9yIGV4YW1wbGUgdGhlIHJl YWQgYnVmZmVyIGlzIDEwMCBieXRlcywgYW5kCisgKiB0aGVyZSBhcmUgdHdvIDY0IGJ5dGUgZXZl bnRzIHBlbmRpbmcsIG9ubHkgb25lIHdpbGwgYmUgcmV0dXJuZWQuCisgKgorICogRXZlbnQgdHlw ZXMgMCAtIDB4N2ZmZmZmZmYgYXJlIGdlbmVyaWMgZHJtIGV2ZW50cywgMHg4MDAwMDAwMCBhbmQK KyAqIHVwIGFyZSBjaGlwc2V0IHNwZWNpZmljLgorICovCitzdHJ1Y3QgZHJtX2V2ZW50IHsKKwlf X3UzMiB0eXBlOworCV9fdTMyIGxlbmd0aDsKK307CisKKyNkZWZpbmUgRFJNX0VWRU5UX1ZCTEFO SyAweDAxCisjZGVmaW5lIERSTV9FVkVOVF9GTElQX0NPTVBMRVRFIDB4MDIKKyNkZWZpbmUgRFJN X0VWRU5UX0NSVENfU0VRVUVOQ0UJMHgwMworCitzdHJ1Y3QgZHJtX2V2ZW50X3ZibGFuayB7CisJ c3RydWN0IGRybV9ldmVudCBiYXNlOworCV9fdTY0IHVzZXJfZGF0YTsKKwlfX3UzMiB0dl9zZWM7 CisJX191MzIgdHZfdXNlYzsKKwlfX3UzMiBzZXF1ZW5jZTsKKwlfX3UzMiBjcnRjX2lkOyAvKiAw IG9uIG9sZGVyIGtlcm5lbHMgdGhhdCBkbyBub3Qgc3VwcG9ydCB0aGlzICovCit9OworCisvKiBF dmVudCBkZWxpdmVyZWQgYXQgc2VxdWVuY2UuIFRpbWUgc3RhbXAgbWFya3Mgd2hlbiB0aGUgZmly c3QgcGl4ZWwKKyAqIG9mIHRoZSByZWZyZXNoIGN5Y2xlIGxlYXZlcyB0aGUgZGlzcGxheSBlbmdp bmUgZm9yIHRoZSBkaXNwbGF5CisgKi8KK3N0cnVjdCBkcm1fZXZlbnRfY3J0Y19zZXF1ZW5jZSB7 CisJc3RydWN0IGRybV9ldmVudAliYXNlOworCV9fdTY0CQkJdXNlcl9kYXRhOworCV9fczY0CQkJ dGltZV9uczsKKwlfX3U2NAkJCXNlcXVlbmNlOworfTsKKworLyogdHlwZWRlZiBhcmVhICovCit0 eXBlZGVmIHN0cnVjdCBkcm1fY2xpcF9yZWN0IGRybV9jbGlwX3JlY3RfdDsKK3R5cGVkZWYgc3Ry dWN0IGRybV9kcmF3YWJsZV9pbmZvIGRybV9kcmF3YWJsZV9pbmZvX3Q7Cit0eXBlZGVmIHN0cnVj dCBkcm1fdGV4X3JlZ2lvbiBkcm1fdGV4X3JlZ2lvbl90OwordHlwZWRlZiBzdHJ1Y3QgZHJtX2h3 X2xvY2sgZHJtX2h3X2xvY2tfdDsKK3R5cGVkZWYgc3RydWN0IGRybV92ZXJzaW9uIGRybV92ZXJz aW9uX3Q7Cit0eXBlZGVmIHN0cnVjdCBkcm1fdW5pcXVlIGRybV91bmlxdWVfdDsKK3R5cGVkZWYg c3RydWN0IGRybV9saXN0IGRybV9saXN0X3Q7Cit0eXBlZGVmIHN0cnVjdCBkcm1fYmxvY2sgZHJt X2Jsb2NrX3Q7Cit0eXBlZGVmIHN0cnVjdCBkcm1fY29udHJvbCBkcm1fY29udHJvbF90OwordHlw ZWRlZiBlbnVtIGRybV9tYXBfdHlwZSBkcm1fbWFwX3R5cGVfdDsKK3R5cGVkZWYgZW51bSBkcm1f bWFwX2ZsYWdzIGRybV9tYXBfZmxhZ3NfdDsKK3R5cGVkZWYgc3RydWN0IGRybV9jdHhfcHJpdl9t YXAgZHJtX2N0eF9wcml2X21hcF90OwordHlwZWRlZiBzdHJ1Y3QgZHJtX21hcCBkcm1fbWFwX3Q7 Cit0eXBlZGVmIHN0cnVjdCBkcm1fY2xpZW50IGRybV9jbGllbnRfdDsKK3R5cGVkZWYgZW51bSBk cm1fc3RhdF90eXBlIGRybV9zdGF0X3R5cGVfdDsKK3R5cGVkZWYgc3RydWN0IGRybV9zdGF0cyBk cm1fc3RhdHNfdDsKK3R5cGVkZWYgZW51bSBkcm1fbG9ja19mbGFncyBkcm1fbG9ja19mbGFnc190 OwordHlwZWRlZiBzdHJ1Y3QgZHJtX2xvY2sgZHJtX2xvY2tfdDsKK3R5cGVkZWYgZW51bSBkcm1f ZG1hX2ZsYWdzIGRybV9kbWFfZmxhZ3NfdDsKK3R5cGVkZWYgc3RydWN0IGRybV9idWZfZGVzYyBk cm1fYnVmX2Rlc2NfdDsKK3R5cGVkZWYgc3RydWN0IGRybV9idWZfaW5mbyBkcm1fYnVmX2luZm9f dDsKK3R5cGVkZWYgc3RydWN0IGRybV9idWZfZnJlZSBkcm1fYnVmX2ZyZWVfdDsKK3R5cGVkZWYg c3RydWN0IGRybV9idWZfcHViIGRybV9idWZfcHViX3Q7Cit0eXBlZGVmIHN0cnVjdCBkcm1fYnVm X21hcCBkcm1fYnVmX21hcF90OwordHlwZWRlZiBzdHJ1Y3QgZHJtX2RtYSBkcm1fZG1hX3Q7Cit0 eXBlZGVmIHVuaW9uIGRybV93YWl0X3ZibGFuayBkcm1fd2FpdF92YmxhbmtfdDsKK3R5cGVkZWYg c3RydWN0IGRybV9hZ3BfbW9kZSBkcm1fYWdwX21vZGVfdDsKK3R5cGVkZWYgZW51bSBkcm1fY3R4 X2ZsYWdzIGRybV9jdHhfZmxhZ3NfdDsKK3R5cGVkZWYgc3RydWN0IGRybV9jdHggZHJtX2N0eF90 OwordHlwZWRlZiBzdHJ1Y3QgZHJtX2N0eF9yZXMgZHJtX2N0eF9yZXNfdDsKK3R5cGVkZWYgc3Ry dWN0IGRybV9kcmF3IGRybV9kcmF3X3Q7Cit0eXBlZGVmIHN0cnVjdCBkcm1fdXBkYXRlX2RyYXcg ZHJtX3VwZGF0ZV9kcmF3X3Q7Cit0eXBlZGVmIHN0cnVjdCBkcm1fYXV0aCBkcm1fYXV0aF90Owor dHlwZWRlZiBzdHJ1Y3QgZHJtX2lycV9idXNpZCBkcm1faXJxX2J1c2lkX3Q7Cit0eXBlZGVmIGVu dW0gZHJtX3ZibGFua19zZXFfdHlwZSBkcm1fdmJsYW5rX3NlcV90eXBlX3Q7CisKK3R5cGVkZWYg c3RydWN0IGRybV9hZ3BfYnVmZmVyIGRybV9hZ3BfYnVmZmVyX3Q7Cit0eXBlZGVmIHN0cnVjdCBk cm1fYWdwX2JpbmRpbmcgZHJtX2FncF9iaW5kaW5nX3Q7Cit0eXBlZGVmIHN0cnVjdCBkcm1fYWdw X2luZm8gZHJtX2FncF9pbmZvX3Q7Cit0eXBlZGVmIHN0cnVjdCBkcm1fc2NhdHRlcl9nYXRoZXIg ZHJtX3NjYXR0ZXJfZ2F0aGVyX3Q7Cit0eXBlZGVmIHN0cnVjdCBkcm1fc2V0X3ZlcnNpb24gZHJt X3NldF92ZXJzaW9uX3Q7CisKKyNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQorfQorI2VuZGlmCisK KyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0tdWFwaS9kcm1fZm91cmNjLmggYi9pbmNs dWRlL2RybS11YXBpL2RybV9mb3VyY2MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLjNhZDgzOGQzZjkzZgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvZHJtLXVh cGkvZHJtX2ZvdXJjYy5oCkBAIC0wLDAgKzEsNDEwIEBACisvKgorICogQ29weXJpZ2h0IDIwMTEg SW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBm cmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlz IHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdh cmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGlu Y2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBt b2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29y IHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdo b20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhl IGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNl IGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFn cmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0 aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURF RCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJ TVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1F UkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBO T05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVkEgTElOVVggU1lTVEVNUyBB TkQvT1IgSVRTIFNVUFBMSUVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgor ICogT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9S VCBPUiBPVEhFUldJU0UsCisgKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9O IFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKKyAqIE9USEVSIERFQUxJTkdTIElOIFRI RSBTT0ZUV0FSRS4KKyAqLworCisjaWZuZGVmIERSTV9GT1VSQ0NfSAorI2RlZmluZSBEUk1fRk9V UkNDX0gKKworI2luY2x1ZGUgImRybS5oIgorCisjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKK2V4 dGVybiAiQyIgeworI2VuZGlmCisKKyNkZWZpbmUgZm91cmNjX2NvZGUoYSwgYiwgYywgZCkgKChf X3UzMikoYSkgfCAoKF9fdTMyKShiKSA8PCA4KSB8IFwKKwkJCQkgKChfX3UzMikoYykgPDwgMTYp IHwgKChfX3UzMikoZCkgPDwgMjQpKQorCisjZGVmaW5lIERSTV9GT1JNQVRfQklHX0VORElBTiAo MTw8MzEpIC8qIGZvcm1hdCBpcyBiaWcgZW5kaWFuIGluc3RlYWQgb2YgbGl0dGxlIGVuZGlhbiAq LworCisvKiBjb2xvciBpbmRleCAqLworI2RlZmluZSBEUk1fRk9STUFUX0M4CQlmb3VyY2NfY29k ZSgnQycsICc4JywgJyAnLCAnICcpIC8qIFs3OjBdIEMgKi8KKworLyogOCBicHAgUmVkICovCisj ZGVmaW5lIERSTV9GT1JNQVRfUjgJCWZvdXJjY19jb2RlKCdSJywgJzgnLCAnICcsICcgJykgLyog Wzc6MF0gUiAqLworCisvKiAxNiBicHAgUmVkICovCisjZGVmaW5lIERSTV9GT1JNQVRfUjE2CQlm b3VyY2NfY29kZSgnUicsICcxJywgJzYnLCAnICcpIC8qIFsxNTowXSBSIGxpdHRsZSBlbmRpYW4g Ki8KKworLyogMTYgYnBwIFJHICovCisjZGVmaW5lIERSTV9GT1JNQVRfUkc4OAkJZm91cmNjX2Nv ZGUoJ1InLCAnRycsICc4JywgJzgnKSAvKiBbMTU6MF0gUjpHIDg6OCBsaXR0bGUgZW5kaWFuICov CisjZGVmaW5lIERSTV9GT1JNQVRfR1I4OAkJZm91cmNjX2NvZGUoJ0cnLCAnUicsICc4JywgJzgn KSAvKiBbMTU6MF0gRzpSIDg6OCBsaXR0bGUgZW5kaWFuICovCisKKy8qIDMyIGJwcCBSRyAqLwor I2RlZmluZSBEUk1fRk9STUFUX1JHMTYxNglmb3VyY2NfY29kZSgnUicsICdHJywgJzMnLCAnMicp IC8qIFszMTowXSBSOkcgMTY6MTYgbGl0dGxlIGVuZGlhbiAqLworI2RlZmluZSBEUk1fRk9STUFU X0dSMTYxNglmb3VyY2NfY29kZSgnRycsICdSJywgJzMnLCAnMicpIC8qIFszMTowXSBHOlIgMTY6 MTYgbGl0dGxlIGVuZGlhbiAqLworCisvKiA4IGJwcCBSR0IgKi8KKyNkZWZpbmUgRFJNX0ZPUk1B VF9SR0IzMzIJZm91cmNjX2NvZGUoJ1InLCAnRycsICdCJywgJzgnKSAvKiBbNzowXSBSOkc6QiAz OjM6MiAqLworI2RlZmluZSBEUk1fRk9STUFUX0JHUjIzMwlmb3VyY2NfY29kZSgnQicsICdHJywg J1InLCAnOCcpIC8qIFs3OjBdIEI6RzpSIDI6MzozICovCisKKy8qIDE2IGJwcCBSR0IgKi8KKyNk ZWZpbmUgRFJNX0ZPUk1BVF9YUkdCNDQ0NAlmb3VyY2NfY29kZSgnWCcsICdSJywgJzEnLCAnMicp IC8qIFsxNTowXSB4OlI6RzpCIDQ6NDo0OjQgbGl0dGxlIGVuZGlhbiAqLworI2RlZmluZSBEUk1f Rk9STUFUX1hCR1I0NDQ0CWZvdXJjY19jb2RlKCdYJywgJ0InLCAnMScsICcyJykgLyogWzE1OjBd IHg6QjpHOlIgNDo0OjQ6NCBsaXR0bGUgZW5kaWFuICovCisjZGVmaW5lIERSTV9GT1JNQVRfUkdC WDQ0NDQJZm91cmNjX2NvZGUoJ1InLCAnWCcsICcxJywgJzInKSAvKiBbMTU6MF0gUjpHOkI6eCA0 OjQ6NDo0IGxpdHRsZSBlbmRpYW4gKi8KKyNkZWZpbmUgRFJNX0ZPUk1BVF9CR1JYNDQ0NAlmb3Vy Y2NfY29kZSgnQicsICdYJywgJzEnLCAnMicpIC8qIFsxNTowXSBCOkc6Ujp4IDQ6NDo0OjQgbGl0 dGxlIGVuZGlhbiAqLworCisjZGVmaW5lIERSTV9GT1JNQVRfQVJHQjQ0NDQJZm91cmNjX2NvZGUo J0EnLCAnUicsICcxJywgJzInKSAvKiBbMTU6MF0gQTpSOkc6QiA0OjQ6NDo0IGxpdHRsZSBlbmRp YW4gKi8KKyNkZWZpbmUgRFJNX0ZPUk1BVF9BQkdSNDQ0NAlmb3VyY2NfY29kZSgnQScsICdCJywg JzEnLCAnMicpIC8qIFsxNTowXSBBOkI6RzpSIDQ6NDo0OjQgbGl0dGxlIGVuZGlhbiAqLworI2Rl ZmluZSBEUk1fRk9STUFUX1JHQkE0NDQ0CWZvdXJjY19jb2RlKCdSJywgJ0EnLCAnMScsICcyJykg LyogWzE1OjBdIFI6RzpCOkEgNDo0OjQ6NCBsaXR0bGUgZW5kaWFuICovCisjZGVmaW5lIERSTV9G T1JNQVRfQkdSQTQ0NDQJZm91cmNjX2NvZGUoJ0InLCAnQScsICcxJywgJzInKSAvKiBbMTU6MF0g QjpHOlI6QSA0OjQ6NDo0IGxpdHRsZSBlbmRpYW4gKi8KKworI2RlZmluZSBEUk1fRk9STUFUX1hS R0IxNTU1CWZvdXJjY19jb2RlKCdYJywgJ1InLCAnMScsICc1JykgLyogWzE1OjBdIHg6UjpHOkIg MTo1OjU6NSBsaXR0bGUgZW5kaWFuICovCisjZGVmaW5lIERSTV9GT1JNQVRfWEJHUjE1NTUJZm91 cmNjX2NvZGUoJ1gnLCAnQicsICcxJywgJzUnKSAvKiBbMTU6MF0geDpCOkc6UiAxOjU6NTo1IGxp dHRsZSBlbmRpYW4gKi8KKyNkZWZpbmUgRFJNX0ZPUk1BVF9SR0JYNTU1MQlmb3VyY2NfY29kZSgn UicsICdYJywgJzEnLCAnNScpIC8qIFsxNTowXSBSOkc6Qjp4IDU6NTo1OjEgbGl0dGxlIGVuZGlh biAqLworI2RlZmluZSBEUk1fRk9STUFUX0JHUlg1NTUxCWZvdXJjY19jb2RlKCdCJywgJ1gnLCAn MScsICc1JykgLyogWzE1OjBdIEI6RzpSOnggNTo1OjU6MSBsaXR0bGUgZW5kaWFuICovCisKKyNk ZWZpbmUgRFJNX0ZPUk1BVF9BUkdCMTU1NQlmb3VyY2NfY29kZSgnQScsICdSJywgJzEnLCAnNScp IC8qIFsxNTowXSBBOlI6RzpCIDE6NTo1OjUgbGl0dGxlIGVuZGlhbiAqLworI2RlZmluZSBEUk1f Rk9STUFUX0FCR1IxNTU1CWZvdXJjY19jb2RlKCdBJywgJ0InLCAnMScsICc1JykgLyogWzE1OjBd IEE6QjpHOlIgMTo1OjU6NSBsaXR0bGUgZW5kaWFuICovCisjZGVmaW5lIERSTV9GT1JNQVRfUkdC QTU1NTEJZm91cmNjX2NvZGUoJ1InLCAnQScsICcxJywgJzUnKSAvKiBbMTU6MF0gUjpHOkI6QSA1 OjU6NToxIGxpdHRsZSBlbmRpYW4gKi8KKyNkZWZpbmUgRFJNX0ZPUk1BVF9CR1JBNTU1MQlmb3Vy Y2NfY29kZSgnQicsICdBJywgJzEnLCAnNScpIC8qIFsxNTowXSBCOkc6UjpBIDU6NTo1OjEgbGl0 dGxlIGVuZGlhbiAqLworCisjZGVmaW5lIERSTV9GT1JNQVRfUkdCNTY1CWZvdXJjY19jb2RlKCdS JywgJ0cnLCAnMScsICc2JykgLyogWzE1OjBdIFI6RzpCIDU6Njo1IGxpdHRsZSBlbmRpYW4gKi8K KyNkZWZpbmUgRFJNX0ZPUk1BVF9CR1I1NjUJZm91cmNjX2NvZGUoJ0InLCAnRycsICcxJywgJzYn KSAvKiBbMTU6MF0gQjpHOlIgNTo2OjUgbGl0dGxlIGVuZGlhbiAqLworCisvKiAyNCBicHAgUkdC ICovCisjZGVmaW5lIERSTV9GT1JNQVRfUkdCODg4CWZvdXJjY19jb2RlKCdSJywgJ0cnLCAnMics ICc0JykgLyogWzIzOjBdIFI6RzpCIGxpdHRsZSBlbmRpYW4gKi8KKyNkZWZpbmUgRFJNX0ZPUk1B VF9CR1I4ODgJZm91cmNjX2NvZGUoJ0InLCAnRycsICcyJywgJzQnKSAvKiBbMjM6MF0gQjpHOlIg bGl0dGxlIGVuZGlhbiAqLworCisvKiAzMiBicHAgUkdCICovCisjZGVmaW5lIERSTV9GT1JNQVRf WFJHQjg4ODgJZm91cmNjX2NvZGUoJ1gnLCAnUicsICcyJywgJzQnKSAvKiBbMzE6MF0geDpSOkc6 QiA4Ojg6ODo4IGxpdHRsZSBlbmRpYW4gKi8KKyNkZWZpbmUgRFJNX0ZPUk1BVF9YQkdSODg4OAlm b3VyY2NfY29kZSgnWCcsICdCJywgJzInLCAnNCcpIC8qIFszMTowXSB4OkI6RzpSIDg6ODo4Ojgg bGl0dGxlIGVuZGlhbiAqLworI2RlZmluZSBEUk1fRk9STUFUX1JHQlg4ODg4CWZvdXJjY19jb2Rl KCdSJywgJ1gnLCAnMicsICc0JykgLyogWzMxOjBdIFI6RzpCOnggODo4Ojg6OCBsaXR0bGUgZW5k aWFuICovCisjZGVmaW5lIERSTV9GT1JNQVRfQkdSWDg4ODgJZm91cmNjX2NvZGUoJ0InLCAnWCcs ICcyJywgJzQnKSAvKiBbMzE6MF0gQjpHOlI6eCA4Ojg6ODo4IGxpdHRsZSBlbmRpYW4gKi8KKwor I2RlZmluZSBEUk1fRk9STUFUX0FSR0I4ODg4CWZvdXJjY19jb2RlKCdBJywgJ1InLCAnMicsICc0 JykgLyogWzMxOjBdIEE6UjpHOkIgODo4Ojg6OCBsaXR0bGUgZW5kaWFuICovCisjZGVmaW5lIERS TV9GT1JNQVRfQUJHUjg4ODgJZm91cmNjX2NvZGUoJ0EnLCAnQicsICcyJywgJzQnKSAvKiBbMzE6 MF0gQTpCOkc6UiA4Ojg6ODo4IGxpdHRsZSBlbmRpYW4gKi8KKyNkZWZpbmUgRFJNX0ZPUk1BVF9S R0JBODg4OAlmb3VyY2NfY29kZSgnUicsICdBJywgJzInLCAnNCcpIC8qIFszMTowXSBSOkc6QjpB IDg6ODo4OjggbGl0dGxlIGVuZGlhbiAqLworI2RlZmluZSBEUk1fRk9STUFUX0JHUkE4ODg4CWZv dXJjY19jb2RlKCdCJywgJ0EnLCAnMicsICc0JykgLyogWzMxOjBdIEI6RzpSOkEgODo4Ojg6OCBs aXR0bGUgZW5kaWFuICovCisKKyNkZWZpbmUgRFJNX0ZPUk1BVF9YUkdCMjEwMTAxMAlmb3VyY2Nf Y29kZSgnWCcsICdSJywgJzMnLCAnMCcpIC8qIFszMTowXSB4OlI6RzpCIDI6MTA6MTA6MTAgbGl0 dGxlIGVuZGlhbiAqLworI2RlZmluZSBEUk1fRk9STUFUX1hCR1IyMTAxMDEwCWZvdXJjY19jb2Rl KCdYJywgJ0InLCAnMycsICcwJykgLyogWzMxOjBdIHg6QjpHOlIgMjoxMDoxMDoxMCBsaXR0bGUg ZW5kaWFuICovCisjZGVmaW5lIERSTV9GT1JNQVRfUkdCWDEwMTAxMDIJZm91cmNjX2NvZGUoJ1In LCAnWCcsICczJywgJzAnKSAvKiBbMzE6MF0gUjpHOkI6eCAxMDoxMDoxMDoyIGxpdHRsZSBlbmRp YW4gKi8KKyNkZWZpbmUgRFJNX0ZPUk1BVF9CR1JYMTAxMDEwMglmb3VyY2NfY29kZSgnQicsICdY JywgJzMnLCAnMCcpIC8qIFszMTowXSBCOkc6Ujp4IDEwOjEwOjEwOjIgbGl0dGxlIGVuZGlhbiAq LworCisjZGVmaW5lIERSTV9GT1JNQVRfQVJHQjIxMDEwMTAJZm91cmNjX2NvZGUoJ0EnLCAnUics ICczJywgJzAnKSAvKiBbMzE6MF0gQTpSOkc6QiAyOjEwOjEwOjEwIGxpdHRsZSBlbmRpYW4gKi8K KyNkZWZpbmUgRFJNX0ZPUk1BVF9BQkdSMjEwMTAxMAlmb3VyY2NfY29kZSgnQScsICdCJywgJzMn LCAnMCcpIC8qIFszMTowXSBBOkI6RzpSIDI6MTA6MTA6MTAgbGl0dGxlIGVuZGlhbiAqLworI2Rl ZmluZSBEUk1fRk9STUFUX1JHQkExMDEwMTAyCWZvdXJjY19jb2RlKCdSJywgJ0EnLCAnMycsICcw JykgLyogWzMxOjBdIFI6RzpCOkEgMTA6MTA6MTA6MiBsaXR0bGUgZW5kaWFuICovCisjZGVmaW5l IERSTV9GT1JNQVRfQkdSQTEwMTAxMDIJZm91cmNjX2NvZGUoJ0InLCAnQScsICczJywgJzAnKSAv KiBbMzE6MF0gQjpHOlI6QSAxMDoxMDoxMDoyIGxpdHRsZSBlbmRpYW4gKi8KKworLyogcGFja2Vk IFlDYkNyICovCisjZGVmaW5lIERSTV9GT1JNQVRfWVVZVgkJZm91cmNjX2NvZGUoJ1knLCAnVScs ICdZJywgJ1YnKSAvKiBbMzE6MF0gQ3IwOlkxOkNiMDpZMCA4Ojg6ODo4IGxpdHRsZSBlbmRpYW4g Ki8KKyNkZWZpbmUgRFJNX0ZPUk1BVF9ZVllVCQlmb3VyY2NfY29kZSgnWScsICdWJywgJ1knLCAn VScpIC8qIFszMTowXSBDYjA6WTE6Q3IwOlkwIDg6ODo4OjggbGl0dGxlIGVuZGlhbiAqLworI2Rl ZmluZSBEUk1fRk9STUFUX1VZVlkJCWZvdXJjY19jb2RlKCdVJywgJ1knLCAnVicsICdZJykgLyog WzMxOjBdIFkxOkNyMDpZMDpDYjAgODo4Ojg6OCBsaXR0bGUgZW5kaWFuICovCisjZGVmaW5lIERS TV9GT1JNQVRfVllVWQkJZm91cmNjX2NvZGUoJ1YnLCAnWScsICdVJywgJ1knKSAvKiBbMzE6MF0g WTE6Q2IwOlkwOkNyMCA4Ojg6ODo4IGxpdHRsZSBlbmRpYW4gKi8KKworI2RlZmluZSBEUk1fRk9S TUFUX0FZVVYJCWZvdXJjY19jb2RlKCdBJywgJ1knLCAnVScsICdWJykgLyogWzMxOjBdIEE6WTpD YjpDciA4Ojg6ODo4IGxpdHRsZSBlbmRpYW4gKi8KKworLyoKKyAqIDIgcGxhbmUgUkdCICsgQQor ICogaW5kZXggMCA9IFJHQiBwbGFuZSwgc2FtZSBmb3JtYXQgYXMgdGhlIGNvcnJlc3BvbmRpbmcg bm9uIF9BOCBmb3JtYXQgaGFzCisgKiBpbmRleCAxID0gQSBwbGFuZSwgWzc6MF0gQQorICovCisj ZGVmaW5lIERSTV9GT1JNQVRfWFJHQjg4ODhfQTgJZm91cmNjX2NvZGUoJ1gnLCAnUicsICdBJywg JzgnKQorI2RlZmluZSBEUk1fRk9STUFUX1hCR1I4ODg4X0E4CWZvdXJjY19jb2RlKCdYJywgJ0In LCAnQScsICc4JykKKyNkZWZpbmUgRFJNX0ZPUk1BVF9SR0JYODg4OF9BOAlmb3VyY2NfY29kZSgn UicsICdYJywgJ0EnLCAnOCcpCisjZGVmaW5lIERSTV9GT1JNQVRfQkdSWDg4ODhfQTgJZm91cmNj X2NvZGUoJ0InLCAnWCcsICdBJywgJzgnKQorI2RlZmluZSBEUk1fRk9STUFUX1JHQjg4OF9BOAlm b3VyY2NfY29kZSgnUicsICc4JywgJ0EnLCAnOCcpCisjZGVmaW5lIERSTV9GT1JNQVRfQkdSODg4 X0E4CWZvdXJjY19jb2RlKCdCJywgJzgnLCAnQScsICc4JykKKyNkZWZpbmUgRFJNX0ZPUk1BVF9S R0I1NjVfQTgJZm91cmNjX2NvZGUoJ1InLCAnNScsICdBJywgJzgnKQorI2RlZmluZSBEUk1fRk9S TUFUX0JHUjU2NV9BOAlmb3VyY2NfY29kZSgnQicsICc1JywgJ0EnLCAnOCcpCisKKy8qCisgKiAy IHBsYW5lIFlDYkNyCisgKiBpbmRleCAwID0gWSBwbGFuZSwgWzc6MF0gWQorICogaW5kZXggMSA9 IENyOkNiIHBsYW5lLCBbMTU6MF0gQ3I6Q2IgbGl0dGxlIGVuZGlhbgorICogb3IKKyAqIGluZGV4 IDEgPSBDYjpDciBwbGFuZSwgWzE1OjBdIENiOkNyIGxpdHRsZSBlbmRpYW4KKyAqLworI2RlZmlu ZSBEUk1fRk9STUFUX05WMTIJCWZvdXJjY19jb2RlKCdOJywgJ1YnLCAnMScsICcyJykgLyogMngy IHN1YnNhbXBsZWQgQ3I6Q2IgcGxhbmUgKi8KKyNkZWZpbmUgRFJNX0ZPUk1BVF9OVjIxCQlmb3Vy Y2NfY29kZSgnTicsICdWJywgJzInLCAnMScpIC8qIDJ4MiBzdWJzYW1wbGVkIENiOkNyIHBsYW5l ICovCisjZGVmaW5lIERSTV9GT1JNQVRfTlYxNgkJZm91cmNjX2NvZGUoJ04nLCAnVicsICcxJywg JzYnKSAvKiAyeDEgc3Vic2FtcGxlZCBDcjpDYiBwbGFuZSAqLworI2RlZmluZSBEUk1fRk9STUFU X05WNjEJCWZvdXJjY19jb2RlKCdOJywgJ1YnLCAnNicsICcxJykgLyogMngxIHN1YnNhbXBsZWQg Q2I6Q3IgcGxhbmUgKi8KKyNkZWZpbmUgRFJNX0ZPUk1BVF9OVjI0CQlmb3VyY2NfY29kZSgnTics ICdWJywgJzInLCAnNCcpIC8qIG5vbi1zdWJzYW1wbGVkIENyOkNiIHBsYW5lICovCisjZGVmaW5l IERSTV9GT1JNQVRfTlY0MgkJZm91cmNjX2NvZGUoJ04nLCAnVicsICc0JywgJzInKSAvKiBub24t c3Vic2FtcGxlZCBDYjpDciBwbGFuZSAqLworCisvKgorICogMyBwbGFuZSBZQ2JDcgorICogaW5k ZXggMDogWSBwbGFuZSwgWzc6MF0gWQorICogaW5kZXggMTogQ2IgcGxhbmUsIFs3OjBdIENiCisg KiBpbmRleCAyOiBDciBwbGFuZSwgWzc6MF0gQ3IKKyAqIG9yCisgKiBpbmRleCAxOiBDciBwbGFu ZSwgWzc6MF0gQ3IKKyAqIGluZGV4IDI6IENiIHBsYW5lLCBbNzowXSBDYgorICovCisjZGVmaW5l IERSTV9GT1JNQVRfWVVWNDEwCWZvdXJjY19jb2RlKCdZJywgJ1UnLCAnVicsICc5JykgLyogNHg0 IHN1YnNhbXBsZWQgQ2IgKDEpIGFuZCBDciAoMikgcGxhbmVzICovCisjZGVmaW5lIERSTV9GT1JN QVRfWVZVNDEwCWZvdXJjY19jb2RlKCdZJywgJ1YnLCAnVScsICc5JykgLyogNHg0IHN1YnNhbXBs ZWQgQ3IgKDEpIGFuZCBDYiAoMikgcGxhbmVzICovCisjZGVmaW5lIERSTV9GT1JNQVRfWVVWNDEx CWZvdXJjY19jb2RlKCdZJywgJ1UnLCAnMScsICcxJykgLyogNHgxIHN1YnNhbXBsZWQgQ2IgKDEp IGFuZCBDciAoMikgcGxhbmVzICovCisjZGVmaW5lIERSTV9GT1JNQVRfWVZVNDExCWZvdXJjY19j b2RlKCdZJywgJ1YnLCAnMScsICcxJykgLyogNHgxIHN1YnNhbXBsZWQgQ3IgKDEpIGFuZCBDYiAo MikgcGxhbmVzICovCisjZGVmaW5lIERSTV9GT1JNQVRfWVVWNDIwCWZvdXJjY19jb2RlKCdZJywg J1UnLCAnMScsICcyJykgLyogMngyIHN1YnNhbXBsZWQgQ2IgKDEpIGFuZCBDciAoMikgcGxhbmVz ICovCisjZGVmaW5lIERSTV9GT1JNQVRfWVZVNDIwCWZvdXJjY19jb2RlKCdZJywgJ1YnLCAnMScs ICcyJykgLyogMngyIHN1YnNhbXBsZWQgQ3IgKDEpIGFuZCBDYiAoMikgcGxhbmVzICovCisjZGVm aW5lIERSTV9GT1JNQVRfWVVWNDIyCWZvdXJjY19jb2RlKCdZJywgJ1UnLCAnMScsICc2JykgLyog MngxIHN1YnNhbXBsZWQgQ2IgKDEpIGFuZCBDciAoMikgcGxhbmVzICovCisjZGVmaW5lIERSTV9G T1JNQVRfWVZVNDIyCWZvdXJjY19jb2RlKCdZJywgJ1YnLCAnMScsICc2JykgLyogMngxIHN1YnNh bXBsZWQgQ3IgKDEpIGFuZCBDYiAoMikgcGxhbmVzICovCisjZGVmaW5lIERSTV9GT1JNQVRfWVVW NDQ0CWZvdXJjY19jb2RlKCdZJywgJ1UnLCAnMicsICc0JykgLyogbm9uLXN1YnNhbXBsZWQgQ2Ig KDEpIGFuZCBDciAoMikgcGxhbmVzICovCisjZGVmaW5lIERSTV9GT1JNQVRfWVZVNDQ0CWZvdXJj Y19jb2RlKCdZJywgJ1YnLCAnMicsICc0JykgLyogbm9uLXN1YnNhbXBsZWQgQ3IgKDEpIGFuZCBD YiAoMikgcGxhbmVzICovCisKKworLyoKKyAqIEZvcm1hdCBNb2RpZmllcnM6CisgKgorICogRm9y bWF0IG1vZGlmaWVycyBkZXNjcmliZSwgdHlwaWNhbGx5LCBhIHJlLW9yZGVyaW5nIG9yIG1vZGlm aWNhdGlvbgorICogb2YgdGhlIGRhdGEgaW4gYSBwbGFuZSBvZiBhbiBGQi4gIFRoaXMgY2FuIGJl IHVzZWQgdG8gZXhwcmVzcyB0aWxlZC8KKyAqIHN3aXp6bGVkIGZvcm1hdHMsIG9yIGNvbXByZXNz aW9uLCBvciBhIGNvbWJpbmF0aW9uIG9mIHRoZSB0d28uCisgKgorICogVGhlIHVwcGVyIDggYml0 cyBvZiB0aGUgZm9ybWF0IG1vZGlmaWVyIGFyZSBhIHZlbmRvci1pZCBhcyBhc3NpZ25lZAorICog YmVsb3cuICBUaGUgbG93ZXIgNTYgYml0cyBhcmUgYXNzaWduZWQgYXMgdmVuZG9yIHNlZXMgZml0 LgorICovCisKKy8qIFZlbmRvciBJZHM6ICovCisjZGVmaW5lIERSTV9GT1JNQVRfTU9EX05PTkUg ICAgICAgICAgIDAKKyNkZWZpbmUgRFJNX0ZPUk1BVF9NT0RfVkVORE9SX05PTkUgICAgMAorI2Rl ZmluZSBEUk1fRk9STUFUX01PRF9WRU5ET1JfSU5URUwgICAweDAxCisjZGVmaW5lIERSTV9GT1JN QVRfTU9EX1ZFTkRPUl9BTUQgICAgIDB4MDIKKyNkZWZpbmUgRFJNX0ZPUk1BVF9NT0RfVkVORE9S X05WICAgICAgMHgwMworI2RlZmluZSBEUk1fRk9STUFUX01PRF9WRU5ET1JfU0FNU1VORyAweDA0 CisjZGVmaW5lIERSTV9GT1JNQVRfTU9EX1ZFTkRPUl9RQ09NICAgIDB4MDUKKyNkZWZpbmUgRFJN X0ZPUk1BVF9NT0RfVkVORE9SX1ZJVkFOVEUgMHgwNgorI2RlZmluZSBEUk1fRk9STUFUX01PRF9W RU5ET1JfQlJPQURDT00gMHgwNworLyogYWRkIG1vcmUgdG8gdGhlIGVuZCBhcyBuZWVkZWQgKi8K KworI2RlZmluZSBEUk1fRk9STUFUX1JFU0VSVkVECSAgICAgICgoMVVMTCA8PCA1NikgLSAxKQor CisjZGVmaW5lIGZvdXJjY19tb2RfY29kZSh2ZW5kb3IsIHZhbCkgXAorCSgoKChfX3U2NClEUk1f Rk9STUFUX01PRF9WRU5ET1JfIyMgdmVuZG9yKSA8PCA1NikgfCAodmFsICYgMHgwMGZmZmZmZmZm ZmZmZmZmVUxMKSkKKworLyoKKyAqIEZvcm1hdCBNb2RpZmllciB0b2tlbnM6CisgKgorICogV2hl biBhZGRpbmcgYSBuZXcgdG9rZW4gcGxlYXNlIGRvY3VtZW50IHRoZSBsYXlvdXQgd2l0aCBhIGNv ZGUgY29tbWVudCwKKyAqIHNpbWlsYXIgdG8gdGhlIGZvdXJjYyBjb2RlcyBhYm92ZS4gZHJtX2Zv dXJjYy5oIGlzIGNvbnNpZGVyZWQgdGhlCisgKiBhdXRob3JpdGF0aXZlIHNvdXJjZSBmb3IgYWxs IG9mIHRoZXNlLgorICovCisKKy8qCisgKiBJbnZhbGlkIE1vZGlmaWVyCisgKgorICogVGhpcyBt b2RpZmllciBjYW4gYmUgdXNlZCBhcyBhIHNlbnRpbmVsIHRvIHRlcm1pbmF0ZSB0aGUgZm9ybWF0 IG1vZGlmaWVycworICogbGlzdCwgb3IgdG8gaW5pdGlhbGl6ZSBhIHZhcmlhYmxlIHdpdGggYW4g aW52YWxpZCBtb2RpZmllci4gSXQgbWlnaHQgYWxzbyBiZQorICogdXNlZCB0byByZXBvcnQgYW4g ZXJyb3IgYmFjayB0byB1c2Vyc3BhY2UgZm9yIGNlcnRhaW4gQVBJcy4KKyAqLworI2RlZmluZSBE Uk1fRk9STUFUX01PRF9JTlZBTElECWZvdXJjY19tb2RfY29kZShOT05FLCBEUk1fRk9STUFUX1JF U0VSVkVEKQorCisvKgorICogTGluZWFyIExheW91dAorICoKKyAqIEp1c3QgcGxhaW4gbGluZWFy IGxheW91dC4gTm90ZSB0aGF0IHRoaXMgaXMgZGlmZmVyZW50IGZyb20gbm8gc3BlY2lmeWluZyBh bnkKKyAqIG1vZGlmaWVyIChlLmcuIG5vdCBzZXR0aW5nIERSTV9NT0RFX0ZCX01PRElGSUVSUyBp biB0aGUgRFJNX0FEREZCMiBpb2N0bCksCisgKiB3aGljaCB0ZWxscyB0aGUgZHJpdmVyIHRvIGFs c28gdGFrZSBkcml2ZXItaW50ZXJuYWwgaW5mb3JtYXRpb24gaW50byBhY2NvdW50CisgKiBhbmQg c28gbWlnaHQgYWN0dWFsbHkgcmVzdWx0IGluIGEgdGlsZWQgZnJhbWVidWZmZXIuCisgKi8KKyNk ZWZpbmUgRFJNX0ZPUk1BVF9NT0RfTElORUFSCWZvdXJjY19tb2RfY29kZShOT05FLCAwKQorCisv KiBJbnRlbCBmcmFtZWJ1ZmZlciBtb2RpZmllcnMgKi8KKworLyoKKyAqIEludGVsIFgtdGlsaW5n IGxheW91dAorICoKKyAqIFRoaXMgaXMgYSB0aWxlZCBsYXlvdXQgdXNpbmcgNEtiIHRpbGVzIChl eGNlcHQgb24gZ2VuMiB3aGVyZSB0aGUgdGlsZXMgMktiKQorICogaW4gcm93LW1ham9yIGxheW91 dC4gV2l0aGluIHRoZSB0aWxlIGJ5dGVzIGFyZSBsYWlkIG91dCByb3ctbWFqb3IsIHdpdGgKKyAq IGEgcGxhdGZvcm0tZGVwZW5kZW50IHN0cmlkZS4gT24gdG9wIG9mIHRoYXQgdGhlIG1lbW9yeSBj YW4gYXBwbHkKKyAqIHBsYXRmb3JtLWRlcGVuZGluZyBzd2l6emxpbmcgb2Ygc29tZSBoaWdoZXIg YWRkcmVzcyBiaXRzIGludG8gYml0Ni4KKyAqCisgKiBUaGlzIGZvcm1hdCBpcyBoaWdobHkgcGxh dGZvcm1zIHNwZWNpZmljIGFuZCBub3QgdXNlZnVsIGZvciBjcm9zcy1kcml2ZXIKKyAqIHNoYXJp bmcuIEl0IGV4aXN0cyBzaW5jZSBvbiBhIGdpdmVuIHBsYXRmb3JtIGl0IGRvZXMgdW5pcXVlbHkg aWRlbnRpZnkgdGhlCisgKiBsYXlvdXQgaW4gYSBzaW1wbGUgd2F5IGZvciBpOTE1LXNwZWNpZmlj IHVzZXJzcGFjZS4KKyAqLworI2RlZmluZSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRAlmb3VyY2Nf bW9kX2NvZGUoSU5URUwsIDEpCisKKy8qCisgKiBJbnRlbCBZLXRpbGluZyBsYXlvdXQKKyAqCisg KiBUaGlzIGlzIGEgdGlsZWQgbGF5b3V0IHVzaW5nIDRLYiB0aWxlcyAoZXhjZXB0IG9uIGdlbjIg d2hlcmUgdGhlIHRpbGVzIDJLYikKKyAqIGluIHJvdy1tYWpvciBsYXlvdXQuIFdpdGhpbiB0aGUg dGlsZSBieXRlcyBhcmUgbGFpZCBvdXQgaW4gT1dPUkQgKDE2IGJ5dGVzKQorICogY2h1bmtzIGNv bHVtbi1tYWpvciwgd2l0aCBhIHBsYXRmb3JtLWRlcGVuZGVudCBoZWlnaHQuIE9uIHRvcCBvZiB0 aGF0IHRoZQorICogbWVtb3J5IGNhbiBhcHBseSBwbGF0Zm9ybS1kZXBlbmRpbmcgc3dpenpsaW5n IG9mIHNvbWUgaGlnaGVyIGFkZHJlc3MgYml0cworICogaW50byBiaXQ2LgorICoKKyAqIFRoaXMg Zm9ybWF0IGlzIGhpZ2hseSBwbGF0Zm9ybXMgc3BlY2lmaWMgYW5kIG5vdCB1c2VmdWwgZm9yIGNy b3NzLWRyaXZlcgorICogc2hhcmluZy4gSXQgZXhpc3RzIHNpbmNlIG9uIGEgZ2l2ZW4gcGxhdGZv cm0gaXQgZG9lcyB1bmlxdWVseSBpZGVudGlmeSB0aGUKKyAqIGxheW91dCBpbiBhIHNpbXBsZSB3 YXkgZm9yIGk5MTUtc3BlY2lmaWMgdXNlcnNwYWNlLgorICovCisjZGVmaW5lIEk5MTVfRk9STUFU X01PRF9ZX1RJTEVECWZvdXJjY19tb2RfY29kZShJTlRFTCwgMikKKworLyoKKyAqIEludGVsIFlm LXRpbGluZyBsYXlvdXQKKyAqCisgKiBUaGlzIGlzIGEgdGlsZWQgbGF5b3V0IHVzaW5nIDRLYiB0 aWxlcyBpbiByb3ctbWFqb3IgbGF5b3V0LgorICogV2l0aGluIHRoZSB0aWxlIHBpeGVscyBhcmUg bGFpZCBvdXQgaW4gMTYgMjU2IGJ5dGUgdW5pdHMgLyBzdWItdGlsZXMgd2hpY2gKKyAqIGFyZSBh cnJhbmdlZCBpbiBmb3VyIGdyb3VwcyAodHdvIHdpZGUsIHR3byBoaWdoKSB3aXRoIGNvbHVtbi1t YWpvciBsYXlvdXQuCisgKiBFYWNoIGdyb3VwIHRoZXJlZm9yZSBjb25zaXRzIG91dCBvZiBmb3Vy IDI1NiBieXRlIHVuaXRzLCB3aGljaCBhcmUgYWxzbyBsYWlkCisgKiBvdXQgYXMgMngyIGNvbHVt bi1tYWpvci4KKyAqIDI1NiBieXRlIHVuaXRzIGFyZSBtYWRlIG91dCBvZiBmb3VyIDY0IGJ5dGUg YmxvY2tzIG9mIHBpeGVscywgcHJvZHVjaW5nCisgKiBlaXRoZXIgYSBzcXVhcmUgYmxvY2sgb3Ig YSAyOjEgdW5pdC4KKyAqIDY0IGJ5dGUgYmxvY2tzIG9mIHBpeGVscyBjb250YWluIGZvdXIgcGl4 ZWwgcm93cyBvZiAxNiBieXRlcywgd2hlcmUgdGhlIHdpZHRoCisgKiBpbiBwaXhlbCBkZXBlbmRz IG9uIHRoZSBwaXhlbCBkZXB0aC4KKyAqLworI2RlZmluZSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElM RUQgZm91cmNjX21vZF9jb2RlKElOVEVMLCAzKQorCisvKgorICogSW50ZWwgY29sb3IgY29udHJv bCBzdXJmYWNlIChDQ1MpIGZvciByZW5kZXIgY29tcHJlc3Npb24KKyAqCisgKiBUaGUgZnJhbWVi dWZmZXIgZm9ybWF0IG11c3QgYmUgb25lIG9mIHRoZSA4Ojg6ODo4IFJHQiBmb3JtYXRzLgorICog VGhlIG1haW4gc3VyZmFjZSB3aWxsIGJlIHBsYW5lIGluZGV4IDAgYW5kIG11c3QgYmUgWS9ZZi10 aWxlZCwKKyAqIHRoZSBDQ1Mgd2lsbCBiZSBwbGFuZSBpbmRleCAxLgorICoKKyAqIEVhY2ggQ0NT IHRpbGUgbWF0Y2hlcyBhIDEwMjR4NTEyIHBpeGVsIGFyZWEgb2YgdGhlIG1haW4gc3VyZmFjZS4K KyAqIFRvIG1hdGNoIGNlcnRhaW4gYXNwZWN0cyBvZiB0aGUgM0QgaGFyZHdhcmUgdGhlIENDUyBp cworICogY29uc2lkZXJlZCB0byBiZSBtYWRlIHVwIG9mIG5vcm1hbCAxMjhCeDMyIFkgdGlsZXMs IFRodXMKKyAqIHRoZSBDQ1MgcGl0Y2ggbXVzdCBiZSBzcGVjaWZpZWQgaW4gbXVsdGlwbGVzIG9m IDEyOCBieXRlcy4KKyAqCisgKiBJbiByZWFsaXR5IHRoZSBDQ1MgdGlsZSBhcHBlYXJzIHRvIGJl IGEgNjRCeDY0IFkgdGlsZSwgY29tcG9zZWQKKyAqIG9mIFFXT1JEICg4IGJ5dGVzKSBjaHVua3Mg aW5zdGVhZCBvZiBPV09SRCAoMTYgYnl0ZXMpIGNodW5rcy4KKyAqIEJ1dCB0aGF0IGZhY3QgaXMg bm90IHJlbGV2YW50IHVubGVzcyB0aGUgbWVtb3J5IGlzIGFjY2Vzc2VkCisgKiBkaXJlY3RseS4K KyAqLworI2RlZmluZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9DQ1MJZm91cmNjX21vZF9jb2Rl KElOVEVMLCA0KQorI2RlZmluZSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRURfQ0NTCWZvdXJjY19t b2RfY29kZShJTlRFTCwgNSkKKworLyoKKyAqIFRpbGVkLCBOVjEyTVQsIGdyb3VwZWQgaW4gNjQg KHBpeGVscykgeCAzMiAobGluZXMpIC1zaXplZCBtYWNyb2Jsb2NrcworICoKKyAqIE1hY3JvYmxv Y2tzIGFyZSBsYWlkIGluIGEgWi1zaGFwZSwgYW5kIGVhY2ggcGl4ZWwgZGF0YSBpcyBmb2xsb3dp bmcgdGhlCisgKiBzdGFuZGFyZCBOVjEyIHN0eWxlLgorICogQXMgZm9yIE5WMTIsIGFuIGltYWdl IGlzIHRoZSByZXN1bHQgb2YgdHdvIGZyYW1lIGJ1ZmZlcnM6IG9uZSBmb3IgWSwKKyAqIG9uZSBm b3IgdGhlIGludGVybGVhdmVkIENiL0NyIGNvbXBvbmVudHMgKDEvMiB0aGUgaGVpZ2h0IG9mIHRo ZSBZIGJ1ZmZlcikuCisgKiBBbGlnbm1lbnQgcmVxdWlyZW1lbnRzIGFyZSAoZm9yIGVhY2ggYnVm ZmVyKToKKyAqIC0gbXVsdGlwbGUgb2YgMTI4IHBpeGVscyBmb3IgdGhlIHdpZHRoCisgKiAtIG11 bHRpcGxlIG9mICAzMiBwaXhlbHMgZm9yIHRoZSBoZWlnaHQKKyAqCisgKiBGb3IgbW9yZSBpbmZv cm1hdGlvbjogc2VlIGh0dHBzOi8vbGludXh0di5vcmcvZG93bmxvYWRzL3Y0bC1kdmItYXBpcy9y ZTMyLmh0bWwKKyAqLworI2RlZmluZSBEUk1fRk9STUFUX01PRF9TQU1TVU5HXzY0XzMyX1RJTEUJ Zm91cmNjX21vZF9jb2RlKFNBTVNVTkcsIDEpCisKKy8qIFZpdmFudGUgZnJhbWVidWZmZXIgbW9k aWZpZXJzICovCisKKy8qCisgKiBWaXZhbnRlIDR4NCB0aWxpbmcgbGF5b3V0CisgKgorICogVGhp cyBpcyBhIHNpbXBsZSB0aWxlZCBsYXlvdXQgdXNpbmcgdGlsZXMgb2YgNHg0IHBpeGVscyBpbiBh IHJvdy1tYWpvcgorICogbGF5b3V0LgorICovCisjZGVmaW5lIERSTV9GT1JNQVRfTU9EX1ZJVkFO VEVfVElMRUQJCWZvdXJjY19tb2RfY29kZShWSVZBTlRFLCAxKQorCisvKgorICogVml2YW50ZSA2 NHg2NCBzdXBlci10aWxpbmcgbGF5b3V0CisgKgorICogVGhpcyBpcyBhIHRpbGVkIGxheW91dCB1 c2luZyA2NHg2NCBwaXhlbCBzdXBlci10aWxlcywgd2hlcmUgZWFjaCBzdXBlci10aWxlCisgKiBj b250YWlucyA4eDQgZ3JvdXBzIG9mIDJ4NCB0aWxlcyBvZiA0eDQgcGl4ZWxzIChsaWtlIGFib3Zl KSBlYWNoLCBhbGwgaW4gcm93LQorICogbWFqb3IgbGF5b3V0LgorICoKKyAqIEZvciBtb3JlIGlu Zm9ybWF0aW9uOiBzZWUKKyAqIGh0dHBzOi8vZ2l0aHViLmNvbS9ldG5hdml2L2V0bmFfdml2L2Js b2IvbWFzdGVyL2RvYy9oYXJkd2FyZS5tZCN0ZXh0dXJlLXRpbGluZworICovCisjZGVmaW5lIERS TV9GT1JNQVRfTU9EX1ZJVkFOVEVfU1VQRVJfVElMRUQJZm91cmNjX21vZF9jb2RlKFZJVkFOVEUs IDIpCisKKy8qCisgKiBWaXZhbnRlIDR4NCB0aWxpbmcgbGF5b3V0IGZvciBkdWFsLXBpcGUKKyAq CisgKiBTYW1lIGFzIHRoZSA0eDQgdGlsaW5nIGxheW91dCwgZXhjZXB0IGV2ZXJ5IHNlY29uZCA0 eDQgcGl4ZWwgdGlsZSBzdGFydHMgYXQgYQorICogZGlmZmVyZW50IGJhc2UgYWRkcmVzcy4gT2Zm c2V0cyBmcm9tIHRoZSBiYXNlIGFkZHJlc3NlcyBhcmUgdGhlcmVmb3JlIGhhbHZlZAorICogY29t cGFyZWQgdG8gdGhlIG5vbi1zcGxpdCB0aWxlZCBsYXlvdXQuCisgKi8KKyNkZWZpbmUgRFJNX0ZP Uk1BVF9NT0RfVklWQU5URV9TUExJVF9USUxFRAlmb3VyY2NfbW9kX2NvZGUoVklWQU5URSwgMykK KworLyoKKyAqIFZpdmFudGUgNjR4NjQgc3VwZXItdGlsaW5nIGxheW91dCBmb3IgZHVhbC1waXBl CisgKgorICogU2FtZSBhcyB0aGUgNjR4NjQgc3VwZXItdGlsaW5nIGxheW91dCwgZXhjZXB0IGV2 ZXJ5IHNlY29uZCA0eDQgcGl4ZWwgdGlsZQorICogc3RhcnRzIGF0IGEgZGlmZmVyZW50IGJhc2Ug YWRkcmVzcy4gT2Zmc2V0cyBmcm9tIHRoZSBiYXNlIGFkZHJlc3NlcyBhcmUKKyAqIHRoZXJlZm9y ZSBoYWx2ZWQgY29tcGFyZWQgdG8gdGhlIG5vbi1zcGxpdCBzdXBlci10aWxlZCBsYXlvdXQuCisg Ki8KKyNkZWZpbmUgRFJNX0ZPUk1BVF9NT0RfVklWQU5URV9TUExJVF9TVVBFUl9USUxFRCBmb3Vy Y2NfbW9kX2NvZGUoVklWQU5URSwgNCkKKworLyogTlZJRElBIFRlZ3JhIGZyYW1lIGJ1ZmZlciBt b2RpZmllcnMgKi8KKworLyoKKyAqIFNvbWUgbW9kaWZpZXJzIHRha2UgcGFyYW1ldGVycywgZm9y IGV4YW1wbGUgdGhlIG51bWJlciBvZiB2ZXJ0aWNhbCBHT0JzIGluCisgKiBhIGJsb2NrLiBSZXNl cnZlIHRoZSBsb3dlciAzMiBiaXRzIGZvciBwYXJhbWV0ZXJzCisgKi8KKyNkZWZpbmUgX19mb3Vy Y2NfbW9kX3RlZ3JhX21vZGVfc2hpZnQgMzIKKyNkZWZpbmUgZm91cmNjX21vZF90ZWdyYV9jb2Rl KHZhbCwgcGFyYW1zKSBcCisJZm91cmNjX21vZF9jb2RlKE5WLCAoKCgoX191NjQpdmFsKSA8PCBf X2ZvdXJjY19tb2RfdGVncmFfbW9kZV9zaGlmdCkgfCBwYXJhbXMpKQorI2RlZmluZSBmb3VyY2Nf bW9kX3RlZ3JhX21vZChtKSBcCisJKG0gJiB+KCgxVUxMIDw8IF9fZm91cmNjX21vZF90ZWdyYV9t b2RlX3NoaWZ0KSAtIDEpKQorI2RlZmluZSBmb3VyY2NfbW9kX3RlZ3JhX3BhcmFtKG0pIFwKKwko bSAmICgoMVVMTCA8PCBfX2ZvdXJjY19tb2RfdGVncmFfbW9kZV9zaGlmdCkgLSAxKSkKKworLyoK KyAqIFRlZ3JhIFRpbGVkIExheW91dCwgdXNlZCBieSBUZWdyYSAyLCAzIGFuZCA0LgorICoKKyAq IFBpeGVscyBhcmUgYXJyYW5nZWQgaW4gc2ltcGxlIHRpbGVzIG9mIDE2IHggMTYgYnl0ZXMuCisg Ki8KKyNkZWZpbmUgTlZfRk9STUFUX01PRF9URUdSQV9USUxFRCBmb3VyY2NfbW9kX3RlZ3JhX2Nv ZGUoMSwgMCkKKworLyoKKyAqIFRlZ3JhIDE2QngyIEJsb2NrIExpbmVhciBsYXlvdXQsIHVzZWQg YnkgVEsxL1RYMQorICoKKyAqIFBpeGVscyBhcmUgYXJyYW5nZWQgaW4gNjR4OCBHcm91cHMgT2Yg Qnl0ZXMgKEdPQnMpLiBHT0JzIGFyZSB0aGVuIHN0YWNrZWQKKyAqIHZlcnRpY2FsbHkgYnkgYSBw b3dlciBvZiAyICgxIHRvIDMyIEdPQnMpIHRvIGZvcm0gYSBibG9jay4KKyAqCisgKiBXaXRoaW4g YSBHT0IsIGRhdGEgaXMgb3JkZXJlZCBhcyAxNkIgeCAyIGxpbmVzIHNlY3RvcnMgbGFpZCBpbiBa LXNoYXBlLgorICoKKyAqIFBhcmFtZXRlciAndicgaXMgdGhlIGxvZzIgZW5jb2Rpbmcgb2YgdGhl IG51bWJlciBvZiBHT0JzIHN0YWNrZWQgdmVydGljYWxseS4KKyAqIFZhbGlkIHZhbHVlcyBhcmU6 CisgKgorICogMCA9PSBPTkVfR09CCisgKiAxID09IFRXT19HT0JTCisgKiAyID09IEZPVVJfR09C UworICogMyA9PSBFSUdIVF9HT0JTCisgKiA0ID09IFNJWFRFRU5fR09CUworICogNSA9PSBUSElS VFlUV09fR09CUworICoKKyAqIENoYXB0ZXIgMjAgIlBpeGVsIE1lbW9yeSBGb3JtYXRzIiBvZiB0 aGUgVGVncmEgWDEgVFJNIGRlc2NyaWJlcyB0aGlzIGZvcm1hdAorICogaW4gZnVsbCBkZXRhaWwu CisgKi8KKyNkZWZpbmUgTlZfRk9STUFUX01PRF9URUdSQV8xNkJYMl9CTE9DSyh2KSBmb3VyY2Nf bW9kX3RlZ3JhX2NvZGUoMiwgdikKKworLyoKKyAqIEJyb2FkY29tIFZDNCAiVCIgZm9ybWF0Cisg KgorICogVGhpcyBpcyB0aGUgcHJpbWFyeSBsYXlvdXQgdGhhdCB0aGUgVjNEIEdQVSBjYW4gdGV4 dHVyZSBmcm9tIChpdAorICogY2FuJ3QgZG8gbGluZWFyKS4gIFRoZSBUIGZvcm1hdCBoYXM6Cisg KgorICogLSA2NGIgdXRpbGVzIG9mIHBpeGVscyBpbiBhIHJhc3Rlci1vcmRlciBncmlkIGFjY29y ZGluZyB0byBjcHAuICBJdCdzIDR4NAorICogICBwaXhlbHMgYXQgMzIgYml0IGRlcHRoLgorICoK KyAqIC0gMWsgc3VidGlsZXMgbWFkZSBvZiBhIDR4NCByYXN0ZXItb3JkZXIgZ3JpZCBvZiA2NGIg dXRpbGVzIChzbyB1c3VhbGx5CisgKiAgIDE2eDE2IHBpeGVscykuCisgKgorICogLSA0ayB0aWxl cyBtYWRlIG9mIGEgMngyIGdyaWQgb2YgMWsgc3VidGlsZXMgKHNvIHVzdWFsbHkgMzJ4MzIgcGl4 ZWxzKS4gIE9uCisgKiAgIGV2ZW4gNGsgdGlsZSByb3dzLCB0aGV5J3JlIGFycmFuZ2VkIGFzIChC TCwgVEwsIFRSLCBCUiksIGFuZCBvbiBvZGQgcm93cworICogICB0aGV5J3JlIChUUiwgQlIsIEJM LCBUTCksIHdoZXJlIGJvdHRvbSBsZWZ0IGlzIHN0YXJ0IG9mIG1lbW9yeS4KKyAqCisgKiAtIGFu IGltYWdlIG1hZGUgb2YgNGsgdGlsZXMgaW4gcm93cyBlaXRoZXIgbGVmdC10by1yaWdodCAoZXZl biByb3dzIG9mIDRrCisgKiAgIHRpbGVzKSBvciByaWdodC10by1sZWZ0IChvZGQgcm93cyBvZiA0 ayB0aWxlcykuCisgKi8KKyNkZWZpbmUgRFJNX0ZPUk1BVF9NT0RfQlJPQURDT01fVkM0X1RfVElM RUQgZm91cmNjX21vZF9jb2RlKEJST0FEQ09NLCAxKQorCisjaWYgZGVmaW5lZChfX2NwbHVzcGx1 cykKK30KKyNlbmRpZgorCisjZW5kaWYgLyogRFJNX0ZPVVJDQ19IICovCmRpZmYgLS1naXQgYS9p bmNsdWRlL2RybS11YXBpL2RybV9tb2RlLmggYi9pbmNsdWRlL2RybS11YXBpL2RybV9tb2RlLmgK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41NTk3YTg3MTU0ZTUKLS0t IC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2RybS11YXBpL2RybV9tb2RlLmgKQEAgLTAsMCArMSw4 NTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDcgRGF2ZSBBaXJsaWUgPGFpcmxpZWRAbGlu dXguaWU+CisgKiBDb3B5cmlnaHQgKGMpIDIwMDcgSmFrb2IgQm9ybmVjcmFudHogPHdhbGxicmFr ZXJAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChjKSAyMDA4IFJlZCBIYXQgSW5jLgorICogQ29w eXJpZ2h0IChjKSAyMDA3LTIwMDggVHVuZ3N0ZW4gR3JhcGhpY3MsIEluYy4sIENlZGFyIFBhcmss IFRYLiwgVVNBCisgKiBDb3B5cmlnaHQgKGMpIDIwMDctMjAwOCBJbnRlbCBDb3Jwb3JhdGlvbgor ICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBh bnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29j aWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBp biB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGlt aXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxp c2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhl IFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJl IGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlv bnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lv biBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRp YWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9W SURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisg KiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9G IE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFO RCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQVVUSE9SUyBPUiBD T1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhF UgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBP UiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJ VEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBT T0ZUV0FSRS4KKyAqLworCisjaWZuZGVmIF9EUk1fTU9ERV9ICisjZGVmaW5lIF9EUk1fTU9ERV9I CisKKyNpbmNsdWRlICJkcm0uaCIKKworI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpCitleHRlcm4g IkMiIHsKKyNlbmRpZgorCisjZGVmaW5lIERSTV9ESVNQTEFZX0lORk9fTEVOCTMyCisjZGVmaW5l IERSTV9DT05ORUNUT1JfTkFNRV9MRU4JMzIKKyNkZWZpbmUgRFJNX0RJU1BMQVlfTU9ERV9MRU4J MzIKKyNkZWZpbmUgRFJNX1BST1BfTkFNRV9MRU4JMzIKKworI2RlZmluZSBEUk1fTU9ERV9UWVBF X0JVSUxUSU4JKDE8PDApCisjZGVmaW5lIERSTV9NT0RFX1RZUEVfQ0xPQ0tfQwkoKDE8PDEpIHwg RFJNX01PREVfVFlQRV9CVUlMVElOKQorI2RlZmluZSBEUk1fTU9ERV9UWVBFX0NSVENfQwkoKDE8 PDIpIHwgRFJNX01PREVfVFlQRV9CVUlMVElOKQorI2RlZmluZSBEUk1fTU9ERV9UWVBFX1BSRUZF UlJFRAkoMTw8MykKKyNkZWZpbmUgRFJNX01PREVfVFlQRV9ERUZBVUxUCSgxPDw0KQorI2RlZmlu ZSBEUk1fTU9ERV9UWVBFX1VTRVJERUYJKDE8PDUpCisjZGVmaW5lIERSTV9NT0RFX1RZUEVfRFJJ VkVSCSgxPDw2KQorCisvKiBWaWRlbyBtb2RlIGZsYWdzICovCisvKiBiaXQgY29tcGF0aWJsZSB3 aXRoIHRoZSB4cmFuZHIgUlJfIGRlZmluaXRpb25zIChiaXRzIDAtMTMpCisgKgorICogQUJJIHdh cm5pbmc6IEV4aXN0aW5nIHVzZXJzcGFjZSByZWFsbHkgZXhwZWN0cworICogdGhlIG1vZGUgZmxh Z3MgdG8gbWF0Y2ggdGhlIHhyYW5kciBkZWZpbml0aW9ucy4gQW55CisgKiBjaGFuZ2VzIHRoYXQg ZG9uJ3QgbWF0Y2ggdGhlIHhyYW5kciBkZWZpbml0aW9ucyB3aWxsCisgKiBsaWtlbHkgbmVlZCBh IG5ldyBjbGllbnQgY2FwIG9yIHNvbWUgb3RoZXIgbWVjaGFuaXNtCisgKiB0byBhdm9pZCBicmVh a2luZyBleGlzdGluZyB1c2Vyc3BhY2UuIFRoaXMgaW5jbHVkZXMKKyAqIGFsbG9jYXRpbmcgbmV3 IGZsYWdzIGluIHRoZSBwcmV2aW91c2x5IHVudXNlZCBiaXRzIQorICovCisjZGVmaW5lIERSTV9N T0RFX0ZMQUdfUEhTWU5DCQkJKDE8PDApCisjZGVmaW5lIERSTV9NT0RFX0ZMQUdfTkhTWU5DCQkJ KDE8PDEpCisjZGVmaW5lIERSTV9NT0RFX0ZMQUdfUFZTWU5DCQkJKDE8PDIpCisjZGVmaW5lIERS TV9NT0RFX0ZMQUdfTlZTWU5DCQkJKDE8PDMpCisjZGVmaW5lIERSTV9NT0RFX0ZMQUdfSU5URVJM QUNFCQkJKDE8PDQpCisjZGVmaW5lIERSTV9NT0RFX0ZMQUdfREJMU0NBTgkJCSgxPDw1KQorI2Rl ZmluZSBEUk1fTU9ERV9GTEFHX0NTWU5DCQkJKDE8PDYpCisjZGVmaW5lIERSTV9NT0RFX0ZMQUdf UENTWU5DCQkJKDE8PDcpCisjZGVmaW5lIERSTV9NT0RFX0ZMQUdfTkNTWU5DCQkJKDE8PDgpCisj ZGVmaW5lIERSTV9NT0RFX0ZMQUdfSFNLRVcJCQkoMTw8OSkgLyogaHNrZXcgcHJvdmlkZWQgKi8K KyNkZWZpbmUgRFJNX01PREVfRkxBR19CQ0FTVAkJCSgxPDwxMCkKKyNkZWZpbmUgRFJNX01PREVf RkxBR19QSVhNVVgJCQkoMTw8MTEpCisjZGVmaW5lIERSTV9NT0RFX0ZMQUdfREJMQ0xLCQkJKDE8 PDEyKQorI2RlZmluZSBEUk1fTU9ERV9GTEFHX0NMS0RJVjIJCQkoMTw8MTMpCisgLyoKKyAgKiBX aGVuIGFkZGluZyBhIG5ldyBzdGVyZW8gbW9kZSBkb24ndCBmb3JnZXQgdG8gYWRqdXN0IERSTV9N T0RFX0ZMQUdTXzNEX01BWAorICAqIChkZWZpbmUgbm90IGV4cG9zZWQgdG8gdXNlciBzcGFjZSku CisgICovCisjZGVmaW5lIERSTV9NT0RFX0ZMQUdfM0RfTUFTSwkJCSgweDFmPDwxNCkKKyNkZWZp bmUgIERSTV9NT0RFX0ZMQUdfM0RfTk9ORQkJKDA8PDE0KQorI2RlZmluZSAgRFJNX01PREVfRkxB R18zRF9GUkFNRV9QQUNLSU5HCQkoMTw8MTQpCisjZGVmaW5lICBEUk1fTU9ERV9GTEFHXzNEX0ZJ RUxEX0FMVEVSTkFUSVZFCSgyPDwxNCkKKyNkZWZpbmUgIERSTV9NT0RFX0ZMQUdfM0RfTElORV9B TFRFUk5BVElWRQkoMzw8MTQpCisjZGVmaW5lICBEUk1fTU9ERV9GTEFHXzNEX1NJREVfQllfU0lE RV9GVUxMCSg0PDwxNCkKKyNkZWZpbmUgIERSTV9NT0RFX0ZMQUdfM0RfTF9ERVBUSAkJKDU8PDE0 KQorI2RlZmluZSAgRFJNX01PREVfRkxBR18zRF9MX0RFUFRIX0dGWF9HRlhfREVQVEgJKDY8PDE0 KQorI2RlZmluZSAgRFJNX01PREVfRkxBR18zRF9UT1BfQU5EX0JPVFRPTQkoNzw8MTQpCisjZGVm aW5lICBEUk1fTU9ERV9GTEFHXzNEX1NJREVfQllfU0lERV9IQUxGCSg4PDwxNCkKKworLyogUGlj dHVyZSBhc3BlY3QgcmF0aW8gb3B0aW9ucyAqLworI2RlZmluZSBEUk1fTU9ERV9QSUNUVVJFX0FT UEVDVF9OT05FCQkwCisjZGVmaW5lIERSTV9NT0RFX1BJQ1RVUkVfQVNQRUNUXzRfMwkJMQorI2Rl ZmluZSBEUk1fTU9ERV9QSUNUVVJFX0FTUEVDVF8xNl85CQkyCisKKy8qIEFzcGVjdCByYXRpbyBm bGFnIGJpdG1hc2sgKDQgYml0cyAyMjoxOSkgKi8KKyNkZWZpbmUgRFJNX01PREVfRkxBR19QSUNf QVJfTUFTSwkJKDB4MEY8PDE5KQorI2RlZmluZSAgRFJNX01PREVfRkxBR19QSUNfQVJfTk9ORSBc CisJCQkoRFJNX01PREVfUElDVFVSRV9BU1BFQ1RfTk9ORTw8MTkpCisjZGVmaW5lICBEUk1fTU9E RV9GTEFHX1BJQ19BUl80XzMgXAorCQkJKERSTV9NT0RFX1BJQ1RVUkVfQVNQRUNUXzRfMzw8MTkp CisjZGVmaW5lICBEUk1fTU9ERV9GTEFHX1BJQ19BUl8xNl85IFwKKwkJCShEUk1fTU9ERV9QSUNU VVJFX0FTUEVDVF8xNl85PDwxOSkKKworLyogRFBNUyBmbGFncyAqLworLyogYml0IGNvbXBhdGli bGUgd2l0aCB0aGUgeG9yZyBkZWZpbml0aW9ucy4gKi8KKyNkZWZpbmUgRFJNX01PREVfRFBNU19P TgkwCisjZGVmaW5lIERSTV9NT0RFX0RQTVNfU1RBTkRCWQkxCisjZGVmaW5lIERSTV9NT0RFX0RQ TVNfU1VTUEVORAkyCisjZGVmaW5lIERSTV9NT0RFX0RQTVNfT0ZGCTMKKworLyogU2NhbGluZyBt b2RlIG9wdGlvbnMgKi8KKyNkZWZpbmUgRFJNX01PREVfU0NBTEVfTk9ORQkJMCAvKiBVbm1vZGlm aWVkIHRpbWluZyAoZGlzcGxheSBvcgorCQkJCQkgICAgIHNvZnR3YXJlIGNhbiBzdGlsbCBzY2Fs ZSkgKi8KKyNkZWZpbmUgRFJNX01PREVfU0NBTEVfRlVMTFNDUkVFTgkxIC8qIEZ1bGwgc2NyZWVu LCBpZ25vcmUgYXNwZWN0ICovCisjZGVmaW5lIERSTV9NT0RFX1NDQUxFX0NFTlRFUgkJMiAvKiBD ZW50ZXJlZCwgbm8gc2NhbGluZyAqLworI2RlZmluZSBEUk1fTU9ERV9TQ0FMRV9BU1BFQ1QJCTMg LyogRnVsbCBzY3JlZW4sIHByZXNlcnZlIGFzcGVjdCAqLworCisvKiBEaXRoZXJpbmcgbW9kZSBv cHRpb25zICovCisjZGVmaW5lIERSTV9NT0RFX0RJVEhFUklOR19PRkYJMAorI2RlZmluZSBEUk1f TU9ERV9ESVRIRVJJTkdfT04JMQorI2RlZmluZSBEUk1fTU9ERV9ESVRIRVJJTkdfQVVUTyAyCisK Ky8qIERpcnR5IGluZm8gb3B0aW9ucyAqLworI2RlZmluZSBEUk1fTU9ERV9ESVJUWV9PRkYgICAg ICAwCisjZGVmaW5lIERSTV9NT0RFX0RJUlRZX09OICAgICAgIDEKKyNkZWZpbmUgRFJNX01PREVf RElSVFlfQU5OT1RBVEUgMgorCisvKiBMaW5rIFN0YXR1cyBvcHRpb25zICovCisjZGVmaW5lIERS TV9NT0RFX0xJTktfU1RBVFVTX0dPT0QJMAorI2RlZmluZSBEUk1fTU9ERV9MSU5LX1NUQVRVU19C QUQJMQorCisvKgorICogRFJNX01PREVfUk9UQVRFXzxkZWdyZWVzPgorICoKKyAqIFNpZ25hbHMg dGhhdCBhIGRybSBwbGFuZSBpcyBiZWVuIHJvdGF0ZWQgPGRlZ3JlZXM+IGRlZ3JlZXMgaW4gY291 bnRlcgorICogY2xvY2t3aXNlIGRpcmVjdGlvbi4KKyAqCisgKiBUaGlzIGRlZmluZSBpcyBwcm92 aWRlZCBhcyBhIGNvbnZlbmllbmNlLCBsb29raW5nIHVwIHRoZSBwcm9wZXJ0eSBpZAorICogdXNp bmcgdGhlIG5hbWUtPnByb3AgaWQgbG9va3VwIGlzIHRoZSBwcmVmZXJyZWQgbWV0aG9kLgorICov CisjZGVmaW5lIERSTV9NT0RFX1JPVEFURV8wICAgICAgICgxPDwwKQorI2RlZmluZSBEUk1fTU9E RV9ST1RBVEVfOTAgICAgICAoMTw8MSkKKyNkZWZpbmUgRFJNX01PREVfUk9UQVRFXzE4MCAgICAg KDE8PDIpCisjZGVmaW5lIERSTV9NT0RFX1JPVEFURV8yNzAgICAgICgxPDwzKQorCisvKgorICog RFJNX01PREVfUk9UQVRFX01BU0sKKyAqCisgKiBCaXRtYXNrIHVzZWQgdG8gbG9vayBmb3IgZHJt IHBsYW5lIHJvdGF0aW9ucy4KKyAqLworI2RlZmluZSBEUk1fTU9ERV9ST1RBVEVfTUFTSyAoXAor CQlEUk1fTU9ERV9ST1RBVEVfMCAgfCBcCisJCURSTV9NT0RFX1JPVEFURV85MCAgfCBcCisJCURS TV9NT0RFX1JPVEFURV8xODAgfCBcCisJCURSTV9NT0RFX1JPVEFURV8yNzApCisKKy8qCisgKiBE Uk1fTU9ERV9SRUZMRUNUXzxheGlzPgorICoKKyAqIFNpZ25hbHMgdGhhdCB0aGUgY29udGVudHMg b2YgYSBkcm0gcGxhbmUgaXMgcmVmbGVjdGVkIGluIHRoZSA8YXhpcz4gYXhpcywKKyAqIGluIHRo ZSBzYW1lIHdheSBhcyBtaXJyb3JpbmcuCisgKgorICogVGhpcyBkZWZpbmUgaXMgcHJvdmlkZWQg YXMgYSBjb252ZW5pZW5jZSwgbG9va2luZyB1cCB0aGUgcHJvcGVydHkgaWQKKyAqIHVzaW5nIHRo ZSBuYW1lLT5wcm9wIGlkIGxvb2t1cCBpcyB0aGUgcHJlZmVycmVkIG1ldGhvZC4KKyAqLworI2Rl ZmluZSBEUk1fTU9ERV9SRUZMRUNUX1ggICAgICAoMTw8NCkKKyNkZWZpbmUgRFJNX01PREVfUkVG TEVDVF9ZICAgICAgKDE8PDUpCisKKy8qCisgKiBEUk1fTU9ERV9SRUZMRUNUX01BU0sKKyAqCisg KiBCaXRtYXNrIHVzZWQgdG8gbG9vayBmb3IgZHJtIHBsYW5lIHJlZmxlY3Rpb25zLgorICovCisj ZGVmaW5lIERSTV9NT0RFX1JFRkxFQ1RfTUFTSyAoXAorCQlEUk1fTU9ERV9SRUZMRUNUX1ggfCBc CisJCURSTV9NT0RFX1JFRkxFQ1RfWSkKKworCitzdHJ1Y3QgZHJtX21vZGVfbW9kZWluZm8gewor CV9fdTMyIGNsb2NrOworCV9fdTE2IGhkaXNwbGF5OworCV9fdTE2IGhzeW5jX3N0YXJ0OworCV9f dTE2IGhzeW5jX2VuZDsKKwlfX3UxNiBodG90YWw7CisJX191MTYgaHNrZXc7CisJX191MTYgdmRp c3BsYXk7CisJX191MTYgdnN5bmNfc3RhcnQ7CisJX191MTYgdnN5bmNfZW5kOworCV9fdTE2IHZ0 b3RhbDsKKwlfX3UxNiB2c2NhbjsKKworCV9fdTMyIHZyZWZyZXNoOworCisJX191MzIgZmxhZ3M7 CisJX191MzIgdHlwZTsKKwljaGFyIG5hbWVbRFJNX0RJU1BMQVlfTU9ERV9MRU5dOworfTsKKwor c3RydWN0IGRybV9tb2RlX2NhcmRfcmVzIHsKKwlfX3U2NCBmYl9pZF9wdHI7CisJX191NjQgY3J0 Y19pZF9wdHI7CisJX191NjQgY29ubmVjdG9yX2lkX3B0cjsKKwlfX3U2NCBlbmNvZGVyX2lkX3B0 cjsKKwlfX3UzMiBjb3VudF9mYnM7CisJX191MzIgY291bnRfY3J0Y3M7CisJX191MzIgY291bnRf Y29ubmVjdG9yczsKKwlfX3UzMiBjb3VudF9lbmNvZGVyczsKKwlfX3UzMiBtaW5fd2lkdGg7CisJ X191MzIgbWF4X3dpZHRoOworCV9fdTMyIG1pbl9oZWlnaHQ7CisJX191MzIgbWF4X2hlaWdodDsK K307CisKK3N0cnVjdCBkcm1fbW9kZV9jcnRjIHsKKwlfX3U2NCBzZXRfY29ubmVjdG9yc19wdHI7 CisJX191MzIgY291bnRfY29ubmVjdG9yczsKKworCV9fdTMyIGNydGNfaWQ7IC8qKjwgSWQgKi8K KwlfX3UzMiBmYl9pZDsgLyoqPCBJZCBvZiBmcmFtZWJ1ZmZlciAqLworCisJX191MzIgeDsgLyoq PCB4IFBvc2l0aW9uIG9uIHRoZSBmcmFtZWJ1ZmZlciAqLworCV9fdTMyIHk7IC8qKjwgeSBQb3Np dGlvbiBvbiB0aGUgZnJhbWVidWZmZXIgKi8KKworCV9fdTMyIGdhbW1hX3NpemU7CisJX191MzIg bW9kZV92YWxpZDsKKwlzdHJ1Y3QgZHJtX21vZGVfbW9kZWluZm8gbW9kZTsKK307CisKKyNkZWZp bmUgRFJNX01PREVfUFJFU0VOVF9UT1BfRklFTEQJKDE8PDApCisjZGVmaW5lIERSTV9NT0RFX1BS RVNFTlRfQk9UVE9NX0ZJRUxECSgxPDwxKQorCisvKiBQbGFuZXMgYmxlbmQgd2l0aCBvciBvdmVy cmlkZSBvdGhlciBiaXRzIG9uIHRoZSBDUlRDICovCitzdHJ1Y3QgZHJtX21vZGVfc2V0X3BsYW5l IHsKKwlfX3UzMiBwbGFuZV9pZDsKKwlfX3UzMiBjcnRjX2lkOworCV9fdTMyIGZiX2lkOyAvKiBm YiBvYmplY3QgY29udGFpbnMgc3VyZmFjZSBmb3JtYXQgdHlwZSAqLworCV9fdTMyIGZsYWdzOyAv KiBzZWUgYWJvdmUgZmxhZ3MgKi8KKworCS8qIFNpZ25lZCBkZXN0IGxvY2F0aW9uIGFsbG93cyBp dCB0byBiZSBwYXJ0aWFsbHkgb2ZmIHNjcmVlbiAqLworCV9fczMyIGNydGNfeDsKKwlfX3MzMiBj cnRjX3k7CisJX191MzIgY3J0Y193OworCV9fdTMyIGNydGNfaDsKKworCS8qIFNvdXJjZSB2YWx1 ZXMgYXJlIDE2LjE2IGZpeGVkIHBvaW50ICovCisJX191MzIgc3JjX3g7CisJX191MzIgc3JjX3k7 CisJX191MzIgc3JjX2g7CisJX191MzIgc3JjX3c7Cit9OworCitzdHJ1Y3QgZHJtX21vZGVfZ2V0 X3BsYW5lIHsKKwlfX3UzMiBwbGFuZV9pZDsKKworCV9fdTMyIGNydGNfaWQ7CisJX191MzIgZmJf aWQ7CisKKwlfX3UzMiBwb3NzaWJsZV9jcnRjczsKKwlfX3UzMiBnYW1tYV9zaXplOworCisJX191 MzIgY291bnRfZm9ybWF0X3R5cGVzOworCV9fdTY0IGZvcm1hdF90eXBlX3B0cjsKK307CisKK3N0 cnVjdCBkcm1fbW9kZV9nZXRfcGxhbmVfcmVzIHsKKwlfX3U2NCBwbGFuZV9pZF9wdHI7CisJX191 MzIgY291bnRfcGxhbmVzOworfTsKKworI2RlZmluZSBEUk1fTU9ERV9FTkNPREVSX05PTkUJMAor I2RlZmluZSBEUk1fTU9ERV9FTkNPREVSX0RBQwkxCisjZGVmaW5lIERSTV9NT0RFX0VOQ09ERVJf VE1EUwkyCisjZGVmaW5lIERSTV9NT0RFX0VOQ09ERVJfTFZEUwkzCisjZGVmaW5lIERSTV9NT0RF X0VOQ09ERVJfVFZEQUMJNAorI2RlZmluZSBEUk1fTU9ERV9FTkNPREVSX1ZJUlRVQUwgNQorI2Rl ZmluZSBEUk1fTU9ERV9FTkNPREVSX0RTSQk2CisjZGVmaW5lIERSTV9NT0RFX0VOQ09ERVJfRFBN U1QJNworI2RlZmluZSBEUk1fTU9ERV9FTkNPREVSX0RQSQk4CisKK3N0cnVjdCBkcm1fbW9kZV9n ZXRfZW5jb2RlciB7CisJX191MzIgZW5jb2Rlcl9pZDsKKwlfX3UzMiBlbmNvZGVyX3R5cGU7CisK KwlfX3UzMiBjcnRjX2lkOyAvKio8IElkIG9mIGNydGMgKi8KKworCV9fdTMyIHBvc3NpYmxlX2Ny dGNzOworCV9fdTMyIHBvc3NpYmxlX2Nsb25lczsKK307CisKKy8qIFRoaXMgaXMgZm9yIGNvbm5l Y3RvcnMgd2l0aCBtdWx0aXBsZSBzaWduYWwgdHlwZXMuICovCisvKiBUcnkgdG8gbWF0Y2ggRFJN X01PREVfQ09OTkVDVE9SX1ggYXMgY2xvc2VseSBhcyBwb3NzaWJsZS4gKi8KK2VudW0gZHJtX21v ZGVfc3ViY29ubmVjdG9yIHsKKwlEUk1fTU9ERV9TVUJDT05ORUNUT1JfQXV0b21hdGljID0gMCwK KwlEUk1fTU9ERV9TVUJDT05ORUNUT1JfVW5rbm93biA9IDAsCisJRFJNX01PREVfU1VCQ09OTkVD VE9SX0RWSUQgPSAzLAorCURSTV9NT0RFX1NVQkNPTk5FQ1RPUl9EVklBID0gNCwKKwlEUk1fTU9E RV9TVUJDT05ORUNUT1JfQ29tcG9zaXRlID0gNSwKKwlEUk1fTU9ERV9TVUJDT05ORUNUT1JfU1ZJ REVPID0gNiwKKwlEUk1fTU9ERV9TVUJDT05ORUNUT1JfQ29tcG9uZW50ID0gOCwKKwlEUk1fTU9E RV9TVUJDT05ORUNUT1JfU0NBUlQgPSA5LAorfTsKKworI2RlZmluZSBEUk1fTU9ERV9DT05ORUNU T1JfVW5rbm93bgkwCisjZGVmaW5lIERSTV9NT0RFX0NPTk5FQ1RPUl9WR0EJCTEKKyNkZWZpbmUg RFJNX01PREVfQ09OTkVDVE9SX0RWSUkJCTIKKyNkZWZpbmUgRFJNX01PREVfQ09OTkVDVE9SX0RW SUQJCTMKKyNkZWZpbmUgRFJNX01PREVfQ09OTkVDVE9SX0RWSUEJCTQKKyNkZWZpbmUgRFJNX01P REVfQ09OTkVDVE9SX0NvbXBvc2l0ZQk1CisjZGVmaW5lIERSTV9NT0RFX0NPTk5FQ1RPUl9TVklE RU8JNgorI2RlZmluZSBEUk1fTU9ERV9DT05ORUNUT1JfTFZEUwkJNworI2RlZmluZSBEUk1fTU9E RV9DT05ORUNUT1JfQ29tcG9uZW50CTgKKyNkZWZpbmUgRFJNX01PREVfQ09OTkVDVE9SXzlQaW5E SU4JOQorI2RlZmluZSBEUk1fTU9ERV9DT05ORUNUT1JfRGlzcGxheVBvcnQJMTAKKyNkZWZpbmUg RFJNX01PREVfQ09OTkVDVE9SX0hETUlBCTExCisjZGVmaW5lIERSTV9NT0RFX0NPTk5FQ1RPUl9I RE1JQgkxMgorI2RlZmluZSBEUk1fTU9ERV9DT05ORUNUT1JfVFYJCTEzCisjZGVmaW5lIERSTV9N T0RFX0NPTk5FQ1RPUl9lRFAJCTE0CisjZGVmaW5lIERSTV9NT0RFX0NPTk5FQ1RPUl9WSVJUVUFM ICAgICAgMTUKKyNkZWZpbmUgRFJNX01PREVfQ09OTkVDVE9SX0RTSQkJMTYKKyNkZWZpbmUgRFJN X01PREVfQ09OTkVDVE9SX0RQSQkJMTcKKworc3RydWN0IGRybV9tb2RlX2dldF9jb25uZWN0b3Ig eworCisJX191NjQgZW5jb2RlcnNfcHRyOworCV9fdTY0IG1vZGVzX3B0cjsKKwlfX3U2NCBwcm9w c19wdHI7CisJX191NjQgcHJvcF92YWx1ZXNfcHRyOworCisJX191MzIgY291bnRfbW9kZXM7CisJ X191MzIgY291bnRfcHJvcHM7CisJX191MzIgY291bnRfZW5jb2RlcnM7CisKKwlfX3UzMiBlbmNv ZGVyX2lkOyAvKio8IEN1cnJlbnQgRW5jb2RlciAqLworCV9fdTMyIGNvbm5lY3Rvcl9pZDsgLyoq PCBJZCAqLworCV9fdTMyIGNvbm5lY3Rvcl90eXBlOworCV9fdTMyIGNvbm5lY3Rvcl90eXBlX2lk OworCisJX191MzIgY29ubmVjdGlvbjsKKwlfX3UzMiBtbV93aWR0aDsgIC8qKjwgd2lkdGggaW4g bWlsbGltZXRlcnMgKi8KKwlfX3UzMiBtbV9oZWlnaHQ7IC8qKjwgaGVpZ2h0IGluIG1pbGxpbWV0 ZXJzICovCisJX191MzIgc3VicGl4ZWw7CisKKwlfX3UzMiBwYWQ7Cit9OworCisjZGVmaW5lIERS TV9NT0RFX1BST1BfUEVORElORwkoMTw8MCkKKyNkZWZpbmUgRFJNX01PREVfUFJPUF9SQU5HRQko MTw8MSkKKyNkZWZpbmUgRFJNX01PREVfUFJPUF9JTU1VVEFCTEUJKDE8PDIpCisjZGVmaW5lIERS TV9NT0RFX1BST1BfRU5VTQkoMTw8MykgLyogZW51bWVyYXRlZCB0eXBlIHdpdGggdGV4dCBzdHJp bmdzICovCisjZGVmaW5lIERSTV9NT0RFX1BST1BfQkxPQgkoMTw8NCkKKyNkZWZpbmUgRFJNX01P REVfUFJPUF9CSVRNQVNLCSgxPDw1KSAvKiBiaXRtYXNrIG9mIGVudW1lcmF0ZWQgdHlwZXMgKi8K KworLyogbm9uLWV4dGVuZGVkIHR5cGVzOiBsZWdhY3kgYml0bWFzaywgb25lIGJpdCBwZXIgdHlw ZTogKi8KKyNkZWZpbmUgRFJNX01PREVfUFJPUF9MRUdBQ1lfVFlQRSAgKCBcCisJCURSTV9NT0RF X1BST1BfUkFOR0UgfCBcCisJCURSTV9NT0RFX1BST1BfRU5VTSB8IFwKKwkJRFJNX01PREVfUFJP UF9CTE9CIHwgXAorCQlEUk1fTU9ERV9QUk9QX0JJVE1BU0spCisKKy8qIGV4dGVuZGVkLXR5cGVz OiByYXRoZXIgdGhhbiBjb250aW51ZSB0byBjb25zdW1lIGEgYml0IHBlciB0eXBlLAorICogZ3Jh YiBhIGNodW5rIG9mIHRoZSBiaXRzIHRvIHVzZSBhcyBpbnRlZ2VyIHR5cGUgaWQuCisgKi8KKyNk ZWZpbmUgRFJNX01PREVfUFJPUF9FWFRFTkRFRF9UWVBFCTB4MDAwMGZmYzAKKyNkZWZpbmUgRFJN X01PREVfUFJPUF9UWVBFKG4pCQkoKG4pIDw8IDYpCisjZGVmaW5lIERSTV9NT0RFX1BST1BfT0JK RUNUCQlEUk1fTU9ERV9QUk9QX1RZUEUoMSkKKyNkZWZpbmUgRFJNX01PREVfUFJPUF9TSUdORURf UkFOR0UJRFJNX01PREVfUFJPUF9UWVBFKDIpCisKKy8qIHRoZSBQUk9QX0FUT01JQyBmbGFnIGlz IHVzZWQgdG8gaGlkZSBwcm9wZXJ0aWVzIGZyb20gdXNlcnNwYWNlIHRoYXQKKyAqIGlzIG5vdCBh d2FyZSBvZiBhdG9taWMgcHJvcGVydGllcy4gIFRoaXMgaXMgbW9zdGx5IHRvIHdvcmsgYXJvdW5k CisgKiBvbGRlciB1c2Vyc3BhY2UgKEREWCBkcml2ZXJzKSB0aGF0IHJlYWQvd3JpdGUgZWFjaCBw cm9wIHRoZXkgZmluZCwKKyAqIHdpdG91dCBiZWluZyBhd2FyZSB0aGF0IHRoaXMgY291bGQgYmUg dHJpZ2dlcmluZyBhIGxlbmd0aHkgbW9kZXNldC4KKyAqLworI2RlZmluZSBEUk1fTU9ERV9QUk9Q X0FUT01JQyAgICAgICAgMHg4MDAwMDAwMAorCitzdHJ1Y3QgZHJtX21vZGVfcHJvcGVydHlfZW51 bSB7CisJX191NjQgdmFsdWU7CisJY2hhciBuYW1lW0RSTV9QUk9QX05BTUVfTEVOXTsKK307CisK K3N0cnVjdCBkcm1fbW9kZV9nZXRfcHJvcGVydHkgeworCV9fdTY0IHZhbHVlc19wdHI7IC8qIHZh bHVlcyBhbmQgYmxvYiBsZW5ndGhzICovCisJX191NjQgZW51bV9ibG9iX3B0cjsgLyogZW51bSBh bmQgYmxvYiBpZCBwdHJzICovCisKKwlfX3UzMiBwcm9wX2lkOworCV9fdTMyIGZsYWdzOworCWNo YXIgbmFtZVtEUk1fUFJPUF9OQU1FX0xFTl07CisKKwlfX3UzMiBjb3VudF92YWx1ZXM7CisJLyog VGhpcyBpcyBvbmx5IHVzZWQgdG8gY291bnQgZW51bSB2YWx1ZXMsIG5vdCBibG9icy4gVGhlIF9i bG9icyBpcworCSAqIHNpbXBseSBiZWNhdXNlIG9mIGEgaGlzdG9yaWNhbCByZWFzb24sIGkuZS4g YmFja3dhcmRzIGNvbXBhdC4gKi8KKwlfX3UzMiBjb3VudF9lbnVtX2Jsb2JzOworfTsKKworc3Ry dWN0IGRybV9tb2RlX2Nvbm5lY3Rvcl9zZXRfcHJvcGVydHkgeworCV9fdTY0IHZhbHVlOworCV9f dTMyIHByb3BfaWQ7CisJX191MzIgY29ubmVjdG9yX2lkOworfTsKKworI2RlZmluZSBEUk1fTU9E RV9PQkpFQ1RfQ1JUQyAweGNjY2NjY2NjCisjZGVmaW5lIERSTV9NT0RFX09CSkVDVF9DT05ORUNU T1IgMHhjMGMwYzBjMAorI2RlZmluZSBEUk1fTU9ERV9PQkpFQ1RfRU5DT0RFUiAweGUwZTBlMGUw CisjZGVmaW5lIERSTV9NT0RFX09CSkVDVF9NT0RFIDB4ZGVkZWRlZGUKKyNkZWZpbmUgRFJNX01P REVfT0JKRUNUX1BST1BFUlRZIDB4YjBiMGIwYjAKKyNkZWZpbmUgRFJNX01PREVfT0JKRUNUX0ZC IDB4ZmJmYmZiZmIKKyNkZWZpbmUgRFJNX01PREVfT0JKRUNUX0JMT0IgMHhiYmJiYmJiYgorI2Rl ZmluZSBEUk1fTU9ERV9PQkpFQ1RfUExBTkUgMHhlZWVlZWVlZQorI2RlZmluZSBEUk1fTU9ERV9P QkpFQ1RfQU5ZIDAKKworc3RydWN0IGRybV9tb2RlX29ial9nZXRfcHJvcGVydGllcyB7CisJX191 NjQgcHJvcHNfcHRyOworCV9fdTY0IHByb3BfdmFsdWVzX3B0cjsKKwlfX3UzMiBjb3VudF9wcm9w czsKKwlfX3UzMiBvYmpfaWQ7CisJX191MzIgb2JqX3R5cGU7Cit9OworCitzdHJ1Y3QgZHJtX21v ZGVfb2JqX3NldF9wcm9wZXJ0eSB7CisJX191NjQgdmFsdWU7CisJX191MzIgcHJvcF9pZDsKKwlf X3UzMiBvYmpfaWQ7CisJX191MzIgb2JqX3R5cGU7Cit9OworCitzdHJ1Y3QgZHJtX21vZGVfZ2V0 X2Jsb2IgeworCV9fdTMyIGJsb2JfaWQ7CisJX191MzIgbGVuZ3RoOworCV9fdTY0IGRhdGE7Cit9 OworCitzdHJ1Y3QgZHJtX21vZGVfZmJfY21kIHsKKwlfX3UzMiBmYl9pZDsKKwlfX3UzMiB3aWR0 aDsKKwlfX3UzMiBoZWlnaHQ7CisJX191MzIgcGl0Y2g7CisJX191MzIgYnBwOworCV9fdTMyIGRl cHRoOworCS8qIGRyaXZlciBzcGVjaWZpYyBoYW5kbGUgKi8KKwlfX3UzMiBoYW5kbGU7Cit9Owor CisjZGVmaW5lIERSTV9NT0RFX0ZCX0lOVEVSTEFDRUQJKDE8PDApIC8qIGZvciBpbnRlcmxhY2Vk IGZyYW1lYnVmZmVycyAqLworI2RlZmluZSBEUk1fTU9ERV9GQl9NT0RJRklFUlMJKDE8PDEpIC8q IGVuYWJsZXMgLT5tb2RpZmVyW10gKi8KKworc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgeworCV9f dTMyIGZiX2lkOworCV9fdTMyIHdpZHRoOworCV9fdTMyIGhlaWdodDsKKwlfX3UzMiBwaXhlbF9m b3JtYXQ7IC8qIGZvdXJjYyBjb2RlIGZyb20gZHJtX2ZvdXJjYy5oICovCisJX191MzIgZmxhZ3M7 IC8qIHNlZSBhYm92ZSBmbGFncyAqLworCisJLyoKKwkgKiBJbiBjYXNlIG9mIHBsYW5hciBmb3Jt YXRzLCB0aGlzIGlvY3RsIGFsbG93cyB1cCB0byA0CisJICogYnVmZmVyIG9iamVjdHMgd2l0aCBv ZmZzZXRzIGFuZCBwaXRjaGVzIHBlciBwbGFuZS4KKwkgKiBUaGUgcGl0Y2ggYW5kIG9mZnNldCBv cmRlciBpcyBkaWN0YXRlZCBieSB0aGUgZm91cmNjLAorCSAqIGUuZy4gTlYxMiAoaHR0cDovL2Zv dXJjYy5vcmcveXV2LnBocCNOVjEyKSBpcyBkZXNjcmliZWQgYXM6CisJICoKKwkgKiAgIFlVViA0 OjI6MCBpbWFnZSB3aXRoIGEgcGxhbmUgb2YgOCBiaXQgWSBzYW1wbGVzCisJICogICBmb2xsb3dl ZCBieSBhbiBpbnRlcmxlYXZlZCBVL1YgcGxhbmUgY29udGFpbmluZworCSAqICAgOCBiaXQgMngy IHN1YnNhbXBsZWQgY29sb3VyIGRpZmZlcmVuY2Ugc2FtcGxlcy4KKwkgKgorCSAqIFNvIGl0IHdv dWxkIGNvbnNpc3Qgb2YgWSBhcyBvZmZzZXRzWzBdIGFuZCBVViBhcworCSAqIG9mZnNldHNbMV0u ICBOb3RlIHRoYXQgb2Zmc2V0c1swXSB3aWxsIGdlbmVyYWxseQorCSAqIGJlIDAgKGJ1dCB0aGlz IGlzIG5vdCByZXF1aXJlZCkuCisJICoKKwkgKiBUbyBhY2NvbW1vZGF0ZSB0aWxlZCwgY29tcHJl c3NlZCwgZXRjIGZvcm1hdHMsIGEKKwkgKiBtb2RpZmllciBjYW4gYmUgc3BlY2lmaWVkLiAgVGhl IGRlZmF1bHQgdmFsdWUgb2YgemVybworCSAqIGluZGljYXRlcyAibmF0aXZlIiBmb3JtYXQgYXMg c3BlY2lmaWVkIGJ5IHRoZSBmb3VyY2MuCisJICogVmVuZG9yIHNwZWNpZmljIG1vZGlmaWVyIHRv a2VuLiAgTm90ZSB0aGF0IGV2ZW4gdGhvdWdoCisJICogaXQgbG9va3MgbGlrZSB3ZSBoYXZlIGEg bW9kaWZpZXIgcGVyLXBsYW5lLCB3ZSBpbiBmYWN0CisJICogZG8gbm90LiBUaGUgbW9kaWZpZXIg Zm9yIGVhY2ggcGxhbmUgbXVzdCBiZSBpZGVudGljYWwuCisJICogVGh1cyBhbGwgY29tYmluYXRp b25zIG9mIGRpZmZlcmVudCBkYXRhIGxheW91dHMgZm9yCisJICogbXVsdGkgcGxhbmUgZm9ybWF0 cyBtdXN0IGJlIGVudW1lcmF0ZWQgYXMgc2VwYXJhdGUKKwkgKiBtb2RpZmllcnMuCisJICovCisJ X191MzIgaGFuZGxlc1s0XTsKKwlfX3UzMiBwaXRjaGVzWzRdOyAvKiBwaXRjaCBmb3IgZWFjaCBw bGFuZSAqLworCV9fdTMyIG9mZnNldHNbNF07IC8qIG9mZnNldCBvZiBlYWNoIHBsYW5lICovCisJ X191NjQgbW9kaWZpZXJbNF07IC8qIGllLCB0aWxpbmcsIGNvbXByZXNzICovCit9OworCisjZGVm aW5lIERSTV9NT0RFX0ZCX0RJUlRZX0FOTk9UQVRFX0NPUFkgMHgwMQorI2RlZmluZSBEUk1fTU9E RV9GQl9ESVJUWV9BTk5PVEFURV9GSUxMIDB4MDIKKyNkZWZpbmUgRFJNX01PREVfRkJfRElSVFlf RkxBR1MgICAgICAgICAweDAzCisKKyNkZWZpbmUgRFJNX01PREVfRkJfRElSVFlfTUFYX0NMSVBT ICAgICAyNTYKKworLyoKKyAqIE1hcmsgYSByZWdpb24gb2YgYSBmcmFtZWJ1ZmZlciBhcyBkaXJ0 eS4KKyAqCisgKiBTb21lIGhhcmR3YXJlIGRvZXMgbm90IGF1dG9tYXRpY2FsbHkgdXBkYXRlIGRp c3BsYXkgY29udGVudHMKKyAqIGFzIGEgaGFyZHdhcmUgb3Igc29mdHdhcmUgZHJhdyB0byBhIGZy YW1lYnVmZmVyLiBUaGlzIGlvY3RsCisgKiBhbGxvd3MgdXNlcnNwYWNlIHRvIHRlbGwgdGhlIGtl cm5lbCBhbmQgdGhlIGhhcmR3YXJlIHdoYXQKKyAqIHJlZ2lvbnMgb2YgdGhlIGZyYW1lYnVmZmVy IGhhdmUgY2hhbmdlZC4KKyAqCisgKiBUaGUga2VybmVsIG9yIGhhcmR3YXJlIGlzIGZyZWUgdG8g dXBkYXRlIG1vcmUgdGhlbiBqdXN0IHRoZQorICogcmVnaW9uIHNwZWNpZmllZCBieSB0aGUgY2xp cCByZWN0cy4gVGhlIGtlcm5lbCBvciBoYXJkd2FyZQorICogbWF5IGFsc28gZGVsYXkgYW5kL29y IGNvYWxlc2NlIHNldmVyYWwgY2FsbHMgdG8gZGlydHkgaW50byBhCisgKiBzaW5nbGUgdXBkYXRl LgorICoKKyAqIFVzZXJzcGFjZSBtYXkgYW5ub3RhdGUgdGhlIHVwZGF0ZXMsIHRoZSBhbm5vdGF0 ZXMgYXJlIGEKKyAqIHByb21pc2UgbWFkZSBieSB0aGUgY2FsbGVyIHRoYXQgdGhlIGNoYW5nZSBp cyBlaXRoZXIgYSBjb3B5CisgKiBvZiBwaXhlbHMgb3IgYSBmaWxsIG9mIGEgc2luZ2xlIGNvbG9y IGluIHRoZSByZWdpb24gc3BlY2lmaWVkLgorICoKKyAqIElmIHRoZSBEUk1fTU9ERV9GQl9ESVJU WV9BTk5PVEFURV9DT1BZIGZsYWcgaXMgZ2l2ZW4gdGhlbgorICogdGhlIG51bWJlciBvZiB1cGRh dGVkIHJlZ2lvbnMgYXJlIGhhbGYgb2YgbnVtX2NsaXBzIGdpdmVuLAorICogd2hlcmUgdGhlIGNs aXAgcmVjdHMgYXJlIHBhaXJlZCBpbiBzcmMgYW5kIGRzdC4gVGhlIHdpZHRoIGFuZAorICogaGVp Z2h0IG9mIGVhY2ggb25lIG9mIHRoZSBwYWlycyBtdXN0IG1hdGNoLgorICoKKyAqIElmIHRoZSBE Uk1fTU9ERV9GQl9ESVJUWV9BTk5PVEFURV9GSUxMIGZsYWcgaXMgZ2l2ZW4gdGhlIGNhbGxlcgor ICogcHJvbWlzZXMgdGhhdCB0aGUgcmVnaW9uIHNwZWNpZmllZCBvZiB0aGUgY2xpcCByZWN0cyBp cyBmaWxsZWQKKyAqIGNvbXBsZXRlbHkgd2l0aCBhIHNpbmdsZSBjb2xvciBhcyBnaXZlbiBpbiB0 aGUgY29sb3IgYXJndW1lbnQuCisgKi8KKworc3RydWN0IGRybV9tb2RlX2ZiX2RpcnR5X2NtZCB7 CisJX191MzIgZmJfaWQ7CisJX191MzIgZmxhZ3M7CisJX191MzIgY29sb3I7CisJX191MzIgbnVt X2NsaXBzOworCV9fdTY0IGNsaXBzX3B0cjsKK307CisKK3N0cnVjdCBkcm1fbW9kZV9tb2RlX2Nt ZCB7CisJX191MzIgY29ubmVjdG9yX2lkOworCXN0cnVjdCBkcm1fbW9kZV9tb2RlaW5mbyBtb2Rl OworfTsKKworI2RlZmluZSBEUk1fTU9ERV9DVVJTT1JfQk8JMHgwMQorI2RlZmluZSBEUk1fTU9E RV9DVVJTT1JfTU9WRQkweDAyCisjZGVmaW5lIERSTV9NT0RFX0NVUlNPUl9GTEFHUwkweDAzCisK Ky8qCisgKiBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIGluIGZsYWdzIGRpZmZlcmVudCBtZW1iZXJz IGFyZSB1c2VkLgorICoKKyAqIENVUlNPUl9CTyB1c2VzCisgKiAgICBjcnRjX2lkCisgKiAgICB3 aWR0aAorICogICAgaGVpZ2h0CisgKiAgICBoYW5kbGUgLSBpZiAwIHR1cm5zIHRoZSBjdXJzb3Ig b2ZmCisgKgorICogQ1VSU09SX01PVkUgdXNlcworICogICAgY3J0Y19pZAorICogICAgeAorICog ICAgeQorICovCitzdHJ1Y3QgZHJtX21vZGVfY3Vyc29yIHsKKwlfX3UzMiBmbGFnczsKKwlfX3Uz MiBjcnRjX2lkOworCV9fczMyIHg7CisJX19zMzIgeTsKKwlfX3UzMiB3aWR0aDsKKwlfX3UzMiBo ZWlnaHQ7CisJLyogZHJpdmVyIHNwZWNpZmljIGhhbmRsZSAqLworCV9fdTMyIGhhbmRsZTsKK307 CisKK3N0cnVjdCBkcm1fbW9kZV9jdXJzb3IyIHsKKwlfX3UzMiBmbGFnczsKKwlfX3UzMiBjcnRj X2lkOworCV9fczMyIHg7CisJX19zMzIgeTsKKwlfX3UzMiB3aWR0aDsKKwlfX3UzMiBoZWlnaHQ7 CisJLyogZHJpdmVyIHNwZWNpZmljIGhhbmRsZSAqLworCV9fdTMyIGhhbmRsZTsKKwlfX3MzMiBo b3RfeDsKKwlfX3MzMiBob3RfeTsKK307CisKK3N0cnVjdCBkcm1fbW9kZV9jcnRjX2x1dCB7CisJ X191MzIgY3J0Y19pZDsKKwlfX3UzMiBnYW1tYV9zaXplOworCisJLyogcG9pbnRlcnMgdG8gYXJy YXlzICovCisJX191NjQgcmVkOworCV9fdTY0IGdyZWVuOworCV9fdTY0IGJsdWU7Cit9OworCitz dHJ1Y3QgZHJtX2NvbG9yX2N0bSB7CisJLyogQ29udmVyc2lvbiBtYXRyaXggaW4gUzMxLjMyIGZv cm1hdC4gKi8KKwlfX3M2NCBtYXRyaXhbOV07Cit9OworCitzdHJ1Y3QgZHJtX2NvbG9yX2x1dCB7 CisJLyoKKwkgKiBEYXRhIGlzIFUwLjE2IGZpeGVkIHBvaW50IGZvcm1hdC4KKwkgKi8KKwlfX3Ux NiByZWQ7CisJX191MTYgZ3JlZW47CisJX191MTYgYmx1ZTsKKwlfX3UxNiByZXNlcnZlZDsKK307 CisKKyNkZWZpbmUgRFJNX01PREVfUEFHRV9GTElQX0VWRU5UIDB4MDEKKyNkZWZpbmUgRFJNX01P REVfUEFHRV9GTElQX0FTWU5DIDB4MDIKKyNkZWZpbmUgRFJNX01PREVfUEFHRV9GTElQX1RBUkdF VF9BQlNPTFVURSAweDQKKyNkZWZpbmUgRFJNX01PREVfUEFHRV9GTElQX1RBUkdFVF9SRUxBVElW RSAweDgKKyNkZWZpbmUgRFJNX01PREVfUEFHRV9GTElQX1RBUkdFVCAoRFJNX01PREVfUEFHRV9G TElQX1RBUkdFVF9BQlNPTFVURSB8IFwKKwkJCQkgICBEUk1fTU9ERV9QQUdFX0ZMSVBfVEFSR0VU X1JFTEFUSVZFKQorI2RlZmluZSBEUk1fTU9ERV9QQUdFX0ZMSVBfRkxBR1MgKERSTV9NT0RFX1BB R0VfRkxJUF9FVkVOVCB8IFwKKwkJCQkgIERSTV9NT0RFX1BBR0VfRkxJUF9BU1lOQyB8IFwKKwkJ CQkgIERSTV9NT0RFX1BBR0VfRkxJUF9UQVJHRVQpCisKKy8qCisgKiBSZXF1ZXN0IGEgcGFnZSBm bGlwIG9uIHRoZSBzcGVjaWZpZWQgY3J0Yy4KKyAqCisgKiBUaGlzIGlvY3RsIHdpbGwgYXNrIEtN UyB0byBzY2hlZHVsZSBhIHBhZ2UgZmxpcCBmb3IgdGhlIHNwZWNpZmllZAorICogY3J0Yy4gIE9u Y2UgYW55IHBlbmRpbmcgcmVuZGVyaW5nIHRhcmdldGluZyB0aGUgc3BlY2lmaWVkIGZiIChhcyBv ZgorICogaW9jdGwgdGltZSkgaGFzIGNvbXBsZXRlZCwgdGhlIGNydGMgd2lsbCBiZSByZXByb2dy YW1tZWQgdG8gZGlzcGxheQorICogdGhhdCBmYiBhZnRlciB0aGUgbmV4dCB2ZXJ0aWNhbCByZWZy ZXNoLiAgVGhlIGlvY3RsIHJldHVybnMKKyAqIGltbWVkaWF0ZWx5LCBidXQgc3Vic2VxdWVudCBy ZW5kZXJpbmcgdG8gdGhlIGN1cnJlbnQgZmIgd2lsbCBibG9jaworICogaW4gdGhlIGV4ZWNidWZm ZXIgaW9jdGwgdW50aWwgdGhlIHBhZ2UgZmxpcCBoYXBwZW5zLiAgSWYgYSBwYWdlCisgKiBmbGlw IGlzIGFscmVhZHkgcGVuZGluZyBhcyB0aGUgaW9jdGwgaXMgY2FsbGVkLCBFQlVTWSB3aWxsIGJl CisgKiByZXR1cm5lZC4KKyAqCisgKiBGbGFnIERSTV9NT0RFX1BBR0VfRkxJUF9FVkVOVCByZXF1 ZXN0cyB0aGF0IGRybSBzZW5kcyBiYWNrIGEgdmJsYW5rCisgKiBldmVudCAoc2VlIGRybS5oOiBz dHJ1Y3QgZHJtX2V2ZW50X3ZibGFuaykgd2hlbiB0aGUgcGFnZSBmbGlwIGlzCisgKiBkb25lLiAg VGhlIHVzZXJfZGF0YSBmaWVsZCBwYXNzZWQgaW4gd2l0aCB0aGlzIGlvY3RsIHdpbGwgYmUKKyAq IHJldHVybmVkIGFzIHRoZSB1c2VyX2RhdGEgZmllbGQgaW4gdGhlIHZibGFuayBldmVudCBzdHJ1 Y3QuCisgKgorICogRmxhZyBEUk1fTU9ERV9QQUdFX0ZMSVBfQVNZTkMgcmVxdWVzdHMgdGhhdCB0 aGUgZmxpcCBoYXBwZW4KKyAqICdhcyBzb29uIGFzIHBvc3NpYmxlJywgbWVhbmluZyB0aGF0IGl0 IG5vdCBkZWxheSB3YWl0aW5nIGZvciB2YmxhbmsuCisgKiBUaGlzIG1heSBjYXVzZSB0ZWFyaW5n IG9uIHRoZSBzY3JlZW4uCisgKgorICogVGhlIHJlc2VydmVkIGZpZWxkIG11c3QgYmUgemVyby4K KyAqLworCitzdHJ1Y3QgZHJtX21vZGVfY3J0Y19wYWdlX2ZsaXAgeworCV9fdTMyIGNydGNfaWQ7 CisJX191MzIgZmJfaWQ7CisJX191MzIgZmxhZ3M7CisJX191MzIgcmVzZXJ2ZWQ7CisJX191NjQg dXNlcl9kYXRhOworfTsKKworLyoKKyAqIFJlcXVlc3QgYSBwYWdlIGZsaXAgb24gdGhlIHNwZWNp ZmllZCBjcnRjLgorICoKKyAqIFNhbWUgYXMgc3RydWN0IGRybV9tb2RlX2NydGNfcGFnZV9mbGlw LCBidXQgc3VwcG9ydHMgbmV3IGZsYWdzIGFuZAorICogcmUtcHVycG9zZXMgdGhlIHJlc2VydmVk IGZpZWxkOgorICoKKyAqIFRoZSBzZXF1ZW5jZSBmaWVsZCBtdXN0IGJlIHplcm8gdW5sZXNzIGVp dGhlciBvZiB0aGUKKyAqIERSTV9NT0RFX1BBR0VfRkxJUF9UQVJHRVRfQUJTT0xVVEUvUkVMQVRJ VkUgZmxhZ3MgaXMgc3BlY2lmaWVkLiBXaGVuCisgKiB0aGUgQUJTT0xVVEUgZmxhZyBpcyBzcGVj aWZpZWQsIHRoZSBzZXF1ZW5jZSBmaWVsZCBkZW5vdGVzIHRoZSBhYnNvbHV0ZQorICogdmJsYW5r IHNlcXVlbmNlIHdoZW4gdGhlIGZsaXAgc2hvdWxkIHRha2UgZWZmZWN0LiBXaGVuIHRoZSBSRUxB VElWRQorICogZmxhZyBpcyBzcGVjaWZpZWQsIHRoZSBzZXF1ZW5jZSBmaWVsZCBkZW5vdGVzIHRo ZSByZWxhdGl2ZSAodG8gdGhlCisgKiBjdXJyZW50IG9uZSB3aGVuIHRoZSBpb2N0bCBpcyBjYWxs ZWQpIHZibGFuayBzZXF1ZW5jZSB3aGVuIHRoZSBmbGlwCisgKiBzaG91bGQgdGFrZSBlZmZlY3Qu IE5PVEU6IERSTV9JT0NUTF9XQUlUX1ZCTEFOSyBtdXN0IHN0aWxsIGJlIHVzZWQgdG8KKyAqIG1h a2Ugc3VyZSB0aGUgdmJsYW5rIHNlcXVlbmNlIGJlZm9yZSB0aGUgdGFyZ2V0IG9uZSBoYXMgcGFz c2VkIGJlZm9yZQorICogY2FsbGluZyB0aGlzIGlvY3RsLiBUaGUgcHVycG9zZSBvZiB0aGUKKyAq IERSTV9NT0RFX1BBR0VfRkxJUF9UQVJHRVRfQUJTT0xVVEUvUkVMQVRJVkUgZmxhZ3MgaXMgbWVy ZWx5IHRvIGNsYXJpZnkKKyAqIHRoZSB0YXJnZXQgZm9yIHdoZW4gY29kZSBkZWFsaW5nIHdpdGgg YSBwYWdlIGZsaXAgcnVucyBkdXJpbmcgYQorICogdmVydGljYWwgYmxhbmsgcGVyaW9kLgorICov CisKK3N0cnVjdCBkcm1fbW9kZV9jcnRjX3BhZ2VfZmxpcF90YXJnZXQgeworCV9fdTMyIGNydGNf aWQ7CisJX191MzIgZmJfaWQ7CisJX191MzIgZmxhZ3M7CisJX191MzIgc2VxdWVuY2U7CisJX191 NjQgdXNlcl9kYXRhOworfTsKKworLyogY3JlYXRlIGEgZHVtYiBzY2Fub3V0IGJ1ZmZlciAqLwor c3RydWN0IGRybV9tb2RlX2NyZWF0ZV9kdW1iIHsKKwlfX3UzMiBoZWlnaHQ7CisJX191MzIgd2lk dGg7CisJX191MzIgYnBwOworCV9fdTMyIGZsYWdzOworCS8qIGhhbmRsZSwgcGl0Y2gsIHNpemUg d2lsbCBiZSByZXR1cm5lZCAqLworCV9fdTMyIGhhbmRsZTsKKwlfX3UzMiBwaXRjaDsKKwlfX3U2 NCBzaXplOworfTsKKworLyogc2V0IHVwIGZvciBtbWFwIG9mIGEgZHVtYiBzY2Fub3V0IGJ1ZmZl ciAqLworc3RydWN0IGRybV9tb2RlX21hcF9kdW1iIHsKKwkvKiogSGFuZGxlIGZvciB0aGUgb2Jq ZWN0IGJlaW5nIG1hcHBlZC4gKi8KKwlfX3UzMiBoYW5kbGU7CisJX191MzIgcGFkOworCS8qKgor CSAqIEZha2Ugb2Zmc2V0IHRvIHVzZSBmb3Igc3Vic2VxdWVudCBtbWFwIGNhbGwKKwkgKgorCSAq IFRoaXMgaXMgYSBmaXhlZC1zaXplIHR5cGUgZm9yIDMyLzY0IGNvbXBhdGliaWxpdHkuCisJICov CisJX191NjQgb2Zmc2V0OworfTsKKworc3RydWN0IGRybV9tb2RlX2Rlc3Ryb3lfZHVtYiB7CisJ X191MzIgaGFuZGxlOworfTsKKworLyogcGFnZS1mbGlwIGZsYWdzIGFyZSB2YWxpZCwgcGx1czog Ki8KKyNkZWZpbmUgRFJNX01PREVfQVRPTUlDX1RFU1RfT05MWSAweDAxMDAKKyNkZWZpbmUgRFJN X01PREVfQVRPTUlDX05PTkJMT0NLICAweDAyMDAKKyNkZWZpbmUgRFJNX01PREVfQVRPTUlDX0FM TE9XX01PREVTRVQgMHgwNDAwCisKKyNkZWZpbmUgRFJNX01PREVfQVRPTUlDX0ZMQUdTIChcCisJ CURSTV9NT0RFX1BBR0VfRkxJUF9FVkVOVCB8XAorCQlEUk1fTU9ERV9QQUdFX0ZMSVBfQVNZTkMg fFwKKwkJRFJNX01PREVfQVRPTUlDX1RFU1RfT05MWSB8XAorCQlEUk1fTU9ERV9BVE9NSUNfTk9O QkxPQ0sgfFwKKwkJRFJNX01PREVfQVRPTUlDX0FMTE9XX01PREVTRVQpCisKK3N0cnVjdCBkcm1f bW9kZV9hdG9taWMgeworCV9fdTMyIGZsYWdzOworCV9fdTMyIGNvdW50X29ianM7CisJX191NjQg b2Jqc19wdHI7CisJX191NjQgY291bnRfcHJvcHNfcHRyOworCV9fdTY0IHByb3BzX3B0cjsKKwlf X3U2NCBwcm9wX3ZhbHVlc19wdHI7CisJX191NjQgcmVzZXJ2ZWQ7CisJX191NjQgdXNlcl9kYXRh OworfTsKKworc3RydWN0IGRybV9mb3JtYXRfbW9kaWZpZXJfYmxvYiB7CisjZGVmaW5lIEZPUk1B VF9CTE9CX0NVUlJFTlQgMQorCS8qIFZlcnNpb24gb2YgdGhpcyBibG9iIGZvcm1hdCAqLworCV9f dTMyIHZlcnNpb247CisKKwkvKiBGbGFncyAqLworCV9fdTMyIGZsYWdzOworCisJLyogTnVtYmVy IG9mIGZvdXJjYyBmb3JtYXRzIHN1cHBvcnRlZCAqLworCV9fdTMyIGNvdW50X2Zvcm1hdHM7CisK KwkvKiBXaGVyZSBpbiB0aGlzIGJsb2IgdGhlIGZvcm1hdHMgZXhpc3QgKGluIGJ5dGVzKSAqLwor CV9fdTMyIGZvcm1hdHNfb2Zmc2V0OworCisJLyogTnVtYmVyIG9mIGRybV9mb3JtYXRfbW9kaWZp ZXJzICovCisJX191MzIgY291bnRfbW9kaWZpZXJzOworCisJLyogV2hlcmUgaW4gdGhpcyBibG9i IHRoZSBtb2RpZmllcnMgZXhpc3QgKGluIGJ5dGVzKSAqLworCV9fdTMyIG1vZGlmaWVyc19vZmZz ZXQ7CisKKwkvKiBfX3UzMiBmb3JtYXRzW10gKi8KKwkvKiBzdHJ1Y3QgZHJtX2Zvcm1hdF9tb2Rp ZmllciBtb2RpZmllcnNbXSAqLworfTsKKworc3RydWN0IGRybV9mb3JtYXRfbW9kaWZpZXIgewor CS8qIEJpdG1hc2sgb2YgZm9ybWF0cyBpbiBnZXRfcGxhbmUgZm9ybWF0IGxpc3QgdGhpcyBpbmZv IGFwcGxpZXMgdG8uIFRoZQorCSAqIG9mZnNldCBhbGxvd3MgYSBzbGlkaW5nIHdpbmRvdyBvZiB3 aGljaCA2NCBmb3JtYXRzIChiaXRzKS4KKwkgKgorCSAqIFNvbWUgZXhhbXBsZXM6CisJICogSW4g dG9kYXkncyB3b3JsZCB3aXRoIDwgNjUgZm9ybWF0cywgYW5kIGZvcm1hdHMgMCwgYW5kIDIgYXJl CisJICogc3VwcG9ydGVkCisJICogMHgwMDAwMDAwMDAwMDAwMDA1CisJICoJCSAgXi1vZmZzZXQg PSAwLCBmb3JtYXRzID0gNQorCSAqCisJICogSWYgdGhlIG51bWJlciBmb3JtYXRzIGdyZXcgdG8g MTI4LCBhbmQgZm9ybWF0cyA5OC0xMDIgYXJlCisJICogc3VwcG9ydGVkIHdpdGggdGhlIG1vZGlm aWVyOgorCSAqCisJICogMHgwMDAwMDA3YzAwMDAwMDAwIDAwMDAwMDAwMDAwMDAwMDAKKwkgKgkJ ICBeCisJICoJCSAgfF9fb2Zmc2V0ID0gNjQsIGZvcm1hdHMgPSAweDdjMDAwMDAwMDAKKwkgKgor CSAqLworCV9fdTY0IGZvcm1hdHM7CisJX191MzIgb2Zmc2V0OworCV9fdTMyIHBhZDsKKworCS8q IFRoZSBtb2RpZmllciB0aGF0IGFwcGxpZXMgdG8gdGhlID5nZXRfcGxhbmUgZm9ybWF0IGxpc3Qg Yml0bWFzay4gKi8KKwlfX3U2NCBtb2RpZmllcjsKK307CisKKy8qKgorICogQ3JlYXRlIGEgbmV3 ICdibG9iJyBkYXRhIHByb3BlcnR5LCBjb3B5aW5nIGxlbmd0aCBieXRlcyBmcm9tIGRhdGEgcG9p bnRlciwKKyAqIGFuZCByZXR1cm5pbmcgbmV3IGJsb2IgSUQuCisgKi8KK3N0cnVjdCBkcm1fbW9k ZV9jcmVhdGVfYmxvYiB7CisJLyoqIFBvaW50ZXIgdG8gZGF0YSB0byBjb3B5LiAqLworCV9fdTY0 IGRhdGE7CisJLyoqIExlbmd0aCBvZiBkYXRhIHRvIGNvcHkuICovCisJX191MzIgbGVuZ3RoOwor CS8qKiBSZXR1cm46IG5ldyBwcm9wZXJ0eSBJRC4gKi8KKwlfX3UzMiBibG9iX2lkOworfTsKKwor LyoqCisgKiBEZXN0cm95IGEgdXNlci1jcmVhdGVkIGJsb2IgcHJvcGVydHkuCisgKi8KK3N0cnVj dCBkcm1fbW9kZV9kZXN0cm95X2Jsb2IgeworCV9fdTMyIGJsb2JfaWQ7Cit9OworCisvKioKKyAq IExlYXNlIG1vZGUgcmVzb3VyY2VzLCBjcmVhdGluZyBhbm90aGVyIGRybV9tYXN0ZXIuCisgKi8K K3N0cnVjdCBkcm1fbW9kZV9jcmVhdGVfbGVhc2UgeworCS8qKiBQb2ludGVyIHRvIGFycmF5IG9m IG9iamVjdCBpZHMgKF9fdTMyKSAqLworCV9fdTY0IG9iamVjdF9pZHM7CisJLyoqIE51bWJlciBv ZiBvYmplY3QgaWRzICovCisJX191MzIgb2JqZWN0X2NvdW50OworCS8qKiBmbGFncyBmb3IgbmV3 IEZEIChPX0NMT0VYRUMsIGV0YykgKi8KKwlfX3UzMiBmbGFnczsKKworCS8qKiBSZXR1cm46IHVu aXF1ZSBpZGVudGlmaWVyIGZvciBsZXNzZWUuICovCisJX191MzIgbGVzc2VlX2lkOworCS8qKiBS ZXR1cm46IGZpbGUgZGVzY3JpcHRvciB0byBuZXcgZHJtX21hc3RlciBmaWxlICovCisJX191MzIg ZmQ7Cit9OworCisvKioKKyAqIExpc3QgbGVzc2VzIGZyb20gYSBkcm1fbWFzdGVyCisgKi8KK3N0 cnVjdCBkcm1fbW9kZV9saXN0X2xlc3NlZXMgeworCS8qKiBOdW1iZXIgb2YgbGVzc2Vlcy4KKwkg KiBPbiBpbnB1dCwgcHJvdmlkZXMgbGVuZ3RoIG9mIHRoZSBhcnJheS4KKwkgKiBPbiBvdXRwdXQs IHByb3ZpZGVzIHRvdGFsIG51bWJlci4gTm8KKwkgKiBtb3JlIHRoYW4gdGhlIGlucHV0IG51bWJl ciB3aWxsIGJlIHdyaXR0ZW4KKwkgKiBiYWNrLCBzbyB0d28gY2FsbHMgY2FuIGJlIHVzZWQgdG8g Z2V0CisJICogdGhlIHNpemUgYW5kIHRoZW4gdGhlIGRhdGEuCisJICovCisJX191MzIgY291bnRf bGVzc2VlczsKKwlfX3UzMiBwYWQ7CisKKwkvKiogUG9pbnRlciB0byBsZXNzZWVzLgorCSAqIHBv aW50ZXIgdG8gX191NjQgYXJyYXkgb2YgbGVzc2VlIGlkcworCSAqLworCV9fdTY0IGxlc3NlZXNf cHRyOworfTsKKworLyoqCisgKiBHZXQgbGVhc2VkIG9iamVjdHMKKyAqLworc3RydWN0IGRybV9t b2RlX2dldF9sZWFzZSB7CisJLyoqIE51bWJlciBvZiBsZWFzZWQgb2JqZWN0cy4KKwkgKiBPbiBp bnB1dCwgcHJvdmlkZXMgbGVuZ3RoIG9mIHRoZSBhcnJheS4KKwkgKiBPbiBvdXRwdXQsIHByb3Zp ZGVzIHRvdGFsIG51bWJlci4gTm8KKwkgKiBtb3JlIHRoYW4gdGhlIGlucHV0IG51bWJlciB3aWxs IGJlIHdyaXR0ZW4KKwkgKiBiYWNrLCBzbyB0d28gY2FsbHMgY2FuIGJlIHVzZWQgdG8gZ2V0CisJ ICogdGhlIHNpemUgYW5kIHRoZW4gdGhlIGRhdGEuCisJICovCisJX191MzIgY291bnRfb2JqZWN0 czsKKwlfX3UzMiBwYWQ7CisKKwkvKiogUG9pbnRlciB0byBvYmplY3RzLgorCSAqIHBvaW50ZXIg dG8gX191MzIgYXJyYXkgb2Ygb2JqZWN0IGlkcworCSAqLworCV9fdTY0IG9iamVjdHNfcHRyOwor fTsKKworLyoqCisgKiBSZXZva2UgbGVhc2UKKyAqLworc3RydWN0IGRybV9tb2RlX3Jldm9rZV9s ZWFzZSB7CisJLyoqIFVuaXF1ZSBJRCBvZiBsZXNzZWUKKwkgKi8KKwlfX3UzMiBsZXNzZWVfaWQ7 Cit9OworCisjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKK30KKyNlbmRpZgorCisjZW5kaWYKZGlm ZiAtLWdpdCBhL2luY2x1ZGUvZHJtLXVhcGkvZHJtX3NhcmVhLmggYi9pbmNsdWRlL2RybS11YXBp L2RybV9zYXJlYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOTMw MjViZThiZGNhCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9kcm0tdWFwaS9kcm1fc2FyZWEu aApAQCAtMCwwICsxLDkyIEBACisvKioKKyAqIFxmaWxlIGRybV9zYXJlYS5oCisgKiBcYnJpZWYg U0FSRUEgZGVmaW5pdGlvbnMKKyAqCisgKiBcYXV0aG9yIE1pY2hlbCBEw6RuemVyIDxtaWNoZWxA ZGFlbnplci5uZXQ+CisgKi8KKworLyoKKyAqIENvcHlyaWdodCAyMDAyIFR1bmdzdGVuIEdyYXBo aWNzLCBJbmMuLCBDZWRhciBQYXJrLCBUZXhhcy4KKyAqIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg KgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFu eSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2Np YXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGlu IHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1p dGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlz aCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUg U29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUg aXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u czoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u IG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1 ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0 d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBX QVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJV VCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4g Tk8gRVZFTlQgU0hBTEwKKyAqIFRVTkdTVEVOIEdSQVBISUNTIEFORC9PUiBJVFMgU1VQUExJRVJT IEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCisgKiBPVEhFUiBMSUFCSUxJVFks IFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKKyAq IEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUg T1IgVEhFIFVTRSBPUgorICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICovCisK KyNpZm5kZWYgX0RSTV9TQVJFQV9IXworI2RlZmluZSBfRFJNX1NBUkVBX0hfCisKKyNpbmNsdWRl ICJkcm0uaCIKKworI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpCitleHRlcm4gIkMiIHsKKyNlbmRp ZgorCisvKiBTQVJFQSBhcmVhIG5lZWRzIHRvIGJlIGF0IGxlYXN0IGEgcGFnZSAqLworI2lmIGRl ZmluZWQoX19hbHBoYV9fKQorI2RlZmluZSBTQVJFQV9NQVggICAgICAgICAgICAgICAgICAgICAg IDB4MjAwMFUKKyNlbGlmIGRlZmluZWQoX19taXBzX18pCisjZGVmaW5lIFNBUkVBX01BWCAgICAg ICAgICAgICAgICAgICAgICAgMHg0MDAwVQorI2VsaWYgZGVmaW5lZChfX2lhNjRfXykKKyNkZWZp bmUgU0FSRUFfTUFYICAgICAgICAgICAgICAgICAgICAgICAweDEwMDAwVQkvKiA2NGtCICovCisj ZWxzZQorLyogSW50ZWwgODMwTSBkcml2ZXIgbmVlZHMgYXQgbGVhc3QgOGsgU0FSRUEgKi8KKyNk ZWZpbmUgU0FSRUFfTUFYICAgICAgICAgICAgICAgICAgICAgICAweDIwMDBVCisjZW5kaWYKKwor LyoqIE1heGltdW0gbnVtYmVyIG9mIGRyYXdhYmxlcyBpbiB0aGUgU0FSRUEgKi8KKyNkZWZpbmUg U0FSRUFfTUFYX0RSQVdBQkxFUwkJMjU2CisKKyNkZWZpbmUgU0FSRUFfRFJBV0FCTEVfQ0xBSU1F RF9FTlRSWSAgICAweDgwMDAwMDAwCisKKy8qKiBTQVJFQSBkcmF3YWJsZSAqLworc3RydWN0IGRy bV9zYXJlYV9kcmF3YWJsZSB7CisJdW5zaWduZWQgaW50IHN0YW1wOworCXVuc2lnbmVkIGludCBm bGFnczsKK307CisKKy8qKiBTQVJFQSBmcmFtZSAqLworc3RydWN0IGRybV9zYXJlYV9mcmFtZSB7 CisJdW5zaWduZWQgaW50IHg7CisJdW5zaWduZWQgaW50IHk7CisJdW5zaWduZWQgaW50IHdpZHRo OworCXVuc2lnbmVkIGludCBoZWlnaHQ7CisJdW5zaWduZWQgaW50IGZ1bGxzY3JlZW47Cit9Owor CisvKiogU0FSRUEgKi8KK3N0cnVjdCBkcm1fc2FyZWEgeworICAgIC8qKiBmaXJzdCB0aGluZyBp cyBhbHdheXMgdGhlIERSTSBsb2NraW5nIHN0cnVjdHVyZSAqLworCXN0cnVjdCBkcm1faHdfbG9j ayBsb2NrOworICAgIC8qKiBcdG9kbyBVc2UgcmVhZGVycy93cml0ZXIgbG9jayBmb3IgZHJtX3Nh cmVhOjpkcmF3YWJsZV9sb2NrICovCisJc3RydWN0IGRybV9od19sb2NrIGRyYXdhYmxlX2xvY2s7 CisJc3RydWN0IGRybV9zYXJlYV9kcmF3YWJsZSBkcmF3YWJsZVRhYmxlW1NBUkVBX01BWF9EUkFX QUJMRVNdOwkvKio8IGRyYXdhYmxlcyAqLworCXN0cnVjdCBkcm1fc2FyZWFfZnJhbWUgZnJhbWU7 CS8qKjwgZnJhbWUgKi8KKwlkcm1fY29udGV4dF90IGR1bW15X2NvbnRleHQ7Cit9OworCit0eXBl ZGVmIHN0cnVjdCBkcm1fc2FyZWFfZHJhd2FibGUgZHJtX3NhcmVhX2RyYXdhYmxlX3Q7Cit0eXBl ZGVmIHN0cnVjdCBkcm1fc2FyZWFfZnJhbWUgZHJtX3NhcmVhX2ZyYW1lX3Q7Cit0eXBlZGVmIHN0 cnVjdCBkcm1fc2FyZWEgZHJtX3NhcmVhX3Q7CisKKyNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQor fQorI2VuZGlmCisKKyNlbmRpZgkJCQkvKiBfRFJNX1NBUkVBX0hfICovCmRpZmYgLS1naXQgYS9p bmNsdWRlL2RybS11YXBpL2V0bmF2aXZfZHJtLmggYi9pbmNsdWRlL2RybS11YXBpL2V0bmF2aXZf ZHJtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xMTBjYzczYmY1 NDkKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2RybS11YXBpL2V0bmF2aXZfZHJtLmgKQEAg LTAsMCArMSwyODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgRXRuYXZpdiBQcm9qZWN0 CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKKyAqIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5U QUJJTElUWSBvcgorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgorICogbW9yZSBkZXRhaWxzLgorICoKKyAq IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFsb25nIHdpdGgKKyAqIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisjaWZuZGVmIF9fRVROQVZJVl9EUk1f SF9fCisjZGVmaW5lIF9fRVROQVZJVl9EUk1fSF9fCisKKyNpbmNsdWRlICJkcm0uaCIKKworI2lm IGRlZmluZWQoX19jcGx1c3BsdXMpCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKiBQbGVhc2Ug bm90ZSB0aGF0IG1vZGlmaWNhdGlvbnMgdG8gYWxsIHN0cnVjdHMgZGVmaW5lZCBoZXJlIGFyZQor ICogc3ViamVjdCB0byBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSBjb25zdHJhaW50czoKKyAqICAx KSBEbyBub3QgdXNlIHBvaW50ZXJzLCB1c2UgX191NjQgaW5zdGVhZCBmb3IgMzIgYml0IC8gNjQg Yml0CisgKiAgICAgdXNlci9rZXJuZWwgY29tcGF0aWJpbGl0eQorICogIDIpIEtlZXAgZmllbGRz IGFsaWduZWQgdG8gdGhlaXIgc2l6ZQorICogIDMpIEJlY2F1c2Ugb2YgaG93IGRybV9pb2N0bCgp IHdvcmtzLCB3ZSBjYW4gYWRkIG5ldyBmaWVsZHMgYXQKKyAqICAgICB0aGUgZW5kIG9mIGFuIGlv Y3RsIGlmIHNvbWUgY2FyZSBpcyB0YWtlbjogZHJtX2lvY3RsKCkgd2lsbAorICogICAgIHplcm8g b3V0IHRoZSBuZXcgZmllbGRzIGF0IHRoZSB0YWlsIG9mIHRoZSBpb2N0bCwgc28gYSB6ZXJvCisg KiAgICAgdmFsdWUgc2hvdWxkIGhhdmUgYSBiYWNrd2FyZHMgY29tcGF0aWJsZSBtZWFuaW5nLiAg QW5kIGZvcgorICogICAgIG91dHB1dCBwYXJhbXMsIHVzZXJzcGFjZSB3b24ndCBzZWUgdGhlIG5l d2x5IGFkZGVkIG91dHB1dAorICogICAgIGZpZWxkcy4uIHNvIHRoYXQgaGFzIHRvIGJlIHNvbWVo b3cgb2suCisgKi8KKworLyogdGltZW91dHMgYXJlIHNwZWNpZmllZCBpbiBjbG9jay1tb25vdG9u aWMgYWJzb2x1dGUgdGltZXMgKHRvIHNpbXBsaWZ5CisgKiByZXN0YXJ0aW5nIGludGVycnVwdGVk IGlvY3RscykuICBUaGUgZm9sbG93aW5nIHN0cnVjdCBpcyBsb2dpY2FsbHkgdGhlCisgKiBzYW1l IGFzICdzdHJ1Y3QgdGltZXNwZWMnIGJ1dCAzMi82NGIgQUJJIHNhZmUuCisgKi8KK3N0cnVjdCBk cm1fZXRuYXZpdl90aW1lc3BlYyB7CisJX19zNjQgdHZfc2VjOyAgICAgICAgICAvKiBzZWNvbmRz ICovCisJX19zNjQgdHZfbnNlYzsgICAgICAgICAvKiBuYW5vc2Vjb25kcyAqLworfTsKKworI2Rl ZmluZSBFVE5BVklWX1BBUkFNX0dQVV9NT0RFTCAgICAgICAgICAgICAgICAgICAgIDB4MDEKKyNk ZWZpbmUgRVROQVZJVl9QQVJBTV9HUFVfUkVWSVNJT04gICAgICAgICAgICAgICAgICAweDAyCisj ZGVmaW5lIEVUTkFWSVZfUEFSQU1fR1BVX0ZFQVRVUkVTXzAgICAgICAgICAgICAgICAgMHgwMwor I2RlZmluZSBFVE5BVklWX1BBUkFNX0dQVV9GRUFUVVJFU18xICAgICAgICAgICAgICAgIDB4MDQK KyNkZWZpbmUgRVROQVZJVl9QQVJBTV9HUFVfRkVBVFVSRVNfMiAgICAgICAgICAgICAgICAweDA1 CisjZGVmaW5lIEVUTkFWSVZfUEFSQU1fR1BVX0ZFQVRVUkVTXzMgICAgICAgICAgICAgICAgMHgw NgorI2RlZmluZSBFVE5BVklWX1BBUkFNX0dQVV9GRUFUVVJFU180ICAgICAgICAgICAgICAgIDB4 MDcKKyNkZWZpbmUgRVROQVZJVl9QQVJBTV9HUFVfRkVBVFVSRVNfNSAgICAgICAgICAgICAgICAw eDA4CisjZGVmaW5lIEVUTkFWSVZfUEFSQU1fR1BVX0ZFQVRVUkVTXzYgICAgICAgICAgICAgICAg MHgwOQorCisjZGVmaW5lIEVUTkFWSVZfUEFSQU1fR1BVX1NUUkVBTV9DT1VOVCAgICAgICAgICAg ICAgMHgxMAorI2RlZmluZSBFVE5BVklWX1BBUkFNX0dQVV9SRUdJU1RFUl9NQVggICAgICAgICAg ICAgIDB4MTEKKyNkZWZpbmUgRVROQVZJVl9QQVJBTV9HUFVfVEhSRUFEX0NPVU5UICAgICAgICAg ICAgICAweDEyCisjZGVmaW5lIEVUTkFWSVZfUEFSQU1fR1BVX1ZFUlRFWF9DQUNIRV9TSVpFICAg ICAgICAgMHgxMworI2RlZmluZSBFVE5BVklWX1BBUkFNX0dQVV9TSEFERVJfQ09SRV9DT1VOVCAg ICAgICAgIDB4MTQKKyNkZWZpbmUgRVROQVZJVl9QQVJBTV9HUFVfUElYRUxfUElQRVMgICAgICAg ICAgICAgICAweDE1CisjZGVmaW5lIEVUTkFWSVZfUEFSQU1fR1BVX1ZFUlRFWF9PVVRQVVRfQlVG RkVSX1NJWkUgMHgxNgorI2RlZmluZSBFVE5BVklWX1BBUkFNX0dQVV9CVUZGRVJfU0laRSAgICAg ICAgICAgICAgIDB4MTcKKyNkZWZpbmUgRVROQVZJVl9QQVJBTV9HUFVfSU5TVFJVQ1RJT05fQ09V TlQgICAgICAgICAweDE4CisjZGVmaW5lIEVUTkFWSVZfUEFSQU1fR1BVX05VTV9DT05TVEFOVFMg ICAgICAgICAgICAgMHgxOQorI2RlZmluZSBFVE5BVklWX1BBUkFNX0dQVV9OVU1fVkFSWUlOR1Mg ICAgICAgICAgICAgIDB4MWEKKworI2RlZmluZSBFVE5BX01BWF9QSVBFUyA0CisKK3N0cnVjdCBk cm1fZXRuYXZpdl9wYXJhbSB7CisJX191MzIgcGlwZTsgICAgICAgICAgIC8qIGluICovCisJX191 MzIgcGFyYW07ICAgICAgICAgIC8qIGluLCBFVE5BVklWX1BBUkFNX3ggKi8KKwlfX3U2NCB2YWx1 ZTsgICAgICAgICAgLyogb3V0IChnZXRfcGFyYW0pIG9yIGluIChzZXRfcGFyYW0pICovCit9Owor CisvKgorICogR0VNIGJ1ZmZlcnM6CisgKi8KKworI2RlZmluZSBFVE5BX0JPX0NBQ0hFX01BU0sg ICAweDAwMGYwMDAwCisvKiBjYWNoZSBtb2RlcyAqLworI2RlZmluZSBFVE5BX0JPX0NBQ0hFRCAg ICAgICAweDAwMDEwMDAwCisjZGVmaW5lIEVUTkFfQk9fV0MgICAgICAgICAgIDB4MDAwMjAwMDAK KyNkZWZpbmUgRVROQV9CT19VTkNBQ0hFRCAgICAgMHgwMDA0MDAwMAorLyogbWFwIGZsYWdzICov CisjZGVmaW5lIEVUTkFfQk9fRk9SQ0VfTU1VICAgIDB4MDAxMDAwMDAKKworc3RydWN0IGRybV9l dG5hdml2X2dlbV9uZXcgeworCV9fdTY0IHNpemU7ICAgICAgICAgICAvKiBpbiAqLworCV9fdTMy IGZsYWdzOyAgICAgICAgICAvKiBpbiwgbWFzayBvZiBFVE5BX0JPX3ggKi8KKwlfX3UzMiBoYW5k bGU7ICAgICAgICAgLyogb3V0ICovCit9OworCitzdHJ1Y3QgZHJtX2V0bmF2aXZfZ2VtX2luZm8g eworCV9fdTMyIGhhbmRsZTsgICAgICAgICAvKiBpbiAqLworCV9fdTMyIHBhZDsKKwlfX3U2NCBv ZmZzZXQ7ICAgICAgICAgLyogb3V0LCBvZmZzZXQgdG8gcGFzcyB0byBtbWFwKCkgKi8KK307CisK KyNkZWZpbmUgRVROQV9QUkVQX1JFQUQgICAgICAgIDB4MDEKKyNkZWZpbmUgRVROQV9QUkVQX1dS SVRFICAgICAgIDB4MDIKKyNkZWZpbmUgRVROQV9QUkVQX05PU1lOQyAgICAgIDB4MDQKKworc3Ry dWN0IGRybV9ldG5hdml2X2dlbV9jcHVfcHJlcCB7CisJX191MzIgaGFuZGxlOyAgICAgICAgIC8q IGluICovCisJX191MzIgb3A7ICAgICAgICAgICAgIC8qIGluLCBtYXNrIG9mIEVUTkFfUFJFUF94 ICovCisJc3RydWN0IGRybV9ldG5hdml2X3RpbWVzcGVjIHRpbWVvdXQ7ICAgLyogaW4gKi8KK307 CisKK3N0cnVjdCBkcm1fZXRuYXZpdl9nZW1fY3B1X2ZpbmkgeworCV9fdTMyIGhhbmRsZTsgICAg ICAgICAvKiBpbiAqLworCV9fdTMyIGZsYWdzOyAgICAgICAgICAvKiBpbiwgcGxhY2Vob2xkZXIg Zm9yIG5vdywgbm8gZGVmaW5lZCB2YWx1ZXMgKi8KK307CisKKy8qCisgKiBDbWRzdHJlYW0gU3Vi bWlzc2lvbjoKKyAqLworCisvKiBUaGUgdmFsdWUgd3JpdHRlbiBpbnRvIHRoZSBjbWRzdHJlYW0g aXMgbG9naWNhbGx5OgorICogcmVsb2NidWYtPmdwdWFkZHIgKyByZWxvY19vZmZzZXQKKyAqCisg KiBOT1RFIHRoYXQgcmVsb2MncyBtdXN0IGJlIHNvcnRlZCBieSBvcmRlciBvZiBpbmNyZWFzaW5n IHN1Ym1pdF9vZmZzZXQsCisgKiBvdGhlcndpc2UgRUlOVkFMLgorICovCitzdHJ1Y3QgZHJtX2V0 bmF2aXZfZ2VtX3N1Ym1pdF9yZWxvYyB7CisJX191MzIgc3VibWl0X29mZnNldDsgIC8qIGluLCBv ZmZzZXQgZnJvbSBzdWJtaXRfYm8gKi8KKwlfX3UzMiByZWxvY19pZHg7ICAgICAgLyogaW4sIGlu ZGV4IG9mIHJlbG9jX2JvIGJ1ZmZlciAqLworCV9fdTY0IHJlbG9jX29mZnNldDsgICAvKiBpbiwg b2Zmc2V0IGZyb20gc3RhcnQgb2YgcmVsb2NfYm8gKi8KKwlfX3UzMiBmbGFnczsgICAgICAgICAg LyogaW4sIHBsYWNlaG9sZGVyIGZvciBub3csIG5vIGRlZmluZWQgdmFsdWVzICovCit9OworCisv KiBFYWNoIGJ1ZmZlciByZWZlcmVuY2VkIGVsc2V3aGVyZSBpbiB0aGUgY21kc3RyZWFtIHN1Ym1p dCAoaWUuIHRoZQorICogY21kc3RyZWFtIGJ1ZmZlcihzKSB0aGVtc2VsdmVzIG9yIHJlbG9jIGVu dHJpZXMpIGhhcyBvbmUgKGFuZCBvbmx5CisgKiBvbmUpIGVudHJ5IGluIHRoZSBzdWJtaXQtPmJv c1tdIHRhYmxlLgorICoKKyAqIEFzIGEgb3B0aW1pemF0aW9uLCB0aGUgY3VycmVudCBidWZmZXIg KGdwdSB2aXJ0dWFsIGFkZHJlc3MpIGNhbiBiZQorICogcGFzc2VkIGJhY2sgdGhyb3VnaCB0aGUg J3ByZXN1bWVkJyBmaWVsZC4gIElmIG9uIGEgc3Vic2VxdWVudCByZWxvYywKKyAqIHVzZXJzcGFj ZSBwYXNzZXMgYmFjayBhICdwcmVzdW1lZCcgYWRkcmVzcyB0aGF0IGlzIHN0aWxsIHZhbGlkLAor ICogdGhlbiBwYXRjaGluZyB0aGUgY21kc3RyZWFtIGZvciB0aGlzIGVudHJ5IGlzIHNraXBwZWQu ICBUaGlzIGNhbgorICogYXZvaWQga2VybmVsIG5lZWRpbmcgdG8gbWFwL2FjY2VzcyB0aGUgY21k c3RyZWFtIGJvIGluIHRoZSBjb21tb24KKyAqIGNhc2UuCisgKi8KKyNkZWZpbmUgRVROQV9TVUJN SVRfQk9fUkVBRCAgICAgICAgICAgICAweDAwMDEKKyNkZWZpbmUgRVROQV9TVUJNSVRfQk9fV1JJ VEUgICAgICAgICAgICAweDAwMDIKK3N0cnVjdCBkcm1fZXRuYXZpdl9nZW1fc3VibWl0X2JvIHsK KwlfX3UzMiBmbGFnczsgICAgICAgICAgLyogaW4sIG1hc2sgb2YgRVROQV9TVUJNSVRfQk9feCAq LworCV9fdTMyIGhhbmRsZTsgICAgICAgICAvKiBpbiwgR0VNIGhhbmRsZSAqLworCV9fdTY0IHBy ZXN1bWVkOyAgICAgICAvKiBpbi9vdXQsIHByZXN1bWVkIGJ1ZmZlciBhZGRyZXNzICovCit9Owor CisvKiBwZXJmb3JtYW5jZSBtb25pdG9yIHJlcXVlc3QgKHBtcikgKi8KKyNkZWZpbmUgRVROQV9Q TV9QUk9DRVNTX1BSRSAgICAgICAgICAgICAweDAwMDEKKyNkZWZpbmUgRVROQV9QTV9QUk9DRVNT X1BPU1QgICAgICAgICAgICAweDAwMDIKK3N0cnVjdCBkcm1fZXRuYXZpdl9nZW1fc3VibWl0X3Bt ciB7CisJX191MzIgZmxhZ3M7ICAgICAgICAgIC8qIGluLCB3aGVuIHRvIHByb2Nlc3MgcmVxdWVz dCAoRVROQV9QTV9QUk9DRVNTX3gpICovCisJX191OCAgZG9tYWluOyAgICAgICAgIC8qIGluLCBw bSBkb21haW4gKi8KKwlfX3U4ICBwYWQ7CisJX191MTYgc2lnbmFsOyAgICAgICAgIC8qIGluLCBw bSBzaWduYWwgKi8KKwlfX3UzMiBzZXF1ZW5jZTsgICAgICAgLyogaW4sIHNlcXVlbmNlIG51bWJl ciAqLworCV9fdTMyIHJlYWRfb2Zmc2V0OyAgICAvKiBpbiwgb2Zmc2V0IGZyb20gcmVhZF9ibyAq LworCV9fdTMyIHJlYWRfaWR4OyAgICAgICAvKiBpbiwgaW5kZXggb2YgcmVhZF9ibyBidWZmZXIg Ki8KK307CisKKy8qIEVhY2ggY21kc3RyZWFtIHN1Ym1pdCBjb25zaXN0cyBvZiBhIHRhYmxlIG9m IGJ1ZmZlcnMgaW52b2x2ZWQsIGFuZAorICogb25lIG9yIG1vcmUgY21kc3RyZWFtIGJ1ZmZlcnMu ICBUaGlzIGFsbG93cyBmb3IgY29uZGl0aW9uYWwgZXhlY3V0aW9uCisgKiAoY29udGV4dC1yZXN0 b3JlKSwgYW5kIElCIGJ1ZmZlcnMgbmVlZGVkIGZvciBwZXIgdGlsZS9iaW4gZHJhdyBjbWRzLgor ICovCisjZGVmaW5lIEVUTkFfU1VCTUlUX05PX0lNUExJQ0lUICAgICAgICAgMHgwMDAxCisjZGVm aW5lIEVUTkFfU1VCTUlUX0ZFTkNFX0ZEX0lOICAgICAgICAgMHgwMDAyCisjZGVmaW5lIEVUTkFf U1VCTUlUX0ZFTkNFX0ZEX09VVCAgICAgICAgMHgwMDA0CisjZGVmaW5lIEVUTkFfU1VCTUlUX0ZM QUdTCQkoRVROQV9TVUJNSVRfTk9fSU1QTElDSVQgfCBcCisJCQkJCSBFVE5BX1NVQk1JVF9GRU5D RV9GRF9JTiB8IFwKKwkJCQkJIEVUTkFfU1VCTUlUX0ZFTkNFX0ZEX09VVCkKKyNkZWZpbmUgRVRO QV9QSVBFXzNEICAgICAgMHgwMAorI2RlZmluZSBFVE5BX1BJUEVfMkQgICAgICAweDAxCisjZGVm aW5lIEVUTkFfUElQRV9WRyAgICAgIDB4MDIKK3N0cnVjdCBkcm1fZXRuYXZpdl9nZW1fc3VibWl0 IHsKKwlfX3UzMiBmZW5jZTsgICAgICAgICAgLyogb3V0ICovCisJX191MzIgcGlwZTsgICAgICAg ICAgIC8qIGluICovCisJX191MzIgZXhlY19zdGF0ZTsgICAgIC8qIGluLCBpbml0aWFsIGV4ZWN1 dGlvbiBzdGF0ZSAoRVROQV9QSVBFX3gpICovCisJX191MzIgbnJfYm9zOyAgICAgICAgIC8qIGlu LCBudW1iZXIgb2Ygc3VibWl0X2JvJ3MgKi8KKwlfX3UzMiBucl9yZWxvY3M7ICAgICAgLyogaW4s IG51bWJlciBvZiBzdWJtaXRfcmVsb2MncyAqLworCV9fdTMyIHN0cmVhbV9zaXplOyAgICAvKiBp biwgY21kc3RyZWFtIHNpemUgKi8KKwlfX3U2NCBib3M7ICAgICAgICAgICAgLyogaW4sIHB0ciB0 byBhcnJheSBvZiBzdWJtaXRfYm8ncyAqLworCV9fdTY0IHJlbG9jczsgICAgICAgICAvKiBpbiwg cHRyIHRvIGFycmF5IG9mIHN1Ym1pdF9yZWxvYydzICovCisJX191NjQgc3RyZWFtOyAgICAgICAg IC8qIGluLCBwdHIgdG8gY21kc3RyZWFtICovCisJX191MzIgZmxhZ3M7ICAgICAgICAgIC8qIGlu LCBtYXNrIG9mIEVUTkFfU1VCTUlUX3ggKi8KKwlfX3MzMiBmZW5jZV9mZDsgICAgICAgLyogaW4v b3V0LCBmZW5jZSBmZCAoc2VlIEVUTkFfU1VCTUlUX0ZFTkNFX0ZEX3gpICovCisJX191NjQgcG1y czsgICAgICAgICAgIC8qIGluLCBwdHIgdG8gYXJyYXkgb2Ygc3VibWl0X3BtcidzICovCisJX191 MzIgbnJfcG1yczsgICAgICAgIC8qIGluLCBudW1iZXIgb2Ygc3VibWl0X3BtcidzICovCisJX191 MzIgcGFkOworfTsKKworLyogVGhlIG5vcm1hbCB3YXkgdG8gc3luY2hyb25pemUgd2l0aCB0aGUg R1BVIGlzIGp1c3QgdG8gQ1BVX1BSRVAgb24KKyAqIGEgYnVmZmVyIGlmIHlvdSBuZWVkIHRvIGFj Y2VzcyBpdCBmcm9tIHRoZSBDUFUgKG90aGVyIGNtZHN0cmVhbQorICogc3VibWlzc2lvbiBmcm9t IHNhbWUgb3Igb3RoZXIgY29udGV4dHMsIFBBR0VfRkxJUCBpb2N0bCwgZXRjLCBhbGwKKyAqIGhh bmRsZSB0aGUgcmVxdWlyZWQgc3luY2hyb25pemF0aW9uIHVuZGVyIHRoZSBob29kKS4gIFRoaXMg aW9jdGwKKyAqIG1haW5seSBqdXN0IGV4aXN0cyBhcyBhIHdheSB0byBpbXBsZW1lbnQgdGhlIGdh bGxpdW0gcGlwZV9mZW5jZQorICogQVBJcyB3aXRob3V0IHJlcXVpcmluZyBhIGR1bW15IGJvIHRv IHN5bmNocm9uaXplIG9uLgorICovCisjZGVmaW5lIEVUTkFfV0FJVF9OT05CTE9DSyAgICAgIDB4 MDEKK3N0cnVjdCBkcm1fZXRuYXZpdl93YWl0X2ZlbmNlIHsKKwlfX3UzMiBwaXBlOyAgICAgICAg ICAgLyogaW4gKi8KKwlfX3UzMiBmZW5jZTsgICAgICAgICAgLyogaW4gKi8KKwlfX3UzMiBmbGFn czsgICAgICAgICAgLyogaW4sIG1hc2sgb2YgRVROQV9XQUlUX3ggKi8KKwlfX3UzMiBwYWQ7CisJ c3RydWN0IGRybV9ldG5hdml2X3RpbWVzcGVjIHRpbWVvdXQ7ICAgLyogaW4gKi8KK307CisKKyNk ZWZpbmUgRVROQV9VU0VSUFRSX1JFQUQJMHgwMQorI2RlZmluZSBFVE5BX1VTRVJQVFJfV1JJVEUJ MHgwMgorc3RydWN0IGRybV9ldG5hdml2X2dlbV91c2VycHRyIHsKKwlfX3U2NCB1c2VyX3B0cjsJ LyogaW4sIHBhZ2UgYWxpZ25lZCB1c2VyIHBvaW50ZXIgKi8KKwlfX3U2NCB1c2VyX3NpemU7CS8q IGluLCBwYWdlIGFsaWduZWQgdXNlciBzaXplICovCisJX191MzIgZmxhZ3M7CQkvKiBpbiwgZmxh Z3MgKi8KKwlfX3UzMiBoYW5kbGU7CS8qIG91dCwgbm9uLXplcm8gaGFuZGxlICovCit9OworCitz dHJ1Y3QgZHJtX2V0bmF2aXZfZ2VtX3dhaXQgeworCV9fdTMyIHBpcGU7CQkJCS8qIGluICovCisJ X191MzIgaGFuZGxlOwkJCQkvKiBpbiwgYm8gdG8gYmUgd2FpdGVkIGZvciAqLworCV9fdTMyIGZs YWdzOwkJCQkvKiBpbiwgbWFzayBvZiBFVE5BX1dBSVRfeCAgKi8KKwlfX3UzMiBwYWQ7CisJc3Ry dWN0IGRybV9ldG5hdml2X3RpbWVzcGVjIHRpbWVvdXQ7CS8qIGluICovCit9OworCisvKgorICog UGVyZm9ybWFuY2UgTW9uaXRvciAoUE0pOgorICovCisKK3N0cnVjdCBkcm1fZXRuYXZpdl9wbV9k b21haW4geworCV9fdTMyIHBpcGU7ICAgICAgIC8qIGluICovCisJX191OCAgaXRlcjsgICAgICAg LyogaW4vb3V0LCBzZWxlY3QgcG0gZG9tYWluIGF0IGluZGV4IGl0ZXIgKi8KKwlfX3U4ICBpZDsg ICAgICAgICAvKiBvdXQsIGlkIG9mIGRvbWFpbiAqLworCV9fdTE2IG5yX3NpZ25hbHM7IC8qIG91 dCwgaG93IG1hbnkgc2lnbmFscyBkb2VzIHRoaXMgZG9tYWluIHByb3ZpZGUgKi8KKwljaGFyICBu YW1lWzY0XTsgICAvKiBvdXQsIG5hbWUgb2YgZG9tYWluICovCit9OworCitzdHJ1Y3QgZHJtX2V0 bmF2aXZfcG1fc2lnbmFsIHsKKwlfX3UzMiBwaXBlOyAgICAgICAvKiBpbiAqLworCV9fdTggIGRv bWFpbjsgICAgIC8qIGluLCBwbSBkb21haW4gaW5kZXggKi8KKwlfX3U4ICBwYWQ7CisJX191MTYg aXRlcjsgICAgICAgLyogaW4vb3V0LCBzZWxlY3QgcG0gc291cmNlIGF0IGluZGV4IGl0ZXIgKi8K KwlfX3UxNiBpZDsgICAgICAgICAvKiBvdXQsIGlkIG9mIHNpZ25hbCAqLworCWNoYXIgIG5hbWVb NjRdOyAgIC8qIG91dCwgbmFtZSBvZiBkb21haW4gKi8KK307CisKKyNkZWZpbmUgRFJNX0VUTkFW SVZfR0VUX1BBUkFNICAgICAgICAgIDB4MDAKKy8qIHBsYWNlaG9sZGVyOgorI2RlZmluZSBEUk1f RVROQVZJVl9TRVRfUEFSQU0gICAgICAgICAgMHgwMQorICovCisjZGVmaW5lIERSTV9FVE5BVklW X0dFTV9ORVcgICAgICAgICAgICAweDAyCisjZGVmaW5lIERSTV9FVE5BVklWX0dFTV9JTkZPICAg ICAgICAgICAweDAzCisjZGVmaW5lIERSTV9FVE5BVklWX0dFTV9DUFVfUFJFUCAgICAgICAweDA0 CisjZGVmaW5lIERSTV9FVE5BVklWX0dFTV9DUFVfRklOSSAgICAgICAweDA1CisjZGVmaW5lIERS TV9FVE5BVklWX0dFTV9TVUJNSVQgICAgICAgICAweDA2CisjZGVmaW5lIERSTV9FVE5BVklWX1dB SVRfRkVOQ0UgICAgICAgICAweDA3CisjZGVmaW5lIERSTV9FVE5BVklWX0dFTV9VU0VSUFRSICAg ICAgICAweDA4CisjZGVmaW5lIERSTV9FVE5BVklWX0dFTV9XQUlUICAgICAgICAgICAweDA5Cisj ZGVmaW5lIERSTV9FVE5BVklWX1BNX1FVRVJZX0RPTSAgICAgICAweDBhCisjZGVmaW5lIERSTV9F VE5BVklWX1BNX1FVRVJZX1NJRyAgICAgICAweDBiCisjZGVmaW5lIERSTV9FVE5BVklWX05VTV9J T0NUTFMgICAgICAgICAweDBjCisKKyNkZWZpbmUgRFJNX0lPQ1RMX0VUTkFWSVZfR0VUX1BBUkFN ICAgIERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fRVROQVZJVl9HRVRfUEFSQU0sIHN0 cnVjdCBkcm1fZXRuYXZpdl9wYXJhbSkKKyNkZWZpbmUgRFJNX0lPQ1RMX0VUTkFWSVZfR0VNX05F VyAgICAgIERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fRVROQVZJVl9HRU1fTkVXLCBz dHJ1Y3QgZHJtX2V0bmF2aXZfZ2VtX25ldykKKyNkZWZpbmUgRFJNX0lPQ1RMX0VUTkFWSVZfR0VN X0lORk8gICAgIERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fRVROQVZJVl9HRU1fSU5G Tywgc3RydWN0IGRybV9ldG5hdml2X2dlbV9pbmZvKQorI2RlZmluZSBEUk1fSU9DVExfRVROQVZJ Vl9HRU1fQ1BVX1BSRVAgRFJNX0lPVyhEUk1fQ09NTUFORF9CQVNFICsgRFJNX0VUTkFWSVZfR0VN X0NQVV9QUkVQLCBzdHJ1Y3QgZHJtX2V0bmF2aXZfZ2VtX2NwdV9wcmVwKQorI2RlZmluZSBEUk1f SU9DVExfRVROQVZJVl9HRU1fQ1BVX0ZJTkkgRFJNX0lPVyhEUk1fQ09NTUFORF9CQVNFICsgRFJN X0VUTkFWSVZfR0VNX0NQVV9GSU5JLCBzdHJ1Y3QgZHJtX2V0bmF2aXZfZ2VtX2NwdV9maW5pKQor I2RlZmluZSBEUk1fSU9DVExfRVROQVZJVl9HRU1fU1VCTUlUICAgRFJNX0lPV1IoRFJNX0NPTU1B TkRfQkFTRSArIERSTV9FVE5BVklWX0dFTV9TVUJNSVQsIHN0cnVjdCBkcm1fZXRuYXZpdl9nZW1f c3VibWl0KQorI2RlZmluZSBEUk1fSU9DVExfRVROQVZJVl9XQUlUX0ZFTkNFICAgRFJNX0lPVyhE Uk1fQ09NTUFORF9CQVNFICsgRFJNX0VUTkFWSVZfV0FJVF9GRU5DRSwgc3RydWN0IGRybV9ldG5h dml2X3dhaXRfZmVuY2UpCisjZGVmaW5lIERSTV9JT0NUTF9FVE5BVklWX0dFTV9VU0VSUFRSICBE Uk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0VUTkFWSVZfR0VNX1VTRVJQVFIsIHN0cnVj dCBkcm1fZXRuYXZpdl9nZW1fdXNlcnB0cikKKyNkZWZpbmUgRFJNX0lPQ1RMX0VUTkFWSVZfR0VN X1dBSVQgICAgIERSTV9JT1coRFJNX0NPTU1BTkRfQkFTRSArIERSTV9FVE5BVklWX0dFTV9XQUlU LCBzdHJ1Y3QgZHJtX2V0bmF2aXZfZ2VtX3dhaXQpCisjZGVmaW5lIERSTV9JT0NUTF9FVE5BVklW X1BNX1FVRVJZX0RPTSBEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0VUTkFWSVZfUE1f UVVFUllfRE9NLCBzdHJ1Y3QgZHJtX2V0bmF2aXZfcG1fZG9tYWluKQorI2RlZmluZSBEUk1fSU9D VExfRVROQVZJVl9QTV9RVUVSWV9TSUcgRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9F VE5BVklWX1BNX1FVRVJZX1NJRywgc3RydWN0IGRybV9ldG5hdml2X3BtX3NpZ25hbCkKKworI2lm IGRlZmluZWQoX19jcGx1c3BsdXMpCit9CisjZW5kaWYKKworI2VuZGlmIC8qIF9fRVROQVZJVl9E Uk1fSF9fICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS11YXBpL2V4eW5vc19kcm0uaCBiL2lu Y2x1ZGUvZHJtLXVhcGkvZXh5bm9zX2RybS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwMC4uMmEwNjRkMmJjZjJlCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9kcm0t dWFwaS9leHlub3NfZHJtLmgKQEAgLTAsMCArMSwzNzMgQEAKKy8qIGV4eW5vc19kcm0uaAorICoK KyAqIENvcHlyaWdodCAoYykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTHRkLgorICog QXV0aG9yczoKKyAqCUlua2kgRGFlIDxpbmtpLmRhZUBzYW1zdW5nLmNvbT4KKyAqCUpvb255b3Vu ZyBTaGltIDxqeTA5MjIuc2hpbUBzYW1zdW5nLmNvbT4KKyAqCVNldW5nLVdvbyBLaW0gPHN3MDMx Mi5raW1Ac2Ftc3VuZy5jb20+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlICBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciAgdGhl IHRlcm1zIG9mICB0aGUgR05VIEdlbmVyYWwgIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eSB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgIGVpdGhlciB2ZXJzaW9uIDIgb2Yg dGhlICBMaWNlbnNlLCBvciAoYXQgeW91cgorICogb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K KyAqLworCisjaWZuZGVmIF9FWFlOT1NfRFJNX0hfCisjZGVmaW5lIF9FWFlOT1NfRFJNX0hfCisK KyNpbmNsdWRlICJkcm0uaCIKKworI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpCitleHRlcm4gIkMi IHsKKyNlbmRpZgorCisvKioKKyAqIFVzZXItZGVzaXJlZCBidWZmZXIgY3JlYXRpb24gaW5mb3Jt YXRpb24gc3RydWN0dXJlLgorICoKKyAqIEBzaXplOiB1c2VyLWRlc2lyZWQgbWVtb3J5IGFsbG9j YXRpb24gc2l6ZS4KKyAqCS0gdGhpcyBzaXplIHZhbHVlIHdvdWxkIGJlIHBhZ2UtYWxpZ25lZCBp bnRlcm5hbGx5LgorICogQGZsYWdzOiB1c2VyIHJlcXVlc3QgZm9yIHNldHRpbmcgbWVtb3J5IHR5 cGUgb3IgY2FjaGUgYXR0cmlidXRlcy4KKyAqIEBoYW5kbGU6IHJldHVybmVkIGEgaGFuZGxlIHRv IGNyZWF0ZWQgZ2VtIG9iamVjdC4KKyAqCS0gdGhpcyBoYW5kbGUgd2lsbCBiZSBzZXQgYnkgZ2Vt IG1vZHVsZSBvZiBrZXJuZWwgc2lkZS4KKyAqLworc3RydWN0IGRybV9leHlub3NfZ2VtX2NyZWF0 ZSB7CisJX191NjQgc2l6ZTsKKwlfX3UzMiBmbGFnczsKKwlfX3UzMiBoYW5kbGU7Cit9OworCisv KioKKyAqIEEgc3RydWN0dXJlIGZvciBnZXR0aW5nIGEgZmFrZS1vZmZzZXQgdGhhdCBjYW4gYmUg dXNlZCB3aXRoIG1tYXAuCisgKgorICogQGhhbmRsZTogaGFuZGxlIG9mIGdlbSBvYmplY3QuCisg KiBAcmVzZXJ2ZWQ6IGp1c3QgcGFkZGluZyB0byBiZSA2NC1iaXQgYWxpZ25lZC4KKyAqIEBvZmZz ZXQ6IGEgZmFrZS1vZmZzZXQgb2YgZ2VtIG9iamVjdC4KKyAqLworc3RydWN0IGRybV9leHlub3Nf Z2VtX21hcCB7CisJX191MzIgaGFuZGxlOworCV9fdTMyIHJlc2VydmVkOworCV9fdTY0IG9mZnNl dDsKK307CisKKy8qKgorICogQSBzdHJ1Y3R1cmUgdG8gZ2VtIGluZm9ybWF0aW9uLgorICoKKyAq IEBoYW5kbGU6IGEgaGFuZGxlIHRvIGdlbSBvYmplY3QgY3JlYXRlZC4KKyAqIEBmbGFnczogZmxh ZyB2YWx1ZSBpbmNsdWRpbmcgbWVtb3J5IHR5cGUgYW5kIGNhY2hlIGF0dHJpYnV0ZSBhbmQKKyAq CXRoaXMgdmFsdWUgd291bGQgYmUgc2V0IGJ5IGRyaXZlci4KKyAqIEBzaXplOiBzaXplIHRvIG1l bW9yeSByZWdpb24gYWxsb2NhdGVkIGJ5IGdlbSBhbmQgdGhpcyBzaXplIHdvdWxkCisgKgliZSBz ZXQgYnkgZHJpdmVyLgorICovCitzdHJ1Y3QgZHJtX2V4eW5vc19nZW1faW5mbyB7CisJX191MzIg aGFuZGxlOworCV9fdTMyIGZsYWdzOworCV9fdTY0IHNpemU7Cit9OworCisvKioKKyAqIEEgc3Ry dWN0dXJlIGZvciB1c2VyIGNvbm5lY3Rpb24gcmVxdWVzdCBvZiB2aXJ0dWFsIGRpc3BsYXkuCisg KgorICogQGNvbm5lY3Rpb246IGluZGljYXRlIHdoZXRoZXIgZG9pbmcgY29ubmV0aW9uIG9yIG5v dCBieSB1c2VyLgorICogQGV4dGVuc2lvbnM6IGlmIHRoaXMgdmFsdWUgaXMgMSB0aGVuIHRoZSB2 aWRpIGRyaXZlciB3b3VsZCBuZWVkIGFkZGl0aW9uYWwKKyAqCTEyOGJ5dGVzIGVkaWQgZGF0YS4K KyAqIEBlZGlkOiB0aGUgZWRpZCBkYXRhIHBvaW50ZXIgZnJvbSB1c2VyIHNpZGUuCisgKi8KK3N0 cnVjdCBkcm1fZXh5bm9zX3ZpZGlfY29ubmVjdGlvbiB7CisJX191MzIgY29ubmVjdGlvbjsKKwlf X3UzMiBleHRlbnNpb25zOworCV9fdTY0IGVkaWQ7Cit9OworCisvKiBtZW1vcnkgdHlwZSBkZWZp bml0aW9ucy4gKi8KK2VudW0gZV9kcm1fZXh5bm9zX2dlbV9tZW1fdHlwZSB7CisJLyogUGh5c2lj YWxseSBDb250aW51b3VzIG1lbW9yeSBhbmQgdXNlZCBhcyBkZWZhdWx0LiAqLworCUVYWU5PU19C T19DT05USUcJPSAwIDw8IDAsCisJLyogUGh5c2ljYWxseSBOb24tQ29udGludW91cyBtZW1vcnku ICovCisJRVhZTk9TX0JPX05PTkNPTlRJRwk9IDEgPDwgMCwKKwkvKiBub24tY2FjaGFibGUgbWFw cGluZyBhbmQgdXNlZCBhcyBkZWZhdWx0LiAqLworCUVYWU5PU19CT19OT05DQUNIQUJMRQk9IDAg PDwgMSwKKwkvKiBjYWNoYWJsZSBtYXBwaW5nLiAqLworCUVYWU5PU19CT19DQUNIQUJMRQk9IDEg PDwgMSwKKwkvKiB3cml0ZS1jb21iaW5lIG1hcHBpbmcuICovCisJRVhZTk9TX0JPX1dDCQk9IDEg PDwgMiwKKwlFWFlOT1NfQk9fTUFTSwkJPSBFWFlOT1NfQk9fTk9OQ09OVElHIHwgRVhZTk9TX0JP X0NBQ0hBQkxFIHwKKwkJCQkJRVhZTk9TX0JPX1dDCit9OworCitzdHJ1Y3QgZHJtX2V4eW5vc19n MmRfZ2V0X3ZlciB7CisJX191MzIJbWFqb3I7CisJX191MzIJbWlub3I7Cit9OworCitzdHJ1Y3Qg ZHJtX2V4eW5vc19nMmRfY21kIHsKKwlfX3UzMglvZmZzZXQ7CisJX191MzIJZGF0YTsKK307CisK K2VudW0gZHJtX2V4eW5vc19nMmRfYnVmX3R5cGUgeworCUcyRF9CVUZfVVNFUlBUUiA9IDEgPDwg MzEsCit9OworCitlbnVtIGRybV9leHlub3NfZzJkX2V2ZW50X3R5cGUgeworCUcyRF9FVkVOVF9O T1QsCisJRzJEX0VWRU5UX05PTlNUT1AsCisJRzJEX0VWRU5UX1NUT1AsCQkvKiBub3QgeWV0ICov Cit9OworCitzdHJ1Y3QgZHJtX2V4eW5vc19nMmRfdXNlcnB0ciB7CisJdW5zaWduZWQgbG9uZyB1 c2VycHRyOworCXVuc2lnbmVkIGxvbmcgc2l6ZTsKK307CisKK3N0cnVjdCBkcm1fZXh5bm9zX2cy ZF9zZXRfY21kbGlzdCB7CisJX191NjQJCQkJCWNtZDsKKwlfX3U2NAkJCQkJY21kX2J1ZjsKKwlf X3UzMgkJCQkJY21kX25yOworCV9fdTMyCQkJCQljbWRfYnVmX25yOworCisJLyogZm9yIGcyZCBl dmVudCAqLworCV9fdTY0CQkJCQlldmVudF90eXBlOworCV9fdTY0CQkJCQl1c2VyX2RhdGE7Cit9 OworCitzdHJ1Y3QgZHJtX2V4eW5vc19nMmRfZXhlYyB7CisJX191NjQJCQkJCWFzeW5jOworfTsK KworZW51bSBkcm1fZXh5bm9zX29wc19pZCB7CisJRVhZTk9TX0RSTV9PUFNfU1JDLAorCUVYWU5P U19EUk1fT1BTX0RTVCwKKwlFWFlOT1NfRFJNX09QU19NQVgsCit9OworCitzdHJ1Y3QgZHJtX2V4 eW5vc19zeiB7CisJX191MzIJaHNpemU7CisJX191MzIJdnNpemU7Cit9OworCitzdHJ1Y3QgZHJt X2V4eW5vc19wb3MgeworCV9fdTMyCXg7CisJX191MzIJeTsKKwlfX3UzMgl3OworCV9fdTMyCWg7 Cit9OworCitlbnVtIGRybV9leHlub3NfZmxpcCB7CisJRVhZTk9TX0RSTV9GTElQX05PTkUgPSAo MCA8PCAwKSwKKwlFWFlOT1NfRFJNX0ZMSVBfVkVSVElDQUwgPSAoMSA8PCAwKSwKKwlFWFlOT1Nf RFJNX0ZMSVBfSE9SSVpPTlRBTCA9ICgxIDw8IDEpLAorCUVYWU5PU19EUk1fRkxJUF9CT1RIID0g RVhZTk9TX0RSTV9GTElQX1ZFUlRJQ0FMIHwKKwkJCUVYWU5PU19EUk1fRkxJUF9IT1JJWk9OVEFM LAorfTsKKworZW51bSBkcm1fZXh5bm9zX2RlZ3JlZSB7CisJRVhZTk9TX0RSTV9ERUdSRUVfMCwK KwlFWFlOT1NfRFJNX0RFR1JFRV85MCwKKwlFWFlOT1NfRFJNX0RFR1JFRV8xODAsCisJRVhZTk9T X0RSTV9ERUdSRUVfMjcwLAorfTsKKworZW51bSBkcm1fZXh5bm9zX3BsYW5lciB7CisJRVhZTk9T X0RSTV9QTEFOQVJfWSwKKwlFWFlOT1NfRFJNX1BMQU5BUl9DQiwKKwlFWFlOT1NfRFJNX1BMQU5B Ul9DUiwKKwlFWFlOT1NfRFJNX1BMQU5BUl9NQVgsCit9OworCisvKioKKyAqIEEgc3RydWN0dXJl IGZvciBpcHAgc3VwcG9ydGVkIHByb3BlcnR5IGxpc3QuCisgKgorICogQHZlcnNpb246IHZlcnNp b24gb2YgdGhpcyBzdHJ1Y3R1cmUuCisgKiBAaXBwX2lkOiBpZCBvZiBpcHAgZHJpdmVyLgorICog QGNvdW50OiBjb3VudCBvZiBpcHAgZHJpdmVyLgorICogQHdyaXRlYmFjazogZmxhZyBvZiB3cml0 ZWJhY2sgc3VwcG9ydGluZy4KKyAqIEBmbGlwOiBmbGFnIG9mIGZsaXAgc3VwcG9ydGluZy4KKyAq IEBkZWdyZWU6IGZsYWcgb2YgZGVncmVlIGluZm9ybWF0aW9uLgorICogQGNzYzogZmxhZyBvZiBj c2Mgc3VwcG9ydGluZy4KKyAqIEBjcm9wOiBmbGFnIG9mIGNyb3Agc3VwcG9ydGluZy4KKyAqIEBz Y2FsZTogZmxhZyBvZiBzY2FsZSBzdXBwb3J0aW5nLgorICogQHJlZnJlc2hfbWluOiBtaW4gaHog b2YgcmVmcmVzaC4KKyAqIEByZWZyZXNoX21heDogbWF4IGh6IG9mIHJlZnJlc2guCisgKiBAY3Jv cF9taW46IGNyb3AgbWluIHJlc29sdXRpb24uCisgKiBAY3JvcF9tYXg6IGNyb3AgbWF4IHJlc29s dXRpb24uCisgKiBAc2NhbGVfbWluOiBzY2FsZSBtaW4gcmVzb2x1dGlvbi4KKyAqIEBzY2FsZV9t YXg6IHNjYWxlIG1heCByZXNvbHV0aW9uLgorICovCitzdHJ1Y3QgZHJtX2V4eW5vc19pcHBfcHJv cF9saXN0IHsKKwlfX3UzMgl2ZXJzaW9uOworCV9fdTMyCWlwcF9pZDsKKwlfX3UzMgljb3VudDsK KwlfX3UzMgl3cml0ZWJhY2s7CisJX191MzIJZmxpcDsKKwlfX3UzMglkZWdyZWU7CisJX191MzIJ Y3NjOworCV9fdTMyCWNyb3A7CisJX191MzIJc2NhbGU7CisJX191MzIJcmVmcmVzaF9taW47CisJ X191MzIJcmVmcmVzaF9tYXg7CisJX191MzIJcmVzZXJ2ZWQ7CisJc3RydWN0IGRybV9leHlub3Nf c3oJY3JvcF9taW47CisJc3RydWN0IGRybV9leHlub3Nfc3oJY3JvcF9tYXg7CisJc3RydWN0IGRy bV9leHlub3Nfc3oJc2NhbGVfbWluOworCXN0cnVjdCBkcm1fZXh5bm9zX3N6CXNjYWxlX21heDsK K307CisKKy8qKgorICogQSBzdHJ1Y3R1cmUgZm9yIGlwcCBjb25maWcuCisgKgorICogQG9wc19p ZDogcHJvcGVydHkgb2Ygb3BlcmF0aW9uIGRpcmVjdGlvbnMuCisgKiBAZmxpcDogcHJvcGVydHkg b2YgbWlycm9yLCBmbGlwLgorICogQGRlZ3JlZTogcHJvcGVydHkgb2Ygcm90YXRpb24gZGVncmVl LgorICogQGZtdDogcHJvcGVydHkgb2YgaW1hZ2UgZm9ybWF0LgorICogQHN6OiBwcm9wZXJ0eSBv ZiBpbWFnZSBzaXplLgorICogQHBvczogcHJvcGVydHkgb2YgaW1hZ2UgcG9zaXRpb24oc3JjLWNy b3BwZWQsZHN0LXNjYWxlcikuCisgKi8KK3N0cnVjdCBkcm1fZXh5bm9zX2lwcF9jb25maWcgewor CV9fdTMyIG9wc19pZDsKKwlfX3UzMiBmbGlwOworCV9fdTMyIGRlZ3JlZTsKKwlfX3UzMglmbXQ7 CisJc3RydWN0IGRybV9leHlub3Nfc3oJc3o7CisJc3RydWN0IGRybV9leHlub3NfcG9zCXBvczsK K307CisKK2VudW0gZHJtX2V4eW5vc19pcHBfY21kIHsKKwlJUFBfQ01EX05PTkUsCisJSVBQX0NN RF9NMk0sCisJSVBQX0NNRF9XQiwKKwlJUFBfQ01EX09VVFBVVCwKKwlJUFBfQ01EX01BWCwKK307 CisKKy8qKgorICogQSBzdHJ1Y3R1cmUgZm9yIGlwcCBwcm9wZXJ0eS4KKyAqCisgKiBAY29uZmln OiBzb3VyY2UsIGRlc3RpbmF0aW9uIGNvbmZpZy4KKyAqIEBjbWQ6IGRlZmluaXRpb24gb2YgY29t bWFuZC4KKyAqIEBpcHBfaWQ6IGlkIG9mIGlwcCBkcml2ZXIuCisgKiBAcHJvcF9pZDogaWQgb2Yg cHJvcGVydHkuCisgKiBAcmVmcmVzaF9yYXRlOiByZWZyZXNoIHJhdGUuCisgKi8KK3N0cnVjdCBk cm1fZXh5bm9zX2lwcF9wcm9wZXJ0eSB7CisJc3RydWN0IGRybV9leHlub3NfaXBwX2NvbmZpZyBj b25maWdbRVhZTk9TX0RSTV9PUFNfTUFYXTsKKwlfX3UzMgljbWQ7CisJX191MzIJaXBwX2lkOwor CV9fdTMyCXByb3BfaWQ7CisJX191MzIJcmVmcmVzaF9yYXRlOworfTsKKworZW51bSBkcm1fZXh5 bm9zX2lwcF9idWZfdHlwZSB7CisJSVBQX0JVRl9FTlFVRVVFLAorCUlQUF9CVUZfREVRVUVVRSwK K307CisKKy8qKgorICogQSBzdHJ1Y3R1cmUgZm9yIGlwcCBidWZmZXIgb3BlcmF0aW9ucy4KKyAq CisgKiBAb3BzX2lkOiBvcGVyYXRpb24gZGlyZWN0aW9ucy4KKyAqIEBidWZfdHlwZTogZGVmaW5p dGlvbiBvZiBidWZmZXIuCisgKiBAcHJvcF9pZDogaWQgb2YgcHJvcGVydHkuCisgKiBAYnVmX2lk OiBpZCBvZiBidWZmZXIuCisgKiBAaGFuZGxlOiBZLCBDYiwgQ3IgZWFjaCBwbGFuYXIgaGFuZGxl LgorICogQHVzZXJfZGF0YTogdXNlciBkYXRhLgorICovCitzdHJ1Y3QgZHJtX2V4eW5vc19pcHBf cXVldWVfYnVmIHsKKwlfX3UzMglvcHNfaWQ7CisJX191MzIJYnVmX3R5cGU7CisJX191MzIJcHJv cF9pZDsKKwlfX3UzMglidWZfaWQ7CisJX191MzIJaGFuZGxlW0VYWU5PU19EUk1fUExBTkFSX01B WF07CisJX191MzIJcmVzZXJ2ZWQ7CisJX191NjQJdXNlcl9kYXRhOworfTsKKworZW51bSBkcm1f ZXh5bm9zX2lwcF9jdHJsIHsKKwlJUFBfQ1RSTF9QTEFZLAorCUlQUF9DVFJMX1NUT1AsCisJSVBQ X0NUUkxfUEFVU0UsCisJSVBQX0NUUkxfUkVTVU1FLAorCUlQUF9DVFJMX01BWCwKK307CisKKy8q KgorICogQSBzdHJ1Y3R1cmUgZm9yIGlwcCBzdGFydC9zdG9wIG9wZXJhdGlvbnMuCisgKgorICog QHByb3BfaWQ6IGlkIG9mIHByb3BlcnR5LgorICogQGN0cmw6IGRlZmluaXRpb24gb2YgY29udHJv bC4KKyAqLworc3RydWN0IGRybV9leHlub3NfaXBwX2NtZF9jdHJsIHsKKwlfX3UzMglwcm9wX2lk OworCV9fdTMyCWN0cmw7Cit9OworCisjZGVmaW5lIERSTV9FWFlOT1NfR0VNX0NSRUFURQkJMHgw MAorI2RlZmluZSBEUk1fRVhZTk9TX0dFTV9NQVAJCTB4MDEKKy8qIFJlc2VydmVkIDB4MDMgfiAw eDA1IGZvciBleHlub3Mgc3BlY2lmaWMgZ2VtIGlvY3RsICovCisjZGVmaW5lIERSTV9FWFlOT1Nf R0VNX0dFVAkJMHgwNAorI2RlZmluZSBEUk1fRVhZTk9TX1ZJRElfQ09OTkVDVElPTgkweDA3CisK Ky8qIEcyRCAqLworI2RlZmluZSBEUk1fRVhZTk9TX0cyRF9HRVRfVkVSCQkweDIwCisjZGVmaW5l IERSTV9FWFlOT1NfRzJEX1NFVF9DTURMSVNUCTB4MjEKKyNkZWZpbmUgRFJNX0VYWU5PU19HMkRf RVhFQwkJMHgyMgorCisvKiBJUFAgLSBJbWFnZSBQb3N0IFByb2Nlc3NpbmcgKi8KKyNkZWZpbmUg RFJNX0VYWU5PU19JUFBfR0VUX1BST1BFUlRZCTB4MzAKKyNkZWZpbmUgRFJNX0VYWU5PU19JUFBf U0VUX1BST1BFUlRZCTB4MzEKKyNkZWZpbmUgRFJNX0VYWU5PU19JUFBfUVVFVUVfQlVGCTB4MzIK KyNkZWZpbmUgRFJNX0VYWU5PU19JUFBfQ01EX0NUUkwJMHgzMworCisjZGVmaW5lIERSTV9JT0NU TF9FWFlOT1NfR0VNX0NSRUFURQkJRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIFwKKwkJRFJN X0VYWU5PU19HRU1fQ1JFQVRFLCBzdHJ1Y3QgZHJtX2V4eW5vc19nZW1fY3JlYXRlKQorI2RlZmlu ZSBEUk1fSU9DVExfRVhZTk9TX0dFTV9NQVAJCURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBc CisJCURSTV9FWFlOT1NfR0VNX01BUCwgc3RydWN0IGRybV9leHlub3NfZ2VtX21hcCkKKyNkZWZp bmUgRFJNX0lPQ1RMX0VYWU5PU19HRU1fR0VUCURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBc CisJCURSTV9FWFlOT1NfR0VNX0dFVCwJc3RydWN0IGRybV9leHlub3NfZ2VtX2luZm8pCisKKyNk ZWZpbmUgRFJNX0lPQ1RMX0VYWU5PU19WSURJX0NPTk5FQ1RJT04JRFJNX0lPV1IoRFJNX0NPTU1B TkRfQkFTRSArIFwKKwkJRFJNX0VYWU5PU19WSURJX0NPTk5FQ1RJT04sIHN0cnVjdCBkcm1fZXh5 bm9zX3ZpZGlfY29ubmVjdGlvbikKKworI2RlZmluZSBEUk1fSU9DVExfRVhZTk9TX0cyRF9HRVRf VkVSCQlEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgXAorCQlEUk1fRVhZTk9TX0cyRF9HRVRf VkVSLCBzdHJ1Y3QgZHJtX2V4eW5vc19nMmRfZ2V0X3ZlcikKKyNkZWZpbmUgRFJNX0lPQ1RMX0VY WU5PU19HMkRfU0VUX0NNRExJU1QJRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIFwKKwkJRFJN X0VYWU5PU19HMkRfU0VUX0NNRExJU1QsIHN0cnVjdCBkcm1fZXh5bm9zX2cyZF9zZXRfY21kbGlz dCkKKyNkZWZpbmUgRFJNX0lPQ1RMX0VYWU5PU19HMkRfRVhFQwkJRFJNX0lPV1IoRFJNX0NPTU1B TkRfQkFTRSArIFwKKwkJRFJNX0VYWU5PU19HMkRfRVhFQywgc3RydWN0IGRybV9leHlub3NfZzJk X2V4ZWMpCisKKyNkZWZpbmUgRFJNX0lPQ1RMX0VYWU5PU19JUFBfR0VUX1BST1BFUlRZCURSTV9J T1dSKERSTV9DT01NQU5EX0JBU0UgKyBcCisJCURSTV9FWFlOT1NfSVBQX0dFVF9QUk9QRVJUWSwg c3RydWN0IGRybV9leHlub3NfaXBwX3Byb3BfbGlzdCkKKyNkZWZpbmUgRFJNX0lPQ1RMX0VYWU5P U19JUFBfU0VUX1BST1BFUlRZCURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBcCisJCURSTV9F WFlOT1NfSVBQX1NFVF9QUk9QRVJUWSwgc3RydWN0IGRybV9leHlub3NfaXBwX3Byb3BlcnR5KQor I2RlZmluZSBEUk1fSU9DVExfRVhZTk9TX0lQUF9RVUVVRV9CVUYJRFJNX0lPV1IoRFJNX0NPTU1B TkRfQkFTRSArIFwKKwkJRFJNX0VYWU5PU19JUFBfUVVFVUVfQlVGLCBzdHJ1Y3QgZHJtX2V4eW5v c19pcHBfcXVldWVfYnVmKQorI2RlZmluZSBEUk1fSU9DVExfRVhZTk9TX0lQUF9DTURfQ1RSTAkJ RFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIFwKKwkJRFJNX0VYWU5PU19JUFBfQ01EX0NUUkws IHN0cnVjdCBkcm1fZXh5bm9zX2lwcF9jbWRfY3RybCkKKworLyogRVhZTk9TIHNwZWNpZmljIGV2 ZW50cyAqLworI2RlZmluZSBEUk1fRVhZTk9TX0cyRF9FVkVOVAkJMHg4MDAwMDAwMAorI2RlZmlu ZSBEUk1fRVhZTk9TX0lQUF9FVkVOVAkJMHg4MDAwMDAwMQorCitzdHJ1Y3QgZHJtX2V4eW5vc19n MmRfZXZlbnQgeworCXN0cnVjdCBkcm1fZXZlbnQJYmFzZTsKKwlfX3U2NAkJCXVzZXJfZGF0YTsK KwlfX3UzMgkJCXR2X3NlYzsKKwlfX3UzMgkJCXR2X3VzZWM7CisJX191MzIJCQljbWRsaXN0X25v OworCV9fdTMyCQkJcmVzZXJ2ZWQ7Cit9OworCitzdHJ1Y3QgZHJtX2V4eW5vc19pcHBfZXZlbnQg eworCXN0cnVjdCBkcm1fZXZlbnQJYmFzZTsKKwlfX3U2NAkJCXVzZXJfZGF0YTsKKwlfX3UzMgkJ CXR2X3NlYzsKKwlfX3UzMgkJCXR2X3VzZWM7CisJX191MzIJCQlwcm9wX2lkOworCV9fdTMyCQkJ cmVzZXJ2ZWQ7CisJX191MzIJCQlidWZfaWRbRVhZTk9TX0RSTV9PUFNfTUFYXTsKK307CisKKyNp ZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQorfQorI2VuZGlmCisKKyNlbmRpZiAvKiBfRVhZTk9TX0RS TV9IXyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0tdWFwaS9pODEwX2RybS5oIGIvaW5jbHVk ZS9kcm0tdWFwaS9pODEwX2RybS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMC4uNmU2Y2Y4NmI3NWIwCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9kcm0tdWFwaS9p ODEwX2RybS5oCkBAIC0wLDAgKzEsMjkxIEBACisjaWZuZGVmIF9JODEwX0RSTV9IXworI2RlZmlu ZSBfSTgxMF9EUk1fSF8KKworI2luY2x1ZGUgImRybS5oIgorCisjaWYgZGVmaW5lZChfX2NwbHVz cGx1cykKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qIFdBUk5JTkc6IFRoZXNlIGRlZmluZXMg bXVzdCBiZSB0aGUgc2FtZSBhcyB3aGF0IHRoZSBYc2VydmVyIHVzZXMuCisgKiBpZiB5b3UgY2hh bmdlIHRoZW0sIHlvdSBtdXN0IGNoYW5nZSB0aGUgZGVmaW5lcyBpbiB0aGUgWHNlcnZlci4KKyAq LworCisjaWZuZGVmIF9JODEwX0RFRklORVNfCisjZGVmaW5lIF9JODEwX0RFRklORVNfCisKKyNk ZWZpbmUgSTgxMF9ETUFfQlVGX09SREVSCQkxMgorI2RlZmluZSBJODEwX0RNQV9CVUZfU1ogCQko MTw8STgxMF9ETUFfQlVGX09SREVSKQorI2RlZmluZSBJODEwX0RNQV9CVUZfTlIgCQkyNTYKKyNk ZWZpbmUgSTgxMF9OUl9TQVJFQV9DTElQUkVDVFMgCTgKKworLyogRWFjaCByZWdpb24gaXMgYSBt aW5pbXVtIG9mIDY0aywgYW5kIHRoZXJlIGFyZSBhdCBtb3N0IDY0IG9mIHRoZW0uCisgKi8KKyNk ZWZpbmUgSTgxMF9OUl9URVhfUkVHSU9OUyA2NAorI2RlZmluZSBJODEwX0xPR19NSU5fVEVYX1JF R0lPTl9TSVpFIDE2CisjZW5kaWYKKworI2RlZmluZSBJODEwX1VQTE9BRF9URVgwSU1BR0UgIDB4 MQkvKiBoYW5kbGVkIGNsaWVudHNpZGUgKi8KKyNkZWZpbmUgSTgxMF9VUExPQURfVEVYMUlNQUdF ICAweDIJLyogaGFuZGxlZCBjbGllbnRzaWRlICovCisjZGVmaW5lIEk4MTBfVVBMT0FEX0NUWCAg ICAgICAgMHg0CisjZGVmaW5lIEk4MTBfVVBMT0FEX0JVRkZFUlMgICAgMHg4CisjZGVmaW5lIEk4 MTBfVVBMT0FEX1RFWDAgICAgICAgMHgxMAorI2RlZmluZSBJODEwX1VQTE9BRF9URVgxICAgICAg IDB4MjAKKyNkZWZpbmUgSTgxMF9VUExPQURfQ0xJUFJFQ1RTICAweDQwCisKKy8qIEluZGljZXMg aW50byBidWYuU2V0dXAgd2hlcmUgdmFyaW91cyBiaXRzIG9mIHN0YXRlIGFyZSBtaXJyb3JlZCBw ZXIKKyAqIGNvbnRleHQgYW5kIHBlciBidWZmZXIuICBUaGVzZSBjYW4gYmUgZmlyZWQgYXQgdGhl IGNhcmQgYXMgYSB1bml0LAorICogb3IgaW4gYSBwaWVjZXdpc2UgZmFzaGlvbiBhcyByZXF1aXJl ZC4KKyAqLworCisvKiBEZXN0YnVmZmVyIHN0YXRlCisgKiAgICAtIGJhY2tidWZmZXIgbGluZWFy IG9mZnNldCBhbmQgcGl0Y2ggLS0gaW52YXJpZW50IGluIHRoZSBjdXJyZW50IGRyaQorICogICAg LSB6YnVmZmVyIGxpbmVhciBvZmZzZXQgYW5kIHBpdGNoIC0tIGFsc28gaW52YXJpZW50CisgKiAg ICAtIGRyYXdpbmcgb3JpZ2luIGluIGJhY2sgYW5kIGRlcHRoIGJ1ZmZlcnMuCisgKgorICogS2Vl cCB0aGUgZGVwdGgvYmFjayBidWZmZXIgc3RhdGUgaGVyZSB0byBhY2NvbW1vZGF0ZSBwcml2YXRl IGJ1ZmZlcnMKKyAqIGluIHRoZSBmdXR1cmUuCisgKi8KKyNkZWZpbmUgSTgxMF9ERVNUUkVHX0RJ MCAgMAkvKiBDTURfT1BfREVTVEJVRkZFUl9JTkZPICgyIGR3b3JkcykgKi8KKyNkZWZpbmUgSTgx MF9ERVNUUkVHX0RJMSAgMQorI2RlZmluZSBJODEwX0RFU1RSRUdfRFYwICAyCS8qIEdGWF9PUF9E RVNUQlVGRkVSX1ZBUlMgKDIgZHdvcmRzKSAqLworI2RlZmluZSBJODEwX0RFU1RSRUdfRFYxICAz CisjZGVmaW5lIEk4MTBfREVTVFJFR19EUjAgIDQJLyogR0ZYX09QX0RSQVdSRUNUX0lORk8gKDQg ZHdvcmRzKSAqLworI2RlZmluZSBJODEwX0RFU1RSRUdfRFIxICA1CisjZGVmaW5lIEk4MTBfREVT VFJFR19EUjIgIDYKKyNkZWZpbmUgSTgxMF9ERVNUUkVHX0RSMyAgNworI2RlZmluZSBJODEwX0RF U1RSRUdfRFI0ICA4CisjZGVmaW5lIEk4MTBfREVTVF9TRVRVUF9TSVpFIDEwCisKKy8qIENvbnRl eHQgc3RhdGUKKyAqLworI2RlZmluZSBJODEwX0NUWFJFR19DRjAgICAwCS8qIEdGWF9PUF9DT0xP Ul9GQUNUT1IgKi8KKyNkZWZpbmUgSTgxMF9DVFhSRUdfQ0YxICAgMQorI2RlZmluZSBJODEwX0NU WFJFR19TVDAgICAyCS8qIEdGWF9PUF9TVElQUExFICovCisjZGVmaW5lIEk4MTBfQ1RYUkVHX1NU MSAgIDMKKyNkZWZpbmUgSTgxMF9DVFhSRUdfVkYgICAgNAkvKiBHRlhfT1BfVkVSVEVYX0ZNVCAq LworI2RlZmluZSBJODEwX0NUWFJFR19NVCAgICA1CS8qIEdGWF9PUF9NQVBfVEVYRUxTICovCisj ZGVmaW5lIEk4MTBfQ1RYUkVHX01DMCAgIDYJLyogR0ZYX09QX01BUF9DT0xPUl9TVEFHRVMgLSBz dGFnZSAwICovCisjZGVmaW5lIEk4MTBfQ1RYUkVHX01DMSAgIDcJLyogR0ZYX09QX01BUF9DT0xP Ul9TVEFHRVMgLSBzdGFnZSAxICovCisjZGVmaW5lIEk4MTBfQ1RYUkVHX01DMiAgIDgJLyogR0ZY X09QX01BUF9DT0xPUl9TVEFHRVMgLSBzdGFnZSAyICovCisjZGVmaW5lIEk4MTBfQ1RYUkVHX01B MCAgIDkJLyogR0ZYX09QX01BUF9BTFBIQV9TVEFHRVMgLSBzdGFnZSAwICovCisjZGVmaW5lIEk4 MTBfQ1RYUkVHX01BMSAgIDEwCS8qIEdGWF9PUF9NQVBfQUxQSEFfU1RBR0VTIC0gc3RhZ2UgMSAq LworI2RlZmluZSBJODEwX0NUWFJFR19NQTIgICAxMQkvKiBHRlhfT1BfTUFQX0FMUEhBX1NUQUdF UyAtIHN0YWdlIDIgKi8KKyNkZWZpbmUgSTgxMF9DVFhSRUdfU0RNICAgMTIJLyogR0ZYX09QX1NS Q19ERVNUX01PTk8gKi8KKyNkZWZpbmUgSTgxMF9DVFhSRUdfRk9HICAgMTMJLyogR0ZYX09QX0ZP R19DT0xPUiAqLworI2RlZmluZSBJODEwX0NUWFJFR19CMSAgICAxNAkvKiBHRlhfT1BfQk9PTF8x ICovCisjZGVmaW5lIEk4MTBfQ1RYUkVHX0IyICAgIDE1CS8qIEdGWF9PUF9CT09MXzIgKi8KKyNk ZWZpbmUgSTgxMF9DVFhSRUdfTENTICAgMTYJLyogR0ZYX09QX0xJTkVXSURUSF9DVUxMX1NIQURF X01PREUgKi8KKyNkZWZpbmUgSTgxMF9DVFhSRUdfUFYgICAgMTcJLyogR0ZYX09QX1BWX1JVTEUg LS0gSW52YXJpZW50ISAqLworI2RlZmluZSBJODEwX0NUWFJFR19aQSAgICAxOAkvKiBHRlhfT1Bf WkJJQVNfQUxQSEFGVU5DICovCisjZGVmaW5lIEk4MTBfQ1RYUkVHX0FBICAgIDE5CS8qIEdGWF9P UF9BTlRJQUxJQVMgKi8KKyNkZWZpbmUgSTgxMF9DVFhfU0VUVVBfU0laRSAyMAorCisvKiBUZXh0 dXJlIHN0YXRlIChwZXIgdGV4IHVuaXQpCisgKi8KKyNkZWZpbmUgSTgxMF9URVhSRUdfTUkwICAw CS8qIEdGWF9PUF9NQVBfSU5GTyAoNCBkd29yZHMpICovCisjZGVmaW5lIEk4MTBfVEVYUkVHX01J MSAgMQorI2RlZmluZSBJODEwX1RFWFJFR19NSTIgIDIKKyNkZWZpbmUgSTgxMF9URVhSRUdfTUkz ICAzCisjZGVmaW5lIEk4MTBfVEVYUkVHX01GICAgNAkvKiBHRlhfT1BfTUFQX0ZJTFRFUiAqLwor I2RlZmluZSBJODEwX1RFWFJFR19NTEMgIDUJLyogR0ZYX09QX01BUF9MT0RfQ1RMICovCisjZGVm aW5lIEk4MTBfVEVYUkVHX01MTCAgNgkvKiBHRlhfT1BfTUFQX0xPRF9MSU1JVFMgKi8KKyNkZWZp bmUgSTgxMF9URVhSRUdfTUNTICA3CS8qIEdGWF9PUF9NQVBfQ09PUkRfU0VUUyA/Pz8gKi8KKyNk ZWZpbmUgSTgxMF9URVhfU0VUVVBfU0laRSA4CisKKy8qIEZsYWdzIGZvciBjbGVhciBpb2N0bAor ICovCisjZGVmaW5lIEk4MTBfRlJPTlQgICAweDEKKyNkZWZpbmUgSTgxMF9CQUNLICAgIDB4Mgor I2RlZmluZSBJODEwX0RFUFRIICAgMHg0CisKK3R5cGVkZWYgZW51bSBfZHJtX2k4MTBfaW5pdF9m dW5jIHsKKwlJODEwX0lOSVRfRE1BID0gMHgwMSwKKwlJODEwX0NMRUFOVVBfRE1BID0gMHgwMiwK KwlJODEwX0lOSVRfRE1BXzFfNCA9IDB4MDMKK30gZHJtX2k4MTBfaW5pdF9mdW5jX3Q7CisKKy8q IFRoaXMgaXMgdGhlIGluaXQgc3RydWN0dXJlIGFmdGVyIHYxLjIgKi8KK3R5cGVkZWYgc3RydWN0 IF9kcm1faTgxMF9pbml0IHsKKwlkcm1faTgxMF9pbml0X2Z1bmNfdCBmdW5jOworCXVuc2lnbmVk IGludCBtbWlvX29mZnNldDsKKwl1bnNpZ25lZCBpbnQgYnVmZmVyc19vZmZzZXQ7CisJaW50IHNh cmVhX3ByaXZfb2Zmc2V0OworCXVuc2lnbmVkIGludCByaW5nX3N0YXJ0OworCXVuc2lnbmVkIGlu dCByaW5nX2VuZDsKKwl1bnNpZ25lZCBpbnQgcmluZ19zaXplOworCXVuc2lnbmVkIGludCBmcm9u dF9vZmZzZXQ7CisJdW5zaWduZWQgaW50IGJhY2tfb2Zmc2V0OworCXVuc2lnbmVkIGludCBkZXB0 aF9vZmZzZXQ7CisJdW5zaWduZWQgaW50IG92ZXJsYXlfb2Zmc2V0OworCXVuc2lnbmVkIGludCBv dmVybGF5X3BoeXNpY2FsOworCXVuc2lnbmVkIGludCB3OworCXVuc2lnbmVkIGludCBoOworCXVu c2lnbmVkIGludCBwaXRjaDsKKwl1bnNpZ25lZCBpbnQgcGl0Y2hfYml0czsKK30gZHJtX2k4MTBf aW5pdF90OworCisvKiBUaGlzIGlzIHRoZSBpbml0IHN0cnVjdHVyZSBwcmlvciB0byB2MS4yICov Cit0eXBlZGVmIHN0cnVjdCBfZHJtX2k4MTBfcHJlMTJfaW5pdCB7CisJZHJtX2k4MTBfaW5pdF9m dW5jX3QgZnVuYzsKKwl1bnNpZ25lZCBpbnQgbW1pb19vZmZzZXQ7CisJdW5zaWduZWQgaW50IGJ1 ZmZlcnNfb2Zmc2V0OworCWludCBzYXJlYV9wcml2X29mZnNldDsKKwl1bnNpZ25lZCBpbnQgcmlu Z19zdGFydDsKKwl1bnNpZ25lZCBpbnQgcmluZ19lbmQ7CisJdW5zaWduZWQgaW50IHJpbmdfc2l6 ZTsKKwl1bnNpZ25lZCBpbnQgZnJvbnRfb2Zmc2V0OworCXVuc2lnbmVkIGludCBiYWNrX29mZnNl dDsKKwl1bnNpZ25lZCBpbnQgZGVwdGhfb2Zmc2V0OworCXVuc2lnbmVkIGludCB3OworCXVuc2ln bmVkIGludCBoOworCXVuc2lnbmVkIGludCBwaXRjaDsKKwl1bnNpZ25lZCBpbnQgcGl0Y2hfYml0 czsKK30gZHJtX2k4MTBfcHJlMTJfaW5pdF90OworCisvKiBXYXJuaW5nOiBJZiB5b3UgY2hhbmdl IHRoZSBTQVJFQSBzdHJ1Y3R1cmUgeW91IG11c3QgY2hhbmdlIHRoZSBYc2VydmVyCisgKiBzdHJ1 Y3R1cmUgYXMgd2VsbCAqLworCit0eXBlZGVmIHN0cnVjdCBfZHJtX2k4MTBfdGV4X3JlZ2lvbiB7 CisJdW5zaWduZWQgY2hhciBuZXh0LCBwcmV2OwkvKiBpbmRpY2VzIHRvIGZvcm0gYSBjaXJjdWxh ciBMUlUgICovCisJdW5zaWduZWQgY2hhciBpbl91c2U7CS8qIG93bmVkIGJ5IGEgY2xpZW50LCBv ciBmcmVlPyAqLworCWludCBhZ2U7CQkvKiB0cmFja2VkIGJ5IGNsaWVudHMgdG8gdXBkYXRlIGxv Y2FsIExSVSdzICovCit9IGRybV9pODEwX3RleF9yZWdpb25fdDsKKwordHlwZWRlZiBzdHJ1Y3Qg X2RybV9pODEwX3NhcmVhIHsKKwl1bnNpZ25lZCBpbnQgQ29udGV4dFN0YXRlW0k4MTBfQ1RYX1NF VFVQX1NJWkVdOworCXVuc2lnbmVkIGludCBCdWZmZXJTdGF0ZVtJODEwX0RFU1RfU0VUVVBfU0la RV07CisJdW5zaWduZWQgaW50IFRleFN0YXRlWzJdW0k4MTBfVEVYX1NFVFVQX1NJWkVdOworCXVu c2lnbmVkIGludCBkaXJ0eTsKKworCXVuc2lnbmVkIGludCBuYm94OworCXN0cnVjdCBkcm1fY2xp cF9yZWN0IGJveGVzW0k4MTBfTlJfU0FSRUFfQ0xJUFJFQ1RTXTsKKworCS8qIE1haW50YWluIGFu IExSVSBvZiBjb250aWd1b3VzIHJlZ2lvbnMgb2YgdGV4dHVyZSBzcGFjZS4gIElmCisJICogeW91 IHRoaW5rIHlvdSBvd24gYSByZWdpb24gb2YgdGV4dHVyZSBtZW1vcnksIGFuZCBpdCBoYXMgYW4K KwkgKiBhZ2UgZGlmZmVyZW50IHRvIHRoZSBvbmUgeW91IHNldCwgdGhlbiB5b3UgYXJlIG1pc3Rh a2VuIGFuZAorCSAqIGl0IGhhcyBiZWVuIHN0b2xlbiBieSBhbm90aGVyIGNsaWVudC4gIElmIGds b2JhbCB0ZXhBZ2UKKwkgKiBoYXNuJ3QgY2hhbmdlZCwgdGhlcmUgaXMgbm8gbmVlZCB0byB3YWxr IHRoZSBsaXN0LgorCSAqCisJICogVGhlc2UgcmVnaW9ucyBjYW4gYmUgdXNlZCBhcyBhIHByb3h5 IGZvciB0aGUgZmluZS1ncmFpbmVkCisJICogdGV4dHVyZSBpbmZvcm1hdGlvbiBvZiBvdGhlciBj bGllbnRzIC0gYnkgbWFpbnRhaW5pbmcgdGhlbQorCSAqIGluIHRoZSBzYW1lIGxydSB3aGljaCBp cyB1c2VkIHRvIGFnZSB0aGVpciBvd24gdGV4dHVyZXMsCisJICogY2xpZW50cyBoYXZlIGFuIGFw cHJveGltYXRlIGxydSBmb3IgdGhlIHdob2xlIG9mIGdsb2JhbAorCSAqIHRleHR1cmUgc3BhY2Us IGFuZCBjYW4gbWFrZSBpbmZvcm1lZCBkZWNpc2lvbnMgYXMgdG8gd2hpY2gKKwkgKiBhcmVhcyB0 byBraWNrIG91dC4gIFRoZXJlIGlzIG5vIG5lZWQgdG8gY2hvb3NlIHdoZXRoZXIgdG8KKwkgKiBr aWNrIG91dCB5b3VyIG93biB0ZXh0dXJlIG9yIHNvbWVvbmUgZWxzZSdzIC0gc2ltcGx5IGVqZWN0 CisJICogdGhlbSBhbGwgaW4gTFJVIG9yZGVyLgorCSAqLworCisJZHJtX2k4MTBfdGV4X3JlZ2lv bl90IHRleExpc3RbSTgxMF9OUl9URVhfUkVHSU9OUyArIDFdOworCS8qIExhc3QgZWx0IGlzIHNl bnRpbmFsICovCisJaW50IHRleEFnZTsJCS8qIGxhc3QgdGltZSB0ZXh0dXJlIHdhcyB1cGxvYWRl ZCAqLworCWludCBsYXN0X2VucXVldWU7CS8qIGxhc3QgdGltZSBhIGJ1ZmZlciB3YXMgZW5xdWV1 ZWQgKi8KKwlpbnQgbGFzdF9kaXNwYXRjaDsJLyogYWdlIG9mIHRoZSBtb3N0IHJlY2VudGx5IGRp c3BhdGNoZWQgYnVmZmVyICovCisJaW50IGxhc3RfcXVpZXNjZW50OwkvKiAgKi8KKwlpbnQgY3R4 T3duZXI7CQkvKiBsYXN0IGNvbnRleHQgdG8gdXBsb2FkIHN0YXRlICovCisKKwlpbnQgdmVydGV4 X3ByaW07CisKKwlpbnQgcGZfZW5hYmxlZDsJCS8qIGlzIHBhZ2VmbGlwcGluZyBhbGxvd2VkPyAq LworCWludCBwZl9hY3RpdmU7CisJaW50IHBmX2N1cnJlbnRfcGFnZTsJLyogd2hpY2ggYnVmZmVy IGlzIGJlaW5nIGRpc3BsYXllZD8gKi8KK30gZHJtX2k4MTBfc2FyZWFfdDsKKworLyogV0FSTklO RzogSWYgeW91IGNoYW5nZSBhbnkgb2YgdGhlc2UgZGVmaW5lcywgbWFrZSBzdXJlIHRvIGNoYW5n ZSB0aGUKKyAqIGRlZmluZXMgaW4gdGhlIFhzZXJ2ZXIgZmlsZSAoeGY4NmRybU1nYS5oKQorICov CisKKy8qIGk4MTAgc3BlY2lmaWMgaW9jdGxzCisgKiBUaGUgZGV2aWNlIHNwZWNpZmljIGlvY3Rs IHJhbmdlIGlzIDB4NDAgdG8gMHg3OS4KKyAqLworI2RlZmluZSBEUk1fSTgxMF9JTklUCQkweDAw CisjZGVmaW5lIERSTV9JODEwX1ZFUlRFWAkJMHgwMQorI2RlZmluZSBEUk1fSTgxMF9DTEVBUgkJ MHgwMgorI2RlZmluZSBEUk1fSTgxMF9GTFVTSAkJMHgwMworI2RlZmluZSBEUk1fSTgxMF9HRVRB R0UJCTB4MDQKKyNkZWZpbmUgRFJNX0k4MTBfR0VUQlVGCQkweDA1CisjZGVmaW5lIERSTV9JODEw X1NXQVAJCTB4MDYKKyNkZWZpbmUgRFJNX0k4MTBfQ09QWQkJMHgwNworI2RlZmluZSBEUk1fSTgx MF9ET0NPUFkJCTB4MDgKKyNkZWZpbmUgRFJNX0k4MTBfT1YwSU5GTwkweDA5CisjZGVmaW5lIERS TV9JODEwX0ZTVEFUVVMJMHgwYQorI2RlZmluZSBEUk1fSTgxMF9PVjBGTElQCTB4MGIKKyNkZWZp bmUgRFJNX0k4MTBfTUMJCTB4MGMKKyNkZWZpbmUgRFJNX0k4MTBfUlNUQVRVUwkweDBkCisjZGVm aW5lIERSTV9JODEwX0ZMSVAJCTB4MGUKKworI2RlZmluZSBEUk1fSU9DVExfSTgxMF9JTklUCQlE Uk1fSU9XKCBEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k4MTBfSU5JVCwgZHJtX2k4MTBfaW5pdF90 KQorI2RlZmluZSBEUk1fSU9DVExfSTgxMF9WRVJURVgJCURSTV9JT1coIERSTV9DT01NQU5EX0JB U0UgKyBEUk1fSTgxMF9WRVJURVgsIGRybV9pODEwX3ZlcnRleF90KQorI2RlZmluZSBEUk1fSU9D VExfSTgxMF9DTEVBUgkJRFJNX0lPVyggRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JODEwX0NMRUFS LCBkcm1faTgxMF9jbGVhcl90KQorI2RlZmluZSBEUk1fSU9DVExfSTgxMF9GTFVTSAkJRFJNX0lP KCAgRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JODEwX0ZMVVNIKQorI2RlZmluZSBEUk1fSU9DVExf STgxMF9HRVRBR0UJCURSTV9JTyggIERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTgxMF9HRVRBR0Up CisjZGVmaW5lIERSTV9JT0NUTF9JODEwX0dFVEJVRgkJRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFT RSArIERSTV9JODEwX0dFVEJVRiwgZHJtX2k4MTBfZG1hX3QpCisjZGVmaW5lIERSTV9JT0NUTF9J ODEwX1NXQVAJCURSTV9JTyggIERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTgxMF9TV0FQKQorI2Rl ZmluZSBEUk1fSU9DVExfSTgxMF9DT1BZCQlEUk1fSU9XKCBEUk1fQ09NTUFORF9CQVNFICsgRFJN X0k4MTBfQ09QWSwgZHJtX2k4MTBfY29weV90KQorI2RlZmluZSBEUk1fSU9DVExfSTgxMF9ET0NP UFkJCURSTV9JTyggIERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTgxMF9ET0NPUFkpCisjZGVmaW5l IERSTV9JT0NUTF9JODEwX09WMElORk8JCURSTV9JT1IoIERSTV9DT01NQU5EX0JBU0UgKyBEUk1f STgxMF9PVjBJTkZPLCBkcm1faTgxMF9vdmVybGF5X3QpCisjZGVmaW5lIERSTV9JT0NUTF9JODEw X0ZTVEFUVVMJCURSTV9JTyAoIERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTgxMF9GU1RBVFVTKQor I2RlZmluZSBEUk1fSU9DVExfSTgxMF9PVjBGTElQCQlEUk1fSU8gKCBEUk1fQ09NTUFORF9CQVNF ICsgRFJNX0k4MTBfT1YwRkxJUCkKKyNkZWZpbmUgRFJNX0lPQ1RMX0k4MTBfTUMJCURSTV9JT1co IERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTgxMF9NQywgZHJtX2k4MTBfbWNfdCkKKyNkZWZpbmUg RFJNX0lPQ1RMX0k4MTBfUlNUQVRVUwkJRFJNX0lPICggRFJNX0NPTU1BTkRfQkFTRSArIERSTV9J ODEwX1JTVEFUVVMpCisjZGVmaW5lIERSTV9JT0NUTF9JODEwX0ZMSVAgICAgICAgICAgICAgRFJN X0lPICggRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JODEwX0ZMSVApCisKK3R5cGVkZWYgc3RydWN0 IF9kcm1faTgxMF9jbGVhciB7CisJaW50IGNsZWFyX2NvbG9yOworCWludCBjbGVhcl9kZXB0aDsK KwlpbnQgZmxhZ3M7Cit9IGRybV9pODEwX2NsZWFyX3Q7CisKKy8qIFRoZXNlIG1heSBiZSBwbGFj ZWhvbGRlcnMgaWYgd2UgaGF2ZSBtb3JlIGNsaXByZWN0cyB0aGFuCisgKiBJODEwX05SX1NBUkVB X0NMSVBSRUNUUy4gIEluIHRoYXQgY2FzZSwgdGhlIGNsaWVudCBzZXRzIGRpc2NhcmQgdG8KKyAq IGZhbHNlLCBpbmRpY2F0aW5nIHRoYXQgdGhlIGJ1ZmZlciB3aWxsIGJlIGRpc3BhdGNoZWQgYWdh aW4gd2l0aCBhCisgKiBuZXcgc2V0IG9mIGNsaXByZWN0cy4KKyAqLwordHlwZWRlZiBzdHJ1Y3Qg X2RybV9pODEwX3ZlcnRleCB7CisJaW50IGlkeDsJCS8qIGJ1ZmZlciBpbmRleCAqLworCWludCB1 c2VkOwkJLyogbnIgYnl0ZXMgaW4gdXNlICovCisJaW50IGRpc2NhcmQ7CQkvKiBjbGllbnQgaXMg ZmluaXNoZWQgd2l0aCB0aGUgYnVmZmVyPyAqLworfSBkcm1faTgxMF92ZXJ0ZXhfdDsKKwordHlw ZWRlZiBzdHJ1Y3QgX2RybV9pODEwX2NvcHlfdCB7CisJaW50IGlkeDsJCS8qIGJ1ZmZlciBpbmRl eCAqLworCWludCB1c2VkOwkJLyogbnIgYnl0ZXMgaW4gdXNlICovCisJdm9pZCAqYWRkcmVzczsJ CS8qIEFkZHJlc3MgdG8gY29weSBmcm9tICovCit9IGRybV9pODEwX2NvcHlfdDsKKworI2RlZmlu ZSBQUl9UUklBTkdMRVMgICAgICAgICAoMHgwPDwxOCkKKyNkZWZpbmUgUFJfVFJJU1RSSVBfMCAg ICAgICAgKDB4MTw8MTgpCisjZGVmaW5lIFBSX1RSSVNUUklQXzEgICAgICAgICgweDI8PDE4KQor I2RlZmluZSBQUl9UUklGQU4gICAgICAgICAgICAoMHgzPDwxOCkKKyNkZWZpbmUgUFJfUE9MWUdP TiAgICAgICAgICAgKDB4NDw8MTgpCisjZGVmaW5lIFBSX0xJTkVTICAgICAgICAgICAgICgweDU8 PDE4KQorI2RlZmluZSBQUl9MSU5FU1RSSVAgICAgICAgICAoMHg2PDwxOCkKKyNkZWZpbmUgUFJf UkVDVFMgICAgICAgICAgICAgKDB4Nzw8MTgpCisjZGVmaW5lIFBSX01BU0sgICAgICAgICAgICAg ICgweDc8PDE4KQorCit0eXBlZGVmIHN0cnVjdCBkcm1faTgxMF9kbWEgeworCXZvaWQgKnZpcnR1 YWw7CisJaW50IHJlcXVlc3RfaWR4OworCWludCByZXF1ZXN0X3NpemU7CisJaW50IGdyYW50ZWQ7 Cit9IGRybV9pODEwX2RtYV90OworCit0eXBlZGVmIHN0cnVjdCBfZHJtX2k4MTBfb3ZlcmxheV90 IHsKKwl1bnNpZ25lZCBpbnQgb2Zmc2V0OwkvKiBBZGRyZXNzIG9mIHRoZSBPdmVybGF5IFJlZ3Mg Ki8KKwl1bnNpZ25lZCBpbnQgcGh5c2ljYWw7Cit9IGRybV9pODEwX292ZXJsYXlfdDsKKwordHlw ZWRlZiBzdHJ1Y3QgX2RybV9pODEwX21jIHsKKwlpbnQgaWR4OwkJLyogYnVmZmVyIGluZGV4ICov CisJaW50IHVzZWQ7CQkvKiBuciBieXRlcyBpbiB1c2UgKi8KKwlpbnQgbnVtX2Jsb2NrczsJCS8q IG51bWJlciBvZiBHRlhCbG9ja3MgKi8KKwlpbnQgKmxlbmd0aDsJCS8qIExpc3Qgb2YgbGVuZ3Ro cyBmb3IgR0ZYQmxvY2tzIChGVVRVUkUpICovCisJdW5zaWduZWQgaW50IGxhc3RfcmVuZGVyOwkv KiBMYXN0IFJlbmRlciBSZXF1ZXN0ICovCit9IGRybV9pODEwX21jX3Q7CisKKyNpZiBkZWZpbmVk KF9fY3BsdXNwbHVzKQorfQorI2VuZGlmCisKKyNlbmRpZgkJCQkvKiBfSTgxMF9EUk1fSF8gKi8K ZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtLXVhcGkvaTkxNV9kcm0uaCBiL2luY2x1ZGUvZHJtLXVh cGkvaTkxNV9kcm0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjg5 MGRmMjI3YWViMQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvZHJtLXVhcGkvaTkxNV9kcm0u aApAQCAtMCwwICsxLDE1NDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMyBUdW5nc3RlbiBHcmFw aGljcywgSW5jLiwgQ2VkYXIgUGFyaywgVGV4YXMuCisgKiBBbGwgUmlnaHRzIFJlc2VydmVkLgor ICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBh bnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29j aWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBp biB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCisgKiB3aXRob3V0 IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxp c2gsCisgKiBkaXN0cmlidXRlLCBzdWIgbGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRo ZSBTb2Z0d2FyZSwgYW5kIHRvCisgKiBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2Fy ZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KKyAqIHRoZSBmb2xsb3dpbmcgY29u ZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJt aXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZQorICogbmV4dCBwYXJhZ3JhcGgpIHNoYWxsIGJl IGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMKKyAqIG9mIHRo ZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lU SE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUworICogT1IgSU1QTElFRCwgSU5DTFVE SU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgorICogTUVSQ0hBTlRBQklM SVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVO VC4KKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRVTkdTVEVOIEdSQVBISUNTIEFORC9PUiBJVFMgU1VQ UExJRVJTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFC SUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULAorICogVE9SVCBPUiBPVEhF UldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUKKyAq IFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgor ICoKKyAqLworCisjaWZuZGVmIF9JOTE1X0RSTV9IXworI2RlZmluZSBfSTkxNV9EUk1fSF8KKwor I2luY2x1ZGUgImRybS5oIgorCisjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKK2V4dGVybiAiQyIg eworI2VuZGlmCisKKy8qIFBsZWFzZSBub3RlIHRoYXQgbW9kaWZpY2F0aW9ucyB0byBhbGwgc3Ry dWN0cyBkZWZpbmVkIGhlcmUgYXJlCisgKiBzdWJqZWN0IHRvIGJhY2t3YXJkcy1jb21wYXRpYmls aXR5IGNvbnN0cmFpbnRzLgorICovCisKKy8qKgorICogRE9DOiB1ZXZlbnRzIGdlbmVyYXRlZCBi eSBpOTE1IG9uIGl0J3MgZGV2aWNlIG5vZGUKKyAqCisgKiBJOTE1X0wzX1BBUklUWV9VRVZFTlQg LSBHZW5lcmF0ZWQgd2hlbiB0aGUgZHJpdmVyIHJlY2VpdmVzIGEgcGFyaXR5IG1pc21hdGNoCisg KglldmVudCBmcm9tIHRoZSBncHUgbDMgY2FjaGUuIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gc3Vw cGxpZWQgaXMgUk9XLAorICoJQkFOSywgU1VCQkFOSywgU0xJQ0Ugb2YgdGhlIGFmZmVjdGVkIGNh Y2hlbGluZS4gVXNlcnNwYWNlIHNob3VsZCBrZWVwCisgKgl0cmFjayBvZiB0aGVzZSBldmVudHMg YW5kIGlmIGEgc3BlY2lmaWMgY2FjaGUtbGluZSBzZWVtcyB0byBoYXZlIGEKKyAqCXBlcnNpc3Rl bnQgZXJyb3IgcmVtYXAgaXQgd2l0aCB0aGUgbDMgcmVtYXBwaW5nIHRvb2wgc3VwcGxpZWQgaW4K KyAqCWludGVsLWdwdS10b29scy4gIFRoZSB2YWx1ZSBzdXBwbGllZCB3aXRoIHRoZSBldmVudCBp cyBhbHdheXMgMS4KKyAqCisgKiBJOTE1X0VSUk9SX1VFVkVOVCAtIEdlbmVyYXRlZCB1cG9uIGVy cm9yIGRldGVjdGlvbiwgY3VycmVudGx5IG9ubHkgdmlhCisgKgloYW5nY2hlY2suIFRoZSBlcnJv ciBkZXRlY3Rpb24gZXZlbnQgaXMgYSBnb29kIGluZGljYXRvciBvZiB3aGVuIHRoaW5ncworICoJ YmVnYW4gdG8gZ28gYmFkbHkuIFRoZSB2YWx1ZSBzdXBwbGllZCB3aXRoIHRoZSBldmVudCBpcyBh IDEgdXBvbiBlcnJvcgorICoJZGV0ZWN0aW9uLCBhbmQgYSAwIHVwb24gcmVzZXQgY29tcGxldGlv biwgc2lnbmlmeWluZyBubyBtb3JlIGVycm9yCisgKglleGlzdHMuIE5PVEU6IERpc2FibGluZyBo YW5nY2hlY2sgb3IgcmVzZXQgdmlhIG1vZHVsZSBwYXJhbWV0ZXIgd2lsbAorICoJY2F1c2UgdGhl IHJlbGF0ZWQgZXZlbnRzIHRvIG5vdCBiZSBzZWVuLgorICoKKyAqIEk5MTVfUkVTRVRfVUVWRU5U IC0gRXZlbnQgaXMgZ2VuZXJhdGVkIGp1c3QgYmVmb3JlIGFuIGF0dGVtcHQgdG8gcmVzZXQgdGhl CisgKgl0aGUgR1BVLiBUaGUgdmFsdWUgc3VwcGxpZWQgd2l0aCB0aGUgZXZlbnQgaXMgYWx3YXlz IDEuIE5PVEU6IERpc2FibGUKKyAqCXJlc2V0IHZpYSBtb2R1bGUgcGFyYW1ldGVyIHdpbGwgY2F1 c2UgdGhpcyBldmVudCB0byBub3QgYmUgc2Vlbi4KKyAqLworI2RlZmluZSBJOTE1X0wzX1BBUklU WV9VRVZFTlQJCSJMM19QQVJJVFlfRVJST1IiCisjZGVmaW5lIEk5MTVfRVJST1JfVUVWRU5UCQki RVJST1IiCisjZGVmaW5lIEk5MTVfUkVTRVRfVUVWRU5UCQkiUkVTRVQiCisKKy8qCisgKiBNT0NT IGluZGV4ZXMgdXNlZCBmb3IgR1BVIHN1cmZhY2VzLCBkZWZpbmluZyB0aGUgY2FjaGVhYmlsaXR5 IG9mIHRoZQorICogc3VyZmFjZSBkYXRhIGFuZCB0aGUgY29oZXJlbmN5IGZvciB0aGlzIGRhdGEg d3J0LiBDUFUgdnMuIEdQVSBhY2Nlc3Nlcy4KKyAqLworZW51bSBpOTE1X21vY3NfdGFibGVfaW5k ZXggeworCS8qCisJICogTm90IGNhY2hlZCBhbnl3aGVyZSwgY29oZXJlbmN5IGJldHdlZW4gQ1BV IGFuZCBHUFUgYWNjZXNzZXMgaXMKKwkgKiBndWFyYW50ZWVkLgorCSAqLworCUk5MTVfTU9DU19V TkNBQ0hFRCwKKwkvKgorCSAqIENhY2hlYWJpbGl0eSBhbmQgY29oZXJlbmN5IGNvbnRyb2xsZWQg YnkgdGhlIGtlcm5lbCBhdXRvbWF0aWNhbGx5CisJICogYmFzZWQgb24gdGhlIERSTV9JOTE1X0dF TV9TRVRfQ0FDSElORyBJT0NUTCBzZXR0aW5nIGFuZCB0aGUgY3VycmVudAorCSAqIHVzYWdlIG9m IHRoZSBzdXJmYWNlICh1c2VkIGZvciBkaXNwbGF5IHNjYW5vdXQgb3Igbm90KS4KKwkgKi8KKwlJ OTE1X01PQ1NfUFRFLAorCS8qCisJICogQ2FjaGVkIGluIGFsbCBHUFUgY2FjaGVzIGF2YWlsYWJs ZSBvbiB0aGUgcGxhdGZvcm0uCisJICogQ29oZXJlbmN5IGJldHdlZW4gQ1BVIGFuZCBHUFUgYWNj ZXNzZXMgdG8gdGhlIHN1cmZhY2UgaXMgbm90CisJICogZ3VhcmFudGVlZCB3aXRob3V0IGV4dHJh IHN5bmNocm9uaXphdGlvbi4KKwkgKi8KKwlJOTE1X01PQ1NfQ0FDSEVELAorfTsKKworLyogRWFj aCByZWdpb24gaXMgYSBtaW5pbXVtIG9mIDE2aywgYW5kIHRoZXJlIGFyZSBhdCBtb3N0IDI1NSBv ZiB0aGVtLgorICovCisjZGVmaW5lIEk5MTVfTlJfVEVYX1JFR0lPTlMgMjU1CS8qIHRhYmxlIHNp emUgMmsgLSBtYXhpbXVtIGR1ZSB0byB1c2UKKwkJCQkgKiBvZiBjaGFycyBmb3IgbmV4dC9wcmV2 IGluZGljZXMgKi8KKyNkZWZpbmUgSTkxNV9MT0dfTUlOX1RFWF9SRUdJT05fU0laRSAxNAorCit0 eXBlZGVmIHN0cnVjdCBfZHJtX2k5MTVfaW5pdCB7CisJZW51bSB7CisJCUk5MTVfSU5JVF9ETUEg PSAweDAxLAorCQlJOTE1X0NMRUFOVVBfRE1BID0gMHgwMiwKKwkJSTkxNV9SRVNVTUVfRE1BID0g MHgwMworCX0gZnVuYzsKKwl1bnNpZ25lZCBpbnQgbW1pb19vZmZzZXQ7CisJaW50IHNhcmVhX3By aXZfb2Zmc2V0OworCXVuc2lnbmVkIGludCByaW5nX3N0YXJ0OworCXVuc2lnbmVkIGludCByaW5n X2VuZDsKKwl1bnNpZ25lZCBpbnQgcmluZ19zaXplOworCXVuc2lnbmVkIGludCBmcm9udF9vZmZz ZXQ7CisJdW5zaWduZWQgaW50IGJhY2tfb2Zmc2V0OworCXVuc2lnbmVkIGludCBkZXB0aF9vZmZz ZXQ7CisJdW5zaWduZWQgaW50IHc7CisJdW5zaWduZWQgaW50IGg7CisJdW5zaWduZWQgaW50IHBp dGNoOworCXVuc2lnbmVkIGludCBwaXRjaF9iaXRzOworCXVuc2lnbmVkIGludCBiYWNrX3BpdGNo OworCXVuc2lnbmVkIGludCBkZXB0aF9waXRjaDsKKwl1bnNpZ25lZCBpbnQgY3BwOworCXVuc2ln bmVkIGludCBjaGlwc2V0OworfSBkcm1faTkxNV9pbml0X3Q7CisKK3R5cGVkZWYgc3RydWN0IF9k cm1faTkxNV9zYXJlYSB7CisJc3RydWN0IGRybV90ZXhfcmVnaW9uIHRleExpc3RbSTkxNV9OUl9U RVhfUkVHSU9OUyArIDFdOworCWludCBsYXN0X3VwbG9hZDsJLyogbGFzdCB0aW1lIHRleHR1cmUg d2FzIHVwbG9hZGVkICovCisJaW50IGxhc3RfZW5xdWV1ZTsJLyogbGFzdCB0aW1lIGEgYnVmZmVy IHdhcyBlbnF1ZXVlZCAqLworCWludCBsYXN0X2Rpc3BhdGNoOwkvKiBhZ2Ugb2YgdGhlIG1vc3Qg cmVjZW50bHkgZGlzcGF0Y2hlZCBidWZmZXIgKi8KKwlpbnQgY3R4T3duZXI7CQkvKiBsYXN0IGNv bnRleHQgdG8gdXBsb2FkIHN0YXRlICovCisJaW50IHRleEFnZTsKKwlpbnQgcGZfZW5hYmxlZDsJ CS8qIGlzIHBhZ2VmbGlwcGluZyBhbGxvd2VkPyAqLworCWludCBwZl9hY3RpdmU7CisJaW50IHBm X2N1cnJlbnRfcGFnZTsJLyogd2hpY2ggYnVmZmVyIGlzIGJlaW5nIGRpc3BsYXllZD8gKi8KKwlp bnQgcGVyZl9ib3hlczsJCS8qIHBlcmZvcm1hbmNlIGJveGVzIHRvIGJlIGRpc3BsYXllZCAqLwor CWludCB3aWR0aCwgaGVpZ2h0OyAgICAgIC8qIHNjcmVlbiBzaXplIGluIHBpeGVscyAqLworCisJ ZHJtX2hhbmRsZV90IGZyb250X2hhbmRsZTsKKwlpbnQgZnJvbnRfb2Zmc2V0OworCWludCBmcm9u dF9zaXplOworCisJZHJtX2hhbmRsZV90IGJhY2tfaGFuZGxlOworCWludCBiYWNrX29mZnNldDsK KwlpbnQgYmFja19zaXplOworCisJZHJtX2hhbmRsZV90IGRlcHRoX2hhbmRsZTsKKwlpbnQgZGVw dGhfb2Zmc2V0OworCWludCBkZXB0aF9zaXplOworCisJZHJtX2hhbmRsZV90IHRleF9oYW5kbGU7 CisJaW50IHRleF9vZmZzZXQ7CisJaW50IHRleF9zaXplOworCWludCBsb2dfdGV4X2dyYW51bGFy aXR5OworCWludCBwaXRjaDsKKwlpbnQgcm90YXRpb247ICAgICAgICAgICAvKiAwLCA5MCwgMTgw IG9yIDI3MCAqLworCWludCByb3RhdGVkX29mZnNldDsKKwlpbnQgcm90YXRlZF9zaXplOworCWlu dCByb3RhdGVkX3BpdGNoOworCWludCB2aXJ0dWFsWCwgdmlydHVhbFk7CisKKwl1bnNpZ25lZCBp bnQgZnJvbnRfdGlsZWQ7CisJdW5zaWduZWQgaW50IGJhY2tfdGlsZWQ7CisJdW5zaWduZWQgaW50 IGRlcHRoX3RpbGVkOworCXVuc2lnbmVkIGludCByb3RhdGVkX3RpbGVkOworCXVuc2lnbmVkIGlu dCByb3RhdGVkMl90aWxlZDsKKworCWludCBwaXBlQV94OworCWludCBwaXBlQV95OworCWludCBw aXBlQV93OworCWludCBwaXBlQV9oOworCWludCBwaXBlQl94OworCWludCBwaXBlQl95OworCWlu dCBwaXBlQl93OworCWludCBwaXBlQl9oOworCisJLyogZmlsbCBvdXQgc29tZSBzcGFjZSBmb3Ig b2xkIHVzZXJzcGFjZSB0cmlwbGUgYnVmZmVyICovCisJZHJtX2hhbmRsZV90IHVudXNlZF9oYW5k bGU7CisJX191MzIgdW51c2VkMSwgdW51c2VkMiwgdW51c2VkMzsKKworCS8qIGJ1ZmZlciBvYmpl Y3QgaGFuZGxlcyBmb3Igc3RhdGljIGJ1ZmZlcnMuIE1heSBjaGFuZ2UKKwkgKiBvdmVyIHRoZSBs aWZldGltZSBvZiB0aGUgY2xpZW50LgorCSAqLworCV9fdTMyIGZyb250X2JvX2hhbmRsZTsKKwlf X3UzMiBiYWNrX2JvX2hhbmRsZTsKKwlfX3UzMiB1bnVzZWRfYm9faGFuZGxlOworCV9fdTMyIGRl cHRoX2JvX2hhbmRsZTsKKworfSBkcm1faTkxNV9zYXJlYV90OworCisvKiBkdWUgdG8gdXNlcnNw YWNlIGJ1aWxkaW5nIGFnYWluc3QgdGhlc2UgaGVhZGVycyB3ZSBuZWVkIHNvbWUgY29tcGF0IGhl cmUgKi8KKyNkZWZpbmUgcGxhbmVBX3ggcGlwZUFfeAorI2RlZmluZSBwbGFuZUFfeSBwaXBlQV95 CisjZGVmaW5lIHBsYW5lQV93IHBpcGVBX3cKKyNkZWZpbmUgcGxhbmVBX2ggcGlwZUFfaAorI2Rl ZmluZSBwbGFuZUJfeCBwaXBlQl94CisjZGVmaW5lIHBsYW5lQl95IHBpcGVCX3kKKyNkZWZpbmUg cGxhbmVCX3cgcGlwZUJfdworI2RlZmluZSBwbGFuZUJfaCBwaXBlQl9oCisKKy8qIEZsYWdzIGZv ciBwZXJmX2JveGVzCisgKi8KKyNkZWZpbmUgSTkxNV9CT1hfUklOR19FTVBUWSAgICAweDEKKyNk ZWZpbmUgSTkxNV9CT1hfRkxJUCAgICAgICAgICAweDIKKyNkZWZpbmUgSTkxNV9CT1hfV0FJVCAg ICAgICAgICAweDQKKyNkZWZpbmUgSTkxNV9CT1hfVEVYVFVSRV9MT0FEICAweDgKKyNkZWZpbmUg STkxNV9CT1hfTE9TVF9DT05URVhUICAweDEwCisKKy8qCisgKiBpOTE1IHNwZWNpZmljIGlvY3Rs cy4KKyAqCisgKiBUaGUgZGV2aWNlIHNwZWNpZmljIGlvY3RsIHJhbmdlIGlzIFtEUk1fQ09NTUFO RF9CQVNFLCBEUk1fQ09NTUFORF9FTkQpIGllCisgKiBbMHg0MCwgMHhhMCkgKGEwIGlzIGV4Y2x1 ZGVkKS4gVGhlIG51bWJlcnMgYmVsb3cgYXJlIGRlZmluZWQgYXMgb2Zmc2V0CisgKiBhZ2FpbnN0 IERSTV9DT01NQU5EX0JBU0UgYW5kIHNob3VsZCBiZSBiZXR3ZWVuIFsweDAsIDB4NjApLgorICov CisjZGVmaW5lIERSTV9JOTE1X0lOSVQJCTB4MDAKKyNkZWZpbmUgRFJNX0k5MTVfRkxVU0gJCTB4 MDEKKyNkZWZpbmUgRFJNX0k5MTVfRkxJUAkJMHgwMgorI2RlZmluZSBEUk1fSTkxNV9CQVRDSEJV RkZFUgkweDAzCisjZGVmaW5lIERSTV9JOTE1X0lSUV9FTUlUCTB4MDQKKyNkZWZpbmUgRFJNX0k5 MTVfSVJRX1dBSVQJMHgwNQorI2RlZmluZSBEUk1fSTkxNV9HRVRQQVJBTQkweDA2CisjZGVmaW5l IERSTV9JOTE1X1NFVFBBUkFNCTB4MDcKKyNkZWZpbmUgRFJNX0k5MTVfQUxMT0MJCTB4MDgKKyNk ZWZpbmUgRFJNX0k5MTVfRlJFRQkJMHgwOQorI2RlZmluZSBEUk1fSTkxNV9JTklUX0hFQVAJMHgw YQorI2RlZmluZSBEUk1fSTkxNV9DTURCVUZGRVIJMHgwYgorI2RlZmluZSBEUk1fSTkxNV9ERVNU Uk9ZX0hFQVAJMHgwYworI2RlZmluZSBEUk1fSTkxNV9TRVRfVkJMQU5LX1BJUEUJMHgwZAorI2Rl ZmluZSBEUk1fSTkxNV9HRVRfVkJMQU5LX1BJUEUJMHgwZQorI2RlZmluZSBEUk1fSTkxNV9WQkxB TktfU1dBUAkweDBmCisjZGVmaW5lIERSTV9JOTE1X0hXU19BRERSCTB4MTEKKyNkZWZpbmUgRFJN X0k5MTVfR0VNX0lOSVQJMHgxMworI2RlZmluZSBEUk1fSTkxNV9HRU1fRVhFQ0JVRkZFUgkweDE0 CisjZGVmaW5lIERSTV9JOTE1X0dFTV9QSU4JMHgxNQorI2RlZmluZSBEUk1fSTkxNV9HRU1fVU5Q SU4JMHgxNgorI2RlZmluZSBEUk1fSTkxNV9HRU1fQlVTWQkweDE3CisjZGVmaW5lIERSTV9JOTE1 X0dFTV9USFJPVFRMRQkweDE4CisjZGVmaW5lIERSTV9JOTE1X0dFTV9FTlRFUlZUCTB4MTkKKyNk ZWZpbmUgRFJNX0k5MTVfR0VNX0xFQVZFVlQJMHgxYQorI2RlZmluZSBEUk1fSTkxNV9HRU1fQ1JF QVRFCTB4MWIKKyNkZWZpbmUgRFJNX0k5MTVfR0VNX1BSRUFECTB4MWMKKyNkZWZpbmUgRFJNX0k5 MTVfR0VNX1BXUklURQkweDFkCisjZGVmaW5lIERSTV9JOTE1X0dFTV9NTUFQCTB4MWUKKyNkZWZp bmUgRFJNX0k5MTVfR0VNX1NFVF9ET01BSU4JMHgxZgorI2RlZmluZSBEUk1fSTkxNV9HRU1fU1df RklOSVNICTB4MjAKKyNkZWZpbmUgRFJNX0k5MTVfR0VNX1NFVF9USUxJTkcJMHgyMQorI2RlZmlu ZSBEUk1fSTkxNV9HRU1fR0VUX1RJTElORwkweDIyCisjZGVmaW5lIERSTV9JOTE1X0dFTV9HRVRf QVBFUlRVUkUgMHgyMworI2RlZmluZSBEUk1fSTkxNV9HRU1fTU1BUF9HVFQJMHgyNAorI2RlZmlu ZSBEUk1fSTkxNV9HRVRfUElQRV9GUk9NX0NSVENfSUQJMHgyNQorI2RlZmluZSBEUk1fSTkxNV9H RU1fTUFEVklTRQkweDI2CisjZGVmaW5lIERSTV9JOTE1X09WRVJMQVlfUFVUX0lNQUdFCTB4MjcK KyNkZWZpbmUgRFJNX0k5MTVfT1ZFUkxBWV9BVFRSUwkweDI4CisjZGVmaW5lIERSTV9JOTE1X0dF TV9FWEVDQlVGRkVSMgkweDI5CisjZGVmaW5lIERSTV9JOTE1X0dFTV9FWEVDQlVGRkVSMl9XUglE Uk1fSTkxNV9HRU1fRVhFQ0JVRkZFUjIKKyNkZWZpbmUgRFJNX0k5MTVfR0VUX1NQUklURV9DT0xP UktFWQkweDJhCisjZGVmaW5lIERSTV9JOTE1X1NFVF9TUFJJVEVfQ09MT1JLRVkJMHgyYgorI2Rl ZmluZSBEUk1fSTkxNV9HRU1fV0FJVAkweDJjCisjZGVmaW5lIERSTV9JOTE1X0dFTV9DT05URVhU X0NSRUFURQkweDJkCisjZGVmaW5lIERSTV9JOTE1X0dFTV9DT05URVhUX0RFU1RST1kJMHgyZQor I2RlZmluZSBEUk1fSTkxNV9HRU1fU0VUX0NBQ0hJTkcJMHgyZgorI2RlZmluZSBEUk1fSTkxNV9H RU1fR0VUX0NBQ0hJTkcJMHgzMAorI2RlZmluZSBEUk1fSTkxNV9SRUdfUkVBRAkJMHgzMQorI2Rl ZmluZSBEUk1fSTkxNV9HRVRfUkVTRVRfU1RBVFMJMHgzMgorI2RlZmluZSBEUk1fSTkxNV9HRU1f VVNFUlBUUgkJMHgzMworI2RlZmluZSBEUk1fSTkxNV9HRU1fQ09OVEVYVF9HRVRQQVJBTQkweDM0 CisjZGVmaW5lIERSTV9JOTE1X0dFTV9DT05URVhUX1NFVFBBUkFNCTB4MzUKKyNkZWZpbmUgRFJN X0k5MTVfUEVSRl9PUEVOCQkweDM2CisjZGVmaW5lIERSTV9JOTE1X1BFUkZfQUREX0NPTkZJRwkw eDM3CisjZGVmaW5lIERSTV9JOTE1X1BFUkZfUkVNT1ZFX0NPTkZJRwkweDM4CisKKyNkZWZpbmUg RFJNX0lPQ1RMX0k5MTVfSU5JVAkJRFJNX0lPVyggRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1 X0lOSVQsIGRybV9pOTE1X2luaXRfdCkKKyNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfRkxVU0gJCURS TV9JTyAoIERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9GTFVTSCkKKyNkZWZpbmUgRFJNX0lP Q1RMX0k5MTVfRkxJUAkJRFJNX0lPICggRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0ZMSVAp CisjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0JBVENIQlVGRkVSCURSTV9JT1coIERSTV9DT01NQU5E X0JBU0UgKyBEUk1fSTkxNV9CQVRDSEJVRkZFUiwgZHJtX2k5MTVfYmF0Y2hidWZmZXJfdCkKKyNk ZWZpbmUgRFJNX0lPQ1RMX0k5MTVfSVJRX0VNSVQgICAgICAgICBEUk1fSU9XUihEUk1fQ09NTUFO RF9CQVNFICsgRFJNX0k5MTVfSVJRX0VNSVQsIGRybV9pOTE1X2lycV9lbWl0X3QpCisjZGVmaW5l IERSTV9JT0NUTF9JOTE1X0lSUV9XQUlUICAgICAgICAgRFJNX0lPVyggRFJNX0NPTU1BTkRfQkFT RSArIERSTV9JOTE1X0lSUV9XQUlULCBkcm1faTkxNV9pcnFfd2FpdF90KQorI2RlZmluZSBEUk1f SU9DVExfSTkxNV9HRVRQQVJBTSAgICAgICAgIERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBE Uk1fSTkxNV9HRVRQQVJBTSwgZHJtX2k5MTVfZ2V0cGFyYW1fdCkKKyNkZWZpbmUgRFJNX0lPQ1RM X0k5MTVfU0VUUEFSQU0gICAgICAgICBEUk1fSU9XKCBEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5 MTVfU0VUUEFSQU0sIGRybV9pOTE1X3NldHBhcmFtX3QpCisjZGVmaW5lIERSTV9JT0NUTF9JOTE1 X0FMTE9DICAgICAgICAgICAgRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0FM TE9DLCBkcm1faTkxNV9tZW1fYWxsb2NfdCkKKyNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfRlJFRSAg ICAgICAgICAgICBEUk1fSU9XKCBEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfRlJFRSwgZHJt X2k5MTVfbWVtX2ZyZWVfdCkKKyNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfSU5JVF9IRUFQICAgICAg ICBEUk1fSU9XKCBEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfSU5JVF9IRUFQLCBkcm1faTkx NV9tZW1faW5pdF9oZWFwX3QpCisjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0NNREJVRkZFUglEUk1f SU9XKCBEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfQ01EQlVGRkVSLCBkcm1faTkxNV9jbWRi dWZmZXJfdCkKKyNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfREVTVFJPWV9IRUFQCURSTV9JT1coIERS TV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9ERVNUUk9ZX0hFQVAsIGRybV9pOTE1X21lbV9kZXN0 cm95X2hlYXBfdCkKKyNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfU0VUX1ZCTEFOS19QSVBFCURSTV9J T1coIERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9TRVRfVkJMQU5LX1BJUEUsIGRybV9pOTE1 X3ZibGFua19waXBlX3QpCisjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFVF9WQkxBTktfUElQRQlE Uk1fSU9SKCBEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VUX1ZCTEFOS19QSVBFLCBkcm1f aTkxNV92YmxhbmtfcGlwZV90KQorI2RlZmluZSBEUk1fSU9DVExfSTkxNV9WQkxBTktfU1dBUAlE Uk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfVkJMQU5LX1NXQVAsIGRybV9pOTE1 X3ZibGFua19zd2FwX3QpCisjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0hXU19BRERSCQlEUk1fSU9X KERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9IV1NfQUREUiwgc3RydWN0IGRybV9pOTE1X2dl bV9pbml0KQorI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fSU5JVAkJRFJNX0lPVyhEUk1fQ09N TUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX0lOSVQsIHN0cnVjdCBkcm1faTkxNV9nZW1faW5pdCkK KyNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VNX0VYRUNCVUZGRVIJRFJNX0lPVyhEUk1fQ09NTUFO RF9CQVNFICsgRFJNX0k5MTVfR0VNX0VYRUNCVUZGRVIsIHN0cnVjdCBkcm1faTkxNV9nZW1fZXhl Y2J1ZmZlcikKKyNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VNX0VYRUNCVUZGRVIyCURSTV9JT1co RFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9FWEVDQlVGRkVSMiwgc3RydWN0IGRybV9p OTE1X2dlbV9leGVjYnVmZmVyMikKKyNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VNX0VYRUNCVUZG RVIyX1dSCURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fRVhFQ0JVRkZF UjJfV1IsIHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIpCisjZGVmaW5lIERSTV9JT0NU TF9JOTE1X0dFTV9QSU4JCURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1f UElOLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3BpbikKKyNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VN X1VOUElOCURSTV9JT1coRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9VTlBJTiwgc3Ry dWN0IGRybV9pOTE1X2dlbV91bnBpbikKKyNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VNX0JVU1kJ CURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fQlVTWSwgc3RydWN0IGRy bV9pOTE1X2dlbV9idXN5KQorI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fU0VUX0NBQ0hJTkcJ CURSTV9JT1coRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9TRVRfQ0FDSElORywgc3Ry dWN0IGRybV9pOTE1X2dlbV9jYWNoaW5nKQorI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fR0VU X0NBQ0hJTkcJCURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fR0VUX0NB Q0hJTkcsIHN0cnVjdCBkcm1faTkxNV9nZW1fY2FjaGluZykKKyNkZWZpbmUgRFJNX0lPQ1RMX0k5 MTVfR0VNX1RIUk9UVExFCURSTV9JTyAoIERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1f VEhST1RUTEUpCisjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9FTlRFUlZUCURSTV9JTyhEUk1f Q09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX0VOVEVSVlQpCisjZGVmaW5lIERSTV9JT0NUTF9J OTE1X0dFTV9MRUFWRVZUCURSTV9JTyhEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX0xF QVZFVlQpCisjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9DUkVBVEUJRFJNX0lPV1IoRFJNX0NP TU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9DUkVBVEUsIHN0cnVjdCBkcm1faTkxNV9nZW1fY3Jl YXRlKQorI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fUFJFQUQJRFJNX0lPVyAoRFJNX0NPTU1B TkRfQkFTRSArIERSTV9JOTE1X0dFTV9QUkVBRCwgc3RydWN0IGRybV9pOTE1X2dlbV9wcmVhZCkK KyNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VNX1BXUklURQlEUk1fSU9XIChEUk1fQ09NTUFORF9C QVNFICsgRFJNX0k5MTVfR0VNX1BXUklURSwgc3RydWN0IGRybV9pOTE1X2dlbV9wd3JpdGUpCisj ZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9NTUFQCQlEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNF ICsgRFJNX0k5MTVfR0VNX01NQVAsIHN0cnVjdCBkcm1faTkxNV9nZW1fbW1hcCkKKyNkZWZpbmUg RFJNX0lPQ1RMX0k5MTVfR0VNX01NQVBfR1RUCURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBE Uk1fSTkxNV9HRU1fTU1BUF9HVFQsIHN0cnVjdCBkcm1faTkxNV9nZW1fbW1hcF9ndHQpCisjZGVm aW5lIERSTV9JT0NUTF9JOTE1X0dFTV9TRVRfRE9NQUlOCURSTV9JT1cgKERSTV9DT01NQU5EX0JB U0UgKyBEUk1fSTkxNV9HRU1fU0VUX0RPTUFJTiwgc3RydWN0IGRybV9pOTE1X2dlbV9zZXRfZG9t YWluKQorI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fU1dfRklOSVNICURSTV9JT1cgKERSTV9D T01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fU1dfRklOSVNILCBzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3N3X2ZpbmlzaCkKKyNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VNX1NFVF9USUxJTkcJRFJNX0lP V1IgKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fU0VUX1RJTElORywgc3RydWN0IGRy bV9pOTE1X2dlbV9zZXRfdGlsaW5nKQorI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fR0VUX1RJ TElORwlEUk1fSU9XUiAoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9HRVRfVElMSU5H LCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2dldF90aWxpbmcpCisjZGVmaW5lIERSTV9JT0NUTF9JOTE1 X0dFTV9HRVRfQVBFUlRVUkUJRFJNX0lPUiAgKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9H RU1fR0VUX0FQRVJUVVJFLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2dldF9hcGVydHVyZSkKKyNkZWZp bmUgRFJNX0lPQ1RMX0k5MTVfR0VUX1BJUEVfRlJPTV9DUlRDX0lEIERSTV9JT1dSKERSTV9DT01N QU5EX0JBU0UgKyBEUk1fSTkxNV9HRVRfUElQRV9GUk9NX0NSVENfSUQsIHN0cnVjdCBkcm1faTkx NV9nZXRfcGlwZV9mcm9tX2NydGNfaWQpCisjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9NQURW SVNFCURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fTUFEVklTRSwgc3Ry dWN0IGRybV9pOTE1X2dlbV9tYWR2aXNlKQorI2RlZmluZSBEUk1fSU9DVExfSTkxNV9PVkVSTEFZ X1BVVF9JTUFHRQlEUk1fSU9XKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9PVkVSTEFZX1BV VF9JTUFHRSwgc3RydWN0IGRybV9pbnRlbF9vdmVybGF5X3B1dF9pbWFnZSkKKyNkZWZpbmUgRFJN X0lPQ1RMX0k5MTVfT1ZFUkxBWV9BVFRSUwlEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJN X0k5MTVfT1ZFUkxBWV9BVFRSUywgc3RydWN0IGRybV9pbnRlbF9vdmVybGF5X2F0dHJzKQorI2Rl ZmluZSBEUk1fSU9DVExfSTkxNV9TRVRfU1BSSVRFX0NPTE9SS0VZIERSTV9JT1dSKERSTV9DT01N QU5EX0JBU0UgKyBEUk1fSTkxNV9TRVRfU1BSSVRFX0NPTE9SS0VZLCBzdHJ1Y3QgZHJtX2ludGVs X3Nwcml0ZV9jb2xvcmtleSkKKyNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VUX1NQUklURV9DT0xP UktFWSBEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VUX1NQUklURV9DT0xP UktFWSwgc3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkpCisjZGVmaW5lIERSTV9JT0NU TF9JOTE1X0dFTV9XQUlUCQlEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VN X1dBSVQsIHN0cnVjdCBkcm1faTkxNV9nZW1fd2FpdCkKKyNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVf R0VNX0NPTlRFWFRfQ1JFQVRFCURSTV9JT1dSIChEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVf R0VNX0NPTlRFWFRfQ1JFQVRFLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfY3JlYXRlKQor I2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fQ09OVEVYVF9ERVNUUk9ZCURSTV9JT1cgKERSTV9D T01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fQ09OVEVYVF9ERVNUUk9ZLCBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX2NvbnRleHRfZGVzdHJveSkKKyNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfUkVHX1JFQUQJ CQlEUk1fSU9XUiAoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X1JFR19SRUFELCBzdHJ1Y3Qg ZHJtX2k5MTVfcmVnX3JlYWQpCisjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFVF9SRVNFVF9TVEFU UwkJRFJNX0lPV1IgKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRVRfUkVTRVRfU1RBVFMs IHN0cnVjdCBkcm1faTkxNV9yZXNldF9zdGF0cykKKyNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VN X1VTRVJQVFIJCQlEUk1fSU9XUiAoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9VU0VS UFRSLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3VzZXJwdHIpCisjZGVmaW5lIERSTV9JT0NUTF9JOTE1 X0dFTV9DT05URVhUX0dFVFBBUkFNCURSTV9JT1dSIChEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5 MTVfR0VNX0NPTlRFWFRfR0VUUEFSQU0sIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJh bSkKKyNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VNX0NPTlRFWFRfU0VUUEFSQU0JRFJNX0lPV1Ig KERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fQ09OVEVYVF9TRVRQQVJBTSwgc3RydWN0 IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtKQorI2RlZmluZSBEUk1fSU9DVExfSTkxNV9QRVJG X09QRU4JRFJNX0lPVyhEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfUEVSRl9PUEVOLCBzdHJ1 Y3QgZHJtX2k5MTVfcGVyZl9vcGVuX3BhcmFtKQorI2RlZmluZSBEUk1fSU9DVExfSTkxNV9QRVJG X0FERF9DT05GSUcJRFJNX0lPVyhEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfUEVSRl9BRERf Q09ORklHLCBzdHJ1Y3QgZHJtX2k5MTVfcGVyZl9vYV9jb25maWcpCisjZGVmaW5lIERSTV9JT0NU TF9JOTE1X1BFUkZfUkVNT1ZFX0NPTkZJRwlEUk1fSU9XKERSTV9DT01NQU5EX0JBU0UgKyBEUk1f STkxNV9QRVJGX1JFTU9WRV9DT05GSUcsIF9fdTY0KQorCisvKiBBbGxvdyBkcml2ZXJzIHRvIHN1 Ym1pdCBiYXRjaGJ1ZmZlcnMgZGlyZWN0bHkgdG8gaGFyZHdhcmUsIHJlbHlpbmcKKyAqIG9uIHRo ZSBzZWN1cml0eSBtZWNoYW5pc21zIHByb3ZpZGVkIGJ5IGhhcmR3YXJlLgorICovCit0eXBlZGVm IHN0cnVjdCBkcm1faTkxNV9iYXRjaGJ1ZmZlciB7CisJaW50IHN0YXJ0OwkJLyogYWdwIG9mZnNl dCAqLworCWludCB1c2VkOwkJLyogbnIgYnl0ZXMgaW4gdXNlICovCisJaW50IERSMTsJCS8qIGh3 IGZsYWdzIGZvciBHRlhfT1BfRFJBV1JFQ1RfSU5GTyAqLworCWludCBEUjQ7CQkvKiB3aW5kb3cg b3JpZ2luIGZvciBHRlhfT1BfRFJBV1JFQ1RfSU5GTyAqLworCWludCBudW1fY2xpcHJlY3RzOwkv KiBtdWxpdHBhc3Mgd2l0aCBtdWx0aXBsZSBjbGlwcmVjdHM/ICovCisJc3RydWN0IGRybV9jbGlw X3JlY3QgKmNsaXByZWN0czsJLyogcG9pbnRlciB0byB1c2Vyc3BhY2UgY2xpcHJlY3RzICovCit9 IGRybV9pOTE1X2JhdGNoYnVmZmVyX3Q7CisKKy8qIEFzIGFib3ZlLCBidXQgcGFzcyBhIHBvaW50 ZXIgdG8gdXNlcnNwYWNlIGJ1ZmZlciB3aGljaCBjYW4gYmUKKyAqIHZhbGlkYXRlZCBieSB0aGUg a2VybmVsIHByaW9yIHRvIHNlbmRpbmcgdG8gaGFyZHdhcmUuCisgKi8KK3R5cGVkZWYgc3RydWN0 IF9kcm1faTkxNV9jbWRidWZmZXIgeworCWNoYXIgKmJ1ZjsJLyogcG9pbnRlciB0byB1c2Vyc3Bh Y2UgY29tbWFuZCBidWZmZXIgKi8KKwlpbnQgc3o7CQkJLyogbnIgYnl0ZXMgaW4gYnVmICovCisJ aW50IERSMTsJCS8qIGh3IGZsYWdzIGZvciBHRlhfT1BfRFJBV1JFQ1RfSU5GTyAqLworCWludCBE UjQ7CQkvKiB3aW5kb3cgb3JpZ2luIGZvciBHRlhfT1BfRFJBV1JFQ1RfSU5GTyAqLworCWludCBu dW1fY2xpcHJlY3RzOwkvKiBtdWxpdHBhc3Mgd2l0aCBtdWx0aXBsZSBjbGlwcmVjdHM/ICovCisJ c3RydWN0IGRybV9jbGlwX3JlY3QgKmNsaXByZWN0czsJLyogcG9pbnRlciB0byB1c2Vyc3BhY2Ug Y2xpcHJlY3RzICovCit9IGRybV9pOTE1X2NtZGJ1ZmZlcl90OworCisvKiBVc2Vyc3BhY2UgY2Fu IHJlcXVlc3QgJiB3YWl0IG9uIGlycSdzOgorICovCit0eXBlZGVmIHN0cnVjdCBkcm1faTkxNV9p cnFfZW1pdCB7CisJaW50ICppcnFfc2VxOworfSBkcm1faTkxNV9pcnFfZW1pdF90OworCit0eXBl ZGVmIHN0cnVjdCBkcm1faTkxNV9pcnFfd2FpdCB7CisJaW50IGlycV9zZXE7Cit9IGRybV9pOTE1 X2lycV93YWl0X3Q7CisKKy8qIElvY3RsIHRvIHF1ZXJ5IGtlcm5lbCBwYXJhbXM6CisgKi8KKyNk ZWZpbmUgSTkxNV9QQVJBTV9JUlFfQUNUSVZFICAgICAgICAgICAgMQorI2RlZmluZSBJOTE1X1BB UkFNX0FMTE9XX0JBVENIQlVGRkVSICAgICAyCisjZGVmaW5lIEk5MTVfUEFSQU1fTEFTVF9ESVNQ QVRDSCAgICAgICAgIDMKKyNkZWZpbmUgSTkxNV9QQVJBTV9DSElQU0VUX0lEICAgICAgICAgICAg NAorI2RlZmluZSBJOTE1X1BBUkFNX0hBU19HRU0gICAgICAgICAgICAgICA1CisjZGVmaW5lIEk5 MTVfUEFSQU1fTlVNX0ZFTkNFU19BVkFJTCAgICAgIDYKKyNkZWZpbmUgSTkxNV9QQVJBTV9IQVNf T1ZFUkxBWSAgICAgICAgICAgNworI2RlZmluZSBJOTE1X1BBUkFNX0hBU19QQUdFRkxJUFBJTkcJ IDgKKyNkZWZpbmUgSTkxNV9QQVJBTV9IQVNfRVhFQ0JVRjIgICAgICAgICAgOQorI2RlZmluZSBJ OTE1X1BBUkFNX0hBU19CU0QJCSAxMAorI2RlZmluZSBJOTE1X1BBUkFNX0hBU19CTFQJCSAxMQor I2RlZmluZSBJOTE1X1BBUkFNX0hBU19SRUxBWEVEX0ZFTkNJTkcJIDEyCisjZGVmaW5lIEk5MTVf UEFSQU1fSEFTX0NPSEVSRU5UX1JJTkdTCSAxMworI2RlZmluZSBJOTE1X1BBUkFNX0hBU19FWEVD X0NPTlNUQU5UUwkgMTQKKyNkZWZpbmUgSTkxNV9QQVJBTV9IQVNfUkVMQVhFRF9ERUxUQQkgMTUK KyNkZWZpbmUgSTkxNV9QQVJBTV9IQVNfR0VON19TT0xfUkVTRVQJIDE2CisjZGVmaW5lIEk5MTVf UEFSQU1fSEFTX0xMQyAgICAgCSAJIDE3CisjZGVmaW5lIEk5MTVfUEFSQU1fSEFTX0FMSUFTSU5H X1BQR1RUCSAxOAorI2RlZmluZSBJOTE1X1BBUkFNX0hBU19XQUlUX1RJTUVPVVQJIDE5CisjZGVm aW5lIEk5MTVfUEFSQU1fSEFTX1NFTUFQSE9SRVMJIDIwCisjZGVmaW5lIEk5MTVfUEFSQU1fSEFT X1BSSU1FX1ZNQVBfRkxVU0gJIDIxCisjZGVmaW5lIEk5MTVfUEFSQU1fSEFTX1ZFQk9YCQkgMjIK KyNkZWZpbmUgSTkxNV9QQVJBTV9IQVNfU0VDVVJFX0JBVENIRVMJIDIzCisjZGVmaW5lIEk5MTVf UEFSQU1fSEFTX1BJTk5FRF9CQVRDSEVTCSAyNAorI2RlZmluZSBJOTE1X1BBUkFNX0hBU19FWEVD X05PX1JFTE9DCSAyNQorI2RlZmluZSBJOTE1X1BBUkFNX0hBU19FWEVDX0hBTkRMRV9MVVQgICAy NgorI2RlZmluZSBJOTE1X1BBUkFNX0hBU19XVCAgICAgCSAJIDI3CisjZGVmaW5lIEk5MTVfUEFS QU1fQ01EX1BBUlNFUl9WRVJTSU9OCSAyOAorI2RlZmluZSBJOTE1X1BBUkFNX0hBU19DT0hFUkVO VF9QSFlTX0dUVCAyOQorI2RlZmluZSBJOTE1X1BBUkFNX01NQVBfVkVSU0lPTiAgICAgICAgICAz MAorI2RlZmluZSBJOTE1X1BBUkFNX0hBU19CU0QyCQkgMzEKKyNkZWZpbmUgSTkxNV9QQVJBTV9S RVZJU0lPTiAgICAgICAgICAgICAgMzIKKyNkZWZpbmUgSTkxNV9QQVJBTV9TVUJTTElDRV9UT1RB TAkgMzMKKyNkZWZpbmUgSTkxNV9QQVJBTV9FVV9UT1RBTAkJIDM0CisjZGVmaW5lIEk5MTVfUEFS QU1fSEFTX0dQVV9SRVNFVAkgMzUKKyNkZWZpbmUgSTkxNV9QQVJBTV9IQVNfUkVTT1VSQ0VfU1RS RUFNRVIgMzYKKyNkZWZpbmUgSTkxNV9QQVJBTV9IQVNfRVhFQ19TT0ZUUElOCSAzNworI2RlZmlu ZSBJOTE1X1BBUkFNX0hBU19QT09MRURfRVUJIDM4CisjZGVmaW5lIEk5MTVfUEFSQU1fTUlOX0VV X0lOX1BPT0wJIDM5CisjZGVmaW5lIEk5MTVfUEFSQU1fTU1BUF9HVFRfVkVSU0lPTgkgNDAKKwor LyoKKyAqIFF1ZXJ5IHdoZXRoZXIgRFJNX0k5MTVfR0VNX0VYRUNCVUZGRVIyIHN1cHBvcnRzIHVz ZXIgZGVmaW5lZCBleGVjdXRpb24KKyAqIHByaW9yaXRpZXMgYW5kIHRoZSBkcml2ZXIgd2lsbCBh dHRlbXB0IHRvIGV4ZWN1dGUgYmF0Y2hlcyBpbiBwcmlvcml0eSBvcmRlci4KKyAqIFRoZSBwYXJh bSByZXR1cm5zIGEgY2FwYWJpbGl0eSBiaXRtYXNrLCBub256ZXJvIGltcGxpZXMgdGhhdCB0aGUg c2NoZWR1bGVyCisgKiBpcyBlbmFibGVkLCB3aXRoIGRpZmZlcmVudCBmZWF0dXJlcyBwcmVzZW50 IGFjY29yZGluZyB0byB0aGUgbWFzay4KKyAqCisgKiBUaGUgaW5pdGlhbCBwcmlvcml0eSBmb3Ig ZWFjaCBiYXRjaCBpcyBzdXBwbGllZCBieSB0aGUgY29udGV4dCBhbmQgaXMKKyAqIGNvbnRyb2xs ZWQgdmlhIEk5MTVfQ09OVEVYVF9QQVJBTV9QUklPUklUWS4KKyAqLworI2RlZmluZSBJOTE1X1BB UkFNX0hBU19TQ0hFRFVMRVIJIDQxCisjZGVmaW5lICAgSTkxNV9TQ0hFRFVMRVJfQ0FQX0VOQUJM RUQJKDF1bCA8PCAwKQorI2RlZmluZSAgIEk5MTVfU0NIRURVTEVSX0NBUF9QUklPUklUWQkoMXVs IDw8IDEpCisjZGVmaW5lICAgSTkxNV9TQ0hFRFVMRVJfQ0FQX1BSRUVNUFRJT04JKDF1bCA8PCAy KQorCisjZGVmaW5lIEk5MTVfUEFSQU1fSFVDX1NUQVRVUwkJIDQyCisKKy8qIFF1ZXJ5IHdoZXRo ZXIgRFJNX0k5MTVfR0VNX0VYRUNCVUZGRVIyIHN1cHBvcnRzIHRoZSBhYmlsaXR5IHRvIG9wdC1v dXQgb2YKKyAqIHN5bmNocm9uaXNhdGlvbiB3aXRoIGltcGxpY2l0IGZlbmNpbmcgb24gaW5kaXZp ZHVhbCBvYmplY3RzLgorICogU2VlIEVYRUNfT0JKRUNUX0FTWU5DLgorICovCisjZGVmaW5lIEk5 MTVfUEFSQU1fSEFTX0VYRUNfQVNZTkMJIDQzCisKKy8qIFF1ZXJ5IHdoZXRoZXIgRFJNX0k5MTVf R0VNX0VYRUNCVUZGRVIyIHN1cHBvcnRzIGV4cGxpY2l0IGZlbmNlIHN1cHBvcnQgLQorICogYm90 aCBiZWluZyBhYmxlIHRvIHBhc3MgaW4gYSBzeW5jX2ZpbGUgZmQgdG8gd2FpdCB1cG9uIGJlZm9y ZSBleGVjdXRpbmcsCisgKiBhbmQgYmVpbmcgYWJsZSB0byByZXR1cm4gYSBuZXcgc3luY19maWxl IGZkIHRoYXQgaXMgc2lnbmFsZWQgd2hlbiB0aGUKKyAqIGN1cnJlbnQgcmVxdWVzdCBpcyBjb21w bGV0ZS4gU2VlIEk5MTVfRVhFQ19GRU5DRV9JTiBhbmQgSTkxNV9FWEVDX0ZFTkNFX09VVC4KKyAq LworI2RlZmluZSBJOTE1X1BBUkFNX0hBU19FWEVDX0ZFTkNFCSA0NAorCisvKiBRdWVyeSB3aGV0 aGVyIERSTV9JOTE1X0dFTV9FWEVDQlVGRkVSMiBzdXBwb3J0cyB0aGUgYWJpbGl0eSB0byBjYXB0 dXJlCisgKiB1c2VyIHNwZWNpZmllZCBidWZmZmVycyBmb3IgcG9zdC1tb3J0ZW0gZGVidWdnaW5n IG9mIEdQVSBoYW5ncy4gU2VlCisgKiBFWEVDX09CSkVDVF9DQVBUVVJFLgorICovCisjZGVmaW5l IEk5MTVfUEFSQU1fSEFTX0VYRUNfQ0FQVFVSRQkgNDUKKworI2RlZmluZSBJOTE1X1BBUkFNX1NM SUNFX01BU0sJCSA0NgorCisvKiBBc3N1bWluZyBpdCdzIHVuaWZvcm0gZm9yIGVhY2ggc2xpY2Us IHRoaXMgcXVlcmllcyB0aGUgbWFzayBvZiBzdWJzbGljZXMKKyAqIHBlci1zbGljZSBmb3IgdGhp cyBzeXN0ZW0uCisgKi8KKyNkZWZpbmUgSTkxNV9QQVJBTV9TVUJTTElDRV9NQVNLCSA0NworCisv KgorICogUXVlcnkgd2hldGhlciBEUk1fSTkxNV9HRU1fRVhFQ0JVRkZFUjIgc3VwcG9ydHMgc3Vw cGx5aW5nIHRoZSBiYXRjaCBidWZmZXIKKyAqIGFzIHRoZSBmaXJzdCBleGVjb2JqZWN0IGFzIG9w cG9zZWQgdG8gdGhlIGxhc3QuIFNlZSBJOTE1X0VYRUNfQkFUQ0hfRklSU1QuCisgKi8KKyNkZWZp bmUgSTkxNV9QQVJBTV9IQVNfRVhFQ19CQVRDSF9GSVJTVAkgNDgKKworLyogUXVlcnkgd2hldGhl ciBEUk1fSTkxNV9HRU1fRVhFQ0JVRkZFUjIgc3VwcG9ydHMgc3VwcGx5aW5nIGFuIGFycmF5IG9m CisgKiBkcm1faTkxNV9nZW1fZXhlY19mZW5jZSBzdHJ1Y3R1cmVzLiAgU2VlIEk5MTVfRVhFQ19G RU5DRV9BUlJBWS4KKyAqLworI2RlZmluZSBJOTE1X1BBUkFNX0hBU19FWEVDX0ZFTkNFX0FSUkFZ ICA0OQorCit0eXBlZGVmIHN0cnVjdCBkcm1faTkxNV9nZXRwYXJhbSB7CisJX19zMzIgcGFyYW07 CisJLyoKKwkgKiBXQVJOSU5HOiBVc2luZyBwb2ludGVycyBpbnN0ZWFkIG9mIGZpeGVkLXNpemUg dTY0IG1lYW5zIHdlIG5lZWQgdG8gd3JpdGUKKwkgKiBjb21wYXQzMiBjb2RlLiBEb24ndCByZXBl YXQgdGhpcyBtaXN0YWtlLgorCSAqLworCWludCAqdmFsdWU7Cit9IGRybV9pOTE1X2dldHBhcmFt X3Q7CisKKy8qIElvY3RsIHRvIHNldCBrZXJuZWwgcGFyYW1zOgorICovCisjZGVmaW5lIEk5MTVf U0VUUEFSQU1fVVNFX01JX0JBVENIQlVGRkVSX1NUQVJUICAgICAgICAgICAgMQorI2RlZmluZSBJ OTE1X1NFVFBBUkFNX1RFWF9MUlVfTE9HX0dSQU5VTEFSSVRZICAgICAgICAgICAgIDIKKyNkZWZp bmUgSTkxNV9TRVRQQVJBTV9BTExPV19CQVRDSEJVRkZFUiAgICAgICAgICAgICAgICAgICAzCisj ZGVmaW5lIEk5MTVfU0VUUEFSQU1fTlVNX1VTRURfRkVOQ0VTICAgICAgICAgICAgICAgICAgICAg NAorCit0eXBlZGVmIHN0cnVjdCBkcm1faTkxNV9zZXRwYXJhbSB7CisJaW50IHBhcmFtOworCWlu dCB2YWx1ZTsKK30gZHJtX2k5MTVfc2V0cGFyYW1fdDsKKworLyogQSBtZW1vcnkgbWFuYWdlciBm b3IgcmVnaW9ucyBvZiBzaGFyZWQgbWVtb3J5OgorICovCisjZGVmaW5lIEk5MTVfTUVNX1JFR0lP Tl9BR1AgMQorCit0eXBlZGVmIHN0cnVjdCBkcm1faTkxNV9tZW1fYWxsb2MgeworCWludCByZWdp b247CisJaW50IGFsaWdubWVudDsKKwlpbnQgc2l6ZTsKKwlpbnQgKnJlZ2lvbl9vZmZzZXQ7CS8q IG9mZnNldCBmcm9tIHN0YXJ0IG9mIGZiIG9yIGFncCAqLworfSBkcm1faTkxNV9tZW1fYWxsb2Nf dDsKKwordHlwZWRlZiBzdHJ1Y3QgZHJtX2k5MTVfbWVtX2ZyZWUgeworCWludCByZWdpb247CisJ aW50IHJlZ2lvbl9vZmZzZXQ7Cit9IGRybV9pOTE1X21lbV9mcmVlX3Q7CisKK3R5cGVkZWYgc3Ry dWN0IGRybV9pOTE1X21lbV9pbml0X2hlYXAgeworCWludCByZWdpb247CisJaW50IHNpemU7CisJ aW50IHN0YXJ0OworfSBkcm1faTkxNV9tZW1faW5pdF9oZWFwX3Q7CisKKy8qIEFsbG93IG1lbW9y eSBtYW5hZ2VyIHRvIGJlIHRvcm4gZG93biBhbmQgcmUtaW5pdGlhbGl6ZWQgKGVnIG9uCisgKiBy b3RhdGUpOgorICovCit0eXBlZGVmIHN0cnVjdCBkcm1faTkxNV9tZW1fZGVzdHJveV9oZWFwIHsK KwlpbnQgcmVnaW9uOworfSBkcm1faTkxNV9tZW1fZGVzdHJveV9oZWFwX3Q7CisKKy8qIEFsbG93 IFggc2VydmVyIHRvIGNvbmZpZ3VyZSB3aGljaCBwaXBlcyB0byBtb25pdG9yIGZvciB2Ymxhbmsg c2lnbmFscworICovCisjZGVmaW5lCURSTV9JOTE1X1ZCTEFOS19QSVBFX0EJMQorI2RlZmluZQlE Uk1fSTkxNV9WQkxBTktfUElQRV9CCTIKKwordHlwZWRlZiBzdHJ1Y3QgZHJtX2k5MTVfdmJsYW5r X3BpcGUgeworCWludCBwaXBlOworfSBkcm1faTkxNV92YmxhbmtfcGlwZV90OworCisvKiBTY2hl ZHVsZSBidWZmZXIgc3dhcCBhdCBnaXZlbiB2ZXJ0aWNhbCBibGFuazoKKyAqLwordHlwZWRlZiBz dHJ1Y3QgZHJtX2k5MTVfdmJsYW5rX3N3YXAgeworCWRybV9kcmF3YWJsZV90IGRyYXdhYmxlOwor CWVudW0gZHJtX3ZibGFua19zZXFfdHlwZSBzZXF0eXBlOworCXVuc2lnbmVkIGludCBzZXF1ZW5j ZTsKK30gZHJtX2k5MTVfdmJsYW5rX3N3YXBfdDsKKwordHlwZWRlZiBzdHJ1Y3QgZHJtX2k5MTVf aHdzX2FkZHIgeworCV9fdTY0IGFkZHI7Cit9IGRybV9pOTE1X2h3c19hZGRyX3Q7CisKK3N0cnVj dCBkcm1faTkxNV9nZW1faW5pdCB7CisJLyoqCisJICogQmVnaW5uaW5nIG9mZnNldCBpbiB0aGUg R1RUIHRvIGJlIG1hbmFnZWQgYnkgdGhlIERSTSBtZW1vcnkKKwkgKiBtYW5hZ2VyLgorCSAqLwor CV9fdTY0IGd0dF9zdGFydDsKKwkvKioKKwkgKiBFbmRpbmcgb2Zmc2V0IGluIHRoZSBHVFQgdG8g YmUgbWFuYWdlZCBieSB0aGUgRFJNIG1lbW9yeQorCSAqIG1hbmFnZXIuCisJICovCisJX191NjQg Z3R0X2VuZDsKK307CisKK3N0cnVjdCBkcm1faTkxNV9nZW1fY3JlYXRlIHsKKwkvKioKKwkgKiBS ZXF1ZXN0ZWQgc2l6ZSBmb3IgdGhlIG9iamVjdC4KKwkgKgorCSAqIFRoZSAocGFnZS1hbGlnbmVk KSBhbGxvY2F0ZWQgc2l6ZSBmb3IgdGhlIG9iamVjdCB3aWxsIGJlIHJldHVybmVkLgorCSAqLwor CV9fdTY0IHNpemU7CisJLyoqCisJICogUmV0dXJuZWQgaGFuZGxlIGZvciB0aGUgb2JqZWN0Lgor CSAqCisJICogT2JqZWN0IGhhbmRsZXMgYXJlIG5vbnplcm8uCisJICovCisJX191MzIgaGFuZGxl OworCV9fdTMyIHBhZDsKK307CisKK3N0cnVjdCBkcm1faTkxNV9nZW1fcHJlYWQgeworCS8qKiBI YW5kbGUgZm9yIHRoZSBvYmplY3QgYmVpbmcgcmVhZC4gKi8KKwlfX3UzMiBoYW5kbGU7CisJX191 MzIgcGFkOworCS8qKiBPZmZzZXQgaW50byB0aGUgb2JqZWN0IHRvIHJlYWQgZnJvbSAqLworCV9f dTY0IG9mZnNldDsKKwkvKiogTGVuZ3RoIG9mIGRhdGEgdG8gcmVhZCAqLworCV9fdTY0IHNpemU7 CisJLyoqCisJICogUG9pbnRlciB0byB3cml0ZSB0aGUgZGF0YSBpbnRvLgorCSAqCisJICogVGhp cyBpcyBhIGZpeGVkLXNpemUgdHlwZSBmb3IgMzIvNjQgY29tcGF0aWJpbGl0eS4KKwkgKi8KKwlf X3U2NCBkYXRhX3B0cjsKK307CisKK3N0cnVjdCBkcm1faTkxNV9nZW1fcHdyaXRlIHsKKwkvKiog SGFuZGxlIGZvciB0aGUgb2JqZWN0IGJlaW5nIHdyaXR0ZW4gdG8uICovCisJX191MzIgaGFuZGxl OworCV9fdTMyIHBhZDsKKwkvKiogT2Zmc2V0IGludG8gdGhlIG9iamVjdCB0byB3cml0ZSB0byAq LworCV9fdTY0IG9mZnNldDsKKwkvKiogTGVuZ3RoIG9mIGRhdGEgdG8gd3JpdGUgKi8KKwlfX3U2 NCBzaXplOworCS8qKgorCSAqIFBvaW50ZXIgdG8gcmVhZCB0aGUgZGF0YSBmcm9tLgorCSAqCisJ ICogVGhpcyBpcyBhIGZpeGVkLXNpemUgdHlwZSBmb3IgMzIvNjQgY29tcGF0aWJpbGl0eS4KKwkg Ki8KKwlfX3U2NCBkYXRhX3B0cjsKK307CisKK3N0cnVjdCBkcm1faTkxNV9nZW1fbW1hcCB7CisJ LyoqIEhhbmRsZSBmb3IgdGhlIG9iamVjdCBiZWluZyBtYXBwZWQuICovCisJX191MzIgaGFuZGxl OworCV9fdTMyIHBhZDsKKwkvKiogT2Zmc2V0IGluIHRoZSBvYmplY3QgdG8gbWFwLiAqLworCV9f dTY0IG9mZnNldDsKKwkvKioKKwkgKiBMZW5ndGggb2YgZGF0YSB0byBtYXAuCisJICoKKwkgKiBU aGUgdmFsdWUgd2lsbCBiZSBwYWdlLWFsaWduZWQuCisJICovCisJX191NjQgc2l6ZTsKKwkvKioK KwkgKiBSZXR1cm5lZCBwb2ludGVyIHRoZSBkYXRhIHdhcyBtYXBwZWQgYXQuCisJICoKKwkgKiBU aGlzIGlzIGEgZml4ZWQtc2l6ZSB0eXBlIGZvciAzMi82NCBjb21wYXRpYmlsaXR5LgorCSAqLwor CV9fdTY0IGFkZHJfcHRyOworCisJLyoqCisJICogRmxhZ3MgZm9yIGV4dGVuZGVkIGJlaGF2aW91 ci4KKwkgKgorCSAqIEFkZGVkIGluIHZlcnNpb24gMi4KKwkgKi8KKwlfX3U2NCBmbGFnczsKKyNk ZWZpbmUgSTkxNV9NTUFQX1dDIDB4MQorfTsKKworc3RydWN0IGRybV9pOTE1X2dlbV9tbWFwX2d0 dCB7CisJLyoqIEhhbmRsZSBmb3IgdGhlIG9iamVjdCBiZWluZyBtYXBwZWQuICovCisJX191MzIg aGFuZGxlOworCV9fdTMyIHBhZDsKKwkvKioKKwkgKiBGYWtlIG9mZnNldCB0byB1c2UgZm9yIHN1 YnNlcXVlbnQgbW1hcCBjYWxsCisJICoKKwkgKiBUaGlzIGlzIGEgZml4ZWQtc2l6ZSB0eXBlIGZv ciAzMi82NCBjb21wYXRpYmlsaXR5LgorCSAqLworCV9fdTY0IG9mZnNldDsKK307CisKK3N0cnVj dCBkcm1faTkxNV9nZW1fc2V0X2RvbWFpbiB7CisJLyoqIEhhbmRsZSBmb3IgdGhlIG9iamVjdCAq LworCV9fdTMyIGhhbmRsZTsKKworCS8qKiBOZXcgcmVhZCBkb21haW5zICovCisJX191MzIgcmVh ZF9kb21haW5zOworCisJLyoqIE5ldyB3cml0ZSBkb21haW4gKi8KKwlfX3UzMiB3cml0ZV9kb21h aW47Cit9OworCitzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3N3X2ZpbmlzaCB7CisJLyoqIEhhbmRsZSBm b3IgdGhlIG9iamVjdCAqLworCV9fdTMyIGhhbmRsZTsKK307CisKK3N0cnVjdCBkcm1faTkxNV9n ZW1fcmVsb2NhdGlvbl9lbnRyeSB7CisJLyoqCisJICogSGFuZGxlIG9mIHRoZSBidWZmZXIgYmVp bmcgcG9pbnRlZCB0byBieSB0aGlzIHJlbG9jYXRpb24gZW50cnkuCisJICoKKwkgKiBJdCdzIGFw cGVhbGluZyB0byBtYWtlIHRoaXMgYmUgYW4gaW5kZXggaW50byB0aGUgbW1fdmFsaWRhdGVfZW50 cnkKKwkgKiBsaXN0IHRvIHJlZmVyIHRvIHRoZSBidWZmZXIsIGJ1dCB0aGlzIGFsbG93cyB0aGUg ZHJpdmVyIHRvIGNyZWF0ZQorCSAqIGEgcmVsb2NhdGlvbiBsaXN0IGZvciBzdGF0ZSBidWZmZXJz IGFuZCBub3QgcmUtd3JpdGUgaXQgcGVyCisJICogZXhlYyB1c2luZyB0aGUgYnVmZmVyLgorCSAq LworCV9fdTMyIHRhcmdldF9oYW5kbGU7CisKKwkvKioKKwkgKiBWYWx1ZSB0byBiZSBhZGRlZCB0 byB0aGUgb2Zmc2V0IG9mIHRoZSB0YXJnZXQgYnVmZmVyIHRvIG1ha2UgdXAKKwkgKiB0aGUgcmVs b2NhdGlvbiBlbnRyeS4KKwkgKi8KKwlfX3UzMiBkZWx0YTsKKworCS8qKiBPZmZzZXQgaW4gdGhl IGJ1ZmZlciB0aGUgcmVsb2NhdGlvbiBlbnRyeSB3aWxsIGJlIHdyaXR0ZW4gaW50byAqLworCV9f dTY0IG9mZnNldDsKKworCS8qKgorCSAqIE9mZnNldCB2YWx1ZSBvZiB0aGUgdGFyZ2V0IGJ1ZmZl ciB0aGF0IHRoZSByZWxvY2F0aW9uIGVudHJ5IHdhcyBsYXN0CisJICogd3JpdHRlbiBhcy4KKwkg KgorCSAqIElmIHRoZSBidWZmZXIgaGFzIHRoZSBzYW1lIG9mZnNldCBhcyBsYXN0IHRpbWUsIHdl IGNhbiBza2lwIHN5bmNpbmcKKwkgKiBhbmQgd3JpdGluZyB0aGUgcmVsb2NhdGlvbi4gIFRoaXMg dmFsdWUgaXMgd3JpdHRlbiBiYWNrIG91dCBieQorCSAqIHRoZSBleGVjYnVmZmVyIGlvY3RsIHdo ZW4gdGhlIHJlbG9jYXRpb24gaXMgd3JpdHRlbi4KKwkgKi8KKwlfX3U2NCBwcmVzdW1lZF9vZmZz ZXQ7CisKKwkvKioKKwkgKiBUYXJnZXQgbWVtb3J5IGRvbWFpbnMgcmVhZCBieSB0aGlzIG9wZXJh dGlvbi4KKwkgKi8KKwlfX3UzMiByZWFkX2RvbWFpbnM7CisKKwkvKioKKwkgKiBUYXJnZXQgbWVt b3J5IGRvbWFpbnMgd3JpdHRlbiBieSB0aGlzIG9wZXJhdGlvbi4KKwkgKgorCSAqIE5vdGUgdGhh dCBvbmx5IG9uZSBkb21haW4gbWF5IGJlIHdyaXR0ZW4gYnkgdGhlIHdob2xlCisJICogZXhlY2J1 ZmZlciBvcGVyYXRpb24sIHNvIHRoYXQgd2hlcmUgdGhlcmUgYXJlIGNvbmZsaWN0cywKKwkgKiB0 aGUgYXBwbGljYXRpb24gd2lsbCBnZXQgLUVJTlZBTCBiYWNrLgorCSAqLworCV9fdTMyIHdyaXRl X2RvbWFpbjsKK307CisKKy8qKiBAeworICogSW50ZWwgbWVtb3J5IGRvbWFpbnMKKyAqCisgKiBN b3N0IG9mIHRoZXNlIGp1c3QgYWxpZ24gd2l0aCB0aGUgdmFyaW91cyBjYWNoZXMgaW4KKyAqIHRo ZSBzeXN0ZW0gYW5kIGFyZSB1c2VkIHRvIGZsdXNoIGFuZCBpbnZhbGlkYXRlIGFzCisgKiBvYmpl Y3RzIGVuZCB1cCBjYWNoZWQgaW4gZGlmZmVyZW50IGRvbWFpbnMuCisgKi8KKy8qKiBDUFUgY2Fj aGUgKi8KKyNkZWZpbmUgSTkxNV9HRU1fRE9NQUlOX0NQVQkJMHgwMDAwMDAwMQorLyoqIFJlbmRl ciBjYWNoZSwgdXNlZCBieSAyRCBhbmQgM0QgZHJhd2luZyAqLworI2RlZmluZSBJOTE1X0dFTV9E T01BSU5fUkVOREVSCQkweDAwMDAwMDAyCisvKiogU2FtcGxlciBjYWNoZSwgdXNlZCBieSB0ZXh0 dXJlIGVuZ2luZSAqLworI2RlZmluZSBJOTE1X0dFTV9ET01BSU5fU0FNUExFUgkJMHgwMDAwMDAw NAorLyoqIENvbW1hbmQgcXVldWUsIHVzZWQgdG8gbG9hZCBiYXRjaCBidWZmZXJzICovCisjZGVm aW5lIEk5MTVfR0VNX0RPTUFJTl9DT01NQU5ECQkweDAwMDAwMDA4CisvKiogSW5zdHJ1Y3Rpb24g Y2FjaGUsIHVzZWQgYnkgc2hhZGVyIHByb2dyYW1zICovCisjZGVmaW5lIEk5MTVfR0VNX0RPTUFJ Tl9JTlNUUlVDVElPTgkweDAwMDAwMDEwCisvKiogVmVydGV4IGFkZHJlc3MgY2FjaGUgKi8KKyNk ZWZpbmUgSTkxNV9HRU1fRE9NQUlOX1ZFUlRFWAkJMHgwMDAwMDAyMAorLyoqIEdUVCBkb21haW4g LSBhcGVydHVyZSBhbmQgc2Nhbm91dCAqLworI2RlZmluZSBJOTE1X0dFTV9ET01BSU5fR1RUCQkw eDAwMDAwMDQwCisvKiogV0MgZG9tYWluIC0gdW5jYWNoZWQgYWNjZXNzICovCisjZGVmaW5lIEk5 MTVfR0VNX0RPTUFJTl9XQwkJMHgwMDAwMDA4MAorLyoqIEB9ICovCisKK3N0cnVjdCBkcm1faTkx NV9nZW1fZXhlY19vYmplY3QgeworCS8qKgorCSAqIFVzZXIncyBoYW5kbGUgZm9yIGEgYnVmZmVy IHRvIGJlIGJvdW5kIGludG8gdGhlIEdUVCBmb3IgdGhpcworCSAqIG9wZXJhdGlvbi4KKwkgKi8K KwlfX3UzMiBoYW5kbGU7CisKKwkvKiogTnVtYmVyIG9mIHJlbG9jYXRpb25zIHRvIGJlIHBlcmZv cm1lZCBvbiB0aGlzIGJ1ZmZlciAqLworCV9fdTMyIHJlbG9jYXRpb25fY291bnQ7CisJLyoqCisJ ICogUG9pbnRlciB0byBhcnJheSBvZiBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25fZW50 cnkgY29udGFpbmluZworCSAqIHRoZSByZWxvY2F0aW9ucyB0byBiZSBwZXJmb3JtZWQgaW4gdGhp cyBidWZmZXIuCisJICovCisJX191NjQgcmVsb2NzX3B0cjsKKworCS8qKiBSZXF1aXJlZCBhbGln bm1lbnQgaW4gZ3JhcGhpY3MgYXBlcnR1cmUgKi8KKwlfX3U2NCBhbGlnbm1lbnQ7CisKKwkvKioK KwkgKiBSZXR1cm5lZCB2YWx1ZSBvZiB0aGUgdXBkYXRlZCBvZmZzZXQgb2YgdGhlIG9iamVjdCwg Zm9yIGZ1dHVyZQorCSAqIHByZXN1bWVkX29mZnNldCB3cml0ZXMuCisJICovCisJX191NjQgb2Zm c2V0OworfTsKKworc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyIHsKKwkvKioKKwkgKiBM aXN0IG9mIGJ1ZmZlcnMgdG8gYmUgdmFsaWRhdGVkIHdpdGggdGhlaXIgcmVsb2NhdGlvbnMgdG8g YmUKKwkgKiBwZXJmb3JtZW5kIG9uIHRoZW0uCisJICoKKwkgKiBUaGlzIGlzIGEgcG9pbnRlciB0 byBhbiBhcnJheSBvZiBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3ZhbGlkYXRlX2VudHJ5LgorCSAqCisJ ICogVGhlc2UgYnVmZmVycyBtdXN0IGJlIGxpc3RlZCBpbiBhbiBvcmRlciBzdWNoIHRoYXQgYWxs IHJlbG9jYXRpb25zCisJICogYSBidWZmZXIgaXMgcGVyZm9ybWluZyByZWZlciB0byBidWZmZXJz IHRoYXQgaGF2ZSBhbHJlYWR5IGFwcGVhcmVkCisJICogaW4gdGhlIHZhbGlkYXRlIGxpc3QuCisJ ICovCisJX191NjQgYnVmZmVyc19wdHI7CisJX191MzIgYnVmZmVyX2NvdW50OworCisJLyoqIE9m ZnNldCBpbiB0aGUgYmF0Y2hidWZmZXIgdG8gc3RhcnQgZXhlY3V0aW9uIGZyb20uICovCisJX191 MzIgYmF0Y2hfc3RhcnRfb2Zmc2V0OworCS8qKiBCeXRlcyB1c2VkIGluIGJhdGNoYnVmZmVyIGZy b20gYmF0Y2hfc3RhcnRfb2Zmc2V0ICovCisJX191MzIgYmF0Y2hfbGVuOworCV9fdTMyIERSMTsK KwlfX3UzMiBEUjQ7CisJX191MzIgbnVtX2NsaXByZWN0czsKKwkvKiogVGhpcyBpcyBhIHN0cnVj dCBkcm1fY2xpcF9yZWN0ICpjbGlwcmVjdHMgKi8KKwlfX3U2NCBjbGlwcmVjdHNfcHRyOworfTsK Kworc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgeworCS8qKgorCSAqIFVzZXIncyBo YW5kbGUgZm9yIGEgYnVmZmVyIHRvIGJlIGJvdW5kIGludG8gdGhlIEdUVCBmb3IgdGhpcworCSAq IG9wZXJhdGlvbi4KKwkgKi8KKwlfX3UzMiBoYW5kbGU7CisKKwkvKiogTnVtYmVyIG9mIHJlbG9j YXRpb25zIHRvIGJlIHBlcmZvcm1lZCBvbiB0aGlzIGJ1ZmZlciAqLworCV9fdTMyIHJlbG9jYXRp b25fY291bnQ7CisJLyoqCisJICogUG9pbnRlciB0byBhcnJheSBvZiBzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlbG9jYXRpb25fZW50cnkgY29udGFpbmluZworCSAqIHRoZSByZWxvY2F0aW9ucyB0byBi ZSBwZXJmb3JtZWQgaW4gdGhpcyBidWZmZXIuCisJICovCisJX191NjQgcmVsb2NzX3B0cjsKKwor CS8qKiBSZXF1aXJlZCBhbGlnbm1lbnQgaW4gZ3JhcGhpY3MgYXBlcnR1cmUgKi8KKwlfX3U2NCBh bGlnbm1lbnQ7CisKKwkvKioKKwkgKiBXaGVuIHRoZSBFWEVDX09CSkVDVF9QSU5ORUQgZmxhZyBp cyBzcGVjaWZpZWQgdGhpcyBpcyBwb3B1bGF0ZWQgYnkKKwkgKiB0aGUgdXNlciB3aXRoIHRoZSBH VFQgb2Zmc2V0IGF0IHdoaWNoIHRoaXMgb2JqZWN0IHdpbGwgYmUgcGlubmVkLgorCSAqIFdoZW4g dGhlIEk5MTVfRVhFQ19OT19SRUxPQyBmbGFnIGlzIHNwZWNpZmllZCB0aGlzIG11c3QgY29udGFp biB0aGUKKwkgKiBwcmVzdW1lZF9vZmZzZXQgb2YgdGhlIG9iamVjdC4KKwkgKiBEdXJpbmcgZXhl Y2J1ZmZlcjIgdGhlIGtlcm5lbCBwb3B1bGF0ZXMgaXQgd2l0aCB0aGUgdmFsdWUgb2YgdGhlCisJ ICogY3VycmVudCBHVFQgb2Zmc2V0IG9mIHRoZSBvYmplY3QsIGZvciBmdXR1cmUgcHJlc3VtZWRf b2Zmc2V0IHdyaXRlcy4KKwkgKi8KKwlfX3U2NCBvZmZzZXQ7CisKKyNkZWZpbmUgRVhFQ19PQkpF Q1RfTkVFRFNfRkVOQ0UJCSAoMTw8MCkKKyNkZWZpbmUgRVhFQ19PQkpFQ1RfTkVFRFNfR1RUCQkg KDE8PDEpCisjZGVmaW5lIEVYRUNfT0JKRUNUX1dSSVRFCQkgKDE8PDIpCisjZGVmaW5lIEVYRUNf T0JKRUNUX1NVUFBPUlRTXzQ4Ql9BRERSRVNTICgxPDwzKQorI2RlZmluZSBFWEVDX09CSkVDVF9Q SU5ORUQJCSAoMTw8NCkKKyNkZWZpbmUgRVhFQ19PQkpFQ1RfUEFEX1RPX1NJWkUJCSAoMTw8NSkK Ky8qIFRoZSBrZXJuZWwgaW1wbGljaXRseSB0cmFja3MgR1BVIGFjdGl2aXR5IG9uIGFsbCBHRU0g b2JqZWN0cywgYW5kCisgKiBzeW5jaHJvbmlzZXMgb3BlcmF0aW9ucyB3aXRoIG91dHN0YW5kaW5n IHJlbmRlcmluZy4gVGhpcyBpbmNsdWRlcworICogcmVuZGVyaW5nIG9uIG90aGVyIGRldmljZXMg aWYgZXhwb3J0ZWQgdmlhIGRtYS1idWYuIEhvd2V2ZXIsIHNvbWV0aW1lcworICogdGhpcyB0cmFj a2luZyBpcyB0b28gY29hcnNlIGFuZCB0aGUgdXNlciBrbm93cyBiZXR0ZXIuIEZvciBleGFtcGxl LAorICogaWYgdGhlIG9iamVjdCBpcyBzcGxpdCBpbnRvIG5vbi1vdmVybGFwcGluZyByYW5nZXMg c2hhcmVkIGJldHdlZW4gZGlmZmVyZW50CisgKiBjbGllbnRzIG9yIGVuZ2luZXMgKGkuZS4gc3Vi YWxsb2NhdGluZyBvYmplY3RzKSwgdGhlIGltcGxpY2l0IHRyYWNraW5nCisgKiBieSBrZXJuZWwg YXNzdW1lcyB0aGF0IGVhY2ggb3BlcmF0aW9uIGFmZmVjdHMgdGhlIHdob2xlIG9iamVjdCByYXRo ZXIKKyAqIHRoYW4gYW4gaW5kaXZpZHVhbCByYW5nZSwgY2F1c2luZyBuZWVkbGVzcyBzeW5jaHJv bmlzYXRpb24gYmV0d2VlbiBjbGllbnRzLgorICogVGhlIGtlcm5lbCB3aWxsIGFsc28gZm9yZ28g YW55IENQVSBjYWNoZSBmbHVzaGVzIHByaW9yIHRvIHJlbmRlcmluZyBmcm9tCisgKiB0aGUgb2Jq ZWN0IGFzIHRoZSBjbGllbnQgaXMgZXhwZWN0ZWQgdG8gYmUgYWxzbyBoYW5kbGluZyBzdWNoIGRv bWFpbgorICogdHJhY2tpbmcuCisgKgorICogVGhlIGtlcm5lbCBtYWludGFpbnMgdGhlIGltcGxp Y2l0IHRyYWNraW5nIGluIG9yZGVyIHRvIG1hbmFnZSByZXNvdXJjZXMKKyAqIHVzZWQgYnkgdGhl IEdQVSAtIHRoaXMgZmxhZyBvbmx5IGRpc2FibGVzIHRoZSBzeW5jaHJvbmlzYXRpb24gcHJpb3Ig dG8KKyAqIHJlbmRlcmluZyB3aXRoIHRoaXMgb2JqZWN0IGluIHRoaXMgZXhlY2J1Zi4KKyAqCisg KiBPcHRpbmcgb3V0IG9mIGltcGxpY2l0IHN5bmhyb25pc2F0aW9uIHJlcXVpcmVzIHRoZSB1c2Vy IHRvIGRvIGl0cyBvd24KKyAqIGV4cGxpY2l0IHRyYWNraW5nIHRvIGF2b2lkIHJlbmRlcmluZyBj b3JydXB0aW9uLiBTZWUsIGZvciBleGFtcGxlLAorICogSTkxNV9QQVJBTV9IQVNfRVhFQ19GRU5D RSB0byBvcmRlciBleGVjYnVmcyBhbmQgZXhlY3V0ZSB0aGVtIGFzeW5jaHJvbm91c2x5LgorICov CisjZGVmaW5lIEVYRUNfT0JKRUNUX0FTWU5DCQkoMTw8NikKKy8qIFJlcXVlc3QgdGhhdCB0aGUg Y29udGVudHMgb2YgdGhpcyBleGVjb2JqZWN0IGJlIGNvcGllZCBpbnRvIHRoZSBlcnJvcgorICog c3RhdGUgdXBvbiBhIEdQVSBoYW5nIGludm9sdmluZyB0aGlzIGJhdGNoIGZvciBwb3N0LW1vcnRl bSBkZWJ1Z2dpbmcuCisgKiBUaGVzZSBidWZmZXJzIGFyZSByZWNvcmRlZCBpbiBubyBwYXJ0aWN1 bGFyIG9yZGVyIGFzICJ1c2VyIiBpbgorICogL3N5cy9jbGFzcy9kcm0vY2FyZE4vZXJyb3IuIFF1 ZXJ5IEk5MTVfUEFSQU1fSEFTX0VYRUNfQ0FQVFVSRSB0byBzZWUKKyAqIGlmIHRoZSBrZXJuZWwg c3VwcG9ydHMgdGhpcyBmbGFnLgorICovCisjZGVmaW5lIEVYRUNfT0JKRUNUX0NBUFRVUkUJCSgx PDw3KQorLyogQWxsIHJlbWFpbmluZyBiaXRzIGFyZSBNQlogYW5kIFJFU0VSVkVEIEZPUiBGVVRV UkUgVVNFICovCisjZGVmaW5lIF9fRVhFQ19PQkpFQ1RfVU5LTk9XTl9GTEFHUyAtKEVYRUNfT0JK RUNUX0NBUFRVUkU8PDEpCisJX191NjQgZmxhZ3M7CisKKwl1bmlvbiB7CisJCV9fdTY0IHJzdmQx OworCQlfX3U2NCBwYWRfdG9fc2l6ZTsKKwl9OworCV9fdTY0IHJzdmQyOworfTsKKworc3RydWN0 IGRybV9pOTE1X2dlbV9leGVjX2ZlbmNlIHsKKwkvKioKKwkgKiBVc2VyJ3MgaGFuZGxlIGZvciBh IGRybV9zeW5jb2JqIHRvIHdhaXQgb24gb3Igc2lnbmFsLgorCSAqLworCV9fdTMyIGhhbmRsZTsK KworI2RlZmluZSBJOTE1X0VYRUNfRkVOQ0VfV0FJVCAgICAgICAgICAgICgxPDwwKQorI2RlZmlu ZSBJOTE1X0VYRUNfRkVOQ0VfU0lHTkFMICAgICAgICAgICgxPDwxKQorCV9fdTMyIGZsYWdzOwor fTsKKworc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiB7CisJLyoqCisJICogTGlzdCBv ZiBnZW1fZXhlY19vYmplY3QyIHN0cnVjdHMKKwkgKi8KKwlfX3U2NCBidWZmZXJzX3B0cjsKKwlf X3UzMiBidWZmZXJfY291bnQ7CisKKwkvKiogT2Zmc2V0IGluIHRoZSBiYXRjaGJ1ZmZlciB0byBz dGFydCBleGVjdXRpb24gZnJvbS4gKi8KKwlfX3UzMiBiYXRjaF9zdGFydF9vZmZzZXQ7CisJLyoq IEJ5dGVzIHVzZWQgaW4gYmF0Y2hidWZmZXIgZnJvbSBiYXRjaF9zdGFydF9vZmZzZXQgKi8KKwlf X3UzMiBiYXRjaF9sZW47CisJX191MzIgRFIxOworCV9fdTMyIERSNDsKKwlfX3UzMiBudW1fY2xp cHJlY3RzOworCS8qKgorCSAqIFRoaXMgaXMgYSBzdHJ1Y3QgZHJtX2NsaXBfcmVjdCAqY2xpcHJl Y3RzIGlmIEk5MTVfRVhFQ19GRU5DRV9BUlJBWQorCSAqIGlzIG5vdCBzZXQuICBJZiBJOTE1X0VY RUNfRkVOQ0VfQVJSQVkgaXMgc2V0LCB0aGVuIHRoaXMgaXMgYQorCSAqIHN0cnVjdCBkcm1faTkx NV9nZW1fZXhlY19mZW5jZSAqZmVuY2VzLgorCSAqLworCV9fdTY0IGNsaXByZWN0c19wdHI7Cisj ZGVmaW5lIEk5MTVfRVhFQ19SSU5HX01BU0sgICAgICAgICAgICAgICg3PDwwKQorI2RlZmluZSBJ OTE1X0VYRUNfREVGQVVMVCAgICAgICAgICAgICAgICAoMDw8MCkKKyNkZWZpbmUgSTkxNV9FWEVD X1JFTkRFUiAgICAgICAgICAgICAgICAgKDE8PDApCisjZGVmaW5lIEk5MTVfRVhFQ19CU0QgICAg ICAgICAgICAgICAgICAgICgyPDwwKQorI2RlZmluZSBJOTE1X0VYRUNfQkxUICAgICAgICAgICAg ICAgICAgICAoMzw8MCkKKyNkZWZpbmUgSTkxNV9FWEVDX1ZFQk9YICAgICAgICAgICAgICAgICAg KDQ8PDApCisKKy8qIFVzZWQgZm9yIHN3aXRjaGluZyB0aGUgY29uc3RhbnRzIGFkZHJlc3Npbmcg bW9kZSBvbiBnZW40KyBSRU5ERVIgcmluZy4KKyAqIEdlbjYrIG9ubHkgc3VwcG9ydHMgcmVsYXRp dmUgYWRkcmVzc2luZyB0byBkeW5hbWljIHN0YXRlIChkZWZhdWx0KSBhbmQKKyAqIGFic29sdXRl IGFkZHJlc3NpbmcuCisgKgorICogVGhlc2UgZmxhZ3MgYXJlIGlnbm9yZWQgZm9yIHRoZSBCU0Qg YW5kIEJMVCByaW5ncy4KKyAqLworI2RlZmluZSBJOTE1X0VYRUNfQ09OU1RBTlRTX01BU0sgCSgz PDw2KQorI2RlZmluZSBJOTE1X0VYRUNfQ09OU1RBTlRTX1JFTF9HRU5FUkFMICgwPDw2KSAvKiBk ZWZhdWx0ICovCisjZGVmaW5lIEk5MTVfRVhFQ19DT05TVEFOVFNfQUJTT0xVVEUgCSgxPDw2KQor I2RlZmluZSBJOTE1X0VYRUNfQ09OU1RBTlRTX1JFTF9TVVJGQUNFICgyPDw2KSAvKiBnZW40LzUg b25seSAqLworCV9fdTY0IGZsYWdzOworCV9fdTY0IHJzdmQxOyAvKiBub3cgdXNlZCBmb3IgY29u dGV4dCBpbmZvICovCisJX191NjQgcnN2ZDI7Cit9OworCisvKiogUmVzZXRzIHRoZSBTTyB3cml0 ZSBvZmZzZXQgcmVnaXN0ZXJzIGZvciB0cmFuc2Zvcm0gZmVlZGJhY2sgb24gZ2VuNy4gKi8KKyNk ZWZpbmUgSTkxNV9FWEVDX0dFTjdfU09MX1JFU0VUCSgxPDw4KQorCisvKiogUmVxdWVzdCBhIHBy aXZpbGVnZWQgKCJzZWN1cmUiKSBiYXRjaCBidWZmZXIuIE5vdGUgb25seSBhdmFpbGFibGUgZm9y CisgKiBEUk1fUk9PVF9PTkxZIHwgRFJNX01BU1RFUiBwcm9jZXNzZXMuCisgKi8KKyNkZWZpbmUg STkxNV9FWEVDX1NFQ1VSRQkJKDE8PDkpCisKKy8qKiBJbmZvcm0gdGhlIGtlcm5lbCB0aGF0IHRo ZSBiYXRjaCBpcyBhbmQgd2lsbCBhbHdheXMgYmUgcGlubmVkLiBUaGlzCisgKiBuZWdhdGVzIHRo ZSByZXF1aXJlbWVudCBmb3IgYSB3b3JrYXJvdW5kIHRvIGJlIHBlcmZvcm1lZCB0byBhdm9pZAor ICogYW4gaW5jb2hlcmVudCBDUyAoc3VjaCBhcyBjYW4gYmUgZm91bmQgb24gODMwLzg0NSkuIElm IHRoaXMgZmxhZyBpcworICogbm90IHBhc3NlZCwgdGhlIGtlcm5lbCB3aWxsIGVuZGVhdm91ciB0 byBtYWtlIHN1cmUgdGhlIGJhdGNoIGlzCisgKiBjb2hlcmVudCB3aXRoIHRoZSBDUyBiZWZvcmUg ZXhlY3V0aW9uLiBJZiB0aGlzIGZsYWcgaXMgcGFzc2VkLAorICogdXNlcnNwYWNlIGFzc3VtZXMg dGhlIHJlc3BvbnNpYmlsaXR5IGZvciBlbnN1cmluZyB0aGUgc2FtZS4KKyAqLworI2RlZmluZSBJ OTE1X0VYRUNfSVNfUElOTkVECQkoMTw8MTApCisKKy8qKiBQcm92aWRlIGEgaGludCB0byB0aGUg a2VybmVsIHRoYXQgdGhlIGNvbW1hbmQgc3RyZWFtIGFuZCBhdXhpbGlhcnkKKyAqIHN0YXRlIGJ1 ZmZlcnMgYWxyZWFkeSBob2xkcyB0aGUgY29ycmVjdCBwcmVzdW1lZCBhZGRyZXNzZXMgYW5kIHNv IHRoZQorICogcmVsb2NhdGlvbiBwcm9jZXNzIG1heSBiZSBza2lwcGVkIGlmIG5vIGJ1ZmZlcnMg bmVlZCB0byBiZSBtb3ZlZCBpbgorICogcHJlcGFyYXRpb24gZm9yIHRoZSBleGVjYnVmZmVyLgor ICovCisjZGVmaW5lIEk5MTVfRVhFQ19OT19SRUxPQwkJKDE8PDExKQorCisvKiogVXNlIHRoZSBy ZWxvYy5oYW5kbGUgYXMgYW4gaW5kZXggaW50byB0aGUgZXhlYyBvYmplY3QgYXJyYXkgcmF0aGVy CisgKiB0aGFuIGFzIHRoZSBwZXItZmlsZSBoYW5kbGUuCisgKi8KKyNkZWZpbmUgSTkxNV9FWEVD X0hBTkRMRV9MVVQJCSgxPDwxMikKKworLyoqIFVzZWQgZm9yIHN3aXRjaGluZyBCU0QgcmluZ3Mg b24gdGhlIHBsYXRmb3JtcyB3aXRoIHR3byBCU0QgcmluZ3MgKi8KKyNkZWZpbmUgSTkxNV9FWEVD X0JTRF9TSElGVAkgKDEzKQorI2RlZmluZSBJOTE1X0VYRUNfQlNEX01BU0sJICgzIDw8IEk5MTVf RVhFQ19CU0RfU0hJRlQpCisvKiBkZWZhdWx0IHBpbmctcG9uZyBtb2RlICovCisjZGVmaW5lIEk5 MTVfRVhFQ19CU0RfREVGQVVMVAkgKDAgPDwgSTkxNV9FWEVDX0JTRF9TSElGVCkKKyNkZWZpbmUg STkxNV9FWEVDX0JTRF9SSU5HMQkgKDEgPDwgSTkxNV9FWEVDX0JTRF9TSElGVCkKKyNkZWZpbmUg STkxNV9FWEVDX0JTRF9SSU5HMgkgKDIgPDwgSTkxNV9FWEVDX0JTRF9TSElGVCkKKworLyoqIFRl bGwgdGhlIGtlcm5lbCB0aGF0IHRoZSBiYXRjaGJ1ZmZlciBpcyBwcm9jZXNzZWQgYnkKKyAqICB0 aGUgcmVzb3VyY2Ugc3RyZWFtZXIuCisgKi8KKyNkZWZpbmUgSTkxNV9FWEVDX1JFU09VUkNFX1NU UkVBTUVSICAgICAoMTw8MTUpCisKKy8qIFNldHRpbmcgSTkxNV9FWEVDX0ZFTkNFX0lOIGltcGxp ZXMgdGhhdCBsb3dlcl8zMl9iaXRzKHJzdmQyKSByZXByZXNlbnQKKyAqIGEgc3luY19maWxlIGZk IHRvIHdhaXQgdXBvbiAoaW4gYSBub25ibG9ja2luZyBtYW5uZXIpIHByaW9yIHRvIGV4ZWN1dGlu ZworICogdGhlIGJhdGNoLgorICoKKyAqIFJldHVybnMgLUVJTlZBTCBpZiB0aGUgc3luY19maWxl IGZkIGNhbm5vdCBiZSBmb3VuZC4KKyAqLworI2RlZmluZSBJOTE1X0VYRUNfRkVOQ0VfSU4JCSgx PDwxNikKKworLyogU2V0dGluZyBJOTE1X0VYRUNfRkVOQ0VfT1VUIGNhdXNlcyB0aGUgaW9jdGwg dG8gcmV0dXJuIGEgc3luY19maWxlIGZkCisgKiBpbiB0aGUgdXBwZXJfMzJfYml0cyhyc3ZkMikg dXBvbiBzdWNjZXNzLiBPd25lcnNoaXAgb2YgdGhlIGZkIGlzIGdpdmVuCisgKiB0byB0aGUgY2Fs bGVyLCBhbmQgaXQgc2hvdWxkIGJlIGNsb3NlKCkgYWZ0ZXIgdXNlLiAoVGhlIGZkIGlzIGEgcmVn dWxhcgorICogZmlsZSBkZXNjcmlwdG9yIGFuZCB3aWxsIGJlIGNsZWFuZWQgdXAgb24gcHJvY2Vz cyB0ZXJtaW5hdGlvbi4gSXQgaG9sZHMKKyAqIGEgcmVmZXJlbmNlIHRvIHRoZSByZXF1ZXN0LCBi dXQgbm90aGluZyBlbHNlLikKKyAqCisgKiBUaGUgc3luY19maWxlIGZkIGNhbiBiZSBjb21iaW5l ZCB3aXRoIG90aGVyIHN5bmNfZmlsZSBhbmQgcGFzc2VkIGVpdGhlcgorICogdG8gZXhlY2J1ZiB1 c2luZyBJOTE1X0VYRUNfRkVOQ0VfSU4sIHRvIGF0b21pYyBLTVMgaW9jdGxzIChzbyB0aGF0IGEg ZmxpcAorICogd2lsbCBvbmx5IG9jY3VyIGFmdGVyIHRoaXMgcmVxdWVzdCBjb21wbGV0ZXMpLCBv ciB0byBvdGhlciBkZXZpY2VzLgorICoKKyAqIFVzaW5nIEk5MTVfRVhFQ19GRU5DRV9PVVQgcmVx dWlyZXMgdXNlIG9mCisgKiBEUk1fSU9DVExfSTkxNV9HRU1fRVhFQ0JVRkZFUjJfV1IgaW9jdGwg c28gdGhhdCB0aGUgcmVzdWx0IGlzIHdyaXR0ZW4KKyAqIGJhY2sgdG8gdXNlcnNwYWNlLiBGYWls dXJlIHRvIGRvIHNvIHdpbGwgY2F1c2UgdGhlIG91dC1mZW5jZSB0byBhbHdheXMKKyAqIGJlIHJl cG9ydGVkIGFzIHplcm8sIGFuZCB0aGUgcmVhbCBmZW5jZSBmZCB0byBiZSBsZWFrZWQuCisgKi8K KyNkZWZpbmUgSTkxNV9FWEVDX0ZFTkNFX09VVAkJKDE8PDE3KQorCisvKgorICogVHJhZGl0aW9u YWxseSB0aGUgZXhlY2J1ZiBpb2N0bCBoYXMgb25seSBjb25zaWRlcmVkIHRoZSBmaW5hbCBlbGVt ZW50IGluCisgKiB0aGUgZXhlY29iamVjdFtdIHRvIGJlIHRoZSBleGVjdXRhYmxlIGJhdGNoLiBP ZnRlbiB0aG91Z2gsIHRoZSBjbGllbnQKKyAqIHdpbGwga25vd24gdGhlIGJhdGNoIG9iamVjdCBw cmlvciB0byBjb25zdHJ1Y3Rpb24gYW5kIGJlaW5nIGFibGUgdG8gcGxhY2UKKyAqIGl0IGludG8g dGhlIGV4ZWNvYmplY3RbXSBhcnJheSBmaXJzdCBjYW4gc2ltcGxpZnkgdGhlIHJlbG9jYXRpb24g dHJhY2tpbmcuCisgKiBTZXR0aW5nIEk5MTVfRVhFQ19CQVRDSF9GSVJTVCB0ZWxscyBleGVjYnVm IHRvIHVzZSBlbGVtZW50IDAgb2YgdGhlCisgKiBleGVjb2JqZWN0W10gYXMgdGhlICogYmF0Y2gg aW5zdGVhZCAodGhlIGRlZmF1bHQgaXMgdG8gdXNlIHRoZSBsYXN0CisgKiBlbGVtZW50KS4KKyAq LworI2RlZmluZSBJOTE1X0VYRUNfQkFUQ0hfRklSU1QJCSgxPDwxOCkKKworLyogU2V0dGluZyBJ OTE1X0ZFTkNFX0FSUkFZIGltcGxpZXMgdGhhdCBudW1fY2xpcHJlY3RzIGFuZCBjbGlwcmVjdHNf cHRyCisgKiBkZWZpbmUgYW4gYXJyYXkgb2YgaTkxNV9nZW1fZXhlY19mZW5jZSBzdHJ1Y3R1cmVz IHdoaWNoIHNwZWNpZnkgYSBzZXQgb2YKKyAqIGRtYSBmZW5jZXMgdG8gd2FpdCB1cG9uIG9yIHNp Z25hbC4KKyAqLworI2RlZmluZSBJOTE1X0VYRUNfRkVOQ0VfQVJSQVkgICAoMTw8MTkpCisKKyNk ZWZpbmUgX19JOTE1X0VYRUNfVU5LTk9XTl9GTEFHUyAoLShJOTE1X0VYRUNfRkVOQ0VfQVJSQVk8 PDEpKQorCisjZGVmaW5lIEk5MTVfRVhFQ19DT05URVhUX0lEX01BU0sJKDB4ZmZmZmZmZmYpCisj ZGVmaW5lIGk5MTVfZXhlY2J1ZmZlcjJfc2V0X2NvbnRleHRfaWQoZWIyLCBjb250ZXh0KSBcCisJ KGViMikucnN2ZDEgPSBjb250ZXh0ICYgSTkxNV9FWEVDX0NPTlRFWFRfSURfTUFTSworI2RlZmlu ZSBpOTE1X2V4ZWNidWZmZXIyX2dldF9jb250ZXh0X2lkKGViMikgXAorCSgoZWIyKS5yc3ZkMSAm IEk5MTVfRVhFQ19DT05URVhUX0lEX01BU0spCisKK3N0cnVjdCBkcm1faTkxNV9nZW1fcGluIHsK KwkvKiogSGFuZGxlIG9mIHRoZSBidWZmZXIgdG8gYmUgcGlubmVkLiAqLworCV9fdTMyIGhhbmRs ZTsKKwlfX3UzMiBwYWQ7CisKKwkvKiogYWxpZ25tZW50IHJlcXVpcmVkIHdpdGhpbiB0aGUgYXBl cnR1cmUgKi8KKwlfX3U2NCBhbGlnbm1lbnQ7CisKKwkvKiogUmV0dXJuZWQgR1RUIG9mZnNldCBv ZiB0aGUgYnVmZmVyLiAqLworCV9fdTY0IG9mZnNldDsKK307CisKK3N0cnVjdCBkcm1faTkxNV9n ZW1fdW5waW4geworCS8qKiBIYW5kbGUgb2YgdGhlIGJ1ZmZlciB0byBiZSB1bnBpbm5lZC4gKi8K KwlfX3UzMiBoYW5kbGU7CisJX191MzIgcGFkOworfTsKKworc3RydWN0IGRybV9pOTE1X2dlbV9i dXN5IHsKKwkvKiogSGFuZGxlIG9mIHRoZSBidWZmZXIgdG8gY2hlY2sgZm9yIGJ1c3kgKi8KKwlf X3UzMiBoYW5kbGU7CisKKwkvKiogUmV0dXJuIGJ1c3kgc3RhdHVzCisJICoKKwkgKiBBIHJldHVy biBvZiAwIGltcGxpZXMgdGhhdCB0aGUgb2JqZWN0IGlzIGlkbGUgKGFmdGVyCisJICogaGF2aW5n IGZsdXNoZWQgYW55IHBlbmRpbmcgYWN0aXZpdHkpLCBhbmQgYSBub24temVybyByZXR1cm4gdGhh dAorCSAqIHRoZSBvYmplY3QgaXMgc3RpbGwgaW4tZmxpZ2h0IG9uIHRoZSBHUFUuIChUaGUgR1BV IGhhcyBub3QgeWV0CisJICogc2lnbmFsZWQgY29tcGxldGlvbiBmb3IgYWxsIHBlbmRpbmcgcmVx dWVzdHMgdGhhdCByZWZlcmVuY2UgdGhlCisJICogb2JqZWN0LikgQW4gb2JqZWN0IGlzIGd1YXJh bnRlZWQgdG8gYmVjb21lIGlkbGUgZXZlbnR1YWxseSAoc28KKwkgKiBsb25nIGFzIG5vIG5ldyBH UFUgY29tbWFuZHMgYXJlIGV4ZWN1dGVkIHVwb24gaXQpLiBEdWUgdG8gdGhlCisJICogYXN5bmNo cm9ub3VzIG5hdHVyZSBvZiB0aGUgaGFyZHdhcmUsIGFuIG9iamVjdCByZXBvcnRlZAorCSAqIGFz IGJ1c3kgbWF5IGJlY29tZSBpZGxlIGJlZm9yZSB0aGUgaW9jdGwgaXMgY29tcGxldGVkLgorCSAq CisJICogRnVydGhlcm1vcmUsIGlmIHRoZSBvYmplY3QgaXMgYnVzeSwgd2hpY2ggZW5naW5lIGlz IGJ1c3kgaXMgb25seQorCSAqIHByb3ZpZGVkIGFzIGEgZ3VpZGUuIFRoZXJlIGFyZSByYWNlIGNv bmRpdGlvbnMgd2hpY2ggcHJldmVudCB0aGUKKwkgKiByZXBvcnQgb2Ygd2hpY2ggZW5naW5lcyBh cmUgYnVzeSBmcm9tIGJlaW5nIGFsd2F5cyBhY2N1cmF0ZS4KKwkgKiBIb3dldmVyLCB0aGUgY29u dmVyc2UgaXMgbm90IHRydWUuIElmIHRoZSBvYmplY3QgaXMgaWRsZSwgdGhlCisJICogcmVzdWx0 IG9mIHRoZSBpb2N0bCwgdGhhdCBhbGwgZW5naW5lcyBhcmUgaWRsZSwgaXMgYWNjdXJhdGUuCisJ ICoKKwkgKiBUaGUgcmV0dXJuZWQgZHdvcmQgaXMgc3BsaXQgaW50byB0d28gZmllbGRzIHRvIGlu ZGljYXRlIGJvdGgKKwkgKiB0aGUgZW5naW5lcyBvbiB3aGljaCB0aGUgb2JqZWN0IGlzIGJlaW5n IHJlYWQsIGFuZCB0aGUKKwkgKiBlbmdpbmUgb24gd2hpY2ggaXQgaXMgY3VycmVudGx5IGJlaW5n IHdyaXR0ZW4gKGlmIGFueSkuCisJICoKKwkgKiBUaGUgbG93IHdvcmQgKGJpdHMgMDoxNSkgaW5k aWNhdGUgaWYgdGhlIG9iamVjdCBpcyBiZWluZyB3cml0dGVuCisJICogdG8gYnkgYW55IGVuZ2lu ZSAodGhlcmUgY2FuIG9ubHkgYmUgb25lLCBhcyB0aGUgR0VNIGltcGxpY2l0CisJICogc3luY2hy b25pc2F0aW9uIHJ1bGVzIGZvcmNlIHdyaXRlcyB0byBiZSBzZXJpYWxpc2VkKS4gT25seSB0aGUK KwkgKiBlbmdpbmUgZm9yIHRoZSBsYXN0IHdyaXRlIGlzIHJlcG9ydGVkLgorCSAqCisJICogVGhl IGhpZ2ggd29yZCAoYml0cyAxNjozMSkgYXJlIGEgYml0bWFzayBvZiB3aGljaCBlbmdpbmVzIGFy ZQorCSAqIGN1cnJlbnRseSByZWFkaW5nIGZyb20gdGhlIG9iamVjdC4gTXVsdGlwbGUgZW5naW5l cyBtYXkgYmUKKwkgKiByZWFkaW5nIGZyb20gdGhlIG9iamVjdCBzaW11bHRhbmVvdXNseS4KKwkg KgorCSAqIFRoZSB2YWx1ZSBvZiBlYWNoIGVuZ2luZSBpcyB0aGUgc2FtZSBhcyBzcGVjaWZpZWQg aW4gdGhlCisJICogRVhFQ0JVRkZFUjIgaW9jdGwsIGkuZS4gSTkxNV9FWEVDX1JFTkRFUiwgSTkx NV9FWEVDX0JTRCBldGMuCisJICogTm90ZSBJOTE1X0VYRUNfREVGQVVMVCBpcyBhIHN5bWJvbGlj IHZhbHVlIGFuZCBpcyBtYXBwZWQgdG8KKwkgKiB0aGUgSTkxNV9FWEVDX1JFTkRFUiBlbmdpbmUg Zm9yIGV4ZWN1dGlvbiwgYW5kIHNvIGl0IGlzIG5ldmVyCisJICogcmVwb3J0ZWQgYXMgYWN0aXZl IGl0c2VsZi4gU29tZSBoYXJkd2FyZSBtYXkgaGF2ZSBwYXJhbGxlbAorCSAqIGV4ZWN1dGlvbiBl bmdpbmVzLCBlLmcuIG11bHRpcGxlIG1lZGlhIGVuZ2luZXMsIHdoaWNoIGFyZQorCSAqIG1hcHBl ZCB0byB0aGUgc2FtZSBpZGVudGlmaWVyIGluIHRoZSBFWEVDQlVGRkVSMiBpb2N0bCBhbmQKKwkg KiBzbyBhcmUgbm90IHNlcGFyYXRlbHkgcmVwb3J0ZWQgZm9yIGJ1c3luZXNzLgorCSAqCisJICog Q2F2ZWF0IGVtcHRvcjoKKwkgKiBPbmx5IHRoZSBib29sZWFuIHJlc3VsdCBvZiB0aGlzIHF1ZXJ5 IGlzIHJlbGlhYmxlOyB0aGF0IGlzIHdoZXRoZXIKKwkgKiB0aGUgb2JqZWN0IGlzIGlkbGUgb3Ig YnVzeS4gVGhlIHJlcG9ydCBvZiB3aGljaCBlbmdpbmVzIGFyZSBidXN5CisJICogc2hvdWxkIGJl IG9ubHkgdXNlZCBhcyBhIGhldXJpc3RpYy4KKwkgKi8KKwlfX3UzMiBidXN5OworfTsKKworLyoq CisgKiBJOTE1X0NBQ0hJTkdfTk9ORQorICoKKyAqIEdQVSBhY2Nlc3MgaXMgbm90IGNvaGVyZW50 IHdpdGggY3B1IGNhY2hlcy4gRGVmYXVsdCBmb3IgbWFjaGluZXMgd2l0aG91dCBhbgorICogTExD LgorICovCisjZGVmaW5lIEk5MTVfQ0FDSElOR19OT05FCQkwCisvKioKKyAqIEk5MTVfQ0FDSElO R19DQUNIRUQKKyAqCisgKiBHUFUgYWNjZXNzIGlzIGNvaGVyZW50IHdpdGggY3B1IGNhY2hlcyBh bmQgZnVydGhlcm1vcmUgdGhlIGRhdGEgaXMgY2FjaGVkIGluCisgKiBsYXN0LWxldmVsIGNhY2hl cyBzaGFyZWQgYmV0d2VlbiBjcHUgY29yZXMgYW5kIHRoZSBncHUgR1QuIERlZmF1bHQgb24KKyAq IG1hY2hpbmVzIHdpdGggSEFTX0xMQy4KKyAqLworI2RlZmluZSBJOTE1X0NBQ0hJTkdfQ0FDSEVE CQkxCisvKioKKyAqIEk5MTVfQ0FDSElOR19ESVNQTEFZCisgKgorICogU3BlY2lhbCBHUFUgY2Fj aGluZyBtb2RlIHdoaWNoIGlzIGNvaGVyZW50IHdpdGggdGhlIHNjYW5vdXQgZW5naW5lcy4KKyAq IFRyYW5zcGFyZW50bHkgZmFsbHMgYmFjayB0byBJOTE1X0NBQ0hJTkdfTk9ORSBvbiBwbGF0Zm9y bXMgd2hlcmUgbm8gc3BlY2lhbAorICogY2FjaGUgbW9kZSAobGlrZSB3cml0ZS10aHJvdWdoIG9y IGdmZHQgZmx1c2hpbmcpIGlzIGF2YWlsYWJsZS4gVGhlIGtlcm5lbAorICogYXV0b21hdGljYWxs eSBzZXRzIHRoaXMgbW9kZSB3aGVuIHVzaW5nIGEgYnVmZmVyIGFzIGEgc2Nhbm91dCB0YXJnZXQu CisgKiBVc2Vyc3BhY2UgY2FuIG1hbnVhbGx5IHNldCB0aGlzIG1vZGUgdG8gYXZvaWQgYSBjb3N0 bHkgc3RhbGwgYW5kIGNsZmx1c2ggaW4KKyAqIHRoZSBob3RwYXRoIG9mIGRyYXdpbmcgdGhlIGZp cnN0IGZyYW1lLgorICovCisjZGVmaW5lIEk5MTVfQ0FDSElOR19ESVNQTEFZCQkyCisKK3N0cnVj dCBkcm1faTkxNV9nZW1fY2FjaGluZyB7CisJLyoqCisJICogSGFuZGxlIG9mIHRoZSBidWZmZXIg dG8gc2V0L2dldCB0aGUgY2FjaGluZyBsZXZlbCBvZi4gKi8KKwlfX3UzMiBoYW5kbGU7CisKKwkv KioKKwkgKiBDYWNoZWluZyBsZXZlbCB0byBhcHBseSBvciByZXR1cm4gdmFsdWUKKwkgKgorCSAq IGJpdHMwLTE1IGFyZSBmb3IgZ2VuZXJpYyBjYWNoaW5nIGNvbnRyb2wgKGkuZS4gdGhlIGFib3Zl IGRlZmluZWQKKwkgKiB2YWx1ZXMpLiBiaXRzMTYtMzEgYXJlIHJlc2VydmVkIGZvciBwbGF0Zm9y bS1zcGVjaWZpYyB2YXJpYXRpb25zCisJICogKGUuZy4gbDMkIGNhY2hpbmcgb24gZ2VuNykuICov CisJX191MzIgY2FjaGluZzsKK307CisKKyNkZWZpbmUgSTkxNV9USUxJTkdfTk9ORQkwCisjZGVm aW5lIEk5MTVfVElMSU5HX1gJCTEKKyNkZWZpbmUgSTkxNV9USUxJTkdfWQkJMgorI2RlZmluZSBJ OTE1X1RJTElOR19MQVNUCUk5MTVfVElMSU5HX1kKKworI2RlZmluZSBJOTE1X0JJVF82X1NXSVpa TEVfTk9ORQkJMAorI2RlZmluZSBJOTE1X0JJVF82X1NXSVpaTEVfOQkJMQorI2RlZmluZSBJOTE1 X0JJVF82X1NXSVpaTEVfOV8xMAkJMgorI2RlZmluZSBJOTE1X0JJVF82X1NXSVpaTEVfOV8xMQkJ MworI2RlZmluZSBJOTE1X0JJVF82X1NXSVpaTEVfOV8xMF8xMQk0CisvKiBOb3Qgc2VlbiBieSB1 c2VybGFuZCAqLworI2RlZmluZSBJOTE1X0JJVF82X1NXSVpaTEVfVU5LTk9XTgk1CisvKiBTZWVu IGJ5IHVzZXJsYW5kLiAqLworI2RlZmluZSBJOTE1X0JJVF82X1NXSVpaTEVfOV8xNwkJNgorI2Rl ZmluZSBJOTE1X0JJVF82X1NXSVpaTEVfOV8xMF8xNwk3CisKK3N0cnVjdCBkcm1faTkxNV9nZW1f c2V0X3RpbGluZyB7CisJLyoqIEhhbmRsZSBvZiB0aGUgYnVmZmVyIHRvIGhhdmUgaXRzIHRpbGlu ZyBzdGF0ZSB1cGRhdGVkICovCisJX191MzIgaGFuZGxlOworCisJLyoqCisJICogVGlsaW5nIG1v ZGUgZm9yIHRoZSBvYmplY3QgKEk5MTVfVElMSU5HX05PTkUsIEk5MTVfVElMSU5HX1gsCisJICog STkxNV9USUxJTkdfWSkuCisJICoKKwkgKiBUaGlzIHZhbHVlIGlzIHRvIGJlIHNldCBvbiByZXF1 ZXN0LCBhbmQgd2lsbCBiZSB1cGRhdGVkIGJ5IHRoZQorCSAqIGtlcm5lbCBvbiBzdWNjZXNzZnVs IHJldHVybiB3aXRoIHRoZSBhY3R1YWwgY2hvc2VuIHRpbGluZyBsYXlvdXQuCisJICoKKwkgKiBU aGUgdGlsaW5nIG1vZGUgbWF5IGJlIGRlbW90ZWQgdG8gSTkxNV9USUxJTkdfTk9ORSB3aGVuIHRo ZSBzeXN0ZW0KKwkgKiBoYXMgYml0IDYgc3dpenpsaW5nIHRoYXQgY2FuJ3QgYmUgbWFuYWdlZCBj b3JyZWN0bHkgYnkgR0VNLgorCSAqCisJICogQnVmZmVyIGNvbnRlbnRzIGJlY29tZSB1bmRlZmlu ZWQgd2hlbiBjaGFuZ2luZyB0aWxpbmdfbW9kZS4KKwkgKi8KKwlfX3UzMiB0aWxpbmdfbW9kZTsK KworCS8qKgorCSAqIFN0cmlkZSBpbiBieXRlcyBmb3IgdGhlIG9iamVjdCB3aGVuIGluIEk5MTVf VElMSU5HX1ggb3IKKwkgKiBJOTE1X1RJTElOR19ZLgorCSAqLworCV9fdTMyIHN0cmlkZTsKKwor CS8qKgorCSAqIFJldHVybmVkIGFkZHJlc3MgYml0IDYgc3dpenpsaW5nIHJlcXVpcmVkIGZvciBD UFUgYWNjZXNzIHRocm91Z2gKKwkgKiBtbWFwIG1hcHBpbmcuCisJICovCisJX191MzIgc3dpenps ZV9tb2RlOworfTsKKworc3RydWN0IGRybV9pOTE1X2dlbV9nZXRfdGlsaW5nIHsKKwkvKiogSGFu ZGxlIG9mIHRoZSBidWZmZXIgdG8gZ2V0IHRpbGluZyBzdGF0ZSBmb3IuICovCisJX191MzIgaGFu ZGxlOworCisJLyoqCisJICogQ3VycmVudCB0aWxpbmcgbW9kZSBmb3IgdGhlIG9iamVjdCAoSTkx NV9USUxJTkdfTk9ORSwgSTkxNV9USUxJTkdfWCwKKwkgKiBJOTE1X1RJTElOR19ZKS4KKwkgKi8K KwlfX3UzMiB0aWxpbmdfbW9kZTsKKworCS8qKgorCSAqIFJldHVybmVkIGFkZHJlc3MgYml0IDYg c3dpenpsaW5nIHJlcXVpcmVkIGZvciBDUFUgYWNjZXNzIHRocm91Z2gKKwkgKiBtbWFwIG1hcHBp bmcuCisJICovCisJX191MzIgc3dpenpsZV9tb2RlOworCisJLyoqCisJICogUmV0dXJuZWQgYWRk cmVzcyBiaXQgNiBzd2l6emxpbmcgcmVxdWlyZWQgZm9yIENQVSBhY2Nlc3MgdGhyb3VnaAorCSAq IG1tYXAgbWFwcGluZyB3aGlsc3QgYm91bmQuCisJICovCisJX191MzIgcGh5c19zd2l6emxlX21v ZGU7Cit9OworCitzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2dldF9hcGVydHVyZSB7CisJLyoqIFRvdGFs IHNpemUgb2YgdGhlIGFwZXJ0dXJlIHVzZWQgYnkgaTkxNV9nZW1fZXhlY2J1ZmZlciwgaW4gYnl0 ZXMgKi8KKwlfX3U2NCBhcGVyX3NpemU7CisKKwkvKioKKwkgKiBBdmFpbGFibGUgc3BhY2UgaW4g dGhlIGFwZXJ0dXJlIHVzZWQgYnkgaTkxNV9nZW1fZXhlY2J1ZmZlciwgaW4KKwkgKiBieXRlcwor CSAqLworCV9fdTY0IGFwZXJfYXZhaWxhYmxlX3NpemU7Cit9OworCitzdHJ1Y3QgZHJtX2k5MTVf Z2V0X3BpcGVfZnJvbV9jcnRjX2lkIHsKKwkvKiogSUQgb2YgQ1JUQyBiZWluZyByZXF1ZXN0ZWQg KiovCisJX191MzIgY3J0Y19pZDsKKworCS8qKiBwaXBlIG9mIHJlcXVlc3RlZCBDUlRDICoqLwor CV9fdTMyIHBpcGU7Cit9OworCisjZGVmaW5lIEk5MTVfTUFEVl9XSUxMTkVFRCAwCisjZGVmaW5l IEk5MTVfTUFEVl9ET05UTkVFRCAxCisjZGVmaW5lIF9fSTkxNV9NQURWX1BVUkdFRCAyIC8qIGlu dGVybmFsIHN0YXRlICovCisKK3N0cnVjdCBkcm1faTkxNV9nZW1fbWFkdmlzZSB7CisJLyoqIEhh bmRsZSBvZiB0aGUgYnVmZmVyIHRvIGNoYW5nZSB0aGUgYmFja2luZyBzdG9yZSBhZHZpY2UgKi8K KwlfX3UzMiBoYW5kbGU7CisKKwkvKiBBZHZpY2U6IGVpdGhlciB0aGUgYnVmZmVyIHdpbGwgYmUg bmVlZGVkIGFnYWluIGluIHRoZSBuZWFyIGZ1dHVyZSwKKwkgKiAgICAgICAgIG9yIHdvbnQgYmUg YW5kIGNvdWxkIGJlIGRpc2NhcmRlZCB1bmRlciBtZW1vcnkgcHJlc3N1cmUuCisJICovCisJX191 MzIgbWFkdjsKKworCS8qKiBXaGV0aGVyIHRoZSBiYWNraW5nIHN0b3JlIHN0aWxsIGV4aXN0cy4g Ki8KKwlfX3UzMiByZXRhaW5lZDsKK307CisKKy8qIGZsYWdzICovCisjZGVmaW5lIEk5MTVfT1ZF UkxBWV9UWVBFX01BU0sgCQkweGZmCisjZGVmaW5lIEk5MTVfT1ZFUkxBWV9ZVVZfUExBTkFSIAkw eDAxCisjZGVmaW5lIEk5MTVfT1ZFUkxBWV9ZVVZfUEFDS0VEIAkweDAyCisjZGVmaW5lIEk5MTVf T1ZFUkxBWV9SR0IJCTB4MDMKKworI2RlZmluZSBJOTE1X09WRVJMQVlfREVQVEhfTUFTSwkJMHhm ZjAwCisjZGVmaW5lIEk5MTVfT1ZFUkxBWV9SR0IyNAkJMHgxMDAwCisjZGVmaW5lIEk5MTVfT1ZF UkxBWV9SR0IxNgkJMHgyMDAwCisjZGVmaW5lIEk5MTVfT1ZFUkxBWV9SR0IxNQkJMHgzMDAwCisj ZGVmaW5lIEk5MTVfT1ZFUkxBWV9ZVVY0MjIJCTB4MDEwMAorI2RlZmluZSBJOTE1X09WRVJMQVlf WVVWNDExCQkweDAyMDAKKyNkZWZpbmUgSTkxNV9PVkVSTEFZX1lVVjQyMAkJMHgwMzAwCisjZGVm aW5lIEk5MTVfT1ZFUkxBWV9ZVVY0MTAJCTB4MDQwMAorCisjZGVmaW5lIEk5MTVfT1ZFUkxBWV9T V0FQX01BU0sJCTB4ZmYwMDAwCisjZGVmaW5lIEk5MTVfT1ZFUkxBWV9OT19TV0FQCQkweDAwMDAw MAorI2RlZmluZSBJOTE1X09WRVJMQVlfVVZfU1dBUAkJMHgwMTAwMDAKKyNkZWZpbmUgSTkxNV9P VkVSTEFZX1lfU1dBUAkJMHgwMjAwMDAKKyNkZWZpbmUgSTkxNV9PVkVSTEFZX1lfQU5EX1VWX1NX QVAJMHgwMzAwMDAKKworI2RlZmluZSBJOTE1X09WRVJMQVlfRkxBR1NfTUFTSwkJMHhmZjAwMDAw MAorI2RlZmluZSBJOTE1X09WRVJMQVlfRU5BQkxFCQkweDAxMDAwMDAwCisKK3N0cnVjdCBkcm1f aW50ZWxfb3ZlcmxheV9wdXRfaW1hZ2UgeworCS8qIHZhcmlvdXMgZmxhZ3MgYW5kIHNyYyBmb3Jt YXQgZGVzY3JpcHRpb24gKi8KKwlfX3UzMiBmbGFnczsKKwkvKiBzb3VyY2UgcGljdHVyZSBkZXNj cmlwdGlvbiAqLworCV9fdTMyIGJvX2hhbmRsZTsKKwkvKiBzdHJpZGUgdmFsdWVzIGFuZCBvZmZz ZXRzIGFyZSBpbiBieXRlcywgYnVmZmVyIHJlbGF0aXZlICovCisJX191MTYgc3RyaWRlX1k7IC8q IHN0cmlkZSBmb3IgcGFja2VkIGZvcm1hdHMgKi8KKwlfX3UxNiBzdHJpZGVfVVY7CisJX191MzIg b2Zmc2V0X1k7IC8qIG9mZnNldCBmb3IgcGFja2V0IGZvcm1hdHMgKi8KKwlfX3UzMiBvZmZzZXRf VTsKKwlfX3UzMiBvZmZzZXRfVjsKKwkvKiBpbiBwaXhlbHMgKi8KKwlfX3UxNiBzcmNfd2lkdGg7 CisJX191MTYgc3JjX2hlaWdodDsKKwkvKiB0byBjb21wZW5zYXRlIHRoZSBzY2FsaW5nIGZhY3Rv cnMgZm9yIHBhcnRpYWxseSBjb3ZlcmVkIHN1cmZhY2VzICovCisJX191MTYgc3JjX3NjYW5fd2lk dGg7CisJX191MTYgc3JjX3NjYW5faGVpZ2h0OworCS8qIG91dHB1dCBjcnRjIGRlc2NyaXB0aW9u ICovCisJX191MzIgY3J0Y19pZDsKKwlfX3UxNiBkc3RfeDsKKwlfX3UxNiBkc3RfeTsKKwlfX3Ux NiBkc3Rfd2lkdGg7CisJX191MTYgZHN0X2hlaWdodDsKK307CisKKy8qIGZsYWdzICovCisjZGVm aW5lIEk5MTVfT1ZFUkxBWV9VUERBVEVfQVRUUlMJKDE8PDApCisjZGVmaW5lIEk5MTVfT1ZFUkxB WV9VUERBVEVfR0FNTUEJKDE8PDEpCisjZGVmaW5lIEk5MTVfT1ZFUkxBWV9ESVNBQkxFX0RFU1Rf Q09MT1JLRVkJKDE8PDIpCitzdHJ1Y3QgZHJtX2ludGVsX292ZXJsYXlfYXR0cnMgeworCV9fdTMy IGZsYWdzOworCV9fdTMyIGNvbG9yX2tleTsKKwlfX3MzMiBicmlnaHRuZXNzOworCV9fdTMyIGNv bnRyYXN0OworCV9fdTMyIHNhdHVyYXRpb247CisJX191MzIgZ2FtbWEwOworCV9fdTMyIGdhbW1h MTsKKwlfX3UzMiBnYW1tYTI7CisJX191MzIgZ2FtbWEzOworCV9fdTMyIGdhbW1hNDsKKwlfX3Uz MiBnYW1tYTU7Cit9OworCisvKgorICogSW50ZWwgc3ByaXRlIGhhbmRsaW5nCisgKgorICogQ29s b3Iga2V5aW5nIHdvcmtzIHdpdGggYSBtaW4vbWFzay9tYXggdHVwbGUuICBCb3RoIHNvdXJjZSBh bmQgZGVzdGluYXRpb24KKyAqIGNvbG9yIGtleWluZyBpcyBhbGxvd2VkLgorICoKKyAqIFNvdXJj ZSBrZXlpbmc6CisgKiBTcHJpdGUgcGl4ZWxzIHdpdGhpbiB0aGUgbWluICYgbWF4IHZhbHVlcywg bWFza2VkIGFnYWluc3QgdGhlIGNvbG9yIGNoYW5uZWxzCisgKiBzcGVjaWZpZWQgaW4gdGhlIG1h c2sgZmllbGQsIHdpbGwgYmUgdHJhbnNwYXJlbnQuICBBbGwgb3RoZXIgcGl4ZWxzIHdpbGwKKyAq IGJlIGRpc3BsYXllZCBvbiB0b3Agb2YgdGhlIHByaW1hcnkgcGxhbmUuICBGb3IgUkdCIHN1cmZh Y2VzLCBvbmx5IHRoZSBtaW4KKyAqIGFuZCBtYXNrIGZpZWxkcyB3aWxsIGJlIHVzZWQ7IHJhbmdl ZCBjb21wYXJlcyBhcmUgbm90IGFsbG93ZWQuCisgKgorICogRGVzdGluYXRpb24ga2V5aW5nOgor ICogUHJpbWFyeSBwbGFuZSBwaXhlbHMgdGhhdCBtYXRjaCB0aGUgbWluIHZhbHVlLCBtYXNrZWQg YWdhaW5zdCB0aGUgY29sb3IKKyAqIGNoYW5uZWxzIHNwZWNpZmllZCBpbiB0aGUgbWFzayBmaWVs ZCwgd2lsbCBiZSByZXBsYWNlZCBieSBjb3JyZXNwb25kaW5nCisgKiBwaXhlbHMgZnJvbSB0aGUg c3ByaXRlIHBsYW5lLgorICoKKyAqIE5vdGUgdGhhdCBzb3VyY2UgJiBkZXN0aW5hdGlvbiBrZXlp bmcgYXJlIGV4Y2x1c2l2ZTsgb25seSBvbmUgY2FuIGJlCisgKiBhY3RpdmUgb24gYSBnaXZlbiBw bGFuZS4KKyAqLworCisjZGVmaW5lIEk5MTVfU0VUX0NPTE9SS0VZX05PTkUJCSgxPDwwKSAvKiBk aXNhYmxlIGNvbG9yIGtleSBtYXRjaGluZyAqLworI2RlZmluZSBJOTE1X1NFVF9DT0xPUktFWV9E RVNUSU5BVElPTgkoMTw8MSkKKyNkZWZpbmUgSTkxNV9TRVRfQ09MT1JLRVlfU09VUkNFCSgxPDwy KQorc3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkgeworCV9fdTMyIHBsYW5lX2lkOwor CV9fdTMyIG1pbl92YWx1ZTsKKwlfX3UzMiBjaGFubmVsX21hc2s7CisJX191MzIgbWF4X3ZhbHVl OworCV9fdTMyIGZsYWdzOworfTsKKworc3RydWN0IGRybV9pOTE1X2dlbV93YWl0IHsKKwkvKiog SGFuZGxlIG9mIEJPIHdlIHNoYWxsIHdhaXQgb24gKi8KKwlfX3UzMiBib19oYW5kbGU7CisJX191 MzIgZmxhZ3M7CisJLyoqIE51bWJlciBvZiBuYW5vc2Vjb25kcyB0byB3YWl0LCBSZXR1cm5zIHRp bWUgcmVtYWluaW5nLiAqLworCV9fczY0IHRpbWVvdXRfbnM7Cit9OworCitzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX2NvbnRleHRfY3JlYXRlIHsKKwkvKiAgb3V0cHV0OiBpZCBvZiBuZXcgY29udGV4dCov CisJX191MzIgY3R4X2lkOworCV9fdTMyIHBhZDsKK307CisKK3N0cnVjdCBkcm1faTkxNV9nZW1f Y29udGV4dF9kZXN0cm95IHsKKwlfX3UzMiBjdHhfaWQ7CisJX191MzIgcGFkOworfTsKKworc3Ry dWN0IGRybV9pOTE1X3JlZ19yZWFkIHsKKwkvKgorCSAqIFJlZ2lzdGVyIG9mZnNldC4KKwkgKiBG b3IgNjRiaXQgd2lkZSByZWdpc3RlcnMgd2hlcmUgdGhlIHVwcGVyIDMyYml0cyBkb24ndCBpbW1l ZGlhdGVseQorCSAqIGZvbGxvdyB0aGUgbG93ZXIgMzJiaXRzLCB0aGUgb2Zmc2V0IG9mIHRoZSBs b3dlciAzMmJpdHMgbXVzdAorCSAqIGJlIHNwZWNpZmllZAorCSAqLworCV9fdTY0IG9mZnNldDsK KyNkZWZpbmUgSTkxNV9SRUdfUkVBRF84Ql9XQSAoMXVsIDw8IDApCisKKwlfX3U2NCB2YWw7IC8q IFJldHVybiB2YWx1ZSAqLworfTsKKy8qIEtub3duIHJlZ2lzdGVyczoKKyAqCisgKiBSZW5kZXIg ZW5naW5lIHRpbWVzdGFtcCAtIDB4MjM1OCArIDY0Yml0IC0gZ2VuNysKKyAqIC0gTm90ZSB0aGlz IHJlZ2lzdGVyIHJldHVybnMgYW4gaW52YWxpZCB2YWx1ZSBpZiB1c2luZyB0aGUgZGVmYXVsdAor ICogICBzaW5nbGUgaW5zdHJ1Y3Rpb24gOGJ5dGUgcmVhZCwgaW4gb3JkZXIgdG8gd29ya2Fyb3Vu ZCB0aGF0IHBhc3MKKyAqICAgZmxhZyBJOTE1X1JFR19SRUFEXzhCX1dBIGluIG9mZnNldCBmaWVs ZC4KKyAqCisgKi8KKworc3RydWN0IGRybV9pOTE1X3Jlc2V0X3N0YXRzIHsKKwlfX3UzMiBjdHhf aWQ7CisJX191MzIgZmxhZ3M7CisKKwkvKiBBbGwgcmVzZXRzIHNpbmNlIGJvb3QvbW9kdWxlIHJl bG9hZCwgZm9yIGFsbCBjb250ZXh0cyAqLworCV9fdTMyIHJlc2V0X2NvdW50OworCisJLyogTnVt YmVyIG9mIGJhdGNoZXMgbG9zdCB3aGVuIGFjdGl2ZSBpbiBHUFUsIGZvciB0aGlzIGNvbnRleHQg Ki8KKwlfX3UzMiBiYXRjaF9hY3RpdmU7CisKKwkvKiBOdW1iZXIgb2YgYmF0Y2hlcyBsb3N0IHBl bmRpbmcgZm9yIGV4ZWN1dGlvbiwgZm9yIHRoaXMgY29udGV4dCAqLworCV9fdTMyIGJhdGNoX3Bl bmRpbmc7CisKKwlfX3UzMiBwYWQ7Cit9OworCitzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3VzZXJwdHIg eworCV9fdTY0IHVzZXJfcHRyOworCV9fdTY0IHVzZXJfc2l6ZTsKKwlfX3UzMiBmbGFnczsKKyNk ZWZpbmUgSTkxNV9VU0VSUFRSX1JFQURfT05MWSAweDEKKyNkZWZpbmUgSTkxNV9VU0VSUFRSX1VO U1lOQ0hST05JWkVEIDB4ODAwMDAwMDAKKwkvKioKKwkgKiBSZXR1cm5lZCBoYW5kbGUgZm9yIHRo ZSBvYmplY3QuCisJICoKKwkgKiBPYmplY3QgaGFuZGxlcyBhcmUgbm9uemVyby4KKwkgKi8KKwlf X3UzMiBoYW5kbGU7Cit9OworCitzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gewor CV9fdTMyIGN0eF9pZDsKKwlfX3UzMiBzaXplOworCV9fdTY0IHBhcmFtOworI2RlZmluZSBJOTE1 X0NPTlRFWFRfUEFSQU1fQkFOX1BFUklPRAkweDEKKyNkZWZpbmUgSTkxNV9DT05URVhUX1BBUkFN X05PX1pFUk9NQVAJMHgyCisjZGVmaW5lIEk5MTVfQ09OVEVYVF9QQVJBTV9HVFRfU0laRQkweDMK KyNkZWZpbmUgSTkxNV9DT05URVhUX1BBUkFNX05PX0VSUk9SX0NBUFRVUkUJMHg0CisjZGVmaW5l IEk5MTVfQ09OVEVYVF9QQVJBTV9CQU5OQUJMRQkweDUKKyNkZWZpbmUgSTkxNV9DT05URVhUX1BB UkFNX1BSSU9SSVRZCTB4NgorI2RlZmluZSAgIEk5MTVfQ09OVEVYVF9NQVhfVVNFUl9QUklPUklU WQkxMDIzIC8qIGluY2x1c2l2ZSAqLworI2RlZmluZSAgIEk5MTVfQ09OVEVYVF9ERUZBVUxUX1BS SU9SSVRZCQkwCisjZGVmaW5lICAgSTkxNV9DT05URVhUX01JTl9VU0VSX1BSSU9SSVRZCS0xMDIz IC8qIGluY2x1c2l2ZSAqLworCV9fdTY0IHZhbHVlOworfTsKKworZW51bSBkcm1faTkxNV9vYV9m b3JtYXQgeworCUk5MTVfT0FfRk9STUFUX0ExMyA9IDEsCSAgICAvKiBIU1cgb25seSAqLworCUk5 MTVfT0FfRk9STUFUX0EyOSwJICAgIC8qIEhTVyBvbmx5ICovCisJSTkxNV9PQV9GT1JNQVRfQTEz X0I4X0M4LCAgIC8qIEhTVyBvbmx5ICovCisJSTkxNV9PQV9GT1JNQVRfQjRfQzgsCSAgICAvKiBI U1cgb25seSAqLworCUk5MTVfT0FfRk9STUFUX0E0NV9COF9DOCwgICAvKiBIU1cgb25seSAqLwor CUk5MTVfT0FfRk9STUFUX0I0X0M4X0ExNiwgICAvKiBIU1cgb25seSAqLworCUk5MTVfT0FfRk9S TUFUX0M0X0I4LAkgICAgLyogSFNXKyAqLworCisJLyogR2VuOCsgKi8KKwlJOTE1X09BX0ZPUk1B VF9BMTIsCisJSTkxNV9PQV9GT1JNQVRfQTEyX0I4X0M4LAorCUk5MTVfT0FfRk9STUFUX0EzMnU0 MF9BNHUzMl9COF9DOCwKKworCUk5MTVfT0FfRk9STUFUX01BWAkgICAgLyogbm9uLUFCSSAqLwor fTsKKworZW51bSBkcm1faTkxNV9wZXJmX3Byb3BlcnR5X2lkIHsKKwkvKioKKwkgKiBPcGVuIHRo ZSBzdHJlYW0gZm9yIGEgc3BlY2lmaWMgY29udGV4dCBoYW5kbGUgKGFzIHVzZWQgd2l0aAorCSAq IGV4ZWNidWZmZXIyKS4gQSBzdHJlYW0gb3BlbmVkIGZvciBhIHNwZWNpZmljIGNvbnRleHQgdGhp cyB3YXkKKwkgKiB3b24ndCB0eXBpY2FsbHkgcmVxdWlyZSByb290IHByaXZpbGVnZXMuCisJICov CisJRFJNX0k5MTVfUEVSRl9QUk9QX0NUWF9IQU5ETEUgPSAxLAorCisJLyoqCisJICogQSB2YWx1 ZSBvZiAxIHJlcXVlc3RzIHRoZSBpbmNsdXNpb24gb2YgcmF3IE9BIHVuaXQgcmVwb3J0cyBhcwor CSAqIHBhcnQgb2Ygc3RyZWFtIHNhbXBsZXMuCisJICovCisJRFJNX0k5MTVfUEVSRl9QUk9QX1NB TVBMRV9PQSwKKworCS8qKgorCSAqIFRoZSB2YWx1ZSBzcGVjaWZpZXMgd2hpY2ggc2V0IG9mIE9B IHVuaXQgbWV0cmljcyBzaG91bGQgYmUKKwkgKiBiZSBjb25maWd1cmVkLCBkZWZpbmluZyB0aGUg Y29udGVudHMgb2YgYW55IE9BIHVuaXQgcmVwb3J0cy4KKwkgKi8KKwlEUk1fSTkxNV9QRVJGX1BS T1BfT0FfTUVUUklDU19TRVQsCisKKwkvKioKKwkgKiBUaGUgdmFsdWUgc3BlY2lmaWVzIHRoZSBz aXplIGFuZCBsYXlvdXQgb2YgT0EgdW5pdCByZXBvcnRzLgorCSAqLworCURSTV9JOTE1X1BFUkZf UFJPUF9PQV9GT1JNQVQsCisKKwkvKioKKwkgKiBTcGVjaWZ5aW5nIHRoaXMgcHJvcGVydHkgaW1w bGljaXRseSByZXF1ZXN0cyBwZXJpb2RpYyBPQSB1bml0CisJICogc2FtcGxpbmcgYW5kIChhdCBs ZWFzdCBvbiBIYXN3ZWxsKSB0aGUgc2FtcGxpbmcgZnJlcXVlbmN5IGlzIGRlcml2ZWQKKwkgKiBm cm9tIHRoaXMgZXhwb25lbnQgYXMgZm9sbG93czoKKwkgKgorCSAqICAgODBucyAqIDJeKHBlcmlv ZF9leHBvbmVudCArIDEpCisJICovCisJRFJNX0k5MTVfUEVSRl9QUk9QX09BX0VYUE9ORU5ULAor CisJRFJNX0k5MTVfUEVSRl9QUk9QX01BWCAvKiBub24tQUJJICovCit9OworCitzdHJ1Y3QgZHJt X2k5MTVfcGVyZl9vcGVuX3BhcmFtIHsKKwlfX3UzMiBmbGFnczsKKyNkZWZpbmUgSTkxNV9QRVJG X0ZMQUdfRkRfQ0xPRVhFQwkoMTw8MCkKKyNkZWZpbmUgSTkxNV9QRVJGX0ZMQUdfRkRfTk9OQkxP Q0sJKDE8PDEpCisjZGVmaW5lIEk5MTVfUEVSRl9GTEFHX0RJU0FCTEVECQkoMTw8MikKKworCS8q KiBUaGUgbnVtYmVyIG9mIHU2NCAoaWQsIHZhbHVlKSBwYWlycyAqLworCV9fdTMyIG51bV9wcm9w ZXJ0aWVzOworCisJLyoqCisJICogUG9pbnRlciB0byBhcnJheSBvZiB1NjQgKGlkLCB2YWx1ZSkg cGFpcnMgY29uZmlndXJpbmcgdGhlIHN0cmVhbQorCSAqIHRvIG9wZW4uCisJICovCisJX191NjQg cHJvcGVydGllc19wdHI7Cit9OworCisvKioKKyAqIEVuYWJsZSBkYXRhIGNhcHR1cmUgZm9yIGEg c3RyZWFtIHRoYXQgd2FzIGVpdGhlciBvcGVuZWQgaW4gYSBkaXNhYmxlZCBzdGF0ZQorICogdmlh IEk5MTVfUEVSRl9GTEFHX0RJU0FCTEVEIG9yIHdhcyBsYXRlciBkaXNhYmxlZCB2aWEKKyAqIEk5 MTVfUEVSRl9JT0NUTF9ESVNBQkxFLgorICoKKyAqIEl0IGlzIGludGVuZGVkIHRvIGJlIGNoZWFw ZXIgdG8gZGlzYWJsZSBhbmQgZW5hYmxlIGEgc3RyZWFtIHRoYW4gaXQgbWF5IGJlCisgKiB0byBj bG9zZSBhbmQgcmUtb3BlbiBhIHN0cmVhbSB3aXRoIHRoZSBzYW1lIGNvbmZpZ3VyYXRpb24uCisg KgorICogSXQncyB1bmRlZmluZWQgd2hldGhlciBhbnkgcGVuZGluZyBkYXRhIGZvciB0aGUgc3Ry ZWFtIHdpbGwgYmUgbG9zdC4KKyAqLworI2RlZmluZSBJOTE1X1BFUkZfSU9DVExfRU5BQkxFCV9J TygnaScsIDB4MCkKKworLyoqCisgKiBEaXNhYmxlIGRhdGEgY2FwdHVyZSBmb3IgYSBzdHJlYW0u CisgKgorICogSXQgaXMgYW4gZXJyb3IgdG8gdHJ5IGFuZCByZWFkIGEgc3RyZWFtIHRoYXQgaXMg ZGlzYWJsZWQuCisgKi8KKyNkZWZpbmUgSTkxNV9QRVJGX0lPQ1RMX0RJU0FCTEUJX0lPKCdpJywg MHgxKQorCisvKioKKyAqIENvbW1vbiB0byBhbGwgaTkxNSBwZXJmIHJlY29yZHMKKyAqLworc3Ry dWN0IGRybV9pOTE1X3BlcmZfcmVjb3JkX2hlYWRlciB7CisJX191MzIgdHlwZTsKKwlfX3UxNiBw YWQ7CisJX191MTYgc2l6ZTsKK307CisKK2VudW0gZHJtX2k5MTVfcGVyZl9yZWNvcmRfdHlwZSB7 CisKKwkvKioKKwkgKiBTYW1wbGVzIGFyZSB0aGUgd29yayBob3JzZSByZWNvcmQgdHlwZSB3aG9z ZSBjb250ZW50cyBhcmUgZXh0ZW5zaWJsZQorCSAqIGFuZCBkZWZpbmVkIHdoZW4gb3BlbmluZyBh biBpOTE1IHBlcmYgc3RyZWFtIGJhc2VkIG9uIHRoZSBnaXZlbgorCSAqIHByb3BlcnRpZXMuCisJ ICoKKwkgKiBCb29sZWFuIHByb3BlcnRpZXMgZm9sbG93aW5nIHRoZSBuYW1pbmcgY29udmVudGlv bgorCSAqIERSTV9JOTE1X1BFUkZfU0FNUExFX3h5el9QUk9QIHJlcXVlc3QgdGhlIGluY2x1c2lv biBvZiAneHl6JyBkYXRhIGluCisJICogZXZlcnkgc2FtcGxlLgorCSAqCisJICogVGhlIG9yZGVy IG9mIHRoZXNlIHNhbXBsZSBwcm9wZXJ0aWVzIGdpdmVuIGJ5IHVzZXJzcGFjZSBoYXMgbm8KKwkg KiBhZmZlY3Qgb24gdGhlIG9yZGVyaW5nIG9mIGRhdGEgd2l0aGluIGEgc2FtcGxlLiBUaGUgb3Jk ZXIgaXMKKwkgKiBkb2N1bWVudGVkIGhlcmUuCisJICoKKwkgKiBzdHJ1Y3QgeworCSAqICAgICBz dHJ1Y3QgZHJtX2k5MTVfcGVyZl9yZWNvcmRfaGVhZGVyIGhlYWRlcjsKKwkgKgorCSAqICAgICB7 IHUzMiBvYV9yZXBvcnRbXTsgfSAmJiBEUk1fSTkxNV9QRVJGX1BST1BfU0FNUExFX09BCisJICog fTsKKwkgKi8KKwlEUk1fSTkxNV9QRVJGX1JFQ09SRF9TQU1QTEUgPSAxLAorCisJLyoKKwkgKiBJ bmRpY2F0ZXMgdGhhdCBvbmUgb3IgbW9yZSBPQSByZXBvcnRzIHdlcmUgbm90IHdyaXR0ZW4gYnkg dGhlCisJICogaGFyZHdhcmUuIFRoaXMgY2FuIGhhcHBlbiBmb3IgZXhhbXBsZSBpZiBhbiBNSV9S RVBPUlRfUEVSRl9DT1VOVAorCSAqIGNvbW1hbmQgY29sbGlkZXMgd2l0aCBwZXJpb2RpYyBzYW1w bGluZyAtIHdoaWNoIHdvdWxkIGJlIG1vcmUgbGlrZWx5CisJICogYXQgaGlnaGVyIHNhbXBsaW5n IGZyZXF1ZW5jaWVzLgorCSAqLworCURSTV9JOTE1X1BFUkZfUkVDT1JEX09BX1JFUE9SVF9MT1NU ID0gMiwKKworCS8qKgorCSAqIEFuIGVycm9yIG9jY3VycmVkIHRoYXQgcmVzdWx0ZWQgaW4gYWxs IHBlbmRpbmcgT0EgcmVwb3J0cyBiZWluZyBsb3N0LgorCSAqLworCURSTV9JOTE1X1BFUkZfUkVD T1JEX09BX0JVRkZFUl9MT1NUID0gMywKKworCURSTV9JOTE1X1BFUkZfUkVDT1JEX01BWCAvKiBu b24tQUJJICovCit9OworCisvKioKKyAqIFN0cnVjdHVyZSB0byB1cGxvYWQgcGVyZiBkeW5hbWlj IGNvbmZpZ3VyYXRpb24gaW50byB0aGUga2VybmVsLgorICovCitzdHJ1Y3QgZHJtX2k5MTVfcGVy Zl9vYV9jb25maWcgeworCS8qKiBTdHJpbmcgZm9ybWF0dGVkIGxpa2UgIiUwOHgtJTA0eC0lMDR4 LSUwNHgtJTAxMngiICovCisJY2hhciB1dWlkWzM2XTsKKworCV9fdTMyIG5fbXV4X3JlZ3M7CisJ X191MzIgbl9ib29sZWFuX3JlZ3M7CisJX191MzIgbl9mbGV4X3JlZ3M7CisKKwkvKgorCSAqIFRo ZXNlIGZpZWxkcyBhcmUgcG9pbnRlcnMgdG8gdHVwbGVzIG9mIHUzMiB2YWx1ZXMgKHJlZ2lzdGVy CisJICogYWRkcmVzcywgdmFsdWUpLiBGb3IgZXhhbXBsZSB0aGUgZXhwZWN0ZWQgbGVuZ3RoIG9m IHRoZSBidWZmZXIKKwkgKiBwb2ludGVkIGJ5IG11eF9yZWdzX3B0ciBpcyAoMiAqIHNpemVvZih1 MzIpICogbl9tdXhfcmVncykuCisJICovCisJX191NjQgbXV4X3JlZ3NfcHRyOworCV9fdTY0IGJv b2xlYW5fcmVnc19wdHI7CisJX191NjQgZmxleF9yZWdzX3B0cjsKK307CisKKyNpZiBkZWZpbmVk KF9fY3BsdXNwbHVzKQorfQorI2VuZGlmCisKKyNlbmRpZiAvKiBfSTkxNV9EUk1fSF8gKi8KZGlm ZiAtLWdpdCBhL2luY2x1ZGUvZHJtLXVhcGkvbWdhX2RybS5oIGIvaW5jbHVkZS9kcm0tdWFwaS9t Z2FfZHJtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43OTMwMDEx MTQ4MjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2RybS11YXBpL21nYV9kcm0uaApAQCAt MCwwICsxLDQyNyBAQAorLyogbWdhX2RybS5oIC0tIFB1YmxpYyBoZWFkZXIgZm9yIHRoZSBNYXRy b3ggZzIwMC9nNDAwIGRyaXZlciAtKi0gbGludXgtYyAtKi0KKyAqIENyZWF0ZWQ6IFR1ZSBKYW4g MjUgMDE6NTA6MDEgMTk5OSBieSBqaGFydG1hbm5AcHJlY2lzaW9uaW5zaWdodC5jb20KKyAqCisg KiBDb3B5cmlnaHQgMTk5OSBQcmVjaXNpb24gSW5zaWdodCwgSW5jLiwgQ2VkYXIgUGFyaywgVGV4 YXMuCisgKiBDb3B5cmlnaHQgMjAwMCBWQSBMaW51eCBTeXN0ZW1zLCBJbmMuLCBTdW5ueXZhbGUs IENhbGlmb3JuaWEuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFBlcm1pc3Npb24g aXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmlu ZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlv biBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0 aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJp Z2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1 YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8g cGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBk byBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFi b3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGlu ZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVz IG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhF IFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJ TkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8g VEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisg KiBWQSBMSU5VWCBTWVNURU1TIEFORC9PUiBJVFMgU1VQUExJRVJTIEJFIExJQUJMRSBGT1IgQU5Z IENMQUlNLCBEQU1BR0VTIE9SCisgKiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNU SU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKKyAqIEFSSVNJTkcgRlJPTSwgT1VU IE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgorICog T1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIEF1dGhvcnM6CisgKiAgICBK ZWZmIEhhcnRtYW5uIDxqaGFydG1hbm5AdmFsaW51eC5jb20+CisgKiAgICBLZWl0aCBXaGl0d2Vs bCA8a2VpdGhAdHVuZ3N0ZW5ncmFwaGljcy5jb20+CisgKgorICogUmV3cml0dGVuIGJ5OgorICog ICAgR2FyZXRoIEh1Z2hlcyA8Z2FyZXRoQHZhbGludXguY29tPgorICovCisKKyNpZm5kZWYgX19N R0FfRFJNX0hfXworI2RlZmluZSBfX01HQV9EUk1fSF9fCisKKyNpbmNsdWRlICJkcm0uaCIKKwor I2lmIGRlZmluZWQoX19jcGx1c3BsdXMpCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKiBXQVJO SU5HOiBJZiB5b3UgY2hhbmdlIGFueSBvZiB0aGVzZSBkZWZpbmVzLCBtYWtlIHN1cmUgdG8gY2hh bmdlIHRoZQorICogZGVmaW5lcyBpbiB0aGUgWHNlcnZlciBmaWxlIChtZ2Ffc2FyZWEuaCkKKyAq LworCisjaWZuZGVmIF9fTUdBX1NBUkVBX0RFRklORVNfXworI2RlZmluZSBfX01HQV9TQVJFQV9E RUZJTkVTX18KKworLyogV0FSUCBwaXBlIGZsYWdzCisgKi8KKyNkZWZpbmUgTUdBX0YJCQkweDEJ LyogZm9nICovCisjZGVmaW5lIE1HQV9BCQkJMHgyCS8qIGFscGhhICovCisjZGVmaW5lIE1HQV9T CQkJMHg0CS8qIHNwZWN1bGFyICovCisjZGVmaW5lIE1HQV9UMgkJCTB4OAkvKiBtdWx0aXRleHR1 cmUgKi8KKworI2RlZmluZSBNR0FfV0FSUF9UR1oJCTAKKyNkZWZpbmUgTUdBX1dBUlBfVEdaRgkJ KE1HQV9GKQorI2RlZmluZSBNR0FfV0FSUF9UR1pBCQkoTUdBX0EpCisjZGVmaW5lIE1HQV9XQVJQ X1RHWkFGCQkoTUdBX0Z8TUdBX0EpCisjZGVmaW5lIE1HQV9XQVJQX1RHWlMJCShNR0FfUykKKyNk ZWZpbmUgTUdBX1dBUlBfVEdaU0YJCShNR0FfU3xNR0FfRikKKyNkZWZpbmUgTUdBX1dBUlBfVEda U0EJCShNR0FfU3xNR0FfQSkKKyNkZWZpbmUgTUdBX1dBUlBfVEdaU0FGCQkoTUdBX1N8TUdBX0Z8 TUdBX0EpCisjZGVmaW5lIE1HQV9XQVJQX1QyR1oJCShNR0FfVDIpCisjZGVmaW5lIE1HQV9XQVJQ X1QyR1pGCQkoTUdBX1QyfE1HQV9GKQorI2RlZmluZSBNR0FfV0FSUF9UMkdaQQkJKE1HQV9UMnxN R0FfQSkKKyNkZWZpbmUgTUdBX1dBUlBfVDJHWkFGCQkoTUdBX1QyfE1HQV9BfE1HQV9GKQorI2Rl ZmluZSBNR0FfV0FSUF9UMkdaUwkJKE1HQV9UMnxNR0FfUykKKyNkZWZpbmUgTUdBX1dBUlBfVDJH WlNGCQkoTUdBX1QyfE1HQV9TfE1HQV9GKQorI2RlZmluZSBNR0FfV0FSUF9UMkdaU0EJCShNR0Ff VDJ8TUdBX1N8TUdBX0EpCisjZGVmaW5lIE1HQV9XQVJQX1QyR1pTQUYJKE1HQV9UMnxNR0FfU3xN R0FfRnxNR0FfQSkKKworI2RlZmluZSBNR0FfTUFYX0cyMDBfUElQRVMJOAkvKiBubyBtdWx0aXRl eCAqLworI2RlZmluZSBNR0FfTUFYX0c0MDBfUElQRVMJMTYKKyNkZWZpbmUgTUdBX01BWF9XQVJQ X1BJUEVTCU1HQV9NQVhfRzQwMF9QSVBFUworI2RlZmluZSBNR0FfV0FSUF9VQ09ERV9TSVpFCTMy NzY4CS8qIGluIGJ5dGVzICovCisKKyNkZWZpbmUgTUdBX0NBUkRfVFlQRV9HMjAwCTEKKyNkZWZp bmUgTUdBX0NBUkRfVFlQRV9HNDAwCTIKKyNkZWZpbmUgTUdBX0NBUkRfVFlQRV9HNDUwCTMJLyog bm90IGN1cnJlbnRseSB1c2VkICovCisjZGVmaW5lIE1HQV9DQVJEX1RZUEVfRzU1MAk0CisKKyNk ZWZpbmUgTUdBX0ZST05UCQkweDEKKyNkZWZpbmUgTUdBX0JBQ0sJCTB4MgorI2RlZmluZSBNR0Ff REVQVEgJCTB4NAorCisvKiBXaGF0IG5lZWRzIHRvIGJlIGNoYW5nZWQgZm9yIHRoZSBjdXJyZW50 IHZlcnRleCBkbWEgYnVmZmVyPworICovCisjZGVmaW5lIE1HQV9VUExPQURfQ09OVEVYVAkweDEK KyNkZWZpbmUgTUdBX1VQTE9BRF9URVgwCQkweDIKKyNkZWZpbmUgTUdBX1VQTE9BRF9URVgxCQkw eDQKKyNkZWZpbmUgTUdBX1VQTE9BRF9QSVBFCQkweDgKKyNkZWZpbmUgTUdBX1VQTE9BRF9URVgw SU1BR0UJMHgxMAkvKiBoYW5kbGVkIGNsaWVudC1zaWRlICovCisjZGVmaW5lIE1HQV9VUExPQURf VEVYMUlNQUdFCTB4MjAJLyogaGFuZGxlZCBjbGllbnQtc2lkZSAqLworI2RlZmluZSBNR0FfVVBM T0FEXzJECQkweDQwCisjZGVmaW5lIE1HQV9XQUlUX0FHRQkJMHg4MAkvKiBoYW5kbGVkIGNsaWVu dC1zaWRlICovCisjZGVmaW5lIE1HQV9VUExPQURfQ0xJUFJFQ1RTCTB4MTAwCS8qIGhhbmRsZWQg Y2xpZW50LXNpZGUgKi8KKyNpZiAwCisjZGVmaW5lIE1HQV9ETUFfRkxVU0gJCTB4MjAwCS8qIHNl dCB3aGVuIHNvbWVvbmUgZ2V0cyB0aGUgbG9jaworCQkJCQkgICBxdWllc2NlbnQgKi8KKyNlbmRp ZgorCisvKiAzMiBidWZmZXJzIG9mIDY0ayBlYWNoLCB0b3RhbCAyIG1lZy4KKyAqLworI2RlZmlu ZSBNR0FfQlVGRkVSX1NJWkUJCSgxIDw8IDE2KQorI2RlZmluZSBNR0FfTlVNX0JVRkZFUlMJCTEy OAorCisvKiBLZWVwIHRoZXNlIHNtYWxsIGZvciB0ZXN0aW5nLgorICovCisjZGVmaW5lIE1HQV9O Ul9TQVJFQV9DTElQUkVDVFMJOAorCisvKiAyIGhlYXBzICgxIGZvciBjYXJkLCAxIGZvciBhZ3Ap LCBlYWNoIGRpdmlkZWQgaW50byB1cCB0byAxMjgKKyAqIHJlZ2lvbnMsIHN1YmplY3QgdG8gYSBt aW5pbXVtIHJlZ2lvbiBzaXplIG9mICgxPDwxNikgPT0gNjRrLgorICoKKyAqIENsaWVudHMgbWF5 IHN1YmRpdmlkZSByZWdpb25zIGludGVybmFsbHksIGJ1dCB3aGVuIHNoYXJpbmcgYmV0d2Vlbgor ICogY2xpZW50cywgdGhlIHJlZ2lvbiBzaXplIGlzIHRoZSBtaW5pbXVtIGdyYW51bGFyaXR5Lgor ICovCisKKyNkZWZpbmUgTUdBX0NBUkRfSEVBUAkJCTAKKyNkZWZpbmUgTUdBX0FHUF9IRUFQCQkJ MQorI2RlZmluZSBNR0FfTlJfVEVYX0hFQVBTCQkyCisjZGVmaW5lIE1HQV9OUl9URVhfUkVHSU9O UwkJMTYKKyNkZWZpbmUgTUdBX0xPR19NSU5fVEVYX1JFR0lPTl9TSVpFCTE2CisKKyNkZWZpbmUg IERSTV9NR0FfSURMRV9SRVRSWSAgICAgICAgICAyMDQ4CisKKyNlbmRpZgkJCQkvKiBfX01HQV9T QVJFQV9ERUZJTkVTX18gKi8KKworLyogU2V0dXAgcmVnaXN0ZXJzIGZvciAzRCBjb250ZXh0Cisg Ki8KK3R5cGVkZWYgc3RydWN0IHsKKwl1bnNpZ25lZCBpbnQgZHN0b3JnOworCXVuc2lnbmVkIGlu dCBtYWNjZXNzOworCXVuc2lnbmVkIGludCBwbG53dDsKKwl1bnNpZ25lZCBpbnQgZHdnY3RsOwor CXVuc2lnbmVkIGludCBhbHBoYWN0cmw7CisJdW5zaWduZWQgaW50IGZvZ2NvbG9yOworCXVuc2ln bmVkIGludCB3ZmxhZzsKKwl1bnNpZ25lZCBpbnQgdGR1YWxzdGFnZTA7CisJdW5zaWduZWQgaW50 IHRkdWFsc3RhZ2UxOworCXVuc2lnbmVkIGludCBmY29sOworCXVuc2lnbmVkIGludCBzdGVuY2ls OworCXVuc2lnbmVkIGludCBzdGVuY2lsY3RsOworfSBkcm1fbWdhX2NvbnRleHRfcmVnc190Owor CisvKiBTZXR1cCByZWdpc3RlcnMgZm9yIDJELCBYIHNlcnZlcgorICovCit0eXBlZGVmIHN0cnVj dCB7CisJdW5zaWduZWQgaW50IHBpdGNoOworfSBkcm1fbWdhX3NlcnZlcl9yZWdzX3Q7CisKKy8q IFNldHVwIHJlZ2lzdGVycyBmb3IgZWFjaCB0ZXh0dXJlIHVuaXQKKyAqLwordHlwZWRlZiBzdHJ1 Y3QgeworCXVuc2lnbmVkIGludCB0ZXhjdGw7CisJdW5zaWduZWQgaW50IHRleGN0bDI7CisJdW5z aWduZWQgaW50IHRleGZpbHRlcjsKKwl1bnNpZ25lZCBpbnQgdGV4Ym9yZGVyY29sOworCXVuc2ln bmVkIGludCB0ZXhvcmc7CisJdW5zaWduZWQgaW50IHRleHdpZHRoOworCXVuc2lnbmVkIGludCB0 ZXhoZWlnaHQ7CisJdW5zaWduZWQgaW50IHRleG9yZzE7CisJdW5zaWduZWQgaW50IHRleG9yZzI7 CisJdW5zaWduZWQgaW50IHRleG9yZzM7CisJdW5zaWduZWQgaW50IHRleG9yZzQ7Cit9IGRybV9t Z2FfdGV4dHVyZV9yZWdzX3Q7CisKKy8qIEdlbmVyYWwgYWdpbmcgbWVjaGFuaXNtCisgKi8KK3R5 cGVkZWYgc3RydWN0IHsKKwl1bnNpZ25lZCBpbnQgaGVhZDsJLyogUG9zaXRpb24gb2YgaGVhZCBw b2ludGVyICAgICAgICAgICovCisJdW5zaWduZWQgaW50IHdyYXA7CS8qIFByaW1hcnkgRE1BIHdy YXAgY291bnQgICAgICAgICAgICAqLworfSBkcm1fbWdhX2FnZV90OworCit0eXBlZGVmIHN0cnVj dCBfZHJtX21nYV9zYXJlYSB7CisJLyogVGhlIGNoYW5uZWwgZm9yIGNvbW11bmljYXRpb24gb2Yg c3RhdGUgaW5mb3JtYXRpb24gdG8gdGhlIGtlcm5lbAorCSAqIG9uIGZpcmluZyBhIHZlcnRleCBk bWEgYnVmZmVyLgorCSAqLworCWRybV9tZ2FfY29udGV4dF9yZWdzX3QgY29udGV4dF9zdGF0ZTsK Kwlkcm1fbWdhX3NlcnZlcl9yZWdzX3Qgc2VydmVyX3N0YXRlOworCWRybV9tZ2FfdGV4dHVyZV9y ZWdzX3QgdGV4X3N0YXRlWzJdOworCXVuc2lnbmVkIGludCB3YXJwX3BpcGU7CisJdW5zaWduZWQg aW50IGRpcnR5OworCXVuc2lnbmVkIGludCB2ZXJ0c2l6ZTsKKworCS8qIFRoZSBjdXJyZW50IGNs aXByZWN0cywgb3IgYSBzdWJzZXQgdGhlcmVvZi4KKwkgKi8KKwlzdHJ1Y3QgZHJtX2NsaXBfcmVj dCBib3hlc1tNR0FfTlJfU0FSRUFfQ0xJUFJFQ1RTXTsKKwl1bnNpZ25lZCBpbnQgbmJveDsKKwor CS8qIEluZm9ybWF0aW9uIGFib3V0IHRoZSBtb3N0IHJlY2VudGx5IHVzZWQgM2QgZHJhd2FibGUu ICBUaGUKKwkgKiBjbGllbnQgZmlsbHMgaW4gdGhlIHJlcV8qIGZpZWxkcywgdGhlIHNlcnZlciBm aWxscyBpbiB0aGUKKwkgKiBleHBvcnRlZF8gZmllbGRzIGFuZCBwdXRzIHRoZSBjbGlwcmVjdHMg aW50byBib3hlcywgYWJvdmUuCisJICoKKwkgKiBUaGUgY2xpZW50IGNsZWFycyB0aGUgZXhwb3J0 ZWRfZHJhd2FibGUgZmllbGQgYmVmb3JlCisJICogY2xvYmJlcmluZyB0aGUgYm94ZXMgZGF0YS4K KwkgKi8KKwl1bnNpZ25lZCBpbnQgcmVxX2RyYXdhYmxlOwkvKiB0aGUgWCBkcmF3YWJsZSBpZCAq LworCXVuc2lnbmVkIGludCByZXFfZHJhd19idWZmZXI7CS8qIE1HQV9GUk9OVCBvciBNR0FfQkFD SyAqLworCisJdW5zaWduZWQgaW50IGV4cG9ydGVkX2RyYXdhYmxlOworCXVuc2lnbmVkIGludCBl eHBvcnRlZF9pbmRleDsKKwl1bnNpZ25lZCBpbnQgZXhwb3J0ZWRfc3RhbXA7CisJdW5zaWduZWQg aW50IGV4cG9ydGVkX2J1ZmZlcnM7CisJdW5zaWduZWQgaW50IGV4cG9ydGVkX25mcm9udDsKKwl1 bnNpZ25lZCBpbnQgZXhwb3J0ZWRfbmJhY2s7CisJaW50IGV4cG9ydGVkX2JhY2tfeCwgZXhwb3J0 ZWRfZnJvbnRfeCwgZXhwb3J0ZWRfdzsKKwlpbnQgZXhwb3J0ZWRfYmFja195LCBleHBvcnRlZF9m cm9udF95LCBleHBvcnRlZF9oOworCXN0cnVjdCBkcm1fY2xpcF9yZWN0IGV4cG9ydGVkX2JveGVz W01HQV9OUl9TQVJFQV9DTElQUkVDVFNdOworCisJLyogQ291bnRlcnMgZm9yIGFnaW5nIHRleHR1 cmVzIGFuZCBmb3IgY2xpZW50LXNpZGUgdGhyb3R0bGluZy4KKwkgKi8KKwl1bnNpZ25lZCBpbnQg c3RhdHVzWzRdOworCXVuc2lnbmVkIGludCBsYXN0X3dyYXA7CisKKwlkcm1fbWdhX2FnZV90IGxh c3RfZnJhbWU7CisJdW5zaWduZWQgaW50IGxhc3RfZW5xdWV1ZTsJLyogbGFzdCB0aW1lIGEgYnVm ZmVyIHdhcyBlbnF1ZXVlZCAqLworCXVuc2lnbmVkIGludCBsYXN0X2Rpc3BhdGNoOwkvKiBhZ2Ug b2YgdGhlIG1vc3QgcmVjZW50bHkgZGlzcGF0Y2hlZCBidWZmZXIgKi8KKwl1bnNpZ25lZCBpbnQg bGFzdF9xdWllc2NlbnQ7CS8qICAqLworCisJLyogTFJVIGxpc3RzIGZvciB0ZXh0dXJlIG1lbW9y eSBpbiBhZ3Agc3BhY2UgYW5kIG9uIHRoZSBjYXJkLgorCSAqLworCXN0cnVjdCBkcm1fdGV4X3Jl Z2lvbiB0ZXhMaXN0W01HQV9OUl9URVhfSEVBUFNdW01HQV9OUl9URVhfUkVHSU9OUyArIDFdOwor CXVuc2lnbmVkIGludCB0ZXhBZ2VbTUdBX05SX1RFWF9IRUFQU107CisKKwkvKiBNZWNoYW5pc20g dG8gdmFsaWRhdGUgY2FyZCBzdGF0ZS4KKwkgKi8KKwlpbnQgY3R4T3duZXI7Cit9IGRybV9tZ2Ff c2FyZWFfdDsKKworLyogTUdBIHNwZWNpZmljIGlvY3RscworICogVGhlIGRldmljZSBzcGVjaWZp YyBpb2N0bCByYW5nZSBpcyAweDQwIHRvIDB4NzkuCisgKi8KKyNkZWZpbmUgRFJNX01HQV9JTklU ICAgICAweDAwCisjZGVmaW5lIERSTV9NR0FfRkxVU0ggICAgMHgwMQorI2RlZmluZSBEUk1fTUdB X1JFU0VUICAgIDB4MDIKKyNkZWZpbmUgRFJNX01HQV9TV0FQICAgICAweDAzCisjZGVmaW5lIERS TV9NR0FfQ0xFQVIgICAgMHgwNAorI2RlZmluZSBEUk1fTUdBX1ZFUlRFWCAgIDB4MDUKKyNkZWZp bmUgRFJNX01HQV9JTkRJQ0VTICAweDA2CisjZGVmaW5lIERSTV9NR0FfSUxPQUQgICAgMHgwNwor I2RlZmluZSBEUk1fTUdBX0JMSVQgICAgIDB4MDgKKyNkZWZpbmUgRFJNX01HQV9HRVRQQVJBTSAw eDA5CisKKy8qIDMuMjoKKyAqIGlvY3RscyBmb3Igb3BlcmF0aW5nIG9uIGZlbmNlcy4KKyAqLwor I2RlZmluZSBEUk1fTUdBX1NFVF9GRU5DRSAgICAgIDB4MGEKKyNkZWZpbmUgRFJNX01HQV9XQUlU X0ZFTkNFICAgICAweDBiCisjZGVmaW5lIERSTV9NR0FfRE1BX0JPT1RTVFJBUCAgMHgwYworCisj ZGVmaW5lIERSTV9JT0NUTF9NR0FfSU5JVCAgICAgRFJNX0lPVyggRFJNX0NPTU1BTkRfQkFTRSAr IERSTV9NR0FfSU5JVCwgZHJtX21nYV9pbml0X3QpCisjZGVmaW5lIERSTV9JT0NUTF9NR0FfRkxV U0ggICAgRFJNX0lPVyggRFJNX0NPTU1BTkRfQkFTRSArIERSTV9NR0FfRkxVU0gsIHN0cnVjdCBk cm1fbG9jaykKKyNkZWZpbmUgRFJNX0lPQ1RMX01HQV9SRVNFVCAgICBEUk1fSU8oICBEUk1fQ09N TUFORF9CQVNFICsgRFJNX01HQV9SRVNFVCkKKyNkZWZpbmUgRFJNX0lPQ1RMX01HQV9TV0FQICAg ICBEUk1fSU8oICBEUk1fQ09NTUFORF9CQVNFICsgRFJNX01HQV9TV0FQKQorI2RlZmluZSBEUk1f SU9DVExfTUdBX0NMRUFSICAgIERSTV9JT1coIERSTV9DT01NQU5EX0JBU0UgKyBEUk1fTUdBX0NM RUFSLCBkcm1fbWdhX2NsZWFyX3QpCisjZGVmaW5lIERSTV9JT0NUTF9NR0FfVkVSVEVYICAgRFJN X0lPVyggRFJNX0NPTU1BTkRfQkFTRSArIERSTV9NR0FfVkVSVEVYLCBkcm1fbWdhX3ZlcnRleF90 KQorI2RlZmluZSBEUk1fSU9DVExfTUdBX0lORElDRVMgIERSTV9JT1coIERSTV9DT01NQU5EX0JB U0UgKyBEUk1fTUdBX0lORElDRVMsIGRybV9tZ2FfaW5kaWNlc190KQorI2RlZmluZSBEUk1fSU9D VExfTUdBX0lMT0FEICAgIERSTV9JT1coIERSTV9DT01NQU5EX0JBU0UgKyBEUk1fTUdBX0lMT0FE LCBkcm1fbWdhX2lsb2FkX3QpCisjZGVmaW5lIERSTV9JT0NUTF9NR0FfQkxJVCAgICAgRFJNX0lP VyggRFJNX0NPTU1BTkRfQkFTRSArIERSTV9NR0FfQkxJVCwgZHJtX21nYV9ibGl0X3QpCisjZGVm aW5lIERSTV9JT0NUTF9NR0FfR0VUUEFSQU0gRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERS TV9NR0FfR0VUUEFSQU0sIGRybV9tZ2FfZ2V0cGFyYW1fdCkKKyNkZWZpbmUgRFJNX0lPQ1RMX01H QV9TRVRfRkVOQ0UgICAgIERSTV9JT1coIERSTV9DT01NQU5EX0JBU0UgKyBEUk1fTUdBX1NFVF9G RU5DRSwgX191MzIpCisjZGVmaW5lIERSTV9JT0NUTF9NR0FfV0FJVF9GRU5DRSAgICBEUk1fSU9X UihEUk1fQ09NTUFORF9CQVNFICsgRFJNX01HQV9XQUlUX0ZFTkNFLCBfX3UzMikKKyNkZWZpbmUg RFJNX0lPQ1RMX01HQV9ETUFfQk9PVFNUUkFQIERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBE Uk1fTUdBX0RNQV9CT09UU1RSQVAsIGRybV9tZ2FfZG1hX2Jvb3RzdHJhcF90KQorCit0eXBlZGVm IHN0cnVjdCBfZHJtX21nYV93YXJwX2luZGV4IHsKKwlpbnQgaW5zdGFsbGVkOworCXVuc2lnbmVk IGxvbmcgcGh5c19hZGRyOworCWludCBzaXplOworfSBkcm1fbWdhX3dhcnBfaW5kZXhfdDsKKwor dHlwZWRlZiBzdHJ1Y3QgZHJtX21nYV9pbml0IHsKKwllbnVtIHsKKwkJTUdBX0lOSVRfRE1BID0g MHgwMSwKKwkJTUdBX0NMRUFOVVBfRE1BID0gMHgwMgorCX0gZnVuYzsKKworCXVuc2lnbmVkIGxv bmcgc2FyZWFfcHJpdl9vZmZzZXQ7CisKKwlpbnQgY2hpcHNldDsKKwlpbnQgc2dyYW07CisKKwl1 bnNpZ25lZCBpbnQgbWFjY2VzczsKKworCXVuc2lnbmVkIGludCBmYl9jcHA7CisJdW5zaWduZWQg aW50IGZyb250X29mZnNldCwgZnJvbnRfcGl0Y2g7CisJdW5zaWduZWQgaW50IGJhY2tfb2Zmc2V0 LCBiYWNrX3BpdGNoOworCisJdW5zaWduZWQgaW50IGRlcHRoX2NwcDsKKwl1bnNpZ25lZCBpbnQg ZGVwdGhfb2Zmc2V0LCBkZXB0aF9waXRjaDsKKworCXVuc2lnbmVkIGludCB0ZXh0dXJlX29mZnNl dFtNR0FfTlJfVEVYX0hFQVBTXTsKKwl1bnNpZ25lZCBpbnQgdGV4dHVyZV9zaXplW01HQV9OUl9U RVhfSEVBUFNdOworCisJdW5zaWduZWQgbG9uZyBmYl9vZmZzZXQ7CisJdW5zaWduZWQgbG9uZyBt bWlvX29mZnNldDsKKwl1bnNpZ25lZCBsb25nIHN0YXR1c19vZmZzZXQ7CisJdW5zaWduZWQgbG9u ZyB3YXJwX29mZnNldDsKKwl1bnNpZ25lZCBsb25nIHByaW1hcnlfb2Zmc2V0OworCXVuc2lnbmVk IGxvbmcgYnVmZmVyc19vZmZzZXQ7Cit9IGRybV9tZ2FfaW5pdF90OworCit0eXBlZGVmIHN0cnVj dCBkcm1fbWdhX2RtYV9ib290c3RyYXAgeworCS8qKgorCSAqIFxuYW1lIEFHUCB0ZXh0dXJlIHJl Z2lvbgorCSAqCisJICogT24gcmV0dXJuIGZyb20gdGhlIERSTV9NR0FfRE1BX0JPT1RTVFJBUCBp b2N0bCwgdGhlc2UgZmllbGRzIHdpbGwKKwkgKiBiZSBmaWxsZWQgaW4gd2l0aCB0aGUgYWN0dWFs IEFHUCB0ZXh0dXJlIHNldHRpbmdzLgorCSAqCisJICogXHdhcm5pbmcKKwkgKiBJZiB0aGVzZSBm aWVsZHMgYXJlIG5vbi16ZXJvLCBidXQgZG1hX21nYV9kbWFfYm9vdHN0cmFwOjphZ3BfbW9kZQor CSAqIGlzIHplcm8sIGl0IG1lYW5zIHRoYXQgUENJIG1lbW9yeSAobW9zdCBsaWtlbHkgdGhyb3Vn aCB0aGUgdXNlIG9mCisJICogYW4gSU9NTVUpIGlzIGJlaW5nIHVzZWQgZm9yICJBR1AiIHRleHR1 cmVzLgorCSAqLworCS8qQHsgKi8KKwl1bnNpZ25lZCBsb25nIHRleHR1cmVfaGFuZGxlOyAvKio8 IEhhbmRsZSB1c2VkIHRvIG1hcCBBR1AgdGV4dHVyZXMuICovCisJX191MzIgdGV4dHVyZV9zaXpl OwkgICAgICAvKio8IFNpemUgb2YgdGhlIEFHUCB0ZXh0dXJlIHJlZ2lvbi4gKi8KKwkvKkB9ICov CisKKwkvKioKKwkgKiBSZXF1ZXN0ZWQgc2l6ZSBvZiB0aGUgcHJpbWFyeSBETUEgcmVnaW9uLgor CSAqCisJICogT24gcmV0dXJuIGZyb20gdGhlIERSTV9NR0FfRE1BX0JPT1RTVFJBUCBpb2N0bCwg dGhpcyBmaWVsZCB3aWxsIGJlCisJICogZmlsbGVkIGluIHdpdGggdGhlIGFjdHVhbCBBR1AgbW9k ZS4gIElmIEFHUCB3YXMgbm90IGF2YWlsYWJsZQorCSAqLworCV9fdTMyIHByaW1hcnlfc2l6ZTsK KworCS8qKgorCSAqIFJlcXVlc3RlZCBudW1iZXIgb2Ygc2Vjb25kYXJ5IERNQSBidWZmZXJzLgor CSAqCisJICogT24gcmV0dXJuIGZyb20gdGhlIERSTV9NR0FfRE1BX0JPT1RTVFJBUCBpb2N0bCwg dGhpcyBmaWVsZCB3aWxsIGJlCisJICogZmlsbGVkIGluIHdpdGggdGhlIGFjdHVhbCBudW1iZXIg b2Ygc2Vjb25kYXJ5IERNQSBidWZmZXJzCisJICogYWxsb2NhdGVkLiAgUGFydGljdWxhcmx5IHdo ZW4gUENJIERNQSBpcyB1c2VkLCB0aGlzIG1heSBiZQorCSAqIChzdWJ0YW50aWFsbHkpIGxlc3Mg dGhhbiB0aGUgbnVtYmVyIHJlcXVlc3RlZC4KKwkgKi8KKwlfX3UzMiBzZWNvbmRhcnlfYmluX2Nv dW50OworCisJLyoqCisJICogUmVxdWVzdGVkIHNpemUgb2YgZWFjaCBzZWNvbmRhcnkgRE1BIGJ1 ZmZlci4KKwkgKgorCSAqIFdoaWxlIHRoZSBrZXJuZWwgXGIgaXMgZnJlZSB0byByZWR1Y2UKKwkg KiBkbWFfbWdhX2RtYV9ib290c3RyYXA6OnNlY29uZGFyeV9iaW5fY291bnQsIGl0IGlzIFxiIG5v dCBhbGxvd2VkCisJICogdG8gcmVkdWNlIGRtYV9tZ2FfZG1hX2Jvb3RzdHJhcDo6c2Vjb25kYXJ5 X2Jpbl9zaXplLgorCSAqLworCV9fdTMyIHNlY29uZGFyeV9iaW5fc2l6ZTsKKworCS8qKgorCSAq IEJpdC13aXNlIG1hc2sgb2YgQUdQU1RBVDJfKiB2YWx1ZXMuICBDdXJyZW50bHkgb25seSBcYyBB R1BTVEFUMl8xWCwKKwkgKiBcYyBBR1BTVEFUMl8yWCwgYW5kIFxjIEFHUFNUQVQyXzRYIGFyZSBz dXBwb3J0ZWQuICBJZiB0aGlzIHZhbHVlIGlzCisJICogemVybywgaXQgbWVhbnMgdGhhdCBQQ0kg RE1BIHNob3VsZCBiZSB1c2VkLCBldmVuIGlmIEFHUCBpcworCSAqIHBvc3NpYmxlLgorCSAqCisJ ICogT24gcmV0dXJuIGZyb20gdGhlIERSTV9NR0FfRE1BX0JPT1RTVFJBUCBpb2N0bCwgdGhpcyBm aWVsZCB3aWxsIGJlCisJICogZmlsbGVkIGluIHdpdGggdGhlIGFjdHVhbCBBR1AgbW9kZS4gIElm IEFHUCB3YXMgbm90IGF2YWlsYWJsZQorCSAqIChpLmUuLCBQQ0kgRE1BIHdhcyB1c2VkKSwgdGhp cyB2YWx1ZSB3aWxsIGJlIHplcm8uCisJICovCisJX191MzIgYWdwX21vZGU7CisKKwkvKioKKwkg KiBEZXNpcmVkIEFHUCBHQVJUIHNpemUsIG1lYXN1cmVkIGluIG1lZ2FieXRlcy4KKwkgKi8KKwlf X3U4IGFncF9zaXplOworfSBkcm1fbWdhX2RtYV9ib290c3RyYXBfdDsKKwordHlwZWRlZiBzdHJ1 Y3QgZHJtX21nYV9jbGVhciB7CisJdW5zaWduZWQgaW50IGZsYWdzOworCXVuc2lnbmVkIGludCBj bGVhcl9jb2xvcjsKKwl1bnNpZ25lZCBpbnQgY2xlYXJfZGVwdGg7CisJdW5zaWduZWQgaW50IGNv bG9yX21hc2s7CisJdW5zaWduZWQgaW50IGRlcHRoX21hc2s7Cit9IGRybV9tZ2FfY2xlYXJfdDsK KwordHlwZWRlZiBzdHJ1Y3QgZHJtX21nYV92ZXJ0ZXggeworCWludCBpZHg7CQkvKiBidWZmZXIg dG8gcXVldWUgKi8KKwlpbnQgdXNlZDsJCS8qIGJ5dGVzIGluIHVzZSAqLworCWludCBkaXNjYXJk OwkJLyogY2xpZW50IGZpbmlzaGVkIHdpdGggYnVmZmVyPyAgKi8KK30gZHJtX21nYV92ZXJ0ZXhf dDsKKwordHlwZWRlZiBzdHJ1Y3QgZHJtX21nYV9pbmRpY2VzIHsKKwlpbnQgaWR4OwkJLyogYnVm ZmVyIHRvIHF1ZXVlICovCisJdW5zaWduZWQgaW50IHN0YXJ0OworCXVuc2lnbmVkIGludCBlbmQ7 CisJaW50IGRpc2NhcmQ7CQkvKiBjbGllbnQgZmluaXNoZWQgd2l0aCBidWZmZXI/ICAqLworfSBk cm1fbWdhX2luZGljZXNfdDsKKwordHlwZWRlZiBzdHJ1Y3QgZHJtX21nYV9pbG9hZCB7CisJaW50 IGlkeDsKKwl1bnNpZ25lZCBpbnQgZHN0b3JnOworCXVuc2lnbmVkIGludCBsZW5ndGg7Cit9IGRy bV9tZ2FfaWxvYWRfdDsKKwordHlwZWRlZiBzdHJ1Y3QgX2RybV9tZ2FfYmxpdCB7CisJdW5zaWdu ZWQgaW50IHBsYW5lbWFzazsKKwl1bnNpZ25lZCBpbnQgc3Jjb3JnOworCXVuc2lnbmVkIGludCBk c3Rvcmc7CisJaW50IHNyY19waXRjaCwgZHN0X3BpdGNoOworCWludCBkZWx0YV9zeCwgZGVsdGFf c3k7CisJaW50IGRlbHRhX2R4LCBkZWx0YV9keTsKKwlpbnQgaGVpZ2h0LCB5ZGlyOwkvKiBmbGlw IGltYWdlIHZlcnRpY2FsbHkgKi8KKwlpbnQgc291cmNlX3BpdGNoLCBkZXN0X3BpdGNoOworfSBk cm1fbWdhX2JsaXRfdDsKKworLyogMy4xOiBBbiBpb2N0bCB0byBnZXQgcGFyYW1ldGVycyB0aGF0 IGFyZW4ndCBhdmFpbGFibGUgdG8gdGhlIDNkCisgKiBjbGllbnQgYW55IG90aGVyIHdheS4KKyAq LworI2RlZmluZSBNR0FfUEFSQU1fSVJRX05SICAgICAgICAgICAgMQorCisvKiAzLjI6IFF1ZXJ5 IHRoZSBhY3R1YWwgY2FyZCB0eXBlLiAgVGhlIEREWCBvbmx5IGRpc3Rpbmd1aXNoZXMgYmV0d2Vl bgorICogRzIwMCBjaGlwcyBhbmQgbm9uLUcyMDAgY2hpcHMsIHdoaWNoIGl0IGNhbGxzIEc0MDAu ICBJdCB0dXJucyBvdXQgdGhhdAorICogdGhlcmUgYXJlIHNvbWUgdmVyeSBzdWJsdGUgZGlmZmVy ZW5jZXMgYmV0d2VlbiB0aGUgRzR4MCBjaGlwcyBhbmQgdGhlIEc1NTAKKyAqIGNoaXBzLiAgVXNp bmcgdGhpcyBwYXJhbWV0ZXIgcXVlcnksIGEgY2xpZW50LXNpZGUgZHJpdmVyIGNhbiBkZXRlY3Qg dGhlCisgKiBkaWZmZXJlbmNlIGJldHdlZW4gYSBHNHgwIGFuZCBhIEc1NTAuCisgKi8KKyNkZWZp bmUgTUdBX1BBUkFNX0NBUkRfVFlQRSAgICAgICAgIDIKKwordHlwZWRlZiBzdHJ1Y3QgZHJtX21n YV9nZXRwYXJhbSB7CisJaW50IHBhcmFtOworCXZvaWQgKnZhbHVlOworfSBkcm1fbWdhX2dldHBh cmFtX3Q7CisKKyNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQorfQorI2VuZGlmCisKKyNlbmRpZgpk aWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0tdWFwaS9tc21fZHJtLmggYi9pbmNsdWRlL2RybS11YXBp L21zbV9kcm0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmJiYmFm ZmFkNzcyZAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvZHJtLXVhcGkvbXNtX2RybS5oCkBA IC0wLDAgKzEsMzA2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZCBIYXQKKyAqIEF1 dGhvcjogUm9iIENsYXJrIDxyb2JkY2xhcmtAZ21haWwuY29tPgorICoKKyAqIFBlcm1pc3Npb24g aXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmlu ZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlv biBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0 aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJp Z2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1 YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8g cGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBk byBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFi b3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGlu ZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVz IG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhF IFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJ TkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8g VEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisg KiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJ TSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBP RiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKyAqIE9VVCBPRiBP UiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVB TElOR1MgSU4gVEhFCisgKiBTT0ZUV0FSRS4KKyAqLworCisjaWZuZGVmIF9fTVNNX0RSTV9IX18K KyNkZWZpbmUgX19NU01fRFJNX0hfXworCisjaW5jbHVkZSAiZHJtLmgiCisKKyNpZiBkZWZpbmVk KF9fY3BsdXNwbHVzKQorZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyogUGxlYXNlIG5vdGUgdGhh dCBtb2RpZmljYXRpb25zIHRvIGFsbCBzdHJ1Y3RzIGRlZmluZWQgaGVyZSBhcmUKKyAqIHN1Ympl Y3QgdG8gYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgY29uc3RyYWludHM6CisgKiAgMSkgRG8gbm90 IHVzZSBwb2ludGVycywgdXNlIF9fdTY0IGluc3RlYWQgZm9yIDMyIGJpdCAvIDY0IGJpdAorICog ICAgIHVzZXIva2VybmVsIGNvbXBhdGliaWxpdHkKKyAqICAyKSBLZWVwIGZpZWxkcyBhbGlnbmVk IHRvIHRoZWlyIHNpemUKKyAqICAzKSBCZWNhdXNlIG9mIGhvdyBkcm1faW9jdGwoKSB3b3Jrcywg d2UgY2FuIGFkZCBuZXcgZmllbGRzIGF0CisgKiAgICAgdGhlIGVuZCBvZiBhbiBpb2N0bCBpZiBz b21lIGNhcmUgaXMgdGFrZW46IGRybV9pb2N0bCgpIHdpbGwKKyAqICAgICB6ZXJvIG91dCB0aGUg bmV3IGZpZWxkcyBhdCB0aGUgdGFpbCBvZiB0aGUgaW9jdGwsIHNvIGEgemVybworICogICAgIHZh bHVlIHNob3VsZCBoYXZlIGEgYmFja3dhcmRzIGNvbXBhdGlibGUgbWVhbmluZy4gIEFuZCBmb3IK KyAqICAgICBvdXRwdXQgcGFyYW1zLCB1c2Vyc3BhY2Ugd29uJ3Qgc2VlIHRoZSBuZXdseSBhZGRl ZCBvdXRwdXQKKyAqICAgICBmaWVsZHMuLiBzbyB0aGF0IGhhcyB0byBiZSBzb21laG93IG9rLgor ICovCisKKyNkZWZpbmUgTVNNX1BJUEVfTk9ORSAgICAgICAgMHgwMAorI2RlZmluZSBNU01fUElQ RV8yRDAgICAgICAgICAweDAxCisjZGVmaW5lIE1TTV9QSVBFXzJEMSAgICAgICAgIDB4MDIKKyNk ZWZpbmUgTVNNX1BJUEVfM0QwICAgICAgICAgMHgxMAorCisvKiBUaGUgcGlwZS1pZCBqdXN0IHVz ZXMgdGhlIGxvd2VyIGJpdHMsIHNvIGNhbiBiZSBPUidkIHdpdGggZmxhZ3MgaW4KKyAqIHRoZSB1 cHBlciAxNiBiaXRzICh3aGljaCBjb3VsZCBiZSBleHRlbmRlZCBmdXJ0aGVyLCBpZiBuZWVkZWQs IG1heWJlCisgKiB3ZSBleHRlbmQvb3ZlcmxvYWQgdGhlIHBpcGUtaWQgc29tZSBkYXkgdG8gZGVh bCB3aXRoIG11bHRpcGxlIHJpbmdzLAorICogYnV0IGV2ZW4gdGhlbiBJIGRvbid0IHRoaW5rIHdl IG5lZWQgdGhlIGZ1bGwgbG93ZXIgMTYgYml0cykuCisgKi8KKyNkZWZpbmUgTVNNX1BJUEVfSURf TUFTSyAgICAgMHhmZmZmCisjZGVmaW5lIE1TTV9QSVBFX0lEKHgpICAgICAgICgoeCkgJiBNU01f UElQRV9JRF9NQVNLKQorI2RlZmluZSBNU01fUElQRV9GTEFHUyh4KSAgICAoKHgpICYgfk1TTV9Q SVBFX0lEX01BU0spCisKKy8qIHRpbWVvdXRzIGFyZSBzcGVjaWZpZWQgaW4gY2xvY2stbW9ub3Rv bmljIGFic29sdXRlIHRpbWVzICh0byBzaW1wbGlmeQorICogcmVzdGFydGluZyBpbnRlcnJ1cHRl ZCBpb2N0bHMpLiAgVGhlIGZvbGxvd2luZyBzdHJ1Y3QgaXMgbG9naWNhbGx5IHRoZQorICogc2Ft ZSBhcyAnc3RydWN0IHRpbWVzcGVjJyBidXQgMzIvNjRiIEFCSSBzYWZlLgorICovCitzdHJ1Y3Qg ZHJtX21zbV90aW1lc3BlYyB7CisJX19zNjQgdHZfc2VjOyAgICAgICAgICAvKiBzZWNvbmRzICov CisJX19zNjQgdHZfbnNlYzsgICAgICAgICAvKiBuYW5vc2Vjb25kcyAqLworfTsKKworI2RlZmlu ZSBNU01fUEFSQU1fR1BVX0lEICAgICAweDAxCisjZGVmaW5lIE1TTV9QQVJBTV9HTUVNX1NJWkUg IDB4MDIKKyNkZWZpbmUgTVNNX1BBUkFNX0NISVBfSUQgICAgMHgwMworI2RlZmluZSBNU01fUEFS QU1fTUFYX0ZSRVEgICAweDA0CisjZGVmaW5lIE1TTV9QQVJBTV9USU1FU1RBTVAgIDB4MDUKKyNk ZWZpbmUgTVNNX1BBUkFNX0dNRU1fQkFTRSAgMHgwNgorI2RlZmluZSBNU01fUEFSQU1fTlJfUklO R1MgICAweDA3CisKK3N0cnVjdCBkcm1fbXNtX3BhcmFtIHsKKwlfX3UzMiBwaXBlOyAgICAgICAg ICAgLyogaW4sIE1TTV9QSVBFX3ggKi8KKwlfX3UzMiBwYXJhbTsgICAgICAgICAgLyogaW4sIE1T TV9QQVJBTV94ICovCisJX191NjQgdmFsdWU7ICAgICAgICAgIC8qIG91dCAoZ2V0X3BhcmFtKSBv ciBpbiAoc2V0X3BhcmFtKSAqLworfTsKKworLyoKKyAqIEdFTSBidWZmZXJzOgorICovCisKKyNk ZWZpbmUgTVNNX0JPX1NDQU5PVVQgICAgICAgMHgwMDAwMDAwMSAgICAgLyogc2Nhbm91dCBjYXBh YmxlICovCisjZGVmaW5lIE1TTV9CT19HUFVfUkVBRE9OTFkgIDB4MDAwMDAwMDIKKyNkZWZpbmUg TVNNX0JPX0NBQ0hFX01BU0sgICAgMHgwMDBmMDAwMAorLyogY2FjaGUgbW9kZXMgKi8KKyNkZWZp bmUgTVNNX0JPX0NBQ0hFRCAgICAgICAgMHgwMDAxMDAwMAorI2RlZmluZSBNU01fQk9fV0MgICAg ICAgICAgICAweDAwMDIwMDAwCisjZGVmaW5lIE1TTV9CT19VTkNBQ0hFRCAgICAgIDB4MDAwNDAw MDAKKworI2RlZmluZSBNU01fQk9fRkxBR1MgICAgICAgICAoTVNNX0JPX1NDQU5PVVQgfCBcCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNU01fQk9fR1BVX1JFQURPTkxZIHwgXAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTVNNX0JPX0NBQ0hFRCB8IFwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE1TTV9CT19XQyB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE1TTV9CT19VTkNBQ0hFRCkKKworc3RydWN0IGRybV9tc21fZ2VtX25ldyB7CisJX191 NjQgc2l6ZTsgICAgICAgICAgIC8qIGluICovCisJX191MzIgZmxhZ3M7ICAgICAgICAgIC8qIGlu LCBtYXNrIG9mIE1TTV9CT194ICovCisJX191MzIgaGFuZGxlOyAgICAgICAgIC8qIG91dCAqLwor fTsKKworI2RlZmluZSBNU01fSU5GT19JT1ZBCTB4MDEKKworI2RlZmluZSBNU01fSU5GT19GTEFH UyAoTVNNX0lORk9fSU9WQSkKKworc3RydWN0IGRybV9tc21fZ2VtX2luZm8geworCV9fdTMyIGhh bmRsZTsgICAgICAgICAvKiBpbiAqLworCV9fdTMyIGZsYWdzOwkgICAgICAvKiBpbiAtIGNvbWJp bmF0aW9uIG9mIE1TTV9JTkZPXyogZmxhZ3MgKi8KKwlfX3U2NCBvZmZzZXQ7ICAgICAgICAgLyog b3V0LCBtbWFwKCkgb2Zmc2V0IG9yIGlvdmEgKi8KK307CisKKyNkZWZpbmUgTVNNX1BSRVBfUkVB RCAgICAgICAgMHgwMQorI2RlZmluZSBNU01fUFJFUF9XUklURSAgICAgICAweDAyCisjZGVmaW5l IE1TTV9QUkVQX05PU1lOQyAgICAgIDB4MDQKKworI2RlZmluZSBNU01fUFJFUF9GTEFHUyAgICAg ICAoTVNNX1BSRVBfUkVBRCB8IE1TTV9QUkVQX1dSSVRFIHwgTVNNX1BSRVBfTk9TWU5DKQorCitz dHJ1Y3QgZHJtX21zbV9nZW1fY3B1X3ByZXAgeworCV9fdTMyIGhhbmRsZTsgICAgICAgICAvKiBp biAqLworCV9fdTMyIG9wOyAgICAgICAgICAgICAvKiBpbiwgbWFzayBvZiBNU01fUFJFUF94ICov CisJc3RydWN0IGRybV9tc21fdGltZXNwZWMgdGltZW91dDsgICAvKiBpbiAqLworfTsKKworc3Ry dWN0IGRybV9tc21fZ2VtX2NwdV9maW5pIHsKKwlfX3UzMiBoYW5kbGU7ICAgICAgICAgLyogaW4g Ki8KK307CisKKy8qCisgKiBDbWRzdHJlYW0gU3VibWlzc2lvbjoKKyAqLworCisvKiBUaGUgdmFs dWUgd3JpdHRlbiBpbnRvIHRoZSBjbWRzdHJlYW0gaXMgbG9naWNhbGx5OgorICoKKyAqICAgKChy ZWxvY2J1Zi0+Z3B1YWRkciArIHJlbG9jX29mZnNldCkgPDwgc2hpZnQpIHwgb3IKKyAqCisgKiBX aGVuIHdlIGhhdmUgR1BVJ3Mgdy8gPjMyYml0IHB0cnMsIGl0IHNob3VsZCBiZSBwb3NzaWJsZSB0 byBkZWFsCisgKiB3aXRoIHRoaXMgYnkgZW1pdCdpbmcgdHdvIHJlbG9jIGVudHJpZXMgd2l0aCBh cHByb3ByaWF0ZSBzaGlmdAorICogdmFsdWVzLiAgT3IgYSBuZXcgTVNNX1NVQk1JVF9DTURfeCB0 eXBlIHdvdWxkIGFsc28gYmUgYW4gb3B0aW9uLgorICoKKyAqIE5PVEUgdGhhdCByZWxvYydzIG11 c3QgYmUgc29ydGVkIGJ5IG9yZGVyIG9mIGluY3JlYXNpbmcgc3VibWl0X29mZnNldCwKKyAqIG90 aGVyd2lzZSBFSU5WQUwuCisgKi8KK3N0cnVjdCBkcm1fbXNtX2dlbV9zdWJtaXRfcmVsb2Mgewor CV9fdTMyIHN1Ym1pdF9vZmZzZXQ7ICAvKiBpbiwgb2Zmc2V0IGZyb20gc3VibWl0X2JvICovCisJ X191MzIgb3I7ICAgICAgICAgICAgIC8qIGluLCB2YWx1ZSBPUidkIHdpdGggcmVzdWx0ICovCisJ X19zMzIgc2hpZnQ7ICAgICAgICAgIC8qIGluLCBhbW91bnQgb2YgbGVmdCBzaGlmdCAoY2FuIGJl IG5lZ2F0aXZlKSAqLworCV9fdTMyIHJlbG9jX2lkeDsgICAgICAvKiBpbiwgaW5kZXggb2YgcmVs b2NfYm8gYnVmZmVyICovCisJX191NjQgcmVsb2Nfb2Zmc2V0OyAgIC8qIGluLCBvZmZzZXQgZnJv bSBzdGFydCBvZiByZWxvY19ibyAqLworfTsKKworLyogc3VibWl0LXR5cGVzOgorICogICBCVUYg LSB0aGlzIGNtZCBidWZmZXIgaXMgZXhlY3V0ZWQgbm9ybWFsbHkuCisgKiAgIElCX1RBUkdFVF9C VUYgLSB0aGlzIGNtZCBidWZmZXIgaXMgYW4gSUIgdGFyZ2V0LiAgUmVsb2MncyBhcmUKKyAqICAg ICAgcHJvY2Vzc2VkIG5vcm1hbGx5LCBidXQgdGhlIGtlcm5lbCBkb2VzIG5vdCBzZXR1cCBhbiBJ QiB0bworICogICAgICB0aGlzIGJ1ZmZlciBpbiB0aGUgZmlyc3QtbGV2ZWwgcmluZ2J1ZmZlcgor ICogICBDVFhfUkVTVE9SRV9CVUYgLSBvbmx5IGV4ZWN1dGVkIGlmIHRoZXJlIGhhcyBiZWVuIGEg R1BVIGNvbnRleHQKKyAqICAgICAgc3dpdGNoIHNpbmNlIHRoZSBsYXN0IFNVQk1JVCBpb2N0bAor ICovCisjZGVmaW5lIE1TTV9TVUJNSVRfQ01EX0JVRiAgICAgICAgICAgICAweDAwMDEKKyNkZWZp bmUgTVNNX1NVQk1JVF9DTURfSUJfVEFSR0VUX0JVRiAgIDB4MDAwMgorI2RlZmluZSBNU01fU1VC TUlUX0NNRF9DVFhfUkVTVE9SRV9CVUYgMHgwMDAzCitzdHJ1Y3QgZHJtX21zbV9nZW1fc3VibWl0 X2NtZCB7CisJX191MzIgdHlwZTsgICAgICAgICAgIC8qIGluLCBvbmUgb2YgTVNNX1NVQk1JVF9D TURfeCAqLworCV9fdTMyIHN1Ym1pdF9pZHg7ICAgICAvKiBpbiwgaW5kZXggb2Ygc3VibWl0X2Jv IGNtZHN0cmVhbSBidWZmZXIgKi8KKwlfX3UzMiBzdWJtaXRfb2Zmc2V0OyAgLyogaW4sIG9mZnNl dCBpbnRvIHN1Ym1pdF9ibyAqLworCV9fdTMyIHNpemU7ICAgICAgICAgICAvKiBpbiwgY21kc3Ry ZWFtIHNpemUgKi8KKwlfX3UzMiBwYWQ7CisJX191MzIgbnJfcmVsb2NzOyAgICAgIC8qIGluLCBu dW1iZXIgb2Ygc3VibWl0X3JlbG9jJ3MgKi8KKwlfX3U2NCByZWxvY3M7ICAgICAgICAgLyogaW4s IHB0ciB0byBhcnJheSBvZiBzdWJtaXRfcmVsb2MncyAqLworfTsKKworLyogRWFjaCBidWZmZXIg cmVmZXJlbmNlZCBlbHNld2hlcmUgaW4gdGhlIGNtZHN0cmVhbSBzdWJtaXQgKGllLiB0aGUKKyAq IGNtZHN0cmVhbSBidWZmZXIocykgdGhlbXNlbHZlcyBvciByZWxvYyBlbnRyaWVzKSBoYXMgb25l IChhbmQgb25seQorICogb25lKSBlbnRyeSBpbiB0aGUgc3VibWl0LT5ib3NbXSB0YWJsZS4KKyAq CisgKiBBcyBhIG9wdGltaXphdGlvbiwgdGhlIGN1cnJlbnQgYnVmZmVyIChncHUgdmlydHVhbCBh ZGRyZXNzKSBjYW4gYmUKKyAqIHBhc3NlZCBiYWNrIHRocm91Z2ggdGhlICdwcmVzdW1lZCcgZmll bGQuICBJZiBvbiBhIHN1YnNlcXVlbnQgcmVsb2MsCisgKiB1c2Vyc3BhY2UgcGFzc2VzIGJhY2sg YSAncHJlc3VtZWQnIGFkZHJlc3MgdGhhdCBpcyBzdGlsbCB2YWxpZCwKKyAqIHRoZW4gcGF0Y2hp bmcgdGhlIGNtZHN0cmVhbSBmb3IgdGhpcyBlbnRyeSBpcyBza2lwcGVkLiAgVGhpcyBjYW4KKyAq IGF2b2lkIGtlcm5lbCBuZWVkaW5nIHRvIG1hcC9hY2Nlc3MgdGhlIGNtZHN0cmVhbSBibyBpbiB0 aGUgY29tbW9uCisgKiBjYXNlLgorICovCisjZGVmaW5lIE1TTV9TVUJNSVRfQk9fUkVBRCAgICAg ICAgICAgICAweDAwMDEKKyNkZWZpbmUgTVNNX1NVQk1JVF9CT19XUklURSAgICAgICAgICAgIDB4 MDAwMgorCisjZGVmaW5lIE1TTV9TVUJNSVRfQk9fRkxBR1MgICAgICAgICAgICAoTVNNX1NVQk1J VF9CT19SRUFEIHwgTVNNX1NVQk1JVF9CT19XUklURSkKKworc3RydWN0IGRybV9tc21fZ2VtX3N1 Ym1pdF9ibyB7CisJX191MzIgZmxhZ3M7ICAgICAgICAgIC8qIGluLCBtYXNrIG9mIE1TTV9TVUJN SVRfQk9feCAqLworCV9fdTMyIGhhbmRsZTsgICAgICAgICAvKiBpbiwgR0VNIGhhbmRsZSAqLwor CV9fdTY0IHByZXN1bWVkOyAgICAgICAvKiBpbi9vdXQsIHByZXN1bWVkIGJ1ZmZlciBhZGRyZXNz ICovCit9OworCisvKiBWYWxpZCBzdWJtaXQgaW9jdGwgZmxhZ3M6ICovCisjZGVmaW5lIE1TTV9T VUJNSVRfTk9fSU1QTElDSVQgICAweDgwMDAwMDAwIC8qIGRpc2FibGUgaW1wbGljaXQgc3luYyAq LworI2RlZmluZSBNU01fU1VCTUlUX0ZFTkNFX0ZEX0lOICAgMHg0MDAwMDAwMCAvKiBlbmFibGUg aW5wdXQgZmVuY2VfZmQgKi8KKyNkZWZpbmUgTVNNX1NVQk1JVF9GRU5DRV9GRF9PVVQgIDB4MjAw MDAwMDAgLyogZW5hYmxlIG91dHB1dCBmZW5jZV9mZCAqLworI2RlZmluZSBNU01fU1VCTUlUX0ZM QUdTICAgICAgICAgICAgICAgICggXAorCQlNU01fU1VCTUlUX05PX0lNUExJQ0lUICAgfCBcCisJ CU1TTV9TVUJNSVRfRkVOQ0VfRkRfSU4gICB8IFwKKwkJTVNNX1NVQk1JVF9GRU5DRV9GRF9PVVQg IHwgXAorCQkwKQorCisvKiBFYWNoIGNtZHN0cmVhbSBzdWJtaXQgY29uc2lzdHMgb2YgYSB0YWJs ZSBvZiBidWZmZXJzIGludm9sdmVkLCBhbmQKKyAqIG9uZSBvciBtb3JlIGNtZHN0cmVhbSBidWZm ZXJzLiAgVGhpcyBhbGxvd3MgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbgorICogKGNvbnRleHQt cmVzdG9yZSksIGFuZCBJQiBidWZmZXJzIG5lZWRlZCBmb3IgcGVyIHRpbGUvYmluIGRyYXcgY21k cy4KKyAqLworc3RydWN0IGRybV9tc21fZ2VtX3N1Ym1pdCB7CisJX191MzIgZmxhZ3M7ICAgICAg ICAgIC8qIE1TTV9QSVBFX3ggfCBNU01fU1VCTUlUX3ggKi8KKwlfX3UzMiBmZW5jZTsgICAgICAg ICAgLyogb3V0ICovCisJX191MzIgbnJfYm9zOyAgICAgICAgIC8qIGluLCBudW1iZXIgb2Ygc3Vi bWl0X2JvJ3MgKi8KKwlfX3UzMiBucl9jbWRzOyAgICAgICAgLyogaW4sIG51bWJlciBvZiBzdWJt aXRfY21kJ3MgKi8KKwlfX3U2NCBib3M7ICAgICAgICAgICAgLyogaW4sIHB0ciB0byBhcnJheSBv ZiBzdWJtaXRfYm8ncyAqLworCV9fdTY0IGNtZHM7ICAgICAgICAgICAvKiBpbiwgcHRyIHRvIGFy cmF5IG9mIHN1Ym1pdF9jbWQncyAqLworCV9fczMyIGZlbmNlX2ZkOyAgICAgICAvKiBpbi9vdXQg ZmVuY2UgZmQgKHNlZSBNU01fU1VCTUlUX0ZFTkNFX0ZEX0lOL09VVCkgKi8KKwlfX3UzMiBxdWV1 ZWlkOyAgICAgICAgIC8qIGluLCBzdWJtaXRxdWV1ZSBpZCAqLworfTsKKworLyogVGhlIG5vcm1h bCB3YXkgdG8gc3luY2hyb25pemUgd2l0aCB0aGUgR1BVIGlzIGp1c3QgdG8gQ1BVX1BSRVAgb24K KyAqIGEgYnVmZmVyIGlmIHlvdSBuZWVkIHRvIGFjY2VzcyBpdCBmcm9tIHRoZSBDUFUgKG90aGVy IGNtZHN0cmVhbQorICogc3VibWlzc2lvbiBmcm9tIHNhbWUgb3Igb3RoZXIgY29udGV4dHMsIFBB R0VfRkxJUCBpb2N0bCwgZXRjLCBhbGwKKyAqIGhhbmRsZSB0aGUgcmVxdWlyZWQgc3luY2hyb25p emF0aW9uIHVuZGVyIHRoZSBob29kKS4gIFRoaXMgaW9jdGwKKyAqIG1haW5seSBqdXN0IGV4aXN0 cyBhcyBhIHdheSB0byBpbXBsZW1lbnQgdGhlIGdhbGxpdW0gcGlwZV9mZW5jZQorICogQVBJcyB3 aXRob3V0IHJlcXVpcmluZyBhIGR1bW15IGJvIHRvIHN5bmNocm9uaXplIG9uLgorICovCitzdHJ1 Y3QgZHJtX21zbV93YWl0X2ZlbmNlIHsKKwlfX3UzMiBmZW5jZTsgICAgICAgICAgLyogaW4gKi8K KwlfX3UzMiBwYWQ7CisJc3RydWN0IGRybV9tc21fdGltZXNwZWMgdGltZW91dDsgICAvKiBpbiAq LworCV9fdTMyIHF1ZXVlaWQ7ICAgICAgICAgLyogaW4sIHN1Ym1pdHF1ZXVlIGlkICovCit9Owor CisvKiBtYWR2aXNlIHByb3ZpZGVzIGEgd2F5IHRvIHRlbGwgdGhlIGtlcm5lbCBpbiBjYXNlIGEg YnVmZmVycyBjb250ZW50cworICogY2FuIGJlIGRpc2NhcmRlZCB1bmRlciBtZW1vcnkgcHJlc3N1 cmUsIHdoaWNoIGlzIHVzZWZ1bCBmb3IgdXNlcnNwYWNlCisgKiBibyBjYWNoZSB3aGVyZSB3ZSB3 YW50IHRvIG9wdGltaXN0aWNhbGx5IGhvbGQgb24gdG8gYnVmZmVyIGFsbG9jYXRlCisgKiBhbmQg cG90ZW50aWFsIG1tYXAsIGJ1dCBhbGxvdyB0aGUgcGFnZXMgdG8gYmUgZGlzY2FyZGVkIHVuZGVy IG1lbW9yeQorICogcHJlc3N1cmUuCisgKgorICogVHlwaWNhbCB1c2FnZSB3b3VsZCBpbnZvbHZl IG1hZHZpc2UoRE9OVE5FRUQpIHdoZW4gYnVmZmVyIGVudGVycyBCTworICogY2FjaGUsIGFuZCBt YWR2aXNlKFdJTExORUVEKSBpZiB0cnlpbmcgdG8gcmVjeWNsZSBidWZmZXIgZnJvbSBCTyBjYWNo ZS4KKyAqIEluIHRoZSBXSUxMTkVFRCBjYXNlLCAncmV0YWluZWQnIGluZGljYXRlcyB0byB1c2Vy c3BhY2Ugd2hldGhlciB0aGUKKyAqIGJhY2tpbmcgcGFnZXMgc3RpbGwgZXhpc3QuCisgKi8KKyNk ZWZpbmUgTVNNX01BRFZfV0lMTE5FRUQgMCAgICAgICAvKiBiYWNraW5nIHBhZ2VzIGFyZSBuZWVk ZWQsIHN0YXR1cyByZXR1cm5lZCBpbiAncmV0YWluZWQnICovCisjZGVmaW5lIE1TTV9NQURWX0RP TlRORUVEIDEgICAgICAgLyogYmFja2luZyBwYWdlcyBub3QgbmVlZGVkICovCisjZGVmaW5lIF9f TVNNX01BRFZfUFVSR0VEIDIgICAgICAgLyogaW50ZXJuYWwgc3RhdGUgKi8KKworc3RydWN0IGRy bV9tc21fZ2VtX21hZHZpc2UgeworCV9fdTMyIGhhbmRsZTsgICAgICAgICAvKiBpbiwgR0VNIGhh bmRsZSAqLworCV9fdTMyIG1hZHY7ICAgICAgICAgICAvKiBpbiwgTVNNX01BRFZfeCAqLworCV9f dTMyIHJldGFpbmVkOyAgICAgICAvKiBvdXQsIHdoZXRoZXIgYmFja2luZyBzdG9yZSBzdGlsbCBl eGlzdHMgKi8KK307CisKKy8qCisgKiBEcmF3IHF1ZXVlcyBhbGxvdyB0aGUgdXNlciB0byBzZXQg c3BlY2lmaWMgc3VibWlzc2lvbiBwYXJhbWV0ZXIuIENvbW1hbmQKKyAqIHN1Ym1pc3Npb25zIHNw ZWNpZnkgYSBzcGVjaWZpYyBzdWJtaXRxdWV1ZSB0byB1c2UuICBJRCAwIGlzIHJlc2VydmVkIGZv cgorICogYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgYXMgYSAiZGVmYXVsdCIgc3VibWl0cXVldWUK KyAqLworCisjZGVmaW5lIE1TTV9TVUJNSVRRVUVVRV9GTEFHUyAoMCkKKworc3RydWN0IGRybV9t c21fc3VibWl0cXVldWUgeworCV9fdTMyIGZsYWdzOyAgIC8qIGluLCBNU01fU1VCTUlUUVVFVUVf eCAqLworCV9fdTMyIHByaW87ICAgIC8qIGluLCBQcmlvcml0eSBsZXZlbCAqLworCV9fdTMyIGlk OyAgICAgIC8qIG91dCwgaWRlbnRpZmllciAqLworfTsKKworI2RlZmluZSBEUk1fTVNNX0dFVF9Q QVJBTSAgICAgICAgICAgICAgMHgwMAorLyogcGxhY2Vob2xkZXI6CisjZGVmaW5lIERSTV9NU01f U0VUX1BBUkFNICAgICAgICAgICAgICAweDAxCisgKi8KKyNkZWZpbmUgRFJNX01TTV9HRU1fTkVX ICAgICAgICAgICAgICAgIDB4MDIKKyNkZWZpbmUgRFJNX01TTV9HRU1fSU5GTyAgICAgICAgICAg ICAgIDB4MDMKKyNkZWZpbmUgRFJNX01TTV9HRU1fQ1BVX1BSRVAgICAgICAgICAgIDB4MDQKKyNk ZWZpbmUgRFJNX01TTV9HRU1fQ1BVX0ZJTkkgICAgICAgICAgIDB4MDUKKyNkZWZpbmUgRFJNX01T TV9HRU1fU1VCTUlUICAgICAgICAgICAgIDB4MDYKKyNkZWZpbmUgRFJNX01TTV9XQUlUX0ZFTkNF ICAgICAgICAgICAgIDB4MDcKKyNkZWZpbmUgRFJNX01TTV9HRU1fTUFEVklTRSAgICAgICAgICAg IDB4MDgKKy8qIHBsYWNlaG9sZGVyOgorI2RlZmluZSBEUk1fTVNNX0dFTV9TVk1fTkVXICAgICAg ICAgICAgMHgwOQorICovCisjZGVmaW5lIERSTV9NU01fU1VCTUlUUVVFVUVfTkVXICAgICAgICAw eDBBCisjZGVmaW5lIERSTV9NU01fU1VCTUlUUVVFVUVfQ0xPU0UgICAgICAweDBCCisKKyNkZWZp bmUgRFJNX0lPQ1RMX01TTV9HRVRfUEFSQU0gICAgICAgIERSTV9JT1dSKERSTV9DT01NQU5EX0JB U0UgKyBEUk1fTVNNX0dFVF9QQVJBTSwgc3RydWN0IGRybV9tc21fcGFyYW0pCisjZGVmaW5lIERS TV9JT0NUTF9NU01fR0VNX05FVyAgICAgICAgICBEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsg RFJNX01TTV9HRU1fTkVXLCBzdHJ1Y3QgZHJtX21zbV9nZW1fbmV3KQorI2RlZmluZSBEUk1fSU9D VExfTVNNX0dFTV9JTkZPICAgICAgICAgRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9N U01fR0VNX0lORk8sIHN0cnVjdCBkcm1fbXNtX2dlbV9pbmZvKQorI2RlZmluZSBEUk1fSU9DVExf TVNNX0dFTV9DUFVfUFJFUCAgICAgRFJNX0lPVyAoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9NU01f R0VNX0NQVV9QUkVQLCBzdHJ1Y3QgZHJtX21zbV9nZW1fY3B1X3ByZXApCisjZGVmaW5lIERSTV9J T0NUTF9NU01fR0VNX0NQVV9GSU5JICAgICBEUk1fSU9XIChEUk1fQ09NTUFORF9CQVNFICsgRFJN X01TTV9HRU1fQ1BVX0ZJTkksIHN0cnVjdCBkcm1fbXNtX2dlbV9jcHVfZmluaSkKKyNkZWZpbmUg RFJNX0lPQ1RMX01TTV9HRU1fU1VCTUlUICAgICAgIERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0Ug KyBEUk1fTVNNX0dFTV9TVUJNSVQsIHN0cnVjdCBkcm1fbXNtX2dlbV9zdWJtaXQpCisjZGVmaW5l IERSTV9JT0NUTF9NU01fV0FJVF9GRU5DRSAgICAgICBEUk1fSU9XIChEUk1fQ09NTUFORF9CQVNF ICsgRFJNX01TTV9XQUlUX0ZFTkNFLCBzdHJ1Y3QgZHJtX21zbV93YWl0X2ZlbmNlKQorI2RlZmlu ZSBEUk1fSU9DVExfTVNNX0dFTV9NQURWSVNFICAgICAgRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFT RSArIERSTV9NU01fR0VNX01BRFZJU0UsIHN0cnVjdCBkcm1fbXNtX2dlbV9tYWR2aXNlKQorI2Rl ZmluZSBEUk1fSU9DVExfTVNNX1NVQk1JVFFVRVVFX05FVyAgICBEUk1fSU9XUihEUk1fQ09NTUFO RF9CQVNFICsgRFJNX01TTV9TVUJNSVRRVUVVRV9ORVcsIHN0cnVjdCBkcm1fbXNtX3N1Ym1pdHF1 ZXVlKQorI2RlZmluZSBEUk1fSU9DVExfTVNNX1NVQk1JVFFVRVVFX0NMT1NFICBEUk1fSU9XIChE Uk1fQ09NTUFORF9CQVNFICsgRFJNX01TTV9TVUJNSVRRVUVVRV9DTE9TRSwgX191MzIpCisKKyNp ZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQorfQorI2VuZGlmCisKKyNlbmRpZiAvKiBfX01TTV9EUk1f SF9fICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS11YXBpL25vdXZlYXVfZHJtLmggYi9pbmNs dWRlL2RybS11YXBpL25vdXZlYXVfZHJtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwLi4yNTk1ODhhNGI2MWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2RybS11 YXBpL25vdXZlYXVfZHJtLmgKQEAgLTAsMCArMSwxNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAw NSBTdGVwaGFuZSBNYXJjaGVzaW4uCisgKiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFBl cm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29u IG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9j dW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29m dHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgor ICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3Ry aWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJl LCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5p c2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgor ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ug KGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBh bGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisg KgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkg T0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJ TUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5U IFNIQUxMCisgKiBWQSBMSU5VWCBTWVNURU1TIEFORC9PUiBJVFMgU1VQUExJRVJTIEJFIExJQUJM RSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCisgKiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIg SU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKKyAqIEFSSVNJTkcg RlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVT RSBPUgorICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICovCisKKyNpZm5kZWYg X19OT1VWRUFVX0RSTV9IX18KKyNkZWZpbmUgX19OT1VWRUFVX0RSTV9IX18KKworI2RlZmluZSBE Uk1fTk9VVkVBVV9FVkVOVF9OVklGICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMHg4MDAwMDAwMAorCisjaW5jbHVkZSAiZHJtLmgiCisKKyNpZiBkZWZpbmVkKF9fY3BsdXNw bHVzKQorZXh0ZXJuICJDIiB7CisjZW5kaWYKKworI2RlZmluZSBOT1VWRUFVX0dFTV9ET01BSU5f Q1BVICAgICAgICgxIDw8IDApCisjZGVmaW5lIE5PVVZFQVVfR0VNX0RPTUFJTl9WUkFNICAgICAg KDEgPDwgMSkKKyNkZWZpbmUgTk9VVkVBVV9HRU1fRE9NQUlOX0dBUlQgICAgICAoMSA8PCAyKQor I2RlZmluZSBOT1VWRUFVX0dFTV9ET01BSU5fTUFQUEFCTEUgICgxIDw8IDMpCisjZGVmaW5lIE5P VVZFQVVfR0VNX0RPTUFJTl9DT0hFUkVOVCAgKDEgPDwgNCkKKworI2RlZmluZSBOT1VWRUFVX0dF TV9USUxFX0NPTVAgICAgICAgIDB4MDAwMzAwMDAgLyogbnY1MC1vbmx5ICovCisjZGVmaW5lIE5P VVZFQVVfR0VNX1RJTEVfTEFZT1VUX01BU0sgMHgwMDAwZmYwMAorI2RlZmluZSBOT1VWRUFVX0dF TV9USUxFXzE2QlBQICAgICAgIDB4MDAwMDAwMDEKKyNkZWZpbmUgTk9VVkVBVV9HRU1fVElMRV8z MkJQUCAgICAgICAweDAwMDAwMDAyCisjZGVmaW5lIE5PVVZFQVVfR0VNX1RJTEVfWkVUQSAgICAg ICAgMHgwMDAwMDAwNAorI2RlZmluZSBOT1VWRUFVX0dFTV9USUxFX05PTkNPTlRJRyAgIDB4MDAw MDAwMDgKKworc3RydWN0IGRybV9ub3V2ZWF1X2dlbV9pbmZvIHsKKwlfX3UzMiBoYW5kbGU7CisJ X191MzIgZG9tYWluOworCV9fdTY0IHNpemU7CisJX191NjQgb2Zmc2V0OworCV9fdTY0IG1hcF9o YW5kbGU7CisJX191MzIgdGlsZV9tb2RlOworCV9fdTMyIHRpbGVfZmxhZ3M7Cit9OworCitzdHJ1 Y3QgZHJtX25vdXZlYXVfZ2VtX25ldyB7CisJc3RydWN0IGRybV9ub3V2ZWF1X2dlbV9pbmZvIGlu Zm87CisJX191MzIgY2hhbm5lbF9oaW50OworCV9fdTMyIGFsaWduOworfTsKKworI2RlZmluZSBO T1VWRUFVX0dFTV9NQVhfQlVGRkVSUyAxMDI0CitzdHJ1Y3QgZHJtX25vdXZlYXVfZ2VtX3B1c2hi dWZfYm9fcHJlc3VtZWQgeworCV9fdTMyIHZhbGlkOworCV9fdTMyIGRvbWFpbjsKKwlfX3U2NCBv ZmZzZXQ7Cit9OworCitzdHJ1Y3QgZHJtX25vdXZlYXVfZ2VtX3B1c2hidWZfYm8geworCV9fdTY0 IHVzZXJfcHJpdjsKKwlfX3UzMiBoYW5kbGU7CisJX191MzIgcmVhZF9kb21haW5zOworCV9fdTMy IHdyaXRlX2RvbWFpbnM7CisJX191MzIgdmFsaWRfZG9tYWluczsKKwlzdHJ1Y3QgZHJtX25vdXZl YXVfZ2VtX3B1c2hidWZfYm9fcHJlc3VtZWQgcHJlc3VtZWQ7Cit9OworCisjZGVmaW5lIE5PVVZF QVVfR0VNX1JFTE9DX0xPVyAgKDEgPDwgMCkKKyNkZWZpbmUgTk9VVkVBVV9HRU1fUkVMT0NfSElH SCAoMSA8PCAxKQorI2RlZmluZSBOT1VWRUFVX0dFTV9SRUxPQ19PUiAgICgxIDw8IDIpCisjZGVm aW5lIE5PVVZFQVVfR0VNX01BWF9SRUxPQ1MgMTAyNAorc3RydWN0IGRybV9ub3V2ZWF1X2dlbV9w dXNoYnVmX3JlbG9jIHsKKwlfX3UzMiByZWxvY19ib19pbmRleDsKKwlfX3UzMiByZWxvY19ib19v ZmZzZXQ7CisJX191MzIgYm9faW5kZXg7CisJX191MzIgZmxhZ3M7CisJX191MzIgZGF0YTsKKwlf X3UzMiB2b3I7CisJX191MzIgdG9yOworfTsKKworI2RlZmluZSBOT1VWRUFVX0dFTV9NQVhfUFVT SCA1MTIKK3N0cnVjdCBkcm1fbm91dmVhdV9nZW1fcHVzaGJ1Zl9wdXNoIHsKKwlfX3UzMiBib19p bmRleDsKKwlfX3UzMiBwYWQ7CisJX191NjQgb2Zmc2V0OworCV9fdTY0IGxlbmd0aDsKK307CisK K3N0cnVjdCBkcm1fbm91dmVhdV9nZW1fcHVzaGJ1ZiB7CisJX191MzIgY2hhbm5lbDsKKwlfX3Uz MiBucl9idWZmZXJzOworCV9fdTY0IGJ1ZmZlcnM7CisJX191MzIgbnJfcmVsb2NzOworCV9fdTMy IG5yX3B1c2g7CisJX191NjQgcmVsb2NzOworCV9fdTY0IHB1c2g7CisJX191MzIgc3VmZml4MDsK KwlfX3UzMiBzdWZmaXgxOworCV9fdTY0IHZyYW1fYXZhaWxhYmxlOworCV9fdTY0IGdhcnRfYXZh aWxhYmxlOworfTsKKworI2RlZmluZSBOT1VWRUFVX0dFTV9DUFVfUFJFUF9OT1dBSVQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMQorI2RlZmluZSBOT1VWRUFVX0dF TV9DUFVfUFJFUF9XUklURSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAw MDAwNAorc3RydWN0IGRybV9ub3V2ZWF1X2dlbV9jcHVfcHJlcCB7CisJX191MzIgaGFuZGxlOwor CV9fdTMyIGZsYWdzOworfTsKKworc3RydWN0IGRybV9ub3V2ZWF1X2dlbV9jcHVfZmluaSB7CisJ X191MzIgaGFuZGxlOworfTsKKworI2RlZmluZSBEUk1fTk9VVkVBVV9HRVRQQVJBTSAgICAgICAg ICAgMHgwMCAvKiBkZXByZWNhdGVkICovCisjZGVmaW5lIERSTV9OT1VWRUFVX1NFVFBBUkFNICAg ICAgICAgICAweDAxIC8qIGRlcHJlY2F0ZWQgKi8KKyNkZWZpbmUgRFJNX05PVVZFQVVfQ0hBTk5F TF9BTExPQyAgICAgIDB4MDIgLyogZGVwcmVjYXRlZCAqLworI2RlZmluZSBEUk1fTk9VVkVBVV9D SEFOTkVMX0ZSRUUgICAgICAgMHgwMyAvKiBkZXByZWNhdGVkICovCisjZGVmaW5lIERSTV9OT1VW RUFVX0dST0JKX0FMTE9DICAgICAgICAweDA0IC8qIGRlcHJlY2F0ZWQgKi8KKyNkZWZpbmUgRFJN X05PVVZFQVVfTk9USUZJRVJPQkpfQUxMT0MgIDB4MDUgLyogZGVwcmVjYXRlZCAqLworI2RlZmlu ZSBEUk1fTk9VVkVBVV9HUFVPQkpfRlJFRSAgICAgICAgMHgwNiAvKiBkZXByZWNhdGVkICovCisj ZGVmaW5lIERSTV9OT1VWRUFVX05WSUYgICAgICAgICAgICAgICAweDA3CisjZGVmaW5lIERSTV9O T1VWRUFVX0dFTV9ORVcgICAgICAgICAgICAweDQwCisjZGVmaW5lIERSTV9OT1VWRUFVX0dFTV9Q VVNIQlVGICAgICAgICAweDQxCisjZGVmaW5lIERSTV9OT1VWRUFVX0dFTV9DUFVfUFJFUCAgICAg ICAweDQyCisjZGVmaW5lIERSTV9OT1VWRUFVX0dFTV9DUFVfRklOSSAgICAgICAweDQzCisjZGVm aW5lIERSTV9OT1VWRUFVX0dFTV9JTkZPICAgICAgICAgICAweDQ0CisKKyNkZWZpbmUgRFJNX0lP Q1RMX05PVVZFQVVfR0VNX05FVyAgICAgICAgICAgIERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0Ug KyBEUk1fTk9VVkVBVV9HRU1fTkVXLCBzdHJ1Y3QgZHJtX25vdXZlYXVfZ2VtX25ldykKKyNkZWZp bmUgRFJNX0lPQ1RMX05PVVZFQVVfR0VNX1BVU0hCVUYgICAgICAgIERSTV9JT1dSKERSTV9DT01N QU5EX0JBU0UgKyBEUk1fTk9VVkVBVV9HRU1fUFVTSEJVRiwgc3RydWN0IGRybV9ub3V2ZWF1X2dl bV9wdXNoYnVmKQorI2RlZmluZSBEUk1fSU9DVExfTk9VVkVBVV9HRU1fQ1BVX1BSRVAgICAgICAg RFJNX0lPVyAoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9OT1VWRUFVX0dFTV9DUFVfUFJFUCwgc3Ry dWN0IGRybV9ub3V2ZWF1X2dlbV9jcHVfcHJlcCkKKyNkZWZpbmUgRFJNX0lPQ1RMX05PVVZFQVVf R0VNX0NQVV9GSU5JICAgICAgIERSTV9JT1cgKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fTk9VVkVB VV9HRU1fQ1BVX0ZJTkksIHN0cnVjdCBkcm1fbm91dmVhdV9nZW1fY3B1X2ZpbmkpCisjZGVmaW5l IERSTV9JT0NUTF9OT1VWRUFVX0dFTV9JTkZPICAgICAgICAgICBEUk1fSU9XUihEUk1fQ09NTUFO RF9CQVNFICsgRFJNX05PVVZFQVVfR0VNX0lORk8sIHN0cnVjdCBkcm1fbm91dmVhdV9nZW1faW5m bykKKworI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpCit9CisjZW5kaWYKKworI2VuZGlmIC8qIF9f Tk9VVkVBVV9EUk1fSF9fICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS11YXBpL29tYXBfZHJt LmggYi9pbmNsdWRlL2RybS11YXBpL29tYXBfZHJtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwLi5mZDVlM2VhNTNmMmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRl L2RybS11YXBpL29tYXBfZHJtLmgKQEAgLTAsMCArMSwxMjUgQEAKKy8qCisgKiBpbmNsdWRlL3Vh cGkvZHJtL29tYXBfZHJtLmgKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgVGV4YXMgSW5zdHJ1 bWVudHMKKyAqIEF1dGhvcjogUm9iIENsYXJrIDxyb2JAdGkuY29tPgorICoKKyAqIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCisgKiBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKKyAqIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IKKyAqIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3 aXRoCisgKiB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uCisgKi8KKworI2lmbmRlZiBfX09NQVBfRFJNX0hfXworI2RlZmluZSBfX09NQVBf RFJNX0hfXworCisjaW5jbHVkZSAiZHJtLmgiCisKKyNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQor ZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyogUGxlYXNlIG5vdGUgdGhhdCBtb2RpZmljYXRpb25z IHRvIGFsbCBzdHJ1Y3RzIGRlZmluZWQgaGVyZSBhcmUKKyAqIHN1YmplY3QgdG8gYmFja3dhcmRz LWNvbXBhdGliaWxpdHkgY29uc3RyYWludHMuCisgKi8KKworI2RlZmluZSBPTUFQX1BBUkFNX0NI SVBTRVRfSUQJMQkvKiBpZS4gMHgzNDMwLCAweDQ0MzAsIGV0YyAqLworCitzdHJ1Y3QgZHJtX29t YXBfcGFyYW0geworCV9fdTY0IHBhcmFtOwkJCS8qIGluICovCisJX191NjQgdmFsdWU7CQkJLyog aW4gKHNldF9wYXJhbSksIG91dCAoZ2V0X3BhcmFtKSAqLworfTsKKworI2RlZmluZSBPTUFQX0JP X1NDQU5PVVQJCTB4MDAwMDAwMDEJLyogc2Nhbm91dCBjYXBhYmxlIChwaHlzIGNvbnRpZ3VvdXMp ICovCisjZGVmaW5lIE9NQVBfQk9fQ0FDSEVfTUFTSwkweDAwMDAwMDA2CS8qIGNhY2hlIHR5cGUg bWFzaywgc2VlIGNhY2hlIG1vZGVzICovCisjZGVmaW5lIE9NQVBfQk9fVElMRURfTUFTSwkweDAw MDAwZjAwCS8qIHRpbGVkIG1hcHBpbmcgbWFzaywgc2VlIHRpbGVkIG1vZGVzICovCisKKy8qIGNh Y2hlIG1vZGVzICovCisjZGVmaW5lIE9NQVBfQk9fQ0FDSEVECQkweDAwMDAwMDAwCS8qIGRlZmF1 bHQgKi8KKyNkZWZpbmUgT01BUF9CT19XQwkJMHgwMDAwMDAwMgkvKiB3cml0ZS1jb21iaW5lICov CisjZGVmaW5lIE9NQVBfQk9fVU5DQUNIRUQJMHgwMDAwMDAwNAkvKiBzdHJvbmdseS1vcmRlcmVk ICh1bmNhY2hlZCkgKi8KKworLyogdGlsZWQgbW9kZXMgKi8KKyNkZWZpbmUgT01BUF9CT19USUxF RF84CQkweDAwMDAwMTAwCisjZGVmaW5lIE9NQVBfQk9fVElMRURfMTYJMHgwMDAwMDIwMAorI2Rl ZmluZSBPTUFQX0JPX1RJTEVEXzMyCTB4MDAwMDAzMDAKKyNkZWZpbmUgT01BUF9CT19USUxFRAkJ KE9NQVBfQk9fVElMRURfOCB8IE9NQVBfQk9fVElMRURfMTYgfCBPTUFQX0JPX1RJTEVEXzMyKQor Cit1bmlvbiBvbWFwX2dlbV9zaXplIHsKKwlfX3UzMiBieXRlczsJCS8qIChmb3Igbm9uLXRpbGVk IGZvcm1hdHMpICovCisJc3RydWN0IHsKKwkJX191MTYgd2lkdGg7CisJCV9fdTE2IGhlaWdodDsK Kwl9IHRpbGVkOwkJLyogKGZvciB0aWxlZCBmb3JtYXRzKSAqLworfTsKKworc3RydWN0IGRybV9v bWFwX2dlbV9uZXcgeworCXVuaW9uIG9tYXBfZ2VtX3NpemUgc2l6ZTsJLyogaW4gKi8KKwlfX3Uz MiBmbGFnczsJCQkvKiBpbiAqLworCV9fdTMyIGhhbmRsZTsJCQkvKiBvdXQgKi8KKwlfX3UzMiBf X3BhZDsKK307CisKKy8qIG1hc2sgb2Ygb3BlcmF0aW9uczogKi8KK2VudW0gb21hcF9nZW1fb3Ag eworCU9NQVBfR0VNX1JFQUQgPSAweDAxLAorCU9NQVBfR0VNX1dSSVRFID0gMHgwMiwKK307CisK K3N0cnVjdCBkcm1fb21hcF9nZW1fY3B1X3ByZXAgeworCV9fdTMyIGhhbmRsZTsJCQkvKiBidWZm ZXIgaGFuZGxlIChpbikgKi8KKwlfX3UzMiBvcDsJCQkvKiBtYXNrIG9mIG9tYXBfZ2VtX29wIChp bikgKi8KK307CisKK3N0cnVjdCBkcm1fb21hcF9nZW1fY3B1X2ZpbmkgeworCV9fdTMyIGhhbmRs ZTsJCQkvKiBidWZmZXIgaGFuZGxlIChpbikgKi8KKwlfX3UzMiBvcDsJCQkvKiBtYXNrIG9mIG9t YXBfZ2VtX29wIChpbikgKi8KKwkvKiBUT0RPIG1heWJlIGhlcmUgd2UgcGFzcyBkb3duIGluZm8g YWJvdXQgd2hhdCByZWdpb25zIGFyZSB0b3VjaGVkCisJICogYnkgc3cgc28gd2UgY2FuIGJlIGNs ZXZlciBhYm91dCBjYWNoZSBvcHM/ICBGb3Igbm93IGEgcGxhY2Vob2xkZXIsCisJICogc2V0IHRv IHplcm8gYW5kIHdlIGp1c3QgZG8gZnVsbCBidWZmZXIgZmx1c2guLgorCSAqLworCV9fdTMyIG5y ZWdpb25zOworCV9fdTMyIF9fcGFkOworfTsKKworc3RydWN0IGRybV9vbWFwX2dlbV9pbmZvIHsK KwlfX3UzMiBoYW5kbGU7CQkJLyogYnVmZmVyIGhhbmRsZSAoaW4pICovCisJX191MzIgcGFkOwor CV9fdTY0IG9mZnNldDsJCQkvKiBtbWFwIG9mZnNldCAob3V0KSAqLworCS8qIG5vdGU6IGluIGNh c2Ugb2YgdGlsZWQgYnVmZmVycywgdGhlIHVzZXIgdmlydHVhbCBzaXplIGNhbiBiZQorCSAqIGRp ZmZlcmVudCBmcm9tIHRoZSBwaHlzaWNhbCBzaXplIChpZS4gaG93IG1hbnkgcGFnZXMgYXJlIG5l ZWRlZAorCSAqIHRvIGJhY2sgdGhlIG9iamVjdCkgd2hpY2ggaXMgcmV0dXJuZWQgaW4gRFJNX0lP Q1RMX0dFTV9PUEVOLi4KKwkgKiBUaGlzIHNpemUgaGVyZSBpcyB0aGUgb25lIHRoYXQgc2hvdWxk IGJlIHVzZWQgaWYgeW91IHdhbnQgdG8KKwkgKiBtbWFwKCkgdGhlIGJ1ZmZlcjoKKwkgKi8KKwlf X3UzMiBzaXplOwkJCS8qIHZpcnR1YWwgc2l6ZSBmb3IgbW1hcCdpbmcgKG91dCkgKi8KKwlfX3Uz MiBfX3BhZDsKK307CisKKyNkZWZpbmUgRFJNX09NQVBfR0VUX1BBUkFNCQkweDAwCisjZGVmaW5l IERSTV9PTUFQX1NFVF9QQVJBTQkJMHgwMQorI2RlZmluZSBEUk1fT01BUF9HRU1fTkVXCQkweDAz CisjZGVmaW5lIERSTV9PTUFQX0dFTV9DUFVfUFJFUAkJMHgwNAkvKiBEZXByZWNhdGVkLCB0byBi ZSByZW1vdmVkICovCisjZGVmaW5lIERSTV9PTUFQX0dFTV9DUFVfRklOSQkJMHgwNQkvKiBEZXBy ZWNhdGVkLCB0byBiZSByZW1vdmVkICovCisjZGVmaW5lIERSTV9PTUFQX0dFTV9JTkZPCQkweDA2 CisjZGVmaW5lIERSTV9PTUFQX05VTV9JT0NUTFMJCTB4MDcKKworI2RlZmluZSBEUk1fSU9DVExf T01BUF9HRVRfUEFSQU0JRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9PTUFQX0dFVF9Q QVJBTSwgc3RydWN0IGRybV9vbWFwX3BhcmFtKQorI2RlZmluZSBEUk1fSU9DVExfT01BUF9TRVRf UEFSQU0JRFJNX0lPVyAoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9PTUFQX1NFVF9QQVJBTSwgc3Ry dWN0IGRybV9vbWFwX3BhcmFtKQorI2RlZmluZSBEUk1fSU9DVExfT01BUF9HRU1fTkVXCQlEUk1f SU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX09NQVBfR0VNX05FVywgc3RydWN0IGRybV9vbWFw X2dlbV9uZXcpCisjZGVmaW5lIERSTV9JT0NUTF9PTUFQX0dFTV9DUFVfUFJFUAlEUk1fSU9XIChE Uk1fQ09NTUFORF9CQVNFICsgRFJNX09NQVBfR0VNX0NQVV9QUkVQLCBzdHJ1Y3QgZHJtX29tYXBf Z2VtX2NwdV9wcmVwKQorI2RlZmluZSBEUk1fSU9DVExfT01BUF9HRU1fQ1BVX0ZJTkkJRFJNX0lP VyAoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9PTUFQX0dFTV9DUFVfRklOSSwgc3RydWN0IGRybV9v bWFwX2dlbV9jcHVfZmluaSkKKyNkZWZpbmUgRFJNX0lPQ1RMX09NQVBfR0VNX0lORk8JCURSTV9J T1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fT01BUF9HRU1fSU5GTywgc3RydWN0IGRybV9vbWFw X2dlbV9pbmZvKQorCisjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKK30KKyNlbmRpZgorCisjZW5k aWYgLyogX19PTUFQX0RSTV9IX18gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtLXVhcGkvcXhs X2RybS5oIGIvaW5jbHVkZS9kcm0tdWFwaS9xeGxfZHJtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwLi44ODA5OTlkMmQ4NjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNs dWRlL2RybS11YXBpL3F4bF9kcm0uaApAQCAtMCwwICsxLDE1OCBAQAorLyoKKyAqIENvcHlyaWdo dCAyMDEzIFJlZCBIYXQKKyAqIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUGVybWlzc2lv biBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWlu aW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0 aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3 aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUg cmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwg c3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0 byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRv IGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUg YWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVk aW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3Bp ZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBU SEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkg S0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBU TyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwK KyAqIFRIRSBBVVRIT1JTIEFORC9PUiBJVFMgU1VQUExJRVJTIEJFIExJQUJMRSBGT1IgQU5ZIENM QUlNLCBEQU1BR0VTIE9SCisgKiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9O IE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKKyAqIEFSSVNJTkcgRlJPTSwgT1VUIE9G IE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgorICogT1RI RVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICovCisjaWZuZGVmIFFYTF9EUk1fSAorI2Rl ZmluZSBRWExfRFJNX0gKKworI2luY2x1ZGUgImRybS5oIgorCisjaWYgZGVmaW5lZChfX2NwbHVz cGx1cykKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qIFBsZWFzZSBub3RlIHRoYXQgbW9kaWZp Y2F0aW9ucyB0byBhbGwgc3RydWN0cyBkZWZpbmVkIGhlcmUgYXJlCisgKiBzdWJqZWN0IHRvIGJh Y2t3YXJkcy1jb21wYXRpYmlsaXR5IGNvbnN0cmFpbnRzLgorICoKKyAqIERvIG5vdCB1c2UgcG9p bnRlcnMsIHVzZSBfX3U2NCBpbnN0ZWFkIGZvciAzMiBiaXQgLyA2NCBiaXQgdXNlci9rZXJuZWwK KyAqIGNvbXBhdGliaWxpdHkgS2VlcCBmaWVsZHMgYWxpZ25lZCB0byB0aGVpciBzaXplCisgKi8K KworI2RlZmluZSBRWExfR0VNX0RPTUFJTl9DUFUgMAorI2RlZmluZSBRWExfR0VNX0RPTUFJTl9W UkFNIDEKKyNkZWZpbmUgUVhMX0dFTV9ET01BSU5fU1VSRkFDRSAyCisKKyNkZWZpbmUgRFJNX1FY TF9BTExPQyAgICAgICAweDAwCisjZGVmaW5lIERSTV9RWExfTUFQICAgICAgICAgMHgwMQorI2Rl ZmluZSBEUk1fUVhMX0VYRUNCVUZGRVIgIDB4MDIKKyNkZWZpbmUgRFJNX1FYTF9VUERBVEVfQVJF QSAweDAzCisjZGVmaW5lIERSTV9RWExfR0VUUEFSQU0gICAgMHgwNAorI2RlZmluZSBEUk1fUVhM X0NMSUVOVENBUCAgIDB4MDUKKworI2RlZmluZSBEUk1fUVhMX0FMTE9DX1NVUkYgIDB4MDYKKwor c3RydWN0IGRybV9xeGxfYWxsb2MgeworCV9fdTMyIHNpemU7CisJX191MzIgaGFuZGxlOyAvKiAw IGlzIGFuIGludmFsaWQgaGFuZGxlICovCit9OworCitzdHJ1Y3QgZHJtX3F4bF9tYXAgeworCV9f dTY0IG9mZnNldDsgLyogdXNlIGZvciBtbWFwIHN5c3RlbSBjYWxsICovCisJX191MzIgaGFuZGxl OworCV9fdTMyIHBhZDsKK307CisKKy8qCisgKiBkZXN0IGlzIHRoZSBibyB3ZSBhcmUgd3JpdGlu ZyB0aGUgcmVsb2NhdGlvbiBpbnRvCisgKiBzcmMgaXMgYm8gd2UgYXJlIHJlbG9jYXRpbmcuCisg KiAqKGRlc3RfaGFuZGxlLmJhc2VfYWRkciArIGRlc3Rfb2Zmc2V0KSA9IHBoeXNpY2FsX2FkZHJl c3Moc3JjX2hhbmRsZS5hZGRyICsKKyAqIHNyY19vZmZzZXQpCisgKi8KKyNkZWZpbmUgUVhMX1JF TE9DX1RZUEVfQk8gMQorI2RlZmluZSBRWExfUkVMT0NfVFlQRV9TVVJGIDIKKworc3RydWN0IGRy bV9xeGxfcmVsb2MgeworCV9fdTY0IHNyY19vZmZzZXQ7IC8qIG9mZnNldCBpbnRvIHNyY19oYW5k bGUgb3Igc3JjIGJ1ZmZlciAqLworCV9fdTY0IGRzdF9vZmZzZXQ7IC8qIG9mZnNldCBpbiBkZXN0 IGhhbmRsZSAqLworCV9fdTMyIHNyY19oYW5kbGU7IC8qIGRlc3QgaGFuZGxlIHRvIGNvbXB1dGUg YWRkcmVzcyBmcm9tICovCisJX191MzIgZHN0X2hhbmRsZTsgLyogMCBpZiB0byBjb21tYW5kIGJ1 ZmZlciAqLworCV9fdTMyIHJlbG9jX3R5cGU7CisJX191MzIgcGFkOworfTsKKworc3RydWN0IGRy bV9xeGxfY29tbWFuZCB7CisJX191NjQJCWNvbW1hbmQ7IC8qIHZvaWQqICovCisJX191NjQJCXJl bG9jczsgLyogc3RydWN0IGRybV9xeGxfcmVsb2MqICovCisJX191MzIJCXR5cGU7CisJX191MzIJ CWNvbW1hbmRfc2l6ZTsKKwlfX3UzMgkJcmVsb2NzX251bTsKKwlfX3UzMiAgICAgICAgICAgICAg ICBwYWQ7Cit9OworCitzdHJ1Y3QgZHJtX3F4bF9leGVjYnVmZmVyIHsKKwlfX3UzMgkJZmxhZ3M7 CQkvKiBmb3IgZnV0dXJlIHVzZSAqLworCV9fdTMyCQljb21tYW5kc19udW07CisJX191NjQJCWNv bW1hbmRzOwkvKiBzdHJ1Y3QgZHJtX3F4bF9jb21tYW5kKiAqLworfTsKKworc3RydWN0IGRybV9x eGxfdXBkYXRlX2FyZWEgeworCV9fdTMyIGhhbmRsZTsKKwlfX3UzMiB0b3A7CisJX191MzIgbGVm dDsKKwlfX3UzMiBib3R0b207CisJX191MzIgcmlnaHQ7CisJX191MzIgcGFkOworfTsKKworI2Rl ZmluZSBRWExfUEFSQU1fTlVNX1NVUkZBQ0VTIDEgLyogcm9tLT5uX3N1cmZhY2VzICovCisjZGVm aW5lIFFYTF9QQVJBTV9NQVhfUkVMT0NTIDIKK3N0cnVjdCBkcm1fcXhsX2dldHBhcmFtIHsKKwlf X3U2NCBwYXJhbTsKKwlfX3U2NCB2YWx1ZTsKK307CisKKy8qIHRoZXNlIGFyZSBvbmUgYml0IHZh bHVlcyAqLworc3RydWN0IGRybV9xeGxfY2xpZW50Y2FwIHsKKwlfX3UzMiBpbmRleDsKKwlfX3Uz MiBwYWQ7Cit9OworCitzdHJ1Y3QgZHJtX3F4bF9hbGxvY19zdXJmIHsKKwlfX3UzMiBmb3JtYXQ7 CisJX191MzIgd2lkdGg7CisJX191MzIgaGVpZ2h0OworCV9fczMyIHN0cmlkZTsKKwlfX3UzMiBo YW5kbGU7CisJX191MzIgcGFkOworfTsKKworI2RlZmluZSBEUk1fSU9DVExfUVhMX0FMTE9DIFwK KwlEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX1FYTF9BTExPQywgc3RydWN0IGRybV9x eGxfYWxsb2MpCisKKyNkZWZpbmUgRFJNX0lPQ1RMX1FYTF9NQVAgXAorCURSTV9JT1dSKERSTV9D T01NQU5EX0JBU0UgKyBEUk1fUVhMX01BUCwgc3RydWN0IGRybV9xeGxfbWFwKQorCisjZGVmaW5l IERSTV9JT0NUTF9RWExfRVhFQ0JVRkZFUiBcCisJRFJNX0lPVyhEUk1fQ09NTUFORF9CQVNFICsg RFJNX1FYTF9FWEVDQlVGRkVSLFwKKwkJc3RydWN0IGRybV9xeGxfZXhlY2J1ZmZlcikKKworI2Rl ZmluZSBEUk1fSU9DVExfUVhMX1VQREFURV9BUkVBIFwKKwlEUk1fSU9XKERSTV9DT01NQU5EX0JB U0UgKyBEUk1fUVhMX1VQREFURV9BUkVBLFwKKwkJc3RydWN0IGRybV9xeGxfdXBkYXRlX2FyZWEp CisKKyNkZWZpbmUgRFJNX0lPQ1RMX1FYTF9HRVRQQVJBTSBcCisJRFJNX0lPV1IoRFJNX0NPTU1B TkRfQkFTRSArIERSTV9RWExfR0VUUEFSQU0sXAorCQlzdHJ1Y3QgZHJtX3F4bF9nZXRwYXJhbSkK KworI2RlZmluZSBEUk1fSU9DVExfUVhMX0NMSUVOVENBUCBcCisJRFJNX0lPVyhEUk1fQ09NTUFO RF9CQVNFICsgRFJNX1FYTF9DTElFTlRDQVAsXAorCQlzdHJ1Y3QgZHJtX3F4bF9jbGllbnRjYXAp CisKKyNkZWZpbmUgRFJNX0lPQ1RMX1FYTF9BTExPQ19TVVJGIFwKKwlEUk1fSU9XUihEUk1fQ09N TUFORF9CQVNFICsgRFJNX1FYTF9BTExPQ19TVVJGLFwKKwkJc3RydWN0IGRybV9xeGxfYWxsb2Nf c3VyZikKKworI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpCit9CisjZW5kaWYKKworI2VuZGlmCmRp ZmYgLS1naXQgYS9pbmNsdWRlL2RybS11YXBpL3IxMjhfZHJtLmggYi9pbmNsdWRlL2RybS11YXBp L3IxMjhfZHJtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iZjQz MWEwMjMzM2QKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2RybS11YXBpL3IxMjhfZHJtLmgK QEAgLTAsMCArMSwzMzYgQEAKKy8qIHIxMjhfZHJtLmggLS0gUHVibGljIGhlYWRlciBmb3IgdGhl IHIxMjggZHJpdmVyIC0qLSBsaW51eC1jIC0qLQorICogQ3JlYXRlZDogV2VkIEFwciAgNSAxOToy NDoxOSAyMDAwIGJ5IGtldmluQHByZWNpc2lvbmluc2lnaHQuY29tCisgKi8KKy8qCisgKiBDb3B5 cmlnaHQgMjAwMCBQcmVjaXNpb24gSW5zaWdodCwgSW5jLiwgQ2VkYXIgUGFyaywgVGV4YXMuCisg KiBDb3B5cmlnaHQgMjAwMCBWQSBMaW51eCBTeXN0ZW1zLCBJbmMuLCBTdW5ueXZhbGUsIENhbGlm b3JuaWEuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVy ZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisg KiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxl cyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCBy ZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0 byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vu c2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0 IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywg c3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNv cHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUg bmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1 YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRX QVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVY UFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdB UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBQUkVD SVNJT04gSU5TSUdIVCBBTkQvT1IgSVRTIFNVUFBMSUVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJ TSwgREFNQUdFUyBPUgorICogT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBP RiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCisgKiBBUklTSU5HIEZST00sIE9VVCBPRiBP UiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAq IERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBBdXRob3JzOgorICogICAgR2FyZXRo IEh1Z2hlcyA8Z2FyZXRoQHZhbGludXguY29tPgorICogICAgS2V2aW4gRS4gTWFydGluIDxtYXJ0 aW5AdmFsaW51eC5jb20+CisgKi8KKworI2lmbmRlZiBfX1IxMjhfRFJNX0hfXworI2RlZmluZSBf X1IxMjhfRFJNX0hfXworCisjaW5jbHVkZSAiZHJtLmgiCisKKyNpZiBkZWZpbmVkKF9fY3BsdXNw bHVzKQorZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyogV0FSTklORzogSWYgeW91IGNoYW5nZSBh bnkgb2YgdGhlc2UgZGVmaW5lcywgbWFrZSBzdXJlIHRvIGNoYW5nZSB0aGUKKyAqIGRlZmluZXMg aW4gdGhlIFggc2VydmVyIGZpbGUgKHIxMjhfc2FyZWEuaCkKKyAqLworI2lmbmRlZiBfX1IxMjhf U0FSRUFfREVGSU5FU19fCisjZGVmaW5lIF9fUjEyOF9TQVJFQV9ERUZJTkVTX18KKworLyogV2hh dCBuZWVkcyB0byBiZSBjaGFuZ2VkIGZvciB0aGUgY3VycmVudCB2ZXJ0ZXggYnVmZmVyPworICov CisjZGVmaW5lIFIxMjhfVVBMT0FEX0NPTlRFWFQJCTB4MDAxCisjZGVmaW5lIFIxMjhfVVBMT0FE X1NFVFVQCQkweDAwMgorI2RlZmluZSBSMTI4X1VQTE9BRF9URVgwCQkweDAwNAorI2RlZmluZSBS MTI4X1VQTE9BRF9URVgxCQkweDAwOAorI2RlZmluZSBSMTI4X1VQTE9BRF9URVgwSU1BR0VTCQkw eDAxMAorI2RlZmluZSBSMTI4X1VQTE9BRF9URVgxSU1BR0VTCQkweDAyMAorI2RlZmluZSBSMTI4 X1VQTE9BRF9DT1JFCQkweDA0MAorI2RlZmluZSBSMTI4X1VQTE9BRF9NQVNLUwkJMHgwODAKKyNk ZWZpbmUgUjEyOF9VUExPQURfV0lORE9XCQkweDEwMAorI2RlZmluZSBSMTI4X1VQTE9BRF9DTElQ UkVDVFMJCTB4MjAwCS8qIGhhbmRsZWQgY2xpZW50LXNpZGUgKi8KKyNkZWZpbmUgUjEyOF9SRVFV SVJFX1FVSUVTQ0VOQ0UJCTB4NDAwCisjZGVmaW5lIFIxMjhfVVBMT0FEX0FMTAkJCTB4N2ZmCisK KyNkZWZpbmUgUjEyOF9GUk9OVAkJCTB4MQorI2RlZmluZSBSMTI4X0JBQ0sJCQkweDIKKyNkZWZp bmUgUjEyOF9ERVBUSAkJCTB4NAorCisvKiBQcmltaXRpdmUgdHlwZXMKKyAqLworI2RlZmluZSBS MTI4X1BPSU5UUwkJCTB4MQorI2RlZmluZSBSMTI4X0xJTkVTCQkJMHgyCisjZGVmaW5lIFIxMjhf TElORV9TVFJJUAkJCTB4MworI2RlZmluZSBSMTI4X1RSSUFOR0xFUwkJCTB4NAorI2RlZmluZSBS MTI4X1RSSUFOR0xFX0ZBTgkJMHg1CisjZGVmaW5lIFIxMjhfVFJJQU5HTEVfU1RSSVAJCTB4Ngor CisvKiBWZXJ0ZXgvaW5kaXJlY3QgYnVmZmVyIHNpemUKKyAqLworI2RlZmluZSBSMTI4X0JVRkZF Ul9TSVpFCQkxNjM4NAorCisvKiBCeXRlIG9mZnNldHMgZm9yIGluZGlyZWN0IGJ1ZmZlciBkYXRh CisgKi8KKyNkZWZpbmUgUjEyOF9JTkRFWF9QUklNX09GRlNFVAkJMjAKKyNkZWZpbmUgUjEyOF9I T1NUREFUQV9CTElUX09GRlNFVAkzMgorCisvKiBLZWVwIHRoZXNlIHNtYWxsIGZvciB0ZXN0aW5n LgorICovCisjZGVmaW5lIFIxMjhfTlJfU0FSRUFfQ0xJUFJFQ1RTCQkxMgorCisvKiBUaGVyZSBh cmUgMiBoZWFwcyAobG9jYWwvQUdQKS4gIEVhY2ggcmVnaW9uIHdpdGhpbiBhIGhlYXAgaXMgYQor ICogIG1pbmltdW0gb2YgNjRrLCBhbmQgdGhlcmUgYXJlIGF0IG1vc3QgNjQgb2YgdGhlbSBwZXIg aGVhcC4KKyAqLworI2RlZmluZSBSMTI4X0xPQ0FMX1RFWF9IRUFQCQkwCisjZGVmaW5lIFIxMjhf QUdQX1RFWF9IRUFQCQkxCisjZGVmaW5lIFIxMjhfTlJfVEVYX0hFQVBTCQkyCisjZGVmaW5lIFIx MjhfTlJfVEVYX1JFR0lPTlMJCTY0CisjZGVmaW5lIFIxMjhfTE9HX1RFWF9HUkFOVUxBUklUWQkx NgorCisjZGVmaW5lIFIxMjhfTlJfQ09OVEVYVF9SRUdTCQkxMgorCisjZGVmaW5lIFIxMjhfTUFY X1RFWFRVUkVfTEVWRUxTCQkxMQorI2RlZmluZSBSMTI4X01BWF9URVhUVVJFX1VOSVRTCQkyCisK KyNlbmRpZgkJCQkvKiBfX1IxMjhfU0FSRUFfREVGSU5FU19fICovCisKK3R5cGVkZWYgc3RydWN0 IHsKKwkvKiBDb250ZXh0IHN0YXRlIC0gY2FuIGJlIHdyaXR0ZW4gaW4gb25lIGxhcmdlIGNodW5r ICovCisJdW5zaWduZWQgaW50IGRzdF9waXRjaF9vZmZzZXRfYzsKKwl1bnNpZ25lZCBpbnQgZHBf Z3VpX21hc3Rlcl9jbnRsX2M7CisJdW5zaWduZWQgaW50IHNjX3RvcF9sZWZ0X2M7CisJdW5zaWdu ZWQgaW50IHNjX2JvdHRvbV9yaWdodF9jOworCXVuc2lnbmVkIGludCB6X29mZnNldF9jOworCXVu c2lnbmVkIGludCB6X3BpdGNoX2M7CisJdW5zaWduZWQgaW50IHpfc3Rlbl9jbnRsX2M7CisJdW5z aWduZWQgaW50IHRleF9jbnRsX2M7CisJdW5zaWduZWQgaW50IG1pc2NfM2Rfc3RhdGVfY250bF9y ZWc7CisJdW5zaWduZWQgaW50IHRleHR1cmVfY2xyX2NtcF9jbHJfYzsKKwl1bnNpZ25lZCBpbnQg dGV4dHVyZV9jbHJfY21wX21za19jOworCXVuc2lnbmVkIGludCBmb2dfY29sb3JfYzsKKworCS8q IFRleHR1cmUgc3RhdGUgKi8KKwl1bnNpZ25lZCBpbnQgdGV4X3NpemVfcGl0Y2hfYzsKKwl1bnNp Z25lZCBpbnQgY29uc3RhbnRfY29sb3JfYzsKKworCS8qIFNldHVwIHN0YXRlICovCisJdW5zaWdu ZWQgaW50IHBtNF92Y19mcHVfc2V0dXA7CisJdW5zaWduZWQgaW50IHNldHVwX2NudGw7CisKKwkv KiBNYXNrIHN0YXRlICovCisJdW5zaWduZWQgaW50IGRwX3dyaXRlX21hc2s7CisJdW5zaWduZWQg aW50IHN0ZW5fcmVmX21hc2tfYzsKKwl1bnNpZ25lZCBpbnQgcGxhbmVfM2RfbWFza19jOworCisJ LyogV2luZG93IHN0YXRlICovCisJdW5zaWduZWQgaW50IHdpbmRvd194eV9vZmZzZXQ7CisKKwkv KiBDb3JlIHN0YXRlICovCisJdW5zaWduZWQgaW50IHNjYWxlXzNkX2NudGw7Cit9IGRybV9yMTI4 X2NvbnRleHRfcmVnc190OworCisvKiBTZXR1cCByZWdpc3RlcnMgZm9yIGVhY2ggdGV4dHVyZSB1 bml0CisgKi8KK3R5cGVkZWYgc3RydWN0IHsKKwl1bnNpZ25lZCBpbnQgdGV4X2NudGw7CisJdW5z aWduZWQgaW50IHRleF9jb21iaW5lX2NudGw7CisJdW5zaWduZWQgaW50IHRleF9zaXplX3BpdGNo OworCXVuc2lnbmVkIGludCB0ZXhfb2Zmc2V0W1IxMjhfTUFYX1RFWFRVUkVfTEVWRUxTXTsKKwl1 bnNpZ25lZCBpbnQgdGV4X2JvcmRlcl9jb2xvcjsKK30gZHJtX3IxMjhfdGV4dHVyZV9yZWdzX3Q7 CisKK3R5cGVkZWYgc3RydWN0IGRybV9yMTI4X3NhcmVhIHsKKwkvKiBUaGUgY2hhbm5lbCBmb3Ig Y29tbXVuaWNhdGlvbiBvZiBzdGF0ZSBpbmZvcm1hdGlvbiB0byB0aGUga2VybmVsCisJICogb24g ZmlyaW5nIGEgdmVydGV4IGJ1ZmZlci4KKwkgKi8KKwlkcm1fcjEyOF9jb250ZXh0X3JlZ3NfdCBj b250ZXh0X3N0YXRlOworCWRybV9yMTI4X3RleHR1cmVfcmVnc190IHRleF9zdGF0ZVtSMTI4X01B WF9URVhUVVJFX1VOSVRTXTsKKwl1bnNpZ25lZCBpbnQgZGlydHk7CisJdW5zaWduZWQgaW50IHZl cnRzaXplOworCXVuc2lnbmVkIGludCB2Y19mb3JtYXQ7CisKKwkvKiBUaGUgY3VycmVudCBjbGlw cmVjdHMsIG9yIGEgc3Vic2V0IHRoZXJlb2YuCisJICovCisJc3RydWN0IGRybV9jbGlwX3JlY3Qg Ym94ZXNbUjEyOF9OUl9TQVJFQV9DTElQUkVDVFNdOworCXVuc2lnbmVkIGludCBuYm94OworCisJ LyogQ291bnRlcnMgZm9yIGNsaWVudC1zaWRlIHRocm90dGxpbmcgb2YgcmVuZGVyaW5nIGNsaWVu dHMuCisJICovCisJdW5zaWduZWQgaW50IGxhc3RfZnJhbWU7CisJdW5zaWduZWQgaW50IGxhc3Rf ZGlzcGF0Y2g7CisKKwlzdHJ1Y3QgZHJtX3RleF9yZWdpb24gdGV4X2xpc3RbUjEyOF9OUl9URVhf SEVBUFNdW1IxMjhfTlJfVEVYX1JFR0lPTlMgKyAxXTsKKwl1bnNpZ25lZCBpbnQgdGV4X2FnZVtS MTI4X05SX1RFWF9IRUFQU107CisJaW50IGN0eF9vd25lcjsKKwlpbnQgcGZBbGxvd1BhZ2VGbGlw OwkvKiBudW1iZXIgb2YgM2Qgd2luZG93cyAoMCwxLDIgb3IgbW9yZSkgKi8KKwlpbnQgcGZDdXJy ZW50UGFnZTsJLyogd2hpY2ggYnVmZmVyIGlzIGJlaW5nIGRpc3BsYXllZD8gKi8KK30gZHJtX3Ix Mjhfc2FyZWFfdDsKKworLyogV0FSTklORzogSWYgeW91IGNoYW5nZSBhbnkgb2YgdGhlc2UgZGVm aW5lcywgbWFrZSBzdXJlIHRvIGNoYW5nZSB0aGUKKyAqIGRlZmluZXMgaW4gdGhlIFhzZXJ2ZXIg ZmlsZSAoeGY4NmRybVIxMjguaCkKKyAqLworCisvKiBSYWdlIDEyOCBzcGVjaWZpYyBpb2N0bHMK KyAqIFRoZSBkZXZpY2Ugc3BlY2lmaWMgaW9jdGwgcmFuZ2UgaXMgMHg0MCB0byAweDc5LgorICov CisjZGVmaW5lIERSTV9SMTI4X0lOSVQgICAgICAgMHgwMAorI2RlZmluZSBEUk1fUjEyOF9DQ0Vf U1RBUlQgIDB4MDEKKyNkZWZpbmUgRFJNX1IxMjhfQ0NFX1NUT1AgICAweDAyCisjZGVmaW5lIERS TV9SMTI4X0NDRV9SRVNFVCAgMHgwMworI2RlZmluZSBEUk1fUjEyOF9DQ0VfSURMRSAgIDB4MDQK Ky8qIDB4MDUgbm90IHVzZWQgKi8KKyNkZWZpbmUgRFJNX1IxMjhfUkVTRVQgICAgICAweDA2Cisj ZGVmaW5lIERSTV9SMTI4X1NXQVAgICAgICAgMHgwNworI2RlZmluZSBEUk1fUjEyOF9DTEVBUiAg ICAgIDB4MDgKKyNkZWZpbmUgRFJNX1IxMjhfVkVSVEVYICAgICAweDA5CisjZGVmaW5lIERSTV9S MTI4X0lORElDRVMgICAgMHgwYQorI2RlZmluZSBEUk1fUjEyOF9CTElUICAgICAgIDB4MGIKKyNk ZWZpbmUgRFJNX1IxMjhfREVQVEggICAgICAweDBjCisjZGVmaW5lIERSTV9SMTI4X1NUSVBQTEUg ICAgMHgwZAorLyogMHgwZSBub3QgdXNlZCAqLworI2RlZmluZSBEUk1fUjEyOF9JTkRJUkVDVCAg IDB4MGYKKyNkZWZpbmUgRFJNX1IxMjhfRlVMTFNDUkVFTiAweDEwCisjZGVmaW5lIERSTV9SMTI4 X0NMRUFSMiAgICAgMHgxMQorI2RlZmluZSBEUk1fUjEyOF9HRVRQQVJBTSAgIDB4MTIKKyNkZWZp bmUgRFJNX1IxMjhfRkxJUCAgICAgICAweDEzCisKKyNkZWZpbmUgRFJNX0lPQ1RMX1IxMjhfSU5J VCAgICAgICBEUk1fSU9XKCBEUk1fQ09NTUFORF9CQVNFICsgRFJNX1IxMjhfSU5JVCwgZHJtX3Ix MjhfaW5pdF90KQorI2RlZmluZSBEUk1fSU9DVExfUjEyOF9DQ0VfU1RBUlQgIERSTV9JTyggIERS TV9DT01NQU5EX0JBU0UgKyBEUk1fUjEyOF9DQ0VfU1RBUlQpCisjZGVmaW5lIERSTV9JT0NUTF9S MTI4X0NDRV9TVE9QICAgRFJNX0lPVyggRFJNX0NPTU1BTkRfQkFTRSArIERSTV9SMTI4X0NDRV9T VE9QLCBkcm1fcjEyOF9jY2Vfc3RvcF90KQorI2RlZmluZSBEUk1fSU9DVExfUjEyOF9DQ0VfUkVT RVQgIERSTV9JTyggIERSTV9DT01NQU5EX0JBU0UgKyBEUk1fUjEyOF9DQ0VfUkVTRVQpCisjZGVm aW5lIERSTV9JT0NUTF9SMTI4X0NDRV9JRExFICAgRFJNX0lPKCAgRFJNX0NPTU1BTkRfQkFTRSAr IERSTV9SMTI4X0NDRV9JRExFKQorLyogMHgwNSBub3QgdXNlZCAqLworI2RlZmluZSBEUk1fSU9D VExfUjEyOF9SRVNFVCAgICAgIERSTV9JTyggIERSTV9DT01NQU5EX0JBU0UgKyBEUk1fUjEyOF9S RVNFVCkKKyNkZWZpbmUgRFJNX0lPQ1RMX1IxMjhfU1dBUCAgICAgICBEUk1fSU8oICBEUk1fQ09N TUFORF9CQVNFICsgRFJNX1IxMjhfU1dBUCkKKyNkZWZpbmUgRFJNX0lPQ1RMX1IxMjhfQ0xFQVIg ICAgICBEUk1fSU9XKCBEUk1fQ09NTUFORF9CQVNFICsgRFJNX1IxMjhfQ0xFQVIsIGRybV9yMTI4 X2NsZWFyX3QpCisjZGVmaW5lIERSTV9JT0NUTF9SMTI4X1ZFUlRFWCAgICAgRFJNX0lPVyggRFJN X0NPTU1BTkRfQkFTRSArIERSTV9SMTI4X1ZFUlRFWCwgZHJtX3IxMjhfdmVydGV4X3QpCisjZGVm aW5lIERSTV9JT0NUTF9SMTI4X0lORElDRVMgICAgRFJNX0lPVyggRFJNX0NPTU1BTkRfQkFTRSAr IERSTV9SMTI4X0lORElDRVMsIGRybV9yMTI4X2luZGljZXNfdCkKKyNkZWZpbmUgRFJNX0lPQ1RM X1IxMjhfQkxJVCAgICAgICBEUk1fSU9XKCBEUk1fQ09NTUFORF9CQVNFICsgRFJNX1IxMjhfQkxJ VCwgZHJtX3IxMjhfYmxpdF90KQorI2RlZmluZSBEUk1fSU9DVExfUjEyOF9ERVBUSCAgICAgIERS TV9JT1coIERSTV9DT01NQU5EX0JBU0UgKyBEUk1fUjEyOF9ERVBUSCwgZHJtX3IxMjhfZGVwdGhf dCkKKyNkZWZpbmUgRFJNX0lPQ1RMX1IxMjhfU1RJUFBMRSAgICBEUk1fSU9XKCBEUk1fQ09NTUFO RF9CQVNFICsgRFJNX1IxMjhfU1RJUFBMRSwgZHJtX3IxMjhfc3RpcHBsZV90KQorLyogMHgwZSBu b3QgdXNlZCAqLworI2RlZmluZSBEUk1fSU9DVExfUjEyOF9JTkRJUkVDVCAgIERSTV9JT1dSKERS TV9DT01NQU5EX0JBU0UgKyBEUk1fUjEyOF9JTkRJUkVDVCwgZHJtX3IxMjhfaW5kaXJlY3RfdCkK KyNkZWZpbmUgRFJNX0lPQ1RMX1IxMjhfRlVMTFNDUkVFTiBEUk1fSU9XKCBEUk1fQ09NTUFORF9C QVNFICsgRFJNX1IxMjhfRlVMTFNDUkVFTiwgZHJtX3IxMjhfZnVsbHNjcmVlbl90KQorI2RlZmlu ZSBEUk1fSU9DVExfUjEyOF9DTEVBUjIgICAgIERSTV9JT1coIERSTV9DT01NQU5EX0JBU0UgKyBE Uk1fUjEyOF9DTEVBUjIsIGRybV9yMTI4X2NsZWFyMl90KQorI2RlZmluZSBEUk1fSU9DVExfUjEy OF9HRVRQQVJBTSAgIERSTV9JT1dSKCBEUk1fQ09NTUFORF9CQVNFICsgRFJNX1IxMjhfR0VUUEFS QU0sIGRybV9yMTI4X2dldHBhcmFtX3QpCisjZGVmaW5lIERSTV9JT0NUTF9SMTI4X0ZMSVAgICAg ICAgRFJNX0lPKCAgRFJNX0NPTU1BTkRfQkFTRSArIERSTV9SMTI4X0ZMSVApCisKK3R5cGVkZWYg c3RydWN0IGRybV9yMTI4X2luaXQgeworCWVudW0geworCQlSMTI4X0lOSVRfQ0NFID0gMHgwMSwK KwkJUjEyOF9DTEVBTlVQX0NDRSA9IDB4MDIKKwl9IGZ1bmM7CisJdW5zaWduZWQgbG9uZyBzYXJl YV9wcml2X29mZnNldDsKKwlpbnQgaXNfcGNpOworCWludCBjY2VfbW9kZTsKKwlpbnQgY2NlX3Nl Y3VyZTsKKwlpbnQgcmluZ19zaXplOworCWludCB1c2VjX3RpbWVvdXQ7CisKKwl1bnNpZ25lZCBp bnQgZmJfYnBwOworCXVuc2lnbmVkIGludCBmcm9udF9vZmZzZXQsIGZyb250X3BpdGNoOworCXVu c2lnbmVkIGludCBiYWNrX29mZnNldCwgYmFja19waXRjaDsKKwl1bnNpZ25lZCBpbnQgZGVwdGhf YnBwOworCXVuc2lnbmVkIGludCBkZXB0aF9vZmZzZXQsIGRlcHRoX3BpdGNoOworCXVuc2lnbmVk IGludCBzcGFuX29mZnNldDsKKworCXVuc2lnbmVkIGxvbmcgZmJfb2Zmc2V0OworCXVuc2lnbmVk IGxvbmcgbW1pb19vZmZzZXQ7CisJdW5zaWduZWQgbG9uZyByaW5nX29mZnNldDsKKwl1bnNpZ25l ZCBsb25nIHJpbmdfcnB0cl9vZmZzZXQ7CisJdW5zaWduZWQgbG9uZyBidWZmZXJzX29mZnNldDsK Kwl1bnNpZ25lZCBsb25nIGFncF90ZXh0dXJlc19vZmZzZXQ7Cit9IGRybV9yMTI4X2luaXRfdDsK KwordHlwZWRlZiBzdHJ1Y3QgZHJtX3IxMjhfY2NlX3N0b3AgeworCWludCBmbHVzaDsKKwlpbnQg aWRsZTsKK30gZHJtX3IxMjhfY2NlX3N0b3BfdDsKKwordHlwZWRlZiBzdHJ1Y3QgZHJtX3IxMjhf Y2xlYXIgeworCXVuc2lnbmVkIGludCBmbGFnczsKKwl1bnNpZ25lZCBpbnQgY2xlYXJfY29sb3I7 CisJdW5zaWduZWQgaW50IGNsZWFyX2RlcHRoOworCXVuc2lnbmVkIGludCBjb2xvcl9tYXNrOwor CXVuc2lnbmVkIGludCBkZXB0aF9tYXNrOworfSBkcm1fcjEyOF9jbGVhcl90OworCit0eXBlZGVm IHN0cnVjdCBkcm1fcjEyOF92ZXJ0ZXggeworCWludCBwcmltOworCWludCBpZHg7CQkvKiBJbmRl eCBvZiB2ZXJ0ZXggYnVmZmVyICovCisJaW50IGNvdW50OwkJLyogTnVtYmVyIG9mIHZlcnRpY2Vz IGluIGJ1ZmZlciAqLworCWludCBkaXNjYXJkOwkJLyogQ2xpZW50IGZpbmlzaGVkIHdpdGggYnVm ZmVyPyAqLworfSBkcm1fcjEyOF92ZXJ0ZXhfdDsKKwordHlwZWRlZiBzdHJ1Y3QgZHJtX3IxMjhf aW5kaWNlcyB7CisJaW50IHByaW07CisJaW50IGlkeDsKKwlpbnQgc3RhcnQ7CisJaW50IGVuZDsK KwlpbnQgZGlzY2FyZDsJCS8qIENsaWVudCBmaW5pc2hlZCB3aXRoIGJ1ZmZlcj8gKi8KK30gZHJt X3IxMjhfaW5kaWNlc190OworCit0eXBlZGVmIHN0cnVjdCBkcm1fcjEyOF9ibGl0IHsKKwlpbnQg aWR4OworCWludCBwaXRjaDsKKwlpbnQgb2Zmc2V0OworCWludCBmb3JtYXQ7CisJdW5zaWduZWQg c2hvcnQgeCwgeTsKKwl1bnNpZ25lZCBzaG9ydCB3aWR0aCwgaGVpZ2h0OworfSBkcm1fcjEyOF9i bGl0X3Q7CisKK3R5cGVkZWYgc3RydWN0IGRybV9yMTI4X2RlcHRoIHsKKwllbnVtIHsKKwkJUjEy OF9XUklURV9TUEFOID0gMHgwMSwKKwkJUjEyOF9XUklURV9QSVhFTFMgPSAweDAyLAorCQlSMTI4 X1JFQURfU1BBTiA9IDB4MDMsCisJCVIxMjhfUkVBRF9QSVhFTFMgPSAweDA0CisJfSBmdW5jOwor CWludCBuOworCWludCAqeDsKKwlpbnQgKnk7CisJdW5zaWduZWQgaW50ICpidWZmZXI7CisJdW5z aWduZWQgY2hhciAqbWFzazsKK30gZHJtX3IxMjhfZGVwdGhfdDsKKwordHlwZWRlZiBzdHJ1Y3Qg ZHJtX3IxMjhfc3RpcHBsZSB7CisJdW5zaWduZWQgaW50ICptYXNrOworfSBkcm1fcjEyOF9zdGlw cGxlX3Q7CisKK3R5cGVkZWYgc3RydWN0IGRybV9yMTI4X2luZGlyZWN0IHsKKwlpbnQgaWR4Owor CWludCBzdGFydDsKKwlpbnQgZW5kOworCWludCBkaXNjYXJkOworfSBkcm1fcjEyOF9pbmRpcmVj dF90OworCit0eXBlZGVmIHN0cnVjdCBkcm1fcjEyOF9mdWxsc2NyZWVuIHsKKwllbnVtIHsKKwkJ UjEyOF9JTklUX0ZVTExTQ1JFRU4gPSAweDAxLAorCQlSMTI4X0NMRUFOVVBfRlVMTFNDUkVFTiA9 IDB4MDIKKwl9IGZ1bmM7Cit9IGRybV9yMTI4X2Z1bGxzY3JlZW5fdDsKKworLyogMi4zOiBBbiBp b2N0bCB0byBnZXQgcGFyYW1ldGVycyB0aGF0IGFyZW4ndCBhdmFpbGFibGUgdG8gdGhlIDNkCisg KiBjbGllbnQgYW55IG90aGVyIHdheS4KKyAqLworI2RlZmluZSBSMTI4X1BBUkFNX0lSUV9OUiAg ICAgICAgICAgIDEKKwordHlwZWRlZiBzdHJ1Y3QgZHJtX3IxMjhfZ2V0cGFyYW0geworCWludCBw YXJhbTsKKwl2b2lkICp2YWx1ZTsKK30gZHJtX3IxMjhfZ2V0cGFyYW1fdDsKKworI2lmIGRlZmlu ZWQoX19jcGx1c3BsdXMpCit9CisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRl L2RybS11YXBpL3JhZGVvbl9kcm0uaCBiL2luY2x1ZGUvZHJtLXVhcGkvcmFkZW9uX2RybS5oCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMmMxOTFiYTNkYWRhCi0tLSAv ZGV2L251bGwKKysrIGIvaW5jbHVkZS9kcm0tdWFwaS9yYWRlb25fZHJtLmgKQEAgLTAsMCArMSwx MDc4IEBACisvKiByYWRlb25fZHJtLmggLS0gUHVibGljIGhlYWRlciBmb3IgdGhlIHJhZGVvbiBk cml2ZXIgLSotIGxpbnV4LWMgLSotCisgKgorICogQ29weXJpZ2h0IDIwMDAgUHJlY2lzaW9uIElu c2lnaHQsIEluYy4sIENlZGFyIFBhcmssIFRleGFzLgorICogQ29weXJpZ2h0IDIwMDAgVkEgTGlu dXggU3lzdGVtcywgSW5jLiwgRnJlbW9udCwgQ2FsaWZvcm5pYS4KKyAqIENvcHlyaWdodCAyMDAy IFR1bmdzdGVuIEdyYXBoaWNzLCBJbmMuLCBDZWRhciBQYXJrLCBUZXhhcy4KKyAqIEFsbCByaWdo dHMgcmVzZXJ2ZWQuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBv ZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0 d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiks CisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRp bmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5 LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxs IGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRo ZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xs b3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg dGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgp IHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMg b2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFT IElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElF RCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFO VEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5G UklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFBSRUNJU0lPTiBJTlNJR0hUIEFORC9P UiBJVFMgU1VQUExJRVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCisgKiBP VEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9S IE9USEVSV0lTRSwKKyAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lU SCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorICogREVBTElOR1MgSU4gVEhFIFNP RlRXQVJFLgorICoKKyAqIEF1dGhvcnM6CisgKiAgICBLZXZpbiBFLiBNYXJ0aW4gPG1hcnRpbkB2 YWxpbnV4LmNvbT4KKyAqICAgIEdhcmV0aCBIdWdoZXMgPGdhcmV0aEB2YWxpbnV4LmNvbT4KKyAq ICAgIEtlaXRoIFdoaXR3ZWxsIDxrZWl0aEB0dW5nc3RlbmdyYXBoaWNzLmNvbT4KKyAqLworCisj aWZuZGVmIF9fUkFERU9OX0RSTV9IX18KKyNkZWZpbmUgX19SQURFT05fRFJNX0hfXworCisjaW5j bHVkZSAiZHJtLmgiCisKKyNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQorZXh0ZXJuICJDIiB7Cisj ZW5kaWYKKworLyogV0FSTklORzogSWYgeW91IGNoYW5nZSBhbnkgb2YgdGhlc2UgZGVmaW5lcywg bWFrZSBzdXJlIHRvIGNoYW5nZSB0aGUKKyAqIGRlZmluZXMgaW4gdGhlIFggc2VydmVyIGZpbGUg KHJhZGVvbl9zYXJlYS5oKQorICovCisjaWZuZGVmIF9fUkFERU9OX1NBUkVBX0RFRklORVNfXwor I2RlZmluZSBfX1JBREVPTl9TQVJFQV9ERUZJTkVTX18KKworLyogT2xkIHN0eWxlIHN0YXRlIGZs YWdzLCByZXF1aXJlZCBmb3Igc2FyZWEgaW50ZXJmYWNlICgxLjEgYW5kIDEuMgorICogY2xlYXJz KSBhbmQgMS4yIGRybV92ZXJ0ZXgyIGlvY3RsLgorICovCisjZGVmaW5lIFJBREVPTl9VUExPQURf Q09OVEVYVAkJMHgwMDAwMDAwMQorI2RlZmluZSBSQURFT05fVVBMT0FEX1ZFUlRGTVQJCTB4MDAw MDAwMDIKKyNkZWZpbmUgUkFERU9OX1VQTE9BRF9MSU5FCQkweDAwMDAwMDA0CisjZGVmaW5lIFJB REVPTl9VUExPQURfQlVNUE1BUAkJMHgwMDAwMDAwOAorI2RlZmluZSBSQURFT05fVVBMT0FEX01B U0tTCQkweDAwMDAwMDEwCisjZGVmaW5lIFJBREVPTl9VUExPQURfVklFV1BPUlQJCTB4MDAwMDAw MjAKKyNkZWZpbmUgUkFERU9OX1VQTE9BRF9TRVRVUAkJMHgwMDAwMDA0MAorI2RlZmluZSBSQURF T05fVVBMT0FEX1RDTAkJMHgwMDAwMDA4MAorI2RlZmluZSBSQURFT05fVVBMT0FEX01JU0MJCTB4 MDAwMDAxMDAKKyNkZWZpbmUgUkFERU9OX1VQTE9BRF9URVgwCQkweDAwMDAwMjAwCisjZGVmaW5l IFJBREVPTl9VUExPQURfVEVYMQkJMHgwMDAwMDQwMAorI2RlZmluZSBSQURFT05fVVBMT0FEX1RF WDIJCTB4MDAwMDA4MDAKKyNkZWZpbmUgUkFERU9OX1VQTE9BRF9URVgwSU1BR0VTCTB4MDAwMDEw MDAKKyNkZWZpbmUgUkFERU9OX1VQTE9BRF9URVgxSU1BR0VTCTB4MDAwMDIwMDAKKyNkZWZpbmUg UkFERU9OX1VQTE9BRF9URVgySU1BR0VTCTB4MDAwMDQwMDAKKyNkZWZpbmUgUkFERU9OX1VQTE9B RF9DTElQUkVDVFMJCTB4MDAwMDgwMDAJLyogaGFuZGxlZCBjbGllbnQtc2lkZSAqLworI2RlZmlu ZSBSQURFT05fUkVRVUlSRV9RVUlFU0NFTkNFCTB4MDAwMTAwMDAKKyNkZWZpbmUgUkFERU9OX1VQ TE9BRF9aQklBUwkJMHgwMDAyMDAwMAkvKiB2ZXJzaW9uIDEuMiBhbmQgbmV3ZXIgKi8KKyNkZWZp bmUgUkFERU9OX1VQTE9BRF9BTEwJCTB4MDAzZWZmZmYKKyNkZWZpbmUgUkFERU9OX1VQTE9BRF9D T05URVhUX0FMTCAgICAgICAweDAwM2UwMWZmCisKKy8qIE5ldyBzdHlsZSBwZXItcGFja2V0IGlk ZW50aWZpZXJzIGZvciB1c2UgaW4gY21kX2J1ZmZlciBpb2N0bCB3aXRoCisgKiB0aGUgUkFERU9O X0VNSVRfUEFDS0VUIGNvbW1hbmQuICBDb21tZW50cyByZWxhdGUgbmV3IHBhY2tldHMgdG8gb2xk CisgKiBzdGF0ZSBiaXRzIGFuZCB0aGUgcGFja2V0IHNpemU6CisgKi8KKyNkZWZpbmUgUkFERU9O X0VNSVRfUFBfTUlTQyAgICAgICAgICAgICAgICAgICAgICAgICAwCS8qIGNvbnRleHQvNyAqLwor I2RlZmluZSBSQURFT05fRU1JVF9QUF9DTlRMICAgICAgICAgICAgICAgICAgICAgICAgIDEJLyog Y29udGV4dC8zICovCisjZGVmaW5lIFJBREVPTl9FTUlUX1JCM0RfQ09MT1JQSVRDSCAgICAgICAg ICAgICAgICAgMgkvKiBjb250ZXh0LzEgKi8KKyNkZWZpbmUgUkFERU9OX0VNSVRfUkVfTElORV9Q QVRURVJOICAgICAgICAgICAgICAgICAzCS8qIGxpbmUvMiAqLworI2RlZmluZSBSQURFT05fRU1J VF9TRV9MSU5FX1dJRFRIICAgICAgICAgICAgICAgICAgIDQJLyogbGluZS8xICovCisjZGVmaW5l IFJBREVPTl9FTUlUX1BQX0xVTV9NQVRSSVggICAgICAgICAgICAgICAgICAgNQkvKiBidW1wbWFw LzEgKi8KKyNkZWZpbmUgUkFERU9OX0VNSVRfUFBfUk9UX01BVFJJWF8wICAgICAgICAgICAgICAg ICA2CS8qIGJ1bXBtYXAvMiAqLworI2RlZmluZSBSQURFT05fRU1JVF9SQjNEX1NURU5DSUxSRUZN QVNLICAgICAgICAgICAgIDcJLyogbWFza3MvMyAqLworI2RlZmluZSBSQURFT05fRU1JVF9TRV9W UE9SVF9YU0NBTEUgICAgICAgICAgICAgICAgIDgJLyogdmlld3BvcnQvNiAqLworI2RlZmluZSBS QURFT05fRU1JVF9TRV9DTlRMICAgICAgICAgICAgICAgICAgICAgICAgIDkJLyogc2V0dXAvMiAq LworI2RlZmluZSBSQURFT05fRU1JVF9TRV9DTlRMX1NUQVRVUyAgICAgICAgICAgICAgICAgIDEw CS8qIHNldHVwLzEgKi8KKyNkZWZpbmUgUkFERU9OX0VNSVRfUkVfTUlTQyAgICAgICAgICAgICAg ICAgICAgICAgICAxMQkvKiBtaXNjLzEgKi8KKyNkZWZpbmUgUkFERU9OX0VNSVRfUFBfVFhGSUxU RVJfMCAgICAgICAgICAgICAgICAgICAxMgkvKiB0ZXgwLzYgKi8KKyNkZWZpbmUgUkFERU9OX0VN SVRfUFBfQk9SREVSX0NPTE9SXzAgICAgICAgICAgICAgICAxMwkvKiB0ZXgwLzEgKi8KKyNkZWZp bmUgUkFERU9OX0VNSVRfUFBfVFhGSUxURVJfMSAgICAgICAgICAgICAgICAgICAxNAkvKiB0ZXgx LzYgKi8KKyNkZWZpbmUgUkFERU9OX0VNSVRfUFBfQk9SREVSX0NPTE9SXzEgICAgICAgICAgICAg ICAxNQkvKiB0ZXgxLzEgKi8KKyNkZWZpbmUgUkFERU9OX0VNSVRfUFBfVFhGSUxURVJfMiAgICAg ICAgICAgICAgICAgICAxNgkvKiB0ZXgyLzYgKi8KKyNkZWZpbmUgUkFERU9OX0VNSVRfUFBfQk9S REVSX0NPTE9SXzIgICAgICAgICAgICAgICAxNwkvKiB0ZXgyLzEgKi8KKyNkZWZpbmUgUkFERU9O X0VNSVRfU0VfWkJJQVNfRkFDVE9SICAgICAgICAgICAgICAgICAxOAkvKiB6Ymlhcy8yICovCisj ZGVmaW5lIFJBREVPTl9FTUlUX1NFX1RDTF9PVVRQVVRfVlRYX0ZNVCAgICAgICAgICAgMTkJLyog dGNsLzExICovCisjZGVmaW5lIFJBREVPTl9FTUlUX1NFX1RDTF9NQVRFUklBTF9FTU1JU1NJVkVf UkVEICAgMjAJLyogbWF0ZXJpYWwvMTcgKi8KKyNkZWZpbmUgUjIwMF9FTUlUX1BQX1RYQ0JMRU5E XzAgICAgICAgICAgICAgICAgICAgICAyMQkvKiB0ZXgwLzQgKi8KKyNkZWZpbmUgUjIwMF9FTUlU X1BQX1RYQ0JMRU5EXzEgICAgICAgICAgICAgICAgICAgICAyMgkvKiB0ZXgxLzQgKi8KKyNkZWZp bmUgUjIwMF9FTUlUX1BQX1RYQ0JMRU5EXzIgICAgICAgICAgICAgICAgICAgICAyMwkvKiB0ZXgy LzQgKi8KKyNkZWZpbmUgUjIwMF9FTUlUX1BQX1RYQ0JMRU5EXzMgICAgICAgICAgICAgICAgICAg ICAyNAkvKiB0ZXgzLzQgKi8KKyNkZWZpbmUgUjIwMF9FTUlUX1BQX1RYQ0JMRU5EXzQgICAgICAg ICAgICAgICAgICAgICAyNQkvKiB0ZXg0LzQgKi8KKyNkZWZpbmUgUjIwMF9FTUlUX1BQX1RYQ0JM RU5EXzUgICAgICAgICAgICAgICAgICAgICAyNgkvKiB0ZXg1LzQgKi8KKyNkZWZpbmUgUjIwMF9F TUlUX1BQX1RYQ0JMRU5EXzYgICAgICAgICAgICAgICAgICAgICAyNwkvKiAvNCAqLworI2RlZmlu ZSBSMjAwX0VNSVRfUFBfVFhDQkxFTkRfNyAgICAgICAgICAgICAgICAgICAgIDI4CS8qIC80ICov CisjZGVmaW5lIFIyMDBfRU1JVF9UQ0xfTElHSFRfTU9ERUxfQ1RMXzAgICAgICAgICAgICAgMjkJ LyogdGNsLzcgKi8KKyNkZWZpbmUgUjIwMF9FTUlUX1RGQUNUT1JfMCAgICAgICAgICAgICAgICAg ICAgICAgICAzMAkvKiB0Zi83ICovCisjZGVmaW5lIFIyMDBfRU1JVF9WVFhfRk1UXzAgICAgICAg ICAgICAgICAgICAgICAgICAgMzEJLyogdnR4LzUgKi8KKyNkZWZpbmUgUjIwMF9FTUlUX1ZBUF9D VEwgICAgICAgICAgICAgICAgICAgICAgICAgICAzMgkvKiB2YXAvMSAqLworI2RlZmluZSBSMjAw X0VNSVRfTUFUUklYX1NFTEVDVF8wICAgICAgICAgICAgICAgICAgIDMzCS8qIG1zbC81ICovCisj ZGVmaW5lIFIyMDBfRU1JVF9URVhfUFJPQ19DVExfMiAgICAgICAgICAgICAgICAgICAgMzQJLyog dGNnLzUgKi8KKyNkZWZpbmUgUjIwMF9FTUlUX1RDTF9VQ1BfVkVSVF9CTEVORF9DVEwgICAgICAg ICAgICAzNQkvKiB0Y2wvMSAqLworI2RlZmluZSBSMjAwX0VNSVRfUFBfVFhGSUxURVJfMCAgICAg ICAgICAgICAgICAgICAgIDM2CS8qIHRleDAvNiAqLworI2RlZmluZSBSMjAwX0VNSVRfUFBfVFhG SUxURVJfMSAgICAgICAgICAgICAgICAgICAgIDM3CS8qIHRleDEvNiAqLworI2RlZmluZSBSMjAw X0VNSVRfUFBfVFhGSUxURVJfMiAgICAgICAgICAgICAgICAgICAgIDM4CS8qIHRleDIvNiAqLwor I2RlZmluZSBSMjAwX0VNSVRfUFBfVFhGSUxURVJfMyAgICAgICAgICAgICAgICAgICAgIDM5CS8q IHRleDMvNiAqLworI2RlZmluZSBSMjAwX0VNSVRfUFBfVFhGSUxURVJfNCAgICAgICAgICAgICAg ICAgICAgIDQwCS8qIHRleDQvNiAqLworI2RlZmluZSBSMjAwX0VNSVRfUFBfVFhGSUxURVJfNSAg ICAgICAgICAgICAgICAgICAgIDQxCS8qIHRleDUvNiAqLworI2RlZmluZSBSMjAwX0VNSVRfUFBf VFhPRkZTRVRfMCAgICAgICAgICAgICAgICAgICAgIDQyCS8qIHRleDAvMSAqLworI2RlZmluZSBS MjAwX0VNSVRfUFBfVFhPRkZTRVRfMSAgICAgICAgICAgICAgICAgICAgIDQzCS8qIHRleDEvMSAq LworI2RlZmluZSBSMjAwX0VNSVRfUFBfVFhPRkZTRVRfMiAgICAgICAgICAgICAgICAgICAgIDQ0 CS8qIHRleDIvMSAqLworI2RlZmluZSBSMjAwX0VNSVRfUFBfVFhPRkZTRVRfMyAgICAgICAgICAg ICAgICAgICAgIDQ1CS8qIHRleDMvMSAqLworI2RlZmluZSBSMjAwX0VNSVRfUFBfVFhPRkZTRVRf NCAgICAgICAgICAgICAgICAgICAgIDQ2CS8qIHRleDQvMSAqLworI2RlZmluZSBSMjAwX0VNSVRf UFBfVFhPRkZTRVRfNSAgICAgICAgICAgICAgICAgICAgIDQ3CS8qIHRleDUvMSAqLworI2RlZmlu ZSBSMjAwX0VNSVRfVlRFX0NOVEwgICAgICAgICAgICAgICAgICAgICAgICAgIDQ4CS8qIHZ0ZS8x ICovCisjZGVmaW5lIFIyMDBfRU1JVF9PVVRQVVRfVlRYX0NPTVBfU0VMICAgICAgICAgICAgICAg NDkJLyogdnR4LzEgKi8KKyNkZWZpbmUgUjIwMF9FTUlUX1BQX1RBTV9ERUJVRzMgICAgICAgICAg ICAgICAgICAgICA1MAkvKiB0YW0vMSAqLworI2RlZmluZSBSMjAwX0VNSVRfUFBfQ05UTF9YICAg ICAgICAgICAgICAgICAgICAgICAgIDUxCS8qIGNzdC8xICovCisjZGVmaW5lIFIyMDBfRU1JVF9S QjNEX0RFUFRIWFlfT0ZGU0VUICAgICAgICAgICAgICAgNTIJLyogY3N0LzEgKi8KKyNkZWZpbmUg UjIwMF9FTUlUX1JFX0FVWF9TQ0lTU09SX0NOVEwgICAgICAgICAgICAgICA1MwkvKiBjc3QvMSAq LworI2RlZmluZSBSMjAwX0VNSVRfUkVfU0NJU1NPUl9UTF8wICAgICAgICAgICAgICAgICAgIDU0 CS8qIGNzdC8yICovCisjZGVmaW5lIFIyMDBfRU1JVF9SRV9TQ0lTU09SX1RMXzEgICAgICAgICAg ICAgICAgICAgNTUJLyogY3N0LzIgKi8KKyNkZWZpbmUgUjIwMF9FTUlUX1JFX1NDSVNTT1JfVExf MiAgICAgICAgICAgICAgICAgICA1NgkvKiBjc3QvMiAqLworI2RlZmluZSBSMjAwX0VNSVRfU0Vf VkFQX0NOVExfU1RBVFVTICAgICAgICAgICAgICAgIDU3CS8qIGNzdC8xICovCisjZGVmaW5lIFIy MDBfRU1JVF9TRV9WVFhfU1RBVEVfQ05UTCAgICAgICAgICAgICAgICAgNTgJLyogY3N0LzEgKi8K KyNkZWZpbmUgUjIwMF9FTUlUX1JFX1BPSU5UU0laRSAgICAgICAgICAgICAgICAgICAgICA1OQkv KiBjc3QvMSAqLworI2RlZmluZSBSMjAwX0VNSVRfVENMX0lOUFVUX1ZUWF9WRUNUT1JfQUREUl8w ICAgICAgIDYwCS8qIGNzdC80ICovCisjZGVmaW5lIFIyMDBfRU1JVF9QUF9DVUJJQ19GQUNFU18w ICAgICAgICAgICAgICAgICAgNjEKKyNkZWZpbmUgUjIwMF9FTUlUX1BQX0NVQklDX09GRlNFVFNf MCAgICAgICAgICAgICAgICA2MgorI2RlZmluZSBSMjAwX0VNSVRfUFBfQ1VCSUNfRkFDRVNfMSAg ICAgICAgICAgICAgICAgIDYzCisjZGVmaW5lIFIyMDBfRU1JVF9QUF9DVUJJQ19PRkZTRVRTXzEg ICAgICAgICAgICAgICAgNjQKKyNkZWZpbmUgUjIwMF9FTUlUX1BQX0NVQklDX0ZBQ0VTXzIgICAg ICAgICAgICAgICAgICA2NQorI2RlZmluZSBSMjAwX0VNSVRfUFBfQ1VCSUNfT0ZGU0VUU18yICAg ICAgICAgICAgICAgIDY2CisjZGVmaW5lIFIyMDBfRU1JVF9QUF9DVUJJQ19GQUNFU18zICAgICAg ICAgICAgICAgICAgNjcKKyNkZWZpbmUgUjIwMF9FTUlUX1BQX0NVQklDX09GRlNFVFNfMyAgICAg ICAgICAgICAgICA2OAorI2RlZmluZSBSMjAwX0VNSVRfUFBfQ1VCSUNfRkFDRVNfNCAgICAgICAg ICAgICAgICAgIDY5CisjZGVmaW5lIFIyMDBfRU1JVF9QUF9DVUJJQ19PRkZTRVRTXzQgICAgICAg ICAgICAgICAgNzAKKyNkZWZpbmUgUjIwMF9FTUlUX1BQX0NVQklDX0ZBQ0VTXzUgICAgICAgICAg ICAgICAgICA3MQorI2RlZmluZSBSMjAwX0VNSVRfUFBfQ1VCSUNfT0ZGU0VUU181ICAgICAgICAg ICAgICAgIDcyCisjZGVmaW5lIFJBREVPTl9FTUlUX1BQX1RFWF9TSVpFXzAgICAgICAgICAgICAg ICAgICAgNzMKKyNkZWZpbmUgUkFERU9OX0VNSVRfUFBfVEVYX1NJWkVfMSAgICAgICAgICAgICAg ICAgICA3NAorI2RlZmluZSBSQURFT05fRU1JVF9QUF9URVhfU0laRV8yICAgICAgICAgICAgICAg ICAgIDc1CisjZGVmaW5lIFIyMDBfRU1JVF9SQjNEX0JMRU5EQ09MT1IgICAgICAgICAgICAgICAg ICAgNzYKKyNkZWZpbmUgUjIwMF9FTUlUX1RDTF9QT0lOVF9TUFJJVEVfQ05UTCAgICAgICAgICAg ICA3NworI2RlZmluZSBSQURFT05fRU1JVF9QUF9DVUJJQ19GQUNFU18wICAgICAgICAgICAgICAg IDc4CisjZGVmaW5lIFJBREVPTl9FTUlUX1BQX0NVQklDX09GRlNFVFNfVDAgICAgICAgICAgICAg NzkKKyNkZWZpbmUgUkFERU9OX0VNSVRfUFBfQ1VCSUNfRkFDRVNfMSAgICAgICAgICAgICAgICA4 MAorI2RlZmluZSBSQURFT05fRU1JVF9QUF9DVUJJQ19PRkZTRVRTX1QxICAgICAgICAgICAgIDgx CisjZGVmaW5lIFJBREVPTl9FTUlUX1BQX0NVQklDX0ZBQ0VTXzIgICAgICAgICAgICAgICAgODIK KyNkZWZpbmUgUkFERU9OX0VNSVRfUFBfQ1VCSUNfT0ZGU0VUU19UMiAgICAgICAgICAgICA4Mwor I2RlZmluZSBSMjAwX0VNSVRfUFBfVFJJX1BFUkZfQ05UTCAgICAgICAgICAgICAgICAgIDg0Cisj ZGVmaW5lIFIyMDBfRU1JVF9QUF9BRlNfMCAgICAgICAgICAgICAgICAgICAgICAgICAgODUKKyNk ZWZpbmUgUjIwMF9FTUlUX1BQX0FGU18xICAgICAgICAgICAgICAgICAgICAgICAgICA4NgorI2Rl ZmluZSBSMjAwX0VNSVRfQVRGX1RGQUNUT1IgICAgICAgICAgICAgICAgICAgICAgIDg3CisjZGVm aW5lIFIyMDBfRU1JVF9QUF9UWENUTEFMTF8wICAgICAgICAgICAgICAgICAgICAgODgKKyNkZWZp bmUgUjIwMF9FTUlUX1BQX1RYQ1RMQUxMXzEgICAgICAgICAgICAgICAgICAgICA4OQorI2RlZmlu ZSBSMjAwX0VNSVRfUFBfVFhDVExBTExfMiAgICAgICAgICAgICAgICAgICAgIDkwCisjZGVmaW5l IFIyMDBfRU1JVF9QUF9UWENUTEFMTF8zICAgICAgICAgICAgICAgICAgICAgOTEKKyNkZWZpbmUg UjIwMF9FTUlUX1BQX1RYQ1RMQUxMXzQgICAgICAgICAgICAgICAgICAgICA5MgorI2RlZmluZSBS MjAwX0VNSVRfUFBfVFhDVExBTExfNSAgICAgICAgICAgICAgICAgICAgIDkzCisjZGVmaW5lIFIy MDBfRU1JVF9WQVBfUFZTX0NOVEwgICAgICAgICAgICAgICAgICAgICAgOTQKKyNkZWZpbmUgUkFE RU9OX01BWF9TVEFURV9QQUNLRVRTICAgICAgICAgICAgICAgICAgICA5NQorCisvKiBDb21tYW5k cyB1bmRlcnN0b29kIGJ5IGNtZF9idWZmZXIgaW9jdGwuICBNb3JlIGNhbiBiZSBhZGRlZCBidXQK KyAqIG9idmlvdXNseSB0aGVzZSBjYW4ndCBiZSByZW1vdmVkIG9yIGNoYW5nZWQ6CisgKi8KKyNk ZWZpbmUgUkFERU9OX0NNRF9QQUNLRVQgICAgICAxCS8qIGVtaXQgb25lIG9mIHRoZSByZWdpc3Rl ciBwYWNrZXRzIGFib3ZlICovCisjZGVmaW5lIFJBREVPTl9DTURfU0NBTEFSUyAgICAgMgkvKiBl bWl0IHNjYWxhciBkYXRhICovCisjZGVmaW5lIFJBREVPTl9DTURfVkVDVE9SUyAgICAgMwkvKiBl bWl0IHZlY3RvciBkYXRhICovCisjZGVmaW5lIFJBREVPTl9DTURfRE1BX0RJU0NBUkQgNAkvKiBk aXNjYXJkIGN1cnJlbnQgZG1hIGJ1ZiAqLworI2RlZmluZSBSQURFT05fQ01EX1BBQ0tFVDMgICAg IDUJLyogZW1pdCBodyBwYWNrZXQgKi8KKyNkZWZpbmUgUkFERU9OX0NNRF9QQUNLRVQzX0NMSVAg NgkvKiBlbWl0IGh3IHBhY2tldCB3cmFwcGVkIGluIGNsaXByZWN0cyAqLworI2RlZmluZSBSQURF T05fQ01EX1NDQUxBUlMyICAgICA3CS8qIHIyMDAgc3RvcGdhcCAqLworI2RlZmluZSBSQURFT05f Q01EX1dBSVQgICAgICAgICA4CS8qIGVtaXQgaHcgd2FpdCBjb21tYW5kcyAtLSBub3RlOgorCQkJ CQkgKiAgZG9lc24ndCBtYWtlIHRoZSBjcHUgd2FpdCwganVzdAorCQkJCQkgKiAgdGhlIGdyYXBo aWNzIGhhcmR3YXJlICovCisjZGVmaW5lIFJBREVPTl9DTURfVkVDTElORUFSCTkgICAgICAgLyog YW5vdGhlciByMjAwIHN0b3BnYXAgKi8KKwordHlwZWRlZiB1bmlvbiB7CisJaW50IGk7CisJc3Ry dWN0IHsKKwkJdW5zaWduZWQgY2hhciBjbWRfdHlwZSwgcGFkMCwgcGFkMSwgcGFkMjsKKwl9IGhl YWRlcjsKKwlzdHJ1Y3QgeworCQl1bnNpZ25lZCBjaGFyIGNtZF90eXBlLCBwYWNrZXRfaWQsIHBh ZDAsIHBhZDE7CisJfSBwYWNrZXQ7CisJc3RydWN0IHsKKwkJdW5zaWduZWQgY2hhciBjbWRfdHlw ZSwgb2Zmc2V0LCBzdHJpZGUsIGNvdW50OworCX0gc2NhbGFyczsKKwlzdHJ1Y3QgeworCQl1bnNp Z25lZCBjaGFyIGNtZF90eXBlLCBvZmZzZXQsIHN0cmlkZSwgY291bnQ7CisJfSB2ZWN0b3JzOwor CXN0cnVjdCB7CisJCXVuc2lnbmVkIGNoYXIgY21kX3R5cGUsIGFkZHJfbG8sIGFkZHJfaGksIGNv dW50OworCX0gdmVjbGluZWFyOworCXN0cnVjdCB7CisJCXVuc2lnbmVkIGNoYXIgY21kX3R5cGUs IGJ1Zl9pZHgsIHBhZDAsIHBhZDE7CisJfSBkbWE7CisJc3RydWN0IHsKKwkJdW5zaWduZWQgY2hh ciBjbWRfdHlwZSwgZmxhZ3MsIHBhZDAsIHBhZDE7CisJfSB3YWl0OworfSBkcm1fcmFkZW9uX2Nt ZF9oZWFkZXJfdDsKKworI2RlZmluZSBSQURFT05fV0FJVF8yRCAgMHgxCisjZGVmaW5lIFJBREVP Tl9XQUlUXzNEICAweDIKKworLyogQWxsb3dlZCBwYXJhbWV0ZXJzIGZvciBSMzAwX0NNRF9QQUNL RVQzCisgKi8KKyNkZWZpbmUgUjMwMF9DTURfUEFDS0VUM19DTEVBUgkJMAorI2RlZmluZSBSMzAw X0NNRF9QQUNLRVQzX1JBVwkJMQorCisvKiBDb21tYW5kcyB1bmRlcnN0b29kIGJ5IGNtZF9idWZm ZXIgaW9jdGwgZm9yIFIzMDAuCisgKiBUaGUgaW50ZXJmYWNlIGhhcyBub3QgYmVlbiBzdGFiaWxp emVkLCBzbyBzb21lIG9mIHRoZXNlIG1heSBiZSByZW1vdmVkCisgKiBhbmQgZXZlbnR1YWxseSBy ZW9yZGVyZWQgYmVmb3JlIHN0YWJpbGl6YXRpb24uCisgKi8KKyNkZWZpbmUgUjMwMF9DTURfUEFD S0VUMAkJMQorI2RlZmluZSBSMzAwX0NNRF9WUFUJCQkyCS8qIGVtaXQgdmVydGV4IHByb2dyYW0g dXBsb2FkICovCisjZGVmaW5lIFIzMDBfQ01EX1BBQ0tFVDMJCTMJLyogZW1pdCBhIHBhY2tldDMg Ki8KKyNkZWZpbmUgUjMwMF9DTURfRU5EM0QJCQk0CS8qIGVtaXQgc2VxdWVuY2UgZW5kaW5nIDNk IHJlbmRlcmluZyAqLworI2RlZmluZSBSMzAwX0NNRF9DUF9ERUxBWQkJNQorI2RlZmluZSBSMzAw X0NNRF9ETUFfRElTQ0FSRAkJNgorI2RlZmluZSBSMzAwX0NNRF9XQUlUCQkJNworIwlkZWZpbmUg UjMwMF9XQUlUXzJECQkweDEKKyMJZGVmaW5lIFIzMDBfV0FJVF8zRAkJMHgyCisvKiB0aGVzZSB0 d28gZGVmaW5lcyBhcmUgRE9JTkcgSVQgV1JPTkcgLSBob3dldmVyCisgKiB3ZSBoYXZlIHVzZXJz cGFjZSB3aGljaCByZWxpZXMgb24gdXNpbmcgdGhlc2UuCisgKiBUaGUgd2FpdCBpbnRlcmZhY2Ug aXMgYmFja3dhcmRzIGNvbXBhdCBuZXcgCisgKiBjb2RlIHNob3VsZCB1c2UgdGhlIE5FV19XQUlU IGRlZmluZXMgYmVsb3cKKyAqIFRIRVNFIEFSRSBOT1QgQklUIEZJRUxEUworICovCisjCWRlZmlu ZSBSMzAwX1dBSVRfMkRfQ0xFQU4JMHgzCisjCWRlZmluZSBSMzAwX1dBSVRfM0RfQ0xFQU4JMHg0 CisKKyMJZGVmaW5lIFIzMDBfTkVXX1dBSVRfMkRfM0QJMHgzCisjCWRlZmluZSBSMzAwX05FV19X QUlUXzJEXzJEX0NMRUFOCTB4NAorIwlkZWZpbmUgUjMwMF9ORVdfV0FJVF8zRF8zRF9DTEVBTgkw eDYKKyMJZGVmaW5lIFIzMDBfTkVXX1dBSVRfMkRfMkRfQ0xFQU5fM0RfM0RfQ0xFQU4JMHg4CisK KyNkZWZpbmUgUjMwMF9DTURfU0NSQVRDSAkJOAorI2RlZmluZSBSMzAwX0NNRF9SNTAwRlAgICAg ICAgICAgICAgICAgIDkKKwordHlwZWRlZiB1bmlvbiB7CisJdW5zaWduZWQgaW50IHU7CisJc3Ry dWN0IHsKKwkJdW5zaWduZWQgY2hhciBjbWRfdHlwZSwgcGFkMCwgcGFkMSwgcGFkMjsKKwl9IGhl YWRlcjsKKwlzdHJ1Y3QgeworCQl1bnNpZ25lZCBjaGFyIGNtZF90eXBlLCBjb3VudCwgcmVnbG8s IHJlZ2hpOworCX0gcGFja2V0MDsKKwlzdHJ1Y3QgeworCQl1bnNpZ25lZCBjaGFyIGNtZF90eXBl LCBjb3VudCwgYWRybG8sIGFkcmhpOworCX0gdnB1OworCXN0cnVjdCB7CisJCXVuc2lnbmVkIGNo YXIgY21kX3R5cGUsIHBhY2tldCwgcGFkMCwgcGFkMTsKKwl9IHBhY2tldDM7CisJc3RydWN0IHsK KwkJdW5zaWduZWQgY2hhciBjbWRfdHlwZSwgcGFja2V0OworCQl1bnNpZ25lZCBzaG9ydCBjb3Vu dDsJLyogYW1vdW50IG9mIHBhY2tldDIgdG8gZW1pdCAqLworCX0gZGVsYXk7CisJc3RydWN0IHsK KwkJdW5zaWduZWQgY2hhciBjbWRfdHlwZSwgYnVmX2lkeCwgcGFkMCwgcGFkMTsKKwl9IGRtYTsK KwlzdHJ1Y3QgeworCQl1bnNpZ25lZCBjaGFyIGNtZF90eXBlLCBmbGFncywgcGFkMCwgcGFkMTsK Kwl9IHdhaXQ7CisJc3RydWN0IHsKKwkJdW5zaWduZWQgY2hhciBjbWRfdHlwZSwgcmVnLCBuX2J1 ZnMsIGZsYWdzOworCX0gc2NyYXRjaDsKKwlzdHJ1Y3QgeworCQl1bnNpZ25lZCBjaGFyIGNtZF90 eXBlLCBjb3VudCwgYWRybG8sIGFkcmhpX2ZsYWdzOworCX0gcjUwMGZwOworfSBkcm1fcjMwMF9j bWRfaGVhZGVyX3Q7CisKKyNkZWZpbmUgUkFERU9OX0ZST05UCQkJMHgxCisjZGVmaW5lIFJBREVP Tl9CQUNLCQkJMHgyCisjZGVmaW5lIFJBREVPTl9ERVBUSAkJCTB4NAorI2RlZmluZSBSQURFT05f U1RFTkNJTAkJCTB4OAorI2RlZmluZSBSQURFT05fQ0xFQVJfRkFTVFoJCTB4ODAwMDAwMDAKKyNk ZWZpbmUgUkFERU9OX1VTRV9ISUVSWgkJMHg0MDAwMDAwMAorI2RlZmluZSBSQURFT05fVVNFX0NP TVBfWkJVRgkJMHgyMDAwMDAwMAorCisjZGVmaW5lIFI1MDBGUF9DT05TVEFOVF9UWVBFICAoMSA8 PCAxKQorI2RlZmluZSBSNTAwRlBfQ09OU1RBTlRfQ0xBTVAgKDEgPDwgMikKKworLyogUHJpbWl0 aXZlIHR5cGVzCisgKi8KKyNkZWZpbmUgUkFERU9OX1BPSU5UUwkJCTB4MQorI2RlZmluZSBSQURF T05fTElORVMJCQkweDIKKyNkZWZpbmUgUkFERU9OX0xJTkVfU1RSSVAJCTB4MworI2RlZmluZSBS QURFT05fVFJJQU5HTEVTCQkweDQKKyNkZWZpbmUgUkFERU9OX1RSSUFOR0xFX0ZBTgkJMHg1Cisj ZGVmaW5lIFJBREVPTl9UUklBTkdMRV9TVFJJUAkJMHg2CisKKy8qIFZlcnRleC9pbmRpcmVjdCBi dWZmZXIgc2l6ZQorICovCisjZGVmaW5lIFJBREVPTl9CVUZGRVJfU0laRQkJNjU1MzYKKworLyog Qnl0ZSBvZmZzZXRzIGZvciBpbmRpcmVjdCBidWZmZXIgZGF0YQorICovCisjZGVmaW5lIFJBREVP Tl9JTkRFWF9QUklNX09GRlNFVAkyMAorCisjZGVmaW5lIFJBREVPTl9TQ1JBVENIX1JFR19PRkZT RVQJMzIKKworI2RlZmluZSBSNjAwX1NDUkFUQ0hfUkVHX09GRlNFVCAgICAgICAgIDI1NgorCisj ZGVmaW5lIFJBREVPTl9OUl9TQVJFQV9DTElQUkVDVFMJMTIKKworLyogVGhlcmUgYXJlIDIgaGVh cHMgKGxvY2FsL0dBUlQpLiAgRWFjaCByZWdpb24gd2l0aGluIGEgaGVhcCBpcyBhCisgKiBtaW5p bXVtIG9mIDY0aywgYW5kIHRoZXJlIGFyZSBhdCBtb3N0IDY0IG9mIHRoZW0gcGVyIGhlYXAuCisg Ki8KKyNkZWZpbmUgUkFERU9OX0xPQ0FMX1RFWF9IRUFQCQkwCisjZGVmaW5lIFJBREVPTl9HQVJU X1RFWF9IRUFQCQkxCisjZGVmaW5lIFJBREVPTl9OUl9URVhfSEVBUFMJCTIKKyNkZWZpbmUgUkFE RU9OX05SX1RFWF9SRUdJT05TCQk2NAorI2RlZmluZSBSQURFT05fTE9HX1RFWF9HUkFOVUxBUklU WQkxNgorCisjZGVmaW5lIFJBREVPTl9NQVhfVEVYVFVSRV9MRVZFTFMJMTIKKyNkZWZpbmUgUkFE RU9OX01BWF9URVhUVVJFX1VOSVRTCTMKKworI2RlZmluZSBSQURFT05fTUFYX1NVUkZBQ0VTCQk4 CisKKy8qIEJsaXRzIGhhdmUgc3RyaWN0IG9mZnNldCBydWxlcy4gIEFsbCBibGl0IG9mZnNldCBt dXN0IGJlIGFsaWduZWQgb24KKyAqIGEgMUstYnl0ZSBib3VuZGFyeS4KKyAqLworI2RlZmluZSBS QURFT05fT0ZGU0VUX1NISUZUICAgICAgICAgICAgIDEwCisjZGVmaW5lIFJBREVPTl9PRkZTRVRf QUxJR04gICAgICAgICAgICAgKDEgPDwgUkFERU9OX09GRlNFVF9TSElGVCkKKyNkZWZpbmUgUkFE RU9OX09GRlNFVF9NQVNLICAgICAgICAgICAgICAoUkFERU9OX09GRlNFVF9BTElHTiAtIDEpCisK KyNlbmRpZgkJCQkvKiBfX1JBREVPTl9TQVJFQV9ERUZJTkVTX18gKi8KKwordHlwZWRlZiBzdHJ1 Y3QgeworCXVuc2lnbmVkIGludCByZWQ7CisJdW5zaWduZWQgaW50IGdyZWVuOworCXVuc2lnbmVk IGludCBibHVlOworCXVuc2lnbmVkIGludCBhbHBoYTsKK30gcmFkZW9uX2NvbG9yX3JlZ3NfdDsK KwordHlwZWRlZiBzdHJ1Y3QgeworCS8qIENvbnRleHQgc3RhdGUgKi8KKwl1bnNpZ25lZCBpbnQg cHBfbWlzYzsJLyogMHgxYzE0ICovCisJdW5zaWduZWQgaW50IHBwX2ZvZ19jb2xvcjsKKwl1bnNp Z25lZCBpbnQgcmVfc29saWRfY29sb3I7CisJdW5zaWduZWQgaW50IHJiM2RfYmxlbmRjbnRsOwor CXVuc2lnbmVkIGludCByYjNkX2RlcHRob2Zmc2V0OworCXVuc2lnbmVkIGludCByYjNkX2RlcHRo cGl0Y2g7CisJdW5zaWduZWQgaW50IHJiM2RfenN0ZW5jaWxjbnRsOworCisJdW5zaWduZWQgaW50 IHBwX2NudGw7CS8qIDB4MWMzOCAqLworCXVuc2lnbmVkIGludCByYjNkX2NudGw7CisJdW5zaWdu ZWQgaW50IHJiM2RfY29sb3JvZmZzZXQ7CisJdW5zaWduZWQgaW50IHJlX3dpZHRoX2hlaWdodDsK Kwl1bnNpZ25lZCBpbnQgcmIzZF9jb2xvcnBpdGNoOworCXVuc2lnbmVkIGludCBzZV9jbnRsOwor CisJLyogVmVydGV4IGZvcm1hdCBzdGF0ZSAqLworCXVuc2lnbmVkIGludCBzZV9jb29yZF9mbXQ7 CS8qIDB4MWM1MCAqLworCisJLyogTGluZSBzdGF0ZSAqLworCXVuc2lnbmVkIGludCByZV9saW5l X3BhdHRlcm47CS8qIDB4MWNkMCAqLworCXVuc2lnbmVkIGludCByZV9saW5lX3N0YXRlOworCisJ dW5zaWduZWQgaW50IHNlX2xpbmVfd2lkdGg7CS8qIDB4MWRiOCAqLworCisJLyogQnVtcG1hcCBz dGF0ZSAqLworCXVuc2lnbmVkIGludCBwcF9sdW1fbWF0cml4OwkvKiAweDFkMDAgKi8KKworCXVu c2lnbmVkIGludCBwcF9yb3RfbWF0cml4XzA7CS8qIDB4MWQ1OCAqLworCXVuc2lnbmVkIGludCBw cF9yb3RfbWF0cml4XzE7CisKKwkvKiBNYXNrIHN0YXRlICovCisJdW5zaWduZWQgaW50IHJiM2Rf c3RlbmNpbHJlZm1hc2s7CS8qIDB4MWQ3YyAqLworCXVuc2lnbmVkIGludCByYjNkX3JvcGNudGw7 CisJdW5zaWduZWQgaW50IHJiM2RfcGxhbmVtYXNrOworCisJLyogVmlld3BvcnQgc3RhdGUgKi8K Kwl1bnNpZ25lZCBpbnQgc2VfdnBvcnRfeHNjYWxlOwkvKiAweDFkOTggKi8KKwl1bnNpZ25lZCBp bnQgc2VfdnBvcnRfeG9mZnNldDsKKwl1bnNpZ25lZCBpbnQgc2VfdnBvcnRfeXNjYWxlOworCXVu c2lnbmVkIGludCBzZV92cG9ydF95b2Zmc2V0OworCXVuc2lnbmVkIGludCBzZV92cG9ydF96c2Nh bGU7CisJdW5zaWduZWQgaW50IHNlX3Zwb3J0X3pvZmZzZXQ7CisKKwkvKiBTZXR1cCBzdGF0ZSAq LworCXVuc2lnbmVkIGludCBzZV9jbnRsX3N0YXR1czsJLyogMHgyMTQwICovCisKKwkvKiBNaXNj IHN0YXRlICovCisJdW5zaWduZWQgaW50IHJlX3RvcF9sZWZ0OwkvKiAweDI2YzAgKi8KKwl1bnNp Z25lZCBpbnQgcmVfbWlzYzsKK30gZHJtX3JhZGVvbl9jb250ZXh0X3JlZ3NfdDsKKwordHlwZWRl ZiBzdHJ1Y3QgeworCS8qIFpiaWFzIHN0YXRlICovCisJdW5zaWduZWQgaW50IHNlX3piaWFzX2Zh Y3RvcjsJLyogMHgxZGFjICovCisJdW5zaWduZWQgaW50IHNlX3piaWFzX2NvbnN0YW50OworfSBk cm1fcmFkZW9uX2NvbnRleHQyX3JlZ3NfdDsKKworLyogU2V0dXAgcmVnaXN0ZXJzIGZvciBlYWNo IHRleHR1cmUgdW5pdAorICovCit0eXBlZGVmIHN0cnVjdCB7CisJdW5zaWduZWQgaW50IHBwX3R4 ZmlsdGVyOworCXVuc2lnbmVkIGludCBwcF90eGZvcm1hdDsKKwl1bnNpZ25lZCBpbnQgcHBfdHhv ZmZzZXQ7CisJdW5zaWduZWQgaW50IHBwX3R4Y2JsZW5kOworCXVuc2lnbmVkIGludCBwcF90eGFi bGVuZDsKKwl1bnNpZ25lZCBpbnQgcHBfdGZhY3RvcjsKKwl1bnNpZ25lZCBpbnQgcHBfYm9yZGVy X2NvbG9yOworfSBkcm1fcmFkZW9uX3RleHR1cmVfcmVnc190OworCit0eXBlZGVmIHN0cnVjdCB7 CisJdW5zaWduZWQgaW50IHN0YXJ0OworCXVuc2lnbmVkIGludCBmaW5pc2g7CisJdW5zaWduZWQg aW50IHByaW06ODsKKwl1bnNpZ25lZCBpbnQgc3RhdGVpZHg6ODsKKwl1bnNpZ25lZCBpbnQgbnVt dmVydHM6MTY7CS8qIG92ZXJsb2FkZWQgYXMgb2Zmc2V0LzY0IGZvciBlbHQgcHJpbXMgKi8KKwl1 bnNpZ25lZCBpbnQgdmNfZm9ybWF0OwkvKiB2ZXJ0ZXggZm9ybWF0ICovCit9IGRybV9yYWRlb25f cHJpbV90OworCit0eXBlZGVmIHN0cnVjdCB7CisJZHJtX3JhZGVvbl9jb250ZXh0X3JlZ3NfdCBj b250ZXh0OworCWRybV9yYWRlb25fdGV4dHVyZV9yZWdzX3QgdGV4W1JBREVPTl9NQVhfVEVYVFVS RV9VTklUU107CisJZHJtX3JhZGVvbl9jb250ZXh0Ml9yZWdzX3QgY29udGV4dDI7CisJdW5zaWdu ZWQgaW50IGRpcnR5OworfSBkcm1fcmFkZW9uX3N0YXRlX3Q7CisKK3R5cGVkZWYgc3RydWN0IHsK KwkvKiBUaGUgY2hhbm5lbCBmb3IgY29tbXVuaWNhdGlvbiBvZiBzdGF0ZSBpbmZvcm1hdGlvbiB0 byB0aGUKKwkgKiBrZXJuZWwgb24gZmlyaW5nIGEgdmVydGV4IGJ1ZmZlciB3aXRoIGVpdGhlciBv ZiB0aGUKKwkgKiBvYnNvbGV0ZWQgdmVydGV4L2luZGV4IGlvY3Rscy4KKwkgKi8KKwlkcm1fcmFk ZW9uX2NvbnRleHRfcmVnc190IGNvbnRleHRfc3RhdGU7CisJZHJtX3JhZGVvbl90ZXh0dXJlX3Jl Z3NfdCB0ZXhfc3RhdGVbUkFERU9OX01BWF9URVhUVVJFX1VOSVRTXTsKKwl1bnNpZ25lZCBpbnQg ZGlydHk7CisJdW5zaWduZWQgaW50IHZlcnRzaXplOworCXVuc2lnbmVkIGludCB2Y19mb3JtYXQ7 CisKKwkvKiBUaGUgY3VycmVudCBjbGlwcmVjdHMsIG9yIGEgc3Vic2V0IHRoZXJlb2YuCisJICov CisJc3RydWN0IGRybV9jbGlwX3JlY3QgYm94ZXNbUkFERU9OX05SX1NBUkVBX0NMSVBSRUNUU107 CisJdW5zaWduZWQgaW50IG5ib3g7CisKKwkvKiBDb3VudGVycyBmb3IgY2xpZW50LXNpZGUgdGhy b3R0bGluZyBvZiByZW5kZXJpbmcgY2xpZW50cy4KKwkgKi8KKwl1bnNpZ25lZCBpbnQgbGFzdF9m cmFtZTsKKwl1bnNpZ25lZCBpbnQgbGFzdF9kaXNwYXRjaDsKKwl1bnNpZ25lZCBpbnQgbGFzdF9j bGVhcjsKKworCXN0cnVjdCBkcm1fdGV4X3JlZ2lvbiB0ZXhfbGlzdFtSQURFT05fTlJfVEVYX0hF QVBTXVtSQURFT05fTlJfVEVYX1JFR0lPTlMgKworCQkJCQkJICAgICAgIDFdOworCXVuc2lnbmVk IGludCB0ZXhfYWdlW1JBREVPTl9OUl9URVhfSEVBUFNdOworCWludCBjdHhfb3duZXI7CisJaW50 IHBmU3RhdGU7CQkvKiBudW1iZXIgb2YgM2Qgd2luZG93cyAoMCwxLDJvcm1vcmUpICovCisJaW50 IHBmQ3VycmVudFBhZ2U7CS8qIHdoaWNoIGJ1ZmZlciBpcyBiZWluZyBkaXNwbGF5ZWQ/ICovCisJ aW50IGNydGMyX2Jhc2U7CQkvKiBDUlRDMiBmcmFtZSBvZmZzZXQgKi8KKwlpbnQgdGlsaW5nX2Vu YWJsZWQ7CS8qIHNldCBieSBkcm0sIHJlYWQgYnkgMmQgKyAzZCBjbGllbnRzICovCit9IGRybV9y YWRlb25fc2FyZWFfdDsKKworLyogV0FSTklORzogSWYgeW91IGNoYW5nZSBhbnkgb2YgdGhlc2Ug ZGVmaW5lcywgbWFrZSBzdXJlIHRvIGNoYW5nZSB0aGUKKyAqIGRlZmluZXMgaW4gdGhlIFhzZXJ2 ZXIgZmlsZSAoeGY4NmRybVJhZGVvbi5oKQorICoKKyAqIEtXOiBhY3R1YWxseSBpdCdzIGlsbGVn YWwgdG8gY2hhbmdlIGFueSBvZiB0aGlzIChiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSkuCisgKi8K KworLyogUmFkZW9uIHNwZWNpZmljIGlvY3RscworICogVGhlIGRldmljZSBzcGVjaWZpYyBpb2N0 bCByYW5nZSBpcyAweDQwIHRvIDB4NzkuCisgKi8KKyNkZWZpbmUgRFJNX1JBREVPTl9DUF9JTklU ICAgIDB4MDAKKyNkZWZpbmUgRFJNX1JBREVPTl9DUF9TVEFSVCAgIDB4MDEKKyNkZWZpbmUgRFJN X1JBREVPTl9DUF9TVE9QICAgIDB4MDIKKyNkZWZpbmUgRFJNX1JBREVPTl9DUF9SRVNFVCAgIDB4 MDMKKyNkZWZpbmUgRFJNX1JBREVPTl9DUF9JRExFICAgIDB4MDQKKyNkZWZpbmUgRFJNX1JBREVP Tl9SRVNFVCAgICAgIDB4MDUKKyNkZWZpbmUgRFJNX1JBREVPTl9GVUxMU0NSRUVOIDB4MDYKKyNk ZWZpbmUgRFJNX1JBREVPTl9TV0FQICAgICAgIDB4MDcKKyNkZWZpbmUgRFJNX1JBREVPTl9DTEVB UiAgICAgIDB4MDgKKyNkZWZpbmUgRFJNX1JBREVPTl9WRVJURVggICAgIDB4MDkKKyNkZWZpbmUg RFJNX1JBREVPTl9JTkRJQ0VTICAgIDB4MEEKKyNkZWZpbmUgRFJNX1JBREVPTl9OT1RfVVNFRAor I2RlZmluZSBEUk1fUkFERU9OX1NUSVBQTEUgICAgMHgwQworI2RlZmluZSBEUk1fUkFERU9OX0lO RElSRUNUICAgMHgwRAorI2RlZmluZSBEUk1fUkFERU9OX1RFWFRVUkUgICAgMHgwRQorI2RlZmlu ZSBEUk1fUkFERU9OX1ZFUlRFWDIgICAgMHgwRgorI2RlZmluZSBEUk1fUkFERU9OX0NNREJVRiAg ICAgMHgxMAorI2RlZmluZSBEUk1fUkFERU9OX0dFVFBBUkFNICAgMHgxMQorI2RlZmluZSBEUk1f UkFERU9OX0ZMSVAgICAgICAgMHgxMgorI2RlZmluZSBEUk1fUkFERU9OX0FMTE9DICAgICAgMHgx MworI2RlZmluZSBEUk1fUkFERU9OX0ZSRUUgICAgICAgMHgxNAorI2RlZmluZSBEUk1fUkFERU9O X0lOSVRfSEVBUCAgMHgxNQorI2RlZmluZSBEUk1fUkFERU9OX0lSUV9FTUlUICAgMHgxNgorI2Rl ZmluZSBEUk1fUkFERU9OX0lSUV9XQUlUICAgMHgxNworI2RlZmluZSBEUk1fUkFERU9OX0NQX1JF U1VNRSAgMHgxOAorI2RlZmluZSBEUk1fUkFERU9OX1NFVFBBUkFNICAgMHgxOQorI2RlZmluZSBE Uk1fUkFERU9OX1NVUkZfQUxMT0MgMHgxYQorI2RlZmluZSBEUk1fUkFERU9OX1NVUkZfRlJFRSAg MHgxYgorLyogS01TIGlvY3RsICovCisjZGVmaW5lIERSTV9SQURFT05fR0VNX0lORk8JCTB4MWMK KyNkZWZpbmUgRFJNX1JBREVPTl9HRU1fQ1JFQVRFCQkweDFkCisjZGVmaW5lIERSTV9SQURFT05f R0VNX01NQVAJCTB4MWUKKyNkZWZpbmUgRFJNX1JBREVPTl9HRU1fUFJFQUQJCTB4MjEKKyNkZWZp bmUgRFJNX1JBREVPTl9HRU1fUFdSSVRFCQkweDIyCisjZGVmaW5lIERSTV9SQURFT05fR0VNX1NF VF9ET01BSU4JMHgyMworI2RlZmluZSBEUk1fUkFERU9OX0dFTV9XQUlUX0lETEUJMHgyNAorI2Rl ZmluZSBEUk1fUkFERU9OX0NTCQkJMHgyNgorI2RlZmluZSBEUk1fUkFERU9OX0lORk8JCQkweDI3 CisjZGVmaW5lIERSTV9SQURFT05fR0VNX1NFVF9USUxJTkcJMHgyOAorI2RlZmluZSBEUk1fUkFE RU9OX0dFTV9HRVRfVElMSU5HCTB4MjkKKyNkZWZpbmUgRFJNX1JBREVPTl9HRU1fQlVTWQkJMHgy YQorI2RlZmluZSBEUk1fUkFERU9OX0dFTV9WQQkJMHgyYgorI2RlZmluZSBEUk1fUkFERU9OX0dF TV9PUAkJMHgyYworI2RlZmluZSBEUk1fUkFERU9OX0dFTV9VU0VSUFRSCQkweDJkCisKKyNkZWZp bmUgRFJNX0lPQ1RMX1JBREVPTl9DUF9JTklUICAgIERSTV9JT1coIERSTV9DT01NQU5EX0JBU0Ug KyBEUk1fUkFERU9OX0NQX0lOSVQsIGRybV9yYWRlb25faW5pdF90KQorI2RlZmluZSBEUk1fSU9D VExfUkFERU9OX0NQX1NUQVJUICAgRFJNX0lPKCAgRFJNX0NPTU1BTkRfQkFTRSArIERSTV9SQURF T05fQ1BfU1RBUlQpCisjZGVmaW5lIERSTV9JT0NUTF9SQURFT05fQ1BfU1RPUCAgICBEUk1fSU9X KCBEUk1fQ09NTUFORF9CQVNFICsgRFJNX1JBREVPTl9DUF9TVE9QLCBkcm1fcmFkZW9uX2NwX3N0 b3BfdCkKKyNkZWZpbmUgRFJNX0lPQ1RMX1JBREVPTl9DUF9SRVNFVCAgIERSTV9JTyggIERSTV9D T01NQU5EX0JBU0UgKyBEUk1fUkFERU9OX0NQX1JFU0VUKQorI2RlZmluZSBEUk1fSU9DVExfUkFE RU9OX0NQX0lETEUgICAgRFJNX0lPKCAgRFJNX0NPTU1BTkRfQkFTRSArIERSTV9SQURFT05fQ1Bf SURMRSkKKyNkZWZpbmUgRFJNX0lPQ1RMX1JBREVPTl9SRVNFVCAgICAgIERSTV9JTyggIERSTV9D T01NQU5EX0JBU0UgKyBEUk1fUkFERU9OX1JFU0VUKQorI2RlZmluZSBEUk1fSU9DVExfUkFERU9O X0ZVTExTQ1JFRU4gRFJNX0lPVyggRFJNX0NPTU1BTkRfQkFTRSArIERSTV9SQURFT05fRlVMTFND UkVFTiwgZHJtX3JhZGVvbl9mdWxsc2NyZWVuX3QpCisjZGVmaW5lIERSTV9JT0NUTF9SQURFT05f U1dBUCAgICAgICBEUk1fSU8oICBEUk1fQ09NTUFORF9CQVNFICsgRFJNX1JBREVPTl9TV0FQKQor I2RlZmluZSBEUk1fSU9DVExfUkFERU9OX0NMRUFSICAgICAgRFJNX0lPVyggRFJNX0NPTU1BTkRf QkFTRSArIERSTV9SQURFT05fQ0xFQVIsIGRybV9yYWRlb25fY2xlYXJfdCkKKyNkZWZpbmUgRFJN X0lPQ1RMX1JBREVPTl9WRVJURVggICAgIERSTV9JT1coIERSTV9DT01NQU5EX0JBU0UgKyBEUk1f UkFERU9OX1ZFUlRFWCwgZHJtX3JhZGVvbl92ZXJ0ZXhfdCkKKyNkZWZpbmUgRFJNX0lPQ1RMX1JB REVPTl9JTkRJQ0VTICAgIERSTV9JT1coIERSTV9DT01NQU5EX0JBU0UgKyBEUk1fUkFERU9OX0lO RElDRVMsIGRybV9yYWRlb25faW5kaWNlc190KQorI2RlZmluZSBEUk1fSU9DVExfUkFERU9OX1NU SVBQTEUgICAgRFJNX0lPVyggRFJNX0NPTU1BTkRfQkFTRSArIERSTV9SQURFT05fU1RJUFBMRSwg ZHJtX3JhZGVvbl9zdGlwcGxlX3QpCisjZGVmaW5lIERSTV9JT0NUTF9SQURFT05fSU5ESVJFQ1Qg ICBEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX1JBREVPTl9JTkRJUkVDVCwgZHJtX3Jh ZGVvbl9pbmRpcmVjdF90KQorI2RlZmluZSBEUk1fSU9DVExfUkFERU9OX1RFWFRVUkUgICAgRFJN X0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9SQURFT05fVEVYVFVSRSwgZHJtX3JhZGVvbl90 ZXh0dXJlX3QpCisjZGVmaW5lIERSTV9JT0NUTF9SQURFT05fVkVSVEVYMiAgICBEUk1fSU9XKCBE Uk1fQ09NTUFORF9CQVNFICsgRFJNX1JBREVPTl9WRVJURVgyLCBkcm1fcmFkZW9uX3ZlcnRleDJf dCkKKyNkZWZpbmUgRFJNX0lPQ1RMX1JBREVPTl9DTURCVUYgICAgIERSTV9JT1coIERSTV9DT01N QU5EX0JBU0UgKyBEUk1fUkFERU9OX0NNREJVRiwgZHJtX3JhZGVvbl9jbWRfYnVmZmVyX3QpCisj ZGVmaW5lIERSTV9JT0NUTF9SQURFT05fR0VUUEFSQU0gICBEUk1fSU9XUihEUk1fQ09NTUFORF9C QVNFICsgRFJNX1JBREVPTl9HRVRQQVJBTSwgZHJtX3JhZGVvbl9nZXRwYXJhbV90KQorI2RlZmlu ZSBEUk1fSU9DVExfUkFERU9OX0ZMSVAgICAgICAgRFJNX0lPKCAgRFJNX0NPTU1BTkRfQkFTRSAr IERSTV9SQURFT05fRkxJUCkKKyNkZWZpbmUgRFJNX0lPQ1RMX1JBREVPTl9BTExPQyAgICAgIERS TV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fUkFERU9OX0FMTE9DLCBkcm1fcmFkZW9uX21l bV9hbGxvY190KQorI2RlZmluZSBEUk1fSU9DVExfUkFERU9OX0ZSRUUgICAgICAgRFJNX0lPVygg RFJNX0NPTU1BTkRfQkFTRSArIERSTV9SQURFT05fRlJFRSwgZHJtX3JhZGVvbl9tZW1fZnJlZV90 KQorI2RlZmluZSBEUk1fSU9DVExfUkFERU9OX0lOSVRfSEVBUCAgRFJNX0lPVyggRFJNX0NPTU1B TkRfQkFTRSArIERSTV9SQURFT05fSU5JVF9IRUFQLCBkcm1fcmFkZW9uX21lbV9pbml0X2hlYXBf dCkKKyNkZWZpbmUgRFJNX0lPQ1RMX1JBREVPTl9JUlFfRU1JVCAgIERSTV9JT1dSKERSTV9DT01N QU5EX0JBU0UgKyBEUk1fUkFERU9OX0lSUV9FTUlULCBkcm1fcmFkZW9uX2lycV9lbWl0X3QpCisj ZGVmaW5lIERSTV9JT0NUTF9SQURFT05fSVJRX1dBSVQgICBEUk1fSU9XKCBEUk1fQ09NTUFORF9C QVNFICsgRFJNX1JBREVPTl9JUlFfV0FJVCwgZHJtX3JhZGVvbl9pcnFfd2FpdF90KQorI2RlZmlu ZSBEUk1fSU9DVExfUkFERU9OX0NQX1JFU1VNRSAgRFJNX0lPKCAgRFJNX0NPTU1BTkRfQkFTRSAr IERSTV9SQURFT05fQ1BfUkVTVU1FKQorI2RlZmluZSBEUk1fSU9DVExfUkFERU9OX1NFVFBBUkFN ICAgRFJNX0lPVyggRFJNX0NPTU1BTkRfQkFTRSArIERSTV9SQURFT05fU0VUUEFSQU0sIGRybV9y YWRlb25fc2V0cGFyYW1fdCkKKyNkZWZpbmUgRFJNX0lPQ1RMX1JBREVPTl9TVVJGX0FMTE9DIERS TV9JT1coIERSTV9DT01NQU5EX0JBU0UgKyBEUk1fUkFERU9OX1NVUkZfQUxMT0MsIGRybV9yYWRl b25fc3VyZmFjZV9hbGxvY190KQorI2RlZmluZSBEUk1fSU9DVExfUkFERU9OX1NVUkZfRlJFRSAg RFJNX0lPVyggRFJNX0NPTU1BTkRfQkFTRSArIERSTV9SQURFT05fU1VSRl9GUkVFLCBkcm1fcmFk ZW9uX3N1cmZhY2VfZnJlZV90KQorLyogS01TICovCisjZGVmaW5lIERSTV9JT0NUTF9SQURFT05f R0VNX0lORk8JRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9SQURFT05fR0VNX0lORk8s IHN0cnVjdCBkcm1fcmFkZW9uX2dlbV9pbmZvKQorI2RlZmluZSBEUk1fSU9DVExfUkFERU9OX0dF TV9DUkVBVEUJRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9SQURFT05fR0VNX0NSRUFU RSwgc3RydWN0IGRybV9yYWRlb25fZ2VtX2NyZWF0ZSkKKyNkZWZpbmUgRFJNX0lPQ1RMX1JBREVP Tl9HRU1fTU1BUAlEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX1JBREVPTl9HRU1fTU1B UCwgc3RydWN0IGRybV9yYWRlb25fZ2VtX21tYXApCisjZGVmaW5lIERSTV9JT0NUTF9SQURFT05f R0VNX1BSRUFECURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fUkFERU9OX0dFTV9QUkVB RCwgc3RydWN0IGRybV9yYWRlb25fZ2VtX3ByZWFkKQorI2RlZmluZSBEUk1fSU9DVExfUkFERU9O X0dFTV9QV1JJVEUJRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9SQURFT05fR0VNX1BX UklURSwgc3RydWN0IGRybV9yYWRlb25fZ2VtX3B3cml0ZSkKKyNkZWZpbmUgRFJNX0lPQ1RMX1JB REVPTl9HRU1fU0VUX0RPTUFJTglEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX1JBREVP Tl9HRU1fU0VUX0RPTUFJTiwgc3RydWN0IGRybV9yYWRlb25fZ2VtX3NldF9kb21haW4pCisjZGVm aW5lIERSTV9JT0NUTF9SQURFT05fR0VNX1dBSVRfSURMRQlEUk1fSU9XKERSTV9DT01NQU5EX0JB U0UgKyBEUk1fUkFERU9OX0dFTV9XQUlUX0lETEUsIHN0cnVjdCBkcm1fcmFkZW9uX2dlbV93YWl0 X2lkbGUpCisjZGVmaW5lIERSTV9JT0NUTF9SQURFT05fQ1MJCURSTV9JT1dSKERSTV9DT01NQU5E X0JBU0UgKyBEUk1fUkFERU9OX0NTLCBzdHJ1Y3QgZHJtX3JhZGVvbl9jcykKKyNkZWZpbmUgRFJN X0lPQ1RMX1JBREVPTl9JTkZPCQlEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX1JBREVP Tl9JTkZPLCBzdHJ1Y3QgZHJtX3JhZGVvbl9pbmZvKQorI2RlZmluZSBEUk1fSU9DVExfUkFERU9O X0dFTV9TRVRfVElMSU5HCURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fUkFERU9OX0dF TV9TRVRfVElMSU5HLCBzdHJ1Y3QgZHJtX3JhZGVvbl9nZW1fc2V0X3RpbGluZykKKyNkZWZpbmUg RFJNX0lPQ1RMX1JBREVPTl9HRU1fR0VUX1RJTElORwlEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNF ICsgRFJNX1JBREVPTl9HRU1fR0VUX1RJTElORywgc3RydWN0IGRybV9yYWRlb25fZ2VtX2dldF90 aWxpbmcpCisjZGVmaW5lIERSTV9JT0NUTF9SQURFT05fR0VNX0JVU1kJRFJNX0lPV1IoRFJNX0NP TU1BTkRfQkFTRSArIERSTV9SQURFT05fR0VNX0JVU1ksIHN0cnVjdCBkcm1fcmFkZW9uX2dlbV9i dXN5KQorI2RlZmluZSBEUk1fSU9DVExfUkFERU9OX0dFTV9WQQkJRFJNX0lPV1IoRFJNX0NPTU1B TkRfQkFTRSArIERSTV9SQURFT05fR0VNX1ZBLCBzdHJ1Y3QgZHJtX3JhZGVvbl9nZW1fdmEpCisj ZGVmaW5lIERSTV9JT0NUTF9SQURFT05fR0VNX09QCQlEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNF ICsgRFJNX1JBREVPTl9HRU1fT1AsIHN0cnVjdCBkcm1fcmFkZW9uX2dlbV9vcCkKKyNkZWZpbmUg RFJNX0lPQ1RMX1JBREVPTl9HRU1fVVNFUlBUUglEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsg RFJNX1JBREVPTl9HRU1fVVNFUlBUUiwgc3RydWN0IGRybV9yYWRlb25fZ2VtX3VzZXJwdHIpCisK K3R5cGVkZWYgc3RydWN0IGRybV9yYWRlb25faW5pdCB7CisJZW51bSB7CisJCVJBREVPTl9JTklU X0NQID0gMHgwMSwKKwkJUkFERU9OX0NMRUFOVVBfQ1AgPSAweDAyLAorCQlSQURFT05fSU5JVF9S MjAwX0NQID0gMHgwMywKKwkJUkFERU9OX0lOSVRfUjMwMF9DUCA9IDB4MDQsCisJCVJBREVPTl9J TklUX1I2MDBfQ1AgPSAweDA1CisJfSBmdW5jOworCXVuc2lnbmVkIGxvbmcgc2FyZWFfcHJpdl9v ZmZzZXQ7CisJaW50IGlzX3BjaTsKKwlpbnQgY3BfbW9kZTsKKwlpbnQgZ2FydF9zaXplOworCWlu dCByaW5nX3NpemU7CisJaW50IHVzZWNfdGltZW91dDsKKworCXVuc2lnbmVkIGludCBmYl9icHA7 CisJdW5zaWduZWQgaW50IGZyb250X29mZnNldCwgZnJvbnRfcGl0Y2g7CisJdW5zaWduZWQgaW50 IGJhY2tfb2Zmc2V0LCBiYWNrX3BpdGNoOworCXVuc2lnbmVkIGludCBkZXB0aF9icHA7CisJdW5z aWduZWQgaW50IGRlcHRoX29mZnNldCwgZGVwdGhfcGl0Y2g7CisKKwl1bnNpZ25lZCBsb25nIGZi X29mZnNldDsKKwl1bnNpZ25lZCBsb25nIG1taW9fb2Zmc2V0OworCXVuc2lnbmVkIGxvbmcgcmlu Z19vZmZzZXQ7CisJdW5zaWduZWQgbG9uZyByaW5nX3JwdHJfb2Zmc2V0OworCXVuc2lnbmVkIGxv bmcgYnVmZmVyc19vZmZzZXQ7CisJdW5zaWduZWQgbG9uZyBnYXJ0X3RleHR1cmVzX29mZnNldDsK K30gZHJtX3JhZGVvbl9pbml0X3Q7CisKK3R5cGVkZWYgc3RydWN0IGRybV9yYWRlb25fY3Bfc3Rv cCB7CisJaW50IGZsdXNoOworCWludCBpZGxlOworfSBkcm1fcmFkZW9uX2NwX3N0b3BfdDsKKwor dHlwZWRlZiBzdHJ1Y3QgZHJtX3JhZGVvbl9mdWxsc2NyZWVuIHsKKwllbnVtIHsKKwkJUkFERU9O X0lOSVRfRlVMTFNDUkVFTiA9IDB4MDEsCisJCVJBREVPTl9DTEVBTlVQX0ZVTExTQ1JFRU4gPSAw eDAyCisJfSBmdW5jOworfSBkcm1fcmFkZW9uX2Z1bGxzY3JlZW5fdDsKKworI2RlZmluZSBDTEVB Ul9YMQkwCisjZGVmaW5lIENMRUFSX1kxCTEKKyNkZWZpbmUgQ0xFQVJfWDIJMgorI2RlZmluZSBD TEVBUl9ZMgkzCisjZGVmaW5lIENMRUFSX0RFUFRICTQKKwordHlwZWRlZiB1bmlvbiBkcm1fcmFk ZW9uX2NsZWFyX3JlY3QgeworCWZsb2F0IGZbNV07CisJdW5zaWduZWQgaW50IHVpWzVdOworfSBk cm1fcmFkZW9uX2NsZWFyX3JlY3RfdDsKKwordHlwZWRlZiBzdHJ1Y3QgZHJtX3JhZGVvbl9jbGVh ciB7CisJdW5zaWduZWQgaW50IGZsYWdzOworCXVuc2lnbmVkIGludCBjbGVhcl9jb2xvcjsKKwl1 bnNpZ25lZCBpbnQgY2xlYXJfZGVwdGg7CisJdW5zaWduZWQgaW50IGNvbG9yX21hc2s7CisJdW5z aWduZWQgaW50IGRlcHRoX21hc2s7CS8qIG1pc25hbWVkIGZpZWxkOiAgc2hvdWxkIGJlIHN0ZW5j aWwgKi8KKwlkcm1fcmFkZW9uX2NsZWFyX3JlY3RfdCAqZGVwdGhfYm94ZXM7Cit9IGRybV9yYWRl b25fY2xlYXJfdDsKKwordHlwZWRlZiBzdHJ1Y3QgZHJtX3JhZGVvbl92ZXJ0ZXggeworCWludCBw cmltOworCWludCBpZHg7CQkvKiBJbmRleCBvZiB2ZXJ0ZXggYnVmZmVyICovCisJaW50IGNvdW50 OwkJLyogTnVtYmVyIG9mIHZlcnRpY2VzIGluIGJ1ZmZlciAqLworCWludCBkaXNjYXJkOwkJLyog Q2xpZW50IGZpbmlzaGVkIHdpdGggYnVmZmVyPyAqLworfSBkcm1fcmFkZW9uX3ZlcnRleF90Owor Cit0eXBlZGVmIHN0cnVjdCBkcm1fcmFkZW9uX2luZGljZXMgeworCWludCBwcmltOworCWludCBp ZHg7CisJaW50IHN0YXJ0OworCWludCBlbmQ7CisJaW50IGRpc2NhcmQ7CQkvKiBDbGllbnQgZmlu aXNoZWQgd2l0aCBidWZmZXI/ICovCit9IGRybV9yYWRlb25faW5kaWNlc190OworCisvKiB2MS4y IC0gb2Jzb2xldGVzIGRybV9yYWRlb25fdmVydGV4IGFuZCBkcm1fcmFkZW9uX2luZGljZXMKKyAq ICAgICAgLSBhbGxvd3MgbXVsdGlwbGUgcHJpbWl0aXZlcyBhbmQgc3RhdGUgY2hhbmdlcyBpbiBh IHNpbmdsZSBpb2N0bAorICogICAgICAtIHN1cHBvcnRzIGRyaXZlciBjaGFuZ2UgdG8gZW1pdCBu YXRpdmUgcHJpbWl0aXZlcworICovCit0eXBlZGVmIHN0cnVjdCBkcm1fcmFkZW9uX3ZlcnRleDIg eworCWludCBpZHg7CQkvKiBJbmRleCBvZiB2ZXJ0ZXggYnVmZmVyICovCisJaW50IGRpc2NhcmQ7 CQkvKiBDbGllbnQgZmluaXNoZWQgd2l0aCBidWZmZXI/ICovCisJaW50IG5yX3N0YXRlczsKKwlk cm1fcmFkZW9uX3N0YXRlX3QgKnN0YXRlOworCWludCBucl9wcmltczsKKwlkcm1fcmFkZW9uX3By aW1fdCAqcHJpbTsKK30gZHJtX3JhZGVvbl92ZXJ0ZXgyX3Q7CisKKy8qIHYxLjMgLSBvYnNvbGV0 ZXMgZHJtX3JhZGVvbl92ZXJ0ZXgyCisgKiAgICAgIC0gYWxsb3dzIGFyYml0cmFyaWx5IGxhcmdl IGNsaXByZWN0IGxpc3QKKyAqICAgICAgLSBhbGxvd3MgdXBkYXRpbmcgb2YgdGNsIHBhY2tldCwg dmVjdG9yIGFuZCBzY2FsYXIgc3RhdGUKKyAqICAgICAgLSBhbGxvd3MgbWVtb3J5LWVmZmljaWVu dCBkZXNjcmlwdGlvbiBvZiBzdGF0ZSB1cGRhdGVzCisgKiAgICAgIC0gYWxsb3dzIHN0YXRlIHRv IGJlIGVtaXR0ZWQgd2l0aG91dCBhIHByaW1pdGl2ZQorICogICAgICAgICAgIChmb3IgY2xlYXJz LCBjdHggc3dpdGNoZXMpCisgKiAgICAgIC0gYWxsb3dzIG1vcmUgdGhhbiBvbmUgZG1hIGJ1ZmZl ciB0byBiZSByZWZlcmVuY2VkIHBlciBpb2N0bAorICogICAgICAtIHN1cHBvcnRzIHRjbCBkcml2 ZXIKKyAqICAgICAgLSBtYXkgYmUgZXh0ZW5kZWQgaW4gZnV0dXJlIHZlcnNpb25zIHdpdGggbmV3 IGNtZCB0eXBlcywgcGFja2V0cworICovCit0eXBlZGVmIHN0cnVjdCBkcm1fcmFkZW9uX2NtZF9i dWZmZXIgeworCWludCBidWZzejsKKwljaGFyICpidWY7CisJaW50IG5ib3g7CisJc3RydWN0IGRy bV9jbGlwX3JlY3QgKmJveGVzOworfSBkcm1fcmFkZW9uX2NtZF9idWZmZXJfdDsKKwordHlwZWRl ZiBzdHJ1Y3QgZHJtX3JhZGVvbl90ZXhfaW1hZ2UgeworCXVuc2lnbmVkIGludCB4LCB5OwkvKiBC bGl0IGNvb3JkaW5hdGVzICovCisJdW5zaWduZWQgaW50IHdpZHRoLCBoZWlnaHQ7CisJY29uc3Qg dm9pZCAqZGF0YTsKK30gZHJtX3JhZGVvbl90ZXhfaW1hZ2VfdDsKKwordHlwZWRlZiBzdHJ1Y3Qg ZHJtX3JhZGVvbl90ZXh0dXJlIHsKKwl1bnNpZ25lZCBpbnQgb2Zmc2V0OworCWludCBwaXRjaDsK KwlpbnQgZm9ybWF0OworCWludCB3aWR0aDsJCS8qIFRleHR1cmUgaW1hZ2UgY29vcmRpbmF0ZXMg Ki8KKwlpbnQgaGVpZ2h0OworCWRybV9yYWRlb25fdGV4X2ltYWdlX3QgKmltYWdlOworfSBkcm1f cmFkZW9uX3RleHR1cmVfdDsKKwordHlwZWRlZiBzdHJ1Y3QgZHJtX3JhZGVvbl9zdGlwcGxlIHsK Kwl1bnNpZ25lZCBpbnQgKm1hc2s7Cit9IGRybV9yYWRlb25fc3RpcHBsZV90OworCit0eXBlZGVm IHN0cnVjdCBkcm1fcmFkZW9uX2luZGlyZWN0IHsKKwlpbnQgaWR4OworCWludCBzdGFydDsKKwlp bnQgZW5kOworCWludCBkaXNjYXJkOworfSBkcm1fcmFkZW9uX2luZGlyZWN0X3Q7CisKKy8qIGVu dW0gZm9yIGNhcmQgdHlwZSBwYXJhbWV0ZXJzICovCisjZGVmaW5lIFJBREVPTl9DQVJEX1BDSSAw CisjZGVmaW5lIFJBREVPTl9DQVJEX0FHUCAxCisjZGVmaW5lIFJBREVPTl9DQVJEX1BDSUUgMgor CisvKiAxLjM6IEFuIGlvY3RsIHRvIGdldCBwYXJhbWV0ZXJzIHRoYXQgYXJlbid0IGF2YWlsYWJs ZSB0byB0aGUgM2QKKyAqIGNsaWVudCBhbnkgb3RoZXIgd2F5LgorICovCisjZGVmaW5lIFJBREVP Tl9QQVJBTV9HQVJUX0JVRkZFUl9PRkZTRVQgICAgMQkvKiBjYXJkIG9mZnNldCBvZiAxc3QgR0FS VCBidWZmZXIgKi8KKyNkZWZpbmUgUkFERU9OX1BBUkFNX0xBU1RfRlJBTUUgICAgICAgICAgICAy CisjZGVmaW5lIFJBREVPTl9QQVJBTV9MQVNUX0RJU1BBVENIICAgICAgICAgMworI2RlZmluZSBS QURFT05fUEFSQU1fTEFTVF9DTEVBUiAgICAgICAgICAgIDQKKy8qIEFkZGVkIHdpdGggRFJNIHZl cnNpb24gMS42LiAqLworI2RlZmluZSBSQURFT05fUEFSQU1fSVJRX05SICAgICAgICAgICAgICAg IDUKKyNkZWZpbmUgUkFERU9OX1BBUkFNX0dBUlRfQkFTRSAgICAgICAgICAgICA2CS8qIGNhcmQg b2Zmc2V0IG9mIEdBUlQgYmFzZSAqLworLyogQWRkZWQgd2l0aCBEUk0gdmVyc2lvbiAxLjguICov CisjZGVmaW5lIFJBREVPTl9QQVJBTV9SRUdJU1RFUl9IQU5ETEUgICAgICAgNwkvKiBmb3IgZHJt TWFwKCkgKi8KKyNkZWZpbmUgUkFERU9OX1BBUkFNX1NUQVRVU19IQU5ETEUgICAgICAgICA4Cisj ZGVmaW5lIFJBREVPTl9QQVJBTV9TQVJFQV9IQU5ETEUgICAgICAgICAgOQorI2RlZmluZSBSQURF T05fUEFSQU1fR0FSVF9URVhfSEFORExFICAgICAgIDEwCisjZGVmaW5lIFJBREVPTl9QQVJBTV9T Q1JBVENIX09GRlNFVCAgICAgICAgMTEKKyNkZWZpbmUgUkFERU9OX1BBUkFNX0NBUkRfVFlQRSAg ICAgICAgICAgICAxMgorI2RlZmluZSBSQURFT05fUEFSQU1fVkJMQU5LX0NSVEMgICAgICAgICAg IDEzICAgLyogVkJMQU5LIENSVEMgKi8KKyNkZWZpbmUgUkFERU9OX1BBUkFNX0ZCX0xPQ0FUSU9O ICAgICAgICAgICAxNCAgIC8qIEZCIGxvY2F0aW9uICovCisjZGVmaW5lIFJBREVPTl9QQVJBTV9O VU1fR0JfUElQRVMgICAgICAgICAgMTUgICAvKiBudW0gR0IgcGlwZXMgKi8KKyNkZWZpbmUgUkFE RU9OX1BBUkFNX0RFVklDRV9JRCAgICAgICAgICAgICAxNgorI2RlZmluZSBSQURFT05fUEFSQU1f TlVNX1pfUElQRVMgICAgICAgICAgIDE3ICAgLyogbnVtIFogcGlwZXMgKi8KKwordHlwZWRlZiBz dHJ1Y3QgZHJtX3JhZGVvbl9nZXRwYXJhbSB7CisJaW50IHBhcmFtOworCXZvaWQgKnZhbHVlOwor fSBkcm1fcmFkZW9uX2dldHBhcmFtX3Q7CisKKy8qIDEuNjogU2V0IHVwIGEgbWVtb3J5IG1hbmFn ZXIgZm9yIHJlZ2lvbnMgb2Ygc2hhcmVkIG1lbW9yeToKKyAqLworI2RlZmluZSBSQURFT05fTUVN X1JFR0lPTl9HQVJUIDEKKyNkZWZpbmUgUkFERU9OX01FTV9SRUdJT05fRkIgICAyCisKK3R5cGVk ZWYgc3RydWN0IGRybV9yYWRlb25fbWVtX2FsbG9jIHsKKwlpbnQgcmVnaW9uOworCWludCBhbGln bm1lbnQ7CisJaW50IHNpemU7CisJaW50ICpyZWdpb25fb2Zmc2V0OwkvKiBvZmZzZXQgZnJvbSBz dGFydCBvZiBmYiBvciBHQVJUICovCit9IGRybV9yYWRlb25fbWVtX2FsbG9jX3Q7CisKK3R5cGVk ZWYgc3RydWN0IGRybV9yYWRlb25fbWVtX2ZyZWUgeworCWludCByZWdpb247CisJaW50IHJlZ2lv bl9vZmZzZXQ7Cit9IGRybV9yYWRlb25fbWVtX2ZyZWVfdDsKKwordHlwZWRlZiBzdHJ1Y3QgZHJt X3JhZGVvbl9tZW1faW5pdF9oZWFwIHsKKwlpbnQgcmVnaW9uOworCWludCBzaXplOworCWludCBz dGFydDsKK30gZHJtX3JhZGVvbl9tZW1faW5pdF9oZWFwX3Q7CisKKy8qIDEuNjogVXNlcnNwYWNl IGNhbiByZXF1ZXN0ICYgd2FpdCBvbiBpcnEnczoKKyAqLwordHlwZWRlZiBzdHJ1Y3QgZHJtX3Jh ZGVvbl9pcnFfZW1pdCB7CisJaW50ICppcnFfc2VxOworfSBkcm1fcmFkZW9uX2lycV9lbWl0X3Q7 CisKK3R5cGVkZWYgc3RydWN0IGRybV9yYWRlb25faXJxX3dhaXQgeworCWludCBpcnFfc2VxOwor fSBkcm1fcmFkZW9uX2lycV93YWl0X3Q7CisKKy8qIDEuMTA6IENsaWVudHMgdGVsbCB0aGUgRFJN IHdoZXJlIHRoZXkgdGhpbmsgdGhlIGZyYW1lYnVmZmVyIGlzIGxvY2F0ZWQgaW4KKyAqIHRoZSBj YXJkJ3MgYWRkcmVzcyBzcGFjZSwgdmlhIGEgbmV3IGdlbmVyaWMgaW9jdGwgdG8gc2V0IHBhcmFt ZXRlcnMKKyAqLworCit0eXBlZGVmIHN0cnVjdCBkcm1fcmFkZW9uX3NldHBhcmFtIHsKKwl1bnNp Z25lZCBpbnQgcGFyYW07CisJX19zNjQgdmFsdWU7Cit9IGRybV9yYWRlb25fc2V0cGFyYW1fdDsK KworI2RlZmluZSBSQURFT05fU0VUUEFSQU1fRkJfTE9DQVRJT04gICAgMQkvKiBkZXRlcm1pbmVk IGZyYW1lYnVmZmVyIGxvY2F0aW9uICovCisjZGVmaW5lIFJBREVPTl9TRVRQQVJBTV9TV0lUQ0hf VElMSU5HICAyCS8qIGVuYWJsZS9kaXNhYmxlIGNvbG9yIHRpbGluZyAqLworI2RlZmluZSBSQURF T05fU0VUUEFSQU1fUENJR0FSVF9MT0NBVElPTiAzCS8qIFBDSSBHYXJ0IExvY2F0aW9uICovCisj ZGVmaW5lIFJBREVPTl9TRVRQQVJBTV9ORVdfTUVNTUFQIDQJCS8qIFVzZSBuZXcgbWVtb3J5IG1h cCAqLworI2RlZmluZSBSQURFT05fU0VUUEFSQU1fUENJR0FSVF9UQUJMRV9TSVpFIDUgICAgLyog UENJIEdBUlQgVGFibGUgU2l6ZSAqLworI2RlZmluZSBSQURFT05fU0VUUEFSQU1fVkJMQU5LX0NS VEMgNiAgICAgICAgICAgLyogVkJMQU5LIENSVEMgKi8KKy8qIDEuMTQ6IENsaWVudHMgY2FuIGFs bG9jYXRlL2ZyZWUgYSBzdXJmYWNlCisgKi8KK3R5cGVkZWYgc3RydWN0IGRybV9yYWRlb25fc3Vy ZmFjZV9hbGxvYyB7CisJdW5zaWduZWQgaW50IGFkZHJlc3M7CisJdW5zaWduZWQgaW50IHNpemU7 CisJdW5zaWduZWQgaW50IGZsYWdzOworfSBkcm1fcmFkZW9uX3N1cmZhY2VfYWxsb2NfdDsKKwor dHlwZWRlZiBzdHJ1Y3QgZHJtX3JhZGVvbl9zdXJmYWNlX2ZyZWUgeworCXVuc2lnbmVkIGludCBh ZGRyZXNzOworfSBkcm1fcmFkZW9uX3N1cmZhY2VfZnJlZV90OworCisjZGVmaW5lCURSTV9SQURF T05fVkJMQU5LX0NSVEMxCQkxCisjZGVmaW5lCURSTV9SQURFT05fVkJMQU5LX0NSVEMyCQkyCisK Ky8qCisgKiBLZXJuZWwgbW9kZXNldHRpbmcgd29ybGQgYmVsb3cuCisgKi8KKyNkZWZpbmUgUkFE RU9OX0dFTV9ET01BSU5fQ1BVCQkweDEKKyNkZWZpbmUgUkFERU9OX0dFTV9ET01BSU5fR1RUCQkw eDIKKyNkZWZpbmUgUkFERU9OX0dFTV9ET01BSU5fVlJBTQkJMHg0CisKK3N0cnVjdCBkcm1fcmFk ZW9uX2dlbV9pbmZvIHsKKwlfX3U2NAlnYXJ0X3NpemU7CisJX191NjQJdnJhbV9zaXplOworCV9f dTY0CXZyYW1fdmlzaWJsZTsKK307CisKKyNkZWZpbmUgUkFERU9OX0dFTV9OT19CQUNLSU5HX1NU T1JFCSgxIDw8IDApCisjZGVmaW5lIFJBREVPTl9HRU1fR1RUX1VDCQkoMSA8PCAxKQorI2RlZmlu ZSBSQURFT05fR0VNX0dUVF9XQwkJKDEgPDwgMikKKy8qIEJPIGlzIGV4cGVjdGVkIHRvIGJlIGFj Y2Vzc2VkIGJ5IHRoZSBDUFUgKi8KKyNkZWZpbmUgUkFERU9OX0dFTV9DUFVfQUNDRVNTCQkoMSA8 PCAzKQorLyogQ1BVIGFjY2VzcyBpcyBub3QgZXhwZWN0ZWQgdG8gd29yayBmb3IgdGhpcyBCTyAq LworI2RlZmluZSBSQURFT05fR0VNX05PX0NQVV9BQ0NFU1MJKDEgPDwgNCkKKworc3RydWN0IGRy bV9yYWRlb25fZ2VtX2NyZWF0ZSB7CisJX191NjQJc2l6ZTsKKwlfX3U2NAlhbGlnbm1lbnQ7CisJ X191MzIJaGFuZGxlOworCV9fdTMyCWluaXRpYWxfZG9tYWluOworCV9fdTMyCWZsYWdzOworfTsK KworLyoKKyAqIFRoaXMgaXMgbm90IGEgcmVsaWFibGUgQVBJIGFuZCB5b3Ugc2hvdWxkIGV4cGVj dCBpdCB0byBmYWlsIGZvciBhbnkKKyAqIG51bWJlciBvZiByZWFzb25zIGFuZCBoYXZlIGZhbGxi YWNrIHBhdGggdGhhdCBkbyBub3QgdXNlIHVzZXJwdHIgdG8KKyAqIHBlcmZvcm0gYW55IG9wZXJh dGlvbi4KKyAqLworI2RlZmluZSBSQURFT05fR0VNX1VTRVJQVFJfUkVBRE9OTFkJKDEgPDwgMCkK KyNkZWZpbmUgUkFERU9OX0dFTV9VU0VSUFRSX0FOT05PTkxZCSgxIDw8IDEpCisjZGVmaW5lIFJB REVPTl9HRU1fVVNFUlBUUl9WQUxJREFURQkoMSA8PCAyKQorI2RlZmluZSBSQURFT05fR0VNX1VT RVJQVFJfUkVHSVNURVIJKDEgPDwgMykKKworc3RydWN0IGRybV9yYWRlb25fZ2VtX3VzZXJwdHIg eworCV9fdTY0CQlhZGRyOworCV9fdTY0CQlzaXplOworCV9fdTMyCQlmbGFnczsKKwlfX3UzMgkJ aGFuZGxlOworfTsKKworI2RlZmluZSBSQURFT05fVElMSU5HX01BQ1JPCQkJCTB4MQorI2RlZmlu ZSBSQURFT05fVElMSU5HX01JQ1JPCQkJCTB4MgorI2RlZmluZSBSQURFT05fVElMSU5HX1NXQVBf MTZCSVQJCQkweDQKKyNkZWZpbmUgUkFERU9OX1RJTElOR19TV0FQXzMyQklUCQkJMHg4CisvKiB0 aGlzIG9iamVjdCByZXF1aXJlcyBhIHN1cmZhY2Ugd2hlbiBtYXBwZWQgLSBpLmUuIGZyb250IGJ1 ZmZlciAqLworI2RlZmluZSBSQURFT05fVElMSU5HX1NVUkZBQ0UJCQkJMHgxMAorI2RlZmluZSBS QURFT05fVElMSU5HX01JQ1JPX1NRVUFSRQkJCTB4MjAKKyNkZWZpbmUgUkFERU9OX1RJTElOR19F R19CQU5LV19TSElGVAkJCTgKKyNkZWZpbmUgUkFERU9OX1RJTElOR19FR19CQU5LV19NQVNLCQkJ MHhmCisjZGVmaW5lIFJBREVPTl9USUxJTkdfRUdfQkFOS0hfU0hJRlQJCQkxMgorI2RlZmluZSBS QURFT05fVElMSU5HX0VHX0JBTktIX01BU0sJCQkweGYKKyNkZWZpbmUgUkFERU9OX1RJTElOR19F R19NQUNST19USUxFX0FTUEVDVF9TSElGVAkxNgorI2RlZmluZSBSQURFT05fVElMSU5HX0VHX01B Q1JPX1RJTEVfQVNQRUNUX01BU0sJCTB4ZgorI2RlZmluZSBSQURFT05fVElMSU5HX0VHX1RJTEVf U1BMSVRfU0hJRlQJCTI0CisjZGVmaW5lIFJBREVPTl9USUxJTkdfRUdfVElMRV9TUExJVF9NQVNL CQkweGYKKyNkZWZpbmUgUkFERU9OX1RJTElOR19FR19TVEVOQ0lMX1RJTEVfU1BMSVRfU0hJRlQJ MjgKKyNkZWZpbmUgUkFERU9OX1RJTElOR19FR19TVEVOQ0lMX1RJTEVfU1BMSVRfTUFTSwkweGYK Kworc3RydWN0IGRybV9yYWRlb25fZ2VtX3NldF90aWxpbmcgeworCV9fdTMyCWhhbmRsZTsKKwlf X3UzMgl0aWxpbmdfZmxhZ3M7CisJX191MzIJcGl0Y2g7Cit9OworCitzdHJ1Y3QgZHJtX3JhZGVv bl9nZW1fZ2V0X3RpbGluZyB7CisJX191MzIJaGFuZGxlOworCV9fdTMyCXRpbGluZ19mbGFnczsK KwlfX3UzMglwaXRjaDsKK307CisKK3N0cnVjdCBkcm1fcmFkZW9uX2dlbV9tbWFwIHsKKwlfX3Uz MgloYW5kbGU7CisJX191MzIJcGFkOworCV9fdTY0CW9mZnNldDsKKwlfX3U2NAlzaXplOworCV9f dTY0CWFkZHJfcHRyOworfTsKKworc3RydWN0IGRybV9yYWRlb25fZ2VtX3NldF9kb21haW4gewor CV9fdTMyCWhhbmRsZTsKKwlfX3UzMglyZWFkX2RvbWFpbnM7CisJX191MzIJd3JpdGVfZG9tYWlu OworfTsKKworc3RydWN0IGRybV9yYWRlb25fZ2VtX3dhaXRfaWRsZSB7CisJX191MzIJaGFuZGxl OworCV9fdTMyCXBhZDsKK307CisKK3N0cnVjdCBkcm1fcmFkZW9uX2dlbV9idXN5IHsKKwlfX3Uz MgloYW5kbGU7CisJX191MzIgICAgICAgIGRvbWFpbjsKK307CisKK3N0cnVjdCBkcm1fcmFkZW9u X2dlbV9wcmVhZCB7CisJLyoqIEhhbmRsZSBmb3IgdGhlIG9iamVjdCBiZWluZyByZWFkLiAqLwor CV9fdTMyIGhhbmRsZTsKKwlfX3UzMiBwYWQ7CisJLyoqIE9mZnNldCBpbnRvIHRoZSBvYmplY3Qg dG8gcmVhZCBmcm9tICovCisJX191NjQgb2Zmc2V0OworCS8qKiBMZW5ndGggb2YgZGF0YSB0byBy ZWFkICovCisJX191NjQgc2l6ZTsKKwkvKiogUG9pbnRlciB0byB3cml0ZSB0aGUgZGF0YSBpbnRv LiAqLworCS8qIHZvaWQgKiwgYnV0IHBvaW50ZXJzIGFyZSBub3QgMzIvNjQgY29tcGF0aWJsZSAq LworCV9fdTY0IGRhdGFfcHRyOworfTsKKworc3RydWN0IGRybV9yYWRlb25fZ2VtX3B3cml0ZSB7 CisJLyoqIEhhbmRsZSBmb3IgdGhlIG9iamVjdCBiZWluZyB3cml0dGVuIHRvLiAqLworCV9fdTMy IGhhbmRsZTsKKwlfX3UzMiBwYWQ7CisJLyoqIE9mZnNldCBpbnRvIHRoZSBvYmplY3QgdG8gd3Jp dGUgdG8gKi8KKwlfX3U2NCBvZmZzZXQ7CisJLyoqIExlbmd0aCBvZiBkYXRhIHRvIHdyaXRlICov CisJX191NjQgc2l6ZTsKKwkvKiogUG9pbnRlciB0byByZWFkIHRoZSBkYXRhIGZyb20uICovCisJ Lyogdm9pZCAqLCBidXQgcG9pbnRlcnMgYXJlIG5vdCAzMi82NCBjb21wYXRpYmxlICovCisJX191 NjQgZGF0YV9wdHI7Cit9OworCisvKiBTZXRzIG9yIHJldHVybnMgYSB2YWx1ZSBhc3NvY2lhdGVk IHdpdGggYSBidWZmZXIuICovCitzdHJ1Y3QgZHJtX3JhZGVvbl9nZW1fb3AgeworCV9fdTMyCWhh bmRsZTsgLyogYnVmZmVyICovCisJX191MzIJb3A7ICAgICAvKiBSQURFT05fR0VNX09QXyogKi8K KwlfX3U2NAl2YWx1ZTsgIC8qIGlucHV0IG9yIHJldHVybiB2YWx1ZSAqLworfTsKKworI2RlZmlu ZSBSQURFT05fR0VNX09QX0dFVF9JTklUSUFMX0RPTUFJTgkwCisjZGVmaW5lIFJBREVPTl9HRU1f T1BfU0VUX0lOSVRJQUxfRE9NQUlOCTEKKworI2RlZmluZSBSQURFT05fVkFfTUFQCQkJMQorI2Rl ZmluZSBSQURFT05fVkFfVU5NQVAJCQkyCisKKyNkZWZpbmUgUkFERU9OX1ZBX1JFU1VMVF9PSwkJ MAorI2RlZmluZSBSQURFT05fVkFfUkVTVUxUX0VSUk9SCQkxCisjZGVmaW5lIFJBREVPTl9WQV9S RVNVTFRfVkFfRVhJU1QJMgorCisjZGVmaW5lIFJBREVPTl9WTV9QQUdFX1ZBTElECQkoMSA8PCAw KQorI2RlZmluZSBSQURFT05fVk1fUEFHRV9SRUFEQUJMRQkJKDEgPDwgMSkKKyNkZWZpbmUgUkFE RU9OX1ZNX1BBR0VfV1JJVEVBQkxFCSgxIDw8IDIpCisjZGVmaW5lIFJBREVPTl9WTV9QQUdFX1NZ U1RFTQkJKDEgPDwgMykKKyNkZWZpbmUgUkFERU9OX1ZNX1BBR0VfU05PT1BFRAkJKDEgPDwgNCkK Kworc3RydWN0IGRybV9yYWRlb25fZ2VtX3ZhIHsKKwlfX3UzMgkJaGFuZGxlOworCV9fdTMyCQlv cGVyYXRpb247CisJX191MzIJCXZtX2lkOworCV9fdTMyCQlmbGFnczsKKwlfX3U2NAkJb2Zmc2V0 OworfTsKKworI2RlZmluZSBSQURFT05fQ0hVTktfSURfUkVMT0NTCTB4MDEKKyNkZWZpbmUgUkFE RU9OX0NIVU5LX0lEX0lCCTB4MDIKKyNkZWZpbmUgUkFERU9OX0NIVU5LX0lEX0ZMQUdTCTB4MDMK KyNkZWZpbmUgUkFERU9OX0NIVU5LX0lEX0NPTlNUX0lCCTB4MDQKKworLyogVGhlIGZpcnN0IGR3 b3JkIG9mIFJBREVPTl9DSFVOS19JRF9GTEFHUyBpcyBhIHVpbnQzMiBvZiB0aGVzZSBmbGFnczog Ki8KKyNkZWZpbmUgUkFERU9OX0NTX0tFRVBfVElMSU5HX0ZMQUdTIDB4MDEKKyNkZWZpbmUgUkFE RU9OX0NTX1VTRV9WTSAgICAgICAgICAgIDB4MDIKKyNkZWZpbmUgUkFERU9OX0NTX0VORF9PRl9G UkFNRSAgICAgIDB4MDQgLyogYSBoaW50IGZyb20gdXNlcnNwYWNlIHdoaWNoIENTIGlzIHRoZSBs YXN0IG9uZSAqLworLyogVGhlIHNlY29uZCBkd29yZCBvZiBSQURFT05fQ0hVTktfSURfRkxBR1Mg aXMgYSB1aW50MzIgdGhhdCBzZXRzIHRoZSByaW5nIHR5cGUgKi8KKyNkZWZpbmUgUkFERU9OX0NT X1JJTkdfR0ZYICAgICAgICAgIDAKKyNkZWZpbmUgUkFERU9OX0NTX1JJTkdfQ09NUFVURSAgICAg IDEKKyNkZWZpbmUgUkFERU9OX0NTX1JJTkdfRE1BICAgICAgICAgIDIKKyNkZWZpbmUgUkFERU9O X0NTX1JJTkdfVVZEICAgICAgICAgIDMKKyNkZWZpbmUgUkFERU9OX0NTX1JJTkdfVkNFICAgICAg ICAgIDQKKy8qIFRoZSB0aGlyZCBkd29yZCBvZiBSQURFT05fQ0hVTktfSURfRkxBR1MgaXMgYSBz aW50MzIgdGhhdCBzZXRzIHRoZSBwcmlvcml0eSAqLworLyogMCA9IG5vcm1hbCwgKyA9IGhpZ2hl ciBwcmlvcml0eSwgLSA9IGxvd2VyIHByaW9yaXR5ICovCisKK3N0cnVjdCBkcm1fcmFkZW9uX2Nz X2NodW5rIHsKKwlfX3UzMgkJY2h1bmtfaWQ7CisJX191MzIJCWxlbmd0aF9kdzsKKwlfX3U2NAkJ Y2h1bmtfZGF0YTsKK307CisKKy8qIGRybV9yYWRlb25fY3NfcmVsb2MuZmxhZ3MgKi8KKyNkZWZp bmUgUkFERU9OX1JFTE9DX1BSSU9fTUFTSwkJKDB4ZiA8PCAwKQorCitzdHJ1Y3QgZHJtX3JhZGVv bl9jc19yZWxvYyB7CisJX191MzIJCWhhbmRsZTsKKwlfX3UzMgkJcmVhZF9kb21haW5zOworCV9f dTMyCQl3cml0ZV9kb21haW47CisJX191MzIJCWZsYWdzOworfTsKKworc3RydWN0IGRybV9yYWRl b25fY3MgeworCV9fdTMyCQludW1fY2h1bmtzOworCV9fdTMyCQljc19pZDsKKwkvKiB0aGlzIHBv aW50cyB0byBfX3U2NCAqIHdoaWNoIHBvaW50IHRvIGNzIGNodW5rcyAqLworCV9fdTY0CQljaHVu a3M7CisJLyogdXBkYXRlcyB0byB0aGUgbGltaXRzIGFmdGVyIHRoaXMgQ1MgaW9jdGwgKi8KKwlf X3U2NAkJZ2FydF9saW1pdDsKKwlfX3U2NAkJdnJhbV9saW1pdDsKK307CisKKyNkZWZpbmUgUkFE RU9OX0lORk9fREVWSUNFX0lECQkweDAwCisjZGVmaW5lIFJBREVPTl9JTkZPX05VTV9HQl9QSVBF UwkweDAxCisjZGVmaW5lIFJBREVPTl9JTkZPX05VTV9aX1BJUEVTIAkweDAyCisjZGVmaW5lIFJB REVPTl9JTkZPX0FDQ0VMX1dPUktJTkcJMHgwMworI2RlZmluZSBSQURFT05fSU5GT19DUlRDX0ZS T01fSUQJMHgwNAorI2RlZmluZSBSQURFT05fSU5GT19BQ0NFTF9XT1JLSU5HMgkweDA1CisjZGVm aW5lIFJBREVPTl9JTkZPX1RJTElOR19DT05GSUcJMHgwNgorI2RlZmluZSBSQURFT05fSU5GT19X QU5UX0hZUEVSWgkJMHgwNworI2RlZmluZSBSQURFT05fSU5GT19XQU5UX0NNQVNLCQkweDA4IC8q IGdldCBhY2Nlc3MgdG8gQ01BU0sgb24gcjMwMCAqLworI2RlZmluZSBSQURFT05fSU5GT19DTE9D S19DUllTVEFMX0ZSRVEJMHgwOSAvKiBjbG9jayBjcnlzdGFsIGZyZXF1ZW5jeSAqLworI2RlZmlu ZSBSQURFT05fSU5GT19OVU1fQkFDS0VORFMJMHgwYSAvKiBEQi9iYWNrZW5kcyBmb3IgcjYwMCsg LSBuZWVkIGZvciBPUSAqLworI2RlZmluZSBSQURFT05fSU5GT19OVU1fVElMRV9QSVBFUwkweDBi IC8qIHRpbGUgcGlwZXMgZm9yIHI2MDArICovCisjZGVmaW5lIFJBREVPTl9JTkZPX0ZVU0lPTl9H QVJUX1dPUktJTkcJMHgwYyAvKiBmdXNpb24gd3JpdGVzIHRvIEdUVCB3ZXJlIGJyb2tlbiBiZWZv cmUgdGhpcyAqLworI2RlZmluZSBSQURFT05fSU5GT19CQUNLRU5EX01BUAkJMHgwZCAvKiBwaXBl IHRvIGJhY2tlbmQgbWFwLCBuZWVkZWQgYnkgbWVzYSAqLworLyogdmlydHVhbCBhZGRyZXNzIHN0 YXJ0LCB2YSA8IHN0YXJ0IGFyZSByZXNlcnZlZCBieSB0aGUga2VybmVsICovCisjZGVmaW5lIFJB REVPTl9JTkZPX1ZBX1NUQVJUCQkweDBlCisvKiBtYXhpbXVtIHNpemUgb2YgaWIgdXNpbmcgdGhl IHZpcnR1YWwgbWVtb3J5IGNzICovCisjZGVmaW5lIFJBREVPTl9JTkZPX0lCX1ZNX01BWF9TSVpF CTB4MGYKKy8qIG1heCBwaXBlcyAtIG5lZWRlZCBmb3IgY29tcHV0ZSBzaGFkZXJzICovCisjZGVm aW5lIFJBREVPTl9JTkZPX01BWF9QSVBFUwkJMHgxMAorLyogdGltZXN0YW1wIGZvciBHTF9BUkJf dGltZXJfcXVlcnkgKE9wZW5HTCksIHJldHVybnMgdGhlIGN1cnJlbnQgR1BVIGNsb2NrICovCisj ZGVmaW5lIFJBREVPTl9JTkZPX1RJTUVTVEFNUAkJMHgxMQorLyogbWF4IHNoYWRlciBlbmdpbmVz IChTRSkgLSBuZWVkZWQgZm9yIGdlb21ldHJ5IHNoYWRlcnMsIGV0Yy4gKi8KKyNkZWZpbmUgUkFE RU9OX0lORk9fTUFYX1NFCQkweDEyCisvKiBtYXggU0ggcGVyIFNFICovCisjZGVmaW5lIFJBREVP Tl9JTkZPX01BWF9TSF9QRVJfU0UJMHgxMworLyogZmFzdCBmYiBhY2Nlc3MgaXMgZW5hYmxlZCAq LworI2RlZmluZSBSQURFT05fSU5GT19GQVNURkJfV09SS0lORwkweDE0CisvKiBxdWVyeSBpZiBh IFJBREVPTl9DU19SSU5HXyogc3VibWlzc2lvbiBpcyBzdXBwb3J0ZWQgKi8KKyNkZWZpbmUgUkFE RU9OX0lORk9fUklOR19XT1JLSU5HCTB4MTUKKy8qIFNJIHRpbGUgbW9kZSBhcnJheSAqLworI2Rl ZmluZSBSQURFT05fSU5GT19TSV9USUxFX01PREVfQVJSQVkJMHgxNgorLyogcXVlcnkgaWYgQ1Ag RE1BIGlzIHN1cHBvcnRlZCBvbiB0aGUgY29tcHV0ZSByaW5nICovCisjZGVmaW5lIFJBREVPTl9J TkZPX1NJX0NQX0RNQV9DT01QVVRFCTB4MTcKKy8qIENJSyBtYWNyb3RpbGUgbW9kZSBhcnJheSAq LworI2RlZmluZSBSQURFT05fSU5GT19DSUtfTUFDUk9USUxFX01PREVfQVJSQVkJMHgxOAorLyog cXVlcnkgdGhlIG51bWJlciBvZiByZW5kZXIgYmFja2VuZHMgKi8KKyNkZWZpbmUgUkFERU9OX0lO Rk9fU0lfQkFDS0VORF9FTkFCTEVEX01BU0sJMHgxOQorLyogbWF4IGVuZ2luZSBjbG9jayAtIG5l ZWRlZCBmb3IgT3BlbkNMICovCisjZGVmaW5lIFJBREVPTl9JTkZPX01BWF9TQ0xLCQkweDFhCisv KiB2ZXJzaW9uIG9mIFZDRSBmaXJtd2FyZSAqLworI2RlZmluZSBSQURFT05fSU5GT19WQ0VfRldf VkVSU0lPTgkweDFiCisvKiB2ZXJzaW9uIG9mIFZDRSBmZWVkYmFjayAqLworI2RlZmluZSBSQURF T05fSU5GT19WQ0VfRkJfVkVSU0lPTgkweDFjCisjZGVmaW5lIFJBREVPTl9JTkZPX05VTV9CWVRF U19NT1ZFRAkweDFkCisjZGVmaW5lIFJBREVPTl9JTkZPX1ZSQU1fVVNBR0UJCTB4MWUKKyNkZWZp bmUgUkFERU9OX0lORk9fR1RUX1VTQUdFCQkweDFmCisjZGVmaW5lIFJBREVPTl9JTkZPX0FDVElW RV9DVV9DT1VOVAkweDIwCisjZGVmaW5lIFJBREVPTl9JTkZPX0NVUlJFTlRfR1BVX1RFTVAJMHgy MQorI2RlZmluZSBSQURFT05fSU5GT19DVVJSRU5UX0dQVV9TQ0xLCTB4MjIKKyNkZWZpbmUgUkFE RU9OX0lORk9fQ1VSUkVOVF9HUFVfTUNMSwkweDIzCisjZGVmaW5lIFJBREVPTl9JTkZPX1JFQURf UkVHCQkweDI0CisjZGVmaW5lIFJBREVPTl9JTkZPX1ZBX1VOTUFQX1dPUktJTkcJMHgyNQorI2Rl ZmluZSBSQURFT05fSU5GT19HUFVfUkVTRVRfQ09VTlRFUgkweDI2CisKK3N0cnVjdCBkcm1fcmFk ZW9uX2luZm8geworCV9fdTMyCQlyZXF1ZXN0OworCV9fdTMyCQlwYWQ7CisJX191NjQJCXZhbHVl OworfTsKKworLyogVGhvc2UgY29ycmVzcG9uZCB0byB0aGUgdGlsZSBpbmRleCB0byB1c2UsIHRo aXMgaXMgdG8gZXhwbGljaXRseSBzdGF0ZQorICogdGhlIEFQSSB0aGF0IGlzIGltcGxpY2l0bHkg ZGVmaW5lZCBieSB0aGUgdGlsZSBtb2RlIGFycmF5LgorICovCisjZGVmaW5lIFNJX1RJTEVfTU9E RV9DT0xPUl9MSU5FQVJfQUxJR05FRAk4CisjZGVmaW5lIFNJX1RJTEVfTU9ERV9DT0xPUl8xRAkJ CTEzCisjZGVmaW5lIFNJX1RJTEVfTU9ERV9DT0xPUl8xRF9TQ0FOT1VUCQk5CisjZGVmaW5lIFNJ X1RJTEVfTU9ERV9DT0xPUl8yRF84QlBQCQkxNAorI2RlZmluZSBTSV9USUxFX01PREVfQ09MT1Jf MkRfMTZCUFAJCTE1CisjZGVmaW5lIFNJX1RJTEVfTU9ERV9DT0xPUl8yRF8zMkJQUAkJMTYKKyNk ZWZpbmUgU0lfVElMRV9NT0RFX0NPTE9SXzJEXzY0QlBQCQkxNworI2RlZmluZSBTSV9USUxFX01P REVfQ09MT1JfMkRfU0NBTk9VVF8xNkJQUAkxMQorI2RlZmluZSBTSV9USUxFX01PREVfQ09MT1Jf MkRfU0NBTk9VVF8zMkJQUAkxMgorI2RlZmluZSBTSV9USUxFX01PREVfREVQVEhfU1RFTkNJTF8x RAkJNAorI2RlZmluZSBTSV9USUxFX01PREVfREVQVEhfU1RFTkNJTF8yRAkJMAorI2RlZmluZSBT SV9USUxFX01PREVfREVQVEhfU1RFTkNJTF8yRF8yQUEJMworI2RlZmluZSBTSV9USUxFX01PREVf REVQVEhfU1RFTkNJTF8yRF80QUEJMworI2RlZmluZSBTSV9USUxFX01PREVfREVQVEhfU1RFTkNJ TF8yRF84QUEJMgorCisjZGVmaW5lIENJS19USUxFX01PREVfREVQVEhfU1RFTkNJTF8xRAkJNQor CisjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKK30KKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdp dCBhL2luY2x1ZGUvZHJtLXVhcGkvc2F2YWdlX2RybS5oIGIvaW5jbHVkZS9kcm0tdWFwaS9zYXZh Z2VfZHJtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xYTkxMjM0 ZTY3NTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2RybS11YXBpL3NhdmFnZV9kcm0uaApA QCAtMCwwICsxLDIyMCBAQAorLyogc2F2YWdlX2RybS5oIC0tIFB1YmxpYyBoZWFkZXIgZm9yIHRo ZSBzYXZhZ2UgZHJpdmVyCisgKgorICogQ29weXJpZ2h0IDIwMDQgIEZlbGl4IEt1ZWhsaW5nCisg KiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50 ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9m IHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJT b2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlv biwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNv cHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YiBsaWNlbnNlLAorICog YW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25z IHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3Qg dG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQg bm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlCisgKiBuZXh0 IHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlh bCBwb3J0aW9ucworICogb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQ Uk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAorICogRVhQUkVT UyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVT IE9GCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF IEFORAorICogTk9OLUlORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgRkVMSVggS1VFSExJ TkcgQkUgTElBQkxFIEZPUgorICogQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElU WSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YKKyAqIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lT RSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgorICogV0lUSCBUSEUgU09G VFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKi8K KworI2lmbmRlZiBfX1NBVkFHRV9EUk1fSF9fCisjZGVmaW5lIF9fU0FWQUdFX0RSTV9IX18KKwor I2luY2x1ZGUgImRybS5oIgorCisjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKK2V4dGVybiAiQyIg eworI2VuZGlmCisKKyNpZm5kZWYgX19TQVZBR0VfU0FSRUFfREVGSU5FU19fCisjZGVmaW5lIF9f U0FWQUdFX1NBUkVBX0RFRklORVNfXworCisvKiAyIGhlYXBzICgxIGZvciBjYXJkLCAxIGZvciBh Z3ApLCBlYWNoIGRpdmlkZWQgaW50byB1cCB0byAxMjgKKyAqIHJlZ2lvbnMsIHN1YmplY3QgdG8g YSBtaW5pbXVtIHJlZ2lvbiBzaXplIG9mICgxPDwxNikgPT0gNjRrLgorICoKKyAqIENsaWVudHMg bWF5IHN1YmRpdmlkZSByZWdpb25zIGludGVybmFsbHksIGJ1dCB3aGVuIHNoYXJpbmcgYmV0d2Vl bgorICogY2xpZW50cywgdGhlIHJlZ2lvbiBzaXplIGlzIHRoZSBtaW5pbXVtIGdyYW51bGFyaXR5 LgorICovCisKKyNkZWZpbmUgU0FWQUdFX0NBUkRfSEVBUAkJMAorI2RlZmluZSBTQVZBR0VfQUdQ X0hFQVAJCQkxCisjZGVmaW5lIFNBVkFHRV9OUl9URVhfSEVBUFMJCTIKKyNkZWZpbmUgU0FWQUdF X05SX1RFWF9SRUdJT05TCQkxNgorI2RlZmluZSBTQVZBR0VfTE9HX01JTl9URVhfUkVHSU9OX1NJ WkUJMTYKKworI2VuZGlmCQkJCS8qIF9fU0FWQUdFX1NBUkVBX0RFRklORVNfXyAqLworCit0eXBl ZGVmIHN0cnVjdCBfZHJtX3NhdmFnZV9zYXJlYSB7CisJLyogTFJVIGxpc3RzIGZvciB0ZXh0dXJl IG1lbW9yeSBpbiBhZ3Agc3BhY2UgYW5kIG9uIHRoZSBjYXJkLgorCSAqLworCXN0cnVjdCBkcm1f dGV4X3JlZ2lvbiB0ZXhMaXN0W1NBVkFHRV9OUl9URVhfSEVBUFNdW1NBVkFHRV9OUl9URVhfUkVH SU9OUyArCisJCQkJCQkgICAgICAxXTsKKwl1bnNpZ25lZCBpbnQgdGV4QWdlW1NBVkFHRV9OUl9U RVhfSEVBUFNdOworCisJLyogTWVjaGFuaXNtIHRvIHZhbGlkYXRlIGNhcmQgc3RhdGUuCisJICov CisJaW50IGN0eE93bmVyOworfSBkcm1fc2F2YWdlX3NhcmVhX3QsICpkcm1fc2F2YWdlX3NhcmVh X3B0cjsKKworLyogU2F2YWdlLXNwZWNpZmljIGlvY3RscworICovCisjZGVmaW5lIERSTV9TQVZB R0VfQkNJX0lOSVQJCTB4MDAKKyNkZWZpbmUgRFJNX1NBVkFHRV9CQ0lfQ01EQlVGICAgICAgICAg ICAweDAxCisjZGVmaW5lIERSTV9TQVZBR0VfQkNJX0VWRU5UX0VNSVQJMHgwMgorI2RlZmluZSBE Uk1fU0FWQUdFX0JDSV9FVkVOVF9XQUlUCTB4MDMKKworI2RlZmluZSBEUk1fSU9DVExfU0FWQUdF X0JDSV9JTklUCQlEUk1fSU9XKCBEUk1fQ09NTUFORF9CQVNFICsgRFJNX1NBVkFHRV9CQ0lfSU5J VCwgZHJtX3NhdmFnZV9pbml0X3QpCisjZGVmaW5lIERSTV9JT0NUTF9TQVZBR0VfQkNJX0NNREJV RgkJRFJNX0lPVyggRFJNX0NPTU1BTkRfQkFTRSArIERSTV9TQVZBR0VfQkNJX0NNREJVRiwgZHJt X3NhdmFnZV9jbWRidWZfdCkKKyNkZWZpbmUgRFJNX0lPQ1RMX1NBVkFHRV9CQ0lfRVZFTlRfRU1J VAlEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX1NBVkFHRV9CQ0lfRVZFTlRfRU1JVCwg ZHJtX3NhdmFnZV9ldmVudF9lbWl0X3QpCisjZGVmaW5lIERSTV9JT0NUTF9TQVZBR0VfQkNJX0VW RU5UX1dBSVQJRFJNX0lPVyggRFJNX0NPTU1BTkRfQkFTRSArIERSTV9TQVZBR0VfQkNJX0VWRU5U X1dBSVQsIGRybV9zYXZhZ2VfZXZlbnRfd2FpdF90KQorCisjZGVmaW5lIFNBVkFHRV9ETUFfUENJ CTEKKyNkZWZpbmUgU0FWQUdFX0RNQV9BR1AJMwordHlwZWRlZiBzdHJ1Y3QgZHJtX3NhdmFnZV9p bml0IHsKKwllbnVtIHsKKwkJU0FWQUdFX0lOSVRfQkNJID0gMSwKKwkJU0FWQUdFX0NMRUFOVVBf QkNJID0gMgorCX0gZnVuYzsKKwl1bnNpZ25lZCBpbnQgc2FyZWFfcHJpdl9vZmZzZXQ7CisKKwkv KiBzb21lIHBhcmFtZXRlcnMgKi8KKwl1bnNpZ25lZCBpbnQgY29iX3NpemU7CisJdW5zaWduZWQg aW50IGJjaV90aHJlc2hvbGRfbG8sIGJjaV90aHJlc2hvbGRfaGk7CisJdW5zaWduZWQgaW50IGRt YV90eXBlOworCisJLyogZnJhbWUgYnVmZmVyIGxheW91dCAqLworCXVuc2lnbmVkIGludCBmYl9i cHA7CisJdW5zaWduZWQgaW50IGZyb250X29mZnNldCwgZnJvbnRfcGl0Y2g7CisJdW5zaWduZWQg aW50IGJhY2tfb2Zmc2V0LCBiYWNrX3BpdGNoOworCXVuc2lnbmVkIGludCBkZXB0aF9icHA7CisJ dW5zaWduZWQgaW50IGRlcHRoX29mZnNldCwgZGVwdGhfcGl0Y2g7CisKKwkvKiBsb2NhbCB0ZXh0 dXJlcyAqLworCXVuc2lnbmVkIGludCB0ZXh0dXJlX29mZnNldDsKKwl1bnNpZ25lZCBpbnQgdGV4 dHVyZV9zaXplOworCisJLyogcGh5c2ljYWwgbG9jYXRpb25zIG9mIG5vbi1wZXJtYW5lbnQgbWFw cyAqLworCXVuc2lnbmVkIGxvbmcgc3RhdHVzX29mZnNldDsKKwl1bnNpZ25lZCBsb25nIGJ1ZmZl cnNfb2Zmc2V0OworCXVuc2lnbmVkIGxvbmcgYWdwX3RleHR1cmVzX29mZnNldDsKKwl1bnNpZ25l ZCBsb25nIGNtZF9kbWFfb2Zmc2V0OworfSBkcm1fc2F2YWdlX2luaXRfdDsKKwordHlwZWRlZiB1 bmlvbiBkcm1fc2F2YWdlX2NtZF9oZWFkZXIgZHJtX3NhdmFnZV9jbWRfaGVhZGVyX3Q7Cit0eXBl ZGVmIHN0cnVjdCBkcm1fc2F2YWdlX2NtZGJ1ZiB7CisJLyogY29tbWFuZCBidWZmZXIgaW4gY2xp ZW50J3MgYWRkcmVzcyBzcGFjZSAqLworCWRybV9zYXZhZ2VfY21kX2hlYWRlcl90ICpjbWRfYWRk cjsKKwl1bnNpZ25lZCBpbnQgc2l6ZTsJLyogc2l6ZSBvZiB0aGUgY29tbWFuZCBidWZmZXIgaW4g NjRiaXQgdW5pdHMgKi8KKworCXVuc2lnbmVkIGludCBkbWFfaWR4OwkvKiBETUEgYnVmZmVyIGlu ZGV4IHRvIHVzZSAqLworCWludCBkaXNjYXJkOwkJLyogZGlzY2FyZCBETUEgYnVmZmVyIHdoZW4g ZG9uZSAqLworCS8qIHZlcnRleCBidWZmZXIgaW4gY2xpZW50J3MgYWRkcmVzcyBzcGFjZSAqLwor CXVuc2lnbmVkIGludCAqdmJfYWRkcjsKKwl1bnNpZ25lZCBpbnQgdmJfc2l6ZTsJLyogc2l6ZSBv ZiBjbGllbnQgdmVydGV4IGJ1ZmZlciBpbiBieXRlcyAqLworCXVuc2lnbmVkIGludCB2Yl9zdHJp ZGU7CS8qIHN0cmlkZSBvZiB2ZXJ0aWNlcyBpbiAzMmJpdCB3b3JkcyAqLworCS8qIGJveGVzIGlu IGNsaWVudCdzIGFkZHJlc3Mgc3BhY2UgKi8KKwlzdHJ1Y3QgZHJtX2NsaXBfcmVjdCAqYm94X2Fk ZHI7CisJdW5zaWduZWQgaW50IG5ib3g7CS8qIG51bWJlciBvZiBjbGlwcGluZyBib3hlcyAqLwor fSBkcm1fc2F2YWdlX2NtZGJ1Zl90OworCisjZGVmaW5lIFNBVkFHRV9XQUlUXzJEICAweDEJLyog d2FpdCBmb3IgMkQgaWRsZSBiZWZvcmUgdXBkYXRpbmcgZXZlbnQgdGFnICovCisjZGVmaW5lIFNB VkFHRV9XQUlUXzNEICAweDIJLyogd2FpdCBmb3IgM0QgaWRsZSBiZWZvcmUgdXBkYXRpbmcgZXZl bnQgdGFnICovCisjZGVmaW5lIFNBVkFHRV9XQUlUX0lSUSAweDQJLyogZW1pdCBvciB3YWl0IGZv ciBJUlEsIG5vdCBpbXBsZW1lbnRlZCB5ZXQgKi8KK3R5cGVkZWYgc3RydWN0IGRybV9zYXZhZ2Vf ZXZlbnQgeworCXVuc2lnbmVkIGludCBjb3VudDsKKwl1bnNpZ25lZCBpbnQgZmxhZ3M7Cit9IGRy bV9zYXZhZ2VfZXZlbnRfZW1pdF90LCBkcm1fc2F2YWdlX2V2ZW50X3dhaXRfdDsKKworLyogQ29t bWFuZHMgZm9yIHRoZSBjbWRidWYgaW9jdGwKKyAqLworI2RlZmluZSBTQVZBR0VfQ01EX1NUQVRF CTAJLyogYSByYW5nZSBvZiBzdGF0ZSByZWdpc3RlcnMgKi8KKyNkZWZpbmUgU0FWQUdFX0NNRF9E TUFfUFJJTQkxCS8qIHZlcnRpY2VzIGZyb20gRE1BIGJ1ZmZlciAqLworI2RlZmluZSBTQVZBR0Vf Q01EX1ZCX1BSSU0JMgkvKiB2ZXJ0aWNlcyBmcm9tIGNsaWVudCB2ZXJ0ZXggYnVmZmVyICovCisj ZGVmaW5lIFNBVkFHRV9DTURfRE1BX0lEWAkzCS8qIGluZGV4ZWQgdmVydGljZXMgZnJvbSBETUEg YnVmZmVyICovCisjZGVmaW5lIFNBVkFHRV9DTURfVkJfSURYCTQJLyogaW5kZXhlZCB2ZXJ0aWNl cyBjbGllbnQgdmVydGV4IGJ1ZmZlciAqLworI2RlZmluZSBTQVZBR0VfQ01EX0NMRUFSCTUJLyog Y2xlYXIgYnVmZmVycyAqLworI2RlZmluZSBTQVZBR0VfQ01EX1NXQVAJCTYJLyogc3dhcCBidWZm ZXJzICovCisKKy8qIFByaW1pdGl2ZSB0eXBlcworKi8KKyNkZWZpbmUgU0FWQUdFX1BSSU1fVFJJ TElTVAkwCS8qIHRyaWFuZ2xlIGxpc3QgKi8KKyNkZWZpbmUgU0FWQUdFX1BSSU1fVFJJU1RSSVAJ MQkvKiB0cmlhbmdsZSBzdHJpcCAqLworI2RlZmluZSBTQVZBR0VfUFJJTV9UUklGQU4JMgkvKiB0 cmlhbmdsZSBmYW4gKi8KKyNkZWZpbmUgU0FWQUdFX1BSSU1fVFJJTElTVF8yMDEJMwkvKiByZW9y ZGVyIHZlcnRzIGZvciBjb3JyZWN0IGZsYXQKKwkJCQkJICogc2hhZGluZyBvbiBzM2QgKi8KKwor LyogU2tpcCBmbGFncyAodmVydGV4IGZvcm1hdCkKKyAqLworI2RlZmluZSBTQVZBR0VfU0tJUF9a CQkweDAxCisjZGVmaW5lIFNBVkFHRV9TS0lQX1cJCTB4MDIKKyNkZWZpbmUgU0FWQUdFX1NLSVBf QzAJCTB4MDQKKyNkZWZpbmUgU0FWQUdFX1NLSVBfQzEJCTB4MDgKKyNkZWZpbmUgU0FWQUdFX1NL SVBfUzAJCTB4MTAKKyNkZWZpbmUgU0FWQUdFX1NLSVBfVDAJCTB4MjAKKyNkZWZpbmUgU0FWQUdF X1NLSVBfU1QwCQkweDMwCisjZGVmaW5lIFNBVkFHRV9TS0lQX1MxCQkweDQwCisjZGVmaW5lIFNB VkFHRV9TS0lQX1QxCQkweDgwCisjZGVmaW5lIFNBVkFHRV9TS0lQX1NUMQkJMHhjMAorI2RlZmlu ZSBTQVZBR0VfU0tJUF9BTExfUzNECTB4M2YKKyNkZWZpbmUgU0FWQUdFX1NLSVBfQUxMX1M0CTB4 ZmYKKworLyogQnVmZmVyIG5hbWVzIGZvciBjbGVhciBjb21tYW5kCisgKi8KKyNkZWZpbmUgU0FW QUdFX0ZST05UCQkweDEKKyNkZWZpbmUgU0FWQUdFX0JBQ0sJCTB4MgorI2RlZmluZSBTQVZBR0Vf REVQVEgJCTB4NAorCisvKiA2NC1iaXQgY29tbWFuZCBoZWFkZXIKKyAqLwordW5pb24gZHJtX3Nh dmFnZV9jbWRfaGVhZGVyIHsKKwlzdHJ1Y3QgeworCQl1bnNpZ25lZCBjaGFyIGNtZDsJLyogY29t bWFuZCAqLworCQl1bnNpZ25lZCBjaGFyIHBhZDA7CisJCXVuc2lnbmVkIHNob3J0IHBhZDE7CisJ CXVuc2lnbmVkIHNob3J0IHBhZDI7CisJCXVuc2lnbmVkIHNob3J0IHBhZDM7CisJfSBjbWQ7CQkJ LyogZ2VuZXJpYyAqLworCXN0cnVjdCB7CisJCXVuc2lnbmVkIGNoYXIgY21kOworCQl1bnNpZ25l ZCBjaGFyIGdsb2JhbDsJLyogbmVlZCBpZGxlIGVuZ2luZT8gKi8KKwkJdW5zaWduZWQgc2hvcnQg Y291bnQ7CS8qIG51bWJlciBvZiBjb25zZWN1dGl2ZSByZWdpc3RlcnMgKi8KKwkJdW5zaWduZWQg c2hvcnQgc3RhcnQ7CS8qIGZpcnN0IHJlZ2lzdGVyICovCisJCXVuc2lnbmVkIHNob3J0IHBhZDM7 CisJfSBzdGF0ZTsJCS8qIFNBVkFHRV9DTURfU1RBVEUgKi8KKwlzdHJ1Y3QgeworCQl1bnNpZ25l ZCBjaGFyIGNtZDsKKwkJdW5zaWduZWQgY2hhciBwcmltOwkvKiBwcmltaXRpdmUgdHlwZSAqLwor CQl1bnNpZ25lZCBzaG9ydCBza2lwOwkvKiB2ZXJ0ZXggZm9ybWF0IChza2lwIGZsYWdzKSAqLwor CQl1bnNpZ25lZCBzaG9ydCBjb3VudDsJLyogbnVtYmVyIG9mIHZlcnRpY2VzICovCisJCXVuc2ln bmVkIHNob3J0IHN0YXJ0OwkvKiBmaXJzdCB2ZXJ0ZXggaW4gRE1BL3ZlcnRleCBidWZmZXIgKi8K Kwl9IHByaW07CQkJLyogU0FWQUdFX0NNRF9ETUFfUFJJTSwgU0FWQUdFX0NNRF9WQl9QUklNICov CisJc3RydWN0IHsKKwkJdW5zaWduZWQgY2hhciBjbWQ7CisJCXVuc2lnbmVkIGNoYXIgcHJpbTsK KwkJdW5zaWduZWQgc2hvcnQgc2tpcDsKKwkJdW5zaWduZWQgc2hvcnQgY291bnQ7CS8qIG51bWJl ciBvZiBpbmRpY2VzIHRoYXQgZm9sbG93ICovCisJCXVuc2lnbmVkIHNob3J0IHBhZDM7CisJfSBp ZHg7CQkJLyogU0FWQUdFX0NNRF9ETUFfSURYLCBTQVZBR0VfQ01EX1ZCX0lEWCAqLworCXN0cnVj dCB7CisJCXVuc2lnbmVkIGNoYXIgY21kOworCQl1bnNpZ25lZCBjaGFyIHBhZDA7CisJCXVuc2ln bmVkIHNob3J0IHBhZDE7CisJCXVuc2lnbmVkIGludCBmbGFnczsKKwl9IGNsZWFyMDsJCS8qIFNB VkFHRV9DTURfQ0xFQVIgKi8KKwlzdHJ1Y3QgeworCQl1bnNpZ25lZCBpbnQgbWFzazsKKwkJdW5z aWduZWQgaW50IHZhbHVlOworCX0gY2xlYXIxOwkJLyogU0FWQUdFX0NNRF9DTEVBUiBkYXRhICov Cit9OworCisjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKK30KKyNlbmRpZgorCisjZW5kaWYKZGlm ZiAtLWdpdCBhL2luY2x1ZGUvZHJtLXVhcGkvc2lzX2RybS5oIGIvaW5jbHVkZS9kcm0tdWFwaS9z aXNfZHJtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zZTNmN2U5 ODllMGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2RybS11YXBpL3Npc19kcm0uaApAQCAt MCwwICsxLDc3IEBACisvKiBzaXNfZHJ2LmggLS0gUHJpdmF0ZSBoZWFkZXIgZm9yIHNpcyBkcml2 ZXIgLSotIGxpbnV4LWMgLSotICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgRXJpYyBBbmhvbHQK KyAqIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3Jh bnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkg b2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUg IlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0 aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwg Y29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAq IGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29u cyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0 IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0 IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cisg KiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRp YWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMg UFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBP UgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElF UyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JT IE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9S IE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBU T1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorICogT1VUIE9GIE9SIElOIENPTk5FQ1RJ T04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUK KyAqIFNPRlRXQVJFLgorICoKKyAqLworCisjaWZuZGVmIF9fU0lTX0RSTV9IX18KKyNkZWZpbmUg X19TSVNfRFJNX0hfXworCisjaW5jbHVkZSAiZHJtLmgiCisKKyNpZiBkZWZpbmVkKF9fY3BsdXNw bHVzKQorZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyogU2lTIHNwZWNpZmljIGlvY3RscyAqLwor I2RlZmluZSBOT1RfVVNFRF8wXzMKKyNkZWZpbmUgRFJNX1NJU19GQl9BTExPQwkweDA0CisjZGVm aW5lIERSTV9TSVNfRkJfRlJFRQkgICAgICAgIDB4MDUKKyNkZWZpbmUgTk9UX1VTRURfNl8xMgor I2RlZmluZSBEUk1fU0lTX0FHUF9JTklUCTB4MTMKKyNkZWZpbmUgRFJNX1NJU19BR1BfQUxMT0MJ MHgxNAorI2RlZmluZSBEUk1fU0lTX0FHUF9GUkVFCTB4MTUKKyNkZWZpbmUgRFJNX1NJU19GQl9J TklUCSAgICAgICAgMHgxNgorCisjZGVmaW5lIERSTV9JT0NUTF9TSVNfRkJfQUxMT0MJCURSTV9J T1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fU0lTX0ZCX0FMTE9DLCBkcm1fc2lzX21lbV90KQor I2RlZmluZSBEUk1fSU9DVExfU0lTX0ZCX0ZSRUUJCURSTV9JT1coIERSTV9DT01NQU5EX0JBU0Ug KyBEUk1fU0lTX0ZCX0ZSRUUsIGRybV9zaXNfbWVtX3QpCisjZGVmaW5lIERSTV9JT0NUTF9TSVNf QUdQX0lOSVQJCURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fU0lTX0FHUF9JTklULCBk cm1fc2lzX2FncF90KQorI2RlZmluZSBEUk1fSU9DVExfU0lTX0FHUF9BTExPQwkJRFJNX0lPV1Io RFJNX0NPTU1BTkRfQkFTRSArIERSTV9TSVNfQUdQX0FMTE9DLCBkcm1fc2lzX21lbV90KQorI2Rl ZmluZSBEUk1fSU9DVExfU0lTX0FHUF9GUkVFCQlEUk1fSU9XKCBEUk1fQ09NTUFORF9CQVNFICsg RFJNX1NJU19BR1BfRlJFRSwgZHJtX3Npc19tZW1fdCkKKyNkZWZpbmUgRFJNX0lPQ1RMX1NJU19G Ql9JTklUCQlEUk1fSU9XKCBEUk1fQ09NTUFORF9CQVNFICsgRFJNX1NJU19GQl9JTklULCBkcm1f c2lzX2ZiX3QpCisvKgorI2RlZmluZSBEUk1fSU9DVExfU0lTX0ZMSVAJCURSTV9JT1coIDB4NDgs IGRybV9zaXNfZmxpcF90KQorI2RlZmluZSBEUk1fSU9DVExfU0lTX0ZMSVBfSU5JVAkJRFJNX0lP KCAgMHg0OSkKKyNkZWZpbmUgRFJNX0lPQ1RMX1NJU19GTElQX0ZJTkFMCURSTV9JTyggIDB4NTAp CisqLworCit0eXBlZGVmIHN0cnVjdCB7CisJaW50IGNvbnRleHQ7CisJdW5zaWduZWQgbG9uZyBv ZmZzZXQ7CisJdW5zaWduZWQgbG9uZyBzaXplOworCXVuc2lnbmVkIGxvbmcgZnJlZTsKK30gZHJt X3Npc19tZW1fdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworCXVuc2lnbmVkIGxvbmcgb2Zmc2V0LCBz aXplOworfSBkcm1fc2lzX2FncF90OworCit0eXBlZGVmIHN0cnVjdCB7CisJdW5zaWduZWQgbG9u ZyBvZmZzZXQsIHNpemU7Cit9IGRybV9zaXNfZmJfdDsKKworI2lmIGRlZmluZWQoX19jcGx1c3Bs dXMpCit9CisjZW5kaWYKKworI2VuZGlmCQkJCS8qIF9fU0lTX0RSTV9IX18gKi8KZGlmZiAtLWdp dCBhL2luY2x1ZGUvZHJtLXVhcGkvdGVncmFfZHJtLmggYi9pbmNsdWRlL2RybS11YXBpL3RlZ3Jh X2RybS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTJmOWJmODQ4 ZGIxCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9kcm0tdWFwaS90ZWdyYV9kcm0uaApAQCAt MCwwICsxLDIwOSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMi0yMDEzLCBOVklESUEgQ09S UE9SQVRJT04uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVy ZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisg KiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxl cyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCBy ZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0 byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vu c2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0 IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywg c3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNv cHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVk ZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3 YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdB UlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVU IE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBO TyBFVkVOVCBTSEFMTAorICogVEhFIENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVUSE9SKFMpIEJF IExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCisgKiBPVEhFUiBMSUFCSUxJVFksIFdI RVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKKyAqIEFS SVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig VEhFIFVTRSBPUgorICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICovCisKKyNp Zm5kZWYgX1RFR1JBX0RSTV9IXworI2RlZmluZSBfVEVHUkFfRFJNX0hfCisKKyNpbmNsdWRlICJk cm0uaCIKKworI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpCitleHRlcm4gIkMiIHsKKyNlbmRpZgor CisjZGVmaW5lIERSTV9URUdSQV9HRU1fQ1JFQVRFX1RJTEVEICAgICAoMSA8PCAwKQorI2RlZmlu ZSBEUk1fVEVHUkFfR0VNX0NSRUFURV9CT1RUT01fVVAgKDEgPDwgMSkKKworc3RydWN0IGRybV90 ZWdyYV9nZW1fY3JlYXRlIHsKKwlfX3U2NCBzaXplOworCV9fdTMyIGZsYWdzOworCV9fdTMyIGhh bmRsZTsKK307CisKK3N0cnVjdCBkcm1fdGVncmFfZ2VtX21tYXAgeworCV9fdTMyIGhhbmRsZTsK KwlfX3UzMiBwYWQ7CisJX191NjQgb2Zmc2V0OworfTsKKworc3RydWN0IGRybV90ZWdyYV9zeW5j cHRfcmVhZCB7CisJX191MzIgaWQ7CisJX191MzIgdmFsdWU7Cit9OworCitzdHJ1Y3QgZHJtX3Rl Z3JhX3N5bmNwdF9pbmNyIHsKKwlfX3UzMiBpZDsKKwlfX3UzMiBwYWQ7Cit9OworCitzdHJ1Y3Qg ZHJtX3RlZ3JhX3N5bmNwdF93YWl0IHsKKwlfX3UzMiBpZDsKKwlfX3UzMiB0aHJlc2g7CisJX191 MzIgdGltZW91dDsKKwlfX3UzMiB2YWx1ZTsKK307CisKKyNkZWZpbmUgRFJNX1RFR1JBX05PX1RJ TUVPVVQJKDB4ZmZmZmZmZmYpCisKK3N0cnVjdCBkcm1fdGVncmFfb3Blbl9jaGFubmVsIHsKKwlf X3UzMiBjbGllbnQ7CisJX191MzIgcGFkOworCV9fdTY0IGNvbnRleHQ7Cit9OworCitzdHJ1Y3Qg ZHJtX3RlZ3JhX2Nsb3NlX2NoYW5uZWwgeworCV9fdTY0IGNvbnRleHQ7Cit9OworCitzdHJ1Y3Qg ZHJtX3RlZ3JhX2dldF9zeW5jcHQgeworCV9fdTY0IGNvbnRleHQ7CisJX191MzIgaW5kZXg7CisJ X191MzIgaWQ7Cit9OworCitzdHJ1Y3QgZHJtX3RlZ3JhX2dldF9zeW5jcHRfYmFzZSB7CisJX191 NjQgY29udGV4dDsKKwlfX3UzMiBzeW5jcHQ7CisJX191MzIgaWQ7Cit9OworCitzdHJ1Y3QgZHJt X3RlZ3JhX3N5bmNwdCB7CisJX191MzIgaWQ7CisJX191MzIgaW5jcnM7Cit9OworCitzdHJ1Y3Qg ZHJtX3RlZ3JhX2NtZGJ1ZiB7CisJX191MzIgaGFuZGxlOworCV9fdTMyIG9mZnNldDsKKwlfX3Uz MiB3b3JkczsKKwlfX3UzMiBwYWQ7Cit9OworCitzdHJ1Y3QgZHJtX3RlZ3JhX3JlbG9jIHsKKwlz dHJ1Y3QgeworCQlfX3UzMiBoYW5kbGU7CisJCV9fdTMyIG9mZnNldDsKKwl9IGNtZGJ1ZjsKKwlz dHJ1Y3QgeworCQlfX3UzMiBoYW5kbGU7CisJCV9fdTMyIG9mZnNldDsKKwl9IHRhcmdldDsKKwlf X3UzMiBzaGlmdDsKKwlfX3UzMiBwYWQ7Cit9OworCitzdHJ1Y3QgZHJtX3RlZ3JhX3dhaXRjaGsg eworCV9fdTMyIGhhbmRsZTsKKwlfX3UzMiBvZmZzZXQ7CisJX191MzIgc3luY3B0OworCV9fdTMy IHRocmVzaDsKK307CisKK3N0cnVjdCBkcm1fdGVncmFfc3VibWl0IHsKKwlfX3U2NCBjb250ZXh0 OworCV9fdTMyIG51bV9zeW5jcHRzOworCV9fdTMyIG51bV9jbWRidWZzOworCV9fdTMyIG51bV9y ZWxvY3M7CisJX191MzIgbnVtX3dhaXRjaGtzOworCV9fdTMyIHdhaXRjaGtfbWFzazsKKwlfX3Uz MiB0aW1lb3V0OworCV9fdTY0IHN5bmNwdHM7CisJX191NjQgY21kYnVmczsKKwlfX3U2NCByZWxv Y3M7CisJX191NjQgd2FpdGNoa3M7CisJX191MzIgZmVuY2U7CQkvKiBSZXR1cm4gdmFsdWUgKi8K KworCV9fdTMyIHJlc2VydmVkWzVdOwkvKiBmdXR1cmUgZXhwYW5zaW9uICovCit9OworCisjZGVm aW5lIERSTV9URUdSQV9HRU1fVElMSU5HX01PREVfUElUQ0ggMAorI2RlZmluZSBEUk1fVEVHUkFf R0VNX1RJTElOR19NT0RFX1RJTEVEIDEKKyNkZWZpbmUgRFJNX1RFR1JBX0dFTV9USUxJTkdfTU9E RV9CTE9DSyAyCisKK3N0cnVjdCBkcm1fdGVncmFfZ2VtX3NldF90aWxpbmcgeworCS8qIGlucHV0 ICovCisJX191MzIgaGFuZGxlOworCV9fdTMyIG1vZGU7CisJX191MzIgdmFsdWU7CisJX191MzIg cGFkOworfTsKKworc3RydWN0IGRybV90ZWdyYV9nZW1fZ2V0X3RpbGluZyB7CisJLyogaW5wdXQg Ki8KKwlfX3UzMiBoYW5kbGU7CisJLyogb3V0cHV0ICovCisJX191MzIgbW9kZTsKKwlfX3UzMiB2 YWx1ZTsKKwlfX3UzMiBwYWQ7Cit9OworCisjZGVmaW5lIERSTV9URUdSQV9HRU1fQk9UVE9NX1VQ CQkoMSA8PCAwKQorI2RlZmluZSBEUk1fVEVHUkFfR0VNX0ZMQUdTCQkoRFJNX1RFR1JBX0dFTV9C T1RUT01fVVApCisKK3N0cnVjdCBkcm1fdGVncmFfZ2VtX3NldF9mbGFncyB7CisJLyogaW5wdXQg Ki8KKwlfX3UzMiBoYW5kbGU7CisJLyogb3V0cHV0ICovCisJX191MzIgZmxhZ3M7Cit9OworCitz dHJ1Y3QgZHJtX3RlZ3JhX2dlbV9nZXRfZmxhZ3MgeworCS8qIGlucHV0ICovCisJX191MzIgaGFu ZGxlOworCS8qIG91dHB1dCAqLworCV9fdTMyIGZsYWdzOworfTsKKworI2RlZmluZSBEUk1fVEVH UkFfR0VNX0NSRUFURQkJMHgwMAorI2RlZmluZSBEUk1fVEVHUkFfR0VNX01NQVAJCTB4MDEKKyNk ZWZpbmUgRFJNX1RFR1JBX1NZTkNQVF9SRUFECQkweDAyCisjZGVmaW5lIERSTV9URUdSQV9TWU5D UFRfSU5DUgkJMHgwMworI2RlZmluZSBEUk1fVEVHUkFfU1lOQ1BUX1dBSVQJCTB4MDQKKyNkZWZp bmUgRFJNX1RFR1JBX09QRU5fQ0hBTk5FTAkJMHgwNQorI2RlZmluZSBEUk1fVEVHUkFfQ0xPU0Vf Q0hBTk5FTAkJMHgwNgorI2RlZmluZSBEUk1fVEVHUkFfR0VUX1NZTkNQVAkJMHgwNworI2RlZmlu ZSBEUk1fVEVHUkFfU1VCTUlUCQkweDA4CisjZGVmaW5lIERSTV9URUdSQV9HRVRfU1lOQ1BUX0JB U0UJMHgwOQorI2RlZmluZSBEUk1fVEVHUkFfR0VNX1NFVF9USUxJTkcJMHgwYQorI2RlZmluZSBE Uk1fVEVHUkFfR0VNX0dFVF9USUxJTkcJMHgwYgorI2RlZmluZSBEUk1fVEVHUkFfR0VNX1NFVF9G TEFHUwkJMHgwYworI2RlZmluZSBEUk1fVEVHUkFfR0VNX0dFVF9GTEFHUwkJMHgwZAorCisjZGVm aW5lIERSTV9JT0NUTF9URUdSQV9HRU1fQ1JFQVRFIERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0Ug KyBEUk1fVEVHUkFfR0VNX0NSRUFURSwgc3RydWN0IGRybV90ZWdyYV9nZW1fY3JlYXRlKQorI2Rl ZmluZSBEUk1fSU9DVExfVEVHUkFfR0VNX01NQVAgRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSAr IERSTV9URUdSQV9HRU1fTU1BUCwgc3RydWN0IGRybV90ZWdyYV9nZW1fbW1hcCkKKyNkZWZpbmUg RFJNX0lPQ1RMX1RFR1JBX1NZTkNQVF9SRUFEIERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBE Uk1fVEVHUkFfU1lOQ1BUX1JFQUQsIHN0cnVjdCBkcm1fdGVncmFfc3luY3B0X3JlYWQpCisjZGVm aW5lIERSTV9JT0NUTF9URUdSQV9TWU5DUFRfSU5DUiBEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNF ICsgRFJNX1RFR1JBX1NZTkNQVF9JTkNSLCBzdHJ1Y3QgZHJtX3RlZ3JhX3N5bmNwdF9pbmNyKQor I2RlZmluZSBEUk1fSU9DVExfVEVHUkFfU1lOQ1BUX1dBSVQgRFJNX0lPV1IoRFJNX0NPTU1BTkRf QkFTRSArIERSTV9URUdSQV9TWU5DUFRfV0FJVCwgc3RydWN0IGRybV90ZWdyYV9zeW5jcHRfd2Fp dCkKKyNkZWZpbmUgRFJNX0lPQ1RMX1RFR1JBX09QRU5fQ0hBTk5FTCBEUk1fSU9XUihEUk1fQ09N TUFORF9CQVNFICsgRFJNX1RFR1JBX09QRU5fQ0hBTk5FTCwgc3RydWN0IGRybV90ZWdyYV9vcGVu X2NoYW5uZWwpCisjZGVmaW5lIERSTV9JT0NUTF9URUdSQV9DTE9TRV9DSEFOTkVMIERSTV9JT1dS KERSTV9DT01NQU5EX0JBU0UgKyBEUk1fVEVHUkFfQ0xPU0VfQ0hBTk5FTCwgc3RydWN0IGRybV90 ZWdyYV9vcGVuX2NoYW5uZWwpCisjZGVmaW5lIERSTV9JT0NUTF9URUdSQV9HRVRfU1lOQ1BUIERS TV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fVEVHUkFfR0VUX1NZTkNQVCwgc3RydWN0IGRy bV90ZWdyYV9nZXRfc3luY3B0KQorI2RlZmluZSBEUk1fSU9DVExfVEVHUkFfU1VCTUlUIERSTV9J T1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fVEVHUkFfU1VCTUlULCBzdHJ1Y3QgZHJtX3RlZ3Jh X3N1Ym1pdCkKKyNkZWZpbmUgRFJNX0lPQ1RMX1RFR1JBX0dFVF9TWU5DUFRfQkFTRSBEUk1fSU9X UihEUk1fQ09NTUFORF9CQVNFICsgRFJNX1RFR1JBX0dFVF9TWU5DUFRfQkFTRSwgc3RydWN0IGRy bV90ZWdyYV9nZXRfc3luY3B0X2Jhc2UpCisjZGVmaW5lIERSTV9JT0NUTF9URUdSQV9HRU1fU0VU X1RJTElORyBEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX1RFR1JBX0dFTV9TRVRfVElM SU5HLCBzdHJ1Y3QgZHJtX3RlZ3JhX2dlbV9zZXRfdGlsaW5nKQorI2RlZmluZSBEUk1fSU9DVExf VEVHUkFfR0VNX0dFVF9USUxJTkcgRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9URUdS QV9HRU1fR0VUX1RJTElORywgc3RydWN0IGRybV90ZWdyYV9nZW1fZ2V0X3RpbGluZykKKyNkZWZp bmUgRFJNX0lPQ1RMX1RFR1JBX0dFTV9TRVRfRkxBR1MgRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFT RSArIERSTV9URUdSQV9HRU1fU0VUX0ZMQUdTLCBzdHJ1Y3QgZHJtX3RlZ3JhX2dlbV9zZXRfZmxh Z3MpCisjZGVmaW5lIERSTV9JT0NUTF9URUdSQV9HRU1fR0VUX0ZMQUdTIERSTV9JT1dSKERSTV9D T01NQU5EX0JBU0UgKyBEUk1fVEVHUkFfR0VNX0dFVF9GTEFHUywgc3RydWN0IGRybV90ZWdyYV9n ZW1fZ2V0X2ZsYWdzKQorCisjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKK30KKyNlbmRpZgorCisj ZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtLXVhcGkvdmM0X2RybS5oIGIvaW5jbHVkZS9k cm0tdWFwaS92YzRfZHJtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw Li4zNDE1YTRiNzE4ODQKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2RybS11YXBpL3ZjNF9k cm0uaApAQCAtMCwwICsxLDM1OSBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE0LTIwMTUgQnJv YWRjb20KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJn ZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFu ZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRv IGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRo b3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdl LCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVz IG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBT b2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBj b25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBl cm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwg YmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUK KyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBX SVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNM VURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU WSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1F TlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERF UlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElU WSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBB UklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FS RSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKi8K KworI2lmbmRlZiBfVkM0X0RSTV9IXworI2RlZmluZSBfVkM0X0RSTV9IXworCisjaW5jbHVkZSAi ZHJtLmgiCisKKyNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQorZXh0ZXJuICJDIiB7CisjZW5kaWYK KworI2RlZmluZSBEUk1fVkM0X1NVQk1JVF9DTCAgICAgICAgICAgICAgICAgICAgICAgICAweDAw CisjZGVmaW5lIERSTV9WQzRfV0FJVF9TRVFOTyAgICAgICAgICAgICAgICAgICAgICAgIDB4MDEK KyNkZWZpbmUgRFJNX1ZDNF9XQUlUX0JPICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMgor I2RlZmluZSBEUk1fVkM0X0NSRUFURV9CTyAgICAgICAgICAgICAgICAgICAgICAgICAweDAzCisj ZGVmaW5lIERSTV9WQzRfTU1BUF9CTyAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDQKKyNk ZWZpbmUgRFJNX1ZDNF9DUkVBVEVfU0hBREVSX0JPICAgICAgICAgICAgICAgICAgMHgwNQorI2Rl ZmluZSBEUk1fVkM0X0dFVF9IQU5HX1NUQVRFICAgICAgICAgICAgICAgICAgICAweDA2CisjZGVm aW5lIERSTV9WQzRfR0VUX1BBUkFNICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDcKKyNkZWZp bmUgRFJNX1ZDNF9TRVRfVElMSU5HICAgICAgICAgICAgICAgICAgICAgICAgMHgwOAorI2RlZmlu ZSBEUk1fVkM0X0dFVF9USUxJTkcgICAgICAgICAgICAgICAgICAgICAgICAweDA5CisjZGVmaW5l IERSTV9WQzRfTEFCRUxfQk8gICAgICAgICAgICAgICAgICAgICAgICAgIDB4MGEKKyNkZWZpbmUg RFJNX1ZDNF9HRU1fTUFEVklTRSAgICAgICAgICAgICAgICAgICAgICAgMHgwYgorCisjZGVmaW5l IERSTV9JT0NUTF9WQzRfU1VCTUlUX0NMICAgICAgICAgICBEUk1fSU9XUihEUk1fQ09NTUFORF9C QVNFICsgRFJNX1ZDNF9TVUJNSVRfQ0wsIHN0cnVjdCBkcm1fdmM0X3N1Ym1pdF9jbCkKKyNkZWZp bmUgRFJNX0lPQ1RMX1ZDNF9XQUlUX1NFUU5PICAgICAgICAgIERSTV9JT1dSKERSTV9DT01NQU5E X0JBU0UgKyBEUk1fVkM0X1dBSVRfU0VRTk8sIHN0cnVjdCBkcm1fdmM0X3dhaXRfc2Vxbm8pCisj ZGVmaW5lIERSTV9JT0NUTF9WQzRfV0FJVF9CTyAgICAgICAgICAgICBEUk1fSU9XUihEUk1fQ09N TUFORF9CQVNFICsgRFJNX1ZDNF9XQUlUX0JPLCBzdHJ1Y3QgZHJtX3ZjNF93YWl0X2JvKQorI2Rl ZmluZSBEUk1fSU9DVExfVkM0X0NSRUFURV9CTyAgICAgICAgICAgRFJNX0lPV1IoRFJNX0NPTU1B TkRfQkFTRSArIERSTV9WQzRfQ1JFQVRFX0JPLCBzdHJ1Y3QgZHJtX3ZjNF9jcmVhdGVfYm8pCisj ZGVmaW5lIERSTV9JT0NUTF9WQzRfTU1BUF9CTyAgICAgICAgICAgICBEUk1fSU9XUihEUk1fQ09N TUFORF9CQVNFICsgRFJNX1ZDNF9NTUFQX0JPLCBzdHJ1Y3QgZHJtX3ZjNF9tbWFwX2JvKQorI2Rl ZmluZSBEUk1fSU9DVExfVkM0X0NSRUFURV9TSEFERVJfQk8gICAgRFJNX0lPV1IoRFJNX0NPTU1B TkRfQkFTRSArIERSTV9WQzRfQ1JFQVRFX1NIQURFUl9CTywgc3RydWN0IGRybV92YzRfY3JlYXRl X3NoYWRlcl9ibykKKyNkZWZpbmUgRFJNX0lPQ1RMX1ZDNF9HRVRfSEFOR19TVEFURSAgICAgIERS TV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fVkM0X0dFVF9IQU5HX1NUQVRFLCBzdHJ1Y3Qg ZHJtX3ZjNF9nZXRfaGFuZ19zdGF0ZSkKKyNkZWZpbmUgRFJNX0lPQ1RMX1ZDNF9HRVRfUEFSQU0g ICAgICAgICAgIERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fVkM0X0dFVF9QQVJBTSwg c3RydWN0IGRybV92YzRfZ2V0X3BhcmFtKQorI2RlZmluZSBEUk1fSU9DVExfVkM0X1NFVF9USUxJ TkcgICAgICAgICAgRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9WQzRfU0VUX1RJTElO Rywgc3RydWN0IGRybV92YzRfc2V0X3RpbGluZykKKyNkZWZpbmUgRFJNX0lPQ1RMX1ZDNF9HRVRf VElMSU5HICAgICAgICAgIERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fVkM0X0dFVF9U SUxJTkcsIHN0cnVjdCBkcm1fdmM0X2dldF90aWxpbmcpCisjZGVmaW5lIERSTV9JT0NUTF9WQzRf TEFCRUxfQk8gICAgICAgICAgICBEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX1ZDNF9M QUJFTF9CTywgc3RydWN0IGRybV92YzRfbGFiZWxfYm8pCisjZGVmaW5lIERSTV9JT0NUTF9WQzRf R0VNX01BRFZJU0UgICAgICAgICBEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX1ZDNF9H RU1fTUFEVklTRSwgc3RydWN0IGRybV92YzRfZ2VtX21hZHZpc2UpCisKK3N0cnVjdCBkcm1fdmM0 X3N1Ym1pdF9yY2xfc3VyZmFjZSB7CisJX191MzIgaGluZGV4OyAvKiBIYW5kbGUgaW5kZXgsIG9y IH4wIGlmIG5vdCBwcmVzZW50LiAqLworCV9fdTMyIG9mZnNldDsgLyogT2Zmc2V0IHRvIHN0YXJ0 IG9mIGJ1ZmZlci4gKi8KKwkvKgorCSAqIEJpdHMgZm9yIGVpdGhlciByZW5kZXIgY29uZmlnIChj b2xvcl93cml0ZSkgb3IgbG9hZC9zdG9yZSBwYWNrZXQuCisJICogQml0cyBzaG91bGQgYWxsIGJl IDAgZm9yIE1TQUEgbG9hZC9zdG9yZXMuCisJICovCisJX191MTYgYml0czsKKworI2RlZmluZSBW QzRfU1VCTUlUX1JDTF9TVVJGQUNFX1JFQURfSVNfRlVMTF9SRVMJCSgxIDw8IDApCisJX191MTYg ZmxhZ3M7Cit9OworCisvKioKKyAqIHN0cnVjdCBkcm1fdmM0X3N1Ym1pdF9jbCAtIGlvY3RsIGFy Z3VtZW50IGZvciBzdWJtaXR0aW5nIGNvbW1hbmRzIHRvIHRoZSAzRAorICogZW5naW5lLgorICoK KyAqIERyaXZlcnMgdHlwaWNhbGx5IHVzZSBHUFUgQk9zIHRvIHN0b3JlIGJhdGNoYnVmZmVycyAv IGNvbW1hbmQgbGlzdHMgYW5kCisgKiB0aGVpciBhc3NvY2lhdGVkIHN0YXRlLiAgSG93ZXZlciwg YmVjYXVzZSB0aGUgVkM0IGxhY2tzIGFuIE1NVSwgd2UgaGF2ZSB0bworICogZG8gdmFsaWRhdGlv biBvZiBtZW1vcnkgYWNjZXNzZXMgYnkgdGhlIEdQVSBjb21tYW5kcy4gIElmIHdlIHdlcmUgdG8g c3RvcmUKKyAqIG91ciBjb21tYW5kcyBpbiBCT3MsIHdlJ2QgbmVlZCB0byBkbyB1bmNhY2hlZCBy ZWFkYmFjayBmcm9tIHRoZW0gdG8gZG8gdGhlCisgKiB2YWxpZGF0aW9uIHByb2Nlc3MsIHdoaWNo IGlzIHRvbyBleHBlbnNpdmUuICBJbnN0ZWFkLCB1c2Vyc3BhY2UgYWNjdW11bGF0ZXMKKyAqIGNv bW1hbmRzIGFuZCBhc3NvY2lhdGVkIHN0YXRlIGluIHBsYWluIG1lbW9yeSwgdGhlbiB0aGUga2Vy bmVsIGNvcGllcyB0aGUKKyAqIGRhdGEgdG8gaXRzIG93biBhZGRyZXNzIHNwYWNlLCBhbmQgdGhl biB2YWxpZGF0ZXMgYW5kIHN0b3JlcyBpdCBpbiBhIEdQVQorICogQk8uCisgKi8KK3N0cnVjdCBk cm1fdmM0X3N1Ym1pdF9jbCB7CisJLyogUG9pbnRlciB0byB0aGUgYmlubmVyIGNvbW1hbmQgbGlz dC4KKwkgKgorCSAqIFRoaXMgaXMgdGhlIGZpcnN0IHNldCBvZiBjb21tYW5kcyBleGVjdXRlZCwg d2hpY2ggcnVucyB0aGUKKwkgKiBjb29yZGluYXRlIHNoYWRlciB0byBkZXRlcm1pbmUgd2hlcmUg cHJpbWl0aXZlcyBsYW5kIG9uIHRoZSBzY3JlZW4sCisJICogdGhlbiB3cml0ZXMgb3V0IHRoZSBz dGF0ZSB1cGRhdGVzIGFuZCBkcmF3IGNhbGxzIG5lY2Vzc2FyeSBwZXIgdGlsZQorCSAqIHRvIHRo ZSB0aWxlIGFsbG9jYXRpb24gQk8uCisJICovCisJX191NjQgYmluX2NsOworCisJLyogUG9pbnRl ciB0byB0aGUgc2hhZGVyIHJlY29yZHMuCisJICoKKwkgKiBTaGFkZXIgcmVjb3JkcyBhcmUgdGhl IHN0cnVjdHVyZXMgcmVhZCBieSB0aGUgaGFyZHdhcmUgdGhhdCBjb250YWluCisJICogcG9pbnRl cnMgdG8gdW5pZm9ybXMsIHNoYWRlcnMsIGFuZCB2ZXJ0ZXggYXR0cmlidXRlcy4gIFRoZQorCSAq IHJlZmVyZW5jZSB0byB0aGUgc2hhZGVyIHJlY29yZCBoYXMgZW5vdWdoIGluZm9ybWF0aW9uIHRv IGRldGVybWluZQorCSAqIGhvdyBtYW55IHBvaW50ZXJzIGFyZSBuZWNlc3NhcnkgKGZpeGVkIG51 bWJlciBmb3Igc2hhZGVycy91bmlmb3JtcywKKwkgKiBhbmQgYW4gYXR0cmlidXRlIGNvdW50KSwg c28gdGhvc2UgQk8gaW5kaWNlcyBpbnRvIGJvX2hhbmRsZXMgYXJlCisJICoganVzdCBzdG9yZWQg YXMgX191MzJzIGJlZm9yZSBlYWNoIHNoYWRlciByZWNvcmQgcGFzc2VkIGluLgorCSAqLworCV9f dTY0IHNoYWRlcl9yZWM7CisKKwkvKiBQb2ludGVyIHRvIHVuaWZvcm0gZGF0YSBhbmQgdGV4dHVy ZSBoYW5kbGVzIGZvciB0aGUgdGV4dHVyZXMKKwkgKiByZWZlcmVuY2VkIGJ5IHRoZSBzaGFkZXIu CisJICoKKwkgKiBGb3IgZWFjaCBzaGFkZXIgc3RhdGUgcmVjb3JkLCB0aGVyZSBpcyBhIHNldCBv ZiB1bmlmb3JtIGRhdGEgaW4gdGhlCisJICogb3JkZXIgcmVmZXJlbmNlZCBieSB0aGUgcmVjb3Jk IChGUywgVlMsIHRoZW4gQ1MpLiAgRWFjaCBzZXQgb2YKKwkgKiB1bmlmb3JtIGRhdGEgaGFzIGEg X191MzIgaW5kZXggaW50byBib19oYW5kbGVzIHBlciB0ZXh0dXJlCisJICogc2FtcGxlIG9wZXJh dGlvbiwgaW4gdGhlIG9yZGVyIHRoZSBRUFVfV19UTVVuX1Mgd3JpdGVzIGFwcGVhciBpbgorCSAq IHRoZSBwcm9ncmFtLiAgRm9sbG93aW5nIHRoZSB0ZXh0dXJlIEJPIGhhbmRsZSBpbmRpY2VzIGlz IHRoZSBhY3R1YWwKKwkgKiB1bmlmb3JtIGRhdGEuCisJICoKKwkgKiBUaGUgaW5kaXZpZHVhbCB1 bmlmb3JtIHN0YXRlIGJsb2NrcyBkb24ndCBoYXZlIHNpemVzIHBhc3NlZCBpbiwKKwkgKiBiZWNh dXNlIHRoZSBrZXJuZWwgaGFzIHRvIGRldGVybWluZSB0aGUgc2l6ZXMgYW55d2F5IGR1cmluZyBz aGFkZXIKKwkgKiBjb2RlIHZhbGlkYXRpb24uCisJICovCisJX191NjQgdW5pZm9ybXM7CisJX191 NjQgYm9faGFuZGxlczsKKworCS8qIFNpemUgaW4gYnl0ZXMgb2YgdGhlIGJpbm5lciBjb21tYW5k IGxpc3QuICovCisJX191MzIgYmluX2NsX3NpemU7CisJLyogU2l6ZSBpbiBieXRlcyBvZiB0aGUg c2V0IG9mIHNoYWRlciByZWNvcmRzLiAqLworCV9fdTMyIHNoYWRlcl9yZWNfc2l6ZTsKKwkvKiBO dW1iZXIgb2Ygc2hhZGVyIHJlY29yZHMuCisJICoKKwkgKiBUaGlzIGNvdWxkIGp1c3QgYmUgY29t cHV0ZWQgZnJvbSB0aGUgY29udGVudHMgb2Ygc2hhZGVyX3JlY29yZHMgYW5kCisJICogdGhlIGFk ZHJlc3MgYml0cyBvZiByZWZlcmVuY2VzIHRvIHRoZW0gZnJvbSB0aGUgYmluIENMLCBidXQgaXQK KwkgKiBrZWVwcyB0aGUga2VybmVsIGZyb20gaGF2aW5nIHRvIHJlc2l6ZSBzb21lIGFsbG9jYXRp b25zIGl0IG1ha2VzLgorCSAqLworCV9fdTMyIHNoYWRlcl9yZWNfY291bnQ7CisJLyogU2l6ZSBp biBieXRlcyBvZiB0aGUgdW5pZm9ybSBzdGF0ZS4gKi8KKwlfX3UzMiB1bmlmb3Jtc19zaXplOwor CisJLyogTnVtYmVyIG9mIEJPIGhhbmRsZXMgcGFzc2VkIGluIChzaXplIGlzIHRoYXQgdGltZXMg NCkuICovCisJX191MzIgYm9faGFuZGxlX2NvdW50OworCisJLyogUkNMIHNldHVwOiAqLworCV9f dTE2IHdpZHRoOworCV9fdTE2IGhlaWdodDsKKwlfX3U4IG1pbl94X3RpbGU7CisJX191OCBtaW5f eV90aWxlOworCV9fdTggbWF4X3hfdGlsZTsKKwlfX3U4IG1heF95X3RpbGU7CisJc3RydWN0IGRy bV92YzRfc3VibWl0X3JjbF9zdXJmYWNlIGNvbG9yX3JlYWQ7CisJc3RydWN0IGRybV92YzRfc3Vi bWl0X3JjbF9zdXJmYWNlIGNvbG9yX3dyaXRlOworCXN0cnVjdCBkcm1fdmM0X3N1Ym1pdF9yY2xf c3VyZmFjZSB6c19yZWFkOworCXN0cnVjdCBkcm1fdmM0X3N1Ym1pdF9yY2xfc3VyZmFjZSB6c193 cml0ZTsKKwlzdHJ1Y3QgZHJtX3ZjNF9zdWJtaXRfcmNsX3N1cmZhY2UgbXNhYV9jb2xvcl93cml0 ZTsKKwlzdHJ1Y3QgZHJtX3ZjNF9zdWJtaXRfcmNsX3N1cmZhY2UgbXNhYV96c193cml0ZTsKKwlf X3UzMiBjbGVhcl9jb2xvclsyXTsKKwlfX3UzMiBjbGVhcl96OworCV9fdTggY2xlYXJfczsKKwor CV9fdTMyIHBhZDoyNDsKKworI2RlZmluZSBWQzRfU1VCTUlUX0NMX1VTRV9DTEVBUl9DT0xPUgkJ CSgxIDw8IDApCisvKiBCeSBkZWZhdWx0LCB0aGUga2VybmVsIGdldHMgdG8gY2hvb3NlIHRoZSBv cmRlciB0aGF0IHRoZSB0aWxlcyBhcmUKKyAqIHJlbmRlcmVkIGluLiAgSWYgdGhpcyBpcyBzZXQs IHRoZW4gdGhlIHRpbGVzIHdpbGwgYmUgcmVuZGVyZWQgaW4gYQorICogcmFzdGVyIG9yZGVyLCB3 aXRoIHRoZSByaWdodC10by1sZWZ0IHZzIGxlZnQtdG8tcmlnaHQgYW5kCisgKiB0b3AtdG8tYm90 dG9tIHZzIGJvdHRvbS10by10b3AgZGljdGF0ZWQgYnkKKyAqIFZDNF9TVUJNSVRfQ0xfUkNMX09S REVSX0lOQ1JFQVNJTkdfKi4gIFRoaXMgYWxsb3dzIG92ZXJsYXBwaW5nCisgKiBibGl0cyB0byBi ZSBpbXBsZW1lbnRlZCB1c2luZyB0aGUgM0QgZW5naW5lLgorICovCisjZGVmaW5lIFZDNF9TVUJN SVRfQ0xfRklYRURfUkNMX09SREVSCQkJKDEgPDwgMSkKKyNkZWZpbmUgVkM0X1NVQk1JVF9DTF9S Q0xfT1JERVJfSU5DUkVBU0lOR19YCQkoMSA8PCAyKQorI2RlZmluZSBWQzRfU1VCTUlUX0NMX1JD TF9PUkRFUl9JTkNSRUFTSU5HX1kJCSgxIDw8IDMpCisJX191MzIgZmxhZ3M7CisKKwkvKiBSZXR1 cm5lZCB2YWx1ZSBvZiB0aGUgc2Vxbm8gb2YgdGhpcyByZW5kZXIgam9iIChmb3IgdGhlCisJICog d2FpdCBpb2N0bCkuCisJICovCisJX191NjQgc2Vxbm87Cit9OworCisvKioKKyAqIHN0cnVjdCBk cm1fdmM0X3dhaXRfc2Vxbm8gLSBpb2N0bCBhcmd1bWVudCBmb3Igd2FpdGluZyBmb3IKKyAqIERS TV9WQzRfU1VCTUlUX0NMIGNvbXBsZXRpb24gdXNpbmcgaXRzIHJldHVybmVkIHNlcW5vLgorICoK KyAqIHRpbWVvdXRfbnMgaXMgdGhlIHRpbWVvdXQgaW4gbmFub3NlY29uZHMsIHdoZXJlICIwIiBt ZWFucyAiZG9uJ3QKKyAqIGJsb2NrLCBqdXN0IHJldHVybiB0aGUgc3RhdHVzLiIKKyAqLworc3Ry dWN0IGRybV92YzRfd2FpdF9zZXFubyB7CisJX191NjQgc2Vxbm87CisJX191NjQgdGltZW91dF9u czsKK307CisKKy8qKgorICogc3RydWN0IGRybV92YzRfd2FpdF9ibyAtIGlvY3RsIGFyZ3VtZW50 IGZvciB3YWl0aW5nIGZvcgorICogY29tcGxldGlvbiBvZiB0aGUgbGFzdCBEUk1fVkM0X1NVQk1J VF9DTCBvbiBhIEJPLgorICoKKyAqIFRoaXMgaXMgdXNlZnVsIGZvciBjYXNlcyB3aGVyZSBtdWx0 aXBsZSBwcm9jZXNzZXMgbWlnaHQgYmUKKyAqIHJlbmRlcmluZyB0byBhIEJPIGFuZCB5b3Ugd2Fu dCB0byB3YWl0IGZvciBhbGwgcmVuZGVyaW5nIHRvIGJlCisgKiBjb21wbGV0ZWQuCisgKi8KK3N0 cnVjdCBkcm1fdmM0X3dhaXRfYm8geworCV9fdTMyIGhhbmRsZTsKKwlfX3UzMiBwYWQ7CisJX191 NjQgdGltZW91dF9uczsKK307CisKKy8qKgorICogc3RydWN0IGRybV92YzRfY3JlYXRlX2JvIC0g aW9jdGwgYXJndW1lbnQgZm9yIGNyZWF0aW5nIFZDNCBCT3MuCisgKgorICogVGhlcmUgYXJlIGN1 cnJlbnRseSBubyB2YWx1ZXMgZm9yIHRoZSBmbGFncyBhcmd1bWVudCwgYnV0IGl0IG1heSBiZQor ICogdXNlZCBpbiBhIGZ1dHVyZSBleHRlbnNpb24uCisgKi8KK3N0cnVjdCBkcm1fdmM0X2NyZWF0 ZV9ibyB7CisJX191MzIgc2l6ZTsKKwlfX3UzMiBmbGFnczsKKwkvKiogUmV0dXJuZWQgR0VNIGhh bmRsZSBmb3IgdGhlIEJPLiAqLworCV9fdTMyIGhhbmRsZTsKKwlfX3UzMiBwYWQ7Cit9OworCisv KioKKyAqIHN0cnVjdCBkcm1fdmM0X21tYXBfYm8gLSBpb2N0bCBhcmd1bWVudCBmb3IgbWFwcGlu ZyBWQzQgQk9zLgorICoKKyAqIFRoaXMgZG9lc24ndCBhY3R1YWxseSBwZXJmb3JtIGFuIG1tYXAu ICBJbnN0ZWFkLCBpdCByZXR1cm5zIHRoZQorICogb2Zmc2V0IHlvdSBuZWVkIHRvIHVzZSBpbiBh biBtbWFwIG9uIHRoZSBEUk0gZGV2aWNlIG5vZGUuICBUaGlzCisgKiBtZWFucyB0aGF0IHRvb2xz IGxpa2UgdmFsZ3JpbmQgZW5kIHVwIGtub3dpbmcgYWJvdXQgdGhlIG1hcHBlZAorICogbWVtb3J5 LgorICoKKyAqIFRoZXJlIGFyZSBjdXJyZW50bHkgbm8gdmFsdWVzIGZvciB0aGUgZmxhZ3MgYXJn dW1lbnQsIGJ1dCBpdCBtYXkgYmUKKyAqIHVzZWQgaW4gYSBmdXR1cmUgZXh0ZW5zaW9uLgorICov CitzdHJ1Y3QgZHJtX3ZjNF9tbWFwX2JvIHsKKwkvKiogSGFuZGxlIGZvciB0aGUgb2JqZWN0IGJl aW5nIG1hcHBlZC4gKi8KKwlfX3UzMiBoYW5kbGU7CisJX191MzIgZmxhZ3M7CisJLyoqIG9mZnNl dCBpbnRvIHRoZSBkcm0gbm9kZSB0byB1c2UgZm9yIHN1YnNlcXVlbnQgbW1hcCBjYWxsLiAqLwor CV9fdTY0IG9mZnNldDsKK307CisKKy8qKgorICogc3RydWN0IGRybV92YzRfY3JlYXRlX3NoYWRl cl9ibyAtIGlvY3RsIGFyZ3VtZW50IGZvciBjcmVhdGluZyBWQzQKKyAqIHNoYWRlciBCT3MuCisg KgorICogU2luY2UgYWxsb3dpbmcgYSBzaGFkZXIgdG8gYmUgb3ZlcndyaXR0ZW4gd2hpbGUgaXQn cyBhbHNvIGJlaW5nCisgKiBleGVjdXRlZCBmcm9tIHdvdWxkIGFsbG93IHByaXZsZWdlIGVzY2Fs YXRpb24sIHNoYWRlcnMgbXVzdCBiZQorICogY3JlYXRlZCB1c2luZyB0aGlzIGlvY3RsLCBhbmQg dGhleSBjYW4ndCBiZSBtbWFwcGVkIGxhdGVyLgorICovCitzdHJ1Y3QgZHJtX3ZjNF9jcmVhdGVf c2hhZGVyX2JvIHsKKwkvKiBTaXplIG9mIHRoZSBkYXRhIGFyZ3VtZW50LiAqLworCV9fdTMyIHNp emU7CisJLyogRmxhZ3MsIGN1cnJlbnRseSBtdXN0IGJlIDAuICovCisJX191MzIgZmxhZ3M7CisK KwkvKiBQb2ludGVyIHRvIHRoZSBkYXRhLiAqLworCV9fdTY0IGRhdGE7CisKKwkvKiogUmV0dXJu ZWQgR0VNIGhhbmRsZSBmb3IgdGhlIEJPLiAqLworCV9fdTMyIGhhbmRsZTsKKwkvKiBQYWQsIG11 c3QgYmUgMC4gKi8KKwlfX3UzMiBwYWQ7Cit9OworCitzdHJ1Y3QgZHJtX3ZjNF9nZXRfaGFuZ19z dGF0ZV9ibyB7CisJX191MzIgaGFuZGxlOworCV9fdTMyIHBhZGRyOworCV9fdTMyIHNpemU7CisJ X191MzIgcGFkOworfTsKKworLyoqCisgKiBzdHJ1Y3QgZHJtX3ZjNF9oYW5nX3N0YXRlIC0gaW9j dGwgYXJndW1lbnQgZm9yIGNvbGxlY3Rpbmcgc3RhdGUKKyAqIGZyb20gYSBHUFUgaGFuZyBmb3Ig YW5hbHlzaXMuCisqLworc3RydWN0IGRybV92YzRfZ2V0X2hhbmdfc3RhdGUgeworCS8qKiBQb2lu dGVyIHRvIGFycmF5IG9mIHN0cnVjdCBkcm1fdmM0X2dldF9oYW5nX3N0YXRlX2JvLiAqLworCV9f dTY0IGJvOworCS8qKgorCSAqIE9uIGlucHV0LCB0aGUgc2l6ZSBvZiB0aGUgYm8gYXJyYXkuICBP dXRwdXQgaXMgdGhlIG51bWJlcgorCSAqIG9mIGJvcyB0byBiZSByZXR1cm5lZC4KKwkgKi8KKwlf X3UzMiBib19jb3VudDsKKworCV9fdTMyIHN0YXJ0X2Jpbiwgc3RhcnRfcmVuZGVyOworCisJX191 MzIgY3QwY2EsIGN0MGVhOworCV9fdTMyIGN0MWNhLCBjdDFlYTsKKwlfX3UzMiBjdDBjcywgY3Qx Y3M7CisJX191MzIgY3QwcmEwLCBjdDFyYTA7CisKKwlfX3UzMiBicGNhLCBicGNzOworCV9fdTMy IGJwb2EsIGJwb3M7CisKKwlfX3UzMiB2cG1iYXNlOworCisJX191MzIgZGJnZTsKKwlfX3UzMiBm ZGJnbzsKKwlfX3UzMiBmZGJnYjsKKwlfX3UzMiBmZGJncjsKKwlfX3UzMiBmZGJnczsKKwlfX3Uz MiBlcnJzdGF0OworCisJLyogUGFkIHRoYXQgd2UgbWF5IHNhdmUgbW9yZSByZWdpc3RlcnMgaW50 byBpbiB0aGUgZnV0dXJlLiAqLworCV9fdTMyIHBhZFsxNl07Cit9OworCisjZGVmaW5lIERSTV9W QzRfUEFSQU1fVjNEX0lERU5UMAkJMAorI2RlZmluZSBEUk1fVkM0X1BBUkFNX1YzRF9JREVOVDEJ CTEKKyNkZWZpbmUgRFJNX1ZDNF9QQVJBTV9WM0RfSURFTlQyCQkyCisjZGVmaW5lIERSTV9WQzRf UEFSQU1fU1VQUE9SVFNfQlJBTkNIRVMJCTMKKyNkZWZpbmUgRFJNX1ZDNF9QQVJBTV9TVVBQT1JU U19FVEMxCQk0CisjZGVmaW5lIERSTV9WQzRfUEFSQU1fU1VQUE9SVFNfVEhSRUFERURfRlMJNQor I2RlZmluZSBEUk1fVkM0X1BBUkFNX1NVUFBPUlRTX0ZJWEVEX1JDTF9PUkRFUgk2CisjZGVmaW5l IERSTV9WQzRfUEFSQU1fU1VQUE9SVFNfTUFEVklTRQkJNworCitzdHJ1Y3QgZHJtX3ZjNF9nZXRf cGFyYW0geworCV9fdTMyIHBhcmFtOworCV9fdTMyIHBhZDsKKwlfX3U2NCB2YWx1ZTsKK307CisK K3N0cnVjdCBkcm1fdmM0X2dldF90aWxpbmcgeworCV9fdTMyIGhhbmRsZTsKKwlfX3UzMiBmbGFn czsKKwlfX3U2NCBtb2RpZmllcjsKK307CisKK3N0cnVjdCBkcm1fdmM0X3NldF90aWxpbmcgewor CV9fdTMyIGhhbmRsZTsKKwlfX3UzMiBmbGFnczsKKwlfX3U2NCBtb2RpZmllcjsKK307CisKKy8q KgorICogc3RydWN0IGRybV92YzRfbGFiZWxfYm8gLSBBdHRhY2ggYSBuYW1lIHRvIGEgQk8gZm9y IGRlYnVnIHB1cnBvc2VzLgorICovCitzdHJ1Y3QgZHJtX3ZjNF9sYWJlbF9ibyB7CisJX191MzIg aGFuZGxlOworCV9fdTMyIGxlbjsKKwlfX3U2NCBuYW1lOworfTsKKworLyoKKyAqIFN0YXRlcyBw cmVmaXhlZCB3aXRoICdfXycgYXJlIGludGVybmFsIHN0YXRlcyBhbmQgY2Fubm90IGJlIHBhc3Nl ZCB0byB0aGUKKyAqIERSTV9JT0NUTF9WQzRfR0VNX01BRFZJU0UgaW9jdGwuCisgKi8KKyNkZWZp bmUgVkM0X01BRFZfV0lMTE5FRUQJCQkwCisjZGVmaW5lIFZDNF9NQURWX0RPTlRORUVECQkJMQor I2RlZmluZSBfX1ZDNF9NQURWX1BVUkdFRAkJCTIKKyNkZWZpbmUgX19WQzRfTUFEVl9OT1RTVVBQ CQkJMworCitzdHJ1Y3QgZHJtX3ZjNF9nZW1fbWFkdmlzZSB7CisJX191MzIgaGFuZGxlOworCV9f dTMyIG1hZHY7CisJX191MzIgcmV0YWluZWQ7CisJX191MzIgcGFkOworfTsKKworI2lmIGRlZmlu ZWQoX19jcGx1c3BsdXMpCit9CisjZW5kaWYKKworI2VuZGlmIC8qIF9WQzRfRFJNX0hfICovCmRp ZmYgLS1naXQgYS9pbmNsdWRlL2RybS11YXBpL3ZnZW1fZHJtLmggYi9pbmNsdWRlL2RybS11YXBp L3ZnZW1fZHJtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44YTFl YWFkNjAyMTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2RybS11YXBpL3ZnZW1fZHJtLmgK QEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE2IEludGVsIENvcnBvcmF0aW9u CisgKiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdy YW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5 IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhl CisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmlj dGlvbiwgaW5jbHVkaW5nCisgKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2Us IGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCisgKiBkaXN0cmlidXRlLCBzdWIgbGljZW5z ZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCisgKiBwZXJtaXQg cGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1Ympl Y3QgdG8KKyAqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29w eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZQor ICogbmV4dCBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vi c3RhbnRpYWwgcG9ydGlvbnMKKyAqIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdB UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQ UkVTUworICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FS UkFOVElFUyBPRgorICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4KKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRVTkdT VEVOIEdSQVBISUNTIEFORC9PUiBJVFMgU1VQUExJRVJTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBD TEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9G IENPTlRSQUNULAorICogVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9S IElOIENPTk5FQ1RJT04gV0lUSCBUSEUKKyAqIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIg REVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworCisjaWZuZGVmIF9WR0VNX0RSTV9I XworI2RlZmluZSBfVkdFTV9EUk1fSF8KKworI2luY2x1ZGUgImRybS5oIgorCisjaWYgZGVmaW5l ZChfX2NwbHVzcGx1cykKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qIFBsZWFzZSBub3RlIHRo YXQgbW9kaWZpY2F0aW9ucyB0byBhbGwgc3RydWN0cyBkZWZpbmVkIGhlcmUgYXJlCisgKiBzdWJq ZWN0IHRvIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5IGNvbnN0cmFpbnRzLgorICovCisjZGVmaW5l IERSTV9WR0VNX0ZFTkNFX0FUVEFDSAkweDEKKyNkZWZpbmUgRFJNX1ZHRU1fRkVOQ0VfU0lHTkFM CTB4MgorCisjZGVmaW5lIERSTV9JT0NUTF9WR0VNX0ZFTkNFX0FUVEFDSAlEUk1fSU9XUiggRFJN X0NPTU1BTkRfQkFTRSArIERSTV9WR0VNX0ZFTkNFX0FUVEFDSCwgc3RydWN0IGRybV92Z2VtX2Zl bmNlX2F0dGFjaCkKKyNkZWZpbmUgRFJNX0lPQ1RMX1ZHRU1fRkVOQ0VfU0lHTkFMCURSTV9JT1co IERSTV9DT01NQU5EX0JBU0UgKyBEUk1fVkdFTV9GRU5DRV9TSUdOQUwsIHN0cnVjdCBkcm1fdmdl bV9mZW5jZV9zaWduYWwpCisKK3N0cnVjdCBkcm1fdmdlbV9mZW5jZV9hdHRhY2ggeworCV9fdTMy IGhhbmRsZTsKKwlfX3UzMiBmbGFnczsKKyNkZWZpbmUgVkdFTV9GRU5DRV9XUklURQkweDEKKwlf X3UzMiBvdXRfZmVuY2U7CisJX191MzIgcGFkOworfTsKKworc3RydWN0IGRybV92Z2VtX2ZlbmNl X3NpZ25hbCB7CisJX191MzIgZmVuY2U7CisJX191MzIgZmxhZ3M7Cit9OworCisjaWYgZGVmaW5l ZChfX2NwbHVzcGx1cykKK30KKyNlbmRpZgorCisjZW5kaWYgLyogX1ZHRU1fRFJNX0hfICovCmRp ZmYgLS1naXQgYS9pbmNsdWRlL2RybS11YXBpL3ZpYV9kcm0uaCBiL2luY2x1ZGUvZHJtLXVhcGkv dmlhX2RybS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNGY2OGU5 YTMyM2JmCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9kcm0tdWFwaS92aWFfZHJtLmgKQEAg LTAsMCArMSwyODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMTk5OC0yMDAzIFZJQSBUZWNobm9sb2dp ZXMsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAyMDAxLTIwMDMgUzMg R3JhcGhpY3MsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBQZXJtaXNzaW9uIGlz IGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcg YQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24g ZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhv dXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdo dHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWIg bGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBw ZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRv IHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJv dmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5n IHRoZQorICogbmV4dCBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMg b3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMKKyAqIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUg U09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lO RCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBU SEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwKKyAq IFZJQSwgUzMgR1JBUEhJQ1MsIEFORC9PUiBJVFMgU1VQUExJRVJTIEJFIExJQUJMRSBGT1IgQU5Z IENMQUlNLCBEQU1BR0VTIE9SCisgKiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNU SU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKKyAqIEFSSVNJTkcgRlJPTSwgT1VU IE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhF UgorICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICovCisjaWZuZGVmIF9WSUFfRFJNX0hf CisjZGVmaW5lIF9WSUFfRFJNX0hfCisKKyNpbmNsdWRlICJkcm0uaCIKKworI2lmIGRlZmluZWQo X19jcGx1c3BsdXMpCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKiBXQVJOSU5HOiBUaGVzZSBk ZWZpbmVzIG11c3QgYmUgdGhlIHNhbWUgYXMgd2hhdCB0aGUgWHNlcnZlciB1c2VzLgorICogaWYg eW91IGNoYW5nZSB0aGVtLCB5b3UgbXVzdCBjaGFuZ2UgdGhlIGRlZmluZXMgaW4gdGhlIFhzZXJ2 ZXIuCisgKi8KKworI2lmbmRlZiBfVklBX0RFRklORVNfCisjZGVmaW5lIF9WSUFfREVGSU5FU18K KworCisjZGVmaW5lIFZJQV9OUl9TQVJFQV9DTElQUkVDVFMJCTgKKyNkZWZpbmUgVklBX05SX1hW TUNfUE9SVFMgICAgICAgICAgICAgICAxMAorI2RlZmluZSBWSUFfTlJfWFZNQ19MT0NLUyAgICAg ICAgICAgICAgIDUKKyNkZWZpbmUgVklBX01BWF9DQUNIRUxJTkVfU0laRSAgICAgICAgICA2NAor I2RlZmluZSBYVk1DTE9DS1BUUihzYVByaXYsbG9ja05vKQkJCQkJXAorCSgoX192b2xhdGlsZV9f IHN0cnVjdCBkcm1faHdfbG9jayAqKSgoKCgodW5zaWduZWQgbG9uZykgKHNhUHJpdiktPlh2TUNM b2NrQXJlYSkgKyBcCisJCQkJICAgICAgKFZJQV9NQVhfQ0FDSEVMSU5FX1NJWkUgLSAxKSkgJglc CisJCQkJICAgICB+KFZJQV9NQVhfQ0FDSEVMSU5FX1NJWkUgLSAxKSkgKwlcCisJCQkJICAgIFZJ QV9NQVhfQ0FDSEVMSU5FX1NJWkUqKGxvY2tObykpKQorCisvKiBFYWNoIHJlZ2lvbiBpcyBhIG1p bmltdW0gb2YgNjRrLCBhbmQgdGhlcmUgYXJlIGF0IG1vc3QgNjQgb2YgdGhlbS4KKyAqLworI2Rl ZmluZSBWSUFfTlJfVEVYX1JFR0lPTlMgNjQKKyNkZWZpbmUgVklBX0xPR19NSU5fVEVYX1JFR0lP Tl9TSVpFIDE2CisjZW5kaWYKKworI2RlZmluZSBWSUFfVVBMT0FEX1RFWDBJTUFHRSAgMHgxCS8q IGhhbmRsZWQgY2xpZW50c2lkZSAqLworI2RlZmluZSBWSUFfVVBMT0FEX1RFWDFJTUFHRSAgMHgy CS8qIGhhbmRsZWQgY2xpZW50c2lkZSAqLworI2RlZmluZSBWSUFfVVBMT0FEX0NUWCAgICAgICAg MHg0CisjZGVmaW5lIFZJQV9VUExPQURfQlVGRkVSUyAgICAweDgKKyNkZWZpbmUgVklBX1VQTE9B RF9URVgwICAgICAgIDB4MTAKKyNkZWZpbmUgVklBX1VQTE9BRF9URVgxICAgICAgIDB4MjAKKyNk ZWZpbmUgVklBX1VQTE9BRF9DTElQUkVDVFMgIDB4NDAKKyNkZWZpbmUgVklBX1VQTE9BRF9BTEwg ICAgICAgIDB4ZmYKKworLyogVklBIHNwZWNpZmljIGlvY3RscyAqLworI2RlZmluZSBEUk1fVklB X0FMTE9DTUVNCTB4MDAKKyNkZWZpbmUgRFJNX1ZJQV9GUkVFTUVNCSAgICAgICAgMHgwMQorI2Rl ZmluZSBEUk1fVklBX0FHUF9JTklUCTB4MDIKKyNkZWZpbmUgRFJNX1ZJQV9GQl9JTklUCSAgICAg ICAgMHgwMworI2RlZmluZSBEUk1fVklBX01BUF9JTklUCTB4MDQKKyNkZWZpbmUgRFJNX1ZJQV9E RUNfRlVURVggICAgICAgMHgwNQorI2RlZmluZSBOT1RfVVNFRAorI2RlZmluZSBEUk1fVklBX0RN QV9JTklUCTB4MDcKKyNkZWZpbmUgRFJNX1ZJQV9DTURCVUZGRVIJMHgwOAorI2RlZmluZSBEUk1f VklBX0ZMVVNICSAgICAgICAgMHgwOQorI2RlZmluZSBEUk1fVklBX1BDSUNNRAkgICAgICAgIDB4 MGEKKyNkZWZpbmUgRFJNX1ZJQV9DTURCVUZfU0laRQkweDBiCisjZGVmaW5lIE5PVF9VU0VECisj ZGVmaW5lIERSTV9WSUFfV0FJVF9JUlEgICAgICAgIDB4MGQKKyNkZWZpbmUgRFJNX1ZJQV9ETUFf QkxJVCAgICAgICAgMHgwZQorI2RlZmluZSBEUk1fVklBX0JMSVRfU1lOQyAgICAgICAweDBmCisK KyNkZWZpbmUgRFJNX0lPQ1RMX1ZJQV9BTExPQ01FTQkgIERSTV9JT1dSKERSTV9DT01NQU5EX0JB U0UgKyBEUk1fVklBX0FMTE9DTUVNLCBkcm1fdmlhX21lbV90KQorI2RlZmluZSBEUk1fSU9DVExf VklBX0ZSRUVNRU0JICBEUk1fSU9XKCBEUk1fQ09NTUFORF9CQVNFICsgRFJNX1ZJQV9GUkVFTUVN LCBkcm1fdmlhX21lbV90KQorI2RlZmluZSBEUk1fSU9DVExfVklBX0FHUF9JTklUCSAgRFJNX0lP V1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9WSUFfQUdQX0lOSVQsIGRybV92aWFfYWdwX3QpCisj ZGVmaW5lIERSTV9JT0NUTF9WSUFfRkJfSU5JVAkgIERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0Ug KyBEUk1fVklBX0ZCX0lOSVQsIGRybV92aWFfZmJfdCkKKyNkZWZpbmUgRFJNX0lPQ1RMX1ZJQV9N QVBfSU5JVAkgIERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fVklBX01BUF9JTklULCBk cm1fdmlhX2luaXRfdCkKKyNkZWZpbmUgRFJNX0lPQ1RMX1ZJQV9ERUNfRlVURVggICBEUk1fSU9X KCBEUk1fQ09NTUFORF9CQVNFICsgRFJNX1ZJQV9ERUNfRlVURVgsIGRybV92aWFfZnV0ZXhfdCkK KyNkZWZpbmUgRFJNX0lPQ1RMX1ZJQV9ETUFfSU5JVAkgIERSTV9JT1dSKERSTV9DT01NQU5EX0JB U0UgKyBEUk1fVklBX0RNQV9JTklULCBkcm1fdmlhX2RtYV9pbml0X3QpCisjZGVmaW5lIERSTV9J T0NUTF9WSUFfQ01EQlVGRkVSCSAgRFJNX0lPVyggRFJNX0NPTU1BTkRfQkFTRSArIERSTV9WSUFf Q01EQlVGRkVSLCBkcm1fdmlhX2NtZGJ1ZmZlcl90KQorI2RlZmluZSBEUk1fSU9DVExfVklBX0ZM VVNICSAgRFJNX0lPKCAgRFJNX0NPTU1BTkRfQkFTRSArIERSTV9WSUFfRkxVU0gpCisjZGVmaW5l IERSTV9JT0NUTF9WSUFfUENJQ01ECSAgRFJNX0lPVyggRFJNX0NPTU1BTkRfQkFTRSArIERSTV9W SUFfUENJQ01ELCBkcm1fdmlhX2NtZGJ1ZmZlcl90KQorI2RlZmluZSBEUk1fSU9DVExfVklBX0NN REJVRl9TSVpFIERSTV9JT1dSKCBEUk1fQ09NTUFORF9CQVNFICsgRFJNX1ZJQV9DTURCVUZfU0la RSwgXAorCQkJCQkgICAgZHJtX3ZpYV9jbWRidWZfc2l6ZV90KQorI2RlZmluZSBEUk1fSU9DVExf VklBX1dBSVRfSVJRICAgIERSTV9JT1dSKCBEUk1fQ09NTUFORF9CQVNFICsgRFJNX1ZJQV9XQUlU X0lSUSwgZHJtX3ZpYV9pcnF3YWl0X3QpCisjZGVmaW5lIERSTV9JT0NUTF9WSUFfRE1BX0JMSVQg ICAgRFJNX0lPVyhEUk1fQ09NTUFORF9CQVNFICsgRFJNX1ZJQV9ETUFfQkxJVCwgZHJtX3ZpYV9k bWFibGl0X3QpCisjZGVmaW5lIERSTV9JT0NUTF9WSUFfQkxJVF9TWU5DICAgRFJNX0lPVyhEUk1f Q09NTUFORF9CQVNFICsgRFJNX1ZJQV9CTElUX1NZTkMsIGRybV92aWFfYmxpdHN5bmNfdCkKKwor LyogSW5kaWNlcyBpbnRvIGJ1Zi5TZXR1cCB3aGVyZSB2YXJpb3VzIGJpdHMgb2Ygc3RhdGUgYXJl IG1pcnJvcmVkIHBlcgorICogY29udGV4dCBhbmQgcGVyIGJ1ZmZlci4gIFRoZXNlIGNhbiBiZSBm aXJlZCBhdCB0aGUgY2FyZCBhcyBhIHVuaXQsCisgKiBvciBpbiBhIHBpZWNld2lzZSBmYXNoaW9u IGFzIHJlcXVpcmVkLgorICovCisKKyNkZWZpbmUgVklBX1RFWF9TRVRVUF9TSVpFIDgKKworLyog RmxhZ3MgZm9yIGNsZWFyIGlvY3RsCisgKi8KKyNkZWZpbmUgVklBX0ZST05UICAgMHgxCisjZGVm aW5lIFZJQV9CQUNLICAgIDB4MgorI2RlZmluZSBWSUFfREVQVEggICAweDQKKyNkZWZpbmUgVklB X1NURU5DSUwgMHg4CisjZGVmaW5lIFZJQV9NRU1fVklERU8gICAwCS8qIG1hdGNoZXMgZHJtIGNv bnN0YW50ICovCisjZGVmaW5lIFZJQV9NRU1fQUdQICAgICAxCS8qIG1hdGNoZXMgZHJtIGNvbnN0 YW50ICovCisjZGVmaW5lIFZJQV9NRU1fU1lTVEVNICAyCisjZGVmaW5lIFZJQV9NRU1fTUlYRUQg ICAzCisjZGVmaW5lIFZJQV9NRU1fVU5LTk9XTiA0CisKK3R5cGVkZWYgc3RydWN0IHsKKwlfX3Uz MiBvZmZzZXQ7CisJX191MzIgc2l6ZTsKK30gZHJtX3ZpYV9hZ3BfdDsKKwordHlwZWRlZiBzdHJ1 Y3QgeworCV9fdTMyIG9mZnNldDsKKwlfX3UzMiBzaXplOworfSBkcm1fdmlhX2ZiX3Q7CisKK3R5 cGVkZWYgc3RydWN0IHsKKwlfX3UzMiBjb250ZXh0OworCV9fdTMyIHR5cGU7CisJX191MzIgc2l6 ZTsKKwl1bnNpZ25lZCBsb25nIGluZGV4OworCXVuc2lnbmVkIGxvbmcgb2Zmc2V0OworfSBkcm1f dmlhX21lbV90OworCit0eXBlZGVmIHN0cnVjdCBfZHJtX3ZpYV9pbml0IHsKKwllbnVtIHsKKwkJ VklBX0lOSVRfTUFQID0gMHgwMSwKKwkJVklBX0NMRUFOVVBfTUFQID0gMHgwMgorCX0gZnVuYzsK KworCXVuc2lnbmVkIGxvbmcgc2FyZWFfcHJpdl9vZmZzZXQ7CisJdW5zaWduZWQgbG9uZyBmYl9v ZmZzZXQ7CisJdW5zaWduZWQgbG9uZyBtbWlvX29mZnNldDsKKwl1bnNpZ25lZCBsb25nIGFncEFk ZHI7Cit9IGRybV92aWFfaW5pdF90OworCit0eXBlZGVmIHN0cnVjdCBfZHJtX3ZpYV9mdXRleCB7 CisJZW51bSB7CisJCVZJQV9GVVRFWF9XQUlUID0gMHgwMCwKKwkJVklBX0ZVVEVYX1dBS0UgPSAw WDAxCisJfSBmdW5jOworCV9fdTMyIG1zOworCV9fdTMyIGxvY2s7CisJX191MzIgdmFsOworfSBk cm1fdmlhX2Z1dGV4X3Q7CisKK3R5cGVkZWYgc3RydWN0IF9kcm1fdmlhX2RtYV9pbml0IHsKKwll bnVtIHsKKwkJVklBX0lOSVRfRE1BID0gMHgwMSwKKwkJVklBX0NMRUFOVVBfRE1BID0gMHgwMiwK KwkJVklBX0RNQV9JTklUSUFMSVpFRCA9IDB4MDMKKwl9IGZ1bmM7CisKKwl1bnNpZ25lZCBsb25n IG9mZnNldDsKKwl1bnNpZ25lZCBsb25nIHNpemU7CisJdW5zaWduZWQgbG9uZyByZWdfcGF1c2Vf YWRkcjsKK30gZHJtX3ZpYV9kbWFfaW5pdF90OworCit0eXBlZGVmIHN0cnVjdCBfZHJtX3ZpYV9j bWRidWZmZXIgeworCWNoYXIgKmJ1ZjsKKwl1bnNpZ25lZCBsb25nIHNpemU7Cit9IGRybV92aWFf Y21kYnVmZmVyX3Q7CisKKy8qIFdhcm5pbmc6IElmIHlvdSBjaGFuZ2UgdGhlIFNBUkVBIHN0cnVj dHVyZSB5b3UgbXVzdCBjaGFuZ2UgdGhlIFhzZXJ2ZXIKKyAqIHN0cnVjdHVyZSBhcyB3ZWxsICov CisKK3R5cGVkZWYgc3RydWN0IF9kcm1fdmlhX3RleF9yZWdpb24geworCXVuc2lnbmVkIGNoYXIg bmV4dCwgcHJldjsJLyogaW5kaWNlcyB0byBmb3JtIGEgY2lyY3VsYXIgTFJVICAqLworCXVuc2ln bmVkIGNoYXIgaW5Vc2U7CS8qIG93bmVkIGJ5IGEgY2xpZW50LCBvciBmcmVlPyAqLworCWludCBh Z2U7CQkvKiB0cmFja2VkIGJ5IGNsaWVudHMgdG8gdXBkYXRlIGxvY2FsIExSVSdzICovCit9IGRy bV92aWFfdGV4X3JlZ2lvbl90OworCit0eXBlZGVmIHN0cnVjdCBfZHJtX3ZpYV9zYXJlYSB7CisJ dW5zaWduZWQgaW50IGRpcnR5OworCXVuc2lnbmVkIGludCBuYm94OworCXN0cnVjdCBkcm1fY2xp cF9yZWN0IGJveGVzW1ZJQV9OUl9TQVJFQV9DTElQUkVDVFNdOworCWRybV92aWFfdGV4X3JlZ2lv bl90IHRleExpc3RbVklBX05SX1RFWF9SRUdJT05TICsgMV07CisJaW50IHRleEFnZTsJCS8qIGxh c3QgdGltZSB0ZXh0dXJlIHdhcyB1cGxvYWRlZCAqLworCWludCBjdHhPd25lcjsJCS8qIGxhc3Qg Y29udGV4dCB0byB1cGxvYWQgc3RhdGUgKi8KKwlpbnQgdmVydGV4UHJpbTsKKworCS8qCisJICog QmVsb3cgaXMgZm9yIFh2TUMuCisJICogV2Ugd2FudCB0aGUgbG9jayBpbnRlZ2VycyBhbG9uZSBv biwgYW5kIGFsaWduZWQgdG8sIGEgY2FjaGUgbGluZS4KKwkgKiBUaGVyZWZvcmUgdGhpcyBzb21l d2hhdCBzdHJhbmdlIGNvbnN0cnVjdC4KKwkgKi8KKworCWNoYXIgWHZNQ0xvY2tBcmVhW1ZJQV9N QVhfQ0FDSEVMSU5FX1NJWkUgKiAoVklBX05SX1hWTUNfTE9DS1MgKyAxKV07CisKKwl1bnNpZ25l ZCBpbnQgWHZNQ0Rpc3BsYXlpbmdbVklBX05SX1hWTUNfUE9SVFNdOworCXVuc2lnbmVkIGludCBY dk1DU3ViUGljT25bVklBX05SX1hWTUNfUE9SVFNdOworCXVuc2lnbmVkIGludCBYdk1DQ3R4Tm9H cmFiYmVkOwkvKiBMYXN0IGNvbnRleHQgdG8gaG9sZCBkZWNvZGVyICovCisKKwkvKiBVc2VkIGJ5 IHRoZSAzZCBkcml2ZXIgb25seSBhdCB0aGlzIHBvaW50LCBmb3IgcGFnZWZsaXBwaW5nOgorCSAq LworCXVuc2lnbmVkIGludCBwZkN1cnJlbnRPZmZzZXQ7Cit9IGRybV92aWFfc2FyZWFfdDsKKwor dHlwZWRlZiBzdHJ1Y3QgX2RybV92aWFfY21kYnVmX3NpemUgeworCWVudW0geworCQlWSUFfQ01E QlVGX1NQQUNFID0gMHgwMSwKKwkJVklBX0NNREJVRl9MQUcgPSAweDAyCisJfSBmdW5jOworCWlu dCB3YWl0OworCV9fdTMyIHNpemU7Cit9IGRybV92aWFfY21kYnVmX3NpemVfdDsKKwordHlwZWRl ZiBlbnVtIHsKKwlWSUFfSVJRX0FCU09MVVRFID0gMHgwLAorCVZJQV9JUlFfUkVMQVRJVkUgPSAw eDEsCisJVklBX0lSUV9TSUdOQUwgPSAweDEwMDAwMDAwLAorCVZJQV9JUlFfRk9SQ0VfU0VRVUVO Q0UgPSAweDIwMDAwMDAwCit9IHZpYV9pcnFfc2VxX3R5cGVfdDsKKworI2RlZmluZSBWSUFfSVJR X0ZMQUdTX01BU0sgMHhGMDAwMDAwMAorCitlbnVtIGRybV92aWFfaXJxcyB7CisJZHJtX3ZpYV9p cnFfaHF2MCA9IDAsCisJZHJtX3ZpYV9pcnFfaHF2MSwKKwlkcm1fdmlhX2lycV9kbWEwX2RkLAor CWRybV92aWFfaXJxX2RtYTBfdGQsCisJZHJtX3ZpYV9pcnFfZG1hMV9kZCwKKwlkcm1fdmlhX2ly cV9kbWExX3RkLAorCWRybV92aWFfaXJxX251bQorfTsKKworc3RydWN0IGRybV92aWFfd2FpdF9p cnFfcmVxdWVzdCB7CisJdW5zaWduZWQgaXJxOworCXZpYV9pcnFfc2VxX3R5cGVfdCB0eXBlOwor CV9fdTMyIHNlcXVlbmNlOworCV9fdTMyIHNpZ25hbDsKK307CisKK3R5cGVkZWYgdW5pb24gZHJt X3ZpYV9pcnF3YWl0IHsKKwlzdHJ1Y3QgZHJtX3ZpYV93YWl0X2lycV9yZXF1ZXN0IHJlcXVlc3Q7 CisJc3RydWN0IGRybV93YWl0X3ZibGFua19yZXBseSByZXBseTsKK30gZHJtX3ZpYV9pcnF3YWl0 X3Q7CisKK3R5cGVkZWYgc3RydWN0IGRybV92aWFfYmxpdHN5bmMgeworCV9fdTMyIHN5bmNfaGFu ZGxlOworCXVuc2lnbmVkIGVuZ2luZTsKK30gZHJtX3ZpYV9ibGl0c3luY190OworCisvKiAtICog QmVsb3csImZsYWdzIiBpcyBjdXJyZW50bHkgdW51c2VkIGJ1dCB3aWxsIGJlIHVzZWQgZm9yIHBv c3NpYmxlIGZ1dHVyZQorICogZXh0ZW5zaW9ucyBsaWtlIGtlcm5lbCBzcGFjZSBib3VuY2UgYnVm ZmVycyBmb3IgYmFkIGFsaWdubWVudHMgYW5kCisgKiBibGl0IGVuZ2luZSBidXN5LXdhaXQgcG9s bGluZyBmb3IgYmV0dGVyIGxhdGVuY3kgaW4gdGhlIGFic2VuY2Ugb2YKKyAqIGludGVycnVwdHMu CisgKi8KKwordHlwZWRlZiBzdHJ1Y3QgZHJtX3ZpYV9kbWFibGl0IHsKKwlfX3UzMiBudW1fbGlu ZXM7CisJX191MzIgbGluZV9sZW5ndGg7CisKKwlfX3UzMiBmYl9hZGRyOworCV9fdTMyIGZiX3N0 cmlkZTsKKworCXVuc2lnbmVkIGNoYXIgKm1lbV9hZGRyOworCV9fdTMyIG1lbV9zdHJpZGU7CisK KwlfX3UzMiBmbGFnczsKKwlpbnQgdG9fZmI7CisKKwlkcm1fdmlhX2JsaXRzeW5jX3Qgc3luYzsK K30gZHJtX3ZpYV9kbWFibGl0X3Q7CisKKyNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQorfQorI2Vu ZGlmCisKKyNlbmRpZgkJCQkvKiBfVklBX0RSTV9IXyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9k cm0tdWFwaS92aXJ0Z3B1X2RybS5oIGIvaW5jbHVkZS9kcm0tdWFwaS92aXJ0Z3B1X2RybS5oCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOTFhMzFmZmVkODI4Ci0tLSAv ZGV2L251bGwKKysrIGIvaW5jbHVkZS9kcm0tdWFwaS92aXJ0Z3B1X2RybS5oCkBAIC0wLDAgKzEs MTc0IEBACisvKgorICogQ29weXJpZ2h0IDIwMTMgUmVkIEhhdAorICogQWxsIFJpZ2h0cyBSZXNl cnZlZC4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJn ZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFu ZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRv IGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRo b3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdl LCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVz IG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBT b2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBj b25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBl cm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwg YmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUK KyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBX SVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNM VURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU WSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1F TlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgQU5EL09SIElUUyBTVVBQTElF UlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKKyAqIE9USEVSIExJQUJJTElU WSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAor ICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FS RSBPUiBUSEUgVVNFIE9SCisgKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKi8K KyNpZm5kZWYgVklSVEdQVV9EUk1fSAorI2RlZmluZSBWSVJUR1BVX0RSTV9ICisKKyNpbmNsdWRl ICJkcm0uaCIKKworI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpCitleHRlcm4gIkMiIHsKKyNlbmRp ZgorCisvKiBQbGVhc2Ugbm90ZSB0aGF0IG1vZGlmaWNhdGlvbnMgdG8gYWxsIHN0cnVjdHMgZGVm aW5lZCBoZXJlIGFyZQorICogc3ViamVjdCB0byBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSBjb25z dHJhaW50cy4KKyAqCisgKiBEbyBub3QgdXNlIHBvaW50ZXJzLCB1c2UgX191NjQgaW5zdGVhZCBm b3IgMzIgYml0IC8gNjQgYml0IHVzZXIva2VybmVsCisgKiBjb21wYXRpYmlsaXR5IEtlZXAgZmll bGRzIGFsaWduZWQgdG8gdGhlaXIgc2l6ZQorICovCisKKyNkZWZpbmUgRFJNX1ZJUlRHUFVfTUFQ ICAgICAgICAgMHgwMQorI2RlZmluZSBEUk1fVklSVEdQVV9FWEVDQlVGRkVSICAweDAyCisjZGVm aW5lIERSTV9WSVJUR1BVX0dFVFBBUkFNICAgIDB4MDMKKyNkZWZpbmUgRFJNX1ZJUlRHUFVfUkVT T1VSQ0VfQ1JFQVRFIDB4MDQKKyNkZWZpbmUgRFJNX1ZJUlRHUFVfUkVTT1VSQ0VfSU5GTyAgICAg MHgwNQorI2RlZmluZSBEUk1fVklSVEdQVV9UUkFOU0ZFUl9GUk9NX0hPU1QgMHgwNgorI2RlZmlu ZSBEUk1fVklSVEdQVV9UUkFOU0ZFUl9UT19IT1NUIDB4MDcKKyNkZWZpbmUgRFJNX1ZJUlRHUFVf V0FJVCAgICAgMHgwOAorI2RlZmluZSBEUk1fVklSVEdQVV9HRVRfQ0FQUyAgMHgwOQorCitzdHJ1 Y3QgZHJtX3ZpcnRncHVfbWFwIHsKKwlfX3U2NCBvZmZzZXQ7IC8qIHVzZSBmb3IgbW1hcCBzeXN0 ZW0gY2FsbCAqLworCV9fdTMyIGhhbmRsZTsKKwlfX3UzMiBwYWQ7Cit9OworCitzdHJ1Y3QgZHJt X3ZpcnRncHVfZXhlY2J1ZmZlciB7CisJX191MzIJCWZsYWdzOwkJLyogZm9yIGZ1dHVyZSB1c2Ug Ki8KKwlfX3UzMiBzaXplOworCV9fdTY0IGNvbW1hbmQ7IC8qIHZvaWQqICovCisJX191NjQgYm9f aGFuZGxlczsKKwlfX3UzMiBudW1fYm9faGFuZGxlczsKKwlfX3UzMiBwYWQ7Cit9OworCisjZGVm aW5lIFZJUlRHUFVfUEFSQU1fM0RfRkVBVFVSRVMgMSAvKiBkbyB3ZSBoYXZlIDNEIGZlYXR1cmVz IGluIHRoZSBodyAqLworCitzdHJ1Y3QgZHJtX3ZpcnRncHVfZ2V0cGFyYW0geworCV9fdTY0IHBh cmFtOworCV9fdTY0IHZhbHVlOworfTsKKworLyogTk9fQk8gZmxhZ3M/IE5PIHJlc291cmNlIGZs YWc/ICovCisvKiByZXNvdXJjZSBmbGFnIGZvciB5XzBfdG9wICovCitzdHJ1Y3QgZHJtX3ZpcnRn cHVfcmVzb3VyY2VfY3JlYXRlIHsKKwlfX3UzMiB0YXJnZXQ7CisJX191MzIgZm9ybWF0OworCV9f dTMyIGJpbmQ7CisJX191MzIgd2lkdGg7CisJX191MzIgaGVpZ2h0OworCV9fdTMyIGRlcHRoOwor CV9fdTMyIGFycmF5X3NpemU7CisJX191MzIgbGFzdF9sZXZlbDsKKwlfX3UzMiBucl9zYW1wbGVz OworCV9fdTMyIGZsYWdzOworCV9fdTMyIGJvX2hhbmRsZTsgLyogaWYgdGhpcyBpcyBzZXQgLSBy ZWNyZWF0ZSBhIG5ldyByZXNvdXJjZSBhdHRhY2hlZCB0byB0aGlzIGJvID8gKi8KKwlfX3UzMiBy ZXNfaGFuZGxlOyAgLyogcmV0dXJuZWQgYnkga2VybmVsICovCisJX191MzIgc2l6ZTsgICAgICAg IC8qIHZhbGlkYXRlIHRyYW5zZmVyIGluIHRoZSBob3N0ICovCisJX191MzIgc3RyaWRlOyAgICAg IC8qIHZhbGlkYXRlIHRyYW5zZmVyIGluIHRoZSBob3N0ICovCit9OworCitzdHJ1Y3QgZHJtX3Zp cnRncHVfcmVzb3VyY2VfaW5mbyB7CisJX191MzIgYm9faGFuZGxlOworCV9fdTMyIHJlc19oYW5k bGU7CisJX191MzIgc2l6ZTsKKwlfX3UzMiBzdHJpZGU7Cit9OworCitzdHJ1Y3QgZHJtX3ZpcnRn cHVfM2RfYm94IHsKKwlfX3UzMiB4OworCV9fdTMyIHk7CisJX191MzIgejsKKwlfX3UzMiB3Owor CV9fdTMyIGg7CisJX191MzIgZDsKK307CisKK3N0cnVjdCBkcm1fdmlydGdwdV8zZF90cmFuc2Zl cl90b19ob3N0IHsKKwlfX3UzMiBib19oYW5kbGU7CisJc3RydWN0IGRybV92aXJ0Z3B1XzNkX2Jv eCBib3g7CisJX191MzIgbGV2ZWw7CisJX191MzIgb2Zmc2V0OworfTsKKworc3RydWN0IGRybV92 aXJ0Z3B1XzNkX3RyYW5zZmVyX2Zyb21faG9zdCB7CisJX191MzIgYm9faGFuZGxlOworCXN0cnVj dCBkcm1fdmlydGdwdV8zZF9ib3ggYm94OworCV9fdTMyIGxldmVsOworCV9fdTMyIG9mZnNldDsK K307CisKKyNkZWZpbmUgVklSVEdQVV9XQUlUX05PV0FJVCAxIC8qIGxpa2UgaXQgKi8KK3N0cnVj dCBkcm1fdmlydGdwdV8zZF93YWl0IHsKKwlfX3UzMiBoYW5kbGU7IC8qIDAgaXMgYW4gaW52YWxp ZCBoYW5kbGUgKi8KKwlfX3UzMiBmbGFnczsKK307CisKK3N0cnVjdCBkcm1fdmlydGdwdV9nZXRf Y2FwcyB7CisJX191MzIgY2FwX3NldF9pZDsKKwlfX3UzMiBjYXBfc2V0X3ZlcjsKKwlfX3U2NCBh ZGRyOworCV9fdTMyIHNpemU7CisJX191MzIgcGFkOworfTsKKworI2RlZmluZSBEUk1fSU9DVExf VklSVEdQVV9NQVAgXAorCURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fVklSVEdQVV9N QVAsIHN0cnVjdCBkcm1fdmlydGdwdV9tYXApCisKKyNkZWZpbmUgRFJNX0lPQ1RMX1ZJUlRHUFVf RVhFQ0JVRkZFUiBcCisJRFJNX0lPVyhEUk1fQ09NTUFORF9CQVNFICsgRFJNX1ZJUlRHUFVfRVhF Q0JVRkZFUixcCisJCXN0cnVjdCBkcm1fdmlydGdwdV9leGVjYnVmZmVyKQorCisjZGVmaW5lIERS TV9JT0NUTF9WSVJUR1BVX0dFVFBBUkFNIFwKKwlEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsg RFJNX1ZJUlRHUFVfR0VUUEFSQU0sXAorCQlzdHJ1Y3QgZHJtX3ZpcnRncHVfZ2V0cGFyYW0pCisK KyNkZWZpbmUgRFJNX0lPQ1RMX1ZJUlRHUFVfUkVTT1VSQ0VfQ1JFQVRFCQkJXAorCURSTV9JT1dS KERSTV9DT01NQU5EX0JBU0UgKyBEUk1fVklSVEdQVV9SRVNPVVJDRV9DUkVBVEUsCVwKKwkJc3Ry dWN0IGRybV92aXJ0Z3B1X3Jlc291cmNlX2NyZWF0ZSkKKworI2RlZmluZSBEUk1fSU9DVExfVklS VEdQVV9SRVNPVVJDRV9JTkZPIFwKKwlEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX1ZJ UlRHUFVfUkVTT1VSQ0VfSU5GTywgXAorCQkgc3RydWN0IGRybV92aXJ0Z3B1X3Jlc291cmNlX2lu Zm8pCisKKyNkZWZpbmUgRFJNX0lPQ1RMX1ZJUlRHUFVfVFJBTlNGRVJfRlJPTV9IT1NUIFwKKwlE Uk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX1ZJUlRHUFVfVFJBTlNGRVJfRlJPTV9IT1NU LAlcCisJCXN0cnVjdCBkcm1fdmlydGdwdV8zZF90cmFuc2Zlcl9mcm9tX2hvc3QpCisKKyNkZWZp bmUgRFJNX0lPQ1RMX1ZJUlRHUFVfVFJBTlNGRVJfVE9fSE9TVCBcCisJRFJNX0lPV1IoRFJNX0NP TU1BTkRfQkFTRSArIERSTV9WSVJUR1BVX1RSQU5TRkVSX1RPX0hPU1QsCVwKKwkJc3RydWN0IGRy bV92aXJ0Z3B1XzNkX3RyYW5zZmVyX3RvX2hvc3QpCisKKyNkZWZpbmUgRFJNX0lPQ1RMX1ZJUlRH UFVfV0FJVAkJCQlcCisJRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9WSVJUR1BVX1dB SVQsCVwKKwkJc3RydWN0IGRybV92aXJ0Z3B1XzNkX3dhaXQpCisKKyNkZWZpbmUgRFJNX0lPQ1RM X1ZJUlRHUFVfR0VUX0NBUFMgXAorCURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fVklS VEdQVV9HRVRfQ0FQUywgXAorCXN0cnVjdCBkcm1fdmlydGdwdV9nZXRfY2FwcykKKworI2lmIGRl ZmluZWQoX19jcGx1c3BsdXMpCit9CisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNs dWRlL2RybS11YXBpL3Ztd2dmeF9kcm0uaCBiL2luY2x1ZGUvZHJtLXVhcGkvdm13Z2Z4X2RybS5o Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMGJjNzg0ZjVlMGRiCi0t LSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9kcm0tdWFwaS92bXdnZnhfZHJtLmgKQEAgLTAsMCAr MSwxMTI4IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBDb3B5cmlnaHQgwqkgMjAwOS0y MDE1IFZNd2FyZSwgSW5jLiwgUGFsbyBBbHRvLCBDQS4sIFVTQQorICogQWxsIFJpZ2h0cyBSZXNl cnZlZC4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJn ZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFu ZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQorICogIlNvZnR3YXJlIiksIHRv IGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZworICog d2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdl LCBwdWJsaXNoLAorICogZGlzdHJpYnV0ZSwgc3ViIGxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGll cyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bworICogcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUg U29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCisgKiB0aGUgZm9sbG93 aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRo aXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUKKyAqIG5leHQgcGFyYWdyYXBoKSBz aGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zCisg KiBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJ UyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQs IElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB QklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZS SU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQ09QWVJJR0hUIEhPTERFUlMsIEFV VEhPUlMgQU5EL09SIElUUyBTVVBQTElFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sCisgKiBE QU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJB Q1QsIFRPUlQgT1IKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09O TkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUKKyAqIFVTRSBPUiBPVEhFUiBERUFMSU5H UyBJTiBUSEUgU09GVFdBUkUuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIF9f Vk1XR0ZYX0RSTV9IX18KKyNkZWZpbmUgX19WTVdHRlhfRFJNX0hfXworCisjaW5jbHVkZSAiZHJt LmgiCisKKyNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQorZXh0ZXJuICJDIiB7CisjZW5kaWYKKwor I2RlZmluZSBEUk1fVk1XX01BWF9TVVJGQUNFX0ZBQ0VTIDYKKyNkZWZpbmUgRFJNX1ZNV19NQVhf TUlQX0xFVkVMUyAyNAorCisKKyNkZWZpbmUgRFJNX1ZNV19HRVRfUEFSQU0gICAgICAgICAgICAw CisjZGVmaW5lIERSTV9WTVdfQUxMT0NfRE1BQlVGICAgICAgICAgMQorI2RlZmluZSBEUk1fVk1X X1VOUkVGX0RNQUJVRiAgICAgICAgIDIKKyNkZWZpbmUgRFJNX1ZNV19IQU5ETEVfQ0xPU0UgICAg ICAgICAyCisjZGVmaW5lIERSTV9WTVdfQ1VSU09SX0JZUEFTUyAgICAgICAgMworLyogZ3VhcmRl ZCBieSBEUk1fVk1XX1BBUkFNX05VTV9TVFJFQU1TICE9IDAqLworI2RlZmluZSBEUk1fVk1XX0NP TlRST0xfU1RSRUFNICAgICAgIDQKKyNkZWZpbmUgRFJNX1ZNV19DTEFJTV9TVFJFQU0gICAgICAg ICA1CisjZGVmaW5lIERSTV9WTVdfVU5SRUZfU1RSRUFNICAgICAgICAgNgorLyogZ3VhcmRlZCBi eSBEUk1fVk1XX1BBUkFNXzNEID09IDEgKi8KKyNkZWZpbmUgRFJNX1ZNV19DUkVBVEVfQ09OVEVY VCAgICAgICA3CisjZGVmaW5lIERSTV9WTVdfVU5SRUZfQ09OVEVYVCAgICAgICAgOAorI2RlZmlu ZSBEUk1fVk1XX0NSRUFURV9TVVJGQUNFICAgICAgIDkKKyNkZWZpbmUgRFJNX1ZNV19VTlJFRl9T VVJGQUNFICAgICAgICAxMAorI2RlZmluZSBEUk1fVk1XX1JFRl9TVVJGQUNFICAgICAgICAgIDEx CisjZGVmaW5lIERSTV9WTVdfRVhFQ0JVRiAgICAgICAgICAgICAgMTIKKyNkZWZpbmUgRFJNX1ZN V19HRVRfM0RfQ0FQICAgICAgICAgICAxMworI2RlZmluZSBEUk1fVk1XX0ZFTkNFX1dBSVQgICAg ICAgICAgIDE0CisjZGVmaW5lIERSTV9WTVdfRkVOQ0VfU0lHTkFMRUQgICAgICAgMTUKKyNkZWZp bmUgRFJNX1ZNV19GRU5DRV9VTlJFRiAgICAgICAgICAxNgorI2RlZmluZSBEUk1fVk1XX0ZFTkNF X0VWRU5UICAgICAgICAgIDE3CisjZGVmaW5lIERSTV9WTVdfUFJFU0VOVCAgICAgICAgICAgICAg MTgKKyNkZWZpbmUgRFJNX1ZNV19QUkVTRU5UX1JFQURCQUNLICAgICAxOQorI2RlZmluZSBEUk1f Vk1XX1VQREFURV9MQVlPVVQgICAgICAgIDIwCisjZGVmaW5lIERSTV9WTVdfQ1JFQVRFX1NIQURF UiAgICAgICAgMjEKKyNkZWZpbmUgRFJNX1ZNV19VTlJFRl9TSEFERVIgICAgICAgICAyMgorI2Rl ZmluZSBEUk1fVk1XX0dCX1NVUkZBQ0VfQ1JFQVRFICAgIDIzCisjZGVmaW5lIERSTV9WTVdfR0Jf U1VSRkFDRV9SRUYgICAgICAgMjQKKyNkZWZpbmUgRFJNX1ZNV19TWU5DQ1BVICAgICAgICAgICAg ICAyNQorI2RlZmluZSBEUk1fVk1XX0NSRUFURV9FWFRFTkRFRF9DT05URVhUIDI2CisKKy8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLworLyoqCisgKiBEUk1fVk1XX0dFVF9QQVJBTSAtIGdldCBkZXZpY2UgaW5m b3JtYXRpb24uCisgKgorICogRFJNX1ZNV19QQVJBTV9GSUZPX09GRlNFVDoKKyAqIE9mZnNldCB0 byB1c2UgdG8gbWFwIHRoZSBmaXJzdCBwYWdlIG9mIHRoZSBGSUZPIHJlYWQtb25seS4KKyAqIFRo ZSBmaWZvIGlzIG1hcHBlZCB1c2luZyB0aGUgbW1hcCgpIHN5c3RlbSBjYWxsIG9uIHRoZSBkcm0g ZGV2aWNlLgorICoKKyAqIERSTV9WTVdfUEFSQU1fT1ZFUkxBWV9JT0NUTDoKKyAqIERvZXMgdGhl IGRyaXZlciBzdXBwb3J0IHRoZSBvdmVybGF5IGlvY3RsLgorICovCisKKyNkZWZpbmUgRFJNX1ZN V19QQVJBTV9OVU1fU1RSRUFNUyAgICAgIDAKKyNkZWZpbmUgRFJNX1ZNV19QQVJBTV9OVU1fRlJF RV9TVFJFQU1TIDEKKyNkZWZpbmUgRFJNX1ZNV19QQVJBTV8zRCAgICAgICAgICAgICAgIDIKKyNk ZWZpbmUgRFJNX1ZNV19QQVJBTV9IV19DQVBTICAgICAgICAgIDMKKyNkZWZpbmUgRFJNX1ZNV19Q QVJBTV9GSUZPX0NBUFMgICAgICAgIDQKKyNkZWZpbmUgRFJNX1ZNV19QQVJBTV9NQVhfRkJfU0la RSAgICAgIDUKKyNkZWZpbmUgRFJNX1ZNV19QQVJBTV9GSUZPX0hXX1ZFUlNJT04gIDYKKyNkZWZp bmUgRFJNX1ZNV19QQVJBTV9NQVhfU1VSRl9NRU1PUlkgIDcKKyNkZWZpbmUgRFJNX1ZNV19QQVJB TV8zRF9DQVBTX1NJWkUgICAgIDgKKyNkZWZpbmUgRFJNX1ZNV19QQVJBTV9NQVhfTU9CX01FTU9S WSAgIDkKKyNkZWZpbmUgRFJNX1ZNV19QQVJBTV9NQVhfTU9CX1NJWkUgICAgIDEwCisjZGVmaW5l IERSTV9WTVdfUEFSQU1fU0NSRUVOX1RBUkdFVCAgICAxMQorI2RlZmluZSBEUk1fVk1XX1BBUkFN X0RYICAgICAgICAgICAgICAgMTIKKworLyoqCisgKiBlbnVtIGRybV92bXdfaGFuZGxlX3R5cGUg LSBoYW5kbGUgdHlwZSBmb3IgcmVmIGlvY3RscworICoKKyAqLworZW51bSBkcm1fdm13X2hhbmRs ZV90eXBlIHsKKwlEUk1fVk1XX0hBTkRMRV9MRUdBQ1kgPSAwLAorCURSTV9WTVdfSEFORExFX1BS SU1FID0gMQorfTsKKworLyoqCisgKiBzdHJ1Y3QgZHJtX3Ztd19nZXRwYXJhbV9hcmcKKyAqCisg KiBAdmFsdWU6IFJldHVybmVkIHZhbHVlLiAvL091dAorICogQHBhcmFtOiBQYXJhbWV0ZXIgdG8g cXVlcnkuIC8vSW4uCisgKgorICogQXJndW1lbnQgdG8gdGhlIERSTV9WTVdfR0VUX1BBUkFNIElv Y3RsLgorICovCisKK3N0cnVjdCBkcm1fdm13X2dldHBhcmFtX2FyZyB7CisJX191NjQgdmFsdWU7 CisJX191MzIgcGFyYW07CisJX191MzIgcGFkNjQ7Cit9OworCisvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K Ky8qKgorICogRFJNX1ZNV19DUkVBVEVfQ09OVEVYVCAtIENyZWF0ZSBhIGhvc3QgY29udGV4dC4K KyAqCisgKiBBbGxvY2F0ZXMgYSBkZXZpY2UgdW5pcXVlIGNvbnRleHQgaWQsIGFuZCBxdWV1ZXMg YSBjcmVhdGUgY29udGV4dCBjb21tYW5kCisgKiBmb3IgdGhlIGhvc3QuIERvZXMgbm90IHdhaXQg Zm9yIGhvc3QgY29tcGxldGlvbi4KKyAqLworCisvKioKKyAqIHN0cnVjdCBkcm1fdm13X2NvbnRl eHRfYXJnCisgKgorICogQGNpZDogRGV2aWNlIHVuaXF1ZSBjb250ZXh0IElELgorICoKKyAqIE91 dHB1dCBhcmd1bWVudCB0byB0aGUgRFJNX1ZNV19DUkVBVEVfQ09OVEVYVCBJb2N0bC4KKyAqIElu cHV0IGFyZ3VtZW50IHRvIHRoZSBEUk1fVk1XX1VOUkVGX0NPTlRFWFQgSW9jdGwuCisgKi8KKwor c3RydWN0IGRybV92bXdfY29udGV4dF9hcmcgeworCV9fczMyIGNpZDsKKwlfX3UzMiBwYWQ2NDsK K307CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLworLyoqCisgKiBEUk1fVk1XX1VOUkVGX0NPTlRFWFQg LSBDcmVhdGUgYSBob3N0IGNvbnRleHQuCisgKgorICogRnJlZXMgYSBnbG9iYWwgY29udGV4dCBp ZCwgYW5kIHF1ZXVlcyBhIGRlc3Ryb3kgaG9zdCBjb21tYW5kIGZvciB0aGUgaG9zdC4KKyAqIERv ZXMgbm90IHdhaXQgZm9yIGhvc3QgY29tcGxldGlvbi4gVGhlIGNvbnRleHQgSUQgY2FuIGJlIHVz ZWQgZGlyZWN0bHkKKyAqIGluIHRoZSBjb21tYW5kIHN0cmVhbSBhbmQgc2hvd3MgdXAgYXMgdGhl IHNhbWUgY29udGV4dCBJRCBvbiB0aGUgaG9zdC4KKyAqLworCisvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K Ky8qKgorICogRFJNX1ZNV19DUkVBVEVfU1VSRkFDRSAtIENyZWF0ZSBhIGhvc3Qgc3VmYWNlLgor ICoKKyAqIEFsbG9jYXRlcyBhIGRldmljZSB1bmlxdWUgc3VyZmFjZSBpZCwgYW5kIHF1ZXVlcyBh IGNyZWF0ZSBzdXJmYWNlIGNvbW1hbmQKKyAqIGZvciB0aGUgaG9zdC4gRG9lcyBub3Qgd2FpdCBm b3IgaG9zdCBjb21wbGV0aW9uLiBUaGUgc3VyZmFjZSBJRCBjYW4gYmUKKyAqIHVzZWQgZGlyZWN0 bHkgaW4gdGhlIGNvbW1hbmQgc3RyZWFtIGFuZCBzaG93cyB1cCBhcyB0aGUgc2FtZSBzdXJmYWNl CisgKiBJRCBvbiB0aGUgaG9zdC4KKyAqLworCisvKioKKyAqIHN0cnVjdCBkcm1fd212X3N1cmZh Y2VfY3JlYXRlX3JlcQorICoKKyAqIEBmbGFnczogU3VyZmFjZSBmbGFncyBhcyB1bmRlcnN0b29k IGJ5IHRoZSBob3N0LgorICogQGZvcm1hdDogU3VyZmFjZSBmb3JtYXQgYXMgdW5kZXJzdG9vZCBi eSB0aGUgaG9zdC4KKyAqIEBtaXBfbGV2ZWxzOiBOdW1iZXIgb2YgbWlwIGxldmVscyBmb3IgZWFj aCBmYWNlLgorICogQW4gdW51c2VkIGZhY2Ugc2hvdWxkIGhhdmUgMCBlbmNvZGVkLgorICogQHNp emVfYWRkcjogQWRkcmVzcyBvZiBhIHVzZXItc3BhY2UgYXJyYXkgb2Ygc3J1Y3QgZHJtX3Ztd19z aXplCisgKiBjYXN0IHRvIGFuIF9fdTY0IGZvciAzMi02NCBiaXQgY29tcGF0aWJpbGl0eS4KKyAq IFRoZSBzaXplIG9mIHRoZSBhcnJheSBzaG91bGQgZXF1YWwgdGhlIHRvdGFsIG51bWJlciBvZiBt aXBtYXAgbGV2ZWxzLgorICogQHNoYXJlYWJsZTogQm9vbGVhbiB3aGV0aGVyIG90aGVyIGNsaWVu dHMgKGFzIGlkZW50aWZpZWQgYnkgZmlsZSBkZXNjcmlwdG9ycykKKyAqIG1heSByZWZlcmVuY2Ug dGhpcyBzdXJmYWNlLgorICogQHNjYW5vdXQ6IEJvb2xlYW4gd2hldGhlciB0aGUgc3VyZmFjZSBp cyBpbnRlbmRlZCB0byBiZSB1c2VkIGFzIGEKKyAqIHNjYW5vdXQuCisgKgorICogSW5wdXQgZGF0 YSB0byB0aGUgRFJNX1ZNV19DUkVBVEVfU1VSRkFDRSBJb2N0bC4KKyAqIE91dHB1dCBkYXRhIGZy b20gdGhlIERSTV9WTVdfUkVGX1NVUkZBQ0UgSW9jdGwuCisgKi8KKworc3RydWN0IGRybV92bXdf c3VyZmFjZV9jcmVhdGVfcmVxIHsKKwlfX3UzMiBmbGFnczsKKwlfX3UzMiBmb3JtYXQ7CisJX191 MzIgbWlwX2xldmVsc1tEUk1fVk1XX01BWF9TVVJGQUNFX0ZBQ0VTXTsKKwlfX3U2NCBzaXplX2Fk ZHI7CisJX19zMzIgc2hhcmVhYmxlOworCV9fczMyIHNjYW5vdXQ7Cit9OworCisvKioKKyAqIHN0 cnVjdCBkcm1fd212X3N1cmZhY2VfYXJnCisgKgorICogQHNpZDogU3VyZmFjZSBpZCBvZiBjcmVh dGVkIHN1cmZhY2Ugb3Igc3VyZmFjZSB0byBkZXN0cm95IG9yIHJlZmVyZW5jZS4KKyAqIEBoYW5k bGVfdHlwZTogSGFuZGxlIHR5cGUgZm9yIERSTV9WTVdfUkVGX1NVUkZBQ0UgSW9jdGwuCisgKgor ICogT3V0cHV0IGRhdGEgZnJvbSB0aGUgRFJNX1ZNV19DUkVBVEVfU1VSRkFDRSBJb2N0bC4KKyAq IElucHV0IGFyZ3VtZW50IHRvIHRoZSBEUk1fVk1XX1VOUkVGX1NVUkZBQ0UgSW9jdGwuCisgKiBJ bnB1dCBhcmd1bWVudCB0byB0aGUgRFJNX1ZNV19SRUZfU1VSRkFDRSBJb2N0bC4KKyAqLworCitz dHJ1Y3QgZHJtX3Ztd19zdXJmYWNlX2FyZyB7CisJX19zMzIgc2lkOworCWVudW0gZHJtX3Ztd19o YW5kbGVfdHlwZSBoYW5kbGVfdHlwZTsKK307CisKKy8qKgorICogc3RydWN0IGRybV92bXdfc2l6 ZSBpb2N0bC4KKyAqCisgKiBAd2lkdGggLSBtaXAgbGV2ZWwgd2lkdGgKKyAqIEBoZWlnaHQgLSBt aXAgbGV2ZWwgaGVpZ2h0CisgKiBAZGVwdGggLSBtaXAgbGV2ZWwgZGVwdGgKKyAqCisgKiBEZXNj cmlwdGlvbiBvZiBhIG1pcCBsZXZlbC4KKyAqIElucHV0IGRhdGEgdG8gdGhlIERSTV9XTVdfQ1JF QVRFX1NVUkZBQ0UgSW9jdGwuCisgKi8KKworc3RydWN0IGRybV92bXdfc2l6ZSB7CisJX191MzIg d2lkdGg7CisJX191MzIgaGVpZ2h0OworCV9fdTMyIGRlcHRoOworCV9fdTMyIHBhZDY0OworfTsK KworLyoqCisgKiB1bmlvbiBkcm1fdm13X3N1cmZhY2VfY3JlYXRlX2FyZworICoKKyAqIEByZXA6 IE91dHB1dCBkYXRhIGFzIGRlc2NyaWJlZCBhYm92ZS4KKyAqIEByZXE6IElucHV0IGRhdGEgYXMg ZGVzY3JpYmVkIGFib3ZlLgorICoKKyAqIEFyZ3VtZW50IHRvIHRoZSBEUk1fVk1XX0NSRUFURV9T VVJGQUNFIElvY3RsLgorICovCisKK3VuaW9uIGRybV92bXdfc3VyZmFjZV9jcmVhdGVfYXJnIHsK KwlzdHJ1Y3QgZHJtX3Ztd19zdXJmYWNlX2FyZyByZXA7CisJc3RydWN0IGRybV92bXdfc3VyZmFj ZV9jcmVhdGVfcmVxIHJlcTsKK307CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqCisgKiBEUk1f Vk1XX1JFRl9TVVJGQUNFIC0gUmVmZXJlbmNlIGEgaG9zdCBzdXJmYWNlLgorICoKKyAqIFB1dHMg YSByZWZlcmVuY2Ugb24gYSBob3N0IHN1cmZhY2Ugd2l0aCBhIGdpdmUgc2lkLCBhcyBwcmV2aW91 c2x5CisgKiByZXR1cm5lZCBieSB0aGUgRFJNX1ZNV19DUkVBVEVfU1VSRkFDRSBpb2N0bC4KKyAq IEEgcmVmZXJlbmNlIHdpbGwgbWFrZSBzdXJlIHRoZSBzdXJmYWNlIGlzbid0IGRlc3Ryb3llZCB3 aGlsZSB3ZSBob2xkCisgKiBpdCBhbmQgd2lsbCBhbGxvdyB0aGUgY2FsbGluZyBjbGllbnQgdG8g dXNlIHRoZSBzdXJmYWNlIElEIGluIHRoZSBjb21tYW5kCisgKiBzdHJlYW0uCisgKgorICogT24g c3VjY2Vzc2Z1bCByZXR1cm4sIHRoZSBJb2N0bCByZXR1cm5zIHRoZSBzdXJmYWNlIGluZm9ybWF0 aW9uIGdpdmVuCisgKiBpbiB0aGUgRFJNX1ZNV19DUkVBVEVfU1VSRkFDRSBpb2N0bC4KKyAqLwor CisvKioKKyAqIHVuaW9uIGRybV92bXdfc3VyZmFjZV9yZWZlcmVuY2VfYXJnCisgKgorICogQHJl cDogT3V0cHV0IGRhdGEgYXMgZGVzY3JpYmVkIGFib3ZlLgorICogQHJlcTogSW5wdXQgZGF0YSBh cyBkZXNjcmliZWQgYWJvdmUuCisgKgorICogQXJndW1lbnQgdG8gdGhlIERSTV9WTVdfUkVGX1NV UkZBQ0UgSW9jdGwuCisgKi8KKwordW5pb24gZHJtX3Ztd19zdXJmYWNlX3JlZmVyZW5jZV9hcmcg eworCXN0cnVjdCBkcm1fdm13X3N1cmZhY2VfY3JlYXRlX3JlcSByZXA7CisJc3RydWN0IGRybV92 bXdfc3VyZmFjZV9hcmcgcmVxOworfTsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioKKyAqIERS TV9WTVdfVU5SRUZfU1VSRkFDRSAtIFVucmVmZXJlbmNlIGEgaG9zdCBzdXJmYWNlLgorICoKKyAq IENsZWFyIGEgcmVmZXJlbmNlIHByZXZpb3VzbHkgcHV0IG9uIGEgaG9zdCBzdXJmYWNlLgorICog V2hlbiBhbGwgcmVmZXJlbmNlcyBhcmUgZ29uZSwgaW5jbHVkaW5nIHRoZSBvbmUgaW1wbGljaXRs eSBwbGFjZWQKKyAqIG9uIGNyZWF0aW9uLAorICogYSBkZXN0cm95IHN1cmZhY2UgY29tbWFuZCB3 aWxsIGJlIHF1ZXVlZCBmb3IgdGhlIGhvc3QuCisgKiBEb2VzIG5vdCB3YWl0IGZvciBjb21wbGV0 aW9uLgorICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqCisgKiBEUk1fVk1XX0VYRUNCVUYK KyAqCisgKiBTdWJtaXQgYSBjb21tYW5kIGJ1ZmZlciBmb3IgZXhlY3V0aW9uIG9uIHRoZSBob3N0 LCBhbmQgcmV0dXJuIGEKKyAqIGZlbmNlIHNlcW5vIHRoYXQgd2hlbiBzaWduYWxlZCwgaW5kaWNh dGVzIHRoYXQgdGhlIGNvbW1hbmQgYnVmZmVyIGhhcworICogZXhlY3V0ZWQuCisgKi8KKworLyoq CisgKiBzdHJ1Y3QgZHJtX3Ztd19leGVjYnVmX2FyZworICoKKyAqIEBjb21tYW5kczogVXNlci1z cGFjZSBhZGRyZXNzIG9mIGEgY29tbWFuZCBidWZmZXIgY2FzdCB0byBhbiBfX3U2NC4KKyAqIEBj b21tYW5kLXNpemU6IFNpemUgaW4gYnl0ZXMgb2YgdGhlIGNvbW1hbmQgYnVmZmVyLgorICogQHRo cm90dGxlLXVzOiBTbGVlcCB1bnRpbCBzb2Z0d2FyZSBpcyBsZXNzIHRoYW4gQHRocm90dGxlX3Vz CisgKiBtaWNyb3NlY29uZHMgYWhlYWQgb2YgaGFyZHdhcmUuIFRoZSBkcml2ZXIgbWF5IHJvdW5k IHRoaXMgdmFsdWUKKyAqIHRvIHRoZSBuZWFyZXN0IGtlcm5lbCB0aWNrLgorICogQGZlbmNlX3Jl cDogVXNlci1zcGFjZSBhZGRyZXNzIG9mIGEgc3RydWN0IGRybV92bXdfZmVuY2VfcmVwIGNhc3Qg dG8gYW4KKyAqIF9fdTY0LgorICogQHZlcnNpb246IEFsbG93cyBleHBhbmRpbmcgdGhlIGV4ZWNi dWYgaW9jdGwgcGFyYW1ldGVycyB3aXRob3V0IGJyZWFraW5nCisgKiBiYWNrd2FyZHMgY29tcGF0 aWJpbGl0eSwgc2luY2UgdXNlci1zcGFjZSB3aWxsIGFsd2F5cyB0ZWxsIHRoZSBrZXJuZWwKKyAq IHdoaWNoIHZlcnNpb24gaXQgdXNlcy4KKyAqIEBmbGFnczogRXhlY2J1ZiBmbGFncy4KKyAqIEBp bXBvcnRlZF9mZW5jZV9mZDogIEZEIGZvciBhIGZlbmNlIGltcG9ydGVkIGZyb20gYW5vdGhlciBk ZXZpY2UKKyAqCisgKiBBcmd1bWVudCB0byB0aGUgRFJNX1ZNV19FWEVDQlVGIElvY3RsLgorICov CisKKyNkZWZpbmUgRFJNX1ZNV19FWEVDQlVGX1ZFUlNJT04gMgorCisjZGVmaW5lIERSTV9WTVdf RVhFQ0JVRl9GTEFHX0lNUE9SVF9GRU5DRV9GRCAoMSA8PCAwKQorI2RlZmluZSBEUk1fVk1XX0VY RUNCVUZfRkxBR19FWFBPUlRfRkVOQ0VfRkQgKDEgPDwgMSkKKworc3RydWN0IGRybV92bXdfZXhl Y2J1Zl9hcmcgeworCV9fdTY0IGNvbW1hbmRzOworCV9fdTMyIGNvbW1hbmRfc2l6ZTsKKwlfX3Uz MiB0aHJvdHRsZV91czsKKwlfX3U2NCBmZW5jZV9yZXA7CisJX191MzIgdmVyc2lvbjsKKwlfX3Uz MiBmbGFnczsKKwlfX3UzMiBjb250ZXh0X2hhbmRsZTsKKwlfX3MzMiBpbXBvcnRlZF9mZW5jZV9m ZDsKK307CisKKy8qKgorICogc3RydWN0IGRybV92bXdfZmVuY2VfcmVwCisgKgorICogQGhhbmRs ZTogRmVuY2Ugb2JqZWN0IGhhbmRsZSBmb3IgZmVuY2UgYXNzb2NpYXRlZCB3aXRoIGEgY29tbWFu ZCBzdWJtaXNzaW9uLgorICogQG1hc2s6IEZlbmNlIGZsYWdzIHJlbGV2YW50IGZvciB0aGlzIGZl bmNlIG9iamVjdC4KKyAqIEBzZXFubzogRmVuY2Ugc2VxdWVuY2UgbnVtYmVyIGluIGZpZm8uIEEg ZmVuY2Ugb2JqZWN0IHdpdGggYSBsb3dlcgorICogc2Vxbm8gd2lsbCBzaWduYWwgdGhlIEVYRUMg ZmxhZyBiZWZvcmUgYSBmZW5jZSBvYmplY3Qgd2l0aCBhIGhpZ2hlcgorICogc2Vxbm8uIFRoaXMg Y2FuIGJlIHVzZWQgYnkgdXNlci1zcGFjZSB0byBhdm9pZCBrZXJuZWwgY2FsbHMgdG8gZGV0ZXJt aW5lCisgKiB3aGV0aGVyIGEgZmVuY2UgaGFzIHNpZ25hbGVkIHRoZSBFWEVDIGZsYWcuIE5vdGUg dGhhdCBAc2Vxbm8gd2lsbAorICogd3JhcCBhdCAzMi1iaXQuCisgKiBAcGFzc2VkX3NlcW5vOiBU aGUgaGlnaGVzdCBzZXFubyBudW1iZXIgcHJvY2Vzc2VkIGJ5IHRoZSBoYXJkd2FyZQorICogc28g ZmFyLiBUaGlzIGNhbiBiZSB1c2VkIHRvIG1hcmsgdXNlci1zcGFjZSBmZW5jZSBvYmplY3RzIGFz IHNpZ25hbGVkLCBhbmQKKyAqIHRvIGRldGVybWluZSB3aGV0aGVyIGEgZmVuY2Ugc2Vxbm8gbWln aHQgYmUgc3RhbGUuCisgKiBAZmQ6IEZEIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmVuY2UsIC0xIGlm IG5vdCBleHBvcnRlZAorICogQGVycm9yOiBUaGlzIG1lbWJlciBzaG91bGQndmUgYmVlbiBzZXQg dG8gLUVGQVVMVCBvbiBzdWJtaXNzaW9uLgorICogVGhlIGZvbGxvd2luZyBhY3Rpb25zIHNob3Vs ZCBiZSB0YWtlIG9uIGNvbXBsZXRpb246CisgKiBlcnJvciA9PSAtRUZBVUxUOiBGZW5jZSBjb21t dW5pY2F0aW9uIGZhaWxlZC4gVGhlIGhvc3QgaXMgc3luY2hyb25pemVkLgorICogVXNlIHRoZSBs YXN0IGZlbmNlIGlkIHJlYWQgZnJvbSB0aGUgRklGTyBmZW5jZSByZWdpc3Rlci4KKyAqIGVycm9y ICE9IDAgJiYgZXJyb3IgIT0gLUVGQVVMVDoKKyAqIEZlbmNlIHN1Ym1pc3Npb24gZmFpbGVkLiBU aGUgaG9zdCBpcyBzeW5jaHJvbml6ZWQuIFVzZSB0aGUgZmVuY2Vfc2VxIG1lbWJlci4KKyAqIGVy cm9yID09IDA6IEFsbCBpcyBPSywgVGhlIGhvc3QgbWF5IG5vdCBiZSBzeW5jaHJvbml6ZWQuCisg KiBVc2UgdGhlIGZlbmNlX3NlcSBtZW1iZXIuCisgKgorICogSW5wdXQgLyBPdXRwdXQgZGF0YSB0 byB0aGUgRFJNX1ZNV19FWEVDQlVGIElvY3RsLgorICovCisKK3N0cnVjdCBkcm1fdm13X2ZlbmNl X3JlcCB7CisJX191MzIgaGFuZGxlOworCV9fdTMyIG1hc2s7CisJX191MzIgc2Vxbm87CisJX191 MzIgcGFzc2VkX3NlcW5vOworCV9fczMyIGZkOworCV9fczMyIGVycm9yOworfTsKKworLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovCisvKioKKyAqIERSTV9WTVdfQUxMT0NfRE1BQlVGCisgKgorICogQWxsb2Nh dGUgYSBETUEgYnVmZmVyIHRoYXQgaXMgdmlzaWJsZSBhbHNvIHRvIHRoZSBob3N0LgorICogTk9U RTogVGhlIGJ1ZmZlciBpcworICogaWRlbnRpZmllZCBieSBhIGhhbmRsZSBhbmQgYW4gb2Zmc2V0 LCB3aGljaCBhcmUgcHJpdmF0ZSB0byB0aGUgZ3Vlc3QsIGJ1dAorICogdXNlYWJsZSBpbiB0aGUg Y29tbWFuZCBzdHJlYW0uIFRoZSBndWVzdCBrZXJuZWwgbWF5IHRyYW5zbGF0ZSB0aGVzZQorICog YW5kIHBhdGNoIHVwIHRoZSBjb21tYW5kIHN0cmVhbSBhY2NvcmRpbmdseS4gSW4gdGhlIGZ1dHVy ZSwgdGhlIG9mZnNldCBtYXkKKyAqIGJlIHplcm8gYXQgYWxsIHRpbWVzLCBvciBpdCBtYXkgZGlz YXBwZWFyIGZyb20gdGhlIGludGVyZmFjZSBiZWZvcmUgaXQgaXMKKyAqIGZpeGVkLgorICoKKyAq IFRoZSBETUEgYnVmZmVyIG1heSBzdGF5IHVzZXItc3BhY2UgbWFwcGVkIGluIHRoZSBndWVzdCBh dCBhbGwgdGltZXMsCisgKiBhbmQgaXMgdGh1cyBzdWl0YWJsZSBmb3Igc3ViLWFsbG9jYXRpb24u CisgKgorICogRE1BIGJ1ZmZlcnMgYXJlIG1hcHBlZCB1c2luZyB0aGUgbW1hcCgpIHN5c2NhbGwg b24gdGhlIGRybSBkZXZpY2UuCisgKi8KKworLyoqCisgKiBzdHJ1Y3QgZHJtX3Ztd19hbGxvY19k bWFidWZfcmVxCisgKgorICogQHNpemU6IFJlcXVpcmVkIG1pbmltdW0gc2l6ZSBvZiB0aGUgYnVm ZmVyLgorICoKKyAqIElucHV0IGRhdGEgdG8gdGhlIERSTV9WTVdfQUxMT0NfRE1BQlVGIElvY3Rs LgorICovCisKK3N0cnVjdCBkcm1fdm13X2FsbG9jX2RtYWJ1Zl9yZXEgeworCV9fdTMyIHNpemU7 CisJX191MzIgcGFkNjQ7Cit9OworCisvKioKKyAqIHN0cnVjdCBkcm1fdm13X2RtYWJ1Zl9yZXAK KyAqCisgKiBAbWFwX2hhbmRsZTogT2Zmc2V0IHRvIHVzZSBpbiB0aGUgbW1hcCgpIGNhbGwgdXNl ZCB0byBtYXAgdGhlIGJ1ZmZlci4KKyAqIEBoYW5kbGU6IEhhbmRsZSB1bmlxdWUgdG8gdGhpcyBi dWZmZXIuIFVzZWQgZm9yIHVucmVmZXJlbmNpbmcuCisgKiBAY3VyX2dtcl9pZDogR01SIGlkIHRv IHVzZSBpbiB0aGUgY29tbWFuZCBzdHJlYW0gd2hlbiB0aGlzIGJ1ZmZlciBpcworICogcmVmZXJl bmNlZC4gU2VlIG5vdCBhYm92ZS4KKyAqIEBjdXJfZ21yX29mZnNldDogT2Zmc2V0IHRvIHVzZSBp biB0aGUgY29tbWFuZCBzdHJlYW0gd2hlbiB0aGlzIGJ1ZmZlciBpcworICogcmVmZXJlbmNlZC4g U2VlIG5vdGUgYWJvdmUuCisgKgorICogT3V0cHV0IGRhdGEgZnJvbSB0aGUgRFJNX1ZNV19BTExP Q19ETUFCVUYgSW9jdGwuCisgKi8KKworc3RydWN0IGRybV92bXdfZG1hYnVmX3JlcCB7CisJX191 NjQgbWFwX2hhbmRsZTsKKwlfX3UzMiBoYW5kbGU7CisJX191MzIgY3VyX2dtcl9pZDsKKwlfX3Uz MiBjdXJfZ21yX29mZnNldDsKKwlfX3UzMiBwYWQ2NDsKK307CisKKy8qKgorICogdW5pb24gZHJt X3Ztd19kbWFidWZfYXJnCisgKgorICogQHJlcTogSW5wdXQgZGF0YSBhcyBkZXNjcmliZWQgYWJv dmUuCisgKiBAcmVwOiBPdXRwdXQgZGF0YSBhcyBkZXNjcmliZWQgYWJvdmUuCisgKgorICogQXJn dW1lbnQgdG8gdGhlIERSTV9WTVdfQUxMT0NfRE1BQlVGIElvY3RsLgorICovCisKK3VuaW9uIGRy bV92bXdfYWxsb2NfZG1hYnVmX2FyZyB7CisJc3RydWN0IGRybV92bXdfYWxsb2NfZG1hYnVmX3Jl cSByZXE7CisJc3RydWN0IGRybV92bXdfZG1hYnVmX3JlcCByZXA7Cit9OworCisvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8KKy8qKgorICogRFJNX1ZNV19VTlJFRl9ETUFCVUYgLSBGcmVlIGEgRE1BIGJ1ZmZl ci4KKyAqCisgKi8KKworLyoqCisgKiBzdHJ1Y3QgZHJtX3Ztd191bnJlZl9kbWFidWZfYXJnCisg KgorICogQGhhbmRsZTogSGFuZGxlIGluZGljYXRpbmcgd2hhdCBidWZmZXIgdG8gZnJlZS4gT2J0 YWluZWQgZnJvbSB0aGUKKyAqIERSTV9WTVdfQUxMT0NfRE1BQlVGIElvY3RsLgorICoKKyAqIEFy Z3VtZW50IHRvIHRoZSBEUk1fVk1XX1VOUkVGX0RNQUJVRiBJb2N0bC4KKyAqLworCitzdHJ1Y3Qg ZHJtX3Ztd191bnJlZl9kbWFidWZfYXJnIHsKKwlfX3UzMiBoYW5kbGU7CisJX191MzIgcGFkNjQ7 Cit9OworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKgorICogRFJNX1ZNV19DT05UUk9MX1NUUkVB TSAtIENvbnRyb2wgb3ZlcmxheXMsIGFrYSBzdHJlYW1zLgorICoKKyAqIFRoaXMgSU9DVEwgY29u dHJvbHMgdGhlIG92ZXJsYXkgdW5pdHMgb2YgdGhlIHN2Z2EgZGV2aWNlLgorICogVGhlIFNWR0Eg b3ZlcmxheSB1bml0cyBkb2VzIG5vdCB3b3JrIGxpa2UgcmVndWxhciBoYXJkd2FyZSB1bml0cyBp bgorICogdGhhdCB0aGV5IGRvIG5vdCBhdXRvbWF0aWNhbHkgcmVhZCBiYWNrIHRoZSBjb250ZW50 cyBvZiB0aGUgZ2l2ZW4gZG1hCisgKiBidWZmZXIuIEJ1dCBpbnN0ZWFkIG9ubHkgcmVhZCBiYWNr IGZvciBlYWNoIGNhbGwgdG8gdGhpcyBpb2N0bCwgYW5kCisgKiBhdCBhbnkgcG9pbnQgYmV0d2Vl biB0aGlzIGNhbGwgYmVpbmcgbWFkZSBhbmQgYSBmb2xsb3dpbmcgY2FsbCB0aGF0CisgKiBlaXRo ZXIgY2hhbmdlcyB0aGUgYnVmZmVyIG9yIGRpc2FibGVzIHRoZSBzdHJlYW0uCisgKi8KKworLyoq CisgKiBzdHJ1Y3QgZHJtX3Ztd19yZWN0CisgKgorICogRGVmaW5lcyBhIHJlY3RhbmdsZS4gVXNl ZCBpbiB0aGUgb3ZlcmxheSBpb2N0bCB0byBkZWZpbmUKKyAqIHNvdXJjZSBhbmQgZGVzdGluYXRp b24gcmVjdGFuZ2xlLgorICovCisKK3N0cnVjdCBkcm1fdm13X3JlY3QgeworCV9fczMyIHg7CisJ X19zMzIgeTsKKwlfX3UzMiB3OworCV9fdTMyIGg7Cit9OworCisvKioKKyAqIHN0cnVjdCBkcm1f dm13X2NvbnRyb2xfc3RyZWFtX2FyZworICoKKyAqIEBzdHJlYW1faWQ6IFN0ZWFybSB0byBjb250 cm9sCisgKiBAZW5hYmxlZDogSWYgZmFsc2UgYWxsIGZvbGxvd2luZyBhcmd1bWVudHMgYXJlIGln bm9yZWQuCisgKiBAaGFuZGxlOiBIYW5kbGUgdG8gYnVmZmVyIGZvciBnZXR0aW5nIGRhdGEgZnJv bS4KKyAqIEBmb3JtYXQ6IEZvcm1hdCBvZiB0aGUgb3ZlcmxheSBhcyB1bmRlcnN0b29kIGJ5IHRo ZSBob3N0LgorICogQHdpZHRoOiBXaWR0aCBvZiB0aGUgb3ZlcmxheS4KKyAqIEBoZWlnaHQ6IEhl aWdodCBvZiB0aGUgb3ZlcmxheS4KKyAqIEBzaXplOiBTaXplIG9mIHRoZSBvdmVybGF5IGluIGJ5 dGVzLgorICogQHBpdGNoOiBBcnJheSBvZiBwaXRjaGVzLCB0aGUgdHdvIGxhc3QgYXJlIG9ubHkg dXNlZCBmb3IgWVVWMTIgZm9ybWF0cy4KKyAqIEBvZmZzZXQ6IE9mZnNldCBmcm9tIHN0YXJ0IG9m IGRtYSBidWZmZXIgdG8gb3ZlcmxheS4KKyAqIEBzcmM6IFNvdXJjZSByZWN0LCBtdXN0IGJlIHdp dGhpbiB0aGUgZGVmaW5lZCBhcmVhIGFib3ZlLgorICogQGRzdDogRGVzdGluYXRpb24gcmVjdCwg eCBhbmQgeSBtYXkgYmUgbmVnYXRpdmUuCisgKgorICogQXJndW1lbnQgdG8gdGhlIERSTV9WTVdf Q09OVFJPTF9TVFJFQU0gSW9jdGwuCisgKi8KKworc3RydWN0IGRybV92bXdfY29udHJvbF9zdHJl YW1fYXJnIHsKKwlfX3UzMiBzdHJlYW1faWQ7CisJX191MzIgZW5hYmxlZDsKKworCV9fdTMyIGZs YWdzOworCV9fdTMyIGNvbG9yX2tleTsKKworCV9fdTMyIGhhbmRsZTsKKwlfX3UzMiBvZmZzZXQ7 CisJX19zMzIgZm9ybWF0OworCV9fdTMyIHNpemU7CisJX191MzIgd2lkdGg7CisJX191MzIgaGVp Z2h0OworCV9fdTMyIHBpdGNoWzNdOworCisJX191MzIgcGFkNjQ7CisJc3RydWN0IGRybV92bXdf cmVjdCBzcmM7CisJc3RydWN0IGRybV92bXdfcmVjdCBkc3Q7Cit9OworCisvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8KKy8qKgorICogRFJNX1ZNV19DVVJTT1JfQllQQVNTIC0gR2l2ZSBleHRyYSBpbmZvcm1h dGlvbiBhYm91dCBjdXJzb3IgYnlwYXNzLgorICoKKyAqLworCisjZGVmaW5lIERSTV9WTVdfQ1VS U09SX0JZUEFTU19BTEwgICAgKDEgPDwgMCkKKyNkZWZpbmUgRFJNX1ZNV19DVVJTT1JfQllQQVNT X0ZMQUdTICAgICAgICgxKQorCisvKioKKyAqIHN0cnVjdCBkcm1fdm13X2N1cnNvcl9ieXBhc3Nf YXJnCisgKgorICogQGZsYWdzOiBGbGFncy4KKyAqIEBjcnRjX2lkOiBDcnRjIGlkLCBvbmx5IHVz ZWQgaWYgRE1SX0NVUlNPUl9CWVBBU1NfQUxMIGlzbid0IHBhc3NlZC4KKyAqIEB4cG9zOiBYIHBv c2l0aW9uIG9mIGN1cnNvci4KKyAqIEB5cG9zOiBZIHBvc2l0aW9uIG9mIGN1cnNvci4KKyAqIEB4 aG90OiBYIGhvdHNwb3QuCisgKiBAeWhvdDogWSBob3RzcG90LgorICoKKyAqIEFyZ3VtZW50IHRv IHRoZSBEUk1fVk1XX0NVUlNPUl9CWVBBU1MgSW9jdGwuCisgKi8KKworc3RydWN0IGRybV92bXdf Y3Vyc29yX2J5cGFzc19hcmcgeworCV9fdTMyIGZsYWdzOworCV9fdTMyIGNydGNfaWQ7CisJX19z MzIgeHBvczsKKwlfX3MzMiB5cG9zOworCV9fczMyIHhob3Q7CisJX19zMzIgeWhvdDsKK307CisK Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLworLyoqCisgKiBEUk1fVk1XX0NMQUlNX1NUUkVBTSAtIENsYWlt IGEgc2luZ2xlIHN0cmVhbS4KKyAqLworCisvKioKKyAqIHN0cnVjdCBkcm1fdm13X2NvbnRleHRf YXJnCisgKgorICogQHN0cmVhbV9pZDogRGV2aWNlIHVuaXF1ZSBjb250ZXh0IElELgorICoKKyAq IE91dHB1dCBhcmd1bWVudCB0byB0aGUgRFJNX1ZNV19DUkVBVEVfQ09OVEVYVCBJb2N0bC4KKyAq IElucHV0IGFyZ3VtZW50IHRvIHRoZSBEUk1fVk1XX1VOUkVGX0NPTlRFWFQgSW9jdGwuCisgKi8K Kworc3RydWN0IGRybV92bXdfc3RyZWFtX2FyZyB7CisJX191MzIgc3RyZWFtX2lkOworCV9fdTMy IHBhZDY0OworfTsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioKKyAqIERSTV9WTVdfVU5SRUZf U1RSRUFNIC0gVW5jbGFpbSBhIHN0cmVhbS4KKyAqCisgKiBSZXR1cm4gYSBzaW5nbGUgc3RyZWFt IHRoYXQgd2FzIGNsYWltZWQgYnkgdGhpcyBwcm9jZXNzLiBBbHNvIG1ha2VzCisgKiBzdXJlIHRo YXQgdGhlIHN0cmVhbSBoYXMgYmVlbiBzdG9wcGVkLgorICovCisKKy8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq LworLyoqCisgKiBEUk1fVk1XX0dFVF8zRF9DQVAKKyAqCisgKiBSZWFkIDNEIGNhcGFiaWxpdGll cyBmcm9tIHRoZSBGSUZPCisgKgorICovCisKKy8qKgorICogc3RydWN0IGRybV92bXdfZ2V0XzNk X2NhcF9hcmcKKyAqCisgKiBAYnVmZmVyOiBQb2ludGVyIHRvIGEgYnVmZmVyIGZvciBjYXBhYmls aXR5IGRhdGEsIGNhc3QgdG8gYW4gX191NjQKKyAqIEBzaXplOiBNYXggc2l6ZSB0byBjb3B5Cisg KgorICogSW5wdXQgYXJndW1lbnQgdG8gdGhlIERSTV9WTVdfR0VUXzNEX0NBUF9JT0NUTAorICog aW9jdGxzLgorICovCisKK3N0cnVjdCBkcm1fdm13X2dldF8zZF9jYXBfYXJnIHsKKwlfX3U2NCBi dWZmZXI7CisJX191MzIgbWF4X3NpemU7CisJX191MzIgcGFkNjQ7Cit9OworCisvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8KKy8qKgorICogRFJNX1ZNV19GRU5DRV9XQUlUCisgKgorICogV2FpdHMgZm9yIGEg ZmVuY2Ugb2JqZWN0IHRvIHNpZ25hbC4gVGhlIHdhaXQgaXMgaW50ZXJydXB0aWJsZSwgc28gdGhh dAorICogc2lnbmFscyBtYXkgYmUgZGVsaXZlcmVkIGR1cmluZyB0aGUgaW50ZXJydXB0LiBUaGUg d2FpdCBtYXkgdGltZW91dCwKKyAqIGluIHdoaWNoIGNhc2UgdGhlIGNhbGxzIHJldHVybnMgLUVC VVNZLiBJZiB0aGUgd2FpdCBpcyByZXN0YXJ0ZWQsCisgKiB0aGF0IGlzIHJlc3RhcnRpbmcgd2l0 aG91dCByZXNldHRpbmcgQGNvb2tpZV92YWxpZCB0byB6ZXJvLAorICogdGhlIHRpbWVvdXQgaXMg Y29tcHV0ZWQgZnJvbSB0aGUgZmlyc3QgY2FsbC4KKyAqCisgKiBUaGUgZmxhZ3MgYXJndW1lbnQg dG8gdGhlIERSTV9WTVdfRkVOQ0VfV0FJVCBpb2N0bCBpbmRpY2F0ZXMgd2hhdCB0byB3YWl0Cisg KiBvbjoKKyAqIERSTV9WTVdfRkVOQ0VfRkxBR19FWEVDOiBBbGwgY29tbWFuZHMgYWhlYWQgb2Yg dGhlIGZlbmNlIGluIHRoZSBjb21tYW5kCisgKiBzdHJlYW0KKyAqIGhhdmUgZXhlY3V0ZWQuCisg KiBEUk1fVk1XX0ZFTkNFX0ZMQUdfUVVFUlk6IEFsbCBxdWVyeSByZXN1bHRzIHJlc3VsdGluZyBm cm9tIHF1ZXJ5IGZpbmlzaAorICogY29tbWFuZHMKKyAqIGluIHRoZSBidWZmZXIgZ2l2ZW4gdG8g dGhlIEVYRUNCVUYgaW9jdGwgcmV0dXJuaW5nIHRoZSBmZW5jZSBvYmplY3QgaGFuZGxlCisgKiBh cmUgYXZhaWxhYmxlIHRvIHVzZXItc3BhY2UuCisgKgorICogRFJNX1ZNV19XQUlUX09QVElPTl9V TlJFRjogSWYgdGhpcyB3YWl0IG9wdGlvbiBpcyBnaXZlbiwgYW5kIHRoZQorICogZmVuYyB3YWl0 IGlvY3RsIHJldHVybnMgMCwgdGhlIGZlbmNlIG9iamVjdCBoYXMgYmVlbiB1bnJlZmVyZW5jZWQg YWZ0ZXIKKyAqIHRoZSB3YWl0LgorICovCisKKyNkZWZpbmUgRFJNX1ZNV19GRU5DRV9GTEFHX0VY RUMgICAoMSA8PCAwKQorI2RlZmluZSBEUk1fVk1XX0ZFTkNFX0ZMQUdfUVVFUlkgICgxIDw8IDEp CisKKyNkZWZpbmUgRFJNX1ZNV19XQUlUX09QVElPTl9VTlJFRiAoMSA8PCAwKQorCisvKioKKyAq IHN0cnVjdCBkcm1fdm13X2ZlbmNlX3dhaXRfYXJnCisgKgorICogQGhhbmRsZTogRmVuY2Ugb2Jq ZWN0IGhhbmRsZSBhcyByZXR1cm5lZCBieSB0aGUgRFJNX1ZNV19FWEVDQlVGIGlvY3RsLgorICog QGNvb2tpZV92YWxpZDogTXVzdCBiZSByZXNldCB0byAwIG9uIGZpcnN0IGNhbGwuIExlZnQgYWxv bmUgb24gcmVzdGFydC4KKyAqIEBrZXJuZWxfY29va2llOiBTZXQgdG8gMCBvbiBmaXJzdCBjYWxs LiBMZWZ0IGFsb25lIG9uIHJlc3RhcnQuCisgKiBAdGltZW91dF91czogV2FpdCB0aW1lb3V0IGlu IG1pY3Jvc2Vjb25kcy4gMCBmb3IgaW5kZWZpbml0ZSB0aW1lb3V0LgorICogQGxhenk6IFNldCB0 byAxIGlmIHRpbWluZyBpcyBub3QgY3JpdGljYWwuIEFsbG93IG1vcmUgdGhhbiBhIGtlcm5lbCB0 aWNrCisgKiBiZWZvcmUgcmV0dXJuaW5nLgorICogQGZsYWdzOiBGZW5jZSBmbGFncyB0byB3YWl0 IG9uLgorICogQHdhaXRfb3B0aW9uczogT3B0aW9ucyB0aGF0IGNvbnRyb2wgdGhlIGJlaGF2aW91 ciBvZiB0aGUgd2FpdCBpb2N0bC4KKyAqCisgKiBJbnB1dCBhcmd1bWVudCB0byB0aGUgRFJNX1ZN V19GRU5DRV9XQUlUIGlvY3RsLgorICovCisKK3N0cnVjdCBkcm1fdm13X2ZlbmNlX3dhaXRfYXJn IHsKKwlfX3UzMiBoYW5kbGU7CisJX19zMzIgIGNvb2tpZV92YWxpZDsKKwlfX3U2NCBrZXJuZWxf Y29va2llOworCV9fdTY0IHRpbWVvdXRfdXM7CisJX19zMzIgbGF6eTsKKwlfX3MzMiBmbGFnczsK KwlfX3MzMiB3YWl0X29wdGlvbnM7CisJX19zMzIgcGFkNjQ7Cit9OworCisvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8KKy8qKgorICogRFJNX1ZNV19GRU5DRV9TSUdOQUxFRAorICoKKyAqIENoZWNrcyBpZiBh IGZlbmNlIG9iamVjdCBpcyBzaWduYWxlZC4uCisgKi8KKworLyoqCisgKiBzdHJ1Y3QgZHJtX3Zt d19mZW5jZV9zaWduYWxlZF9hcmcKKyAqCisgKiBAaGFuZGxlOiBGZW5jZSBvYmplY3QgaGFuZGxl IGFzIHJldHVybmVkIGJ5IHRoZSBEUk1fVk1XX0VYRUNCVUYgaW9jdGwuCisgKiBAZmxhZ3M6IEZl bmNlIG9iamVjdCBmbGFncyBpbnB1dCB0byBEUk1fVk1XX0ZFTkNFX1NJR05BTEVEIGlvY3RsCisg KiBAc2lnbmFsZWQ6IE91dDogRmxhZ3Mgc2lnbmFsZWQuCisgKiBAc2VxdWVuY2U6IE91dDogSGln aGVzdCBzZXF1ZW5jZSBwYXNzZWQgc28gZmFyLiBDYW4gYmUgdXNlZCB0byBzaWduYWwgdGhlCisg KiBFWEVDIGZsYWcgb2YgdXNlci1zcGFjZSBmZW5jZSBvYmplY3RzLgorICoKKyAqIElucHV0L091 dHB1dCBhcmd1bWVudCB0byB0aGUgRFJNX1ZNV19GRU5DRV9TSUdOQUxFRCBhbmQgRFJNX1ZNV19G RU5DRV9VTlJFRgorICogaW9jdGxzLgorICovCisKK3N0cnVjdCBkcm1fdm13X2ZlbmNlX3NpZ25h bGVkX2FyZyB7CisJIF9fdTMyIGhhbmRsZTsKKwkgX191MzIgZmxhZ3M7CisJIF9fczMyIHNpZ25h bGVkOworCSBfX3UzMiBwYXNzZWRfc2Vxbm87CisJIF9fdTMyIHNpZ25hbGVkX2ZsYWdzOworCSBf X3UzMiBwYWQ2NDsKK307CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqCisgKiBEUk1fVk1XX0ZF TkNFX1VOUkVGCisgKgorICogVW5yZWZlcmVuY2VzIGEgZmVuY2Ugb2JqZWN0LCBhbmQgY2F1c2Vz IGl0IHRvIGJlIGRlc3Ryb3llZCBpZiB0aGVyZSBhcmUgbm8KKyAqIG90aGVyIHJlZmVyZW5jZXMg dG8gaXQuCisgKgorICovCisKKy8qKgorICogc3RydWN0IGRybV92bXdfZmVuY2VfYXJnCisgKgor ICogQGhhbmRsZTogRmVuY2Ugb2JqZWN0IGhhbmRsZSBhcyByZXR1cm5lZCBieSB0aGUgRFJNX1ZN V19FWEVDQlVGIGlvY3RsLgorICoKKyAqIElucHV0L091dHB1dCBhcmd1bWVudCB0byB0aGUgRFJN X1ZNV19GRU5DRV9VTlJFRiBpb2N0bC4uCisgKi8KKworc3RydWN0IGRybV92bXdfZmVuY2VfYXJn IHsKKwkgX191MzIgaGFuZGxlOworCSBfX3UzMiBwYWQ2NDsKK307CisKKworLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovCisvKioKKyAqIERSTV9WTVdfRkVOQ0VfRVZFTlQKKyAqCisgKiBRdWV1ZXMgYW4gZXZl bnQgb24gYSBmZW5jZSB0byBiZSBkZWxpdmVyZWQgb24gdGhlIGRybSBjaGFyYWN0ZXIgZGV2aWNl CisgKiB3aGVuIHRoZSBmZW5jZSBoYXMgc2lnbmFsZWQgdGhlIERSTV9WTVdfRkVOQ0VfRkxBR19F WEVDIGZsYWcuCisgKiBPcHRpb25hbGx5IHRoZSBhcHByb3hpbWF0ZSB0aW1lIHdoZW4gdGhlIGZl bmNlIHNpZ25hbGVkIGlzCisgKiBnaXZlbiBieSB0aGUgZXZlbnQuCisgKi8KKworLyoKKyAqIFRo ZSBldmVudCB0eXBlCisgKi8KKyNkZWZpbmUgRFJNX1ZNV19FVkVOVF9GRU5DRV9TSUdOQUxFRCAw eDgwMDAwMDAwCisKK3N0cnVjdCBkcm1fdm13X2V2ZW50X2ZlbmNlIHsKKwlzdHJ1Y3QgZHJtX2V2 ZW50IGJhc2U7CisJX191NjQgdXNlcl9kYXRhOworCV9fdTMyIHR2X3NlYzsKKwlfX3UzMiB0dl91 c2VjOworfTsKKworLyoKKyAqIEZsYWdzIHRoYXQgbWF5IGJlIGdpdmVuIHRvIHRoZSBjb21tYW5k LgorICovCisvKiBSZXF1ZXN0IGZlbmNlIHNpZ25hbGVkIHRpbWUgb24gdGhlIGV2ZW50LiAqLwor I2RlZmluZSBEUk1fVk1XX0ZFX0ZMQUdfUkVRX1RJTUUgKDEgPDwgMCkKKworLyoqCisgKiBzdHJ1 Y3QgZHJtX3Ztd19mZW5jZV9ldmVudF9hcmcKKyAqCisgKiBAZmVuY2VfcmVwOiBQb2ludGVyIHRv IGZlbmNlX3JlcCBzdHJ1Y3R1cmUgY2FzdCB0byBfX3U2NCBvciAwIGlmCisgKiB0aGUgZmVuY2Ug aXMgbm90IHN1cHBvc2VkIHRvIGJlIHJlZmVyZW5jZWQgYnkgdXNlci1zcGFjZS4KKyAqIEB1c2Vy X2luZm86IEluZm8gdG8gYmUgZGVsaXZlcmVkIHdpdGggdGhlIGV2ZW50LgorICogQGhhbmRsZTog QXR0YWNoIHRoZSBldmVudCB0byB0aGlzIGZlbmNlIG9ubHkuCisgKiBAZmxhZ3M6IEEgc2V0IG9m IGZsYWdzIGFzIGRlZmluZWQgYWJvdmUuCisgKi8KK3N0cnVjdCBkcm1fdm13X2ZlbmNlX2V2ZW50 X2FyZyB7CisJX191NjQgZmVuY2VfcmVwOworCV9fdTY0IHVzZXJfZGF0YTsKKwlfX3UzMiBoYW5k bGU7CisJX191MzIgZmxhZ3M7Cit9OworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqCisgKiBE Uk1fVk1XX1BSRVNFTlQKKyAqCisgKiBFeGVjdXRlcyBhbiBTVkdBIHByZXNlbnQgb24gYSBnaXZl biBmYiBmb3IgYSBnaXZlbiBzdXJmYWNlLiBUaGUgc3VyZmFjZQorICogaXMgcGxhY2VkIG9uIHRo ZSBmcmFtZWJ1ZmZlci4gQ2xpcHJlY3RzIGFyZSBnaXZlbiByZWxhdGl2ZSB0byB0aGUgZ2l2ZW4K KyAqIHBvaW50ICh0aGUgcG9pbnQgZGlzaWduYXRlZCBieSBkZXN0X3t4fHl9KS4KKyAqCisgKi8K KworLyoqCisgKiBzdHJ1Y3QgZHJtX3Ztd19wcmVzZW50X2FyZworICogQGZiX2lkOiBmcmFtZWJ1 ZmZlciBpZCB0byBwcmVzZW50IC8gcmVhZCBiYWNrIGZyb20uCisgKiBAc2lkOiBTdXJmYWNlIGlk IHRvIHByZXNlbnQgZnJvbS4KKyAqIEBkZXN0X3g6IFggcGxhY2VtZW50IGNvb3JkaW5hdGUgZm9y IHN1cmZhY2UuCisgKiBAZGVzdF95OiBZIHBsYWNlbWVudCBjb29yZGluYXRlIGZvciBzdXJmYWNl LgorICogQGNsaXBzX3B0cjogUG9pbnRlciB0byBhbiBhcnJheSBvZiBjbGlwIHJlY3RzIGNhc3Qg dG8gYW4gX191NjQuCisgKiBAbnVtX2NsaXBzOiBOdW1iZXIgb2YgY2xpcHJlY3RzIGdpdmVuIHJl bGF0aXZlIHRvIHRoZSBmcmFtZWJ1ZmZlciBvcmlnaW4sCisgKiBpbiB0aGUgc2FtZSBjb29yZGlu YXRlIHNwYWNlIGFzIHRoZSBmcmFtZSBidWZmZXIuCisgKiBAcGFkNjQ6IFVudXNlZCA2NC1iaXQg cGFkZGluZy4KKyAqCisgKiBJbnB1dCBhcmd1bWVudCB0byB0aGUgRFJNX1ZNV19QUkVTRU5UIGlv Y3RsLgorICovCisKK3N0cnVjdCBkcm1fdm13X3ByZXNlbnRfYXJnIHsKKwlfX3UzMiBmYl9pZDsK KwlfX3UzMiBzaWQ7CisJX19zMzIgZGVzdF94OworCV9fczMyIGRlc3RfeTsKKwlfX3U2NCBjbGlw c19wdHI7CisJX191MzIgbnVtX2NsaXBzOworCV9fdTMyIHBhZDY0OworfTsKKworCisvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KKy8qKgorICogRFJNX1ZNV19QUkVTRU5UX1JFQURCQUNLCisgKgorICogRXhl Y3V0ZXMgYW4gU1ZHQSBwcmVzZW50IHJlYWRiYWNrIGZyb20gYSBnaXZlbiBmYiB0byB0aGUgZG1h IGJ1ZmZlcgorICogY3VycmVudGx5IGJvdW5kIGFzIHRoZSBmYi4gSWYgdGhlcmUgaXMgbm8gZG1h IGJ1ZmZlciBib3VuZCB0byB0aGUgZmIsCisgKiBhbiBlcnJvciB3aWxsIGJlIHJldHVybmVkLgor ICoKKyAqLworCisvKioKKyAqIHN0cnVjdCBkcm1fdm13X3ByZXNlbnRfYXJnCisgKiBAZmJfaWQ6 IGZiX2lkIHRvIHByZXNlbnQgLyByZWFkIGJhY2sgZnJvbS4KKyAqIEBudW1fY2xpcHM6IE51bWJl ciBvZiBjbGlwcmVjdHMuCisgKiBAY2xpcHNfcHRyOiBQb2ludGVyIHRvIGFuIGFycmF5IG9mIGNs aXAgcmVjdHMgY2FzdCB0byBhbiBfX3U2NC4KKyAqIEBmZW5jZV9yZXA6IFBvaW50ZXIgdG8gYSBz dHJ1Y3QgZHJtX3Ztd19mZW5jZV9yZXAsIGNhc3QgdG8gYW4gX191NjQuCisgKiBJZiB0aGlzIG1l bWJlciBpcyBOVUxMLCB0aGVuIHRoZSBpb2N0bCBzaG91bGQgbm90IHJldHVybiBhIGZlbmNlLgor ICovCisKK3N0cnVjdCBkcm1fdm13X3ByZXNlbnRfcmVhZGJhY2tfYXJnIHsKKwkgX191MzIgZmJf aWQ7CisJIF9fdTMyIG51bV9jbGlwczsKKwkgX191NjQgY2xpcHNfcHRyOworCSBfX3U2NCBmZW5j ZV9yZXA7Cit9OworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKgorICogRFJNX1ZNV19VUERBVEVf TEFZT1VUIC0gVXBkYXRlIGxheW91dAorICoKKyAqIFVwZGF0ZXMgdGhlIHByZWZlcnJlZCBtb2Rl cyBhbmQgY29ubmVjdGlvbiBzdGF0dXMgZm9yIGNvbm5lY3RvcnMuIFRoZQorICogY29tbWFuZCBj b25zaXN0cyBvZiBvbmUgZHJtX3Ztd191cGRhdGVfbGF5b3V0X2FyZyBwb2ludGluZyB0byBhbiBh cnJheQorICogb2YgbnVtX291dHB1dHMgZHJtX3Ztd19yZWN0J3MuCisgKi8KKworLyoqCisgKiBz dHJ1Y3QgZHJtX3Ztd191cGRhdGVfbGF5b3V0X2FyZworICoKKyAqIEBudW1fb3V0cHV0czogbnVt YmVyIG9mIGFjdGl2ZSBjb25uZWN0b3JzCisgKiBAcmVjdHM6IHBvaW50ZXIgdG8gYXJyYXkgb2Yg ZHJtX3Ztd19yZWN0IGNhc3QgdG8gYW4gX191NjQKKyAqCisgKiBJbnB1dCBhcmd1bWVudCB0byB0 aGUgRFJNX1ZNV19VUERBVEVfTEFZT1VUIElvY3RsLgorICovCitzdHJ1Y3QgZHJtX3Ztd191cGRh dGVfbGF5b3V0X2FyZyB7CisJX191MzIgbnVtX291dHB1dHM7CisJX191MzIgcGFkNjQ7CisJX191 NjQgcmVjdHM7Cit9OworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqCisgKiBEUk1fVk1XX0NS RUFURV9TSEFERVIgLSBDcmVhdGUgc2hhZGVyCisgKgorICogQ3JlYXRlcyBhIHNoYWRlciBhbmQg b3B0aW9uYWxseSBiaW5kcyBpdCB0byBhIGRtYSBidWZmZXIgY29udGFpbmluZworICogdGhlIHNo YWRlciBieXRlLWNvZGUuCisgKi8KKworLyoqCisgKiBlbnVtIGRybV92bXdfc2hhZGVyX3R5cGUg LSBTaGFkZXIgdHlwZXMKKyAqLworZW51bSBkcm1fdm13X3NoYWRlcl90eXBlIHsKKwlkcm1fdm13 X3NoYWRlcl90eXBlX3ZzID0gMCwKKwlkcm1fdm13X3NoYWRlcl90eXBlX3BzLAorfTsKKworCisv KioKKyAqIHN0cnVjdCBkcm1fdm13X3NoYWRlcl9jcmVhdGVfYXJnCisgKgorICogQHNoYWRlcl90 eXBlOiBTaGFkZXIgdHlwZSBvZiB0aGUgc2hhZGVyIHRvIGNyZWF0ZS4KKyAqIEBzaXplOiBTaXpl IG9mIHRoZSBieXRlLWNvZGUgaW4gYnl0ZXMuCisgKiB3aGVyZSB0aGUgc2hhZGVyIGJ5dGUtY29k ZSBzdGFydHMKKyAqIEBidWZmZXJfaGFuZGxlOiBCdWZmZXIgaGFuZGxlIGlkZW50aWZ5aW5nIHRo ZSBidWZmZXIgY29udGFpbmluZyB0aGUKKyAqIHNoYWRlciBieXRlLWNvZGUKKyAqIEBzaGFkZXJf aGFuZGxlOiBPbiBzdWNjZXNzZnVsIGNvbXBsZXRpb24gY29udGFpbnMgYSBoYW5kbGUgdGhhdAor ICogY2FuIGJlIHVzZWQgdG8gc3Vic2VxdWVudGx5IGlkZW50aWZ5IHRoZSBzaGFkZXIuCisgKiBA b2Zmc2V0OiBPZmZzZXQgaW4gYnl0ZXMgaW50byB0aGUgYnVmZmVyIGdpdmVuIGJ5IEBidWZmZXJf aGFuZGxlLAorICoKKyAqIElucHV0IC8gT3V0cHV0IGFyZ3VtZW50IHRvIHRoZSBEUk1fVk1XX0NS RUFURV9TSEFERVIgSW9jdGwuCisgKi8KK3N0cnVjdCBkcm1fdm13X3NoYWRlcl9jcmVhdGVfYXJn IHsKKwllbnVtIGRybV92bXdfc2hhZGVyX3R5cGUgc2hhZGVyX3R5cGU7CisJX191MzIgc2l6ZTsK KwlfX3UzMiBidWZmZXJfaGFuZGxlOworCV9fdTMyIHNoYWRlcl9oYW5kbGU7CisJX191NjQgb2Zm c2V0OworfTsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioKKyAqIERSTV9WTVdfVU5SRUZfU0hB REVSIC0gVW5yZWZlcmVuY2VzIGEgc2hhZGVyCisgKgorICogRGVzdHJveXMgYSB1c2VyLXNwYWNl IHJlZmVyZW5jZSB0byBhIHNoYWRlciwgb3B0aW9uYWxseSBkZXN0cm95aW5nCisgKiBpdC4KKyAq LworCisvKioKKyAqIHN0cnVjdCBkcm1fdm13X3NoYWRlcl9hcmcKKyAqCisgKiBAaGFuZGxlOiBI YW5kbGUgaWRlbnRpZnlpbmcgdGhlIHNoYWRlciB0byBkZXN0cm95LgorICoKKyAqIElucHV0IGFy Z3VtZW50IHRvIHRoZSBEUk1fVk1XX1VOUkVGX1NIQURFUiBpb2N0bC4KKyAqLworc3RydWN0IGRy bV92bXdfc2hhZGVyX2FyZyB7CisJX191MzIgaGFuZGxlOworCV9fdTMyIHBhZDY0OworfTsKKwor LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCisvKioKKyAqIERSTV9WTVdfR0JfU1VSRkFDRV9DUkVBVEUgLSBD cmVhdGUgYSBob3N0IGd1ZXN0LWJhY2tlZCBzdXJmYWNlLgorICoKKyAqIEFsbG9jYXRlcyBhIHN1 cmZhY2UgaGFuZGxlIGFuZCBxdWV1ZXMgYSBjcmVhdGUgc3VyZmFjZSBjb21tYW5kCisgKiBmb3Ig dGhlIGhvc3Qgb24gdGhlIGZpcnN0IHVzZSBvZiB0aGUgc3VyZmFjZS4gVGhlIHN1cmZhY2UgSUQg Y2FuCisgKiBiZSB1c2VkIGFzIHRoZSBzdXJmYWNlIElEIGluIGNvbW1hbmRzIHJlZmVyZW5jaW5n IHRoZSBzdXJmYWNlLgorICovCisKKy8qKgorICogZW51bSBkcm1fdm13X3N1cmZhY2VfZmxhZ3MK KyAqCisgKiBAZHJtX3Ztd19zdXJmYWNlX2ZsYWdfc2hhcmVhYmxlOiAgICAgV2hldGhlciB0aGUg c3VyZmFjZSBpcyBzaGFyZWFibGUKKyAqIEBkcm1fdm13X3N1cmZhY2VfZmxhZ19zY2Fub3V0OiAg ICAgICBXaGV0aGVyIHRoZSBzdXJmYWNlIGlzIGEgc2Nhbm91dAorICogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN1cmZhY2UuCisgKiBAZHJtX3Ztd19zdXJmYWNlX2ZsYWdf Y3JlYXRlX2J1ZmZlcjogQ3JlYXRlIGEgYmFja3VwIGJ1ZmZlciBpZiBub25lIGlzCisgKiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2l2ZW4uCisgKi8KK2VudW0gZHJtX3Zt d19zdXJmYWNlX2ZsYWdzIHsKKwlkcm1fdm13X3N1cmZhY2VfZmxhZ19zaGFyZWFibGUgPSAoMSA8 PCAwKSwKKwlkcm1fdm13X3N1cmZhY2VfZmxhZ19zY2Fub3V0ID0gKDEgPDwgMSksCisJZHJtX3Zt d19zdXJmYWNlX2ZsYWdfY3JlYXRlX2J1ZmZlciA9ICgxIDw8IDIpCit9OworCisvKioKKyAqIHN0 cnVjdCBkcm1fdm13X2diX3N1cmZhY2VfY3JlYXRlX3JlcQorICoKKyAqIEBzdmdhM2RfZmxhZ3M6 ICAgICBTVkdBM2Qgc3VyZmFjZSBmbGFncyBmb3IgdGhlIGRldmljZS4KKyAqIEBmb3JtYXQ6ICAg ICAgICAgICBTVkdBM2QgZm9ybWF0LgorICogQG1pcF9sZXZlbDogICAgICAgIE51bWJlciBvZiBt aXAgbGV2ZWxzIGZvciBhbGwgZmFjZXMuCisgKiBAZHJtX3N1cmZhY2VfZmxhZ3MgRmxhZ3MgYXMg ZGVzY3JpYmVkIGFib3ZlLgorICogQG11bHRpc2FtcGxlX2NvdW50IEZ1dHVyZSB1c2UuIFNldCB0 byAwLgorICogQGF1dG9nZW5fZmlsdGVyICAgIEZ1dHVyZSB1c2UuIFNldCB0byAwLgorICogQGJ1 ZmZlcl9oYW5kbGUgICAgIEJ1ZmZlciBoYW5kbGUgb2YgYmFja3VwIGJ1ZmZlci4gU1ZHQTNEX0lO VkFMSURfSUQKKyAqICAgICAgICAgICAgICAgICAgICBpZiBub25lLgorICogQGJhc2Vfc2l6ZSAg ICAgICAgIFNpemUgb2YgdGhlIGJhc2UgbWlwIGxldmVsIGZvciBhbGwgZmFjZXMuCisgKiBAYXJy YXlfc2l6ZSAgICAgICAgTXVzdCBiZSB6ZXJvIGZvciBub24tRFggaGFyZHdhcmUsIGFuZCBpZiBu b24temVybworICogICAgICAgICAgICAgICAgICAgIHN2Z2EzZF9mbGFncyBtdXN0IGhhdmUgcHJv cGVyIGJpbmQgZmxhZ3Mgc2V0dXAuCisgKgorICogSW5wdXQgYXJndW1lbnQgdG8gdGhlICBEUk1f Vk1XX0dCX1NVUkZBQ0VfQ1JFQVRFIElvY3RsLgorICogUGFydCBvZiBvdXRwdXQgYXJndW1lbnQg Zm9yIHRoZSBEUk1fVk1XX0dCX1NVUkZBQ0VfUkVGIElvY3RsLgorICovCitzdHJ1Y3QgZHJtX3Zt d19nYl9zdXJmYWNlX2NyZWF0ZV9yZXEgeworCV9fdTMyIHN2Z2EzZF9mbGFnczsKKwlfX3UzMiBm b3JtYXQ7CisJX191MzIgbWlwX2xldmVsczsKKwllbnVtIGRybV92bXdfc3VyZmFjZV9mbGFncyBk cm1fc3VyZmFjZV9mbGFnczsKKwlfX3UzMiBtdWx0aXNhbXBsZV9jb3VudDsKKwlfX3UzMiBhdXRv Z2VuX2ZpbHRlcjsKKwlfX3UzMiBidWZmZXJfaGFuZGxlOworCV9fdTMyIGFycmF5X3NpemU7CisJ c3RydWN0IGRybV92bXdfc2l6ZSBiYXNlX3NpemU7Cit9OworCisvKioKKyAqIHN0cnVjdCBkcm1f dm13X2diX3N1cmZhY2VfY3JlYXRlX3JlcAorICoKKyAqIEBoYW5kbGU6ICAgICAgICAgICAgU3Vy ZmFjZSBoYW5kbGUuCisgKiBAYmFja3VwX3NpemU6ICAgICAgIFNpemUgb2YgYmFja3VwIGJ1ZmZl cnMgZm9yIHRoaXMgc3VyZmFjZS4KKyAqIEBidWZmZXJfaGFuZGxlOiAgICAgSGFuZGxlIG9mIGJh Y2t1cCBidWZmZXIuIFNWR0EzRF9JTlZBTElEX0lEIGlmIG5vbmUuCisgKiBAYnVmZmVyX3NpemU6 ICAgICAgIEFjdHVhbCBzaXplIG9mIHRoZSBidWZmZXIgaWRlbnRpZmllZCBieQorICogICAgICAg ICAgICAgICAgICAgICBAYnVmZmVyX2hhbmRsZQorICogQGJ1ZmZlcl9tYXBfaGFuZGxlOiBPZmZz ZXQgaW50byBkZXZpY2UgYWRkcmVzcyBzcGFjZSBmb3IgdGhlIGJ1ZmZlcgorICogICAgICAgICAg ICAgICAgICAgICBpZGVudGlmaWVkIGJ5IEBidWZmZXJfaGFuZGxlLgorICoKKyAqIFBhcnQgb2Yg b3V0cHV0IGFyZ3VtZW50IGZvciB0aGUgRFJNX1ZNV19HQl9TVVJGQUNFX1JFRiBpb2N0bC4KKyAq IE91dHB1dCBhcmd1bWVudCBmb3IgdGhlIERSTV9WTVdfR0JfU1VSRkFDRV9DUkVBVEUgaW9jdGwu CisgKi8KK3N0cnVjdCBkcm1fdm13X2diX3N1cmZhY2VfY3JlYXRlX3JlcCB7CisJX191MzIgaGFu ZGxlOworCV9fdTMyIGJhY2t1cF9zaXplOworCV9fdTMyIGJ1ZmZlcl9oYW5kbGU7CisJX191MzIg YnVmZmVyX3NpemU7CisJX191NjQgYnVmZmVyX21hcF9oYW5kbGU7Cit9OworCisvKioKKyAqIHVu aW9uIGRybV92bXdfZ2Jfc3VyZmFjZV9jcmVhdGVfYXJnCisgKgorICogQHJlcTogSW5wdXQgYXJn dW1lbnQgYXMgZGVzY3JpYmVkIGFib3ZlLgorICogQHJlcDogT3V0cHV0IGFyZ3VtZW50IGFzIGRl c2NyaWJlZCBhYm92ZS4KKyAqCisgKiBBcmd1bWVudCB0byB0aGUgRFJNX1ZNV19HQl9TVVJGQUNF X0NSRUFURSBpb2N0bC4KKyAqLwordW5pb24gZHJtX3Ztd19nYl9zdXJmYWNlX2NyZWF0ZV9hcmcg eworCXN0cnVjdCBkcm1fdm13X2diX3N1cmZhY2VfY3JlYXRlX3JlcCByZXA7CisJc3RydWN0IGRy bV92bXdfZ2Jfc3VyZmFjZV9jcmVhdGVfcmVxIHJlcTsKK307CisKKy8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq LworLyoqCisgKiBEUk1fVk1XX0dCX1NVUkZBQ0VfUkVGIC0gUmVmZXJlbmNlIGEgaG9zdCBzdXJm YWNlLgorICoKKyAqIFB1dHMgYSByZWZlcmVuY2Ugb24gYSBob3N0IHN1cmZhY2Ugd2l0aCBhIGdp dmVuIGhhbmRsZSwgYXMgcHJldmlvdXNseQorICogcmV0dXJuZWQgYnkgdGhlIERSTV9WTVdfR0Jf U1VSRkFDRV9DUkVBVEUgaW9jdGwuCisgKiBBIHJlZmVyZW5jZSB3aWxsIG1ha2Ugc3VyZSB0aGUg c3VyZmFjZSBpc24ndCBkZXN0cm95ZWQgd2hpbGUgd2UgaG9sZAorICogaXQgYW5kIHdpbGwgYWxs b3cgdGhlIGNhbGxpbmcgY2xpZW50IHRvIHVzZSB0aGUgc3VyZmFjZSBoYW5kbGUgaW4KKyAqIHRo ZSBjb21tYW5kIHN0cmVhbS4KKyAqCisgKiBPbiBzdWNjZXNzZnVsIHJldHVybiwgdGhlIElvY3Rs IHJldHVybnMgdGhlIHN1cmZhY2UgaW5mb3JtYXRpb24gZ2l2ZW4KKyAqIHRvIGFuZCByZXR1cm5l ZCBmcm9tIHRoZSBEUk1fVk1XX0dCX1NVUkZBQ0VfQ1JFQVRFIGlvY3RsLgorICovCisKKy8qKgor ICogc3RydWN0IGRybV92bXdfZ2Jfc3VyZmFjZV9yZWZlcmVuY2VfYXJnCisgKgorICogQGNyZXE6 IFRoZSBkYXRhIHVzZWQgYXMgaW5wdXQgd2hlbiB0aGUgc3VyZmFjZSB3YXMgY3JlYXRlZCwgYXMg ZGVzY3JpYmVkCisgKiAgICAgICAgYWJvdmUgYXQgInN0cnVjdCBkcm1fdm13X2diX3N1cmZhY2Vf Y3JlYXRlX3JlcSIKKyAqIEBjcmVwOiBBZGRpdGlvbmFsIGRhdGEgb3V0cHV0IHdoZW4gdGhlIHN1 cmZhY2Ugd2FzIGNyZWF0ZWQsIGFzIGRlc2NyaWJlZAorICogICAgICAgIGFib3ZlIGF0ICJzdHJ1 Y3QgZHJtX3Ztd19nYl9zdXJmYWNlX2NyZWF0ZV9yZXAiCisgKgorICogT3V0cHV0IEFyZ3VtZW50 IHRvIHRoZSBEUk1fVk1XX0dCX1NVUkZBQ0VfUkVGIGlvY3RsLgorICovCitzdHJ1Y3QgZHJtX3Zt d19nYl9zdXJmYWNlX3JlZl9yZXAgeworCXN0cnVjdCBkcm1fdm13X2diX3N1cmZhY2VfY3JlYXRl X3JlcSBjcmVxOworCXN0cnVjdCBkcm1fdm13X2diX3N1cmZhY2VfY3JlYXRlX3JlcCBjcmVwOwor fTsKKworLyoqCisgKiB1bmlvbiBkcm1fdm13X2diX3N1cmZhY2VfcmVmZXJlbmNlX2FyZworICoK KyAqIEByZXE6IElucHV0IGRhdGEgYXMgZGVzY3JpYmVkIGFib3ZlIGF0ICJzdHJ1Y3QgZHJtX3Zt d19zdXJmYWNlX2FyZyIKKyAqIEByZXA6IE91dHB1dCBkYXRhIGFzIGRlc2NyaWJlZCBhYm92ZSBh dCAic3RydWN0IGRybV92bXdfZ2Jfc3VyZmFjZV9yZWZfcmVwIgorICoKKyAqIEFyZ3VtZW50IHRv IHRoZSBEUk1fVk1XX0dCX1NVUkZBQ0VfUkVGIElvY3RsLgorICovCit1bmlvbiBkcm1fdm13X2di X3N1cmZhY2VfcmVmZXJlbmNlX2FyZyB7CisJc3RydWN0IGRybV92bXdfZ2Jfc3VyZmFjZV9yZWZf cmVwIHJlcDsKKwlzdHJ1Y3QgZHJtX3Ztd19zdXJmYWNlX2FyZyByZXE7Cit9OworCisKKy8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLworLyoqCisgKiBEUk1fVk1XX1NZTkNDUFUgLSBTeW5jIGEgRE1BIGJ1ZmZl ciAvIE1PQiBmb3IgQ1BVIGFjY2Vzcy4KKyAqCisgKiBJZGxlcyBhbnkgcHJldmlvdXNseSBzdWJt aXR0ZWQgR1BVIG9wZXJhdGlvbnMgb24gdGhlIGJ1ZmZlciBhbmQKKyAqIGJ5IGRlZmF1bHQgYmxv Y2tzIGNvbW1hbmQgc3VibWlzc2lvbnMgdGhhdCByZWZlcmVuY2UgdGhlIGJ1ZmZlci4KKyAqIElm IHRoZSBmaWxlIGRlc2NyaXB0b3IgdXNlZCB0byBncmFiIGEgYmxvY2tpbmcgQ1BVIHN5bmMgaXMg Y2xvc2VkLCB0aGUKKyAqIGNwdSBzeW5jIGlzIHJlbGVhc2VkLgorICogVGhlIGZsYWdzIGFyZ3Vt ZW50IGluZGljYXRlcyBob3cgdGhlIGdyYWIgLyByZWxlYXNlIG9wZXJhdGlvbiBzaG91bGQgYmUK KyAqIHBlcmZvcm1lZDoKKyAqLworCisvKioKKyAqIGVudW0gZHJtX3Ztd19zeW5jY3B1X2ZsYWdz IC0gU3luY2NwdSBmbGFnczoKKyAqCisgKiBAZHJtX3Ztd19zeW5jY3B1X3JlYWQ6IFN5bmMgZm9y IHJlYWQuIElmIHN5bmMgaXMgZG9uZSBmb3IgcmVhZCBvbmx5LCBpdCdzIGEKKyAqIGhpbnQgdG8g dGhlIGtlcm5lbCB0byBhbGxvdyBjb21tYW5kIHN1Ym1pc3Npb25zIHRoYXQgcmVmZXJlbmNlcyB0 aGUgYnVmZmVyCisgKiBmb3IgcmVhZC1vbmx5LgorICogQGRybV92bXdfc3luY2NwdV93cml0ZTog U3luYyBmb3Igd3JpdGUuIEJsb2NrIGFsbCBjb21tYW5kIHN1Ym1pc3Npb25zCisgKiByZWZlcmVu Y2luZyB0aGlzIGJ1ZmZlci4KKyAqIEBkcm1fdm13X3N5bmNjcHVfZG9udGJsb2NrOiBEb250IHdh aXQgZm9yIEdQVSBpZGxlLCBidXQgcmF0aGVyIHJldHVybgorICogLUVCVVNZIHNob3VsZCB0aGUg YnVmZmVyIGJlIGJ1c3kuCisgKiBAZHJtX3Ztd19zeW5jY3B1X2FsbG93X2NzOiBBbGxvdyBjb21t YW5kIHN1Ym1pc3Npb24gdGhhdCB0b3VjaGVzIHRoZSBidWZmZXIKKyAqIHdoaWxlIHRoZSBidWZm ZXIgaXMgc3luY2VkIGZvciBDUFUuIFRoaXMgaXMgc2ltaWxhciB0byB0aGUgR0VNIGJvIGlkbGUK KyAqIGJlaGF2aW9yLgorICovCitlbnVtIGRybV92bXdfc3luY2NwdV9mbGFncyB7CisJZHJtX3Zt d19zeW5jY3B1X3JlYWQgPSAoMSA8PCAwKSwKKwlkcm1fdm13X3N5bmNjcHVfd3JpdGUgPSAoMSA8 PCAxKSwKKwlkcm1fdm13X3N5bmNjcHVfZG9udGJsb2NrID0gKDEgPDwgMiksCisJZHJtX3Ztd19z eW5jY3B1X2FsbG93X2NzID0gKDEgPDwgMykKK307CisKKy8qKgorICogZW51bSBkcm1fdm13X3N5 bmNjcHVfb3AgLSBTeW5jY3B1IG9wZXJhdGlvbnM6CisgKgorICogQGRybV92bXdfc3luY2NwdV9n cmFiOiAgICBHcmFiIHRoZSBidWZmZXIgZm9yIENQVSBvcGVyYXRpb25zCisgKiBAZHJtX3Ztd19z eW5jY3B1X3JlbGVhc2U6IFJlbGVhc2UgYSBwcmV2aW91cyBncmFiLgorICovCitlbnVtIGRybV92 bXdfc3luY2NwdV9vcCB7CisJZHJtX3Ztd19zeW5jY3B1X2dyYWIsCisJZHJtX3Ztd19zeW5jY3B1 X3JlbGVhc2UKK307CisKKy8qKgorICogc3RydWN0IGRybV92bXdfc3luY2NwdV9hcmcKKyAqCisg KiBAb3A6CQkJICAgICBUaGUgc3luY2NwdSBvcGVyYXRpb24gYXMgZGVzY3JpYmVkIGFib3ZlLgor ICogQGhhbmRsZToJCSAgICAgSGFuZGxlIGlkZW50aWZ5aW5nIHRoZSBidWZmZXIgb2JqZWN0Lgor ICogQGZsYWdzOgkJICAgICBGbGFncyBhcyBkZXNjcmliZWQgYWJvdmUuCisgKi8KK3N0cnVjdCBk cm1fdm13X3N5bmNjcHVfYXJnIHsKKwllbnVtIGRybV92bXdfc3luY2NwdV9vcCBvcDsKKwllbnVt IGRybV92bXdfc3luY2NwdV9mbGFncyBmbGFnczsKKwlfX3UzMiBoYW5kbGU7CisJX191MzIgcGFk NjQ7Cit9OworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKgorICogRFJNX1ZNV19DUkVBVEVfRVhU RU5ERURfQ09OVEVYVCAtIENyZWF0ZSBhIGhvc3QgY29udGV4dC4KKyAqCisgKiBBbGxvY2F0ZXMg YSBkZXZpY2UgdW5pcXVlIGNvbnRleHQgaWQsIGFuZCBxdWV1ZXMgYSBjcmVhdGUgY29udGV4dCBj b21tYW5kCisgKiBmb3IgdGhlIGhvc3QuIERvZXMgbm90IHdhaXQgZm9yIGhvc3QgY29tcGxldGlv bi4KKyAqLworZW51bSBkcm1fdm13X2V4dGVuZGVkX2NvbnRleHQgeworCWRybV92bXdfY29udGV4 dF9sZWdhY3ksCisJZHJtX3Ztd19jb250ZXh0X2R4Cit9OworCisvKioKKyAqIHVuaW9uIGRybV92 bXdfZXh0ZW5kZWRfY29udGV4dF9hcmcKKyAqCisgKiBAcmVxOiBDb250ZXh0IHR5cGUuCisgKiBA cmVwOiBDb250ZXh0IGlkZW50aWZpZXIuCisgKgorICogQXJndW1lbnQgdG8gdGhlIERSTV9WTVdf Q1JFQVRFX0VYVEVOREVEX0NPTlRFWFQgSW9jdGwuCisgKi8KK3VuaW9uIGRybV92bXdfZXh0ZW5k ZWRfY29udGV4dF9hcmcgeworCWVudW0gZHJtX3Ztd19leHRlbmRlZF9jb250ZXh0IHJlcTsKKwlz dHJ1Y3QgZHJtX3Ztd19jb250ZXh0X2FyZyByZXA7Cit9OworCisvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K Ky8qCisgKiBEUk1fVk1XX0hBTkRMRV9DTE9TRSAtIENsb3NlIGEgdXNlci1zcGFjZSBoYW5kbGUg YW5kIHJlbGVhc2UgaXRzCisgKiB1bmRlcmx5aW5nIHJlc291cmNlLgorICoKKyAqIE5vdGUgdGhh dCB0aGlzIGlvY3RsIGlzIG92ZXJsYWlkIG9uIHRoZSBEUk1fVk1XX1VOUkVGX0RNQUJVRiBJb2N0 bC4KKyAqIFRoZSBpb2N0bCBhcmd1bWVudHMgdGhlcmVmb3JlIG5lZWQgdG8gYmUgaWRlbnRpY2Fs IGluIGxheW91dC4KKyAqCisgKi8KKworLyoqCisgKiBzdHJ1Y3QgZHJtX3Ztd19oYW5kbGVfY2xv c2VfYXJnCisgKgorICogQGhhbmRsZTogSGFuZGxlIHRvIGNsb3NlLgorICoKKyAqIEFyZ3VtZW50 IHRvIHRoZSBEUk1fVk1XX0hBTkRMRV9DTE9TRSBJb2N0bC4KKyAqLworc3RydWN0IGRybV92bXdf aGFuZGxlX2Nsb3NlX2FyZyB7CisJX191MzIgaGFuZGxlOworCV9fdTMyIHBhZDY0OworfTsKKwor CisjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKK30KKyNlbmRpZgorCisjZW5kaWYKLS0gCjIuMTUu MAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==