From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ian Campbell Subject: [PATCH XEN v4 04/23] tools: Refactor /dev/xen/evtchn wrappers into libxenevtchn. Date: Wed, 21 Oct 2015 16:23:11 +0100 Message-ID: <1445441010-25776-5-git-send-email-ian.campbell@citrix.com> References: <1445440941.9563.163.camel@citrix.com> <1445441010-25776-1-git-send-email-ian.campbell@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1445441010-25776-1-git-send-email-ian.campbell@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: ian.jackson@eu.citrix.com, wei.liu2@citrix.com, xen-devel@lists.xen.org Cc: Ian Campbell List-Id: xen-devel@lists.xenproject.org bGlieGVuZXZ0Y2huIHdpbGwgcHJvdmlkZSBhIHN0YWJsZSBBUEkgYW5kIEFCSSBmb3IgYWNjZXNz aW5nIHRoZQpldnRjaG4gZGV2aWNlLgoKVGhlIGZ1bmN0aW9ucyBhcmUgbW92ZWQgaW50byB0aGUg eGVuZXZ0Y2huIG5hbWVzcGFjZSB0byBtYWtlIGEgY2xlYW4KYnJlYWsgZnJvbSBsaWJ4YyBhbmQg YXZvaWQgYW1iaWd1aXR5IHJlZ2FyZGluZyB3aGljaCBpbnRlcmZhY2VzIGFyZQpzdGFibGUuCgpB bGwgaW4tdHJlZSB1c2VycyBhcmUgdXBkYXRlZCB0byB1c2UgdGhlIG5ldyBuYW1lcy4KClVwb24g cmVxdWVzdCAodmlhICNkZWZpbmUgWENfV0FOVF9DT01QQVRfRVZUQ0hOX0FQSSkgbGlieGVuY3Ry bCB3aWxsCnByb3ZpZGUgYSBjb21wYXQgQVBJIGZvciB0aGUgb2xkIG5hbWVzLiBUaGlzIGlzIHVz ZWQgYnkgcWVtdS14ZW4gZm9yCnRoZSB0aW1lIGJlaW5nLiBxZW11LXhlbi10cmFkaXRpb25hbCBp cyB1cGRhdGVkIGluIGxvY2tzdGVwLgoKVGhpcyBsZWF2ZXMgYSBmZXcgZXZlbnQgY2hhbm5lbCBy ZWxhdGVkIGZ1bmN0aW9ucyB3aGljaCBnbyB2aWEgcHJpdmNtZAooRVZUQ0hOT1ApIHJhdGhlciB0 aGFuIGlvY3RscyBvbiB0aGUgL2Rldi94ZW4vZXZ0Y2huIGRldmljZSBpbgpsaWJ4ZW5jdHJsLiBT cGVjaWZpY2FsbHk6CgogLSB4Y19ldnRjaG5fYWxsb2NfdW5ib3VuZAogLSB4Y19ldnRjaG5fcmVz ZXQKIC0geGNfZXZ0Y2huX3N0YXR1cwoKTm90ZSB0aGF0IHhjX2V2dGNobl9hbGxvY191bmJvdW5k J3MgZnVuY3Rpb25hbGl0eSBpcyBhbHNvIHByb3ZpZGVkIGJ5CnhlbmV2dGNobl9iaW5kX3VuYm91 bmRfcG9ydCgpIChuw6llIHhjX2V2dGNobl9iaW5kX3VuYm91bmRfcG9ydCkgYW5kIGlzCnByb2Jh Ymx5IHJlZHVuZGFudC4KClRoZXNlIGZ1bmN0aW9ucyBkbyBub3QgYXBwZWFyIHRvIGJlIG5lZWRl ZCBieSBxZW11LWRtLCBxZW11LXB2Cihwcm92aXNpb24gb2YgZGV2aWNlIG1vZGVsIHRvIEhWTSBn dWVzdHMgYW5kIFBWIGJhY2tlbmRzIHJlc3BlY3RpdmVseSkKb3IgYnkgbGlidmNoYW4gc3VnZ2Vz dGluZyB0aGV5IGFyZSBub3QgbmVlZGVkIGJ5IG5vbi10b29sc3RhY2sgdXNlcyBvZgpldmVudCBj aGFubmVscy4gUUVNVSBkb2VzIHVzZSB0aGVzZSBpbiBody94ZW5wdi94ZW5fZG9tYWluYnVpbGQu YyBidXQKdGhhdCBpcyBhICJ0b29sc3RhY2sgdXNlIi4KClRoZSBuZXcgbGlicmFyeSB1c2VzIGEg dmVyc2lvbiBzY3JpcHQgdG8gZW5zdXJlIHRoYXQgb25seSBleHBlY3RlZApzeW1ib2xzIGFyZSBl eHBvcnRlZCBhbmQgdG8gdmVyc2lvbiB0aGVtIHN1Y2ggdGhhdCBBQkkgZ3VhcmFudGVlcyBjYW4K YmUga2VwdCBpbiB0aGUgZnV0dXJlLgoKU2lnbmVkLW9mZi1ieTogSWFuIENhbXBiZWxsIDxpYW4u Y2FtcGJlbGxAY2l0cml4LmNvbT4KLS0tCgpNdXN0IGJlIGFwcGxpZWQgd2l0aDoKCiAtICJxZW11 LXhlbi10cmFkaXRpb25hbDogVXNlIGxpYnhlbmV2dGNobiIgYW5kIGEgY29ycmVzcG9uZGluZwog ICBRRU1VX1RBRyB1cGRhdGUgZm9sZGVkIGhlcmUuCiAtICJtaW5pLW9zOiBJbmNsdWRlIGxpYnhl bmV2dGNobiB3aXRoIGxpYnhjIiIgYW5kIGEgY29ycmVzcG9uZGluZwogICBidW1wIHRvIE1JTklP U19VUFNUUkVBTV9SRVZJU0lPTiBmb2xkZWQgaW4gaGVyZS4KCnYyOiBVcGRhdGUgZG9jIGF0IHNh bWUgdGltZQogICAgUmVtb3ZlZCBzb21lIHN0cmF5IGNvbXBhdCB0aGluZwp2MzogTW92ZWQgdG8g dG9vbHMvbGlicy9ldnRjaG4KdjQ6IHR5cGVkZWYgdGhlIHhlbmV2dGNobl9oYW5kbGUgaW4geGVu Z3Vlc3QuaCBpbnN0ZWFkIG9mICNpbmNsdWRlLCB0bwogICAgYXZvaWQgbGVha2luZyB0aGUgbGli eGVuZXZ0Y2huIG5hbWVzcGFjZSBpbnRvIGNhbGxlcnMgd2hvIG1heSBub3QKICAgIHdhbnQgaXQu IChBbmQgYWxzbyB0byBhdm9pZCBhZGRpbmcgbG90cyBvZiAtSSB0byBwbGFjZXMgbGlrZQogICAg c3R1YmRvbSBidWlsZHMpCi0tLQogLmdpdGlnbm9yZSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAxICsKIHN0dWJkb20vTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAxOSArLQogdG9vbHMvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICA1ICstCiB0b29scy9SdWxlcy5tayAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgMTQgKy0KIHRvb2xzL2NvbnNvbGUvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgMiArCiB0b29scy9jb25zb2xlL2RhZW1vbi9pby5jICAgICAgICAgICAgICAgICAg ICAgfCAgNDMgKystLQogdG9vbHMvbGlicy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAxICsKIHRvb2xzL2xpYnMvZXZ0Y2huL01ha2VmaWxlICAgICAgICAgICAgICAgICAg ICB8ICA2NSArKysrKysrCiB0b29scy9saWJzL2V2dGNobi9jb3JlLmMgICAgICAgICAgICAgICAg ICAgICAgfCAgNjkgKysrKysrKwogdG9vbHMvbGlicy9ldnRjaG4vZnJlZWJzZC5jICAgICAgICAg ICAgICAgICAgIHwgMTM4ICsrKysrKysrKysrKysKIHRvb2xzL2xpYnMvZXZ0Y2huL2luY2x1ZGUv eGVuZXZ0Y2huLmggICAgICAgICB8IDE1MCArKysrKysrKysrKysrKwogdG9vbHMvbGlicy9ldnRj aG4vbGlieGVuZXZ0Y2huLm1hcCAgICAgICAgICAgIHwgIDE0ICsrCiB0b29scy9saWJzL2V2dGNo bi9saW51eC5jICAgICAgICAgICAgICAgICAgICAgfCAxMzYgKysrKysrKysrKysrKwogdG9vbHMv bGlicy9ldnRjaG4vbWluaW9zLmMgICAgICAgICAgICAgICAgICAgIHwgMjY5ICsrKysrKysrKysr KysrKysrKysrKysrKysrCiB0b29scy9saWJzL2V2dGNobi9uZXRic2QuYyAgICAgICAgICAgICAg ICAgICAgfCAxNDcgKysrKysrKysrKysrKysKIHRvb2xzL2xpYnMvZXZ0Y2huL3ByaXZhdGUuaCAg ICAgICAgICAgICAgICAgICB8ICAyNSArKysKIHRvb2xzL2xpYnMvZXZ0Y2huL3NvbGFyaXMuYyAg ICAgICAgICAgICAgICAgICB8IDEzNSArKysrKysrKysrKysrCiB0b29scy9saWJzL3Rvb2xsb2cv aW5jbHVkZS94ZW50b29sbG9nLmggICAgICAgfCAgMTAgKwogdG9vbHMvbGlicy90b29sbG9nL3h0 bF9jb3JlLmMgICAgICAgICAgICAgICAgIHwgIDEwICsKIHRvb2xzL2xpYnMvdG9vbGxvZy94dGxf bG9nZ2VyX3N0ZGlvLmMgICAgICAgICB8ICAxMCArCiB0b29scy9saWJ2Y2hhbi9NYWtlZmlsZSAg ICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KIHRvb2xzL2xpYnZjaGFuL2luaXQuYyAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAyMCArLQogdG9vbHMvbGlidmNoYW4vaW8uYyAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDEyICstCiB0b29scy9saWJ2Y2hhbi9saWJ4ZW52Y2hhbi5o ICAgICAgICAgICAgICAgICAgfCAgIDMgKy0KIHRvb2xzL2xpYnhjL01ha2VmaWxlICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgOCArLQogdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmgg ICAgICAgICAgICAgICAgIHwgIDk5ICstLS0tLS0tLS0KIHRvb2xzL2xpYnhjL2luY2x1ZGUveGVu Y3RybF9jb21wYXQuaCAgICAgICAgICB8ICA0OCArKysrKwogdG9vbHMvbGlieGMvaW5jbHVkZS94 ZW5ndWVzdC5oICAgICAgICAgICAgICAgIHwgIDE0ICstCiB0b29scy9saWJ4Yy94Y19ldnRjaG5f Y29tcGF0LmMgICAgICAgICAgICAgICAgfCAgNzUgKysrKysrKwogdG9vbHMvbGlieGMveGNfZnJl ZWJzZF9vc2RlcC5jICAgICAgICAgICAgICAgIHwgMTAxIC0tLS0tLS0tLS0KIHRvb2xzL2xpYnhj L3hjX2xpbnV4X29zZGVwLmMgICAgICAgICAgICAgICAgICB8ICA5NSAtLS0tLS0tLS0KIHRvb2xz L2xpYnhjL3hjX21pbmlvcy5jICAgICAgICAgICAgICAgICAgICAgICB8IDIyMSAtLS0tLS0tLS0t LS0tLS0tLS0tLS0KIHRvb2xzL2xpYnhjL3hjX25ldGJzZC5jICAgICAgICAgICAgICAgICAgICAg ICB8IDEwOSAtLS0tLS0tLS0tLQogdG9vbHMvbGlieGMveGNfcHJpdmF0ZS5jICAgICAgICAgICAg ICAgICAgICAgIHwgIDQwIC0tLS0KIHRvb2xzL2xpYnhjL3hjX3ByaXZhdGUuaCAgICAgICAgICAg ICAgICAgICAgICB8ICAgNyAtCiB0b29scy9saWJ4Yy94Y19zb2xhcmlzLmMgICAgICAgICAgICAg ICAgICAgICAgfCAgOTcgLS0tLS0tLS0tLQogdG9vbHMvbGlieGMveGNfc3VzcGVuZC5jICAgICAg ICAgICAgICAgICAgICAgIHwgIDE4ICstCiB0b29scy9saWJ4bC9NYWtlZmlsZSAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDUgKy0KIHRvb2xzL2xpYnhsL2xpYnhsLmMgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgMiArLQogdG9vbHMvbGlieGwvbGlieGxfZG9tX3N1c3BlbmQuYyAg ICAgICAgICAgICAgIHwgICA0ICstCiB0b29scy9saWJ4bC9saWJ4bF9ldmVudC5jICAgICAgICAg ICAgICAgICAgICAgfCAgMTQgKy0KIHRvb2xzL2xpYnhsL2xpYnhsX2ludGVybmFsLmggICAgICAg ICAgICAgICAgICB8ICAgNSArLQogdG9vbHMvbWlzYy9NYWtlZmlsZSAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICA3ICstCiB0b29scy9taXNjL3hlbi1ocHRvb2wuYyAgICAgICAgICAgICAg ICAgICAgICAgfCAgMTMgKy0KIHRvb2xzL21pc2MveGVuLWxvd21lbWQuYyAgICAgICAgICAgICAg ICAgICAgICB8ICAxNSArLQogdG9vbHMvb2NhbWwvbGlicy9ldmVudGNobi9NYWtlZmlsZSAgICAg ICAgICAgIHwgICA0ICstCiB0b29scy9vY2FtbC9saWJzL2V2ZW50Y2huL3hlbmV2ZW50Y2huX3N0 dWJzLmMgfCAgMjAgKy0KIHRvb2xzL3B5dGhvbi9zZXR1cC5weSAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgNyArLQogdG9vbHMvdGVzdHMveGVuLWFjY2Vzcy94ZW4tYWNjZXNzLmMgICAgICAg ICAgIHwgICAyICstCiB0b29scy94Y3V0aWxzL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDQgKy0KIHRvb2xzL3hlbm1vbi9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgMiArCiB0b29scy94ZW5tb24veGVuYmFrZWQuYyAgICAgICAgICAgICAgICAgICAgICAg fCAgMTMgKy0KIHRvb2xzL3hlbnBhZ2luZy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICB8 ICAgNCArLQogdG9vbHMveGVucGFnaW5nL3hlbnBhZ2luZy5jICAgICAgICAgICAgICAgICAgIHwg IDE4ICstCiB0b29scy94ZW5wYWdpbmcveGVucGFnaW5nLmggICAgICAgICAgICAgICAgICAgfCAg IDMgKy0KIHRvb2xzL3hlbnN0b3JlL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICB8ICAg NSArLQogdG9vbHMveGVuc3RvcmUveGVuc3RvcmVkX2NvcmUuYyAgICAgICAgICAgICAgIHwgICA2 ICstCiB0b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfZG9tYWluLmMgICAgICAgICAgICAgfCAgMjUg Ky0tCiB0b29scy94ZW50cmFjZS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgfCAgIDUg Ky0KIHRvb2xzL3hlbnRyYWNlL3hlbnRyYWNlLmMgICAgICAgICAgICAgICAgICAgICB8ICAxMyAr LQogNjAgZmlsZXMgY2hhbmdlZCwgMTUxNyBpbnNlcnRpb25zKCspLCA5MTUgZGVsZXRpb25zKC0p CiBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvbGlicy9ldnRjaG4vTWFrZWZpbGUKIGNyZWF0ZSBt b2RlIDEwMDY0NCB0b29scy9saWJzL2V2dGNobi9jb3JlLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0 b29scy9saWJzL2V2dGNobi9mcmVlYnNkLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9saWJz L2V2dGNobi9pbmNsdWRlL3hlbmV2dGNobi5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvbGli cy9ldnRjaG4vbGlieGVuZXZ0Y2huLm1hcAogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL2xpYnMv ZXZ0Y2huL2xpbnV4LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9saWJzL2V2dGNobi9taW5p b3MuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL2xpYnMvZXZ0Y2huL25ldGJzZC5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgdG9vbHMvbGlicy9ldnRjaG4vcHJpdmF0ZS5oCiBjcmVhdGUgbW9kZSAx MDA2NDQgdG9vbHMvbGlicy9ldnRjaG4vc29sYXJpcy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgdG9v bHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsX2NvbXBhdC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgdG9v bHMvbGlieGMveGNfZXZ0Y2huX2NvbXBhdC5jCgpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5n aXRpZ25vcmUKaW5kZXggYTJjODVlMS4uYmYzODJlNSAxMDA2NDQKLS0tIGEvLmdpdGlnbm9yZQor KysgYi8uZ2l0aWdub3JlCkBAIC01OSw2ICs1OSw3IEBAIHN0dWJkb20vaW5jbHVkZQogc3R1YmRv bS9pb2VtdQogc3R1YmRvbS94ZW5zdG9yZQogc3R1YmRvbS9saWJ4ZW50b29sbG9nLSoKK3N0dWJk b20vbGlieGVuZXZ0Y2huLSoKIHN0dWJkb20vbGlieGMtKgogc3R1YmRvbS9sd2lwLSoKIHN0dWJk b20vbWluaS1vcy0qCmRpZmYgLS1naXQgYS9zdHViZG9tL01ha2VmaWxlIGIvc3R1YmRvbS9NYWtl ZmlsZQppbmRleCA5YzkyM2RkLi4zYjNiZmM5IDEwMDY0NAotLS0gYS9zdHViZG9tL01ha2VmaWxl CisrKyBiL3N0dWJkb20vTWFrZWZpbGUKQEAgLTMxOCw2ICszMTgsMTIgQEAgbWstaGVhZGVycy0k KFhFTl9UQVJHRVRfQVJDSCk6ICQoSU9FTVVfTElOS0ZBUk1fVEFSR0VUKQogCSAgbG4gLXNmICQo WEVOX1JPT1QpL3Rvb2xzL2xpYnMvdG9vbGxvZy9pbmNsdWRlLyouaCAuICYmIFwKIAkgIGxuIC1z ZiAkKFhFTl9ST09UKS90b29scy9saWJzL3Rvb2xsb2cvKi5jIC4gJiYgXAogCSAgbG4gLXNmICQo WEVOX1JPT1QpL3Rvb2xzL2xpYnMvdG9vbGxvZy9NYWtlZmlsZSAuICkKKwlta2RpciAtcCBsaWJz LSQoWEVOX1RBUkdFVF9BUkNIKS9ldnRjaG4vaW5jbHVkZQorCVsgLWggbGlicy0kKFhFTl9UQVJH RVRfQVJDSCkvZXZ0Y2huL01ha2VmaWxlIF0gfHwgKCBjZCBsaWJzLSQoWEVOX1RBUkdFVF9BUkNI KS9ldnRjaG4gJiYgXAorCSAgbG4gLXNmICQoWEVOX1JPT1QpL3Rvb2xzL2xpYnMvZXZ0Y2huLyou aCAuICYmIFwKKwkgIGxuIC1zZiAkKFhFTl9ST09UKS90b29scy9saWJzL2V2dGNobi9pbmNsdWRl LyouaCBpbmNsdWRlLyAmJiBcCisJICBsbiAtc2YgJChYRU5fUk9PVCkvdG9vbHMvbGlicy9ldnRj aG4vKi5jIC4gJiYgXAorCSAgbG4gLXNmICQoWEVOX1JPT1QpL3Rvb2xzL2xpYnMvZXZ0Y2huL01h a2VmaWxlIC4gKQogCW1rZGlyIC1wIGxpYnhjLSQoWEVOX1RBUkdFVF9BUkNIKQogCVsgLWggbGli eGMtJChYRU5fVEFSR0VUX0FSQ0gpL01ha2VmaWxlIF0gfHwgKCBjZCBsaWJ4Yy0kKFhFTl9UQVJH RVRfQVJDSCkgJiYgXAogCSAgbG4gLXNmICQoWEVOX1JPT1QpL3Rvb2xzL2xpYnhjLyouaCAuICYm IFwKQEAgLTM1MiwxMiArMzU4LDIzIEBAIGxpYnMtJChYRU5fVEFSR0VUX0FSQ0gpL3Rvb2xsb2cv bGlieGVudG9vbGxvZy5hOiAkKE5FV0xJQl9TVEFNUEZJTEUpCiAJQ1BQRkxBR1M9IiQoVEFSR0VU X0NQUEZMQUdTKSIgQ0ZMQUdTPSIkKFRBUkdFVF9DRkxBR1MpIiAkKE1BS0UpIERFU1RESVI9IC1D IGxpYnMtJChYRU5fVEFSR0VUX0FSQ0gpL3Rvb2xsb2cKIAogIyMjIyMjIworIyBsaWJ4ZW5ldnRj aG4KKyMjIyMjIyMKKworLlBIT05ZOiBsaWJ4ZW5ldnRjaG4KK2xpYnhlbmV2dGNobjogbGlicy0k KFhFTl9UQVJHRVRfQVJDSCkvZXZ0Y2huL2xpYnhlbmV2dGNobi5hCitsaWJzLSQoWEVOX1RBUkdF VF9BUkNIKS9ldnRjaG4vbGlieGVuZXZ0Y2huLmE6ICQoTkVXTElCX1NUQU1QRklMRSkKKwkkKE1B S0UpIC1DICQoWEVOX1JPT1QpL3Rvb2xzL2luY2x1ZGUKKwkkKE1BS0UpIERFU1RESVI9IC1DICQo TUlOSV9PUykgbGlua3MKKwlDUFBGTEFHUz0iJChUQVJHRVRfQ1BQRkxBR1MpIiBDRkxBR1M9IiQo VEFSR0VUX0NGTEFHUykiICQoTUFLRSkgREVTVERJUj0gLUMgbGlicy0kKFhFTl9UQVJHRVRfQVJD SCkvZXZ0Y2huCisKKyMjIyMjIyMKICMgbGlieGMKICMjIyMjIyMKIAogLlBIT05ZOiBsaWJ4Ywog bGlieGM6IGxpYnhjLSQoWEVOX1RBUkdFVF9BUkNIKS9saWJ4ZW5jdHJsLmEgbGlieGMtJChYRU5f VEFSR0VUX0FSQ0gpL2xpYnhlbmd1ZXN0LmEKLWxpYnhjLSQoWEVOX1RBUkdFVF9BUkNIKS9saWJ4 ZW5jdHJsLmE6IGxpYnhlbnRvb2xsb2cgY3Jvc3MtemxpYgorbGlieGMtJChYRU5fVEFSR0VUX0FS Q0gpL2xpYnhlbmN0cmwuYTogbGlieGVudG9vbGxvZyBsaWJ4ZW5ldnRjaG4gY3Jvc3MtemxpYgog CSQoTUFLRSkgLUMgJChYRU5fUk9PVCkvdG9vbHMvaW5jbHVkZQogCSQoTUFLRSkgREVTVERJUj0g LUMgJChNSU5JX09TKSBsaW5rcwogCUNQUEZMQUdTPSIkKFRBUkdFVF9DUFBGTEFHUykiIENGTEFH Uz0iJChUQVJHRVRfQ0ZMQUdTKSIgJChNQUtFKSBERVNURElSPSBDT05GSUdfTElCWENfTUlOSU9T PXkgLUMgbGlieGMtJChYRU5fVEFSR0VUX0FSQ0gpCmRpZmYgLS1naXQgYS90b29scy9NYWtlZmls ZSBiL3Rvb2xzL01ha2VmaWxlCmluZGV4IDhmY2Y4ZTkuLjkyMmYwMDggMTAwNjQ0Ci0tLSBhL3Rv b2xzL01ha2VmaWxlCisrKyBiL3Rvb2xzL01ha2VmaWxlCkBAIC0yNDgsOCArMjQ4LDEwIEBAIHN1 YmRpci1hbGwtcWVtdS14ZW4tZGlyOiBxZW11LXhlbi1kaXItZmluZAogCQktLWxpYmRpcj0kKExJ QkVYRUNfTElCKSBcCiAJCS0taW5jbHVkZWRpcj0kKExJQkVYRUNfSU5DKSBcCiAJCS0tc291cmNl LXBhdGg9JCRzb3VyY2UgXAotCQktLWV4dHJhLWNmbGFncz0iLUkkKFhFTl9ST09UKS90b29scy9p bmNsdWRlIFwKKwkJLS1leHRyYS1jZmxhZ3M9Ii1EWENfV0FOVF9DT01QQVRfRVZUQ0hOX0FQST0x IFwKKwkJLUkkKFhFTl9ST09UKS90b29scy9pbmNsdWRlIFwKIAkJLUkkKFhFTl9ST09UKS90b29s cy9saWJzL3Rvb2xsb2cvaW5jbHVkZSBcCisJCS1JJChYRU5fUk9PVCkvdG9vbHMvbGlicy9ldnRj aG4vaW5jbHVkZSBcCiAJCS1JJChYRU5fUk9PVCkvdG9vbHMvbGlieGMvaW5jbHVkZSBcCiAJCS1J JChYRU5fUk9PVCkvdG9vbHMveGVuc3RvcmUvaW5jbHVkZSBcCiAJCS1JJChYRU5fUk9PVCkvdG9v bHMveGVuc3RvcmUvY29tcGF0L2luY2x1ZGUgXApAQCAtMjU3LDYgKzI1OSw3IEBAIHN1YmRpci1h bGwtcWVtdS14ZW4tZGlyOiBxZW11LXhlbi1kaXItZmluZAogCQktLWV4dHJhLWxkZmxhZ3M9Ii1M JChYRU5fUk9PVCkvdG9vbHMvbGlieGMgXAogCQktTCQoWEVOX1JPT1QpL3Rvb2xzL3hlbnN0b3Jl IFwKIAkJLVdsLC1ycGF0aC1saW5rPSQoWEVOX1JPT1QpL3Rvb2xzL2xpYnMvdG9vbGxvZyBcCisJ CS1XbCwtcnBhdGgtbGluaz0kKFhFTl9ST09UKS90b29scy9saWJzL2V2dGNobiBcCiAJCSQoUUVN VV9VUFNUUkVBTV9SUEFUSCkiIFwKIAkJLS1iaW5kaXI9JChMSUJFWEVDX0JJTikgXAogCQktLWRh dGFkaXI9JChTSEFSRURJUikvcWVtdS14ZW4gXApkaWZmIC0tZ2l0IGEvdG9vbHMvUnVsZXMubWsg Yi90b29scy9SdWxlcy5tawppbmRleCBiNjAyMDRjLi4yOWQwMWI0IDEwMDY0NAotLS0gYS90b29s cy9SdWxlcy5taworKysgYi90b29scy9SdWxlcy5tawpAQCAtMTEsNiArMTEsNyBAQCBJTlNUQUxM ID0gJChYRU5fUk9PVCkvdG9vbHMvY3Jvc3MtaW5zdGFsbAogCiBYRU5fSU5DTFVERSAgICAgICAg PSAkKFhFTl9ST09UKS90b29scy9pbmNsdWRlCiBYRU5fTElCWEVOVE9PTExPRyAgPSAkKFhFTl9S T09UKS90b29scy9saWJzL3Rvb2xsb2cKK1hFTl9MSUJYRU5FVlRDSE4gICA9ICQoWEVOX1JPT1Qp L3Rvb2xzL2xpYnMvZXZ0Y2huCiBYRU5fTElCWEMgICAgICAgICAgPSAkKFhFTl9ST09UKS90b29s cy9saWJ4YwogWEVOX1hFTkxJR0hUICAgICAgID0gJChYRU5fUk9PVCkvdG9vbHMvbGlieGwKIFhF Tl9YRU5TVE9SRSAgICAgICA9ICQoWEVOX1JPT1QpL3Rvb2xzL3hlbnN0b3JlCkBAIC04MiwxMyAr ODMsMTggQEAgU0hERVBTX2xpYnhlbnRvb2xsb2cgPQogTERMSUJTX2xpYnhlbnRvb2xsb2cgPSAk KFhFTl9MSUJYRU5UT09MTE9HKS9saWJ4ZW50b29sbG9nJChsaWJleHRlbnNpb24pCiBTSExJQl9s aWJ4ZW50b29sbG9nICA9IC1XbCwtcnBhdGgtbGluaz0kKFhFTl9MSUJYRU5UT09MTE9HKQogCitD RkxBR1NfbGlieGVuZXZ0Y2huID0gLUkkKFhFTl9MSUJYRU5FVlRDSE4pL2luY2x1ZGUgJChDRkxB R1NfeGVuaW5jbHVkZSkKK1NIREVQU19saWJ4ZW5ldnRjaG4gPQorTERMSUJTX2xpYnhlbmV2dGNo biA9ICQoWEVOX0xJQlhFTkVWVENITikvbGlieGVuZXZ0Y2huJChsaWJleHRlbnNpb24pCitTSExJ Ql9saWJ4ZW5ldnRjaG4gID0gLVdsLC1ycGF0aC1saW5rPSQoWEVOX0xJQlhFTkVWVENITikKKwog Q0ZMQUdTX2xpYnhlbmN0cmwgPSAtSSQoWEVOX0xJQlhDKS9pbmNsdWRlICQoQ0ZMQUdTX2xpYnhl bnRvb2xsb2cpICQoQ0ZMQUdTX3hlbmluY2x1ZGUpCi1TSERFUFNfbGlieGVuY3RybCA9ICQoU0hM SUJfbGlieGVudG9vbGxvZykgCitTSERFUFNfbGlieGVuY3RybCA9ICQoU0hMSUJfbGlieGVudG9v bGxvZykgJChTSExJQl9saWJ4ZW5ldnRjaG4pCiBMRExJQlNfbGlieGVuY3RybCA9ICQoU0hERVBT X2xpYnhlbmN0cmwpICQoWEVOX0xJQlhDKS9saWJ4ZW5jdHJsJChsaWJleHRlbnNpb24pCiBTSExJ Ql9saWJ4ZW5jdHJsICA9ICQoU0hERVBTX2xpYnhlbmN0cmwpIC1XbCwtcnBhdGgtbGluaz0kKFhF Tl9MSUJYQykKIAotQ0ZMQUdTX2xpYnhlbmd1ZXN0ID0gLUkkKFhFTl9MSUJYQykvaW5jbHVkZSAk KENGTEFHU194ZW5pbmNsdWRlKQotU0hERVBTX2xpYnhlbmd1ZXN0ID0KK0NGTEFHU19saWJ4ZW5n dWVzdCA9IC1JJChYRU5fTElCWEMpL2luY2x1ZGUgJChDRkxBR1NfbGlieGVuZXZ0Y2huKSAkKENG TEFHU194ZW5pbmNsdWRlKQorU0hERVBTX2xpYnhlbmd1ZXN0ID0gJChTSExJQl9saWJ4ZW5ldnRj aG4pCiBMRExJQlNfbGlieGVuZ3Vlc3QgPSAkKFNIREVQU19saWJ4ZW5ndWVzdCkgJChYRU5fTElC WEMpL2xpYnhlbmd1ZXN0JChsaWJleHRlbnNpb24pCiBTSExJQl9saWJ4ZW5ndWVzdCAgPSAkKFNI REVQU19saWJ4ZW5ndWVzdCkgLVdsLC1ycGF0aC1saW5rPUwkKFhFTl9MSUJYQykKIApAQCAtMTAz LDcgKzEwOSw3IEBAIExETElCU19saWJ4ZW5zdGF0ICA9ICQoU0hERVBTX2xpYnhlbnN0YXQpICQo WEVOX0xJQlhFTlNUQVQpL2xpYnhlbnN0YXQkKGxpYmV4dGVuCiBTSExJQl9saWJ4ZW5zdGF0ICAg PSAkKFNIREVQU19saWJ4ZW5zdGF0KSAtV2wsLXJwYXRoLWxpbms9JChYRU5fTElCWEVOU1RBVCkK IAogQ0ZMQUdTX2xpYnhlbnZjaGFuID0gLUkkKFhFTl9MSUJWQ0hBTikKLVNIREVQU19saWJ4ZW52 Y2hhbiA9ICQoU0hMSUJfbGlieGVuY3RybCkgJChTSExJQl9saWJ4ZW5zdG9yZSkKK1NIREVQU19s aWJ4ZW52Y2hhbiA9ICQoU0hMSUJfbGlieGVuY3RybCkgJChTSExJQl9saWJ4ZW5zdG9yZSkgJChT SExJQl9saWJ4ZW5ldnRjaG4pCiBMRExJQlNfbGlieGVudmNoYW4gPSAkKFNIREVQU19saWJ4ZW52 Y2hhbikgJChYRU5fTElCVkNIQU4pL2xpYnhlbnZjaGFuJChsaWJleHRlbnNpb24pCiBTSExJQl9s aWJ4ZW52Y2hhbiAgPSAkKFNIREVQU19saWJ4ZW52Y2hhbikgLVdsLC1ycGF0aC1saW5rPSQoWEVO X0xJQlZDSEFOKQogCmRpZmYgLS1naXQgYS90b29scy9jb25zb2xlL01ha2VmaWxlIGIvdG9vbHMv Y29uc29sZS9NYWtlZmlsZQppbmRleCA3N2U4ZjI5Li40YjNhNDkyIDEwMDY0NAotLS0gYS90b29s cy9jb25zb2xlL01ha2VmaWxlCisrKyBiL3Rvb2xzL2NvbnNvbGUvTWFrZWZpbGUKQEAgLTMsOCAr MywxMCBAQCBpbmNsdWRlICQoWEVOX1JPT1QpL3Rvb2xzL1J1bGVzLm1rCiAKIENGTEFHUyAgKz0g LVdlcnJvcgogCitDRkxBR1MgICs9ICQoQ0ZMQUdTX2xpYnhlbmV2dGNobikKIENGTEFHUyAgKz0g JChDRkxBR1NfbGlieGVuY3RybCkKIENGTEFHUyAgKz0gJChDRkxBR1NfbGlieGVuc3RvcmUpCitM RExJQlMgKz0gJChMRExJQlNfbGlieGVuZXZ0Y2huKQogTERMSUJTICs9ICQoTERMSUJTX2xpYnhl bmN0cmwpCiBMRExJQlMgKz0gJChMRExJQlNfbGlieGVuc3RvcmUpCiBMRExJQlMgKz0gJChTT0NL RVRfTElCUykKZGlmZiAtLWdpdCBhL3Rvb2xzL2NvbnNvbGUvZGFlbW9uL2lvLmMgYi90b29scy9j b25zb2xlL2RhZW1vbi9pby5jCmluZGV4IGNhZmM3YjcuLjJmMmU5YzUgMTAwNjQ0Ci0tLSBhL3Rv b2xzL2NvbnNvbGUvZGFlbW9uL2lvLmMKKysrIGIvdG9vbHMvY29uc29sZS9kYWVtb24vaW8uYwpA QCAtMjEsNiArMjEsNyBAQAogCiAjaW5jbHVkZSAidXRpbHMuaCIKICNpbmNsdWRlICJpby5oIgor I2luY2x1ZGUgPHhlbmV2dGNobi5oPgogI2luY2x1ZGUgPHhlbnN0b3JlLmg+CiAjaW5jbHVkZSA8 eGVuL2lvL2NvbnNvbGUuaD4KICNpbmNsdWRlIDx4ZW4vZ3JhbnRfdGFibGUuaD4KQEAgLTEwMSw3 ICsxMDIsNyBAQCBzdHJ1Y3QgZG9tYWluIHsKIAlpbnQgcmluZ19yZWY7CiAJZXZ0Y2huX3BvcnRf b3JfZXJyb3JfdCBsb2NhbF9wb3J0OwogCWV2dGNobl9wb3J0X29yX2Vycm9yX3QgcmVtb3RlX3Bv cnQ7Ci0JeGNfZXZ0Y2huICp4Y2VfaGFuZGxlOworCXhlbmV2dGNobl9oYW5kbGUgKnhjZV9oYW5k bGU7CiAJaW50IHhjZV9wb2xsZmRfaWR4OwogCXN0cnVjdCB4ZW5jb25zX2ludGVyZmFjZSAqaW50 ZXJmYWNlOwogCWludCBldmVudF9jb3VudDsKQEAgLTE4NSw3ICsxODYsNyBAQCBzdGF0aWMgdm9p ZCBidWZmZXJfYXBwZW5kKHN0cnVjdCBkb21haW4gKmRvbSkKIAogCXhlbl9tYigpOwogCWludGYt Pm91dF9jb25zID0gY29uczsKLQl4Y19ldnRjaG5fbm90aWZ5KGRvbS0+eGNlX2hhbmRsZSwgZG9t LT5sb2NhbF9wb3J0KTsKKwl4ZW5ldnRjaG5fbm90aWZ5KGRvbS0+eGNlX2hhbmRsZSwgZG9tLT5s b2NhbF9wb3J0KTsKIAogCS8qIEdldCB0aGUgZGF0YSB0byB0aGUgbG9nZmlsZSBhcyBlYXJseSBh cyBwb3NzaWJsZSBiZWNhdXNlIGlmCiAJICogbm8gb25lIGlzIGxpc3RlbmluZyBvbiB0aGUgY29u c29sZSBwdHkgdGhlbiBpdCB3aWxsIGZpbGwgdXAKQEAgLTU4NCwyMiArNTg1LDIyIEBAIHN0YXRp YyBpbnQgZG9tYWluX2NyZWF0ZV9yaW5nKHN0cnVjdCBkb21haW4gKmRvbSkKIAlkb20tPmxvY2Fs X3BvcnQgPSAtMTsKIAlkb20tPnJlbW90ZV9wb3J0ID0gLTE7CiAJaWYgKGRvbS0+eGNlX2hhbmRs ZSAhPSBOVUxMKQotCQl4Y19ldnRjaG5fY2xvc2UoZG9tLT54Y2VfaGFuZGxlKTsKKwkJeGVuZXZ0 Y2huX2Nsb3NlKGRvbS0+eGNlX2hhbmRsZSk7CiAKIAkvKiBPcGVuaW5nIGV2dGNobiBpbmRlcGVu ZGVudGx5IGZvciBlYWNoIGNvbnNvbGUgaXMgYSBiaXQKIAkgKiB3YXN0ZWZ1bCwgYnV0IHRoYXQn cyBob3cgdGhlIGNvZGUgaXMgc3RydWN0dXJlZC4uLiAqLwotCWRvbS0+eGNlX2hhbmRsZSA9IHhj X2V2dGNobl9vcGVuKE5VTEwsIDApOworCWRvbS0+eGNlX2hhbmRsZSA9IHhlbmV2dGNobl9vcGVu KE5VTEwsIDApOwogCWlmIChkb20tPnhjZV9oYW5kbGUgPT0gTlVMTCkgewogCQllcnIgPSBlcnJu bzsKIAkJZ290byBvdXQ7CiAJfQogIAotCXJjID0geGNfZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4o ZG9tLT54Y2VfaGFuZGxlLAorCXJjID0geGVuZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4oZG9tLT54 Y2VfaGFuZGxlLAogCQlkb20tPmRvbWlkLCByZW1vdGVfcG9ydCk7CiAKIAlpZiAocmMgPT0gLTEp IHsKIAkJZXJyID0gZXJybm87Ci0JCXhjX2V2dGNobl9jbG9zZShkb20tPnhjZV9oYW5kbGUpOwor CQl4ZW5ldnRjaG5fY2xvc2UoZG9tLT54Y2VfaGFuZGxlKTsKIAkJZG9tLT54Y2VfaGFuZGxlID0g TlVMTDsKIAkJZ290byBvdXQ7CiAJfQpAQCAtNjA5LDcgKzYxMCw3IEBAIHN0YXRpYyBpbnQgZG9t YWluX2NyZWF0ZV9yaW5nKHN0cnVjdCBkb21haW4gKmRvbSkKIAlpZiAoZG9tLT5tYXN0ZXJfZmQg PT0gLTEpIHsKIAkJaWYgKCFkb21haW5fY3JlYXRlX3R0eShkb20pKSB7CiAJCQllcnIgPSBlcnJu bzsKLQkJCXhjX2V2dGNobl9jbG9zZShkb20tPnhjZV9oYW5kbGUpOworCQkJeGVuZXZ0Y2huX2Ns b3NlKGRvbS0+eGNlX2hhbmRsZSk7CiAJCQlkb20tPnhjZV9oYW5kbGUgPSBOVUxMOwogCQkJZG9t LT5sb2NhbF9wb3J0ID0gLTE7CiAJCQlkb20tPnJlbW90ZV9wb3J0ID0gLTE7CkBAIC03NDksNyAr NzUwLDcgQEAgc3RhdGljIHZvaWQgc2h1dGRvd25fZG9tYWluKHN0cnVjdCBkb21haW4gKmQpCiAJ d2F0Y2hfZG9tYWluKGQsIGZhbHNlKTsKIAlkb21haW5fdW5tYXBfaW50ZXJmYWNlKGQpOwogCWlm IChkLT54Y2VfaGFuZGxlICE9IE5VTEwpCi0JCXhjX2V2dGNobl9jbG9zZShkLT54Y2VfaGFuZGxl KTsKKwkJeGVuZXZ0Y2huX2Nsb3NlKGQtPnhjZV9oYW5kbGUpOwogCWQtPnhjZV9oYW5kbGUgPSBO VUxMOwogfQogCkBAIC04MzksNyArODQwLDcgQEAgc3RhdGljIHZvaWQgaGFuZGxlX3R0eV9yZWFk KHN0cnVjdCBkb21haW4gKmRvbSkKIAkJfQogCQl4ZW5fd21iKCk7CiAJCWludGYtPmluX3Byb2Qg PSBwcm9kOwotCQl4Y19ldnRjaG5fbm90aWZ5KGRvbS0+eGNlX2hhbmRsZSwgZG9tLT5sb2NhbF9w b3J0KTsKKwkJeGVuZXZ0Y2huX25vdGlmeShkb20tPnhjZV9oYW5kbGUsIGRvbS0+bG9jYWxfcG9y dCk7CiAJfSBlbHNlIHsKIAkJZG9tYWluX2Nsb3NlX3R0eShkb20pOwogCQlzaHV0ZG93bl9kb21h aW4oZG9tKTsKQEAgLTg3MSw3ICs4NzIsNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfcmluZ19yZWFk KHN0cnVjdCBkb21haW4gKmRvbSkKIAlpZiAoZG9tLT5pc19kZWFkKQogCQlyZXR1cm47CiAKLQlp ZiAoKHBvcnQgPSB4Y19ldnRjaG5fcGVuZGluZyhkb20tPnhjZV9oYW5kbGUpKSA9PSAtMSkKKwlp ZiAoKHBvcnQgPSB4ZW5ldnRjaG5fcGVuZGluZyhkb20tPnhjZV9oYW5kbGUpKSA9PSAtMSkKIAkJ cmV0dXJuOwogCiAJZG9tLT5ldmVudF9jb3VudCsrOwpAQCAtODc5LDcgKzg4MCw3IEBAIHN0YXRp YyB2b2lkIGhhbmRsZV9yaW5nX3JlYWQoc3RydWN0IGRvbWFpbiAqZG9tKQogCWJ1ZmZlcl9hcHBl bmQoZG9tKTsKIAogCWlmIChkb20tPmV2ZW50X2NvdW50IDwgUkFURV9MSU1JVF9BTExPV0FOQ0Up Ci0JCSh2b2lkKXhjX2V2dGNobl91bm1hc2soZG9tLT54Y2VfaGFuZGxlLCBwb3J0KTsKKwkJKHZv aWQpeGVuZXZ0Y2huX3VubWFzayhkb20tPnhjZV9oYW5kbGUsIHBvcnQpOwogfQogCiBzdGF0aWMg dm9pZCBoYW5kbGVfeHModm9pZCkKQEAgLTkwNiw3ICs5MDcsNyBAQCBzdGF0aWMgdm9pZCBoYW5k bGVfeHModm9pZCkKIAlmcmVlKHZlYyk7CiB9CiAKLXN0YXRpYyB2b2lkIGhhbmRsZV9odl9sb2dz KHhjX2V2dGNobiAqeGNlX2hhbmRsZSwgYm9vbCBmb3JjZSkKK3N0YXRpYyB2b2lkIGhhbmRsZV9o dl9sb2dzKHhlbmV2dGNobl9oYW5kbGUgKnhjZV9oYW5kbGUsIGJvb2wgZm9yY2UpCiB7CiAJc3Rh dGljIGNoYXIgYnVmZmVyWzEwMjQqMTZdOwogCWNoYXIgKmJ1ZnB0ciA9IGJ1ZmZlcjsKQEAgLTkx NCw3ICs5MTUsNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfaHZfbG9ncyh4Y19ldnRjaG4gKnhjZV9o YW5kbGUsIGJvb2wgZm9yY2UpCiAJc3RhdGljIHVpbnQzMl90IGluZGV4ID0gMDsKIAlldnRjaG5f cG9ydF9vcl9lcnJvcl90IHBvcnQgPSAtMTsKIAotCWlmICghZm9yY2UgJiYgKChwb3J0ID0geGNf ZXZ0Y2huX3BlbmRpbmcoeGNlX2hhbmRsZSkpID09IC0xKSkKKwlpZiAoIWZvcmNlICYmICgocG9y dCA9IHhlbmV2dGNobl9wZW5kaW5nKHhjZV9oYW5kbGUpKSA9PSAtMSkpCiAJCXJldHVybjsKIAog CWRvCkBAIC05MzgsNyArOTM5LDcgQEAgc3RhdGljIHZvaWQgaGFuZGxlX2h2X2xvZ3MoeGNfZXZ0 Y2huICp4Y2VfaGFuZGxlLCBib29sIGZvcmNlKQogCX0gd2hpbGUgKHNpemUgPT0gc2l6ZW9mKGJ1 ZmZlcikpOwogCiAJaWYgKHBvcnQgIT0gLTEpCi0JCSh2b2lkKXhjX2V2dGNobl91bm1hc2soeGNl X2hhbmRsZSwgcG9ydCk7CisJCSh2b2lkKXhlbmV2dGNobl91bm1hc2soeGNlX2hhbmRsZSwgcG9y dCk7CiB9CiAKIHN0YXRpYyB2b2lkIGhhbmRsZV9sb2dfcmVsb2FkKHZvaWQpCkBAIC0xMDA2LDEw ICsxMDA3LDEwIEBAIHZvaWQgaGFuZGxlX2lvKHZvaWQpCiAJZXZ0Y2huX3BvcnRfb3JfZXJyb3Jf dCBsb2dfaHZfZXZ0Y2huID0gLTE7CiAJaW50IHhjZV9wb2xsZmRfaWR4ID0gLTE7CiAJaW50IHhz X3BvbGxmZF9pZHggPSAtMTsKLQl4Y19ldnRjaG4gKnhjZV9oYW5kbGUgPSBOVUxMOworCXhlbmV2 dGNobl9oYW5kbGUgKnhjZV9oYW5kbGUgPSBOVUxMOwogCiAJaWYgKGxvZ19odikgewotCQl4Y2Vf aGFuZGxlID0geGNfZXZ0Y2huX29wZW4oTlVMTCwgMCk7CisJCXhjZV9oYW5kbGUgPSB4ZW5ldnRj aG5fb3BlbihOVUxMLCAwKTsKIAkJaWYgKHhjZV9oYW5kbGUgPT0gTlVMTCkgewogCQkJZG9sb2co TE9HX0VSUiwgIkZhaWxlZCB0byBvcGVuIHhjZSBoYW5kbGU6ICVkICglcykiLAogCQkJICAgICAg ZXJybm8sIHN0cmVycm9yKGVycm5vKSk7CkBAIC0xMDE4LDcgKzEwMTksNyBAQCB2b2lkIGhhbmRs ZV9pbyh2b2lkKQogCQlsb2dfaHZfZmQgPSBjcmVhdGVfaHZfbG9nKCk7CiAJCWlmIChsb2dfaHZf ZmQgPT0gLTEpCiAJCQlnb3RvIG91dDsKLQkJbG9nX2h2X2V2dGNobiA9IHhjX2V2dGNobl9iaW5k X3ZpcnEoeGNlX2hhbmRsZSwgVklSUV9DT05fUklORyk7CisJCWxvZ19odl9ldnRjaG4gPSB4ZW5l dnRjaG5fYmluZF92aXJxKHhjZV9oYW5kbGUsIFZJUlFfQ09OX1JJTkcpOwogCQlpZiAobG9nX2h2 X2V2dGNobiA9PSAtMSkgewogCQkJZG9sb2coTE9HX0VSUiwgIkZhaWxlZCB0byBiaW5kIHRvIFZJ UlFfQ09OX1JJTkc6ICIKIAkJCSAgICAgICIlZCAoJXMpIiwgZXJybm8sIHN0cmVycm9yKGVycm5v KSk7CkBAIC0xMDQ3LDcgKzEwNDgsNyBAQCB2b2lkIGhhbmRsZV9pbyh2b2lkKQogCQl4c19wb2xs ZmRfaWR4ID0gc2V0X2Zkcyh4c19maWxlbm8oeHMpLCBQT0xMSU58UE9MTFBSSSk7CiAKIAkJaWYg KGxvZ19odikKLQkJCXhjZV9wb2xsZmRfaWR4ID0gc2V0X2Zkcyh4Y19ldnRjaG5fZmQoeGNlX2hh bmRsZSksCisJCQl4Y2VfcG9sbGZkX2lkeCA9IHNldF9mZHMoeGVuZXZ0Y2huX2ZkKHhjZV9oYW5k bGUpLAogCQkJCQkJIFBPTExJTnxQT0xMUFJJKTsKIAogCQlpZiAoY2xvY2tfZ2V0dGltZShDTE9D S19NT05PVE9OSUMsICZ0cykgPCAwKQpAQCAtMTA2Niw3ICsxMDY3LDcgQEAgdm9pZCBoYW5kbGVf aW8odm9pZCkKIAkJCWlmICgobm93KzUpID4gZC0+bmV4dF9wZXJpb2QpIHsKIAkJCQlkLT5uZXh0 X3BlcmlvZCA9IG5vdyArIFJBVEVfTElNSVRfUEVSSU9EOwogCQkJCWlmIChkLT5ldmVudF9jb3Vu dCA+PSBSQVRFX0xJTUlUX0FMTE9XQU5DRSkgewotCQkJCQkodm9pZCl4Y19ldnRjaG5fdW5tYXNr KGQtPnhjZV9oYW5kbGUsIGQtPmxvY2FsX3BvcnQpOworCQkJCQkodm9pZCl4ZW5ldnRjaG5fdW5t YXNrKGQtPnhjZV9oYW5kbGUsIGQtPmxvY2FsX3BvcnQpOwogCQkJCX0KIAkJCQlkLT5ldmVudF9j b3VudCA9IDA7CiAJCQl9CkBAIC0xMDgyLDcgKzEwODMsNyBAQCB2b2lkIGhhbmRsZV9pbyh2b2lk KQogCQkJCWlmIChkaXNjYXJkX292ZXJmbG93ZWRfZGF0YSB8fAogCQkJCSAgICAhZC0+YnVmZmVy Lm1heF9jYXBhY2l0eSB8fAogCQkJCSAgICBkLT5idWZmZXIuc2l6ZSA8IGQtPmJ1ZmZlci5tYXhf Y2FwYWNpdHkpIHsKLQkJCQkJaW50IGV2dGNobl9mZCA9IHhjX2V2dGNobl9mZChkLT54Y2VfaGFu ZGxlKTsKKwkJCQkJaW50IGV2dGNobl9mZCA9IHhlbmV2dGNobl9mZChkLT54Y2VfaGFuZGxlKTsK IAkJCQkJZC0+eGNlX3BvbGxmZF9pZHggPSBzZXRfZmRzKGV2dGNobl9mZCwKIAkJCQkJCQkJICAg IFBPTExJTnxQT0xMUFJJKTsKIAkJCQl9CkBAIC0xMjAyLDcgKzEyMDMsNyBAQCB2b2lkIGhhbmRs ZV9pbyh2b2lkKQogCQlsb2dfaHZfZmQgPSAtMTsKIAl9CiAJaWYgKHhjZV9oYW5kbGUgIT0gTlVM TCkgewotCQl4Y19ldnRjaG5fY2xvc2UoeGNlX2hhbmRsZSk7CisJCXhlbmV2dGNobl9jbG9zZSh4 Y2VfaGFuZGxlKTsKIAkJeGNlX2hhbmRsZSA9IE5VTEw7CiAJfQogCWlmICh4Y2dfaGFuZGxlICE9 IE5VTEwpIHsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnMvTWFrZWZpbGUgYi90b29scy9saWJzL01h a2VmaWxlCmluZGV4IDczYmU1MDAuLjBlM2Y1MjMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnMvTWFr ZWZpbGUKKysrIGIvdG9vbHMvbGlicy9NYWtlZmlsZQpAQCAtMyw1ICszLDYgQEAgaW5jbHVkZSAk KFhFTl9ST09UKS90b29scy9SdWxlcy5tawogCiBTVUJESVJTLXkgOj0KIFNVQkRJUlMteSArPSB0 b29sbG9nCitTVUJESVJTLXkgKz0gZXZ0Y2huCiAKIGFsbCBjbGVhbiBpbnN0YWxsIGRpc3RjbGVh bjogJTogc3ViZGlycy0lCmRpZmYgLS1naXQgYS90b29scy9saWJzL2V2dGNobi9NYWtlZmlsZSBi L3Rvb2xzL2xpYnMvZXZ0Y2huL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjg1ZWQ2ZGMKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy9saWJzL2V2dGNobi9NYWtl ZmlsZQpAQCAtMCwwICsxLDY1IEBACitYRU5fUk9PVCA9ICQoQ1VSRElSKS8uLi8uLi8uLgoraW5j bHVkZSAkKFhFTl9ST09UKS90b29scy9SdWxlcy5taworCitNQUpPUiAgICA9IDEKK01JTk9SICAg ID0gMAorU0hMSUJfTERGTEFHUyArPSAtV2wsLS12ZXJzaW9uLXNjcmlwdD1saWJ4ZW5ldnRjaG4u bWFwCisKK0NGTEFHUyAgICs9IC1XZXJyb3IgLVdtaXNzaW5nLXByb3RvdHlwZXMKK0NGTEFHUyAg ICs9IC1JLi9pbmNsdWRlICQoQ0ZMQUdTX3hlbmluY2x1ZGUpCitDRkxBR1MgICArPSAkKENGTEFH U19saWJ4ZW50b29sbG9nKQorCitTUkNTLXkgICAgICAgICAgICAgICAgICs9IGNvcmUuYworU1JD Uy0kKENPTkZJR19MaW51eCkgICArPSBsaW51eC5jCitTUkNTLSQoQ09ORklHX0ZyZWVCU0QpICs9 IGZyZWVic2QuYworU1JDUy0kKENPTkZJR19TdW5PUykgICArPSBzb2xhcmlzLmMKK1NSQ1MtJChD T05GSUdfTmV0QlNEKSAgKz0gbmV0YnNkLmMKK1NSQ1MtJChDT05GSUdfTWluaU9TKSAgKz0gbWlu aW9zLmMKKworTElCX09CSlMgOj0gJChwYXRzdWJzdCAlLmMsJS5vLCQoU1JDUy15KSkKK1BJQ19P QkpTIDo9ICQocGF0c3Vic3QgJS5jLCUub3BpYywkKFNSQ1MteSkpCisKK0xJQiA6PSBsaWJ4ZW5l dnRjaG4uYQoraWZuZXEgKCQobm9zaGFyZWRsaWJzKSx5KQorTElCICs9IGxpYnhlbmV2dGNobi5z bworZW5kaWYKKworLlBIT05ZOiBhbGwKK2FsbDogYnVpbGQKKworLlBIT05ZOiBidWlsZAorYnVp bGQ6CisJJChNQUtFKSBsaWJzCisKKy5QSE9OWTogbGlicworbGliczogJChMSUIpCisKKworbGli eGVuZXZ0Y2huLmE6ICQoTElCX09CSlMpCisJJChBUikgcmMgJEAgJF4KKworbGlieGVuZXZ0Y2hu LnNvOiBsaWJ4ZW5ldnRjaG4uc28uJChNQUpPUikKKwkkKFNZTUxJTktfU0hMSUIpICQ8ICRACits aWJ4ZW5ldnRjaG4uc28uJChNQUpPUik6IGxpYnhlbmV2dGNobi5zby4kKE1BSk9SKS4kKE1JTk9S KQorCSQoU1lNTElOS19TSExJQikgJDwgJEAKKworbGlieGVuZXZ0Y2huLnNvLiQoTUFKT1IpLiQo TUlOT1IpOiAkKFBJQ19PQkpTKSBsaWJ4ZW5ldnRjaG4ubWFwCisJJChDQykgJChMREZMQUdTKSAt V2wsJChTT05BTUVfTERGTEFHKSAtV2wsbGlieGVuZXZ0Y2huLnNvLiQoTUFKT1IpICQoU0hMSUJf TERGTEFHUykgLW8gJEAgJChQSUNfT0JKUykgJChMRExJQlNfbGlieGVudG9vbGxvZykgJChBUFBF TkRfTERGTEFHUykKKworLlBIT05ZOiBpbnN0YWxsCitpbnN0YWxsOiBidWlsZAorCSQoSU5TVEFM TF9ESVIpICQoREVTVERJUikkKGxpYmRpcikKKwkkKElOU1RBTExfRElSKSAkKERFU1RESVIpJChp bmNsdWRlZGlyKQorCSQoSU5TVEFMTF9TSExJQikgbGlieGVuZXZ0Y2huLnNvLiQoTUFKT1IpLiQo TUlOT1IpICQoREVTVERJUikkKGxpYmRpcikKKwkkKElOU1RBTExfREFUQSkgbGlieGVuZXZ0Y2hu LmEgJChERVNURElSKSQobGliZGlyKQorCSQoU1lNTElOS19TSExJQikgbGlieGVuZXZ0Y2huLnNv LiQoTUFKT1IpLiQoTUlOT1IpICQoREVTVERJUikkKGxpYmRpcikvbGlieGVuZXZ0Y2huLnNvLiQo TUFKT1IpCisJJChTWU1MSU5LX1NITElCKSBsaWJ4ZW5ldnRjaG4uc28uJChNQUpPUikgJChERVNU RElSKSQobGliZGlyKS9saWJ4ZW5ldnRjaG4uc28KKwkkKElOU1RBTExfREFUQSkgaW5jbHVkZS94 ZW5ldnRjaG4uaCAkKERFU1RESVIpJChpbmNsdWRlZGlyKQorCisuUEhPTlk6IFRBR1MKK1RBR1M6 CisJZXRhZ3MgLXQgKi5jICouaAorCisuUEhPTlk6IGNsZWFuCitjbGVhbjoKKwlybSAtcmYgKi5y cG0gJChMSUIpICp+ICQoREVQUykgJChMSUJfT0JKUykgJChQSUNfT0JKUykKZGlmZiAtLWdpdCBh L3Rvb2xzL2xpYnMvZXZ0Y2huL2NvcmUuYyBiL3Rvb2xzL2xpYnMvZXZ0Y2huL2NvcmUuYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzcxMjZlCi0tLSAvZGV2L251bGwKKysr IGIvdG9vbHMvbGlicy9ldnRjaG4vY29yZS5jCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBUaGlz IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOworICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UuCisgKgorICogVGhpcyBsaWJy YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRo aXMgbGlicmFyeTsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgor ICovCisKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworI2luY2x1 ZGUgInByaXZhdGUuaCIKKworeGVuZXZ0Y2huX2hhbmRsZSAqeGVuZXZ0Y2huX29wZW4oeGVudG9v bGxvZ19sb2dnZXIgKmxvZ2dlciwgdW5zaWduZWQgb3Blbl9mbGFncykKK3sKKyAgICB4ZW5ldnRj aG5faGFuZGxlICp4Y2UgPSBtYWxsb2Moc2l6ZW9mKCp4Y2UpKTsKKyAgICBpbnQgcmM7CisKKyAg ICBpZiAoIXhjZSkgcmV0dXJuIE5VTEw7CisKKyAgICB4Y2UtPmZkID0gLTE7CisgICAgeGNlLT5s b2dnZXIgPSBsb2dnZXI7CisgICAgeGNlLT5sb2dnZXJfdG9mcmVlICA9IE5VTEw7CisKKyAgICBp ZiAoIXhjZS0+bG9nZ2VyKSB7CisgICAgICAgIHhjZS0+bG9nZ2VyID0geGNlLT5sb2dnZXJfdG9m cmVlID0KKyAgICAgICAgICAgICh4ZW50b29sbG9nX2xvZ2dlciopCisgICAgICAgICAgICB4dGxf Y3JlYXRlbG9nZ2VyX3N0ZGlvc3RyZWFtKHN0ZGVyciwgWFRMX1BST0dSRVNTLCAwKTsKKyAgICAg ICAgaWYgKCF4Y2UtPmxvZ2dlcikgZ290byBlcnI7CisgICAgfQorCisgICAgcmMgPSBvc2RlcF9l dnRjaG5fb3Blbih4Y2UpOworICAgIGlmICggcmMgIDwgMCApIGdvdG8gZXJyOworCisgICAgcmV0 dXJuIHhjZTsKKworZXJyOgorICAgIG9zZGVwX2V2dGNobl9jbG9zZSh4Y2UpOworICAgIHh0bF9s b2dnZXJfZGVzdHJveSh4Y2UtPmxvZ2dlcl90b2ZyZWUpOworICAgIGZyZWUoeGNlKTsKKyAgICBy ZXR1cm4gTlVMTDsKK30KKworaW50IHhlbmV2dGNobl9jbG9zZSh4ZW5ldnRjaG5faGFuZGxlICp4 Y2UpCit7CisgICAgaW50IHJjOworCisgICAgcmMgPSBvc2RlcF9ldnRjaG5fY2xvc2UoeGNlKTsK KyAgICB4dGxfbG9nZ2VyX2Rlc3Ryb3koeGNlLT5sb2dnZXJfdG9mcmVlKTsKKyAgICBmcmVlKHhj ZSk7CisgICAgcmV0dXJuIHJjOworfQorCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9k ZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRh Yi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAt LWdpdCBhL3Rvb2xzL2xpYnMvZXZ0Y2huL2ZyZWVic2QuYyBiL3Rvb2xzL2xpYnMvZXZ0Y2huL2Zy ZWVic2QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzZmMDUyCi0tLSAv ZGV2L251bGwKKysrIGIvdG9vbHMvbGlicy9ldnRjaG4vZnJlZWJzZC5jCkBAIC0wLDAgKzEsMTM4 IEBACisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIENvcHlyaWdodCAyMDA2IFN1biBN aWNyb3N5c3RlbXMsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBVc2UgaXMgc3ViamVj dCB0byBsaWNlbnNlIHRlcm1zLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247CisgKiB2ZXJzaW9uIDIuMSBv ZiB0aGUgTGljZW5zZS4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg UHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKgorICogU3BsaXQgb2ZmIGZyb20geGNf ZnJlZWJzZF9vc2RlcC5jCisgKi8KKworI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8dW5p c3RkLmg+CisKKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKworI2luY2x1ZGUgPHhlbi9zeXMvZXZ0 Y2huLmg+CisKKyNpbmNsdWRlICJwcml2YXRlLmgiCisKKyNkZWZpbmUgRVZUQ0hOX0RFViAgICAg ICIvZGV2L3hlbi9ldnRjaG4iCisKK2ludCBvc2RlcF9ldnRjaG5fb3Blbih4ZW5ldnRjaG5faGFu ZGxlICp4Y2UpCit7CisgICAgaW50IGZkID0gb3BlbihFVlRDSE5fREVWLCBPX1JEV1IpOworICAg IGlmICggZmQgPT0gLTEgKQorICAgICAgICByZXR1cm4gLTE7CisgICAgeGNlLT5mZCA9IGZkOwor ICAgIHJldHVybiAwOworfQorCitpbnQgb3NkZXBfZXZ0Y2huX2Nsb3NlKHhlbmV2dGNobl9oYW5k bGUgKnhjZSkKK3sKKyAgICBpZiAoIHhjZS0+ZmQgPT0gLTEgKQorICAgICAgICByZXR1cm4gMDsK KworICAgIHJldHVybiBjbG9zZSh4Y2UtPmZkKTsKK30KKworaW50IHhlbmV2dGNobl9mZCh4ZW5l dnRjaG5faGFuZGxlICp4Y2UpCit7CisgICAgcmV0dXJuIHhjZS0+ZmQ7Cit9CisKK2ludCB4ZW5l dnRjaG5fbm90aWZ5KHhlbmV2dGNobl9oYW5kbGUgKnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KQor eworICAgIGludCBmZCA9IHhjZS0+ZmQ7CisgICAgc3RydWN0IGlvY3RsX2V2dGNobl9ub3RpZnkg bm90aWZ5OworCisgICAgbm90aWZ5LnBvcnQgPSBwb3J0OworCisgICAgcmV0dXJuIGlvY3RsKGZk LCBJT0NUTF9FVlRDSE5fTk9USUZZLCAmbm90aWZ5KTsKK30KKworZXZ0Y2huX3BvcnRfb3JfZXJy b3JfdCB4ZW5ldnRjaG5fYmluZF91bmJvdW5kX3BvcnQoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLCBp bnQgZG9taWQpCit7CisgICAgaW50IHJldCwgZmQgPSB4Y2UtPmZkOworICAgIHN0cnVjdCBpb2N0 bF9ldnRjaG5fYmluZF91bmJvdW5kX3BvcnQgYmluZDsKKworICAgIGJpbmQucmVtb3RlX2RvbWFp biA9IGRvbWlkOworCisgICAgcmV0ID0gaW9jdGwoZmQsIElPQ1RMX0VWVENITl9CSU5EX1VOQk9V TkRfUE9SVCwgJmJpbmQpOworICAgIHJldHVybiAoIHJldCA9PSAwICkgPyBiaW5kLnBvcnQgOiBy ZXQ7Cit9CisKK2V2dGNobl9wb3J0X29yX2Vycm9yX3QKK3hlbmV2dGNobl9iaW5kX2ludGVyZG9t YWluKHhlbmV2dGNobl9oYW5kbGUgKnhjZSwgaW50IGRvbWlkLCBldnRjaG5fcG9ydF90IHJlbW90 ZV9wb3J0KQoreworICAgIGludCByZXQsIGZkID0geGNlLT5mZDsKKyAgICBzdHJ1Y3QgaW9jdGxf ZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4gYmluZDsKKworICAgIGJpbmQucmVtb3RlX2RvbWFpbiA9 IGRvbWlkOworICAgIGJpbmQucmVtb3RlX3BvcnQgPSByZW1vdGVfcG9ydDsKKworICAgIHJldCA9 IGlvY3RsKGZkLCBJT0NUTF9FVlRDSE5fQklORF9JTlRFUkRPTUFJTiwgJmJpbmQpOworICAgIHJl dHVybiAoIHJldCA9PSAwICkgPyBiaW5kLnBvcnQgOiByZXQ7Cit9CisKK2V2dGNobl9wb3J0X29y X2Vycm9yX3QgeGVuZXZ0Y2huX2JpbmRfdmlycSh4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIHVuc2ln bmVkIGludCB2aXJxKQoreworICAgIGludCByZXQsIGZkID0geGNlLT5mZDsKKyAgICBzdHJ1Y3Qg aW9jdGxfZXZ0Y2huX2JpbmRfdmlycSBiaW5kOworCisgICAgYmluZC52aXJxID0gdmlycTsKKwor ICAgIHJldCA9IGlvY3RsKGZkLCBJT0NUTF9FVlRDSE5fQklORF9WSVJRLCAmYmluZCk7CisgICAg cmV0dXJuICggcmV0ID09IDAgKSA/IGJpbmQucG9ydCA6IHJldDsKK30KKworaW50IHhlbmV2dGNo bl91bmJpbmQoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQpCit7Cisg ICAgaW50IGZkID0geGNlLT5mZDsKKyAgICBzdHJ1Y3QgaW9jdGxfZXZ0Y2huX3VuYmluZCB1bmJp bmQ7CisKKyAgICB1bmJpbmQucG9ydCA9IHBvcnQ7CisKKyAgICByZXR1cm4gaW9jdGwoZmQsIElP Q1RMX0VWVENITl9VTkJJTkQsICZ1bmJpbmQpOworfQorCitldnRjaG5fcG9ydF9vcl9lcnJvcl90 IHhlbmV2dGNobl9wZW5kaW5nKHhlbmV2dGNobl9oYW5kbGUgKnhjZSkKK3sKKyAgICBpbnQgZmQg PSB4Y2UtPmZkOworICAgIGV2dGNobl9wb3J0X3QgcG9ydDsKKworICAgIGlmICggcmVhZChmZCwg JnBvcnQsIHNpemVvZihwb3J0KSkgIT0gc2l6ZW9mKHBvcnQpICkKKyAgICAgICAgcmV0dXJuIC0x OworCisgICAgcmV0dXJuIHBvcnQ7Cit9CisKK2ludCB4ZW5ldnRjaG5fdW5tYXNrKHhlbmV2dGNo bl9oYW5kbGUgKnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KQoreworICAgIGludCBmZCA9IHhjZS0+ ZmQ7CisKKyAgICBpZiAoIHdyaXRlKGZkLCAmcG9ydCwgc2l6ZW9mKHBvcnQpKSAhPSBzaXplb2Yo cG9ydCkgKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBM b2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBj LWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBu aWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlicy9ldnRjaG4vaW5jbHVkZS94 ZW5ldnRjaG4uaCBiL3Rvb2xzL2xpYnMvZXZ0Y2huL2luY2x1ZGUveGVuZXZ0Y2huLmgKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM4MGZhMwotLS0gL2Rldi9udWxsCisrKyBi L3Rvb2xzL2xpYnMvZXZ0Y2huL2luY2x1ZGUveGVuZXZ0Y2huLmgKQEAgLTAsMCArMSwxNTAgQEAK Ky8qCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz c2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOworICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UuCisgKgor ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LgorICoKKyAqIFNwbGl0IG9mZiBmcm9tOgorICogeGVuY3RybC5oCisgKgorICog QSBsaWJyYXJ5IGZvciBsb3ctbGV2ZWwgYWNjZXNzIHRvIHRoZSBYZW4gY29udHJvbCBpbnRlcmZh Y2VzLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAwMy0yMDA0LCBLIEEgRnJhc2VyLgorICovCisK KyNpZm5kZWYgWEVORVZUQ0hOX0gKKyNkZWZpbmUgWEVORVZUQ0hOX0gKKworI2luY2x1ZGUgPHN0 ZGludC5oPgorCisjaW5jbHVkZSA8eGVuL2V2ZW50X2NoYW5uZWwuaD4KKworLyogQSBwb3J0IGlk ZW50aWZpZXIgaXMgZ3VhcmFudGVlZCB0byBmaXQgaW4gMzEgYml0cy4gKi8KK3R5cGVkZWYgaW50 IGV2dGNobl9wb3J0X29yX2Vycm9yX3Q7CisKK3R5cGVkZWYgc3RydWN0IHhlbmV2dGNobl9oYW5k bGUgeGVuZXZ0Y2huX2hhbmRsZTsKKworLyogQ2FsbGVycyB3aG8gZG9uJ3QgY2FyZSBkb24ndCBu ZWVkIHRvICNpbmNsdWRlIDx4ZW50b29sbG9nLmg+ICovCit0eXBlZGVmIHN0cnVjdCB4ZW50b29s bG9nX2xvZ2dlciB4ZW50b29sbG9nX2xvZ2dlcjsKKworLyoKKyAqIEVWRU5UIENIQU5ORUwgRlVO Q1RJT05TCisgKgorICogTm9uZSBvZiB0aGVzZSBkbyBhbnkgbG9nZ2luZy4KKyAqLworCisvKgor ICogUmV0dXJuIGEgaGFuZGxlIHRvIHRoZSBldmVudCBjaGFubmVsIGRyaXZlciwgb3IgTlVMTCBv biBmYWlsdXJlLCBpbgorICogd2hpY2ggY2FzZSBlcnJubyB3aWxsIGJlIHNldCBhcHByb3ByaWF0 ZWx5LgorICoKKyAqIE5vdGU6CisgKiBBZnRlciBmb3JrIGEgY2hpbGQgcHJvY2VzcyBtdXN0IG5v dCB1c2UgYW55IG9wZW5lZCB4YyBldnRjaG4KKyAqIGhhbmRsZSBpbmhlcml0ZWQgZnJvbSB0aGVp ciBwYXJlbnQuIFRoZXkgbXVzdCBvcGVuIGEgbmV3IGhhbmRsZSBpZgorICogdGhleSB3YW50IHRv IGludGVyYWN0IHdpdGggeGMuCisgKgorICogQmVmb3JlIFhlbiBwcmUtNC4xIHRoaXMgZnVuY3Rp b24gd291bGQgc29tZXRpbWVzIHJlcG9ydCBlcnJvcnMgd2l0aCBwZXJyb3IuCisgKi8KKy8qIEN1 cnJlbnRseSBubyBmbGFncyBhcmUgZGVmaW5lZCAqLworeGVuZXZ0Y2huX2hhbmRsZSAqeGVuZXZ0 Y2huX29wZW4oeGVudG9vbGxvZ19sb2dnZXIgKmxvZ2dlciwgdW5zaWduZWQgb3Blbl9mbGFncyk7 CisKKy8qCisgKiBDbG9zZSBhIGhhbmRsZSBwcmV2aW91c2x5IGFsbG9jYXRlZCB3aXRoIHhlbmV2 dGNobl9vcGVuKCkuCisgKi8KK2ludCB4ZW5ldnRjaG5fY2xvc2UoeGVuZXZ0Y2huX2hhbmRsZSAq eGNlKTsKKworLyoKKyAqIFJldHVybiBhbiBmZCB0aGF0IGNhbiBiZSBzZWxlY3QoKWVkIG9uLgor ICoKKyAqIE5vdGUgdGhhdCBkdWUgdG8gYnVncywgc2V0dGluZyB0aGlzIGZkIHRvIG5vbiBibG9j a2luZyBtYXkgbm90CisgKiB3b3JrOiB5b3Ugd291bGQgaG9wZSB0aGF0IGl0IHdvdWxkIHJlc3Vs dCBpbiB4ZW5ldnRjaG5fcGVuZGluZworICogZmFpbGluZyB3aXRoIEVXT1VMREJMT0NLIGlmIHRo ZXJlIGFyZSBubyBldmVudHMgc2lnbmFsZWQsIGJ1dCBpbgorICogZmFjdCBpdCBtYXkgYmxvY2su ICAoQnVnIGlzIHByZXNlbnQgaW4gYXQgbGVhc3QgTGludXggMy4xMiwgYW5kCisgKiBwZXJoYXBz IG9uIG90aGVyIHBsYXRmb3JtcyBvciBsYXRlciB2ZXJzaW9uLikKKyAqCisgKiBUbyBiZSBzYWZl LCB5b3UgbXVzdCB1c2UgcG9sbCgpIG9yIHNlbGVjdCgpIGJlZm9yZSBlYWNoIGNhbGwgdG8KKyAq IHhlbmV2dGNobl9wZW5kaW5nLiAgSWYgeW91IGhhdmUgbXVsdGlwbGUgdGhyZWFkcyAob3IgcHJv Y2Vzc2VzKQorICogc2hhcmluZyBhIHNpbmdsZSB4Y2UgaGFuZGxlIHRoaXMgd2lsbCBub3Qgd29y aywgYW5kIHRoZXJlIGlzIG5vCisgKiBzdHJhaWdodGZvcndhcmQgd29ya2Fyb3VuZC4gIFBsZWFz ZSBkZXNpZ24geW91ciBwcm9ncmFtIHNvbWUgb3RoZXIKKyAqIHdheS4KKyAqLworaW50IHhlbmV2 dGNobl9mZCh4ZW5ldnRjaG5faGFuZGxlICp4Y2UpOworCisvKgorICogTm90aWZ5IHRoZSBnaXZl biBldmVudCBjaGFubmVsLiBSZXR1cm5zIC0xIG9uIGZhaWx1cmUsIGluIHdoaWNoIGNhc2UKKyAq IGVycm5vIHdpbGwgYmUgc2V0IGFwcHJvcHJpYXRlbHkuCisgKi8KK2ludCB4ZW5ldnRjaG5fbm90 aWZ5KHhlbmV2dGNobl9oYW5kbGUgKnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KTsKKworLyoKKyAq IFJldHVybnMgYSBuZXcgZXZlbnQgcG9ydCBhd2FpdGluZyBpbnRlcmRvbWFpbiBjb25uZWN0aW9u IGZyb20gdGhlIGdpdmVuCisgKiBkb21haW4gSUQsIG9yIC0xIG9uIGZhaWx1cmUsIGluIHdoaWNo IGNhc2UgZXJybm8gd2lsbCBiZSBzZXQgYXBwcm9wcmlhdGVseS4KKyAqLworZXZ0Y2huX3BvcnRf b3JfZXJyb3JfdAoreGVuZXZ0Y2huX2JpbmRfdW5ib3VuZF9wb3J0KHhlbmV2dGNobl9oYW5kbGUg KnhjZSwgaW50IGRvbWlkKTsKKworLyoKKyAqIFJldHVybnMgYSBuZXcgZXZlbnQgcG9ydCBib3Vu ZCB0byB0aGUgcmVtb3RlIHBvcnQgZm9yIHRoZSBnaXZlbiBkb21haW4gSUQsCisgKiBvciAtMSBv biBmYWlsdXJlLCBpbiB3aGljaCBjYXNlIGVycm5vIHdpbGwgYmUgc2V0IGFwcHJvcHJpYXRlbHku CisgKi8KK2V2dGNobl9wb3J0X29yX2Vycm9yX3QKK3hlbmV2dGNobl9iaW5kX2ludGVyZG9tYWlu KHhlbmV2dGNobl9oYW5kbGUgKnhjZSwgaW50IGRvbWlkLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgZXZ0Y2huX3BvcnRfdCByZW1vdGVfcG9ydCk7CisKKy8qCisgKiBCaW5kIGFuIGV2ZW50 IGNoYW5uZWwgdG8gdGhlIGdpdmVuIFZJUlEuIFJldHVybnMgdGhlIGV2ZW50IGNoYW5uZWwgYm91 bmQgdG8KKyAqIHRoZSBWSVJRLCBvciAtMSBvbiBmYWlsdXJlLCBpbiB3aGljaCBjYXNlIGVycm5v IHdpbGwgYmUgc2V0IGFwcHJvcHJpYXRlbHkuCisgKi8KK2V2dGNobl9wb3J0X29yX2Vycm9yX3QK K3hlbmV2dGNobl9iaW5kX3ZpcnEoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLCB1bnNpZ25lZCBpbnQg dmlycSk7CisKKy8qCisgKiBVbmJpbmQgdGhlIGdpdmVuIGV2ZW50IGNoYW5uZWwuIFJldHVybnMg LTEgb24gZmFpbHVyZSwgaW4gd2hpY2ggY2FzZSBlcnJubworICogd2lsbCBiZSBzZXQgYXBwcm9w cmlhdGVseS4KKyAqLworaW50IHhlbmV2dGNobl91bmJpbmQoeGVuZXZ0Y2huX2hhbmRsZSAqeGNl LCBldnRjaG5fcG9ydF90IHBvcnQpOworCisvKgorICogUmV0dXJuIHRoZSBuZXh0IGV2ZW50IGNo YW5uZWwgdG8gYmVjb21lIHBlbmRpbmcsIG9yIC0xIG9uIGZhaWx1cmUsIGluIHdoaWNoCisgKiBj YXNlIGVycm5vIHdpbGwgYmUgc2V0IGFwcHJvcHJpYXRlbHkuCisgKgorICogQXQgdGhlIGh5cGVy dmlzb3IgbGV2ZWwgdGhlIGV2ZW50IGNoYW5uZWwgd2lsbCBoYXZlIGJlZW4gbWFza2VkLAorICog YW5kIHRoZW4gY2xlYXJlZCwgYnkgdGhlIHVuZGVybHlpbmcgbWFjaGluZXJ5IChldnRjaG4ga2Vy bmVsCisgKiBkcml2ZXIsIG9yIGVxdWl2YWxlbnQpLiAgU28gaWYgdGhlIGV2ZW50IGNoYW5uZWwg aXMgc2lnbmFsZWQgYWdhaW4KKyAqIGFmdGVyIGl0IGlzIHJldHVybmVkIGhlcmUsIGl0IHdpbGwg YmUgcXVldWVkIHVwLCBhbmQgZGVsaXZlcmVkCisgKiBhZ2FpbiBhZnRlciB5b3UgdW5tYXNrIGl0 LiAgKFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBpbiB0aGUgWGVuCisgKiBwdWJsaWMgaGVhZGVyIGV2 ZW50X2NoYW5uZWwuaC4pCisgKgorICogT24gcmVjZWl2aW5nIHRoZSBub3RpZmljYXRpb24gZnJv bSB4ZW5ldnRjaG5fcGVuZGluZywgeW91IHNob3VsZAorICogbm9ybWFsbHk6IGNoZWNrIChieSBv dGhlciBtZWFucykgd2hhdCB3b3JrIG5lZWRzIGRvaW5nOyBkbyB0aGUKKyAqIG5lY2Vzc2FyeSB3 b3JrIChpZiBhbnkpOyB1bm1hc2sgdGhlIGV2ZW50IGNoYW5uZWwgd2l0aAorICogeGVuZXZ0Y2hu X3VubWFzayAoaWYgeW91IHdhbnQgdG8gcmVjZWl2ZSBhbnkgZnVydGhlcgorICogbm90aWZpY2F0 aW9ucykuCisgKi8KK2V2dGNobl9wb3J0X29yX2Vycm9yX3QKK3hlbmV2dGNobl9wZW5kaW5nKHhl bmV2dGNobl9oYW5kbGUgKnhjZSk7CisKKy8qCisgKiBVbm1hc2sgdGhlIGdpdmVuIGV2ZW50IGNo YW5uZWwuIFJldHVybnMgLTEgb24gZmFpbHVyZSwgaW4gd2hpY2ggY2FzZSBlcnJubworICogd2ls bCBiZSBzZXQgYXBwcm9wcmlhdGVseS4KKyAqLworaW50IHhlbmV2dGNobl91bm1hc2soeGVuZXZ0 Y2huX2hhbmRsZSAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQpOworCisjZW5kaWYKKworLyoKKyAq IExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAq IGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6 IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS90b29scy9saWJzL2V2dGNobi9saWJ4ZW5l dnRjaG4ubWFwIGIvdG9vbHMvbGlicy9ldnRjaG4vbGlieGVuZXZ0Y2huLm1hcApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDM3OTQwCi0tLSAvZGV2L251bGwKKysrIGIvdG9v bHMvbGlicy9ldnRjaG4vbGlieGVuZXZ0Y2huLm1hcApAQCAtMCwwICsxLDE0IEBACitWRVJTXzEu MCB7CisJZ2xvYmFsOgorCQl4ZW5ldnRjaG5fZmQ7CisJCXhlbmV2dGNobl9iaW5kX3VuYm91bmRf cG9ydDsKKwkJeGVuZXZ0Y2huX3VuYmluZDsKKwkJeGVuZXZ0Y2huX3VubWFzazsKKwkJeGVuZXZ0 Y2huX25vdGlmeTsKKwkJeGVuZXZ0Y2huX2JpbmRfaW50ZXJkb21haW47CisJCXhlbmV2dGNobl9i aW5kX3ZpcnE7CisJCXhlbmV2dGNobl9vcGVuOworCQl4ZW5ldnRjaG5fY2xvc2U7CisJCXhlbmV2 dGNobl9wZW5kaW5nOworCWxvY2FsOiAqOyAvKiBEbyBub3QgZXhwb3NlIGFueXRoaW5nIGJ5IGRl ZmF1bHQgKi8KK307CmRpZmYgLS1naXQgYS90b29scy9saWJzL2V2dGNobi9saW51eC5jIGIvdG9v bHMvbGlicy9ldnRjaG4vbGludXguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li4yN2ZkNmU5Ci0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvbGlicy9ldnRjaG4vbGludXguYwpA QCAtMCwwICsxLDEzNiBAQAorLyoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247CisgKiB2ZXJzaW9uIDIuMSBvZiB0 aGUgTGljZW5zZS4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVz c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi bGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKgorICogU3BsaXQgb3V0IGZyb20geGNfbGlu dXNfb3NkZXAuYzoKKyAqCisgKiBDb3B5cmlnaHQgMjAwNiBTdW4gTWljcm9zeXN0ZW1zLCBJbmMu ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisKKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1 ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisK KyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKworI2luY2x1ZGUgPHhlbi9zeXMvZXZ0Y2huLmg+CisK KyNpbmNsdWRlICJwcml2YXRlLmgiCisKK2ludCBvc2RlcF9ldnRjaG5fb3Blbih4ZW5ldnRjaG5f aGFuZGxlICp4Y2UpCit7CisgICAgaW50IGZkID0gb3BlbigiL2Rldi94ZW4vZXZ0Y2huIiwgT19S RFdSKTsKKyAgICBpZiAoIGZkID09IC0xICkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHhjZS0+ ZmQgPSBmZDsKKyAgICByZXR1cm4gMDsKK30KKworaW50IG9zZGVwX2V2dGNobl9jbG9zZSh4ZW5l dnRjaG5faGFuZGxlICp4Y2UpCit7CisgICAgaWYgKCB4Y2UtPmZkID09IC0xICkKKyAgICAgICAg cmV0dXJuIDA7CisKKyAgICByZXR1cm4gY2xvc2UoeGNlLT5mZCk7Cit9CisKK2ludCB4ZW5ldnRj aG5fZmQoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlKQoreworICAgIHJldHVybiB4Y2UtPmZkOworfQor CitpbnQgeGVuZXZ0Y2huX25vdGlmeSh4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIGV2dGNobl9wb3J0 X3QgcG9ydCkKK3sKKyAgICBpbnQgZmQgPSB4Y2UtPmZkOworICAgIHN0cnVjdCBpb2N0bF9ldnRj aG5fbm90aWZ5IG5vdGlmeTsKKworICAgIG5vdGlmeS5wb3J0ID0gcG9ydDsKKworICAgIHJldHVy biBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX05PVElGWSwgJm5vdGlmeSk7Cit9CisKK2V2dGNobl9w b3J0X29yX2Vycm9yX3QgeGVuZXZ0Y2huX2JpbmRfdW5ib3VuZF9wb3J0KHhlbmV2dGNobl9oYW5k bGUgKnhjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGludCBkb21pZCkKK3sKKyAgICBpbnQgZmQgPSB4Y2UtPmZkOworICAgIHN0cnVjdCBpb2N0 bF9ldnRjaG5fYmluZF91bmJvdW5kX3BvcnQgYmluZDsKKworICAgIGJpbmQucmVtb3RlX2RvbWFp biA9IGRvbWlkOworCisgICAgcmV0dXJuIGlvY3RsKGZkLCBJT0NUTF9FVlRDSE5fQklORF9VTkJP VU5EX1BPUlQsICZiaW5kKTsKK30KKworZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCB4ZW5ldnRjaG5f YmluZF9pbnRlcmRvbWFpbih4ZW5ldnRjaG5faGFuZGxlICp4Y2UsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkb21pZCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZ0Y2huX3BvcnRfdCByZW1v dGVfcG9ydCkKK3sKKyAgICBpbnQgZmQgPSB4Y2UtPmZkOworICAgIHN0cnVjdCBpb2N0bF9ldnRj aG5fYmluZF9pbnRlcmRvbWFpbiBiaW5kOworCisgICAgYmluZC5yZW1vdGVfZG9tYWluID0gZG9t aWQ7CisgICAgYmluZC5yZW1vdGVfcG9ydCA9IHJlbW90ZV9wb3J0OworCisgICAgcmV0dXJuIGlv Y3RsKGZkLCBJT0NUTF9FVlRDSE5fQklORF9JTlRFUkRPTUFJTiwgJmJpbmQpOworfQorCitldnRj aG5fcG9ydF9vcl9lcnJvcl90IHhlbmV2dGNobl9iaW5kX3ZpcnEoeGVuZXZ0Y2huX2hhbmRsZSAq eGNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCB2aXJxKQoreworICAgIGludCBmZCA9IHhjZS0+ZmQ7CisgICAgc3RydWN0IGlvY3RsX2V2 dGNobl9iaW5kX3ZpcnEgYmluZDsKKworICAgIGJpbmQudmlycSA9IHZpcnE7CisKKyAgICByZXR1 cm4gaW9jdGwoZmQsIElPQ1RMX0VWVENITl9CSU5EX1ZJUlEsICZiaW5kKTsKK30KKworaW50IHhl bmV2dGNobl91bmJpbmQoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQp Cit7CisgICAgaW50IGZkID0geGNlLT5mZDsKKyAgICBzdHJ1Y3QgaW9jdGxfZXZ0Y2huX3VuYmlu ZCB1bmJpbmQ7CisKKyAgICB1bmJpbmQucG9ydCA9IHBvcnQ7CisKKyAgICByZXR1cm4gaW9jdGwo ZmQsIElPQ1RMX0VWVENITl9VTkJJTkQsICZ1bmJpbmQpOworfQorCitldnRjaG5fcG9ydF9vcl9l cnJvcl90IHhlbmV2dGNobl9wZW5kaW5nKHhlbmV2dGNobl9oYW5kbGUgKnhjZSkKK3sKKyAgICBp bnQgZmQgPSB4Y2UtPmZkOworICAgIGV2dGNobl9wb3J0X3QgcG9ydDsKKworICAgIGlmICggcmVh ZChmZCwgJnBvcnQsIHNpemVvZihwb3J0KSkgIT0gc2l6ZW9mKHBvcnQpICkKKyAgICAgICAgcmV0 dXJuIC0xOworCisgICAgcmV0dXJuIHBvcnQ7Cit9CisKK2ludCB4ZW5ldnRjaG5fdW5tYXNrKHhl bmV2dGNobl9oYW5kbGUgKnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KQoreworICAgIGludCBmZCA9 IHhjZS0+ZmQ7CisKKyAgICBpZiAoIHdyaXRlKGZkLCAmcG9ydCwgc2l6ZW9mKHBvcnQpKSAhPSBz aXplb2YocG9ydCkgKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIDA7Cit9CisKKy8q CisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0Qi CisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1t b2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlicy9ldnRjaG4vbWlu aW9zLmMgYi90b29scy9saWJzL2V2dGNobi9taW5pb3MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi5mYjkxM2EyCi0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvbGlicy9ldnRj aG4vbWluaW9zLmMKQEAgLTAsMCArMSwyNjkgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAq CisgKiBDb3B5cmlnaHQgMjAwNy0yMDA4IFNhbXVlbCBUaGliYXVsdCA8c2FtdWVsLnRoaWJhdWx0 QGV1LmNpdHJpeC5jb20+LgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBpcyBzdWJq ZWN0IHRvIGxpY2Vuc2UgdGVybXMuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsKKyAqIHZlcnNpb24gMi4x IG9mIHRoZSBMaWNlbnNlLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg KiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh bCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqCisgKiBTcGxpdCBvZmYgZnJvbSB4 Y19taW5pb3MuYworICovCisKKyNpbmNsdWRlICJ4ZW4tZXh0ZXJuYWwvYnNkLXN5cy1xdWV1ZS5o IgorI2luY2x1ZGUgPG1pbmktb3MvdHlwZXMuaD4KKyNpbmNsdWRlIDxtaW5pLW9zL29zLmg+Cisj aW5jbHVkZSA8bWluaS1vcy9saWIuaD4KKyNpbmNsdWRlIDxtaW5pLW9zL2V2ZW50cy5oPgorI2lu Y2x1ZGUgPG1pbmktb3Mvd2FpdC5oPgorCisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorCisjaW5j bHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxmY250bC5oPgor I2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8aW50dHlw ZXMuaD4KKyNpbmNsdWRlIDxtYWxsb2MuaD4KKworI2luY2x1ZGUgInByaXZhdGUuaCIKKworZXh0 ZXJuIHZvaWQgbWluaW9zX2V2dGNobl9jbG9zZV9mZChpbnQgZmQpOworCitleHRlcm4gc3RydWN0 IHdhaXRfcXVldWVfaGVhZCBldmVudF9xdWV1ZTsKKworLy92b2lkIG1pbmlvc19ldnRjaG5fY2xv c2VfZmQoaW50IGZkKTsKKworLyogWFhYIE5vdGU6IFRoaXMgaXMgbm90IHRocmVhZHNhZmUgKi8K K3N0YXRpYyBzdHJ1Y3QgZXZ0Y2huX3BvcnRfaW5mbyogcG9ydF9hbGxvYyhpbnQgZmQpIHsKKyAg ICBzdHJ1Y3QgZXZ0Y2huX3BvcnRfaW5mbyAqcG9ydF9pbmZvOworICAgIHBvcnRfaW5mbyA9IG1h bGxvYyhzaXplb2Yoc3RydWN0IGV2dGNobl9wb3J0X2luZm8pKTsKKyAgICBpZiAocG9ydF9pbmZv ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHBvcnRfaW5mby0+cGVuZGluZyA9 IDA7CisgICAgcG9ydF9pbmZvLT5wb3J0ID0gLTE7CisgICAgcG9ydF9pbmZvLT5ib3VuZCA9IDA7 CisKKyAgICBMSVNUX0lOU0VSVF9IRUFEKCZmaWxlc1tmZF0uZXZ0Y2huLnBvcnRzLCBwb3J0X2lu Zm8sIGxpc3QpOworICAgIHJldHVybiBwb3J0X2luZm87Cit9CisKK3N0YXRpYyB2b2lkIHBvcnRf ZGVhbGxvYyhzdHJ1Y3QgZXZ0Y2huX3BvcnRfaW5mbyAqcG9ydF9pbmZvKSB7CisgICAgaWYgKHBv cnRfaW5mby0+Ym91bmQpCisgICAgICAgIHVuYmluZF9ldnRjaG4ocG9ydF9pbmZvLT5wb3J0KTsK KyAgICBMSVNUX1JFTU9WRShwb3J0X2luZm8sIGxpc3QpOworICAgIGZyZWUocG9ydF9pbmZvKTsK K30KKworaW50IG9zZGVwX2V2dGNobl9vcGVuKHhlbmV2dGNobl9oYW5kbGUgKnhjZSkKK3sKKyAg ICBpbnQgZmQgPSBhbGxvY19mZChGVFlQRV9FVlRDSE4pOworICAgIGlmICggZmQgPT0gLTEgKQor ICAgICAgICByZXR1cm4gLTE7CisgICAgTElTVF9JTklUKCZmaWxlc1tmZF0uZXZ0Y2huLnBvcnRz KTsKKyAgICB4Y2UtPmZkID0gZmQ7CisgICAgcHJpbnRmKCJldnRjaG5fb3BlbigpIC0+ICVkXG4i LCBmZCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBvc2RlcF9ldnRjaG5fY2xvc2UoeGVuZXZ0 Y2huX2hhbmRsZSAqeGNlKQoreworICAgIGlmICggeGNlLT5mZCA9PSAtMSApCisgICAgICAgIHJl dHVybiAwOworCisgICAgcmV0dXJuIGNsb3NlKHhjZS0+ZmQpOworfQorCit2b2lkIG1pbmlvc19l dnRjaG5fY2xvc2VfZmQoaW50IGZkKQoreworICAgIHN0cnVjdCBldnRjaG5fcG9ydF9pbmZvICpw b3J0X2luZm8sICp0bXA7CisgICAgTElTVF9GT1JFQUNIX1NBRkUocG9ydF9pbmZvLCAmZmlsZXNb ZmRdLmV2dGNobi5wb3J0cywgbGlzdCwgdG1wKQorICAgICAgICBwb3J0X2RlYWxsb2MocG9ydF9p bmZvKTsKKworICAgIGZpbGVzW2ZkXS50eXBlID0gRlRZUEVfTk9ORTsKK30KKworaW50IHhlbmV2 dGNobl9mZCh4ZW5ldnRjaG5faGFuZGxlICp4Y2UpCit7CisgICAgcmV0dXJuIHhjZS0+ZmQ7Cit9 CisKK2ludCB4ZW5ldnRjaG5fbm90aWZ5KHhlbmV2dGNobl9oYW5kbGUgKnhjZSwgZXZ0Y2huX3Bv cnRfdCBwb3J0KQoreworICAgIGludCByZXQ7CisKKyAgICByZXQgPSBub3RpZnlfcmVtb3RlX3Zp YV9ldnRjaG4ocG9ydCk7CisKKyAgICBpZiAocmV0IDwgMCkgeworCWVycm5vID0gLXJldDsKKwly ZXQgPSAtMTsKKyAgICB9CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQgZXZ0Y2hu X2hhbmRsZXIoZXZ0Y2huX3BvcnRfdCBwb3J0LCBzdHJ1Y3QgcHRfcmVncyAqcmVncywgdm9pZCAq ZGF0YSkKK3sKKyAgICBpbnQgZmQgPSAoaW50KShpbnRwdHJfdClkYXRhOworICAgIHN0cnVjdCBl dnRjaG5fcG9ydF9pbmZvICpwb3J0X2luZm87CisgICAgYXNzZXJ0KGZpbGVzW2ZkXS50eXBlID09 IEZUWVBFX0VWVENITik7CisgICAgbWFza19ldnRjaG4ocG9ydCk7CisgICAgTElTVF9GT1JFQUNI KHBvcnRfaW5mbywgJmZpbGVzW2ZkXS5ldnRjaG4ucG9ydHMsIGxpc3QpIHsKKyAgICAgICAgaWYg KHBvcnRfaW5mby0+cG9ydCA9PSBwb3J0KQorICAgICAgICAgICAgZ290byBmb3VuZDsKKyAgICB9 CisgICAgcHJpbnRrKCJVbmtub3duIHBvcnQgZm9yIGhhbmRsZSAlZFxuIiwgZmQpOworICAgIHJl dHVybjsKKworIGZvdW5kOgorICAgIHBvcnRfaW5mby0+cGVuZGluZyA9IDE7CisgICAgZmlsZXNb ZmRdLnJlYWQgPSAxOworICAgIHdha2VfdXAoJmV2ZW50X3F1ZXVlKTsKK30KKworZXZ0Y2huX3Bv cnRfb3JfZXJyb3JfdCB4ZW5ldnRjaG5fYmluZF91bmJvdW5kX3BvcnQoeGVuZXZ0Y2huX2hhbmRs ZSAqeGNlLCBpbnQgZG9taWQpCit7CisgICAgaW50IGZkID0geGNlLT5mZDsKKyAgICBzdHJ1Y3Qg ZXZ0Y2huX3BvcnRfaW5mbyAqcG9ydF9pbmZvOworICAgIGludCByZXQ7CisgICAgZXZ0Y2huX3Bv cnRfdCBwb3J0OworCisgICAgYXNzZXJ0KGdldF9jdXJyZW50KCkgPT0gbWFpbl90aHJlYWQpOwor ICAgIHBvcnRfaW5mbyA9IHBvcnRfYWxsb2MoZmQpOworICAgIGlmIChwb3J0X2luZm8gPT0gTlVM TCkKKwlyZXR1cm4gLTE7CisKKyAgICBwcmludGYoInhlbmV2dGNobl9iaW5kX3VuYm91bmRfcG9y dCglZCkiLCBkb21pZCk7CisgICAgcmV0ID0gZXZ0Y2huX2FsbG9jX3VuYm91bmQoZG9taWQsIGV2 dGNobl9oYW5kbGVyLCAodm9pZCopKGludHB0cl90KWZkLCAmcG9ydCk7CisgICAgcHJpbnRmKCIg PSAlZFxuIiwgcmV0KTsKKworICAgIGlmIChyZXQgPCAwKSB7CisJcG9ydF9kZWFsbG9jKHBvcnRf aW5mbyk7CisJZXJybm8gPSAtcmV0OworCXJldHVybiAtMTsKKyAgICB9CisgICAgcG9ydF9pbmZv LT5ib3VuZCA9IDE7CisgICAgcG9ydF9pbmZvLT5wb3J0ID0gcG9ydDsKKyAgICB1bm1hc2tfZXZ0 Y2huKHBvcnQpOworICAgIHJldHVybiBwb3J0OworfQorCitldnRjaG5fcG9ydF9vcl9lcnJvcl90 IHhlbmV2dGNobl9iaW5kX2ludGVyZG9tYWluKHhlbmV2dGNobl9oYW5kbGUgKnhjZSwgaW50IGRv bWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl dnRjaG5fcG9ydF90IHJlbW90ZV9wb3J0KQoreworICAgIGludCBmZCA9IHhjZS0+ZmQ7CisgICAg c3RydWN0IGV2dGNobl9wb3J0X2luZm8gKnBvcnRfaW5mbzsKKyAgICBldnRjaG5fcG9ydF90IGxv Y2FsX3BvcnQ7CisgICAgaW50IHJldDsKKworICAgIGFzc2VydChnZXRfY3VycmVudCgpID09IG1h aW5fdGhyZWFkKTsKKyAgICBwb3J0X2luZm8gPSBwb3J0X2FsbG9jKGZkKTsKKyAgICBpZiAocG9y dF9pbmZvID09IE5VTEwpCisJcmV0dXJuIC0xOworCisgICAgcHJpbnRmKCJ4ZW5ldnRjaG5fYmlu ZF9pbnRlcmRvbWFpbiglZCwgJSJQUklkMzIiKSIsIGRvbWlkLCByZW1vdGVfcG9ydCk7CisgICAg cmV0ID0gZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4oZG9taWQsIHJlbW90ZV9wb3J0LCBldnRjaG5f aGFuZGxlciwgKHZvaWQqKShpbnRwdHJfdClmZCwgJmxvY2FsX3BvcnQpOworICAgIHByaW50Zigi ID0gJWRcbiIsIHJldCk7CisKKyAgICBpZiAocmV0IDwgMCkgeworCXBvcnRfZGVhbGxvYyhwb3J0 X2luZm8pOworCWVycm5vID0gLXJldDsKKwlyZXR1cm4gLTE7CisgICAgfQorICAgIHBvcnRfaW5m by0+Ym91bmQgPSAxOworICAgIHBvcnRfaW5mby0+cG9ydCA9IGxvY2FsX3BvcnQ7CisgICAgdW5t YXNrX2V2dGNobihsb2NhbF9wb3J0KTsKKyAgICByZXR1cm4gbG9jYWxfcG9ydDsKK30KKworaW50 IHhlbmV2dGNobl91bmJpbmQoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLCBldnRjaG5fcG9ydF90IHBv cnQpCit7CisgICAgaW50IGZkID0geGNlLT5mZDsKKyAgICBzdHJ1Y3QgZXZ0Y2huX3BvcnRfaW5m byAqcG9ydF9pbmZvOworCisgICAgTElTVF9GT1JFQUNIKHBvcnRfaW5mbywgJmZpbGVzW2ZkXS5l dnRjaG4ucG9ydHMsIGxpc3QpIHsKKyAgICAgICAgaWYgKHBvcnRfaW5mby0+cG9ydCA9PSBwb3J0 KSB7CisgICAgICAgICAgICBwb3J0X2RlYWxsb2MocG9ydF9pbmZvKTsKKyAgICAgICAgICAgIHJl dHVybiAwOworICAgICAgICB9CisgICAgfQorICAgIHByaW50ZigiV2FybmluZzogY291bGRuJ3Qg ZmluZCBwb3J0ICUiUFJJZDMyIiBmb3IgeGMgaGFuZGxlICV4XG4iLCBwb3J0LCBmZCk7CisgICAg ZXJybm8gPSBFSU5WQUw7CisgICAgcmV0dXJuIC0xOworfQorCitldnRjaG5fcG9ydF9vcl9lcnJv cl90IHhlbmV2dGNobl9iaW5kX3ZpcnEoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLCB1bnNpZ25lZCBp bnQgdmlycSkKK3sKKyAgICBpbnQgZmQgPSB4Y2UtPmZkOworICAgIHN0cnVjdCBldnRjaG5fcG9y dF9pbmZvICpwb3J0X2luZm87CisgICAgZXZ0Y2huX3BvcnRfdCBwb3J0OworCisgICAgYXNzZXJ0 KGdldF9jdXJyZW50KCkgPT0gbWFpbl90aHJlYWQpOworICAgIHBvcnRfaW5mbyA9IHBvcnRfYWxs b2MoZmQpOworICAgIGlmIChwb3J0X2luZm8gPT0gTlVMTCkKKwlyZXR1cm4gLTE7CisKKyAgICBw cmludGYoInhlbmV2dGNobl9iaW5kX3ZpcnEoJWQpIiwgdmlycSk7CisgICAgcG9ydCA9IGJpbmRf dmlycSh2aXJxLCBldnRjaG5faGFuZGxlciwgKHZvaWQqKShpbnRwdHJfdClmZCk7CisKKyAgICBp ZiAocG9ydCA8IDApIHsKKwlwb3J0X2RlYWxsb2MocG9ydF9pbmZvKTsKKwllcnJubyA9IC1wb3J0 OworCXJldHVybiAtMTsKKyAgICB9CisgICAgcG9ydF9pbmZvLT5ib3VuZCA9IDE7CisgICAgcG9y dF9pbmZvLT5wb3J0ID0gcG9ydDsKKyAgICB1bm1hc2tfZXZ0Y2huKHBvcnQpOworICAgIHJldHVy biBwb3J0OworfQorCitldnRjaG5fcG9ydF9vcl9lcnJvcl90IHhlbmV2dGNobl9wZW5kaW5nKHhl bmV2dGNobl9oYW5kbGUgKnhjZSkKK3sKKyAgICBpbnQgZmQgPSB4Y2UtPmZkOworICAgIHN0cnVj dCBldnRjaG5fcG9ydF9pbmZvICpwb3J0X2luZm87CisgICAgdW5zaWduZWQgbG9uZyBmbGFnczsK KyAgICBldnRjaG5fcG9ydF90IHJldCA9IC0xOworCisgICAgbG9jYWxfaXJxX3NhdmUoZmxhZ3Mp OworICAgIGZpbGVzW2ZkXS5yZWFkID0gMDsKKworICAgIExJU1RfRk9SRUFDSChwb3J0X2luZm8s ICZmaWxlc1tmZF0uZXZ0Y2huLnBvcnRzLCBsaXN0KSB7CisgICAgICAgIGlmIChwb3J0X2luZm8t PnBvcnQgIT0gLTEgJiYgcG9ydF9pbmZvLT5wZW5kaW5nKSB7CisgICAgICAgICAgICBpZiAocmV0 ID09IC0xKSB7CisgICAgICAgICAgICAgICAgcmV0ID0gcG9ydF9pbmZvLT5wb3J0OworICAgICAg ICAgICAgICAgIHBvcnRfaW5mby0+cGVuZGluZyA9IDA7CisgICAgICAgICAgICB9IGVsc2Ugewor ICAgICAgICAgICAgICAgIGZpbGVzW2ZkXS5yZWFkID0gMTsKKyAgICAgICAgICAgICAgICBicmVh azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBsb2NhbF9pcnFfcmVzdG9y ZShmbGFncyk7CisgICAgcmV0dXJuIHJldDsKK30KKworaW50IHhlbmV2dGNobl91bm1hc2soeGVu ZXZ0Y2huX2hhbmRsZSAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQpCit7CisgICAgdW5tYXNrX2V2 dGNobihwb3J0KTsKKyAgICByZXR1cm4gMDsKK30KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoK KyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0 CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICov CmRpZmYgLS1naXQgYS90b29scy9saWJzL2V2dGNobi9uZXRic2QuYyBiL3Rvb2xzL2xpYnMvZXZ0 Y2huL25ldGJzZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0MTIzZmUK LS0tIC9kZXYvbnVsbAorKysgYi90b29scy9saWJzL2V2dGNobi9uZXRic2QuYwpAQCAtMCwwICsx LDE0NyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIENvcHlyaWdodCAyMDA2IFN1 biBNaWNyb3N5c3RlbXMsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBVc2UgaXMgc3Vi amVjdCB0byBsaWNlbnNlIHRlcm1zLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247CisgKiB2ZXJzaW9uIDIu MSBvZiB0aGUgTGljZW5zZS4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor ICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy YWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKgorICogU3BsaXQgb3V0IGZyb20g eGNfbmV0YnNkLmMKKyAqLworCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDx1bmlzdGQu aD4KKworI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorCisjaW5jbHVkZSA8eGVuL3N5cy9ldnRjaG4u aD4KKworI2luY2x1ZGUgInByaXZhdGUuaCIKKworI2RlZmluZSBFVlRDSE5fREVWX05BTUUgICIv ZGV2L3hlbmV2dCIKKworaW50IG9zZGVwX2V2dGNobl9vcGVuKHhlbmV2dGNobl9oYW5kbGUgKnhj ZSkKK3sKKyAgICBpbnQgZmQgPSBvcGVuKEVWVENITl9ERVZfTkFNRSwgT19OT05CTE9DS3xPX1JE V1IpOworICAgIGlmICggZmQgPT0gLTEgKQorICAgICAgICByZXR1cm4gLTE7CisgICAgeGNlLT5m ZCA9IGZkOworICAgIHJldHVybiAwOworfQorCitpbnQgb3NkZXBfZXZ0Y2huX2Nsb3NlKHhlbmV2 dGNobl9oYW5kbGUgKnhjZSkKK3sKKyAgICBpZiAoIHhjZS0+ZmQgPT0gLTEgKQorICAgICAgICBy ZXR1cm4gMDsKKworICAgIHJldHVybiBjbG9zZSh4Y2UtPmZkKTsKK30KKworaW50IHhlbmV2dGNo bl9mZCh4ZW5ldnRjaG5faGFuZGxlICp4Y2UpCit7CisgICAgcmV0dXJuIHhjZS0+ZmQ7Cit9CisK K2ludCB4ZW5ldnRjaG5fbm90aWZ5KHhlbmV2dGNobl9oYW5kbGUgKnhjZSwgZXZ0Y2huX3BvcnRf dCBwb3J0KQoreworICAgIGludCBmZCA9IHhjZS0+ZmQ7CisgICAgc3RydWN0IGlvY3RsX2V2dGNo bl9ub3RpZnkgbm90aWZ5OworCisgICAgbm90aWZ5LnBvcnQgPSBwb3J0OworCisgICAgcmV0dXJu IGlvY3RsKGZkLCBJT0NUTF9FVlRDSE5fTk9USUZZLCAmbm90aWZ5KTsKK30KKworZXZ0Y2huX3Bv cnRfb3JfZXJyb3JfdCB4ZW5ldnRjaG5fYmluZF91bmJvdW5kX3BvcnQoeGVuZXZ0Y2huX2hhbmRs ZSAqIHhjZSwgaW50IGRvbWlkKQoreworICAgIGludCBmZCA9IHhjZS0+ZmQ7CisgICAgc3RydWN0 IGlvY3RsX2V2dGNobl9iaW5kX3VuYm91bmRfcG9ydCBiaW5kOworICAgIGludCByZXQ7CisKKyAg ICBiaW5kLnJlbW90ZV9kb21haW4gPSBkb21pZDsKKworICAgIHJldCA9IGlvY3RsKGZkLCBJT0NU TF9FVlRDSE5fQklORF9VTkJPVU5EX1BPUlQsICZiaW5kKTsKKyAgICBpZiAocmV0ID09IDApCisJ cmV0dXJuIGJpbmQucG9ydDsKKyAgICBlbHNlCisJcmV0dXJuIC0xOworfQorCitldnRjaG5fcG9y dF9vcl9lcnJvcl90IHhlbmV2dGNobl9iaW5kX2ludGVyZG9tYWluKHhlbmV2dGNobl9oYW5kbGUg KnhjZSwgaW50IGRvbWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBldnRjaG5fcG9ydF90IHJlbW90ZV9wb3J0KQoreworICAgIGludCBmZCA9IHhj ZS0+ZmQ7CisgICAgc3RydWN0IGlvY3RsX2V2dGNobl9iaW5kX2ludGVyZG9tYWluIGJpbmQ7Cisg ICAgaW50IHJldDsKKworICAgIGJpbmQucmVtb3RlX2RvbWFpbiA9IGRvbWlkOworICAgIGJpbmQu cmVtb3RlX3BvcnQgPSByZW1vdGVfcG9ydDsKKworICAgIHJldCA9IGlvY3RsKGZkLCBJT0NUTF9F VlRDSE5fQklORF9JTlRFUkRPTUFJTiwgJmJpbmQpOworICAgIGlmIChyZXQgPT0gMCkKKwlyZXR1 cm4gYmluZC5wb3J0OworICAgIGVsc2UKKwlyZXR1cm4gLTE7Cit9CisKK2ludCB4ZW5ldnRjaG5f dW5iaW5kKHhlbmV2dGNobl9oYW5kbGUgKnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KQoreworICAg IGludCBmZCA9IHhjZS0+ZmQ7CisgICAgc3RydWN0IGlvY3RsX2V2dGNobl91bmJpbmQgdW5iaW5k OworCisgICAgdW5iaW5kLnBvcnQgPSBwb3J0OworCisgICAgcmV0dXJuIGlvY3RsKGZkLCBJT0NU TF9FVlRDSE5fVU5CSU5ELCAmdW5iaW5kKTsKK30KKworZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCB4 ZW5ldnRjaG5fYmluZF92aXJxKHhlbmV2dGNobl9oYW5kbGUgKnhjZSwgdW5zaWduZWQgaW50IHZp cnEpCit7CisgICAgaW50IGZkID0geGNlLT5mZDsKKyAgICBzdHJ1Y3QgaW9jdGxfZXZ0Y2huX2Jp bmRfdmlycSBiaW5kOworICAgIGludCBlcnI7CisKKyAgICBiaW5kLnZpcnEgPSB2aXJxOworCisg ICAgZXJyID0gaW9jdGwoZmQsIElPQ1RMX0VWVENITl9CSU5EX1ZJUlEsICZiaW5kKTsKKyAgICBp ZiAoZXJyKQorCXJldHVybiAtMTsKKyAgICBlbHNlCisJcmV0dXJuIGJpbmQucG9ydDsKK30KKwor ZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCB4ZW5ldnRjaG5fcGVuZGluZyh4ZW5ldnRjaG5faGFuZGxl ICp4Y2UpCit7CisgICAgaW50IGZkID0geGNlLT5mZDsKKyAgICBldnRjaG5fcG9ydF90IHBvcnQ7 CisKKyAgICBpZiAoIHJlYWRfZXhhY3QoZmQsIChjaGFyICopJnBvcnQsIHNpemVvZihwb3J0KSkg PT0gLTEgKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXR1cm4gcG9ydDsKK30KKworaW50 IHhlbmV2dGNobl91bm1hc2soeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLCBldnRjaG5fcG9ydF90IHBv cnQpCit7CisgICAgaW50IGZkID0geGNlLT5mZDsKKyAgICByZXR1cm4gd3JpdGVfZXhhY3QoZmQs IChjaGFyICopJnBvcnQsIHNpemVvZihwb3J0KSk7Cit9CisKKy8qCisgKiBMb2NhbCB2YXJpYWJs ZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNl dDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoK KyAqLwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlicy9ldnRjaG4vcHJpdmF0ZS5oIGIvdG9vbHMvbGli cy9ldnRjaG4vcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZj ZDBlOTYKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy9saWJzL2V2dGNobi9wcml2YXRlLmgKQEAg LTAsMCArMSwyNSBAQAorI2lmbmRlZiBYRU5FVlRDSE5fUFJJVkFURV9ICisjZGVmaW5lIFhFTkVW VENITl9QUklWQVRFX0gKKworI2luY2x1ZGUgPHhlbnRvb2xsb2cuaD4KKyNpbmNsdWRlIDx4ZW5l dnRjaG4uaD4KKworc3RydWN0IHhlbmV2dGNobl9oYW5kbGUgeworICAgIHhlbnRvb2xsb2dfbG9n Z2VyICpsb2dnZXIsICpsb2dnZXJfdG9mcmVlOworICAgIGludCBmZDsKK307CisKK2ludCBvc2Rl cF9ldnRjaG5fb3Blbih4ZW5ldnRjaG5faGFuZGxlICp4Y2UpOworaW50IG9zZGVwX2V2dGNobl9j bG9zZSh4ZW5ldnRjaG5faGFuZGxlICp4Y2UpOworCisjZW5kaWYKKworLyoKKyAqIExvY2FsIHZh cmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMt b2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICog RW5kOgorICovCmRpZmYgLS1naXQgYS90b29scy9saWJzL2V2dGNobi9zb2xhcmlzLmMgYi90b29s cy9saWJzL2V2dGNobi9zb2xhcmlzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uMTE0Y2VmYgotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL2xpYnMvZXZ0Y2huL3NvbGFyaXMu YwpAQCAtMCwwICsxLDEzNSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIENvcHly aWdodCAyMDA2IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg KiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zLgorICoKKyAqIFRoaXMgbGlicmFyeSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAq IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247Cisg KiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZS4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg TGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5 OyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKgorICogU3Bs aXQgb3V0IGZyb20geGNfc29sYXJpcy5jCisgKi8KKworI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5j bHVkZSA8dW5pc3RkLmg+CisKKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKworI2luY2x1ZGUgPHhl bi9zeXMvZXZ0Y2huLmg+CisKKyNpbmNsdWRlICJwcml2YXRlLmgiCisKK2ludCBvc2RlcF9ldnRj aG5fb3Blbih4ZW5ldnRjaG5faGFuZGxlICp4Y2UpCit7CisgICAgaW50IGZkOworCisgICAgaWYg KCAoZmQgPSBvcGVuKCIvZGV2L3hlbi9ldnRjaG4iLCBPX1JEV1IpKSA9PSAtMSApCisgICAgewor ICAgICAgICBQRVJST1IoIkNvdWxkIG5vdCBvcGVuIGV2ZW50IGNoYW5uZWwgaW50ZXJmYWNlIik7 CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICB4Y2UtPmZkID0gZmQ7CisgICAgcmV0 dXJuIDA7Cit9CisKK2ludCBvc2RlcF9ldnRjaG5fY2xvc2UoeGVuZXZ0Y2huX2hhbmRsZSAqeGNl KQoreworICAgIGlmICggeGNlLT5mZCA9PSAtMSApCisgICAgICAgIHJldHVybiAwOworCisgICAg cmV0dXJuIGNsb3NlKHhjZS0+ZmQpOworfQorCitpbnQgeGVuZXZ0Y2huX2ZkKHhlbmV2dGNobl9o YW5kbGUgKnhjZSkKK3sKKyAgICByZXR1cm4geGNlLT5mZDsKK30KKworaW50IHhlbmV2dGNobl9u b3RpZnkoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQpCit7CisgICAg aW50IGZkID0geGNlLT5mZDsKKyAgICBzdHJ1Y3QgaW9jdGxfZXZ0Y2huX25vdGlmeSBub3RpZnk7 CisKKyAgICBub3RpZnkucG9ydCA9IHBvcnQ7CisKKyAgICByZXR1cm4gaW9jdGwoZmQsIElPQ1RM X0VWVENITl9OT1RJRlksICZub3RpZnkpOworfQorCitldnRjaG5fcG9ydF9vcl9lcnJvcl90IHhl bmV2dGNobl9iaW5kX3VuYm91bmRfcG9ydCh4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIGludCBkb21p ZCkKK3sKKyAgICBpbnQgZmQgPSB4Y2UtPmZkOworICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fYmlu ZF91bmJvdW5kX3BvcnQgYmluZDsKKworICAgIGJpbmQucmVtb3RlX2RvbWFpbiA9IGRvbWlkOwor CisgICAgcmV0dXJuIGlvY3RsKGZkLCBJT0NUTF9FVlRDSE5fQklORF9VTkJPVU5EX1BPUlQsICZi aW5kKTsKK30KKworZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCB4ZW5ldnRjaG5fYmluZF9pbnRlcmRv bWFpbih4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIGludCBkb21pZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZ0Y2huX3BvcnRfdCByZW1vdGVfcG9y dCkKK3sKKyAgICBpbnQgZmQgPSB4Y2UtPmZkOworICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fYmlu ZF9pbnRlcmRvbWFpbiBiaW5kOworCisgICAgYmluZC5yZW1vdGVfZG9tYWluID0gZG9taWQ7Cisg ICAgYmluZC5yZW1vdGVfcG9ydCA9IHJlbW90ZV9wb3J0OworCisgICAgcmV0dXJuIGlvY3RsKGZk LCBJT0NUTF9FVlRDSE5fQklORF9JTlRFUkRPTUFJTiwgJmJpbmQpOworfQorCitldnRjaG5fcG9y dF9vcl9lcnJvcl90IHhlbmV2dGNobl9iaW5kX3ZpcnEoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLCB1 bnNpZ25lZCBpbnQgdmlycSkKK3sKKyAgICBpbnQgZmQgPSB4Y2UtPmZkOworICAgIHN0cnVjdCBp b2N0bF9ldnRjaG5fYmluZF92aXJxIGJpbmQ7CisKKyAgICBiaW5kLnZpcnEgPSB2aXJxOworCisg ICAgcmV0dXJuIGlvY3RsKGZkLCBJT0NUTF9FVlRDSE5fQklORF9WSVJRLCAmYmluZCk7Cit9CisK K2ludCB4ZW5ldnRjaG5fdW5iaW5kKHhlbmV2dGNobl9oYW5kbGUgKnhjZSwgZXZ0Y2huX3BvcnRf dCBwb3J0KQoreworICAgIGludCBmZCA9IHhjZS0+ZmQ7CisgICAgc3RydWN0IGlvY3RsX2V2dGNo bl91bmJpbmQgdW5iaW5kOworCisgICAgdW5iaW5kLnBvcnQgPSBwb3J0OworCisgICAgcmV0dXJu IGlvY3RsKGZkLCBJT0NUTF9FVlRDSE5fVU5CSU5ELCAmdW5iaW5kKTsKK30KKworZXZ0Y2huX3Bv cnRfb3JfZXJyb3JfdCB4ZW5ldnRjaG5fcGVuZGluZyh4ZW5ldnRjaG5faGFuZGxlICp4Y2UpCit7 CisgICAgaW50IGZkID0geGNlLT5mZDsKKyAgICBldnRjaG5fcG9ydF90IHBvcnQ7CisKKyAgICBp ZiAoIHJlYWRfZXhhY3QoZmQsIChjaGFyICopJnBvcnQsIHNpemVvZihwb3J0KSkgPT0gLTEgKQor ICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXR1cm4gcG9ydDsKK30KKworaW50IHhlbmV2dGNo bl91bm1hc2soeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQpCit7Cisg ICAgaW50IGZkID0geGNlLT5mZDsKKyAgICByZXR1cm4gd3JpdGVfZXhhY3QoZmQsIChjaGFyICop JnBvcnQsIHNpemVvZihwb3J0KSk7Cit9CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBt b2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICog dGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZm IC0tZ2l0IGEvdG9vbHMvbGlicy90b29sbG9nL2luY2x1ZGUveGVudG9vbGxvZy5oIGIvdG9vbHMv bGlicy90b29sbG9nL2luY2x1ZGUveGVudG9vbGxvZy5oCmluZGV4IDg1M2U5YzcuLjc2ZjE3ZmUg MTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnMvdG9vbGxvZy9pbmNsdWRlL3hlbnRvb2xsb2cuaAorKysg Yi90b29scy9saWJzL3Rvb2xsb2cvaW5jbHVkZS94ZW50b29sbG9nLmgKQEAgLTEzNCwzICsxMzQs MTMgQEAgY29uc3QgY2hhciAqeHRsX2xldmVsX3RvX3N0cmluZyh4ZW50b29sbG9nX2xldmVsKTsg LyogbmV2ZXIgZmFpbHMgKi8KIAogCiAjZW5kaWYgLyogWEVOVE9PTExPR19IICovCisKKy8qCisg KiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisg KiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2Rl OiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlicy90b29sbG9nL3h0bF9j b3JlLmMgYi90b29scy9saWJzL3Rvb2xsb2cveHRsX2NvcmUuYwppbmRleCBjNDcyNGEwLi4wOTlk MmYzIDEwMDY0NAotLS0gYS90b29scy9saWJzL3Rvb2xsb2cveHRsX2NvcmUuYworKysgYi90b29s cy9saWJzL3Rvb2xsb2cveHRsX2NvcmUuYwpAQCAtODEsMyArODEsMTMgQEAgdm9pZCB4dGxfbG9n Z2VyX2Rlc3Ryb3koc3RydWN0IHhlbnRvb2xsb2dfbG9nZ2VyICpsb2dnZXIpIHsKICAgICBpZiAo IWxvZ2dlcikgcmV0dXJuOwogICAgIGxvZ2dlci0+ZGVzdHJveShsb2dnZXIpOwogfQorCisvKgor ICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgor ICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9k ZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnMvdG9vbGxvZy94dGxf bG9nZ2VyX3N0ZGlvLmMgYi90b29scy9saWJzL3Rvb2xsb2cveHRsX2xvZ2dlcl9zdGRpby5jCmlu ZGV4IDBjZDkyMDYuLmY5YzViZDggMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnMvdG9vbGxvZy94dGxf bG9nZ2VyX3N0ZGlvLmMKKysrIGIvdG9vbHMvbGlicy90b29sbG9nL3h0bF9sb2dnZXJfc3RkaW8u YwpAQCAtMTkwLDMgKzE5MCwxMyBAQCB4ZW50b29sbG9nX2xvZ2dlcl9zdGRpb3N0cmVhbSAqeHRs X2NyZWF0ZWxvZ2dlcl9zdGRpb3N0cmVhbQogCiAgICAgcmV0dXJuIFhUTF9ORVdfTE9HR0VSKHN0 ZGlvc3RyZWFtLCBuZXdsb2dnZXIpOwogfQorCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICog bW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAq IHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlm ZiAtLWdpdCBhL3Rvb2xzL2xpYnZjaGFuL01ha2VmaWxlIGIvdG9vbHMvbGlidmNoYW4vTWFrZWZp bGUKaW5kZXggM2M1MGZlNi4uODQxMjhhMyAxMDA2NDQKLS0tIGEvdG9vbHMvbGlidmNoYW4vTWFr ZWZpbGUKKysrIGIvdG9vbHMvbGlidmNoYW4vTWFrZWZpbGUKQEAgLTEwLDkgKzEwLDkgQEAgTk9E RV9PQkpTID0gbm9kZS5vCiBOT0RFMl9PQkpTID0gbm9kZS1zZWxlY3QubwogCiBMSUJWQ0hBTl9Q SUNfT0JKUyA9ICQocGF0c3Vic3QgJS5vLCUub3BpYywkKExJQlZDSEFOX09CSlMpKQotTElCVkNI QU5fTElCUyA9ICQoTERMSUJTX2xpYnhlbnN0b3JlKSAkKExETElCU19saWJ4ZW5jdHJsKQotJChM SUJWQ0hBTl9PQkpTKSAkKExJQlZDSEFOX1BJQ19PQkpTKTogQ0ZMQUdTICs9ICQoQ0ZMQUdTX2xp YnhlbnN0b3JlKSAkKENGTEFHU19saWJ4ZW5jdHJsKQotJChOT0RFX09CSlMpICQoTk9ERTJfT0JK Uyk6IENGTEFHUyArPSAkKENGTEFHU19saWJ4ZW5jdHJsKQorTElCVkNIQU5fTElCUyA9ICQoTERM SUJTX2xpYnhlbnN0b3JlKSAkKExETElCU19saWJ4ZW5jdHJsKSAkKExETElCU19saWJ4ZW5ldnRj aG4pCiskKExJQlZDSEFOX09CSlMpICQoTElCVkNIQU5fUElDX09CSlMpOiBDRkxBR1MgKz0gJChD RkxBR1NfbGlieGVuc3RvcmUpICQoQ0ZMQUdTX2xpYnhlbmN0cmwpICQoQ0ZMQUdTX2xpYnhlbmV2 dGNobikKKyQoTk9ERV9PQkpTKSAkKE5PREUyX09CSlMpOiBDRkxBR1MgKz0gJChDRkxBR1NfbGli eGVuY3RybCkgJChDRkxBR1NfbGlieGVuZXZ0Y2huKQogCiBNQUpPUiA9IDEuMAogTUlOT1IgPSAw CmRpZmYgLS1naXQgYS90b29scy9saWJ2Y2hhbi9pbml0LmMgYi90b29scy9saWJ2Y2hhbi9pbml0 LmMKaW5kZXggNzdiZTRlNy4uNjZjYjEwMyAxMDA2NDQKLS0tIGEvdG9vbHMvbGlidmNoYW4vaW5p dC5jCisrKyBiL3Rvb2xzL2xpYnZjaGFuL2luaXQuYwpAQCAtMjE2LDI1ICsyMTYsMjUgQEAgc3Rh dGljIGludCBpbml0X2V2dF9zcnYoc3RydWN0IGxpYnhlbnZjaGFuICpjdHJsLCBpbnQgZG9tYWlu LCB4ZW50b29sbG9nX2xvZ2dlcgogewogCWV2dGNobl9wb3J0X29yX2Vycm9yX3QgcG9ydDsKIAot CWN0cmwtPmV2ZW50ID0geGNfZXZ0Y2huX29wZW4obG9nZ2VyLCAwKTsKKwljdHJsLT5ldmVudCA9 IHhlbmV2dGNobl9vcGVuKGxvZ2dlciwgMCk7CiAJaWYgKCFjdHJsLT5ldmVudCkKIAkJcmV0dXJu IC0xOwogCi0JcG9ydCA9IHhjX2V2dGNobl9iaW5kX3VuYm91bmRfcG9ydChjdHJsLT5ldmVudCwg ZG9tYWluKTsKKwlwb3J0ID0geGVuZXZ0Y2huX2JpbmRfdW5ib3VuZF9wb3J0KGN0cmwtPmV2ZW50 LCBkb21haW4pOwogCWlmIChwb3J0IDwgMCkKIAkJZ290byBmYWlsOwogCWN0cmwtPmV2ZW50X3Bv cnQgPSBwb3J0OwogCi0JaWYgKHhjX2V2dGNobl91bm1hc2soY3RybC0+ZXZlbnQsIGN0cmwtPmV2 ZW50X3BvcnQpKQorCWlmICh4ZW5ldnRjaG5fdW5tYXNrKGN0cmwtPmV2ZW50LCBjdHJsLT5ldmVu dF9wb3J0KSkKIAkJZ290byBmYWlsOwogCiAJcmV0dXJuIDA7CiAKIGZhaWw6CiAJaWYgKHBvcnQg Pj0gMCkKLQkJeGNfZXZ0Y2huX3VuYmluZChjdHJsLT5ldmVudCwgcG9ydCk7CisJCXhlbmV2dGNo bl91bmJpbmQoY3RybC0+ZXZlbnQsIHBvcnQpOwogCi0JeGNfZXZ0Y2huX2Nsb3NlKGN0cmwtPmV2 ZW50KTsKKwl4ZW5ldnRjaG5fY2xvc2UoY3RybC0+ZXZlbnQpOwogCWN0cmwtPmV2ZW50ID0gTlVM TDsKIAogCXJldHVybiAtMTsKQEAgLTM0NiwyNiArMzQ2LDI2IEBAIHN0YXRpYyBpbnQgaW5pdF9l dnRfY2xpKHN0cnVjdCBsaWJ4ZW52Y2hhbiAqY3RybCwgaW50IGRvbWFpbiwgeGVudG9vbGxvZ19s b2dnZXIKIHsKIAlldnRjaG5fcG9ydF9vcl9lcnJvcl90IHBvcnQ7CiAKLQljdHJsLT5ldmVudCA9 IHhjX2V2dGNobl9vcGVuKGxvZ2dlciwgMCk7CisJY3RybC0+ZXZlbnQgPSB4ZW5ldnRjaG5fb3Bl bihsb2dnZXIsIDApOwogCWlmICghY3RybC0+ZXZlbnQpCiAJCXJldHVybiAtMTsKIAotCXBvcnQg PSB4Y19ldnRjaG5fYmluZF9pbnRlcmRvbWFpbihjdHJsLT5ldmVudCwKKwlwb3J0ID0geGVuZXZ0 Y2huX2JpbmRfaW50ZXJkb21haW4oY3RybC0+ZXZlbnQsCiAJCWRvbWFpbiwgY3RybC0+ZXZlbnRf cG9ydCk7CiAJaWYgKHBvcnQgPCAwKQogCQlnb3RvIGZhaWw7CiAJY3RybC0+ZXZlbnRfcG9ydCA9 IHBvcnQ7CiAKLQlpZiAoeGNfZXZ0Y2huX3VubWFzayhjdHJsLT5ldmVudCwgY3RybC0+ZXZlbnRf cG9ydCkpCisJaWYgKHhlbmV2dGNobl91bm1hc2soY3RybC0+ZXZlbnQsIGN0cmwtPmV2ZW50X3Bv cnQpKQogCQlnb3RvIGZhaWw7CiAKIAlyZXR1cm4gMDsKIAogZmFpbDoKIAlpZiAocG9ydCA+PSAw KQotCQl4Y19ldnRjaG5fdW5iaW5kKGN0cmwtPmV2ZW50LCBwb3J0KTsKKwkJeGVuZXZ0Y2huX3Vu YmluZChjdHJsLT5ldmVudCwgcG9ydCk7CiAKLQl4Y19ldnRjaG5fY2xvc2UoY3RybC0+ZXZlbnQp OworCXhlbmV2dGNobl9jbG9zZShjdHJsLT5ldmVudCk7CiAJY3RybC0+ZXZlbnQgPSBOVUxMOwog CiAJcmV0dXJuIC0xOwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlidmNoYW4vaW8uYyBiL3Rvb2xzL2xp YnZjaGFuL2lvLmMKaW5kZXggOGE5NjI5Yi4uNDQ2MTQ5MCAxMDA2NDQKLS0tIGEvdG9vbHMvbGli dmNoYW4vaW8uYworKysgYi90b29scy9saWJ2Y2hhbi9pby5jCkBAIC0xMDUsNyArMTA1LDcgQEAg c3RhdGljIGlubGluZSBpbnQgc2VuZF9ub3RpZnkoc3RydWN0IGxpYnhlbnZjaGFuICpjdHJsLCB1 aW50OF90IGJpdCkKIAlub3RpZnkgPSBjdHJsLT5pc19zZXJ2ZXIgPyAmY3RybC0+cmluZy0+c3J2 X25vdGlmeSA6ICZjdHJsLT5yaW5nLT5jbGlfbm90aWZ5OwogCXByZXYgPSBfX3N5bmNfZmV0Y2hf YW5kX2FuZChub3RpZnksIH5iaXQpOwogCWlmIChwcmV2ICYgYml0KQotCQlyZXR1cm4geGNfZXZ0 Y2huX25vdGlmeShjdHJsLT5ldmVudCwgY3RybC0+ZXZlbnRfcG9ydCk7CisJCXJldHVybiB4ZW5l dnRjaG5fbm90aWZ5KGN0cmwtPmV2ZW50LCBjdHJsLT5ldmVudF9wb3J0KTsKIAllbHNlCiAJCXJl dHVybiAwOwogfQpAQCAtMTk0LDEwICsxOTQsMTAgQEAgaW50IGxpYnhlbnZjaGFuX2J1ZmZlcl9z cGFjZShzdHJ1Y3QgbGlieGVudmNoYW4gKmN0cmwpCiAKIGludCBsaWJ4ZW52Y2hhbl93YWl0KHN0 cnVjdCBsaWJ4ZW52Y2hhbiAqY3RybCkKIHsKLQlpbnQgcmV0ID0geGNfZXZ0Y2huX3BlbmRpbmco Y3RybC0+ZXZlbnQpOworCWludCByZXQgPSB4ZW5ldnRjaG5fcGVuZGluZyhjdHJsLT5ldmVudCk7 CiAJaWYgKHJldCA8IDApCiAJCXJldHVybiAtMTsKLQl4Y19ldnRjaG5fdW5tYXNrKGN0cmwtPmV2 ZW50LCByZXQpOworCXhlbmV2dGNobl91bm1hc2soY3RybC0+ZXZlbnQsIHJldCk7CiAJcmV0dXJu IDA7CiB9CiAKQEAgLTM1MCw3ICszNTAsNyBAQCBpbnQgbGlieGVudmNoYW5faXNfb3BlbihzdHJ1 Y3QgbGlieGVudmNoYW4qIGN0cmwpCiAKIGludCBsaWJ4ZW52Y2hhbl9mZF9mb3Jfc2VsZWN0KHN0 cnVjdCBsaWJ4ZW52Y2hhbiAqY3RybCkKIHsKLQlyZXR1cm4geGNfZXZ0Y2huX2ZkKGN0cmwtPmV2 ZW50KTsKKwlyZXR1cm4geGVuZXZ0Y2huX2ZkKGN0cmwtPmV2ZW50KTsKIH0KIAogdm9pZCBsaWJ4 ZW52Y2hhbl9jbG9zZShzdHJ1Y3QgbGlieGVudmNoYW4gKmN0cmwpCkBAIC0zNzIsOCArMzcyLDgg QEAgdm9pZCBsaWJ4ZW52Y2hhbl9jbG9zZShzdHJ1Y3QgbGlieGVudmNoYW4gKmN0cmwpCiAJfQog CWlmIChjdHJsLT5ldmVudCkgewogCQlpZiAoY3RybC0+cmluZykKLQkJCXhjX2V2dGNobl9ub3Rp ZnkoY3RybC0+ZXZlbnQsIGN0cmwtPmV2ZW50X3BvcnQpOwotCQl4Y19ldnRjaG5fY2xvc2UoY3Ry bC0+ZXZlbnQpOworCQkJeGVuZXZ0Y2huX25vdGlmeShjdHJsLT5ldmVudCwgY3RybC0+ZXZlbnRf cG9ydCk7CisJCXhlbmV2dGNobl9jbG9zZShjdHJsLT5ldmVudCk7CiAJfQogCWlmIChjdHJsLT5p c19zZXJ2ZXIpIHsKIAkJaWYgKGN0cmwtPmdudHNocikKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnZj aGFuL2xpYnhlbnZjaGFuLmggYi90b29scy9saWJ2Y2hhbi9saWJ4ZW52Y2hhbi5oCmluZGV4IDA5 NDRhMGUuLjE1NDQzNzggMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnZjaGFuL2xpYnhlbnZjaGFuLmgK KysrIGIvdG9vbHMvbGlidmNoYW4vbGlieGVudmNoYW4uaApAQCAtNDQsNiArNDQsNyBAQAogCiAj aW5jbHVkZSA8eGVuL2lvL2xpYnhlbnZjaGFuLmg+CiAjaW5jbHVkZSA8eGVuL3N5cy9ldnRjaG4u aD4KKyNpbmNsdWRlIDx4ZW5ldnRjaG4uaD4KICNpbmNsdWRlIDx4ZW5jdHJsLmg+CiAKIHN0cnVj dCBsaWJ4ZW52Y2hhbl9yaW5nIHsKQEAgLTcxLDcgKzcyLDcgQEAgc3RydWN0IGxpYnhlbnZjaGFu IHsKIAkvKiBQb2ludGVyIHRvIHNoYXJlZCByaW5nIHBhZ2UgKi8KIAlzdHJ1Y3QgdmNoYW5faW50 ZXJmYWNlICpyaW5nOwogCS8qIGV2ZW50IGNoYW5uZWwgaW50ZXJmYWNlICovCi0JeGNfZXZ0Y2hu ICpldmVudDsKKwl4ZW5ldnRjaG5faGFuZGxlICpldmVudDsKIAl1aW50MzJfdCBldmVudF9wb3J0 OwogCS8qIGluZm9ybWF0aXZlIGZsYWdzOiBhcmUgd2UgYWN0aW5nIGFzIHNlcnZlcj8gKi8KIAlp bnQgaXNfc2VydmVyOjE7CmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy9NYWtlZmlsZSBiL3Rvb2xz L2xpYnhjL01ha2VmaWxlCmluZGV4IDk0MDcwOGYuLmI4ZmM2YTUgMTAwNjQ0Ci0tLSBhL3Rvb2xz L2xpYnhjL01ha2VmaWxlCisrKyBiL3Rvb2xzL2xpYnhjL01ha2VmaWxlCkBAIC00OCw2ICs0OCw3 IEBAIENUUkxfU1JDUy0kKENPTkZJR19TdW5PUykgKz0geGNfc29sYXJpcy5jCiBDVFJMX1NSQ1Mt JChDT05GSUdfTmV0QlNEKSArPSB4Y19uZXRic2QuYwogQ1RSTF9TUkNTLSQoQ09ORklHX05ldEJT RFJ1bXApICs9IHhjX25ldGJzZC5jCiBDVFJMX1NSQ1MtJChDT05GSUdfTWluaU9TKSArPSB4Y19t aW5pb3MuYworQ1RSTF9TUkNTLXkgICAgICAgKz0geGNfZXZ0Y2huX2NvbXBhdC5jCiAKIEdVRVNU X1NSQ1MteSA6PQogR1VFU1RfU1JDUy15ICs9IHhnX3ByaXZhdGUuYyB4Y19zdXNwZW5kLmMKQEAg LTExMSw2ICsxMTIsNyBAQCBDRkxBR1MtJChDT05GSUdfTGludXgpICs9IC1EX0dOVV9TT1VSQ0UK IAogQ0ZMQUdTCSs9ICQoUFRIUkVBRF9DRkxBR1MpCiBDRkxBR1MJKz0gJChDRkxBR1NfbGlieGVu dG9vbGxvZykKK0NGTEFHUwkrPSAkKENGTEFHU19saWJ4ZW5ldnRjaG4pCiAKIENUUkxfTElCX09C SlMgOj0gJChwYXRzdWJzdCAlLmMsJS5vLCQoQ1RSTF9TUkNTLXkpKQogQ1RSTF9QSUNfT0JKUyA6 PSAkKHBhdHN1YnN0ICUuYywlLm9waWMsJChDVFJMX1NSQ1MteSkpCkBAIC0xNjQsNyArMTY2LDcg QEAgaW5zdGFsbDogYnVpbGQKIAkkKElOU1RBTExfREFUQSkgbGlieGVuY3RybC5hICQoREVTVERJ UikkKGxpYmRpcikKIAkkKFNZTUxJTktfU0hMSUIpIGxpYnhlbmN0cmwuc28uJChNQUpPUikuJChN SU5PUikgJChERVNURElSKSQobGliZGlyKS9saWJ4ZW5jdHJsLnNvLiQoTUFKT1IpCiAJJChTWU1M SU5LX1NITElCKSBsaWJ4ZW5jdHJsLnNvLiQoTUFKT1IpICQoREVTVERJUikkKGxpYmRpcikvbGli eGVuY3RybC5zbwotCSQoSU5TVEFMTF9EQVRBKSBpbmNsdWRlL3hlbmN0cmwuaCBpbmNsdWRlL3hl bmN0cmxvc2RlcC5oICQoREVTVERJUikkKGluY2x1ZGVkaXIpCisJJChJTlNUQUxMX0RBVEEpIGlu Y2x1ZGUveGVuY3RybC5oIGluY2x1ZGUveGVuY3RybF9jb21wYXQuaCBpbmNsdWRlL3hlbmN0cmxv c2RlcC5oICQoREVTVERJUikkKGluY2x1ZGVkaXIpCiAJJChJTlNUQUxMX1NITElCKSBsaWJ4ZW5n dWVzdC5zby4kKE1BSk9SKS4kKE1JTk9SKSAkKERFU1RESVIpJChsaWJkaXIpCiAJJChJTlNUQUxM X0RBVEEpIGxpYnhlbmd1ZXN0LmEgJChERVNURElSKSQobGliZGlyKQogCSQoU1lNTElOS19TSExJ QikgbGlieGVuZ3Vlc3Quc28uJChNQUpPUikuJChNSU5PUikgJChERVNURElSKSQobGliZGlyKS9s aWJ4ZW5ndWVzdC5zby4kKE1BSk9SKQpAQCAtMjA3LDcgKzIwOSw3IEBAIGxpYnhlbmN0cmwuc28u JChNQUpPUik6IGxpYnhlbmN0cmwuc28uJChNQUpPUikuJChNSU5PUikKIAkkKFNZTUxJTktfU0hM SUIpICQ8ICRACiAKIGxpYnhlbmN0cmwuc28uJChNQUpPUikuJChNSU5PUik6ICQoQ1RSTF9QSUNf T0JKUykKLQkkKENDKSAkKExERkxBR1MpICQoUFRIUkVBRF9MREZMQUdTKSAtV2wsJChTT05BTUVf TERGTEFHKSAtV2wsbGlieGVuY3RybC5zby4kKE1BSk9SKSAkKFNITElCX0xERkxBR1MpIC1vICRA ICReICQoTERMSUJTX2xpYnhlbnRvb2xsb2cpICQoRExPUEVOX0xJQlMpICQoUFRIUkVBRF9MSUJT KSAkKEFQUEVORF9MREZMQUdTKQorCSQoQ0MpICQoTERGTEFHUykgJChQVEhSRUFEX0xERkxBR1Mp IC1XbCwkKFNPTkFNRV9MREZMQUcpIC1XbCxsaWJ4ZW5jdHJsLnNvLiQoTUFKT1IpICQoU0hMSUJf TERGTEFHUykgLW8gJEAgJF4gJChMRExJQlNfbGlieGVudG9vbGxvZykgJChMRExJQlNfbGlieGVu ZXZ0Y2huKSAkKERMT1BFTl9MSUJTKSAkKFBUSFJFQURfTElCUykgJChBUFBFTkRfTERGTEFHUykK IAogIyBsaWJ4ZW5ndWVzdAogCkBAIC0yMzAsNyArMjMyLDcgQEAgeGNfZG9tX2J6aW1hZ2Vsb2Fk ZXIub3BpYzogQ0ZMQUdTICs9ICQoY2FsbCB6bGliLW9wdGlvbnMsRCkKIAogbGlieGVuZ3Vlc3Qu c28uJChNQUpPUikuJChNSU5PUik6IENPTVBSRVNTSU9OX0xJQlMgPSAkKGNhbGwgemxpYi1vcHRp b25zLGwpCiBsaWJ4ZW5ndWVzdC5zby4kKE1BSk9SKS4kKE1JTk9SKTogJChHVUVTVF9QSUNfT0JK UykgbGlieGVuY3RybC5zbwotCSQoQ0MpICQoTERGTEFHUykgLVdsLCQoU09OQU1FX0xERkxBRykg LVdsLGxpYnhlbmd1ZXN0LnNvLiQoTUFKT1IpICQoU0hMSUJfTERGTEFHUykgLW8gJEAgJChHVUVT VF9QSUNfT0JKUykgJChDT01QUkVTU0lPTl9MSUJTKSAtbHogJChMRExJQlNfbGlieGVuY3RybCkg JChQVEhSRUFEX0xJQlMpICQoQVBQRU5EX0xERkxBR1MpCisJJChDQykgJChMREZMQUdTKSAtV2ws JChTT05BTUVfTERGTEFHKSAtV2wsbGlieGVuZ3Vlc3Quc28uJChNQUpPUikgJChTSExJQl9MREZM QUdTKSAtbyAkQCAkKEdVRVNUX1BJQ19PQkpTKSAkKENPTVBSRVNTSU9OX0xJQlMpIC1seiAkKExE TElCU19saWJ4ZW5ldnRjaG4pICQoTERMSUJTX2xpYnhlbmN0cmwpICQoUFRIUkVBRF9MSUJTKSAk KEFQUEVORF9MREZMQUdTKQogCiB4ZW5jdHJsX29zZGVwX0VOT1NZUy5zbzogJChPU0RFUF9QSUNf T0JKUykgbGlieGVuY3RybC5zbwogCSQoQ0MpICQoTERGTEFHUykgJChTSExJQl9MREZMQUdTKSAt byAkQCAkKE9TREVQX1BJQ19PQkpTKSAkKExETElCU19saWJ4ZW5jdHJsKSAkKEFQUEVORF9MREZM QUdTKQpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmggYi90b29scy9s aWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaAppbmRleCA0YTcxYWYzLi5lNGVjNTJkIDEwMDY0NAotLS0g YS90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaAorKysgYi90b29scy9saWJ4Yy9pbmNsdWRl L3hlbmN0cmwuaApAQCAtMTE3LDcgKzExNyw2IEBACiAgKi8KIAogdHlwZWRlZiBzdHJ1Y3QgeGNf aW50ZXJmYWNlX2NvcmUgeGNfaW50ZXJmYWNlOwotdHlwZWRlZiBzdHJ1Y3QgeGVuZXZ0Y2huX2hh bmRsZSB4Y19ldnRjaG47CiB0eXBlZGVmIHN0cnVjdCB4Y19pbnRlcmZhY2VfY29yZSB4Y19nbnR0 YWI7CiB0eXBlZGVmIHN0cnVjdCB4Y19pbnRlcmZhY2VfY29yZSB4Y19nbnRzaHI7CiAKQEAgLTEw OTMsNyArMTA5Miw2IEBAIGludCB4Y19jcHVwb29sX21vdmVkb21haW4oeGNfaW50ZXJmYWNlICp4 Y2gsCiAgKi8KIHhjX2NwdW1hcF90IHhjX2NwdXBvb2xfZnJlZWluZm8oeGNfaW50ZXJmYWNlICp4 Y2gpOwogCi0KIC8qCiAgKiBFVkVOVCBDSEFOTkVMIEZVTkNUSU9OUwogICoKQEAgLTExMjgsMTAx ICsxMTI2LDcgQEAgaW50IHhjX2V2dGNobl9yZXNldCh4Y19pbnRlcmZhY2UgKnhjaCwKIHR5cGVk ZWYgc3RydWN0IGV2dGNobl9zdGF0dXMgeGNfZXZ0Y2huX3N0YXR1c190OwogaW50IHhjX2V2dGNo bl9zdGF0dXMoeGNfaW50ZXJmYWNlICp4Y2gsIHhjX2V2dGNobl9zdGF0dXNfdCAqc3RhdHVzKTsK IAotLyoKLSAqIFJldHVybiBhIGhhbmRsZSB0byB0aGUgZXZlbnQgY2hhbm5lbCBkcml2ZXIsIG9y IE5VTEwgb24gZmFpbHVyZSwgaW4KLSAqIHdoaWNoIGNhc2UgZXJybm8gd2lsbCBiZSBzZXQgYXBw cm9wcmlhdGVseS4KLSAqCi0gKiBOb3RlOgotICogQWZ0ZXIgZm9yayBhIGNoaWxkIHByb2Nlc3Mg bXVzdCBub3QgdXNlIGFueSBvcGVuZWQgeGMgZXZ0Y2huCi0gKiBoYW5kbGUgaW5oZXJpdGVkIGZy b20gdGhlaXIgcGFyZW50LiBUaGV5IG11c3Qgb3BlbiBhIG5ldyBoYW5kbGUgaWYKLSAqIHRoZXkg d2FudCB0byBpbnRlcmFjdCB3aXRoIHhjLgotICoKLSAqIEJlZm9yZSBYZW4gcHJlLTQuMSB0aGlz IGZ1bmN0aW9uIHdvdWxkIHNvbWV0aW1lcyByZXBvcnQgZXJyb3JzIHdpdGggcGVycm9yLgotICov Ci14Y19ldnRjaG4gKnhjX2V2dGNobl9vcGVuKHhlbnRvb2xsb2dfbG9nZ2VyICpsb2dnZXIsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG9wZW5fZmxhZ3MpOwogCi0vKgot ICogQ2xvc2UgYSBoYW5kbGUgcHJldmlvdXNseSBhbGxvY2F0ZWQgd2l0aCB4Y19ldnRjaG5fb3Bl bigpLgotICovCi1pbnQgeGNfZXZ0Y2huX2Nsb3NlKHhjX2V2dGNobiAqeGNlKTsKLQotLyoKLSAq IFJldHVybiBhbiBmZCB0aGF0IGNhbiBiZSBzZWxlY3QoKWVkIG9uLgotICoKLSAqIE5vdGUgdGhh dCBkdWUgdG8gYnVncywgc2V0dGluZyB0aGlzIGZkIHRvIG5vbiBibG9ja2luZyBtYXkgbm90Ci0g KiB3b3JrOiB5b3Ugd291bGQgaG9wZSB0aGF0IGl0IHdvdWxkIHJlc3VsdCBpbiB4Y19ldnRjaG5f cGVuZGluZwotICogZmFpbGluZyB3aXRoIEVXT1VMREJMT0NLIGlmIHRoZXJlIGFyZSBubyBldmVu dHMgc2lnbmFsZWQsIGJ1dCBpbgotICogZmFjdCBpdCBtYXkgYmxvY2suICAoQnVnIGlzIHByZXNl bnQgaW4gYXQgbGVhc3QgTGludXggMy4xMiwgYW5kCi0gKiBwZXJoYXBzIG9uIG90aGVyIHBsYXRm b3JtcyBvciBsYXRlciB2ZXJzaW9uLikKLSAqCi0gKiBUbyBiZSBzYWZlLCB5b3UgbXVzdCB1c2Ug cG9sbCgpIG9yIHNlbGVjdCgpIGJlZm9yZSBlYWNoIGNhbGwgdG8KLSAqIHhjX2V2dGNobl9wZW5k aW5nLiAgSWYgeW91IGhhdmUgbXVsdGlwbGUgdGhyZWFkcyAob3IgcHJvY2Vzc2VzKQotICogc2hh cmluZyBhIHNpbmdsZSB4Y2UgaGFuZGxlIHRoaXMgd2lsbCBub3Qgd29yaywgYW5kIHRoZXJlIGlz IG5vCi0gKiBzdHJhaWdodGZvcndhcmQgd29ya2Fyb3VuZC4gIFBsZWFzZSBkZXNpZ24geW91ciBw cm9ncmFtIHNvbWUgb3RoZXIKLSAqIHdheS4KLSAqLwotaW50IHhjX2V2dGNobl9mZCh4Y19ldnRj aG4gKnhjZSk7Ci0KLS8qCi0gKiBOb3RpZnkgdGhlIGdpdmVuIGV2ZW50IGNoYW5uZWwuIFJldHVy bnMgLTEgb24gZmFpbHVyZSwgaW4gd2hpY2ggY2FzZQotICogZXJybm8gd2lsbCBiZSBzZXQgYXBw cm9wcmlhdGVseS4KLSAqLwotaW50IHhjX2V2dGNobl9ub3RpZnkoeGNfZXZ0Y2huICp4Y2UsIGV2 dGNobl9wb3J0X3QgcG9ydCk7Ci0KLS8qCi0gKiBSZXR1cm5zIGEgbmV3IGV2ZW50IHBvcnQgYXdh aXRpbmcgaW50ZXJkb21haW4gY29ubmVjdGlvbiBmcm9tIHRoZSBnaXZlbgotICogZG9tYWluIElE LCBvciAtMSBvbiBmYWlsdXJlLCBpbiB3aGljaCBjYXNlIGVycm5vIHdpbGwgYmUgc2V0IGFwcHJv cHJpYXRlbHkuCi0gKi8KLWV2dGNobl9wb3J0X29yX2Vycm9yX3QKLXhjX2V2dGNobl9iaW5kX3Vu Ym91bmRfcG9ydCh4Y19ldnRjaG4gKnhjZSwgaW50IGRvbWlkKTsKLQotLyoKLSAqIFJldHVybnMg YSBuZXcgZXZlbnQgcG9ydCBib3VuZCB0byB0aGUgcmVtb3RlIHBvcnQgZm9yIHRoZSBnaXZlbiBk b21haW4gSUQsCi0gKiBvciAtMSBvbiBmYWlsdXJlLCBpbiB3aGljaCBjYXNlIGVycm5vIHdpbGwg YmUgc2V0IGFwcHJvcHJpYXRlbHkuCi0gKi8KLWV2dGNobl9wb3J0X29yX2Vycm9yX3QKLXhjX2V2 dGNobl9iaW5kX2ludGVyZG9tYWluKHhjX2V2dGNobiAqeGNlLCBpbnQgZG9taWQsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICBldnRjaG5fcG9ydF90IHJlbW90ZV9wb3J0KTsKLQotLyoKLSAq IEJpbmQgYW4gZXZlbnQgY2hhbm5lbCB0byB0aGUgZ2l2ZW4gVklSUS4gUmV0dXJucyB0aGUgZXZl bnQgY2hhbm5lbCBib3VuZCB0bwotICogdGhlIFZJUlEsIG9yIC0xIG9uIGZhaWx1cmUsIGluIHdo aWNoIGNhc2UgZXJybm8gd2lsbCBiZSBzZXQgYXBwcm9wcmlhdGVseS4KLSAqLwotZXZ0Y2huX3Bv cnRfb3JfZXJyb3JfdAoteGNfZXZ0Y2huX2JpbmRfdmlycSh4Y19ldnRjaG4gKnhjZSwgdW5zaWdu ZWQgaW50IHZpcnEpOwotCi0vKgotICogVW5iaW5kIHRoZSBnaXZlbiBldmVudCBjaGFubmVsLiBS ZXR1cm5zIC0xIG9uIGZhaWx1cmUsIGluIHdoaWNoIGNhc2UgZXJybm8KLSAqIHdpbGwgYmUgc2V0 IGFwcHJvcHJpYXRlbHkuCi0gKi8KLWludCB4Y19ldnRjaG5fdW5iaW5kKHhjX2V2dGNobiAqeGNl LCBldnRjaG5fcG9ydF90IHBvcnQpOwotCi0vKgotICogUmV0dXJuIHRoZSBuZXh0IGV2ZW50IGNo YW5uZWwgdG8gYmVjb21lIHBlbmRpbmcsIG9yIC0xIG9uIGZhaWx1cmUsIGluIHdoaWNoCi0gKiBj YXNlIGVycm5vIHdpbGwgYmUgc2V0IGFwcHJvcHJpYXRlbHkuCi0gKgotICogQXQgdGhlIGh5cGVy dmlzb3IgbGV2ZWwgdGhlIGV2ZW50IGNoYW5uZWwgd2lsbCBoYXZlIGJlZW4gbWFza2VkLAotICog YW5kIHRoZW4gY2xlYXJlZCwgYnkgdGhlIHVuZGVybHlpbmcgbWFjaGluZXJ5IChldnRjaG4ga2Vy bmVsCi0gKiBkcml2ZXIsIG9yIGVxdWl2YWxlbnQpLiAgU28gaWYgdGhlIGV2ZW50IGNoYW5uZWwg aXMgc2lnbmFsZWQgYWdhaW4KLSAqIGFmdGVyIGl0IGlzIHJldHVybmVkIGhlcmUsIGl0IHdpbGwg YmUgcXVldWVkIHVwLCBhbmQgZGVsaXZlcmVkCi0gKiBhZ2FpbiBhZnRlciB5b3UgdW5tYXNrIGl0 LiAgKFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBpbiB0aGUgWGVuCi0gKiBwdWJsaWMgaGVhZGVyIGV2 ZW50X2NoYW5uZWwuaC4pCi0gKgotICogT24gcmVjZWl2aW5nIHRoZSBub3RpZmljYXRpb24gZnJv bSB4Y19ldnRjaG5fcGVuZGluZywgeW91IHNob3VsZAotICogbm9ybWFsbHk6IGNoZWNrIChieSBv dGhlciBtZWFucykgd2hhdCB3b3JrIG5lZWRzIGRvaW5nOyBkbyB0aGUKLSAqIG5lY2Vzc2FyeSB3 b3JrIChpZiBhbnkpOyB1bm1hc2sgdGhlIGV2ZW50IGNoYW5uZWwgd2l0aAotICogeGNfZXZ0Y2hu X3VubWFzayAoaWYgeW91IHdhbnQgdG8gcmVjZWl2ZSBhbnkgZnVydGhlcgotICogbm90aWZpY2F0 aW9ucykuCi0gKi8KLWV2dGNobl9wb3J0X29yX2Vycm9yX3QKLXhjX2V2dGNobl9wZW5kaW5nKHhj X2V2dGNobiAqeGNlKTsKLQotLyoKLSAqIFVubWFzayB0aGUgZ2l2ZW4gZXZlbnQgY2hhbm5lbC4g UmV0dXJucyAtMSBvbiBmYWlsdXJlLCBpbiB3aGljaCBjYXNlIGVycm5vCi0gKiB3aWxsIGJlIHNl dCBhcHByb3ByaWF0ZWx5LgotICovCi1pbnQgeGNfZXZ0Y2huX3VubWFzayh4Y19ldnRjaG4gKnhj ZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KTsKIAogaW50IHhjX3BoeXNkZXZfcGNpX2FjY2Vzc19tb2Rp ZnkoeGNfaW50ZXJmYWNlICp4Y2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 aW50MzJfdCBkb21pZCwKQEAgLTI4NTYsNiArMjc2MCw5IEBAIGludCB4Y19wc3JfY2F0X2dldF9s M19pbmZvKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBzb2NrZXQsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1aW50MzJfdCAqY29zX21heCwgdWludDMyX3QgKmNibV9sZW4pOwogI2Vu ZGlmCiAKKy8qIENvbXBhdCBzaGltcyAqLworI2luY2x1ZGUgInhlbmN0cmxfY29tcGF0LmgiCisK ICNlbmRpZiAvKiBYRU5DVFJMX0ggKi8KIAogLyoKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL2lu Y2x1ZGUveGVuY3RybF9jb21wYXQuaCBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybF9jb21w YXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OGRhZWIyCi0tLSAvZGV2 L251bGwKKysrIGIvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsX2NvbXBhdC5oCkBAIC0wLDAg KzEsNDggQEAKKy8qCisgKiBDb21wYXQgc2hpbXMgZm9yIHVzZSBvZiAzcmQgcGFydHkgY29uc3Vt ZXJzIG9mIGxpYnhlbmN0cmwKKyAqIGZ1bmN0aW9uYWxpdHkgd2hpY2ggaGFzIGJlZW4gc3BsaXQg aW50byBzZXBhcmF0ZSBsaWJyYXJpZXMuCisgKgorICogTmV3IGNvZGUgc2hvdWxkIHVzZSB0aGUg c2VwYXJhdGUgbGlicmFyaWVzLgorICoKKyAqIEVhY2ggaW50ZXJmYWNlIG11c3QgYmUgb3B0ZWQt aW50byBzZXBhcmF0ZWx5IGJ5IGRlZmluaW5nOgorICoKKyAqIFhDX1dBTlRfQ09NUEFUX0VWVENI Tl9BUEkKKyAqICAtIEZ1bmN0aW9ucyByZWxhdGluZyB0byAvZGV2L3hlbi9ldnRjaG4KKyAqLwor I2lmbmRlZiBYRU5DVFJMX0NPTVBBVF9ICisjZGVmaW5lIFhFTkNUUkxfQ09NUEFUX0gKKworI2lm ZGVmIFhDX1dBTlRfQ09NUEFUX0VWVENITl9BUEkKKwordHlwZWRlZiBzdHJ1Y3QgeGVuZXZ0Y2hu X2hhbmRsZSB4Y19ldnRjaG47CisKK3hjX2V2dGNobiAqeGNfZXZ0Y2huX29wZW4oeGVudG9vbGxv Z19sb2dnZXIgKmxvZ2dlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg b3Blbl9mbGFncyk7CitpbnQgeGNfZXZ0Y2huX2Nsb3NlKHhjX2V2dGNobiAqeGNlKTsKK2ludCB4 Y19ldnRjaG5fZmQoeGNfZXZ0Y2huICp4Y2UpOworaW50IHhjX2V2dGNobl9ub3RpZnkoeGNfZXZ0 Y2huICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCk7CitldnRjaG5fcG9ydF9vcl9lcnJvcl90Cit4 Y19ldnRjaG5fYmluZF91bmJvdW5kX3BvcnQoeGNfZXZ0Y2huICp4Y2UsIGludCBkb21pZCk7Citl dnRjaG5fcG9ydF9vcl9lcnJvcl90Cit4Y19ldnRjaG5fYmluZF9pbnRlcmRvbWFpbih4Y19ldnRj aG4gKnhjZSwgaW50IGRvbWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZ0Y2huX3Bv cnRfdCByZW1vdGVfcG9ydCk7CitldnRjaG5fcG9ydF9vcl9lcnJvcl90Cit4Y19ldnRjaG5fYmlu ZF92aXJxKHhjX2V2dGNobiAqeGNlLCB1bnNpZ25lZCBpbnQgdmlycSk7CitpbnQgeGNfZXZ0Y2hu X3VuYmluZCh4Y19ldnRjaG4gKnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KTsKK2V2dGNobl9wb3J0 X29yX2Vycm9yX3QKK3hjX2V2dGNobl9wZW5kaW5nKHhjX2V2dGNobiAqeGNlKTsKK2ludCB4Y19l dnRjaG5fdW5tYXNrKHhjX2V2dGNobiAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQpOworCisjZW5k aWYgLyogWENfV0FOVF9DT01QQVRfRVZUQ0hOX0FQSSAqLworCisjZW5kaWYKKworLyoKKyAqIExv Y2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMt YmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5p bAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmd1ZXN0 LmggYi90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmd1ZXN0LmgKaW5kZXggZWM2N2ZiZC4uYzdiZmZl MSAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5ndWVzdC5oCisrKyBiL3Rvb2xz L2xpYnhjL2luY2x1ZGUveGVuZ3Vlc3QuaApAQCAtMzQsNiArMzQsMTIgQEAKICNkZWZpbmUgWDg2 XzY0X0JfU0laRSAgIDY0IAogI2RlZmluZSBYODZfMzJfQl9TSVpFICAgMzIKIAorLyoKKyAqIFVz ZXIgbm90IHVzaW5nIHhjX3N1c3BlbmRfKiAvIHhjX2F3YWl0X3N1c3BlbnQgbWF5IG5vdCB3YW50 IHRvCisgKiBpbmNsdWRlIHRoZSBmdWxsIGxpYnhlbmV2dGNobiBBUEkgaGVyZS4KKyAqLwordHlw ZWRlZiBzdHJ1Y3QgeGVuZXZ0Y2huX2hhbmRsZSB4ZW5ldnRjaG5faGFuZGxlOworCiAvKiBjYWxs YmFja3MgcHJvdmlkZWQgYnkgeGNfZG9tYWluX3NhdmUgKi8KIHN0cnVjdCBzYXZlX2NhbGxiYWNr cyB7CiAgICAgLyogQ2FsbGVkIGFmdGVyIGV4cGlyYXRpb24gb2YgY2hlY2twb2ludCBpbnRlcnZh bCwKQEAgLTIwOSwxOCArMjE1LDE4IEBAIHN0cnVjdCB4Y19odm1fZmlybXdhcmVfbW9kdWxlIHsK ICAqIFNldHMgKmxvY2tmZCB0byAtMS4KICAqIEhhcyBkZWFsbG9jYXRlZCBldmVyeXRoaW5nIGV2 ZW4gb24gZXJyb3IuCiAgKi8KLWludCB4Y19zdXNwZW5kX2V2dGNobl9yZWxlYXNlKHhjX2ludGVy ZmFjZSAqeGNoLCB4Y19ldnRjaG4gKnhjZSwgaW50IGRvbWlkLCBpbnQgc3VzcGVuZF9ldnRjaG4s IGludCAqbG9ja2ZkKTsKK2ludCB4Y19zdXNwZW5kX2V2dGNobl9yZWxlYXNlKHhjX2ludGVyZmFj ZSAqeGNoLCB4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIGludCBkb21pZCwgaW50IHN1c3BlbmRfZXZ0 Y2huLCBpbnQgKmxvY2tmZCk7CiAKIC8qKgogICogVGhpcyBmdW5jdGlvbiBlYXRzIHRoZSBpbml0 aWFsIG5vdGlmaWNhdGlvbi4KICAqIHhjZSBtdXN0IG5vdCBiZSB1c2VkIGZvciBhbnl0aGluZyBl bHNlCiAgKiBTZWUgeGNfc3VzcGVuZF9ldnRjaG5faW5pdF9zYW5lIHJlIGxvY2tmZC4KICAqLwot aW50IHhjX3N1c3BlbmRfZXZ0Y2huX2luaXRfZXhjbHVzaXZlKHhjX2ludGVyZmFjZSAqeGNoLCB4 Y19ldnRjaG4gKnhjZSwKK2ludCB4Y19zdXNwZW5kX2V2dGNobl9pbml0X2V4Y2x1c2l2ZSh4Y19p bnRlcmZhY2UgKnhjaCwgeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludCBkb21pZCwgaW50IHBvcnQsIGludCAqbG9ja2ZkKTsKIAog LyogeGNlIG11c3Qgbm90IGJlIHVzZWQgZm9yIGFueXRoaW5nIGVsc2UgKi8KLWludCB4Y19hd2Fp dF9zdXNwZW5kKHhjX2ludGVyZmFjZSAqeGNoLCB4Y19ldnRjaG4gKnhjZSwgaW50IHN1c3BlbmRf ZXZ0Y2huKTsKK2ludCB4Y19hd2FpdF9zdXNwZW5kKHhjX2ludGVyZmFjZSAqeGNoLCB4ZW5ldnRj aG5faGFuZGxlICp4Y2UsIGludCBzdXNwZW5kX2V2dGNobik7CiAKIC8qKgogICogVGhlIHBvcnQg d2lsbCBiZSBzaWduYWxlZCBpbW1lZGlhdGVseSBhZnRlciB0aGlzIGNhbGwKQEAgLTIyOSw3ICsy MzUsNyBAQCBpbnQgeGNfYXdhaXRfc3VzcGVuZCh4Y19pbnRlcmZhY2UgKnhjaCwgeGNfZXZ0Y2hu ICp4Y2UsIGludCBzdXNwZW5kX2V2dGNobik7CiAgKiBhbmQgZmVkIHRvIHhjX3N1c3BlbmRfZXZ0 Y2huX3JlbGVhc2UuICAoT24gZXJyb3IgKmxvY2tmZCBpcwogICogdW5kZWZpbmVkIGFuZCB4Y19z dXNwZW5kX2V2dGNobl9yZWxlYXNlIGlzIG5vdCBhbGxvd2VkLikKICAqLwotaW50IHhjX3N1c3Bl bmRfZXZ0Y2huX2luaXRfc2FuZSh4Y19pbnRlcmZhY2UgKnhjaCwgeGNfZXZ0Y2huICp4Y2UsCitp bnQgeGNfc3VzcGVuZF9ldnRjaG5faW5pdF9zYW5lKHhjX2ludGVyZmFjZSAqeGNoLCB4ZW5ldnRj aG5faGFuZGxlICp4Y2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkb21p ZCwgaW50IHBvcnQsIGludCAqbG9ja2ZkKTsKIAogaW50IHhjX2dldF9iaXRfc2l6ZSh4Y19pbnRl cmZhY2UgKnhjaCwKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL3hjX2V2dGNobl9jb21wYXQuYyBi L3Rvb2xzL2xpYnhjL3hjX2V2dGNobl9jb21wYXQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi41ZDNlNGJhCi0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvbGlieGMveGNfZXZ0 Y2huX2NvbXBhdC5jCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb21wYXQgc2hpbXMgZm9yIHVz ZSBvZiAzcmQgcGFydHkgY29uc3VtZXJzIG9mIGxpYnhlbmN0cmwgeGNfZXZ0Y2huCisgKiBmdW5j dGlvbmFsaXR5IHdoaWNoIGhhcyBiZWVuIHNwbGl0IGludG8gc2VwYXJhdGUgbGlicmFyaWVzLgor ICovCisKKyNpbmNsdWRlIDx4ZW5ldnRjaG4uaD4KKworI2RlZmluZSBYQ19XQU5UX0NPTVBBVF9F VlRDSE5fQVBJCisjaW5jbHVkZSAieGVuY3RybC5oIgorCit4Y19ldnRjaG4gKnhjX2V2dGNobl9v cGVuKHhlbnRvb2xsb2dfbG9nZ2VyICpsb2dnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIG9wZW5fZmxhZ3MpCit7CisgICAgcmV0dXJuIHhlbmV2dGNobl9vcGVuKGxvZ2dl ciwgb3Blbl9mbGFncyk7Cit9CisKK2ludCB4Y19ldnRjaG5fY2xvc2UoeGNfZXZ0Y2huICp4Y2Up Cit7CisgICAgcmV0dXJuIHhlbmV2dGNobl9jbG9zZSh4Y2UpOworfQorCitpbnQgeGNfZXZ0Y2hu X2ZkKHhjX2V2dGNobiAqeGNlKQoreworICAgIHJldHVybiB4ZW5ldnRjaG5fZmQoeGNlKTsKK30K KworaW50IHhjX2V2dGNobl9ub3RpZnkoeGNfZXZ0Y2huICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9y dCkKK3sKKyAgICByZXR1cm4geGVuZXZ0Y2huX25vdGlmeSh4Y2UsIHBvcnQpOworfQorCitldnRj aG5fcG9ydF9vcl9lcnJvcl90Cit4Y19ldnRjaG5fYmluZF91bmJvdW5kX3BvcnQoeGNfZXZ0Y2hu ICp4Y2UsIGludCBkb21pZCkKK3sKKyAgICByZXR1cm4geGVuZXZ0Y2huX2JpbmRfdW5ib3VuZF9w b3J0KHhjZSwgZG9taWQpOworfQorCitldnRjaG5fcG9ydF9vcl9lcnJvcl90Cit4Y19ldnRjaG5f YmluZF9pbnRlcmRvbWFpbih4Y19ldnRjaG4gKnhjZSwgaW50IGRvbWlkLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgZXZ0Y2huX3BvcnRfdCByZW1vdGVfcG9ydCkKK3sKKyAgICByZXR1cm4g eGVuZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4oeGNlLCBkb21pZCwgcmVtb3RlX3BvcnQpOworfQor CitldnRjaG5fcG9ydF9vcl9lcnJvcl90Cit4Y19ldnRjaG5fYmluZF92aXJxKHhjX2V2dGNobiAq eGNlLCB1bnNpZ25lZCBpbnQgdmlycSkKK3sKKyAgICByZXR1cm4geGVuZXZ0Y2huX2JpbmRfdmly cSh4Y2UsIHZpcnEpOworfQorCitpbnQgeGNfZXZ0Y2huX3VuYmluZCh4Y19ldnRjaG4gKnhjZSwg ZXZ0Y2huX3BvcnRfdCBwb3J0KQoreworICAgIHJldHVybiB4ZW5ldnRjaG5fdW5iaW5kKHhjZSwg cG9ydCk7Cit9CisKK2V2dGNobl9wb3J0X29yX2Vycm9yX3QKK3hjX2V2dGNobl9wZW5kaW5nKHhj X2V2dGNobiAqeGNlKQoreworICAgIHJldHVybiB4ZW5ldnRjaG5fcGVuZGluZyh4Y2UpOworfQor CitpbnQgeGNfZXZ0Y2huX3VubWFzayh4Y19ldnRjaG4gKnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0 KQoreworICAgIHJldHVybiB4ZW5ldnRjaG5fdW5tYXNrKHhjZSwgcG9ydCk7Cit9CisKKy8qCisg KiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisg KiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2Rl OiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMveGNfZnJlZWJzZF9v c2RlcC5jIGIvdG9vbHMvbGlieGMveGNfZnJlZWJzZF9vc2RlcC5jCmluZGV4IDQzMjNlMTYuLjMz OTk5N2MgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL3hjX2ZyZWVic2Rfb3NkZXAuYworKysgYi90 b29scy9saWJ4Yy94Y19mcmVlYnNkX29zZGVwLmMKQEAgLTMxLDEzICszMSwxMSBAQAogI2luY2x1 ZGUgPHN5cy9pb2N0bC5oPgogCiAjaW5jbHVkZSA8eGVuL21lbW9yeS5oPgotI2luY2x1ZGUgPHhl bi9zeXMvZXZ0Y2huLmg+CiAKICNpbmNsdWRlICJ4ZW5jdHJsLmgiCiAjaW5jbHVkZSAieGVuY3Ry bG9zZGVwLmgiCiAKICNkZWZpbmUgUFJJVkNNRF9ERVYgICAgICIvZGV2L3hlbi9wcml2Y21kIgot I2RlZmluZSBFVlRDSE5fREVWICAgICAgIi9kZXYveGVuL2V2dGNobiIKIAogI2RlZmluZSBQRVJS T1IoX20sIF9hLi4uKSB4Y19vc2RlcF9sb2coeGNoLFhUTF9FUlJPUixYQ19JTlRFUk5BTF9FUlJP UixfbSBcCiAgICAgICAgICAgICAgICAgICAiICglZCA9ICVzKSIsICMjIF9hICwgZXJybm8sIHhj X3N0cmVycm9yKHhjaCwgZXJybm8pKQpAQCAtMjUxLDEwNSArMjQ5LDYgQEAgc3RhdGljIHN0cnVj dCB4Y19vc2RlcF9vcHMgZnJlZWJzZF9wcml2Y21kX29wcyA9IHsKICAgICB9LAogfTsKIAotLyot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFdnRjaG4gZGV2aWNlIGludGVyZmFjZSAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKi8KLWludCBvc2RlcF9ldnRjaG5fb3Blbih4Y19ldnRjaG4gKnhj ZSkKLXsKLSAgICBpbnQgZmQgPSBvcGVuKEVWVENITl9ERVYsIE9fUkRXUik7Ci0gICAgaWYgKCBm ZCA9PSAtMSApCi0gICAgICAgIHJldHVybiAtMTsKLSAgICB4Y2UtPmZkID0gZmQ7Ci0gICAgcmV0 dXJuIDA7Ci19Ci0KLWludCBvc2RlcF9ldnRjaG5fY2xvc2UoeGNfZXZ0Y2huICp4Y2UpCi17Ci0g ICAgaWYgKCB4Y2UtPmZkID09IC0xICkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4g Y2xvc2UoeGNlLT5mZCk7Ci19Ci0KLWludCB4Y19ldnRjaG5fZmQoeGNfZXZ0Y2huICp4Y2UpCi17 Ci0gICAgcmV0dXJuIHhjZS0+ZmQ7Ci19Ci0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tIEV2dGNobiBpbnRlcmZhY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1pbnQg eGNfZXZ0Y2huX25vdGlmeSh4Y19ldnRjaG4gKnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KQotewot ICAgIGludCBmZCA9IHhjZS0+ZmQ7Ci0gICAgc3RydWN0IGlvY3RsX2V2dGNobl9ub3RpZnkgbm90 aWZ5OwotCi0gICAgbm90aWZ5LnBvcnQgPSBwb3J0OwotCi0gICAgcmV0dXJuIGlvY3RsKGZkLCBJ T0NUTF9FVlRDSE5fTk9USUZZLCAmbm90aWZ5KTsKLX0KLQotZXZ0Y2huX3BvcnRfb3JfZXJyb3Jf dCB4Y19ldnRjaG5fYmluZF91bmJvdW5kX3BvcnQoeGNfZXZ0Y2huICp4Y2UsIGludCBkb21pZCkK LXsKLSAgICBpbnQgcmV0LCBmZCA9IHhjZS0+ZmQ7Ci0gICAgc3RydWN0IGlvY3RsX2V2dGNobl9i aW5kX3VuYm91bmRfcG9ydCBiaW5kOwotCi0gICAgYmluZC5yZW1vdGVfZG9tYWluID0gZG9taWQ7 Ci0KLSAgICByZXQgPSBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX0JJTkRfVU5CT1VORF9QT1JULCAm YmluZCk7Ci0gICAgcmV0dXJuICggcmV0ID09IDAgKSA/IGJpbmQucG9ydCA6IHJldDsKLX0KLQot ZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdAoteGNfZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4oeGNfZXZ0 Y2huICp4Y2UsIGludCBkb21pZCwgZXZ0Y2huX3BvcnRfdCByZW1vdGVfcG9ydCkKLXsKLSAgICBp bnQgcmV0LCBmZCA9IHhjZS0+ZmQ7Ci0gICAgc3RydWN0IGlvY3RsX2V2dGNobl9iaW5kX2ludGVy ZG9tYWluIGJpbmQ7Ci0KLSAgICBiaW5kLnJlbW90ZV9kb21haW4gPSBkb21pZDsKLSAgICBiaW5k LnJlbW90ZV9wb3J0ID0gcmVtb3RlX3BvcnQ7Ci0KLSAgICByZXQgPSBpb2N0bChmZCwgSU9DVExf RVZUQ0hOX0JJTkRfSU5URVJET01BSU4sICZiaW5kKTsKLSAgICByZXR1cm4gKCByZXQgPT0gMCAp ID8gYmluZC5wb3J0IDogcmV0OwotfQotCi1ldnRjaG5fcG9ydF9vcl9lcnJvcl90IHhjX2V2dGNo bl9iaW5kX3ZpcnEoeGNfZXZ0Y2huICp4Y2UsIHVuc2lnbmVkIGludCB2aXJxKQotewotICAgIGlu dCByZXQsIGZkID0geGNlLT5mZDsKLSAgICBzdHJ1Y3QgaW9jdGxfZXZ0Y2huX2JpbmRfdmlycSBi aW5kOwotCi0gICAgYmluZC52aXJxID0gdmlycTsKLQotICAgIHJldCA9IGlvY3RsKGZkLCBJT0NU TF9FVlRDSE5fQklORF9WSVJRLCAmYmluZCk7Ci0gICAgcmV0dXJuICggcmV0ID09IDAgKSA/IGJp bmQucG9ydCA6IHJldDsKLX0KLQotaW50IHhjX2V2dGNobl91bmJpbmQoeGNfZXZ0Y2huICp4Y2Us IGV2dGNobl9wb3J0X3QgcG9ydCkKLXsKLSAgICBpbnQgZmQgPSB4Y2UtPmZkOwotICAgIHN0cnVj dCBpb2N0bF9ldnRjaG5fdW5iaW5kIHVuYmluZDsKLQotICAgIHVuYmluZC5wb3J0ID0gcG9ydDsK LQotICAgIHJldHVybiBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX1VOQklORCwgJnVuYmluZCk7Ci19 Ci0KLWV2dGNobl9wb3J0X29yX2Vycm9yX3QgeGNfZXZ0Y2huX3BlbmRpbmcoeGNfZXZ0Y2huICp4 Y2UpCi17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAgICBldnRjaG5fcG9ydF90IHBvcnQ7Ci0K LSAgICBpZiAoIHJlYWQoZmQsICZwb3J0LCBzaXplb2YocG9ydCkpICE9IHNpemVvZihwb3J0KSAp Ci0gICAgICAgIHJldHVybiAtMTsKLQotICAgIHJldHVybiBwb3J0OwotfQotCi1pbnQgeGNfZXZ0 Y2huX3VubWFzayh4Y19ldnRjaG4gKnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KQotewotICAgIGlu dCBmZCA9IHhjZS0+ZmQ7Ci0KLSAgICBpZiAoIHdyaXRlKGZkLCAmcG9ydCwgc2l6ZW9mKHBvcnQp KSAhPSBzaXplb2YocG9ydCkgKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgcmV0dXJuIDA7Ci19 Ci0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGcmVlQlNEIGludGVyZmFjZSAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiBzdGF0aWMgc3RydWN0IHhjX29zZGVwX29wcyAq CiBmcmVlYnNkX29zZGVwX2luaXQoeGNfaW50ZXJmYWNlICp4Y2gsIGVudW0geGNfb3NkZXBfdHlw ZSB0eXBlKQpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMveGNfbGludXhfb3NkZXAuYyBiL3Rvb2xz L2xpYnhjL3hjX2xpbnV4X29zZGVwLmMKaW5kZXggYzFmMzRkZS4uMTg4M2FiYSAxMDA2NDQKLS0t IGEvdG9vbHMvbGlieGMveGNfbGludXhfb3NkZXAuYworKysgYi90b29scy9saWJ4Yy94Y19saW51 eF9vc2RlcC5jCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CiAKICNp bmNsdWRlIDx4ZW4vbWVtb3J5Lmg+Ci0jaW5jbHVkZSA8eGVuL3N5cy9ldnRjaG4uaD4KICNpbmNs dWRlIDx4ZW4vc3lzL2dudGRldi5oPgogI2luY2x1ZGUgPHhlbi9zeXMvZ250YWxsb2MuaD4KIApA QCAtNDU1LDEwMCArNDU0LDYgQEAgc3RhdGljIHN0cnVjdCB4Y19vc2RlcF9vcHMgbGludXhfcHJp dmNtZF9vcHMgPSB7CiAKICNkZWZpbmUgREVWWEVOICIvZGV2L3hlbi8iCiAKLWludCBvc2RlcF9l dnRjaG5fb3Blbih4Y19ldnRjaG4gKnhjZSkKLXsKLSAgICBpbnQgZmQgPSBvcGVuKERFVlhFTiAi ZXZ0Y2huIiwgT19SRFdSKTsKLSAgICBpZiAoIGZkID09IC0xICkKLSAgICAgICAgcmV0dXJuIC0x OwotICAgIHhjZS0+ZmQgPSBmZDsKLSAgICByZXR1cm4gMDsKLX0KLQotaW50IG9zZGVwX2V2dGNo bl9jbG9zZSh4Y19ldnRjaG4gKnhjZSkKLXsKLSAgICBpZiAoIHhjZS0+ZmQgPT0gLTEgKQotICAg ICAgICByZXR1cm4gMDsKLQotICAgIHJldHVybiBjbG9zZSh4Y2UtPmZkKTsKLX0KLQotaW50IHhj X2V2dGNobl9mZCh4Y19ldnRjaG4gKnhjZSkKLXsKLSAgICByZXR1cm4geGNlLT5mZDsKLX0KLQot aW50IHhjX2V2dGNobl9ub3RpZnkoeGNfZXZ0Y2huICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCkK LXsKLSAgICBpbnQgZmQgPSB4Y2UtPmZkOwotICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fbm90aWZ5 IG5vdGlmeTsKLQotICAgIG5vdGlmeS5wb3J0ID0gcG9ydDsKLQotICAgIHJldHVybiBpb2N0bChm ZCwgSU9DVExfRVZUQ0hOX05PVElGWSwgJm5vdGlmeSk7Ci19Ci0KLWV2dGNobl9wb3J0X29yX2Vy cm9yX3QgeGNfZXZ0Y2huX2JpbmRfdW5ib3VuZF9wb3J0KHhjX2V2dGNobiAqeGNlLCBpbnQgZG9t aWQpCi17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAgICBzdHJ1Y3QgaW9jdGxfZXZ0Y2huX2Jp bmRfdW5ib3VuZF9wb3J0IGJpbmQ7Ci0KLSAgICBiaW5kLnJlbW90ZV9kb21haW4gPSBkb21pZDsK LQotICAgIHJldHVybiBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX0JJTkRfVU5CT1VORF9QT1JULCAm YmluZCk7Ci19Ci0KLWV2dGNobl9wb3J0X29yX2Vycm9yX3QgeGNfZXZ0Y2huX2JpbmRfaW50ZXJk b21haW4oeGNfZXZ0Y2huICp4Y2UsIGludCBkb21pZCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZ0Y2huX3BvcnRfdCByZW1vdGVfcG9ydCkKLXsK LSAgICBpbnQgZmQgPSB4Y2UtPmZkOwotICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fYmluZF9pbnRl cmRvbWFpbiBiaW5kOwotCi0gICAgYmluZC5yZW1vdGVfZG9tYWluID0gZG9taWQ7Ci0gICAgYmlu ZC5yZW1vdGVfcG9ydCA9IHJlbW90ZV9wb3J0OwotCi0gICAgcmV0dXJuIGlvY3RsKGZkLCBJT0NU TF9FVlRDSE5fQklORF9JTlRFUkRPTUFJTiwgJmJpbmQpOwotfQotCi1ldnRjaG5fcG9ydF9vcl9l cnJvcl90IHhjX2V2dGNobl9iaW5kX3ZpcnEoeGNfZXZ0Y2huICp4Y2UsIHVuc2lnbmVkIGludCB2 aXJxKQotewotICAgIGludCBmZCA9IHhjZS0+ZmQ7Ci0gICAgc3RydWN0IGlvY3RsX2V2dGNobl9i aW5kX3ZpcnEgYmluZDsKLQotICAgIGJpbmQudmlycSA9IHZpcnE7Ci0KLSAgICByZXR1cm4gaW9j dGwoZmQsIElPQ1RMX0VWVENITl9CSU5EX1ZJUlEsICZiaW5kKTsKLX0KLQotaW50IHhjX2V2dGNo bl91bmJpbmQoeGNfZXZ0Y2huICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCkKLXsKLSAgICBpbnQg ZmQgPSB4Y2UtPmZkOwotICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fdW5iaW5kIHVuYmluZDsKLQot ICAgIHVuYmluZC5wb3J0ID0gcG9ydDsKLQotICAgIHJldHVybiBpb2N0bChmZCwgSU9DVExfRVZU Q0hOX1VOQklORCwgJnVuYmluZCk7Ci19Ci0KLWV2dGNobl9wb3J0X29yX2Vycm9yX3QgeGNfZXZ0 Y2huX3BlbmRpbmcoeGNfZXZ0Y2huICp4Y2UpCi17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAg ICBldnRjaG5fcG9ydF90IHBvcnQ7Ci0KLSAgICBpZiAoIHJlYWQoZmQsICZwb3J0LCBzaXplb2Yo cG9ydCkpICE9IHNpemVvZihwb3J0KSApCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIHJldHVy biBwb3J0OwotfQotCi1pbnQgeGNfZXZ0Y2huX3VubWFzayh4Y19ldnRjaG4gKnhjZSwgZXZ0Y2hu X3BvcnRfdCBwb3J0KQotewotICAgIGludCBmZCA9IHhjZS0+ZmQ7Ci0KLSAgICBpZiAoIHdyaXRl KGZkLCAmcG9ydCwgc2l6ZW9mKHBvcnQpKSAhPSBzaXplb2YocG9ydCkgKQotICAgICAgICByZXR1 cm4gLTE7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyB4Y19vc2RlcF9oYW5kbGUgbGludXhf Z250dGFiX29wZW4oeGNfZ250dGFiICp4Y2cpCiB7CiAgICAgaW50IGZkID0gb3BlbihERVZYRU4g ImdudGRldiIsIE9fUkRXUik7CmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19taW5pb3MuYyBi L3Rvb2xzL2xpYnhjL3hjX21pbmlvcy5jCmluZGV4IDRhY2UxYjUuLmRiN2IzNDQgMTAwNjQ0Ci0t LSBhL3Rvb2xzL2xpYnhjL3hjX21pbmlvcy5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX21pbmlvcy5j CkBAIC0xOSwxNCArMTksMTEgQEAKICAqLwogCiAjdW5kZWYgTkRFQlVHCi0jaW5jbHVkZSAieGVu LWV4dGVybmFsL2JzZC1zeXMtcXVldWUuaCIKICNpbmNsdWRlIDxtaW5pLW9zL3R5cGVzLmg+CiAj aW5jbHVkZSA8bWluaS1vcy9vcy5oPgogI2luY2x1ZGUgPG1pbmktb3MvbW0uaD4KICNpbmNsdWRl IDxtaW5pLW9zL2xpYi5oPgogI2luY2x1ZGUgPG1pbmktb3MvZ250bWFwLmg+Ci0jaW5jbHVkZSA8 bWluaS1vcy9ldmVudHMuaD4KLSNpbmNsdWRlIDxtaW5pLW9zL3dhaXQuaD4KICNpbmNsdWRlIDxz eXMvbW1hbi5oPgogCiAjaW5jbHVkZSA8eGVuL21lbW9yeS5oPgpAQCAtNDEsMTMgKzM4LDkgQEAK ICNpbmNsdWRlICJ4Y19wcml2YXRlLmgiCiAKIHZvaWQgbWluaW9zX2ludGVyZmFjZV9jbG9zZV9m ZChpbnQgZmQpOwotdm9pZCBtaW5pb3NfZXZ0Y2huX2Nsb3NlX2ZkKGludCBmZCk7CiB2b2lkIG1p bmlvc19nbnR0YWJfY2xvc2VfZmQoaW50IGZkKTsKIAogZXh0ZXJuIHZvaWQgbWluaW9zX2ludGVy ZmFjZV9jbG9zZV9mZChpbnQgZmQpOwotZXh0ZXJuIHZvaWQgbWluaW9zX2V2dGNobl9jbG9zZV9m ZChpbnQgZmQpOwotCi1leHRlcm4gc3RydWN0IHdhaXRfcXVldWVfaGVhZCBldmVudF9xdWV1ZTsK IAogc3RhdGljIHhjX29zZGVwX2hhbmRsZSBtaW5pb3NfcHJpdmNtZF9vcGVuKHhjX2ludGVyZmFj ZSAqeGNoKQogewpAQCAtMTk3LDIyMCArMTkwLDYgQEAgc3RhdGljIHN0cnVjdCB4Y19vc2RlcF9v cHMgbWluaW9zX3ByaXZjbWRfb3BzID0gewogICAgIH0sCiB9OwogCi0KLS8qIFhYWCBOb3RlOiBU aGlzIGlzIG5vdCB0aHJlYWRzYWZlICovCi1zdGF0aWMgc3RydWN0IGV2dGNobl9wb3J0X2luZm8q IHBvcnRfYWxsb2MoaW50IGZkKSB7Ci0gICAgc3RydWN0IGV2dGNobl9wb3J0X2luZm8gKnBvcnRf aW5mbzsKLSAgICBwb3J0X2luZm8gPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBldnRjaG5fcG9ydF9p bmZvKSk7Ci0gICAgaWYgKHBvcnRfaW5mbyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsK LSAgICBwb3J0X2luZm8tPnBlbmRpbmcgPSAwOwotICAgIHBvcnRfaW5mby0+cG9ydCA9IC0xOwot ICAgIHBvcnRfaW5mby0+Ym91bmQgPSAwOwotCi0gICAgTElTVF9JTlNFUlRfSEVBRCgmZmlsZXNb ZmRdLmV2dGNobi5wb3J0cywgcG9ydF9pbmZvLCBsaXN0KTsKLSAgICByZXR1cm4gcG9ydF9pbmZv OwotfQotCi1zdGF0aWMgdm9pZCBwb3J0X2RlYWxsb2Moc3RydWN0IGV2dGNobl9wb3J0X2luZm8g KnBvcnRfaW5mbykgewotICAgIGlmIChwb3J0X2luZm8tPmJvdW5kKQotICAgICAgICB1bmJpbmRf ZXZ0Y2huKHBvcnRfaW5mby0+cG9ydCk7Ci0gICAgTElTVF9SRU1PVkUocG9ydF9pbmZvLCBsaXN0 KTsKLSAgICBmcmVlKHBvcnRfaW5mbyk7Ci19Ci0KLWludCBvc2RlcF9ldnRjaG5fb3Blbih4Y19l dnRjaG4gKnhjZSkKLXsKLSAgICBpbnQgZmQgPSBhbGxvY19mZChGVFlQRV9FVlRDSE4pOwotICAg IGlmICggZmQgPT0gLTEgKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgTElTVF9JTklUKCZmaWxl c1tmZF0uZXZ0Y2huLnBvcnRzKTsKLSAgICB4Y2UtPmZkID0gZmQ7Ci0gICAgcHJpbnRmKCJldnRj aG5fb3BlbigpIC0+ICVkXG4iLCBmZCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWludCBvc2RlcF9l dnRjaG5fY2xvc2UoeGNfZXZ0Y2huICp4Y2UsIHhjX29zZGVwX2hhbmRsZSBoKQotewotICAgIGlm ICggeGNlLT5mZCA9PSAtMSApCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIGNsb3Nl KHhjZS0+ZmQpOwotfQotCi12b2lkIG1pbmlvc19ldnRjaG5fY2xvc2VfZmQoaW50IGZkKQotewot ICAgIHN0cnVjdCBldnRjaG5fcG9ydF9pbmZvICpwb3J0X2luZm8sICp0bXA7Ci0gICAgTElTVF9G T1JFQUNIX1NBRkUocG9ydF9pbmZvLCAmZmlsZXNbZmRdLmV2dGNobi5wb3J0cywgbGlzdCwgdG1w KQotICAgICAgICBwb3J0X2RlYWxsb2MocG9ydF9pbmZvKTsKLQotICAgIGZpbGVzW2ZkXS50eXBl ID0gRlRZUEVfTk9ORTsKLX0KLQotaW50IHhjX2V2dGNobl9mZCh4Y19ldnRjaG4gKnhjZSkKLXsK LSAgICByZXR1cm4geGNlLT5mZDsKLX0KLQotaW50IHhjX2V2dGNobl9ub3RpZnkoeGNfZXZ0Y2hu ICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCkKLXsKLSAgICBpbnQgcmV0OwotCi0gICAgcmV0ID0g bm90aWZ5X3JlbW90ZV92aWFfZXZ0Y2huKHBvcnQpOwotCi0gICAgaWYgKHJldCA8IDApIHsKLQll cnJubyA9IC1yZXQ7Ci0JcmV0ID0gLTE7Ci0gICAgfQotICAgIHJldHVybiByZXQ7Ci19Ci0KLXN0 YXRpYyB2b2lkIGV2dGNobl9oYW5kbGVyKGV2dGNobl9wb3J0X3QgcG9ydCwgc3RydWN0IHB0X3Jl Z3MgKnJlZ3MsIHZvaWQgKmRhdGEpCi17Ci0gICAgaW50IGZkID0gKGludCkoaW50cHRyX3QpZGF0 YTsKLSAgICBzdHJ1Y3QgZXZ0Y2huX3BvcnRfaW5mbyAqcG9ydF9pbmZvOwotICAgIGFzc2VydChm aWxlc1tmZF0udHlwZSA9PSBGVFlQRV9FVlRDSE4pOwotICAgIG1hc2tfZXZ0Y2huKHBvcnQpOwot ICAgIExJU1RfRk9SRUFDSChwb3J0X2luZm8sICZmaWxlc1tmZF0uZXZ0Y2huLnBvcnRzLCBsaXN0 KSB7Ci0gICAgICAgIGlmIChwb3J0X2luZm8tPnBvcnQgPT0gcG9ydCkKLSAgICAgICAgICAgIGdv dG8gZm91bmQ7Ci0gICAgfQotICAgIHByaW50aygiVW5rbm93biBwb3J0IGZvciBoYW5kbGUgJWRc biIsIGZkKTsKLSAgICByZXR1cm47Ci0KLSBmb3VuZDoKLSAgICBwb3J0X2luZm8tPnBlbmRpbmcg PSAxOwotICAgIGZpbGVzW2ZkXS5yZWFkID0gMTsKLSAgICB3YWtlX3VwKCZldmVudF9xdWV1ZSk7 Ci19Ci0KLWV2dGNobl9wb3J0X29yX2Vycm9yX3QgeGNfZXZ0Y2huX2JpbmRfdW5ib3VuZF9wb3J0 KHhjX2V2dGNobiAqeGNlLCBpbnQgZG9taWQpCi17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAg ICBzdHJ1Y3QgZXZ0Y2huX3BvcnRfaW5mbyAqcG9ydF9pbmZvOwotICAgIGludCByZXQ7Ci0gICAg ZXZ0Y2huX3BvcnRfdCBwb3J0OwotCi0gICAgYXNzZXJ0KGdldF9jdXJyZW50KCkgPT0gbWFpbl90 aHJlYWQpOwotICAgIHBvcnRfaW5mbyA9IHBvcnRfYWxsb2MoZmQpOwotICAgIGlmIChwb3J0X2lu Zm8gPT0gTlVMTCkKLQlyZXR1cm4gLTE7Ci0KLSAgICBwcmludGYoInhjX2V2dGNobl9iaW5kX3Vu Ym91bmRfcG9ydCglZCkiLCBkb21pZCk7Ci0gICAgcmV0ID0gZXZ0Y2huX2FsbG9jX3VuYm91bmQo ZG9taWQsIGV2dGNobl9oYW5kbGVyLCAodm9pZCopKGludHB0cl90KWZkLCAmcG9ydCk7Ci0gICAg cHJpbnRmKCIgPSAlZFxuIiwgcmV0KTsKLQotICAgIGlmIChyZXQgPCAwKSB7Ci0JcG9ydF9kZWFs bG9jKHBvcnRfaW5mbyk7Ci0JZXJybm8gPSAtcmV0OwotCXJldHVybiAtMTsKLSAgICB9Ci0gICAg cG9ydF9pbmZvLT5ib3VuZCA9IDE7Ci0gICAgcG9ydF9pbmZvLT5wb3J0ID0gcG9ydDsKLSAgICB1 bm1hc2tfZXZ0Y2huKHBvcnQpOwotICAgIHJldHVybiBwb3J0OwotfQotCi1ldnRjaG5fcG9ydF9v cl9lcnJvcl90IHhjX2V2dGNobl9iaW5kX2ludGVyZG9tYWluKHhjX2V2dGNobiAqeGNlLCBpbnQg ZG9taWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGV2dGNobl9wb3J0X3QgcmVtb3RlX3BvcnQpCi17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAg ICBzdHJ1Y3QgZXZ0Y2huX3BvcnRfaW5mbyAqcG9ydF9pbmZvOwotICAgIGV2dGNobl9wb3J0X3Qg bG9jYWxfcG9ydDsKLSAgICBpbnQgcmV0OwotCi0gICAgYXNzZXJ0KGdldF9jdXJyZW50KCkgPT0g bWFpbl90aHJlYWQpOwotICAgIHBvcnRfaW5mbyA9IHBvcnRfYWxsb2MoZmQpOwotICAgIGlmIChw b3J0X2luZm8gPT0gTlVMTCkKLQlyZXR1cm4gLTE7Ci0KLSAgICBwcmludGYoInhjX2V2dGNobl9i aW5kX2ludGVyZG9tYWluKCVkLCAlIlBSSWQzMiIpIiwgZG9taWQsIHJlbW90ZV9wb3J0KTsKLSAg ICByZXQgPSBldnRjaG5fYmluZF9pbnRlcmRvbWFpbihkb21pZCwgcmVtb3RlX3BvcnQsIGV2dGNo bl9oYW5kbGVyLCAodm9pZCopKGludHB0cl90KWZkLCAmbG9jYWxfcG9ydCk7Ci0gICAgcHJpbnRm KCIgPSAlZFxuIiwgcmV0KTsKLQotICAgIGlmIChyZXQgPCAwKSB7Ci0JcG9ydF9kZWFsbG9jKHBv cnRfaW5mbyk7Ci0JZXJybm8gPSAtcmV0OwotCXJldHVybiAtMTsKLSAgICB9Ci0gICAgcG9ydF9p bmZvLT5ib3VuZCA9IDE7Ci0gICAgcG9ydF9pbmZvLT5wb3J0ID0gbG9jYWxfcG9ydDsKLSAgICB1 bm1hc2tfZXZ0Y2huKGxvY2FsX3BvcnQpOwotICAgIHJldHVybiBsb2NhbF9wb3J0OwotfQotCi1p bnQgeGNfZXZ0Y2huX3VuYmluZCh4Y19ldnRjaG4gKnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KQot ewotICAgIGludCBmZCA9IHhjZS0+ZmQ7Ci0gICAgc3RydWN0IGV2dGNobl9wb3J0X2luZm8gKnBv cnRfaW5mbzsKLQotICAgIExJU1RfRk9SRUFDSChwb3J0X2luZm8sICZmaWxlc1tmZF0uZXZ0Y2hu LnBvcnRzLCBsaXN0KSB7Ci0gICAgICAgIGlmIChwb3J0X2luZm8tPnBvcnQgPT0gcG9ydCkgewot ICAgICAgICAgICAgcG9ydF9kZWFsbG9jKHBvcnRfaW5mbyk7Ci0gICAgICAgICAgICByZXR1cm4g MDsKLSAgICAgICAgfQotICAgIH0KLSAgICBwcmludGYoIldhcm5pbmc6IGNvdWxkbid0IGZpbmQg cG9ydCAlIlBSSWQzMiIgZm9yIHhjIGhhbmRsZSAleFxuIiwgcG9ydCwgZmQpOwotICAgIGVycm5v ID0gRUlOVkFMOwotICAgIHJldHVybiAtMTsKLX0KLQotZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCB4 Y19ldnRjaG5fYmluZF92aXJxKHhjX2V2dGNobiAqeGNlLCB1bnNpZ25lZCBpbnQgdmlycSkKLXsK LSAgICBpbnQgZmQgPSB4Y2UtPmZkOwotICAgIHN0cnVjdCBldnRjaG5fcG9ydF9pbmZvICpwb3J0 X2luZm87Ci0gICAgZXZ0Y2huX3BvcnRfdCBwb3J0OwotCi0gICAgYXNzZXJ0KGdldF9jdXJyZW50 KCkgPT0gbWFpbl90aHJlYWQpOwotICAgIHBvcnRfaW5mbyA9IHBvcnRfYWxsb2MoZmQpOwotICAg IGlmIChwb3J0X2luZm8gPT0gTlVMTCkKLQlyZXR1cm4gLTE7Ci0KLSAgICBwcmludGYoInhjX2V2 dGNobl9iaW5kX3ZpcnEoJWQpIiwgdmlycSk7Ci0gICAgcG9ydCA9IGJpbmRfdmlycSh2aXJxLCBl dnRjaG5faGFuZGxlciwgKHZvaWQqKShpbnRwdHJfdClmZCk7Ci0KLSAgICBpZiAocG9ydCA8IDAp IHsKLQlwb3J0X2RlYWxsb2MocG9ydF9pbmZvKTsKLQllcnJubyA9IC1wb3J0OwotCXJldHVybiAt MTsKLSAgICB9Ci0gICAgcG9ydF9pbmZvLT5ib3VuZCA9IDE7Ci0gICAgcG9ydF9pbmZvLT5wb3J0 ID0gcG9ydDsKLSAgICB1bm1hc2tfZXZ0Y2huKHBvcnQpOwotICAgIHJldHVybiBwb3J0OwotfQot Ci1ldnRjaG5fcG9ydF9vcl9lcnJvcl90IHhjX2V2dGNobl9wZW5kaW5nKHhjX2V2dGNobiAqeGNl KQotewotICAgIGludCBmZCA9IHhjZS0+ZmQ7Ci0gICAgc3RydWN0IGV2dGNobl9wb3J0X2luZm8g KnBvcnRfaW5mbzsKLSAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwotICAgIGV2dGNobl9wb3J0X3Qg cmV0ID0gLTE7Ci0KLSAgICBsb2NhbF9pcnFfc2F2ZShmbGFncyk7Ci0gICAgZmlsZXNbZmRdLnJl YWQgPSAwOwotCi0gICAgTElTVF9GT1JFQUNIKHBvcnRfaW5mbywgJmZpbGVzW2ZkXS5ldnRjaG4u cG9ydHMsIGxpc3QpIHsKLSAgICAgICAgaWYgKHBvcnRfaW5mby0+cG9ydCAhPSAtMSAmJiBwb3J0 X2luZm8tPnBlbmRpbmcpIHsKLSAgICAgICAgICAgIGlmIChyZXQgPT0gLTEpIHsKLSAgICAgICAg ICAgICAgICByZXQgPSBwb3J0X2luZm8tPnBvcnQ7Ci0gICAgICAgICAgICAgICAgcG9ydF9pbmZv LT5wZW5kaW5nID0gMDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZmls ZXNbZmRdLnJlYWQgPSAxOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQot ICAgICAgICB9Ci0gICAgfQotICAgIGxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKLSAgICByZXR1 cm4gcmV0OwotfQotCi1pbnQgeGNfZXZ0Y2huX3VubWFzayh4Y19ldnRjaG4gKnhjZSwgZXZ0Y2hu X3BvcnRfdCBwb3J0KQotewotICAgIHVubWFza19ldnRjaG4ocG9ydCk7Ci0gICAgcmV0dXJuIDA7 Ci19Ci0KIC8qIE9wdGlvbmFsbHkgZmx1c2ggZmlsZSB0byBkaXNrIGFuZCBkaXNjYXJkIHBhZ2Ug Y2FjaGUgKi8KIHZvaWQgZGlzY2FyZF9maWxlX2NhY2hlKHhjX2ludGVyZmFjZSAqeGNoLCBpbnQg ZmQsIGludCBmbHVzaCkKIHsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL3hjX25ldGJzZC5jIGIv dG9vbHMvbGlieGMveGNfbmV0YnNkLmMKaW5kZXggYjFiODI4Zi4uZmU0ZjBhMSAxMDA2NDQKLS0t IGEvdG9vbHMvbGlieGMveGNfbmV0YnNkLmMKKysrIGIvdG9vbHMvbGlieGMveGNfbmV0YnNkLmMK QEAgLTE5LDcgKzE5LDYgQEAKIAogI2luY2x1ZGUgInhjX3ByaXZhdGUuaCIKIAotI2luY2x1ZGUg PHhlbi9zeXMvZXZ0Y2huLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjaW5jbHVkZSA8ZmNudGwu aD4KICNpbmNsdWRlIDxtYWxsb2MuaD4KQEAgLTIyMywxMTQgKzIyMiw2IEBAIHN0YXRpYyBzdHJ1 Y3QgeGNfb3NkZXBfb3BzIG5ldGJzZF9wcml2Y21kX29wcyA9IHsKICAgICB9LAogfTsKIAotI2Rl ZmluZSBFVlRDSE5fREVWX05BTUUgICIvZGV2L3hlbmV2dCIKLQotaW50IG9zZGVwX2V2dGNobl9v cGVuKHhjX2V2dGNobiAqeGNlKQotewotICAgIGludCBmZCA9IG9wZW4oRVZUQ0hOX0RFVl9OQU1F LCBPX05PTkJMT0NLfE9fUkRXUik7Ci0gICAgaWYgKCBmZCA9PSAtMSApCi0gICAgICAgIHJldHVy biAtMTsKLSAgICB4Y2UtPmZkID0gZmQ7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWludCBvc2RlcF9l dnRjaG5fY2xvc2UoeGNfZXZ0Y2huICp4Y2UsIHhjX29zZGVwX2hhbmRsZSBoKQotewotICAgIGlm ICggeGNlLT5mZCA9PSAtMSApCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIGNsb3Nl KHhjZS0+ZmQpOwotfQotCi1pbnQgeGNfZXZ0Y2huX2ZkKHhjX2V2dGNobiAqeGNlKQotewotICAg IHJldHVybiB4Y2UtPmZkOwotfQotCi1pbnQgeGNfZXZ0Y2huX25vdGlmeSh4Y19ldnRjaG4gKnhj ZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KQotewotICAgIGludCBmZCA9IHhjZS0+ZmQ7Ci0gICAgc3Ry dWN0IGlvY3RsX2V2dGNobl9ub3RpZnkgbm90aWZ5OwotCi0gICAgbm90aWZ5LnBvcnQgPSBwb3J0 OwotCi0gICAgcmV0dXJuIGlvY3RsKGZkLCBJT0NUTF9FVlRDSE5fTk9USUZZLCAmbm90aWZ5KTsK LX0KLQotZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCB4Y19ldnRjaG5fYmluZF91bmJvdW5kX3BvcnQo eGNfZXZ0Y2huICogeGNlLCBpbnQgZG9taWQpCi17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAg ICBzdHJ1Y3QgaW9jdGxfZXZ0Y2huX2JpbmRfdW5ib3VuZF9wb3J0IGJpbmQ7Ci0gICAgaW50IHJl dDsKLQotICAgIGJpbmQucmVtb3RlX2RvbWFpbiA9IGRvbWlkOwotCi0gICAgcmV0ID0gaW9jdGwo ZmQsIElPQ1RMX0VWVENITl9CSU5EX1VOQk9VTkRfUE9SVCwgJmJpbmQpOwotICAgIGlmIChyZXQg PT0gMCkKLQlyZXR1cm4gYmluZC5wb3J0OwotICAgIGVsc2UKLQlyZXR1cm4gLTE7Ci19Ci0KLWV2 dGNobl9wb3J0X29yX2Vycm9yX3QgeGNfZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4oeGNfZXZ0Y2hu ICp4Y2UsIGludCBkb21pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZXZ0Y2huX3BvcnRfdCByZW1vdGVfcG9ydCkKLXsKLSAgICBpbnQgZmQgPSB4 Y2UtPmZkOwotICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fYmluZF9pbnRlcmRvbWFpbiBiaW5kOwot ICAgIGludCByZXQ7Ci0KLSAgICBiaW5kLnJlbW90ZV9kb21haW4gPSBkb21pZDsKLSAgICBiaW5k LnJlbW90ZV9wb3J0ID0gcmVtb3RlX3BvcnQ7Ci0KLSAgICByZXQgPSBpb2N0bChmZCwgSU9DVExf RVZUQ0hOX0JJTkRfSU5URVJET01BSU4sICZiaW5kKTsKLSAgICBpZiAocmV0ID09IDApCi0JcmV0 dXJuIGJpbmQucG9ydDsKLSAgICBlbHNlCi0JcmV0dXJuIC0xOwotfQotCi1pbnQgeGNfZXZ0Y2hu X3VuYmluZCh4Y19ldnRjaG4gKnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KQotewotICAgIGludCBm ZCA9IHhjZS0+ZmQ7Ci0gICAgc3RydWN0IGlvY3RsX2V2dGNobl91bmJpbmQgdW5iaW5kOwotCi0g ICAgdW5iaW5kLnBvcnQgPSBwb3J0OwotCi0gICAgcmV0dXJuIGlvY3RsKGZkLCBJT0NUTF9FVlRD SE5fVU5CSU5ELCAmdW5iaW5kKTsKLX0KLQotZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCB4Y19ldnRj aG5fYmluZF92aXJxKHhjX2V2dGNobiAqeGNlLCB1bnNpZ25lZCBpbnQgdmlycSkKLXsKLSAgICBp bnQgZmQgPSB4Y2UtPmZkOwotICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fYmluZF92aXJxIGJpbmQ7 Ci0gICAgaW50IGVycjsKLQotICAgIGJpbmQudmlycSA9IHZpcnE7Ci0KLSAgICBlcnIgPSBpb2N0 bChmZCwgSU9DVExfRVZUQ0hOX0JJTkRfVklSUSwgJmJpbmQpOwotICAgIGlmIChlcnIpCi0JcmV0 dXJuIC0xOwotICAgIGVsc2UKLQlyZXR1cm4gYmluZC5wb3J0OwotfQotCi1ldnRjaG5fcG9ydF9v cl9lcnJvcl90IHhjX2V2dGNobl9wZW5kaW5nKHhjX2V2dGNobiAqeGNlKQotewotICAgIGludCBm ZCA9IHhjZS0+ZmQ7Ci0gICAgZXZ0Y2huX3BvcnRfdCBwb3J0OwotCi0gICAgaWYgKCByZWFkX2V4 YWN0KGZkLCAoY2hhciAqKSZwb3J0LCBzaXplb2YocG9ydCkpID09IC0xICkKLSAgICAgICAgcmV0 dXJuIC0xOwotCi0gICAgcmV0dXJuIHBvcnQ7Ci19Ci0KLWludCB4Y19ldnRjaG5fdW5tYXNrKHhj X2V2dGNobiAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQpCi17Ci0gICAgaW50IGZkID0geGNlLT5m ZDsKLSAgICByZXR1cm4gd3JpdGVfZXhhY3QoZmQsIChjaGFyICopJnBvcnQsIHNpemVvZihwb3J0 KSk7Ci19Ci0KIC8qIE9wdGlvbmFsbHkgZmx1c2ggZmlsZSB0byBkaXNrIGFuZCBkaXNjYXJkIHBh Z2UgY2FjaGUgKi8KIHZvaWQgZGlzY2FyZF9maWxlX2NhY2hlKHhjX2ludGVyZmFjZSAqeGNoLCBp bnQgZmQsIGludCBmbHVzaCkgCiB7CmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19wcml2YXRl LmMgYi90b29scy9saWJ4Yy94Y19wcml2YXRlLmMKaW5kZXggMTU0ZTU1My4uYzY4NzZjMyAxMDA2 NDQKLS0tIGEvdG9vbHMvbGlieGMveGNfcHJpdmF0ZS5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX3By aXZhdGUuYwpAQCAtMjUxLDQ2ICsyNTEsNiBAQCBpbnQgZG9feGVuX2h5cGVyY2FsbCh4Y19pbnRl cmZhY2UgKnhjaCwgcHJpdmNtZF9oeXBlcmNhbGxfdCAqaHlwZXJjYWxsKQogICAgIHJldHVybiB4 Y2gtPm9wcy0+dS5wcml2Y21kLmh5cGVyY2FsbCh4Y2gsIHhjaC0+b3BzX2hhbmRsZSwgaHlwZXJj YWxsKTsKIH0KIAoteGNfZXZ0Y2huICp4Y19ldnRjaG5fb3Blbih4ZW50b29sbG9nX2xvZ2dlciAq bG9nZ2VyLCB1bnNpZ25lZCBvcGVuX2ZsYWdzKQotewotICAgIHhjX2V2dGNobiAqeGNlID0gbWFs bG9jKHNpemVvZigqeGNlKSk7Ci0gICAgaW50IHJjOwotCi0gICAgaWYgKCF4Y2UpIHJldHVybiBO VUxMOwotCi0gICAgeGNlLT5mZCA9IC0xOwotICAgIHhjZS0+bG9nZ2VyID0gbG9nZ2VyOwotICAg IHhjZS0+bG9nZ2VyX3RvZnJlZSAgPSBOVUxMOwotCi0gICAgaWYgKCF4Y2UtPmxvZ2dlcikgewot ICAgICAgICB4Y2UtPmxvZ2dlciA9IHhjZS0+bG9nZ2VyX3RvZnJlZSA9Ci0gICAgICAgICAgICAo eGVudG9vbGxvZ19sb2dnZXIqKQotICAgICAgICAgICAgeHRsX2NyZWF0ZWxvZ2dlcl9zdGRpb3N0 cmVhbShzdGRlcnIsIFhUTF9QUk9HUkVTUywgMCk7Ci0gICAgICAgIGlmICgheGNlLT5sb2dnZXIp IGdvdG8gZXJyOwotICAgIH0KLQotICAgIHJjID0gb3NkZXBfZXZ0Y2huX29wZW4oeGNlKTsKLSAg ICBpZiAoIHJjICA8IDAgKSBnb3RvIGVycjsKLQotICAgIHJldHVybiB4Y2U7Ci0KLWVycjoKLSAg ICBvc2RlcF9ldnRjaG5fY2xvc2UoeGNlKTsKLSAgICB4dGxfbG9nZ2VyX2Rlc3Ryb3koeGNlLT5s b2dnZXJfdG9mcmVlKTsKLSAgICBmcmVlKHhjZSk7Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLWlu dCB4Y19ldnRjaG5fY2xvc2UoeGNfZXZ0Y2huICp4Y2UpCi17Ci0gICAgaW50IHJjOwotCi0gICAg cmMgPSBvc2RlcF9ldnRjaG5fY2xvc2UoeGNlKTsKLSAgICB4dGxfbG9nZ2VyX2Rlc3Ryb3koeGNl LT5sb2dnZXJfdG9mcmVlKTsKLSAgICBmcmVlKHhjZSk7Ci0gICAgcmV0dXJuIHJjOwotfQotCiB4 Y19nbnR0YWIgKnhjX2dudHRhYl9vcGVuKHhlbnRvb2xsb2dfbG9nZ2VyICpsb2dnZXIsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG9wZW5fZmxhZ3MpCiB7CmRpZmYgLS1n aXQgYS90b29scy9saWJ4Yy94Y19wcml2YXRlLmggYi90b29scy9saWJ4Yy94Y19wcml2YXRlLmgK aW5kZXggYTViZjc5YS4uNDZlMGU3NSAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMveGNfcHJpdmF0 ZS5oCisrKyBiL3Rvb2xzL2xpYnhjL3hjX3ByaXZhdGUuaApAQCAtMTIzLDEzICsxMjMsNiBAQCBz dHJ1Y3QgeGNfaW50ZXJmYWNlX2NvcmUgewogICAgIHhjX29zZGVwX2hhbmRsZSAgb3BzX2hhbmRs ZTsgLyogb3BhcXVlIGRhdGEgZm9yIHhjX29zZGVwX29wcyAqLwogfTsKIAotc3RydWN0IHhlbmV2 dGNobl9oYW5kbGUgewotICAgIHhlbnRvb2xsb2dfbG9nZ2VyICpsb2dnZXIsICpsb2dnZXJfdG9m cmVlOwotICAgIGludCBmZDsKLX07Ci1pbnQgb3NkZXBfZXZ0Y2huX29wZW4oeGNfZXZ0Y2huICp4 Y2UpOwotaW50IG9zZGVwX2V2dGNobl9jbG9zZSh4Y19ldnRjaG4gKnhjZSk7Ci0KIHZvaWQgeGNf cmVwb3J0X2Vycm9yKHhjX2ludGVyZmFjZSAqeGNoLCBpbnQgY29kZSwgY29uc3QgY2hhciAqZm10 LCAuLi4pCiAgICAgX19hdHRyaWJ1dGVfXygoZm9ybWF0KHByaW50ZiwzLDQpKSk7CiB2b2lkIHhj X3JlcG9ydHYoeGNfaW50ZXJmYWNlICp4Y2gsIHhlbnRvb2xsb2dfbG9nZ2VyICpsZywgeGVudG9v bGxvZ19sZXZlbCwKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL3hjX3NvbGFyaXMuYyBiL3Rvb2xz L2xpYnhjL3hjX3NvbGFyaXMuYwppbmRleCAwODgyMjhhLi5lZDc5ODdjIDEwMDY0NAotLS0gYS90 b29scy9saWJ4Yy94Y19zb2xhcmlzLmMKKysrIGIvdG9vbHMvbGlieGMveGNfc29sYXJpcy5jCkBA IC0yMCw3ICsyMCw2IEBACiAjaW5jbHVkZSAieGNfcHJpdmF0ZS5oIgogCiAjaW5jbHVkZSA8eGVu L21lbW9yeS5oPgotI2luY2x1ZGUgPHhlbi9zeXMvZXZ0Y2huLmg+CiAjaW5jbHVkZSA8dW5pc3Rk Lmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxtYWxsb2MuaD4KQEAgLTE5NCwxMDIg KzE5Myw2IEBAIHN0YXRpYyBzdHJ1Y3QgeGNfb3NkZXBfb3BzIHNvbGFyaXNfcHJpdmNtZF9vcHMg PSB7CiAgICAgfSwKIH07CiAKLWludCBvc2RlcF9ldnRjaG5fb3Blbih4Y19ldnRjaG4gKnhjZSkK LXsKLSAgICBpbnQgZmQ7Ci0KLSAgICBpZiAoIChmZCA9IG9wZW4oIi9kZXYveGVuL2V2dGNobiIs IE9fUkRXUikpID09IC0xICkKLSAgICB7Ci0gICAgICAgIFBFUlJPUigiQ291bGQgbm90IG9wZW4g ZXZlbnQgY2hhbm5lbCBpbnRlcmZhY2UiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQot ICAgIHhjZS0+ZmQgPSBmZDsKLSAgICByZXR1cm4gMDsKLX0KLQotaW50IG9zZGVwX2V2dGNobl9j bG9zZSh4Y19ldnRjaG4gKnhjZSkKLXsKLSAgICBpZiAoIHhjZS0+ZmQgPT0gLTEgKQotICAgICAg ICByZXR1cm4gMDsKLQotICAgIHJldHVybiBjbG9zZSh4Y2UtPmZkKTsKLX0KLQotaW50IHhjX2V2 dGNobl9mZCh4Y19ldnRjaG4gKnhjZSkKLXsKLSAgICByZXR1cm4geGNlLT5mZDsKLX0KLQotaW50 IHhjX2V2dGNobl9ub3RpZnkoeGNfZXZ0Y2huICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCkKLXsK LSAgICBpbnQgZmQgPSB4Y2UtPmZkOwotICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fbm90aWZ5IG5v dGlmeTsKLQotICAgIG5vdGlmeS5wb3J0ID0gcG9ydDsKLQotICAgIHJldHVybiBpb2N0bChmZCwg SU9DVExfRVZUQ0hOX05PVElGWSwgJm5vdGlmeSk7Ci19Ci0KLWV2dGNobl9wb3J0X29yX2Vycm9y X3QgeGNfZXZ0Y2huX2JpbmRfdW5ib3VuZF9wb3J0KHhjX2V2dGNobiAqeGNlLCBpbnQgZG9taWQp Ci17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAgICBzdHJ1Y3QgaW9jdGxfZXZ0Y2huX2JpbmRf dW5ib3VuZF9wb3J0IGJpbmQ7Ci0KLSAgICBiaW5kLnJlbW90ZV9kb21haW4gPSBkb21pZDsKLQot ICAgIHJldHVybiBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX0JJTkRfVU5CT1VORF9QT1JULCAmYmlu ZCk7Ci19Ci0KLWV2dGNobl9wb3J0X29yX2Vycm9yX3QgeGNfZXZ0Y2huX2JpbmRfaW50ZXJkb21h aW4oeGNfZXZ0Y2huICp4Y2UsIGludCBkb21pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZXZ0Y2huX3BvcnRfdCByZW1vdGVfcG9ydCkKLXsKLSAg ICBpbnQgZmQgPSB4Y2UtPmZkOwotICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fYmluZF9pbnRlcmRv bWFpbiBiaW5kOwotCi0gICAgYmluZC5yZW1vdGVfZG9tYWluID0gZG9taWQ7Ci0gICAgYmluZC5y ZW1vdGVfcG9ydCA9IHJlbW90ZV9wb3J0OwotCi0gICAgcmV0dXJuIGlvY3RsKGZkLCBJT0NUTF9F VlRDSE5fQklORF9JTlRFUkRPTUFJTiwgJmJpbmQpOwotfQotCi1ldnRjaG5fcG9ydF9vcl9lcnJv cl90IHhjX2V2dGNobl9iaW5kX3ZpcnEoeGNfZXZ0Y2huICp4Y2UsIHVuc2lnbmVkIGludCB2aXJx KQotewotICAgIGludCBmZCA9IHhjZS0+ZmQ7Ci0gICAgc3RydWN0IGlvY3RsX2V2dGNobl9iaW5k X3ZpcnEgYmluZDsKLQotICAgIGJpbmQudmlycSA9IHZpcnE7Ci0KLSAgICByZXR1cm4gaW9jdGwo ZmQsIElPQ1RMX0VWVENITl9CSU5EX1ZJUlEsICZiaW5kKTsKLX0KLQotaW50IHhjX2V2dGNobl91 bmJpbmQoeGNfZXZ0Y2huICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCkKLXsKLSAgICBpbnQgZmQg PSB4Y2UtPmZkOwotICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fdW5iaW5kIHVuYmluZDsKLQotICAg IHVuYmluZC5wb3J0ID0gcG9ydDsKLQotICAgIHJldHVybiBpb2N0bChmZCwgSU9DVExfRVZUQ0hO X1VOQklORCwgJnVuYmluZCk7Ci19Ci0KLWV2dGNobl9wb3J0X29yX2Vycm9yX3QgeGNfZXZ0Y2hu X3BlbmRpbmcoeGNfZXZ0Y2huICp4Y2UpCi17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAgICBl dnRjaG5fcG9ydF90IHBvcnQ7Ci0KLSAgICBpZiAoIHJlYWRfZXhhY3QoZmQsIChjaGFyICopJnBv cnQsIHNpemVvZihwb3J0KSkgPT0gLTEgKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICByZXR1 cm4gcG9ydDsKLX0KLQotaW50IHhjX2V2dGNobl91bm1hc2soeGNfZXZ0Y2huICp4Y2UsIGV2dGNo bl9wb3J0X3QgcG9ydCkKLXsKLSAgICBpbnQgZmQgPSB4Y2UtPmZkOwotICAgIHJldHVybiB3cml0 ZV9leGFjdChmZCwgKGNoYXIgKikmcG9ydCwgc2l6ZW9mKHBvcnQpKTsKLX0KLQogLyogT3B0aW9u YWxseSBmbHVzaCBmaWxlIHRvIGRpc2sgYW5kIGRpc2NhcmQgcGFnZSBjYWNoZSAqLwogdm9pZCBk aXNjYXJkX2ZpbGVfY2FjaGUoeGNfaW50ZXJmYWNlICp4Y2gsIGludCBmZCwgaW50IGZsdXNoKSAK IHsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL3hjX3N1c3BlbmQuYyBiL3Rvb2xzL2xpYnhjL3hj X3N1c3BlbmQuYwppbmRleCBiYmEzNmU3Li44MzYxYzdiIDEwMDY0NAotLS0gYS90b29scy9saWJ4 Yy94Y19zdXNwZW5kLmMKKysrIGIvdG9vbHMvbGlieGMveGNfc3VzcGVuZC5jCkBAIC0xNiw2ICsx Niw4IEBACiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KIAorI2luY2x1 ZGUgPHhlbmV2dGNobi5oPgorCiAjaW5jbHVkZSAieGNfcHJpdmF0ZS5oIgogI2luY2x1ZGUgInhl bmd1ZXN0LmgiCiAKQEAgLTEyNCwxMiArMTI2LDEyIEBAIHN0YXRpYyBpbnQgdW5sb2NrX3N1c3Bl bmRfZXZlbnQoeGNfaW50ZXJmYWNlICp4Y2gsIGludCBkb21pZCwgaW50ICpsb2NrZmQpCiAgICAg cmV0dXJuIC0xOwogfQogCi1pbnQgeGNfYXdhaXRfc3VzcGVuZCh4Y19pbnRlcmZhY2UgKnhjaCwg eGNfZXZ0Y2huICp4Y2UsIGludCBzdXNwZW5kX2V2dGNobikKK2ludCB4Y19hd2FpdF9zdXNwZW5k KHhjX2ludGVyZmFjZSAqeGNoLCB4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIGludCBzdXNwZW5kX2V2 dGNobikKIHsKICAgICBpbnQgcmM7CiAKICAgICBkbyB7Ci0gICAgICAgIHJjID0geGNfZXZ0Y2hu X3BlbmRpbmcoeGNlKTsKKyAgICAgICAgcmMgPSB4ZW5ldnRjaG5fcGVuZGluZyh4Y2UpOwogICAg ICAgICBpZiAocmMgPCAwKSB7CiAgICAgICAgICAgICBFUlJPUigiZXJyb3IgcG9sbGluZyBzdXNw ZW5kIG5vdGlmaWNhdGlvbiBjaGFubmVsOiAlZCIsIHJjKTsKICAgICAgICAgICAgIHJldHVybiAt MTsKQEAgLTEzNyw3ICsxMzksNyBAQCBpbnQgeGNfYXdhaXRfc3VzcGVuZCh4Y19pbnRlcmZhY2Ug KnhjaCwgeGNfZXZ0Y2huICp4Y2UsIGludCBzdXNwZW5kX2V2dGNobikKICAgICB9IHdoaWxlIChy YyAhPSBzdXNwZW5kX2V2dGNobik7CiAKICAgICAvKiBoYXJtbGVzcyBmb3Igb25lLW9mZiBzdXNw ZW5kICovCi0gICAgaWYgKHhjX2V2dGNobl91bm1hc2soeGNlLCBzdXNwZW5kX2V2dGNobikgPCAw KQorICAgIGlmICh4ZW5ldnRjaG5fdW5tYXNrKHhjZSwgc3VzcGVuZF9ldnRjaG4pIDwgMCkKICAg ICAgICAgRVJST1IoImZhaWxlZCB0byB1bm1hc2sgc3VzcGVuZCBub3RpZmljYXRpb24gY2hhbm5l bDogJWQiLCByYyk7CiAKICAgICByZXR1cm4gMDsKQEAgLTE0NSwxNiArMTQ3LDE2IEBAIGludCB4 Y19hd2FpdF9zdXNwZW5kKHhjX2ludGVyZmFjZSAqeGNoLCB4Y19ldnRjaG4gKnhjZSwgaW50IHN1 c3BlbmRfZXZ0Y2huKQogCiAvKiBJbnRlcm5hbCBjYWxsZXJzIGFyZSBhbGxvd2VkIHRvIGNhbGwg dGhpcyB3aXRoIHN1c3BlbmRfZXZ0Y2huPDAKICAqIGJ1dCAqbG9ja2ZkPjAuICovCi1pbnQgeGNf c3VzcGVuZF9ldnRjaG5fcmVsZWFzZSh4Y19pbnRlcmZhY2UgKnhjaCwgeGNfZXZ0Y2huICp4Y2Us CitpbnQgeGNfc3VzcGVuZF9ldnRjaG5fcmVsZWFzZSh4Y19pbnRlcmZhY2UgKnhjaCwgeGVuZXZ0 Y2huX2hhbmRsZSAqeGNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRvbWlk LCBpbnQgc3VzcGVuZF9ldnRjaG4sIGludCAqbG9ja2ZkKQogewogICAgIGlmIChzdXNwZW5kX2V2 dGNobiA+PSAwKQotICAgICAgICB4Y19ldnRjaG5fdW5iaW5kKHhjZSwgc3VzcGVuZF9ldnRjaG4p OworICAgICAgICB4ZW5ldnRjaG5fdW5iaW5kKHhjZSwgc3VzcGVuZF9ldnRjaG4pOwogCiAgICAg cmV0dXJuIHVubG9ja19zdXNwZW5kX2V2ZW50KHhjaCwgZG9taWQsIGxvY2tmZCk7CiB9CiAKLWlu dCB4Y19zdXNwZW5kX2V2dGNobl9pbml0X3NhbmUoeGNfaW50ZXJmYWNlICp4Y2gsIHhjX2V2dGNo biAqeGNlLAoraW50IHhjX3N1c3BlbmRfZXZ0Y2huX2luaXRfc2FuZSh4Y19pbnRlcmZhY2UgKnhj aCwgeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQgZG9taWQsIGludCBwb3J0LCBpbnQgKmxvY2tmZCkKIHsKICAgICBpbnQgcmMsIHN1c3Bl bmRfZXZ0Y2huID0gLTE7CkBAIC0xNjQsNyArMTY2LDcgQEAgaW50IHhjX3N1c3BlbmRfZXZ0Y2hu X2luaXRfc2FuZSh4Y19pbnRlcmZhY2UgKnhjaCwgeGNfZXZ0Y2huICp4Y2UsCiAgICAgICAgIGdv dG8gY2xlYW51cDsKICAgICB9CiAKLSAgICBzdXNwZW5kX2V2dGNobiA9IHhjX2V2dGNobl9iaW5k X2ludGVyZG9tYWluKHhjZSwgZG9taWQsIHBvcnQpOworICAgIHN1c3BlbmRfZXZ0Y2huID0geGVu ZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4oeGNlLCBkb21pZCwgcG9ydCk7CiAgICAgaWYgKHN1c3Bl bmRfZXZ0Y2huIDwgMCkgewogICAgICAgICBFUlJPUigiZmFpbGVkIHRvIGJpbmQgc3VzcGVuZCBl dmVudCBjaGFubmVsOiAlZCIsIHN1c3BlbmRfZXZ0Y2huKTsKICAgICAgICAgZ290byBjbGVhbnVw OwpAQCAtMTg0LDcgKzE4Niw3IEBAIGNsZWFudXA6CiAgICAgcmV0dXJuIC0xOwogfQogCi1pbnQg eGNfc3VzcGVuZF9ldnRjaG5faW5pdF9leGNsdXNpdmUoeGNfaW50ZXJmYWNlICp4Y2gsIHhjX2V2 dGNobiAqeGNlLAoraW50IHhjX3N1c3BlbmRfZXZ0Y2huX2luaXRfZXhjbHVzaXZlKHhjX2ludGVy ZmFjZSAqeGNoLCB4ZW5ldnRjaG5faGFuZGxlICp4Y2UsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50IGRvbWlkLCBpbnQgcG9ydCwgaW50ICpsb2NrZmQpCiB7CiAgICAg aW50IHN1c3BlbmRfZXZ0Y2huOwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvTWFrZWZpbGUgYi90 b29scy9saWJ4bC9NYWtlZmlsZQppbmRleCA3ZDEyY2RjLi4yM2NmZDZiIDEwMDY0NAotLS0gYS90 b29scy9saWJ4bC9NYWtlZmlsZQorKysgYi90b29scy9saWJ4bC9NYWtlZmlsZQpAQCAtMjAsMTIg KzIwLDEzIEBAIExJQlVVSURfTElCUyArPSAtbHV1aWQKIGVuZGlmCiAKIExJQlhMX0xJQlMgPQot TElCWExfTElCUyA9ICQoTERMSUJTX2xpYnhlbnRvb2xsb2cpICQoTERMSUJTX2xpYnhlbmN0cmwp ICQoTERMSUJTX2xpYnhlbmd1ZXN0KSAkKExETElCU19saWJ4ZW5zdG9yZSkgJChMRExJQlNfbGli YmxrdGFwY3RsKSAkKFBUWUZVTkNTX0xJQlMpICQoTElCVVVJRF9MSUJTKQorTElCWExfTElCUyA9 ICQoTERMSUJTX2xpYnhlbnRvb2xsb2cpICQoTERMSUJTX2xpYnhlbmV2dGNobikgJChMRExJQlNf bGlieGVuY3RybCkgJChMRExJQlNfbGlieGVuZ3Vlc3QpICQoTERMSUJTX2xpYnhlbnN0b3JlKSAk KExETElCU19saWJibGt0YXBjdGwpICQoUFRZRlVOQ1NfTElCUykgJChMSUJVVUlEX0xJQlMpCiBp ZmVxICgkKENPTkZJR19SRU1VU19ORVRCVUYpLHkpCiBMSUJYTF9MSUJTICs9ICQoTElCTkwzX0xJ QlMpCiBlbmRpZgogCiBDRkxBR1NfTElCWEwgKz0gJChDRkxBR1NfbGlieGVudG9vbGxvZykKK0NG TEFHU19MSUJYTCArPSAkKENGTEFHU19saWJ4ZW5ldnRjaG4pCiBDRkxBR1NfTElCWEwgKz0gJChD RkxBR1NfbGlieGVuY3RybCkKIENGTEFHU19MSUJYTCArPSAkKENGTEFHU19saWJ4ZW5ndWVzdCkK IENGTEFHU19MSUJYTCArPSAkKENGTEFHU19saWJ4ZW5zdG9yZSkKQEAgLTE1OSw3ICsxNjAsNyBA QCAkKFhFTl9JTklUX0RPTTBfT0JKUyk6IENGTEFHUyArPSAkKENGTEFHU19saWJ4ZW5jdHJsKQog JChYRU5fSU5JVF9ET00wX09CSlMpOiBDRkxBR1MgKz0gJChDRkxBR1NfbGlieGVuc3RvcmUpCiAK IFNBVkVfSEVMUEVSX09CSlMgPSBsaWJ4bF9zYXZlX2hlbHBlci5vIF9saWJ4bF9zYXZlX21zZ3Nf aGVscGVyLm8KLSQoU0FWRV9IRUxQRVJfT0JKUyk6IENGTEFHUyArPSAkKENGTEFHU19saWJ4ZW5j dHJsKQorJChTQVZFX0hFTFBFUl9PQkpTKTogQ0ZMQUdTICs9ICQoQ0ZMQUdTX2xpYnhlbmN0cmwp ICQoQ0ZMQUdTX2xpYnhlbmV2dGNobikKIAogUEtHX0NPTkZJRyA9IHhlbmxpZ2h0LnBjIHhsdXRp bC5wYwogCmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bC5jIGIvdG9vbHMvbGlieGwvbGli eGwuYwppbmRleCAyMmJiYzI5Li42YjZjZjg2IDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4 bC5jCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsLmMKQEAgLTE4Niw3ICsxODYsNyBAQCBpbnQgbGli eGxfY3R4X2ZyZWUobGlieGxfY3R4ICpjdHgpCiAgICAgaWYgKGN0eC0+eGNoKSB4Y19pbnRlcmZh Y2VfY2xvc2UoY3R4LT54Y2gpOwogICAgIGxpYnhsX3ZlcnNpb25faW5mb19kaXNwb3NlKCZjdHgt PnZlcnNpb25faW5mbyk7CiAgICAgaWYgKGN0eC0+eHNoKSB4c19kYWVtb25fY2xvc2UoY3R4LT54 c2gpOwotICAgIGlmIChjdHgtPnhjZSkgeGNfZXZ0Y2huX2Nsb3NlKGN0eC0+eGNlKTsKKyAgICBp ZiAoY3R4LT54Y2UpIHhlbmV2dGNobl9jbG9zZShjdHgtPnhjZSk7CiAKICAgICBsaWJ4bF9fcG9s bGVyX3B1dChjdHgsIGN0eC0+cG9sbGVyX2FwcCk7CiAgICAgY3R4LT5wb2xsZXJfYXBwID0gTlVM TDsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX2RvbV9zdXNwZW5kLmMgYi90b29scy9s aWJ4bC9saWJ4bF9kb21fc3VzcGVuZC5jCmluZGV4IDRjYzAxYWQuLmEyZThkODYgMTAwNjQ0Ci0t LSBhL3Rvb2xzL2xpYnhsL2xpYnhsX2RvbV9zdXNwZW5kLmMKKysrIGIvdG9vbHMvbGlieGwvbGli eGxfZG9tX3N1c3BlbmQuYwpAQCAtMTA3LDkgKzEwNyw5IEBAIHN0YXRpYyB2b2lkIGRvbWFpbl9z dXNwZW5kX2NhbGxiYWNrX2NvbW1vbihsaWJ4bF9fZWdjICplZ2MsCiAgICAgaWYgKChodm1fc19z dGF0ZSA9PSAwKSAmJiAoZHNzLT5ndWVzdF9ldnRjaG4ucG9ydCA+PSAwKSkgewogICAgICAgICBM T0coREVCVUcsICJpc3N1aW5nICVzIHN1c3BlbmQgcmVxdWVzdCB2aWEgZXZlbnQgY2hhbm5lbCIs CiAgICAgICAgICAgICBkc3MtPmh2bSA/ICJQVkhWTSIgOiAiUFYiKTsKLSAgICAgICAgcmV0ID0g eGNfZXZ0Y2huX25vdGlmeShDVFgtPnhjZSwgZHNzLT5ndWVzdF9ldnRjaG4ucG9ydCk7CisgICAg ICAgIHJldCA9IHhlbmV2dGNobl9ub3RpZnkoQ1RYLT54Y2UsIGRzcy0+Z3Vlc3RfZXZ0Y2huLnBv cnQpOwogICAgICAgICBpZiAocmV0IDwgMCkgewotICAgICAgICAgICAgTE9HKEVSUk9SLCAieGNf ZXZ0Y2huX25vdGlmeSBmYWlsZWQgcmV0PSVkIiwgcmV0KTsKKyAgICAgICAgICAgIExPRyhFUlJP UiwgInhlbmV2dGNobl9ub3RpZnkgZmFpbGVkIHJldD0lZCIsIHJldCk7CiAgICAgICAgICAgICBy YyA9IEVSUk9SX0ZBSUw7CiAgICAgICAgICAgICBnb3RvIGVycjsKICAgICAgICAgfQpkaWZmIC0t Z2l0IGEvdG9vbHMvbGlieGwvbGlieGxfZXZlbnQuYyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2V2ZW50 LmMKaW5kZXggN2Q1NDlhZC4uNzk2YTIzZCAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxf ZXZlbnQuYworKysgYi90b29scy9saWJ4bC9saWJ4bF9ldmVudC5jCkBAIC03MzksNyArNzM5LDcg QEAgc3RhdGljIHZvaWQgZXZ0Y2huX2ZkX2NhbGxiYWNrKGxpYnhsX19lZ2MgKmVnYywgbGlieGxf X2V2X2ZkICpldiwKICAgICAgICAgLyogT0ssIHRoYXQncyB0aGF0IHdvcmthcm91bmQgZG9uZS4g IFdlIGNhbiBhY3R1YWxseSBjaGVjayBmb3IKICAgICAgICAgICogd29yayBmb3IgdXMgdG8gZG86 ICovCiAKLSAgICAgICAgcG9ydCA9IHhjX2V2dGNobl9wZW5kaW5nKENUWC0+eGNlKTsKKyAgICAg ICAgcG9ydCA9IHhlbmV2dGNobl9wZW5kaW5nKENUWC0+eGNlKTsKICAgICAgICAgaWYgKHBvcnQg PCAwKSB7CiAgICAgICAgICAgICBpZiAoZXJybm8gPT0gRUFHQUlOKQogICAgICAgICAgICAgICAg IGJyZWFrOwpAQCAtNzY1LDIwICs3NjUsMjAgQEAgc3RhdGljIHZvaWQgZXZ0Y2huX2ZkX2NhbGxi YWNrKGxpYnhsX19lZ2MgKmVnYywgbGlieGxfX2V2X2ZkICpldiwKIH0KIAogaW50IGxpYnhsX19j dHhfZXZ0Y2huX2luaXQobGlieGxfX2djICpnYykgewotICAgIHhjX2V2dGNobiAqeGNlOworICAg IHhlbmV2dGNobl9oYW5kbGUgKnhjZTsKICAgICBpbnQgcmMsIGZkOwogCiAgICAgaWYgKENUWC0+ eGNlKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHhjZSA9IHhjX2V2dGNobl9vcGVuKENUWC0+ bGcsIDApOworICAgIHhjZSA9IHhlbmV2dGNobl9vcGVuKENUWC0+bGcsIDApOwogICAgIGlmICgh eGNlKSB7CiAgICAgICAgIExPR0UoRVJST1IsImNhbm5vdCBvcGVuIGxpYnhjIGV2dGNobiBoYW5k bGUiKTsKICAgICAgICAgcmMgPSBFUlJPUl9GQUlMOwogICAgICAgICBnb3RvIG91dDsKICAgICB9 CiAKLSAgICBmZCA9IHhjX2V2dGNobl9mZCh4Y2UpOworICAgIGZkID0geGVuZXZ0Y2huX2ZkKHhj ZSk7CiAgICAgYXNzZXJ0KGZkID49IDApOwogCiAgICAgcmMgPSBsaWJ4bF9mZF9zZXRfbm9uYmxv Y2soQ1RYLCBmZCwgMSk7CkBAIC03ODgsNyArNzg4LDcgQEAgaW50IGxpYnhsX19jdHhfZXZ0Y2hu X2luaXQobGlieGxfX2djICpnYykgewogICAgIHJldHVybiAwOwogCiAgb3V0OgotICAgIHhjX2V2 dGNobl9jbG9zZSh4Y2UpOworICAgIHhlbmV2dGNobl9jbG9zZSh4Y2UpOwogICAgIHJldHVybiBy YzsKIH0KIApAQCAtODEwLDE0ICs4MTAsMTQgQEAgaW50IGxpYnhsX19ldl9ldnRjaG5fd2FpdChs aWJ4bF9fZ2MgKmdjLCBsaWJ4bF9fZXZfZXZ0Y2huICpldmV2KQogCiAgICAgaWYgKCFsaWJ4bF9f ZXZfZmRfaXNyZWdpc3RlcmVkKCZDVFgtPmV2dGNobl9lZmQpKSB7CiAgICAgICAgIHJjID0gbGli eGxfX2V2X2ZkX3JlZ2lzdGVyKGdjLCAmQ1RYLT5ldnRjaG5fZWZkLCBldnRjaG5fZmRfY2FsbGJh Y2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhjX2V2dGNobl9mZChDVFgt PnhjZSksIFBPTExJTik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhlbmV2 dGNobl9mZChDVFgtPnhjZSksIFBPTExJTik7CiAgICAgICAgIGlmIChyYykgZ290byBvdXQ7CiAg ICAgfQogCiAgICAgaWYgKGV2ZXYtPndhaXRpbmcpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg ciA9IHhjX2V2dGNobl91bm1hc2soQ1RYLT54Y2UsIGV2ZXYtPnBvcnQpOworICAgIHIgPSB4ZW5l dnRjaG5fdW5tYXNrKENUWC0+eGNlLCBldmV2LT5wb3J0KTsKICAgICBpZiAocikgewogICAgICAg ICBMT0dFKEVSUk9SLCJjYW5ub3QgdW5tYXNrIGV2ZW50IGNoYW5uZWwgJWQiLGV2ZXYtPnBvcnQp OwogICAgICAgICByYyA9IEVSUk9SX0ZBSUw7CmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4 bF9pbnRlcm5hbC5oIGIvdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaAppbmRleCBiMDBhZGQw Li4zY2FhNDBkIDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF9pbnRlcm5hbC5oCisrKyBi L3Rvb2xzL2xpYnhsL2xpYnhsX2ludGVybmFsLmgKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRl IDxzeXMvZmlsZS5oPgogI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgogCisjaW5jbHVkZSA8eGVuZXZ0 Y2huLmg+CiAjaW5jbHVkZSA8eGVuc3RvcmUuaD4KICNpbmNsdWRlIDx4ZW5jdHJsLmg+CiAjaW5j bHVkZSA8eGVuZ3Vlc3QuaD4KQEAgLTQ0MCw3ICs0NDEsNyBAQCBzdHJ1Y3QgbGlieGxfX2N0eCB7 CiAgICAgdWludDMyX3Qgd2F0Y2hfY291bnRlcjsgLyogaGVscHMgZGlzYW1iaWd1YXRlIHNsb3Qg cmV1c2UgKi8KICAgICBsaWJ4bF9fZXZfZmQgd2F0Y2hfZWZkOwogCi0gICAgeGNfZXZ0Y2huICp4 Y2U7IC8qIHdhaXRpbmcgbXVzdCBiZSBkb25lIG9ubHkgd2l0aCBsaWJ4bF9fZXZfZXZ0Y2huKiAq LworICAgIHhlbmV2dGNobl9oYW5kbGUgKnhjZTsgLyogd2FpdGluZyBtdXN0IGJlIGRvbmUgb25s eSB3aXRoIGxpYnhsX19ldl9ldnRjaG4qICovCiAgICAgTElCWExfTElTVF9IRUFEKCwgbGlieGxf X2V2X2V2dGNobikgZXZ0Y2huc193YWl0aW5nOwogICAgIGxpYnhsX19ldl9mZCBldnRjaG5fZWZk OwogCkBAIC05MTQsNyArOTE1LDcgQEAgc3RhdGljIGlubGluZSBpbnQgbGlieGxfX2V2X3hzd2F0 Y2hfaXNyZWdpc3RlcmVkKGNvbnN0IGxpYnhsX19ldl94c3dhdGNoICp4dykKICAqIFdoZW4gdGhl IGV2ZW50IGlzIHNpZ25hbGVkIHRoZW4gdGhlIGNhbGxiYWNrIHdpbGwgYmUgbWFkZSwgb25jZS4K ICAqIFRoZW4geW91IG11c3QgY2FsbCBsaWJ4bF9fZXZfZXZ0Y2huX3dhaXQgYWdhaW4sIGlmIGRl c2lyZWQuCiAgKgotICogWW91IG11c3QgTk9UIGNhbGwgeGNfZXZ0Y2huX3VubWFzay4gIHdhaXQg d2lsbCBkbyB0aGF0IGZvciB5b3UuCisgKiBZb3UgbXVzdCBOT1QgY2FsbCB4ZW5ldnRjaG5fdW5t YXNrLiAgd2FpdCB3aWxsIGRvIHRoYXQgZm9yIHlvdS4KICAqCiAgKiBDYWxsaW5nIGxpYnhsX19l dl9ldnRjaG5fY2FuY2VsIHdpbGwgYXJyYW5nZSBmb3IgbGlieGwgdG8gZGlzcmVnYXJkCiAgKiBm dXR1cmUgb2NjdXJyZW5jZXMgb2YgZXZlbnQuICBCb3RoIGxpYnhsX19ldl9ldnRjaG5fd2FpdCBh bmQKZGlmZiAtLWdpdCBhL3Rvb2xzL21pc2MvTWFrZWZpbGUgYi90b29scy9taXNjL01ha2VmaWxl CmluZGV4IGM0NDkwZjMuLmNmNmE0NzUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL21pc2MvTWFrZWZpbGUK KysrIGIvdG9vbHMvbWlzYy9NYWtlZmlsZQpAQCAtNCw2ICs0LDcgQEAgaW5jbHVkZSAkKFhFTl9S T09UKS90b29scy9SdWxlcy5tawogQ0ZMQUdTICs9IC1XZXJyb3IKICMgSW5jbHVkZSBjb25maWd1 cmUgb3V0cHV0IChjb25maWcuaCkKIENGTEFHUyArPSAtaW5jbHVkZSAkKFhFTl9ST09UKS90b29s cy9jb25maWcuaAorQ0ZMQUdTICs9ICQoQ0ZMQUdTX2xpYnhlbmV2dGNobikKIENGTEFHUyArPSAk KENGTEFHU19saWJ4ZW5jdHJsKQogQ0ZMQUdTICs9ICQoQ0ZMQUdTX3hlbmluY2x1ZGUpCiBDRkxB R1MgKz0gJChDRkxBR1NfbGlieGVuc3RvcmUpCkBAIC04OCwxOCArODksMTggQEAgeGVubG9ja3By b2Y6IHhlbmxvY2twcm9mLm8KICMgeGVuLWhwdG9vbCBpbmNvcnJlY3RseSB1c2VzIGxpYnhjIGlu dGVybmFscwogeGVuLWhwdG9vbC5vOiBDRkxBR1MgKz0gLUkkKFhFTl9ST09UKS90b29scy9saWJ4 YwogeGVuLWhwdG9vbDogeGVuLWhwdG9vbC5vCi0JJChDQykgJChMREZMQUdTKSAtbyAkQCAkPCAk KExETElCU19saWJ4ZW5jdHJsKSAkKExETElCU19saWJ4ZW5ndWVzdCkgJChMRExJQlNfbGlieGVu c3RvcmUpICQoQVBQRU5EX0xERkxBR1MpCisJJChDQykgJChMREZMQUdTKSAtbyAkQCAkPCAkKExE TElCU19saWJ4ZW5ldnRjaG4pICQoTERMSUJTX2xpYnhlbmN0cmwpICQoTERMSUJTX2xpYnhlbmd1 ZXN0KSAkKExETElCU19saWJ4ZW5zdG9yZSkgJChBUFBFTkRfTERGTEFHUykKIAogIyB4ZW4tbWZu ZHVtcCBpbmNvcnJlY3RseSB1c2VzIGxpYnhjIGludGVybmFscwogeGVuLW1mbmR1bXAubzogQ0ZM QUdTICs9IC1JJChYRU5fUk9PVCkvdG9vbHMvbGlieGMKIHhlbi1tZm5kdW1wOiB4ZW4tbWZuZHVt cC5vCi0JJChDQykgJChMREZMQUdTKSAtbyAkQCAkPCAkKExETElCU19saWJ4ZW5jdHJsKSAkKExE TElCU19saWJ4ZW5ndWVzdCkgJChBUFBFTkRfTERGTEFHUykKKwkkKENDKSAkKExERkxBR1MpIC1v ICRAICQ8ICQoTERMSUJTX2xpYnhlbmV2dGNobikgJChMRExJQlNfbGlieGVuY3RybCkgJChMRExJ QlNfbGlieGVuZ3Vlc3QpICQoQVBQRU5EX0xERkxBR1MpCiAKIHhlbndhdGNoZG9nZDogeGVud2F0 Y2hkb2dkLm8KIAkkKENDKSAkKExERkxBR1MpIC1vICRAICQ8ICQoTERMSUJTX2xpYnhlbmN0cmwp ICQoQVBQRU5EX0xERkxBR1MpCiAKIHhlbi1sb3dtZW1kOiB4ZW4tbG93bWVtZC5vCi0JJChDQykg JChMREZMQUdTKSAtbyAkQCAkPCAkKExETElCU19saWJ4ZW5jdHJsKSAkKExETElCU19saWJ4ZW5z dG9yZSkgJChBUFBFTkRfTERGTEFHUykKKwkkKENDKSAkKExERkxBR1MpIC1vICRAICQ8ICQoTERM SUJTX2xpYnhlbmV2dGNobikgJChMRExJQlNfbGlieGVuY3RybCkgJChMRExJQlNfbGlieGVuc3Rv cmUpICQoQVBQRU5EX0xERkxBR1MpCiAKIGd0cmFjZXZpZXc6IGd0cmFjZXZpZXcubwogCSQoQ0Mp ICQoTERGTEFHUykgLW8gJEAgJDwgJChDVVJTRVNfTElCUykgJChUSU5GT19MSUJTKSAkKEFQUEVO RF9MREZMQUdTKQpkaWZmIC0tZ2l0IGEvdG9vbHMvbWlzYy94ZW4taHB0b29sLmMgYi90b29scy9t aXNjL3hlbi1ocHRvb2wuYwppbmRleCBjNzU2MWE5Li5lYmNjOWU4IDEwMDY0NAotLS0gYS90b29s cy9taXNjL3hlbi1ocHRvb2wuYworKysgYi90b29scy9taXNjL3hlbi1ocHRvb2wuYwpAQCAtMSwz ICsxLDQgQEAKKyNpbmNsdWRlIDx4ZW5ldnRjaG4uaD4KICNpbmNsdWRlIDx4ZW5jdHJsLmg+CiAj aW5jbHVkZSA8eGNfcHJpdmF0ZS5oPgogI2luY2x1ZGUgPHhjX2NvcmUuaD4KQEAgLTk4LDcgKzk5 LDcgQEAgc3RhdGljIGludCBocF9tZW1fcXVlcnlfZnVuYyhpbnQgYXJnYywgY2hhciAqYXJndltd KQogICAgIHJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBpbnQgc3VzcGVuZF9ndWVzdCh4Y19pbnRl cmZhY2UgKnhjaCwgeGNfZXZ0Y2huICp4Y2UsIGludCBkb21pZCwKK3N0YXRpYyBpbnQgc3VzcGVu ZF9ndWVzdCh4Y19pbnRlcmZhY2UgKnhjaCwgeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLCBpbnQgZG9t aWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpldnRjaG4sIGludCAqbG9ja2ZkKQog ewogICAgIGludCBwb3J0LCByYywgc3VzcGVuZF9ldnRjaG4gPSAtMTsKQEAgLTEyMyw3ICsxMjQs NyBAQCBzdGF0aWMgaW50IHN1c3BlbmRfZ3Vlc3QoeGNfaW50ZXJmYWNlICp4Y2gsIHhjX2V2dGNo biAqeGNlLCBpbnQgZG9taWQsCiAgICAgfQogICAgICpldnRjaG4gPSBzdXNwZW5kX2V2dGNobjsK IAotICAgIHJjID0geGNfZXZ0Y2huX25vdGlmeSh4Y2UsIHN1c3BlbmRfZXZ0Y2huKTsKKyAgICBy YyA9IHhlbmV2dGNobl9ub3RpZnkoeGNlLCBzdXNwZW5kX2V2dGNobik7CiAgICAgaWYgKHJjIDwg MCkKICAgICB7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIG5vdGlmeSBzdXNw ZW5kIGNoYW5uZWw6IGVycm5vICVkXG4iLCByYyk7CkBAIC0xOTgsOCArMTk5LDggQEAgc3RhdGlj IGludCBocF9tZW1fb2ZmbGluZV9mdW5jKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAgICAg ICAgICAgICAgZWxzZSBpZiAoc3RhdHVzICYgUEdfT0ZGTElORV9PV05FRCkKICAgICAgICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICAgICAgIGludCByZXN1bHQsIHN1c3BlbmRfZXZ0Y2huID0g LTEsIHN1c3BlbmRfbG9ja2ZkID0gLTE7Ci0gICAgICAgICAgICAgICAgICAgIHhjX2V2dGNobiAq eGNlOwotICAgICAgICAgICAgICAgICAgICB4Y2UgPSB4Y19ldnRjaG5fb3BlbihOVUxMLCAwKTsK KyAgICAgICAgICAgICAgICAgICAgeGVuZXZ0Y2huX2hhbmRsZSAqeGNlOworICAgICAgICAgICAg ICAgICAgICB4Y2UgPSB4ZW5ldnRjaG5fb3BlbihOVUxMLCAwKTsKIAogICAgICAgICAgICAgICAg ICAgICBpZiAoeGNlID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgIHsKQEAgLTIxNCw3ICsy MTUsNyBAQCBzdGF0aWMgaW50IGhwX21lbV9vZmZsaW5lX2Z1bmMoaW50IGFyZ2MsIGNoYXIgKmFy Z3ZbXSkKICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgZnBy aW50ZihzdGRlcnIsICJGYWlsZWQgdG8gc3VzcGVuZCBndWVzdCAlZCBmb3IiCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICIgbWZuICVseFxuIiwgZG9taWQsIG1mbik7Ci0gICAgICAg ICAgICAgICAgICAgICAgICB4Y19ldnRjaG5fY2xvc2UoeGNlKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgIHhlbmV2dGNobl9jbG9zZSh4Y2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIC0xOwogICAgICAgICAgICAgICAgICAgICB9CiAKQEAgLTIzOCw3ICsyMzksNyBAQCBzdGF0 aWMgaW50IGhwX21lbV9vZmZsaW5lX2Z1bmMoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICAg ICAgICAgICAgICAgICAgeGNfZG9tYWluX3Jlc3VtZSh4Y2gsIGRvbWlkLCAxKTsKICAgICAgICAg ICAgICAgICAgICAgeGNfc3VzcGVuZF9ldnRjaG5fcmVsZWFzZSh4Y2gsIHhjZSwgZG9taWQsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VzcGVuZF9ldnRj aG4sICZzdXNwZW5kX2xvY2tmZCk7Ci0gICAgICAgICAgICAgICAgICAgIHhjX2V2dGNobl9jbG9z ZSh4Y2UpOworICAgICAgICAgICAgICAgICAgICB4ZW5ldnRjaG5fY2xvc2UoeGNlKTsKICAgICAg ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CmRpZmYg LS1naXQgYS90b29scy9taXNjL3hlbi1sb3dtZW1kLmMgYi90b29scy9taXNjL3hlbi1sb3dtZW1k LmMKaW5kZXggODJmZmQ3NS4uMzIwMDQwNCAxMDA2NDQKLS0tIGEvdG9vbHMvbWlzYy94ZW4tbG93 bWVtZC5jCisrKyBiL3Rvb2xzL21pc2MveGVuLWxvd21lbWQuYwpAQCAtNCwyMiArNCwyMyBAQAog ICovCiAKICNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHhlbmV2dGNobi5oPgogI2luY2x1 ZGUgPHhlbmN0cmwuaD4KICNpbmNsdWRlIDx4ZW5zdG9yZS5oPgogI2luY2x1ZGUgPHN0ZGxpYi5o PgogI2luY2x1ZGUgPHN0cmluZy5oPgogCiBzdGF0aWMgZXZ0Y2huX3BvcnRfdCB2aXJxX3BvcnQg ICAgICA9IC0xOwotc3RhdGljIHhjX2V2dGNobiAqeGNlX2hhbmRsZSAgICAgICAgPSBOVUxMOwor c3RhdGljIHhlbmV2dGNobl9oYW5kbGUgKnhjZV9oYW5kbGUgPSBOVUxMOwogc3RhdGljIHhjX2lu dGVyZmFjZSAqeGNoICAgICAgICAgICAgPSBOVUxMOwogc3RhdGljIHN0cnVjdCB4c19oYW5kbGUg KnhzX2hhbmRsZSAgPSBOVUxMOwogCiB2b2lkIGNsZWFudXAodm9pZCkKIHsKICAgICBpZiAodmly cV9wb3J0ID4gLTEpCi0gICAgICAgIHhjX2V2dGNobl91bmJpbmQoeGNlX2hhbmRsZSwgdmlycV9w b3J0KTsKKyAgICAgICAgeGVuZXZ0Y2huX3VuYmluZCh4Y2VfaGFuZGxlLCB2aXJxX3BvcnQpOwog ICAgIGlmICh4Y2VfaGFuZGxlKQotICAgICAgICB4Y19ldnRjaG5fY2xvc2UoeGNlX2hhbmRsZSk7 CisgICAgICAgIHhlbmV2dGNobl9jbG9zZSh4Y2VfaGFuZGxlKTsKICAgICBpZiAoeGNoKQogICAg ICAgICB4Y19pbnRlcmZhY2VfY2xvc2UoeGNoKTsKICAgICBpZiAoeHNfaGFuZGxlKQpAQCAtOTQs NyArOTUsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgICAgICByZXR1 cm4gMTsKICAgICB9CiAKLQl4Y2VfaGFuZGxlID0geGNfZXZ0Y2huX29wZW4oTlVMTCwgMCk7CisJ eGNlX2hhbmRsZSA9IHhlbmV2dGNobl9vcGVuKE5VTEwsIDApOwogCWlmICh4Y2VfaGFuZGxlID09 IE5VTEwpCiAgICAgewogICAgICAgICBwZXJyb3IoIkZhaWxlZCB0byBvcGVuIGV2dGNobiBkZXZp Y2UiKTsKQEAgLTEwOCw3ICsxMDksNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltd KQogICAgICAgICByZXR1cm4gMzsKICAgICB9CiAKLQlpZiAoKHJjID0geGNfZXZ0Y2huX2JpbmRf dmlycSh4Y2VfaGFuZGxlLCBWSVJRX0VOT01FTSkpID09IC0xKQorCWlmICgocmMgPSB4ZW5ldnRj aG5fYmluZF92aXJxKHhjZV9oYW5kbGUsIFZJUlFfRU5PTUVNKSkgPT0gLTEpCiAgICAgewogICAg ICAgICBwZXJyb3IoIkZhaWxlZCB0byBiaW5kIHRvIGRvbWFpbiBleGNlcHRpb24gdmlycSBwb3J0 Iik7CiAgICAgICAgIHJldHVybiA0OwpAQCAtMTIwLDcgKzEyMSw3IEBAIGludCBtYWluKGludCBh cmdjLCBjaGFyICphcmd2W10pCiAgICAgewogICAgICAgICBldnRjaG5fcG9ydF90IHBvcnQ7CiAK LSAgICAgICAgaWYgKChwb3J0ID0geGNfZXZ0Y2huX3BlbmRpbmcoeGNlX2hhbmRsZSkpID09IC0x KQorICAgICAgICBpZiAoKHBvcnQgPSB4ZW5ldnRjaG5fcGVuZGluZyh4Y2VfaGFuZGxlKSkgPT0g LTEpCiAgICAgICAgIHsKICAgICAgICAgICAgIHBlcnJvcigiRmFpbGVkIHRvIGxpc3RlbiBmb3Ig cGVuZGluZyBldmVudCBjaGFubmVsIik7CiAgICAgICAgICAgICByZXR1cm4gNTsKQEAgLTEzNCw3 ICsxMzUsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgICAgICAgICAg cmV0dXJuIDY7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoeGNfZXZ0Y2huX3VubWFzayh4Y2Vf aGFuZGxlLCBwb3J0KSA9PSAtMSkKKyAgICAgICAgaWYgKHhlbmV2dGNobl91bm1hc2soeGNlX2hh bmRsZSwgcG9ydCkgPT0gLTEpCiAgICAgICAgIHsKICAgICAgICAgICAgIHBlcnJvcigiRmFpbGVk IHRvIHVubWFzayBwb3J0Iik7CiAgICAgICAgICAgICByZXR1cm4gNzsKZGlmZiAtLWdpdCBhL3Rv b2xzL29jYW1sL2xpYnMvZXZlbnRjaG4vTWFrZWZpbGUgYi90b29scy9vY2FtbC9saWJzL2V2ZW50 Y2huL01ha2VmaWxlCmluZGV4IDJkOGQ2MTguLjE1NGVmZDQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL29j YW1sL2xpYnMvZXZlbnRjaG4vTWFrZWZpbGUKKysrIGIvdG9vbHMvb2NhbWwvbGlicy9ldmVudGNo bi9NYWtlZmlsZQpAQCAtMiwxMyArMiwxMyBAQCBUT1BMRVZFTD0kKENVUkRJUikvLi4vLi4KIFhF Tl9ST09UPSQoVE9QTEVWRUwpLy4uLy4uCiBpbmNsdWRlICQoVE9QTEVWRUwpL2NvbW1vbi5tYWtl CiAKLUNGTEFHUyArPSAkKENGTEFHU19saWJ4ZW5jdHJsKSAkKENGTEFHU194ZW5pbmNsdWRlKQor Q0ZMQUdTICs9ICQoQ0ZMQUdTX2xpYnhlbmV2dGNobikgJChDRkxBR1NfeGVuaW5jbHVkZSkKIAog T0JKUyA9IHhlbmV2ZW50Y2huCiBJTlRGID0gJChmb3JlYWNoIG9iaiwgJChPQkpTKSwkKG9iaiku Y21pKQogTElCUyA9IHhlbmV2ZW50Y2huLmNtYSB4ZW5ldmVudGNobi5jbXhhCiAKLUxJQlNfeGVu ZXZlbnRjaG4gPSAkKExETElCU19saWJ4ZW5jdHJsKQorTElCU194ZW5ldmVudGNobiA9ICQoTERM SUJTX2xpYnhlbmV2dGNobikKIAogYWxsOiAkKElOVEYpICQoTElCUykgJChQUk9HUkFNUykKIApk aWZmIC0tZ2l0IGEvdG9vbHMvb2NhbWwvbGlicy9ldmVudGNobi94ZW5ldmVudGNobl9zdHVicy5j IGIvdG9vbHMvb2NhbWwvbGlicy9ldmVudGNobi94ZW5ldmVudGNobl9zdHVicy5jCmluZGV4IDU5 MzllN2MuLmMyZDQ3MzcgMTAwNjQ0Ci0tLSBhL3Rvb2xzL29jYW1sL2xpYnMvZXZlbnRjaG4veGVu ZXZlbnRjaG5fc3R1YnMuYworKysgYi90b29scy9vY2FtbC9saWJzL2V2ZW50Y2huL3hlbmV2ZW50 Y2huX3N0dWJzLmMKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlIDx4ZW4vc3lzY3RsLmg+CiAj aW5jbHVkZSA8eGVuL3hlbi5oPgogI2luY2x1ZGUgPHhlbi9zeXMvZXZ0Y2huLmg+Ci0jaW5jbHVk ZSA8eGVuY3RybC5oPgorI2luY2x1ZGUgPHhlbmV2dGNobi5oPgogCiAjZGVmaW5lIENBTUxfTkFN RV9TUEFDRQogI2luY2x1ZGUgPGNhbWwvbWx2YWx1ZXMuaD4KQEAgLTM0LDE0ICszNCwxNCBAQAog I2luY2x1ZGUgPGNhbWwvY2FsbGJhY2suaD4KICNpbmNsdWRlIDxjYW1sL2ZhaWwuaD4KIAotI2Rl ZmluZSBfSChfX2gpICgoeGNfZXZ0Y2huICopKF9faCkpCisjZGVmaW5lIF9IKF9faCkgKCh4ZW5l dnRjaG5faGFuZGxlICopKF9faCkpCiAKIENBTUxwcmltIHZhbHVlIHN0dWJfZXZlbnRjaG5faW5p dCh2b2lkKQogewogCUNBTUxwYXJhbTAoKTsKIAlDQU1MbG9jYWwxKHJlc3VsdCk7CiAKLQl4Y19l dnRjaG4gKnhjZSA9IHhjX2V2dGNobl9vcGVuKE5VTEwsIFhDX09QRU5GTEFHX05PTl9SRUVOVFJB TlQpOworCXhlbmV2dGNobl9oYW5kbGUgKnhjZSA9IHhlbmV2dGNobl9vcGVuKE5VTEwsIDApOwog CWlmICh4Y2UgPT0gTlVMTCkKIAkJY2FtbF9mYWlsd2l0aCgib3BlbiBmYWlsZWQiKTsKIApAQCAt NTUsNyArNTUsNyBAQCBDQU1McHJpbSB2YWx1ZSBzdHViX2V2ZW50Y2huX2ZkKHZhbHVlIHhjZSkK IAlDQU1MbG9jYWwxKHJlc3VsdCk7CiAJaW50IGZkOwogCi0JZmQgPSB4Y19ldnRjaG5fZmQoX0go eGNlKSk7CisJZmQgPSB4ZW5ldnRjaG5fZmQoX0goeGNlKSk7CiAJaWYgKGZkID09IC0xKQogCQlj YW1sX2ZhaWx3aXRoKCJldnRjaG4gZmQgZmFpbGVkIik7CiAKQEAgLTY5LDcgKzY5LDcgQEAgQ0FN THByaW0gdmFsdWUgc3R1Yl9ldmVudGNobl9ub3RpZnkodmFsdWUgeGNlLCB2YWx1ZSBwb3J0KQog CUNBTUxwYXJhbTIoeGNlLCBwb3J0KTsKIAlpbnQgcmM7CiAKLQlyYyA9IHhjX2V2dGNobl9ub3Rp ZnkoX0goeGNlKSwgSW50X3ZhbChwb3J0KSk7CisJcmMgPSB4ZW5ldnRjaG5fbm90aWZ5KF9IKHhj ZSksIEludF92YWwocG9ydCkpOwogCWlmIChyYyA9PSAtMSkKIAkJY2FtbF9mYWlsd2l0aCgiZXZ0 Y2huIG5vdGlmeSBmYWlsZWQiKTsKIApAQCAtODMsNyArODMsNyBAQCBDQU1McHJpbSB2YWx1ZSBz dHViX2V2ZW50Y2huX2JpbmRfaW50ZXJkb21haW4odmFsdWUgeGNlLCB2YWx1ZSBkb21pZCwKIAlD QU1MbG9jYWwxKHBvcnQpOwogCWV2dGNobl9wb3J0X29yX2Vycm9yX3QgcmM7CiAKLQlyYyA9IHhj X2V2dGNobl9iaW5kX2ludGVyZG9tYWluKF9IKHhjZSksIEludF92YWwoZG9taWQpLCBJbnRfdmFs KHJlbW90ZV9wb3J0KSk7CisJcmMgPSB4ZW5ldnRjaG5fYmluZF9pbnRlcmRvbWFpbihfSCh4Y2Up LCBJbnRfdmFsKGRvbWlkKSwgSW50X3ZhbChyZW1vdGVfcG9ydCkpOwogCWlmIChyYyA9PSAtMSkK IAkJY2FtbF9mYWlsd2l0aCgiZXZ0Y2huIGJpbmRfaW50ZXJkb21haW4gZmFpbGVkIik7CiAJcG9y dCA9IFZhbF9pbnQocmMpOwpAQCAtOTcsNyArOTcsNyBAQCBDQU1McHJpbSB2YWx1ZSBzdHViX2V2 ZW50Y2huX2JpbmRfZG9tX2V4Y192aXJxKHZhbHVlIHhjZSkKIAlDQU1MbG9jYWwxKHBvcnQpOwog CWV2dGNobl9wb3J0X29yX2Vycm9yX3QgcmM7CiAKLQlyYyA9IHhjX2V2dGNobl9iaW5kX3ZpcnEo X0goeGNlKSwgVklSUV9ET01fRVhDKTsKKwlyYyA9IHhlbmV2dGNobl9iaW5kX3ZpcnEoX0goeGNl KSwgVklSUV9ET01fRVhDKTsKIAlpZiAocmMgPT0gLTEpCiAJCWNhbWxfZmFpbHdpdGgoImV2dGNo biBiaW5kX2RvbV9leGNfdmlycSBmYWlsZWQiKTsKIAlwb3J0ID0gVmFsX2ludChyYyk7CkBAIC0x MTAsNyArMTEwLDcgQEAgQ0FNTHByaW0gdmFsdWUgc3R1Yl9ldmVudGNobl91bmJpbmQodmFsdWUg eGNlLCB2YWx1ZSBwb3J0KQogCUNBTUxwYXJhbTIoeGNlLCBwb3J0KTsKIAlpbnQgcmM7CiAKLQly YyA9IHhjX2V2dGNobl91bmJpbmQoX0goeGNlKSwgSW50X3ZhbChwb3J0KSk7CisJcmMgPSB4ZW5l dnRjaG5fdW5iaW5kKF9IKHhjZSksIEludF92YWwocG9ydCkpOwogCWlmIChyYyA9PSAtMSkKIAkJ Y2FtbF9mYWlsd2l0aCgiZXZ0Y2huIHVuYmluZCBmYWlsZWQiKTsKIApAQCAtMTIzLDcgKzEyMyw3 IEBAIENBTUxwcmltIHZhbHVlIHN0dWJfZXZlbnRjaG5fcGVuZGluZyh2YWx1ZSB4Y2UpCiAJQ0FN TGxvY2FsMShyZXN1bHQpOwogCWV2dGNobl9wb3J0X29yX2Vycm9yX3QgcG9ydDsKIAotCXBvcnQg PSB4Y19ldnRjaG5fcGVuZGluZyhfSCh4Y2UpKTsKKwlwb3J0ID0geGVuZXZ0Y2huX3BlbmRpbmco X0goeGNlKSk7CiAJaWYgKHBvcnQgPT0gLTEpCiAJCWNhbWxfZmFpbHdpdGgoImV2dGNobiBwZW5k aW5nIGZhaWxlZCIpOwogCXJlc3VsdCA9IFZhbF9pbnQocG9ydCk7CkBAIC0xMzcsNyArMTM3LDcg QEAgQ0FNTHByaW0gdmFsdWUgc3R1Yl9ldmVudGNobl91bm1hc2sodmFsdWUgeGNlLCB2YWx1ZSBf cG9ydCkKIAlldnRjaG5fcG9ydF90IHBvcnQ7CiAKIAlwb3J0ID0gSW50X3ZhbChfcG9ydCk7Ci0J aWYgKHhjX2V2dGNobl91bm1hc2soX0goeGNlKSwgcG9ydCkpCisJaWYgKHhlbmV2dGNobl91bm1h c2soX0goeGNlKSwgcG9ydCkpCiAJCWNhbWxfZmFpbHdpdGgoImV2dGNobiB1bm1hc2sgZmFpbGVk Iik7CiAJQ0FNTHJldHVybihWYWxfdW5pdCk7CiB9CmRpZmYgLS1naXQgYS90b29scy9weXRob24v c2V0dXAucHkgYi90b29scy9weXRob24vc2V0dXAucHkKaW5kZXggNDczYzU2ZC4uMjUwODVmMCAx MDA2NDQKLS0tIGEvdG9vbHMvcHl0aG9uL3NldHVwLnB5CisrKyBiL3Rvb2xzL3B5dGhvbi9zZXR1 cC5weQpAQCAtOCwxMyArOCwxOCBAQCBleHRyYV9jb21waWxlX2FyZ3MgID0gWyAiLWZuby1zdHJp Y3QtYWxpYXNpbmciLCAiLVdlcnJvciIgXQogCiBQQVRIX1hFTiAgICAgID0gWEVOX1JPT1QgKyAi L3Rvb2xzL2luY2x1ZGUiCiBQQVRIX0xJQlhFTlRPT0xMT0cgPSBYRU5fUk9PVCArICIvdG9vbHMv bGlicy90b29sbG9nIgorUEFUSF9MSUJYRU5FVlRDSE4gPSBYRU5fUk9PVCArICIvdG9vbHMvbGli cy9ldnRjaG4iCiBQQVRIX0xJQlhDICAgID0gWEVOX1JPT1QgKyAiL3Rvb2xzL2xpYnhjIgogUEFU SF9MSUJYTCAgICA9IFhFTl9ST09UICsgIi90b29scy9saWJ4bCIKIFBBVEhfWEVOU1RPUkUgPSBY RU5fUk9PVCArICIvdG9vbHMveGVuc3RvcmUiCiAKIHhjID0gRXh0ZW5zaW9uKCJ4YyIsCiAgICAg ICAgICAgICAgICBleHRyYV9jb21waWxlX2FyZ3MgPSBleHRyYV9jb21waWxlX2FyZ3MsCi0gICAg ICAgICAgICAgICBpbmNsdWRlX2RpcnMgICAgICAgPSBbIFBBVEhfWEVOLCBQQVRIX0xJQlhFTlRP T0xMT0cgKyAiL2luY2x1ZGUiLCBQQVRIX0xJQlhDICsgIi9pbmNsdWRlIiwgInhlbi9sb3dsZXZl bC94YyIgXSwKKyAgICAgICAgICAgICAgIGluY2x1ZGVfZGlycyAgICAgICA9IFsgUEFUSF9YRU4s CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBVEhfTElCWEVOVE9PTExP RyArICIvaW5jbHVkZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBB VEhfTElCWEVORVZUQ0hOICsgIi9pbmNsdWRlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUEFUSF9MSUJYQyArICIvaW5jbHVkZSIsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJ4ZW4vbG93bGV2ZWwveGMiIF0sCiAgICAgICAgICAgICAgICBs aWJyYXJ5X2RpcnMgICAgICAgPSBbIFBBVEhfTElCWEMgXSwKICAgICAgICAgICAgICAgIGxpYnJh cmllcyAgICAgICAgICA9IFsgInhlbmN0cmwiLCAieGVuZ3Vlc3QiIF0sCiAgICAgICAgICAgICAg ICBkZXBlbmRzICAgICAgICAgICAgPSBbIFBBVEhfTElCWEMgKyAiL2xpYnhlbmN0cmwuc28iLCBQ QVRIX0xJQlhDICsgIi9saWJ4ZW5ndWVzdC5zbyIsICAiLVdsLC1ycGF0aC1saW5rPSIrUEFUSF9M SUJYRU5UT09MTE9HIF0sCmRpZmYgLS1naXQgYS90b29scy90ZXN0cy94ZW4tYWNjZXNzL3hlbi1h Y2Nlc3MuYyBiL3Rvb2xzL3Rlc3RzL3hlbi1hY2Nlc3MveGVuLWFjY2Vzcy5jCmluZGV4IGE1MmNh NmUuLmY2Mzk4NjAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3RzL3hlbi1hY2Nlc3MveGVuLWFjY2Vz cy5jCisrKyBiL3Rvb2xzL3Rlc3RzL3hlbi1hY2Nlc3MveGVuLWFjY2Vzcy5jCkBAIC03OSw3ICs3 OSw3IEBAIHN0YXRpYyB2b2lkIGNsb3NlX2hhbmRsZXIoaW50IHNpZykKIAogaW50IHhjX3dhaXRf Zm9yX2V2ZW50X29yX3RpbWVvdXQoeGNfaW50ZXJmYWNlICp4Y2gsIHhjX2V2dGNobiAqeGNlLCB1 bnNpZ25lZCBsb25nIG1zKQogewotICAgIHN0cnVjdCBwb2xsZmQgZmQgPSB7IC5mZCA9IHhjX2V2 dGNobl9mZCh4Y2UpLCAuZXZlbnRzID0gUE9MTElOIHwgUE9MTEVSUiB9OworICAgIHN0cnVjdCBw b2xsZmQgZmQgPSB7IC5mZCA9IHhlbmV2dGNobl9mZCh4Y2UpLCAuZXZlbnRzID0gUE9MTElOIHwg UE9MTEVSUiB9OwogICAgIGludCBwb3J0OwogICAgIGludCByYzsKIApkaWZmIC0tZ2l0IGEvdG9v bHMveGN1dGlscy9NYWtlZmlsZSBiL3Rvb2xzL3hjdXRpbHMvTWFrZWZpbGUKaW5kZXggZmZmNTE5 ZC4uMmQxZjExMiAxMDA2NDQKLS0tIGEvdG9vbHMveGN1dGlscy9NYWtlZmlsZQorKysgYi90b29s cy94Y3V0aWxzL01ha2VmaWxlCkBAIC0xNiw4ICsxNiw4IEBAIFBST0dSQU1TID0gcmVhZG5vdGVz IGxzZXZ0Y2huCiBDRkxBR1MgKz0gLVdlcnJvcgogCiAjIGluY29ycmVjdGx5IHVzZXMgbGlieGMg aW50ZXJuYWxzCi1DRkxBR1NfcmVhZG5vdGVzLm8gIDo9ICQoQ0ZMQUdTX2xpYnhlbmN0cmwpICQo Q0ZMQUdTX2xpYnhlbmd1ZXN0KSAtSSQoWEVOX1JPT1QpL3Rvb2xzL2xpYnhjCi1DRkxBR1NfbHNl dnRjaG4ubyAgIDo9ICQoQ0ZMQUdTX2xpYnhlbmN0cmwpCitDRkxBR1NfcmVhZG5vdGVzLm8gIDo9 ICQoQ0ZMQUdTX2xpYnhlbmV2dGNobikgJChDRkxBR1NfbGlieGVuY3RybCkgJChDRkxBR1NfbGli eGVuZ3Vlc3QpIC1JJChYRU5fUk9PVCkvdG9vbHMvbGlieGMKK0NGTEFHU19sc2V2dGNobi5vICAg Oj0gJChDRkxBR1NfbGlieGVuZXZ0Y2huKSAkKENGTEFHU19saWJ4ZW5jdHJsKQogCiAuUEhPTlk6 IGFsbAogYWxsOiBidWlsZApkaWZmIC0tZ2l0IGEvdG9vbHMveGVubW9uL01ha2VmaWxlIGIvdG9v bHMveGVubW9uL01ha2VmaWxlCmluZGV4IDIwZWExMDAuLjk4MDU2ZjIgMTAwNjQ0Ci0tLSBhL3Rv b2xzL3hlbm1vbi9NYWtlZmlsZQorKysgYi90b29scy94ZW5tb24vTWFrZWZpbGUKQEAgLTE0LDgg KzE0LDEwIEBAIFhFTl9ST09UPSQoQ1VSRElSKS8uLi8uLgogaW5jbHVkZSAkKFhFTl9ST09UKS90 b29scy9SdWxlcy5tawogCiBDRkxBR1MgICs9IC1XZXJyb3IKK0NGTEFHUyAgKz0gJChDRkxBR1Nf bGlieGVuZXZ0Y2huKQogQ0ZMQUdTICArPSAkKENGTEFHU19saWJ4ZW5jdHJsKQogTERMSUJTICAr PSAkKExETElCU19saWJ4ZW5jdHJsKQorTERMSUJTICArPSAkKExETElCU19saWJ4ZW5ldnRjaG4p CiAKIFNDUklQVFMgPSB4ZW5tb24ucHkKIApkaWZmIC0tZ2l0IGEvdG9vbHMveGVubW9uL3hlbmJh a2VkLmMgYi90b29scy94ZW5tb24veGVuYmFrZWQuYwppbmRleCAxZGRiMjliLi5lNDYwMmVmIDEw MDY0NAotLS0gYS90b29scy94ZW5tb24veGVuYmFrZWQuYworKysgYi90b29scy94ZW5tb24veGVu YmFrZWQuYwpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2luY2x1ZGUg PGVycm5vLmg+CiAjaW5jbHVkZSA8c2lnbmFsLmg+CisjaW5jbHVkZSA8eGVuZXZ0Y2huLmg+CiAj aW5jbHVkZSA8eGVuY3RybC5oPgogI2luY2x1ZGUgPHhlbi94ZW4uaD4KICNpbmNsdWRlIDxzdHJp bmcuaD4KQEAgLTI2Nyw3ICsyNjgsNyBAQCBzdGF0aWMgdm9pZCBsb2dfZXZlbnQoaW50IGV2ZW50 X2lkKQogfQogCiBpbnQgdmlycV9wb3J0OwoteGNfZXZ0Y2huICp4Y2VfaGFuZGxlID0gTlVMTDsK K3hlbmV2dGNobl9oYW5kbGUgKnhjZV9oYW5kbGUgPSBOVUxMOwogCiAvKiBSZXR1cm5zIHRoZSBl dmVudCBjaGFubmVsIGhhbmRsZS4gKi8KIC8qIFN0b2xlbiBmcm9tIHhlbnN0b3JlIGNvZGUgKi8K QEAgLTI3OSwxMiArMjgwLDEyIEBAIHN0YXRpYyBpbnQgZXZlbnRjaG5faW5pdCh2b2lkKQogICAg IGlmICgwKQogICAgICAgICByZXR1cm4gLTE7CiAgIAotICAgIHhjZV9oYW5kbGUgPSB4Y19ldnRj aG5fb3BlbihOVUxMLCAwKTsKKyAgICB4Y2VfaGFuZGxlID0geGVuZXZ0Y2huX29wZW4oTlVMTCwg MCk7CiAKICAgICBpZiAoeGNlX2hhbmRsZSA9PSBOVUxMKQogICAgICAgICBwZXJyb3IoIkZhaWxl ZCB0byBvcGVuIGV2dGNobiBkZXZpY2UiKTsKICAgCi0gICAgaWYgKChyYyA9IHhjX2V2dGNobl9i aW5kX3ZpcnEoeGNlX2hhbmRsZSwgVklSUV9UQlVGKSkgPT0gLTEpCisgICAgaWYgKChyYyA9IHhl bmV2dGNobl9iaW5kX3ZpcnEoeGNlX2hhbmRsZSwgVklSUV9UQlVGKSkgPT0gLTEpCiAgICAgICAg IHBlcnJvcigiRmFpbGVkIHRvIGJpbmQgdG8gZG9tYWluIGV4Y2VwdGlvbiB2aXJxIHBvcnQiKTsK ICAgICB2aXJxX3BvcnQgPSByYzsKICAgCkBAIC0zMDQsNyArMzA1LDcgQEAgc3RhdGljIHZvaWQg d2FpdF9mb3JfZXZlbnQodm9pZCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGV2dGNo bl9mZCA9IHhjX2V2dGNobl9mZCh4Y2VfaGFuZGxlKTsKKyAgICBldnRjaG5fZmQgPSB4ZW5ldnRj aG5fZmQoeGNlX2hhbmRsZSk7CiAKICAgICBGRF9aRVJPKCZpbnNldCk7CiAgICAgRkRfU0VUKGV2 dGNobl9mZCwgJmluc2V0KTsKQEAgLTMxNCwxMyArMzE1LDEzIEBAIHN0YXRpYyB2b2lkIHdhaXRf Zm9yX2V2ZW50KHZvaWQpCiAgICAgcmV0ID0gc2VsZWN0KGV2dGNobl9mZCsxLCAmaW5zZXQsIE5V TEwsIE5VTEwsICZ0dik7CiAgIAogICAgIGlmICggKHJldCA9PSAxKSAmJiBGRF9JU1NFVChldnRj aG5fZmQsICZpbnNldCkpIHsKLSAgICAgICAgaWYgKChwb3J0ID0geGNfZXZ0Y2huX3BlbmRpbmco eGNlX2hhbmRsZSkpID09IC0xKQorICAgICAgICBpZiAoKHBvcnQgPSB4ZW5ldnRjaG5fcGVuZGlu Zyh4Y2VfaGFuZGxlKSkgPT0gLTEpCiAgICAgICAgICAgICBwZXJyb3IoIkZhaWxlZCB0byByZWFk IGZyb20gZXZlbnQgZmQiKTsKICAgICAKICAgICAgICAgLy8gICAgaWYgKHBvcnQgPT0gdmlycV9w b3J0KQogICAgICAgICAvLyAgICAgIHByaW50ZigiZ290IHRoZSBldmVudCBJIHdhcyBsb29raW5n IGZvclxyXG4iKTsKIAotICAgICAgICBpZiAoeGNfZXZ0Y2huX3VubWFzayh4Y2VfaGFuZGxlLCBw b3J0KSA9PSAtMSkKKyAgICAgICAgaWYgKHhlbmV2dGNobl91bm1hc2soeGNlX2hhbmRsZSwgcG9y dCkgPT0gLTEpCiAgICAgICAgICAgICBwZXJyb3IoIkZhaWxlZCB0byB3cml0ZSB0byBldmVudCBm ZCIpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL3Rvb2xzL3hlbnBhZ2luZy9NYWtlZmlsZSBiL3Rv b2xzL3hlbnBhZ2luZy9NYWtlZmlsZQppbmRleCBlNjNkODk0Li5kNDkxODY3IDEwMDY0NAotLS0g YS90b29scy94ZW5wYWdpbmcvTWFrZWZpbGUKKysrIGIvdG9vbHMveGVucGFnaW5nL01ha2VmaWxl CkBAIC0yLDggKzIsOCBAQCBYRU5fUk9PVD0kKENVUkRJUikvLi4vLi4KIGluY2x1ZGUgJChYRU5f Uk9PVCkvdG9vbHMvUnVsZXMubWsKIAogIyB4ZW5wYWdpbmcuYyBhbmQgZmlsZV9vcHMuYyBpbmNv cnJlY3RseSB1c2UgbGlieGMgaW50ZXJuYWxzCi1DRkxBR1MgKz0gJChDRkxBR1NfbGlieGVuY3Ry bCkgJChDRkxBR1NfbGlieGVuc3RvcmUpICQoUFRIUkVBRF9DRkxBR1MpIC1JJChYRU5fUk9PVCkv dG9vbHMvbGlieGMKLUxETElCUyArPSAkKExETElCU19saWJ4ZW50b29sbG9nKSAkKExETElCU19s aWJ4ZW5jdHJsKSAkKExETElCU19saWJ4ZW5zdG9yZSkgJChQVEhSRUFEX0xJQlMpCitDRkxBR1Mg Kz0gJChDRkxBR1NfbGlieGVudG9vbGxvZykgJChDRkxBR1NfbGlieGVuZXZ0Y2huKSAkKENGTEFH U19saWJ4ZW5jdHJsKSAkKENGTEFHU19saWJ4ZW5zdG9yZSkgJChQVEhSRUFEX0NGTEFHUykgLUkk KFhFTl9ST09UKS90b29scy9saWJ4YworTERMSUJTICs9ICQoTERMSUJTX2xpYnhlbnRvb2xsb2cp ICQoTERMSUJTX2xpYnhlbmV2dGNobikgJChMRExJQlNfbGlieGVuY3RybCkgJChMRExJQlNfbGli eGVuc3RvcmUpICQoUFRIUkVBRF9MSUJTKQogTERGTEFHUyArPSAkKFBUSFJFQURfTERGTEFHUykK IAogUE9MSUNZICAgID0gZGVmYXVsdApkaWZmIC0tZ2l0IGEvdG9vbHMveGVucGFnaW5nL3hlbnBh Z2luZy5jIGIvdG9vbHMveGVucGFnaW5nL3hlbnBhZ2luZy5jCmluZGV4IGI1ZmZlZTYuLmRmOTlj NmEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hlbnBhZ2luZy94ZW5wYWdpbmcuYworKysgYi90b29scy94 ZW5wYWdpbmcveGVucGFnaW5nLmMKQEAgLTczLDcgKzczLDcgQEAgc3RhdGljIHZvaWQgeGVucGFn aW5nX21lbV9wYWdpbmdfZmx1c2hfaW9lbXVfY2FjaGUoc3RydWN0IHhlbnBhZ2luZyAqcGFnaW5n KQogc3RhdGljIGludCB4ZW5wYWdpbmdfd2FpdF9mb3JfZXZlbnRfb3JfdGltZW91dChzdHJ1Y3Qg eGVucGFnaW5nICpwYWdpbmcpCiB7CiAgICAgeGNfaW50ZXJmYWNlICp4Y2ggPSBwYWdpbmctPnhj X2hhbmRsZTsKLSAgICB4Y19ldnRjaG4gKnhjZSA9IHBhZ2luZy0+dm1fZXZlbnQueGNlX2hhbmRs ZTsKKyAgICB4ZW5ldnRjaG5faGFuZGxlICp4Y2UgPSBwYWdpbmctPnZtX2V2ZW50LnhjZV9oYW5k bGU7CiAgICAgY2hhciAqKnZlYywgKnZhbDsKICAgICB1bnNpZ25lZCBpbnQgbnVtOwogICAgIHN0 cnVjdCBwb2xsZmQgZmRbMl07CkBAIC04Miw3ICs4Miw3IEBAIHN0YXRpYyBpbnQgeGVucGFnaW5n X3dhaXRfZm9yX2V2ZW50X29yX3RpbWVvdXQoc3RydWN0IHhlbnBhZ2luZyAqcGFnaW5nKQogICAg IGludCB0aW1lb3V0OwogCiAgICAgLyogV2FpdCBmb3IgZXZlbnQgY2hhbm5lbCBhbmQgeGVuc3Rv cmUgKi8KLSAgICBmZFswXS5mZCA9IHhjX2V2dGNobl9mZCh4Y2UpOworICAgIGZkWzBdLmZkID0g eGVuZXZ0Y2huX2ZkKHhjZSk7CiAgICAgZmRbMF0uZXZlbnRzID0gUE9MTElOIHwgUE9MTEVSUjsK ICAgICBmZFsxXS5mZCA9IHhzX2ZpbGVubyhwYWdpbmctPnhzX2hhbmRsZSk7CiAgICAgZmRbMV0u ZXZlbnRzID0gUE9MTElOIHwgUE9MTEVSUjsKQEAgLTE0Niw3ICsxNDYsNyBAQCBzdGF0aWMgaW50 IHhlbnBhZ2luZ193YWl0X2Zvcl9ldmVudF9vcl90aW1lb3V0KHN0cnVjdCB4ZW5wYWdpbmcgKnBh Z2luZykKICAgICBpZiAoIHJjICYmIGZkWzBdLnJldmVudHMgJiBQT0xMSU4gKQogICAgIHsKICAg ICAgICAgRFBSSU5URigiR290IGV2ZW50IGZyb20gZXZ0Y2huXG4iKTsKLSAgICAgICAgcG9ydCA9 IHhjX2V2dGNobl9wZW5kaW5nKHhjZSk7CisgICAgICAgIHBvcnQgPSB4ZW5ldnRjaG5fcGVuZGlu Zyh4Y2UpOwogICAgICAgICBpZiAoIHBvcnQgPT0gLTEgKQogICAgICAgICB7CiAgICAgICAgICAg ICBQRVJST1IoIkZhaWxlZCB0byByZWFkIHBvcnQgZnJvbSBldmVudCBjaGFubmVsIik7CkBAIC0x NTQsNyArMTU0LDcgQEAgc3RhdGljIGludCB4ZW5wYWdpbmdfd2FpdF9mb3JfZXZlbnRfb3JfdGlt ZW91dChzdHJ1Y3QgeGVucGFnaW5nICpwYWdpbmcpCiAgICAgICAgICAgICBnb3RvIGVycjsKICAg ICAgICAgfQogCi0gICAgICAgIHJjID0geGNfZXZ0Y2huX3VubWFzayh4Y2UsIHBvcnQpOworICAg ICAgICByYyA9IHhlbmV2dGNobl91bm1hc2soeGNlLCBwb3J0KTsKICAgICAgICAgaWYgKCByYyA8 IDAgKQogICAgICAgICB7CiAgICAgICAgICAgICBQRVJST1IoIkZhaWxlZCB0byB1bm1hc2sgZXZl bnQgY2hhbm5lbCBwb3J0Iik7CkBAIC0zOTMsNyArMzkzLDcgQEAgc3RhdGljIHN0cnVjdCB4ZW5w YWdpbmcgKnhlbnBhZ2luZ19pbml0KGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAgfQogCiAg ICAgLyogT3BlbiBldmVudCBjaGFubmVsICovCi0gICAgcGFnaW5nLT52bV9ldmVudC54Y2VfaGFu ZGxlID0geGNfZXZ0Y2huX29wZW4oTlVMTCwgMCk7CisgICAgcGFnaW5nLT52bV9ldmVudC54Y2Vf aGFuZGxlID0geGVuZXZ0Y2huX29wZW4oTlVMTCwgMCk7CiAgICAgaWYgKCBwYWdpbmctPnZtX2V2 ZW50LnhjZV9oYW5kbGUgPT0gTlVMTCApCiAgICAgewogICAgICAgICBQRVJST1IoIkZhaWxlZCB0 byBvcGVuIGV2ZW50IGNoYW5uZWwiKTsKQEAgLTQwMSw3ICs0MDEsNyBAQCBzdGF0aWMgc3RydWN0 IHhlbnBhZ2luZyAqeGVucGFnaW5nX2luaXQoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICB9 CiAKICAgICAvKiBCaW5kIGV2ZW50IG5vdGlmaWNhdGlvbiAqLwotICAgIHJjID0geGNfZXZ0Y2hu X2JpbmRfaW50ZXJkb21haW4ocGFnaW5nLT52bV9ldmVudC54Y2VfaGFuZGxlLAorICAgIHJjID0g eGVuZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4ocGFnaW5nLT52bV9ldmVudC54Y2VfaGFuZGxlLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnaW5nLT52bV9ldmVudC5kb21h aW5faWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdpbmctPnZtX2V2 ZW50LmV2dGNobl9wb3J0KTsKICAgICBpZiAoIHJjIDwgMCApCkBAIC01MzEsNyArNTMxLDcgQEAg c3RhdGljIHZvaWQgeGVucGFnaW5nX3RlYXJkb3duKHN0cnVjdCB4ZW5wYWdpbmcgKnBhZ2luZykK ICAgICB9CiAKICAgICAvKiBVbmJpbmQgVklSUSAqLwotICAgIHJjID0geGNfZXZ0Y2huX3VuYmlu ZChwYWdpbmctPnZtX2V2ZW50LnhjZV9oYW5kbGUsIHBhZ2luZy0+dm1fZXZlbnQucG9ydCk7Cisg ICAgcmMgPSB4ZW5ldnRjaG5fdW5iaW5kKHBhZ2luZy0+dm1fZXZlbnQueGNlX2hhbmRsZSwgcGFn aW5nLT52bV9ldmVudC5wb3J0KTsKICAgICBpZiAoIHJjICE9IDAgKQogICAgIHsKICAgICAgICAg UEVSUk9SKCJFcnJvciB1bmJpbmRpbmcgZXZlbnQgcG9ydCIpOwpAQCAtNTM5LDcgKzUzOSw3IEBA IHN0YXRpYyB2b2lkIHhlbnBhZ2luZ190ZWFyZG93bihzdHJ1Y3QgeGVucGFnaW5nICpwYWdpbmcp CiAgICAgcGFnaW5nLT52bV9ldmVudC5wb3J0ID0gLTE7CiAKICAgICAvKiBDbG9zZSBldmVudCBj aGFubmVsICovCi0gICAgcmMgPSB4Y19ldnRjaG5fY2xvc2UocGFnaW5nLT52bV9ldmVudC54Y2Vf aGFuZGxlKTsKKyAgICByYyA9IHhlbmV2dGNobl9jbG9zZShwYWdpbmctPnZtX2V2ZW50LnhjZV9o YW5kbGUpOwogICAgIGlmICggcmMgIT0gMCApCiAgICAgewogICAgICAgICBQRVJST1IoIkVycm9y IGNsb3NpbmcgZXZlbnQgY2hhbm5lbCIpOwpAQCAtNjkyLDcgKzY5Miw3IEBAIHN0YXRpYyBpbnQg eGVucGFnaW5nX3Jlc3VtZV9wYWdlKHN0cnVjdCB4ZW5wYWdpbmcgKnBhZ2luZywgdm1fZXZlbnRf cmVzcG9uc2VfdCAqCiAgICAgfQogCiAgICAgLyogVGVsbCBYZW4gcGFnZSBpcyByZWFkeSAqLwot ICAgIHJldHVybiB4Y19ldnRjaG5fbm90aWZ5KHBhZ2luZy0+dm1fZXZlbnQueGNlX2hhbmRsZSwg cGFnaW5nLT52bV9ldmVudC5wb3J0KTsKKyAgICByZXR1cm4geGVuZXZ0Y2huX25vdGlmeShwYWdp bmctPnZtX2V2ZW50LnhjZV9oYW5kbGUsIHBhZ2luZy0+dm1fZXZlbnQucG9ydCk7CiB9CiAKIHN0 YXRpYyBpbnQgeGVucGFnaW5nX3BvcHVsYXRlX3BhZ2Uoc3RydWN0IHhlbnBhZ2luZyAqcGFnaW5n LCB1bnNpZ25lZCBsb25nIGdmbiwgaW50IGkpCmRpZmYgLS1naXQgYS90b29scy94ZW5wYWdpbmcv eGVucGFnaW5nLmggYi90b29scy94ZW5wYWdpbmcveGVucGFnaW5nLmgKaW5kZXggYzZhYjc3Yy4u ZDBmOGQyMCAxMDA2NDQKLS0tIGEvdG9vbHMveGVucGFnaW5nL3hlbnBhZ2luZy5oCisrKyBiL3Rv b2xzL3hlbnBhZ2luZy94ZW5wYWdpbmcuaApAQCAtMjQsNiArMjQsNyBAQAogI2RlZmluZSBfX1hF Tl9QQUdJTkcyX0hfXwogCiAKKyNpbmNsdWRlIDx4ZW5ldnRjaG4uaD4KICNpbmNsdWRlIDx4Y19w cml2YXRlLmg+CiAjaW5jbHVkZSA8eGVuL2V2ZW50X2NoYW5uZWwuaD4KICNpbmNsdWRlIDx4ZW4v dm1fZXZlbnQuaD4KQEAgLTMyLDcgKzMzLDcgQEAKIAogc3RydWN0IHZtX2V2ZW50IHsKICAgICBk b21pZF90IGRvbWFpbl9pZDsKLSAgICB4Y19ldnRjaG4gKnhjZV9oYW5kbGU7CisgICAgeGVuZXZ0 Y2huX2hhbmRsZSAqeGNlX2hhbmRsZTsKICAgICBpbnQgcG9ydDsKICAgICB2bV9ldmVudF9iYWNr X3JpbmdfdCBiYWNrX3Jpbmc7CiAgICAgdWludDMyX3QgZXZ0Y2huX3BvcnQ7CmRpZmYgLS1naXQg YS90b29scy94ZW5zdG9yZS9NYWtlZmlsZSBiL3Rvb2xzL3hlbnN0b3JlL01ha2VmaWxlCmluZGV4 IDFiNGE0OTQuLmMxNjEwNDYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hlbnN0b3JlL01ha2VmaWxlCisr KyBiL3Rvb2xzL3hlbnN0b3JlL01ha2VmaWxlCkBAIC05LDYgKzksNyBAQCBDRkxBR1MgKz0gLUku CiAjIEluY2x1ZGUgY29uZmlndXJlIG91dHB1dCAoY29uZmlnLmgpCiBDRkxBR1MgKz0gLWluY2x1 ZGUgJChYRU5fUk9PVCkvdG9vbHMvY29uZmlnLmgKIENGTEFHUyArPSAtSS4vaW5jbHVkZQorQ0ZM QUdTICs9ICQoQ0ZMQUdTX2xpYnhlbmV2dGNobikKIENGTEFHUyArPSAkKENGTEFHU19saWJ4ZW5j dHJsKQogQ0ZMQUdTICs9IC1EWEVOX0xJQl9TVE9SRUQ9IlwiJChYRU5fTElCX1NUT1JFRClcIiIK IApAQCAtNzUsMTAgKzc2LDEwIEBAIGVuZGlmCiBpbml0LXhlbnN0b3JlLWRvbWFpbi5vOiBDRkxB R1MgKz0gJChDRkxBR1NfbGlieGVuZ3Vlc3QpCiAKIGluaXQteGVuc3RvcmUtZG9tYWluOiBpbml0 LXhlbnN0b3JlLWRvbWFpbi5vICQoTElCWEVOU1RPUkUpCi0JJChDQykgJF4gJChMREZMQUdTKSAk KExETElCU19saWJ4ZW5jdHJsKSAkKExETElCU19saWJ4ZW5ndWVzdCkgJChMRExJQlNfbGlieGVu c3RvcmUpIC1vICRAICQoQVBQRU5EX0xERkxBR1MpCisJJChDQykgJF4gJChMREZMQUdTKSAkKExE TElCU19saWJ4ZW5ldnRjaG4pICQoTERMSUJTX2xpYnhlbmN0cmwpICQoTERMSUJTX2xpYnhlbmd1 ZXN0KSAkKExETElCU19saWJ4ZW5zdG9yZSkgLW8gJEAgJChBUFBFTkRfTERGTEFHUykKIAogeGVu c3RvcmVkOiAkKFhFTlNUT1JFRF9PQkpTKQotCSQoQ0MpICReICQoTERGTEFHUykgJChMRExJQlNf bGlieGVuY3RybCkgJChTT0NLRVRfTElCUykgLW8gJEAgJChBUFBFTkRfTERGTEFHUykKKwkkKEND KSAkXiAkKExERkxBR1MpICQoTERMSUJTX2xpYnhlbmV2dGNobikgJChMRExJQlNfbGlieGVuY3Ry bCkgJChTT0NLRVRfTElCUykgLW8gJEAgJChBUFBFTkRfTERGTEFHUykKIAogeGVuc3RvcmVkLmE6 ICQoWEVOU1RPUkVEX09CSlMpCiAJJChBUikgY3IgJEAgJF4KZGlmZiAtLWdpdCBhL3Rvb2xzL3hl bnN0b3JlL3hlbnN0b3JlZF9jb3JlLmMgYi90b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfY29yZS5j CmluZGV4IDNjMDMwN2UuLmY2MmMxOTIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hlbnN0b3JlL3hlbnN0 b3JlZF9jb3JlLmMKKysrIGIvdG9vbHMveGVuc3RvcmUveGVuc3RvcmVkX2NvcmUuYwpAQCAtNDAs NiArNDAsOCBAQAogI2luY2x1ZGUgPGFzc2VydC5oPgogI2luY2x1ZGUgPHNldGptcC5oPgogCisj aW5jbHVkZSA8eGVuZXZ0Y2huLmg+CisKICNpbmNsdWRlICJ1dGlscy5oIgogI2luY2x1ZGUgImxp c3QuaCIKICNpbmNsdWRlICJ0YWxsb2MuaCIKQEAgLTYzLDcgKzY1LDcgQEAKICNpbmNsdWRlIDxz eXN0ZW1kL3NkLWRhZW1vbi5oPgogI2VuZGlmCiAKLWV4dGVybiB4Y19ldnRjaG4gKnhjZV9oYW5k bGU7IC8qIGluIHhlbnN0b3JlZF9kb21haW4uYyAqLworZXh0ZXJuIHhlbmV2dGNobl9oYW5kbGUg KnhjZV9oYW5kbGU7IC8qIGluIHhlbnN0b3JlZF9kb21haW4uYyAqLwogc3RhdGljIGludCB4Y2Vf cG9sbGZkX2lkeCA9IC0xOwogc3RhdGljIHN0cnVjdCBwb2xsZmQgKmZkczsKIHN0YXRpYyB1bnNp Z25lZCBpbnQgY3VycmVudF9hcnJheV9zaXplOwpAQCAtMzcyLDcgKzM3NCw3IEBAIHN0YXRpYyB2 b2lkIGluaXRpYWxpemVfZmRzKGludCBzb2NrLCBpbnQgKnBfc29ja19wb2xsZmRfaWR4LAogCQkJ c2V0X2ZkKHJlb3Blbl9sb2dfcGlwZVswXSwgUE9MTElOfFBPTExQUkkpOwogCiAJaWYgKHhjZV9o YW5kbGUgIT0gTlVMTCkKLQkJeGNlX3BvbGxmZF9pZHggPSBzZXRfZmQoeGNfZXZ0Y2huX2ZkKHhj ZV9oYW5kbGUpLAorCQl4Y2VfcG9sbGZkX2lkeCA9IHNldF9mZCh4ZW5ldnRjaG5fZmQoeGNlX2hh bmRsZSksCiAJCQkJCVBPTExJTnxQT0xMUFJJKTsKIAogCWxpc3RfZm9yX2VhY2hfZW50cnkoY29u biwgJmNvbm5lY3Rpb25zLCBsaXN0KSB7CmRpZmYgLS1naXQgYS90b29scy94ZW5zdG9yZS94ZW5z dG9yZWRfZG9tYWluLmMgYi90b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfZG9tYWluLmMKaW5kZXgg ZGNkNjU4MS4uNmNlZWMyOSAxMDA2NDQKLS0tIGEvdG9vbHMveGVuc3RvcmUveGVuc3RvcmVkX2Rv bWFpbi5jCisrKyBiL3Rvb2xzL3hlbnN0b3JlL3hlbnN0b3JlZF9kb21haW4uYwpAQCAtMjksNiAr MjksNyBAQAogI2luY2x1ZGUgInhlbnN0b3JlZF90cmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgInhl bnN0b3JlZF93YXRjaC5oIgogCisjaW5jbHVkZSA8eGVuZXZ0Y2huLmg+CiAjaW5jbHVkZSA8eGVu Y3RybC5oPgogI2luY2x1ZGUgPHhlbi9ncmFudF90YWJsZS5oPgogCkBAIC0zNiw3ICszNyw3IEBA IHN0YXRpYyB4Y19pbnRlcmZhY2UgKip4Y19oYW5kbGU7CiB4Y19nbnR0YWIgKip4Y2dfaGFuZGxl Owogc3RhdGljIGV2dGNobl9wb3J0X3QgdmlycV9wb3J0OwogCi14Y19ldnRjaG4gKnhjZV9oYW5k bGUgPSBOVUxMOworeGVuZXZ0Y2huX2hhbmRsZSAqeGNlX2hhbmRsZSA9IE5VTEw7CiAKIHN0cnVj dCBkb21haW4KIHsKQEAgLTEyOCw3ICsxMjksNyBAQCBzdGF0aWMgaW50IHdyaXRlY2huKHN0cnVj dCBjb25uZWN0aW9uICpjb25uLAogCXhlbl9tYigpOwogCWludGYtPnJzcF9wcm9kICs9IGxlbjsK IAotCXhjX2V2dGNobl9ub3RpZnkoeGNlX2hhbmRsZSwgY29ubi0+ZG9tYWluLT5wb3J0KTsKKwl4 ZW5ldnRjaG5fbm90aWZ5KHhjZV9oYW5kbGUsIGNvbm4tPmRvbWFpbi0+cG9ydCk7CiAKIAlyZXR1 cm4gbGVuOwogfQpAQCAtMTU4LDcgKzE1OSw3IEBAIHN0YXRpYyBpbnQgcmVhZGNobihzdHJ1Y3Qg Y29ubmVjdGlvbiAqY29ubiwgdm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IGxlbikKIAl4ZW5fbWIo KTsKIAlpbnRmLT5yZXFfY29ucyArPSBsZW47CiAKLQl4Y19ldnRjaG5fbm90aWZ5KHhjZV9oYW5k bGUsIGNvbm4tPmRvbWFpbi0+cG9ydCk7CisJeGVuZXZ0Y2huX25vdGlmeSh4Y2VfaGFuZGxlLCBj b25uLT5kb21haW4tPnBvcnQpOwogCiAJcmV0dXJuIGxlbjsKIH0KQEAgLTE5MCw3ICsxOTEsNyBA QCBzdGF0aWMgaW50IGRlc3Ryb3lfZG9tYWluKHZvaWQgKl9kb21haW4pCiAJbGlzdF9kZWwoJmRv bWFpbi0+bGlzdCk7CiAKIAlpZiAoZG9tYWluLT5wb3J0KSB7Ci0JCWlmICh4Y19ldnRjaG5fdW5i aW5kKHhjZV9oYW5kbGUsIGRvbWFpbi0+cG9ydCkgPT0gLTEpCisJCWlmICh4ZW5ldnRjaG5fdW5i aW5kKHhjZV9oYW5kbGUsIGRvbWFpbi0+cG9ydCkgPT0gLTEpCiAJCQllcHJpbnRmKCI+IFVuYmlu ZGluZyBwb3J0ICVpIGZhaWxlZCFcbiIsIGRvbWFpbi0+cG9ydCk7CiAJfQogCkBAIC0yMzksMTMg KzI0MCwxMyBAQCB2b2lkIGhhbmRsZV9ldmVudCh2b2lkKQogewogCWV2dGNobl9wb3J0X3QgcG9y dDsKIAotCWlmICgocG9ydCA9IHhjX2V2dGNobl9wZW5kaW5nKHhjZV9oYW5kbGUpKSA9PSAtMSkK KwlpZiAoKHBvcnQgPSB4ZW5ldnRjaG5fcGVuZGluZyh4Y2VfaGFuZGxlKSkgPT0gLTEpCiAJCWJh cmZfcGVycm9yKCJGYWlsZWQgdG8gcmVhZCBmcm9tIGV2ZW50IGZkIik7CiAKIAlpZiAocG9ydCA9 PSB2aXJxX3BvcnQpCiAJCWRvbWFpbl9jbGVhbnVwKCk7CiAKLQlpZiAoeGNfZXZ0Y2huX3VubWFz ayh4Y2VfaGFuZGxlLCBwb3J0KSA9PSAtMSkKKwlpZiAoeGVuZXZ0Y2huX3VubWFzayh4Y2VfaGFu ZGxlLCBwb3J0KSA9PSAtMSkKIAkJYmFyZl9wZXJyb3IoIkZhaWxlZCB0byB3cml0ZSB0byBldmVu dCBmZCIpOwogfQogCkBAIC0yODcsNyArMjg4LDcgQEAgc3RhdGljIHN0cnVjdCBkb21haW4gKm5l d19kb21haW4odm9pZCAqY29udGV4dCwgdW5zaWduZWQgaW50IGRvbWlkLAogCXRhbGxvY19zZXRf ZGVzdHJ1Y3Rvcihkb21haW4sIGRlc3Ryb3lfZG9tYWluKTsKIAogCS8qIFRlbGwga2VybmVsIHdl J3JlIGludGVyZXN0ZWQgaW4gdGhpcyBldmVudC4gKi8KLQlyYyA9IHhjX2V2dGNobl9iaW5kX2lu dGVyZG9tYWluKHhjZV9oYW5kbGUsIGRvbWlkLCBwb3J0KTsKKwlyYyA9IHhlbmV2dGNobl9iaW5k X2ludGVyZG9tYWluKHhjZV9oYW5kbGUsIGRvbWlkLCBwb3J0KTsKIAlpZiAocmMgPT0gLTEpCiAJ ICAgIHJldHVybiBOVUxMOwogCWRvbWFpbi0+cG9ydCA9IHJjOwpAQCAtMzkyLDggKzM5Myw4IEBA IHZvaWQgZG9faW50cm9kdWNlKHN0cnVjdCBjb25uZWN0aW9uICpjb25uLCBzdHJ1Y3QgYnVmZmVy ZWRfZGF0YSAqaW4pCiAJfSBlbHNlIGlmICgoZG9tYWluLT5tZm4gPT0gbWZuKSAmJiAoZG9tYWlu LT5jb25uICE9IGNvbm4pKSB7CiAJCS8qIFVzZSBYU19JTlRST0RVQ0UgZm9yIHJlY3JlYXRpbmcg dGhlIHhlbmJ1cyBldmVudC1jaGFubmVsLiAqLwogCQlpZiAoZG9tYWluLT5wb3J0KQotCQkJeGNf ZXZ0Y2huX3VuYmluZCh4Y2VfaGFuZGxlLCBkb21haW4tPnBvcnQpOwotCQlyYyA9IHhjX2V2dGNo bl9iaW5kX2ludGVyZG9tYWluKHhjZV9oYW5kbGUsIGRvbWlkLCBwb3J0KTsKKwkJCXhlbmV2dGNo bl91bmJpbmQoeGNlX2hhbmRsZSwgZG9tYWluLT5wb3J0KTsKKwkJcmMgPSB4ZW5ldnRjaG5fYmlu ZF9pbnRlcmRvbWFpbih4Y2VfaGFuZGxlLCBkb21pZCwgcG9ydCk7CiAJCWRvbWFpbi0+cG9ydCA9 IChyYyA9PSAtMSkgPyAwIDogcmM7CiAJCWRvbWFpbi0+cmVtb3RlX3BvcnQgPSBwb3J0OwogCX0g ZWxzZSB7CkBAIC02MTQsNyArNjE1LDcgQEAgc3RhdGljIGludCBkb20wX2luaXQodm9pZCkKIAog CXRhbGxvY19zdGVhbChkb20wLT5jb25uLCBkb20wKTsgCiAKLQl4Y19ldnRjaG5fbm90aWZ5KHhj ZV9oYW5kbGUsIGRvbTAtPnBvcnQpOyAKKwl4ZW5ldnRjaG5fbm90aWZ5KHhjZV9oYW5kbGUsIGRv bTAtPnBvcnQpOyAKIAogCXJldHVybiAwOyAKIH0KQEAgLTY0Myw3ICs2NDQsNyBAQCB2b2lkIGRv bWFpbl9pbml0KHZvaWQpCiAJZWxzZQogCQl0YWxsb2Nfc2V0X2Rlc3RydWN0b3IoeGNnX2hhbmRs ZSwgY2xvc2VfeGNnX2hhbmRsZSk7CiAKLQl4Y2VfaGFuZGxlID0geGNfZXZ0Y2huX29wZW4oTlVM TCwgMCk7CisJeGNlX2hhbmRsZSA9IHhlbmV2dGNobl9vcGVuKE5VTEwsIDApOwogCiAJaWYgKHhj ZV9oYW5kbGUgPT0gTlVMTCkKIAkJYmFyZl9wZXJyb3IoIkZhaWxlZCB0byBvcGVuIGV2dGNobiBk ZXZpY2UiKTsKQEAgLTY1MSw3ICs2NTIsNyBAQCB2b2lkIGRvbWFpbl9pbml0KHZvaWQpCiAJaWYg KGRvbTBfaW5pdCgpICE9IDApIAogCQliYXJmX3BlcnJvcigiRmFpbGVkIHRvIGluaXRpYWxpemUg ZG9tMCBzdGF0ZSIpOyAKIAotCWlmICgocmMgPSB4Y19ldnRjaG5fYmluZF92aXJxKHhjZV9oYW5k bGUsIFZJUlFfRE9NX0VYQykpID09IC0xKQorCWlmICgocmMgPSB4ZW5ldnRjaG5fYmluZF92aXJx KHhjZV9oYW5kbGUsIFZJUlFfRE9NX0VYQykpID09IC0xKQogCQliYXJmX3BlcnJvcigiRmFpbGVk IHRvIGJpbmQgdG8gZG9tYWluIGV4Y2VwdGlvbiB2aXJxIHBvcnQiKTsKIAl2aXJxX3BvcnQgPSBy YzsKIH0KZGlmZiAtLWdpdCBhL3Rvb2xzL3hlbnRyYWNlL01ha2VmaWxlIGIvdG9vbHMveGVudHJh Y2UvTWFrZWZpbGUKaW5kZXggNmMxM2NkMS4uMDE1N2JlMiAxMDA2NDQKLS0tIGEvdG9vbHMveGVu dHJhY2UvTWFrZWZpbGUKKysrIGIvdG9vbHMveGVudHJhY2UvTWFrZWZpbGUKQEAgLTMsOCArMywx MSBAQCBpbmNsdWRlICQoWEVOX1JPT1QpL3Rvb2xzL1J1bGVzLm1rCiAKIENGTEFHUyArPSAtV2Vy cm9yCiAKK0NGTEFHUyArPSAkKENGTEFHU19saWJ4ZW5ldnRjaG4pCiBDRkxBR1MgKz0gJChDRkxB R1NfbGlieGVuY3RybCkKLUxETElCUyArPSAkKExETElCU19saWJ4ZW5jdHJsKSAkKEFSR1BfTERG TEFHUykKK0xETElCUyArPSAkKExETElCU19saWJ4ZW5ldnRjaG4pCitMRExJQlMgKz0gJChMRExJ QlNfbGlieGVuY3RybCkKK0xETElCUyArPSAkKEFSR1BfTERGTEFHUykKIAogQklOLSQoQ09ORklH X1g4NikgPSB4ZW5hbHl6ZQogQklOICAgICAgPSAkKEJJTi15KQpkaWZmIC0tZ2l0IGEvdG9vbHMv eGVudHJhY2UveGVudHJhY2UuYyBiL3Rvb2xzL3hlbnRyYWNlL3hlbnRyYWNlLmMKaW5kZXggNGVl MTQ1OC4uYzk3MGQ0MiAxMDA2NDQKLS0tIGEvdG9vbHMveGVudHJhY2UveGVudHJhY2UuYworKysg Yi90b29scy94ZW50cmFjZS94ZW50cmFjZS5jCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8 eGVuL3hlbi5oPgogI2luY2x1ZGUgPHhlbi90cmFjZS5oPgogCisjaW5jbHVkZSA8eGVuZXZ0Y2hu Lmg+CiAjaW5jbHVkZSA8eGVuY3RybC5oPgogCiAjZGVmaW5lIFBFUlJPUihfbSwgX2EuLi4pICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtNzQsNyArNzUsNyBAQCBz ZXR0aW5nc190IG9wdHM7CiBpbnQgaW50ZXJydXB0ZWQgPSAwOyAvKiBnZXRzIHNldCBpZiB3ZSBn ZXQgYSBTSUdIVVAgKi8KIAogc3RhdGljIHhjX2ludGVyZmFjZSAqeGNfaGFuZGxlOwotc3RhdGlj IHhjX2V2dGNobiAqeGNlX2hhbmRsZSA9IE5VTEw7CitzdGF0aWMgeGVuZXZ0Y2huX2hhbmRsZSAq eGNlX2hhbmRsZSA9IE5VTEw7CiBzdGF0aWMgaW50IHZpcnFfcG9ydCA9IC0xOwogc3RhdGljIGlu dCBvdXRmZCA9IDE7CiAKQEAgLTYwMiwxMyArNjAzLDEzIEBAIHN0YXRpYyB2b2lkIGV2ZW50X2lu aXQodm9pZCkKIHsKICAgICBpbnQgcmM7CiAKLSAgICB4Y2VfaGFuZGxlID0geGNfZXZ0Y2huX29w ZW4oTlVMTCwgMCk7CisgICAgeGNlX2hhbmRsZSA9IHhlbmV2dGNobl9vcGVuKE5VTEwsIDApOwog ICAgIGlmICh4Y2VfaGFuZGxlID09IE5VTEwpIHsKICAgICAgICAgcGVycm9yKCJldmVudCBjaGFu bmVsIG9wZW4iKTsKICAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOwogICAgIH0KIAotICAgIHJj ID0geGNfZXZ0Y2huX2JpbmRfdmlycSh4Y2VfaGFuZGxlLCBWSVJRX1RCVUYpOworICAgIHJjID0g eGVuZXZ0Y2huX2JpbmRfdmlycSh4Y2VfaGFuZGxlLCBWSVJRX1RCVUYpOwogICAgIGlmIChyYyA9 PSAtMSkgewogICAgICAgICBQRVJST1IoImZhaWxlZCB0byBiaW5kIHRvIFZJUlEgcG9ydCIpOwog ICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CkBAIC02MjMsNyArNjI0LDcgQEAgc3RhdGljIHZv aWQgZXZlbnRfaW5pdCh2b2lkKQogc3RhdGljIHZvaWQgd2FpdF9mb3JfZXZlbnRfb3JfdGltZW91 dCh1bnNpZ25lZCBsb25nIG1pbGxpc2Vjb25kcykKIHsKICAgICBpbnQgcmM7Ci0gICAgc3RydWN0 IHBvbGxmZCBmZCA9IHsgLmZkID0geGNfZXZ0Y2huX2ZkKHhjZV9oYW5kbGUpLAorICAgIHN0cnVj dCBwb2xsZmQgZmQgPSB7IC5mZCA9IHhlbmV2dGNobl9mZCh4Y2VfaGFuZGxlKSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAuZXZlbnRzID0gUE9MTElOIHwgUE9MTEVSUiB9OwogICAgIGludCBw b3J0OwogCkBAIC02MzYsNyArNjM3LDcgQEAgc3RhdGljIHZvaWQgd2FpdF9mb3JfZXZlbnRfb3Jf dGltZW91dCh1bnNpZ25lZCBsb25nIG1pbGxpc2Vjb25kcykKICAgICB9CiAKICAgICBpZiAocmMg PT0gMSkgewotICAgICAgICBwb3J0ID0geGNfZXZ0Y2huX3BlbmRpbmcoeGNlX2hhbmRsZSk7Cisg ICAgICAgIHBvcnQgPSB4ZW5ldnRjaG5fcGVuZGluZyh4Y2VfaGFuZGxlKTsKICAgICAgICAgaWYg KHBvcnQgPT0gLTEpIHsKICAgICAgICAgICAgIFBFUlJPUigiZmFpbGVkIHRvIHJlYWQgcG9ydCBm cm9tIGV2dGNobiIpOwogICAgICAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOwpAQCAtNjQ3LDcg KzY0OCw3IEBAIHN0YXRpYyB2b2lkIHdhaXRfZm9yX2V2ZW50X29yX3RpbWVvdXQodW5zaWduZWQg bG9uZyBtaWxsaXNlY29uZHMpCiAgICAgICAgICAgICAgICAgICAgIHBvcnQsIHZpcnFfcG9ydCk7 CiAgICAgICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CiAgICAgICAgIH0KLSAgICAgICAgcmMg PSB4Y19ldnRjaG5fdW5tYXNrKHhjZV9oYW5kbGUsIHBvcnQpOworICAgICAgICByYyA9IHhlbmV2 dGNobl91bm1hc2soeGNlX2hhbmRsZSwgcG9ydCk7CiAgICAgICAgIGlmIChyYyA9PSAtMSkgewog ICAgICAgICAgICAgUEVSUk9SKCJmYWlsZWQgdG8gd3JpdGUgcG9ydCB0byBldnRjaG4iKTsKICAg ICAgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKLS0gCjIuMS40CgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApY ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK