From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8C822891B9 for ; Thu, 11 Apr 2019 12:36:50 +0000 (UTC) From: Simon Ser Date: Thu, 11 Apr 2019 15:36:44 +0300 Message-Id: <20190411123648.4123-2-simon.ser@intel.com> In-Reply-To: <20190411123648.4123-1-simon.ser@intel.com> References: <20190411123648.4123-1-simon.ser@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v4 1/5] tests/kms_chamelium: add dp-audio test List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org List-ID: VGhpcyBuZXcgdGVzdCBlbnN1cmVzIERpc3BsYXlQb3J0IGF1ZGlvIHdvcmtzIGJ5IHVzaW5nIHRo ZSBDaGFtZWxpdW0uCgpJdCBlbmFibGVzIHRoZSBEaXNwbGF5UG9ydCBvdXRwdXQgYW5kIHNlbmRz IGFuIGF1ZGlvIHNpZ25hbCBjb250YWluaW5nIGEgc2V0IG9mCmZyZXF1ZW5jaWVzIHdlIGNob29z ZSB0byBhbGwgSERNSS9EaXNwbGF5UG9ydCBhdWRpbyBkZXZpY2VzLiBJdCBzdGFydHMKcmVjb3Jk aW5nIGF1ZGlvIG9uIHRoZSBDaGFtZWxpdW0gZGV2aWNlIGFuZCB1c2VzIHRoZSBzdHJlYW0gc2Vy dmVyIHRvIHJldHJpZXZlCmNhcHR1cmVkIGF1ZGlvIHBhZ2VzLiBJdCB0aGVuIGNoZWNrcyB0aGF0 IHRoZSBjYXB0dXJlIGF1ZGlvIHNpZ25hbCBjb250YWlucyB0aGUKZnJlcXVlbmNpZXMgd2Ugc2Vu dCwgYW5kIG9ubHkgdGhvc2UsIGJ5IGNvbXB1dGluZyBhIEZGVC4KCkEgbmV3IGxpYnJhcnkgaGFz IGJlZW4gYWRkZWQgdG8gbGliaWd0IHRvIGNvbW11bmljYXRlIHdpdGggdGhlIHN0cmVhbSBzZXJ2 ZXIuCkl0IGltcGxlbWVudHMgYSBzaW1wbGUgY3VzdG9tIFRDUCBwcm90b2NvbC4KCkluIGNhc2Ug dGhlIHRlc3QgZmFpbHMsIGEgV0FWIGZpbGUgd2l0aCB0aGUgY2FwdHVyZWQgZGF0YSBpcyBzYXZl ZCBvbiBkaXNrLgoKUmlnaHQgbm93IHRoZSB0ZXN0IGhhcyBhIGZldyBsaW1pdGF0aW9uczoKCi0g T25seSB0aGUgZmlyc3QgY2hhbm5lbCBpcyBjaGVja2VkCi0gSUdUIG9ubHkgZ2VuZXJhdGVzIGF1 ZGlvIHdpdGggYSBzaW5nbGUgc2FtcGxpbmcgcmF0ZSAoNDggS0h6KQotIEF1ZGlvIGRhdGEgaXMg bm90IGNhcHR1cmVkIGluIHJlYWwtdGltZQoKVGhlc2UgbGltaXRhdGlvbnMgd2lsbCBiZSBsaWZ0 ZWQgaW4gZnV0dXJlIHBhdGNoZXMuCgpQdWxzZUF1ZGlvIG11c3Qgbm90IHJ1biBkdXJpbmcgdGhl IHRlc3RzIHNpbmNlIEFMU0EgaXMgdXNlZCBkaXJlY3RseS4gVG8gZW5zdXJlCnRoaXMsIGVkaXQg L2V0Yy9wdWxzZS9jbGllbnQuY29uZiBhbmQgYWRkIGBhdXRvc3Bhd249bm9gLiBUaGVuIHJ1bgpg cHVsc2VhdWRpbyAtLWtpbGxgLgoKVGhpcyBjb21taXQgZGVsZXRlcyB0aGUgZXhpc3RpbmcgYXVk aW8gdGVzdHMuIFRoZXkgd2VyZW4ndCBydW4gYW5kIHJlcXVpcmVkIGFuCmV4b3RpYyBjb25maWd1 cmF0aW9uIChIRE1JIGF1ZGlvIHNwbGl0dGVyLCBkdW1teSBIRE1JIHNpbmsgYW5kIGEgbGluZS1p biBwb3J0Cm9uIHRoZSBEVVQpLgoKVGhpcyBwYXRjaCBkZXBlbmRzIG9uIHRoZSBmb2xsb3dpbmcg Q2hhbWVsZW9uIGJ1Z3M6CgotIGh0dHBzOi8vY3JidWcuY29tLzk0ODA2MAotIGh0dHBzOi8vY3Ji dWcuY29tLzk1MDg1NwoKU2lnbmVkLW9mZi1ieTogU2ltb24gU2VyIDxzaW1vbi5zZXJAaW50ZWwu Y29tPgotLS0KIGRvY3MvYXVkaW8udHh0ICAgICAgICAgICAgIHwgIDQ1IC0tLQogZG9jcy9jaGFt ZWxpdW0udHh0ICAgICAgICAgfCAgMzIgKy0KIGxpYi9pZ3QuaCAgICAgICAgICAgICAgICAgIHwg ICAxICsKIGxpYi9pZ3RfYWxzYS5jICAgICAgICAgICAgIHwgIDQyICsrLQogbGliL2lndF9hbHNh LmggICAgICAgICAgICAgfCAgIDEgKwogbGliL2lndF9hdWRpby5jICAgICAgICAgICAgfCAyODUg KysrKysrKysrKysrLS0tLS0tCiBsaWIvaWd0X2F1ZGlvLmggICAgICAgICAgICB8ICAxMiArLQog bGliL2lndF9hdXguYyAgICAgICAgICAgICAgfCAgMzEgKysKIGxpYi9pZ3RfYXV4LmggICAgICAg ICAgICAgIHwgICAxICsKIGxpYi9pZ3RfY2hhbWVsaXVtLmMgICAgICAgIHwgMTAxICsrKysrKysK IGxpYi9pZ3RfY2hhbWVsaXVtLmggICAgICAgIHwgIDExICsKIGxpYi9pZ3RfY2hhbWVsaXVtX3N0 cmVhbS5jIHwgNTkyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGxpYi9p Z3RfY2hhbWVsaXVtX3N0cmVhbS5oIHwgIDUyICsrKysKIGxpYi9tZXNvbi5idWlsZCAgICAgICAg ICAgIHwgICA1ICstCiBtZXNvbi5idWlsZCAgICAgICAgICAgICAgICB8ICA1MiArKy0tCiBtZXNv bl9vcHRpb25zLnR4dCAgICAgICAgICB8ICAgNiAtCiB0ZXN0cy9hdWRpby5jICAgICAgICAgICAg ICB8IDE5MyAtLS0tLS0tLS0tLS0KIHRlc3RzL2ttc19jaGFtZWxpdW0uYyAgICAgIHwgMjc2ICsr KysrKysrKysrKysrKystCiB0ZXN0cy9tZXNvbi5idWlsZCAgICAgICAgICB8ICAgOSArLQogMTkg ZmlsZXMgY2hhbmdlZCwgMTM1OCBpbnNlcnRpb25zKCspLCAzODkgZGVsZXRpb25zKC0pCiBkZWxl dGUgbW9kZSAxMDA2NDQgZG9jcy9hdWRpby50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvaWd0 X2NoYW1lbGl1bV9zdHJlYW0uYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9pZ3RfY2hhbWVsaXVt X3N0cmVhbS5oCiBkZWxldGUgbW9kZSAxMDA2NDQgdGVzdHMvYXVkaW8uYwoKZGlmZiAtLWdpdCBh L2RvY3MvYXVkaW8udHh0IGIvZG9jcy9hdWRpby50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDE1OGFkNWQxLi4wMDAwMDAwMAotLS0gYS9kb2NzL2F1ZGlvLnR4dAorKysgL2Rldi9u dWxsCkBAIC0xLDQ1ICswLDAgQEAKLUF1ZGlvIFN1cHBvcnQgaW4gSUdUCi09PT09PT09PT09PT09 PT09PT09PQotCi1UaGlzIGRvY3VtZW50IHByb3ZpZGVzIGluZm9ybWF0aW9uIGFuZCBpbnN0cnVj dGlvbnMgYWJvdXQgYXVkaW8gc3VwcG9ydCBpbiBJR1QuCi0KLUludHJvZHVjdGlvbgotLS0tLS0t LS0tLS0tCi0KLVRoZSBhdWRpbyB0ZXN0IGlzIGFpbWVkIGF0IHRlc3RpbmcgdGhlIGF1ZGlvIGZl YXR1cmVzIG9mIGRpc3BsYXkgY29ubmVjdG9ycywKLXN1Y2ggYXMgSERNSS4KLQotVGVzdCBzZXR1 cAotLS0tLS0tLS0tLQotCi1UaGUgc2V0dXAgcmVxdWlyZWQgZm9yIHRoZSBhdWRpbyB0ZXN0IGNv bnNpc3RzIG9mIHVzaW5nIGFuIEhETUktVkdBIGFkYXB0ZXIgd2l0aAotYW4gYXVkaW8tb3V0IDMu NSBtbSBqYWNrIHRvIGV4dHJhY3QgdGhlIGF1ZGlvIGZyb20gdGhlIEhETUkgaW50ZXJmYWNlLgot VGhlIGF1ZGlvLW91dCBqYWNrIGlzIGNvbm5lY3RlZCBiYWNrIHRvIHRoZSBkZXZpY2UtdW5kZXIt dGVzdCdzIGxpbmUtaW4uCi0KLURlcGVuZGluZyBvbiB0aGUgYmVoYXZpb3Igb2YgdGhlIGFkYXB0 ZXIsIGl0IG1heSBiZSBuZWNlc3NhcnkgdG8gY29ubmVjdCBhCi1naG9zdCBWR0EgZG9uZ2xlIHRv IGl0IChpbiBvcmRlciB0byBlbXVsYXRlIGEgY29ubmVjdGVkIGRpc3BsYXkpIHRvIGVuYWJsZSB0 aGUKLWF1ZGlvIG91dHB1dC4gVGhlcmUgYXJlIGd1aWRlcyBhdmFpbGFibGUgZGV0YWlsaW5nIGhv dyB0byBidWlsZCB0aGVzZS4KLQotV2hlbiBleGVjdXRlZCwgdGhlIHRlc3Qgd2lsbCBhdXRvbWF0 aWNhbGx5IHNlbmQgdGhlIHRlc3QgYXVkaW8gc2lnbmFsIHRvIGFsbAotQUxTQSBhdWRpbyBIRE1J IG91dHB1dHMgYW5kIHJlY29yZCBmcm9tIHRoZSBzdGFuZGFyZCBBTFNBIGNhcHR1cmUgZGV2aWNl LgotCi1Db25maWd1cmF0aW9uCi0tLS0tLS0tLS0tLS0tCi0KLUluIG9yZGVyIHRvIGRlcGxveSB0 aGUgdGVzdCwgQUxTQSBjb250cm9scyBoYXZlIHRvIGJlIGNvbmZpZ3VyZWQgdG8gc2V0IHRoZQot QUxTQSBjYXB0dXJlIHNvdXJjZSB0byBsaW5lLWluLiBPbiBJbnRlbCB4ODYgc3lzdGVtcywgdGhp cyBjYW4gYmUgYWNoaWV2ZWQKLXdpdGggdGhlIGZvbGxvd2luZyBjYWxscyB0byB0aGUgYW1peGVy IHV0aWxpdHk6Ci0jIGFtaXhlciBzc2V0IExpbmUgMzEgb24KLSMgYW1peGVyIHNzZXQgIklucHV0 IFNvdXJjZSIgTGluZQotCi1JdCBpcyB0aGVuIHVzZWZ1bCB0byBzdG9yZSB0aGUgQUxTQSBzdGF0 ZSBwZXJtYW5lbnRseSB3aXRoIHRoZSBhbHNhY3RsIHV0aWxpdHk6Ci0jIGFsc2FjdGwgc3RvcmUK LQotVGhlc2Ugc2V0dGluZ3MgY2FuIGJlIHJlc3RvcmVkIHdpdGggdGhlIGFsc2FjdGwgdXRpbGl0 eToKLSMgYWxzYWN0bCByZXN0b3JlCi0KLUl0IGlzIGRlc2lyYWJsZSB0byBlbnN1cmUgdGhhdCB0 aGUgYWxzYS1yZXN0b3JlIGFuZCBhbHNhLXN0YXRlIHN5c3RlbWQgc2VydmljZXMKLWFyZSBlbmFi bGVkIHRvIGRvIHRoaXMgam9iIGF1dG9tYXRpY2FsbHksIGVzcGVjaWFsbHkgaW4gdGhlIGNhc2Ug b2YgYW4KLWF1dG9tYXRlZCB0ZXN0aW5nIHN5c3RlbToKLSMgc3lzdGVtY3RsIGVuYWJsZSBhbHNh LXJlc3RvcmUKLSMgc3lzdGVtY3RsIGVuYWJsZSBhbHNhLXN0YXRlCmRpZmYgLS1naXQgYS9kb2Nz L2NoYW1lbGl1bS50eHQgYi9kb2NzL2NoYW1lbGl1bS50eHQKaW5kZXggMGNhYmNkYzYuLjMxNmRk NjA3IDEwMDY0NAotLS0gYS9kb2NzL2NoYW1lbGl1bS50eHQKKysrIGIvZG9jcy9jaGFtZWxpdW0u dHh0CkBAIC0xMzksNiArMTM5LDIzIEBAICQgbWFrZSByZW1vdGUtaW5zdGFsbCBDSEFNRUxFT05f SE9TVD0xOTIuMTY4LjcyLjEKIAogVGhlIHByb2Nlc3MgcmVxdWlyZXMgdGhlIENoYW1lbGl1bSB0 byBiZSBjb25uZWN0ZWQgdG8gdGhlIEludGVybmV0IHRvIHN1Y2NlZWQuCiAKK0F1ZGlvIENhcHR1 cmUKKy0tLS0tLS0tLS0tLS0KKworVGhlIENoYW1lbGl1bSBzdXBwb3J0cyBhdWRpbyBjYXB0dXJl LiBJR1QgdGVzdHMgdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlCitDaGFtZWxpdW0gc3RyZWFtaW5nIHNl cnZlciB0byBkb3dubG9hZCBhdWRpbyBzYW1wbGVzIGZyb20gdGhlIENoYW1lbGl1bS4KKworSUdU IG5lZWRzIGRpcmVjdCBhY2Nlc3MgdG8gYXVkaW8gZGV2aWNlcyB0aHJvdWdoIEFMU0EsIHNvIFB1 bHNlQXVkaW8gbmVlZHMgdG8KK2JlIHN0b3BwZWQgKG90aGVyd2lzZSBhdWRpbyB0ZXN0cyB3aWxs IGF1dG9tYXRpY2FsbHkgZ2V0IHNraXBwZWQpLiBUbyBtYWtlIHN1cmUKK1B1bHNlQXVkaW8gaXNu J3QgcnVubmluZzoKKworLSBFZGl0IC9ldGMvcHVsc2UvY2xpZW50LmNvbmYgYW5kIGFkZCBhdXRv c3Bhd249bm8KKy0gUnVuIGBwdWxzZWF1ZGlvIC0ta2lsbGAgKGlmIGl0IHN1Y2NlZWRzLCBpdCBt ZWFucyBQdWxzZUF1ZGlvIHdhcyBydW5uaW5nKQorLSBNYWtlIHN1cmUgYSBERSB0aGF0IGF1dG9t YXRpY2FsbHkgc3Bhd25zIFB1bHNlQXVkaW8gaXNuJ3QgcnVubmluZworCitJbiBjYXNlIGEgdGVz dCBmYWlscywgdGhlIHJhdyBjYXB0dXJlZCBhdWRpbyBmaWxlcyB3aWxsIGJlIGR1bXBlZCBpbiBh IFdBVgorZmlsZS4KKwogQ29udHJpYnV0aW5nIENoYW5nZXMgdG8gdGhlIERhZW1vbgogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0xNDYsMTAgKzE2MywxMSBAQCBDb250 cmlidXRpb25zIHRvIHRoZSBDaGFtZWxpdW0gZGFlbW9uLCBqdXN0IGxpa2UgYW55IGNvbnRyaWJ1 dGlvbiB0byBDaHJvbWl1bU9TLAogYXJlIHN1Ym1pdHRlZCBhbmQgcmV2aWV3ZWQgYXQ6IGh0dHBz Oi8vY2hyb21pdW0tcmV2aWV3Lmdvb2dsZXNvdXJjZS5jb20vCiAKIFRoZSBDaHJvbWl1bU9TIHBy b2plY3QgcHJvdmlkZXMgYW4gZXh0ZW5zaXZlIGRldmVsb3BlciBndWlkZToKLWh0dHBzOi8vd3d3 LmNocm9taXVtLm9yZy9jaHJvbWl1bS1vcy9kZXZlbG9wZXItZ3VpZGUgdGhhdCBhc3N1bWVzIHJ1 bm5pbmcgd2l0aGluCi10aGUgQ2hyb21pdW1PUyBidWlsZCBzeXN0ZW0uIFNpbmNlIHRoaXMgaXMg bGlrZWx5IG5vdCB0aGUgY2FzZSBmb3IgY29udHJpYnV0aW5nCi10byB0aGUgQ2hhbWVsaXVtIGRh ZW1vbiwgb25seSB0aGUgcGFydCBhYm91dCB1cGxvYWRpbmcgY2hhbmdlcyBpcyByZWxldmFudDoK LWh0dHBzOi8vd3d3LmNocm9taXVtLm9yZy9jaHJvbWl1bS1vcy9kZXZlbG9wZXItZ3VpZGUjVE9D LVVwbG9hZC15b3VyLWNoYW5nZXMtYW5kLWdldC1hLWNvZGUtcmV2aWV3CitodHRwczovL2Nocm9t aXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW1vcy9kb2NzLysvbWFzdGVyL2RldmVsb3Blcl9n dWlkZS5tZAorSXQgdGhhdCBhc3N1bWVzIHJ1bm5pbmcgd2l0aGluIHRoZSBDaHJvbWl1bU9TIGJ1 aWxkIHN5c3RlbS4gU2luY2UgdGhpcyBpcworbGlrZWx5IG5vdCB0aGUgY2FzZSBmb3IgY29udHJp YnV0aW5nIHRvIHRoZSBDaGFtZWxpdW0gZGFlbW9uLCBvbmx5IHRoZSBwYXJ0CithYm91dCB1cGxv YWRpbmcgY2hhbmdlcyBpcyByZWxldmFudDoKK2h0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNl LmNvbS9jaHJvbWl1bW9zL2RvY3MvKy9tYXN0ZXIvZGV2ZWxvcGVyX2d1aWRlLm1kI1VwbG9hZC15 b3VyLWNoYW5nZXMtYW5kLWdldC1hLWNvZGUtcmV2aWV3CiAKIE1vc3Qgb2YgdGhlIHByb2Nlc3Mg aXMgYWJvdXQgdXNpbmcgdGhlIEdlcnJpdCB3ZWIgaW50ZXJmYWNlIGZvciBzdWJtaXR0aW5nIGFu ZAogaGF2aW5nIHRoZSBjaGFuZ2UgcmV2aWV3ZWQgYW5kIG5vdCBmb3JnZXR0aW5nIHRoZSBDaGFu Z2UtSWQsIFRFU1Q9IGFuZCBCVUc9CkBAIC0xNjIsNyArMTgwLDcgQEAgU3VwcG9ydCBmb3IgdGhl IENoYW1lbGl1bSBwbGF0Zm9ybSBpbiBJR1QgaXMgZm91bmQgaW4gdGhlIGZvbGxvd2luZyBwbGFj ZXM6CiAqIGxpYi9pZ3RfY2hhbWVsaXVtLmM6IGxpYnJhcnkgd2l0aCBDaGFtZWxpdW0tcmVsYXRl ZCBoZWxwZXJzCiAqIHRlc3RzL2ttc19jaGFtZWxpdW0uYzogc3ViLXRlc3RzIHVzaW5nIHRoZSBD aGFtZWxpdW0KIAotQXMgb2YgbGF0ZSBBdWd1c3QgMjAxNywgdGhlIGZvbGxvd2luZyBmZWF0dXJl cyBhcmUgdGVzdGVkIGJ5IElHVDoKK0FzIG9mIGVhcmx5IEFwcmlsIDIwMTksIHRoZSBmb2xsb3dp bmcgZmVhdHVyZXMgYXJlIHRlc3RlZCBieSBJR1Q6CiAqIFBpeGVsLWJ5LXBpeGVsIGZyYW1lIGlu dGVncml0eSB0ZXN0cyBmb3IgRFAgYW5kIEhETUkKICogRXJyb3ItdHJlbmQtYmFzZWQgZnJhbWUg aW50ZWdyaXR5IHRlc3RzIGZvciBWR0EKICogQ1JDLWJhc2VkIGZyYW1lIGludGVncml0eSB0ZXN0 cyBmb3IgRFAgYW5kIEhETUkKQEAgLTE3Myw2ICsxOTEsNyBAQCBBcyBvZiBsYXRlIEF1Z3VzdCAy MDE3LCB0aGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSB0ZXN0ZWQgYnkgSUdUOgogICBlYWNoIGlu dGVyZmFjZSBvciBjb21iaW5lZAogKiBFRElEIGRpc3BsYXkgaWRlbnRpZmllciBpbnRlZ3JpdHkg Y2hlY2sgZm9yIGFsbCBpbnRlcmZhY2VzCiAqIEVESUQgZGlzcGxheSBpZGVudGlmaWVyIGNoYW5n ZSBkdXJpbmcgc3VzcGVuZCBmb3IgYWxsIGludGVyZmFjZXMKKyogQXVkaW8gRm91cmllci1iYXNl ZCB0ZXN0cyBmb3IgRFAgYXQgNDhLSHoKIAogRnV0dXJlIERldmVsb3BtZW50cwogLS0tLS0tLS0t LS0tLS0tLS0tLQpAQCAtMTgwLDcgKzE5OSw4IEBAIEZ1dHVyZSBEZXZlbG9wbWVudHMKIFdpdGgg dGhlIGN1cnJlbnQgZ2VuZXJhdGlvbiBvZiB0aGUgaGFyZHdhcmUgcGxhdGZvcm0sIHN1cHBvcnQg Zm9yIHRlc3RpbmcgYQogbnVtYmVyIG9mIGFkZGl0aW9uYWwgZGlzcGxheSBmZWF0dXJlcyBjb3Vs ZCBiZSBpbmNsdWRlZCBhcyBmdXR1cmUgZGV2ZWxvcG1lbnRzLAogaW5jbHVkaW5nOgotKiBBdWRp byBjYXB0dXJlIGZyb20gSERNSSBhbmQgRFAKKyogQXVkaW8gY2FwdHVyZSBmcm9tIEhETUksIHdp dGggbXVsdGlwbGUgY2hhbm5lbHMgYW5kIHdpdGggb3RoZXIgcGxheWJhY2sKKyAgc2FtcGxpbmcg cmF0ZXMKICogSGlnaC1iYW5kd2lkdGggRGlnaXRhbCBDb250ZW50IFByb3RlY3Rpb24gKEhEQ1Ap IHN0cmVhbWluZyB0byB0aGUgZGlzcGxheQogKiBSZW1vdGUgY29udHJvbCBmb3J3YXJkaW5nIChD RUMpIHNlbnQgZnJvbSB0aGUgZGlzcGxheQogKiBZVVYgY29sb3JzcGFjZSBmb3IgSERNSSwgaW5z dGVhZCBvZiBSR0IKZGlmZiAtLWdpdCBhL2xpYi9pZ3QuaCBiL2xpYi9pZ3QuaAppbmRleCA2NjU0 YTY1OS4uNTg1MmQ1NTcgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3QuaAorKysgYi9saWIvaWd0LmgKQEAg LTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJpZ3Rfc3RhdHMuaCIKICNpZmRlZiBIQVZFX0NIQU1F TElVTQogI2luY2x1ZGUgImlndF9jaGFtZWxpdW0uaCIKKyNpbmNsdWRlICJpZ3RfY2hhbWVsaXVt X3N0cmVhbS5oIgogI2VuZGlmCiAjaW5jbHVkZSAiaW5zdGRvbmUuaCIKICNpbmNsdWRlICJpbnRl bF9iYXRjaGJ1ZmZlci5oIgpkaWZmIC0tZ2l0IGEvbGliL2lndF9hbHNhLmMgYi9saWIvaWd0X2Fs c2EuYwppbmRleCBiYjY2ODJjYy4uNDU2YzBjODUgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfYWxzYS5j CisrKyBiL2xpYi9pZ3RfYWxzYS5jCkBAIC0yNiw5ICsyNiwxMSBAQAogCiAjaW5jbHVkZSAiY29u ZmlnLmgiCiAKKyNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlIDxhbHNhL2Fzb3VuZGxpYi5o PgogCiAjaW5jbHVkZSAiaWd0X2Fsc2EuaCIKKyNpbmNsdWRlICJpZ3RfYXV4LmgiCiAjaW5jbHVk ZSAiaWd0X2NvcmUuaCIKIAogI2RlZmluZSBIQU5ETEVTX01BWAk4CkBAIC02MSw2ICs2MywyNSBA QCBzdHJ1Y3QgYWxzYSB7CiAJaW50IGlucHV0X3NhbXBsZXNfdHJpZ2dlcjsKIH07CiAKKy8qKgor ICogYWxzYV9oYXNfZXhjbHVzaXZlX2FjY2VzczoKKyAqIENoZWNrIHdoZXRoZXIgQUxTQSBoYXMg ZXhjbHVzaXZlIGFjY2VzcyB0byBhdWRpbyBkZXZpY2VzLiBGYWlscyBpZgorICogUHVsc2VBdWRp byBpcyBydW5uaW5nLgorICovCitib29sIGFsc2FfaGFzX2V4Y2x1c2l2ZV9hY2Nlc3Modm9pZCkK K3sKKwlpZiAoaWd0X2lzX3Byb2Nlc3NfcnVubmluZygicHVsc2VhdWRpbyIpKSB7CisJCWlndF93 YXJuKCJJdCBzZWVtcyB0aGF0IFB1bHNlQXVkaW8gaXMgcnVubmluZy4gQXVkaW8gdGVzdHMgIgor CQkJICJuZWVkIGRpcmVjdCBhY2Nlc3MgdG8gYXVkaW8gZGV2aWNlcywgc28gUHVsc2VBdWRpbyAi CisJCQkgIm5lZWRzIHRvIGJlIHN0b3BwZWQuIFlvdSBjYW4gZG8gc28gYnkgcnVubmluZyAiCisJ CQkgImBwdWxzZWF1ZGlvIC0ta2lsbGAuIEFsc28gbWFrZSBzdXJlIHRvIGFkZCAiCisJCQkgImF1 dG9zcGF3bj1ubyB0byAvZXRjL3B1bHNlL2NsaWVudC5jb25mXG4iKTsKKwkJcmV0dXJuIGZhbHNl OworCX0KKworCXJldHVybiB0cnVlOworfQorCiBzdGF0aWMgdm9pZCBhbHNhX2Vycm9yX2hhbmRs ZXIoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKmZ1bmN0aW9uLAogCQkJ ICAgICAgIGludCBlcnIsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQogewpAQCAtNzgsNiArOTksMTEg QEAgc3RydWN0IGFsc2EgKmFsc2FfaW5pdCh2b2lkKQogewogCXN0cnVjdCBhbHNhICphbHNhOwog CisJaWYgKCFhbHNhX2hhc19leGNsdXNpdmVfYWNjZXNzKCkpIHsKKwkJaWd0X3dhcm4oImFsc2Eg ZG9lc24ndCBoYXZlIGV4Y2x1c2l2ZSBhY2Nlc3MgdG8gYXVkaW8gZGV2aWNlc1xuIik7CisJCXJl dHVybiBOVUxMOworCX0KKwogCWFsc2EgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBhbHNhKSk7CiAJ bWVtc2V0KGFsc2EsIDAsIHNpemVvZihzdHJ1Y3QgYWxzYSkpOwogCkBAIC01NTMsMTYgKzU3OSwy MCBAQCBpbnQgYWxzYV9ydW4oc3RydWN0IGFsc2EgKmFsc2EsIGludCBkdXJhdGlvbl9tcykKIAkJ CQkJaWYgKHJldCA8IDApIHsKIAkJCQkJCXJldCA9IHNuZF9wY21fcmVjb3ZlcihoYW5kbGUsCiAJ CQkJCQkJCSAgICAgIHJldCwgMCk7Ci0JCQkJCQlpZiAocmV0IDwgMCkKKwkJCQkJCWlmIChyZXQg PCAwKSB7CisJCQkJCQkJaWd0X2RlYnVnKCJzbmRfcGNtX3JlY292ZXIgYWZ0ZXIgc25kX3BjbV93 cml0ZWkgZmFpbGVkIik7CiAJCQkJCQkJZ290byBjb21wbGV0ZTsKKwkJCQkJCX0KIAkJCQkJfQog CiAJCQkJCW91dHB1dF9jb3VudHNbaV0gKz0gcmV0OwogCQkJCX0gZWxzZSBpZiAob3V0cHV0X2Nv dW50c1tpXSA8IG91dHB1dF90cmlnZ2VyICYmCiAJCQkJCSAgIHJldCA8IDApIHsKIAkJCQkJcmV0 ID0gc25kX3BjbV9yZWNvdmVyKGhhbmRsZSwgcmV0LCAwKTsKLQkJCQkJaWYgKHJldCA8IDApCisJ CQkJCWlmIChyZXQgPCAwKSB7CisJCQkJCQlpZ3RfZGVidWcoInNuZF9wY21fcmVjb3ZlciBmYWls ZWQiKTsKIAkJCQkJCWdvdG8gY29tcGxldGU7CisJCQkJCX0KIAkJCQl9CiAJCQl9CiAKQEAgLTYw OSwxNiArNjM5LDIwIEBAIGludCBhbHNhX3J1bihzdHJ1Y3QgYWxzYSAqYWxzYSwgaW50IGR1cmF0 aW9uX21zKQogCQkJCQlyZXQgPSAwOwogCQkJCX0gZWxzZSBpZiAocmV0IDwgMCkgewogCQkJCQly ZXQgPSBzbmRfcGNtX3JlY292ZXIoaGFuZGxlLCByZXQsIDApOwotCQkJCQlpZiAocmV0IDwgMCkK KwkJCQkJaWYgKHJldCA8IDApIHsKKwkJCQkJCWlndF9kZWJ1Zygic25kX3BjbV9yZWNvdmVyIGFm dGVyIHNuZF9wY21fcmVhZGkgZmFpbGVkIik7CiAJCQkJCQlnb3RvIGNvbXBsZXRlOworCQkJCQl9 CiAJCQkJfQogCiAJCQkJaW5wdXRfY291bnQgKz0gcmV0OwogCQkJCWlucHV0X3RvdGFsICs9IHJl dDsKIAkJCX0gZWxzZSBpZiAoaW5wdXRfY291bnQgPCBpbnB1dF90cmlnZ2VyICYmIHJldCA8IDAp IHsKIAkJCQlyZXQgPSBzbmRfcGNtX3JlY292ZXIoaGFuZGxlLCByZXQsIDApOwotCQkJCWlmIChy ZXQgPCAwKQorCQkJCWlmIChyZXQgPCAwKSB7CisJCQkJCWlndF9kZWJ1Zygic25kX3BjbV9yZWNv dmVyIGZhaWxlZCIpOwogCQkJCQlnb3RvIGNvbXBsZXRlOworCQkJCX0KIAkJCX0KIAkJfQogCX0g d2hpbGUgKCFyZWFjaGVkKTsKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfYWxzYS5oIGIvbGliL2lndF9h bHNhLmgKaW5kZXggNTA3OTUxMzAuLjVjODA0YjQ2IDEwMDY0NAotLS0gYS9saWIvaWd0X2Fsc2Eu aAorKysgYi9saWIvaWd0X2Fsc2EuaApAQCAtMzMsNiArMzMsNyBAQAogCiBzdHJ1Y3QgYWxzYTsK IAorYm9vbCBhbHNhX2hhc19leGNsdXNpdmVfYWNjZXNzKHZvaWQpOwogc3RydWN0IGFsc2EgKmFs c2FfaW5pdCh2b2lkKTsKIGludCBhbHNhX29wZW5fb3V0cHV0KHN0cnVjdCBhbHNhICphbHNhLCBj b25zdCBjaGFyICpkZXZpY2VfbmFtZSk7CiBpbnQgYWxzYV9vcGVuX2lucHV0KHN0cnVjdCBhbHNh ICphbHNhLCBjb25zdCBjaGFyICpkZXZpY2VfbmFtZSk7CmRpZmYgLS1naXQgYS9saWIvaWd0X2F1 ZGlvLmMgYi9saWIvaWd0X2F1ZGlvLmMKaW5kZXggYTA1OTJkNTMuLjRjYzliZGYwIDEwMDY0NAot LS0gYS9saWIvaWd0X2F1ZGlvLmMKKysrIGIvbGliL2lndF9hdWRpby5jCkBAIC0yNiw4ICsyNiwx MSBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpbmNsdWRlIDxtYXRoLmg+CisjaW5jbHVk ZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPGdzbC9nc2xfZmZ0X3Jl YWwuaD4KKyNpbmNsdWRlIDxtYXRoLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CiAKICNpbmNsdWRl ICJpZ3RfYXVkaW8uaCIKICNpbmNsdWRlICJpZ3RfY29yZS5oIgpAQCAtMTI4LDcgKzEzMSw3IEBA IGludCBhdWRpb19zaWduYWxfYWRkX2ZyZXF1ZW5jeShzdHJ1Y3QgYXVkaW9fc2lnbmFsICpzaWdu YWwsIGludCBmcmVxdWVuY3kpCiAgKi8KIHZvaWQgYXVkaW9fc2lnbmFsX3N5bnRoZXNpemUoc3Ry dWN0IGF1ZGlvX3NpZ25hbCAqc2lnbmFsKQogewotCXNob3J0ICpwZXJpb2Q7CisJaW50MTZfdCAq cGVyaW9kOwogCWRvdWJsZSB2YWx1ZTsKIAlpbnQgZnJhbWVzOwogCWludCBmcmVxOwpAQCAtMTQ1 LDkgKzE0OCw5IEBAIHZvaWQgYXVkaW9fc2lnbmFsX3N5bnRoZXNpemUoc3RydWN0IGF1ZGlvX3Np Z25hbCAqc2lnbmFsKQogCiAJCWZvciAoaiA9IDA7IGogPCBmcmFtZXM7IGorKykgewogCQkJdmFs dWUgPSAyLjAgKiBNX1BJICogZnJlcSAvIHNpZ25hbC0+c2FtcGxpbmdfcmF0ZSAqIGo7Ci0JCQl2 YWx1ZSA9IHNpbih2YWx1ZSkgKiBTSFJUX01BWCAvIHNpZ25hbC0+ZnJlcXNfY291bnQ7CisJCQl2 YWx1ZSA9IHNpbih2YWx1ZSkgKiBJTlQxNl9NQVggLyBzaWduYWwtPmZyZXFzX2NvdW50OwogCi0J CQlwZXJpb2Rbal0gPSAoc2hvcnQpIHZhbHVlOworCQkJcGVyaW9kW2pdID0gKGludDE2X3QpIHZh bHVlOwogCQl9CiAKIAkJc2lnbmFsLT5mcmVxc1tpXS5wZXJpb2QgPSBwZXJpb2Q7CkBAIC0xODYs MTcgKzE4OSwxNiBAQCB2b2lkIGF1ZGlvX3NpZ25hbF9jbGVhbihzdHJ1Y3QgYXVkaW9fc2lnbmFs ICpzaWduYWwpCiAgKiBzaWduYWwgZGF0YSAoaW4gaW50ZXJsZWF2ZWQgUzE2X0xFIGZvcm1hdCks IGF0IHRoZSByZXF1ZXN0ZWQgc2FtcGxpbmcgcmF0ZQogICogYW5kIG51bWJlciBvZiBjaGFubmVs cy4KICAqLwotdm9pZCBhdWRpb19zaWduYWxfZmlsbChzdHJ1Y3QgYXVkaW9fc2lnbmFsICpzaWdu YWwsIHNob3J0ICpidWZmZXIsIGludCBmcmFtZXMpCit2b2lkIGF1ZGlvX3NpZ25hbF9maWxsKHN0 cnVjdCBhdWRpb19zaWduYWwgKnNpZ25hbCwgaW50MTZfdCAqYnVmZmVyLCBpbnQgZnJhbWVzKQog ewotCXNob3J0ICpkZXN0aW5hdGlvbjsKLQlzaG9ydCAqc291cmNlOworCWludDE2X3QgKmRlc3Rp bmF0aW9uLCAqc291cmNlOwogCWludCB0b3RhbDsKIAlpbnQgZnJlcV9mcmFtZXM7CiAJaW50IGZy ZXFfb2Zmc2V0OwogCWludCBjb3VudDsKIAlpbnQgaSwgaiwgazsKIAotCW1lbXNldChidWZmZXIs IDAsIHNpemVvZihzaG9ydCkgKiBzaWduYWwtPmNoYW5uZWxzICogZnJhbWVzKTsKKwltZW1zZXQo YnVmZmVyLCAwLCBzaXplb2YoaW50MTZfdCkgKiBzaWduYWwtPmNoYW5uZWxzICogZnJhbWVzKTsK IAogCWZvciAoaSA9IDA7IGkgPCBzaWduYWwtPmZyZXFzX2NvdW50OyBpKyspIHsKIAkJdG90YWwg PSAwOwpAQCAtMjI5LDk3ICsyMzEsMjE0IEBAIHZvaWQgYXVkaW9fc2lnbmFsX2ZpbGwoc3RydWN0 IGF1ZGlvX3NpZ25hbCAqc2lnbmFsLCBzaG9ydCAqYnVmZmVyLCBpbnQgZnJhbWVzKQogfQogCiAv KioKLSAqIGF1ZGlvX3NpZ25hbF9kZXRlY3Q6Ci0gKiBAc2lnbmFsOiBUaGUgdGFyZ2V0IHNpZ25h bCBzdHJ1Y3R1cmUKLSAqIEBjaGFubmVsczogVGhlIGlucHV0IGRhdGEncyBudW1iZXIgb2YgY2hh bm5lbHMKLSAqIEBzYW1wbGluZ19yYXRlOiBUaGUgaW5wdXQgZGF0YSdzIHNhbXBsaW5nIHJhdGUK LSAqIEBidWZmZXI6IFRoZSBpbnB1dCBkYXRhJ3MgYnVmZmVyCi0gKiBAZnJhbWVzOiBUaGUgaW5w dXQgZGF0YSdzIG51bWJlciBvZiBmcmFtZXMKLSAqCi0gKiBEZXRlY3QgdGhhdCB0aGUgZnJlcXVl bmNpZXMgc3BlY2lmaWVkIGluIEBzaWduYWwsIGFuZCBvbmx5IHRob3NlLCBhcmUKLSAqIHByZXNl bnQgaW4gdGhlIGlucHV0IGRhdGEuIFRoZSBpbnB1dCBkYXRhJ3MgZm9ybWF0IGlzIHJlcXVpcmVk IHRvIGJlIFMxNl9MRS4KKyAqIENoZWNrcyB0aGF0IGZyZXF1ZW5jaWVzIHNwZWNpZmllZCBpbiBz aWduYWwsIGFuZCBvbmx5IHRob3NlLCBhcmUgaW5jbHVkZWQKKyAqIGluIHRoZSBpbnB1dCBkYXRh LgogICoKLSAqIFJldHVybnM6IEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGRldGVj dGlvbiB3YXMgc3VjY2Vzc2Z1bAorICogc2FtcGxpbmdfcmF0ZSBpcyBnaXZlbiBpbiBIei4gZGF0 YV9sZW4gaXMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBkYXRhLgogICovCi1ib29sIGF1ZGlv X3NpZ25hbF9kZXRlY3Qoc3RydWN0IGF1ZGlvX3NpZ25hbCAqc2lnbmFsLCBpbnQgY2hhbm5lbHMs Ci0JCQkgaW50IHNhbXBsaW5nX3JhdGUsIHNob3J0ICpidWZmZXIsIGludCBmcmFtZXMpCitib29s IGF1ZGlvX3NpZ25hbF9kZXRlY3Qoc3RydWN0IGF1ZGlvX3NpZ25hbCAqc2lnbmFsLCBpbnQgc2Ft cGxpbmdfcmF0ZSwKKwkJCSBkb3VibGUgKmRhdGEsIHNpemVfdCBkYXRhX2xlbikKIHsKLQlkb3Vi bGUgZGF0YVtmcmFtZXNdOwotCWludCBhbXBsaXR1ZGVbZnJhbWVzIC8gMl07CisJc2l6ZV90IGFt cGxpdHVkZV9sZW4gPSBkYXRhX2xlbiAvIDIgKyAxOworCWRvdWJsZSBhbXBsaXR1ZGVbYW1wbGl0 dWRlX2xlbl07CiAJYm9vbCBkZXRlY3RlZFtzaWduYWwtPmZyZXFzX2NvdW50XTsKLQlpbnQgdGhy ZXNob2xkOwotCWJvb2wgYWJvdmU7Ci0JaW50IGVycm9yOwotCWludCBmcmVxID0gMDsKLQlpbnQg bWF4OwotCWludCBjLCBpLCBqOwotCi0JLyogQWxsb3dlZCBlcnJvciBpbiBIeiBkdWUgdG8gRkZU IHN0ZXAuICovCi0JZXJyb3IgPSBzYW1wbGluZ19yYXRlIC8gZnJhbWVzOworCWludCByZXQsIGVw c2lsb24sIGZyZXEsIG1heF9mcmVxOworCWRvdWJsZSBtYXgsIHRocmVzaG9sZDsKKwlzaXplX3Qg aSwgajsKKwlib29sIGFib3ZlLCBzdWNjZXNzOworCisJLyogQWxsb3dlZCBlcnJvciBpbiBIeiBk dWUgdG8gRkZUIHN0ZXAgKi8KKwllcHNpbG9uID0gc2FtcGxpbmdfcmF0ZSAvIGRhdGFfbGVuOwor CWlndF9kZWJ1ZygiYWxsb3dlZCBmcmVxLiBlcnJvcjogJWQgSHpcbiIsIGVwc2lsb24pOworCisJ cmV0ID0gZ3NsX2ZmdF9yZWFsX3JhZGl4Ml90cmFuc2Zvcm0oZGF0YSwgMSwgZGF0YV9sZW4pOwor CWlndF9hc3NlcnQocmV0ID09IDApOworCisJLyogRm9yIGkgPCBkYXRhX2xlbiAvIDIsIHRoZSBy ZWFsIHBhcnQgb2YgdGhlIGktdGggdGVybSBpcyBzdG9yZWQgYXQKKwkgKiBkYXRhW2ldIGFuZCBp dHMgaW1hZ2luYXJ5IHBhcnQgaXMgc3RvcmVkIGF0IGRhdGFbZGF0YV9sZW4gLSBpXS4KKwkgKiBp ID0gMCBhbmQgaSA9IGRhdGFfbGVuIC8gMiBhcmUgc3BlY2lhbCBjYXNlcywgdGhleSBhcmUgcHVy ZWx5IHJlYWwKKwkgKiBzbyB0aGVpciBpbWFnaW5hcnkgcGFydCBpc24ndCBzdG9yZWQuCisJICoK KwkgKiBUaGUgYW1wbGl0dWRlIGlzIGVuY29kZWQgYXMgdGhlIG1hZ25pdHVkZSBvZiB0aGUgY29t cGxleCBudW1iZXIgYW5kCisJICogdGhlIHBoYXNlIGlzIGVuY29kZWQgYXMgaXRzIGFuZ2xlLgor CSAqLworCW1heCA9IDA7CisJYW1wbGl0dWRlWzBdID0gZGF0YVswXTsKKwlmb3IgKGkgPSAxOyBp IDwgYW1wbGl0dWRlX2xlbiAtIDE7IGkrKykgeworCQlhbXBsaXR1ZGVbaV0gPSBoeXBvdChkYXRh W2ldLCBkYXRhW2RhdGFfbGVuIC0gaV0pOworCQlpZiAoYW1wbGl0dWRlW2ldID4gbWF4KQorCQkJ bWF4ID0gYW1wbGl0dWRlW2ldOworCX0KKwlhbXBsaXR1ZGVbYW1wbGl0dWRlX2xlbiAtIDFdID0g ZGF0YVtkYXRhX2xlbiAvIDJdOwogCi0JZm9yIChjID0gMDsgYyA8IGNoYW5uZWxzOyBjKyspIHsK LQkJZm9yIChpID0gMDsgaSA8IGZyYW1lczsgaSsrKQotCQkJZGF0YVtpXSA9IChkb3VibGUpIGJ1 ZmZlcltpICogY2hhbm5lbHMgKyBjXTsKKwlmb3IgKGkgPSAwOyBpIDwgc2lnbmFsLT5mcmVxc19j b3VudDsgaSsrKQorCQlkZXRlY3RlZFtpXSA9IGZhbHNlOwogCi0JCWdzbF9mZnRfcmVhbF9yYWRp eDJfdHJhbnNmb3JtKGRhdGEsIDEsIGZyYW1lcyk7CisJLyogV2Ugd2FudCB0byBkZXRlY3QgcGVh a3MgYWJvdmUgYSBnaXZlbiB0aHJlc2hvbGQuICovCisJdGhyZXNob2xkID0gbWF4IC8gMjsKKwlz dWNjZXNzID0gdHJ1ZTsKKwlhYm92ZSA9IGZhbHNlOworCW1heCA9IDA7CisJbWF4X2ZyZXEgPSAt MTsKKwlmb3IgKGkgPSAwOyBpIDwgYW1wbGl0dWRlX2xlbjsgaSsrKSB7CisJCWZyZXEgPSBzYW1w bGluZ19yYXRlICogaSAvIGRhdGFfbGVuOwogCi0JCW1heCA9IDA7CisJCWlmIChhbXBsaXR1ZGVb aV0gPiB0aHJlc2hvbGQpCisJCQlhYm92ZSA9IHRydWU7CiAKLQkJZm9yIChpID0gMDsgaSA8IGZy YW1lcyAvIDI7IGkrKykgewotCQkJYW1wbGl0dWRlW2ldID0gaHlwb3QoZGF0YVtpXSwgZGF0YVtm cmFtZXMgLSBpXSk7Ci0JCQlpZiAoYW1wbGl0dWRlW2ldID4gbWF4KQotCQkJCW1heCA9IGFtcGxp dHVkZVtpXTsKKwkJaWYgKCFhYm92ZSkgeworCQkJY29udGludWU7CiAJCX0KIAotCQlmb3IgKGkg PSAwOyBpIDwgc2lnbmFsLT5mcmVxc19jb3VudDsgaSsrKQotCQkJZGV0ZWN0ZWRbaV0gPSBmYWxz ZTsKLQotCQl0aHJlc2hvbGQgPSBtYXggLyAyOwotCQlhYm92ZSA9IGZhbHNlOwotCQltYXggPSAw OwotCi0JCWZvciAoaSA9IDA7IGkgPCBmcmFtZXMgLyAyOyBpKyspIHsKLQkJCWlmIChhbXBsaXR1 ZGVbaV0gPiB0aHJlc2hvbGQpCi0JCQkJYWJvdmUgPSB0cnVlOwotCi0JCQlpZiAoYWJvdmUpIHsK LQkJCQlpZiAoYW1wbGl0dWRlW2ldIDwgdGhyZXNob2xkKSB7Ci0JCQkJCWFib3ZlID0gZmFsc2U7 Ci0JCQkJCW1heCA9IDA7Ci0KLQkJCQkJZm9yIChqID0gMDsgaiA8IHNpZ25hbC0+ZnJlcXNfY291 bnQ7IGorKykgewotCQkJCQkJaWYgKHNpZ25hbC0+ZnJlcXNbal0uZnJlcSA+Ci0JCQkJCQkgICAg ZnJlcSAtIGVycm9yICYmCi0JCQkJCQkgICAgc2lnbmFsLT5mcmVxc1tqXS5mcmVxIDwKLQkJCQkJ CSAgICBmcmVxICsgZXJyb3IpIHsKLQkJCQkJCQlkZXRlY3RlZFtqXSA9IHRydWU7Ci0JCQkJCQkJ YnJlYWs7Ci0JCQkJCQl9Ci0JCQkJCX0KLQotCQkJCQkvKiBEZXRlY3RlZCBmcmVxdWVuY3kgd2Fz IG5vdCBnZW5lcmF0ZWQuICovCi0JCQkJCWlmIChqID09IHNpZ25hbC0+ZnJlcXNfY291bnQpIHsK LQkJCQkJCWlndF9kZWJ1ZygiRGV0ZWN0ZWQgYWRkaXRpb25hbCBmcmVxdWVuY3k6ICVkXG4iLAot CQkJCQkJCSAgZnJlcSk7Ci0JCQkJCQlyZXR1cm4gZmFsc2U7Ci0JCQkJCX0KKwkJLyogSWYgd2Ug d2VyZSBhYm92ZSB0aGUgdGhyZXNob2xkIGFuZCB3ZSdyZSBub3QgYW55bW9yZSwgaXQncworCQkg KiB0aW1lIHRvIGRlY2lkZSB3aGV0aGVyIHRoZSBwZWFrIGZyZXF1ZW5jeSBpcyBjb3JyZWN0IG9y CisJCSAqIGludmFsaWQuICovCisJCWlmIChhbXBsaXR1ZGVbaV0gPCB0aHJlc2hvbGQpIHsKKwkJ CWZvciAoaiA9IDA7IGogPCBzaWduYWwtPmZyZXFzX2NvdW50OyBqKyspIHsKKwkJCQlpZiAoc2ln bmFsLT5mcmVxc1tqXS5mcmVxID4KKwkJCQkgICAgbWF4X2ZyZXEgLSBlcHNpbG9uICYmCisJCQkJ ICAgIHNpZ25hbC0+ZnJlcXNbal0uZnJlcSA8CisJCQkJICAgIG1heF9mcmVxICsgZXBzaWxvbikg eworCQkJCQlkZXRlY3RlZFtqXSA9IHRydWU7CisJCQkJCWlndF9kZWJ1ZygiRnJlcXVlbmN5ICVk IGRldGVjdGVkXG4iLAorCQkJCQkJICBtYXhfZnJlcSk7CisJCQkJCWJyZWFrOwogCQkJCX0KKwkJ CX0KIAotCQkJCWlmIChhbXBsaXR1ZGVbaV0gPiBtYXgpIHsKLQkJCQkJbWF4ID0gYW1wbGl0dWRl W2ldOwotCQkJCQlmcmVxID0gc2FtcGxpbmdfcmF0ZSAqIGkgLyBmcmFtZXM7Ci0JCQkJfQorCQkJ LyogV2UgaGF2ZW4ndCBnZW5lcmF0ZWQgdGhpcyBmcmVxdWVuY3ksIGJ1dCB3ZSBkZXRlY3RlZAor CQkJICogaXQuICovCisJCQlpZiAoaiA9PSBzaWduYWwtPmZyZXFzX2NvdW50KSB7CisJCQkJaWd0 X2RlYnVnKCJEZXRlY3RlZCBhZGRpdGlvbmFsIGZyZXF1ZW5jeTogJWRcbiIsCisJCQkJCSAgbWF4 X2ZyZXEpOworCQkJCXN1Y2Nlc3MgPSBmYWxzZTsKIAkJCX0KKworCQkJYWJvdmUgPSBmYWxzZTsK KwkJCW1heCA9IDA7CisJCQltYXhfZnJlcSA9IC0xOwogCQl9CiAKLQkJZm9yIChpID0gMDsgaSA8 IHNpZ25hbC0+ZnJlcXNfY291bnQ7IGkrKykgewotCQkJaWYgKCFkZXRlY3RlZFtpXSkgewotCQkJ CWlndF9kZWJ1ZygiTWlzc2luZyBmcmVxdWVuY3k6ICVkXG4iLAotCQkJCQkgIHNpZ25hbC0+ZnJl cXNbaV0uZnJlcSk7Ci0JCQkJcmV0dXJuIGZhbHNlOwotCQkJfQorCQlpZiAoYW1wbGl0dWRlW2ld ID4gbWF4KSB7CisJCQltYXggPSBhbXBsaXR1ZGVbaV07CisJCQltYXhfZnJlcSA9IGZyZXE7CisJ CX0KKwl9CisKKwkvKiBDaGVjayB0aGF0IGFsbCBmcmVxdWVuY2llcyB3ZSBnZW5lcmF0ZWQgaGF2 ZSBiZWVuIGRldGVjdGVkLiAqLworCWZvciAoaSA9IDA7IGkgPCBzaWduYWwtPmZyZXFzX2NvdW50 OyBpKyspIHsKKwkJaWYgKCFkZXRlY3RlZFtpXSkgeworCQkJaWd0X2RlYnVnKCJNaXNzaW5nIGZy ZXF1ZW5jeTogJWRcbiIsCisJCQkJICBzaWduYWwtPmZyZXFzW2ldLmZyZXEpOworCQkJc3VjY2Vz cyA9IGZhbHNlOwogCQl9CiAJfQogCi0JcmV0dXJuIHRydWU7CisJcmV0dXJuIHN1Y2Nlc3M7Cit9 CisKKy8qKgorICogRXh0cmFjdHMgYSBzaW5nbGUgY2hhbm5lbCBmcm9tIGEgbXVsdGktY2hhbm5l bCBTMzJfTEUgaW5wdXQgYnVmZmVyLgorICovCitzaXplX3QgYXVkaW9fZXh0cmFjdF9jaGFubmVs X3MzMl9sZShkb3VibGUgKmRzdCwgc2l6ZV90IGRzdF9jYXAsCisJCQkJICAgIGludDMyX3QgKnNy Yywgc2l6ZV90IHNyY19sZW4sCisJCQkJICAgIGludCBuX2NoYW5uZWxzLCBpbnQgY2hhbm5lbCkK K3sKKwlzaXplX3QgZHN0X2xlbiwgaTsKKworCWlndF9hc3NlcnQoY2hhbm5lbCA8IG5fY2hhbm5l bHMpOworCWlndF9hc3NlcnQoc3JjX2xlbiAlIG5fY2hhbm5lbHMgPT0gMCk7CisJZHN0X2xlbiA9 IHNyY19sZW4gLyBuX2NoYW5uZWxzOworCWlndF9hc3NlcnQoZHN0X2xlbiA8PSBkc3RfY2FwKTsK Kwlmb3IgKGkgPSAwOyBpIDwgZHN0X2xlbjsgaSsrKQorCQlkc3RbaV0gPSAoZG91YmxlKSBzcmNb aSAqIG5fY2hhbm5lbHMgKyBjaGFubmVsXTsKKworCXJldHVybiBkc3RfbGVuOworfQorCisjZGVm aW5lIFJJRkZfVEFHICJSSUZGIgorI2RlZmluZSBXQVZFX1RBRyAiV0FWRSIKKyNkZWZpbmUgRk1U X1RBRyAiZm10ICIKKyNkZWZpbmUgREFUQV9UQUcgImRhdGEiCisKK3N0YXRpYyB2b2lkCithcHBl bmRfdG9fYnVmZmVyKGNoYXIgKmRzdCwgc2l6ZV90ICppLCBjb25zdCB2b2lkICpzcmMsIHNpemVf dCBzcmNfc2l6ZSkKK3sKKwltZW1jcHkoJmRzdFsqaV0sIHNyYywgc3JjX3NpemUpOworCSppICs9 IHNyY19zaXplOworfQorCisvKioKKyAqIENyZWF0ZXMgYSBuZXcgV0FWIGZpbGUuIHNhbXBsZV9y YXRlIGlzIGluIEh6LiBJZiBwYXRoIGlzIG5vdCBOVUxMLCBpdCB3aWxsCisgKiBiZSBzZXQgdG8g dGhlIG5ldyBmaWxlIHBhdGggKHRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGZyZWUtaW5n IGl0KS4KKyAqCisgKiBBZnRlciBjYWxsaW5nIHRoaXMgZnVuY3Rpb24sIHRoZSBjYWxsZXIgaXMg ZXhwZWN0ZWQgdG8gd3JpdGUgUzMyX0xFIFBDTSBkYXRhCisgKiB0byB0aGUgcmV0dXJuZWQgZmls ZSBkZXNjcmlwdG9yLgorICoKKyAqIFNlZSBodHRwOi8vd3d3LW1tc3AuZWNlLm1jZ2lsbC5jYS9E b2N1bWVudHMvQXVkaW9Gb3JtYXRzL1dBVkUvV0FWRS5odG1sIGZvcgorICogYSBXQVYgZmlsZSBm b3JtYXQgc3BlY2lmaWNhdGlvbi4KKyAqLworaW50IGF1ZGlvX2NyZWF0ZV93YXZfZmlsZV9zMzJf bGUoY29uc3QgY2hhciAqcXVhbGlmaWVyLCB1aW50MzJfdCBzYW1wbGVfcmF0ZSwKKwkJCQkgdWlu dDE2X3QgY2hhbm5lbHMsIGNoYXIgKipwYXRoKQoreworCWNoYXIgX3BhdGhbUEFUSF9NQVhdOwor CWNvbnN0IGNoYXIgKnRlc3RfbmFtZSwgKnN1YnRlc3RfbmFtZTsKKwlpbnQgZmQ7CisJY2hhciBo ZWFkZXJbNDRdOworCXNpemVfdCBpID0gMDsKKwl1aW50MzJfdCBmaWxlX3NpemUsIGNodW5rX3Np emUsIGJ5dGVfcmF0ZTsKKwl1aW50MTZfdCBmb3JtYXQsIGJsb2NrX2FsaWduLCBiaXRzX3Blcl9z YW1wbGU7CisKKwl0ZXN0X25hbWUgPSBpZ3RfdGVzdF9uYW1lKCk7CisJc3VidGVzdF9uYW1lID0g aWd0X3N1YnRlc3RfbmFtZSgpOworCisJaWd0X2Fzc2VydChpZ3RfZnJhbWVfZHVtcF9wYXRoKTsK KwlzbnByaW50ZihfcGF0aCwgc2l6ZW9mKF9wYXRoKSwgIiVzL2F1ZGlvLSVzLSVzLSVzLndhdiIs CisJCSBpZ3RfZnJhbWVfZHVtcF9wYXRoLCB0ZXN0X25hbWUsIHN1YnRlc3RfbmFtZSwgcXVhbGlm aWVyKTsKKworCWlmIChwYXRoKQorCQkqcGF0aCA9IHN0cmR1cChfcGF0aCk7CisKKwlpZ3RfZGVi dWcoIkR1bXBpbmcgJXMgYXVkaW8gdG8gJXNcbiIsIHF1YWxpZmllciwgX3BhdGgpOworCWZkID0g b3BlbihfcGF0aCwgT19XUk9OTFkgfCBPX0NSRUFUIHwgT19UUlVOQyk7CisJaWYgKGZkIDwgMCkg eworCQlpZ3Rfd2Fybigib3BlbiBmYWlsZWQ6ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOworCQly ZXR1cm4gLTE7CisJfQorCisJLyogRmlsZSBoZWFkZXIgKi8KKwlmaWxlX3NpemUgPSBVSU5UMzJf TUFYOyAvKiB1bmtub3duIGZpbGUgc2l6ZSAqLworCWFwcGVuZF90b19idWZmZXIoaGVhZGVyLCAm aSwgUklGRl9UQUcsIHN0cmxlbihSSUZGX1RBRykpOworCWFwcGVuZF90b19idWZmZXIoaGVhZGVy LCAmaSwgJmZpbGVfc2l6ZSwgc2l6ZW9mKGZpbGVfc2l6ZSkpOworCWFwcGVuZF90b19idWZmZXIo aGVhZGVyLCAmaSwgV0FWRV9UQUcsIHN0cmxlbihXQVZFX1RBRykpOworCisJLyogRm9ybWF0IGNo dW5rICovCisJY2h1bmtfc2l6ZSA9IDE2OworCWZvcm1hdCA9IDE7IC8qIFBDTSAqLworCWJpdHNf cGVyX3NhbXBsZSA9IDMyOyAvKiBTMzJfTEUgKi8KKwlieXRlX3JhdGUgPSBzYW1wbGVfcmF0ZSAq IGNoYW5uZWxzICogYml0c19wZXJfc2FtcGxlIC8gODsKKwlibG9ja19hbGlnbiA9IGNoYW5uZWxz ICogYml0c19wZXJfc2FtcGxlIC8gODsKKwlhcHBlbmRfdG9fYnVmZmVyKGhlYWRlciwgJmksIEZN VF9UQUcsIHN0cmxlbihGTVRfVEFHKSk7CisJYXBwZW5kX3RvX2J1ZmZlcihoZWFkZXIsICZpLCAm Y2h1bmtfc2l6ZSwgc2l6ZW9mKGNodW5rX3NpemUpKTsKKwlhcHBlbmRfdG9fYnVmZmVyKGhlYWRl ciwgJmksICZmb3JtYXQsIHNpemVvZihmb3JtYXQpKTsKKwlhcHBlbmRfdG9fYnVmZmVyKGhlYWRl ciwgJmksICZjaGFubmVscywgc2l6ZW9mKGNoYW5uZWxzKSk7CisJYXBwZW5kX3RvX2J1ZmZlciho ZWFkZXIsICZpLCAmc2FtcGxlX3JhdGUsIHNpemVvZihzYW1wbGVfcmF0ZSkpOworCWFwcGVuZF90 b19idWZmZXIoaGVhZGVyLCAmaSwgJmJ5dGVfcmF0ZSwgc2l6ZW9mKGJ5dGVfcmF0ZSkpOworCWFw cGVuZF90b19idWZmZXIoaGVhZGVyLCAmaSwgJmJsb2NrX2FsaWduLCBzaXplb2YoYmxvY2tfYWxp Z24pKTsKKwlhcHBlbmRfdG9fYnVmZmVyKGhlYWRlciwgJmksICZiaXRzX3Blcl9zYW1wbGUsIHNp emVvZihiaXRzX3Blcl9zYW1wbGUpKTsKKworCS8qIERhdGEgY2h1bmsgKi8KKwljaHVua19zaXpl ID0gVUlOVDMyX01BWDsgLyogdW5rbm93biBjaHVuayBzaXplICovCisJYXBwZW5kX3RvX2J1ZmZl cihoZWFkZXIsICZpLCBEQVRBX1RBRywgc3RybGVuKERBVEFfVEFHKSk7CisJYXBwZW5kX3RvX2J1 ZmZlcihoZWFkZXIsICZpLCAmY2h1bmtfc2l6ZSwgc2l6ZW9mKGNodW5rX3NpemUpKTsKKworCWln dF9hc3NlcnQoaSA9PSBzaXplb2YoaGVhZGVyKSk7CisKKwlpZiAod3JpdGUoZmQsIGhlYWRlciwg c2l6ZW9mKGhlYWRlcikpICE9IHNpemVvZihoZWFkZXIpKSB7CisJCWlndF93YXJuKCJ3cml0ZSBm YWlsZWQ6ICVzJ24iLCBzdHJlcnJvcihlcnJubykpOworCQljbG9zZShmZCk7CisJCXJldHVybiAt MTsKKwl9CisKKwlyZXR1cm4gZmQ7CiB9CmRpZmYgLS1naXQgYS9saWIvaWd0X2F1ZGlvLmggYi9s aWIvaWd0X2F1ZGlvLmgKaW5kZXggYjNiNjU4YTQuLjRhYTQzZTY5IDEwMDY0NAotLS0gYS9saWIv aWd0X2F1ZGlvLmgKKysrIGIvbGliL2lndF9hdWRpby5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5j bHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlIDxzdGRib29sLmg+CisjaW5jbHVkZSA8c3RkaW50 Lmg+CiAKIHN0cnVjdCBhdWRpb19zaWduYWw7CiAKQEAgLTM3LDggKzM4LDEzIEBAIHN0cnVjdCBh dWRpb19zaWduYWwgKmF1ZGlvX3NpZ25hbF9pbml0KGludCBjaGFubmVscywgaW50IHNhbXBsaW5n X3JhdGUpOwogaW50IGF1ZGlvX3NpZ25hbF9hZGRfZnJlcXVlbmN5KHN0cnVjdCBhdWRpb19zaWdu YWwgKnNpZ25hbCwgaW50IGZyZXF1ZW5jeSk7CiB2b2lkIGF1ZGlvX3NpZ25hbF9zeW50aGVzaXpl KHN0cnVjdCBhdWRpb19zaWduYWwgKnNpZ25hbCk7CiB2b2lkIGF1ZGlvX3NpZ25hbF9jbGVhbihz dHJ1Y3QgYXVkaW9fc2lnbmFsICpzaWduYWwpOwotdm9pZCBhdWRpb19zaWduYWxfZmlsbChzdHJ1 Y3QgYXVkaW9fc2lnbmFsICpzaWduYWwsIHNob3J0ICpidWZmZXIsIGludCBmcmFtZXMpOwotYm9v bCBhdWRpb19zaWduYWxfZGV0ZWN0KHN0cnVjdCBhdWRpb19zaWduYWwgKnNpZ25hbCwgaW50IGNo YW5uZWxzLAotCQkJIGludCBzYW1wbGluZ19yYXRlLCBzaG9ydCAqYnVmZmVyLCBpbnQgZnJhbWVz KTsKK3ZvaWQgYXVkaW9fc2lnbmFsX2ZpbGwoc3RydWN0IGF1ZGlvX3NpZ25hbCAqc2lnbmFsLCBp bnQxNl90ICpidWZmZXIsIGludCBmcmFtZXMpOworYm9vbCBhdWRpb19zaWduYWxfZGV0ZWN0KHN0 cnVjdCBhdWRpb19zaWduYWwgKnNpZ25hbCwgaW50IHNhbXBsaW5nX3JhdGUsCisJCQkgZG91Ymxl ICpkYXRhLCBzaXplX3QgZGF0YV9sZW4pOworc2l6ZV90IGF1ZGlvX2V4dHJhY3RfY2hhbm5lbF9z MzJfbGUoZG91YmxlICpkc3QsIHNpemVfdCBkc3RfY2FwLAorCQkJCSAgICBpbnQzMl90ICpzcmMs IHNpemVfdCBzcmNfbGVuLAorCQkJCSAgICBpbnQgbl9jaGFubmVscywgaW50IGNoYW5uZWwpOwor aW50IGF1ZGlvX2NyZWF0ZV93YXZfZmlsZV9zMzJfbGUoY29uc3QgY2hhciAqcXVhbGlmaWVyLCB1 aW50MzJfdCBzYW1wbGVfcmF0ZSwKKwkJCQkgdWludDE2X3QgY2hhbm5lbHMsIGNoYXIgKipwYXRo KTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9saWIvaWd0X2F1eC5jIGIvbGliL2lndF9hdXguYwpp bmRleCAwNTUyODM1Mi4uOTVjZWI4NDUgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfYXV4LmMKKysrIGIv bGliL2lndF9hdXguYwpAQCAtMTI1OSw2ICsxMjU5LDM3IEBAIHZvaWQgaWd0X3NldF9tb2R1bGVf cGFyYW1faW50KGNvbnN0IGNoYXIgKm5hbWUsIGludCB2YWwpCiAJaWd0X3NldF9tb2R1bGVfcGFy YW0obmFtZSwgc3RyKTsKIH0KIAorLyoqCisgKiBpZ3RfaXNfcHJvY2Vzc19ydW5uaW5nOgorICog QGNvbW06IE5hbWUgb2YgcHJvY2VzcyBpbiB0aGUgZm9ybSBmb3VuZCBpbiAvcHJvYy9waWQvY29t bSAobGltaXRlZCB0byAxNQorICogY2hhcnMpCisgKgorICogUmV0dXJuczogdHJ1ZSBpbiBjYXNl IHRoZSBwcm9jZXNzIGhhcyBiZWVuIGZvdW5kLCBmYWxzZSBvdGhlcndpc2UuCisgKgorICogVGhp cyBmdW5jdGlvbiBjaGVja3MgaW4gdGhlIHByb2Nlc3MgdGFibGUgZm9yIGFuIGVudHJ5IHdpdGgg dGhlIG5hbWUgQGNvbW0uCisgKi8KK2ludCBpZ3RfaXNfcHJvY2Vzc19ydW5uaW5nKGNvbnN0IGNo YXIgKmNvbW0pCit7CisJUFJPQ1RBQiAqcHJvYzsKKwlwcm9jX3QgKnByb2NfaW5mbzsKKwlib29s IGZvdW5kID0gZmFsc2U7CisKKwlwcm9jID0gb3BlbnByb2MoUFJPQ19GSUxMQ09NIHwgUFJPQ19G SUxMU1RBVCB8IFBST0NfRklMTEFSRyk7CisJaWd0X2Fzc2VydChwcm9jICE9IE5VTEwpOworCisJ d2hpbGUgKChwcm9jX2luZm8gPSByZWFkcHJvYyhwcm9jLCBOVUxMKSkpIHsKKwkJaWYgKCFzdHJu Y2FzZWNtcChwcm9jX2luZm8tPmNtZCwgY29tbSwgc2l6ZW9mKHByb2NfaW5mby0+Y21kKSkpIHsK KwkJCWZyZWVwcm9jKHByb2NfaW5mbyk7CisJCQlmb3VuZCA9IHRydWU7CisJCQlicmVhazsKKwkJ fQorCQlmcmVlcHJvYyhwcm9jX2luZm8pOworCX0KKworCWNsb3NlcHJvYyhwcm9jKTsKKwlyZXR1 cm4gZm91bmQ7Cit9CisKIC8qKgogICogaWd0X3Rlcm1pbmF0ZV9wcm9jZXNzOgogICogQHNpZzog U2lnbmFsIHRvIHNlbmQKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfYXV4LmggYi9saWIvaWd0X2F1eC5o CmluZGV4IDU1MzkyNzkwLi5kYmQ4OGI2NyAxMDA2NDQKLS0tIGEvbGliL2lndF9hdXguaAorKysg Yi9saWIvaWd0X2F1eC5oCkBAIC0yNzksNiArMjc5LDcgQEAgYm9vbCBpZ3RfYWxsb3dfdW5saW1p dGVkX2ZpbGVzKHZvaWQpOwogdm9pZCBpZ3Rfc2V0X21vZHVsZV9wYXJhbShjb25zdCBjaGFyICpu YW1lLCBjb25zdCBjaGFyICp2YWwpOwogdm9pZCBpZ3Rfc2V0X21vZHVsZV9wYXJhbV9pbnQoY29u c3QgY2hhciAqbmFtZSwgaW50IHZhbCk7CiAKK2ludCBpZ3RfaXNfcHJvY2Vzc19ydW5uaW5nKGNv bnN0IGNoYXIgKmNvbW0pOwogaW50IGlndF90ZXJtaW5hdGVfcHJvY2VzcyhpbnQgc2lnLCBjb25z dCBjaGFyICpjb21tKTsKIHZvaWQgaWd0X2xzb2YoY29uc3QgY2hhciAqZHBhdGgpOwogCmRpZmYg LS1naXQgYS9saWIvaWd0X2NoYW1lbGl1bS5jIGIvbGliL2lndF9jaGFtZWxpdW0uYwppbmRleCAw MmNjOWIyYy4uN2M5MDMwZDEgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfY2hhbWVsaXVtLmMKKysrIGIv bGliL2lndF9jaGFtZWxpdW0uYwpAQCAtMjE4LDYgKzIxOCwxMiBAQCB2b2lkIGNoYW1lbGl1bV9k ZXN0cm95X2ZyYW1lX2R1bXAoc3RydWN0IGNoYW1lbGl1bV9mcmFtZV9kdW1wICpkdW1wKQogCWZy ZWUoZHVtcCk7CiB9CiAKK3ZvaWQgY2hhbWVsaXVtX2Rlc3Ryb3lfYXVkaW9fZmlsZShzdHJ1Y3Qg Y2hhbWVsaXVtX2F1ZGlvX2ZpbGUgKmF1ZGlvX2ZpbGUpCit7CisJZnJlZShhdWRpb19maWxlLT5w YXRoKTsKKwlmcmVlKGF1ZGlvX2ZpbGUpOworfQorCiBzdHJ1Y3QgZnNtX21vbml0b3JfYXJncyB7 CiAJc3RydWN0IGNoYW1lbGl1bSAqY2hhbWVsaXVtOwogCXN0cnVjdCBjaGFtZWxpdW1fcG9ydCAq cG9ydDsKQEAgLTkyNCw2ICs5MzAsMTAxIEBAIGludCBjaGFtZWxpdW1fZ2V0X2NhcHR1cmVkX2Zy YW1lX2NvdW50KHN0cnVjdCBjaGFtZWxpdW0gKmNoYW1lbGl1bSkKIAlyZXR1cm4gcmV0OwogfQog CisvKioKKyAqIGNoYW1lbGl1bV9zdGFydF9jYXB0dXJpbmdfYXVkaW86CisgKiBAY2hhbWVsaXVt OiB0aGUgQ2hhbWVsaXVtIGluc3RhbmNlCisgKiBAcG9ydDogdGhlIHBvcnQgdG8gY2FwdHVyZSBh dWRpbyBmcm9tIChpdCBtdXN0IHN1cHBvcnQgYXVkaW8pCisgKiBAc2F2ZV90b19maWxlOiB3aGV0 aGVyIHRoZSBjYXB0dXJlZCBhdWRpbyBkYXRhIHNob3VsZCBiZSBzYXZlZCB0byBhIGZpbGUgb24K KyAqIHRoZSBDaGFtZWxpdW0gZGV2aWNlCisgKgorICogU3RhcnRzIGNhcHR1cmluZyBhdWRpbyBm cm9tIGEgQ2hhbWVsaXVtIHBvcnQuIFRvIHN0b3AgdGhlIGNhcHR1cmUsIHVzZQorICogI2NoYW1l bGl1bV9zdG9wX2NhcHR1cmluZ19hdWRpby4gVG8gcmV0cmlldmUgdGhlIGF1ZGlvIGRhdGEsIGVp dGhlciB1c2UgdGhlCisgKiBzdHJlYW0gc2VydmVyIG9yIGVuYWJsZSBAc2F2ZV90b19maWxlICh0 aGUgbGF0dGVyIGlzIG1haW5seSB1c2VmdWwgZm9yCisgKiBkZWJ1Z2dpbmcgcHVycG9zZXMpLgor ICoKKyAqIEl0IGlzbid0IHBvc3NpYmxlIHRvIGNhcHR1cmUgYXVkaW8gZnJvbSBtdWx0aXBsZSBw b3J0cyBhdCB0aGUgc2FtZSB0aW1lLgorICovCit2b2lkIGNoYW1lbGl1bV9zdGFydF9jYXB0dXJp bmdfYXVkaW8oc3RydWN0IGNoYW1lbGl1bSAqY2hhbWVsaXVtLAorCQkJCSAgICBzdHJ1Y3QgY2hh bWVsaXVtX3BvcnQgKnBvcnQsCisJCQkJICAgIGJvb2wgc2F2ZV90b19maWxlKQoreworCXhtbHJw Y192YWx1ZSAqcmVzOworCisJcmVzID0gY2hhbWVsaXVtX3JwYyhjaGFtZWxpdW0sIHBvcnQsICJT dGFydENhcHR1cmluZ0F1ZGlvIiwgIihpYikiLAorCQkJICAgIHBvcnQtPmlkLCBzYXZlX3RvX2Zp bGUpOworCXhtbHJwY19ERUNSRUYocmVzKTsKK30KKworc3RhdGljIHZvaWQgYXVkaW9fZm9ybWF0 X2Zyb21feG1sKHN0cnVjdCBjaGFtZWxpdW0gKmNoYW1lbGl1bSwKKwkJCQkgIHhtbHJwY192YWx1 ZSAqcmVzLCBpbnQgKnJhdGUsIGludCAqY2hhbm5lbHMpCit7CisJeG1scnBjX3ZhbHVlICpyZXNf dHlwZSwgKnJlc19yYXRlLCAqcmVzX3NhbXBsZV9mb3JtYXQsICpyZXNfY2hhbm5lbDsKKwljaGFy ICp0eXBlLCAqc2FtcGxlX2Zvcm1hdDsKKworCXhtbHJwY19zdHJ1Y3RfZmluZF92YWx1ZSgmY2hh bWVsaXVtLT5lbnYsIHJlcywgImZpbGVfdHlwZSIsICZyZXNfdHlwZSk7CisJeG1scnBjX3N0cnVj dF9maW5kX3ZhbHVlKCZjaGFtZWxpdW0tPmVudiwgcmVzLCAicmF0ZSIsICZyZXNfcmF0ZSk7CisJ eG1scnBjX3N0cnVjdF9maW5kX3ZhbHVlKCZjaGFtZWxpdW0tPmVudiwgcmVzLCAic2FtcGxlX2Zv cm1hdCIsICZyZXNfc2FtcGxlX2Zvcm1hdCk7CisJeG1scnBjX3N0cnVjdF9maW5kX3ZhbHVlKCZj aGFtZWxpdW0tPmVudiwgcmVzLCAiY2hhbm5lbCIsICZyZXNfY2hhbm5lbCk7CisKKwl4bWxycGNf cmVhZF9zdHJpbmcoJmNoYW1lbGl1bS0+ZW52LCByZXNfdHlwZSwgKGNvbnN0IGNoYXIgKiopICZ0 eXBlKTsKKwlpZ3RfYXNzZXJ0KHN0cmNtcCh0eXBlLCAicmF3IikgPT0gMCk7CisJZnJlZSh0eXBl KTsKKworCXhtbHJwY19yZWFkX3N0cmluZygmY2hhbWVsaXVtLT5lbnYsIHJlc19zYW1wbGVfZm9y bWF0LCAoY29uc3QgY2hhciAqKikgJnNhbXBsZV9mb3JtYXQpOworCWlndF9hc3NlcnQoc3RyY21w KHNhbXBsZV9mb3JtYXQsICJTMzJfTEUiKSA9PSAwKTsKKwlmcmVlKHNhbXBsZV9mb3JtYXQpOwor CisJeG1scnBjX3JlYWRfaW50KCZjaGFtZWxpdW0tPmVudiwgcmVzX3JhdGUsIHJhdGUpOworCXht bHJwY19yZWFkX2ludCgmY2hhbWVsaXVtLT5lbnYsIHJlc19jaGFubmVsLCBjaGFubmVscyk7CisK Kwl4bWxycGNfREVDUkVGKHJlc19jaGFubmVsKTsKKwl4bWxycGNfREVDUkVGKHJlc19zYW1wbGVf Zm9ybWF0KTsKKwl4bWxycGNfREVDUkVGKHJlc19yYXRlKTsKKwl4bWxycGNfREVDUkVGKHJlc190 eXBlKTsKK30KKworLyoqCisgKiBjaGFtZWxpdW1fc3RvcF9jYXB0dXJpbmdfYXVkaW86CisgKiBA Y2hhbWVsaXVtOiB0aGUgQ2hhbWVsaXVtIGluc3RhbmNlCisgKiBAcG9ydDogdGhlIHBvcnQgZnJv bSB3aGljaCBhdWRpbyBpcyBiZWluZyBjYXB0dXJlZAorICoKKyAqIFN0b3BzIGNhcHR1cmluZyBh dWRpbyBmcm9tIGEgQ2hhbWVsaXVtIHBvcnQuIElmCisgKiAjY2hhbWVsaXVtX3N0YXJ0X2NhcHR1 cmluZ19hdWRpbyBoYXMgYmVlbiBjYWxsZWQgd2l0aCBAc2F2ZV90b19maWxlIGVuYWJsZWQsCisg KiB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGEgI2NoYW1lbGl1bV9hdWRpb19maWxlIHN0cnVj dCBjb250YWluaW5nIGRldGFpbHMKKyAqIGFib3V0IHRoZSBhdWRpbyBmaWxlLiBPbmNlIHRoZSBj YWxsZXIgaXMgZG9uZSB3aXRoIHRoZSBzdHJ1Y3QsIHRoZXkgc2hvdWxkCisgKiByZWxlYXNlIGl0 IHdpdGggI2NoYW1lbGl1bV9kZXN0cm95X2F1ZGlvX2ZpbGUuCisgKi8KK3N0cnVjdCBjaGFtZWxp dW1fYXVkaW9fZmlsZSAqY2hhbWVsaXVtX3N0b3BfY2FwdHVyaW5nX2F1ZGlvKHN0cnVjdCBjaGFt ZWxpdW0gKmNoYW1lbGl1bSwKKwkJCQkJCQkgICAgc3RydWN0IGNoYW1lbGl1bV9wb3J0ICpwb3J0 KQoreworCXhtbHJwY192YWx1ZSAqcmVzLCAqcmVzX3BhdGgsICpyZXNfcHJvcHM7CisJc3RydWN0 IGNoYW1lbGl1bV9hdWRpb19maWxlICpmaWxlID0gTlVMTDsKKwljaGFyICpwYXRoOworCisJcmVz ID0gY2hhbWVsaXVtX3JwYyhjaGFtZWxpdW0sIE5VTEwsICJTdG9wQ2FwdHVyaW5nQXVkaW8iLCAi KGkpIiwKKwkJCSAgICBwb3J0LT5pZCk7CisJeG1scnBjX2FycmF5X3JlYWRfaXRlbSgmY2hhbWVs aXVtLT5lbnYsIHJlcywgMCwgJnJlc19wYXRoKTsKKwl4bWxycGNfYXJyYXlfcmVhZF9pdGVtKCZj aGFtZWxpdW0tPmVudiwgcmVzLCAxLCAmcmVzX3Byb3BzKTsKKworCXhtbHJwY19yZWFkX3N0cmlu ZygmY2hhbWVsaXVtLT5lbnYsIHJlc19wYXRoLCAoY29uc3QgY2hhciAqKikgJnBhdGgpOworCisJ aWYgKHN0cmxlbihwYXRoKSA+IDApIHsKKwkJZmlsZSA9IGNhbGxvYygxLCBzaXplb2YoKmZpbGUp KTsKKwkJZmlsZS0+cGF0aCA9IHBhdGg7CisKKwkJYXVkaW9fZm9ybWF0X2Zyb21feG1sKGNoYW1l bGl1bSwgcmVzX3Byb3BzLAorCQkJCSAgICAgICZmaWxlLT5yYXRlLCAmZmlsZS0+Y2hhbm5lbHMp OworCX0gZWxzZSB7CisJCWZyZWUocGF0aCk7CisJfQorCisJeG1scnBjX0RFQ1JFRihyZXNfcHJv cHMpOworCXhtbHJwY19ERUNSRUYocmVzX3BhdGgpOworCXhtbHJwY19ERUNSRUYocmVzKTsKKwor CXJldHVybiBmaWxlOworfQorCiBzdGF0aWMgcGl4bWFuX2ltYWdlX3QgKmNvbnZlcnRfZnJhbWVf Zm9ybWF0KHBpeG1hbl9pbWFnZV90ICpzcmMsCiAJCQkJCSAgICBpbnQgZm9ybWF0KQogewpkaWZm IC0tZ2l0IGEvbGliL2lndF9jaGFtZWxpdW0uaCBiL2xpYi9pZ3RfY2hhbWVsaXVtLmgKaW5kZXgg MjMzZWFkODUuLjA0N2Y4YzVkIDEwMDY0NAotLS0gYS9saWIvaWd0X2NoYW1lbGl1bS5oCisrKyBi L2xpYi9pZ3RfY2hhbWVsaXVtLmgKQEAgLTUzLDYgKzUzLDEyIEBAIGVudW0gY2hhbWVsaXVtX2No ZWNrIHsKIAlDSEFNRUxJVU1fQ0hFQ0tfQ1JDLAogfTsKIAorc3RydWN0IGNoYW1lbGl1bV9hdWRp b19maWxlIHsKKwljaGFyICpwYXRoOworCWludCByYXRlOyAvKiBIeiAqLworCWludCBjaGFubmVs czsKK307CisKIHN0cnVjdCBjaGFtZWxpdW0gKmNoYW1lbGl1bV9pbml0KGludCBkcm1fZmQpOwog dm9pZCBjaGFtZWxpdW1fZGVpbml0KHN0cnVjdCBjaGFtZWxpdW0gKmNoYW1lbGl1bSk7CiB2b2lk IGNoYW1lbGl1bV9yZXNldChzdHJ1Y3QgY2hhbWVsaXVtICpjaGFtZWxpdW0pOwpAQCAtMTAwLDYg KzEwNiwxMCBAQCB2b2lkIGNoYW1lbGl1bV9zdGFydF9jYXB0dXJlKHN0cnVjdCBjaGFtZWxpdW0g KmNoYW1lbGl1bSwKIHZvaWQgY2hhbWVsaXVtX3N0b3BfY2FwdHVyZShzdHJ1Y3QgY2hhbWVsaXVt ICpjaGFtZWxpdW0sIGludCBmcmFtZV9jb3VudCk7CiB2b2lkIGNoYW1lbGl1bV9jYXB0dXJlKHN0 cnVjdCBjaGFtZWxpdW0gKmNoYW1lbGl1bSwgc3RydWN0IGNoYW1lbGl1bV9wb3J0ICpwb3J0LAog CQkgICAgICAgaW50IHgsIGludCB5LCBpbnQgdywgaW50IGgsIGludCBmcmFtZV9jb3VudCk7Cit2 b2lkIGNoYW1lbGl1bV9zdGFydF9jYXB0dXJpbmdfYXVkaW8oc3RydWN0IGNoYW1lbGl1bSAqY2hh bWVsaXVtLAorCQkJCSAgICBzdHJ1Y3QgY2hhbWVsaXVtX3BvcnQgKnBvcnQsIGJvb2wgc2F2ZV90 b19maWxlKTsKK3N0cnVjdCBjaGFtZWxpdW1fYXVkaW9fZmlsZSAqY2hhbWVsaXVtX3N0b3BfY2Fw dHVyaW5nX2F1ZGlvKHN0cnVjdCBjaGFtZWxpdW0gKmNoYW1lbGl1bSwKKwkJCQkJCQkgICAgc3Ry dWN0IGNoYW1lbGl1bV9wb3J0ICpwb3J0KTsKIGlndF9jcmNfdCAqY2hhbWVsaXVtX3JlYWRfY2Fw dHVyZWRfY3JjcyhzdHJ1Y3QgY2hhbWVsaXVtICpjaGFtZWxpdW0sCiAJCQkJCWludCAqZnJhbWVf Y291bnQpOwogc3RydWN0IGNoYW1lbGl1bV9mcmFtZV9kdW1wICpjaGFtZWxpdW1fcmVhZF9jYXB0 dXJlZF9mcmFtZShzdHJ1Y3QgY2hhbWVsaXVtICpjaGFtZWxpdW0sCkBAIC0xMzEsNSArMTQxLDYg QEAgdm9pZCBjaGFtZWxpdW1fYXNzZXJ0X2ZyYW1lX21hdGNoX29yX2R1bXAoc3RydWN0IGNoYW1l bGl1bSAqY2hhbWVsaXVtLAogdm9pZCBjaGFtZWxpdW1fY3JvcF9hbmFsb2dfZnJhbWUoc3RydWN0 IGNoYW1lbGl1bV9mcmFtZV9kdW1wICpkdW1wLCBpbnQgd2lkdGgsCiAJCQkJIGludCBoZWlnaHQp Owogdm9pZCBjaGFtZWxpdW1fZGVzdHJveV9mcmFtZV9kdW1wKHN0cnVjdCBjaGFtZWxpdW1fZnJh bWVfZHVtcCAqZHVtcCk7Cit2b2lkIGNoYW1lbGl1bV9kZXN0cm95X2F1ZGlvX2ZpbGUoc3RydWN0 IGNoYW1lbGl1bV9hdWRpb19maWxlICphdWRpb19maWxlKTsKIAogI2VuZGlmIC8qIElHVF9DSEFN RUxJVU1fSCAqLwpkaWZmIC0tZ2l0IGEvbGliL2lndF9jaGFtZWxpdW1fc3RyZWFtLmMgYi9saWIv aWd0X2NoYW1lbGl1bV9zdHJlYW0uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MC4uOWUxYmExY2EKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvaWd0X2NoYW1lbGl1bV9zdHJlYW0u YwpAQCAtMCwwICsxLDU5MiBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE5IEludGVsIENvcnBv cmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFy Z2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBh bmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0 byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0 aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJn ZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGll cyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICog U29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcg Y29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBw ZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxs IGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhl CisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwg V0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5D TFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ VFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VN RU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xE RVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJ VFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwg QVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdB UkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICoK KyAqIEF1dGhvcnM6IFNpbW9uIFNlciA8c2ltb24uc2VyQGludGVsLmNvbT4KKyAqLworCisjaW5j bHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKyNpbmNsdWRlIDxlcnJu by5oPgorI2luY2x1ZGUgPG5ldGRiLmg+CisjaW5jbHVkZSA8c3RkYm9vbC5oPgorI2luY2x1ZGUg PHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zb2NrZXQu aD4KKworI2luY2x1ZGUgImlndF9jaGFtZWxpdW1fc3RyZWFtLmgiCisjaW5jbHVkZSAiaWd0X2Nv cmUuaCIKKyNpbmNsdWRlICJpZ3RfcmMuaCIKKworI2RlZmluZSBTVFJFQU1fUE9SVCA5OTk0Cisj ZGVmaW5lIFNUUkVBTV9WRVJTSU9OX01BSk9SIDEKKyNkZWZpbmUgU1RSRUFNX1ZFUlNJT05fTUlO T1IgMAorCitlbnVtIHN0cmVhbV9lcnJvciB7CisJU1RSRUFNX0VSUk9SX05PTkUgPSAwLAorCVNU UkVBTV9FUlJPUl9DT01NQU5EID0gMSwKKwlTVFJFQU1fRVJST1JfQVJHVU1FTlQgPSAyLAorCVNU UkVBTV9FUlJPUl9FWElTVFMgPSAzLAorCVNUUkVBTV9FUlJPUl9WSURFT19NRU1fT1ZFUkZMT1df U1RPUCA9IDQsCisJU1RSRUFNX0VSUk9SX1ZJREVPX01FTV9PVkVSRkxPV19EUk9QID0gNSwKKwlT VFJFQU1fRVJST1JfQVVESU9fTUVNX09WRVJGTE9XX1NUT1AgPSA2LAorCVNUUkVBTV9FUlJPUl9B VURJT19NRU1fT1ZFUkZMT1dfRFJPUCA9IDcsCisJU1RSRUFNX0VSUk9SX05PX01FTSA9IDgsCit9 OworCitlbnVtIHN0cmVhbV9tZXNzYWdlX2tpbmQgeworCVNUUkVBTV9NRVNTQUdFX1JFUVVFU1Qg PSAwLAorCVNUUkVBTV9NRVNTQUdFX1JFU1BPTlNFID0gMSwKKwlTVFJFQU1fTUVTU0FHRV9EQVRB ID0gMiwKK307CisKK2VudW0gc3RyZWFtX21lc3NhZ2VfdHlwZSB7CisJU1RSRUFNX01FU1NBR0Vf UkVTRVQgPSAwLAorCVNUUkVBTV9NRVNTQUdFX0dFVF9WRVJTSU9OID0gMSwKKwlTVFJFQU1fTUVT U0FHRV9WSURFT19TVFJFQU0gPSAyLAorCVNUUkVBTV9NRVNTQUdFX1NIUklOS19WSURFTyA9IDMs CisJU1RSRUFNX01FU1NBR0VfVklERU9fRlJBTUUgPSA0LAorCVNUUkVBTV9NRVNTQUdFX0RVTVBf UkVBTFRJTUVfVklERU8gPSA1LAorCVNUUkVBTV9NRVNTQUdFX1NUT1BfRFVNUF9WSURFTyA9IDYs CisJU1RSRUFNX01FU1NBR0VfRFVNUF9SRUFMVElNRV9BVURJTyA9IDcsCisJU1RSRUFNX01FU1NB R0VfU1RPUF9EVU1QX0FVRElPID0gOCwKK307CisKK3N0cnVjdCBjaGFtZWxpdW1fc3RyZWFtIHsK KwljaGFyICpob3N0OworCXVuc2lnbmVkIGludCBwb3J0OworCisJaW50IGZkOworfTsKKworc3Rh dGljIGNvbnN0IGNoYXIgKnN0cmVhbV9lcnJvcl9zdHIoZW51bSBzdHJlYW1fZXJyb3IgZXJyKQor eworCXN3aXRjaCAoZXJyKSB7CisJY2FzZSBTVFJFQU1fRVJST1JfTk9ORToKKwkJcmV0dXJuICJu byBlcnJvciI7CisJY2FzZSBTVFJFQU1fRVJST1JfQ09NTUFORDoKKwkJcmV0dXJuICJpbnZhbGlk IGNvbW1hbmQiOworCWNhc2UgU1RSRUFNX0VSUk9SX0FSR1VNRU5UOgorCQlyZXR1cm4gImludmFs aWQgYXJndW1lbnRzIjsKKwljYXNlIFNUUkVBTV9FUlJPUl9FWElTVFM6CisJCXJldHVybiAiZHVt cCBhbHJlYWR5IHN0YXJ0ZWQiOworCWNhc2UgU1RSRUFNX0VSUk9SX1ZJREVPX01FTV9PVkVSRkxP V19TVE9QOgorCQlyZXR1cm4gInZpZGVvIGR1bXAgc3RvcHBlZCBhZnRlciBvdmVyZmxvdyI7CisJ Y2FzZSBTVFJFQU1fRVJST1JfVklERU9fTUVNX09WRVJGTE9XX0RST1A6CisJCXJldHVybiAidmlk ZW8gZnJhbWUgZHJvcHBlZCBhZnRlciBvdmVyZmxvdyI7CisJY2FzZSBTVFJFQU1fRVJST1JfQVVE SU9fTUVNX09WRVJGTE9XX1NUT1A6CisJCXJldHVybiAiYXVkaW8gZHVtcCBzdG9wcHJlZCBhZnRl ciBvdmVyZmxvdyI7CisJY2FzZSBTVFJFQU1fRVJST1JfQVVESU9fTUVNX09WRVJGTE9XX0RST1A6 CisJCXJldHVybiAiYXVkaW8gcGFnZSBkcm9wcGVkIGFmdGVyIG92ZXJmbG93IjsKKwljYXNlIFNU UkVBTV9FUlJPUl9OT19NRU06CisJCXJldHVybiAib3V0IG9mIG1lbW9yeSI7CisJfQorCXJldHVy biAidW5rbm93biBlcnJvciI7Cit9CisKKy8qKgorICogVGhlIENoYW1lbGl1bSBVUkwgaXMgc3Bl Y2lmaWVkIGluIHRoZSBjb25maWd1cmF0aW9uIGZpbGUuIFdlIG5lZWQgdG8gZXh0cmFjdAorICog dGhlIGhvc3QgdG8gY29ubmVjdCB0byB0aGUgc3RyZWFtIHNlcnZlci4KKyAqLworc3RhdGljIGNo YXIgKnBhcnNlX3VybF9ob3N0KGNvbnN0IGNoYXIgKnVybCkKK3sKKwlzdGF0aWMgY29uc3QgY2hh ciBwcmVmaXhbXSA9ICJodHRwOi8vIjsKKwljaGFyICpjb2xvbjsKKworCWlmIChzdHJzdHIodXJs LCBwcmVmaXgpICE9IHVybCkKKwkJcmV0dXJuIE5VTEw7CisJdXJsICs9IHN0cmxlbihwcmVmaXgp OworCisJY29sb24gPSBzdHJjaHIodXJsLCAnOicpOworCWlmICghY29sb24pCisJCXJldHVybiBO VUxMOworCisJcmV0dXJuIHN0cm5kdXAodXJsLCBjb2xvbiAtIHVybCk7Cit9CisKK3N0YXRpYyBi b29sIGNoYW1lbGl1bV9zdHJlYW1fcmVhZF9jb25maWcoc3RydWN0IGNoYW1lbGl1bV9zdHJlYW0g KmNsaWVudCkKK3sKKwlHRXJyb3IgKmVycm9yID0gTlVMTDsKKwlnY2hhciAqY2hhbWVsaXVtX3Vy bDsKKworCWlmICghaWd0X2tleV9maWxlKSB7CisJCWlndF93YXJuKCJObyBjb25maWd1cmF0aW9u IGZpbGUgYXZhaWxhYmxlIGZvciBjaGFtZWxpdW1cbiIpOworCQlyZXR1cm4gZmFsc2U7CisJfQor CisJY2hhbWVsaXVtX3VybCA9IGdfa2V5X2ZpbGVfZ2V0X3N0cmluZyhpZ3Rfa2V5X2ZpbGUsICJD aGFtZWxpdW0iLCAiVVJMIiwKKwkJCQkJICAgICAgJmVycm9yKTsKKwlpZiAoIWNoYW1lbGl1bV91 cmwpIHsKKwkJaWd0X3dhcm4oIkNvdWxkbid0IHJlYWQgQ2hhbWVsaXVtIFVSTCBmcm9tIGNvbmZp ZyBmaWxlOiAlc1xuIiwKKwkJCSBlcnJvci0+bWVzc2FnZSk7CisJCXJldHVybiBmYWxzZTsKKwl9 CisKKwljbGllbnQtPmhvc3QgPSBwYXJzZV91cmxfaG9zdChjaGFtZWxpdW1fdXJsKTsKKwlpZiAo IWNsaWVudC0+aG9zdCkgeworCQlpZ3Rfd2FybigiSW52YWxpZCBDaGFtZWxpdW0gVVJMIGluIGNv bmZpZyBmaWxlOiAlc1xuIiwKKwkJCSBjaGFtZWxpdW1fdXJsKTsKKwkJcmV0dXJuIGZhbHNlOwor CX0KKwljbGllbnQtPnBvcnQgPSBTVFJFQU1fUE9SVDsKKworCXJldHVybiB0cnVlOworfQorCitz dGF0aWMgYm9vbCBjaGFtZWxpdW1fc3RyZWFtX2Nvbm5lY3Qoc3RydWN0IGNoYW1lbGl1bV9zdHJl YW0gKmNsaWVudCkKK3sKKwlpbnQgcmV0OworCWNoYXIgcG9ydF9zdHJbMTZdOworCXN0cnVjdCBh ZGRyaW5mbyBoaW50cyA9IHt9OworCXN0cnVjdCBhZGRyaW5mbyAqcmVzdWx0cywgKmFpOworCXN0 cnVjdCB0aW1ldmFsIHR2ID0ge307CisKKwlpZ3RfZGVidWcoIkNvbm5lY3RpbmcgdG8gQ2hhbWVs aXVtIHN0cmVhbSBzZXJ2ZXI6IHRjcDovLyVzOiV1XG4iLAorCQkgIGNsaWVudC0+aG9zdCwgY2xp ZW50LT5wb3J0KTsKKworCXNucHJpbnRmKHBvcnRfc3RyLCBzaXplb2YocG9ydF9zdHIpLCAiJXUi LCBjbGllbnQtPnBvcnQpOworCisJaGludHMuYWlfZmFtaWx5ID0gQUZfVU5TUEVDOworCWhpbnRz LmFpX3NvY2t0eXBlID0gU09DS19TVFJFQU07CisJcmV0ID0gZ2V0YWRkcmluZm8oY2xpZW50LT5o b3N0LCBwb3J0X3N0ciwgJmhpbnRzLCAmcmVzdWx0cyk7CisJaWYgKHJldCAhPSAwKSB7CisJCWln dF93YXJuKCJnZXRhZGRyaW5mbyBmYWlsZWQ6ICVzXG4iLCBnYWlfc3RyZXJyb3IocmV0KSk7CisJ CXJldHVybiBmYWxzZTsKKwl9CisKKwljbGllbnQtPmZkID0gLTE7CisJZm9yIChhaSA9IHJlc3Vs dHM7IGFpICE9IE5VTEw7IGFpID0gYWktPmFpX25leHQpIHsKKwkJY2xpZW50LT5mZCA9IHNvY2tl dChhaS0+YWlfZmFtaWx5LCBhaS0+YWlfc29ja3R5cGUsCisJCQkJICAgIGFpLT5haV9wcm90b2Nv bCk7CisJCWlmIChjbGllbnQtPmZkID09IC0xKQorCQkJY29udGludWU7CisKKwkJaWYgKGNvbm5l Y3QoY2xpZW50LT5mZCwgYWktPmFpX2FkZHIsIGFpLT5haV9hZGRybGVuKSA9PSAtMSkgeworCQkJ Y2xvc2UoY2xpZW50LT5mZCk7CisJCQljbGllbnQtPmZkID0gLTE7CisJCQljb250aW51ZTsKKwkJ fQorCisJCWJyZWFrOworCX0KKworCWZyZWVhZGRyaW5mbyhyZXN1bHRzKTsKKworCWlmIChjbGll bnQtPmZkIDwgMCkgeworCQlpZ3Rfd2FybigiRmFpbGVkIHRvIGNvbm5lY3QgdG8gQ2hhbWVsaXVt IHN0cmVhbSBzZXJ2ZXJcbiIpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJLyogU2V0IGEgcmVh ZCBhbmQgd3JpdGUgdGltZW91dCBvZiA1IHNlY29uZHMuICovCisJdHYudHZfc2VjID0gNTsKKwlz ZXRzb2Nrb3B0KGNsaWVudC0+ZmQsIFNPTF9TT0NLRVQsIFNPX1JDVlRJTUVPLCAmdHYsIHNpemVv Zih0dikpOworCXNldHNvY2tvcHQoY2xpZW50LT5mZCwgU09MX1NPQ0tFVCwgU09fU05EVElNRU8s ICZ0diwgc2l6ZW9mKHR2KSk7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgcmVh ZF93aG9sZShpbnQgZmQsIHZvaWQgKmJ1Ziwgc2l6ZV90IGJ1Zl9sZW4pCit7CisJc3NpemVfdCBy ZXQ7CisJc2l6ZV90IG4gPSAwOworCWNoYXIgKnB0cjsKKworCXdoaWxlIChuIDwgYnVmX2xlbikg eworCQlwdHIgPSAoY2hhciAqKSBidWYgKyBuOworCQlyZXQgPSByZWFkKGZkLCBwdHIsIGJ1Zl9s ZW4gLSBuKTsKKwkJaWYgKHJldCA8IDApIHsKKwkJCWlndF93YXJuKCJyZWFkIGZhaWxlZDogJXNc biIsIHN0cmVycm9yKGVycm5vKSk7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0gZWxzZSBpZiAocmV0 ID09IDApIHsKKwkJCWlndF93YXJuKCJzaG9ydCByZWFkXG4iKTsKKwkJCXJldHVybiBmYWxzZTsK KwkJfQorCQluICs9IHJldDsKKwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wg d3JpdGVfd2hvbGUoaW50IGZkLCB2b2lkICpidWYsIHNpemVfdCBidWZfbGVuKQoreworCXNzaXpl X3QgcmV0OworCXNpemVfdCBuID0gMDsKKwljaGFyICpwdHI7CisKKwl3aGlsZSAobiA8IGJ1Zl9s ZW4pIHsKKwkJcHRyID0gKGNoYXIgKikgYnVmICsgbjsKKwkJcmV0ID0gd3JpdGUoZmQsIHB0ciwg YnVmX2xlbiAtIG4pOworCQlpZiAocmV0IDwgMCkgeworCQkJaWd0X3dhcm4oIndyaXRlIGZhaWxl ZDogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0gZWxzZSBp ZiAocmV0ID09IDApIHsKKwkJCWlndF93YXJuKCJzaG9ydCB3cml0ZVxuIik7CisJCQlyZXR1cm4g ZmFsc2U7CisJCX0KKwkJbiArPSByZXQ7CisJfQorCisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRp YyBib29sIHJlYWRfYW5kX2Rpc2NhcmQoaW50IGZkLCBzaXplX3QgbGVuKQoreworCWNoYXIgYnVm WzEwMjRdOworCXNpemVfdCBuOworCisJd2hpbGUgKGxlbiA+IDApIHsKKwkJbiA9IGxlbjsKKwkJ aWYgKG4gPiBzaXplb2YoYnVmKSkKKwkJCW4gPSBzaXplb2YoYnVmKTsKKworCQlpZiAoIXJlYWRf d2hvbGUoZmQsIGJ1ZiwgbikpCisJCQlyZXR1cm4gZmFsc2U7CisKKwkJbGVuIC09IG47CisJfQor CisJcmV0dXJuIHRydWU7Cit9CisKKy8qKiBSZWFkIGEgbWVzc2FnZSBoZWFkZXIgZnJvbSB0aGUg c29ja2V0LgorICoKKyAqIFRoZSBoZWFkZXIgaXMgbGFpZCBvdXQgYXMgZm9sbG93czoKKyAqIC0g dTE2OiBtZXNzYWdlIHR5cGUKKyAqIC0gdTE2OiBlcnJvciBjb2RlCisgKiAtIHUzMjogbWVzc2Fn ZSBsZW5ndGgKKyAqLworc3RhdGljIGJvb2wgY2hhbWVsaXVtX3N0cmVhbV9yZWFkX2hlYWRlcihz dHJ1Y3QgY2hhbWVsaXVtX3N0cmVhbSAqY2xpZW50LAorCQkJCQkgZW51bSBzdHJlYW1fbWVzc2Fn ZV9raW5kICpraW5kLAorCQkJCQkgZW51bSBzdHJlYW1fbWVzc2FnZV90eXBlICp0eXBlLAorCQkJ CQkgZW51bSBzdHJlYW1fZXJyb3IgKmVyciwKKwkJCQkJIHNpemVfdCAqbGVuKQoreworCXVpbnQx Nl90IF90eXBlOworCWNoYXIgYnVmWzhdOworCisJaWYgKCFyZWFkX3dob2xlKGNsaWVudC0+ZmQs IGJ1Ziwgc2l6ZW9mKGJ1ZikpKQorCQlyZXR1cm4gZmFsc2U7CisKKwlfdHlwZSA9IG50b2hzKCoo dWludDE2X3QgKikgJmJ1ZlswXSk7CisJKnR5cGUgPSBfdHlwZSAmIDB4RkY7CisJKmtpbmQgPSBf dHlwZSA+PiA4OworCSplcnIgPSBudG9ocygqKHVpbnQxNl90ICopICZidWZbMl0pOworCSpsZW4g PSBudG9obCgqKHVpbnQzMl90ICopICZidWZbNF0pOworCisJLy9pZ3RfZGVidWcoInJlY2VpdmVk IG1lc3NhZ2U6IGtpbmQ9JWQgdHlwZT0lZCBlcnI9JWQgbGVuPSV6dVxuIiwKKwkvLwkgICpraW5k LCAqdHlwZSwgKmVyciwgKmxlbik7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wg Y2hhbWVsaXVtX3N0cmVhbV93cml0ZV9oZWFkZXIoc3RydWN0IGNoYW1lbGl1bV9zdHJlYW0gKmNs aWVudCwKKwkJCQkJICBlbnVtIHN0cmVhbV9tZXNzYWdlX3R5cGUgdHlwZSwKKwkJCQkJICBlbnVt IHN0cmVhbV9lcnJvciBlcnIsCisJCQkJCSAgc2l6ZV90IGxlbikKK3sKKwljaGFyIGJ1Zls4XTsK Kwl1aW50MTZfdCBfdHlwZTsKKworCV90eXBlID0gdHlwZSB8IChTVFJFQU1fTUVTU0FHRV9SRVFV RVNUIDw8IDgpOworCisJKih1aW50MTZfdCAqKSAmYnVmWzBdID0gaHRvbnMoX3R5cGUpOworCSoo dWludDE2X3QgKikgJmJ1ZlsyXSA9IGh0b25zKGVycik7CisJKih1aW50MzJfdCAqKSAmYnVmWzRd ID0gaHRvbmwobGVuKTsKKworCXJldHVybiB3cml0ZV93aG9sZShjbGllbnQtPmZkLCBidWYsIHNp emVvZihidWYpKTsKK30KKworc3RhdGljIGJvb2wgY2hhbWVsaXVtX3N0cmVhbV9yZWFkX3Jlc3Bv bnNlKHN0cnVjdCBjaGFtZWxpdW1fc3RyZWFtICpjbGllbnQsCisJCQkJCSAgIGVudW0gc3RyZWFt X21lc3NhZ2VfdHlwZSB0eXBlLAorCQkJCQkgICB2b2lkICpidWYsIHNpemVfdCBidWZfbGVuKQor eworCWVudW0gc3RyZWFtX21lc3NhZ2Vfa2luZCByZWFkX2tpbmQ7CisJZW51bSBzdHJlYW1fbWVz c2FnZV90eXBlIHJlYWRfdHlwZTsKKwllbnVtIHN0cmVhbV9lcnJvciByZWFkX2VycjsKKwlzaXpl X3QgcmVhZF9sZW47CisKKwlpZiAoIWNoYW1lbGl1bV9zdHJlYW1fcmVhZF9oZWFkZXIoY2xpZW50 LCAmcmVhZF9raW5kLCAmcmVhZF90eXBlLAorCQkJCQkgICZyZWFkX2VyciwgJnJlYWRfbGVuKSkK KwkJcmV0dXJuIGZhbHNlOworCisJaWYgKHJlYWRfa2luZCAhPSBTVFJFQU1fTUVTU0FHRV9SRVNQ T05TRSkgeworCQlpZ3Rfd2FybigiRXhwZWN0ZWQgYSByZXNwb25zZSwgZ290IGtpbmQgJWRcbiIs IHJlYWRfa2luZCk7CisJCXJldHVybiBmYWxzZTsKKwl9CisJaWYgKHJlYWRfdHlwZSAhPSB0eXBl KSB7CisJCWlndF93YXJuKCJFeHBlY3RlZCBtZXNzYWdlIHR5cGUgJWQsIGdvdCAlZFxuIiwKKwkJ CSB0eXBlLCByZWFkX3R5cGUpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCWlmIChyZWFkX2VyciAh PSBTVFJFQU1fRVJST1JfTk9ORSkgeworCQlpZ3Rfd2FybigiUmVjZWl2ZWQgZXJyb3I6ICVzICgl ZClcbiIsCisJCQkgc3RyZWFtX2Vycm9yX3N0cihyZWFkX2VyciksIHJlYWRfZXJyKTsKKwkJcmV0 dXJuIGZhbHNlOworCX0KKwlpZiAoYnVmX2xlbiAhPSByZWFkX2xlbikgeworCQlpZ3Rfd2Fybigi UmVjZWl2ZWQgaW52YWxpZCBtZXNzYWdlIGJvZHkgc2l6ZSAiCisJCQkgIihnb3QgJXp1IGJ5dGVz LCB3YW50ICV6dSBieXRlcylcbiIsCisJCQkgcmVhZF9sZW4sIGJ1Zl9sZW4pOworCQlyZXR1cm4g ZmFsc2U7CisJfQorCisJcmV0dXJuIHJlYWRfd2hvbGUoY2xpZW50LT5mZCwgYnVmLCBidWZfbGVu KTsKK30KKworc3RhdGljIGJvb2wgY2hhbWVsaXVtX3N0cmVhbV93cml0ZV9yZXF1ZXN0KHN0cnVj dCBjaGFtZWxpdW1fc3RyZWFtICpjbGllbnQsCisJCQkJCSAgIGVudW0gc3RyZWFtX21lc3NhZ2Vf dHlwZSB0eXBlLAorCQkJCQkgICB2b2lkICpidWYsIHNpemVfdCBidWZfbGVuKQoreworCWlmICgh Y2hhbWVsaXVtX3N0cmVhbV93cml0ZV9oZWFkZXIoY2xpZW50LCB0eXBlLCBTVFJFQU1fRVJST1Jf Tk9ORSwKKwkJCQkJICAgYnVmX2xlbikpCisJCXJldHVybiBmYWxzZTsKKworCWlmIChidWZfbGVu ID09IDApCisJCXJldHVybiB0cnVlOworCisJcmV0dXJuIHdyaXRlX3dob2xlKGNsaWVudC0+ZmQs IGJ1ZiwgYnVmX2xlbik7Cit9CisKK3N0YXRpYyBib29sIGNoYW1lbGl1bV9zdHJlYW1fY2FsbChz dHJ1Y3QgY2hhbWVsaXVtX3N0cmVhbSAqY2xpZW50LAorCQkJCSAgZW51bSBzdHJlYW1fbWVzc2Fn ZV90eXBlIHR5cGUsCisJCQkJICB2b2lkICpyZXFfYnVmLCBzaXplX3QgcmVxX2xlbiwKKwkJCQkg IHZvaWQgKnJlc3BfYnVmLCBzaXplX3QgcmVzcF9sZW4pCit7CisJaWYgKCFjaGFtZWxpdW1fc3Ry ZWFtX3dyaXRlX3JlcXVlc3QoY2xpZW50LCB0eXBlLCByZXFfYnVmLCByZXFfbGVuKSkKKwkJcmV0 dXJuIGZhbHNlOworCisJcmV0dXJuIGNoYW1lbGl1bV9zdHJlYW1fcmVhZF9yZXNwb25zZShjbGll bnQsIHR5cGUsIHJlc3BfYnVmLCByZXNwX2xlbik7Cit9CisKK3N0YXRpYyBib29sIGNoYW1lbGl1 bV9zdHJlYW1fY2hlY2tfdmVyc2lvbihzdHJ1Y3QgY2hhbWVsaXVtX3N0cmVhbSAqY2xpZW50KQor eworCWNoYXIgcmVzcFsyXTsKKwl1aW50OF90IG1ham9yLCBtaW5vcjsKKworCWlmICghY2hhbWVs aXVtX3N0cmVhbV9jYWxsKGNsaWVudCwgU1RSRUFNX01FU1NBR0VfR0VUX1ZFUlNJT04sCisJCQkJ ICAgTlVMTCwgMCwgcmVzcCwgc2l6ZW9mKHJlc3ApKSkKKwkJcmV0dXJuIGZhbHNlOworCisJbWFq b3IgPSByZXNwWzBdOworCW1pbm9yID0gcmVzcFsxXTsKKwlpZiAobWFqb3IgIT0gU1RSRUFNX1ZF UlNJT05fTUFKT1IgfHwgbWlub3IgPCBTVFJFQU1fVkVSU0lPTl9NSU5PUikgeworCQlpZ3Rfd2Fy bigiVmVyc2lvbiBtaXNtYXRjaCAod2FudCAlZC4lZCwgZ290ICVkLiVkKVxuIiwKKwkJCSBTVFJF QU1fVkVSU0lPTl9NQUpPUiwgU1RSRUFNX1ZFUlNJT05fTUlOT1IsCisJCQkgbWFqb3IsIG1pbm9y KTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCXJldHVybiB0cnVlOworfQorCisvKioKKyAqIGNo YW1lbGl1bV9zdHJlYW1fZHVtcF9yZWFsdGltZV9hdWRpbzoKKyAqCisgKiBTdGFydHMgYXVkaW8g Y2FwdHVyZS4gVGhlIGNhbGxlciBjYW4gdGhlbiBjYWxsCisgKiAjY2hhbWVsaXVtX3N0cmVhbV9y ZWNlaXZlX3JlYWx0aW1lX2F1ZGlvIHRvIHJlY2VpdmUgYXVkaW8gcGFnZXMuCisgKi8KK2Jvb2wg Y2hhbWVsaXVtX3N0cmVhbV9kdW1wX3JlYWx0aW1lX2F1ZGlvKHN0cnVjdCBjaGFtZWxpdW1fc3Ry ZWFtICpjbGllbnQsCisJCQkJCSAgZW51bSBjaGFtZWxpdW1fc3RyZWFtX3JlYWx0aW1lX21vZGUg bW9kZSkKK3sKKwljaGFyIHJlcVsxXTsKKworCWlndF9kZWJ1ZygiU3RhcnRpbmcgcmVhbC10aW1l IGF1ZGlvIGNhcHR1cmVcbiIpOworCisJcmVxWzBdID0gbW9kZTsKKwlyZXR1cm4gY2hhbWVsaXVt X3N0cmVhbV9jYWxsKGNsaWVudCwgU1RSRUFNX01FU1NBR0VfRFVNUF9SRUFMVElNRV9BVURJTywK KwkJCQkgICAgIHJlcSwgc2l6ZW9mKHJlcSksIE5VTEwsIDApOworfQorCisvKioKKyAqIGNoYW1l bGl1bV9zdHJlYW1fcmVjZWl2ZV9yZWFsdGltZV9hdWRpbzoKKyAqIEBwYWdlX2NvdW50OiBpZiBu b24tTlVMTCwgd2lsbCBiZSBzZXQgdG8gdGhlIGR1bXBlZCBwYWdlIG51bWJlcgorICogQGJ1Zjog bXVzdCBlaXRoZXIgcG9pbnQgdG8gYSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgbWVtb3J5IHJlZ2lv biBvciBOVUxMCisgKiBAYnVmX2xlbjogbnVtYmVyIG9mIGVsZW1lbnRzIG9mICpAYnVmLCBmb3Ig emVybyBpZiBAYnVmIGlzIE5VTEwKKyAqCisgKiBSZWNlaXZlcyBvbmUgYXVkaW8gcGFnZSBmcm9t IHRoZSBzdHJlYW1pbmcgc2VydmVyLgorICoKKyAqIEluICJiZXN0IGVmZm9ydCIgbW9kZSwgc29t ZSBwYWdlcyBjYW4gYmUgZHJvcHBlZC4gVGhpcyBjYW4gYmUgZGV0ZWN0ZWQgdmlhCisgKiB0aGUg cGFnZSBjb3VudC4KKyAqCisgKiBidWZfbGVuIHdpbGwgYmUgc2V0IHRvIHRoZSBzaXplIG9mIHRo ZSBwYWdlLiBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvcgorICogY2FsbGluZyBmcmVlKDMp IG9uICpidWYuCisgKi8KK2Jvb2wgY2hhbWVsaXVtX3N0cmVhbV9yZWNlaXZlX3JlYWx0aW1lX2F1 ZGlvKHN0cnVjdCBjaGFtZWxpdW1fc3RyZWFtICpjbGllbnQsCisJCQkJCSAgICAgc2l6ZV90ICpw YWdlX2NvdW50LAorCQkJCQkgICAgIGludDMyX3QgKipidWYsIHNpemVfdCAqYnVmX2xlbikKK3sK KwllbnVtIHN0cmVhbV9tZXNzYWdlX2tpbmQga2luZDsKKwllbnVtIHN0cmVhbV9tZXNzYWdlX3R5 cGUgdHlwZTsKKwllbnVtIHN0cmVhbV9lcnJvciBlcnI7CisJc2l6ZV90IGJvZHlfbGVuOworCWNo YXIgcGFnZV9jb3VudF9idWZbNF07CisJaW50MzJfdCAqcHRyOworCisJd2hpbGUgKHRydWUpIHsK KwkJaWYgKCFjaGFtZWxpdW1fc3RyZWFtX3JlYWRfaGVhZGVyKGNsaWVudCwgJmtpbmQsICZ0eXBl LAorCQkJCQkJICAmZXJyLCAmYm9keV9sZW4pKQorCQkJcmV0dXJuIGZhbHNlOworCisJCWlmIChr aW5kICE9IFNUUkVBTV9NRVNTQUdFX0RBVEEpIHsKKwkJCWlndF93YXJuKCJFeHBlY3RlZCBhIGRh dGEgbWVzc2FnZSwgZ290IGtpbmQgJWRcbiIsIGtpbmQpOworCQkJcmV0dXJuIGZhbHNlOworCQl9 CisJCWlmICh0eXBlICE9IFNUUkVBTV9NRVNTQUdFX0RVTVBfUkVBTFRJTUVfQVVESU8pIHsKKwkJ CWlndF93YXJuKCJFeHBlY3RlZCByZWFsLXRpbWUgYXVkaW8gZHVtcCBtZXNzYWdlLCAiCisJCQkJ ICJnb3QgdHlwZSAlZFxuIiwgdHlwZSk7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKworCQlpZiAo ZXJyID09IFNUUkVBTV9FUlJPUl9OT05FKQorCQkJYnJlYWs7CisJCWVsc2UgaWYgKGVyciAhPSBT VFJFQU1fRVJST1JfQVVESU9fTUVNX09WRVJGTE9XX0RST1ApIHsKKwkJCWlndF93YXJuKCJSZWNl aXZlZCBlcnJvcjogJXMgKCVkKVxuIiwKKwkJCQkgc3RyZWFtX2Vycm9yX3N0cihlcnIpLCBlcnIp OworCQkJcmV0dXJuIGZhbHNlOworCQl9CisKKwkJaWd0X2RlYnVnKCJEcm9wcGVkIGFuIGF1ZGlv IHBhZ2UgYmVjYXVzZSBvZiBhbiBvdmVyZmxvd1xuIik7CisJCWlndF9hc3NlcnQoYm9keV9sZW4g PT0gMCk7CisJfQorCisJaWd0X2Fzc2VydChib2R5X2xlbiA+PSBzaXplb2YocGFnZV9jb3VudF9i dWYpKTsKKworCWlmICghcmVhZF93aG9sZShjbGllbnQtPmZkLCBwYWdlX2NvdW50X2J1Ziwgc2l6 ZW9mKHBhZ2VfY291bnRfYnVmKSkpCisJCXJldHVybiBmYWxzZTsKKwlpZiAocGFnZV9jb3VudCkK KwkJKnBhZ2VfY291bnQgPSBudG9obCgqKHVpbnQzMl90ICopICZwYWdlX2NvdW50X2J1ZlswXSk7 CisJYm9keV9sZW4gLT0gc2l6ZW9mKHBhZ2VfY291bnRfYnVmKTsKKworCWlndF9hc3NlcnQoYm9k eV9sZW4gJSBzaXplb2YoaW50MzJfdCkgPT0gMCk7CisJaWYgKCpidWZfbGVuICogc2l6ZW9mKGlu dDMyX3QpICE9IGJvZHlfbGVuKSB7CisJCXB0ciA9IHJlYWxsb2MoKmJ1ZiwgYm9keV9sZW4pOwor CQlpZiAoIXB0cikgeworCQkJaWd0X3dhcm4oInJlYWxsb2MgZmFpbGVkOiAlc1xuIiwgc3RyZXJy b3IoZXJybm8pKTsKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCQkqYnVmID0gcHRyOworCQkqYnVm X2xlbiA9IGJvZHlfbGVuIC8gc2l6ZW9mKGludDMyX3QpOworCX0KKworCXJldHVybiByZWFkX3do b2xlKGNsaWVudC0+ZmQsICpidWYsIGJvZHlfbGVuKTsKK30KKworLyoqCisgKiBjaGFtZWxpdW1f c3RyZWFtX3N0b3BfcmVhbHRpbWVfYXVkaW86CisgKgorICogU3RvcHMgcmVhbC10aW1lIGF1ZGlv IGNhcHR1cmUuIFRoaXMgYWxzbyBkcm9wcyBhbnkgYnVmZmVyZWQgYXVkaW8gcGFnZXMuCisgKiBU aGUgY2FsbGVyIHNob3VsZG4ndCBjYWxsICNjaGFtZWxpdW1fc3RyZWFtX3JlY2VpdmVfcmVhbHRp bWVfYXVkaW8gYWZ0ZXIKKyAqIHN0b3BwaW5nIGF1ZGlvIGNhcHR1cmUuCisgKi8KK2Jvb2wgY2hh bWVsaXVtX3N0cmVhbV9zdG9wX3JlYWx0aW1lX2F1ZGlvKHN0cnVjdCBjaGFtZWxpdW1fc3RyZWFt ICpjbGllbnQpCit7CisJZW51bSBzdHJlYW1fbWVzc2FnZV9raW5kIGtpbmQ7CisJZW51bSBzdHJl YW1fbWVzc2FnZV90eXBlIHR5cGU7CisJZW51bSBzdHJlYW1fZXJyb3IgZXJyOworCXNpemVfdCBs ZW47CisKKwlpZ3RfZGVidWcoIlN0b3BwaW5nIHJlYWwtdGltZSBhdWRpbyBjYXB0dXJlXG4iKTsK KworCWlmICghY2hhbWVsaXVtX3N0cmVhbV93cml0ZV9yZXF1ZXN0KGNsaWVudCwKKwkJCQkJICAg IFNUUkVBTV9NRVNTQUdFX1NUT1BfRFVNUF9BVURJTywKKwkJCQkJICAgIE5VTEwsIDApKQorCQly ZXR1cm4gZmFsc2U7CisKKwl3aGlsZSAodHJ1ZSkgeworCQlpZiAoIWNoYW1lbGl1bV9zdHJlYW1f cmVhZF9oZWFkZXIoY2xpZW50LCAma2luZCwgJnR5cGUsCisJCQkJCQkgICZlcnIsICZsZW4pKQor CQkJcmV0dXJuIGZhbHNlOworCisJCWlmIChraW5kID09IFNUUkVBTV9NRVNTQUdFX1JFU1BPTlNF KQorCQkJYnJlYWs7CisKKwkJaWYgKCFyZWFkX2FuZF9kaXNjYXJkKGNsaWVudC0+ZmQsIGxlbikp CisJCQlyZXR1cm4gZmFsc2U7CisJfQorCisJaWYgKHR5cGUgIT0gU1RSRUFNX01FU1NBR0VfU1RP UF9EVU1QX0FVRElPKSB7CisJCWlndF93YXJuKCJVbmV4cGVjdGVkIHJlc3BvbnNlIHR5cGUgJWRc biIsIHR5cGUpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCWlmIChlcnIgIT0gU1RSRUFNX0VSUk9S X05PTkUpIHsKKwkJaWd0X3dhcm4oIlJlY2VpdmVkIGVycm9yOiAlcyAoJWQpXG4iLAorCQkJIHN0 cmVhbV9lcnJvcl9zdHIoZXJyKSwgZXJyKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKwlpZiAobGVu ICE9IDApIHsKKwkJaWd0X3dhcm4oIkV4cGVjdGVkIGFuIGVtcHR5IHJlc3BvbnNlLCBnb3QgJXp1 IGJ5dGVzXG4iLCBsZW4pOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJcmV0dXJuIHRydWU7Cit9 CisKKy8qKgorICogY2hhbWVsaXVtX3N0cmVhbV9hdWRpb19mb3JtYXQ6CisgKgorICogR2V0cyB0 aGUgZm9ybWF0IHVzZWQgZm9yIGF1ZGlvIHBhZ2VzLgorICoKKyAqIERhdGEgd2lsbCBhbHdheXMg YmUgY2FwdHVyZWQgaW4gcmF3IHBhZ2VzIG9mIFMzMl9MRSBlbGVtZW50cy4gVGhpcyBmdW5jdGlv bgorICogZXhwb3NlcyB0aGUgc2FtcGxpbmcgcmF0ZSBhbmQgdGhlIG51bWJlciBvZiBjaGFubmVs cy4KKyAqLwordm9pZCBjaGFtZWxpdW1fc3RyZWFtX2F1ZGlvX2Zvcm1hdChzdHJ1Y3QgY2hhbWVs aXVtX3N0cmVhbSAqc3RyZWFtLAorCQkJCSAgIGludCAqcmF0ZSwgaW50ICpjaGFubmVscykKK3sK KwkvKiBUT0RPOiB0aGUgQ2hhbWVsaXVtIHN0cmVhbWluZyBzZXJ2ZXIgZG9lc24ndCBleHBvc2Ug dGhvc2UgeWV0LgorCSAqIEp1c3QgaGFyZGNvZGUgdGhlIHZhbHVlcyBmb3Igbm93LiAqLworCSpy YXRlID0gNDgwMDA7CisJKmNoYW5uZWxzID0gODsKK30KKworLyoqCisgKiBjaGFtZWxpdW1fc3Ry ZWFtX2luaXQ6CisgKgorICogQ29ubmVjdHMgdG8gdGhlIENoYW1lbGl1bSBzdHJlYW1pbmcgc2Vy dmVyLgorICovCitzdHJ1Y3QgY2hhbWVsaXVtX3N0cmVhbSAqY2hhbWVsaXVtX3N0cmVhbV9pbml0 KHZvaWQpCit7CisJc3RydWN0IGNoYW1lbGl1bV9zdHJlYW0gKmNsaWVudDsKKworCWNsaWVudCA9 IGNhbGxvYygxLCBzaXplb2YoKmNsaWVudCkpOworCisJaWYgKCFjaGFtZWxpdW1fc3RyZWFtX3Jl YWRfY29uZmlnKGNsaWVudCkpCisJCWdvdG8gZXJyb3JfY2xpZW50OworCWlmICghY2hhbWVsaXVt X3N0cmVhbV9jb25uZWN0KGNsaWVudCkpCisJCWdvdG8gZXJyb3JfY2xpZW50OworCWlmICghY2hh bWVsaXVtX3N0cmVhbV9jaGVja192ZXJzaW9uKGNsaWVudCkpCisJCWdvdG8gZXJyb3JfZmQ7CisK KwlyZXR1cm4gY2xpZW50OworCitlcnJvcl9mZDoKKwljbG9zZShjbGllbnQtPmZkKTsKK2Vycm9y X2NsaWVudDoKKwlmcmVlKGNsaWVudCk7CisJcmV0dXJuIE5VTEw7Cit9CisKK3ZvaWQgY2hhbWVs aXVtX3N0cmVhbV9kZWluaXQoc3RydWN0IGNoYW1lbGl1bV9zdHJlYW0gKmNsaWVudCkKK3sKKwlp ZiAoY2xvc2UoY2xpZW50LT5mZCkgIT0gMCkKKwkJaWd0X3dhcm4oImNsb3NlIGZhaWxlZDogJXNc biIsIHN0cmVycm9yKGVycm5vKSk7CisJZnJlZShjbGllbnQpOworfQpkaWZmIC0tZ2l0IGEvbGli L2lndF9jaGFtZWxpdW1fc3RyZWFtLmggYi9saWIvaWd0X2NoYW1lbGl1bV9zdHJlYW0uaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uZGU0ZTk5MzEKLS0tIC9kZXYvbnVsbAor KysgYi9saWIvaWd0X2NoYW1lbGl1bV9zdHJlYW0uaApAQCAtMCwwICsxLDUyIEBACisvKgorICog Q29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlz IGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcg YQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24g ZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhv dXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdo dHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJs aWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBl cm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8g c28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92 ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcg dGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBv ciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBT T0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5E LCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRI RSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICog VEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0s IERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg Q09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1Ig SU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJ TkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICogQXV0aG9yczogU2ltb24gU2VyIDxzaW1v bi5zZXJAaW50ZWwuY29tPgorICovCisKKyNpZm5kZWYgSUdUX0NIQU1FTElVTV9TVFJFQU1fSAor I2RlZmluZSBJR1RfQ0hBTUVMSVVNX1NUUkVBTV9ICisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor ZW51bSBjaGFtZWxpdW1fc3RyZWFtX3JlYWx0aW1lX21vZGUgeworCUNIQU1FTElVTV9TVFJFQU1f UkVBTFRJTUVfTk9ORSA9IDAsCisJLyogc3RvcCBkdW1waW5nIHdoZW4gb3ZlcmZsb3cgKi8KKwlD SEFNRUxJVU1fU1RSRUFNX1JFQUxUSU1FX1NUT1BfV0hFTl9PVkVSRkxPVyA9IDEsCisJLyogZHJv cCBkYXRhIG9uIG92ZXJmbG93ICovCisJQ0hBTUVMSVVNX1NUUkVBTV9SRUFMVElNRV9CRVNUX0VG Rk9SVCA9IDIsCit9OworCitzdHJ1Y3QgY2hhbWVsaXVtX3N0cmVhbTsKKworc3RydWN0IGNoYW1l bGl1bV9zdHJlYW0gKmNoYW1lbGl1bV9zdHJlYW1faW5pdCh2b2lkKTsKK3ZvaWQgY2hhbWVsaXVt X3N0cmVhbV9kZWluaXQoc3RydWN0IGNoYW1lbGl1bV9zdHJlYW0gKmNsaWVudCk7Citib29sIGNo YW1lbGl1bV9zdHJlYW1fZHVtcF9yZWFsdGltZV9hdWRpbyhzdHJ1Y3QgY2hhbWVsaXVtX3N0cmVh bSAqY2xpZW50LAorCQkJCQkgIGVudW0gY2hhbWVsaXVtX3N0cmVhbV9yZWFsdGltZV9tb2RlIG1v ZGUpOwordm9pZCBjaGFtZWxpdW1fc3RyZWFtX2F1ZGlvX2Zvcm1hdChzdHJ1Y3QgY2hhbWVsaXVt X3N0cmVhbSAqc3RyZWFtLAorCQkJCSAgIGludCAqcmF0ZSwgaW50ICpjaGFubmVscyk7Citib29s IGNoYW1lbGl1bV9zdHJlYW1fcmVjZWl2ZV9yZWFsdGltZV9hdWRpbyhzdHJ1Y3QgY2hhbWVsaXVt X3N0cmVhbSAqY2xpZW50LAorCQkJCQkgICAgIHNpemVfdCAqcGFnZV9jb3VudCwKKwkJCQkJICAg ICBpbnQzMl90ICoqYnVmLCBzaXplX3QgKmJ1Zl9sZW4pOworYm9vbCBjaGFtZWxpdW1fc3RyZWFt X3N0b3BfcmVhbHRpbWVfYXVkaW8oc3RydWN0IGNoYW1lbGl1bV9zdHJlYW0gKmNsaWVudCk7CisK KyNlbmRpZgpkaWZmIC0tZ2l0IGEvbGliL21lc29uLmJ1aWxkIGIvbGliL21lc29uLmJ1aWxkCmlu ZGV4IGE4NDYyOTMzLi5lZWFkMGFmYiAxMDA2NDQKLS0tIGEvbGliL21lc29uLmJ1aWxkCisrKyBi L2xpYi9tZXNvbi5idWlsZApAQCAtOTIsNyArOTIsNyBAQCBpZiB2YWxncmluZC5mb3VuZCgpCiBl bmRpZgogCiBpZiBnc2wuZm91bmQoKQotCWxpYl9kZXBzICs9IFsgZ3NsIF0KKwlsaWJfZGVwcyAr PSBnc2wKIAlsaWJfc291cmNlcyArPSBbICdpZ3RfZnJhbWUuYycsICdpZ3RfYXVkaW8uYycgXQog ZW5kaWYKIApAQCAtMTAxLDkgKzEwMSwxMCBAQCBpZiBhbHNhLmZvdW5kKCkKIAlsaWJfc291cmNl cyArPSAnaWd0X2Fsc2EuYycKIGVuZGlmCiAKLWlmIGNoYW1lbGl1bS5mb3VuZCgpCitpZiBjaGFt ZWxpdW1fZm91bmQKIAlsaWJfZGVwcyArPSBjaGFtZWxpdW0KIAlsaWJfc291cmNlcyArPSAnaWd0 X2NoYW1lbGl1bS5jJworCWxpYl9zb3VyY2VzICs9ICdpZ3RfY2hhbWVsaXVtX3N0cmVhbS5jJwog ZW5kaWYKIAogc3JjZGlyID0gam9pbl9wYXRocyhtZXNvbi5zb3VyY2Vfcm9vdCgpLCAndGVzdHMn KQpkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAppbmRleCA1NTc0MDBhNS4u YmU2ZGZmOWQgMTAwNjQ0Ci0tLSBhL21lc29uLmJ1aWxkCisrKyBiL21lc29uLmJ1aWxkCkBAIC02 NCw4ICs2NCw2IEBAIF9idWlsZF9vdmVybGF5ID0gZmFsc2UKIF9vdmVybGF5X3JlcXVpcmVkID0g ZmFsc2UKIF9idWlsZF9tYW4gPSBmYWxzZQogX21hbl9yZXF1aXJlZCA9IGZhbHNlCi1fYnVpbGRf YXVkaW8gPSBmYWxzZQotX2F1ZGlvX3JlcXVpcmVkID0gZmFsc2UKIF9idWlsZF9jaGFtZWxpdW0g PSBmYWxzZQogX2NoYW1lbGl1bV9yZXF1aXJlZCA9IGZhbHNlCiBfYnVpbGRfZG9jcyA9IGZhbHNl CkBAIC03OSw3ICs3Nyw2IEBAIGJ1aWxkX292ZXJsYXkgPSBnZXRfb3B0aW9uKCdidWlsZF9vdmVy bGF5JykKIG92ZXJsYXlfYmFja2VuZHMgPSBnZXRfb3B0aW9uKCdvdmVybGF5X2JhY2tlbmRzJykK IGJ1aWxkX21hbiA9IGdldF9vcHRpb24oJ2J1aWxkX21hbicpCiB3aXRoX3ZhbGdyaW5kID0gZ2V0 X29wdGlvbignd2l0aF92YWxncmluZCcpCi1idWlsZF9hdWRpbyA9IGdldF9vcHRpb24oJ2J1aWxk X2F1ZGlvJykKIGJ1aWxkX2NoYW1lbGl1bSA9IGdldF9vcHRpb24oJ2J1aWxkX2NoYW1lbGl1bScp CiBidWlsZF9kb2NzID0gZ2V0X29wdGlvbignYnVpbGRfZG9jcycpCiBidWlsZF90ZXN0cyA9IGdl dF9vcHRpb24oJ2J1aWxkX3Rlc3RzJykKQEAgLTkxLDggKzg4LDYgQEAgX2J1aWxkX292ZXJsYXkg PSBidWlsZF9vdmVybGF5ICE9ICdmYWxzZScKIF9vdmVybGF5X3JlcXVpcmVkID0gYnVpbGRfb3Zl cmxheSA9PSAndHJ1ZScKIF9idWlsZF9tYW4gPSBidWlsZF9tYW4gIT0gJ2ZhbHNlJwogX21hbl9y ZXF1aXJlZCA9IGJ1aWxkX21hbiA9PSAndHJ1ZScKLV9idWlsZF9hdWRpbyA9IGJ1aWxkX2F1ZGlv ICE9ICdmYWxzZScKLV9hdWRpb19yZXF1aXJlZCA9IGJ1aWxkX2F1ZGlvID09ICd0cnVlJwogX2J1 aWxkX2NoYW1lbGl1bSA9IGJ1aWxkX2NoYW1lbGl1bSAhPSAnZmFsc2UnCiBfY2hhbWVsaXVtX3Jl cXVpcmVkID0gYnVpbGRfY2hhbWVsaXVtID09ICd0cnVlJwogX2J1aWxkX2RvY3MgPSBidWlsZF9k b2NzICE9ICdmYWxzZScKQEAgLTE2NiwyNiArMTYxLDYgQEAgY2Fpcm8gPSBkZXBlbmRlbmN5KCdj YWlybycsIHZlcnNpb24gOiAnPjEuMTIuMCcsIHJlcXVpcmVkIDogdHJ1ZSkKIGxpYnVkZXYgPSBk ZXBlbmRlbmN5KCdsaWJ1ZGV2JywgcmVxdWlyZWQgOiB0cnVlKQogZ2xpYiA9IGRlcGVuZGVuY3ko J2dsaWItMi4wJywgcmVxdWlyZWQgOiB0cnVlKQogCi1nc2wgPSBudWxsX2RlcAotYWxzYSA9IG51 bGxfZGVwCi1pZiBfYnVpbGRfYXVkaW8gb3IgX2J1aWxkX2NoYW1lbGl1bQotCWdzbCA9IGRlcGVu ZGVuY3koJ2dzbCcsIHJlcXVpcmVkIDogX2F1ZGlvX3JlcXVpcmVkIG9yIF9jaGFtZWxpdW1fcmVx dWlyZWQpCi1lbmRpZgotaWYgX2J1aWxkX2F1ZGlvCi0JYWxzYSA9IGRlcGVuZGVuY3koJ2Fsc2En LCByZXF1aXJlZCA6IF9hdWRpb19yZXF1aXJlZCkKLWVuZGlmCi0KLWF1ZGlvaW5mbyA9ICdObycK LWlmIF9idWlsZF9hdWRpbyBhbmQgYWxzYS5mb3VuZCgpIGFuZCBnc2wuZm91bmQoKQotCWF1ZGlv aW5mbyA9ICdZZXMnCi1lbHNlCi0JaWYgX2F1ZGlvX3JlcXVpcmVkCi0JCWVycm9yKCdDYW5ub3Qg YnVpbGQgYXVkaW8gdGVzdCBkdWUgdG8gbWlzc2luZyBkZXBlbmRlbmNpZXMnKQotCWVuZGlmCi0J X2J1aWxkX2F1ZGlvID0gZmFsc2UKLWVuZGlmCi1idWlsZF9pbmZvICs9ICdCdWlsZCBhdWRpbyB0 ZXN0OiAnICsgYXVkaW9pbmZvCi0KIHhtbHJwYyA9IGRlcGVuZGVuY3koJ3htbHJwYycsIHJlcXVp cmVkIDogZmFsc2UpCiB4bWxycGNfdXRpbCA9IGRlcGVuZGVuY3koJ3htbHJwY191dGlsJywgcmVx dWlyZWQgOiBmYWxzZSkKIHhtbHJwY19jbGllbnQgPSBkZXBlbmRlbmN5KCd4bWxycGNfY2xpZW50 JywgcmVxdWlyZWQgOiBmYWxzZSkKQEAgLTE5NywyMSArMTcyLDMyIEBAIGlmIG5vdCB4bWxycGMu Zm91bmQoKSBhbmQgeG1scnBjX2NtZC5mb3VuZCgpCiAKIAlpZiBsaWJzX2NtZC5yZXR1cm5jb2Rl KCkgPT0gMCBhbmQgY2ZsYWdzX2NtZC5yZXR1cm5jb2RlKCkgPT0gMAogCQl4bWxycGMgPSBkZWNs YXJlX2RlcGVuZGVuY3koY29tcGlsZV9hcmdzOiBjZmxhZ3NfY21kLnN0ZG91dCgpLnN0cmlwKCku c3BsaXQoKSwKLQkJCQkJICAgbGlua19hcmdzIDogbGlic19jbWQuc3Rkb3V0KCkuc3RyaXAoKS5z cGxpdCgpKQorCQkJCQkgICAgbGlua19hcmdzIDogbGlic19jbWQuc3Rkb3V0KCkuc3RyaXAoKS5z cGxpdCgpKQogCQl4bWxycGNfdXRpbCA9IGRlY2xhcmVfZGVwZW5kZW5jeSgpCiAJCXhtbHJwY19j bGllbnQgPSBkZWNsYXJlX2RlcGVuZGVuY3koKQogCWVuZGlmCiBlbmRpZgogCitnc2wgPSBudWxs X2RlcAorYWxzYSA9IG51bGxfZGVwCiBjaGFtZWxpdW0gPSBudWxsX2RlcAorY2hhbWVsaXVtX2Zv dW5kID0gZmFsc2UgIyBUT0RPOiB1c2UgYSBkaXNhYmxlciBvYmplY3QgaW5zdGVhZAogY2hhbWVs aXVtaW5mbyA9ICdObycKLWlmIF9idWlsZF9jaGFtZWxpdW0gYW5kIGdzbC5mb3VuZCgpIGFuZCB4 bWxycGMuZm91bmQoKSBhbmQgeG1scnBjX3V0aWwuZm91bmQoKSBhbmQgeG1scnBjX2NsaWVudC5m b3VuZCgpCi0JY2hhbWVsaXVtID0gZGVjbGFyZV9kZXBlbmRlbmN5KGRlcGVuZGVuY2llcyA6IFsg eG1scnBjLAotCQkJCQkJCXhtbHJwY191dGlsLCB4bWxycGNfY2xpZW50XSkKLQljb25maWcuc2V0 KCdIQVZFX0NIQU1FTElVTScsIDEpCi0JY2hhbWVsaXVtaW5mbyA9ICdZZXMnCi1lbGlmIF9jaGFt ZWxpdW1fcmVxdWlyZWQKLQllcnJvcignQ2Fubm90IGJ1aWxkIGNoYW1lbGl1bSB0ZXN0IGR1ZSB0 byBtaXNzaW5nIGRlcGVuZGVuY2llcycpCitpZiBfYnVpbGRfY2hhbWVsaXVtCisJZ3NsID0gZGVw ZW5kZW5jeSgnZ3NsJywgcmVxdWlyZWQgOiBfY2hhbWVsaXVtX3JlcXVpcmVkKQorCWFsc2EgPSBk ZXBlbmRlbmN5KCdhbHNhJywgcmVxdWlyZWQgOiBfY2hhbWVsaXVtX3JlcXVpcmVkKQorCWNoYW1l bGl1bSA9IGRlY2xhcmVfZGVwZW5kZW5jeShkZXBlbmRlbmNpZXMgOiBbCisJCXhtbHJwYywKKwkJ eG1scnBjX3V0aWwsCisJCXhtbHJwY19jbGllbnQsCisJCWdzbCwKKwkJYWxzYSwKKwldLCByZXF1 aXJlZCA6IF9jaGFtZWxpdW1fcmVxdWlyZWQpCisJaWYgeG1scnBjLmZvdW5kKCkgYW5kIHhtbHJw Y191dGlsLmZvdW5kKCkgYW5kIHhtbHJwY19jbGllbnQuZm91bmQoKSBhbmQgZ3NsLmZvdW5kKCkg YW5kIGFsc2EuZm91bmQoKQorCQljb25maWcuc2V0KCdIQVZFX0NIQU1FTElVTScsIDEpCisJCWNo YW1lbGl1bWluZm8gPSAnWWVzJworCQljaGFtZWxpdW1fZm91bmQgPSB0cnVlCisJZW5kaWYKIGVu ZGlmCiBidWlsZF9pbmZvICs9ICdCdWlsZCBDaGFtZWxpdW0gdGVzdDogJyArIGNoYW1lbGl1bWlu Zm8KIApkaWZmIC0tZ2l0IGEvbWVzb25fb3B0aW9ucy50eHQgYi9tZXNvbl9vcHRpb25zLnR4dApp bmRleCAwY2QzYjM1MC4uODg4ZWZlNTYgMTAwNjQ0Ci0tLSBhL21lc29uX29wdGlvbnMudHh0Cisr KyBiL21lc29uX29wdGlvbnMudHh0CkBAIC0xMCwxMiArMTAsNiBAQCBvcHRpb24oJ292ZXJsYXlf YmFja2VuZHMnLAogICAgICAgIGNob2ljZXMgOiBbICdhdXRvJywgJ3gnLCAneHYnIF0sCiAgICAg ICAgZGVzY3JpcHRpb24gOiAnT3ZlcmxheSBiYWNrZW5kcyB0byBlbmFibGUnKQogCi1vcHRpb24o J2J1aWxkX2F1ZGlvJywKLSAgICAgICB0eXBlIDogJ2NvbWJvJywKLSAgICAgICB2YWx1ZSA6ICdh dXRvJywKLSAgICAgICBjaG9pY2VzIDogWydhdXRvJywgJ3RydWUnLCAnZmFsc2UnXSwKLSAgICAg ICBkZXNjcmlwdGlvbiA6ICdCdWlsZCBhdWRpbyB0ZXN0JykKLQogb3B0aW9uKCdidWlsZF9jaGFt ZWxpdW0nLAogICAgICAgIHR5cGUgOiAnY29tYm8nLAogICAgICAgIHZhbHVlIDogJ2F1dG8nLApk aWZmIC0tZ2l0IGEvdGVzdHMvYXVkaW8uYyBiL3Rlc3RzL2F1ZGlvLmMKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDU2MDg3NmEzLi4wMDAwMDAwMAotLS0gYS90ZXN0cy9hdWRpby5jCisr KyAvZGV2L251bGwKQEAgLTEsMTkzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgwqkgMjAxNyBJ bnRlbCBDb3Jwb3JhdGlvbgotICoKLSAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZy ZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCi0gKiBjb3B5IG9mIHRoaXMg c29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2Fy ZSIpLAotICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5j bHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgotICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1v ZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCi0gKiBhbmQvb3Ig c2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hv bSB0aGUKLSAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUg Zm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0gKgotICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Ug YW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAotICogcGFyYWdy YXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRp b25zIG9mIHRoZQotICogU29mdHdhcmUuCi0gKgotICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVE ICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKLSAqIElN UExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVS Q0hBTlRBQklMSVRZLAotICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5P TklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCi0gKiBUSEUgQVVUSE9SUyBPUiBDT1BZ UklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgot ICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBP VEhFUldJU0UsIEFSSVNJTkcKLSAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEgg VEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKLSAqIElOIFRIRSBTT0ZU V0FSRS4KLSAqCi0gKiBBdXRob3JzOgotICogIFBhdWwgS29jaWFsa293c2tpIDxwYXVsLmtvY2lh bGtvd3NraUBsaW51eC5pbnRlbC5jb20+Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu Y2x1ZGUgImlndC5oIgotCi0jZGVmaW5lIFBMQVlCQUNLX0NIQU5ORUxTCTIKLSNkZWZpbmUgUExB WUJBQ0tfRlJBTUVTCQkxMDI0Ci0KLSNkZWZpbmUgQ0FQVFVSRV9TQU1QTEVfUkFURQk0ODAwMAot I2RlZmluZSBDQVBUVVJFX0NIQU5ORUxTCTIKLSNkZWZpbmUgQ0FQVFVSRV9ERVZJQ0VfTkFNRQki ZGVmYXVsdCIKLSNkZWZpbmUgQ0FQVFVSRV9GUkFNRVMJCTIwNDgKLQotI2RlZmluZSBSVU5fVElN RU9VVAkJMjAwMAotCi1zdHJ1Y3QgdGVzdF9kYXRhIHsKLQlzdHJ1Y3QgYWxzYSAqYWxzYTsKLQlz dHJ1Y3QgYXVkaW9fc2lnbmFsICpzaWduYWw7Ci0KLQlpbnQgc3RyZWFrOwotfTsKLQotc3RhdGlj IGludCBzYW1wbGluZ19yYXRlc1tdID0gewotCTMyMDAwLAotCTQ0MTAwLAotCTQ4MDAwLAotCTg4 MjAwLAotCTk2MDAwLAotCTE3NjQwMCwKLQkxOTIwMDAsCi19OwotCi1zdGF0aWMgaW50IHNhbXBs aW5nX3JhdGVzX2NvdW50ID0gc2l6ZW9mKHNhbXBsaW5nX3JhdGVzKSAvIHNpemVvZihpbnQpOwot Ci1zdGF0aWMgaW50IHRlc3RfZnJlcXVlbmNpZXNbXSA9IHsKLQkzMDAsCi0JNjAwLAotCTEyMDAs Ci0JODAwMDAsCi0JMTAwMDAsCi19OwotCi1zdGF0aWMgaW50IHRlc3RfZnJlcXVlbmNpZXNfY291 bnQgPSBzaXplb2YodGVzdF9mcmVxdWVuY2llcykgLyBzaXplb2YoaW50KTsKLQotc3RhdGljIGlu dCBvdXRwdXRfY2FsbGJhY2sodm9pZCAqZGF0YSwgc2hvcnQgKmJ1ZmZlciwgaW50IGZyYW1lcykK LXsKLQlzdHJ1Y3QgdGVzdF9kYXRhICp0ZXN0X2RhdGEgPSAoc3RydWN0IHRlc3RfZGF0YSAqKSBk YXRhOwotCi0JYXVkaW9fc2lnbmFsX2ZpbGwodGVzdF9kYXRhLT5zaWduYWwsIGJ1ZmZlciwgZnJh bWVzKTsKLQotCXJldHVybiAwOwotfQotCi1zdGF0aWMgaW50IGlucHV0X2NhbGxiYWNrKHZvaWQg KmRhdGEsIHNob3J0ICpidWZmZXIsIGludCBmcmFtZXMpCi17Ci0Jc3RydWN0IHRlc3RfZGF0YSAq dGVzdF9kYXRhID0gKHN0cnVjdCB0ZXN0X2RhdGEgKikgZGF0YTsKLQlib29sIGRldGVjdDsKLQot CWRldGVjdCA9IGF1ZGlvX3NpZ25hbF9kZXRlY3QodGVzdF9kYXRhLT5zaWduYWwsIENBUFRVUkVf Q0hBTk5FTFMsCi0JCQkJICAgICBDQVBUVVJFX1NBTVBMRV9SQVRFLCBidWZmZXIsIGZyYW1lcyk7 Ci0JaWYgKGRldGVjdCkKLQkJdGVzdF9kYXRhLT5zdHJlYWsrKzsKLQllbHNlCi0JCXRlc3RfZGF0 YS0+c3RyZWFrID0gMDsKLQotCS8qIEEgc3RyZWFrIG9mIDMgZ2l2ZXMgY29uZmlkZW5jZSB0aGF0 IHRoZSBzaWduYWwgaXMgZ29vZC4gKi8KLQlpZiAodGVzdF9kYXRhLT5zdHJlYWsgPT0gMykKLQkJ cmV0dXJuIDE7Ci0KLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIHZvaWQgdGVzdF9pbnRlZ3JpdHko Y29uc3QgY2hhciAqZGV2aWNlX25hbWUpCi17Ci0Jc3RydWN0IHRlc3RfZGF0YSBkYXRhOwotCWlu dCBzYW1wbGluZ19yYXRlOwotCWJvb2wgcnVuID0gZmFsc2U7Ci0JYm9vbCB0ZXN0OwotCWludCBp LCBqOwotCWludCByZXQ7Ci0KLQlkYXRhLmFsc2EgPSBhbHNhX2luaXQoKTsKLQlpZ3RfYXNzZXJ0 KGRhdGEuYWxzYSk7Ci0KLQlyZXQgPSBhbHNhX29wZW5faW5wdXQoZGF0YS5hbHNhLCBDQVBUVVJF X0RFVklDRV9OQU1FKTsKLQlpZ3RfYXNzZXJ0KHJldCA+PSAwKTsKLQotCWFsc2FfY29uZmlndXJl X2lucHV0KGRhdGEuYWxzYSwgQ0FQVFVSRV9DSEFOTkVMUywKLQkJCSAgICAgQ0FQVFVSRV9TQU1Q TEVfUkFURSk7Ci0KLQlhbHNhX3JlZ2lzdGVyX2lucHV0X2NhbGxiYWNrKGRhdGEuYWxzYSwgaW5w dXRfY2FsbGJhY2ssICZkYXRhLAotCQkJCSAgICAgQ0FQVFVSRV9GUkFNRVMpOwotCi0JZm9yIChp ID0gMDsgaSA8IHNhbXBsaW5nX3JhdGVzX2NvdW50OyBpKyspIHsKLQkJcmV0ID0gYWxzYV9vcGVu X291dHB1dChkYXRhLmFsc2EsIGRldmljZV9uYW1lKTsKLQkJaWd0X2Fzc2VydChyZXQgPj0gMCk7 Ci0KLQkJc2FtcGxpbmdfcmF0ZSA9IHNhbXBsaW5nX3JhdGVzW2ldOwotCi0JCXRlc3QgPSBhbHNh X3Rlc3Rfb3V0cHV0X2NvbmZpZ3VyYXRpb24oZGF0YS5hbHNhLAotCQkJCQkJICAgICAgUExBWUJB Q0tfQ0hBTk5FTFMsCi0JCQkJCQkgICAgICBzYW1wbGluZ19yYXRlKTsKLQkJaWYgKCF0ZXN0KSB7 Ci0JCQlhbHNhX2Nsb3NlX291dHB1dChkYXRhLmFsc2EpOwotCQkJY29udGludWU7Ci0JCX0KLQot CQlpZ3RfZGVidWcoIlRlc3Rpbmcgd2l0aCBzYW1wbGluZyByYXRlICVkXG4iLCBzYW1wbGluZ19y YXRlKTsKLQotCQlhbHNhX2NvbmZpZ3VyZV9vdXRwdXQoZGF0YS5hbHNhLCBQTEFZQkFDS19DSEFO TkVMUywKLQkJCQkgICAgICAgc2FtcGxpbmdfcmF0ZSk7Ci0KLQkJZGF0YS5zaWduYWwgPSBhdWRp b19zaWduYWxfaW5pdChQTEFZQkFDS19DSEFOTkVMUywKLQkJCQkJCXNhbXBsaW5nX3JhdGUpOwot CQlpZ3RfYXNzZXJ0KGRhdGEuc2lnbmFsKTsKLQotCQlmb3IgKGogPSAwOyBqIDwgdGVzdF9mcmVx dWVuY2llc19jb3VudDsgaisrKQotCQkJYXVkaW9fc2lnbmFsX2FkZF9mcmVxdWVuY3koZGF0YS5z aWduYWwsCi0JCQkJCQkgICB0ZXN0X2ZyZXF1ZW5jaWVzW2pdKTsKLQotCQlhdWRpb19zaWduYWxf c3ludGhlc2l6ZShkYXRhLnNpZ25hbCk7Ci0KLQkJYWxzYV9yZWdpc3Rlcl9vdXRwdXRfY2FsbGJh Y2soZGF0YS5hbHNhLCBvdXRwdXRfY2FsbGJhY2ssCi0JCQkJCSAgICAgICZkYXRhLCBQTEFZQkFD S19GUkFNRVMpOwotCi0JCWRhdGEuc3RyZWFrID0gMDsKLQotCQlyZXQgPSBhbHNhX3J1bihkYXRh LmFsc2EsIFJVTl9USU1FT1VUKTsKLQkJaWd0X2Fzc2VydChyZXQgPiAwKTsKLQotCQlhdWRpb19z aWduYWxfY2xlYW4oZGF0YS5zaWduYWwpOwotCQlmcmVlKGRhdGEuc2lnbmFsKTsKLQotCQlhbHNh X2Nsb3NlX291dHB1dChkYXRhLmFsc2EpOwotCi0JCXJ1biA9IHRydWU7Ci0JfQotCi0JLyogTWFr ZSBzdXJlIHdlIHRlc3RlZCBhdCBsZWFzdCBvbmUgZnJlcXVlbmN5ICovCi0JaWd0X2Fzc2VydChy dW4pOwotCi0JYWxzYV9jbG9zZV9pbnB1dChkYXRhLmFsc2EpOwotCWZyZWUoZGF0YS5hbHNhKTsK LX0KLQotc3RhdGljIHZvaWQgdGVzdF9zdXNwZW5kX3Jlc3VtZV9pbnRlZ3JpdHkoY29uc3QgY2hh ciAqZGV2aWNlX25hbWUsCi0JCQkJCSAgZW51bSBpZ3Rfc3VzcGVuZF9zdGF0ZSBzdGF0ZSwKLQkJ CQkJICBlbnVtIGlndF9zdXNwZW5kX3Rlc3QgdGVzdCkKLXsKLQl0ZXN0X2ludGVncml0eShkZXZp Y2VfbmFtZSk7Ci0KLQlpZ3Rfc3lzdGVtX3N1c3BlbmRfYXV0b3Jlc3VtZShzdGF0ZSwgdGVzdCk7 Ci0KLQl0ZXN0X2ludGVncml0eShkZXZpY2VfbmFtZSk7Ci19Ci0KLWlndF9tYWluCi17Ci0JaWd0 X3N1YnRlc3QoImhkbWktaW50ZWdyaXR5IikKLQkJdGVzdF9pbnRlZ3JpdHkoIkhETUkiKTsKLQot CWlndF9zdWJ0ZXN0KCJoZG1pLWludGVncml0eS1hZnRlci1zdXNwZW5kIikKLQkJdGVzdF9zdXNw ZW5kX3Jlc3VtZV9pbnRlZ3JpdHkoIkhETUkiLCBTVVNQRU5EX1NUQVRFX01FTSwKLQkJCQkJICAg ICAgU1VTUEVORF9URVNUX05PTkUpOwotCi0JaWd0X3N1YnRlc3QoImhkbWktaW50ZWdyaXR5LWFm dGVyLWhpYmVybmF0ZSIpCi0JCXRlc3Rfc3VzcGVuZF9yZXN1bWVfaW50ZWdyaXR5KCJIRE1JIiwg U1VTUEVORF9TVEFURV9ESVNLLAotCQkJCQkgICAgICBTVVNQRU5EX1RFU1RfREVWSUNFUyk7Ci19 CmRpZmYgLS1naXQgYS90ZXN0cy9rbXNfY2hhbWVsaXVtLmMgYi90ZXN0cy9rbXNfY2hhbWVsaXVt LmMKaW5kZXggMmRjMTA0OWQuLjI5NzRmZjY5IDEwMDY0NAotLS0gYS90ZXN0cy9rbXNfY2hhbWVs aXVtLmMKKysrIGIvdGVzdHMva21zX2NoYW1lbGl1bS5jCkBAIC00MTMsNyArNDEzLDcgQEAgdGVz dF9zdXNwZW5kX3Jlc3VtZV9lZGlkX2NoYW5nZShkYXRhX3QgKmRhdGEsIHN0cnVjdCBjaGFtZWxp dW1fcG9ydCAqcG9ydCwKIAogc3RhdGljIGlndF9vdXRwdXRfdCAqCiBwcmVwYXJlX291dHB1dChk YXRhX3QgKmRhdGEsCi0JICAgICAgIHN0cnVjdCBjaGFtZWxpdW1fcG9ydCAqcG9ydCkKKwkgICAg ICAgc3RydWN0IGNoYW1lbGl1bV9wb3J0ICpwb3J0LCBib29sIHNldF9lZGlkKQogewogCWlndF9k aXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsKIAlpZ3Rfb3V0cHV0X3QgKm91dHB1 dDsKQEAgLTQyOCw3ICs0MjgsOCBAQCBwcmVwYXJlX291dHB1dChkYXRhX3QgKmRhdGEsCiAJLyog VGhlIGNoYW1lbGl1bSdzIGRlZmF1bHQgRURJRCBoYXMgYSBsb3Qgb2YgcmVzb2x1dGlvbnMsIHdh eSBtb3JlIHRoZW4KIAkgKiB3ZSBuZWVkIHRvIHRlc3QKIAkgKi8KLQljaGFtZWxpdW1fcG9ydF9z ZXRfZWRpZChkYXRhLT5jaGFtZWxpdW0sIHBvcnQsIGRhdGEtPmVkaWRfaWQpOworCWlmIChzZXRf ZWRpZCkKKwkJY2hhbWVsaXVtX3BvcnRfc2V0X2VkaWQoZGF0YS0+Y2hhbWVsaXVtLCBwb3J0LCBk YXRhLT5lZGlkX2lkKTsKIAogCWNoYW1lbGl1bV9wbHVnKGRhdGEtPmNoYW1lbGl1bSwgcG9ydCk7 CiAJd2FpdF9mb3JfY29ubmVjdG9yKGRhdGEsIHBvcnQsIERSTV9NT0RFX0NPTk5FQ1RFRCk7CkBA IC02MTMsNyArNjE0LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9kaXNwbGF5X29uZV9tb2RlKGRhdGFf dCAqZGF0YSwgc3RydWN0IGNoYW1lbGl1bV9wb3J0ICpwb3J0LAogCiAJcmVzZXRfc3RhdGUoZGF0 YSwgcG9ydCk7CiAKLQlvdXRwdXQgPSBwcmVwYXJlX291dHB1dChkYXRhLCBwb3J0KTsKKwlvdXRw dXQgPSBwcmVwYXJlX291dHB1dChkYXRhLCBwb3J0LCB0cnVlKTsKIAljb25uZWN0b3IgPSBjaGFt ZWxpdW1fcG9ydF9nZXRfY29ubmVjdG9yKGRhdGEtPmNoYW1lbGl1bSwgcG9ydCwgZmFsc2UpOwog CXByaW1hcnkgPSBpZ3Rfb3V0cHV0X2dldF9wbGFuZV90eXBlKG91dHB1dCwgRFJNX1BMQU5FX1RZ UEVfUFJJTUFSWSk7CiAJaWd0X2Fzc2VydChwcmltYXJ5KTsKQEAgLTY0NCw3ICs2NDUsNyBAQCBz dGF0aWMgdm9pZCB0ZXN0X2Rpc3BsYXlfYWxsX21vZGVzKGRhdGFfdCAqZGF0YSwgc3RydWN0IGNo YW1lbGl1bV9wb3J0ICpwb3J0LAogCiAJcmVzZXRfc3RhdGUoZGF0YSwgcG9ydCk7CiAKLQlvdXRw dXQgPSBwcmVwYXJlX291dHB1dChkYXRhLCBwb3J0KTsKKwlvdXRwdXQgPSBwcmVwYXJlX291dHB1 dChkYXRhLCBwb3J0LCB0cnVlKTsKIAljb25uZWN0b3IgPSBjaGFtZWxpdW1fcG9ydF9nZXRfY29u bmVjdG9yKGRhdGEtPmNoYW1lbGl1bSwgcG9ydCwgZmFsc2UpOwogCXByaW1hcnkgPSBpZ3Rfb3V0 cHV0X2dldF9wbGFuZV90eXBlKG91dHB1dCwgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSk7CiAJaWd0 X2Fzc2VydChwcmltYXJ5KTsKQEAgLTY3OSw3ICs2ODAsNyBAQCB0ZXN0X2Rpc3BsYXlfZnJhbWVf ZHVtcChkYXRhX3QgKmRhdGEsIHN0cnVjdCBjaGFtZWxpdW1fcG9ydCAqcG9ydCkKIAogCXJlc2V0 X3N0YXRlKGRhdGEsIHBvcnQpOwogCi0Jb3V0cHV0ID0gcHJlcGFyZV9vdXRwdXQoZGF0YSwgcG9y dCk7CisJb3V0cHV0ID0gcHJlcGFyZV9vdXRwdXQoZGF0YSwgcG9ydCwgdHJ1ZSk7CiAJY29ubmVj dG9yID0gY2hhbWVsaXVtX3BvcnRfZ2V0X2Nvbm5lY3RvcihkYXRhLT5jaGFtZWxpdW0sIHBvcnQs IGZhbHNlKTsKIAlwcmltYXJ5ID0gaWd0X291dHB1dF9nZXRfcGxhbmVfdHlwZShvdXRwdXQsIERS TV9QTEFORV9UWVBFX1BSSU1BUlkpOwogCWlndF9hc3NlcnQocHJpbWFyeSk7CkBAIC03MTAsNiAr NzExLDI2NiBAQCB0ZXN0X2Rpc3BsYXlfZnJhbWVfZHVtcChkYXRhX3QgKmRhdGEsIHN0cnVjdCBj aGFtZWxpdW1fcG9ydCAqcG9ydCkKIAlkcm1Nb2RlRnJlZUNvbm5lY3Rvcihjb25uZWN0b3IpOwog fQogCisKKy8qIFBsYXliYWNrIHBhcmFtZXRlcnMgY29udHJvbCB0aGUgYXVkaW8gc2lnbmFsIHdl IHN5bnRoZXNpemUgYW5kIHNlbmQgKi8KKyNkZWZpbmUgUExBWUJBQ0tfQ0hBTk5FTFMgMgorI2Rl ZmluZSBQTEFZQkFDS19TQU1QTEVTIDEwMjQKKworLyogQ2FwdHVyZSBwYXJlbWV0ZXJzIGNvbnRy b2wgdGhlIGF1ZGlvIHNpZ25hbCB3ZSByZWNlaXZlICovCisjZGVmaW5lIENBUFRVUkVfU0FNUExF UyAyMDQ4CisKKyNkZWZpbmUgQVVESU9fRFVSQVRJT04gMjAwMCAvKiBtcyAqLworLyogQSBzdHJl YWsgb2YgMyBnaXZlcyBjb25maWRlbmNlIHRoYXQgdGhlIHNpZ25hbCBpcyBnb29kLiAqLworI2Rl ZmluZSBNSU5fU1RSRUFLIDMKKworLyogVE9ETzogQ2hhbWVsaXVtIG9ubHkgc3VwcG9ydHMgNDhL SHogZm9yIG5vdyAqLworc3RhdGljIGludCBzYW1wbGluZ19yYXRlc1tdID0geworLyoJMzIwMDAs ICovCisvKgk0NDEwMCwgKi8KKwk0ODAwMCwKKy8qCTg4MjAwLCAqLworLyoJOTYwMDAsICovCisv KgkxNzY0MDAsICovCisvKgkxOTIwMDAsICovCit9OworCitzdGF0aWMgaW50IHNhbXBsaW5nX3Jh dGVzX2NvdW50ID0gc2l6ZW9mKHNhbXBsaW5nX3JhdGVzKSAvIHNpemVvZihpbnQpOworCitzdGF0 aWMgaW50IHRlc3RfZnJlcXVlbmNpZXNbXSA9IHsKKwkzMDAsCisJNjAwLAorCTEyMDAsCisJODAw MDAsCisJMTAwMDAsCit9OworCitzdGF0aWMgaW50IHRlc3RfZnJlcXVlbmNpZXNfY291bnQgPSBz aXplb2YodGVzdF9mcmVxdWVuY2llcykgLyBzaXplb2YoaW50KTsKKworc3RhdGljIGludAorb3V0 cHV0X2NhbGxiYWNrKHZvaWQgKmRhdGEsIHNob3J0ICpidWZmZXIsIGludCBmcmFtZXMpCit7CisJ c3RydWN0IGF1ZGlvX3NpZ25hbCAqc2lnbmFsID0gKHN0cnVjdCBhdWRpb19zaWduYWwgKikgZGF0 YTsKKworCWF1ZGlvX3NpZ25hbF9maWxsKHNpZ25hbCwgYnVmZmVyLCBmcmFtZXMpOworCisJcmV0 dXJuIDA7Cit9CisKK3N0YXRpYyBib29sCitkb190ZXN0X2Rpc3BsYXlfYXVkaW8oZGF0YV90ICpk YXRhLCBzdHJ1Y3QgY2hhbWVsaXVtX3BvcnQgKnBvcnQsCisJCSAgICAgIHN0cnVjdCBhbHNhICph bHNhLCBpbnQgcGxheWJhY2tfY2hhbm5lbHMsCisJCSAgICAgIGludCBwbGF5YmFja19yYXRlKQor eworCWludCByZXQsIGNhcHR1cmVfcmF0ZSwgY2FwdHVyZV9jaGFubmVscywgbXNlYzsKKwlzdHJ1 Y3QgY2hhbWVsaXVtX2F1ZGlvX2ZpbGUgKmF1ZGlvX2ZpbGU7CisJc3RydWN0IGNoYW1lbGl1bV9z dHJlYW0gKnN0cmVhbTsKKwllbnVtIGNoYW1lbGl1bV9zdHJlYW1fcmVhbHRpbWVfbW9kZSBzdHJl YW1fbW9kZTsKKwlzdHJ1Y3QgYXVkaW9fc2lnbmFsICpzaWduYWw7CisJaW50MzJfdCAqcmVjdiwg KmJ1ZjsKKwlkb3VibGUgKmNoYW5uZWw7CisJc2l6ZV90IGksIHN0cmVhaywgcGFnZV9jb3VudDsK KwlzaXplX3QgcmVjdl9sZW4sIGJ1Zl9sZW4sIGJ1Zl9jYXAsIGJ1Zl9zaXplLCBjaGFubmVsX2xl bjsKKwlib29sIG9rOworCWNoYXIgZHVtcF9zdWZmaXhbNjRdOworCWNoYXIgKmR1bXBfcGF0aCA9 IE5VTEw7CisJaW50IGR1bXBfZmQgPSAtMTsKKworCWlmICghYWxzYV90ZXN0X291dHB1dF9jb25m aWd1cmF0aW9uKGFsc2EsIHBsYXliYWNrX2NoYW5uZWxzLAorCQkJCQkgICAgcGxheWJhY2tfcmF0 ZSkpCisJCXJldHVybiBmYWxzZTsKKworCWlndF9kZWJ1ZygiVGVzdGluZyB3aXRoIHBsYXliYWNr IHNhbXBsaW5nIHJhdGUgJWRcbiIsIHBsYXliYWNrX3JhdGUpOworCWFsc2FfY29uZmlndXJlX291 dHB1dChhbHNhLCBwbGF5YmFja19jaGFubmVscywgcGxheWJhY2tfcmF0ZSk7CisKKwljaGFtZWxp dW1fc3RhcnRfY2FwdHVyaW5nX2F1ZGlvKGRhdGEtPmNoYW1lbGl1bSwgcG9ydCwgZmFsc2UpOwor CisJc3RyZWFtID0gY2hhbWVsaXVtX3N0cmVhbV9pbml0KCk7CisJaWd0X2Fzc2VydChzdHJlYW0p OworCisJc3RyZWFtX21vZGUgPSBDSEFNRUxJVU1fU1RSRUFNX1JFQUxUSU1FX1NUT1BfV0hFTl9P VkVSRkxPVzsKKwlvayA9IGNoYW1lbGl1bV9zdHJlYW1fZHVtcF9yZWFsdGltZV9hdWRpbyhzdHJl YW0sIHN0cmVhbV9tb2RlKTsKKwlpZ3RfYXNzZXJ0KG9rKTsKKworCWNoYW1lbGl1bV9zdHJlYW1f YXVkaW9fZm9ybWF0KHN0cmVhbSwgJmNhcHR1cmVfcmF0ZSwgJmNhcHR1cmVfY2hhbm5lbHMpOwor CisJaWYgKGlndF9mcmFtZV9kdW1wX2lzX2VuYWJsZWQoKSkgeworCQlzbnByaW50ZihkdW1wX3N1 ZmZpeCwgc2l6ZW9mKGR1bXBfc3VmZml4KSwgImNhcHR1cmUtJWRjaC0lZCIsCisJCQkgcGxheWJh Y2tfY2hhbm5lbHMsIHBsYXliYWNrX3JhdGUpOworCisJCWR1bXBfZmQgPSBhdWRpb19jcmVhdGVf d2F2X2ZpbGVfczMyX2xlKGR1bXBfc3VmZml4LAorCQkJCQkJICAgICAgIGNhcHR1cmVfcmF0ZSwK KwkJCQkJCSAgICAgICBjYXB0dXJlX2NoYW5uZWxzLAorCQkJCQkJICAgICAgICZkdW1wX3BhdGgp OworCQlpZ3RfYXNzZXJ0KGR1bXBfZmQgPj0gMCk7CisJfQorCisJc2lnbmFsID0gYXVkaW9fc2ln bmFsX2luaXQocGxheWJhY2tfY2hhbm5lbHMsIHBsYXliYWNrX3JhdGUpOworCWlndF9hc3NlcnQo c2lnbmFsKTsKKworCWZvciAoaSA9IDA7IGkgPCB0ZXN0X2ZyZXF1ZW5jaWVzX2NvdW50OyBpKysp CisJCWF1ZGlvX3NpZ25hbF9hZGRfZnJlcXVlbmN5KHNpZ25hbCwgdGVzdF9mcmVxdWVuY2llc1tp XSk7CisJYXVkaW9fc2lnbmFsX3N5bnRoZXNpemUoc2lnbmFsKTsKKworCWFsc2FfcmVnaXN0ZXJf b3V0cHV0X2NhbGxiYWNrKGFsc2EsIG91dHB1dF9jYWxsYmFjaywgc2lnbmFsLAorCQkJCSAgICAg IFBMQVlCQUNLX1NBTVBMRVMpOworCisJLyogVE9ETzogZGV0ZWN0IHNpZ25hbCBpbiByZWFsLXRp bWUgKi8KKwlyZXQgPSBhbHNhX3J1bihhbHNhLCBBVURJT19EVVJBVElPTik7CisJaWd0X2Fzc2Vy dChyZXQgPT0gMCk7CisKKwlhbHNhX2Nsb3NlX291dHB1dChhbHNhKTsKKworCS8qIE5lZWRzIHRv IGJlIGEgbXVsdGlwbGUgb2YgMTI4LCBiZWNhdXNlIHRoYXQncyB0aGUgbnVtYmVyIG9mIHNhbXBs ZXMKKwkgKiB3ZSBnZXQgcGVyIGNoYW5uZWwgZWFjaCB0aW1lIHdlIHJlY2VpdmUgYW4gYXVkaW8g cGFnZSBmcm9tIHRoZQorCSAqIENoYW1lbGl1bSBkZXZpY2UuICovCisJY2hhbm5lbF9sZW4gPSBD QVBUVVJFX1NBTVBMRVM7CisJY2hhbm5lbCA9IG1hbGxvYyhzaXplb2YoZG91YmxlKSAqIGNoYW5u ZWxfbGVuKTsKKworCWJ1Zl9jYXAgPSBjYXB0dXJlX2NoYW5uZWxzICogY2hhbm5lbF9sZW47CisJ YnVmID0gbWFsbG9jKHNpemVvZihpbnQzMl90KSAqIGJ1Zl9jYXApOworCWJ1Zl9sZW4gPSAwOwor CisJcmVjdiA9IE5VTEw7CisJcmVjdl9sZW4gPSAwOworCisJc3RyZWFrID0gMDsKKwltc2VjID0g MDsKKwlpID0gMDsKKwl3aGlsZSAoc3RyZWFrIDwgTUlOX1NUUkVBSyAmJiBtc2VjIDwgQVVESU9f RFVSQVRJT04pIHsKKwkJb2sgPSBjaGFtZWxpdW1fc3RyZWFtX3JlY2VpdmVfcmVhbHRpbWVfYXVk aW8oc3RyZWFtLAorCQkJCQkJCSAgICAgJnBhZ2VfY291bnQsCisJCQkJCQkJICAgICAmcmVjdiwg JnJlY3ZfbGVuKTsKKwkJaWd0X2Fzc2VydChvayk7CisKKwkJbWVtY3B5KCZidWZbYnVmX2xlbl0s IHJlY3YsIHJlY3ZfbGVuICogc2l6ZW9mKGludDMyX3QpKTsKKwkJYnVmX2xlbiArPSByZWN2X2xl bjsKKworCQlpZiAoYnVmX2xlbiA8IGJ1Zl9jYXApCisJCQljb250aW51ZTsKKwkJaWd0X2Fzc2Vy dChidWZfbGVuID09IGJ1Zl9jYXApOworCisJCWlmIChkdW1wX2ZkID49IDApIHsKKwkJCWJ1Zl9z aXplID0gYnVmX2xlbiAqIHNpemVvZihpbnQzMl90KTsKKwkJCWlndF9hc3NlcnQod3JpdGUoZHVt cF9mZCwgYnVmLCBidWZfc2l6ZSkgPT0gYnVmX3NpemUpOworCQl9CisKKwkJLyogVE9ETzogY2hl Y2sgb3RoZXIgY2hhbm5lbHMgdG9vLCBub3QganVzdCB0aGUgZmlyc3Qgb25lICovCisJCWF1ZGlv X2V4dHJhY3RfY2hhbm5lbF9zMzJfbGUoY2hhbm5lbCwgY2hhbm5lbF9sZW4sIGJ1ZiwgYnVmX2xl biwKKwkJCQkJICAgICBjYXB0dXJlX2NoYW5uZWxzLCAwKTsKKworCQltc2VjID0gaSAqIGNoYW5u ZWxfbGVuIC8gKGRvdWJsZSkgY2FwdHVyZV9yYXRlICogMTAwMDsKKwkJaWd0X2RlYnVnKCJEZXRl Y3RpbmcgYXVkaW8gc2lnbmFsLCB0PSVkIG1zZWNcbiIsIG1zZWMpOworCisJCWlmIChhdWRpb19z aWduYWxfZGV0ZWN0KHNpZ25hbCwgY2FwdHVyZV9yYXRlLCBjaGFubmVsLAorCQkJCQljaGFubmVs X2xlbikpCisJCQlzdHJlYWsrKzsKKwkJZWxzZQorCQkJc3RyZWFrID0gMDsKKworCQlidWZfbGVu ID0gMDsKKwkJaSsrOworCX0KKworCWlmIChkdW1wX2ZkID49IDApIHsKKwkJY2xvc2UoZHVtcF9m ZCk7CisJCWlmIChzdHJlYWsgPT0gTUlOX1NUUkVBSykgeworCQkJLyogVGVzdCBzdWNjZWVkZWQs IG5vIG5lZWQgdG8ga2VlcCB0aGUgY2FwdHVyZWQgZGF0YSAqLworCQkJdW5saW5rKGR1bXBfcGF0 aCk7CisJCX0gZWxzZQorCQkJaWd0X2RlYnVnKCJTYXZlZCBjYXB0dXJlZCBhdWRpbyBkYXRhIHRv ICVzXG4iLCBkdW1wX3BhdGgpOworCQlmcmVlKGR1bXBfcGF0aCk7CisJfQorCisJZnJlZShyZWN2 KTsKKwlmcmVlKGJ1Zik7CisJZnJlZShjaGFubmVsKTsKKworCW9rID0gY2hhbWVsaXVtX3N0cmVh bV9zdG9wX3JlYWx0aW1lX2F1ZGlvKHN0cmVhbSk7CisJaWd0X2Fzc2VydChvayk7CisKKwlhdWRp b19maWxlID0gY2hhbWVsaXVtX3N0b3BfY2FwdHVyaW5nX2F1ZGlvKGRhdGEtPmNoYW1lbGl1bSwK KwkJCQkJCSAgICBwb3J0KTsKKwlpZiAoYXVkaW9fZmlsZSkgeworCQlpZ3RfZGVidWcoIkF1ZGlv IGZpbGUgc2F2ZWQgb24gdGhlIENoYW1lbGl1bSBpbiAlc1xuIiwKKwkJCSAgYXVkaW9fZmlsZS0+ cGF0aCk7CisJCWNoYW1lbGl1bV9kZXN0cm95X2F1ZGlvX2ZpbGUoYXVkaW9fZmlsZSk7CisJfQor CisJYXVkaW9fc2lnbmFsX2NsZWFuKHNpZ25hbCk7CisJZnJlZShzaWduYWwpOworCisJY2hhbWVs aXVtX3N0cmVhbV9kZWluaXQoc3RyZWFtKTsKKworCWlndF9hc3NlcnQoc3RyZWFrID09IE1JTl9T VFJFQUspOworCXJldHVybiB0cnVlOworfQorCitzdGF0aWMgdm9pZAordGVzdF9kaXNwbGF5X2F1 ZGlvKGRhdGFfdCAqZGF0YSwgc3RydWN0IGNoYW1lbGl1bV9wb3J0ICpwb3J0LAorCQkgICBjb25z dCBjaGFyICphdWRpb19kZXZpY2UpCit7CisJYm9vbCBydW4gPSBmYWxzZTsKKwlzdHJ1Y3QgYWxz YSAqYWxzYTsKKwlpbnQgcmV0OworCWlndF9vdXRwdXRfdCAqb3V0cHV0OworCWlndF9wbGFuZV90 ICpwcmltYXJ5OworCXN0cnVjdCBpZ3RfZmIgZmI7CisJZHJtTW9kZU1vZGVJbmZvICptb2RlOwor CWRybU1vZGVDb25uZWN0b3IgKmNvbm5lY3RvcjsKKwlpbnQgZmJfaWQsIGk7CisKKwlpZ3RfcmVx dWlyZShhbHNhX2hhc19leGNsdXNpdmVfYWNjZXNzKCkpOworCisJYWxzYSA9IGFsc2FfaW5pdCgp OworCWlndF9hc3NlcnQoYWxzYSk7CisKKwlyZXNldF9zdGF0ZShkYXRhLCBwb3J0KTsKKworCS8q IFVzZSB0aGUgZGVmYXVsdCBDaGFtZWxpdW0gRURJRCBmb3IgdGhpcyB0ZXN0LCBhcyB0aGUgYmFz ZSBJR1QgRURJRAorCSAqIGRvZXNuJ3QgYWR2ZXJ0aXNlIGF1ZGlvIHN1cHBvcnQgKHNlZSBkcm1f ZGV0ZWN0X21vbml0b3JfYXVkaW8gaW4KKwkgKiB0aGUga2VybmVsIHRyZWUpLiAqLworCW91dHB1 dCA9IHByZXBhcmVfb3V0cHV0KGRhdGEsIHBvcnQsIGZhbHNlKTsKKwljb25uZWN0b3IgPSBjaGFt ZWxpdW1fcG9ydF9nZXRfY29ubmVjdG9yKGRhdGEtPmNoYW1lbGl1bSwgcG9ydCwgZmFsc2UpOwor CXByaW1hcnkgPSBpZ3Rfb3V0cHV0X2dldF9wbGFuZV90eXBlKG91dHB1dCwgRFJNX1BMQU5FX1RZ UEVfUFJJTUFSWSk7CisJaWd0X2Fzc2VydChwcmltYXJ5KTsKKworCWlndF9hc3NlcnQoY29ubmVj dG9yLT5jb3VudF9tb2RlcyA+IDApOworCW1vZGUgPSAmY29ubmVjdG9yLT5tb2Rlc1swXTsKKwor CWZiX2lkID0gaWd0X2NyZWF0ZV9jb2xvcl9wYXR0ZXJuX2ZiKGRhdGEtPmRybV9mZCwKKwkJCQkJ ICAgIG1vZGUtPmhkaXNwbGF5LCBtb2RlLT52ZGlzcGxheSwKKwkJCQkJICAgIERSTV9GT1JNQVRf WFJHQjg4ODgsCisJCQkJCSAgICBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLAorCQkJCQkgICAg MCwgMCwgMCwgJmZiKTsKKwlpZ3RfYXNzZXJ0KGZiX2lkID4gMCk7CisKKwkvKiBFbmFibGUgdGhl IG91dHB1dCBiZWNhdXNlIHRoZSByZWNlaXZlciB3b24ndCB0cnkgdG8gcmVjZWl2ZSBhdWRpbyBp ZgorCSAqIGl0IGRvZXNuJ3QgcmVjZWl2ZSB2aWRlby4gKi8KKwllbmFibGVfb3V0cHV0KGRhdGEs IHBvcnQsIG91dHB1dCwgbW9kZSwgJmZiKTsKKworCWZvciAoaSA9IDA7IGkgPCBzYW1wbGluZ19y YXRlc19jb3VudDsgaSsrKSB7CisJCXJldCA9IGFsc2Ffb3Blbl9vdXRwdXQoYWxzYSwgYXVkaW9f ZGV2aWNlKTsKKwkJaWd0X2Fzc2VydChyZXQgPj0gMCk7CisKKwkJLyogVE9ETzogcGxheWJhY2sg b24gYWxsIDggYXZhaWxhYmxlIGNoYW5uZWxzICovCisJCXJ1biB8PSBkb190ZXN0X2Rpc3BsYXlf YXVkaW8oZGF0YSwgcG9ydCwgYWxzYSwKKwkJCQkJICAgICBQTEFZQkFDS19DSEFOTkVMUywKKwkJ CQkJICAgICBzYW1wbGluZ19yYXRlc1tpXSk7CisKKwkJYWxzYV9jbG9zZV9vdXRwdXQoYWxzYSk7 CisJfQorCisJLyogTWFrZSBzdXJlIHdlIHRlc3RlZCBhdCBsZWFzdCBvbmUgZnJlcXVlbmN5LiAq LworCWlndF9hc3NlcnQocnVuKTsKKworCWlndF9yZW1vdmVfZmIoZGF0YS0+ZHJtX2ZkLCAmZmIp OworCisJZHJtTW9kZUZyZWVDb25uZWN0b3IoY29ubmVjdG9yKTsKKworCWZyZWUoYWxzYSk7Cit9 CisKKwogc3RhdGljIHZvaWQgc2VsZWN0X3RpbGVkX21vZGlmaWVyKGlndF9wbGFuZV90ICpwbGFu ZSwgdWludDMyX3Qgd2lkdGgsCiAJCQkJICB1aW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1h dCwKIAkJCQkgIHVpbnQ2NF90ICptb2RpZmllcikKQEAgLTEwMzcsNyArMTI5OCw3IEBAIHN0YXRp YyB2b2lkIHRlc3RfZGlzcGxheV9wbGFuZXNfcmFuZG9tKGRhdGFfdCAqZGF0YSwKIAlyZXNldF9z dGF0ZShkYXRhLCBwb3J0KTsKIAogCS8qIEZpbmQgdGhlIGNvbm5lY3RvciBhbmQgcGlwZS4gKi8K LQlvdXRwdXQgPSBwcmVwYXJlX291dHB1dChkYXRhLCBwb3J0KTsKKwlvdXRwdXQgPSBwcmVwYXJl X291dHB1dChkYXRhLCBwb3J0LCB0cnVlKTsKIAogCW1vZGUgPSBpZ3Rfb3V0cHV0X2dldF9tb2Rl KG91dHB1dCk7CiAKQEAgLTEzMDgsNiArMTU2OSw5IEBAIGlndF9tYWluCiAKIAkJY29ubmVjdG9y X3N1YnRlc3QoImRwLWZyYW1lLWR1bXAiLCBEaXNwbGF5UG9ydCkKIAkJCXRlc3RfZGlzcGxheV9m cmFtZV9kdW1wKCZkYXRhLCBwb3J0KTsKKworCQljb25uZWN0b3Jfc3VidGVzdCgiZHAtYXVkaW8i LCBEaXNwbGF5UG9ydCkKKwkJCXRlc3RfZGlzcGxheV9hdWRpbygmZGF0YSwgcG9ydCwgIkhETUki KTsKIAl9CiAKIAlpZ3Rfc3VidGVzdF9ncm91cCB7CmRpZmYgLS1naXQgYS90ZXN0cy9tZXNvbi5i dWlsZCBiL3Rlc3RzL21lc29uLmJ1aWxkCmluZGV4IDUxNjdhNmNjLi41ZDNlZWQ4MiAxMDA2NDQK LS0tIGEvdGVzdHMvbWVzb24uYnVpbGQKKysrIGIvdGVzdHMvbWVzb24uYnVpbGQKQEAgLTIzOCwy MCArMjM4LDEzIEBAIGlmIGxpYmRybV9ub3V2ZWF1LmZvdW5kKCkKIAl0ZXN0X2RlcHMgKz0gbGli ZHJtX25vdXZlYXUKIGVuZGlmCiAKLWlmIF9idWlsZF9jaGFtZWxpdW0gYW5kIGNoYW1lbGl1bS5m b3VuZCgpCitpZiBjaGFtZWxpdW1fZm91bmQKIAl0ZXN0X3Byb2dzICs9IFsKIAkJJ2ttc19jaGFt ZWxpdW0nLAogCV0KIAl0ZXN0X2RlcHMgKz0gY2hhbWVsaXVtCiBlbmRpZgogCi1pZiBfYnVpbGRf YXVkaW8gYW5kIGFsc2EuZm91bmQoKSBhbmQgZ3NsLmZvdW5kKCkKLQl0ZXN0X3Byb2dzICs9IFsK LQkJJ2F1ZGlvJywKLQldCi0JdGVzdF9kZXBzICs9IGFsc2EKLWVuZGlmCi0KIHRlc3RfZXhlY3V0 YWJsZXMgPSBbXQogdGVzdF9saXN0ID0gW10KIAotLSAKMi4yMS4wCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3Qt ZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=