From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lucas De Marchi Subject: [PATCH libdrm v2 05/13] libdrm: annotate public functions Date: Thu, 13 Sep 2018 16:57:16 -0700 Message-ID: <20180913235724.30476-6-lucas.demarchi@intel.com> References: <20180913235724.30476-1-lucas.demarchi@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8C50D6E3C7 for ; Thu, 13 Sep 2018 23:58:27 +0000 (UTC) In-Reply-To: <20180913235724.30476-1-lucas.demarchi@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: Eric Engestrom , Daniel Vetter , Rodrigo Vivi List-Id: dri-devel@lists.freedesktop.org VGhpcyB3YXMgZG9uZSB3aXRoOgpubSAtLWR5bmFtaWMgLS1kZWZpbmVkLW9ubHkgYnVpbGQvbGli ZHJtLnNvIHwgXAoJZ3JlcCAiIFQgIiB8IFwKCWdyZXAgLXYgX2ZpbmkgfCBncmVwIC12IF9pbml0 IHwgXAoJY3V0IC1kJyAnIC1mMyA+IC90bXAvYS50eHQKCndoaWxlIHJlYWQgc3ltOyBkbwoJcmVh ZCBmIGZ1bmMgbGluZSBfIDw8PCQoY3Njb3BlIC1kIC1MIC0xICRzeW0pCglpZiBbICEgLXogIiRm IiBdOyB0aGVuCgkJc2VkIC1pICIke2xpbmV9cy9eL2RybV9wdWJsaWMgLyIgJGYKCWZpCmRvbmUg PCAvdG1wL2EudHh0CgpUaGVuIHRoZSBhbGlnbm1lbnQgb2YgZnVuY3Rpb24gYXJndW1lbnRzIHdl cmUgbWFudWFsbHkgZml4ZWQgYWxsIG92ZXIuClRoZSBpZGVhIGhlcmUgd2lsbCBiZSB0byBzd2l0 Y2ggdGhlIGRlZmF1bHQgdmlzaWJpbGl0eSB0byBoaWRkZW4gc28gd2UKZG9uJ3QgZXhwb3J0IHN5 bWJvbHMgd2Ugc2hvdWxkbid0LgoKU2lnbmVkLW9mZi1ieTogTHVjYXMgRGUgTWFyY2hpIDxsdWNh cy5kZW1hcmNoaUBpbnRlbC5jb20+Ci0tLQogeGY4NmRybS5jICAgICAgIHwgMjc2ICsrKysrKysr KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogeGY4NmRybUhhc2guYyAg IHwgIDE1ICstLQogeGY4NmRybU1vZGUuYyAgIHwgMTU4ICsrKysrKysrKysrKysrLS0tLS0tLS0t LS0tLQogeGY4NmRybVJhbmRvbS5jIHwgICA5ICstCiB4Zjg2ZHJtU0wuYyAgICAgfCAgMjMgKyst LQogNSBmaWxlcyBjaGFuZ2VkLCAyNTQgaW5zZXJ0aW9ucygrKSwgMjI3IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3hmODZkcm0uYyBiL3hmODZkcm0uYwppbmRleCBiMjM4ODE5NC4uNDkxNTBk NzQgMTAwNjQ0Ci0tLSBhL3hmODZkcm0uYworKysgYi94Zjg2ZHJtLmMKQEAgLTEyMSw3ICsxMjEs NyBAQCBzdHJ1Y3QgZHJtX3BjaWluZm8gewogCiBzdGF0aWMgZHJtU2VydmVySW5mb1B0ciBkcm1f c2VydmVyX2luZm87CiAKLXZvaWQgZHJtU2V0U2VydmVySW5mbyhkcm1TZXJ2ZXJJbmZvUHRyIGlu Zm8pCitkcm1fcHVibGljIHZvaWQgZHJtU2V0U2VydmVySW5mbyhkcm1TZXJ2ZXJJbmZvUHRyIGlu Zm8pCiB7CiAgICAgZHJtX3NlcnZlcl9pbmZvID0gaW5mbzsKIH0KQEAgLTE0MSw3ICsxNDEsNyBA QCBkcm1EZWJ1Z1ByaW50KGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcCkKICAgICByZXR1 cm4gdmZwcmludGYoc3RkZXJyLCBmb3JtYXQsIGFwKTsKIH0KIAotdm9pZAorZHJtX3B1YmxpYyB2 b2lkCiBkcm1Nc2coY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCiB7CiAgICAgdmFfbGlzdCBhcDsK QEAgLTE2MSwxNyArMTYxLDE3IEBAIGRybU1zZyhjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKIAog c3RhdGljIHZvaWQgKmRybUhhc2hUYWJsZSA9IE5VTEw7IC8qIENvbnRleHQgc3dpdGNoIGNhbGxi YWNrcyAqLwogCi12b2lkICpkcm1HZXRIYXNoVGFibGUodm9pZCkKK2RybV9wdWJsaWMgdm9pZCAq ZHJtR2V0SGFzaFRhYmxlKHZvaWQpCiB7CiAgICAgcmV0dXJuIGRybUhhc2hUYWJsZTsKIH0KIAot dm9pZCAqZHJtTWFsbG9jKGludCBzaXplKQorZHJtX3B1YmxpYyB2b2lkICpkcm1NYWxsb2MoaW50 IHNpemUpCiB7CiAgICAgcmV0dXJuIGNhbGxvYygxLCBzaXplKTsKIH0KIAotdm9pZCBkcm1GcmVl KHZvaWQgKnB0KQorZHJtX3B1YmxpYyB2b2lkIGRybUZyZWUodm9pZCAqcHQpCiB7CiAgICAgZnJl ZShwdCk7CiB9CkBAIC0xNzksNyArMTc5LDcgQEAgdm9pZCBkcm1GcmVlKHZvaWQgKnB0KQogLyoq CiAgKiBDYWxsIGlvY3RsLCByZXN0YXJ0aW5nIGlmIGl0IGlzIGludGVydXB0ZWQKICAqLwotaW50 Citkcm1fcHVibGljIGludAogZHJtSW9jdGwoaW50IGZkLCB1bnNpZ25lZCBsb25nIHJlcXVlc3Qs IHZvaWQgKmFyZykKIHsKICAgICBpbnQgcmV0OwpAQCAtMTk5LDcgKzE5OSw3IEBAIHN0YXRpYyB1 bnNpZ25lZCBsb25nIGRybUdldEtleUZyb21GZChpbnQgZmQpCiAgICAgcmV0dXJuIHN0LnN0X3Jk ZXY7CiB9CiAKLWRybUhhc2hFbnRyeSAqZHJtR2V0RW50cnkoaW50IGZkKQorZHJtX3B1YmxpYyBk cm1IYXNoRW50cnkgKmRybUdldEVudHJ5KGludCBmZCkKIHsKICAgICB1bnNpZ25lZCBsb25nIGtl eSA9IGRybUdldEtleUZyb21GZChmZCk7CiAgICAgdm9pZCAgICAgICAgICAqdmFsdWU7CkBAIC00 OTAsNyArNDkwLDcgQEAgc3RhdGljIGludCBkcm1PcGVuTWlub3IoaW50IG1pbm9yLCBpbnQgY3Jl YXRlLCBpbnQgdHlwZSkKICAqIG1pbm9yIGFuZCBnZXQgdmVyc2lvbiBpbmZvcm1hdGlvbi4gIEZv ciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggb2xkZXIKICAqIExpbnV4IGltcGxlbWVudGF0 aW9ucywgL3Byb2MvZHJpIGlzIGFsc28gY2hlY2tlZC4KICAqLwotaW50IGRybUF2YWlsYWJsZSh2 b2lkKQorZHJtX3B1YmxpYyBpbnQgZHJtQXZhaWxhYmxlKHZvaWQpCiB7CiAgICAgZHJtVmVyc2lv blB0ciB2ZXJzaW9uOwogICAgIGludCAgICAgICAgICAgcmV0dmFsID0gMDsKQEAgLTcyNSw3ICs3 MjUsNyBAQCBzdGF0aWMgaW50IGRybU9wZW5CeU5hbWUoY29uc3QgY2hhciAqbmFtZSwgaW50IHR5 cGUpCiAgKiBJdCBjYWxscyBkcm1PcGVuQnlCdXNpZCgpIGlmIFxwIGJ1c2lkIGlzIHNwZWNpZmll ZCBvciBkcm1PcGVuQnlOYW1lKCkKICAqIG90aGVyd2lzZS4KICAqLwotaW50IGRybU9wZW4oY29u c3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqYnVzaWQpCitkcm1fcHVibGljIGludCBkcm1PcGVu KGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmJ1c2lkKQogewogICAgIHJldHVybiBkcm1P cGVuV2l0aFR5cGUobmFtZSwgYnVzaWQsIERSTV9OT0RFX1BSSU1BUlkpOwogfQpAQCAtNzQ2LDcg Kzc0Niw3IEBAIGludCBkcm1PcGVuKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmJ1c2lk KQogICogSXQgY2FsbHMgZHJtT3BlbkJ5QnVzaWQoKSBpZiBccCBidXNpZCBpcyBzcGVjaWZpZWQg b3IgZHJtT3BlbkJ5TmFtZSgpCiAgKiBvdGhlcndpc2UuCiAgKi8KLWludCBkcm1PcGVuV2l0aFR5 cGUoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqYnVzaWQsIGludCB0eXBlKQorZHJtX3B1 YmxpYyBpbnQgZHJtT3BlbldpdGhUeXBlKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmJ1 c2lkLCBpbnQgdHlwZSkKIHsKICAgICBpZiAoIWRybUF2YWlsYWJsZSgpICYmIG5hbWUgIT0gTlVM TCAmJiBkcm1fc2VydmVyX2luZm8gJiYKICAgICAgICAgZHJtX3NlcnZlcl9pbmZvLT5sb2FkX21v ZHVsZSkgewpAQCAtNzY5LDEyICs3NjksMTIgQEAgaW50IGRybU9wZW5XaXRoVHlwZShjb25zdCBj aGFyICpuYW1lLCBjb25zdCBjaGFyICpidXNpZCwgaW50IHR5cGUpCiAgICAgcmV0dXJuIC0xOwog fQogCi1pbnQgZHJtT3BlbkNvbnRyb2woaW50IG1pbm9yKQorZHJtX3B1YmxpYyBpbnQgZHJtT3Bl bkNvbnRyb2woaW50IG1pbm9yKQogewogICAgIHJldHVybiBkcm1PcGVuTWlub3IobWlub3IsIDAs IERSTV9OT0RFX0NPTlRST0wpOwogfQogCi1pbnQgZHJtT3BlblJlbmRlcihpbnQgbWlub3IpCitk cm1fcHVibGljIGludCBkcm1PcGVuUmVuZGVyKGludCBtaW5vcikKIHsKICAgICByZXR1cm4gZHJt T3Blbk1pbm9yKG1pbm9yLCAwLCBEUk1fTk9ERV9SRU5ERVIpOwogfQpAQCAtNzg4LDcgKzc4OCw3 IEBAIGludCBkcm1PcGVuUmVuZGVyKGludCBtaW5vcikKICAqIEl0IGZyZWVzIHRoZSBtZW1vcnkg cG9pbnRlZCBieSBccCAldiBhcyB3ZWxsIGFzIGFsbCB0aGUgbm9uLW51bGwgc3RyaW5ncwogICog cG9pbnRlcnMgaW4gaXQuCiAgKi8KLXZvaWQgZHJtRnJlZVZlcnNpb24oZHJtVmVyc2lvblB0ciB2 KQorZHJtX3B1YmxpYyB2b2lkIGRybUZyZWVWZXJzaW9uKGRybVZlcnNpb25QdHIgdikKIHsKICAg ICBpZiAoIXYpCiAgICAgICAgIHJldHVybjsKQEAgLTg1OCw3ICs4NTgsNyBAQCBzdGF0aWMgdm9p ZCBkcm1Db3B5VmVyc2lvbihkcm1WZXJzaW9uUHRyIGQsIGNvbnN0IGRybV92ZXJzaW9uX3QgKnMp CiAgKiBmaXJzdCB3aXRoIHplcm9zIHRvIGdldCB0aGUgc3RyaW5nIGxlbmd0aHMsIGFuZCB0aGVu IHRoZSBhY3R1YWxseSBzdHJpbmdzLgogICogSXQgYWxzbyBudWxsLXRlcm1pbmF0ZXMgdGhlbSBz aW5jZSB0aGV5IG1pZ2h0IG5vdCBiZSBhbHJlYWR5LgogICovCi1kcm1WZXJzaW9uUHRyIGRybUdl dFZlcnNpb24oaW50IGZkKQorZHJtX3B1YmxpYyBkcm1WZXJzaW9uUHRyIGRybUdldFZlcnNpb24o aW50IGZkKQogewogICAgIGRybVZlcnNpb25QdHIgcmV0dmFsOwogICAgIGRybV92ZXJzaW9uX3Qg KnZlcnNpb24gPSBkcm1NYWxsb2Moc2l6ZW9mKCp2ZXJzaW9uKSk7CkBAIC05MDYsNyArOTA2LDcg QEAgZHJtVmVyc2lvblB0ciBkcm1HZXRWZXJzaW9uKGludCBmZCkKICAqIFRoaXMgZnVuY3Rpb24g YWxsb2NhdGVzIGFuZCBmaWxscyBhIGRybV92ZXJzaW9uIHN0cnVjdHVyZSB3aXRoIGEgaGFyZCBj b2RlZAogICogdmVyc2lvbiBudW1iZXIuCiAgKi8KLWRybVZlcnNpb25QdHIgZHJtR2V0TGliVmVy c2lvbihpbnQgZmQpCitkcm1fcHVibGljIGRybVZlcnNpb25QdHIgZHJtR2V0TGliVmVyc2lvbihp bnQgZmQpCiB7CiAgICAgZHJtX3ZlcnNpb25fdCAqdmVyc2lvbiA9IGRybU1hbGxvYyhzaXplb2Yo KnZlcnNpb24pKTsKIApAQCAtOTI3LDcgKzkyNyw3IEBAIGRybVZlcnNpb25QdHIgZHJtR2V0TGli VmVyc2lvbihpbnQgZmQpCiAgICAgcmV0dXJuIChkcm1WZXJzaW9uUHRyKXZlcnNpb247CiB9CiAK LWludCBkcm1HZXRDYXAoaW50IGZkLCB1aW50NjRfdCBjYXBhYmlsaXR5LCB1aW50NjRfdCAqdmFs dWUpCitkcm1fcHVibGljIGludCBkcm1HZXRDYXAoaW50IGZkLCB1aW50NjRfdCBjYXBhYmlsaXR5 LCB1aW50NjRfdCAqdmFsdWUpCiB7CiAgICAgc3RydWN0IGRybV9nZXRfY2FwIGNhcDsKICAgICBp bnQgcmV0OwpAQCAtOTQzLDcgKzk0Myw3IEBAIGludCBkcm1HZXRDYXAoaW50IGZkLCB1aW50NjRf dCBjYXBhYmlsaXR5LCB1aW50NjRfdCAqdmFsdWUpCiAgICAgcmV0dXJuIDA7CiB9CiAKLWludCBk cm1TZXRDbGllbnRDYXAoaW50IGZkLCB1aW50NjRfdCBjYXBhYmlsaXR5LCB1aW50NjRfdCB2YWx1 ZSkKK2RybV9wdWJsaWMgaW50IGRybVNldENsaWVudENhcChpbnQgZmQsIHVpbnQ2NF90IGNhcGFi aWxpdHksIHVpbnQ2NF90IHZhbHVlKQogewogICAgIHN0cnVjdCBkcm1fc2V0X2NsaWVudF9jYXAg Y2FwOwogCkBAIC05NjIsNyArOTYyLDcgQEAgaW50IGRybVNldENsaWVudENhcChpbnQgZmQsIHVp bnQ2NF90IGNhcGFiaWxpdHksIHVpbnQ2NF90IHZhbHVlKQogICogXGludGVybmFsCiAgKiBUaGlz IGZ1bmN0aW9uIGlzIGp1c3QgZnJlZXMgdGhlIG1lbW9yeSBwb2ludGVkIGJ5IFxwIGJ1c2lkLgog ICovCi12b2lkIGRybUZyZWVCdXNpZChjb25zdCBjaGFyICpidXNpZCkKK2RybV9wdWJsaWMgdm9p ZCBkcm1GcmVlQnVzaWQoY29uc3QgY2hhciAqYnVzaWQpCiB7CiAgICAgZHJtRnJlZSgodm9pZCAq KWJ1c2lkKTsKIH0KQEAgLTk4MCw3ICs5ODAsNyBAQCB2b2lkIGRybUZyZWVCdXNpZChjb25zdCBj aGFyICpidXNpZCkKICAqIGdldCB0aGUgc3RyaW5nIGxlbmd0aCBhbmQgZGF0YSwgcGFzc2luZyB0 aGUgYXJndW1lbnRzIGluIGEgZHJtX3VuaXF1ZQogICogc3RydWN0dXJlLgogICovCi1jaGFyICpk cm1HZXRCdXNpZChpbnQgZmQpCitkcm1fcHVibGljIGNoYXIgKmRybUdldEJ1c2lkKGludCBmZCkK IHsKICAgICBkcm1fdW5pcXVlX3QgdTsKIApAQCAtMTAxMSw3ICsxMDExLDcgQEAgY2hhciAqZHJt R2V0QnVzaWQoaW50IGZkKQogICogVGhpcyBmdW5jdGlvbiBpcyBhIHdyYXBwZXIgYXJvdW5kIHRo ZSBEUk1fSU9DVExfU0VUX1VOSVFVRSBpb2N0bCwgcGFzc2luZwogICogdGhlIGFyZ3VtZW50cyBp biBhIGRybV91bmlxdWUgc3RydWN0dXJlLgogICovCi1pbnQgZHJtU2V0QnVzaWQoaW50IGZkLCBj b25zdCBjaGFyICpidXNpZCkKK2RybV9wdWJsaWMgaW50IGRybVNldEJ1c2lkKGludCBmZCwgY29u c3QgY2hhciAqYnVzaWQpCiB7CiAgICAgZHJtX3VuaXF1ZV90IHU7CiAKQEAgLTEwMjUsNyArMTAy NSw3IEBAIGludCBkcm1TZXRCdXNpZChpbnQgZmQsIGNvbnN0IGNoYXIgKmJ1c2lkKQogICAgIHJl dHVybiAwOwogfQogCi1pbnQgZHJtR2V0TWFnaWMoaW50IGZkLCBkcm1fbWFnaWNfdCAqIG1hZ2lj KQorZHJtX3B1YmxpYyBpbnQgZHJtR2V0TWFnaWMoaW50IGZkLCBkcm1fbWFnaWNfdCAqIG1hZ2lj KQogewogICAgIGRybV9hdXRoX3QgYXV0aDsKIApAQCAtMTAzOCw3ICsxMDM4LDcgQEAgaW50IGRy bUdldE1hZ2ljKGludCBmZCwgZHJtX21hZ2ljX3QgKiBtYWdpYykKICAgICByZXR1cm4gMDsKIH0K IAotaW50IGRybUF1dGhNYWdpYyhpbnQgZmQsIGRybV9tYWdpY190IG1hZ2ljKQorZHJtX3B1Ymxp YyBpbnQgZHJtQXV0aE1hZ2ljKGludCBmZCwgZHJtX21hZ2ljX3QgbWFnaWMpCiB7CiAgICAgZHJt X2F1dGhfdCBhdXRoOwogCkBAIC0xMDk5LDggKzEwOTksOCBAQCBpbnQgZHJtQXV0aE1hZ2ljKGlu dCBmZCwgZHJtX21hZ2ljX3QgbWFnaWMpCiAgKiBUaGlzIGZ1bmN0aW9uIGlzIGEgd3JhcHBlciBh cm91bmQgdGhlIERSTV9JT0NUTF9BRERfTUFQIGlvY3RsLCBwYXNzaW5nCiAgKiB0aGUgYXJndW1l bnRzIGluIGEgZHJtX21hcCBzdHJ1Y3R1cmUuCiAgKi8KLWludCBkcm1BZGRNYXAoaW50IGZkLCBk cm1faGFuZGxlX3Qgb2Zmc2V0LCBkcm1TaXplIHNpemUsIGRybU1hcFR5cGUgdHlwZSwKLSAgICAg ICAgICAgICAgZHJtTWFwRmxhZ3MgZmxhZ3MsIGRybV9oYW5kbGVfdCAqaGFuZGxlKQorZHJtX3B1 YmxpYyBpbnQgZHJtQWRkTWFwKGludCBmZCwgZHJtX2hhbmRsZV90IG9mZnNldCwgZHJtU2l6ZSBz aXplLCBkcm1NYXBUeXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgZHJtTWFwRmxh Z3MgZmxhZ3MsIGRybV9oYW5kbGVfdCAqaGFuZGxlKQogewogICAgIGRybV9tYXBfdCBtYXA7CiAK QEAgLTExMTYsNyArMTExNiw3IEBAIGludCBkcm1BZGRNYXAoaW50IGZkLCBkcm1faGFuZGxlX3Qg b2Zmc2V0LCBkcm1TaXplIHNpemUsIGRybU1hcFR5cGUgdHlwZSwKICAgICByZXR1cm4gMDsKIH0K IAotaW50IGRybVJtTWFwKGludCBmZCwgZHJtX2hhbmRsZV90IGhhbmRsZSkKK2RybV9wdWJsaWMg aW50IGRybVJtTWFwKGludCBmZCwgZHJtX2hhbmRsZV90IGhhbmRsZSkKIHsKICAgICBkcm1fbWFw X3QgbWFwOwogCkBAIC0xMTQ0LDggKzExNDQsOCBAQCBpbnQgZHJtUm1NYXAoaW50IGZkLCBkcm1f aGFuZGxlX3QgaGFuZGxlKQogICoKICAqIFxzYSBkcm1fYnVmX2Rlc2MuCiAgKi8KLWludCBkcm1B ZGRCdWZzKGludCBmZCwgaW50IGNvdW50LCBpbnQgc2l6ZSwgZHJtQnVmRGVzY0ZsYWdzIGZsYWdz LAotICAgICAgICAgICAgICAgaW50IGFncF9vZmZzZXQpCitkcm1fcHVibGljIGludCBkcm1BZGRC dWZzKGludCBmZCwgaW50IGNvdW50LCBpbnQgc2l6ZSwgZHJtQnVmRGVzY0ZsYWdzIGZsYWdzLAor ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWdwX29mZnNldCkKIHsKICAgICBkcm1fYnVm X2Rlc2NfdCByZXF1ZXN0OwogCkBAIC0xMTYwLDcgKzExNjAsNyBAQCBpbnQgZHJtQWRkQnVmcyhp bnQgZmQsIGludCBjb3VudCwgaW50IHNpemUsIGRybUJ1ZkRlc2NGbGFncyBmbGFncywKICAgICBy ZXR1cm4gcmVxdWVzdC5jb3VudDsKIH0KIAotaW50IGRybU1hcmtCdWZzKGludCBmZCwgZG91Ymxl IGxvdywgZG91YmxlIGhpZ2gpCitkcm1fcHVibGljIGludCBkcm1NYXJrQnVmcyhpbnQgZmQsIGRv dWJsZSBsb3csIGRvdWJsZSBoaWdoKQogewogICAgIGRybV9idWZfaW5mb190IGluZm87CiAgICAg aW50ICAgICAgICAgICAgaTsKQEAgLTEyMTEsNyArMTIxMSw3IEBAIGludCBkcm1NYXJrQnVmcyhp bnQgZmQsIGRvdWJsZSBsb3csIGRvdWJsZSBoaWdoKQogICogVGhpcyBmdW5jdGlvbiBpcyBhIHdy YXBwZXIgYXJvdW5kIHRoZSBEUk1fSU9DVExfRlJFRV9CVUZTIGlvY3RsLCBwYXNzaW5nCiAgKiB0 aGUgYXJndW1lbnRzIGluIGEgZHJtX2J1Zl9mcmVlIHN0cnVjdHVyZS4KICAqLwotaW50IGRybUZy ZWVCdWZzKGludCBmZCwgaW50IGNvdW50LCBpbnQgKmxpc3QpCitkcm1fcHVibGljIGludCBkcm1G cmVlQnVmcyhpbnQgZmQsIGludCBjb3VudCwgaW50ICpsaXN0KQogewogICAgIGRybV9idWZfZnJl ZV90IHJlcXVlc3Q7CiAKQEAgLTEyMzIsNyArMTIzMiw3IEBAIGludCBkcm1GcmVlQnVmcyhpbnQg ZmQsIGludCBjb3VudCwgaW50ICpsaXN0KQogICogXGludGVybmFsCiAgKiBUaGlzIGZ1bmN0aW9u IGNsb3NlcyB0aGUgZmlsZSBkZXNjcmlwdG9yLgogICovCi1pbnQgZHJtQ2xvc2UoaW50IGZkKQor ZHJtX3B1YmxpYyBpbnQgZHJtQ2xvc2UoaW50IGZkKQogewogICAgIHVuc2lnbmVkIGxvbmcga2V5 ICAgID0gZHJtR2V0S2V5RnJvbUZkKGZkKTsKICAgICBkcm1IYXNoRW50cnkgICplbnRyeSA9IGRy bUdldEVudHJ5KGZkKTsKQEAgLTEyNjMsNyArMTI2Myw4IEBAIGludCBkcm1DbG9zZShpbnQgZmQp CiAgKiBcaW50ZXJuYWwKICAqIFRoaXMgZnVuY3Rpb24gaXMgYSB3cmFwcGVyIGZvciBtbWFwKCku CiAgKi8KLWludCBkcm1NYXAoaW50IGZkLCBkcm1faGFuZGxlX3QgaGFuZGxlLCBkcm1TaXplIHNp emUsIGRybUFkZHJlc3NQdHIgYWRkcmVzcykKK2RybV9wdWJsaWMgaW50IGRybU1hcChpbnQgZmQs IGRybV9oYW5kbGVfdCBoYW5kbGUsIGRybVNpemUgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAg ICBkcm1BZGRyZXNzUHRyIGFkZHJlc3MpCiB7CiAgICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgcGFn ZXNpemVfbWFzayA9IDA7CiAKQEAgLTEyOTMsMTIgKzEyOTQsMTIgQEAgaW50IGRybU1hcChpbnQg ZmQsIGRybV9oYW5kbGVfdCBoYW5kbGUsIGRybVNpemUgc2l6ZSwgZHJtQWRkcmVzc1B0ciBhZGRy ZXNzKQogICogXGludGVybmFsCiAgKiBUaGlzIGZ1bmN0aW9uIGlzIGEgd3JhcHBlciBmb3IgbXVu bWFwKCkuCiAgKi8KLWludCBkcm1Vbm1hcChkcm1BZGRyZXNzIGFkZHJlc3MsIGRybVNpemUgc2l6 ZSkKK2RybV9wdWJsaWMgaW50IGRybVVubWFwKGRybUFkZHJlc3MgYWRkcmVzcywgZHJtU2l6ZSBz aXplKQogewogICAgIHJldHVybiBkcm1fbXVubWFwKGFkZHJlc3MsIHNpemUpOwogfQogCi1kcm1C dWZJbmZvUHRyIGRybUdldEJ1ZkluZm8oaW50IGZkKQorZHJtX3B1YmxpYyBkcm1CdWZJbmZvUHRy IGRybUdldEJ1ZkluZm8oaW50IGZkKQogewogICAgIGRybV9idWZfaW5mb190IGluZm87CiAgICAg ZHJtQnVmSW5mb1B0ciAgcmV0dmFsOwpAQCAtMTM0OCw3ICsxMzQ5LDcgQEAgZHJtQnVmSW5mb1B0 ciBkcm1HZXRCdWZJbmZvKGludCBmZCkKICAqIGluZm9ybWF0aW9uIGFib3V0IHRoZSBidWZmZXJz IGluIGEgZHJtX2J1Zl9tYXAgc3RydWN0dXJlIGludG8gdGhlCiAgKiBjbGllbnQtdmlzaWJsZSBk YXRhIHN0cnVjdHVyZXMuCiAgKi8KLWRybUJ1Zk1hcFB0ciBkcm1NYXBCdWZzKGludCBmZCkKK2Ry bV9wdWJsaWMgZHJtQnVmTWFwUHRyIGRybU1hcEJ1ZnMoaW50IGZkKQogewogICAgIGRybV9idWZf bWFwX3QgYnVmczsKICAgICBkcm1CdWZNYXBQdHIgIHJldHZhbDsKQEAgLTEzOTMsNyArMTM5NCw3 IEBAIGRybUJ1Zk1hcFB0ciBkcm1NYXBCdWZzKGludCBmZCkKICAqIENhbGxzIG11bm1hcCgpIGZv ciBldmVyeSBidWZmZXIgc3RvcmVkIGluIFxwIGJ1ZnMgYW5kIGZyZWVzIHRoZQogICogbWVtb3J5 IGFsbG9jYXRlZCBieSBkcm1NYXBCdWZzKCkuCiAgKi8KLWludCBkcm1Vbm1hcEJ1ZnMoZHJtQnVm TWFwUHRyIGJ1ZnMpCitkcm1fcHVibGljIGludCBkcm1Vbm1hcEJ1ZnMoZHJtQnVmTWFwUHRyIGJ1 ZnMpCiB7CiAgICAgaW50IGk7CiAKQEAgLTE0MjEsNyArMTQyMiw3IEBAIGludCBkcm1Vbm1hcEJ1 ZnMoZHJtQnVmTWFwUHRyIGJ1ZnMpCiAgKiBBc3NlbWJsZSB0aGUgYXJndW1lbnRzIGludG8gYSBk cm1fZG1hIHN0cnVjdHVyZSBhbmQga2VlcHMgaXNzdWluZyB0aGUKICAqIERSTV9JT0NUTF9ETUEg aW9jdGwgdW50aWwgc3VjY2VzcyBvciB1bnRpbCBtYXhpbXVtIG51bWJlciBvZiByZXRyaWVzLgog ICovCi1pbnQgZHJtRE1BKGludCBmZCwgZHJtRE1BUmVxUHRyIHJlcXVlc3QpCitkcm1fcHVibGlj IGludCBkcm1ETUEoaW50IGZkLCBkcm1ETUFSZXFQdHIgcmVxdWVzdCkKIHsKICAgICBkcm1fZG1h X3QgZG1hOwogICAgIGludCByZXQsIGkgPSAwOwpAQCAtMTQ2NCw3ICsxNDY1LDcgQEAgaW50IGRy bURNQShpbnQgZmQsIGRybURNQVJlcVB0ciByZXF1ZXN0KQogICogVGhpcyBmdW5jdGlvbiB0cmFu c2xhdGVzIHRoZSBhcmd1bWVudHMgaW50byBhIGRybV9sb2NrIHN0cnVjdHVyZSBhbmQgaXNzdWUK ICAqIHRoZSBEUk1fSU9DVExfTE9DSyBpb2N0bCB1bnRpbCB0aGUgbG9jayBpcyBzdWNjZXNzZnVs bHkgYWNxdWlyZWQuCiAgKi8KLWludCBkcm1HZXRMb2NrKGludCBmZCwgZHJtX2NvbnRleHRfdCBj b250ZXh0LCBkcm1Mb2NrRmxhZ3MgZmxhZ3MpCitkcm1fcHVibGljIGludCBkcm1HZXRMb2NrKGlu dCBmZCwgZHJtX2NvbnRleHRfdCBjb250ZXh0LCBkcm1Mb2NrRmxhZ3MgZmxhZ3MpCiB7CiAgICAg ZHJtX2xvY2tfdCBsb2NrOwogCkBAIC0xNDk1LDcgKzE0OTYsNyBAQCBpbnQgZHJtR2V0TG9jayhp bnQgZmQsIGRybV9jb250ZXh0X3QgY29udGV4dCwgZHJtTG9ja0ZsYWdzIGZsYWdzKQogICogVGhp cyBmdW5jdGlvbiBpcyBhIHdyYXBwZXIgYXJvdW5kIHRoZSBEUk1fSU9DVExfVU5MT0NLIGlvY3Rs LCBwYXNzaW5nIHRoZQogICogYXJndW1lbnQgaW4gYSBkcm1fbG9jayBzdHJ1Y3R1cmUuCiAgKi8K LWludCBkcm1VbmxvY2soaW50IGZkLCBkcm1fY29udGV4dF90IGNvbnRleHQpCitkcm1fcHVibGlj IGludCBkcm1VbmxvY2soaW50IGZkLCBkcm1fY29udGV4dF90IGNvbnRleHQpCiB7CiAgICAgZHJt X2xvY2tfdCBsb2NrOwogCkBAIC0xNTA0LDcgKzE1MDUsNyBAQCBpbnQgZHJtVW5sb2NrKGludCBm ZCwgZHJtX2NvbnRleHRfdCBjb250ZXh0KQogICAgIHJldHVybiBkcm1Jb2N0bChmZCwgRFJNX0lP Q1RMX1VOTE9DSywgJmxvY2spOwogfQogCi1kcm1fY29udGV4dF90ICpkcm1HZXRSZXNlcnZlZENv bnRleHRMaXN0KGludCBmZCwgaW50ICpjb3VudCkKK2RybV9wdWJsaWMgZHJtX2NvbnRleHRfdCAq ZHJtR2V0UmVzZXJ2ZWRDb250ZXh0TGlzdChpbnQgZmQsIGludCAqY291bnQpCiB7CiAgICAgZHJt X2N0eF9yZXNfdCByZXM7CiAgICAgZHJtX2N0eF90ICAgICAqbGlzdDsKQEAgLTE1NDEsNyArMTU0 Miw3IEBAIGVycl9mcmVlX2NvbnRleHQ6CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLXZvaWQgZHJt RnJlZVJlc2VydmVkQ29udGV4dExpc3QoZHJtX2NvbnRleHRfdCAqcHQpCitkcm1fcHVibGljIHZv aWQgZHJtRnJlZVJlc2VydmVkQ29udGV4dExpc3QoZHJtX2NvbnRleHRfdCAqcHQpCiB7CiAgICAg ZHJtRnJlZShwdCk7CiB9CkBAIC0xNTY0LDcgKzE1NjUsNyBAQCB2b2lkIGRybUZyZWVSZXNlcnZl ZENvbnRleHRMaXN0KGRybV9jb250ZXh0X3QgKnB0KQogICogVGhpcyBmdW5jdGlvbiBpcyBhIHdy YXBwZXIgYXJvdW5kIHRoZSBEUk1fSU9DVExfQUREX0NUWCBpb2N0bCwgcGFzc2luZyB0aGUKICAq IGFyZ3VtZW50IGluIGEgZHJtX2N0eCBzdHJ1Y3R1cmUuCiAgKi8KLWludCBkcm1DcmVhdGVDb250 ZXh0KGludCBmZCwgZHJtX2NvbnRleHRfdCAqaGFuZGxlKQorZHJtX3B1YmxpYyBpbnQgZHJtQ3Jl YXRlQ29udGV4dChpbnQgZmQsIGRybV9jb250ZXh0X3QgKmhhbmRsZSkKIHsKICAgICBkcm1fY3R4 X3QgY3R4OwogCkBAIC0xNTc1LDcgKzE1NzYsNyBAQCBpbnQgZHJtQ3JlYXRlQ29udGV4dChpbnQg ZmQsIGRybV9jb250ZXh0X3QgKmhhbmRsZSkKICAgICByZXR1cm4gMDsKIH0KIAotaW50IGRybVN3 aXRjaFRvQ29udGV4dChpbnQgZmQsIGRybV9jb250ZXh0X3QgY29udGV4dCkKK2RybV9wdWJsaWMg aW50IGRybVN3aXRjaFRvQ29udGV4dChpbnQgZmQsIGRybV9jb250ZXh0X3QgY29udGV4dCkKIHsK ICAgICBkcm1fY3R4X3QgY3R4OwogCkBAIC0xNTg2LDcgKzE1ODcsOCBAQCBpbnQgZHJtU3dpdGNo VG9Db250ZXh0KGludCBmZCwgZHJtX2NvbnRleHRfdCBjb250ZXh0KQogICAgIHJldHVybiAwOwog fQogCi1pbnQgZHJtU2V0Q29udGV4dEZsYWdzKGludCBmZCwgZHJtX2NvbnRleHRfdCBjb250ZXh0 LCBkcm1fY29udGV4dF90RmxhZ3MgZmxhZ3MpCitkcm1fcHVibGljIGludCBkcm1TZXRDb250ZXh0 RmxhZ3MoaW50IGZkLCBkcm1fY29udGV4dF90IGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZHJtX2NvbnRleHRfdEZsYWdzIGZsYWdzKQogewogICAgIGRybV9jdHhf dCBjdHg7CiAKQEAgLTE2MDcsOCArMTYwOSw4IEBAIGludCBkcm1TZXRDb250ZXh0RmxhZ3MoaW50 IGZkLCBkcm1fY29udGV4dF90IGNvbnRleHQsIGRybV9jb250ZXh0X3RGbGFncyBmbGFncykKICAg ICByZXR1cm4gMDsKIH0KIAotaW50IGRybUdldENvbnRleHRGbGFncyhpbnQgZmQsIGRybV9jb250 ZXh0X3QgY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgZHJtX2NvbnRleHRfdEZsYWdz UHRyIGZsYWdzKQorZHJtX3B1YmxpYyBpbnQgZHJtR2V0Q29udGV4dEZsYWdzKGludCBmZCwgZHJt X2NvbnRleHRfdCBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRy bV9jb250ZXh0X3RGbGFnc1B0ciBmbGFncykKIHsKICAgICBkcm1fY3R4X3QgY3R4OwogCkBAIC0x NjQxLDcgKzE2NDMsNyBAQCBpbnQgZHJtR2V0Q29udGV4dEZsYWdzKGludCBmZCwgZHJtX2NvbnRl eHRfdCBjb250ZXh0LAogICogVGhpcyBmdW5jdGlvbiBpcyBhIHdyYXBwZXIgYXJvdW5kIHRoZSBE Uk1fSU9DVExfUk1fQ1RYIGlvY3RsLCBwYXNzaW5nIHRoZQogICogYXJndW1lbnQgaW4gYSBkcm1f Y3R4IHN0cnVjdHVyZS4KICAqLwotaW50IGRybURlc3Ryb3lDb250ZXh0KGludCBmZCwgZHJtX2Nv bnRleHRfdCBoYW5kbGUpCitkcm1fcHVibGljIGludCBkcm1EZXN0cm95Q29udGV4dChpbnQgZmQs IGRybV9jb250ZXh0X3QgaGFuZGxlKQogewogICAgIGRybV9jdHhfdCBjdHg7CiAKQEAgLTE2NTIs NyArMTY1NCw3IEBAIGludCBkcm1EZXN0cm95Q29udGV4dChpbnQgZmQsIGRybV9jb250ZXh0X3Qg aGFuZGxlKQogICAgIHJldHVybiAwOwogfQogCi1pbnQgZHJtQ3JlYXRlRHJhd2FibGUoaW50IGZk LCBkcm1fZHJhd2FibGVfdCAqaGFuZGxlKQorZHJtX3B1YmxpYyBpbnQgZHJtQ3JlYXRlRHJhd2Fi bGUoaW50IGZkLCBkcm1fZHJhd2FibGVfdCAqaGFuZGxlKQogewogICAgIGRybV9kcmF3X3QgZHJh dzsKIApAQCAtMTY2Myw3ICsxNjY1LDcgQEAgaW50IGRybUNyZWF0ZURyYXdhYmxlKGludCBmZCwg ZHJtX2RyYXdhYmxlX3QgKmhhbmRsZSkKICAgICByZXR1cm4gMDsKIH0KIAotaW50IGRybURlc3Ry b3lEcmF3YWJsZShpbnQgZmQsIGRybV9kcmF3YWJsZV90IGhhbmRsZSkKK2RybV9wdWJsaWMgaW50 IGRybURlc3Ryb3lEcmF3YWJsZShpbnQgZmQsIGRybV9kcmF3YWJsZV90IGhhbmRsZSkKIHsKICAg ICBkcm1fZHJhd190IGRyYXc7CiAKQEAgLTE2NzQsOSArMTY3Niw5IEBAIGludCBkcm1EZXN0cm95 RHJhd2FibGUoaW50IGZkLCBkcm1fZHJhd2FibGVfdCBoYW5kbGUpCiAgICAgcmV0dXJuIDA7CiB9 CiAKLWludCBkcm1VcGRhdGVEcmF3YWJsZUluZm8oaW50IGZkLCBkcm1fZHJhd2FibGVfdCBoYW5k bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGRybV9kcmF3YWJsZV9pbmZvX3R5cGVfdCB0 eXBlLCB1bnNpZ25lZCBpbnQgbnVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpk YXRhKQorZHJtX3B1YmxpYyBpbnQgZHJtVXBkYXRlRHJhd2FibGVJbmZvKGludCBmZCwgZHJtX2Ry YXdhYmxlX3QgaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRy bV9kcmF3YWJsZV9pbmZvX3R5cGVfdCB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGludCBudW0sIHZvaWQgKmRhdGEpCiB7CiAgICAgZHJtX3VwZGF0 ZV9kcmF3X3QgdXBkYXRlOwogCkBAIC0xNjkyLDcgKzE2OTQsOCBAQCBpbnQgZHJtVXBkYXRlRHJh d2FibGVJbmZvKGludCBmZCwgZHJtX2RyYXdhYmxlX3QgaGFuZGxlLAogICAgIHJldHVybiAwOwog fQogCi1pbnQgZHJtQ3J0Y0dldFNlcXVlbmNlKGludCBmZCwgdWludDMyX3QgY3J0Y0lkLCB1aW50 NjRfdCAqc2VxdWVuY2UsIHVpbnQ2NF90ICpucykKK2RybV9wdWJsaWMgaW50IGRybUNydGNHZXRT ZXF1ZW5jZShpbnQgZmQsIHVpbnQzMl90IGNydGNJZCwgdWludDY0X3QgKnNlcXVlbmNlLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90ICpucykKIHsKICAgICBzdHJ1 Y3QgZHJtX2NydGNfZ2V0X3NlcXVlbmNlIGdldF9zZXE7CiAgICAgaW50IHJldDsKQEAgLTE3MTAs OCArMTcxMywxMCBAQCBpbnQgZHJtQ3J0Y0dldFNlcXVlbmNlKGludCBmZCwgdWludDMyX3QgY3J0 Y0lkLCB1aW50NjRfdCAqc2VxdWVuY2UsIHVpbnQ2NF90ICpucwogICAgIHJldHVybiAwOwogfQog Ci1pbnQgZHJtQ3J0Y1F1ZXVlU2VxdWVuY2UoaW50IGZkLCB1aW50MzJfdCBjcnRjSWQsIHVpbnQz Ml90IGZsYWdzLCB1aW50NjRfdCBzZXF1ZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICB1 aW50NjRfdCAqc2VxdWVuY2VfcXVldWVkLCB1aW50NjRfdCB1c2VyX2RhdGEpCitkcm1fcHVibGlj IGludCBkcm1DcnRjUXVldWVTZXF1ZW5jZShpbnQgZmQsIHVpbnQzMl90IGNydGNJZCwgdWludDMy X3QgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBz ZXF1ZW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90ICpz ZXF1ZW5jZV9xdWV1ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50 NjRfdCB1c2VyX2RhdGEpCiB7CiAgICAgc3RydWN0IGRybV9jcnRjX3F1ZXVlX3NlcXVlbmNlIHF1 ZXVlX3NlcTsKICAgICBpbnQgcmV0OwpAQCAtMTc0MSw3ICsxNzQ2LDcgQEAgaW50IGRybUNydGNR dWV1ZVNlcXVlbmNlKGludCBmZCwgdWludDMyX3QgY3J0Y0lkLCB1aW50MzJfdCBmbGFncywgdWlu dDY0X3Qgc2VxdWUKICAqIFxpbnRlcm5hbAogICogVGhpcyBmdW5jdGlvbiBpcyBhIHdyYXBwZXIg YXJvdW5kIHRoZSBEUk1fSU9DVExfQUdQX0FDUVVJUkUgaW9jdGwuCiAgKi8KLWludCBkcm1BZ3BB Y3F1aXJlKGludCBmZCkKK2RybV9wdWJsaWMgaW50IGRybUFncEFjcXVpcmUoaW50IGZkKQogewog ICAgIGlmIChkcm1Jb2N0bChmZCwgRFJNX0lPQ1RMX0FHUF9BQ1FVSVJFLCBOVUxMKSkKICAgICAg ICAgcmV0dXJuIC1lcnJubzsKQEAgLTE3NTksNyArMTc2NCw3IEBAIGludCBkcm1BZ3BBY3F1aXJl KGludCBmZCkKICAqIFxpbnRlcm5hbAogICogVGhpcyBmdW5jdGlvbiBpcyBhIHdyYXBwZXIgYXJv dW5kIHRoZSBEUk1fSU9DVExfQUdQX1JFTEVBU0UgaW9jdGwuCiAgKi8KLWludCBkcm1BZ3BSZWxl YXNlKGludCBmZCkKK2RybV9wdWJsaWMgaW50IGRybUFncFJlbGVhc2UoaW50IGZkKQogewogICAg IGlmIChkcm1Jb2N0bChmZCwgRFJNX0lPQ1RMX0FHUF9SRUxFQVNFLCBOVUxMKSkKICAgICAgICAg cmV0dXJuIC1lcnJubzsKQEAgLTE3NzksNyArMTc4NCw3IEBAIGludCBkcm1BZ3BSZWxlYXNlKGlu dCBmZCkKICAqIFRoaXMgZnVuY3Rpb24gaXMgYSB3cmFwcGVyIGFyb3VuZCB0aGUgRFJNX0lPQ1RM X0FHUF9FTkFCTEUgaW9jdGwsIHBhc3NpbmcgdGhlCiAgKiBhcmd1bWVudCBpbiBhIGRybV9hZ3Bf bW9kZSBzdHJ1Y3R1cmUuCiAgKi8KLWludCBkcm1BZ3BFbmFibGUoaW50IGZkLCB1bnNpZ25lZCBs b25nIG1vZGUpCitkcm1fcHVibGljIGludCBkcm1BZ3BFbmFibGUoaW50IGZkLCB1bnNpZ25lZCBs b25nIG1vZGUpCiB7CiAgICAgZHJtX2FncF9tb2RlX3QgbTsKIApAQCAtMTgwNyw4ICsxODEyLDgg QEAgaW50IGRybUFncEVuYWJsZShpbnQgZmQsIHVuc2lnbmVkIGxvbmcgbW9kZSkKICAqIFRoaXMg ZnVuY3Rpb24gaXMgYSB3cmFwcGVyIGFyb3VuZCB0aGUgRFJNX0lPQ1RMX0FHUF9BTExPQyBpb2N0 bCwgcGFzc2luZyB0aGUKICAqIGFyZ3VtZW50cyBpbiBhIGRybV9hZ3BfYnVmZmVyIHN0cnVjdHVy ZS4KICAqLwotaW50IGRybUFncEFsbG9jKGludCBmZCwgdW5zaWduZWQgbG9uZyBzaXplLCB1bnNp Z25lZCBsb25nIHR5cGUsCi0gICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqYWRkcmVzcywg ZHJtX2hhbmRsZV90ICpoYW5kbGUpCitkcm1fcHVibGljIGludCBkcm1BZ3BBbGxvYyhpbnQgZmQs IHVuc2lnbmVkIGxvbmcgc2l6ZSwgdW5zaWduZWQgbG9uZyB0eXBlLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqYWRkcmVzcywgZHJtX2hhbmRsZV90ICpoYW5kbGUp CiB7CiAgICAgZHJtX2FncF9idWZmZXJfdCBiOwogCkBAIC0xODM3LDcgKzE4NDIsNyBAQCBpbnQg ZHJtQWdwQWxsb2MoaW50IGZkLCB1bnNpZ25lZCBsb25nIHNpemUsIHVuc2lnbmVkIGxvbmcgdHlw ZSwKICAqIFRoaXMgZnVuY3Rpb24gaXMgYSB3cmFwcGVyIGFyb3VuZCB0aGUgRFJNX0lPQ1RMX0FH UF9GUkVFIGlvY3RsLCBwYXNzaW5nIHRoZQogICogYXJndW1lbnQgaW4gYSBkcm1fYWdwX2J1ZmZl ciBzdHJ1Y3R1cmUuCiAgKi8KLWludCBkcm1BZ3BGcmVlKGludCBmZCwgZHJtX2hhbmRsZV90IGhh bmRsZSkKK2RybV9wdWJsaWMgaW50IGRybUFncEZyZWUoaW50IGZkLCBkcm1faGFuZGxlX3QgaGFu ZGxlKQogewogICAgIGRybV9hZ3BfYnVmZmVyX3QgYjsKIApAQCAtMTg2Miw3ICsxODY3LDcgQEAg aW50IGRybUFncEZyZWUoaW50IGZkLCBkcm1faGFuZGxlX3QgaGFuZGxlKQogICogVGhpcyBmdW5j dGlvbiBpcyBhIHdyYXBwZXIgYXJvdW5kIHRoZSBEUk1fSU9DVExfQUdQX0JJTkQgaW9jdGwsIHBh c3NpbmcgdGhlCiAgKiBhcmd1bWVudCBpbiBhIGRybV9hZ3BfYmluZGluZyBzdHJ1Y3R1cmUuCiAg Ki8KLWludCBkcm1BZ3BCaW5kKGludCBmZCwgZHJtX2hhbmRsZV90IGhhbmRsZSwgdW5zaWduZWQg bG9uZyBvZmZzZXQpCitkcm1fcHVibGljIGludCBkcm1BZ3BCaW5kKGludCBmZCwgZHJtX2hhbmRs ZV90IGhhbmRsZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQpCiB7CiAgICAgZHJtX2FncF9iaW5kaW5n X3QgYjsKIApAQCAtMTg4Nyw3ICsxODkyLDcgQEAgaW50IGRybUFncEJpbmQoaW50IGZkLCBkcm1f aGFuZGxlX3QgaGFuZGxlLCB1bnNpZ25lZCBsb25nIG9mZnNldCkKICAqIFRoaXMgZnVuY3Rpb24g aXMgYSB3cmFwcGVyIGFyb3VuZCB0aGUgRFJNX0lPQ1RMX0FHUF9VTkJJTkQgaW9jdGwsIHBhc3Np bmcKICAqIHRoZSBhcmd1bWVudCBpbiBhIGRybV9hZ3BfYmluZGluZyBzdHJ1Y3R1cmUuCiAgKi8K LWludCBkcm1BZ3BVbmJpbmQoaW50IGZkLCBkcm1faGFuZGxlX3QgaGFuZGxlKQorZHJtX3B1Ymxp YyBpbnQgZHJtQWdwVW5iaW5kKGludCBmZCwgZHJtX2hhbmRsZV90IGhhbmRsZSkKIHsKICAgICBk cm1fYWdwX2JpbmRpbmdfdCBiOwogCkBAIC0xOTEwLDcgKzE5MTUsNyBAQCBpbnQgZHJtQWdwVW5i aW5kKGludCBmZCwgZHJtX2hhbmRsZV90IGhhbmRsZSkKICAqIFRoaXMgZnVuY3Rpb24gaXMgYSB3 cmFwcGVyIGFyb3VuZCB0aGUgRFJNX0lPQ1RMX0FHUF9JTkZPIGlvY3RsLCBnZXR0aW5nIHRoZQog ICogbmVjZXNzYXJ5IGluZm9ybWF0aW9uIGluIGEgZHJtX2FncF9pbmZvIHN0cnVjdHVyZS4KICAq LwotaW50IGRybUFncFZlcnNpb25NYWpvcihpbnQgZmQpCitkcm1fcHVibGljIGludCBkcm1BZ3BW ZXJzaW9uTWFqb3IoaW50IGZkKQogewogICAgIGRybV9hZ3BfaW5mb190IGk7CiAKQEAgLTE5MzMs NyArMTkzOCw3IEBAIGludCBkcm1BZ3BWZXJzaW9uTWFqb3IoaW50IGZkKQogICogVGhpcyBmdW5j dGlvbiBpcyBhIHdyYXBwZXIgYXJvdW5kIHRoZSBEUk1fSU9DVExfQUdQX0lORk8gaW9jdGwsIGdl dHRpbmcgdGhlCiAgKiBuZWNlc3NhcnkgaW5mb3JtYXRpb24gaW4gYSBkcm1fYWdwX2luZm8gc3Ry dWN0dXJlLgogICovCi1pbnQgZHJtQWdwVmVyc2lvbk1pbm9yKGludCBmZCkKK2RybV9wdWJsaWMg aW50IGRybUFncFZlcnNpb25NaW5vcihpbnQgZmQpCiB7CiAgICAgZHJtX2FncF9pbmZvX3QgaTsK IApAQCAtMTk1Niw3ICsxOTYxLDcgQEAgaW50IGRybUFncFZlcnNpb25NaW5vcihpbnQgZmQpCiAg KiBUaGlzIGZ1bmN0aW9uIGlzIGEgd3JhcHBlciBhcm91bmQgdGhlIERSTV9JT0NUTF9BR1BfSU5G TyBpb2N0bCwgZ2V0dGluZyB0aGUKICAqIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBpbiBhIGRybV9h Z3BfaW5mbyBzdHJ1Y3R1cmUuCiAgKi8KLXVuc2lnbmVkIGxvbmcgZHJtQWdwR2V0TW9kZShpbnQg ZmQpCitkcm1fcHVibGljIHVuc2lnbmVkIGxvbmcgZHJtQWdwR2V0TW9kZShpbnQgZmQpCiB7CiAg ICAgZHJtX2FncF9pbmZvX3QgaTsKIApAQCAtMTk3OSw3ICsxOTg0LDcgQEAgdW5zaWduZWQgbG9u ZyBkcm1BZ3BHZXRNb2RlKGludCBmZCkKICAqIFRoaXMgZnVuY3Rpb24gaXMgYSB3cmFwcGVyIGFy b3VuZCB0aGUgRFJNX0lPQ1RMX0FHUF9JTkZPIGlvY3RsLCBnZXR0aW5nIHRoZQogICogbmVjZXNz YXJ5IGluZm9ybWF0aW9uIGluIGEgZHJtX2FncF9pbmZvIHN0cnVjdHVyZS4KICAqLwotdW5zaWdu ZWQgbG9uZyBkcm1BZ3BCYXNlKGludCBmZCkKK2RybV9wdWJsaWMgdW5zaWduZWQgbG9uZyBkcm1B Z3BCYXNlKGludCBmZCkKIHsKICAgICBkcm1fYWdwX2luZm9fdCBpOwogCkBAIC0yMDAyLDcgKzIw MDcsNyBAQCB1bnNpZ25lZCBsb25nIGRybUFncEJhc2UoaW50IGZkKQogICogVGhpcyBmdW5jdGlv biBpcyBhIHdyYXBwZXIgYXJvdW5kIHRoZSBEUk1fSU9DVExfQUdQX0lORk8gaW9jdGwsIGdldHRp bmcgdGhlCiAgKiBuZWNlc3NhcnkgaW5mb3JtYXRpb24gaW4gYSBkcm1fYWdwX2luZm8gc3RydWN0 dXJlLgogICovCi11bnNpZ25lZCBsb25nIGRybUFncFNpemUoaW50IGZkKQorZHJtX3B1YmxpYyB1 bnNpZ25lZCBsb25nIGRybUFncFNpemUoaW50IGZkKQogewogICAgIGRybV9hZ3BfaW5mb190IGk7 CiAKQEAgLTIwMjUsNyArMjAzMCw3IEBAIHVuc2lnbmVkIGxvbmcgZHJtQWdwU2l6ZShpbnQgZmQp CiAgKiBUaGlzIGZ1bmN0aW9uIGlzIGEgd3JhcHBlciBhcm91bmQgdGhlIERSTV9JT0NUTF9BR1Bf SU5GTyBpb2N0bCwgZ2V0dGluZyB0aGUKICAqIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBpbiBhIGRy bV9hZ3BfaW5mbyBzdHJ1Y3R1cmUuCiAgKi8KLXVuc2lnbmVkIGxvbmcgZHJtQWdwTWVtb3J5VXNl ZChpbnQgZmQpCitkcm1fcHVibGljIHVuc2lnbmVkIGxvbmcgZHJtQWdwTWVtb3J5VXNlZChpbnQg ZmQpCiB7CiAgICAgZHJtX2FncF9pbmZvX3QgaTsKIApAQCAtMjA0OCw3ICsyMDUzLDcgQEAgdW5z aWduZWQgbG9uZyBkcm1BZ3BNZW1vcnlVc2VkKGludCBmZCkKICAqIFRoaXMgZnVuY3Rpb24gaXMg YSB3cmFwcGVyIGFyb3VuZCB0aGUgRFJNX0lPQ1RMX0FHUF9JTkZPIGlvY3RsLCBnZXR0aW5nIHRo ZQogICogbmVjZXNzYXJ5IGluZm9ybWF0aW9uIGluIGEgZHJtX2FncF9pbmZvIHN0cnVjdHVyZS4K ICAqLwotdW5zaWduZWQgbG9uZyBkcm1BZ3BNZW1vcnlBdmFpbChpbnQgZmQpCitkcm1fcHVibGlj IHVuc2lnbmVkIGxvbmcgZHJtQWdwTWVtb3J5QXZhaWwoaW50IGZkKQogewogICAgIGRybV9hZ3Bf aW5mb190IGk7CiAKQEAgLTIwNzEsNyArMjA3Niw3IEBAIHVuc2lnbmVkIGxvbmcgZHJtQWdwTWVt b3J5QXZhaWwoaW50IGZkKQogICogVGhpcyBmdW5jdGlvbiBpcyBhIHdyYXBwZXIgYXJvdW5kIHRo ZSBEUk1fSU9DVExfQUdQX0lORk8gaW9jdGwsIGdldHRpbmcgdGhlCiAgKiBuZWNlc3NhcnkgaW5m b3JtYXRpb24gaW4gYSBkcm1fYWdwX2luZm8gc3RydWN0dXJlLgogICovCi11bnNpZ25lZCBpbnQg ZHJtQWdwVmVuZG9ySWQoaW50IGZkKQorZHJtX3B1YmxpYyB1bnNpZ25lZCBpbnQgZHJtQWdwVmVu ZG9ySWQoaW50IGZkKQogewogICAgIGRybV9hZ3BfaW5mb190IGk7CiAKQEAgLTIwOTQsNyArMjA5 OSw3IEBAIHVuc2lnbmVkIGludCBkcm1BZ3BWZW5kb3JJZChpbnQgZmQpCiAgKiBUaGlzIGZ1bmN0 aW9uIGlzIGEgd3JhcHBlciBhcm91bmQgdGhlIERSTV9JT0NUTF9BR1BfSU5GTyBpb2N0bCwgZ2V0 dGluZyB0aGUKICAqIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBpbiBhIGRybV9hZ3BfaW5mbyBzdHJ1 Y3R1cmUuCiAgKi8KLXVuc2lnbmVkIGludCBkcm1BZ3BEZXZpY2VJZChpbnQgZmQpCitkcm1fcHVi bGljIHVuc2lnbmVkIGludCBkcm1BZ3BEZXZpY2VJZChpbnQgZmQpCiB7CiAgICAgZHJtX2FncF9p bmZvX3QgaTsKIApAQCAtMjEwNSw3ICsyMTEwLDggQEAgdW5zaWduZWQgaW50IGRybUFncERldmlj ZUlkKGludCBmZCkKICAgICByZXR1cm4gaS5pZF9kZXZpY2U7CiB9CiAKLWludCBkcm1TY2F0dGVy R2F0aGVyQWxsb2MoaW50IGZkLCB1bnNpZ25lZCBsb25nIHNpemUsIGRybV9oYW5kbGVfdCAqaGFu ZGxlKQorZHJtX3B1YmxpYyBpbnQgZHJtU2NhdHRlckdhdGhlckFsbG9jKGludCBmZCwgdW5zaWdu ZWQgbG9uZyBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRybV9o YW5kbGVfdCAqaGFuZGxlKQogewogICAgIGRybV9zY2F0dGVyX2dhdGhlcl90IHNnOwogCkBAIC0y MTE5LDcgKzIxMjUsNyBAQCBpbnQgZHJtU2NhdHRlckdhdGhlckFsbG9jKGludCBmZCwgdW5zaWdu ZWQgbG9uZyBzaXplLCBkcm1faGFuZGxlX3QgKmhhbmRsZSkKICAgICByZXR1cm4gMDsKIH0KIAot aW50IGRybVNjYXR0ZXJHYXRoZXJGcmVlKGludCBmZCwgZHJtX2hhbmRsZV90IGhhbmRsZSkKK2Ry bV9wdWJsaWMgaW50IGRybVNjYXR0ZXJHYXRoZXJGcmVlKGludCBmZCwgZHJtX2hhbmRsZV90IGhh bmRsZSkKIHsKICAgICBkcm1fc2NhdHRlcl9nYXRoZXJfdCBzZzsKIApAQCAtMjE0MSw3ICsyMTQ3 LDcgQEAgaW50IGRybVNjYXR0ZXJHYXRoZXJGcmVlKGludCBmZCwgZHJtX2hhbmRsZV90IGhhbmRs ZSkKICAqIFxpbnRlcm5hbAogICogVGhpcyBmdW5jdGlvbiBpcyBhIHdyYXBwZXIgYXJvdW5kIHRo ZSBEUk1fSU9DVExfV0FJVF9WQkxBTksgaW9jdGwuCiAgKi8KLWludCBkcm1XYWl0VkJsYW5rKGlu dCBmZCwgZHJtVkJsYW5rUHRyIHZibCkKK2RybV9wdWJsaWMgaW50IGRybVdhaXRWQmxhbmsoaW50 IGZkLCBkcm1WQmxhbmtQdHIgdmJsKQogewogICAgIHN0cnVjdCB0aW1lc3BlYyB0aW1lb3V0LCBj dXI7CiAgICAgaW50IHJldDsKQEAgLTIxNzMsNyArMjE3OSw3IEBAIG91dDoKICAgICByZXR1cm4g cmV0OwogfQogCi1pbnQgZHJtRXJyb3IoaW50IGVyciwgY29uc3QgY2hhciAqbGFiZWwpCitkcm1f cHVibGljIGludCBkcm1FcnJvcihpbnQgZXJyLCBjb25zdCBjaGFyICpsYWJlbCkKIHsKICAgICBz d2l0Y2ggKGVycikgewogICAgIGNhc2UgRFJNX0VSUl9OT19ERVZJQ0U6CkBAIC0yMjEwLDcgKzIy MTYsNyBAQCBpbnQgZHJtRXJyb3IoaW50IGVyciwgY29uc3QgY2hhciAqbGFiZWwpCiAgKiBUaGlz IGZ1bmN0aW9uIGlzIGEgd3JhcHBlciBhcm91bmQgdGhlIERSTV9JT0NUTF9DT05UUk9MIGlvY3Rs LCBwYXNzaW5nIHRoZQogICogYXJndW1lbnQgaW4gYSBkcm1fY29udHJvbCBzdHJ1Y3R1cmUuCiAg Ki8KLWludCBkcm1DdGxJbnN0SGFuZGxlcihpbnQgZmQsIGludCBpcnEpCitkcm1fcHVibGljIGlu dCBkcm1DdGxJbnN0SGFuZGxlcihpbnQgZmQsIGludCBpcnEpCiB7CiAgICAgZHJtX2NvbnRyb2xf dCBjdGw7CiAKQEAgLTIyMzQsNyArMjI0MCw3IEBAIGludCBkcm1DdGxJbnN0SGFuZGxlcihpbnQg ZmQsIGludCBpcnEpCiAgKiBUaGlzIGZ1bmN0aW9uIGlzIGEgd3JhcHBlciBhcm91bmQgdGhlIERS TV9JT0NUTF9DT05UUk9MIGlvY3RsLCBwYXNzaW5nIHRoZQogICogYXJndW1lbnQgaW4gYSBkcm1f Y29udHJvbCBzdHJ1Y3R1cmUuCiAgKi8KLWludCBkcm1DdGxVbmluc3RIYW5kbGVyKGludCBmZCkK K2RybV9wdWJsaWMgaW50IGRybUN0bFVuaW5zdEhhbmRsZXIoaW50IGZkKQogewogICAgIGRybV9j b250cm9sX3QgY3RsOwogCkBAIC0yMjQ2LDcgKzIyNTIsNyBAQCBpbnQgZHJtQ3RsVW5pbnN0SGFu ZGxlcihpbnQgZmQpCiAgICAgcmV0dXJuIDA7CiB9CiAKLWludCBkcm1GaW5pc2goaW50IGZkLCBp bnQgY29udGV4dCwgZHJtTG9ja0ZsYWdzIGZsYWdzKQorZHJtX3B1YmxpYyBpbnQgZHJtRmluaXNo KGludCBmZCwgaW50IGNvbnRleHQsIGRybUxvY2tGbGFncyBmbGFncykKIHsKICAgICBkcm1fbG9j a190IGxvY2s7CiAKQEAgLTIyNzcsNyArMjI4Myw4IEBAIGludCBkcm1GaW5pc2goaW50IGZkLCBp bnQgY29udGV4dCwgZHJtTG9ja0ZsYWdzIGZsYWdzKQogICogVGhpcyBmdW5jdGlvbiBpcyBhIHdy YXBwZXIgYXJvdW5kIHRoZSBEUk1fSU9DVExfSVJRX0JVU0lEIGlvY3RsLCBwYXNzaW5nIHRoZQog ICogYXJndW1lbnRzIGluIGEgZHJtX2lycV9idXNpZCBzdHJ1Y3R1cmUuCiAgKi8KLWludCBkcm1H ZXRJbnRlcnJ1cHRGcm9tQnVzSUQoaW50IGZkLCBpbnQgYnVzbnVtLCBpbnQgZGV2bnVtLCBpbnQg ZnVuY251bSkKK2RybV9wdWJsaWMgaW50IGRybUdldEludGVycnVwdEZyb21CdXNJRChpbnQgZmQs IGludCBidXNudW0sIGludCBkZXZudW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50IGZ1bmNudW0pCiB7CiAgICAgZHJtX2lycV9idXNpZF90IHA7CiAKQEAgLTIy OTAsNyArMjI5Nyw3IEBAIGludCBkcm1HZXRJbnRlcnJ1cHRGcm9tQnVzSUQoaW50IGZkLCBpbnQg YnVzbnVtLCBpbnQgZGV2bnVtLCBpbnQgZnVuY251bSkKICAgICByZXR1cm4gcC5pcnE7CiB9CiAK LWludCBkcm1BZGRDb250ZXh0VGFnKGludCBmZCwgZHJtX2NvbnRleHRfdCBjb250ZXh0LCB2b2lk ICp0YWcpCitkcm1fcHVibGljIGludCBkcm1BZGRDb250ZXh0VGFnKGludCBmZCwgZHJtX2NvbnRl eHRfdCBjb250ZXh0LCB2b2lkICp0YWcpCiB7CiAgICAgZHJtSGFzaEVudHJ5ICAqZW50cnkgPSBk cm1HZXRFbnRyeShmZCk7CiAKQEAgLTIzMDEsMTQgKzIzMDgsMTQgQEAgaW50IGRybUFkZENvbnRl eHRUYWcoaW50IGZkLCBkcm1fY29udGV4dF90IGNvbnRleHQsIHZvaWQgKnRhZykKICAgICByZXR1 cm4gMDsKIH0KIAotaW50IGRybURlbENvbnRleHRUYWcoaW50IGZkLCBkcm1fY29udGV4dF90IGNv bnRleHQpCitkcm1fcHVibGljIGludCBkcm1EZWxDb250ZXh0VGFnKGludCBmZCwgZHJtX2NvbnRl eHRfdCBjb250ZXh0KQogewogICAgIGRybUhhc2hFbnRyeSAgKmVudHJ5ID0gZHJtR2V0RW50cnko ZmQpOwogCiAgICAgcmV0dXJuIGRybUhhc2hEZWxldGUoZW50cnktPnRhZ1RhYmxlLCBjb250ZXh0 KTsKIH0KIAotdm9pZCAqZHJtR2V0Q29udGV4dFRhZyhpbnQgZmQsIGRybV9jb250ZXh0X3QgY29u dGV4dCkKK2RybV9wdWJsaWMgdm9pZCAqZHJtR2V0Q29udGV4dFRhZyhpbnQgZmQsIGRybV9jb250 ZXh0X3QgY29udGV4dCkKIHsKICAgICBkcm1IYXNoRW50cnkgICplbnRyeSA9IGRybUdldEVudHJ5 KGZkKTsKICAgICB2b2lkICAgICAgICAgICp2YWx1ZTsKQEAgLTIzMTksOCArMjMyNiw4IEBAIHZv aWQgKmRybUdldENvbnRleHRUYWcoaW50IGZkLCBkcm1fY29udGV4dF90IGNvbnRleHQpCiAgICAg cmV0dXJuIHZhbHVlOwogfQogCi1pbnQgZHJtQWRkQ29udGV4dFByaXZhdGVNYXBwaW5nKGludCBm ZCwgZHJtX2NvbnRleHRfdCBjdHhfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRybV9oYW5kbGVfdCBoYW5kbGUpCitkcm1fcHVibGljIGludCBkcm1BZGRDb250ZXh0UHJpdmF0 ZU1hcHBpbmcoaW50IGZkLCBkcm1fY29udGV4dF90IGN0eF9pZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkcm1faGFuZGxlX3QgaGFuZGxlKQogewogICAgIGRy bV9jdHhfcHJpdl9tYXBfdCBtYXA7CiAKQEAgLTIzMzMsOCArMjM0MCw4IEBAIGludCBkcm1BZGRD b250ZXh0UHJpdmF0ZU1hcHBpbmcoaW50IGZkLCBkcm1fY29udGV4dF90IGN0eF9pZCwKICAgICBy ZXR1cm4gMDsKIH0KIAotaW50IGRybUdldENvbnRleHRQcml2YXRlTWFwcGluZyhpbnQgZmQsIGRy bV9jb250ZXh0X3QgY3R4X2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcm1f aGFuZGxlX3QgKmhhbmRsZSkKK2RybV9wdWJsaWMgaW50IGRybUdldENvbnRleHRQcml2YXRlTWFw cGluZyhpbnQgZmQsIGRybV9jb250ZXh0X3QgY3R4X2lkLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRybV9oYW5kbGVfdCAqaGFuZGxlKQogewogICAgIGRybV9j dHhfcHJpdl9tYXBfdCBtYXA7CiAKQEAgLTIzNDksOSArMjM1Niw5IEBAIGludCBkcm1HZXRDb250 ZXh0UHJpdmF0ZU1hcHBpbmcoaW50IGZkLCBkcm1fY29udGV4dF90IGN0eF9pZCwKICAgICByZXR1 cm4gMDsKIH0KIAotaW50IGRybUdldE1hcChpbnQgZmQsIGludCBpZHgsIGRybV9oYW5kbGVfdCAq b2Zmc2V0LCBkcm1TaXplICpzaXplLAotICAgICAgICAgICAgICBkcm1NYXBUeXBlICp0eXBlLCBk cm1NYXBGbGFncyAqZmxhZ3MsIGRybV9oYW5kbGVfdCAqaGFuZGxlLAotICAgICAgICAgICAgICBp bnQgKm10cnIpCitkcm1fcHVibGljIGludCBkcm1HZXRNYXAoaW50IGZkLCBpbnQgaWR4LCBkcm1f aGFuZGxlX3QgKm9mZnNldCwgZHJtU2l6ZSAqc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICBkcm1NYXBUeXBlICp0eXBlLCBkcm1NYXBGbGFncyAqZmxhZ3MsCisgICAgICAgICAgICAgICAg ICAgICAgICAgZHJtX2hhbmRsZV90ICpoYW5kbGUsIGludCAqbXRycikKIHsKICAgICBkcm1fbWFw X3QgbWFwOwogCkBAIC0yMzY4LDggKzIzNzUsOCBAQCBpbnQgZHJtR2V0TWFwKGludCBmZCwgaW50 IGlkeCwgZHJtX2hhbmRsZV90ICpvZmZzZXQsIGRybVNpemUgKnNpemUsCiAgICAgcmV0dXJuIDA7 CiB9CiAKLWludCBkcm1HZXRDbGllbnQoaW50IGZkLCBpbnQgaWR4LCBpbnQgKmF1dGgsIGludCAq cGlkLCBpbnQgKnVpZCwKLSAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqbWFnaWMsIHVu c2lnbmVkIGxvbmcgKmlvY3MpCitkcm1fcHVibGljIGludCBkcm1HZXRDbGllbnQoaW50IGZkLCBp bnQgaWR4LCBpbnQgKmF1dGgsIGludCAqcGlkLCBpbnQgKnVpZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBsb25nICptYWdpYywgdW5zaWduZWQgbG9uZyAqaW9jcykKIHsK ICAgICBkcm1fY2xpZW50X3QgY2xpZW50OwogCkBAIC0yMzg1LDcgKzIzOTIsNyBAQCBpbnQgZHJt R2V0Q2xpZW50KGludCBmZCwgaW50IGlkeCwgaW50ICphdXRoLCBpbnQgKnBpZCwgaW50ICp1aWQs CiAgICAgcmV0dXJuIDA7CiB9CiAKLWludCBkcm1HZXRTdGF0cyhpbnQgZmQsIGRybVN0YXRzVCAq c3RhdHMpCitkcm1fcHVibGljIGludCBkcm1HZXRTdGF0cyhpbnQgZmQsIGRybVN0YXRzVCAqc3Rh dHMpCiB7CiAgICAgZHJtX3N0YXRzX3QgczsKICAgICB1bnNpZ25lZCAgICBpOwpAQCAtMjUyMyw3 ICsyNTMwLDcgQEAgaW50IGRybUdldFN0YXRzKGludCBmZCwgZHJtU3RhdHNUICpzdGF0cykKICAq IEl0IGlzc3VlcyBhIHJlYWQtd3JpdGUgaW9jdGwgZ2l2ZW4gYnkKICAqIFxjb2RlIERSTV9DT01N QU5EX0JBU0UgKyBkcm1Db21tYW5kSW5kZXggXGVuZGNvZGUuCiAgKi8KLWludCBkcm1TZXRJbnRl cmZhY2VWZXJzaW9uKGludCBmZCwgZHJtU2V0VmVyc2lvbiAqdmVyc2lvbikKK2RybV9wdWJsaWMg aW50IGRybVNldEludGVyZmFjZVZlcnNpb24oaW50IGZkLCBkcm1TZXRWZXJzaW9uICp2ZXJzaW9u KQogewogICAgIGludCByZXRjb2RlID0gMDsKICAgICBkcm1fc2V0X3ZlcnNpb25fdCBzdjsKQEAg LTI1NTgsNyArMjU2NSw3IEBAIGludCBkcm1TZXRJbnRlcmZhY2VWZXJzaW9uKGludCBmZCwgZHJt U2V0VmVyc2lvbiAqdmVyc2lvbikKICAqIEl0IGlzc3VlcyBhIGlvY3RsIGdpdmVuIGJ5CiAgKiBc Y29kZSBEUk1fQ09NTUFORF9CQVNFICsgZHJtQ29tbWFuZEluZGV4IFxlbmRjb2RlLgogICovCi1p bnQgZHJtQ29tbWFuZE5vbmUoaW50IGZkLCB1bnNpZ25lZCBsb25nIGRybUNvbW1hbmRJbmRleCkK K2RybV9wdWJsaWMgaW50IGRybUNvbW1hbmROb25lKGludCBmZCwgdW5zaWduZWQgbG9uZyBkcm1D b21tYW5kSW5kZXgpCiB7CiAgICAgdW5zaWduZWQgbG9uZyByZXF1ZXN0OwogCkBAIC0yNTg1LDgg KzI1OTIsOCBAQCBpbnQgZHJtQ29tbWFuZE5vbmUoaW50IGZkLCB1bnNpZ25lZCBsb25nIGRybUNv bW1hbmRJbmRleCkKICAqIEl0IGlzc3VlcyBhIHJlYWQgaW9jdGwgZ2l2ZW4gYnkKICAqIFxjb2Rl IERSTV9DT01NQU5EX0JBU0UgKyBkcm1Db21tYW5kSW5kZXggXGVuZGNvZGUuCiAgKi8KLWludCBk cm1Db21tYW5kUmVhZChpbnQgZmQsIHVuc2lnbmVkIGxvbmcgZHJtQ29tbWFuZEluZGV4LCB2b2lk ICpkYXRhLAotICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSkKK2RybV9wdWJs aWMgaW50IGRybUNvbW1hbmRSZWFkKGludCBmZCwgdW5zaWduZWQgbG9uZyBkcm1Db21tYW5kSW5k ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhLCB1bnNpZ25lZCBs b25nIHNpemUpCiB7CiAgICAgdW5zaWduZWQgbG9uZyByZXF1ZXN0OwogCkBAIC0yNjE0LDggKzI2 MjEsOCBAQCBpbnQgZHJtQ29tbWFuZFJlYWQoaW50IGZkLCB1bnNpZ25lZCBsb25nIGRybUNvbW1h bmRJbmRleCwgdm9pZCAqZGF0YSwKICAqIEl0IGlzc3VlcyBhIHdyaXRlIGlvY3RsIGdpdmVuIGJ5 CiAgKiBcY29kZSBEUk1fQ09NTUFORF9CQVNFICsgZHJtQ29tbWFuZEluZGV4IFxlbmRjb2RlLgog ICovCi1pbnQgZHJtQ29tbWFuZFdyaXRlKGludCBmZCwgdW5zaWduZWQgbG9uZyBkcm1Db21tYW5k SW5kZXgsIHZvaWQgKmRhdGEsCi0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6 ZSkKK2RybV9wdWJsaWMgaW50IGRybUNvbW1hbmRXcml0ZShpbnQgZmQsIHVuc2lnbmVkIGxvbmcg ZHJtQ29tbWFuZEluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRh dGEsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKIHsKICAgICB1bnNpZ25lZCBsb25nIHJlcXVlc3Q7CiAK QEAgLTI2NDMsOCArMjY1MCw4IEBAIGludCBkcm1Db21tYW5kV3JpdGUoaW50IGZkLCB1bnNpZ25l ZCBsb25nIGRybUNvbW1hbmRJbmRleCwgdm9pZCAqZGF0YSwKICAqIEl0IGlzc3VlcyBhIHJlYWQt d3JpdGUgaW9jdGwgZ2l2ZW4gYnkKICAqIFxjb2RlIERSTV9DT01NQU5EX0JBU0UgKyBkcm1Db21t YW5kSW5kZXggXGVuZGNvZGUuCiAgKi8KLWludCBkcm1Db21tYW5kV3JpdGVSZWFkKGludCBmZCwg dW5zaWduZWQgbG9uZyBkcm1Db21tYW5kSW5kZXgsIHZvaWQgKmRhdGEsCi0gICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNpemUpCitkcm1fcHVibGljIGludCBkcm1Db21tYW5k V3JpdGVSZWFkKGludCBmZCwgdW5zaWduZWQgbG9uZyBkcm1Db21tYW5kSW5kZXgsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEsIHVuc2lnbmVkIGxvbmcgc2l6 ZSkKIHsKICAgICB1bnNpZ25lZCBsb25nIHJlcXVlc3Q7CiAKQEAgLTI2NjYsMTQgKzI2NzMsMTMg QEAgc3RhdGljIHN0cnVjdCB7CiAKIHN0YXRpYyBpbnQgbnJfZmRzID0gMDsKIAotaW50IGRybU9w ZW5PbmNlKHZvaWQgKnVudXNlZCwKLSAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpCdXNJRCwK LSAgICAgICAgICAgICAgICBpbnQgKm5ld2x5b3BlbmVkKQorZHJtX3B1YmxpYyBpbnQgZHJtT3Bl bk9uY2Uodm9pZCAqdW51c2VkLCBjb25zdCBjaGFyICpCdXNJRCwgaW50ICpuZXdseW9wZW5lZCkK IHsKICAgICByZXR1cm4gZHJtT3Blbk9uY2VXaXRoVHlwZShCdXNJRCwgbmV3bHlvcGVuZWQsIERS TV9OT0RFX1BSSU1BUlkpOwogfQogCi1pbnQgZHJtT3Blbk9uY2VXaXRoVHlwZShjb25zdCBjaGFy ICpCdXNJRCwgaW50ICpuZXdseW9wZW5lZCwgaW50IHR5cGUpCitkcm1fcHVibGljIGludCBkcm1P cGVuT25jZVdpdGhUeXBlKGNvbnN0IGNoYXIgKkJ1c0lELCBpbnQgKm5ld2x5b3BlbmVkLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdHlwZSkKIHsKICAgICBpbnQgaTsK ICAgICBpbnQgZmQ7CkBAIC0yNzA2LDcgKzI3MTIsNyBAQCBpbnQgZHJtT3Blbk9uY2VXaXRoVHlw ZShjb25zdCBjaGFyICpCdXNJRCwgaW50ICpuZXdseW9wZW5lZCwgaW50IHR5cGUpCiAgICAgcmV0 dXJuIGZkOwogfQogCi12b2lkIGRybUNsb3NlT25jZShpbnQgZmQpCitkcm1fcHVibGljIHZvaWQg ZHJtQ2xvc2VPbmNlKGludCBmZCkKIHsKICAgICBpbnQgaTsKIApAQCAtMjcyNSwxNyArMjczMSwx NyBAQCB2b2lkIGRybUNsb3NlT25jZShpbnQgZmQpCiAgICAgfQogfQogCi1pbnQgZHJtU2V0TWFz dGVyKGludCBmZCkKK2RybV9wdWJsaWMgaW50IGRybVNldE1hc3RlcihpbnQgZmQpCiB7CiAgICAg ICAgIHJldHVybiBkcm1Jb2N0bChmZCwgRFJNX0lPQ1RMX1NFVF9NQVNURVIsIE5VTEwpOwogfQog Ci1pbnQgZHJtRHJvcE1hc3RlcihpbnQgZmQpCitkcm1fcHVibGljIGludCBkcm1Ecm9wTWFzdGVy KGludCBmZCkKIHsKICAgICAgICAgcmV0dXJuIGRybUlvY3RsKGZkLCBEUk1fSU9DVExfRFJPUF9N QVNURVIsIE5VTEwpOwogfQogCi1jaGFyICpkcm1HZXREZXZpY2VOYW1lRnJvbUZkKGludCBmZCkK K2RybV9wdWJsaWMgY2hhciAqZHJtR2V0RGV2aWNlTmFtZUZyb21GZChpbnQgZmQpCiB7CiAgICAg Y2hhciBuYW1lWzEyOF07CiAgICAgc3RydWN0IHN0YXQgc2J1ZjsKQEAgLTI3NjEsNyArMjc2Nyw3 IEBAIGNoYXIgKmRybUdldERldmljZU5hbWVGcm9tRmQoaW50IGZkKQogICAgIHJldHVybiBzdHJk dXAobmFtZSk7CiB9CiAKLWludCBkcm1HZXROb2RlVHlwZUZyb21GZChpbnQgZmQpCitkcm1fcHVi bGljIGludCBkcm1HZXROb2RlVHlwZUZyb21GZChpbnQgZmQpCiB7CiAgICAgc3RydWN0IHN0YXQg c2J1ZjsKICAgICBpbnQgbWFqLCBtaW4sIHR5cGU7CkBAIC0yNzgzLDcgKzI3ODksOCBAQCBpbnQg ZHJtR2V0Tm9kZVR5cGVGcm9tRmQoaW50IGZkKQogICAgIHJldHVybiB0eXBlOwogfQogCi1pbnQg ZHJtUHJpbWVIYW5kbGVUb0ZEKGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50MzJfdCBmbGFn cywgaW50ICpwcmltZV9mZCkKK2RybV9wdWJsaWMgaW50IGRybVByaW1lSGFuZGxlVG9GRChpbnQg ZmQsIHVpbnQzMl90IGhhbmRsZSwgdWludDMyX3QgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50ICpwcmltZV9mZCkKIHsKICAgICBzdHJ1Y3QgZHJtX3ByaW1lX2hh bmRsZSBhcmdzOwogICAgIGludCByZXQ7CkBAIC0yODAwLDcgKzI4MDcsNyBAQCBpbnQgZHJtUHJp bWVIYW5kbGVUb0ZEKGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50MzJfdCBmbGFncywgaW50 ICpwcmltZV9mZCkKICAgICByZXR1cm4gMDsKIH0KIAotaW50IGRybVByaW1lRkRUb0hhbmRsZShp bnQgZmQsIGludCBwcmltZV9mZCwgdWludDMyX3QgKmhhbmRsZSkKK2RybV9wdWJsaWMgaW50IGRy bVByaW1lRkRUb0hhbmRsZShpbnQgZmQsIGludCBwcmltZV9mZCwgdWludDMyX3QgKmhhbmRsZSkK IHsKICAgICBzdHJ1Y3QgZHJtX3ByaW1lX2hhbmRsZSBhcmdzOwogICAgIGludCByZXQ7CkBAIC0y OTAwLDEyICsyOTA3LDEyIEBAIHN0YXRpYyBjaGFyICpkcm1HZXRNaW5vck5hbWVGb3JGRChpbnQg ZmQsIGludCB0eXBlKQogI2VuZGlmCiB9CiAKLWNoYXIgKmRybUdldFByaW1hcnlEZXZpY2VOYW1l RnJvbUZkKGludCBmZCkKK2RybV9wdWJsaWMgY2hhciAqZHJtR2V0UHJpbWFyeURldmljZU5hbWVG cm9tRmQoaW50IGZkKQogewogICAgIHJldHVybiBkcm1HZXRNaW5vck5hbWVGb3JGRChmZCwgRFJN X05PREVfUFJJTUFSWSk7CiB9CiAKLWNoYXIgKmRybUdldFJlbmRlckRldmljZU5hbWVGcm9tRmQo aW50IGZkKQorZHJtX3B1YmxpYyBjaGFyICpkcm1HZXRSZW5kZXJEZXZpY2VOYW1lRnJvbUZkKGlu dCBmZCkKIHsKICAgICByZXR1cm4gZHJtR2V0TWlub3JOYW1lRm9yRkQoZmQsIERSTV9OT0RFX1JF TkRFUik7CiB9CkBAIC0zMDY5LDcgKzMwNzYsNyBAQCBzdGF0aWMgaW50IGRybVBhcnNlUGNpQnVz SW5mbyhpbnQgbWFqLCBpbnQgbWluLCBkcm1QY2lCdXNJbmZvUHRyIGluZm8pCiAjZW5kaWYKIH0K IAotaW50IGRybURldmljZXNFcXVhbChkcm1EZXZpY2VQdHIgYSwgZHJtRGV2aWNlUHRyIGIpCitk cm1fcHVibGljIGludCBkcm1EZXZpY2VzRXF1YWwoZHJtRGV2aWNlUHRyIGEsIGRybURldmljZVB0 ciBiKQogewogICAgIGlmIChhID09IE5VTEwgfHwgYiA9PSBOVUxMKQogICAgICAgICByZXR1cm4g MDsKQEAgLTMyNjksNyArMzI3Niw3IEBAIHN0YXRpYyB2b2lkIGRybUZyZWVIb3N0MXhEZXZpY2Uo ZHJtRGV2aWNlUHRyIGRldmljZSkKICAgICB9CiB9CiAKLXZvaWQgZHJtRnJlZURldmljZShkcm1E ZXZpY2VQdHIgKmRldmljZSkKK2RybV9wdWJsaWMgdm9pZCBkcm1GcmVlRGV2aWNlKGRybURldmlj ZVB0ciAqZGV2aWNlKQogewogICAgIGlmIChkZXZpY2UgPT0gTlVMTCkKICAgICAgICAgcmV0dXJu OwpAQCAtMzI5MCw3ICszMjk3LDcgQEAgdm9pZCBkcm1GcmVlRGV2aWNlKGRybURldmljZVB0ciAq ZGV2aWNlKQogICAgICpkZXZpY2UgPSBOVUxMOwogfQogCi12b2lkIGRybUZyZWVEZXZpY2VzKGRy bURldmljZVB0ciBkZXZpY2VzW10sIGludCBjb3VudCkKK2RybV9wdWJsaWMgdm9pZCBkcm1GcmVl RGV2aWNlcyhkcm1EZXZpY2VQdHIgZGV2aWNlc1tdLCBpbnQgY291bnQpCiB7CiAgICAgaW50IGk7 CiAKQEAgLTM4MTIsNyArMzgxOSw3IEBAIGRybV9kZXZpY2VfaGFzX3JkZXYoZHJtRGV2aWNlUHRy IGRldmljZSwgZGV2X3QgZmluZF9yZGV2KQogICogXG5vdGUgVW5saWtlIGRybUdldERldmljZSBp dCBkb2VzIG5vdCByZXRyaWV2ZSB0aGUgcGNpIGRldmljZSByZXZpc2lvbiBmaWVsZAogICogdW5s ZXNzIHRoZSBEUk1fREVWSUNFX0dFVF9QQ0lfUkVWSVNJT04gXHAgZmxhZyBpcyBzZXQuCiAgKi8K LWludCBkcm1HZXREZXZpY2UyKGludCBmZCwgdWludDMyX3QgZmxhZ3MsIGRybURldmljZVB0ciAq ZGV2aWNlKQorZHJtX3B1YmxpYyBpbnQgZHJtR2V0RGV2aWNlMihpbnQgZmQsIHVpbnQzMl90IGZs YWdzLCBkcm1EZXZpY2VQdHIgKmRldmljZSkKIHsKICNpZmRlZiBfX09wZW5CU0RfXwogICAgIC8q CkBAIC0zOTYwLDcgKzM5NjcsNyBAQCBpbnQgZHJtR2V0RGV2aWNlMihpbnQgZmQsIHVpbnQzMl90 IGZsYWdzLCBkcm1EZXZpY2VQdHIgKmRldmljZSkKICAqCiAgKiBccmV0dXJuIHplcm8gb24gc3Vj Y2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2UuCiAgKi8KLWludCBkcm1HZXREZXZp Y2UoaW50IGZkLCBkcm1EZXZpY2VQdHIgKmRldmljZSkKK2RybV9wdWJsaWMgaW50IGRybUdldERl dmljZShpbnQgZmQsIGRybURldmljZVB0ciAqZGV2aWNlKQogewogICAgIHJldHVybiBkcm1HZXRE ZXZpY2UyKGZkLCBEUk1fREVWSUNFX0dFVF9QQ0lfUkVWSVNJT04sIGRldmljZSk7CiB9CkBAIC0z OTgxLDcgKzM5ODgsOCBAQCBpbnQgZHJtR2V0RGV2aWNlKGludCBmZCwgZHJtRGV2aWNlUHRyICpk ZXZpY2UpCiAgKiBcbm90ZSBVbmxpa2UgZHJtR2V0RGV2aWNlcyBpdCBkb2VzIG5vdCByZXRyaWV2 ZSB0aGUgcGNpIGRldmljZSByZXZpc2lvbiBmaWVsZAogICogdW5sZXNzIHRoZSBEUk1fREVWSUNF X0dFVF9QQ0lfUkVWSVNJT04gXHAgZmxhZyBpcyBzZXQuCiAgKi8KLWludCBkcm1HZXREZXZpY2Vz Mih1aW50MzJfdCBmbGFncywgZHJtRGV2aWNlUHRyIGRldmljZXNbXSwgaW50IG1heF9kZXZpY2Vz KQorZHJtX3B1YmxpYyBpbnQgZHJtR2V0RGV2aWNlczIodWludDMyX3QgZmxhZ3MsIGRybURldmlj ZVB0ciBkZXZpY2VzW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWF4X2Rl dmljZXMpCiB7CiAgICAgZHJtRGV2aWNlUHRyIGxvY2FsX2RldmljZXNbTUFYX0RSTV9OT0RFU107 CiAgICAgZHJtRGV2aWNlUHRyIGRldmljZTsKQEAgLTQwNDQsMTIgKzQwNTIsMTIgQEAgaW50IGRy bUdldERldmljZXMyKHVpbnQzMl90IGZsYWdzLCBkcm1EZXZpY2VQdHIgZGV2aWNlc1tdLCBpbnQg bWF4X2RldmljZXMpCiAgKiAgICAgICAgIGFsdGVybmF0aXZlbHkgdGhlIG51bWJlciBvZiBkZXZp Y2VzIHN0b3JlZCBpbiBkZXZpY2VzW10sIHdoaWNoIGlzCiAgKiAgICAgICAgIGNhcHBlZCBieSB0 aGUgbWF4X2RldmljZXMuCiAgKi8KLWludCBkcm1HZXREZXZpY2VzKGRybURldmljZVB0ciBkZXZp Y2VzW10sIGludCBtYXhfZGV2aWNlcykKK2RybV9wdWJsaWMgaW50IGRybUdldERldmljZXMoZHJt RGV2aWNlUHRyIGRldmljZXNbXSwgaW50IG1heF9kZXZpY2VzKQogewogICAgIHJldHVybiBkcm1H ZXREZXZpY2VzMihEUk1fREVWSUNFX0dFVF9QQ0lfUkVWSVNJT04sIGRldmljZXMsIG1heF9kZXZp Y2VzKTsKIH0KIAotY2hhciAqZHJtR2V0RGV2aWNlTmFtZUZyb21GZDIoaW50IGZkKQorZHJtX3B1 YmxpYyBjaGFyICpkcm1HZXREZXZpY2VOYW1lRnJvbUZkMihpbnQgZmQpCiB7CiAjaWZkZWYgX19s aW51eF9fCiAgICAgc3RydWN0IHN0YXQgc2J1ZjsKQEAgLTQxMjEsNyArNDEyOSw3IEBAIGNoYXIg KmRybUdldERldmljZU5hbWVGcm9tRmQyKGludCBmZCkKICNlbmRpZgogfQogCi1pbnQgZHJtU3lu Y29iakNyZWF0ZShpbnQgZmQsIHVpbnQzMl90IGZsYWdzLCB1aW50MzJfdCAqaGFuZGxlKQorZHJt X3B1YmxpYyBpbnQgZHJtU3luY29iakNyZWF0ZShpbnQgZmQsIHVpbnQzMl90IGZsYWdzLCB1aW50 MzJfdCAqaGFuZGxlKQogewogICAgIHN0cnVjdCBkcm1fc3luY29ial9jcmVhdGUgYXJnczsKICAg ICBpbnQgcmV0OwpAQCAtNDEzNiw3ICs0MTQ0LDcgQEAgaW50IGRybVN5bmNvYmpDcmVhdGUoaW50 IGZkLCB1aW50MzJfdCBmbGFncywgdWludDMyX3QgKmhhbmRsZSkKICAgICByZXR1cm4gMDsKIH0K IAotaW50IGRybVN5bmNvYmpEZXN0cm95KGludCBmZCwgdWludDMyX3QgaGFuZGxlKQorZHJtX3B1 YmxpYyBpbnQgZHJtU3luY29iakRlc3Ryb3koaW50IGZkLCB1aW50MzJfdCBoYW5kbGUpCiB7CiAg ICAgc3RydWN0IGRybV9zeW5jb2JqX2Rlc3Ryb3kgYXJnczsKIApAQCAtNDE0NSw3ICs0MTUzLDcg QEAgaW50IGRybVN5bmNvYmpEZXN0cm95KGludCBmZCwgdWludDMyX3QgaGFuZGxlKQogICAgIHJl dHVybiBkcm1Jb2N0bChmZCwgRFJNX0lPQ1RMX1NZTkNPQkpfREVTVFJPWSwgJmFyZ3MpOwogfQog Ci1pbnQgZHJtU3luY29iakhhbmRsZVRvRkQoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIGludCAq b2JqX2ZkKQorZHJtX3B1YmxpYyBpbnQgZHJtU3luY29iakhhbmRsZVRvRkQoaW50IGZkLCB1aW50 MzJfdCBoYW5kbGUsIGludCAqb2JqX2ZkKQogewogICAgIHN0cnVjdCBkcm1fc3luY29ial9oYW5k bGUgYXJnczsKICAgICBpbnQgcmV0OwpAQCAtNDE2MCw3ICs0MTY4LDcgQEAgaW50IGRybVN5bmNv YmpIYW5kbGVUb0ZEKGludCBmZCwgdWludDMyX3QgaGFuZGxlLCBpbnQgKm9ial9mZCkKICAgICBy ZXR1cm4gMDsKIH0KIAotaW50IGRybVN5bmNvYmpGRFRvSGFuZGxlKGludCBmZCwgaW50IG9ial9m ZCwgdWludDMyX3QgKmhhbmRsZSkKK2RybV9wdWJsaWMgaW50IGRybVN5bmNvYmpGRFRvSGFuZGxl KGludCBmZCwgaW50IG9ial9mZCwgdWludDMyX3QgKmhhbmRsZSkKIHsKICAgICBzdHJ1Y3QgZHJt X3N5bmNvYmpfaGFuZGxlIGFyZ3M7CiAgICAgaW50IHJldDsKQEAgLTQxNzUsNyArNDE4Myw4IEBA IGludCBkcm1TeW5jb2JqRkRUb0hhbmRsZShpbnQgZmQsIGludCBvYmpfZmQsIHVpbnQzMl90ICpo YW5kbGUpCiAgICAgcmV0dXJuIDA7CiB9CiAKLWludCBkcm1TeW5jb2JqSW1wb3J0U3luY0ZpbGUo aW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIGludCBzeW5jX2ZpbGVfZmQpCitkcm1fcHVibGljIGlu dCBkcm1TeW5jb2JqSW1wb3J0U3luY0ZpbGUoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN5bmNfZmlsZV9mZCkKIHsK ICAgICBzdHJ1Y3QgZHJtX3N5bmNvYmpfaGFuZGxlIGFyZ3M7CiAKQEAgLTQxODYsNyArNDE5NSw4 IEBAIGludCBkcm1TeW5jb2JqSW1wb3J0U3luY0ZpbGUoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUs IGludCBzeW5jX2ZpbGVfZmQpCiAgICAgcmV0dXJuIGRybUlvY3RsKGZkLCBEUk1fSU9DVExfU1lO Q09CSl9GRF9UT19IQU5ETEUsICZhcmdzKTsKIH0KIAotaW50IGRybVN5bmNvYmpFeHBvcnRTeW5j RmlsZShpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgaW50ICpzeW5jX2ZpbGVfZmQpCitkcm1fcHVi bGljIGludCBkcm1TeW5jb2JqRXhwb3J0U3luY0ZpbGUoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpzeW5jX2ZpbGVf ZmQpCiB7CiAgICAgc3RydWN0IGRybV9zeW5jb2JqX2hhbmRsZSBhcmdzOwogICAgIGludCByZXQ7 CkBAIC00MjAyLDkgKzQyMTIsOSBAQCBpbnQgZHJtU3luY29iakV4cG9ydFN5bmNGaWxlKGludCBm ZCwgdWludDMyX3QgaGFuZGxlLCBpbnQgKnN5bmNfZmlsZV9mZCkKICAgICByZXR1cm4gMDsKIH0K IAotaW50IGRybVN5bmNvYmpXYWl0KGludCBmZCwgdWludDMyX3QgKmhhbmRsZXMsIHVuc2lnbmVk IG51bV9oYW5kbGVzLAotICAgICAgICAgICAgICAgICAgIGludDY0X3QgdGltZW91dF9uc2VjLCB1 bnNpZ25lZCBmbGFncywKLSAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqZmlyc3Rfc2lnbmFs ZWQpCitkcm1fcHVibGljIGludCBkcm1TeW5jb2JqV2FpdChpbnQgZmQsIHVpbnQzMl90ICpoYW5k bGVzLCB1bnNpZ25lZCBudW1faGFuZGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGludDY0X3QgdGltZW91dF9uc2VjLCB1bnNpZ25lZCBmbGFncywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVpbnQzMl90ICpmaXJzdF9zaWduYWxlZCkKIHsKICAgICBzdHJ1Y3QgZHJt X3N5bmNvYmpfd2FpdCBhcmdzOwogICAgIGludCByZXQ7CkBAIC00MjI0LDcgKzQyMzQsOCBAQCBp bnQgZHJtU3luY29ialdhaXQoaW50IGZkLCB1aW50MzJfdCAqaGFuZGxlcywgdW5zaWduZWQgbnVt X2hhbmRsZXMsCiAgICAgcmV0dXJuIHJldDsKIH0KIAotaW50IGRybVN5bmNvYmpSZXNldChpbnQg ZmQsIGNvbnN0IHVpbnQzMl90ICpoYW5kbGVzLCB1aW50MzJfdCBoYW5kbGVfY291bnQpCitkcm1f cHVibGljIGludCBkcm1TeW5jb2JqUmVzZXQoaW50IGZkLCBjb25zdCB1aW50MzJfdCAqaGFuZGxl cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBoYW5kbGVfY291bnQp CiB7CiAgICAgc3RydWN0IGRybV9zeW5jb2JqX2FycmF5IGFyZ3M7CiAgICAgaW50IHJldDsKQEAg LTQyMzcsNyArNDI0OCw4IEBAIGludCBkcm1TeW5jb2JqUmVzZXQoaW50IGZkLCBjb25zdCB1aW50 MzJfdCAqaGFuZGxlcywgdWludDMyX3QgaGFuZGxlX2NvdW50KQogICAgIHJldHVybiByZXQ7CiB9 CiAKLWludCBkcm1TeW5jb2JqU2lnbmFsKGludCBmZCwgY29uc3QgdWludDMyX3QgKmhhbmRsZXMs IHVpbnQzMl90IGhhbmRsZV9jb3VudCkKK2RybV9wdWJsaWMgaW50IGRybVN5bmNvYmpTaWduYWwo aW50IGZkLCBjb25zdCB1aW50MzJfdCAqaGFuZGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdWludDMyX3QgaGFuZGxlX2NvdW50KQogewogICAgIHN0cnVjdCBkcm1fc3luY29i al9hcnJheSBhcmdzOwogICAgIGludCByZXQ7CmRpZmYgLS1naXQgYS94Zjg2ZHJtSGFzaC5jIGIv eGY4NmRybUhhc2guYwppbmRleCBiMmZhNDE0ZS4uNDY3NDk4Y2MgMTAwNjQ0Ci0tLSBhL3hmODZk cm1IYXNoLmMKKysrIGIveGY4NmRybUhhc2guYwpAQCAtNzEsNiArNzEsNyBAQAogI2luY2x1ZGUg PHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAKKyNpbmNsdWRlICJsaWJkcm1fbWFjcm9z LmgiCiAjaW5jbHVkZSAieGY4NmRybS5oIgogI2luY2x1ZGUgInhmODZkcm1IYXNoLmgiCiAKQEAg LTEwMSw3ICsxMDIsNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBIYXNoSGFzaCh1bnNpZ25lZCBs b25nIGtleSkKICAgICByZXR1cm4gaGFzaDsKIH0KIAotdm9pZCAqZHJtSGFzaENyZWF0ZSh2b2lk KQorZHJtX3B1YmxpYyB2b2lkICpkcm1IYXNoQ3JlYXRlKHZvaWQpCiB7CiAgICAgSGFzaFRhYmxl UHRyIHRhYmxlOwogICAgIGludCAgICAgICAgICBpOwpAQCAtMTE4LDcgKzExOSw3IEBAIHZvaWQg KmRybUhhc2hDcmVhdGUodm9pZCkKICAgICByZXR1cm4gdGFibGU7CiB9CiAKLWludCBkcm1IYXNo RGVzdHJveSh2b2lkICp0KQorZHJtX3B1YmxpYyBpbnQgZHJtSGFzaERlc3Ryb3kodm9pZCAqdCkK IHsKICAgICBIYXNoVGFibGVQdHIgIHRhYmxlID0gKEhhc2hUYWJsZVB0cil0OwogICAgIEhhc2hC dWNrZXRQdHIgYnVja2V0OwpAQCAtMTY5LDcgKzE3MCw3IEBAIHN0YXRpYyBIYXNoQnVja2V0UHRy IEhhc2hGaW5kKEhhc2hUYWJsZVB0ciB0YWJsZSwKICAgICByZXR1cm4gTlVMTDsKIH0KIAotaW50 IGRybUhhc2hMb29rdXAodm9pZCAqdCwgdW5zaWduZWQgbG9uZyBrZXksIHZvaWQgKip2YWx1ZSkK K2RybV9wdWJsaWMgaW50IGRybUhhc2hMb29rdXAodm9pZCAqdCwgdW5zaWduZWQgbG9uZyBrZXks IHZvaWQgKip2YWx1ZSkKIHsKICAgICBIYXNoVGFibGVQdHIgIHRhYmxlID0gKEhhc2hUYWJsZVB0 cil0OwogICAgIEhhc2hCdWNrZXRQdHIgYnVja2V0OwpAQCAtMTgyLDcgKzE4Myw3IEBAIGludCBk cm1IYXNoTG9va3VwKHZvaWQgKnQsIHVuc2lnbmVkIGxvbmcga2V5LCB2b2lkICoqdmFsdWUpCiAg ICAgcmV0dXJuIDA7CQkJLyogRm91bmQgKi8KIH0KIAotaW50IGRybUhhc2hJbnNlcnQodm9pZCAq dCwgdW5zaWduZWQgbG9uZyBrZXksIHZvaWQgKnZhbHVlKQorZHJtX3B1YmxpYyBpbnQgZHJtSGFz aEluc2VydCh2b2lkICp0LCB1bnNpZ25lZCBsb25nIGtleSwgdm9pZCAqdmFsdWUpCiB7CiAgICAg SGFzaFRhYmxlUHRyICB0YWJsZSA9IChIYXNoVGFibGVQdHIpdDsKICAgICBIYXNoQnVja2V0UHRy IGJ1Y2tldDsKQEAgLTIwMSw3ICsyMDIsNyBAQCBpbnQgZHJtSGFzaEluc2VydCh2b2lkICp0LCB1 bnNpZ25lZCBsb25nIGtleSwgdm9pZCAqdmFsdWUpCiAgICAgcmV0dXJuIDA7CQkJLyogQWRkZWQg dG8gdGFibGUgKi8KIH0KIAotaW50IGRybUhhc2hEZWxldGUodm9pZCAqdCwgdW5zaWduZWQgbG9u ZyBrZXkpCitkcm1fcHVibGljIGludCBkcm1IYXNoRGVsZXRlKHZvaWQgKnQsIHVuc2lnbmVkIGxv bmcga2V5KQogewogICAgIEhhc2hUYWJsZVB0ciAgdGFibGUgPSAoSGFzaFRhYmxlUHRyKXQ7CiAg ICAgdW5zaWduZWQgbG9uZyBoYXNoOwpAQCAtMjE4LDcgKzIxOSw3IEBAIGludCBkcm1IYXNoRGVs ZXRlKHZvaWQgKnQsIHVuc2lnbmVkIGxvbmcga2V5KQogICAgIHJldHVybiAwOwogfQogCi1pbnQg ZHJtSGFzaE5leHQodm9pZCAqdCwgdW5zaWduZWQgbG9uZyAqa2V5LCB2b2lkICoqdmFsdWUpCitk cm1fcHVibGljIGludCBkcm1IYXNoTmV4dCh2b2lkICp0LCB1bnNpZ25lZCBsb25nICprZXksIHZv aWQgKip2YWx1ZSkKIHsKICAgICBIYXNoVGFibGVQdHIgIHRhYmxlID0gKEhhc2hUYWJsZVB0cil0 OwogCkBAIC0yMzUsNyArMjM2LDcgQEAgaW50IGRybUhhc2hOZXh0KHZvaWQgKnQsIHVuc2lnbmVk IGxvbmcgKmtleSwgdm9pZCAqKnZhbHVlKQogICAgIHJldHVybiAwOwogfQogCi1pbnQgZHJtSGFz aEZpcnN0KHZvaWQgKnQsIHVuc2lnbmVkIGxvbmcgKmtleSwgdm9pZCAqKnZhbHVlKQorZHJtX3B1 YmxpYyBpbnQgZHJtSGFzaEZpcnN0KHZvaWQgKnQsIHVuc2lnbmVkIGxvbmcgKmtleSwgdm9pZCAq KnZhbHVlKQogewogICAgIEhhc2hUYWJsZVB0ciAgdGFibGUgPSAoSGFzaFRhYmxlUHRyKXQ7CiAK ZGlmZiAtLWdpdCBhL3hmODZkcm1Nb2RlLmMgYi94Zjg2ZHJtTW9kZS5jCmluZGV4IDlhMTViNWU3 Li44Zjg2MzNlZCAxMDA2NDQKLS0tIGEveGY4NmRybU1vZGUuYworKysgYi94Zjg2ZHJtTW9kZS5j CkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRib29s Lmg+CiAKKyNpbmNsdWRlICJsaWJkcm1fbWFjcm9zLmgiCiAjaW5jbHVkZSAieGY4NmRybU1vZGUu aCIKICNpbmNsdWRlICJ4Zjg2ZHJtLmgiCiAjaW5jbHVkZSA8ZHJtLmg+CkBAIC05Miw3ICs5Myw3 IEBAIHN0YXRpYyB2b2lkKiBkcm1BbGxvY0NweShjaGFyICphcnJheSwgaW50IGNvdW50LCBpbnQg ZW50cnlfc2l6ZSkKICAqIEEgY291cGxlIG9mIGZyZWUgZnVuY3Rpb25zLgogICovCiAKLXZvaWQg ZHJtTW9kZUZyZWVNb2RlSW5mbyhkcm1Nb2RlTW9kZUluZm9QdHIgcHRyKQorZHJtX3B1YmxpYyB2 b2lkIGRybU1vZGVGcmVlTW9kZUluZm8oZHJtTW9kZU1vZGVJbmZvUHRyIHB0cikKIHsKIAlpZiAo IXB0cikKIAkJcmV0dXJuOwpAQCAtMTAwLDcgKzEwMSw3IEBAIHZvaWQgZHJtTW9kZUZyZWVNb2Rl SW5mbyhkcm1Nb2RlTW9kZUluZm9QdHIgcHRyKQogCWRybUZyZWUocHRyKTsKIH0KIAotdm9pZCBk cm1Nb2RlRnJlZVJlc291cmNlcyhkcm1Nb2RlUmVzUHRyIHB0cikKK2RybV9wdWJsaWMgdm9pZCBk cm1Nb2RlRnJlZVJlc291cmNlcyhkcm1Nb2RlUmVzUHRyIHB0cikKIHsKIAlpZiAoIXB0cikKIAkJ cmV0dXJuOwpAQCAtMTEyLDcgKzExMyw3IEBAIHZvaWQgZHJtTW9kZUZyZWVSZXNvdXJjZXMoZHJt TW9kZVJlc1B0ciBwdHIpCiAJZHJtRnJlZShwdHIpOwogfQogCi12b2lkIGRybU1vZGVGcmVlRkIo ZHJtTW9kZUZCUHRyIHB0cikKK2RybV9wdWJsaWMgdm9pZCBkcm1Nb2RlRnJlZUZCKGRybU1vZGVG QlB0ciBwdHIpCiB7CiAJaWYgKCFwdHIpCiAJCXJldHVybjsKQEAgLTEyMSw3ICsxMjIsNyBAQCB2 b2lkIGRybU1vZGVGcmVlRkIoZHJtTW9kZUZCUHRyIHB0cikKIAlkcm1GcmVlKHB0cik7CiB9CiAK LXZvaWQgZHJtTW9kZUZyZWVDcnRjKGRybU1vZGVDcnRjUHRyIHB0cikKK2RybV9wdWJsaWMgdm9p ZCBkcm1Nb2RlRnJlZUNydGMoZHJtTW9kZUNydGNQdHIgcHRyKQogewogCWlmICghcHRyKQogCQly ZXR1cm47CkBAIC0xMjksNyArMTMwLDcgQEAgdm9pZCBkcm1Nb2RlRnJlZUNydGMoZHJtTW9kZUNy dGNQdHIgcHRyKQogCWRybUZyZWUocHRyKTsKIH0KIAotdm9pZCBkcm1Nb2RlRnJlZUNvbm5lY3Rv cihkcm1Nb2RlQ29ubmVjdG9yUHRyIHB0cikKK2RybV9wdWJsaWMgdm9pZCBkcm1Nb2RlRnJlZUNv bm5lY3Rvcihkcm1Nb2RlQ29ubmVjdG9yUHRyIHB0cikKIHsKIAlpZiAoIXB0cikKIAkJcmV0dXJu OwpAQCAtMTQxLDcgKzE0Miw3IEBAIHZvaWQgZHJtTW9kZUZyZWVDb25uZWN0b3IoZHJtTW9kZUNv bm5lY3RvclB0ciBwdHIpCiAJZHJtRnJlZShwdHIpOwogfQogCi12b2lkIGRybU1vZGVGcmVlRW5j b2Rlcihkcm1Nb2RlRW5jb2RlclB0ciBwdHIpCitkcm1fcHVibGljIHZvaWQgZHJtTW9kZUZyZWVF bmNvZGVyKGRybU1vZGVFbmNvZGVyUHRyIHB0cikKIHsKIAlkcm1GcmVlKHB0cik7CiB9CkBAIC0x NTAsNyArMTUxLDcgQEAgdm9pZCBkcm1Nb2RlRnJlZUVuY29kZXIoZHJtTW9kZUVuY29kZXJQdHIg cHRyKQogICogTW9kZVNldHRpbmcgZnVuY3Rpb25zLgogICovCiAKLWRybU1vZGVSZXNQdHIgZHJt TW9kZUdldFJlc291cmNlcyhpbnQgZmQpCitkcm1fcHVibGljIGRybU1vZGVSZXNQdHIgZHJtTW9k ZUdldFJlc291cmNlcyhpbnQgZmQpCiB7CiAJc3RydWN0IGRybV9tb2RlX2NhcmRfcmVzIHJlcywg Y291bnRzOwogCWRybU1vZGVSZXNQdHIgciA9IDA7CkBAIC0yNDQsOSArMjQ1LDEwIEBAIGVycl9h bGxvY3M6CiAJcmV0dXJuIHI7CiB9CiAKLWludCBkcm1Nb2RlQWRkRkIoaW50IGZkLCB1aW50MzJf dCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0LCB1aW50OF90IGRlcHRoLAotCQkgdWludDhfdCBicHAs IHVpbnQzMl90IHBpdGNoLCB1aW50MzJfdCBib19oYW5kbGUsCi0JCSB1aW50MzJfdCAqYnVmX2lk KQorCitkcm1fcHVibGljIGludCBkcm1Nb2RlQWRkRkIoaW50IGZkLCB1aW50MzJfdCB3aWR0aCwg dWludDMyX3QgaGVpZ2h0LCB1aW50OF90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVpbnQ4X3QgYnBwLCB1aW50MzJfdCBwaXRjaCwgdWludDMyX3QgYm9faGFuZGxlLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpidWZfaWQpCiB7CiAJc3RydWN0IGRy bV9tb2RlX2ZiX2NtZCBmOwogCWludCByZXQ7CkBAIC0yNjYsMTAgKzI2OCwxMCBAQCBpbnQgZHJt TW9kZUFkZEZCKGludCBmZCwgdWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCwgdWludDhf dCBkZXB0aCwKIAlyZXR1cm4gMDsKIH0KIAotaW50IGRybU1vZGVBZGRGQjJXaXRoTW9kaWZpZXJz KGludCBmZCwgdWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1aW50MzJfdCBwaXhlbF9mb3JtYXQsIGNvbnN0IHVpbnQzMl90IGJv X2hhbmRsZXNbNF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDMy X3QgcGl0Y2hlc1s0XSwgY29uc3QgdWludDMyX3Qgb2Zmc2V0c1s0XSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCB1aW50NjRfdCBtb2RpZmllcls0XSwgdWludDMyX3QgKmJ1 Zl9pZCwgdWludDMyX3QgZmxhZ3MpCitkcm1fcHVibGljIGludCBkcm1Nb2RlQWRkRkIyV2l0aE1v ZGlmaWVycyhpbnQgZmQsIHVpbnQzMl90IHdpZHRoLAorCQl1aW50MzJfdCBoZWlnaHQsIHVpbnQz Ml90IHBpeGVsX2Zvcm1hdCwgY29uc3QgdWludDMyX3QgYm9faGFuZGxlc1s0XSwKKwkJY29uc3Qg dWludDMyX3QgcGl0Y2hlc1s0XSwgY29uc3QgdWludDMyX3Qgb2Zmc2V0c1s0XSwKKwkJY29uc3Qg dWludDY0X3QgbW9kaWZpZXJbNF0sIHVpbnQzMl90ICpidWZfaWQsIHVpbnQzMl90IGZsYWdzKQog ewogCXN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyIGY7CiAJaW50IHJldDsKQEAgLTI5MiwxMCArMjk0 LDEwIEBAIGludCBkcm1Nb2RlQWRkRkIyV2l0aE1vZGlmaWVycyhpbnQgZmQsIHVpbnQzMl90IHdp ZHRoLCB1aW50MzJfdCBoZWlnaHQsCiAJcmV0dXJuIDA7CiB9CiAKLWludCBkcm1Nb2RlQWRkRkIy KGludCBmZCwgdWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCwKLSAgICAgICAgICAgICAg ICAgIHVpbnQzMl90IHBpeGVsX2Zvcm1hdCwgY29uc3QgdWludDMyX3QgYm9faGFuZGxlc1s0XSwK LSAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90IHBpdGNoZXNbNF0sIGNvbnN0IHVpbnQz Ml90IG9mZnNldHNbNF0sCi0gICAgICAgICAgICAgICAgICB1aW50MzJfdCAqYnVmX2lkLCB1aW50 MzJfdCBmbGFncykKK2RybV9wdWJsaWMgaW50IGRybU1vZGVBZGRGQjIoaW50IGZkLCB1aW50MzJf dCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0LAorCQl1aW50MzJfdCBwaXhlbF9mb3JtYXQsIGNvbnN0 IHVpbnQzMl90IGJvX2hhbmRsZXNbNF0sCisJCWNvbnN0IHVpbnQzMl90IHBpdGNoZXNbNF0sIGNv bnN0IHVpbnQzMl90IG9mZnNldHNbNF0sCisJCXVpbnQzMl90ICpidWZfaWQsIHVpbnQzMl90IGZs YWdzKQogewogCXJldHVybiBkcm1Nb2RlQWRkRkIyV2l0aE1vZGlmaWVycyhmZCwgd2lkdGgsIGhl aWdodCwKIAkJCQkJICBwaXhlbF9mb3JtYXQsIGJvX2hhbmRsZXMsCkBAIC0zMDMsMTIgKzMwNSwx MiBAQCBpbnQgZHJtTW9kZUFkZEZCMihpbnQgZmQsIHVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBo ZWlnaHQsCiAJCQkJCSAgYnVmX2lkLCBmbGFncyk7CiB9CiAKLWludCBkcm1Nb2RlUm1GQihpbnQg ZmQsIHVpbnQzMl90IGJ1ZmZlcklkKQorZHJtX3B1YmxpYyBpbnQgZHJtTW9kZVJtRkIoaW50IGZk LCB1aW50MzJfdCBidWZmZXJJZCkKIHsKIAlyZXR1cm4gRFJNX0lPQ1RMKGZkLCBEUk1fSU9DVExf TU9ERV9STUZCLCAmYnVmZmVySWQpOwogfQogCi1kcm1Nb2RlRkJQdHIgZHJtTW9kZUdldEZCKGlu dCBmZCwgdWludDMyX3QgYnVmKQorZHJtX3B1YmxpYyBkcm1Nb2RlRkJQdHIgZHJtTW9kZUdldEZC KGludCBmZCwgdWludDMyX3QgYnVmKQogewogCXN0cnVjdCBkcm1fbW9kZV9mYl9jbWQgaW5mbzsK IAlkcm1Nb2RlRkJQdHIgcjsKQEAgLTMzMyw3ICszMzUsNyBAQCBkcm1Nb2RlRkJQdHIgZHJtTW9k ZUdldEZCKGludCBmZCwgdWludDMyX3QgYnVmKQogCXJldHVybiByOwogfQogCi1pbnQgZHJtTW9k ZURpcnR5RkIoaW50IGZkLCB1aW50MzJfdCBidWZmZXJJZCwKK2RybV9wdWJsaWMgaW50IGRybU1v ZGVEaXJ0eUZCKGludCBmZCwgdWludDMyX3QgYnVmZmVySWQsCiAJCSAgIGRybU1vZGVDbGlwUHRy IGNsaXBzLCB1aW50MzJfdCBudW1fY2xpcHMpCiB7CiAJc3RydWN0IGRybV9tb2RlX2ZiX2RpcnR5 X2NtZCBkaXJ0eTsKQEAgLTM1MCw3ICszNTIsNyBAQCBpbnQgZHJtTW9kZURpcnR5RkIoaW50IGZk LCB1aW50MzJfdCBidWZmZXJJZCwKICAqIENydGMgZnVuY3Rpb25zCiAgKi8KIAotZHJtTW9kZUNy dGNQdHIgZHJtTW9kZUdldENydGMoaW50IGZkLCB1aW50MzJfdCBjcnRjSWQpCitkcm1fcHVibGlj IGRybU1vZGVDcnRjUHRyIGRybU1vZGVHZXRDcnRjKGludCBmZCwgdWludDMyX3QgY3J0Y0lkKQog ewogCXN0cnVjdCBkcm1fbW9kZV9jcnRjIGNydGM7CiAJZHJtTW9kZUNydGNQdHIgcjsKQEAgLTM4 Miw3ICszODQsNyBAQCBkcm1Nb2RlQ3J0Y1B0ciBkcm1Nb2RlR2V0Q3J0YyhpbnQgZmQsIHVpbnQz Ml90IGNydGNJZCkKIAlyZXR1cm4gcjsKIH0KIAotaW50IGRybU1vZGVTZXRDcnRjKGludCBmZCwg dWludDMyX3QgY3J0Y0lkLCB1aW50MzJfdCBidWZmZXJJZCwKK2RybV9wdWJsaWMgaW50IGRybU1v ZGVTZXRDcnRjKGludCBmZCwgdWludDMyX3QgY3J0Y0lkLCB1aW50MzJfdCBidWZmZXJJZCwKIAkJ ICAgdWludDMyX3QgeCwgdWludDMyX3QgeSwgdWludDMyX3QgKmNvbm5lY3RvcnMsIGludCBjb3Vu dCwKIAkJICAgZHJtTW9kZU1vZGVJbmZvUHRyIG1vZGUpCiB7CkBAIC00MDcsNyArNDA5LDggQEAg aW50IGRybU1vZGVTZXRDcnRjKGludCBmZCwgdWludDMyX3QgY3J0Y0lkLCB1aW50MzJfdCBidWZm ZXJJZCwKICAqIEN1cnNvciBtYW5pcHVsYXRpb24KICAqLwogCi1pbnQgZHJtTW9kZVNldEN1cnNv cihpbnQgZmQsIHVpbnQzMl90IGNydGNJZCwgdWludDMyX3QgYm9faGFuZGxlLCB1aW50MzJfdCB3 aWR0aCwgdWludDMyX3QgaGVpZ2h0KQorZHJtX3B1YmxpYyBpbnQgZHJtTW9kZVNldEN1cnNvcihp bnQgZmQsIHVpbnQzMl90IGNydGNJZCwgdWludDMyX3QgYm9faGFuZGxlLAorCQkJCQkJCQl1aW50 MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0KQogewogCXN0cnVjdCBkcm1fbW9kZV9jdXJzb3Ig YXJnOwogCkBAIC00MjEsNyArNDI0LDkgQEAgaW50IGRybU1vZGVTZXRDdXJzb3IoaW50IGZkLCB1 aW50MzJfdCBjcnRjSWQsIHVpbnQzMl90IGJvX2hhbmRsZSwgdWludDMyX3Qgd2lkdGgKIAlyZXR1 cm4gRFJNX0lPQ1RMKGZkLCBEUk1fSU9DVExfTU9ERV9DVVJTT1IsICZhcmcpOwogfQogCi1pbnQg ZHJtTW9kZVNldEN1cnNvcjIoaW50IGZkLCB1aW50MzJfdCBjcnRjSWQsIHVpbnQzMl90IGJvX2hh bmRsZSwgdWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCwgaW50MzJfdCBob3RfeCwgaW50 MzJfdCBob3RfeSkKK2RybV9wdWJsaWMgaW50IGRybU1vZGVTZXRDdXJzb3IyKGludCBmZCwgdWlu dDMyX3QgY3J0Y0lkLCB1aW50MzJfdCBib19oYW5kbGUsCisJCQkJCQkJCSB1aW50MzJfdCB3aWR0 aCwgdWludDMyX3QgaGVpZ2h0LCBpbnQzMl90IGhvdF94LAorCQkJCQkJCQkgaW50MzJfdCBob3Rf eSkKIHsKIAlzdHJ1Y3QgZHJtX21vZGVfY3Vyc29yMiBhcmc7CiAKQEAgLTQzNyw3ICs0NDIsNyBA QCBpbnQgZHJtTW9kZVNldEN1cnNvcjIoaW50IGZkLCB1aW50MzJfdCBjcnRjSWQsIHVpbnQzMl90 IGJvX2hhbmRsZSwgdWludDMyX3Qgd2lkdAogCXJldHVybiBEUk1fSU9DVEwoZmQsIERSTV9JT0NU TF9NT0RFX0NVUlNPUjIsICZhcmcpOwogfQogCi1pbnQgZHJtTW9kZU1vdmVDdXJzb3IoaW50IGZk LCB1aW50MzJfdCBjcnRjSWQsIGludCB4LCBpbnQgeSkKK2RybV9wdWJsaWMgaW50IGRybU1vZGVN b3ZlQ3Vyc29yKGludCBmZCwgdWludDMyX3QgY3J0Y0lkLCBpbnQgeCwgaW50IHkpCiB7CiAJc3Ry dWN0IGRybV9tb2RlX2N1cnNvciBhcmc7CiAKQEAgLTQ1Myw3ICs0NTgsNyBAQCBpbnQgZHJtTW9k ZU1vdmVDdXJzb3IoaW50IGZkLCB1aW50MzJfdCBjcnRjSWQsIGludCB4LCBpbnQgeSkKIC8qCiAg KiBFbmNvZGVyIGdldAogICovCi1kcm1Nb2RlRW5jb2RlclB0ciBkcm1Nb2RlR2V0RW5jb2Rlcihp bnQgZmQsIHVpbnQzMl90IGVuY29kZXJfaWQpCitkcm1fcHVibGljIGRybU1vZGVFbmNvZGVyUHRy IGRybU1vZGVHZXRFbmNvZGVyKGludCBmZCwgdWludDMyX3QgZW5jb2Rlcl9pZCkKIHsKIAlzdHJ1 Y3QgZHJtX21vZGVfZ2V0X2VuY29kZXIgZW5jOwogCWRybU1vZGVFbmNvZGVyUHRyIHIgPSBOVUxM OwpAQCAtNTg1LDE3ICs1OTAsMTcgQEAgZXJyX2FsbG9jczoKIAlyZXR1cm4gcjsKIH0KIAotZHJt TW9kZUNvbm5lY3RvclB0ciBkcm1Nb2RlR2V0Q29ubmVjdG9yKGludCBmZCwgdWludDMyX3QgY29u bmVjdG9yX2lkKQorZHJtX3B1YmxpYyBkcm1Nb2RlQ29ubmVjdG9yUHRyIGRybU1vZGVHZXRDb25u ZWN0b3IoaW50IGZkLCB1aW50MzJfdCBjb25uZWN0b3JfaWQpCiB7CiAJcmV0dXJuIF9kcm1Nb2Rl R2V0Q29ubmVjdG9yKGZkLCBjb25uZWN0b3JfaWQsIDEpOwogfQogCi1kcm1Nb2RlQ29ubmVjdG9y UHRyIGRybU1vZGVHZXRDb25uZWN0b3JDdXJyZW50KGludCBmZCwgdWludDMyX3QgY29ubmVjdG9y X2lkKQorZHJtX3B1YmxpYyBkcm1Nb2RlQ29ubmVjdG9yUHRyIGRybU1vZGVHZXRDb25uZWN0b3JD dXJyZW50KGludCBmZCwgdWludDMyX3QgY29ubmVjdG9yX2lkKQogewogCXJldHVybiBfZHJtTW9k ZUdldENvbm5lY3RvcihmZCwgY29ubmVjdG9yX2lkLCAwKTsKIH0KIAotaW50IGRybU1vZGVBdHRh Y2hNb2RlKGludCBmZCwgdWludDMyX3QgY29ubmVjdG9yX2lkLCBkcm1Nb2RlTW9kZUluZm9QdHIg bW9kZV9pbmZvKQorZHJtX3B1YmxpYyBpbnQgZHJtTW9kZUF0dGFjaE1vZGUoaW50IGZkLCB1aW50 MzJfdCBjb25uZWN0b3JfaWQsIGRybU1vZGVNb2RlSW5mb1B0ciBtb2RlX2luZm8pCiB7CiAJc3Ry dWN0IGRybV9tb2RlX21vZGVfY21kIHJlczsKIApAQCAtNjA2LDcgKzYxMSw3IEBAIGludCBkcm1N b2RlQXR0YWNoTW9kZShpbnQgZmQsIHVpbnQzMl90IGNvbm5lY3Rvcl9pZCwgZHJtTW9kZU1vZGVJ bmZvUHRyIG1vZGVfaW5mCiAJcmV0dXJuIERSTV9JT0NUTChmZCwgRFJNX0lPQ1RMX01PREVfQVRU QUNITU9ERSwgJnJlcyk7CiB9CiAKLWludCBkcm1Nb2RlRGV0YWNoTW9kZShpbnQgZmQsIHVpbnQz Ml90IGNvbm5lY3Rvcl9pZCwgZHJtTW9kZU1vZGVJbmZvUHRyIG1vZGVfaW5mbykKK2RybV9wdWJs aWMgaW50IGRybU1vZGVEZXRhY2hNb2RlKGludCBmZCwgdWludDMyX3QgY29ubmVjdG9yX2lkLCBk cm1Nb2RlTW9kZUluZm9QdHIgbW9kZV9pbmZvKQogewogCXN0cnVjdCBkcm1fbW9kZV9tb2RlX2Nt ZCByZXM7CiAKQEAgLTYxNyw3ICs2MjIsNyBAQCBpbnQgZHJtTW9kZURldGFjaE1vZGUoaW50IGZk LCB1aW50MzJfdCBjb25uZWN0b3JfaWQsIGRybU1vZGVNb2RlSW5mb1B0ciBtb2RlX2luZgogCXJl dHVybiBEUk1fSU9DVEwoZmQsIERSTV9JT0NUTF9NT0RFX0RFVEFDSE1PREUsICZyZXMpOwogfQog Ci1kcm1Nb2RlUHJvcGVydHlQdHIgZHJtTW9kZUdldFByb3BlcnR5KGludCBmZCwgdWludDMyX3Qg cHJvcGVydHlfaWQpCitkcm1fcHVibGljIGRybU1vZGVQcm9wZXJ0eVB0ciBkcm1Nb2RlR2V0UHJv cGVydHkoaW50IGZkLCB1aW50MzJfdCBwcm9wZXJ0eV9pZCkKIHsKIAlzdHJ1Y3QgZHJtX21vZGVf Z2V0X3Byb3BlcnR5IHByb3A7CiAJZHJtTW9kZVByb3BlcnR5UHRyIHI7CkBAIC02NzEsNyArNjc2 LDcgQEAgZXJyX2FsbG9jczoKIAlyZXR1cm4gcjsKIH0KIAotdm9pZCBkcm1Nb2RlRnJlZVByb3Bl cnR5KGRybU1vZGVQcm9wZXJ0eVB0ciBwdHIpCitkcm1fcHVibGljIHZvaWQgZHJtTW9kZUZyZWVQ cm9wZXJ0eShkcm1Nb2RlUHJvcGVydHlQdHIgcHRyKQogewogCWlmICghcHRyKQogCQlyZXR1cm47 CkBAIC02ODEsNyArNjg2LDggQEAgdm9pZCBkcm1Nb2RlRnJlZVByb3BlcnR5KGRybU1vZGVQcm9w ZXJ0eVB0ciBwdHIpCiAJZHJtRnJlZShwdHIpOwogfQogCi1kcm1Nb2RlUHJvcGVydHlCbG9iUHRy IGRybU1vZGVHZXRQcm9wZXJ0eUJsb2IoaW50IGZkLCB1aW50MzJfdCBibG9iX2lkKQorZHJtX3B1 YmxpYyBkcm1Nb2RlUHJvcGVydHlCbG9iUHRyIGRybU1vZGVHZXRQcm9wZXJ0eUJsb2IoaW50IGZk LAorCQkJCQkJCQkJCQkJCQkgdWludDMyX3QgYmxvYl9pZCkKIHsKIAlzdHJ1Y3QgZHJtX21vZGVf Z2V0X2Jsb2IgYmxvYjsKIAlkcm1Nb2RlUHJvcGVydHlCbG9iUHRyIHI7CkBAIC03MTIsNyArNzE4 LDcgQEAgZXJyX2FsbG9jczoKIAlyZXR1cm4gcjsKIH0KIAotdm9pZCBkcm1Nb2RlRnJlZVByb3Bl cnR5QmxvYihkcm1Nb2RlUHJvcGVydHlCbG9iUHRyIHB0cikKK2RybV9wdWJsaWMgdm9pZCBkcm1N b2RlRnJlZVByb3BlcnR5QmxvYihkcm1Nb2RlUHJvcGVydHlCbG9iUHRyIHB0cikKIHsKIAlpZiAo IXB0cikKIAkJcmV0dXJuOwpAQCAtNzIxLDggKzcyNyw5IEBAIHZvaWQgZHJtTW9kZUZyZWVQcm9w ZXJ0eUJsb2IoZHJtTW9kZVByb3BlcnR5QmxvYlB0ciBwdHIpCiAJZHJtRnJlZShwdHIpOwogfQog Ci1pbnQgZHJtTW9kZUNvbm5lY3RvclNldFByb3BlcnR5KGludCBmZCwgdWludDMyX3QgY29ubmVj dG9yX2lkLCB1aW50MzJfdCBwcm9wZXJ0eV9pZCwKLQkJCSAgICAgdWludDY0X3QgdmFsdWUpCitk cm1fcHVibGljIGludCBkcm1Nb2RlQ29ubmVjdG9yU2V0UHJvcGVydHkoaW50IGZkLCB1aW50MzJf dCBjb25uZWN0b3JfaWQsCisJCQkJCQkJCQkJICAgdWludDMyX3QgcHJvcGVydHlfaWQsCisJCQkJ CQkJCQkJICAgdWludDY0X3QgdmFsdWUpCiB7CiAJc3RydWN0IGRybV9tb2RlX2Nvbm5lY3Rvcl9z ZXRfcHJvcGVydHkgb3NwOwogCkBAIC03NDAsNyArNzQ3LDcgQEAgaW50IGRybU1vZGVDb25uZWN0 b3JTZXRQcm9wZXJ0eShpbnQgZmQsIHVpbnQzMl90IGNvbm5lY3Rvcl9pZCwgdWludDMyX3QgcHJv cGVydHkKICAqICAtRUlOVkFMIG9yIGludmFsaWQgYnVzIGlkCiAgKiAgLUVOT1NZUyBpZiBubyBt b2Rlc2V0dGluZyBzdXBwb3J0CiAqLwotaW50IGRybUNoZWNrTW9kZXNldHRpbmdTdXBwb3J0ZWQo Y29uc3QgY2hhciAqYnVzaWQpCitkcm1fcHVibGljIGludCBkcm1DaGVja01vZGVzZXR0aW5nU3Vw cG9ydGVkKGNvbnN0IGNoYXIgKmJ1c2lkKQogewogI2lmIGRlZmluZWQgKF9fbGludXhfXykKIAlj aGFyIHBjaV9kZXZfZGlyWzEwMjRdOwpAQCAtODQ4LDggKzg1NSw5IEBAIGludCBkcm1DaGVja01v ZGVzZXR0aW5nU3VwcG9ydGVkKGNvbnN0IGNoYXIgKmJ1c2lkKQogCXJldHVybiAtRU5PU1lTOwog fQogCi1pbnQgZHJtTW9kZUNydGNHZXRHYW1tYShpbnQgZmQsIHVpbnQzMl90IGNydGNfaWQsIHVp bnQzMl90IHNpemUsCi0JCQl1aW50MTZfdCAqcmVkLCB1aW50MTZfdCAqZ3JlZW4sIHVpbnQxNl90 ICpibHVlKQorZHJtX3B1YmxpYyBpbnQgZHJtTW9kZUNydGNHZXRHYW1tYShpbnQgZmQsIHVpbnQz Ml90IGNydGNfaWQsIHVpbnQzMl90IHNpemUsCisJCQkJCQkJCSAgIHVpbnQxNl90ICpyZWQsIHVp bnQxNl90ICpncmVlbiwKKwkJCQkJCQkJICAgdWludDE2X3QgKmJsdWUpCiB7CiAJc3RydWN0IGRy bV9tb2RlX2NydGNfbHV0IGw7CiAKQEAgLTg2Myw4ICs4NzEsOSBAQCBpbnQgZHJtTW9kZUNydGNH ZXRHYW1tYShpbnQgZmQsIHVpbnQzMl90IGNydGNfaWQsIHVpbnQzMl90IHNpemUsCiAJcmV0dXJu IERSTV9JT0NUTChmZCwgRFJNX0lPQ1RMX01PREVfR0VUR0FNTUEsICZsKTsKIH0KIAotaW50IGRy bU1vZGVDcnRjU2V0R2FtbWEoaW50IGZkLCB1aW50MzJfdCBjcnRjX2lkLCB1aW50MzJfdCBzaXpl LAotCQkJdWludDE2X3QgKnJlZCwgdWludDE2X3QgKmdyZWVuLCB1aW50MTZfdCAqYmx1ZSkKK2Ry bV9wdWJsaWMgaW50IGRybU1vZGVDcnRjU2V0R2FtbWEoaW50IGZkLCB1aW50MzJfdCBjcnRjX2lk LCB1aW50MzJfdCBzaXplLAorCQkJCQkJCQkgICB1aW50MTZfdCAqcmVkLCB1aW50MTZfdCAqZ3Jl ZW4sCisJCQkJCQkJCSAgIHVpbnQxNl90ICpibHVlKQogewogCXN0cnVjdCBkcm1fbW9kZV9jcnRj X2x1dCBsOwogCkBAIC04NzgsNyArODg3LDcgQEAgaW50IGRybU1vZGVDcnRjU2V0R2FtbWEoaW50 IGZkLCB1aW50MzJfdCBjcnRjX2lkLCB1aW50MzJfdCBzaXplLAogCXJldHVybiBEUk1fSU9DVEwo ZmQsIERSTV9JT0NUTF9NT0RFX1NFVEdBTU1BLCAmbCk7CiB9CiAKLWludCBkcm1IYW5kbGVFdmVu dChpbnQgZmQsIGRybUV2ZW50Q29udGV4dFB0ciBldmN0eCkKK2RybV9wdWJsaWMgaW50IGRybUhh bmRsZUV2ZW50KGludCBmZCwgZHJtRXZlbnRDb250ZXh0UHRyIGV2Y3R4KQogewogCWNoYXIgYnVm ZmVyWzEwMjRdOwogCWludCBsZW4sIGk7CkBAIC05NDYsNyArOTU1LDcgQEAgaW50IGRybUhhbmRs ZUV2ZW50KGludCBmZCwgZHJtRXZlbnRDb250ZXh0UHRyIGV2Y3R4KQogCXJldHVybiAwOwogfQog Ci1pbnQgZHJtTW9kZVBhZ2VGbGlwKGludCBmZCwgdWludDMyX3QgY3J0Y19pZCwgdWludDMyX3Qg ZmJfaWQsCitkcm1fcHVibGljIGludCBkcm1Nb2RlUGFnZUZsaXAoaW50IGZkLCB1aW50MzJfdCBj cnRjX2lkLCB1aW50MzJfdCBmYl9pZCwKIAkJICAgIHVpbnQzMl90IGZsYWdzLCB2b2lkICp1c2Vy X2RhdGEpCiB7CiAJc3RydWN0IGRybV9tb2RlX2NydGNfcGFnZV9mbGlwIGZsaXA7CkBAIC05NjAs NyArOTY5LDcgQEAgaW50IGRybU1vZGVQYWdlRmxpcChpbnQgZmQsIHVpbnQzMl90IGNydGNfaWQs IHVpbnQzMl90IGZiX2lkLAogCXJldHVybiBEUk1fSU9DVEwoZmQsIERSTV9JT0NUTF9NT0RFX1BB R0VfRkxJUCwgJmZsaXApOwogfQogCi1pbnQgZHJtTW9kZVBhZ2VGbGlwVGFyZ2V0KGludCBmZCwg dWludDMyX3QgY3J0Y19pZCwgdWludDMyX3QgZmJfaWQsCitkcm1fcHVibGljIGludCBkcm1Nb2Rl UGFnZUZsaXBUYXJnZXQoaW50IGZkLCB1aW50MzJfdCBjcnRjX2lkLCB1aW50MzJfdCBmYl9pZCwK IAkJCSAgdWludDMyX3QgZmxhZ3MsIHZvaWQgKnVzZXJfZGF0YSwKIAkJCSAgdWludDMyX3QgdGFy Z2V0X3ZibGFuaykKIHsKQEAgLTk3Niw3ICs5ODUsNyBAQCBpbnQgZHJtTW9kZVBhZ2VGbGlwVGFy Z2V0KGludCBmZCwgdWludDMyX3QgY3J0Y19pZCwgdWludDMyX3QgZmJfaWQsCiAJcmV0dXJuIERS TV9JT0NUTChmZCwgRFJNX0lPQ1RMX01PREVfUEFHRV9GTElQLCAmZmxpcF90YXJnZXQpOwogfQog Ci1pbnQgZHJtTW9kZVNldFBsYW5lKGludCBmZCwgdWludDMyX3QgcGxhbmVfaWQsIHVpbnQzMl90 IGNydGNfaWQsCitkcm1fcHVibGljIGludCBkcm1Nb2RlU2V0UGxhbmUoaW50IGZkLCB1aW50MzJf dCBwbGFuZV9pZCwgdWludDMyX3QgY3J0Y19pZCwKIAkJICAgIHVpbnQzMl90IGZiX2lkLCB1aW50 MzJfdCBmbGFncywKIAkJICAgIGludDMyX3QgY3J0Y194LCBpbnQzMl90IGNydGNfeSwKIAkJICAg IHVpbnQzMl90IGNydGNfdywgdWludDMyX3QgY3J0Y19oLApAQCAtMTAwMiw3ICsxMDExLDcgQEAg aW50IGRybU1vZGVTZXRQbGFuZShpbnQgZmQsIHVpbnQzMl90IHBsYW5lX2lkLCB1aW50MzJfdCBj cnRjX2lkLAogCXJldHVybiBEUk1fSU9DVEwoZmQsIERSTV9JT0NUTF9NT0RFX1NFVFBMQU5FLCAm cyk7CiB9CiAKLWRybU1vZGVQbGFuZVB0ciBkcm1Nb2RlR2V0UGxhbmUoaW50IGZkLCB1aW50MzJf dCBwbGFuZV9pZCkKK2RybV9wdWJsaWMgZHJtTW9kZVBsYW5lUHRyIGRybU1vZGVHZXRQbGFuZShp bnQgZmQsIHVpbnQzMl90IHBsYW5lX2lkKQogewogCXN0cnVjdCBkcm1fbW9kZV9nZXRfcGxhbmUg b3ZyLCBjb3VudHM7CiAJZHJtTW9kZVBsYW5lUHRyIHIgPSAwOwpAQCAtMTA1Myw3ICsxMDYyLDcg QEAgZXJyX2FsbG9jczoKIAlyZXR1cm4gcjsKIH0KIAotdm9pZCBkcm1Nb2RlRnJlZVBsYW5lKGRy bU1vZGVQbGFuZVB0ciBwdHIpCitkcm1fcHVibGljIHZvaWQgZHJtTW9kZUZyZWVQbGFuZShkcm1N b2RlUGxhbmVQdHIgcHRyKQogewogCWlmICghcHRyKQogCQlyZXR1cm47CkBAIC0xMDYyLDcgKzEw NzEsNyBAQCB2b2lkIGRybU1vZGVGcmVlUGxhbmUoZHJtTW9kZVBsYW5lUHRyIHB0cikKIAlkcm1G cmVlKHB0cik7CiB9CiAKLWRybU1vZGVQbGFuZVJlc1B0ciBkcm1Nb2RlR2V0UGxhbmVSZXNvdXJj ZXMoaW50IGZkKQorZHJtX3B1YmxpYyBkcm1Nb2RlUGxhbmVSZXNQdHIgZHJtTW9kZUdldFBsYW5l UmVzb3VyY2VzKGludCBmZCkKIHsKIAlzdHJ1Y3QgZHJtX21vZGVfZ2V0X3BsYW5lX3JlcyByZXMs IGNvdW50czsKIAlkcm1Nb2RlUGxhbmVSZXNQdHIgciA9IDA7CkBAIC0xMTA3LDcgKzExMTYsNyBA QCBlcnJfYWxsb2NzOgogCXJldHVybiByOwogfQogCi12b2lkIGRybU1vZGVGcmVlUGxhbmVSZXNv dXJjZXMoZHJtTW9kZVBsYW5lUmVzUHRyIHB0cikKK2RybV9wdWJsaWMgdm9pZCBkcm1Nb2RlRnJl ZVBsYW5lUmVzb3VyY2VzKGRybU1vZGVQbGFuZVJlc1B0ciBwdHIpCiB7CiAJaWYgKCFwdHIpCiAJ CXJldHVybjsKQEAgLTExMTYsNyArMTEyNSw3IEBAIHZvaWQgZHJtTW9kZUZyZWVQbGFuZVJlc291 cmNlcyhkcm1Nb2RlUGxhbmVSZXNQdHIgcHRyKQogCWRybUZyZWUocHRyKTsKIH0KIAotZHJtTW9k ZU9iamVjdFByb3BlcnRpZXNQdHIgZHJtTW9kZU9iamVjdEdldFByb3BlcnRpZXMoaW50IGZkLAor ZHJtX3B1YmxpYyBkcm1Nb2RlT2JqZWN0UHJvcGVydGllc1B0ciBkcm1Nb2RlT2JqZWN0R2V0UHJv cGVydGllcyhpbnQgZmQsCiAJCQkJCQkgICAgICB1aW50MzJfdCBvYmplY3RfaWQsCiAJCQkJCQkg ICAgICB1aW50MzJfdCBvYmplY3RfdHlwZSkKIHsKQEAgLTExNzcsNyArMTE4Niw3IEBAIGVycl9h bGxvY3M6CiAJcmV0dXJuIHJldDsKIH0KIAotdm9pZCBkcm1Nb2RlRnJlZU9iamVjdFByb3BlcnRp ZXMoZHJtTW9kZU9iamVjdFByb3BlcnRpZXNQdHIgcHRyKQorZHJtX3B1YmxpYyB2b2lkIGRybU1v ZGVGcmVlT2JqZWN0UHJvcGVydGllcyhkcm1Nb2RlT2JqZWN0UHJvcGVydGllc1B0ciBwdHIpCiB7 CiAJaWYgKCFwdHIpCiAJCXJldHVybjsKQEAgLTExODYsNyArMTE5NSw3IEBAIHZvaWQgZHJtTW9k ZUZyZWVPYmplY3RQcm9wZXJ0aWVzKGRybU1vZGVPYmplY3RQcm9wZXJ0aWVzUHRyIHB0cikKIAlk cm1GcmVlKHB0cik7CiB9CiAKLWludCBkcm1Nb2RlT2JqZWN0U2V0UHJvcGVydHkoaW50IGZkLCB1 aW50MzJfdCBvYmplY3RfaWQsIHVpbnQzMl90IG9iamVjdF90eXBlLAorZHJtX3B1YmxpYyBpbnQg ZHJtTW9kZU9iamVjdFNldFByb3BlcnR5KGludCBmZCwgdWludDMyX3Qgb2JqZWN0X2lkLCB1aW50 MzJfdCBvYmplY3RfdHlwZSwKIAkJCSAgICAgdWludDMyX3QgcHJvcGVydHlfaWQsIHVpbnQ2NF90 IHZhbHVlKQogewogCXN0cnVjdCBkcm1fbW9kZV9vYmpfc2V0X3Byb3BlcnR5IHByb3A7CkBAIC0x MjE0LDcgKzEyMjMsNyBAQCBzdHJ1Y3QgX2RybU1vZGVBdG9taWNSZXEgewogCWRybU1vZGVBdG9t aWNSZXFJdGVtUHRyIGl0ZW1zOwogfTsKIAotZHJtTW9kZUF0b21pY1JlcVB0ciBkcm1Nb2RlQXRv bWljQWxsb2Modm9pZCkKK2RybV9wdWJsaWMgZHJtTW9kZUF0b21pY1JlcVB0ciBkcm1Nb2RlQXRv bWljQWxsb2Modm9pZCkKIHsKIAlkcm1Nb2RlQXRvbWljUmVxUHRyIHJlcTsKIApAQCAtMTIyOSw3 ICsxMjM4LDcgQEAgZHJtTW9kZUF0b21pY1JlcVB0ciBkcm1Nb2RlQXRvbWljQWxsb2Modm9pZCkK IAlyZXR1cm4gcmVxOwogfQogCi1kcm1Nb2RlQXRvbWljUmVxUHRyIGRybU1vZGVBdG9taWNEdXBs aWNhdGUoZHJtTW9kZUF0b21pY1JlcVB0ciBvbGQpCitkcm1fcHVibGljIGRybU1vZGVBdG9taWNS ZXFQdHIgZHJtTW9kZUF0b21pY0R1cGxpY2F0ZShkcm1Nb2RlQXRvbWljUmVxUHRyIG9sZCkKIHsK IAlkcm1Nb2RlQXRvbWljUmVxUHRyIG5ldzsKIApAQCAtMTI1OCw3ICsxMjY3LDggQEAgZHJtTW9k ZUF0b21pY1JlcVB0ciBkcm1Nb2RlQXRvbWljRHVwbGljYXRlKGRybU1vZGVBdG9taWNSZXFQdHIg b2xkKQogCXJldHVybiBuZXc7CiB9CiAKLWludCBkcm1Nb2RlQXRvbWljTWVyZ2UoZHJtTW9kZUF0 b21pY1JlcVB0ciBiYXNlLCBkcm1Nb2RlQXRvbWljUmVxUHRyIGF1Z21lbnQpCitkcm1fcHVibGlj IGludCBkcm1Nb2RlQXRvbWljTWVyZ2UoZHJtTW9kZUF0b21pY1JlcVB0ciBiYXNlLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRybU1vZGVBdG9taWNSZXFQdHIgYXVnbWVudCkK IHsKIAlpZiAoIWJhc2UpCiAJCXJldHVybiAtRUlOVkFMOwpAQCAtMTI4NywyMyArMTI5NywyMyBA QCBpbnQgZHJtTW9kZUF0b21pY01lcmdlKGRybU1vZGVBdG9taWNSZXFQdHIgYmFzZSwgZHJtTW9k ZUF0b21pY1JlcVB0ciBhdWdtZW50KQogCXJldHVybiAwOwogfQogCi1pbnQgZHJtTW9kZUF0b21p Y0dldEN1cnNvcihkcm1Nb2RlQXRvbWljUmVxUHRyIHJlcSkKK2RybV9wdWJsaWMgaW50IGRybU1v ZGVBdG9taWNHZXRDdXJzb3IoZHJtTW9kZUF0b21pY1JlcVB0ciByZXEpCiB7CiAJaWYgKCFyZXEp CiAJCXJldHVybiAtRUlOVkFMOwogCXJldHVybiByZXEtPmN1cnNvcjsKIH0KIAotdm9pZCBkcm1N b2RlQXRvbWljU2V0Q3Vyc29yKGRybU1vZGVBdG9taWNSZXFQdHIgcmVxLCBpbnQgY3Vyc29yKQor ZHJtX3B1YmxpYyB2b2lkIGRybU1vZGVBdG9taWNTZXRDdXJzb3IoZHJtTW9kZUF0b21pY1JlcVB0 ciByZXEsIGludCBjdXJzb3IpCiB7CiAJaWYgKHJlcSkKIAkJcmVxLT5jdXJzb3IgPSBjdXJzb3I7 CiB9CiAKLWludCBkcm1Nb2RlQXRvbWljQWRkUHJvcGVydHkoZHJtTW9kZUF0b21pY1JlcVB0ciBy ZXEsCi0JCQkgICAgIHVpbnQzMl90IG9iamVjdF9pZCwKLQkJCSAgICAgdWludDMyX3QgcHJvcGVy dHlfaWQsCi0JCQkgICAgIHVpbnQ2NF90IHZhbHVlKQorZHJtX3B1YmxpYyBpbnQgZHJtTW9kZUF0 b21pY0FkZFByb3BlcnR5KGRybU1vZGVBdG9taWNSZXFQdHIgcmVxLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG9iamVjdF9pZCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBwcm9wZXJ0eV9pZCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCB2YWx1ZSkKIHsKIAlp ZiAoIXJlcSkKIAkJcmV0dXJuIC1FSU5WQUw7CkBAIC0xMzMxLDcgKzEzNDEsNyBAQCBpbnQgZHJt TW9kZUF0b21pY0FkZFByb3BlcnR5KGRybU1vZGVBdG9taWNSZXFQdHIgcmVxLAogCXJldHVybiBy ZXEtPmN1cnNvcjsKIH0KIAotdm9pZCBkcm1Nb2RlQXRvbWljRnJlZShkcm1Nb2RlQXRvbWljUmVx UHRyIHJlcSkKK2RybV9wdWJsaWMgdm9pZCBkcm1Nb2RlQXRvbWljRnJlZShkcm1Nb2RlQXRvbWlj UmVxUHRyIHJlcSkKIHsKIAlpZiAoIXJlcSkKIAkJcmV0dXJuOwpAQCAtMTM1NCw4ICsxMzY0LDgg QEAgc3RhdGljIGludCBzb3J0X3JlcV9saXN0KGNvbnN0IHZvaWQgKm1pc2MsIGNvbnN0IHZvaWQg Km90aGVyKQogCQlyZXR1cm4gc2Vjb25kLT5wcm9wZXJ0eV9pZCAtIGZpcnN0LT5wcm9wZXJ0eV9p ZDsKIH0KIAotaW50IGRybU1vZGVBdG9taWNDb21taXQoaW50IGZkLCBkcm1Nb2RlQXRvbWljUmVx UHRyIHJlcSwgdWludDMyX3QgZmxhZ3MsCi0JCQl2b2lkICp1c2VyX2RhdGEpCitkcm1fcHVibGlj IGludCBkcm1Nb2RlQXRvbWljQ29tbWl0KGludCBmZCwgZHJtTW9kZUF0b21pY1JlcVB0ciByZXEs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzLCB2b2lk ICp1c2VyX2RhdGEpCiB7CiAJZHJtTW9kZUF0b21pY1JlcVB0ciBzb3J0ZWQ7CiAJc3RydWN0IGRy bV9tb2RlX2F0b21pYyBhdG9taWM7CkBAIC0xNDU5LDggKzE0NjksOSBAQCBvdXQ6CiAJcmV0dXJu IHJldDsKIH0KIAotaW50Ci1kcm1Nb2RlQ3JlYXRlUHJvcGVydHlCbG9iKGludCBmZCwgY29uc3Qg dm9pZCAqZGF0YSwgc2l6ZV90IGxlbmd0aCwgdWludDMyX3QgKmlkKQorZHJtX3B1YmxpYyBpbnQK K2RybU1vZGVDcmVhdGVQcm9wZXJ0eUJsb2IoaW50IGZkLCBjb25zdCB2b2lkICpkYXRhLCBzaXpl X3QgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90 ICppZCkKIHsKIAlzdHJ1Y3QgZHJtX21vZGVfY3JlYXRlX2Jsb2IgY3JlYXRlOwogCWludCByZXQ7 CkBAIC0xNDgzLDcgKzE0OTQsNyBAQCBkcm1Nb2RlQ3JlYXRlUHJvcGVydHlCbG9iKGludCBmZCwg Y29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IGxlbmd0aCwgdWludDMyX3QgKmlkKQogCXJldHVybiAw OwogfQogCi1pbnQKK2RybV9wdWJsaWMgaW50CiBkcm1Nb2RlRGVzdHJveVByb3BlcnR5QmxvYihp bnQgZmQsIHVpbnQzMl90IGlkKQogewogCXN0cnVjdCBkcm1fbW9kZV9kZXN0cm95X2Jsb2IgZGVz dHJveTsKQEAgLTE0OTMsOCArMTUwNCw5IEBAIGRybU1vZGVEZXN0cm95UHJvcGVydHlCbG9iKGlu dCBmZCwgdWludDMyX3QgaWQpCiAJcmV0dXJuIERSTV9JT0NUTChmZCwgRFJNX0lPQ1RMX01PREVf REVTVFJPWVBST1BCTE9CLCAmZGVzdHJveSk7CiB9CiAKLWludAotZHJtTW9kZUNyZWF0ZUxlYXNl KGludCBmZCwgY29uc3QgdWludDMyX3QgKm9iamVjdHMsIGludCBudW1fb2JqZWN0cywgaW50IGZs YWdzLCB1aW50MzJfdCAqbGVzc2VlX2lkKQorZHJtX3B1YmxpYyBpbnQKK2RybU1vZGVDcmVhdGVM ZWFzZShpbnQgZmQsIGNvbnN0IHVpbnQzMl90ICpvYmplY3RzLCBpbnQgbnVtX29iamVjdHMsIGlu dCBmbGFncywKKyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqbGVzc2VlX2lkKQogewogCXN0 cnVjdCBkcm1fbW9kZV9jcmVhdGVfbGVhc2UgY3JlYXRlOwogCWludCByZXQ7CkBAIC0xNTEyLDcg KzE1MjQsNyBAQCBkcm1Nb2RlQ3JlYXRlTGVhc2UoaW50IGZkLCBjb25zdCB1aW50MzJfdCAqb2Jq ZWN0cywgaW50IG51bV9vYmplY3RzLCBpbnQgZmxhZ3MsCiAJcmV0dXJuIC1lcnJubzsKIH0KIAot ZHJtTW9kZUxlc3NlZUxpc3RQdHIKK2RybV9wdWJsaWMgZHJtTW9kZUxlc3NlZUxpc3RQdHIKIGRy bU1vZGVMaXN0TGVzc2VlcyhpbnQgZmQpCiB7CiAJc3RydWN0IGRybV9tb2RlX2xpc3RfbGVzc2Vl cyBsaXN0OwpAQCAtMTUzOSw3ICsxNTUxLDcgQEAgZHJtTW9kZUxpc3RMZXNzZWVzKGludCBmZCkK IAlyZXR1cm4gcmV0OwogfQogCi1kcm1Nb2RlT2JqZWN0TGlzdFB0cgorZHJtX3B1YmxpYyBkcm1N b2RlT2JqZWN0TGlzdFB0cgogZHJtTW9kZUdldExlYXNlKGludCBmZCkKIHsKIAlzdHJ1Y3QgZHJt X21vZGVfZ2V0X2xlYXNlIGdldDsKQEAgLTE1NjYsNyArMTU3OCw3IEBAIGRybU1vZGVHZXRMZWFz ZShpbnQgZmQpCiAJcmV0dXJuIHJldDsKIH0KIAotaW50Citkcm1fcHVibGljIGludAogZHJtTW9k ZVJldm9rZUxlYXNlKGludCBmZCwgdWludDMyX3QgbGVzc2VlX2lkKQogewogCXN0cnVjdCBkcm1f bW9kZV9yZXZva2VfbGVhc2UgcmV2b2tlOwpkaWZmIC0tZ2l0IGEveGY4NmRybVJhbmRvbS5jIGIv eGY4NmRybVJhbmRvbS5jCmluZGV4IDgxZjAzMDE0Li41MWU5Njc2ZiAxMDA2NDQKLS0tIGEveGY4 NmRybVJhbmRvbS5jCisrKyBiL3hmODZkcm1SYW5kb20uYwpAQCAtNzQsMTIgKzc0LDEzIEBACiAj aW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KIAorI2luY2x1ZGUgImxpYmRy bV9tYWNyb3MuaCIKICNpbmNsdWRlICJ4Zjg2ZHJtLmgiCiAjaW5jbHVkZSAieGY4NmRybVJhbmRv bS5oIgogCiAjZGVmaW5lIFJBTkRPTV9NQUdJQyAweGZlZWRiZWVmCiAKLXZvaWQgKmRybVJhbmRv bUNyZWF0ZSh1bnNpZ25lZCBsb25nIHNlZWQpCitkcm1fcHVibGljIHZvaWQgKmRybVJhbmRvbUNy ZWF0ZSh1bnNpZ25lZCBsb25nIHNlZWQpCiB7CiAgICAgUmFuZG9tU3RhdGUgICpzdGF0ZTsKIApA QCAtMTA5LDEzICsxMTAsMTMgQEAgdm9pZCAqZHJtUmFuZG9tQ3JlYXRlKHVuc2lnbmVkIGxvbmcg c2VlZCkKICAgICByZXR1cm4gc3RhdGU7CiB9CiAKLWludCBkcm1SYW5kb21EZXN0cm95KHZvaWQg KnN0YXRlKQorZHJtX3B1YmxpYyBpbnQgZHJtUmFuZG9tRGVzdHJveSh2b2lkICpzdGF0ZSkKIHsK ICAgICBkcm1GcmVlKHN0YXRlKTsKICAgICByZXR1cm4gMDsKIH0KIAotdW5zaWduZWQgbG9uZyBk cm1SYW5kb20odm9pZCAqc3RhdGUpCitkcm1fcHVibGljIHVuc2lnbmVkIGxvbmcgZHJtUmFuZG9t KHZvaWQgKnN0YXRlKQogewogICAgIFJhbmRvbVN0YXRlICAgKnMgPSAoUmFuZG9tU3RhdGUgKilz dGF0ZTsKICAgICB1bnNpZ25lZCBsb25nIGhpOwpAQCAtMTI5LDcgKzEzMCw3IEBAIHVuc2lnbmVk IGxvbmcgZHJtUmFuZG9tKHZvaWQgKnN0YXRlKQogICAgIHJldHVybiBzLT5zZWVkOwogfQogCi1k b3VibGUgZHJtUmFuZG9tRG91YmxlKHZvaWQgKnN0YXRlKQorZHJtX3B1YmxpYyBkb3VibGUgZHJt UmFuZG9tRG91YmxlKHZvaWQgKnN0YXRlKQogewogICAgIFJhbmRvbVN0YXRlICpzID0gKFJhbmRv bVN0YXRlICopc3RhdGU7CiAgICAgCmRpZmYgLS1naXQgYS94Zjg2ZHJtU0wuYyBiL3hmODZkcm1T TC5jCmluZGV4IGExMmZhMWQwLi4zODI2ZGY5NyAxMDA2NDQKLS0tIGEveGY4NmRybVNMLmMKKysr IGIveGY4NmRybVNMLmMKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDxzdGRpby5oPgogI2lu Y2x1ZGUgPHN0ZGxpYi5oPgogCisjaW5jbHVkZSAibGliZHJtX21hY3Jvcy5oIgogI2luY2x1ZGUg InhmODZkcm0uaCIKIAogI2RlZmluZSBTTF9MSVNUX01BR0lDICAweGZhY2FkZTAwTFUKQEAgLTk3 LDcgKzk4LDcgQEAgc3RhdGljIGludCBTTFJhbmRvbUxldmVsKHZvaWQpCiAgICAgcmV0dXJuIGxl dmVsOwogfQogCi12b2lkICpkcm1TTENyZWF0ZSh2b2lkKQorZHJtX3B1YmxpYyB2b2lkICpkcm1T TENyZWF0ZSh2b2lkKQogewogICAgIFNraXBMaXN0UHRyICBsaXN0OwogICAgIGludCAgICAgICAg ICBpOwpAQCAtMTE0LDcgKzExNSw3IEBAIHZvaWQgKmRybVNMQ3JlYXRlKHZvaWQpCiAgICAgcmV0 dXJuIGxpc3Q7CiB9CiAKLWludCBkcm1TTERlc3Ryb3kodm9pZCAqbCkKK2RybV9wdWJsaWMgaW50 IGRybVNMRGVzdHJveSh2b2lkICpsKQogewogICAgIFNraXBMaXN0UHRyICAgbGlzdCAgPSAoU2tp cExpc3RQdHIpbDsKICAgICBTTEVudHJ5UHRyICAgIGVudHJ5OwpAQCAtMTUxLDcgKzE1Miw3IEBA IHN0YXRpYyBTTEVudHJ5UHRyIFNMTG9jYXRlKHZvaWQgKmwsIHVuc2lnbmVkIGxvbmcga2V5LCBT TEVudHJ5UHRyICp1cGRhdGUpCiAgICAgcmV0dXJuIGVudHJ5LT5mb3J3YXJkWzBdOwogfQogCi1p bnQgZHJtU0xJbnNlcnQodm9pZCAqbCwgdW5zaWduZWQgbG9uZyBrZXksIHZvaWQgKnZhbHVlKQor ZHJtX3B1YmxpYyBpbnQgZHJtU0xJbnNlcnQodm9pZCAqbCwgdW5zaWduZWQgbG9uZyBrZXksIHZv aWQgKnZhbHVlKQogewogICAgIFNraXBMaXN0UHRyICAgbGlzdCAgPSAoU2tpcExpc3RQdHIpbDsK ICAgICBTTEVudHJ5UHRyICAgIGVudHJ5OwpAQCAtMTg0LDcgKzE4NSw3IEBAIGludCBkcm1TTElu c2VydCh2b2lkICpsLCB1bnNpZ25lZCBsb25nIGtleSwgdm9pZCAqdmFsdWUpCiAgICAgcmV0dXJu IDA7CQkJLyogQWRkZWQgdG8gdGFibGUgKi8KIH0KIAotaW50IGRybVNMRGVsZXRlKHZvaWQgKmws IHVuc2lnbmVkIGxvbmcga2V5KQorZHJtX3B1YmxpYyBpbnQgZHJtU0xEZWxldGUodm9pZCAqbCwg dW5zaWduZWQgbG9uZyBrZXkpCiB7CiAgICAgU2tpcExpc3RQdHIgICBsaXN0ID0gKFNraXBMaXN0 UHRyKWw7CiAgICAgU0xFbnRyeVB0ciAgICB1cGRhdGVbU0xfTUFYX0xFVkVMICsgMV07CkBAIC0y MTEsNyArMjEyLDcgQEAgaW50IGRybVNMRGVsZXRlKHZvaWQgKmwsIHVuc2lnbmVkIGxvbmcga2V5 KQogICAgIHJldHVybiAwOwogfQogCi1pbnQgZHJtU0xMb29rdXAodm9pZCAqbCwgdW5zaWduZWQg bG9uZyBrZXksIHZvaWQgKip2YWx1ZSkKK2RybV9wdWJsaWMgaW50IGRybVNMTG9va3VwKHZvaWQg KmwsIHVuc2lnbmVkIGxvbmcga2V5LCB2b2lkICoqdmFsdWUpCiB7CiAgICAgU2tpcExpc3RQdHIg ICBsaXN0ID0gKFNraXBMaXN0UHRyKWw7CiAgICAgU0xFbnRyeVB0ciAgICB1cGRhdGVbU0xfTUFY X0xFVkVMICsgMV07CkBAIC0yMjcsOSArMjI4LDkgQEAgaW50IGRybVNMTG9va3VwKHZvaWQgKmws IHVuc2lnbmVkIGxvbmcga2V5LCB2b2lkICoqdmFsdWUpCiAgICAgcmV0dXJuIC0xOwogfQogCi1p bnQgZHJtU0xMb29rdXBOZWlnaGJvcnModm9pZCAqbCwgdW5zaWduZWQgbG9uZyBrZXksCi0JCQkg dW5zaWduZWQgbG9uZyAqcHJldl9rZXksIHZvaWQgKipwcmV2X3ZhbHVlLAotCQkJIHVuc2lnbmVk IGxvbmcgKm5leHRfa2V5LCB2b2lkICoqbmV4dF92YWx1ZSkKK2RybV9wdWJsaWMgaW50IGRybVNM TG9va3VwTmVpZ2hib3JzKHZvaWQgKmwsIHVuc2lnbmVkIGxvbmcga2V5LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqcHJldl9rZXksIHZvaWQgKipw cmV2X3ZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg bG9uZyAqbmV4dF9rZXksIHZvaWQgKipuZXh0X3ZhbHVlKQogewogICAgIFNraXBMaXN0UHRyICAg bGlzdCA9IChTa2lwTGlzdFB0cilsOwogICAgIFNMRW50cnlQdHIgICAgdXBkYXRlW1NMX01BWF9M RVZFTCArIDFdID0gezB9OwpAQCAtMjUzLDcgKzI1NCw3IEBAIGludCBkcm1TTExvb2t1cE5laWdo Ym9ycyh2b2lkICpsLCB1bnNpZ25lZCBsb25nIGtleSwKICAgICByZXR1cm4gcmV0Y29kZTsKIH0K IAotaW50IGRybVNMTmV4dCh2b2lkICpsLCB1bnNpZ25lZCBsb25nICprZXksIHZvaWQgKip2YWx1 ZSkKK2RybV9wdWJsaWMgaW50IGRybVNMTmV4dCh2b2lkICpsLCB1bnNpZ25lZCBsb25nICprZXks IHZvaWQgKip2YWx1ZSkKIHsKICAgICBTa2lwTGlzdFB0ciAgIGxpc3QgPSAoU2tpcExpc3RQdHIp bDsKICAgICBTTEVudHJ5UHRyICAgIGVudHJ5OwpAQCAtMjcyLDcgKzI3Myw3IEBAIGludCBkcm1T TE5leHQodm9pZCAqbCwgdW5zaWduZWQgbG9uZyAqa2V5LCB2b2lkICoqdmFsdWUpCiAgICAgcmV0 dXJuIDA7CiB9CiAKLWludCBkcm1TTEZpcnN0KHZvaWQgKmwsIHVuc2lnbmVkIGxvbmcgKmtleSwg dm9pZCAqKnZhbHVlKQorZHJtX3B1YmxpYyBpbnQgZHJtU0xGaXJzdCh2b2lkICpsLCB1bnNpZ25l ZCBsb25nICprZXksIHZvaWQgKip2YWx1ZSkKIHsKICAgICBTa2lwTGlzdFB0ciAgIGxpc3QgPSAo U2tpcExpc3RQdHIpbDsKICAgICAKQEAgLTI4Myw3ICsyODQsNyBAQCBpbnQgZHJtU0xGaXJzdCh2 b2lkICpsLCB1bnNpZ25lZCBsb25nICprZXksIHZvaWQgKip2YWx1ZSkKIH0KIAogLyogRHVtcCBp bnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMgZm9yIGRlYnVnZ2luZy4gKi8KLXZvaWQgZHJtU0xEdW1w KHZvaWQgKmwpCitkcm1fcHVibGljIHZvaWQgZHJtU0xEdW1wKHZvaWQgKmwpCiB7CiAgICAgU2tp cExpc3RQdHIgICBsaXN0ID0gKFNraXBMaXN0UHRyKWw7CiAgICAgU0xFbnRyeVB0ciAgICBlbnRy eTsKLS0gCjIuMTcuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRl dmVsCg==