From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 6D27B4317E for ; Sat, 22 Oct 2022 10:34:35 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E9A6368BE94; Sat, 22 Oct 2022 13:34:23 +0300 (EEST) Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0FDF768BDAF for ; Sat, 22 Oct 2022 13:34:16 +0300 (EEST) Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id A93EC2404F5 for ; Sat, 22 Oct 2022 12:34:15 +0200 (CEST) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id Z0mb7hQDXwe9 for ; Sat, 22 Oct 2022 12:34:13 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id 3A6BD2404F7 for ; Sat, 22 Oct 2022 12:34:13 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id 332353A13E9 for ; Sat, 22 Oct 2022 12:34:04 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Sat, 22 Oct 2022 12:32:57 +0200 Message-Id: <20221022103257.15463-4-anton@khirnov.net> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20221022103257.15463-1-anton@khirnov.net> References: <20221022103257.15463-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v4 4/4] lavc/get_bits: add a compat wrapper for the cached bitstream reader X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: VXNlIHRoYXQgaW5zdGVhZCBvZiB0aGUgbWVyZ2VkIHZlcnNpb24uCi0tLQogbGliYXZjb2RlYy9n ZXRfYml0cy5oIHwgMzA5ICsrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogMSBmaWxlIGNoYW5nZWQsIDYyIGluc2VydGlvbnMoKyksIDI0NyBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9saWJhdmNvZGVjL2dldF9iaXRzLmggYi9saWJhdmNvZGVjL2dldF9iaXRzLmgK aW5kZXggOTkyNzY1ZGM5Mi4uYTUwNDY5YjQyNyAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9nZXRf Yml0cy5oCisrKyBiL2xpYmF2Y29kZWMvZ2V0X2JpdHMuaApAQCAtMSw2ICsxLDUgQEAKIC8qCiAg KiBDb3B5cmlnaHQgKGMpIDIwMDQgTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5h dD4KLSAqIENvcHlyaWdodCAoYykgMjAxNiBBbGV4YW5kcmEgSMOhamtvdsOhCiAgKgogICogVGhp cyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgogICoKQEAgLTU4LDEyICs1Nyw1NSBAQAogI2RlZmlu ZSBDQUNIRURfQklUU1RSRUFNX1JFQURFUiAwCiAjZW5kaWYKIAotdHlwZWRlZiBzdHJ1Y3QgR2V0 Qml0Q29udGV4dCB7Ci0gICAgY29uc3QgdWludDhfdCAqYnVmZmVyLCAqYnVmZmVyX2VuZDsKICNp ZiBDQUNIRURfQklUU1RSRUFNX1JFQURFUgotICAgIHVpbnQ2NF90IGNhY2hlOwotICAgIHVuc2ln bmVkIGJpdHNfbGVmdDsKKworLy8gd2UgYWx3YXlzIHdhbnQgdGhlIExFIGltcGxlbWVudGF0aW9u LCB0byBwcm92aWRlIGdldF9iaXRzX2xlKCkKKyNkZWZpbmUgQklUU1RSRUFNX0xFCisKKyNpZm5k ZWYgQklUU1RSRUFNX1JFQURFUl9MRQorIyBkZWZpbmUgQklUU1RSRUFNX0JFCisjIGRlZmluZSBC SVRTVFJFQU1fREVGQVVMVF9CRQogI2VuZGlmCisKKyNpbmNsdWRlICJiaXRzdHJlYW0uaCIKKwor I3VuZGVmIEJJVFNUUkVBTV9MRQorI3VuZGVmIEJJVFNUUkVBTV9CRQorI3VuZGVmIEJJVFNUUkVB TV9ERUZBVUxUX0JFCisKK3R5cGVkZWYgQml0c3RyZWFtQ29udGV4dCBHZXRCaXRDb250ZXh0Owor CisjZGVmaW5lIGdldF9iaXRzX2NvdW50ICAgICAgYml0c190ZWxsCisjZGVmaW5lIGdldF9iaXRz X2xlZnQgICAgICAgYml0c19sZWZ0CisjZGVmaW5lIHNraXBfYml0c19sb25nICAgICAgYml0c19z a2lwCisjZGVmaW5lIHNraXBfYml0cyAgICAgICAgICAgYml0c19za2lwCisjZGVmaW5lIGdldF9i aXRzICAgICAgICAgICAgYml0c19yZWFkX256CisjZGVmaW5lIGdldF9iaXRzeiAgICAgICAgICAg Yml0c19yZWFkCisjZGVmaW5lIGdldF9iaXRzX2xvbmcgICAgICAgYml0c19yZWFkCisjZGVmaW5l IGdldF9iaXRzMSAgICAgICAgICAgYml0c19yZWFkX2JpdAorI2RlZmluZSBnZXRfYml0czY0ICAg ICAgICAgIGJpdHNfcmVhZF82NAorI2RlZmluZSBnZXRfeGJpdHMgICAgICAgICAgIGJpdHNfcmVh ZF94Yml0cworI2RlZmluZSBnZXRfc2JpdHMgICAgICAgICAgIGJpdHNfcmVhZF9zaWduZWQKKyNk ZWZpbmUgZ2V0X3NiaXRzX2xvbmcgICAgICBiaXRzX3JlYWRfc2lnbmVkCisjZGVmaW5lIHNob3df Yml0cyAgICAgICAgICAgYml0c19wZWVrCisjZGVmaW5lIHNob3dfYml0c19sb25nICAgICAgYml0 c19wZWVrCisjZGVmaW5lIGluaXRfZ2V0X2JpdHMgICAgICAgYml0c19pbml0CisjZGVmaW5lIGlu aXRfZ2V0X2JpdHM4ICAgICAgYml0c19pbml0OAorI2RlZmluZSBhbGlnbl9nZXRfYml0cyAgICAg IGJpdHNfYWxpZ24KKyNkZWZpbmUgZ2V0X3ZsYzIgICAgICAgICAgICBiaXRzX3JlYWRfdmxjCisK KyNkZWZpbmUgaW5pdF9nZXRfYml0czhfbGUocywgYnVmZmVyLCBieXRlX3NpemUpIGJpdHNfaW5p dDhfbGUoKEJpdHN0cmVhbUNvbnRleHRMRSopcywgYnVmZmVyLCBieXRlX3NpemUpCisjZGVmaW5l IGdldF9iaXRzX2xlKHMsIG4pICAgICAgICAgICAgICAgICAgICAgICBiaXRzX3JlYWRfbGUoKEJp dHN0cmVhbUNvbnRleHRMRSopcywgbikKKworI2RlZmluZSBzaG93X2JpdHMxKHMpICAgICAgIGJp dHNfcGVlayhzLCAxKQorI2RlZmluZSBza2lwX2JpdHMxKHMpICAgICAgIGJpdHNfc2tpcChzLCAx KQorCisjZGVmaW5lIHNraXBfMXN0b3BfOGRhdGFfYml0cyBiaXRzX3NraXBfMXN0b3BfOGRhdGEK KworI2Vsc2UgICAvLyBDQUNIRURfQklUU1RSRUFNX1JFQURFUgorCit0eXBlZGVmIHN0cnVjdCBH ZXRCaXRDb250ZXh0IHsKKyAgICBjb25zdCB1aW50OF90ICpidWZmZXIsICpidWZmZXJfZW5kOwog ICAgIGludCBpbmRleDsKICAgICBpbnQgc2l6ZV9pbl9iaXRzOwogICAgIGludCBzaXplX2luX2Jp dHNfcGx1czg7CkBAIC0xMjAsMTYgKzE2MiwxMiBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGlu dCBzaG93X2JpdHMoR2V0Qml0Q29udGV4dCAqcywgaW50IG4pOwogICogRm9yIGV4YW1wbGVzIHNl ZSBnZXRfYml0cywgc2hvd19iaXRzLCBza2lwX2JpdHMsIGdldF92bGMuCiAgKi8KIAotI2lmIENB Q0hFRF9CSVRTVFJFQU1fUkVBREVSCi0jICAgZGVmaW5lIE1JTl9DQUNIRV9CSVRTIDY0Ci0jZWxp ZiBkZWZpbmVkIExPTkdfQklUU1RSRUFNX1JFQURFUgorI2lmIGRlZmluZWQgTE9OR19CSVRTVFJF QU1fUkVBREVSCiAjICAgZGVmaW5lIE1JTl9DQUNIRV9CSVRTIDMyCiAjZWxzZQogIyAgIGRlZmlu ZSBNSU5fQ0FDSEVfQklUUyAyNQogI2VuZGlmCiAKLSNpZiAhQ0FDSEVEX0JJVFNUUkVBTV9SRUFE RVIKLQogI2RlZmluZSBPUEVOX1JFQURFUl9OT1NJWkUobmFtZSwgZ2IpICAgICAgICAgICAgXAog ICAgIHVuc2lnbmVkIGludCBuYW1lICMjIF9pbmRleCA9IChnYiktPmluZGV4OyAgXAogICAgIHVu c2lnbmVkIGludCBhdl91bnVzZWQgbmFtZSAjIyBfY2FjaGUKQEAgLTIxNCw3MyArMjUyLDEyIEBA IHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHNob3dfYml0cyhHZXRCaXRDb250ZXh0ICpzLCBp bnQgbik7CiAKICNkZWZpbmUgR0VUX0NBQ0hFKG5hbWUsIGdiKSAoKHVpbnQzMl90KSBuYW1lICMj IF9jYWNoZSkKIAotI2VuZGlmCiAKIHN0YXRpYyBpbmxpbmUgaW50IGdldF9iaXRzX2NvdW50KGNv bnN0IEdldEJpdENvbnRleHQgKnMpCiB7Ci0jaWYgQ0FDSEVEX0JJVFNUUkVBTV9SRUFERVIKLSAg ICByZXR1cm4gcy0+aW5kZXggLSBzLT5iaXRzX2xlZnQ7Ci0jZWxzZQogICAgIHJldHVybiBzLT5p bmRleDsKLSNlbmRpZgotfQotCi0jaWYgQ0FDSEVEX0JJVFNUUkVBTV9SRUFERVIKLXN0YXRpYyBp bmxpbmUgdm9pZCByZWZpbGxfMzIoR2V0Qml0Q29udGV4dCAqcywgaW50IGlzX2xlKQotewotI2lm ICFVTkNIRUNLRURfQklUU1RSRUFNX1JFQURFUgotICAgIGlmIChzLT5pbmRleCA+PiAzID49IHMt PmJ1ZmZlcl9lbmQgLSBzLT5idWZmZXIpCi0gICAgICAgIHJldHVybjsKLSNlbmRpZgotCi0gICAg aWYgKGlzX2xlKQotICAgICAgICBzLT5jYWNoZSA9ICh1aW50NjRfdClBVl9STDMyKHMtPmJ1ZmZl ciArIChzLT5pbmRleCA+PiAzKSkgPDwgcy0+Yml0c19sZWZ0IHwgcy0+Y2FjaGU7Ci0gICAgZWxz ZQotICAgICAgICBzLT5jYWNoZSA9IHMtPmNhY2hlIHwgKHVpbnQ2NF90KUFWX1JCMzIocy0+YnVm ZmVyICsgKHMtPmluZGV4ID4+IDMpKSA8PCAoMzIgLSBzLT5iaXRzX2xlZnQpOwotICAgIHMtPmlu ZGV4ICAgICArPSAzMjsKLSAgICBzLT5iaXRzX2xlZnQgKz0gMzI7Ci19Ci0KLXN0YXRpYyBpbmxp bmUgdm9pZCByZWZpbGxfNjQoR2V0Qml0Q29udGV4dCAqcywgaW50IGlzX2xlKQotewotI2lmICFV TkNIRUNLRURfQklUU1RSRUFNX1JFQURFUgotICAgIGlmIChzLT5pbmRleCA+PiAzID49IHMtPmJ1 ZmZlcl9lbmQgLSBzLT5idWZmZXIpCi0gICAgICAgIHJldHVybjsKLSNlbmRpZgotCi0gICAgaWYg KGlzX2xlKQotICAgICAgICBzLT5jYWNoZSA9IEFWX1JMNjQocy0+YnVmZmVyICsgKHMtPmluZGV4 ID4+IDMpKTsKLSAgICBlbHNlCi0gICAgICAgIHMtPmNhY2hlID0gQVZfUkI2NChzLT5idWZmZXIg KyAocy0+aW5kZXggPj4gMykpOwotICAgIHMtPmluZGV4ICs9IDY0OwotICAgIHMtPmJpdHNfbGVm dCA9IDY0OwogfQogCi1zdGF0aWMgaW5saW5lIHVpbnQ2NF90IGdldF92YWwoR2V0Qml0Q29udGV4 dCAqcywgdW5zaWduZWQgbiwgaW50IGlzX2xlKQotewotICAgIHVpbnQ2NF90IHJldDsKLSAgICBh dl9hc3NlcnQyKG4+MCAmJiBuPD02Myk7Ci0gICAgaWYgKGlzX2xlKSB7Ci0gICAgICAgIHJldCA9 IHMtPmNhY2hlICYgKChVSU5UNjRfQygxKSA8PCBuKSAtIDEpOwotICAgICAgICBzLT5jYWNoZSA+ Pj0gbjsKLSAgICB9IGVsc2UgewotICAgICAgICByZXQgPSBzLT5jYWNoZSA+PiAoNjQgLSBuKTsK LSAgICAgICAgcy0+Y2FjaGUgPDw9IG47Ci0gICAgfQotICAgIHMtPmJpdHNfbGVmdCAtPSBuOwot ICAgIHJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgc2hvd192YWwoY29u c3QgR2V0Qml0Q29udGV4dCAqcywgdW5zaWduZWQgbikKLXsKLSNpZmRlZiBCSVRTVFJFQU1fUkVB REVSX0xFCi0gICAgcmV0dXJuIHMtPmNhY2hlICYgKChVSU5UNjRfQygxKSA8PCBuKSAtIDEpOwot I2Vsc2UKLSAgICByZXR1cm4gcy0+Y2FjaGUgPj4gKDY0IC0gbik7Ci0jZW5kaWYKLX0KLSNlbmRp ZgotCiAvKioKICAqIFNraXBzIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGJpdHMuCiAgKiBAcGFy YW0gbiB0aGUgbnVtYmVyIG9mIGJpdHMgdG8gc2tpcCwKQEAgLTI5MCwyOCArMjY3LDEyIEBAIHN0 YXRpYyBpbmxpbmUgdW5zaWduZWQgc2hvd192YWwoY29uc3QgR2V0Qml0Q29udGV4dCAqcywgdW5z aWduZWQgbikKICAqLwogc3RhdGljIGlubGluZSB2b2lkIHNraXBfYml0c19sb25nKEdldEJpdENv bnRleHQgKnMsIGludCBuKQogewotI2lmIENBQ0hFRF9CSVRTVFJFQU1fUkVBREVSCi0gICAgc2tp cF9iaXRzKHMsIG4pOwotI2Vsc2UKICNpZiBVTkNIRUNLRURfQklUU1RSRUFNX1JFQURFUgogICAg IHMtPmluZGV4ICs9IG47CiAjZWxzZQogICAgIHMtPmluZGV4ICs9IGF2X2NsaXAobiwgLXMtPmlu ZGV4LCBzLT5zaXplX2luX2JpdHNfcGx1czggLSBzLT5pbmRleCk7CiAjZW5kaWYKLSNlbmRpZgot fQotCi0jaWYgQ0FDSEVEX0JJVFNUUkVBTV9SRUFERVIKLXN0YXRpYyBpbmxpbmUgdm9pZCBza2lw X3JlbWFpbmluZyhHZXRCaXRDb250ZXh0ICpzLCB1bnNpZ25lZCBuKQotewotI2lmZGVmIEJJVFNU UkVBTV9SRUFERVJfTEUKLSAgICBzLT5jYWNoZSA+Pj0gbjsKLSNlbHNlCi0gICAgcy0+Y2FjaGUg PDw9IG47Ci0jZW5kaWYKLSAgICBzLT5iaXRzX2xlZnQgLT0gbjsKIH0KLSNlbmRpZgogCiAvKioK ICAqIFJlYWQgTVBFRy0xIGRjLXN0eWxlIFZMQyAoc2lnbiBiaXQgKyBtYW50aXNzYSB3aXRoIG5v IE1TQikuCkBAIC0zMjAsMTMgKzI4MSw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBza2lwX3JlbWFp bmluZyhHZXRCaXRDb250ZXh0ICpzLCB1bnNpZ25lZCBuKQogICovCiBzdGF0aWMgaW5saW5lIGlu dCBnZXRfeGJpdHMoR2V0Qml0Q29udGV4dCAqcywgaW50IG4pCiB7Ci0jaWYgQ0FDSEVEX0JJVFNU UkVBTV9SRUFERVIKLSAgICBpbnQzMl90IGNhY2hlID0gc2hvd19iaXRzKHMsIDMyKTsKLSAgICBp bnQgc2lnbiA9IH5jYWNoZSA+PiAzMTsKLSAgICBza2lwX3JlbWFpbmluZyhzLCBuKTsKLQotICAg IHJldHVybiAoKCgodWludDMyX3QpKHNpZ24gXiBjYWNoZSkpID4+ICgzMiAtIG4pKSBeIHNpZ24p IC0gc2lnbjsKLSNlbHNlCiAgICAgcmVnaXN0ZXIgaW50IHNpZ247CiAgICAgcmVnaXN0ZXIgaW50 MzJfdCBjYWNoZTsKICAgICBPUEVOX1JFQURFUihyZSwgcyk7CkBAIC0zMzcsMTAgKzI5MSw4IEBA IHN0YXRpYyBpbmxpbmUgaW50IGdldF94Yml0cyhHZXRCaXRDb250ZXh0ICpzLCBpbnQgbikKICAg ICBMQVNUX1NLSVBfQklUUyhyZSwgcywgbik7CiAgICAgQ0xPU0VfUkVBREVSKHJlLCBzKTsKICAg ICByZXR1cm4gKE5FR19VU1IzMihzaWduIF4gY2FjaGUsIG4pIF4gc2lnbikgLSBzaWduOwotI2Vu ZGlmCiB9CiAKLSNpZiAhQ0FDSEVEX0JJVFNUUkVBTV9SRUFERVIKIHN0YXRpYyBpbmxpbmUgaW50 IGdldF94Yml0c19sZShHZXRCaXRDb250ZXh0ICpzLCBpbnQgbikKIHsKICAgICByZWdpc3RlciBp bnQgc2lnbjsKQEAgLTM1NCwyMiArMzA2LDE2IEBAIHN0YXRpYyBpbmxpbmUgaW50IGdldF94Yml0 c19sZShHZXRCaXRDb250ZXh0ICpzLCBpbnQgbikKICAgICBDTE9TRV9SRUFERVIocmUsIHMpOwog ICAgIHJldHVybiAoemVyb19leHRlbmQoc2lnbiBeIGNhY2hlLCBuKSBeIHNpZ24pIC0gc2lnbjsK IH0KLSNlbmRpZgogCiBzdGF0aWMgaW5saW5lIGludCBnZXRfc2JpdHMoR2V0Qml0Q29udGV4dCAq cywgaW50IG4pCiB7CiAgICAgcmVnaXN0ZXIgaW50IHRtcDsKLSNpZiBDQUNIRURfQklUU1RSRUFN X1JFQURFUgotICAgIGF2X2Fzc2VydDIobj4wICYmIG48PTI1KTsKLSAgICB0bXAgPSBzaWduX2V4 dGVuZChnZXRfYml0cyhzLCBuKSwgbik7Ci0jZWxzZQogICAgIE9QRU5fUkVBREVSKHJlLCBzKTsK ICAgICBhdl9hc3NlcnQyKG4+MCAmJiBuPD0yNSk7CiAgICAgVVBEQVRFX0NBQ0hFKHJlLCBzKTsK ICAgICB0bXAgPSBTSE9XX1NCSVRTKHJlLCBzLCBuKTsKICAgICBMQVNUX1NLSVBfQklUUyhyZSwg cywgbik7CiAgICAgQ0xPU0VfUkVBREVSKHJlLCBzKTsKLSNlbmRpZgogICAgIHJldHVybiB0bXA7 CiB9CiAKQEAgLTM3OSwzMiArMzI1LDEyIEBAIHN0YXRpYyBpbmxpbmUgaW50IGdldF9zYml0cyhH ZXRCaXRDb250ZXh0ICpzLCBpbnQgbikKIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGdldF9i aXRzKEdldEJpdENvbnRleHQgKnMsIGludCBuKQogewogICAgIHJlZ2lzdGVyIHVuc2lnbmVkIGlu dCB0bXA7Ci0jaWYgQ0FDSEVEX0JJVFNUUkVBTV9SRUFERVIKLQotICAgIGF2X2Fzc2VydDIobj4w ICYmIG48PTMyKTsKLSAgICBpZiAobiA+IHMtPmJpdHNfbGVmdCkgewotI2lmZGVmIEJJVFNUUkVB TV9SRUFERVJfTEUKLSAgICAgICAgcmVmaWxsXzMyKHMsIDEpOwotI2Vsc2UKLSAgICAgICAgcmVm aWxsXzMyKHMsIDApOwotI2VuZGlmCi0gICAgICAgIGlmIChzLT5iaXRzX2xlZnQgPCAzMikKLSAg ICAgICAgICAgIHMtPmJpdHNfbGVmdCA9IG47Ci0gICAgfQotCi0jaWZkZWYgQklUU1RSRUFNX1JF QURFUl9MRQotICAgIHRtcCA9IGdldF92YWwocywgbiwgMSk7Ci0jZWxzZQotICAgIHRtcCA9IGdl dF92YWwocywgbiwgMCk7Ci0jZW5kaWYKLSNlbHNlCiAgICAgT1BFTl9SRUFERVIocmUsIHMpOwog ICAgIGF2X2Fzc2VydDIobj4wICYmIG48PTI1KTsKICAgICBVUERBVEVfQ0FDSEUocmUsIHMpOwog ICAgIHRtcCA9IFNIT1dfVUJJVFMocmUsIHMsIG4pOwogICAgIExBU1RfU0tJUF9CSVRTKHJlLCBz LCBuKTsKICAgICBDTE9TRV9SRUFERVIocmUsIHMpOwotI2VuZGlmCiAgICAgYXZfYXNzZXJ0Mih0 bXAgPCBVSU5UNjRfQygxKSA8PCBuKTsKICAgICByZXR1cm4gdG1wOwogfQpAQCAtNDE5LDE2ICsz NDUsNiBAQCBzdGF0aWMgYXZfYWx3YXlzX2lubGluZSBpbnQgZ2V0X2JpdHN6KEdldEJpdENvbnRl eHQgKnMsIGludCBuKQogCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBnZXRfYml0c19sZShH ZXRCaXRDb250ZXh0ICpzLCBpbnQgbikKIHsKLSNpZiBDQUNIRURfQklUU1RSRUFNX1JFQURFUgot ICAgIGF2X2Fzc2VydDIobj4wICYmIG48PTMyKTsKLSAgICBpZiAobiA+IHMtPmJpdHNfbGVmdCkg ewotICAgICAgICByZWZpbGxfMzIocywgMSk7Ci0gICAgICAgIGlmIChzLT5iaXRzX2xlZnQgPCAz MikKLSAgICAgICAgICAgIHMtPmJpdHNfbGVmdCA9IG47Ci0gICAgfQotCi0gICAgcmV0dXJuIGdl dF92YWwocywgbiwgMSk7Ci0jZWxzZQogICAgIHJlZ2lzdGVyIGludCB0bXA7CiAgICAgT1BFTl9S RUFERVIocmUsIHMpOwogICAgIGF2X2Fzc2VydDIobj4wICYmIG48PTI1KTsKQEAgLTQzNyw3ICsz NTMsNiBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBnZXRfYml0c19sZShHZXRCaXRDb250 ZXh0ICpzLCBpbnQgbikKICAgICBMQVNUX1NLSVBfQklUUyhyZSwgcywgbik7CiAgICAgQ0xPU0Vf UkVBREVSKHJlLCBzKTsKICAgICByZXR1cm4gdG1wOwotI2VuZGlmCiB9CiAKIC8qKgpAQCAtNDQ2 LDcxICszNjEsMjIgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgZ2V0X2JpdHNfbGUoR2V0 Qml0Q29udGV4dCAqcywgaW50IG4pCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBzaG93X2Jp dHMoR2V0Qml0Q29udGV4dCAqcywgaW50IG4pCiB7CiAgICAgcmVnaXN0ZXIgdW5zaWduZWQgaW50 IHRtcDsKLSNpZiBDQUNIRURfQklUU1RSRUFNX1JFQURFUgotICAgIGlmIChuID4gcy0+Yml0c19s ZWZ0KQotI2lmZGVmIEJJVFNUUkVBTV9SRUFERVJfTEUKLSAgICAgICAgcmVmaWxsXzMyKHMsIDEp OwotI2Vsc2UKLSAgICAgICAgcmVmaWxsXzMyKHMsIDApOwotI2VuZGlmCi0KLSAgICB0bXAgPSBz aG93X3ZhbChzLCBuKTsKLSNlbHNlCiAgICAgT1BFTl9SRUFERVJfTk9TSVpFKHJlLCBzKTsKICAg ICBhdl9hc3NlcnQyKG4+MCAmJiBuPD0yNSk7CiAgICAgVVBEQVRFX0NBQ0hFKHJlLCBzKTsKICAg ICB0bXAgPSBTSE9XX1VCSVRTKHJlLCBzLCBuKTsKLSNlbmRpZgogICAgIHJldHVybiB0bXA7CiB9 CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBza2lwX2JpdHMoR2V0Qml0Q29udGV4dCAqcywgaW50IG4p CiB7Ci0jaWYgQ0FDSEVEX0JJVFNUUkVBTV9SRUFERVIKLSAgICBpZiAobiA8IHMtPmJpdHNfbGVm dCkKLSAgICAgICAgc2tpcF9yZW1haW5pbmcocywgbik7Ci0gICAgZWxzZSB7Ci0gICAgICAgIG4g LT0gcy0+Yml0c19sZWZ0OwotICAgICAgICBzLT5jYWNoZSA9IDA7Ci0gICAgICAgIHMtPmJpdHNf bGVmdCA9IDA7Ci0KLSAgICAgICAgaWYgKG4gPj0gNjQpIHsKLSAgICAgICAgICAgIHVuc2lnbmVk IHNraXAgPSAobiAvIDgpICogODsKLQotICAgICAgICAgICAgbiAtPSBza2lwOwotICAgICAgICAg ICAgcy0+aW5kZXggKz0gc2tpcDsKLSAgICAgICAgfQotI2lmZGVmIEJJVFNUUkVBTV9SRUFERVJf TEUKLSAgICAgICAgcmVmaWxsXzY0KHMsIDEpOwotI2Vsc2UKLSAgICAgICAgcmVmaWxsXzY0KHMs IDApOwotI2VuZGlmCi0gICAgICAgIGlmIChuKQotICAgICAgICAgICAgc2tpcF9yZW1haW5pbmco cywgbik7Ci0gICAgfQotI2Vsc2UKICAgICBPUEVOX1JFQURFUihyZSwgcyk7CiAgICAgTEFTVF9T S0lQX0JJVFMocmUsIHMsIG4pOwogICAgIENMT1NFX1JFQURFUihyZSwgcyk7Ci0jZW5kaWYKIH0K IAogc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgZ2V0X2JpdHMxKEdldEJpdENvbnRleHQgKnMp CiB7Ci0jaWYgQ0FDSEVEX0JJVFNUUkVBTV9SRUFERVIKLSAgICBpZiAoIXMtPmJpdHNfbGVmdCkK LSNpZmRlZiBCSVRTVFJFQU1fUkVBREVSX0xFCi0gICAgICAgIHJlZmlsbF82NChzLCAxKTsKLSNl bHNlCi0gICAgICAgIHJlZmlsbF82NChzLCAwKTsKLSNlbmRpZgotCi0jaWZkZWYgQklUU1RSRUFN X1JFQURFUl9MRQotICAgIHJldHVybiBnZXRfdmFsKHMsIDEsIDEpOwotI2Vsc2UKLSAgICByZXR1 cm4gZ2V0X3ZhbChzLCAxLCAwKTsKLSNlbmRpZgotI2Vsc2UKICAgICB1bnNpZ25lZCBpbnQgaW5k ZXggPSBzLT5pbmRleDsKICAgICB1aW50OF90IHJlc3VsdCAgICAgPSBzLT5idWZmZXJbaW5kZXgg Pj4gM107CiAjaWZkZWYgQklUU1RSRUFNX1JFQURFUl9MRQpAQCAtNTI3LDcgKzM5Myw2IEBAIHN0 YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGdldF9iaXRzMShHZXRCaXRDb250ZXh0ICpzKQogICAg IHMtPmluZGV4ID0gaW5kZXg7CiAKICAgICByZXR1cm4gcmVzdWx0OwotI2VuZGlmCiB9CiAKIHN0 YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHNob3dfYml0czEoR2V0Qml0Q29udGV4dCAqcykKQEAg LTU0OCwxMCArNDEzLDYgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgZ2V0X2JpdHNfbG9u ZyhHZXRCaXRDb250ZXh0ICpzLCBpbnQgbikKICAgICBhdl9hc3NlcnQyKG4+PTAgJiYgbjw9MzIp OwogICAgIGlmICghbikgewogICAgICAgICByZXR1cm4gMDsKLSNpZiBDQUNIRURfQklUU1RSRUFN X1JFQURFUgotICAgIH0KLSAgICByZXR1cm4gZ2V0X2JpdHMocywgbik7Ci0jZWxzZQogICAgIH0g ZWxzZSBpZiAobiA8PSBNSU5fQ0FDSEVfQklUUykgewogICAgICAgICByZXR1cm4gZ2V0X2JpdHMo cywgbik7CiAgICAgfSBlbHNlIHsKQEAgLTU2Myw3ICs0MjQsNiBAQCBzdGF0aWMgaW5saW5lIHVu c2lnbmVkIGludCBnZXRfYml0c19sb25nKEdldEJpdENvbnRleHQgKnMsIGludCBuKQogICAgICAg ICByZXR1cm4gcmV0IHwgZ2V0X2JpdHMocywgbiAtIDE2KTsKICNlbmRpZgogICAgIH0KLSNlbmRp ZgogfQogCiAvKioKQEAgLTYwOSw4ICs0NjksMTcgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBp bnQgc2hvd19iaXRzX2xvbmcoR2V0Qml0Q29udGV4dCAqcywgaW50IG4pCiAgICAgfQogfQogCi1z dGF0aWMgaW5saW5lIGludCBpbml0X2dldF9iaXRzX3hlKEdldEJpdENvbnRleHQgKnMsIGNvbnN0 IHVpbnQ4X3QgKmJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 IGJpdF9zaXplLCBpbnQgaXNfbGUpCisKKy8qKgorICogSW5pdGlhbGl6ZSBHZXRCaXRDb250ZXh0 LgorICogQHBhcmFtIGJ1ZmZlciBiaXRzdHJlYW0gYnVmZmVyLCBtdXN0IGJlIEFWX0lOUFVUX0JV RkZFUl9QQURESU5HX1NJWkUgYnl0ZXMKKyAqICAgICAgICBsYXJnZXIgdGhhbiB0aGUgYWN0dWFs IHJlYWQgYml0cyBiZWNhdXNlIHNvbWUgb3B0aW1pemVkIGJpdHN0cmVhbQorICogICAgICAgIHJl YWRlcnMgcmVhZCAzMiBvciA2NCBiaXQgYXQgb25jZSBhbmQgY291bGQgcmVhZCBvdmVyIHRoZSBl bmQKKyAqIEBwYXJhbSBiaXRfc2l6ZSB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIGluIGJpdHMKKyAq IEByZXR1cm4gMCBvbiBzdWNjZXNzLCBBVkVSUk9SX0lOVkFMSUREQVRBIGlmIHRoZSBidWZmZXJf c2l6ZSB3b3VsZCBvdmVyZmxvdy4KKyAqLworc3RhdGljIGlubGluZSBpbnQgaW5pdF9nZXRfYml0 cyhHZXRCaXRDb250ZXh0ICpzLCBjb25zdCB1aW50OF90ICpidWZmZXIsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludCBiaXRfc2l6ZSkKIHsKICAgICBpbnQgYnVmZmVyX3NpemU7 CiAgICAgaW50IHJldCA9IDA7CkBAIC02MjksMzMgKzQ5OCw5IEBAIHN0YXRpYyBpbmxpbmUgaW50 IGluaXRfZ2V0X2JpdHNfeGUoR2V0Qml0Q29udGV4dCAqcywgY29uc3QgdWludDhfdCAqYnVmZmVy LAogICAgIHMtPmJ1ZmZlcl9lbmQgICAgICAgICA9IGJ1ZmZlciArIGJ1ZmZlcl9zaXplOwogICAg IHMtPmluZGV4ICAgICAgICAgICAgICA9IDA7CiAKLSNpZiBDQUNIRURfQklUU1RSRUFNX1JFQURF UgotICAgIHMtPmNhY2hlICAgICAgICAgICAgICA9IDA7Ci0gICAgcy0+Yml0c19sZWZ0ICAgICAg ICAgID0gMDsKLSAgICByZWZpbGxfNjQocywgaXNfbGUpOwotI2VuZGlmCi0KICAgICByZXR1cm4g cmV0OwogfQogCi0vKioKLSAqIEluaXRpYWxpemUgR2V0Qml0Q29udGV4dC4KLSAqIEBwYXJhbSBi dWZmZXIgYml0c3RyZWFtIGJ1ZmZlciwgbXVzdCBiZSBBVl9JTlBVVF9CVUZGRVJfUEFERElOR19T SVpFIGJ5dGVzCi0gKiAgICAgICAgbGFyZ2VyIHRoYW4gdGhlIGFjdHVhbCByZWFkIGJpdHMgYmVj YXVzZSBzb21lIG9wdGltaXplZCBiaXRzdHJlYW0KLSAqICAgICAgICByZWFkZXJzIHJlYWQgMzIg b3IgNjQgYml0IGF0IG9uY2UgYW5kIGNvdWxkIHJlYWQgb3ZlciB0aGUgZW5kCi0gKiBAcGFyYW0g Yml0X3NpemUgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBpbiBiaXRzCi0gKiBAcmV0dXJuIDAgb24g c3VjY2VzcywgQVZFUlJPUl9JTlZBTElEREFUQSBpZiB0aGUgYnVmZmVyX3NpemUgd291bGQgb3Zl cmZsb3cuCi0gKi8KLXN0YXRpYyBpbmxpbmUgaW50IGluaXRfZ2V0X2JpdHMoR2V0Qml0Q29udGV4 dCAqcywgY29uc3QgdWludDhfdCAqYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQgYml0X3NpemUpCi17Ci0jaWZkZWYgQklUU1RSRUFNX1JFQURFUl9MRQotICAgIHJl dHVybiBpbml0X2dldF9iaXRzX3hlKHMsIGJ1ZmZlciwgYml0X3NpemUsIDEpOwotI2Vsc2UKLSAg ICByZXR1cm4gaW5pdF9nZXRfYml0c194ZShzLCBidWZmZXIsIGJpdF9zaXplLCAwKTsKLSNlbmRp ZgotfQotCiAvKioKICAqIEluaXRpYWxpemUgR2V0Qml0Q29udGV4dC4KICAqIEBwYXJhbSBidWZm ZXIgYml0c3RyZWFtIGJ1ZmZlciwgbXVzdCBiZSBBVl9JTlBVVF9CVUZGRVJfUEFERElOR19TSVpF IGJ5dGVzCkBAIC02NzcsNyArNTIyLDcgQEAgc3RhdGljIGlubGluZSBpbnQgaW5pdF9nZXRfYml0 czhfbGUoR2V0Qml0Q29udGV4dCAqcywgY29uc3QgdWludDhfdCAqYnVmZmVyLAogewogICAgIGlm IChieXRlX3NpemUgPiBJTlRfTUFYIC8gOCB8fCBieXRlX3NpemUgPCAwKQogICAgICAgICBieXRl X3NpemUgPSAtMTsKLSAgICByZXR1cm4gaW5pdF9nZXRfYml0c194ZShzLCBidWZmZXIsIGJ5dGVf c2l6ZSAqIDgsIDEpOworICAgIHJldHVybiBpbml0X2dldF9iaXRzKHMsIGJ1ZmZlciwgYnl0ZV9z aXplICogOCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgY29uc3QgdWludDhfdCAqYWxpZ25fZ2V0X2Jp dHMoR2V0Qml0Q29udGV4dCAqcykKQEAgLTc2MiwxOSArNjA3LDYgQEAgc3RhdGljIGlubGluZSBj b25zdCB1aW50OF90ICphbGlnbl9nZXRfYml0cyhHZXRCaXRDb250ZXh0ICpzKQogICAgICAgICBT S0lQX0JJVFMobmFtZSwgZ2IsIG4pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK ICAgICB9IHdoaWxlICgwKQogCi0vKiBSZXR1cm4gdGhlIExVVCBlbGVtZW50IGZvciB0aGUgZ2l2 ZW4gYml0c3RyZWFtIGNvbmZpZ3VyYXRpb24uICovCi1zdGF0aWMgaW5saW5lIGludCBzZXRfaWR4 KEdldEJpdENvbnRleHQgKnMsIGludCBjb2RlLCBpbnQgKm4sIGludCAqbmJfYml0cywKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVkxDRWxlbSAqdGFibGUpCi17Ci0gICAgdW5zaWdu ZWQgaWR4OwotCi0gICAgKm5iX2JpdHMgPSAtKm47Ci0gICAgaWR4ID0gc2hvd19iaXRzKHMsICpu Yl9iaXRzKSArIGNvZGU7Ci0gICAgKm4gPSB0YWJsZVtpZHhdLmxlbjsKLQotICAgIHJldHVybiB0 YWJsZVtpZHhdLnN5bTsKLX0KLQogLyoqCiAgKiBQYXJzZSBhIHZsYyBjb2RlLgogICogQHBhcmFt IGJpdHMgaXMgdGhlIG51bWJlciBvZiBiaXRzIHdoaWNoIHdpbGwgYmUgcmVhZCBhdCBvbmNlLCBt dXN0IGJlCkBAIC03ODcsMjQgKzYxOSw2IEBAIHN0YXRpYyBpbmxpbmUgaW50IHNldF9pZHgoR2V0 Qml0Q29udGV4dCAqcywgaW50IGNvZGUsIGludCAqbiwgaW50ICpuYl9iaXRzLAogc3RhdGljIGF2 X2Fsd2F5c19pbmxpbmUgaW50IGdldF92bGMyKEdldEJpdENvbnRleHQgKnMsIGNvbnN0IFZMQ0Vs ZW0gKnRhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBiaXRz LCBpbnQgbWF4X2RlcHRoKQogewotI2lmIENBQ0hFRF9CSVRTVFJFQU1fUkVBREVSCi0gICAgaW50 IG5iX2JpdHM7Ci0gICAgdW5zaWduZWQgaWR4ID0gc2hvd19iaXRzKHMsIGJpdHMpOwotICAgIGlu dCBjb2RlID0gdGFibGVbaWR4XS5zeW07Ci0gICAgaW50IG4gICAgPSB0YWJsZVtpZHhdLmxlbjsK LQotICAgIGlmIChtYXhfZGVwdGggPiAxICYmIG4gPCAwKSB7Ci0gICAgICAgIHNraXBfcmVtYWlu aW5nKHMsIGJpdHMpOwotICAgICAgICBjb2RlID0gc2V0X2lkeChzLCBjb2RlLCAmbiwgJm5iX2Jp dHMsIHRhYmxlKTsKLSAgICAgICAgaWYgKG1heF9kZXB0aCA+IDIgJiYgbiA8IDApIHsKLSAgICAg ICAgICAgIHNraXBfcmVtYWluaW5nKHMsIG5iX2JpdHMpOwotICAgICAgICAgICAgY29kZSA9IHNl dF9pZHgocywgY29kZSwgJm4sICZuYl9iaXRzLCB0YWJsZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0g ICAgc2tpcF9yZW1haW5pbmcocywgbik7Ci0KLSAgICByZXR1cm4gY29kZTsKLSNlbHNlCiAgICAg aW50IGNvZGU7CiAKICAgICBPUEVOX1JFQURFUihyZSwgcyk7CkBAIC04MTUsNyArNjI5LDYgQEAg c3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgaW50IGdldF92bGMyKEdldEJpdENvbnRleHQgKnMsIGNv bnN0IFZMQ0VsZW0gKnRhYmxlLAogICAgIENMT1NFX1JFQURFUihyZSwgcyk7CiAKICAgICByZXR1 cm4gY29kZTsKLSNlbmRpZgogfQogCiBzdGF0aWMgaW5saW5lIGludCBkZWNvZGUwMTIoR2V0Qml0 Q29udGV4dCAqZ2IpCkBAIC04NTUsNCArNjY4LDYgQEAgc3RhdGljIGlubGluZSBpbnQgc2tpcF8x c3RvcF84ZGF0YV9iaXRzKEdldEJpdENvbnRleHQgKmdiKQogICAgIHJldHVybiAwOwogfQogCisj ZW5kaWYgLy8gQ0FDSEVEX0JJVFNUUkVBTV9SRUFERVIKKwogI2VuZGlmIC8qIEFWQ09ERUNfR0VU X0JJVFNfSCAqLwotLSAKMi4zNS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1w ZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoK VG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1y ZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==