From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: [PATCH v2] libgnttab: Add support for Linux dma-buf Date: Tue, 21 Aug 2018 09:44:01 +0300 Message-ID: <20180821064401.13579-1-andr2000@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1fs0Oi-00025K-7d for xen-devel@lists.xenproject.org; Tue, 21 Aug 2018 06:44:12 +0000 Received: by mail-lf1-x142.google.com with SMTP id q13-v6so5287623lfc.2 for ; Mon, 20 Aug 2018 23:44:10 -0700 (PDT) List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org, ian.jackson@eu.citrix.com, wei.liu2@citrix.com, boris.ostrovsky@oracle.com, jgross@suse.com Cc: andr2000@gmail.com, Oleksandr Andrushchenko List-Id: xen-devel@lists.xenproject.org RnJvbTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVw YW0uY29tPgoKQWRkIHN1cHBvcnQgZm9yIExpbnV4IGdyYW50IGRldmljZSBkcml2ZXIgZXh0ZW5z aW9uIHdoaWNoIGFsbG93cwpjb252ZXJ0aW5nIGV4aXN0aW5nIGRtYS1idWYncyBpbnRvIGFuIGFy cmF5IG9mIGdyYW50IHJlZmVyZW5jZXMKYW5kIHZpc2UgdmVyc2EuIFRoaXMgaXMgb25seSBpbXBs ZW1lbnRlZCBmb3IgTGludXggYXMgb3RoZXIgT1NlcwpoYXZlIG5vIExpbnV4IGRtYS1idWYgc3Vw cG9ydC4KCkJ1bXAgZ250dGFiIGxpYnJhcnkgbWlub3IgdmVyc2lvbiB0byAzLgoKU2lnbmVkLW9m Zi1ieTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVw YW0uY29tPgotLS0KIHRvb2xzL2luY2x1ZGUveGVuLXN5cy9MaW51eC9nbnRkZXYuaCAgfCAxMDYg KysrKysrKysrKysrKysrKysrKysrKysKIHRvb2xzL2xpYnMvZ250dGFiL01ha2VmaWxlICAgICAg ICAgICAgfCAgIDIgKy0KIHRvb2xzL2xpYnMvZ250dGFiL2dudHRhYl9jb3JlLmMgICAgICAgfCAg MjYgKysrKysrCiB0b29scy9saWJzL2dudHRhYi9nbnR0YWJfdW5pbXAuYyAgICAgIHwgIDI2ICsr KysrKwogdG9vbHMvbGlicy9nbnR0YWIvaW5jbHVkZS94ZW5nbnR0YWIuaCB8ICA2MSArKysrKysr KysrKysrKwogdG9vbHMvbGlicy9nbnR0YWIvbGlieGVuZ250dGFiLm1hcCAgICB8ICAgOCArKwog dG9vbHMvbGlicy9nbnR0YWIvbGludXguYyAgICAgICAgICAgICB8IDExNyArKysrKysrKysrKysr KysrKysrKysrKysrKwogdG9vbHMvbGlicy9nbnR0YWIvbWluaW9zLmMgICAgICAgICAgICB8ICAy NiArKysrKysKIHRvb2xzL2xpYnMvZ250dGFiL3ByaXZhdGUuaCAgICAgICAgICAgfCAgMTMgKysr CiA5IGZpbGVzIGNoYW5nZWQsIDM4NCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm IC0tZ2l0IGEvdG9vbHMvaW5jbHVkZS94ZW4tc3lzL0xpbnV4L2dudGRldi5oIGIvdG9vbHMvaW5j bHVkZS94ZW4tc3lzL0xpbnV4L2dudGRldi5oCmluZGV4IDBjYTA3YzkyYjIxYy4uZDE2MDc2MDQ0 YzcxIDEwMDY0NAotLS0gYS90b29scy9pbmNsdWRlL3hlbi1zeXMvTGludXgvZ250ZGV2LmgKKysr IGIvdG9vbHMvaW5jbHVkZS94ZW4tc3lzL0xpbnV4L2dudGRldi5oCkBAIC00LDYgKzQsNyBAQAog ICogSW50ZXJmYWNlIHRvIC9kZXYveGVuL2dudGRldi4KICAqIAogICogQ29weXJpZ2h0IChjKSAy MDA3LCBEIEcgTXVycmF5CisgKiBDb3B5cmlnaHQgKGMpIDIwMTgsIE9sZWtzYW5kciBBbmRydXNo Y2hlbmtvLCBFUEFNIFN5c3RlbXMgSW5jLgogICogCiAgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIK QEAgLTE2OCw0ICsxNjksMTA5IEBAIHN0cnVjdCBpb2N0bF9nbnRkZXZfZ3JhbnRfY29weSB7CiAg ICAgc3RydWN0IGlvY3RsX2dudGRldl9ncmFudF9jb3B5X3NlZ21lbnQgKnNlZ21lbnRzOwogfTsK IAorLyoKKyAqIEZsYWdzIHRvIGJlIHVzZWQgd2hpbGUgcmVxdWVzdGluZyBtZW1vcnkgbWFwcGlu ZydzIGJhY2tpbmcgc3RvcmFnZQorICogdG8gYmUgYWxsb2NhdGVkIHdpdGggRE1BIEFQSS4KKyAq LworCisvKgorICogVGhlIGJ1ZmZlciBpcyBiYWNrZWQgd2l0aCBtZW1vcnkgYWxsb2NhdGVkIHdp dGggZG1hX2FsbG9jX3djLgorICovCisjZGVmaW5lIEdOVERFVl9ETUFfRkxBR19XQwkJKDEgPDwg MCkKKworLyoKKyAqIFRoZSBidWZmZXIgaXMgYmFja2VkIHdpdGggbWVtb3J5IGFsbG9jYXRlZCB3 aXRoIGRtYV9hbGxvY19jb2hlcmVudC4KKyAqLworI2RlZmluZSBHTlRERVZfRE1BX0ZMQUdfQ09I RVJFTlQJKDEgPDwgMSkKKworLyoKKyAqIENyZWF0ZSBhIGRtYS1idWYgWzFdIGZyb20gZ3JhbnQg cmVmZXJlbmNlcyBAcmVmcyBvZiBjb3VudCBAY291bnQgcHJvdmlkZWQKKyAqIGJ5IHRoZSBmb3Jl aWduIGRvbWFpbiBAZG9taWQgd2l0aCBmbGFncyBAZmxhZ3MuCisgKgorICogQnkgZGVmYXVsdCBk bWEtYnVmIGlzIGJhY2tlZCBieSBzeXN0ZW0gbWVtb3J5IHBhZ2VzLCBidXQgYnkgcHJvdmlkaW5n CisgKiBvbmUgb2YgdGhlIEdOVERFVl9ETUFfRkxBR19YWFggZmxhZ3MgaXQgY2FuIGFsc28gYmUg Y3JlYXRlZCBhcworICogYSBETUEgd3JpdGUtY29tYmluZSBvciBjb2hlcmVudCBidWZmZXIsIGUu Zy4gYWxsb2NhdGVkIHdpdGggZG1hX2FsbG9jX3djLworICogZG1hX2FsbG9jX2NvaGVyZW50Lgor ICoKKyAqIFJldHVybnMgMCBpZiBkbWEtYnVmIHdhcyBzdWNjZXNzZnVsbHkgY3JlYXRlZCBhbmQg dGhlIGNvcnJlc3BvbmRpbmcKKyAqIGRtYS1idWYncyBmaWxlIGRlc2NyaXB0b3IgaXMgcmV0dXJu ZWQgaW4gQGZkLgorICoKKyAqIFsxXSBodHRwczovL2VsaXhpci5ib290bGluLmNvbS9saW51eC9s YXRlc3Qvc291cmNlL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kbWEtYnVmLnJzdAorICovCisK KyNkZWZpbmUgSU9DVExfR05UREVWX0RNQUJVRl9FWFBfRlJPTV9SRUZTIFwKKyAgICBfSU9DKF9J T0NfTk9ORSwgJ0cnLCA5LCBcCisgICAgICAgICBzaXplb2Yoc3RydWN0IGlvY3RsX2dudGRldl9k bWFidWZfZXhwX2Zyb21fcmVmcykpCitzdHJ1Y3QgaW9jdGxfZ250ZGV2X2RtYWJ1Zl9leHBfZnJv bV9yZWZzIHsKKyAgICAvKiBJTiBwYXJhbWV0ZXJzLiAqLworICAgIC8qIFNwZWNpZmljIG9wdGlv bnMgZm9yIHRoaXMgZG1hLWJ1Zjogc2VlIEdOVERFVl9ETUFCVUZfRkxBR19YWFguICovCisgICAg dWludDMyX3QgZmxhZ3M7CisgICAgLyogTnVtYmVyIG9mIGdyYW50IHJlZmVyZW5jZXMgaW4gQHJl ZnMgYXJyYXkuICovCisgICAgdWludDMyX3QgY291bnQ7CisgICAgLyogT1VUIHBhcmFtZXRlcnMu ICovCisgICAgLyogRmlsZSBkZXNjcmlwdG9yIG9mIHRoZSBkbWEtYnVmLiAqLworICAgIHVpbnQz Ml90IGZkOworICAgIC8qIFRoZSBkb21haW4gSUQgb2YgdGhlIGdyYW50IHJlZmVyZW5jZXMgdG8g YmUgbWFwcGVkLiAqLworICAgIHVpbnQzMl90IGRvbWlkOworICAgIC8qIFZhcmlhYmxlIElOIHBh cmFtZXRlci4gKi8KKyAgICAvKiBBcnJheSBvZiBncmFudCByZWZlcmVuY2VzIG9mIHNpemUgQGNv dW50LiAqLworICAgIHVpbnQzMl90IHJlZnNbMV07Cit9OworCisvKgorICogVGhpcyB3aWxsIGJs b2NrIHVudGlsIHRoZSBkbWEtYnVmIHdpdGggdGhlIGZpbGUgZGVzY3JpcHRvciBAZmQgaXMKKyAq IHJlbGVhc2VkLiBUaGlzIGlzIG9ubHkgdmFsaWQgZm9yIGJ1ZmZlcnMgY3JlYXRlZCB3aXRoCisg KiBJT0NUTF9HTlRERVZfRE1BQlVGX0VYUF9GUk9NX1JFRlMuCisgKgorICogSWYgd2l0aGluZyBA d2FpdF90b19tcyBtaWxsaXNlY29uZHMgdGhlIGJ1ZmZlciBpcyBub3QgcmVsZWFzZWQKKyAqIHRo ZW4gLUVUSU1FRE9VVCBlcnJvciBpcyByZXR1cm5lZC4KKyAqIElmIHRoZSBidWZmZXIgd2l0aCBm aWxlIGRlc2NyaXB0b3IgQGZkIGRvZXMgbm90IGV4aXN0IG9yIGhhcyBhbHJlYWR5CisgKiBiZWVu IHJlbGVhc2VkLCB0aGVuIC1FTk9FTlQgaXMgcmV0dXJuZWQuIEZvciB2YWxpZCBmaWxlIGRlc2Ny aXB0b3JzCisgKiB0aGlzIG11c3Qgbm90IGJlIHRyZWF0ZWQgYXMgZXJyb3IuCisgKi8KKyNkZWZp bmUgSU9DVExfR05UREVWX0RNQUJVRl9FWFBfV0FJVF9SRUxFQVNFRCBcCisgICAgX0lPQyhfSU9D X05PTkUsICdHJywgMTAsIFwKKyAgICAgICAgIHNpemVvZihzdHJ1Y3QgaW9jdGxfZ250ZGV2X2Rt YWJ1Zl9leHBfd2FpdF9yZWxlYXNlZCkpCitzdHJ1Y3QgaW9jdGxfZ250ZGV2X2RtYWJ1Zl9leHBf d2FpdF9yZWxlYXNlZCB7CisgICAgLyogSU4gcGFyYW1ldGVycyAqLworICAgIHVpbnQzMl90IGZk OworICAgIHVpbnQzMl90IHdhaXRfdG9fbXM7Cit9OworCisvKgorICogSW1wb3J0IGEgZG1hLWJ1 ZiB3aXRoIGZpbGUgZGVzY3JpcHRvciBAZmQgYW5kIGV4cG9ydCBncmFudGVkIHJlZmVyZW5jZXMK KyAqIHRvIHRoZSBwYWdlcyBvZiB0aGF0IGRtYS1idWYgaW50byBhcnJheSBAcmVmcyBvZiBzaXpl IEBjb3VudC4KKyAqLworI2RlZmluZSBJT0NUTF9HTlRERVZfRE1BQlVGX0lNUF9UT19SRUZTIFwK KyAgICBfSU9DKF9JT0NfTk9ORSwgJ0cnLCAxMSwgXAorICAgICAgICAgc2l6ZW9mKHN0cnVjdCBp b2N0bF9nbnRkZXZfZG1hYnVmX2ltcF90b19yZWZzKSkKK3N0cnVjdCBpb2N0bF9nbnRkZXZfZG1h YnVmX2ltcF90b19yZWZzIHsKKyAgICAvKiBJTiBwYXJhbWV0ZXJzLiAqLworICAgIC8qIEZpbGUg ZGVzY3JpcHRvciBvZiB0aGUgZG1hLWJ1Zi4gKi8KKyAgICB1aW50MzJfdCBmZDsKKyAgICAvKiBO dW1iZXIgb2YgZ3JhbnQgcmVmZXJlbmNlcyBpbiBAcmVmcyBhcnJheS4gKi8KKyAgICB1aW50MzJf dCBjb3VudDsKKyAgICAvKiBUaGUgZG9tYWluIElEIGZvciB3aGljaCByZWZlcmVuY2VzIHRvIGJl IGdyYW50ZWQuICovCisgICAgdWludDMyX3QgZG9taWQ7CisgICAgLyogUmVzZXJ2ZWQgLSBtdXN0 IGJlIHplcm8uICovCisgICAgdWludDMyX3QgcmVzZXJ2ZWQ7CisgICAgLyogT1VUIHBhcmFtZXRl cnMuICovCisgICAgLyogQXJyYXkgb2YgZ3JhbnQgcmVmZXJlbmNlcyBvZiBzaXplIEBjb3VudC4g Ki8KKyAgICB1aW50MzJfdCByZWZzWzFdOworfTsKKworLyoKKyAqIFRoaXMgd2lsbCBjbG9zZSBh bGwgcmVmZXJlbmNlcyB0byBhbiBpbXBvcnRlZCBidWZmZXIsIHNvIGl0IGNhbiBiZQorICogcmVs ZWFzZWQgYnkgdGhlIG93bmVyLiBUaGlzIGlzIG9ubHkgdmFsaWQgZm9yIGJ1ZmZlcnMgY3JlYXRl ZCB3aXRoCisgKiBJT0NUTF9HTlRERVZfRE1BQlVGX0lNUF9UT19SRUZTLgorICovCisjZGVmaW5l IElPQ1RMX0dOVERFVl9ETUFCVUZfSU1QX1JFTEVBU0UgXAorICAgIF9JT0MoX0lPQ19OT05FLCAn RycsIDEyLCBcCisgICAgICAgICBzaXplb2Yoc3RydWN0IGlvY3RsX2dudGRldl9kbWFidWZfaW1w X3JlbGVhc2UpKQorc3RydWN0IGlvY3RsX2dudGRldl9kbWFidWZfaW1wX3JlbGVhc2UgeworICAg IC8qIElOIHBhcmFtZXRlcnMgKi8KKyAgICB1aW50MzJfdCBmZDsKKyAgICB1aW50MzJfdCByZXNl cnZlZDsKK307CisKICNlbmRpZiAvKiBfX0xJTlVYX1BVQkxJQ19HTlRERVZfSF9fICovCmRpZmYg LS1naXQgYS90b29scy9saWJzL2dudHRhYi9NYWtlZmlsZSBiL3Rvb2xzL2xpYnMvZ250dGFiL01h a2VmaWxlCmluZGV4IDZjMmU3ZTM2YTJjMy4uMGJlZmJkMThmMWFmIDEwMDY0NAotLS0gYS90b29s cy9saWJzL2dudHRhYi9NYWtlZmlsZQorKysgYi90b29scy9saWJzL2dudHRhYi9NYWtlZmlsZQpA QCAtMiw3ICsyLDcgQEAgWEVOX1JPT1QgPSAkKENVUkRJUikvLi4vLi4vLi4KIGluY2x1ZGUgJChY RU5fUk9PVCkvdG9vbHMvUnVsZXMubWsKIAogTUFKT1IgICAgPSAxCi1NSU5PUiAgICA9IDIKK01J Tk9SICAgID0gMwogU0hMSUJfTERGTEFHUyArPSAtV2wsLS12ZXJzaW9uLXNjcmlwdD1saWJ4ZW5n bnR0YWIubWFwCiAKIENGTEFHUyAgICs9IC1XZXJyb3IgLVdtaXNzaW5nLXByb3RvdHlwZXMKZGlm ZiAtLWdpdCBhL3Rvb2xzL2xpYnMvZ250dGFiL2dudHRhYl9jb3JlLmMgYi90b29scy9saWJzL2du dHRhYi9nbnR0YWJfY29yZS5jCmluZGV4IGJkMDc1ZjgxOGFhNi4uOTJlNzIyOGEyNjcxIDEwMDY0 NAotLS0gYS90b29scy9saWJzL2dudHRhYi9nbnR0YWJfY29yZS5jCisrKyBiL3Rvb2xzL2xpYnMv Z250dGFiL2dudHRhYl9jb3JlLmMKQEAgLTEsNiArMSw3IEBACiAvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCiAgKgogICogQ29weXJpZ2h0IChjKSAyMDA3LTIwMDgsIEQgRyBNdXJyYXkgPERlcmVrLk11 cnJheUBjbC5jYW0uYWMudWs+CisgKiBDb3B5cmlnaHQgKGMpIDIwMTgsIE9sZWtzYW5kciBBbmRy dXNoY2hlbmtvLCBFUEFNIFN5c3RlbXMgSW5jLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTEzNCw2 ICsxMzUsMzEgQEAgaW50IHhlbmdudHRhYl9ncmFudF9jb3B5KHhlbmdudHRhYl9oYW5kbGUgKnhn dCwKIHsKICAgICByZXR1cm4gb3NkZXBfZ250dGFiX2dyYW50X2NvcHkoeGd0LCBjb3VudCwgc2Vn cyk7CiB9CisKK2ludCB4ZW5nbnR0YWJfZG1hYnVmX2V4cF9mcm9tX3JlZnMoeGVuZ250dGFiX2hh bmRsZSAqeGd0LCB1aW50MzJfdCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdWludDMyX3QgZmxhZ3MsIHVpbnQzMl90IGNvdW50LAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCB1aW50MzJfdCAqcmVmcywgdWludDMyX3QgKmZkKQorewor ICAgIHJldHVybiBvc2RlcF9nbnR0YWJfZG1hYnVmX2V4cF9mcm9tX3JlZnMoeGd0LCBkb21pZCwg ZmxhZ3MsIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmVmcywgZmQpOworfQorCitpbnQgeGVuZ250dGFiX2RtYWJ1Zl9leHBfd2FpdF9yZWxlYXNl ZCh4ZW5nbnR0YWJfaGFuZGxlICp4Z3QsIHVpbnQzMl90IGZkLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgd2FpdF90b19tcykKK3sKKyAgICByZXR1cm4g b3NkZXBfZ250dGFiX2RtYWJ1Zl9leHBfd2FpdF9yZWxlYXNlZCh4Z3QsIGZkLCB3YWl0X3RvX21z KTsKK30KKworaW50IHhlbmdudHRhYl9kbWFidWZfaW1wX3RvX3JlZnMoeGVuZ250dGFiX2hhbmRs ZSAqeGd0LCB1aW50MzJfdCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVpbnQzMl90IGZkLCB1aW50MzJfdCBjb3VudCwgdWludDMyX3QgKnJlZnMpCit7CisgICAgcmV0 dXJuIG9zZGVwX2dudHRhYl9kbWFidWZfaW1wX3RvX3JlZnMoeGd0LCBkb21pZCwgZmQsIGNvdW50 LCByZWZzKTsKK30KKworaW50IHhlbmdudHRhYl9kbWFidWZfaW1wX3JlbGVhc2UoeGVuZ250dGFi X2hhbmRsZSAqeGd0LCB1aW50MzJfdCBmZCkKK3sKKyAgICByZXR1cm4gb3NkZXBfZ250dGFiX2Rt YWJ1Zl9pbXBfcmVsZWFzZSh4Z3QsIGZkKTsKK30KIC8qCiAgKiBMb2NhbCB2YXJpYWJsZXM6CiAg KiBtb2RlOiBDCmRpZmYgLS1naXQgYS90b29scy9saWJzL2dudHRhYi9nbnR0YWJfdW5pbXAuYyBi L3Rvb2xzL2xpYnMvZ250dGFiL2dudHRhYl91bmltcC5jCmluZGV4IDI2ZTRlZTEyOWQwMy4uZGVl MWFmZDI2NDdmIDEwMDY0NAotLS0gYS90b29scy9saWJzL2dudHRhYi9nbnR0YWJfdW5pbXAuYwor KysgYi90b29scy9saWJzL2dudHRhYi9nbnR0YWJfdW5pbXAuYwpAQCAtMSw2ICsxLDcgQEAKIC8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKICAqCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDctMjAwOCwgRCBH IE11cnJheSA8RGVyZWsuTXVycmF5QGNsLmNhbS5hYy51az4KKyAqIENvcHlyaWdodCAoYykgMjAx OCwgT2xla3NhbmRyIEFuZHJ1c2hjaGVua28sIEVQQU0gU3lzdGVtcyBJbmMuCiAgKgogICogVGhp cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs IFB1YmxpYwpAQCAtODQsNiArODUsMzEgQEAgaW50IHhlbmdudHRhYl9ncmFudF9jb3B5KHhlbmdu dHRhYl9oYW5kbGUgKnhndCwKIHsKICAgICBhYm9ydCgpOwogfQorCitpbnQgeGVuZ250dGFiX2Rt YWJ1Zl9leHBfZnJvbV9yZWZzKHhlbmdudHRhYl9oYW5kbGUgKnhndCwgdWludDMyX3QgZG9taWQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzLCB1aW50 MzJfdCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWlu dDMyX3QgKnJlZnMsIHVpbnQzMl90ICpmZCkKK3sKKyAgICBhYm9ydCgpOworfQorCitpbnQgeGVu Z250dGFiX2RtYWJ1Zl9leHBfd2FpdF9yZWxlYXNlZCh4ZW5nbnR0YWJfaGFuZGxlICp4Z3QsIHVp bnQzMl90IGZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy X3Qgd2FpdF90b19tcykKK3sKKyAgICBhYm9ydCgpOworfQorCitpbnQgeGVuZ250dGFiX2RtYWJ1 Zl9pbXBfdG9fcmVmcyh4ZW5nbnR0YWJfaGFuZGxlICp4Z3QsIHVpbnQzMl90IGRvbWlkLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZmQsIHVpbnQzMl90IGNvdW50 LCB1aW50MzJfdCAqcmVmcykKK3sKKyAgICBhYm9ydCgpOworfQorCitpbnQgeGVuZ250dGFiX2Rt YWJ1Zl9pbXBfcmVsZWFzZSh4ZW5nbnR0YWJfaGFuZGxlICp4Z3QsIHVpbnQzMl90IGZkKQorewor ICAgIGFib3J0KCk7Cit9CisKIC8qCiAgKiBMb2NhbCB2YXJpYWJsZXM6CiAgKiBtb2RlOiBDCmRp ZmYgLS1naXQgYS90b29scy9saWJzL2dudHRhYi9pbmNsdWRlL3hlbmdudHRhYi5oIGIvdG9vbHMv bGlicy9nbnR0YWIvaW5jbHVkZS94ZW5nbnR0YWIuaAppbmRleCA5MWQ0Y2Q1YmRkODguLjExMWZj ODhjYWViMyAxMDA2NDQKLS0tIGEvdG9vbHMvbGlicy9nbnR0YWIvaW5jbHVkZS94ZW5nbnR0YWIu aAorKysgYi90b29scy9saWJzL2dudHRhYi9pbmNsdWRlL3hlbmdudHRhYi5oCkBAIC0xOCw2ICsx OCw3IEBACiAgKiBBIGxpYnJhcnkgZm9yIGxvdy1sZXZlbCBhY2Nlc3MgdG8gdGhlIFhlbiBjb250 cm9sIGludGVyZmFjZXMuCiAgKgogICogQ29weXJpZ2h0IChjKSAyMDA3LTIwMDgsIEQgRyBNdXJy YXkgPERlcmVrLk11cnJheUBjbC5jYW0uYWMudWs+CisgKiBDb3B5cmlnaHQgKGMpIDIwMTgsIE9s ZWtzYW5kciBBbmRydXNoY2hlbmtvLCBFUEFNIFN5c3RlbXMgSW5jLgogICovCiAjaWZuZGVmIFhF TkdOVFRBQl9ICiAjZGVmaW5lIFhFTkdOVFRBQl9ICkBAIC0yOTUsNiArMjk2LDY2IEBAIGludCB4 ZW5nbnR0YWJfZ3JhbnRfY29weSh4ZW5nbnR0YWJfaGFuZGxlICp4Z3QsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgdWludDMyX3QgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgeGVu Z250dGFiX2dyYW50X2NvcHlfc2VnbWVudF90ICpzZWdzKTsKIAorLyoKKyAqIEZsYWdzIHRvIGJl IHVzZWQgd2hpbGUgcmVxdWVzdGluZyBtZW1vcnkgbWFwcGluZydzIGJhY2tpbmcgc3RvcmFnZQor ICogdG8gYmUgYWxsb2NhdGVkIHdpdGggRE1BIEFQSS4KKyAqLworCisvKgorICogVGhlIGJ1ZmZl ciBpcyBiYWNrZWQgd2l0aCBtZW1vcnkgYWxsb2NhdGVkIHdpdGggZG1hX2FsbG9jX3djLgorICov CisjZGVmaW5lIEdOVERFVl9ETUFfRkxBR19XQwkJKDEgPDwgMCkKKworLyoKKyAqIFRoZSBidWZm ZXIgaXMgYmFja2VkIHdpdGggbWVtb3J5IGFsbG9jYXRlZCB3aXRoIGRtYV9hbGxvY19jb2hlcmVu dC4KKyAqLworI2RlZmluZSBHTlRERVZfRE1BX0ZMQUdfQ09IRVJFTlQJKDEgPDwgMSkKKworLyoq CisgKiBDcmVhdGUgYSBkbWEtYnVmIFsxXSBmcm9tIGdyYW50IHJlZmVyZW5jZXMgQHJlZnMgb2Yg Y291bnQgQGNvdW50IHByb3ZpZGVkCisgKiBieSB0aGUgZm9yZWlnbiBkb21haW4gQGRvbWlkIHdp dGggZmxhZ3MgQGZsYWdzLgorICoKKyAqIEJ5IGRlZmF1bHQgZG1hLWJ1ZiBpcyBiYWNrZWQgYnkg c3lzdGVtIG1lbW9yeSBwYWdlcywgYnV0IGJ5IHByb3ZpZGluZworICogb25lIG9mIHRoZSBHTlRE RVZfRE1BX0ZMQUdfWFhYIGZsYWdzIGl0IGNhbiBhbHNvIGJlIGNyZWF0ZWQgYXMKKyAqIGEgRE1B IHdyaXRlLWNvbWJpbmUgb3IgY29oZXJlbnQgYnVmZmVyLgorICoKKyAqIFJldHVybnMgMCBpZiBk bWEtYnVmIHdhcyBzdWNjZXNzZnVsbHkgY3JlYXRlZCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcKKyAq IGRtYS1idWYncyBmaWxlIGRlc2NyaXB0b3IgaXMgcmV0dXJuZWQgaW4gQGZkLgorICoKKyAqIFsx XSBodHRwczovL2VsaXhpci5ib290bGluLmNvbS9saW51eC9sYXRlc3Qvc291cmNlL0RvY3VtZW50 YXRpb24vZHJpdmVyLWFwaS9kbWEtYnVmLnJzdAorICovCitpbnQgeGVuZ250dGFiX2RtYWJ1Zl9l eHBfZnJvbV9yZWZzKHhlbmdudHRhYl9oYW5kbGUgKnhndCwgdWludDMyX3QgZG9taWQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzLCB1aW50MzJfdCBj b3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDMyX3Qg KnJlZnMsIHVpbnQzMl90ICpmZCk7CisKKy8qCisgKiBUaGlzIHdpbGwgYmxvY2sgdW50aWwgdGhl IGRtYS1idWYgd2l0aCB0aGUgZmlsZSBkZXNjcmlwdG9yIEBmZCBpcworICogcmVsZWFzZWQuIFRo aXMgaXMgb25seSB2YWxpZCBmb3IgYnVmZmVycyBjcmVhdGVkIHdpdGgKKyAqIElPQ1RMX0dOVERF Vl9ETUFCVUZfRVhQX0ZST01fUkVGUy4KKyAqCisgKiBJZiB3aXRoaW5nIEB3YWl0X3RvX21zIG1p bGxpc2Vjb25kcyB0aGUgYnVmZmVyIGlzIG5vdCByZWxlYXNlZAorICogdGhlbiAtRVRJTUVET1VU IGVycm9yIGlzIHJldHVybmVkLgorICogSWYgdGhlIGJ1ZmZlciB3aXRoIGZpbGUgZGVzY3JpcHRv ciBAZmQgZG9lcyBub3QgZXhpc3Qgb3IgaGFzIGFscmVhZHkKKyAqIGJlZW4gcmVsZWFzZWQsIHRo ZW4gLUVOT0VOVCBpcyByZXR1cm5lZC4gRm9yIHZhbGlkIGZpbGUgZGVzY3JpcHRvcnMKKyAqIHRo aXMgbXVzdCBub3QgYmUgdHJlYXRlZCBhcyBlcnJvci4KKyAqLworaW50IHhlbmdudHRhYl9kbWFi dWZfZXhwX3dhaXRfcmVsZWFzZWQoeGVuZ250dGFiX2hhbmRsZSAqeGd0LCB1aW50MzJfdCBmZCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHdhaXRfdG9f bXMpOworCisvKgorICogSW1wb3J0IGEgZG1hLWJ1ZiB3aXRoIGZpbGUgZGVzY3JpcHRvciBAZmQg YW5kIGV4cG9ydCBncmFudGVkIHJlZmVyZW5jZXMKKyAqIHRvIHRoZSBwYWdlcyBvZiB0aGF0IGRt YS1idWYgaW50byBhcnJheSBAcmVmcyBvZiBzaXplIEBjb3VudC4KKyAqLworaW50IHhlbmdudHRh Yl9kbWFidWZfaW1wX3RvX3JlZnMoeGVuZ250dGFiX2hhbmRsZSAqeGd0LCB1aW50MzJfdCBkb21p ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZkLCB1aW50MzJf dCBjb3VudCwgdWludDMyX3QgKnJlZnMpOworCisvKgorICogVGhpcyB3aWxsIGNsb3NlIGFsbCBy ZWZlcmVuY2VzIHRvIGFuIGltcG9ydGVkIGJ1ZmZlciwgc28gaXQgY2FuIGJlCisgKiByZWxlYXNl ZCBieSB0aGUgb3duZXIuIFRoaXMgaXMgb25seSB2YWxpZCBmb3IgYnVmZmVycyBjcmVhdGVkIHdp dGgKKyAqIElPQ1RMX0dOVERFVl9ETUFCVUZfSU1QX1RPX1JFRlMuCisgKi8KK2ludCB4ZW5nbnR0 YWJfZG1hYnVmX2ltcF9yZWxlYXNlKHhlbmdudHRhYl9oYW5kbGUgKnhndCwgdWludDMyX3QgZmQp OworCiAvKgogICogR3JhbnQgU2hhcmluZyBJbnRlcmZhY2UgKGFsbG9jYXRpbmcgYW5kIGdyYW50 aW5nIHBhZ2VzIHRvIG90aGVycykKICAqLwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlicy9nbnR0YWIv bGlieGVuZ250dGFiLm1hcCBiL3Rvb2xzL2xpYnMvZ250dGFiL2xpYnhlbmdudHRhYi5tYXAKaW5k ZXggZDVkYTM4OGEwZDhkLi45ZGUyMTgzODEwYTkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnMvZ250 dGFiL2xpYnhlbmdudHRhYi5tYXAKKysrIGIvdG9vbHMvbGlicy9nbnR0YWIvbGlieGVuZ250dGFi Lm1hcApAQCAtMzIsMyArMzIsMTEgQEAgVkVSU18xLjIgewogCQl4ZW5nbnR0YWJfZmQ7CiAJCXhl bmdudHNocl9mZDsKIH0gVkVSU18xLjE7CisKK1ZFUlNfMS4zIHsKKwlnbG9iYWw6CisJCXhlbmdu dHRhYl9kbWFidWZfZXhwX2Zyb21fcmVmczsKKwkJeGVuZ250dGFiX2RtYWJ1Zl9leHBfd2FpdF9y ZWxlYXNlZDsKKwkJeGVuZ250dGFiX2RtYWJ1Zl9pbXBfdG9fcmVmczsKKwkJeGVuZ250dGFiX2Rt YWJ1Zl9pbXBfcmVsZWFzZTsKK30gVkVSU18xLjI7CmRpZmYgLS1naXQgYS90b29scy9saWJzL2du dHRhYi9saW51eC5jIGIvdG9vbHMvbGlicy9nbnR0YWIvbGludXguYwppbmRleCA4MzQ3ZGRkM2Q5 Y2YuLmEwMWJiNmM2OThjNiAxMDA2NDQKLS0tIGEvdG9vbHMvbGlicy9nbnR0YWIvbGludXguYwor KysgYi90b29scy9saWJzL2dudHRhYi9saW51eC5jCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENv cHlyaWdodCAoYykgMjAwNy0yMDA4LCBEIEcgTXVycmF5IDxEZXJlay5NdXJyYXlAY2wuY2FtLmFj LnVrPgorICogQ29weXJpZ2h0IChjKSAyMDE4LCBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbywgRVBB TSBTeXN0ZW1zIEluYy4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0zMDksNiArMzEwLDEyMiBAQCBp bnQgb3NkZXBfZ250dGFiX2dyYW50X2NvcHkoeGVuZ250dGFiX2hhbmRsZSAqeGd0LAogICAgIHJl dHVybiByYzsKIH0KIAoraW50IG9zZGVwX2dudHRhYl9kbWFidWZfZXhwX2Zyb21fcmVmcyh4ZW5n bnR0YWJfaGFuZGxlICp4Z3QsIHVpbnQzMl90IGRvbWlkLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1aW50MzJfdCBmbGFncywgdWludDMyX3QgY291bnQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90ICpyZWZzLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqZG1hYnVmX2ZkKQor eworICAgIHN0cnVjdCBpb2N0bF9nbnRkZXZfZG1hYnVmX2V4cF9mcm9tX3JlZnMgKmZyb21fcmVm cyA9IE5VTEw7CisgICAgaW50IHJjID0gLTE7CisKKyAgICBpZiAoICFjb3VudCApCisgICAgewor ICAgICAgICBlcnJubyA9IEVJTlZBTDsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAg ZnJvbV9yZWZzID0gbWFsbG9jKHNpemVvZigqZnJvbV9yZWZzKSArCisgICAgICAgICAgICAgICAg ICAgICAgIChjb3VudCAtIDEpICogc2l6ZW9mKGZyb21fcmVmcy0+cmVmc1swXSkpOworICAgIGlm ICggIWZyb21fcmVmcyApCisgICAgeworICAgICAgICBlcnJubyA9IEVOT01FTTsKKyAgICAgICAg Z290byBvdXQ7CisgICAgfQorCisgICAgZnJvbV9yZWZzLT5mbGFncyA9IGZsYWdzOworICAgIGZy b21fcmVmcy0+Y291bnQgPSBjb3VudDsKKyAgICBmcm9tX3JlZnMtPmRvbWlkID0gZG9taWQ7CisK KyAgICBtZW1jcHkoZnJvbV9yZWZzLT5yZWZzLCByZWZzLCBjb3VudCAqIHNpemVvZihmcm9tX3Jl ZnMtPnJlZnNbMF0pKTsKKworICAgIGlmICggKHJjID0gaW9jdGwoeGd0LT5mZCwgSU9DVExfR05U REVWX0RNQUJVRl9FWFBfRlJPTV9SRUZTLCBmcm9tX3JlZnMpKSApCisgICAgeworICAgICAgICBH VEVSUk9SKHhndC0+bG9nZ2VyLCAiaW9jdGwgRE1BQlVGX0VYUF9GUk9NX1JFRlMgZmFpbGVkIik7 CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgICpkbWFidWZfZmQgPSBmcm9tX3JlZnMt PmZkOworICAgIHJjID0gMDsKKworb3V0OgorICAgIGZyZWUoZnJvbV9yZWZzKTsKKyAgICByZXR1 cm4gcmM7Cit9CisKK2ludCBvc2RlcF9nbnR0YWJfZG1hYnVmX2V4cF93YWl0X3JlbGVhc2VkKHhl bmdudHRhYl9oYW5kbGUgKnhndCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVpbnQzMl90IGZkLCB1aW50MzJfdCB3YWl0X3RvX21zKQoreworICAgIHN0cnVjdCBp b2N0bF9nbnRkZXZfZG1hYnVmX2V4cF93YWl0X3JlbGVhc2VkIHdhaXQ7CisgICAgaW50IHJjOwor CisgICAgd2FpdC5mZCA9IGZkOworICAgIHdhaXQud2FpdF90b19tcyA9IHdhaXRfdG9fbXM7CisK KyAgICBpZiAoIChyYyA9IGlvY3RsKHhndC0+ZmQsIElPQ1RMX0dOVERFVl9ETUFCVUZfRVhQX1dB SVRfUkVMRUFTRUQsICZ3YWl0KSkgKQorICAgIHsKKyAgICAgICAgaWYgKCBlcnJubyA9PSBFTk9F TlQgKQorICAgICAgICB7CisgICAgICAgICAgICAvKiBUaGUgYnVmZmVyIG1heSBoYXZlIGFscmVh ZHkgYmVlbiByZWxlYXNlZC4gKi8KKyAgICAgICAgICAgIGVycm5vID0gMDsKKyAgICAgICAgICAg IHJjID0gMDsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBHVEVSUk9SKHhndC0+bG9nZ2Vy LCAiaW9jdGwgRE1BQlVGX0VYUF9XQUlUX1JFTEVBU0VEIGZhaWxlZCIpOworICAgIH0KKworICAg IHJldHVybiByYzsKK30KKworaW50IG9zZGVwX2dudHRhYl9kbWFidWZfaW1wX3RvX3JlZnMoeGVu Z250dGFiX2hhbmRsZSAqeGd0LCB1aW50MzJfdCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVpbnQzMl90IGZkLCB1aW50MzJfdCBjb3VudCwgdWludDMyX3QgKnJl ZnMpCit7CisgICAgc3RydWN0IGlvY3RsX2dudGRldl9kbWFidWZfaW1wX3RvX3JlZnMgKnRvX3Jl ZnMgPSBOVUxMOworICAgIGludCByYyA9IC0xOworCisgICAgaWYgKCAhY291bnQgKQorICAgIHsK KyAgICAgICAgZXJybm8gPSBFSU5WQUw7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAg IHRvX3JlZnMgPSBtYWxsb2Moc2l6ZW9mKCp0b19yZWZzKSArCisgICAgICAgICAgICAgICAgICAg ICAoY291bnQgLSAxKSAqIHNpemVvZih0b19yZWZzLT5yZWZzWzBdKSk7CisgICAgaWYgKCAhdG9f cmVmcyApCisgICAgeworICAgICAgICBlcnJubyA9IEVOT01FTTsKKyAgICAgICAgZ290byBvdXQ7 CisgICAgfQorCisgICAgdG9fcmVmcy0+ZmQgPSBmZDsKKyAgICB0b19yZWZzLT5jb3VudCA9IGNv dW50OworICAgIHRvX3JlZnMtPmRvbWlkID0gZG9taWQ7CisKKyAgICBpZiAoIChyYyA9IGlvY3Rs KHhndC0+ZmQsIElPQ1RMX0dOVERFVl9ETUFCVUZfSU1QX1RPX1JFRlMsIHRvX3JlZnMpKSApCisg ICAgeworICAgICAgICBHVEVSUk9SKHhndC0+bG9nZ2VyLCAiaW9jdGwgRE1BQlVGX0lNUF9UT19S RUZTIGZhaWxlZCIpOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICBtZW1jcHkocmVm cywgdG9fcmVmcy0+cmVmcywgY291bnQgKiBzaXplb2YoKnJlZnMpKTsKKyAgICByYyA9IDA7CisK K291dDoKKyAgICBmcmVlKHRvX3JlZnMpOworICAgIHJldHVybiByYzsKK30KKworaW50IG9zZGVw X2dudHRhYl9kbWFidWZfaW1wX3JlbGVhc2UoeGVuZ250dGFiX2hhbmRsZSAqeGd0LCB1aW50MzJf dCBmZCkKK3sKKyAgICBzdHJ1Y3QgaW9jdGxfZ250ZGV2X2RtYWJ1Zl9pbXBfcmVsZWFzZSByZWxl YXNlOworICAgIGludCByYzsKKworICAgIHJlbGVhc2UuZmQgPSBmZDsKKworICAgIGlmICggKHJj ID0gaW9jdGwoeGd0LT5mZCwgSU9DVExfR05UREVWX0RNQUJVRl9JTVBfUkVMRUFTRSwgJnJlbGVh c2UpKSApCisgICAgICAgIEdURVJST1IoeGd0LT5sb2dnZXIsICJpb2N0bCBETUFCVUZfSU1QX1JF TEVBU0UgZmFpbGVkIik7CisKKyAgICByZXR1cm4gcmM7Cit9CisKIGludCBvc2RlcF9nbnRzaHJf b3Blbih4ZW5nbnRzaHJfaGFuZGxlICp4Z3MpCiB7CiAgICAgaW50IGZkID0gb3BlbihERVZYRU4g ImdudGFsbG9jIiwgT19SRFdSKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnMvZ250dGFiL21pbmlv cy5jIGIvdG9vbHMvbGlicy9nbnR0YWIvbWluaW9zLmMKaW5kZXggMDk1MWJjOWJhYzViLi5mNzhj YWFkZDMwNDMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnMvZ250dGFiL21pbmlvcy5jCisrKyBiL3Rv b2xzL2xpYnMvZ250dGFiL21pbmlvcy5jCkBAIC0xMTIsNiArMTEyLDMyIEBAIGludCBvc2RlcF9n bnR0YWJfZ3JhbnRfY29weSh4ZW5nbnR0YWJfaGFuZGxlICp4Z3QsCiB7CiAgICAgcmV0dXJuIC0x OwogfQorCitpbnQgb3NkZXBfZ250dGFiX2RtYWJ1Zl9leHBfZnJvbV9yZWZzKHhlbmdudHRhYl9o YW5kbGUgKnhndCwgdWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVpbnQzMl90IGZsYWdzLCB1aW50MzJfdCBjb3VudCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDMyX3QgKnJlZnMsIHVpbnQzMl90ICpm ZCkKK3sKKyAgICByZXR1cm4gLTE7Cit9CisKK2ludCBvc2RlcF9nbnR0YWJfZG1hYnVmX2V4cF93 YWl0X3JlbGVhc2VkKHhlbmdudHRhYl9oYW5kbGUgKnhndCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZkLCB1aW50MzJfdCB3YWl0X3RvX21zKQor eworICAgIHJldHVybiAtMTsKK30KKworaW50IG9zZGVwX2dudHRhYl9kbWFidWZfaW1wX3RvX3Jl ZnMoeGVuZ250dGFiX2hhbmRsZSAqeGd0LCB1aW50MzJfdCBkb21pZCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZkLCB1aW50MzJfdCBjb3VudCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpyZWZzKQoreworICAgIHJl dHVybiAtMTsKK30KKworaW50IG9zZGVwX2dudHRhYl9kbWFidWZfaW1wX3JlbGVhc2UoeGVuZ250 dGFiX2hhbmRsZSAqeGd0LCB1aW50MzJfdCBmZCkKK3sKKyAgICByZXR1cm4gLTE7Cit9CisKIC8q CiAgKiBMb2NhbCB2YXJpYWJsZXM6CiAgKiBtb2RlOiBDCmRpZmYgLS1naXQgYS90b29scy9saWJz L2dudHRhYi9wcml2YXRlLmggYi90b29scy9saWJzL2dudHRhYi9wcml2YXRlLmgKaW5kZXggZWQ4 ZGY0MGRlZjBkLi5jNWUyMzYzOWIxNDEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnMvZ250dGFiL3By aXZhdGUuaAorKysgYi90b29scy9saWJzL2dudHRhYi9wcml2YXRlLmgKQEAgLTM1LDYgKzM1LDE5 IEBAIGludCBvc2RlcF9nbnR0YWJfZ3JhbnRfY29weSh4ZW5nbnR0YWJfaGFuZGxlICp4Z3QsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgY291bnQsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgeGVuZ250dGFiX2dyYW50X2NvcHlfc2VnbWVudF90ICpzZWdzKTsKIAor aW50IG9zZGVwX2dudHRhYl9kbWFidWZfZXhwX2Zyb21fcmVmcyh4ZW5nbnR0YWJfaGFuZGxlICp4 Z3QsIHVpbnQzMl90IGRvbWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1aW50MzJfdCBmbGFncywgdWludDMyX3QgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90ICpyZWZzLCB1aW50MzJfdCAqZmQpOworCitp bnQgb3NkZXBfZ250dGFiX2RtYWJ1Zl9leHBfd2FpdF9yZWxlYXNlZCh4ZW5nbnR0YWJfaGFuZGxl ICp4Z3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJf dCBmZCwgdWludDMyX3Qgd2FpdF90b19tcyk7CisKK2ludCBvc2RlcF9nbnR0YWJfZG1hYnVmX2lt cF90b19yZWZzKHhlbmdudHRhYl9oYW5kbGUgKnhndCwgdWludDMyX3QgZG9taWQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmZCwgdWludDMyX3QgY291bnQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqcmVmcyk7CisK K2ludCBvc2RlcF9nbnR0YWJfZG1hYnVmX2ltcF9yZWxlYXNlKHhlbmdudHRhYl9oYW5kbGUgKnhn dCwgdWludDMyX3QgZmQpOworCiBpbnQgb3NkZXBfZ250c2hyX29wZW4oeGVuZ250c2hyX2hhbmRs ZSAqeGdzKTsKIGludCBvc2RlcF9nbnRzaHJfY2xvc2UoeGVuZ250c2hyX2hhbmRsZSAqeGdzKTsK IAotLSAKMi4xOC4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZl bA==