From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50443) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b6wYC-0003O5-Ei for qemu-devel@nongnu.org; Sun, 29 May 2016 04:58:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1b6wYA-0001bs-8v for qemu-devel@nongnu.org; Sun, 29 May 2016 04:58:23 -0400 Received: from mail-yw0-x22d.google.com ([2607:f8b0:4002:c05::22d]:33337) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b6wY9-0001bP-Nj for qemu-devel@nongnu.org; Sun, 29 May 2016 04:58:22 -0400 Received: by mail-yw0-x22d.google.com with SMTP id h19so141114766ywc.0 for ; Sun, 29 May 2016 01:58:21 -0700 (PDT) MIME-Version: 1.0 From: Michael Rolnik Date: Sun, 29 May 2016 01:57:41 -0700 Message-ID: Content-Type: multipart/mixed; boundary=001a11c14bee7760080533f7574e Subject: [Qemu-devel] Initial commit of AVR cores List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org --001a11c14bee7760080533f7574e Content-Type: text/plain; charset=UTF-8 1. Initial commit of AVR 8bit cores support 2. all instruction, except BREAK/DES/SPM/SPMX, are implemented 3. not fully tested yet, however I was able to execute simple code with functions. e.g fibonacci calculation 4. the current patch includes a non real, sample board 5. this patch does not include any peripheral devices. 6. no fuses support yet. PC is set to 0 at reset. -- Best Regards, Michael Rolnik --001a11c14bee7760080533f7574e Content-Type: application/octet-stream; name="0001-Initial-commit-of-AVR-core.patch" Content-Disposition: attachment; filename="0001-Initial-commit-of-AVR-core.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ioscr8560 RnJvbSBmMWE4ZjZhNjlkY2Q1Nzg4YmYyMGNkNGNlZGM5NzQ2MWZjNGYzOTVjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWNoYWVsIFJvbG5payA8cm9sbmlrQGFtYXpvbi5jb20+CkRh dGU6IFR1ZSwgMTAgTWF5IDIwMTYgMDE6MTY6MzkgKzAzMDAKU3ViamVjdDogW1BBVENIXSBJbml0 aWFsIGNvbW1pdCBvZiBBVlIgY29yZQoKU2lnbmVkLW9mZi1ieTogTWljaGFlbCBSb2xuaWsgPG1y b2xuaWtAZ21haWwuY29tPgotLS0KIGFyY2hfaW5pdC5jICAgICAgICAgICAgICAgICAgICAgfCAg ICAyICsKIGNvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgfCAgICA1ICsKIGRlZmF1bHQt Y29uZmlncy9hdnItc29mdG1tdS5tYWsgfCAgICAxICsKIGRpc2FzL01ha2VmaWxlLm9ianMgICAg ICAgICAgICAgfCAgICAxICsKIGRpc2FzL2F2ci5jICAgICAgICAgICAgICAgICAgICAgfCAgIDEw ICsKIGdkYnN0dWIuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgICA0ICstCiBody9NYWtlZmls ZS5vYmpzICAgICAgICAgICAgICAgIHwgICAgMSArCiBody9hdnIvTWFrZWZpbGUub2JqcyAgICAg ICAgICAgIHwgICAgMSArCiBody9hdnIvc2FtcGxlLWlvLmMgICAgICAgICAgICAgIHwgIDI0NiAr KysrCiBody9hdnIvc2FtcGxlLmMgICAgICAgICAgICAgICAgIHwgIDEyMCArKwogaW5jbHVkZS9k aXNhcy9iZmQuaCAgICAgICAgICAgICB8ICAgIDcgKwogaW5jbHVkZS9zeXNlbXUvYXJjaF9pbml0 LmggICAgICB8ICAgIDEgKwogdGFyZ2V0LWF2ci9NYWtlZmlsZS5vYmpzICAgICAgICB8ICAgIDUg KwogdGFyZ2V0LWF2ci9jcHUtcW9tLmggICAgICAgICAgICB8ICAgOTcgKysKIHRhcmdldC1hdnIv Y3B1LmMgICAgICAgICAgICAgICAgfCAgNjM3ICsrKysrKysrKwogdGFyZ2V0LWF2ci9jcHUuaCAg ICAgICAgICAgICAgICB8ICAyMTEgKysrCiB0YXJnZXQtYXZyL2RlY29kZS5jICAgICAgICAgICAg IHwgIDc0MCArKysrKysrKysrKwogdGFyZ2V0LWF2ci9kZWNvZGUuaCAgICAgICAgICAgICB8IDEw MTYgKysrKysrKysrKysrKysrCiB0YXJnZXQtYXZyL2dkYnN0dWIuYyAgICAgICAgICAgIHwgIDEw NSArKwogdGFyZ2V0LWF2ci9oZWxwZXIuYyAgICAgICAgICAgICB8ICAyODAgKysrKwogdGFyZ2V0 LWF2ci9oZWxwZXIuaCAgICAgICAgICAgICB8ICAgMjYgKwogdGFyZ2V0LWF2ci9tYWNoaW5lLmMg ICAgICAgICAgICB8ICAgNTQgKwogdGFyZ2V0LWF2ci9tYWNoaW5lLmggICAgICAgICAgICB8ICAg MjEgKwogdGFyZ2V0LWF2ci90cmFuc2xhdGUuYyAgICAgICAgICB8ICAzNzAgKysrKysrCiB0YXJn ZXQtYXZyL3RyYW5zbGF0ZS5jLmluYyAgICAgIHwgMjcwMSArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKIDI1IGZpbGVzIGNoYW5nZWQsIDY2NTkgaW5zZXJ0aW9ucygrKSwg MyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkZWZhdWx0LWNvbmZpZ3MvYXZyLXNv ZnRtbXUubWFrCiBjcmVhdGUgbW9kZSAxMDA2NDQgZGlzYXMvYXZyLmMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBody9hdnIvTWFrZWZpbGUub2JqcwogY3JlYXRlIG1vZGUgMTAwNjQ0IGh3L2F2ci9zYW1w bGUtaW8uYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGh3L2F2ci9zYW1wbGUuYwogY3JlYXRlIG1vZGUg MTAwNjQ0IHRhcmdldC1hdnIvTWFrZWZpbGUub2JqcwogY3JlYXRlIG1vZGUgMTAwNjQ0IHRhcmdl dC1hdnIvY3B1LXFvbS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGFyZ2V0LWF2ci9jcHUuYwogY3Jl YXRlIG1vZGUgMTAwNjQ0IHRhcmdldC1hdnIvY3B1LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0YXJn ZXQtYXZyL2RlY29kZS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGFyZ2V0LWF2ci9kZWNvZGUuaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IHRhcmdldC1hdnIvZ2Ric3R1Yi5jCiBjcmVhdGUgbW9kZSAxMDA2 NDQgdGFyZ2V0LWF2ci9oZWxwZXIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHRhcmdldC1hdnIvaGVs cGVyLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0YXJnZXQtYXZyL21hY2hpbmUuYwogY3JlYXRlIG1v ZGUgMTAwNjQ0IHRhcmdldC1hdnIvbWFjaGluZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGFyZ2V0 LWF2ci90cmFuc2xhdGUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHRhcmdldC1hdnIvdHJhbnNsYXRl LmMuaW5jCgpkaWZmIC0tZ2l0IGEvYXJjaF9pbml0LmMgYi9hcmNoX2luaXQuYwppbmRleCBmYTA1 OTczLi5iZTZlNmRlIDEwMDY0NAotLS0gYS9hcmNoX2luaXQuYworKysgYi9hcmNoX2luaXQuYwpA QCAtODAsNiArODAsOCBAQCBpbnQgZ3JhcGhpY19kZXB0aCA9IDMyOwogI2RlZmluZSBRRU1VX0FS Q0ggUUVNVV9BUkNIX1VOSUNPUkUzMgogI2VsaWYgZGVmaW5lZChUQVJHRVRfVFJJQ09SRSkKICNk ZWZpbmUgUUVNVV9BUkNIIFFFTVVfQVJDSF9UUklDT1JFCisjZWxpZiBkZWZpbmVkKFRBUkdFVF9B VlIpCisjZGVmaW5lIFFFTVVfQVJDSCBRRU1VX0FSQ0hfQVZSCiAjZW5kaWYKIAogY29uc3QgdWlu dDMyX3QgYXJjaF90eXBlID0gUUVNVV9BUkNIOwpkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29u ZmlndXJlCmluZGV4IGI1YWFiNzIuLjkwYWYzOTkgMTAwNzU1Ci0tLSBhL2NvbmZpZ3VyZQorKysg Yi9jb25maWd1cmUKQEAgLTU2MzAsNiArNTYzMCw4IEBAIGNhc2UgIiR0YXJnZXRfbmFtZSIgaW4K ICAgeDg2XzY0KQogICAgIFRBUkdFVF9CQVNFX0FSQ0g9aTM4NgogICA7OworICBhdnIpCisgIDs7 CiAgIGFscGhhKQogICA7OwogICBhcm18YXJtZWIpCkBAIC01ODI2LDYgKzU4MjgsOSBAQCBkaXNh c19jb25maWcoKSB7CiAKIGZvciBpIGluICRBUkNIICRUQVJHRVRfQkFTRV9BUkNIIDsgZG8KICAg Y2FzZSAiJGkiIGluCisgIGF2cikKKyAgICBkaXNhc19jb25maWcgIkFWUiIKKyAgOzsKICAgYWxw aGEpCiAgICAgZGlzYXNfY29uZmlnICJBTFBIQSIKICAgOzsKZGlmZiAtLWdpdCBhL2RlZmF1bHQt Y29uZmlncy9hdnItc29mdG1tdS5tYWsgYi9kZWZhdWx0LWNvbmZpZ3MvYXZyLXNvZnRtbXUubWFr Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhOTRhYWQKLS0tIC9kZXYvbnVs bAorKysgYi9kZWZhdWx0LWNvbmZpZ3MvYXZyLXNvZnRtbXUubWFrCkBAIC0wLDAgKzEgQEAKKyMg RGVmYXVsdCBjb25maWd1cmF0aW9uIGZvciBhdnItc29mdG1tdQpkaWZmIC0tZ2l0IGEvZGlzYXMv TWFrZWZpbGUub2JqcyBiL2Rpc2FzL01ha2VmaWxlLm9ianMKaW5kZXggYWJlYmE4NC4uMjE4ZTQz NCAxMDA2NDQKLS0tIGEvZGlzYXMvTWFrZWZpbGUub2JqcworKysgYi9kaXNhcy9NYWtlZmlsZS5v YmpzCkBAIC0yMSw2ICsyMSw3IEBAIGNvbW1vbi1vYmotJChDT05GSUdfUzM5MF9ESVMpICs9IHMz OTAubwogY29tbW9uLW9iai0kKENPTkZJR19TSDRfRElTKSArPSBzaDQubwogY29tbW9uLW9iai0k KENPTkZJR19TUEFSQ19ESVMpICs9IHNwYXJjLm8KIGNvbW1vbi1vYmotJChDT05GSUdfTE0zMl9E SVMpICs9IGxtMzIubworY29tbW9uLW9iai0kKENPTkZJR19BVlJfRElTKSArPSBhdnIubwogCiAj IFRPRE86IEFzIGxvbmcgYXMgdGhlIFRDRyBpbnRlcnByZXRlciBhbmQgaXRzIGdlbmVyYXRlZCBj b2RlIGRlcGVuZAogIyBvbiB0aGUgUUVNVSB0YXJnZXQsIHdlIGNhbm5vdCBjb21waWxlIHRoZSBk aXNhc3NlbWJsZXIgaGVyZS4KZGlmZiAtLWdpdCBhL2Rpc2FzL2F2ci5jIGIvZGlzYXMvYXZyLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjkxNmU3MgotLS0gL2Rldi9udWxs CisrKyBiL2Rpc2FzL2F2ci5jCkBAIC0wLDAgKzEsMTAgQEAKKyNpbmNsdWRlICJxZW11L29zZGVw LmgiCisjaW5jbHVkZSAicWVtdS1jb21tb24uaCIKKyNpbmNsdWRlICJkaXNhcy9iZmQuaCIKKwor aW50IHByaW50X2luc25fYXZyKGJmZF92bWEgYWRkciwgZGlzYXNzZW1ibGVfaW5mbyAqaW5mbykK K3sKKyAgICBpbnQgbGVuZ3RoICA9IDA7OworICAgIC8qICBUT0RPICAgICovCisgICAgcmV0dXJu IGxlbmd0aDsKK30KZGlmZiAtLWdpdCBhL2dkYnN0dWIuYyBiL2dkYnN0dWIuYwppbmRleCBiOWUz NzEwLi4yMWU4OGI4IDEwMDY0NAotLS0gYS9nZGJzdHViLmMKKysrIGIvZ2Ric3R1Yi5jCkBAIC0y NzAsOCArMjcwLDYgQEAgc3RhdGljIGludCBnZGJfc2lnbmFsX3RvX3RhcmdldCAoaW50IHNpZykK ICAgICAgICAgcmV0dXJuIC0xOwogfQogCi0vLyNkZWZpbmUgREVCVUdfR0RCCi0KIHR5cGVkZWYg c3RydWN0IEdEQlJlZ2lzdGVyU3RhdGUgewogICAgIGludCBiYXNlX3JlZzsKICAgICBpbnQgbnVt X3JlZ3M7CkBAIC0zMTMsNyArMzExLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgR0RCU3RhdGUgewogLyog QnkgZGVmYXVsdCB1c2Ugbm8gSVJRcyBhbmQgbm8gdGltZXJzIHdoaWxlIHNpbmdsZSBzdGVwcGlu ZyBzbyBhcyB0bwogICogbWFrZSBzaW5nbGUgc3RlcHBpbmcgbGlrZSBhbiBJQ0UgSFcgc3RlcC4K ICAqLwotc3RhdGljIGludCBzc3RlcF9mbGFncyA9IFNTVEVQX0VOQUJMRXxTU1RFUF9OT0lSUXxT U1RFUF9OT1RJTUVSOworc3RhdGljIGludCBzc3RlcF9mbGFncyA9IFNTVEVQX0VOQUJMRSB8IFNT VEVQX05PSVJRIHwgU1NURVBfTk9USU1FUjsKIAogc3RhdGljIEdEQlN0YXRlICpnZGJzZXJ2ZXJf c3RhdGU7CiAKZGlmZiAtLWdpdCBhL2h3L01ha2VmaWxlLm9ianMgYi9ody9NYWtlZmlsZS5vYmpz CmluZGV4IDRhMDdlZDQuLjI2MmNhMTUgMTAwNjQ0Ci0tLSBhL2h3L01ha2VmaWxlLm9ianMKKysr IGIvaHcvTWFrZWZpbGUub2JqcwpAQCAtMzMsNiArMzMsNyBAQCBkZXZpY2VzLWRpcnMtJChDT05G SUdfU09GVE1NVSkgKz0gd2F0Y2hkb2cvCiBkZXZpY2VzLWRpcnMtJChDT05GSUdfU09GVE1NVSkg Kz0geGVuLwogZGV2aWNlcy1kaXJzLSQoQ09ORklHX01FTV9IT1RQTFVHKSArPSBtZW0vCiBkZXZp Y2VzLWRpcnMtJChDT05GSUdfU01CSU9TKSArPSBzbWJpb3MvCitkZXZpY2VzLWRpcnMtJChDT05G SUdfU09GVE1NVSkgKz0gYXZyLwogZGV2aWNlcy1kaXJzLXkgKz0gY29yZS8KIGNvbW1vbi1vYmot eSArPSAkKGRldmljZXMtZGlycy15KQogb2JqLXkgKz0gJChkZXZpY2VzLWRpcnMteSkKZGlmZiAt LWdpdCBhL2h3L2F2ci9NYWtlZmlsZS5vYmpzIGIvaHcvYXZyL01ha2VmaWxlLm9ianMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWY2YmUyZgotLS0gL2Rldi9udWxsCisrKyBi L2h3L2F2ci9NYWtlZmlsZS5vYmpzCkBAIC0wLDAgKzEgQEAKK29iai15ICAgKz0gc2FtcGxlLm8g c2FtcGxlLWlvLm8KZGlmZiAtLWdpdCBhL2h3L2F2ci9zYW1wbGUtaW8uYyBiL2h3L2F2ci9zYW1w bGUtaW8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzNjNzJmCi0tLSAv ZGV2L251bGwKKysrIGIvaHcvYXZyL3NhbXBsZS1pby5jCkBAIC0wLDAgKzEsMjQ2IEBACisvKgor ICogIFFFTVUgQVZSIENQVQorICoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTYgTWljaGFlbCBSb2xu aWsKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIuMSBvZiB0aGUg TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAg VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNl IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHNlZQorICogIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvbGdwbC0yLjEuaHRtbD4KKyAqLworCisjaW5jbHVkZSAicWVtdS9vc2Rl cC5oIgorI2luY2x1ZGUgInFhcGkvZXJyb3IuaCIKKyNpbmNsdWRlICJxZW11LWNvbW1vbi5oIgor I2luY2x1ZGUgImNwdS5oIgorI2luY2x1ZGUgImluY2x1ZGUvaHcvc3lzYnVzLmgiCisKKyNkZWZp bmUgVFlQRV9TQU1QTEVJTyAgICJTYW1wbGVJTyIKKyNkZWZpbmUgU0FNUExFSU8ob2JqKSAgIE9C SkVDVF9DSEVDSyhTQU1QTEVJT1N0YXRlLCAob2JqKSwgVFlQRV9TQU1QTEVJTykKKworI2lmbmRl ZiBERUJVR19TQU1QTEVJTworI2RlZmluZSBERUJVR19TQU1QTEVJTyAxCisjZW5kaWYKKworI2Rl ZmluZSBEUFJJTlRGKGZtdCwgYXJncy4uLikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAo REVCVUdfU0FNUExFSU8pIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJbJXNdJXM6ICIgZm10ICwg VFlQRV9TQU1QTEVJTywgX19mdW5jX18sICMjYXJncyk7XAorICAgICAgICB9ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHdoaWxlICgwKQorCisjZGVmaW5lIEFWUl9J T19DUFVfUkVHU19TSVpFICAgIDB4MDAyMAorI2RlZmluZSBBVlJfSU9fQ1BVX0lPX1NJWkUgICAg ICAweDAwNDAKKyNkZWZpbmUgQVZSX0lPX0VYVEVSTl9JT19TSVpFICAgMHgwMGEwCisjZGVmaW5l IEFWUl9JT19TSVpFICAgICAgICAgICAgIChBVlJfSU9fQ1BVX1JFR1NfU0laRSAgIFwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBBVlJfSU9fQ1BVX0lPX1NJWkUgICAgXAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIEFWUl9JT19FWFRFUk5fSU9fU0laRSkKKwor I2RlZmluZSBBVlJfSU9fQ1BVX1JFR1NfQkFTRSAgICAweDAwMDAKKyNkZWZpbmUgQVZSX0lPX0NQ VV9JT19CQVNFICAgICAgKEFWUl9JT19DUFVfUkVHU19CQVNFICAgXAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArIEFWUl9JT19DUFVfUkVHU19TSVpFKQorI2RlZmluZSBBVlJfSU9f RVhURVJOX0lPX0JBU0UgICAoQVZSX0lPX0NQVV9JT19CQVNFICAgICBcCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsgQVZSX0lPX0NQVV9JT19TSVpFKQorCisKK3R5cGVkZWYgc3Ry dWN0IFNBTVBMRUlPU3RhdGUgeworICAgIFN5c0J1c0RldmljZSAgICBwYXJlbnQ7CisKKyAgICBN ZW1vcnlSZWdpb24gICAgaW9tZW07CisKKyAgICBBVlJDUFUgICAgICAgICAqY3B1OworCisgICAg dWludDhfdCAgICAgICAgIGlvWzB4NDBdOworICAgIHVpbnQ4X3QgICAgICAgICBleGlvWzB4YTBd OworfSBTQU1QTEVJT1N0YXRlOworCitzdGF0aWMgdWludDY0X3Qgc2FtcGxlX2lvX3JlYWQoCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgICAgICAgICAgICAgICAgICAgKm9w YXF1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHdhZGRyICAgICAgICAgICAg ICAgICAgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCAg ICAgICAgICAgICAgICBzaXplKTsKK3N0YXRpYyB2b2lkICAgICBzYW1wbGVfaW9fd3JpdGUodm9p ZCAgICAgICAgICAgICAgICAgICAqb3BhcXVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBod2FkZHIgICAgICAgICAgICAgICAgICBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVpbnQ2NF90ICAgICAgICAgICAgICAgIHZhbHVlLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCAgICAgICAgICAgICAgICBzaXplKTsKK3N0YXRp YyBpbnQgICAgICBzYW1wbGVfaW9faW5pdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgRGV2aWNlU3RhdGUgICAgICAgICAgICAqc2JkKTsKK3N0YXRpYyB2b2lkICAgICBzYW1wbGVf aW9fY2xhc3NfaW5pdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0Q2xh c3MgICAgICAgICAgICAqa2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZv aWQgICAgICAgICAgICAgICAgICAgKmRhdGEpOworc3RhdGljIHZvaWQgICAgIHNhbXBsZV9pb19y ZWdpc3Rlcl90eXBlcyh2b2lkKTsKKworc3RhdGljIHZvaWQgICAgIHdyaXRlX1J4KAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBDUFVBVlJTdGF0ZSAgICAgICAgICAgICplbnYsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgIGlu c3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgICAgICAgICAgICAg ICAgIGRhdGEpOworc3RhdGljIHVpbnQ4X3QgIHJlYWRfUngoCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIENQVUFWUlN0YXRlICAgICAgICAgICAgKmVudiwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgaW5zdCk7CisKK3N0YXRp YyBjb25zdAorTWVtb3J5UmVnaW9uT3BzICAgICBzYW1wbGVfaW9fb3BzID0geworICAgIC5yZWFk ICAgICAgID0gc2FtcGxlX2lvX3JlYWQsCisgICAgLndyaXRlICAgICAgPSBzYW1wbGVfaW9fd3Jp dGUsCisgICAgLmVuZGlhbm5lc3MgPSBERVZJQ0VfTkFUSVZFX0VORElBTiwKK307CisKK3N0YXRp YworUHJvcGVydHkgICAgICAgICAgICBzYW1wbGVfaW9fcHJvcGVydGllc1tdID0geworICAgIERF RklORV9QUk9QX0VORF9PRl9MSVNUKCksCit9Oworc3RhdGljIGNvbnN0CitWTVN0YXRlRGVzY3Jp cHRpb24gIHNhbXBsZV9pb192bXN0YXRlID0geworICAgIC5uYW1lICAgICAgICAgICAgICAgPSBU WVBFX1NBTVBMRUlPLAorICAgIC52ZXJzaW9uX2lkICAgICAgICAgPSAxLAorICAgIC5taW5pbXVt X3ZlcnNpb25faWQgPSAxLAorICAgIC5maWVsZHMgPSAoVk1TdGF0ZUZpZWxkW10pCisgICAgewor ICAgICAgICBWTVNUQVRFX0VORF9PRl9MSVNUKCkKKyAgICB9Cit9OworCit2b2lkICAgICAgICB3 cml0ZV9SeCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BVQVZSU3RhdGUgICAg ICAgICAgICAqZW52LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAg ICAgICAgICAgICAgICBpbnN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50 OF90ICAgICAgICAgICAgICAgICBkYXRhKQoreworICAgIGVudi0+cltpbnN0XSAgPSBkYXRhOwor fQordWludDhfdCAgICAgcmVhZF9SeCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Q1BVQVZSU3RhdGUgICAgICAgICAgICAqZW52LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQgICAgICAgICAgICAgICAgICAgICBpbnN0KQoreworICAgIHJldHVybiAgZW52LT5y W2luc3RdOworfQorCitzdGF0aWMKK3ZvaWQgICAgc2FtcGxlX2lvX3Jlc2V0KERldmljZVN0YXRl ICpkZXYpCit7CisgICAgRFBSSU5URigiXG4iKTsKK30KKworc3RhdGljCit1aW50NjRfdCAgICBz YW1wbGVfaW9fcmVhZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAgICAg ICAgICAgICAgICAgICAqb3BhcXVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo d2FkZHIgICAgICAgICAgICAgICAgICBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkICAgICAgICAgICAgICAgIHNpemUpCit7CisgICAgU0FNUExFSU9TdGF0 ZSAgKnMgICA9IFNBTVBMRUlPKG9wYXF1ZSk7CisgICAgQVZSQ1BVICAgICAgICAgKmNwdSA9IHMt PmNwdTsKKyAgICBDUFVBVlJTdGF0ZSAgICAqZW52ID0gJmNwdS0+ZW52OworICAgIHVpbnQ2NF90 ICAgICAgICByZXMgPSAwOworCisgICAgYXNzZXJ0KHNpemUgPT0gMSk7CisKKyAgICBpZiAoQVZS X0lPX0NQVV9SRUdTX0JBU0UgPD0gb2Zmc2V0CisgICAgICAgICYmIG9mZnNldCA8IChBVlJfSU9f Q1BVX1JFR1NfQkFTRSArIEFWUl9JT19DUFVfUkVHU19TSVpFKSkgeworICAgICAgICByZXMgPSBy ZWFkX1J4KGVudiwgb2Zmc2V0IC0gQVZSX0lPX0NQVV9SRUdTX0JBU0UpOworICAgIH0gZWxzZSBp ZiAoQVZSX0lPX0NQVV9JT19CQVNFIDw9IG9mZnNldAorICAgICAgICAgICAgJiYgb2Zmc2V0IDwg KEFWUl9JT19DUFVfSU9fQkFTRSArIEFWUl9JT19DUFVfSU9fU0laRSkpIHsKKyAgICAgICAgLyog IFRPRE86IGRvIElPIHJlbGF0ZWQgc3R1ZmYgaGVyZSAgKi8KKyAgICAgICAgcmVzID0gcy0+aW9b b2Zmc2V0IC0gQVZSX0lPX0NQVV9JT19CQVNFXTsKKyAgICB9IGVsc2UgaWYgKEFWUl9JT19FWFRF Uk5fSU9fQkFTRSA8PSBvZmZzZXQKKyAgICAgICAgICAgICYmIG9mZnNldCA8IChBVlJfSU9fRVhU RVJOX0lPX0JBU0UgKyBBVlJfSU9fRVhURVJOX0lPX1NJWkUpKSB7CisgICAgICAgIC8qICBUT0RP OiBkbyBJTyByZWxhdGVkIHN0dWZmIGhlcmUgICovCisgICAgICAgIHJlcyA9IHMtPmlvW29mZnNl dCAtIEFWUl9JT19FWFRFUk5fSU9fQkFTRV07CisgICAgfSBlbHNlIHsKKyAgICAgICAgZ19hc3Nl cnRfbm90X3JlYWNoZWQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gIHJlczsKK30KKworc3RhdGlj Cit2b2lkICAgICAgICBzYW1wbGVfaW9fd3JpdGUoCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHZvaWQgICAgICAgICAgICAgICAgICAgKm9wYXF1ZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaHdhZGRyICAgICAgICAgICAgICAgICAgb2Zmc2V0LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCAgICAgICAgICAgICAgICB2YWx1ZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgICAgICAgICAgICAgICAgc2l6 ZSkKK3sKKyAgICBTQU1QTEVJT1N0YXRlICAqcyAgID0gU0FNUExFSU8ob3BhcXVlKTsKKyAgICBB VlJDUFUgICAgICAgICAqY3B1ID0gcy0+Y3B1OworICAgIENQVUFWUlN0YXRlICAgICplbnYgPSAm Y3B1LT5lbnY7CisKKyAgICBhc3NlcnQoc2l6ZSA9PSAxKTsKKworICAgIGlmIChBVlJfSU9fQ1BV X1JFR1NfQkFTRSA8PSBvZmZzZXQKKyAgICAgICAgJiYgb2Zmc2V0IDwgKEFWUl9JT19DUFVfUkVH U19CQVNFICsgQVZSX0lPX0NQVV9SRUdTX1NJWkUpKSB7CisgICAgICAgIHJldHVybiAgd3JpdGVf UngoZW52LCBvZmZzZXQgLSBBVlJfSU9fQ1BVX1JFR1NfQkFTRSwgdmFsdWUpOworICAgIH0gZWxz ZSBpZiAoQVZSX0lPX0NQVV9JT19CQVNFIDw9IG9mZnNldAorICAgICAgICAgICAgJiYgb2Zmc2V0 IDwgKEFWUl9JT19DUFVfSU9fQkFTRSArIEFWUl9JT19DUFVfSU9fU0laRSkpIHsKKyAgICAgICAg LyogIFRPRE86IGRvIElPIHJlbGF0ZWQgc3R1ZmYgaGVyZSAgKi8KKyAgICAgICAgcy0+aW9bb2Zm c2V0IC0gQVZSX0lPX0NQVV9JT19CQVNFXSAgPSB2YWx1ZTsKKyAgICB9IGVsc2UgaWYgKEFWUl9J T19FWFRFUk5fSU9fQkFTRSA8PSBvZmZzZXQKKyAgICAgICAgICAgICYmIG9mZnNldCA8IChBVlJf SU9fRVhURVJOX0lPX0JBU0UgKyBBVlJfSU9fRVhURVJOX0lPX1NJWkUpKSB7CisgICAgICAgIC8q ICBUT0RPOiBkbyBJTyByZWxhdGVkIHN0dWZmIGhlcmUgICovCisgICAgICAgIHMtPmlvW29mZnNl dCAtIEFWUl9JT19FWFRFUk5fSU9fQkFTRV0gICA9IHZhbHVlOworICAgIH0gZWxzZSB7CisgICAg ICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkKCk7CisgICAgfQorfQorCitzdGF0aWMKK2ludCAgICAg ICAgIHNhbXBsZV9pb19pbml0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZp Y2VTdGF0ZSAgICAgICAgICAgICpkZXYpCit7CisgICAgU3lzQnVzRGV2aWNlICAgKnNiZCA9IFNZ U19CVVNfREVWSUNFKGRldik7CisgICAgU0FNUExFSU9TdGF0ZSAgKnMgICA9IFNBTVBMRUlPKGRl dik7CisKKyAgICBhc3NlcnQoQVZSX0lPX1NJWkUgPD0gVEFSR0VUX1BBR0VfU0laRSk7CisKKyAg ICBzLT5jcHUgID0gQVZSX0NQVShxZW11X2dldF9jcHUoMCkpOworCisgICAgbWVtb3J5X3JlZ2lv bl9pbml0X2lvKAorICAgICAgICAgICAgJnMtPmlvbWVtLAorICAgICAgICAgICAgT0JKRUNUKHMp LAorICAgICAgICAgICAgJnNhbXBsZV9pb19vcHMsCisgICAgICAgICAgICBzLAorICAgICAgICAg ICAgVFlQRV9TQU1QTEVJTywKKyAgICAgICAgICAgIEFWUl9JT19TSVpFKTsKKyAgICBzeXNidXNf aW5pdF9tbWlvKHNiZCwgJnMtPmlvbWVtKTsKKworICAgIHJldHVybiAgMDsKK30KKworc3RhdGlj Cit2b2lkICAgICAgICBzYW1wbGVfaW9fY2xhc3NfaW5pdCgKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgT2JqZWN0Q2xhc3MgICAgICAgICAgICAqa2xhc3MsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHZvaWQgICAgICAgICAgICAgICAgICAgKmRhdGEpCit7CisgICAg RGV2aWNlQ2xhc3MgICAgKmRjICA9IERFVklDRV9DTEFTUyhrbGFzcyk7CisKKyAgICBEUFJJTlRG KCJcbiIpOworCisgICAgZGMtPmluaXQgICAgPSBzYW1wbGVfaW9faW5pdDsKKyAgICBkYy0+cmVz ZXQgICA9IHNhbXBsZV9pb19yZXNldDsKKyAgICBkYy0+ZGVzYyAgICA9ICJhdDkwIGlvIHJlZ3Mi OworICAgIGRjLT52bXNkICAgID0gJnNhbXBsZV9pb192bXN0YXRlOworICAgIGRjLT5wcm9wcyAg ID0gc2FtcGxlX2lvX3Byb3BlcnRpZXM7Cit9CisKK3N0YXRpYyBjb25zdAorVHlwZUluZm8gICAg c2FtcGxlX2lvX2luZm8gPSB7CisgICAgLm5hbWUgICAgICAgICAgID0gVFlQRV9TQU1QTEVJTywK KyAgICAucGFyZW50ICAgICAgICAgPSBUWVBFX1NZU19CVVNfREVWSUNFLAorICAgIC5pbnN0YW5j ZV9zaXplICA9IHNpemVvZihTQU1QTEVJT1N0YXRlKSwKKyAgICAuY2xhc3NfaW5pdCAgICAgPSBz YW1wbGVfaW9fY2xhc3NfaW5pdCwKK307CisKK3N0YXRpYwordm9pZCAgICAgICAgc2FtcGxlX2lv X3JlZ2lzdGVyX3R5cGVzKHZvaWQpCit7CisgICAgRFBSSU5URigiXG4iKTsKKyAgICB0eXBlX3Jl Z2lzdGVyX3N0YXRpYygmc2FtcGxlX2lvX2luZm8pOworfQorCit0eXBlX2luaXQoc2FtcGxlX2lv X3JlZ2lzdGVyX3R5cGVzKQpkaWZmIC0tZ2l0IGEvaHcvYXZyL3NhbXBsZS5jIGIvaHcvYXZyL3Nh bXBsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4YjlkNWMKLS0tIC9k ZXYvbnVsbAorKysgYi9ody9hdnIvc2FtcGxlLmMKQEAgLTAsMCArMSwxMjAgQEAKKy8qCisgKiBR RU1VIEFWUiBDUFUKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTYgTWljaGFlbCBSb2xuaWsKKyAq CisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBv ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlz IGxpYnJhcnk7IGlmIG5vdCwgc2VlCisgKiA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xn cGwtMi4xLmh0bWw+CisgKi8KKworI2luY2x1ZGUgInFlbXUvb3NkZXAuaCIKKyNpbmNsdWRlICJx YXBpL2Vycm9yLmgiCisjaW5jbHVkZSAicWVtdS1jb21tb24uaCIKKyNpbmNsdWRlICJjcHUuaCIK KyNpbmNsdWRlICJody9ody5oIgorI2luY2x1ZGUgInN5c2VtdS9zeXNlbXUuaCIKKyNpbmNsdWRl ICJzeXNlbXUvcXRlc3QuaCIKKyNpbmNsdWRlICJ1aS9jb25zb2xlLmgiCisjaW5jbHVkZSAiaHcv Ym9hcmRzLmgiCisjaW5jbHVkZSAiaHcvZGV2aWNlcy5oIgorI2luY2x1ZGUgImh3L2xvYWRlci5o IgorI2luY2x1ZGUgInFlbXUvZXJyb3ItcmVwb3J0LmgiCisjaW5jbHVkZSAiZXhlYy9hZGRyZXNz LXNwYWNlcy5oIgorI2luY2x1ZGUgImluY2x1ZGUvaHcvc3lzYnVzLmgiCisKKyNkZWZpbmUgVklS VF9CQVNFX0ZMQVNIICAgICAweDAwMDAwMDAwCisjZGVmaW5lIFZJUlRfQkFTRV9JT1JFRyAgICAg MHgwMDAwMDAwMAorI2RlZmluZSBWSVJUX0JBU0VfSVNSQU0gICAgIDB4MDAwMDAxMDAKKyNkZWZp bmUgVklSVF9CQVNFX0VYTUVNICAgICAweDAwMDAxMTAwCisjZGVmaW5lIFZJUlRfQkFTRV9FRVBS T00gICAgMHgwMDAwMDAwMAorCisjZGVmaW5lIFZJUlRfQkFTRV9CT09UICAgICAgMHgwMDAxZTAw MAorI2RlZmluZSBQSFlTX0JBU0VfQk9PVCAgICAgIChQSFlTX0JBU0VfRkxBU0ggKyBWSVJUX0JB U0VfQk9PVCkKKworI2RlZmluZSBTSVpFX0ZMQVNIICAgICAgICAgIDB4MDAwMjAwMDAKKyNkZWZp bmUgU0laRV9JT1JFRyAgICAgICAgICAweDAwMDAwMTAwCisjZGVmaW5lIFNJWkVfSVNSQU0gICAg ICAgICAgMHgwMDAwMTAwMAorI2RlZmluZSBTSVpFX0VYTUVNICAgICAgICAgIDB4MDAwMTAwMDAK KyNkZWZpbmUgU0laRV9FRVBST00gICAgICAgICAweDAwMDAxMDAwCisKKyNkZWZpbmUgUEhZU19C QVNFX0ZMQVNIICAgICAoUEhZU19DT0RFX0JBU0UpCisjZGVmaW5lIFBIWVNfQkFTRV9JT1JFRyAg ICAgKFBIWVNfREFUQV9CQVNFKQorI2RlZmluZSBQSFlTX0JBU0VfSVNSQU0gICAgIChQSFlTX0JB U0VfSU9SRUcgKyBTSVpFX0lPUkVHKQorI2RlZmluZSBQSFlTX0JBU0VfRVhNRU0gICAgIChQSFlT X0JBU0VfSVNSQU0gKyBTSVpFX0lTUkFNKQorI2RlZmluZSBQSFlTX0JBU0VfRUVQUk9NICAgIChQ SFlTX0JBU0VfRVhNRU0gKyBTSVpFX0VYTUVNKQorCisKK3N0YXRpYwordm9pZCAgICBzYW1wbGVf aW5pdChNYWNoaW5lU3RhdGUgKm1hY2hpbmUpCit7CisgICAgTWVtb3J5UmVnaW9uICAgKmFkZHJl c3Nfc3BhY2VfbWVtICAgPSBnZXRfc3lzdGVtX21lbW9yeSgpOworCisgICAgTWVtb3J5UmVnaW9u ICAgKmZsYXNoOworICAgIE1lbW9yeVJlZ2lvbiAgICppc3JhbTsKKyAgICBNZW1vcnlSZWdpb24g ICAqZXhtZW07CisKKyAgICBBVlJDUFUgICAgICAgICAqY3B1X2F2cjsKKyAgICBEZXZpY2VTdGF0 ZSAgICAqaW87CisgICAgU3lzQnVzRGV2aWNlICAgKmJ1czsKKworICAgIGZsYXNoICAgPSBnX25l dyhNZW1vcnlSZWdpb24sIDEpOworICAgIGlzcmFtICAgPSBnX25ldyhNZW1vcnlSZWdpb24sIDEp OworICAgIGV4bWVtICAgPSBnX25ldyhNZW1vcnlSZWdpb24sIDEpOworCisgICAgY3B1X2F2ciA9 IGNwdV9hdnJfaW5pdCgiYXZyNSIpOworICAgIGlvICAgICAgPSBxZGV2X2NyZWF0ZShOVUxMLCAi U2FtcGxlSU8iKTsKKyAgICBidXMgICAgID0gU1lTX0JVU19ERVZJQ0UoaW8pOworICAgIHFkZXZf aW5pdF9ub2ZhaWwoaW8pOworCisgICAgbWVtb3J5X3JlZ2lvbl9pbml0X3JhbShmbGFzaCwgTlVM TCwgImZsYXNoIiwgU0laRV9GTEFTSCwgJmVycm9yX2ZhdGFsKTsKKyAgICBtZW1vcnlfcmVnaW9u X2luaXRfcmFtKGlzcmFtLCBOVUxMLCAiaXNyYW0iLCBTSVpFX0lTUkFNLCAmZXJyb3JfZmF0YWwp OworICAgIG1lbW9yeV9yZWdpb25faW5pdF9yYW0oZXhtZW0sIE5VTEwsICJleG1lbSIsIFNJWkVf RVhNRU0sICZlcnJvcl9mYXRhbCk7CisKKyAgICBtZW1vcnlfcmVnaW9uX2FkZF9zdWJyZWdpb24o YWRkcmVzc19zcGFjZV9tZW0sIFBIWVNfQkFTRV9GTEFTSCwgZmxhc2gpOworICAgIG1lbW9yeV9y ZWdpb25fYWRkX3N1YnJlZ2lvbihhZGRyZXNzX3NwYWNlX21lbSwgUEhZU19CQVNFX0lTUkFNLCBp c3JhbSk7CisgICAgbWVtb3J5X3JlZ2lvbl9hZGRfc3VicmVnaW9uKGFkZHJlc3Nfc3BhY2VfbWVt LCBQSFlTX0JBU0VfRVhNRU0sIGV4bWVtKTsKKworICAgIHZtc3RhdGVfcmVnaXN0ZXJfcmFtX2ds b2JhbChmbGFzaCk7CisgICAgdm1zdGF0ZV9yZWdpc3Rlcl9yYW1fZ2xvYmFsKGlzcmFtKTsKKyAg ICB2bXN0YXRlX3JlZ2lzdGVyX3JhbV9nbG9iYWwoZXhtZW0pOworCisgICAgbWVtb3J5X3JlZ2lv bl9zZXRfcmVhZG9ubHkoZmxhc2gsIHRydWUpOworCisgICAgY2hhciBjb25zdCAqZmlybXdhcmUg ICAgPSBOVUxMOworICAgIGNoYXIgY29uc3QgKmZpbGVuYW1lOworCisgICAgaWYgKG1hY2hpbmUt PmZpcm13YXJlKSB7CisgICAgICAgIGZpcm13YXJlICAgID0gbWFjaGluZS0+ZmlybXdhcmU7Cisg ICAgfQorCisgICAgZmlsZW5hbWUgICAgPSBxZW11X2ZpbmRfZmlsZShRRU1VX0ZJTEVfVFlQRV9C SU9TLCBmaXJtd2FyZSk7CisgICAgaWYgKCFmaWxlbmFtZSkgeworICAgICAgICBlcnJvcl9yZXBv cnQoIkNvdWxkIG5vdCBmaW5kIGZsYXNoIGltYWdlIGZpbGUgJyVzJyIsIGZpcm13YXJlKTsKKyAg ICAgICAgZXhpdCgxKTsKKyAgICB9CisKKyAgICBsb2FkX2ltYWdlX3RhcmdwaHlzKGZpbGVuYW1l LCAgIFBIWVNfQkFTRV9GTEFTSCwgU0laRV9GTEFTSCk7CisKKyAgICBzeXNidXNfbW1pb19tYXAo YnVzLCAwLCBQSFlTX0JBU0VfSU9SRUcpOworfQorCitzdGF0aWMKK3ZvaWQgICAgc2FtcGxlX21h Y2hpbmVfaW5pdChNYWNoaW5lQ2xhc3MgKm1jKQoreworICAgIG1jLT5kZXNjICAgICAgICA9ICJz YW1wbGUiOworICAgIG1jLT5pbml0ICAgICAgICA9IHNhbXBsZV9pbml0OworICAgIG1jLT5pc19k ZWZhdWx0ICA9IDE7Cit9CisKK0RFRklORV9NQUNISU5FKCJzYW1wbGUiLCAgICBzYW1wbGVfbWFj aGluZV9pbml0KQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kaXNhcy9iZmQuaCBiL2luY2x1ZGUvZGlz YXMvYmZkLmgKaW5kZXggYTExMmU5Yy4uMDRlMjIwMSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kaXNh cy9iZmQuaAorKysgYi9pbmNsdWRlL2Rpc2FzL2JmZC5oCkBAIC0yMTMsNiArMjEzLDEyIEBAIGVu dW0gYmZkX2FyY2hpdGVjdHVyZQogI2RlZmluZSBiZmRfbWFjaF9tMzJyICAgICAgICAgIDAgIC8q IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5ICovCiAgIGJmZF9hcmNoX21uMTAyMDAsICAgIC8qIE1h dHN1c2hpdGEgTU4xMDIwMCAqLwogICBiZmRfYXJjaF9tbjEwMzAwLCAgICAvKiBNYXRzdXNoaXRh IE1OMTAzMDAgKi8KKyAgYmZkX2FyY2hfYXZyLCAgICAgICAvKiBBdG1lbCBBVlIgbWljcm9jb250 cm9sbGVycy4gICovCisjZGVmaW5lIGJmZF9tYWNoX2F2cjEgICAgICAgICAgMQorI2RlZmluZSBi ZmRfbWFjaF9hdnIyICAgICAgICAgIDIKKyNkZWZpbmUgYmZkX21hY2hfYXZyMyAgICAgICAgICAz CisjZGVmaW5lIGJmZF9tYWNoX2F2cjQgICAgICAgICAgNAorI2RlZmluZSBiZmRfbWFjaF9hdnI1 ICAgICAgICAgIDUKICAgYmZkX2FyY2hfY3JpcywgICAgICAgLyogQXhpcyBDUklTICovCiAjZGVm aW5lIGJmZF9tYWNoX2NyaXNfdjBfdjEwICAgMjU1CiAjZGVmaW5lIGJmZF9tYWNoX2NyaXNfdjMy ICAgICAgMzIKQEAgLTQxNSw2ICs0MjEsNyBAQCBpbnQgcHJpbnRfaW5zbl9jcmlzdjEwICAgICAg ICAgIChiZmRfdm1hLCBkaXNhc3NlbWJsZV9pbmZvKik7CiBpbnQgcHJpbnRfaW5zbl9taWNyb2Js YXplICAgICAgIChiZmRfdm1hLCBkaXNhc3NlbWJsZV9pbmZvKik7CiBpbnQgcHJpbnRfaW5zbl9p YTY0ICAgICAgICAgICAgIChiZmRfdm1hLCBkaXNhc3NlbWJsZV9pbmZvKik7CiBpbnQgcHJpbnRf aW5zbl9sbTMyICAgICAgICAgICAgIChiZmRfdm1hLCBkaXNhc3NlbWJsZV9pbmZvKik7CitpbnQg cHJpbnRfaW5zbl9hdnIgICAgICAgICAgICAgIChiZmRfdm1hLCBkaXNhc3NlbWJsZV9pbmZvKik7 CiAKICNpZiAwCiAvKiBGZXRjaCB0aGUgZGlzYXNzZW1ibGVyIGZvciBhIGdpdmVuIEJGRCwgaWYg dGhhdCBzdXBwb3J0IGlzIGF2YWlsYWJsZS4gICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL3N5c2Vt dS9hcmNoX2luaXQuaCBiL2luY2x1ZGUvc3lzZW11L2FyY2hfaW5pdC5oCmluZGV4IGQ2OTBkZmEu LjhjNzU3NzcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvc3lzZW11L2FyY2hfaW5pdC5oCisrKyBiL2lu Y2x1ZGUvc3lzZW11L2FyY2hfaW5pdC5oCkBAIC0yMyw2ICsyMyw3IEBAIGVudW0gewogICAgIFFF TVVfQVJDSF9VTklDT1JFMzIgPSAoMSA8PCAxNCksCiAgICAgUUVNVV9BUkNIX01PWElFID0gKDEg PDwgMTUpLAogICAgIFFFTVVfQVJDSF9UUklDT1JFID0gKDEgPDwgMTYpLAorICAgIFFFTVVfQVJD SF9BVlIgPSAoMSA8PCAxNyksCiB9OwogCiBleHRlcm4gY29uc3QgdWludDMyX3QgYXJjaF90eXBl OwpkaWZmIC0tZ2l0IGEvdGFyZ2V0LWF2ci9NYWtlZmlsZS5vYmpzIGIvdGFyZ2V0LWF2ci9NYWtl ZmlsZS5vYmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiZDI0MDkKLS0t IC9kZXYvbnVsbAorKysgYi90YXJnZXQtYXZyL01ha2VmaWxlLm9ianMKQEAgLTAsMCArMSw1IEBA CitvYmoteSAgICs9IHRyYW5zbGF0ZS5vIGhlbHBlci5vIGNwdS5vCitvYmoteSAgICs9IGdkYnN0 dWIubworb2JqLSQoQ09ORklHX1NPRlRNTVUpICs9IG1hY2hpbmUubworCitvYmoteSAgICs9IGRl Y29kZS5vCmRpZmYgLS1naXQgYS90YXJnZXQtYXZyL2NwdS1xb20uaCBiL3RhcmdldC1hdnIvY3B1 LXFvbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2Y2E5MDgKLS0tIC9k ZXYvbnVsbAorKysgYi90YXJnZXQtYXZyL2NwdS1xb20uaApAQCAtMCwwICsxLDk3IEBACisvKgor ICogUUVNVSBBVlIgQ1BVCisgKgorICogQ29weXJpZ2h0IChjKSAyMDE2IE1pY2hhZWwgUm9sbmlr CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl c3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5z ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxp YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGgg dGhpcyBsaWJyYXJ5OyBpZiBub3QsIHNlZQorICogPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy9sZ3BsLTIuMS5odG1sPgorICovCisKKyNpZm5kZWYgUUVNVV9BVlJfQ1BVX1FPTV9ICisjZGVm aW5lIFFFTVVfQVZSX0NQVV9RT01fSAorCisjaW5jbHVkZSAicW9tL2NwdS5oIgorCisjZGVmaW5l IFRZUEVfQVZSX0NQVSAgICAgICAgICAgICJhdnIiCisKKyNkZWZpbmUgQVZSX0NQVV9DTEFTUyhr bGFzcykgICAgT0JKRUNUX0NMQVNTX0NIRUNLKEFWUkNQVUNsYXNzLCAoa2xhc3MpLCBUWVBFX0FW Ul9DUFUpCisjZGVmaW5lIEFWUl9DUFUob2JqKSAgICAgICAgICAgIE9CSkVDVF9DSEVDSyhBVlJD UFUsIChvYmopLCBUWVBFX0FWUl9DUFUpCisjZGVmaW5lIEFWUl9DUFVfR0VUX0NMQVNTKG9iaikg IE9CSkVDVF9HRVRfQ0xBU1MoQVZSQ1BVQ2xhc3MsIChvYmopLCBUWVBFX0FWUl9DUFUpCisKKy8q KgorKiAgQVZSQ1BVQ2xhc3M6CisqICBAcGFyZW50X3JlYWxpemU6IFRoZSBwYXJlbnQgY2xhc3Mn IHJlYWxpemUgaGFuZGxlci4KKyogIEBwYXJlbnRfcmVzZXQ6IFRoZSBwYXJlbnQgY2xhc3MnIHJl c2V0IGhhbmRsZXIuCisqICBAdnI6IFZlcnNpb24gUmVnaXN0ZXIgdmFsdWUuCisqCisqICBBIEFW UiBDUFUgbW9kZWwuCisqLwordHlwZWRlZiBzdHJ1Y3QgQVZSQ1BVQ2xhc3MgeworICAgIENQVUNs YXNzICAgICAgICBwYXJlbnRfY2xhc3M7CisKKyAgICBEZXZpY2VSZWFsaXplICAgcGFyZW50X3Jl YWxpemU7CisgICAgdm9pZCAoKnBhcmVudF9yZXNldCkoQ1BVU3RhdGUgKmNwdSk7Cit9IEFWUkNQ VUNsYXNzOworCisvKioKKyogIEFWUkNQVToKKyogIEBlbnY6ICNDUFVBVlJTdGF0ZQorKgorKiAg QSBBVlIgQ1BVLgorKi8KK3R5cGVkZWYgc3RydWN0IEFWUkNQVSB7CisgICAgLyo8IHByaXZhdGUg PiovCisgICAgQ1BVU3RhdGUgICAgICAgIHBhcmVudF9vYmo7CisgICAgLyo8IHB1YmxpYyA+Ki8K KworICAgIENQVUFWUlN0YXRlICAgICBlbnY7Cit9IEFWUkNQVTsKKworc3RhdGljIGlubGluZSBB VlJDUFUgICAqYXZyX2Vudl9nZXRfY3B1KENQVUFWUlN0YXRlICplbnYpCit7CisgICAgcmV0dXJu IGNvbnRhaW5lcl9vZihlbnYsIEFWUkNQVSwgZW52KTsKK30KKworI2RlZmluZSBFTlZfR0VUX0NQ VShlKSAgICAgICAgICBDUFUoYXZyX2Vudl9nZXRfY3B1KGUpKQorI2RlZmluZSBFTlZfT0ZGU0VU ICAgICAgICAgICAgICBvZmZzZXRvZihBVlJDUFUsIGVudikKKworI2lmbmRlZiBDT05GSUdfVVNF Ul9PTkxZCitleHRlcm4gY29uc3Qgc3RydWN0IFZNU3RhdGVEZXNjcmlwdGlvbiB2bXN0YXRlX2F2 cl9jcHU7CisjZW5kaWYKKwordm9pZCAgICAgICAgICAgICAgICBhdnJfY3B1X2RvX2ludGVycnVw dCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BVU3RhdGUgICAgICAgICAgICpj cHUpOworYm9vbCAgICAgICAgICAgICAgICBhdnJfY3B1X2V4ZWNfaW50ZXJydXB0KAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBDUFVTdGF0ZSAgICAgICAgICAgKmNwdSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICBpbnRfcmVxKTsK K3ZvaWQgICAgICAgICAgICAgICAgYXZyX2NwdV9kdW1wX3N0YXRlKAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBDUFVTdGF0ZSAgICAgICAgICAgKmNzLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBGSUxFICAgICAgICAgICAgICAgKmYsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGZwcmludGZfZnVuY3Rpb24gICAgY3B1X2ZwcmludGYsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgZmxhZ3MpOworCito d2FkZHIgICAgICAgICAgICAgIGF2cl9jcHVfZ2V0X3BoeXNfcGFnZV9kZWJ1ZygKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgQ1BVU3RhdGUgICAgICAgICAgICpjcHUsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHZhZGRyICAgICAgICAgICAgICAgYWRkcik7CisKK2lu dCAgICAgICAgICAgICAgICAgYXZyX2NwdV9nZGJfcmVhZF9yZWdpc3RlcigKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgQ1BVU3RhdGUgICAgICAgICAgICpjcHUsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgICAgICAgICAgICAqYnVmLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgIHJlZyk7CitpbnQgICAg ICAgICAgICAgICAgIGF2cl9jcHVfZ2RiX3dyaXRlX3JlZ2lzdGVyKAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBDUFVTdGF0ZSAgICAgICAgICAgKmNwdSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdWludDhfdCAgICAgICAgICAgICpidWYsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgcmVnKTsKKworI2VuZGlmCmRp ZmYgLS1naXQgYS90YXJnZXQtYXZyL2NwdS5jIGIvdGFyZ2V0LWF2ci9jcHUuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODcxNjkzCi0tLSAvZGV2L251bGwKKysrIGIvdGFy Z2V0LWF2ci9jcHUuYwpAQCAtMCwwICsxLDYzNyBAQAorLyoKKyAqIFFFTVUgQVZSIENQVQorICoK KyAqIENvcHlyaWdodCAoYykgMjAxNiBNaWNoYWVsIFJvbG5paworICoKKyAqIFRoaXMgbGlicmFy eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlcgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH TlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBH ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90 LCBzZWUKKyAqIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC0yLjEuaHRtbD4KKyAq LworCisjaW5jbHVkZSAicWVtdS9vc2RlcC5oIgorI2luY2x1ZGUgInFhcGkvZXJyb3IuaCIKKyNp bmNsdWRlICJjcHUuaCIKKyNpbmNsdWRlICJxZW11LWNvbW1vbi5oIgorI2luY2x1ZGUgIm1pZ3Jh dGlvbi92bXN0YXRlLmgiCisjaW5jbHVkZSAibWFjaGluZS5oIgorCitzdGF0aWMgdm9pZCAgICAg ICAgIGF2cl9jcHVfc2V0X3BjKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUFVT dGF0ZSAgICAgICAgICAgKmNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWRk ciAgICAgICAgICAgICAgIHZhbHVlKQoreworICAgIEFWUkNQVSAgICpjcHUgPSBBVlJfQ1BVKGNz KTsKKworICAgIGNwdS0+ZW52LnBjID0gdmFsdWUgLyAyOworfQorCitzdGF0aWMgYm9vbCAgICAg ICAgIGF2cl9jcHVfaGFzX3dvcmsoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENQ VVN0YXRlICAgICAgICAgICAqY3MpCit7CisgICAgQVZSQ1BVICAgICAgKmNwdSA9IEFWUl9DUFUo Y3MpOworICAgIENQVUFWUlN0YXRlICplbnYgPSAmY3B1LT5lbnY7CisKKyAgICByZXR1cm4gICAg ICAoY3MtPmludGVycnVwdF9yZXF1ZXN0CisgICAgICAgICAgICAgICAgJiAgIChDUFVfSU5URVJS VVBUX0hBUkQKKyAgICAgICAgICAgICAgICAgICAgfCBDUFVfSU5URVJSVVBUX1JFU0VUKSkKKyAg ICAgICAgICAgICYmICBjcHVfaW50ZXJydXB0c19lbmFibGVkKGVudik7Cit9CitzdGF0aWMgdm9p ZCAgICAgICAgIGF2cl9jcHVfc3luY2hyb25pemVfZnJvbV90YigKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgQ1BVU3RhdGUgICAgICAgICAgICpjcywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgVHJhbnNsYXRpb25CbG9jayAgICp0YikKK3sKKyAgICBBVlJDUFUgICAg ICAqY3B1ID0gQVZSX0NQVShjcyk7CisgICAgQ1BVQVZSU3RhdGUgKmVudiA9ICZjcHUtPmVudjsK KworICAgIGVudi0+cGMgICAgID0gdGItPnBjIC8gMjsKK30KKworc3RhdGljIHZvaWQgICAgICAg ICBhdnJfY3B1X3Jlc2V0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUFVTdGF0 ZSAgICAgICAgICAgKnMpCit7CisgICAgQVZSQ1BVICAgICAgICAgKmNwdSA9IEFWUl9DUFUocyk7 CisgICAgQVZSQ1BVQ2xhc3MgICAgKm1jYyA9IEFWUl9DUFVfR0VUX0NMQVNTKGNwdSk7CisgICAg Q1BVQVZSU3RhdGUgICAgKmVudiA9ICZjcHUtPmVudjsKKyAgICB1aW50MzJfdCAgICAgICAgZmVh dHVyZXMgICAgPSBlbnYtPmZlYXR1cmVzOworCisgICAgbWNjLT5wYXJlbnRfcmVzZXQocyk7CisK KyAgICBtZW1zZXQoZW52LCAwLCBzaXplb2YoQ1BVQVZSU3RhdGUpKTsKKyAgICBlbnYtPnBjICAg ICAgICAgPSAwOworICAgIGVudi0+c3JlZ0kgICAgICA9IDE7CisgICAgZW52LT5mZWF0dXJlcyAg ID0gZmVhdHVyZXM7CisKKyAgICB0bGJfZmx1c2gocywgMSk7Cit9CisKK3N0YXRpYyB2b2lkICAg ICAgICAgYXZyX2NwdV9kaXNhc19zZXRfaW5mbygKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQ1BVU3RhdGUgICAgICAgICAgICpjcHUsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRpc2Fzc2VtYmxlX2luZm8gICAqaW5mbykKK3sKKyAgICBpbmZvLT5tYWNoICAgICAg PSBiZmRfYXJjaF9hdnI7CisgICAgaW5mby0+cHJpbnRfaW5zbiA9IHByaW50X2luc25fYXZyOwor fQorCitzdGF0aWMgdm9pZCAgICAgICAgIGF2cl9jcHVfcmVhbGl6ZWZuKAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBEZXZpY2VTdGF0ZSAgICAgICAgKmRldiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgRXJyb3IgICAgICAgICAgICAgKiplcnJwKQoreworICAgIENQ VVN0YXRlICAgICAgICpjcyAgPSBDUFUoZGV2KTsKKyAgICBBVlJDUFVDbGFzcyAgICAqbWNjID0g QVZSX0NQVV9HRVRfQ0xBU1MoZGV2KTsKKworICAgIHFlbXVfaW5pdF92Y3B1KGNzKTsKKyAgICBj cHVfcmVzZXQoY3MpOworCisgICAgbWNjLT5wYXJlbnRfcmVhbGl6ZShkZXYsIGVycnApOworfQor CitzdGF0aWMgdm9pZCAgICAgICAgIGF2cl9jcHVfc2V0X2ludCgKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdm9pZCAgICAgICAgICAgICAgICpvcGFxdWUsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgaXJxLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgIGxldmVsKQoreworICAgIEFW UkNQVSAgICAgICpjcHUgPSBvcGFxdWU7CisgICAgQ1BVQVZSU3RhdGUgKmVudiA9ICZjcHUtPmVu djsKKyAgICBDUFVTdGF0ZSAgICAqY3MgID0gQ1BVKGNwdSk7CisKKyAgICB1aW50NjRfdCAgICBt YXNrICAgID0gKDF1bGwgPDwgaXJxKTsKKyAgICBpZiAobGV2ZWwpIHsKKyAgICAgICAgZW52LT5p bnRzcmMgfD0gIG1hc2s7CisgICAgICAgIGNwdV9pbnRlcnJ1cHQoY3MsIENQVV9JTlRFUlJVUFRf SEFSRCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZW52LT5pbnRzcmMgJj0gfm1hc2s7CisgICAg ICAgIGlmIChlbnYtPmludHNyYyA9PSAwKSB7CisgICAgICAgICAgICBjcHVfcmVzZXRfaW50ZXJy dXB0KGNzLCBDUFVfSU5URVJSVVBUX0hBUkQpOworICAgICAgICB9CisgICAgfQorfQorCitzdGF0 aWMgdm9pZCAgICAgICAgIGF2cl9jcHVfaW5pdGZuKAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPYmplY3QgICAgICAgICAgICAgKm9iaikKK3sKKyAgICBDUFVTdGF0ZSAgICAgICAq Y3MgID0gQ1BVKG9iaik7CisgICAgQVZSQ1BVICAgICAgICAgKmNwdSA9IEFWUl9DUFUob2JqKTsK KyAgICBzdGF0aWMgaW50ICAgICAgaW5pdGVkOworCisgICAgY3MtPmVudl9wdHIgPSAmY3B1LT5l bnY7CisgICAgY3B1X2V4ZWNfaW5pdChjcywgJmVycm9yX2Fib3J0KTsKKworI2lmbmRlZiBDT05G SUdfVVNFUl9PTkxZCisgICAgcWRldl9pbml0X2dwaW9faW4oREVWSUNFKGNwdSksIGF2cl9jcHVf c2V0X2ludCwgMzcpOworI2VuZGlmCisKKyAgICBpZiAodGNnX2VuYWJsZWQoKSAmJiAhaW5pdGVk KSB7CisgICAgICAgIGluaXRlZCAgPSAxOworICAgICAgICBhdnJfdHJhbnNsYXRlX2luaXQoKTsK KyAgICB9Cit9CisKK3N0YXRpYyBPYmplY3RDbGFzcyAqYXZyX2NwdV9jbGFzc19ieV9uYW1lKAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICAgICAgICAgKmNwdV9t b2RlbCkKK3sKKyAgICBPYmplY3RDbGFzcyAqb2M7CisgICAgY2hhciAgICAgICAgKnR5cGVuYW1l OworICAgIGNoYXIgICAgICAgICoqY3B1bmFtZTsKKworICAgIGlmICghY3B1X21vZGVsKSB7Cisg ICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGNwdW5hbWUgICAgID0gZ19zdHJzcGxp dChjcHVfbW9kZWwsICIsIiwgMSk7CisgICAgdHlwZW5hbWUgICAgPSBnX3N0cmR1cF9wcmludGYo IiVzLSIgVFlQRV9BVlJfQ1BVLCBjcHVuYW1lWzBdKTsKKyAgICBvYyAgICAgICAgICA9IG9iamVj dF9jbGFzc19ieV9uYW1lKHR5cGVuYW1lKTsKKworICAgIGdfc3RyZnJlZXYoY3B1bmFtZSk7Cisg ICAgZ19mcmVlKHR5cGVuYW1lKTsKKworICAgIGlmICghb2MKKyAgICAgICAgfHwgICFvYmplY3Rf Y2xhc3NfZHluYW1pY19jYXN0KG9jLCBUWVBFX0FWUl9DUFUpCisgICAgICAgIHx8ICBvYmplY3Rf Y2xhc3NfaXNfYWJzdHJhY3Qob2MpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKwor ICAgIHJldHVybiBvYzsKK30KKworc3RhdGljIHZvaWQgICAgICAgICBhdnJfY3B1X2NsYXNzX2lu aXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdENsYXNzICAgICAgICAq b2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgICAgICAgICAgICAgICAq ZGF0YSkKK3sKKyAgICBEZXZpY2VDbGFzcyAgICAqZGMgID0gREVWSUNFX0NMQVNTKG9jKTsKKyAg ICBDUFVDbGFzcyAgICAgICAqY2MgID0gQ1BVX0NMQVNTKG9jKTsKKyAgICBBVlJDUFVDbGFzcyAg ICAqbWNjID0gQVZSX0NQVV9DTEFTUyhvYyk7CisKKyAgICBtY2MtPnBhcmVudF9yZWFsaXplICAg ICA9IGRjLT5yZWFsaXplOworICAgIGRjLT5yZWFsaXplICAgICAgICAgICAgID0gYXZyX2NwdV9y ZWFsaXplZm47CisKKyAgICBtY2MtPnBhcmVudF9yZXNldCAgICAgICA9IGNjLT5yZXNldDsKKyAg ICBjYy0+cmVzZXQgICAgICAgICAgICAgICA9IGF2cl9jcHVfcmVzZXQ7CisKKyAgICBjYy0+Y2xh c3NfYnlfbmFtZSAgICAgICA9IGF2cl9jcHVfY2xhc3NfYnlfbmFtZTsKKworICAgIGNjLT5oYXNf d29yayAgICAgICAgICAgID0gYXZyX2NwdV9oYXNfd29yazsKKyAgICBjYy0+ZG9faW50ZXJydXB0 ICAgICAgICA9IGF2cl9jcHVfZG9faW50ZXJydXB0OworICAgIGNjLT5jcHVfZXhlY19pbnRlcnJ1 cHQgID0gYXZyX2NwdV9leGVjX2ludGVycnVwdDsKKyAgICBjYy0+ZHVtcF9zdGF0ZSAgICAgICAg ICA9IGF2cl9jcHVfZHVtcF9zdGF0ZTsKKyAgICBjYy0+c2V0X3BjICAgICAgICAgICAgICA9IGF2 cl9jcHVfc2V0X3BjOworI2lmICFkZWZpbmVkKENPTkZJR19VU0VSX09OTFkpCisgICAgY2MtPm1l bW9yeV9yd19kZWJ1ZyAgICAgPSBhdnJfY3B1X21lbW9yeV9yd19kZWJ1ZzsKKyNlbmRpZgorI2lm ZGVmIENPTkZJR19VU0VSX09OTFkKKyAgICBjYy0+aGFuZGxlX21tdV9mYXVsdCAgICA9IGF2cl9j cHVfaGFuZGxlX21tdV9mYXVsdDsKKyNlbHNlCisgICAgY2MtPmdldF9waHlzX3BhZ2VfZGVidWcK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGF2cl9jcHVfZ2V0X3BoeXNfcGFnZV9kZWJ1 ZzsKKyAgICBjYy0+dm1zZCAgICAgICAgICAgICAgICA9ICZ2bXN0YXRlX2F2cl9jcHU7CisjZW5k aWYKKyAgICBjYy0+ZGlzYXNfc2V0X2luZm8gICAgICA9IGF2cl9jcHVfZGlzYXNfc2V0X2luZm87 CisgICAgY2MtPnN5bmNocm9uaXplX2Zyb21fdGIgPSBhdnJfY3B1X3N5bmNocm9uaXplX2Zyb21f dGI7CisgICAgY2MtPmdkYl9yZWFkX3JlZ2lzdGVyICAgPSBhdnJfY3B1X2dkYl9yZWFkX3JlZ2lz dGVyOworICAgIGNjLT5nZGJfd3JpdGVfcmVnaXN0ZXIgID0gYXZyX2NwdV9nZGJfd3JpdGVfcmVn aXN0ZXI7CisgICAgY2MtPmdkYl9udW1fY29yZV9yZWdzICAgPSAzNTsKKworICAgIC8qCisgICAg ICogUmVhc29uOiBhdnJfY3B1X2luaXRmbigpIGNhbGxzIGNwdV9leGVjX2luaXQoKSwgd2hpY2gg c2F2ZXMKKyAgICAgKiB0aGUgb2JqZWN0IGluIGNwdXMgLT4gZGFuZ2xpbmcgcG9pbnRlciBhZnRl ciBmaW5hbAorICAgICAqIG9iamVjdF91bnJlZigpLgorICAgICAqLworICAgIGRjLT5jYW5ub3Rf ZGVzdHJveV93aXRoX29iamVjdF9maW5hbGl6ZV95ZXQKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICA9IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkICAgICAgICAgYXZyX2F2cjFfaW5pdGZuKAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QgICAgICAgICAgICAgKm9iaikK K3sKKyAgICBBVlJDUFUgICAgICAgICAqY3B1ID0gQVZSX0NQVShvYmopOworICAgIENQVUFWUlN0 YXRlICAgICplbnYgPSAmY3B1LT5lbnY7CisKKyAgICBhdnJfc2V0X2ZlYXR1cmUoZW52LCAgICBB VlJfRkVBVFVSRV9MUE0pOworICAgIGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFWUl9GRUFUVVJF XzJfQllURV9TUCk7CisgICAgYXZyX3NldF9mZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfMl9C WVRFX1BDKTsKK30KK3N0YXRpYyB2b2lkICAgICAgICAgYXZyX2F2cjJfaW5pdGZuKAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QgICAgICAgICAgICAgKm9iaikKK3sKKyAg ICBBVlJDUFUgICAgICAgICAqY3B1ID0gQVZSX0NQVShvYmopOworICAgIENQVUFWUlN0YXRlICAg ICplbnYgPSAmY3B1LT5lbnY7CisKKyAgICBhdnJfc2V0X2ZlYXR1cmUoZW52LCAgICBBVlJfRkVB VFVSRV9MUE0pOworICAgIGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFWUl9GRUFUVVJFX0lKTVBf SUNBTEwpOworICAgIGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFWUl9GRUFUVVJFX0FESVdfU0JJ Vyk7CisgICAgYXZyX3NldF9mZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfU1JBTSk7CisgICAg YXZyX3NldF9mZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfQlJFQUspOworCisgICAgYXZyX3Nl dF9mZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfMl9CWVRFX1BDKTsKKyAgICBhdnJfc2V0X2Zl YXR1cmUoZW52LCAgICBBVlJfRkVBVFVSRV8yX0JZVEVfU1ApOworfQorCitzdGF0aWMgdm9pZCAg ICAgICAgIGF2cl9hdnIyNV9pbml0Zm4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE9iamVjdCAgICAgICAgICAgICAqb2JqKQoreworICAgIEFWUkNQVSAgICAgICAgICpjcHUgPSBB VlJfQ1BVKG9iaik7CisgICAgQ1BVQVZSU3RhdGUgICAgKmVudiA9ICZjcHUtPmVudjsKKworICAg IGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFWUl9GRUFUVVJFX0xQTSk7CisgICAgYXZyX3NldF9m ZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfSUpNUF9JQ0FMTCk7CisgICAgYXZyX3NldF9mZWF0 dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfQURJV19TQklXKTsKKyAgICBhdnJfc2V0X2ZlYXR1cmUo ZW52LCAgICBBVlJfRkVBVFVSRV9TUkFNKTsKKyAgICBhdnJfc2V0X2ZlYXR1cmUoZW52LCAgICBB VlJfRkVBVFVSRV9CUkVBSyk7CisKKyAgICBhdnJfc2V0X2ZlYXR1cmUoZW52LCAgICBBVlJfRkVB VFVSRV8yX0JZVEVfUEMpOworICAgIGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFWUl9GRUFUVVJF XzJfQllURV9TUCk7CisgICAgYXZyX3NldF9mZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfTFBN WCk7CisgICAgYXZyX3NldF9mZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfTU9WVyk7Cit9CisK K3N0YXRpYyB2b2lkICAgICAgICAgYXZyX2F2cjNfaW5pdGZuKAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBPYmplY3QgICAgICAgICAgICAgKm9iaikKK3sKKyAgICBBVlJDUFUgICAg ICAgICAqY3B1ID0gQVZSX0NQVShvYmopOworICAgIENQVUFWUlN0YXRlICAgICplbnYgPSAmY3B1 LT5lbnY7CisKKyAgICBhdnJfc2V0X2ZlYXR1cmUoZW52LCAgICBBVlJfRkVBVFVSRV9MUE0pOwor ICAgIGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFWUl9GRUFUVVJFX0lKTVBfSUNBTEwpOworICAg IGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFWUl9GRUFUVVJFX0FESVdfU0JJVyk7CisgICAgYXZy X3NldF9mZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfU1JBTSk7CisgICAgYXZyX3NldF9mZWF0 dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfQlJFQUspOworCisgICAgYXZyX3NldF9mZWF0dXJlKGVu diwgICAgQVZSX0ZFQVRVUkVfMl9CWVRFX1BDKTsKKyAgICBhdnJfc2V0X2ZlYXR1cmUoZW52LCAg ICBBVlJfRkVBVFVSRV8yX0JZVEVfU1ApOworICAgIGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFW Ul9GRUFUVVJFX0pNUF9DQUxMKTsKK30KKworc3RhdGljIHZvaWQgICAgICAgICBhdnJfYXZyMzFf aW5pdGZuKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QgICAgICAgICAg ICAgKm9iaikKK3sKKyAgICBBVlJDUFUgICAgICAgICAqY3B1ID0gQVZSX0NQVShvYmopOworICAg IENQVUFWUlN0YXRlICAgICplbnYgPSAmY3B1LT5lbnY7CisKKyAgICBhdnJfc2V0X2ZlYXR1cmUo ZW52LCAgICBBVlJfRkVBVFVSRV9MUE0pOworICAgIGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFW Ul9GRUFUVVJFX0lKTVBfSUNBTEwpOworICAgIGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFWUl9G RUFUVVJFX0FESVdfU0JJVyk7CisgICAgYXZyX3NldF9mZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRV UkVfU1JBTSk7CisgICAgYXZyX3NldF9mZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfQlJFQUsp OworCisgICAgYXZyX3NldF9mZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfMl9CWVRFX1BDKTsK KyAgICBhdnJfc2V0X2ZlYXR1cmUoZW52LCAgICBBVlJfRkVBVFVSRV8yX0JZVEVfU1ApOworICAg IGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFWUl9GRUFUVVJFX1JBTVBaKTsKKyAgICBhdnJfc2V0 X2ZlYXR1cmUoZW52LCAgICBBVlJfRkVBVFVSRV9FTFBNKTsKKyAgICBhdnJfc2V0X2ZlYXR1cmUo ZW52LCAgICBBVlJfRkVBVFVSRV9KTVBfQ0FMTCk7Cit9CisKK3N0YXRpYyB2b2lkICAgICAgICAg YXZyX2F2cjM1X2luaXRmbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0 ICAgICAgICAgICAgICpvYmopCit7CisgICAgQVZSQ1BVICAgICAgICAgKmNwdSA9IEFWUl9DUFUo b2JqKTsKKyAgICBDUFVBVlJTdGF0ZSAgICAqZW52ID0gJmNwdS0+ZW52OworCisgICAgYXZyX3Nl dF9mZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfTFBNKTsKKyAgICBhdnJfc2V0X2ZlYXR1cmUo ZW52LCAgICBBVlJfRkVBVFVSRV9JSk1QX0lDQUxMKTsKKyAgICBhdnJfc2V0X2ZlYXR1cmUoZW52 LCAgICBBVlJfRkVBVFVSRV9BRElXX1NCSVcpOworICAgIGF2cl9zZXRfZmVhdHVyZShlbnYsICAg IEFWUl9GRUFUVVJFX1NSQU0pOworICAgIGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFWUl9GRUFU VVJFX0JSRUFLKTsKKworICAgIGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFWUl9GRUFUVVJFXzJf QllURV9QQyk7CisgICAgYXZyX3NldF9mZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfMl9CWVRF X1NQKTsKKyAgICBhdnJfc2V0X2ZlYXR1cmUoZW52LCAgICBBVlJfRkVBVFVSRV9KTVBfQ0FMTCk7 CisgICAgYXZyX3NldF9mZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfTFBNWCk7CisgICAgYXZy X3NldF9mZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfTU9WVyk7Cit9CisKK3N0YXRpYyB2b2lk ICAgICAgICAgYXZyX2F2cjRfaW5pdGZuKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBPYmplY3QgICAgICAgICAgICAgKm9iaikKK3sKKyAgICBBVlJDUFUgICAgICAgICAqY3B1ID0g QVZSX0NQVShvYmopOworICAgIENQVUFWUlN0YXRlICAgICplbnYgPSAmY3B1LT5lbnY7CisKKyAg ICBhdnJfc2V0X2ZlYXR1cmUoZW52LCAgICBBVlJfRkVBVFVSRV9MUE0pOworICAgIGF2cl9zZXRf ZmVhdHVyZShlbnYsICAgIEFWUl9GRUFUVVJFX0lKTVBfSUNBTEwpOworICAgIGF2cl9zZXRfZmVh dHVyZShlbnYsICAgIEFWUl9GRUFUVVJFX0FESVdfU0JJVyk7CisgICAgYXZyX3NldF9mZWF0dXJl KGVudiwgICAgQVZSX0ZFQVRVUkVfU1JBTSk7CisgICAgYXZyX3NldF9mZWF0dXJlKGVudiwgICAg QVZSX0ZFQVRVUkVfQlJFQUspOworCisgICAgYXZyX3NldF9mZWF0dXJlKGVudiwgICAgQVZSX0ZF QVRVUkVfMl9CWVRFX1BDKTsKKyAgICBhdnJfc2V0X2ZlYXR1cmUoZW52LCAgICBBVlJfRkVBVFVS RV8yX0JZVEVfU1ApOworICAgIGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFWUl9GRUFUVVJFX0xQ TVgpOworICAgIGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFWUl9GRUFUVVJFX01PVlcpOworICAg IGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFWUl9GRUFUVVJFX01VTCk7Cit9CisKK3N0YXRpYyB2 b2lkICAgICAgICAgYXZyX2F2cjVfaW5pdGZuKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBPYmplY3QgICAgICAgICAgICAgKm9iaikKK3sKKyAgICBBVlJDUFUgICAgICAgICAqY3B1 ID0gQVZSX0NQVShvYmopOworICAgIENQVUFWUlN0YXRlICAgICplbnYgPSAmY3B1LT5lbnY7CisK KyAgICBhdnJfc2V0X2ZlYXR1cmUoZW52LCAgICBBVlJfRkVBVFVSRV9MUE0pOworICAgIGF2cl9z ZXRfZmVhdHVyZShlbnYsICAgIEFWUl9GRUFUVVJFX0lKTVBfSUNBTEwpOworICAgIGF2cl9zZXRf ZmVhdHVyZShlbnYsICAgIEFWUl9GRUFUVVJFX0FESVdfU0JJVyk7CisgICAgYXZyX3NldF9mZWF0 dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfU1JBTSk7CisgICAgYXZyX3NldF9mZWF0dXJlKGVudiwg ICAgQVZSX0ZFQVRVUkVfQlJFQUspOworCisgICAgYXZyX3NldF9mZWF0dXJlKGVudiwgICAgQVZS X0ZFQVRVUkVfMl9CWVRFX1BDKTsKKyAgICBhdnJfc2V0X2ZlYXR1cmUoZW52LCAgICBBVlJfRkVB VFVSRV8yX0JZVEVfU1ApOworICAgIGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFWUl9GRUFUVVJF X0pNUF9DQUxMKTsKKyAgICBhdnJfc2V0X2ZlYXR1cmUoZW52LCAgICBBVlJfRkVBVFVSRV9MUE1Y KTsKKyAgICBhdnJfc2V0X2ZlYXR1cmUoZW52LCAgICBBVlJfRkVBVFVSRV9NT1ZXKTsKKyAgICBh dnJfc2V0X2ZlYXR1cmUoZW52LCAgICBBVlJfRkVBVFVSRV9NVUwpOworfQorCitzdGF0aWMgdm9p ZCAgICAgICAgIGF2cl9hdnI1MV9pbml0Zm4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE9iamVjdCAgICAgICAgICAgICAqb2JqKQoreworICAgIEFWUkNQVSAgICAgICAgICpjcHUg PSBBVlJfQ1BVKG9iaik7CisgICAgQ1BVQVZSU3RhdGUgICAgKmVudiA9ICZjcHUtPmVudjsKKwor ICAgIGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFWUl9GRUFUVVJFX0xQTSk7CisgICAgYXZyX3Nl dF9mZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfSUpNUF9JQ0FMTCk7CisgICAgYXZyX3NldF9m ZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfQURJV19TQklXKTsKKyAgICBhdnJfc2V0X2ZlYXR1 cmUoZW52LCAgICBBVlJfRkVBVFVSRV9TUkFNKTsKKyAgICBhdnJfc2V0X2ZlYXR1cmUoZW52LCAg ICBBVlJfRkVBVFVSRV9CUkVBSyk7CisKKyAgICBhdnJfc2V0X2ZlYXR1cmUoZW52LCAgICBBVlJf RkVBVFVSRV8yX0JZVEVfUEMpOworICAgIGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFWUl9GRUFU VVJFXzJfQllURV9TUCk7CisgICAgYXZyX3NldF9mZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVf UkFNUFopOworICAgIGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFWUl9GRUFUVVJFX0VMUE1YKTsK KyAgICBhdnJfc2V0X2ZlYXR1cmUoZW52LCAgICBBVlJfRkVBVFVSRV9FTFBNKTsKKyAgICBhdnJf c2V0X2ZlYXR1cmUoZW52LCAgICBBVlJfRkVBVFVSRV9KTVBfQ0FMTCk7CisgICAgYXZyX3NldF9m ZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfTFBNWCk7CisgICAgYXZyX3NldF9mZWF0dXJlKGVu diwgICAgQVZSX0ZFQVRVUkVfTU9WVyk7CisgICAgYXZyX3NldF9mZWF0dXJlKGVudiwgICAgQVZS X0ZFQVRVUkVfTVVMKTsKK30KK3N0YXRpYyB2b2lkICAgICAgICAgYXZyX2F2cjZfaW5pdGZuKAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QgICAgICAgICAgICAgKm9iaikK K3sKKyAgICBBVlJDUFUgICAgICAgICAqY3B1ID0gQVZSX0NQVShvYmopOworICAgIENQVUFWUlN0 YXRlICAgICplbnYgPSAmY3B1LT5lbnY7CisKKyAgICBhdnJfc2V0X2ZlYXR1cmUoZW52LCAgICBB VlJfRkVBVFVSRV9MUE0pOworICAgIGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFWUl9GRUFUVVJF X0lKTVBfSUNBTEwpOworICAgIGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFWUl9GRUFUVVJFX0FE SVdfU0JJVyk7CisgICAgYXZyX3NldF9mZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfU1JBTSk7 CisgICAgYXZyX3NldF9mZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfQlJFQUspOworCisgICAg YXZyX3NldF9mZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfM19CWVRFX1BDKTsKKyAgICBhdnJf c2V0X2ZlYXR1cmUoZW52LCAgICBBVlJfRkVBVFVSRV8yX0JZVEVfU1ApOworICAgIGF2cl9zZXRf ZmVhdHVyZShlbnYsICAgIEFWUl9GRUFUVVJFX1JBTVBaKTsKKyAgICBhdnJfc2V0X2ZlYXR1cmUo ZW52LCAgICBBVlJfRkVBVFVSRV9FSUpNUF9FSUNBTEwpOworICAgIGF2cl9zZXRfZmVhdHVyZShl bnYsICAgIEFWUl9GRUFUVVJFX0VMUE1YKTsKKyAgICBhdnJfc2V0X2ZlYXR1cmUoZW52LCAgICBB VlJfRkVBVFVSRV9FTFBNKTsKKyAgICBhdnJfc2V0X2ZlYXR1cmUoZW52LCAgICBBVlJfRkVBVFVS RV9KTVBfQ0FMTCk7CisgICAgYXZyX3NldF9mZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfTFBN WCk7CisgICAgYXZyX3NldF9mZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfTU9WVyk7CisgICAg YXZyX3NldF9mZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfTVVMKTsKK30KK3N0YXRpYyB2b2lk ICAgICAgICAgYXZyX3htZWdhMl9pbml0Zm4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE9iamVjdCAgICAgICAgICAgICAqb2JqKQoreworICAgIEFWUkNQVSAgICAgICAgICpjcHUg PSBBVlJfQ1BVKG9iaik7CisgICAgQ1BVQVZSU3RhdGUgICAgKmVudiA9ICZjcHUtPmVudjsKKwor ICAgIGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFWUl9GRUFUVVJFX0xQTSk7CisgICAgYXZyX3Nl dF9mZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfSUpNUF9JQ0FMTCk7CisgICAgYXZyX3NldF9m ZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfQURJV19TQklXKTsKKyAgICBhdnJfc2V0X2ZlYXR1 cmUoZW52LCAgICBBVlJfRkVBVFVSRV9TUkFNKTsKKyAgICBhdnJfc2V0X2ZlYXR1cmUoZW52LCAg ICBBVlJfRkVBVFVSRV9CUkVBSyk7CisKKyAgICBhdnJfc2V0X2ZlYXR1cmUoZW52LCAgICBBVlJf RkVBVFVSRV8yX0JZVEVfUEMpOworICAgIGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFWUl9GRUFU VVJFXzJfQllURV9TUCk7CisgICAgYXZyX3NldF9mZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVf Sk1QX0NBTEwpOworICAgIGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFWUl9GRUFUVVJFX0xQTVgp OworICAgIGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFWUl9GRUFUVVJFX01PVlcpOworICAgIGF2 cl9zZXRfZmVhdHVyZShlbnYsICAgIEFWUl9GRUFUVVJFX01VTCk7CisgICAgYXZyX3NldF9mZWF0 dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfUk1XKTsKK30KK3N0YXRpYyB2b2lkICAgICAgICAgYXZy X3htZWdhNF9pbml0Zm4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdCAg ICAgICAgICAgICAqb2JqKQoreworICAgIEFWUkNQVSAgICAgICAgICpjcHUgPSBBVlJfQ1BVKG9i aik7CisgICAgQ1BVQVZSU3RhdGUgICAgKmVudiA9ICZjcHUtPmVudjsKKworICAgIGF2cl9zZXRf ZmVhdHVyZShlbnYsICAgIEFWUl9GRUFUVVJFX0xQTSk7CisgICAgYXZyX3NldF9mZWF0dXJlKGVu diwgICAgQVZSX0ZFQVRVUkVfSUpNUF9JQ0FMTCk7CisgICAgYXZyX3NldF9mZWF0dXJlKGVudiwg ICAgQVZSX0ZFQVRVUkVfQURJV19TQklXKTsKKyAgICBhdnJfc2V0X2ZlYXR1cmUoZW52LCAgICBB VlJfRkVBVFVSRV9TUkFNKTsKKyAgICBhdnJfc2V0X2ZlYXR1cmUoZW52LCAgICBBVlJfRkVBVFVS RV9CUkVBSyk7CisKKyAgICBhdnJfc2V0X2ZlYXR1cmUoZW52LCAgICBBVlJfRkVBVFVSRV8yX0JZ VEVfUEMpOworICAgIGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFWUl9GRUFUVVJFXzJfQllURV9T UCk7CisgICAgYXZyX3NldF9mZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfUkFNUFopOworICAg IGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFWUl9GRUFUVVJFX0VMUE1YKTsKKyAgICBhdnJfc2V0 X2ZlYXR1cmUoZW52LCAgICBBVlJfRkVBVFVSRV9FTFBNKTsKKyAgICBhdnJfc2V0X2ZlYXR1cmUo ZW52LCAgICBBVlJfRkVBVFVSRV9KTVBfQ0FMTCk7CisgICAgYXZyX3NldF9mZWF0dXJlKGVudiwg ICAgQVZSX0ZFQVRVUkVfTFBNWCk7CisgICAgYXZyX3NldF9mZWF0dXJlKGVudiwgICAgQVZSX0ZF QVRVUkVfTU9WVyk7CisgICAgYXZyX3NldF9mZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfTVVM KTsKKyAgICBhdnJfc2V0X2ZlYXR1cmUoZW52LCAgICBBVlJfRkVBVFVSRV9STVcpOworfQorc3Rh dGljIHZvaWQgICAgICAgICBhdnJfeG1lZ2E1X2luaXRmbigKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgT2JqZWN0ICAgICAgICAgICAgICpvYmopCit7CisgICAgQVZSQ1BVICAgICAg ICAgKmNwdSA9IEFWUl9DUFUob2JqKTsKKyAgICBDUFVBVlJTdGF0ZSAgICAqZW52ID0gJmNwdS0+ ZW52OworCisgICAgYXZyX3NldF9mZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfTFBNKTsKKyAg ICBhdnJfc2V0X2ZlYXR1cmUoZW52LCAgICBBVlJfRkVBVFVSRV9JSk1QX0lDQUxMKTsKKyAgICBh dnJfc2V0X2ZlYXR1cmUoZW52LCAgICBBVlJfRkVBVFVSRV9BRElXX1NCSVcpOworICAgIGF2cl9z ZXRfZmVhdHVyZShlbnYsICAgIEFWUl9GRUFUVVJFX1NSQU0pOworICAgIGF2cl9zZXRfZmVhdHVy ZShlbnYsICAgIEFWUl9GRUFUVVJFX0JSRUFLKTsKKworICAgIGF2cl9zZXRfZmVhdHVyZShlbnYs ICAgIEFWUl9GRUFUVVJFXzJfQllURV9QQyk7CisgICAgYXZyX3NldF9mZWF0dXJlKGVudiwgICAg QVZSX0ZFQVRVUkVfMl9CWVRFX1NQKTsKKyAgICBhdnJfc2V0X2ZlYXR1cmUoZW52LCAgICBBVlJf RkVBVFVSRV9SQU1QRCk7CisgICAgYXZyX3NldF9mZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVf UkFNUFgpOworICAgIGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFWUl9GRUFUVVJFX1JBTVBZKTsK KyAgICBhdnJfc2V0X2ZlYXR1cmUoZW52LCAgICBBVlJfRkVBVFVSRV9SQU1QWik7CisgICAgYXZy X3NldF9mZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfRUxQTVgpOworICAgIGF2cl9zZXRfZmVh dHVyZShlbnYsICAgIEFWUl9GRUFUVVJFX0VMUE0pOworICAgIGF2cl9zZXRfZmVhdHVyZShlbnYs ICAgIEFWUl9GRUFUVVJFX0pNUF9DQUxMKTsKKyAgICBhdnJfc2V0X2ZlYXR1cmUoZW52LCAgICBB VlJfRkVBVFVSRV9MUE1YKTsKKyAgICBhdnJfc2V0X2ZlYXR1cmUoZW52LCAgICBBVlJfRkVBVFVS RV9NT1ZXKTsKKyAgICBhdnJfc2V0X2ZlYXR1cmUoZW52LCAgICBBVlJfRkVBVFVSRV9NVUwpOwor ICAgIGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFWUl9GRUFUVVJFX1JNVyk7Cit9CisKK3N0YXRp YyB2b2lkICAgICAgICAgYXZyX3htZWdhNl9pbml0Zm4oCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE9iamVjdCAgICAgICAgICAgICAqb2JqKQoreworICAgIEFWUkNQVSAgICAgICAg ICpjcHUgPSBBVlJfQ1BVKG9iaik7CisgICAgQ1BVQVZSU3RhdGUgICAgKmVudiA9ICZjcHUtPmVu djsKKworICAgIGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFWUl9GRUFUVVJFX0xQTSk7CisgICAg YXZyX3NldF9mZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfSUpNUF9JQ0FMTCk7CisgICAgYXZy X3NldF9mZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfQURJV19TQklXKTsKKyAgICBhdnJfc2V0 X2ZlYXR1cmUoZW52LCAgICBBVlJfRkVBVFVSRV9TUkFNKTsKKyAgICBhdnJfc2V0X2ZlYXR1cmUo ZW52LCAgICBBVlJfRkVBVFVSRV9CUkVBSyk7CisKKyAgICBhdnJfc2V0X2ZlYXR1cmUoZW52LCAg ICBBVlJfRkVBVFVSRV8zX0JZVEVfUEMpOworICAgIGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFW Ul9GRUFUVVJFXzJfQllURV9TUCk7CisgICAgYXZyX3NldF9mZWF0dXJlKGVudiwgICAgQVZSX0ZF QVRVUkVfUkFNUFopOworICAgIGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFWUl9GRUFUVVJFX0VJ Sk1QX0VJQ0FMTCk7CisgICAgYXZyX3NldF9mZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfRUxQ TVgpOworICAgIGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFWUl9GRUFUVVJFX0VMUE0pOworICAg IGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFWUl9GRUFUVVJFX0pNUF9DQUxMKTsKKyAgICBhdnJf c2V0X2ZlYXR1cmUoZW52LCAgICBBVlJfRkVBVFVSRV9MUE1YKTsKKyAgICBhdnJfc2V0X2ZlYXR1 cmUoZW52LCAgICBBVlJfRkVBVFVSRV9NT1ZXKTsKKyAgICBhdnJfc2V0X2ZlYXR1cmUoZW52LCAg ICBBVlJfRkVBVFVSRV9NVUwpOworICAgIGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFWUl9GRUFU VVJFX1JNVyk7Cit9CitzdGF0aWMgdm9pZCAgICAgICAgIGF2cl94bWVnYTdfaW5pdGZuKAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QgICAgICAgICAgICAgKm9iaikKK3sK KyAgICBBVlJDUFUgICAgICAgICAqY3B1ID0gQVZSX0NQVShvYmopOworICAgIENQVUFWUlN0YXRl ICAgICplbnYgPSAmY3B1LT5lbnY7CisKKyAgICBhdnJfc2V0X2ZlYXR1cmUoZW52LCAgICBBVlJf RkVBVFVSRV9MUE0pOworICAgIGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFWUl9GRUFUVVJFX0lK TVBfSUNBTEwpOworICAgIGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFWUl9GRUFUVVJFX0FESVdf U0JJVyk7CisgICAgYXZyX3NldF9mZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfU1JBTSk7Cisg ICAgYXZyX3NldF9mZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfQlJFQUspOworCisgICAgYXZy X3NldF9mZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfM19CWVRFX1BDKTsKKyAgICBhdnJfc2V0 X2ZlYXR1cmUoZW52LCAgICBBVlJfRkVBVFVSRV8yX0JZVEVfU1ApOworICAgIGF2cl9zZXRfZmVh dHVyZShlbnYsICAgIEFWUl9GRUFUVVJFX1JBTVBEKTsKKyAgICBhdnJfc2V0X2ZlYXR1cmUoZW52 LCAgICBBVlJfRkVBVFVSRV9SQU1QWCk7CisgICAgYXZyX3NldF9mZWF0dXJlKGVudiwgICAgQVZS X0ZFQVRVUkVfUkFNUFkpOworICAgIGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFWUl9GRUFUVVJF X1JBTVBaKTsKKyAgICBhdnJfc2V0X2ZlYXR1cmUoZW52LCAgICBBVlJfRkVBVFVSRV9FSUpNUF9F SUNBTEwpOworICAgIGF2cl9zZXRfZmVhdHVyZShlbnYsICAgIEFWUl9GRUFUVVJFX0VMUE1YKTsK KyAgICBhdnJfc2V0X2ZlYXR1cmUoZW52LCAgICBBVlJfRkVBVFVSRV9FTFBNKTsKKyAgICBhdnJf c2V0X2ZlYXR1cmUoZW52LCAgICBBVlJfRkVBVFVSRV9KTVBfQ0FMTCk7CisgICAgYXZyX3NldF9m ZWF0dXJlKGVudiwgICAgQVZSX0ZFQVRVUkVfTFBNWCk7CisgICAgYXZyX3NldF9mZWF0dXJlKGVu diwgICAgQVZSX0ZFQVRVUkVfTU9WVyk7CisgICAgYXZyX3NldF9mZWF0dXJlKGVudiwgICAgQVZS X0ZFQVRVUkVfTVVMKTsKKyAgICBhdnJfc2V0X2ZlYXR1cmUoZW52LCAgICBBVlJfRkVBVFVSRV9S TVcpOworfQorCitzdGF0aWMgdm9pZCAgICAgICAgIGF2cl9hbnlfaW5pdGZuKAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QgICAgICAgICAgICAgKm9iaikKK3sKKyAgICAv KiBTZXQgY3B1IGZlYXR1cmUgZmxhZ3MgKi8KK30KKwordHlwZWRlZiBzdHJ1Y3QgQVZSQ1BVSW5m byB7CisgICAgY29uc3QgY2hhciAgICAgKm5hbWU7CisgICAgdm9pZCAoKmluaXRmbikoT2JqZWN0 ICpvYmopOworfSBBVlJDUFVJbmZvOworCitzdGF0aWMgY29uc3QgQVZSQ1BVSW5mbyBhdnJfY3B1 c1tdID0geworICAgIHsgICAubmFtZSA9ICJhdnIxIiwgICAgIC5pbml0Zm4gPSBhdnJfYXZyMV9p bml0Zm59LAorICAgIHsgICAubmFtZSA9ICJhdnIyIiwgICAgIC5pbml0Zm4gPSBhdnJfYXZyMl9p bml0Zm59LAorICAgIHsgICAubmFtZSA9ICJhdnIyNSIsICAgIC5pbml0Zm4gPSBhdnJfYXZyMjVf aW5pdGZufSwKKyAgICB7ICAgLm5hbWUgPSAiYXZyMyIsICAgICAuaW5pdGZuID0gYXZyX2F2cjNf aW5pdGZufSwKKyAgICB7ICAgLm5hbWUgPSAiYXZyMzEiLCAgICAuaW5pdGZuID0gYXZyX2F2cjMx X2luaXRmbn0sCisgICAgeyAgIC5uYW1lID0gImF2cjM1IiwgICAgLmluaXRmbiA9IGF2cl9hdnIz NV9pbml0Zm59LAorICAgIHsgICAubmFtZSA9ICJhdnI0IiwgICAgIC5pbml0Zm4gPSBhdnJfYXZy NF9pbml0Zm59LAorICAgIHsgICAubmFtZSA9ICJhdnI1IiwgICAgIC5pbml0Zm4gPSBhdnJfYXZy NV9pbml0Zm59LAorICAgIHsgICAubmFtZSA9ICJhdnI1MSIsICAgIC5pbml0Zm4gPSBhdnJfYXZy NTFfaW5pdGZufSwKKyAgICB7ICAgLm5hbWUgPSAiYXZyNiIsICAgICAuaW5pdGZuID0gYXZyX2F2 cjZfaW5pdGZufSwKKyAgICB7ICAgLm5hbWUgPSAieG1lZ2EyIiwgICAuaW5pdGZuID0gYXZyX3ht ZWdhMl9pbml0Zm59LAorICAgIHsgICAubmFtZSA9ICJ4bWVnYTQiLCAgIC5pbml0Zm4gPSBhdnJf eG1lZ2E0X2luaXRmbn0sCisgICAgeyAgIC5uYW1lID0gInhtZWdhNSIsICAgLmluaXRmbiA9IGF2 cl94bWVnYTVfaW5pdGZufSwKKyAgICB7ICAgLm5hbWUgPSAieG1lZ2E2IiwgICAuaW5pdGZuID0g YXZyX3htZWdhNl9pbml0Zm59LAorICAgIHsgICAubmFtZSA9ICJ4bWVnYTciLCAgIC5pbml0Zm4g PSBhdnJfeG1lZ2E3X2luaXRmbn0sCisgICAgeyAgIC5uYW1lID0gImFueSIsICAgICAgLmluaXRm biA9IGF2cl9hbnlfaW5pdGZuIH0sCit9OworCitzdGF0aWMgZ2ludCAgICAgICAgIGF2cl9jcHVf bGlzdF9jb21wYXJlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnY29uc3Rwb2lu dGVyICAgICAgIGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdjb25zdHBvaW50 ZXIgICAgICAgYikKK3sKKyAgICBPYmplY3RDbGFzcyAgICAqY2xhc3NfYSA9IChPYmplY3RDbGFz cyAqKWE7CisgICAgT2JqZWN0Q2xhc3MgICAgKmNsYXNzX2IgPSAoT2JqZWN0Q2xhc3MgKiliOwor ICAgIGNvbnN0IGNoYXIgICAgICpuYW1lX2E7CisgICAgY29uc3QgY2hhciAgICAgKm5hbWVfYjsK KworICAgIG5hbWVfYSAgPSBvYmplY3RfY2xhc3NfZ2V0X25hbWUoY2xhc3NfYSk7CisgICAgbmFt ZV9iICA9IG9iamVjdF9jbGFzc19nZXRfbmFtZShjbGFzc19iKTsKKyAgICBpZiAoc3RyY21wKG5h bWVfYSwgImFueS0iIFRZUEVfQVZSX0NQVSkgPT0gMCkgeworICAgICAgICByZXR1cm4gMTsKKyAg ICB9IGVsc2UgaWYgKHN0cmNtcChuYW1lX2IsICJhbnktIiBUWVBFX0FWUl9DUFUpID09IDApIHsK KyAgICAgICAgcmV0dXJuIC0xOworICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBzdHJjbXAo bmFtZV9hLCBuYW1lX2IpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgICAgICAgICBhdnJfY3B1 X2xpc3RfZW50cnkoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyICAg ICAgICAgICAgZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIg ICAgICAgICAgICB1c2VyX2RhdGEpCit7CisgICAgT2JqZWN0Q2xhc3MgICAgKm9jID0gZGF0YTsK KyAgICBDUFVMaXN0U3RhdGUgICAqcyA9IHVzZXJfZGF0YTsKKyAgICBjb25zdCBjaGFyICAgICAq dHlwZW5hbWU7CisgICAgY2hhciAgICAgICAgICAgKm5hbWU7CisKKyAgICB0eXBlbmFtZSAgICA9 IG9iamVjdF9jbGFzc19nZXRfbmFtZShvYyk7CisgICAgbmFtZSAgICAgICAgPSBnX3N0cm5kdXAo dHlwZW5hbWUsIHN0cmxlbih0eXBlbmFtZSkgLSBzdHJsZW4oIi0iIFRZUEVfQVZSX0NQVSkpOwor ICAgICgqcy0+Y3B1X2ZwcmludGYpKHMtPmZpbGUsICIgICVzXG4iLCBuYW1lKTsKKyAgICBnX2Zy ZWUobmFtZSk7Cit9CisKK3ZvaWQgICAgICAgICAgICAgICAgYXZyX2NwdV9saXN0KAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICAgICAgICAgICAgICAgKmYsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGZfZnVuY3Rpb24gICAgY3B1X2ZwcmludGYp Cit7CisgICAgQ1BVTGlzdFN0YXRlIHMgPSB7CisgICAgICAgIC5maWxlID0gZiwKKyAgICAgICAg LmNwdV9mcHJpbnRmID0gY3B1X2ZwcmludGYsCisgICAgfTsKKyAgICBHU0xpc3QgKmxpc3Q7CisK KyAgICBsaXN0ICAgID0gb2JqZWN0X2NsYXNzX2dldF9saXN0KFRZUEVfQVZSX0NQVSwgZmFsc2Up OworICAgIGxpc3QgICAgPSBnX3NsaXN0X3NvcnQobGlzdCwgYXZyX2NwdV9saXN0X2NvbXBhcmUp OworICAgICgqY3B1X2ZwcmludGYpKGYsICJBdmFpbGFibGUgQ1BVczpcbiIpOworICAgIGdfc2xp c3RfZm9yZWFjaChsaXN0LCBhdnJfY3B1X2xpc3RfZW50cnksICZzKTsKKyAgICBnX3NsaXN0X2Zy ZWUobGlzdCk7Cit9CitBVlJDUFUgICAgICAgICAgICAgKmNwdV9hdnJfaW5pdCgKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAgICAgICAgICpjcHVfbW9kZWwpCit7 CisgICAgcmV0dXJuIEFWUl9DUFUoY3B1X2dlbmVyaWNfaW5pdChUWVBFX0FWUl9DUFUsIGNwdV9t b2RlbCkpOworfQorCitzdGF0aWMgdm9pZCBjcHVfcmVnaXN0ZXIoY29uc3QgQVZSQ1BVSW5mbyAq aW5mbykKK3sKKyAgICBUeXBlSW5mbyB0eXBlX2luZm8gPSB7CisgICAgICAgIC5wYXJlbnQgICAg ICAgICA9IFRZUEVfQVZSX0NQVSwKKyAgICAgICAgLmluc3RhbmNlX3NpemUgID0gc2l6ZW9mKEFW UkNQVSksCisgICAgICAgIC5pbnN0YW5jZV9pbml0ICA9IGluZm8tPmluaXRmbiwKKyAgICAgICAg LmNsYXNzX3NpemUgICAgID0gc2l6ZW9mKEFWUkNQVUNsYXNzKSwKKyAgICB9OworCisgICAgdHlw ZV9pbmZvLm5hbWUgID0gZ19zdHJkdXBfcHJpbnRmKCIlcy0iIFRZUEVfQVZSX0NQVSwgaW5mby0+ bmFtZSk7CisgICAgdHlwZV9yZWdpc3RlcigmdHlwZV9pbmZvKTsKKyAgICBnX2ZyZWUoKHZvaWQg Kil0eXBlX2luZm8ubmFtZSk7Cit9CisKK3N0YXRpYyBjb25zdCBUeXBlSW5mbyBhdnJfY3B1X3R5 cGVfaW5mbyA9IHsKKyAgICAubmFtZSAgICAgICAgICAgICAgID0gVFlQRV9BVlJfQ1BVLAorICAg IC5wYXJlbnQgICAgICAgICAgICAgPSBUWVBFX0NQVSwKKyAgICAuaW5zdGFuY2Vfc2l6ZSAgICAg ID0gc2l6ZW9mKEFWUkNQVSksCisgICAgLmluc3RhbmNlX2luaXQgICAgICA9IGF2cl9jcHVfaW5p dGZuLAorICAgIC5jbGFzc19zaXplICAgICAgICAgPSBzaXplb2YoQVZSQ1BVQ2xhc3MpLAorICAg IC5jbGFzc19pbml0ICAgICAgICAgPSBhdnJfY3B1X2NsYXNzX2luaXQsCisgICAgLmFic3RyYWN0 ICAgICAgICAgICA9IHRydWUsCit9OworCitzdGF0aWMgdm9pZCBhdnJfY3B1X3JlZ2lzdGVyX3R5 cGVzKHZvaWQpCit7CisgICAgaW50IGk7CisgICAgdHlwZV9yZWdpc3Rlcl9zdGF0aWMoJmF2cl9j cHVfdHlwZV9pbmZvKTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGF2cl9jcHVz KTsgaSsrKSB7CisgICAgICAgIGNwdV9yZWdpc3RlcigmYXZyX2NwdXNbaV0pOworICAgIH0KK30K KwordHlwZV9pbml0KGF2cl9jcHVfcmVnaXN0ZXJfdHlwZXMpCmRpZmYgLS1naXQgYS90YXJnZXQt YXZyL2NwdS5oIGIvdGFyZ2V0LWF2ci9jcHUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi4yYjY3ZTg5Ci0tLSAvZGV2L251bGwKKysrIGIvdGFyZ2V0LWF2ci9jcHUuaApAQCAt MCwwICsxLDIxMSBAQAorLyoKKyAqIFFFTVUgQVZSIENQVQorICoKKyAqIENvcHlyaWdodCAoYykg MjAxNiBNaWNoYWVsIFJvbG5paworICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv biAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICog TGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCBzZWUKKyAqIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC0yLjEuaHRtbD4KKyAqLworCisjaWYgIWRlZmluZWQo X19DUFVfQVZSX0hfXykKKyNkZWZpbmUgX19DUFVfQVZSX0hfXworCisjaW5jbHVkZSAicWVtdS1j b21tb24uaCIKKworI2RlZmluZSBUQVJHRVRfTE9OR19CSVRTICAgICAgICAgICAgMzIKKworI2Rl ZmluZSBDUFVBcmNoU3RhdGUgc3RydWN0IENQVUFWUlN0YXRlCisKKyNkZWZpbmUgVEFSR0VUX0lT X0xJRU5ESUFOIDEKKworI2luY2x1ZGUgImV4ZWMvY3B1LWRlZnMuaCIKKyNpbmNsdWRlICJmcHUv c29mdGZsb2F0LmgiCisKKyNkZWZpbmUgVEFSR0VUX1BBR0VfQklUUyAgICAgICAgICAgIDgKKyNk ZWZpbmUgVEFSR0VUX1BIWVNfQUREUl9TUEFDRV9CSVRTIDI0CisjZGVmaW5lIFRBUkdFVF9WSVJU X0FERFJfU1BBQ0VfQklUUyAyNAorI2RlZmluZSBOQl9NTVVfTU9ERVMgICAgICAgICAgICAgICAg MgorCisjZGVmaW5lIENPREVfSU5ERVggICAgICAgICAgICAgICAgICAwCisjZGVmaW5lIERBVEFf SU5ERVggICAgICAgICAgICAgICAgICAxCisKKyNkZWZpbmUgRVhDUF9SRVNFVCAgICAgICAgICAg ICAgICAgIDEKKyNkZWZpbmUgRVhDUF9JTlQobikgICAgICAgICAgICAgICAgIChFWENQX1JFU0VU ICsgKG4pICsgMSkKKworI2RlZmluZSBQSFlTX0FERFJfTUFTSyAgICAgICAgICAgICAgMHhmZmYw MDAwMAorI2RlZmluZSBQSFlTX0NPREVfQkFTRSAgICAgICAgICAgICAgMHgwMDAwMDAwMAorI2Rl ZmluZSBQSFlTX0RBVEFfQkFTRSAgICAgICAgICAgICAgMHgwMDgwMDAwMAorCitlbnVtICAgIGF2 cl9mZWF0dXJlcyB7CisgICAgQVZSX0ZFQVRVUkVfU1JBTSwKKworICAgIEFWUl9GRUFUVVJFXzFf QllURV9QQywKKyAgICBBVlJfRkVBVFVSRV8yX0JZVEVfUEMsCisgICAgQVZSX0ZFQVRVUkVfM19C WVRFX1BDLAorCisgICAgQVZSX0ZFQVRVUkVfMV9CWVRFX1NQLAorICAgIEFWUl9GRUFUVVJFXzJf QllURV9TUCwKKworICAgIEFWUl9GRUFUVVJFX0JSRUFLLAorICAgIEFWUl9GRUFUVVJFX0RFUywK KyAgICBBVlJfRkVBVFVSRV9STVcsICAgICAgICAvKiAgUmVhZCBNb2RpZnkgV3JpdGUgLSBYQ0gg TEFDIExBUyBMQVQgICAgICAgICovCisKKyAgICBBVlJfRkVBVFVSRV9FSUpNUF9FSUNBTEwsCisg ICAgQVZSX0ZFQVRVUkVfSUpNUF9JQ0FMTCwKKyAgICBBVlJfRkVBVFVSRV9KTVBfQ0FMTCwKKwor ICAgIEFWUl9GRUFUVVJFX0FESVdfU0JJVywKKworICAgIEFWUl9GRUFUVVJFX1NQTSwKKyAgICBB VlJfRkVBVFVSRV9TUE1YLAorCisgICAgQVZSX0ZFQVRVUkVfRUxQTVgsCisgICAgQVZSX0ZFQVRV UkVfRUxQTSwKKyAgICBBVlJfRkVBVFVSRV9MUE1YLAorICAgIEFWUl9GRUFUVVJFX0xQTSwKKwor ICAgIEFWUl9GRUFUVVJFX01PVlcsCisgICAgQVZSX0ZFQVRVUkVfTVVMLAorICAgIEFWUl9GRUFU VVJFX1JBTVBELAorICAgIEFWUl9GRUFUVVJFX1JBTVBYLAorICAgIEFWUl9GRUFUVVJFX1JBTVBZ LAorICAgIEFWUl9GRUFUVVJFX1JBTVBaLAorfTsKKworCit0eXBlZGVmIHN0cnVjdCBDUFVBVlJT dGF0ZSBDUFVBVlJTdGF0ZTsKKworc3RydWN0IENQVUFWUlN0YXRlIHsKKyAgICB1aW50MzJfdCAg ICAgICAgcGM7ICAgICAvKiAgMjIgYml0cyAgICAgICAgICovCisKKyAgICB1aW50MzJfdCAgICAg ICAgc3JlZ0M7ICAvKiAgIDEgYml0cyAgICAgICAgICovCisgICAgdWludDMyX3QgICAgICAgIHNy ZWdaOyAgLyogICAxIGJpdHMgICAgICAgICAqLworICAgIHVpbnQzMl90ICAgICAgICBzcmVnTjsg IC8qICAgMSBiaXRzICAgICAgICAgKi8KKyAgICB1aW50MzJfdCAgICAgICAgc3JlZ1Y7ICAvKiAg IDEgYml0cyAgICAgICAgICovCisgICAgdWludDMyX3QgICAgICAgIHNyZWdTOyAgLyogICAxIGJp dHMgICAgICAgICAqLworICAgIHVpbnQzMl90ICAgICAgICBzcmVnSDsgIC8qICAgMSBiaXRzICAg ICAgICAgKi8KKyAgICB1aW50MzJfdCAgICAgICAgc3JlZ1Q7ICAvKiAgIDEgYml0cyAgICAgICAg ICovCisgICAgdWludDMyX3QgICAgICAgIHNyZWdJOyAgLyogICAxIGJpdHMgICAgICAgICAqLwor CisgICAgdWludDMyX3QgICAgICAgIHJhbXBEOyAgLyogICA4IGJpdHMgICAgICAgICAqLworICAg IHVpbnQzMl90ICAgICAgICByYW1wWDsgIC8qICAgOCBiaXRzICAgICAgICAgKi8KKyAgICB1aW50 MzJfdCAgICAgICAgcmFtcFk7ICAvKiAgIDggYml0cyAgICAgICAgICovCisgICAgdWludDMyX3Qg ICAgICAgIHJhbXBaOyAgLyogICA4IGJpdHMgICAgICAgICAqLworCisgICAgdWludDMyX3QgICAg ICAgIGlvWzY0XTsgLyogICA4IGJpdHMgZWFjaCAgICAqLworICAgIHVpbnQzMl90ICAgICAgICBy WzMyXTsgIC8qICAgOCBiaXRzIGVhY2ggICAgKi8KKyAgICB1aW50MzJfdCAgICAgICAgZWluZDsg ICAvKiAgIDggYml0cyAgICAgICAgICovCisgICAgdWludDMyX3QgICAgICAgIHNwOyAgICAgLyog ICA4IGJpdHMgICAgICAgICAqLworCisKKyAgICB1aW50NjRfdCAgICAgICAgaW50c3JjOyAvKiAg aW50ZXJydXB0IHNvdXJjZXMgICAqLworCisgICAgdWludDMyX3QgICAgICAgIGZlYXR1cmVzOwor CisgICAgLyogVGhvc2UgcmVzb3VyY2VzIGFyZSB1c2VkIG9ubHkgaW4gUUVNVSBjb3JlICovCisg ICAgQ1BVX0NPTU1PTgorfTsKKworc3RhdGljIGlubGluZSBpbnQgYXZyX2ZlYXR1cmUoCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENQVUFWUlN0YXRlICAgICAgICAqZW52LAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgIGZlYXR1cmUp Cit7CisgICAgcmV0dXJuIChlbnYtPmZlYXR1cmVzICYgKDFVTCA8PCBmZWF0dXJlKSkgIT0gMDsK K30KKworc3RhdGljIGlubGluZSB2b2lkICBhdnJfc2V0X2ZlYXR1cmUoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIENQVUFWUlN0YXRlICAgICAgICAqZW52LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgIGZlYXR1cmUpCit7CisgICAg ZW52LT5mZWF0dXJlcyAgIHw9ICgxVWwgPDwgZmVhdHVyZSk7Cit9CitzdGF0aWMgaW5saW5lIHZv aWQgIGF2cl9kZWxfZmVhdHVyZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BV QVZSU3RhdGUgICAgICAgICplbnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCAgICAgICAgICAgICAgICAgZmVhdHVyZSkKK3sKKyAgICBlbnYtPmZlYXR1cmVzICAgJj0gfigx VWwgPDwgZmVhdHVyZSk7Cit9CisKKyNkZWZpbmUgY3B1X2xpc3QgICAgICAgICAgICBhdnJfY3B1 X2xpc3QKKyNkZWZpbmUgY3B1X2V4ZWMgICAgICAgICAgICBjcHVfYXZyX2V4ZWMKKyNkZWZpbmUg Y3B1X3NpZ25hbF9oYW5kbGVyICBjcHVfYXZyX3NpZ25hbF9oYW5kbGVyCisKKyNpbmNsdWRlICJl eGVjL2NwdS1hbGwuaCIKKyNpbmNsdWRlICJjcHUtcW9tLmgiCisKK3N0YXRpYyBpbmxpbmUgaW50 ICAgY3B1X21tdV9pbmRleCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BVQVZS U3RhdGUgICAgICAgICplbnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg ICAgICAgICAgICAgICAgaWZldGNoKQoreworICAgIHJldHVybiAgMDsKK30KKwordm9pZCAgICAg ICAgICAgICAgICBhdnJfdHJhbnNsYXRlX2luaXQodm9pZCk7CisKK0FWUkNQVSAgICAgICAgICAg ICAqY3B1X2F2cl9pbml0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj aGFyICAgICAgICAgKmNwdV9tb2RlbCk7CisKKyNkZWZpbmUgY3B1X2luaXQoY3B1X21vZGVsKSBD UFUoY3B1X2F2cl9pbml0KGNwdV9tb2RlbCkpCisKK3ZvaWQgICAgICAgICAgICAgICAgYXZyX2Nw dV9saXN0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICAgICAgICAgICAg ICAgKmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGZfZnVuY3Rpb24g ICAgY3B1X2ZwcmludGYpOworaW50ICAgICAgICAgICAgICAgICBjcHVfYXZyX2V4ZWMoCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENQVVN0YXRlICAgICAgICAgICAqY3B1KTsKK2lu dCAgICAgICAgICAgICAgICAgY3B1X2F2cl9zaWduYWxfaGFuZGxlcigKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICBob3N0X3NpZ251bSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAgICAgICAgICAgICAgICpwaW5mbywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAgICAgICAgICAgICAgICpwdWMpOwor aW50ICAgICAgICAgICAgICAgICBhdnJfY3B1X2hhbmRsZV9tbXVfZmF1bHQoCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIENQVVN0YXRlICAgICAgICAgICAqY3B1LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB2YWRkciAgICAgICAgICAgICAgIGFkZHJlc3MsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgcncsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgbW11X2lkeCk7 CitpbnQgICAgICAgICAgICAgICAgIGF2cl9jcHVfbWVtb3J5X3J3X2RlYnVnKAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBDUFVTdGF0ZSAgICAgICAgICAgKmNzLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB2YWRkciAgICAgICAgICAgICAgIGFkZHJlc3MsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgICAgICAgICAgICAqYnVmLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgIGxlbiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAgICAgICAgICAgICAgICBpc193cml0 ZSk7CisKKyNpZm5kZWYgQ09ORklHX1VTRVJfT05MWQorUUVNVV9OT1JFVFVSTiB2b2lkICBhdnJf Y3B1X3VuYXNzaWduZWRfYWNjZXNzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD UFVTdGF0ZSAgICAgICAgICAgKmNwdSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aHdhZGRyICAgICAgICAgICAgICBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBib29sICAgICAgICAgICAgICAgIGlzX3dyaXRlLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBib29sICAgICAgICAgICAgICAgIGlzX2V4ZWMsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgdW51c2VkLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCAgICAgICAgICAgIHNpemUpOworI2VuZGlmCisKK3N0 YXRpYyBpbmxpbmUgdm9pZCAgY3B1X2dldF90Yl9jcHVfc3RhdGUoCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIENQVUFWUlN0YXRlICAgICAgICAqZW52LAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcgICAgICAgKnBjLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcgICAgICAgKmNzX2Jhc2UsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICAgICAgICAgICAqcGZsYWdzKQoreworICAg ICpwYyAgICAgICAgID0gZW52LT5wYyAqIDI7CisgICAgKmNzX2Jhc2UgICAgPSAwOworICAgICpw ZmxhZ3MgICAgID0gMDsKK30KKworc3RhdGljIGlubGluZSBpbnQgICBjcHVfaW50ZXJydXB0c19l bmFibGVkKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUFVBVlJTdGF0ZSAgICAg ICAgKmVudjEpCit7CisgICAgcmV0dXJuICBlbnYxLT5zcmVnSSAhPSAwOworfQorCisjaW5jbHVk ZSAiZXhlYy9leGVjLWFsbC5oIgorCisjZW5kaWYgLyogIWRlZmluZWQgKF9fQ1BVX0FWUl9IX18p ICovCmRpZmYgLS1naXQgYS90YXJnZXQtYXZyL2RlY29kZS5jIGIvdGFyZ2V0LWF2ci9kZWNvZGUu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NWE3MDM2Ci0tLSAvZGV2L251 bGwKKysrIGIvdGFyZ2V0LWF2ci9kZWNvZGUuYwpAQCAtMCwwICsxLDc0MCBAQAorLyoKKyAqIFFF TVUgQVZSIENQVQorICoKKyAqIENvcHlyaWdodCAoYykgMjAxNiBNaWNoYWVsIFJvbG5paworICoK KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9y IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5 IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMg bGlicmFyeTsgaWYgbm90LCBzZWUKKyAqIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdw bC0yLjEuaHRtbD4KKyAqLworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSAiZGVjb2Rl LmgiCisKK3VpbnQzMl90ICAgIGdldF9vcGNvZGUoCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1aW50OF90IGNvbnN0ICAgICAgKmNvZGUsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCAgICAgICAgICAgIGJpdEJhc2UsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCAgICAgICAgICAgIGJpdFNzaXplKTsK KwordHlwZWRlZiBpbnQgKCpleGVjdXRlX2Z1bmN0aW9uX3QpKAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgQ1BVQVZSU3RhdGUgICAgICAgICplbnYsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBEaXNhc0NvbnRleHQgICAgICAgKmN0eCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgY29uc3QgICAgICAqb3Bjb2RlKTsK K3ZvaWQgICAgICAgIGF2cl9kZWNvZGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1aW50MzJfdCAgICAgICAgICAgIHBjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdWludDMyX3QgICAgICAgICAgICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1aW50OF90IGNvbnN0ICAgICAgKmNvZGUsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRlX2Z1bmN0aW9uX3QgKmV4ZWN1dGUpOwordm9p ZCAgICAgICAgYXZyX2RlY29kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVpbnQzMl90ICAgICAgICAgICAgcGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1aW50MzJfdCAgICAgICAgICAgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVpbnQ4X3QgY29uc3QgICAgICAqY29kZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGV4ZWN1dGVfZnVuY3Rpb25fdCAqZXhlY3V0ZSkKK3sKKyAgICB1 aW50MzJfdCAgICBvcGNvZGUgICA9IGdldF9vcGNvZGUoY29kZSwgMCwgMTYpOworICAgIHN3aXRj aCAob3Bjb2RlICYgMHgwMDAwZDAwMCkgeworICAgICAgICBjYXNlICAgIDB4MDAwMDAwMDA6IHsK KyAgICAgICAgICAgIHVpbnQzMl90ICAgIG9wY29kZSAgID0gZ2V0X29wY29kZShjb2RlLCAwLCAx Nik7CisgICAgICAgICAgICBzd2l0Y2ggKG9wY29kZSAmIDB4MDAwMDJjMDApIHsKKyAgICAgICAg ICAgICAgICBjYXNlICAgIDB4MDAwMDAwMDA6IHsKKyAgICAgICAgICAgICAgICAgICAgdWludDMy X3QgICAgb3Bjb2RlICAgPSBnZXRfb3Bjb2RlKGNvZGUsIDAsIDE2KTsKKyAgICAgICAgICAgICAg ICAgICAgc3dpdGNoIChvcGNvZGUgJiAweDAwMDAwMzAwKSB7CisgICAgICAgICAgICAgICAgICAg ICAgICBjYXNlICAgIDB4MDAwMDAwMDA6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAq bGVuZ3RoICA9IDE2OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICpleGVjdXRlID0gKGV4 ZWN1dGVfZnVuY3Rpb25fdCkmYXZyX2V4ZWN1dGVfTk9QXzAwMDAwMDAwMDAwMDAwMDA7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICAgIDB4MDAwMDAxMDA6IHsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAqbGVuZ3RoICA9IDE2OworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICpleGVjdXRlID0gKGV4ZWN1dGVfZnVuY3Rpb25fdCkmYXZyX2V4ZWN1dGVfTU9WV18w MDAwMDAwMWFhYWFiYmJiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAgICAw eDAwMDAwMjAwOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmxlbmd0aCAgPSAxNjsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZXhlY3V0ZSA9IChleGVjdXRlX2Z1bmN0aW9u X3QpJmF2cl9leGVjdXRlX01VTFNfMDAwMDAwMTBhYWFhYmJiYjsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICAgICAgICAgICAgIGNhc2UgICAgMHgwMDAwMDMwMDogeworICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVpbnQzMl90ICAgIG9wY29kZSAgID0gZ2V0X29wY29kZShjb2RlLCAwLCAxNik7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChvcGNvZGUgJiAweDAwMDAwMDg4KSB7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgICAgMHgwMDAwMDAwMDogewor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmxlbmd0aCAgPSAxNjsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpleGVjdXRlID0gKGV4ZWN1dGVfZnVuY3Rp b25fdCkmYXZyX2V4ZWN1dGVfTVVMU1VfMDAwMDAwMTEwYWFhMGJiYjsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgICAgMHgwMDAwMDAw ODogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmxlbmd0aCAgPSAxNjsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpleGVjdXRlID0gKGV4ZWN1dGVf ZnVuY3Rpb25fdCkmYXZyX2V4ZWN1dGVfRk1VTF8wMDAwMDAxMTBhYWExYmJiOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAgICAweDAw MDAwMDgwOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbGVuZ3RoICA9 IDE2OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmV4ZWN1dGUgPSAoZXhl Y3V0ZV9mdW5jdGlvbl90KSZhdnJfZXhlY3V0ZV9GTVVMU18wMDAwMDAxMTFhYWEwYmJiOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAg ICAweDAwMDAwMDg4OiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbGVu Z3RoICA9IDE2OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmV4ZWN1dGUg PSAoZXhlY3V0ZV9mdW5jdGlvbl90KSZhdnJfZXhlY3V0ZV9GTVVMU1VfMDAwMDAwMTExYWFhMWJi YjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlICAgIDB4MDAwMDA0MDA6IHsK KyAgICAgICAgICAgICAgICAgICAgKmxlbmd0aCAgPSAxNjsKKyAgICAgICAgICAgICAgICAgICAg KmV4ZWN1dGUgPSAoZXhlY3V0ZV9mdW5jdGlvbl90KSZhdnJfZXhlY3V0ZV9DUENfMDAwMDAxYWJi YmJiY2NjYzsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgICAgIGNhc2UgICAgMHgwMDAwMDgwMDogeworICAgICAgICAgICAgICAgICAg ICAqbGVuZ3RoICA9IDE2OworICAgICAgICAgICAgICAgICAgICAqZXhlY3V0ZSA9IChleGVjdXRl X2Z1bmN0aW9uX3QpJmF2cl9leGVjdXRlX1NCQ18wMDAwMTBhYmJiYmJjY2NjOworICAgICAgICAg ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2Fz ZSAgICAweDAwMDAwYzAwOiB7CisgICAgICAgICAgICAgICAgICAgICpsZW5ndGggID0gMTY7Cisg ICAgICAgICAgICAgICAgICAgICpleGVjdXRlID0gKGV4ZWN1dGVfZnVuY3Rpb25fdCkmYXZyX2V4 ZWN1dGVfQUREXzAwMDAxMWFiYmJiYmNjY2M7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlICAgIDB4MDAwMDIwMDA6IHsK KyAgICAgICAgICAgICAgICAgICAgKmxlbmd0aCAgPSAxNjsKKyAgICAgICAgICAgICAgICAgICAg KmV4ZWN1dGUgPSAoZXhlY3V0ZV9mdW5jdGlvbl90KSZhdnJfZXhlY3V0ZV9BTkRfMDAxMDAwYWJi YmJiY2NjYzsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgICAgIGNhc2UgICAgMHgwMDAwMjQwMDogeworICAgICAgICAgICAgICAgICAg ICAqbGVuZ3RoICA9IDE2OworICAgICAgICAgICAgICAgICAgICAqZXhlY3V0ZSA9IChleGVjdXRl X2Z1bmN0aW9uX3QpJmF2cl9leGVjdXRlX0VPUl8wMDEwMDFhYmJiYmJjY2NjOworICAgICAgICAg ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2Fz ZSAgICAweDAwMDAyODAwOiB7CisgICAgICAgICAgICAgICAgICAgICpsZW5ndGggID0gMTY7Cisg ICAgICAgICAgICAgICAgICAgICpleGVjdXRlID0gKGV4ZWN1dGVfZnVuY3Rpb25fdCkmYXZyX2V4 ZWN1dGVfT1JfMDAxMDEwYWJiYmJiY2NjYzsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgICAgMHgwMDAwMmMwMDogewor ICAgICAgICAgICAgICAgICAgICAqbGVuZ3RoICA9IDE2OworICAgICAgICAgICAgICAgICAgICAq ZXhlY3V0ZSA9IChleGVjdXRlX2Z1bmN0aW9uX3QpJmF2cl9leGVjdXRlX01PVl8wMDEwMTFhYmJi YmJjY2NjOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNl ICAgIDB4MDAwMDEwMDA6IHsKKyAgICAgICAgICAgIHVpbnQzMl90ICAgIG9wY29kZSAgID0gZ2V0 X29wY29kZShjb2RlLCAwLCAxNik7CisgICAgICAgICAgICBzd2l0Y2ggKG9wY29kZSAmIDB4MDAw MDIwMDApIHsKKyAgICAgICAgICAgICAgICBjYXNlICAgIDB4MDAwMDAwMDA6IHsKKyAgICAgICAg ICAgICAgICAgICAgdWludDMyX3QgICAgb3Bjb2RlICAgPSBnZXRfb3Bjb2RlKGNvZGUsIDAsIDE2 KTsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChvcGNvZGUgJiAweDAwMDAwYzAwKSB7Cisg ICAgICAgICAgICAgICAgICAgICAgICBjYXNlICAgIDB4MDAwMDAwMDA6IHsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAqbGVuZ3RoICA9IDE2OworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICpleGVjdXRlID0gKGV4ZWN1dGVfZnVuY3Rpb25fdCkmYXZyX2V4ZWN1dGVfQ1BTRV8wMDAx MDBhYmJiYmJjY2NjOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAgICAweDAw MDAwNDAwOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmxlbmd0aCAgPSAxNjsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAqZXhlY3V0ZSA9IChleGVjdXRlX2Z1bmN0aW9uX3Qp JmF2cl9leGVjdXRlX0NQXzAwMDEwMWFiYmJiYmNjY2M7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg ICAgICAgICBjYXNlICAgIDB4MDAwMDA4MDA6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAqbGVuZ3RoICA9IDE2OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICpleGVjdXRlID0g KGV4ZWN1dGVfZnVuY3Rpb25fdCkmYXZyX2V4ZWN1dGVfU1VCXzAwMDExMGFiYmJiYmNjY2M7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICAgIDB4MDAwMDBjMDA6IHsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqbGVuZ3RoICA9IDE2OworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICpleGVjdXRlID0gKGV4ZWN1dGVfZnVuY3Rpb25fdCkmYXZyX2V4ZWN1dGVfQURD XzAwMDExMWFiYmJiYmNjY2M7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNh c2UgICAgMHgwMDAwMjAwMDogeworICAgICAgICAgICAgICAgICAgICAqbGVuZ3RoICA9IDE2Owor ICAgICAgICAgICAgICAgICAgICAqZXhlY3V0ZSA9IChleGVjdXRlX2Z1bmN0aW9uX3QpJmF2cl9l eGVjdXRlX0NQSV8wMDExYWFhYWJiYmJjY2NjOworICAgICAgICAgICAgICAgICAgICBicmVhazsK KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAg ICAgICAgfQorICAgICAgICBjYXNlICAgIDB4MDAwMDQwMDA6IHsKKyAgICAgICAgICAgIHVpbnQz Ml90ICAgIG9wY29kZSAgID0gZ2V0X29wY29kZShjb2RlLCAwLCAxNik7CisgICAgICAgICAgICBz d2l0Y2ggKG9wY29kZSAmIDB4MDAwMDIwMDApIHsKKyAgICAgICAgICAgICAgICBjYXNlICAgIDB4 MDAwMDAwMDA6IHsKKyAgICAgICAgICAgICAgICAgICAgKmxlbmd0aCAgPSAxNjsKKyAgICAgICAg ICAgICAgICAgICAgKmV4ZWN1dGUgPSAoZXhlY3V0ZV9mdW5jdGlvbl90KSZhdnJfZXhlY3V0ZV9T QkNJXzAxMDBhYWFhYmJiYmNjY2M7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlICAgIDB4MDAwMDIwMDA6IHsKKyAgICAg ICAgICAgICAgICAgICAgKmxlbmd0aCAgPSAxNjsKKyAgICAgICAgICAgICAgICAgICAgKmV4ZWN1 dGUgPSAoZXhlY3V0ZV9mdW5jdGlvbl90KSZhdnJfZXhlY3V0ZV9PUklfMDExMGFhYWFiYmJiY2Nj YzsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSAgICAw eDAwMDA1MDAwOiB7CisgICAgICAgICAgICB1aW50MzJfdCAgICBvcGNvZGUgICA9IGdldF9vcGNv ZGUoY29kZSwgMCwgMTYpOworICAgICAgICAgICAgc3dpdGNoIChvcGNvZGUgJiAweDAwMDAyMDAw KSB7CisgICAgICAgICAgICAgICAgY2FzZSAgICAweDAwMDAwMDAwOiB7CisgICAgICAgICAgICAg ICAgICAgICpsZW5ndGggID0gMTY7CisgICAgICAgICAgICAgICAgICAgICpleGVjdXRlID0gKGV4 ZWN1dGVfZnVuY3Rpb25fdCkmYXZyX2V4ZWN1dGVfU1VCSV8wMTAxYWFhYWJiYmJjY2NjOworICAg ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ICAgY2FzZSAgICAweDAwMDAyMDAwOiB7CisgICAgICAgICAgICAgICAgICAgICpsZW5ndGggID0g MTY7CisgICAgICAgICAgICAgICAgICAgICpleGVjdXRlID0gKGV4ZWN1dGVfZnVuY3Rpb25fdCkm YXZyX2V4ZWN1dGVfQU5ESV8wMTExYWFhYWJiYmJjY2NjOworICAgICAgICAgICAgICAgICAgICBi cmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVh azsKKyAgICAgICAgfQorICAgICAgICBjYXNlICAgIDB4MDAwMDgwMDA6IHsKKyAgICAgICAgICAg IHVpbnQzMl90ICAgIG9wY29kZSAgID0gZ2V0X29wY29kZShjb2RlLCAwLCAxNik7CisgICAgICAg ICAgICBzd2l0Y2ggKG9wY29kZSAmIDB4MDAwMDAyMDgpIHsKKyAgICAgICAgICAgICAgICBjYXNl ICAgIDB4MDAwMDAwMDA6IHsKKyAgICAgICAgICAgICAgICAgICAgKmxlbmd0aCAgPSAxNjsKKyAg ICAgICAgICAgICAgICAgICAgKmV4ZWN1dGUgPSAoZXhlY3V0ZV9mdW5jdGlvbl90KSZhdnJfZXhl Y3V0ZV9MRERaXzEwYTBiYjBjY2NjYzBkZGQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlICAgIDB4MDAwMDAwMDg6IHsK KyAgICAgICAgICAgICAgICAgICAgKmxlbmd0aCAgPSAxNjsKKyAgICAgICAgICAgICAgICAgICAg KmV4ZWN1dGUgPSAoZXhlY3V0ZV9mdW5jdGlvbl90KSZhdnJfZXhlY3V0ZV9MRERZXzEwYTBiYjBj Y2NjYzFkZGQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgICBjYXNlICAgIDB4MDAwMDAyMDA6IHsKKyAgICAgICAgICAgICAgICAg ICAgKmxlbmd0aCAgPSAxNjsKKyAgICAgICAgICAgICAgICAgICAgKmV4ZWN1dGUgPSAoZXhlY3V0 ZV9mdW5jdGlvbl90KSZhdnJfZXhlY3V0ZV9TVERaXzEwYTBiYjFjY2NjYzBkZGQ7CisgICAgICAg ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBj YXNlICAgIDB4MDAwMDAyMDg6IHsKKyAgICAgICAgICAgICAgICAgICAgKmxlbmd0aCAgPSAxNjsK KyAgICAgICAgICAgICAgICAgICAgKmV4ZWN1dGUgPSAoZXhlY3V0ZV9mdW5jdGlvbl90KSZhdnJf ZXhlY3V0ZV9TVERZXzEwYTBiYjFjY2NjYzFkZGQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICB9CisgICAgICAgIGNhc2UgICAgMHgwMDAwOTAwMDogeworICAgICAgICAgICAgdWlu dDMyX3QgICAgb3Bjb2RlICAgPSBnZXRfb3Bjb2RlKGNvZGUsIDAsIDE2KTsKKyAgICAgICAgICAg IHN3aXRjaCAob3Bjb2RlICYgMHgwMDAwMjgwMCkgeworICAgICAgICAgICAgICAgIGNhc2UgICAg MHgwMDAwMDAwMDogeworICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAgICBvcGNvZGUgICA9 IGdldF9vcGNvZGUoY29kZSwgMCwgMTYpOworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG9w Y29kZSAmIDB4MDAwMDA2MDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgICAgMHgw MDAwMDAwMDogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICAgIG9wY29k ZSAgID0gZ2V0X29wY29kZShjb2RlLCAwLCAxNik7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3dpdGNoIChvcGNvZGUgJiAweDAwMDAwMDBmKSB7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNhc2UgICAgMHgwMDAwMDAwMDogeworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKmxlbmd0aCAgPSAzMjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICpleGVjdXRlID0gKGV4ZWN1dGVfZnVuY3Rpb25fdCkmYXZyX2V4ZWN1dGVfTERTXzEw MDEwMDBhYWFhYTAwMDBiYmJiYmJiYmJiYmJiYmJiOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAgICAweDAwMDAwMDAxOiB7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbGVuZ3RoICA9IDE2OworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKmV4ZWN1dGUgPSAoZXhlY3V0ZV9mdW5jdGlvbl90 KSZhdnJfZXhlY3V0ZV9MRFoyXzEwMDEwMDBhYWFhYTAwMDE7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICAgIDB4MDAwMDAwMDI6IHsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpsZW5ndGggID0gMTY7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZXhlY3V0ZSA9IChleGVjdXRlX2Z1bmN0 aW9uX3QpJmF2cl9leGVjdXRlX0xEWjNfMTAwMTAwMGFhYWFhMDAxMDsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgICAgMHgwMDAwMDAw MzogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY2FzZSAgICAweDAwMDAwMDA0OiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAqbGVuZ3RoICA9IDE2OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KmV4ZWN1dGUgPSAoZXhlY3V0ZV9mdW5jdGlvbl90KSZhdnJfZXhlY3V0ZV9MUE0yXzEwMDEwMDBh YWFhYTAxMDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjYXNlICAgIDB4MDAwMDAwMDU6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICpsZW5ndGggID0gMTY7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAqZXhlY3V0ZSA9IChleGVjdXRlX2Z1bmN0aW9uX3QpJmF2cl9leGVjdXRlX0xQTVhfMTAw MTAwMGFhYWFhMDEwMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNhc2UgICAgMHgwMDAwMDAwNjogeworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKmxlbmd0aCAgPSAxNjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICpleGVjdXRlID0gKGV4ZWN1dGVfZnVuY3Rpb25fdCkmYXZyX2V4ZWN1dGVfRUxQ TTJfMTAwMTAwMGFhYWFhMDExMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNhc2UgICAgMHgwMDAwMDAwNzogeworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKmxlbmd0aCAgPSAxNjsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICpleGVjdXRlID0gKGV4ZWN1dGVfZnVuY3Rpb25fdCkmYXZyX2V4ZWN1 dGVfRUxQTVhfMTAwMTAwMGFhYWFhMDExMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgICAgMHgwMDAwMDAwODogeworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAgICAweDAw MDAwMDA5OiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbGVuZ3RoICA9 IDE2OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmV4ZWN1dGUgPSAoZXhl Y3V0ZV9mdW5jdGlvbl90KSZhdnJfZXhlY3V0ZV9MRFkyXzEwMDEwMDBhYWFhYTEwMDE7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICAg IDB4MDAwMDAwMGE6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpsZW5n dGggID0gMTY7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZXhlY3V0ZSA9 IChleGVjdXRlX2Z1bmN0aW9uX3QpJmF2cl9leGVjdXRlX0xEWTNfMTAwMTAwMGFhYWFhMTAxMDsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNh c2UgICAgMHgwMDAwMDAwYjogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY2FzZSAgICAweDAwMDAwMDBjOiB7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAqbGVuZ3RoICA9IDE2OworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKmV4ZWN1dGUgPSAoZXhlY3V0ZV9mdW5jdGlvbl90KSZhdnJfZXhlY3V0 ZV9MRFgxXzEwMDEwMDBhYWFhYTExMDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjYXNlICAgIDB4MDAwMDAwMGQ6IHsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICpsZW5ndGggID0gMTY7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAqZXhlY3V0ZSA9IChleGVjdXRlX2Z1bmN0aW9uX3QpJmF2cl9l eGVjdXRlX0xEWDJfMTAwMTAwMGFhYWFhMTEwMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgICAgMHgwMDAwMDAwZTogeworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmxlbmd0aCAgPSAxNjsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICpleGVjdXRlID0gKGV4ZWN1dGVfZnVuY3Rpb25fdCkm YXZyX2V4ZWN1dGVfTERYM18xMDAxMDAwYWFhYWExMTEwOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAgICAweDAwMDAwMDBmOiB7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbGVuZ3RoICA9IDE2OworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmV4ZWN1dGUgPSAoZXhlY3V0ZV9mdW5jdGlv bl90KSZhdnJfZXhlY3V0ZV9QT1BfMTAwMTAwMGFhYWFhMTExMTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg ICAgICAgICAgY2FzZSAgICAweDAwMDAwMjAwOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdWludDMyX3QgICAgb3Bjb2RlICAgPSBnZXRfb3Bjb2RlKGNvZGUsIDAsIDE2KTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG9wY29kZSAmIDB4MDAwMDAwMGYpIHsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAgICAweDAwMDAwMDAwOiB7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbGVuZ3RoICA9IDMyOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKmV4ZWN1dGUgPSAoZXhlY3V0ZV9mdW5jdGlvbl90 KSZhdnJfZXhlY3V0ZV9TVFNfMTAwMTAwMWFhYWFhMDAwMGJiYmJiYmJiYmJiYmJiYmI7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICAg IDB4MDAwMDAwMDE6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpsZW5n dGggID0gMTY7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZXhlY3V0ZSA9 IChleGVjdXRlX2Z1bmN0aW9uX3QpJmF2cl9leGVjdXRlX1NUWjJfMTAwMTAwMWFhYWFhMDAwMTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNh c2UgICAgMHgwMDAwMDAwMjogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Kmxlbmd0aCAgPSAxNjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpleGVj dXRlID0gKGV4ZWN1dGVfZnVuY3Rpb25fdCkmYXZyX2V4ZWN1dGVfU1RaM18xMDAxMDAxYWFhYWEw MDEwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY2FzZSAgICAweDAwMDAwMDAzOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjYXNlICAgIDB4MDAwMDAwMDQ6IHsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICpsZW5ndGggID0gMTY7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAqZXhlY3V0ZSA9IChleGVjdXRlX2Z1bmN0aW9uX3QpJmF2cl9l eGVjdXRlX1hDSF8xMDAxMDAxYWFhYWEwMTAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAgICAweDAwMDAwMDA1OiB7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbGVuZ3RoICA9IDE2OworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKmV4ZWN1dGUgPSAoZXhlY3V0ZV9mdW5jdGlvbl90KSZh dnJfZXhlY3V0ZV9MQVNfMTAwMTAwMWFhYWFhMDEwMTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgICAgMHgwMDAwMDAwNjogeworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmxlbmd0aCAgPSAxNjsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpleGVjdXRlID0gKGV4ZWN1dGVfZnVuY3Rpb25f dCkmYXZyX2V4ZWN1dGVfTEFDXzEwMDEwMDFhYWFhYTAxMTA7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICAgIDB4MDAwMDAwMDc6IHsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpsZW5ndGggID0gMTY7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZXhlY3V0ZSA9IChleGVjdXRlX2Z1bmN0 aW9uX3QpJmF2cl9leGVjdXRlX0xBVF8xMDAxMDAxYWFhYWEwMTExOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAgICAweDAwMDAwMDA4 OiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjYXNlICAgIDB4MDAwMDAwMDk6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICpsZW5ndGggID0gMTY7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq ZXhlY3V0ZSA9IChleGVjdXRlX2Z1bmN0aW9uX3QpJmF2cl9leGVjdXRlX1NUWTJfMTAwMTAwMWFh YWFhMTAwMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNhc2UgICAgMHgwMDAwMDAwYTogeworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKmxlbmd0aCAgPSAxNjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICpleGVjdXRlID0gKGV4ZWN1dGVfZnVuY3Rpb25fdCkmYXZyX2V4ZWN1dGVfU1RZM18xMDAx MDAxYWFhYWExMDEwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY2FzZSAgICAweDAwMDAwMDBiOiB7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICAgIDB4MDAwMDAwMGM6IHsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpsZW5ndGggID0gMTY7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZXhlY3V0ZSA9IChleGVjdXRlX2Z1bmN0aW9u X3QpJmF2cl9leGVjdXRlX1NUWDFfMTAwMTAwMWFhYWFhMTEwMDsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgICAgMHgwMDAwMDAwZDog eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmxlbmd0aCAgPSAxNjsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpleGVjdXRlID0gKGV4ZWN1dGVfZnVu Y3Rpb25fdCkmYXZyX2V4ZWN1dGVfU1RYMl8xMDAxMDAxYWFhYWExMTAxOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAgICAweDAwMDAw MDBlOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbGVuZ3RoICA9IDE2 OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmV4ZWN1dGUgPSAoZXhlY3V0 ZV9mdW5jdGlvbl90KSZhdnJfZXhlY3V0ZV9TVFgzXzEwMDEwMDFhYWFhYTExMTA7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICAgIDB4 MDAwMDAwMGY6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpsZW5ndGgg ID0gMTY7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZXhlY3V0ZSA9IChl eGVjdXRlX2Z1bmN0aW9uX3QpJmF2cl9leGVjdXRlX1BVU0hfMTAwMTAwMWFhYWFhMTExMTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAgICAweDAwMDAwNDAwOiB7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdWludDMyX3QgICAgb3Bjb2RlICAgPSBnZXRfb3Bjb2RlKGNvZGUs IDAsIDE2KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG9wY29kZSAmIDB4 MDAwMDAwMGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAgICAweDAw MDAwMDAwOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAg ICBvcGNvZGUgICA9IGdldF9vcGNvZGUoY29kZSwgMCwgMTYpOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3dpdGNoIChvcGNvZGUgJiAweDAwMDAwMDAxKSB7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAgICAweDAwMDAwMDAwOiB7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpsZW5ndGggID0gMTY7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpleGVjdXRlID0g KGV4ZWN1dGVfZnVuY3Rpb25fdCkmYXZyX2V4ZWN1dGVfQ09NXzEwMDEwMTBhYWFhYTAwMDA7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjYXNlICAgIDB4MDAwMDAwMDE6IHsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmxlbmd0aCAgPSAxNjsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmV4ZWN1dGUgPSAoZXhlY3V0ZV9mdW5j dGlvbl90KSZhdnJfZXhlY3V0ZV9ORUdfMTAwMTAxMGFhYWFhMDAwMTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY2FzZSAgICAweDAwMDAwMDAyOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1aW50MzJfdCAgICBvcGNvZGUgICA9IGdldF9vcGNvZGUoY29kZSwgMCwgMTYpOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChvcGNvZGUgJiAweDAwMDAw MDAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAgICAw eDAwMDAwMDAwOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICpsZW5ndGggID0gMTY7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICpleGVjdXRlID0gKGV4ZWN1dGVfZnVuY3Rpb25fdCkmYXZyX2V4ZWN1dGVfU1dBUF8xMDAx MDEwYWFhYWEwMDEwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAgICAweDAwMDAwMDAxOiB7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpsZW5ndGggID0g MTY7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpleGVjdXRl ID0gKGV4ZWN1dGVfZnVuY3Rpb25fdCkmYXZyX2V4ZWN1dGVfSU5DXzEwMDEwMTBhYWFhYTAwMTE7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNhc2UgICAgMHgwMDAwMDAwNDogeworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKmxlbmd0aCAgPSAxNjsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICpleGVjdXRlID0gKGV4ZWN1dGVfZnVuY3Rpb25fdCkmYXZyX2V4ZWN1 dGVfQVNSXzEwMDEwMTBhYWFhYTAxMDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjYXNlICAgIDB4MDAwMDAwMDY6IHsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICAgIG9wY29kZSAgID0gZ2V0X29wY29k ZShjb2RlLCAwLCAxNik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0 Y2ggKG9wY29kZSAmIDB4MDAwMDAwMDEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjYXNlICAgIDB4MDAwMDAwMDA6IHsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKmxlbmd0aCAgPSAxNjsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKmV4ZWN1dGUgPSAoZXhlY3V0ZV9mdW5jdGlvbl90KSZh dnJfZXhlY3V0ZV9MU1JfMTAwMTAxMGFhYWFhMDExMDsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNh c2UgICAgMHgwMDAwMDAwMTogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqbGVuZ3RoICA9IDE2OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAqZXhlY3V0ZSA9IChleGVjdXRlX2Z1bmN0aW9uX3QpJmF2cl9leGVjdXRlX1JP Ul8xMDAxMDEwYWFhYWEwMTExOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICAgIDB4MDAwMDAwMDg6 IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICAgIG9wY29k ZSAgID0gZ2V0X29wY29kZShjb2RlLCAwLCAxNik7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzd2l0Y2ggKG9wY29kZSAmIDB4MDAwMDAxODEpIHsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICAgIDB4MDAwMDAwMDA6IHsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmxlbmd0aCAgPSAxNjsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmV4ZWN1dGUgPSAoZXhlY3V0 ZV9mdW5jdGlvbl90KSZhdnJfZXhlY3V0ZV9CU0VUXzEwMDEwMTAwMGFhYTEwMDA7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjYXNlICAgIDB4MDAwMDAwMDE6IHsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgICAgb3Bjb2RlICAgPSBnZXRfb3Bjb2Rl KGNvZGUsIDAsIDE2KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3dpdGNoIChvcGNvZGUgJiAweDAwMDAwMDEwKSB7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICAgIDB4MDAwMDAwMDA6IHsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbGVuZ3RoICA9IDE2 OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpl eGVjdXRlID0gKGV4ZWN1dGVfZnVuY3Rpb25fdCkmYXZyX2V4ZWN1dGVfSUpNUF8xMDAxMDEwMDAw MDAxMDAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Fz ZSAgICAweDAwMDAwMDEwOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKmxlbmd0aCAgPSAxNjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAqZXhlY3V0ZSA9IChleGVjdXRlX2Z1bmN0aW9uX3Qp JmF2cl9leGVjdXRlX0VJSk1QXzEwMDEwMTAwMDAwMTEwMDE7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgICAgMHgw MDAwMDA4MDogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq bGVuZ3RoICA9IDE2OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAqZXhlY3V0ZSA9IChleGVjdXRlX2Z1bmN0aW9uX3QpJmF2cl9leGVjdXRlX0JDTFJfMTAwMTAx MDAxYWFhMTAwMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgICAgMHgwMDAwMDA4MTogewor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY2FzZSAgICAweDAwMDAwMTAwOiB7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICAgIG9wY29kZSAgID0gZ2V0 X29wY29kZShjb2RlLCAwLCAxNik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN3aXRjaCAob3Bjb2RlICYgMHgwMDAwMDAxMCkgeworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAgICAweDAwMDAwMDAwOiB7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmxlbmd0 aCAgPSAxNjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAqZXhlY3V0ZSA9IChleGVjdXRlX2Z1bmN0aW9uX3QpJmF2cl9leGVjdXRlX1JFVF8xMDAx MDEwMTAwMDAxMDAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY2FzZSAgICAweDAwMDAwMDEwOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKmxlbmd0aCAgPSAxNjsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZXhlY3V0ZSA9IChleGVjdXRlX2Z1bmN0 aW9uX3QpJmF2cl9leGVjdXRlX1JFVElfMTAwMTAxMDEwMDAxMTAwMDsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAg ICAweDAwMDAwMTAxOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVpbnQzMl90ICAgIG9wY29kZSAgID0gZ2V0X29wY29kZShjb2RlLCAwLCAxNik7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAob3Bjb2RlICYg MHgwMDAwMDAxMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY2FzZSAgICAweDAwMDAwMDAwOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKmxlbmd0aCAgPSAxNjsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZXhlY3V0ZSA9IChleGVjdXRlX2Z1 bmN0aW9uX3QpJmF2cl9leGVjdXRlX0lDQUxMXzEwMDEwMTAxMDAwMDEwMDE7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICAgIDB4MDAwMDAwMTA6IHsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbGVu Z3RoICA9IDE2OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICpleGVjdXRlID0gKGV4ZWN1dGVfZnVuY3Rpb25fdCkmYXZyX2V4ZWN1dGVfRUlDQUxM XzEwMDEwMTAxMDAwMTEwMDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgICAgMHgwMDAwMDE4MDogeworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAgICBvcGNvZGUg ICA9IGdldF9vcGNvZGUoY29kZSwgMCwgMTYpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzd2l0Y2ggKG9wY29kZSAmIDB4MDAwMDAwNzApIHsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgICAgMHgwMDAwMDAw MDogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICpsZW5ndGggID0gMTY7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKmV4ZWN1dGUgPSAoZXhlY3V0ZV9mdW5jdGlvbl90KSZhdnJfZXhlY3V0ZV9T TEVFUF8xMDAxMDEwMTEwMDAxMDAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY2FzZSAgICAweDAwMDAwMDEwOiB7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmxlbmd0aCAgPSAxNjsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZXhlY3V0ZSA9IChleGVj dXRlX2Z1bmN0aW9uX3QpJmF2cl9leGVjdXRlX0JSRUFLXzEwMDEwMTAxMTAwMTEwMDA7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICAgIDB4MDAwMDAw MjA6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAqbGVuZ3RoICA9IDE2OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICpleGVjdXRlID0gKGV4ZWN1dGVfZnVuY3Rpb25fdCkmYXZyX2V4ZWN1dGVf V0RSXzEwMDEwMTAxMTAxMDEwMDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjYXNlICAgIDB4MDAwMDAwMzA6IHsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNhc2UgICAgMHgwMDAwMDA0MDogeworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpsZW5ndGggID0gMTY7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmV4ZWN1 dGUgPSAoZXhlY3V0ZV9mdW5jdGlvbl90KSZhdnJfZXhlY3V0ZV9MUE0xXzEwMDEwMTAxMTEwMDEw MDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICAg IDB4MDAwMDAwNTA6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAqbGVuZ3RoICA9IDE2OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICpleGVjdXRlID0gKGV4ZWN1dGVfZnVuY3Rpb25fdCkmYXZy X2V4ZWN1dGVfRUxQTTFfMTAwMTAxMDExMTAxMTAwMDsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNhc2UgICAgMHgwMDAwMDA2MDogeworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpsZW5ndGggID0gMTY7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmV4ZWN1 dGUgPSAoZXhlY3V0ZV9mdW5jdGlvbl90KSZhdnJfZXhlY3V0ZV9TUE1fMTAwMTAxMDExMTEwMTAw MDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi cmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgICAg MHgwMDAwMDA3MDogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICpsZW5ndGggID0gMTY7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKmV4ZWN1dGUgPSAoZXhlY3V0ZV9mdW5jdGlvbl90KSZhdnJf ZXhlY3V0ZV9TUE1YXzEwMDEwMTAxMTExMTEwMDA7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgICAgMHgwMDAwMDE4 MTogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjYXNlICAgIDB4MDAwMDAwMGE6IHsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICAgIG9wY29kZSAgID0gZ2V0X29wY29k ZShjb2RlLCAwLCAxNik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0 Y2ggKG9wY29kZSAmIDB4MDAwMDAwMDEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjYXNlICAgIDB4MDAwMDAwMDA6IHsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKmxlbmd0aCAgPSAxNjsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKmV4ZWN1dGUgPSAoZXhlY3V0ZV9mdW5jdGlvbl90KSZh dnJfZXhlY3V0ZV9ERUNfMTAwMTAxMGFhYWFhMTAxMDsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNh c2UgICAgMHgwMDAwMDAwMTogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqbGVuZ3RoICA9IDE2OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAqZXhlY3V0ZSA9IChleGVjdXRlX2Z1bmN0aW9uX3QpJmF2cl9leGVjdXRlX0RF U18xMDAxMDEwMGFhYWExMDExOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICAgIDB4MDAwMDAwMGM6 IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpsZW5ndGggID0gMzI7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZXhlY3V0ZSA9IChleGVjdXRlX2Z1 bmN0aW9uX3QpJmF2cl9leGVjdXRlX0pNUF8xMDAxMDEwYWFhYWExMTBiYmJiYmJiYmJiYmJiYmJi YjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNhc2UgICAgMHgwMDAwMDAwZTogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKmxlbmd0aCAgPSAzMjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpl eGVjdXRlID0gKGV4ZWN1dGVfZnVuY3Rpb25fdCkmYXZyX2V4ZWN1dGVfQ0FMTF8xMDAxMDEwYWFh YWExMTFiYmJiYmJiYmJiYmJiYmJiYjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAg ICAweDAwMDAwNjAwOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgICAg b3Bjb2RlICAgPSBnZXRfb3Bjb2RlKGNvZGUsIDAsIDE2KTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzd2l0Y2ggKG9wY29kZSAmIDB4MDAwMDAxMDApIHsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY2FzZSAgICAweDAwMDAwMDAwOiB7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAqbGVuZ3RoICA9IDE2OworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKmV4ZWN1dGUgPSAoZXhlY3V0ZV9mdW5jdGlvbl90KSZhdnJfZXhlY3V0ZV9B RElXXzEwMDEwMTEwYWFiYmNjY2M7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjYXNlICAgIDB4MDAwMDAxMDA6IHsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICpsZW5ndGggID0gMTY7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAqZXhlY3V0ZSA9IChleGVjdXRlX2Z1bmN0aW9uX3QpJmF2cl9leGVj dXRlX1NCSVdfMTAwMTAxMTFhYWJiY2NjYzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICBjYXNlICAgIDB4MDAwMDA4MDA6IHsKKyAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgICAg b3Bjb2RlICAgPSBnZXRfb3Bjb2RlKGNvZGUsIDAsIDE2KTsKKyAgICAgICAgICAgICAgICAgICAg c3dpdGNoIChvcGNvZGUgJiAweDAwMDAwNDAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBj YXNlICAgIDB4MDAwMDAwMDA6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJf dCAgICBvcGNvZGUgICA9IGdldF9vcGNvZGUoY29kZSwgMCwgMTYpOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN3aXRjaCAob3Bjb2RlICYgMHgwMDAwMDMwMCkgeworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjYXNlICAgIDB4MDAwMDAwMDA6IHsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICpsZW5ndGggID0gMTY7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAqZXhlY3V0ZSA9IChleGVjdXRlX2Z1bmN0aW9uX3QpJmF2cl9leGVj dXRlX0NCSV8xMDAxMTAwMGFhYWFhYmJiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAgICAweDAwMDAwMTAwOiB7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAqbGVuZ3RoICA9IDE2OworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKmV4ZWN1dGUgPSAoZXhlY3V0ZV9mdW5jdGlvbl90KSZhdnJf ZXhlY3V0ZV9TQklDXzEwMDExMDAxYWFhYWFiYmI7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICAgIDB4MDAwMDAyMDA6IHsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpsZW5ndGggID0gMTY7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAqZXhlY3V0ZSA9IChleGVjdXRlX2Z1bmN0aW9uX3Qp JmF2cl9leGVjdXRlX1NCSV8xMDAxMTAxMGFhYWFhYmJiOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAgICAweDAwMDAwMzAwOiB7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbGVuZ3RoICA9IDE2OworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmV4ZWN1dGUgPSAoZXhlY3V0ZV9mdW5jdGlv bl90KSZhdnJfZXhlY3V0ZV9TQklTXzEwMDExMDExYWFhYWFiYmI7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICAgICAgICAgIGNhc2UgICAgMHgwMDAwMDQwMDogeworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICpsZW5ndGggID0gMTY7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmV4ZWN1dGUg PSAoZXhlY3V0ZV9mdW5jdGlvbl90KSZhdnJfZXhlY3V0ZV9NVUxfMTAwMTExYWJiYmJiY2NjYzsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsK KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSAgICAweDAwMDAyMDAwOiB7 CisgICAgICAgICAgICAgICAgICAgICpsZW5ndGggID0gMTY7CisgICAgICAgICAgICAgICAgICAg ICpleGVjdXRlID0gKGV4ZWN1dGVfZnVuY3Rpb25fdCkmYXZyX2V4ZWN1dGVfSU5fMTAxMTBhYWJi YmJiY2NjYzsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgICAgIGNhc2UgICAgMHgwMDAwMjgwMDogeworICAgICAgICAgICAgICAgICAg ICAqbGVuZ3RoICA9IDE2OworICAgICAgICAgICAgICAgICAgICAqZXhlY3V0ZSA9IChleGVjdXRl X2Z1bmN0aW9uX3QpJmF2cl9leGVjdXRlX09VVF8xMDExMWFhYmJiYmJjY2NjOworICAgICAgICAg ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlICAgIDB4MDAwMGMwMDA6IHsK KyAgICAgICAgICAgIHVpbnQzMl90ICAgIG9wY29kZSAgID0gZ2V0X29wY29kZShjb2RlLCAwLCAx Nik7CisgICAgICAgICAgICBzd2l0Y2ggKG9wY29kZSAmIDB4MDAwMDIwMDApIHsKKyAgICAgICAg ICAgICAgICBjYXNlICAgIDB4MDAwMDAwMDA6IHsKKyAgICAgICAgICAgICAgICAgICAgKmxlbmd0 aCAgPSAxNjsKKyAgICAgICAgICAgICAgICAgICAgKmV4ZWN1dGUgPSAoZXhlY3V0ZV9mdW5jdGlv bl90KSZhdnJfZXhlY3V0ZV9SSk1QXzExMDBhYWFhYWFhYWFhYWE7CisgICAgICAgICAgICAgICAg ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlICAgIDB4 MDAwMDIwMDA6IHsKKyAgICAgICAgICAgICAgICAgICAgKmxlbmd0aCAgPSAxNjsKKyAgICAgICAg ICAgICAgICAgICAgKmV4ZWN1dGUgPSAoZXhlY3V0ZV9mdW5jdGlvbl90KSZhdnJfZXhlY3V0ZV9M RElfMTExMGFhYWFiYmJiY2NjYzsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K KyAgICAgICAgY2FzZSAgICAweDAwMDBkMDAwOiB7CisgICAgICAgICAgICB1aW50MzJfdCAgICBv cGNvZGUgICA9IGdldF9vcGNvZGUoY29kZSwgMCwgMTYpOworICAgICAgICAgICAgc3dpdGNoIChv cGNvZGUgJiAweDAwMDAyMDAwKSB7CisgICAgICAgICAgICAgICAgY2FzZSAgICAweDAwMDAwMDAw OiB7CisgICAgICAgICAgICAgICAgICAgICpsZW5ndGggID0gMTY7CisgICAgICAgICAgICAgICAg ICAgICpleGVjdXRlID0gKGV4ZWN1dGVfZnVuY3Rpb25fdCkmYXZyX2V4ZWN1dGVfUkNBTExfMTEw MWFhYWFhYWFhYWFhYTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICAgIGNhc2UgICAgMHgwMDAwMjAwMDogeworICAgICAgICAgICAg ICAgICAgICB1aW50MzJfdCAgICBvcGNvZGUgICA9IGdldF9vcGNvZGUoY29kZSwgMCwgMTYpOwor ICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG9wY29kZSAmIDB4MDAwMDBjMDApIHsKKyAgICAg ICAgICAgICAgICAgICAgICAgIGNhc2UgICAgMHgwMDAwMDAwMDogeworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICpsZW5ndGggID0gMTY7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg KmV4ZWN1dGUgPSAoZXhlY3V0ZV9mdW5jdGlvbl90KSZhdnJfZXhlY3V0ZV9CUkJTXzExMTEwMGFh YWFhYWFiYmI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICAgIDB4MDAwMDA0 MDA6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbGVuZ3RoICA9IDE2OworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICpleGVjdXRlID0gKGV4ZWN1dGVfZnVuY3Rpb25fdCkmYXZy X2V4ZWN1dGVfQlJCQ18xMTExMDFhYWFhYWFhYmJiOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg ICAgICAgY2FzZSAgICAweDAwMDAwODAwOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg dWludDMyX3QgICAgb3Bjb2RlICAgPSBnZXRfb3Bjb2RlKGNvZGUsIDAsIDE2KTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG9wY29kZSAmIDB4MDAwMDAyMDApIHsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAgICAweDAwMDAwMDAwOiB7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbGVuZ3RoICA9IDE2OworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKmV4ZWN1dGUgPSAoZXhlY3V0ZV9mdW5jdGlvbl90KSZh dnJfZXhlY3V0ZV9CTERfMTExMTEwMGFhYWFhMGJiYjsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgICAgMHgwMDAwMDIwMDogeworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmxlbmd0aCAgPSAxNjsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpleGVjdXRlID0gKGV4ZWN1dGVfZnVuY3Rpb25f dCkmYXZyX2V4ZWN1dGVfQlNUXzExMTExMDFhYWFhYTBiYmI7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg ICAgICAgIGNhc2UgICAgMHgwMDAwMGMwMDogeworICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVpbnQzMl90ICAgIG9wY29kZSAgID0gZ2V0X29wY29kZShjb2RlLCAwLCAxNik7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChvcGNvZGUgJiAweDAwMDAwMjAwKSB7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgICAgMHgwMDAwMDAwMDogeworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmxlbmd0aCAgPSAxNjsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICpleGVjdXRlID0gKGV4ZWN1dGVfZnVuY3Rpb25fdCkm YXZyX2V4ZWN1dGVfU0JSQ18xMTExMTEwYWFhYWEwYmJiOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAgICAweDAwMDAwMjAwOiB7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbGVuZ3RoICA9IDE2OworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmV4ZWN1dGUgPSAoZXhlY3V0ZV9mdW5jdGlv bl90KSZhdnJfZXhlY3V0ZV9TQlJTXzExMTExMTFhYWFhYTBiYmI7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworfQpk aWZmIC0tZ2l0IGEvdGFyZ2V0LWF2ci9kZWNvZGUuaCBiL3RhcmdldC1hdnIvZGVjb2RlLmgKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY1Y2QzMgotLS0gL2Rldi9udWxsCisr KyBiL3RhcmdldC1hdnIvZGVjb2RlLmgKQEAgLTAsMCArMSwxMDE2IEBACisvKgorICogUUVNVSBB VlIgQ1BVCisgKgorICogQ29weXJpZ2h0IChjKSAyMDE2IE1pY2hhZWwgUm9sbmlrCisgKgorICog VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJy YXJ5OyBpZiBub3QsIHNlZQorICogPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9sZ3BsLTIu MS5odG1sPgorICovCisKK3R5cGVkZWYgc3RydWN0IERpc2FzQ29udGV4dCAgICBEaXNhc0NvbnRl eHQ7Cit0eXBlZGVmIHN0cnVjdCBDUFVBVlJTdGF0ZSAgICAgQ1BVQVZSU3RhdGU7CisKK3R5cGVk ZWYgdW5pb24gYXZyX29wY29kZV9OT1BfMDAwMDAwMDAwMDAwMDAwMF91IHsKKyAgICB1aW50MTZf dCAgICBvcGNvZGU7CisgICAgc3RydWN0IHsKKyAgICAgICAgdWludDE2X3Q6MTY7IC8qIDAwMDAw MDAwMDAwMDAwMDAgKi8KKyAgICB9OworfSBhdnJfb3Bjb2RlX05PUF8wMDAwMDAwMDAwMDAwMDAw X3Q7CitpbnQgICAgIGF2cl9leGVjdXRlX05PUF8wMDAwMDAwMDAwMDAwMDAwKENQVUFWUlN0YXRl ICplbnYsIERpc2FzQ29udGV4dCAqY3R4LCBhdnJfb3Bjb2RlX05PUF8wMDAwMDAwMDAwMDAwMDAw X3QgY29uc3QgKmluc3QpOworCit0eXBlZGVmIHVuaW9uIGF2cl9vcGNvZGVfTU9WV18wMDAwMDAw MWFhYWFiYmJiX3UgeworICAgIHVpbnQxNl90ICAgIG9wY29kZTsKKyAgICBzdHJ1Y3QgeworICAg ICAgICB1aW50MTZfdCAgICBScjo0OworICAgICAgICB1aW50MTZfdCAgICBSZDo0OworICAgICAg ICB1aW50MTZfdDo4OyAvKiAwMDAwMDAwMSAqLworICAgIH07Cit9IGF2cl9vcGNvZGVfTU9WV18w MDAwMDAwMWFhYWFiYmJiX3Q7CitpbnQgICAgIGF2cl9leGVjdXRlX01PVldfMDAwMDAwMDFhYWFh YmJiYihDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwgYXZyX29wY29kZV9NT1ZX XzAwMDAwMDAxYWFhYWJiYmJfdCBjb25zdCAqaW5zdCk7CisKK3R5cGVkZWYgdW5pb24gYXZyX29w Y29kZV9NVUxTXzAwMDAwMDEwYWFhYWJiYmJfdSB7CisgICAgdWludDE2X3QgICAgb3Bjb2RlOwor ICAgIHN0cnVjdCB7CisgICAgICAgIHVpbnQxNl90ICAgIFJyOjQ7CisgICAgICAgIHVpbnQxNl90 ICAgIFJkOjQ7CisgICAgICAgIHVpbnQxNl90Ojg7IC8qIDAwMDAwMDEwICovCisgICAgfTsKK30g YXZyX29wY29kZV9NVUxTXzAwMDAwMDEwYWFhYWJiYmJfdDsKK2ludCAgICAgYXZyX2V4ZWN1dGVf TVVMU18wMDAwMDAxMGFhYWFiYmJiKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4 LCBhdnJfb3Bjb2RlX01VTFNfMDAwMDAwMTBhYWFhYmJiYl90IGNvbnN0ICppbnN0KTsKKwordHlw ZWRlZiB1bmlvbiBhdnJfb3Bjb2RlX01VTFNVXzAwMDAwMDExMGFhYTBiYmJfdSB7CisgICAgdWlu dDE2X3QgICAgb3Bjb2RlOworICAgIHN0cnVjdCB7CisgICAgICAgIHVpbnQxNl90ICAgIFJyOjM7 CisgICAgICAgIHVpbnQxNl90OjE7IC8qIDAgKi8KKyAgICAgICAgdWludDE2X3QgICAgUmQ6MzsK KyAgICAgICAgdWludDE2X3Q6OTsgLyogMDAwMDAwMTEwICovCisgICAgfTsKK30gYXZyX29wY29k ZV9NVUxTVV8wMDAwMDAxMTBhYWEwYmJiX3Q7CitpbnQgICAgIGF2cl9leGVjdXRlX01VTFNVXzAw MDAwMDExMGFhYTBiYmIoQ1BVQVZSU3RhdGUgKmVudiwgRGlzYXNDb250ZXh0ICpjdHgsIGF2cl9v cGNvZGVfTVVMU1VfMDAwMDAwMTEwYWFhMGJiYl90IGNvbnN0ICppbnN0KTsKKwordHlwZWRlZiB1 bmlvbiBhdnJfb3Bjb2RlX0ZNVUxfMDAwMDAwMTEwYWFhMWJiYl91IHsKKyAgICB1aW50MTZfdCAg ICBvcGNvZGU7CisgICAgc3RydWN0IHsKKyAgICAgICAgdWludDE2X3QgICAgUnI6MzsKKyAgICAg ICAgdWludDE2X3Q6MTsgLyogMSAqLworICAgICAgICB1aW50MTZfdCAgICBSZDozOworICAgICAg ICB1aW50MTZfdDo5OyAvKiAwMDAwMDAxMTAgKi8KKyAgICB9OworfSBhdnJfb3Bjb2RlX0ZNVUxf MDAwMDAwMTEwYWFhMWJiYl90OworaW50ICAgICBhdnJfZXhlY3V0ZV9GTVVMXzAwMDAwMDExMGFh YTFiYmIoQ1BVQVZSU3RhdGUgKmVudiwgRGlzYXNDb250ZXh0ICpjdHgsIGF2cl9vcGNvZGVfRk1V TF8wMDAwMDAxMTBhYWExYmJiX3QgY29uc3QgKmluc3QpOworCit0eXBlZGVmIHVuaW9uIGF2cl9v cGNvZGVfRk1VTFNfMDAwMDAwMTExYWFhMGJiYl91IHsKKyAgICB1aW50MTZfdCAgICBvcGNvZGU7 CisgICAgc3RydWN0IHsKKyAgICAgICAgdWludDE2X3QgICAgUnI6MzsKKyAgICAgICAgdWludDE2 X3Q6MTsgLyogMCAqLworICAgICAgICB1aW50MTZfdCAgICBSZDozOworICAgICAgICB1aW50MTZf dDo5OyAvKiAwMDAwMDAxMTEgKi8KKyAgICB9OworfSBhdnJfb3Bjb2RlX0ZNVUxTXzAwMDAwMDEx MWFhYTBiYmJfdDsKK2ludCAgICAgYXZyX2V4ZWN1dGVfRk1VTFNfMDAwMDAwMTExYWFhMGJiYihD UFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwgYXZyX29wY29kZV9GTVVMU18wMDAw MDAxMTFhYWEwYmJiX3QgY29uc3QgKmluc3QpOworCit0eXBlZGVmIHVuaW9uIGF2cl9vcGNvZGVf Rk1VTFNVXzAwMDAwMDExMWFhYTFiYmJfdSB7CisgICAgdWludDE2X3QgICAgb3Bjb2RlOworICAg IHN0cnVjdCB7CisgICAgICAgIHVpbnQxNl90ICAgIFJyOjM7CisgICAgICAgIHVpbnQxNl90OjE7 IC8qIDEgKi8KKyAgICAgICAgdWludDE2X3QgICAgUmQ6MzsKKyAgICAgICAgdWludDE2X3Q6OTsg LyogMDAwMDAwMTExICovCisgICAgfTsKK30gYXZyX29wY29kZV9GTVVMU1VfMDAwMDAwMTExYWFh MWJiYl90OworaW50ICAgICBhdnJfZXhlY3V0ZV9GTVVMU1VfMDAwMDAwMTExYWFhMWJiYihDUFVB VlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwgYXZyX29wY29kZV9GTVVMU1VfMDAwMDAw MTExYWFhMWJiYl90IGNvbnN0ICppbnN0KTsKKwordHlwZWRlZiB1bmlvbiBhdnJfb3Bjb2RlX0NQ Q18wMDAwMDFhYmJiYmJjY2NjX3UgeworICAgIHVpbnQxNl90ICAgIG9wY29kZTsKKyAgICBzdHJ1 Y3QgeworICAgICAgICB1aW50MTZfdCAgICBsUnI6NDsKKyAgICAgICAgdWludDE2X3QgICAgUmQ6 NTsKKyAgICAgICAgdWludDE2X3QgICAgaFJyOjE7CisgICAgICAgIHVpbnQxNl90OjY7IC8qIDAw MDAwMSAqLworICAgIH07Cit9IGF2cl9vcGNvZGVfQ1BDXzAwMDAwMWFiYmJiYmNjY2NfdDsKK2lu dCAgICAgYXZyX2V4ZWN1dGVfQ1BDXzAwMDAwMWFiYmJiYmNjY2MoQ1BVQVZSU3RhdGUgKmVudiwg RGlzYXNDb250ZXh0ICpjdHgsIGF2cl9vcGNvZGVfQ1BDXzAwMDAwMWFiYmJiYmNjY2NfdCBjb25z dCAqaW5zdCk7CisKK3R5cGVkZWYgdW5pb24gYXZyX29wY29kZV9TQkNfMDAwMDEwYWJiYmJiY2Nj Y191IHsKKyAgICB1aW50MTZfdCAgICBvcGNvZGU7CisgICAgc3RydWN0IHsKKyAgICAgICAgdWlu dDE2X3QgICAgbFJyOjQ7CisgICAgICAgIHVpbnQxNl90ICAgIFJkOjU7CisgICAgICAgIHVpbnQx Nl90ICAgIGhScjoxOworICAgICAgICB1aW50MTZfdDo2OyAvKiAwMDAwMTAgKi8KKyAgICB9Owor fSBhdnJfb3Bjb2RlX1NCQ18wMDAwMTBhYmJiYmJjY2NjX3Q7CitpbnQgICAgIGF2cl9leGVjdXRl X1NCQ18wMDAwMTBhYmJiYmJjY2NjKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4 LCBhdnJfb3Bjb2RlX1NCQ18wMDAwMTBhYmJiYmJjY2NjX3QgY29uc3QgKmluc3QpOworCit0eXBl ZGVmIHVuaW9uIGF2cl9vcGNvZGVfQUREXzAwMDAxMWFiYmJiYmNjY2NfdSB7CisgICAgdWludDE2 X3QgICAgb3Bjb2RlOworICAgIHN0cnVjdCB7CisgICAgICAgIHVpbnQxNl90ICAgIGxScjo0Owor ICAgICAgICB1aW50MTZfdCAgICBSZDo1OworICAgICAgICB1aW50MTZfdCAgICBoUnI6MTsKKyAg ICAgICAgdWludDE2X3Q6NjsgLyogMDAwMDExICovCisgICAgfTsKK30gYXZyX29wY29kZV9BRERf MDAwMDExYWJiYmJiY2NjY190OworaW50ICAgICBhdnJfZXhlY3V0ZV9BRERfMDAwMDExYWJiYmJi Y2NjYyhDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwgYXZyX29wY29kZV9BRERf MDAwMDExYWJiYmJiY2NjY190IGNvbnN0ICppbnN0KTsKKwordHlwZWRlZiB1bmlvbiBhdnJfb3Bj b2RlX0FORF8wMDEwMDBhYmJiYmJjY2NjX3UgeworICAgIHVpbnQxNl90ICAgIG9wY29kZTsKKyAg ICBzdHJ1Y3QgeworICAgICAgICB1aW50MTZfdCAgICBsUnI6NDsKKyAgICAgICAgdWludDE2X3Qg ICAgUmQ6NTsKKyAgICAgICAgdWludDE2X3QgICAgaFJyOjE7CisgICAgICAgIHVpbnQxNl90OjY7 IC8qIDAwMTAwMCAqLworICAgIH07Cit9IGF2cl9vcGNvZGVfQU5EXzAwMTAwMGFiYmJiYmNjY2Nf dDsKK2ludCAgICAgYXZyX2V4ZWN1dGVfQU5EXzAwMTAwMGFiYmJiYmNjY2MoQ1BVQVZSU3RhdGUg KmVudiwgRGlzYXNDb250ZXh0ICpjdHgsIGF2cl9vcGNvZGVfQU5EXzAwMTAwMGFiYmJiYmNjY2Nf dCBjb25zdCAqaW5zdCk7CisKK3R5cGVkZWYgdW5pb24gYXZyX29wY29kZV9FT1JfMDAxMDAxYWJi YmJiY2NjY191IHsKKyAgICB1aW50MTZfdCAgICBvcGNvZGU7CisgICAgc3RydWN0IHsKKyAgICAg ICAgdWludDE2X3QgICAgbFJyOjQ7CisgICAgICAgIHVpbnQxNl90ICAgIFJkOjU7CisgICAgICAg IHVpbnQxNl90ICAgIGhScjoxOworICAgICAgICB1aW50MTZfdDo2OyAvKiAwMDEwMDEgKi8KKyAg ICB9OworfSBhdnJfb3Bjb2RlX0VPUl8wMDEwMDFhYmJiYmJjY2NjX3Q7CitpbnQgICAgIGF2cl9l eGVjdXRlX0VPUl8wMDEwMDFhYmJiYmJjY2NjKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4 dCAqY3R4LCBhdnJfb3Bjb2RlX0VPUl8wMDEwMDFhYmJiYmJjY2NjX3QgY29uc3QgKmluc3QpOwor Cit0eXBlZGVmIHVuaW9uIGF2cl9vcGNvZGVfT1JfMDAxMDEwYWJiYmJiY2NjY191IHsKKyAgICB1 aW50MTZfdCAgICBvcGNvZGU7CisgICAgc3RydWN0IHsKKyAgICAgICAgdWludDE2X3QgICAgbFJy OjQ7CisgICAgICAgIHVpbnQxNl90ICAgIFJkOjU7CisgICAgICAgIHVpbnQxNl90ICAgIGhScjox OworICAgICAgICB1aW50MTZfdDo2OyAvKiAwMDEwMTAgKi8KKyAgICB9OworfSBhdnJfb3Bjb2Rl X09SXzAwMTAxMGFiYmJiYmNjY2NfdDsKK2ludCAgICAgYXZyX2V4ZWN1dGVfT1JfMDAxMDEwYWJi YmJiY2NjYyhDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwgYXZyX29wY29kZV9P Ul8wMDEwMTBhYmJiYmJjY2NjX3QgY29uc3QgKmluc3QpOworCit0eXBlZGVmIHVuaW9uIGF2cl9v cGNvZGVfTU9WXzAwMTAxMWFiYmJiYmNjY2NfdSB7CisgICAgdWludDE2X3QgICAgb3Bjb2RlOwor ICAgIHN0cnVjdCB7CisgICAgICAgIHVpbnQxNl90ICAgIGxScjo0OworICAgICAgICB1aW50MTZf dCAgICBSZDo1OworICAgICAgICB1aW50MTZfdCAgICBoUnI6MTsKKyAgICAgICAgdWludDE2X3Q6 NjsgLyogMDAxMDExICovCisgICAgfTsKK30gYXZyX29wY29kZV9NT1ZfMDAxMDExYWJiYmJiY2Nj Y190OworaW50ICAgICBhdnJfZXhlY3V0ZV9NT1ZfMDAxMDExYWJiYmJiY2NjYyhDUFVBVlJTdGF0 ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwgYXZyX29wY29kZV9NT1ZfMDAxMDExYWJiYmJiY2Nj Y190IGNvbnN0ICppbnN0KTsKKwordHlwZWRlZiB1bmlvbiBhdnJfb3Bjb2RlX0NQU0VfMDAwMTAw YWJiYmJiY2NjY191IHsKKyAgICB1aW50MTZfdCAgICBvcGNvZGU7CisgICAgc3RydWN0IHsKKyAg ICAgICAgdWludDE2X3QgICAgbFJyOjQ7CisgICAgICAgIHVpbnQxNl90ICAgIFJkOjU7CisgICAg ICAgIHVpbnQxNl90ICAgIGhScjoxOworICAgICAgICB1aW50MTZfdDo2OyAvKiAwMDAxMDAgKi8K KyAgICB9OworfSBhdnJfb3Bjb2RlX0NQU0VfMDAwMTAwYWJiYmJiY2NjY190OworaW50ICAgICBh dnJfZXhlY3V0ZV9DUFNFXzAwMDEwMGFiYmJiYmNjY2MoQ1BVQVZSU3RhdGUgKmVudiwgRGlzYXND b250ZXh0ICpjdHgsIGF2cl9vcGNvZGVfQ1BTRV8wMDAxMDBhYmJiYmJjY2NjX3QgY29uc3QgKmlu c3QpOworCit0eXBlZGVmIHVuaW9uIGF2cl9vcGNvZGVfQ1BfMDAwMTAxYWJiYmJiY2NjY191IHsK KyAgICB1aW50MTZfdCAgICBvcGNvZGU7CisgICAgc3RydWN0IHsKKyAgICAgICAgdWludDE2X3Qg ICAgbFJyOjQ7CisgICAgICAgIHVpbnQxNl90ICAgIFJkOjU7CisgICAgICAgIHVpbnQxNl90ICAg IGhScjoxOworICAgICAgICB1aW50MTZfdDo2OyAvKiAwMDAxMDEgKi8KKyAgICB9OworfSBhdnJf b3Bjb2RlX0NQXzAwMDEwMWFiYmJiYmNjY2NfdDsKK2ludCAgICAgYXZyX2V4ZWN1dGVfQ1BfMDAw MTAxYWJiYmJiY2NjYyhDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwgYXZyX29w Y29kZV9DUF8wMDAxMDFhYmJiYmJjY2NjX3QgY29uc3QgKmluc3QpOworCit0eXBlZGVmIHVuaW9u IGF2cl9vcGNvZGVfU1VCXzAwMDExMGFiYmJiYmNjY2NfdSB7CisgICAgdWludDE2X3QgICAgb3Bj b2RlOworICAgIHN0cnVjdCB7CisgICAgICAgIHVpbnQxNl90ICAgIGxScjo0OworICAgICAgICB1 aW50MTZfdCAgICBSZDo1OworICAgICAgICB1aW50MTZfdCAgICBoUnI6MTsKKyAgICAgICAgdWlu dDE2X3Q6NjsgLyogMDAwMTEwICovCisgICAgfTsKK30gYXZyX29wY29kZV9TVUJfMDAwMTEwYWJi YmJiY2NjY190OworaW50ICAgICBhdnJfZXhlY3V0ZV9TVUJfMDAwMTEwYWJiYmJiY2NjYyhDUFVB VlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwgYXZyX29wY29kZV9TVUJfMDAwMTEwYWJi YmJiY2NjY190IGNvbnN0ICppbnN0KTsKKwordHlwZWRlZiB1bmlvbiBhdnJfb3Bjb2RlX0FEQ18w MDAxMTFhYmJiYmJjY2NjX3UgeworICAgIHVpbnQxNl90ICAgIG9wY29kZTsKKyAgICBzdHJ1Y3Qg eworICAgICAgICB1aW50MTZfdCAgICBsUnI6NDsKKyAgICAgICAgdWludDE2X3QgICAgUmQ6NTsK KyAgICAgICAgdWludDE2X3QgICAgaFJyOjE7CisgICAgICAgIHVpbnQxNl90OjY7IC8qIDAwMDEx MSAqLworICAgIH07Cit9IGF2cl9vcGNvZGVfQURDXzAwMDExMWFiYmJiYmNjY2NfdDsKK2ludCAg ICAgYXZyX2V4ZWN1dGVfQURDXzAwMDExMWFiYmJiYmNjY2MoQ1BVQVZSU3RhdGUgKmVudiwgRGlz YXNDb250ZXh0ICpjdHgsIGF2cl9vcGNvZGVfQURDXzAwMDExMWFiYmJiYmNjY2NfdCBjb25zdCAq aW5zdCk7CisKK3R5cGVkZWYgdW5pb24gYXZyX29wY29kZV9DUElfMDAxMWFhYWFiYmJiY2NjY191 IHsKKyAgICB1aW50MTZfdCAgICBvcGNvZGU7CisgICAgc3RydWN0IHsKKyAgICAgICAgdWludDE2 X3QgICAgbEltbTo0OworICAgICAgICB1aW50MTZfdCAgICBSZDo0OworICAgICAgICB1aW50MTZf dCAgICBoSW1tOjQ7CisgICAgICAgIHVpbnQxNl90OjQ7IC8qIDAwMTEgKi8KKyAgICB9OworfSBh dnJfb3Bjb2RlX0NQSV8wMDExYWFhYWJiYmJjY2NjX3Q7CitpbnQgICAgIGF2cl9leGVjdXRlX0NQ SV8wMDExYWFhYWJiYmJjY2NjKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4LCBh dnJfb3Bjb2RlX0NQSV8wMDExYWFhYWJiYmJjY2NjX3QgY29uc3QgKmluc3QpOworCit0eXBlZGVm IHVuaW9uIGF2cl9vcGNvZGVfU0JDSV8wMTAwYWFhYWJiYmJjY2NjX3UgeworICAgIHVpbnQxNl90 ICAgIG9wY29kZTsKKyAgICBzdHJ1Y3QgeworICAgICAgICB1aW50MTZfdCAgICBsSW1tOjQ7Cisg ICAgICAgIHVpbnQxNl90ICAgIFJkOjQ7CisgICAgICAgIHVpbnQxNl90ICAgIGhJbW06NDsKKyAg ICAgICAgdWludDE2X3Q6NDsgLyogMDEwMCAqLworICAgIH07Cit9IGF2cl9vcGNvZGVfU0JDSV8w MTAwYWFhYWJiYmJjY2NjX3Q7CitpbnQgICAgIGF2cl9leGVjdXRlX1NCQ0lfMDEwMGFhYWFiYmJi Y2NjYyhDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwgYXZyX29wY29kZV9TQkNJ XzAxMDBhYWFhYmJiYmNjY2NfdCBjb25zdCAqaW5zdCk7CisKK3R5cGVkZWYgdW5pb24gYXZyX29w Y29kZV9PUklfMDExMGFhYWFiYmJiY2NjY191IHsKKyAgICB1aW50MTZfdCAgICBvcGNvZGU7Cisg ICAgc3RydWN0IHsKKyAgICAgICAgdWludDE2X3QgICAgbEltbTo0OworICAgICAgICB1aW50MTZf dCAgICBSZDo0OworICAgICAgICB1aW50MTZfdCAgICBoSW1tOjQ7CisgICAgICAgIHVpbnQxNl90 OjQ7IC8qIDAxMTAgKi8KKyAgICB9OworfSBhdnJfb3Bjb2RlX09SSV8wMTEwYWFhYWJiYmJjY2Nj X3Q7CitpbnQgICAgIGF2cl9leGVjdXRlX09SSV8wMTEwYWFhYWJiYmJjY2NjKENQVUFWUlN0YXRl ICplbnYsIERpc2FzQ29udGV4dCAqY3R4LCBhdnJfb3Bjb2RlX09SSV8wMTEwYWFhYWJiYmJjY2Nj X3QgY29uc3QgKmluc3QpOworCit0eXBlZGVmIHVuaW9uIGF2cl9vcGNvZGVfU1VCSV8wMTAxYWFh YWJiYmJjY2NjX3UgeworICAgIHVpbnQxNl90ICAgIG9wY29kZTsKKyAgICBzdHJ1Y3QgeworICAg ICAgICB1aW50MTZfdCAgICBsSW1tOjQ7CisgICAgICAgIHVpbnQxNl90ICAgIFJkOjQ7CisgICAg ICAgIHVpbnQxNl90ICAgIGhJbW06NDsKKyAgICAgICAgdWludDE2X3Q6NDsgLyogMDEwMSAqLwor ICAgIH07Cit9IGF2cl9vcGNvZGVfU1VCSV8wMTAxYWFhYWJiYmJjY2NjX3Q7CitpbnQgICAgIGF2 cl9leGVjdXRlX1NVQklfMDEwMWFhYWFiYmJiY2NjYyhDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0Nv bnRleHQgKmN0eCwgYXZyX29wY29kZV9TVUJJXzAxMDFhYWFhYmJiYmNjY2NfdCBjb25zdCAqaW5z dCk7CisKK3R5cGVkZWYgdW5pb24gYXZyX29wY29kZV9BTkRJXzAxMTFhYWFhYmJiYmNjY2NfdSB7 CisgICAgdWludDE2X3QgICAgb3Bjb2RlOworICAgIHN0cnVjdCB7CisgICAgICAgIHVpbnQxNl90 ICAgIGxJbW06NDsKKyAgICAgICAgdWludDE2X3QgICAgUmQ6NDsKKyAgICAgICAgdWludDE2X3Qg ICAgaEltbTo0OworICAgICAgICB1aW50MTZfdDo0OyAvKiAwMTExICovCisgICAgfTsKK30gYXZy X29wY29kZV9BTkRJXzAxMTFhYWFhYmJiYmNjY2NfdDsKK2ludCAgICAgYXZyX2V4ZWN1dGVfQU5E SV8wMTExYWFhYWJiYmJjY2NjKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4LCBh dnJfb3Bjb2RlX0FORElfMDExMWFhYWFiYmJiY2NjY190IGNvbnN0ICppbnN0KTsKKwordHlwZWRl ZiB1bmlvbiBhdnJfb3Bjb2RlX0xERFpfMTBhMGJiMGNjY2NjMGRkZF91IHsKKyAgICB1aW50MTZf dCAgICBvcGNvZGU7CisgICAgc3RydWN0IHsKKyAgICAgICAgdWludDE2X3QgICAgbEltbTozOwor ICAgICAgICB1aW50MTZfdDoxOyAvKiAwICovCisgICAgICAgIHVpbnQxNl90ICAgIFJkOjU7Cisg ICAgICAgIHVpbnQxNl90OjE7IC8qIDAgKi8KKyAgICAgICAgdWludDE2X3QgICAgbUltbToyOwor ICAgICAgICB1aW50MTZfdDoxOyAvKiAwICovCisgICAgICAgIHVpbnQxNl90ICAgIGhJbW06MTsK KyAgICAgICAgdWludDE2X3Q6MjsgLyogMTAgKi8KKyAgICB9OworfSBhdnJfb3Bjb2RlX0xERFpf MTBhMGJiMGNjY2NjMGRkZF90OworaW50ICAgICBhdnJfZXhlY3V0ZV9MRERaXzEwYTBiYjBjY2Nj YzBkZGQoQ1BVQVZSU3RhdGUgKmVudiwgRGlzYXNDb250ZXh0ICpjdHgsIGF2cl9vcGNvZGVfTERE Wl8xMGEwYmIwY2NjY2MwZGRkX3QgY29uc3QgKmluc3QpOworCit0eXBlZGVmIHVuaW9uIGF2cl9v cGNvZGVfTEREWV8xMGEwYmIwY2NjY2MxZGRkX3UgeworICAgIHVpbnQxNl90ICAgIG9wY29kZTsK KyAgICBzdHJ1Y3QgeworICAgICAgICB1aW50MTZfdCAgICBsSW1tOjM7CisgICAgICAgIHVpbnQx Nl90OjE7IC8qIDEgKi8KKyAgICAgICAgdWludDE2X3QgICAgUmQ6NTsKKyAgICAgICAgdWludDE2 X3Q6MTsgLyogMCAqLworICAgICAgICB1aW50MTZfdCAgICBtSW1tOjI7CisgICAgICAgIHVpbnQx Nl90OjE7IC8qIDAgKi8KKyAgICAgICAgdWludDE2X3QgICAgaEltbToxOworICAgICAgICB1aW50 MTZfdDoyOyAvKiAxMCAqLworICAgIH07Cit9IGF2cl9vcGNvZGVfTEREWV8xMGEwYmIwY2NjY2Mx ZGRkX3Q7CitpbnQgICAgIGF2cl9leGVjdXRlX0xERFlfMTBhMGJiMGNjY2NjMWRkZChDUFVBVlJT dGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwgYXZyX29wY29kZV9MRERZXzEwYTBiYjBjY2Nj YzFkZGRfdCBjb25zdCAqaW5zdCk7CisKK3R5cGVkZWYgdW5pb24gYXZyX29wY29kZV9TVERaXzEw YTBiYjFjY2NjYzBkZGRfdSB7CisgICAgdWludDE2X3QgICAgb3Bjb2RlOworICAgIHN0cnVjdCB7 CisgICAgICAgIHVpbnQxNl90ICAgIGxJbW06MzsKKyAgICAgICAgdWludDE2X3Q6MTsgLyogMCAq LworICAgICAgICB1aW50MTZfdCAgICBSZDo1OworICAgICAgICB1aW50MTZfdDoxOyAvKiAxICov CisgICAgICAgIHVpbnQxNl90ICAgIG1JbW06MjsKKyAgICAgICAgdWludDE2X3Q6MTsgLyogMCAq LworICAgICAgICB1aW50MTZfdCAgICBoSW1tOjE7CisgICAgICAgIHVpbnQxNl90OjI7IC8qIDEw ICovCisgICAgfTsKK30gYXZyX29wY29kZV9TVERaXzEwYTBiYjFjY2NjYzBkZGRfdDsKK2ludCAg ICAgYXZyX2V4ZWN1dGVfU1REWl8xMGEwYmIxY2NjY2MwZGRkKENQVUFWUlN0YXRlICplbnYsIERp c2FzQ29udGV4dCAqY3R4LCBhdnJfb3Bjb2RlX1NURFpfMTBhMGJiMWNjY2NjMGRkZF90IGNvbnN0 ICppbnN0KTsKKwordHlwZWRlZiB1bmlvbiBhdnJfb3Bjb2RlX1NURFlfMTBhMGJiMWNjY2NjMWRk ZF91IHsKKyAgICB1aW50MTZfdCAgICBvcGNvZGU7CisgICAgc3RydWN0IHsKKyAgICAgICAgdWlu dDE2X3QgICAgbEltbTozOworICAgICAgICB1aW50MTZfdDoxOyAvKiAxICovCisgICAgICAgIHVp bnQxNl90ICAgIFJkOjU7CisgICAgICAgIHVpbnQxNl90OjE7IC8qIDEgKi8KKyAgICAgICAgdWlu dDE2X3QgICAgbUltbToyOworICAgICAgICB1aW50MTZfdDoxOyAvKiAwICovCisgICAgICAgIHVp bnQxNl90ICAgIGhJbW06MTsKKyAgICAgICAgdWludDE2X3Q6MjsgLyogMTAgKi8KKyAgICB9Owor fSBhdnJfb3Bjb2RlX1NURFlfMTBhMGJiMWNjY2NjMWRkZF90OworaW50ICAgICBhdnJfZXhlY3V0 ZV9TVERZXzEwYTBiYjFjY2NjYzFkZGQoQ1BVQVZSU3RhdGUgKmVudiwgRGlzYXNDb250ZXh0ICpj dHgsIGF2cl9vcGNvZGVfU1REWV8xMGEwYmIxY2NjY2MxZGRkX3QgY29uc3QgKmluc3QpOworCit0 eXBlZGVmIHVuaW9uIGF2cl9vcGNvZGVfTERTXzEwMDEwMDBhYWFhYTAwMDBiYmJiYmJiYmJiYmJi YmJiX3UgeworICAgIHVpbnQzMl90ICAgIG9wY29kZTsKKyAgICBzdHJ1Y3QgeworICAgICAgICB1 aW50MzJfdCAgICBJbW06MTY7CisgICAgICAgIHVpbnQzMl90OjQ7IC8qIDAwMDAgKi8KKyAgICAg ICAgdWludDMyX3QgICAgUmQ6NTsKKyAgICAgICAgdWludDMyX3Q6NzsgLyogMTAwMTAwMCAqLwor ICAgIH07Cit9IGF2cl9vcGNvZGVfTERTXzEwMDEwMDBhYWFhYTAwMDBiYmJiYmJiYmJiYmJiYmJi X3Q7CitpbnQgICAgIGF2cl9leGVjdXRlX0xEU18xMDAxMDAwYWFhYWEwMDAwYmJiYmJiYmJiYmJi YmJiYihDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwgYXZyX29wY29kZV9MRFNf MTAwMTAwMGFhYWFhMDAwMGJiYmJiYmJiYmJiYmJiYmJfdCBjb25zdCAqaW5zdCk7CisKK3R5cGVk ZWYgdW5pb24gYXZyX29wY29kZV9MRFoyXzEwMDEwMDBhYWFhYTAwMDFfdSB7CisgICAgdWludDE2 X3QgICAgb3Bjb2RlOworICAgIHN0cnVjdCB7CisgICAgICAgIHVpbnQxNl90OjQ7IC8qIDAwMDEg Ki8KKyAgICAgICAgdWludDE2X3QgICAgUmQ6NTsKKyAgICAgICAgdWludDE2X3Q6NzsgLyogMTAw MTAwMCAqLworICAgIH07Cit9IGF2cl9vcGNvZGVfTERaMl8xMDAxMDAwYWFhYWEwMDAxX3Q7Citp bnQgICAgIGF2cl9leGVjdXRlX0xEWjJfMTAwMTAwMGFhYWFhMDAwMShDUFVBVlJTdGF0ZSAqZW52 LCBEaXNhc0NvbnRleHQgKmN0eCwgYXZyX29wY29kZV9MRFoyXzEwMDEwMDBhYWFhYTAwMDFfdCBj b25zdCAqaW5zdCk7CisKK3R5cGVkZWYgdW5pb24gYXZyX29wY29kZV9MRFozXzEwMDEwMDBhYWFh YTAwMTBfdSB7CisgICAgdWludDE2X3QgICAgb3Bjb2RlOworICAgIHN0cnVjdCB7CisgICAgICAg IHVpbnQxNl90OjQ7IC8qIDAwMTAgKi8KKyAgICAgICAgdWludDE2X3QgICAgUmQ6NTsKKyAgICAg ICAgdWludDE2X3Q6NzsgLyogMTAwMTAwMCAqLworICAgIH07Cit9IGF2cl9vcGNvZGVfTERaM18x MDAxMDAwYWFhYWEwMDEwX3Q7CitpbnQgICAgIGF2cl9leGVjdXRlX0xEWjNfMTAwMTAwMGFhYWFh MDAxMChDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwgYXZyX29wY29kZV9MRFoz XzEwMDEwMDBhYWFhYTAwMTBfdCBjb25zdCAqaW5zdCk7CisKK3R5cGVkZWYgdW5pb24gYXZyX29w Y29kZV9MUE0yXzEwMDEwMDBhYWFhYTAxMDBfdSB7CisgICAgdWludDE2X3QgICAgb3Bjb2RlOwor ICAgIHN0cnVjdCB7CisgICAgICAgIHVpbnQxNl90OjQ7IC8qIDAxMDAgKi8KKyAgICAgICAgdWlu dDE2X3QgICAgUmQ6NTsKKyAgICAgICAgdWludDE2X3Q6NzsgLyogMTAwMTAwMCAqLworICAgIH07 Cit9IGF2cl9vcGNvZGVfTFBNMl8xMDAxMDAwYWFhYWEwMTAwX3Q7CitpbnQgICAgIGF2cl9leGVj dXRlX0xQTTJfMTAwMTAwMGFhYWFhMDEwMChDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQg KmN0eCwgYXZyX29wY29kZV9MUE0yXzEwMDEwMDBhYWFhYTAxMDBfdCBjb25zdCAqaW5zdCk7CisK K3R5cGVkZWYgdW5pb24gYXZyX29wY29kZV9MUE1YXzEwMDEwMDBhYWFhYTAxMDFfdSB7CisgICAg dWludDE2X3QgICAgb3Bjb2RlOworICAgIHN0cnVjdCB7CisgICAgICAgIHVpbnQxNl90OjQ7IC8q IDAxMDEgKi8KKyAgICAgICAgdWludDE2X3QgICAgUmQ6NTsKKyAgICAgICAgdWludDE2X3Q6Nzsg LyogMTAwMTAwMCAqLworICAgIH07Cit9IGF2cl9vcGNvZGVfTFBNWF8xMDAxMDAwYWFhYWEwMTAx X3Q7CitpbnQgICAgIGF2cl9leGVjdXRlX0xQTVhfMTAwMTAwMGFhYWFhMDEwMShDUFVBVlJTdGF0 ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwgYXZyX29wY29kZV9MUE1YXzEwMDEwMDBhYWFhYTAx MDFfdCBjb25zdCAqaW5zdCk7CisKK3R5cGVkZWYgdW5pb24gYXZyX29wY29kZV9FTFBNMl8xMDAx MDAwYWFhYWEwMTEwX3UgeworICAgIHVpbnQxNl90ICAgIG9wY29kZTsKKyAgICBzdHJ1Y3Qgewor ICAgICAgICB1aW50MTZfdDo0OyAvKiAwMTEwICovCisgICAgICAgIHVpbnQxNl90ICAgIFJkOjU7 CisgICAgICAgIHVpbnQxNl90Ojc7IC8qIDEwMDEwMDAgKi8KKyAgICB9OworfSBhdnJfb3Bjb2Rl X0VMUE0yXzEwMDEwMDBhYWFhYTAxMTBfdDsKK2ludCAgICAgYXZyX2V4ZWN1dGVfRUxQTTJfMTAw MTAwMGFhYWFhMDExMChDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwgYXZyX29w Y29kZV9FTFBNMl8xMDAxMDAwYWFhYWEwMTEwX3QgY29uc3QgKmluc3QpOworCit0eXBlZGVmIHVu aW9uIGF2cl9vcGNvZGVfRUxQTVhfMTAwMTAwMGFhYWFhMDExMV91IHsKKyAgICB1aW50MTZfdCAg ICBvcGNvZGU7CisgICAgc3RydWN0IHsKKyAgICAgICAgdWludDE2X3Q6NDsgLyogMDExMSAqLwor ICAgICAgICB1aW50MTZfdCAgICBSZDo1OworICAgICAgICB1aW50MTZfdDo3OyAvKiAxMDAxMDAw ICovCisgICAgfTsKK30gYXZyX29wY29kZV9FTFBNWF8xMDAxMDAwYWFhYWEwMTExX3Q7CitpbnQg ICAgIGF2cl9leGVjdXRlX0VMUE1YXzEwMDEwMDBhYWFhYTAxMTEoQ1BVQVZSU3RhdGUgKmVudiwg RGlzYXNDb250ZXh0ICpjdHgsIGF2cl9vcGNvZGVfRUxQTVhfMTAwMTAwMGFhYWFhMDExMV90IGNv bnN0ICppbnN0KTsKKwordHlwZWRlZiB1bmlvbiBhdnJfb3Bjb2RlX0xEWTJfMTAwMTAwMGFhYWFh MTAwMV91IHsKKyAgICB1aW50MTZfdCAgICBvcGNvZGU7CisgICAgc3RydWN0IHsKKyAgICAgICAg dWludDE2X3Q6NDsgLyogMTAwMSAqLworICAgICAgICB1aW50MTZfdCAgICBSZDo1OworICAgICAg ICB1aW50MTZfdDo3OyAvKiAxMDAxMDAwICovCisgICAgfTsKK30gYXZyX29wY29kZV9MRFkyXzEw MDEwMDBhYWFhYTEwMDFfdDsKK2ludCAgICAgYXZyX2V4ZWN1dGVfTERZMl8xMDAxMDAwYWFhYWEx MDAxKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4LCBhdnJfb3Bjb2RlX0xEWTJf MTAwMTAwMGFhYWFhMTAwMV90IGNvbnN0ICppbnN0KTsKKwordHlwZWRlZiB1bmlvbiBhdnJfb3Bj b2RlX0xEWTNfMTAwMTAwMGFhYWFhMTAxMF91IHsKKyAgICB1aW50MTZfdCAgICBvcGNvZGU7Cisg ICAgc3RydWN0IHsKKyAgICAgICAgdWludDE2X3Q6NDsgLyogMTAxMCAqLworICAgICAgICB1aW50 MTZfdCAgICBSZDo1OworICAgICAgICB1aW50MTZfdDo3OyAvKiAxMDAxMDAwICovCisgICAgfTsK K30gYXZyX29wY29kZV9MRFkzXzEwMDEwMDBhYWFhYTEwMTBfdDsKK2ludCAgICAgYXZyX2V4ZWN1 dGVfTERZM18xMDAxMDAwYWFhYWExMDEwKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAq Y3R4LCBhdnJfb3Bjb2RlX0xEWTNfMTAwMTAwMGFhYWFhMTAxMF90IGNvbnN0ICppbnN0KTsKKwor dHlwZWRlZiB1bmlvbiBhdnJfb3Bjb2RlX0xEWDFfMTAwMTAwMGFhYWFhMTEwMF91IHsKKyAgICB1 aW50MTZfdCAgICBvcGNvZGU7CisgICAgc3RydWN0IHsKKyAgICAgICAgdWludDE2X3Q6NDsgLyog MTEwMCAqLworICAgICAgICB1aW50MTZfdCAgICBSZDo1OworICAgICAgICB1aW50MTZfdDo3OyAv KiAxMDAxMDAwICovCisgICAgfTsKK30gYXZyX29wY29kZV9MRFgxXzEwMDEwMDBhYWFhYTExMDBf dDsKK2ludCAgICAgYXZyX2V4ZWN1dGVfTERYMV8xMDAxMDAwYWFhYWExMTAwKENQVUFWUlN0YXRl ICplbnYsIERpc2FzQ29udGV4dCAqY3R4LCBhdnJfb3Bjb2RlX0xEWDFfMTAwMTAwMGFhYWFhMTEw MF90IGNvbnN0ICppbnN0KTsKKwordHlwZWRlZiB1bmlvbiBhdnJfb3Bjb2RlX0xEWDJfMTAwMTAw MGFhYWFhMTEwMV91IHsKKyAgICB1aW50MTZfdCAgICBvcGNvZGU7CisgICAgc3RydWN0IHsKKyAg ICAgICAgdWludDE2X3Q6NDsgLyogMTEwMSAqLworICAgICAgICB1aW50MTZfdCAgICBSZDo1Owor ICAgICAgICB1aW50MTZfdDo3OyAvKiAxMDAxMDAwICovCisgICAgfTsKK30gYXZyX29wY29kZV9M RFgyXzEwMDEwMDBhYWFhYTExMDFfdDsKK2ludCAgICAgYXZyX2V4ZWN1dGVfTERYMl8xMDAxMDAw YWFhYWExMTAxKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4LCBhdnJfb3Bjb2Rl X0xEWDJfMTAwMTAwMGFhYWFhMTEwMV90IGNvbnN0ICppbnN0KTsKKwordHlwZWRlZiB1bmlvbiBh dnJfb3Bjb2RlX0xEWDNfMTAwMTAwMGFhYWFhMTExMF91IHsKKyAgICB1aW50MTZfdCAgICBvcGNv ZGU7CisgICAgc3RydWN0IHsKKyAgICAgICAgdWludDE2X3Q6NDsgLyogMTExMCAqLworICAgICAg ICB1aW50MTZfdCAgICBSZDo1OworICAgICAgICB1aW50MTZfdDo3OyAvKiAxMDAxMDAwICovCisg ICAgfTsKK30gYXZyX29wY29kZV9MRFgzXzEwMDEwMDBhYWFhYTExMTBfdDsKK2ludCAgICAgYXZy X2V4ZWN1dGVfTERYM18xMDAxMDAwYWFhYWExMTEwKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29u dGV4dCAqY3R4LCBhdnJfb3Bjb2RlX0xEWDNfMTAwMTAwMGFhYWFhMTExMF90IGNvbnN0ICppbnN0 KTsKKwordHlwZWRlZiB1bmlvbiBhdnJfb3Bjb2RlX1BPUF8xMDAxMDAwYWFhYWExMTExX3Ugewor ICAgIHVpbnQxNl90ICAgIG9wY29kZTsKKyAgICBzdHJ1Y3QgeworICAgICAgICB1aW50MTZfdDo0 OyAvKiAxMTExICovCisgICAgICAgIHVpbnQxNl90ICAgIFJkOjU7CisgICAgICAgIHVpbnQxNl90 Ojc7IC8qIDEwMDEwMDAgKi8KKyAgICB9OworfSBhdnJfb3Bjb2RlX1BPUF8xMDAxMDAwYWFhYWEx MTExX3Q7CitpbnQgICAgIGF2cl9leGVjdXRlX1BPUF8xMDAxMDAwYWFhYWExMTExKENQVUFWUlN0 YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4LCBhdnJfb3Bjb2RlX1BPUF8xMDAxMDAwYWFhYWEx MTExX3QgY29uc3QgKmluc3QpOworCit0eXBlZGVmIHVuaW9uIGF2cl9vcGNvZGVfU1RTXzEwMDEw MDFhYWFhYTAwMDBiYmJiYmJiYmJiYmJiYmJiX3UgeworICAgIHVpbnQzMl90ICAgIG9wY29kZTsK KyAgICBzdHJ1Y3QgeworICAgICAgICB1aW50MzJfdCAgICBJbW06MTY7CisgICAgICAgIHVpbnQz Ml90OjQ7IC8qIDAwMDAgKi8KKyAgICAgICAgdWludDMyX3QgICAgUmQ6NTsKKyAgICAgICAgdWlu dDMyX3Q6NzsgLyogMTAwMTAwMSAqLworICAgIH07Cit9IGF2cl9vcGNvZGVfU1RTXzEwMDEwMDFh YWFhYTAwMDBiYmJiYmJiYmJiYmJiYmJiX3Q7CitpbnQgICAgIGF2cl9leGVjdXRlX1NUU18xMDAx MDAxYWFhYWEwMDAwYmJiYmJiYmJiYmJiYmJiYihDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRl eHQgKmN0eCwgYXZyX29wY29kZV9TVFNfMTAwMTAwMWFhYWFhMDAwMGJiYmJiYmJiYmJiYmJiYmJf dCBjb25zdCAqaW5zdCk7CisKK3R5cGVkZWYgdW5pb24gYXZyX29wY29kZV9TVFoyXzEwMDEwMDFh YWFhYTAwMDFfdSB7CisgICAgdWludDE2X3QgICAgb3Bjb2RlOworICAgIHN0cnVjdCB7CisgICAg ICAgIHVpbnQxNl90OjQ7IC8qIDAwMDEgKi8KKyAgICAgICAgdWludDE2X3QgICAgUmQ6NTsKKyAg ICAgICAgdWludDE2X3Q6NzsgLyogMTAwMTAwMSAqLworICAgIH07Cit9IGF2cl9vcGNvZGVfU1Ra Ml8xMDAxMDAxYWFhYWEwMDAxX3Q7CitpbnQgICAgIGF2cl9leGVjdXRlX1NUWjJfMTAwMTAwMWFh YWFhMDAwMShDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwgYXZyX29wY29kZV9T VFoyXzEwMDEwMDFhYWFhYTAwMDFfdCBjb25zdCAqaW5zdCk7CisKK3R5cGVkZWYgdW5pb24gYXZy X29wY29kZV9TVFozXzEwMDEwMDFhYWFhYTAwMTBfdSB7CisgICAgdWludDE2X3QgICAgb3Bjb2Rl OworICAgIHN0cnVjdCB7CisgICAgICAgIHVpbnQxNl90OjQ7IC8qIDAwMTAgKi8KKyAgICAgICAg dWludDE2X3QgICAgUmQ6NTsKKyAgICAgICAgdWludDE2X3Q6NzsgLyogMTAwMTAwMSAqLworICAg IH07Cit9IGF2cl9vcGNvZGVfU1RaM18xMDAxMDAxYWFhYWEwMDEwX3Q7CitpbnQgICAgIGF2cl9l eGVjdXRlX1NUWjNfMTAwMTAwMWFhYWFhMDAxMChDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRl eHQgKmN0eCwgYXZyX29wY29kZV9TVFozXzEwMDEwMDFhYWFhYTAwMTBfdCBjb25zdCAqaW5zdCk7 CisKK3R5cGVkZWYgdW5pb24gYXZyX29wY29kZV9YQ0hfMTAwMTAwMWFhYWFhMDEwMF91IHsKKyAg ICB1aW50MTZfdCAgICBvcGNvZGU7CisgICAgc3RydWN0IHsKKyAgICAgICAgdWludDE2X3Q6NDsg LyogMDEwMCAqLworICAgICAgICB1aW50MTZfdCAgICBSZDo1OworICAgICAgICB1aW50MTZfdDo3 OyAvKiAxMDAxMDAxICovCisgICAgfTsKK30gYXZyX29wY29kZV9YQ0hfMTAwMTAwMWFhYWFhMDEw MF90OworaW50ICAgICBhdnJfZXhlY3V0ZV9YQ0hfMTAwMTAwMWFhYWFhMDEwMChDUFVBVlJTdGF0 ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwgYXZyX29wY29kZV9YQ0hfMTAwMTAwMWFhYWFhMDEw MF90IGNvbnN0ICppbnN0KTsKKwordHlwZWRlZiB1bmlvbiBhdnJfb3Bjb2RlX0xBU18xMDAxMDAx YWFhYWEwMTAxX3UgeworICAgIHVpbnQxNl90ICAgIG9wY29kZTsKKyAgICBzdHJ1Y3QgeworICAg ICAgICB1aW50MTZfdDo0OyAvKiAwMTAxICovCisgICAgICAgIHVpbnQxNl90ICAgIFJyOjU7Cisg ICAgICAgIHVpbnQxNl90Ojc7IC8qIDEwMDEwMDEgKi8KKyAgICB9OworfSBhdnJfb3Bjb2RlX0xB U18xMDAxMDAxYWFhYWEwMTAxX3Q7CitpbnQgICAgIGF2cl9leGVjdXRlX0xBU18xMDAxMDAxYWFh YWEwMTAxKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4LCBhdnJfb3Bjb2RlX0xB U18xMDAxMDAxYWFhYWEwMTAxX3QgY29uc3QgKmluc3QpOworCit0eXBlZGVmIHVuaW9uIGF2cl9v cGNvZGVfTEFDXzEwMDEwMDFhYWFhYTAxMTBfdSB7CisgICAgdWludDE2X3QgICAgb3Bjb2RlOwor ICAgIHN0cnVjdCB7CisgICAgICAgIHVpbnQxNl90OjQ7IC8qIDAxMTAgKi8KKyAgICAgICAgdWlu dDE2X3QgICAgUnI6NTsKKyAgICAgICAgdWludDE2X3Q6NzsgLyogMTAwMTAwMSAqLworICAgIH07 Cit9IGF2cl9vcGNvZGVfTEFDXzEwMDEwMDFhYWFhYTAxMTBfdDsKK2ludCAgICAgYXZyX2V4ZWN1 dGVfTEFDXzEwMDEwMDFhYWFhYTAxMTAoQ1BVQVZSU3RhdGUgKmVudiwgRGlzYXNDb250ZXh0ICpj dHgsIGF2cl9vcGNvZGVfTEFDXzEwMDEwMDFhYWFhYTAxMTBfdCBjb25zdCAqaW5zdCk7CisKK3R5 cGVkZWYgdW5pb24gYXZyX29wY29kZV9MQVRfMTAwMTAwMWFhYWFhMDExMV91IHsKKyAgICB1aW50 MTZfdCAgICBvcGNvZGU7CisgICAgc3RydWN0IHsKKyAgICAgICAgdWludDE2X3Q6NDsgLyogMDEx MSAqLworICAgICAgICB1aW50MTZfdCAgICBScjo1OworICAgICAgICB1aW50MTZfdDo3OyAvKiAx MDAxMDAxICovCisgICAgfTsKK30gYXZyX29wY29kZV9MQVRfMTAwMTAwMWFhYWFhMDExMV90Owor aW50ICAgICBhdnJfZXhlY3V0ZV9MQVRfMTAwMTAwMWFhYWFhMDExMShDUFVBVlJTdGF0ZSAqZW52 LCBEaXNhc0NvbnRleHQgKmN0eCwgYXZyX29wY29kZV9MQVRfMTAwMTAwMWFhYWFhMDExMV90IGNv bnN0ICppbnN0KTsKKwordHlwZWRlZiB1bmlvbiBhdnJfb3Bjb2RlX1NUWTJfMTAwMTAwMWFhYWFh MTAwMV91IHsKKyAgICB1aW50MTZfdCAgICBvcGNvZGU7CisgICAgc3RydWN0IHsKKyAgICAgICAg dWludDE2X3Q6NDsgLyogMTAwMSAqLworICAgICAgICB1aW50MTZfdCAgICBSZDo1OworICAgICAg ICB1aW50MTZfdDo3OyAvKiAxMDAxMDAxICovCisgICAgfTsKK30gYXZyX29wY29kZV9TVFkyXzEw MDEwMDFhYWFhYTEwMDFfdDsKK2ludCAgICAgYXZyX2V4ZWN1dGVfU1RZMl8xMDAxMDAxYWFhYWEx MDAxKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4LCBhdnJfb3Bjb2RlX1NUWTJf MTAwMTAwMWFhYWFhMTAwMV90IGNvbnN0ICppbnN0KTsKKwordHlwZWRlZiB1bmlvbiBhdnJfb3Bj b2RlX1NUWTNfMTAwMTAwMWFhYWFhMTAxMF91IHsKKyAgICB1aW50MTZfdCAgICBvcGNvZGU7Cisg ICAgc3RydWN0IHsKKyAgICAgICAgdWludDE2X3Q6NDsgLyogMTAxMCAqLworICAgICAgICB1aW50 MTZfdCAgICBSZDo1OworICAgICAgICB1aW50MTZfdDo3OyAvKiAxMDAxMDAxICovCisgICAgfTsK K30gYXZyX29wY29kZV9TVFkzXzEwMDEwMDFhYWFhYTEwMTBfdDsKK2ludCAgICAgYXZyX2V4ZWN1 dGVfU1RZM18xMDAxMDAxYWFhYWExMDEwKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAq Y3R4LCBhdnJfb3Bjb2RlX1NUWTNfMTAwMTAwMWFhYWFhMTAxMF90IGNvbnN0ICppbnN0KTsKKwor dHlwZWRlZiB1bmlvbiBhdnJfb3Bjb2RlX1NUWDFfMTAwMTAwMWFhYWFhMTEwMF91IHsKKyAgICB1 aW50MTZfdCAgICBvcGNvZGU7CisgICAgc3RydWN0IHsKKyAgICAgICAgdWludDE2X3Q6NDsgLyog MTEwMCAqLworICAgICAgICB1aW50MTZfdCAgICBScjo1OworICAgICAgICB1aW50MTZfdDo3OyAv KiAxMDAxMDAxICovCisgICAgfTsKK30gYXZyX29wY29kZV9TVFgxXzEwMDEwMDFhYWFhYTExMDBf dDsKK2ludCAgICAgYXZyX2V4ZWN1dGVfU1RYMV8xMDAxMDAxYWFhYWExMTAwKENQVUFWUlN0YXRl ICplbnYsIERpc2FzQ29udGV4dCAqY3R4LCBhdnJfb3Bjb2RlX1NUWDFfMTAwMTAwMWFhYWFhMTEw MF90IGNvbnN0ICppbnN0KTsKKwordHlwZWRlZiB1bmlvbiBhdnJfb3Bjb2RlX1NUWDJfMTAwMTAw MWFhYWFhMTEwMV91IHsKKyAgICB1aW50MTZfdCAgICBvcGNvZGU7CisgICAgc3RydWN0IHsKKyAg ICAgICAgdWludDE2X3Q6NDsgLyogMTEwMSAqLworICAgICAgICB1aW50MTZfdCAgICBScjo1Owor ICAgICAgICB1aW50MTZfdDo3OyAvKiAxMDAxMDAxICovCisgICAgfTsKK30gYXZyX29wY29kZV9T VFgyXzEwMDEwMDFhYWFhYTExMDFfdDsKK2ludCAgICAgYXZyX2V4ZWN1dGVfU1RYMl8xMDAxMDAx YWFhYWExMTAxKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4LCBhdnJfb3Bjb2Rl X1NUWDJfMTAwMTAwMWFhYWFhMTEwMV90IGNvbnN0ICppbnN0KTsKKwordHlwZWRlZiB1bmlvbiBh dnJfb3Bjb2RlX1NUWDNfMTAwMTAwMWFhYWFhMTExMF91IHsKKyAgICB1aW50MTZfdCAgICBvcGNv ZGU7CisgICAgc3RydWN0IHsKKyAgICAgICAgdWludDE2X3Q6NDsgLyogMTExMCAqLworICAgICAg ICB1aW50MTZfdCAgICBScjo1OworICAgICAgICB1aW50MTZfdDo3OyAvKiAxMDAxMDAxICovCisg ICAgfTsKK30gYXZyX29wY29kZV9TVFgzXzEwMDEwMDFhYWFhYTExMTBfdDsKK2ludCAgICAgYXZy X2V4ZWN1dGVfU1RYM18xMDAxMDAxYWFhYWExMTEwKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29u dGV4dCAqY3R4LCBhdnJfb3Bjb2RlX1NUWDNfMTAwMTAwMWFhYWFhMTExMF90IGNvbnN0ICppbnN0 KTsKKwordHlwZWRlZiB1bmlvbiBhdnJfb3Bjb2RlX1BVU0hfMTAwMTAwMWFhYWFhMTExMV91IHsK KyAgICB1aW50MTZfdCAgICBvcGNvZGU7CisgICAgc3RydWN0IHsKKyAgICAgICAgdWludDE2X3Q6 NDsgLyogMTExMSAqLworICAgICAgICB1aW50MTZfdCAgICBSZDo1OworICAgICAgICB1aW50MTZf dDo3OyAvKiAxMDAxMDAxICovCisgICAgfTsKK30gYXZyX29wY29kZV9QVVNIXzEwMDEwMDFhYWFh YTExMTFfdDsKK2ludCAgICAgYXZyX2V4ZWN1dGVfUFVTSF8xMDAxMDAxYWFhYWExMTExKENQVUFW UlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4LCBhdnJfb3Bjb2RlX1BVU0hfMTAwMTAwMWFh YWFhMTExMV90IGNvbnN0ICppbnN0KTsKKwordHlwZWRlZiB1bmlvbiBhdnJfb3Bjb2RlX0NPTV8x MDAxMDEwYWFhYWEwMDAwX3UgeworICAgIHVpbnQxNl90ICAgIG9wY29kZTsKKyAgICBzdHJ1Y3Qg eworICAgICAgICB1aW50MTZfdDo0OyAvKiAwMDAwICovCisgICAgICAgIHVpbnQxNl90ICAgIFJk OjU7CisgICAgICAgIHVpbnQxNl90Ojc7IC8qIDEwMDEwMTAgKi8KKyAgICB9OworfSBhdnJfb3Bj b2RlX0NPTV8xMDAxMDEwYWFhYWEwMDAwX3Q7CitpbnQgICAgIGF2cl9leGVjdXRlX0NPTV8xMDAx MDEwYWFhYWEwMDAwKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4LCBhdnJfb3Bj b2RlX0NPTV8xMDAxMDEwYWFhYWEwMDAwX3QgY29uc3QgKmluc3QpOworCit0eXBlZGVmIHVuaW9u IGF2cl9vcGNvZGVfTkVHXzEwMDEwMTBhYWFhYTAwMDFfdSB7CisgICAgdWludDE2X3QgICAgb3Bj b2RlOworICAgIHN0cnVjdCB7CisgICAgICAgIHVpbnQxNl90OjQ7IC8qIDAwMDEgKi8KKyAgICAg ICAgdWludDE2X3QgICAgUmQ6NTsKKyAgICAgICAgdWludDE2X3Q6NzsgLyogMTAwMTAxMCAqLwor ICAgIH07Cit9IGF2cl9vcGNvZGVfTkVHXzEwMDEwMTBhYWFhYTAwMDFfdDsKK2ludCAgICAgYXZy X2V4ZWN1dGVfTkVHXzEwMDEwMTBhYWFhYTAwMDEoQ1BVQVZSU3RhdGUgKmVudiwgRGlzYXNDb250 ZXh0ICpjdHgsIGF2cl9vcGNvZGVfTkVHXzEwMDEwMTBhYWFhYTAwMDFfdCBjb25zdCAqaW5zdCk7 CisKK3R5cGVkZWYgdW5pb24gYXZyX29wY29kZV9TV0FQXzEwMDEwMTBhYWFhYTAwMTBfdSB7Cisg ICAgdWludDE2X3QgICAgb3Bjb2RlOworICAgIHN0cnVjdCB7CisgICAgICAgIHVpbnQxNl90OjQ7 IC8qIDAwMTAgKi8KKyAgICAgICAgdWludDE2X3QgICAgUmQ6NTsKKyAgICAgICAgdWludDE2X3Q6 NzsgLyogMTAwMTAxMCAqLworICAgIH07Cit9IGF2cl9vcGNvZGVfU1dBUF8xMDAxMDEwYWFhYWEw MDEwX3Q7CitpbnQgICAgIGF2cl9leGVjdXRlX1NXQVBfMTAwMTAxMGFhYWFhMDAxMChDUFVBVlJT dGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwgYXZyX29wY29kZV9TV0FQXzEwMDEwMTBhYWFh YTAwMTBfdCBjb25zdCAqaW5zdCk7CisKK3R5cGVkZWYgdW5pb24gYXZyX29wY29kZV9JTkNfMTAw MTAxMGFhYWFhMDAxMV91IHsKKyAgICB1aW50MTZfdCAgICBvcGNvZGU7CisgICAgc3RydWN0IHsK KyAgICAgICAgdWludDE2X3Q6NDsgLyogMDAxMSAqLworICAgICAgICB1aW50MTZfdCAgICBSZDo1 OworICAgICAgICB1aW50MTZfdDo3OyAvKiAxMDAxMDEwICovCisgICAgfTsKK30gYXZyX29wY29k ZV9JTkNfMTAwMTAxMGFhYWFhMDAxMV90OworaW50ICAgICBhdnJfZXhlY3V0ZV9JTkNfMTAwMTAx MGFhYWFhMDAxMShDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwgYXZyX29wY29k ZV9JTkNfMTAwMTAxMGFhYWFhMDAxMV90IGNvbnN0ICppbnN0KTsKKwordHlwZWRlZiB1bmlvbiBh dnJfb3Bjb2RlX0FTUl8xMDAxMDEwYWFhYWEwMTAxX3UgeworICAgIHVpbnQxNl90ICAgIG9wY29k ZTsKKyAgICBzdHJ1Y3QgeworICAgICAgICB1aW50MTZfdDo0OyAvKiAwMTAxICovCisgICAgICAg IHVpbnQxNl90ICAgIFJkOjU7CisgICAgICAgIHVpbnQxNl90Ojc7IC8qIDEwMDEwMTAgKi8KKyAg ICB9OworfSBhdnJfb3Bjb2RlX0FTUl8xMDAxMDEwYWFhYWEwMTAxX3Q7CitpbnQgICAgIGF2cl9l eGVjdXRlX0FTUl8xMDAxMDEwYWFhYWEwMTAxKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4 dCAqY3R4LCBhdnJfb3Bjb2RlX0FTUl8xMDAxMDEwYWFhYWEwMTAxX3QgY29uc3QgKmluc3QpOwor Cit0eXBlZGVmIHVuaW9uIGF2cl9vcGNvZGVfTFNSXzEwMDEwMTBhYWFhYTAxMTBfdSB7CisgICAg dWludDE2X3QgICAgb3Bjb2RlOworICAgIHN0cnVjdCB7CisgICAgICAgIHVpbnQxNl90OjQ7IC8q IDAxMTAgKi8KKyAgICAgICAgdWludDE2X3QgICAgUmQ6NTsKKyAgICAgICAgdWludDE2X3Q6Nzsg LyogMTAwMTAxMCAqLworICAgIH07Cit9IGF2cl9vcGNvZGVfTFNSXzEwMDEwMTBhYWFhYTAxMTBf dDsKK2ludCAgICAgYXZyX2V4ZWN1dGVfTFNSXzEwMDEwMTBhYWFhYTAxMTAoQ1BVQVZSU3RhdGUg KmVudiwgRGlzYXNDb250ZXh0ICpjdHgsIGF2cl9vcGNvZGVfTFNSXzEwMDEwMTBhYWFhYTAxMTBf dCBjb25zdCAqaW5zdCk7CisKK3R5cGVkZWYgdW5pb24gYXZyX29wY29kZV9ST1JfMTAwMTAxMGFh YWFhMDExMV91IHsKKyAgICB1aW50MTZfdCAgICBvcGNvZGU7CisgICAgc3RydWN0IHsKKyAgICAg ICAgdWludDE2X3Q6NDsgLyogMDExMSAqLworICAgICAgICB1aW50MTZfdCAgICBSZDo1OworICAg ICAgICB1aW50MTZfdDo3OyAvKiAxMDAxMDEwICovCisgICAgfTsKK30gYXZyX29wY29kZV9ST1Jf MTAwMTAxMGFhYWFhMDExMV90OworaW50ICAgICBhdnJfZXhlY3V0ZV9ST1JfMTAwMTAxMGFhYWFh MDExMShDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwgYXZyX29wY29kZV9ST1Jf MTAwMTAxMGFhYWFhMDExMV90IGNvbnN0ICppbnN0KTsKKwordHlwZWRlZiB1bmlvbiBhdnJfb3Bj b2RlX0JTRVRfMTAwMTAxMDAwYWFhMTAwMF91IHsKKyAgICB1aW50MTZfdCAgICBvcGNvZGU7Cisg ICAgc3RydWN0IHsKKyAgICAgICAgdWludDE2X3Q6NDsgLyogMTAwMCAqLworICAgICAgICB1aW50 MTZfdCAgICBCaXQ6MzsKKyAgICAgICAgdWludDE2X3Q6OTsgLyogMTAwMTAxMDAwICovCisgICAg fTsKK30gYXZyX29wY29kZV9CU0VUXzEwMDEwMTAwMGFhYTEwMDBfdDsKK2ludCAgICAgYXZyX2V4 ZWN1dGVfQlNFVF8xMDAxMDEwMDBhYWExMDAwKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4 dCAqY3R4LCBhdnJfb3Bjb2RlX0JTRVRfMTAwMTAxMDAwYWFhMTAwMF90IGNvbnN0ICppbnN0KTsK KwordHlwZWRlZiB1bmlvbiBhdnJfb3Bjb2RlX0lKTVBfMTAwMTAxMDAwMDAwMTAwMV91IHsKKyAg ICB1aW50MTZfdCAgICBvcGNvZGU7CisgICAgc3RydWN0IHsKKyAgICAgICAgdWludDE2X3Q6MTY7 IC8qIDEwMDEwMTAwMDAwMDEwMDEgKi8KKyAgICB9OworfSBhdnJfb3Bjb2RlX0lKTVBfMTAwMTAx MDAwMDAwMTAwMV90OworaW50ICAgICBhdnJfZXhlY3V0ZV9JSk1QXzEwMDEwMTAwMDAwMDEwMDEo Q1BVQVZSU3RhdGUgKmVudiwgRGlzYXNDb250ZXh0ICpjdHgsIGF2cl9vcGNvZGVfSUpNUF8xMDAx MDEwMDAwMDAxMDAxX3QgY29uc3QgKmluc3QpOworCit0eXBlZGVmIHVuaW9uIGF2cl9vcGNvZGVf RUlKTVBfMTAwMTAxMDAwMDAxMTAwMV91IHsKKyAgICB1aW50MTZfdCAgICBvcGNvZGU7CisgICAg c3RydWN0IHsKKyAgICAgICAgdWludDE2X3Q6MTY7IC8qIDEwMDEwMTAwMDAwMTEwMDEgKi8KKyAg ICB9OworfSBhdnJfb3Bjb2RlX0VJSk1QXzEwMDEwMTAwMDAwMTEwMDFfdDsKK2ludCAgICAgYXZy X2V4ZWN1dGVfRUlKTVBfMTAwMTAxMDAwMDAxMTAwMShDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0Nv bnRleHQgKmN0eCwgYXZyX29wY29kZV9FSUpNUF8xMDAxMDEwMDAwMDExMDAxX3QgY29uc3QgKmlu c3QpOworCit0eXBlZGVmIHVuaW9uIGF2cl9vcGNvZGVfQkNMUl8xMDAxMDEwMDFhYWExMDAwX3Ug eworICAgIHVpbnQxNl90ICAgIG9wY29kZTsKKyAgICBzdHJ1Y3QgeworICAgICAgICB1aW50MTZf dDo0OyAvKiAxMDAwICovCisgICAgICAgIHVpbnQxNl90ICAgIEJpdDozOworICAgICAgICB1aW50 MTZfdDo5OyAvKiAxMDAxMDEwMDEgKi8KKyAgICB9OworfSBhdnJfb3Bjb2RlX0JDTFJfMTAwMTAx MDAxYWFhMTAwMF90OworaW50ICAgICBhdnJfZXhlY3V0ZV9CQ0xSXzEwMDEwMTAwMWFhYTEwMDAo Q1BVQVZSU3RhdGUgKmVudiwgRGlzYXNDb250ZXh0ICpjdHgsIGF2cl9vcGNvZGVfQkNMUl8xMDAx MDEwMDFhYWExMDAwX3QgY29uc3QgKmluc3QpOworCit0eXBlZGVmIHVuaW9uIGF2cl9vcGNvZGVf UkVUXzEwMDEwMTAxMDAwMDEwMDBfdSB7CisgICAgdWludDE2X3QgICAgb3Bjb2RlOworICAgIHN0 cnVjdCB7CisgICAgICAgIHVpbnQxNl90OjE2OyAvKiAxMDAxMDEwMTAwMDAxMDAwICovCisgICAg fTsKK30gYXZyX29wY29kZV9SRVRfMTAwMTAxMDEwMDAwMTAwMF90OworaW50ICAgICBhdnJfZXhl Y3V0ZV9SRVRfMTAwMTAxMDEwMDAwMTAwMChDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQg KmN0eCwgYXZyX29wY29kZV9SRVRfMTAwMTAxMDEwMDAwMTAwMF90IGNvbnN0ICppbnN0KTsKKwor dHlwZWRlZiB1bmlvbiBhdnJfb3Bjb2RlX1JFVElfMTAwMTAxMDEwMDAxMTAwMF91IHsKKyAgICB1 aW50MTZfdCAgICBvcGNvZGU7CisgICAgc3RydWN0IHsKKyAgICAgICAgdWludDE2X3Q6MTY7IC8q IDEwMDEwMTAxMDAwMTEwMDAgKi8KKyAgICB9OworfSBhdnJfb3Bjb2RlX1JFVElfMTAwMTAxMDEw MDAxMTAwMF90OworaW50ICAgICBhdnJfZXhlY3V0ZV9SRVRJXzEwMDEwMTAxMDAwMTEwMDAoQ1BV QVZSU3RhdGUgKmVudiwgRGlzYXNDb250ZXh0ICpjdHgsIGF2cl9vcGNvZGVfUkVUSV8xMDAxMDEw MTAwMDExMDAwX3QgY29uc3QgKmluc3QpOworCit0eXBlZGVmIHVuaW9uIGF2cl9vcGNvZGVfSUNB TExfMTAwMTAxMDEwMDAwMTAwMV91IHsKKyAgICB1aW50MTZfdCAgICBvcGNvZGU7CisgICAgc3Ry dWN0IHsKKyAgICAgICAgdWludDE2X3Q6MTY7IC8qIDEwMDEwMTAxMDAwMDEwMDEgKi8KKyAgICB9 OworfSBhdnJfb3Bjb2RlX0lDQUxMXzEwMDEwMTAxMDAwMDEwMDFfdDsKK2ludCAgICAgYXZyX2V4 ZWN1dGVfSUNBTExfMTAwMTAxMDEwMDAwMTAwMShDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRl eHQgKmN0eCwgYXZyX29wY29kZV9JQ0FMTF8xMDAxMDEwMTAwMDAxMDAxX3QgY29uc3QgKmluc3Qp OworCit0eXBlZGVmIHVuaW9uIGF2cl9vcGNvZGVfRUlDQUxMXzEwMDEwMTAxMDAwMTEwMDFfdSB7 CisgICAgdWludDE2X3QgICAgb3Bjb2RlOworICAgIHN0cnVjdCB7CisgICAgICAgIHVpbnQxNl90 OjE2OyAvKiAxMDAxMDEwMTAwMDExMDAxICovCisgICAgfTsKK30gYXZyX29wY29kZV9FSUNBTExf MTAwMTAxMDEwMDAxMTAwMV90OworaW50ICAgICBhdnJfZXhlY3V0ZV9FSUNBTExfMTAwMTAxMDEw MDAxMTAwMShDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwgYXZyX29wY29kZV9F SUNBTExfMTAwMTAxMDEwMDAxMTAwMV90IGNvbnN0ICppbnN0KTsKKwordHlwZWRlZiB1bmlvbiBh dnJfb3Bjb2RlX1NMRUVQXzEwMDEwMTAxMTAwMDEwMDBfdSB7CisgICAgdWludDE2X3QgICAgb3Bj b2RlOworICAgIHN0cnVjdCB7CisgICAgICAgIHVpbnQxNl90OjE2OyAvKiAxMDAxMDEwMTEwMDAx MDAwICovCisgICAgfTsKK30gYXZyX29wY29kZV9TTEVFUF8xMDAxMDEwMTEwMDAxMDAwX3Q7Citp bnQgICAgIGF2cl9leGVjdXRlX1NMRUVQXzEwMDEwMTAxMTAwMDEwMDAoQ1BVQVZSU3RhdGUgKmVu diwgRGlzYXNDb250ZXh0ICpjdHgsIGF2cl9vcGNvZGVfU0xFRVBfMTAwMTAxMDExMDAwMTAwMF90 IGNvbnN0ICppbnN0KTsKKwordHlwZWRlZiB1bmlvbiBhdnJfb3Bjb2RlX0JSRUFLXzEwMDEwMTAx MTAwMTEwMDBfdSB7CisgICAgdWludDE2X3QgICAgb3Bjb2RlOworICAgIHN0cnVjdCB7CisgICAg ICAgIHVpbnQxNl90OjE2OyAvKiAxMDAxMDEwMTEwMDExMDAwICovCisgICAgfTsKK30gYXZyX29w Y29kZV9CUkVBS18xMDAxMDEwMTEwMDExMDAwX3Q7CitpbnQgICAgIGF2cl9leGVjdXRlX0JSRUFL XzEwMDEwMTAxMTAwMTEwMDAoQ1BVQVZSU3RhdGUgKmVudiwgRGlzYXNDb250ZXh0ICpjdHgsIGF2 cl9vcGNvZGVfQlJFQUtfMTAwMTAxMDExMDAxMTAwMF90IGNvbnN0ICppbnN0KTsKKwordHlwZWRl ZiB1bmlvbiBhdnJfb3Bjb2RlX1dEUl8xMDAxMDEwMTEwMTAxMDAwX3UgeworICAgIHVpbnQxNl90 ICAgIG9wY29kZTsKKyAgICBzdHJ1Y3QgeworICAgICAgICB1aW50MTZfdDoxNjsgLyogMTAwMTAx MDExMDEwMTAwMCAqLworICAgIH07Cit9IGF2cl9vcGNvZGVfV0RSXzEwMDEwMTAxMTAxMDEwMDBf dDsKK2ludCAgICAgYXZyX2V4ZWN1dGVfV0RSXzEwMDEwMTAxMTAxMDEwMDAoQ1BVQVZSU3RhdGUg KmVudiwgRGlzYXNDb250ZXh0ICpjdHgsIGF2cl9vcGNvZGVfV0RSXzEwMDEwMTAxMTAxMDEwMDBf dCBjb25zdCAqaW5zdCk7CisKK3R5cGVkZWYgdW5pb24gYXZyX29wY29kZV9MUE0xXzEwMDEwMTAx MTEwMDEwMDBfdSB7CisgICAgdWludDE2X3QgICAgb3Bjb2RlOworICAgIHN0cnVjdCB7CisgICAg ICAgIHVpbnQxNl90OjE2OyAvKiAxMDAxMDEwMTExMDAxMDAwICovCisgICAgfTsKK30gYXZyX29w Y29kZV9MUE0xXzEwMDEwMTAxMTEwMDEwMDBfdDsKK2ludCAgICAgYXZyX2V4ZWN1dGVfTFBNMV8x MDAxMDEwMTExMDAxMDAwKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4LCBhdnJf b3Bjb2RlX0xQTTFfMTAwMTAxMDExMTAwMTAwMF90IGNvbnN0ICppbnN0KTsKKwordHlwZWRlZiB1 bmlvbiBhdnJfb3Bjb2RlX0VMUE0xXzEwMDEwMTAxMTEwMTEwMDBfdSB7CisgICAgdWludDE2X3Qg ICAgb3Bjb2RlOworICAgIHN0cnVjdCB7CisgICAgICAgIHVpbnQxNl90OjE2OyAvKiAxMDAxMDEw MTExMDExMDAwICovCisgICAgfTsKK30gYXZyX29wY29kZV9FTFBNMV8xMDAxMDEwMTExMDExMDAw X3Q7CitpbnQgICAgIGF2cl9leGVjdXRlX0VMUE0xXzEwMDEwMTAxMTEwMTEwMDAoQ1BVQVZSU3Rh dGUgKmVudiwgRGlzYXNDb250ZXh0ICpjdHgsIGF2cl9vcGNvZGVfRUxQTTFfMTAwMTAxMDExMTAx MTAwMF90IGNvbnN0ICppbnN0KTsKKwordHlwZWRlZiB1bmlvbiBhdnJfb3Bjb2RlX1NQTV8xMDAx MDEwMTExMTAxMDAwX3UgeworICAgIHVpbnQxNl90ICAgIG9wY29kZTsKKyAgICBzdHJ1Y3Qgewor ICAgICAgICB1aW50MTZfdDoxNjsgLyogMTAwMTAxMDExMTEwMTAwMCAqLworICAgIH07Cit9IGF2 cl9vcGNvZGVfU1BNXzEwMDEwMTAxMTExMDEwMDBfdDsKK2ludCAgICAgYXZyX2V4ZWN1dGVfU1BN XzEwMDEwMTAxMTExMDEwMDAoQ1BVQVZSU3RhdGUgKmVudiwgRGlzYXNDb250ZXh0ICpjdHgsIGF2 cl9vcGNvZGVfU1BNXzEwMDEwMTAxMTExMDEwMDBfdCBjb25zdCAqaW5zdCk7CisKK3R5cGVkZWYg dW5pb24gYXZyX29wY29kZV9TUE1YXzEwMDEwMTAxMTExMTEwMDBfdSB7CisgICAgdWludDE2X3Qg ICAgb3Bjb2RlOworICAgIHN0cnVjdCB7CisgICAgICAgIHVpbnQxNl90OjE2OyAvKiAxMDAxMDEw MTExMTExMDAwICovCisgICAgfTsKK30gYXZyX29wY29kZV9TUE1YXzEwMDEwMTAxMTExMTEwMDBf dDsKK2ludCAgICAgYXZyX2V4ZWN1dGVfU1BNWF8xMDAxMDEwMTExMTExMDAwKENQVUFWUlN0YXRl ICplbnYsIERpc2FzQ29udGV4dCAqY3R4LCBhdnJfb3Bjb2RlX1NQTVhfMTAwMTAxMDExMTExMTAw MF90IGNvbnN0ICppbnN0KTsKKwordHlwZWRlZiB1bmlvbiBhdnJfb3Bjb2RlX0RFQ18xMDAxMDEw YWFhYWExMDEwX3UgeworICAgIHVpbnQxNl90ICAgIG9wY29kZTsKKyAgICBzdHJ1Y3QgeworICAg ICAgICB1aW50MTZfdDo0OyAvKiAxMDEwICovCisgICAgICAgIHVpbnQxNl90ICAgIFJkOjU7Cisg ICAgICAgIHVpbnQxNl90Ojc7IC8qIDEwMDEwMTAgKi8KKyAgICB9OworfSBhdnJfb3Bjb2RlX0RF Q18xMDAxMDEwYWFhYWExMDEwX3Q7CitpbnQgICAgIGF2cl9leGVjdXRlX0RFQ18xMDAxMDEwYWFh YWExMDEwKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4LCBhdnJfb3Bjb2RlX0RF Q18xMDAxMDEwYWFhYWExMDEwX3QgY29uc3QgKmluc3QpOworCit0eXBlZGVmIHVuaW9uIGF2cl9v cGNvZGVfREVTXzEwMDEwMTAwYWFhYTEwMTFfdSB7CisgICAgdWludDE2X3QgICAgb3Bjb2RlOwor ICAgIHN0cnVjdCB7CisgICAgICAgIHVpbnQxNl90OjQ7IC8qIDEwMTEgKi8KKyAgICAgICAgdWlu dDE2X3QgICAgSW1tOjQ7CisgICAgICAgIHVpbnQxNl90Ojg7IC8qIDEwMDEwMTAwICovCisgICAg fTsKK30gYXZyX29wY29kZV9ERVNfMTAwMTAxMDBhYWFhMTAxMV90OworaW50ICAgICBhdnJfZXhl Y3V0ZV9ERVNfMTAwMTAxMDBhYWFhMTAxMShDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQg KmN0eCwgYXZyX29wY29kZV9ERVNfMTAwMTAxMDBhYWFhMTAxMV90IGNvbnN0ICppbnN0KTsKKwor dHlwZWRlZiB1bmlvbiBhdnJfb3Bjb2RlX0pNUF8xMDAxMDEwYWFhYWExMTBiYmJiYmJiYmJiYmJi YmJiYl91IHsKKyAgICB1aW50MzJfdCAgICBvcGNvZGU7CisgICAgc3RydWN0IHsKKyAgICAgICAg dWludDMyX3QgICAgbEltbToxNzsKKyAgICAgICAgdWludDMyX3Q6MzsgLyogMTEwICovCisgICAg ICAgIHVpbnQzMl90ICAgIGhJbW06NTsKKyAgICAgICAgdWludDMyX3Q6NzsgLyogMTAwMTAxMCAq LworICAgIH07Cit9IGF2cl9vcGNvZGVfSk1QXzEwMDEwMTBhYWFhYTExMGJiYmJiYmJiYmJiYmJi YmJiX3Q7CitpbnQgICAgIGF2cl9leGVjdXRlX0pNUF8xMDAxMDEwYWFhYWExMTBiYmJiYmJiYmJi YmJiYmJiYihDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwgYXZyX29wY29kZV9K TVBfMTAwMTAxMGFhYWFhMTEwYmJiYmJiYmJiYmJiYmJiYmJfdCBjb25zdCAqaW5zdCk7CisKK3R5 cGVkZWYgdW5pb24gYXZyX29wY29kZV9DQUxMXzEwMDEwMTBhYWFhYTExMWJiYmJiYmJiYmJiYmJi YmJiX3UgeworICAgIHVpbnQzMl90ICAgIG9wY29kZTsKKyAgICBzdHJ1Y3QgeworICAgICAgICB1 aW50MzJfdCAgICBsSW1tOjE3OworICAgICAgICB1aW50MzJfdDozOyAvKiAxMTEgKi8KKyAgICAg ICAgdWludDMyX3QgICAgaEltbTo1OworICAgICAgICB1aW50MzJfdDo3OyAvKiAxMDAxMDEwICov CisgICAgfTsKK30gYXZyX29wY29kZV9DQUxMXzEwMDEwMTBhYWFhYTExMWJiYmJiYmJiYmJiYmJi YmJiX3Q7CitpbnQgICAgIGF2cl9leGVjdXRlX0NBTExfMTAwMTAxMGFhYWFhMTExYmJiYmJiYmJi YmJiYmJiYmIoQ1BVQVZSU3RhdGUgKmVudiwgRGlzYXNDb250ZXh0ICpjdHgsIGF2cl9vcGNvZGVf Q0FMTF8xMDAxMDEwYWFhYWExMTFiYmJiYmJiYmJiYmJiYmJiYl90IGNvbnN0ICppbnN0KTsKKwor dHlwZWRlZiB1bmlvbiBhdnJfb3Bjb2RlX0FESVdfMTAwMTAxMTBhYWJiY2NjY191IHsKKyAgICB1 aW50MTZfdCAgICBvcGNvZGU7CisgICAgc3RydWN0IHsKKyAgICAgICAgdWludDE2X3QgICAgbElt bTo0OworICAgICAgICB1aW50MTZfdCAgICBSZDoyOworICAgICAgICB1aW50MTZfdCAgICBoSW1t OjI7CisgICAgICAgIHVpbnQxNl90Ojg7IC8qIDEwMDEwMTEwICovCisgICAgfTsKK30gYXZyX29w Y29kZV9BRElXXzEwMDEwMTEwYWFiYmNjY2NfdDsKK2ludCAgICAgYXZyX2V4ZWN1dGVfQURJV18x MDAxMDExMGFhYmJjY2NjKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4LCBhdnJf b3Bjb2RlX0FESVdfMTAwMTAxMTBhYWJiY2NjY190IGNvbnN0ICppbnN0KTsKKwordHlwZWRlZiB1 bmlvbiBhdnJfb3Bjb2RlX1NCSVdfMTAwMTAxMTFhYWJiY2NjY191IHsKKyAgICB1aW50MTZfdCAg ICBvcGNvZGU7CisgICAgc3RydWN0IHsKKyAgICAgICAgdWludDE2X3QgICAgbEltbTo0OworICAg ICAgICB1aW50MTZfdCAgICBSZDoyOworICAgICAgICB1aW50MTZfdCAgICBoSW1tOjI7CisgICAg ICAgIHVpbnQxNl90Ojg7IC8qIDEwMDEwMTExICovCisgICAgfTsKK30gYXZyX29wY29kZV9TQklX XzEwMDEwMTExYWFiYmNjY2NfdDsKK2ludCAgICAgYXZyX2V4ZWN1dGVfU0JJV18xMDAxMDExMWFh YmJjY2NjKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4LCBhdnJfb3Bjb2RlX1NC SVdfMTAwMTAxMTFhYWJiY2NjY190IGNvbnN0ICppbnN0KTsKKwordHlwZWRlZiB1bmlvbiBhdnJf b3Bjb2RlX0NCSV8xMDAxMTAwMGFhYWFhYmJiX3UgeworICAgIHVpbnQxNl90ICAgIG9wY29kZTsK KyAgICBzdHJ1Y3QgeworICAgICAgICB1aW50MTZfdCAgICBCaXQ6MzsKKyAgICAgICAgdWludDE2 X3QgICAgSW1tOjU7CisgICAgICAgIHVpbnQxNl90Ojg7IC8qIDEwMDExMDAwICovCisgICAgfTsK K30gYXZyX29wY29kZV9DQklfMTAwMTEwMDBhYWFhYWJiYl90OworaW50ICAgICBhdnJfZXhlY3V0 ZV9DQklfMTAwMTEwMDBhYWFhYWJiYihDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0 eCwgYXZyX29wY29kZV9DQklfMTAwMTEwMDBhYWFhYWJiYl90IGNvbnN0ICppbnN0KTsKKwordHlw ZWRlZiB1bmlvbiBhdnJfb3Bjb2RlX1NCSUNfMTAwMTEwMDFhYWFhYWJiYl91IHsKKyAgICB1aW50 MTZfdCAgICBvcGNvZGU7CisgICAgc3RydWN0IHsKKyAgICAgICAgdWludDE2X3QgICAgQml0OjM7 CisgICAgICAgIHVpbnQxNl90ICAgIEltbTo1OworICAgICAgICB1aW50MTZfdDo4OyAvKiAxMDAx MTAwMSAqLworICAgIH07Cit9IGF2cl9vcGNvZGVfU0JJQ18xMDAxMTAwMWFhYWFhYmJiX3Q7Citp bnQgICAgIGF2cl9leGVjdXRlX1NCSUNfMTAwMTEwMDFhYWFhYWJiYihDUFVBVlJTdGF0ZSAqZW52 LCBEaXNhc0NvbnRleHQgKmN0eCwgYXZyX29wY29kZV9TQklDXzEwMDExMDAxYWFhYWFiYmJfdCBj b25zdCAqaW5zdCk7CisKK3R5cGVkZWYgdW5pb24gYXZyX29wY29kZV9TQklfMTAwMTEwMTBhYWFh YWJiYl91IHsKKyAgICB1aW50MTZfdCAgICBvcGNvZGU7CisgICAgc3RydWN0IHsKKyAgICAgICAg dWludDE2X3QgICAgQml0OjM7CisgICAgICAgIHVpbnQxNl90ICAgIEltbTo1OworICAgICAgICB1 aW50MTZfdDo4OyAvKiAxMDAxMTAxMCAqLworICAgIH07Cit9IGF2cl9vcGNvZGVfU0JJXzEwMDEx MDEwYWFhYWFiYmJfdDsKK2ludCAgICAgYXZyX2V4ZWN1dGVfU0JJXzEwMDExMDEwYWFhYWFiYmIo Q1BVQVZSU3RhdGUgKmVudiwgRGlzYXNDb250ZXh0ICpjdHgsIGF2cl9vcGNvZGVfU0JJXzEwMDEx MDEwYWFhYWFiYmJfdCBjb25zdCAqaW5zdCk7CisKK3R5cGVkZWYgdW5pb24gYXZyX29wY29kZV9T QklTXzEwMDExMDExYWFhYWFiYmJfdSB7CisgICAgdWludDE2X3QgICAgb3Bjb2RlOworICAgIHN0 cnVjdCB7CisgICAgICAgIHVpbnQxNl90ICAgIEJpdDozOworICAgICAgICB1aW50MTZfdCAgICBJ bW06NTsKKyAgICAgICAgdWludDE2X3Q6ODsgLyogMTAwMTEwMTEgKi8KKyAgICB9OworfSBhdnJf b3Bjb2RlX1NCSVNfMTAwMTEwMTFhYWFhYWJiYl90OworaW50ICAgICBhdnJfZXhlY3V0ZV9TQklT XzEwMDExMDExYWFhYWFiYmIoQ1BVQVZSU3RhdGUgKmVudiwgRGlzYXNDb250ZXh0ICpjdHgsIGF2 cl9vcGNvZGVfU0JJU18xMDAxMTAxMWFhYWFhYmJiX3QgY29uc3QgKmluc3QpOworCit0eXBlZGVm IHVuaW9uIGF2cl9vcGNvZGVfTVVMXzEwMDExMWFiYmJiYmNjY2NfdSB7CisgICAgdWludDE2X3Qg ICAgb3Bjb2RlOworICAgIHN0cnVjdCB7CisgICAgICAgIHVpbnQxNl90ICAgIGxScjo0OworICAg ICAgICB1aW50MTZfdCAgICBSZDo1OworICAgICAgICB1aW50MTZfdCAgICBoUnI6MTsKKyAgICAg ICAgdWludDE2X3Q6NjsgLyogMTAwMTExICovCisgICAgfTsKK30gYXZyX29wY29kZV9NVUxfMTAw MTExYWJiYmJiY2NjY190OworaW50ICAgICBhdnJfZXhlY3V0ZV9NVUxfMTAwMTExYWJiYmJiY2Nj YyhDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwgYXZyX29wY29kZV9NVUxfMTAw MTExYWJiYmJiY2NjY190IGNvbnN0ICppbnN0KTsKKwordHlwZWRlZiB1bmlvbiBhdnJfb3Bjb2Rl X0lOXzEwMTEwYWFiYmJiYmNjY2NfdSB7CisgICAgdWludDE2X3QgICAgb3Bjb2RlOworICAgIHN0 cnVjdCB7CisgICAgICAgIHVpbnQxNl90ICAgIGxJbW06NDsKKyAgICAgICAgdWludDE2X3QgICAg UmQ6NTsKKyAgICAgICAgdWludDE2X3QgICAgaEltbToyOworICAgICAgICB1aW50MTZfdDo1OyAv KiAxMDExMCAqLworICAgIH07Cit9IGF2cl9vcGNvZGVfSU5fMTAxMTBhYWJiYmJiY2NjY190Owor aW50ICAgICBhdnJfZXhlY3V0ZV9JTl8xMDExMGFhYmJiYmJjY2NjKENQVUFWUlN0YXRlICplbnYs IERpc2FzQ29udGV4dCAqY3R4LCBhdnJfb3Bjb2RlX0lOXzEwMTEwYWFiYmJiYmNjY2NfdCBjb25z dCAqaW5zdCk7CisKK3R5cGVkZWYgdW5pb24gYXZyX29wY29kZV9PVVRfMTAxMTFhYWJiYmJiY2Nj Y191IHsKKyAgICB1aW50MTZfdCAgICBvcGNvZGU7CisgICAgc3RydWN0IHsKKyAgICAgICAgdWlu dDE2X3QgICAgbEltbTo0OworICAgICAgICB1aW50MTZfdCAgICBSZDo1OworICAgICAgICB1aW50 MTZfdCAgICBoSW1tOjI7CisgICAgICAgIHVpbnQxNl90OjU7IC8qIDEwMTExICovCisgICAgfTsK K30gYXZyX29wY29kZV9PVVRfMTAxMTFhYWJiYmJiY2NjY190OworaW50ICAgICBhdnJfZXhlY3V0 ZV9PVVRfMTAxMTFhYWJiYmJiY2NjYyhDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0 eCwgYXZyX29wY29kZV9PVVRfMTAxMTFhYWJiYmJiY2NjY190IGNvbnN0ICppbnN0KTsKKwordHlw ZWRlZiB1bmlvbiBhdnJfb3Bjb2RlX1JKTVBfMTEwMGFhYWFhYWFhYWFhYV91IHsKKyAgICB1aW50 MTZfdCAgICBvcGNvZGU7CisgICAgc3RydWN0IHsKKyAgICAgICAgdWludDE2X3QgICAgSW1tOjEy OworICAgICAgICB1aW50MTZfdDo0OyAvKiAxMTAwICovCisgICAgfTsKK30gYXZyX29wY29kZV9S Sk1QXzExMDBhYWFhYWFhYWFhYWFfdDsKK2ludCAgICAgYXZyX2V4ZWN1dGVfUkpNUF8xMTAwYWFh YWFhYWFhYWFhKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4LCBhdnJfb3Bjb2Rl X1JKTVBfMTEwMGFhYWFhYWFhYWFhYV90IGNvbnN0ICppbnN0KTsKKwordHlwZWRlZiB1bmlvbiBh dnJfb3Bjb2RlX0xESV8xMTEwYWFhYWJiYmJjY2NjX3UgeworICAgIHVpbnQxNl90ICAgIG9wY29k ZTsKKyAgICBzdHJ1Y3QgeyB1aW50MTZfdCAgICBsSW1tOjQ7CisgICAgICAgIHVpbnQxNl90ICAg IFJkOjQ7CisgICAgICAgIHVpbnQxNl90ICAgIGhJbW06NDsKKyAgICAgICAgdWludDE2X3Q6NDsg LyogMTExMCAqLworICAgIH07Cit9IGF2cl9vcGNvZGVfTERJXzExMTBhYWFhYmJiYmNjY2NfdDsK K2ludCAgICAgYXZyX2V4ZWN1dGVfTERJXzExMTBhYWFhYmJiYmNjY2MoQ1BVQVZSU3RhdGUgKmVu diwgRGlzYXNDb250ZXh0ICpjdHgsIGF2cl9vcGNvZGVfTERJXzExMTBhYWFhYmJiYmNjY2NfdCBj b25zdCAqaW5zdCk7CisKK3R5cGVkZWYgdW5pb24gYXZyX29wY29kZV9SQ0FMTF8xMTAxYWFhYWFh YWFhYWFhX3UgeworICAgIHVpbnQxNl90ICAgIG9wY29kZTsKKyAgICBzdHJ1Y3QgeworICAgICAg ICB1aW50MTZfdCAgICBJbW06MTI7CisgICAgICAgIHVpbnQxNl90OjQ7IC8qIDExMDEgKi8KKyAg ICB9OworfSBhdnJfb3Bjb2RlX1JDQUxMXzExMDFhYWFhYWFhYWFhYWFfdDsKK2ludCAgICAgYXZy X2V4ZWN1dGVfUkNBTExfMTEwMWFhYWFhYWFhYWFhYShDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0Nv bnRleHQgKmN0eCwgYXZyX29wY29kZV9SQ0FMTF8xMTAxYWFhYWFhYWFhYWFhX3QgY29uc3QgKmlu c3QpOworCit0eXBlZGVmIHVuaW9uIGF2cl9vcGNvZGVfQlJCU18xMTExMDBhYWFhYWFhYmJiX3Ug eworICAgIHVpbnQxNl90ICAgIG9wY29kZTsKKyAgICBzdHJ1Y3QgeworICAgICAgICB1aW50MTZf dCAgICBCaXQ6MzsKKyAgICAgICAgdWludDE2X3QgICAgSW1tOjc7CisgICAgICAgIHVpbnQxNl90 OjY7IC8qIDExMTEwMCAqLworICAgIH07Cit9IGF2cl9vcGNvZGVfQlJCU18xMTExMDBhYWFhYWFh YmJiX3Q7CitpbnQgICAgIGF2cl9leGVjdXRlX0JSQlNfMTExMTAwYWFhYWFhYWJiYihDUFVBVlJT dGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwgYXZyX29wY29kZV9CUkJTXzExMTEwMGFhYWFh YWFiYmJfdCBjb25zdCAqaW5zdCk7CisKK3R5cGVkZWYgdW5pb24gYXZyX29wY29kZV9CUkJDXzEx MTEwMWFhYWFhYWFiYmJfdSB7CisgICAgdWludDE2X3QgICAgb3Bjb2RlOworICAgIHN0cnVjdCB7 CisgICAgICAgIHVpbnQxNl90ICAgIEJpdDozOworICAgICAgICB1aW50MTZfdCAgICBJbW06NzsK KyAgICAgICAgdWludDE2X3Q6NjsgLyogMTExMTAxICovCisgICAgfTsKK30gYXZyX29wY29kZV9C UkJDXzExMTEwMWFhYWFhYWFiYmJfdDsKK2ludCAgICAgYXZyX2V4ZWN1dGVfQlJCQ18xMTExMDFh YWFhYWFhYmJiKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4LCBhdnJfb3Bjb2Rl X0JSQkNfMTExMTAxYWFhYWFhYWJiYl90IGNvbnN0ICppbnN0KTsKKwordHlwZWRlZiB1bmlvbiBh dnJfb3Bjb2RlX0JMRF8xMTExMTAwYWFhYWEwYmJiX3UgeworICAgIHVpbnQxNl90ICAgIG9wY29k ZTsKKyAgICBzdHJ1Y3QgeworICAgICAgICB1aW50MTZfdCAgICBCaXQ6MzsKKyAgICAgICAgdWlu dDE2X3Q6MTsgLyogMCAqLworICAgICAgICB1aW50MTZfdCAgICBSZDo1OworICAgICAgICB1aW50 MTZfdDo3OyAvKiAxMTExMTAwICovCisgICAgfTsKK30gYXZyX29wY29kZV9CTERfMTExMTEwMGFh YWFhMGJiYl90OworaW50ICAgICBhdnJfZXhlY3V0ZV9CTERfMTExMTEwMGFhYWFhMGJiYihDUFVB VlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwgYXZyX29wY29kZV9CTERfMTExMTEwMGFh YWFhMGJiYl90IGNvbnN0ICppbnN0KTsKKwordHlwZWRlZiB1bmlvbiBhdnJfb3Bjb2RlX0JTVF8x MTExMTAxYWFhYWEwYmJiX3UgeworICAgIHVpbnQxNl90ICAgIG9wY29kZTsKKyAgICBzdHJ1Y3Qg eworICAgICAgICB1aW50MTZfdCAgICBCaXQ6MzsKKyAgICAgICAgdWludDE2X3Q6MTsgLyogMCAq LworICAgICAgICB1aW50MTZfdCAgICBSZDo1OworICAgICAgICB1aW50MTZfdDo3OyAvKiAxMTEx MTAxICovCisgICAgfTsKK30gYXZyX29wY29kZV9CU1RfMTExMTEwMWFhYWFhMGJiYl90OworaW50 ICAgICBhdnJfZXhlY3V0ZV9CU1RfMTExMTEwMWFhYWFhMGJiYihDUFVBVlJTdGF0ZSAqZW52LCBE aXNhc0NvbnRleHQgKmN0eCwgYXZyX29wY29kZV9CU1RfMTExMTEwMWFhYWFhMGJiYl90IGNvbnN0 ICppbnN0KTsKKwordHlwZWRlZiB1bmlvbiBhdnJfb3Bjb2RlX1NCUkNfMTExMTExMGFhYWFhMGJi Yl91IHsKKyAgICB1aW50MTZfdCAgICBvcGNvZGU7CisgICAgc3RydWN0IHsKKyAgICAgICAgdWlu dDE2X3QgICAgQml0OjM7CisgICAgICAgIHVpbnQxNl90OjE7IC8qIDAgKi8KKyAgICAgICAgdWlu dDE2X3QgICAgUnI6NTsKKyAgICAgICAgdWludDE2X3Q6NzsgLyogMTExMTExMCAqLworICAgIH07 Cit9IGF2cl9vcGNvZGVfU0JSQ18xMTExMTEwYWFhYWEwYmJiX3Q7CitpbnQgICAgIGF2cl9leGVj dXRlX1NCUkNfMTExMTExMGFhYWFhMGJiYihDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQg KmN0eCwgYXZyX29wY29kZV9TQlJDXzExMTExMTBhYWFhYTBiYmJfdCBjb25zdCAqaW5zdCk7CisK K3R5cGVkZWYgdW5pb24gYXZyX29wY29kZV9TQlJTXzExMTExMTFhYWFhYTBiYmJfdSB7CisgICAg dWludDE2X3QgICAgb3Bjb2RlOworICAgIHN0cnVjdCB7CisgICAgICAgIHVpbnQxNl90ICAgIEJp dDozOworICAgICAgICB1aW50MTZfdDoxOyAvKiAwICovCisgICAgICAgIHVpbnQxNl90ICAgIFJy OjU7CisgICAgICAgIHVpbnQxNl90Ojc7IC8qIDExMTExMTEgKi8KKyAgICB9OworfSBhdnJfb3Bj b2RlX1NCUlNfMTExMTExMWFhYWFhMGJiYl90OworaW50ICAgICBhdnJfZXhlY3V0ZV9TQlJTXzEx MTExMTFhYWFhYTBiYmIoQ1BVQVZSU3RhdGUgKmVudiwgRGlzYXNDb250ZXh0ICpjdHgsIGF2cl9v cGNvZGVfU0JSU18xMTExMTExYWFhYWEwYmJiX3QgY29uc3QgKmluc3QpOworCmRpZmYgLS1naXQg YS90YXJnZXQtYXZyL2dkYnN0dWIuYyBiL3RhcmdldC1hdnIvZ2Ric3R1Yi5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5MjNmNDkKLS0tIC9kZXYvbnVsbAorKysgYi90YXJn ZXQtYXZyL2dkYnN0dWIuYwpAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIFFFTVUgQVZSIENQVQor ICoKKyAqIENvcHlyaWdodCAoYykgMjAxNiBNaWNoYWVsIFJvbG5paworICoKKyAqIFRoaXMgbGli cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlcgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3Nl ciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYg bm90LCBzZWUKKyAqIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC0yLjEuaHRtbD4K KyAqLworCisjaW5jbHVkZSAicWVtdS9vc2RlcC5oIgorI2luY2x1ZGUgInFlbXUtY29tbW9uLmgi CisjaW5jbHVkZSAiZXhlYy9nZGJzdHViLmgiCisKK2ludCAgICAgICAgICAgICAgICAgYXZyX2Nw dV9nZGJfcmVhZF9yZWdpc3RlcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BV U3RhdGUgICAgICAgICAgICpjcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu dDhfdCAgICAgICAgICAgICptZW1fYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQgICAgICAgICAgICAgICAgIG4pCit7CisgICAgQVZSQ1BVICAgICAgICAgKmNwdSA9IEFW Ul9DUFUoY3MpOworICAgIENQVUFWUlN0YXRlICAgICplbnYgPSAmY3B1LT5lbnY7CisKKyAgICAv KiAgUiAqLworICAgIGlmIChuIDwgMzIpIHsKKyAgICAgICAgcmV0dXJuIGdkYl9nZXRfcmVnOCht ZW1fYnVmLCBlbnYtPnJbbl0pOworICAgIH0KKworICAgIC8qICBTUkVHICovCisgICAgaWYgKG4g PT0gMzIpIHsKKyAgICAgICAgdWludDhfdCBzcmVnICAgID0gMDsKKworICAgICAgICBzcmVnICAg ID0gICAoZW52LT5zcmVnQyAmIDB4MDEpIDw8IDAKKyAgICAgICAgICAgICAgICB8ICAgKGVudi0+ c3JlZ1ogJiAweDAxKSA8PCAxCisgICAgICAgICAgICAgICAgfCAgIChlbnYtPnNyZWdOICYgMHgw MSkgPDwgMgorICAgICAgICAgICAgICAgIHwgICAoZW52LT5zcmVnViAmIDB4MDEpIDw8IDMKKyAg ICAgICAgICAgICAgICB8ICAgKGVudi0+c3JlZ1MgJiAweDAxKSA8PCA0CisgICAgICAgICAgICAg ICAgfCAgIChlbnYtPnNyZWdIICYgMHgwMSkgPDwgNQorICAgICAgICAgICAgICAgIHwgICAoZW52 LT5zcmVnVCAmIDB4MDEpIDw8IDYKKyAgICAgICAgICAgICAgICB8ICAgKGVudi0+c3JlZ0kgJiAw eDAxKSA8PCA3OworICAgICAgICByZXR1cm4gZ2RiX2dldF9yZWc4KG1lbV9idWYsIHNyZWcpOwor ICAgIH0KKworICAgIC8qICBTUCAqLworICAgIGlmIChuID09IDMzKSB7CisgICAgICAgIHJldHVy biAgZ2RiX2dldF9yZWcxNihtZW1fYnVmLCBlbnYtPnNwICYgMHgwMDAwZmZmZik7CisgICAgfQor CisgICAgLyogIFBDICovCisgICAgaWYgKG4gPT0gMzQpIHsKKyAgICAgICAgcmV0dXJuICBnZGJf Z2V0X3JlZzMyKG1lbV9idWYsIGVudi0+cGMgKiAyKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsK K30KKworaW50ICAgICAgICAgICAgICAgICBhdnJfY3B1X2dkYl93cml0ZV9yZWdpc3RlcigKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BVU3RhdGUgICAgICAgICAgICpjcywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAgICAgICAgICAgICptZW1fYnVm LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgIG4p Cit7CisgICAgQVZSQ1BVICAgICAgICAgKmNwdSA9IEFWUl9DUFUoY3MpOworICAgIENQVUFWUlN0 YXRlICAgICplbnYgPSAmY3B1LT5lbnY7CisgICAgdWludDE2X3QgICAgICAgIHRtcCA9IGxkbF9w KG1lbV9idWYpOworCisgICAgLyogIFIgKi8KKyAgICBpZiAobiA8IDMyKSB7CisgICAgICAgIGVu di0+cltuXSAgID0gdG1wOworICAgIH0KKworICAgIC8qICBTUkVHICovCisgICAgaWYgKG4gPT0g MzIpIHsKKyAgICAgICAgZW52LT5zcmVnQyAgPSAodG1wID4+IDApICYgMHgwMTsKKyAgICAgICAg ZW52LT5zcmVnWiAgPSAodG1wID4+IDEpICYgMHgwMTsKKyAgICAgICAgZW52LT5zcmVnTiAgPSAo dG1wID4+IDIpICYgMHgwMTsKKyAgICAgICAgZW52LT5zcmVnViAgPSAodG1wID4+IDMpICYgMHgw MTsKKyAgICAgICAgZW52LT5zcmVnUyAgPSAodG1wID4+IDQpICYgMHgwMTsKKyAgICAgICAgZW52 LT5zcmVnSCAgPSAodG1wID4+IDUpICYgMHgwMTsKKyAgICAgICAgZW52LT5zcmVnVCAgPSAodG1w ID4+IDYpICYgMHgwMTsKKyAgICAgICAgZW52LT5zcmVnSSAgPSAodG1wID4+IDcpICYgMHgwMTsK KyAgICB9CisKKyAgICAvKiAgU1AgKi8KKyAgICBpZiAobiA9PSAzMykgeworICAgICAgICBlbnYt PnNwID0gdG1wOworICAgICAgICByZXR1cm4gIDI7CisgICAgfQorCisgICAgLyogIFBDICovCisg ICAgaWYgKG4gPT0gMzQpIHsKKyAgICAgICAgZW52LT5wYyA9IHRtcCAvIDI7CisgICAgICAgIHJl dHVybiAgNDsKKyAgICB9CisKKyAgICByZXR1cm4gMTsKK30KZGlmZiAtLWdpdCBhL3RhcmdldC1h dnIvaGVscGVyLmMgYi90YXJnZXQtYXZyL2hlbHBlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjAzZDk2OGYKLS0tIC9kZXYvbnVsbAorKysgYi90YXJnZXQtYXZyL2hlbHBl ci5jCkBAIC0wLDAgKzEsMjgwIEBACisvKgorICogUUVNVSBBVlIgQ1BVCisgKgorICogQ29weXJp Z2h0IChjKSAyMDE2IE1pY2hhZWwgUm9sbmlrCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg KiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVz c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi bGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHNlZQorICog PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9sZ3BsLTIuMS5odG1sPgorICovCisKKyNpbmNs dWRlICJxZW11L29zZGVwLmgiCisKKyNpbmNsdWRlICJjcHUuaCIKKyNpbmNsdWRlICJody9pcnEu aCIKKyNpbmNsdWRlICJpbmNsdWRlL2h3L3N5c2J1cy5oIgorI2luY2x1ZGUgImluY2x1ZGUvc3lz ZW11L3N5c2VtdS5oIgorI2luY2x1ZGUgImV4ZWMvZXhlYy1hbGwuaCIKKyNpbmNsdWRlICJleGVj L2NwdV9sZHN0LmgiCisjaW5jbHVkZSAicWVtdS9ob3N0LXV0aWxzLmgiCisjaW5jbHVkZSAiZXhl Yy9oZWxwZXItcHJvdG8uaCIKKworYm9vbCAgICAgICAgICAgICAgICBhdnJfY3B1X2V4ZWNfaW50 ZXJydXB0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUFVTdGF0ZSAgICAgICAg ICAgICAgICpjcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAg ICAgICAgICAgICAgaW50ZXJydXB0X3JlcXVlc3QpCit7CisgICAgQ1BVQ2xhc3MgICAgKmNjICA9 IENQVV9HRVRfQ0xBU1MoY3MpOworICAgIEFWUkNQVSAgICAgICpjcHUgPSBBVlJfQ1BVKGNzKTsK KyAgICBDUFVBVlJTdGF0ZSAqZW52ID0gJmNwdS0+ZW52OworCisgICAgYm9vbCAgICByZXQgPSBm YWxzZTsKKworICAgIGlmIChpbnRlcnJ1cHRfcmVxdWVzdCAmIENQVV9JTlRFUlJVUFRfUkVTRVQp IHsKKyAgICAgICAgaWYgKGNwdV9pbnRlcnJ1cHRzX2VuYWJsZWQoZW52KSkgeworICAgICAgICAg ICAgY3MtPmV4Y2VwdGlvbl9pbmRleCA9IEVYQ1BfUkVTRVQ7CisgICAgICAgICAgICBjYy0+ZG9f aW50ZXJydXB0KGNzKTsKKworICAgICAgICAgICAgY3MtPmludGVycnVwdF9yZXF1ZXN0ICAgJj0g fkNQVV9JTlRFUlJVUFRfUkVTRVQ7CisKKyAgICAgICAgICAgIHJldCA9IHRydWU7CisgICAgICAg IH0KKyAgICB9CisgICAgaWYgKGludGVycnVwdF9yZXF1ZXN0ICYgQ1BVX0lOVEVSUlVQVF9IQVJE KSB7CisgICAgICAgIGlmIChjcHVfaW50ZXJydXB0c19lbmFibGVkKGVudikgJiYgZW52LT5pbnRz cmMgIT0gMCkgeworICAgICAgICAgICAgaW50ICAgICBpbmRleCAgID0gX19idWlsdGluX2Zmcyhl bnYtPmludHNyYykgLSAxOworICAgICAgICAgICAgY3MtPmV4Y2VwdGlvbl9pbmRleCA9IEVYQ1Bf SU5UKGluZGV4KTsKKyAgICAgICAgICAgIGNjLT5kb19pbnRlcnJ1cHQoY3MpOworCisgICAgICAg ICAgICBlbnYtPmludHNyYyAgICAgICAgICAgICAmPSBlbnYtPmludHNyYyAtIDE7IC8qIGNsZWFy IHRoZSBpbnRlcnJ1cHQgKi8KKyAgICAgICAgICAgIGNzLT5pbnRlcnJ1cHRfcmVxdWVzdCAgICY9 IH5DUFVfSU5URVJSVVBUX0hBUkQ7CisKKyAgICAgICAgICAgIHJldCA9IHRydWU7CisgICAgICAg IH0KKyAgICB9CisgICAgcmV0dXJuIHJldDsKK30KKwordm9pZCAgICAgICAgICAgICAgICBhdnJf Y3B1X2RvX2ludGVycnVwdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BVU3Rh dGUgICAgICAgICAgICpjcykKK3sKKyAgICBBVlJDUFUgICAgICAgICAqY3B1ID0gQVZSX0NQVShj cyk7CisgICAgQ1BVQVZSU3RhdGUgICAgKmVudiA9ICZjcHUtPmVudjsKKworICAgIHVpbnQzMl90 ICAgIHJldCAgICAgPSBlbnYtPnBjOworICAgIGludCAgICAgICAgIHZlY3RvcjsKKyAgICBpbnQg ICAgICAgICBzaXplICAgID0gYXZyX2ZlYXR1cmUoZW52LCBBVlJfRkVBVFVSRV9KTVBfQ0FMTCkg PyAyIDogMTsKKyAgICBpbnQgICAgICAgICBiYXNlICAgID0gMDsgICAgLyogVE9ETzogd2hlcmUg dG8gZ2V0IGl0ICovCisKKyAgICBpZiAoY3MtPmV4Y2VwdGlvbl9pbmRleCA9PSBFWENQX1JFU0VU KSB7CisgICAgICAgIHZlY3RvciAgPSAwOworICAgIH0gZWxzZSBpZiAoZW52LT5pbnRzcmMgIT0g MCkgeworICAgICAgICB2ZWN0b3IgID0gX19idWlsdGluX2ZmcyhlbnYtPmludHNyYyk7CisgICAg fQorCisgICAgaWYgKGF2cl9mZWF0dXJlKGVudiwgQVZSX0ZFQVRVUkVfM19CWVRFX1BDKSkgewor ICAgICAgICBzdGJfcGh5cyhjcy0+YXMsIGVudi0+c3AtLSwgKHJldCAmIDB4MDAwMGZmKSk7Cisg ICAgICAgIHN0Yl9waHlzKGNzLT5hcywgZW52LT5zcC0tLCAocmV0ICYgMHgwMGZmMDApID4+ICA4 KTsKKyAgICAgICAgc3RiX3BoeXMoY3MtPmFzLCBlbnYtPnNwLS0sIChyZXQgJiAweGZmMDAwMCkg Pj4gMTYpOworCisgICAgICAgIGVudi0+cGMgPSBiYXNlICsgdmVjdG9yICogc2l6ZTsKKyAgICB9 IGVsc2UgaWYgKGF2cl9mZWF0dXJlKGVudiwgQVZSX0ZFQVRVUkVfMl9CWVRFX1BDKSkgeworICAg ICAgICBzdGJfcGh5cyhjcy0+YXMsIGVudi0+c3AtLSwgKHJldCAmIDB4MDAwMGZmKSk7CisgICAg ICAgIHN0Yl9waHlzKGNzLT5hcywgZW52LT5zcC0tLCAocmV0ICYgMHgwMGZmMDApID4+ICA4KTsK KworICAgICAgICBlbnYtPnBjID0gYmFzZSArIHZlY3RvciAqIHNpemU7CisgICAgfSBlbHNlIHsK KyAgICAgICAgc3RiX3BoeXMoY3MtPmFzLCBlbnYtPnNwLS0sIChyZXQgJiAweDAwMDBmZikpOwor CisgICAgICAgIGVudi0+cGMgPSBiYXNlICsgdmVjdG9yICogc2l6ZTsKKyAgICB9CisKKyAgICBl bnYtPnNyZWdJICA9IDA7ICAgIC8qICBjbGVhciBHbG9iYWwgSW50ZXJydXB0IEZsYWcgKi8KKwor ICAgIGNzLT5leGNlcHRpb25faW5kZXggPSAtMTsKK30KKworaW50ICAgICAgICAgICAgICAgICBh dnJfY3B1X21lbW9yeV9yd19kZWJ1ZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Q1BVU3RhdGUgICAgICAgICAgICpjcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dmFkZHIgICAgICAgICAgICAgICBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1aW50OF90ICAgICAgICAgICAgKmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW50ICAgICAgICAgICAgICAgICBsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGJvb2wgICAgICAgICAgICAgICAgaXNfd3JpdGUpCit7CisgICAgcmV0dXJuICBjcHVfbWVt b3J5X3J3X2RlYnVnKGNzLCBhZGRyLCBidWYsIGxlbiwgaXNfd3JpdGUpOworfQorCitod2FkZHIg ICAgICAgICAgICAgIGF2cl9jcHVfZ2V0X3BoeXNfcGFnZV9kZWJ1ZygKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgQ1BVU3RhdGUgICAgICAgICAgICpjcywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdmFkZHIgICAgICAgICAgICAgICBhZGRyKQoreworICAgIHJldHVy biAgYWRkcjsgICAvKiAgSSBhc3N1bWUgMToxIGFkZHJlc3MgY29ycmVzcG9uZGFuY2UgKi8KK30K KworaW50ICAgICAgICAgICAgICAgICBhdnJfY3B1X2hhbmRsZV9tbXVfZmF1bHQoCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIENQVVN0YXRlICAgICAgICAgICAqY3MsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHZhZGRyICAgICAgICAgICAgICAgYWRkcmVzcywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICBydywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICBtbXVfaWR4 KQoreworICAgIGNzLT5leGNlcHRpb25faW5kZXggPSBFWENQX0RFQlVHOworICAgIGNwdV9kdW1w X3N0YXRlKGNzLCBzdGRlcnIsIGZwcmludGYsIDApOworICAgIHJldHVybiAxOworfQorCit2b2lk ICAgICAgICAgICAgICAgIHRsYl9maWxsKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBDUFVTdGF0ZSAgICAgICAgICAgKmNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0YXJnZXRfdWxvbmcgICAgICAgIHZhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQgICAgICAgICAgICAgICAgIGlzX3dyaXRlLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgIG1tdV9pZHgsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVpbnRwdHJfdCAgICAgICAgICAgcmV0YWRkcikKK3sKKyAgICB0YXJn ZXRfdWxvbmcgICAgcGFnZV9zaXplICAgPSBUQVJHRVRfUEFHRV9TSVpFOworICAgIGludCAgICAg ICAgICAgICBwcm90ICAgICAgICA9IDA7CisgICAgTWVtVHhBdHRycyAgICAgIGF0dHJzICAgICAg ID0ge307CisgICAgdWludDMyX3QgICAgICAgIHBhZGRyOworCisgICAgdmFkZHIgICAmPSBUQVJH RVRfUEFHRV9NQVNLOworCisgICAgaWYgKG1tdV9pZHggPT0gQ09ERV9JTkRFWCkgeworICAgICAg ICBwYWRkciAgID0gUEhZU19DT0RFX0JBU0UgKyB2YWRkcjsKKyAgICAgICAgcHJvdCAgICA9IFBB R0VfUkVBRCB8IFBBR0VfRVhFQzsKKyAgICB9IGVsc2UgeworICAgICAgICBwYWRkciAgID0gUEhZ U19EQVRBX0JBU0UgKyB2YWRkcjsKKyAgICAgICAgcHJvdCAgICA9IFBBR0VfUkVBRCB8IFBBR0Vf V1JJVEU7CisgICAgfQorCisgICAgdGxiX3NldF9wYWdlX3dpdGhfYXR0cnMoY3MsIHZhZGRyLCBw YWRkciwgYXR0cnMsIHByb3QsIG1tdV9pZHgsIHBhZ2Vfc2l6ZSk7CisKKy8qICAgIHJldCA9IGF2 cl9jcHVfaGFuZGxlX21tdV9mYXVsdChjcywgYWRkciwgaXNfd3JpdGUsIG1tdV9pZHgpOyAqLwor LyogICAgaWYgKHVubGlrZWx5KHJldCkpICovCisvKiAgICB7ICovCisvKiAgICAgICAgaWYgKHJl dGFkZHIpICovCisvKiAgICAgICAgeyAqLworLyogICAgICAgICAgICBjcHVfcmVzdG9yZV9zdGF0 ZShjcywgcmV0YWRkcik7ICovCisvKiAgICAgICAgfSAqLworLyogICAgfSAqLworLyogICAgY3B1 X2xvb3BfZXhpdChjcyk7ICovCit9Cit2b2lkICAgICAgICAgICAgICAgIGhlbHBlcl9zbGVlcCgK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BVQVZSU3RhdGUgICAgICAgICplbnYp Cit7CisgICAgQ1BVU3RhdGUgICAqY3MgPSBDUFUoYXZyX2Vudl9nZXRfY3B1KGVudikpOworCisg ICAgY3MtPmV4Y2VwdGlvbl9pbmRleCA9IEVYQ1BfSExUOworICAgIGNwdV9sb29wX2V4aXQoY3Mp OworfQordm9pZCAgICAgICAgICAgICAgICBoZWxwZXJfdW5zdXBwb3J0ZWQoCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIENQVUFWUlN0YXRlICAgICAgICAqZW52KQoreworICAgIENQ VVN0YXRlICAgKmNzID0gQ1BVKGF2cl9lbnZfZ2V0X2NwdShlbnYpKTsKKworICAgIGNzLT5leGNl cHRpb25faW5kZXggPSBFWENQX0RFQlVHOworICAgIGNwdV9kdW1wX3N0YXRlKGNzLCBzdGRlcnIs IGZwcmludGYsIDApOworICAgIGNwdV9sb29wX2V4aXQoY3MpOworfQorCit2b2lkICAgICAgICAg ICAgICAgIGhlbHBlcl9kZWJ1ZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BV QVZSU3RhdGUgICAgICAgICplbnYpCit7CisgICAgQ1BVU3RhdGUgICAqY3MgPSBDUFUoYXZyX2Vu dl9nZXRfY3B1KGVudikpOworCisgICAgY3MtPmV4Y2VwdGlvbl9pbmRleCA9IEVYQ1BfREVCVUc7 CisgICAgY3B1X2xvb3BfZXhpdChjcyk7Cit9CisKK3ZvaWQgICAgICAgICAgICAgICAgaGVscGVy X3dkcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BVQVZSU3RhdGUgICAgICAg ICplbnYpCit7CisgICAgQ1BVU3RhdGUgICAqY3MgPSBDUFUoYXZyX2Vudl9nZXRfY3B1KGVudikp OworCisgICAgY3MtPmV4Y2VwdGlvbl9pbmRleCA9IEVYQ1BfREVCVUc7CisgICAgY3B1X2xvb3Bf ZXhpdChjcyk7Cit9CisKK3RhcmdldF91bG9uZyAgICAgICAgaGVscGVyX2luYigKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgQ1BVQVZSU3RhdGUgICAgICAgICplbnYsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICAgICAgICAgICAgcG9ydCkKK3sKKyAg ICBwcmludGYoImluOiBpb1slMDJ4XVxuIiwgcG9ydCk7CisKKyAgICBzd2l0Y2ggKHBvcnQpIHsK KyAgICAgICAgY2FzZSAgICAweDNiOiB7CisgICAgICAgICAgICByZXR1cm4gIGVudi0+cmFtcFo7 ICAgICAgICAgLyogIFJBTVBaICovCisgICAgICAgIH0KKyAgICAgICAgY2FzZSAgICAweDNkOiB7 ICAgICAgICAgICAgICAgICAvKiAgU1BMICovCisgICAgICAgICAgICByZXR1cm4gIGVudi0+c3Ag JiAweDAwZmY7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSAgICAweDNlOiB7ICAgICAgICAgICAg ICAgICAvKiAgU1BIICovCisgICAgICAgICAgICByZXR1cm4gIGVudi0+c3AgPj4gODsKKyAgICAg ICAgfQorICAgICAgICBjYXNlICAgIDB4M2Y6IHsgICAgICAgICAgICAgICAgIC8qICBTUkVHICov CisgICAgICAgICAgICB1aW50OF90IHNyZWc7CisgICAgICAgICAgICBzcmVnICAgID0gICAoZW52 LT5zcmVnQyAmIDB4MDEpIDw8IDAKKyAgICAgICAgICAgICAgICAgICAgfCAgIChlbnYtPnNyZWda ICYgMHgwMSkgPDwgMQorICAgICAgICAgICAgICAgICAgICB8ICAgKGVudi0+c3JlZ04gJiAweDAx KSA8PCAyCisgICAgICAgICAgICAgICAgICAgIHwgICAoZW52LT5zcmVnViAmIDB4MDEpIDw8IDMK KyAgICAgICAgICAgICAgICAgICAgfCAgIChlbnYtPnNyZWdTICYgMHgwMSkgPDwgNAorICAgICAg ICAgICAgICAgICAgICB8ICAgKGVudi0+c3JlZ0ggJiAweDAxKSA8PCA1CisgICAgICAgICAgICAg ICAgICAgIHwgICAoZW52LT5zcmVnVCAmIDB4MDEpIDw8IDYKKyAgICAgICAgICAgICAgICAgICAg fCAgIChlbnYtPnNyZWdJICYgMHgwMSkgPDwgNzsKKyAgICAgICAgICAgIHJldHVybiAgc3JlZzsK KyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gIDA7Cit9CisKK3ZvaWQgICAgICAgICAgICAg ICAgaGVscGVyX291dGIoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENQVUFWUlN0 YXRlICAgICAgICAqZW52LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJf dCAgICAgICAgICAgIHBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz Ml90ICAgICAgICAgICAgZGF0YSkKK3sKKyAgICBwcmludGYoIm91dDolMDJ4IC0+IGlvWyUwMnhd XG4iLCBkYXRhLCBwb3J0KTsKKworICAgIGRhdGEgICAgJj0gMHgwMDAwMDBmZjsKKworICAgIHN3 aXRjaCAocG9ydCkgeworICAgICAgICBjYXNlICAgIDB4MDQ6IHsKKyAgICAgICAgICAgIHFlbXVf aXJxICAgIGlycTsKKyAgICAgICAgICAgIENQVVN0YXRlICAgKmNwdSA9IENQVShhdnJfZW52X2dl dF9jcHUoZW52KSk7CisgICAgICAgICAgICBpcnEgICAgID0gcWRldl9nZXRfZ3Bpb19pbihERVZJ Q0UoY3B1KSwgMyk7CisgICAgICAgICAgICBxZW11X3NldF9pcnEoaXJxLCAxKTsKKyAgICAgICAg ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgICAgMHgzYjogeworICAgICAgICAg ICAgZW52LT5yYW1wWiAgPSBkYXRhICYgMHgwMTsgIC8qICBSQU1QWiAqLworICAgICAgICAgICAg YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSAgICAweDNkOiB7ICAgICAgICAgICAgICAg ICAvKiAgU1BMICovCisgICAgICAgICAgICBpZiAoYXZyX2ZlYXR1cmUoZW52LCBBVlJfRkVBVFVS RV8yX0JZVEVfU1ApKSB7CisgICAgICAgICAgICAgICAgZW52LT5zcCA9IChlbnYtPnNwICYgMHhm ZjAwKSB8IChkYXRhKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAg ICB9CisgICAgICAgIGNhc2UgICAgMHgzZTogeyAgICAgICAgICAgICAgICAgIC8qICBTUEggKi8K KyAgICAgICAgICAgIGVudi0+c3AgPSAoZW52LT5zcCAmIDB4MDBmZikgfCAoZGF0YSA8PCA4KTsK KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgICAgMHgzZjogeyAg ICAgICAgICAgICAgICAgLyogIFNSRUcgKi8KKyAgICAgICAgICAgIGVudi0+c3JlZ0MgID0gKGRh dGEgPj4gMCkgJiAweDAxOworICAgICAgICAgICAgZW52LT5zcmVnWiAgPSAoZGF0YSA+PiAxKSAm IDB4MDE7CisgICAgICAgICAgICBlbnYtPnNyZWdOICA9IChkYXRhID4+IDIpICYgMHgwMTsKKyAg ICAgICAgICAgIGVudi0+c3JlZ1YgID0gKGRhdGEgPj4gMykgJiAweDAxOworICAgICAgICAgICAg ZW52LT5zcmVnUyAgPSAoZGF0YSA+PiA0KSAmIDB4MDE7CisgICAgICAgICAgICBlbnYtPnNyZWdI ICA9IChkYXRhID4+IDUpICYgMHgwMTsKKyAgICAgICAgICAgIGVudi0+c3JlZ1QgID0gKGRhdGEg Pj4gNikgJiAweDAxOworICAgICAgICAgICAgZW52LT5zcmVnSSAgPSAoZGF0YSA+PiA3KSAmIDB4 MDE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KKwpkaWZmIC0tZ2l0 IGEvdGFyZ2V0LWF2ci9oZWxwZXIuaCBiL3RhcmdldC1hdnIvaGVscGVyLmgKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWEwOGNmZAotLS0gL2Rldi9udWxsCisrKyBiL3Rhcmdl dC1hdnIvaGVscGVyLmgKQEAgLTAsMCArMSwyNiBAQAorLyoKKyAqIFFFTVUgQVZSIENQVQorICoK KyAqIENvcHlyaWdodCAoYykgMjAxNiBNaWNoYWVsIFJvbG5paworICoKKyAqIFRoaXMgbGlicmFy eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlcgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH TlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBH ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90 LCBzZWUKKyAqIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC0yLjEuaHRtbD4KKyAq LworCitERUZfSEVMUEVSXzEod2RyLCAgICAgICAgICAgdm9pZCwgICBlbnYpCitERUZfSEVMUEVS XzEoZGVidWcsICAgICAgICAgdm9pZCwgICBlbnYpCitERUZfSEVMUEVSXzEoc2xlZXAsICAgICAg ICAgdm9pZCwgICBlbnYpCitERUZfSEVMUEVSXzEodW5zdXBwb3J0ZWQsICAgdm9pZCwgICBlbnYp CitERUZfSEVMUEVSXzMob3V0YiwgICAgICAgICAgdm9pZCwgICBlbnYsIGkzMiwgaTMyKQorREVG X0hFTFBFUl8yKGluYiwgICAgICAgICAgIHRsLCAgICAgZW52LCBpMzIpCmRpZmYgLS1naXQgYS90 YXJnZXQtYXZyL21hY2hpbmUuYyBiL3RhcmdldC1hdnIvbWFjaGluZS5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4ZDQ0ZTkKLS0tIC9kZXYvbnVsbAorKysgYi90YXJnZXQt YXZyL21hY2hpbmUuYwpAQCAtMCwwICsxLDU0IEBACisvKgorICogUUVNVSBBVlIgQ1BVCisgKgor ICogQ29weXJpZ2h0IChjKSAyMDE2IE1pY2hhZWwgUm9sbmlrCisgKgorICogVGhpcyBsaWJyYXJ5 IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO VQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdl bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3Qs IHNlZQorICogPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9sZ3BsLTIuMS5odG1sPgorICov CisKKyNpbmNsdWRlICJxZW11L29zZGVwLmgiCisjaW5jbHVkZSAiaHcvaHcuaCIKKyNpbmNsdWRl ICJjcHUuaCIKKyNpbmNsdWRlICJody9ib2FyZHMuaCIKKyNpbmNsdWRlICJtYWNoaW5lLmgiCisK K2NvbnN0IFZNU3RhdGVEZXNjcmlwdGlvbiB2bXN0YXRlX2F2cl9jcHUgPSB7CisgICAgLm5hbWUg ICAgICAgICAgICAgICA9ICJjcHUiLAorICAgIC52ZXJzaW9uX2lkICAgICAgICAgPSAxLAorICAg IC5taW5pbXVtX3ZlcnNpb25faWQgPSAxLAorICAgIC5maWVsZHMgPSAoVk1TdGF0ZUZpZWxkW10p IHsKKyAgICAgICAgVk1TVEFURV9VSU5UMzJfQVJSQVkociwgQ1BVQVZSU3RhdGUsIDMyKSwKKwor ICAgICAgICBWTVNUQVRFX1VJTlQzMihzcmVnQywgICBDUFVBVlJTdGF0ZSksCisgICAgICAgIFZN U1RBVEVfVUlOVDMyKHNyZWdaLCAgIENQVUFWUlN0YXRlKSwKKyAgICAgICAgVk1TVEFURV9VSU5U MzIoc3JlZ04sICAgQ1BVQVZSU3RhdGUpLAorICAgICAgICBWTVNUQVRFX1VJTlQzMihzcmVnViwg ICBDUFVBVlJTdGF0ZSksCisgICAgICAgIFZNU1RBVEVfVUlOVDMyKHNyZWdTLCAgIENQVUFWUlN0 YXRlKSwKKyAgICAgICAgVk1TVEFURV9VSU5UMzIoc3JlZ0gsICAgQ1BVQVZSU3RhdGUpLAorICAg ICAgICBWTVNUQVRFX1VJTlQzMihzcmVnVCwgICBDUFVBVlJTdGF0ZSksCisgICAgICAgIFZNU1RB VEVfVUlOVDMyKHNyZWdJLCAgIENQVUFWUlN0YXRlKSwKKworICAgICAgICBWTVNUQVRFX1VJTlQz MihyYW1wRCwgICBDUFVBVlJTdGF0ZSksCisgICAgICAgIFZNU1RBVEVfVUlOVDMyKHJhbXBYLCAg IENQVUFWUlN0YXRlKSwKKyAgICAgICAgVk1TVEFURV9VSU5UMzIocmFtcFksICAgQ1BVQVZSU3Rh dGUpLAorICAgICAgICBWTVNUQVRFX1VJTlQzMihyYW1wWiwgICBDUFVBVlJTdGF0ZSksCisKKyAg ICAgICAgVk1TVEFURV9VSU5UMzIoZWluZCwgICAgQ1BVQVZSU3RhdGUpLAorICAgICAgICBWTVNU QVRFX1VJTlQzMihzcCwgICAgICBDUFVBVlJTdGF0ZSksCisgICAgICAgIFZNU1RBVEVfVUlOVDMy KHBjLCAgICAgIENQVUFWUlN0YXRlKSwKKworICAgICAgICBWTVNUQVRFX0VORF9PRl9MSVNUKCkK KyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvdGFyZ2V0LWF2ci9tYWNoaW5lLmggYi90YXJnZXQtYXZy L21hY2hpbmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Y2M4ZDZiCi0t LSAvZGV2L251bGwKKysrIGIvdGFyZ2V0LWF2ci9tYWNoaW5lLmgKQEAgLTAsMCArMSwyMSBAQAor LyoKKyAqIFFFTVUgQVZSIENQVQorICoKKyAqIENvcHlyaWdodCAoYykgMjAxNiBNaWNoYWVsIFJv bG5paworICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExp Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhp cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3 aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCBzZWUKKyAqIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvbGdwbC0yLjEuaHRtbD4KKyAqLworCitleHRlcm4gY29uc3QgVk1TdGF0ZURlc2NyaXB0 aW9uIHZtc3RhdGVfYXZyX2NwdTsKZGlmZiAtLWdpdCBhL3RhcmdldC1hdnIvdHJhbnNsYXRlLmMg Yi90YXJnZXQtYXZyL3RyYW5zbGF0ZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmZhZWE5YmQKLS0tIC9kZXYvbnVsbAorKysgYi90YXJnZXQtYXZyL3RyYW5zbGF0ZS5jCkBA IC0wLDAgKzEsMzcwIEBACisvKgorICogIFFFTVUgQVZSIENQVQorICoKKyAqICBDb3B5cmlnaHQg KGMpIDIwMTYgTWljaGFlbCBSb2xuaWsKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq ICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh bCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHNl ZQorICogIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC0yLjEuaHRtbD4KKyAqLwor CisjaW5jbHVkZSAicWVtdS9vc2RlcC5oIgorCisjaW5jbHVkZSAiY3B1LmgiCisjaW5jbHVkZSAi ZXhlYy9leGVjLWFsbC5oIgorI2luY2x1ZGUgImRpc2FzL2Rpc2FzLmgiCisjaW5jbHVkZSAidGNn LW9wLmgiCisjaW5jbHVkZSAiZXhlYy9jcHVfbGRzdC5oIgorCisjaW5jbHVkZSAiZXhlYy9oZWxw ZXItcHJvdG8uaCIKKyNpbmNsdWRlICJleGVjL2hlbHBlci1nZW4uaCIKKyNpbmNsdWRlICJleGVj L2xvZy5oIgorCit1aW50MzJfdCAgICBnZXRfb3Bjb2RlICAgICAgICAgICAgICh1aW50OF90IGNv bnN0ICAgICAgKmNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCAgICAgICAgICAgIGJpdEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCAgICAgICAgICAgIGJpdFNzaXplKTsKKwordHlwZWRlZiBzdHJ1Y3QgRGlz YXNDb250ZXh0IERpc2FzQ29udGV4dDsKK3R5cGVkZWYgc3RydWN0IEluc3RJbmZvICAgICBJbnN0 SW5mbzsKKwordHlwZWRlZiBpbnQgKCpleGVjdXRlX2Z1bmN0aW9uX3QpICAoQ1BVQVZSU3RhdGUg ICAgICAgICplbnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaXNhc0Nv bnRleHQgICAgICAgKmN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp bnQ4X3QgY29uc3QgICAgICAqb3Bjb2RlKTsKK3N0cnVjdCBJbnN0SW5mbyB7CisgICAgdGFyZ2V0 X2xvbmcgICAgICAgICAgICAgICAgIGNwYzsKKyAgICB0YXJnZXRfbG9uZyAgICAgICAgICAgICAg ICAgbnBjOworICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICBvcGNvZGU7CisgICAgZXhl Y3V0ZV9mdW5jdGlvbl90ICAgICAgICAgIGV4ZWM7CisgICAgdW5zaWduZWQgICAgICAgICAgICAg ICAgICAgIGxlbmd0aDsKK307CisKKy8qVGhpcyBpcyB0aGUgc3RhdGUgYXQgdHJhbnNsYXRpb24g dGltZS4gICovCitzdHJ1Y3QgRGlzYXNDb250ZXh0IHsKKyAgICBzdHJ1Y3QgVHJhbnNsYXRpb25C bG9jayAgICAqdGI7CisKKyAgICBJbnN0SW5mbyAgICAgICAgICAgICAgICAgICAgaW5zdFsyXTsg ICAgLyogIHR3byBjb25zZXF1aXRpdmUgaW5zdHJ1Y3Rpb25zICAgKi8KKworICAgIC8qUm91dGlu ZSB1c2VkIHRvIGFjY2VzcyBtZW1vcnkgKi8KKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAg ICAgbWVtaWR4OworICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICBic3RhdGU7CisgICAg aW50ICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZXN0ZXA7Cit9OworCitlbnVtIHsKKyAg ICBCU19OT05FICAgICA9IDAsICAgIC8qICBOb3RoaW5nIHNwZWNpYWwgKG5vbmUgb2YgdGhlIGJl bG93ICAgICAgICAgICovCisgICAgQlNfU1RPUCAgICAgPSAxLCAgICAvKiAgV2Ugd2FudCB0byBz dG9wIHRyYW5zbGF0aW9uIGZvciBhbnkgcmVhc29uICAqLworICAgIEJTX0JSQU5DSCAgID0gMiwg ICAgLyogIEEgYnJhbmNoIGNvbmRpdGlvbiBpcyByZWFjaGVkICAgICAgICAgICAgICAgKi8KKyAg ICBCU19FWENQICAgICA9IDMsICAgIC8qICBBbiBleGNlcHRpb24gY29uZGl0aW9uIGlzIHJlYWNo ZWQgICAgICAgICAgICovCit9OworCitzdGF0aWMgVENHdl9lbnYgY3B1X2VudjsKKworc3RhdGlj IFRDR3YgICAgIGNwdV9wYzsKKworc3RhdGljIFRDR3YgICAgIGNwdV9DZjsKK3N0YXRpYyBUQ0d2 ICAgICBjcHVfWmY7CitzdGF0aWMgVENHdiAgICAgY3B1X05mOworc3RhdGljIFRDR3YgICAgIGNw dV9WZjsKK3N0YXRpYyBUQ0d2ICAgICBjcHVfU2Y7CitzdGF0aWMgVENHdiAgICAgY3B1X0hmOwor c3RhdGljIFRDR3YgICAgIGNwdV9UZjsKK3N0YXRpYyBUQ0d2ICAgICBjcHVfSWY7CisKK3N0YXRp YyBUQ0d2ICAgICBjcHVfcmFtcEQ7CitzdGF0aWMgVENHdiAgICAgY3B1X3JhbXBYOworc3RhdGlj IFRDR3YgICAgIGNwdV9yYW1wWTsKK3N0YXRpYyBUQ0d2ICAgICBjcHVfcmFtcFo7CisKK3N0YXRp YyBUQ0d2ICAgICBjcHVfaW9bNjRdOworc3RhdGljIFRDR3YgICAgIGNwdV9yWzMyXTsKK3N0YXRp YyBUQ0d2ICAgICBjcHVfZWluZDsKK3N0YXRpYyBUQ0d2ICAgICBjcHVfc3A7CisKKyNpbmNsdWRl ICJleGVjL2dlbi1pY291bnQuaCIKKyNkZWZpbmUgUkVHKHgpICAoY3B1X3JbeF0pCisKK3ZvaWQg ICAgICAgICAgICAgICAgYXZyX3RyYW5zbGF0ZV9pbml0KHZvaWQpCit7CisgICAgaW50ICAgICAg ICAgaTsKKyAgICBzdGF0aWMgaW50ICBkb25lX2luaXQ7CisKKyAgICBpZiAoZG9uZV9pbml0KSB7 CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZGVmaW5lIEFWUl9SRUdfT0ZGUyh4KSBvZmZzZXRv ZihDUFVBVlJTdGF0ZSwgeCkKKyAgICBjcHVfZW52ICAgPSB0Y2dfZ2xvYmFsX3JlZ19uZXdfcHRy KFRDR19BUkVHMCwgImVudiIpOworICAgIGNwdV9wYyAgICA9IHRjZ19nbG9iYWxfbWVtX25ld19p MzIoY3B1X2VudiwgQVZSX1JFR19PRkZTKHBjKSwgICAgInBjIik7CisgICAgY3B1X0NmICAgID0g dGNnX2dsb2JhbF9tZW1fbmV3X2kzMihjcHVfZW52LCBBVlJfUkVHX09GRlMoc3JlZ0MpLCAiQ2Yi KTsKKyAgICBjcHVfWmYgICAgPSB0Y2dfZ2xvYmFsX21lbV9uZXdfaTMyKGNwdV9lbnYsIEFWUl9S RUdfT0ZGUyhzcmVnWiksICJaZiIpOworICAgIGNwdV9OZiAgICA9IHRjZ19nbG9iYWxfbWVtX25l d19pMzIoY3B1X2VudiwgQVZSX1JFR19PRkZTKHNyZWdOKSwgIk5mIik7CisgICAgY3B1X1ZmICAg ID0gdGNnX2dsb2JhbF9tZW1fbmV3X2kzMihjcHVfZW52LCBBVlJfUkVHX09GRlMoc3JlZ1YpLCAi VmYiKTsKKyAgICBjcHVfU2YgICAgPSB0Y2dfZ2xvYmFsX21lbV9uZXdfaTMyKGNwdV9lbnYsIEFW Ul9SRUdfT0ZGUyhzcmVnUyksICJTZiIpOworICAgIGNwdV9IZiAgICA9IHRjZ19nbG9iYWxfbWVt X25ld19pMzIoY3B1X2VudiwgQVZSX1JFR19PRkZTKHNyZWdIKSwgIkhmIik7CisgICAgY3B1X1Rm ICAgID0gdGNnX2dsb2JhbF9tZW1fbmV3X2kzMihjcHVfZW52LCBBVlJfUkVHX09GRlMoc3JlZ1Qp LCAiVGYiKTsKKyAgICBjcHVfSWYgICAgPSB0Y2dfZ2xvYmFsX21lbV9uZXdfaTMyKGNwdV9lbnYs IEFWUl9SRUdfT0ZGUyhzcmVnSSksICJJZiIpOworICAgIGNwdV9yYW1wRCA9IHRjZ19nbG9iYWxf bWVtX25ld19pMzIoY3B1X2VudiwgQVZSX1JFR19PRkZTKHJhbXBEKSwgInJhbXBEIik7CisgICAg Y3B1X3JhbXBYID0gdGNnX2dsb2JhbF9tZW1fbmV3X2kzMihjcHVfZW52LCBBVlJfUkVHX09GRlMo cmFtcFgpLCAicmFtcFgiKTsKKyAgICBjcHVfcmFtcFkgPSB0Y2dfZ2xvYmFsX21lbV9uZXdfaTMy KGNwdV9lbnYsIEFWUl9SRUdfT0ZGUyhyYW1wWSksICJyYW1wWSIpOworICAgIGNwdV9yYW1wWiA9 IHRjZ19nbG9iYWxfbWVtX25ld19pMzIoY3B1X2VudiwgQVZSX1JFR19PRkZTKHJhbXBaKSwgInJh bXBaIik7CisgICAgY3B1X2VpbmQgID0gdGNnX2dsb2JhbF9tZW1fbmV3X2kzMihjcHVfZW52LCBB VlJfUkVHX09GRlMoZWluZCksICAiZWluZCIpOworICAgIGNwdV9zcCAgICA9IHRjZ19nbG9iYWxf bWVtX25ld19pMzIoY3B1X2VudiwgQVZSX1JFR19PRkZTKHNwKSwgICAgInNwIik7CisKKyAgICBm b3IgKGkgPSAwOyBpIDwgNjQ7IGkrKykgeworICAgICAgICBjaGFyICAgIG5hbWVbMTZdOworCisg ICAgICAgIHNwcmludGYobmFtZSwgImlvWyVkXSIsIGkpOworCisgICAgICAgIGNwdV9pb1tpXSAg ID0gdGNnX2dsb2JhbF9tZW1fbmV3X2kzMihjcHVfZW52LCAgIG9mZnNldG9mKENQVUFWUlN0YXRl LCBpb1tpXSksICBuYW1lKTsKKyAgICB9CisgICAgZm9yIChpID0gMDsgaSA8IDMyOyBpKyspIHsK KyAgICAgICAgY2hhciAgICBuYW1lWzE2XTsKKworICAgICAgICBzcHJpbnRmKG5hbWUsICJyWyVk XSIsIGkpOworCisgICAgICAgIGNwdV9yW2ldICAgID0gdGNnX2dsb2JhbF9tZW1fbmV3X2kzMihj cHVfZW52LCAgIG9mZnNldG9mKENQVUFWUlN0YXRlLCByW2ldKSwgICAgbmFtZSk7CisgICAgfQor CisgICAgZG9uZV9pbml0ID0gMTsKK30KKworc3RhdGljIGlubGluZSB2b2lkICBnZW5fZ290b190 YihDUFVBVlJTdGF0ZSAgICAgICAgKmVudiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgRGlzYXNDb250ZXh0ICAgICAgICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGludCAgICAgICAgICAgICAgICAgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdGFyZ2V0X3Vsb25nICAgICAgICBkZXN0KQoreworICAgIFRyYW5zbGF0aW9uQmxvY2sgICAq dGI7CisKKyAgICB0YiAgICAgID0gY3R4LT50YjsKKworICAgIGlmICgodGItPnBjICYgVEFSR0VU X1BBR0VfTUFTSykgPT0gKGRlc3QgJiBUQVJHRVRfUEFHRV9NQVNLKQorICAgICAgICAmJiAgKGN0 eC0+c2luZ2xlc3RlcCA9PSAwKSkgeworICAgICAgICB0Y2dfZ2VuX2dvdG9fdGIobik7CisgICAg ICAgIHRjZ19nZW5fbW92aV9pMzIoY3B1X3BjLCBkZXN0KTsKKyAgICAgICAgdGNnX2dlbl9leGl0 X3RiKCh1aW50cHRyX3QpdGIgKyBuKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0Y2dfZ2VuX21v dmlfaTMyKGNwdV9wYywgZGVzdCk7CisKKyAgICAgICAgaWYgKGN0eC0+c2luZ2xlc3RlcCkgewor ICAgICAgICAgICAgZ2VuX2hlbHBlcl9kZWJ1ZyhjcHVfZW52KTsKKyAgICAgICAgfQorICAgICAg ICB0Y2dfZ2VuX2V4aXRfdGIoMCk7CisgICAgfQorfQorCisjaW5jbHVkZSAidHJhbnNsYXRlLmMu aW5jIgorCit0eXBlZGVmIGludCAoKmV4ZWN1dGVfZnVuY3Rpb25fdCkoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBDUFVBVlJTdGF0ZSAgICAgICAgKmVudiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpc2FzQ29udGV4dCAgICAgICAqY3R4LAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBjb25zdCAgICAgICpvcGNv ZGUpOwordm9pZCAgICAgICAgICAgICAgICBhdnJfZGVjb2RlKAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdWludDMyX3QgICAgICAgICAgICBwYywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICAgICAgICAgICAqbGVuZ3RoLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBjb25zdCAgICAgICpjb2RlLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZV9mdW5jdGlvbl90ICpl eGVjdXRlKTsKKworCitzdGF0aWMgdm9pZCAgICAgICAgIGRlY29kZV9vcGMoCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBBVlJDUFUgICAgICAgICAgICAgKmNwdSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpc2FzQ29udGV4dCAgICAgICAqY3R4LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zdEluZm8gICAgICAgICAgICpp bnN0KQoreworICAgIENQVUFWUlN0YXRlICAgICAgICAqZW52ICAgICA9ICZjcHUtPmVudjsKKwor ICAgIGluc3QtPm9wY29kZSAgICA9IGNwdV9sZGxfY29kZShlbnYsIGluc3QtPmNwYyAqIDIpOyAg IC8qICBwYyBwb2ludHMgdG8gd29yZHMgICAgKi8KKyAgICBpbnN0LT5sZW5ndGggICAgPSAxNjsK KyAgICBpbnN0LT5leGVjICAgICAgPSBOVUxMOworICAgIGF2cl9kZWNvZGUoaW5zdC0+Y3BjLCAm aW5zdC0+bGVuZ3RoLCAodWludDhfdCBjb25zdCAqKSZpbnN0LT5vcGNvZGUsICZpbnN0LT5leGVj KTsKKworICAgIGlmIChpbnN0LT5sZW5ndGggPT0gMTYpIHsKKyAgICAgICAgaW5zdC0+bnBjICAg ID0gaW5zdC0+Y3BjICsgMTsKKyAgICAgICAgaW5zdC0+b3Bjb2RlID0gaW5zdC0+b3Bjb2RlICYg MHgwMDAwZmZmZjsKKyAgICB9CisgICAgaWYgKGluc3QtPmxlbmd0aCA9PSAzMikgeworICAgICAg ICBpbnN0LT5ucGMgICAgPSBpbnN0LT5jcGMgKyAyOworICAgICAgICBpbnN0LT5vcGNvZGUgPSAo aW5zdC0+b3Bjb2RlIDw8IDE2KQorICAgICAgICAgICAgICAgICAgICAgfCAoaW5zdC0+b3Bjb2Rl ID4+IDE2KTsKKyAgICB9Cit9CisKK3VpbnQzMl90ICAgIGdldF9vcGNvZGUoCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IGNvbnN0ICAgICAgKmNvZGUsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCAgICAgICAgICAgIGJpdEJh c2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCAgICAgICAg ICAgIGJpdFNzaXplKQoreworICAgIHJldHVybiAgKih1aW50MTZfdCAqKWNvZGU7Cit9CisKKwor LypnZW5lcmF0ZSBpbnRlcm1lZGlhdGUgY29kZSBmb3IgYmFzaWMgYmxvY2sgJ3RiJy4gICovCit2 b2lkICAgICAgICAgICAgICAgIGdlbl9pbnRlcm1lZGlhdGVfY29kZSgKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgQ1BVQVZSU3RhdGUgICAgICAgICplbnYsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBUcmFuc2xhdGlvbkJsb2NrICAgICp0YikKK3sKKyAg ICBBVlJDUFUgICAgICAgICAqY3B1ICAgICA9IGF2cl9lbnZfZ2V0X2NwdShlbnYpOworICAgIENQ VVN0YXRlICAgICAgICpjcyAgICAgID0gQ1BVKGNwdSk7CisgICAgRGlzYXNDb250ZXh0ICAgIGN0 eDsKKyAgICB0YXJnZXRfdWxvbmcgICAgcGNfc3RhcnQ7CisgICAgaW50ICAgICAgICAgICAgIG51 bV9pbnNucywKKyAgICAgICAgICAgICAgICAgICAgbWF4X2luc25zOworICAgIHRhcmdldF91bG9u ZyAgICBjcGM7CisgICAgdGFyZ2V0X3Vsb25nICAgIG5wYzsKKworICAgIHBjX3N0YXJ0ICAgICAg ICA9IHRiLT5wYyAvIDI7CisgICAgY3R4LnRiICAgICAgICAgID0gdGI7CisgICAgY3R4Lm1lbWlk eCAgICAgID0gMDsKKyAgICBjdHguYnN0YXRlICAgICAgPSBCU19OT05FOworICAgIGN0eC5zaW5n bGVzdGVwICA9IGNzLT5zaW5nbGVzdGVwX2VuYWJsZWQ7CisgICAgbnVtX2luc25zICAgICAgID0g MDsKKyAgICBtYXhfaW5zbnMgICAgICAgPSB0Yi0+Y2ZsYWdzICYgQ0ZfQ09VTlRfTUFTSzsKKwor ICAgIGlmIChtYXhfaW5zbnMgPT0gMCkgeworICAgICAgICBtYXhfaW5zbnMgPSBDRl9DT1VOVF9N QVNLOworICAgIH0KKyAgICBpZiAobWF4X2luc25zID4gVENHX01BWF9JTlNOUykgeworICAgICAg ICBtYXhfaW5zbnMgPSBUQ0dfTUFYX0lOU05TOworICAgIH0KKworICAgIGdlbl90Yl9zdGFydCh0 Yik7CisKKyAgICAvKiAgZGVjb2RlIGZpcnN0IGluc3RydWN0aW9uICAgICovCisgICAgY3R4Lmlu c3RbMF0uY3BjICAgICA9IHBjX3N0YXJ0OworICAgIGRlY29kZV9vcGMoY3B1LCAmY3R4LCAmY3R4 Lmluc3RbMF0pOworICAgIGRvIHsKKyAgICAgICAgLyogIHNldCBjdXJyL25leHQgUENzICAgKi8K KyAgICAgICAgY3BjID0gY3R4Lmluc3RbMF0uY3BjOworICAgICAgICBucGMgPSBjdHguaW5zdFsw XS5ucGM7CisKKyAgICAgICAgLyogIGRlY29kZSBuZXh0IGluc3RydWN0aW9uICovCisgICAgICAg IGN0eC5pbnN0WzFdLmNwYyA9IGN0eC5pbnN0WzBdLm5wYzsKKyAgICAgICAgZGVjb2RlX29wYyhj cHUsICZjdHgsICZjdHguaW5zdFsxXSk7CisKKyAgICAgICAgLyogIGV4ZWN1dGUgY3VycmVudCBp bnN0cnVjdGlvbiAqLworICAgICAgICB0Y2dfZ2VuX2luc25fc3RhcnQoY3BjKTsKKyAgICAgICAg bnVtX2luc25zKys7CisKKyAgICAgICAgaWYgKHVubGlrZWx5KGNwdV9icmVha3BvaW50X3Rlc3Qo Y3MsIGNwYyAqIDIsIEJQX0FOWSkKKyAgICAgICAgICAgICAgICAgICAgfHwgIGNwdV9icmVha3Bv aW50X3Rlc3QoY3MsIGNwYyAqIDIgKyAweDAwODAwMDAwLCBCUF9BTlkpKSkgeworICAgICAgICAg ICAgdGNnX2dlbl9tb3ZpX2kzMihjcHVfcGMsIGNwYyk7CisgICAgICAgICAgICBnZW5faGVscGVy X2RlYnVnKGNwdV9lbnYpOworICAgICAgICAgICAgY3R4LmJzdGF0ZSAgPSBCU19FWENQOworICAg ICAgICAgICAgLypUaGUgYWRkcmVzcyBjb3ZlcmVkIGJ5IHRoZSBicmVha3BvaW50IG11c3QgYmUg aW5jbHVkZWQgaW4KKyAgICAgICAgICAgICAgIFt0Yi0+cGMsIHRiLT5wYyArIHRiLT5zaXplKSBp biBvcmRlciB0byBmb3IgaXQgdG8gYmUKKyAgICAgICAgICAgICAgIHByb3Blcmx5IGNsZWFyZWQg LS0gdGh1cyB3ZSBpbmNyZW1lbnQgdGhlIFBDIGhlcmUgc28gdGhhdAorICAgICAgICAgICAgICAg dGhlIGxvZ2ljIHNldHRpbmcgdGItPnNpemUgYmVsb3cgZG9lcyB0aGUgcmlnaHQgdGhpbmcuICAq LworICAgICAgICAgICAgZ290byBkb25lX2dlbmVyYXRpbmc7CisgICAgICAgIH0KKworICAgICAg ICBjdHguYnN0YXRlICA9IGN0eC5pbnN0WzBdLmV4ZWMoZW52LCAmY3R4LCAodWludDhfdCBjb25z dCAqKSZjdHguaW5zdFswXS5vcGNvZGUpOworCisgICAgICAgIGlmIChudW1faW5zbnMgPj0gbWF4 X2luc25zKSB7CisgICAgICAgICAgICBicmVhazsgICAgICAvKiBtYXggdHJhbnNsYXRlZCBpbnN0 cnVjdGlvbnMgbGltaXQgcmVhY2hlZCAqLworICAgICAgICB9CisgICAgICAgIGlmIChjdHguc2lu Z2xlc3RlcCkgeworICAgICAgICAgICAgYnJlYWs7ICAgICAgLyogc2luZ2xlIHN0ZXAgKi8KKyAg ICAgICAgfQorICAgICAgICBpZiAoKGNwYyAmIChUQVJHRVRfUEFHRV9TSVpFIC0gMSkpID09IDAp IHsKKyAgICAgICAgICAgIGJyZWFrOyAgICAgIC8qIHBhZ2UgYm91bmRhcnkgKi8KKyAgICAgICAg fQorCisgICAgICAgIGN0eC5pbnN0WzBdID0gY3R4Lmluc3RbMV07ICAvKiAgbWFrZSBuZXh0IGlu c3QgY3VyciAqLworICAgIH0gd2hpbGUgKGN0eC5ic3RhdGUgPT0gQlNfTk9ORSAmJiAhdGNnX29w X2J1Zl9mdWxsKCkpOworCisgICAgaWYgKHRiLT5jZmxhZ3MgJiBDRl9MQVNUX0lPKSB7CisgICAg ICAgIGdlbl9pb19lbmQoKTsKKyAgICB9CisKKyAgICBpZiAoY3R4LnNpbmdsZXN0ZXApIHsKKyAg ICAgICAgaWYgKGN0eC5ic3RhdGUgPT0gQlNfU1RPUCB8fCBjdHguYnN0YXRlID09IEJTX05PTkUp IHsKKyAgICAgICAgICAgIHRjZ19nZW5fbW92aV90bChjcHVfcGMsIG5wYyk7CisgICAgICAgIH0K KyAgICAgICAgZ2VuX2hlbHBlcl9kZWJ1ZyhjcHVfZW52KTsKKyAgICAgICAgdGNnX2dlbl9leGl0 X3RiKDApOworICAgIH0gZWxzZSB7CisgICAgICAgIHN3aXRjaCAoY3R4LmJzdGF0ZSkgeworICAg ICAgICBjYXNlIEJTX1NUT1A6CisgICAgICAgIGNhc2UgQlNfTk9ORToKKyAgICAgICAgICAgIGdl bl9nb3RvX3RiKGVudiwgJmN0eCwgMCwgbnBjKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg ICBjYXNlIEJTX0VYQ1A6CisgICAgICAgICAgICB0Y2dfZ2VuX2V4aXRfdGIoMCk7CisgICAgICAg ICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg ICB9CisgICAgfQorCitkb25lX2dlbmVyYXRpbmc6CisgICAgZ2VuX3RiX2VuZCh0YiwgbnVtX2lu c25zKTsKKworICAgIHRiLT5zaXplICAgID0gKG5wYyAtIHBjX3N0YXJ0KSAqIDI7CisgICAgdGIt Pmljb3VudCAgPSBudW1faW5zbnM7Cit9CisKK3ZvaWQgICAgICAgICAgICAgICAgcmVzdG9yZV9z dGF0ZV90b19vcGMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENQVUFWUlN0YXRl ICAgICAgICAqZW52LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGlv bkJsb2NrICAgKnRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfdWxv bmcgICAgICAgKmRhdGEpCit7CisgICAgZW52LT5wYyA9IGRhdGFbMF07Cit9CisKK3ZvaWQgICAg ICAgICAgICAgICAgYXZyX2NwdV9kdW1wX3N0YXRlKAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBDUFVTdGF0ZSAgICAgICAgICAgKmNzLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBGSUxFICAgICAgICAgICAgICAgKmYsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGZwcmludGZfZnVuY3Rpb24gICAgY3B1X2ZwcmludGYsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgZmxhZ3MpCit7CisgICAgQVZSQ1BV ICAgICAgICAgKmNwdSA9IEFWUl9DUFUoY3MpOworICAgIENQVUFWUlN0YXRlICAgICplbnYgPSAm Y3B1LT5lbnY7CisKKyAgICBjcHVfZnByaW50ZihmLCAiXG4iKTsKKyAgICBjcHVfZnByaW50Zihm LCAiUEM6ICAgICUwNnhcbiIsIGVudi0+cGMpOworICAgIGNwdV9mcHJpbnRmKGYsICJTUDogICAg ICAlMDR4XG4iLCBlbnYtPnNwKTsKKyAgICBjcHVfZnByaW50ZihmLCAicmFtcFg6ICAgICAlMDJ4 XG4iLCBlbnYtPnJhbXBYKTsKKyAgICBjcHVfZnByaW50ZihmLCAicmFtcFk6ICAgICAlMDJ4XG4i LCBlbnYtPnJhbXBZKTsKKyAgICBjcHVfZnByaW50ZihmLCAicmFtcFo6ICAgICAlMDJ4XG4iLCBl bnYtPnJhbXBaKTsKKyAgICBjcHVfZnByaW50ZihmLCAicmFtcEQ6ICAgICAlMDJ4XG4iLCBlbnYt PnJhbXBEKTsKKyAgICBjcHVfZnByaW50ZihmLCAiRUlORDogICAgICAlMDJ4XG4iLCBlbnYtPmVp bmQpOworICAgIGNwdV9mcHJpbnRmKGYsICJYOiAgICAgICAlMDJ4JTAyeFxuIiwgZW52LT5yWzI3 XSwgZW52LT5yWzI2XSk7CisgICAgY3B1X2ZwcmludGYoZiwgIlk6ICAgICAgICUwMnglMDJ4XG4i LCBlbnYtPnJbMjldLCBlbnYtPnJbMjhdKTsKKyAgICBjcHVfZnByaW50ZihmLCAiWjogICAgICAg JTAyeCUwMnhcbiIsIGVudi0+clszMV0sIGVudi0+clszMF0pOworICAgIGNwdV9mcHJpbnRmKGYs ICIgICAgICAgICBbIEkgVCBIIFMgViBOIFogQyBdXG4iKTsKKyAgICBjcHVfZnByaW50ZihmLCAi U1JFRzogICAgWyAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCBdXG4iLAorICAgICAgICAgICAgICAg ICAgICAgICAgZW52LT5zcmVnSSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVudi0+c3JlZ1Qs CisgICAgICAgICAgICAgICAgICAgICAgICBlbnYtPnNyZWdILAorICAgICAgICAgICAgICAgICAg ICAgICAgZW52LT5zcmVnUywKKyAgICAgICAgICAgICAgICAgICAgICAgIGVudi0+c3JlZ1YsCisg ICAgICAgICAgICAgICAgICAgICAgICBlbnYtPnNyZWdOLAorICAgICAgICAgICAgICAgICAgICAg ICAgZW52LT5zcmVnWiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVudi0+c3JlZ0MpOworCisg ICAgY3B1X2ZwcmludGYoZiwgIlxuIik7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBBUlJBWV9T SVpFKGVudi0+cik7IGkrKykgeworICAgICAgICBjcHVfZnByaW50ZihmLCAiUlslMDJkXTogICUw MnggICAiLCBpLCBlbnYtPnJbaV0pOworCisgICAgICAgIGlmICgoaSAlIDgpID09IDcpIHsKKyAg ICAgICAgICAgIGNwdV9mcHJpbnRmKGYsICJcbiIpOworICAgICAgICB9CisgICAgfQorCisgICAg Y3B1X2ZwcmludGYoZiwgIlxuIik7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBBUlJBWV9TSVpF KGVudi0+aW8pOyBpKyspIHsKKyAgICAgICAgY3B1X2ZwcmludGYoZiwgIklPWyUwMmRdOiAlMDJ4 ICAgIiwgaSwgZW52LT5pb1tpXSk7CisKKyAgICAgICAgaWYgKChpICUgOCkgPT0gNykgeworICAg ICAgICAgICAgY3B1X2ZwcmludGYoZiwgIlxuIik7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYg LS1naXQgYS90YXJnZXQtYXZyL3RyYW5zbGF0ZS5jLmluYyBiL3RhcmdldC1hdnIvdHJhbnNsYXRl LmMuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmYzM2NjAKLS0tIC9k ZXYvbnVsbAorKysgYi90YXJnZXQtYXZyL3RyYW5zbGF0ZS5jLmluYwpAQCAtMCwwICsxLDI3MDEg QEAKKy8qCisgKiAgUUVNVSBBVlIgQ1BVCisgKiAgCisgKiAgQ29weXJpZ2h0IChjKSAyMDE2IE1p Y2hhZWwgUm9sbmlrCisgKiAgCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9u IDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KKyAqICAKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2Vy IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqICAKKyAqICBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi bGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCBzZWUKKyAq ICA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xncGwtMi4xLmh0bWw+CisgKi8KKworI2lu Y2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSAiZGVjb2RlLmgi CisKKy8qICBOT1RFOiAgIGFsbCByZWdpc3RlcnMgYXJlIGFzc3VtZWQgdG8gaG9sZCA4IGJpdCB2 YWx1ZXMuICAqLworLyogICAgICAgICAgc28gYWxsIG9wZXJhdGlvbnMgZG9uZSBvbiByZWdpc3Rl cnMgc2hvdWxkIHByZXNldmUgdGhpcyBwcm9wZXJ0eSAgKi8KKworLyogIE5PVEU6ICAgdGhlIGZs YWdzIEMsSCxWLE4sViBoYXZlIGVpdGhlciAwIG9yIDEgdmFsdWVzICAqLworLyogIE5PVEU6ICAg dGhlIGZsYWcgWiBoYXMgaW52ZXJzZSBsb2dpYywgd2hlbiB0aGUgdmFsdWUgb2YgWmYgaXMgMCB0 aGUgZmxhZyBpcyBhc3N1bWVkIHRvIGJlIHNldCwgbm9uIHplcm8gLSBub3Qgc2V0ICAqLworCit2 b2lkICAgIGdlbl9hZGRfQ0hmKCAgICBUQ0d2ICAgIFIsIFRDR3YgICAgUmQsIFRDR3YgICAgUnIp Owordm9pZCAgICBnZW5fYWRkX1ZmKCAgICAgVENHdiAgICBSLCBUQ0d2ICAgIFJkLCBUQ0d2ICAg IFJyKTsKK3ZvaWQgICAgZ2VuX3N1Yl9DSGYoICAgIFRDR3YgICAgUiwgVENHdiAgICBSZCwgVENH diAgICBScik7Cit2b2lkICAgIGdlbl9zdWJfVmYoICAgICBUQ0d2ICAgIFIsIFRDR3YgICAgUmQs IFRDR3YgICAgUnIpOwordm9pZCAgICBnZW5fWk5TZiggICAgICAgVENHdiAgICBSKTsKK3ZvaWQg ICAgZ2VuX3B1c2hfcmV0KCAgIENQVUFWUlN0YXRlICplbnYsIGludCAgICByZXQpOwordm9pZCAg ICBnZW5fcG9wX3JldCggICAgQ1BVQVZSU3RhdGUgKmVudiwgVENHdiAgICByZXQpOwordm9pZCAg ICBnZW5fam1wX2V6KCAgICAgdm9pZCk7Cit2b2lkICAgIGdlbl9qbXBfeiggICAgICB2b2lkKTsK K3ZvaWQgICAgZ2VuX3NwbGl0X2FkZHIoICBUQ0d2IGFkZHIsIFRDR3YgSCwgVENHdiBNLCBUQ0d2 IGwpOworaW50ICAgICBzZXgoaW50IEltbSwgdW5zaWduZWQgYml0cyk7CisKK3ZvaWQgICAgZ2Vu X2FkZF9DSGYoVENHdiAgICBSLCBUQ0d2ICAgIFJkLCBUQ0d2ICAgIFJyKQoreworICAgIFRDR3Yg ICAgdDEgICAgICA9IHRjZ190ZW1wX25ld19pMzIoKTsKKyAgICBUQ0d2ICAgIHQyICAgICAgPSB0 Y2dfdGVtcF9uZXdfaTMyKCk7CisgICAgVENHdiAgICB0MyAgICAgID0gdGNnX3RlbXBfbmV3X2kz MigpOworCisgICAgdGNnX2dlbl9hbmRfdGwoIHQxLCAgICAgUmQsICAgICBScik7ICAgIC8qICB0 MSAgPSBSZCAmIFJyICAqLworICAgIHRjZ19nZW5fbm90X3RsKCB0MiwgICAgIFIpOyAgICAgICAg ICAgICAvKiAgdDIgID0gUmQgJiB+UiAgKi8KKyAgICB0Y2dfZ2VuX2FuZF90bCggdDIsICAgICBS ZCwgICAgIHQyKTsKKyAgICB0Y2dfZ2VuX25vdF90bCggdDMsICAgICBSKTsgICAgICAgICAgICAg LyogIHQzICA9IFJyICAqflIgICovCisgICAgdGNnX2dlbl9hbmRfdGwoIHQzLCAgICAgUnIsICAg ICB0Myk7CisgICAgdGNnX2dlbl9vcl90bCggIHQxLCAgICAgdDEsICAgICB0Mik7ICAgIC8qICB0 MSAgPSB0MSB8IHQyIHwgdDMgICovCisgICAgdGNnX2dlbl9vcl90bCggIHQxLCAgICAgdDEsICAg ICB0Myk7CisKKyAgICB0Y2dfZ2VuX3NocmlfdGwoY3B1X0NmLCB0MSwgICAgIDcpOyAgICAgLyog IENmICA9IHQxKDcpICAqLworICAgIHRjZ19nZW5fc2hyaV90bChjcHVfSGYsIHQxLCAgICAgMyk7 ICAgICAvKiAgSGYgID0gdDEoMykgICovCisgICAgdGNnX2dlbl9hbmRpX3RsKGNwdV9IZiwgY3B1 X0hmLCAxKTsKKworICAgIHRjZ190ZW1wX2ZyZWVfaTMyKHQzKTsKKyAgICB0Y2dfdGVtcF9mcmVl X2kzMih0Mik7CisgICAgdGNnX3RlbXBfZnJlZV9pMzIodDEpOworfQorCit2b2lkICAgIGdlbl9h ZGRfVmYoVENHdiAgICBSLCBUQ0d2ICAgIFJkLCBUQ0d2ICAgIFJyKQoreworICAgIFRDR3YgICAg dDEgICAgICA9IHRjZ190ZW1wX25ld19pMzIoKTsKKyAgICBUQ0d2ICAgIHQyICAgICAgPSB0Y2df dGVtcF9uZXdfaTMyKCk7CisKKyAgICB0Y2dfZ2VuX25vdF90bCggdDEsICAgICBSZCk7ICAgICAg ICAgICAgLyogIHQxICA9IH5SZCAmIH5SciAmIFIgICovCisgICAgdGNnX2dlbl9ub3RfdGwoIHQy LCAgICAgUnIpOworICAgIHRjZ19nZW5fYW5kX3RsKCB0MSwgICAgIHQxLCAgICAgdDIpOworICAg IHRjZ19nZW5fYW5kX3RsKCB0MSwgICAgIHQxLCAgICAgUik7CisKKyAgICB0Y2dfZ2VuX25vdF90 bCggdDIsICAgICBSKTsgICAgICAgICAgICAgLyogIHQyICA9IFJkICYgUnIgJiB+UiAgKi8KKyAg ICB0Y2dfZ2VuX2FuZF90bCggdDIsICAgICB0MiwgICAgIFJkKTsKKyAgICB0Y2dfZ2VuX2FuZF90 bCggdDIsICAgICB0MiwgICAgIFJyKTsKKworICAgIHRjZ19nZW5fb3JfdGwoICB0MSwgICAgIHQx LCAgICAgdDIpOyAgICAvKiAgdDEgID0gUmQgJiBSciAmIH5SIHwgflJkICYgflJyICYgUiAgKi8K KworICAgIHRjZ19nZW5fc2hyaV90bChjcHVfVmYsIHQxLCAgICAgNyk7ICAgICAvKiAgVmYgID0g dDEoNykgICovCisKKyAgICB0Y2dfdGVtcF9mcmVlX2kzMih0Mik7CisgICAgdGNnX3RlbXBfZnJl ZV9pMzIodDEpOworfQorCit2b2lkICAgIGdlbl9zdWJfQ0hmKFRDR3YgICAgUiwgVENHdiAgICBS ZCwgVENHdiAgICBScikKK3sKKyAgICBUQ0d2ICAgIHQxICAgICAgPSB0Y2dfdGVtcF9uZXdfaTMy KCk7CisgICAgVENHdiAgICB0MiAgICAgID0gdGNnX3RlbXBfbmV3X2kzMigpOworICAgIFRDR3Yg ICAgdDMgICAgICA9IHRjZ190ZW1wX25ld19pMzIoKTsKKworICAgIC8qICBDZiAmIEhmICAqLwor ICAgIHRjZ19nZW5fbm90X3RsKCB0MSwgICAgIFJkKTsgICAgICAgICAgICAvKiAgdDEgID0gflJk ICAqLworICAgIHRjZ19nZW5fYW5kX3RsKCB0MiwgICAgIHQxLCAgICAgUnIpOyAgICAvKiAgdDIg ID0gflJkICYgUnIgICovCisgICAgdGNnX2dlbl9vcl90bCggIHQzLCAgICAgdDEsICAgICBScik7 ICAgIC8qICB0MyAgPSAoflJkIHwgUnIpICYgUiAgKi8KKyAgICB0Y2dfZ2VuX2FuZF90bCggdDMs ICAgICB0MywgICAgIFIpOworICAgIHRjZ19nZW5fb3JfdGwoICB0MiwgICAgIHQyLCAgICAgdDMp OyAgICAvKiAgdDIgID0gflJkICYgUnIgfCB+UmQgJiBSIHwgUiAmIFJyICAqLworICAgIHRjZ19n ZW5fc2hyaV90bChjcHVfQ2YsIHQyLCAgICAgNyk7ICAgICAvKiAgQ2YgID0gdDIoNykgICovCisg ICAgdGNnX2dlbl9zaHJpX3RsKGNwdV9IZiwgdDIsICAgICAzKTsgICAgIC8qICBIZiAgPSB0Migz KSAgKi8KKyAgICB0Y2dfZ2VuX2FuZGlfdGwoY3B1X0hmLCBjcHVfSGYsIDEpOworCisgICAgdGNn X3RlbXBfZnJlZV9pMzIodDMpOworICAgIHRjZ190ZW1wX2ZyZWVfaTMyKHQyKTsKKyAgICB0Y2df dGVtcF9mcmVlX2kzMih0MSk7Cit9CisKK3ZvaWQgICAgZ2VuX3N1Yl9WZihUQ0d2ICAgIFIsIFRD R3YgICAgUmQsIFRDR3YgICAgUnIpCit7CisgICAgVENHdiAgICB0MSAgICAgID0gdGNnX3RlbXBf bmV3X2kzMigpOworICAgIFRDR3YgICAgdDIgICAgICA9IHRjZ190ZW1wX25ld19pMzIoKTsKKwor ICAgIC8qICBWZiAgKi8KKyAgICB0Y2dfZ2VuX2FuZF90bCggdDEsICAgICBSciwgICAgIFIpOyAg ICAgLyogIHQxICA9IFJkICYgflJyICYgflIgICovCisgICAgdGNnX2dlbl9ub3RfdGwoIHQxLCAg ICAgdDEpOworICAgIHRjZ19nZW5fYW5kX3RsKCB0MSwgICAgIHQxLCAgICAgUmQpOworICAgIHRj Z19nZW5fbm90X3RsKCB0MiwgICAgIFJkKTsgICAgICAgICAgICAvKiAgdDIgID0gflJkICYgUnIg JiBSICAqLworICAgIHRjZ19nZW5fYW5kX3RsKCB0MiwgICAgIHQyLCAgICAgUnIpOworICAgIHRj Z19nZW5fYW5kX3RsKCB0MiwgICAgIHQyLCAgICAgUik7CisgICAgdGNnX2dlbl9vcl90bCggIHQx LCAgICAgdDEsICAgICB0Mik7ICAgIC8qICB0MSAgPSBSZCAmIH5SciAmIH5SIHwgflJkICYgUnIg JiBSICAqLworICAgIHRjZ19nZW5fc2hyaV90bChjcHVfVmYsIHQxLCAgICAgNyk7ICAgICAvKiAg VmYgID0gdDEoNykgICovCisKKyAgICB0Y2dfdGVtcF9mcmVlX2kzMih0Mik7CisgICAgdGNnX3Rl bXBfZnJlZV9pMzIodDEpOworfQorCit2b2lkICAgIGdlbl9aTlNmKFRDR3YgICAgUikKK3sKKyAg ICB0Y2dfZ2VuX21vdl90bCggY3B1X1pmLCBSKTsgICAgICAgICAgICAgLyogIFpmICA9IFIgICov CisgICAgdGNnX2dlbl9zaHJpX3RsKGNwdV9OZiwgUiwgICAgICA3KTsgICAgIC8qICBOZiAgPSBS KDcpICAqLworICAgIHRjZ19nZW5fYW5kX3RsKCBjcHVfU2YsIGNwdV9OZiwgY3B1X1ZmKTsvKiAg U2YgID0gTmYgJiBWZiAgKi8KK30KKwordm9pZCAgICBnZW5fcHVzaF9yZXQoICAgQ1BVQVZSU3Rh dGUgKmVudiwgaW50ICAgIHJldCkKK3sKKyAgICB0Y2dfZ2VuX3FlbXVfc3Q4KCAgIHRjZ19jb25z dF9sb2NhbF9pMzIoKHJldCAmIDB4MDAwMGZmKSksICAgICAgY3B1X3NwLCBEQVRBX0lOREVYKTsK KyAgICB0Y2dfZ2VuX3N1YmlfdGwoICAgIGNwdV9zcCwgY3B1X3NwLCAxKTsKKworICAgIGlmICgg ICBhdnJfZmVhdHVyZShlbnYsIEFWUl9GRUFUVVJFXzJfQllURV9QQykKKyAgICAgICAgfHwgYXZy X2ZlYXR1cmUoZW52LCBBVlJfRkVBVFVSRV8zX0JZVEVfUEMpKSB7CisgICAgICAgIHRjZ19nZW5f cWVtdV9zdDgoICAgdGNnX2NvbnN0X2xvY2FsX2kzMigocmV0ICYgMHgwMGZmMDApID4+IDgpLCBj cHVfc3AsIERBVEFfSU5ERVgpOworICAgICAgICB0Y2dfZ2VuX3N1YmlfdGwoICAgIGNwdV9zcCwg Y3B1X3NwLCAxKTsKKyAgICB9CisKKyAgICBpZiAoYXZyX2ZlYXR1cmUoZW52LCBBVlJfRkVBVFVS RV8zX0JZVEVfUEMpKSB7CisgICAgICAgIHRjZ19nZW5fcWVtdV9zdDgoICAgdGNnX2NvbnN0X2xv Y2FsX2kzMigocmV0ICYgMHhmZjAwMDApID4+IDE2KSxjcHVfc3AsIERBVEFfSU5ERVgpOworICAg ICAgICB0Y2dfZ2VuX3N1YmlfdGwoICAgIGNwdV9zcCwgY3B1X3NwLCAxKTsKKyAgICB9Cit9CisK K3ZvaWQgICAgZ2VuX3BvcF9yZXQoICAgIENQVUFWUlN0YXRlICplbnYsIFRDR3YgICAgcmV0KQor eworICAgIFRDR3YgICAgdDAgID0gdGNnX2NvbnN0X2kzMigwKTsKKyAgICBUQ0d2ICAgIHQxICA9 IHRjZ19jb25zdF9pMzIoMCk7CisgICAgVENHdiAgICB0MiAgPSB0Y2dfY29uc3RfaTMyKDApOwor CisgICAgaWYgKGF2cl9mZWF0dXJlKGVudiwgQVZSX0ZFQVRVUkVfM19CWVRFX1BDKSkgeworICAg ICAgICB0Y2dfZ2VuX2FkZGlfdGwoICAgIGNwdV9zcCwgY3B1X3NwLCAxKTsKKyAgICAgICAgdGNn X2dlbl9xZW11X2xkOHUoICB0MiwgICAgIGNwdV9zcCwgREFUQV9JTkRFWCk7CisgICAgICAgIHRj Z19nZW5fc2hsaV90bCggICAgdDIsICAgICB0MiwgICAgIDE2KTsKKyAgICB9CisKKyAgICBpZiAo ICAgIGF2cl9mZWF0dXJlKGVudiwgQVZSX0ZFQVRVUkVfMl9CWVRFX1BDKQorICAgICAgICB8fCAg YXZyX2ZlYXR1cmUoZW52LCBBVlJfRkVBVFVSRV8zX0JZVEVfUEMpKSB7CisgICAgICAgIHRjZ19n ZW5fYWRkaV90bCggICAgY3B1X3NwLCBjcHVfc3AsIDEpOworICAgICAgICB0Y2dfZ2VuX3FlbXVf bGQ4dSggIHQxLCAgICAgY3B1X3NwLCBEQVRBX0lOREVYKTsKKyAgICAgICAgdGNnX2dlbl9zaGxp X3RsKCAgICB0MSwgICAgIHQxLCAgICAgOCk7CisgICAgfQorCisgICAgdGNnX2dlbl9hZGRpX3Rs KCAgICBjcHVfc3AsIGNwdV9zcCwgMSk7CisgICAgdGNnX2dlbl9xZW11X2xkOHUoICB0MCwgICAg IGNwdV9zcCwgREFUQV9JTkRFWCk7CisKKyAgICB0Y2dfZ2VuX29yX3RsKCAgICAgIHJldCwgICAg dDAsICAgICB0MSk7CisgICAgdGNnX2dlbl9vcl90bCggICAgICByZXQsICAgIHJldCwgICAgdDIp OworCisgICAgdGNnX3RlbXBfZnJlZV9pMzIodDApOworICAgIHRjZ190ZW1wX2ZyZWVfaTMyKHQx KTsKKyAgICB0Y2dfdGVtcF9mcmVlX2kzMih0Mik7Cit9CisKK3ZvaWQgICAgZ2VuX2ptcF9leigp Cit7CisgICAgdGNnX2dlbl9tb3ZfdGwoICAgICBjcHVfcGMsIGNwdV9laW5kKTsKKyAgICB0Y2df Z2VuX3NobGlfdGwoICAgIGNwdV9wYywgY3B1X3BjLCA4KTsKKyAgICB0Y2dfZ2VuX29yX3RsKCAg ICAgIGNwdV9wYywgY3B1X3BjLCBjcHVfclszMV0pOworICAgIHRjZ19nZW5fc2hsaV90bCggICAg Y3B1X3BjLCBjcHVfcGMsIDgpOworICAgIHRjZ19nZW5fb3JfdGwoICAgICAgY3B1X3BjLCBjcHVf cGMsIGNwdV9yWzMwXSk7CisgICAgdGNnX2dlbl9hbmRpX3RsKCAgICBjcHVfcGMsIGNwdV9wYywg MHhmZmZmZmYpOworICAgIHRjZ19nZW5fZXhpdF90YigwKTsKK30KKwordm9pZCAgICBnZW5fam1w X3ooKQoreworICAgIHRjZ19nZW5fbW92X3RsKCAgICAgY3B1X3BjLCBjcHVfclszMV0pOworICAg IHRjZ19nZW5fc2hsaV90bCggICAgY3B1X3BjLCBjcHVfcGMsIDgpOworICAgIHRjZ19nZW5fb3Jf dGwoICAgICAgY3B1X3BjLCBjcHVfcGMsIGNwdV9yWzMwXSk7CisgICAgdGNnX2dlbl9hbmRpX3Rs KCAgICBjcHVfcGMsIGNwdV9wYywgMHhmZmZmKTsKKyAgICB0Y2dfZ2VuX2V4aXRfdGIoMCk7Cit9 CisKK3ZvaWQgICAgZ2VuX3NwbGl0X2FkZHIoIFRDR3YgYWRkciwgVENHdiBILCBUQ0d2IE0sIFRD R3YgTCkKK3sKKyAgICB0Y2dfZ2VuX2FuZGlfdGwoTCwgICAgICBhZGRyLCAgIDB4ZmYpOworCisg ICAgdGNnX2dlbl9zaHJpX3RsKGFkZHIsICAgYWRkciwgICA4KTsKKyAgICB0Y2dfZ2VuX2FuZGlf dGwoTSwgICAgICBhZGRyLCAgIDB4ZmYpOworCisgICAgdGNnX2dlbl9zaHJpX3RsKGFkZHIsICAg YWRkciwgICA4KTsKKyAgICB0Y2dfZ2VuX2FuZGlfdGwoSCwgICAgICBhZGRyLCAgIDB4ZmYpOwor fQorCitpbnQgICAgIHNleChpbnQgSW1tLCB1bnNpZ25lZCBiaXRzKQoreworICAgIEltbSA8PD0g MzIgLSBiaXRzOworICAgIEltbSA+Pj0gMzIgLSBiaXRzOworCisgICAgcmV0dXJuICBJbW07Cit9 CisKKworLyogIEFkZHMgdHdvIHJlZ2lzdGVycyBhbmQgdGhlIGNvbnRlbnRzIG9mIHRoZSBDIEZs YWcgYW5kIHBsYWNlcyB0aGUgcmVzdWx0IGluIHRoZSBkZXN0aW5hdGlvbiByZWdpc3RlciBSZC4g ICovCitpbnQgICAgIGF2cl9leGVjdXRlX0FEQ18wMDAxMTFhYmJiYmJjY2NjKENQVUFWUlN0YXRl ICplbnYsIERpc2FzQ29udGV4dCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBhdnJfb3Bjb2RlX0FEQ18wMDAxMTFhYmJiYmJjY2NjX3QgY29uc3QgKmluc3Qp Cit7CisgICAgVENHdiAgICBSZCAgPSBjcHVfcltpbnN0LT5SZF07CisgICAgVENHdiAgICBSciAg PSBjcHVfclsoaW5zdC0+aFJyIDw8IDQpIHwgKGluc3QtPmxScildOworICAgIFRDR3YgICAgUiAg ID0gdGNnX3RlbXBfbmV3X2kzMigpOworCisgICAgLyogIG9wICAqLworICAgIHRjZ19nZW5fYWRk X3RsKCBSLCAgICAgIFJkLCAgICAgUnIpOyAgICAgICAgICAgICAvKiAgUiAgID0gUmQgKyBSciAr IENmICAqLworICAgIHRjZ19nZW5fYWRkX3RsKCBSLCAgICAgIFIsICAgICAgY3B1X0NmKTsKKyAg ICB0Y2dfZ2VuX2FuZGlfdGwoUiwgICAgICBSLCAgICAgIDB4ZmYpOyAgICAgICAgICAgIC8qICBt YWtlIGl0IDggYml0cyAgKi8KKworICAgIGdlbl9hZGRfQ0hmKCAgICBSLCAgICAgIFJkLCAgICAg UnIpOworICAgIGdlbl9hZGRfVmYoICAgICBSLCAgICAgIFJkLCAgICAgUnIpOworICAgIGdlbl9a TlNmKCAgICAgICBSKTsKKworICAgIC8qICBSICAqLworICAgIHRjZ19nZW5fbW92X3RsKCBSZCwg ICAgIFIpOworCisgICAgdGNnX3RlbXBfZnJlZV9pMzIoUik7CisKKyAgICByZXR1cm4gIEJTX05P TkU7Cit9CisKKworLyogIEFkZHMgdHdvIHJlZ2lzdGVycyB3aXRob3V0IHRoZSBDIEZsYWcgYW5k IHBsYWNlcyB0aGUgcmVzdWx0IGluIHRoZSBkZXN0aW5hdGlvbiByZWdpc3RlciBSZC4gICovCitp bnQgICAgIGF2cl9leGVjdXRlX0FERF8wMDAwMTFhYmJiYmJjY2NjKENQVUFWUlN0YXRlICplbnYs IERpc2FzQ29udGV4dCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBhdnJfb3Bjb2RlX0FERF8wMDAwMTFhYmJiYmJjY2NjX3QgY29uc3QgKmluc3QpCit7Cisg ICAgVENHdiAgICBSZCAgPSBjcHVfcltpbnN0LT5SZF07CisgICAgVENHdiAgICBSciAgPSBjcHVf clsoaW5zdC0+aFJyIDw8IDQpIHwgKGluc3QtPmxScildOworICAgIFRDR3YgICAgUiAgID0gdGNn X3RlbXBfbmV3X2kzMigpOworCisgICAgLyogIG9wICAqLworICAgIHRjZ19nZW5fYWRkX3RsKCBS LCAgICAgIFJkLCAgICAgUnIpOyAgICAgICAgICAgICAvKiAgUmQgPSBSZCArIFJyICAqLworICAg IHRjZ19nZW5fYW5kaV90bChSLCAgICAgIFIsICAgICAgMHhmZik7ICAgICAgICAgICAgLyogIG1h a2UgaXQgOCBiaXRzICAqLworCisgICAgZ2VuX2FkZF9DSGYoICAgIFIsICAgICAgUmQsICAgICBS cik7CisgICAgZ2VuX2FkZF9WZiggICAgIFIsICAgICAgUmQsICAgICBScik7CisgICAgZ2VuX1pO U2YoICAgICAgIFIpOworCisgICAgLyogIFIgICovCisgICAgdGNnX2dlbl9tb3ZfdGwoIFJkLCAg ICAgUik7CisKKyAgICB0Y2dfdGVtcF9mcmVlX2kzMihSKTsKKworICAgIHJldHVybiAgQlNfTk9O RTsKK30KKworCisvKiAgQWRkcyBhbiBpbW1lZGlhdGUgdmFsdWUgKDAgLSA2MykgdG8gYSByZWdp c3RlciBwYWlyIGFuZCBwbGFjZXMgdGhlIHJlc3VsdCBpbiB0aGUgcmVnaXN0ZXIgcGFpci4gVGhp cyBpbnN0cnVjdGlvbiAgKi8KKy8qICBvcGVyYXRlcyBvbiB0aGUgdXBwZXIgZm91ciByZWdpc3Rl ciBwYWlycywgYW5kIGlzIHdlbGwgc3VpdGVkIGZvciBvcGVyYXRpb25zIG9uIHRoZSBwb2ludGVy IHJlZ2lzdGVycy4gICovCisvKiAgVGhpcyBpbnN0cnVjdGlvbiBpcyBub3QgYXZhaWxhYmxlIGlu IGFsbCBkZXZpY2VzLiBSZWZlciB0byB0aGUgZGV2aWNlIHNwZWNpZmljIGluc3RydWN0aW9uIHNl dCBzdW1tYXJ5LiAgKi8KK2ludCAgICAgYXZyX2V4ZWN1dGVfQURJV18xMDAxMDExMGFhYmJjY2Nj KENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4LAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBhdnJfb3Bjb2RlX0FESVdfMTAwMTAxMTBhYWJiY2NjY190 IGNvbnN0ICppbnN0KQoreworICAgIGlmIChhdnJfZmVhdHVyZShlbnYsIEFWUl9GRUFUVVJFX0FE SVdfU0JJVykgPT0gZmFsc2UpIHsKKyAgICAgICAgZ2VuX2hlbHBlcl91bnN1cHBvcnRlZChjcHVf ZW52KTsKKworICAgICAgICByZXR1cm4gQlNfRVhDUDsKKyAgICB9CisKKyAgICBUQ0d2ICAgIFJk TCA9IGNwdV9yWzI0ICsgMiAgKmluc3QtPlJkXTsKKyAgICBUQ0d2ICAgIFJkSCA9IGNwdV9yWzI1 ICsgMiAgKmluc3QtPlJkXTsKKyAgICBpbnQgICAgIEltbSA9IChpbnN0LT5oSW1tIDw8IDQpIHwg KGluc3QtPmxJbW0pOworICAgIFRDR3YgICAgUiAgID0gdGNnX3RlbXBfbmV3X2kzMigpOworICAg IFRDR3YgICAgUmQgID0gdGNnX3RlbXBfbmV3X2kzMigpOworICAgIFRDR3YgICAgdDAgID0gdGNn X3RlbXBfbmV3X2kzMigpOworCisgICAgLyogIG9wICAqLworICAgIHRjZ19nZW5fc2hsaV90bChS ZCwgICAgIFJkSCwgICAgOCk7ICAgICAvKiAgUiA9ICgoSCA8PCA4KSB8IEwpICsgSW1tICAqLwor ICAgIHRjZ19nZW5fb3JfdGwoICBSZCwgICAgIFJkTCwgICAgUmQpOworICAgIHRjZ19nZW5fYWRk aV90bChSLCAgICAgIFJkLCAgICAgSW1tKTsKKyAgICB0Y2dfZ2VuX2FuZGlfdGwoUiwgICAgICBS LCAgICAgIDB4ZmZmZik7LyogIG1ha2UgaXQgMTYgYml0cyAgKi8KKworICAgIC8qICBDZiAgKi8K KyAgICB0Y2dfZ2VuX25vdF90bCggdDAsICAgICBSKTsgICAgICAgICAgICAgLyogIHQwICA9IFJk ICYgflIgICovCisgICAgdGNnX2dlbl9hbmRfdGwoIHQwLCAgICAgUmQsICAgICB0MCk7CisgICAg dGNnX2dlbl9zaHJpX3RsKGNwdV9DZiwgdDAsICAgICAxNSk7ICAgIC8qICBDZiAgPSB0MCgxNSkg ICovCisKKyAgICAvKiAgVmYgICovCisgICAgdGNnX2dlbl9ub3RfdGwoIHQwLCAgICAgUmQpOyAg ICAgICAgICAgIC8qICB0MCAgPSB+UmQgJiBSICAqLworICAgIHRjZ19nZW5fYW5kX3RsKCB0MCwg ICAgIFIsICAgICAgdDApOworCisgICAgdGNnX2dlbl9zaHJpX3RsKGNwdV9WZiwgdDAsICAgICAx NSk7ICAgIC8qICBWZiAgPSB0MCgxNSkgICovCisKKyAgICAvKiAgWmYgICovCisgICAgdGNnX2dl bl9tb3ZfdGwoIGNwdV9aZiwgUik7ICAgICAgICAgICAgIC8qICBaZiAgPSBSICAqLworCisgICAg LyogIE5mICAqLworICAgIHRjZ19nZW5fc2hyaV90bChjcHVfTmYsIFIsICAgICAgMTUpOyAgICAv KiAgTmYgID0gUigxNSkgICovCisKKyAgICAvKiAgU2YgICovCisgICAgdGNnX2dlbl9hbmRfdGwo IGNwdV9TZiwgY3B1X05mLCBjcHVfVmYpOy8qICBTZiAgPSBOZiAmIFZmICAqLworCisKKyAgICAv KiAgUiAgKi8KKyAgICB0Y2dfZ2VuX2FuZGlfdGwoUmRMLCAgICBSLCAgICAgIDB4ZmYpOworICAg IHRjZ19nZW5fc2hyaV90bChSZEgsICAgIFIsICAgICAgOCk7CisKKyAgICB0Y2dfdGVtcF9mcmVl X2kzMih0MCk7CisgICAgdGNnX3RlbXBfZnJlZV9pMzIoUmQpOworICAgIHRjZ190ZW1wX2ZyZWVf aTMyKFIpOworCisKKyAgICByZXR1cm4gIEJTX05PTkU7Cit9CisKKworLyogIFBlcmZvcm1zIHRo ZSBsb2dpY2FsIEFORCBiZXR3ZWVuIHRoZSBjb250ZW50cyBvZiByZWdpc3RlciBSZCBhbmQgcmVn aXN0ZXIgUnIgYW5kIHBsYWNlcyB0aGUgcmVzdWx0IGluIHRoZSAgKi8KKy8qICBkZXN0aW5hdGlv biByZWdpc3RlciBSZC4gICovCitpbnQgICAgIGF2cl9leGVjdXRlX0FORF8wMDEwMDBhYmJiYmJj Y2NjKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4LAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBhdnJfb3Bjb2RlX0FORF8wMDEwMDBhYmJiYmJjY2Nj X3QgY29uc3QgKmluc3QpCit7CisgICAgVENHdiAgICBSZCAgPSBjcHVfcltpbnN0LT5SZF07Cisg ICAgVENHdiAgICBSciAgPSBjcHVfclsoaW5zdC0+aFJyIDw8IDQpIHwgKGluc3QtPmxScildOwor ICAgIFRDR3YgICAgUiAgID0gdGNnX3RlbXBfbmV3X2kzMigpOworCisgICAgLyogIG9wICAqLwor ICAgIHRjZ19nZW5fYW5kX3RsKCBSLCAgICAgIFJkLCAgICAgUnIpOyAgICAgICAgICAgICAvKiAg UmQgID0gUmQgYW5kIFJyICAqLworCisgICAgLyogIFZmICAqLworICAgIHRjZ19nZW5fbW92aV90 bChjcHVfVmYsIDB4MDApOyAgICAgICAgICAvKiAgVmYgID0gMCAgKi8KKworICAgIC8qICBaZiAg Ki8KKyAgICB0Y2dfZ2VuX21vdl90bCggY3B1X1pmLCBSKTsgICAgICAgICAgICAgLyogIFpmICA9 IFIgICovCisKKyAgICBnZW5fWk5TZihSKTsKKworICAgIC8qICBSICAqLworICAgIHRjZ19nZW5f bW92X3RsKCBSZCwgICAgIFIpOworCisgICAgdGNnX3RlbXBfZnJlZV9pMzIoUik7CisKKyAgICBy ZXR1cm4gIEJTX05PTkU7Cit9CisKKworLyogIFBlcmZvcm1zIHRoZSBsb2dpY2FsIEFORCBiZXR3 ZWVuIHRoZSBjb250ZW50cyBvZiByZWdpc3RlciBSZCBhbmQgYSBjb25zdGFudCBhbmQgcGxhY2Vz IHRoZSByZXN1bHQgaW4gdGhlICAqLworLyogIGRlc3RpbmF0aW9uIHJlZ2lzdGVyIFJkLiAgKi8K K2ludCAgICAgYXZyX2V4ZWN1dGVfQU5ESV8wMTExYWFhYWJiYmJjY2NjKENQVUFWUlN0YXRlICpl bnYsIERpc2FzQ29udGV4dCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBhdnJfb3Bjb2RlX0FORElfMDExMWFhYWFiYmJiY2NjY190IGNvbnN0ICppbnN0KQor eworICAgIFRDR3YgICAgUmQgID0gY3B1X3JbaW5zdC0+UmRdOworICAgIGludCAgICAgSW1tID0g KGluc3QtPmhJbW0gPDwgNCkgfCAoaW5zdC0+bEltbSk7CisKKyAgICAvKiAgb3AgICovCisgICAg dGNnX2dlbl9hbmRpX3RsKFJkLCAgICAgUmQsICAgICBJbW0pOyAgIC8qICBSZCAgPSBSZCAmIElt bSAgKi8KKworICAgIHRjZ19nZW5fbW92aV90bChjcHVfVmYsIDB4MDApOyAgICAgICAgICAvKiAg VmYgID0gMCAgKi8KKyAgICBnZW5fWk5TZihSZCk7CisKKyAgICByZXR1cm4gIEJTX05PTkU7Cit9 CisKKworLyogIFNoaWZ0cyBhbGwgYml0cyBpbiBSZCBvbmUgcGxhY2UgdG8gdGhlIHJpZ2h0LiBC aXQgNyBpcyBoZWxkIGNvbnN0YW50LiBCaXQgMCBpcyBsb2FkZWQgaW50byB0aGUgQyBGbGFnIG9m IHRoZSBTUkVHLiBUaGlzICAqLworLyogIG9wZXJhdGlvbiBlZmZlY3RpdmVseSBkaXZpZGVzIGEg c2lnbmVkIHZhbHVlIGJ5IHR3byB3aXRob3V0IGNoYW5naW5nIGl0cyBzaWduLiBUaGUgQ2Fycnkg RmxhZyBjYW4gYmUgdXNlZCB0byAgKi8KKy8qICByb3VuZCB0aGUgcmVzdWx0LiAgKi8KK2ludCAg ICAgYXZyX2V4ZWN1dGVfQVNSXzEwMDEwMTBhYWFhYTAxMDEoQ1BVQVZSU3RhdGUgKmVudiwgRGlz YXNDb250ZXh0ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGF2cl9vcGNvZGVfQVNSXzEwMDEwMTBhYWFhYTAxMDFfdCBjb25zdCAqaW5zdCkKK3sKKyAgICBU Q0d2ICAgIFJkICA9IGNwdV9yW2luc3QtPlJkXTsKKyAgICBUQ0d2ICAgIHQxICA9IHRjZ190ZW1w X25ld19pMzIoKTsKKyAgICBUQ0d2ICAgIHQyICA9IHRjZ190ZW1wX25ld19pMzIoKTsKKworICAg IC8qICBvcCAgKi8KKyAgICB0Y2dfZ2VuX2FuZGlfdGwodDEsICAgICBSZCwgICAgIDB4ODApOyAg ICAgIC8qICB0MSAgPSAoUmQgJiAweDgwKSB8IChSZCA+PiAxKSAgKi8KKyAgICB0Y2dfZ2VuX3No cmlfdGwodDIsICAgICBSZCwgICAgIDEpOworICAgIHRjZ19nZW5fb3JfdGwoICB0MSwgICAgIHQx LCAgICAgdDIpOworCisgICAgLyogIENmICAqLworICAgIHRjZ19nZW5fYW5kaV90bChjcHVfQ2Ys IFJkLCAgICAgMSk7ICAgICAgICAgLyogIENmICA9IFJkKDApICAqLworCisgICAgLyogIFZmICAq LworICAgIHRjZ19nZW5fYW5kX3RsKCBjcHVfVmYsIGNwdV9OZiwgY3B1X0NmKTsvKiAgVmYgID0g TmYgJiBDZiAgKi8KKworICAgIGdlbl9aTlNmKHQxKTsKKworICAgIC8qICBvcCAgKi8KKyAgICB0 Y2dfZ2VuX21vdl90bCggUmQsICAgICB0MSk7CisKKyAgICB0Y2dfdGVtcF9mcmVlX2kzMih0Mik7 CisgICAgdGNnX3RlbXBfZnJlZV9pMzIodDEpOworCisKKyAgICByZXR1cm4gIEJTX05PTkU7Cit9 CisKKworLyogIENsZWFycyBhIHNpbmdsZSBGbGFnIGluIFNSRUcuICAqLworaW50ICAgICBhdnJf ZXhlY3V0ZV9CQ0xSXzEwMDEwMTAwMWFhYTEwMDAoQ1BVQVZSU3RhdGUgKmVudiwgRGlzYXNDb250 ZXh0ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2cl9v cGNvZGVfQkNMUl8xMDAxMDEwMDFhYWExMDAwX3QgY29uc3QgKmluc3QpCit7CisgICAgc3dpdGNo KGluc3QtPkJpdCkgeworICAgICAgICBjYXNlICAgIDB4MDA6ICAgdGNnX2dlbl9tb3ZpX3RsKGNw dV9DZiwgMHgwMCk7ICBicmVhazsKKyAgICAgICAgY2FzZSAgICAweDAxOiAgIHRjZ19nZW5fbW92 aV90bChjcHVfWmYsIDB4MDEpOyAgYnJlYWs7CisgICAgICAgIGNhc2UgICAgMHgwMjogICB0Y2df Z2VuX21vdmlfdGwoY3B1X05mLCAweDAwKTsgIGJyZWFrOworICAgICAgICBjYXNlICAgIDB4MDM6 ICAgdGNnX2dlbl9tb3ZpX3RsKGNwdV9WZiwgMHgwMCk7ICBicmVhazsKKyAgICAgICAgY2FzZSAg ICAweDA0OiAgIHRjZ19nZW5fbW92aV90bChjcHVfU2YsIDB4MDApOyAgYnJlYWs7CisgICAgICAg IGNhc2UgICAgMHgwNTogICB0Y2dfZ2VuX21vdmlfdGwoY3B1X0hmLCAweDAwKTsgIGJyZWFrOwor ICAgICAgICBjYXNlICAgIDB4MDY6ICAgdGNnX2dlbl9tb3ZpX3RsKGNwdV9UZiwgMHgwMCk7ICBi cmVhazsKKyAgICAgICAgY2FzZSAgICAweDA3OiAgIHRjZ19nZW5fbW92aV90bChjcHVfSWYsIDB4 MDApOyAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuICBCU19OT05FOworfQorCisKKy8qICBD b3BpZXMgdGhlIFQgRmxhZyBpbiB0aGUgU1JFRyAoU3RhdHVzIFJlZ2lzdGVyKSB0byBiaXQgYiBp biByZWdpc3RlciBSZC4gICovCitpbnQgICAgIGF2cl9leGVjdXRlX0JMRF8xMTExMTAwYWFhYWEw YmJiKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4LAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBhdnJfb3Bjb2RlX0JMRF8xMTExMTAwYWFhYWEwYmJi X3QgY29uc3QgKmluc3QpCit7CisgICAgVENHdiAgICBSZCAgPSBjcHVfcltpbnN0LT5SZF07Cisg ICAgVENHdiAgICB0MSAgPSB0Y2dfdGVtcF9uZXdfaTMyKCk7CisKKyAgICB0Y2dfZ2VuX3NobGlf dGwodDEsICAgICBjcHVfVGYsIGluc3QtPkJpdCk7CisgICAgdGNnX2dlbl9vcl90bCggIFJkLCAg ICAgUmQsICAgICB0MSk7CisgICAgdGNnX2dlbl9hbmRfdGwoIFJkLCAgICAgUmQsICAgICB0MSk7 CisKKyAgICB0Y2dfdGVtcF9mcmVlX2kzMih0MSk7CisKKyAgICByZXR1cm4gIEJTX05PTkU7Cit9 CisKKworLyogIENvbmRpdGlvbmFsIHJlbGF0aXZlIGJyYW5jaC4gVGVzdHMgYSBzaW5nbGUgYml0 IGluIFNSRUcgYW5kIGJyYW5jaGVzIHJlbGF0aXZlbHkgdG8gUEMgaWYgdGhlIGJpdCBpcyBjbGVh cmVkLiBUaGlzICAqLworLyogIGluc3RydWN0aW9uIGJyYW5jaGVzIHJlbGF0aXZlbHkgdG8gUEMg aW4gZWl0aGVyIGRpcmVjdGlvbiAoUEMgLSA2MyA8PSBkZXN0aW5hdGlvbiA8PSBQQyArIDY0KS4g VGhlIHBhcmFtZXRlciBrIGlzIHRoZSAgKi8KKy8qICBvZmZzZXQgZnJvbSBQQyBhbmQgaXMgcmVw cmVzZW50ZWQgaW4gdHdv4oCZcyBjb21wbGVtZW50IGZvcm0uICAqLworaW50ICAgICBhdnJfZXhl Y3V0ZV9CUkJDXzExMTEwMWFhYWFhYWFiYmIoQ1BVQVZSU3RhdGUgKmVudiwgRGlzYXNDb250ZXh0 ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2cl9vcGNv ZGVfQlJCQ18xMTExMDFhYWFhYWFhYmJiX3QgY29uc3QgKmluc3QpCit7CisgICAgVENHTGFiZWwg ICAqdGFrZW4gICA9IGdlbl9uZXdfbGFiZWwoKTsKKyAgICBpbnQgICAgICAgICBJbW0gICAgID0g c2V4KGluc3QtPkltbSwgNyk7CisKKyAgICBzd2l0Y2goaW5zdC0+Qml0KSB7CisgICAgICAgIGNh c2UgICAgMHgwMDogICB0Y2dfZ2VuX2JyY29uZGlfaTMyKFRDR19DT05EX0VRLCBjcHVfQ2YsIDAs IHRha2VuKTsgYnJlYWs7CisgICAgICAgIGNhc2UgICAgMHgwMTogICB0Y2dfZ2VuX2JyY29uZGlf aTMyKFRDR19DT05EX05FLCBjcHVfWmYsIDAsIHRha2VuKTsgYnJlYWs7CisgICAgICAgIGNhc2Ug ICAgMHgwMjogICB0Y2dfZ2VuX2JyY29uZGlfaTMyKFRDR19DT05EX0VRLCBjcHVfTmYsIDAsIHRh a2VuKTsgYnJlYWs7CisgICAgICAgIGNhc2UgICAgMHgwMzogICB0Y2dfZ2VuX2JyY29uZGlfaTMy KFRDR19DT05EX0VRLCBjcHVfVmYsIDAsIHRha2VuKTsgYnJlYWs7CisgICAgICAgIGNhc2UgICAg MHgwNDogICB0Y2dfZ2VuX2JyY29uZGlfaTMyKFRDR19DT05EX0VRLCBjcHVfU2YsIDAsIHRha2Vu KTsgYnJlYWs7CisgICAgICAgIGNhc2UgICAgMHgwNTogICB0Y2dfZ2VuX2JyY29uZGlfaTMyKFRD R19DT05EX0VRLCBjcHVfSGYsIDAsIHRha2VuKTsgYnJlYWs7CisgICAgICAgIGNhc2UgICAgMHgw NjogICB0Y2dfZ2VuX2JyY29uZGlfaTMyKFRDR19DT05EX0VRLCBjcHVfVGYsIDAsIHRha2VuKTsg YnJlYWs7CisgICAgICAgIGNhc2UgICAgMHgwNzogICB0Y2dfZ2VuX2JyY29uZGlfaTMyKFRDR19D T05EX0VRLCBjcHVfSWYsIDAsIHRha2VuKTsgYnJlYWs7CisgICAgfQorCisgICAgZ2VuX2dvdG9f dGIoZW52LCBjdHgsIDEsIGN0eC0+aW5zdFswXS5ucGMpOworICAgIGdlbl9zZXRfbGFiZWwodGFr ZW4pOworICAgIGdlbl9nb3RvX3RiKGVudiwgY3R4LCAwLCBjdHgtPmluc3RbMF0ubnBjICsgSW1t KTsKKworICAgIHJldHVybiBCU19CUkFOQ0g7Cit9CisKKworLyogIENvbmRpdGlvbmFsIHJlbGF0 aXZlIGJyYW5jaC4gVGVzdHMgYSBzaW5nbGUgYml0IGluIFNSRUcgYW5kIGJyYW5jaGVzIHJlbGF0 aXZlbHkgdG8gUEMgaWYgdGhlIGJpdCBpcyBzZXQuIFRoaXMgICovCisvKiAgaW5zdHJ1Y3Rpb24g YnJhbmNoZXMgcmVsYXRpdmVseSB0byBQQyBpbiBlaXRoZXIgZGlyZWN0aW9uIChQQyAtIDYzIDw9 IGRlc3RpbmF0aW9uIDw9IFBDICsgNjQpLiBUaGUgcGFyYW1ldGVyIGsgaXMgdGhlICAqLworLyog IG9mZnNldCBmcm9tIFBDIGFuZCBpcyByZXByZXNlbnRlZCBpbiB0d2/igJlzIGNvbXBsZW1lbnQg Zm9ybS4gICovCitpbnQgICAgIGF2cl9leGVjdXRlX0JSQlNfMTExMTAwYWFhYWFhYWJiYihDUFVB VlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYXZyX29wY29kZV9CUkJTXzExMTEwMGFhYWFhYWFiYmJfdCBjb25z dCAqaW5zdCkKK3sKKyAgICBUQ0dMYWJlbCAgICp0YWtlbiAgID0gZ2VuX25ld19sYWJlbCgpOwor ICAgIGludCAgICAgICAgIEltbSAgICAgPSBzZXgoaW5zdC0+SW1tLCA3KTsKKworICAgIHN3aXRj aChpbnN0LT5CaXQpIHsKKyAgICAgICAgY2FzZSAgICAweDAwOiAgIHRjZ19nZW5fYnJjb25kaV9p MzIoVENHX0NPTkRfRVEsIGNwdV9DZiwgMSwgdGFrZW4pOyBicmVhazsKKyAgICAgICAgY2FzZSAg ICAweDAxOiAgIHRjZ19nZW5fYnJjb25kaV9pMzIoVENHX0NPTkRfRVEsIGNwdV9aZiwgMCwgdGFr ZW4pOyBicmVhazsKKyAgICAgICAgY2FzZSAgICAweDAyOiAgIHRjZ19nZW5fYnJjb25kaV9pMzIo VENHX0NPTkRfRVEsIGNwdV9OZiwgMSwgdGFrZW4pOyBicmVhazsKKyAgICAgICAgY2FzZSAgICAw eDAzOiAgIHRjZ19nZW5fYnJjb25kaV9pMzIoVENHX0NPTkRfRVEsIGNwdV9WZiwgMSwgdGFrZW4p OyBicmVhazsKKyAgICAgICAgY2FzZSAgICAweDA0OiAgIHRjZ19nZW5fYnJjb25kaV9pMzIoVENH X0NPTkRfRVEsIGNwdV9TZiwgMSwgdGFrZW4pOyBicmVhazsKKyAgICAgICAgY2FzZSAgICAweDA1 OiAgIHRjZ19nZW5fYnJjb25kaV9pMzIoVENHX0NPTkRfRVEsIGNwdV9IZiwgMSwgdGFrZW4pOyBi cmVhazsKKyAgICAgICAgY2FzZSAgICAweDA2OiAgIHRjZ19nZW5fYnJjb25kaV9pMzIoVENHX0NP TkRfRVEsIGNwdV9UZiwgMSwgdGFrZW4pOyBicmVhazsKKyAgICAgICAgY2FzZSAgICAweDA3OiAg IHRjZ19nZW5fYnJjb25kaV9pMzIoVENHX0NPTkRfRVEsIGNwdV9JZiwgMSwgdGFrZW4pOyBicmVh azsKKyAgICB9CisKKyAgICBnZW5fZ290b190YihlbnYsIGN0eCwgMSwgY3R4LT5pbnN0WzBdLm5w Yyk7CisgICAgZ2VuX3NldF9sYWJlbCh0YWtlbik7CisgICAgZ2VuX2dvdG9fdGIoZW52LCBjdHgs IDAsIGN0eC0+aW5zdFswXS5ucGMgKyBJbW0pOworCisgICAgcmV0dXJuIEJTX0JSQU5DSDsKK30K KworCisvKiAgU2V0cyBhIHNpbmdsZSBGbGFnIG9yIGJpdCBpbiBTUkVHLiAgKi8KK2ludCAgICAg YXZyX2V4ZWN1dGVfQlNFVF8xMDAxMDEwMDBhYWExMDAwKENQVUFWUlN0YXRlICplbnYsIERpc2Fz Q29udGV4dCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh dnJfb3Bjb2RlX0JTRVRfMTAwMTAxMDAwYWFhMTAwMF90IGNvbnN0ICppbnN0KQoreworICAgIHN3 aXRjaChpbnN0LT5CaXQpIHsKKyAgICAgICAgY2FzZSAgICAweDAwOiAgIHRjZ19nZW5fbW92aV90 bChjcHVfQ2YsIDB4MDEpOyAgYnJlYWs7CisgICAgICAgIGNhc2UgICAgMHgwMTogICB0Y2dfZ2Vu X21vdmlfdGwoY3B1X1pmLCAweDAwKTsgIGJyZWFrOworICAgICAgICBjYXNlICAgIDB4MDI6ICAg dGNnX2dlbl9tb3ZpX3RsKGNwdV9OZiwgMHgwMSk7ICBicmVhazsKKyAgICAgICAgY2FzZSAgICAw eDAzOiAgIHRjZ19nZW5fbW92aV90bChjcHVfVmYsIDB4MDEpOyAgYnJlYWs7CisgICAgICAgIGNh c2UgICAgMHgwNDogICB0Y2dfZ2VuX21vdmlfdGwoY3B1X1NmLCAweDAxKTsgIGJyZWFrOworICAg ICAgICBjYXNlICAgIDB4MDU6ICAgdGNnX2dlbl9tb3ZpX3RsKGNwdV9IZiwgMHgwMSk7ICBicmVh azsKKyAgICAgICAgY2FzZSAgICAweDA2OiAgIHRjZ19nZW5fbW92aV90bChjcHVfVGYsIDB4MDEp OyAgYnJlYWs7CisgICAgICAgIGNhc2UgICAgMHgwNzogICB0Y2dfZ2VuX21vdmlfdGwoY3B1X0lm LCAweDAxKTsgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiAgQlNfTk9ORTsKK30KKworCisv KiAgVGhlIEJSRUFLIGluc3RydWN0aW9uIGlzIHVzZWQgYnkgdGhlIE9uLWNoaXAgRGVidWcgc3lz dGVtLCBhbmQgaXMgbm9ybWFsbHkgbm90IHVzZWQgaW4gdGhlIGFwcGxpY2F0aW9uICAqLworLyog IHNvZnR3YXJlLiBXaGVuIHRoZSBCUkVBSyBpbnN0cnVjdGlvbiBpcyBleGVjdXRlZCwgdGhlIEFW UiBDUFUgaXMgc2V0IGluIHRoZSBTdG9wcGVkIE1vZGUuIFRoaXMgZ2l2ZXMgdGhlICAqLworLyog IE9uLWNoaXAgRGVidWdnZXIgYWNjZXNzIHRvIGludGVybmFsIHJlc291cmNlcy4gICovCisvKiAg SWYgYW55IExvY2sgYml0cyBhcmUgc2V0LCBvciBlaXRoZXIgdGhlIEpUQUdFTiBvciBPQ0RFTiBG dXNlcyBhcmUgdW5wcm9ncmFtbWVkLCB0aGUgQ1BVIHdpbGwgdHJlYXQgdGhlICAqLworLyogIEJS RUFLIGluc3RydWN0aW9uIGFzIGEgTk9QIGFuZCB3aWxsIG5vdCBlbnRlciB0aGUgU3RvcHBlZCBt b2RlLiAgKi8KKy8qICBUaGlzIGluc3RydWN0aW9uIGlzIG5vdCBhdmFpbGFibGUgaW4gYWxsIGRl dmljZXMuIFJlZmVyIHRvIHRoZSBkZXZpY2Ugc3BlY2lmaWMgaW5zdHJ1Y3Rpb24gc2V0IHN1bW1h cnkuICAqLworaW50ICAgICBhdnJfZXhlY3V0ZV9CUkVBS18xMDAxMDEwMTEwMDExMDAwKENQVUFW UlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBhdnJfb3Bjb2RlX0JSRUFLXzEwMDEwMTAxMTAwMTEwMDBfdCBjb25z dCAqaW5zdCkKK3sKKyAgICBpZiAoYXZyX2ZlYXR1cmUoZW52LCBBVlJfRkVBVFVSRV9CUkVBSykg PT0gZmFsc2UpIHsKKyAgICAgICAgZ2VuX2hlbHBlcl91bnN1cHBvcnRlZChjcHVfZW52KTsKKwor ICAgICAgICByZXR1cm4gQlNfRVhDUDsKKyAgICB9CisKKyAgICAvKiAgVE9ETzogICA/Pz8gICov CisgICAgcmV0dXJuICBCU19OT05FOworfQorCisKKy8qICBTdG9yZXMgYml0IGIgZnJvbSBSZCB0 byB0aGUgVCBGbGFnIGluIFNSRUcgKFN0YXR1cyBSZWdpc3RlcikuICAqLworaW50ICAgICBhdnJf ZXhlY3V0ZV9CU1RfMTExMTEwMWFhYWFhMGJiYihDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRl eHQgKmN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZyX29w Y29kZV9CU1RfMTExMTEwMWFhYWFhMGJiYl90IGNvbnN0ICppbnN0KQoreworICAgIFRDR3YgICAg UmQgID0gY3B1X3JbaW5zdC0+UmRdOworCisgICAgdGNnX2dlbl9hbmRpX3RsKGNwdV9UZiwgUmQs ICAgICAxIDw8IGluc3QtPkJpdCk7CisgICAgdGNnX2dlbl9zaHJpX3RsKGNwdV9UZiwgY3B1X1Rm LCBpbnN0LT5CaXQpOworCisgICAgcmV0dXJuICBCU19OT05FOworfQorCisKKy8qICBDYWxscyB0 byBhIHN1YnJvdXRpbmUgd2l0aGluIHRoZSBlbnRpcmUgUHJvZ3JhbSBtZW1vcnkuIFRoZSByZXR1 cm4gYWRkcmVzcyAodG8gdGhlIGluc3RydWN0aW9uIGFmdGVyIHRoZSBDQUxMKSAgKi8KKy8qICB3 aWxsIGJlIHN0b3JlZCBvbnRvIHRoZSBTdGFjay4gKFNlZSBhbHNvIFJDQUxMKS4gVGhlIFN0YWNr IFBvaW50ZXIgdXNlcyBhIHBvc3QtZGVjcmVtZW50IHNjaGVtZSBkdXJpbmcgICovCisvKiAgQ0FM TC4gICovCisvKiAgVGhpcyBpbnN0cnVjdGlvbiBpcyBub3QgYXZhaWxhYmxlIGluIGFsbCBkZXZp Y2VzLiBSZWZlciB0byB0aGUgZGV2aWNlIHNwZWNpZmljIGluc3RydWN0aW9uIHNldCBzdW1tYXJ5 LiAgKi8KK2ludCAgICAgYXZyX2V4ZWN1dGVfQ0FMTF8xMDAxMDEwYWFhYWExMTFiYmJiYmJiYmJi YmJiYmJiYihDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZyX29wY29kZV9DQUxMXzEwMDEwMTBhYWFh YTExMWJiYmJiYmJiYmJiYmJiYmJiX3QgY29uc3QgKmluc3QpCit7CisgICAgaWYgKGF2cl9mZWF0 dXJlKGVudiwgQVZSX0ZFQVRVUkVfSk1QX0NBTEwpID09IGZhbHNlKSB7CisgICAgICAgIGdlbl9o ZWxwZXJfdW5zdXBwb3J0ZWQoY3B1X2Vudik7CisKKyAgICAgICAgcmV0dXJuIEJTX0VYQ1A7Cisg ICAgfQorCisgICAgaW50ICAgICBJbW0gPSAoaW5zdC0+aEltbSA8PCAxNykgfCBpbnN0LT5sSW1t OworICAgIGludCAgICAgcmV0ID0gY3R4LT5pbnN0WzBdLm5wYzsKKworICAgIGdlbl9wdXNoX3Jl dChlbnYsIHJldCk7CisKKyAgICBnZW5fZ290b190YihlbnYsIGN0eCwgMCwgSW1tKTsKKworICAg IHJldHVybiAgQlNfQlJBTkNIOworfQorCisKKy8qICBDbGVhcnMgYSBzcGVjaWZpZWQgYml0IGlu IGFuIEkvTyBSZWdpc3Rlci4gVGhpcyBpbnN0cnVjdGlvbiBvcGVyYXRlcyBvbiB0aGUgbG93ZXIg MzIgSS9PIFJlZ2lzdGVycyDigJMgYWRkcmVzc2VzIDAtMzEuICAqLworaW50ICAgICBhdnJfZXhl Y3V0ZV9DQklfMTAwMTEwMDBhYWFhYWJiYihDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQg KmN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZyX29wY29k ZV9DQklfMTAwMTEwMDBhYWFhYWJiYl90IGNvbnN0ICppbnN0KQoreworICAgIFRDR3YgICAgZGF0 YT0gY3B1X2lvW2luc3QtPkltbV07CisgICAgVENHdiAgICBwb3J0PSB0Y2dfY29uc3RfaTMyKGlu c3QtPkltbSk7CisKKyAgICB0Y2dfZ2VuX2FuZGlfdGwoZGF0YSwgICBkYXRhLCAgIH4oMSA8PCBp bnN0LT5CaXQpKTsKKyAgICBnZW5faGVscGVyX291dGIoY3B1X2Vudixwb3J0LCAgIGRhdGEpOwor CisgICAgcmV0dXJuICBCU19OT05FOworfQorCisKKy8qICBDbGVhcnMgdGhlIHNwZWNpZmllZCBi aXRzIGluIHJlZ2lzdGVyIFJkLiBQZXJmb3JtcyB0aGUgbG9naWNhbCBBTkQgYmV0d2VlbiB0aGUg Y29udGVudHMgb2YgcmVnaXN0ZXIgUmQgYW5kIHRoZSAgKi8KKy8qICBjb21wbGVtZW50IG9mIHRo ZSBjb25zdGFudCBtYXNrIEsuIFRoZSByZXN1bHQgd2lsbCBiZSBwbGFjZWQgaW4gcmVnaXN0ZXIg UmQuICAqLworaW50ICAgICBhdnJfZXhlY3V0ZV9DT01fMTAwMTAxMGFhYWFhMDAwMChDUFVBVlJT dGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYXZyX29wY29kZV9DT01fMTAwMTAxMGFhYWFhMDAwMF90IGNvbnN0ICpp bnN0KQoreworICAgIFRDR3YgICAgUmQgID0gY3B1X3JbaW5zdC0+UmRdOworICAgIFRDR3YgICAg UiAgID0gdGNnX3RlbXBfbmV3X2kzMigpOworCisgICAgdGNnX2dlbl9tb3ZpX3RsKFIsICAgICAg MHhmZik7CisgICAgdGNnX2dlbl9zdWJfdGwoIFJkLCAgICAgUiwgICAgICBSZCk7CisKKyAgICB0 Y2dfZ2VuX21vdmlfdGwoY3B1X0NmLCAxKTsgICAgICAgICAvKiAgQ2YgID0gMSAgKi8KKyAgICB0 Y2dfZ2VuX21vdmlfdGwoY3B1X1ZmLCAwKTsgICAgICAgICAvKiAgVmYgID0gMCAgKi8KKyAgICBn ZW5fWk5TZihSZCk7CisKKyAgICB0Y2dfdGVtcF9mcmVlX2kzMihSKTsKKworICAgIHJldHVybiAg QlNfTk9ORTsKK30KKworCisvKiAgVGhpcyBpbnN0cnVjdGlvbiBwZXJmb3JtcyBhIGNvbXBhcmUg YmV0d2VlbiB0d28gcmVnaXN0ZXJzIFJkIGFuZCBSci4gTm9uZSBvZiB0aGUgcmVnaXN0ZXJzIGFy ZSBjaGFuZ2VkLiBBbGwgICovCisvKiAgY29uZGl0aW9uYWwgYnJhbmNoZXMgY2FuIGJlIHVzZWQg YWZ0ZXIgdGhpcyBpbnN0cnVjdGlvbi4gICovCitpbnQgICAgIGF2cl9leGVjdXRlX0NQXzAwMDEw MWFiYmJiYmNjY2MoQ1BVQVZSU3RhdGUgKmVudiwgRGlzYXNDb250ZXh0ICpjdHgsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2cl9vcGNvZGVfQ1BfMDAwMTAxYWJi YmJiY2NjY190IGNvbnN0ICppbnN0KQoreworICAgIFRDR3YgICAgUmQgID0gY3B1X3JbaW5zdC0+ UmRdOworICAgIFRDR3YgICAgUnIgID0gY3B1X3JbKGluc3QtPmhSciA8PCA0KSB8IChpbnN0LT5s UnIpXTsKKyAgICBUQ0d2ICAgIFIgICA9IHRjZ190ZW1wX25ld19pMzIoKTsKKworICAgIC8qICBv cCAgKi8KKyAgICB0Y2dfZ2VuX3N1Yl90bCggUiwgICAgICBSZCwgICAgIFJyKTsgICAgLyogIFIg ID0gUmQgLSBSciAgKi8KKyAgICB0Y2dfZ2VuX2FuZGlfdGwoUiwgICAgICBSLCAgICAgIDB4ZmYp OyAgLyogIG1ha2UgaXQgOCBiaXRzICAqLworCisgICAgZ2VuX3N1Yl9DSGYoICAgIFIsICAgICAg UmQsICAgICBScik7CisgICAgZ2VuX3N1Yl9WZiggICAgIFIsICAgICAgUmQsICAgICBScik7Cisg ICAgZ2VuX1pOU2YoUik7CisKKyAgICB0Y2dfdGVtcF9mcmVlX2kzMihSKTsKKworICAgIHJldHVy biAgQlNfTk9ORTsKK30KKworCisvKiAgVGhpcyBpbnN0cnVjdGlvbiBwZXJmb3JtcyBhIGNvbXBh cmUgYmV0d2VlbiB0d28gcmVnaXN0ZXJzIFJkIGFuZCBSciBhbmQgYWxzbyB0YWtlcyBpbnRvIGFj Y291bnQgdGhlIHByZXZpb3VzICAqLworLyogIGNhcnJ5LiBOb25lIG9mIHRoZSByZWdpc3RlcnMg YXJlIGNoYW5nZWQuIEFsbCBjb25kaXRpb25hbCBicmFuY2hlcyBjYW4gYmUgdXNlZCBhZnRlciB0 aGlzIGluc3RydWN0aW9uLiAgKi8KK2ludCAgICAgYXZyX2V4ZWN1dGVfQ1BDXzAwMDAwMWFiYmJi YmNjY2MoQ1BVQVZSU3RhdGUgKmVudiwgRGlzYXNDb250ZXh0ICpjdHgsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2cl9vcGNvZGVfQ1BDXzAwMDAwMWFiYmJiYmNj Y2NfdCBjb25zdCAqaW5zdCkKK3sKKyAgICBUQ0d2ICAgIFJkICA9IGNwdV9yW2luc3QtPlJkXTsK KyAgICBUQ0d2ICAgIFJyICA9IGNwdV9yWyhpbnN0LT5oUnIgPDwgNCkgfCAoaW5zdC0+bFJyKV07 CisgICAgVENHdiAgICBSICAgPSB0Y2dfdGVtcF9uZXdfaTMyKCk7CisKKyAgICAvKiAgb3AgICov CisgICAgdGNnX2dlbl9zdWJfdGwoIFIsICAgICAgUmQsICAgICBScik7ICAgIC8qICBSICA9IFJk IC0gUnIgLSBDZiAgKi8KKyAgICB0Y2dfZ2VuX3N1Yl90bCggUiwgICAgICBSLCAgICAgIGNwdV9D Zik7CisgICAgdGNnX2dlbl9hbmRpX3RsKFIsICAgICAgUiwgICAgICAweGZmKTsgIC8qICBtYWtl IGl0IDggYml0cyAgKi8KKworICAgIGdlbl9zdWJfQ0hmKCAgICBSLCAgICAgIFJkLCAgICAgUnIp OworICAgIGdlbl9zdWJfVmYoICAgICBSLCAgICAgIFJkLCAgICAgUnIpOworICAgIGdlbl9aTlNm KFIpOworCisgICAgdGNnX3RlbXBfZnJlZV9pMzIoUik7CisKKyAgICByZXR1cm4gIEJTX05PTkU7 Cit9CisKKworLyogIFRoaXMgaW5zdHJ1Y3Rpb24gcGVyZm9ybXMgYSBjb21wYXJlIGJldHdlZW4g cmVnaXN0ZXIgUmQgYW5kIGEgY29uc3RhbnQuIFRoZSByZWdpc3RlciBpcyBub3QgY2hhbmdlZC4g QWxsICAqLworLyogIGNvbmRpdGlvbmFsIGJyYW5jaGVzIGNhbiBiZSB1c2VkIGFmdGVyIHRoaXMg aW5zdHJ1Y3Rpb24uICAqLworaW50ICAgICBhdnJfZXhlY3V0ZV9DUElfMDAxMWFhYWFiYmJiY2Nj YyhDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYXZyX29wY29kZV9DUElfMDAxMWFhYWFiYmJiY2NjY190 IGNvbnN0ICppbnN0KQoreworICAgIFRDR3YgICAgUmQgID0gY3B1X3JbaW5zdC0+UmRdOworICAg IGludCAgICAgSW1tID0gKGluc3QtPmhJbW0gPDwgNCkgfCBpbnN0LT5sSW1tOworICAgIFRDR3Yg ICAgUnIgID0gdGNnX2NvbnN0X2kzMihJbW0pOworICAgIFRDR3YgICAgUiAgID0gdGNnX3RlbXBf bmV3X2kzMigpOworCisgICAgLyogIG9wICAqLworICAgIHRjZ19nZW5fc3ViX3RsKCBSLCAgICAg IFJkLCAgICAgUnIpOyAgICAvKiAgUiAgPSBSZCAtIFJyICAqLworICAgIHRjZ19nZW5fYW5kaV90 bChSLCAgICAgIFIsICAgICAgMHhmZik7ICAvKiAgbWFrZSBpdCA4IGJpdHMgICovCisKKyAgICBn ZW5fc3ViX0NIZiggICAgUiwgICAgICBSZCwgICAgIFJyKTsKKyAgICBnZW5fc3ViX1ZmKCAgICAg UiwgICAgICBSZCwgICAgIFJyKTsKKyAgICBnZW5fWk5TZihSKTsKKworICAgIHRjZ190ZW1wX2Zy ZWVfaTMyKFIpOworCisgICAgcmV0dXJuICBCU19OT05FOworfQorCisKKy8qICBUaGlzIGluc3Ry dWN0aW9uIHBlcmZvcm1zIGEgY29tcGFyZSBiZXR3ZWVuIHR3byByZWdpc3RlcnMgUmQgYW5kIFJy LCBhbmQgc2tpcHMgdGhlIG5leHQgaW5zdHJ1Y3Rpb24gaWYgUmQgPSBSci4gICovCitpbnQgICAg IGF2cl9leGVjdXRlX0NQU0VfMDAwMTAwYWJiYmJiY2NjYyhDUFVBVlJTdGF0ZSAqZW52LCBEaXNh c0NvbnRleHQgKmN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YXZyX29wY29kZV9DUFNFXzAwMDEwMGFiYmJiYmNjY2NfdCBjb25zdCAqaW5zdCkKK3sKKyAgICBU Q0d2ICAgICAgICBSZCAgPSBjcHVfcltpbnN0LT5SZF07CisgICAgVENHdiAgICAgICAgUnIgID0g Y3B1X3JbKGluc3QtPmhSciA8PCA0KSB8IChpbnN0LT5sUnIpXTsKKyAgICBUQ0dMYWJlbCAgICpz a2lwPSBnZW5fbmV3X2xhYmVsKCk7CisKKyAgICB0Y2dfZ2VuX21vdmlfdGwoICAgIGNwdV9wYywg Y3R4LT5pbnN0WzFdLm5wYyk7ICAgICAgLyogIFBDIGlmIG5leHQgaW5zdCBpcyBza2lwcGVkICAq LworICAgIHRjZ19nZW5fYnJjb25kX2kzMiggVENHX0NPTkRfRVEsIFJkLCBSciwgc2tpcCk7Cisg ICAgdGNnX2dlbl9tb3ZpX3RsKCAgICBjcHVfcGMsIGN0eC0+aW5zdFswXS5ucGMpOyAgICAgIC8q ICBQQyBpZiBuZXh0IGluc3QgaXMgbm90IHNraXBwZWQgICovCisgICAgZ2VuX3NldF9sYWJlbChz a2lwKTsKKworICAgIHJldHVybiAgQlNfQlJBTkNIOworfQorCisKKy8qICBTdWJ0cmFjdHMgb25l IC0xLSBmcm9tIHRoZSBjb250ZW50cyBvZiByZWdpc3RlciBSZCBhbmQgcGxhY2VzIHRoZSByZXN1 bHQgaW4gdGhlIGRlc3RpbmF0aW9uIHJlZ2lzdGVyIFJkLiAgKi8KKy8qICBUaGUgQyBGbGFnIGlu IFNSRUcgaXMgbm90IGFmZmVjdGVkIGJ5IHRoZSBvcGVyYXRpb24sIHRodXMgYWxsb3dpbmcgdGhl IERFQyBpbnN0cnVjdGlvbiB0byBiZSB1c2VkIG9uIGEgbG9vcCAgKi8KKy8qICBjb3VudGVyIGlu IG11bHRpcGxlLXByZWNpc2lvbiBjb21wdXRhdGlvbnMuICAqLworLyogIFdoZW4gb3BlcmF0aW5n IG9uIHVuc2lnbmVkIHZhbHVlcywgb25seSBCUkVRIGFuZCBCUk5FIGJyYW5jaGVzIGNhbiBiZSBl eHBlY3RlZCB0byBwZXJmb3JtIGNvbnNpc3RlbnRseS4gICovCisvKiAgV2hlbiBvcGVyYXRpbmcg b24gdHdv4oCZcyBjb21wbGVtZW50IHZhbHVlcywgYWxsIHNpZ25lZCBicmFuY2hlcyBhcmUgYXZh aWxhYmxlLiAgKi8KK2ludCAgICAgYXZyX2V4ZWN1dGVfREVDXzEwMDEwMTBhYWFhYTEwMTAoQ1BV QVZSU3RhdGUgKmVudiwgRGlzYXNDb250ZXh0ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGF2cl9vcGNvZGVfREVDXzEwMDEwMTBhYWFhYTEwMTBfdCBjb25z dCAqaW5zdCkKK3sKKyAgICBUQ0d2ICAgICAgICBSZCAgPSBjcHVfcltpbnN0LT5SZF07CisKKyAg ICB0Y2dfZ2VuX3N1YmlfdGwoUmQsICAgICBSZCwgICAgIDEpOyAgICAgLyogIFJkICA9IFJkIC0g MSAgKi8KKyAgICB0Y2dfZ2VuX2FuZGlfdGwoUmQsICAgICBSZCwgICAgIDB4ZmYpOyAgLyogIG1h a2UgaXQgOCBiaXRzICAqLworCisgICAgdGNnX2dlbl9zZXRjb25kaV90bCggICAgVENHX0NPTkRf RVEsICAgIGNwdV9WZiwgICAgIFJkLCAgICAgMHg3Zik7ICAvKiBjcHVfVmYgICA9IFJkID09IDB4 N2YgICovCisgICAgZ2VuX1pOU2YoUmQpOworCisgICAgcmV0dXJuICBCU19OT05FOworfQorCitp bnQgICAgIGF2cl9leGVjdXRlX0RFU18xMDAxMDEwMGFhYWExMDExKENQVUFWUlN0YXRlICplbnYs IERpc2FzQ29udGV4dCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBhdnJfb3Bjb2RlX0RFU18xMDAxMDEwMGFhYWExMDExX3QgY29uc3QgKmluc3QpCit7Cisg ICAgLyogIFRPRE86ICAqLworICAgIGlmIChhdnJfZmVhdHVyZShlbnYsIEFWUl9GRUFUVVJFX0RF UykgPT0gZmFsc2UpIHsKKyAgICAgICAgZ2VuX2hlbHBlcl91bnN1cHBvcnRlZChjcHVfZW52KTsK KworICAgICAgICByZXR1cm4gQlNfRVhDUDsKKyAgICB9CisKKworICAgIHJldHVybiAgQlNfTk9O RTsKK30KKworLyogIEluZGlyZWN0IGNhbGwgb2YgYSBzdWJyb3V0aW5lIHBvaW50ZWQgdG8gYnkg dGhlIFogKDE2IGJpdHMpIFBvaW50ZXIgUmVnaXN0ZXIgaW4gdGhlIFJlZ2lzdGVyIEZpbGUgYW5k IHRoZSBFSU5EICAqLworLyogIFJlZ2lzdGVyIGluIHRoZSBJL08gc3BhY2UuIFRoaXMgaW5zdHJ1 Y3Rpb24gYWxsb3dzIGZvciBpbmRpcmVjdCBjYWxscyB0byB0aGUgZW50aXJlIDRNICh3b3Jkcykg UHJvZ3JhbSBtZW1vcnkgICovCisvKiAgc3BhY2UuIFNlZSBhbHNvIElDQUxMLiBUaGUgU3RhY2sg UG9pbnRlciB1c2VzIGEgcG9zdC1kZWNyZW1lbnQgc2NoZW1lIGR1cmluZyBFSUNBTEwuICAqLwor LyogIFRoaXMgaW5zdHJ1Y3Rpb24gaXMgbm90IGF2YWlsYWJsZSBpbiBhbGwgZGV2aWNlcy4gUmVm ZXIgdG8gdGhlIGRldmljZSBzcGVjaWZpYyBpbnN0cnVjdGlvbiBzZXQgc3VtbWFyeS4gICovCitp bnQgICAgIGF2cl9leGVjdXRlX0VJQ0FMTF8xMDAxMDEwMTAwMDExMDAxKENQVUFWUlN0YXRlICpl bnYsIERpc2FzQ29udGV4dCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBhdnJfb3Bjb2RlX0VJQ0FMTF8xMDAxMDEwMTAwMDExMDAxX3QgY29uc3QgKmluc3Qp Cit7CisgICAgaWYgKGF2cl9mZWF0dXJlKGVudiwgQVZSX0ZFQVRVUkVfRUlKTVBfRUlDQUxMKSA9 PSBmYWxzZSkgeworICAgICAgICBnZW5faGVscGVyX3Vuc3VwcG9ydGVkKGNwdV9lbnYpOworCisg ICAgICAgIHJldHVybiBCU19FWENQOworICAgIH0KKworICAgIGludCByZXQgPSBjdHgtPmluc3Rb MF0ubnBjOworCisgICAgZ2VuX3B1c2hfcmV0KGVudiwgcmV0KTsKKworICAgIGdlbl9qbXBfZXoo KTsKKworICAgIHJldHVybiBCU19CUkFOQ0g7Cit9CisKKworLyogIEluZGlyZWN0IGp1bXAgdG8g dGhlIGFkZHJlc3MgcG9pbnRlZCB0byBieSB0aGUgWiAoMTYgYml0cykgUG9pbnRlciBSZWdpc3Rl ciBpbiB0aGUgUmVnaXN0ZXIgRmlsZSBhbmQgdGhlIEVJTkQgICovCisvKiAgUmVnaXN0ZXIgaW4g dGhlIEkvTyBzcGFjZS4gVGhpcyBpbnN0cnVjdGlvbiBhbGxvd3MgZm9yIGluZGlyZWN0IGp1bXBz IHRvIHRoZSBlbnRpcmUgNE0gKHdvcmRzKSBQcm9ncmFtIG1lbW9yeSAgKi8KKy8qICBzcGFjZS4g U2VlIGFsc28gSUpNUC4gICovCisvKiAgVGhpcyBpbnN0cnVjdGlvbiBpcyBub3QgYXZhaWxhYmxl IGluIGFsbCBkZXZpY2VzLiBSZWZlciB0byB0aGUgZGV2aWNlIHNwZWNpZmljIGluc3RydWN0aW9u IHNldCBzdW1tYXJ5LiAgKi8KK2ludCAgICAgYXZyX2V4ZWN1dGVfRUlKTVBfMTAwMTAxMDAwMDAx MTAwMShDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZyX29wY29kZV9FSUpNUF8xMDAxMDEwMDAwMDEx MDAxX3QgY29uc3QgKmluc3QpCit7CisgICAgaWYgKGF2cl9mZWF0dXJlKGVudiwgQVZSX0ZFQVRV UkVfRUlKTVBfRUlDQUxMKSA9PSBmYWxzZSkgeworICAgICAgICBnZW5faGVscGVyX3Vuc3VwcG9y dGVkKGNwdV9lbnYpOworCisgICAgICAgIHJldHVybiBCU19FWENQOworICAgIH0KKworICAgIGdl bl9qbXBfZXooKTsKKworICAgIHJldHVybiBCU19CUkFOQ0g7Cit9CisKKworLyogIExvYWRzIG9u ZSBieXRlIHBvaW50ZWQgdG8gYnkgdGhlIFotcmVnaXN0ZXIgYW5kIHRoZSBSQU1QWiBSZWdpc3Rl ciBpbiB0aGUgSS9PIHNwYWNlLCBhbmQgcGxhY2VzIHRoaXMgYnl0ZSBpbiAgKi8KKy8qICB0aGUg ZGVzdGluYXRpb24gcmVnaXN0ZXIgUmQuIFRoaXMgaW5zdHJ1Y3Rpb24gZmVhdHVyZXMgYSAxMDAl IHNwYWNlIGVmZmVjdGl2ZSBjb25zdGFudCBpbml0aWFsaXphdGlvbiBvciBjb25zdGFudCAgKi8K Ky8qICBkYXRhIGZldGNoLiBUaGUgUHJvZ3JhbSBtZW1vcnkgaXMgb3JnYW5pemVkIGluIDE2LWJp dCB3b3JkcyB3aGlsZSB0aGUgWi1wb2ludGVyIGlzIGEgYnl0ZSBhZGRyZXNzLiBUaHVzLCB0aGUg ICovCisvKiAgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IG9mIHRoZSBaLXBvaW50ZXIgc2VsZWN0cyBl aXRoZXIgbG93IGJ5dGUgKFpMU0IgPSAwKSBvciBoaWdoIGJ5dGUgKFpMU0IgPSAxKS4gVGhpcyBp bnN0cnVjdGlvbiBjYW4gICovCisvKiAgYWRkcmVzcyB0aGUgZW50aXJlIFByb2dyYW0gbWVtb3J5 IHNwYWNlLiBUaGUgWi1wb2ludGVyIFJlZ2lzdGVyIGNhbiBlaXRoZXIgYmUgbGVmdCB1bmNoYW5n ZWQgYnkgdGhlICAqLworLyogIG9wZXJhdGlvbiwgb3IgaXQgY2FuIGJlIGluY3JlbWVudGVkLiBU aGUgaW5jcmVtZW50YXRpb24gYXBwbGllcyB0byB0aGUgZW50aXJlIDI0LWJpdCBjb25jYXRlbmF0 aW9uIG9mIHRoZSBSQU1QWiAgKi8KKy8qICBhbmQgWi1wb2ludGVyIFJlZ2lzdGVycy4gICovCisv KiAgRGV2aWNlcyB3aXRoIFNlbGYtUHJvZ3JhbW1pbmcgY2FwYWJpbGl0eSBjYW4gdXNlIHRoZSBF TFBNIGluc3RydWN0aW9uIHRvIHJlYWQgdGhlIEZ1c2UgYW5kIExvY2sgYml0IHZhbHVlLiAgKi8K Ky8qICBSZWZlciB0byB0aGUgZGV2aWNlIGRvY3VtZW50YXRpb24gZm9yIGEgZGV0YWlsZWQgZGVz Y3JpcHRpb24uICAqLworLyogIFRoaXMgaW5zdHJ1Y3Rpb24gaXMgbm90IGF2YWlsYWJsZSBpbiBh bGwgZGV2aWNlcy4gUmVmZXIgdG8gdGhlIGRldmljZSBzcGVjaWZpYyBpbnN0cnVjdGlvbiBzZXQg c3VtbWFyeS4gICovCitpbnQgICAgIGF2cl9leGVjdXRlX0VMUE0xXzEwMDEwMTAxMTEwMTEwMDAo Q1BVQVZSU3RhdGUgKmVudiwgRGlzYXNDb250ZXh0ICpjdHgsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGF2cl9vcGNvZGVfRUxQTTFfMTAwMTAxMDExMTAxMTAwMF90 IGNvbnN0ICppbnN0KQoreworICAgIGlmIChhdnJfZmVhdHVyZShlbnYsIEFWUl9GRUFUVVJFX0VM UE0pID09IGZhbHNlKSB7CisgICAgICAgIGdlbl9oZWxwZXJfdW5zdXBwb3J0ZWQoY3B1X2Vudik7 CisKKyAgICAgICAgcmV0dXJuIEJTX0VYQ1A7CisgICAgfQorCisgICAgVENHdiAgICBSZCAgPSBj cHVfclswXTsKKyAgICBUQ0d2ICAgIGFkZHI9IHRjZ190ZW1wX25ld19pMzIoKTsKKyAgICBUQ0d2 ICAgIEggICA9IGNwdV9yYW1wWjsKKyAgICBUQ0d2ICAgIE0gICA9IGNwdV9yWzMxXTsKKyAgICBU Q0d2ICAgIEwgICA9IGNwdV9yWzMwXTsKKworICAgIHRjZ19nZW5fbW92X3RsKCBhZGRyLCAgIEgp OyAgICAgICAgICAgICAgICAgICAgIC8qICBhZGRyICAgID0gcmFtcFo6cjMxOnIzMCAgKi8KKyAg ICB0Y2dfZ2VuX3NobGlfdGwoYWRkciwgICBhZGRyLCAgIDgpOworICAgIHRjZ19nZW5fb3JfdGwo ICBhZGRyLCAgIGFkZHIsICAgTSk7CisgICAgdGNnX2dlbl9zaGxpX3RsKGFkZHIsICAgYWRkciwg ICA4KTsKKyAgICB0Y2dfZ2VuX29yX3RsKCAgYWRkciwgICBhZGRyLCAgIEwpOworCisgICAgdGNn X2dlbl9xZW11X2xkOHUoUmQsICAgYWRkciwgICBDT0RFX0lOREVYKTsgICAgLyogIFJkICAgICAg PSBtZW1bYWRkcl0gICovCisKKyAgICB0Y2dfdGVtcF9mcmVlX2kzMihhZGRyKTsKKworICAgIHJl dHVybiAgQlNfTk9ORTsKK30KKworaW50ICAgICBhdnJfZXhlY3V0ZV9FTFBNMl8xMDAxMDAwYWFh YWEwMTEwKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdnJfb3Bjb2RlX0VMUE0yXzEwMDEwMDBhYWFh YTAxMTBfdCBjb25zdCAqaW5zdCkKK3sKKyAgICBpZiAoYXZyX2ZlYXR1cmUoZW52LCBBVlJfRkVB VFVSRV9FTFBNKSA9PSBmYWxzZSkgeworICAgICAgICBnZW5faGVscGVyX3Vuc3VwcG9ydGVkKGNw dV9lbnYpOworCisgICAgICAgIHJldHVybiBCU19FWENQOworICAgIH0KKworICAgIFRDR3YgICAg UmQgID0gY3B1X3JbaW5zdC0+UmRdOworICAgIFRDR3YgICAgYWRkcj0gdGNnX3RlbXBfbmV3X2kz MigpOworICAgIFRDR3YgICAgSCAgID0gY3B1X3JhbXBaOworICAgIFRDR3YgICAgTSAgID0gY3B1 X3JbMzFdOworICAgIFRDR3YgICAgTCAgID0gY3B1X3JbMzBdOworCisgICAgdGNnX2dlbl9tb3Zf dGwoIGFkZHIsICAgSCk7ICAgICAgICAgICAgICAgICAgICAgLyogIGFkZHIgICAgPSByYW1wWjpy MzE6cjMwICAqLworICAgIHRjZ19nZW5fc2hsaV90bChhZGRyLCAgIGFkZHIsICAgOCk7CisgICAg dGNnX2dlbl9vcl90bCggIGFkZHIsICAgYWRkciwgICBNKTsKKyAgICB0Y2dfZ2VuX3NobGlfdGwo YWRkciwgICBhZGRyLCAgIDgpOworICAgIHRjZ19nZW5fb3JfdGwoICBhZGRyLCAgIGFkZHIsICAg TCk7CisKKyAgICB0Y2dfZ2VuX3FlbXVfbGQ4dShSZCwgICBhZGRyLCAgIENPREVfSU5ERVgpOyAg ICAvKiAgUmQgICAgICA9IG1lbVthZGRyXSAgKi8KKworICAgIHRjZ190ZW1wX2ZyZWVfaTMyKGFk ZHIpOworCisgICAgcmV0dXJuICBCU19OT05FOworfQorCitpbnQgICAgIGF2cl9leGVjdXRlX0VM UE1YXzEwMDEwMDBhYWFhYTAxMTEoQ1BVQVZSU3RhdGUgKmVudiwgRGlzYXNDb250ZXh0ICpjdHgs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2cl9vcGNvZGVfRUxQ TVhfMTAwMTAwMGFhYWFhMDExMV90IGNvbnN0ICppbnN0KQoreworICAgIGlmIChhdnJfZmVhdHVy ZShlbnYsIEFWUl9GRUFUVVJFX0VMUE1YKSA9PSBmYWxzZSkgeworICAgICAgICBnZW5faGVscGVy X3Vuc3VwcG9ydGVkKGNwdV9lbnYpOworCisgICAgICAgIHJldHVybiBCU19FWENQOworICAgIH0K KworICAgIFRDR3YgICAgUmQgID0gY3B1X3JbaW5zdC0+UmRdOworICAgIFRDR3YgICAgYWRkcj0g dGNnX3RlbXBfbmV3X2kzMigpOworICAgIFRDR3YgICAgSCAgID0gY3B1X3JhbXBaOworICAgIFRD R3YgICAgTSAgID0gY3B1X3JbMzFdOworICAgIFRDR3YgICAgTCAgID0gY3B1X3JbMzBdOworCisK KyAgICB0Y2dfZ2VuX21vdl90bCggYWRkciwgICBIKTsgICAgICAgICAgICAgICAgICAgICAvKiAg YWRkciAgICA9IHJhbXBaOnIzMTpyMzAgICovCisgICAgdGNnX2dlbl9zaGxpX3RsKGFkZHIsICAg YWRkciwgICA4KTsKKyAgICB0Y2dfZ2VuX29yX3RsKCAgYWRkciwgICBhZGRyLCAgIE0pOworICAg IHRjZ19nZW5fc2hsaV90bChhZGRyLCAgIGFkZHIsICAgOCk7CisgICAgdGNnX2dlbl9vcl90bCgg IGFkZHIsICAgYWRkciwgICBMKTsKKworICAgIHRjZ19nZW5fcWVtdV9sZDh1KFJkLCAgIGFkZHIs ICAgQ09ERV9JTkRFWCk7ICAgIC8qICBSZCAgICAgID0gbWVtW2FkZHJdICAqLworCisgICAgdGNn X2dlbl9hZGRpX3RsKGFkZHIsICAgYWRkciwgICAxKTsgICAgICAgICAgICAgLyogIGFkZHIgICAg PSBhZGRyICsgMSAgKi8KKworICAgIHRjZ19nZW5fYW5kaV90bChMLCAgICAgIGFkZHIsICAgMHhm Zik7CisKKyAgICB0Y2dfZ2VuX3NocmlfdGwoYWRkciwgICBhZGRyLCAgIDgpOworICAgIHRjZ19n ZW5fYW5kaV90bChNLCAgICAgIGFkZHIsICAgMHhmZik7CisKKyAgICB0Y2dfZ2VuX3NocmlfdGwo YWRkciwgICBhZGRyLCAgIDgpOworICAgIHRjZ19nZW5fYW5kaV90bChILCAgICAgIGFkZHIsICAg MHhmZik7CisKKyAgICB0Y2dfdGVtcF9mcmVlX2kzMihhZGRyKTsKKworICAgIHJldHVybiAgQlNf Tk9ORTsKK30KKworCisvKiAgUGVyZm9ybXMgdGhlIGxvZ2ljYWwgRU9SIGJldHdlZW4gdGhlIGNv bnRlbnRzIG9mIHJlZ2lzdGVyIFJkIGFuZCByZWdpc3RlciBSciBhbmQgcGxhY2VzIHRoZSByZXN1 bHQgaW4gdGhlICAqLworLyogIGRlc3RpbmF0aW9uIHJlZ2lzdGVyIFJkLiAgKi8KK2ludCAgICAg YXZyX2V4ZWN1dGVfRU9SXzAwMTAwMWFiYmJiYmNjY2MoQ1BVQVZSU3RhdGUgKmVudiwgRGlzYXND b250ZXh0ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2 cl9vcGNvZGVfRU9SXzAwMTAwMWFiYmJiYmNjY2NfdCBjb25zdCAqaW5zdCkKK3sKKyAgICBUQ0d2 ICAgIFJkICA9IGNwdV9yW2luc3QtPlJkXTsKKyAgICBUQ0d2ICAgIFJyICA9IGNwdV9yWyhpbnN0 LT5oUnIgPDwgNCkgfCAoaW5zdC0+bFJyKV07CisgICAgVENHdiAgICBSICAgPSB0Y2dfdGVtcF9u ZXdfaTMyKCk7CisKKyAgICB0Y2dfZ2VuX3hvcl90bCggUiwgICAgICBSZCwgICAgIFJyKTsKKwor ICAgIHRjZ19nZW5fbW92aV90bChjcHVfVmYsIDApOworICAgIGdlbl9aTlNmKFIpOworCisgICAg dGNnX3RlbXBfZnJlZV9pMzIoUik7CisKKyAgICByZXR1cm4gIEJTX05PTkU7Cit9CisKKworLyog IFRoaXMgaW5zdHJ1Y3Rpb24gcGVyZm9ybXMgOC1iaXQgeCA4LWJpdCAtPiAxNi1iaXQgdW5zaWdu ZWQgbXVsdGlwbGljYXRpb24gYW5kIHNoaWZ0cyB0aGUgcmVzdWx0IG9uZSBiaXQgbGVmdC4gICov CitpbnQgICAgIGF2cl9leGVjdXRlX0ZNVUxfMDAwMDAwMTEwYWFhMWJiYihDUFVBVlJTdGF0ZSAq ZW52LCBEaXNhc0NvbnRleHQgKmN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYXZyX29wY29kZV9GTVVMXzAwMDAwMDExMGFhYTFiYmJfdCBjb25zdCAqaW5zdCkK K3sKKyAgICBpZiAoYXZyX2ZlYXR1cmUoZW52LCBBVlJfRkVBVFVSRV9NVUwpID09IGZhbHNlKSB7 CisgICAgICAgIGdlbl9oZWxwZXJfdW5zdXBwb3J0ZWQoY3B1X2Vudik7CisKKyAgICAgICAgcmV0 dXJuIEJTX0VYQ1A7CisgICAgfQorCisgICAgVENHdiAgICBSMCAgPSBjcHVfclswXTsKKyAgICBU Q0d2ICAgIFIxICA9IGNwdV9yWzFdOworICAgIFRDR3YgICAgUmQgID0gY3B1X3JbMTYgKyBpbnN0 LT5SZF07CisgICAgVENHdiAgICBSciAgPSBjcHVfclsxNiArIGluc3QtPlJyXTsKKyAgICBUQ0d2 ICAgIFIgICA9IHRjZ190ZW1wX25ld19pMzIoKTsKKworICAgIHRjZ19nZW5fbXVsX3RsKCBSLCAg ICAgIFJkLCAgICAgUnIpOyAgICAvKiAgUiAgID0gUmQgICpSciAgKi8KKyAgICB0Y2dfZ2VuX3No bGlfdGwoUiwgICAgICBSLCAgICAgIDEpOworCisgICAgdGNnX2dlbl9hbmRpX3RsKFIwLCAgICAg UiwgICAgICAweGZmKTsKKyAgICB0Y2dfZ2VuX3NocmlfdGwoUiwgICAgICBSLCAgICAgIDgpOwor ICAgIHRjZ19nZW5fYW5kaV90bChSMSwgICAgIFIsICAgICAgMHhmZik7CisKKyAgICB0Y2dfZ2Vu X3NocmlfdGwoY3B1X0NmLCBSLCAgICAgIDE2KTsgICAgLyogIENmICA9IFIoMTYpICAqLworICAg IHRjZ19nZW5fYW5kaV90bChjcHVfWmYsIFIsICAgICAgMHgwMDAwZmZmZik7CisKKyAgICB0Y2df dGVtcF9mcmVlX2kzMihSKTsKKworICAgIHJldHVybiAgQlNfTk9ORTsKK30KKworCisvKiAgVGhp cyBpbnN0cnVjdGlvbiBwZXJmb3JtcyA4LWJpdCB4IDgtYml0IC0+IDE2LWJpdCBzaWduZWQgbXVs dGlwbGljYXRpb24gYW5kIHNoaWZ0cyB0aGUgcmVzdWx0IG9uZSBiaXQgbGVmdC4gICovCitpbnQg ICAgIGF2cl9leGVjdXRlX0ZNVUxTXzAwMDAwMDExMWFhYTBiYmIoQ1BVQVZSU3RhdGUgKmVudiwg RGlzYXNDb250ZXh0ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGF2cl9vcGNvZGVfRk1VTFNfMDAwMDAwMTExYWFhMGJiYl90IGNvbnN0ICppbnN0KQorewor ICAgIGlmIChhdnJfZmVhdHVyZShlbnYsIEFWUl9GRUFUVVJFX01VTCkgPT0gZmFsc2UpIHsKKyAg ICAgICAgZ2VuX2hlbHBlcl91bnN1cHBvcnRlZChjcHVfZW52KTsKKworICAgICAgICByZXR1cm4g QlNfRVhDUDsKKyAgICB9CisKKyAgICBUQ0d2ICAgIFIwICA9IGNwdV9yWzBdOworICAgIFRDR3Yg ICAgUjEgID0gY3B1X3JbMV07CisgICAgVENHdiAgICBSZCAgPSBjcHVfclsxNiArIGluc3QtPlJk XTsKKyAgICBUQ0d2ICAgIFJyICA9IGNwdV9yWzE2ICsgaW5zdC0+UnJdOworICAgIFRDR3YgICAg UiAgID0gdGNnX3RlbXBfbmV3X2kzMigpOworCisgICAgdGNnX2dlbl9leHQ4c190bCggICBSZCwg UmQpOyAgICAgICAgICAgIC8qICBtYWtlIFJkIGZ1bGwgMzIgYml0IHNpZ25lZCAgKi8KKyAgICB0 Y2dfZ2VuX2V4dDhzX3RsKCAgIFJyLCBScik7ICAgICAgICAgICAgLyogIG1ha2UgUnIgZnVsbCAz MiBiaXQgc2lnbmVkICAqLworICAgIHRjZ19nZW5fbXVsX3RsKCBSLCAgICAgIFJkLCAgICAgUnIp OyAgICAvKiAgUiAgID0gUmQgICpSciAgKi8KKyAgICB0Y2dfZ2VuX3NobGlfdGwoUiwgICAgICBS LCAgICAgIDEpOworCisgICAgdGNnX2dlbl9hbmRpX3RsKFIwLCAgICAgUiwgICAgICAweGZmKTsK KyAgICB0Y2dfZ2VuX3NocmlfdGwoUiwgICAgICBSLCAgICAgIDgpOworICAgIHRjZ19nZW5fYW5k aV90bChSMSwgICAgIFIsICAgICAgMHhmZik7CisKKyAgICB0Y2dfZ2VuX3NocmlfdGwoY3B1X0Nm LCBSLCAgICAgIDE2KTsgICAgLyogIENmICA9IFIoMTYpICAqLworICAgIHRjZ19nZW5fYW5kaV90 bChjcHVfWmYsIFIsICAgICAgMHgwMDAwZmZmZik7CisKKyAgICB0Y2dfdGVtcF9mcmVlX2kzMihS KTsKKworICAgIHJldHVybiAgQlNfTk9ORTsKK30KKworCisvKiAgVGhpcyBpbnN0cnVjdGlvbiBw ZXJmb3JtcyA4LWJpdCB4IDgtYml0IC0+IDE2LWJpdCBzaWduZWQgbXVsdGlwbGljYXRpb24gYW5k IHNoaWZ0cyB0aGUgcmVzdWx0IG9uZSBiaXQgbGVmdC4gICovCitpbnQgICAgIGF2cl9leGVjdXRl X0ZNVUxTVV8wMDAwMDAxMTFhYWExYmJiKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAq Y3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdnJfb3Bjb2Rl X0ZNVUxTVV8wMDAwMDAxMTFhYWExYmJiX3QgY29uc3QgKmluc3QpCit7CisgICAgaWYgKGF2cl9m ZWF0dXJlKGVudiwgQVZSX0ZFQVRVUkVfTVVMKSA9PSBmYWxzZSkgeworICAgICAgICBnZW5faGVs cGVyX3Vuc3VwcG9ydGVkKGNwdV9lbnYpOworCisgICAgICAgIHJldHVybiBCU19FWENQOworICAg IH0KKworICAgIFRDR3YgICAgUjAgID0gY3B1X3JbMF07CisgICAgVENHdiAgICBSMSAgPSBjcHVf clsxXTsKKyAgICBUQ0d2ICAgIFJkICA9IGNwdV9yWzE2ICsgaW5zdC0+UmRdOworICAgIFRDR3Yg ICAgUnIgID0gY3B1X3JbMTYgKyBpbnN0LT5Scl07CisgICAgVENHdiAgICBSICAgPSB0Y2dfdGVt cF9uZXdfaTMyKCk7CisKKyAgICB0Y2dfZ2VuX2V4dDhzX3RsKCAgIFJkLCBSZCk7ICAgICAgICAg ICAgLyogIG1ha2UgUmQgZnVsbCAzMiBiaXQgc2lnbmVkICAqLworICAgIHRjZ19nZW5fbXVsX3Rs KCBSLCAgICAgIFJkLCAgICAgUnIpOyAgICAvKiAgUiAgID0gUmQgICpSciAgKi8KKyAgICB0Y2df Z2VuX3NobGlfdGwoUiwgICAgICBSLCAgICAgIDEpOworCisgICAgdGNnX2dlbl9hbmRpX3RsKFIw LCAgICAgUiwgICAgICAweGZmKTsKKyAgICB0Y2dfZ2VuX3NocmlfdGwoUiwgICAgICBSLCAgICAg IDgpOworICAgIHRjZ19nZW5fYW5kaV90bChSMSwgICAgIFIsICAgICAgMHhmZik7CisKKyAgICB0 Y2dfZ2VuX3NocmlfdGwoY3B1X0NmLCBSLCAgICAgIDE2KTsgICAgLyogIENmICA9IFIoMTYpICAq LworICAgIHRjZ19nZW5fYW5kaV90bChjcHVfWmYsIFIsICAgICAgMHgwMDAwZmZmZik7CisKKyAg ICByZXR1cm4gIEJTX05PTkU7Cit9CisKKworLyogIENhbGxzIHRvIGEgc3Vicm91dGluZSB3aXRo aW4gdGhlIGVudGlyZSA0TSAod29yZHMpIFByb2dyYW0gbWVtb3J5LiBUaGUgcmV0dXJuIGFkZHJl c3MgKHRvIHRoZSBpbnN0cnVjdGlvbiBhZnRlciAgKi8KKy8qICB0aGUgQ0FMTCkgd2lsbCBiZSBz dG9yZWQgb250byB0aGUgU3RhY2suIFNlZSBhbHNvIFJDQUxMLiBUaGUgU3RhY2sgUG9pbnRlciB1 c2VzIGEgcG9zdC1kZWNyZW1lbnQgc2NoZW1lICAqLworLyogIGR1cmluZyBDQUxMLiAgKi8KKy8q ICBUaGlzIGluc3RydWN0aW9uIGlzIG5vdCBhdmFpbGFibGUgaW4gYWxsIGRldmljZXMuIFJlZmVy IHRvIHRoZSBkZXZpY2Ugc3BlY2lmaWMgaW5zdHJ1Y3Rpb24gc2V0IHN1bW1hcnkuICAqLworaW50 ICAgICBhdnJfZXhlY3V0ZV9JQ0FMTF8xMDAxMDEwMTAwMDAxMDAxKENQVUFWUlN0YXRlICplbnYs IERpc2FzQ29udGV4dCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBhdnJfb3Bjb2RlX0lDQUxMXzEwMDEwMTAxMDAwMDEwMDFfdCBjb25zdCAqaW5zdCkKK3sK KyAgICBpZiAoYXZyX2ZlYXR1cmUoZW52LCBBVlJfRkVBVFVSRV9JSk1QX0lDQUxMKSA9PSBmYWxz ZSkgeworICAgICAgICBnZW5faGVscGVyX3Vuc3VwcG9ydGVkKGNwdV9lbnYpOworCisgICAgICAg IHJldHVybiBCU19FWENQOworICAgIH0KKworICAgIGludCByZXQgPSBjdHgtPmluc3RbMF0ubnBj OworCisgICAgZ2VuX3B1c2hfcmV0KGVudiwgcmV0KTsKKyAgICBnZW5fam1wX3ooKTsKKworICAg IHJldHVybiBCU19CUkFOQ0g7Cit9CisKKworLyogIEluZGlyZWN0IGp1bXAgdG8gdGhlIGFkZHJl c3MgcG9pbnRlZCB0byBieSB0aGUgWiAoMTYgYml0cykgUG9pbnRlciBSZWdpc3RlciBpbiB0aGUg UmVnaXN0ZXIgRmlsZS4gVGhlIFotcG9pbnRlciAgKi8KKy8qICBSZWdpc3RlciBpcyAxNiBiaXRz IHdpZGUgYW5kIGFsbG93cyBqdW1wIHdpdGhpbiB0aGUgbG93ZXN0IDY0SyB3b3JkcyAoMTI4S0Ip IHNlY3Rpb24gb2YgUHJvZ3JhbSBtZW1vcnkuICAqLworLyogIFRoaXMgaW5zdHJ1Y3Rpb24gaXMg bm90IGF2YWlsYWJsZSBpbiBhbGwgZGV2aWNlcy4gUmVmZXIgdG8gdGhlIGRldmljZSBzcGVjaWZp YyBpbnN0cnVjdGlvbiBzZXQgc3VtbWFyeS4gICovCitpbnQgICAgIGF2cl9leGVjdXRlX0lKTVBf MTAwMTAxMDAwMDAwMTAwMShDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZyX29wY29kZV9JSk1QXzEw MDEwMTAwMDAwMDEwMDFfdCBjb25zdCAqaW5zdCkKK3sKKyAgICBpZiAoYXZyX2ZlYXR1cmUoZW52 LCBBVlJfRkVBVFVSRV9JSk1QX0lDQUxMKSA9PSBmYWxzZSkgeworICAgICAgICBnZW5faGVscGVy X3Vuc3VwcG9ydGVkKGNwdV9lbnYpOworCisgICAgICAgIHJldHVybiBCU19FWENQOworICAgIH0K KworICAgIGdlbl9qbXBfeigpOworCisgICAgcmV0dXJuIEJTX0JSQU5DSDsKK30KKworCisvKiAg TG9hZHMgZGF0YSBmcm9tIHRoZSBJL08gU3BhY2UgKFBvcnRzLCBUaW1lcnMsIENvbmZpZ3VyYXRp b24gUmVnaXN0ZXJzLCBldGMuKSBpbnRvIHJlZ2lzdGVyIFJkIGluIHRoZSBSZWdpc3RlciAgKi8K Ky8qICBGaWxlLiAgKi8KK2ludCAgICAgYXZyX2V4ZWN1dGVfSU5fMTAxMTBhYWJiYmJiY2NjYyhD UFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYXZyX29wY29kZV9JTl8xMDExMGFhYmJiYmJjY2NjX3QgY29u c3QgKmluc3QpCit7CisgICAgVENHdiAgICBSZCAgPSBjcHVfcltpbnN0LT5SZF07CisgICAgaW50 ICAgICBJbW0gPSAoaW5zdC0+aEltbSA8PCA0KSB8IGluc3QtPmxJbW07CisgICAgVENHdiAgICBw b3J0PSB0Y2dfY29uc3RfaTMyKEltbSk7CisgICAgVENHdiAgICBkYXRhPSBjcHVfaW9bSW1tXTsK KworICAgIGdlbl9oZWxwZXJfaW5iKCBkYXRhLCAgIGNwdV9lbnYscG9ydCk7CisgICAgdGNnX2dl bl9tb3ZfdGwoIFJkLCAgICAgZGF0YSk7CisKKyAgICByZXR1cm4gIEJTX05PTkU7Cit9CisKKwor LyogIEFkZHMgb25lIC0xLSB0byB0aGUgY29udGVudHMgb2YgcmVnaXN0ZXIgUmQgYW5kIHBsYWNl cyB0aGUgcmVzdWx0IGluIHRoZSBkZXN0aW5hdGlvbiByZWdpc3RlciBSZC4gICovCisvKiAgVGhl IEMgRmxhZyBpbiBTUkVHIGlzIG5vdCBhZmZlY3RlZCBieSB0aGUgb3BlcmF0aW9uLCB0aHVzIGFs bG93aW5nIHRoZSBJTkMgaW5zdHJ1Y3Rpb24gdG8gYmUgdXNlZCBvbiBhIGxvb3AgICovCisvKiAg Y291bnRlciBpbiBtdWx0aXBsZS1wcmVjaXNpb24gY29tcHV0YXRpb25zLiAgKi8KKy8qICBXaGVu IG9wZXJhdGluZyBvbiB1bnNpZ25lZCBudW1iZXJzLCBvbmx5IEJSRVEgYW5kIEJSTkUgYnJhbmNo ZXMgY2FuIGJlIGV4cGVjdGVkIHRvIHBlcmZvcm0gICovCisvKiAgY29uc2lzdGVudGx5LiBXaGVu IG9wZXJhdGluZyBvbiB0d2/igJlzIGNvbXBsZW1lbnQgdmFsdWVzLCBhbGwgc2lnbmVkIGJyYW5j aGVzIGFyZSBhdmFpbGFibGUuICAqLworaW50ICAgICBhdnJfZXhlY3V0ZV9JTkNfMTAwMTAxMGFh YWFhMDAxMShDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZyX29wY29kZV9JTkNfMTAwMTAxMGFhYWFh MDAxMV90IGNvbnN0ICppbnN0KQoreworICAgIFRDR3YgICAgUmQgID0gY3B1X3JbaW5zdC0+UmRd OworCisgICAgdGNnX2dlbl9hZGRpX3RsKFJkLCAgICAgUmQsICAgICAxKTsKKyAgICB0Y2dfZ2Vu X2FuZGlfdGwoUmQsICAgICBSZCwgICAgIDB4ZmYpOworCisgICAgdGNnX2dlbl9zZXRjb25kaV90 bCggICAgVENHX0NPTkRfRVEsICAgIGNwdV9WZiwgICAgIFJkLCAgICAgMHg4MCk7ICAvKiBjcHVf VmYgICA9IFJkID09IDB4ODAgICovCisgICAgZ2VuX1pOU2YoUmQpOworICAgIHJldHVybiAgQlNf Tk9ORTsKK30KKworCisKKy8qICBKdW1wIHRvIGFuIGFkZHJlc3Mgd2l0aGluIHRoZSBlbnRpcmUg NE0gKHdvcmRzKSBQcm9ncmFtIG1lbW9yeS4gU2VlIGFsc28gUkpNUC4gICovCisvKiAgVGhpcyBp bnN0cnVjdGlvbiBpcyBub3QgYXZhaWxhYmxlIGluIGFsbCBkZXZpY2VzLiBSZWZlciB0byB0aGUg ZGV2aWNlIHNwZWNpZmljIGluc3RydWN0aW9uIHNldCBzdW1tYXJ5LjAgICovCitpbnQgICAgIGF2 cl9leGVjdXRlX0pNUF8xMDAxMDEwYWFhYWExMTBiYmJiYmJiYmJiYmJiYmJiYihDUFVBVlJTdGF0 ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYXZyX29wY29kZV9KTVBfMTAwMTAxMGFhYWFhMTEwYmJiYmJiYmJiYmJiYmJi YmJfdCBjb25zdCAqaW5zdCkKK3sKKyAgICBpZiAoYXZyX2ZlYXR1cmUoZW52LCBBVlJfRkVBVFVS RV9KTVBfQ0FMTCkgPT0gZmFsc2UpIHsKKyAgICAgICAgZ2VuX2hlbHBlcl91bnN1cHBvcnRlZChj cHVfZW52KTsKKworICAgICAgICByZXR1cm4gQlNfRVhDUDsKKyAgICB9CisKKyAgICBnZW5fZ290 b190YihlbnYsIGN0eCwgMCwgKGluc3QtPmhJbW0gPDwgMTcpIHwgaW5zdC0+bEltbSk7CisgICAg cmV0dXJuICBCU19CUkFOQ0g7Cit9CisKKworLyogIExvYWQgb25lIGJ5dGUgaW5kaXJlY3QgZnJv bSBkYXRhIHNwYWNlIHRvIHJlZ2lzdGVyIGFuZCBzdG9yZXMgYW4gY2xlYXIgdGhlIGJpdHMgaW4g ZGF0YSBzcGFjZSBzcGVjaWZpZWQgYnkgdGhlICAqLworLyogIHJlZ2lzdGVyLiBUaGUgaW5zdHJ1 Y3Rpb24gY2FuIG9ubHkgYmUgdXNlZCB0b3dhcmRzIGludGVybmFsIFNSQU0uICAqLworLyogIFRo ZSBkYXRhIGxvY2F0aW9uIGlzIHBvaW50ZWQgdG8gYnkgdGhlIFogKDE2IGJpdHMpIFBvaW50ZXIg UmVnaXN0ZXIgaW4gdGhlIFJlZ2lzdGVyIEZpbGUuIE1lbW9yeSBhY2Nlc3MgaXMgbGltaXRlZCAg Ki8KKy8qICB0byB0aGUgY3VycmVudCBkYXRhIHNlZ21lbnQgb2YgNjRLQi4gVG8gYWNjZXNzIGFu b3RoZXIgZGF0YSBzZWdtZW50IGluIGRldmljZXMgd2l0aCBtb3JlIHRoYW4gNjRLQiBkYXRhICAq LworLyogIHNwYWNlLCB0aGUgUkFNUFogaW4gcmVnaXN0ZXIgaW4gdGhlIEkvTyBhcmVhIGhhcyB0 byBiZSBjaGFuZ2VkLiAgKi8KKy8qICBUaGUgWi1wb2ludGVyIFJlZ2lzdGVyIGlzIGxlZnQgdW5j aGFuZ2VkIGJ5IHRoZSBvcGVyYXRpb24uIFRoaXMgaW5zdHJ1Y3Rpb24gaXMgZXNwZWNpYWxseSBz dWl0ZWQgZm9yIGNsZWFyaW5nIHN0YXR1cyAgKi8KKy8qICBiaXRzIHN0b3JlZCBpbiBTUkFNLiAg Ki8KK2ludCAgICAgYXZyX2V4ZWN1dGVfTEFDXzEwMDEwMDFhYWFhYTAxMTAoQ1BVQVZSU3RhdGUg KmVudiwgRGlzYXNDb250ZXh0ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGF2cl9vcGNvZGVfTEFDXzEwMDEwMDFhYWFhYTAxMTBfdCBjb25zdCAqaW5zdCkK K3sKKyAgICBpZiAoYXZyX2ZlYXR1cmUoZW52LCBBVlJfRkVBVFVSRV9STVcpID09IGZhbHNlKSB7 CisgICAgICAgIGdlbl9oZWxwZXJfdW5zdXBwb3J0ZWQoY3B1X2Vudik7CisKKyAgICAgICAgcmV0 dXJuIEJTX0VYQ1A7CisgICAgfQorCisgICAgVENHdiAgICBSciAgPSBjcHVfcltpbnN0LT5Scl07 CisgICAgVENHdiAgICBhZGRyPSB0Y2dfdGVtcF9uZXdfaTMyKCk7CisgICAgVENHdiAgICB0MCAg PSB0Y2dfdGVtcF9uZXdfaTMyKCk7CisgICAgVENHdiAgICB0MSAgPSB0Y2dfdGVtcF9uZXdfaTMy KCk7CisgICAgVENHdiAgICBIICAgPSBjcHVfcmFtcFo7CisgICAgVENHdiAgICBNICAgPSBjcHVf clszMV07CisgICAgVENHdiAgICBMICAgPSBjcHVfclszMF07CisKKyAgICB0Y2dfZ2VuX21vdl90 bCggYWRkciwgICBIKTsgICAgICAgICAgICAgICAgICAgICAvKiAgYWRkciAgICA9IHJhbXBaOnIz MTpyMzAgICovCisgICAgdGNnX2dlbl9zaGxpX3RsKGFkZHIsICAgYWRkciwgICA4KTsKKyAgICB0 Y2dfZ2VuX29yX3RsKCAgYWRkciwgICBhZGRyLCAgIE0pOworICAgIHRjZ19nZW5fc2hsaV90bChh ZGRyLCAgIGFkZHIsICAgOCk7CisgICAgdGNnX2dlbl9vcl90bCggIGFkZHIsICAgYWRkciwgICBM KTsKKworICAgIHRjZ19nZW5fcWVtdV9sZDh1KAorICAgICAgICAgICAgICAgICAgICB0MCwgICAg IGFkZHIsICAgREFUQV9JTkRFWCk7ICAgIC8qICB0MCAgICAgID0gbWVtW2FkZHJdICAqLworICAg IHRjZ19nZW5fbW92aV90bCh0MSwgICAgIDB4ZmYpOyAgICAgICAgICAgICAgICAgIC8qICB0MSAg ICAgID0gdDAgJiAoMHhmZiAtIFJyKSAgKi8KKyAgICB0Y2dfZ2VuX3N1Yl90bCggdDEsICAgICB0 MSwgICAgIFJyKTsKKyAgICB0Y2dfZ2VuX2FuZF90bCggdDEsICAgICB0MCwgICAgIHQxKTsKKwor ICAgIHRjZ19nZW5fbW92X3RsKCBSciwgICAgIHQwKTsgICAgICAgICAgICAgICAgICAgIC8qICBS ciAgICAgID0gdDAgICovCisgICAgdGNnX2dlbl9xZW11X3N0OCggICB0MSwgYWRkciwgICBEQVRB X0lOREVYKTsgICAgLyogIG1lbVthZGRyXSAgID0gdDEgICovCisKKyAgICB0Y2dfdGVtcF9mcmVl X2kzMih0MSk7CisgICAgdGNnX3RlbXBfZnJlZV9pMzIodDApOworICAgIHRjZ190ZW1wX2ZyZWVf aTMyKGFkZHIpOworCisgICAgcmV0dXJuICBCU19OT05FOworfQorCisKKy8qICBMb2FkIG9uZSBi eXRlIGluZGlyZWN0IGZyb20gZGF0YSBzcGFjZSB0byByZWdpc3RlciBhbmQgc2V0IGJpdHMgaW4g ZGF0YSBzcGFjZSBzcGVjaWZpZWQgYnkgdGhlIHJlZ2lzdGVyLiBUaGUgICovCisvKiAgaW5zdHJ1 Y3Rpb24gY2FuIG9ubHkgYmUgdXNlZCB0b3dhcmRzIGludGVybmFsIFNSQU0uICAqLworLyogIFRo ZSBkYXRhIGxvY2F0aW9uIGlzIHBvaW50ZWQgdG8gYnkgdGhlIFogKDE2IGJpdHMpIFBvaW50ZXIg UmVnaXN0ZXIgaW4gdGhlIFJlZ2lzdGVyIEZpbGUuIE1lbW9yeSBhY2Nlc3MgaXMgbGltaXRlZCAg Ki8KKy8qICB0byB0aGUgY3VycmVudCBkYXRhIHNlZ21lbnQgb2YgNjRLQi4gVG8gYWNjZXNzIGFu b3RoZXIgZGF0YSBzZWdtZW50IGluIGRldmljZXMgd2l0aCBtb3JlIHRoYW4gNjRLQiBkYXRhICAq LworLyogIHNwYWNlLCB0aGUgUkFNUFogaW4gcmVnaXN0ZXIgaW4gdGhlIEkvTyBhcmVhIGhhcyB0 byBiZSBjaGFuZ2VkLiAgKi8KKy8qICBUaGUgWi1wb2ludGVyIFJlZ2lzdGVyIGlzIGxlZnQgdW5j aGFuZ2VkIGJ5IHRoZSBvcGVyYXRpb24uIFRoaXMgaW5zdHJ1Y3Rpb24gaXMgZXNwZWNpYWxseSBz dWl0ZWQgZm9yIHNldHRpbmcgc3RhdHVzICAqLworLyogIGJpdHMgc3RvcmVkIGluIFNSQU0uICAq LworaW50ICAgICBhdnJfZXhlY3V0ZV9MQVNfMTAwMTAwMWFhYWFhMDEwMShDUFVBVlJTdGF0ZSAq ZW52LCBEaXNhc0NvbnRleHQgKmN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYXZyX29wY29kZV9MQVNfMTAwMTAwMWFhYWFhMDEwMV90IGNvbnN0ICppbnN0KQor eworICAgIGlmIChhdnJfZmVhdHVyZShlbnYsIEFWUl9GRUFUVVJFX1JNVykgPT0gZmFsc2UpIHsK KyAgICAgICAgZ2VuX2hlbHBlcl91bnN1cHBvcnRlZChjcHVfZW52KTsKKworICAgICAgICByZXR1 cm4gQlNfRVhDUDsKKyAgICB9CisKKyAgICBUQ0d2ICAgIFJyICA9IGNwdV9yW2luc3QtPlJyXTsK KyAgICBUQ0d2ICAgIGFkZHI9IHRjZ190ZW1wX25ld19pMzIoKTsKKyAgICBUQ0d2ICAgIHQwICA9 IHRjZ190ZW1wX25ld19pMzIoKTsKKyAgICBUQ0d2ICAgIHQxICA9IHRjZ190ZW1wX25ld19pMzIo KTsKKyAgICBUQ0d2ICAgIEggICA9IGNwdV9yYW1wWjsKKyAgICBUQ0d2ICAgIE0gICA9IGNwdV9y WzMxXTsKKyAgICBUQ0d2ICAgIEwgICA9IGNwdV9yWzMwXTsKKworICAgIHRjZ19nZW5fbW92X3Rs KCBhZGRyLCAgIEgpOyAgICAgICAgICAgICAgICAgICAgIC8qICBhZGRyICAgID0gcmFtcFo6cjMx OnIzMCAgKi8KKyAgICB0Y2dfZ2VuX3NobGlfdGwoYWRkciwgICBhZGRyLCAgIDgpOworICAgIHRj Z19nZW5fb3JfdGwoICBhZGRyLCAgIGFkZHIsICAgTSk7CisgICAgdGNnX2dlbl9zaGxpX3RsKGFk ZHIsICAgYWRkciwgICA4KTsKKyAgICB0Y2dfZ2VuX29yX3RsKCAgYWRkciwgICBhZGRyLCAgIEwp OworCisgICAgdGNnX2dlbl9xZW11X2xkOHUoCisgICAgICAgICAgICAgICAgICAgIHQwLCAgICAg YWRkciwgICBEQVRBX0lOREVYKTsgICAgLyogIHQwICAgICAgPSBtZW1bYWRkcl0gICovCisgICAg dGNnX2dlbl9vcl90bCggIHQxLCAgICAgdDAsICAgICBScik7CisKKyAgICB0Y2dfZ2VuX21vdl90 bCggUnIsICAgICB0MCk7ICAgICAgICAgICAgICAgICAgICAvKiAgUnIgICAgICA9IHQwICAqLwor ICAgIHRjZ19nZW5fcWVtdV9zdDgoICAgdDEsIGFkZHIsICAgREFUQV9JTkRFWCk7ICAgIC8qICBt ZW1bYWRkcl0gICA9IHQxICAqLworCisgICAgdGNnX3RlbXBfZnJlZV9pMzIodDEpOworICAgIHRj Z190ZW1wX2ZyZWVfaTMyKHQwKTsKKyAgICB0Y2dfdGVtcF9mcmVlX2kzMihhZGRyKTsKKworICAg IHJldHVybiAgQlNfTk9ORTsKK30KKworCisvKiAgTG9hZCBvbmUgYnl0ZSBpbmRpcmVjdCBmcm9t IGRhdGEgc3BhY2UgdG8gcmVnaXN0ZXIgYW5kIHRvZ2dsZXMgYml0cyBpbiB0aGUgZGF0YSBzcGFj ZSBzcGVjaWZpZWQgYnkgdGhlIHJlZ2lzdGVyLiAgKi8KKy8qICBUaGUgaW5zdHJ1Y3Rpb24gY2Fu IG9ubHkgYmUgdXNlZCB0b3dhcmRzIFNSQU0uICAqLworLyogIFRoZSBkYXRhIGxvY2F0aW9uIGlz IHBvaW50ZWQgdG8gYnkgdGhlIFogKDE2IGJpdHMpIFBvaW50ZXIgUmVnaXN0ZXIgaW4gdGhlIFJl Z2lzdGVyIEZpbGUuIE1lbW9yeSBhY2Nlc3MgaXMgbGltaXRlZCAgKi8KKy8qICB0byB0aGUgY3Vy cmVudCBkYXRhIHNlZ21lbnQgb2YgNjRLQi4gVG8gYWNjZXNzIGFub3RoZXIgZGF0YSBzZWdtZW50 IGluIGRldmljZXMgd2l0aCBtb3JlIHRoYW4gNjRLQiBkYXRhICAqLworLyogIHNwYWNlLCB0aGUg UkFNUFogaW4gcmVnaXN0ZXIgaW4gdGhlIEkvTyBhcmVhIGhhcyB0byBiZSBjaGFuZ2VkLiAgKi8K Ky8qICBUaGUgWi1wb2ludGVyIFJlZ2lzdGVyIGlzIGxlZnQgdW5jaGFuZ2VkIGJ5IHRoZSBvcGVy YXRpb24uIFRoaXMgaW5zdHJ1Y3Rpb24gaXMgZXNwZWNpYWxseSBzdWl0ZWQgZm9yIGNoYW5naW5n ICAqLworLyogIHN0YXR1cyBiaXRzIHN0b3JlZCBpbiBTUkFNLiAgKi8KK2ludCAgICAgYXZyX2V4 ZWN1dGVfTEFUXzEwMDEwMDFhYWFhYTAxMTEoQ1BVQVZSU3RhdGUgKmVudiwgRGlzYXNDb250ZXh0 ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2cl9vcGNv ZGVfTEFUXzEwMDEwMDFhYWFhYTAxMTFfdCBjb25zdCAqaW5zdCkKK3sKKyAgICBpZiAoYXZyX2Zl YXR1cmUoZW52LCBBVlJfRkVBVFVSRV9STVcpID09IGZhbHNlKSB7CisgICAgICAgIGdlbl9oZWxw ZXJfdW5zdXBwb3J0ZWQoY3B1X2Vudik7CisKKyAgICAgICAgcmV0dXJuIEJTX0VYQ1A7CisgICAg fQorCisgICAgVENHdiAgICBSciAgPSBjcHVfcltpbnN0LT5Scl07CisgICAgVENHdiAgICBhZGRy PSB0Y2dfdGVtcF9uZXdfaTMyKCk7CisgICAgVENHdiAgICB0MCAgPSB0Y2dfdGVtcF9uZXdfaTMy KCk7CisgICAgVENHdiAgICB0MSAgPSB0Y2dfdGVtcF9uZXdfaTMyKCk7CisgICAgVENHdiAgICBI ICAgPSBjcHVfcmFtcFo7CisgICAgVENHdiAgICBNICAgPSBjcHVfclszMV07CisgICAgVENHdiAg ICBMICAgPSBjcHVfclszMF07CisKKyAgICB0Y2dfZ2VuX21vdl90bCggYWRkciwgICBIKTsgICAg ICAgICAgICAgICAgICAgICAvKiAgYWRkciAgICA9IHJhbXBaOnIzMTpyMzAgICovCisgICAgdGNn X2dlbl9zaGxpX3RsKGFkZHIsICAgYWRkciwgICA4KTsKKyAgICB0Y2dfZ2VuX29yX3RsKCAgYWRk ciwgICBhZGRyLCAgIE0pOworICAgIHRjZ19nZW5fc2hsaV90bChhZGRyLCAgIGFkZHIsICAgOCk7 CisgICAgdGNnX2dlbl9vcl90bCggIGFkZHIsICAgYWRkciwgICBMKTsKKworICAgIHRjZ19nZW5f cWVtdV9sZDh1KAorICAgICAgICAgICAgICAgICAgICB0MCwgICAgIGFkZHIsICAgREFUQV9JTkRF WCk7ICAgIC8qICB0MCAgICAgID0gbWVtW2FkZHJdICAqLworICAgIHRjZ19nZW5feG9yX3RsKCB0 MSwgICAgIHQwLCAgICAgUnIpOworCisgICAgdGNnX2dlbl9tb3ZfdGwoIFJyLCAgICAgdDApOyAg ICAgICAgICAgICAgICAgICAgLyogIFJyICAgICAgPSB0MCAgKi8KKyAgICB0Y2dfZ2VuX3FlbXVf c3Q4KCAgIHQxLCBhZGRyLCAgIERBVEFfSU5ERVgpOyAgICAvKiAgbWVtW2FkZHJdICAgPSB0MSAg Ki8KKworICAgIHRjZ190ZW1wX2ZyZWVfaTMyKHQxKTsKKyAgICB0Y2dfdGVtcF9mcmVlX2kzMih0 MCk7CisgICAgdGNnX3RlbXBfZnJlZV9pMzIoYWRkcik7CisKKyAgICByZXR1cm4gIEJTX05PTkU7 Cit9CisKKworLyogIExvYWRzIG9uZSBieXRlIGluZGlyZWN0IGZyb20gdGhlIGRhdGEgc3BhY2Ug dG8gYSByZWdpc3Rlci4gRm9yIHBhcnRzIHdpdGggU1JBTSwgdGhlIGRhdGEgc3BhY2UgY29uc2lz dHMgb2YgdGhlICAqLworLyogIFJlZ2lzdGVyIEZpbGUsIEkvTyBtZW1vcnkgYW5kIGludGVybmFs IFNSQU0gKGFuZCBleHRlcm5hbCBTUkFNIGlmIGFwcGxpY2FibGUpLiBGb3IgcGFydHMgd2l0aG91 dCBTUkFNLCB0aGUgICovCisvKiAgZGF0YSBzcGFjZSBjb25zaXN0cyBvZiB0aGUgUmVnaXN0ZXIg RmlsZSBvbmx5LiBJbiBzb21lIHBhcnRzIHRoZSBGbGFzaCBNZW1vcnkgaGFzIGJlZW4gbWFwcGVk IHRvIHRoZSBkYXRhICAqLworLyogIHNwYWNlIGFuZCBjYW4gYmUgcmVhZCB1c2luZyB0aGlzIGNv bW1hbmQuIFRoZSBFRVBST00gaGFzIGEgc2VwYXJhdGUgYWRkcmVzcyBzcGFjZS4gICovCisvKiAg VGhlIGRhdGEgbG9jYXRpb24gaXMgcG9pbnRlZCB0byBieSB0aGUgWCAoMTYgYml0cykgUG9pbnRl ciBSZWdpc3RlciBpbiB0aGUgUmVnaXN0ZXIgRmlsZS4gTWVtb3J5IGFjY2VzcyBpcyBsaW1pdGVk ICAqLworLyogIHRvIHRoZSBjdXJyZW50IGRhdGEgc2VnbWVudCBvZiA2NEtCLiBUbyBhY2Nlc3Mg YW5vdGhlciBkYXRhIHNlZ21lbnQgaW4gZGV2aWNlcyB3aXRoIG1vcmUgdGhhbiA2NEtCIGRhdGEg ICovCisvKiAgc3BhY2UsIHRoZSBSQU1QWCBpbiByZWdpc3RlciBpbiB0aGUgSS9PIGFyZWEgaGFz IHRvIGJlIGNoYW5nZWQuICAqLworLyogIFRoZSBYLXBvaW50ZXIgUmVnaXN0ZXIgY2FuIGVpdGhl ciBiZSBsZWZ0IHVuY2hhbmdlZCBieSB0aGUgb3BlcmF0aW9uLCBvciBpdCBjYW4gYmUgcG9zdC1p bmNyZW1lbnRlZCBvciBwcmVkZWNyZW1lbnRlZC4gICovCisvKiAgVGhlc2UgZmVhdHVyZXMgYXJl IGVzcGVjaWFsbHkgc3VpdGVkIGZvciBhY2Nlc3NpbmcgYXJyYXlzLCB0YWJsZXMsIGFuZCBTdGFj ayBQb2ludGVyIHVzYWdlIG9mIHRoZSAgKi8KKy8qICBYLXBvaW50ZXIgUmVnaXN0ZXIuIE5vdGUg dGhhdCBvbmx5IHRoZSBsb3cgYnl0ZSBvZiB0aGUgWC1wb2ludGVyIGlzIHVwZGF0ZWQgaW4gZGV2 aWNlcyB3aXRoIG5vIG1vcmUgdGhhbiAyNTYgICovCisvKiAgYnl0ZXMgZGF0YSBzcGFjZS4gRm9y IHN1Y2ggZGV2aWNlcywgdGhlIGhpZ2ggYnl0ZSBvZiB0aGUgcG9pbnRlciBpcyBub3QgdXNlZCBi eSB0aGlzIGluc3RydWN0aW9uIGFuZCBjYW4gYmUgdXNlZCAgKi8KKy8qICBmb3Igb3RoZXIgcHVy cG9zZXMuIFRoZSBSQU1QWCBSZWdpc3RlciBpbiB0aGUgSS9PIGFyZWEgaXMgdXBkYXRlZCBpbiBw YXJ0cyB3aXRoIG1vcmUgdGhhbiA2NEtCIGRhdGEgc3BhY2Ugb3IgICovCisvKiAgbW9yZSB0aGFu IDY0S0IgUHJvZ3JhbSBtZW1vcnksIGFuZCB0aGUgaW5jcmVtZW50L2RlY3JlbWVudCBpcyBhZGRl ZCB0byB0aGUgZW50aXJlIDI0LWJpdCBhZGRyZXNzIG9uIHN1Y2ggICovCisvKiAgZGV2aWNlcy4g ICovCisvKiAgTm90IGFsbCB2YXJpYW50cyBvZiB0aGlzIGluc3RydWN0aW9uIGlzIGF2YWlsYWJs ZSBpbiBhbGwgZGV2aWNlcy4gUmVmZXIgdG8gdGhlIGRldmljZSBzcGVjaWZpYyBpbnN0cnVjdGlv biBzZXQgc3VtbWFyeS4gICovCisvKiAgSW4gdGhlIFJlZHVjZWQgQ29yZSB0aW55QVZSIHRoZSBM RCBpbnN0cnVjdGlvbiBjYW4gYmUgdXNlZCB0byBhY2hpZXZlIHRoZSBzYW1lIG9wZXJhdGlvbiBh cyBMUE0gc2luY2UgdGhlICAqLworLyogIHByb2dyYW0gbWVtb3J5IGlzIG1hcHBlZCB0byB0aGUg ZGF0YSBtZW1vcnkgc3BhY2UuICAqLworaW50ICAgICBhdnJfZXhlY3V0ZV9MRFgxXzEwMDEwMDBh YWFhYTExMDAoQ1BVQVZSU3RhdGUgKmVudiwgRGlzYXNDb250ZXh0ICpjdHgsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2cl9vcGNvZGVfTERYMV8xMDAxMDAwYWFh YWExMTAwX3QgY29uc3QgKmluc3QpCit7CisgICAgVENHdiAgICBSZCAgPSBjcHVfcltpbnN0LT5S ZF07CisgICAgVENHdiAgICBhZGRyPSB0Y2dfdGVtcF9uZXdfaTMyKCk7CisgICAgVENHdiAgICBI ICAgPSBjcHVfcmFtcFg7CisgICAgVENHdiAgICBNICAgPSBjcHVfclsyN107CisgICAgVENHdiAg ICBMICAgPSBjcHVfclsyNl07CisKKyAgICB0Y2dfZ2VuX21vdl90bCggYWRkciwgICBIKTsgICAg ICAgICAgICAgICAgICAgICAvKiAgYWRkciAgICA9IEg6TTpMICAqLworICAgIHRjZ19nZW5fc2hs aV90bChhZGRyLCAgIGFkZHIsICAgOCk7CisgICAgdGNnX2dlbl9vcl90bCggIGFkZHIsICAgYWRk ciwgICBNKTsKKyAgICB0Y2dfZ2VuX3NobGlfdGwoYWRkciwgICBhZGRyLCAgIDgpOworICAgIHRj Z19nZW5fb3JfdGwoICBhZGRyLCAgIGFkZHIsICAgTCk7CisKKyAgICB0Y2dfZ2VuX3FlbXVfbGQ4 dSgKKyAgICAgICAgICAgICAgICAgICAgUmQsICAgICBhZGRyLCAgIERBVEFfSU5ERVgpOworCisg ICAgdGNnX3RlbXBfZnJlZV9pMzIoYWRkcik7CisKKyAgICByZXR1cm4gIEJTX05PTkU7Cit9CisK K2ludCAgICAgYXZyX2V4ZWN1dGVfTERYMl8xMDAxMDAwYWFhYWExMTAxKENQVUFWUlN0YXRlICpl bnYsIERpc2FzQ29udGV4dCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBhdnJfb3Bjb2RlX0xEWDJfMTAwMTAwMGFhYWFhMTEwMV90IGNvbnN0ICppbnN0KQor eworICAgIFRDR3YgICAgUmQgID0gY3B1X3JbaW5zdC0+UmRdOworICAgIFRDR3YgICAgYWRkcj0g dGNnX3RlbXBfbmV3X2kzMigpOworICAgIFRDR3YgICAgSCAgID0gY3B1X3JhbXBYOworICAgIFRD R3YgICAgTSAgID0gY3B1X3JbMjddOworICAgIFRDR3YgICAgTCAgID0gY3B1X3JbMjZdOworCisg ICAgdGNnX2dlbl9tb3ZfdGwoIGFkZHIsICAgSCk7ICAgICAgICAgICAgICAgICAgICAgLyogIGFk ZHIgICAgPSBIOk06TCAgKi8KKyAgICB0Y2dfZ2VuX3NobGlfdGwoYWRkciwgICBhZGRyLCAgIDgp OworICAgIHRjZ19nZW5fb3JfdGwoICBhZGRyLCAgIGFkZHIsICAgTSk7CisgICAgdGNnX2dlbl9z aGxpX3RsKGFkZHIsICAgYWRkciwgICA4KTsKKyAgICB0Y2dfZ2VuX29yX3RsKCAgYWRkciwgICBh ZGRyLCAgIEwpOworCisgICAgdGNnX2dlbl9xZW11X2xkOHUoCisgICAgICAgICAgICAgICAgICAg IFJkLCAgICAgYWRkciwgICBEQVRBX0lOREVYKTsKKyAgICB0Y2dfZ2VuX2FkZGlfdGwoYWRkciwg ICBhZGRyLCAgIDEpOyAgICAgICAgICAgICAvKiAgYWRkciAgICA9IGFkZHIgKyAxICAqLworCisg ICAgZ2VuX3NwbGl0X2FkZHIoIGFkZHIsICAgSCwgICAgICBNLCAgICAgIEwpOworCisgICAgdGNn X3RlbXBfZnJlZV9pMzIoYWRkcik7CisKKyAgICByZXR1cm4gIEJTX05PTkU7Cit9CisKK2ludCAg ICAgYXZyX2V4ZWN1dGVfTERYM18xMDAxMDAwYWFhYWExMTEwKENQVUFWUlN0YXRlICplbnYsIERp c2FzQ29udGV4dCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBhdnJfb3Bjb2RlX0xEWDNfMTAwMTAwMGFhYWFhMTExMF90IGNvbnN0ICppbnN0KQoreworICAg IFRDR3YgICAgUmQgID0gY3B1X3JbaW5zdC0+UmRdOworICAgIFRDR3YgICAgYWRkcj0gdGNnX3Rl bXBfbmV3X2kzMigpOworICAgIFRDR3YgICAgSCAgID0gY3B1X3JhbXBYOworICAgIFRDR3YgICAg TSAgID0gY3B1X3JbMjddOworICAgIFRDR3YgICAgTCAgID0gY3B1X3JbMjZdOworCisgICAgdGNn X2dlbl9tb3ZfdGwoIGFkZHIsICAgSCk7ICAgICAgICAgICAgICAgICAgICAgLyogIGFkZHIgICAg PSBIOk06TCAgKi8KKyAgICB0Y2dfZ2VuX3NobGlfdGwoYWRkciwgICBhZGRyLCAgIDgpOworICAg IHRjZ19nZW5fb3JfdGwoICBhZGRyLCAgIGFkZHIsICAgTSk7CisgICAgdGNnX2dlbl9zaGxpX3Rs KGFkZHIsICAgYWRkciwgICA4KTsKKyAgICB0Y2dfZ2VuX29yX3RsKCAgYWRkciwgICBhZGRyLCAg IEwpOworCisgICAgdGNnX2dlbl9zdWJpX3RsKGFkZHIsICAgYWRkciwgICAxKTsgICAgICAgICAg ICAgLyogIGFkZHIgICAgPSBhZGRyIC0gMSAgKi8KKyAgICB0Y2dfZ2VuX3FlbXVfbGQ4dSgKKyAg ICAgICAgICAgICAgICAgICAgUmQsICAgICBhZGRyLCAgIERBVEFfSU5ERVgpOworCisgICAgZ2Vu X3NwbGl0X2FkZHIoIGFkZHIsICAgSCwgICAgICBNLCAgICAgIEwpOworCisgICAgdGNnX3RlbXBf ZnJlZV9pMzIoYWRkcik7CisKKyAgICByZXR1cm4gIEJTX05PTkU7Cit9CisKKworLyogIExvYWRz IG9uZSBieXRlIGluZGlyZWN0IHdpdGggb3Igd2l0aG91dCBkaXNwbGFjZW1lbnQgZnJvbSB0aGUg ZGF0YSBzcGFjZSB0byBhIHJlZ2lzdGVyLiBGb3IgcGFydHMgd2l0aCBTUkFNLCB0aGUgICovCisv KiAgZGF0YSBzcGFjZSBjb25zaXN0cyBvZiB0aGUgUmVnaXN0ZXIgRmlsZSwgSS9PIG1lbW9yeSBh bmQgaW50ZXJuYWwgU1JBTSAoYW5kIGV4dGVybmFsIFNSQU0gaWYgYXBwbGljYWJsZSkuIEZvciAg Ki8KKy8qICBwYXJ0cyB3aXRob3V0IFNSQU0sIHRoZSBkYXRhIHNwYWNlIGNvbnNpc3RzIG9mIHRo ZSBSZWdpc3RlciBGaWxlIG9ubHkuIEluIHNvbWUgcGFydHMgdGhlIEZsYXNoIE1lbW9yeSBoYXMg ICovCisvKiAgYmVlbiBtYXBwZWQgdG8gdGhlIGRhdGEgc3BhY2UgYW5kIGNhbiBiZSByZWFkIHVz aW5nIHRoaXMgY29tbWFuZC4gVGhlIEVFUFJPTSBoYXMgYSBzZXBhcmF0ZSBhZGRyZXNzICAqLwor LyogIHNwYWNlLiAgKi8KKy8qICBUaGUgZGF0YSBsb2NhdGlvbiBpcyBwb2ludGVkIHRvIGJ5IHRo ZSBZICgxNiBiaXRzKSBQb2ludGVyIFJlZ2lzdGVyIGluIHRoZSBSZWdpc3RlciBGaWxlLiBNZW1v cnkgYWNjZXNzIGlzIGxpbWl0ZWQgICovCisvKiAgdG8gdGhlIGN1cnJlbnQgZGF0YSBzZWdtZW50 IG9mIDY0S0IuIFRvIGFjY2VzcyBhbm90aGVyIGRhdGEgc2VnbWVudCBpbiBkZXZpY2VzIHdpdGgg bW9yZSB0aGFuIDY0S0IgZGF0YSAgKi8KKy8qICBzcGFjZSwgdGhlIFJBTVBZIGluIHJlZ2lzdGVy IGluIHRoZSBJL08gYXJlYSBoYXMgdG8gYmUgY2hhbmdlZC4gICovCisvKiAgVGhlIFktcG9pbnRl ciBSZWdpc3RlciBjYW4gZWl0aGVyIGJlIGxlZnQgdW5jaGFuZ2VkIGJ5IHRoZSBvcGVyYXRpb24s IG9yIGl0IGNhbiBiZSBwb3N0LWluY3JlbWVudGVkIG9yIHByZWRlY3JlbWVudGVkLiAgKi8KKy8q ICBUaGVzZSBmZWF0dXJlcyBhcmUgZXNwZWNpYWxseSBzdWl0ZWQgZm9yIGFjY2Vzc2luZyBhcnJh eXMsIHRhYmxlcywgYW5kIFN0YWNrIFBvaW50ZXIgdXNhZ2Ugb2YgdGhlICAqLworLyogIFktcG9p bnRlciBSZWdpc3Rlci4gTm90ZSB0aGF0IG9ubHkgdGhlIGxvdyBieXRlIG9mIHRoZSBZLXBvaW50 ZXIgaXMgdXBkYXRlZCBpbiBkZXZpY2VzIHdpdGggbm8gbW9yZSB0aGFuIDI1NiAgKi8KKy8qICBi eXRlcyBkYXRhIHNwYWNlLiBGb3Igc3VjaCBkZXZpY2VzLCB0aGUgaGlnaCBieXRlIG9mIHRoZSBw b2ludGVyIGlzIG5vdCB1c2VkIGJ5IHRoaXMgaW5zdHJ1Y3Rpb24gYW5kIGNhbiBiZSB1c2VkICAq LworLyogIGZvciBvdGhlciBwdXJwb3Nlcy4gVGhlIFJBTVBZIFJlZ2lzdGVyIGluIHRoZSBJL08g YXJlYSBpcyB1cGRhdGVkIGluIHBhcnRzIHdpdGggbW9yZSB0aGFuIDY0S0IgZGF0YSBzcGFjZSBv ciAgKi8KKy8qICBtb3JlIHRoYW4gNjRLQiBQcm9ncmFtIG1lbW9yeSwgYW5kIHRoZSBpbmNyZW1l bnQvZGVjcmVtZW50L2Rpc3BsYWNlbWVudCBpcyBhZGRlZCB0byB0aGUgZW50aXJlIDI0LWJpdCAg Ki8KKy8qICBhZGRyZXNzIG9uIHN1Y2ggZGV2aWNlcy4gICovCisvKiAgTm90IGFsbCB2YXJpYW50 cyBvZiB0aGlzIGluc3RydWN0aW9uIGlzIGF2YWlsYWJsZSBpbiBhbGwgZGV2aWNlcy4gUmVmZXIg dG8gdGhlIGRldmljZSBzcGVjaWZpYyBpbnN0cnVjdGlvbiBzZXQgc3VtbWFyeS4gICovCisvKiAg SW4gdGhlIFJlZHVjZWQgQ29yZSB0aW55QVZSIHRoZSBMRCBpbnN0cnVjdGlvbiBjYW4gYmUgdXNl ZCB0byBhY2hpZXZlIHRoZSBzYW1lIG9wZXJhdGlvbiBhcyBMUE0gc2luY2UgdGhlICAqLworLyog IHByb2dyYW0gbWVtb3J5IGlzIG1hcHBlZCB0byB0aGUgZGF0YSBtZW1vcnkgc3BhY2UuICAqLwor aW50ICAgICBhdnJfZXhlY3V0ZV9MRFkyXzEwMDEwMDBhYWFhYTEwMDEoQ1BVQVZSU3RhdGUgKmVu diwgRGlzYXNDb250ZXh0ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGF2cl9vcGNvZGVfTERZMl8xMDAxMDAwYWFhYWExMDAxX3QgY29uc3QgKmluc3QpCit7 CisgICAgVENHdiAgICBSZCAgPSBjcHVfcltpbnN0LT5SZF07CisgICAgVENHdiAgICBhZGRyPSB0 Y2dfdGVtcF9uZXdfaTMyKCk7CisgICAgVENHdiAgICBIICAgPSBjcHVfcmFtcFk7CisgICAgVENH diAgICBNICAgPSBjcHVfclsyOV07CisgICAgVENHdiAgICBMICAgPSBjcHVfclsyOF07CisKKyAg ICB0Y2dfZ2VuX21vdl90bCggYWRkciwgICBIKTsgICAgICAgICAgICAgICAgICAgICAvKiAgYWRk ciAgICA9IEg6TTpMICAqLworICAgIHRjZ19nZW5fc2hsaV90bChhZGRyLCAgIGFkZHIsICAgOCk7 CisgICAgdGNnX2dlbl9vcl90bCggIGFkZHIsICAgYWRkciwgICBNKTsKKyAgICB0Y2dfZ2VuX3No bGlfdGwoYWRkciwgICBhZGRyLCAgIDgpOworICAgIHRjZ19nZW5fb3JfdGwoICBhZGRyLCAgIGFk ZHIsICAgTCk7CisKKyAgICB0Y2dfZ2VuX3FlbXVfbGQ4dSgKKyAgICAgICAgICAgICAgICAgICAg UmQsICAgICBhZGRyLCAgIERBVEFfSU5ERVgpOworICAgIHRjZ19nZW5fYWRkaV90bChhZGRyLCAg IGFkZHIsICAgMSk7ICAgICAgICAgICAgIC8qICBhZGRyICAgID0gYWRkciArIDEgICovCisKKyAg ICBnZW5fc3BsaXRfYWRkciggYWRkciwgICBILCAgICAgIE0sICAgICAgTCk7CisKKyAgICB0Y2df dGVtcF9mcmVlX2kzMihhZGRyKTsKKworICAgIHJldHVybiAgQlNfTk9ORTsKK30KKworaW50ICAg ICBhdnJfZXhlY3V0ZV9MRFkzXzEwMDEwMDBhYWFhYTEwMTAoQ1BVQVZSU3RhdGUgKmVudiwgRGlz YXNDb250ZXh0ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGF2cl9vcGNvZGVfTERZM18xMDAxMDAwYWFhYWExMDEwX3QgY29uc3QgKmluc3QpCit7CisgICAg VENHdiAgICBSZCAgPSBjcHVfcltpbnN0LT5SZF07CisgICAgVENHdiAgICBhZGRyPSB0Y2dfdGVt cF9uZXdfaTMyKCk7CisgICAgVENHdiAgICBIICAgPSBjcHVfcmFtcFk7CisgICAgVENHdiAgICBN ICAgPSBjcHVfclsyOV07CisgICAgVENHdiAgICBMICAgPSBjcHVfclsyOF07CisKKyAgICB0Y2df Z2VuX21vdl90bCggYWRkciwgICBIKTsgICAgICAgICAgICAgICAgICAgICAvKiAgYWRkciAgICA9 IEg6TTpMICAqLworICAgIHRjZ19nZW5fc2hsaV90bChhZGRyLCAgIGFkZHIsICAgOCk7CisgICAg dGNnX2dlbl9vcl90bCggIGFkZHIsICAgYWRkciwgICBNKTsKKyAgICB0Y2dfZ2VuX3NobGlfdGwo YWRkciwgICBhZGRyLCAgIDgpOworICAgIHRjZ19nZW5fb3JfdGwoICBhZGRyLCAgIGFkZHIsICAg TCk7CisKKyAgICB0Y2dfZ2VuX3N1YmlfdGwoYWRkciwgICBhZGRyLCAgIDEpOyAgICAgICAgICAg ICAvKiAgYWRkciAgICA9IGFkZHIgLSAxICAqLworICAgIHRjZ19nZW5fcWVtdV9sZDh1KAorICAg ICAgICAgICAgICAgICAgICBSZCwgICAgIGFkZHIsICAgREFUQV9JTkRFWCk7CisKKyAgICBnZW5f c3BsaXRfYWRkciggYWRkciwgICBILCAgICAgIE0sICAgICAgTCk7CisKKyAgICB0Y2dfdGVtcF9m cmVlX2kzMihhZGRyKTsKKworICAgIHJldHVybiAgQlNfTk9ORTsKK30KKworaW50ICAgICBhdnJf ZXhlY3V0ZV9MRERZXzEwYTBiYjBjY2NjYzFkZGQoQ1BVQVZSU3RhdGUgKmVudiwgRGlzYXNDb250 ZXh0ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2cl9v cGNvZGVfTEREWV8xMGEwYmIwY2NjY2MxZGRkX3QgY29uc3QgKmluc3QpCit7CisgICAgVENHdiAg ICBSZCAgPSBjcHVfcltpbnN0LT5SZF07CisgICAgVENHdiAgICBhZGRyPSB0Y2dfdGVtcF9uZXdf aTMyKCk7CisgICAgVENHdiAgICBIICAgPSBjcHVfcmFtcFk7CisgICAgVENHdiAgICBNICAgPSBj cHVfclsyOV07CisgICAgVENHdiAgICBMICAgPSBjcHVfclsyOF07CisKKyAgICB0Y2dfZ2VuX21v dl90bCggYWRkciwgICBIKTsgICAgICAgICAgICAgICAgICAgICAvKiAgYWRkciAgICA9IEg6TTpM ICAqLworICAgIHRjZ19nZW5fc2hsaV90bChhZGRyLCAgIGFkZHIsICAgOCk7CisgICAgdGNnX2dl bl9vcl90bCggIGFkZHIsICAgYWRkciwgICBNKTsKKyAgICB0Y2dfZ2VuX3NobGlfdGwoYWRkciwg ICBhZGRyLCAgIDgpOworICAgIHRjZ19nZW5fb3JfdGwoICBhZGRyLCAgIGFkZHIsICAgTCk7CisK KyAgICB0Y2dfZ2VuX2FkZGlfdGwoYWRkciwgICBhZGRyLCAgIChpbnN0LT5oSW1tIDw8IDUpIHwg KGluc3QtPm1JbW0gPDwgMikgfCBpbnN0LT5sSW1tKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgYWRkciAgICA9IGFkZHIgKyBxICAqLwor ICAgIHRjZ19nZW5fcWVtdV9sZDh1KAorICAgICAgICAgICAgICAgICAgICBSZCwgICAgIGFkZHIs ICAgREFUQV9JTkRFWCk7CisKKyAgICB0Y2dfdGVtcF9mcmVlX2kzMihhZGRyKTsKKworICAgIHJl dHVybiAgQlNfTk9ORTsKK30KKworCisvKiAgTG9hZHMgb25lIGJ5dGUgaW5kaXJlY3Qgd2l0aCBv ciB3aXRob3V0IGRpc3BsYWNlbWVudCBmcm9tIHRoZSBkYXRhIHNwYWNlIHRvIGEgcmVnaXN0ZXIu IEZvciBwYXJ0cyB3aXRoIFNSQU0sIHRoZSAgKi8KKy8qICBkYXRhIHNwYWNlIGNvbnNpc3RzIG9m IHRoZSBSZWdpc3RlciBGaWxlLCBJL08gbWVtb3J5IGFuZCBpbnRlcm5hbCBTUkFNIChhbmQgZXh0 ZXJuYWwgU1JBTSBpZiBhcHBsaWNhYmxlKS4gRm9yICAqLworLyogIHBhcnRzIHdpdGhvdXQgU1JB TSwgdGhlIGRhdGEgc3BhY2UgY29uc2lzdHMgb2YgdGhlIFJlZ2lzdGVyIEZpbGUgb25seS4gSW4g c29tZSBwYXJ0cyB0aGUgRmxhc2ggTWVtb3J5IGhhcyAgKi8KKy8qICBiZWVuIG1hcHBlZCB0byB0 aGUgZGF0YSBzcGFjZSBhbmQgY2FuIGJlIHJlYWQgdXNpbmcgdGhpcyBjb21tYW5kLiBUaGUgRUVQ Uk9NIGhhcyBhIHNlcGFyYXRlIGFkZHJlc3MgICovCisvKiAgc3BhY2UuICAqLworLyogIFRoZSBk YXRhIGxvY2F0aW9uIGlzIHBvaW50ZWQgdG8gYnkgdGhlIFogKDE2IGJpdHMpIFBvaW50ZXIgUmVn aXN0ZXIgaW4gdGhlIFJlZ2lzdGVyIEZpbGUuIE1lbW9yeSBhY2Nlc3MgaXMgbGltaXRlZCAgKi8K Ky8qICB0byB0aGUgY3VycmVudCBkYXRhIHNlZ21lbnQgb2YgNjRLQi4gVG8gYWNjZXNzIGFub3Ro ZXIgZGF0YSBzZWdtZW50IGluIGRldmljZXMgd2l0aCBtb3JlIHRoYW4gNjRLQiBkYXRhICAqLwor LyogIHNwYWNlLCB0aGUgUkFNUFogaW4gcmVnaXN0ZXIgaW4gdGhlIEkvTyBhcmVhIGhhcyB0byBi ZSBjaGFuZ2VkLiAgKi8KKy8qICBUaGUgWi1wb2ludGVyIFJlZ2lzdGVyIGNhbiBlaXRoZXIgYmUg bGVmdCB1bmNoYW5nZWQgYnkgdGhlIG9wZXJhdGlvbiwgb3IgaXQgY2FuIGJlIHBvc3QtaW5jcmVt ZW50ZWQgb3IgcHJlZGVjcmVtZW50ZWQuICAqLworLyogIFRoZXNlIGZlYXR1cmVzIGFyZSBlc3Bl Y2lhbGx5IHN1aXRlZCBmb3IgU3RhY2sgUG9pbnRlciB1c2FnZSBvZiB0aGUgWi1wb2ludGVyIFJl Z2lzdGVyLCBob3dldmVyICAqLworLyogIGJlY2F1c2UgdGhlIFotcG9pbnRlciBSZWdpc3RlciBj YW4gYmUgdXNlZCBmb3IgaW5kaXJlY3Qgc3Vicm91dGluZSBjYWxscywgaW5kaXJlY3QganVtcHMg YW5kIHRhYmxlIGxvb2t1cCwgaXQgaXMgICovCisvKiAgb2Z0ZW4gbW9yZSBjb252ZW5pZW50IHRv IHVzZSB0aGUgWCBvciBZLXBvaW50ZXIgYXMgYSBkZWRpY2F0ZWQgU3RhY2sgUG9pbnRlci4gTm90 ZSB0aGF0IG9ubHkgdGhlIGxvdyBieXRlIG9mIHRoZSAgKi8KKy8qICBaLXBvaW50ZXIgaXMgdXBk YXRlZCBpbiBkZXZpY2VzIHdpdGggbm8gbW9yZSB0aGFuIDI1NiBieXRlcyBkYXRhIHNwYWNlLiBG b3Igc3VjaCBkZXZpY2VzLCB0aGUgaGlnaCBieXRlIG9mIHRoZSAgKi8KKy8qICBwb2ludGVyIGlz IG5vdCB1c2VkIGJ5IHRoaXMgaW5zdHJ1Y3Rpb24gYW5kIGNhbiBiZSB1c2VkIGZvciBvdGhlciBw dXJwb3Nlcy4gVGhlIFJBTVBaIFJlZ2lzdGVyIGluIHRoZSBJL08gYXJlYSAgKi8KKy8qICBpcyB1 cGRhdGVkIGluIHBhcnRzIHdpdGggbW9yZSB0aGFuIDY0S0IgZGF0YSBzcGFjZSBvciBtb3JlIHRo YW4gNjRLQiBQcm9ncmFtIG1lbW9yeSwgYW5kIHRoZSAgKi8KKy8qICBpbmNyZW1lbnQvZGVjcmVt ZW50L2Rpc3BsYWNlbWVudCBpcyBhZGRlZCB0byB0aGUgZW50aXJlIDI0LWJpdCBhZGRyZXNzIG9u IHN1Y2ggZGV2aWNlcy4gICovCisvKiAgTm90IGFsbCB2YXJpYW50cyBvZiB0aGlzIGluc3RydWN0 aW9uIGlzIGF2YWlsYWJsZSBpbiBhbGwgZGV2aWNlcy4gUmVmZXIgdG8gdGhlIGRldmljZSBzcGVj aWZpYyBpbnN0cnVjdGlvbiBzZXQgc3VtbWFyeS4gICovCisvKiAgSW4gdGhlIFJlZHVjZWQgQ29y ZSB0aW55QVZSIHRoZSBMRCBpbnN0cnVjdGlvbiBjYW4gYmUgdXNlZCB0byBhY2hpZXZlIHRoZSBz YW1lIG9wZXJhdGlvbiBhcyBMUE0gc2luY2UgdGhlICAqLworLyogIHByb2dyYW0gbWVtb3J5IGlz IG1hcHBlZCB0byB0aGUgZGF0YSBtZW1vcnkgc3BhY2UuICAqLworLyogIEZvciB1c2luZyB0aGUg Wi1wb2ludGVyIGZvciB0YWJsZSBsb29rdXAgaW4gUHJvZ3JhbSBtZW1vcnkgc2VlIHRoZSBMUE0g YW5kIEVMUE0gaW5zdHJ1Y3Rpb25zLiAgKi8KK2ludCAgICAgYXZyX2V4ZWN1dGVfTERaMl8xMDAx MDAwYWFhYWEwMDAxKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4LAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdnJfb3Bjb2RlX0xEWjJfMTAwMTAw MGFhYWFhMDAwMV90IGNvbnN0ICppbnN0KQoreworICAgIFRDR3YgICAgUmQgID0gY3B1X3JbaW5z dC0+UmRdOworICAgIFRDR3YgICAgYWRkcj0gdGNnX3RlbXBfbmV3X2kzMigpOworICAgIFRDR3Yg ICAgSCAgID0gY3B1X3JhbXBaOworICAgIFRDR3YgICAgTSAgID0gY3B1X3JbMzFdOworICAgIFRD R3YgICAgTCAgID0gY3B1X3JbMzBdOworCisgICAgdGNnX2dlbl9tb3ZfdGwoIGFkZHIsICAgSCk7 ICAgICAgICAgICAgICAgICAgICAgLyogIGFkZHIgICAgPSBIOk06TCAgKi8KKyAgICB0Y2dfZ2Vu X3NobGlfdGwoYWRkciwgICBhZGRyLCAgIDgpOworICAgIHRjZ19nZW5fb3JfdGwoICBhZGRyLCAg IGFkZHIsICAgTSk7CisgICAgdGNnX2dlbl9zaGxpX3RsKGFkZHIsICAgYWRkciwgICA4KTsKKyAg ICB0Y2dfZ2VuX29yX3RsKCAgYWRkciwgICBhZGRyLCAgIEwpOworCisgICAgdGNnX2dlbl9xZW11 X2xkOHUoCisgICAgICAgICAgICAgICAgICAgIFJkLCAgICAgYWRkciwgICBEQVRBX0lOREVYKTsK KyAgICB0Y2dfZ2VuX2FkZGlfdGwoYWRkciwgICBhZGRyLCAgIDEpOyAgICAgICAgICAgICAvKiAg YWRkciAgICA9IGFkZHIgKyAxICAqLworCisgICAgZ2VuX3NwbGl0X2FkZHIoIGFkZHIsICAgSCwg ICAgICBNLCAgICAgIEwpOworCisgICAgdGNnX3RlbXBfZnJlZV9pMzIoYWRkcik7CisKKyAgICBy ZXR1cm4gIEJTX05PTkU7Cit9CisKK2ludCAgICAgYXZyX2V4ZWN1dGVfTERaM18xMDAxMDAwYWFh YWEwMDEwKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdnJfb3Bjb2RlX0xEWjNfMTAwMTAwMGFhYWFh MDAxMF90IGNvbnN0ICppbnN0KQoreworICAgIFRDR3YgICAgUmQgID0gY3B1X3JbaW5zdC0+UmRd OworICAgIFRDR3YgICAgYWRkcj0gdGNnX3RlbXBfbmV3X2kzMigpOworICAgIFRDR3YgICAgSCAg ID0gY3B1X3JhbXBaOworICAgIFRDR3YgICAgTSAgID0gY3B1X3JbMzFdOworICAgIFRDR3YgICAg TCAgID0gY3B1X3JbMzBdOworCisgICAgdGNnX2dlbl9tb3ZfdGwoIGFkZHIsICAgSCk7ICAgICAg ICAgICAgICAgICAgICAgLyogIGFkZHIgICAgPSBIOk06TCAgKi8KKyAgICB0Y2dfZ2VuX3NobGlf dGwoYWRkciwgICBhZGRyLCAgIDgpOworICAgIHRjZ19nZW5fb3JfdGwoICBhZGRyLCAgIGFkZHIs ICAgTSk7CisgICAgdGNnX2dlbl9zaGxpX3RsKGFkZHIsICAgYWRkciwgICA4KTsKKyAgICB0Y2df Z2VuX29yX3RsKCAgYWRkciwgICBhZGRyLCAgIEwpOworCisgICAgdGNnX2dlbl9zdWJpX3RsKGFk ZHIsICAgYWRkciwgICAxKTsgICAgICAgICAgICAgLyogIGFkZHIgICAgPSBhZGRyIC0gMSAgKi8K KyAgICB0Y2dfZ2VuX3FlbXVfbGQ4dSgKKyAgICAgICAgICAgICAgICAgICAgUmQsICAgICBhZGRy LCAgIERBVEFfSU5ERVgpOworCisgICAgZ2VuX3NwbGl0X2FkZHIoIGFkZHIsICAgSCwgICAgICBN LCAgICAgIEwpOworCisgICAgdGNnX3RlbXBfZnJlZV9pMzIoYWRkcik7CisKKyAgICByZXR1cm4g IEJTX05PTkU7Cit9CisKK2ludCAgICAgYXZyX2V4ZWN1dGVfTEREWl8xMGEwYmIwY2NjY2MwZGRk KENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4LAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBhdnJfb3Bjb2RlX0xERFpfMTBhMGJiMGNjY2NjMGRkZF90 IGNvbnN0ICppbnN0KQoreworICAgIFRDR3YgICAgUmQgID0gY3B1X3JbaW5zdC0+UmRdOworICAg IFRDR3YgICAgYWRkcj0gdGNnX3RlbXBfbmV3X2kzMigpOworICAgIFRDR3YgICAgSCAgID0gY3B1 X3JhbXBaOworICAgIFRDR3YgICAgTSAgID0gY3B1X3JbMzFdOworICAgIFRDR3YgICAgTCAgID0g Y3B1X3JbMzBdOworCisgICAgdGNnX2dlbl9tb3ZfdGwoIGFkZHIsICAgSCk7ICAgICAgICAgICAg ICAgICAgICAgLyogIGFkZHIgICAgPSBIOk06TCAgKi8KKyAgICB0Y2dfZ2VuX3NobGlfdGwoYWRk ciwgICBhZGRyLCAgIDgpOworICAgIHRjZ19nZW5fb3JfdGwoICBhZGRyLCAgIGFkZHIsICAgTSk7 CisgICAgdGNnX2dlbl9zaGxpX3RsKGFkZHIsICAgYWRkciwgICA4KTsKKyAgICB0Y2dfZ2VuX29y X3RsKCAgYWRkciwgICBhZGRyLCAgIEwpOworCisgICAgdGNnX2dlbl9hZGRpX3RsKGFkZHIsICAg YWRkciwgICAoaW5zdC0+aEltbSA8PCA1KSB8IChpbnN0LT5tSW1tIDw8IDIpIHwgaW5zdC0+bElt bSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LyogIGFkZHIgICAgPSBhZGRyICsgcSAgKi8KKyAgICB0Y2dfZ2VuX3FlbXVfbGQ4dSgKKyAgICAg ICAgICAgICAgICAgICAgUmQsICAgICBhZGRyLCAgIERBVEFfSU5ERVgpOworCisgICAgdGNnX3Rl bXBfZnJlZV9pMzIoYWRkcik7CisKKyAgICByZXR1cm4gIEJTX05PTkU7Cit9CisKKworLyogIExv YWRzIGFuIDggYml0IGNvbnN0YW50IGRpcmVjdGx5IHRvIHJlZ2lzdGVyIDE2IHRvIDMxLiAgKi8K K2ludCAgICAgYXZyX2V4ZWN1dGVfTERJXzExMTBhYWFhYmJiYmNjY2MoQ1BVQVZSU3RhdGUgKmVu diwgRGlzYXNDb250ZXh0ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGF2cl9vcGNvZGVfTERJXzExMTBhYWFhYmJiYmNjY2NfdCBjb25zdCAqaW5zdCkKK3sK KyAgICBUQ0d2ICAgIFJkICA9IGNwdV9yWzE2ICsgaW5zdC0+UmRdOworICAgIGludCAgICAgaW1t ID0gKGluc3QtPmhJbW0gPDwgNCkgfCBpbnN0LT5sSW1tOworCisgICAgdGNnX2dlbl9tb3ZpX3Rs KFJkLCAgICAgaW1tKTsKKworICAgIHJldHVybiAgQlNfTk9ORTsKK30KKworCisvKiAgTG9hZHMg b25lIGJ5dGUgZnJvbSB0aGUgZGF0YSBzcGFjZSB0byBhIHJlZ2lzdGVyLiBGb3IgcGFydHMgd2l0 aCBTUkFNLCB0aGUgZGF0YSBzcGFjZSBjb25zaXN0cyBvZiB0aGUgUmVnaXN0ZXIgICovCisvKiAg RmlsZSwgSS9PIG1lbW9yeSBhbmQgaW50ZXJuYWwgU1JBTSAoYW5kIGV4dGVybmFsIFNSQU0gaWYg YXBwbGljYWJsZSkuIEZvciBwYXJ0cyB3aXRob3V0IFNSQU0sIHRoZSBkYXRhIHNwYWNlICAqLwor LyogIGNvbnNpc3RzIG9mIHRoZSByZWdpc3RlciBmaWxlIG9ubHkuIFRoZSBFRVBST00gaGFzIGEg c2VwYXJhdGUgYWRkcmVzcyBzcGFjZS4gICovCisvKiAgQSAxNi1iaXQgYWRkcmVzcyBtdXN0IGJl IHN1cHBsaWVkLiBNZW1vcnkgYWNjZXNzIGlzIGxpbWl0ZWQgdG8gdGhlIGN1cnJlbnQgZGF0YSBz ZWdtZW50IG9mIDY0S0IuIFRoZSBMRFMgICovCisvKiAgaW5zdHJ1Y3Rpb24gdXNlcyB0aGUgUkFN UEQgUmVnaXN0ZXIgdG8gYWNjZXNzIG1lbW9yeSBhYm92ZSA2NEtCLiBUbyBhY2Nlc3MgYW5vdGhl ciBkYXRhIHNlZ21lbnQgaW4gICovCisvKiAgZGV2aWNlcyB3aXRoIG1vcmUgdGhhbiA2NEtCIGRh dGEgc3BhY2UsIHRoZSBSQU1QRCBpbiByZWdpc3RlciBpbiB0aGUgSS9PIGFyZWEgaGFzIHRvIGJl IGNoYW5nZWQuICAqLworLyogIFRoaXMgaW5zdHJ1Y3Rpb24gaXMgbm90IGF2YWlsYWJsZSBpbiBh bGwgZGV2aWNlcy4gUmVmZXIgdG8gdGhlIGRldmljZSBzcGVjaWZpYyBpbnN0cnVjdGlvbiBzZXQg c3VtbWFyeS4gICovCitpbnQgICAgIGF2cl9leGVjdXRlX0xEU18xMDAxMDAwYWFhYWEwMDAwYmJi YmJiYmJiYmJiYmJiYihDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZyX29wY29kZV9MRFNfMTAwMTAw MGFhYWFhMDAwMGJiYmJiYmJiYmJiYmJiYmJfdCBjb25zdCAqaW5zdCkKK3sKKyAgICBUQ0d2ICAg IFJkICA9IGNwdV9yW2luc3QtPlJkXTsKKyAgICBUQ0d2ICAgIGFkZHI9IHRjZ190ZW1wX25ld19p MzIoKTsKKyAgICBUQ0d2ICAgIEggICA9IGNwdV9yYW1wRDsKKworICAgIHRjZ19nZW5fbW92X3Rs KCBhZGRyLCAgIEgpOyAgICAgICAgICAgICAgICAgICAgIC8qICBhZGRyICAgID0gSDpNOkwgICov CisgICAgdGNnX2dlbl9zaGxpX3RsKGFkZHIsICAgYWRkciwgICAxNik7CisgICAgdGNnX2dlbl9v cmlfdGwoIGFkZHIsICAgYWRkciwgICBpbnN0LT5JbW0pOworCisgICAgdGNnX2dlbl9xZW11X2xk OHUoCisgICAgICAgICAgICAgICAgICAgIFJkLCAgICAgYWRkciwgICBEQVRBX0lOREVYKTsKKwor ICAgIHRjZ190ZW1wX2ZyZWVfaTMyKGFkZHIpOworCisgICAgcmV0dXJuICBCU19OT05FOworfQor CisKKy8qICBMb2FkcyBvbmUgYnl0ZSBwb2ludGVkIHRvIGJ5IHRoZSBaLXJlZ2lzdGVyIGludG8g dGhlIGRlc3RpbmF0aW9uIHJlZ2lzdGVyIFJkLiBUaGlzIGluc3RydWN0aW9uIGZlYXR1cmVzIGEg MTAwJSAgKi8KKy8qICBzcGFjZSBlZmZlY3RpdmUgY29uc3RhbnQgaW5pdGlhbGl6YXRpb24gb3Ig Y29uc3RhbnQgZGF0YSBmZXRjaC4gVGhlIFByb2dyYW0gbWVtb3J5IGlzIG9yZ2FuaXplZCBpbiAx Ni1iaXQgd29yZHMgICovCisvKiAgd2hpbGUgdGhlIFotcG9pbnRlciBpcyBhIGJ5dGUgYWRkcmVz cy4gVGh1cywgdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdCBvZiB0aGUgWi1wb2ludGVyIHNlbGVj dHMgZWl0aGVyIGxvdyBieXRlIChaTFNCICAqLworLyogID0gMCkgb3IgaGlnaCBieXRlIChaTFNC ID0gMSkuIFRoaXMgaW5zdHJ1Y3Rpb24gY2FuIGFkZHJlc3MgdGhlIGZpcnN0IDY0S0IgKDMySyB3 b3Jkcykgb2YgUHJvZ3JhbSBtZW1vcnkuIFRoZSBacG9pbnRlciAgKi8KKy8qICBSZWdpc3RlciBj YW4gZWl0aGVyIGJlIGxlZnQgdW5jaGFuZ2VkIGJ5IHRoZSBvcGVyYXRpb24sIG9yIGl0IGNhbiBi ZSBpbmNyZW1lbnRlZC4gVGhlIGluY3JlbWVudGF0aW9uICAqLworLyogIGRvZXMgbm90IGFwcGx5 IHRvIHRoZSBSQU1QWiBSZWdpc3Rlci4gICovCisvKiAgRGV2aWNlcyB3aXRoIFNlbGYtUHJvZ3Jh bW1pbmcgY2FwYWJpbGl0eSBjYW4gdXNlIHRoZSBMUE0gaW5zdHJ1Y3Rpb24gdG8gcmVhZCB0aGUg RnVzZSBhbmQgTG9jayBiaXQgdmFsdWVzLiAgKi8KKy8qICBSZWZlciB0byB0aGUgZGV2aWNlIGRv Y3VtZW50YXRpb24gZm9yIGEgZGV0YWlsZWQgZGVzY3JpcHRpb24uICAqLworLyogIFRoZSBMUE0g aW5zdHJ1Y3Rpb24gaXMgbm90IGF2YWlsYWJsZSBpbiBhbGwgZGV2aWNlcy4gUmVmZXIgdG8gdGhl IGRldmljZSBzcGVjaWZpYyBpbnN0cnVjdGlvbiBzZXQgc3VtbWFyeSAgKi8KK2ludCAgICAgYXZy X2V4ZWN1dGVfTFBNMV8xMDAxMDEwMTExMDAxMDAwKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29u dGV4dCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdnJf b3Bjb2RlX0xQTTFfMTAwMTAxMDExMTAwMTAwMF90IGNvbnN0ICppbnN0KQoreworICAgIGlmIChh dnJfZmVhdHVyZShlbnYsIEFWUl9GRUFUVVJFX0xQTSkgPT0gZmFsc2UpIHsKKyAgICAgICAgZ2Vu X2hlbHBlcl91bnN1cHBvcnRlZChjcHVfZW52KTsKKworICAgICAgICByZXR1cm4gQlNfRVhDUDsK KyAgICB9CisKKyAgICBUQ0d2ICAgIFJkICA9IGNwdV9yWzBdOworICAgIFRDR3YgICAgYWRkcj0g dGNnX3RlbXBfbmV3X2kzMigpOworICAgIFRDR3YgICAgSCAgID0gY3B1X3JbMzFdOworICAgIFRD R3YgICAgTCAgID0gY3B1X3JbMzBdOworCisgICAgdGNnX2dlbl9zaGxpX3RsKGFkZHIsICAgSCwg ICAgICA4KTsgICAgICAgICAgICAgLyogIGFkZHIgICAgPSBIOkwgICovCisgICAgdGNnX2dlbl9v cl90bCggIGFkZHIsICAgYWRkciwgICBMKTsKKworICAgIHRjZ19nZW5fcWVtdV9sZDh1KFJkLCAg IGFkZHIsICAgQ09ERV9JTkRFWCk7ICAgIC8qICBSZCAgICAgID0gbWVtW2FkZHJdICAqLworCisg ICAgdGNnX3RlbXBfZnJlZV9pMzIoYWRkcik7CisKKyAgICByZXR1cm4gIEJTX05PTkU7Cit9CisK K2ludCAgICAgYXZyX2V4ZWN1dGVfTFBNMl8xMDAxMDAwYWFhYWEwMTAwKENQVUFWUlN0YXRlICpl bnYsIERpc2FzQ29udGV4dCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBhdnJfb3Bjb2RlX0xQTTJfMTAwMTAwMGFhYWFhMDEwMF90IGNvbnN0ICppbnN0KQor eworICAgIGlmIChhdnJfZmVhdHVyZShlbnYsIEFWUl9GRUFUVVJFX0xQTSkgPT0gZmFsc2UpIHsK KyAgICAgICAgZ2VuX2hlbHBlcl91bnN1cHBvcnRlZChjcHVfZW52KTsKKworICAgICAgICByZXR1 cm4gQlNfRVhDUDsKKyAgICB9CisKKyAgICBUQ0d2ICAgIFJkICA9IGNwdV9yW2luc3QtPlJkXTsK KyAgICBUQ0d2ICAgIGFkZHI9IHRjZ190ZW1wX25ld19pMzIoKTsKKyAgICBUQ0d2ICAgIEggICA9 IGNwdV9yWzMxXTsKKyAgICBUQ0d2ICAgIEwgICA9IGNwdV9yWzMwXTsKKworICAgIHRjZ19nZW5f c2hsaV90bChhZGRyLCAgIEgsICAgICAgOCk7ICAgICAgICAgICAgIC8qICBhZGRyICAgID0gSDpM ICAqLworICAgIHRjZ19nZW5fb3JfdGwoICBhZGRyLCAgIGFkZHIsICAgTCk7CisKKyAgICB0Y2df Z2VuX3FlbXVfbGQ4dShSZCwgICBhZGRyLCAgIENPREVfSU5ERVgpOyAgICAvKiAgUmQgICAgICA9 IG1lbVthZGRyXSAgKi8KKworICAgIHRjZ190ZW1wX2ZyZWVfaTMyKGFkZHIpOworCisKKyAgICBy ZXR1cm4gIEJTX05PTkU7Cit9CisKK2ludCAgICAgYXZyX2V4ZWN1dGVfTFBNWF8xMDAxMDAwYWFh YWEwMTAxKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdnJfb3Bjb2RlX0xQTVhfMTAwMTAwMGFhYWFh MDEwMV90IGNvbnN0ICppbnN0KQoreworICAgIGlmIChhdnJfZmVhdHVyZShlbnYsIEFWUl9GRUFU VVJFX0xQTVgpID09IGZhbHNlKSB7CisgICAgICAgIGdlbl9oZWxwZXJfdW5zdXBwb3J0ZWQoY3B1 X2Vudik7CisKKyAgICAgICAgcmV0dXJuIEJTX0VYQ1A7CisgICAgfQorCisgICAgVENHdiAgICBS ZCAgPSBjcHVfcltpbnN0LT5SZF07CisgICAgVENHdiAgICBhZGRyPSB0Y2dfdGVtcF9uZXdfaTMy KCk7CisgICAgVENHdiAgICBIICAgPSBjcHVfclszMV07CisgICAgVENHdiAgICBMICAgPSBjcHVf clszMF07CisKKyAgICB0Y2dfZ2VuX3NobGlfdGwoYWRkciwgICBILCAgICAgIDgpOyAgICAgICAg ICAgICAvKiAgYWRkciAgICA9IEg6TCAgKi8KKyAgICB0Y2dfZ2VuX29yX3RsKCAgYWRkciwgICBh ZGRyLCAgIEwpOworCisgICAgdGNnX2dlbl9xZW11X2xkOHUoUmQsICAgYWRkciwgICBDT0RFX0lO REVYKTsgICAgLyogIFJkICAgICAgPSBtZW1bYWRkcl0gICovCisKKyAgICB0Y2dfZ2VuX2FkZGlf dGwoYWRkciwgICBhZGRyLCAgIDEpOyAgICAgICAgICAgICAvKiAgYWRkciAgICA9IGFkZHIgKyAx ICAqLworCisgICAgdGNnX2dlbl9hbmRpX3RsKEwsICAgICAgYWRkciwgICAweGZmKTsKKworICAg IHRjZ19nZW5fc2hyaV90bChhZGRyLCAgIGFkZHIsICAgOCk7CisgICAgdGNnX2dlbl9hbmRpX3Rs KEgsICAgICAgYWRkciwgICAweGZmKTsKKworICAgIHRjZ190ZW1wX2ZyZWVfaTMyKGFkZHIpOwor CisgICAgcmV0dXJuICBCU19OT05FOworfQorCisKKy8qICBTaGlmdHMgYWxsIGJpdHMgaW4gUmQg b25lIHBsYWNlIHRvIHRoZSByaWdodC4gQml0IDcgaXMgY2xlYXJlZC4gQml0IDAgaXMgbG9hZGVk IGludG8gdGhlIEMgRmxhZyBvZiB0aGUgU1JFRy4gVGhpcyAgKi8KKy8qICBvcGVyYXRpb24gZWZm ZWN0aXZlbHkgZGl2aWRlcyBhbiB1bnNpZ25lZCB2YWx1ZSBieSB0d28uIFRoZSBDIEZsYWcgY2Fu IGJlIHVzZWQgdG8gcm91bmQgdGhlIHJlc3VsdC4gICovCitpbnQgICAgIGF2cl9leGVjdXRlX0xT Ul8xMDAxMDEwYWFhYWEwMTEwKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdnJfb3Bjb2RlX0xTUl8x MDAxMDEwYWFhYWEwMTEwX3QgY29uc3QgKmluc3QpCit7CisgICAgVENHdiAgICBSZCAgPSBjcHVf cltpbnN0LT5SZF07CisKKyAgICB0Y2dfZ2VuX2FuZGlfdGwoY3B1X0NmLCBSZCwgICAgIDEpOwor CisgICAgdGNnX2dlbl9zaHJpX3RsKFJkLCAgICAgUmQsICAgICAxKTsKKworICAgIGdlbl9aTlNm KCAgICAgICBSZCk7CisgICAgdGNnX2dlbl94b3JfdGwoIGNwdV9WZiwgY3B1X05mLCBjcHVfQ2Yp OworICAgIHJldHVybiAgQlNfTk9ORTsKK30KKworCisvKiAgVGhpcyBpbnN0cnVjdGlvbiBtYWtl cyBhIGNvcHkgb2Ygb25lIHJlZ2lzdGVyIGludG8gYW5vdGhlci4gVGhlIHNvdXJjZSByZWdpc3Rl ciBSciBpcyBsZWZ0IHVuY2hhbmdlZCwgd2hpbGUgdGhlICAqLworLyogIGRlc3RpbmF0aW9uIHJl Z2lzdGVyIFJkIGlzIGxvYWRlZCB3aXRoIGEgY29weSBvZiBSci4gICovCitpbnQgICAgIGF2cl9l eGVjdXRlX01PVl8wMDEwMTFhYmJiYmJjY2NjKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4 dCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdnJfb3Bj b2RlX01PVl8wMDEwMTFhYmJiYmJjY2NjX3QgY29uc3QgKmluc3QpCit7CisgICAgVENHdiAgICBS ZCAgPSBjcHVfcltpbnN0LT5SZF07CisgICAgVENHdiAgICBSciAgPSBjcHVfclsoaW5zdC0+aFJy IDw8IDQpIHwgKGluc3QtPmxScildOworCisgICAgdGNnX2dlbl9tb3ZfdGwoIFJkLCAgICAgUnIp OworCisgICAgcmV0dXJuICBCU19OT05FOworfQorCisKKy8qICBUaGlzIGluc3RydWN0aW9uIG1h a2VzIGEgY29weSBvZiBvbmUgcmVnaXN0ZXIgcGFpciBpbnRvIGFub3RoZXIgcmVnaXN0ZXIgcGFp ci4gVGhlIHNvdXJjZSByZWdpc3RlciBwYWlyIFJyKzE6UnIgaXMgICovCisvKiAgbGVmdCB1bmNo YW5nZWQsIHdoaWxlIHRoZSBkZXN0aW5hdGlvbiByZWdpc3RlciBwYWlyIFJkKzE6UmQgaXMgbG9h ZGVkIHdpdGggYSBjb3B5IG9mIFJyICsgMTpSci4gICovCisvKiAgVGhpcyBpbnN0cnVjdGlvbiBp cyBub3QgYXZhaWxhYmxlIGluIGFsbCBkZXZpY2VzLiBSZWZlciB0byB0aGUgZGV2aWNlIHNwZWNp ZmljIGluc3RydWN0aW9uIHNldCBzdW1tYXJ5LiAgKi8KK2ludCAgICAgYXZyX2V4ZWN1dGVfTU9W V18wMDAwMDAwMWFhYWFiYmJiKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdnJfb3Bjb2RlX01PVldf MDAwMDAwMDFhYWFhYmJiYl90IGNvbnN0ICppbnN0KQoreworICAgIGlmIChhdnJfZmVhdHVyZShl bnYsIEFWUl9GRUFUVVJFX01PVlcpID09IGZhbHNlKSB7CisgICAgICAgIGdlbl9oZWxwZXJfdW5z dXBwb3J0ZWQoY3B1X2Vudik7CisKKyAgICAgICAgcmV0dXJuIEJTX0VYQ1A7CisgICAgfQorCisg ICAgVENHdiAgICBSZEwgPSBjcHVfcltpbnN0LT5SZCAgKjIgKyAwXTsKKyAgICBUQ0d2ICAgIFJk SCA9IGNwdV9yW2luc3QtPlJkICAqMiArIDFdOworICAgIFRDR3YgICAgUnJMID0gY3B1X3JbaW5z dC0+UnIgICoyICsgMF07CisgICAgVENHdiAgICBSckggPSBjcHVfcltpbnN0LT5SciAgKjIgKyAx XTsKKworICAgIHRjZ19nZW5fbW92X3RsKCBSZEgsICAgIFJySCk7CisgICAgdGNnX2dlbl9tb3Zf dGwoIFJkTCwgICAgUnJMKTsKKworICAgIHJldHVybiAgQlNfTk9ORTsKK30KKworLyogIFRoaXMg aW5zdHJ1Y3Rpb24gcGVyZm9ybXMgOC1iaXQgeCA4LWJpdCAtPiAxNi1iaXQgdW5zaWduZWQgbXVs dGlwbGljYXRpb24uICAqLworaW50ICAgICBhdnJfZXhlY3V0ZV9NVUxfMTAwMTExYWJiYmJiY2Nj YyhDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYXZyX29wY29kZV9NVUxfMTAwMTExYWJiYmJiY2NjY190 IGNvbnN0ICppbnN0KQoreworICAgIGlmIChhdnJfZmVhdHVyZShlbnYsIEFWUl9GRUFUVVJFX01V TCkgPT0gZmFsc2UpIHsKKyAgICAgICAgZ2VuX2hlbHBlcl91bnN1cHBvcnRlZChjcHVfZW52KTsK KworICAgICAgICByZXR1cm4gQlNfRVhDUDsKKyAgICB9CisKKyAgICBUQ0d2ICAgIFIwICA9IGNw dV9yWzBdOworICAgIFRDR3YgICAgUjEgID0gY3B1X3JbMV07CisgICAgVENHdiAgICBSZCAgPSBj cHVfcltpbnN0LT5SZF07CisgICAgVENHdiAgICBSciAgPSBjcHVfclsoaW5zdC0+aFJyIDw8IDQp IHwgaW5zdC0+bFJyXTsKKyAgICBUQ0d2ICAgIFIgICA9IHRjZ190ZW1wX25ld19pMzIoKTsKKwor ICAgIHRjZ19nZW5fbXVsX3RsKCBSLCAgICAgIFJkLCAgICAgUnIpOyAgICAvKiAgUiAgID0gUmQg ICpSciAgKi8KKworICAgIHRjZ19nZW5fbW92X3RsKCBSMCwgICAgIFIpOworICAgIHRjZ19nZW5f YW5kaV90bChSMCwgICAgIFIwLCAgICAgMHhmZik7CisgICAgdGNnX2dlbl9zaHJpX3RsKFIsICAg ICAgUiwgICAgICA4KTsKKyAgICB0Y2dfZ2VuX21vdl90bCggUjEsICAgICBSKTsKKworICAgIHRj Z19nZW5fc2hyaV90bChjcHVfQ2YsIFIsICAgICAgMTUpOyAgICAvKiAgQ2YgID0gUigxNikgICov CisgICAgdGNnX2dlbl9tb3ZfdGwoIGNwdV9aZiwgUik7CisKKyAgICB0Y2dfdGVtcF9mcmVlX2kz MihSKTsKKworICAgIHJldHVybiAgQlNfTk9ORTsKK30KKworLyogIFRoaXMgaW5zdHJ1Y3Rpb24g cGVyZm9ybXMgOC1iaXQgeCA4LWJpdCAtPiAxNi1iaXQgc2lnbmVkIG11bHRpcGxpY2F0aW9uLiAg Ki8KK2ludCAgICAgYXZyX2V4ZWN1dGVfTVVMU18wMDAwMDAxMGFhYWFiYmJiKENQVUFWUlN0YXRl ICplbnYsIERpc2FzQ29udGV4dCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBhdnJfb3Bjb2RlX01VTFNfMDAwMDAwMTBhYWFhYmJiYl90IGNvbnN0ICppbnN0 KQoreworICAgIGlmIChhdnJfZmVhdHVyZShlbnYsIEFWUl9GRUFUVVJFX01VTCkgPT0gZmFsc2Up IHsKKyAgICAgICAgZ2VuX2hlbHBlcl91bnN1cHBvcnRlZChjcHVfZW52KTsKKworICAgICAgICBy ZXR1cm4gQlNfRVhDUDsKKyAgICB9CisKKyAgICBUQ0d2ICAgIFIwICA9IGNwdV9yWzBdOworICAg IFRDR3YgICAgUjEgID0gY3B1X3JbMV07CisgICAgVENHdiAgICBSZCAgPSBjcHVfclsxNiArIGlu c3QtPlJkXTsKKyAgICBUQ0d2ICAgIFJyICA9IGNwdV9yWzE2ICsgaW5zdC0+UnJdOworICAgIFRD R3YgICAgUiAgID0gdGNnX3RlbXBfbmV3X2kzMigpOworCisgICAgdGNnX2dlbl9leHQ4c190bCgg ICBSZCwgUmQpOyAgICAgICAgICAgIC8qICBtYWtlIFJkIGZ1bGwgMzIgYml0IHNpZ25lZCAgKi8K KyAgICB0Y2dfZ2VuX2V4dDhzX3RsKCAgIFJyLCBScik7ICAgICAgICAgICAgLyogIG1ha2UgUnIg ZnVsbCAzMiBiaXQgc2lnbmVkICAqLworICAgIHRjZ19nZW5fbXVsX3RsKCBSLCAgICAgIFJkLCAg ICAgUnIpOyAgICAvKiAgUiAgID0gUmQgICpSciAgKi8KKworICAgIHRjZ19nZW5fbW92X3RsKCBS MCwgICAgIFIpOworICAgIHRjZ19nZW5fYW5kaV90bChSMCwgICAgIFIwLCAgICAgMHhmZik7Cisg ICAgdGNnX2dlbl9zaHJpX3RsKFIsICAgICAgUiwgICAgICA4KTsKKyAgICB0Y2dfZ2VuX21vdl90 bCggUjEsICAgICBSKTsKKyAgICB0Y2dfZ2VuX2FuZGlfdGwoUjEsICAgICBSMCwgICAgIDB4ZmYp OworCisgICAgdGNnX2dlbl9zaHJpX3RsKGNwdV9DZiwgUiwgICAgICAxNSk7ICAgIC8qICBDZiAg PSBSKDE2KSAgKi8KKyAgICB0Y2dfZ2VuX21vdl90bCggY3B1X1pmLCBSKTsKKworICAgIHRjZ190 ZW1wX2ZyZWVfaTMyKFIpOworCisgICAgcmV0dXJuICBCU19OT05FOworfQorCisvKiAgVGhpcyBp bnN0cnVjdGlvbiBwZXJmb3JtcyA4LWJpdCB4IDgtYml0IC0+IDE2LWJpdCBtdWx0aXBsaWNhdGlv biBvZiBhIHNpZ25lZCBhbmQgYW4gdW5zaWduZWQgbnVtYmVyLiAgKi8KK2ludCAgICAgYXZyX2V4 ZWN1dGVfTVVMU1VfMDAwMDAwMTEwYWFhMGJiYihDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRl eHQgKmN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZyX29w Y29kZV9NVUxTVV8wMDAwMDAxMTBhYWEwYmJiX3QgY29uc3QgKmluc3QpCit7CisgICAgaWYgKGF2 cl9mZWF0dXJlKGVudiwgQVZSX0ZFQVRVUkVfTVVMKSA9PSBmYWxzZSkgeworICAgICAgICBnZW5f aGVscGVyX3Vuc3VwcG9ydGVkKGNwdV9lbnYpOworCisgICAgICAgIHJldHVybiBCU19FWENQOwor ICAgIH0KKworICAgIFRDR3YgICAgUjAgID0gY3B1X3JbMF07CisgICAgVENHdiAgICBSMSAgPSBj cHVfclsxXTsKKyAgICBUQ0d2ICAgIFJkICA9IGNwdV9yWzE2ICsgaW5zdC0+UmRdOworICAgIFRD R3YgICAgUnIgID0gY3B1X3JbMTYgKyBpbnN0LT5Scl07CisgICAgVENHdiAgICBSICAgPSB0Y2df dGVtcF9uZXdfaTMyKCk7CisKKyAgICB0Y2dfZ2VuX2V4dDhzX3RsKCAgIFJkLCBSZCk7ICAgICAg ICAgICAgLyogIG1ha2UgUmQgZnVsbCAzMiBiaXQgc2lnbmVkICAqLworICAgIHRjZ19nZW5fbXVs X3RsKCBSLCAgICAgIFJkLCAgICAgUnIpOyAgICAvKiAgUiAgID0gUmQgICpSciAgKi8KKworICAg IHRjZ19nZW5fbW92X3RsKCBSMCwgICAgIFIpOworICAgIHRjZ19nZW5fYW5kaV90bChSMCwgICAg IFIwLCAgICAgMHhmZik7CisgICAgdGNnX2dlbl9zaHJpX3RsKFIsICAgICAgUiwgICAgICA4KTsK KyAgICB0Y2dfZ2VuX21vdl90bCggUjEsICAgICBSKTsKKyAgICB0Y2dfZ2VuX2FuZGlfdGwoUjEs ICAgICBSMCwgICAgIDB4ZmYpOworCisgICAgdGNnX2dlbl9zaHJpX3RsKGNwdV9DZiwgUiwgICAg ICAxNik7ICAgIC8qICBDZiAgPSBSKDE2KSAgKi8KKyAgICB0Y2dfZ2VuX21vdl90bCggY3B1X1pm LCBSKTsKKworICAgIHRjZ190ZW1wX2ZyZWVfaTMyKFIpOworCisgICAgcmV0dXJuICBCU19OT05F OworfQorCisvKiAgUmVwbGFjZXMgdGhlIGNvbnRlbnRzIG9mIHJlZ2lzdGVyIFJkIHdpdGggaXRz IHR3b+KAmXMgY29tcGxlbWVudDsgdGhlIHZhbHVlICQ4MCBpcyBsZWZ0IHVuY2hhbmdlZC4gICov CitpbnQgICAgIGF2cl9leGVjdXRlX05FR18xMDAxMDEwYWFhYWEwMDAxKENQVUFWUlN0YXRlICpl bnYsIERpc2FzQ29udGV4dCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBhdnJfb3Bjb2RlX05FR18xMDAxMDEwYWFhYWEwMDAxX3QgY29uc3QgKmluc3QpCit7 CisgICAgVENHdiAgICBSZCAgPSBjcHVfcltpbnN0LT5SZF07CisgICAgVENHdiAgICBSICAgPSB0 Y2dfdGVtcF9uZXdfaTMyKCk7CisKKyAgICB0Y2dfZ2VuX25lZ190bCggUiwgICAgICBSZCk7CisK KyAgICB0Y2dfZ2VuX3NldGNvbmRpX3RsKFRDR19DT05EX05FLGNwdV9DZiwgICAgIFIsICAgICAg MHgwMCk7ICAvKiAgQ2YgID0gUiAhPSAweDAwICAqLworICAgIHRjZ19nZW5fc2V0Y29uZGlfdGwo VENHX0NPTkRfRVEsY3B1X1ZmLCAgICAgUiwgICAgICAweDgwKTsgIC8qICBWZiAgPSBSID09IDB4 ODAgICovCisgICAgdGNnX2dlbl9ub3RfdGwoIGNwdV9IZiwgUmQpOyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLyogIEhmICA9ICh+UmQgfCBSKSgzKSAgKi8KKyAgICB0Y2dfZ2VuX29y X3RsKCAgY3B1X0hmLCBjcHVfSGYsIFIpOworICAgIHRjZ19nZW5fc2hyaV90bChjcHVfSGYsIGNw dV9IZiwgMyk7CisgICAgdGNnX2dlbl9hbmRpX3RsKGNwdV9IZiwgY3B1X0hmLCAxKTsKKyAgICBn ZW5fWk5TZiggICAgICAgUik7CisKKyAgICB0Y2dfdGVtcF9mcmVlX2kzMihSKTsKKworICAgIHJl dHVybiAgQlNfTk9ORTsKK30KKworCisvKiAgVGhpcyBpbnN0cnVjdGlvbiBwZXJmb3JtcyBhIHNp bmdsZSBjeWNsZSBObyBPcGVyYXRpb24uICAqLworaW50ICAgICBhdnJfZXhlY3V0ZV9OT1BfMDAw MDAwMDAwMDAwMDAwMChDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZyX29wY29kZV9OT1BfMDAwMDAw MDAwMDAwMDAwMF90IGNvbnN0ICppbnN0KQoreworICAgIAorICAgIC8qICBOT1AgICovCisgICAg CisgICAgcmV0dXJuICBCU19OT05FOworfQorCisKKy8qICBQZXJmb3JtcyB0aGUgbG9naWNhbCBP UiBiZXR3ZWVuIHRoZSBjb250ZW50cyBvZiByZWdpc3RlciBSZCBhbmQgcmVnaXN0ZXIgUnIgYW5k IHBsYWNlcyB0aGUgcmVzdWx0IGluIHRoZSAgKi8KKy8qICBkZXN0aW5hdGlvbiByZWdpc3RlciBS ZC4gICovCitpbnQgICAgIGF2cl9leGVjdXRlX09SXzAwMTAxMGFiYmJiYmNjY2MoQ1BVQVZSU3Rh dGUgKmVudiwgRGlzYXNDb250ZXh0ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGF2cl9vcGNvZGVfT1JfMDAxMDEwYWJiYmJiY2NjY190IGNvbnN0ICppbnN0 KQoreworICAgIFRDR3YgICAgUmQgID0gY3B1X3JbaW5zdC0+UmRdOworICAgIFRDR3YgICAgUnIg ID0gY3B1X3JbKGluc3QtPmhSciA8PCA0KSB8IChpbnN0LT5sUnIpXTsKKyAgICBUQ0d2ICAgIFIg ICA9IHRjZ190ZW1wX25ld19pMzIoKTsKKworICAgIHRjZ19nZW5fb3JfdGwoICBSLCAgICAgIFJk LCAgICAgUnIpOworCisgICAgdGNnX2dlbl9tb3ZpX3RsKGNwdV9WZiwgMCk7CisgICAgZ2VuX1pO U2YoUik7CisKKyAgICB0Y2dfdGVtcF9mcmVlX2kzMihSKTsKKworICAgIHJldHVybiAgQlNfTk9O RTsKK30KKworCisvKiAgUGVyZm9ybXMgdGhlIGxvZ2ljYWwgT1IgYmV0d2VlbiB0aGUgY29udGVu dHMgb2YgcmVnaXN0ZXIgUmQgYW5kIGEgY29uc3RhbnQgYW5kIHBsYWNlcyB0aGUgcmVzdWx0IGlu IHRoZSAgKi8KKy8qICBkZXN0aW5hdGlvbiByZWdpc3RlciBSZC4gICovCitpbnQgICAgIGF2cl9l eGVjdXRlX09SSV8wMTEwYWFhYWJiYmJjY2NjKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4 dCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdnJfb3Bj b2RlX09SSV8wMTEwYWFhYWJiYmJjY2NjX3QgY29uc3QgKmluc3QpCit7CisgICAgVENHdiAgICBS ZCAgPSBjcHVfcltpbnN0LT5SZF07CisgICAgaW50ICAgICBJbW0gPSAoaW5zdC0+aEltbSA8PCA0 KSB8IChpbnN0LT5sSW1tKTsKKworICAgIHRjZ19nZW5fb3JpX3RsKCBSZCwgICAgIFJkLCAgICAg SW1tKTsgICAvKiAgUmQgID0gUmQgfCBJbW0gICovCisKKyAgICB0Y2dfZ2VuX21vdmlfdGwoY3B1 X1ZmLCAweDAwKTsgICAgICAgICAgLyogIFZmICA9IDAgICovCisgICAgZ2VuX1pOU2YoUmQpOwor CisgICAgcmV0dXJuICBCU19OT05FOworfQorCisKKy8qICBTdG9yZXMgZGF0YSBmcm9tIHJlZ2lz dGVyIFJyIGluIHRoZSBSZWdpc3RlciBGaWxlIHRvIEkvTyBTcGFjZSAoUG9ydHMsIFRpbWVycywg Q29uZmlndXJhdGlvbiBSZWdpc3RlcnMsIGV0Yy4pLiAgKi8KK2ludCAgICAgYXZyX2V4ZWN1dGVf T1VUXzEwMTExYWFiYmJiYmNjY2MoQ1BVQVZSU3RhdGUgKmVudiwgRGlzYXNDb250ZXh0ICpjdHgs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2cl9vcGNvZGVfT1VU XzEwMTExYWFiYmJiYmNjY2NfdCBjb25zdCAqaW5zdCkKK3sKKyAgICBUQ0d2ICAgIFJkICA9IGNw dV9yW2luc3QtPlJkXTsKKyAgICBpbnQgICAgIEltbSA9IChpbnN0LT5oSW1tIDw8IDQpIHwgaW5z dC0+bEltbTsKKyAgICBUQ0d2ICAgIHBvcnQ9IHRjZ19jb25zdF9pMzIoSW1tKTsKKyAgICBUQ0d2 ICAgIGRhdGE9IGNwdV9pb1tJbW1dOworCisgICAgdGNnX2dlbl9tb3ZfdGwoIGRhdGEsICAgUmQp OworICAgIGdlbl9oZWxwZXJfb3V0YihjcHVfZW52LHBvcnQsICAgZGF0YSk7CisKKyAgICByZXR1 cm4gIEJTX05PTkU7Cit9CisKKworLyogIFRoaXMgaW5zdHJ1Y3Rpb24gbG9hZHMgcmVnaXN0ZXIg UmQgd2l0aCBhIGJ5dGUgZnJvbSB0aGUgU1RBQ0suIFRoZSBTdGFjayBQb2ludGVyIGlzIHByZS1p bmNyZW1lbnRlZCBieSAxIGJlZm9yZSAgKi8KKy8qICB0aGUgUE9QLiAgKi8KKy8qICBUaGlzIGlu c3RydWN0aW9uIGlzIG5vdCBhdmFpbGFibGUgaW4gYWxsIGRldmljZXMuIFJlZmVyIHRvIHRoZSBk ZXZpY2Ugc3BlY2lmaWMgaW5zdHJ1Y3Rpb24gc2V0IHN1bW1hcnkuICAqLworaW50ICAgICBhdnJf ZXhlY3V0ZV9QT1BfMTAwMTAwMGFhYWFhMTExMShDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRl eHQgKmN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZyX29w Y29kZV9QT1BfMTAwMTAwMGFhYWFhMTExMV90IGNvbnN0ICppbnN0KQoreworICAgIFRDR3YgICAg UmQgID0gY3B1X3JbaW5zdC0+UmRdOworCisgICAgdGNnX2dlbl9hZGRpX3RsKGNwdV9zcCwgY3B1 X3NwLCAgICAgMSk7CisgICAgdGNnX2dlbl9xZW11X2xkOHUoCisgICAgICAgICAgICAgICAgICAg IFJkLCAgICAgY3B1X3NwLCAgICAgREFUQV9JTkRFWCk7CisKKyAgICByZXR1cm4gIEJTX05PTkU7 Cit9CisKKworLyogIFRoaXMgaW5zdHJ1Y3Rpb24gc3RvcmVzIHRoZSBjb250ZW50cyBvZiByZWdp c3RlciBSciBvbiB0aGUgU1RBQ0suIFRoZSBTdGFjayBQb2ludGVyIGlzIHBvc3QtZGVjcmVtZW50 ZWQgYnkgMSAgKi8KKy8qICBhZnRlciB0aGUgUFVTSC4gICovCisvKiAgVGhpcyBpbnN0cnVjdGlv biBpcyBub3QgYXZhaWxhYmxlIGluIGFsbCBkZXZpY2VzLiBSZWZlciB0byB0aGUgZGV2aWNlIHNw ZWNpZmljIGluc3RydWN0aW9uIHNldCBzdW1tYXJ5LiAgKi8KK2ludCAgICAgYXZyX2V4ZWN1dGVf UFVTSF8xMDAxMDAxYWFhYWExMTExKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4 LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdnJfb3Bjb2RlX1BV U0hfMTAwMTAwMWFhYWFhMTExMV90IGNvbnN0ICppbnN0KQoreworICAgIFRDR3YgICAgUmQgID0g Y3B1X3JbaW5zdC0+UmRdOworCisgICAgdGNnX2dlbl9xZW11X3N0OCgKKyAgICAgICAgICAgICAg ICAgICAgUmQsICAgICBjcHVfc3AsICAgICBEQVRBX0lOREVYKTsKKyAgICB0Y2dfZ2VuX3N1Ymlf dGwoY3B1X3NwLCBjcHVfc3AsICAgICAxKTsKKworICAgIHJldHVybiAgQlNfTk9ORTsKK30KKwor CisvKiAgUmVsYXRpdmUgY2FsbCB0byBhbiBhZGRyZXNzIHdpdGhpbiBQQyAtIDJLICsgMSBhbmQg UEMgKyAySyAod29yZHMpLiBUaGUgcmV0dXJuIGFkZHJlc3MgKHRoZSBpbnN0cnVjdGlvbiBhZnRl ciB0aGUgICovCisvKiAgUkNBTEwpIGlzIHN0b3JlZCBvbnRvIHRoZSBTdGFjay4gU2VlIGFsc28g Q0FMTC4gRm9yIEFWUiBtaWNyb2NvbnRyb2xsZXJzIHdpdGggUHJvZ3JhbSBtZW1vcnkgbm90ICAq LworLyogIGV4Y2VlZGluZyA0SyB3b3JkcyAoOEtCKSB0aGlzIGluc3RydWN0aW9uIGNhbiBhZGRy ZXNzIHRoZSBlbnRpcmUgbWVtb3J5IGZyb20gZXZlcnkgYWRkcmVzcyBsb2NhdGlvbi4gVGhlICAq LworLyogIFN0YWNrIFBvaW50ZXIgdXNlcyBhIHBvc3QtZGVjcmVtZW50IHNjaGVtZSBkdXJpbmcg UkNBTEwuICAqLworaW50ICAgICBhdnJfZXhlY3V0ZV9SQ0FMTF8xMTAxYWFhYWFhYWFhYWFhKENQ VUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBhdnJfb3Bjb2RlX1JDQUxMXzExMDFhYWFhYWFhYWFhYWFfdCBj b25zdCAqaW5zdCkKK3sKKyAgICBpbnQgcmV0ID0gY3R4LT5pbnN0WzBdLm5wYzsKKyAgICBpbnQg ZHN0ID0gY3R4LT5pbnN0WzBdLm5wYyArIHNleChpbnN0LT5JbW0sIDEyKTsKKworICAgIGdlbl9w dXNoX3JldChlbnYsIHJldCk7CisKKyAgICBnZW5fZ290b190YiggICAgICAgIGVudiwgICAgY3R4 LCAgICAwLCAgZHN0KTsKKworICAgIHJldHVybiAgQlNfQlJBTkNIOworfQorCisKKy8qICBSZXR1 cm5zIGZyb20gc3Vicm91dGluZS4gVGhlIHJldHVybiBhZGRyZXNzIGlzIGxvYWRlZCBmcm9tIHRo ZSBTVEFDSy4gVGhlIFN0YWNrIFBvaW50ZXIgdXNlcyBhIHByZWluY3JlbWVudCAgKi8KKy8qICBz Y2hlbWUgZHVyaW5nIFJFVC4gICovCitpbnQgICAgIGF2cl9leGVjdXRlX1JFVF8xMDAxMDEwMTAw MDAxMDAwKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdnJfb3Bjb2RlX1JFVF8xMDAxMDEwMTAwMDAx MDAwX3QgY29uc3QgKmluc3QpCit7CisgICAgZ2VuX3BvcF9yZXQoZW52LCBjcHVfcGMpOworCisg ICAgdGNnX2dlbl9leGl0X3RiKDApOworCisgICAgcmV0dXJuICBCU19CUkFOQ0g7Cit9CisKKwor LyogIFJldHVybnMgZnJvbSBpbnRlcnJ1cHQuIFRoZSByZXR1cm4gYWRkcmVzcyBpcyBsb2FkZWQg ZnJvbSB0aGUgU1RBQ0sgYW5kIHRoZSBHbG9iYWwgSW50ZXJydXB0IEZsYWcgaXMgc2V0LiAgKi8K Ky8qICBOb3RlIHRoYXQgdGhlIFN0YXR1cyBSZWdpc3RlciBpcyBub3QgYXV0b21hdGljYWxseSBz dG9yZWQgd2hlbiBlbnRlcmluZyBhbiBpbnRlcnJ1cHQgcm91dGluZSwgYW5kIGl0IGlzIG5vdCBy ZXN0b3JlZCAgKi8KKy8qICB3aGVuIHJldHVybmluZyBmcm9tIGFuIGludGVycnVwdCByb3V0aW5l LiBUaGlzIG11c3QgYmUgaGFuZGxlZCBieSB0aGUgYXBwbGljYXRpb24gcHJvZ3JhbS4gVGhlIFN0 YWNrIFBvaW50ZXIgICovCisvKiAgdXNlcyBhIHByZS1pbmNyZW1lbnQgc2NoZW1lIGR1cmluZyBS RVRJLiAgKi8KK2ludCAgICAgYXZyX2V4ZWN1dGVfUkVUSV8xMDAxMDEwMTAwMDExMDAwKENQVUFW UlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBhdnJfb3Bjb2RlX1JFVElfMTAwMTAxMDEwMDAxMTAwMF90IGNvbnN0 ICppbnN0KQoreworICAgIGdlbl9wb3BfcmV0KGVudiwgY3B1X3BjKTsKKworICAgIHRjZ19nZW5f bW92aV90bCggICAgY3B1X0lmLCAxKTsKKworICAgIHRjZ19nZW5fZXhpdF90YigwKTsKKworICAg IHJldHVybiAgQlNfQlJBTkNIOworfQorCisKKy8qICBSZWxhdGl2ZSBqdW1wIHRvIGFuIGFkZHJl c3Mgd2l0aGluIFBDIC0gMksgKzEgYW5kIFBDICsgMksgKHdvcmRzKS4gRm9yIEFWUiBtaWNyb2Nv bnRyb2xsZXJzIHdpdGggUHJvZ3JhbSAgKi8KKy8qICBtZW1vcnkgbm90IGV4Y2VlZGluZyA0SyB3 b3JkcyAoOEtCKSB0aGlzIGluc3RydWN0aW9uIGNhbiBhZGRyZXNzIHRoZSBlbnRpcmUgbWVtb3J5 IGZyb20gZXZlcnkgYWRkcmVzcyAgKi8KKy8qICBsb2NhdGlvbi4gU2VlIGFsc28gSk1QLiAgKi8K K2ludCAgICAgYXZyX2V4ZWN1dGVfUkpNUF8xMTAwYWFhYWFhYWFhYWFhKENQVUFWUlN0YXRlICpl bnYsIERpc2FzQ29udGV4dCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBhdnJfb3Bjb2RlX1JKTVBfMTEwMGFhYWFhYWFhYWFhYV90IGNvbnN0ICppbnN0KQor eworICAgIGludCBkc3QgPSBjdHgtPmluc3RbMF0ubnBjICsgc2V4KGluc3QtPkltbSwgMTIpOwor CisgICAgZ2VuX2dvdG9fdGIoICAgICAgICBlbnYsICAgIGN0eCwgICAgMCwgIGRzdCk7CisKKyAg ICByZXR1cm4gIEJTX0JSQU5DSDsKK30KKworCisvKiAgU2hpZnRzIGFsbCBiaXRzIGluIFJkIG9u ZSBwbGFjZSB0byB0aGUgcmlnaHQuIFRoZSBDIEZsYWcgaXMgc2hpZnRlZCBpbnRvIGJpdCA3IG9m IFJkLiBCaXQgMCBpcyBzaGlmdGVkIGludG8gdGhlIEMgRmxhZy4gICovCisvKiAgVGhpcyBvcGVy YXRpb24sIGNvbWJpbmVkIHdpdGggQVNSLCBlZmZlY3RpdmVseSBkaXZpZGVzIG11bHRpLWJ5dGUg c2lnbmVkIHZhbHVlcyBieSB0d28uIENvbWJpbmVkIHdpdGggTFNSIGl0ICAqLworLyogIGVmZmVj dGl2ZWx5IGRpdmlkZXMgbXVsdGktYnl0ZSB1bnNpZ25lZCB2YWx1ZXMgYnkgdHdvLiBUaGUgQ2Fy cnkgRmxhZyBjYW4gYmUgdXNlZCB0byByb3VuZCB0aGUgcmVzdWx0LiAgKi8KK2ludCAgICAgYXZy X2V4ZWN1dGVfUk9SXzEwMDEwMTBhYWFhYTAxMTEoQ1BVQVZSU3RhdGUgKmVudiwgRGlzYXNDb250 ZXh0ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2cl9v cGNvZGVfUk9SXzEwMDEwMTBhYWFhYTAxMTFfdCBjb25zdCAqaW5zdCkKK3sKKyAgICBUQ0d2ICAg IFJkICA9IGNwdV9yW2luc3QtPlJkXTsKKyAgICBUQ0d2ICAgIHQwICA9IHRjZ190ZW1wX25ld19p MzIoKTsKKworICAgIHRjZ19nZW5fc2hsaV90bCh0MCwgICAgIGNwdV9DZiwgNyk7CisgICAgdGNn X2dlbl9hbmRpX3RsKGNwdV9DZiwgUmQsICAgICAwKTsKKyAgICB0Y2dfZ2VuX3NocmlfdGwoUmQs ICAgICBSZCwgICAgIDEpOworICAgIHRjZ19nZW5fb3JfdGwoICBSZCwgICAgIFJkLCAgICAgdDAp OworCisgICAgZ2VuX1pOU2YoICAgICAgIFJkKTsKKyAgICB0Y2dfZ2VuX3hvcl90bCggY3B1X1Zm LCBjcHVfTmYsIGNwdV9DZik7CisKKyAgICB0Y2dfdGVtcF9mcmVlX2kzMih0MCk7CisKKyAgICBy ZXR1cm4gIEJTX05PTkU7Cit9CisKKworLyogIFN1YnRyYWN0cyB0d28gcmVnaXN0ZXJzIGFuZCBz dWJ0cmFjdHMgd2l0aCB0aGUgQyBGbGFnIGFuZCBwbGFjZXMgdGhlIHJlc3VsdCBpbiB0aGUgZGVz dGluYXRpb24gcmVnaXN0ZXIgUmQuICAqLworaW50ICAgICBhdnJfZXhlY3V0ZV9TQkNfMDAwMDEw YWJiYmJiY2NjYyhDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZyX29wY29kZV9TQkNfMDAwMDEwYWJi YmJiY2NjY190IGNvbnN0ICppbnN0KQoreworICAgIFRDR3YgICAgUmQgID0gY3B1X3JbaW5zdC0+ UmRdOworICAgIFRDR3YgICAgUnIgID0gY3B1X3JbKGluc3QtPmhSciA8PCA0KSB8IChpbnN0LT5s UnIpXTsKKyAgICBUQ0d2ICAgIFIgICA9IHRjZ190ZW1wX25ld19pMzIoKTsKKworICAgIC8qICBv cCAgKi8KKyAgICB0Y2dfZ2VuX3N1Yl90bCggUiwgICAgICBSZCwgICAgIFJyKTsgICAgICAgICAg ICAgLyogIFIgICA9IFJkIC0gUnIgLSBDZiAgKi8KKyAgICB0Y2dfZ2VuX3N1Yl90bCggUiwgICAg ICBSLCAgICAgIGNwdV9DZik7CisgICAgdGNnX2dlbl9hbmRpX3RsKFIsICAgICAgUiwgICAgICAw eGZmKTsgICAgICAgICAgICAvKiAgbWFrZSBpdCA4IGJpdHMgICovCisKKyAgICBnZW5fc3ViX0NI ZiggICAgUiwgICAgICBSZCwgICAgIFJyKTsKKyAgICBnZW5fc3ViX1ZmKCAgICAgUiwgICAgICBS ZCwgICAgIFJyKTsKKyAgICBnZW5fWk5TZiggICAgICAgUik7CisKKyAgICAvKiAgUiAgKi8KKyAg ICB0Y2dfZ2VuX21vdl90bCggUmQsICAgICBSKTsKKworICAgIHRjZ190ZW1wX2ZyZWVfaTMyKFIp OworCisgICAgcmV0dXJuICBCU19OT05FOworfQorCisvKiAgU0JDSSDigJMgU3VidHJhY3QgSW1t ZWRpYXRlIHdpdGggQ2FycnkgICovCitpbnQgICAgIGF2cl9leGVjdXRlX1NCQ0lfMDEwMGFhYWFi YmJiY2NjYyhDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZyX29wY29kZV9TQkNJXzAxMDBhYWFhYmJi YmNjY2NfdCBjb25zdCAqaW5zdCkKK3sKKyAgICBUQ0d2ICAgIFJkICA9IGNwdV9yW2luc3QtPlJk XTsKKyAgICBUQ0d2ICAgIFJyICA9IHRjZ19jb25zdF9pMzIoKGluc3QtPmhJbW0gPDwgNCkgfCBp bnN0LT5sSW1tKTsKKyAgICBUQ0d2ICAgIFIgICA9IHRjZ190ZW1wX25ld19pMzIoKTsKKworICAg IC8qICBvcCAgKi8KKyAgICB0Y2dfZ2VuX3N1Yl90bCggUiwgICAgICBSZCwgICAgIFJyKTsgICAg ICAgICAgICAgLyogIFIgICA9IFJkIC0gUnIgLSBDZiAgKi8KKyAgICB0Y2dfZ2VuX3N1Yl90bCgg UiwgICAgICBSLCAgICAgIGNwdV9DZik7CisgICAgdGNnX2dlbl9hbmRpX3RsKFIsICAgICAgUiwg ICAgICAweGZmKTsgICAgICAgICAgICAvKiAgbWFrZSBpdCA4IGJpdHMgICovCisKKyAgICBnZW5f c3ViX0NIZiggICAgUiwgICAgICBSZCwgICAgIFJyKTsKKyAgICBnZW5fc3ViX1ZmKCAgICAgUiwg ICAgICBSZCwgICAgIFJyKTsKKyAgICBnZW5fWk5TZiggICAgICAgUik7CisKKyAgICAvKiAgUiAg Ki8KKyAgICB0Y2dfZ2VuX21vdl90bCggUmQsICAgICBSKTsKKworICAgIHRjZ190ZW1wX2ZyZWVf aTMyKFIpOworCisgICAgcmV0dXJuICBCU19OT05FOworfQorCisKKy8qICBTZXRzIGEgc3BlY2lm aWVkIGJpdCBpbiBhbiBJL08gUmVnaXN0ZXIuIFRoaXMgaW5zdHJ1Y3Rpb24gb3BlcmF0ZXMgb24g dGhlIGxvd2VyIDMyIEkvTyBSZWdpc3RlcnMg4oCTIGFkZHJlc3NlcyAwLTMxLiAgKi8KK2ludCAg ICAgYXZyX2V4ZWN1dGVfU0JJXzEwMDExMDEwYWFhYWFiYmIoQ1BVQVZSU3RhdGUgKmVudiwgRGlz YXNDb250ZXh0ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGF2cl9vcGNvZGVfU0JJXzEwMDExMDEwYWFhYWFiYmJfdCBjb25zdCAqaW5zdCkKK3sKKyAgICBU Q0d2ICAgIGRhdGEgICAgPSBjcHVfaW9baW5zdC0+SW1tXTsKKyAgICBUQ0d2ICAgIHBvcnQgICAg PSB0Y2dfY29uc3RfaTMyKGluc3QtPkltbSk7CisKKyAgICB0Y2dfZ2VuX29yaV90bCggZGF0YSwg ICBkYXRhLCAgIDEgPDwgaW5zdC0+Qml0KTsKKyAgICBnZW5faGVscGVyX291dGIoY3B1X2Vudixw b3J0LCAgIGRhdGEpOworCisgICAgcmV0dXJuICBCU19OT05FOworfQorCisKKy8qICBUaGlzIGlu c3RydWN0aW9uIHRlc3RzIGEgc2luZ2xlIGJpdCBpbiBhbiBJL08gUmVnaXN0ZXIgYW5kIHNraXBz IHRoZSBuZXh0IGluc3RydWN0aW9uIGlmIHRoZSBiaXQgaXMgY2xlYXJlZC4gVGhpcyAgKi8KKy8q ICBpbnN0cnVjdGlvbiBvcGVyYXRlcyBvbiB0aGUgbG93ZXIgMzIgSS9PIFJlZ2lzdGVycyDigJMg YWRkcmVzc2VzIDAtMzEuICAqLworaW50ICAgICBhdnJfZXhlY3V0ZV9TQklDXzEwMDExMDAxYWFh YWFiYmIoQ1BVQVZSU3RhdGUgKmVudiwgRGlzYXNDb250ZXh0ICpjdHgsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2cl9vcGNvZGVfU0JJQ18xMDAxMTAwMWFhYWFh YmJiX3QgY29uc3QgKmluc3QpCit7CisgICAgVENHdiAgICAgICAgaW8gID0gY3B1X2lvW2luc3Qt PkltbV07CisgICAgVENHdiAgICAgICAgdDAgID0gdGNnX3RlbXBfbmV3X2kzMigpOworICAgIFRD R0xhYmVsICAgKnNraXA9IGdlbl9uZXdfbGFiZWwoKTsKKworICAgIHRjZ19nZW5fbW92aV90bCgg ICAgY3B1X3BjLCBjdHgtPmluc3RbMV0ubnBjKTsgICAgICAvKiAgUEMgaWYgbmV4dCBpbnN0IGlz IHNraXBwZWQgICovCisgICAgdGNnX2dlbl9hbmRpX3RsKCAgICB0MCwgICAgIGlvLCAgICAgMSA8 PCBpbnN0LT5CaXQpOworICAgIHRjZ19nZW5fYnJjb25kaV9pMzIoVENHX0NPTkRfRVEsIHQwLCAw LCBza2lwKTsKKyAgICB0Y2dfZ2VuX21vdmlfdGwoICAgIGNwdV9wYywgY3R4LT5pbnN0WzBdLm5w Yyk7ICAgICAgLyogIFBDIGlmIG5leHQgaW5zdCBpcyBub3Qgc2tpcHBlZCAgKi8KKyAgICBnZW5f c2V0X2xhYmVsKHNraXApOworCisgICAgdGNnX3RlbXBfZnJlZV9pMzIodDApOworCisgICAgcmV0 dXJuICBCU19CUkFOQ0g7Cit9CisKKworLyogIFRoaXMgaW5zdHJ1Y3Rpb24gdGVzdHMgYSBzaW5n bGUgYml0IGluIGFuIEkvTyBSZWdpc3RlciBhbmQgc2tpcHMgdGhlIG5leHQgaW5zdHJ1Y3Rpb24g aWYgdGhlIGJpdCBpcyBzZXQuIFRoaXMgaW5zdHJ1Y3Rpb24gICovCisvKiAgb3BlcmF0ZXMgb24g dGhlIGxvd2VyIDMyIEkvTyBSZWdpc3RlcnMg4oCTIGFkZHJlc3NlcyAwLTMxLiAgKi8KK2ludCAg ICAgYXZyX2V4ZWN1dGVfU0JJU18xMDAxMTAxMWFhYWFhYmJiKENQVUFWUlN0YXRlICplbnYsIERp c2FzQ29udGV4dCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBhdnJfb3Bjb2RlX1NCSVNfMTAwMTEwMTFhYWFhYWJiYl90IGNvbnN0ICppbnN0KQoreworICAg IFRDR3YgICAgICAgIGlvICA9IGNwdV9pb1tpbnN0LT5JbW1dOworICAgIFRDR3YgICAgICAgIHQw ICA9IHRjZ190ZW1wX25ld19pMzIoKTsKKyAgICBUQ0dMYWJlbCAgICpza2lwPSBnZW5fbmV3X2xh YmVsKCk7CisKKyAgICB0Y2dfZ2VuX21vdmlfdGwoICAgIGNwdV9wYywgY3R4LT5pbnN0WzFdLm5w Yyk7ICAvKiAgUEMgaWYgbmV4dCBpbnN0IGlzIHNraXBwZWQgICovCisgICAgdGNnX2dlbl9hbmRp X3RsKCAgICB0MCwgICAgIGlvLCAgICAgMSA8PCBpbnN0LT5CaXQpOworICAgIHRjZ19nZW5fYnJj b25kaV9pMzIoVENHX0NPTkRfTkUsICAgIHQwLCAwLCBza2lwKTsKKyAgICB0Y2dfZ2VuX21vdmlf dGwoICAgIGNwdV9wYywgY3R4LT5pbnN0WzBdLm5wYyk7ICAvKiAgUEMgaWYgbmV4dCBpbnN0IGlz IG5vdCBza2lwcGVkICAqLworICAgIGdlbl9zZXRfbGFiZWwoc2tpcCk7CisKKyAgICB0Y2dfdGVt cF9mcmVlX2kzMih0MCk7CisKKyAgICByZXR1cm4gIEJTX0JSQU5DSDsKK30KKworCisvKiAgU3Vi dHJhY3RzIGFuIGltbWVkaWF0ZSB2YWx1ZSAoMC02MykgZnJvbSBhIHJlZ2lzdGVyIHBhaXIgYW5k IHBsYWNlcyB0aGUgcmVzdWx0IGluIHRoZSByZWdpc3RlciBwYWlyLiBUaGlzICAqLworLyogIGlu c3RydWN0aW9uIG9wZXJhdGVzIG9uIHRoZSB1cHBlciBmb3VyIHJlZ2lzdGVyIHBhaXJzLCBhbmQg aXMgd2VsbCBzdWl0ZWQgZm9yIG9wZXJhdGlvbnMgb24gdGhlIFBvaW50ZXIgUmVnaXN0ZXJzLiAg Ki8KKy8qICBUaGlzIGluc3RydWN0aW9uIGlzIG5vdCBhdmFpbGFibGUgaW4gYWxsIGRldmljZXMu IFJlZmVyIHRvIHRoZSBkZXZpY2Ugc3BlY2lmaWMgaW5zdHJ1Y3Rpb24gc2V0IHN1bW1hcnkuICAq LworaW50ICAgICBhdnJfZXhlY3V0ZV9TQklXXzEwMDEwMTExYWFiYmNjY2MoQ1BVQVZSU3RhdGUg KmVudiwgRGlzYXNDb250ZXh0ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGF2cl9vcGNvZGVfU0JJV18xMDAxMDExMWFhYmJjY2NjX3QgY29uc3QgKmluc3Qp Cit7CisgICAgaWYgKGF2cl9mZWF0dXJlKGVudiwgQVZSX0ZFQVRVUkVfQURJV19TQklXKSA9PSBm YWxzZSkgeworICAgICAgICBnZW5faGVscGVyX3Vuc3VwcG9ydGVkKGNwdV9lbnYpOworCisgICAg ICAgIHJldHVybiBCU19FWENQOworICAgIH0KKworICAgIFRDR3YgICAgUmRMID0gY3B1X3JbMjQg KyAyICAqaW5zdC0+UmRdOworICAgIFRDR3YgICAgUmRIID0gY3B1X3JbMjUgKyAyICAqaW5zdC0+ UmRdOworICAgIGludCAgICAgSW1tID0gKGluc3QtPmhJbW0gPDwgNCkgfCAoaW5zdC0+bEltbSk7 CisgICAgVENHdiAgICBSICAgPSB0Y2dfdGVtcF9uZXdfaTMyKCk7CisgICAgVENHdiAgICBSZCAg PSB0Y2dfdGVtcF9uZXdfaTMyKCk7CisgICAgVENHdiAgICB0MCAgPSB0Y2dfdGVtcF9uZXdfaTMy KCk7CisKKyAgICAvKiAgb3AgICovCisgICAgdGNnX2dlbl9zaGxpX3RsKFJkLCAgICAgUmRILCAg ICA4KTsgICAgIC8qICBSID0gKChIIDw8IDgpIHwgTCkgLSBJbW0gICovCisgICAgdGNnX2dlbl9v cl90bCggIFJkLCAgICAgUmRMLCAgICBSZCk7CisgICAgdGNnX2dlbl9zdWJpX3RsKFIsICAgICAg UmQsICAgICBJbW0pOworICAgIHRjZ19nZW5fYW5kaV90bChSLCAgICAgIFIsICAgICAgMHhmZmZm KTsvKiAgbWFrZSBpdCAxNiBiaXRzICAqLworCisgICAgLyogIENmICAqLworICAgIHRjZ19nZW5f bm90X3RsKCB0MCwgICAgIFIpOyAgICAgICAgICAgICAvKiAgdDAgID0gUmQgJiB+UiAgKi8KKyAg ICB0Y2dfZ2VuX2FuZF90bCggdDAsICAgICBSZCwgICAgIHQwKTsKKyAgICB0Y2dfZ2VuX3Nocmlf dGwoY3B1X0NmLCB0MCwgICAgIDE1KTsgICAgLyogIENmICA9IHQwKDE1KSAgKi8KKworICAgIC8q ICBWZiAgKi8KKyAgICB0Y2dfZ2VuX25vdF90bCggdDAsICAgICBSZCk7ICAgICAgICAgICAgLyog IHQwICA9IH5SZCAmIFIgICovCisgICAgdGNnX2dlbl9hbmRfdGwoIHQwLCAgICAgUiwgICAgICB0 MCk7CisKKyAgICB0Y2dfZ2VuX3NocmlfdGwoY3B1X1ZmLCB0MCwgICAgIDE1KTsgICAgLyogIFZm ICA9IHQwKDE1KSAgKi8KKworICAgIC8qICBaZiAgKi8KKyAgICB0Y2dfZ2VuX21vdl90bCggY3B1 X1pmLCBSKTsgICAgICAgICAgICAgLyogIFpmICA9IFIgICovCisKKyAgICAvKiAgTmYgICovCisg ICAgdGNnX2dlbl9zaHJpX3RsKGNwdV9OZiwgUiwgICAgICAxNSk7ICAgIC8qICBOZiAgPSBSKDE1 KSAgKi8KKworICAgIC8qICBTZiAgKi8KKyAgICB0Y2dfZ2VuX2FuZF90bCggY3B1X1NmLCBjcHVf TmYsIGNwdV9WZik7LyogIFNmICA9IE5mICYgVmYgICovCisKKworICAgIC8qICBSICAqLworICAg IHRjZ19nZW5fYW5kaV90bChSZEwsICAgIFIsICAgICAgMHhmZik7CisgICAgdGNnX2dlbl9zaHJp X3RsKFJkSCwgICAgUiwgICAgICA4KTsKKworICAgIHRjZ190ZW1wX2ZyZWVfaTMyKHQwKTsKKyAg ICB0Y2dfdGVtcF9mcmVlX2kzMihSZCk7CisgICAgdGNnX3RlbXBfZnJlZV9pMzIoUik7CisKKyAg ICByZXR1cm4gIEJTX05PTkU7Cit9CisKKworLyogIFRoaXMgaW5zdHJ1Y3Rpb24gdGVzdHMgYSBz aW5nbGUgYml0IGluIGEgcmVnaXN0ZXIgYW5kIHNraXBzIHRoZSBuZXh0IGluc3RydWN0aW9uIGlm IHRoZSBiaXQgaXMgY2xlYXJlZC4gICovCitpbnQgICAgIGF2cl9leGVjdXRlX1NCUkNfMTExMTEx MGFhYWFhMGJiYihDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZyX29wY29kZV9TQlJDXzExMTExMTBh YWFhYTBiYmJfdCBjb25zdCAqaW5zdCkKK3sKKyAgICBUQ0d2ICAgICAgICBSciAgPSBjcHVfcltp bnN0LT5Scl07CisgICAgVENHdiAgICAgICAgdDAgID0gdGNnX3RlbXBfbmV3X2kzMigpOworICAg IFRDR0xhYmVsICAgKnNraXA9IGdlbl9uZXdfbGFiZWwoKTsKKworICAgIHRjZ19nZW5fbW92aV90 bCggICAgY3B1X3BjLCBjdHgtPmluc3RbMV0ubnBjKTsgICAgICAvKiAgUEMgaWYgbmV4dCBpbnN0 IGlzIHNraXBwZWQgICovCisgICAgdGNnX2dlbl9hbmRpX3RsKCAgICB0MCwgICAgIFJyLCAgICAg MSA8PCBpbnN0LT5CaXQpOworICAgIHRjZ19nZW5fYnJjb25kaV9pMzIoVENHX0NPTkRfRVEsIHQw LCAwLCBza2lwKTsKKyAgICB0Y2dfZ2VuX21vdmlfdGwoICAgIGNwdV9wYywgY3R4LT5pbnN0WzBd Lm5wYyk7ICAvKiAgUEMgaWYgbmV4dCBpbnN0IGlzIG5vdCBza2lwcGVkICAqLworICAgIGdlbl9z ZXRfbGFiZWwoc2tpcCk7CisKKyAgICB0Y2dfdGVtcF9mcmVlX2kzMih0MCk7CisKKyAgICByZXR1 cm4gIEJTX0JSQU5DSDsKK30KKworCisvKiAgVGhpcyBpbnN0cnVjdGlvbiB0ZXN0cyBhIHNpbmds ZSBiaXQgaW4gYSByZWdpc3RlciBhbmQgc2tpcHMgdGhlIG5leHQgaW5zdHJ1Y3Rpb24gaWYgdGhl IGJpdCBpcyBzZXQuICAqLworaW50ICAgICBhdnJfZXhlY3V0ZV9TQlJTXzExMTExMTFhYWFhYTBi YmIoQ1BVQVZSU3RhdGUgKmVudiwgRGlzYXNDb250ZXh0ICpjdHgsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGF2cl9vcGNvZGVfU0JSU18xMTExMTExYWFhYWEwYmJi X3QgY29uc3QgKmluc3QpCit7CisgICAgVENHdiAgICAgICAgUnIgID0gY3B1X3JbaW5zdC0+UnJd OworICAgIFRDR3YgICAgICAgIHQwICA9IHRjZ190ZW1wX25ld19pMzIoKTsKKyAgICBUQ0dMYWJl bCAgICpza2lwPSBnZW5fbmV3X2xhYmVsKCk7CisKKyAgICB0Y2dfZ2VuX21vdmlfdGwoICAgIGNw dV9wYywgY3R4LT5pbnN0WzFdLm5wYyk7ICAvKiAgUEMgaWYgbmV4dCBpbnN0IGlzIHNraXBwZWQg ICovCisgICAgdGNnX2dlbl9hbmRpX3RsKCAgICB0MCwgICAgIFJyLCAgICAgMSA8PCBpbnN0LT5C aXQpOworICAgIHRjZ19nZW5fYnJjb25kaV9pMzIoVENHX0NPTkRfTkUsICAgIHQwLCAwLCBza2lw KTsKKyAgICB0Y2dfZ2VuX21vdmlfdGwoICAgIGNwdV9wYywgY3R4LT5pbnN0WzBdLm5wYyk7ICAv KiAgUEMgaWYgbmV4dCBpbnN0IGlzIG5vdCBza2lwcGVkICAqLworICAgIGdlbl9zZXRfbGFiZWwo c2tpcCk7CisKKyAgICB0Y2dfdGVtcF9mcmVlX2kzMih0MCk7CisKKyAgICByZXR1cm4gIEJTX0JS QU5DSDsKK30KKworLyogIFRoaXMgaW5zdHJ1Y3Rpb24gc2V0cyB0aGUgY2lyY3VpdCBpbiBzbGVl cCBtb2RlIGRlZmluZWQgYnkgdGhlIE1DVSBDb250cm9sIFJlZ2lzdGVyLiAgKi8KK2ludCAgICAg YXZyX2V4ZWN1dGVfU0xFRVBfMTAwMTAxMDExMDAwMTAwMChDUFVBVlJTdGF0ZSAqZW52LCBEaXNh c0NvbnRleHQgKmN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YXZyX29wY29kZV9TTEVFUF8xMDAxMDEwMTEwMDAxMDAwX3QgY29uc3QgKmluc3QpCit7CisgICAg Z2VuX2hlbHBlcl9zbGVlcChjcHVfZW52KTsKKworICAgIHJldHVybiAgQlNfRVhDUDsKK30KKwor CisvKiAgU1BNIGNhbiBiZSB1c2VkIHRvIGVyYXNlIGEgcGFnZSBpbiB0aGUgUHJvZ3JhbSBtZW1v cnksIHRvIHdyaXRlIGEgcGFnZSBpbiB0aGUgUHJvZ3JhbSBtZW1vcnkgKHRoYXQgaXMgICovCisv KiAgYWxyZWFkeSBlcmFzZWQpLCBhbmQgdG8gc2V0IEJvb3QgTG9hZGVyIExvY2sgYml0cy4gSW4g c29tZSBkZXZpY2VzLCB0aGUgUHJvZ3JhbSBtZW1vcnkgY2FuIGJlIHdyaXR0ZW4gb25lICAqLwor LyogIHdvcmQgYXQgYSB0aW1lLCBpbiBvdGhlciBkZXZpY2VzIGFuIGVudGlyZSBwYWdlIGNhbiBi ZSBwcm9ncmFtbWVkIHNpbXVsdGFuZW91c2x5IGFmdGVyIGZpcnN0IGZpbGxpbmcgYSB0ZW1wb3Jh cnkgICovCisvKiAgcGFnZSBidWZmZXIuIEluIGFsbCBjYXNlcywgdGhlIFByb2dyYW0gbWVtb3J5 IG11c3QgYmUgZXJhc2VkIG9uZSBwYWdlIGF0IGEgdGltZS4gV2hlbiBlcmFzaW5nIHRoZSBQcm9n cmFtICAqLworLyogIG1lbW9yeSwgdGhlIFJBTVBaIGFuZCBaLXJlZ2lzdGVyIGFyZSB1c2VkIGFz IHBhZ2UgYWRkcmVzcy4gV2hlbiB3cml0aW5nIHRoZSBQcm9ncmFtIG1lbW9yeSwgdGhlIFJBTVBa ICAqLworLyogIGFuZCBaLXJlZ2lzdGVyIGFyZSB1c2VkIGFzIHBhZ2Ugb3Igd29yZCBhZGRyZXNz LCBhbmQgdGhlIFIxOlIwIHJlZ2lzdGVyIHBhaXIgaXMgdXNlZCBhcyBkYXRhKDEpLiBXaGVuIHNl dHRpbmcgICovCisvKiAgdGhlIEJvb3QgTG9hZGVyIExvY2sgYml0cywgdGhlIFIxOlIwIHJlZ2lz dGVyIHBhaXIgaXMgdXNlZCBhcyBkYXRhLiBSZWZlciB0byB0aGUgZGV2aWNlIGRvY3VtZW50YXRp b24gZm9yICAqLworLyogIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIFNQTSB1c2FnZS4gVGhpcyBp bnN0cnVjdGlvbiBjYW4gYWRkcmVzcyB0aGUgZW50aXJlIFByb2dyYW0gbWVtb3J5LiAgKi8KKy8q ICBUaGUgU1BNIGluc3RydWN0aW9uIGlzIG5vdCBhdmFpbGFibGUgaW4gYWxsIGRldmljZXMuIFJl ZmVyIHRvIHRoZSBkZXZpY2Ugc3BlY2lmaWMgaW5zdHJ1Y3Rpb24gc2V0IHN1bW1hcnkuICAqLwor LyogIE5vdGU6IDEuIFIxIGRldGVybWluZXMgdGhlIGluc3RydWN0aW9uIGhpZ2ggYnl0ZSwgYW5k IFIwIGRldGVybWluZXMgdGhlIGluc3RydWN0aW9uIGxvdyBieXRlLiAgKi8KK2ludCAgICAgYXZy X2V4ZWN1dGVfU1BNXzEwMDEwMTAxMTExMDEwMDAoQ1BVQVZSU3RhdGUgKmVudiwgRGlzYXNDb250 ZXh0ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2cl9v cGNvZGVfU1BNXzEwMDEwMTAxMTExMDEwMDBfdCBjb25zdCAqaW5zdCkKK3sKKyAgICBpZiAoYXZy X2ZlYXR1cmUoZW52LCBBVlJfRkVBVFVSRV9TUE0pID09IGZhbHNlKSB7CisgICAgICAgIGdlbl9o ZWxwZXJfdW5zdXBwb3J0ZWQoY3B1X2Vudik7CisKKyAgICAgICAgcmV0dXJuIEJTX0VYQ1A7Cisg ICAgfQorCisgICAgLyogIFRPRE86ICAgPz8/ICAqLworICAgIHJldHVybiAgQlNfTk9ORTsKK30K KworaW50ICAgICBhdnJfZXhlY3V0ZV9TUE1YXzEwMDEwMTAxMTExMTEwMDAoQ1BVQVZSU3RhdGUg KmVudiwgRGlzYXNDb250ZXh0ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGF2cl9vcGNvZGVfU1BNWF8xMDAxMDEwMTExMTExMDAwX3QgY29uc3QgKmluc3Qp Cit7CisgICAgaWYgKGF2cl9mZWF0dXJlKGVudiwgQVZSX0ZFQVRVUkVfU1BNWCkgPT0gZmFsc2Up IHsKKyAgICAgICAgZ2VuX2hlbHBlcl91bnN1cHBvcnRlZChjcHVfZW52KTsKKworICAgICAgICBy ZXR1cm4gQlNfRVhDUDsKKyAgICB9CisKKyAgICAvKiAgVE9ETzogICA/Pz8gICovCisgICAgcmV0 dXJuICBCU19OT05FOworfQorCitpbnQgICAgIGF2cl9leGVjdXRlX1NUWDFfMTAwMTAwMWFhYWFh MTEwMChDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZyX29wY29kZV9TVFgxXzEwMDEwMDFhYWFhYTEx MDBfdCBjb25zdCAqaW5zdCkKK3sKKyAgICBUQ0d2ICAgIFJkICA9IGNwdV9yW2luc3QtPlJyXTsK KyAgICBUQ0d2ICAgIGFkZHI9IHRjZ190ZW1wX25ld19pMzIoKTsKKyAgICBUQ0d2ICAgIEggICA9 IGNwdV9yYW1wWDsKKyAgICBUQ0d2ICAgIE0gICA9IGNwdV9yWzI3XTsKKyAgICBUQ0d2ICAgIEwg ICA9IGNwdV9yWzI2XTsKKworICAgIHRjZ19nZW5fbW92X3RsKCBhZGRyLCAgIEgpOyAgICAgICAg ICAgICAgICAgICAgIC8qICBhZGRyICAgID0gSDpNOkwgICovCisgICAgdGNnX2dlbl9zaGxpX3Rs KGFkZHIsICAgYWRkciwgICA4KTsKKyAgICB0Y2dfZ2VuX29yX3RsKCAgYWRkciwgICBhZGRyLCAg IE0pOworICAgIHRjZ19nZW5fc2hsaV90bChhZGRyLCAgIGFkZHIsICAgOCk7CisgICAgdGNnX2dl bl9vcl90bCggIGFkZHIsICAgYWRkciwgICBMKTsKKworICAgIHRjZ19nZW5fcWVtdV9zdDgoCisg ICAgICAgICAgICAgICAgICAgIFJkLCAgICAgYWRkciwgICBEQVRBX0lOREVYKTsKKworICAgIHRj Z190ZW1wX2ZyZWVfaTMyKGFkZHIpOworCisKKyAgICByZXR1cm4gIEJTX05PTkU7Cit9CisKK2lu dCAgICAgYXZyX2V4ZWN1dGVfU1RYMl8xMDAxMDAxYWFhYWExMTAxKENQVUFWUlN0YXRlICplbnYs IERpc2FzQ29udGV4dCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBhdnJfb3Bjb2RlX1NUWDJfMTAwMTAwMWFhYWFhMTEwMV90IGNvbnN0ICppbnN0KQorewor ICAgIFRDR3YgICAgUmQgID0gY3B1X3JbaW5zdC0+UnJdOworICAgIFRDR3YgICAgYWRkcj0gdGNn X3RlbXBfbmV3X2kzMigpOworICAgIFRDR3YgICAgSCAgID0gY3B1X3JhbXBYOworICAgIFRDR3Yg ICAgTSAgID0gY3B1X3JbMjddOworICAgIFRDR3YgICAgTCAgID0gY3B1X3JbMjZdOworCisgICAg dGNnX2dlbl9tb3ZfdGwoIGFkZHIsICAgSCk7ICAgICAgICAgICAgICAgICAgICAgLyogIGFkZHIg ICAgPSBIOk06TCAgKi8KKyAgICB0Y2dfZ2VuX3NobGlfdGwoYWRkciwgICBhZGRyLCAgIDgpOwor ICAgIHRjZ19nZW5fb3JfdGwoICBhZGRyLCAgIGFkZHIsICAgTSk7CisgICAgdGNnX2dlbl9zaGxp X3RsKGFkZHIsICAgYWRkciwgICA4KTsKKyAgICB0Y2dfZ2VuX29yX3RsKCAgYWRkciwgICBhZGRy LCAgIEwpOworCisgICAgdGNnX2dlbl9xZW11X3N0OCgKKyAgICAgICAgICAgICAgICAgICAgUmQs ICAgICBhZGRyLCAgIERBVEFfSU5ERVgpOworICAgIHRjZ19nZW5fYWRkaV90bChhZGRyLCAgIGFk ZHIsICAgMSk7ICAgICAgICAgICAgIC8qICBhZGRyICAgID0gYWRkciArIDEgICovCisKKyAgICB0 Y2dfZ2VuX21vdl90bCggTCwgICAgICBhZGRyKTsKKyAgICB0Y2dfZ2VuX2FuZGlfdGwoTCwgICAg ICBMLCAgICAgIDB4ZmYpOworCisgICAgdGNnX2dlbl9zaHJpX3RsKGFkZHIsICAgYWRkciwgICA4 KTsKKyAgICB0Y2dfZ2VuX21vdl90bCggTSwgICAgICBhZGRyKTsKKyAgICB0Y2dfZ2VuX2FuZGlf dGwoTSwgICAgICBNLCAgICAgIDB4ZmYpOworCisgICAgdGNnX2dlbl9zaHJpX3RsKGFkZHIsICAg YWRkciwgICA4KTsKKyAgICB0Y2dfZ2VuX21vdl90bCggSCwgICAgICBhZGRyKTsKKyAgICB0Y2df Z2VuX2FuZGlfdGwoSCwgICAgICBILCAgICAgIDB4ZmYpOworCisgICAgdGNnX3RlbXBfZnJlZV9p MzIoYWRkcik7CisKKworICAgIHJldHVybiAgQlNfTk9ORTsKK30KKworaW50ICAgICBhdnJfZXhl Y3V0ZV9TVFgzXzEwMDEwMDFhYWFhYTExMTAoQ1BVQVZSU3RhdGUgKmVudiwgRGlzYXNDb250ZXh0 ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2cl9vcGNv ZGVfU1RYM18xMDAxMDAxYWFhYWExMTEwX3QgY29uc3QgKmluc3QpCit7CisgICAgVENHdiAgICBS ZCAgPSBjcHVfcltpbnN0LT5Scl07CisgICAgVENHdiAgICBhZGRyPSB0Y2dfdGVtcF9uZXdfaTMy KCk7CisgICAgVENHdiAgICBIICAgPSBjcHVfcmFtcFg7CisgICAgVENHdiAgICBNICAgPSBjcHVf clsyN107CisgICAgVENHdiAgICBMICAgPSBjcHVfclsyNl07CisKKyAgICB0Y2dfZ2VuX21vdl90 bCggYWRkciwgICBIKTsgICAgICAgICAgICAgICAgICAgICAvKiAgYWRkciAgICA9IEg6TTpMICAq LworICAgIHRjZ19nZW5fc2hsaV90bChhZGRyLCAgIGFkZHIsICAgOCk7CisgICAgdGNnX2dlbl9v cl90bCggIGFkZHIsICAgYWRkciwgICBNKTsKKyAgICB0Y2dfZ2VuX3NobGlfdGwoYWRkciwgICBh ZGRyLCAgIDgpOworICAgIHRjZ19nZW5fb3JfdGwoICBhZGRyLCAgIGFkZHIsICAgTCk7CisKKyAg ICB0Y2dfZ2VuX3N1YmlfdGwoYWRkciwgICBhZGRyLCAgIDEpOyAgICAgICAgICAgICAvKiAgYWRk ciAgICA9IGFkZHIgLSAxICAqLworICAgIHRjZ19nZW5fcWVtdV9zdDgoCisgICAgICAgICAgICAg ICAgICAgIFJkLCAgICAgYWRkciwgICBEQVRBX0lOREVYKTsKKworICAgIHRjZ19nZW5fbW92X3Rs KCBMLCAgICAgIGFkZHIpOworICAgIHRjZ19nZW5fYW5kaV90bChMLCAgICAgIEwsICAgICAgMHhm Zik7CisKKyAgICB0Y2dfZ2VuX3NocmlfdGwoYWRkciwgICBhZGRyLCAgIDgpOworICAgIHRjZ19n ZW5fbW92X3RsKCBNLCAgICAgIGFkZHIpOworICAgIHRjZ19nZW5fYW5kaV90bChNLCAgICAgIE0s ICAgICAgMHhmZik7CisKKyAgICB0Y2dfZ2VuX3NocmlfdGwoYWRkciwgICBhZGRyLCAgIDgpOwor ICAgIHRjZ19nZW5fbW92X3RsKCBILCAgICAgIGFkZHIpOworICAgIHRjZ19nZW5fYW5kaV90bChI LCAgICAgIEgsICAgICAgMHhmZik7CisKKyAgICB0Y2dfdGVtcF9mcmVlX2kzMihhZGRyKTsKKwor CisgICAgcmV0dXJuICBCU19OT05FOworfQorCitpbnQgICAgIGF2cl9leGVjdXRlX1NUWTJfMTAw MTAwMWFhYWFhMTAwMShDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZyX29wY29kZV9TVFkyXzEwMDEw MDFhYWFhYTEwMDFfdCBjb25zdCAqaW5zdCkKK3sKKyAgICBUQ0d2ICAgIFJkICA9IGNwdV9yW2lu c3QtPlJkXTsKKyAgICBUQ0d2ICAgIGFkZHI9IHRjZ190ZW1wX25ld19pMzIoKTsKKyAgICBUQ0d2 ICAgIEggICA9IGNwdV9yYW1wWTsKKyAgICBUQ0d2ICAgIE0gICA9IGNwdV9yWzI5XTsKKyAgICBU Q0d2ICAgIEwgICA9IGNwdV9yWzI4XTsKKworICAgIHRjZ19nZW5fbW92X3RsKCBhZGRyLCAgIEgp OyAgICAgICAgICAgICAgICAgICAgIC8qICBhZGRyICAgID0gSDpNOkwgICovCisgICAgdGNnX2dl bl9zaGxpX3RsKGFkZHIsICAgYWRkciwgICA4KTsKKyAgICB0Y2dfZ2VuX29yX3RsKCAgYWRkciwg ICBhZGRyLCAgIE0pOworICAgIHRjZ19nZW5fc2hsaV90bChhZGRyLCAgIGFkZHIsICAgOCk7Cisg ICAgdGNnX2dlbl9vcl90bCggIGFkZHIsICAgYWRkciwgICBMKTsKKworICAgIHRjZ19nZW5fcWVt dV9zdDgoCisgICAgICAgICAgICAgICAgICAgIFJkLCAgICAgYWRkciwgICBEQVRBX0lOREVYKTsK KyAgICB0Y2dfZ2VuX2FkZGlfdGwoYWRkciwgICBhZGRyLCAgIDEpOyAgICAgICAgICAgICAvKiAg YWRkciAgICA9IGFkZHIgKyAxICAqLworCisgICAgdGNnX2dlbl9tb3ZfdGwoIEwsICAgICAgYWRk cik7CisgICAgdGNnX2dlbl9hbmRpX3RsKEwsICAgICAgTCwgICAgICAweGZmKTsKKworICAgIHRj Z19nZW5fc2hyaV90bChhZGRyLCAgIGFkZHIsICAgOCk7CisgICAgdGNnX2dlbl9tb3ZfdGwoIE0s ICAgICAgYWRkcik7CisgICAgdGNnX2dlbl9hbmRpX3RsKE0sICAgICAgTSwgICAgICAweGZmKTsK KworICAgIHRjZ19nZW5fc2hyaV90bChhZGRyLCAgIGFkZHIsICAgOCk7CisgICAgdGNnX2dlbl9t b3ZfdGwoIEgsICAgICAgYWRkcik7CisgICAgdGNnX2dlbl9hbmRpX3RsKEgsICAgICAgSCwgICAg ICAweGZmKTsKKworICAgIHRjZ190ZW1wX2ZyZWVfaTMyKGFkZHIpOworCisKKyAgICByZXR1cm4g IEJTX05PTkU7Cit9CisKK2ludCAgICAgYXZyX2V4ZWN1dGVfU1RZM18xMDAxMDAxYWFhYWExMDEw KENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4LAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBhdnJfb3Bjb2RlX1NUWTNfMTAwMTAwMWFhYWFhMTAxMF90 IGNvbnN0ICppbnN0KQoreworICAgIFRDR3YgICAgUmQgID0gY3B1X3JbaW5zdC0+UmRdOworICAg IFRDR3YgICAgYWRkcj0gdGNnX3RlbXBfbmV3X2kzMigpOworICAgIFRDR3YgICAgSCAgID0gY3B1 X3JhbXBZOworICAgIFRDR3YgICAgTSAgID0gY3B1X3JbMjldOworICAgIFRDR3YgICAgTCAgID0g Y3B1X3JbMjhdOworCisgICAgdGNnX2dlbl9tb3ZfdGwoIGFkZHIsICAgSCk7ICAgICAgICAgICAg ICAgICAgICAgLyogIGFkZHIgICAgPSBIOk06TCAgKi8KKyAgICB0Y2dfZ2VuX3NobGlfdGwoYWRk ciwgICBhZGRyLCAgIDgpOworICAgIHRjZ19nZW5fb3JfdGwoICBhZGRyLCAgIGFkZHIsICAgTSk7 CisgICAgdGNnX2dlbl9zaGxpX3RsKGFkZHIsICAgYWRkciwgICA4KTsKKyAgICB0Y2dfZ2VuX29y X3RsKCAgYWRkciwgICBhZGRyLCAgIEwpOworCisgICAgdGNnX2dlbl9zdWJpX3RsKGFkZHIsICAg YWRkciwgICAxKTsgICAgICAgICAgICAgLyogIGFkZHIgICAgPSBhZGRyIC0gMSAgKi8KKyAgICB0 Y2dfZ2VuX3FlbXVfc3Q4KAorICAgICAgICAgICAgICAgICAgICBSZCwgICAgIGFkZHIsICAgREFU QV9JTkRFWCk7CisKKyAgICB0Y2dfZ2VuX21vdl90bCggTCwgICAgICBhZGRyKTsKKyAgICB0Y2df Z2VuX2FuZGlfdGwoTCwgICAgICBMLCAgICAgIDB4ZmYpOworCisgICAgdGNnX2dlbl9zaHJpX3Rs KGFkZHIsICAgYWRkciwgICA4KTsKKyAgICB0Y2dfZ2VuX21vdl90bCggTSwgICAgICBhZGRyKTsK KyAgICB0Y2dfZ2VuX2FuZGlfdGwoTSwgICAgICBNLCAgICAgIDB4ZmYpOworCisgICAgdGNnX2dl bl9zaHJpX3RsKGFkZHIsICAgYWRkciwgICA4KTsKKyAgICB0Y2dfZ2VuX21vdl90bCggSCwgICAg ICBhZGRyKTsKKyAgICB0Y2dfZ2VuX2FuZGlfdGwoSCwgICAgICBILCAgICAgIDB4ZmYpOworCisg ICAgdGNnX3RlbXBfZnJlZV9pMzIoYWRkcik7CisKKworICAgIHJldHVybiAgQlNfTk9ORTsKK30K KworaW50ICAgICBhdnJfZXhlY3V0ZV9TVERZXzEwYTBiYjFjY2NjYzFkZGQoQ1BVQVZSU3RhdGUg KmVudiwgRGlzYXNDb250ZXh0ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGF2cl9vcGNvZGVfU1REWV8xMGEwYmIxY2NjY2MxZGRkX3QgY29uc3QgKmluc3Qp Cit7CisgICAgVENHdiAgICBSZCAgPSBjcHVfcltpbnN0LT5SZF07CisgICAgVENHdiAgICBhZGRy PSB0Y2dfdGVtcF9uZXdfaTMyKCk7CisgICAgVENHdiAgICBIICAgPSBjcHVfcmFtcFk7CisgICAg VENHdiAgICBNICAgPSBjcHVfclsyOV07CisgICAgVENHdiAgICBMICAgPSBjcHVfclsyOF07CisK KyAgICB0Y2dfZ2VuX21vdl90bCggYWRkciwgICBIKTsgICAgICAgICAgICAgICAgICAgICAvKiAg YWRkciAgICA9IEg6TTpMICAqLworICAgIHRjZ19nZW5fc2hsaV90bChhZGRyLCAgIGFkZHIsICAg OCk7CisgICAgdGNnX2dlbl9vcl90bCggIGFkZHIsICAgYWRkciwgICBNKTsKKyAgICB0Y2dfZ2Vu X3NobGlfdGwoYWRkciwgICBhZGRyLCAgIDgpOworICAgIHRjZ19nZW5fb3JfdGwoICBhZGRyLCAg IGFkZHIsICAgTCk7CisKKyAgICB0Y2dfZ2VuX2FkZGlfdGwoYWRkciwgICBhZGRyLCAgIChpbnN0 LT5oSW1tIDw8IDUpIHwgKGluc3QtPm1JbW0gPDwgMikgfCBpbnN0LT5sSW1tKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgYWRkciAgICA9 IGFkZHIgKyBxICAqLworICAgIHRjZ19nZW5fcWVtdV9zdDgoCisgICAgICAgICAgICAgICAgICAg IFJkLCAgICAgYWRkciwgICBEQVRBX0lOREVYKTsKKworICAgIHRjZ190ZW1wX2ZyZWVfaTMyKGFk ZHIpOworCisKKyAgICByZXR1cm4gIEJTX05PTkU7Cit9CisKK2ludCAgICAgYXZyX2V4ZWN1dGVf U1RaMl8xMDAxMDAxYWFhYWEwMDAxKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4 LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdnJfb3Bjb2RlX1NU WjJfMTAwMTAwMWFhYWFhMDAwMV90IGNvbnN0ICppbnN0KQoreworICAgIFRDR3YgICAgUmQgID0g Y3B1X3JbaW5zdC0+UmRdOworICAgIFRDR3YgICAgYWRkcj0gdGNnX3RlbXBfbmV3X2kzMigpOwor ICAgIFRDR3YgICAgSCAgID0gY3B1X3JhbXBaOworICAgIFRDR3YgICAgTSAgID0gY3B1X3JbMzFd OworICAgIFRDR3YgICAgTCAgID0gY3B1X3JbMzBdOworCisgICAgdGNnX2dlbl9tb3ZfdGwoIGFk ZHIsICAgSCk7ICAgICAgICAgICAgICAgICAgICAgLyogIGFkZHIgICAgPSBIOk06TCAgKi8KKyAg ICB0Y2dfZ2VuX3NobGlfdGwoYWRkciwgICBhZGRyLCAgIDgpOworICAgIHRjZ19nZW5fb3JfdGwo ICBhZGRyLCAgIGFkZHIsICAgTSk7CisgICAgdGNnX2dlbl9zaGxpX3RsKGFkZHIsICAgYWRkciwg ICA4KTsKKyAgICB0Y2dfZ2VuX29yX3RsKCAgYWRkciwgICBhZGRyLCAgIEwpOworCisgICAgdGNn X2dlbl9xZW11X3N0OCgKKyAgICAgICAgICAgICAgICAgICAgUmQsICAgICBhZGRyLCAgIERBVEFf SU5ERVgpOworICAgIHRjZ19nZW5fYWRkaV90bChhZGRyLCAgIGFkZHIsICAgMSk7ICAgICAgICAg ICAgIC8qICBhZGRyICAgID0gYWRkciArIDEgICovCisKKyAgICB0Y2dfZ2VuX21vdl90bCggTCwg ICAgICBhZGRyKTsKKyAgICB0Y2dfZ2VuX2FuZGlfdGwoTCwgICAgICBMLCAgICAgIDB4ZmYpOwor CisgICAgdGNnX2dlbl9zaHJpX3RsKGFkZHIsICAgYWRkciwgICA4KTsKKyAgICB0Y2dfZ2VuX21v dl90bCggTSwgICAgICBhZGRyKTsKKyAgICB0Y2dfZ2VuX2FuZGlfdGwoTSwgICAgICBNLCAgICAg IDB4ZmYpOworCisgICAgdGNnX2dlbl9zaHJpX3RsKGFkZHIsICAgYWRkciwgICA4KTsKKyAgICB0 Y2dfZ2VuX21vdl90bCggSCwgICAgICBhZGRyKTsKKyAgICB0Y2dfZ2VuX2FuZGlfdGwoSCwgICAg ICBILCAgICAgIDB4ZmYpOworCisgICAgdGNnX3RlbXBfZnJlZV9pMzIoYWRkcik7CisKKworCisg ICAgcmV0dXJuICBCU19OT05FOworfQorCitpbnQgICAgIGF2cl9leGVjdXRlX1NUWjNfMTAwMTAw MWFhYWFhMDAxMChDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZyX29wY29kZV9TVFozXzEwMDEwMDFh YWFhYTAwMTBfdCBjb25zdCAqaW5zdCkKK3sKKyAgICBUQ0d2ICAgIFJkICA9IGNwdV9yW2luc3Qt PlJkXTsKKyAgICBUQ0d2ICAgIGFkZHI9IHRjZ190ZW1wX25ld19pMzIoKTsKKyAgICBUQ0d2ICAg IEggICA9IGNwdV9yYW1wWjsKKyAgICBUQ0d2ICAgIE0gICA9IGNwdV9yWzMxXTsKKyAgICBUQ0d2 ICAgIEwgICA9IGNwdV9yWzMwXTsKKworICAgIHRjZ19nZW5fbW92X3RsKCBhZGRyLCAgIEgpOyAg ICAgICAgICAgICAgICAgICAgIC8qICBhZGRyICAgID0gSDpNOkwgICovCisgICAgdGNnX2dlbl9z aGxpX3RsKGFkZHIsICAgYWRkciwgICA4KTsKKyAgICB0Y2dfZ2VuX29yX3RsKCAgYWRkciwgICBh ZGRyLCAgIE0pOworICAgIHRjZ19nZW5fc2hsaV90bChhZGRyLCAgIGFkZHIsICAgOCk7CisgICAg dGNnX2dlbl9vcl90bCggIGFkZHIsICAgYWRkciwgICBMKTsKKworICAgIHRjZ19nZW5fc3ViaV90 bChhZGRyLCAgIGFkZHIsICAgMSk7ICAgICAgICAgICAgIC8qICBhZGRyICAgID0gYWRkciAtIDEg ICovCisgICAgdGNnX2dlbl9xZW11X3N0OCgKKyAgICAgICAgICAgICAgICAgICAgUmQsICAgICBh ZGRyLCAgIERBVEFfSU5ERVgpOworCisgICAgdGNnX2dlbl9tb3ZfdGwoIEwsICAgICAgYWRkcik7 CisgICAgdGNnX2dlbl9hbmRpX3RsKEwsICAgICAgTCwgICAgICAweGZmKTsKKworICAgIHRjZ19n ZW5fc2hyaV90bChhZGRyLCAgIGFkZHIsICAgOCk7CisgICAgdGNnX2dlbl9tb3ZfdGwoIE0sICAg ICAgYWRkcik7CisgICAgdGNnX2dlbl9hbmRpX3RsKE0sICAgICAgTSwgICAgICAweGZmKTsKKwor ICAgIHRjZ19nZW5fc2hyaV90bChhZGRyLCAgIGFkZHIsICAgOCk7CisgICAgdGNnX2dlbl9tb3Zf dGwoIEgsICAgICAgYWRkcik7CisgICAgdGNnX2dlbl9hbmRpX3RsKEgsICAgICAgSCwgICAgICAw eGZmKTsKKworICAgIHRjZ190ZW1wX2ZyZWVfaTMyKGFkZHIpOworCisKKworICAgIHJldHVybiAg QlNfTk9ORTsKK30KKworaW50ICAgICBhdnJfZXhlY3V0ZV9TVERaXzEwYTBiYjFjY2NjYzBkZGQo Q1BVQVZSU3RhdGUgKmVudiwgRGlzYXNDb250ZXh0ICpjdHgsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGF2cl9vcGNvZGVfU1REWl8xMGEwYmIxY2NjY2MwZGRkX3Qg Y29uc3QgKmluc3QpCit7CisgICAgVENHdiAgICBSZCAgPSBjcHVfcltpbnN0LT5SZF07CisgICAg VENHdiAgICBhZGRyPSB0Y2dfdGVtcF9uZXdfaTMyKCk7CisgICAgVENHdiAgICBIICAgPSBjcHVf cmFtcFo7CisgICAgVENHdiAgICBNICAgPSBjcHVfclszMV07CisgICAgVENHdiAgICBMICAgPSBj cHVfclszMF07CisKKyAgICB0Y2dfZ2VuX21vdl90bCggYWRkciwgICBIKTsgICAgICAgICAgICAg ICAgICAgICAvKiAgYWRkciAgICA9IEg6TTpMICAqLworICAgIHRjZ19nZW5fc2hsaV90bChhZGRy LCAgIGFkZHIsICAgOCk7CisgICAgdGNnX2dlbl9vcl90bCggIGFkZHIsICAgYWRkciwgICBNKTsK KyAgICB0Y2dfZ2VuX3NobGlfdGwoYWRkciwgICBhZGRyLCAgIDgpOworICAgIHRjZ19nZW5fb3Jf dGwoICBhZGRyLCAgIGFkZHIsICAgTCk7CisKKyAgICB0Y2dfZ2VuX2FkZGlfdGwoYWRkciwgICBh ZGRyLCAgIChpbnN0LT5oSW1tIDw8IDUpIHwgKGluc3QtPm1JbW0gPDwgMikgfCBpbnN0LT5sSW1t KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv KiAgYWRkciAgICA9IGFkZHIgKyBxICAqLworICAgIHRjZ19nZW5fcWVtdV9zdDgoCisgICAgICAg ICAgICAgICAgICAgIFJkLCAgICAgYWRkciwgICBEQVRBX0lOREVYKTsKKworICAgIHRjZ190ZW1w X2ZyZWVfaTMyKGFkZHIpOworCisKKyAgICByZXR1cm4gIEJTX05PTkU7Cit9CisKKworLyogIFN0 b3JlcyBvbmUgYnl0ZSBmcm9tIGEgUmVnaXN0ZXIgdG8gdGhlIGRhdGEgc3BhY2UuIEZvciBwYXJ0 cyB3aXRoIFNSQU0sIHRoZSBkYXRhIHNwYWNlIGNvbnNpc3RzIG9mIHRoZSBSZWdpc3RlciAgKi8K Ky8qICBGaWxlLCBJL08gbWVtb3J5IGFuZCBpbnRlcm5hbCBTUkFNIChhbmQgZXh0ZXJuYWwgU1JB TSBpZiBhcHBsaWNhYmxlKS4gRm9yIHBhcnRzIHdpdGhvdXQgU1JBTSwgdGhlIGRhdGEgc3BhY2Ug ICovCisvKiAgY29uc2lzdHMgb2YgdGhlIFJlZ2lzdGVyIEZpbGUgb25seS4gVGhlIEVFUFJPTSBo YXMgYSBzZXBhcmF0ZSBhZGRyZXNzIHNwYWNlLiAgKi8KKy8qICBBIDE2LWJpdCBhZGRyZXNzIG11 c3QgYmUgc3VwcGxpZWQuIE1lbW9yeSBhY2Nlc3MgaXMgbGltaXRlZCB0byB0aGUgY3VycmVudCBk YXRhIHNlZ21lbnQgb2YgNjRLQi4gVGhlIFNUUyAgKi8KKy8qICBpbnN0cnVjdGlvbiB1c2VzIHRo ZSBSQU1QRCBSZWdpc3RlciB0byBhY2Nlc3MgbWVtb3J5IGFib3ZlIDY0S0IuIFRvIGFjY2VzcyBh bm90aGVyIGRhdGEgc2VnbWVudCBpbiAgKi8KKy8qICBkZXZpY2VzIHdpdGggbW9yZSB0aGFuIDY0 S0IgZGF0YSBzcGFjZSwgdGhlIFJBTVBEIGluIHJlZ2lzdGVyIGluIHRoZSBJL08gYXJlYSBoYXMg dG8gYmUgY2hhbmdlZC4gICovCisvKiAgVGhpcyBpbnN0cnVjdGlvbiBpcyBub3QgYXZhaWxhYmxl IGluIGFsbCBkZXZpY2VzLiBSZWZlciB0byB0aGUgZGV2aWNlIHNwZWNpZmljIGluc3RydWN0aW9u IHNldCBzdW1tYXJ5LiAgKi8KK2ludCAgICAgYXZyX2V4ZWN1dGVfU1RTXzEwMDEwMDFhYWFhYTAw MDBiYmJiYmJiYmJiYmJiYmJiKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdnJfb3Bjb2RlX1NUU18x MDAxMDAxYWFhYWEwMDAwYmJiYmJiYmJiYmJiYmJiYl90IGNvbnN0ICppbnN0KQoreworICAgIFRD R3YgICAgUmQgID0gY3B1X3JbaW5zdC0+UmRdOworICAgIFRDR3YgICAgYWRkcj0gdGNnX3RlbXBf bmV3X2kzMigpOworICAgIFRDR3YgICAgSCAgID0gY3B1X3JhbXBEOworCisgICAgdGNnX2dlbl9t b3ZfdGwoIGFkZHIsICAgSCk7ICAgICAgICAgICAgICAgICAgICAgLyogIGFkZHIgICAgPSBIOk06 TCAgKi8KKyAgICB0Y2dfZ2VuX3NobGlfdGwoYWRkciwgICBhZGRyLCAgIDE2KTsKKyAgICB0Y2df Z2VuX29yaV90bCggYWRkciwgICBhZGRyLCAgIGluc3QtPkltbSk7CisKKyAgICB0Y2dfZ2VuX3Fl bXVfc3Q4KAorICAgICAgICAgICAgICAgICAgICBSZCwgICAgIGFkZHIsICAgREFUQV9JTkRFWCk7 CisKKyAgICB0Y2dfdGVtcF9mcmVlX2kzMihhZGRyKTsKKworICAgIHJldHVybiAgQlNfTk9ORTsK K30KKworCisvKiAgU3VidHJhY3RzIHR3byByZWdpc3RlcnMgYW5kIHBsYWNlcyB0aGUgcmVzdWx0 IGluIHRoZSBkZXN0aW5hdGlvbiByZWdpc3RlciBSZC4gICovCitpbnQgICAgIGF2cl9leGVjdXRl X1NVQl8wMDAxMTBhYmJiYmJjY2NjKENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4 LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdnJfb3Bjb2RlX1NV Ql8wMDAxMTBhYmJiYmJjY2NjX3QgY29uc3QgKmluc3QpCit7CisgICAgVENHdiAgICBSZCAgPSBj cHVfcltpbnN0LT5SZF07CisgICAgVENHdiAgICBSciAgPSBjcHVfclsoaW5zdC0+aFJyIDw8IDQp IHwgKGluc3QtPmxScildOworICAgIFRDR3YgICAgUiAgID0gdGNnX3RlbXBfbmV3X2kzMigpOwor CisgICAgLyogIG9wICAqLworICAgIHRjZ19nZW5fc3ViX3RsKCBSLCAgICAgIFJkLCAgICAgUnIp OyAgICAgICAgICAgIC8qICBSICAgPSBSZCAtIFJyICAqLworICAgIHRjZ19nZW5fYW5kaV90bChS LCAgICAgIFIsICAgICAgMHhmZik7ICAgICAgICAgIC8qICBtYWtlIGl0IDggYml0cyAgKi8KKwor ICAgIGdlbl9zdWJfQ0hmKCAgICBSLCAgICAgIFJkLCAgICAgUnIpOworICAgIGdlbl9zdWJfVmYo ICAgICBSLCAgICAgIFJkLCAgICAgUnIpOworICAgIGdlbl9aTlNmKCAgICAgICBSKTsKKworICAg IC8qICBSICAqLworICAgIHRjZ19nZW5fbW92X3RsKCBSZCwgICAgIFIpOworCisgICAgdGNnX3Rl bXBfZnJlZV9pMzIoUik7CisKKyAgICByZXR1cm4gIEJTX05PTkU7Cit9CisKKworLyogIFN1YnRy YWN0cyBhIHJlZ2lzdGVyIGFuZCBhIGNvbnN0YW50IGFuZCBwbGFjZXMgdGhlIHJlc3VsdCBpbiB0 aGUgZGVzdGluYXRpb24gcmVnaXN0ZXIgUmQuIFRoaXMgaW5zdHJ1Y3Rpb24gaXMgICovCisvKiAg d29ya2luZyBvbiBSZWdpc3RlciBSMTYgdG8gUjMxIGFuZCBpcyB2ZXJ5IHdlbGwgc3VpdGVkIGZv ciBvcGVyYXRpb25zIG9uIHRoZSBYLCBZLCBhbmQgWi1wb2ludGVycy4gICovCitpbnQgICAgIGF2 cl9leGVjdXRlX1NVQklfMDEwMWFhYWFiYmJiY2NjYyhDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0Nv bnRleHQgKmN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZy X29wY29kZV9TVUJJXzAxMDFhYWFhYmJiYmNjY2NfdCBjb25zdCAqaW5zdCkKK3sKKyAgICBUQ0d2 ICAgIFJkICA9IGNwdV9yW2luc3QtPlJkXTsKKyAgICBUQ0d2ICAgIFJyICA9IHRjZ19jb25zdF9p MzIoKGluc3QtPmhJbW0gPDwgNCkgfCBpbnN0LT5sSW1tKTsKKyAgICBUQ0d2ICAgIFIgICA9IHRj Z190ZW1wX25ld19pMzIoKTsKKworICAgIC8qICBvcCAgKi8KKyAgICB0Y2dfZ2VuX3N1Yl90bCgg UiwgICAgICBSZCwgICAgIFJyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAvKiAgUiAgID0gUmQgLSBJbW0gICovCisgICAgdGNnX2dlbl9hbmRp X3RsKFIsICAgICAgUiwgICAgICAweGZmKTsgICAgICAgICAgLyogIG1ha2UgaXQgOCBiaXRzICAq LworCisgICAgZ2VuX3N1Yl9DSGYoICAgIFIsICAgICAgUmQsICAgICBScik7CisgICAgZ2VuX3N1 Yl9WZiggICAgIFIsICAgICAgUmQsICAgICBScik7CisgICAgZ2VuX1pOU2YoICAgICAgIFIpOwor CisgICAgLyogIFIgICovCisgICAgdGNnX2dlbl9tb3ZfdGwoIFJkLCAgICAgUik7CisKKyAgICB0 Y2dfdGVtcF9mcmVlX2kzMihSKTsKKyAgICB0Y2dfdGVtcF9mcmVlX2kzMihScik7CisKKyAgICBy ZXR1cm4gIEJTX05PTkU7Cit9CisKKy8qICBTd2FwcyBoaWdoIGFuZCBsb3cgbmliYmxlcyBpbiBh IHJlZ2lzdGVyLiAgKi8KK2ludCAgICAgYXZyX2V4ZWN1dGVfU1dBUF8xMDAxMDEwYWFhYWEwMDEw KENQVUFWUlN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4LAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBhdnJfb3Bjb2RlX1NXQVBfMTAwMTAxMGFhYWFhMDAxMF90 IGNvbnN0ICppbnN0KQoreworICAgIFRDR3YgICAgUmQgID0gY3B1X3JbaW5zdC0+UmRdOworICAg IFRDR3YgICAgdDAgID0gdGNnX3RlbXBfbmV3X2kzMigpOworICAgIFRDR3YgICAgdDEgID0gdGNn X3RlbXBfbmV3X2kzMigpOworCisgICAgdGNnX2dlbl9hbmRpX3RsKHQwLCAgICAgUmQsICAgICAw eDBmKTsKKyAgICB0Y2dfZ2VuX3NobGlfdGwodDAsICAgICB0MCwgICAgIDQpOworICAgIHRjZ19n ZW5fYW5kaV90bCh0MSwgICAgIFJkLCAgICAgMHhmMCk7CisgICAgdGNnX2dlbl9zaHJpX3RsKHQx LCAgICAgdDEsICAgICA0KTsKKyAgICB0Y2dfZ2VuX29yX3RsKCAgUmQsICAgICB0MCwgICAgIHQx KTsKKworICAgIHRjZ190ZW1wX2ZyZWVfaTMyKHQxKTsKKyAgICB0Y2dfdGVtcF9mcmVlX2kzMih0 MCk7CisKKyAgICByZXR1cm4gIEJTX05PTkU7Cit9CisKKworLyogIFRoaXMgaW5zdHJ1Y3Rpb24g cmVzZXRzIHRoZSBXYXRjaGRvZyBUaW1lci4gVGhpcyBpbnN0cnVjdGlvbiBtdXN0IGJlIGV4ZWN1 dGVkIHdpdGhpbiBhIGxpbWl0ZWQgdGltZSBnaXZlbiBieSB0aGUgICovCisvKiAgV0QgcHJlc2Nh bGVyLiBTZWUgdGhlIFdhdGNoZG9nIFRpbWVyIGhhcmR3YXJlIHNwZWNpZmljYXRpb24uICAqLwor aW50ICAgICBhdnJfZXhlY3V0ZV9XRFJfMTAwMTAxMDExMDEwMTAwMChDUFVBVlJTdGF0ZSAqZW52 LCBEaXNhc0NvbnRleHQgKmN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYXZyX29wY29kZV9XRFJfMTAwMTAxMDExMDEwMTAwMF90IGNvbnN0ICppbnN0KQorewor CisgICAgZ2VuX2hlbHBlcl93ZHIoY3B1X2Vudik7CisKKyAgICByZXR1cm4gIEJTX05PTkU7Cit9 CisKKworLyogIEV4Y2hhbmdlcyBvbmUgYnl0ZSBpbmRpcmVjdCBiZXR3ZWVuIHJlZ2lzdGVyIGFu ZCBkYXRhIHNwYWNlLiAgKi8KKy8qICBUaGUgZGF0YSBsb2NhdGlvbiBpcyBwb2ludGVkIHRvIGJ5 IHRoZSBaICgxNiBiaXRzKSBQb2ludGVyIFJlZ2lzdGVyIGluIHRoZSBSZWdpc3RlciBGaWxlLiBN ZW1vcnkgYWNjZXNzIGlzIGxpbWl0ZWQgICovCisvKiAgdG8gdGhlIGN1cnJlbnQgZGF0YSBzZWdt ZW50IG9mIDY0S0IuIFRvIGFjY2VzcyBhbm90aGVyIGRhdGEgc2VnbWVudCBpbiBkZXZpY2VzIHdp dGggbW9yZSB0aGFuIDY0S0IgZGF0YSAgKi8KKy8qICBzcGFjZSwgdGhlIFJBTVBaIGluIHJlZ2lz dGVyIGluIHRoZSBJL08gYXJlYSBoYXMgdG8gYmUgY2hhbmdlZC4gICovCisvKiAgVGhlIFotcG9p bnRlciBSZWdpc3RlciBpcyBsZWZ0IHVuY2hhbmdlZCBieSB0aGUgb3BlcmF0aW9uLiBUaGlzIGlu c3RydWN0aW9uIGlzIGVzcGVjaWFsbHkgc3VpdGVkIGZvciB3cml0aW5nL3JlYWRpbmcgICovCisv KiAgc3RhdHVzIGJpdHMgc3RvcmVkIGluIFNSQU0uICAqLworaW50ICAgICBhdnJfZXhlY3V0ZV9Y Q0hfMTAwMTAwMWFhYWFhMDEwMChDUFVBVlJTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKmN0eCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZyX29wY29kZV9YQ0hf MTAwMTAwMWFhYWFhMDEwMF90IGNvbnN0ICppbnN0KQoreworICAgIGlmIChhdnJfZmVhdHVyZShl bnYsIEFWUl9GRUFUVVJFX1JNVykgPT0gZmFsc2UpIHsKKyAgICAgICAgZ2VuX2hlbHBlcl91bnN1 cHBvcnRlZChjcHVfZW52KTsKKworICAgICAgICByZXR1cm4gQlNfRVhDUDsKKyAgICB9CisKKyAg ICBUQ0d2ICAgIFJkICA9IGNwdV9yW2luc3QtPlJkXTsKKyAgICBUQ0d2ICAgIHQwICA9IHRjZ190 ZW1wX25ld19pMzIoKTsKKyAgICBUQ0d2ICAgIGFkZHI9IHRjZ190ZW1wX25ld19pMzIoKTsKKyAg ICBUQ0d2ICAgIEggICA9IGNwdV9yYW1wWjsKKyAgICBUQ0d2ICAgIE0gICA9IGNwdV9yWzMxXTsK KyAgICBUQ0d2ICAgIEwgICA9IGNwdV9yWzMwXTsKKworICAgIHRjZ19nZW5fbW92X3RsKCBhZGRy LCAgIEgpOyAgICAgICAgICAgICAgICAgICAgIC8qICBhZGRyICAgID0gcmFtcFo6cjMxOnIzMCAg Ki8KKyAgICB0Y2dfZ2VuX3NobGlfdGwoYWRkciwgICBhZGRyLCAgIDgpOworICAgIHRjZ19nZW5f b3JfdGwoICBhZGRyLCAgIGFkZHIsICAgTSk7CisgICAgdGNnX2dlbl9zaGxpX3RsKGFkZHIsICAg YWRkciwgICA4KTsKKyAgICB0Y2dfZ2VuX29yX3RsKCAgYWRkciwgICBhZGRyLCAgIEwpOworCisg ICAgdGNnX2dlbl9xZW11X2xkOHUoCisgICAgICAgICAgICAgICAgICAgIGFkZHIsICAgdDAsICAg ICBEQVRBX0lOREVYKTsKKyAgICB0Y2dfZ2VuX3FlbXVfc3Q4KAorICAgICAgICAgICAgICAgICAg ICBhZGRyLCAgIFJkLCAgICAgREFUQV9JTkRFWCk7CisgICAgdGNnX2dlbl9tb3ZfdGwoIFJkLCAg ICAgdDApOworCisgICAgdGNnX3RlbXBfZnJlZV9pMzIodDApOworICAgIHRjZ190ZW1wX2ZyZWVf aTMyKGFkZHIpOworCisgICAgcmV0dXJuICBCU19OT05FOworfQorCi0tIAoyLjQuOSAoQXBwbGUg R2l0LTYwKQoK --001a11c14bee7760080533f7574e--