From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ian Campbell Subject: [PATCH XEN v3 04/22] tools: Refactor /dev/xen/evtchn wrappers into libxenevtchn. Date: Wed, 7 Oct 2015 15:15:23 +0100 Message-ID: <1444227341-875-4-git-send-email-ian.campbell@citrix.com> References: <1444226543.1410.53.camel@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1444226543.1410.53.camel@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 dG9vbHMvbGlicy9ldnRjaG4KLS0tCiAuZ2l0aWdub3JlICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDEgKwogc3R1YmRvbS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgIDE5ICstCiB0b29scy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgIDUgKy0KIHRvb2xzL1J1bGVzLm1rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAxNCArLQogdG9vbHMvY29uc29sZS9NYWtlZmlsZSAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAyICsKIHRvb2xzL2NvbnNvbGUvZGFlbW9uL2lvLmMgICAgICAgICAgICAgICAg ICAgICB8ICA0MyArKy0tCiB0b29scy9saWJzL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgIDEgKwogdG9vbHMvbGlicy9ldnRjaG4vTWFrZWZpbGUgICAgICAgICAgICAgICAg ICAgIHwgIDY1ICsrKysrKysKIHRvb2xzL2xpYnMvZXZ0Y2huL2NvcmUuYyAgICAgICAgICAgICAg ICAgICAgICB8ICA2OSArKysrKysrCiB0b29scy9saWJzL2V2dGNobi9mcmVlYnNkLmMgICAgICAg ICAgICAgICAgICAgfCAxMzggKysrKysrKysrKysrKwogdG9vbHMvbGlicy9ldnRjaG4vaW5jbHVk ZS94ZW5ldnRjaG4uaCAgICAgICAgIHwgMTUwICsrKysrKysrKysrKysrCiB0b29scy9saWJzL2V2 dGNobi9saWJ4ZW5ldnRjaG4ubWFwICAgICAgICAgICAgfCAgMTQgKysKIHRvb2xzL2xpYnMvZXZ0 Y2huL2xpbnV4LmMgICAgICAgICAgICAgICAgICAgICB8IDEzNiArKysrKysrKysrKysrCiB0b29s cy9saWJzL2V2dGNobi9taW5pb3MuYyAgICAgICAgICAgICAgICAgICAgfCAyNjkgKysrKysrKysr KysrKysrKysrKysrKysrKysKIHRvb2xzL2xpYnMvZXZ0Y2huL25ldGJzZC5jICAgICAgICAgICAg ICAgICAgICB8IDE0NyArKysrKysrKysrKysrKwogdG9vbHMvbGlicy9ldnRjaG4vcHJpdmF0ZS5o ICAgICAgICAgICAgICAgICAgIHwgIDI1ICsrKwogdG9vbHMvbGlicy9ldnRjaG4vc29sYXJpcy5j ICAgICAgICAgICAgICAgICAgIHwgMTM1ICsrKysrKysrKysrKysKIHRvb2xzL2xpYnMvdG9vbGxv Zy9pbmNsdWRlL3hlbnRvb2xsb2cuaCAgICAgICB8ICAxMCArCiB0b29scy9saWJzL3Rvb2xsb2cv eHRsX2NvcmUuYyAgICAgICAgICAgICAgICAgfCAgMTAgKwogdG9vbHMvbGlicy90b29sbG9nL3h0 bF9sb2dnZXJfc3RkaW8uYyAgICAgICAgIHwgIDEwICsKIHRvb2xzL2xpYnZjaGFuL01ha2VmaWxl ICAgICAgICAgICAgICAgICAgICAgICB8ICAgNiArLQogdG9vbHMvbGlidmNoYW4vaW5pdC5jICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDIwICstCiB0b29scy9saWJ2Y2hhbi9pby5jICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgMTIgKy0KIHRvb2xzL2xpYnZjaGFuL2xpYnhlbnZjaGFu LmggICAgICAgICAgICAgICAgICB8ICAgMyArLQogdG9vbHMvbGlieGMvTWFrZWZpbGUgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICA4ICstCiB0b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwu aCAgICAgICAgICAgICAgICAgfCAgOTkgKy0tLS0tLS0tLQogdG9vbHMvbGlieGMvaW5jbHVkZS94 ZW5jdHJsX2NvbXBhdC5oICAgICAgICAgIHwgIDQ4ICsrKysrCiB0b29scy9saWJ4Yy9pbmNsdWRl L3hlbmd1ZXN0LmggICAgICAgICAgICAgICAgfCAgMTAgKy0KIHRvb2xzL2xpYnhjL3hjX2V2dGNo bl9jb21wYXQuYyAgICAgICAgICAgICAgICB8ICA3NSArKysrKysrCiB0b29scy9saWJ4Yy94Y19m cmVlYnNkX29zZGVwLmMgICAgICAgICAgICAgICAgfCAxMDEgLS0tLS0tLS0tLQogdG9vbHMvbGli eGMveGNfbGludXhfb3NkZXAuYyAgICAgICAgICAgICAgICAgIHwgIDk1IC0tLS0tLS0tLQogdG9v bHMvbGlieGMveGNfbWluaW9zLmMgICAgICAgICAgICAgICAgICAgICAgIHwgMjIxIC0tLS0tLS0t LS0tLS0tLS0tLS0tLQogdG9vbHMvbGlieGMveGNfbmV0YnNkLmMgICAgICAgICAgICAgICAgICAg ICAgIHwgMTA5IC0tLS0tLS0tLS0tCiB0b29scy9saWJ4Yy94Y19wcml2YXRlLmMgICAgICAgICAg ICAgICAgICAgICAgfCAgNDAgLS0tLQogdG9vbHMvbGlieGMveGNfcHJpdmF0ZS5oICAgICAgICAg ICAgICAgICAgICAgIHwgICA3IC0KIHRvb2xzL2xpYnhjL3hjX3NvbGFyaXMuYyAgICAgICAgICAg ICAgICAgICAgICB8ICA5NyAtLS0tLS0tLS0tCiB0b29scy9saWJ4Yy94Y19zdXNwZW5kLmMgICAg ICAgICAgICAgICAgICAgICAgfCAgMTggKy0KIHRvb2xzL2xpYnhsL01ha2VmaWxlICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgNSArLQogdG9vbHMvbGlieGwvbGlieGwuYyAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAyICstCiB0b29scy9saWJ4bC9saWJ4bF9kb21fc3VzcGVuZC5j ICAgICAgICAgICAgICAgfCAgIDQgKy0KIHRvb2xzL2xpYnhsL2xpYnhsX2V2ZW50LmMgICAgICAg ICAgICAgICAgICAgICB8ICAxNCArLQogdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaCAgICAg ICAgICAgICAgICAgIHwgICA1ICstCiB0b29scy9taXNjL01ha2VmaWxlICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDcgKy0KIHRvb2xzL21pc2MveGVuLWhwdG9vbC5jICAgICAgICAgICAg ICAgICAgICAgICB8ICAxMyArLQogdG9vbHMvbWlzYy94ZW4tbG93bWVtZC5jICAgICAgICAgICAg ICAgICAgICAgIHwgIDE1ICstCiB0b29scy9vY2FtbC9saWJzL2V2ZW50Y2huL01ha2VmaWxlICAg ICAgICAgICAgfCAgIDQgKy0KIHRvb2xzL29jYW1sL2xpYnMvZXZlbnRjaG4veGVuZXZlbnRjaG5f c3R1YnMuYyB8ICAyMCArLQogdG9vbHMvcHl0aG9uL3NldHVwLnB5ICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICA3ICstCiB0b29scy90ZXN0cy94ZW4tYWNjZXNzL3hlbi1hY2Nlc3MuYyAgICAg ICAgICAgfCAgIDIgKy0KIHRvb2xzL3hjdXRpbHMvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgNCArLQogdG9vbHMveGVubW9uL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAyICsKIHRvb2xzL3hlbm1vbi94ZW5iYWtlZC5jICAgICAgICAgICAgICAgICAgICAg ICB8ICAxMyArLQogdG9vbHMveGVucGFnaW5nL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAg IHwgICA0ICstCiB0b29scy94ZW5wYWdpbmcveGVucGFnaW5nLmMgICAgICAgICAgICAgICAgICAg fCAgMTggKy0KIHRvb2xzL3hlbnBhZ2luZy94ZW5wYWdpbmcuaCAgICAgICAgICAgICAgICAgICB8 ICAgMyArLQogdG9vbHMveGVuc3RvcmUvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgIHwg ICA1ICstCiB0b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfY29yZS5jICAgICAgICAgICAgICAgfCAg IDYgKy0KIHRvb2xzL3hlbnN0b3JlL3hlbnN0b3JlZF9kb21haW4uYyAgICAgICAgICAgICB8ICAy NSArLS0KIHRvb2xzL3hlbnRyYWNlL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICB8ICAg NSArLQogdG9vbHMveGVudHJhY2UveGVudHJhY2UuYyAgICAgICAgICAgICAgICAgICAgIHwgIDEz ICstCiA2MCBmaWxlcyBjaGFuZ2VkLCAxNTEzIGluc2VydGlvbnMoKyksIDkxNSBkZWxldGlvbnMo LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9saWJzL2V2dGNobi9NYWtlZmlsZQogY3JlYXRl IG1vZGUgMTAwNjQ0IHRvb2xzL2xpYnMvZXZ0Y2huL2NvcmUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IHRvb2xzL2xpYnMvZXZ0Y2huL2ZyZWVic2QuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL2xp YnMvZXZ0Y2huL2luY2x1ZGUveGVuZXZ0Y2huLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9s aWJzL2V2dGNobi9saWJ4ZW5ldnRjaG4ubWFwCiBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvbGli cy9ldnRjaG4vbGludXguYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL2xpYnMvZXZ0Y2huL21p bmlvcy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvbGlicy9ldnRjaG4vbmV0YnNkLmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9saWJzL2V2dGNobi9wcml2YXRlLmgKIGNyZWF0ZSBtb2Rl IDEwMDY0NCB0b29scy9saWJzL2V2dGNobi9zb2xhcmlzLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0 b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmxfY29tcGF0LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0 b29scy9saWJ4Yy94Y19ldnRjaG5fY29tcGF0LmMKCmRpZmYgLS1naXQgYS8uZ2l0aWdub3JlIGIv LmdpdGlnbm9yZQppbmRleCA3NGQwYWI4Li41Yzc2YjZkIDEwMDY0NAotLS0gYS8uZ2l0aWdub3Jl CisrKyBiLy5naXRpZ25vcmUKQEAgLTYwLDYgKzYwLDcgQEAgc3R1YmRvbS9pbmNsdWRlCiBzdHVi ZG9tL2lvZW11CiBzdHViZG9tL3hlbnN0b3JlCiBzdHViZG9tL2xpYnhlbnRvb2xsb2ctKgorc3R1 YmRvbS9saWJ4ZW5ldnRjaG4tKgogc3R1YmRvbS9saWJ4Yy0qCiBzdHViZG9tL2x3aXAtKgogc3R1 YmRvbS9taW5pLW9zLSoKZGlmZiAtLWdpdCBhL3N0dWJkb20vTWFrZWZpbGUgYi9zdHViZG9tL01h a2VmaWxlCmluZGV4IDljOTIzZGQuLjNiM2JmYzkgMTAwNjQ0Ci0tLSBhL3N0dWJkb20vTWFrZWZp bGUKKysrIGIvc3R1YmRvbS9NYWtlZmlsZQpAQCAtMzE4LDYgKzMxOCwxMiBAQCBtay1oZWFkZXJz LSQoWEVOX1RBUkdFVF9BUkNIKTogJChJT0VNVV9MSU5LRkFSTV9UQVJHRVQpCiAJICBsbiAtc2Yg JChYRU5fUk9PVCkvdG9vbHMvbGlicy90b29sbG9nL2luY2x1ZGUvKi5oIC4gJiYgXAogCSAgbG4g LXNmICQoWEVOX1JPT1QpL3Rvb2xzL2xpYnMvdG9vbGxvZy8qLmMgLiAmJiBcCiAJICBsbiAtc2Yg JChYRU5fUk9PVCkvdG9vbHMvbGlicy90b29sbG9nL01ha2VmaWxlIC4gKQorCW1rZGlyIC1wIGxp YnMtJChYRU5fVEFSR0VUX0FSQ0gpL2V2dGNobi9pbmNsdWRlCisJWyAtaCBsaWJzLSQoWEVOX1RB UkdFVF9BUkNIKS9ldnRjaG4vTWFrZWZpbGUgXSB8fCAoIGNkIGxpYnMtJChYRU5fVEFSR0VUX0FS Q0gpL2V2dGNobiAmJiBcCisJICBsbiAtc2YgJChYRU5fUk9PVCkvdG9vbHMvbGlicy9ldnRjaG4v Ki5oIC4gJiYgXAorCSAgbG4gLXNmICQoWEVOX1JPT1QpL3Rvb2xzL2xpYnMvZXZ0Y2huL2luY2x1 ZGUvKi5oIGluY2x1ZGUvICYmIFwKKwkgIGxuIC1zZiAkKFhFTl9ST09UKS90b29scy9saWJzL2V2 dGNobi8qLmMgLiAmJiBcCisJICBsbiAtc2YgJChYRU5fUk9PVCkvdG9vbHMvbGlicy9ldnRjaG4v TWFrZWZpbGUgLiApCiAJbWtkaXIgLXAgbGlieGMtJChYRU5fVEFSR0VUX0FSQ0gpCiAJWyAtaCBs aWJ4Yy0kKFhFTl9UQVJHRVRfQVJDSCkvTWFrZWZpbGUgXSB8fCAoIGNkIGxpYnhjLSQoWEVOX1RB UkdFVF9BUkNIKSAmJiBcCiAJICBsbiAtc2YgJChYRU5fUk9PVCkvdG9vbHMvbGlieGMvKi5oIC4g JiYgXApAQCAtMzUyLDEyICszNTgsMjMgQEAgbGlicy0kKFhFTl9UQVJHRVRfQVJDSCkvdG9vbGxv Zy9saWJ4ZW50b29sbG9nLmE6ICQoTkVXTElCX1NUQU1QRklMRSkKIAlDUFBGTEFHUz0iJChUQVJH RVRfQ1BQRkxBR1MpIiBDRkxBR1M9IiQoVEFSR0VUX0NGTEFHUykiICQoTUFLRSkgREVTVERJUj0g LUMgbGlicy0kKFhFTl9UQVJHRVRfQVJDSCkvdG9vbGxvZwogCiAjIyMjIyMjCisjIGxpYnhlbmV2 dGNobgorIyMjIyMjIworCisuUEhPTlk6IGxpYnhlbmV2dGNobgorbGlieGVuZXZ0Y2huOiBsaWJz LSQoWEVOX1RBUkdFVF9BUkNIKS9ldnRjaG4vbGlieGVuZXZ0Y2huLmEKK2xpYnMtJChYRU5fVEFS R0VUX0FSQ0gpL2V2dGNobi9saWJ4ZW5ldnRjaG4uYTogJChORVdMSUJfU1RBTVBGSUxFKQorCSQo TUFLRSkgLUMgJChYRU5fUk9PVCkvdG9vbHMvaW5jbHVkZQorCSQoTUFLRSkgREVTVERJUj0gLUMg JChNSU5JX09TKSBsaW5rcworCUNQUEZMQUdTPSIkKFRBUkdFVF9DUFBGTEFHUykiIENGTEFHUz0i JChUQVJHRVRfQ0ZMQUdTKSIgJChNQUtFKSBERVNURElSPSAtQyBsaWJzLSQoWEVOX1RBUkdFVF9B UkNIKS9ldnRjaG4KKworIyMjIyMjIwogIyBsaWJ4YwogIyMjIyMjIwogCiAuUEhPTlk6IGxpYnhj CiBsaWJ4YzogbGlieGMtJChYRU5fVEFSR0VUX0FSQ0gpL2xpYnhlbmN0cmwuYSBsaWJ4Yy0kKFhF Tl9UQVJHRVRfQVJDSCkvbGlieGVuZ3Vlc3QuYQotbGlieGMtJChYRU5fVEFSR0VUX0FSQ0gpL2xp YnhlbmN0cmwuYTogbGlieGVudG9vbGxvZyBjcm9zcy16bGliCitsaWJ4Yy0kKFhFTl9UQVJHRVRf QVJDSCkvbGlieGVuY3RybC5hOiBsaWJ4ZW50b29sbG9nIGxpYnhlbmV2dGNobiBjcm9zcy16bGli CiAJJChNQUtFKSAtQyAkKFhFTl9ST09UKS90b29scy9pbmNsdWRlCiAJJChNQUtFKSBERVNURElS PSAtQyAkKE1JTklfT1MpIGxpbmtzCiAJQ1BQRkxBR1M9IiQoVEFSR0VUX0NQUEZMQUdTKSIgQ0ZM QUdTPSIkKFRBUkdFVF9DRkxBR1MpIiAkKE1BS0UpIERFU1RESVI9IENPTkZJR19MSUJYQ19NSU5J T1M9eSAtQyBsaWJ4Yy0kKFhFTl9UQVJHRVRfQVJDSCkKZGlmZiAtLWdpdCBhL3Rvb2xzL01ha2Vm aWxlIGIvdG9vbHMvTWFrZWZpbGUKaW5kZXggOGZjZjhlOS4uOTIyZjAwOCAxMDA2NDQKLS0tIGEv dG9vbHMvTWFrZWZpbGUKKysrIGIvdG9vbHMvTWFrZWZpbGUKQEAgLTI0OCw4ICsyNDgsMTAgQEAg c3ViZGlyLWFsbC1xZW11LXhlbi1kaXI6IHFlbXUteGVuLWRpci1maW5kCiAJCS0tbGliZGlyPSQo TElCRVhFQ19MSUIpIFwKIAkJLS1pbmNsdWRlZGlyPSQoTElCRVhFQ19JTkMpIFwKIAkJLS1zb3Vy Y2UtcGF0aD0kJHNvdXJjZSBcCi0JCS0tZXh0cmEtY2ZsYWdzPSItSSQoWEVOX1JPT1QpL3Rvb2xz L2luY2x1ZGUgXAorCQktLWV4dHJhLWNmbGFncz0iLURYQ19XQU5UX0NPTVBBVF9FVlRDSE5fQVBJ PTEgXAorCQktSSQoWEVOX1JPT1QpL3Rvb2xzL2luY2x1ZGUgXAogCQktSSQoWEVOX1JPT1QpL3Rv b2xzL2xpYnMvdG9vbGxvZy9pbmNsdWRlIFwKKwkJLUkkKFhFTl9ST09UKS90b29scy9saWJzL2V2 dGNobi9pbmNsdWRlIFwKIAkJLUkkKFhFTl9ST09UKS90b29scy9saWJ4Yy9pbmNsdWRlIFwKIAkJ LUkkKFhFTl9ST09UKS90b29scy94ZW5zdG9yZS9pbmNsdWRlIFwKIAkJLUkkKFhFTl9ST09UKS90 b29scy94ZW5zdG9yZS9jb21wYXQvaW5jbHVkZSBcCkBAIC0yNTcsNiArMjU5LDcgQEAgc3ViZGly LWFsbC1xZW11LXhlbi1kaXI6IHFlbXUteGVuLWRpci1maW5kCiAJCS0tZXh0cmEtbGRmbGFncz0i LUwkKFhFTl9ST09UKS90b29scy9saWJ4YyBcCiAJCS1MJChYRU5fUk9PVCkvdG9vbHMveGVuc3Rv cmUgXAogCQktV2wsLXJwYXRoLWxpbms9JChYRU5fUk9PVCkvdG9vbHMvbGlicy90b29sbG9nIFwK KwkJLVdsLC1ycGF0aC1saW5rPSQoWEVOX1JPT1QpL3Rvb2xzL2xpYnMvZXZ0Y2huIFwKIAkJJChR RU1VX1VQU1RSRUFNX1JQQVRIKSIgXAogCQktLWJpbmRpcj0kKExJQkVYRUNfQklOKSBcCiAJCS0t ZGF0YWRpcj0kKFNIQVJFRElSKS9xZW11LXhlbiBcCmRpZmYgLS1naXQgYS90b29scy9SdWxlcy5t ayBiL3Rvb2xzL1J1bGVzLm1rCmluZGV4IDY1YmY4ZjguLjFmZmU0MjUgMTAwNjQ0Ci0tLSBhL3Rv b2xzL1J1bGVzLm1rCisrKyBiL3Rvb2xzL1J1bGVzLm1rCkBAIC0xMSw2ICsxMSw3IEBAIElOU1RB TEwgPSAkKFhFTl9ST09UKS90b29scy9jcm9zcy1pbnN0YWxsCiAKIFhFTl9JTkNMVURFICAgICAg ICA9ICQoWEVOX1JPT1QpL3Rvb2xzL2luY2x1ZGUKIFhFTl9MSUJYRU5UT09MTE9HICA9ICQoWEVO X1JPT1QpL3Rvb2xzL2xpYnMvdG9vbGxvZworWEVOX0xJQlhFTkVWVENITiAgID0gJChYRU5fUk9P VCkvdG9vbHMvbGlicy9ldnRjaG4KIFhFTl9MSUJYQyAgICAgICAgICA9ICQoWEVOX1JPT1QpL3Rv b2xzL2xpYnhjCiBYRU5fWEVOTElHSFQgICAgICAgPSAkKFhFTl9ST09UKS90b29scy9saWJ4bAog WEVOX1hFTlNUT1JFICAgICAgID0gJChYRU5fUk9PVCkvdG9vbHMveGVuc3RvcmUKQEAgLTgyLDEz ICs4MywxOCBAQCBTSERFUFNfbGlieGVudG9vbGxvZyA9CiBMRExJQlNfbGlieGVudG9vbGxvZyA9 ICQoWEVOX0xJQlhFTlRPT0xMT0cpL2xpYnhlbnRvb2xsb2ckKGxpYmV4dGVuc2lvbikKIFNITElC X2xpYnhlbnRvb2xsb2cgID0gLVdsLC1ycGF0aC1saW5rPSQoWEVOX0xJQlhFTlRPT0xMT0cpCiAK K0NGTEFHU19saWJ4ZW5ldnRjaG4gPSAtSSQoWEVOX0xJQlhFTkVWVENITikvaW5jbHVkZSAkKENG TEFHU194ZW5pbmNsdWRlKQorU0hERVBTX2xpYnhlbmV2dGNobiA9CitMRExJQlNfbGlieGVuZXZ0 Y2huID0gJChYRU5fTElCWEVORVZUQ0hOKS9saWJ4ZW5ldnRjaG4kKGxpYmV4dGVuc2lvbikKK1NI TElCX2xpYnhlbmV2dGNobiAgPSAtV2wsLXJwYXRoLWxpbms9JChYRU5fTElCWEVORVZUQ0hOKQor CiBDRkxBR1NfbGlieGVuY3RybCA9IC1JJChYRU5fTElCWEMpL2luY2x1ZGUgJChDRkxBR1NfbGli eGVudG9vbGxvZykgJChDRkxBR1NfeGVuaW5jbHVkZSkKLVNIREVQU19saWJ4ZW5jdHJsID0gJChT SExJQl9saWJ4ZW50b29sbG9nKSAKK1NIREVQU19saWJ4ZW5jdHJsID0gJChTSExJQl9saWJ4ZW50 b29sbG9nKSAkKFNITElCX2xpYnhlbmV2dGNobikKIExETElCU19saWJ4ZW5jdHJsID0gJChTSERF UFNfbGlieGVuY3RybCkgJChYRU5fTElCWEMpL2xpYnhlbmN0cmwkKGxpYmV4dGVuc2lvbikKIFNI TElCX2xpYnhlbmN0cmwgID0gJChTSERFUFNfbGlieGVuY3RybCkgLVdsLC1ycGF0aC1saW5rPSQo WEVOX0xJQlhDKQogCi1DRkxBR1NfbGlieGVuZ3Vlc3QgPSAtSSQoWEVOX0xJQlhDKS9pbmNsdWRl ICQoQ0ZMQUdTX3hlbmluY2x1ZGUpCi1TSERFUFNfbGlieGVuZ3Vlc3QgPQorQ0ZMQUdTX2xpYnhl bmd1ZXN0ID0gLUkkKFhFTl9MSUJYQykvaW5jbHVkZSAkKENGTEFHU19saWJ4ZW5ldnRjaG4pICQo Q0ZMQUdTX3hlbmluY2x1ZGUpCitTSERFUFNfbGlieGVuZ3Vlc3QgPSAkKFNITElCX2xpYnhlbmV2 dGNobikKIExETElCU19saWJ4ZW5ndWVzdCA9ICQoU0hERVBTX2xpYnhlbmd1ZXN0KSAkKFhFTl9M SUJYQykvbGlieGVuZ3Vlc3QkKGxpYmV4dGVuc2lvbikKIFNITElCX2xpYnhlbmd1ZXN0ICA9ICQo U0hERVBTX2xpYnhlbmd1ZXN0KSAtV2wsLXJwYXRoLWxpbms9TCQoWEVOX0xJQlhDKQogCkBAIC0x MDMsNyArMTA5LDcgQEAgTERMSUJTX2xpYnhlbnN0YXQgID0gJChTSERFUFNfbGlieGVuc3RhdCkg JChYRU5fTElCWEVOU1RBVCkvbGlieGVuc3RhdCQobGliZXh0ZW4KIFNITElCX2xpYnhlbnN0YXQg ICA9ICQoU0hERVBTX2xpYnhlbnN0YXQpIC1XbCwtcnBhdGgtbGluaz0kKFhFTl9MSUJYRU5TVEFU KQogCiBDRkxBR1NfbGlieGVudmNoYW4gPSAtSSQoWEVOX0xJQlZDSEFOKQotU0hERVBTX2xpYnhl bnZjaGFuID0gJChTSExJQl9saWJ4ZW5jdHJsKSAkKFNITElCX2xpYnhlbnN0b3JlKQorU0hERVBT X2xpYnhlbnZjaGFuID0gJChTSExJQl9saWJ4ZW5jdHJsKSAkKFNITElCX2xpYnhlbnN0b3JlKSAk KFNITElCX2xpYnhlbmV2dGNobikKIExETElCU19saWJ4ZW52Y2hhbiA9ICQoU0hERVBTX2xpYnhl bnZjaGFuKSAkKFhFTl9MSUJWQ0hBTikvbGlieGVudmNoYW4kKGxpYmV4dGVuc2lvbikKIFNITElC X2xpYnhlbnZjaGFuICA9ICQoU0hERVBTX2xpYnhlbnZjaGFuKSAtV2wsLXJwYXRoLWxpbms9JChY RU5fTElCVkNIQU4pCiAKZGlmZiAtLWdpdCBhL3Rvb2xzL2NvbnNvbGUvTWFrZWZpbGUgYi90b29s cy9jb25zb2xlL01ha2VmaWxlCmluZGV4IDc3ZThmMjkuLjRiM2E0OTIgMTAwNjQ0Ci0tLSBhL3Rv b2xzL2NvbnNvbGUvTWFrZWZpbGUKKysrIGIvdG9vbHMvY29uc29sZS9NYWtlZmlsZQpAQCAtMyw4 ICszLDEwIEBAIGluY2x1ZGUgJChYRU5fUk9PVCkvdG9vbHMvUnVsZXMubWsKIAogQ0ZMQUdTICAr PSAtV2Vycm9yCiAKK0NGTEFHUyAgKz0gJChDRkxBR1NfbGlieGVuZXZ0Y2huKQogQ0ZMQUdTICAr PSAkKENGTEFHU19saWJ4ZW5jdHJsKQogQ0ZMQUdTICArPSAkKENGTEFHU19saWJ4ZW5zdG9yZSkK K0xETElCUyArPSAkKExETElCU19saWJ4ZW5ldnRjaG4pCiBMRExJQlMgKz0gJChMRExJQlNfbGli eGVuY3RybCkKIExETElCUyArPSAkKExETElCU19saWJ4ZW5zdG9yZSkKIExETElCUyArPSAkKFNP Q0tFVF9MSUJTKQpkaWZmIC0tZ2l0IGEvdG9vbHMvY29uc29sZS9kYWVtb24vaW8uYyBiL3Rvb2xz L2NvbnNvbGUvZGFlbW9uL2lvLmMKaW5kZXggY2FmYzdiNy4uMmYyZTljNSAxMDA2NDQKLS0tIGEv dG9vbHMvY29uc29sZS9kYWVtb24vaW8uYworKysgYi90b29scy9jb25zb2xlL2RhZW1vbi9pby5j CkBAIC0yMSw2ICsyMSw3IEBACiAKICNpbmNsdWRlICJ1dGlscy5oIgogI2luY2x1ZGUgImlvLmgi CisjaW5jbHVkZSA8eGVuZXZ0Y2huLmg+CiAjaW5jbHVkZSA8eGVuc3RvcmUuaD4KICNpbmNsdWRl IDx4ZW4vaW8vY29uc29sZS5oPgogI2luY2x1ZGUgPHhlbi9ncmFudF90YWJsZS5oPgpAQCAtMTAx LDcgKzEwMiw3IEBAIHN0cnVjdCBkb21haW4gewogCWludCByaW5nX3JlZjsKIAlldnRjaG5fcG9y dF9vcl9lcnJvcl90IGxvY2FsX3BvcnQ7CiAJZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCByZW1vdGVf cG9ydDsKLQl4Y19ldnRjaG4gKnhjZV9oYW5kbGU7CisJeGVuZXZ0Y2huX2hhbmRsZSAqeGNlX2hh bmRsZTsKIAlpbnQgeGNlX3BvbGxmZF9pZHg7CiAJc3RydWN0IHhlbmNvbnNfaW50ZXJmYWNlICpp bnRlcmZhY2U7CiAJaW50IGV2ZW50X2NvdW50OwpAQCAtMTg1LDcgKzE4Niw3IEBAIHN0YXRpYyB2 b2lkIGJ1ZmZlcl9hcHBlbmQoc3RydWN0IGRvbWFpbiAqZG9tKQogCiAJeGVuX21iKCk7CiAJaW50 Zi0+b3V0X2NvbnMgPSBjb25zOwotCXhjX2V2dGNobl9ub3RpZnkoZG9tLT54Y2VfaGFuZGxlLCBk b20tPmxvY2FsX3BvcnQpOworCXhlbmV2dGNobl9ub3RpZnkoZG9tLT54Y2VfaGFuZGxlLCBkb20t PmxvY2FsX3BvcnQpOwogCiAJLyogR2V0IHRoZSBkYXRhIHRvIHRoZSBsb2dmaWxlIGFzIGVhcmx5 IGFzIHBvc3NpYmxlIGJlY2F1c2UgaWYKIAkgKiBubyBvbmUgaXMgbGlzdGVuaW5nIG9uIHRoZSBj b25zb2xlIHB0eSB0aGVuIGl0IHdpbGwgZmlsbCB1cApAQCAtNTg0LDIyICs1ODUsMjIgQEAgc3Rh dGljIGludCBkb21haW5fY3JlYXRlX3Jpbmcoc3RydWN0IGRvbWFpbiAqZG9tKQogCWRvbS0+bG9j YWxfcG9ydCA9IC0xOwogCWRvbS0+cmVtb3RlX3BvcnQgPSAtMTsKIAlpZiAoZG9tLT54Y2VfaGFu ZGxlICE9IE5VTEwpCi0JCXhjX2V2dGNobl9jbG9zZShkb20tPnhjZV9oYW5kbGUpOworCQl4ZW5l dnRjaG5fY2xvc2UoZG9tLT54Y2VfaGFuZGxlKTsKIAogCS8qIE9wZW5pbmcgZXZ0Y2huIGluZGVw ZW5kZW50bHkgZm9yIGVhY2ggY29uc29sZSBpcyBhIGJpdAogCSAqIHdhc3RlZnVsLCBidXQgdGhh dCdzIGhvdyB0aGUgY29kZSBpcyBzdHJ1Y3R1cmVkLi4uICovCi0JZG9tLT54Y2VfaGFuZGxlID0g eGNfZXZ0Y2huX29wZW4oTlVMTCwgMCk7CisJZG9tLT54Y2VfaGFuZGxlID0geGVuZXZ0Y2huX29w ZW4oTlVMTCwgMCk7CiAJaWYgKGRvbS0+eGNlX2hhbmRsZSA9PSBOVUxMKSB7CiAJCWVyciA9IGVy cm5vOwogCQlnb3RvIG91dDsKIAl9CiAgCi0JcmMgPSB4Y19ldnRjaG5fYmluZF9pbnRlcmRvbWFp bihkb20tPnhjZV9oYW5kbGUsCisJcmMgPSB4ZW5ldnRjaG5fYmluZF9pbnRlcmRvbWFpbihkb20t PnhjZV9oYW5kbGUsCiAJCWRvbS0+ZG9taWQsIHJlbW90ZV9wb3J0KTsKIAogCWlmIChyYyA9PSAt MSkgewogCQllcnIgPSBlcnJubzsKLQkJeGNfZXZ0Y2huX2Nsb3NlKGRvbS0+eGNlX2hhbmRsZSk7 CisJCXhlbmV2dGNobl9jbG9zZShkb20tPnhjZV9oYW5kbGUpOwogCQlkb20tPnhjZV9oYW5kbGUg PSBOVUxMOwogCQlnb3RvIG91dDsKIAl9CkBAIC02MDksNyArNjEwLDcgQEAgc3RhdGljIGludCBk b21haW5fY3JlYXRlX3Jpbmcoc3RydWN0IGRvbWFpbiAqZG9tKQogCWlmIChkb20tPm1hc3Rlcl9m ZCA9PSAtMSkgewogCQlpZiAoIWRvbWFpbl9jcmVhdGVfdHR5KGRvbSkpIHsKIAkJCWVyciA9IGVy cm5vOwotCQkJeGNfZXZ0Y2huX2Nsb3NlKGRvbS0+eGNlX2hhbmRsZSk7CisJCQl4ZW5ldnRjaG5f Y2xvc2UoZG9tLT54Y2VfaGFuZGxlKTsKIAkJCWRvbS0+eGNlX2hhbmRsZSA9IE5VTEw7CiAJCQlk b20tPmxvY2FsX3BvcnQgPSAtMTsKIAkJCWRvbS0+cmVtb3RlX3BvcnQgPSAtMTsKQEAgLTc0OSw3 ICs3NTAsNyBAQCBzdGF0aWMgdm9pZCBzaHV0ZG93bl9kb21haW4oc3RydWN0IGRvbWFpbiAqZCkK IAl3YXRjaF9kb21haW4oZCwgZmFsc2UpOwogCWRvbWFpbl91bm1hcF9pbnRlcmZhY2UoZCk7CiAJ aWYgKGQtPnhjZV9oYW5kbGUgIT0gTlVMTCkKLQkJeGNfZXZ0Y2huX2Nsb3NlKGQtPnhjZV9oYW5k bGUpOworCQl4ZW5ldnRjaG5fY2xvc2UoZC0+eGNlX2hhbmRsZSk7CiAJZC0+eGNlX2hhbmRsZSA9 IE5VTEw7CiB9CiAKQEAgLTgzOSw3ICs4NDAsNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfdHR5X3Jl YWQoc3RydWN0IGRvbWFpbiAqZG9tKQogCQl9CiAJCXhlbl93bWIoKTsKIAkJaW50Zi0+aW5fcHJv ZCA9IHByb2Q7Ci0JCXhjX2V2dGNobl9ub3RpZnkoZG9tLT54Y2VfaGFuZGxlLCBkb20tPmxvY2Fs X3BvcnQpOworCQl4ZW5ldnRjaG5fbm90aWZ5KGRvbS0+eGNlX2hhbmRsZSwgZG9tLT5sb2NhbF9w b3J0KTsKIAl9IGVsc2UgewogCQlkb21haW5fY2xvc2VfdHR5KGRvbSk7CiAJCXNodXRkb3duX2Rv bWFpbihkb20pOwpAQCAtODcxLDcgKzg3Miw3IEBAIHN0YXRpYyB2b2lkIGhhbmRsZV9yaW5nX3Jl YWQoc3RydWN0IGRvbWFpbiAqZG9tKQogCWlmIChkb20tPmlzX2RlYWQpCiAJCXJldHVybjsKIAot CWlmICgocG9ydCA9IHhjX2V2dGNobl9wZW5kaW5nKGRvbS0+eGNlX2hhbmRsZSkpID09IC0xKQor CWlmICgocG9ydCA9IHhlbmV2dGNobl9wZW5kaW5nKGRvbS0+eGNlX2hhbmRsZSkpID09IC0xKQog CQlyZXR1cm47CiAKIAlkb20tPmV2ZW50X2NvdW50Kys7CkBAIC04NzksNyArODgwLDcgQEAgc3Rh dGljIHZvaWQgaGFuZGxlX3JpbmdfcmVhZChzdHJ1Y3QgZG9tYWluICpkb20pCiAJYnVmZmVyX2Fw cGVuZChkb20pOwogCiAJaWYgKGRvbS0+ZXZlbnRfY291bnQgPCBSQVRFX0xJTUlUX0FMTE9XQU5D RSkKLQkJKHZvaWQpeGNfZXZ0Y2huX3VubWFzayhkb20tPnhjZV9oYW5kbGUsIHBvcnQpOworCQko dm9pZCl4ZW5ldnRjaG5fdW5tYXNrKGRvbS0+eGNlX2hhbmRsZSwgcG9ydCk7CiB9CiAKIHN0YXRp YyB2b2lkIGhhbmRsZV94cyh2b2lkKQpAQCAtOTA2LDcgKzkwNyw3IEBAIHN0YXRpYyB2b2lkIGhh bmRsZV94cyh2b2lkKQogCWZyZWUodmVjKTsKIH0KIAotc3RhdGljIHZvaWQgaGFuZGxlX2h2X2xv Z3MoeGNfZXZ0Y2huICp4Y2VfaGFuZGxlLCBib29sIGZvcmNlKQorc3RhdGljIHZvaWQgaGFuZGxl X2h2X2xvZ3MoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlX2hhbmRsZSwgYm9vbCBmb3JjZSkKIHsKIAlz dGF0aWMgY2hhciBidWZmZXJbMTAyNCoxNl07CiAJY2hhciAqYnVmcHRyID0gYnVmZmVyOwpAQCAt OTE0LDcgKzkxNSw3IEBAIHN0YXRpYyB2b2lkIGhhbmRsZV9odl9sb2dzKHhjX2V2dGNobiAqeGNl X2hhbmRsZSwgYm9vbCBmb3JjZSkKIAlzdGF0aWMgdWludDMyX3QgaW5kZXggPSAwOwogCWV2dGNo bl9wb3J0X29yX2Vycm9yX3QgcG9ydCA9IC0xOwogCi0JaWYgKCFmb3JjZSAmJiAoKHBvcnQgPSB4 Y19ldnRjaG5fcGVuZGluZyh4Y2VfaGFuZGxlKSkgPT0gLTEpKQorCWlmICghZm9yY2UgJiYgKChw b3J0ID0geGVuZXZ0Y2huX3BlbmRpbmcoeGNlX2hhbmRsZSkpID09IC0xKSkKIAkJcmV0dXJuOwog CiAJZG8KQEAgLTkzOCw3ICs5MzksNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfaHZfbG9ncyh4Y19l dnRjaG4gKnhjZV9oYW5kbGUsIGJvb2wgZm9yY2UpCiAJfSB3aGlsZSAoc2l6ZSA9PSBzaXplb2Yo YnVmZmVyKSk7CiAKIAlpZiAocG9ydCAhPSAtMSkKLQkJKHZvaWQpeGNfZXZ0Y2huX3VubWFzayh4 Y2VfaGFuZGxlLCBwb3J0KTsKKwkJKHZvaWQpeGVuZXZ0Y2huX3VubWFzayh4Y2VfaGFuZGxlLCBw b3J0KTsKIH0KIAogc3RhdGljIHZvaWQgaGFuZGxlX2xvZ19yZWxvYWQodm9pZCkKQEAgLTEwMDYs MTAgKzEwMDcsMTAgQEAgdm9pZCBoYW5kbGVfaW8odm9pZCkKIAlldnRjaG5fcG9ydF9vcl9lcnJv cl90IGxvZ19odl9ldnRjaG4gPSAtMTsKIAlpbnQgeGNlX3BvbGxmZF9pZHggPSAtMTsKIAlpbnQg eHNfcG9sbGZkX2lkeCA9IC0xOwotCXhjX2V2dGNobiAqeGNlX2hhbmRsZSA9IE5VTEw7CisJeGVu ZXZ0Y2huX2hhbmRsZSAqeGNlX2hhbmRsZSA9IE5VTEw7CiAKIAlpZiAobG9nX2h2KSB7Ci0JCXhj ZV9oYW5kbGUgPSB4Y19ldnRjaG5fb3BlbihOVUxMLCAwKTsKKwkJeGNlX2hhbmRsZSA9IHhlbmV2 dGNobl9vcGVuKE5VTEwsIDApOwogCQlpZiAoeGNlX2hhbmRsZSA9PSBOVUxMKSB7CiAJCQlkb2xv ZyhMT0dfRVJSLCAiRmFpbGVkIHRvIG9wZW4geGNlIGhhbmRsZTogJWQgKCVzKSIsCiAJCQkgICAg ICBlcnJubywgc3RyZXJyb3IoZXJybm8pKTsKQEAgLTEwMTgsNyArMTAxOSw3IEBAIHZvaWQgaGFu ZGxlX2lvKHZvaWQpCiAJCWxvZ19odl9mZCA9IGNyZWF0ZV9odl9sb2coKTsKIAkJaWYgKGxvZ19o dl9mZCA9PSAtMSkKIAkJCWdvdG8gb3V0OwotCQlsb2dfaHZfZXZ0Y2huID0geGNfZXZ0Y2huX2Jp bmRfdmlycSh4Y2VfaGFuZGxlLCBWSVJRX0NPTl9SSU5HKTsKKwkJbG9nX2h2X2V2dGNobiA9IHhl bmV2dGNobl9iaW5kX3ZpcnEoeGNlX2hhbmRsZSwgVklSUV9DT05fUklORyk7CiAJCWlmIChsb2df aHZfZXZ0Y2huID09IC0xKSB7CiAJCQlkb2xvZyhMT0dfRVJSLCAiRmFpbGVkIHRvIGJpbmQgdG8g VklSUV9DT05fUklORzogIgogCQkJICAgICAgIiVkICglcykiLCBlcnJubywgc3RyZXJyb3IoZXJy bm8pKTsKQEAgLTEwNDcsNyArMTA0OCw3IEBAIHZvaWQgaGFuZGxlX2lvKHZvaWQpCiAJCXhzX3Bv bGxmZF9pZHggPSBzZXRfZmRzKHhzX2ZpbGVubyh4cyksIFBPTExJTnxQT0xMUFJJKTsKIAogCQlp ZiAobG9nX2h2KQotCQkJeGNlX3BvbGxmZF9pZHggPSBzZXRfZmRzKHhjX2V2dGNobl9mZCh4Y2Vf aGFuZGxlKSwKKwkJCXhjZV9wb2xsZmRfaWR4ID0gc2V0X2Zkcyh4ZW5ldnRjaG5fZmQoeGNlX2hh bmRsZSksCiAJCQkJCQkgUE9MTElOfFBPTExQUkkpOwogCiAJCWlmIChjbG9ja19nZXR0aW1lKENM T0NLX01PTk9UT05JQywgJnRzKSA8IDApCkBAIC0xMDY2LDcgKzEwNjcsNyBAQCB2b2lkIGhhbmRs ZV9pbyh2b2lkKQogCQkJaWYgKChub3crNSkgPiBkLT5uZXh0X3BlcmlvZCkgewogCQkJCWQtPm5l eHRfcGVyaW9kID0gbm93ICsgUkFURV9MSU1JVF9QRVJJT0Q7CiAJCQkJaWYgKGQtPmV2ZW50X2Nv dW50ID49IFJBVEVfTElNSVRfQUxMT1dBTkNFKSB7Ci0JCQkJCSh2b2lkKXhjX2V2dGNobl91bm1h c2soZC0+eGNlX2hhbmRsZSwgZC0+bG9jYWxfcG9ydCk7CisJCQkJCSh2b2lkKXhlbmV2dGNobl91 bm1hc2soZC0+eGNlX2hhbmRsZSwgZC0+bG9jYWxfcG9ydCk7CiAJCQkJfQogCQkJCWQtPmV2ZW50 X2NvdW50ID0gMDsKIAkJCX0KQEAgLTEwODIsNyArMTA4Myw3IEBAIHZvaWQgaGFuZGxlX2lvKHZv aWQpCiAJCQkJaWYgKGRpc2NhcmRfb3ZlcmZsb3dlZF9kYXRhIHx8CiAJCQkJICAgICFkLT5idWZm ZXIubWF4X2NhcGFjaXR5IHx8CiAJCQkJICAgIGQtPmJ1ZmZlci5zaXplIDwgZC0+YnVmZmVyLm1h eF9jYXBhY2l0eSkgewotCQkJCQlpbnQgZXZ0Y2huX2ZkID0geGNfZXZ0Y2huX2ZkKGQtPnhjZV9o YW5kbGUpOworCQkJCQlpbnQgZXZ0Y2huX2ZkID0geGVuZXZ0Y2huX2ZkKGQtPnhjZV9oYW5kbGUp OwogCQkJCQlkLT54Y2VfcG9sbGZkX2lkeCA9IHNldF9mZHMoZXZ0Y2huX2ZkLAogCQkJCQkJCQkg ICAgUE9MTElOfFBPTExQUkkpOwogCQkJCX0KQEAgLTEyMDIsNyArMTIwMyw3IEBAIHZvaWQgaGFu ZGxlX2lvKHZvaWQpCiAJCWxvZ19odl9mZCA9IC0xOwogCX0KIAlpZiAoeGNlX2hhbmRsZSAhPSBO VUxMKSB7Ci0JCXhjX2V2dGNobl9jbG9zZSh4Y2VfaGFuZGxlKTsKKwkJeGVuZXZ0Y2huX2Nsb3Nl KHhjZV9oYW5kbGUpOwogCQl4Y2VfaGFuZGxlID0gTlVMTDsKIAl9CiAJaWYgKHhjZ19oYW5kbGUg IT0gTlVMTCkgewpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlicy9NYWtlZmlsZSBiL3Rvb2xzL2xpYnMv TWFrZWZpbGUKaW5kZXggNzNiZTUwMC4uMGUzZjUyMyAxMDA2NDQKLS0tIGEvdG9vbHMvbGlicy9N YWtlZmlsZQorKysgYi90b29scy9saWJzL01ha2VmaWxlCkBAIC0zLDUgKzMsNiBAQCBpbmNsdWRl ICQoWEVOX1JPT1QpL3Rvb2xzL1J1bGVzLm1rCiAKIFNVQkRJUlMteSA6PQogU1VCRElSUy15ICs9 IHRvb2xsb2cKK1NVQkRJUlMteSArPSBldnRjaG4KIAogYWxsIGNsZWFuIGluc3RhbGwgZGlzdGNs ZWFuOiAlOiBzdWJkaXJzLSUKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnMvZXZ0Y2huL01ha2VmaWxl IGIvdG9vbHMvbGlicy9ldnRjaG4vTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uODVlZDZkYwotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL2xpYnMvZXZ0Y2huL01h a2VmaWxlCkBAIC0wLDAgKzEsNjUgQEAKK1hFTl9ST09UID0gJChDVVJESVIpLy4uLy4uLy4uCitp bmNsdWRlICQoWEVOX1JPT1QpL3Rvb2xzL1J1bGVzLm1rCisKK01BSk9SICAgID0gMQorTUlOT1Ig ICAgPSAwCitTSExJQl9MREZMQUdTICs9IC1XbCwtLXZlcnNpb24tc2NyaXB0PWxpYnhlbmV2dGNo bi5tYXAKKworQ0ZMQUdTICAgKz0gLVdlcnJvciAtV21pc3NpbmctcHJvdG90eXBlcworQ0ZMQUdT ICAgKz0gLUkuL2luY2x1ZGUgJChDRkxBR1NfeGVuaW5jbHVkZSkKK0NGTEFHUyAgICs9ICQoQ0ZM QUdTX2xpYnhlbnRvb2xsb2cpCisKK1NSQ1MteSAgICAgICAgICAgICAgICAgKz0gY29yZS5jCitT UkNTLSQoQ09ORklHX0xpbnV4KSAgICs9IGxpbnV4LmMKK1NSQ1MtJChDT05GSUdfRnJlZUJTRCkg Kz0gZnJlZWJzZC5jCitTUkNTLSQoQ09ORklHX1N1bk9TKSAgICs9IHNvbGFyaXMuYworU1JDUy0k KENPTkZJR19OZXRCU0QpICArPSBuZXRic2QuYworU1JDUy0kKENPTkZJR19NaW5pT1MpICArPSBt aW5pb3MuYworCitMSUJfT0JKUyA6PSAkKHBhdHN1YnN0ICUuYywlLm8sJChTUkNTLXkpKQorUElD X09CSlMgOj0gJChwYXRzdWJzdCAlLmMsJS5vcGljLCQoU1JDUy15KSkKKworTElCIDo9IGxpYnhl bmV2dGNobi5hCitpZm5lcSAoJChub3NoYXJlZGxpYnMpLHkpCitMSUIgKz0gbGlieGVuZXZ0Y2hu LnNvCitlbmRpZgorCisuUEhPTlk6IGFsbAorYWxsOiBidWlsZAorCisuUEhPTlk6IGJ1aWxkCiti dWlsZDoKKwkkKE1BS0UpIGxpYnMKKworLlBIT05ZOiBsaWJzCitsaWJzOiAkKExJQikKKworCits aWJ4ZW5ldnRjaG4uYTogJChMSUJfT0JKUykKKwkkKEFSKSByYyAkQCAkXgorCitsaWJ4ZW5ldnRj aG4uc286IGxpYnhlbmV2dGNobi5zby4kKE1BSk9SKQorCSQoU1lNTElOS19TSExJQikgJDwgJEAK K2xpYnhlbmV2dGNobi5zby4kKE1BSk9SKTogbGlieGVuZXZ0Y2huLnNvLiQoTUFKT1IpLiQoTUlO T1IpCisJJChTWU1MSU5LX1NITElCKSAkPCAkQAorCitsaWJ4ZW5ldnRjaG4uc28uJChNQUpPUiku JChNSU5PUik6ICQoUElDX09CSlMpIGxpYnhlbmV2dGNobi5tYXAKKwkkKENDKSAkKExERkxBR1Mp IC1XbCwkKFNPTkFNRV9MREZMQUcpIC1XbCxsaWJ4ZW5ldnRjaG4uc28uJChNQUpPUikgJChTSExJ Ql9MREZMQUdTKSAtbyAkQCAkKFBJQ19PQkpTKSAkKExETElCU19saWJ4ZW50b29sbG9nKSAkKEFQ UEVORF9MREZMQUdTKQorCisuUEhPTlk6IGluc3RhbGwKK2luc3RhbGw6IGJ1aWxkCisJJChJTlNU QUxMX0RJUikgJChERVNURElSKSQobGliZGlyKQorCSQoSU5TVEFMTF9ESVIpICQoREVTVERJUikk KGluY2x1ZGVkaXIpCisJJChJTlNUQUxMX1NITElCKSBsaWJ4ZW5ldnRjaG4uc28uJChNQUpPUiku JChNSU5PUikgJChERVNURElSKSQobGliZGlyKQorCSQoSU5TVEFMTF9EQVRBKSBsaWJ4ZW5ldnRj aG4uYSAkKERFU1RESVIpJChsaWJkaXIpCisJJChTWU1MSU5LX1NITElCKSBsaWJ4ZW5ldnRjaG4u c28uJChNQUpPUikuJChNSU5PUikgJChERVNURElSKSQobGliZGlyKS9saWJ4ZW5ldnRjaG4uc28u JChNQUpPUikKKwkkKFNZTUxJTktfU0hMSUIpIGxpYnhlbmV2dGNobi5zby4kKE1BSk9SKSAkKERF U1RESVIpJChsaWJkaXIpL2xpYnhlbmV2dGNobi5zbworCSQoSU5TVEFMTF9EQVRBKSBpbmNsdWRl L3hlbmV2dGNobi5oICQoREVTVERJUikkKGluY2x1ZGVkaXIpCisKKy5QSE9OWTogVEFHUworVEFH UzoKKwlldGFncyAtdCAqLmMgKi5oCisKKy5QSE9OWTogY2xlYW4KK2NsZWFuOgorCXJtIC1yZiAq LnJwbSAkKExJQikgKn4gJChERVBTKSAkKExJQl9PQkpTKSAkKFBJQ19PQkpTKQpkaWZmIC0tZ2l0 IGEvdG9vbHMvbGlicy9ldnRjaG4vY29yZS5jIGIvdG9vbHMvbGlicy9ldnRjaG4vY29yZS5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzNzEyNmUKLS0tIC9kZXYvbnVsbAor KysgYi90b29scy9saWJzL2V2dGNobi9jb3JlLmMKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIFRo aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247CisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZS4KKyAqCisgKiBUaGlzIGxp YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGgg dGhpcyBsaWJyYXJ5OyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u CisgKi8KKworI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisjaW5j bHVkZSAicHJpdmF0ZS5oIgorCit4ZW5ldnRjaG5faGFuZGxlICp4ZW5ldnRjaG5fb3Blbih4ZW50 b29sbG9nX2xvZ2dlciAqbG9nZ2VyLCB1bnNpZ25lZCBvcGVuX2ZsYWdzKQoreworICAgIHhlbmV2 dGNobl9oYW5kbGUgKnhjZSA9IG1hbGxvYyhzaXplb2YoKnhjZSkpOworICAgIGludCByYzsKKwor ICAgIGlmICgheGNlKSByZXR1cm4gTlVMTDsKKworICAgIHhjZS0+ZmQgPSAtMTsKKyAgICB4Y2Ut PmxvZ2dlciA9IGxvZ2dlcjsKKyAgICB4Y2UtPmxvZ2dlcl90b2ZyZWUgID0gTlVMTDsKKworICAg IGlmICgheGNlLT5sb2dnZXIpIHsKKyAgICAgICAgeGNlLT5sb2dnZXIgPSB4Y2UtPmxvZ2dlcl90 b2ZyZWUgPQorICAgICAgICAgICAgKHhlbnRvb2xsb2dfbG9nZ2VyKikKKyAgICAgICAgICAgIHh0 bF9jcmVhdGVsb2dnZXJfc3RkaW9zdHJlYW0oc3RkZXJyLCBYVExfUFJPR1JFU1MsIDApOworICAg ICAgICBpZiAoIXhjZS0+bG9nZ2VyKSBnb3RvIGVycjsKKyAgICB9CisKKyAgICByYyA9IG9zZGVw X2V2dGNobl9vcGVuKHhjZSk7CisgICAgaWYgKCByYyAgPCAwICkgZ290byBlcnI7CisKKyAgICBy ZXR1cm4geGNlOworCitlcnI6CisgICAgb3NkZXBfZXZ0Y2huX2Nsb3NlKHhjZSk7CisgICAgeHRs X2xvZ2dlcl9kZXN0cm95KHhjZS0+bG9nZ2VyX3RvZnJlZSk7CisgICAgZnJlZSh4Y2UpOworICAg IHJldHVybiBOVUxMOworfQorCitpbnQgeGVuZXZ0Y2huX2Nsb3NlKHhlbmV2dGNobl9oYW5kbGUg KnhjZSkKK3sKKyAgICBpbnQgcmM7CisKKyAgICByYyA9IG9zZGVwX2V2dGNobl9jbG9zZSh4Y2Up OworICAgIHh0bF9sb2dnZXJfZGVzdHJveSh4Y2UtPmxvZ2dlcl90b2ZyZWUpOworICAgIGZyZWUo eGNlKTsKKyAgICByZXR1cm4gcmM7Cit9CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBt b2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICog dGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZm IC0tZ2l0IGEvdG9vbHMvbGlicy9ldnRjaG4vZnJlZWJzZC5jIGIvdG9vbHMvbGlicy9ldnRjaG4v ZnJlZWJzZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzNmYwNTIKLS0t IC9kZXYvbnVsbAorKysgYi90b29scy9saWJzL2V2dGNobi9mcmVlYnNkLmMKQEAgLTAsMCArMSwx MzggQEAKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogQ29weXJpZ2h0IDIwMDYgU3Vu IE1pY3Jvc3lzdGVtcywgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBpcyBzdWJq ZWN0IHRvIGxpY2Vuc2UgdGVybXMuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsKKyAqIHZlcnNpb24gMi4x IG9mIHRoZSBMaWNlbnNlLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg KiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh bCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqCisgKiBTcGxpdCBvZmYgZnJvbSB4 Y19mcmVlYnNkX29zZGVwLmMKKyAqLworCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDx1 bmlzdGQuaD4KKworI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorCisjaW5jbHVkZSA8eGVuL3N5cy9l dnRjaG4uaD4KKworI2luY2x1ZGUgInByaXZhdGUuaCIKKworI2RlZmluZSBFVlRDSE5fREVWICAg ICAgIi9kZXYveGVuL2V2dGNobiIKKworaW50IG9zZGVwX2V2dGNobl9vcGVuKHhlbmV2dGNobl9o YW5kbGUgKnhjZSkKK3sKKyAgICBpbnQgZmQgPSBvcGVuKEVWVENITl9ERVYsIE9fUkRXUik7Cisg ICAgaWYgKCBmZCA9PSAtMSApCisgICAgICAgIHJldHVybiAtMTsKKyAgICB4Y2UtPmZkID0gZmQ7 CisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBvc2RlcF9ldnRjaG5fY2xvc2UoeGVuZXZ0Y2huX2hh bmRsZSAqeGNlKQoreworICAgIGlmICggeGNlLT5mZCA9PSAtMSApCisgICAgICAgIHJldHVybiAw OworCisgICAgcmV0dXJuIGNsb3NlKHhjZS0+ZmQpOworfQorCitpbnQgeGVuZXZ0Y2huX2ZkKHhl bmV2dGNobl9oYW5kbGUgKnhjZSkKK3sKKyAgICByZXR1cm4geGNlLT5mZDsKK30KKworaW50IHhl bmV2dGNobl9ub3RpZnkoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQp Cit7CisgICAgaW50IGZkID0geGNlLT5mZDsKKyAgICBzdHJ1Y3QgaW9jdGxfZXZ0Y2huX25vdGlm eSBub3RpZnk7CisKKyAgICBub3RpZnkucG9ydCA9IHBvcnQ7CisKKyAgICByZXR1cm4gaW9jdGwo ZmQsIElPQ1RMX0VWVENITl9OT1RJRlksICZub3RpZnkpOworfQorCitldnRjaG5fcG9ydF9vcl9l cnJvcl90IHhlbmV2dGNobl9iaW5kX3VuYm91bmRfcG9ydCh4ZW5ldnRjaG5faGFuZGxlICp4Y2Us IGludCBkb21pZCkKK3sKKyAgICBpbnQgcmV0LCBmZCA9IHhjZS0+ZmQ7CisgICAgc3RydWN0IGlv Y3RsX2V2dGNobl9iaW5kX3VuYm91bmRfcG9ydCBiaW5kOworCisgICAgYmluZC5yZW1vdGVfZG9t YWluID0gZG9taWQ7CisKKyAgICByZXQgPSBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX0JJTkRfVU5C T1VORF9QT1JULCAmYmluZCk7CisgICAgcmV0dXJuICggcmV0ID09IDAgKSA/IGJpbmQucG9ydCA6 IHJldDsKK30KKworZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdAoreGVuZXZ0Y2huX2JpbmRfaW50ZXJk b21haW4oeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLCBpbnQgZG9taWQsIGV2dGNobl9wb3J0X3QgcmVt b3RlX3BvcnQpCit7CisgICAgaW50IHJldCwgZmQgPSB4Y2UtPmZkOworICAgIHN0cnVjdCBpb2N0 bF9ldnRjaG5fYmluZF9pbnRlcmRvbWFpbiBiaW5kOworCisgICAgYmluZC5yZW1vdGVfZG9tYWlu ID0gZG9taWQ7CisgICAgYmluZC5yZW1vdGVfcG9ydCA9IHJlbW90ZV9wb3J0OworCisgICAgcmV0 ID0gaW9jdGwoZmQsIElPQ1RMX0VWVENITl9CSU5EX0lOVEVSRE9NQUlOLCAmYmluZCk7CisgICAg cmV0dXJuICggcmV0ID09IDAgKSA/IGJpbmQucG9ydCA6IHJldDsKK30KKworZXZ0Y2huX3BvcnRf b3JfZXJyb3JfdCB4ZW5ldnRjaG5fYmluZF92aXJxKHhlbmV2dGNobl9oYW5kbGUgKnhjZSwgdW5z aWduZWQgaW50IHZpcnEpCit7CisgICAgaW50IHJldCwgZmQgPSB4Y2UtPmZkOworICAgIHN0cnVj dCBpb2N0bF9ldnRjaG5fYmluZF92aXJxIGJpbmQ7CisKKyAgICBiaW5kLnZpcnEgPSB2aXJxOwor CisgICAgcmV0ID0gaW9jdGwoZmQsIElPQ1RMX0VWVENITl9CSU5EX1ZJUlEsICZiaW5kKTsKKyAg ICByZXR1cm4gKCByZXQgPT0gMCApID8gYmluZC5wb3J0IDogcmV0OworfQorCitpbnQgeGVuZXZ0 Y2huX3VuYmluZCh4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCkKK3sK KyAgICBpbnQgZmQgPSB4Y2UtPmZkOworICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fdW5iaW5kIHVu YmluZDsKKworICAgIHVuYmluZC5wb3J0ID0gcG9ydDsKKworICAgIHJldHVybiBpb2N0bChmZCwg SU9DVExfRVZUQ0hOX1VOQklORCwgJnVuYmluZCk7Cit9CisKK2V2dGNobl9wb3J0X29yX2Vycm9y X3QgeGVuZXZ0Y2huX3BlbmRpbmcoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlKQoreworICAgIGludCBm ZCA9IHhjZS0+ZmQ7CisgICAgZXZ0Y2huX3BvcnRfdCBwb3J0OworCisgICAgaWYgKCByZWFkKGZk LCAmcG9ydCwgc2l6ZW9mKHBvcnQpKSAhPSBzaXplb2YocG9ydCkgKQorICAgICAgICByZXR1cm4g LTE7CisKKyAgICByZXR1cm4gcG9ydDsKK30KKworaW50IHhlbmV2dGNobl91bm1hc2soeGVuZXZ0 Y2huX2hhbmRsZSAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQpCit7CisgICAgaW50IGZkID0geGNl LT5mZDsKKworICAgIGlmICggd3JpdGUoZmQsICZwb3J0LCBzaXplb2YocG9ydCkpICE9IHNpemVv Zihwb3J0KSApCisgICAgICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gMDsKK30KKworLyoKKyAq IExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAq IGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6 IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS90b29scy9saWJzL2V2dGNobi9pbmNsdWRl L3hlbmV2dGNobi5oIGIvdG9vbHMvbGlicy9ldnRjaG4vaW5jbHVkZS94ZW5ldnRjaG4uaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzgwZmEzCi0tLSAvZGV2L251bGwKKysr IGIvdG9vbHMvbGlicy9ldnRjaG4vaW5jbHVkZS94ZW5ldnRjaG4uaApAQCAtMCwwICsxLDE1MCBA QAorLyoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247CisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZS4KKyAq CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCisgKgorICogU3BsaXQgb2ZmIGZyb206CisgKiB4ZW5jdHJsLmgKKyAqCisg KiBBIGxpYnJhcnkgZm9yIGxvdy1sZXZlbCBhY2Nlc3MgdG8gdGhlIFhlbiBjb250cm9sIGludGVy ZmFjZXMuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMDQsIEsgQSBGcmFzZXIuCisgKi8K KworI2lmbmRlZiBYRU5FVlRDSE5fSAorI2RlZmluZSBYRU5FVlRDSE5fSAorCisjaW5jbHVkZSA8 c3RkaW50Lmg+CisKKyNpbmNsdWRlIDx4ZW4vZXZlbnRfY2hhbm5lbC5oPgorCisvKiBBIHBvcnQg aWRlbnRpZmllciBpcyBndWFyYW50ZWVkIHRvIGZpdCBpbiAzMSBiaXRzLiAqLwordHlwZWRlZiBp bnQgZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdDsKKwordHlwZWRlZiBzdHJ1Y3QgeGVuZXZ0Y2huX2hh bmRsZSB4ZW5ldnRjaG5faGFuZGxlOworCisvKiBDYWxsZXJzIHdobyBkb24ndCBjYXJlIGRvbid0 IG5lZWQgdG8gI2luY2x1ZGUgPHhlbnRvb2xsb2cuaD4gKi8KK3R5cGVkZWYgc3RydWN0IHhlbnRv b2xsb2dfbG9nZ2VyIHhlbnRvb2xsb2dfbG9nZ2VyOworCisvKgorICogRVZFTlQgQ0hBTk5FTCBG VU5DVElPTlMKKyAqCisgKiBOb25lIG9mIHRoZXNlIGRvIGFueSBsb2dnaW5nLgorICovCisKKy8q CisgKiBSZXR1cm4gYSBoYW5kbGUgdG8gdGhlIGV2ZW50IGNoYW5uZWwgZHJpdmVyLCBvciBOVUxM IG9uIGZhaWx1cmUsIGluCisgKiB3aGljaCBjYXNlIGVycm5vIHdpbGwgYmUgc2V0IGFwcHJvcHJp YXRlbHkuCisgKgorICogTm90ZToKKyAqIEFmdGVyIGZvcmsgYSBjaGlsZCBwcm9jZXNzIG11c3Qg bm90IHVzZSBhbnkgb3BlbmVkIHhjIGV2dGNobgorICogaGFuZGxlIGluaGVyaXRlZCBmcm9tIHRo ZWlyIHBhcmVudC4gVGhleSBtdXN0IG9wZW4gYSBuZXcgaGFuZGxlIGlmCisgKiB0aGV5IHdhbnQg dG8gaW50ZXJhY3Qgd2l0aCB4Yy4KKyAqCisgKiBCZWZvcmUgWGVuIHByZS00LjEgdGhpcyBmdW5j dGlvbiB3b3VsZCBzb21ldGltZXMgcmVwb3J0IGVycm9ycyB3aXRoIHBlcnJvci4KKyAqLworLyog Q3VycmVudGx5IG5vIGZsYWdzIGFyZSBkZWZpbmVkICovCit4ZW5ldnRjaG5faGFuZGxlICp4ZW5l dnRjaG5fb3Blbih4ZW50b29sbG9nX2xvZ2dlciAqbG9nZ2VyLCB1bnNpZ25lZCBvcGVuX2ZsYWdz KTsKKworLyoKKyAqIENsb3NlIGEgaGFuZGxlIHByZXZpb3VzbHkgYWxsb2NhdGVkIHdpdGggeGVu ZXZ0Y2huX29wZW4oKS4KKyAqLworaW50IHhlbmV2dGNobl9jbG9zZSh4ZW5ldnRjaG5faGFuZGxl ICp4Y2UpOworCisvKgorICogUmV0dXJuIGFuIGZkIHRoYXQgY2FuIGJlIHNlbGVjdCgpZWQgb24u CisgKgorICogTm90ZSB0aGF0IGR1ZSB0byBidWdzLCBzZXR0aW5nIHRoaXMgZmQgdG8gbm9uIGJs b2NraW5nIG1heSBub3QKKyAqIHdvcms6IHlvdSB3b3VsZCBob3BlIHRoYXQgaXQgd291bGQgcmVz dWx0IGluIHhlbmV2dGNobl9wZW5kaW5nCisgKiBmYWlsaW5nIHdpdGggRVdPVUxEQkxPQ0sgaWYg dGhlcmUgYXJlIG5vIGV2ZW50cyBzaWduYWxlZCwgYnV0IGluCisgKiBmYWN0IGl0IG1heSBibG9j ay4gIChCdWcgaXMgcHJlc2VudCBpbiBhdCBsZWFzdCBMaW51eCAzLjEyLCBhbmQKKyAqIHBlcmhh cHMgb24gb3RoZXIgcGxhdGZvcm1zIG9yIGxhdGVyIHZlcnNpb24uKQorICoKKyAqIFRvIGJlIHNh ZmUsIHlvdSBtdXN0IHVzZSBwb2xsKCkgb3Igc2VsZWN0KCkgYmVmb3JlIGVhY2ggY2FsbCB0bwor ICogeGVuZXZ0Y2huX3BlbmRpbmcuICBJZiB5b3UgaGF2ZSBtdWx0aXBsZSB0aHJlYWRzIChvciBw cm9jZXNzZXMpCisgKiBzaGFyaW5nIGEgc2luZ2xlIHhjZSBoYW5kbGUgdGhpcyB3aWxsIG5vdCB3 b3JrLCBhbmQgdGhlcmUgaXMgbm8KKyAqIHN0cmFpZ2h0Zm9yd2FyZCB3b3JrYXJvdW5kLiAgUGxl YXNlIGRlc2lnbiB5b3VyIHByb2dyYW0gc29tZSBvdGhlcgorICogd2F5LgorICovCitpbnQgeGVu ZXZ0Y2huX2ZkKHhlbmV2dGNobl9oYW5kbGUgKnhjZSk7CisKKy8qCisgKiBOb3RpZnkgdGhlIGdp dmVuIGV2ZW50IGNoYW5uZWwuIFJldHVybnMgLTEgb24gZmFpbHVyZSwgaW4gd2hpY2ggY2FzZQor ICogZXJybm8gd2lsbCBiZSBzZXQgYXBwcm9wcmlhdGVseS4KKyAqLworaW50IHhlbmV2dGNobl9u b3RpZnkoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQpOworCisvKgor ICogUmV0dXJucyBhIG5ldyBldmVudCBwb3J0IGF3YWl0aW5nIGludGVyZG9tYWluIGNvbm5lY3Rp b24gZnJvbSB0aGUgZ2l2ZW4KKyAqIGRvbWFpbiBJRCwgb3IgLTEgb24gZmFpbHVyZSwgaW4gd2hp Y2ggY2FzZSBlcnJubyB3aWxsIGJlIHNldCBhcHByb3ByaWF0ZWx5LgorICovCitldnRjaG5fcG9y dF9vcl9lcnJvcl90Cit4ZW5ldnRjaG5fYmluZF91bmJvdW5kX3BvcnQoeGVuZXZ0Y2huX2hhbmRs ZSAqeGNlLCBpbnQgZG9taWQpOworCisvKgorICogUmV0dXJucyBhIG5ldyBldmVudCBwb3J0IGJv dW5kIHRvIHRoZSByZW1vdGUgcG9ydCBmb3IgdGhlIGdpdmVuIGRvbWFpbiBJRCwKKyAqIG9yIC0x IG9uIGZhaWx1cmUsIGluIHdoaWNoIGNhc2UgZXJybm8gd2lsbCBiZSBzZXQgYXBwcm9wcmlhdGVs eS4KKyAqLworZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdAoreGVuZXZ0Y2huX2JpbmRfaW50ZXJkb21h aW4oeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLCBpbnQgZG9taWQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICBldnRjaG5fcG9ydF90IHJlbW90ZV9wb3J0KTsKKworLyoKKyAqIEJpbmQgYW4gZXZl bnQgY2hhbm5lbCB0byB0aGUgZ2l2ZW4gVklSUS4gUmV0dXJucyB0aGUgZXZlbnQgY2hhbm5lbCBi b3VuZCB0bworICogdGhlIFZJUlEsIG9yIC0xIG9uIGZhaWx1cmUsIGluIHdoaWNoIGNhc2UgZXJy bm8gd2lsbCBiZSBzZXQgYXBwcm9wcmlhdGVseS4KKyAqLworZXZ0Y2huX3BvcnRfb3JfZXJyb3Jf dAoreGVuZXZ0Y2huX2JpbmRfdmlycSh4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIHVuc2lnbmVkIGlu dCB2aXJxKTsKKworLyoKKyAqIFVuYmluZCB0aGUgZ2l2ZW4gZXZlbnQgY2hhbm5lbC4gUmV0dXJu cyAtMSBvbiBmYWlsdXJlLCBpbiB3aGljaCBjYXNlIGVycm5vCisgKiB3aWxsIGJlIHNldCBhcHBy b3ByaWF0ZWx5LgorICovCitpbnQgeGVuZXZ0Y2huX3VuYmluZCh4ZW5ldnRjaG5faGFuZGxlICp4 Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCk7CisKKy8qCisgKiBSZXR1cm4gdGhlIG5leHQgZXZlbnQg Y2hhbm5lbCB0byBiZWNvbWUgcGVuZGluZywgb3IgLTEgb24gZmFpbHVyZSwgaW4gd2hpY2gKKyAq IGNhc2UgZXJybm8gd2lsbCBiZSBzZXQgYXBwcm9wcmlhdGVseS4KKyAqCisgKiBBdCB0aGUgaHlw ZXJ2aXNvciBsZXZlbCB0aGUgZXZlbnQgY2hhbm5lbCB3aWxsIGhhdmUgYmVlbiBtYXNrZWQsCisg KiBhbmQgdGhlbiBjbGVhcmVkLCBieSB0aGUgdW5kZXJseWluZyBtYWNoaW5lcnkgKGV2dGNobiBr ZXJuZWwKKyAqIGRyaXZlciwgb3IgZXF1aXZhbGVudCkuICBTbyBpZiB0aGUgZXZlbnQgY2hhbm5l bCBpcyBzaWduYWxlZCBhZ2FpbgorICogYWZ0ZXIgaXQgaXMgcmV0dXJuZWQgaGVyZSwgaXQgd2ls bCBiZSBxdWV1ZWQgdXAsIGFuZCBkZWxpdmVyZWQKKyAqIGFnYWluIGFmdGVyIHlvdSB1bm1hc2sg aXQuICAoU2VlIHRoZSBkb2N1bWVudGF0aW9uIGluIHRoZSBYZW4KKyAqIHB1YmxpYyBoZWFkZXIg ZXZlbnRfY2hhbm5lbC5oLikKKyAqCisgKiBPbiByZWNlaXZpbmcgdGhlIG5vdGlmaWNhdGlvbiBm cm9tIHhlbmV2dGNobl9wZW5kaW5nLCB5b3Ugc2hvdWxkCisgKiBub3JtYWxseTogY2hlY2sgKGJ5 IG90aGVyIG1lYW5zKSB3aGF0IHdvcmsgbmVlZHMgZG9pbmc7IGRvIHRoZQorICogbmVjZXNzYXJ5 IHdvcmsgKGlmIGFueSk7IHVubWFzayB0aGUgZXZlbnQgY2hhbm5lbCB3aXRoCisgKiB4ZW5ldnRj aG5fdW5tYXNrIChpZiB5b3Ugd2FudCB0byByZWNlaXZlIGFueSBmdXJ0aGVyCisgKiBub3RpZmlj YXRpb25zKS4KKyAqLworZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdAoreGVuZXZ0Y2huX3BlbmRpbmco eGVuZXZ0Y2huX2hhbmRsZSAqeGNlKTsKKworLyoKKyAqIFVubWFzayB0aGUgZ2l2ZW4gZXZlbnQg Y2hhbm5lbC4gUmV0dXJucyAtMSBvbiBmYWlsdXJlLCBpbiB3aGljaCBjYXNlIGVycm5vCisgKiB3 aWxsIGJlIHNldCBhcHByb3ByaWF0ZWx5LgorICovCitpbnQgeGVuZXZ0Y2huX3VubWFzayh4ZW5l dnRjaG5faGFuZGxlICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCk7CisKKyNlbmRpZgorCisvKgor ICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgor ICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9k ZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnMvZXZ0Y2huL2xpYnhl bmV2dGNobi5tYXAgYi90b29scy9saWJzL2V2dGNobi9saWJ4ZW5ldnRjaG4ubWFwCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0Mzc5NDAKLS0tIC9kZXYvbnVsbAorKysgYi90 b29scy9saWJzL2V2dGNobi9saWJ4ZW5ldnRjaG4ubWFwCkBAIC0wLDAgKzEsMTQgQEAKK1ZFUlNf MS4wIHsKKwlnbG9iYWw6CisJCXhlbmV2dGNobl9mZDsKKwkJeGVuZXZ0Y2huX2JpbmRfdW5ib3Vu ZF9wb3J0OworCQl4ZW5ldnRjaG5fdW5iaW5kOworCQl4ZW5ldnRjaG5fdW5tYXNrOworCQl4ZW5l dnRjaG5fbm90aWZ5OworCQl4ZW5ldnRjaG5fYmluZF9pbnRlcmRvbWFpbjsKKwkJeGVuZXZ0Y2hu X2JpbmRfdmlycTsKKwkJeGVuZXZ0Y2huX29wZW47CisJCXhlbmV2dGNobl9jbG9zZTsKKwkJeGVu ZXZ0Y2huX3BlbmRpbmc7CisJbG9jYWw6ICo7IC8qIERvIG5vdCBleHBvc2UgYW55dGhpbmcgYnkg ZGVmYXVsdCAqLworfTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnMvZXZ0Y2huL2xpbnV4LmMgYi90 b29scy9saWJzL2V2dGNobi9saW51eC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjI3ZmQ2ZTkKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy9saWJzL2V2dGNobi9saW51eC5j CkBAIC0wLDAgKzEsMTM2IEBACisvKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsKKyAqIHZlcnNpb24gMi4xIG9m IHRoZSBMaWNlbnNlLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBM ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ dWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqCisgKiBTcGxpdCBvdXQgZnJvbSB4Y19s aW51c19vc2RlcC5jOgorICoKKyAqIENvcHlyaWdodCAyMDA2IFN1biBNaWNyb3N5c3RlbXMsIElu Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKworI2luY2x1ZGUgPGVycm5vLmg+CisjaW5j bHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4K KworI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorCisjaW5jbHVkZSA8eGVuL3N5cy9ldnRjaG4uaD4K KworI2luY2x1ZGUgInByaXZhdGUuaCIKKworaW50IG9zZGVwX2V2dGNobl9vcGVuKHhlbmV2dGNo bl9oYW5kbGUgKnhjZSkKK3sKKyAgICBpbnQgZmQgPSBvcGVuKCIvZGV2L3hlbi9ldnRjaG4iLCBP X1JEV1IpOworICAgIGlmICggZmQgPT0gLTEgKQorICAgICAgICByZXR1cm4gLTE7CisgICAgeGNl LT5mZCA9IGZkOworICAgIHJldHVybiAwOworfQorCitpbnQgb3NkZXBfZXZ0Y2huX2Nsb3NlKHhl bmV2dGNobl9oYW5kbGUgKnhjZSkKK3sKKyAgICBpZiAoIHhjZS0+ZmQgPT0gLTEgKQorICAgICAg ICByZXR1cm4gMDsKKworICAgIHJldHVybiBjbG9zZSh4Y2UtPmZkKTsKK30KKworaW50IHhlbmV2 dGNobl9mZCh4ZW5ldnRjaG5faGFuZGxlICp4Y2UpCit7CisgICAgcmV0dXJuIHhjZS0+ZmQ7Cit9 CisKK2ludCB4ZW5ldnRjaG5fbm90aWZ5KHhlbmV2dGNobl9oYW5kbGUgKnhjZSwgZXZ0Y2huX3Bv cnRfdCBwb3J0KQoreworICAgIGludCBmZCA9IHhjZS0+ZmQ7CisgICAgc3RydWN0IGlvY3RsX2V2 dGNobl9ub3RpZnkgbm90aWZ5OworCisgICAgbm90aWZ5LnBvcnQgPSBwb3J0OworCisgICAgcmV0 dXJuIGlvY3RsKGZkLCBJT0NUTF9FVlRDSE5fTk9USUZZLCAmbm90aWZ5KTsKK30KKworZXZ0Y2hu X3BvcnRfb3JfZXJyb3JfdCB4ZW5ldnRjaG5fYmluZF91bmJvdW5kX3BvcnQoeGVuZXZ0Y2huX2hh bmRsZSAqeGNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50IGRvbWlkKQoreworICAgIGludCBmZCA9IHhjZS0+ZmQ7CisgICAgc3RydWN0IGlv Y3RsX2V2dGNobl9iaW5kX3VuYm91bmRfcG9ydCBiaW5kOworCisgICAgYmluZC5yZW1vdGVfZG9t YWluID0gZG9taWQ7CisKKyAgICByZXR1cm4gaW9jdGwoZmQsIElPQ1RMX0VWVENITl9CSU5EX1VO Qk9VTkRfUE9SVCwgJmJpbmQpOworfQorCitldnRjaG5fcG9ydF9vcl9lcnJvcl90IHhlbmV2dGNo bl9iaW5kX2ludGVyZG9tYWluKHhlbmV2dGNobl9oYW5kbGUgKnhjZSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRvbWlkLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldnRjaG5fcG9ydF90IHJl bW90ZV9wb3J0KQoreworICAgIGludCBmZCA9IHhjZS0+ZmQ7CisgICAgc3RydWN0IGlvY3RsX2V2 dGNobl9iaW5kX2ludGVyZG9tYWluIGJpbmQ7CisKKyAgICBiaW5kLnJlbW90ZV9kb21haW4gPSBk b21pZDsKKyAgICBiaW5kLnJlbW90ZV9wb3J0ID0gcmVtb3RlX3BvcnQ7CisKKyAgICByZXR1cm4g aW9jdGwoZmQsIElPQ1RMX0VWVENITl9CSU5EX0lOVEVSRE9NQUlOLCAmYmluZCk7Cit9CisKK2V2 dGNobl9wb3J0X29yX2Vycm9yX3QgeGVuZXZ0Y2huX2JpbmRfdmlycSh4ZW5ldnRjaG5faGFuZGxl ICp4Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgaW50IHZpcnEpCit7CisgICAgaW50IGZkID0geGNlLT5mZDsKKyAgICBzdHJ1Y3QgaW9jdGxf ZXZ0Y2huX2JpbmRfdmlycSBiaW5kOworCisgICAgYmluZC52aXJxID0gdmlycTsKKworICAgIHJl dHVybiBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX0JJTkRfVklSUSwgJmJpbmQpOworfQorCitpbnQg eGVuZXZ0Y2huX3VuYmluZCh4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9y dCkKK3sKKyAgICBpbnQgZmQgPSB4Y2UtPmZkOworICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fdW5i aW5kIHVuYmluZDsKKworICAgIHVuYmluZC5wb3J0ID0gcG9ydDsKKworICAgIHJldHVybiBpb2N0 bChmZCwgSU9DVExfRVZUQ0hOX1VOQklORCwgJnVuYmluZCk7Cit9CisKK2V2dGNobl9wb3J0X29y X2Vycm9yX3QgeGVuZXZ0Y2huX3BlbmRpbmcoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlKQoreworICAg IGludCBmZCA9IHhjZS0+ZmQ7CisgICAgZXZ0Y2huX3BvcnRfdCBwb3J0OworCisgICAgaWYgKCBy ZWFkKGZkLCAmcG9ydCwgc2l6ZW9mKHBvcnQpKSAhPSBzaXplb2YocG9ydCkgKQorICAgICAgICBy ZXR1cm4gLTE7CisKKyAgICByZXR1cm4gcG9ydDsKK30KKworaW50IHhlbmV2dGNobl91bm1hc2so eGVuZXZ0Y2huX2hhbmRsZSAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQpCit7CisgICAgaW50IGZk ID0geGNlLT5mZDsKKworICAgIGlmICggd3JpdGUoZmQsICZwb3J0LCBzaXplb2YocG9ydCkpICE9 IHNpemVvZihwb3J0KSApCisgICAgICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gMDsKK30KKwor LyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJT RCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJz LW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS90b29scy9saWJzL2V2dGNobi9t aW5pb3MuYyBiL3Rvb2xzL2xpYnMvZXZ0Y2huL21pbmlvcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLmZiOTEzYTIKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy9saWJzL2V2 dGNobi9taW5pb3MuYwpAQCAtMCwwICsxLDI2OSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor ICoKKyAqIENvcHlyaWdodCAyMDA3LTIwMDggU2FtdWVsIFRoaWJhdWx0IDxzYW11ZWwudGhpYmF1 bHRAZXUuY2l0cml4LmNvbT4uCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogVXNlIGlzIHN1 YmplY3QgdG8gbGljZW5zZSB0ZXJtcy4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOworICogdmVyc2lvbiAy LjEgb2YgdGhlIExpY2Vuc2UuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK KyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5l cmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICoKKyAqIFNwbGl0IG9mZiBmcm9t IHhjX21pbmlvcy5jCisgKi8KKworI2luY2x1ZGUgInhlbi1leHRlcm5hbC9ic2Qtc3lzLXF1ZXVl LmgiCisjaW5jbHVkZSA8bWluaS1vcy90eXBlcy5oPgorI2luY2x1ZGUgPG1pbmktb3Mvb3MuaD4K KyNpbmNsdWRlIDxtaW5pLW9zL2xpYi5oPgorI2luY2x1ZGUgPG1pbmktb3MvZXZlbnRzLmg+Cisj aW5jbHVkZSA8bWluaS1vcy93YWl0Lmg+CisKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisKKyNp bmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGZjbnRsLmg+ CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxpbnR0 eXBlcy5oPgorI2luY2x1ZGUgPG1hbGxvYy5oPgorCisjaW5jbHVkZSAicHJpdmF0ZS5oIgorCitl eHRlcm4gdm9pZCBtaW5pb3NfZXZ0Y2huX2Nsb3NlX2ZkKGludCBmZCk7CisKK2V4dGVybiBzdHJ1 Y3Qgd2FpdF9xdWV1ZV9oZWFkIGV2ZW50X3F1ZXVlOworCisvL3ZvaWQgbWluaW9zX2V2dGNobl9j bG9zZV9mZChpbnQgZmQpOworCisvKiBYWFggTm90ZTogVGhpcyBpcyBub3QgdGhyZWFkc2FmZSAq Lworc3RhdGljIHN0cnVjdCBldnRjaG5fcG9ydF9pbmZvKiBwb3J0X2FsbG9jKGludCBmZCkgewor ICAgIHN0cnVjdCBldnRjaG5fcG9ydF9pbmZvICpwb3J0X2luZm87CisgICAgcG9ydF9pbmZvID0g bWFsbG9jKHNpemVvZihzdHJ1Y3QgZXZ0Y2huX3BvcnRfaW5mbykpOworICAgIGlmIChwb3J0X2lu Zm8gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcG9ydF9pbmZvLT5wZW5kaW5n ID0gMDsKKyAgICBwb3J0X2luZm8tPnBvcnQgPSAtMTsKKyAgICBwb3J0X2luZm8tPmJvdW5kID0g MDsKKworICAgIExJU1RfSU5TRVJUX0hFQUQoJmZpbGVzW2ZkXS5ldnRjaG4ucG9ydHMsIHBvcnRf aW5mbywgbGlzdCk7CisgICAgcmV0dXJuIHBvcnRfaW5mbzsKK30KKworc3RhdGljIHZvaWQgcG9y dF9kZWFsbG9jKHN0cnVjdCBldnRjaG5fcG9ydF9pbmZvICpwb3J0X2luZm8pIHsKKyAgICBpZiAo cG9ydF9pbmZvLT5ib3VuZCkKKyAgICAgICAgdW5iaW5kX2V2dGNobihwb3J0X2luZm8tPnBvcnQp OworICAgIExJU1RfUkVNT1ZFKHBvcnRfaW5mbywgbGlzdCk7CisgICAgZnJlZShwb3J0X2luZm8p OworfQorCitpbnQgb3NkZXBfZXZ0Y2huX29wZW4oeGVuZXZ0Y2huX2hhbmRsZSAqeGNlKQorewor ICAgIGludCBmZCA9IGFsbG9jX2ZkKEZUWVBFX0VWVENITik7CisgICAgaWYgKCBmZCA9PSAtMSAp CisgICAgICAgIHJldHVybiAtMTsKKyAgICBMSVNUX0lOSVQoJmZpbGVzW2ZkXS5ldnRjaG4ucG9y dHMpOworICAgIHhjZS0+ZmQgPSBmZDsKKyAgICBwcmludGYoImV2dGNobl9vcGVuKCkgLT4gJWRc biIsIGZkKTsKKyAgICByZXR1cm4gMDsKK30KKworaW50IG9zZGVwX2V2dGNobl9jbG9zZSh4ZW5l dnRjaG5faGFuZGxlICp4Y2UpCit7CisgICAgaWYgKCB4Y2UtPmZkID09IC0xICkKKyAgICAgICAg cmV0dXJuIDA7CisKKyAgICByZXR1cm4gY2xvc2UoeGNlLT5mZCk7Cit9CisKK3ZvaWQgbWluaW9z X2V2dGNobl9jbG9zZV9mZChpbnQgZmQpCit7CisgICAgc3RydWN0IGV2dGNobl9wb3J0X2luZm8g KnBvcnRfaW5mbywgKnRtcDsKKyAgICBMSVNUX0ZPUkVBQ0hfU0FGRShwb3J0X2luZm8sICZmaWxl c1tmZF0uZXZ0Y2huLnBvcnRzLCBsaXN0LCB0bXApCisgICAgICAgIHBvcnRfZGVhbGxvYyhwb3J0 X2luZm8pOworCisgICAgZmlsZXNbZmRdLnR5cGUgPSBGVFlQRV9OT05FOworfQorCitpbnQgeGVu ZXZ0Y2huX2ZkKHhlbmV2dGNobl9oYW5kbGUgKnhjZSkKK3sKKyAgICByZXR1cm4geGNlLT5mZDsK K30KKworaW50IHhlbmV2dGNobl9ub3RpZnkoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLCBldnRjaG5f cG9ydF90IHBvcnQpCit7CisgICAgaW50IHJldDsKKworICAgIHJldCA9IG5vdGlmeV9yZW1vdGVf dmlhX2V2dGNobihwb3J0KTsKKworICAgIGlmIChyZXQgPCAwKSB7CisJZXJybm8gPSAtcmV0Owor CXJldCA9IC0xOworICAgIH0KKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBldnRj aG5faGFuZGxlcihldnRjaG5fcG9ydF90IHBvcnQsIHN0cnVjdCBwdF9yZWdzICpyZWdzLCB2b2lk ICpkYXRhKQoreworICAgIGludCBmZCA9IChpbnQpKGludHB0cl90KWRhdGE7CisgICAgc3RydWN0 IGV2dGNobl9wb3J0X2luZm8gKnBvcnRfaW5mbzsKKyAgICBhc3NlcnQoZmlsZXNbZmRdLnR5cGUg PT0gRlRZUEVfRVZUQ0hOKTsKKyAgICBtYXNrX2V2dGNobihwb3J0KTsKKyAgICBMSVNUX0ZPUkVB Q0gocG9ydF9pbmZvLCAmZmlsZXNbZmRdLmV2dGNobi5wb3J0cywgbGlzdCkgeworICAgICAgICBp ZiAocG9ydF9pbmZvLT5wb3J0ID09IHBvcnQpCisgICAgICAgICAgICBnb3RvIGZvdW5kOworICAg IH0KKyAgICBwcmludGsoIlVua25vd24gcG9ydCBmb3IgaGFuZGxlICVkXG4iLCBmZCk7CisgICAg cmV0dXJuOworCisgZm91bmQ6CisgICAgcG9ydF9pbmZvLT5wZW5kaW5nID0gMTsKKyAgICBmaWxl c1tmZF0ucmVhZCA9IDE7CisgICAgd2FrZV91cCgmZXZlbnRfcXVldWUpOworfQorCitldnRjaG5f cG9ydF9vcl9lcnJvcl90IHhlbmV2dGNobl9iaW5kX3VuYm91bmRfcG9ydCh4ZW5ldnRjaG5faGFu ZGxlICp4Y2UsIGludCBkb21pZCkKK3sKKyAgICBpbnQgZmQgPSB4Y2UtPmZkOworICAgIHN0cnVj dCBldnRjaG5fcG9ydF9pbmZvICpwb3J0X2luZm87CisgICAgaW50IHJldDsKKyAgICBldnRjaG5f cG9ydF90IHBvcnQ7CisKKyAgICBhc3NlcnQoZ2V0X2N1cnJlbnQoKSA9PSBtYWluX3RocmVhZCk7 CisgICAgcG9ydF9pbmZvID0gcG9ydF9hbGxvYyhmZCk7CisgICAgaWYgKHBvcnRfaW5mbyA9PSBO VUxMKQorCXJldHVybiAtMTsKKworICAgIHByaW50ZigieGVuZXZ0Y2huX2JpbmRfdW5ib3VuZF9w b3J0KCVkKSIsIGRvbWlkKTsKKyAgICByZXQgPSBldnRjaG5fYWxsb2NfdW5ib3VuZChkb21pZCwg ZXZ0Y2huX2hhbmRsZXIsICh2b2lkKikoaW50cHRyX3QpZmQsICZwb3J0KTsKKyAgICBwcmludGYo IiA9ICVkXG4iLCByZXQpOworCisgICAgaWYgKHJldCA8IDApIHsKKwlwb3J0X2RlYWxsb2MocG9y dF9pbmZvKTsKKwllcnJubyA9IC1yZXQ7CisJcmV0dXJuIC0xOworICAgIH0KKyAgICBwb3J0X2lu Zm8tPmJvdW5kID0gMTsKKyAgICBwb3J0X2luZm8tPnBvcnQgPSBwb3J0OworICAgIHVubWFza19l dnRjaG4ocG9ydCk7CisgICAgcmV0dXJuIHBvcnQ7Cit9CisKK2V2dGNobl9wb3J0X29yX2Vycm9y X3QgeGVuZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4oeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLCBpbnQg ZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGV2dGNobl9wb3J0X3QgcmVtb3RlX3BvcnQpCit7CisgICAgaW50IGZkID0geGNlLT5mZDsKKyAg ICBzdHJ1Y3QgZXZ0Y2huX3BvcnRfaW5mbyAqcG9ydF9pbmZvOworICAgIGV2dGNobl9wb3J0X3Qg bG9jYWxfcG9ydDsKKyAgICBpbnQgcmV0OworCisgICAgYXNzZXJ0KGdldF9jdXJyZW50KCkgPT0g bWFpbl90aHJlYWQpOworICAgIHBvcnRfaW5mbyA9IHBvcnRfYWxsb2MoZmQpOworICAgIGlmIChw b3J0X2luZm8gPT0gTlVMTCkKKwlyZXR1cm4gLTE7CisKKyAgICBwcmludGYoInhlbmV2dGNobl9i aW5kX2ludGVyZG9tYWluKCVkLCAlIlBSSWQzMiIpIiwgZG9taWQsIHJlbW90ZV9wb3J0KTsKKyAg ICByZXQgPSBldnRjaG5fYmluZF9pbnRlcmRvbWFpbihkb21pZCwgcmVtb3RlX3BvcnQsIGV2dGNo bl9oYW5kbGVyLCAodm9pZCopKGludHB0cl90KWZkLCAmbG9jYWxfcG9ydCk7CisgICAgcHJpbnRm KCIgPSAlZFxuIiwgcmV0KTsKKworICAgIGlmIChyZXQgPCAwKSB7CisJcG9ydF9kZWFsbG9jKHBv cnRfaW5mbyk7CisJZXJybm8gPSAtcmV0OworCXJldHVybiAtMTsKKyAgICB9CisgICAgcG9ydF9p bmZvLT5ib3VuZCA9IDE7CisgICAgcG9ydF9pbmZvLT5wb3J0ID0gbG9jYWxfcG9ydDsKKyAgICB1 bm1hc2tfZXZ0Y2huKGxvY2FsX3BvcnQpOworICAgIHJldHVybiBsb2NhbF9wb3J0OworfQorCitp bnQgeGVuZXZ0Y2huX3VuYmluZCh4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIGV2dGNobl9wb3J0X3Qg cG9ydCkKK3sKKyAgICBpbnQgZmQgPSB4Y2UtPmZkOworICAgIHN0cnVjdCBldnRjaG5fcG9ydF9p bmZvICpwb3J0X2luZm87CisKKyAgICBMSVNUX0ZPUkVBQ0gocG9ydF9pbmZvLCAmZmlsZXNbZmRd LmV2dGNobi5wb3J0cywgbGlzdCkgeworICAgICAgICBpZiAocG9ydF9pbmZvLT5wb3J0ID09IHBv cnQpIHsKKyAgICAgICAgICAgIHBvcnRfZGVhbGxvYyhwb3J0X2luZm8pOworICAgICAgICAgICAg cmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisgICAgcHJpbnRmKCJXYXJuaW5nOiBjb3VsZG4n dCBmaW5kIHBvcnQgJSJQUklkMzIiIGZvciB4YyBoYW5kbGUgJXhcbiIsIHBvcnQsIGZkKTsKKyAg ICBlcnJubyA9IEVJTlZBTDsKKyAgICByZXR1cm4gLTE7Cit9CisKK2V2dGNobl9wb3J0X29yX2Vy cm9yX3QgeGVuZXZ0Y2huX2JpbmRfdmlycSh4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIHVuc2lnbmVk IGludCB2aXJxKQoreworICAgIGludCBmZCA9IHhjZS0+ZmQ7CisgICAgc3RydWN0IGV2dGNobl9w b3J0X2luZm8gKnBvcnRfaW5mbzsKKyAgICBldnRjaG5fcG9ydF90IHBvcnQ7CisKKyAgICBhc3Nl cnQoZ2V0X2N1cnJlbnQoKSA9PSBtYWluX3RocmVhZCk7CisgICAgcG9ydF9pbmZvID0gcG9ydF9h bGxvYyhmZCk7CisgICAgaWYgKHBvcnRfaW5mbyA9PSBOVUxMKQorCXJldHVybiAtMTsKKworICAg IHByaW50ZigieGVuZXZ0Y2huX2JpbmRfdmlycSglZCkiLCB2aXJxKTsKKyAgICBwb3J0ID0gYmlu ZF92aXJxKHZpcnEsIGV2dGNobl9oYW5kbGVyLCAodm9pZCopKGludHB0cl90KWZkKTsKKworICAg IGlmIChwb3J0IDwgMCkgeworCXBvcnRfZGVhbGxvYyhwb3J0X2luZm8pOworCWVycm5vID0gLXBv cnQ7CisJcmV0dXJuIC0xOworICAgIH0KKyAgICBwb3J0X2luZm8tPmJvdW5kID0gMTsKKyAgICBw b3J0X2luZm8tPnBvcnQgPSBwb3J0OworICAgIHVubWFza19ldnRjaG4ocG9ydCk7CisgICAgcmV0 dXJuIHBvcnQ7Cit9CisKK2V2dGNobl9wb3J0X29yX2Vycm9yX3QgeGVuZXZ0Y2huX3BlbmRpbmco eGVuZXZ0Y2huX2hhbmRsZSAqeGNlKQoreworICAgIGludCBmZCA9IHhjZS0+ZmQ7CisgICAgc3Ry dWN0IGV2dGNobl9wb3J0X2luZm8gKnBvcnRfaW5mbzsKKyAgICB1bnNpZ25lZCBsb25nIGZsYWdz OworICAgIGV2dGNobl9wb3J0X3QgcmV0ID0gLTE7CisKKyAgICBsb2NhbF9pcnFfc2F2ZShmbGFn cyk7CisgICAgZmlsZXNbZmRdLnJlYWQgPSAwOworCisgICAgTElTVF9GT1JFQUNIKHBvcnRfaW5m bywgJmZpbGVzW2ZkXS5ldnRjaG4ucG9ydHMsIGxpc3QpIHsKKyAgICAgICAgaWYgKHBvcnRfaW5m by0+cG9ydCAhPSAtMSAmJiBwb3J0X2luZm8tPnBlbmRpbmcpIHsKKyAgICAgICAgICAgIGlmIChy ZXQgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICByZXQgPSBwb3J0X2luZm8tPnBvcnQ7CisgICAg ICAgICAgICAgICAgcG9ydF9pbmZvLT5wZW5kaW5nID0gMDsKKyAgICAgICAgICAgIH0gZWxzZSB7 CisgICAgICAgICAgICAgICAgZmlsZXNbZmRdLnJlYWQgPSAxOworICAgICAgICAgICAgICAgIGJy ZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGxvY2FsX2lycV9yZXN0 b3JlKGZsYWdzKTsKKyAgICByZXR1cm4gcmV0OworfQorCitpbnQgeGVuZXZ0Y2huX3VubWFzayh4 ZW5ldnRjaG5faGFuZGxlICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCkKK3sKKyAgICB1bm1hc2tf ZXZ0Y2huKHBvcnQpOworICAgIHJldHVybiAwOworfQorCisvKgorICogTG9jYWwgdmFyaWFibGVz OgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6 IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6Cisg Ki8KZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnMvZXZ0Y2huL25ldGJzZC5jIGIvdG9vbHMvbGlicy9l dnRjaG4vbmV0YnNkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQxMjNm ZQotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL2xpYnMvZXZ0Y2huL25ldGJzZC5jCkBAIC0wLDAg KzEsMTQ3IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogQ29weXJpZ2h0IDIwMDYg U3VuIE1pY3Jvc3lzdGVtcywgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBpcyBz dWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsKKyAqIHZlcnNpb24g Mi4xIG9mIHRoZSBMaWNlbnNlLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V CisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqCisgKiBTcGxpdCBvdXQgZnJv bSB4Y19uZXRic2QuYworICovCisKKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHVuaXN0 ZC5oPgorCisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisKKyNpbmNsdWRlIDx4ZW4vc3lzL2V2dGNo bi5oPgorCisjaW5jbHVkZSAicHJpdmF0ZS5oIgorCisjZGVmaW5lIEVWVENITl9ERVZfTkFNRSAg Ii9kZXYveGVuZXZ0IgorCitpbnQgb3NkZXBfZXZ0Y2huX29wZW4oeGVuZXZ0Y2huX2hhbmRsZSAq eGNlKQoreworICAgIGludCBmZCA9IG9wZW4oRVZUQ0hOX0RFVl9OQU1FLCBPX05PTkJMT0NLfE9f UkRXUik7CisgICAgaWYgKCBmZCA9PSAtMSApCisgICAgICAgIHJldHVybiAtMTsKKyAgICB4Y2Ut PmZkID0gZmQ7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBvc2RlcF9ldnRjaG5fY2xvc2UoeGVu ZXZ0Y2huX2hhbmRsZSAqeGNlKQoreworICAgIGlmICggeGNlLT5mZCA9PSAtMSApCisgICAgICAg IHJldHVybiAwOworCisgICAgcmV0dXJuIGNsb3NlKHhjZS0+ZmQpOworfQorCitpbnQgeGVuZXZ0 Y2huX2ZkKHhlbmV2dGNobl9oYW5kbGUgKnhjZSkKK3sKKyAgICByZXR1cm4geGNlLT5mZDsKK30K KworaW50IHhlbmV2dGNobl9ub3RpZnkoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLCBldnRjaG5fcG9y dF90IHBvcnQpCit7CisgICAgaW50IGZkID0geGNlLT5mZDsKKyAgICBzdHJ1Y3QgaW9jdGxfZXZ0 Y2huX25vdGlmeSBub3RpZnk7CisKKyAgICBub3RpZnkucG9ydCA9IHBvcnQ7CisKKyAgICByZXR1 cm4gaW9jdGwoZmQsIElPQ1RMX0VWVENITl9OT1RJRlksICZub3RpZnkpOworfQorCitldnRjaG5f cG9ydF9vcl9lcnJvcl90IHhlbmV2dGNobl9iaW5kX3VuYm91bmRfcG9ydCh4ZW5ldnRjaG5faGFu ZGxlICogeGNlLCBpbnQgZG9taWQpCit7CisgICAgaW50IGZkID0geGNlLT5mZDsKKyAgICBzdHJ1 Y3QgaW9jdGxfZXZ0Y2huX2JpbmRfdW5ib3VuZF9wb3J0IGJpbmQ7CisgICAgaW50IHJldDsKKwor ICAgIGJpbmQucmVtb3RlX2RvbWFpbiA9IGRvbWlkOworCisgICAgcmV0ID0gaW9jdGwoZmQsIElP Q1RMX0VWVENITl9CSU5EX1VOQk9VTkRfUE9SVCwgJmJpbmQpOworICAgIGlmIChyZXQgPT0gMCkK KwlyZXR1cm4gYmluZC5wb3J0OworICAgIGVsc2UKKwlyZXR1cm4gLTE7Cit9CisKK2V2dGNobl9w b3J0X29yX2Vycm9yX3QgeGVuZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4oeGVuZXZ0Y2huX2hhbmRs ZSAqeGNlLCBpbnQgZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGV2dGNobl9wb3J0X3QgcmVtb3RlX3BvcnQpCit7CisgICAgaW50IGZkID0g eGNlLT5mZDsKKyAgICBzdHJ1Y3QgaW9jdGxfZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4gYmluZDsK KyAgICBpbnQgcmV0OworCisgICAgYmluZC5yZW1vdGVfZG9tYWluID0gZG9taWQ7CisgICAgYmlu ZC5yZW1vdGVfcG9ydCA9IHJlbW90ZV9wb3J0OworCisgICAgcmV0ID0gaW9jdGwoZmQsIElPQ1RM X0VWVENITl9CSU5EX0lOVEVSRE9NQUlOLCAmYmluZCk7CisgICAgaWYgKHJldCA9PSAwKQorCXJl dHVybiBiaW5kLnBvcnQ7CisgICAgZWxzZQorCXJldHVybiAtMTsKK30KKworaW50IHhlbmV2dGNo bl91bmJpbmQoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQpCit7Cisg ICAgaW50IGZkID0geGNlLT5mZDsKKyAgICBzdHJ1Y3QgaW9jdGxfZXZ0Y2huX3VuYmluZCB1bmJp bmQ7CisKKyAgICB1bmJpbmQucG9ydCA9IHBvcnQ7CisKKyAgICByZXR1cm4gaW9jdGwoZmQsIElP Q1RMX0VWVENITl9VTkJJTkQsICZ1bmJpbmQpOworfQorCitldnRjaG5fcG9ydF9vcl9lcnJvcl90 IHhlbmV2dGNobl9iaW5kX3ZpcnEoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLCB1bnNpZ25lZCBpbnQg dmlycSkKK3sKKyAgICBpbnQgZmQgPSB4Y2UtPmZkOworICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5f YmluZF92aXJxIGJpbmQ7CisgICAgaW50IGVycjsKKworICAgIGJpbmQudmlycSA9IHZpcnE7CisK KyAgICBlcnIgPSBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX0JJTkRfVklSUSwgJmJpbmQpOworICAg IGlmIChlcnIpCisJcmV0dXJuIC0xOworICAgIGVsc2UKKwlyZXR1cm4gYmluZC5wb3J0OworfQor CitldnRjaG5fcG9ydF9vcl9lcnJvcl90IHhlbmV2dGNobl9wZW5kaW5nKHhlbmV2dGNobl9oYW5k bGUgKnhjZSkKK3sKKyAgICBpbnQgZmQgPSB4Y2UtPmZkOworICAgIGV2dGNobl9wb3J0X3QgcG9y dDsKKworICAgIGlmICggcmVhZF9leGFjdChmZCwgKGNoYXIgKikmcG9ydCwgc2l6ZW9mKHBvcnQp KSA9PSAtMSApCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHJldHVybiBwb3J0OworfQorCitp bnQgeGVuZXZ0Y2huX3VubWFzayh4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIGV2dGNobl9wb3J0X3Qg cG9ydCkKK3sKKyAgICBpbnQgZmQgPSB4Y2UtPmZkOworICAgIHJldHVybiB3cml0ZV9leGFjdChm ZCwgKGNoYXIgKikmcG9ydCwgc2l6ZW9mKHBvcnQpKTsKK30KKworLyoKKyAqIExvY2FsIHZhcmlh YmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zm c2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5k OgorICovCmRpZmYgLS1naXQgYS90b29scy9saWJzL2V2dGNobi9wcml2YXRlLmggYi90b29scy9s aWJzL2V2dGNobi9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u ZmNkMGU5NgotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL2xpYnMvZXZ0Y2huL3ByaXZhdGUuaApA QCAtMCwwICsxLDI1IEBACisjaWZuZGVmIFhFTkVWVENITl9QUklWQVRFX0gKKyNkZWZpbmUgWEVO RVZUQ0hOX1BSSVZBVEVfSAorCisjaW5jbHVkZSA8eGVudG9vbGxvZy5oPgorI2luY2x1ZGUgPHhl bmV2dGNobi5oPgorCitzdHJ1Y3QgeGVuZXZ0Y2huX2hhbmRsZSB7CisgICAgeGVudG9vbGxvZ19s b2dnZXIgKmxvZ2dlciwgKmxvZ2dlcl90b2ZyZWU7CisgICAgaW50IGZkOworfTsKKworaW50IG9z ZGVwX2V2dGNobl9vcGVuKHhlbmV2dGNobl9oYW5kbGUgKnhjZSk7CitpbnQgb3NkZXBfZXZ0Y2hu X2Nsb3NlKHhlbmV2dGNobl9oYW5kbGUgKnhjZSk7CisKKyNlbmRpZgorCisvKgorICogTG9jYWwg dmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNp Yy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisg KiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnMvZXZ0Y2huL3NvbGFyaXMuYyBiL3Rv b2xzL2xpYnMvZXZ0Y2huL3NvbGFyaXMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi4xMTRjZWZiCi0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvbGlicy9ldnRjaG4vc29sYXJp cy5jCkBAIC0wLDAgKzEsMTM1IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogQ29w eXJpZ2h0IDIwMDYgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K KyAqIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMuCisgKgorICogVGhpcyBsaWJyYXJ5 IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsK KyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJh cnk7IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqCisgKiBT cGxpdCBvdXQgZnJvbSB4Y19zb2xhcmlzLmMKKyAqLworCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNp bmNsdWRlIDx1bmlzdGQuaD4KKworI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorCisjaW5jbHVkZSA8 eGVuL3N5cy9ldnRjaG4uaD4KKworI2luY2x1ZGUgInByaXZhdGUuaCIKKworaW50IG9zZGVwX2V2 dGNobl9vcGVuKHhlbmV2dGNobl9oYW5kbGUgKnhjZSkKK3sKKyAgICBpbnQgZmQ7CisKKyAgICBp ZiAoIChmZCA9IG9wZW4oIi9kZXYveGVuL2V2dGNobiIsIE9fUkRXUikpID09IC0xICkKKyAgICB7 CisgICAgICAgIFBFUlJPUigiQ291bGQgbm90IG9wZW4gZXZlbnQgY2hhbm5lbCBpbnRlcmZhY2Ui KTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHhjZS0+ZmQgPSBmZDsKKyAgICBy ZXR1cm4gMDsKK30KKworaW50IG9zZGVwX2V2dGNobl9jbG9zZSh4ZW5ldnRjaG5faGFuZGxlICp4 Y2UpCit7CisgICAgaWYgKCB4Y2UtPmZkID09IC0xICkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg ICByZXR1cm4gY2xvc2UoeGNlLT5mZCk7Cit9CisKK2ludCB4ZW5ldnRjaG5fZmQoeGVuZXZ0Y2hu X2hhbmRsZSAqeGNlKQoreworICAgIHJldHVybiB4Y2UtPmZkOworfQorCitpbnQgeGVuZXZ0Y2hu X25vdGlmeSh4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCkKK3sKKyAg ICBpbnQgZmQgPSB4Y2UtPmZkOworICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fbm90aWZ5IG5vdGlm eTsKKworICAgIG5vdGlmeS5wb3J0ID0gcG9ydDsKKworICAgIHJldHVybiBpb2N0bChmZCwgSU9D VExfRVZUQ0hOX05PVElGWSwgJm5vdGlmeSk7Cit9CisKK2V2dGNobl9wb3J0X29yX2Vycm9yX3Qg eGVuZXZ0Y2huX2JpbmRfdW5ib3VuZF9wb3J0KHhlbmV2dGNobl9oYW5kbGUgKnhjZSwgaW50IGRv bWlkKQoreworICAgIGludCBmZCA9IHhjZS0+ZmQ7CisgICAgc3RydWN0IGlvY3RsX2V2dGNobl9i aW5kX3VuYm91bmRfcG9ydCBiaW5kOworCisgICAgYmluZC5yZW1vdGVfZG9tYWluID0gZG9taWQ7 CisKKyAgICByZXR1cm4gaW9jdGwoZmQsIElPQ1RMX0VWVENITl9CSU5EX1VOQk9VTkRfUE9SVCwg JmJpbmQpOworfQorCitldnRjaG5fcG9ydF9vcl9lcnJvcl90IHhlbmV2dGNobl9iaW5kX2ludGVy ZG9tYWluKHhlbmV2dGNobl9oYW5kbGUgKnhjZSwgaW50IGRvbWlkLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldnRjaG5fcG9ydF90IHJlbW90ZV9w b3J0KQoreworICAgIGludCBmZCA9IHhjZS0+ZmQ7CisgICAgc3RydWN0IGlvY3RsX2V2dGNobl9i aW5kX2ludGVyZG9tYWluIGJpbmQ7CisKKyAgICBiaW5kLnJlbW90ZV9kb21haW4gPSBkb21pZDsK KyAgICBiaW5kLnJlbW90ZV9wb3J0ID0gcmVtb3RlX3BvcnQ7CisKKyAgICByZXR1cm4gaW9jdGwo ZmQsIElPQ1RMX0VWVENITl9CSU5EX0lOVEVSRE9NQUlOLCAmYmluZCk7Cit9CisKK2V2dGNobl9w b3J0X29yX2Vycm9yX3QgeGVuZXZ0Y2huX2JpbmRfdmlycSh4ZW5ldnRjaG5faGFuZGxlICp4Y2Us IHVuc2lnbmVkIGludCB2aXJxKQoreworICAgIGludCBmZCA9IHhjZS0+ZmQ7CisgICAgc3RydWN0 IGlvY3RsX2V2dGNobl9iaW5kX3ZpcnEgYmluZDsKKworICAgIGJpbmQudmlycSA9IHZpcnE7CisK KyAgICByZXR1cm4gaW9jdGwoZmQsIElPQ1RMX0VWVENITl9CSU5EX1ZJUlEsICZiaW5kKTsKK30K KworaW50IHhlbmV2dGNobl91bmJpbmQoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLCBldnRjaG5fcG9y dF90IHBvcnQpCit7CisgICAgaW50IGZkID0geGNlLT5mZDsKKyAgICBzdHJ1Y3QgaW9jdGxfZXZ0 Y2huX3VuYmluZCB1bmJpbmQ7CisKKyAgICB1bmJpbmQucG9ydCA9IHBvcnQ7CisKKyAgICByZXR1 cm4gaW9jdGwoZmQsIElPQ1RMX0VWVENITl9VTkJJTkQsICZ1bmJpbmQpOworfQorCitldnRjaG5f cG9ydF9vcl9lcnJvcl90IHhlbmV2dGNobl9wZW5kaW5nKHhlbmV2dGNobl9oYW5kbGUgKnhjZSkK K3sKKyAgICBpbnQgZmQgPSB4Y2UtPmZkOworICAgIGV2dGNobl9wb3J0X3QgcG9ydDsKKworICAg IGlmICggcmVhZF9leGFjdChmZCwgKGNoYXIgKikmcG9ydCwgc2l6ZW9mKHBvcnQpKSA9PSAtMSAp CisgICAgICAgIHJldHVybiAtMTsKKworICAgIHJldHVybiBwb3J0OworfQorCitpbnQgeGVuZXZ0 Y2huX3VubWFzayh4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCkKK3sK KyAgICBpbnQgZmQgPSB4Y2UtPmZkOworICAgIHJldHVybiB3cml0ZV9leGFjdChmZCwgKGNoYXIg KikmcG9ydCwgc2l6ZW9mKHBvcnQpKTsKK30KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAq IG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0Cisg KiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRp ZmYgLS1naXQgYS90b29scy9saWJzL3Rvb2xsb2cvaW5jbHVkZS94ZW50b29sbG9nLmggYi90b29s cy9saWJzL3Rvb2xsb2cvaW5jbHVkZS94ZW50b29sbG9nLmgKaW5kZXggODUzZTljNy4uNzZmMTdm ZSAxMDA2NDQKLS0tIGEvdG9vbHMvbGlicy90b29sbG9nL2luY2x1ZGUveGVudG9vbGxvZy5oCisr KyBiL3Rvb2xzL2xpYnMvdG9vbGxvZy9pbmNsdWRlL3hlbnRvb2xsb2cuaApAQCAtMTM0LDMgKzEz NCwxMyBAQCBjb25zdCBjaGFyICp4dGxfbGV2ZWxfdG9fc3RyaW5nKHhlbnRvb2xsb2dfbGV2ZWwp OyAvKiBuZXZlciBmYWlscyAqLwogCiAKICNlbmRpZiAvKiBYRU5UT09MTE9HX0ggKi8KKworLyoK KyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIK KyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1v ZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS90b29scy9saWJzL3Rvb2xsb2cveHRs X2NvcmUuYyBiL3Rvb2xzL2xpYnMvdG9vbGxvZy94dGxfY29yZS5jCmluZGV4IGM0NzI0YTAuLjA5 OWQyZjMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnMvdG9vbGxvZy94dGxfY29yZS5jCisrKyBiL3Rv b2xzL2xpYnMvdG9vbGxvZy94dGxfY29yZS5jCkBAIC04MSwzICs4MSwxMyBAQCB2b2lkIHh0bF9s b2dnZXJfZGVzdHJveShzdHJ1Y3QgeGVudG9vbGxvZ19sb2dnZXIgKmxvZ2dlcikgewogICAgIGlm ICghbG9nZ2VyKSByZXR1cm47CiAgICAgbG9nZ2VyLT5kZXN0cm95KGxvZ2dlcik7CiB9CisKKy8q CisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0Qi CisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1t b2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlicy90b29sbG9nL3h0 bF9sb2dnZXJfc3RkaW8uYyBiL3Rvb2xzL2xpYnMvdG9vbGxvZy94dGxfbG9nZ2VyX3N0ZGlvLmMK aW5kZXggMGNkOTIwNi4uZjljNWJkOCAxMDA2NDQKLS0tIGEvdG9vbHMvbGlicy90b29sbG9nL3h0 bF9sb2dnZXJfc3RkaW8uYworKysgYi90b29scy9saWJzL3Rvb2xsb2cveHRsX2xvZ2dlcl9zdGRp by5jCkBAIC0xOTAsMyArMTkwLDEzIEBAIHhlbnRvb2xsb2dfbG9nZ2VyX3N0ZGlvc3RyZWFtICp4 dGxfY3JlYXRlbG9nZ2VyX3N0ZGlvc3RyZWFtCiAKICAgICByZXR1cm4gWFRMX05FV19MT0dHRVIo c3RkaW9zdHJlYW0sIG5ld2xvZ2dlcik7CiB9CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6Cisg KiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAor ICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpk aWZmIC0tZ2l0IGEvdG9vbHMvbGlidmNoYW4vTWFrZWZpbGUgYi90b29scy9saWJ2Y2hhbi9NYWtl ZmlsZQppbmRleCAzYzUwZmU2Li44NDEyOGEzIDEwMDY0NAotLS0gYS90b29scy9saWJ2Y2hhbi9N YWtlZmlsZQorKysgYi90b29scy9saWJ2Y2hhbi9NYWtlZmlsZQpAQCAtMTAsOSArMTAsOSBAQCBO T0RFX09CSlMgPSBub2RlLm8KIE5PREUyX09CSlMgPSBub2RlLXNlbGVjdC5vCiAKIExJQlZDSEFO X1BJQ19PQkpTID0gJChwYXRzdWJzdCAlLm8sJS5vcGljLCQoTElCVkNIQU5fT0JKUykpCi1MSUJW Q0hBTl9MSUJTID0gJChMRExJQlNfbGlieGVuc3RvcmUpICQoTERMSUJTX2xpYnhlbmN0cmwpCi0k KExJQlZDSEFOX09CSlMpICQoTElCVkNIQU5fUElDX09CSlMpOiBDRkxBR1MgKz0gJChDRkxBR1Nf bGlieGVuc3RvcmUpICQoQ0ZMQUdTX2xpYnhlbmN0cmwpCi0kKE5PREVfT0JKUykgJChOT0RFMl9P QkpTKTogQ0ZMQUdTICs9ICQoQ0ZMQUdTX2xpYnhlbmN0cmwpCitMSUJWQ0hBTl9MSUJTID0gJChM RExJQlNfbGlieGVuc3RvcmUpICQoTERMSUJTX2xpYnhlbmN0cmwpICQoTERMSUJTX2xpYnhlbmV2 dGNobikKKyQoTElCVkNIQU5fT0JKUykgJChMSUJWQ0hBTl9QSUNfT0JKUyk6IENGTEFHUyArPSAk KENGTEFHU19saWJ4ZW5zdG9yZSkgJChDRkxBR1NfbGlieGVuY3RybCkgJChDRkxBR1NfbGlieGVu ZXZ0Y2huKQorJChOT0RFX09CSlMpICQoTk9ERTJfT0JKUyk6IENGTEFHUyArPSAkKENGTEFHU19s aWJ4ZW5jdHJsKSAkKENGTEFHU19saWJ4ZW5ldnRjaG4pCiAKIE1BSk9SID0gMS4wCiBNSU5PUiA9 IDAKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnZjaGFuL2luaXQuYyBiL3Rvb2xzL2xpYnZjaGFuL2lu aXQuYwppbmRleCA3N2JlNGU3Li42NmNiMTAzIDEwMDY0NAotLS0gYS90b29scy9saWJ2Y2hhbi9p bml0LmMKKysrIGIvdG9vbHMvbGlidmNoYW4vaW5pdC5jCkBAIC0yMTYsMjUgKzIxNiwyNSBAQCBz dGF0aWMgaW50IGluaXRfZXZ0X3NydihzdHJ1Y3QgbGlieGVudmNoYW4gKmN0cmwsIGludCBkb21h aW4sIHhlbnRvb2xsb2dfbG9nZ2VyCiB7CiAJZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCBwb3J0Owog Ci0JY3RybC0+ZXZlbnQgPSB4Y19ldnRjaG5fb3Blbihsb2dnZXIsIDApOworCWN0cmwtPmV2ZW50 ID0geGVuZXZ0Y2huX29wZW4obG9nZ2VyLCAwKTsKIAlpZiAoIWN0cmwtPmV2ZW50KQogCQlyZXR1 cm4gLTE7CiAKLQlwb3J0ID0geGNfZXZ0Y2huX2JpbmRfdW5ib3VuZF9wb3J0KGN0cmwtPmV2ZW50 LCBkb21haW4pOworCXBvcnQgPSB4ZW5ldnRjaG5fYmluZF91bmJvdW5kX3BvcnQoY3RybC0+ZXZl bnQsIGRvbWFpbik7CiAJaWYgKHBvcnQgPCAwKQogCQlnb3RvIGZhaWw7CiAJY3RybC0+ZXZlbnRf cG9ydCA9IHBvcnQ7CiAKLQlpZiAoeGNfZXZ0Y2huX3VubWFzayhjdHJsLT5ldmVudCwgY3RybC0+ ZXZlbnRfcG9ydCkpCisJaWYgKHhlbmV2dGNobl91bm1hc2soY3RybC0+ZXZlbnQsIGN0cmwtPmV2 ZW50X3BvcnQpKQogCQlnb3RvIGZhaWw7CiAKIAlyZXR1cm4gMDsKIAogZmFpbDoKIAlpZiAocG9y dCA+PSAwKQotCQl4Y19ldnRjaG5fdW5iaW5kKGN0cmwtPmV2ZW50LCBwb3J0KTsKKwkJeGVuZXZ0 Y2huX3VuYmluZChjdHJsLT5ldmVudCwgcG9ydCk7CiAKLQl4Y19ldnRjaG5fY2xvc2UoY3RybC0+ ZXZlbnQpOworCXhlbmV2dGNobl9jbG9zZShjdHJsLT5ldmVudCk7CiAJY3RybC0+ZXZlbnQgPSBO VUxMOwogCiAJcmV0dXJuIC0xOwpAQCAtMzQ2LDI2ICszNDYsMjYgQEAgc3RhdGljIGludCBpbml0 X2V2dF9jbGkoc3RydWN0IGxpYnhlbnZjaGFuICpjdHJsLCBpbnQgZG9tYWluLCB4ZW50b29sbG9n X2xvZ2dlcgogewogCWV2dGNobl9wb3J0X29yX2Vycm9yX3QgcG9ydDsKIAotCWN0cmwtPmV2ZW50 ID0geGNfZXZ0Y2huX29wZW4obG9nZ2VyLCAwKTsKKwljdHJsLT5ldmVudCA9IHhlbmV2dGNobl9v cGVuKGxvZ2dlciwgMCk7CiAJaWYgKCFjdHJsLT5ldmVudCkKIAkJcmV0dXJuIC0xOwogCi0JcG9y dCA9IHhjX2V2dGNobl9iaW5kX2ludGVyZG9tYWluKGN0cmwtPmV2ZW50LAorCXBvcnQgPSB4ZW5l dnRjaG5fYmluZF9pbnRlcmRvbWFpbihjdHJsLT5ldmVudCwKIAkJZG9tYWluLCBjdHJsLT5ldmVu dF9wb3J0KTsKIAlpZiAocG9ydCA8IDApCiAJCWdvdG8gZmFpbDsKIAljdHJsLT5ldmVudF9wb3J0 ID0gcG9ydDsKIAotCWlmICh4Y19ldnRjaG5fdW5tYXNrKGN0cmwtPmV2ZW50LCBjdHJsLT5ldmVu dF9wb3J0KSkKKwlpZiAoeGVuZXZ0Y2huX3VubWFzayhjdHJsLT5ldmVudCwgY3RybC0+ZXZlbnRf cG9ydCkpCiAJCWdvdG8gZmFpbDsKIAogCXJldHVybiAwOwogCiBmYWlsOgogCWlmIChwb3J0ID49 IDApCi0JCXhjX2V2dGNobl91bmJpbmQoY3RybC0+ZXZlbnQsIHBvcnQpOworCQl4ZW5ldnRjaG5f dW5iaW5kKGN0cmwtPmV2ZW50LCBwb3J0KTsKIAotCXhjX2V2dGNobl9jbG9zZShjdHJsLT5ldmVu dCk7CisJeGVuZXZ0Y2huX2Nsb3NlKGN0cmwtPmV2ZW50KTsKIAljdHJsLT5ldmVudCA9IE5VTEw7 CiAKIAlyZXR1cm4gLTE7CmRpZmYgLS1naXQgYS90b29scy9saWJ2Y2hhbi9pby5jIGIvdG9vbHMv bGlidmNoYW4vaW8uYwppbmRleCA4YTk2MjliLi40NDYxNDkwIDEwMDY0NAotLS0gYS90b29scy9s aWJ2Y2hhbi9pby5jCisrKyBiL3Rvb2xzL2xpYnZjaGFuL2lvLmMKQEAgLTEwNSw3ICsxMDUsNyBA QCBzdGF0aWMgaW5saW5lIGludCBzZW5kX25vdGlmeShzdHJ1Y3QgbGlieGVudmNoYW4gKmN0cmws IHVpbnQ4X3QgYml0KQogCW5vdGlmeSA9IGN0cmwtPmlzX3NlcnZlciA/ICZjdHJsLT5yaW5nLT5z cnZfbm90aWZ5IDogJmN0cmwtPnJpbmctPmNsaV9ub3RpZnk7CiAJcHJldiA9IF9fc3luY19mZXRj aF9hbmRfYW5kKG5vdGlmeSwgfmJpdCk7CiAJaWYgKHByZXYgJiBiaXQpCi0JCXJldHVybiB4Y19l dnRjaG5fbm90aWZ5KGN0cmwtPmV2ZW50LCBjdHJsLT5ldmVudF9wb3J0KTsKKwkJcmV0dXJuIHhl bmV2dGNobl9ub3RpZnkoY3RybC0+ZXZlbnQsIGN0cmwtPmV2ZW50X3BvcnQpOwogCWVsc2UKIAkJ cmV0dXJuIDA7CiB9CkBAIC0xOTQsMTAgKzE5NCwxMCBAQCBpbnQgbGlieGVudmNoYW5fYnVmZmVy X3NwYWNlKHN0cnVjdCBsaWJ4ZW52Y2hhbiAqY3RybCkKIAogaW50IGxpYnhlbnZjaGFuX3dhaXQo c3RydWN0IGxpYnhlbnZjaGFuICpjdHJsKQogewotCWludCByZXQgPSB4Y19ldnRjaG5fcGVuZGlu ZyhjdHJsLT5ldmVudCk7CisJaW50IHJldCA9IHhlbmV2dGNobl9wZW5kaW5nKGN0cmwtPmV2ZW50 KTsKIAlpZiAocmV0IDwgMCkKIAkJcmV0dXJuIC0xOwotCXhjX2V2dGNobl91bm1hc2soY3RybC0+ ZXZlbnQsIHJldCk7CisJeGVuZXZ0Y2huX3VubWFzayhjdHJsLT5ldmVudCwgcmV0KTsKIAlyZXR1 cm4gMDsKIH0KIApAQCAtMzUwLDcgKzM1MCw3IEBAIGludCBsaWJ4ZW52Y2hhbl9pc19vcGVuKHN0 cnVjdCBsaWJ4ZW52Y2hhbiogY3RybCkKIAogaW50IGxpYnhlbnZjaGFuX2ZkX2Zvcl9zZWxlY3Qo c3RydWN0IGxpYnhlbnZjaGFuICpjdHJsKQogewotCXJldHVybiB4Y19ldnRjaG5fZmQoY3RybC0+ ZXZlbnQpOworCXJldHVybiB4ZW5ldnRjaG5fZmQoY3RybC0+ZXZlbnQpOwogfQogCiB2b2lkIGxp YnhlbnZjaGFuX2Nsb3NlKHN0cnVjdCBsaWJ4ZW52Y2hhbiAqY3RybCkKQEAgLTM3Miw4ICszNzIs OCBAQCB2b2lkIGxpYnhlbnZjaGFuX2Nsb3NlKHN0cnVjdCBsaWJ4ZW52Y2hhbiAqY3RybCkKIAl9 CiAJaWYgKGN0cmwtPmV2ZW50KSB7CiAJCWlmIChjdHJsLT5yaW5nKQotCQkJeGNfZXZ0Y2huX25v dGlmeShjdHJsLT5ldmVudCwgY3RybC0+ZXZlbnRfcG9ydCk7Ci0JCXhjX2V2dGNobl9jbG9zZShj dHJsLT5ldmVudCk7CisJCQl4ZW5ldnRjaG5fbm90aWZ5KGN0cmwtPmV2ZW50LCBjdHJsLT5ldmVu dF9wb3J0KTsKKwkJeGVuZXZ0Y2huX2Nsb3NlKGN0cmwtPmV2ZW50KTsKIAl9CiAJaWYgKGN0cmwt PmlzX3NlcnZlcikgewogCQlpZiAoY3RybC0+Z250c2hyKQpkaWZmIC0tZ2l0IGEvdG9vbHMvbGli dmNoYW4vbGlieGVudmNoYW4uaCBiL3Rvb2xzL2xpYnZjaGFuL2xpYnhlbnZjaGFuLmgKaW5kZXgg MDk0NGEwZS4uMTU0NDM3OCAxMDA2NDQKLS0tIGEvdG9vbHMvbGlidmNoYW4vbGlieGVudmNoYW4u aAorKysgYi90b29scy9saWJ2Y2hhbi9saWJ4ZW52Y2hhbi5oCkBAIC00NCw2ICs0NCw3IEBACiAK ICNpbmNsdWRlIDx4ZW4vaW8vbGlieGVudmNoYW4uaD4KICNpbmNsdWRlIDx4ZW4vc3lzL2V2dGNo bi5oPgorI2luY2x1ZGUgPHhlbmV2dGNobi5oPgogI2luY2x1ZGUgPHhlbmN0cmwuaD4KIAogc3Ry dWN0IGxpYnhlbnZjaGFuX3JpbmcgewpAQCAtNzEsNyArNzIsNyBAQCBzdHJ1Y3QgbGlieGVudmNo YW4gewogCS8qIFBvaW50ZXIgdG8gc2hhcmVkIHJpbmcgcGFnZSAqLwogCXN0cnVjdCB2Y2hhbl9p bnRlcmZhY2UgKnJpbmc7CiAJLyogZXZlbnQgY2hhbm5lbCBpbnRlcmZhY2UgKi8KLQl4Y19ldnRj aG4gKmV2ZW50OworCXhlbmV2dGNobl9oYW5kbGUgKmV2ZW50OwogCXVpbnQzMl90IGV2ZW50X3Bv cnQ7CiAJLyogaW5mb3JtYXRpdmUgZmxhZ3M6IGFyZSB3ZSBhY3RpbmcgYXMgc2VydmVyPyAqLwog CWludCBpc19zZXJ2ZXI6MTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL01ha2VmaWxlIGIvdG9v bHMvbGlieGMvTWFrZWZpbGUKaW5kZXggMGUxNzk0ZS4uYjliYmQyNCAxMDA2NDQKLS0tIGEvdG9v bHMvbGlieGMvTWFrZWZpbGUKKysrIGIvdG9vbHMvbGlieGMvTWFrZWZpbGUKQEAgLTQ4LDYgKzQ4 LDcgQEAgQ1RSTF9TUkNTLSQoQ09ORklHX1N1bk9TKSArPSB4Y19zb2xhcmlzLmMKIENUUkxfU1JD Uy0kKENPTkZJR19OZXRCU0QpICs9IHhjX25ldGJzZC5jCiBDVFJMX1NSQ1MtJChDT05GSUdfTmV0 QlNEUnVtcCkgKz0geGNfbmV0YnNkLmMKIENUUkxfU1JDUy0kKENPTkZJR19NaW5pT1MpICs9IHhj X21pbmlvcy5jCitDVFJMX1NSQ1MteSAgICAgICArPSB4Y19ldnRjaG5fY29tcGF0LmMKIAogR1VF U1RfU1JDUy15IDo9CiBHVUVTVF9TUkNTLXkgKz0geGdfcHJpdmF0ZS5jIHhjX3N1c3BlbmQuYwpA QCAtMTEyLDYgKzExMyw3IEBAIENGTEFHUy0kKENPTkZJR19MaW51eCkgKz0gLURfR05VX1NPVVJD RQogCiBDRkxBR1MJKz0gJChQVEhSRUFEX0NGTEFHUykKIENGTEFHUwkrPSAkKENGTEFHU19saWJ4 ZW50b29sbG9nKQorQ0ZMQUdTCSs9ICQoQ0ZMQUdTX2xpYnhlbmV2dGNobikKIAogQ1RSTF9MSUJf T0JKUyA6PSAkKHBhdHN1YnN0ICUuYywlLm8sJChDVFJMX1NSQ1MteSkpCiBDVFJMX1BJQ19PQkpT IDo9ICQocGF0c3Vic3QgJS5jLCUub3BpYywkKENUUkxfU1JDUy15KSkKQEAgLTE2NSw3ICsxNjcs NyBAQCBpbnN0YWxsOiBidWlsZAogCSQoSU5TVEFMTF9EQVRBKSBsaWJ4ZW5jdHJsLmEgJChERVNU RElSKSQobGliZGlyKQogCSQoU1lNTElOS19TSExJQikgbGlieGVuY3RybC5zby4kKE1BSk9SKS4k KE1JTk9SKSAkKERFU1RESVIpJChsaWJkaXIpL2xpYnhlbmN0cmwuc28uJChNQUpPUikKIAkkKFNZ TUxJTktfU0hMSUIpIGxpYnhlbmN0cmwuc28uJChNQUpPUikgJChERVNURElSKSQobGliZGlyKS9s aWJ4ZW5jdHJsLnNvCi0JJChJTlNUQUxMX0RBVEEpIGluY2x1ZGUveGVuY3RybC5oIGluY2x1ZGUv eGVuY3RybG9zZGVwLmggJChERVNURElSKSQoaW5jbHVkZWRpcikKKwkkKElOU1RBTExfREFUQSkg aW5jbHVkZS94ZW5jdHJsLmggaW5jbHVkZS94ZW5jdHJsX2NvbXBhdC5oIGluY2x1ZGUveGVuY3Ry bG9zZGVwLmggJChERVNURElSKSQoaW5jbHVkZWRpcikKIAkkKElOU1RBTExfU0hMSUIpIGxpYnhl bmd1ZXN0LnNvLiQoTUFKT1IpLiQoTUlOT1IpICQoREVTVERJUikkKGxpYmRpcikKIAkkKElOU1RB TExfREFUQSkgbGlieGVuZ3Vlc3QuYSAkKERFU1RESVIpJChsaWJkaXIpCiAJJChTWU1MSU5LX1NI TElCKSBsaWJ4ZW5ndWVzdC5zby4kKE1BSk9SKS4kKE1JTk9SKSAkKERFU1RESVIpJChsaWJkaXIp L2xpYnhlbmd1ZXN0LnNvLiQoTUFKT1IpCkBAIC0yMDgsNyArMjEwLDcgQEAgbGlieGVuY3RybC5z by4kKE1BSk9SKTogbGlieGVuY3RybC5zby4kKE1BSk9SKS4kKE1JTk9SKQogCSQoU1lNTElOS19T SExJQikgJDwgJEAKIAogbGlieGVuY3RybC5zby4kKE1BSk9SKS4kKE1JTk9SKTogJChDVFJMX1BJ Q19PQkpTKQotCSQoQ0MpICQoTERGTEFHUykgJChQVEhSRUFEX0xERkxBR1MpIC1XbCwkKFNPTkFN RV9MREZMQUcpIC1XbCxsaWJ4ZW5jdHJsLnNvLiQoTUFKT1IpICQoU0hMSUJfTERGTEFHUykgLW8g JEAgJF4gJChMRExJQlNfbGlieGVudG9vbGxvZykgJChETE9QRU5fTElCUykgJChQVEhSRUFEX0xJ QlMpICQoQVBQRU5EX0xERkxBR1MpCisJJChDQykgJChMREZMQUdTKSAkKFBUSFJFQURfTERGTEFH UykgLVdsLCQoU09OQU1FX0xERkxBRykgLVdsLGxpYnhlbmN0cmwuc28uJChNQUpPUikgJChTSExJ Ql9MREZMQUdTKSAtbyAkQCAkXiAkKExETElCU19saWJ4ZW50b29sbG9nKSAkKExETElCU19saWJ4 ZW5ldnRjaG4pICQoRExPUEVOX0xJQlMpICQoUFRIUkVBRF9MSUJTKSAkKEFQUEVORF9MREZMQUdT KQogCiAjIGxpYnhlbmd1ZXN0CiAKQEAgLTIzMSw3ICsyMzMsNyBAQCB4Y19kb21fYnppbWFnZWxv YWRlci5vcGljOiBDRkxBR1MgKz0gJChjYWxsIHpsaWItb3B0aW9ucyxEKQogCiBsaWJ4ZW5ndWVz dC5zby4kKE1BSk9SKS4kKE1JTk9SKTogQ09NUFJFU1NJT05fTElCUyA9ICQoY2FsbCB6bGliLW9w dGlvbnMsbCkKIGxpYnhlbmd1ZXN0LnNvLiQoTUFKT1IpLiQoTUlOT1IpOiAkKEdVRVNUX1BJQ19P QkpTKSBsaWJ4ZW5jdHJsLnNvCi0JJChDQykgJChMREZMQUdTKSAtV2wsJChTT05BTUVfTERGTEFH KSAtV2wsbGlieGVuZ3Vlc3Quc28uJChNQUpPUikgJChTSExJQl9MREZMQUdTKSAtbyAkQCAkKEdV RVNUX1BJQ19PQkpTKSAkKENPTVBSRVNTSU9OX0xJQlMpIC1seiAkKExETElCU19saWJ4ZW5jdHJs KSAkKFBUSFJFQURfTElCUykgJChBUFBFTkRfTERGTEFHUykKKwkkKENDKSAkKExERkxBR1MpIC1X bCwkKFNPTkFNRV9MREZMQUcpIC1XbCxsaWJ4ZW5ndWVzdC5zby4kKE1BSk9SKSAkKFNITElCX0xE RkxBR1MpIC1vICRAICQoR1VFU1RfUElDX09CSlMpICQoQ09NUFJFU1NJT05fTElCUykgLWx6ICQo TERMSUJTX2xpYnhlbmV2dGNobikgJChMRExJQlNfbGlieGVuY3RybCkgJChQVEhSRUFEX0xJQlMp ICQoQVBQRU5EX0xERkxBR1MpCiAKIHhlbmN0cmxfb3NkZXBfRU5PU1lTLnNvOiAkKE9TREVQX1BJ Q19PQkpTKSBsaWJ4ZW5jdHJsLnNvCiAJJChDQykgJChMREZMQUdTKSAkKFNITElCX0xERkxBR1Mp IC1vICRAICQoT1NERVBfUElDX09CSlMpICQoTERMSUJTX2xpYnhlbmN0cmwpICQoQVBQRU5EX0xE RkxBR1MpCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaCBiL3Rvb2xz L2xpYnhjL2luY2x1ZGUveGVuY3RybC5oCmluZGV4IDRhNzFhZjMuLmU0ZWM1MmQgMTAwNjQ0Ci0t LSBhL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oCisrKyBiL3Rvb2xzL2xpYnhjL2luY2x1 ZGUveGVuY3RybC5oCkBAIC0xMTcsNyArMTE3LDYgQEAKICAqLwogCiB0eXBlZGVmIHN0cnVjdCB4 Y19pbnRlcmZhY2VfY29yZSB4Y19pbnRlcmZhY2U7Ci10eXBlZGVmIHN0cnVjdCB4ZW5ldnRjaG5f aGFuZGxlIHhjX2V2dGNobjsKIHR5cGVkZWYgc3RydWN0IHhjX2ludGVyZmFjZV9jb3JlIHhjX2du dHRhYjsKIHR5cGVkZWYgc3RydWN0IHhjX2ludGVyZmFjZV9jb3JlIHhjX2dudHNocjsKIApAQCAt MTA5Myw3ICsxMDkyLDYgQEAgaW50IHhjX2NwdXBvb2xfbW92ZWRvbWFpbih4Y19pbnRlcmZhY2Ug KnhjaCwKICAqLwogeGNfY3B1bWFwX3QgeGNfY3B1cG9vbF9mcmVlaW5mbyh4Y19pbnRlcmZhY2Ug KnhjaCk7CiAKLQogLyoKICAqIEVWRU5UIENIQU5ORUwgRlVOQ1RJT05TCiAgKgpAQCAtMTEyOCwx MDEgKzExMjYsNyBAQCBpbnQgeGNfZXZ0Y2huX3Jlc2V0KHhjX2ludGVyZmFjZSAqeGNoLAogdHlw ZWRlZiBzdHJ1Y3QgZXZ0Y2huX3N0YXR1cyB4Y19ldnRjaG5fc3RhdHVzX3Q7CiBpbnQgeGNfZXZ0 Y2huX3N0YXR1cyh4Y19pbnRlcmZhY2UgKnhjaCwgeGNfZXZ0Y2huX3N0YXR1c190ICpzdGF0dXMp OwogCi0vKgotICogUmV0dXJuIGEgaGFuZGxlIHRvIHRoZSBldmVudCBjaGFubmVsIGRyaXZlciwg b3IgTlVMTCBvbiBmYWlsdXJlLCBpbgotICogd2hpY2ggY2FzZSBlcnJubyB3aWxsIGJlIHNldCBh cHByb3ByaWF0ZWx5LgotICoKLSAqIE5vdGU6Ci0gKiBBZnRlciBmb3JrIGEgY2hpbGQgcHJvY2Vz cyBtdXN0IG5vdCB1c2UgYW55IG9wZW5lZCB4YyBldnRjaG4KLSAqIGhhbmRsZSBpbmhlcml0ZWQg ZnJvbSB0aGVpciBwYXJlbnQuIFRoZXkgbXVzdCBvcGVuIGEgbmV3IGhhbmRsZSBpZgotICogdGhl eSB3YW50IHRvIGludGVyYWN0IHdpdGggeGMuCi0gKgotICogQmVmb3JlIFhlbiBwcmUtNC4xIHRo aXMgZnVuY3Rpb24gd291bGQgc29tZXRpbWVzIHJlcG9ydCBlcnJvcnMgd2l0aCBwZXJyb3IuCi0g Ki8KLXhjX2V2dGNobiAqeGNfZXZ0Y2huX29wZW4oeGVudG9vbGxvZ19sb2dnZXIgKmxvZ2dlciwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgb3Blbl9mbGFncyk7CiAKLS8q Ci0gKiBDbG9zZSBhIGhhbmRsZSBwcmV2aW91c2x5IGFsbG9jYXRlZCB3aXRoIHhjX2V2dGNobl9v cGVuKCkuCi0gKi8KLWludCB4Y19ldnRjaG5fY2xvc2UoeGNfZXZ0Y2huICp4Y2UpOwotCi0vKgot ICogUmV0dXJuIGFuIGZkIHRoYXQgY2FuIGJlIHNlbGVjdCgpZWQgb24uCi0gKgotICogTm90ZSB0 aGF0IGR1ZSB0byBidWdzLCBzZXR0aW5nIHRoaXMgZmQgdG8gbm9uIGJsb2NraW5nIG1heSBub3QK LSAqIHdvcms6IHlvdSB3b3VsZCBob3BlIHRoYXQgaXQgd291bGQgcmVzdWx0IGluIHhjX2V2dGNo bl9wZW5kaW5nCi0gKiBmYWlsaW5nIHdpdGggRVdPVUxEQkxPQ0sgaWYgdGhlcmUgYXJlIG5vIGV2 ZW50cyBzaWduYWxlZCwgYnV0IGluCi0gKiBmYWN0IGl0IG1heSBibG9jay4gIChCdWcgaXMgcHJl c2VudCBpbiBhdCBsZWFzdCBMaW51eCAzLjEyLCBhbmQKLSAqIHBlcmhhcHMgb24gb3RoZXIgcGxh dGZvcm1zIG9yIGxhdGVyIHZlcnNpb24uKQotICoKLSAqIFRvIGJlIHNhZmUsIHlvdSBtdXN0IHVz ZSBwb2xsKCkgb3Igc2VsZWN0KCkgYmVmb3JlIGVhY2ggY2FsbCB0bwotICogeGNfZXZ0Y2huX3Bl bmRpbmcuICBJZiB5b3UgaGF2ZSBtdWx0aXBsZSB0aHJlYWRzIChvciBwcm9jZXNzZXMpCi0gKiBz aGFyaW5nIGEgc2luZ2xlIHhjZSBoYW5kbGUgdGhpcyB3aWxsIG5vdCB3b3JrLCBhbmQgdGhlcmUg aXMgbm8KLSAqIHN0cmFpZ2h0Zm9yd2FyZCB3b3JrYXJvdW5kLiAgUGxlYXNlIGRlc2lnbiB5b3Vy IHByb2dyYW0gc29tZSBvdGhlcgotICogd2F5LgotICovCi1pbnQgeGNfZXZ0Y2huX2ZkKHhjX2V2 dGNobiAqeGNlKTsKLQotLyoKLSAqIE5vdGlmeSB0aGUgZ2l2ZW4gZXZlbnQgY2hhbm5lbC4gUmV0 dXJucyAtMSBvbiBmYWlsdXJlLCBpbiB3aGljaCBjYXNlCi0gKiBlcnJubyB3aWxsIGJlIHNldCBh cHByb3ByaWF0ZWx5LgotICovCi1pbnQgeGNfZXZ0Y2huX25vdGlmeSh4Y19ldnRjaG4gKnhjZSwg ZXZ0Y2huX3BvcnRfdCBwb3J0KTsKLQotLyoKLSAqIFJldHVybnMgYSBuZXcgZXZlbnQgcG9ydCBh d2FpdGluZyBpbnRlcmRvbWFpbiBjb25uZWN0aW9uIGZyb20gdGhlIGdpdmVuCi0gKiBkb21haW4g SUQsIG9yIC0xIG9uIGZhaWx1cmUsIGluIHdoaWNoIGNhc2UgZXJybm8gd2lsbCBiZSBzZXQgYXBw cm9wcmlhdGVseS4KLSAqLwotZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdAoteGNfZXZ0Y2huX2JpbmRf dW5ib3VuZF9wb3J0KHhjX2V2dGNobiAqeGNlLCBpbnQgZG9taWQpOwotCi0vKgotICogUmV0dXJu cyBhIG5ldyBldmVudCBwb3J0IGJvdW5kIHRvIHRoZSByZW1vdGUgcG9ydCBmb3IgdGhlIGdpdmVu IGRvbWFpbiBJRCwKLSAqIG9yIC0xIG9uIGZhaWx1cmUsIGluIHdoaWNoIGNhc2UgZXJybm8gd2ls bCBiZSBzZXQgYXBwcm9wcmlhdGVseS4KLSAqLwotZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdAoteGNf ZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4oeGNfZXZ0Y2huICp4Y2UsIGludCBkb21pZCwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgIGV2dGNobl9wb3J0X3QgcmVtb3RlX3BvcnQpOwotCi0vKgot ICogQmluZCBhbiBldmVudCBjaGFubmVsIHRvIHRoZSBnaXZlbiBWSVJRLiBSZXR1cm5zIHRoZSBl dmVudCBjaGFubmVsIGJvdW5kIHRvCi0gKiB0aGUgVklSUSwgb3IgLTEgb24gZmFpbHVyZSwgaW4g d2hpY2ggY2FzZSBlcnJubyB3aWxsIGJlIHNldCBhcHByb3ByaWF0ZWx5LgotICovCi1ldnRjaG5f cG9ydF9vcl9lcnJvcl90Ci14Y19ldnRjaG5fYmluZF92aXJxKHhjX2V2dGNobiAqeGNlLCB1bnNp Z25lZCBpbnQgdmlycSk7Ci0KLS8qCi0gKiBVbmJpbmQgdGhlIGdpdmVuIGV2ZW50IGNoYW5uZWwu IFJldHVybnMgLTEgb24gZmFpbHVyZSwgaW4gd2hpY2ggY2FzZSBlcnJubwotICogd2lsbCBiZSBz ZXQgYXBwcm9wcmlhdGVseS4KLSAqLwotaW50IHhjX2V2dGNobl91bmJpbmQoeGNfZXZ0Y2huICp4 Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCk7Ci0KLS8qCi0gKiBSZXR1cm4gdGhlIG5leHQgZXZlbnQg Y2hhbm5lbCB0byBiZWNvbWUgcGVuZGluZywgb3IgLTEgb24gZmFpbHVyZSwgaW4gd2hpY2gKLSAq IGNhc2UgZXJybm8gd2lsbCBiZSBzZXQgYXBwcm9wcmlhdGVseS4KLSAqCi0gKiBBdCB0aGUgaHlw ZXJ2aXNvciBsZXZlbCB0aGUgZXZlbnQgY2hhbm5lbCB3aWxsIGhhdmUgYmVlbiBtYXNrZWQsCi0g KiBhbmQgdGhlbiBjbGVhcmVkLCBieSB0aGUgdW5kZXJseWluZyBtYWNoaW5lcnkgKGV2dGNobiBr ZXJuZWwKLSAqIGRyaXZlciwgb3IgZXF1aXZhbGVudCkuICBTbyBpZiB0aGUgZXZlbnQgY2hhbm5l bCBpcyBzaWduYWxlZCBhZ2FpbgotICogYWZ0ZXIgaXQgaXMgcmV0dXJuZWQgaGVyZSwgaXQgd2ls bCBiZSBxdWV1ZWQgdXAsIGFuZCBkZWxpdmVyZWQKLSAqIGFnYWluIGFmdGVyIHlvdSB1bm1hc2sg aXQuICAoU2VlIHRoZSBkb2N1bWVudGF0aW9uIGluIHRoZSBYZW4KLSAqIHB1YmxpYyBoZWFkZXIg ZXZlbnRfY2hhbm5lbC5oLikKLSAqCi0gKiBPbiByZWNlaXZpbmcgdGhlIG5vdGlmaWNhdGlvbiBm cm9tIHhjX2V2dGNobl9wZW5kaW5nLCB5b3Ugc2hvdWxkCi0gKiBub3JtYWxseTogY2hlY2sgKGJ5 IG90aGVyIG1lYW5zKSB3aGF0IHdvcmsgbmVlZHMgZG9pbmc7IGRvIHRoZQotICogbmVjZXNzYXJ5 IHdvcmsgKGlmIGFueSk7IHVubWFzayB0aGUgZXZlbnQgY2hhbm5lbCB3aXRoCi0gKiB4Y19ldnRj aG5fdW5tYXNrIChpZiB5b3Ugd2FudCB0byByZWNlaXZlIGFueSBmdXJ0aGVyCi0gKiBub3RpZmlj YXRpb25zKS4KLSAqLwotZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdAoteGNfZXZ0Y2huX3BlbmRpbmco eGNfZXZ0Y2huICp4Y2UpOwotCi0vKgotICogVW5tYXNrIHRoZSBnaXZlbiBldmVudCBjaGFubmVs LiBSZXR1cm5zIC0xIG9uIGZhaWx1cmUsIGluIHdoaWNoIGNhc2UgZXJybm8KLSAqIHdpbGwgYmUg c2V0IGFwcHJvcHJpYXRlbHkuCi0gKi8KLWludCB4Y19ldnRjaG5fdW5tYXNrKHhjX2V2dGNobiAq eGNlLCBldnRjaG5fcG9ydF90IHBvcnQpOwogCiBpbnQgeGNfcGh5c2Rldl9wY2lfYWNjZXNzX21v ZGlmeSh4Y19pbnRlcmZhY2UgKnhjaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVpbnQzMl90IGRvbWlkLApAQCAtMjg1Niw2ICsyNzYwLDkgQEAgaW50IHhjX3Bzcl9jYXRfZ2V0 X2wzX2luZm8oeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IHNvY2tldCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVpbnQzMl90ICpjb3NfbWF4LCB1aW50MzJfdCAqY2JtX2xlbik7CiAj ZW5kaWYKIAorLyogQ29tcGF0IHNoaW1zICovCisjaW5jbHVkZSAieGVuY3RybF9jb21wYXQuaCIK KwogI2VuZGlmIC8qIFhFTkNUUkxfSCAqLwogCiAvKgpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMv aW5jbHVkZS94ZW5jdHJsX2NvbXBhdC5oIGIvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsX2Nv bXBhdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4ZGFlYjIKLS0tIC9k ZXYvbnVsbAorKysgYi90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmxfY29tcGF0LmgKQEAgLTAs MCArMSw0OCBAQAorLyoKKyAqIENvbXBhdCBzaGltcyBmb3IgdXNlIG9mIDNyZCBwYXJ0eSBjb25z dW1lcnMgb2YgbGlieGVuY3RybAorICogZnVuY3Rpb25hbGl0eSB3aGljaCBoYXMgYmVlbiBzcGxp dCBpbnRvIHNlcGFyYXRlIGxpYnJhcmllcy4KKyAqCisgKiBOZXcgY29kZSBzaG91bGQgdXNlIHRo ZSBzZXBhcmF0ZSBsaWJyYXJpZXMuCisgKgorICogRWFjaCBpbnRlcmZhY2UgbXVzdCBiZSBvcHRl ZC1pbnRvIHNlcGFyYXRlbHkgYnkgZGVmaW5pbmc6CisgKgorICogWENfV0FOVF9DT01QQVRfRVZU Q0hOX0FQSQorICogIC0gRnVuY3Rpb25zIHJlbGF0aW5nIHRvIC9kZXYveGVuL2V2dGNobgorICov CisjaWZuZGVmIFhFTkNUUkxfQ09NUEFUX0gKKyNkZWZpbmUgWEVOQ1RSTF9DT01QQVRfSAorCisj aWZkZWYgWENfV0FOVF9DT01QQVRfRVZUQ0hOX0FQSQorCit0eXBlZGVmIHN0cnVjdCB4ZW5ldnRj aG5faGFuZGxlIHhjX2V2dGNobjsKKworeGNfZXZ0Y2huICp4Y19ldnRjaG5fb3Blbih4ZW50b29s bG9nX2xvZ2dlciAqbG9nZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBvcGVuX2ZsYWdzKTsKK2ludCB4Y19ldnRjaG5fY2xvc2UoeGNfZXZ0Y2huICp4Y2UpOworaW50 IHhjX2V2dGNobl9mZCh4Y19ldnRjaG4gKnhjZSk7CitpbnQgeGNfZXZ0Y2huX25vdGlmeSh4Y19l dnRjaG4gKnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KTsKK2V2dGNobl9wb3J0X29yX2Vycm9yX3QK K3hjX2V2dGNobl9iaW5kX3VuYm91bmRfcG9ydCh4Y19ldnRjaG4gKnhjZSwgaW50IGRvbWlkKTsK K2V2dGNobl9wb3J0X29yX2Vycm9yX3QKK3hjX2V2dGNobl9iaW5kX2ludGVyZG9tYWluKHhjX2V2 dGNobiAqeGNlLCBpbnQgZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBldnRjaG5f cG9ydF90IHJlbW90ZV9wb3J0KTsKK2V2dGNobl9wb3J0X29yX2Vycm9yX3QKK3hjX2V2dGNobl9i aW5kX3ZpcnEoeGNfZXZ0Y2huICp4Y2UsIHVuc2lnbmVkIGludCB2aXJxKTsKK2ludCB4Y19ldnRj aG5fdW5iaW5kKHhjX2V2dGNobiAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQpOworZXZ0Y2huX3Bv cnRfb3JfZXJyb3JfdAoreGNfZXZ0Y2huX3BlbmRpbmcoeGNfZXZ0Y2huICp4Y2UpOworaW50IHhj X2V2dGNobl91bm1hc2soeGNfZXZ0Y2huICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCk7CisKKyNl bmRpZiAvKiBYQ19XQU5UX0NPTVBBVF9FVlRDSE5fQVBJICovCisKKyNlbmRpZgorCisvKgorICog TG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICog Yy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTog bmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuZ3Vl c3QuaCBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuZ3Vlc3QuaAppbmRleCAxYTFhMTg1Li41ZWUw ZDViIDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmd1ZXN0LmgKKysrIGIvdG9v bHMvbGlieGMvaW5jbHVkZS94ZW5ndWVzdC5oCkBAIC0yMiw2ICsyMiw4IEBACiAjaWZuZGVmIFhF TkdVRVNUX0gKICNkZWZpbmUgWEVOR1VFU1RfSAogCisjaW5jbHVkZSA8eGVuZXZ0Y2huLmg+CisK ICNkZWZpbmUgWENfTlVNQV9OT19OT0RFICAgKH4wVSkKIAogI2RlZmluZSBYQ0ZMQUdTX0xJVkUg ICAgICAoMSA8PCAwKQpAQCAtMjUzLDE4ICsyNTUsMTggQEAgaW50IHhjX2h2bV9idWlsZF90YXJn ZXRfbWVtKHhjX2ludGVyZmFjZSAqeGNoLAogICogU2V0cyAqbG9ja2ZkIHRvIC0xLgogICogSGFz IGRlYWxsb2NhdGVkIGV2ZXJ5dGhpbmcgZXZlbiBvbiBlcnJvci4KICAqLwotaW50IHhjX3N1c3Bl bmRfZXZ0Y2huX3JlbGVhc2UoeGNfaW50ZXJmYWNlICp4Y2gsIHhjX2V2dGNobiAqeGNlLCBpbnQg ZG9taWQsIGludCBzdXNwZW5kX2V2dGNobiwgaW50ICpsb2NrZmQpOworaW50IHhjX3N1c3BlbmRf ZXZ0Y2huX3JlbGVhc2UoeGNfaW50ZXJmYWNlICp4Y2gsIHhlbmV2dGNobl9oYW5kbGUgKnhjZSwg aW50IGRvbWlkLCBpbnQgc3VzcGVuZF9ldnRjaG4sIGludCAqbG9ja2ZkKTsKIAogLyoqCiAgKiBU aGlzIGZ1bmN0aW9uIGVhdHMgdGhlIGluaXRpYWwgbm90aWZpY2F0aW9uLgogICogeGNlIG11c3Qg bm90IGJlIHVzZWQgZm9yIGFueXRoaW5nIGVsc2UKICAqIFNlZSB4Y19zdXNwZW5kX2V2dGNobl9p bml0X3NhbmUgcmUgbG9ja2ZkLgogICovCi1pbnQgeGNfc3VzcGVuZF9ldnRjaG5faW5pdF9leGNs dXNpdmUoeGNfaW50ZXJmYWNlICp4Y2gsIHhjX2V2dGNobiAqeGNlLAoraW50IHhjX3N1c3BlbmRf ZXZ0Y2huX2luaXRfZXhjbHVzaXZlKHhjX2ludGVyZmFjZSAqeGNoLCB4ZW5ldnRjaG5faGFuZGxl ICp4Y2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRvbWlkLCBp bnQgcG9ydCwgaW50ICpsb2NrZmQpOwogCiAvKiB4Y2UgbXVzdCBub3QgYmUgdXNlZCBmb3IgYW55 dGhpbmcgZWxzZSAqLwotaW50IHhjX2F3YWl0X3N1c3BlbmQoeGNfaW50ZXJmYWNlICp4Y2gsIHhj X2V2dGNobiAqeGNlLCBpbnQgc3VzcGVuZF9ldnRjaG4pOworaW50IHhjX2F3YWl0X3N1c3BlbmQo eGNfaW50ZXJmYWNlICp4Y2gsIHhlbmV2dGNobl9oYW5kbGUgKnhjZSwgaW50IHN1c3BlbmRfZXZ0 Y2huKTsKIAogLyoqCiAgKiBUaGUgcG9ydCB3aWxsIGJlIHNpZ25hbGVkIGltbWVkaWF0ZWx5IGFm dGVyIHRoaXMgY2FsbApAQCAtMjczLDcgKzI3NSw3IEBAIGludCB4Y19hd2FpdF9zdXNwZW5kKHhj X2ludGVyZmFjZSAqeGNoLCB4Y19ldnRjaG4gKnhjZSwgaW50IHN1c3BlbmRfZXZ0Y2huKTsKICAq IGFuZCBmZWQgdG8geGNfc3VzcGVuZF9ldnRjaG5fcmVsZWFzZS4gIChPbiBlcnJvciAqbG9ja2Zk IGlzCiAgKiB1bmRlZmluZWQgYW5kIHhjX3N1c3BlbmRfZXZ0Y2huX3JlbGVhc2UgaXMgbm90IGFs bG93ZWQuKQogICovCi1pbnQgeGNfc3VzcGVuZF9ldnRjaG5faW5pdF9zYW5lKHhjX2ludGVyZmFj ZSAqeGNoLCB4Y19ldnRjaG4gKnhjZSwKK2ludCB4Y19zdXNwZW5kX2V2dGNobl9pbml0X3NhbmUo eGNfaW50ZXJmYWNlICp4Y2gsIHhlbmV2dGNobl9oYW5kbGUgKnhjZSwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50IGRvbWlkLCBpbnQgcG9ydCwgaW50ICpsb2NrZmQpOwogCiBp bnQgeGNfZ2V0X2JpdF9zaXplKHhjX2ludGVyZmFjZSAqeGNoLApkaWZmIC0tZ2l0IGEvdG9vbHMv bGlieGMveGNfZXZ0Y2huX2NvbXBhdC5jIGIvdG9vbHMvbGlieGMveGNfZXZ0Y2huX2NvbXBhdC5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkM2U0YmEKLS0tIC9kZXYvbnVs bAorKysgYi90b29scy9saWJ4Yy94Y19ldnRjaG5fY29tcGF0LmMKQEAgLTAsMCArMSw3NSBAQAor LyoKKyAqIENvbXBhdCBzaGltcyBmb3IgdXNlIG9mIDNyZCBwYXJ0eSBjb25zdW1lcnMgb2YgbGli eGVuY3RybCB4Y19ldnRjaG4KKyAqIGZ1bmN0aW9uYWxpdHkgd2hpY2ggaGFzIGJlZW4gc3BsaXQg aW50byBzZXBhcmF0ZSBsaWJyYXJpZXMuCisgKi8KKworI2luY2x1ZGUgPHhlbmV2dGNobi5oPgor CisjZGVmaW5lIFhDX1dBTlRfQ09NUEFUX0VWVENITl9BUEkKKyNpbmNsdWRlICJ4ZW5jdHJsLmgi CisKK3hjX2V2dGNobiAqeGNfZXZ0Y2huX29wZW4oeGVudG9vbGxvZ19sb2dnZXIgKmxvZ2dlciwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgb3Blbl9mbGFncykKK3sKKyAgICBy ZXR1cm4geGVuZXZ0Y2huX29wZW4obG9nZ2VyLCBvcGVuX2ZsYWdzKTsKK30KKworaW50IHhjX2V2 dGNobl9jbG9zZSh4Y19ldnRjaG4gKnhjZSkKK3sKKyAgICByZXR1cm4geGVuZXZ0Y2huX2Nsb3Nl KHhjZSk7Cit9CisKK2ludCB4Y19ldnRjaG5fZmQoeGNfZXZ0Y2huICp4Y2UpCit7CisgICAgcmV0 dXJuIHhlbmV2dGNobl9mZCh4Y2UpOworfQorCitpbnQgeGNfZXZ0Y2huX25vdGlmeSh4Y19ldnRj aG4gKnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KQoreworICAgIHJldHVybiB4ZW5ldnRjaG5fbm90 aWZ5KHhjZSwgcG9ydCk7Cit9CisKK2V2dGNobl9wb3J0X29yX2Vycm9yX3QKK3hjX2V2dGNobl9i aW5kX3VuYm91bmRfcG9ydCh4Y19ldnRjaG4gKnhjZSwgaW50IGRvbWlkKQoreworICAgIHJldHVy biB4ZW5ldnRjaG5fYmluZF91bmJvdW5kX3BvcnQoeGNlLCBkb21pZCk7Cit9CisKK2V2dGNobl9w b3J0X29yX2Vycm9yX3QKK3hjX2V2dGNobl9iaW5kX2ludGVyZG9tYWluKHhjX2V2dGNobiAqeGNl LCBpbnQgZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBldnRjaG5fcG9ydF90IHJl bW90ZV9wb3J0KQoreworICAgIHJldHVybiB4ZW5ldnRjaG5fYmluZF9pbnRlcmRvbWFpbih4Y2Us IGRvbWlkLCByZW1vdGVfcG9ydCk7Cit9CisKK2V2dGNobl9wb3J0X29yX2Vycm9yX3QKK3hjX2V2 dGNobl9iaW5kX3ZpcnEoeGNfZXZ0Y2huICp4Y2UsIHVuc2lnbmVkIGludCB2aXJxKQoreworICAg IHJldHVybiB4ZW5ldnRjaG5fYmluZF92aXJxKHhjZSwgdmlycSk7Cit9CisKK2ludCB4Y19ldnRj aG5fdW5iaW5kKHhjX2V2dGNobiAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQpCit7CisgICAgcmV0 dXJuIHhlbmV2dGNobl91bmJpbmQoeGNlLCBwb3J0KTsKK30KKworZXZ0Y2huX3BvcnRfb3JfZXJy b3JfdAoreGNfZXZ0Y2huX3BlbmRpbmcoeGNfZXZ0Y2huICp4Y2UpCit7CisgICAgcmV0dXJuIHhl bmV2dGNobl9wZW5kaW5nKHhjZSk7Cit9CisKK2ludCB4Y19ldnRjaG5fdW5tYXNrKHhjX2V2dGNo biAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQpCit7CisgICAgcmV0dXJuIHhlbmV2dGNobl91bm1h c2soeGNlLCBwb3J0KTsKK30KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMK KyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lk dGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQg YS90b29scy9saWJ4Yy94Y19mcmVlYnNkX29zZGVwLmMgYi90b29scy9saWJ4Yy94Y19mcmVlYnNk X29zZGVwLmMKaW5kZXggNDMyM2UxNi4uMzM5OTk3YyAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMv eGNfZnJlZWJzZF9vc2RlcC5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX2ZyZWVic2Rfb3NkZXAuYwpA QCAtMzEsMTMgKzMxLDExIEBACiAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CiAKICNpbmNsdWRlIDx4 ZW4vbWVtb3J5Lmg+Ci0jaW5jbHVkZSA8eGVuL3N5cy9ldnRjaG4uaD4KIAogI2luY2x1ZGUgInhl bmN0cmwuaCIKICNpbmNsdWRlICJ4ZW5jdHJsb3NkZXAuaCIKIAogI2RlZmluZSBQUklWQ01EX0RF ViAgICAgIi9kZXYveGVuL3ByaXZjbWQiCi0jZGVmaW5lIEVWVENITl9ERVYgICAgICAiL2Rldi94 ZW4vZXZ0Y2huIgogCiAjZGVmaW5lIFBFUlJPUihfbSwgX2EuLi4pIHhjX29zZGVwX2xvZyh4Y2gs WFRMX0VSUk9SLFhDX0lOVEVSTkFMX0VSUk9SLF9tIFwKICAgICAgICAgICAgICAgICAgICIgKCVk ID0gJXMpIiwgIyMgX2EgLCBlcnJubywgeGNfc3RyZXJyb3IoeGNoLCBlcnJubykpCkBAIC0yNTEs MTA1ICsyNDksNiBAQCBzdGF0aWMgc3RydWN0IHhjX29zZGVwX29wcyBmcmVlYnNkX3ByaXZjbWRf b3BzID0gewogICAgIH0sCiB9OwogCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV2dGNo biBkZXZpY2UgaW50ZXJmYWNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotaW50IG9zZGVw X2V2dGNobl9vcGVuKHhjX2V2dGNobiAqeGNlKQotewotICAgIGludCBmZCA9IG9wZW4oRVZUQ0hO X0RFViwgT19SRFdSKTsKLSAgICBpZiAoIGZkID09IC0xICkKLSAgICAgICAgcmV0dXJuIC0xOwot ICAgIHhjZS0+ZmQgPSBmZDsKLSAgICByZXR1cm4gMDsKLX0KLQotaW50IG9zZGVwX2V2dGNobl9j bG9zZSh4Y19ldnRjaG4gKnhjZSkKLXsKLSAgICBpZiAoIHhjZS0+ZmQgPT0gLTEgKQotICAgICAg ICByZXR1cm4gMDsKLQotICAgIHJldHVybiBjbG9zZSh4Y2UtPmZkKTsKLX0KLQotaW50IHhjX2V2 dGNobl9mZCh4Y19ldnRjaG4gKnhjZSkKLXsKLSAgICByZXR1cm4geGNlLT5mZDsKLX0KLQotLyot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXZ0Y2huIGludGVyZmFjZSAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKi8KLWludCB4Y19ldnRjaG5fbm90aWZ5KHhjX2V2dGNobiAqeGNl LCBldnRjaG5fcG9ydF90IHBvcnQpCi17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAgICBzdHJ1 Y3QgaW9jdGxfZXZ0Y2huX25vdGlmeSBub3RpZnk7Ci0KLSAgICBub3RpZnkucG9ydCA9IHBvcnQ7 Ci0KLSAgICByZXR1cm4gaW9jdGwoZmQsIElPQ1RMX0VWVENITl9OT1RJRlksICZub3RpZnkpOwot fQotCi1ldnRjaG5fcG9ydF9vcl9lcnJvcl90IHhjX2V2dGNobl9iaW5kX3VuYm91bmRfcG9ydCh4 Y19ldnRjaG4gKnhjZSwgaW50IGRvbWlkKQotewotICAgIGludCByZXQsIGZkID0geGNlLT5mZDsK LSAgICBzdHJ1Y3QgaW9jdGxfZXZ0Y2huX2JpbmRfdW5ib3VuZF9wb3J0IGJpbmQ7Ci0KLSAgICBi aW5kLnJlbW90ZV9kb21haW4gPSBkb21pZDsKLQotICAgIHJldCA9IGlvY3RsKGZkLCBJT0NUTF9F VlRDSE5fQklORF9VTkJPVU5EX1BPUlQsICZiaW5kKTsKLSAgICByZXR1cm4gKCByZXQgPT0gMCAp ID8gYmluZC5wb3J0IDogcmV0OwotfQotCi1ldnRjaG5fcG9ydF9vcl9lcnJvcl90Ci14Y19ldnRj aG5fYmluZF9pbnRlcmRvbWFpbih4Y19ldnRjaG4gKnhjZSwgaW50IGRvbWlkLCBldnRjaG5fcG9y dF90IHJlbW90ZV9wb3J0KQotewotICAgIGludCByZXQsIGZkID0geGNlLT5mZDsKLSAgICBzdHJ1 Y3QgaW9jdGxfZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4gYmluZDsKLQotICAgIGJpbmQucmVtb3Rl X2RvbWFpbiA9IGRvbWlkOwotICAgIGJpbmQucmVtb3RlX3BvcnQgPSByZW1vdGVfcG9ydDsKLQot ICAgIHJldCA9IGlvY3RsKGZkLCBJT0NUTF9FVlRDSE5fQklORF9JTlRFUkRPTUFJTiwgJmJpbmQp OwotICAgIHJldHVybiAoIHJldCA9PSAwICkgPyBiaW5kLnBvcnQgOiByZXQ7Ci19Ci0KLWV2dGNo bl9wb3J0X29yX2Vycm9yX3QgeGNfZXZ0Y2huX2JpbmRfdmlycSh4Y19ldnRjaG4gKnhjZSwgdW5z aWduZWQgaW50IHZpcnEpCi17Ci0gICAgaW50IHJldCwgZmQgPSB4Y2UtPmZkOwotICAgIHN0cnVj dCBpb2N0bF9ldnRjaG5fYmluZF92aXJxIGJpbmQ7Ci0KLSAgICBiaW5kLnZpcnEgPSB2aXJxOwot Ci0gICAgcmV0ID0gaW9jdGwoZmQsIElPQ1RMX0VWVENITl9CSU5EX1ZJUlEsICZiaW5kKTsKLSAg ICByZXR1cm4gKCByZXQgPT0gMCApID8gYmluZC5wb3J0IDogcmV0OwotfQotCi1pbnQgeGNfZXZ0 Y2huX3VuYmluZCh4Y19ldnRjaG4gKnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KQotewotICAgIGlu dCBmZCA9IHhjZS0+ZmQ7Ci0gICAgc3RydWN0IGlvY3RsX2V2dGNobl91bmJpbmQgdW5iaW5kOwot Ci0gICAgdW5iaW5kLnBvcnQgPSBwb3J0OwotCi0gICAgcmV0dXJuIGlvY3RsKGZkLCBJT0NUTF9F VlRDSE5fVU5CSU5ELCAmdW5iaW5kKTsKLX0KLQotZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCB4Y19l dnRjaG5fcGVuZGluZyh4Y19ldnRjaG4gKnhjZSkKLXsKLSAgICBpbnQgZmQgPSB4Y2UtPmZkOwot ICAgIGV2dGNobl9wb3J0X3QgcG9ydDsKLQotICAgIGlmICggcmVhZChmZCwgJnBvcnQsIHNpemVv Zihwb3J0KSkgIT0gc2l6ZW9mKHBvcnQpICkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgcmV0 dXJuIHBvcnQ7Ci19Ci0KLWludCB4Y19ldnRjaG5fdW5tYXNrKHhjX2V2dGNobiAqeGNlLCBldnRj aG5fcG9ydF90IHBvcnQpCi17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLQotICAgIGlmICggd3Jp dGUoZmQsICZwb3J0LCBzaXplb2YocG9ydCkpICE9IHNpemVvZihwb3J0KSApCi0gICAgICAgIHJl dHVybiAtMTsKLSAgICByZXR1cm4gMDsKLX0KLQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tIEZyZWVCU0QgaW50ZXJmYWNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIHN0 YXRpYyBzdHJ1Y3QgeGNfb3NkZXBfb3BzICoKIGZyZWVic2Rfb3NkZXBfaW5pdCh4Y19pbnRlcmZh Y2UgKnhjaCwgZW51bSB4Y19vc2RlcF90eXBlIHR5cGUpCmRpZmYgLS1naXQgYS90b29scy9saWJ4 Yy94Y19saW51eF9vc2RlcC5jIGIvdG9vbHMvbGlieGMveGNfbGludXhfb3NkZXAuYwppbmRleCBj MWYzNGRlLi4xODgzYWJhIDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy94Y19saW51eF9vc2RlcC5j CisrKyBiL3Rvb2xzL2xpYnhjL3hjX2xpbnV4X29zZGVwLmMKQEAgLTMxLDcgKzMxLDYgQEAKICNp bmNsdWRlIDxzeXMvaW9jdGwuaD4KIAogI2luY2x1ZGUgPHhlbi9tZW1vcnkuaD4KLSNpbmNsdWRl IDx4ZW4vc3lzL2V2dGNobi5oPgogI2luY2x1ZGUgPHhlbi9zeXMvZ250ZGV2Lmg+CiAjaW5jbHVk ZSA8eGVuL3N5cy9nbnRhbGxvYy5oPgogCkBAIC00NTUsMTAwICs0NTQsNiBAQCBzdGF0aWMgc3Ry dWN0IHhjX29zZGVwX29wcyBsaW51eF9wcml2Y21kX29wcyA9IHsKIAogI2RlZmluZSBERVZYRU4g Ii9kZXYveGVuLyIKIAotaW50IG9zZGVwX2V2dGNobl9vcGVuKHhjX2V2dGNobiAqeGNlKQotewot ICAgIGludCBmZCA9IG9wZW4oREVWWEVOICJldnRjaG4iLCBPX1JEV1IpOwotICAgIGlmICggZmQg PT0gLTEgKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgeGNlLT5mZCA9IGZkOwotICAgIHJldHVy biAwOwotfQotCi1pbnQgb3NkZXBfZXZ0Y2huX2Nsb3NlKHhjX2V2dGNobiAqeGNlKQotewotICAg IGlmICggeGNlLT5mZCA9PSAtMSApCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIGNs b3NlKHhjZS0+ZmQpOwotfQotCi1pbnQgeGNfZXZ0Y2huX2ZkKHhjX2V2dGNobiAqeGNlKQotewot ICAgIHJldHVybiB4Y2UtPmZkOwotfQotCi1pbnQgeGNfZXZ0Y2huX25vdGlmeSh4Y19ldnRjaG4g KnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KQotewotICAgIGludCBmZCA9IHhjZS0+ZmQ7Ci0gICAg c3RydWN0IGlvY3RsX2V2dGNobl9ub3RpZnkgbm90aWZ5OwotCi0gICAgbm90aWZ5LnBvcnQgPSBw b3J0OwotCi0gICAgcmV0dXJuIGlvY3RsKGZkLCBJT0NUTF9FVlRDSE5fTk9USUZZLCAmbm90aWZ5 KTsKLX0KLQotZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCB4Y19ldnRjaG5fYmluZF91bmJvdW5kX3Bv cnQoeGNfZXZ0Y2huICp4Y2UsIGludCBkb21pZCkKLXsKLSAgICBpbnQgZmQgPSB4Y2UtPmZkOwot ICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fYmluZF91bmJvdW5kX3BvcnQgYmluZDsKLQotICAgIGJp bmQucmVtb3RlX2RvbWFpbiA9IGRvbWlkOwotCi0gICAgcmV0dXJuIGlvY3RsKGZkLCBJT0NUTF9F VlRDSE5fQklORF9VTkJPVU5EX1BPUlQsICZiaW5kKTsKLX0KLQotZXZ0Y2huX3BvcnRfb3JfZXJy b3JfdCB4Y19ldnRjaG5fYmluZF9pbnRlcmRvbWFpbih4Y19ldnRjaG4gKnhjZSwgaW50IGRvbWlk LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldnRj aG5fcG9ydF90IHJlbW90ZV9wb3J0KQotewotICAgIGludCBmZCA9IHhjZS0+ZmQ7Ci0gICAgc3Ry dWN0IGlvY3RsX2V2dGNobl9iaW5kX2ludGVyZG9tYWluIGJpbmQ7Ci0KLSAgICBiaW5kLnJlbW90 ZV9kb21haW4gPSBkb21pZDsKLSAgICBiaW5kLnJlbW90ZV9wb3J0ID0gcmVtb3RlX3BvcnQ7Ci0K LSAgICByZXR1cm4gaW9jdGwoZmQsIElPQ1RMX0VWVENITl9CSU5EX0lOVEVSRE9NQUlOLCAmYmlu ZCk7Ci19Ci0KLWV2dGNobl9wb3J0X29yX2Vycm9yX3QgeGNfZXZ0Y2huX2JpbmRfdmlycSh4Y19l dnRjaG4gKnhjZSwgdW5zaWduZWQgaW50IHZpcnEpCi17Ci0gICAgaW50IGZkID0geGNlLT5mZDsK LSAgICBzdHJ1Y3QgaW9jdGxfZXZ0Y2huX2JpbmRfdmlycSBiaW5kOwotCi0gICAgYmluZC52aXJx ID0gdmlycTsKLQotICAgIHJldHVybiBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX0JJTkRfVklSUSwg JmJpbmQpOwotfQotCi1pbnQgeGNfZXZ0Y2huX3VuYmluZCh4Y19ldnRjaG4gKnhjZSwgZXZ0Y2hu X3BvcnRfdCBwb3J0KQotewotICAgIGludCBmZCA9IHhjZS0+ZmQ7Ci0gICAgc3RydWN0IGlvY3Rs X2V2dGNobl91bmJpbmQgdW5iaW5kOwotCi0gICAgdW5iaW5kLnBvcnQgPSBwb3J0OwotCi0gICAg cmV0dXJuIGlvY3RsKGZkLCBJT0NUTF9FVlRDSE5fVU5CSU5ELCAmdW5iaW5kKTsKLX0KLQotZXZ0 Y2huX3BvcnRfb3JfZXJyb3JfdCB4Y19ldnRjaG5fcGVuZGluZyh4Y19ldnRjaG4gKnhjZSkKLXsK LSAgICBpbnQgZmQgPSB4Y2UtPmZkOwotICAgIGV2dGNobl9wb3J0X3QgcG9ydDsKLQotICAgIGlm ICggcmVhZChmZCwgJnBvcnQsIHNpemVvZihwb3J0KSkgIT0gc2l6ZW9mKHBvcnQpICkKLSAgICAg ICAgcmV0dXJuIC0xOwotCi0gICAgcmV0dXJuIHBvcnQ7Ci19Ci0KLWludCB4Y19ldnRjaG5fdW5t YXNrKHhjX2V2dGNobiAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQpCi17Ci0gICAgaW50IGZkID0g eGNlLT5mZDsKLQotICAgIGlmICggd3JpdGUoZmQsICZwb3J0LCBzaXplb2YocG9ydCkpICE9IHNp emVvZihwb3J0KSApCi0gICAgICAgIHJldHVybiAtMTsKLSAgICByZXR1cm4gMDsKLX0KLQogc3Rh dGljIHhjX29zZGVwX2hhbmRsZSBsaW51eF9nbnR0YWJfb3Blbih4Y19nbnR0YWIgKnhjZykKIHsK ICAgICBpbnQgZmQgPSBvcGVuKERFVlhFTiAiZ250ZGV2IiwgT19SRFdSKTsKZGlmZiAtLWdpdCBh L3Rvb2xzL2xpYnhjL3hjX21pbmlvcy5jIGIvdG9vbHMvbGlieGMveGNfbWluaW9zLmMKaW5kZXgg NGFjZTFiNS4uZGI3YjM0NCAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMveGNfbWluaW9zLmMKKysr IGIvdG9vbHMvbGlieGMveGNfbWluaW9zLmMKQEAgLTE5LDE0ICsxOSwxMSBAQAogICovCiAKICN1 bmRlZiBOREVCVUcKLSNpbmNsdWRlICJ4ZW4tZXh0ZXJuYWwvYnNkLXN5cy1xdWV1ZS5oIgogI2lu Y2x1ZGUgPG1pbmktb3MvdHlwZXMuaD4KICNpbmNsdWRlIDxtaW5pLW9zL29zLmg+CiAjaW5jbHVk ZSA8bWluaS1vcy9tbS5oPgogI2luY2x1ZGUgPG1pbmktb3MvbGliLmg+CiAjaW5jbHVkZSA8bWlu aS1vcy9nbnRtYXAuaD4KLSNpbmNsdWRlIDxtaW5pLW9zL2V2ZW50cy5oPgotI2luY2x1ZGUgPG1p bmktb3Mvd2FpdC5oPgogI2luY2x1ZGUgPHN5cy9tbWFuLmg+CiAKICNpbmNsdWRlIDx4ZW4vbWVt b3J5Lmg+CkBAIC00MSwxMyArMzgsOSBAQAogI2luY2x1ZGUgInhjX3ByaXZhdGUuaCIKIAogdm9p ZCBtaW5pb3NfaW50ZXJmYWNlX2Nsb3NlX2ZkKGludCBmZCk7Ci12b2lkIG1pbmlvc19ldnRjaG5f Y2xvc2VfZmQoaW50IGZkKTsKIHZvaWQgbWluaW9zX2dudHRhYl9jbG9zZV9mZChpbnQgZmQpOwog CiBleHRlcm4gdm9pZCBtaW5pb3NfaW50ZXJmYWNlX2Nsb3NlX2ZkKGludCBmZCk7Ci1leHRlcm4g dm9pZCBtaW5pb3NfZXZ0Y2huX2Nsb3NlX2ZkKGludCBmZCk7Ci0KLWV4dGVybiBzdHJ1Y3Qgd2Fp dF9xdWV1ZV9oZWFkIGV2ZW50X3F1ZXVlOwogCiBzdGF0aWMgeGNfb3NkZXBfaGFuZGxlIG1pbmlv c19wcml2Y21kX29wZW4oeGNfaW50ZXJmYWNlICp4Y2gpCiB7CkBAIC0xOTcsMjIwICsxOTAsNiBA QCBzdGF0aWMgc3RydWN0IHhjX29zZGVwX29wcyBtaW5pb3NfcHJpdmNtZF9vcHMgPSB7CiAgICAg fSwKIH07CiAKLQotLyogWFhYIE5vdGU6IFRoaXMgaXMgbm90IHRocmVhZHNhZmUgKi8KLXN0YXRp YyBzdHJ1Y3QgZXZ0Y2huX3BvcnRfaW5mbyogcG9ydF9hbGxvYyhpbnQgZmQpIHsKLSAgICBzdHJ1 Y3QgZXZ0Y2huX3BvcnRfaW5mbyAqcG9ydF9pbmZvOwotICAgIHBvcnRfaW5mbyA9IG1hbGxvYyhz aXplb2Yoc3RydWN0IGV2dGNobl9wb3J0X2luZm8pKTsKLSAgICBpZiAocG9ydF9pbmZvID09IE5V TEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHBvcnRfaW5mby0+cGVuZGluZyA9IDA7Ci0g ICAgcG9ydF9pbmZvLT5wb3J0ID0gLTE7Ci0gICAgcG9ydF9pbmZvLT5ib3VuZCA9IDA7Ci0KLSAg ICBMSVNUX0lOU0VSVF9IRUFEKCZmaWxlc1tmZF0uZXZ0Y2huLnBvcnRzLCBwb3J0X2luZm8sIGxp c3QpOwotICAgIHJldHVybiBwb3J0X2luZm87Ci19Ci0KLXN0YXRpYyB2b2lkIHBvcnRfZGVhbGxv YyhzdHJ1Y3QgZXZ0Y2huX3BvcnRfaW5mbyAqcG9ydF9pbmZvKSB7Ci0gICAgaWYgKHBvcnRfaW5m by0+Ym91bmQpCi0gICAgICAgIHVuYmluZF9ldnRjaG4ocG9ydF9pbmZvLT5wb3J0KTsKLSAgICBM SVNUX1JFTU9WRShwb3J0X2luZm8sIGxpc3QpOwotICAgIGZyZWUocG9ydF9pbmZvKTsKLX0KLQot aW50IG9zZGVwX2V2dGNobl9vcGVuKHhjX2V2dGNobiAqeGNlKQotewotICAgIGludCBmZCA9IGFs bG9jX2ZkKEZUWVBFX0VWVENITik7Ci0gICAgaWYgKCBmZCA9PSAtMSApCi0gICAgICAgIHJldHVy biAtMTsKLSAgICBMSVNUX0lOSVQoJmZpbGVzW2ZkXS5ldnRjaG4ucG9ydHMpOwotICAgIHhjZS0+ ZmQgPSBmZDsKLSAgICBwcmludGYoImV2dGNobl9vcGVuKCkgLT4gJWRcbiIsIGZkKTsKLSAgICBy ZXR1cm4gMDsKLX0KLQotaW50IG9zZGVwX2V2dGNobl9jbG9zZSh4Y19ldnRjaG4gKnhjZSwgeGNf b3NkZXBfaGFuZGxlIGgpCi17Ci0gICAgaWYgKCB4Y2UtPmZkID09IC0xICkKLSAgICAgICAgcmV0 dXJuIDA7Ci0KLSAgICByZXR1cm4gY2xvc2UoeGNlLT5mZCk7Ci19Ci0KLXZvaWQgbWluaW9zX2V2 dGNobl9jbG9zZV9mZChpbnQgZmQpCi17Ci0gICAgc3RydWN0IGV2dGNobl9wb3J0X2luZm8gKnBv cnRfaW5mbywgKnRtcDsKLSAgICBMSVNUX0ZPUkVBQ0hfU0FGRShwb3J0X2luZm8sICZmaWxlc1tm ZF0uZXZ0Y2huLnBvcnRzLCBsaXN0LCB0bXApCi0gICAgICAgIHBvcnRfZGVhbGxvYyhwb3J0X2lu Zm8pOwotCi0gICAgZmlsZXNbZmRdLnR5cGUgPSBGVFlQRV9OT05FOwotfQotCi1pbnQgeGNfZXZ0 Y2huX2ZkKHhjX2V2dGNobiAqeGNlKQotewotICAgIHJldHVybiB4Y2UtPmZkOwotfQotCi1pbnQg eGNfZXZ0Y2huX25vdGlmeSh4Y19ldnRjaG4gKnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KQotewot ICAgIGludCByZXQ7Ci0KLSAgICByZXQgPSBub3RpZnlfcmVtb3RlX3ZpYV9ldnRjaG4ocG9ydCk7 Ci0KLSAgICBpZiAocmV0IDwgMCkgewotCWVycm5vID0gLXJldDsKLQlyZXQgPSAtMTsKLSAgICB9 Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIHZvaWQgZXZ0Y2huX2hhbmRsZXIoZXZ0Y2hu X3BvcnRfdCBwb3J0LCBzdHJ1Y3QgcHRfcmVncyAqcmVncywgdm9pZCAqZGF0YSkKLXsKLSAgICBp bnQgZmQgPSAoaW50KShpbnRwdHJfdClkYXRhOwotICAgIHN0cnVjdCBldnRjaG5fcG9ydF9pbmZv ICpwb3J0X2luZm87Ci0gICAgYXNzZXJ0KGZpbGVzW2ZkXS50eXBlID09IEZUWVBFX0VWVENITik7 Ci0gICAgbWFza19ldnRjaG4ocG9ydCk7Ci0gICAgTElTVF9GT1JFQUNIKHBvcnRfaW5mbywgJmZp bGVzW2ZkXS5ldnRjaG4ucG9ydHMsIGxpc3QpIHsKLSAgICAgICAgaWYgKHBvcnRfaW5mby0+cG9y dCA9PSBwb3J0KQotICAgICAgICAgICAgZ290byBmb3VuZDsKLSAgICB9Ci0gICAgcHJpbnRrKCJV bmtub3duIHBvcnQgZm9yIGhhbmRsZSAlZFxuIiwgZmQpOwotICAgIHJldHVybjsKLQotIGZvdW5k OgotICAgIHBvcnRfaW5mby0+cGVuZGluZyA9IDE7Ci0gICAgZmlsZXNbZmRdLnJlYWQgPSAxOwot ICAgIHdha2VfdXAoJmV2ZW50X3F1ZXVlKTsKLX0KLQotZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCB4 Y19ldnRjaG5fYmluZF91bmJvdW5kX3BvcnQoeGNfZXZ0Y2huICp4Y2UsIGludCBkb21pZCkKLXsK LSAgICBpbnQgZmQgPSB4Y2UtPmZkOwotICAgIHN0cnVjdCBldnRjaG5fcG9ydF9pbmZvICpwb3J0 X2luZm87Ci0gICAgaW50IHJldDsKLSAgICBldnRjaG5fcG9ydF90IHBvcnQ7Ci0KLSAgICBhc3Nl cnQoZ2V0X2N1cnJlbnQoKSA9PSBtYWluX3RocmVhZCk7Ci0gICAgcG9ydF9pbmZvID0gcG9ydF9h bGxvYyhmZCk7Ci0gICAgaWYgKHBvcnRfaW5mbyA9PSBOVUxMKQotCXJldHVybiAtMTsKLQotICAg IHByaW50ZigieGNfZXZ0Y2huX2JpbmRfdW5ib3VuZF9wb3J0KCVkKSIsIGRvbWlkKTsKLSAgICBy ZXQgPSBldnRjaG5fYWxsb2NfdW5ib3VuZChkb21pZCwgZXZ0Y2huX2hhbmRsZXIsICh2b2lkKiko aW50cHRyX3QpZmQsICZwb3J0KTsKLSAgICBwcmludGYoIiA9ICVkXG4iLCByZXQpOwotCi0gICAg aWYgKHJldCA8IDApIHsKLQlwb3J0X2RlYWxsb2MocG9ydF9pbmZvKTsKLQllcnJubyA9IC1yZXQ7 Ci0JcmV0dXJuIC0xOwotICAgIH0KLSAgICBwb3J0X2luZm8tPmJvdW5kID0gMTsKLSAgICBwb3J0 X2luZm8tPnBvcnQgPSBwb3J0OwotICAgIHVubWFza19ldnRjaG4ocG9ydCk7Ci0gICAgcmV0dXJu IHBvcnQ7Ci19Ci0KLWV2dGNobl9wb3J0X29yX2Vycm9yX3QgeGNfZXZ0Y2huX2JpbmRfaW50ZXJk b21haW4oeGNfZXZ0Y2huICp4Y2UsIGludCBkb21pZCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZ0Y2huX3BvcnRfdCByZW1vdGVfcG9ydCkKLXsK LSAgICBpbnQgZmQgPSB4Y2UtPmZkOwotICAgIHN0cnVjdCBldnRjaG5fcG9ydF9pbmZvICpwb3J0 X2luZm87Ci0gICAgZXZ0Y2huX3BvcnRfdCBsb2NhbF9wb3J0OwotICAgIGludCByZXQ7Ci0KLSAg ICBhc3NlcnQoZ2V0X2N1cnJlbnQoKSA9PSBtYWluX3RocmVhZCk7Ci0gICAgcG9ydF9pbmZvID0g cG9ydF9hbGxvYyhmZCk7Ci0gICAgaWYgKHBvcnRfaW5mbyA9PSBOVUxMKQotCXJldHVybiAtMTsK LQotICAgIHByaW50ZigieGNfZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4oJWQsICUiUFJJZDMyIiki LCBkb21pZCwgcmVtb3RlX3BvcnQpOwotICAgIHJldCA9IGV2dGNobl9iaW5kX2ludGVyZG9tYWlu KGRvbWlkLCByZW1vdGVfcG9ydCwgZXZ0Y2huX2hhbmRsZXIsICh2b2lkKikoaW50cHRyX3QpZmQs ICZsb2NhbF9wb3J0KTsKLSAgICBwcmludGYoIiA9ICVkXG4iLCByZXQpOwotCi0gICAgaWYgKHJl dCA8IDApIHsKLQlwb3J0X2RlYWxsb2MocG9ydF9pbmZvKTsKLQllcnJubyA9IC1yZXQ7Ci0JcmV0 dXJuIC0xOwotICAgIH0KLSAgICBwb3J0X2luZm8tPmJvdW5kID0gMTsKLSAgICBwb3J0X2luZm8t PnBvcnQgPSBsb2NhbF9wb3J0OwotICAgIHVubWFza19ldnRjaG4obG9jYWxfcG9ydCk7Ci0gICAg cmV0dXJuIGxvY2FsX3BvcnQ7Ci19Ci0KLWludCB4Y19ldnRjaG5fdW5iaW5kKHhjX2V2dGNobiAq eGNlLCBldnRjaG5fcG9ydF90IHBvcnQpCi17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAgICBz dHJ1Y3QgZXZ0Y2huX3BvcnRfaW5mbyAqcG9ydF9pbmZvOwotCi0gICAgTElTVF9GT1JFQUNIKHBv cnRfaW5mbywgJmZpbGVzW2ZkXS5ldnRjaG4ucG9ydHMsIGxpc3QpIHsKLSAgICAgICAgaWYgKHBv cnRfaW5mby0+cG9ydCA9PSBwb3J0KSB7Ci0gICAgICAgICAgICBwb3J0X2RlYWxsb2MocG9ydF9p bmZvKTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgfQotICAgIHByaW50 ZigiV2FybmluZzogY291bGRuJ3QgZmluZCBwb3J0ICUiUFJJZDMyIiBmb3IgeGMgaGFuZGxlICV4 XG4iLCBwb3J0LCBmZCk7Ci0gICAgZXJybm8gPSBFSU5WQUw7Ci0gICAgcmV0dXJuIC0xOwotfQot Ci1ldnRjaG5fcG9ydF9vcl9lcnJvcl90IHhjX2V2dGNobl9iaW5kX3ZpcnEoeGNfZXZ0Y2huICp4 Y2UsIHVuc2lnbmVkIGludCB2aXJxKQotewotICAgIGludCBmZCA9IHhjZS0+ZmQ7Ci0gICAgc3Ry dWN0IGV2dGNobl9wb3J0X2luZm8gKnBvcnRfaW5mbzsKLSAgICBldnRjaG5fcG9ydF90IHBvcnQ7 Ci0KLSAgICBhc3NlcnQoZ2V0X2N1cnJlbnQoKSA9PSBtYWluX3RocmVhZCk7Ci0gICAgcG9ydF9p bmZvID0gcG9ydF9hbGxvYyhmZCk7Ci0gICAgaWYgKHBvcnRfaW5mbyA9PSBOVUxMKQotCXJldHVy biAtMTsKLQotICAgIHByaW50ZigieGNfZXZ0Y2huX2JpbmRfdmlycSglZCkiLCB2aXJxKTsKLSAg ICBwb3J0ID0gYmluZF92aXJxKHZpcnEsIGV2dGNobl9oYW5kbGVyLCAodm9pZCopKGludHB0cl90 KWZkKTsKLQotICAgIGlmIChwb3J0IDwgMCkgewotCXBvcnRfZGVhbGxvYyhwb3J0X2luZm8pOwot CWVycm5vID0gLXBvcnQ7Ci0JcmV0dXJuIC0xOwotICAgIH0KLSAgICBwb3J0X2luZm8tPmJvdW5k ID0gMTsKLSAgICBwb3J0X2luZm8tPnBvcnQgPSBwb3J0OwotICAgIHVubWFza19ldnRjaG4ocG9y dCk7Ci0gICAgcmV0dXJuIHBvcnQ7Ci19Ci0KLWV2dGNobl9wb3J0X29yX2Vycm9yX3QgeGNfZXZ0 Y2huX3BlbmRpbmcoeGNfZXZ0Y2huICp4Y2UpCi17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAg ICBzdHJ1Y3QgZXZ0Y2huX3BvcnRfaW5mbyAqcG9ydF9pbmZvOwotICAgIHVuc2lnbmVkIGxvbmcg ZmxhZ3M7Ci0gICAgZXZ0Y2huX3BvcnRfdCByZXQgPSAtMTsKLQotICAgIGxvY2FsX2lycV9zYXZl KGZsYWdzKTsKLSAgICBmaWxlc1tmZF0ucmVhZCA9IDA7Ci0KLSAgICBMSVNUX0ZPUkVBQ0gocG9y dF9pbmZvLCAmZmlsZXNbZmRdLmV2dGNobi5wb3J0cywgbGlzdCkgewotICAgICAgICBpZiAocG9y dF9pbmZvLT5wb3J0ICE9IC0xICYmIHBvcnRfaW5mby0+cGVuZGluZykgewotICAgICAgICAgICAg aWYgKHJldCA9PSAtMSkgewotICAgICAgICAgICAgICAgIHJldCA9IHBvcnRfaW5mby0+cG9ydDsK LSAgICAgICAgICAgICAgICBwb3J0X2luZm8tPnBlbmRpbmcgPSAwOwotICAgICAgICAgICAgfSBl bHNlIHsKLSAgICAgICAgICAgICAgICBmaWxlc1tmZF0ucmVhZCA9IDE7Ci0gICAgICAgICAgICAg ICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgbG9jYWxfaXJx X3Jlc3RvcmUoZmxhZ3MpOwotICAgIHJldHVybiByZXQ7Ci19Ci0KLWludCB4Y19ldnRjaG5fdW5t YXNrKHhjX2V2dGNobiAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQpCi17Ci0gICAgdW5tYXNrX2V2 dGNobihwb3J0KTsKLSAgICByZXR1cm4gMDsKLX0KLQogLyogT3B0aW9uYWxseSBmbHVzaCBmaWxl IHRvIGRpc2sgYW5kIGRpc2NhcmQgcGFnZSBjYWNoZSAqLwogdm9pZCBkaXNjYXJkX2ZpbGVfY2Fj aGUoeGNfaW50ZXJmYWNlICp4Y2gsIGludCBmZCwgaW50IGZsdXNoKQogewpkaWZmIC0tZ2l0IGEv dG9vbHMvbGlieGMveGNfbmV0YnNkLmMgYi90b29scy9saWJ4Yy94Y19uZXRic2QuYwppbmRleCBi MWI4MjhmLi5mZTRmMGExIDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy94Y19uZXRic2QuYworKysg Yi90b29scy9saWJ4Yy94Y19uZXRic2QuYwpAQCAtMTksNyArMTksNiBAQAogCiAjaW5jbHVkZSAi eGNfcHJpdmF0ZS5oIgogCi0jaW5jbHVkZSA8eGVuL3N5cy9ldnRjaG4uaD4KICNpbmNsdWRlIDx1 bmlzdGQuaD4KICNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPG1hbGxvYy5oPgpAQCAtMjIz LDExNCArMjIyLDYgQEAgc3RhdGljIHN0cnVjdCB4Y19vc2RlcF9vcHMgbmV0YnNkX3ByaXZjbWRf b3BzID0gewogICAgIH0sCiB9OwogCi0jZGVmaW5lIEVWVENITl9ERVZfTkFNRSAgIi9kZXYveGVu ZXZ0IgotCi1pbnQgb3NkZXBfZXZ0Y2huX29wZW4oeGNfZXZ0Y2huICp4Y2UpCi17Ci0gICAgaW50 IGZkID0gb3BlbihFVlRDSE5fREVWX05BTUUsIE9fTk9OQkxPQ0t8T19SRFdSKTsKLSAgICBpZiAo IGZkID09IC0xICkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIHhjZS0+ZmQgPSBmZDsKLSAgICBy ZXR1cm4gMDsKLX0KLQotaW50IG9zZGVwX2V2dGNobl9jbG9zZSh4Y19ldnRjaG4gKnhjZSwgeGNf b3NkZXBfaGFuZGxlIGgpCi17Ci0gICAgaWYgKCB4Y2UtPmZkID09IC0xICkKLSAgICAgICAgcmV0 dXJuIDA7Ci0KLSAgICByZXR1cm4gY2xvc2UoeGNlLT5mZCk7Ci19Ci0KLWludCB4Y19ldnRjaG5f ZmQoeGNfZXZ0Y2huICp4Y2UpCi17Ci0gICAgcmV0dXJuIHhjZS0+ZmQ7Ci19Ci0KLWludCB4Y19l dnRjaG5fbm90aWZ5KHhjX2V2dGNobiAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQpCi17Ci0gICAg aW50IGZkID0geGNlLT5mZDsKLSAgICBzdHJ1Y3QgaW9jdGxfZXZ0Y2huX25vdGlmeSBub3RpZnk7 Ci0KLSAgICBub3RpZnkucG9ydCA9IHBvcnQ7Ci0KLSAgICByZXR1cm4gaW9jdGwoZmQsIElPQ1RM X0VWVENITl9OT1RJRlksICZub3RpZnkpOwotfQotCi1ldnRjaG5fcG9ydF9vcl9lcnJvcl90IHhj X2V2dGNobl9iaW5kX3VuYm91bmRfcG9ydCh4Y19ldnRjaG4gKiB4Y2UsIGludCBkb21pZCkKLXsK LSAgICBpbnQgZmQgPSB4Y2UtPmZkOwotICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fYmluZF91bmJv dW5kX3BvcnQgYmluZDsKLSAgICBpbnQgcmV0OwotCi0gICAgYmluZC5yZW1vdGVfZG9tYWluID0g ZG9taWQ7Ci0KLSAgICByZXQgPSBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX0JJTkRfVU5CT1VORF9Q T1JULCAmYmluZCk7Ci0gICAgaWYgKHJldCA9PSAwKQotCXJldHVybiBiaW5kLnBvcnQ7Ci0gICAg ZWxzZQotCXJldHVybiAtMTsKLX0KLQotZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCB4Y19ldnRjaG5f YmluZF9pbnRlcmRvbWFpbih4Y19ldnRjaG4gKnhjZSwgaW50IGRvbWlkLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldnRjaG5fcG9ydF90IHJlbW90 ZV9wb3J0KQotewotICAgIGludCBmZCA9IHhjZS0+ZmQ7Ci0gICAgc3RydWN0IGlvY3RsX2V2dGNo bl9iaW5kX2ludGVyZG9tYWluIGJpbmQ7Ci0gICAgaW50IHJldDsKLQotICAgIGJpbmQucmVtb3Rl X2RvbWFpbiA9IGRvbWlkOwotICAgIGJpbmQucmVtb3RlX3BvcnQgPSByZW1vdGVfcG9ydDsKLQot ICAgIHJldCA9IGlvY3RsKGZkLCBJT0NUTF9FVlRDSE5fQklORF9JTlRFUkRPTUFJTiwgJmJpbmQp OwotICAgIGlmIChyZXQgPT0gMCkKLQlyZXR1cm4gYmluZC5wb3J0OwotICAgIGVsc2UKLQlyZXR1 cm4gLTE7Ci19Ci0KLWludCB4Y19ldnRjaG5fdW5iaW5kKHhjX2V2dGNobiAqeGNlLCBldnRjaG5f cG9ydF90IHBvcnQpCi17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAgICBzdHJ1Y3QgaW9jdGxf ZXZ0Y2huX3VuYmluZCB1bmJpbmQ7Ci0KLSAgICB1bmJpbmQucG9ydCA9IHBvcnQ7Ci0KLSAgICBy ZXR1cm4gaW9jdGwoZmQsIElPQ1RMX0VWVENITl9VTkJJTkQsICZ1bmJpbmQpOwotfQotCi1ldnRj aG5fcG9ydF9vcl9lcnJvcl90IHhjX2V2dGNobl9iaW5kX3ZpcnEoeGNfZXZ0Y2huICp4Y2UsIHVu c2lnbmVkIGludCB2aXJxKQotewotICAgIGludCBmZCA9IHhjZS0+ZmQ7Ci0gICAgc3RydWN0IGlv Y3RsX2V2dGNobl9iaW5kX3ZpcnEgYmluZDsKLSAgICBpbnQgZXJyOwotCi0gICAgYmluZC52aXJx ID0gdmlycTsKLQotICAgIGVyciA9IGlvY3RsKGZkLCBJT0NUTF9FVlRDSE5fQklORF9WSVJRLCAm YmluZCk7Ci0gICAgaWYgKGVycikKLQlyZXR1cm4gLTE7Ci0gICAgZWxzZQotCXJldHVybiBiaW5k LnBvcnQ7Ci19Ci0KLWV2dGNobl9wb3J0X29yX2Vycm9yX3QgeGNfZXZ0Y2huX3BlbmRpbmcoeGNf ZXZ0Y2huICp4Y2UpCi17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAgICBldnRjaG5fcG9ydF90 IHBvcnQ7Ci0KLSAgICBpZiAoIHJlYWRfZXhhY3QoZmQsIChjaGFyICopJnBvcnQsIHNpemVvZihw b3J0KSkgPT0gLTEgKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICByZXR1cm4gcG9ydDsKLX0K LQotaW50IHhjX2V2dGNobl91bm1hc2soeGNfZXZ0Y2huICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9y dCkKLXsKLSAgICBpbnQgZmQgPSB4Y2UtPmZkOwotICAgIHJldHVybiB3cml0ZV9leGFjdChmZCwg KGNoYXIgKikmcG9ydCwgc2l6ZW9mKHBvcnQpKTsKLX0KLQogLyogT3B0aW9uYWxseSBmbHVzaCBm aWxlIHRvIGRpc2sgYW5kIGRpc2NhcmQgcGFnZSBjYWNoZSAqLwogdm9pZCBkaXNjYXJkX2ZpbGVf Y2FjaGUoeGNfaW50ZXJmYWNlICp4Y2gsIGludCBmZCwgaW50IGZsdXNoKSAKIHsKZGlmZiAtLWdp dCBhL3Rvb2xzL2xpYnhjL3hjX3ByaXZhdGUuYyBiL3Rvb2xzL2xpYnhjL3hjX3ByaXZhdGUuYwpp bmRleCAxNTRlNTUzLi5jNjg3NmMzIDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy94Y19wcml2YXRl LmMKKysrIGIvdG9vbHMvbGlieGMveGNfcHJpdmF0ZS5jCkBAIC0yNTEsNDYgKzI1MSw2IEBAIGlu dCBkb194ZW5faHlwZXJjYWxsKHhjX2ludGVyZmFjZSAqeGNoLCBwcml2Y21kX2h5cGVyY2FsbF90 ICpoeXBlcmNhbGwpCiAgICAgcmV0dXJuIHhjaC0+b3BzLT51LnByaXZjbWQuaHlwZXJjYWxsKHhj aCwgeGNoLT5vcHNfaGFuZGxlLCBoeXBlcmNhbGwpOwogfQogCi14Y19ldnRjaG4gKnhjX2V2dGNo bl9vcGVuKHhlbnRvb2xsb2dfbG9nZ2VyICpsb2dnZXIsIHVuc2lnbmVkIG9wZW5fZmxhZ3MpCi17 Ci0gICAgeGNfZXZ0Y2huICp4Y2UgPSBtYWxsb2Moc2l6ZW9mKCp4Y2UpKTsKLSAgICBpbnQgcmM7 Ci0KLSAgICBpZiAoIXhjZSkgcmV0dXJuIE5VTEw7Ci0KLSAgICB4Y2UtPmZkID0gLTE7Ci0gICAg eGNlLT5sb2dnZXIgPSBsb2dnZXI7Ci0gICAgeGNlLT5sb2dnZXJfdG9mcmVlICA9IE5VTEw7Ci0K LSAgICBpZiAoIXhjZS0+bG9nZ2VyKSB7Ci0gICAgICAgIHhjZS0+bG9nZ2VyID0geGNlLT5sb2dn ZXJfdG9mcmVlID0KLSAgICAgICAgICAgICh4ZW50b29sbG9nX2xvZ2dlciopCi0gICAgICAgICAg ICB4dGxfY3JlYXRlbG9nZ2VyX3N0ZGlvc3RyZWFtKHN0ZGVyciwgWFRMX1BST0dSRVNTLCAwKTsK LSAgICAgICAgaWYgKCF4Y2UtPmxvZ2dlcikgZ290byBlcnI7Ci0gICAgfQotCi0gICAgcmMgPSBv c2RlcF9ldnRjaG5fb3Blbih4Y2UpOwotICAgIGlmICggcmMgIDwgMCApIGdvdG8gZXJyOwotCi0g ICAgcmV0dXJuIHhjZTsKLQotZXJyOgotICAgIG9zZGVwX2V2dGNobl9jbG9zZSh4Y2UpOwotICAg IHh0bF9sb2dnZXJfZGVzdHJveSh4Y2UtPmxvZ2dlcl90b2ZyZWUpOwotICAgIGZyZWUoeGNlKTsK LSAgICByZXR1cm4gTlVMTDsKLX0KLQotaW50IHhjX2V2dGNobl9jbG9zZSh4Y19ldnRjaG4gKnhj ZSkKLXsKLSAgICBpbnQgcmM7Ci0KLSAgICByYyA9IG9zZGVwX2V2dGNobl9jbG9zZSh4Y2UpOwot ICAgIHh0bF9sb2dnZXJfZGVzdHJveSh4Y2UtPmxvZ2dlcl90b2ZyZWUpOwotICAgIGZyZWUoeGNl KTsKLSAgICByZXR1cm4gcmM7Ci19Ci0KIHhjX2dudHRhYiAqeGNfZ250dGFiX29wZW4oeGVudG9v bGxvZ19sb2dnZXIgKmxvZ2dlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgb3Blbl9mbGFncykKIHsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL3hjX3ByaXZhdGUuaCBi L3Rvb2xzL2xpYnhjL3hjX3ByaXZhdGUuaAppbmRleCBhNWJmNzlhLi40NmUwZTc1IDEwMDY0NAot LS0gYS90b29scy9saWJ4Yy94Y19wcml2YXRlLmgKKysrIGIvdG9vbHMvbGlieGMveGNfcHJpdmF0 ZS5oCkBAIC0xMjMsMTMgKzEyMyw2IEBAIHN0cnVjdCB4Y19pbnRlcmZhY2VfY29yZSB7CiAgICAg eGNfb3NkZXBfaGFuZGxlICBvcHNfaGFuZGxlOyAvKiBvcGFxdWUgZGF0YSBmb3IgeGNfb3NkZXBf b3BzICovCiB9OwogCi1zdHJ1Y3QgeGVuZXZ0Y2huX2hhbmRsZSB7Ci0gICAgeGVudG9vbGxvZ19s b2dnZXIgKmxvZ2dlciwgKmxvZ2dlcl90b2ZyZWU7Ci0gICAgaW50IGZkOwotfTsKLWludCBvc2Rl cF9ldnRjaG5fb3Blbih4Y19ldnRjaG4gKnhjZSk7Ci1pbnQgb3NkZXBfZXZ0Y2huX2Nsb3NlKHhj X2V2dGNobiAqeGNlKTsKLQogdm9pZCB4Y19yZXBvcnRfZXJyb3IoeGNfaW50ZXJmYWNlICp4Y2gs IGludCBjb2RlLCBjb25zdCBjaGFyICpmbXQsIC4uLikKICAgICBfX2F0dHJpYnV0ZV9fKChmb3Jt YXQocHJpbnRmLDMsNCkpKTsKIHZvaWQgeGNfcmVwb3J0dih4Y19pbnRlcmZhY2UgKnhjaCwgeGVu dG9vbGxvZ19sb2dnZXIgKmxnLCB4ZW50b29sbG9nX2xldmVsLApkaWZmIC0tZ2l0IGEvdG9vbHMv bGlieGMveGNfc29sYXJpcy5jIGIvdG9vbHMvbGlieGMveGNfc29sYXJpcy5jCmluZGV4IDA4ODIy OGEuLmVkNzk4N2MgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL3hjX3NvbGFyaXMuYworKysgYi90 b29scy9saWJ4Yy94Y19zb2xhcmlzLmMKQEAgLTIwLDcgKzIwLDYgQEAKICNpbmNsdWRlICJ4Y19w cml2YXRlLmgiCiAKICNpbmNsdWRlIDx4ZW4vbWVtb3J5Lmg+Ci0jaW5jbHVkZSA8eGVuL3N5cy9l dnRjaG4uaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1 ZGUgPG1hbGxvYy5oPgpAQCAtMTk0LDEwMiArMTkzLDYgQEAgc3RhdGljIHN0cnVjdCB4Y19vc2Rl cF9vcHMgc29sYXJpc19wcml2Y21kX29wcyA9IHsKICAgICB9LAogfTsKIAotaW50IG9zZGVwX2V2 dGNobl9vcGVuKHhjX2V2dGNobiAqeGNlKQotewotICAgIGludCBmZDsKLQotICAgIGlmICggKGZk ID0gb3BlbigiL2Rldi94ZW4vZXZ0Y2huIiwgT19SRFdSKSkgPT0gLTEgKQotICAgIHsKLSAgICAg ICAgUEVSUk9SKCJDb3VsZCBub3Qgb3BlbiBldmVudCBjaGFubmVsIGludGVyZmFjZSIpOwotICAg ICAgICByZXR1cm4gLTE7Ci0gICAgfQotCi0gICAgeGNlLT5mZCA9IGZkOwotICAgIHJldHVybiAw OwotfQotCi1pbnQgb3NkZXBfZXZ0Y2huX2Nsb3NlKHhjX2V2dGNobiAqeGNlKQotewotICAgIGlm ICggeGNlLT5mZCA9PSAtMSApCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIGNsb3Nl KHhjZS0+ZmQpOwotfQotCi1pbnQgeGNfZXZ0Y2huX2ZkKHhjX2V2dGNobiAqeGNlKQotewotICAg IHJldHVybiB4Y2UtPmZkOwotfQotCi1pbnQgeGNfZXZ0Y2huX25vdGlmeSh4Y19ldnRjaG4gKnhj ZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KQotewotICAgIGludCBmZCA9IHhjZS0+ZmQ7Ci0gICAgc3Ry dWN0IGlvY3RsX2V2dGNobl9ub3RpZnkgbm90aWZ5OwotCi0gICAgbm90aWZ5LnBvcnQgPSBwb3J0 OwotCi0gICAgcmV0dXJuIGlvY3RsKGZkLCBJT0NUTF9FVlRDSE5fTk9USUZZLCAmbm90aWZ5KTsK LX0KLQotZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCB4Y19ldnRjaG5fYmluZF91bmJvdW5kX3BvcnQo eGNfZXZ0Y2huICp4Y2UsIGludCBkb21pZCkKLXsKLSAgICBpbnQgZmQgPSB4Y2UtPmZkOwotICAg IHN0cnVjdCBpb2N0bF9ldnRjaG5fYmluZF91bmJvdW5kX3BvcnQgYmluZDsKLQotICAgIGJpbmQu cmVtb3RlX2RvbWFpbiA9IGRvbWlkOwotCi0gICAgcmV0dXJuIGlvY3RsKGZkLCBJT0NUTF9FVlRD SE5fQklORF9VTkJPVU5EX1BPUlQsICZiaW5kKTsKLX0KLQotZXZ0Y2huX3BvcnRfb3JfZXJyb3Jf dCB4Y19ldnRjaG5fYmluZF9pbnRlcmRvbWFpbih4Y19ldnRjaG4gKnhjZSwgaW50IGRvbWlkLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldnRjaG5f cG9ydF90IHJlbW90ZV9wb3J0KQotewotICAgIGludCBmZCA9IHhjZS0+ZmQ7Ci0gICAgc3RydWN0 IGlvY3RsX2V2dGNobl9iaW5kX2ludGVyZG9tYWluIGJpbmQ7Ci0KLSAgICBiaW5kLnJlbW90ZV9k b21haW4gPSBkb21pZDsKLSAgICBiaW5kLnJlbW90ZV9wb3J0ID0gcmVtb3RlX3BvcnQ7Ci0KLSAg ICByZXR1cm4gaW9jdGwoZmQsIElPQ1RMX0VWVENITl9CSU5EX0lOVEVSRE9NQUlOLCAmYmluZCk7 Ci19Ci0KLWV2dGNobl9wb3J0X29yX2Vycm9yX3QgeGNfZXZ0Y2huX2JpbmRfdmlycSh4Y19ldnRj aG4gKnhjZSwgdW5zaWduZWQgaW50IHZpcnEpCi17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAg ICBzdHJ1Y3QgaW9jdGxfZXZ0Y2huX2JpbmRfdmlycSBiaW5kOwotCi0gICAgYmluZC52aXJxID0g dmlycTsKLQotICAgIHJldHVybiBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX0JJTkRfVklSUSwgJmJp bmQpOwotfQotCi1pbnQgeGNfZXZ0Y2huX3VuYmluZCh4Y19ldnRjaG4gKnhjZSwgZXZ0Y2huX3Bv cnRfdCBwb3J0KQotewotICAgIGludCBmZCA9IHhjZS0+ZmQ7Ci0gICAgc3RydWN0IGlvY3RsX2V2 dGNobl91bmJpbmQgdW5iaW5kOwotCi0gICAgdW5iaW5kLnBvcnQgPSBwb3J0OwotCi0gICAgcmV0 dXJuIGlvY3RsKGZkLCBJT0NUTF9FVlRDSE5fVU5CSU5ELCAmdW5iaW5kKTsKLX0KLQotZXZ0Y2hu X3BvcnRfb3JfZXJyb3JfdCB4Y19ldnRjaG5fcGVuZGluZyh4Y19ldnRjaG4gKnhjZSkKLXsKLSAg ICBpbnQgZmQgPSB4Y2UtPmZkOwotICAgIGV2dGNobl9wb3J0X3QgcG9ydDsKLQotICAgIGlmICgg cmVhZF9leGFjdChmZCwgKGNoYXIgKikmcG9ydCwgc2l6ZW9mKHBvcnQpKSA9PSAtMSApCi0gICAg ICAgIHJldHVybiAtMTsKLQotICAgIHJldHVybiBwb3J0OwotfQotCi1pbnQgeGNfZXZ0Y2huX3Vu bWFzayh4Y19ldnRjaG4gKnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KQotewotICAgIGludCBmZCA9 IHhjZS0+ZmQ7Ci0gICAgcmV0dXJuIHdyaXRlX2V4YWN0KGZkLCAoY2hhciAqKSZwb3J0LCBzaXpl b2YocG9ydCkpOwotfQotCiAvKiBPcHRpb25hbGx5IGZsdXNoIGZpbGUgdG8gZGlzayBhbmQgZGlz Y2FyZCBwYWdlIGNhY2hlICovCiB2b2lkIGRpc2NhcmRfZmlsZV9jYWNoZSh4Y19pbnRlcmZhY2Ug KnhjaCwgaW50IGZkLCBpbnQgZmx1c2gpIAogewpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMveGNf c3VzcGVuZC5jIGIvdG9vbHMvbGlieGMveGNfc3VzcGVuZC5jCmluZGV4IGJiYTM2ZTcuLjgzNjFj N2IgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL3hjX3N1c3BlbmQuYworKysgYi90b29scy9saWJ4 Yy94Y19zdXNwZW5kLmMKQEAgLTE2LDYgKzE2LDggQEAKICNpbmNsdWRlIDx1bmlzdGQuaD4KICNp bmNsdWRlIDxmY250bC5oPgogCisjaW5jbHVkZSA8eGVuZXZ0Y2huLmg+CisKICNpbmNsdWRlICJ4 Y19wcml2YXRlLmgiCiAjaW5jbHVkZSAieGVuZ3Vlc3QuaCIKIApAQCAtMTI0LDEyICsxMjYsMTIg QEAgc3RhdGljIGludCB1bmxvY2tfc3VzcGVuZF9ldmVudCh4Y19pbnRlcmZhY2UgKnhjaCwgaW50 IGRvbWlkLCBpbnQgKmxvY2tmZCkKICAgICByZXR1cm4gLTE7CiB9CiAKLWludCB4Y19hd2FpdF9z dXNwZW5kKHhjX2ludGVyZmFjZSAqeGNoLCB4Y19ldnRjaG4gKnhjZSwgaW50IHN1c3BlbmRfZXZ0 Y2huKQoraW50IHhjX2F3YWl0X3N1c3BlbmQoeGNfaW50ZXJmYWNlICp4Y2gsIHhlbmV2dGNobl9o YW5kbGUgKnhjZSwgaW50IHN1c3BlbmRfZXZ0Y2huKQogewogICAgIGludCByYzsKIAogICAgIGRv IHsKLSAgICAgICAgcmMgPSB4Y19ldnRjaG5fcGVuZGluZyh4Y2UpOworICAgICAgICByYyA9IHhl bmV2dGNobl9wZW5kaW5nKHhjZSk7CiAgICAgICAgIGlmIChyYyA8IDApIHsKICAgICAgICAgICAg IEVSUk9SKCJlcnJvciBwb2xsaW5nIHN1c3BlbmQgbm90aWZpY2F0aW9uIGNoYW5uZWw6ICVkIiwg cmMpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMTM3LDcgKzEzOSw3IEBAIGludCB4Y19h d2FpdF9zdXNwZW5kKHhjX2ludGVyZmFjZSAqeGNoLCB4Y19ldnRjaG4gKnhjZSwgaW50IHN1c3Bl bmRfZXZ0Y2huKQogICAgIH0gd2hpbGUgKHJjICE9IHN1c3BlbmRfZXZ0Y2huKTsKIAogICAgIC8q IGhhcm1sZXNzIGZvciBvbmUtb2ZmIHN1c3BlbmQgKi8KLSAgICBpZiAoeGNfZXZ0Y2huX3VubWFz ayh4Y2UsIHN1c3BlbmRfZXZ0Y2huKSA8IDApCisgICAgaWYgKHhlbmV2dGNobl91bm1hc2soeGNl LCBzdXNwZW5kX2V2dGNobikgPCAwKQogICAgICAgICBFUlJPUigiZmFpbGVkIHRvIHVubWFzayBz dXNwZW5kIG5vdGlmaWNhdGlvbiBjaGFubmVsOiAlZCIsIHJjKTsKIAogICAgIHJldHVybiAwOwpA QCAtMTQ1LDE2ICsxNDcsMTYgQEAgaW50IHhjX2F3YWl0X3N1c3BlbmQoeGNfaW50ZXJmYWNlICp4 Y2gsIHhjX2V2dGNobiAqeGNlLCBpbnQgc3VzcGVuZF9ldnRjaG4pCiAKIC8qIEludGVybmFsIGNh bGxlcnMgYXJlIGFsbG93ZWQgdG8gY2FsbCB0aGlzIHdpdGggc3VzcGVuZF9ldnRjaG48MAogICog YnV0ICpsb2NrZmQ+MC4gKi8KLWludCB4Y19zdXNwZW5kX2V2dGNobl9yZWxlYXNlKHhjX2ludGVy ZmFjZSAqeGNoLCB4Y19ldnRjaG4gKnhjZSwKK2ludCB4Y19zdXNwZW5kX2V2dGNobl9yZWxlYXNl KHhjX2ludGVyZmFjZSAqeGNoLCB4ZW5ldnRjaG5faGFuZGxlICp4Y2UsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgZG9taWQsIGludCBzdXNwZW5kX2V2dGNobiwgaW50ICpsb2Nr ZmQpCiB7CiAgICAgaWYgKHN1c3BlbmRfZXZ0Y2huID49IDApCi0gICAgICAgIHhjX2V2dGNobl91 bmJpbmQoeGNlLCBzdXNwZW5kX2V2dGNobik7CisgICAgICAgIHhlbmV2dGNobl91bmJpbmQoeGNl LCBzdXNwZW5kX2V2dGNobik7CiAKICAgICByZXR1cm4gdW5sb2NrX3N1c3BlbmRfZXZlbnQoeGNo LCBkb21pZCwgbG9ja2ZkKTsKIH0KIAotaW50IHhjX3N1c3BlbmRfZXZ0Y2huX2luaXRfc2FuZSh4 Y19pbnRlcmZhY2UgKnhjaCwgeGNfZXZ0Y2huICp4Y2UsCitpbnQgeGNfc3VzcGVuZF9ldnRjaG5f aW5pdF9zYW5lKHhjX2ludGVyZmFjZSAqeGNoLCB4ZW5ldnRjaG5faGFuZGxlICp4Y2UsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkb21pZCwgaW50IHBvcnQsIGludCAqbG9j a2ZkKQogewogICAgIGludCByYywgc3VzcGVuZF9ldnRjaG4gPSAtMTsKQEAgLTE2NCw3ICsxNjYs NyBAQCBpbnQgeGNfc3VzcGVuZF9ldnRjaG5faW5pdF9zYW5lKHhjX2ludGVyZmFjZSAqeGNoLCB4 Y19ldnRjaG4gKnhjZSwKICAgICAgICAgZ290byBjbGVhbnVwOwogICAgIH0KIAotICAgIHN1c3Bl bmRfZXZ0Y2huID0geGNfZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4oeGNlLCBkb21pZCwgcG9ydCk7 CisgICAgc3VzcGVuZF9ldnRjaG4gPSB4ZW5ldnRjaG5fYmluZF9pbnRlcmRvbWFpbih4Y2UsIGRv bWlkLCBwb3J0KTsKICAgICBpZiAoc3VzcGVuZF9ldnRjaG4gPCAwKSB7CiAgICAgICAgIEVSUk9S KCJmYWlsZWQgdG8gYmluZCBzdXNwZW5kIGV2ZW50IGNoYW5uZWw6ICVkIiwgc3VzcGVuZF9ldnRj aG4pOwogICAgICAgICBnb3RvIGNsZWFudXA7CkBAIC0xODQsNyArMTg2LDcgQEAgY2xlYW51cDoK ICAgICByZXR1cm4gLTE7CiB9CiAKLWludCB4Y19zdXNwZW5kX2V2dGNobl9pbml0X2V4Y2x1c2l2 ZSh4Y19pbnRlcmZhY2UgKnhjaCwgeGNfZXZ0Y2huICp4Y2UsCitpbnQgeGNfc3VzcGVuZF9ldnRj aG5faW5pdF9leGNsdXNpdmUoeGNfaW50ZXJmYWNlICp4Y2gsIHhlbmV2dGNobl9oYW5kbGUgKnhj ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZG9taWQsIGludCBw b3J0LCBpbnQgKmxvY2tmZCkKIHsKICAgICBpbnQgc3VzcGVuZF9ldnRjaG47CmRpZmYgLS1naXQg YS90b29scy9saWJ4bC9NYWtlZmlsZSBiL3Rvb2xzL2xpYnhsL01ha2VmaWxlCmluZGV4IDdkMTJj ZGMuLjIzY2ZkNmIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL01ha2VmaWxlCisrKyBiL3Rvb2xz L2xpYnhsL01ha2VmaWxlCkBAIC0yMCwxMiArMjAsMTMgQEAgTElCVVVJRF9MSUJTICs9IC1sdXVp ZAogZW5kaWYKIAogTElCWExfTElCUyA9Ci1MSUJYTF9MSUJTID0gJChMRExJQlNfbGlieGVudG9v bGxvZykgJChMRExJQlNfbGlieGVuY3RybCkgJChMRExJQlNfbGlieGVuZ3Vlc3QpICQoTERMSUJT X2xpYnhlbnN0b3JlKSAkKExETElCU19saWJibGt0YXBjdGwpICQoUFRZRlVOQ1NfTElCUykgJChM SUJVVUlEX0xJQlMpCitMSUJYTF9MSUJTID0gJChMRExJQlNfbGlieGVudG9vbGxvZykgJChMRExJ QlNfbGlieGVuZXZ0Y2huKSAkKExETElCU19saWJ4ZW5jdHJsKSAkKExETElCU19saWJ4ZW5ndWVz dCkgJChMRExJQlNfbGlieGVuc3RvcmUpICQoTERMSUJTX2xpYmJsa3RhcGN0bCkgJChQVFlGVU5D U19MSUJTKSAkKExJQlVVSURfTElCUykKIGlmZXEgKCQoQ09ORklHX1JFTVVTX05FVEJVRikseSkK IExJQlhMX0xJQlMgKz0gJChMSUJOTDNfTElCUykKIGVuZGlmCiAKIENGTEFHU19MSUJYTCArPSAk KENGTEFHU19saWJ4ZW50b29sbG9nKQorQ0ZMQUdTX0xJQlhMICs9ICQoQ0ZMQUdTX2xpYnhlbmV2 dGNobikKIENGTEFHU19MSUJYTCArPSAkKENGTEFHU19saWJ4ZW5jdHJsKQogQ0ZMQUdTX0xJQlhM ICs9ICQoQ0ZMQUdTX2xpYnhlbmd1ZXN0KQogQ0ZMQUdTX0xJQlhMICs9ICQoQ0ZMQUdTX2xpYnhl bnN0b3JlKQpAQCAtMTU5LDcgKzE2MCw3IEBAICQoWEVOX0lOSVRfRE9NMF9PQkpTKTogQ0ZMQUdT ICs9ICQoQ0ZMQUdTX2xpYnhlbmN0cmwpCiAkKFhFTl9JTklUX0RPTTBfT0JKUyk6IENGTEFHUyAr PSAkKENGTEFHU19saWJ4ZW5zdG9yZSkKIAogU0FWRV9IRUxQRVJfT0JKUyA9IGxpYnhsX3NhdmVf aGVscGVyLm8gX2xpYnhsX3NhdmVfbXNnc19oZWxwZXIubwotJChTQVZFX0hFTFBFUl9PQkpTKTog Q0ZMQUdTICs9ICQoQ0ZMQUdTX2xpYnhlbmN0cmwpCiskKFNBVkVfSEVMUEVSX09CSlMpOiBDRkxB R1MgKz0gJChDRkxBR1NfbGlieGVuY3RybCkgJChDRkxBR1NfbGlieGVuZXZ0Y2huKQogCiBQS0df Q09ORklHID0geGVubGlnaHQucGMgeGx1dGlsLnBjCiAKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhs L2xpYnhsLmMgYi90b29scy9saWJ4bC9saWJ4bC5jCmluZGV4IGU0ZWE0NzYuLjU3OWQwOWEgMTAw NjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsLmMKKysrIGIvdG9vbHMvbGlieGwvbGlieGwuYwpA QCAtMTg2LDcgKzE4Niw3IEBAIGludCBsaWJ4bF9jdHhfZnJlZShsaWJ4bF9jdHggKmN0eCkKICAg ICBpZiAoY3R4LT54Y2gpIHhjX2ludGVyZmFjZV9jbG9zZShjdHgtPnhjaCk7CiAgICAgbGlieGxf dmVyc2lvbl9pbmZvX2Rpc3Bvc2UoJmN0eC0+dmVyc2lvbl9pbmZvKTsKICAgICBpZiAoY3R4LT54 c2gpIHhzX2RhZW1vbl9jbG9zZShjdHgtPnhzaCk7Ci0gICAgaWYgKGN0eC0+eGNlKSB4Y19ldnRj aG5fY2xvc2UoY3R4LT54Y2UpOworICAgIGlmIChjdHgtPnhjZSkgeGVuZXZ0Y2huX2Nsb3NlKGN0 eC0+eGNlKTsKIAogICAgIGxpYnhsX19wb2xsZXJfcHV0KGN0eCwgY3R4LT5wb2xsZXJfYXBwKTsK ICAgICBjdHgtPnBvbGxlcl9hcHAgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGli eGxfZG9tX3N1c3BlbmQuYyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2RvbV9zdXNwZW5kLmMKaW5kZXgg NGNjMDFhZC4uYTJlOGQ4NiAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfZG9tX3N1c3Bl bmQuYworKysgYi90b29scy9saWJ4bC9saWJ4bF9kb21fc3VzcGVuZC5jCkBAIC0xMDcsOSArMTA3 LDkgQEAgc3RhdGljIHZvaWQgZG9tYWluX3N1c3BlbmRfY2FsbGJhY2tfY29tbW9uKGxpYnhsX19l Z2MgKmVnYywKICAgICBpZiAoKGh2bV9zX3N0YXRlID09IDApICYmIChkc3MtPmd1ZXN0X2V2dGNo bi5wb3J0ID49IDApKSB7CiAgICAgICAgIExPRyhERUJVRywgImlzc3VpbmcgJXMgc3VzcGVuZCBy ZXF1ZXN0IHZpYSBldmVudCBjaGFubmVsIiwKICAgICAgICAgICAgIGRzcy0+aHZtID8gIlBWSFZN IiA6ICJQViIpOwotICAgICAgICByZXQgPSB4Y19ldnRjaG5fbm90aWZ5KENUWC0+eGNlLCBkc3Mt Pmd1ZXN0X2V2dGNobi5wb3J0KTsKKyAgICAgICAgcmV0ID0geGVuZXZ0Y2huX25vdGlmeShDVFgt PnhjZSwgZHNzLT5ndWVzdF9ldnRjaG4ucG9ydCk7CiAgICAgICAgIGlmIChyZXQgPCAwKSB7Ci0g ICAgICAgICAgICBMT0coRVJST1IsICJ4Y19ldnRjaG5fbm90aWZ5IGZhaWxlZCByZXQ9JWQiLCBy ZXQpOworICAgICAgICAgICAgTE9HKEVSUk9SLCAieGVuZXZ0Y2huX25vdGlmeSBmYWlsZWQgcmV0 PSVkIiwgcmV0KTsKICAgICAgICAgICAgIHJjID0gRVJST1JfRkFJTDsKICAgICAgICAgICAgIGdv dG8gZXJyOwogICAgICAgICB9CmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF9ldmVudC5j IGIvdG9vbHMvbGlieGwvbGlieGxfZXZlbnQuYwppbmRleCBiZmI2YjMxLi4yOTk3MTYwIDEwMDY0 NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF9ldmVudC5jCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhs X2V2ZW50LmMKQEAgLTc0NCw3ICs3NDQsNyBAQCBzdGF0aWMgdm9pZCBldnRjaG5fZmRfY2FsbGJh Y2sobGlieGxfX2VnYyAqZWdjLCBsaWJ4bF9fZXZfZmQgKmV2LAogICAgICAgICAvKiBPSywgdGhh dCdzIHRoYXQgd29ya2Fyb3VuZCBkb25lLiAgV2UgY2FuIGFjdHVhbGx5IGNoZWNrIGZvcgogICAg ICAgICAgKiB3b3JrIGZvciB1cyB0byBkbzogKi8KIAotICAgICAgICBwb3J0ID0geGNfZXZ0Y2hu X3BlbmRpbmcoQ1RYLT54Y2UpOworICAgICAgICBwb3J0ID0geGVuZXZ0Y2huX3BlbmRpbmcoQ1RY LT54Y2UpOwogICAgICAgICBpZiAocG9ydCA8IDApIHsKICAgICAgICAgICAgIGlmIChlcnJubyA9 PSBFQUdBSU4pCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC03NzAsMjAgKzc3MCwyMCBAQCBz dGF0aWMgdm9pZCBldnRjaG5fZmRfY2FsbGJhY2sobGlieGxfX2VnYyAqZWdjLCBsaWJ4bF9fZXZf ZmQgKmV2LAogfQogCiBpbnQgbGlieGxfX2N0eF9ldnRjaG5faW5pdChsaWJ4bF9fZ2MgKmdjKSB7 Ci0gICAgeGNfZXZ0Y2huICp4Y2U7CisgICAgeGVuZXZ0Y2huX2hhbmRsZSAqeGNlOwogICAgIGlu dCByYywgZmQ7CiAKICAgICBpZiAoQ1RYLT54Y2UpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg eGNlID0geGNfZXZ0Y2huX29wZW4oQ1RYLT5sZywgMCk7CisgICAgeGNlID0geGVuZXZ0Y2huX29w ZW4oQ1RYLT5sZywgMCk7CiAgICAgaWYgKCF4Y2UpIHsKICAgICAgICAgTE9HRShFUlJPUiwiY2Fu bm90IG9wZW4gbGlieGMgZXZ0Y2huIGhhbmRsZSIpOwogICAgICAgICByYyA9IEVSUk9SX0ZBSUw7 CiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KIAotICAgIGZkID0geGNfZXZ0Y2huX2ZkKHhjZSk7 CisgICAgZmQgPSB4ZW5ldnRjaG5fZmQoeGNlKTsKICAgICBhc3NlcnQoZmQgPj0gMCk7CiAKICAg ICByYyA9IGxpYnhsX2ZkX3NldF9ub25ibG9jayhDVFgsIGZkLCAxKTsKQEAgLTc5Myw3ICs3OTMs NyBAQCBpbnQgbGlieGxfX2N0eF9ldnRjaG5faW5pdChsaWJ4bF9fZ2MgKmdjKSB7CiAgICAgcmV0 dXJuIDA7CiAKICBvdXQ6Ci0gICAgeGNfZXZ0Y2huX2Nsb3NlKHhjZSk7CisgICAgeGVuZXZ0Y2hu X2Nsb3NlKHhjZSk7CiAgICAgcmV0dXJuIHJjOwogfQogCkBAIC04MTUsMTQgKzgxNSwxNCBAQCBp bnQgbGlieGxfX2V2X2V2dGNobl93YWl0KGxpYnhsX19nYyAqZ2MsIGxpYnhsX19ldl9ldnRjaG4g KmV2ZXYpCiAKICAgICBpZiAoIWxpYnhsX19ldl9mZF9pc3JlZ2lzdGVyZWQoJkNUWC0+ZXZ0Y2hu X2VmZCkpIHsKICAgICAgICAgcmMgPSBsaWJ4bF9fZXZfZmRfcmVnaXN0ZXIoZ2MsICZDVFgtPmV2 dGNobl9lZmQsIGV2dGNobl9mZF9jYWxsYmFjaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgeGNfZXZ0Y2huX2ZkKENUWC0+eGNlKSwgUE9MTElOKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgeGVuZXZ0Y2huX2ZkKENUWC0+eGNlKSwgUE9MTElOKTsKICAg ICAgICAgaWYgKHJjKSBnb3RvIG91dDsKICAgICB9CiAKICAgICBpZiAoZXZldi0+d2FpdGluZykK ICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByID0geGNfZXZ0Y2huX3VubWFzayhDVFgtPnhjZSwg ZXZldi0+cG9ydCk7CisgICAgciA9IHhlbmV2dGNobl91bm1hc2soQ1RYLT54Y2UsIGV2ZXYtPnBv cnQpOwogICAgIGlmIChyKSB7CiAgICAgICAgIExPR0UoRVJST1IsImNhbm5vdCB1bm1hc2sgZXZl bnQgY2hhbm5lbCAlZCIsZXZldi0+cG9ydCk7CiAgICAgICAgIHJjID0gRVJST1JfRkFJTDsKZGlm ZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX2ludGVybmFsLmggYi90b29scy9saWJ4bC9saWJ4 bF9pbnRlcm5hbC5oCmluZGV4IGMyNDEzYzIuLjZjZWY2NTQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xp YnhsL2xpYnhsX2ludGVybmFsLmgKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaApA QCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgPHN5cy9maWxlLmg+CiAjaW5jbHVkZSA8c3lzL2lv Y3RsLmg+CiAKKyNpbmNsdWRlIDx4ZW5ldnRjaG4uaD4KICNpbmNsdWRlIDx4ZW5zdG9yZS5oPgog I2luY2x1ZGUgPHhlbmN0cmwuaD4KICNpbmNsdWRlIDx4ZW5ndWVzdC5oPgpAQCAtNDQwLDcgKzQ0 MSw3IEBAIHN0cnVjdCBsaWJ4bF9fY3R4IHsKICAgICB1aW50MzJfdCB3YXRjaF9jb3VudGVyOyAv KiBoZWxwcyBkaXNhbWJpZ3VhdGUgc2xvdCByZXVzZSAqLwogICAgIGxpYnhsX19ldl9mZCB3YXRj aF9lZmQ7CiAKLSAgICB4Y19ldnRjaG4gKnhjZTsgLyogd2FpdGluZyBtdXN0IGJlIGRvbmUgb25s eSB3aXRoIGxpYnhsX19ldl9ldnRjaG4qICovCisgICAgeGVuZXZ0Y2huX2hhbmRsZSAqeGNlOyAv KiB3YWl0aW5nIG11c3QgYmUgZG9uZSBvbmx5IHdpdGggbGlieGxfX2V2X2V2dGNobiogKi8KICAg ICBMSUJYTF9MSVNUX0hFQUQoLCBsaWJ4bF9fZXZfZXZ0Y2huKSBldnRjaG5zX3dhaXRpbmc7CiAg ICAgbGlieGxfX2V2X2ZkIGV2dGNobl9lZmQ7CiAKQEAgLTkxNCw3ICs5MTUsNyBAQCBzdGF0aWMg aW5saW5lIGludCBsaWJ4bF9fZXZfeHN3YXRjaF9pc3JlZ2lzdGVyZWQoY29uc3QgbGlieGxfX2V2 X3hzd2F0Y2ggKnh3KQogICogV2hlbiB0aGUgZXZlbnQgaXMgc2lnbmFsZWQgdGhlbiB0aGUgY2Fs bGJhY2sgd2lsbCBiZSBtYWRlLCBvbmNlLgogICogVGhlbiB5b3UgbXVzdCBjYWxsIGxpYnhsX19l dl9ldnRjaG5fd2FpdCBhZ2FpbiwgaWYgZGVzaXJlZC4KICAqCi0gKiBZb3UgbXVzdCBOT1QgY2Fs bCB4Y19ldnRjaG5fdW5tYXNrLiAgd2FpdCB3aWxsIGRvIHRoYXQgZm9yIHlvdS4KKyAqIFlvdSBt dXN0IE5PVCBjYWxsIHhlbmV2dGNobl91bm1hc2suICB3YWl0IHdpbGwgZG8gdGhhdCBmb3IgeW91 LgogICoKICAqIENhbGxpbmcgbGlieGxfX2V2X2V2dGNobl9jYW5jZWwgd2lsbCBhcnJhbmdlIGZv ciBsaWJ4bCB0byBkaXNyZWdhcmQKICAqIGZ1dHVyZSBvY2N1cnJlbmNlcyBvZiBldmVudC4gIEJv dGggbGlieGxfX2V2X2V2dGNobl93YWl0IGFuZApkaWZmIC0tZ2l0IGEvdG9vbHMvbWlzYy9NYWtl ZmlsZSBiL3Rvb2xzL21pc2MvTWFrZWZpbGUKaW5kZXggYzQ0OTBmMy4uY2Y2YTQ3NSAxMDA2NDQK LS0tIGEvdG9vbHMvbWlzYy9NYWtlZmlsZQorKysgYi90b29scy9taXNjL01ha2VmaWxlCkBAIC00 LDYgKzQsNyBAQCBpbmNsdWRlICQoWEVOX1JPT1QpL3Rvb2xzL1J1bGVzLm1rCiBDRkxBR1MgKz0g LVdlcnJvcgogIyBJbmNsdWRlIGNvbmZpZ3VyZSBvdXRwdXQgKGNvbmZpZy5oKQogQ0ZMQUdTICs9 IC1pbmNsdWRlICQoWEVOX1JPT1QpL3Rvb2xzL2NvbmZpZy5oCitDRkxBR1MgKz0gJChDRkxBR1Nf bGlieGVuZXZ0Y2huKQogQ0ZMQUdTICs9ICQoQ0ZMQUdTX2xpYnhlbmN0cmwpCiBDRkxBR1MgKz0g JChDRkxBR1NfeGVuaW5jbHVkZSkKIENGTEFHUyArPSAkKENGTEFHU19saWJ4ZW5zdG9yZSkKQEAg LTg4LDE4ICs4OSwxOCBAQCB4ZW5sb2NrcHJvZjogeGVubG9ja3Byb2YubwogIyB4ZW4taHB0b29s IGluY29ycmVjdGx5IHVzZXMgbGlieGMgaW50ZXJuYWxzCiB4ZW4taHB0b29sLm86IENGTEFHUyAr PSAtSSQoWEVOX1JPT1QpL3Rvb2xzL2xpYnhjCiB4ZW4taHB0b29sOiB4ZW4taHB0b29sLm8KLQkk KENDKSAkKExERkxBR1MpIC1vICRAICQ8ICQoTERMSUJTX2xpYnhlbmN0cmwpICQoTERMSUJTX2xp Ynhlbmd1ZXN0KSAkKExETElCU19saWJ4ZW5zdG9yZSkgJChBUFBFTkRfTERGTEFHUykKKwkkKEND KSAkKExERkxBR1MpIC1vICRAICQ8ICQoTERMSUJTX2xpYnhlbmV2dGNobikgJChMRExJQlNfbGli eGVuY3RybCkgJChMRExJQlNfbGlieGVuZ3Vlc3QpICQoTERMSUJTX2xpYnhlbnN0b3JlKSAkKEFQ UEVORF9MREZMQUdTKQogCiAjIHhlbi1tZm5kdW1wIGluY29ycmVjdGx5IHVzZXMgbGlieGMgaW50 ZXJuYWxzCiB4ZW4tbWZuZHVtcC5vOiBDRkxBR1MgKz0gLUkkKFhFTl9ST09UKS90b29scy9saWJ4 YwogeGVuLW1mbmR1bXA6IHhlbi1tZm5kdW1wLm8KLQkkKENDKSAkKExERkxBR1MpIC1vICRAICQ8 ICQoTERMSUJTX2xpYnhlbmN0cmwpICQoTERMSUJTX2xpYnhlbmd1ZXN0KSAkKEFQUEVORF9MREZM QUdTKQorCSQoQ0MpICQoTERGTEFHUykgLW8gJEAgJDwgJChMRExJQlNfbGlieGVuZXZ0Y2huKSAk KExETElCU19saWJ4ZW5jdHJsKSAkKExETElCU19saWJ4ZW5ndWVzdCkgJChBUFBFTkRfTERGTEFH UykKIAogeGVud2F0Y2hkb2dkOiB4ZW53YXRjaGRvZ2QubwogCSQoQ0MpICQoTERGTEFHUykgLW8g JEAgJDwgJChMRExJQlNfbGlieGVuY3RybCkgJChBUFBFTkRfTERGTEFHUykKIAogeGVuLWxvd21l bWQ6IHhlbi1sb3dtZW1kLm8KLQkkKENDKSAkKExERkxBR1MpIC1vICRAICQ8ICQoTERMSUJTX2xp YnhlbmN0cmwpICQoTERMSUJTX2xpYnhlbnN0b3JlKSAkKEFQUEVORF9MREZMQUdTKQorCSQoQ0Mp ICQoTERGTEFHUykgLW8gJEAgJDwgJChMRExJQlNfbGlieGVuZXZ0Y2huKSAkKExETElCU19saWJ4 ZW5jdHJsKSAkKExETElCU19saWJ4ZW5zdG9yZSkgJChBUFBFTkRfTERGTEFHUykKIAogZ3RyYWNl dmlldzogZ3RyYWNldmlldy5vCiAJJChDQykgJChMREZMQUdTKSAtbyAkQCAkPCAkKENVUlNFU19M SUJTKSAkKFRJTkZPX0xJQlMpICQoQVBQRU5EX0xERkxBR1MpCmRpZmYgLS1naXQgYS90b29scy9t aXNjL3hlbi1ocHRvb2wuYyBiL3Rvb2xzL21pc2MveGVuLWhwdG9vbC5jCmluZGV4IGM3NTYxYTku LmViY2M5ZTggMTAwNjQ0Ci0tLSBhL3Rvb2xzL21pc2MveGVuLWhwdG9vbC5jCisrKyBiL3Rvb2xz L21pc2MveGVuLWhwdG9vbC5jCkBAIC0xLDMgKzEsNCBAQAorI2luY2x1ZGUgPHhlbmV2dGNobi5o PgogI2luY2x1ZGUgPHhlbmN0cmwuaD4KICNpbmNsdWRlIDx4Y19wcml2YXRlLmg+CiAjaW5jbHVk ZSA8eGNfY29yZS5oPgpAQCAtOTgsNyArOTksNyBAQCBzdGF0aWMgaW50IGhwX21lbV9xdWVyeV9m dW5jKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAgcmV0dXJuIHJldDsKIH0KIAotc3RhdGlj IGludCBzdXNwZW5kX2d1ZXN0KHhjX2ludGVyZmFjZSAqeGNoLCB4Y19ldnRjaG4gKnhjZSwgaW50 IGRvbWlkLAorc3RhdGljIGludCBzdXNwZW5kX2d1ZXN0KHhjX2ludGVyZmFjZSAqeGNoLCB4ZW5l dnRjaG5faGFuZGxlICp4Y2UsIGludCBkb21pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICBp bnQgKmV2dGNobiwgaW50ICpsb2NrZmQpCiB7CiAgICAgaW50IHBvcnQsIHJjLCBzdXNwZW5kX2V2 dGNobiA9IC0xOwpAQCAtMTIzLDcgKzEyNCw3IEBAIHN0YXRpYyBpbnQgc3VzcGVuZF9ndWVzdCh4 Y19pbnRlcmZhY2UgKnhjaCwgeGNfZXZ0Y2huICp4Y2UsIGludCBkb21pZCwKICAgICB9CiAgICAg KmV2dGNobiA9IHN1c3BlbmRfZXZ0Y2huOwogCi0gICAgcmMgPSB4Y19ldnRjaG5fbm90aWZ5KHhj ZSwgc3VzcGVuZF9ldnRjaG4pOworICAgIHJjID0geGVuZXZ0Y2huX25vdGlmeSh4Y2UsIHN1c3Bl bmRfZXZ0Y2huKTsKICAgICBpZiAocmMgPCAwKQogICAgIHsKICAgICAgICAgZnByaW50ZihzdGRl cnIsICJGYWlsZWQgdG8gbm90aWZ5IHN1c3BlbmQgY2hhbm5lbDogZXJybm8gJWRcbiIsIHJjKTsK QEAgLTE5OCw4ICsxOTksOCBAQCBzdGF0aWMgaW50IGhwX21lbV9vZmZsaW5lX2Z1bmMoaW50IGFy Z2MsIGNoYXIgKmFyZ3ZbXSkKICAgICAgICAgICAgICAgICBlbHNlIGlmIChzdGF0dXMgJiBQR19P RkZMSU5FX09XTkVEKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgaW50 IHJlc3VsdCwgc3VzcGVuZF9ldnRjaG4gPSAtMSwgc3VzcGVuZF9sb2NrZmQgPSAtMTsKLSAgICAg ICAgICAgICAgICAgICAgeGNfZXZ0Y2huICp4Y2U7Ci0gICAgICAgICAgICAgICAgICAgIHhjZSA9 IHhjX2V2dGNobl9vcGVuKE5VTEwsIDApOworICAgICAgICAgICAgICAgICAgICB4ZW5ldnRjaG5f aGFuZGxlICp4Y2U7CisgICAgICAgICAgICAgICAgICAgIHhjZSA9IHhlbmV2dGNobl9vcGVuKE5V TEwsIDApOwogCiAgICAgICAgICAgICAgICAgICAgIGlmICh4Y2UgPT0gTlVMTCkKICAgICAgICAg ICAgICAgICAgICAgewpAQCAtMjE0LDcgKzIxNSw3IEBAIHN0YXRpYyBpbnQgaHBfbWVtX29mZmxp bmVfZnVuYyhpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgICAgICAgICAgICAgICAgICB7CiAg ICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBzdXNwZW5k IGd1ZXN0ICVkIGZvciIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBtZm4gJWx4 XG4iLCBkb21pZCwgbWZuKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHhjX2V2dGNobl9jbG9z ZSh4Y2UpOworICAgICAgICAgICAgICAgICAgICAgICAgeGVuZXZ0Y2huX2Nsb3NlKHhjZSk7CiAg ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICAgICAgICAgIH0K IApAQCAtMjM4LDcgKzIzOSw3IEBAIHN0YXRpYyBpbnQgaHBfbWVtX29mZmxpbmVfZnVuYyhpbnQg YXJnYywgY2hhciAqYXJndltdKQogICAgICAgICAgICAgICAgICAgICB4Y19kb21haW5fcmVzdW1l KHhjaCwgZG9taWQsIDEpOwogICAgICAgICAgICAgICAgICAgICB4Y19zdXNwZW5kX2V2dGNobl9y ZWxlYXNlKHhjaCwgeGNlLCBkb21pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdXNwZW5kX2V2dGNobiwgJnN1c3BlbmRfbG9ja2ZkKTsKLSAgICAgICAg ICAgICAgICAgICAgeGNfZXZ0Y2huX2Nsb3NlKHhjZSk7CisgICAgICAgICAgICAgICAgICAgIHhl bmV2dGNobl9jbG9zZSh4Y2UpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBi cmVhazsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL3Rvb2xzL21pc2MveGVuLWxvd21lbWQu YyBiL3Rvb2xzL21pc2MveGVuLWxvd21lbWQuYwppbmRleCA4MmZmZDc1Li4zMjAwNDA0IDEwMDY0 NAotLS0gYS90b29scy9taXNjL3hlbi1sb3dtZW1kLmMKKysrIGIvdG9vbHMvbWlzYy94ZW4tbG93 bWVtZC5jCkBAIC00LDIyICs0LDIzIEBACiAgKi8KIAogI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5j bHVkZSA8eGVuZXZ0Y2huLmg+CiAjaW5jbHVkZSA8eGVuY3RybC5oPgogI2luY2x1ZGUgPHhlbnN0 b3JlLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAKIHN0YXRp YyBldnRjaG5fcG9ydF90IHZpcnFfcG9ydCAgICAgID0gLTE7Ci1zdGF0aWMgeGNfZXZ0Y2huICp4 Y2VfaGFuZGxlICAgICAgICA9IE5VTEw7CitzdGF0aWMgeGVuZXZ0Y2huX2hhbmRsZSAqeGNlX2hh bmRsZSA9IE5VTEw7CiBzdGF0aWMgeGNfaW50ZXJmYWNlICp4Y2ggICAgICAgICAgICA9IE5VTEw7 CiBzdGF0aWMgc3RydWN0IHhzX2hhbmRsZSAqeHNfaGFuZGxlICA9IE5VTEw7CiAKIHZvaWQgY2xl YW51cCh2b2lkKQogewogICAgIGlmICh2aXJxX3BvcnQgPiAtMSkKLSAgICAgICAgeGNfZXZ0Y2hu X3VuYmluZCh4Y2VfaGFuZGxlLCB2aXJxX3BvcnQpOworICAgICAgICB4ZW5ldnRjaG5fdW5iaW5k KHhjZV9oYW5kbGUsIHZpcnFfcG9ydCk7CiAgICAgaWYgKHhjZV9oYW5kbGUpCi0gICAgICAgIHhj X2V2dGNobl9jbG9zZSh4Y2VfaGFuZGxlKTsKKyAgICAgICAgeGVuZXZ0Y2huX2Nsb3NlKHhjZV9o YW5kbGUpOwogICAgIGlmICh4Y2gpCiAgICAgICAgIHhjX2ludGVyZmFjZV9jbG9zZSh4Y2gpOwog ICAgIGlmICh4c19oYW5kbGUpCkBAIC05NCw3ICs5NSw3IEBAIGludCBtYWluKGludCBhcmdjLCBj aGFyICphcmd2W10pCiAgICAgICAgIHJldHVybiAxOwogICAgIH0KIAotCXhjZV9oYW5kbGUgPSB4 Y19ldnRjaG5fb3BlbihOVUxMLCAwKTsKKwl4Y2VfaGFuZGxlID0geGVuZXZ0Y2huX29wZW4oTlVM TCwgMCk7CiAJaWYgKHhjZV9oYW5kbGUgPT0gTlVMTCkKICAgICB7CiAgICAgICAgIHBlcnJvcigi RmFpbGVkIHRvIG9wZW4gZXZ0Y2huIGRldmljZSIpOwpAQCAtMTA4LDcgKzEwOSw3IEBAIGludCBt YWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAgICAgIHJldHVybiAzOwogICAgIH0KIAot CWlmICgocmMgPSB4Y19ldnRjaG5fYmluZF92aXJxKHhjZV9oYW5kbGUsIFZJUlFfRU5PTUVNKSkg PT0gLTEpCisJaWYgKChyYyA9IHhlbmV2dGNobl9iaW5kX3ZpcnEoeGNlX2hhbmRsZSwgVklSUV9F Tk9NRU0pKSA9PSAtMSkKICAgICB7CiAgICAgICAgIHBlcnJvcigiRmFpbGVkIHRvIGJpbmQgdG8g ZG9tYWluIGV4Y2VwdGlvbiB2aXJxIHBvcnQiKTsKICAgICAgICAgcmV0dXJuIDQ7CkBAIC0xMjAs NyArMTIxLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICB7CiAgICAg ICAgIGV2dGNobl9wb3J0X3QgcG9ydDsKIAotICAgICAgICBpZiAoKHBvcnQgPSB4Y19ldnRjaG5f cGVuZGluZyh4Y2VfaGFuZGxlKSkgPT0gLTEpCisgICAgICAgIGlmICgocG9ydCA9IHhlbmV2dGNo bl9wZW5kaW5nKHhjZV9oYW5kbGUpKSA9PSAtMSkKICAgICAgICAgewogICAgICAgICAgICAgcGVy cm9yKCJGYWlsZWQgdG8gbGlzdGVuIGZvciBwZW5kaW5nIGV2ZW50IGNoYW5uZWwiKTsKICAgICAg ICAgICAgIHJldHVybiA1OwpAQCAtMTM0LDcgKzEzNSw3IEBAIGludCBtYWluKGludCBhcmdjLCBj aGFyICphcmd2W10pCiAgICAgICAgICAgICByZXR1cm4gNjsKICAgICAgICAgfQogCi0gICAgICAg IGlmICh4Y19ldnRjaG5fdW5tYXNrKHhjZV9oYW5kbGUsIHBvcnQpID09IC0xKQorICAgICAgICBp ZiAoeGVuZXZ0Y2huX3VubWFzayh4Y2VfaGFuZGxlLCBwb3J0KSA9PSAtMSkKICAgICAgICAgewog ICAgICAgICAgICAgcGVycm9yKCJGYWlsZWQgdG8gdW5tYXNrIHBvcnQiKTsKICAgICAgICAgICAg IHJldHVybiA3OwpkaWZmIC0tZ2l0IGEvdG9vbHMvb2NhbWwvbGlicy9ldmVudGNobi9NYWtlZmls ZSBiL3Rvb2xzL29jYW1sL2xpYnMvZXZlbnRjaG4vTWFrZWZpbGUKaW5kZXggMmQ4ZDYxOC4uMTU0 ZWZkNCAxMDA2NDQKLS0tIGEvdG9vbHMvb2NhbWwvbGlicy9ldmVudGNobi9NYWtlZmlsZQorKysg Yi90b29scy9vY2FtbC9saWJzL2V2ZW50Y2huL01ha2VmaWxlCkBAIC0yLDEzICsyLDEzIEBAIFRP UExFVkVMPSQoQ1VSRElSKS8uLi8uLgogWEVOX1JPT1Q9JChUT1BMRVZFTCkvLi4vLi4KIGluY2x1 ZGUgJChUT1BMRVZFTCkvY29tbW9uLm1ha2UKIAotQ0ZMQUdTICs9ICQoQ0ZMQUdTX2xpYnhlbmN0 cmwpICQoQ0ZMQUdTX3hlbmluY2x1ZGUpCitDRkxBR1MgKz0gJChDRkxBR1NfbGlieGVuZXZ0Y2hu KSAkKENGTEFHU194ZW5pbmNsdWRlKQogCiBPQkpTID0geGVuZXZlbnRjaG4KIElOVEYgPSAkKGZv cmVhY2ggb2JqLCAkKE9CSlMpLCQob2JqKS5jbWkpCiBMSUJTID0geGVuZXZlbnRjaG4uY21hIHhl bmV2ZW50Y2huLmNteGEKIAotTElCU194ZW5ldmVudGNobiA9ICQoTERMSUJTX2xpYnhlbmN0cmwp CitMSUJTX3hlbmV2ZW50Y2huID0gJChMRExJQlNfbGlieGVuZXZ0Y2huKQogCiBhbGw6ICQoSU5U RikgJChMSUJTKSAkKFBST0dSQU1TKQogCmRpZmYgLS1naXQgYS90b29scy9vY2FtbC9saWJzL2V2 ZW50Y2huL3hlbmV2ZW50Y2huX3N0dWJzLmMgYi90b29scy9vY2FtbC9saWJzL2V2ZW50Y2huL3hl bmV2ZW50Y2huX3N0dWJzLmMKaW5kZXggNTkzOWU3Yy4uYzJkNDczNyAxMDA2NDQKLS0tIGEvdG9v bHMvb2NhbWwvbGlicy9ldmVudGNobi94ZW5ldmVudGNobl9zdHVicy5jCisrKyBiL3Rvb2xzL29j YW1sL2xpYnMvZXZlbnRjaG4veGVuZXZlbnRjaG5fc3R1YnMuYwpAQCAtMjQsNyArMjQsNyBAQAog I2luY2x1ZGUgPHhlbi9zeXNjdGwuaD4KICNpbmNsdWRlIDx4ZW4veGVuLmg+CiAjaW5jbHVkZSA8 eGVuL3N5cy9ldnRjaG4uaD4KLSNpbmNsdWRlIDx4ZW5jdHJsLmg+CisjaW5jbHVkZSA8eGVuZXZ0 Y2huLmg+CiAKICNkZWZpbmUgQ0FNTF9OQU1FX1NQQUNFCiAjaW5jbHVkZSA8Y2FtbC9tbHZhbHVl cy5oPgpAQCAtMzQsMTQgKzM0LDE0IEBACiAjaW5jbHVkZSA8Y2FtbC9jYWxsYmFjay5oPgogI2lu Y2x1ZGUgPGNhbWwvZmFpbC5oPgogCi0jZGVmaW5lIF9IKF9faCkgKCh4Y19ldnRjaG4gKikoX19o KSkKKyNkZWZpbmUgX0goX19oKSAoKHhlbmV2dGNobl9oYW5kbGUgKikoX19oKSkKIAogQ0FNTHBy aW0gdmFsdWUgc3R1Yl9ldmVudGNobl9pbml0KHZvaWQpCiB7CiAJQ0FNTHBhcmFtMCgpOwogCUNB TUxsb2NhbDEocmVzdWx0KTsKIAotCXhjX2V2dGNobiAqeGNlID0geGNfZXZ0Y2huX29wZW4oTlVM TCwgWENfT1BFTkZMQUdfTk9OX1JFRU5UUkFOVCk7CisJeGVuZXZ0Y2huX2hhbmRsZSAqeGNlID0g eGVuZXZ0Y2huX29wZW4oTlVMTCwgMCk7CiAJaWYgKHhjZSA9PSBOVUxMKQogCQljYW1sX2ZhaWx3 aXRoKCJvcGVuIGZhaWxlZCIpOwogCkBAIC01NSw3ICs1NSw3IEBAIENBTUxwcmltIHZhbHVlIHN0 dWJfZXZlbnRjaG5fZmQodmFsdWUgeGNlKQogCUNBTUxsb2NhbDEocmVzdWx0KTsKIAlpbnQgZmQ7 CiAKLQlmZCA9IHhjX2V2dGNobl9mZChfSCh4Y2UpKTsKKwlmZCA9IHhlbmV2dGNobl9mZChfSCh4 Y2UpKTsKIAlpZiAoZmQgPT0gLTEpCiAJCWNhbWxfZmFpbHdpdGgoImV2dGNobiBmZCBmYWlsZWQi KTsKIApAQCAtNjksNyArNjksNyBAQCBDQU1McHJpbSB2YWx1ZSBzdHViX2V2ZW50Y2huX25vdGlm eSh2YWx1ZSB4Y2UsIHZhbHVlIHBvcnQpCiAJQ0FNTHBhcmFtMih4Y2UsIHBvcnQpOwogCWludCBy YzsKIAotCXJjID0geGNfZXZ0Y2huX25vdGlmeShfSCh4Y2UpLCBJbnRfdmFsKHBvcnQpKTsKKwly YyA9IHhlbmV2dGNobl9ub3RpZnkoX0goeGNlKSwgSW50X3ZhbChwb3J0KSk7CiAJaWYgKHJjID09 IC0xKQogCQljYW1sX2ZhaWx3aXRoKCJldnRjaG4gbm90aWZ5IGZhaWxlZCIpOwogCkBAIC04Myw3 ICs4Myw3IEBAIENBTUxwcmltIHZhbHVlIHN0dWJfZXZlbnRjaG5fYmluZF9pbnRlcmRvbWFpbih2 YWx1ZSB4Y2UsIHZhbHVlIGRvbWlkLAogCUNBTUxsb2NhbDEocG9ydCk7CiAJZXZ0Y2huX3BvcnRf b3JfZXJyb3JfdCByYzsKIAotCXJjID0geGNfZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4oX0goeGNl KSwgSW50X3ZhbChkb21pZCksIEludF92YWwocmVtb3RlX3BvcnQpKTsKKwlyYyA9IHhlbmV2dGNo bl9iaW5kX2ludGVyZG9tYWluKF9IKHhjZSksIEludF92YWwoZG9taWQpLCBJbnRfdmFsKHJlbW90 ZV9wb3J0KSk7CiAJaWYgKHJjID09IC0xKQogCQljYW1sX2ZhaWx3aXRoKCJldnRjaG4gYmluZF9p bnRlcmRvbWFpbiBmYWlsZWQiKTsKIAlwb3J0ID0gVmFsX2ludChyYyk7CkBAIC05Nyw3ICs5Nyw3 IEBAIENBTUxwcmltIHZhbHVlIHN0dWJfZXZlbnRjaG5fYmluZF9kb21fZXhjX3ZpcnEodmFsdWUg eGNlKQogCUNBTUxsb2NhbDEocG9ydCk7CiAJZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCByYzsKIAot CXJjID0geGNfZXZ0Y2huX2JpbmRfdmlycShfSCh4Y2UpLCBWSVJRX0RPTV9FWEMpOworCXJjID0g eGVuZXZ0Y2huX2JpbmRfdmlycShfSCh4Y2UpLCBWSVJRX0RPTV9FWEMpOwogCWlmIChyYyA9PSAt MSkKIAkJY2FtbF9mYWlsd2l0aCgiZXZ0Y2huIGJpbmRfZG9tX2V4Y192aXJxIGZhaWxlZCIpOwog CXBvcnQgPSBWYWxfaW50KHJjKTsKQEAgLTExMCw3ICsxMTAsNyBAQCBDQU1McHJpbSB2YWx1ZSBz dHViX2V2ZW50Y2huX3VuYmluZCh2YWx1ZSB4Y2UsIHZhbHVlIHBvcnQpCiAJQ0FNTHBhcmFtMih4 Y2UsIHBvcnQpOwogCWludCByYzsKIAotCXJjID0geGNfZXZ0Y2huX3VuYmluZChfSCh4Y2UpLCBJ bnRfdmFsKHBvcnQpKTsKKwlyYyA9IHhlbmV2dGNobl91bmJpbmQoX0goeGNlKSwgSW50X3ZhbChw b3J0KSk7CiAJaWYgKHJjID09IC0xKQogCQljYW1sX2ZhaWx3aXRoKCJldnRjaG4gdW5iaW5kIGZh aWxlZCIpOwogCkBAIC0xMjMsNyArMTIzLDcgQEAgQ0FNTHByaW0gdmFsdWUgc3R1Yl9ldmVudGNo bl9wZW5kaW5nKHZhbHVlIHhjZSkKIAlDQU1MbG9jYWwxKHJlc3VsdCk7CiAJZXZ0Y2huX3BvcnRf b3JfZXJyb3JfdCBwb3J0OwogCi0JcG9ydCA9IHhjX2V2dGNobl9wZW5kaW5nKF9IKHhjZSkpOwor CXBvcnQgPSB4ZW5ldnRjaG5fcGVuZGluZyhfSCh4Y2UpKTsKIAlpZiAocG9ydCA9PSAtMSkKIAkJ Y2FtbF9mYWlsd2l0aCgiZXZ0Y2huIHBlbmRpbmcgZmFpbGVkIik7CiAJcmVzdWx0ID0gVmFsX2lu dChwb3J0KTsKQEAgLTEzNyw3ICsxMzcsNyBAQCBDQU1McHJpbSB2YWx1ZSBzdHViX2V2ZW50Y2hu X3VubWFzayh2YWx1ZSB4Y2UsIHZhbHVlIF9wb3J0KQogCWV2dGNobl9wb3J0X3QgcG9ydDsKIAog CXBvcnQgPSBJbnRfdmFsKF9wb3J0KTsKLQlpZiAoeGNfZXZ0Y2huX3VubWFzayhfSCh4Y2UpLCBw b3J0KSkKKwlpZiAoeGVuZXZ0Y2huX3VubWFzayhfSCh4Y2UpLCBwb3J0KSkKIAkJY2FtbF9mYWls d2l0aCgiZXZ0Y2huIHVubWFzayBmYWlsZWQiKTsKIAlDQU1McmV0dXJuKFZhbF91bml0KTsKIH0K ZGlmZiAtLWdpdCBhL3Rvb2xzL3B5dGhvbi9zZXR1cC5weSBiL3Rvb2xzL3B5dGhvbi9zZXR1cC5w eQppbmRleCA0NzNjNTZkLi4yNTA4NWYwIDEwMDY0NAotLS0gYS90b29scy9weXRob24vc2V0dXAu cHkKKysrIGIvdG9vbHMvcHl0aG9uL3NldHVwLnB5CkBAIC04LDEzICs4LDE4IEBAIGV4dHJhX2Nv bXBpbGVfYXJncyAgPSBbICItZm5vLXN0cmljdC1hbGlhc2luZyIsICItV2Vycm9yIiBdCiAKIFBB VEhfWEVOICAgICAgPSBYRU5fUk9PVCArICIvdG9vbHMvaW5jbHVkZSIKIFBBVEhfTElCWEVOVE9P TExPRyA9IFhFTl9ST09UICsgIi90b29scy9saWJzL3Rvb2xsb2ciCitQQVRIX0xJQlhFTkVWVENI TiA9IFhFTl9ST09UICsgIi90b29scy9saWJzL2V2dGNobiIKIFBBVEhfTElCWEMgICAgPSBYRU5f Uk9PVCArICIvdG9vbHMvbGlieGMiCiBQQVRIX0xJQlhMICAgID0gWEVOX1JPT1QgKyAiL3Rvb2xz L2xpYnhsIgogUEFUSF9YRU5TVE9SRSA9IFhFTl9ST09UICsgIi90b29scy94ZW5zdG9yZSIKIAog eGMgPSBFeHRlbnNpb24oInhjIiwKICAgICAgICAgICAgICAgIGV4dHJhX2NvbXBpbGVfYXJncyA9 IGV4dHJhX2NvbXBpbGVfYXJncywKLSAgICAgICAgICAgICAgIGluY2x1ZGVfZGlycyAgICAgICA9 IFsgUEFUSF9YRU4sIFBBVEhfTElCWEVOVE9PTExPRyArICIvaW5jbHVkZSIsIFBBVEhfTElCWEMg KyAiL2luY2x1ZGUiLCAieGVuL2xvd2xldmVsL3hjIiBdLAorICAgICAgICAgICAgICAgaW5jbHVk ZV9kaXJzICAgICAgID0gWyBQQVRIX1hFTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUEFUSF9MSUJYRU5UT09MTE9HICsgIi9pbmNsdWRlIiwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUEFUSF9MSUJYRU5FVlRDSE4gKyAiL2luY2x1ZGUiLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQVRIX0xJQlhDICsgIi9pbmNs dWRlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInhlbi9sb3dsZXZl bC94YyIgXSwKICAgICAgICAgICAgICAgIGxpYnJhcnlfZGlycyAgICAgICA9IFsgUEFUSF9MSUJY QyBdLAogICAgICAgICAgICAgICAgbGlicmFyaWVzICAgICAgICAgID0gWyAieGVuY3RybCIsICJ4 ZW5ndWVzdCIgXSwKICAgICAgICAgICAgICAgIGRlcGVuZHMgICAgICAgICAgICA9IFsgUEFUSF9M SUJYQyArICIvbGlieGVuY3RybC5zbyIsIFBBVEhfTElCWEMgKyAiL2xpYnhlbmd1ZXN0LnNvIiwg ICItV2wsLXJwYXRoLWxpbms9IitQQVRIX0xJQlhFTlRPT0xMT0cgXSwKZGlmZiAtLWdpdCBhL3Rv b2xzL3Rlc3RzL3hlbi1hY2Nlc3MveGVuLWFjY2Vzcy5jIGIvdG9vbHMvdGVzdHMveGVuLWFjY2Vz cy94ZW4tYWNjZXNzLmMKaW5kZXggYTUyY2E2ZS4uZjYzOTg2MCAxMDA2NDQKLS0tIGEvdG9vbHMv dGVzdHMveGVuLWFjY2Vzcy94ZW4tYWNjZXNzLmMKKysrIGIvdG9vbHMvdGVzdHMveGVuLWFjY2Vz cy94ZW4tYWNjZXNzLmMKQEAgLTc5LDcgKzc5LDcgQEAgc3RhdGljIHZvaWQgY2xvc2VfaGFuZGxl cihpbnQgc2lnKQogCiBpbnQgeGNfd2FpdF9mb3JfZXZlbnRfb3JfdGltZW91dCh4Y19pbnRlcmZh Y2UgKnhjaCwgeGNfZXZ0Y2huICp4Y2UsIHVuc2lnbmVkIGxvbmcgbXMpCiB7Ci0gICAgc3RydWN0 IHBvbGxmZCBmZCA9IHsgLmZkID0geGNfZXZ0Y2huX2ZkKHhjZSksIC5ldmVudHMgPSBQT0xMSU4g fCBQT0xMRVJSIH07CisgICAgc3RydWN0IHBvbGxmZCBmZCA9IHsgLmZkID0geGVuZXZ0Y2huX2Zk KHhjZSksIC5ldmVudHMgPSBQT0xMSU4gfCBQT0xMRVJSIH07CiAgICAgaW50IHBvcnQ7CiAgICAg aW50IHJjOwogCmRpZmYgLS1naXQgYS90b29scy94Y3V0aWxzL01ha2VmaWxlIGIvdG9vbHMveGN1 dGlscy9NYWtlZmlsZQppbmRleCBmZmY1MTlkLi4yZDFmMTEyIDEwMDY0NAotLS0gYS90b29scy94 Y3V0aWxzL01ha2VmaWxlCisrKyBiL3Rvb2xzL3hjdXRpbHMvTWFrZWZpbGUKQEAgLTE2LDggKzE2 LDggQEAgUFJPR1JBTVMgPSByZWFkbm90ZXMgbHNldnRjaG4KIENGTEFHUyArPSAtV2Vycm9yCiAK ICMgaW5jb3JyZWN0bHkgdXNlcyBsaWJ4YyBpbnRlcm5hbHMKLUNGTEFHU19yZWFkbm90ZXMubyAg Oj0gJChDRkxBR1NfbGlieGVuY3RybCkgJChDRkxBR1NfbGlieGVuZ3Vlc3QpIC1JJChYRU5fUk9P VCkvdG9vbHMvbGlieGMKLUNGTEFHU19sc2V2dGNobi5vICAgOj0gJChDRkxBR1NfbGlieGVuY3Ry bCkKK0NGTEFHU19yZWFkbm90ZXMubyAgOj0gJChDRkxBR1NfbGlieGVuZXZ0Y2huKSAkKENGTEFH U19saWJ4ZW5jdHJsKSAkKENGTEFHU19saWJ4ZW5ndWVzdCkgLUkkKFhFTl9ST09UKS90b29scy9s aWJ4YworQ0ZMQUdTX2xzZXZ0Y2huLm8gICA6PSAkKENGTEFHU19saWJ4ZW5ldnRjaG4pICQoQ0ZM QUdTX2xpYnhlbmN0cmwpCiAKIC5QSE9OWTogYWxsCiBhbGw6IGJ1aWxkCmRpZmYgLS1naXQgYS90 b29scy94ZW5tb24vTWFrZWZpbGUgYi90b29scy94ZW5tb24vTWFrZWZpbGUKaW5kZXggMjBlYTEw MC4uOTgwNTZmMiAxMDA2NDQKLS0tIGEvdG9vbHMveGVubW9uL01ha2VmaWxlCisrKyBiL3Rvb2xz L3hlbm1vbi9NYWtlZmlsZQpAQCAtMTQsOCArMTQsMTAgQEAgWEVOX1JPT1Q9JChDVVJESVIpLy4u Ly4uCiBpbmNsdWRlICQoWEVOX1JPT1QpL3Rvb2xzL1J1bGVzLm1rCiAKIENGTEFHUyAgKz0gLVdl cnJvcgorQ0ZMQUdTICArPSAkKENGTEFHU19saWJ4ZW5ldnRjaG4pCiBDRkxBR1MgICs9ICQoQ0ZM QUdTX2xpYnhlbmN0cmwpCiBMRExJQlMgICs9ICQoTERMSUJTX2xpYnhlbmN0cmwpCitMRExJQlMg ICs9ICQoTERMSUJTX2xpYnhlbmV2dGNobikKIAogU0NSSVBUUyA9IHhlbm1vbi5weQogCmRpZmYg LS1naXQgYS90b29scy94ZW5tb24veGVuYmFrZWQuYyBiL3Rvb2xzL3hlbm1vbi94ZW5iYWtlZC5j CmluZGV4IDFkZGIyOWIuLmU0NjAyZWYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hlbm1vbi94ZW5iYWtl ZC5jCisrKyBiL3Rvb2xzL3hlbm1vbi94ZW5iYWtlZC5jCkBAIC0zNyw2ICszNyw3IEBACiAjaW5j bHVkZSA8dW5pc3RkLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxzaWduYWwuaD4K KyNpbmNsdWRlIDx4ZW5ldnRjaG4uaD4KICNpbmNsdWRlIDx4ZW5jdHJsLmg+CiAjaW5jbHVkZSA8 eGVuL3hlbi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgpAQCAtMjY3LDcgKzI2OCw3IEBAIHN0YXRp YyB2b2lkIGxvZ19ldmVudChpbnQgZXZlbnRfaWQpCiB9CiAKIGludCB2aXJxX3BvcnQ7Ci14Y19l dnRjaG4gKnhjZV9oYW5kbGUgPSBOVUxMOworeGVuZXZ0Y2huX2hhbmRsZSAqeGNlX2hhbmRsZSA9 IE5VTEw7CiAKIC8qIFJldHVybnMgdGhlIGV2ZW50IGNoYW5uZWwgaGFuZGxlLiAqLwogLyogU3Rv bGVuIGZyb20geGVuc3RvcmUgY29kZSAqLwpAQCAtMjc5LDEyICsyODAsMTIgQEAgc3RhdGljIGlu dCBldmVudGNobl9pbml0KHZvaWQpCiAgICAgaWYgKDApCiAgICAgICAgIHJldHVybiAtMTsKICAg Ci0gICAgeGNlX2hhbmRsZSA9IHhjX2V2dGNobl9vcGVuKE5VTEwsIDApOworICAgIHhjZV9oYW5k bGUgPSB4ZW5ldnRjaG5fb3BlbihOVUxMLCAwKTsKIAogICAgIGlmICh4Y2VfaGFuZGxlID09IE5V TEwpCiAgICAgICAgIHBlcnJvcigiRmFpbGVkIHRvIG9wZW4gZXZ0Y2huIGRldmljZSIpOwogICAK LSAgICBpZiAoKHJjID0geGNfZXZ0Y2huX2JpbmRfdmlycSh4Y2VfaGFuZGxlLCBWSVJRX1RCVUYp KSA9PSAtMSkKKyAgICBpZiAoKHJjID0geGVuZXZ0Y2huX2JpbmRfdmlycSh4Y2VfaGFuZGxlLCBW SVJRX1RCVUYpKSA9PSAtMSkKICAgICAgICAgcGVycm9yKCJGYWlsZWQgdG8gYmluZCB0byBkb21h aW4gZXhjZXB0aW9uIHZpcnEgcG9ydCIpOwogICAgIHZpcnFfcG9ydCA9IHJjOwogICAKQEAgLTMw NCw3ICszMDUsNyBAQCBzdGF0aWMgdm9pZCB3YWl0X2Zvcl9ldmVudCh2b2lkKQogICAgICAgICBy ZXR1cm47CiAgICAgfQogCi0gICAgZXZ0Y2huX2ZkID0geGNfZXZ0Y2huX2ZkKHhjZV9oYW5kbGUp OworICAgIGV2dGNobl9mZCA9IHhlbmV2dGNobl9mZCh4Y2VfaGFuZGxlKTsKIAogICAgIEZEX1pF Uk8oJmluc2V0KTsKICAgICBGRF9TRVQoZXZ0Y2huX2ZkLCAmaW5zZXQpOwpAQCAtMzE0LDEzICsz MTUsMTMgQEAgc3RhdGljIHZvaWQgd2FpdF9mb3JfZXZlbnQodm9pZCkKICAgICByZXQgPSBzZWxl Y3QoZXZ0Y2huX2ZkKzEsICZpbnNldCwgTlVMTCwgTlVMTCwgJnR2KTsKICAgCiAgICAgaWYgKCAo cmV0ID09IDEpICYmIEZEX0lTU0VUKGV2dGNobl9mZCwgJmluc2V0KSkgewotICAgICAgICBpZiAo KHBvcnQgPSB4Y19ldnRjaG5fcGVuZGluZyh4Y2VfaGFuZGxlKSkgPT0gLTEpCisgICAgICAgIGlm ICgocG9ydCA9IHhlbmV2dGNobl9wZW5kaW5nKHhjZV9oYW5kbGUpKSA9PSAtMSkKICAgICAgICAg ICAgIHBlcnJvcigiRmFpbGVkIHRvIHJlYWQgZnJvbSBldmVudCBmZCIpOwogICAgIAogICAgICAg ICAvLyAgICBpZiAocG9ydCA9PSB2aXJxX3BvcnQpCiAgICAgICAgIC8vICAgICAgcHJpbnRmKCJn b3QgdGhlIGV2ZW50IEkgd2FzIGxvb2tpbmcgZm9yXHJcbiIpOwogCi0gICAgICAgIGlmICh4Y19l dnRjaG5fdW5tYXNrKHhjZV9oYW5kbGUsIHBvcnQpID09IC0xKQorICAgICAgICBpZiAoeGVuZXZ0 Y2huX3VubWFzayh4Y2VfaGFuZGxlLCBwb3J0KSA9PSAtMSkKICAgICAgICAgICAgIHBlcnJvcigi RmFpbGVkIHRvIHdyaXRlIHRvIGV2ZW50IGZkIik7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvdG9v bHMveGVucGFnaW5nL01ha2VmaWxlIGIvdG9vbHMveGVucGFnaW5nL01ha2VmaWxlCmluZGV4IGU2 M2Q4OTQuLmQ0OTE4NjcgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hlbnBhZ2luZy9NYWtlZmlsZQorKysg Yi90b29scy94ZW5wYWdpbmcvTWFrZWZpbGUKQEAgLTIsOCArMiw4IEBAIFhFTl9ST09UPSQoQ1VS RElSKS8uLi8uLgogaW5jbHVkZSAkKFhFTl9ST09UKS90b29scy9SdWxlcy5tawogCiAjIHhlbnBh Z2luZy5jIGFuZCBmaWxlX29wcy5jIGluY29ycmVjdGx5IHVzZSBsaWJ4YyBpbnRlcm5hbHMKLUNG TEFHUyArPSAkKENGTEFHU19saWJ4ZW5jdHJsKSAkKENGTEFHU19saWJ4ZW5zdG9yZSkgJChQVEhS RUFEX0NGTEFHUykgLUkkKFhFTl9ST09UKS90b29scy9saWJ4YwotTERMSUJTICs9ICQoTERMSUJT X2xpYnhlbnRvb2xsb2cpICQoTERMSUJTX2xpYnhlbmN0cmwpICQoTERMSUJTX2xpYnhlbnN0b3Jl KSAkKFBUSFJFQURfTElCUykKK0NGTEFHUyArPSAkKENGTEFHU19saWJ4ZW50b29sbG9nKSAkKENG TEFHU19saWJ4ZW5ldnRjaG4pICQoQ0ZMQUdTX2xpYnhlbmN0cmwpICQoQ0ZMQUdTX2xpYnhlbnN0 b3JlKSAkKFBUSFJFQURfQ0ZMQUdTKSAtSSQoWEVOX1JPT1QpL3Rvb2xzL2xpYnhjCitMRExJQlMg Kz0gJChMRExJQlNfbGlieGVudG9vbGxvZykgJChMRExJQlNfbGlieGVuZXZ0Y2huKSAkKExETElC U19saWJ4ZW5jdHJsKSAkKExETElCU19saWJ4ZW5zdG9yZSkgJChQVEhSRUFEX0xJQlMpCiBMREZM QUdTICs9ICQoUFRIUkVBRF9MREZMQUdTKQogCiBQT0xJQ1kgICAgPSBkZWZhdWx0CmRpZmYgLS1n aXQgYS90b29scy94ZW5wYWdpbmcveGVucGFnaW5nLmMgYi90b29scy94ZW5wYWdpbmcveGVucGFn aW5nLmMKaW5kZXggYjVmZmVlNi4uZGY5OWM2YSAxMDA2NDQKLS0tIGEvdG9vbHMveGVucGFnaW5n L3hlbnBhZ2luZy5jCisrKyBiL3Rvb2xzL3hlbnBhZ2luZy94ZW5wYWdpbmcuYwpAQCAtNzMsNyAr NzMsNyBAQCBzdGF0aWMgdm9pZCB4ZW5wYWdpbmdfbWVtX3BhZ2luZ19mbHVzaF9pb2VtdV9jYWNo ZShzdHJ1Y3QgeGVucGFnaW5nICpwYWdpbmcpCiBzdGF0aWMgaW50IHhlbnBhZ2luZ193YWl0X2Zv cl9ldmVudF9vcl90aW1lb3V0KHN0cnVjdCB4ZW5wYWdpbmcgKnBhZ2luZykKIHsKICAgICB4Y19p bnRlcmZhY2UgKnhjaCA9IHBhZ2luZy0+eGNfaGFuZGxlOwotICAgIHhjX2V2dGNobiAqeGNlID0g cGFnaW5nLT52bV9ldmVudC54Y2VfaGFuZGxlOworICAgIHhlbmV2dGNobl9oYW5kbGUgKnhjZSA9 IHBhZ2luZy0+dm1fZXZlbnQueGNlX2hhbmRsZTsKICAgICBjaGFyICoqdmVjLCAqdmFsOwogICAg IHVuc2lnbmVkIGludCBudW07CiAgICAgc3RydWN0IHBvbGxmZCBmZFsyXTsKQEAgLTgyLDcgKzgy LDcgQEAgc3RhdGljIGludCB4ZW5wYWdpbmdfd2FpdF9mb3JfZXZlbnRfb3JfdGltZW91dChzdHJ1 Y3QgeGVucGFnaW5nICpwYWdpbmcpCiAgICAgaW50IHRpbWVvdXQ7CiAKICAgICAvKiBXYWl0IGZv ciBldmVudCBjaGFubmVsIGFuZCB4ZW5zdG9yZSAqLwotICAgIGZkWzBdLmZkID0geGNfZXZ0Y2hu X2ZkKHhjZSk7CisgICAgZmRbMF0uZmQgPSB4ZW5ldnRjaG5fZmQoeGNlKTsKICAgICBmZFswXS5l dmVudHMgPSBQT0xMSU4gfCBQT0xMRVJSOwogICAgIGZkWzFdLmZkID0geHNfZmlsZW5vKHBhZ2lu Zy0+eHNfaGFuZGxlKTsKICAgICBmZFsxXS5ldmVudHMgPSBQT0xMSU4gfCBQT0xMRVJSOwpAQCAt MTQ2LDcgKzE0Niw3IEBAIHN0YXRpYyBpbnQgeGVucGFnaW5nX3dhaXRfZm9yX2V2ZW50X29yX3Rp bWVvdXQoc3RydWN0IHhlbnBhZ2luZyAqcGFnaW5nKQogICAgIGlmICggcmMgJiYgZmRbMF0ucmV2 ZW50cyAmIFBPTExJTiApCiAgICAgewogICAgICAgICBEUFJJTlRGKCJHb3QgZXZlbnQgZnJvbSBl dnRjaG5cbiIpOwotICAgICAgICBwb3J0ID0geGNfZXZ0Y2huX3BlbmRpbmcoeGNlKTsKKyAgICAg ICAgcG9ydCA9IHhlbmV2dGNobl9wZW5kaW5nKHhjZSk7CiAgICAgICAgIGlmICggcG9ydCA9PSAt MSApCiAgICAgICAgIHsKICAgICAgICAgICAgIFBFUlJPUigiRmFpbGVkIHRvIHJlYWQgcG9ydCBm cm9tIGV2ZW50IGNoYW5uZWwiKTsKQEAgLTE1NCw3ICsxNTQsNyBAQCBzdGF0aWMgaW50IHhlbnBh Z2luZ193YWl0X2Zvcl9ldmVudF9vcl90aW1lb3V0KHN0cnVjdCB4ZW5wYWdpbmcgKnBhZ2luZykK ICAgICAgICAgICAgIGdvdG8gZXJyOwogICAgICAgICB9CiAKLSAgICAgICAgcmMgPSB4Y19ldnRj aG5fdW5tYXNrKHhjZSwgcG9ydCk7CisgICAgICAgIHJjID0geGVuZXZ0Y2huX3VubWFzayh4Y2Us IHBvcnQpOwogICAgICAgICBpZiAoIHJjIDwgMCApCiAgICAgICAgIHsKICAgICAgICAgICAgIFBF UlJPUigiRmFpbGVkIHRvIHVubWFzayBldmVudCBjaGFubmVsIHBvcnQiKTsKQEAgLTM5Myw3ICsz OTMsNyBAQCBzdGF0aWMgc3RydWN0IHhlbnBhZ2luZyAqeGVucGFnaW5nX2luaXQoaW50IGFyZ2Ms IGNoYXIgKmFyZ3ZbXSkKICAgICB9CiAKICAgICAvKiBPcGVuIGV2ZW50IGNoYW5uZWwgKi8KLSAg ICBwYWdpbmctPnZtX2V2ZW50LnhjZV9oYW5kbGUgPSB4Y19ldnRjaG5fb3BlbihOVUxMLCAwKTsK KyAgICBwYWdpbmctPnZtX2V2ZW50LnhjZV9oYW5kbGUgPSB4ZW5ldnRjaG5fb3BlbihOVUxMLCAw KTsKICAgICBpZiAoIHBhZ2luZy0+dm1fZXZlbnQueGNlX2hhbmRsZSA9PSBOVUxMICkKICAgICB7 CiAgICAgICAgIFBFUlJPUigiRmFpbGVkIHRvIG9wZW4gZXZlbnQgY2hhbm5lbCIpOwpAQCAtNDAx LDcgKzQwMSw3IEBAIHN0YXRpYyBzdHJ1Y3QgeGVucGFnaW5nICp4ZW5wYWdpbmdfaW5pdChpbnQg YXJnYywgY2hhciAqYXJndltdKQogICAgIH0KIAogICAgIC8qIEJpbmQgZXZlbnQgbm90aWZpY2F0 aW9uICovCi0gICAgcmMgPSB4Y19ldnRjaG5fYmluZF9pbnRlcmRvbWFpbihwYWdpbmctPnZtX2V2 ZW50LnhjZV9oYW5kbGUsCisgICAgcmMgPSB4ZW5ldnRjaG5fYmluZF9pbnRlcmRvbWFpbihwYWdp bmctPnZtX2V2ZW50LnhjZV9oYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwYWdpbmctPnZtX2V2ZW50LmRvbWFpbl9pZCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHBhZ2luZy0+dm1fZXZlbnQuZXZ0Y2huX3BvcnQpOwogICAgIGlmICggcmMg PCAwICkKQEAgLTUzMSw3ICs1MzEsNyBAQCBzdGF0aWMgdm9pZCB4ZW5wYWdpbmdfdGVhcmRvd24o c3RydWN0IHhlbnBhZ2luZyAqcGFnaW5nKQogICAgIH0KIAogICAgIC8qIFVuYmluZCBWSVJRICov Ci0gICAgcmMgPSB4Y19ldnRjaG5fdW5iaW5kKHBhZ2luZy0+dm1fZXZlbnQueGNlX2hhbmRsZSwg cGFnaW5nLT52bV9ldmVudC5wb3J0KTsKKyAgICByYyA9IHhlbmV2dGNobl91bmJpbmQocGFnaW5n LT52bV9ldmVudC54Y2VfaGFuZGxlLCBwYWdpbmctPnZtX2V2ZW50LnBvcnQpOwogICAgIGlmICgg cmMgIT0gMCApCiAgICAgewogICAgICAgICBQRVJST1IoIkVycm9yIHVuYmluZGluZyBldmVudCBw b3J0Iik7CkBAIC01MzksNyArNTM5LDcgQEAgc3RhdGljIHZvaWQgeGVucGFnaW5nX3RlYXJkb3du KHN0cnVjdCB4ZW5wYWdpbmcgKnBhZ2luZykKICAgICBwYWdpbmctPnZtX2V2ZW50LnBvcnQgPSAt MTsKIAogICAgIC8qIENsb3NlIGV2ZW50IGNoYW5uZWwgKi8KLSAgICByYyA9IHhjX2V2dGNobl9j bG9zZShwYWdpbmctPnZtX2V2ZW50LnhjZV9oYW5kbGUpOworICAgIHJjID0geGVuZXZ0Y2huX2Ns b3NlKHBhZ2luZy0+dm1fZXZlbnQueGNlX2hhbmRsZSk7CiAgICAgaWYgKCByYyAhPSAwICkKICAg ICB7CiAgICAgICAgIFBFUlJPUigiRXJyb3IgY2xvc2luZyBldmVudCBjaGFubmVsIik7CkBAIC02 OTIsNyArNjkyLDcgQEAgc3RhdGljIGludCB4ZW5wYWdpbmdfcmVzdW1lX3BhZ2Uoc3RydWN0IHhl bnBhZ2luZyAqcGFnaW5nLCB2bV9ldmVudF9yZXNwb25zZV90ICoKICAgICB9CiAKICAgICAvKiBU ZWxsIFhlbiBwYWdlIGlzIHJlYWR5ICovCi0gICAgcmV0dXJuIHhjX2V2dGNobl9ub3RpZnkocGFn aW5nLT52bV9ldmVudC54Y2VfaGFuZGxlLCBwYWdpbmctPnZtX2V2ZW50LnBvcnQpOworICAgIHJl dHVybiB4ZW5ldnRjaG5fbm90aWZ5KHBhZ2luZy0+dm1fZXZlbnQueGNlX2hhbmRsZSwgcGFnaW5n LT52bV9ldmVudC5wb3J0KTsKIH0KIAogc3RhdGljIGludCB4ZW5wYWdpbmdfcG9wdWxhdGVfcGFn ZShzdHJ1Y3QgeGVucGFnaW5nICpwYWdpbmcsIHVuc2lnbmVkIGxvbmcgZ2ZuLCBpbnQgaSkKZGlm ZiAtLWdpdCBhL3Rvb2xzL3hlbnBhZ2luZy94ZW5wYWdpbmcuaCBiL3Rvb2xzL3hlbnBhZ2luZy94 ZW5wYWdpbmcuaAppbmRleCBjNmFiNzdjLi5kMGY4ZDIwIDEwMDY0NAotLS0gYS90b29scy94ZW5w YWdpbmcveGVucGFnaW5nLmgKKysrIGIvdG9vbHMveGVucGFnaW5nL3hlbnBhZ2luZy5oCkBAIC0y NCw2ICsyNCw3IEBACiAjZGVmaW5lIF9fWEVOX1BBR0lORzJfSF9fCiAKIAorI2luY2x1ZGUgPHhl bmV2dGNobi5oPgogI2luY2x1ZGUgPHhjX3ByaXZhdGUuaD4KICNpbmNsdWRlIDx4ZW4vZXZlbnRf Y2hhbm5lbC5oPgogI2luY2x1ZGUgPHhlbi92bV9ldmVudC5oPgpAQCAtMzIsNyArMzMsNyBAQAog CiBzdHJ1Y3Qgdm1fZXZlbnQgewogICAgIGRvbWlkX3QgZG9tYWluX2lkOwotICAgIHhjX2V2dGNo biAqeGNlX2hhbmRsZTsKKyAgICB4ZW5ldnRjaG5faGFuZGxlICp4Y2VfaGFuZGxlOwogICAgIGlu dCBwb3J0OwogICAgIHZtX2V2ZW50X2JhY2tfcmluZ190IGJhY2tfcmluZzsKICAgICB1aW50MzJf dCBldnRjaG5fcG9ydDsKZGlmZiAtLWdpdCBhL3Rvb2xzL3hlbnN0b3JlL01ha2VmaWxlIGIvdG9v bHMveGVuc3RvcmUvTWFrZWZpbGUKaW5kZXggMWI0YTQ5NC4uYzE2MTA0NiAxMDA2NDQKLS0tIGEv dG9vbHMveGVuc3RvcmUvTWFrZWZpbGUKKysrIGIvdG9vbHMveGVuc3RvcmUvTWFrZWZpbGUKQEAg LTksNiArOSw3IEBAIENGTEFHUyArPSAtSS4KICMgSW5jbHVkZSBjb25maWd1cmUgb3V0cHV0IChj b25maWcuaCkKIENGTEFHUyArPSAtaW5jbHVkZSAkKFhFTl9ST09UKS90b29scy9jb25maWcuaAog Q0ZMQUdTICs9IC1JLi9pbmNsdWRlCitDRkxBR1MgKz0gJChDRkxBR1NfbGlieGVuZXZ0Y2huKQog Q0ZMQUdTICs9ICQoQ0ZMQUdTX2xpYnhlbmN0cmwpCiBDRkxBR1MgKz0gLURYRU5fTElCX1NUT1JF RD0iXCIkKFhFTl9MSUJfU1RPUkVEKVwiIgogCkBAIC03NSwxMCArNzYsMTAgQEAgZW5kaWYKIGlu aXQteGVuc3RvcmUtZG9tYWluLm86IENGTEFHUyArPSAkKENGTEFHU19saWJ4ZW5ndWVzdCkKIAog aW5pdC14ZW5zdG9yZS1kb21haW46IGluaXQteGVuc3RvcmUtZG9tYWluLm8gJChMSUJYRU5TVE9S RSkKLQkkKENDKSAkXiAkKExERkxBR1MpICQoTERMSUJTX2xpYnhlbmN0cmwpICQoTERMSUJTX2xp Ynhlbmd1ZXN0KSAkKExETElCU19saWJ4ZW5zdG9yZSkgLW8gJEAgJChBUFBFTkRfTERGTEFHUykK KwkkKENDKSAkXiAkKExERkxBR1MpICQoTERMSUJTX2xpYnhlbmV2dGNobikgJChMRExJQlNfbGli eGVuY3RybCkgJChMRExJQlNfbGlieGVuZ3Vlc3QpICQoTERMSUJTX2xpYnhlbnN0b3JlKSAtbyAk QCAkKEFQUEVORF9MREZMQUdTKQogCiB4ZW5zdG9yZWQ6ICQoWEVOU1RPUkVEX09CSlMpCi0JJChD QykgJF4gJChMREZMQUdTKSAkKExETElCU19saWJ4ZW5jdHJsKSAkKFNPQ0tFVF9MSUJTKSAtbyAk QCAkKEFQUEVORF9MREZMQUdTKQorCSQoQ0MpICReICQoTERGTEFHUykgJChMRExJQlNfbGlieGVu ZXZ0Y2huKSAkKExETElCU19saWJ4ZW5jdHJsKSAkKFNPQ0tFVF9MSUJTKSAtbyAkQCAkKEFQUEVO RF9MREZMQUdTKQogCiB4ZW5zdG9yZWQuYTogJChYRU5TVE9SRURfT0JKUykKIAkkKEFSKSBjciAk QCAkXgpkaWZmIC0tZ2l0IGEvdG9vbHMveGVuc3RvcmUveGVuc3RvcmVkX2NvcmUuYyBiL3Rvb2xz L3hlbnN0b3JlL3hlbnN0b3JlZF9jb3JlLmMKaW5kZXggMjVhNTQ4ZC4uYzhhNWQ1MiAxMDA2NDQK LS0tIGEvdG9vbHMveGVuc3RvcmUveGVuc3RvcmVkX2NvcmUuYworKysgYi90b29scy94ZW5zdG9y ZS94ZW5zdG9yZWRfY29yZS5jCkBAIC00MCw2ICs0MCw4IEBACiAjaW5jbHVkZSA8YXNzZXJ0Lmg+ CiAjaW5jbHVkZSA8c2V0am1wLmg+CiAKKyNpbmNsdWRlIDx4ZW5ldnRjaG4uaD4KKwogI2luY2x1 ZGUgInV0aWxzLmgiCiAjaW5jbHVkZSAibGlzdC5oIgogI2luY2x1ZGUgInRhbGxvYy5oIgpAQCAt NjMsNyArNjUsNyBAQAogI2luY2x1ZGUgPHN5c3RlbWQvc2QtZGFlbW9uLmg+CiAjZW5kaWYKIAot ZXh0ZXJuIHhjX2V2dGNobiAqeGNlX2hhbmRsZTsgLyogaW4geGVuc3RvcmVkX2RvbWFpbi5jICov CitleHRlcm4geGVuZXZ0Y2huX2hhbmRsZSAqeGNlX2hhbmRsZTsgLyogaW4geGVuc3RvcmVkX2Rv bWFpbi5jICovCiBzdGF0aWMgaW50IHhjZV9wb2xsZmRfaWR4ID0gLTE7CiBzdGF0aWMgc3RydWN0 IHBvbGxmZCAqZmRzOwogc3RhdGljIHVuc2lnbmVkIGludCBjdXJyZW50X2FycmF5X3NpemU7CkBA IC0zNzIsNyArMzc0LDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZV9mZHMoaW50IHNvY2ssIGlu dCAqcF9zb2NrX3BvbGxmZF9pZHgsCiAJCQlzZXRfZmQocmVvcGVuX2xvZ19waXBlWzBdLCBQT0xM SU58UE9MTFBSSSk7CiAKIAlpZiAoeGNlX2hhbmRsZSAhPSBOVUxMKQotCQl4Y2VfcG9sbGZkX2lk eCA9IHNldF9mZCh4Y19ldnRjaG5fZmQoeGNlX2hhbmRsZSksCisJCXhjZV9wb2xsZmRfaWR4ID0g c2V0X2ZkKHhlbmV2dGNobl9mZCh4Y2VfaGFuZGxlKSwKIAkJCQkJUE9MTElOfFBPTExQUkkpOwog CiAJbGlzdF9mb3JfZWFjaF9lbnRyeShjb25uLCAmY29ubmVjdGlvbnMsIGxpc3QpIHsKZGlmZiAt LWdpdCBhL3Rvb2xzL3hlbnN0b3JlL3hlbnN0b3JlZF9kb21haW4uYyBiL3Rvb2xzL3hlbnN0b3Jl L3hlbnN0b3JlZF9kb21haW4uYwppbmRleCBkY2Q2NTgxLi42Y2VlYzI5IDEwMDY0NAotLS0gYS90 b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfZG9tYWluLmMKKysrIGIvdG9vbHMveGVuc3RvcmUveGVu c3RvcmVkX2RvbWFpbi5jCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAieGVuc3RvcmVkX3Ry YW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAieGVuc3RvcmVkX3dhdGNoLmgiCiAKKyNpbmNsdWRlIDx4 ZW5ldnRjaG4uaD4KICNpbmNsdWRlIDx4ZW5jdHJsLmg+CiAjaW5jbHVkZSA8eGVuL2dyYW50X3Rh YmxlLmg+CiAKQEAgLTM2LDcgKzM3LDcgQEAgc3RhdGljIHhjX2ludGVyZmFjZSAqKnhjX2hhbmRs ZTsKIHhjX2dudHRhYiAqKnhjZ19oYW5kbGU7CiBzdGF0aWMgZXZ0Y2huX3BvcnRfdCB2aXJxX3Bv cnQ7CiAKLXhjX2V2dGNobiAqeGNlX2hhbmRsZSA9IE5VTEw7Cit4ZW5ldnRjaG5faGFuZGxlICp4 Y2VfaGFuZGxlID0gTlVMTDsKIAogc3RydWN0IGRvbWFpbgogewpAQCAtMTI4LDcgKzEyOSw3IEBA IHN0YXRpYyBpbnQgd3JpdGVjaG4oc3RydWN0IGNvbm5lY3Rpb24gKmNvbm4sCiAJeGVuX21iKCk7 CiAJaW50Zi0+cnNwX3Byb2QgKz0gbGVuOwogCi0JeGNfZXZ0Y2huX25vdGlmeSh4Y2VfaGFuZGxl LCBjb25uLT5kb21haW4tPnBvcnQpOworCXhlbmV2dGNobl9ub3RpZnkoeGNlX2hhbmRsZSwgY29u bi0+ZG9tYWluLT5wb3J0KTsKIAogCXJldHVybiBsZW47CiB9CkBAIC0xNTgsNyArMTU5LDcgQEAg c3RhdGljIGludCByZWFkY2huKHN0cnVjdCBjb25uZWN0aW9uICpjb25uLCB2b2lkICpkYXRhLCB1 bnNpZ25lZCBpbnQgbGVuKQogCXhlbl9tYigpOwogCWludGYtPnJlcV9jb25zICs9IGxlbjsKIAot CXhjX2V2dGNobl9ub3RpZnkoeGNlX2hhbmRsZSwgY29ubi0+ZG9tYWluLT5wb3J0KTsKKwl4ZW5l dnRjaG5fbm90aWZ5KHhjZV9oYW5kbGUsIGNvbm4tPmRvbWFpbi0+cG9ydCk7CiAKIAlyZXR1cm4g bGVuOwogfQpAQCAtMTkwLDcgKzE5MSw3IEBAIHN0YXRpYyBpbnQgZGVzdHJveV9kb21haW4odm9p ZCAqX2RvbWFpbikKIAlsaXN0X2RlbCgmZG9tYWluLT5saXN0KTsKIAogCWlmIChkb21haW4tPnBv cnQpIHsKLQkJaWYgKHhjX2V2dGNobl91bmJpbmQoeGNlX2hhbmRsZSwgZG9tYWluLT5wb3J0KSA9 PSAtMSkKKwkJaWYgKHhlbmV2dGNobl91bmJpbmQoeGNlX2hhbmRsZSwgZG9tYWluLT5wb3J0KSA9 PSAtMSkKIAkJCWVwcmludGYoIj4gVW5iaW5kaW5nIHBvcnQgJWkgZmFpbGVkIVxuIiwgZG9tYWlu LT5wb3J0KTsKIAl9CiAKQEAgLTIzOSwxMyArMjQwLDEzIEBAIHZvaWQgaGFuZGxlX2V2ZW50KHZv aWQpCiB7CiAJZXZ0Y2huX3BvcnRfdCBwb3J0OwogCi0JaWYgKChwb3J0ID0geGNfZXZ0Y2huX3Bl bmRpbmcoeGNlX2hhbmRsZSkpID09IC0xKQorCWlmICgocG9ydCA9IHhlbmV2dGNobl9wZW5kaW5n KHhjZV9oYW5kbGUpKSA9PSAtMSkKIAkJYmFyZl9wZXJyb3IoIkZhaWxlZCB0byByZWFkIGZyb20g ZXZlbnQgZmQiKTsKIAogCWlmIChwb3J0ID09IHZpcnFfcG9ydCkKIAkJZG9tYWluX2NsZWFudXAo KTsKIAotCWlmICh4Y19ldnRjaG5fdW5tYXNrKHhjZV9oYW5kbGUsIHBvcnQpID09IC0xKQorCWlm ICh4ZW5ldnRjaG5fdW5tYXNrKHhjZV9oYW5kbGUsIHBvcnQpID09IC0xKQogCQliYXJmX3BlcnJv cigiRmFpbGVkIHRvIHdyaXRlIHRvIGV2ZW50IGZkIik7CiB9CiAKQEAgLTI4Nyw3ICsyODgsNyBA QCBzdGF0aWMgc3RydWN0IGRvbWFpbiAqbmV3X2RvbWFpbih2b2lkICpjb250ZXh0LCB1bnNpZ25l ZCBpbnQgZG9taWQsCiAJdGFsbG9jX3NldF9kZXN0cnVjdG9yKGRvbWFpbiwgZGVzdHJveV9kb21h aW4pOwogCiAJLyogVGVsbCBrZXJuZWwgd2UncmUgaW50ZXJlc3RlZCBpbiB0aGlzIGV2ZW50LiAq LwotCXJjID0geGNfZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4oeGNlX2hhbmRsZSwgZG9taWQsIHBv cnQpOworCXJjID0geGVuZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4oeGNlX2hhbmRsZSwgZG9taWQs IHBvcnQpOwogCWlmIChyYyA9PSAtMSkKIAkgICAgcmV0dXJuIE5VTEw7CiAJZG9tYWluLT5wb3J0 ID0gcmM7CkBAIC0zOTIsOCArMzkzLDggQEAgdm9pZCBkb19pbnRyb2R1Y2Uoc3RydWN0IGNvbm5l Y3Rpb24gKmNvbm4sIHN0cnVjdCBidWZmZXJlZF9kYXRhICppbikKIAl9IGVsc2UgaWYgKChkb21h aW4tPm1mbiA9PSBtZm4pICYmIChkb21haW4tPmNvbm4gIT0gY29ubikpIHsKIAkJLyogVXNlIFhT X0lOVFJPRFVDRSBmb3IgcmVjcmVhdGluZyB0aGUgeGVuYnVzIGV2ZW50LWNoYW5uZWwuICovCiAJ CWlmIChkb21haW4tPnBvcnQpCi0JCQl4Y19ldnRjaG5fdW5iaW5kKHhjZV9oYW5kbGUsIGRvbWFp bi0+cG9ydCk7Ci0JCXJjID0geGNfZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4oeGNlX2hhbmRsZSwg ZG9taWQsIHBvcnQpOworCQkJeGVuZXZ0Y2huX3VuYmluZCh4Y2VfaGFuZGxlLCBkb21haW4tPnBv cnQpOworCQlyYyA9IHhlbmV2dGNobl9iaW5kX2ludGVyZG9tYWluKHhjZV9oYW5kbGUsIGRvbWlk LCBwb3J0KTsKIAkJZG9tYWluLT5wb3J0ID0gKHJjID09IC0xKSA/IDAgOiByYzsKIAkJZG9tYWlu LT5yZW1vdGVfcG9ydCA9IHBvcnQ7CiAJfSBlbHNlIHsKQEAgLTYxNCw3ICs2MTUsNyBAQCBzdGF0 aWMgaW50IGRvbTBfaW5pdCh2b2lkKQogCiAJdGFsbG9jX3N0ZWFsKGRvbTAtPmNvbm4sIGRvbTAp OyAKIAotCXhjX2V2dGNobl9ub3RpZnkoeGNlX2hhbmRsZSwgZG9tMC0+cG9ydCk7IAorCXhlbmV2 dGNobl9ub3RpZnkoeGNlX2hhbmRsZSwgZG9tMC0+cG9ydCk7IAogCiAJcmV0dXJuIDA7IAogfQpA QCAtNjQzLDcgKzY0NCw3IEBAIHZvaWQgZG9tYWluX2luaXQodm9pZCkKIAllbHNlCiAJCXRhbGxv Y19zZXRfZGVzdHJ1Y3Rvcih4Y2dfaGFuZGxlLCBjbG9zZV94Y2dfaGFuZGxlKTsKIAotCXhjZV9o YW5kbGUgPSB4Y19ldnRjaG5fb3BlbihOVUxMLCAwKTsKKwl4Y2VfaGFuZGxlID0geGVuZXZ0Y2hu X29wZW4oTlVMTCwgMCk7CiAKIAlpZiAoeGNlX2hhbmRsZSA9PSBOVUxMKQogCQliYXJmX3BlcnJv cigiRmFpbGVkIHRvIG9wZW4gZXZ0Y2huIGRldmljZSIpOwpAQCAtNjUxLDcgKzY1Miw3IEBAIHZv aWQgZG9tYWluX2luaXQodm9pZCkKIAlpZiAoZG9tMF9pbml0KCkgIT0gMCkgCiAJCWJhcmZfcGVy cm9yKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBkb20wIHN0YXRlIik7IAogCi0JaWYgKChyYyA9IHhj X2V2dGNobl9iaW5kX3ZpcnEoeGNlX2hhbmRsZSwgVklSUV9ET01fRVhDKSkgPT0gLTEpCisJaWYg KChyYyA9IHhlbmV2dGNobl9iaW5kX3ZpcnEoeGNlX2hhbmRsZSwgVklSUV9ET01fRVhDKSkgPT0g LTEpCiAJCWJhcmZfcGVycm9yKCJGYWlsZWQgdG8gYmluZCB0byBkb21haW4gZXhjZXB0aW9uIHZp cnEgcG9ydCIpOwogCXZpcnFfcG9ydCA9IHJjOwogfQpkaWZmIC0tZ2l0IGEvdG9vbHMveGVudHJh Y2UvTWFrZWZpbGUgYi90b29scy94ZW50cmFjZS9NYWtlZmlsZQppbmRleCA2YzEzY2QxLi4wMTU3 YmUyIDEwMDY0NAotLS0gYS90b29scy94ZW50cmFjZS9NYWtlZmlsZQorKysgYi90b29scy94ZW50 cmFjZS9NYWtlZmlsZQpAQCAtMyw4ICszLDExIEBAIGluY2x1ZGUgJChYRU5fUk9PVCkvdG9vbHMv UnVsZXMubWsKIAogQ0ZMQUdTICs9IC1XZXJyb3IKIAorQ0ZMQUdTICs9ICQoQ0ZMQUdTX2xpYnhl bmV2dGNobikKIENGTEFHUyArPSAkKENGTEFHU19saWJ4ZW5jdHJsKQotTERMSUJTICs9ICQoTERM SUJTX2xpYnhlbmN0cmwpICQoQVJHUF9MREZMQUdTKQorTERMSUJTICs9ICQoTERMSUJTX2xpYnhl bmV2dGNobikKK0xETElCUyArPSAkKExETElCU19saWJ4ZW5jdHJsKQorTERMSUJTICs9ICQoQVJH UF9MREZMQUdTKQogCiBCSU4tJChDT05GSUdfWDg2KSA9IHhlbmFseXplCiBCSU4gICAgICA9ICQo QklOLXkpCmRpZmYgLS1naXQgYS90b29scy94ZW50cmFjZS94ZW50cmFjZS5jIGIvdG9vbHMveGVu dHJhY2UveGVudHJhY2UuYwppbmRleCA0ZWUxNDU4Li5jOTcwZDQyIDEwMDY0NAotLS0gYS90b29s cy94ZW50cmFjZS94ZW50cmFjZS5jCisrKyBiL3Rvb2xzL3hlbnRyYWNlL3hlbnRyYWNlLmMKQEAg LTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDx4ZW4veGVuLmg+CiAjaW5jbHVkZSA8eGVuL3RyYWNl Lmg+CiAKKyNpbmNsdWRlIDx4ZW5ldnRjaG4uaD4KICNpbmNsdWRlIDx4ZW5jdHJsLmg+CiAKICNk ZWZpbmUgUEVSUk9SKF9tLCBfYS4uLikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCkBAIC03NCw3ICs3NSw3IEBAIHNldHRpbmdzX3Qgb3B0czsKIGludCBpbnRlcnJ1cHRl ZCA9IDA7IC8qIGdldHMgc2V0IGlmIHdlIGdldCBhIFNJR0hVUCAqLwogCiBzdGF0aWMgeGNfaW50 ZXJmYWNlICp4Y19oYW5kbGU7Ci1zdGF0aWMgeGNfZXZ0Y2huICp4Y2VfaGFuZGxlID0gTlVMTDsK K3N0YXRpYyB4ZW5ldnRjaG5faGFuZGxlICp4Y2VfaGFuZGxlID0gTlVMTDsKIHN0YXRpYyBpbnQg dmlycV9wb3J0ID0gLTE7CiBzdGF0aWMgaW50IG91dGZkID0gMTsKIApAQCAtNjAyLDEzICs2MDMs MTMgQEAgc3RhdGljIHZvaWQgZXZlbnRfaW5pdCh2b2lkKQogewogICAgIGludCByYzsKIAotICAg IHhjZV9oYW5kbGUgPSB4Y19ldnRjaG5fb3BlbihOVUxMLCAwKTsKKyAgICB4Y2VfaGFuZGxlID0g eGVuZXZ0Y2huX29wZW4oTlVMTCwgMCk7CiAgICAgaWYgKHhjZV9oYW5kbGUgPT0gTlVMTCkgewog ICAgICAgICBwZXJyb3IoImV2ZW50IGNoYW5uZWwgb3BlbiIpOwogICAgICAgICBleGl0KEVYSVRf RkFJTFVSRSk7CiAgICAgfQogCi0gICAgcmMgPSB4Y19ldnRjaG5fYmluZF92aXJxKHhjZV9oYW5k bGUsIFZJUlFfVEJVRik7CisgICAgcmMgPSB4ZW5ldnRjaG5fYmluZF92aXJxKHhjZV9oYW5kbGUs IFZJUlFfVEJVRik7CiAgICAgaWYgKHJjID09IC0xKSB7CiAgICAgICAgIFBFUlJPUigiZmFpbGVk IHRvIGJpbmQgdG8gVklSUSBwb3J0Iik7CiAgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKQEAg LTYyMyw3ICs2MjQsNyBAQCBzdGF0aWMgdm9pZCBldmVudF9pbml0KHZvaWQpCiBzdGF0aWMgdm9p ZCB3YWl0X2Zvcl9ldmVudF9vcl90aW1lb3V0KHVuc2lnbmVkIGxvbmcgbWlsbGlzZWNvbmRzKQog ewogICAgIGludCByYzsKLSAgICBzdHJ1Y3QgcG9sbGZkIGZkID0geyAuZmQgPSB4Y19ldnRjaG5f ZmQoeGNlX2hhbmRsZSksCisgICAgc3RydWN0IHBvbGxmZCBmZCA9IHsgLmZkID0geGVuZXZ0Y2hu X2ZkKHhjZV9oYW5kbGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgIC5ldmVudHMgPSBQT0xM SU4gfCBQT0xMRVJSIH07CiAgICAgaW50IHBvcnQ7CiAKQEAgLTYzNiw3ICs2MzcsNyBAQCBzdGF0 aWMgdm9pZCB3YWl0X2Zvcl9ldmVudF9vcl90aW1lb3V0KHVuc2lnbmVkIGxvbmcgbWlsbGlzZWNv bmRzKQogICAgIH0KIAogICAgIGlmIChyYyA9PSAxKSB7Ci0gICAgICAgIHBvcnQgPSB4Y19ldnRj aG5fcGVuZGluZyh4Y2VfaGFuZGxlKTsKKyAgICAgICAgcG9ydCA9IHhlbmV2dGNobl9wZW5kaW5n KHhjZV9oYW5kbGUpOwogICAgICAgICBpZiAocG9ydCA9PSAtMSkgewogICAgICAgICAgICAgUEVS Uk9SKCJmYWlsZWQgdG8gcmVhZCBwb3J0IGZyb20gZXZ0Y2huIik7CiAgICAgICAgICAgICBleGl0 KEVYSVRfRkFJTFVSRSk7CkBAIC02NDcsNyArNjQ4LDcgQEAgc3RhdGljIHZvaWQgd2FpdF9mb3Jf ZXZlbnRfb3JfdGltZW91dCh1bnNpZ25lZCBsb25nIG1pbGxpc2Vjb25kcykKICAgICAgICAgICAg ICAgICAgICAgcG9ydCwgdmlycV9wb3J0KTsKICAgICAgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJF KTsKICAgICAgICAgfQotICAgICAgICByYyA9IHhjX2V2dGNobl91bm1hc2soeGNlX2hhbmRsZSwg cG9ydCk7CisgICAgICAgIHJjID0geGVuZXZ0Y2huX3VubWFzayh4Y2VfaGFuZGxlLCBwb3J0KTsK ICAgICAgICAgaWYgKHJjID09IC0xKSB7CiAgICAgICAgICAgICBQRVJST1IoImZhaWxlZCB0byB3 cml0ZSBwb3J0IHRvIGV2dGNobiIpOwogICAgICAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOwot LSAKMi4xLjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9s aXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=