From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ian Campbell Subject: [PATCH XEN v2 05/15] tools: Refactor /dev/xen/evtchn wrappers into libxenevtchn. Date: Wed, 15 Jul 2015 16:46:53 +0100 Message-ID: <1436975223-11098-5-git-send-email-ian.campbell@citrix.com> References: <1436975173.32371.121.camel@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1436975173.32371.121.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: roger.pau@citrix.com, Ian Campbell , stefano.stabellini@eu.citrix.com 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 bWUgdGltZQogICAgUmVtb3ZlZCBzb21lIHN0cmF5IGNvbXBhdCB0aGluZwotLS0KIC5naXRpZ25v cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBkb2NzL21pc2Mv dG9vbHN0YWNrLWxpYnJhcnktYWJpcy5wYW5kb2MgICAgICAgfCAgMzggKystLQogc3R1YmRvbS9N YWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE5ICstCiB0b29scy9NYWtl ZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KIHRvb2xzL1J1bGVz Lm1rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNCArLQogdG9vbHMvY29uc29s ZS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsKIHRvb2xzL2NvbnNvbGUv ZGFlbW9uL2lvLmMgICAgICAgICAgICAgICAgICAgICB8ICA0MyArKystLQogdG9vbHMvbGlidmNo YW4vTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgIHwgICA2ICstCiB0b29scy9saWJ2Y2hh bi9pbml0LmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjAgKy0KIHRvb2xzL2xpYnZjaGFu L2lvLmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMiArLQogdG9vbHMvbGlidmNoYW4v bGlieGVudmNoYW4uaCAgICAgICAgICAgICAgICAgIHwgICAzICstCiB0b29scy9saWJ4Yy9NYWtl ZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDggKy0KIHRvb2xzL2xpYnhjL2luY2x1 ZGUveGVuY3RybC5oICAgICAgICAgICAgICAgICB8ICA5OSArLS0tLS0tLS0tCiB0b29scy9saWJ4 Yy9pbmNsdWRlL3hlbmN0cmxfY29tcGF0LmggICAgICAgICAgfCAgNDggKysrKysKIHRvb2xzL2xp YnhjL2luY2x1ZGUveGVuZ3Vlc3QuaCAgICAgICAgICAgICAgICB8ICAxMCArLQogdG9vbHMvbGli eGMveGNfZXZ0Y2huX2NvbXBhdC5jICAgICAgICAgICAgICAgIHwgIDc1ICsrKysrKysrCiB0b29s cy9saWJ4Yy94Y19mcmVlYnNkX29zZGVwLmMgICAgICAgICAgICAgICAgfCAxMDEgLS0tLS0tLS0t LQogdG9vbHMvbGlieGMveGNfbGludXhfb3NkZXAuYyAgICAgICAgICAgICAgICAgIHwgIDk1IC0t LS0tLS0tLQogdG9vbHMvbGlieGMveGNfbWluaW9zLmMgICAgICAgICAgICAgICAgICAgICAgIHwg MjIxIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogdG9vbHMvbGlieGMveGNfbmV0YnNkLmMgICAgICAg ICAgICAgICAgICAgICAgIHwgMTA5IC0tLS0tLS0tLS0tCiB0b29scy9saWJ4Yy94Y19wcml2YXRl LmMgICAgICAgICAgICAgICAgICAgICAgfCAgNDAgLS0tLQogdG9vbHMvbGlieGMveGNfcHJpdmF0 ZS5oICAgICAgICAgICAgICAgICAgICAgIHwgICA3IC0KIHRvb2xzL2xpYnhjL3hjX3NvbGFyaXMu YyAgICAgICAgICAgICAgICAgICAgICB8ICA5NyAtLS0tLS0tLS0tCiB0b29scy9saWJ4Yy94Y19z dXNwZW5kLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMTggKy0KIHRvb2xzL2xpYnhlbmV2dGNo bi9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICB8ICA2NSArKysrKysrCiB0b29scy9saWJ4ZW5l dnRjaG4vY29yZS5jICAgICAgICAgICAgICAgICAgICAgfCAgNzAgKysrKysrKwogdG9vbHMvbGli eGVuZXZ0Y2huL2ZyZWVic2QuYyAgICAgICAgICAgICAgICAgIHwgMTM1ICsrKysrKysrKysrKysK IHRvb2xzL2xpYnhlbmV2dGNobi9pbmNsdWRlL3hlbmV2dGNobi5oICAgICAgICB8IDE0NyArKysr KysrKysrKysrKwogdG9vbHMvbGlieGVuZXZ0Y2huL2xpYnhlbmV2dGNobi5tYXAgICAgICAgICAg IHwgIDE0ICsrCiB0b29scy9saWJ4ZW5ldnRjaG4vbGludXguYyAgICAgICAgICAgICAgICAgICAg fCAxMzMgKysrKysrKysrKysrKwogdG9vbHMvbGlieGVuZXZ0Y2huL21pbmlvcy5jICAgICAgICAg ICAgICAgICAgIHwgMjY2ICsrKysrKysrKysrKysrKysrKysrKysrKysrCiB0b29scy9saWJ4ZW5l dnRjaG4vbmV0YnNkLmMgICAgICAgICAgICAgICAgICAgfCAxNDQgKysrKysrKysrKysrKysKIHRv b2xzL2xpYnhlbmV2dGNobi9wcml2YXRlLmggICAgICAgICAgICAgICAgICB8ICAyNSArKysKIHRv b2xzL2xpYnhlbmV2dGNobi9zb2xhcmlzLmMgICAgICAgICAgICAgICAgICB8IDEzMiArKysrKysr KysrKysrCiB0b29scy9saWJ4ZW50b29sbG9nL2luY2x1ZGUveGVudG9vbGxvZy5oICAgICAgfCAg MTAgKwogdG9vbHMvbGlieGVudG9vbGxvZy94dGxfY29yZS5jICAgICAgICAgICAgICAgIHwgIDEw ICsKIHRvb2xzL2xpYnhlbnRvb2xsb2cveHRsX2xvZ2dlcl9zdGRpby5jICAgICAgICB8ICAxMCAr CiB0b29scy9saWJ4bC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDUgKy0K IHRvb2xzL2xpYnhsL2xpYnhsLmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQog dG9vbHMvbGlieGwvbGlieGxfZG9tLmMgICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICstCiB0 b29scy9saWJ4bC9saWJ4bF9ldmVudC5jICAgICAgICAgICAgICAgICAgICAgfCAgMTQgKy0KIHRv b2xzL2xpYnhsL2xpYnhsX2ludGVybmFsLmggICAgICAgICAgICAgICAgICB8ICAgNSArLQogdG9v bHMvbWlzYy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA3ICstCiB0b29s cy9taXNjL3hlbi1ocHRvb2wuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMTMgKy0KIHRvb2xz L21pc2MveGVuLWxvd21lbWQuYyAgICAgICAgICAgICAgICAgICAgICB8ICAxNSArLQogdG9vbHMv b2NhbWwvbGlicy9ldmVudGNobi9NYWtlZmlsZSAgICAgICAgICAgIHwgICA0ICstCiB0b29scy9v Y2FtbC9saWJzL2V2ZW50Y2huL3hlbmV2ZW50Y2huX3N0dWJzLmMgfCAgMjAgKy0KIHRvb2xzL3B5 dGhvbi9zZXR1cC5weSAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNyArLQogdG9vbHMvdGVz dHMveGVuLWFjY2Vzcy94ZW4tYWNjZXNzLmMgICAgICAgICAgIHwgICAyICstCiB0b29scy94Y3V0 aWxzL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHRvb2xzL3hlbm1v bi9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiB0b29scy94ZW5tb24v eGVuYmFrZWQuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMTMgKy0KIHRvb2xzL3hlbnBhZ2lu Zy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICB8ICAgNCArLQogdG9vbHMveGVucGFnaW5n L3hlbnBhZ2luZy5jICAgICAgICAgICAgICAgICAgIHwgIDE4ICstCiB0b29scy94ZW5wYWdpbmcv eGVucGFnaW5nLmggICAgICAgICAgICAgICAgICAgfCAgIDMgKy0KIHRvb2xzL3hlbnN0b3JlL01h a2VmaWxlICAgICAgICAgICAgICAgICAgICAgICB8ICAgNSArLQogdG9vbHMveGVuc3RvcmUveGVu c3RvcmVkX2NvcmUuYyAgICAgICAgICAgICAgIHwgICA2ICstCiB0b29scy94ZW5zdG9yZS94ZW5z dG9yZWRfZG9tYWluLmMgICAgICAgICAgICAgfCAgMjUgKy0tCiB0b29scy94ZW50cmFjZS9NYWtl ZmlsZSAgICAgICAgICAgICAgICAgICAgICAgfCAgIDUgKy0KIHRvb2xzL3hlbnRyYWNlL3hlbnRy YWNlLmMgICAgICAgICAgICAgICAgICAgICB8ICAxMyArLQogNjAgZmlsZXMgY2hhbmdlZCwgMTUy MCBpbnNlcnRpb25zKCspLCA5MjkgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgdG9v bHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsX2NvbXBhdC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgdG9v bHMvbGlieGMveGNfZXZ0Y2huX2NvbXBhdC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvbGli eGVuZXZ0Y2huL01ha2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvbGlieGVuZXZ0Y2hu L2NvcmUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL2xpYnhlbmV2dGNobi9mcmVlYnNkLmMK IGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9saWJ4ZW5ldnRjaG4vaW5jbHVkZS94ZW5ldnRjaG4u aAogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL2xpYnhlbmV2dGNobi9saWJ4ZW5ldnRjaG4ubWFw CiBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvbGlieGVuZXZ0Y2huL2xpbnV4LmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCB0b29scy9saWJ4ZW5ldnRjaG4vbWluaW9zLmMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCB0b29scy9saWJ4ZW5ldnRjaG4vbmV0YnNkLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9s aWJ4ZW5ldnRjaG4vcHJpdmF0ZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvbGlieGVuZXZ0 Y2huL3NvbGFyaXMuYwoKZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4 IGU1NjQ4N2EuLmVkNmJhYzYgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9y ZQpAQCAtNjAsNiArNjAsNyBAQCBzdHViZG9tL2luY2x1ZGUKIHN0dWJkb20vaW9lbXUKIHN0dWJk b20veGVuc3RvcmUKIHN0dWJkb20vbGlieGVudG9vbGxvZy0qCitzdHViZG9tL2xpYnhlbmV2dGNo bi0qCiBzdHViZG9tL2xpYnhjLSoKIHN0dWJkb20vbHdpcC0qCiBzdHViZG9tL21pbmktb3MtKgpk aWZmIC0tZ2l0IGEvZG9jcy9taXNjL3Rvb2xzdGFjay1saWJyYXJ5LWFiaXMucGFuZG9jIGIvZG9j cy9taXNjL3Rvb2xzdGFjay1saWJyYXJ5LWFiaXMucGFuZG9jCmluZGV4IDY4ZTY3NDIuLmQ3YWU4 NzUgMTAwNjQ0Ci0tLSBhL2RvY3MvbWlzYy90b29sc3RhY2stbGlicmFyeS1hYmlzLnBhbmRvYwor KysgYi9kb2NzL21pc2MvdG9vbHN0YWNrLWxpYnJhcnktYWJpcy5wYW5kb2MKQEAgLTExMSw2ICsx MTEsMjMgQEAgSW50ZXJmYWNlICAgICAgICAgICAgICAgICAgICAgS25vd24gZXh0ZXJuYWwgdXNl cnMKIGB4dGxfc3RkaW9zdHJlYW1fYWRqdXN0X2ZsYWdzYAogYHh0bF9zdGRpb3N0cmVhbV9zZXRf bWlubGV2ZWxgCiAKKyMjIGBsaWJ4ZW5ldnRjaG5gOiBldmVudCBjaGFubmVscworCitJbnRlcmFj dGluZyB3aXRoIEV2ZW50IENoYW5uZWxzIHZpYSBgL2Rldi94ZW4vZXZ0Y2huYC4KKworSW50ZXJm YWNlICAgICAgICAgICAgICAgICAgICAgVW5kZXJseWluZyBpbnRlcmZhY2UgICAgICAgICAgICAg S25vd24gZXh0ZXJuYWwgdXNlcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tCitgeGVuZXZ0 Y2huX2JpbmRfaW50ZXJkb21haW5gICBgSU9DVExfRVZUQ0hOX0JJTkRfSU5URVJET01BSU5gICBx ZW11LXB2CitgeGVuZXZ0Y2huX2JpbmRfdW5ib3VuZF9wb3J0YCBgSU9DVExfRVZUQ0hOX0JJTkRf VU5CT1VORF9QT1JUYAorYHhlbmV2dGNobl9iaW5kX3ZpcnFgICAgICAgICAgYElPQ1RMX0VWVENI Tl9CSU5EX1ZJUlFgCitgeGVuZXZ0Y2huX2Nsb3NlYCAgICAgICAgICAgICBgY2xvc2UoMilgICAg ICAgICAgICAgICAgICAgICAgICBxZW11LWRtCitgeGVuZXZ0Y2huX2ZkYAorYHhlbmV2dGNobl9u b3RpZnlgICAgICAgICAgICAgYElPQ1RMX0VWVENITl9OT1RJRllgICAgICAgICAgICAgcWVtdS1k bSwgcWVtdS1wdgorYHhlbmV2dGNobl9vcGVuYCAgICAgICAgICAgICAgYG9wZW4oMilgICAgICAg ICAgICAgICAgICAgICAgICAgcWVtdS1kbSwgcWVtdS1wdgorYHhlbmV2dGNobl9wZW5kaW5nYCAg ICAgICAgICAgYHJlYWQoMilgICAgICAgICAgICAgICAgICAgICAgICAgcWVtdS1kbSwgcWVtdS1w dgorYHhlbmV2dGNobl91bmJpbmRgICAgICAgICAgICAgYElPQ1RMX0VWVENITl9VTkJJTkRgICAg ICAgICAgICAgcWVtdS1wdgorYHhlbmV2dGNobl91bm1hc2tgICAgICAgICAgICAgYHdyaXRlKDIp YCAgICAgICAgICAgICAgICAgICAgICAgcWVtdS1kbSwgcWVtdS1wdgorCiAjIFVuc3RhYmxlIGxp YnJhcmllcwogCiBUaGVzZSBsaWJyYXJpZXMgZG8gbm90IHByb3ZpZGUgYSBzdGFibGUgaW50ZXJm YWNlIGFuZCBhcmUgcmVxdWlyZWQgdG8KQEAgLTE1MywyMCArMTcwLDEwIEBAIE5vdGVzOgogIyMj IEV2ZW50IGNoYW5uZWxzCiAKIEludGVyYWN0aW5nIHdpdGggRXZlbnQgQ2hhbm5lbHMgdmlhIGBf X0hZUEVSVklTT1JfZXZlbnRfY2hhbm5lbF9vcGAKLShgRVZUQ0hOT1BfKmApIG9yIGAvZGV2L3hl bi9ldnRjaG5gLgorKGBFVlRDSE5PUF8qYCkuCiAKIEludGVyZmFjZSAgICAgICAgICAgICAgICAg ICAgIFVuZGVybHlpbmcgaW50ZXJmYWNlICAgICAgICAgICAgIEtub3duIGV4dGVybmFsIHVzZXJz CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLQotYHhjX2V2dGNobl9iaW5kX2ludGVyZG9tYWlu YCAgYElPQ1RMX0VWVENITl9CSU5EX0lOVEVSRE9NQUlOYCAgcWVtdS1wdgotYHhjX2V2dGNobl9i aW5kX3VuYm91bmRfcG9ydGAgYElPQ1RMX0VWVENITl9CSU5EX1VOQk9VTkRfUE9SVGAKLWB4Y19l dnRjaG5fYmluZF92aXJxYCAgICAgICAgIGBJT0NUTF9FVlRDSE5fQklORF9WSVJRYAotYHhjX2V2 dGNobl9jbG9zZWAgICAgICAgICAgICAgYGNsb3NlKDIpYCAgICAgICAgICAgICAgICAgICAgICAg cWVtdS1kbQotYHhjX2V2dGNobl9mZGAKLWB4Y19ldnRjaG5fbm90aWZ5YCAgICAgICAgICAgIGBJ T0NUTF9FVlRDSE5fTk9USUZZYCAgICAgICAgICAgIHFlbXUtZG0sIHFlbXUtcHYKLWB4Y19ldnRj aG5fb3BlbmAgICAgICAgICAgICAgIGBvcGVuKDIpYCAgICAgICAgICAgICAgICAgICAgICAgIHFl bXUtZG0sIHFlbXUtcHYKLWB4Y19ldnRjaG5fcGVuZGluZ2AgICAgICAgICAgIGByZWFkKDIpYCAg ICAgICAgICAgICAgICAgICAgICAgIHFlbXUtZG0sIHFlbXUtcHYKLWB4Y19ldnRjaG5fdW5iaW5k YCAgICAgICAgICAgIGBJT0NUTF9FVlRDSE5fVU5CSU5EYCAgICAgICAgICAgIHFlbXUtcHYKLWB4 Y19ldnRjaG5fdW5tYXNrYCAgICAgICAgICAgIGB3cml0ZSgyKWAgICAgICAgICAgICAgICAgICAg ICAgIHFlbXUtZG0sIHFlbXUtcHYKIGB4Y19ldnRjaG5fYWxsb2NfdW5ib3VuZGAgICAgIGBFVlRD SE5PUF9hbGxvY191bmJvdW5kYAogYHhjX2V2dGNobl9yZXNldGAgICAgICAgICAgICAgYEVWVENI Tk9QX3Jlc2V0YAogYHhjX2V2dGNobl9zdGF0dXNgICAgICAgICAgICAgYEVWVENITk9QX3N0YXR1 c2AKQEAgLTcyNiwxMSArNzMzLDE0IEBAIEdhdGhlcmVkIGJ5OgogICAgIC0geGNfbWFya19wYWdl X29ubGluZQogICAgIC0geGNfcXVlcnlfcGFnZV9vZmZsaW5lX3N0YXR1cwogICAgIC0geGNfcmVh ZF9pbWFnZQotICAgIC0geGNfc3VzcGVuZF9ldnRjaG5faW5pdF9leGNsdXNpdmUKLSAgICAtIHhj X3N1c3BlbmRfZXZ0Y2huX2luaXRfc2FuZQotICAgIC0geGNfc3VzcGVuZF9ldnRjaG5fcmVsZWFz ZQogICAgIC0geGNfdHJ5X2x6NF9kZWNvZGUKIAorVXNlIHByaXZjbWQgYW5kIGV2dGNobiBkZXZp Y2UgaGFuZGxlczoKKworICAgIC0geGNfc3VzcGVuZF9ldnRjaG5faW5pdF9leGNsdXNpdmUuIFVz ZWQgYnkgeGVuLWhwdG9vbCBhbmQgbGlieGwuCisgICAgLSB4Y19zdXNwZW5kX2V2dGNobl9pbml0 X3NhbmUuIFVudXNlZAorICAgIC0geGNfc3VzcGVuZF9ldnRjaG5fcmVsZWFzZS4gVXNlZCBieSB4 ZW4taHB0b29sIGFuZCBsaWJ4bC4KKwogIyBDb25zdW1lcnMgb2YgYGxpYnhlbmN0cmxgIGZ1bmN0 aW9uYWxpdHkKIAogIyMgYHFlbXVgCmRpZmYgLS1naXQgYS9zdHViZG9tL01ha2VmaWxlIGIvc3R1 YmRvbS9NYWtlZmlsZQppbmRleCBiOGIwZDQzLi5iNGRkMzlhIDEwMDY0NAotLS0gYS9zdHViZG9t L01ha2VmaWxlCisrKyBiL3N0dWJkb20vTWFrZWZpbGUKQEAgLTMxOCw2ICszMTgsMTIgQEAgbWst aGVhZGVycy0kKFhFTl9UQVJHRVRfQVJDSCk6ICQoSU9FTVVfTElOS0ZBUk1fVEFSR0VUKQogCSAg bG4gLXNmICQoWEVOX1JPT1QpL3Rvb2xzL2xpYnhlbnRvb2xsb2cvaW5jbHVkZS8qLmggLiAmJiBc CiAJICBsbiAtc2YgJChYRU5fUk9PVCkvdG9vbHMvbGlieGVudG9vbGxvZy8qLmMgLiAmJiBcCiAJ ICBsbiAtc2YgJChYRU5fUk9PVCkvdG9vbHMvbGlieGVudG9vbGxvZy9NYWtlZmlsZSAuICkKKwlt a2RpciAtcCBsaWJ4ZW5ldnRjaG4tJChYRU5fVEFSR0VUX0FSQ0gpL2luY2x1ZGUKKwlbIC1oIGxp YnhlbmV2dGNobi0kKFhFTl9UQVJHRVRfQVJDSCkvTWFrZWZpbGUgXSB8fCAoIGNkIGxpYnhlbmV2 dGNobi0kKFhFTl9UQVJHRVRfQVJDSCkgJiYgXAorCSAgbG4gLXNmICQoWEVOX1JPT1QpL3Rvb2xz L2xpYnhlbmV2dGNobi8qLmggLiAmJiBcCisJICBsbiAtc2YgJChYRU5fUk9PVCkvdG9vbHMvbGli eGVuZXZ0Y2huL2luY2x1ZGUvKi5oIGluY2x1ZGUvICYmIFwKKwkgIGxuIC1zZiAkKFhFTl9ST09U KS90b29scy9saWJ4ZW5ldnRjaG4vKi5jIC4gJiYgXAorCSAgbG4gLXNmICQoWEVOX1JPT1QpL3Rv b2xzL2xpYnhlbmV2dGNobi9NYWtlZmlsZSAuICkKIAlta2RpciAtcCBsaWJ4Yy0kKFhFTl9UQVJH RVRfQVJDSCkKIAlbIC1oIGxpYnhjLSQoWEVOX1RBUkdFVF9BUkNIKS9NYWtlZmlsZSBdIHx8ICgg Y2QgbGlieGMtJChYRU5fVEFSR0VUX0FSQ0gpICYmIFwKIAkgIGxuIC1zZiAkKFhFTl9ST09UKS90 b29scy9saWJ4Yy8qLmggLiAmJiBcCkBAIC0zNTIsMTIgKzM1OCwyMyBAQCBsaWJ4ZW50b29sbG9n LSQoWEVOX1RBUkdFVF9BUkNIKS9saWJ4ZW50b29sbG9nLmE6ICQoTkVXTElCX1NUQU1QRklMRSkK IAlDUFBGTEFHUz0iJChUQVJHRVRfQ1BQRkxBR1MpIiBDRkxBR1M9IiQoVEFSR0VUX0NGTEFHUyki ICQoTUFLRSkgREVTVERJUj0gLUMgbGlieGVudG9vbGxvZy0kKFhFTl9UQVJHRVRfQVJDSCkKIAog IyMjIyMjIworIyBsaWJ4ZW5ldnRjaG4KKyMjIyMjIyMKKworLlBIT05ZOiBsaWJ4ZW5ldnRjaG4K K2xpYnhlbmV2dGNobjogbGlieGVuZXZ0Y2huLSQoWEVOX1RBUkdFVF9BUkNIKS9saWJ4ZW5ldnRj aG4uYQorbGlieGVuZXZ0Y2huLSQoWEVOX1RBUkdFVF9BUkNIKS9saWJ4ZW5ldnRjaG4uYTogJChO RVdMSUJfU1RBTVBGSUxFKQorCSQoTUFLRSkgLUMgJChYRU5fUk9PVCkvdG9vbHMvaW5jbHVkZQor CSQoTUFLRSkgREVTVERJUj0gLUMgJChNSU5JX09TKSBsaW5rcworCUNQUEZMQUdTPSIkKFRBUkdF VF9DUFBGTEFHUykiIENGTEFHUz0iJChUQVJHRVRfQ0ZMQUdTKSIgJChNQUtFKSBERVNURElSPSAt QyBsaWJ4ZW5ldnRjaG4tJChYRU5fVEFSR0VUX0FSQ0gpCisKKyMjIyMjIyMKICMgbGlieGMKICMj IyMjIyMKIAogLlBIT05ZOiBsaWJ4YwogbGlieGM6IGxpYnhjLSQoWEVOX1RBUkdFVF9BUkNIKS9s aWJ4ZW5jdHJsLmEgbGlieGMtJChYRU5fVEFSR0VUX0FSQ0gpL2xpYnhlbmd1ZXN0LmEKLWxpYnhj LSQoWEVOX1RBUkdFVF9BUkNIKS9saWJ4ZW5jdHJsLmE6IGxpYnhlbnRvb2xsb2cgY3Jvc3Mtemxp YgorbGlieGMtJChYRU5fVEFSR0VUX0FSQ0gpL2xpYnhlbmN0cmwuYTogbGlieGVudG9vbGxvZyBs aWJ4ZW5ldnRjaG4gY3Jvc3MtemxpYgogCSQoTUFLRSkgLUMgJChYRU5fUk9PVCkvdG9vbHMvaW5j bHVkZQogCSQoTUFLRSkgREVTVERJUj0gLUMgJChNSU5JX09TKSBsaW5rcwogCUNQUEZMQUdTPSIk KFRBUkdFVF9DUFBGTEFHUykiIENGTEFHUz0iJChUQVJHRVRfQ0ZMQUdTKSIgJChNQUtFKSBERVNU RElSPSBDT05GSUdfTElCWENfTUlOSU9TPXkgLUMgbGlieGMtJChYRU5fVEFSR0VUX0FSQ0gpCmRp ZmYgLS1naXQgYS90b29scy9NYWtlZmlsZSBiL3Rvb2xzL01ha2VmaWxlCmluZGV4IDc3NzU5MWEu LjM0OTdjNTMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL01ha2VmaWxlCisrKyBiL3Rvb2xzL01ha2VmaWxl CkBAIC00LDYgKzQsNyBAQCBpbmNsdWRlICQoWEVOX1JPT1QpL3Rvb2xzL1J1bGVzLm1rCiBTVUJE SVJTLXkgOj0KIFNVQkRJUlMteSArPSBpbmNsdWRlCiBTVUJESVJTLXkgKz0gbGlieGVudG9vbGxv ZworU1VCRElSUy15ICs9IGxpYnhlbmV2dGNobgogU1VCRElSUy15ICs9IGxpYnhjCiBTVUJESVJT LSQoRkxBU0tfRU5BQkxFKSArPSBmbGFzawogU1VCRElSUy15ICs9IHhlbnN0b3JlCkBAIC0yNDgs OCArMjQ5LDEwIEBAIHN1YmRpci1hbGwtcWVtdS14ZW4tZGlyOiBxZW11LXhlbi1kaXItZmluZAog CQktLWxpYmRpcj0kKExJQkVYRUNfTElCKSBcCiAJCS0taW5jbHVkZWRpcj0kKExJQkVYRUNfSU5D KSBcCiAJCS0tc291cmNlLXBhdGg9JCRzb3VyY2UgXAotCQktLWV4dHJhLWNmbGFncz0iLUkkKFhF Tl9ST09UKS90b29scy9pbmNsdWRlIFwKKwkJLS1leHRyYS1jZmxhZ3M9Ii1EWENfV0FOVF9DT01Q QVRfRVZUQ0hOX0FQST0xIFwKKwkJLUkkKFhFTl9ST09UKS90b29scy9pbmNsdWRlIFwKIAkJLUkk KFhFTl9ST09UKS90b29scy9saWJ4ZW50b29sbG9nL2luY2x1ZGUgXAorCQktSSQoWEVOX1JPT1Qp L3Rvb2xzL2xpYnhlbmV2dGNobi9pbmNsdWRlIFwKIAkJLUkkKFhFTl9ST09UKS90b29scy9saWJ4 Yy9pbmNsdWRlIFwKIAkJLUkkKFhFTl9ST09UKS90b29scy94ZW5zdG9yZS9pbmNsdWRlIFwKIAkJ LUkkKFhFTl9ST09UKS90b29scy94ZW5zdG9yZS9jb21wYXQvaW5jbHVkZSBcCkBAIC0yNTcsNiAr MjYwLDcgQEAgc3ViZGlyLWFsbC1xZW11LXhlbi1kaXI6IHFlbXUteGVuLWRpci1maW5kCiAJCS0t ZXh0cmEtbGRmbGFncz0iLUwkKFhFTl9ST09UKS90b29scy9saWJ4YyBcCiAJCS1MJChYRU5fUk9P VCkvdG9vbHMveGVuc3RvcmUgXAogCQktV2wsLXJwYXRoLWxpbms9JChYRU5fUk9PVCkvdG9vbHMv bGlieGVudG9vbGxvZyBcCisJCS1XbCwtcnBhdGgtbGluaz0kKFhFTl9ST09UKS90b29scy9saWJ4 ZW5ldnRjaG4gXAogCQkkKFFFTVVfVVBTVFJFQU1fUlBBVEgpIiBcCiAJCS0tYmluZGlyPSQoTElC RVhFQ19CSU4pIFwKIAkJLS1kYXRhZGlyPSQoU0hBUkVESVIpL3FlbXUteGVuIFwKZGlmZiAtLWdp dCBhL3Rvb2xzL1J1bGVzLm1rIGIvdG9vbHMvUnVsZXMubWsKaW5kZXggMTEyMjdjNy4uZTIwMGVi NyAxMDA2NDQKLS0tIGEvdG9vbHMvUnVsZXMubWsKKysrIGIvdG9vbHMvUnVsZXMubWsKQEAgLTEx LDYgKzExLDcgQEAgSU5TVEFMTCA9ICQoWEVOX1JPT1QpL3Rvb2xzL2Nyb3NzLWluc3RhbGwKIAog WEVOX0lOQ0xVREUgICAgICAgID0gJChYRU5fUk9PVCkvdG9vbHMvaW5jbHVkZQogWEVOX0xJQlhF TlRPT0xMT0cgID0gJChYRU5fUk9PVCkvdG9vbHMvbGlieGVudG9vbGxvZworWEVOX0xJQlhFTkVW VENITiAgID0gJChYRU5fUk9PVCkvdG9vbHMvbGlieGVuZXZ0Y2huCiBYRU5fTElCWEMgICAgICAg ICAgPSAkKFhFTl9ST09UKS90b29scy9saWJ4YwogWEVOX1hFTkxJR0hUICAgICAgID0gJChYRU5f Uk9PVCkvdG9vbHMvbGlieGwKIFhFTl9YRU5TVE9SRSAgICAgICA9ICQoWEVOX1JPT1QpL3Rvb2xz L3hlbnN0b3JlCkBAIC04MiwxMyArODMsMTggQEAgU0hERVBTX2xpYnhlbnRvb2xsb2cgPQogTERM SUJTX2xpYnhlbnRvb2xsb2cgPSAkKFhFTl9MSUJYRU5UT09MTE9HKS9saWJ4ZW50b29sbG9nJChs aWJleHRlbnNpb24pCiBTSExJQl9saWJ4ZW50b29sbG9nICA9IC1XbCwtcnBhdGgtbGluaz0kKFhF Tl9MSUJYRU5UT09MTE9HKQogCitDRkxBR1NfbGlieGVuZXZ0Y2huID0gLUkkKFhFTl9MSUJYRU5F VlRDSE4pL2luY2x1ZGUgJChDRkxBR1NfeGVuaW5jbHVkZSkKK1NIREVQU19saWJ4ZW5ldnRjaG4g PQorTERMSUJTX2xpYnhlbmV2dGNobiA9ICQoWEVOX0xJQlhFTkVWVENITikvbGlieGVuZXZ0Y2hu JChsaWJleHRlbnNpb24pCitTSExJQl9saWJ4ZW5ldnRjaG4gID0gLVdsLC1ycGF0aC1saW5rPSQo WEVOX0xJQlhFTkVWVENITikKKwogQ0ZMQUdTX2xpYnhlbmN0cmwgPSAtSSQoWEVOX0xJQlhDKS9p bmNsdWRlICQoQ0ZMQUdTX2xpYnhlbnRvb2xsb2cpICQoQ0ZMQUdTX3hlbmluY2x1ZGUpCi1TSERF UFNfbGlieGVuY3RybCA9ICQoU0hMSUJfbGlieGVudG9vbGxvZykgCitTSERFUFNfbGlieGVuY3Ry bCA9ICQoU0hMSUJfbGlieGVudG9vbGxvZykgJChTSExJQl9saWJ4ZW5ldnRjaG4pCiBMRExJQlNf bGlieGVuY3RybCA9ICQoU0hERVBTX2xpYnhlbmN0cmwpICQoWEVOX0xJQlhDKS9saWJ4ZW5jdHJs JChsaWJleHRlbnNpb24pCiBTSExJQl9saWJ4ZW5jdHJsICA9ICQoU0hERVBTX2xpYnhlbmN0cmwp IC1XbCwtcnBhdGgtbGluaz0kKFhFTl9MSUJYQykKIAotQ0ZMQUdTX2xpYnhlbmd1ZXN0ID0gLUkk KFhFTl9MSUJYQykvaW5jbHVkZSAkKENGTEFHU194ZW5pbmNsdWRlKQotU0hERVBTX2xpYnhlbmd1 ZXN0ID0KK0NGTEFHU19saWJ4ZW5ndWVzdCA9IC1JJChYRU5fTElCWEMpL2luY2x1ZGUgJChDRkxB R1NfbGlieGVuZXZ0Y2huKSAkKENGTEFHU194ZW5pbmNsdWRlKQorU0hERVBTX2xpYnhlbmd1ZXN0 ID0gJChTSExJQl9saWJ4ZW5ldnRjaG4pCiBMRExJQlNfbGlieGVuZ3Vlc3QgPSAkKFNIREVQU19s aWJ4ZW5ndWVzdCkgJChYRU5fTElCWEMpL2xpYnhlbmd1ZXN0JChsaWJleHRlbnNpb24pCiBTSExJ Ql9saWJ4ZW5ndWVzdCAgPSAkKFNIREVQU19saWJ4ZW5ndWVzdCkgLVdsLC1ycGF0aC1saW5rPUwk KFhFTl9MSUJYQykKIApAQCAtMTAzLDcgKzEwOSw3IEBAIExETElCU19saWJ4ZW5zdGF0ICA9ICQo U0hERVBTX2xpYnhlbnN0YXQpICQoWEVOX0xJQlhFTlNUQVQpL2xpYnhlbnN0YXQkKGxpYmV4dGVu CiBTSExJQl9saWJ4ZW5zdGF0ICAgPSAkKFNIREVQU19saWJ4ZW5zdGF0KSAtV2wsLXJwYXRoLWxp bms9JChYRU5fTElCWEVOU1RBVCkKIAogQ0ZMQUdTX2xpYnhlbnZjaGFuID0gLUkkKFhFTl9MSUJW Q0hBTikKLVNIREVQU19saWJ4ZW52Y2hhbiA9ICQoU0hMSUJfbGlieGVuY3RybCkgJChTSExJQl9s aWJ4ZW5zdG9yZSkKK1NIREVQU19saWJ4ZW52Y2hhbiA9ICQoU0hMSUJfbGlieGVuY3RybCkgJChT SExJQl9saWJ4ZW5zdG9yZSkgJChTSExJQl9saWJ4ZW5ldnRjaG4pCiBMRExJQlNfbGlieGVudmNo YW4gPSAkKFNIREVQU19saWJ4ZW52Y2hhbikgJChYRU5fTElCVkNIQU4pL2xpYnhlbnZjaGFuJChs aWJleHRlbnNpb24pCiBTSExJQl9saWJ4ZW52Y2hhbiAgPSAkKFNIREVQU19saWJ4ZW52Y2hhbikg LVdsLC1ycGF0aC1saW5rPSQoWEVOX0xJQlZDSEFOKQogCmRpZmYgLS1naXQgYS90b29scy9jb25z b2xlL01ha2VmaWxlIGIvdG9vbHMvY29uc29sZS9NYWtlZmlsZQppbmRleCA3MWY4MDg4Li4wMTQx ZDdmIDEwMDY0NAotLS0gYS90b29scy9jb25zb2xlL01ha2VmaWxlCisrKyBiL3Rvb2xzL2NvbnNv bGUvTWFrZWZpbGUKQEAgLTMsOCArMywxMCBAQCBpbmNsdWRlICQoWEVOX1JPT1QpL3Rvb2xzL1J1 bGVzLm1rCiAKIENGTEFHUyAgKz0gLVdlcnJvcgogCitDRkxBR1MgICs9ICQoQ0ZMQUdTX2xpYnhl bmV2dGNobikKIENGTEFHUyAgKz0gJChDRkxBR1NfbGlieGVuY3RybCkKIENGTEFHUyAgKz0gJChD RkxBR1NfbGlieGVuc3RvcmUpCitMRExJQlMgKz0gJChMRExJQlNfbGlieGVuZXZ0Y2huKQogTERM SUJTICs9ICQoTERMSUJTX2xpYnhlbmN0cmwpCiBMRExJQlMgKz0gJChMRExJQlNfbGlieGVuc3Rv cmUpCiBMRExJQlMgKz0gJChTT0NLRVRfTElCUykKZGlmZiAtLWdpdCBhL3Rvb2xzL2NvbnNvbGUv ZGFlbW9uL2lvLmMgYi90b29scy9jb25zb2xlL2RhZW1vbi9pby5jCmluZGV4IGUyNDZjMjUuLjg4 MjliMDkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2NvbnNvbGUvZGFlbW9uL2lvLmMKKysrIGIvdG9vbHMv Y29uc29sZS9kYWVtb24vaW8uYwpAQCAtMjIsNiArMjIsNyBAQAogCiAjaW5jbHVkZSAidXRpbHMu aCIKICNpbmNsdWRlICJpby5oIgorI2luY2x1ZGUgPHhlbmV2dGNobi5oPgogI2luY2x1ZGUgPHhl bnN0b3JlLmg+CiAjaW5jbHVkZSA8eGVuL2lvL2NvbnNvbGUuaD4KICNpbmNsdWRlIDx4ZW4vZ3Jh bnRfdGFibGUuaD4KQEAgLTEwMiw3ICsxMDMsNyBAQCBzdHJ1Y3QgZG9tYWluIHsKIAlpbnQgcmlu Z19yZWY7CiAJZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCBsb2NhbF9wb3J0OwogCWV2dGNobl9wb3J0 X29yX2Vycm9yX3QgcmVtb3RlX3BvcnQ7Ci0JeGNfZXZ0Y2huICp4Y2VfaGFuZGxlOworCXhlbmV2 dGNobl9oYW5kbGUgKnhjZV9oYW5kbGU7CiAJaW50IHhjZV9wb2xsZmRfaWR4OwogCXN0cnVjdCB4 ZW5jb25zX2ludGVyZmFjZSAqaW50ZXJmYWNlOwogCWludCBldmVudF9jb3VudDsKQEAgLTE4Niw3 ICsxODcsNyBAQCBzdGF0aWMgdm9pZCBidWZmZXJfYXBwZW5kKHN0cnVjdCBkb21haW4gKmRvbSkK IAogCXhlbl9tYigpOwogCWludGYtPm91dF9jb25zID0gY29uczsKLQl4Y19ldnRjaG5fbm90aWZ5 KGRvbS0+eGNlX2hhbmRsZSwgZG9tLT5sb2NhbF9wb3J0KTsKKwl4ZW5ldnRjaG5fbm90aWZ5KGRv bS0+eGNlX2hhbmRsZSwgZG9tLT5sb2NhbF9wb3J0KTsKIAogCS8qIEdldCB0aGUgZGF0YSB0byB0 aGUgbG9nZmlsZSBhcyBlYXJseSBhcyBwb3NzaWJsZSBiZWNhdXNlIGlmCiAJICogbm8gb25lIGlz IGxpc3RlbmluZyBvbiB0aGUgY29uc29sZSBwdHkgdGhlbiBpdCB3aWxsIGZpbGwgdXAKQEAgLTU4 NSwyMiArNTg2LDIyIEBAIHN0YXRpYyBpbnQgZG9tYWluX2NyZWF0ZV9yaW5nKHN0cnVjdCBkb21h aW4gKmRvbSkKIAlkb20tPmxvY2FsX3BvcnQgPSAtMTsKIAlkb20tPnJlbW90ZV9wb3J0ID0gLTE7 CiAJaWYgKGRvbS0+eGNlX2hhbmRsZSAhPSBOVUxMKQotCQl4Y19ldnRjaG5fY2xvc2UoZG9tLT54 Y2VfaGFuZGxlKTsKKwkJeGVuZXZ0Y2huX2Nsb3NlKGRvbS0+eGNlX2hhbmRsZSk7CiAKIAkvKiBP cGVuaW5nIGV2dGNobiBpbmRlcGVuZGVudGx5IGZvciBlYWNoIGNvbnNvbGUgaXMgYSBiaXQKIAkg KiB3YXN0ZWZ1bCwgYnV0IHRoYXQncyBob3cgdGhlIGNvZGUgaXMgc3RydWN0dXJlZC4uLiAqLwot CWRvbS0+eGNlX2hhbmRsZSA9IHhjX2V2dGNobl9vcGVuKE5VTEwsIDApOworCWRvbS0+eGNlX2hh bmRsZSA9IHhlbmV2dGNobl9vcGVuKE5VTEwsIDApOwogCWlmIChkb20tPnhjZV9oYW5kbGUgPT0g TlVMTCkgewogCQllcnIgPSBlcnJubzsKIAkJZ290byBvdXQ7CiAJfQogIAotCXJjID0geGNfZXZ0 Y2huX2JpbmRfaW50ZXJkb21haW4oZG9tLT54Y2VfaGFuZGxlLAorCXJjID0geGVuZXZ0Y2huX2Jp bmRfaW50ZXJkb21haW4oZG9tLT54Y2VfaGFuZGxlLAogCQlkb20tPmRvbWlkLCByZW1vdGVfcG9y dCk7CiAKIAlpZiAocmMgPT0gLTEpIHsKIAkJZXJyID0gZXJybm87Ci0JCXhjX2V2dGNobl9jbG9z ZShkb20tPnhjZV9oYW5kbGUpOworCQl4ZW5ldnRjaG5fY2xvc2UoZG9tLT54Y2VfaGFuZGxlKTsK IAkJZG9tLT54Y2VfaGFuZGxlID0gTlVMTDsKIAkJZ290byBvdXQ7CiAJfQpAQCAtNjEwLDcgKzYx MSw3IEBAIHN0YXRpYyBpbnQgZG9tYWluX2NyZWF0ZV9yaW5nKHN0cnVjdCBkb21haW4gKmRvbSkK IAlpZiAoZG9tLT5tYXN0ZXJfZmQgPT0gLTEpIHsKIAkJaWYgKCFkb21haW5fY3JlYXRlX3R0eShk b20pKSB7CiAJCQllcnIgPSBlcnJubzsKLQkJCXhjX2V2dGNobl9jbG9zZShkb20tPnhjZV9oYW5k bGUpOworCQkJeGVuZXZ0Y2huX2Nsb3NlKGRvbS0+eGNlX2hhbmRsZSk7CiAJCQlkb20tPnhjZV9o YW5kbGUgPSBOVUxMOwogCQkJZG9tLT5sb2NhbF9wb3J0ID0gLTE7CiAJCQlkb20tPnJlbW90ZV9w b3J0ID0gLTE7CkBAIC03NTAsNyArNzUxLDcgQEAgc3RhdGljIHZvaWQgc2h1dGRvd25fZG9tYWlu KHN0cnVjdCBkb21haW4gKmQpCiAJd2F0Y2hfZG9tYWluKGQsIGZhbHNlKTsKIAlkb21haW5fdW5t YXBfaW50ZXJmYWNlKGQpOwogCWlmIChkLT54Y2VfaGFuZGxlICE9IE5VTEwpCi0JCXhjX2V2dGNo bl9jbG9zZShkLT54Y2VfaGFuZGxlKTsKKwkJeGVuZXZ0Y2huX2Nsb3NlKGQtPnhjZV9oYW5kbGUp OwogCWQtPnhjZV9oYW5kbGUgPSBOVUxMOwogfQogCkBAIC04NDAsNyArODQxLDcgQEAgc3RhdGlj IHZvaWQgaGFuZGxlX3R0eV9yZWFkKHN0cnVjdCBkb21haW4gKmRvbSkKIAkJfQogCQl4ZW5fd21i KCk7CiAJCWludGYtPmluX3Byb2QgPSBwcm9kOwotCQl4Y19ldnRjaG5fbm90aWZ5KGRvbS0+eGNl X2hhbmRsZSwgZG9tLT5sb2NhbF9wb3J0KTsKKwkJeGVuZXZ0Y2huX25vdGlmeShkb20tPnhjZV9o YW5kbGUsIGRvbS0+bG9jYWxfcG9ydCk7CiAJfSBlbHNlIHsKIAkJZG9tYWluX2Nsb3NlX3R0eShk b20pOwogCQlzaHV0ZG93bl9kb21haW4oZG9tKTsKQEAgLTg3Miw3ICs4NzMsNyBAQCBzdGF0aWMg dm9pZCBoYW5kbGVfcmluZ19yZWFkKHN0cnVjdCBkb21haW4gKmRvbSkKIAlpZiAoZG9tLT5pc19k ZWFkKQogCQlyZXR1cm47CiAKLQlpZiAoKHBvcnQgPSB4Y19ldnRjaG5fcGVuZGluZyhkb20tPnhj ZV9oYW5kbGUpKSA9PSAtMSkKKwlpZiAoKHBvcnQgPSB4ZW5ldnRjaG5fcGVuZGluZyhkb20tPnhj ZV9oYW5kbGUpKSA9PSAtMSkKIAkJcmV0dXJuOwogCiAJZG9tLT5ldmVudF9jb3VudCsrOwpAQCAt ODgwLDcgKzg4MSw3IEBAIHN0YXRpYyB2b2lkIGhhbmRsZV9yaW5nX3JlYWQoc3RydWN0IGRvbWFp biAqZG9tKQogCWJ1ZmZlcl9hcHBlbmQoZG9tKTsKIAogCWlmIChkb20tPmV2ZW50X2NvdW50IDwg UkFURV9MSU1JVF9BTExPV0FOQ0UpCi0JCSh2b2lkKXhjX2V2dGNobl91bm1hc2soZG9tLT54Y2Vf aGFuZGxlLCBwb3J0KTsKKwkJKHZvaWQpeGVuZXZ0Y2huX3VubWFzayhkb20tPnhjZV9oYW5kbGUs IHBvcnQpOwogfQogCiBzdGF0aWMgdm9pZCBoYW5kbGVfeHModm9pZCkKQEAgLTkwNyw3ICs5MDgs NyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfeHModm9pZCkKIAlmcmVlKHZlYyk7CiB9CiAKLXN0YXRp YyB2b2lkIGhhbmRsZV9odl9sb2dzKHhjX2V2dGNobiAqeGNlX2hhbmRsZSwgYm9vbCBmb3JjZSkK K3N0YXRpYyB2b2lkIGhhbmRsZV9odl9sb2dzKHhlbmV2dGNobl9oYW5kbGUgKnhjZV9oYW5kbGUs IGJvb2wgZm9yY2UpCiB7CiAJc3RhdGljIGNoYXIgYnVmZmVyWzEwMjQqMTZdOwogCWNoYXIgKmJ1 ZnB0ciA9IGJ1ZmZlcjsKQEAgLTkxNSw3ICs5MTYsNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfaHZf bG9ncyh4Y19ldnRjaG4gKnhjZV9oYW5kbGUsIGJvb2wgZm9yY2UpCiAJc3RhdGljIHVpbnQzMl90 IGluZGV4ID0gMDsKIAlldnRjaG5fcG9ydF9vcl9lcnJvcl90IHBvcnQgPSAtMTsKIAotCWlmICgh Zm9yY2UgJiYgKChwb3J0ID0geGNfZXZ0Y2huX3BlbmRpbmcoeGNlX2hhbmRsZSkpID09IC0xKSkK KwlpZiAoIWZvcmNlICYmICgocG9ydCA9IHhlbmV2dGNobl9wZW5kaW5nKHhjZV9oYW5kbGUpKSA9 PSAtMSkpCiAJCXJldHVybjsKIAogCWRvCkBAIC05MzksNyArOTQwLDcgQEAgc3RhdGljIHZvaWQg aGFuZGxlX2h2X2xvZ3MoeGNfZXZ0Y2huICp4Y2VfaGFuZGxlLCBib29sIGZvcmNlKQogCX0gd2hp bGUgKHNpemUgPT0gc2l6ZW9mKGJ1ZmZlcikpOwogCiAJaWYgKHBvcnQgIT0gLTEpCi0JCSh2b2lk KXhjX2V2dGNobl91bm1hc2soeGNlX2hhbmRsZSwgcG9ydCk7CisJCSh2b2lkKXhlbmV2dGNobl91 bm1hc2soeGNlX2hhbmRsZSwgcG9ydCk7CiB9CiAKIHN0YXRpYyB2b2lkIGhhbmRsZV9sb2dfcmVs b2FkKHZvaWQpCkBAIC0xMDA3LDEwICsxMDA4LDEwIEBAIHZvaWQgaGFuZGxlX2lvKHZvaWQpCiAJ ZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCBsb2dfaHZfZXZ0Y2huID0gLTE7CiAJaW50IHhjZV9wb2xs ZmRfaWR4ID0gLTE7CiAJaW50IHhzX3BvbGxmZF9pZHggPSAtMTsKLQl4Y19ldnRjaG4gKnhjZV9o YW5kbGUgPSBOVUxMOworCXhlbmV2dGNobl9oYW5kbGUgKnhjZV9oYW5kbGUgPSBOVUxMOwogCiAJ aWYgKGxvZ19odikgewotCQl4Y2VfaGFuZGxlID0geGNfZXZ0Y2huX29wZW4oTlVMTCwgMCk7CisJ CXhjZV9oYW5kbGUgPSB4ZW5ldnRjaG5fb3BlbihOVUxMLCAwKTsKIAkJaWYgKHhjZV9oYW5kbGUg PT0gTlVMTCkgewogCQkJZG9sb2coTE9HX0VSUiwgIkZhaWxlZCB0byBvcGVuIHhjZSBoYW5kbGU6 ICVkICglcykiLAogCQkJICAgICAgZXJybm8sIHN0cmVycm9yKGVycm5vKSk7CkBAIC0xMDE5LDcg KzEwMjAsNyBAQCB2b2lkIGhhbmRsZV9pbyh2b2lkKQogCQlsb2dfaHZfZmQgPSBjcmVhdGVfaHZf bG9nKCk7CiAJCWlmIChsb2dfaHZfZmQgPT0gLTEpCiAJCQlnb3RvIG91dDsKLQkJbG9nX2h2X2V2 dGNobiA9IHhjX2V2dGNobl9iaW5kX3ZpcnEoeGNlX2hhbmRsZSwgVklSUV9DT05fUklORyk7CisJ CWxvZ19odl9ldnRjaG4gPSB4ZW5ldnRjaG5fYmluZF92aXJxKHhjZV9oYW5kbGUsIFZJUlFfQ09O X1JJTkcpOwogCQlpZiAobG9nX2h2X2V2dGNobiA9PSAtMSkgewogCQkJZG9sb2coTE9HX0VSUiwg IkZhaWxlZCB0byBiaW5kIHRvIFZJUlFfQ09OX1JJTkc6ICIKIAkJCSAgICAgICIlZCAoJXMpIiwg ZXJybm8sIHN0cmVycm9yKGVycm5vKSk7CkBAIC0xMDQ4LDcgKzEwNDksNyBAQCB2b2lkIGhhbmRs ZV9pbyh2b2lkKQogCQl4c19wb2xsZmRfaWR4ID0gc2V0X2Zkcyh4c19maWxlbm8oeHMpLCBQT0xM SU58UE9MTFBSSSk7CiAKIAkJaWYgKGxvZ19odikKLQkJCXhjZV9wb2xsZmRfaWR4ID0gc2V0X2Zk cyh4Y19ldnRjaG5fZmQoeGNlX2hhbmRsZSksCisJCQl4Y2VfcG9sbGZkX2lkeCA9IHNldF9mZHMo eGVuZXZ0Y2huX2ZkKHhjZV9oYW5kbGUpLAogCQkJCQkJIFBPTExJTnxQT0xMUFJJKTsKIAogCQlp ZiAoY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsICZ0cykgPCAwKQpAQCAtMTA2Nyw3ICsx MDY4LDcgQEAgdm9pZCBoYW5kbGVfaW8odm9pZCkKIAkJCWlmICgobm93KzUpID4gZC0+bmV4dF9w ZXJpb2QpIHsKIAkJCQlkLT5uZXh0X3BlcmlvZCA9IG5vdyArIFJBVEVfTElNSVRfUEVSSU9EOwog CQkJCWlmIChkLT5ldmVudF9jb3VudCA+PSBSQVRFX0xJTUlUX0FMTE9XQU5DRSkgewotCQkJCQko dm9pZCl4Y19ldnRjaG5fdW5tYXNrKGQtPnhjZV9oYW5kbGUsIGQtPmxvY2FsX3BvcnQpOworCQkJ CQkodm9pZCl4ZW5ldnRjaG5fdW5tYXNrKGQtPnhjZV9oYW5kbGUsIGQtPmxvY2FsX3BvcnQpOwog CQkJCX0KIAkJCQlkLT5ldmVudF9jb3VudCA9IDA7CiAJCQl9CkBAIC0xMDgzLDcgKzEwODQsNyBA QCB2b2lkIGhhbmRsZV9pbyh2b2lkKQogCQkJCWlmIChkaXNjYXJkX292ZXJmbG93ZWRfZGF0YSB8 fAogCQkJCSAgICAhZC0+YnVmZmVyLm1heF9jYXBhY2l0eSB8fAogCQkJCSAgICBkLT5idWZmZXIu c2l6ZSA8IGQtPmJ1ZmZlci5tYXhfY2FwYWNpdHkpIHsKLQkJCQkJaW50IGV2dGNobl9mZCA9IHhj X2V2dGNobl9mZChkLT54Y2VfaGFuZGxlKTsKKwkJCQkJaW50IGV2dGNobl9mZCA9IHhlbmV2dGNo bl9mZChkLT54Y2VfaGFuZGxlKTsKIAkJCQkJZC0+eGNlX3BvbGxmZF9pZHggPSBzZXRfZmRzKGV2 dGNobl9mZCwKIAkJCQkJCQkJICAgIFBPTExJTnxQT0xMUFJJKTsKIAkJCQl9CkBAIC0xMjAzLDcg KzEyMDQsNyBAQCB2b2lkIGhhbmRsZV9pbyh2b2lkKQogCQlsb2dfaHZfZmQgPSAtMTsKIAl9CiAJ aWYgKHhjZV9oYW5kbGUgIT0gTlVMTCkgewotCQl4Y19ldnRjaG5fY2xvc2UoeGNlX2hhbmRsZSk7 CisJCXhlbmV2dGNobl9jbG9zZSh4Y2VfaGFuZGxlKTsKIAkJeGNlX2hhbmRsZSA9IE5VTEw7CiAJ fQogCWlmICh4Y2dfaGFuZGxlICE9IE5VTEwpIHsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnZjaGFu L01ha2VmaWxlIGIvdG9vbHMvbGlidmNoYW4vTWFrZWZpbGUKaW5kZXggM2M1MGZlNi4uODQxMjhh MyAxMDA2NDQKLS0tIGEvdG9vbHMvbGlidmNoYW4vTWFrZWZpbGUKKysrIGIvdG9vbHMvbGlidmNo YW4vTWFrZWZpbGUKQEAgLTEwLDkgKzEwLDkgQEAgTk9ERV9PQkpTID0gbm9kZS5vCiBOT0RFMl9P QkpTID0gbm9kZS1zZWxlY3QubwogCiBMSUJWQ0hBTl9QSUNfT0JKUyA9ICQocGF0c3Vic3QgJS5v LCUub3BpYywkKExJQlZDSEFOX09CSlMpKQotTElCVkNIQU5fTElCUyA9ICQoTERMSUJTX2xpYnhl bnN0b3JlKSAkKExETElCU19saWJ4ZW5jdHJsKQotJChMSUJWQ0hBTl9PQkpTKSAkKExJQlZDSEFO X1BJQ19PQkpTKTogQ0ZMQUdTICs9ICQoQ0ZMQUdTX2xpYnhlbnN0b3JlKSAkKENGTEFHU19saWJ4 ZW5jdHJsKQotJChOT0RFX09CSlMpICQoTk9ERTJfT0JKUyk6IENGTEFHUyArPSAkKENGTEFHU19s aWJ4ZW5jdHJsKQorTElCVkNIQU5fTElCUyA9ICQoTERMSUJTX2xpYnhlbnN0b3JlKSAkKExETElC U19saWJ4ZW5jdHJsKSAkKExETElCU19saWJ4ZW5ldnRjaG4pCiskKExJQlZDSEFOX09CSlMpICQo TElCVkNIQU5fUElDX09CSlMpOiBDRkxBR1MgKz0gJChDRkxBR1NfbGlieGVuc3RvcmUpICQoQ0ZM QUdTX2xpYnhlbmN0cmwpICQoQ0ZMQUdTX2xpYnhlbmV2dGNobikKKyQoTk9ERV9PQkpTKSAkKE5P REUyX09CSlMpOiBDRkxBR1MgKz0gJChDRkxBR1NfbGlieGVuY3RybCkgJChDRkxBR1NfbGlieGVu ZXZ0Y2huKQogCiBNQUpPUiA9IDEuMAogTUlOT1IgPSAwCmRpZmYgLS1naXQgYS90b29scy9saWJ2 Y2hhbi9pbml0LmMgYi90b29scy9saWJ2Y2hhbi9pbml0LmMKaW5kZXggZGUxMDgxNy4uZmVmNmM4 ZCAxMDA2NDQKLS0tIGEvdG9vbHMvbGlidmNoYW4vaW5pdC5jCisrKyBiL3Rvb2xzL2xpYnZjaGFu L2luaXQuYwpAQCAtMjE3LDI1ICsyMTcsMjUgQEAgc3RhdGljIGludCBpbml0X2V2dF9zcnYoc3Ry dWN0IGxpYnhlbnZjaGFuICpjdHJsLCBpbnQgZG9tYWluLCB4ZW50b29sbG9nX2xvZ2dlcgogewog CWV2dGNobl9wb3J0X29yX2Vycm9yX3QgcG9ydDsKIAotCWN0cmwtPmV2ZW50ID0geGNfZXZ0Y2hu X29wZW4obG9nZ2VyLCAwKTsKKwljdHJsLT5ldmVudCA9IHhlbmV2dGNobl9vcGVuKGxvZ2dlciwg MCk7CiAJaWYgKCFjdHJsLT5ldmVudCkKIAkJcmV0dXJuIC0xOwogCi0JcG9ydCA9IHhjX2V2dGNo bl9iaW5kX3VuYm91bmRfcG9ydChjdHJsLT5ldmVudCwgZG9tYWluKTsKKwlwb3J0ID0geGVuZXZ0 Y2huX2JpbmRfdW5ib3VuZF9wb3J0KGN0cmwtPmV2ZW50LCBkb21haW4pOwogCWlmIChwb3J0IDwg MCkKIAkJZ290byBmYWlsOwogCWN0cmwtPmV2ZW50X3BvcnQgPSBwb3J0OwogCi0JaWYgKHhjX2V2 dGNobl91bm1hc2soY3RybC0+ZXZlbnQsIGN0cmwtPmV2ZW50X3BvcnQpKQorCWlmICh4ZW5ldnRj aG5fdW5tYXNrKGN0cmwtPmV2ZW50LCBjdHJsLT5ldmVudF9wb3J0KSkKIAkJZ290byBmYWlsOwog CiAJcmV0dXJuIDA7CiAKIGZhaWw6CiAJaWYgKHBvcnQgPj0gMCkKLQkJeGNfZXZ0Y2huX3VuYmlu ZChjdHJsLT5ldmVudCwgcG9ydCk7CisJCXhlbmV2dGNobl91bmJpbmQoY3RybC0+ZXZlbnQsIHBv cnQpOwogCi0JeGNfZXZ0Y2huX2Nsb3NlKGN0cmwtPmV2ZW50KTsKKwl4ZW5ldnRjaG5fY2xvc2Uo Y3RybC0+ZXZlbnQpOwogCWN0cmwtPmV2ZW50ID0gTlVMTDsKIAogCXJldHVybiAtMTsKQEAgLTM0 NywyNiArMzQ3LDI2IEBAIHN0YXRpYyBpbnQgaW5pdF9ldnRfY2xpKHN0cnVjdCBsaWJ4ZW52Y2hh biAqY3RybCwgaW50IGRvbWFpbiwgeGVudG9vbGxvZ19sb2dnZXIKIHsKIAlldnRjaG5fcG9ydF9v cl9lcnJvcl90IHBvcnQ7CiAKLQljdHJsLT5ldmVudCA9IHhjX2V2dGNobl9vcGVuKGxvZ2dlciwg MCk7CisJY3RybC0+ZXZlbnQgPSB4ZW5ldnRjaG5fb3Blbihsb2dnZXIsIDApOwogCWlmICghY3Ry bC0+ZXZlbnQpCiAJCXJldHVybiAtMTsKIAotCXBvcnQgPSB4Y19ldnRjaG5fYmluZF9pbnRlcmRv bWFpbihjdHJsLT5ldmVudCwKKwlwb3J0ID0geGVuZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4oY3Ry bC0+ZXZlbnQsCiAJCWRvbWFpbiwgY3RybC0+ZXZlbnRfcG9ydCk7CiAJaWYgKHBvcnQgPCAwKQog CQlnb3RvIGZhaWw7CiAJY3RybC0+ZXZlbnRfcG9ydCA9IHBvcnQ7CiAKLQlpZiAoeGNfZXZ0Y2hu X3VubWFzayhjdHJsLT5ldmVudCwgY3RybC0+ZXZlbnRfcG9ydCkpCisJaWYgKHhlbmV2dGNobl91 bm1hc2soY3RybC0+ZXZlbnQsIGN0cmwtPmV2ZW50X3BvcnQpKQogCQlnb3RvIGZhaWw7CiAKIAly ZXR1cm4gMDsKIAogZmFpbDoKIAlpZiAocG9ydCA+PSAwKQotCQl4Y19ldnRjaG5fdW5iaW5kKGN0 cmwtPmV2ZW50LCBwb3J0KTsKKwkJeGVuZXZ0Y2huX3VuYmluZChjdHJsLT5ldmVudCwgcG9ydCk7 CiAKLQl4Y19ldnRjaG5fY2xvc2UoY3RybC0+ZXZlbnQpOworCXhlbmV2dGNobl9jbG9zZShjdHJs LT5ldmVudCk7CiAJY3RybC0+ZXZlbnQgPSBOVUxMOwogCiAJcmV0dXJuIC0xOwpkaWZmIC0tZ2l0 IGEvdG9vbHMvbGlidmNoYW4vaW8uYyBiL3Rvb2xzL2xpYnZjaGFuL2lvLmMKaW5kZXggZTY2YmM0 ZS4uNGJkMTVlZCAxMDA2NDQKLS0tIGEvdG9vbHMvbGlidmNoYW4vaW8uYworKysgYi90b29scy9s aWJ2Y2hhbi9pby5jCkBAIC0xMDYsNyArMTA2LDcgQEAgc3RhdGljIGlubGluZSBpbnQgc2VuZF9u b3RpZnkoc3RydWN0IGxpYnhlbnZjaGFuICpjdHJsLCB1aW50OF90IGJpdCkKIAlub3RpZnkgPSBj dHJsLT5pc19zZXJ2ZXIgPyAmY3RybC0+cmluZy0+c3J2X25vdGlmeSA6ICZjdHJsLT5yaW5nLT5j bGlfbm90aWZ5OwogCXByZXYgPSBfX3N5bmNfZmV0Y2hfYW5kX2FuZChub3RpZnksIH5iaXQpOwog CWlmIChwcmV2ICYgYml0KQotCQlyZXR1cm4geGNfZXZ0Y2huX25vdGlmeShjdHJsLT5ldmVudCwg Y3RybC0+ZXZlbnRfcG9ydCk7CisJCXJldHVybiB4ZW5ldnRjaG5fbm90aWZ5KGN0cmwtPmV2ZW50 LCBjdHJsLT5ldmVudF9wb3J0KTsKIAllbHNlCiAJCXJldHVybiAwOwogfQpAQCAtMTk1LDEwICsx OTUsMTAgQEAgaW50IGxpYnhlbnZjaGFuX2J1ZmZlcl9zcGFjZShzdHJ1Y3QgbGlieGVudmNoYW4g KmN0cmwpCiAKIGludCBsaWJ4ZW52Y2hhbl93YWl0KHN0cnVjdCBsaWJ4ZW52Y2hhbiAqY3RybCkK IHsKLQlpbnQgcmV0ID0geGNfZXZ0Y2huX3BlbmRpbmcoY3RybC0+ZXZlbnQpOworCWludCByZXQg PSB4ZW5ldnRjaG5fcGVuZGluZyhjdHJsLT5ldmVudCk7CiAJaWYgKHJldCA8IDApCiAJCXJldHVy biAtMTsKLQl4Y19ldnRjaG5fdW5tYXNrKGN0cmwtPmV2ZW50LCByZXQpOworCXhlbmV2dGNobl91 bm1hc2soY3RybC0+ZXZlbnQsIHJldCk7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTM1MSw3ICszNTEs NyBAQCBpbnQgbGlieGVudmNoYW5faXNfb3BlbihzdHJ1Y3QgbGlieGVudmNoYW4qIGN0cmwpCiAK IGludCBsaWJ4ZW52Y2hhbl9mZF9mb3Jfc2VsZWN0KHN0cnVjdCBsaWJ4ZW52Y2hhbiAqY3RybCkK IHsKLQlyZXR1cm4geGNfZXZ0Y2huX2ZkKGN0cmwtPmV2ZW50KTsKKwlyZXR1cm4geGVuZXZ0Y2hu X2ZkKGN0cmwtPmV2ZW50KTsKIH0KIAogdm9pZCBsaWJ4ZW52Y2hhbl9jbG9zZShzdHJ1Y3QgbGli eGVudmNoYW4gKmN0cmwpCkBAIC0zNzMsOCArMzczLDggQEAgdm9pZCBsaWJ4ZW52Y2hhbl9jbG9z ZShzdHJ1Y3QgbGlieGVudmNoYW4gKmN0cmwpCiAJfQogCWlmIChjdHJsLT5ldmVudCkgewogCQlp ZiAoY3RybC0+cmluZykKLQkJCXhjX2V2dGNobl9ub3RpZnkoY3RybC0+ZXZlbnQsIGN0cmwtPmV2 ZW50X3BvcnQpOwotCQl4Y19ldnRjaG5fY2xvc2UoY3RybC0+ZXZlbnQpOworCQkJeGVuZXZ0Y2hu X25vdGlmeShjdHJsLT5ldmVudCwgY3RybC0+ZXZlbnRfcG9ydCk7CisJCXhlbmV2dGNobl9jbG9z ZShjdHJsLT5ldmVudCk7CiAJfQogCWlmIChjdHJsLT5pc19zZXJ2ZXIpIHsKIAkJaWYgKGN0cmwt PmdudHNocikKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnZjaGFuL2xpYnhlbnZjaGFuLmggYi90b29s cy9saWJ2Y2hhbi9saWJ4ZW52Y2hhbi5oCmluZGV4IDYzNjVkMzYuLjA1MTdkZGEgMTAwNjQ0Ci0t LSBhL3Rvb2xzL2xpYnZjaGFuL2xpYnhlbnZjaGFuLmgKKysrIGIvdG9vbHMvbGlidmNoYW4vbGli eGVudmNoYW4uaApAQCAtNDUsNiArNDUsNyBAQAogCiAjaW5jbHVkZSA8eGVuL2lvL2xpYnhlbnZj aGFuLmg+CiAjaW5jbHVkZSA8eGVuL3N5cy9ldnRjaG4uaD4KKyNpbmNsdWRlIDx4ZW5ldnRjaG4u aD4KICNpbmNsdWRlIDx4ZW5jdHJsLmg+CiAKIHN0cnVjdCBsaWJ4ZW52Y2hhbl9yaW5nIHsKQEAg LTcyLDcgKzczLDcgQEAgc3RydWN0IGxpYnhlbnZjaGFuIHsKIAkvKiBQb2ludGVyIHRvIHNoYXJl ZCByaW5nIHBhZ2UgKi8KIAlzdHJ1Y3QgdmNoYW5faW50ZXJmYWNlICpyaW5nOwogCS8qIGV2ZW50 IGNoYW5uZWwgaW50ZXJmYWNlICovCi0JeGNfZXZ0Y2huICpldmVudDsKKwl4ZW5ldnRjaG5faGFu ZGxlICpldmVudDsKIAl1aW50MzJfdCBldmVudF9wb3J0OwogCS8qIGluZm9ybWF0aXZlIGZsYWdz OiBhcmUgd2UgYWN0aW5nIGFzIHNlcnZlcj8gKi8KIAlpbnQgaXNfc2VydmVyOjE7CmRpZmYgLS1n aXQgYS90b29scy9saWJ4Yy9NYWtlZmlsZSBiL3Rvb2xzL2xpYnhjL01ha2VmaWxlCmluZGV4IGZl YjYxMjUuLmJhZjA1NGYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL01ha2VmaWxlCisrKyBiL3Rv b2xzL2xpYnhjL01ha2VmaWxlCkBAIC00Nyw2ICs0Nyw3IEBAIENUUkxfU1JDUy0kKENPTkZJR19T dW5PUykgKz0geGNfc29sYXJpcy5jCiBDVFJMX1NSQ1MtJChDT05GSUdfTmV0QlNEKSArPSB4Y19u ZXRic2QuYwogQ1RSTF9TUkNTLSQoQ09ORklHX05ldEJTRFJ1bXApICs9IHhjX25ldGJzZC5jCiBD VFJMX1NSQ1MtJChDT05GSUdfTWluaU9TKSArPSB4Y19taW5pb3MuYworQ1RSTF9TUkNTLXkgICAg ICAgKz0geGNfZXZ0Y2huX2NvbXBhdC5jCiAKIEdVRVNUX1NSQ1MteSA6PQogR1VFU1RfU1JDUy15 ICs9IHhnX3ByaXZhdGUuYyB4Y19zdXNwZW5kLmMKQEAgLTExMiw2ICsxMTMsNyBAQCBDRkxBR1Mt JChDT05GSUdfTGludXgpICs9IC1EX0dOVV9TT1VSQ0UKIAogQ0ZMQUdTCSs9ICQoUFRIUkVBRF9D RkxBR1MpCiBDRkxBR1MJKz0gJChDRkxBR1NfbGlieGVudG9vbGxvZykKK0NGTEFHUwkrPSAkKENG TEFHU19saWJ4ZW5ldnRjaG4pCiAKIENUUkxfTElCX09CSlMgOj0gJChwYXRzdWJzdCAlLmMsJS5v LCQoQ1RSTF9TUkNTLXkpKQogQ1RSTF9QSUNfT0JKUyA6PSAkKHBhdHN1YnN0ICUuYywlLm9waWMs JChDVFJMX1NSQ1MteSkpCkBAIC0xNjUsNyArMTY3LDcgQEAgaW5zdGFsbDogYnVpbGQKIAkkKElO U1RBTExfREFUQSkgbGlieGVuY3RybC5hICQoREVTVERJUikkKGxpYmRpcikKIAkkKFNZTUxJTktf U0hMSUIpIGxpYnhlbmN0cmwuc28uJChNQUpPUikuJChNSU5PUikgJChERVNURElSKSQobGliZGly KS9saWJ4ZW5jdHJsLnNvLiQoTUFKT1IpCiAJJChTWU1MSU5LX1NITElCKSBsaWJ4ZW5jdHJsLnNv LiQoTUFKT1IpICQoREVTVERJUikkKGxpYmRpcikvbGlieGVuY3RybC5zbwotCSQoSU5TVEFMTF9E QVRBKSBpbmNsdWRlL3hlbmN0cmwuaCBpbmNsdWRlL3hlbmN0cmxvc2RlcC5oICQoREVTVERJUikk KGluY2x1ZGVkaXIpCisJJChJTlNUQUxMX0RBVEEpIGluY2x1ZGUveGVuY3RybC5oIGluY2x1ZGUv eGVuY3RybF9jb21wYXQuaCBpbmNsdWRlL3hlbmN0cmxvc2RlcC5oICQoREVTVERJUikkKGluY2x1 ZGVkaXIpCiAJJChJTlNUQUxMX1NITElCKSBsaWJ4ZW5ndWVzdC5zby4kKE1BSk9SKS4kKE1JTk9S KSAkKERFU1RESVIpJChsaWJkaXIpCiAJJChJTlNUQUxMX0RBVEEpIGxpYnhlbmd1ZXN0LmEgJChE RVNURElSKSQobGliZGlyKQogCSQoU1lNTElOS19TSExJQikgbGlieGVuZ3Vlc3Quc28uJChNQUpP UikuJChNSU5PUikgJChERVNURElSKSQobGliZGlyKS9saWJ4ZW5ndWVzdC5zby4kKE1BSk9SKQpA QCAtMjA4LDcgKzIxMCw3IEBAIGxpYnhlbmN0cmwuc28uJChNQUpPUik6IGxpYnhlbmN0cmwuc28u JChNQUpPUikuJChNSU5PUikKIAkkKFNZTUxJTktfU0hMSUIpICQ8ICRACiAKIGxpYnhlbmN0cmwu c28uJChNQUpPUikuJChNSU5PUik6ICQoQ1RSTF9QSUNfT0JKUykKLQkkKENDKSAkKExERkxBR1Mp ICQoUFRIUkVBRF9MREZMQUdTKSAtV2wsJChTT05BTUVfTERGTEFHKSAtV2wsbGlieGVuY3RybC5z by4kKE1BSk9SKSAkKFNITElCX0xERkxBR1MpIC1vICRAICReICQoTERMSUJTX2xpYnhlbnRvb2xs b2cpICQoRExPUEVOX0xJQlMpICQoUFRIUkVBRF9MSUJTKSAkKEFQUEVORF9MREZMQUdTKQorCSQo Q0MpICQoTERGTEFHUykgJChQVEhSRUFEX0xERkxBR1MpIC1XbCwkKFNPTkFNRV9MREZMQUcpIC1X bCxsaWJ4ZW5jdHJsLnNvLiQoTUFKT1IpICQoU0hMSUJfTERGTEFHUykgLW8gJEAgJF4gJChMRExJ QlNfbGlieGVudG9vbGxvZykgJChMRExJQlNfbGlieGVuZXZ0Y2huKSAkKERMT1BFTl9MSUJTKSAk KFBUSFJFQURfTElCUykgJChBUFBFTkRfTERGTEFHUykKIAogIyBsaWJ4ZW5ndWVzdAogCkBAIC0y MzEsNyArMjMzLDcgQEAgeGNfZG9tX2J6aW1hZ2Vsb2FkZXIub3BpYzogQ0ZMQUdTICs9ICQoY2Fs bCB6bGliLW9wdGlvbnMsRCkKIAogbGlieGVuZ3Vlc3Quc28uJChNQUpPUikuJChNSU5PUik6IENP TVBSRVNTSU9OX0xJQlMgPSAkKGNhbGwgemxpYi1vcHRpb25zLGwpCiBsaWJ4ZW5ndWVzdC5zby4k KE1BSk9SKS4kKE1JTk9SKTogJChHVUVTVF9QSUNfT0JKUykgbGlieGVuY3RybC5zbwotCSQoQ0Mp ICQoTERGTEFHUykgLVdsLCQoU09OQU1FX0xERkxBRykgLVdsLGxpYnhlbmd1ZXN0LnNvLiQoTUFK T1IpICQoU0hMSUJfTERGTEFHUykgLW8gJEAgJChHVUVTVF9QSUNfT0JKUykgJChDT01QUkVTU0lP Tl9MSUJTKSAtbHogJChMRExJQlNfbGlieGVuY3RybCkgJChQVEhSRUFEX0xJQlMpICQoQVBQRU5E X0xERkxBR1MpCisJJChDQykgJChMREZMQUdTKSAtV2wsJChTT05BTUVfTERGTEFHKSAtV2wsbGli eGVuZ3Vlc3Quc28uJChNQUpPUikgJChTSExJQl9MREZMQUdTKSAtbyAkQCAkKEdVRVNUX1BJQ19P QkpTKSAkKENPTVBSRVNTSU9OX0xJQlMpIC1seiAkKExETElCU19saWJ4ZW5ldnRjaG4pICQoTERM SUJTX2xpYnhlbmN0cmwpICQoUFRIUkVBRF9MSUJTKSAkKEFQUEVORF9MREZMQUdTKQogCiB4ZW5j dHJsX29zZGVwX0VOT1NZUy5zbzogJChPU0RFUF9QSUNfT0JKUykgbGlieGVuY3RybC5zbwogCSQo Q0MpICQoTERGTEFHUykgJChTSExJQl9MREZMQUdTKSAtbyAkQCAkKE9TREVQX1BJQ19PQkpTKSAk KExETElCU19saWJ4ZW5jdHJsKSAkKEFQUEVORF9MREZMQUdTKQpkaWZmIC0tZ2l0IGEvdG9vbHMv bGlieGMvaW5jbHVkZS94ZW5jdHJsLmggYi90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaApp bmRleCA1M2RmOWE5Li5kN2NhMTYxIDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy9pbmNsdWRlL3hl bmN0cmwuaAorKysgYi90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaApAQCAtMTE4LDcgKzEx OCw2IEBACiAgKi8KIAogdHlwZWRlZiBzdHJ1Y3QgeGNfaW50ZXJmYWNlX2NvcmUgeGNfaW50ZXJm YWNlOwotdHlwZWRlZiBzdHJ1Y3QgeGVuZXZ0Y2huX2hhbmRsZSB4Y19ldnRjaG47CiB0eXBlZGVm IHN0cnVjdCB4Y19pbnRlcmZhY2VfY29yZSB4Y19nbnR0YWI7CiB0eXBlZGVmIHN0cnVjdCB4Y19p bnRlcmZhY2VfY29yZSB4Y19nbnRzaHI7CiAKQEAgLTEwOTQsNyArMTA5Myw2IEBAIGludCB4Y19j cHVwb29sX21vdmVkb21haW4oeGNfaW50ZXJmYWNlICp4Y2gsCiAgKi8KIHhjX2NwdW1hcF90IHhj X2NwdXBvb2xfZnJlZWluZm8oeGNfaW50ZXJmYWNlICp4Y2gpOwogCi0KIC8qCiAgKiBFVkVOVCBD SEFOTkVMIEZVTkNUSU9OUwogICoKQEAgLTExMjksMTAxICsxMTI3LDcgQEAgaW50IHhjX2V2dGNo bl9yZXNldCh4Y19pbnRlcmZhY2UgKnhjaCwKIHR5cGVkZWYgc3RydWN0IGV2dGNobl9zdGF0dXMg eGNfZXZ0Y2huX3N0YXR1c190OwogaW50IHhjX2V2dGNobl9zdGF0dXMoeGNfaW50ZXJmYWNlICp4 Y2gsIHhjX2V2dGNobl9zdGF0dXNfdCAqc3RhdHVzKTsKIAotLyoKLSAqIFJldHVybiBhIGhhbmRs ZSB0byB0aGUgZXZlbnQgY2hhbm5lbCBkcml2ZXIsIG9yIE5VTEwgb24gZmFpbHVyZSwgaW4KLSAq IHdoaWNoIGNhc2UgZXJybm8gd2lsbCBiZSBzZXQgYXBwcm9wcmlhdGVseS4KLSAqCi0gKiBOb3Rl OgotICogQWZ0ZXIgZm9yayBhIGNoaWxkIHByb2Nlc3MgbXVzdCBub3QgdXNlIGFueSBvcGVuZWQg eGMgZXZ0Y2huCi0gKiBoYW5kbGUgaW5oZXJpdGVkIGZyb20gdGhlaXIgcGFyZW50LiBUaGV5IG11 c3Qgb3BlbiBhIG5ldyBoYW5kbGUgaWYKLSAqIHRoZXkgd2FudCB0byBpbnRlcmFjdCB3aXRoIHhj LgotICoKLSAqIEJlZm9yZSBYZW4gcHJlLTQuMSB0aGlzIGZ1bmN0aW9uIHdvdWxkIHNvbWV0aW1l cyByZXBvcnQgZXJyb3JzIHdpdGggcGVycm9yLgotICovCi14Y19ldnRjaG4gKnhjX2V2dGNobl9v cGVuKHhlbnRvb2xsb2dfbG9nZ2VyICpsb2dnZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIG9wZW5fZmxhZ3MpOwogCi0vKgotICogQ2xvc2UgYSBoYW5kbGUgcHJldmlv dXNseSBhbGxvY2F0ZWQgd2l0aCB4Y19ldnRjaG5fb3BlbigpLgotICovCi1pbnQgeGNfZXZ0Y2hu X2Nsb3NlKHhjX2V2dGNobiAqeGNlKTsKLQotLyoKLSAqIFJldHVybiBhbiBmZCB0aGF0IGNhbiBi ZSBzZWxlY3QoKWVkIG9uLgotICoKLSAqIE5vdGUgdGhhdCBkdWUgdG8gYnVncywgc2V0dGluZyB0 aGlzIGZkIHRvIG5vbiBibG9ja2luZyBtYXkgbm90Ci0gKiB3b3JrOiB5b3Ugd291bGQgaG9wZSB0 aGF0IGl0IHdvdWxkIHJlc3VsdCBpbiB4Y19ldnRjaG5fcGVuZGluZwotICogZmFpbGluZyB3aXRo IEVXT1VMREJMT0NLIGlmIHRoZXJlIGFyZSBubyBldmVudHMgc2lnbmFsZWQsIGJ1dCBpbgotICog ZmFjdCBpdCBtYXkgYmxvY2suICAoQnVnIGlzIHByZXNlbnQgaW4gYXQgbGVhc3QgTGludXggMy4x MiwgYW5kCi0gKiBwZXJoYXBzIG9uIG90aGVyIHBsYXRmb3JtcyBvciBsYXRlciB2ZXJzaW9uLikK LSAqCi0gKiBUbyBiZSBzYWZlLCB5b3UgbXVzdCB1c2UgcG9sbCgpIG9yIHNlbGVjdCgpIGJlZm9y ZSBlYWNoIGNhbGwgdG8KLSAqIHhjX2V2dGNobl9wZW5kaW5nLiAgSWYgeW91IGhhdmUgbXVsdGlw bGUgdGhyZWFkcyAob3IgcHJvY2Vzc2VzKQotICogc2hhcmluZyBhIHNpbmdsZSB4Y2UgaGFuZGxl IHRoaXMgd2lsbCBub3Qgd29yaywgYW5kIHRoZXJlIGlzIG5vCi0gKiBzdHJhaWdodGZvcndhcmQg d29ya2Fyb3VuZC4gIFBsZWFzZSBkZXNpZ24geW91ciBwcm9ncmFtIHNvbWUgb3RoZXIKLSAqIHdh eS4KLSAqLwotaW50IHhjX2V2dGNobl9mZCh4Y19ldnRjaG4gKnhjZSk7Ci0KLS8qCi0gKiBOb3Rp ZnkgdGhlIGdpdmVuIGV2ZW50IGNoYW5uZWwuIFJldHVybnMgLTEgb24gZmFpbHVyZSwgaW4gd2hp Y2ggY2FzZQotICogZXJybm8gd2lsbCBiZSBzZXQgYXBwcm9wcmlhdGVseS4KLSAqLwotaW50IHhj X2V2dGNobl9ub3RpZnkoeGNfZXZ0Y2huICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCk7Ci0KLS8q Ci0gKiBSZXR1cm5zIGEgbmV3IGV2ZW50IHBvcnQgYXdhaXRpbmcgaW50ZXJkb21haW4gY29ubmVj dGlvbiBmcm9tIHRoZSBnaXZlbgotICogZG9tYWluIElELCBvciAtMSBvbiBmYWlsdXJlLCBpbiB3 aGljaCBjYXNlIGVycm5vIHdpbGwgYmUgc2V0IGFwcHJvcHJpYXRlbHkuCi0gKi8KLWV2dGNobl9w b3J0X29yX2Vycm9yX3QKLXhjX2V2dGNobl9iaW5kX3VuYm91bmRfcG9ydCh4Y19ldnRjaG4gKnhj ZSwgaW50IGRvbWlkKTsKLQotLyoKLSAqIFJldHVybnMgYSBuZXcgZXZlbnQgcG9ydCBib3VuZCB0 byB0aGUgcmVtb3RlIHBvcnQgZm9yIHRoZSBnaXZlbiBkb21haW4gSUQsCi0gKiBvciAtMSBvbiBm YWlsdXJlLCBpbiB3aGljaCBjYXNlIGVycm5vIHdpbGwgYmUgc2V0IGFwcHJvcHJpYXRlbHkuCi0g Ki8KLWV2dGNobl9wb3J0X29yX2Vycm9yX3QKLXhjX2V2dGNobl9iaW5kX2ludGVyZG9tYWluKHhj X2V2dGNobiAqeGNlLCBpbnQgZG9taWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBldnRj aG5fcG9ydF90IHJlbW90ZV9wb3J0KTsKLQotLyoKLSAqIEJpbmQgYW4gZXZlbnQgY2hhbm5lbCB0 byB0aGUgZ2l2ZW4gVklSUS4gUmV0dXJucyB0aGUgZXZlbnQgY2hhbm5lbCBib3VuZCB0bwotICog dGhlIFZJUlEsIG9yIC0xIG9uIGZhaWx1cmUsIGluIHdoaWNoIGNhc2UgZXJybm8gd2lsbCBiZSBz ZXQgYXBwcm9wcmlhdGVseS4KLSAqLwotZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdAoteGNfZXZ0Y2hu X2JpbmRfdmlycSh4Y19ldnRjaG4gKnhjZSwgdW5zaWduZWQgaW50IHZpcnEpOwotCi0vKgotICog VW5iaW5kIHRoZSBnaXZlbiBldmVudCBjaGFubmVsLiBSZXR1cm5zIC0xIG9uIGZhaWx1cmUsIGlu IHdoaWNoIGNhc2UgZXJybm8KLSAqIHdpbGwgYmUgc2V0IGFwcHJvcHJpYXRlbHkuCi0gKi8KLWlu dCB4Y19ldnRjaG5fdW5iaW5kKHhjX2V2dGNobiAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQpOwot Ci0vKgotICogUmV0dXJuIHRoZSBuZXh0IGV2ZW50IGNoYW5uZWwgdG8gYmVjb21lIHBlbmRpbmcs IG9yIC0xIG9uIGZhaWx1cmUsIGluIHdoaWNoCi0gKiBjYXNlIGVycm5vIHdpbGwgYmUgc2V0IGFw cHJvcHJpYXRlbHkuCi0gKgotICogQXQgdGhlIGh5cGVydmlzb3IgbGV2ZWwgdGhlIGV2ZW50IGNo YW5uZWwgd2lsbCBoYXZlIGJlZW4gbWFza2VkLAotICogYW5kIHRoZW4gY2xlYXJlZCwgYnkgdGhl IHVuZGVybHlpbmcgbWFjaGluZXJ5IChldnRjaG4ga2VybmVsCi0gKiBkcml2ZXIsIG9yIGVxdWl2 YWxlbnQpLiAgU28gaWYgdGhlIGV2ZW50IGNoYW5uZWwgaXMgc2lnbmFsZWQgYWdhaW4KLSAqIGFm dGVyIGl0IGlzIHJldHVybmVkIGhlcmUsIGl0IHdpbGwgYmUgcXVldWVkIHVwLCBhbmQgZGVsaXZl cmVkCi0gKiBhZ2FpbiBhZnRlciB5b3UgdW5tYXNrIGl0LiAgKFNlZSB0aGUgZG9jdW1lbnRhdGlv biBpbiB0aGUgWGVuCi0gKiBwdWJsaWMgaGVhZGVyIGV2ZW50X2NoYW5uZWwuaC4pCi0gKgotICog T24gcmVjZWl2aW5nIHRoZSBub3RpZmljYXRpb24gZnJvbSB4Y19ldnRjaG5fcGVuZGluZywgeW91 IHNob3VsZAotICogbm9ybWFsbHk6IGNoZWNrIChieSBvdGhlciBtZWFucykgd2hhdCB3b3JrIG5l ZWRzIGRvaW5nOyBkbyB0aGUKLSAqIG5lY2Vzc2FyeSB3b3JrIChpZiBhbnkpOyB1bm1hc2sgdGhl IGV2ZW50IGNoYW5uZWwgd2l0aAotICogeGNfZXZ0Y2huX3VubWFzayAoaWYgeW91IHdhbnQgdG8g cmVjZWl2ZSBhbnkgZnVydGhlcgotICogbm90aWZpY2F0aW9ucykuCi0gKi8KLWV2dGNobl9wb3J0 X29yX2Vycm9yX3QKLXhjX2V2dGNobl9wZW5kaW5nKHhjX2V2dGNobiAqeGNlKTsKLQotLyoKLSAq IFVubWFzayB0aGUgZ2l2ZW4gZXZlbnQgY2hhbm5lbC4gUmV0dXJucyAtMSBvbiBmYWlsdXJlLCBp biB3aGljaCBjYXNlIGVycm5vCi0gKiB3aWxsIGJlIHNldCBhcHByb3ByaWF0ZWx5LgotICovCi1p bnQgeGNfZXZ0Y2huX3VubWFzayh4Y19ldnRjaG4gKnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KTsK IAogaW50IHhjX3BoeXNkZXZfcGNpX2FjY2Vzc19tb2RpZnkoeGNfaW50ZXJmYWNlICp4Y2gsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBkb21pZCwKQEAgLTI3OTcs NiArMjcwMSw5IEBAIGludCB4Y19wc3JfY2F0X2dldF9sM19pbmZvKHhjX2ludGVyZmFjZSAqeGNo LCB1aW50MzJfdCBzb2NrZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAq Y29zX21heCwgdWludDMyX3QgKmNibV9sZW4pOwogI2VuZGlmCiAKKy8qIENvbXBhdCBzaGltcyAq LworI2luY2x1ZGUgInhlbmN0cmxfY29tcGF0LmgiCisKICNlbmRpZiAvKiBYRU5DVFJMX0ggKi8K IAogLyoKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybF9jb21wYXQuaCBi L3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybF9jb21wYXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi40OGRhZWIyCi0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvbGlieGMv aW5jbHVkZS94ZW5jdHJsX2NvbXBhdC5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb21wYXQg c2hpbXMgZm9yIHVzZSBvZiAzcmQgcGFydHkgY29uc3VtZXJzIG9mIGxpYnhlbmN0cmwKKyAqIGZ1 bmN0aW9uYWxpdHkgd2hpY2ggaGFzIGJlZW4gc3BsaXQgaW50byBzZXBhcmF0ZSBsaWJyYXJpZXMu CisgKgorICogTmV3IGNvZGUgc2hvdWxkIHVzZSB0aGUgc2VwYXJhdGUgbGlicmFyaWVzLgorICoK KyAqIEVhY2ggaW50ZXJmYWNlIG11c3QgYmUgb3B0ZWQtaW50byBzZXBhcmF0ZWx5IGJ5IGRlZmlu aW5nOgorICoKKyAqIFhDX1dBTlRfQ09NUEFUX0VWVENITl9BUEkKKyAqICAtIEZ1bmN0aW9ucyBy ZWxhdGluZyB0byAvZGV2L3hlbi9ldnRjaG4KKyAqLworI2lmbmRlZiBYRU5DVFJMX0NPTVBBVF9I CisjZGVmaW5lIFhFTkNUUkxfQ09NUEFUX0gKKworI2lmZGVmIFhDX1dBTlRfQ09NUEFUX0VWVENI Tl9BUEkKKwordHlwZWRlZiBzdHJ1Y3QgeGVuZXZ0Y2huX2hhbmRsZSB4Y19ldnRjaG47CisKK3hj X2V2dGNobiAqeGNfZXZ0Y2huX29wZW4oeGVudG9vbGxvZ19sb2dnZXIgKmxvZ2dlciwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgb3Blbl9mbGFncyk7CitpbnQgeGNfZXZ0 Y2huX2Nsb3NlKHhjX2V2dGNobiAqeGNlKTsKK2ludCB4Y19ldnRjaG5fZmQoeGNfZXZ0Y2huICp4 Y2UpOworaW50IHhjX2V2dGNobl9ub3RpZnkoeGNfZXZ0Y2huICp4Y2UsIGV2dGNobl9wb3J0X3Qg cG9ydCk7CitldnRjaG5fcG9ydF9vcl9lcnJvcl90Cit4Y19ldnRjaG5fYmluZF91bmJvdW5kX3Bv cnQoeGNfZXZ0Y2huICp4Y2UsIGludCBkb21pZCk7CitldnRjaG5fcG9ydF9vcl9lcnJvcl90Cit4 Y19ldnRjaG5fYmluZF9pbnRlcmRvbWFpbih4Y19ldnRjaG4gKnhjZSwgaW50IGRvbWlkLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgZXZ0Y2huX3BvcnRfdCByZW1vdGVfcG9ydCk7CitldnRj aG5fcG9ydF9vcl9lcnJvcl90Cit4Y19ldnRjaG5fYmluZF92aXJxKHhjX2V2dGNobiAqeGNlLCB1 bnNpZ25lZCBpbnQgdmlycSk7CitpbnQgeGNfZXZ0Y2huX3VuYmluZCh4Y19ldnRjaG4gKnhjZSwg ZXZ0Y2huX3BvcnRfdCBwb3J0KTsKK2V2dGNobl9wb3J0X29yX2Vycm9yX3QKK3hjX2V2dGNobl9w ZW5kaW5nKHhjX2V2dGNobiAqeGNlKTsKK2ludCB4Y19ldnRjaG5fdW5tYXNrKHhjX2V2dGNobiAq eGNlLCBldnRjaG5fcG9ydF90IHBvcnQpOworCisjZW5kaWYgLyogWENfV0FOVF9DT01QQVRfRVZU Q0hOX0FQSSAqLworCisjZW5kaWYKKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6 IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWIt d2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1n aXQgYS90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmd1ZXN0LmggYi90b29scy9saWJ4Yy9pbmNsdWRl L3hlbmd1ZXN0LmgKaW5kZXggZTk1YWY1NC4uNTg0ZWJkYyAxMDA2NDQKLS0tIGEvdG9vbHMvbGli eGMvaW5jbHVkZS94ZW5ndWVzdC5oCisrKyBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuZ3Vlc3Qu aApAQCAtMjMsNiArMjMsOCBAQAogI2lmbmRlZiBYRU5HVUVTVF9ICiAjZGVmaW5lIFhFTkdVRVNU X0gKIAorI2luY2x1ZGUgPHhlbmV2dGNobi5oPgorCiAjZGVmaW5lIFhDX05VTUFfTk9fTk9ERSAg ICh+MFUpCiAKICNkZWZpbmUgWENGTEFHU19MSVZFICAgICAgKDEgPDwgMCkKQEAgLTI4OCwxOCAr MjkwLDE4IEBAIGludCB4Y19odm1fYnVpbGRfdGFyZ2V0X21lbSh4Y19pbnRlcmZhY2UgKnhjaCwK ICAqIFNldHMgKmxvY2tmZCB0byAtMS4KICAqIEhhcyBkZWFsbG9jYXRlZCBldmVyeXRoaW5nIGV2 ZW4gb24gZXJyb3IuCiAgKi8KLWludCB4Y19zdXNwZW5kX2V2dGNobl9yZWxlYXNlKHhjX2ludGVy ZmFjZSAqeGNoLCB4Y19ldnRjaG4gKnhjZSwgaW50IGRvbWlkLCBpbnQgc3VzcGVuZF9ldnRjaG4s IGludCAqbG9ja2ZkKTsKK2ludCB4Y19zdXNwZW5kX2V2dGNobl9yZWxlYXNlKHhjX2ludGVyZmFj ZSAqeGNoLCB4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIGludCBkb21pZCwgaW50IHN1c3BlbmRfZXZ0 Y2huLCBpbnQgKmxvY2tmZCk7CiAKIC8qKgogICogVGhpcyBmdW5jdGlvbiBlYXRzIHRoZSBpbml0 aWFsIG5vdGlmaWNhdGlvbi4KICAqIHhjZSBtdXN0IG5vdCBiZSB1c2VkIGZvciBhbnl0aGluZyBl bHNlCiAgKiBTZWUgeGNfc3VzcGVuZF9ldnRjaG5faW5pdF9zYW5lIHJlIGxvY2tmZC4KICAqLwot aW50IHhjX3N1c3BlbmRfZXZ0Y2huX2luaXRfZXhjbHVzaXZlKHhjX2ludGVyZmFjZSAqeGNoLCB4 Y19ldnRjaG4gKnhjZSwKK2ludCB4Y19zdXNwZW5kX2V2dGNobl9pbml0X2V4Y2x1c2l2ZSh4Y19p bnRlcmZhY2UgKnhjaCwgeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludCBkb21pZCwgaW50IHBvcnQsIGludCAqbG9ja2ZkKTsKIAog LyogeGNlIG11c3Qgbm90IGJlIHVzZWQgZm9yIGFueXRoaW5nIGVsc2UgKi8KLWludCB4Y19hd2Fp dF9zdXNwZW5kKHhjX2ludGVyZmFjZSAqeGNoLCB4Y19ldnRjaG4gKnhjZSwgaW50IHN1c3BlbmRf ZXZ0Y2huKTsKK2ludCB4Y19hd2FpdF9zdXNwZW5kKHhjX2ludGVyZmFjZSAqeGNoLCB4ZW5ldnRj aG5faGFuZGxlICp4Y2UsIGludCBzdXNwZW5kX2V2dGNobik7CiAKIC8qKgogICogVGhlIHBvcnQg d2lsbCBiZSBzaWduYWxlZCBpbW1lZGlhdGVseSBhZnRlciB0aGlzIGNhbGwKQEAgLTMwOCw3ICsz MTAsNyBAQCBpbnQgeGNfYXdhaXRfc3VzcGVuZCh4Y19pbnRlcmZhY2UgKnhjaCwgeGNfZXZ0Y2hu ICp4Y2UsIGludCBzdXNwZW5kX2V2dGNobik7CiAgKiBhbmQgZmVkIHRvIHhjX3N1c3BlbmRfZXZ0 Y2huX3JlbGVhc2UuICAoT24gZXJyb3IgKmxvY2tmZCBpcwogICogdW5kZWZpbmVkIGFuZCB4Y19z dXNwZW5kX2V2dGNobl9yZWxlYXNlIGlzIG5vdCBhbGxvd2VkLikKICAqLwotaW50IHhjX3N1c3Bl bmRfZXZ0Y2huX2luaXRfc2FuZSh4Y19pbnRlcmZhY2UgKnhjaCwgeGNfZXZ0Y2huICp4Y2UsCitp bnQgeGNfc3VzcGVuZF9ldnRjaG5faW5pdF9zYW5lKHhjX2ludGVyZmFjZSAqeGNoLCB4ZW5ldnRj aG5faGFuZGxlICp4Y2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkb21p ZCwgaW50IHBvcnQsIGludCAqbG9ja2ZkKTsKIAogaW50IHhjX2dldF9iaXRfc2l6ZSh4Y19pbnRl cmZhY2UgKnhjaCwKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL3hjX2V2dGNobl9jb21wYXQuYyBi L3Rvb2xzL2xpYnhjL3hjX2V2dGNobl9jb21wYXQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi41ZDNlNGJhCi0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvbGlieGMveGNfZXZ0 Y2huX2NvbXBhdC5jCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb21wYXQgc2hpbXMgZm9yIHVz ZSBvZiAzcmQgcGFydHkgY29uc3VtZXJzIG9mIGxpYnhlbmN0cmwgeGNfZXZ0Y2huCisgKiBmdW5j dGlvbmFsaXR5IHdoaWNoIGhhcyBiZWVuIHNwbGl0IGludG8gc2VwYXJhdGUgbGlicmFyaWVzLgor ICovCisKKyNpbmNsdWRlIDx4ZW5ldnRjaG4uaD4KKworI2RlZmluZSBYQ19XQU5UX0NPTVBBVF9F VlRDSE5fQVBJCisjaW5jbHVkZSAieGVuY3RybC5oIgorCit4Y19ldnRjaG4gKnhjX2V2dGNobl9v cGVuKHhlbnRvb2xsb2dfbG9nZ2VyICpsb2dnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIG9wZW5fZmxhZ3MpCit7CisgICAgcmV0dXJuIHhlbmV2dGNobl9vcGVuKGxvZ2dl ciwgb3Blbl9mbGFncyk7Cit9CisKK2ludCB4Y19ldnRjaG5fY2xvc2UoeGNfZXZ0Y2huICp4Y2Up Cit7CisgICAgcmV0dXJuIHhlbmV2dGNobl9jbG9zZSh4Y2UpOworfQorCitpbnQgeGNfZXZ0Y2hu X2ZkKHhjX2V2dGNobiAqeGNlKQoreworICAgIHJldHVybiB4ZW5ldnRjaG5fZmQoeGNlKTsKK30K KworaW50IHhjX2V2dGNobl9ub3RpZnkoeGNfZXZ0Y2huICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9y dCkKK3sKKyAgICByZXR1cm4geGVuZXZ0Y2huX25vdGlmeSh4Y2UsIHBvcnQpOworfQorCitldnRj aG5fcG9ydF9vcl9lcnJvcl90Cit4Y19ldnRjaG5fYmluZF91bmJvdW5kX3BvcnQoeGNfZXZ0Y2hu ICp4Y2UsIGludCBkb21pZCkKK3sKKyAgICByZXR1cm4geGVuZXZ0Y2huX2JpbmRfdW5ib3VuZF9w b3J0KHhjZSwgZG9taWQpOworfQorCitldnRjaG5fcG9ydF9vcl9lcnJvcl90Cit4Y19ldnRjaG5f YmluZF9pbnRlcmRvbWFpbih4Y19ldnRjaG4gKnhjZSwgaW50IGRvbWlkLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgZXZ0Y2huX3BvcnRfdCByZW1vdGVfcG9ydCkKK3sKKyAgICByZXR1cm4g eGVuZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4oeGNlLCBkb21pZCwgcmVtb3RlX3BvcnQpOworfQor CitldnRjaG5fcG9ydF9vcl9lcnJvcl90Cit4Y19ldnRjaG5fYmluZF92aXJxKHhjX2V2dGNobiAq eGNlLCB1bnNpZ25lZCBpbnQgdmlycSkKK3sKKyAgICByZXR1cm4geGVuZXZ0Y2huX2JpbmRfdmly cSh4Y2UsIHZpcnEpOworfQorCitpbnQgeGNfZXZ0Y2huX3VuYmluZCh4Y19ldnRjaG4gKnhjZSwg ZXZ0Y2huX3BvcnRfdCBwb3J0KQoreworICAgIHJldHVybiB4ZW5ldnRjaG5fdW5iaW5kKHhjZSwg cG9ydCk7Cit9CisKK2V2dGNobl9wb3J0X29yX2Vycm9yX3QKK3hjX2V2dGNobl9wZW5kaW5nKHhj X2V2dGNobiAqeGNlKQoreworICAgIHJldHVybiB4ZW5ldnRjaG5fcGVuZGluZyh4Y2UpOworfQor CitpbnQgeGNfZXZ0Y2huX3VubWFzayh4Y19ldnRjaG4gKnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0 KQoreworICAgIHJldHVybiB4ZW5ldnRjaG5fdW5tYXNrKHhjZSwgcG9ydCk7Cit9CisKKy8qCisg KiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisg KiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2Rl OiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMveGNfZnJlZWJzZF9v c2RlcC5jIGIvdG9vbHMvbGlieGMveGNfZnJlZWJzZF9vc2RlcC5jCmluZGV4IDA5ZDA2OTMuLmQ5 NDhiMzcgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL3hjX2ZyZWVic2Rfb3NkZXAuYworKysgYi90 b29scy9saWJ4Yy94Y19mcmVlYnNkX29zZGVwLmMKQEAgLTMyLDEzICszMiwxMSBAQAogI2luY2x1 ZGUgPHN5cy9pb2N0bC5oPgogCiAjaW5jbHVkZSA8eGVuL21lbW9yeS5oPgotI2luY2x1ZGUgPHhl bi9zeXMvZXZ0Y2huLmg+CiAKICNpbmNsdWRlICJ4ZW5jdHJsLmgiCiAjaW5jbHVkZSAieGVuY3Ry bG9zZGVwLmgiCiAKICNkZWZpbmUgUFJJVkNNRF9ERVYgICAgICIvZGV2L3hlbi9wcml2Y21kIgot I2RlZmluZSBFVlRDSE5fREVWICAgICAgIi9kZXYveGVuL2V2dGNobiIKIAogI2RlZmluZSBQRVJS T1IoX20sIF9hLi4uKSB4Y19vc2RlcF9sb2coeGNoLFhUTF9FUlJPUixYQ19JTlRFUk5BTF9FUlJP UixfbSBcCiAgICAgICAgICAgICAgICAgICAiICglZCA9ICVzKSIsICMjIF9hICwgZXJybm8sIHhj X3N0cmVycm9yKHhjaCwgZXJybm8pKQpAQCAtMjUyLDEwNSArMjUwLDYgQEAgc3RhdGljIHN0cnVj dCB4Y19vc2RlcF9vcHMgZnJlZWJzZF9wcml2Y21kX29wcyA9IHsKICAgICB9LAogfTsKIAotLyot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFdnRjaG4gZGV2aWNlIGludGVyZmFjZSAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKi8KLWludCBvc2RlcF9ldnRjaG5fb3Blbih4Y19ldnRjaG4gKnhj ZSkKLXsKLSAgICBpbnQgZmQgPSBvcGVuKEVWVENITl9ERVYsIE9fUkRXUik7Ci0gICAgaWYgKCBm ZCA9PSAtMSApCi0gICAgICAgIHJldHVybiAtMTsKLSAgICB4Y2UtPmZkID0gZmQ7Ci0gICAgcmV0 dXJuIDA7Ci19Ci0KLWludCBvc2RlcF9ldnRjaG5fY2xvc2UoeGNfZXZ0Y2huICp4Y2UpCi17Ci0g ICAgaWYgKCB4Y2UtPmZkID09IC0xICkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4g Y2xvc2UoeGNlLT5mZCk7Ci19Ci0KLWludCB4Y19ldnRjaG5fZmQoeGNfZXZ0Y2huICp4Y2UpCi17 Ci0gICAgcmV0dXJuIHhjZS0+ZmQ7Ci19Ci0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tIEV2dGNobiBpbnRlcmZhY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1pbnQg eGNfZXZ0Y2huX25vdGlmeSh4Y19ldnRjaG4gKnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KQotewot ICAgIGludCBmZCA9IHhjZS0+ZmQ7Ci0gICAgc3RydWN0IGlvY3RsX2V2dGNobl9ub3RpZnkgbm90 aWZ5OwotCi0gICAgbm90aWZ5LnBvcnQgPSBwb3J0OwotCi0gICAgcmV0dXJuIGlvY3RsKGZkLCBJ T0NUTF9FVlRDSE5fTk9USUZZLCAmbm90aWZ5KTsKLX0KLQotZXZ0Y2huX3BvcnRfb3JfZXJyb3Jf dCB4Y19ldnRjaG5fYmluZF91bmJvdW5kX3BvcnQoeGNfZXZ0Y2huICp4Y2UsIGludCBkb21pZCkK LXsKLSAgICBpbnQgcmV0LCBmZCA9IHhjZS0+ZmQ7Ci0gICAgc3RydWN0IGlvY3RsX2V2dGNobl9i aW5kX3VuYm91bmRfcG9ydCBiaW5kOwotCi0gICAgYmluZC5yZW1vdGVfZG9tYWluID0gZG9taWQ7 Ci0KLSAgICByZXQgPSBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX0JJTkRfVU5CT1VORF9QT1JULCAm YmluZCk7Ci0gICAgcmV0dXJuICggcmV0ID09IDAgKSA/IGJpbmQucG9ydCA6IHJldDsKLX0KLQot ZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdAoteGNfZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4oeGNfZXZ0 Y2huICp4Y2UsIGludCBkb21pZCwgZXZ0Y2huX3BvcnRfdCByZW1vdGVfcG9ydCkKLXsKLSAgICBp bnQgcmV0LCBmZCA9IHhjZS0+ZmQ7Ci0gICAgc3RydWN0IGlvY3RsX2V2dGNobl9iaW5kX2ludGVy ZG9tYWluIGJpbmQ7Ci0KLSAgICBiaW5kLnJlbW90ZV9kb21haW4gPSBkb21pZDsKLSAgICBiaW5k LnJlbW90ZV9wb3J0ID0gcmVtb3RlX3BvcnQ7Ci0KLSAgICByZXQgPSBpb2N0bChmZCwgSU9DVExf RVZUQ0hOX0JJTkRfSU5URVJET01BSU4sICZiaW5kKTsKLSAgICByZXR1cm4gKCByZXQgPT0gMCAp ID8gYmluZC5wb3J0IDogcmV0OwotfQotCi1ldnRjaG5fcG9ydF9vcl9lcnJvcl90IHhjX2V2dGNo bl9iaW5kX3ZpcnEoeGNfZXZ0Y2huICp4Y2UsIHVuc2lnbmVkIGludCB2aXJxKQotewotICAgIGlu dCByZXQsIGZkID0geGNlLT5mZDsKLSAgICBzdHJ1Y3QgaW9jdGxfZXZ0Y2huX2JpbmRfdmlycSBi aW5kOwotCi0gICAgYmluZC52aXJxID0gdmlycTsKLQotICAgIHJldCA9IGlvY3RsKGZkLCBJT0NU TF9FVlRDSE5fQklORF9WSVJRLCAmYmluZCk7Ci0gICAgcmV0dXJuICggcmV0ID09IDAgKSA/IGJp bmQucG9ydCA6IHJldDsKLX0KLQotaW50IHhjX2V2dGNobl91bmJpbmQoeGNfZXZ0Y2huICp4Y2Us IGV2dGNobl9wb3J0X3QgcG9ydCkKLXsKLSAgICBpbnQgZmQgPSB4Y2UtPmZkOwotICAgIHN0cnVj dCBpb2N0bF9ldnRjaG5fdW5iaW5kIHVuYmluZDsKLQotICAgIHVuYmluZC5wb3J0ID0gcG9ydDsK LQotICAgIHJldHVybiBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX1VOQklORCwgJnVuYmluZCk7Ci19 Ci0KLWV2dGNobl9wb3J0X29yX2Vycm9yX3QgeGNfZXZ0Y2huX3BlbmRpbmcoeGNfZXZ0Y2huICp4 Y2UpCi17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAgICBldnRjaG5fcG9ydF90IHBvcnQ7Ci0K LSAgICBpZiAoIHJlYWQoZmQsICZwb3J0LCBzaXplb2YocG9ydCkpICE9IHNpemVvZihwb3J0KSAp Ci0gICAgICAgIHJldHVybiAtMTsKLQotICAgIHJldHVybiBwb3J0OwotfQotCi1pbnQgeGNfZXZ0 Y2huX3VubWFzayh4Y19ldnRjaG4gKnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KQotewotICAgIGlu dCBmZCA9IHhjZS0+ZmQ7Ci0KLSAgICBpZiAoIHdyaXRlKGZkLCAmcG9ydCwgc2l6ZW9mKHBvcnQp KSAhPSBzaXplb2YocG9ydCkgKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgcmV0dXJuIDA7Ci19 Ci0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGcmVlQlNEIGludGVyZmFjZSAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiBzdGF0aWMgc3RydWN0IHhjX29zZGVwX29wcyAq CiBmcmVlYnNkX29zZGVwX2luaXQoeGNfaW50ZXJmYWNlICp4Y2gsIGVudW0geGNfb3NkZXBfdHlw ZSB0eXBlKQpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMveGNfbGludXhfb3NkZXAuYyBiL3Rvb2xz L2xpYnhjL3hjX2xpbnV4X29zZGVwLmMKaW5kZXggM2M5NmM3Ni4uMjIzMGU0NCAxMDA2NDQKLS0t IGEvdG9vbHMvbGlieGMveGNfbGludXhfb3NkZXAuYworKysgYi90b29scy9saWJ4Yy94Y19saW51 eF9vc2RlcC5jCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CiAKICNp bmNsdWRlIDx4ZW4vbWVtb3J5Lmg+Ci0jaW5jbHVkZSA8eGVuL3N5cy9ldnRjaG4uaD4KICNpbmNs dWRlIDx4ZW4vc3lzL2dudGRldi5oPgogI2luY2x1ZGUgPHhlbi9zeXMvZ250YWxsb2MuaD4KIApA QCAtNDU2LDEwMCArNDU1LDYgQEAgc3RhdGljIHN0cnVjdCB4Y19vc2RlcF9vcHMgbGludXhfcHJp dmNtZF9vcHMgPSB7CiAKICNkZWZpbmUgREVWWEVOICIvZGV2L3hlbi8iCiAKLWludCBvc2RlcF9l dnRjaG5fb3Blbih4Y19ldnRjaG4gKnhjZSkKLXsKLSAgICBpbnQgZmQgPSBvcGVuKERFVlhFTiAi ZXZ0Y2huIiwgT19SRFdSKTsKLSAgICBpZiAoIGZkID09IC0xICkKLSAgICAgICAgcmV0dXJuIC0x OwotICAgIHhjZS0+ZmQgPSBmZDsKLSAgICByZXR1cm4gMDsKLX0KLQotaW50IG9zZGVwX2V2dGNo bl9jbG9zZSh4Y19ldnRjaG4gKnhjZSkKLXsKLSAgICBpZiAoIHhjZS0+ZmQgPT0gLTEgKQotICAg ICAgICByZXR1cm4gMDsKLQotICAgIHJldHVybiBjbG9zZSh4Y2UtPmZkKTsKLX0KLQotaW50IHhj X2V2dGNobl9mZCh4Y19ldnRjaG4gKnhjZSkKLXsKLSAgICByZXR1cm4geGNlLT5mZDsKLX0KLQot aW50IHhjX2V2dGNobl9ub3RpZnkoeGNfZXZ0Y2huICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCkK LXsKLSAgICBpbnQgZmQgPSB4Y2UtPmZkOwotICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fbm90aWZ5 IG5vdGlmeTsKLQotICAgIG5vdGlmeS5wb3J0ID0gcG9ydDsKLQotICAgIHJldHVybiBpb2N0bChm ZCwgSU9DVExfRVZUQ0hOX05PVElGWSwgJm5vdGlmeSk7Ci19Ci0KLWV2dGNobl9wb3J0X29yX2Vy cm9yX3QgeGNfZXZ0Y2huX2JpbmRfdW5ib3VuZF9wb3J0KHhjX2V2dGNobiAqeGNlLCBpbnQgZG9t aWQpCi17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAgICBzdHJ1Y3QgaW9jdGxfZXZ0Y2huX2Jp bmRfdW5ib3VuZF9wb3J0IGJpbmQ7Ci0KLSAgICBiaW5kLnJlbW90ZV9kb21haW4gPSBkb21pZDsK LQotICAgIHJldHVybiBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX0JJTkRfVU5CT1VORF9QT1JULCAm YmluZCk7Ci19Ci0KLWV2dGNobl9wb3J0X29yX2Vycm9yX3QgeGNfZXZ0Y2huX2JpbmRfaW50ZXJk b21haW4oeGNfZXZ0Y2huICp4Y2UsIGludCBkb21pZCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZ0Y2huX3BvcnRfdCByZW1vdGVfcG9ydCkKLXsK LSAgICBpbnQgZmQgPSB4Y2UtPmZkOwotICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fYmluZF9pbnRl cmRvbWFpbiBiaW5kOwotCi0gICAgYmluZC5yZW1vdGVfZG9tYWluID0gZG9taWQ7Ci0gICAgYmlu ZC5yZW1vdGVfcG9ydCA9IHJlbW90ZV9wb3J0OwotCi0gICAgcmV0dXJuIGlvY3RsKGZkLCBJT0NU TF9FVlRDSE5fQklORF9JTlRFUkRPTUFJTiwgJmJpbmQpOwotfQotCi1ldnRjaG5fcG9ydF9vcl9l cnJvcl90IHhjX2V2dGNobl9iaW5kX3ZpcnEoeGNfZXZ0Y2huICp4Y2UsIHVuc2lnbmVkIGludCB2 aXJxKQotewotICAgIGludCBmZCA9IHhjZS0+ZmQ7Ci0gICAgc3RydWN0IGlvY3RsX2V2dGNobl9i aW5kX3ZpcnEgYmluZDsKLQotICAgIGJpbmQudmlycSA9IHZpcnE7Ci0KLSAgICByZXR1cm4gaW9j dGwoZmQsIElPQ1RMX0VWVENITl9CSU5EX1ZJUlEsICZiaW5kKTsKLX0KLQotaW50IHhjX2V2dGNo bl91bmJpbmQoeGNfZXZ0Y2huICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCkKLXsKLSAgICBpbnQg ZmQgPSB4Y2UtPmZkOwotICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fdW5iaW5kIHVuYmluZDsKLQot ICAgIHVuYmluZC5wb3J0ID0gcG9ydDsKLQotICAgIHJldHVybiBpb2N0bChmZCwgSU9DVExfRVZU Q0hOX1VOQklORCwgJnVuYmluZCk7Ci19Ci0KLWV2dGNobl9wb3J0X29yX2Vycm9yX3QgeGNfZXZ0 Y2huX3BlbmRpbmcoeGNfZXZ0Y2huICp4Y2UpCi17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAg ICBldnRjaG5fcG9ydF90IHBvcnQ7Ci0KLSAgICBpZiAoIHJlYWQoZmQsICZwb3J0LCBzaXplb2Yo cG9ydCkpICE9IHNpemVvZihwb3J0KSApCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIHJldHVy biBwb3J0OwotfQotCi1pbnQgeGNfZXZ0Y2huX3VubWFzayh4Y19ldnRjaG4gKnhjZSwgZXZ0Y2hu X3BvcnRfdCBwb3J0KQotewotICAgIGludCBmZCA9IHhjZS0+ZmQ7Ci0KLSAgICBpZiAoIHdyaXRl KGZkLCAmcG9ydCwgc2l6ZW9mKHBvcnQpKSAhPSBzaXplb2YocG9ydCkgKQotICAgICAgICByZXR1 cm4gLTE7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyB4Y19vc2RlcF9oYW5kbGUgbGludXhf Z250dGFiX29wZW4oeGNfZ250dGFiICp4Y2cpCiB7CiAgICAgaW50IGZkID0gb3BlbihERVZYRU4g ImdudGRldiIsIE9fUkRXUik7CmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19taW5pb3MuYyBi L3Rvb2xzL2xpYnhjL3hjX21pbmlvcy5jCmluZGV4IGU5YzRkOGIuLjc4NzhjZmEgMTAwNjQ0Ci0t LSBhL3Rvb2xzL2xpYnhjL3hjX21pbmlvcy5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX21pbmlvcy5j CkBAIC0yMCwxNCArMjAsMTEgQEAKICAqLwogCiAjdW5kZWYgTkRFQlVHCi0jaW5jbHVkZSAieGVu LWV4dGVybmFsL2JzZC1zeXMtcXVldWUuaCIKICNpbmNsdWRlIDxtaW5pLW9zL3R5cGVzLmg+CiAj aW5jbHVkZSA8bWluaS1vcy9vcy5oPgogI2luY2x1ZGUgPG1pbmktb3MvbW0uaD4KICNpbmNsdWRl IDxtaW5pLW9zL2xpYi5oPgogI2luY2x1ZGUgPG1pbmktb3MvZ250bWFwLmg+Ci0jaW5jbHVkZSA8 bWluaS1vcy9ldmVudHMuaD4KLSNpbmNsdWRlIDxtaW5pLW9zL3dhaXQuaD4KICNpbmNsdWRlIDxz eXMvbW1hbi5oPgogCiAjaW5jbHVkZSA8eGVuL21lbW9yeS5oPgpAQCAtNDIsMTMgKzM5LDkgQEAK ICNpbmNsdWRlICJ4Y19wcml2YXRlLmgiCiAKIHZvaWQgbWluaW9zX2ludGVyZmFjZV9jbG9zZV9m ZChpbnQgZmQpOwotdm9pZCBtaW5pb3NfZXZ0Y2huX2Nsb3NlX2ZkKGludCBmZCk7CiB2b2lkIG1p bmlvc19nbnR0YWJfY2xvc2VfZmQoaW50IGZkKTsKIAogZXh0ZXJuIHZvaWQgbWluaW9zX2ludGVy ZmFjZV9jbG9zZV9mZChpbnQgZmQpOwotZXh0ZXJuIHZvaWQgbWluaW9zX2V2dGNobl9jbG9zZV9m ZChpbnQgZmQpOwotCi1leHRlcm4gc3RydWN0IHdhaXRfcXVldWVfaGVhZCBldmVudF9xdWV1ZTsK IAogc3RhdGljIHhjX29zZGVwX2hhbmRsZSBtaW5pb3NfcHJpdmNtZF9vcGVuKHhjX2ludGVyZmFj ZSAqeGNoKQogewpAQCAtMTk4LDIyMCArMTkxLDYgQEAgc3RhdGljIHN0cnVjdCB4Y19vc2RlcF9v cHMgbWluaW9zX3ByaXZjbWRfb3BzID0gewogICAgIH0sCiB9OwogCi0KLS8qIFhYWCBOb3RlOiBU aGlzIGlzIG5vdCB0aHJlYWRzYWZlICovCi1zdGF0aWMgc3RydWN0IGV2dGNobl9wb3J0X2luZm8q IHBvcnRfYWxsb2MoaW50IGZkKSB7Ci0gICAgc3RydWN0IGV2dGNobl9wb3J0X2luZm8gKnBvcnRf aW5mbzsKLSAgICBwb3J0X2luZm8gPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBldnRjaG5fcG9ydF9p bmZvKSk7Ci0gICAgaWYgKHBvcnRfaW5mbyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsK LSAgICBwb3J0X2luZm8tPnBlbmRpbmcgPSAwOwotICAgIHBvcnRfaW5mby0+cG9ydCA9IC0xOwot ICAgIHBvcnRfaW5mby0+Ym91bmQgPSAwOwotCi0gICAgTElTVF9JTlNFUlRfSEVBRCgmZmlsZXNb ZmRdLmV2dGNobi5wb3J0cywgcG9ydF9pbmZvLCBsaXN0KTsKLSAgICByZXR1cm4gcG9ydF9pbmZv OwotfQotCi1zdGF0aWMgdm9pZCBwb3J0X2RlYWxsb2Moc3RydWN0IGV2dGNobl9wb3J0X2luZm8g KnBvcnRfaW5mbykgewotICAgIGlmIChwb3J0X2luZm8tPmJvdW5kKQotICAgICAgICB1bmJpbmRf ZXZ0Y2huKHBvcnRfaW5mby0+cG9ydCk7Ci0gICAgTElTVF9SRU1PVkUocG9ydF9pbmZvLCBsaXN0 KTsKLSAgICBmcmVlKHBvcnRfaW5mbyk7Ci19Ci0KLWludCBvc2RlcF9ldnRjaG5fb3Blbih4Y19l dnRjaG4gKnhjZSkKLXsKLSAgICBpbnQgZmQgPSBhbGxvY19mZChGVFlQRV9FVlRDSE4pOwotICAg IGlmICggZmQgPT0gLTEgKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgTElTVF9JTklUKCZmaWxl c1tmZF0uZXZ0Y2huLnBvcnRzKTsKLSAgICB4Y2UtPmZkID0gZmQ7Ci0gICAgcHJpbnRmKCJldnRj aG5fb3BlbigpIC0+ICVkXG4iLCBmZCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWludCBvc2RlcF9l dnRjaG5fY2xvc2UoeGNfZXZ0Y2huICp4Y2UsIHhjX29zZGVwX2hhbmRsZSBoKQotewotICAgIGlm ICggeGNlLT5mZCA9PSAtMSApCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIGNsb3Nl KHhjZS0+ZmQpOwotfQotCi12b2lkIG1pbmlvc19ldnRjaG5fY2xvc2VfZmQoaW50IGZkKQotewot ICAgIHN0cnVjdCBldnRjaG5fcG9ydF9pbmZvICpwb3J0X2luZm8sICp0bXA7Ci0gICAgTElTVF9G T1JFQUNIX1NBRkUocG9ydF9pbmZvLCAmZmlsZXNbZmRdLmV2dGNobi5wb3J0cywgbGlzdCwgdG1w KQotICAgICAgICBwb3J0X2RlYWxsb2MocG9ydF9pbmZvKTsKLQotICAgIGZpbGVzW2ZkXS50eXBl ID0gRlRZUEVfTk9ORTsKLX0KLQotaW50IHhjX2V2dGNobl9mZCh4Y19ldnRjaG4gKnhjZSkKLXsK LSAgICByZXR1cm4geGNlLT5mZDsKLX0KLQotaW50IHhjX2V2dGNobl9ub3RpZnkoeGNfZXZ0Y2hu ICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCkKLXsKLSAgICBpbnQgcmV0OwotCi0gICAgcmV0ID0g bm90aWZ5X3JlbW90ZV92aWFfZXZ0Y2huKHBvcnQpOwotCi0gICAgaWYgKHJldCA8IDApIHsKLQll cnJubyA9IC1yZXQ7Ci0JcmV0ID0gLTE7Ci0gICAgfQotICAgIHJldHVybiByZXQ7Ci19Ci0KLXN0 YXRpYyB2b2lkIGV2dGNobl9oYW5kbGVyKGV2dGNobl9wb3J0X3QgcG9ydCwgc3RydWN0IHB0X3Jl Z3MgKnJlZ3MsIHZvaWQgKmRhdGEpCi17Ci0gICAgaW50IGZkID0gKGludCkoaW50cHRyX3QpZGF0 YTsKLSAgICBzdHJ1Y3QgZXZ0Y2huX3BvcnRfaW5mbyAqcG9ydF9pbmZvOwotICAgIGFzc2VydChm aWxlc1tmZF0udHlwZSA9PSBGVFlQRV9FVlRDSE4pOwotICAgIG1hc2tfZXZ0Y2huKHBvcnQpOwot ICAgIExJU1RfRk9SRUFDSChwb3J0X2luZm8sICZmaWxlc1tmZF0uZXZ0Y2huLnBvcnRzLCBsaXN0 KSB7Ci0gICAgICAgIGlmIChwb3J0X2luZm8tPnBvcnQgPT0gcG9ydCkKLSAgICAgICAgICAgIGdv dG8gZm91bmQ7Ci0gICAgfQotICAgIHByaW50aygiVW5rbm93biBwb3J0IGZvciBoYW5kbGUgJWRc biIsIGZkKTsKLSAgICByZXR1cm47Ci0KLSBmb3VuZDoKLSAgICBwb3J0X2luZm8tPnBlbmRpbmcg PSAxOwotICAgIGZpbGVzW2ZkXS5yZWFkID0gMTsKLSAgICB3YWtlX3VwKCZldmVudF9xdWV1ZSk7 Ci19Ci0KLWV2dGNobl9wb3J0X29yX2Vycm9yX3QgeGNfZXZ0Y2huX2JpbmRfdW5ib3VuZF9wb3J0 KHhjX2V2dGNobiAqeGNlLCBpbnQgZG9taWQpCi17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAg ICBzdHJ1Y3QgZXZ0Y2huX3BvcnRfaW5mbyAqcG9ydF9pbmZvOwotICAgIGludCByZXQ7Ci0gICAg ZXZ0Y2huX3BvcnRfdCBwb3J0OwotCi0gICAgYXNzZXJ0KGdldF9jdXJyZW50KCkgPT0gbWFpbl90 aHJlYWQpOwotICAgIHBvcnRfaW5mbyA9IHBvcnRfYWxsb2MoZmQpOwotICAgIGlmIChwb3J0X2lu Zm8gPT0gTlVMTCkKLQlyZXR1cm4gLTE7Ci0KLSAgICBwcmludGYoInhjX2V2dGNobl9iaW5kX3Vu Ym91bmRfcG9ydCglZCkiLCBkb21pZCk7Ci0gICAgcmV0ID0gZXZ0Y2huX2FsbG9jX3VuYm91bmQo ZG9taWQsIGV2dGNobl9oYW5kbGVyLCAodm9pZCopKGludHB0cl90KWZkLCAmcG9ydCk7Ci0gICAg cHJpbnRmKCIgPSAlZFxuIiwgcmV0KTsKLQotICAgIGlmIChyZXQgPCAwKSB7Ci0JcG9ydF9kZWFs bG9jKHBvcnRfaW5mbyk7Ci0JZXJybm8gPSAtcmV0OwotCXJldHVybiAtMTsKLSAgICB9Ci0gICAg cG9ydF9pbmZvLT5ib3VuZCA9IDE7Ci0gICAgcG9ydF9pbmZvLT5wb3J0ID0gcG9ydDsKLSAgICB1 bm1hc2tfZXZ0Y2huKHBvcnQpOwotICAgIHJldHVybiBwb3J0OwotfQotCi1ldnRjaG5fcG9ydF9v cl9lcnJvcl90IHhjX2V2dGNobl9iaW5kX2ludGVyZG9tYWluKHhjX2V2dGNobiAqeGNlLCBpbnQg ZG9taWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGV2dGNobl9wb3J0X3QgcmVtb3RlX3BvcnQpCi17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAg ICBzdHJ1Y3QgZXZ0Y2huX3BvcnRfaW5mbyAqcG9ydF9pbmZvOwotICAgIGV2dGNobl9wb3J0X3Qg bG9jYWxfcG9ydDsKLSAgICBpbnQgcmV0OwotCi0gICAgYXNzZXJ0KGdldF9jdXJyZW50KCkgPT0g bWFpbl90aHJlYWQpOwotICAgIHBvcnRfaW5mbyA9IHBvcnRfYWxsb2MoZmQpOwotICAgIGlmIChw b3J0X2luZm8gPT0gTlVMTCkKLQlyZXR1cm4gLTE7Ci0KLSAgICBwcmludGYoInhjX2V2dGNobl9i aW5kX2ludGVyZG9tYWluKCVkLCAlIlBSSWQzMiIpIiwgZG9taWQsIHJlbW90ZV9wb3J0KTsKLSAg ICByZXQgPSBldnRjaG5fYmluZF9pbnRlcmRvbWFpbihkb21pZCwgcmVtb3RlX3BvcnQsIGV2dGNo bl9oYW5kbGVyLCAodm9pZCopKGludHB0cl90KWZkLCAmbG9jYWxfcG9ydCk7Ci0gICAgcHJpbnRm KCIgPSAlZFxuIiwgcmV0KTsKLQotICAgIGlmIChyZXQgPCAwKSB7Ci0JcG9ydF9kZWFsbG9jKHBv cnRfaW5mbyk7Ci0JZXJybm8gPSAtcmV0OwotCXJldHVybiAtMTsKLSAgICB9Ci0gICAgcG9ydF9p bmZvLT5ib3VuZCA9IDE7Ci0gICAgcG9ydF9pbmZvLT5wb3J0ID0gbG9jYWxfcG9ydDsKLSAgICB1 bm1hc2tfZXZ0Y2huKGxvY2FsX3BvcnQpOwotICAgIHJldHVybiBsb2NhbF9wb3J0OwotfQotCi1p bnQgeGNfZXZ0Y2huX3VuYmluZCh4Y19ldnRjaG4gKnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KQot ewotICAgIGludCBmZCA9IHhjZS0+ZmQ7Ci0gICAgc3RydWN0IGV2dGNobl9wb3J0X2luZm8gKnBv cnRfaW5mbzsKLQotICAgIExJU1RfRk9SRUFDSChwb3J0X2luZm8sICZmaWxlc1tmZF0uZXZ0Y2hu LnBvcnRzLCBsaXN0KSB7Ci0gICAgICAgIGlmIChwb3J0X2luZm8tPnBvcnQgPT0gcG9ydCkgewot ICAgICAgICAgICAgcG9ydF9kZWFsbG9jKHBvcnRfaW5mbyk7Ci0gICAgICAgICAgICByZXR1cm4g MDsKLSAgICAgICAgfQotICAgIH0KLSAgICBwcmludGYoIldhcm5pbmc6IGNvdWxkbid0IGZpbmQg cG9ydCAlIlBSSWQzMiIgZm9yIHhjIGhhbmRsZSAleFxuIiwgcG9ydCwgZmQpOwotICAgIGVycm5v ID0gRUlOVkFMOwotICAgIHJldHVybiAtMTsKLX0KLQotZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCB4 Y19ldnRjaG5fYmluZF92aXJxKHhjX2V2dGNobiAqeGNlLCB1bnNpZ25lZCBpbnQgdmlycSkKLXsK LSAgICBpbnQgZmQgPSB4Y2UtPmZkOwotICAgIHN0cnVjdCBldnRjaG5fcG9ydF9pbmZvICpwb3J0 X2luZm87Ci0gICAgZXZ0Y2huX3BvcnRfdCBwb3J0OwotCi0gICAgYXNzZXJ0KGdldF9jdXJyZW50 KCkgPT0gbWFpbl90aHJlYWQpOwotICAgIHBvcnRfaW5mbyA9IHBvcnRfYWxsb2MoZmQpOwotICAg IGlmIChwb3J0X2luZm8gPT0gTlVMTCkKLQlyZXR1cm4gLTE7Ci0KLSAgICBwcmludGYoInhjX2V2 dGNobl9iaW5kX3ZpcnEoJWQpIiwgdmlycSk7Ci0gICAgcG9ydCA9IGJpbmRfdmlycSh2aXJxLCBl dnRjaG5faGFuZGxlciwgKHZvaWQqKShpbnRwdHJfdClmZCk7Ci0KLSAgICBpZiAocG9ydCA8IDAp IHsKLQlwb3J0X2RlYWxsb2MocG9ydF9pbmZvKTsKLQllcnJubyA9IC1wb3J0OwotCXJldHVybiAt MTsKLSAgICB9Ci0gICAgcG9ydF9pbmZvLT5ib3VuZCA9IDE7Ci0gICAgcG9ydF9pbmZvLT5wb3J0 ID0gcG9ydDsKLSAgICB1bm1hc2tfZXZ0Y2huKHBvcnQpOwotICAgIHJldHVybiBwb3J0OwotfQot Ci1ldnRjaG5fcG9ydF9vcl9lcnJvcl90IHhjX2V2dGNobl9wZW5kaW5nKHhjX2V2dGNobiAqeGNl KQotewotICAgIGludCBmZCA9IHhjZS0+ZmQ7Ci0gICAgc3RydWN0IGV2dGNobl9wb3J0X2luZm8g KnBvcnRfaW5mbzsKLSAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwotICAgIGV2dGNobl9wb3J0X3Qg cmV0ID0gLTE7Ci0KLSAgICBsb2NhbF9pcnFfc2F2ZShmbGFncyk7Ci0gICAgZmlsZXNbZmRdLnJl YWQgPSAwOwotCi0gICAgTElTVF9GT1JFQUNIKHBvcnRfaW5mbywgJmZpbGVzW2ZkXS5ldnRjaG4u cG9ydHMsIGxpc3QpIHsKLSAgICAgICAgaWYgKHBvcnRfaW5mby0+cG9ydCAhPSAtMSAmJiBwb3J0 X2luZm8tPnBlbmRpbmcpIHsKLSAgICAgICAgICAgIGlmIChyZXQgPT0gLTEpIHsKLSAgICAgICAg ICAgICAgICByZXQgPSBwb3J0X2luZm8tPnBvcnQ7Ci0gICAgICAgICAgICAgICAgcG9ydF9pbmZv LT5wZW5kaW5nID0gMDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZmls ZXNbZmRdLnJlYWQgPSAxOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQot ICAgICAgICB9Ci0gICAgfQotICAgIGxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKLSAgICByZXR1 cm4gcmV0OwotfQotCi1pbnQgeGNfZXZ0Y2huX3VubWFzayh4Y19ldnRjaG4gKnhjZSwgZXZ0Y2hu X3BvcnRfdCBwb3J0KQotewotICAgIHVubWFza19ldnRjaG4ocG9ydCk7Ci0gICAgcmV0dXJuIDA7 Ci19Ci0KIC8qIE9wdGlvbmFsbHkgZmx1c2ggZmlsZSB0byBkaXNrIGFuZCBkaXNjYXJkIHBhZ2Ug Y2FjaGUgKi8KIHZvaWQgZGlzY2FyZF9maWxlX2NhY2hlKHhjX2ludGVyZmFjZSAqeGNoLCBpbnQg ZmQsIGludCBmbHVzaCkKIHsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL3hjX25ldGJzZC5jIGIv dG9vbHMvbGlieGMveGNfbmV0YnNkLmMKaW5kZXggZjliYzEwMC4uNDhmZDVkNyAxMDA2NDQKLS0t IGEvdG9vbHMvbGlieGMveGNfbmV0YnNkLmMKKysrIGIvdG9vbHMvbGlieGMveGNfbmV0YnNkLmMK QEAgLTIwLDcgKzIwLDYgQEAKIAogI2luY2x1ZGUgInhjX3ByaXZhdGUuaCIKIAotI2luY2x1ZGUg PHhlbi9zeXMvZXZ0Y2huLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjaW5jbHVkZSA8ZmNudGwu aD4KICNpbmNsdWRlIDxtYWxsb2MuaD4KQEAgLTIyNCwxMTQgKzIyMyw2IEBAIHN0YXRpYyBzdHJ1 Y3QgeGNfb3NkZXBfb3BzIG5ldGJzZF9wcml2Y21kX29wcyA9IHsKICAgICB9LAogfTsKIAotI2Rl ZmluZSBFVlRDSE5fREVWX05BTUUgICIvZGV2L3hlbmV2dCIKLQotaW50IG9zZGVwX2V2dGNobl9v cGVuKHhjX2V2dGNobiAqeGNlKQotewotICAgIGludCBmZCA9IG9wZW4oRVZUQ0hOX0RFVl9OQU1F LCBPX05PTkJMT0NLfE9fUkRXUik7Ci0gICAgaWYgKCBmZCA9PSAtMSApCi0gICAgICAgIHJldHVy biAtMTsKLSAgICB4Y2UtPmZkID0gZmQ7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWludCBvc2RlcF9l dnRjaG5fY2xvc2UoeGNfZXZ0Y2huICp4Y2UsIHhjX29zZGVwX2hhbmRsZSBoKQotewotICAgIGlm ICggeGNlLT5mZCA9PSAtMSApCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIGNsb3Nl KHhjZS0+ZmQpOwotfQotCi1pbnQgeGNfZXZ0Y2huX2ZkKHhjX2V2dGNobiAqeGNlKQotewotICAg IHJldHVybiB4Y2UtPmZkOwotfQotCi1pbnQgeGNfZXZ0Y2huX25vdGlmeSh4Y19ldnRjaG4gKnhj ZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KQotewotICAgIGludCBmZCA9IHhjZS0+ZmQ7Ci0gICAgc3Ry dWN0IGlvY3RsX2V2dGNobl9ub3RpZnkgbm90aWZ5OwotCi0gICAgbm90aWZ5LnBvcnQgPSBwb3J0 OwotCi0gICAgcmV0dXJuIGlvY3RsKGZkLCBJT0NUTF9FVlRDSE5fTk9USUZZLCAmbm90aWZ5KTsK LX0KLQotZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCB4Y19ldnRjaG5fYmluZF91bmJvdW5kX3BvcnQo eGNfZXZ0Y2huICogeGNlLCBpbnQgZG9taWQpCi17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAg ICBzdHJ1Y3QgaW9jdGxfZXZ0Y2huX2JpbmRfdW5ib3VuZF9wb3J0IGJpbmQ7Ci0gICAgaW50IHJl dDsKLQotICAgIGJpbmQucmVtb3RlX2RvbWFpbiA9IGRvbWlkOwotCi0gICAgcmV0ID0gaW9jdGwo ZmQsIElPQ1RMX0VWVENITl9CSU5EX1VOQk9VTkRfUE9SVCwgJmJpbmQpOwotICAgIGlmIChyZXQg PT0gMCkKLQlyZXR1cm4gYmluZC5wb3J0OwotICAgIGVsc2UKLQlyZXR1cm4gLTE7Ci19Ci0KLWV2 dGNobl9wb3J0X29yX2Vycm9yX3QgeGNfZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4oeGNfZXZ0Y2hu ICp4Y2UsIGludCBkb21pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZXZ0Y2huX3BvcnRfdCByZW1vdGVfcG9ydCkKLXsKLSAgICBpbnQgZmQgPSB4 Y2UtPmZkOwotICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fYmluZF9pbnRlcmRvbWFpbiBiaW5kOwot ICAgIGludCByZXQ7Ci0KLSAgICBiaW5kLnJlbW90ZV9kb21haW4gPSBkb21pZDsKLSAgICBiaW5k LnJlbW90ZV9wb3J0ID0gcmVtb3RlX3BvcnQ7Ci0KLSAgICByZXQgPSBpb2N0bChmZCwgSU9DVExf RVZUQ0hOX0JJTkRfSU5URVJET01BSU4sICZiaW5kKTsKLSAgICBpZiAocmV0ID09IDApCi0JcmV0 dXJuIGJpbmQucG9ydDsKLSAgICBlbHNlCi0JcmV0dXJuIC0xOwotfQotCi1pbnQgeGNfZXZ0Y2hu X3VuYmluZCh4Y19ldnRjaG4gKnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KQotewotICAgIGludCBm ZCA9IHhjZS0+ZmQ7Ci0gICAgc3RydWN0IGlvY3RsX2V2dGNobl91bmJpbmQgdW5iaW5kOwotCi0g ICAgdW5iaW5kLnBvcnQgPSBwb3J0OwotCi0gICAgcmV0dXJuIGlvY3RsKGZkLCBJT0NUTF9FVlRD SE5fVU5CSU5ELCAmdW5iaW5kKTsKLX0KLQotZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCB4Y19ldnRj aG5fYmluZF92aXJxKHhjX2V2dGNobiAqeGNlLCB1bnNpZ25lZCBpbnQgdmlycSkKLXsKLSAgICBp bnQgZmQgPSB4Y2UtPmZkOwotICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fYmluZF92aXJxIGJpbmQ7 Ci0gICAgaW50IGVycjsKLQotICAgIGJpbmQudmlycSA9IHZpcnE7Ci0KLSAgICBlcnIgPSBpb2N0 bChmZCwgSU9DVExfRVZUQ0hOX0JJTkRfVklSUSwgJmJpbmQpOwotICAgIGlmIChlcnIpCi0JcmV0 dXJuIC0xOwotICAgIGVsc2UKLQlyZXR1cm4gYmluZC5wb3J0OwotfQotCi1ldnRjaG5fcG9ydF9v cl9lcnJvcl90IHhjX2V2dGNobl9wZW5kaW5nKHhjX2V2dGNobiAqeGNlKQotewotICAgIGludCBm ZCA9IHhjZS0+ZmQ7Ci0gICAgZXZ0Y2huX3BvcnRfdCBwb3J0OwotCi0gICAgaWYgKCByZWFkX2V4 YWN0KGZkLCAoY2hhciAqKSZwb3J0LCBzaXplb2YocG9ydCkpID09IC0xICkKLSAgICAgICAgcmV0 dXJuIC0xOwotCi0gICAgcmV0dXJuIHBvcnQ7Ci19Ci0KLWludCB4Y19ldnRjaG5fdW5tYXNrKHhj X2V2dGNobiAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQpCi17Ci0gICAgaW50IGZkID0geGNlLT5m ZDsKLSAgICByZXR1cm4gd3JpdGVfZXhhY3QoZmQsIChjaGFyICopJnBvcnQsIHNpemVvZihwb3J0 KSk7Ci19Ci0KIC8qIE9wdGlvbmFsbHkgZmx1c2ggZmlsZSB0byBkaXNrIGFuZCBkaXNjYXJkIHBh Z2UgY2FjaGUgKi8KIHZvaWQgZGlzY2FyZF9maWxlX2NhY2hlKHhjX2ludGVyZmFjZSAqeGNoLCBp bnQgZmQsIGludCBmbHVzaCkgCiB7CmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19wcml2YXRl LmMgYi90b29scy9saWJ4Yy94Y19wcml2YXRlLmMKaW5kZXggOWYwYWRhNy4uMzc1NDMwYyAxMDA2 NDQKLS0tIGEvdG9vbHMvbGlieGMveGNfcHJpdmF0ZS5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX3By aXZhdGUuYwpAQCAtMjUyLDQ2ICsyNTIsNiBAQCBpbnQgZG9feGVuX2h5cGVyY2FsbCh4Y19pbnRl cmZhY2UgKnhjaCwgcHJpdmNtZF9oeXBlcmNhbGxfdCAqaHlwZXJjYWxsKQogICAgIHJldHVybiB4 Y2gtPm9wcy0+dS5wcml2Y21kLmh5cGVyY2FsbCh4Y2gsIHhjaC0+b3BzX2hhbmRsZSwgaHlwZXJj YWxsKTsKIH0KIAoteGNfZXZ0Y2huICp4Y19ldnRjaG5fb3Blbih4ZW50b29sbG9nX2xvZ2dlciAq bG9nZ2VyLCB1bnNpZ25lZCBvcGVuX2ZsYWdzKQotewotICAgIHhjX2V2dGNobiAqeGNlID0gbWFs bG9jKHNpemVvZigqeGNlKSk7Ci0gICAgaW50IHJjOwotCi0gICAgaWYgKCF4Y2UpIHJldHVybiBO VUxMOwotCi0gICAgeGNlLT5mZCA9IC0xOwotICAgIHhjZS0+bG9nZ2VyID0gbG9nZ2VyOwotICAg IHhjZS0+bG9nZ2VyX3RvZnJlZSAgPSBOVUxMOwotCi0gICAgaWYgKCF4Y2UtPmxvZ2dlcikgewot ICAgICAgICB4Y2UtPmxvZ2dlciA9IHhjZS0+bG9nZ2VyX3RvZnJlZSA9Ci0gICAgICAgICAgICAo eGVudG9vbGxvZ19sb2dnZXIqKQotICAgICAgICAgICAgeHRsX2NyZWF0ZWxvZ2dlcl9zdGRpb3N0 cmVhbShzdGRlcnIsIFhUTF9QUk9HUkVTUywgMCk7Ci0gICAgICAgIGlmICgheGNlLT5sb2dnZXIp IGdvdG8gZXJyOwotICAgIH0KLQotICAgIHJjID0gb3NkZXBfZXZ0Y2huX29wZW4oeGNlKTsKLSAg ICBpZiAoIHJjICA8IDAgKSBnb3RvIGVycjsKLQotICAgIHJldHVybiB4Y2U7Ci0KLWVycjoKLSAg ICBvc2RlcF9ldnRjaG5fY2xvc2UoeGNlKTsKLSAgICB4dGxfbG9nZ2VyX2Rlc3Ryb3koeGNlLT5s b2dnZXJfdG9mcmVlKTsKLSAgICBmcmVlKHhjZSk7Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLWlu dCB4Y19ldnRjaG5fY2xvc2UoeGNfZXZ0Y2huICp4Y2UpCi17Ci0gICAgaW50IHJjOwotCi0gICAg cmMgPSBvc2RlcF9ldnRjaG5fY2xvc2UoeGNlKTsKLSAgICB4dGxfbG9nZ2VyX2Rlc3Ryb3koeGNl LT5sb2dnZXJfdG9mcmVlKTsKLSAgICBmcmVlKHhjZSk7Ci0gICAgcmV0dXJuIHJjOwotfQotCiB4 Y19nbnR0YWIgKnhjX2dudHRhYl9vcGVuKHhlbnRvb2xsb2dfbG9nZ2VyICpsb2dnZXIsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG9wZW5fZmxhZ3MpCiB7CmRpZmYgLS1n aXQgYS90b29scy9saWJ4Yy94Y19wcml2YXRlLmggYi90b29scy9saWJ4Yy94Y19wcml2YXRlLmgK aW5kZXggNGM2Njc2Ni4uNjFmMmY0NSAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMveGNfcHJpdmF0 ZS5oCisrKyBiL3Rvb2xzL2xpYnhjL3hjX3ByaXZhdGUuaApAQCAtMTI0LDEzICsxMjQsNiBAQCBz dHJ1Y3QgeGNfaW50ZXJmYWNlX2NvcmUgewogICAgIHhjX29zZGVwX2hhbmRsZSAgb3BzX2hhbmRs ZTsgLyogb3BhcXVlIGRhdGEgZm9yIHhjX29zZGVwX29wcyAqLwogfTsKIAotc3RydWN0IHhlbmV2 dGNobl9oYW5kbGUgewotICAgIHhlbnRvb2xsb2dfbG9nZ2VyICpsb2dnZXIsICpsb2dnZXJfdG9m cmVlOwotICAgIGludCBmZDsKLX07Ci1pbnQgb3NkZXBfZXZ0Y2huX29wZW4oeGNfZXZ0Y2huICp4 Y2UpOwotaW50IG9zZGVwX2V2dGNobl9jbG9zZSh4Y19ldnRjaG4gKnhjZSk7Ci0KIHZvaWQgeGNf cmVwb3J0X2Vycm9yKHhjX2ludGVyZmFjZSAqeGNoLCBpbnQgY29kZSwgY29uc3QgY2hhciAqZm10 LCAuLi4pCiAgICAgX19hdHRyaWJ1dGVfXygoZm9ybWF0KHByaW50ZiwzLDQpKSk7CiB2b2lkIHhj X3JlcG9ydHYoeGNfaW50ZXJmYWNlICp4Y2gsIHhlbnRvb2xsb2dfbG9nZ2VyICpsZywgeGVudG9v bGxvZ19sZXZlbCwKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL3hjX3NvbGFyaXMuYyBiL3Rvb2xz L2xpYnhjL3hjX3NvbGFyaXMuYwppbmRleCA4ODY3ZDk3Li4xODJiZDdkIDEwMDY0NAotLS0gYS90 b29scy9saWJ4Yy94Y19zb2xhcmlzLmMKKysrIGIvdG9vbHMvbGlieGMveGNfc29sYXJpcy5jCkBA IC0yMSw3ICsyMSw2IEBACiAjaW5jbHVkZSAieGNfcHJpdmF0ZS5oIgogCiAjaW5jbHVkZSA8eGVu L21lbW9yeS5oPgotI2luY2x1ZGUgPHhlbi9zeXMvZXZ0Y2huLmg+CiAjaW5jbHVkZSA8dW5pc3Rk Lmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxtYWxsb2MuaD4KQEAgLTE5NSwxMDIg KzE5NCw2IEBAIHN0YXRpYyBzdHJ1Y3QgeGNfb3NkZXBfb3BzIHNvbGFyaXNfcHJpdmNtZF9vcHMg PSB7CiAgICAgfSwKIH07CiAKLWludCBvc2RlcF9ldnRjaG5fb3Blbih4Y19ldnRjaG4gKnhjZSkK LXsKLSAgICBpbnQgZmQ7Ci0KLSAgICBpZiAoIChmZCA9IG9wZW4oIi9kZXYveGVuL2V2dGNobiIs IE9fUkRXUikpID09IC0xICkKLSAgICB7Ci0gICAgICAgIFBFUlJPUigiQ291bGQgbm90IG9wZW4g ZXZlbnQgY2hhbm5lbCBpbnRlcmZhY2UiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQot ICAgIHhjZS0+ZmQgPSBmZDsKLSAgICByZXR1cm4gMDsKLX0KLQotaW50IG9zZGVwX2V2dGNobl9j bG9zZSh4Y19ldnRjaG4gKnhjZSkKLXsKLSAgICBpZiAoIHhjZS0+ZmQgPT0gLTEgKQotICAgICAg ICByZXR1cm4gMDsKLQotICAgIHJldHVybiBjbG9zZSh4Y2UtPmZkKTsKLX0KLQotaW50IHhjX2V2 dGNobl9mZCh4Y19ldnRjaG4gKnhjZSkKLXsKLSAgICByZXR1cm4geGNlLT5mZDsKLX0KLQotaW50 IHhjX2V2dGNobl9ub3RpZnkoeGNfZXZ0Y2huICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCkKLXsK LSAgICBpbnQgZmQgPSB4Y2UtPmZkOwotICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fbm90aWZ5IG5v dGlmeTsKLQotICAgIG5vdGlmeS5wb3J0ID0gcG9ydDsKLQotICAgIHJldHVybiBpb2N0bChmZCwg SU9DVExfRVZUQ0hOX05PVElGWSwgJm5vdGlmeSk7Ci19Ci0KLWV2dGNobl9wb3J0X29yX2Vycm9y X3QgeGNfZXZ0Y2huX2JpbmRfdW5ib3VuZF9wb3J0KHhjX2V2dGNobiAqeGNlLCBpbnQgZG9taWQp Ci17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAgICBzdHJ1Y3QgaW9jdGxfZXZ0Y2huX2JpbmRf dW5ib3VuZF9wb3J0IGJpbmQ7Ci0KLSAgICBiaW5kLnJlbW90ZV9kb21haW4gPSBkb21pZDsKLQot ICAgIHJldHVybiBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX0JJTkRfVU5CT1VORF9QT1JULCAmYmlu ZCk7Ci19Ci0KLWV2dGNobl9wb3J0X29yX2Vycm9yX3QgeGNfZXZ0Y2huX2JpbmRfaW50ZXJkb21h aW4oeGNfZXZ0Y2huICp4Y2UsIGludCBkb21pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZXZ0Y2huX3BvcnRfdCByZW1vdGVfcG9ydCkKLXsKLSAg ICBpbnQgZmQgPSB4Y2UtPmZkOwotICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fYmluZF9pbnRlcmRv bWFpbiBiaW5kOwotCi0gICAgYmluZC5yZW1vdGVfZG9tYWluID0gZG9taWQ7Ci0gICAgYmluZC5y ZW1vdGVfcG9ydCA9IHJlbW90ZV9wb3J0OwotCi0gICAgcmV0dXJuIGlvY3RsKGZkLCBJT0NUTF9F VlRDSE5fQklORF9JTlRFUkRPTUFJTiwgJmJpbmQpOwotfQotCi1ldnRjaG5fcG9ydF9vcl9lcnJv cl90IHhjX2V2dGNobl9iaW5kX3ZpcnEoeGNfZXZ0Y2huICp4Y2UsIHVuc2lnbmVkIGludCB2aXJx KQotewotICAgIGludCBmZCA9IHhjZS0+ZmQ7Ci0gICAgc3RydWN0IGlvY3RsX2V2dGNobl9iaW5k X3ZpcnEgYmluZDsKLQotICAgIGJpbmQudmlycSA9IHZpcnE7Ci0KLSAgICByZXR1cm4gaW9jdGwo ZmQsIElPQ1RMX0VWVENITl9CSU5EX1ZJUlEsICZiaW5kKTsKLX0KLQotaW50IHhjX2V2dGNobl91 bmJpbmQoeGNfZXZ0Y2huICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCkKLXsKLSAgICBpbnQgZmQg PSB4Y2UtPmZkOwotICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fdW5iaW5kIHVuYmluZDsKLQotICAg IHVuYmluZC5wb3J0ID0gcG9ydDsKLQotICAgIHJldHVybiBpb2N0bChmZCwgSU9DVExfRVZUQ0hO X1VOQklORCwgJnVuYmluZCk7Ci19Ci0KLWV2dGNobl9wb3J0X29yX2Vycm9yX3QgeGNfZXZ0Y2hu X3BlbmRpbmcoeGNfZXZ0Y2huICp4Y2UpCi17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAgICBl dnRjaG5fcG9ydF90IHBvcnQ7Ci0KLSAgICBpZiAoIHJlYWRfZXhhY3QoZmQsIChjaGFyICopJnBv cnQsIHNpemVvZihwb3J0KSkgPT0gLTEgKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICByZXR1 cm4gcG9ydDsKLX0KLQotaW50IHhjX2V2dGNobl91bm1hc2soeGNfZXZ0Y2huICp4Y2UsIGV2dGNo bl9wb3J0X3QgcG9ydCkKLXsKLSAgICBpbnQgZmQgPSB4Y2UtPmZkOwotICAgIHJldHVybiB3cml0 ZV9leGFjdChmZCwgKGNoYXIgKikmcG9ydCwgc2l6ZW9mKHBvcnQpKTsKLX0KLQogLyogT3B0aW9u YWxseSBmbHVzaCBmaWxlIHRvIGRpc2sgYW5kIGRpc2NhcmQgcGFnZSBjYWNoZSAqLwogdm9pZCBk aXNjYXJkX2ZpbGVfY2FjaGUoeGNfaW50ZXJmYWNlICp4Y2gsIGludCBmZCwgaW50IGZsdXNoKSAK IHsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL3hjX3N1c3BlbmQuYyBiL3Rvb2xzL2xpYnhjL3hj X3N1c3BlbmQuYwppbmRleCBlMjJmNGFjLi4xMzllZGI0IDEwMDY0NAotLS0gYS90b29scy9saWJ4 Yy94Y19zdXNwZW5kLmMKKysrIGIvdG9vbHMvbGlieGMveGNfc3VzcGVuZC5jCkBAIC0xNyw2ICsx Nyw4IEBACiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KIAorI2luY2x1 ZGUgPHhlbmV2dGNobi5oPgorCiAjaW5jbHVkZSAieGNfcHJpdmF0ZS5oIgogI2luY2x1ZGUgInhl bmd1ZXN0LmgiCiAKQEAgLTEyNSwxMiArMTI3LDEyIEBAIHN0YXRpYyBpbnQgdW5sb2NrX3N1c3Bl bmRfZXZlbnQoeGNfaW50ZXJmYWNlICp4Y2gsIGludCBkb21pZCwgaW50ICpsb2NrZmQpCiAgICAg cmV0dXJuIC0xOwogfQogCi1pbnQgeGNfYXdhaXRfc3VzcGVuZCh4Y19pbnRlcmZhY2UgKnhjaCwg eGNfZXZ0Y2huICp4Y2UsIGludCBzdXNwZW5kX2V2dGNobikKK2ludCB4Y19hd2FpdF9zdXNwZW5k KHhjX2ludGVyZmFjZSAqeGNoLCB4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIGludCBzdXNwZW5kX2V2 dGNobikKIHsKICAgICBpbnQgcmM7CiAKICAgICBkbyB7Ci0gICAgICAgIHJjID0geGNfZXZ0Y2hu X3BlbmRpbmcoeGNlKTsKKyAgICAgICAgcmMgPSB4ZW5ldnRjaG5fcGVuZGluZyh4Y2UpOwogICAg ICAgICBpZiAocmMgPCAwKSB7CiAgICAgICAgICAgICBFUlJPUigiZXJyb3IgcG9sbGluZyBzdXNw ZW5kIG5vdGlmaWNhdGlvbiBjaGFubmVsOiAlZCIsIHJjKTsKICAgICAgICAgICAgIHJldHVybiAt MTsKQEAgLTEzOCw3ICsxNDAsNyBAQCBpbnQgeGNfYXdhaXRfc3VzcGVuZCh4Y19pbnRlcmZhY2Ug KnhjaCwgeGNfZXZ0Y2huICp4Y2UsIGludCBzdXNwZW5kX2V2dGNobikKICAgICB9IHdoaWxlIChy YyAhPSBzdXNwZW5kX2V2dGNobik7CiAKICAgICAvKiBoYXJtbGVzcyBmb3Igb25lLW9mZiBzdXNw ZW5kICovCi0gICAgaWYgKHhjX2V2dGNobl91bm1hc2soeGNlLCBzdXNwZW5kX2V2dGNobikgPCAw KQorICAgIGlmICh4ZW5ldnRjaG5fdW5tYXNrKHhjZSwgc3VzcGVuZF9ldnRjaG4pIDwgMCkKICAg ICAgICAgRVJST1IoImZhaWxlZCB0byB1bm1hc2sgc3VzcGVuZCBub3RpZmljYXRpb24gY2hhbm5l bDogJWQiLCByYyk7CiAKICAgICByZXR1cm4gMDsKQEAgLTE0NiwxNiArMTQ4LDE2IEBAIGludCB4 Y19hd2FpdF9zdXNwZW5kKHhjX2ludGVyZmFjZSAqeGNoLCB4Y19ldnRjaG4gKnhjZSwgaW50IHN1 c3BlbmRfZXZ0Y2huKQogCiAvKiBJbnRlcm5hbCBjYWxsZXJzIGFyZSBhbGxvd2VkIHRvIGNhbGwg dGhpcyB3aXRoIHN1c3BlbmRfZXZ0Y2huPDAKICAqIGJ1dCAqbG9ja2ZkPjAuICovCi1pbnQgeGNf c3VzcGVuZF9ldnRjaG5fcmVsZWFzZSh4Y19pbnRlcmZhY2UgKnhjaCwgeGNfZXZ0Y2huICp4Y2Us CitpbnQgeGNfc3VzcGVuZF9ldnRjaG5fcmVsZWFzZSh4Y19pbnRlcmZhY2UgKnhjaCwgeGVuZXZ0 Y2huX2hhbmRsZSAqeGNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRvbWlk LCBpbnQgc3VzcGVuZF9ldnRjaG4sIGludCAqbG9ja2ZkKQogewogICAgIGlmIChzdXNwZW5kX2V2 dGNobiA+PSAwKQotICAgICAgICB4Y19ldnRjaG5fdW5iaW5kKHhjZSwgc3VzcGVuZF9ldnRjaG4p OworICAgICAgICB4ZW5ldnRjaG5fdW5iaW5kKHhjZSwgc3VzcGVuZF9ldnRjaG4pOwogCiAgICAg cmV0dXJuIHVubG9ja19zdXNwZW5kX2V2ZW50KHhjaCwgZG9taWQsIGxvY2tmZCk7CiB9CiAKLWlu dCB4Y19zdXNwZW5kX2V2dGNobl9pbml0X3NhbmUoeGNfaW50ZXJmYWNlICp4Y2gsIHhjX2V2dGNo biAqeGNlLAoraW50IHhjX3N1c3BlbmRfZXZ0Y2huX2luaXRfc2FuZSh4Y19pbnRlcmZhY2UgKnhj aCwgeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQgZG9taWQsIGludCBwb3J0LCBpbnQgKmxvY2tmZCkKIHsKICAgICBpbnQgcmMsIHN1c3Bl bmRfZXZ0Y2huID0gLTE7CkBAIC0xNjUsNyArMTY3LDcgQEAgaW50IHhjX3N1c3BlbmRfZXZ0Y2hu X2luaXRfc2FuZSh4Y19pbnRlcmZhY2UgKnhjaCwgeGNfZXZ0Y2huICp4Y2UsCiAgICAgICAgIGdv dG8gY2xlYW51cDsKICAgICB9CiAKLSAgICBzdXNwZW5kX2V2dGNobiA9IHhjX2V2dGNobl9iaW5k X2ludGVyZG9tYWluKHhjZSwgZG9taWQsIHBvcnQpOworICAgIHN1c3BlbmRfZXZ0Y2huID0geGVu ZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4oeGNlLCBkb21pZCwgcG9ydCk7CiAgICAgaWYgKHN1c3Bl bmRfZXZ0Y2huIDwgMCkgewogICAgICAgICBFUlJPUigiZmFpbGVkIHRvIGJpbmQgc3VzcGVuZCBl dmVudCBjaGFubmVsOiAlZCIsIHN1c3BlbmRfZXZ0Y2huKTsKICAgICAgICAgZ290byBjbGVhbnVw OwpAQCAtMTg1LDcgKzE4Nyw3IEBAIGNsZWFudXA6CiAgICAgcmV0dXJuIC0xOwogfQogCi1pbnQg eGNfc3VzcGVuZF9ldnRjaG5faW5pdF9leGNsdXNpdmUoeGNfaW50ZXJmYWNlICp4Y2gsIHhjX2V2 dGNobiAqeGNlLAoraW50IHhjX3N1c3BlbmRfZXZ0Y2huX2luaXRfZXhjbHVzaXZlKHhjX2ludGVy ZmFjZSAqeGNoLCB4ZW5ldnRjaG5faGFuZGxlICp4Y2UsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50IGRvbWlkLCBpbnQgcG9ydCwgaW50ICpsb2NrZmQpCiB7CiAgICAg aW50IHN1c3BlbmRfZXZ0Y2huOwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGVuZXZ0Y2huL01ha2Vm aWxlIGIvdG9vbHMvbGlieGVuZXZ0Y2huL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmMzZWEzYzIKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy9saWJ4ZW5ldnRj aG4vTWFrZWZpbGUKQEAgLTAsMCArMSw2NSBAQAorWEVOX1JPT1QgPSAkKENVUkRJUikvLi4vLi4K K2luY2x1ZGUgJChYRU5fUk9PVCkvdG9vbHMvUnVsZXMubWsKKworTUFKT1IgICAgPSAxCitNSU5P UiAgICA9IDAKK1NITElCX0xERkxBR1MgKz0gLVdsLC0tdmVyc2lvbi1zY3JpcHQ9bGlieGVuZXZ0 Y2huLm1hcAorCitDRkxBR1MgICArPSAtV2Vycm9yIC1XbWlzc2luZy1wcm90b3R5cGVzCitDRkxB R1MgICArPSAtSS4vaW5jbHVkZSAkKENGTEFHU194ZW5pbmNsdWRlKQorQ0ZMQUdTICAgKz0gJChD RkxBR1NfbGlieGVudG9vbGxvZykKKworU1JDUy15ICAgICAgICAgICAgICAgICArPSBjb3JlLmMK K1NSQ1MtJChDT05GSUdfTGludXgpICAgKz0gbGludXguYworU1JDUy0kKENPTkZJR19GcmVlQlNE KSArPSBmcmVlYnNkLmMKK1NSQ1MtJChDT05GSUdfU3VuT1MpICAgKz0gc29sYXJpcy5jCitTUkNT LSQoQ09ORklHX05ldEJTRCkgICs9IG5ldGJzZC5jCitTUkNTLSQoQ09ORklHX01pbmlPUykgICs9 IG1pbmlvcy5jCisKK0xJQl9PQkpTIDo9ICQocGF0c3Vic3QgJS5jLCUubywkKFNSQ1MteSkpCitQ SUNfT0JKUyA6PSAkKHBhdHN1YnN0ICUuYywlLm9waWMsJChTUkNTLXkpKQorCitMSUIgOj0gbGli eGVuZXZ0Y2huLmEKK2lmbmVxICgkKG5vc2hhcmVkbGlicykseSkKK0xJQiArPSBsaWJ4ZW5ldnRj aG4uc28KK2VuZGlmCisKKy5QSE9OWTogYWxsCithbGw6IGJ1aWxkCisKKy5QSE9OWTogYnVpbGQK K2J1aWxkOgorCSQoTUFLRSkgbGlicworCisuUEhPTlk6IGxpYnMKK2xpYnM6ICQoTElCKQorCisK K2xpYnhlbmV2dGNobi5hOiAkKExJQl9PQkpTKQorCSQoQVIpIHJjICRAICReCisKK2xpYnhlbmV2 dGNobi5zbzogbGlieGVuZXZ0Y2huLnNvLiQoTUFKT1IpCisJJChTWU1MSU5LX1NITElCKSAkPCAk QAorbGlieGVuZXZ0Y2huLnNvLiQoTUFKT1IpOiBsaWJ4ZW5ldnRjaG4uc28uJChNQUpPUikuJChN SU5PUikKKwkkKFNZTUxJTktfU0hMSUIpICQ8ICRACisKK2xpYnhlbmV2dGNobi5zby4kKE1BSk9S KS4kKE1JTk9SKTogJChQSUNfT0JKUykgbGlieGVuZXZ0Y2huLm1hcAorCSQoQ0MpICQoTERGTEFH UykgLVdsLCQoU09OQU1FX0xERkxBRykgLVdsLGxpYnhlbmV2dGNobi5zby4kKE1BSk9SKSAkKFNI TElCX0xERkxBR1MpIC1vICRAICQoUElDX09CSlMpICQoTERMSUJTX2xpYnhlbnRvb2xsb2cpICQo QVBQRU5EX0xERkxBR1MpCisKKy5QSE9OWTogaW5zdGFsbAoraW5zdGFsbDogYnVpbGQKKwkkKElO U1RBTExfRElSKSAkKERFU1RESVIpJChsaWJkaXIpCisJJChJTlNUQUxMX0RJUikgJChERVNURElS KSQoaW5jbHVkZWRpcikKKwkkKElOU1RBTExfU0hMSUIpIGxpYnhlbmV2dGNobi5zby4kKE1BSk9S KS4kKE1JTk9SKSAkKERFU1RESVIpJChsaWJkaXIpCisJJChJTlNUQUxMX0RBVEEpIGxpYnhlbmV2 dGNobi5hICQoREVTVERJUikkKGxpYmRpcikKKwkkKFNZTUxJTktfU0hMSUIpIGxpYnhlbmV2dGNo bi5zby4kKE1BSk9SKS4kKE1JTk9SKSAkKERFU1RESVIpJChsaWJkaXIpL2xpYnhlbmV2dGNobi5z by4kKE1BSk9SKQorCSQoU1lNTElOS19TSExJQikgbGlieGVuZXZ0Y2huLnNvLiQoTUFKT1IpICQo REVTVERJUikkKGxpYmRpcikvbGlieGVuZXZ0Y2huLnNvCisJJChJTlNUQUxMX0RBVEEpIGluY2x1 ZGUveGVuZXZ0Y2huLmggJChERVNURElSKSQoaW5jbHVkZWRpcikKKworLlBIT05ZOiBUQUdTCitU QUdTOgorCWV0YWdzIC10ICouYyAqLmgKKworLlBIT05ZOiBjbGVhbgorY2xlYW46CisJcm0gLXJm ICoucnBtICQoTElCKSAqfiAkKERFUFMpICQoTElCX09CSlMpICQoUElDX09CSlMpCmRpZmYgLS1n aXQgYS90b29scy9saWJ4ZW5ldnRjaG4vY29yZS5jIGIvdG9vbHMvbGlieGVuZXZ0Y2huL2NvcmUu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODYxNmM5Ci0tLSAvZGV2L251 bGwKKysrIGIvdG9vbHMvbGlieGVuZXZ0Y2huL2NvcmUuYwpAQCAtMCwwICsxLDcwIEBACisvKgor ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsKKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLgorICoKKyAqIFRo aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcg d2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAq IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rv biwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNs dWRlIDxzdGRsaWIuaD4KKworI2luY2x1ZGUgInByaXZhdGUuaCIKKworeGVuZXZ0Y2huX2hhbmRs ZSAqeGVuZXZ0Y2huX29wZW4oeGVudG9vbGxvZ19sb2dnZXIgKmxvZ2dlciwgdW5zaWduZWQgb3Bl bl9mbGFncykKK3sKKyAgICB4ZW5ldnRjaG5faGFuZGxlICp4Y2UgPSBtYWxsb2Moc2l6ZW9mKCp4 Y2UpKTsKKyAgICBpbnQgcmM7CisKKyAgICBpZiAoIXhjZSkgcmV0dXJuIE5VTEw7CisKKyAgICB4 Y2UtPmZkID0gLTE7CisgICAgeGNlLT5sb2dnZXIgPSBsb2dnZXI7CisgICAgeGNlLT5sb2dnZXJf dG9mcmVlICA9IE5VTEw7CisKKyAgICBpZiAoIXhjZS0+bG9nZ2VyKSB7CisgICAgICAgIHhjZS0+ bG9nZ2VyID0geGNlLT5sb2dnZXJfdG9mcmVlID0KKyAgICAgICAgICAgICh4ZW50b29sbG9nX2xv Z2dlciopCisgICAgICAgICAgICB4dGxfY3JlYXRlbG9nZ2VyX3N0ZGlvc3RyZWFtKHN0ZGVyciwg WFRMX1BST0dSRVNTLCAwKTsKKyAgICAgICAgaWYgKCF4Y2UtPmxvZ2dlcikgZ290byBlcnI7Cisg ICAgfQorCisgICAgcmMgPSBvc2RlcF9ldnRjaG5fb3Blbih4Y2UpOworICAgIGlmICggcmMgIDwg MCApIGdvdG8gZXJyOworCisgICAgcmV0dXJuIHhjZTsKKworZXJyOgorICAgIG9zZGVwX2V2dGNo bl9jbG9zZSh4Y2UpOworICAgIHh0bF9sb2dnZXJfZGVzdHJveSh4Y2UtPmxvZ2dlcl90b2ZyZWUp OworICAgIGZyZWUoeGNlKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworaW50IHhlbmV2dGNobl9j bG9zZSh4ZW5ldnRjaG5faGFuZGxlICp4Y2UpCit7CisgICAgaW50IHJjOworCisgICAgcmMgPSBv c2RlcF9ldnRjaG5fY2xvc2UoeGNlKTsKKyAgICB4dGxfbG9nZ2VyX2Rlc3Ryb3koeGNlLT5sb2dn ZXJfdG9mcmVlKTsKKyAgICBmcmVlKHhjZSk7CisgICAgcmV0dXJuIHJjOworfQorCisvKgorICog TG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICog Yy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTog bmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhlbmV2dGNobi9mcmVlYnNk LmMgYi90b29scy9saWJ4ZW5ldnRjaG4vZnJlZWJzZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjliOTlmYzAKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy9saWJ4ZW5ldnRj aG4vZnJlZWJzZC5jCkBAIC0wLDAgKzEsMTM1IEBACisgLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor ICoKKyAqIENvcHlyaWdodCAyMDA2IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gIEFsbCByaWdodHMg cmVzZXJ2ZWQuCisgKiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zLgorICoKKyAqIFRo aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247CisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZS4KKyAqCisgKiBUaGlzIGxp YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBTcGxpdCBvZmYgZnJvbSB4Y19mcmVlYnNkX29zZGVw LmMKKyAqLworCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKworI2lu Y2x1ZGUgPHN5cy9pb2N0bC5oPgorCisjaW5jbHVkZSA8eGVuL3N5cy9ldnRjaG4uaD4KKworI2lu Y2x1ZGUgInByaXZhdGUuaCIKKworI2RlZmluZSBFVlRDSE5fREVWICAgICAgIi9kZXYveGVuL2V2 dGNobiIKKworaW50IG9zZGVwX2V2dGNobl9vcGVuKHhlbmV2dGNobl9oYW5kbGUgKnhjZSkKK3sK KyAgICBpbnQgZmQgPSBvcGVuKEVWVENITl9ERVYsIE9fUkRXUik7CisgICAgaWYgKCBmZCA9PSAt MSApCisgICAgICAgIHJldHVybiAtMTsKKyAgICB4Y2UtPmZkID0gZmQ7CisgICAgcmV0dXJuIDA7 Cit9CisKK2ludCBvc2RlcF9ldnRjaG5fY2xvc2UoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlKQorewor ICAgIGlmICggeGNlLT5mZCA9PSAtMSApCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJu IGNsb3NlKHhjZS0+ZmQpOworfQorCitpbnQgeGVuZXZ0Y2huX2ZkKHhlbmV2dGNobl9oYW5kbGUg KnhjZSkKK3sKKyAgICByZXR1cm4geGNlLT5mZDsKK30KKworaW50IHhlbmV2dGNobl9ub3RpZnko eGVuZXZ0Y2huX2hhbmRsZSAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQpCit7CisgICAgaW50IGZk ID0geGNlLT5mZDsKKyAgICBzdHJ1Y3QgaW9jdGxfZXZ0Y2huX25vdGlmeSBub3RpZnk7CisKKyAg ICBub3RpZnkucG9ydCA9IHBvcnQ7CisKKyAgICByZXR1cm4gaW9jdGwoZmQsIElPQ1RMX0VWVENI Tl9OT1RJRlksICZub3RpZnkpOworfQorCitldnRjaG5fcG9ydF9vcl9lcnJvcl90IHhlbmV2dGNo bl9iaW5kX3VuYm91bmRfcG9ydCh4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIGludCBkb21pZCkKK3sK KyAgICBpbnQgcmV0LCBmZCA9IHhjZS0+ZmQ7CisgICAgc3RydWN0IGlvY3RsX2V2dGNobl9iaW5k X3VuYm91bmRfcG9ydCBiaW5kOworCisgICAgYmluZC5yZW1vdGVfZG9tYWluID0gZG9taWQ7CisK KyAgICByZXQgPSBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX0JJTkRfVU5CT1VORF9QT1JULCAmYmlu ZCk7CisgICAgcmV0dXJuICggcmV0ID09IDAgKSA/IGJpbmQucG9ydCA6IHJldDsKK30KKworZXZ0 Y2huX3BvcnRfb3JfZXJyb3JfdAoreGVuZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4oeGVuZXZ0Y2hu X2hhbmRsZSAqeGNlLCBpbnQgZG9taWQsIGV2dGNobl9wb3J0X3QgcmVtb3RlX3BvcnQpCit7Cisg ICAgaW50IHJldCwgZmQgPSB4Y2UtPmZkOworICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fYmluZF9p bnRlcmRvbWFpbiBiaW5kOworCisgICAgYmluZC5yZW1vdGVfZG9tYWluID0gZG9taWQ7CisgICAg YmluZC5yZW1vdGVfcG9ydCA9IHJlbW90ZV9wb3J0OworCisgICAgcmV0ID0gaW9jdGwoZmQsIElP Q1RMX0VWVENITl9CSU5EX0lOVEVSRE9NQUlOLCAmYmluZCk7CisgICAgcmV0dXJuICggcmV0ID09 IDAgKSA/IGJpbmQucG9ydCA6IHJldDsKK30KKworZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCB4ZW5l dnRjaG5fYmluZF92aXJxKHhlbmV2dGNobl9oYW5kbGUgKnhjZSwgdW5zaWduZWQgaW50IHZpcnEp Cit7CisgICAgaW50IHJldCwgZmQgPSB4Y2UtPmZkOworICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5f YmluZF92aXJxIGJpbmQ7CisKKyAgICBiaW5kLnZpcnEgPSB2aXJxOworCisgICAgcmV0ID0gaW9j dGwoZmQsIElPQ1RMX0VWVENITl9CSU5EX1ZJUlEsICZiaW5kKTsKKyAgICByZXR1cm4gKCByZXQg PT0gMCApID8gYmluZC5wb3J0IDogcmV0OworfQorCitpbnQgeGVuZXZ0Y2huX3VuYmluZCh4ZW5l dnRjaG5faGFuZGxlICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCkKK3sKKyAgICBpbnQgZmQgPSB4 Y2UtPmZkOworICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fdW5iaW5kIHVuYmluZDsKKworICAgIHVu YmluZC5wb3J0ID0gcG9ydDsKKworICAgIHJldHVybiBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX1VO QklORCwgJnVuYmluZCk7Cit9CisKK2V2dGNobl9wb3J0X29yX2Vycm9yX3QgeGVuZXZ0Y2huX3Bl bmRpbmcoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlKQoreworICAgIGludCBmZCA9IHhjZS0+ZmQ7Cisg ICAgZXZ0Y2huX3BvcnRfdCBwb3J0OworCisgICAgaWYgKCByZWFkKGZkLCAmcG9ydCwgc2l6ZW9m KHBvcnQpKSAhPSBzaXplb2YocG9ydCkgKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXR1 cm4gcG9ydDsKK30KKworaW50IHhlbmV2dGNobl91bm1hc2soeGVuZXZ0Y2huX2hhbmRsZSAqeGNl LCBldnRjaG5fcG9ydF90IHBvcnQpCit7CisgICAgaW50IGZkID0geGNlLT5mZDsKKworICAgIGlm ICggd3JpdGUoZmQsICZwb3J0LCBzaXplb2YocG9ydCkpICE9IHNpemVvZihwb3J0KSApCisgICAg ICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gMDsKK30KKworLyoKKyAqIExvY2FsIHZhcmlhYmxl czoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0 OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgor ICovCmRpZmYgLS1naXQgYS90b29scy9saWJ4ZW5ldnRjaG4vaW5jbHVkZS94ZW5ldnRjaG4uaCBi L3Rvb2xzL2xpYnhlbmV2dGNobi9pbmNsdWRlL3hlbmV2dGNobi5oCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjQxOTI4ZjYKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy9saWJ4 ZW5ldnRjaG4vaW5jbHVkZS94ZW5ldnRjaG4uaApAQCAtMCwwICsxLDE0NyBAQAorLyoKKyAqIFRo aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247CisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZS4KKyAqCisgKiBUaGlzIGxp YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBTcGxpdCBvZmYgZnJvbToKKyAqIHhlbmN0cmwuaAor ICoKKyAqIEEgbGlicmFyeSBmb3IgbG93LWxldmVsIGFjY2VzcyB0byB0aGUgWGVuIGNvbnRyb2wg aW50ZXJmYWNlcy4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAwNCwgSyBBIEZyYXNlci4K KyAqLworCisjaWZuZGVmIFhFTkVWVENITl9ICisjZGVmaW5lIFhFTkVWVENITl9ICisKKyNpbmNs dWRlIDxzdGRpbnQuaD4KKworI2luY2x1ZGUgPHhlbi9ldmVudF9jaGFubmVsLmg+CisKKy8qIEEg cG9ydCBpZGVudGlmaWVyIGlzIGd1YXJhbnRlZWQgdG8gZml0IGluIDMxIGJpdHMuICovCit0eXBl ZGVmIGludCBldnRjaG5fcG9ydF9vcl9lcnJvcl90OworCit0eXBlZGVmIHN0cnVjdCB4ZW5ldnRj aG5faGFuZGxlIHhlbmV2dGNobl9oYW5kbGU7CisKKy8qIENhbGxlcnMgd2hvIGRvbid0IGNhcmUg ZG9uJ3QgbmVlZCB0byAjaW5jbHVkZSA8eGVudG9vbGxvZy5oPiAqLwordHlwZWRlZiBzdHJ1Y3Qg eGVudG9vbGxvZ19sb2dnZXIgeGVudG9vbGxvZ19sb2dnZXI7CisKKy8qCisgKiBFVkVOVCBDSEFO TkVMIEZVTkNUSU9OUworICoKKyAqIE5vbmUgb2YgdGhlc2UgZG8gYW55IGxvZ2dpbmcuCisgKi8K KworLyoKKyAqIFJldHVybiBhIGhhbmRsZSB0byB0aGUgZXZlbnQgY2hhbm5lbCBkcml2ZXIsIG9y IE5VTEwgb24gZmFpbHVyZSwgaW4KKyAqIHdoaWNoIGNhc2UgZXJybm8gd2lsbCBiZSBzZXQgYXBw cm9wcmlhdGVseS4KKyAqCisgKiBOb3RlOgorICogQWZ0ZXIgZm9yayBhIGNoaWxkIHByb2Nlc3Mg bXVzdCBub3QgdXNlIGFueSBvcGVuZWQgeGMgZXZ0Y2huCisgKiBoYW5kbGUgaW5oZXJpdGVkIGZy b20gdGhlaXIgcGFyZW50LiBUaGV5IG11c3Qgb3BlbiBhIG5ldyBoYW5kbGUgaWYKKyAqIHRoZXkg d2FudCB0byBpbnRlcmFjdCB3aXRoIHhjLgorICoKKyAqIEJlZm9yZSBYZW4gcHJlLTQuMSB0aGlz IGZ1bmN0aW9uIHdvdWxkIHNvbWV0aW1lcyByZXBvcnQgZXJyb3JzIHdpdGggcGVycm9yLgorICov CisvKiBDdXJyZW50bHkgbm8gZmxhZ3MgYXJlIGRlZmluZWQgKi8KK3hlbmV2dGNobl9oYW5kbGUg KnhlbmV2dGNobl9vcGVuKHhlbnRvb2xsb2dfbG9nZ2VyICpsb2dnZXIsIHVuc2lnbmVkIG9wZW5f ZmxhZ3MpOworCisvKgorICogQ2xvc2UgYSBoYW5kbGUgcHJldmlvdXNseSBhbGxvY2F0ZWQgd2l0 aCB4ZW5ldnRjaG5fb3BlbigpLgorICovCitpbnQgeGVuZXZ0Y2huX2Nsb3NlKHhlbmV2dGNobl9o YW5kbGUgKnhjZSk7CisKKy8qCisgKiBSZXR1cm4gYW4gZmQgdGhhdCBjYW4gYmUgc2VsZWN0KCll ZCBvbi4KKyAqCisgKiBOb3RlIHRoYXQgZHVlIHRvIGJ1Z3MsIHNldHRpbmcgdGhpcyBmZCB0byBu b24gYmxvY2tpbmcgbWF5IG5vdAorICogd29yazogeW91IHdvdWxkIGhvcGUgdGhhdCBpdCB3b3Vs ZCByZXN1bHQgaW4geGVuZXZ0Y2huX3BlbmRpbmcKKyAqIGZhaWxpbmcgd2l0aCBFV09VTERCTE9D SyBpZiB0aGVyZSBhcmUgbm8gZXZlbnRzIHNpZ25hbGVkLCBidXQgaW4KKyAqIGZhY3QgaXQgbWF5 IGJsb2NrLiAgKEJ1ZyBpcyBwcmVzZW50IGluIGF0IGxlYXN0IExpbnV4IDMuMTIsIGFuZAorICog cGVyaGFwcyBvbiBvdGhlciBwbGF0Zm9ybXMgb3IgbGF0ZXIgdmVyc2lvbi4pCisgKgorICogVG8g YmUgc2FmZSwgeW91IG11c3QgdXNlIHBvbGwoKSBvciBzZWxlY3QoKSBiZWZvcmUgZWFjaCBjYWxs IHRvCisgKiB4ZW5ldnRjaG5fcGVuZGluZy4gIElmIHlvdSBoYXZlIG11bHRpcGxlIHRocmVhZHMg KG9yIHByb2Nlc3NlcykKKyAqIHNoYXJpbmcgYSBzaW5nbGUgeGNlIGhhbmRsZSB0aGlzIHdpbGwg bm90IHdvcmssIGFuZCB0aGVyZSBpcyBubworICogc3RyYWlnaHRmb3J3YXJkIHdvcmthcm91bmQu ICBQbGVhc2UgZGVzaWduIHlvdXIgcHJvZ3JhbSBzb21lIG90aGVyCisgKiB3YXkuCisgKi8KK2lu dCB4ZW5ldnRjaG5fZmQoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlKTsKKworLyoKKyAqIE5vdGlmeSB0 aGUgZ2l2ZW4gZXZlbnQgY2hhbm5lbC4gUmV0dXJucyAtMSBvbiBmYWlsdXJlLCBpbiB3aGljaCBj YXNlCisgKiBlcnJubyB3aWxsIGJlIHNldCBhcHByb3ByaWF0ZWx5LgorICovCitpbnQgeGVuZXZ0 Y2huX25vdGlmeSh4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCk7CisK Ky8qCisgKiBSZXR1cm5zIGEgbmV3IGV2ZW50IHBvcnQgYXdhaXRpbmcgaW50ZXJkb21haW4gY29u bmVjdGlvbiBmcm9tIHRoZSBnaXZlbgorICogZG9tYWluIElELCBvciAtMSBvbiBmYWlsdXJlLCBp biB3aGljaCBjYXNlIGVycm5vIHdpbGwgYmUgc2V0IGFwcHJvcHJpYXRlbHkuCisgKi8KK2V2dGNo bl9wb3J0X29yX2Vycm9yX3QKK3hlbmV2dGNobl9iaW5kX3VuYm91bmRfcG9ydCh4ZW5ldnRjaG5f aGFuZGxlICp4Y2UsIGludCBkb21pZCk7CisKKy8qCisgKiBSZXR1cm5zIGEgbmV3IGV2ZW50IHBv cnQgYm91bmQgdG8gdGhlIHJlbW90ZSBwb3J0IGZvciB0aGUgZ2l2ZW4gZG9tYWluIElELAorICog b3IgLTEgb24gZmFpbHVyZSwgaW4gd2hpY2ggY2FzZSBlcnJubyB3aWxsIGJlIHNldCBhcHByb3By aWF0ZWx5LgorICovCitldnRjaG5fcG9ydF9vcl9lcnJvcl90Cit4ZW5ldnRjaG5fYmluZF9pbnRl cmRvbWFpbih4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIGludCBkb21pZCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIGV2dGNobl9wb3J0X3QgcmVtb3RlX3BvcnQpOworCisvKgorICogQmluZCBh biBldmVudCBjaGFubmVsIHRvIHRoZSBnaXZlbiBWSVJRLiBSZXR1cm5zIHRoZSBldmVudCBjaGFu bmVsIGJvdW5kIHRvCisgKiB0aGUgVklSUSwgb3IgLTEgb24gZmFpbHVyZSwgaW4gd2hpY2ggY2Fz ZSBlcnJubyB3aWxsIGJlIHNldCBhcHByb3ByaWF0ZWx5LgorICovCitldnRjaG5fcG9ydF9vcl9l cnJvcl90Cit4ZW5ldnRjaG5fYmluZF92aXJxKHhlbmV2dGNobl9oYW5kbGUgKnhjZSwgdW5zaWdu ZWQgaW50IHZpcnEpOworCisvKgorICogVW5iaW5kIHRoZSBnaXZlbiBldmVudCBjaGFubmVsLiBS ZXR1cm5zIC0xIG9uIGZhaWx1cmUsIGluIHdoaWNoIGNhc2UgZXJybm8KKyAqIHdpbGwgYmUgc2V0 IGFwcHJvcHJpYXRlbHkuCisgKi8KK2ludCB4ZW5ldnRjaG5fdW5iaW5kKHhlbmV2dGNobl9oYW5k bGUgKnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KTsKKworLyoKKyAqIFJldHVybiB0aGUgbmV4dCBl dmVudCBjaGFubmVsIHRvIGJlY29tZSBwZW5kaW5nLCBvciAtMSBvbiBmYWlsdXJlLCBpbiB3aGlj aAorICogY2FzZSBlcnJubyB3aWxsIGJlIHNldCBhcHByb3ByaWF0ZWx5LgorICoKKyAqIEF0IHRo ZSBoeXBlcnZpc29yIGxldmVsIHRoZSBldmVudCBjaGFubmVsIHdpbGwgaGF2ZSBiZWVuIG1hc2tl ZCwKKyAqIGFuZCB0aGVuIGNsZWFyZWQsIGJ5IHRoZSB1bmRlcmx5aW5nIG1hY2hpbmVyeSAoZXZ0 Y2huIGtlcm5lbAorICogZHJpdmVyLCBvciBlcXVpdmFsZW50KS4gIFNvIGlmIHRoZSBldmVudCBj aGFubmVsIGlzIHNpZ25hbGVkIGFnYWluCisgKiBhZnRlciBpdCBpcyByZXR1cm5lZCBoZXJlLCBp dCB3aWxsIGJlIHF1ZXVlZCB1cCwgYW5kIGRlbGl2ZXJlZAorICogYWdhaW4gYWZ0ZXIgeW91IHVu bWFzayBpdC4gIChTZWUgdGhlIGRvY3VtZW50YXRpb24gaW4gdGhlIFhlbgorICogcHVibGljIGhl YWRlciBldmVudF9jaGFubmVsLmguKQorICoKKyAqIE9uIHJlY2VpdmluZyB0aGUgbm90aWZpY2F0 aW9uIGZyb20geGVuZXZ0Y2huX3BlbmRpbmcsIHlvdSBzaG91bGQKKyAqIG5vcm1hbGx5OiBjaGVj ayAoYnkgb3RoZXIgbWVhbnMpIHdoYXQgd29yayBuZWVkcyBkb2luZzsgZG8gdGhlCisgKiBuZWNl c3Nhcnkgd29yayAoaWYgYW55KTsgdW5tYXNrIHRoZSBldmVudCBjaGFubmVsIHdpdGgKKyAqIHhl bmV2dGNobl91bm1hc2sgKGlmIHlvdSB3YW50IHRvIHJlY2VpdmUgYW55IGZ1cnRoZXIKKyAqIG5v dGlmaWNhdGlvbnMpLgorICovCitldnRjaG5fcG9ydF9vcl9lcnJvcl90Cit4ZW5ldnRjaG5fcGVu ZGluZyh4ZW5ldnRjaG5faGFuZGxlICp4Y2UpOworCisvKgorICogVW5tYXNrIHRoZSBnaXZlbiBl dmVudCBjaGFubmVsLiBSZXR1cm5zIC0xIG9uIGZhaWx1cmUsIGluIHdoaWNoIGNhc2UgZXJybm8K KyAqIHdpbGwgYmUgc2V0IGFwcHJvcHJpYXRlbHkuCisgKi8KK2ludCB4ZW5ldnRjaG5fdW5tYXNr KHhlbmV2dGNobl9oYW5kbGUgKnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KTsKKworI2VuZGlmCisK Ky8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJC U0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFi cy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGVuZXZ0Y2hu L2xpYnhlbmV2dGNobi5tYXAgYi90b29scy9saWJ4ZW5ldnRjaG4vbGlieGVuZXZ0Y2huLm1hcApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDM3OTQwCi0tLSAvZGV2L251bGwK KysrIGIvdG9vbHMvbGlieGVuZXZ0Y2huL2xpYnhlbmV2dGNobi5tYXAKQEAgLTAsMCArMSwxNCBA QAorVkVSU18xLjAgeworCWdsb2JhbDoKKwkJeGVuZXZ0Y2huX2ZkOworCQl4ZW5ldnRjaG5fYmlu ZF91bmJvdW5kX3BvcnQ7CisJCXhlbmV2dGNobl91bmJpbmQ7CisJCXhlbmV2dGNobl91bm1hc2s7 CisJCXhlbmV2dGNobl9ub3RpZnk7CisJCXhlbmV2dGNobl9iaW5kX2ludGVyZG9tYWluOworCQl4 ZW5ldnRjaG5fYmluZF92aXJxOworCQl4ZW5ldnRjaG5fb3BlbjsKKwkJeGVuZXZ0Y2huX2Nsb3Nl OworCQl4ZW5ldnRjaG5fcGVuZGluZzsKKwlsb2NhbDogKjsgLyogRG8gbm90IGV4cG9zZSBhbnl0 aGluZyBieSBkZWZhdWx0ICovCit9OwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGVuZXZ0Y2huL2xp bnV4LmMgYi90b29scy9saWJ4ZW5ldnRjaG4vbGludXguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi4xODUyNDRjCi0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvbGlieGVuZXZ0 Y2huL2xpbnV4LmMKQEAgLTAsMCArMSwxMzMgQEAKKy8qCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOworICogdmVy c2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CisgKgorICogU3BsaXQgb3V0IGZyb20geGNfbGludXNfb3NkZXAuYzoKKyAqCisgKiBDb3B5cmln aHQgMjAwNiBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICov CisKKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8dW5p c3RkLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisKKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKwor I2luY2x1ZGUgPHhlbi9zeXMvZXZ0Y2huLmg+CisKKyNpbmNsdWRlICJwcml2YXRlLmgiCisKK2lu dCBvc2RlcF9ldnRjaG5fb3Blbih4ZW5ldnRjaG5faGFuZGxlICp4Y2UpCit7CisgICAgaW50IGZk ID0gb3BlbigiL2Rldi94ZW4vZXZ0Y2huIiwgT19SRFdSKTsKKyAgICBpZiAoIGZkID09IC0xICkK KyAgICAgICAgcmV0dXJuIC0xOworICAgIHhjZS0+ZmQgPSBmZDsKKyAgICByZXR1cm4gMDsKK30K KworaW50IG9zZGVwX2V2dGNobl9jbG9zZSh4ZW5ldnRjaG5faGFuZGxlICp4Y2UpCit7CisgICAg aWYgKCB4Y2UtPmZkID09IC0xICkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gY2xv c2UoeGNlLT5mZCk7Cit9CisKK2ludCB4ZW5ldnRjaG5fZmQoeGVuZXZ0Y2huX2hhbmRsZSAqeGNl KQoreworICAgIHJldHVybiB4Y2UtPmZkOworfQorCitpbnQgeGVuZXZ0Y2huX25vdGlmeSh4ZW5l dnRjaG5faGFuZGxlICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCkKK3sKKyAgICBpbnQgZmQgPSB4 Y2UtPmZkOworICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fbm90aWZ5IG5vdGlmeTsKKworICAgIG5v dGlmeS5wb3J0ID0gcG9ydDsKKworICAgIHJldHVybiBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX05P VElGWSwgJm5vdGlmeSk7Cit9CisKK2V2dGNobl9wb3J0X29yX2Vycm9yX3QgeGVuZXZ0Y2huX2Jp bmRfdW5ib3VuZF9wb3J0KHhlbmV2dGNobl9oYW5kbGUgKnhjZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkb21pZCkKK3sKKyAgICBpbnQg ZmQgPSB4Y2UtPmZkOworICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fYmluZF91bmJvdW5kX3BvcnQg YmluZDsKKworICAgIGJpbmQucmVtb3RlX2RvbWFpbiA9IGRvbWlkOworCisgICAgcmV0dXJuIGlv Y3RsKGZkLCBJT0NUTF9FVlRDSE5fQklORF9VTkJPVU5EX1BPUlQsICZiaW5kKTsKK30KKworZXZ0 Y2huX3BvcnRfb3JfZXJyb3JfdCB4ZW5ldnRjaG5fYmluZF9pbnRlcmRvbWFpbih4ZW5ldnRjaG5f aGFuZGxlICp4Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGludCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZXZ0Y2huX3BvcnRfdCByZW1vdGVfcG9ydCkKK3sKKyAgICBpbnQgZmQgPSB4 Y2UtPmZkOworICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fYmluZF9pbnRlcmRvbWFpbiBiaW5kOwor CisgICAgYmluZC5yZW1vdGVfZG9tYWluID0gZG9taWQ7CisgICAgYmluZC5yZW1vdGVfcG9ydCA9 IHJlbW90ZV9wb3J0OworCisgICAgcmV0dXJuIGlvY3RsKGZkLCBJT0NUTF9FVlRDSE5fQklORF9J TlRFUkRPTUFJTiwgJmJpbmQpOworfQorCitldnRjaG5fcG9ydF9vcl9lcnJvcl90IHhlbmV2dGNo bl9iaW5kX3ZpcnEoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2aXJxKQoreworICAgIGludCBmZCA9 IHhjZS0+ZmQ7CisgICAgc3RydWN0IGlvY3RsX2V2dGNobl9iaW5kX3ZpcnEgYmluZDsKKworICAg IGJpbmQudmlycSA9IHZpcnE7CisKKyAgICByZXR1cm4gaW9jdGwoZmQsIElPQ1RMX0VWVENITl9C SU5EX1ZJUlEsICZiaW5kKTsKK30KKworaW50IHhlbmV2dGNobl91bmJpbmQoeGVuZXZ0Y2huX2hh bmRsZSAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQpCit7CisgICAgaW50IGZkID0geGNlLT5mZDsK KyAgICBzdHJ1Y3QgaW9jdGxfZXZ0Y2huX3VuYmluZCB1bmJpbmQ7CisKKyAgICB1bmJpbmQucG9y dCA9IHBvcnQ7CisKKyAgICByZXR1cm4gaW9jdGwoZmQsIElPQ1RMX0VWVENITl9VTkJJTkQsICZ1 bmJpbmQpOworfQorCitldnRjaG5fcG9ydF9vcl9lcnJvcl90IHhlbmV2dGNobl9wZW5kaW5nKHhl bmV2dGNobl9oYW5kbGUgKnhjZSkKK3sKKyAgICBpbnQgZmQgPSB4Y2UtPmZkOworICAgIGV2dGNo bl9wb3J0X3QgcG9ydDsKKworICAgIGlmICggcmVhZChmZCwgJnBvcnQsIHNpemVvZihwb3J0KSkg IT0gc2l6ZW9mKHBvcnQpICkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0dXJuIHBvcnQ7 Cit9CisKK2ludCB4ZW5ldnRjaG5fdW5tYXNrKHhlbmV2dGNobl9oYW5kbGUgKnhjZSwgZXZ0Y2hu X3BvcnRfdCBwb3J0KQoreworICAgIGludCBmZCA9IHhjZS0+ZmQ7CisKKyAgICBpZiAoIHdyaXRl KGZkLCAmcG9ydCwgc2l6ZW9mKHBvcnQpKSAhPSBzaXplb2YocG9ydCkgKQorICAgICAgICByZXR1 cm4gLTE7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBt b2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICog dGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZm IC0tZ2l0IGEvdG9vbHMvbGlieGVuZXZ0Y2huL21pbmlvcy5jIGIvdG9vbHMvbGlieGVuZXZ0Y2hu L21pbmlvcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0MDgxODIKLS0t IC9kZXYvbnVsbAorKysgYi90b29scy9saWJ4ZW5ldnRjaG4vbWluaW9zLmMKQEAgLTAsMCArMSwy NjYgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBDb3B5cmlnaHQgMjAwNy0yMDA4 IFNhbXVlbCBUaGliYXVsdCA8c2FtdWVsLnRoaWJhdWx0QGV1LmNpdHJpeC5jb20+LgorICogQWxs IHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMuCisg KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl ciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsKKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLgorICoKKyAq IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFNwbGl0IG9mZiBmcm9tIHhjX21pbmlv cy5jCisgKi8KKworI2luY2x1ZGUgInhlbi1leHRlcm5hbC9ic2Qtc3lzLXF1ZXVlLmgiCisjaW5j bHVkZSA8bWluaS1vcy90eXBlcy5oPgorI2luY2x1ZGUgPG1pbmktb3Mvb3MuaD4KKyNpbmNsdWRl IDxtaW5pLW9zL2xpYi5oPgorI2luY2x1ZGUgPG1pbmktb3MvZXZlbnRzLmg+CisjaW5jbHVkZSA8 bWluaS1vcy93YWl0Lmg+CisKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisKKyNpbmNsdWRlIDxh c3NlcnQuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVk ZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgor I2luY2x1ZGUgPG1hbGxvYy5oPgorCisjaW5jbHVkZSAicHJpdmF0ZS5oIgorCitleHRlcm4gdm9p ZCBtaW5pb3NfZXZ0Y2huX2Nsb3NlX2ZkKGludCBmZCk7CisKK2V4dGVybiBzdHJ1Y3Qgd2FpdF9x dWV1ZV9oZWFkIGV2ZW50X3F1ZXVlOworCisvL3ZvaWQgbWluaW9zX2V2dGNobl9jbG9zZV9mZChp bnQgZmQpOworCisvKiBYWFggTm90ZTogVGhpcyBpcyBub3QgdGhyZWFkc2FmZSAqLworc3RhdGlj IHN0cnVjdCBldnRjaG5fcG9ydF9pbmZvKiBwb3J0X2FsbG9jKGludCBmZCkgeworICAgIHN0cnVj dCBldnRjaG5fcG9ydF9pbmZvICpwb3J0X2luZm87CisgICAgcG9ydF9pbmZvID0gbWFsbG9jKHNp emVvZihzdHJ1Y3QgZXZ0Y2huX3BvcnRfaW5mbykpOworICAgIGlmIChwb3J0X2luZm8gPT0gTlVM TCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcG9ydF9pbmZvLT5wZW5kaW5nID0gMDsKKyAg ICBwb3J0X2luZm8tPnBvcnQgPSAtMTsKKyAgICBwb3J0X2luZm8tPmJvdW5kID0gMDsKKworICAg IExJU1RfSU5TRVJUX0hFQUQoJmZpbGVzW2ZkXS5ldnRjaG4ucG9ydHMsIHBvcnRfaW5mbywgbGlz dCk7CisgICAgcmV0dXJuIHBvcnRfaW5mbzsKK30KKworc3RhdGljIHZvaWQgcG9ydF9kZWFsbG9j KHN0cnVjdCBldnRjaG5fcG9ydF9pbmZvICpwb3J0X2luZm8pIHsKKyAgICBpZiAocG9ydF9pbmZv LT5ib3VuZCkKKyAgICAgICAgdW5iaW5kX2V2dGNobihwb3J0X2luZm8tPnBvcnQpOworICAgIExJ U1RfUkVNT1ZFKHBvcnRfaW5mbywgbGlzdCk7CisgICAgZnJlZShwb3J0X2luZm8pOworfQorCitp bnQgb3NkZXBfZXZ0Y2huX29wZW4oeGVuZXZ0Y2huX2hhbmRsZSAqeGNlKQoreworICAgIGludCBm ZCA9IGFsbG9jX2ZkKEZUWVBFX0VWVENITik7CisgICAgaWYgKCBmZCA9PSAtMSApCisgICAgICAg IHJldHVybiAtMTsKKyAgICBMSVNUX0lOSVQoJmZpbGVzW2ZkXS5ldnRjaG4ucG9ydHMpOworICAg IHhjZS0+ZmQgPSBmZDsKKyAgICBwcmludGYoImV2dGNobl9vcGVuKCkgLT4gJWRcbiIsIGZkKTsK KyAgICByZXR1cm4gMDsKK30KKworaW50IG9zZGVwX2V2dGNobl9jbG9zZSh4ZW5ldnRjaG5faGFu ZGxlICp4Y2UpCit7CisgICAgaWYgKCB4Y2UtPmZkID09IC0xICkKKyAgICAgICAgcmV0dXJuIDA7 CisKKyAgICByZXR1cm4gY2xvc2UoeGNlLT5mZCk7Cit9CisKK3ZvaWQgbWluaW9zX2V2dGNobl9j bG9zZV9mZChpbnQgZmQpCit7CisgICAgc3RydWN0IGV2dGNobl9wb3J0X2luZm8gKnBvcnRfaW5m bywgKnRtcDsKKyAgICBMSVNUX0ZPUkVBQ0hfU0FGRShwb3J0X2luZm8sICZmaWxlc1tmZF0uZXZ0 Y2huLnBvcnRzLCBsaXN0LCB0bXApCisgICAgICAgIHBvcnRfZGVhbGxvYyhwb3J0X2luZm8pOwor CisgICAgZmlsZXNbZmRdLnR5cGUgPSBGVFlQRV9OT05FOworfQorCitpbnQgeGVuZXZ0Y2huX2Zk KHhlbmV2dGNobl9oYW5kbGUgKnhjZSkKK3sKKyAgICByZXR1cm4geGNlLT5mZDsKK30KKworaW50 IHhlbmV2dGNobl9ub3RpZnkoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLCBldnRjaG5fcG9ydF90IHBv cnQpCit7CisgICAgaW50IHJldDsKKworICAgIHJldCA9IG5vdGlmeV9yZW1vdGVfdmlhX2V2dGNo bihwb3J0KTsKKworICAgIGlmIChyZXQgPCAwKSB7CisJZXJybm8gPSAtcmV0OworCXJldCA9IC0x OworICAgIH0KKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBldnRjaG5faGFuZGxl cihldnRjaG5fcG9ydF90IHBvcnQsIHN0cnVjdCBwdF9yZWdzICpyZWdzLCB2b2lkICpkYXRhKQor eworICAgIGludCBmZCA9IChpbnQpKGludHB0cl90KWRhdGE7CisgICAgc3RydWN0IGV2dGNobl9w b3J0X2luZm8gKnBvcnRfaW5mbzsKKyAgICBhc3NlcnQoZmlsZXNbZmRdLnR5cGUgPT0gRlRZUEVf RVZUQ0hOKTsKKyAgICBtYXNrX2V2dGNobihwb3J0KTsKKyAgICBMSVNUX0ZPUkVBQ0gocG9ydF9p bmZvLCAmZmlsZXNbZmRdLmV2dGNobi5wb3J0cywgbGlzdCkgeworICAgICAgICBpZiAocG9ydF9p bmZvLT5wb3J0ID09IHBvcnQpCisgICAgICAgICAgICBnb3RvIGZvdW5kOworICAgIH0KKyAgICBw cmludGsoIlVua25vd24gcG9ydCBmb3IgaGFuZGxlICVkXG4iLCBmZCk7CisgICAgcmV0dXJuOwor CisgZm91bmQ6CisgICAgcG9ydF9pbmZvLT5wZW5kaW5nID0gMTsKKyAgICBmaWxlc1tmZF0ucmVh ZCA9IDE7CisgICAgd2FrZV91cCgmZXZlbnRfcXVldWUpOworfQorCitldnRjaG5fcG9ydF9vcl9l cnJvcl90IHhlbmV2dGNobl9iaW5kX3VuYm91bmRfcG9ydCh4ZW5ldnRjaG5faGFuZGxlICp4Y2Us IGludCBkb21pZCkKK3sKKyAgICBpbnQgZmQgPSB4Y2UtPmZkOworICAgIHN0cnVjdCBldnRjaG5f cG9ydF9pbmZvICpwb3J0X2luZm87CisgICAgaW50IHJldDsKKyAgICBldnRjaG5fcG9ydF90IHBv cnQ7CisKKyAgICBhc3NlcnQoZ2V0X2N1cnJlbnQoKSA9PSBtYWluX3RocmVhZCk7CisgICAgcG9y dF9pbmZvID0gcG9ydF9hbGxvYyhmZCk7CisgICAgaWYgKHBvcnRfaW5mbyA9PSBOVUxMKQorCXJl dHVybiAtMTsKKworICAgIHByaW50ZigieGVuZXZ0Y2huX2JpbmRfdW5ib3VuZF9wb3J0KCVkKSIs IGRvbWlkKTsKKyAgICByZXQgPSBldnRjaG5fYWxsb2NfdW5ib3VuZChkb21pZCwgZXZ0Y2huX2hh bmRsZXIsICh2b2lkKikoaW50cHRyX3QpZmQsICZwb3J0KTsKKyAgICBwcmludGYoIiA9ICVkXG4i LCByZXQpOworCisgICAgaWYgKHJldCA8IDApIHsKKwlwb3J0X2RlYWxsb2MocG9ydF9pbmZvKTsK KwllcnJubyA9IC1yZXQ7CisJcmV0dXJuIC0xOworICAgIH0KKyAgICBwb3J0X2luZm8tPmJvdW5k ID0gMTsKKyAgICBwb3J0X2luZm8tPnBvcnQgPSBwb3J0OworICAgIHVubWFza19ldnRjaG4ocG9y dCk7CisgICAgcmV0dXJuIHBvcnQ7Cit9CisKK2V2dGNobl9wb3J0X29yX2Vycm9yX3QgeGVuZXZ0 Y2huX2JpbmRfaW50ZXJkb21haW4oeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLCBpbnQgZG9taWQsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2dGNobl9w b3J0X3QgcmVtb3RlX3BvcnQpCit7CisgICAgaW50IGZkID0geGNlLT5mZDsKKyAgICBzdHJ1Y3Qg ZXZ0Y2huX3BvcnRfaW5mbyAqcG9ydF9pbmZvOworICAgIGV2dGNobl9wb3J0X3QgbG9jYWxfcG9y dDsKKyAgICBpbnQgcmV0OworCisgICAgYXNzZXJ0KGdldF9jdXJyZW50KCkgPT0gbWFpbl90aHJl YWQpOworICAgIHBvcnRfaW5mbyA9IHBvcnRfYWxsb2MoZmQpOworICAgIGlmIChwb3J0X2luZm8g PT0gTlVMTCkKKwlyZXR1cm4gLTE7CisKKyAgICBwcmludGYoInhlbmV2dGNobl9iaW5kX2ludGVy ZG9tYWluKCVkLCAlIlBSSWQzMiIpIiwgZG9taWQsIHJlbW90ZV9wb3J0KTsKKyAgICByZXQgPSBl dnRjaG5fYmluZF9pbnRlcmRvbWFpbihkb21pZCwgcmVtb3RlX3BvcnQsIGV2dGNobl9oYW5kbGVy LCAodm9pZCopKGludHB0cl90KWZkLCAmbG9jYWxfcG9ydCk7CisgICAgcHJpbnRmKCIgPSAlZFxu IiwgcmV0KTsKKworICAgIGlmIChyZXQgPCAwKSB7CisJcG9ydF9kZWFsbG9jKHBvcnRfaW5mbyk7 CisJZXJybm8gPSAtcmV0OworCXJldHVybiAtMTsKKyAgICB9CisgICAgcG9ydF9pbmZvLT5ib3Vu ZCA9IDE7CisgICAgcG9ydF9pbmZvLT5wb3J0ID0gbG9jYWxfcG9ydDsKKyAgICB1bm1hc2tfZXZ0 Y2huKGxvY2FsX3BvcnQpOworICAgIHJldHVybiBsb2NhbF9wb3J0OworfQorCitpbnQgeGVuZXZ0 Y2huX3VuYmluZCh4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCkKK3sK KyAgICBpbnQgZmQgPSB4Y2UtPmZkOworICAgIHN0cnVjdCBldnRjaG5fcG9ydF9pbmZvICpwb3J0 X2luZm87CisKKyAgICBMSVNUX0ZPUkVBQ0gocG9ydF9pbmZvLCAmZmlsZXNbZmRdLmV2dGNobi5w b3J0cywgbGlzdCkgeworICAgICAgICBpZiAocG9ydF9pbmZvLT5wb3J0ID09IHBvcnQpIHsKKyAg ICAgICAgICAgIHBvcnRfZGVhbGxvYyhwb3J0X2luZm8pOworICAgICAgICAgICAgcmV0dXJuIDA7 CisgICAgICAgIH0KKyAgICB9CisgICAgcHJpbnRmKCJXYXJuaW5nOiBjb3VsZG4ndCBmaW5kIHBv cnQgJSJQUklkMzIiIGZvciB4YyBoYW5kbGUgJXhcbiIsIHBvcnQsIGZkKTsKKyAgICBlcnJubyA9 IEVJTlZBTDsKKyAgICByZXR1cm4gLTE7Cit9CisKK2V2dGNobl9wb3J0X29yX2Vycm9yX3QgeGVu ZXZ0Y2huX2JpbmRfdmlycSh4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIHVuc2lnbmVkIGludCB2aXJx KQoreworICAgIGludCBmZCA9IHhjZS0+ZmQ7CisgICAgc3RydWN0IGV2dGNobl9wb3J0X2luZm8g KnBvcnRfaW5mbzsKKyAgICBldnRjaG5fcG9ydF90IHBvcnQ7CisKKyAgICBhc3NlcnQoZ2V0X2N1 cnJlbnQoKSA9PSBtYWluX3RocmVhZCk7CisgICAgcG9ydF9pbmZvID0gcG9ydF9hbGxvYyhmZCk7 CisgICAgaWYgKHBvcnRfaW5mbyA9PSBOVUxMKQorCXJldHVybiAtMTsKKworICAgIHByaW50Zigi eGVuZXZ0Y2huX2JpbmRfdmlycSglZCkiLCB2aXJxKTsKKyAgICBwb3J0ID0gYmluZF92aXJxKHZp cnEsIGV2dGNobl9oYW5kbGVyLCAodm9pZCopKGludHB0cl90KWZkKTsKKworICAgIGlmIChwb3J0 IDwgMCkgeworCXBvcnRfZGVhbGxvYyhwb3J0X2luZm8pOworCWVycm5vID0gLXBvcnQ7CisJcmV0 dXJuIC0xOworICAgIH0KKyAgICBwb3J0X2luZm8tPmJvdW5kID0gMTsKKyAgICBwb3J0X2luZm8t PnBvcnQgPSBwb3J0OworICAgIHVubWFza19ldnRjaG4ocG9ydCk7CisgICAgcmV0dXJuIHBvcnQ7 Cit9CisKK2V2dGNobl9wb3J0X29yX2Vycm9yX3QgeGVuZXZ0Y2huX3BlbmRpbmcoeGVuZXZ0Y2hu X2hhbmRsZSAqeGNlKQoreworICAgIGludCBmZCA9IHhjZS0+ZmQ7CisgICAgc3RydWN0IGV2dGNo bl9wb3J0X2luZm8gKnBvcnRfaW5mbzsKKyAgICB1bnNpZ25lZCBsb25nIGZsYWdzOworICAgIGV2 dGNobl9wb3J0X3QgcmV0ID0gLTE7CisKKyAgICBsb2NhbF9pcnFfc2F2ZShmbGFncyk7CisgICAg ZmlsZXNbZmRdLnJlYWQgPSAwOworCisgICAgTElTVF9GT1JFQUNIKHBvcnRfaW5mbywgJmZpbGVz W2ZkXS5ldnRjaG4ucG9ydHMsIGxpc3QpIHsKKyAgICAgICAgaWYgKHBvcnRfaW5mby0+cG9ydCAh PSAtMSAmJiBwb3J0X2luZm8tPnBlbmRpbmcpIHsKKyAgICAgICAgICAgIGlmIChyZXQgPT0gLTEp IHsKKyAgICAgICAgICAgICAgICByZXQgPSBwb3J0X2luZm8tPnBvcnQ7CisgICAgICAgICAgICAg ICAgcG9ydF9pbmZvLT5wZW5kaW5nID0gMDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg ICAgICAgICAgZmlsZXNbZmRdLnJlYWQgPSAxOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGxvY2FsX2lycV9yZXN0b3JlKGZsYWdz KTsKKyAgICByZXR1cm4gcmV0OworfQorCitpbnQgeGVuZXZ0Y2huX3VubWFzayh4ZW5ldnRjaG5f aGFuZGxlICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCkKK3sKKyAgICB1bm1hc2tfZXZ0Y2huKHBv cnQpOworICAgIHJldHVybiAwOworfQorCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9k ZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRh Yi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAt LWdpdCBhL3Rvb2xzL2xpYnhlbmV2dGNobi9uZXRic2QuYyBiL3Rvb2xzL2xpYnhlbmV2dGNobi9u ZXRic2QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOWYwYjcxCi0tLSAv ZGV2L251bGwKKysrIGIvdG9vbHMvbGlieGVuZXZ0Y2huL25ldGJzZC5jCkBAIC0wLDAgKzEsMTQ0 IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogQ29weXJpZ2h0IDIwMDYgU3VuIE1p Y3Jvc3lzdGVtcywgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBpcyBzdWJqZWN0 IHRvIGxpY2Vuc2UgdGVybXMuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsKKyAqIHZlcnNpb24gMi4xIG9m IHRoZSBMaWNlbnNlLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBM ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFNw bGl0IG91dCBmcm9tIHhjX25ldGJzZC5jCisgKi8KKworI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5j bHVkZSA8dW5pc3RkLmg+CisKKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKworI2luY2x1ZGUgPHhl bi9zeXMvZXZ0Y2huLmg+CisKKyNpbmNsdWRlICJwcml2YXRlLmgiCisKKyNkZWZpbmUgRVZUQ0hO X0RFVl9OQU1FICAiL2Rldi94ZW5ldnQiCisKK2ludCBvc2RlcF9ldnRjaG5fb3Blbih4ZW5ldnRj aG5faGFuZGxlICp4Y2UpCit7CisgICAgaW50IGZkID0gb3BlbihFVlRDSE5fREVWX05BTUUsIE9f Tk9OQkxPQ0t8T19SRFdSKTsKKyAgICBpZiAoIGZkID09IC0xICkKKyAgICAgICAgcmV0dXJuIC0x OworICAgIHhjZS0+ZmQgPSBmZDsKKyAgICByZXR1cm4gMDsKK30KKworaW50IG9zZGVwX2V2dGNo bl9jbG9zZSh4ZW5ldnRjaG5faGFuZGxlICp4Y2UpCit7CisgICAgaWYgKCB4Y2UtPmZkID09IC0x ICkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gY2xvc2UoeGNlLT5mZCk7Cit9CisK K2ludCB4ZW5ldnRjaG5fZmQoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlKQoreworICAgIHJldHVybiB4 Y2UtPmZkOworfQorCitpbnQgeGVuZXZ0Y2huX25vdGlmeSh4ZW5ldnRjaG5faGFuZGxlICp4Y2Us IGV2dGNobl9wb3J0X3QgcG9ydCkKK3sKKyAgICBpbnQgZmQgPSB4Y2UtPmZkOworICAgIHN0cnVj dCBpb2N0bF9ldnRjaG5fbm90aWZ5IG5vdGlmeTsKKworICAgIG5vdGlmeS5wb3J0ID0gcG9ydDsK KworICAgIHJldHVybiBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX05PVElGWSwgJm5vdGlmeSk7Cit9 CisKK2V2dGNobl9wb3J0X29yX2Vycm9yX3QgeGVuZXZ0Y2huX2JpbmRfdW5ib3VuZF9wb3J0KHhl bmV2dGNobl9oYW5kbGUgKiB4Y2UsIGludCBkb21pZCkKK3sKKyAgICBpbnQgZmQgPSB4Y2UtPmZk OworICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fYmluZF91bmJvdW5kX3BvcnQgYmluZDsKKyAgICBp bnQgcmV0OworCisgICAgYmluZC5yZW1vdGVfZG9tYWluID0gZG9taWQ7CisKKyAgICByZXQgPSBp b2N0bChmZCwgSU9DVExfRVZUQ0hOX0JJTkRfVU5CT1VORF9QT1JULCAmYmluZCk7CisgICAgaWYg KHJldCA9PSAwKQorCXJldHVybiBiaW5kLnBvcnQ7CisgICAgZWxzZQorCXJldHVybiAtMTsKK30K KworZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCB4ZW5ldnRjaG5fYmluZF9pbnRlcmRvbWFpbih4ZW5l dnRjaG5faGFuZGxlICp4Y2UsIGludCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZXZ0Y2huX3BvcnRfdCByZW1vdGVfcG9ydCkKK3sKKyAg ICBpbnQgZmQgPSB4Y2UtPmZkOworICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fYmluZF9pbnRlcmRv bWFpbiBiaW5kOworICAgIGludCByZXQ7CisKKyAgICBiaW5kLnJlbW90ZV9kb21haW4gPSBkb21p ZDsKKyAgICBiaW5kLnJlbW90ZV9wb3J0ID0gcmVtb3RlX3BvcnQ7CisKKyAgICByZXQgPSBpb2N0 bChmZCwgSU9DVExfRVZUQ0hOX0JJTkRfSU5URVJET01BSU4sICZiaW5kKTsKKyAgICBpZiAocmV0 ID09IDApCisJcmV0dXJuIGJpbmQucG9ydDsKKyAgICBlbHNlCisJcmV0dXJuIC0xOworfQorCitp bnQgeGVuZXZ0Y2huX3VuYmluZCh4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIGV2dGNobl9wb3J0X3Qg cG9ydCkKK3sKKyAgICBpbnQgZmQgPSB4Y2UtPmZkOworICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5f dW5iaW5kIHVuYmluZDsKKworICAgIHVuYmluZC5wb3J0ID0gcG9ydDsKKworICAgIHJldHVybiBp b2N0bChmZCwgSU9DVExfRVZUQ0hOX1VOQklORCwgJnVuYmluZCk7Cit9CisKK2V2dGNobl9wb3J0 X29yX2Vycm9yX3QgeGVuZXZ0Y2huX2JpbmRfdmlycSh4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIHVu c2lnbmVkIGludCB2aXJxKQoreworICAgIGludCBmZCA9IHhjZS0+ZmQ7CisgICAgc3RydWN0IGlv Y3RsX2V2dGNobl9iaW5kX3ZpcnEgYmluZDsKKyAgICBpbnQgZXJyOworCisgICAgYmluZC52aXJx ID0gdmlycTsKKworICAgIGVyciA9IGlvY3RsKGZkLCBJT0NUTF9FVlRDSE5fQklORF9WSVJRLCAm YmluZCk7CisgICAgaWYgKGVycikKKwlyZXR1cm4gLTE7CisgICAgZWxzZQorCXJldHVybiBiaW5k LnBvcnQ7Cit9CisKK2V2dGNobl9wb3J0X29yX2Vycm9yX3QgeGVuZXZ0Y2huX3BlbmRpbmcoeGVu ZXZ0Y2huX2hhbmRsZSAqeGNlKQoreworICAgIGludCBmZCA9IHhjZS0+ZmQ7CisgICAgZXZ0Y2hu X3BvcnRfdCBwb3J0OworCisgICAgaWYgKCByZWFkX2V4YWN0KGZkLCAoY2hhciAqKSZwb3J0LCBz aXplb2YocG9ydCkpID09IC0xICkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0dXJuIHBv cnQ7Cit9CisKK2ludCB4ZW5ldnRjaG5fdW5tYXNrKHhlbmV2dGNobl9oYW5kbGUgKnhjZSwgZXZ0 Y2huX3BvcnRfdCBwb3J0KQoreworICAgIGludCBmZCA9IHhjZS0+ZmQ7CisgICAgcmV0dXJuIHdy aXRlX2V4YWN0KGZkLCAoY2hhciAqKSZwb3J0LCBzaXplb2YocG9ydCkpOworfQorCisvKgorICog TG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICog Yy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTog bmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhlbmV2dGNobi9wcml2YXRl LmggYi90b29scy9saWJ4ZW5ldnRjaG4vcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmZjZDBlOTYKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy9saWJ4ZW5ldnRj aG4vcHJpdmF0ZS5oCkBAIC0wLDAgKzEsMjUgQEAKKyNpZm5kZWYgWEVORVZUQ0hOX1BSSVZBVEVf SAorI2RlZmluZSBYRU5FVlRDSE5fUFJJVkFURV9ICisKKyNpbmNsdWRlIDx4ZW50b29sbG9nLmg+ CisjaW5jbHVkZSA8eGVuZXZ0Y2huLmg+CisKK3N0cnVjdCB4ZW5ldnRjaG5faGFuZGxlIHsKKyAg ICB4ZW50b29sbG9nX2xvZ2dlciAqbG9nZ2VyLCAqbG9nZ2VyX3RvZnJlZTsKKyAgICBpbnQgZmQ7 Cit9OworCitpbnQgb3NkZXBfZXZ0Y2huX29wZW4oeGVuZXZ0Y2huX2hhbmRsZSAqeGNlKTsKK2lu dCBvc2RlcF9ldnRjaG5fY2xvc2UoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlKTsKKworI2VuZGlmCisK Ky8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJC U0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFi cy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGVuZXZ0Y2hu L3NvbGFyaXMuYyBiL3Rvb2xzL2xpYnhlbmV2dGNobi9zb2xhcmlzLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uMzFkZjJkOQotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL2xp YnhlbmV2dGNobi9zb2xhcmlzLmMKQEAgLTAsMCArMSwxMzIgQEAKKy8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKKyAqCisgKiBDb3B5cmlnaHQgMjAwNiBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuICBBbGwg cmlnaHRzIHJlc2VydmVkLgorICogVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcy4KKyAq CisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOworICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UuCisgKgorICog VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogU3BsaXQgb3V0IGZyb20geGNfc29sYXJp cy5jCisgKi8KKworI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKyNp bmNsdWRlIDxzeXMvaW9jdGwuaD4KKworI2luY2x1ZGUgPHhlbi9zeXMvZXZ0Y2huLmg+CisKKyNp bmNsdWRlICJwcml2YXRlLmgiCisKK2ludCBvc2RlcF9ldnRjaG5fb3Blbih4ZW5ldnRjaG5faGFu ZGxlICp4Y2UpCit7CisgICAgaW50IGZkOworCisgICAgaWYgKCAoZmQgPSBvcGVuKCIvZGV2L3hl bi9ldnRjaG4iLCBPX1JEV1IpKSA9PSAtMSApCisgICAgeworICAgICAgICBQRVJST1IoIkNvdWxk IG5vdCBvcGVuIGV2ZW50IGNoYW5uZWwgaW50ZXJmYWNlIik7CisgICAgICAgIHJldHVybiAtMTsK KyAgICB9CisKKyAgICB4Y2UtPmZkID0gZmQ7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBvc2Rl cF9ldnRjaG5fY2xvc2UoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlKQoreworICAgIGlmICggeGNlLT5m ZCA9PSAtMSApCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGNsb3NlKHhjZS0+ZmQp OworfQorCitpbnQgeGVuZXZ0Y2huX2ZkKHhlbmV2dGNobl9oYW5kbGUgKnhjZSkKK3sKKyAgICBy ZXR1cm4geGNlLT5mZDsKK30KKworaW50IHhlbmV2dGNobl9ub3RpZnkoeGVuZXZ0Y2huX2hhbmRs ZSAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQpCit7CisgICAgaW50IGZkID0geGNlLT5mZDsKKyAg ICBzdHJ1Y3QgaW9jdGxfZXZ0Y2huX25vdGlmeSBub3RpZnk7CisKKyAgICBub3RpZnkucG9ydCA9 IHBvcnQ7CisKKyAgICByZXR1cm4gaW9jdGwoZmQsIElPQ1RMX0VWVENITl9OT1RJRlksICZub3Rp ZnkpOworfQorCitldnRjaG5fcG9ydF9vcl9lcnJvcl90IHhlbmV2dGNobl9iaW5kX3VuYm91bmRf cG9ydCh4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIGludCBkb21pZCkKK3sKKyAgICBpbnQgZmQgPSB4 Y2UtPmZkOworICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fYmluZF91bmJvdW5kX3BvcnQgYmluZDsK KworICAgIGJpbmQucmVtb3RlX2RvbWFpbiA9IGRvbWlkOworCisgICAgcmV0dXJuIGlvY3RsKGZk LCBJT0NUTF9FVlRDSE5fQklORF9VTkJPVU5EX1BPUlQsICZiaW5kKTsKK30KKworZXZ0Y2huX3Bv cnRfb3JfZXJyb3JfdCB4ZW5ldnRjaG5fYmluZF9pbnRlcmRvbWFpbih4ZW5ldnRjaG5faGFuZGxl ICp4Y2UsIGludCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZXZ0Y2huX3BvcnRfdCByZW1vdGVfcG9ydCkKK3sKKyAgICBpbnQgZmQgPSB4 Y2UtPmZkOworICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fYmluZF9pbnRlcmRvbWFpbiBiaW5kOwor CisgICAgYmluZC5yZW1vdGVfZG9tYWluID0gZG9taWQ7CisgICAgYmluZC5yZW1vdGVfcG9ydCA9 IHJlbW90ZV9wb3J0OworCisgICAgcmV0dXJuIGlvY3RsKGZkLCBJT0NUTF9FVlRDSE5fQklORF9J TlRFUkRPTUFJTiwgJmJpbmQpOworfQorCitldnRjaG5fcG9ydF9vcl9lcnJvcl90IHhlbmV2dGNo bl9iaW5kX3ZpcnEoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLCB1bnNpZ25lZCBpbnQgdmlycSkKK3sK KyAgICBpbnQgZmQgPSB4Y2UtPmZkOworICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fYmluZF92aXJx IGJpbmQ7CisKKyAgICBiaW5kLnZpcnEgPSB2aXJxOworCisgICAgcmV0dXJuIGlvY3RsKGZkLCBJ T0NUTF9FVlRDSE5fQklORF9WSVJRLCAmYmluZCk7Cit9CisKK2ludCB4ZW5ldnRjaG5fdW5iaW5k KHhlbmV2dGNobl9oYW5kbGUgKnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KQoreworICAgIGludCBm ZCA9IHhjZS0+ZmQ7CisgICAgc3RydWN0IGlvY3RsX2V2dGNobl91bmJpbmQgdW5iaW5kOworCisg ICAgdW5iaW5kLnBvcnQgPSBwb3J0OworCisgICAgcmV0dXJuIGlvY3RsKGZkLCBJT0NUTF9FVlRD SE5fVU5CSU5ELCAmdW5iaW5kKTsKK30KKworZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCB4ZW5ldnRj aG5fcGVuZGluZyh4ZW5ldnRjaG5faGFuZGxlICp4Y2UpCit7CisgICAgaW50IGZkID0geGNlLT5m ZDsKKyAgICBldnRjaG5fcG9ydF90IHBvcnQ7CisKKyAgICBpZiAoIHJlYWRfZXhhY3QoZmQsIChj aGFyICopJnBvcnQsIHNpemVvZihwb3J0KSkgPT0gLTEgKQorICAgICAgICByZXR1cm4gLTE7CisK KyAgICByZXR1cm4gcG9ydDsKK30KKworaW50IHhlbmV2dGNobl91bm1hc2soeGVuZXZ0Y2huX2hh bmRsZSAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQpCit7CisgICAgaW50IGZkID0geGNlLT5mZDsK KyAgICByZXR1cm4gd3JpdGVfZXhhY3QoZmQsIChjaGFyICopJnBvcnQsIHNpemVvZihwb3J0KSk7 Cit9CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5 bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRl bnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGVu dG9vbGxvZy9pbmNsdWRlL3hlbnRvb2xsb2cuaCBiL3Rvb2xzL2xpYnhlbnRvb2xsb2cvaW5jbHVk ZS94ZW50b29sbG9nLmgKaW5kZXggODVkM2RhOS4uZDA4NDU2YyAxMDA2NDQKLS0tIGEvdG9vbHMv bGlieGVudG9vbGxvZy9pbmNsdWRlL3hlbnRvb2xsb2cuaAorKysgYi90b29scy9saWJ4ZW50b29s bG9nL2luY2x1ZGUveGVudG9vbGxvZy5oCkBAIC0xMzUsMyArMTM1LDEzIEBAIGNvbnN0IGNoYXIg Knh0bF9sZXZlbF90b19zdHJpbmcoeGVudG9vbGxvZ19sZXZlbCk7IC8qIG5ldmVyIGZhaWxzICov CiAKIAogI2VuZGlmIC8qIFhFTlRPT0xMT0dfSCAqLworCisvKgorICogTG9jYWwgdmFyaWFibGVz OgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6 IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6Cisg Ki8KZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhlbnRvb2xsb2cveHRsX2NvcmUuYyBiL3Rvb2xzL2xp YnhlbnRvb2xsb2cveHRsX2NvcmUuYwppbmRleCA3M2FkZDkyLi5lYzJiMTU1IDEwMDY0NAotLS0g YS90b29scy9saWJ4ZW50b29sbG9nL3h0bF9jb3JlLmMKKysrIGIvdG9vbHMvbGlieGVudG9vbGxv Zy94dGxfY29yZS5jCkBAIC04MiwzICs4MiwxMyBAQCB2b2lkIHh0bF9sb2dnZXJfZGVzdHJveShz dHJ1Y3QgeGVudG9vbGxvZ19sb2dnZXIgKmxvZ2dlcikgewogICAgIGlmICghbG9nZ2VyKSByZXR1 cm47CiAgICAgbG9nZ2VyLT5kZXN0cm95KGxvZ2dlcik7CiB9CisKKy8qCisgKiBMb2NhbCB2YXJp YWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9m ZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVu ZDoKKyAqLwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGVudG9vbGxvZy94dGxfbG9nZ2VyX3N0ZGlv LmMgYi90b29scy9saWJ4ZW50b29sbG9nL3h0bF9sb2dnZXJfc3RkaW8uYwppbmRleCBiMjhlZjcz Li4xNTE4MTc2IDEwMDY0NAotLS0gYS90b29scy9saWJ4ZW50b29sbG9nL3h0bF9sb2dnZXJfc3Rk aW8uYworKysgYi90b29scy9saWJ4ZW50b29sbG9nL3h0bF9sb2dnZXJfc3RkaW8uYwpAQCAtMTkx LDMgKzE5MSwxMyBAQCB4ZW50b29sbG9nX2xvZ2dlcl9zdGRpb3N0cmVhbSAqeHRsX2NyZWF0ZWxv Z2dlcl9zdGRpb3N0cmVhbQogCiAgICAgcmV0dXJuIFhUTF9ORVdfTE9HR0VSKHN0ZGlvc3RyZWFt LCBuZXdsb2dnZXIpOwogfQorCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQwor ICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0 aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBh L3Rvb2xzL2xpYnhsL01ha2VmaWxlIGIvdG9vbHMvbGlieGwvTWFrZWZpbGUKaW5kZXggY2RmMzUw YS4uYWM1N2Y2NiAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvTWFrZWZpbGUKKysrIGIvdG9vbHMv bGlieGwvTWFrZWZpbGUKQEAgLTIwLDEyICsyMCwxMyBAQCBMSUJVVUlEX0xJQlMgKz0gLWx1dWlk CiBlbmRpZgogCiBMSUJYTF9MSUJTID0KLUxJQlhMX0xJQlMgPSAkKExETElCU19saWJ4ZW50b29s bG9nKSAkKExETElCU19saWJ4ZW5jdHJsKSAkKExETElCU19saWJ4ZW5ndWVzdCkgJChMRExJQlNf bGlieGVuc3RvcmUpICQoTERMSUJTX2xpYmJsa3RhcGN0bCkgJChQVFlGVU5DU19MSUJTKSAkKExJ QlVVSURfTElCUykKK0xJQlhMX0xJQlMgPSAkKExETElCU19saWJ4ZW50b29sbG9nKSAkKExETElC U19saWJ4ZW5ldnRjaG4pICQoTERMSUJTX2xpYnhlbmN0cmwpICQoTERMSUJTX2xpYnhlbmd1ZXN0 KSAkKExETElCU19saWJ4ZW5zdG9yZSkgJChMRExJQlNfbGliYmxrdGFwY3RsKSAkKFBUWUZVTkNT X0xJQlMpICQoTElCVVVJRF9MSUJTKQogaWZlcSAoJChDT05GSUdfUkVNVVNfTkVUQlVGKSx5KQog TElCWExfTElCUyArPSAkKExJQk5MM19MSUJTKQogZW5kaWYKIAogQ0ZMQUdTX0xJQlhMICs9ICQo Q0ZMQUdTX2xpYnhlbnRvb2xsb2cpCitDRkxBR1NfTElCWEwgKz0gJChDRkxBR1NfbGlieGVuZXZ0 Y2huKQogQ0ZMQUdTX0xJQlhMICs9ICQoQ0ZMQUdTX2xpYnhlbmN0cmwpCiBDRkxBR1NfTElCWEwg Kz0gJChDRkxBR1NfbGlieGVuZ3Vlc3QpCiBDRkxBR1NfTElCWEwgKz0gJChDRkxBR1NfbGlieGVu c3RvcmUpCkBAIC0xNTgsNyArMTU5LDcgQEAgJChYRU5fSU5JVF9ET00wX09CSlMpOiBDRkxBR1Mg Kz0gJChDRkxBR1NfbGlieGVuY3RybCkKICQoWEVOX0lOSVRfRE9NMF9PQkpTKTogQ0ZMQUdTICs9 ICQoQ0ZMQUdTX2xpYnhlbnN0b3JlKQogCiBTQVZFX0hFTFBFUl9PQkpTID0gbGlieGxfc2F2ZV9o ZWxwZXIubyBfbGlieGxfc2F2ZV9tc2dzX2hlbHBlci5vCi0kKFNBVkVfSEVMUEVSX09CSlMpOiBD RkxBR1MgKz0gJChDRkxBR1NfbGlieGVuY3RybCkKKyQoU0FWRV9IRUxQRVJfT0JKUyk6IENGTEFH UyArPSAkKENGTEFHU19saWJ4ZW5jdHJsKSAkKENGTEFHU19saWJ4ZW5ldnRjaG4pCiAKIFBLR19D T05GSUcgPSB4ZW5saWdodC5wYyB4bHV0aWwucGMKIApkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwv bGlieGwuYyBiL3Rvb2xzL2xpYnhsL2xpYnhsLmMKaW5kZXggM2ZlMWI5OS4uNWE1ZDM0NCAxMDA2 NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGwuYworKysgYi90b29scy9saWJ4bC9saWJ4bC5jCkBA IC0xODYsNyArMTg2LDcgQEAgaW50IGxpYnhsX2N0eF9mcmVlKGxpYnhsX2N0eCAqY3R4KQogICAg IGlmIChjdHgtPnhjaCkgeGNfaW50ZXJmYWNlX2Nsb3NlKGN0eC0+eGNoKTsKICAgICBsaWJ4bF92 ZXJzaW9uX2luZm9fZGlzcG9zZSgmY3R4LT52ZXJzaW9uX2luZm8pOwogICAgIGlmIChjdHgtPnhz aCkgeHNfZGFlbW9uX2Nsb3NlKGN0eC0+eHNoKTsKLSAgICBpZiAoY3R4LT54Y2UpIHhjX2V2dGNo bl9jbG9zZShjdHgtPnhjZSk7CisgICAgaWYgKGN0eC0+eGNlKSB4ZW5ldnRjaG5fY2xvc2UoY3R4 LT54Y2UpOwogCiAgICAgbGlieGxfX3BvbGxlcl9wdXQoY3R4LCBjdHgtPnBvbGxlcl9hcHApOwog ICAgIGN0eC0+cG9sbGVyX2FwcCA9IE5VTEw7CmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4 bF9kb20uYyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2RvbS5jCmluZGV4IDgxYWRiM2QuLmRkODMwYWMg MTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsX2RvbS5jCisrKyBiL3Rvb2xzL2xpYnhsL2xp YnhsX2RvbS5jCkBAIC0xNDgwLDkgKzE0ODAsOSBAQCBzdGF0aWMgdm9pZCBkb21haW5fc3VzcGVu ZF9jYWxsYmFja19jb21tb24obGlieGxfX2VnYyAqZWdjLAogICAgIGlmICgoaHZtX3Nfc3RhdGUg PT0gMCkgJiYgKGRzcy0+Z3Vlc3RfZXZ0Y2huLnBvcnQgPj0gMCkpIHsKICAgICAgICAgTE9HKERF QlVHLCAiaXNzdWluZyAlcyBzdXNwZW5kIHJlcXVlc3QgdmlhIGV2ZW50IGNoYW5uZWwiLAogICAg ICAgICAgICAgZHNzLT5odm0gPyAiUFZIVk0iIDogIlBWIik7Ci0gICAgICAgIHJldCA9IHhjX2V2 dGNobl9ub3RpZnkoQ1RYLT54Y2UsIGRzcy0+Z3Vlc3RfZXZ0Y2huLnBvcnQpOworICAgICAgICBy ZXQgPSB4ZW5ldnRjaG5fbm90aWZ5KENUWC0+eGNlLCBkc3MtPmd1ZXN0X2V2dGNobi5wb3J0KTsK ICAgICAgICAgaWYgKHJldCA8IDApIHsKLSAgICAgICAgICAgIExPRyhFUlJPUiwgInhjX2V2dGNo bl9ub3RpZnkgZmFpbGVkIHJldD0lZCIsIHJldCk7CisgICAgICAgICAgICBMT0coRVJST1IsICJ4 ZW5ldnRjaG5fbm90aWZ5IGZhaWxlZCByZXQ9JWQiLCByZXQpOwogICAgICAgICAgICAgcmMgPSBF UlJPUl9GQUlMOwogICAgICAgICAgICAgZ290byBlcnI7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh L3Rvb2xzL2xpYnhsL2xpYnhsX2V2ZW50LmMgYi90b29scy9saWJ4bC9saWJ4bF9ldmVudC5jCmlu ZGV4IDhhY2VjZmEuLjZkYWRlNjkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsX2V2ZW50 LmMKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfZXZlbnQuYwpAQCAtNzQ0LDcgKzc0NCw3IEBAIHN0 YXRpYyB2b2lkIGV2dGNobl9mZF9jYWxsYmFjayhsaWJ4bF9fZWdjICplZ2MsIGxpYnhsX19ldl9m ZCAqZXYsCiAgICAgICAgIC8qIE9LLCB0aGF0J3MgdGhhdCB3b3JrYXJvdW5kIGRvbmUuICBXZSBj YW4gYWN0dWFsbHkgY2hlY2sgZm9yCiAgICAgICAgICAqIHdvcmsgZm9yIHVzIHRvIGRvOiAqLwog Ci0gICAgICAgIHBvcnQgPSB4Y19ldnRjaG5fcGVuZGluZyhDVFgtPnhjZSk7CisgICAgICAgIHBv cnQgPSB4ZW5ldnRjaG5fcGVuZGluZyhDVFgtPnhjZSk7CiAgICAgICAgIGlmIChwb3J0IDwgMCkg ewogICAgICAgICAgICAgaWYgKGVycm5vID09IEVBR0FJTikKICAgICAgICAgICAgICAgICBicmVh azsKQEAgLTc3MCwyMCArNzcwLDIwIEBAIHN0YXRpYyB2b2lkIGV2dGNobl9mZF9jYWxsYmFjayhs aWJ4bF9fZWdjICplZ2MsIGxpYnhsX19ldl9mZCAqZXYsCiB9CiAKIGludCBsaWJ4bF9fY3R4X2V2 dGNobl9pbml0KGxpYnhsX19nYyAqZ2MpIHsKLSAgICB4Y19ldnRjaG4gKnhjZTsKKyAgICB4ZW5l dnRjaG5faGFuZGxlICp4Y2U7CiAgICAgaW50IHJjLCBmZDsKIAogICAgIGlmIChDVFgtPnhjZSkK ICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICB4Y2UgPSB4Y19ldnRjaG5fb3BlbihDVFgtPmxnLCAw KTsKKyAgICB4Y2UgPSB4ZW5ldnRjaG5fb3BlbihDVFgtPmxnLCAwKTsKICAgICBpZiAoIXhjZSkg ewogICAgICAgICBMT0dFKEVSUk9SLCJjYW5ub3Qgb3BlbiBsaWJ4YyBldnRjaG4gaGFuZGxlIik7 CiAgICAgICAgIHJjID0gRVJST1JfRkFJTDsKICAgICAgICAgZ290byBvdXQ7CiAgICAgfQogCi0g ICAgZmQgPSB4Y19ldnRjaG5fZmQoeGNlKTsKKyAgICBmZCA9IHhlbmV2dGNobl9mZCh4Y2UpOwog ICAgIGFzc2VydChmZCA+PSAwKTsKIAogICAgIHJjID0gbGlieGxfZmRfc2V0X25vbmJsb2NrKENU WCwgZmQsIDEpOwpAQCAtNzkzLDcgKzc5Myw3IEBAIGludCBsaWJ4bF9fY3R4X2V2dGNobl9pbml0 KGxpYnhsX19nYyAqZ2MpIHsKICAgICByZXR1cm4gMDsKIAogIG91dDoKLSAgICB4Y19ldnRjaG5f Y2xvc2UoeGNlKTsKKyAgICB4ZW5ldnRjaG5fY2xvc2UoeGNlKTsKICAgICByZXR1cm4gcmM7CiB9 CiAKQEAgLTgxNSwxNCArODE1LDE0IEBAIGludCBsaWJ4bF9fZXZfZXZ0Y2huX3dhaXQobGlieGxf X2djICpnYywgbGlieGxfX2V2X2V2dGNobiAqZXZldikKIAogICAgIGlmICghbGlieGxfX2V2X2Zk X2lzcmVnaXN0ZXJlZCgmQ1RYLT5ldnRjaG5fZWZkKSkgewogICAgICAgICByYyA9IGxpYnhsX19l dl9mZF9yZWdpc3RlcihnYywgJkNUWC0+ZXZ0Y2huX2VmZCwgZXZ0Y2huX2ZkX2NhbGxiYWNrLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4Y19ldnRjaG5fZmQoQ1RYLT54Y2Up LCBQT0xMSU4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ZW5ldnRjaG5f ZmQoQ1RYLT54Y2UpLCBQT0xMSU4pOwogICAgICAgICBpZiAocmMpIGdvdG8gb3V0OwogICAgIH0K IAogICAgIGlmIChldmV2LT53YWl0aW5nKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHIgPSB4 Y19ldnRjaG5fdW5tYXNrKENUWC0+eGNlLCBldmV2LT5wb3J0KTsKKyAgICByID0geGVuZXZ0Y2hu X3VubWFzayhDVFgtPnhjZSwgZXZldi0+cG9ydCk7CiAgICAgaWYgKHIpIHsKICAgICAgICAgTE9H RShFUlJPUiwiY2Fubm90IHVubWFzayBldmVudCBjaGFubmVsICVkIixldmV2LT5wb3J0KTsKICAg ICAgICAgcmMgPSBFUlJPUl9GQUlMOwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfaW50 ZXJuYWwuaCBiL3Rvb2xzL2xpYnhsL2xpYnhsX2ludGVybmFsLmgKaW5kZXggMmI2YjJhMC4uNGI1 OWNhZCAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaAorKysgYi90b29s cy9saWJ4bC9saWJ4bF9pbnRlcm5hbC5oCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSA8c3lz L2ZpbGUuaD4KICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KIAorI2luY2x1ZGUgPHhlbmV2dGNobi5o PgogI2luY2x1ZGUgPHhlbnN0b3JlLmg+CiAjaW5jbHVkZSA8eGVuY3RybC5oPgogI2luY2x1ZGUg PHhlbmd1ZXN0Lmg+CkBAIC00MzQsNyArNDM1LDcgQEAgc3RydWN0IGxpYnhsX19jdHggewogICAg IHVpbnQzMl90IHdhdGNoX2NvdW50ZXI7IC8qIGhlbHBzIGRpc2FtYmlndWF0ZSBzbG90IHJldXNl ICovCiAgICAgbGlieGxfX2V2X2ZkIHdhdGNoX2VmZDsKIAotICAgIHhjX2V2dGNobiAqeGNlOyAv KiB3YWl0aW5nIG11c3QgYmUgZG9uZSBvbmx5IHdpdGggbGlieGxfX2V2X2V2dGNobiogKi8KKyAg ICB4ZW5ldnRjaG5faGFuZGxlICp4Y2U7IC8qIHdhaXRpbmcgbXVzdCBiZSBkb25lIG9ubHkgd2l0 aCBsaWJ4bF9fZXZfZXZ0Y2huKiAqLwogICAgIExJQlhMX0xJU1RfSEVBRCgsIGxpYnhsX19ldl9l dnRjaG4pIGV2dGNobnNfd2FpdGluZzsKICAgICBsaWJ4bF9fZXZfZmQgZXZ0Y2huX2VmZDsKIApA QCAtODk0LDcgKzg5NSw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IGxpYnhsX19ldl94c3dhdGNoX2lz cmVnaXN0ZXJlZChjb25zdCBsaWJ4bF9fZXZfeHN3YXRjaCAqeHcpCiAgKiBXaGVuIHRoZSBldmVu dCBpcyBzaWduYWxlZCB0aGVuIHRoZSBjYWxsYmFjayB3aWxsIGJlIG1hZGUsIG9uY2UuCiAgKiBU aGVuIHlvdSBtdXN0IGNhbGwgbGlieGxfX2V2X2V2dGNobl93YWl0IGFnYWluLCBpZiBkZXNpcmVk LgogICoKLSAqIFlvdSBtdXN0IE5PVCBjYWxsIHhjX2V2dGNobl91bm1hc2suICB3YWl0IHdpbGwg ZG8gdGhhdCBmb3IgeW91LgorICogWW91IG11c3QgTk9UIGNhbGwgeGVuZXZ0Y2huX3VubWFzay4g IHdhaXQgd2lsbCBkbyB0aGF0IGZvciB5b3UuCiAgKgogICogQ2FsbGluZyBsaWJ4bF9fZXZfZXZ0 Y2huX2NhbmNlbCB3aWxsIGFycmFuZ2UgZm9yIGxpYnhsIHRvIGRpc3JlZ2FyZAogICogZnV0dXJl IG9jY3VycmVuY2VzIG9mIGV2ZW50LiAgQm90aCBsaWJ4bF9fZXZfZXZ0Y2huX3dhaXQgYW5kCmRp ZmYgLS1naXQgYS90b29scy9taXNjL01ha2VmaWxlIGIvdG9vbHMvbWlzYy9NYWtlZmlsZQppbmRl eCBjNDQ5MGYzLi5jZjZhNDc1IDEwMDY0NAotLS0gYS90b29scy9taXNjL01ha2VmaWxlCisrKyBi L3Rvb2xzL21pc2MvTWFrZWZpbGUKQEAgLTQsNiArNCw3IEBAIGluY2x1ZGUgJChYRU5fUk9PVCkv dG9vbHMvUnVsZXMubWsKIENGTEFHUyArPSAtV2Vycm9yCiAjIEluY2x1ZGUgY29uZmlndXJlIG91 dHB1dCAoY29uZmlnLmgpCiBDRkxBR1MgKz0gLWluY2x1ZGUgJChYRU5fUk9PVCkvdG9vbHMvY29u ZmlnLmgKK0NGTEFHUyArPSAkKENGTEFHU19saWJ4ZW5ldnRjaG4pCiBDRkxBR1MgKz0gJChDRkxB R1NfbGlieGVuY3RybCkKIENGTEFHUyArPSAkKENGTEFHU194ZW5pbmNsdWRlKQogQ0ZMQUdTICs9 ICQoQ0ZMQUdTX2xpYnhlbnN0b3JlKQpAQCAtODgsMTggKzg5LDE4IEBAIHhlbmxvY2twcm9mOiB4 ZW5sb2NrcHJvZi5vCiAjIHhlbi1ocHRvb2wgaW5jb3JyZWN0bHkgdXNlcyBsaWJ4YyBpbnRlcm5h bHMKIHhlbi1ocHRvb2wubzogQ0ZMQUdTICs9IC1JJChYRU5fUk9PVCkvdG9vbHMvbGlieGMKIHhl bi1ocHRvb2w6IHhlbi1ocHRvb2wubwotCSQoQ0MpICQoTERGTEFHUykgLW8gJEAgJDwgJChMRExJ QlNfbGlieGVuY3RybCkgJChMRExJQlNfbGlieGVuZ3Vlc3QpICQoTERMSUJTX2xpYnhlbnN0b3Jl KSAkKEFQUEVORF9MREZMQUdTKQorCSQoQ0MpICQoTERGTEFHUykgLW8gJEAgJDwgJChMRExJQlNf bGlieGVuZXZ0Y2huKSAkKExETElCU19saWJ4ZW5jdHJsKSAkKExETElCU19saWJ4ZW5ndWVzdCkg JChMRExJQlNfbGlieGVuc3RvcmUpICQoQVBQRU5EX0xERkxBR1MpCiAKICMgeGVuLW1mbmR1bXAg aW5jb3JyZWN0bHkgdXNlcyBsaWJ4YyBpbnRlcm5hbHMKIHhlbi1tZm5kdW1wLm86IENGTEFHUyAr PSAtSSQoWEVOX1JPT1QpL3Rvb2xzL2xpYnhjCiB4ZW4tbWZuZHVtcDogeGVuLW1mbmR1bXAubwot CSQoQ0MpICQoTERGTEFHUykgLW8gJEAgJDwgJChMRExJQlNfbGlieGVuY3RybCkgJChMRExJQlNf bGlieGVuZ3Vlc3QpICQoQVBQRU5EX0xERkxBR1MpCisJJChDQykgJChMREZMQUdTKSAtbyAkQCAk PCAkKExETElCU19saWJ4ZW5ldnRjaG4pICQoTERMSUJTX2xpYnhlbmN0cmwpICQoTERMSUJTX2xp Ynhlbmd1ZXN0KSAkKEFQUEVORF9MREZMQUdTKQogCiB4ZW53YXRjaGRvZ2Q6IHhlbndhdGNoZG9n ZC5vCiAJJChDQykgJChMREZMQUdTKSAtbyAkQCAkPCAkKExETElCU19saWJ4ZW5jdHJsKSAkKEFQ UEVORF9MREZMQUdTKQogCiB4ZW4tbG93bWVtZDogeGVuLWxvd21lbWQubwotCSQoQ0MpICQoTERG TEFHUykgLW8gJEAgJDwgJChMRExJQlNfbGlieGVuY3RybCkgJChMRExJQlNfbGlieGVuc3RvcmUp ICQoQVBQRU5EX0xERkxBR1MpCisJJChDQykgJChMREZMQUdTKSAtbyAkQCAkPCAkKExETElCU19s aWJ4ZW5ldnRjaG4pICQoTERMSUJTX2xpYnhlbmN0cmwpICQoTERMSUJTX2xpYnhlbnN0b3JlKSAk KEFQUEVORF9MREZMQUdTKQogCiBndHJhY2V2aWV3OiBndHJhY2V2aWV3Lm8KIAkkKENDKSAkKExE RkxBR1MpIC1vICRAICQ8ICQoQ1VSU0VTX0xJQlMpICQoVElORk9fTElCUykgJChBUFBFTkRfTERG TEFHUykKZGlmZiAtLWdpdCBhL3Rvb2xzL21pc2MveGVuLWhwdG9vbC5jIGIvdG9vbHMvbWlzYy94 ZW4taHB0b29sLmMKaW5kZXggYzc1NjFhOS4uZWJjYzllOCAxMDA2NDQKLS0tIGEvdG9vbHMvbWlz Yy94ZW4taHB0b29sLmMKKysrIGIvdG9vbHMvbWlzYy94ZW4taHB0b29sLmMKQEAgLTEsMyArMSw0 IEBACisjaW5jbHVkZSA8eGVuZXZ0Y2huLmg+CiAjaW5jbHVkZSA8eGVuY3RybC5oPgogI2luY2x1 ZGUgPHhjX3ByaXZhdGUuaD4KICNpbmNsdWRlIDx4Y19jb3JlLmg+CkBAIC05OCw3ICs5OSw3IEBA IHN0YXRpYyBpbnQgaHBfbWVtX3F1ZXJ5X2Z1bmMoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAg ICByZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50IHN1c3BlbmRfZ3Vlc3QoeGNfaW50ZXJmYWNl ICp4Y2gsIHhjX2V2dGNobiAqeGNlLCBpbnQgZG9taWQsCitzdGF0aWMgaW50IHN1c3BlbmRfZ3Vl c3QoeGNfaW50ZXJmYWNlICp4Y2gsIHhlbmV2dGNobl9oYW5kbGUgKnhjZSwgaW50IGRvbWlkLAog ICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqZXZ0Y2huLCBpbnQgKmxvY2tmZCkKIHsKICAg ICBpbnQgcG9ydCwgcmMsIHN1c3BlbmRfZXZ0Y2huID0gLTE7CkBAIC0xMjMsNyArMTI0LDcgQEAg c3RhdGljIGludCBzdXNwZW5kX2d1ZXN0KHhjX2ludGVyZmFjZSAqeGNoLCB4Y19ldnRjaG4gKnhj ZSwgaW50IGRvbWlkLAogICAgIH0KICAgICAqZXZ0Y2huID0gc3VzcGVuZF9ldnRjaG47CiAKLSAg ICByYyA9IHhjX2V2dGNobl9ub3RpZnkoeGNlLCBzdXNwZW5kX2V2dGNobik7CisgICAgcmMgPSB4 ZW5ldnRjaG5fbm90aWZ5KHhjZSwgc3VzcGVuZF9ldnRjaG4pOwogICAgIGlmIChyYyA8IDApCiAg ICAgewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBub3RpZnkgc3VzcGVuZCBj aGFubmVsOiBlcnJubyAlZFxuIiwgcmMpOwpAQCAtMTk4LDggKzE5OSw4IEBAIHN0YXRpYyBpbnQg aHBfbWVtX29mZmxpbmVfZnVuYyhpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgICAgICAgICAg ICAgIGVsc2UgaWYgKHN0YXR1cyAmIFBHX09GRkxJTkVfT1dORUQpCiAgICAgICAgICAgICAgICAg ewogICAgICAgICAgICAgICAgICAgICBpbnQgcmVzdWx0LCBzdXNwZW5kX2V2dGNobiA9IC0xLCBz dXNwZW5kX2xvY2tmZCA9IC0xOwotICAgICAgICAgICAgICAgICAgICB4Y19ldnRjaG4gKnhjZTsK LSAgICAgICAgICAgICAgICAgICAgeGNlID0geGNfZXZ0Y2huX29wZW4oTlVMTCwgMCk7CisgICAg ICAgICAgICAgICAgICAgIHhlbmV2dGNobl9oYW5kbGUgKnhjZTsKKyAgICAgICAgICAgICAgICAg ICAgeGNlID0geGVuZXZ0Y2huX29wZW4oTlVMTCwgMCk7CiAKICAgICAgICAgICAgICAgICAgICAg aWYgKHhjZSA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICB7CkBAIC0yMTQsNyArMjE1LDcg QEAgc3RhdGljIGludCBocF9tZW1fb2ZmbGluZV9mdW5jKGludCBhcmdjLCBjaGFyICphcmd2W10p CiAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYo c3RkZXJyLCAiRmFpbGVkIHRvIHN1c3BlbmQgZ3Vlc3QgJWQgZm9yIgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiIG1mbiAlbHhcbiIsIGRvbWlkLCBtZm4pOwotICAgICAgICAgICAg ICAgICAgICAgICAgeGNfZXZ0Y2huX2Nsb3NlKHhjZSk7CisgICAgICAgICAgICAgICAgICAgICAg ICB4ZW5ldnRjaG5fY2xvc2UoeGNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAt MTsKICAgICAgICAgICAgICAgICAgICAgfQogCkBAIC0yMzgsNyArMjM5LDcgQEAgc3RhdGljIGlu dCBocF9tZW1fb2ZmbGluZV9mdW5jKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAgICAgICAg ICAgICAgICAgIHhjX2RvbWFpbl9yZXN1bWUoeGNoLCBkb21pZCwgMSk7CiAgICAgICAgICAgICAg ICAgICAgIHhjX3N1c3BlbmRfZXZ0Y2huX3JlbGVhc2UoeGNoLCB4Y2UsIGRvbWlkLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1c3BlbmRfZXZ0Y2huLCAm c3VzcGVuZF9sb2NrZmQpOwotICAgICAgICAgICAgICAgICAgICB4Y19ldnRjaG5fY2xvc2UoeGNl KTsKKyAgICAgICAgICAgICAgICAgICAgeGVuZXZ0Y2huX2Nsb3NlKHhjZSk7CiAgICAgICAgICAg ICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0 IGEvdG9vbHMvbWlzYy94ZW4tbG93bWVtZC5jIGIvdG9vbHMvbWlzYy94ZW4tbG93bWVtZC5jCmlu ZGV4IDgyZmZkNzUuLjMyMDA0MDQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL21pc2MveGVuLWxvd21lbWQu YworKysgYi90b29scy9taXNjL3hlbi1sb3dtZW1kLmMKQEAgLTQsMjIgKzQsMjMgQEAKICAqLwog CiAjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx4ZW5ldnRjaG4uaD4KICNpbmNsdWRlIDx4 ZW5jdHJsLmg+CiAjaW5jbHVkZSA8eGVuc3RvcmUuaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KICNp bmNsdWRlIDxzdHJpbmcuaD4KIAogc3RhdGljIGV2dGNobl9wb3J0X3QgdmlycV9wb3J0ICAgICAg PSAtMTsKLXN0YXRpYyB4Y19ldnRjaG4gKnhjZV9oYW5kbGUgICAgICAgID0gTlVMTDsKK3N0YXRp YyB4ZW5ldnRjaG5faGFuZGxlICp4Y2VfaGFuZGxlID0gTlVMTDsKIHN0YXRpYyB4Y19pbnRlcmZh Y2UgKnhjaCAgICAgICAgICAgID0gTlVMTDsKIHN0YXRpYyBzdHJ1Y3QgeHNfaGFuZGxlICp4c19o YW5kbGUgID0gTlVMTDsKIAogdm9pZCBjbGVhbnVwKHZvaWQpCiB7CiAgICAgaWYgKHZpcnFfcG9y dCA+IC0xKQotICAgICAgICB4Y19ldnRjaG5fdW5iaW5kKHhjZV9oYW5kbGUsIHZpcnFfcG9ydCk7 CisgICAgICAgIHhlbmV2dGNobl91bmJpbmQoeGNlX2hhbmRsZSwgdmlycV9wb3J0KTsKICAgICBp ZiAoeGNlX2hhbmRsZSkKLSAgICAgICAgeGNfZXZ0Y2huX2Nsb3NlKHhjZV9oYW5kbGUpOworICAg ICAgICB4ZW5ldnRjaG5fY2xvc2UoeGNlX2hhbmRsZSk7CiAgICAgaWYgKHhjaCkKICAgICAgICAg eGNfaW50ZXJmYWNlX2Nsb3NlKHhjaCk7CiAgICAgaWYgKHhzX2hhbmRsZSkKQEAgLTk0LDcgKzk1 LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICAgICAgcmV0dXJuIDE7 CiAgICAgfQogCi0JeGNlX2hhbmRsZSA9IHhjX2V2dGNobl9vcGVuKE5VTEwsIDApOworCXhjZV9o YW5kbGUgPSB4ZW5ldnRjaG5fb3BlbihOVUxMLCAwKTsKIAlpZiAoeGNlX2hhbmRsZSA9PSBOVUxM KQogICAgIHsKICAgICAgICAgcGVycm9yKCJGYWlsZWQgdG8gb3BlbiBldnRjaG4gZGV2aWNlIik7 CkBAIC0xMDgsNyArMTA5LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAg ICAgICAgcmV0dXJuIDM7CiAgICAgfQogCi0JaWYgKChyYyA9IHhjX2V2dGNobl9iaW5kX3ZpcnEo eGNlX2hhbmRsZSwgVklSUV9FTk9NRU0pKSA9PSAtMSkKKwlpZiAoKHJjID0geGVuZXZ0Y2huX2Jp bmRfdmlycSh4Y2VfaGFuZGxlLCBWSVJRX0VOT01FTSkpID09IC0xKQogICAgIHsKICAgICAgICAg cGVycm9yKCJGYWlsZWQgdG8gYmluZCB0byBkb21haW4gZXhjZXB0aW9uIHZpcnEgcG9ydCIpOwog ICAgICAgICByZXR1cm4gNDsKQEAgLTEyMCw3ICsxMjEsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywg Y2hhciAqYXJndltdKQogICAgIHsKICAgICAgICAgZXZ0Y2huX3BvcnRfdCBwb3J0OwogCi0gICAg ICAgIGlmICgocG9ydCA9IHhjX2V2dGNobl9wZW5kaW5nKHhjZV9oYW5kbGUpKSA9PSAtMSkKKyAg ICAgICAgaWYgKChwb3J0ID0geGVuZXZ0Y2huX3BlbmRpbmcoeGNlX2hhbmRsZSkpID09IC0xKQog ICAgICAgICB7CiAgICAgICAgICAgICBwZXJyb3IoIkZhaWxlZCB0byBsaXN0ZW4gZm9yIHBlbmRp bmcgZXZlbnQgY2hhbm5lbCIpOwogICAgICAgICAgICAgcmV0dXJuIDU7CkBAIC0xMzQsNyArMTM1 LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICAgICAgICAgIHJldHVy biA2OwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHhjX2V2dGNobl91bm1hc2soeGNlX2hhbmRs ZSwgcG9ydCkgPT0gLTEpCisgICAgICAgIGlmICh4ZW5ldnRjaG5fdW5tYXNrKHhjZV9oYW5kbGUs IHBvcnQpID09IC0xKQogICAgICAgICB7CiAgICAgICAgICAgICBwZXJyb3IoIkZhaWxlZCB0byB1 bm1hc2sgcG9ydCIpOwogICAgICAgICAgICAgcmV0dXJuIDc7CmRpZmYgLS1naXQgYS90b29scy9v Y2FtbC9saWJzL2V2ZW50Y2huL01ha2VmaWxlIGIvdG9vbHMvb2NhbWwvbGlicy9ldmVudGNobi9N YWtlZmlsZQppbmRleCAyZDhkNjE4Li4xNTRlZmQ0IDEwMDY0NAotLS0gYS90b29scy9vY2FtbC9s aWJzL2V2ZW50Y2huL01ha2VmaWxlCisrKyBiL3Rvb2xzL29jYW1sL2xpYnMvZXZlbnRjaG4vTWFr ZWZpbGUKQEAgLTIsMTMgKzIsMTMgQEAgVE9QTEVWRUw9JChDVVJESVIpLy4uLy4uCiBYRU5fUk9P VD0kKFRPUExFVkVMKS8uLi8uLgogaW5jbHVkZSAkKFRPUExFVkVMKS9jb21tb24ubWFrZQogCi1D RkxBR1MgKz0gJChDRkxBR1NfbGlieGVuY3RybCkgJChDRkxBR1NfeGVuaW5jbHVkZSkKK0NGTEFH UyArPSAkKENGTEFHU19saWJ4ZW5ldnRjaG4pICQoQ0ZMQUdTX3hlbmluY2x1ZGUpCiAKIE9CSlMg PSB4ZW5ldmVudGNobgogSU5URiA9ICQoZm9yZWFjaCBvYmosICQoT0JKUyksJChvYmopLmNtaSkK IExJQlMgPSB4ZW5ldmVudGNobi5jbWEgeGVuZXZlbnRjaG4uY214YQogCi1MSUJTX3hlbmV2ZW50 Y2huID0gJChMRExJQlNfbGlieGVuY3RybCkKK0xJQlNfeGVuZXZlbnRjaG4gPSAkKExETElCU19s aWJ4ZW5ldnRjaG4pCiAKIGFsbDogJChJTlRGKSAkKExJQlMpICQoUFJPR1JBTVMpCiAKZGlmZiAt LWdpdCBhL3Rvb2xzL29jYW1sL2xpYnMvZXZlbnRjaG4veGVuZXZlbnRjaG5fc3R1YnMuYyBiL3Rv b2xzL29jYW1sL2xpYnMvZXZlbnRjaG4veGVuZXZlbnRjaG5fc3R1YnMuYwppbmRleCA1OTM5ZTdj Li5jMmQ0NzM3IDEwMDY0NAotLS0gYS90b29scy9vY2FtbC9saWJzL2V2ZW50Y2huL3hlbmV2ZW50 Y2huX3N0dWJzLmMKKysrIGIvdG9vbHMvb2NhbWwvbGlicy9ldmVudGNobi94ZW5ldmVudGNobl9z dHVicy5jCkBAIC0yNCw3ICsyNCw3IEBACiAjaW5jbHVkZSA8eGVuL3N5c2N0bC5oPgogI2luY2x1 ZGUgPHhlbi94ZW4uaD4KICNpbmNsdWRlIDx4ZW4vc3lzL2V2dGNobi5oPgotI2luY2x1ZGUgPHhl bmN0cmwuaD4KKyNpbmNsdWRlIDx4ZW5ldnRjaG4uaD4KIAogI2RlZmluZSBDQU1MX05BTUVfU1BB Q0UKICNpbmNsdWRlIDxjYW1sL21sdmFsdWVzLmg+CkBAIC0zNCwxNCArMzQsMTQgQEAKICNpbmNs dWRlIDxjYW1sL2NhbGxiYWNrLmg+CiAjaW5jbHVkZSA8Y2FtbC9mYWlsLmg+CiAKLSNkZWZpbmUg X0goX19oKSAoKHhjX2V2dGNobiAqKShfX2gpKQorI2RlZmluZSBfSChfX2gpICgoeGVuZXZ0Y2hu X2hhbmRsZSAqKShfX2gpKQogCiBDQU1McHJpbSB2YWx1ZSBzdHViX2V2ZW50Y2huX2luaXQodm9p ZCkKIHsKIAlDQU1McGFyYW0wKCk7CiAJQ0FNTGxvY2FsMShyZXN1bHQpOwogCi0JeGNfZXZ0Y2hu ICp4Y2UgPSB4Y19ldnRjaG5fb3BlbihOVUxMLCBYQ19PUEVORkxBR19OT05fUkVFTlRSQU5UKTsK Kwl4ZW5ldnRjaG5faGFuZGxlICp4Y2UgPSB4ZW5ldnRjaG5fb3BlbihOVUxMLCAwKTsKIAlpZiAo eGNlID09IE5VTEwpCiAJCWNhbWxfZmFpbHdpdGgoIm9wZW4gZmFpbGVkIik7CiAKQEAgLTU1LDcg KzU1LDcgQEAgQ0FNTHByaW0gdmFsdWUgc3R1Yl9ldmVudGNobl9mZCh2YWx1ZSB4Y2UpCiAJQ0FN TGxvY2FsMShyZXN1bHQpOwogCWludCBmZDsKIAotCWZkID0geGNfZXZ0Y2huX2ZkKF9IKHhjZSkp OworCWZkID0geGVuZXZ0Y2huX2ZkKF9IKHhjZSkpOwogCWlmIChmZCA9PSAtMSkKIAkJY2FtbF9m YWlsd2l0aCgiZXZ0Y2huIGZkIGZhaWxlZCIpOwogCkBAIC02OSw3ICs2OSw3IEBAIENBTUxwcmlt IHZhbHVlIHN0dWJfZXZlbnRjaG5fbm90aWZ5KHZhbHVlIHhjZSwgdmFsdWUgcG9ydCkKIAlDQU1M cGFyYW0yKHhjZSwgcG9ydCk7CiAJaW50IHJjOwogCi0JcmMgPSB4Y19ldnRjaG5fbm90aWZ5KF9I KHhjZSksIEludF92YWwocG9ydCkpOworCXJjID0geGVuZXZ0Y2huX25vdGlmeShfSCh4Y2UpLCBJ bnRfdmFsKHBvcnQpKTsKIAlpZiAocmMgPT0gLTEpCiAJCWNhbWxfZmFpbHdpdGgoImV2dGNobiBu b3RpZnkgZmFpbGVkIik7CiAKQEAgLTgzLDcgKzgzLDcgQEAgQ0FNTHByaW0gdmFsdWUgc3R1Yl9l dmVudGNobl9iaW5kX2ludGVyZG9tYWluKHZhbHVlIHhjZSwgdmFsdWUgZG9taWQsCiAJQ0FNTGxv Y2FsMShwb3J0KTsKIAlldnRjaG5fcG9ydF9vcl9lcnJvcl90IHJjOwogCi0JcmMgPSB4Y19ldnRj aG5fYmluZF9pbnRlcmRvbWFpbihfSCh4Y2UpLCBJbnRfdmFsKGRvbWlkKSwgSW50X3ZhbChyZW1v dGVfcG9ydCkpOworCXJjID0geGVuZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4oX0goeGNlKSwgSW50 X3ZhbChkb21pZCksIEludF92YWwocmVtb3RlX3BvcnQpKTsKIAlpZiAocmMgPT0gLTEpCiAJCWNh bWxfZmFpbHdpdGgoImV2dGNobiBiaW5kX2ludGVyZG9tYWluIGZhaWxlZCIpOwogCXBvcnQgPSBW YWxfaW50KHJjKTsKQEAgLTk3LDcgKzk3LDcgQEAgQ0FNTHByaW0gdmFsdWUgc3R1Yl9ldmVudGNo bl9iaW5kX2RvbV9leGNfdmlycSh2YWx1ZSB4Y2UpCiAJQ0FNTGxvY2FsMShwb3J0KTsKIAlldnRj aG5fcG9ydF9vcl9lcnJvcl90IHJjOwogCi0JcmMgPSB4Y19ldnRjaG5fYmluZF92aXJxKF9IKHhj ZSksIFZJUlFfRE9NX0VYQyk7CisJcmMgPSB4ZW5ldnRjaG5fYmluZF92aXJxKF9IKHhjZSksIFZJ UlFfRE9NX0VYQyk7CiAJaWYgKHJjID09IC0xKQogCQljYW1sX2ZhaWx3aXRoKCJldnRjaG4gYmlu ZF9kb21fZXhjX3ZpcnEgZmFpbGVkIik7CiAJcG9ydCA9IFZhbF9pbnQocmMpOwpAQCAtMTEwLDcg KzExMCw3IEBAIENBTUxwcmltIHZhbHVlIHN0dWJfZXZlbnRjaG5fdW5iaW5kKHZhbHVlIHhjZSwg dmFsdWUgcG9ydCkKIAlDQU1McGFyYW0yKHhjZSwgcG9ydCk7CiAJaW50IHJjOwogCi0JcmMgPSB4 Y19ldnRjaG5fdW5iaW5kKF9IKHhjZSksIEludF92YWwocG9ydCkpOworCXJjID0geGVuZXZ0Y2hu X3VuYmluZChfSCh4Y2UpLCBJbnRfdmFsKHBvcnQpKTsKIAlpZiAocmMgPT0gLTEpCiAJCWNhbWxf ZmFpbHdpdGgoImV2dGNobiB1bmJpbmQgZmFpbGVkIik7CiAKQEAgLTEyMyw3ICsxMjMsNyBAQCBD QU1McHJpbSB2YWx1ZSBzdHViX2V2ZW50Y2huX3BlbmRpbmcodmFsdWUgeGNlKQogCUNBTUxsb2Nh bDEocmVzdWx0KTsKIAlldnRjaG5fcG9ydF9vcl9lcnJvcl90IHBvcnQ7CiAKLQlwb3J0ID0geGNf ZXZ0Y2huX3BlbmRpbmcoX0goeGNlKSk7CisJcG9ydCA9IHhlbmV2dGNobl9wZW5kaW5nKF9IKHhj ZSkpOwogCWlmIChwb3J0ID09IC0xKQogCQljYW1sX2ZhaWx3aXRoKCJldnRjaG4gcGVuZGluZyBm YWlsZWQiKTsKIAlyZXN1bHQgPSBWYWxfaW50KHBvcnQpOwpAQCAtMTM3LDcgKzEzNyw3IEBAIENB TUxwcmltIHZhbHVlIHN0dWJfZXZlbnRjaG5fdW5tYXNrKHZhbHVlIHhjZSwgdmFsdWUgX3BvcnQp CiAJZXZ0Y2huX3BvcnRfdCBwb3J0OwogCiAJcG9ydCA9IEludF92YWwoX3BvcnQpOwotCWlmICh4 Y19ldnRjaG5fdW5tYXNrKF9IKHhjZSksIHBvcnQpKQorCWlmICh4ZW5ldnRjaG5fdW5tYXNrKF9I KHhjZSksIHBvcnQpKQogCQljYW1sX2ZhaWx3aXRoKCJldnRjaG4gdW5tYXNrIGZhaWxlZCIpOwog CUNBTUxyZXR1cm4oVmFsX3VuaXQpOwogfQpkaWZmIC0tZ2l0IGEvdG9vbHMvcHl0aG9uL3NldHVw LnB5IGIvdG9vbHMvcHl0aG9uL3NldHVwLnB5CmluZGV4IDVhMDMyNjYuLmU2YzhiMTggMTAwNjQ0 Ci0tLSBhL3Rvb2xzL3B5dGhvbi9zZXR1cC5weQorKysgYi90b29scy9weXRob24vc2V0dXAucHkK QEAgLTgsMTMgKzgsMTggQEAgZXh0cmFfY29tcGlsZV9hcmdzICA9IFsgIi1mbm8tc3RyaWN0LWFs aWFzaW5nIiwgIi1XZXJyb3IiIF0KIAogUEFUSF9YRU4gICAgICA9IFhFTl9ST09UICsgIi90b29s cy9pbmNsdWRlIgogUEFUSF9MSUJYRU5UT09MTE9HID0gWEVOX1JPT1QgKyAiL3Rvb2xzL2xpYnhl bnRvb2xsb2ciCitQQVRIX0xJQlhFTkVWVENITiA9IFhFTl9ST09UICsgIi90b29scy9saWJ4ZW5l dnRjaG4iCiBQQVRIX0xJQlhDICAgID0gWEVOX1JPT1QgKyAiL3Rvb2xzL2xpYnhjIgogUEFUSF9M SUJYTCAgICA9IFhFTl9ST09UICsgIi90b29scy9saWJ4bCIKIFBBVEhfWEVOU1RPUkUgPSBYRU5f Uk9PVCArICIvdG9vbHMveGVuc3RvcmUiCiAKIHhjID0gRXh0ZW5zaW9uKCJ4YyIsCiAgICAgICAg ICAgICAgICBleHRyYV9jb21waWxlX2FyZ3MgPSBleHRyYV9jb21waWxlX2FyZ3MsCi0gICAgICAg ICAgICAgICBpbmNsdWRlX2RpcnMgICAgICAgPSBbIFBBVEhfWEVOLCBQQVRIX0xJQlhFTlRPT0xM T0cgKyAiL2luY2x1ZGUiLCBQQVRIX0xJQlhDICsgIi9pbmNsdWRlIiwgInhlbi9sb3dsZXZlbC94 YyIgXSwKKyAgICAgICAgICAgICAgIGluY2x1ZGVfZGlycyAgICAgICA9IFsgUEFUSF9YRU4sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBVEhfTElCWEVOVE9PTExPRyAr ICIvaW5jbHVkZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBVEhf TElCWEVORVZUQ0hOICsgIi9pbmNsdWRlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUEFUSF9MSUJYQyArICIvaW5jbHVkZSIsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJ4ZW4vbG93bGV2ZWwveGMiIF0sCiAgICAgICAgICAgICAgICBsaWJy YXJ5X2RpcnMgICAgICAgPSBbIFBBVEhfTElCWEMgXSwKICAgICAgICAgICAgICAgIGxpYnJhcmll cyAgICAgICAgICA9IFsgInhlbmN0cmwiLCAieGVuZ3Vlc3QiIF0sCiAgICAgICAgICAgICAgICBk ZXBlbmRzICAgICAgICAgICAgPSBbIFBBVEhfTElCWEMgKyAiL2xpYnhlbmN0cmwuc28iLCBQQVRI X0xJQlhDICsgIi9saWJ4ZW5ndWVzdC5zbyIsICAiLVdsLC1ycGF0aC1saW5rPSIrUEFUSF9MSUJY RU5UT09MTE9HIF0sCmRpZmYgLS1naXQgYS90b29scy90ZXN0cy94ZW4tYWNjZXNzL3hlbi1hY2Nl c3MuYyBiL3Rvb2xzL3Rlc3RzL3hlbi1hY2Nlc3MveGVuLWFjY2Vzcy5jCmluZGV4IGU2Y2E5YmEu LjU0NTIxN2UgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3RzL3hlbi1hY2Nlc3MveGVuLWFjY2Vzcy5j CisrKyBiL3Rvb2xzL3Rlc3RzL3hlbi1hY2Nlc3MveGVuLWFjY2Vzcy5jCkBAIC03OSw3ICs3OSw3 IEBAIHN0YXRpYyB2b2lkIGNsb3NlX2hhbmRsZXIoaW50IHNpZykKIAogaW50IHhjX3dhaXRfZm9y X2V2ZW50X29yX3RpbWVvdXQoeGNfaW50ZXJmYWNlICp4Y2gsIHhjX2V2dGNobiAqeGNlLCB1bnNp Z25lZCBsb25nIG1zKQogewotICAgIHN0cnVjdCBwb2xsZmQgZmQgPSB7IC5mZCA9IHhjX2V2dGNo bl9mZCh4Y2UpLCAuZXZlbnRzID0gUE9MTElOIHwgUE9MTEVSUiB9OworICAgIHN0cnVjdCBwb2xs ZmQgZmQgPSB7IC5mZCA9IHhlbmV2dGNobl9mZCh4Y2UpLCAuZXZlbnRzID0gUE9MTElOIHwgUE9M TEVSUiB9OwogICAgIGludCBwb3J0OwogICAgIGludCByYzsKIApkaWZmIC0tZ2l0IGEvdG9vbHMv eGN1dGlscy9NYWtlZmlsZSBiL3Rvb2xzL3hjdXRpbHMvTWFrZWZpbGUKaW5kZXggZmZmNTE5ZC4u MmQxZjExMiAxMDA2NDQKLS0tIGEvdG9vbHMveGN1dGlscy9NYWtlZmlsZQorKysgYi90b29scy94 Y3V0aWxzL01ha2VmaWxlCkBAIC0xNiw4ICsxNiw4IEBAIFBST0dSQU1TID0gcmVhZG5vdGVzIGxz ZXZ0Y2huCiBDRkxBR1MgKz0gLVdlcnJvcgogCiAjIGluY29ycmVjdGx5IHVzZXMgbGlieGMgaW50 ZXJuYWxzCi1DRkxBR1NfcmVhZG5vdGVzLm8gIDo9ICQoQ0ZMQUdTX2xpYnhlbmN0cmwpICQoQ0ZM QUdTX2xpYnhlbmd1ZXN0KSAtSSQoWEVOX1JPT1QpL3Rvb2xzL2xpYnhjCi1DRkxBR1NfbHNldnRj aG4ubyAgIDo9ICQoQ0ZMQUdTX2xpYnhlbmN0cmwpCitDRkxBR1NfcmVhZG5vdGVzLm8gIDo9ICQo Q0ZMQUdTX2xpYnhlbmV2dGNobikgJChDRkxBR1NfbGlieGVuY3RybCkgJChDRkxBR1NfbGlieGVu Z3Vlc3QpIC1JJChYRU5fUk9PVCkvdG9vbHMvbGlieGMKK0NGTEFHU19sc2V2dGNobi5vICAgOj0g JChDRkxBR1NfbGlieGVuZXZ0Y2huKSAkKENGTEFHU19saWJ4ZW5jdHJsKQogCiAuUEhPTlk6IGFs bAogYWxsOiBidWlsZApkaWZmIC0tZ2l0IGEvdG9vbHMveGVubW9uL01ha2VmaWxlIGIvdG9vbHMv eGVubW9uL01ha2VmaWxlCmluZGV4IDUwOTU2ODIuLmZhODA5ODMgMTAwNjQ0Ci0tLSBhL3Rvb2xz L3hlbm1vbi9NYWtlZmlsZQorKysgYi90b29scy94ZW5tb24vTWFrZWZpbGUKQEAgLTE0LDggKzE0 LDEwIEBAIFhFTl9ST09UPSQoQ1VSRElSKS8uLi8uLgogaW5jbHVkZSAkKFhFTl9ST09UKS90b29s cy9SdWxlcy5tawogCiBDRkxBR1MgICs9IC1XZXJyb3IKK0NGTEFHUyAgKz0gJChDRkxBR1NfbGli eGVuZXZ0Y2huKQogQ0ZMQUdTICArPSAkKENGTEFHU19saWJ4ZW5jdHJsKQogTERMSUJTICArPSAk KExETElCU19saWJ4ZW5jdHJsKQorTERMSUJTICArPSAkKExETElCU19saWJ4ZW5ldnRjaG4pCiAK IFNDUklQVFMgPSB4ZW5tb24ucHkKIApkaWZmIC0tZ2l0IGEvdG9vbHMveGVubW9uL3hlbmJha2Vk LmMgYi90b29scy94ZW5tb24veGVuYmFrZWQuYwppbmRleCBkYzYxZDE0Li5mMDkyYWVjIDEwMDY0 NAotLS0gYS90b29scy94ZW5tb24veGVuYmFrZWQuYworKysgYi90b29scy94ZW5tb24veGVuYmFr ZWQuYwpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2luY2x1ZGUgPGVy cm5vLmg+CiAjaW5jbHVkZSA8c2lnbmFsLmg+CisjaW5jbHVkZSA8eGVuZXZ0Y2huLmg+CiAjaW5j bHVkZSA8eGVuY3RybC5oPgogI2luY2x1ZGUgPHhlbi94ZW4uaD4KICNpbmNsdWRlIDxzdHJpbmcu aD4KQEAgLTI2OCw3ICsyNjksNyBAQCBzdGF0aWMgdm9pZCBsb2dfZXZlbnQoaW50IGV2ZW50X2lk KQogfQogCiBpbnQgdmlycV9wb3J0OwoteGNfZXZ0Y2huICp4Y2VfaGFuZGxlID0gTlVMTDsKK3hl bmV2dGNobl9oYW5kbGUgKnhjZV9oYW5kbGUgPSBOVUxMOwogCiAvKiBSZXR1cm5zIHRoZSBldmVu dCBjaGFubmVsIGhhbmRsZS4gKi8KIC8qIFN0b2xlbiBmcm9tIHhlbnN0b3JlIGNvZGUgKi8KQEAg LTI4MCwxMiArMjgxLDEyIEBAIHN0YXRpYyBpbnQgZXZlbnRjaG5faW5pdCh2b2lkKQogICAgIGlm ICgwKQogICAgICAgICByZXR1cm4gLTE7CiAgIAotICAgIHhjZV9oYW5kbGUgPSB4Y19ldnRjaG5f b3BlbihOVUxMLCAwKTsKKyAgICB4Y2VfaGFuZGxlID0geGVuZXZ0Y2huX29wZW4oTlVMTCwgMCk7 CiAKICAgICBpZiAoeGNlX2hhbmRsZSA9PSBOVUxMKQogICAgICAgICBwZXJyb3IoIkZhaWxlZCB0 byBvcGVuIGV2dGNobiBkZXZpY2UiKTsKICAgCi0gICAgaWYgKChyYyA9IHhjX2V2dGNobl9iaW5k X3ZpcnEoeGNlX2hhbmRsZSwgVklSUV9UQlVGKSkgPT0gLTEpCisgICAgaWYgKChyYyA9IHhlbmV2 dGNobl9iaW5kX3ZpcnEoeGNlX2hhbmRsZSwgVklSUV9UQlVGKSkgPT0gLTEpCiAgICAgICAgIHBl cnJvcigiRmFpbGVkIHRvIGJpbmQgdG8gZG9tYWluIGV4Y2VwdGlvbiB2aXJxIHBvcnQiKTsKICAg ICB2aXJxX3BvcnQgPSByYzsKICAgCkBAIC0zMDUsNyArMzA2LDcgQEAgc3RhdGljIHZvaWQgd2Fp dF9mb3JfZXZlbnQodm9pZCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGV2dGNobl9m ZCA9IHhjX2V2dGNobl9mZCh4Y2VfaGFuZGxlKTsKKyAgICBldnRjaG5fZmQgPSB4ZW5ldnRjaG5f ZmQoeGNlX2hhbmRsZSk7CiAKICAgICBGRF9aRVJPKCZpbnNldCk7CiAgICAgRkRfU0VUKGV2dGNo bl9mZCwgJmluc2V0KTsKQEAgLTMxNSwxMyArMzE2LDEzIEBAIHN0YXRpYyB2b2lkIHdhaXRfZm9y X2V2ZW50KHZvaWQpCiAgICAgcmV0ID0gc2VsZWN0KGV2dGNobl9mZCsxLCAmaW5zZXQsIE5VTEws IE5VTEwsICZ0dik7CiAgIAogICAgIGlmICggKHJldCA9PSAxKSAmJiBGRF9JU1NFVChldnRjaG5f ZmQsICZpbnNldCkpIHsKLSAgICAgICAgaWYgKChwb3J0ID0geGNfZXZ0Y2huX3BlbmRpbmcoeGNl X2hhbmRsZSkpID09IC0xKQorICAgICAgICBpZiAoKHBvcnQgPSB4ZW5ldnRjaG5fcGVuZGluZyh4 Y2VfaGFuZGxlKSkgPT0gLTEpCiAgICAgICAgICAgICBwZXJyb3IoIkZhaWxlZCB0byByZWFkIGZy b20gZXZlbnQgZmQiKTsKICAgICAKICAgICAgICAgLy8gICAgaWYgKHBvcnQgPT0gdmlycV9wb3J0 KQogICAgICAgICAvLyAgICAgIHByaW50ZigiZ290IHRoZSBldmVudCBJIHdhcyBsb29raW5nIGZv clxyXG4iKTsKIAotICAgICAgICBpZiAoeGNfZXZ0Y2huX3VubWFzayh4Y2VfaGFuZGxlLCBwb3J0 KSA9PSAtMSkKKyAgICAgICAgaWYgKHhlbmV2dGNobl91bm1hc2soeGNlX2hhbmRsZSwgcG9ydCkg PT0gLTEpCiAgICAgICAgICAgICBwZXJyb3IoIkZhaWxlZCB0byB3cml0ZSB0byBldmVudCBmZCIp OwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL3Rvb2xzL3hlbnBhZ2luZy9NYWtlZmlsZSBiL3Rvb2xz L3hlbnBhZ2luZy9NYWtlZmlsZQppbmRleCBlNjNkODk0Li5kNDkxODY3IDEwMDY0NAotLS0gYS90 b29scy94ZW5wYWdpbmcvTWFrZWZpbGUKKysrIGIvdG9vbHMveGVucGFnaW5nL01ha2VmaWxlCkBA IC0yLDggKzIsOCBAQCBYRU5fUk9PVD0kKENVUkRJUikvLi4vLi4KIGluY2x1ZGUgJChYRU5fUk9P VCkvdG9vbHMvUnVsZXMubWsKIAogIyB4ZW5wYWdpbmcuYyBhbmQgZmlsZV9vcHMuYyBpbmNvcnJl Y3RseSB1c2UgbGlieGMgaW50ZXJuYWxzCi1DRkxBR1MgKz0gJChDRkxBR1NfbGlieGVuY3RybCkg JChDRkxBR1NfbGlieGVuc3RvcmUpICQoUFRIUkVBRF9DRkxBR1MpIC1JJChYRU5fUk9PVCkvdG9v bHMvbGlieGMKLUxETElCUyArPSAkKExETElCU19saWJ4ZW50b29sbG9nKSAkKExETElCU19saWJ4 ZW5jdHJsKSAkKExETElCU19saWJ4ZW5zdG9yZSkgJChQVEhSRUFEX0xJQlMpCitDRkxBR1MgKz0g JChDRkxBR1NfbGlieGVudG9vbGxvZykgJChDRkxBR1NfbGlieGVuZXZ0Y2huKSAkKENGTEFHU19s aWJ4ZW5jdHJsKSAkKENGTEFHU19saWJ4ZW5zdG9yZSkgJChQVEhSRUFEX0NGTEFHUykgLUkkKFhF Tl9ST09UKS90b29scy9saWJ4YworTERMSUJTICs9ICQoTERMSUJTX2xpYnhlbnRvb2xsb2cpICQo TERMSUJTX2xpYnhlbmV2dGNobikgJChMRExJQlNfbGlieGVuY3RybCkgJChMRExJQlNfbGlieGVu c3RvcmUpICQoUFRIUkVBRF9MSUJTKQogTERGTEFHUyArPSAkKFBUSFJFQURfTERGTEFHUykKIAog UE9MSUNZICAgID0gZGVmYXVsdApkaWZmIC0tZ2l0IGEvdG9vbHMveGVucGFnaW5nL3hlbnBhZ2lu Zy5jIGIvdG9vbHMveGVucGFnaW5nL3hlbnBhZ2luZy5jCmluZGV4IDNmNGMyZTkuLjY3NzY4OTYg MTAwNjQ0Ci0tLSBhL3Rvb2xzL3hlbnBhZ2luZy94ZW5wYWdpbmcuYworKysgYi90b29scy94ZW5w YWdpbmcveGVucGFnaW5nLmMKQEAgLTc0LDcgKzc0LDcgQEAgc3RhdGljIHZvaWQgeGVucGFnaW5n X21lbV9wYWdpbmdfZmx1c2hfaW9lbXVfY2FjaGUoc3RydWN0IHhlbnBhZ2luZyAqcGFnaW5nKQog c3RhdGljIGludCB4ZW5wYWdpbmdfd2FpdF9mb3JfZXZlbnRfb3JfdGltZW91dChzdHJ1Y3QgeGVu cGFnaW5nICpwYWdpbmcpCiB7CiAgICAgeGNfaW50ZXJmYWNlICp4Y2ggPSBwYWdpbmctPnhjX2hh bmRsZTsKLSAgICB4Y19ldnRjaG4gKnhjZSA9IHBhZ2luZy0+dm1fZXZlbnQueGNlX2hhbmRsZTsK KyAgICB4ZW5ldnRjaG5faGFuZGxlICp4Y2UgPSBwYWdpbmctPnZtX2V2ZW50LnhjZV9oYW5kbGU7 CiAgICAgY2hhciAqKnZlYywgKnZhbDsKICAgICB1bnNpZ25lZCBpbnQgbnVtOwogICAgIHN0cnVj dCBwb2xsZmQgZmRbMl07CkBAIC04Myw3ICs4Myw3IEBAIHN0YXRpYyBpbnQgeGVucGFnaW5nX3dh aXRfZm9yX2V2ZW50X29yX3RpbWVvdXQoc3RydWN0IHhlbnBhZ2luZyAqcGFnaW5nKQogICAgIGlu dCB0aW1lb3V0OwogCiAgICAgLyogV2FpdCBmb3IgZXZlbnQgY2hhbm5lbCBhbmQgeGVuc3RvcmUg Ki8KLSAgICBmZFswXS5mZCA9IHhjX2V2dGNobl9mZCh4Y2UpOworICAgIGZkWzBdLmZkID0geGVu ZXZ0Y2huX2ZkKHhjZSk7CiAgICAgZmRbMF0uZXZlbnRzID0gUE9MTElOIHwgUE9MTEVSUjsKICAg ICBmZFsxXS5mZCA9IHhzX2ZpbGVubyhwYWdpbmctPnhzX2hhbmRsZSk7CiAgICAgZmRbMV0uZXZl bnRzID0gUE9MTElOIHwgUE9MTEVSUjsKQEAgLTE0Nyw3ICsxNDcsNyBAQCBzdGF0aWMgaW50IHhl bnBhZ2luZ193YWl0X2Zvcl9ldmVudF9vcl90aW1lb3V0KHN0cnVjdCB4ZW5wYWdpbmcgKnBhZ2lu ZykKICAgICBpZiAoIHJjICYmIGZkWzBdLnJldmVudHMgJiBQT0xMSU4gKQogICAgIHsKICAgICAg ICAgRFBSSU5URigiR290IGV2ZW50IGZyb20gZXZ0Y2huXG4iKTsKLSAgICAgICAgcG9ydCA9IHhj X2V2dGNobl9wZW5kaW5nKHhjZSk7CisgICAgICAgIHBvcnQgPSB4ZW5ldnRjaG5fcGVuZGluZyh4 Y2UpOwogICAgICAgICBpZiAoIHBvcnQgPT0gLTEgKQogICAgICAgICB7CiAgICAgICAgICAgICBQ RVJST1IoIkZhaWxlZCB0byByZWFkIHBvcnQgZnJvbSBldmVudCBjaGFubmVsIik7CkBAIC0xNTUs NyArMTU1LDcgQEAgc3RhdGljIGludCB4ZW5wYWdpbmdfd2FpdF9mb3JfZXZlbnRfb3JfdGltZW91 dChzdHJ1Y3QgeGVucGFnaW5nICpwYWdpbmcpCiAgICAgICAgICAgICBnb3RvIGVycjsKICAgICAg ICAgfQogCi0gICAgICAgIHJjID0geGNfZXZ0Y2huX3VubWFzayh4Y2UsIHBvcnQpOworICAgICAg ICByYyA9IHhlbmV2dGNobl91bm1hc2soeGNlLCBwb3J0KTsKICAgICAgICAgaWYgKCByYyA8IDAg KQogICAgICAgICB7CiAgICAgICAgICAgICBQRVJST1IoIkZhaWxlZCB0byB1bm1hc2sgZXZlbnQg Y2hhbm5lbCBwb3J0Iik7CkBAIC0zOTQsNyArMzk0LDcgQEAgc3RhdGljIHN0cnVjdCB4ZW5wYWdp bmcgKnhlbnBhZ2luZ19pbml0KGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAgfQogCiAgICAg LyogT3BlbiBldmVudCBjaGFubmVsICovCi0gICAgcGFnaW5nLT52bV9ldmVudC54Y2VfaGFuZGxl ID0geGNfZXZ0Y2huX29wZW4oTlVMTCwgMCk7CisgICAgcGFnaW5nLT52bV9ldmVudC54Y2VfaGFu ZGxlID0geGVuZXZ0Y2huX29wZW4oTlVMTCwgMCk7CiAgICAgaWYgKCBwYWdpbmctPnZtX2V2ZW50 LnhjZV9oYW5kbGUgPT0gTlVMTCApCiAgICAgewogICAgICAgICBQRVJST1IoIkZhaWxlZCB0byBv cGVuIGV2ZW50IGNoYW5uZWwiKTsKQEAgLTQwMiw3ICs0MDIsNyBAQCBzdGF0aWMgc3RydWN0IHhl bnBhZ2luZyAqeGVucGFnaW5nX2luaXQoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICB9CiAK ICAgICAvKiBCaW5kIGV2ZW50IG5vdGlmaWNhdGlvbiAqLwotICAgIHJjID0geGNfZXZ0Y2huX2Jp bmRfaW50ZXJkb21haW4ocGFnaW5nLT52bV9ldmVudC54Y2VfaGFuZGxlLAorICAgIHJjID0geGVu ZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4ocGFnaW5nLT52bV9ldmVudC54Y2VfaGFuZGxlLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnaW5nLT52bV9ldmVudC5kb21haW5f aWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdpbmctPnZtX2V2ZW50 LmV2dGNobl9wb3J0KTsKICAgICBpZiAoIHJjIDwgMCApCkBAIC01MzIsNyArNTMyLDcgQEAgc3Rh dGljIHZvaWQgeGVucGFnaW5nX3RlYXJkb3duKHN0cnVjdCB4ZW5wYWdpbmcgKnBhZ2luZykKICAg ICB9CiAKICAgICAvKiBVbmJpbmQgVklSUSAqLwotICAgIHJjID0geGNfZXZ0Y2huX3VuYmluZChw YWdpbmctPnZtX2V2ZW50LnhjZV9oYW5kbGUsIHBhZ2luZy0+dm1fZXZlbnQucG9ydCk7CisgICAg cmMgPSB4ZW5ldnRjaG5fdW5iaW5kKHBhZ2luZy0+dm1fZXZlbnQueGNlX2hhbmRsZSwgcGFnaW5n LT52bV9ldmVudC5wb3J0KTsKICAgICBpZiAoIHJjICE9IDAgKQogICAgIHsKICAgICAgICAgUEVS Uk9SKCJFcnJvciB1bmJpbmRpbmcgZXZlbnQgcG9ydCIpOwpAQCAtNTQwLDcgKzU0MCw3IEBAIHN0 YXRpYyB2b2lkIHhlbnBhZ2luZ190ZWFyZG93bihzdHJ1Y3QgeGVucGFnaW5nICpwYWdpbmcpCiAg ICAgcGFnaW5nLT52bV9ldmVudC5wb3J0ID0gLTE7CiAKICAgICAvKiBDbG9zZSBldmVudCBjaGFu bmVsICovCi0gICAgcmMgPSB4Y19ldnRjaG5fY2xvc2UocGFnaW5nLT52bV9ldmVudC54Y2VfaGFu ZGxlKTsKKyAgICByYyA9IHhlbmV2dGNobl9jbG9zZShwYWdpbmctPnZtX2V2ZW50LnhjZV9oYW5k bGUpOwogICAgIGlmICggcmMgIT0gMCApCiAgICAgewogICAgICAgICBQRVJST1IoIkVycm9yIGNs b3NpbmcgZXZlbnQgY2hhbm5lbCIpOwpAQCAtNjkzLDcgKzY5Myw3IEBAIHN0YXRpYyBpbnQgeGVu cGFnaW5nX3Jlc3VtZV9wYWdlKHN0cnVjdCB4ZW5wYWdpbmcgKnBhZ2luZywgdm1fZXZlbnRfcmVz cG9uc2VfdCAqCiAgICAgfQogCiAgICAgLyogVGVsbCBYZW4gcGFnZSBpcyByZWFkeSAqLwotICAg IHJldHVybiB4Y19ldnRjaG5fbm90aWZ5KHBhZ2luZy0+dm1fZXZlbnQueGNlX2hhbmRsZSwgcGFn aW5nLT52bV9ldmVudC5wb3J0KTsKKyAgICByZXR1cm4geGVuZXZ0Y2huX25vdGlmeShwYWdpbmct PnZtX2V2ZW50LnhjZV9oYW5kbGUsIHBhZ2luZy0+dm1fZXZlbnQucG9ydCk7CiB9CiAKIHN0YXRp YyBpbnQgeGVucGFnaW5nX3BvcHVsYXRlX3BhZ2Uoc3RydWN0IHhlbnBhZ2luZyAqcGFnaW5nLCB1 bnNpZ25lZCBsb25nIGdmbiwgaW50IGkpCmRpZmYgLS1naXQgYS90b29scy94ZW5wYWdpbmcveGVu cGFnaW5nLmggYi90b29scy94ZW5wYWdpbmcveGVucGFnaW5nLmgKaW5kZXggMjVkNTExZC4uNmMx MjAzMCAxMDA2NDQKLS0tIGEvdG9vbHMveGVucGFnaW5nL3hlbnBhZ2luZy5oCisrKyBiL3Rvb2xz L3hlbnBhZ2luZy94ZW5wYWdpbmcuaApAQCAtMjUsNiArMjUsNyBAQAogI2RlZmluZSBfX1hFTl9Q QUdJTkcyX0hfXwogCiAKKyNpbmNsdWRlIDx4ZW5ldnRjaG4uaD4KICNpbmNsdWRlIDx4Y19wcml2 YXRlLmg+CiAjaW5jbHVkZSA8eGVuL2V2ZW50X2NoYW5uZWwuaD4KICNpbmNsdWRlIDx4ZW4vdm1f ZXZlbnQuaD4KQEAgLTMzLDcgKzM0LDcgQEAKIAogc3RydWN0IHZtX2V2ZW50IHsKICAgICBkb21p ZF90IGRvbWFpbl9pZDsKLSAgICB4Y19ldnRjaG4gKnhjZV9oYW5kbGU7CisgICAgeGVuZXZ0Y2hu X2hhbmRsZSAqeGNlX2hhbmRsZTsKICAgICBpbnQgcG9ydDsKICAgICB2bV9ldmVudF9iYWNrX3Jp bmdfdCBiYWNrX3Jpbmc7CiAgICAgdWludDMyX3QgZXZ0Y2huX3BvcnQ7CmRpZmYgLS1naXQgYS90 b29scy94ZW5zdG9yZS9NYWtlZmlsZSBiL3Rvb2xzL3hlbnN0b3JlL01ha2VmaWxlCmluZGV4IDFi NGE0OTQuLmMxNjEwNDYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hlbnN0b3JlL01ha2VmaWxlCisrKyBi L3Rvb2xzL3hlbnN0b3JlL01ha2VmaWxlCkBAIC05LDYgKzksNyBAQCBDRkxBR1MgKz0gLUkuCiAj IEluY2x1ZGUgY29uZmlndXJlIG91dHB1dCAoY29uZmlnLmgpCiBDRkxBR1MgKz0gLWluY2x1ZGUg JChYRU5fUk9PVCkvdG9vbHMvY29uZmlnLmgKIENGTEFHUyArPSAtSS4vaW5jbHVkZQorQ0ZMQUdT ICs9ICQoQ0ZMQUdTX2xpYnhlbmV2dGNobikKIENGTEFHUyArPSAkKENGTEFHU19saWJ4ZW5jdHJs KQogQ0ZMQUdTICs9IC1EWEVOX0xJQl9TVE9SRUQ9IlwiJChYRU5fTElCX1NUT1JFRClcIiIKIApA QCAtNzUsMTAgKzc2LDEwIEBAIGVuZGlmCiBpbml0LXhlbnN0b3JlLWRvbWFpbi5vOiBDRkxBR1Mg Kz0gJChDRkxBR1NfbGlieGVuZ3Vlc3QpCiAKIGluaXQteGVuc3RvcmUtZG9tYWluOiBpbml0LXhl bnN0b3JlLWRvbWFpbi5vICQoTElCWEVOU1RPUkUpCi0JJChDQykgJF4gJChMREZMQUdTKSAkKExE TElCU19saWJ4ZW5jdHJsKSAkKExETElCU19saWJ4ZW5ndWVzdCkgJChMRExJQlNfbGlieGVuc3Rv cmUpIC1vICRAICQoQVBQRU5EX0xERkxBR1MpCisJJChDQykgJF4gJChMREZMQUdTKSAkKExETElC U19saWJ4ZW5ldnRjaG4pICQoTERMSUJTX2xpYnhlbmN0cmwpICQoTERMSUJTX2xpYnhlbmd1ZXN0 KSAkKExETElCU19saWJ4ZW5zdG9yZSkgLW8gJEAgJChBUFBFTkRfTERGTEFHUykKIAogeGVuc3Rv cmVkOiAkKFhFTlNUT1JFRF9PQkpTKQotCSQoQ0MpICReICQoTERGTEFHUykgJChMRExJQlNfbGli eGVuY3RybCkgJChTT0NLRVRfTElCUykgLW8gJEAgJChBUFBFTkRfTERGTEFHUykKKwkkKENDKSAk XiAkKExERkxBR1MpICQoTERMSUJTX2xpYnhlbmV2dGNobikgJChMRExJQlNfbGlieGVuY3RybCkg JChTT0NLRVRfTElCUykgLW8gJEAgJChBUFBFTkRfTERGTEFHUykKIAogeGVuc3RvcmVkLmE6ICQo WEVOU1RPUkVEX09CSlMpCiAJJChBUikgY3IgJEAgJF4KZGlmZiAtLWdpdCBhL3Rvb2xzL3hlbnN0 b3JlL3hlbnN0b3JlZF9jb3JlLmMgYi90b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfY29yZS5jCmlu ZGV4IGIxODAwMGQuLjdmMWU0ODkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hlbnN0b3JlL3hlbnN0b3Jl ZF9jb3JlLmMKKysrIGIvdG9vbHMveGVuc3RvcmUveGVuc3RvcmVkX2NvcmUuYwpAQCAtNDEsNiAr NDEsOCBAQAogI2luY2x1ZGUgPGFzc2VydC5oPgogI2luY2x1ZGUgPHNldGptcC5oPgogCisjaW5j bHVkZSA8eGVuZXZ0Y2huLmg+CisKICNpbmNsdWRlICJ1dGlscy5oIgogI2luY2x1ZGUgImxpc3Qu aCIKICNpbmNsdWRlICJ0YWxsb2MuaCIKQEAgLTY0LDcgKzY2LDcgQEAKICNpbmNsdWRlIDxzeXN0 ZW1kL3NkLWRhZW1vbi5oPgogI2VuZGlmCiAKLWV4dGVybiB4Y19ldnRjaG4gKnhjZV9oYW5kbGU7 IC8qIGluIHhlbnN0b3JlZF9kb21haW4uYyAqLworZXh0ZXJuIHhlbmV2dGNobl9oYW5kbGUgKnhj ZV9oYW5kbGU7IC8qIGluIHhlbnN0b3JlZF9kb21haW4uYyAqLwogc3RhdGljIGludCB4Y2VfcG9s bGZkX2lkeCA9IC0xOwogc3RhdGljIHN0cnVjdCBwb2xsZmQgKmZkczsKIHN0YXRpYyB1bnNpZ25l ZCBpbnQgY3VycmVudF9hcnJheV9zaXplOwpAQCAtMzczLDcgKzM3NSw3IEBAIHN0YXRpYyB2b2lk IGluaXRpYWxpemVfZmRzKGludCBzb2NrLCBpbnQgKnBfc29ja19wb2xsZmRfaWR4LAogCQkJc2V0 X2ZkKHJlb3Blbl9sb2dfcGlwZVswXSwgUE9MTElOfFBPTExQUkkpOwogCiAJaWYgKHhjZV9oYW5k bGUgIT0gTlVMTCkKLQkJeGNlX3BvbGxmZF9pZHggPSBzZXRfZmQoeGNfZXZ0Y2huX2ZkKHhjZV9o YW5kbGUpLAorCQl4Y2VfcG9sbGZkX2lkeCA9IHNldF9mZCh4ZW5ldnRjaG5fZmQoeGNlX2hhbmRs ZSksCiAJCQkJCVBPTExJTnxQT0xMUFJJKTsKIAogCWxpc3RfZm9yX2VhY2hfZW50cnkoY29ubiwg JmNvbm5lY3Rpb25zLCBsaXN0KSB7CmRpZmYgLS1naXQgYS90b29scy94ZW5zdG9yZS94ZW5zdG9y ZWRfZG9tYWluLmMgYi90b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfZG9tYWluLmMKaW5kZXggMDc3 NmUzOS4uYjY0OTEwNyAxMDA2NDQKLS0tIGEvdG9vbHMveGVuc3RvcmUveGVuc3RvcmVkX2RvbWFp bi5jCisrKyBiL3Rvb2xzL3hlbnN0b3JlL3hlbnN0b3JlZF9kb21haW4uYwpAQCAtMzAsNiArMzAs NyBAQAogI2luY2x1ZGUgInhlbnN0b3JlZF90cmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgInhlbnN0 b3JlZF93YXRjaC5oIgogCisjaW5jbHVkZSA8eGVuZXZ0Y2huLmg+CiAjaW5jbHVkZSA8eGVuY3Ry bC5oPgogI2luY2x1ZGUgPHhlbi9ncmFudF90YWJsZS5oPgogCkBAIC0zNyw3ICszOCw3IEBAIHN0 YXRpYyB4Y19pbnRlcmZhY2UgKip4Y19oYW5kbGU7CiB4Y19nbnR0YWIgKip4Y2dfaGFuZGxlOwog c3RhdGljIGV2dGNobl9wb3J0X3QgdmlycV9wb3J0OwogCi14Y19ldnRjaG4gKnhjZV9oYW5kbGUg PSBOVUxMOworeGVuZXZ0Y2huX2hhbmRsZSAqeGNlX2hhbmRsZSA9IE5VTEw7CiAKIHN0cnVjdCBk b21haW4KIHsKQEAgLTEyOSw3ICsxMzAsNyBAQCBzdGF0aWMgaW50IHdyaXRlY2huKHN0cnVjdCBj b25uZWN0aW9uICpjb25uLAogCXhlbl9tYigpOwogCWludGYtPnJzcF9wcm9kICs9IGxlbjsKIAot CXhjX2V2dGNobl9ub3RpZnkoeGNlX2hhbmRsZSwgY29ubi0+ZG9tYWluLT5wb3J0KTsKKwl4ZW5l dnRjaG5fbm90aWZ5KHhjZV9oYW5kbGUsIGNvbm4tPmRvbWFpbi0+cG9ydCk7CiAKIAlyZXR1cm4g bGVuOwogfQpAQCAtMTU5LDcgKzE2MCw3IEBAIHN0YXRpYyBpbnQgcmVhZGNobihzdHJ1Y3QgY29u bmVjdGlvbiAqY29ubiwgdm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IGxlbikKIAl4ZW5fbWIoKTsK IAlpbnRmLT5yZXFfY29ucyArPSBsZW47CiAKLQl4Y19ldnRjaG5fbm90aWZ5KHhjZV9oYW5kbGUs IGNvbm4tPmRvbWFpbi0+cG9ydCk7CisJeGVuZXZ0Y2huX25vdGlmeSh4Y2VfaGFuZGxlLCBjb25u LT5kb21haW4tPnBvcnQpOwogCiAJcmV0dXJuIGxlbjsKIH0KQEAgLTE5MSw3ICsxOTIsNyBAQCBz dGF0aWMgaW50IGRlc3Ryb3lfZG9tYWluKHZvaWQgKl9kb21haW4pCiAJbGlzdF9kZWwoJmRvbWFp bi0+bGlzdCk7CiAKIAlpZiAoZG9tYWluLT5wb3J0KSB7Ci0JCWlmICh4Y19ldnRjaG5fdW5iaW5k KHhjZV9oYW5kbGUsIGRvbWFpbi0+cG9ydCkgPT0gLTEpCisJCWlmICh4ZW5ldnRjaG5fdW5iaW5k KHhjZV9oYW5kbGUsIGRvbWFpbi0+cG9ydCkgPT0gLTEpCiAJCQllcHJpbnRmKCI+IFVuYmluZGlu ZyBwb3J0ICVpIGZhaWxlZCFcbiIsIGRvbWFpbi0+cG9ydCk7CiAJfQogCkBAIC0yNDAsMTMgKzI0 MSwxMyBAQCB2b2lkIGhhbmRsZV9ldmVudCh2b2lkKQogewogCWV2dGNobl9wb3J0X3QgcG9ydDsK IAotCWlmICgocG9ydCA9IHhjX2V2dGNobl9wZW5kaW5nKHhjZV9oYW5kbGUpKSA9PSAtMSkKKwlp ZiAoKHBvcnQgPSB4ZW5ldnRjaG5fcGVuZGluZyh4Y2VfaGFuZGxlKSkgPT0gLTEpCiAJCWJhcmZf cGVycm9yKCJGYWlsZWQgdG8gcmVhZCBmcm9tIGV2ZW50IGZkIik7CiAKIAlpZiAocG9ydCA9PSB2 aXJxX3BvcnQpCiAJCWRvbWFpbl9jbGVhbnVwKCk7CiAKLQlpZiAoeGNfZXZ0Y2huX3VubWFzayh4 Y2VfaGFuZGxlLCBwb3J0KSA9PSAtMSkKKwlpZiAoeGVuZXZ0Y2huX3VubWFzayh4Y2VfaGFuZGxl LCBwb3J0KSA9PSAtMSkKIAkJYmFyZl9wZXJyb3IoIkZhaWxlZCB0byB3cml0ZSB0byBldmVudCBm ZCIpOwogfQogCkBAIC0yODgsNyArMjg5LDcgQEAgc3RhdGljIHN0cnVjdCBkb21haW4gKm5ld19k b21haW4odm9pZCAqY29udGV4dCwgdW5zaWduZWQgaW50IGRvbWlkLAogCXRhbGxvY19zZXRfZGVz dHJ1Y3Rvcihkb21haW4sIGRlc3Ryb3lfZG9tYWluKTsKIAogCS8qIFRlbGwga2VybmVsIHdlJ3Jl IGludGVyZXN0ZWQgaW4gdGhpcyBldmVudC4gKi8KLQlyYyA9IHhjX2V2dGNobl9iaW5kX2ludGVy ZG9tYWluKHhjZV9oYW5kbGUsIGRvbWlkLCBwb3J0KTsKKwlyYyA9IHhlbmV2dGNobl9iaW5kX2lu dGVyZG9tYWluKHhjZV9oYW5kbGUsIGRvbWlkLCBwb3J0KTsKIAlpZiAocmMgPT0gLTEpCiAJICAg IHJldHVybiBOVUxMOwogCWRvbWFpbi0+cG9ydCA9IHJjOwpAQCAtMzkzLDggKzM5NCw4IEBAIHZv aWQgZG9faW50cm9kdWNlKHN0cnVjdCBjb25uZWN0aW9uICpjb25uLCBzdHJ1Y3QgYnVmZmVyZWRf ZGF0YSAqaW4pCiAJfSBlbHNlIGlmICgoZG9tYWluLT5tZm4gPT0gbWZuKSAmJiAoZG9tYWluLT5j b25uICE9IGNvbm4pKSB7CiAJCS8qIFVzZSBYU19JTlRST0RVQ0UgZm9yIHJlY3JlYXRpbmcgdGhl IHhlbmJ1cyBldmVudC1jaGFubmVsLiAqLwogCQlpZiAoZG9tYWluLT5wb3J0KQotCQkJeGNfZXZ0 Y2huX3VuYmluZCh4Y2VfaGFuZGxlLCBkb21haW4tPnBvcnQpOwotCQlyYyA9IHhjX2V2dGNobl9i aW5kX2ludGVyZG9tYWluKHhjZV9oYW5kbGUsIGRvbWlkLCBwb3J0KTsKKwkJCXhlbmV2dGNobl91 bmJpbmQoeGNlX2hhbmRsZSwgZG9tYWluLT5wb3J0KTsKKwkJcmMgPSB4ZW5ldnRjaG5fYmluZF9p bnRlcmRvbWFpbih4Y2VfaGFuZGxlLCBkb21pZCwgcG9ydCk7CiAJCWRvbWFpbi0+cG9ydCA9IChy YyA9PSAtMSkgPyAwIDogcmM7CiAJCWRvbWFpbi0+cmVtb3RlX3BvcnQgPSBwb3J0OwogCX0gZWxz ZSB7CkBAIC02MTUsNyArNjE2LDcgQEAgc3RhdGljIGludCBkb20wX2luaXQodm9pZCkKIAogCXRh bGxvY19zdGVhbChkb20wLT5jb25uLCBkb20wKTsgCiAKLQl4Y19ldnRjaG5fbm90aWZ5KHhjZV9o YW5kbGUsIGRvbTAtPnBvcnQpOyAKKwl4ZW5ldnRjaG5fbm90aWZ5KHhjZV9oYW5kbGUsIGRvbTAt PnBvcnQpOyAKIAogCXJldHVybiAwOyAKIH0KQEAgLTY0NCw3ICs2NDUsNyBAQCB2b2lkIGRvbWFp bl9pbml0KHZvaWQpCiAJZWxzZQogCQl0YWxsb2Nfc2V0X2Rlc3RydWN0b3IoeGNnX2hhbmRsZSwg Y2xvc2VfeGNnX2hhbmRsZSk7CiAKLQl4Y2VfaGFuZGxlID0geGNfZXZ0Y2huX29wZW4oTlVMTCwg MCk7CisJeGNlX2hhbmRsZSA9IHhlbmV2dGNobl9vcGVuKE5VTEwsIDApOwogCiAJaWYgKHhjZV9o YW5kbGUgPT0gTlVMTCkKIAkJYmFyZl9wZXJyb3IoIkZhaWxlZCB0byBvcGVuIGV2dGNobiBkZXZp Y2UiKTsKQEAgLTY1Miw3ICs2NTMsNyBAQCB2b2lkIGRvbWFpbl9pbml0KHZvaWQpCiAJaWYgKGRv bTBfaW5pdCgpICE9IDApIAogCQliYXJmX3BlcnJvcigiRmFpbGVkIHRvIGluaXRpYWxpemUgZG9t MCBzdGF0ZSIpOyAKIAotCWlmICgocmMgPSB4Y19ldnRjaG5fYmluZF92aXJxKHhjZV9oYW5kbGUs IFZJUlFfRE9NX0VYQykpID09IC0xKQorCWlmICgocmMgPSB4ZW5ldnRjaG5fYmluZF92aXJxKHhj ZV9oYW5kbGUsIFZJUlFfRE9NX0VYQykpID09IC0xKQogCQliYXJmX3BlcnJvcigiRmFpbGVkIHRv IGJpbmQgdG8gZG9tYWluIGV4Y2VwdGlvbiB2aXJxIHBvcnQiKTsKIAl2aXJxX3BvcnQgPSByYzsK IH0KZGlmZiAtLWdpdCBhL3Rvb2xzL3hlbnRyYWNlL01ha2VmaWxlIGIvdG9vbHMveGVudHJhY2Uv TWFrZWZpbGUKaW5kZXggMmY1N2JkYS4uYWIyNzI4NCAxMDA2NDQKLS0tIGEvdG9vbHMveGVudHJh Y2UvTWFrZWZpbGUKKysrIGIvdG9vbHMveGVudHJhY2UvTWFrZWZpbGUKQEAgLTMsOCArMywxMSBA QCBpbmNsdWRlICQoWEVOX1JPT1QpL3Rvb2xzL1J1bGVzLm1rCiAKIENGTEFHUyArPSAtV2Vycm9y CiAKK0NGTEFHUyArPSAkKENGTEFHU19saWJ4ZW5ldnRjaG4pCiBDRkxBR1MgKz0gJChDRkxBR1Nf bGlieGVuY3RybCkKLUxETElCUyArPSAkKExETElCU19saWJ4ZW5jdHJsKSAkKEFSR1BfTERGTEFH UykKK0xETElCUyArPSAkKExETElCU19saWJ4ZW5ldnRjaG4pCitMRExJQlMgKz0gJChMRExJQlNf bGlieGVuY3RybCkKK0xETElCUyArPSAkKEFSR1BfTERGTEFHUykKIAogQklOLSQoQ09ORklHX1g4 NikgPSB4ZW5hbHl6ZQogQklOICAgICAgPSAkKEJJTi15KQpkaWZmIC0tZ2l0IGEvdG9vbHMveGVu dHJhY2UveGVudHJhY2UuYyBiL3Rvb2xzL3hlbnRyYWNlL3hlbnRyYWNlLmMKaW5kZXggNGVlMTQ1 OC4uYzk3MGQ0MiAxMDA2NDQKLS0tIGEvdG9vbHMveGVudHJhY2UveGVudHJhY2UuYworKysgYi90 b29scy94ZW50cmFjZS94ZW50cmFjZS5jCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8eGVu L3hlbi5oPgogI2luY2x1ZGUgPHhlbi90cmFjZS5oPgogCisjaW5jbHVkZSA8eGVuZXZ0Y2huLmg+ CiAjaW5jbHVkZSA8eGVuY3RybC5oPgogCiAjZGVmaW5lIFBFUlJPUihfbSwgX2EuLi4pICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtNzQsNyArNzUsNyBAQCBzZXR0 aW5nc190IG9wdHM7CiBpbnQgaW50ZXJydXB0ZWQgPSAwOyAvKiBnZXRzIHNldCBpZiB3ZSBnZXQg YSBTSUdIVVAgKi8KIAogc3RhdGljIHhjX2ludGVyZmFjZSAqeGNfaGFuZGxlOwotc3RhdGljIHhj X2V2dGNobiAqeGNlX2hhbmRsZSA9IE5VTEw7CitzdGF0aWMgeGVuZXZ0Y2huX2hhbmRsZSAqeGNl X2hhbmRsZSA9IE5VTEw7CiBzdGF0aWMgaW50IHZpcnFfcG9ydCA9IC0xOwogc3RhdGljIGludCBv dXRmZCA9IDE7CiAKQEAgLTYwMiwxMyArNjAzLDEzIEBAIHN0YXRpYyB2b2lkIGV2ZW50X2luaXQo dm9pZCkKIHsKICAgICBpbnQgcmM7CiAKLSAgICB4Y2VfaGFuZGxlID0geGNfZXZ0Y2huX29wZW4o TlVMTCwgMCk7CisgICAgeGNlX2hhbmRsZSA9IHhlbmV2dGNobl9vcGVuKE5VTEwsIDApOwogICAg IGlmICh4Y2VfaGFuZGxlID09IE5VTEwpIHsKICAgICAgICAgcGVycm9yKCJldmVudCBjaGFubmVs IG9wZW4iKTsKICAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOwogICAgIH0KIAotICAgIHJjID0g eGNfZXZ0Y2huX2JpbmRfdmlycSh4Y2VfaGFuZGxlLCBWSVJRX1RCVUYpOworICAgIHJjID0geGVu ZXZ0Y2huX2JpbmRfdmlycSh4Y2VfaGFuZGxlLCBWSVJRX1RCVUYpOwogICAgIGlmIChyYyA9PSAt MSkgewogICAgICAgICBQRVJST1IoImZhaWxlZCB0byBiaW5kIHRvIFZJUlEgcG9ydCIpOwogICAg ICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CkBAIC02MjMsNyArNjI0LDcgQEAgc3RhdGljIHZvaWQg ZXZlbnRfaW5pdCh2b2lkKQogc3RhdGljIHZvaWQgd2FpdF9mb3JfZXZlbnRfb3JfdGltZW91dCh1 bnNpZ25lZCBsb25nIG1pbGxpc2Vjb25kcykKIHsKICAgICBpbnQgcmM7Ci0gICAgc3RydWN0IHBv bGxmZCBmZCA9IHsgLmZkID0geGNfZXZ0Y2huX2ZkKHhjZV9oYW5kbGUpLAorICAgIHN0cnVjdCBw b2xsZmQgZmQgPSB7IC5mZCA9IHhlbmV2dGNobl9mZCh4Y2VfaGFuZGxlKSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAuZXZlbnRzID0gUE9MTElOIHwgUE9MTEVSUiB9OwogICAgIGludCBwb3J0 OwogCkBAIC02MzYsNyArNjM3LDcgQEAgc3RhdGljIHZvaWQgd2FpdF9mb3JfZXZlbnRfb3JfdGlt ZW91dCh1bnNpZ25lZCBsb25nIG1pbGxpc2Vjb25kcykKICAgICB9CiAKICAgICBpZiAocmMgPT0g MSkgewotICAgICAgICBwb3J0ID0geGNfZXZ0Y2huX3BlbmRpbmcoeGNlX2hhbmRsZSk7CisgICAg ICAgIHBvcnQgPSB4ZW5ldnRjaG5fcGVuZGluZyh4Y2VfaGFuZGxlKTsKICAgICAgICAgaWYgKHBv cnQgPT0gLTEpIHsKICAgICAgICAgICAgIFBFUlJPUigiZmFpbGVkIHRvIHJlYWQgcG9ydCBmcm9t IGV2dGNobiIpOwogICAgICAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOwpAQCAtNjQ3LDcgKzY0 OCw3IEBAIHN0YXRpYyB2b2lkIHdhaXRfZm9yX2V2ZW50X29yX3RpbWVvdXQodW5zaWduZWQgbG9u ZyBtaWxsaXNlY29uZHMpCiAgICAgICAgICAgICAgICAgICAgIHBvcnQsIHZpcnFfcG9ydCk7CiAg ICAgICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CiAgICAgICAgIH0KLSAgICAgICAgcmMgPSB4 Y19ldnRjaG5fdW5tYXNrKHhjZV9oYW5kbGUsIHBvcnQpOworICAgICAgICByYyA9IHhlbmV2dGNo bl91bm1hc2soeGNlX2hhbmRsZSwgcG9ydCk7CiAgICAgICAgIGlmIChyYyA9PSAtMSkgewogICAg ICAgICAgICAgUEVSUk9SKCJmYWlsZWQgdG8gd3JpdGUgcG9ydCB0byBldnRjaG4iKTsKICAgICAg ICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKLS0gCjIuMS40CgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4t ZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK