From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id C86D789498 for ; Thu, 11 Apr 2019 10:03:53 +0000 (UTC) From: Simon Ser Date: Thu, 11 Apr 2019 13:03:49 +0300 Message-Id: <20190411100352.1722-2-simon.ser@intel.com> In-Reply-To: <20190411100352.1722-1-simon.ser@intel.com> References: <20190411100352.1722-1-simon.ser@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v3 1/4] 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 biBwb3J0Cm9uIHRoZSBEVVQpLgoKU2lnbmVkLW9mZi1ieTogU2ltb24gU2VyIDxzaW1vbi5zZXJA aW50ZWwuY29tPgotLS0KIGRvY3MvYXVkaW8udHh0ICAgICAgICAgICAgIHwgIDQ1IC0tLQogZG9j cy9jaGFtZWxpdW0udHh0ICAgICAgICAgfCAgMzIgKy0KIGxpYi9pZ3QuaCAgICAgICAgICAgICAg ICAgIHwgICAxICsKIGxpYi9pZ3RfYWxzYS5jICAgICAgICAgICAgIHwgIDQyICsrLQogbGliL2ln dF9hbHNhLmggICAgICAgICAgICAgfCAgIDEgKwogbGliL2lndF9hdWRpby5jICAgICAgICAgICAg fCAyODUgKysrKysrKysrKysrLS0tLS0tCiBsaWIvaWd0X2F1ZGlvLmggICAgICAgICAgICB8ICAx MiArLQogbGliL2lndF9hdXguYyAgICAgICAgICAgICAgfCAgMzEgKysKIGxpYi9pZ3RfYXV4Lmgg ICAgICAgICAgICAgIHwgICAxICsKIGxpYi9pZ3RfY2hhbWVsaXVtLmMgICAgICAgIHwgMTAxICsr KysrKysKIGxpYi9pZ3RfY2hhbWVsaXVtLmggICAgICAgIHwgIDExICsKIGxpYi9pZ3RfY2hhbWVs aXVtX3N0cmVhbS5jIHwgNTkyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK IGxpYi9pZ3RfY2hhbWVsaXVtX3N0cmVhbS5oIHwgIDUyICsrKysKIGxpYi9tZXNvbi5idWlsZCAg ICAgICAgICAgIHwgICA1ICstCiBtZXNvbi5idWlsZCAgICAgICAgICAgICAgICB8ICA1MiArKy0t CiBtZXNvbl9vcHRpb25zLnR4dCAgICAgICAgICB8ICAgNiAtCiB0ZXN0cy9hdWRpby5jICAgICAg ICAgICAgICB8IDE5MyAtLS0tLS0tLS0tLS0KIHRlc3RzL2ttc19jaGFtZWxpdW0uYyAgICAgIHwg Mjc2ICsrKysrKysrKysrKysrKystCiB0ZXN0cy9tZXNvbi5idWlsZCAgICAgICAgICB8ICAgOSAr LQogMTkgZmlsZXMgY2hhbmdlZCwgMTM1OCBpbnNlcnRpb25zKCspLCAzODkgZGVsZXRpb25zKC0p CiBkZWxldGUgbW9kZSAxMDA2NDQgZG9jcy9hdWRpby50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBs aWIvaWd0X2NoYW1lbGl1bV9zdHJlYW0uYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9pZ3RfY2hh bWVsaXVtX3N0cmVhbS5oCiBkZWxldGUgbW9kZSAxMDA2NDQgdGVzdHMvYXVkaW8uYwoKZGlmZiAt LWdpdCBhL2RvY3MvYXVkaW8udHh0IGIvZG9jcy9hdWRpby50eHQKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDE1OGFkNWQxLi4wMDAwMDAwMAotLS0gYS9kb2NzL2F1ZGlvLnR4dAorKysg L2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLUF1ZGlvIFN1cHBvcnQgaW4gSUdUCi09PT09PT09 PT09PT09PT09PT09PQotCi1UaGlzIGRvY3VtZW50IHByb3ZpZGVzIGluZm9ybWF0aW9uIGFuZCBp bnN0cnVjdGlvbnMgYWJvdXQgYXVkaW8gc3VwcG9ydCBpbiBJR1QuCi0KLUludHJvZHVjdGlvbgot LS0tLS0tLS0tLS0tCi0KLVRoZSBhdWRpbyB0ZXN0IGlzIGFpbWVkIGF0IHRlc3RpbmcgdGhlIGF1 ZGlvIGZlYXR1cmVzIG9mIGRpc3BsYXkgY29ubmVjdG9ycywKLXN1Y2ggYXMgSERNSS4KLQotVGVz dCBzZXR1cAotLS0tLS0tLS0tLQotCi1UaGUgc2V0dXAgcmVxdWlyZWQgZm9yIHRoZSBhdWRpbyB0 ZXN0IGNvbnNpc3RzIG9mIHVzaW5nIGFuIEhETUktVkdBIGFkYXB0ZXIgd2l0aAotYW4gYXVkaW8t b3V0IDMuNSBtbSBqYWNrIHRvIGV4dHJhY3QgdGhlIGF1ZGlvIGZyb20gdGhlIEhETUkgaW50ZXJm YWNlLgotVGhlIGF1ZGlvLW91dCBqYWNrIGlzIGNvbm5lY3RlZCBiYWNrIHRvIHRoZSBkZXZpY2Ut dW5kZXItdGVzdCdzIGxpbmUtaW4uCi0KLURlcGVuZGluZyBvbiB0aGUgYmVoYXZpb3Igb2YgdGhl IGFkYXB0ZXIsIGl0IG1heSBiZSBuZWNlc3NhcnkgdG8gY29ubmVjdCBhCi1naG9zdCBWR0EgZG9u Z2xlIHRvIGl0IChpbiBvcmRlciB0byBlbXVsYXRlIGEgY29ubmVjdGVkIGRpc3BsYXkpIHRvIGVu YWJsZSB0aGUKLWF1ZGlvIG91dHB1dC4gVGhlcmUgYXJlIGd1aWRlcyBhdmFpbGFibGUgZGV0YWls aW5nIGhvdyB0byBidWlsZCB0aGVzZS4KLQotV2hlbiBleGVjdXRlZCwgdGhlIHRlc3Qgd2lsbCBh dXRvbWF0aWNhbGx5IHNlbmQgdGhlIHRlc3QgYXVkaW8gc2lnbmFsIHRvIGFsbAotQUxTQSBhdWRp byBIRE1JIG91dHB1dHMgYW5kIHJlY29yZCBmcm9tIHRoZSBzdGFuZGFyZCBBTFNBIGNhcHR1cmUg ZGV2aWNlLgotCi1Db25maWd1cmF0aW9uCi0tLS0tLS0tLS0tLS0tCi0KLUluIG9yZGVyIHRvIGRl cGxveSB0aGUgdGVzdCwgQUxTQSBjb250cm9scyBoYXZlIHRvIGJlIGNvbmZpZ3VyZWQgdG8gc2V0 IHRoZQotQUxTQSBjYXB0dXJlIHNvdXJjZSB0byBsaW5lLWluLiBPbiBJbnRlbCB4ODYgc3lzdGVt cywgdGhpcyBjYW4gYmUgYWNoaWV2ZWQKLXdpdGggdGhlIGZvbGxvd2luZyBjYWxscyB0byB0aGUg YW1peGVyIHV0aWxpdHk6Ci0jIGFtaXhlciBzc2V0IExpbmUgMzEgb24KLSMgYW1peGVyIHNzZXQg IklucHV0IFNvdXJjZSIgTGluZQotCi1JdCBpcyB0aGVuIHVzZWZ1bCB0byBzdG9yZSB0aGUgQUxT QSBzdGF0ZSBwZXJtYW5lbnRseSB3aXRoIHRoZSBhbHNhY3RsIHV0aWxpdHk6Ci0jIGFsc2FjdGwg c3RvcmUKLQotVGhlc2Ugc2V0dGluZ3MgY2FuIGJlIHJlc3RvcmVkIHdpdGggdGhlIGFsc2FjdGwg dXRpbGl0eToKLSMgYWxzYWN0bCByZXN0b3JlCi0KLUl0IGlzIGRlc2lyYWJsZSB0byBlbnN1cmUg dGhhdCB0aGUgYWxzYS1yZXN0b3JlIGFuZCBhbHNhLXN0YXRlIHN5c3RlbWQgc2VydmljZXMKLWFy ZSBlbmFibGVkIHRvIGRvIHRoaXMgam9iIGF1dG9tYXRpY2FsbHksIGVzcGVjaWFsbHkgaW4gdGhl IGNhc2Ugb2YgYW4KLWF1dG9tYXRlZCB0ZXN0aW5nIHN5c3RlbToKLSMgc3lzdGVtY3RsIGVuYWJs ZSBhbHNhLXJlc3RvcmUKLSMgc3lzdGVtY3RsIGVuYWJsZSBhbHNhLXN0YXRlCmRpZmYgLS1naXQg YS9kb2NzL2NoYW1lbGl1bS50eHQgYi9kb2NzL2NoYW1lbGl1bS50eHQKaW5kZXggMGNhYmNkYzYu LjMxNmRkNjA3IDEwMDY0NAotLS0gYS9kb2NzL2NoYW1lbGl1bS50eHQKKysrIGIvZG9jcy9jaGFt ZWxpdW0udHh0CkBAIC0xMzksNiArMTM5LDIzIEBAICQgbWFrZSByZW1vdGUtaW5zdGFsbCBDSEFN RUxFT05fSE9TVD0xOTIuMTY4LjcyLjEKIAogVGhlIHByb2Nlc3MgcmVxdWlyZXMgdGhlIENoYW1l bGl1bSB0byBiZSBjb25uZWN0ZWQgdG8gdGhlIEludGVybmV0IHRvIHN1Y2NlZWQuCiAKK0F1ZGlv IENhcHR1cmUKKy0tLS0tLS0tLS0tLS0KKworVGhlIENoYW1lbGl1bSBzdXBwb3J0cyBhdWRpbyBj YXB0dXJlLiBJR1QgdGVzdHMgdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlCitDaGFtZWxpdW0gc3RyZWFt aW5nIHNlcnZlciB0byBkb3dubG9hZCBhdWRpbyBzYW1wbGVzIGZyb20gdGhlIENoYW1lbGl1bS4K KworSUdUIG5lZWRzIGRpcmVjdCBhY2Nlc3MgdG8gYXVkaW8gZGV2aWNlcyB0aHJvdWdoIEFMU0Es IHNvIFB1bHNlQXVkaW8gbmVlZHMgdG8KK2JlIHN0b3BwZWQgKG90aGVyd2lzZSBhdWRpbyB0ZXN0 cyB3aWxsIGF1dG9tYXRpY2FsbHkgZ2V0IHNraXBwZWQpLiBUbyBtYWtlIHN1cmUKK1B1bHNlQXVk aW8gaXNuJ3QgcnVubmluZzoKKworLSBFZGl0IC9ldGMvcHVsc2UvY2xpZW50LmNvbmYgYW5kIGFk ZCBhdXRvc3Bhd249bm8KKy0gUnVuIGBwdWxzZWF1ZGlvIC0ta2lsbGAgKGlmIGl0IHN1Y2NlZWRz LCBpdCBtZWFucyBQdWxzZUF1ZGlvIHdhcyBydW5uaW5nKQorLSBNYWtlIHN1cmUgYSBERSB0aGF0 IGF1dG9tYXRpY2FsbHkgc3Bhd25zIFB1bHNlQXVkaW8gaXNuJ3QgcnVubmluZworCitJbiBjYXNl IGEgdGVzdCBmYWlscywgdGhlIHJhdyBjYXB0dXJlZCBhdWRpbyBmaWxlcyB3aWxsIGJlIGR1bXBl ZCBpbiBhIFdBVgorZmlsZS4KKwogQ29udHJpYnV0aW5nIENoYW5nZXMgdG8gdGhlIERhZW1vbgog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0xNDYsMTAgKzE2MywxMSBA QCBDb250cmlidXRpb25zIHRvIHRoZSBDaGFtZWxpdW0gZGFlbW9uLCBqdXN0IGxpa2UgYW55IGNv bnRyaWJ1dGlvbiB0byBDaHJvbWl1bU9TLAogYXJlIHN1Ym1pdHRlZCBhbmQgcmV2aWV3ZWQgYXQ6 IGh0dHBzOi8vY2hyb21pdW0tcmV2aWV3Lmdvb2dsZXNvdXJjZS5jb20vCiAKIFRoZSBDaHJvbWl1 bU9TIHByb2plY3QgcHJvdmlkZXMgYW4gZXh0ZW5zaXZlIGRldmVsb3BlciBndWlkZToKLWh0dHBz Oi8vd3d3LmNocm9taXVtLm9yZy9jaHJvbWl1bS1vcy9kZXZlbG9wZXItZ3VpZGUgdGhhdCBhc3N1 bWVzIHJ1bm5pbmcgd2l0aGluCi10aGUgQ2hyb21pdW1PUyBidWlsZCBzeXN0ZW0uIFNpbmNlIHRo aXMgaXMgbGlrZWx5IG5vdCB0aGUgY2FzZSBmb3IgY29udHJpYnV0aW5nCi10byB0aGUgQ2hhbWVs aXVtIGRhZW1vbiwgb25seSB0aGUgcGFydCBhYm91dCB1cGxvYWRpbmcgY2hhbmdlcyBpcyByZWxl dmFudDoKLWh0dHBzOi8vd3d3LmNocm9taXVtLm9yZy9jaHJvbWl1bS1vcy9kZXZlbG9wZXItZ3Vp ZGUjVE9DLVVwbG9hZC15b3VyLWNoYW5nZXMtYW5kLWdldC1hLWNvZGUtcmV2aWV3CitodHRwczov L2Nocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW1vcy9kb2NzLysvbWFzdGVyL2RldmVs b3Blcl9ndWlkZS5tZAorSXQgdGhhdCBhc3N1bWVzIHJ1bm5pbmcgd2l0aGluIHRoZSBDaHJvbWl1 bU9TIGJ1aWxkIHN5c3RlbS4gU2luY2UgdGhpcyBpcworbGlrZWx5IG5vdCB0aGUgY2FzZSBmb3Ig Y29udHJpYnV0aW5nIHRvIHRoZSBDaGFtZWxpdW0gZGFlbW9uLCBvbmx5IHRoZSBwYXJ0CithYm91 dCB1cGxvYWRpbmcgY2hhbmdlcyBpcyByZWxldmFudDoKK2h0dHBzOi8vY2hyb21pdW0uZ29vZ2xl c291cmNlLmNvbS9jaHJvbWl1bW9zL2RvY3MvKy9tYXN0ZXIvZGV2ZWxvcGVyX2d1aWRlLm1kI1Vw bG9hZC15b3VyLWNoYW5nZXMtYW5kLWdldC1hLWNvZGUtcmV2aWV3CiAKIE1vc3Qgb2YgdGhlIHBy b2Nlc3MgaXMgYWJvdXQgdXNpbmcgdGhlIEdlcnJpdCB3ZWIgaW50ZXJmYWNlIGZvciBzdWJtaXR0 aW5nIGFuZAogaGF2aW5nIHRoZSBjaGFuZ2UgcmV2aWV3ZWQgYW5kIG5vdCBmb3JnZXR0aW5nIHRo ZSBDaGFuZ2UtSWQsIFRFU1Q9IGFuZCBCVUc9CkBAIC0xNjIsNyArMTgwLDcgQEAgU3VwcG9ydCBm b3IgdGhlIENoYW1lbGl1bSBwbGF0Zm9ybSBpbiBJR1QgaXMgZm91bmQgaW4gdGhlIGZvbGxvd2lu ZyBwbGFjZXM6CiAqIGxpYi9pZ3RfY2hhbWVsaXVtLmM6IGxpYnJhcnkgd2l0aCBDaGFtZWxpdW0t cmVsYXRlZCBoZWxwZXJzCiAqIHRlc3RzL2ttc19jaGFtZWxpdW0uYzogc3ViLXRlc3RzIHVzaW5n IHRoZSBDaGFtZWxpdW0KIAotQXMgb2YgbGF0ZSBBdWd1c3QgMjAxNywgdGhlIGZvbGxvd2luZyBm ZWF0dXJlcyBhcmUgdGVzdGVkIGJ5IElHVDoKK0FzIG9mIGVhcmx5IEFwcmlsIDIwMTksIHRoZSBm b2xsb3dpbmcgZmVhdHVyZXMgYXJlIHRlc3RlZCBieSBJR1Q6CiAqIFBpeGVsLWJ5LXBpeGVsIGZy YW1lIGludGVncml0eSB0ZXN0cyBmb3IgRFAgYW5kIEhETUkKICogRXJyb3ItdHJlbmQtYmFzZWQg ZnJhbWUgaW50ZWdyaXR5IHRlc3RzIGZvciBWR0EKICogQ1JDLWJhc2VkIGZyYW1lIGludGVncml0 eSB0ZXN0cyBmb3IgRFAgYW5kIEhETUkKQEAgLTE3Myw2ICsxOTEsNyBAQCBBcyBvZiBsYXRlIEF1 Z3VzdCAyMDE3LCB0aGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSB0ZXN0ZWQgYnkgSUdUOgogICBl YWNoIGludGVyZmFjZSBvciBjb21iaW5lZAogKiBFRElEIGRpc3BsYXkgaWRlbnRpZmllciBpbnRl Z3JpdHkgY2hlY2sgZm9yIGFsbCBpbnRlcmZhY2VzCiAqIEVESUQgZGlzcGxheSBpZGVudGlmaWVy IGNoYW5nZSBkdXJpbmcgc3VzcGVuZCBmb3IgYWxsIGludGVyZmFjZXMKKyogQXVkaW8gRm91cmll ci1iYXNlZCB0ZXN0cyBmb3IgRFAgYXQgNDhLSHoKIAogRnV0dXJlIERldmVsb3BtZW50cwogLS0t LS0tLS0tLS0tLS0tLS0tLQpAQCAtMTgwLDcgKzE5OSw4IEBAIEZ1dHVyZSBEZXZlbG9wbWVudHMK IFdpdGggdGhlIGN1cnJlbnQgZ2VuZXJhdGlvbiBvZiB0aGUgaGFyZHdhcmUgcGxhdGZvcm0sIHN1 cHBvcnQgZm9yIHRlc3RpbmcgYQogbnVtYmVyIG9mIGFkZGl0aW9uYWwgZGlzcGxheSBmZWF0dXJl cyBjb3VsZCBiZSBpbmNsdWRlZCBhcyBmdXR1cmUgZGV2ZWxvcG1lbnRzLAogaW5jbHVkaW5nOgot KiBBdWRpbyBjYXB0dXJlIGZyb20gSERNSSBhbmQgRFAKKyogQXVkaW8gY2FwdHVyZSBmcm9tIEhE TUksIHdpdGggbXVsdGlwbGUgY2hhbm5lbHMgYW5kIHdpdGggb3RoZXIgcGxheWJhY2sKKyAgc2Ft cGxpbmcgcmF0ZXMKICogSGlnaC1iYW5kd2lkdGggRGlnaXRhbCBDb250ZW50IFByb3RlY3Rpb24g KEhEQ1ApIHN0cmVhbWluZyB0byB0aGUgZGlzcGxheQogKiBSZW1vdGUgY29udHJvbCBmb3J3YXJk aW5nIChDRUMpIHNlbnQgZnJvbSB0aGUgZGlzcGxheQogKiBZVVYgY29sb3JzcGFjZSBmb3IgSERN SSwgaW5zdGVhZCBvZiBSR0IKZGlmZiAtLWdpdCBhL2xpYi9pZ3QuaCBiL2xpYi9pZ3QuaAppbmRl eCA2NjU0YTY1OS4uNTg1MmQ1NTcgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3QuaAorKysgYi9saWIvaWd0 LmgKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJpZ3Rfc3RhdHMuaCIKICNpZmRlZiBIQVZF X0NIQU1FTElVTQogI2luY2x1ZGUgImlndF9jaGFtZWxpdW0uaCIKKyNpbmNsdWRlICJpZ3RfY2hh bWVsaXVtX3N0cmVhbS5oIgogI2VuZGlmCiAjaW5jbHVkZSAiaW5zdGRvbmUuaCIKICNpbmNsdWRl ICJpbnRlbF9iYXRjaGJ1ZmZlci5oIgpkaWZmIC0tZ2l0IGEvbGliL2lndF9hbHNhLmMgYi9saWIv aWd0X2Fsc2EuYwppbmRleCBiYjY2ODJjYy4uNDU2YzBjODUgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3Rf YWxzYS5jCisrKyBiL2xpYi9pZ3RfYWxzYS5jCkBAIC0yNiw5ICsyNiwxMSBAQAogCiAjaW5jbHVk ZSAiY29uZmlnLmgiCiAKKyNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlIDxhbHNhL2Fzb3Vu ZGxpYi5oPgogCiAjaW5jbHVkZSAiaWd0X2Fsc2EuaCIKKyNpbmNsdWRlICJpZ3RfYXV4LmgiCiAj aW5jbHVkZSAiaWd0X2NvcmUuaCIKIAogI2RlZmluZSBIQU5ETEVTX01BWAk4CkBAIC02MSw2ICs2 MywyNSBAQCBzdHJ1Y3QgYWxzYSB7CiAJaW50IGlucHV0X3NhbXBsZXNfdHJpZ2dlcjsKIH07CiAK Ky8qKgorICogYWxzYV9oYXNfZXhjbHVzaXZlX2FjY2VzczoKKyAqIENoZWNrIHdoZXRoZXIgQUxT QSBoYXMgZXhjbHVzaXZlIGFjY2VzcyB0byBhdWRpbyBkZXZpY2VzLiBGYWlscyBpZgorICogUHVs c2VBdWRpbyBpcyBydW5uaW5nLgorICovCitib29sIGFsc2FfaGFzX2V4Y2x1c2l2ZV9hY2Nlc3Mo dm9pZCkKK3sKKwlpZiAoaWd0X2lzX3Byb2Nlc3NfcnVubmluZygicHVsc2VhdWRpbyIpKSB7CisJ CWlndF93YXJuKCJJdCBzZWVtcyB0aGF0IFB1bHNlQXVkaW8gaXMgcnVubmluZy4gQXVkaW8gdGVz dHMgIgorCQkJICJuZWVkIGRpcmVjdCBhY2Nlc3MgdG8gYXVkaW8gZGV2aWNlcywgc28gUHVsc2VB dWRpbyAiCisJCQkgIm5lZWRzIHRvIGJlIHN0b3BwZWQuIFlvdSBjYW4gZG8gc28gYnkgcnVubmlu ZyAiCisJCQkgImBwdWxzZWF1ZGlvIC0ta2lsbGAuIEFsc28gbWFrZSBzdXJlIHRvIGFkZCAiCisJ CQkgImF1dG9zcGF3bj1ubyB0byAvZXRjL3B1bHNlL2NsaWVudC5jb25mXG4iKTsKKwkJcmV0dXJu IGZhbHNlOworCX0KKworCXJldHVybiB0cnVlOworfQorCiBzdGF0aWMgdm9pZCBhbHNhX2Vycm9y X2hhbmRsZXIoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKmZ1bmN0aW9u LAogCQkJICAgICAgIGludCBlcnIsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQogewpAQCAtNzgsNiAr OTksMTEgQEAgc3RydWN0IGFsc2EgKmFsc2FfaW5pdCh2b2lkKQogewogCXN0cnVjdCBhbHNhICph bHNhOwogCisJaWYgKCFhbHNhX2hhc19leGNsdXNpdmVfYWNjZXNzKCkpIHsKKwkJaWd0X3dhcm4o ImFsc2EgZG9lc24ndCBoYXZlIGV4Y2x1c2l2ZSBhY2Nlc3MgdG8gYXVkaW8gZGV2aWNlc1xuIik7 CisJCXJldHVybiBOVUxMOworCX0KKwogCWFsc2EgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBhbHNh KSk7CiAJbWVtc2V0KGFsc2EsIDAsIHNpemVvZihzdHJ1Y3QgYWxzYSkpOwogCkBAIC01NTMsMTYg KzU3OSwyMCBAQCBpbnQgYWxzYV9ydW4oc3RydWN0IGFsc2EgKmFsc2EsIGludCBkdXJhdGlvbl9t cykKIAkJCQkJaWYgKHJldCA8IDApIHsKIAkJCQkJCXJldCA9IHNuZF9wY21fcmVjb3ZlcihoYW5k bGUsCiAJCQkJCQkJCSAgICAgIHJldCwgMCk7Ci0JCQkJCQlpZiAocmV0IDwgMCkKKwkJCQkJCWlm IChyZXQgPCAwKSB7CisJCQkJCQkJaWd0X2RlYnVnKCJzbmRfcGNtX3JlY292ZXIgYWZ0ZXIgc25k X3BjbV93cml0ZWkgZmFpbGVkIik7CiAJCQkJCQkJZ290byBjb21wbGV0ZTsKKwkJCQkJCX0KIAkJ CQkJfQogCiAJCQkJCW91dHB1dF9jb3VudHNbaV0gKz0gcmV0OwogCQkJCX0gZWxzZSBpZiAob3V0 cHV0X2NvdW50c1tpXSA8IG91dHB1dF90cmlnZ2VyICYmCiAJCQkJCSAgIHJldCA8IDApIHsKIAkJ CQkJcmV0ID0gc25kX3BjbV9yZWNvdmVyKGhhbmRsZSwgcmV0LCAwKTsKLQkJCQkJaWYgKHJldCA8 IDApCisJCQkJCWlmIChyZXQgPCAwKSB7CisJCQkJCQlpZ3RfZGVidWcoInNuZF9wY21fcmVjb3Zl ciBmYWlsZWQiKTsKIAkJCQkJCWdvdG8gY29tcGxldGU7CisJCQkJCX0KIAkJCQl9CiAJCQl9CiAK QEAgLTYwOSwxNiArNjM5LDIwIEBAIGludCBhbHNhX3J1bihzdHJ1Y3QgYWxzYSAqYWxzYSwgaW50 IGR1cmF0aW9uX21zKQogCQkJCQlyZXQgPSAwOwogCQkJCX0gZWxzZSBpZiAocmV0IDwgMCkgewog CQkJCQlyZXQgPSBzbmRfcGNtX3JlY292ZXIoaGFuZGxlLCByZXQsIDApOwotCQkJCQlpZiAocmV0 IDwgMCkKKwkJCQkJaWYgKHJldCA8IDApIHsKKwkJCQkJCWlndF9kZWJ1Zygic25kX3BjbV9yZWNv dmVyIGFmdGVyIHNuZF9wY21fcmVhZGkgZmFpbGVkIik7CiAJCQkJCQlnb3RvIGNvbXBsZXRlOwor CQkJCQl9CiAJCQkJfQogCiAJCQkJaW5wdXRfY291bnQgKz0gcmV0OwogCQkJCWlucHV0X3RvdGFs ICs9IHJldDsKIAkJCX0gZWxzZSBpZiAoaW5wdXRfY291bnQgPCBpbnB1dF90cmlnZ2VyICYmIHJl dCA8IDApIHsKIAkJCQlyZXQgPSBzbmRfcGNtX3JlY292ZXIoaGFuZGxlLCByZXQsIDApOwotCQkJ CWlmIChyZXQgPCAwKQorCQkJCWlmIChyZXQgPCAwKSB7CisJCQkJCWlndF9kZWJ1Zygic25kX3Bj bV9yZWNvdmVyIGZhaWxlZCIpOwogCQkJCQlnb3RvIGNvbXBsZXRlOworCQkJCX0KIAkJCX0KIAkJ fQogCX0gd2hpbGUgKCFyZWFjaGVkKTsKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfYWxzYS5oIGIvbGli L2lndF9hbHNhLmgKaW5kZXggNTA3OTUxMzAuLjVjODA0YjQ2IDEwMDY0NAotLS0gYS9saWIvaWd0 X2Fsc2EuaAorKysgYi9saWIvaWd0X2Fsc2EuaApAQCAtMzMsNiArMzMsNyBAQAogCiBzdHJ1Y3Qg YWxzYTsKIAorYm9vbCBhbHNhX2hhc19leGNsdXNpdmVfYWNjZXNzKHZvaWQpOwogc3RydWN0IGFs c2EgKmFsc2FfaW5pdCh2b2lkKTsKIGludCBhbHNhX29wZW5fb3V0cHV0KHN0cnVjdCBhbHNhICph bHNhLCBjb25zdCBjaGFyICpkZXZpY2VfbmFtZSk7CiBpbnQgYWxzYV9vcGVuX2lucHV0KHN0cnVj dCBhbHNhICphbHNhLCBjb25zdCBjaGFyICpkZXZpY2VfbmFtZSk7CmRpZmYgLS1naXQgYS9saWIv aWd0X2F1ZGlvLmMgYi9saWIvaWd0X2F1ZGlvLmMKaW5kZXggYTA1OTJkNTMuLjRjYzliZGYwIDEw MDY0NAotLS0gYS9saWIvaWd0X2F1ZGlvLmMKKysrIGIvbGliL2lndF9hdWRpby5jCkBAIC0yNiw4 ICsyNiwxMSBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpbmNsdWRlIDxtYXRoLmg+Cisj aW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPGdzbC9nc2xf ZmZ0X3JlYWwuaD4KKyNpbmNsdWRlIDxtYXRoLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CiAKICNp bmNsdWRlICJpZ3RfYXVkaW8uaCIKICNpbmNsdWRlICJpZ3RfY29yZS5oIgpAQCAtMTI4LDcgKzEz MSw3IEBAIGludCBhdWRpb19zaWduYWxfYWRkX2ZyZXF1ZW5jeShzdHJ1Y3QgYXVkaW9fc2lnbmFs ICpzaWduYWwsIGludCBmcmVxdWVuY3kpCiAgKi8KIHZvaWQgYXVkaW9fc2lnbmFsX3N5bnRoZXNp emUoc3RydWN0IGF1ZGlvX3NpZ25hbCAqc2lnbmFsKQogewotCXNob3J0ICpwZXJpb2Q7CisJaW50 MTZfdCAqcGVyaW9kOwogCWRvdWJsZSB2YWx1ZTsKIAlpbnQgZnJhbWVzOwogCWludCBmcmVxOwpA QCAtMTQ1LDkgKzE0OCw5IEBAIHZvaWQgYXVkaW9fc2lnbmFsX3N5bnRoZXNpemUoc3RydWN0IGF1 ZGlvX3NpZ25hbCAqc2lnbmFsKQogCiAJCWZvciAoaiA9IDA7IGogPCBmcmFtZXM7IGorKykgewog CQkJdmFsdWUgPSAyLjAgKiBNX1BJICogZnJlcSAvIHNpZ25hbC0+c2FtcGxpbmdfcmF0ZSAqIGo7 Ci0JCQl2YWx1ZSA9IHNpbih2YWx1ZSkgKiBTSFJUX01BWCAvIHNpZ25hbC0+ZnJlcXNfY291bnQ7 CisJCQl2YWx1ZSA9IHNpbih2YWx1ZSkgKiBJTlQxNl9NQVggLyBzaWduYWwtPmZyZXFzX2NvdW50 OwogCi0JCQlwZXJpb2Rbal0gPSAoc2hvcnQpIHZhbHVlOworCQkJcGVyaW9kW2pdID0gKGludDE2 X3QpIHZhbHVlOwogCQl9CiAKIAkJc2lnbmFsLT5mcmVxc1tpXS5wZXJpb2QgPSBwZXJpb2Q7CkBA IC0xODYsMTcgKzE4OSwxNiBAQCB2b2lkIGF1ZGlvX3NpZ25hbF9jbGVhbihzdHJ1Y3QgYXVkaW9f c2lnbmFsICpzaWduYWwpCiAgKiBzaWduYWwgZGF0YSAoaW4gaW50ZXJsZWF2ZWQgUzE2X0xFIGZv cm1hdCksIGF0IHRoZSByZXF1ZXN0ZWQgc2FtcGxpbmcgcmF0ZQogICogYW5kIG51bWJlciBvZiBj aGFubmVscy4KICAqLwotdm9pZCBhdWRpb19zaWduYWxfZmlsbChzdHJ1Y3QgYXVkaW9fc2lnbmFs ICpzaWduYWwsIHNob3J0ICpidWZmZXIsIGludCBmcmFtZXMpCit2b2lkIGF1ZGlvX3NpZ25hbF9m aWxsKHN0cnVjdCBhdWRpb19zaWduYWwgKnNpZ25hbCwgaW50MTZfdCAqYnVmZmVyLCBpbnQgZnJh bWVzKQogewotCXNob3J0ICpkZXN0aW5hdGlvbjsKLQlzaG9ydCAqc291cmNlOworCWludDE2X3Qg KmRlc3RpbmF0aW9uLCAqc291cmNlOwogCWludCB0b3RhbDsKIAlpbnQgZnJlcV9mcmFtZXM7CiAJ aW50IGZyZXFfb2Zmc2V0OwogCWludCBjb3VudDsKIAlpbnQgaSwgaiwgazsKIAotCW1lbXNldChi dWZmZXIsIDAsIHNpemVvZihzaG9ydCkgKiBzaWduYWwtPmNoYW5uZWxzICogZnJhbWVzKTsKKwlt ZW1zZXQoYnVmZmVyLCAwLCBzaXplb2YoaW50MTZfdCkgKiBzaWduYWwtPmNoYW5uZWxzICogZnJh bWVzKTsKIAogCWZvciAoaSA9IDA7IGkgPCBzaWduYWwtPmZyZXFzX2NvdW50OyBpKyspIHsKIAkJ dG90YWwgPSAwOwpAQCAtMjI5LDk3ICsyMzEsMjE0IEBAIHZvaWQgYXVkaW9fc2lnbmFsX2ZpbGwo c3RydWN0IGF1ZGlvX3NpZ25hbCAqc2lnbmFsLCBzaG9ydCAqYnVmZmVyLCBpbnQgZnJhbWVzKQog fQogCiAvKioKLSAqIGF1ZGlvX3NpZ25hbF9kZXRlY3Q6Ci0gKiBAc2lnbmFsOiBUaGUgdGFyZ2V0 IHNpZ25hbCBzdHJ1Y3R1cmUKLSAqIEBjaGFubmVsczogVGhlIGlucHV0IGRhdGEncyBudW1iZXIg b2YgY2hhbm5lbHMKLSAqIEBzYW1wbGluZ19yYXRlOiBUaGUgaW5wdXQgZGF0YSdzIHNhbXBsaW5n IHJhdGUKLSAqIEBidWZmZXI6IFRoZSBpbnB1dCBkYXRhJ3MgYnVmZmVyCi0gKiBAZnJhbWVzOiBU aGUgaW5wdXQgZGF0YSdzIG51bWJlciBvZiBmcmFtZXMKLSAqCi0gKiBEZXRlY3QgdGhhdCB0aGUg ZnJlcXVlbmNpZXMgc3BlY2lmaWVkIGluIEBzaWduYWwsIGFuZCBvbmx5IHRob3NlLCBhcmUKLSAq IHByZXNlbnQgaW4gdGhlIGlucHV0IGRhdGEuIFRoZSBpbnB1dCBkYXRhJ3MgZm9ybWF0IGlzIHJl cXVpcmVkIHRvIGJlIFMxNl9MRS4KKyAqIENoZWNrcyB0aGF0IGZyZXF1ZW5jaWVzIHNwZWNpZmll ZCBpbiBzaWduYWwsIGFuZCBvbmx5IHRob3NlLCBhcmUgaW5jbHVkZWQKKyAqIGluIHRoZSBpbnB1 dCBkYXRhLgogICoKLSAqIFJldHVybnM6IEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhl IGRldGVjdGlvbiB3YXMgc3VjY2Vzc2Z1bAorICogc2FtcGxpbmdfcmF0ZSBpcyBnaXZlbiBpbiBI ei4gZGF0YV9sZW4gaXMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBkYXRhLgogICovCi1ib29s IGF1ZGlvX3NpZ25hbF9kZXRlY3Qoc3RydWN0IGF1ZGlvX3NpZ25hbCAqc2lnbmFsLCBpbnQgY2hh bm5lbHMsCi0JCQkgaW50IHNhbXBsaW5nX3JhdGUsIHNob3J0ICpidWZmZXIsIGludCBmcmFtZXMp Citib29sIGF1ZGlvX3NpZ25hbF9kZXRlY3Qoc3RydWN0IGF1ZGlvX3NpZ25hbCAqc2lnbmFsLCBp bnQgc2FtcGxpbmdfcmF0ZSwKKwkJCSBkb3VibGUgKmRhdGEsIHNpemVfdCBkYXRhX2xlbikKIHsK LQlkb3VibGUgZGF0YVtmcmFtZXNdOwotCWludCBhbXBsaXR1ZGVbZnJhbWVzIC8gMl07CisJc2l6 ZV90IGFtcGxpdHVkZV9sZW4gPSBkYXRhX2xlbiAvIDIgKyAxOworCWRvdWJsZSBhbXBsaXR1ZGVb YW1wbGl0dWRlX2xlbl07CiAJYm9vbCBkZXRlY3RlZFtzaWduYWwtPmZyZXFzX2NvdW50XTsKLQlp bnQgdGhyZXNob2xkOwotCWJvb2wgYWJvdmU7Ci0JaW50IGVycm9yOwotCWludCBmcmVxID0gMDsK LQlpbnQgbWF4OwotCWludCBjLCBpLCBqOwotCi0JLyogQWxsb3dlZCBlcnJvciBpbiBIeiBkdWUg dG8gRkZUIHN0ZXAuICovCi0JZXJyb3IgPSBzYW1wbGluZ19yYXRlIC8gZnJhbWVzOworCWludCBy ZXQsIGVwc2lsb24sIGZyZXEsIG1heF9mcmVxOworCWRvdWJsZSBtYXgsIHRocmVzaG9sZDsKKwlz aXplX3QgaSwgajsKKwlib29sIGFib3ZlLCBzdWNjZXNzOworCisJLyogQWxsb3dlZCBlcnJvciBp biBIeiBkdWUgdG8gRkZUIHN0ZXAgKi8KKwllcHNpbG9uID0gc2FtcGxpbmdfcmF0ZSAvIGRhdGFf bGVuOworCWlndF9kZWJ1ZygiYWxsb3dlZCBmcmVxLiBlcnJvcjogJWQgSHpcbiIsIGVwc2lsb24p OworCisJcmV0ID0gZ3NsX2ZmdF9yZWFsX3JhZGl4Ml90cmFuc2Zvcm0oZGF0YSwgMSwgZGF0YV9s ZW4pOworCWlndF9hc3NlcnQocmV0ID09IDApOworCisJLyogRm9yIGkgPCBkYXRhX2xlbiAvIDIs IHRoZSByZWFsIHBhcnQgb2YgdGhlIGktdGggdGVybSBpcyBzdG9yZWQgYXQKKwkgKiBkYXRhW2ld IGFuZCBpdHMgaW1hZ2luYXJ5IHBhcnQgaXMgc3RvcmVkIGF0IGRhdGFbZGF0YV9sZW4gLSBpXS4K KwkgKiBpID0gMCBhbmQgaSA9IGRhdGFfbGVuIC8gMiBhcmUgc3BlY2lhbCBjYXNlcywgdGhleSBh cmUgcHVyZWx5IHJlYWwKKwkgKiBzbyB0aGVpciBpbWFnaW5hcnkgcGFydCBpc24ndCBzdG9yZWQu CisJICoKKwkgKiBUaGUgYW1wbGl0dWRlIGlzIGVuY29kZWQgYXMgdGhlIG1hZ25pdHVkZSBvZiB0 aGUgY29tcGxleCBudW1iZXIgYW5kCisJICogdGhlIHBoYXNlIGlzIGVuY29kZWQgYXMgaXRzIGFu Z2xlLgorCSAqLworCW1heCA9IDA7CisJYW1wbGl0dWRlWzBdID0gZGF0YVswXTsKKwlmb3IgKGkg PSAxOyBpIDwgYW1wbGl0dWRlX2xlbiAtIDE7IGkrKykgeworCQlhbXBsaXR1ZGVbaV0gPSBoeXBv dChkYXRhW2ldLCBkYXRhW2RhdGFfbGVuIC0gaV0pOworCQlpZiAoYW1wbGl0dWRlW2ldID4gbWF4 KQorCQkJbWF4ID0gYW1wbGl0dWRlW2ldOworCX0KKwlhbXBsaXR1ZGVbYW1wbGl0dWRlX2xlbiAt IDFdID0gZGF0YVtkYXRhX2xlbiAvIDJdOwogCi0JZm9yIChjID0gMDsgYyA8IGNoYW5uZWxzOyBj KyspIHsKLQkJZm9yIChpID0gMDsgaSA8IGZyYW1lczsgaSsrKQotCQkJZGF0YVtpXSA9IChkb3Vi bGUpIGJ1ZmZlcltpICogY2hhbm5lbHMgKyBjXTsKKwlmb3IgKGkgPSAwOyBpIDwgc2lnbmFsLT5m cmVxc19jb3VudDsgaSsrKQorCQlkZXRlY3RlZFtpXSA9IGZhbHNlOwogCi0JCWdzbF9mZnRfcmVh bF9yYWRpeDJfdHJhbnNmb3JtKGRhdGEsIDEsIGZyYW1lcyk7CisJLyogV2Ugd2FudCB0byBkZXRl Y3QgcGVha3MgYWJvdmUgYSBnaXZlbiB0aHJlc2hvbGQuICovCisJdGhyZXNob2xkID0gbWF4IC8g MjsKKwlzdWNjZXNzID0gdHJ1ZTsKKwlhYm92ZSA9IGZhbHNlOworCW1heCA9IDA7CisJbWF4X2Zy ZXEgPSAtMTsKKwlmb3IgKGkgPSAwOyBpIDwgYW1wbGl0dWRlX2xlbjsgaSsrKSB7CisJCWZyZXEg PSBzYW1wbGluZ19yYXRlICogaSAvIGRhdGFfbGVuOwogCi0JCW1heCA9IDA7CisJCWlmIChhbXBs aXR1ZGVbaV0gPiB0aHJlc2hvbGQpCisJCQlhYm92ZSA9IHRydWU7CiAKLQkJZm9yIChpID0gMDsg aSA8IGZyYW1lcyAvIDI7IGkrKykgewotCQkJYW1wbGl0dWRlW2ldID0gaHlwb3QoZGF0YVtpXSwg ZGF0YVtmcmFtZXMgLSBpXSk7Ci0JCQlpZiAoYW1wbGl0dWRlW2ldID4gbWF4KQotCQkJCW1heCA9 IGFtcGxpdHVkZVtpXTsKKwkJaWYgKCFhYm92ZSkgeworCQkJY29udGludWU7CiAJCX0KIAotCQlm b3IgKGkgPSAwOyBpIDwgc2lnbmFsLT5mcmVxc19jb3VudDsgaSsrKQotCQkJZGV0ZWN0ZWRbaV0g PSBmYWxzZTsKLQotCQl0aHJlc2hvbGQgPSBtYXggLyAyOwotCQlhYm92ZSA9IGZhbHNlOwotCQlt YXggPSAwOwotCi0JCWZvciAoaSA9IDA7IGkgPCBmcmFtZXMgLyAyOyBpKyspIHsKLQkJCWlmIChh bXBsaXR1ZGVbaV0gPiB0aHJlc2hvbGQpCi0JCQkJYWJvdmUgPSB0cnVlOwotCi0JCQlpZiAoYWJv dmUpIHsKLQkJCQlpZiAoYW1wbGl0dWRlW2ldIDwgdGhyZXNob2xkKSB7Ci0JCQkJCWFib3ZlID0g ZmFsc2U7Ci0JCQkJCW1heCA9IDA7Ci0KLQkJCQkJZm9yIChqID0gMDsgaiA8IHNpZ25hbC0+ZnJl cXNfY291bnQ7IGorKykgewotCQkJCQkJaWYgKHNpZ25hbC0+ZnJlcXNbal0uZnJlcSA+Ci0JCQkJ CQkgICAgZnJlcSAtIGVycm9yICYmCi0JCQkJCQkgICAgc2lnbmFsLT5mcmVxc1tqXS5mcmVxIDwK LQkJCQkJCSAgICBmcmVxICsgZXJyb3IpIHsKLQkJCQkJCQlkZXRlY3RlZFtqXSA9IHRydWU7Ci0J CQkJCQkJYnJlYWs7Ci0JCQkJCQl9Ci0JCQkJCX0KLQotCQkJCQkvKiBEZXRlY3RlZCBmcmVxdWVu Y3kgd2FzIG5vdCBnZW5lcmF0ZWQuICovCi0JCQkJCWlmIChqID09IHNpZ25hbC0+ZnJlcXNfY291 bnQpIHsKLQkJCQkJCWlndF9kZWJ1ZygiRGV0ZWN0ZWQgYWRkaXRpb25hbCBmcmVxdWVuY3k6ICVk XG4iLAotCQkJCQkJCSAgZnJlcSk7Ci0JCQkJCQlyZXR1cm4gZmFsc2U7Ci0JCQkJCX0KKwkJLyog SWYgd2Ugd2VyZSBhYm92ZSB0aGUgdGhyZXNob2xkIGFuZCB3ZSdyZSBub3QgYW55bW9yZSwgaXQn cworCQkgKiB0aW1lIHRvIGRlY2lkZSB3aGV0aGVyIHRoZSBwZWFrIGZyZXF1ZW5jeSBpcyBjb3Jy ZWN0IG9yCisJCSAqIGludmFsaWQuICovCisJCWlmIChhbXBsaXR1ZGVbaV0gPCB0aHJlc2hvbGQp IHsKKwkJCWZvciAoaiA9IDA7IGogPCBzaWduYWwtPmZyZXFzX2NvdW50OyBqKyspIHsKKwkJCQlp ZiAoc2lnbmFsLT5mcmVxc1tqXS5mcmVxID4KKwkJCQkgICAgbWF4X2ZyZXEgLSBlcHNpbG9uICYm CisJCQkJICAgIHNpZ25hbC0+ZnJlcXNbal0uZnJlcSA8CisJCQkJICAgIG1heF9mcmVxICsgZXBz aWxvbikgeworCQkJCQlkZXRlY3RlZFtqXSA9IHRydWU7CisJCQkJCWlndF9kZWJ1ZygiRnJlcXVl bmN5ICVkIGRldGVjdGVkXG4iLAorCQkJCQkJICBtYXhfZnJlcSk7CisJCQkJCWJyZWFrOwogCQkJ CX0KKwkJCX0KIAotCQkJCWlmIChhbXBsaXR1ZGVbaV0gPiBtYXgpIHsKLQkJCQkJbWF4ID0gYW1w bGl0dWRlW2ldOwotCQkJCQlmcmVxID0gc2FtcGxpbmdfcmF0ZSAqIGkgLyBmcmFtZXM7Ci0JCQkJ fQorCQkJLyogV2UgaGF2ZW4ndCBnZW5lcmF0ZWQgdGhpcyBmcmVxdWVuY3ksIGJ1dCB3ZSBkZXRl Y3RlZAorCQkJICogaXQuICovCisJCQlpZiAoaiA9PSBzaWduYWwtPmZyZXFzX2NvdW50KSB7CisJ CQkJaWd0X2RlYnVnKCJEZXRlY3RlZCBhZGRpdGlvbmFsIGZyZXF1ZW5jeTogJWRcbiIsCisJCQkJ CSAgbWF4X2ZyZXEpOworCQkJCXN1Y2Nlc3MgPSBmYWxzZTsKIAkJCX0KKworCQkJYWJvdmUgPSBm YWxzZTsKKwkJCW1heCA9IDA7CisJCQltYXhfZnJlcSA9IC0xOwogCQl9CiAKLQkJZm9yIChpID0g MDsgaSA8IHNpZ25hbC0+ZnJlcXNfY291bnQ7IGkrKykgewotCQkJaWYgKCFkZXRlY3RlZFtpXSkg ewotCQkJCWlndF9kZWJ1ZygiTWlzc2luZyBmcmVxdWVuY3k6ICVkXG4iLAotCQkJCQkgIHNpZ25h bC0+ZnJlcXNbaV0uZnJlcSk7Ci0JCQkJcmV0dXJuIGZhbHNlOwotCQkJfQorCQlpZiAoYW1wbGl0 dWRlW2ldID4gbWF4KSB7CisJCQltYXggPSBhbXBsaXR1ZGVbaV07CisJCQltYXhfZnJlcSA9IGZy ZXE7CisJCX0KKwl9CisKKwkvKiBDaGVjayB0aGF0IGFsbCBmcmVxdWVuY2llcyB3ZSBnZW5lcmF0 ZWQgaGF2ZSBiZWVuIGRldGVjdGVkLiAqLworCWZvciAoaSA9IDA7IGkgPCBzaWduYWwtPmZyZXFz X2NvdW50OyBpKyspIHsKKwkJaWYgKCFkZXRlY3RlZFtpXSkgeworCQkJaWd0X2RlYnVnKCJNaXNz aW5nIGZyZXF1ZW5jeTogJWRcbiIsCisJCQkJICBzaWduYWwtPmZyZXFzW2ldLmZyZXEpOworCQkJ c3VjY2VzcyA9IGZhbHNlOwogCQl9CiAJfQogCi0JcmV0dXJuIHRydWU7CisJcmV0dXJuIHN1Y2Nl c3M7Cit9CisKKy8qKgorICogRXh0cmFjdHMgYSBzaW5nbGUgY2hhbm5lbCBmcm9tIGEgbXVsdGkt Y2hhbm5lbCBTMzJfTEUgaW5wdXQgYnVmZmVyLgorICovCitzaXplX3QgYXVkaW9fZXh0cmFjdF9j aGFubmVsX3MzMl9sZShkb3VibGUgKmRzdCwgc2l6ZV90IGRzdF9jYXAsCisJCQkJICAgIGludDMy X3QgKnNyYywgc2l6ZV90IHNyY19sZW4sCisJCQkJICAgIGludCBuX2NoYW5uZWxzLCBpbnQgY2hh bm5lbCkKK3sKKwlzaXplX3QgZHN0X2xlbiwgaTsKKworCWlndF9hc3NlcnQoY2hhbm5lbCA8IG5f Y2hhbm5lbHMpOworCWlndF9hc3NlcnQoc3JjX2xlbiAlIG5fY2hhbm5lbHMgPT0gMCk7CisJZHN0 X2xlbiA9IHNyY19sZW4gLyBuX2NoYW5uZWxzOworCWlndF9hc3NlcnQoZHN0X2xlbiA8PSBkc3Rf Y2FwKTsKKwlmb3IgKGkgPSAwOyBpIDwgZHN0X2xlbjsgaSsrKQorCQlkc3RbaV0gPSAoZG91Ymxl KSBzcmNbaSAqIG5fY2hhbm5lbHMgKyBjaGFubmVsXTsKKworCXJldHVybiBkc3RfbGVuOworfQor CisjZGVmaW5lIFJJRkZfVEFHICJSSUZGIgorI2RlZmluZSBXQVZFX1RBRyAiV0FWRSIKKyNkZWZp bmUgRk1UX1RBRyAiZm10ICIKKyNkZWZpbmUgREFUQV9UQUcgImRhdGEiCisKK3N0YXRpYyB2b2lk CithcHBlbmRfdG9fYnVmZmVyKGNoYXIgKmRzdCwgc2l6ZV90ICppLCBjb25zdCB2b2lkICpzcmMs IHNpemVfdCBzcmNfc2l6ZSkKK3sKKwltZW1jcHkoJmRzdFsqaV0sIHNyYywgc3JjX3NpemUpOwor CSppICs9IHNyY19zaXplOworfQorCisvKioKKyAqIENyZWF0ZXMgYSBuZXcgV0FWIGZpbGUuIHNh bXBsZV9yYXRlIGlzIGluIEh6LiBJZiBwYXRoIGlzIG5vdCBOVUxMLCBpdCB3aWxsCisgKiBiZSBz ZXQgdG8gdGhlIG5ldyBmaWxlIHBhdGggKHRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGZy ZWUtaW5nIGl0KS4KKyAqCisgKiBBZnRlciBjYWxsaW5nIHRoaXMgZnVuY3Rpb24sIHRoZSBjYWxs ZXIgaXMgZXhwZWN0ZWQgdG8gd3JpdGUgUzMyX0xFIFBDTSBkYXRhCisgKiB0byB0aGUgcmV0dXJu ZWQgZmlsZSBkZXNjcmlwdG9yLgorICoKKyAqIFNlZSBodHRwOi8vd3d3LW1tc3AuZWNlLm1jZ2ls bC5jYS9Eb2N1bWVudHMvQXVkaW9Gb3JtYXRzL1dBVkUvV0FWRS5odG1sIGZvcgorICogYSBXQVYg ZmlsZSBmb3JtYXQgc3BlY2lmaWNhdGlvbi4KKyAqLworaW50IGF1ZGlvX2NyZWF0ZV93YXZfZmls ZV9zMzJfbGUoY29uc3QgY2hhciAqcXVhbGlmaWVyLCB1aW50MzJfdCBzYW1wbGVfcmF0ZSwKKwkJ CQkgdWludDE2X3QgY2hhbm5lbHMsIGNoYXIgKipwYXRoKQoreworCWNoYXIgX3BhdGhbUEFUSF9N QVhdOworCWNvbnN0IGNoYXIgKnRlc3RfbmFtZSwgKnN1YnRlc3RfbmFtZTsKKwlpbnQgZmQ7CisJ Y2hhciBoZWFkZXJbNDRdOworCXNpemVfdCBpID0gMDsKKwl1aW50MzJfdCBmaWxlX3NpemUsIGNo dW5rX3NpemUsIGJ5dGVfcmF0ZTsKKwl1aW50MTZfdCBmb3JtYXQsIGJsb2NrX2FsaWduLCBiaXRz X3Blcl9zYW1wbGU7CisKKwl0ZXN0X25hbWUgPSBpZ3RfdGVzdF9uYW1lKCk7CisJc3VidGVzdF9u YW1lID0gaWd0X3N1YnRlc3RfbmFtZSgpOworCisJaWd0X2Fzc2VydChpZ3RfZnJhbWVfZHVtcF9w YXRoKTsKKwlzbnByaW50ZihfcGF0aCwgc2l6ZW9mKF9wYXRoKSwgIiVzL2F1ZGlvLSVzLSVzLSVz LndhdiIsCisJCSBpZ3RfZnJhbWVfZHVtcF9wYXRoLCB0ZXN0X25hbWUsIHN1YnRlc3RfbmFtZSwg cXVhbGlmaWVyKTsKKworCWlmIChwYXRoKQorCQkqcGF0aCA9IHN0cmR1cChfcGF0aCk7CisKKwlp Z3RfZGVidWcoIkR1bXBpbmcgJXMgYXVkaW8gdG8gJXNcbiIsIHF1YWxpZmllciwgX3BhdGgpOwor CWZkID0gb3BlbihfcGF0aCwgT19XUk9OTFkgfCBPX0NSRUFUIHwgT19UUlVOQyk7CisJaWYgKGZk IDwgMCkgeworCQlpZ3Rfd2Fybigib3BlbiBmYWlsZWQ6ICVzXG4iLCBzdHJlcnJvcihlcnJubykp OworCQlyZXR1cm4gLTE7CisJfQorCisJLyogRmlsZSBoZWFkZXIgKi8KKwlmaWxlX3NpemUgPSBV SU5UMzJfTUFYOyAvKiB1bmtub3duIGZpbGUgc2l6ZSAqLworCWFwcGVuZF90b19idWZmZXIoaGVh ZGVyLCAmaSwgUklGRl9UQUcsIHN0cmxlbihSSUZGX1RBRykpOworCWFwcGVuZF90b19idWZmZXIo aGVhZGVyLCAmaSwgJmZpbGVfc2l6ZSwgc2l6ZW9mKGZpbGVfc2l6ZSkpOworCWFwcGVuZF90b19i dWZmZXIoaGVhZGVyLCAmaSwgV0FWRV9UQUcsIHN0cmxlbihXQVZFX1RBRykpOworCisJLyogRm9y bWF0IGNodW5rICovCisJY2h1bmtfc2l6ZSA9IDE2OworCWZvcm1hdCA9IDE7IC8qIFBDTSAqLwor CWJpdHNfcGVyX3NhbXBsZSA9IDMyOyAvKiBTMzJfTEUgKi8KKwlieXRlX3JhdGUgPSBzYW1wbGVf cmF0ZSAqIGNoYW5uZWxzICogYml0c19wZXJfc2FtcGxlIC8gODsKKwlibG9ja19hbGlnbiA9IGNo YW5uZWxzICogYml0c19wZXJfc2FtcGxlIC8gODsKKwlhcHBlbmRfdG9fYnVmZmVyKGhlYWRlciwg JmksIEZNVF9UQUcsIHN0cmxlbihGTVRfVEFHKSk7CisJYXBwZW5kX3RvX2J1ZmZlcihoZWFkZXIs ICZpLCAmY2h1bmtfc2l6ZSwgc2l6ZW9mKGNodW5rX3NpemUpKTsKKwlhcHBlbmRfdG9fYnVmZmVy KGhlYWRlciwgJmksICZmb3JtYXQsIHNpemVvZihmb3JtYXQpKTsKKwlhcHBlbmRfdG9fYnVmZmVy KGhlYWRlciwgJmksICZjaGFubmVscywgc2l6ZW9mKGNoYW5uZWxzKSk7CisJYXBwZW5kX3RvX2J1 ZmZlcihoZWFkZXIsICZpLCAmc2FtcGxlX3JhdGUsIHNpemVvZihzYW1wbGVfcmF0ZSkpOworCWFw cGVuZF90b19idWZmZXIoaGVhZGVyLCAmaSwgJmJ5dGVfcmF0ZSwgc2l6ZW9mKGJ5dGVfcmF0ZSkp OworCWFwcGVuZF90b19idWZmZXIoaGVhZGVyLCAmaSwgJmJsb2NrX2FsaWduLCBzaXplb2YoYmxv Y2tfYWxpZ24pKTsKKwlhcHBlbmRfdG9fYnVmZmVyKGhlYWRlciwgJmksICZiaXRzX3Blcl9zYW1w bGUsIHNpemVvZihiaXRzX3Blcl9zYW1wbGUpKTsKKworCS8qIERhdGEgY2h1bmsgKi8KKwljaHVu a19zaXplID0gVUlOVDMyX01BWDsgLyogdW5rbm93biBjaHVuayBzaXplICovCisJYXBwZW5kX3Rv X2J1ZmZlcihoZWFkZXIsICZpLCBEQVRBX1RBRywgc3RybGVuKERBVEFfVEFHKSk7CisJYXBwZW5k X3RvX2J1ZmZlcihoZWFkZXIsICZpLCAmY2h1bmtfc2l6ZSwgc2l6ZW9mKGNodW5rX3NpemUpKTsK KworCWlndF9hc3NlcnQoaSA9PSBzaXplb2YoaGVhZGVyKSk7CisKKwlpZiAod3JpdGUoZmQsIGhl YWRlciwgc2l6ZW9mKGhlYWRlcikpICE9IHNpemVvZihoZWFkZXIpKSB7CisJCWlndF93YXJuKCJ3 cml0ZSBmYWlsZWQ6ICVzJ24iLCBzdHJlcnJvcihlcnJubykpOworCQljbG9zZShmZCk7CisJCXJl dHVybiAtMTsKKwl9CisKKwlyZXR1cm4gZmQ7CiB9CmRpZmYgLS1naXQgYS9saWIvaWd0X2F1ZGlv LmggYi9saWIvaWd0X2F1ZGlvLmgKaW5kZXggYjNiNjU4YTQuLjRhYTQzZTY5IDEwMDY0NAotLS0g YS9saWIvaWd0X2F1ZGlvLmgKKysrIGIvbGliL2lndF9hdWRpby5oCkBAIC0zMCw2ICszMCw3IEBA CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlIDxzdGRib29sLmg+CisjaW5jbHVkZSA8 c3RkaW50Lmg+CiAKIHN0cnVjdCBhdWRpb19zaWduYWw7CiAKQEAgLTM3LDggKzM4LDEzIEBAIHN0 cnVjdCBhdWRpb19zaWduYWwgKmF1ZGlvX3NpZ25hbF9pbml0KGludCBjaGFubmVscywgaW50IHNh bXBsaW5nX3JhdGUpOwogaW50IGF1ZGlvX3NpZ25hbF9hZGRfZnJlcXVlbmN5KHN0cnVjdCBhdWRp b19zaWduYWwgKnNpZ25hbCwgaW50IGZyZXF1ZW5jeSk7CiB2b2lkIGF1ZGlvX3NpZ25hbF9zeW50 aGVzaXplKHN0cnVjdCBhdWRpb19zaWduYWwgKnNpZ25hbCk7CiB2b2lkIGF1ZGlvX3NpZ25hbF9j bGVhbihzdHJ1Y3QgYXVkaW9fc2lnbmFsICpzaWduYWwpOwotdm9pZCBhdWRpb19zaWduYWxfZmls bChzdHJ1Y3QgYXVkaW9fc2lnbmFsICpzaWduYWwsIHNob3J0ICpidWZmZXIsIGludCBmcmFtZXMp OwotYm9vbCBhdWRpb19zaWduYWxfZGV0ZWN0KHN0cnVjdCBhdWRpb19zaWduYWwgKnNpZ25hbCwg aW50IGNoYW5uZWxzLAotCQkJIGludCBzYW1wbGluZ19yYXRlLCBzaG9ydCAqYnVmZmVyLCBpbnQg ZnJhbWVzKTsKK3ZvaWQgYXVkaW9fc2lnbmFsX2ZpbGwoc3RydWN0IGF1ZGlvX3NpZ25hbCAqc2ln bmFsLCBpbnQxNl90ICpidWZmZXIsIGludCBmcmFtZXMpOworYm9vbCBhdWRpb19zaWduYWxfZGV0 ZWN0KHN0cnVjdCBhdWRpb19zaWduYWwgKnNpZ25hbCwgaW50IHNhbXBsaW5nX3JhdGUsCisJCQkg ZG91YmxlICpkYXRhLCBzaXplX3QgZGF0YV9sZW4pOworc2l6ZV90IGF1ZGlvX2V4dHJhY3RfY2hh bm5lbF9zMzJfbGUoZG91YmxlICpkc3QsIHNpemVfdCBkc3RfY2FwLAorCQkJCSAgICBpbnQzMl90 ICpzcmMsIHNpemVfdCBzcmNfbGVuLAorCQkJCSAgICBpbnQgbl9jaGFubmVscywgaW50IGNoYW5u ZWwpOworaW50IGF1ZGlvX2NyZWF0ZV93YXZfZmlsZV9zMzJfbGUoY29uc3QgY2hhciAqcXVhbGlm aWVyLCB1aW50MzJfdCBzYW1wbGVfcmF0ZSwKKwkJCQkgdWludDE2X3QgY2hhbm5lbHMsIGNoYXIg KipwYXRoKTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9saWIvaWd0X2F1eC5jIGIvbGliL2lndF9h dXguYwppbmRleCAwNTUyODM1Mi4uOTVjZWI4NDUgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfYXV4LmMK KysrIGIvbGliL2lndF9hdXguYwpAQCAtMTI1OSw2ICsxMjU5LDM3IEBAIHZvaWQgaWd0X3NldF9t b2R1bGVfcGFyYW1faW50KGNvbnN0IGNoYXIgKm5hbWUsIGludCB2YWwpCiAJaWd0X3NldF9tb2R1 bGVfcGFyYW0obmFtZSwgc3RyKTsKIH0KIAorLyoqCisgKiBpZ3RfaXNfcHJvY2Vzc19ydW5uaW5n OgorICogQGNvbW06IE5hbWUgb2YgcHJvY2VzcyBpbiB0aGUgZm9ybSBmb3VuZCBpbiAvcHJvYy9w aWQvY29tbSAobGltaXRlZCB0byAxNQorICogY2hhcnMpCisgKgorICogUmV0dXJuczogdHJ1ZSBp biBjYXNlIHRoZSBwcm9jZXNzIGhhcyBiZWVuIGZvdW5kLCBmYWxzZSBvdGhlcndpc2UuCisgKgor ICogVGhpcyBmdW5jdGlvbiBjaGVja3MgaW4gdGhlIHByb2Nlc3MgdGFibGUgZm9yIGFuIGVudHJ5 IHdpdGggdGhlIG5hbWUgQGNvbW0uCisgKi8KK2ludCBpZ3RfaXNfcHJvY2Vzc19ydW5uaW5nKGNv bnN0IGNoYXIgKmNvbW0pCit7CisJUFJPQ1RBQiAqcHJvYzsKKwlwcm9jX3QgKnByb2NfaW5mbzsK Kwlib29sIGZvdW5kID0gZmFsc2U7CisKKwlwcm9jID0gb3BlbnByb2MoUFJPQ19GSUxMQ09NIHwg UFJPQ19GSUxMU1RBVCB8IFBST0NfRklMTEFSRyk7CisJaWd0X2Fzc2VydChwcm9jICE9IE5VTEwp OworCisJd2hpbGUgKChwcm9jX2luZm8gPSByZWFkcHJvYyhwcm9jLCBOVUxMKSkpIHsKKwkJaWYg KCFzdHJuY2FzZWNtcChwcm9jX2luZm8tPmNtZCwgY29tbSwgc2l6ZW9mKHByb2NfaW5mby0+Y21k KSkpIHsKKwkJCWZyZWVwcm9jKHByb2NfaW5mbyk7CisJCQlmb3VuZCA9IHRydWU7CisJCQlicmVh azsKKwkJfQorCQlmcmVlcHJvYyhwcm9jX2luZm8pOworCX0KKworCWNsb3NlcHJvYyhwcm9jKTsK KwlyZXR1cm4gZm91bmQ7Cit9CisKIC8qKgogICogaWd0X3Rlcm1pbmF0ZV9wcm9jZXNzOgogICog QHNpZzogU2lnbmFsIHRvIHNlbmQKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfYXV4LmggYi9saWIvaWd0 X2F1eC5oCmluZGV4IDU1MzkyNzkwLi5kYmQ4OGI2NyAxMDA2NDQKLS0tIGEvbGliL2lndF9hdXgu aAorKysgYi9saWIvaWd0X2F1eC5oCkBAIC0yNzksNiArMjc5LDcgQEAgYm9vbCBpZ3RfYWxsb3df dW5saW1pdGVkX2ZpbGVzKHZvaWQpOwogdm9pZCBpZ3Rfc2V0X21vZHVsZV9wYXJhbShjb25zdCBj aGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWwpOwogdm9pZCBpZ3Rfc2V0X21vZHVsZV9wYXJhbV9p bnQoY29uc3QgY2hhciAqbmFtZSwgaW50IHZhbCk7CiAKK2ludCBpZ3RfaXNfcHJvY2Vzc19ydW5u aW5nKGNvbnN0IGNoYXIgKmNvbW0pOwogaW50IGlndF90ZXJtaW5hdGVfcHJvY2VzcyhpbnQgc2ln LCBjb25zdCBjaGFyICpjb21tKTsKIHZvaWQgaWd0X2xzb2YoY29uc3QgY2hhciAqZHBhdGgpOwog CmRpZmYgLS1naXQgYS9saWIvaWd0X2NoYW1lbGl1bS5jIGIvbGliL2lndF9jaGFtZWxpdW0uYwpp bmRleCAwMmNjOWIyYy4uN2M5MDMwZDEgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfY2hhbWVsaXVtLmMK KysrIGIvbGliL2lndF9jaGFtZWxpdW0uYwpAQCAtMjE4LDYgKzIxOCwxMiBAQCB2b2lkIGNoYW1l bGl1bV9kZXN0cm95X2ZyYW1lX2R1bXAoc3RydWN0IGNoYW1lbGl1bV9mcmFtZV9kdW1wICpkdW1w KQogCWZyZWUoZHVtcCk7CiB9CiAKK3ZvaWQgY2hhbWVsaXVtX2Rlc3Ryb3lfYXVkaW9fZmlsZShz dHJ1Y3QgY2hhbWVsaXVtX2F1ZGlvX2ZpbGUgKmF1ZGlvX2ZpbGUpCit7CisJZnJlZShhdWRpb19m aWxlLT5wYXRoKTsKKwlmcmVlKGF1ZGlvX2ZpbGUpOworfQorCiBzdHJ1Y3QgZnNtX21vbml0b3Jf YXJncyB7CiAJc3RydWN0IGNoYW1lbGl1bSAqY2hhbWVsaXVtOwogCXN0cnVjdCBjaGFtZWxpdW1f cG9ydCAqcG9ydDsKQEAgLTkyNCw2ICs5MzAsMTAxIEBAIGludCBjaGFtZWxpdW1fZ2V0X2NhcHR1 cmVkX2ZyYW1lX2NvdW50KHN0cnVjdCBjaGFtZWxpdW0gKmNoYW1lbGl1bSkKIAlyZXR1cm4gcmV0 OwogfQogCisvKioKKyAqIGNoYW1lbGl1bV9zdGFydF9jYXB0dXJpbmdfYXVkaW86CisgKiBAY2hh bWVsaXVtOiB0aGUgQ2hhbWVsaXVtIGluc3RhbmNlCisgKiBAcG9ydDogdGhlIHBvcnQgdG8gY2Fw dHVyZSBhdWRpbyBmcm9tIChpdCBtdXN0IHN1cHBvcnQgYXVkaW8pCisgKiBAc2F2ZV90b19maWxl OiB3aGV0aGVyIHRoZSBjYXB0dXJlZCBhdWRpbyBkYXRhIHNob3VsZCBiZSBzYXZlZCB0byBhIGZp bGUgb24KKyAqIHRoZSBDaGFtZWxpdW0gZGV2aWNlCisgKgorICogU3RhcnRzIGNhcHR1cmluZyBh dWRpbyBmcm9tIGEgQ2hhbWVsaXVtIHBvcnQuIFRvIHN0b3AgdGhlIGNhcHR1cmUsIHVzZQorICog I2NoYW1lbGl1bV9zdG9wX2NhcHR1cmluZ19hdWRpby4gVG8gcmV0cmlldmUgdGhlIGF1ZGlvIGRh dGEsIGVpdGhlciB1c2UgdGhlCisgKiBzdHJlYW0gc2VydmVyIG9yIGVuYWJsZSBAc2F2ZV90b19m aWxlICh0aGUgbGF0dGVyIGlzIG1haW5seSB1c2VmdWwgZm9yCisgKiBkZWJ1Z2dpbmcgcHVycG9z ZXMpLgorICoKKyAqIEl0IGlzbid0IHBvc3NpYmxlIHRvIGNhcHR1cmUgYXVkaW8gZnJvbSBtdWx0 aXBsZSBwb3J0cyBhdCB0aGUgc2FtZSB0aW1lLgorICovCit2b2lkIGNoYW1lbGl1bV9zdGFydF9j YXB0dXJpbmdfYXVkaW8oc3RydWN0IGNoYW1lbGl1bSAqY2hhbWVsaXVtLAorCQkJCSAgICBzdHJ1 Y3QgY2hhbWVsaXVtX3BvcnQgKnBvcnQsCisJCQkJICAgIGJvb2wgc2F2ZV90b19maWxlKQorewor CXhtbHJwY192YWx1ZSAqcmVzOworCisJcmVzID0gY2hhbWVsaXVtX3JwYyhjaGFtZWxpdW0sIHBv cnQsICJTdGFydENhcHR1cmluZ0F1ZGlvIiwgIihpYikiLAorCQkJICAgIHBvcnQtPmlkLCBzYXZl X3RvX2ZpbGUpOworCXhtbHJwY19ERUNSRUYocmVzKTsKK30KKworc3RhdGljIHZvaWQgYXVkaW9f Zm9ybWF0X2Zyb21feG1sKHN0cnVjdCBjaGFtZWxpdW0gKmNoYW1lbGl1bSwKKwkJCQkgIHhtbHJw Y192YWx1ZSAqcmVzLCBpbnQgKnJhdGUsIGludCAqY2hhbm5lbHMpCit7CisJeG1scnBjX3ZhbHVl ICpyZXNfdHlwZSwgKnJlc19yYXRlLCAqcmVzX3NhbXBsZV9mb3JtYXQsICpyZXNfY2hhbm5lbDsK KwljaGFyICp0eXBlLCAqc2FtcGxlX2Zvcm1hdDsKKworCXhtbHJwY19zdHJ1Y3RfZmluZF92YWx1 ZSgmY2hhbWVsaXVtLT5lbnYsIHJlcywgImZpbGVfdHlwZSIsICZyZXNfdHlwZSk7CisJeG1scnBj X3N0cnVjdF9maW5kX3ZhbHVlKCZjaGFtZWxpdW0tPmVudiwgcmVzLCAicmF0ZSIsICZyZXNfcmF0 ZSk7CisJeG1scnBjX3N0cnVjdF9maW5kX3ZhbHVlKCZjaGFtZWxpdW0tPmVudiwgcmVzLCAic2Ft cGxlX2Zvcm1hdCIsICZyZXNfc2FtcGxlX2Zvcm1hdCk7CisJeG1scnBjX3N0cnVjdF9maW5kX3Zh bHVlKCZjaGFtZWxpdW0tPmVudiwgcmVzLCAiY2hhbm5lbCIsICZyZXNfY2hhbm5lbCk7CisKKwl4 bWxycGNfcmVhZF9zdHJpbmcoJmNoYW1lbGl1bS0+ZW52LCByZXNfdHlwZSwgKGNvbnN0IGNoYXIg KiopICZ0eXBlKTsKKwlpZ3RfYXNzZXJ0KHN0cmNtcCh0eXBlLCAicmF3IikgPT0gMCk7CisJZnJl ZSh0eXBlKTsKKworCXhtbHJwY19yZWFkX3N0cmluZygmY2hhbWVsaXVtLT5lbnYsIHJlc19zYW1w bGVfZm9ybWF0LCAoY29uc3QgY2hhciAqKikgJnNhbXBsZV9mb3JtYXQpOworCWlndF9hc3NlcnQo c3RyY21wKHNhbXBsZV9mb3JtYXQsICJTMzJfTEUiKSA9PSAwKTsKKwlmcmVlKHNhbXBsZV9mb3Jt YXQpOworCisJeG1scnBjX3JlYWRfaW50KCZjaGFtZWxpdW0tPmVudiwgcmVzX3JhdGUsIHJhdGUp OworCXhtbHJwY19yZWFkX2ludCgmY2hhbWVsaXVtLT5lbnYsIHJlc19jaGFubmVsLCBjaGFubmVs cyk7CisKKwl4bWxycGNfREVDUkVGKHJlc19jaGFubmVsKTsKKwl4bWxycGNfREVDUkVGKHJlc19z YW1wbGVfZm9ybWF0KTsKKwl4bWxycGNfREVDUkVGKHJlc19yYXRlKTsKKwl4bWxycGNfREVDUkVG KHJlc190eXBlKTsKK30KKworLyoqCisgKiBjaGFtZWxpdW1fc3RvcF9jYXB0dXJpbmdfYXVkaW86 CisgKiBAY2hhbWVsaXVtOiB0aGUgQ2hhbWVsaXVtIGluc3RhbmNlCisgKiBAcG9ydDogdGhlIHBv cnQgZnJvbSB3aGljaCBhdWRpbyBpcyBiZWluZyBjYXB0dXJlZAorICoKKyAqIFN0b3BzIGNhcHR1 cmluZyBhdWRpbyBmcm9tIGEgQ2hhbWVsaXVtIHBvcnQuIElmCisgKiAjY2hhbWVsaXVtX3N0YXJ0 X2NhcHR1cmluZ19hdWRpbyBoYXMgYmVlbiBjYWxsZWQgd2l0aCBAc2F2ZV90b19maWxlIGVuYWJs ZWQsCisgKiB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGEgI2NoYW1lbGl1bV9hdWRpb19maWxl IHN0cnVjdCBjb250YWluaW5nIGRldGFpbHMKKyAqIGFib3V0IHRoZSBhdWRpbyBmaWxlLiBPbmNl IHRoZSBjYWxsZXIgaXMgZG9uZSB3aXRoIHRoZSBzdHJ1Y3QsIHRoZXkgc2hvdWxkCisgKiByZWxl YXNlIGl0IHdpdGggI2NoYW1lbGl1bV9kZXN0cm95X2F1ZGlvX2ZpbGUuCisgKi8KK3N0cnVjdCBj aGFtZWxpdW1fYXVkaW9fZmlsZSAqY2hhbWVsaXVtX3N0b3BfY2FwdHVyaW5nX2F1ZGlvKHN0cnVj dCBjaGFtZWxpdW0gKmNoYW1lbGl1bSwKKwkJCQkJCQkgICAgc3RydWN0IGNoYW1lbGl1bV9wb3J0 ICpwb3J0KQoreworCXhtbHJwY192YWx1ZSAqcmVzLCAqcmVzX3BhdGgsICpyZXNfcHJvcHM7CisJ c3RydWN0IGNoYW1lbGl1bV9hdWRpb19maWxlICpmaWxlID0gTlVMTDsKKwljaGFyICpwYXRoOwor CisJcmVzID0gY2hhbWVsaXVtX3JwYyhjaGFtZWxpdW0sIE5VTEwsICJTdG9wQ2FwdHVyaW5nQXVk aW8iLCAiKGkpIiwKKwkJCSAgICBwb3J0LT5pZCk7CisJeG1scnBjX2FycmF5X3JlYWRfaXRlbSgm Y2hhbWVsaXVtLT5lbnYsIHJlcywgMCwgJnJlc19wYXRoKTsKKwl4bWxycGNfYXJyYXlfcmVhZF9p dGVtKCZjaGFtZWxpdW0tPmVudiwgcmVzLCAxLCAmcmVzX3Byb3BzKTsKKworCXhtbHJwY19yZWFk X3N0cmluZygmY2hhbWVsaXVtLT5lbnYsIHJlc19wYXRoLCAoY29uc3QgY2hhciAqKikgJnBhdGgp OworCisJaWYgKHN0cmxlbihwYXRoKSA+IDApIHsKKwkJZmlsZSA9IGNhbGxvYygxLCBzaXplb2Yo KmZpbGUpKTsKKwkJZmlsZS0+cGF0aCA9IHBhdGg7CisKKwkJYXVkaW9fZm9ybWF0X2Zyb21feG1s KGNoYW1lbGl1bSwgcmVzX3Byb3BzLAorCQkJCSAgICAgICZmaWxlLT5yYXRlLCAmZmlsZS0+Y2hh bm5lbHMpOworCX0gZWxzZSB7CisJCWZyZWUocGF0aCk7CisJfQorCisJeG1scnBjX0RFQ1JFRihy ZXNfcHJvcHMpOworCXhtbHJwY19ERUNSRUYocmVzX3BhdGgpOworCXhtbHJwY19ERUNSRUYocmVz KTsKKworCXJldHVybiBmaWxlOworfQorCiBzdGF0aWMgcGl4bWFuX2ltYWdlX3QgKmNvbnZlcnRf ZnJhbWVfZm9ybWF0KHBpeG1hbl9pbWFnZV90ICpzcmMsCiAJCQkJCSAgICBpbnQgZm9ybWF0KQog ewpkaWZmIC0tZ2l0IGEvbGliL2lndF9jaGFtZWxpdW0uaCBiL2xpYi9pZ3RfY2hhbWVsaXVtLmgK aW5kZXggMjMzZWFkODUuLjA0N2Y4YzVkIDEwMDY0NAotLS0gYS9saWIvaWd0X2NoYW1lbGl1bS5o CisrKyBiL2xpYi9pZ3RfY2hhbWVsaXVtLmgKQEAgLTUzLDYgKzUzLDEyIEBAIGVudW0gY2hhbWVs aXVtX2NoZWNrIHsKIAlDSEFNRUxJVU1fQ0hFQ0tfQ1JDLAogfTsKIAorc3RydWN0IGNoYW1lbGl1 bV9hdWRpb19maWxlIHsKKwljaGFyICpwYXRoOworCWludCByYXRlOyAvKiBIeiAqLworCWludCBj aGFubmVsczsKK307CisKIHN0cnVjdCBjaGFtZWxpdW0gKmNoYW1lbGl1bV9pbml0KGludCBkcm1f ZmQpOwogdm9pZCBjaGFtZWxpdW1fZGVpbml0KHN0cnVjdCBjaGFtZWxpdW0gKmNoYW1lbGl1bSk7 CiB2b2lkIGNoYW1lbGl1bV9yZXNldChzdHJ1Y3QgY2hhbWVsaXVtICpjaGFtZWxpdW0pOwpAQCAt MTAwLDYgKzEwNiwxMCBAQCB2b2lkIGNoYW1lbGl1bV9zdGFydF9jYXB0dXJlKHN0cnVjdCBjaGFt ZWxpdW0gKmNoYW1lbGl1bSwKIHZvaWQgY2hhbWVsaXVtX3N0b3BfY2FwdHVyZShzdHJ1Y3QgY2hh bWVsaXVtICpjaGFtZWxpdW0sIGludCBmcmFtZV9jb3VudCk7CiB2b2lkIGNoYW1lbGl1bV9jYXB0 dXJlKHN0cnVjdCBjaGFtZWxpdW0gKmNoYW1lbGl1bSwgc3RydWN0IGNoYW1lbGl1bV9wb3J0ICpw b3J0LAogCQkgICAgICAgaW50IHgsIGludCB5LCBpbnQgdywgaW50IGgsIGludCBmcmFtZV9jb3Vu dCk7Cit2b2lkIGNoYW1lbGl1bV9zdGFydF9jYXB0dXJpbmdfYXVkaW8oc3RydWN0IGNoYW1lbGl1 bSAqY2hhbWVsaXVtLAorCQkJCSAgICBzdHJ1Y3QgY2hhbWVsaXVtX3BvcnQgKnBvcnQsIGJvb2wg c2F2ZV90b19maWxlKTsKK3N0cnVjdCBjaGFtZWxpdW1fYXVkaW9fZmlsZSAqY2hhbWVsaXVtX3N0 b3BfY2FwdHVyaW5nX2F1ZGlvKHN0cnVjdCBjaGFtZWxpdW0gKmNoYW1lbGl1bSwKKwkJCQkJCQkg ICAgc3RydWN0IGNoYW1lbGl1bV9wb3J0ICpwb3J0KTsKIGlndF9jcmNfdCAqY2hhbWVsaXVtX3Jl YWRfY2FwdHVyZWRfY3JjcyhzdHJ1Y3QgY2hhbWVsaXVtICpjaGFtZWxpdW0sCiAJCQkJCWludCAq ZnJhbWVfY291bnQpOwogc3RydWN0IGNoYW1lbGl1bV9mcmFtZV9kdW1wICpjaGFtZWxpdW1fcmVh ZF9jYXB0dXJlZF9mcmFtZShzdHJ1Y3QgY2hhbWVsaXVtICpjaGFtZWxpdW0sCkBAIC0xMzEsNSAr MTQxLDYgQEAgdm9pZCBjaGFtZWxpdW1fYXNzZXJ0X2ZyYW1lX21hdGNoX29yX2R1bXAoc3RydWN0 IGNoYW1lbGl1bSAqY2hhbWVsaXVtLAogdm9pZCBjaGFtZWxpdW1fY3JvcF9hbmFsb2dfZnJhbWUo c3RydWN0IGNoYW1lbGl1bV9mcmFtZV9kdW1wICpkdW1wLCBpbnQgd2lkdGgsCiAJCQkJIGludCBo ZWlnaHQpOwogdm9pZCBjaGFtZWxpdW1fZGVzdHJveV9mcmFtZV9kdW1wKHN0cnVjdCBjaGFtZWxp dW1fZnJhbWVfZHVtcCAqZHVtcCk7Cit2b2lkIGNoYW1lbGl1bV9kZXN0cm95X2F1ZGlvX2ZpbGUo c3RydWN0IGNoYW1lbGl1bV9hdWRpb19maWxlICphdWRpb19maWxlKTsKIAogI2VuZGlmIC8qIElH VF9DSEFNRUxJVU1fSCAqLwpkaWZmIC0tZ2l0IGEvbGliL2lndF9jaGFtZWxpdW1fc3RyZWFtLmMg Yi9saWIvaWd0X2NoYW1lbGl1bV9zdHJlYW0uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMC4uOWUxYmExY2EKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvaWd0X2NoYW1lbGl1bV9z dHJlYW0uYwpAQCAtMCwwICsxLDU5MiBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE5IEludGVs IENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBv ZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0 d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiks CisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRp bmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5 LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxs IGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRo ZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xs b3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg dGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgp IHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMg b2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFT IElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElF RCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFO VEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5G UklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdI VCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBM SUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVS V0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUg U09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJF LgorICoKKyAqIEF1dGhvcnM6IFNpbW9uIFNlciA8c2ltb24uc2VyQGludGVsLmNvbT4KKyAqLwor CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKyNpbmNsdWRl IDxlcnJuby5oPgorI2luY2x1ZGUgPG5ldGRiLmg+CisjaW5jbHVkZSA8c3RkYm9vbC5oPgorI2lu Y2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9z b2NrZXQuaD4KKworI2luY2x1ZGUgImlndF9jaGFtZWxpdW1fc3RyZWFtLmgiCisjaW5jbHVkZSAi aWd0X2NvcmUuaCIKKyNpbmNsdWRlICJpZ3RfcmMuaCIKKworI2RlZmluZSBTVFJFQU1fUE9SVCA5 OTk0CisjZGVmaW5lIFNUUkVBTV9WRVJTSU9OX01BSk9SIDEKKyNkZWZpbmUgU1RSRUFNX1ZFUlNJ T05fTUlOT1IgMAorCitlbnVtIHN0cmVhbV9lcnJvciB7CisJU1RSRUFNX0VSUk9SX05PTkUgPSAw LAorCVNUUkVBTV9FUlJPUl9DT01NQU5EID0gMSwKKwlTVFJFQU1fRVJST1JfQVJHVU1FTlQgPSAy LAorCVNUUkVBTV9FUlJPUl9FWElTVFMgPSAzLAorCVNUUkVBTV9FUlJPUl9WSURFT19NRU1fT1ZF UkZMT1dfU1RPUCA9IDQsCisJU1RSRUFNX0VSUk9SX1ZJREVPX01FTV9PVkVSRkxPV19EUk9QID0g NSwKKwlTVFJFQU1fRVJST1JfQVVESU9fTUVNX09WRVJGTE9XX1NUT1AgPSA2LAorCVNUUkVBTV9F UlJPUl9BVURJT19NRU1fT1ZFUkZMT1dfRFJPUCA9IDcsCisJU1RSRUFNX0VSUk9SX05PX01FTSA9 IDgsCit9OworCitlbnVtIHN0cmVhbV9tZXNzYWdlX2tpbmQgeworCVNUUkVBTV9NRVNTQUdFX1JF UVVFU1QgPSAwLAorCVNUUkVBTV9NRVNTQUdFX1JFU1BPTlNFID0gMSwKKwlTVFJFQU1fTUVTU0FH RV9EQVRBID0gMiwKK307CisKK2VudW0gc3RyZWFtX21lc3NhZ2VfdHlwZSB7CisJU1RSRUFNX01F U1NBR0VfUkVTRVQgPSAwLAorCVNUUkVBTV9NRVNTQUdFX0dFVF9WRVJTSU9OID0gMSwKKwlTVFJF QU1fTUVTU0FHRV9WSURFT19TVFJFQU0gPSAyLAorCVNUUkVBTV9NRVNTQUdFX1NIUklOS19WSURF TyA9IDMsCisJU1RSRUFNX01FU1NBR0VfVklERU9fRlJBTUUgPSA0LAorCVNUUkVBTV9NRVNTQUdF X0RVTVBfUkVBTFRJTUVfVklERU8gPSA1LAorCVNUUkVBTV9NRVNTQUdFX1NUT1BfRFVNUF9WSURF TyA9IDYsCisJU1RSRUFNX01FU1NBR0VfRFVNUF9SRUFMVElNRV9BVURJTyA9IDcsCisJU1RSRUFN X01FU1NBR0VfU1RPUF9EVU1QX0FVRElPID0gOCwKK307CisKK3N0cnVjdCBjaGFtZWxpdW1fc3Ry ZWFtIHsKKwljaGFyICpob3N0OworCXVuc2lnbmVkIGludCBwb3J0OworCisJaW50IGZkOworfTsK Kworc3RhdGljIGNvbnN0IGNoYXIgKnN0cmVhbV9lcnJvcl9zdHIoZW51bSBzdHJlYW1fZXJyb3Ig ZXJyKQoreworCXN3aXRjaCAoZXJyKSB7CisJY2FzZSBTVFJFQU1fRVJST1JfTk9ORToKKwkJcmV0 dXJuICJubyBlcnJvciI7CisJY2FzZSBTVFJFQU1fRVJST1JfQ09NTUFORDoKKwkJcmV0dXJuICJp bnZhbGlkIGNvbW1hbmQiOworCWNhc2UgU1RSRUFNX0VSUk9SX0FSR1VNRU5UOgorCQlyZXR1cm4g ImludmFsaWQgYXJndW1lbnRzIjsKKwljYXNlIFNUUkVBTV9FUlJPUl9FWElTVFM6CisJCXJldHVy biAiZHVtcCBhbHJlYWR5IHN0YXJ0ZWQiOworCWNhc2UgU1RSRUFNX0VSUk9SX1ZJREVPX01FTV9P VkVSRkxPV19TVE9QOgorCQlyZXR1cm4gInZpZGVvIGR1bXAgc3RvcHBlZCBhZnRlciBvdmVyZmxv dyI7CisJY2FzZSBTVFJFQU1fRVJST1JfVklERU9fTUVNX09WRVJGTE9XX0RST1A6CisJCXJldHVy biAidmlkZW8gZnJhbWUgZHJvcHBlZCBhZnRlciBvdmVyZmxvdyI7CisJY2FzZSBTVFJFQU1fRVJS T1JfQVVESU9fTUVNX09WRVJGTE9XX1NUT1A6CisJCXJldHVybiAiYXVkaW8gZHVtcCBzdG9wcHJl ZCBhZnRlciBvdmVyZmxvdyI7CisJY2FzZSBTVFJFQU1fRVJST1JfQVVESU9fTUVNX09WRVJGTE9X X0RST1A6CisJCXJldHVybiAiYXVkaW8gcGFnZSBkcm9wcGVkIGFmdGVyIG92ZXJmbG93IjsKKwlj YXNlIFNUUkVBTV9FUlJPUl9OT19NRU06CisJCXJldHVybiAib3V0IG9mIG1lbW9yeSI7CisJfQor CXJldHVybiAidW5rbm93biBlcnJvciI7Cit9CisKKy8qKgorICogVGhlIENoYW1lbGl1bSBVUkwg aXMgc3BlY2lmaWVkIGluIHRoZSBjb25maWd1cmF0aW9uIGZpbGUuIFdlIG5lZWQgdG8gZXh0cmFj dAorICogdGhlIGhvc3QgdG8gY29ubmVjdCB0byB0aGUgc3RyZWFtIHNlcnZlci4KKyAqLworc3Rh dGljIGNoYXIgKnBhcnNlX3VybF9ob3N0KGNvbnN0IGNoYXIgKnVybCkKK3sKKwlzdGF0aWMgY29u c3QgY2hhciBwcmVmaXhbXSA9ICJodHRwOi8vIjsKKwljaGFyICpjb2xvbjsKKworCWlmIChzdHJz dHIodXJsLCBwcmVmaXgpICE9IHVybCkKKwkJcmV0dXJuIE5VTEw7CisJdXJsICs9IHN0cmxlbihw cmVmaXgpOworCisJY29sb24gPSBzdHJjaHIodXJsLCAnOicpOworCWlmICghY29sb24pCisJCXJl dHVybiBOVUxMOworCisJcmV0dXJuIHN0cm5kdXAodXJsLCBjb2xvbiAtIHVybCk7Cit9CisKK3N0 YXRpYyBib29sIGNoYW1lbGl1bV9zdHJlYW1fcmVhZF9jb25maWcoc3RydWN0IGNoYW1lbGl1bV9z dHJlYW0gKmNsaWVudCkKK3sKKwlHRXJyb3IgKmVycm9yID0gTlVMTDsKKwlnY2hhciAqY2hhbWVs aXVtX3VybDsKKworCWlmICghaWd0X2tleV9maWxlKSB7CisJCWlndF93YXJuKCJObyBjb25maWd1 cmF0aW9uIGZpbGUgYXZhaWxhYmxlIGZvciBjaGFtZWxpdW1cbiIpOworCQlyZXR1cm4gZmFsc2U7 CisJfQorCisJY2hhbWVsaXVtX3VybCA9IGdfa2V5X2ZpbGVfZ2V0X3N0cmluZyhpZ3Rfa2V5X2Zp bGUsICJDaGFtZWxpdW0iLCAiVVJMIiwKKwkJCQkJICAgICAgJmVycm9yKTsKKwlpZiAoIWNoYW1l bGl1bV91cmwpIHsKKwkJaWd0X3dhcm4oIkNvdWxkbid0IHJlYWQgQ2hhbWVsaXVtIFVSTCBmcm9t IGNvbmZpZyBmaWxlOiAlc1xuIiwKKwkJCSBlcnJvci0+bWVzc2FnZSk7CisJCXJldHVybiBmYWxz ZTsKKwl9CisKKwljbGllbnQtPmhvc3QgPSBwYXJzZV91cmxfaG9zdChjaGFtZWxpdW1fdXJsKTsK KwlpZiAoIWNsaWVudC0+aG9zdCkgeworCQlpZ3Rfd2FybigiSW52YWxpZCBDaGFtZWxpdW0gVVJM IGluIGNvbmZpZyBmaWxlOiAlc1xuIiwKKwkJCSBjaGFtZWxpdW1fdXJsKTsKKwkJcmV0dXJuIGZh bHNlOworCX0KKwljbGllbnQtPnBvcnQgPSBTVFJFQU1fUE9SVDsKKworCXJldHVybiB0cnVlOwor fQorCitzdGF0aWMgYm9vbCBjaGFtZWxpdW1fc3RyZWFtX2Nvbm5lY3Qoc3RydWN0IGNoYW1lbGl1 bV9zdHJlYW0gKmNsaWVudCkKK3sKKwlpbnQgcmV0OworCWNoYXIgcG9ydF9zdHJbMTZdOworCXN0 cnVjdCBhZGRyaW5mbyBoaW50cyA9IHt9OworCXN0cnVjdCBhZGRyaW5mbyAqcmVzdWx0cywgKmFp OworCXN0cnVjdCB0aW1ldmFsIHR2ID0ge307CisKKwlpZ3RfZGVidWcoIkNvbm5lY3RpbmcgdG8g Q2hhbWVsaXVtIHN0cmVhbSBzZXJ2ZXI6IHRjcDovLyVzOiV1XG4iLAorCQkgIGNsaWVudC0+aG9z dCwgY2xpZW50LT5wb3J0KTsKKworCXNucHJpbnRmKHBvcnRfc3RyLCBzaXplb2YocG9ydF9zdHIp LCAiJXUiLCBjbGllbnQtPnBvcnQpOworCisJaGludHMuYWlfZmFtaWx5ID0gQUZfVU5TUEVDOwor CWhpbnRzLmFpX3NvY2t0eXBlID0gU09DS19TVFJFQU07CisJcmV0ID0gZ2V0YWRkcmluZm8oY2xp ZW50LT5ob3N0LCBwb3J0X3N0ciwgJmhpbnRzLCAmcmVzdWx0cyk7CisJaWYgKHJldCAhPSAwKSB7 CisJCWlndF93YXJuKCJnZXRhZGRyaW5mbyBmYWlsZWQ6ICVzXG4iLCBnYWlfc3RyZXJyb3IocmV0 KSk7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwljbGllbnQtPmZkID0gLTE7CisJZm9yIChhaSA9 IHJlc3VsdHM7IGFpICE9IE5VTEw7IGFpID0gYWktPmFpX25leHQpIHsKKwkJY2xpZW50LT5mZCA9 IHNvY2tldChhaS0+YWlfZmFtaWx5LCBhaS0+YWlfc29ja3R5cGUsCisJCQkJICAgIGFpLT5haV9w cm90b2NvbCk7CisJCWlmIChjbGllbnQtPmZkID09IC0xKQorCQkJY29udGludWU7CisKKwkJaWYg KGNvbm5lY3QoY2xpZW50LT5mZCwgYWktPmFpX2FkZHIsIGFpLT5haV9hZGRybGVuKSA9PSAtMSkg eworCQkJY2xvc2UoY2xpZW50LT5mZCk7CisJCQljbGllbnQtPmZkID0gLTE7CisJCQljb250aW51 ZTsKKwkJfQorCisJCWJyZWFrOworCX0KKworCWZyZWVhZGRyaW5mbyhyZXN1bHRzKTsKKworCWlm IChjbGllbnQtPmZkIDwgMCkgeworCQlpZ3Rfd2FybigiRmFpbGVkIHRvIGNvbm5lY3QgdG8gQ2hh bWVsaXVtIHN0cmVhbSBzZXJ2ZXJcbiIpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJLyogU2V0 IGEgcmVhZCBhbmQgd3JpdGUgdGltZW91dCBvZiA1IHNlY29uZHMuICovCisJdHYudHZfc2VjID0g NTsKKwlzZXRzb2Nrb3B0KGNsaWVudC0+ZmQsIFNPTF9TT0NLRVQsIFNPX1JDVlRJTUVPLCAmdHYs IHNpemVvZih0dikpOworCXNldHNvY2tvcHQoY2xpZW50LT5mZCwgU09MX1NPQ0tFVCwgU09fU05E VElNRU8sICZ0diwgc2l6ZW9mKHR2KSk7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJv b2wgcmVhZF93aG9sZShpbnQgZmQsIHZvaWQgKmJ1Ziwgc2l6ZV90IGJ1Zl9sZW4pCit7CisJc3Np emVfdCByZXQ7CisJc2l6ZV90IG4gPSAwOworCWNoYXIgKnB0cjsKKworCXdoaWxlIChuIDwgYnVm X2xlbikgeworCQlwdHIgPSAoY2hhciAqKSBidWYgKyBuOworCQlyZXQgPSByZWFkKGZkLCBwdHIs IGJ1Zl9sZW4gLSBuKTsKKwkJaWYgKHJldCA8IDApIHsKKwkJCWlndF93YXJuKCJyZWFkIGZhaWxl ZDogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0gZWxzZSBp ZiAocmV0ID09IDApIHsKKwkJCWlndF93YXJuKCJzaG9ydCByZWFkXG4iKTsKKwkJCXJldHVybiBm YWxzZTsKKwkJfQorCQluICs9IHJldDsKKwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGlj IGJvb2wgd3JpdGVfd2hvbGUoaW50IGZkLCB2b2lkICpidWYsIHNpemVfdCBidWZfbGVuKQorewor CXNzaXplX3QgcmV0OworCXNpemVfdCBuID0gMDsKKwljaGFyICpwdHI7CisKKwl3aGlsZSAobiA8 IGJ1Zl9sZW4pIHsKKwkJcHRyID0gKGNoYXIgKikgYnVmICsgbjsKKwkJcmV0ID0gd3JpdGUoZmQs IHB0ciwgYnVmX2xlbiAtIG4pOworCQlpZiAocmV0IDwgMCkgeworCQkJaWd0X3dhcm4oIndyaXRl IGZhaWxlZDogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0g ZWxzZSBpZiAocmV0ID09IDApIHsKKwkJCWlndF93YXJuKCJzaG9ydCB3cml0ZVxuIik7CisJCQly ZXR1cm4gZmFsc2U7CisJCX0KKwkJbiArPSByZXQ7CisJfQorCisJcmV0dXJuIHRydWU7Cit9CisK K3N0YXRpYyBib29sIHJlYWRfYW5kX2Rpc2NhcmQoaW50IGZkLCBzaXplX3QgbGVuKQoreworCWNo YXIgYnVmWzEwMjRdOworCXNpemVfdCBuOworCisJd2hpbGUgKGxlbiA+IDApIHsKKwkJbiA9IGxl bjsKKwkJaWYgKG4gPiBzaXplb2YoYnVmKSkKKwkJCW4gPSBzaXplb2YoYnVmKTsKKworCQlpZiAo IXJlYWRfd2hvbGUoZmQsIGJ1ZiwgbikpCisJCQlyZXR1cm4gZmFsc2U7CisKKwkJbGVuIC09IG47 CisJfQorCisJcmV0dXJuIHRydWU7Cit9CisKKy8qKiBSZWFkIGEgbWVzc2FnZSBoZWFkZXIgZnJv bSB0aGUgc29ja2V0LgorICoKKyAqIFRoZSBoZWFkZXIgaXMgbGFpZCBvdXQgYXMgZm9sbG93czoK KyAqIC0gdTE2OiBtZXNzYWdlIHR5cGUKKyAqIC0gdTE2OiBlcnJvciBjb2RlCisgKiAtIHUzMjog bWVzc2FnZSBsZW5ndGgKKyAqLworc3RhdGljIGJvb2wgY2hhbWVsaXVtX3N0cmVhbV9yZWFkX2hl YWRlcihzdHJ1Y3QgY2hhbWVsaXVtX3N0cmVhbSAqY2xpZW50LAorCQkJCQkgZW51bSBzdHJlYW1f bWVzc2FnZV9raW5kICpraW5kLAorCQkJCQkgZW51bSBzdHJlYW1fbWVzc2FnZV90eXBlICp0eXBl LAorCQkJCQkgZW51bSBzdHJlYW1fZXJyb3IgKmVyciwKKwkJCQkJIHNpemVfdCAqbGVuKQorewor CXVpbnQxNl90IF90eXBlOworCWNoYXIgYnVmWzhdOworCisJaWYgKCFyZWFkX3dob2xlKGNsaWVu dC0+ZmQsIGJ1Ziwgc2l6ZW9mKGJ1ZikpKQorCQlyZXR1cm4gZmFsc2U7CisKKwlfdHlwZSA9IG50 b2hzKCoodWludDE2X3QgKikgJmJ1ZlswXSk7CisJKnR5cGUgPSBfdHlwZSAmIDB4RkY7CisJKmtp bmQgPSBfdHlwZSA+PiA4OworCSplcnIgPSBudG9ocygqKHVpbnQxNl90ICopICZidWZbMl0pOwor CSpsZW4gPSBudG9obCgqKHVpbnQzMl90ICopICZidWZbNF0pOworCisJLy9pZ3RfZGVidWcoInJl Y2VpdmVkIG1lc3NhZ2U6IGtpbmQ9JWQgdHlwZT0lZCBlcnI9JWQgbGVuPSV6dVxuIiwKKwkvLwkg ICpraW5kLCAqdHlwZSwgKmVyciwgKmxlbik7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGlj IGJvb2wgY2hhbWVsaXVtX3N0cmVhbV93cml0ZV9oZWFkZXIoc3RydWN0IGNoYW1lbGl1bV9zdHJl YW0gKmNsaWVudCwKKwkJCQkJICBlbnVtIHN0cmVhbV9tZXNzYWdlX3R5cGUgdHlwZSwKKwkJCQkJ ICBlbnVtIHN0cmVhbV9lcnJvciBlcnIsCisJCQkJCSAgc2l6ZV90IGxlbikKK3sKKwljaGFyIGJ1 Zls4XTsKKwl1aW50MTZfdCBfdHlwZTsKKworCV90eXBlID0gdHlwZSB8IChTVFJFQU1fTUVTU0FH RV9SRVFVRVNUIDw8IDgpOworCisJKih1aW50MTZfdCAqKSAmYnVmWzBdID0gaHRvbnMoX3R5cGUp OworCSoodWludDE2X3QgKikgJmJ1ZlsyXSA9IGh0b25zKGVycik7CisJKih1aW50MzJfdCAqKSAm YnVmWzRdID0gaHRvbmwobGVuKTsKKworCXJldHVybiB3cml0ZV93aG9sZShjbGllbnQtPmZkLCBi dWYsIHNpemVvZihidWYpKTsKK30KKworc3RhdGljIGJvb2wgY2hhbWVsaXVtX3N0cmVhbV9yZWFk X3Jlc3BvbnNlKHN0cnVjdCBjaGFtZWxpdW1fc3RyZWFtICpjbGllbnQsCisJCQkJCSAgIGVudW0g c3RyZWFtX21lc3NhZ2VfdHlwZSB0eXBlLAorCQkJCQkgICB2b2lkICpidWYsIHNpemVfdCBidWZf bGVuKQoreworCWVudW0gc3RyZWFtX21lc3NhZ2Vfa2luZCByZWFkX2tpbmQ7CisJZW51bSBzdHJl YW1fbWVzc2FnZV90eXBlIHJlYWRfdHlwZTsKKwllbnVtIHN0cmVhbV9lcnJvciByZWFkX2VycjsK KwlzaXplX3QgcmVhZF9sZW47CisKKwlpZiAoIWNoYW1lbGl1bV9zdHJlYW1fcmVhZF9oZWFkZXIo Y2xpZW50LCAmcmVhZF9raW5kLCAmcmVhZF90eXBlLAorCQkJCQkgICZyZWFkX2VyciwgJnJlYWRf bGVuKSkKKwkJcmV0dXJuIGZhbHNlOworCisJaWYgKHJlYWRfa2luZCAhPSBTVFJFQU1fTUVTU0FH RV9SRVNQT05TRSkgeworCQlpZ3Rfd2FybigiRXhwZWN0ZWQgYSByZXNwb25zZSwgZ290IGtpbmQg JWRcbiIsIHJlYWRfa2luZCk7CisJCXJldHVybiBmYWxzZTsKKwl9CisJaWYgKHJlYWRfdHlwZSAh PSB0eXBlKSB7CisJCWlndF93YXJuKCJFeHBlY3RlZCBtZXNzYWdlIHR5cGUgJWQsIGdvdCAlZFxu IiwKKwkJCSB0eXBlLCByZWFkX3R5cGUpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCWlmIChyZWFk X2VyciAhPSBTVFJFQU1fRVJST1JfTk9ORSkgeworCQlpZ3Rfd2FybigiUmVjZWl2ZWQgZXJyb3I6 ICVzICglZClcbiIsCisJCQkgc3RyZWFtX2Vycm9yX3N0cihyZWFkX2VyciksIHJlYWRfZXJyKTsK KwkJcmV0dXJuIGZhbHNlOworCX0KKwlpZiAoYnVmX2xlbiAhPSByZWFkX2xlbikgeworCQlpZ3Rf d2FybigiUmVjZWl2ZWQgaW52YWxpZCBtZXNzYWdlIGJvZHkgc2l6ZSAiCisJCQkgIihnb3QgJXp1 IGJ5dGVzLCB3YW50ICV6dSBieXRlcylcbiIsCisJCQkgcmVhZF9sZW4sIGJ1Zl9sZW4pOworCQly ZXR1cm4gZmFsc2U7CisJfQorCisJcmV0dXJuIHJlYWRfd2hvbGUoY2xpZW50LT5mZCwgYnVmLCBi dWZfbGVuKTsKK30KKworc3RhdGljIGJvb2wgY2hhbWVsaXVtX3N0cmVhbV93cml0ZV9yZXF1ZXN0 KHN0cnVjdCBjaGFtZWxpdW1fc3RyZWFtICpjbGllbnQsCisJCQkJCSAgIGVudW0gc3RyZWFtX21l c3NhZ2VfdHlwZSB0eXBlLAorCQkJCQkgICB2b2lkICpidWYsIHNpemVfdCBidWZfbGVuKQorewor CWlmICghY2hhbWVsaXVtX3N0cmVhbV93cml0ZV9oZWFkZXIoY2xpZW50LCB0eXBlLCBTVFJFQU1f RVJST1JfTk9ORSwKKwkJCQkJICAgYnVmX2xlbikpCisJCXJldHVybiBmYWxzZTsKKworCWlmIChi dWZfbGVuID09IDApCisJCXJldHVybiB0cnVlOworCisJcmV0dXJuIHdyaXRlX3dob2xlKGNsaWVu dC0+ZmQsIGJ1ZiwgYnVmX2xlbik7Cit9CisKK3N0YXRpYyBib29sIGNoYW1lbGl1bV9zdHJlYW1f Y2FsbChzdHJ1Y3QgY2hhbWVsaXVtX3N0cmVhbSAqY2xpZW50LAorCQkJCSAgZW51bSBzdHJlYW1f bWVzc2FnZV90eXBlIHR5cGUsCisJCQkJICB2b2lkICpyZXFfYnVmLCBzaXplX3QgcmVxX2xlbiwK KwkJCQkgIHZvaWQgKnJlc3BfYnVmLCBzaXplX3QgcmVzcF9sZW4pCit7CisJaWYgKCFjaGFtZWxp dW1fc3RyZWFtX3dyaXRlX3JlcXVlc3QoY2xpZW50LCB0eXBlLCByZXFfYnVmLCByZXFfbGVuKSkK KwkJcmV0dXJuIGZhbHNlOworCisJcmV0dXJuIGNoYW1lbGl1bV9zdHJlYW1fcmVhZF9yZXNwb25z ZShjbGllbnQsIHR5cGUsIHJlc3BfYnVmLCByZXNwX2xlbik7Cit9CisKK3N0YXRpYyBib29sIGNo YW1lbGl1bV9zdHJlYW1fY2hlY2tfdmVyc2lvbihzdHJ1Y3QgY2hhbWVsaXVtX3N0cmVhbSAqY2xp ZW50KQoreworCWNoYXIgcmVzcFsyXTsKKwl1aW50OF90IG1ham9yLCBtaW5vcjsKKworCWlmICgh Y2hhbWVsaXVtX3N0cmVhbV9jYWxsKGNsaWVudCwgU1RSRUFNX01FU1NBR0VfR0VUX1ZFUlNJT04s CisJCQkJICAgTlVMTCwgMCwgcmVzcCwgc2l6ZW9mKHJlc3ApKSkKKwkJcmV0dXJuIGZhbHNlOwor CisJbWFqb3IgPSByZXNwWzBdOworCW1pbm9yID0gcmVzcFsxXTsKKwlpZiAobWFqb3IgIT0gU1RS RUFNX1ZFUlNJT05fTUFKT1IgfHwgbWlub3IgPCBTVFJFQU1fVkVSU0lPTl9NSU5PUikgeworCQlp Z3Rfd2FybigiVmVyc2lvbiBtaXNtYXRjaCAod2FudCAlZC4lZCwgZ290ICVkLiVkKVxuIiwKKwkJ CSBTVFJFQU1fVkVSU0lPTl9NQUpPUiwgU1RSRUFNX1ZFUlNJT05fTUlOT1IsCisJCQkgbWFqb3Is IG1pbm9yKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCXJldHVybiB0cnVlOworfQorCisvKioK KyAqIGNoYW1lbGl1bV9zdHJlYW1fZHVtcF9yZWFsdGltZV9hdWRpbzoKKyAqCisgKiBTdGFydHMg YXVkaW8gY2FwdHVyZS4gVGhlIGNhbGxlciBjYW4gdGhlbiBjYWxsCisgKiAjY2hhbWVsaXVtX3N0 cmVhbV9yZWNlaXZlX3JlYWx0aW1lX2F1ZGlvIHRvIHJlY2VpdmUgYXVkaW8gcGFnZXMuCisgKi8K K2Jvb2wgY2hhbWVsaXVtX3N0cmVhbV9kdW1wX3JlYWx0aW1lX2F1ZGlvKHN0cnVjdCBjaGFtZWxp dW1fc3RyZWFtICpjbGllbnQsCisJCQkJCSAgZW51bSBjaGFtZWxpdW1fc3RyZWFtX3JlYWx0aW1l X21vZGUgbW9kZSkKK3sKKwljaGFyIHJlcVsxXTsKKworCWlndF9kZWJ1ZygiU3RhcnRpbmcgcmVh bC10aW1lIGF1ZGlvIGNhcHR1cmVcbiIpOworCisJcmVxWzBdID0gbW9kZTsKKwlyZXR1cm4gY2hh bWVsaXVtX3N0cmVhbV9jYWxsKGNsaWVudCwgU1RSRUFNX01FU1NBR0VfRFVNUF9SRUFMVElNRV9B VURJTywKKwkJCQkgICAgIHJlcSwgc2l6ZW9mKHJlcSksIE5VTEwsIDApOworfQorCisvKioKKyAq IGNoYW1lbGl1bV9zdHJlYW1fcmVjZWl2ZV9yZWFsdGltZV9hdWRpbzoKKyAqIEBwYWdlX2NvdW50 OiBpZiBub24tTlVMTCwgd2lsbCBiZSBzZXQgdG8gdGhlIGR1bXBlZCBwYWdlIG51bWJlcgorICog QGJ1ZjogbXVzdCBlaXRoZXIgcG9pbnQgdG8gYSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgbWVtb3J5 IHJlZ2lvbiBvciBOVUxMCisgKiBAYnVmX2xlbjogbnVtYmVyIG9mIGVsZW1lbnRzIG9mICpAYnVm LCBmb3IgemVybyBpZiBAYnVmIGlzIE5VTEwKKyAqCisgKiBSZWNlaXZlcyBvbmUgYXVkaW8gcGFn ZSBmcm9tIHRoZSBzdHJlYW1pbmcgc2VydmVyLgorICoKKyAqIEluICJiZXN0IGVmZm9ydCIgbW9k ZSwgc29tZSBwYWdlcyBjYW4gYmUgZHJvcHBlZC4gVGhpcyBjYW4gYmUgZGV0ZWN0ZWQgdmlhCisg KiB0aGUgcGFnZSBjb3VudC4KKyAqCisgKiBidWZfbGVuIHdpbGwgYmUgc2V0IHRvIHRoZSBzaXpl IG9mIHRoZSBwYWdlLiBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvcgorICogY2FsbGluZyBm cmVlKDMpIG9uICpidWYuCisgKi8KK2Jvb2wgY2hhbWVsaXVtX3N0cmVhbV9yZWNlaXZlX3JlYWx0 aW1lX2F1ZGlvKHN0cnVjdCBjaGFtZWxpdW1fc3RyZWFtICpjbGllbnQsCisJCQkJCSAgICAgc2l6 ZV90ICpwYWdlX2NvdW50LAorCQkJCQkgICAgIGludDMyX3QgKipidWYsIHNpemVfdCAqYnVmX2xl bikKK3sKKwllbnVtIHN0cmVhbV9tZXNzYWdlX2tpbmQga2luZDsKKwllbnVtIHN0cmVhbV9tZXNz YWdlX3R5cGUgdHlwZTsKKwllbnVtIHN0cmVhbV9lcnJvciBlcnI7CisJc2l6ZV90IGJvZHlfbGVu OworCWNoYXIgcGFnZV9jb3VudF9idWZbNF07CisJaW50MzJfdCAqcHRyOworCisJd2hpbGUgKHRy dWUpIHsKKwkJaWYgKCFjaGFtZWxpdW1fc3RyZWFtX3JlYWRfaGVhZGVyKGNsaWVudCwgJmtpbmQs ICZ0eXBlLAorCQkJCQkJICAmZXJyLCAmYm9keV9sZW4pKQorCQkJcmV0dXJuIGZhbHNlOworCisJ CWlmIChraW5kICE9IFNUUkVBTV9NRVNTQUdFX0RBVEEpIHsKKwkJCWlndF93YXJuKCJFeHBlY3Rl ZCBhIGRhdGEgbWVzc2FnZSwgZ290IGtpbmQgJWRcbiIsIGtpbmQpOworCQkJcmV0dXJuIGZhbHNl OworCQl9CisJCWlmICh0eXBlICE9IFNUUkVBTV9NRVNTQUdFX0RVTVBfUkVBTFRJTUVfQVVESU8p IHsKKwkJCWlndF93YXJuKCJFeHBlY3RlZCByZWFsLXRpbWUgYXVkaW8gZHVtcCBtZXNzYWdlLCAi CisJCQkJICJnb3QgdHlwZSAlZFxuIiwgdHlwZSk7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKwor CQlpZiAoZXJyID09IFNUUkVBTV9FUlJPUl9OT05FKQorCQkJYnJlYWs7CisJCWVsc2UgaWYgKGVy ciAhPSBTVFJFQU1fRVJST1JfQVVESU9fTUVNX09WRVJGTE9XX0RST1ApIHsKKwkJCWlndF93YXJu KCJSZWNlaXZlZCBlcnJvcjogJXMgKCVkKVxuIiwKKwkJCQkgc3RyZWFtX2Vycm9yX3N0cihlcnIp LCBlcnIpOworCQkJcmV0dXJuIGZhbHNlOworCQl9CisKKwkJaWd0X2RlYnVnKCJEcm9wcGVkIGFu IGF1ZGlvIHBhZ2UgYmVjYXVzZSBvZiBhbiBvdmVyZmxvd1xuIik7CisJCWlndF9hc3NlcnQoYm9k eV9sZW4gPT0gMCk7CisJfQorCisJaWd0X2Fzc2VydChib2R5X2xlbiA+PSBzaXplb2YocGFnZV9j b3VudF9idWYpKTsKKworCWlmICghcmVhZF93aG9sZShjbGllbnQtPmZkLCBwYWdlX2NvdW50X2J1 Ziwgc2l6ZW9mKHBhZ2VfY291bnRfYnVmKSkpCisJCXJldHVybiBmYWxzZTsKKwlpZiAocGFnZV9j b3VudCkKKwkJKnBhZ2VfY291bnQgPSBudG9obCgqKHVpbnQzMl90ICopICZwYWdlX2NvdW50X2J1 ZlswXSk7CisJYm9keV9sZW4gLT0gc2l6ZW9mKHBhZ2VfY291bnRfYnVmKTsKKworCWlndF9hc3Nl cnQoYm9keV9sZW4gJSBzaXplb2YoaW50MzJfdCkgPT0gMCk7CisJaWYgKCpidWZfbGVuICogc2l6 ZW9mKGludDMyX3QpICE9IGJvZHlfbGVuKSB7CisJCXB0ciA9IHJlYWxsb2MoKmJ1ZiwgYm9keV9s ZW4pOworCQlpZiAoIXB0cikgeworCQkJaWd0X3dhcm4oInJlYWxsb2MgZmFpbGVkOiAlc1xuIiwg c3RyZXJyb3IoZXJybm8pKTsKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCQkqYnVmID0gcHRyOwor CQkqYnVmX2xlbiA9IGJvZHlfbGVuIC8gc2l6ZW9mKGludDMyX3QpOworCX0KKworCXJldHVybiBy ZWFkX3dob2xlKGNsaWVudC0+ZmQsICpidWYsIGJvZHlfbGVuKTsKK30KKworLyoqCisgKiBjaGFt ZWxpdW1fc3RyZWFtX3N0b3BfcmVhbHRpbWVfYXVkaW86CisgKgorICogU3RvcHMgcmVhbC10aW1l IGF1ZGlvIGNhcHR1cmUuIFRoaXMgYWxzbyBkcm9wcyBhbnkgYnVmZmVyZWQgYXVkaW8gcGFnZXMu CisgKiBUaGUgY2FsbGVyIHNob3VsZG4ndCBjYWxsICNjaGFtZWxpdW1fc3RyZWFtX3JlY2VpdmVf cmVhbHRpbWVfYXVkaW8gYWZ0ZXIKKyAqIHN0b3BwaW5nIGF1ZGlvIGNhcHR1cmUuCisgKi8KK2Jv b2wgY2hhbWVsaXVtX3N0cmVhbV9zdG9wX3JlYWx0aW1lX2F1ZGlvKHN0cnVjdCBjaGFtZWxpdW1f c3RyZWFtICpjbGllbnQpCit7CisJZW51bSBzdHJlYW1fbWVzc2FnZV9raW5kIGtpbmQ7CisJZW51 bSBzdHJlYW1fbWVzc2FnZV90eXBlIHR5cGU7CisJZW51bSBzdHJlYW1fZXJyb3IgZXJyOworCXNp emVfdCBsZW47CisKKwlpZ3RfZGVidWcoIlN0b3BwaW5nIHJlYWwtdGltZSBhdWRpbyBjYXB0dXJl XG4iKTsKKworCWlmICghY2hhbWVsaXVtX3N0cmVhbV93cml0ZV9yZXF1ZXN0KGNsaWVudCwKKwkJ CQkJICAgIFNUUkVBTV9NRVNTQUdFX1NUT1BfRFVNUF9BVURJTywKKwkJCQkJICAgIE5VTEwsIDAp KQorCQlyZXR1cm4gZmFsc2U7CisKKwl3aGlsZSAodHJ1ZSkgeworCQlpZiAoIWNoYW1lbGl1bV9z dHJlYW1fcmVhZF9oZWFkZXIoY2xpZW50LCAma2luZCwgJnR5cGUsCisJCQkJCQkgICZlcnIsICZs ZW4pKQorCQkJcmV0dXJuIGZhbHNlOworCisJCWlmIChraW5kID09IFNUUkVBTV9NRVNTQUdFX1JF U1BPTlNFKQorCQkJYnJlYWs7CisKKwkJaWYgKCFyZWFkX2FuZF9kaXNjYXJkKGNsaWVudC0+ZmQs IGxlbikpCisJCQlyZXR1cm4gZmFsc2U7CisJfQorCisJaWYgKHR5cGUgIT0gU1RSRUFNX01FU1NB R0VfU1RPUF9EVU1QX0FVRElPKSB7CisJCWlndF93YXJuKCJVbmV4cGVjdGVkIHJlc3BvbnNlIHR5 cGUgJWRcbiIsIHR5cGUpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCWlmIChlcnIgIT0gU1RSRUFN X0VSUk9SX05PTkUpIHsKKwkJaWd0X3dhcm4oIlJlY2VpdmVkIGVycm9yOiAlcyAoJWQpXG4iLAor CQkJIHN0cmVhbV9lcnJvcl9zdHIoZXJyKSwgZXJyKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKwlp ZiAobGVuICE9IDApIHsKKwkJaWd0X3dhcm4oIkV4cGVjdGVkIGFuIGVtcHR5IHJlc3BvbnNlLCBn b3QgJXp1IGJ5dGVzXG4iLCBsZW4pOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJcmV0dXJuIHRy dWU7Cit9CisKKy8qKgorICogY2hhbWVsaXVtX3N0cmVhbV9hdWRpb19mb3JtYXQ6CisgKgorICog R2V0cyB0aGUgZm9ybWF0IHVzZWQgZm9yIGF1ZGlvIHBhZ2VzLgorICoKKyAqIERhdGEgd2lsbCBh bHdheXMgYmUgY2FwdHVyZWQgaW4gcmF3IHBhZ2VzIG9mIFMzMl9MRSBlbGVtZW50cy4gVGhpcyBm dW5jdGlvbgorICogZXhwb3NlcyB0aGUgc2FtcGxpbmcgcmF0ZSBhbmQgdGhlIG51bWJlciBvZiBj aGFubmVscy4KKyAqLwordm9pZCBjaGFtZWxpdW1fc3RyZWFtX2F1ZGlvX2Zvcm1hdChzdHJ1Y3Qg Y2hhbWVsaXVtX3N0cmVhbSAqc3RyZWFtLAorCQkJCSAgIGludCAqcmF0ZSwgaW50ICpjaGFubmVs cykKK3sKKwkvKiBUT0RPOiB0aGUgQ2hhbWVsaXVtIHN0cmVhbWluZyBzZXJ2ZXIgZG9lc24ndCBl eHBvc2UgdGhvc2UgeWV0LgorCSAqIEp1c3QgaGFyZGNvZGUgdGhlIHZhbHVlcyBmb3Igbm93LiAq LworCSpyYXRlID0gNDgwMDA7CisJKmNoYW5uZWxzID0gODsKK30KKworLyoqCisgKiBjaGFtZWxp dW1fc3RyZWFtX2luaXQ6CisgKgorICogQ29ubmVjdHMgdG8gdGhlIENoYW1lbGl1bSBzdHJlYW1p bmcgc2VydmVyLgorICovCitzdHJ1Y3QgY2hhbWVsaXVtX3N0cmVhbSAqY2hhbWVsaXVtX3N0cmVh bV9pbml0KHZvaWQpCit7CisJc3RydWN0IGNoYW1lbGl1bV9zdHJlYW0gKmNsaWVudDsKKworCWNs aWVudCA9IGNhbGxvYygxLCBzaXplb2YoKmNsaWVudCkpOworCisJaWYgKCFjaGFtZWxpdW1fc3Ry ZWFtX3JlYWRfY29uZmlnKGNsaWVudCkpCisJCWdvdG8gZXJyb3JfY2xpZW50OworCWlmICghY2hh bWVsaXVtX3N0cmVhbV9jb25uZWN0KGNsaWVudCkpCisJCWdvdG8gZXJyb3JfY2xpZW50OworCWlm ICghY2hhbWVsaXVtX3N0cmVhbV9jaGVja192ZXJzaW9uKGNsaWVudCkpCisJCWdvdG8gZXJyb3Jf ZmQ7CisKKwlyZXR1cm4gY2xpZW50OworCitlcnJvcl9mZDoKKwljbG9zZShjbGllbnQtPmZkKTsK K2Vycm9yX2NsaWVudDoKKwlmcmVlKGNsaWVudCk7CisJcmV0dXJuIE5VTEw7Cit9CisKK3ZvaWQg Y2hhbWVsaXVtX3N0cmVhbV9kZWluaXQoc3RydWN0IGNoYW1lbGl1bV9zdHJlYW0gKmNsaWVudCkK K3sKKwlpZiAoY2xvc2UoY2xpZW50LT5mZCkgIT0gMCkKKwkJaWd0X3dhcm4oImNsb3NlIGZhaWxl ZDogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7CisJZnJlZShjbGllbnQpOworfQpkaWZmIC0tZ2l0 IGEvbGliL2lndF9jaGFtZWxpdW1fc3RyZWFtLmggYi9saWIvaWd0X2NoYW1lbGl1bV9zdHJlYW0u aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uZGU0ZTk5MzEKLS0tIC9kZXYv bnVsbAorKysgYi9saWIvaWd0X2NoYW1lbGl1bV9zdHJlYW0uaApAQCAtMCwwICsxLDUyIEBACisv KgorICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNz aW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRh aW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50 YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJl IHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRo ZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRl LCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5k IHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQg dG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRo ZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNs dWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNv cGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAq IFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFO WSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVE IFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFM TAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkg Q0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJ T04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQg T0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVS IERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICogQXV0aG9yczogU2ltb24gU2Vy IDxzaW1vbi5zZXJAaW50ZWwuY29tPgorICovCisKKyNpZm5kZWYgSUdUX0NIQU1FTElVTV9TVFJF QU1fSAorI2RlZmluZSBJR1RfQ0hBTUVMSVVNX1NUUkVBTV9ICisKKyNpbmNsdWRlICJjb25maWcu aCIKKworZW51bSBjaGFtZWxpdW1fc3RyZWFtX3JlYWx0aW1lX21vZGUgeworCUNIQU1FTElVTV9T VFJFQU1fUkVBTFRJTUVfTk9ORSA9IDAsCisJLyogc3RvcCBkdW1waW5nIHdoZW4gb3ZlcmZsb3cg Ki8KKwlDSEFNRUxJVU1fU1RSRUFNX1JFQUxUSU1FX1NUT1BfV0hFTl9PVkVSRkxPVyA9IDEsCisJ LyogZHJvcCBkYXRhIG9uIG92ZXJmbG93ICovCisJQ0hBTUVMSVVNX1NUUkVBTV9SRUFMVElNRV9C RVNUX0VGRk9SVCA9IDIsCit9OworCitzdHJ1Y3QgY2hhbWVsaXVtX3N0cmVhbTsKKworc3RydWN0 IGNoYW1lbGl1bV9zdHJlYW0gKmNoYW1lbGl1bV9zdHJlYW1faW5pdCh2b2lkKTsKK3ZvaWQgY2hh bWVsaXVtX3N0cmVhbV9kZWluaXQoc3RydWN0IGNoYW1lbGl1bV9zdHJlYW0gKmNsaWVudCk7Citi b29sIGNoYW1lbGl1bV9zdHJlYW1fZHVtcF9yZWFsdGltZV9hdWRpbyhzdHJ1Y3QgY2hhbWVsaXVt X3N0cmVhbSAqY2xpZW50LAorCQkJCQkgIGVudW0gY2hhbWVsaXVtX3N0cmVhbV9yZWFsdGltZV9t b2RlIG1vZGUpOwordm9pZCBjaGFtZWxpdW1fc3RyZWFtX2F1ZGlvX2Zvcm1hdChzdHJ1Y3QgY2hh bWVsaXVtX3N0cmVhbSAqc3RyZWFtLAorCQkJCSAgIGludCAqcmF0ZSwgaW50ICpjaGFubmVscyk7 Citib29sIGNoYW1lbGl1bV9zdHJlYW1fcmVjZWl2ZV9yZWFsdGltZV9hdWRpbyhzdHJ1Y3QgY2hh bWVsaXVtX3N0cmVhbSAqY2xpZW50LAorCQkJCQkgICAgIHNpemVfdCAqcGFnZV9jb3VudCwKKwkJ CQkJICAgICBpbnQzMl90ICoqYnVmLCBzaXplX3QgKmJ1Zl9sZW4pOworYm9vbCBjaGFtZWxpdW1f c3RyZWFtX3N0b3BfcmVhbHRpbWVfYXVkaW8oc3RydWN0IGNoYW1lbGl1bV9zdHJlYW0gKmNsaWVu dCk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbGliL21lc29uLmJ1aWxkIGIvbGliL21lc29uLmJ1 aWxkCmluZGV4IGE4NDYyOTMzLi5lZWFkMGFmYiAxMDA2NDQKLS0tIGEvbGliL21lc29uLmJ1aWxk CisrKyBiL2xpYi9tZXNvbi5idWlsZApAQCAtOTIsNyArOTIsNyBAQCBpZiB2YWxncmluZC5mb3Vu ZCgpCiBlbmRpZgogCiBpZiBnc2wuZm91bmQoKQotCWxpYl9kZXBzICs9IFsgZ3NsIF0KKwlsaWJf ZGVwcyArPSBnc2wKIAlsaWJfc291cmNlcyArPSBbICdpZ3RfZnJhbWUuYycsICdpZ3RfYXVkaW8u YycgXQogZW5kaWYKIApAQCAtMTAxLDkgKzEwMSwxMCBAQCBpZiBhbHNhLmZvdW5kKCkKIAlsaWJf c291cmNlcyArPSAnaWd0X2Fsc2EuYycKIGVuZGlmCiAKLWlmIGNoYW1lbGl1bS5mb3VuZCgpCitp ZiBjaGFtZWxpdW1fZm91bmQKIAlsaWJfZGVwcyArPSBjaGFtZWxpdW0KIAlsaWJfc291cmNlcyAr PSAnaWd0X2NoYW1lbGl1bS5jJworCWxpYl9zb3VyY2VzICs9ICdpZ3RfY2hhbWVsaXVtX3N0cmVh bS5jJwogZW5kaWYKIAogc3JjZGlyID0gam9pbl9wYXRocyhtZXNvbi5zb3VyY2Vfcm9vdCgpLCAn dGVzdHMnKQpkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAppbmRleCA1NTc0 MDBhNS4uYmU2ZGZmOWQgMTAwNjQ0Ci0tLSBhL21lc29uLmJ1aWxkCisrKyBiL21lc29uLmJ1aWxk CkBAIC02NCw4ICs2NCw2IEBAIF9idWlsZF9vdmVybGF5ID0gZmFsc2UKIF9vdmVybGF5X3JlcXVp cmVkID0gZmFsc2UKIF9idWlsZF9tYW4gPSBmYWxzZQogX21hbl9yZXF1aXJlZCA9IGZhbHNlCi1f YnVpbGRfYXVkaW8gPSBmYWxzZQotX2F1ZGlvX3JlcXVpcmVkID0gZmFsc2UKIF9idWlsZF9jaGFt ZWxpdW0gPSBmYWxzZQogX2NoYW1lbGl1bV9yZXF1aXJlZCA9IGZhbHNlCiBfYnVpbGRfZG9jcyA9 IGZhbHNlCkBAIC03OSw3ICs3Nyw2IEBAIGJ1aWxkX292ZXJsYXkgPSBnZXRfb3B0aW9uKCdidWls ZF9vdmVybGF5JykKIG92ZXJsYXlfYmFja2VuZHMgPSBnZXRfb3B0aW9uKCdvdmVybGF5X2JhY2tl bmRzJykKIGJ1aWxkX21hbiA9IGdldF9vcHRpb24oJ2J1aWxkX21hbicpCiB3aXRoX3ZhbGdyaW5k ID0gZ2V0X29wdGlvbignd2l0aF92YWxncmluZCcpCi1idWlsZF9hdWRpbyA9IGdldF9vcHRpb24o J2J1aWxkX2F1ZGlvJykKIGJ1aWxkX2NoYW1lbGl1bSA9IGdldF9vcHRpb24oJ2J1aWxkX2NoYW1l bGl1bScpCiBidWlsZF9kb2NzID0gZ2V0X29wdGlvbignYnVpbGRfZG9jcycpCiBidWlsZF90ZXN0 cyA9IGdldF9vcHRpb24oJ2J1aWxkX3Rlc3RzJykKQEAgLTkxLDggKzg4LDYgQEAgX2J1aWxkX292 ZXJsYXkgPSBidWlsZF9vdmVybGF5ICE9ICdmYWxzZScKIF9vdmVybGF5X3JlcXVpcmVkID0gYnVp bGRfb3ZlcmxheSA9PSAndHJ1ZScKIF9idWlsZF9tYW4gPSBidWlsZF9tYW4gIT0gJ2ZhbHNlJwog X21hbl9yZXF1aXJlZCA9IGJ1aWxkX21hbiA9PSAndHJ1ZScKLV9idWlsZF9hdWRpbyA9IGJ1aWxk X2F1ZGlvICE9ICdmYWxzZScKLV9hdWRpb19yZXF1aXJlZCA9IGJ1aWxkX2F1ZGlvID09ICd0cnVl JwogX2J1aWxkX2NoYW1lbGl1bSA9IGJ1aWxkX2NoYW1lbGl1bSAhPSAnZmFsc2UnCiBfY2hhbWVs aXVtX3JlcXVpcmVkID0gYnVpbGRfY2hhbWVsaXVtID09ICd0cnVlJwogX2J1aWxkX2RvY3MgPSBi dWlsZF9kb2NzICE9ICdmYWxzZScKQEAgLTE2NiwyNiArMTYxLDYgQEAgY2Fpcm8gPSBkZXBlbmRl bmN5KCdjYWlybycsIHZlcnNpb24gOiAnPjEuMTIuMCcsIHJlcXVpcmVkIDogdHJ1ZSkKIGxpYnVk ZXYgPSBkZXBlbmRlbmN5KCdsaWJ1ZGV2JywgcmVxdWlyZWQgOiB0cnVlKQogZ2xpYiA9IGRlcGVu ZGVuY3koJ2dsaWItMi4wJywgcmVxdWlyZWQgOiB0cnVlKQogCi1nc2wgPSBudWxsX2RlcAotYWxz YSA9IG51bGxfZGVwCi1pZiBfYnVpbGRfYXVkaW8gb3IgX2J1aWxkX2NoYW1lbGl1bQotCWdzbCA9 IGRlcGVuZGVuY3koJ2dzbCcsIHJlcXVpcmVkIDogX2F1ZGlvX3JlcXVpcmVkIG9yIF9jaGFtZWxp dW1fcmVxdWlyZWQpCi1lbmRpZgotaWYgX2J1aWxkX2F1ZGlvCi0JYWxzYSA9IGRlcGVuZGVuY3ko J2Fsc2EnLCByZXF1aXJlZCA6IF9hdWRpb19yZXF1aXJlZCkKLWVuZGlmCi0KLWF1ZGlvaW5mbyA9 ICdObycKLWlmIF9idWlsZF9hdWRpbyBhbmQgYWxzYS5mb3VuZCgpIGFuZCBnc2wuZm91bmQoKQot CWF1ZGlvaW5mbyA9ICdZZXMnCi1lbHNlCi0JaWYgX2F1ZGlvX3JlcXVpcmVkCi0JCWVycm9yKCdD YW5ub3QgYnVpbGQgYXVkaW8gdGVzdCBkdWUgdG8gbWlzc2luZyBkZXBlbmRlbmNpZXMnKQotCWVu ZGlmCi0JX2J1aWxkX2F1ZGlvID0gZmFsc2UKLWVuZGlmCi1idWlsZF9pbmZvICs9ICdCdWlsZCBh dWRpbyB0ZXN0OiAnICsgYXVkaW9pbmZvCi0KIHhtbHJwYyA9IGRlcGVuZGVuY3koJ3htbHJwYycs IHJlcXVpcmVkIDogZmFsc2UpCiB4bWxycGNfdXRpbCA9IGRlcGVuZGVuY3koJ3htbHJwY191dGls JywgcmVxdWlyZWQgOiBmYWxzZSkKIHhtbHJwY19jbGllbnQgPSBkZXBlbmRlbmN5KCd4bWxycGNf Y2xpZW50JywgcmVxdWlyZWQgOiBmYWxzZSkKQEAgLTE5NywyMSArMTcyLDMyIEBAIGlmIG5vdCB4 bWxycGMuZm91bmQoKSBhbmQgeG1scnBjX2NtZC5mb3VuZCgpCiAKIAlpZiBsaWJzX2NtZC5yZXR1 cm5jb2RlKCkgPT0gMCBhbmQgY2ZsYWdzX2NtZC5yZXR1cm5jb2RlKCkgPT0gMAogCQl4bWxycGMg PSBkZWNsYXJlX2RlcGVuZGVuY3koY29tcGlsZV9hcmdzOiBjZmxhZ3NfY21kLnN0ZG91dCgpLnN0 cmlwKCkuc3BsaXQoKSwKLQkJCQkJICAgbGlua19hcmdzIDogbGlic19jbWQuc3Rkb3V0KCkuc3Ry aXAoKS5zcGxpdCgpKQorCQkJCQkgICAgbGlua19hcmdzIDogbGlic19jbWQuc3Rkb3V0KCkuc3Ry aXAoKS5zcGxpdCgpKQogCQl4bWxycGNfdXRpbCA9IGRlY2xhcmVfZGVwZW5kZW5jeSgpCiAJCXht bHJwY19jbGllbnQgPSBkZWNsYXJlX2RlcGVuZGVuY3koKQogCWVuZGlmCiBlbmRpZgogCitnc2wg PSBudWxsX2RlcAorYWxzYSA9IG51bGxfZGVwCiBjaGFtZWxpdW0gPSBudWxsX2RlcAorY2hhbWVs aXVtX2ZvdW5kID0gZmFsc2UgIyBUT0RPOiB1c2UgYSBkaXNhYmxlciBvYmplY3QgaW5zdGVhZAog Y2hhbWVsaXVtaW5mbyA9ICdObycKLWlmIF9idWlsZF9jaGFtZWxpdW0gYW5kIGdzbC5mb3VuZCgp IGFuZCB4bWxycGMuZm91bmQoKSBhbmQgeG1scnBjX3V0aWwuZm91bmQoKSBhbmQgeG1scnBjX2Ns aWVudC5mb3VuZCgpCi0JY2hhbWVsaXVtID0gZGVjbGFyZV9kZXBlbmRlbmN5KGRlcGVuZGVuY2ll cyA6IFsgeG1scnBjLAotCQkJCQkJCXhtbHJwY191dGlsLCB4bWxycGNfY2xpZW50XSkKLQljb25m aWcuc2V0KCdIQVZFX0NIQU1FTElVTScsIDEpCi0JY2hhbWVsaXVtaW5mbyA9ICdZZXMnCi1lbGlm IF9jaGFtZWxpdW1fcmVxdWlyZWQKLQllcnJvcignQ2Fubm90IGJ1aWxkIGNoYW1lbGl1bSB0ZXN0 IGR1ZSB0byBtaXNzaW5nIGRlcGVuZGVuY2llcycpCitpZiBfYnVpbGRfY2hhbWVsaXVtCisJZ3Ns ID0gZGVwZW5kZW5jeSgnZ3NsJywgcmVxdWlyZWQgOiBfY2hhbWVsaXVtX3JlcXVpcmVkKQorCWFs c2EgPSBkZXBlbmRlbmN5KCdhbHNhJywgcmVxdWlyZWQgOiBfY2hhbWVsaXVtX3JlcXVpcmVkKQor CWNoYW1lbGl1bSA9IGRlY2xhcmVfZGVwZW5kZW5jeShkZXBlbmRlbmNpZXMgOiBbCisJCXhtbHJw YywKKwkJeG1scnBjX3V0aWwsCisJCXhtbHJwY19jbGllbnQsCisJCWdzbCwKKwkJYWxzYSwKKwld LCByZXF1aXJlZCA6IF9jaGFtZWxpdW1fcmVxdWlyZWQpCisJaWYgeG1scnBjLmZvdW5kKCkgYW5k IHhtbHJwY191dGlsLmZvdW5kKCkgYW5kIHhtbHJwY19jbGllbnQuZm91bmQoKSBhbmQgZ3NsLmZv dW5kKCkgYW5kIGFsc2EuZm91bmQoKQorCQljb25maWcuc2V0KCdIQVZFX0NIQU1FTElVTScsIDEp CisJCWNoYW1lbGl1bWluZm8gPSAnWWVzJworCQljaGFtZWxpdW1fZm91bmQgPSB0cnVlCisJZW5k aWYKIGVuZGlmCiBidWlsZF9pbmZvICs9ICdCdWlsZCBDaGFtZWxpdW0gdGVzdDogJyArIGNoYW1l bGl1bWluZm8KIApkaWZmIC0tZ2l0IGEvbWVzb25fb3B0aW9ucy50eHQgYi9tZXNvbl9vcHRpb25z LnR4dAppbmRleCAwY2QzYjM1MC4uODg4ZWZlNTYgMTAwNjQ0Ci0tLSBhL21lc29uX29wdGlvbnMu dHh0CisrKyBiL21lc29uX29wdGlvbnMudHh0CkBAIC0xMCwxMiArMTAsNiBAQCBvcHRpb24oJ292 ZXJsYXlfYmFja2VuZHMnLAogICAgICAgIGNob2ljZXMgOiBbICdhdXRvJywgJ3gnLCAneHYnIF0s CiAgICAgICAgZGVzY3JpcHRpb24gOiAnT3ZlcmxheSBiYWNrZW5kcyB0byBlbmFibGUnKQogCi1v cHRpb24oJ2J1aWxkX2F1ZGlvJywKLSAgICAgICB0eXBlIDogJ2NvbWJvJywKLSAgICAgICB2YWx1 ZSA6ICdhdXRvJywKLSAgICAgICBjaG9pY2VzIDogWydhdXRvJywgJ3RydWUnLCAnZmFsc2UnXSwK LSAgICAgICBkZXNjcmlwdGlvbiA6ICdCdWlsZCBhdWRpbyB0ZXN0JykKLQogb3B0aW9uKCdidWls ZF9jaGFtZWxpdW0nLAogICAgICAgIHR5cGUgOiAnY29tYm8nLAogICAgICAgIHZhbHVlIDogJ2F1 dG8nLApkaWZmIC0tZ2l0IGEvdGVzdHMvYXVkaW8uYyBiL3Rlc3RzL2F1ZGlvLmMKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2MDg3NmEzLi4wMDAwMDAwMAotLS0gYS90ZXN0cy9hdWRp by5jCisrKyAvZGV2L251bGwKQEAgLTEsMTkzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgwqkg MjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgotICoKLSAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50 ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCi0gKiBjb3B5IG9m IHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJT b2Z0d2FyZSIpLAotICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlv biwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgotICogdGhlIHJpZ2h0cyB0byB1c2UsIGNv cHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCi0gKiBh bmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMg dG8gd2hvbSB0aGUKLSAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0 byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0gKgotICogVGhlIGFib3ZlIGNvcHlyaWdodCBu b3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAotICog cGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFs IHBvcnRpb25zIG9mIHRoZQotICogU29mdHdhcmUuCi0gKgotICogVEhFIFNPRlRXQVJFIElTIFBS T1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IK LSAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMg T0YgTUVSQ0hBTlRBQklMSVRZLAotICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug QU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCi0gKiBUSEUgQVVUSE9SUyBP UiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBP VEhFUgotICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9S VCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKLSAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9O IFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKLSAqIElOIFRI RSBTT0ZUV0FSRS4KLSAqCi0gKiBBdXRob3JzOgotICogIFBhdWwgS29jaWFsa293c2tpIDxwYXVs LmtvY2lhbGtvd3NraUBsaW51eC5pbnRlbC5jb20+Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o IgotI2luY2x1ZGUgImlndC5oIgotCi0jZGVmaW5lIFBMQVlCQUNLX0NIQU5ORUxTCTIKLSNkZWZp bmUgUExBWUJBQ0tfRlJBTUVTCQkxMDI0Ci0KLSNkZWZpbmUgQ0FQVFVSRV9TQU1QTEVfUkFURQk0 ODAwMAotI2RlZmluZSBDQVBUVVJFX0NIQU5ORUxTCTIKLSNkZWZpbmUgQ0FQVFVSRV9ERVZJQ0Vf TkFNRQkiZGVmYXVsdCIKLSNkZWZpbmUgQ0FQVFVSRV9GUkFNRVMJCTIwNDgKLQotI2RlZmluZSBS VU5fVElNRU9VVAkJMjAwMAotCi1zdHJ1Y3QgdGVzdF9kYXRhIHsKLQlzdHJ1Y3QgYWxzYSAqYWxz YTsKLQlzdHJ1Y3QgYXVkaW9fc2lnbmFsICpzaWduYWw7Ci0KLQlpbnQgc3RyZWFrOwotfTsKLQot c3RhdGljIGludCBzYW1wbGluZ19yYXRlc1tdID0gewotCTMyMDAwLAotCTQ0MTAwLAotCTQ4MDAw LAotCTg4MjAwLAotCTk2MDAwLAotCTE3NjQwMCwKLQkxOTIwMDAsCi19OwotCi1zdGF0aWMgaW50 IHNhbXBsaW5nX3JhdGVzX2NvdW50ID0gc2l6ZW9mKHNhbXBsaW5nX3JhdGVzKSAvIHNpemVvZihp bnQpOwotCi1zdGF0aWMgaW50IHRlc3RfZnJlcXVlbmNpZXNbXSA9IHsKLQkzMDAsCi0JNjAwLAot CTEyMDAsCi0JODAwMDAsCi0JMTAwMDAsCi19OwotCi1zdGF0aWMgaW50IHRlc3RfZnJlcXVlbmNp ZXNfY291bnQgPSBzaXplb2YodGVzdF9mcmVxdWVuY2llcykgLyBzaXplb2YoaW50KTsKLQotc3Rh dGljIGludCBvdXRwdXRfY2FsbGJhY2sodm9pZCAqZGF0YSwgc2hvcnQgKmJ1ZmZlciwgaW50IGZy YW1lcykKLXsKLQlzdHJ1Y3QgdGVzdF9kYXRhICp0ZXN0X2RhdGEgPSAoc3RydWN0IHRlc3RfZGF0 YSAqKSBkYXRhOwotCi0JYXVkaW9fc2lnbmFsX2ZpbGwodGVzdF9kYXRhLT5zaWduYWwsIGJ1ZmZl ciwgZnJhbWVzKTsKLQotCXJldHVybiAwOwotfQotCi1zdGF0aWMgaW50IGlucHV0X2NhbGxiYWNr KHZvaWQgKmRhdGEsIHNob3J0ICpidWZmZXIsIGludCBmcmFtZXMpCi17Ci0Jc3RydWN0IHRlc3Rf ZGF0YSAqdGVzdF9kYXRhID0gKHN0cnVjdCB0ZXN0X2RhdGEgKikgZGF0YTsKLQlib29sIGRldGVj dDsKLQotCWRldGVjdCA9IGF1ZGlvX3NpZ25hbF9kZXRlY3QodGVzdF9kYXRhLT5zaWduYWwsIENB UFRVUkVfQ0hBTk5FTFMsCi0JCQkJICAgICBDQVBUVVJFX1NBTVBMRV9SQVRFLCBidWZmZXIsIGZy YW1lcyk7Ci0JaWYgKGRldGVjdCkKLQkJdGVzdF9kYXRhLT5zdHJlYWsrKzsKLQllbHNlCi0JCXRl c3RfZGF0YS0+c3RyZWFrID0gMDsKLQotCS8qIEEgc3RyZWFrIG9mIDMgZ2l2ZXMgY29uZmlkZW5j ZSB0aGF0IHRoZSBzaWduYWwgaXMgZ29vZC4gKi8KLQlpZiAodGVzdF9kYXRhLT5zdHJlYWsgPT0g MykKLQkJcmV0dXJuIDE7Ci0KLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIHZvaWQgdGVzdF9pbnRl Z3JpdHkoY29uc3QgY2hhciAqZGV2aWNlX25hbWUpCi17Ci0Jc3RydWN0IHRlc3RfZGF0YSBkYXRh OwotCWludCBzYW1wbGluZ19yYXRlOwotCWJvb2wgcnVuID0gZmFsc2U7Ci0JYm9vbCB0ZXN0Owot CWludCBpLCBqOwotCWludCByZXQ7Ci0KLQlkYXRhLmFsc2EgPSBhbHNhX2luaXQoKTsKLQlpZ3Rf YXNzZXJ0KGRhdGEuYWxzYSk7Ci0KLQlyZXQgPSBhbHNhX29wZW5faW5wdXQoZGF0YS5hbHNhLCBD QVBUVVJFX0RFVklDRV9OQU1FKTsKLQlpZ3RfYXNzZXJ0KHJldCA+PSAwKTsKLQotCWFsc2FfY29u ZmlndXJlX2lucHV0KGRhdGEuYWxzYSwgQ0FQVFVSRV9DSEFOTkVMUywKLQkJCSAgICAgQ0FQVFVS RV9TQU1QTEVfUkFURSk7Ci0KLQlhbHNhX3JlZ2lzdGVyX2lucHV0X2NhbGxiYWNrKGRhdGEuYWxz YSwgaW5wdXRfY2FsbGJhY2ssICZkYXRhLAotCQkJCSAgICAgQ0FQVFVSRV9GUkFNRVMpOwotCi0J Zm9yIChpID0gMDsgaSA8IHNhbXBsaW5nX3JhdGVzX2NvdW50OyBpKyspIHsKLQkJcmV0ID0gYWxz YV9vcGVuX291dHB1dChkYXRhLmFsc2EsIGRldmljZV9uYW1lKTsKLQkJaWd0X2Fzc2VydChyZXQg Pj0gMCk7Ci0KLQkJc2FtcGxpbmdfcmF0ZSA9IHNhbXBsaW5nX3JhdGVzW2ldOwotCi0JCXRlc3Qg PSBhbHNhX3Rlc3Rfb3V0cHV0X2NvbmZpZ3VyYXRpb24oZGF0YS5hbHNhLAotCQkJCQkJICAgICAg UExBWUJBQ0tfQ0hBTk5FTFMsCi0JCQkJCQkgICAgICBzYW1wbGluZ19yYXRlKTsKLQkJaWYgKCF0 ZXN0KSB7Ci0JCQlhbHNhX2Nsb3NlX291dHB1dChkYXRhLmFsc2EpOwotCQkJY29udGludWU7Ci0J CX0KLQotCQlpZ3RfZGVidWcoIlRlc3Rpbmcgd2l0aCBzYW1wbGluZyByYXRlICVkXG4iLCBzYW1w bGluZ19yYXRlKTsKLQotCQlhbHNhX2NvbmZpZ3VyZV9vdXRwdXQoZGF0YS5hbHNhLCBQTEFZQkFD S19DSEFOTkVMUywKLQkJCQkgICAgICAgc2FtcGxpbmdfcmF0ZSk7Ci0KLQkJZGF0YS5zaWduYWwg PSBhdWRpb19zaWduYWxfaW5pdChQTEFZQkFDS19DSEFOTkVMUywKLQkJCQkJCXNhbXBsaW5nX3Jh dGUpOwotCQlpZ3RfYXNzZXJ0KGRhdGEuc2lnbmFsKTsKLQotCQlmb3IgKGogPSAwOyBqIDwgdGVz dF9mcmVxdWVuY2llc19jb3VudDsgaisrKQotCQkJYXVkaW9fc2lnbmFsX2FkZF9mcmVxdWVuY3ko ZGF0YS5zaWduYWwsCi0JCQkJCQkgICB0ZXN0X2ZyZXF1ZW5jaWVzW2pdKTsKLQotCQlhdWRpb19z aWduYWxfc3ludGhlc2l6ZShkYXRhLnNpZ25hbCk7Ci0KLQkJYWxzYV9yZWdpc3Rlcl9vdXRwdXRf Y2FsbGJhY2soZGF0YS5hbHNhLCBvdXRwdXRfY2FsbGJhY2ssCi0JCQkJCSAgICAgICZkYXRhLCBQ TEFZQkFDS19GUkFNRVMpOwotCi0JCWRhdGEuc3RyZWFrID0gMDsKLQotCQlyZXQgPSBhbHNhX3J1 bihkYXRhLmFsc2EsIFJVTl9USU1FT1VUKTsKLQkJaWd0X2Fzc2VydChyZXQgPiAwKTsKLQotCQlh dWRpb19zaWduYWxfY2xlYW4oZGF0YS5zaWduYWwpOwotCQlmcmVlKGRhdGEuc2lnbmFsKTsKLQot CQlhbHNhX2Nsb3NlX291dHB1dChkYXRhLmFsc2EpOwotCi0JCXJ1biA9IHRydWU7Ci0JfQotCi0J LyogTWFrZSBzdXJlIHdlIHRlc3RlZCBhdCBsZWFzdCBvbmUgZnJlcXVlbmN5ICovCi0JaWd0X2Fz c2VydChydW4pOwotCi0JYWxzYV9jbG9zZV9pbnB1dChkYXRhLmFsc2EpOwotCWZyZWUoZGF0YS5h bHNhKTsKLX0KLQotc3RhdGljIHZvaWQgdGVzdF9zdXNwZW5kX3Jlc3VtZV9pbnRlZ3JpdHkoY29u c3QgY2hhciAqZGV2aWNlX25hbWUsCi0JCQkJCSAgZW51bSBpZ3Rfc3VzcGVuZF9zdGF0ZSBzdGF0 ZSwKLQkJCQkJICBlbnVtIGlndF9zdXNwZW5kX3Rlc3QgdGVzdCkKLXsKLQl0ZXN0X2ludGVncml0 eShkZXZpY2VfbmFtZSk7Ci0KLQlpZ3Rfc3lzdGVtX3N1c3BlbmRfYXV0b3Jlc3VtZShzdGF0ZSwg dGVzdCk7Ci0KLQl0ZXN0X2ludGVncml0eShkZXZpY2VfbmFtZSk7Ci19Ci0KLWlndF9tYWluCi17 Ci0JaWd0X3N1YnRlc3QoImhkbWktaW50ZWdyaXR5IikKLQkJdGVzdF9pbnRlZ3JpdHkoIkhETUki KTsKLQotCWlndF9zdWJ0ZXN0KCJoZG1pLWludGVncml0eS1hZnRlci1zdXNwZW5kIikKLQkJdGVz dF9zdXNwZW5kX3Jlc3VtZV9pbnRlZ3JpdHkoIkhETUkiLCBTVVNQRU5EX1NUQVRFX01FTSwKLQkJ CQkJICAgICAgU1VTUEVORF9URVNUX05PTkUpOwotCi0JaWd0X3N1YnRlc3QoImhkbWktaW50ZWdy aXR5LWFmdGVyLWhpYmVybmF0ZSIpCi0JCXRlc3Rfc3VzcGVuZF9yZXN1bWVfaW50ZWdyaXR5KCJI RE1JIiwgU1VTUEVORF9TVEFURV9ESVNLLAotCQkJCQkgICAgICBTVVNQRU5EX1RFU1RfREVWSUNF Uyk7Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9rbXNfY2hhbWVsaXVtLmMgYi90ZXN0cy9rbXNfY2hh bWVsaXVtLmMKaW5kZXggMmRjMTA0OWQuLjI5NzRmZjY5IDEwMDY0NAotLS0gYS90ZXN0cy9rbXNf Y2hhbWVsaXVtLmMKKysrIGIvdGVzdHMva21zX2NoYW1lbGl1bS5jCkBAIC00MTMsNyArNDEzLDcg QEAgdGVzdF9zdXNwZW5kX3Jlc3VtZV9lZGlkX2NoYW5nZShkYXRhX3QgKmRhdGEsIHN0cnVjdCBj aGFtZWxpdW1fcG9ydCAqcG9ydCwKIAogc3RhdGljIGlndF9vdXRwdXRfdCAqCiBwcmVwYXJlX291 dHB1dChkYXRhX3QgKmRhdGEsCi0JICAgICAgIHN0cnVjdCBjaGFtZWxpdW1fcG9ydCAqcG9ydCkK KwkgICAgICAgc3RydWN0IGNoYW1lbGl1bV9wb3J0ICpwb3J0LCBib29sIHNldF9lZGlkKQogewog CWlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsKIAlpZ3Rfb3V0cHV0X3Qg Km91dHB1dDsKQEAgLTQyOCw3ICs0MjgsOCBAQCBwcmVwYXJlX291dHB1dChkYXRhX3QgKmRhdGEs CiAJLyogVGhlIGNoYW1lbGl1bSdzIGRlZmF1bHQgRURJRCBoYXMgYSBsb3Qgb2YgcmVzb2x1dGlv bnMsIHdheSBtb3JlIHRoZW4KIAkgKiB3ZSBuZWVkIHRvIHRlc3QKIAkgKi8KLQljaGFtZWxpdW1f cG9ydF9zZXRfZWRpZChkYXRhLT5jaGFtZWxpdW0sIHBvcnQsIGRhdGEtPmVkaWRfaWQpOworCWlm IChzZXRfZWRpZCkKKwkJY2hhbWVsaXVtX3BvcnRfc2V0X2VkaWQoZGF0YS0+Y2hhbWVsaXVtLCBw b3J0LCBkYXRhLT5lZGlkX2lkKTsKIAogCWNoYW1lbGl1bV9wbHVnKGRhdGEtPmNoYW1lbGl1bSwg cG9ydCk7CiAJd2FpdF9mb3JfY29ubmVjdG9yKGRhdGEsIHBvcnQsIERSTV9NT0RFX0NPTk5FQ1RF RCk7CkBAIC02MTMsNyArNjE0LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9kaXNwbGF5X29uZV9tb2Rl KGRhdGFfdCAqZGF0YSwgc3RydWN0IGNoYW1lbGl1bV9wb3J0ICpwb3J0LAogCiAJcmVzZXRfc3Rh dGUoZGF0YSwgcG9ydCk7CiAKLQlvdXRwdXQgPSBwcmVwYXJlX291dHB1dChkYXRhLCBwb3J0KTsK KwlvdXRwdXQgPSBwcmVwYXJlX291dHB1dChkYXRhLCBwb3J0LCB0cnVlKTsKIAljb25uZWN0b3Ig PSBjaGFtZWxpdW1fcG9ydF9nZXRfY29ubmVjdG9yKGRhdGEtPmNoYW1lbGl1bSwgcG9ydCwgZmFs c2UpOwogCXByaW1hcnkgPSBpZ3Rfb3V0cHV0X2dldF9wbGFuZV90eXBlKG91dHB1dCwgRFJNX1BM QU5FX1RZUEVfUFJJTUFSWSk7CiAJaWd0X2Fzc2VydChwcmltYXJ5KTsKQEAgLTY0NCw3ICs2NDUs NyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2Rpc3BsYXlfYWxsX21vZGVzKGRhdGFfdCAqZGF0YSwgc3Ry dWN0IGNoYW1lbGl1bV9wb3J0ICpwb3J0LAogCiAJcmVzZXRfc3RhdGUoZGF0YSwgcG9ydCk7CiAK LQlvdXRwdXQgPSBwcmVwYXJlX291dHB1dChkYXRhLCBwb3J0KTsKKwlvdXRwdXQgPSBwcmVwYXJl X291dHB1dChkYXRhLCBwb3J0LCB0cnVlKTsKIAljb25uZWN0b3IgPSBjaGFtZWxpdW1fcG9ydF9n ZXRfY29ubmVjdG9yKGRhdGEtPmNoYW1lbGl1bSwgcG9ydCwgZmFsc2UpOwogCXByaW1hcnkgPSBp Z3Rfb3V0cHV0X2dldF9wbGFuZV90eXBlKG91dHB1dCwgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSk7 CiAJaWd0X2Fzc2VydChwcmltYXJ5KTsKQEAgLTY3OSw3ICs2ODAsNyBAQCB0ZXN0X2Rpc3BsYXlf ZnJhbWVfZHVtcChkYXRhX3QgKmRhdGEsIHN0cnVjdCBjaGFtZWxpdW1fcG9ydCAqcG9ydCkKIAog CXJlc2V0X3N0YXRlKGRhdGEsIHBvcnQpOwogCi0Jb3V0cHV0ID0gcHJlcGFyZV9vdXRwdXQoZGF0 YSwgcG9ydCk7CisJb3V0cHV0ID0gcHJlcGFyZV9vdXRwdXQoZGF0YSwgcG9ydCwgdHJ1ZSk7CiAJ Y29ubmVjdG9yID0gY2hhbWVsaXVtX3BvcnRfZ2V0X2Nvbm5lY3RvcihkYXRhLT5jaGFtZWxpdW0s IHBvcnQsIGZhbHNlKTsKIAlwcmltYXJ5ID0gaWd0X291dHB1dF9nZXRfcGxhbmVfdHlwZShvdXRw dXQsIERSTV9QTEFORV9UWVBFX1BSSU1BUlkpOwogCWlndF9hc3NlcnQocHJpbWFyeSk7CkBAIC03 MTAsNiArNzExLDI2NiBAQCB0ZXN0X2Rpc3BsYXlfZnJhbWVfZHVtcChkYXRhX3QgKmRhdGEsIHN0 cnVjdCBjaGFtZWxpdW1fcG9ydCAqcG9ydCkKIAlkcm1Nb2RlRnJlZUNvbm5lY3Rvcihjb25uZWN0 b3IpOwogfQogCisKKy8qIFBsYXliYWNrIHBhcmFtZXRlcnMgY29udHJvbCB0aGUgYXVkaW8gc2ln bmFsIHdlIHN5bnRoZXNpemUgYW5kIHNlbmQgKi8KKyNkZWZpbmUgUExBWUJBQ0tfQ0hBTk5FTFMg MgorI2RlZmluZSBQTEFZQkFDS19TQU1QTEVTIDEwMjQKKworLyogQ2FwdHVyZSBwYXJlbWV0ZXJz IGNvbnRyb2wgdGhlIGF1ZGlvIHNpZ25hbCB3ZSByZWNlaXZlICovCisjZGVmaW5lIENBUFRVUkVf U0FNUExFUyAyMDQ4CisKKyNkZWZpbmUgQVVESU9fRFVSQVRJT04gMjAwMCAvKiBtcyAqLworLyog QSBzdHJlYWsgb2YgMyBnaXZlcyBjb25maWRlbmNlIHRoYXQgdGhlIHNpZ25hbCBpcyBnb29kLiAq LworI2RlZmluZSBNSU5fU1RSRUFLIDMKKworLyogVE9ETzogQ2hhbWVsaXVtIG9ubHkgc3VwcG9y dHMgNDhLSHogZm9yIG5vdyAqLworc3RhdGljIGludCBzYW1wbGluZ19yYXRlc1tdID0geworLyoJ MzIwMDAsICovCisvKgk0NDEwMCwgKi8KKwk0ODAwMCwKKy8qCTg4MjAwLCAqLworLyoJOTYwMDAs ICovCisvKgkxNzY0MDAsICovCisvKgkxOTIwMDAsICovCit9OworCitzdGF0aWMgaW50IHNhbXBs aW5nX3JhdGVzX2NvdW50ID0gc2l6ZW9mKHNhbXBsaW5nX3JhdGVzKSAvIHNpemVvZihpbnQpOwor CitzdGF0aWMgaW50IHRlc3RfZnJlcXVlbmNpZXNbXSA9IHsKKwkzMDAsCisJNjAwLAorCTEyMDAs CisJODAwMDAsCisJMTAwMDAsCit9OworCitzdGF0aWMgaW50IHRlc3RfZnJlcXVlbmNpZXNfY291 bnQgPSBzaXplb2YodGVzdF9mcmVxdWVuY2llcykgLyBzaXplb2YoaW50KTsKKworc3RhdGljIGlu dAorb3V0cHV0X2NhbGxiYWNrKHZvaWQgKmRhdGEsIHNob3J0ICpidWZmZXIsIGludCBmcmFtZXMp Cit7CisJc3RydWN0IGF1ZGlvX3NpZ25hbCAqc2lnbmFsID0gKHN0cnVjdCBhdWRpb19zaWduYWwg KikgZGF0YTsKKworCWF1ZGlvX3NpZ25hbF9maWxsKHNpZ25hbCwgYnVmZmVyLCBmcmFtZXMpOwor CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBib29sCitkb190ZXN0X2Rpc3BsYXlfYXVkaW8oZGF0 YV90ICpkYXRhLCBzdHJ1Y3QgY2hhbWVsaXVtX3BvcnQgKnBvcnQsCisJCSAgICAgIHN0cnVjdCBh bHNhICphbHNhLCBpbnQgcGxheWJhY2tfY2hhbm5lbHMsCisJCSAgICAgIGludCBwbGF5YmFja19y YXRlKQoreworCWludCByZXQsIGNhcHR1cmVfcmF0ZSwgY2FwdHVyZV9jaGFubmVscywgbXNlYzsK KwlzdHJ1Y3QgY2hhbWVsaXVtX2F1ZGlvX2ZpbGUgKmF1ZGlvX2ZpbGU7CisJc3RydWN0IGNoYW1l bGl1bV9zdHJlYW0gKnN0cmVhbTsKKwllbnVtIGNoYW1lbGl1bV9zdHJlYW1fcmVhbHRpbWVfbW9k ZSBzdHJlYW1fbW9kZTsKKwlzdHJ1Y3QgYXVkaW9fc2lnbmFsICpzaWduYWw7CisJaW50MzJfdCAq cmVjdiwgKmJ1ZjsKKwlkb3VibGUgKmNoYW5uZWw7CisJc2l6ZV90IGksIHN0cmVhaywgcGFnZV9j b3VudDsKKwlzaXplX3QgcmVjdl9sZW4sIGJ1Zl9sZW4sIGJ1Zl9jYXAsIGJ1Zl9zaXplLCBjaGFu bmVsX2xlbjsKKwlib29sIG9rOworCWNoYXIgZHVtcF9zdWZmaXhbNjRdOworCWNoYXIgKmR1bXBf cGF0aCA9IE5VTEw7CisJaW50IGR1bXBfZmQgPSAtMTsKKworCWlmICghYWxzYV90ZXN0X291dHB1 dF9jb25maWd1cmF0aW9uKGFsc2EsIHBsYXliYWNrX2NoYW5uZWxzLAorCQkJCQkgICAgcGxheWJh Y2tfcmF0ZSkpCisJCXJldHVybiBmYWxzZTsKKworCWlndF9kZWJ1ZygiVGVzdGluZyB3aXRoIHBs YXliYWNrIHNhbXBsaW5nIHJhdGUgJWRcbiIsIHBsYXliYWNrX3JhdGUpOworCWFsc2FfY29uZmln dXJlX291dHB1dChhbHNhLCBwbGF5YmFja19jaGFubmVscywgcGxheWJhY2tfcmF0ZSk7CisKKwlj aGFtZWxpdW1fc3RhcnRfY2FwdHVyaW5nX2F1ZGlvKGRhdGEtPmNoYW1lbGl1bSwgcG9ydCwgZmFs c2UpOworCisJc3RyZWFtID0gY2hhbWVsaXVtX3N0cmVhbV9pbml0KCk7CisJaWd0X2Fzc2VydChz dHJlYW0pOworCisJc3RyZWFtX21vZGUgPSBDSEFNRUxJVU1fU1RSRUFNX1JFQUxUSU1FX1NUT1Bf V0hFTl9PVkVSRkxPVzsKKwlvayA9IGNoYW1lbGl1bV9zdHJlYW1fZHVtcF9yZWFsdGltZV9hdWRp byhzdHJlYW0sIHN0cmVhbV9tb2RlKTsKKwlpZ3RfYXNzZXJ0KG9rKTsKKworCWNoYW1lbGl1bV9z dHJlYW1fYXVkaW9fZm9ybWF0KHN0cmVhbSwgJmNhcHR1cmVfcmF0ZSwgJmNhcHR1cmVfY2hhbm5l bHMpOworCisJaWYgKGlndF9mcmFtZV9kdW1wX2lzX2VuYWJsZWQoKSkgeworCQlzbnByaW50Zihk dW1wX3N1ZmZpeCwgc2l6ZW9mKGR1bXBfc3VmZml4KSwgImNhcHR1cmUtJWRjaC0lZCIsCisJCQkg cGxheWJhY2tfY2hhbm5lbHMsIHBsYXliYWNrX3JhdGUpOworCisJCWR1bXBfZmQgPSBhdWRpb19j cmVhdGVfd2F2X2ZpbGVfczMyX2xlKGR1bXBfc3VmZml4LAorCQkJCQkJICAgICAgIGNhcHR1cmVf cmF0ZSwKKwkJCQkJCSAgICAgICBjYXB0dXJlX2NoYW5uZWxzLAorCQkJCQkJICAgICAgICZkdW1w X3BhdGgpOworCQlpZ3RfYXNzZXJ0KGR1bXBfZmQgPj0gMCk7CisJfQorCisJc2lnbmFsID0gYXVk aW9fc2lnbmFsX2luaXQocGxheWJhY2tfY2hhbm5lbHMsIHBsYXliYWNrX3JhdGUpOworCWlndF9h c3NlcnQoc2lnbmFsKTsKKworCWZvciAoaSA9IDA7IGkgPCB0ZXN0X2ZyZXF1ZW5jaWVzX2NvdW50 OyBpKyspCisJCWF1ZGlvX3NpZ25hbF9hZGRfZnJlcXVlbmN5KHNpZ25hbCwgdGVzdF9mcmVxdWVu Y2llc1tpXSk7CisJYXVkaW9fc2lnbmFsX3N5bnRoZXNpemUoc2lnbmFsKTsKKworCWFsc2FfcmVn aXN0ZXJfb3V0cHV0X2NhbGxiYWNrKGFsc2EsIG91dHB1dF9jYWxsYmFjaywgc2lnbmFsLAorCQkJ CSAgICAgIFBMQVlCQUNLX1NBTVBMRVMpOworCisJLyogVE9ETzogZGV0ZWN0IHNpZ25hbCBpbiBy ZWFsLXRpbWUgKi8KKwlyZXQgPSBhbHNhX3J1bihhbHNhLCBBVURJT19EVVJBVElPTik7CisJaWd0 X2Fzc2VydChyZXQgPT0gMCk7CisKKwlhbHNhX2Nsb3NlX291dHB1dChhbHNhKTsKKworCS8qIE5l ZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMTI4LCBiZWNhdXNlIHRoYXQncyB0aGUgbnVtYmVyIG9m IHNhbXBsZXMKKwkgKiB3ZSBnZXQgcGVyIGNoYW5uZWwgZWFjaCB0aW1lIHdlIHJlY2VpdmUgYW4g YXVkaW8gcGFnZSBmcm9tIHRoZQorCSAqIENoYW1lbGl1bSBkZXZpY2UuICovCisJY2hhbm5lbF9s ZW4gPSBDQVBUVVJFX1NBTVBMRVM7CisJY2hhbm5lbCA9IG1hbGxvYyhzaXplb2YoZG91YmxlKSAq IGNoYW5uZWxfbGVuKTsKKworCWJ1Zl9jYXAgPSBjYXB0dXJlX2NoYW5uZWxzICogY2hhbm5lbF9s ZW47CisJYnVmID0gbWFsbG9jKHNpemVvZihpbnQzMl90KSAqIGJ1Zl9jYXApOworCWJ1Zl9sZW4g PSAwOworCisJcmVjdiA9IE5VTEw7CisJcmVjdl9sZW4gPSAwOworCisJc3RyZWFrID0gMDsKKwlt c2VjID0gMDsKKwlpID0gMDsKKwl3aGlsZSAoc3RyZWFrIDwgTUlOX1NUUkVBSyAmJiBtc2VjIDwg QVVESU9fRFVSQVRJT04pIHsKKwkJb2sgPSBjaGFtZWxpdW1fc3RyZWFtX3JlY2VpdmVfcmVhbHRp bWVfYXVkaW8oc3RyZWFtLAorCQkJCQkJCSAgICAgJnBhZ2VfY291bnQsCisJCQkJCQkJICAgICAm cmVjdiwgJnJlY3ZfbGVuKTsKKwkJaWd0X2Fzc2VydChvayk7CisKKwkJbWVtY3B5KCZidWZbYnVm X2xlbl0sIHJlY3YsIHJlY3ZfbGVuICogc2l6ZW9mKGludDMyX3QpKTsKKwkJYnVmX2xlbiArPSBy ZWN2X2xlbjsKKworCQlpZiAoYnVmX2xlbiA8IGJ1Zl9jYXApCisJCQljb250aW51ZTsKKwkJaWd0 X2Fzc2VydChidWZfbGVuID09IGJ1Zl9jYXApOworCisJCWlmIChkdW1wX2ZkID49IDApIHsKKwkJ CWJ1Zl9zaXplID0gYnVmX2xlbiAqIHNpemVvZihpbnQzMl90KTsKKwkJCWlndF9hc3NlcnQod3Jp dGUoZHVtcF9mZCwgYnVmLCBidWZfc2l6ZSkgPT0gYnVmX3NpemUpOworCQl9CisKKwkJLyogVE9E TzogY2hlY2sgb3RoZXIgY2hhbm5lbHMgdG9vLCBub3QganVzdCB0aGUgZmlyc3Qgb25lICovCisJ CWF1ZGlvX2V4dHJhY3RfY2hhbm5lbF9zMzJfbGUoY2hhbm5lbCwgY2hhbm5lbF9sZW4sIGJ1Ziwg YnVmX2xlbiwKKwkJCQkJICAgICBjYXB0dXJlX2NoYW5uZWxzLCAwKTsKKworCQltc2VjID0gaSAq IGNoYW5uZWxfbGVuIC8gKGRvdWJsZSkgY2FwdHVyZV9yYXRlICogMTAwMDsKKwkJaWd0X2RlYnVn KCJEZXRlY3RpbmcgYXVkaW8gc2lnbmFsLCB0PSVkIG1zZWNcbiIsIG1zZWMpOworCisJCWlmIChh dWRpb19zaWduYWxfZGV0ZWN0KHNpZ25hbCwgY2FwdHVyZV9yYXRlLCBjaGFubmVsLAorCQkJCQlj aGFubmVsX2xlbikpCisJCQlzdHJlYWsrKzsKKwkJZWxzZQorCQkJc3RyZWFrID0gMDsKKworCQli dWZfbGVuID0gMDsKKwkJaSsrOworCX0KKworCWlmIChkdW1wX2ZkID49IDApIHsKKwkJY2xvc2Uo ZHVtcF9mZCk7CisJCWlmIChzdHJlYWsgPT0gTUlOX1NUUkVBSykgeworCQkJLyogVGVzdCBzdWNj ZWVkZWQsIG5vIG5lZWQgdG8ga2VlcCB0aGUgY2FwdHVyZWQgZGF0YSAqLworCQkJdW5saW5rKGR1 bXBfcGF0aCk7CisJCX0gZWxzZQorCQkJaWd0X2RlYnVnKCJTYXZlZCBjYXB0dXJlZCBhdWRpbyBk YXRhIHRvICVzXG4iLCBkdW1wX3BhdGgpOworCQlmcmVlKGR1bXBfcGF0aCk7CisJfQorCisJZnJl ZShyZWN2KTsKKwlmcmVlKGJ1Zik7CisJZnJlZShjaGFubmVsKTsKKworCW9rID0gY2hhbWVsaXVt X3N0cmVhbV9zdG9wX3JlYWx0aW1lX2F1ZGlvKHN0cmVhbSk7CisJaWd0X2Fzc2VydChvayk7CisK KwlhdWRpb19maWxlID0gY2hhbWVsaXVtX3N0b3BfY2FwdHVyaW5nX2F1ZGlvKGRhdGEtPmNoYW1l bGl1bSwKKwkJCQkJCSAgICBwb3J0KTsKKwlpZiAoYXVkaW9fZmlsZSkgeworCQlpZ3RfZGVidWco IkF1ZGlvIGZpbGUgc2F2ZWQgb24gdGhlIENoYW1lbGl1bSBpbiAlc1xuIiwKKwkJCSAgYXVkaW9f ZmlsZS0+cGF0aCk7CisJCWNoYW1lbGl1bV9kZXN0cm95X2F1ZGlvX2ZpbGUoYXVkaW9fZmlsZSk7 CisJfQorCisJYXVkaW9fc2lnbmFsX2NsZWFuKHNpZ25hbCk7CisJZnJlZShzaWduYWwpOworCisJ Y2hhbWVsaXVtX3N0cmVhbV9kZWluaXQoc3RyZWFtKTsKKworCWlndF9hc3NlcnQoc3RyZWFrID09 IE1JTl9TVFJFQUspOworCXJldHVybiB0cnVlOworfQorCitzdGF0aWMgdm9pZAordGVzdF9kaXNw bGF5X2F1ZGlvKGRhdGFfdCAqZGF0YSwgc3RydWN0IGNoYW1lbGl1bV9wb3J0ICpwb3J0LAorCQkg ICBjb25zdCBjaGFyICphdWRpb19kZXZpY2UpCit7CisJYm9vbCBydW4gPSBmYWxzZTsKKwlzdHJ1 Y3QgYWxzYSAqYWxzYTsKKwlpbnQgcmV0OworCWlndF9vdXRwdXRfdCAqb3V0cHV0OworCWlndF9w bGFuZV90ICpwcmltYXJ5OworCXN0cnVjdCBpZ3RfZmIgZmI7CisJZHJtTW9kZU1vZGVJbmZvICpt b2RlOworCWRybU1vZGVDb25uZWN0b3IgKmNvbm5lY3RvcjsKKwlpbnQgZmJfaWQsIGk7CisKKwlp Z3RfcmVxdWlyZShhbHNhX2hhc19leGNsdXNpdmVfYWNjZXNzKCkpOworCisJYWxzYSA9IGFsc2Ff aW5pdCgpOworCWlndF9hc3NlcnQoYWxzYSk7CisKKwlyZXNldF9zdGF0ZShkYXRhLCBwb3J0KTsK KworCS8qIFVzZSB0aGUgZGVmYXVsdCBDaGFtZWxpdW0gRURJRCBmb3IgdGhpcyB0ZXN0LCBhcyB0 aGUgYmFzZSBJR1QgRURJRAorCSAqIGRvZXNuJ3QgYWR2ZXJ0aXNlIGF1ZGlvIHN1cHBvcnQgKHNl ZSBkcm1fZGV0ZWN0X21vbml0b3JfYXVkaW8gaW4KKwkgKiB0aGUga2VybmVsIHRyZWUpLiAqLwor CW91dHB1dCA9IHByZXBhcmVfb3V0cHV0KGRhdGEsIHBvcnQsIGZhbHNlKTsKKwljb25uZWN0b3Ig PSBjaGFtZWxpdW1fcG9ydF9nZXRfY29ubmVjdG9yKGRhdGEtPmNoYW1lbGl1bSwgcG9ydCwgZmFs c2UpOworCXByaW1hcnkgPSBpZ3Rfb3V0cHV0X2dldF9wbGFuZV90eXBlKG91dHB1dCwgRFJNX1BM QU5FX1RZUEVfUFJJTUFSWSk7CisJaWd0X2Fzc2VydChwcmltYXJ5KTsKKworCWlndF9hc3NlcnQo Y29ubmVjdG9yLT5jb3VudF9tb2RlcyA+IDApOworCW1vZGUgPSAmY29ubmVjdG9yLT5tb2Rlc1sw XTsKKworCWZiX2lkID0gaWd0X2NyZWF0ZV9jb2xvcl9wYXR0ZXJuX2ZiKGRhdGEtPmRybV9mZCwK KwkJCQkJICAgIG1vZGUtPmhkaXNwbGF5LCBtb2RlLT52ZGlzcGxheSwKKwkJCQkJICAgIERSTV9G T1JNQVRfWFJHQjg4ODgsCisJCQkJCSAgICBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLAorCQkJ CQkgICAgMCwgMCwgMCwgJmZiKTsKKwlpZ3RfYXNzZXJ0KGZiX2lkID4gMCk7CisKKwkvKiBFbmFi bGUgdGhlIG91dHB1dCBiZWNhdXNlIHRoZSByZWNlaXZlciB3b24ndCB0cnkgdG8gcmVjZWl2ZSBh dWRpbyBpZgorCSAqIGl0IGRvZXNuJ3QgcmVjZWl2ZSB2aWRlby4gKi8KKwllbmFibGVfb3V0cHV0 KGRhdGEsIHBvcnQsIG91dHB1dCwgbW9kZSwgJmZiKTsKKworCWZvciAoaSA9IDA7IGkgPCBzYW1w bGluZ19yYXRlc19jb3VudDsgaSsrKSB7CisJCXJldCA9IGFsc2Ffb3Blbl9vdXRwdXQoYWxzYSwg YXVkaW9fZGV2aWNlKTsKKwkJaWd0X2Fzc2VydChyZXQgPj0gMCk7CisKKwkJLyogVE9ETzogcGxh eWJhY2sgb24gYWxsIDggYXZhaWxhYmxlIGNoYW5uZWxzICovCisJCXJ1biB8PSBkb190ZXN0X2Rp c3BsYXlfYXVkaW8oZGF0YSwgcG9ydCwgYWxzYSwKKwkJCQkJICAgICBQTEFZQkFDS19DSEFOTkVM UywKKwkJCQkJICAgICBzYW1wbGluZ19yYXRlc1tpXSk7CisKKwkJYWxzYV9jbG9zZV9vdXRwdXQo YWxzYSk7CisJfQorCisJLyogTWFrZSBzdXJlIHdlIHRlc3RlZCBhdCBsZWFzdCBvbmUgZnJlcXVl bmN5LiAqLworCWlndF9hc3NlcnQocnVuKTsKKworCWlndF9yZW1vdmVfZmIoZGF0YS0+ZHJtX2Zk LCAmZmIpOworCisJZHJtTW9kZUZyZWVDb25uZWN0b3IoY29ubmVjdG9yKTsKKworCWZyZWUoYWxz YSk7Cit9CisKKwogc3RhdGljIHZvaWQgc2VsZWN0X3RpbGVkX21vZGlmaWVyKGlndF9wbGFuZV90 ICpwbGFuZSwgdWludDMyX3Qgd2lkdGgsCiAJCQkJICB1aW50MzJfdCBoZWlnaHQsIHVpbnQzMl90 IGZvcm1hdCwKIAkJCQkgIHVpbnQ2NF90ICptb2RpZmllcikKQEAgLTEwMzcsNyArMTI5OCw3IEBA IHN0YXRpYyB2b2lkIHRlc3RfZGlzcGxheV9wbGFuZXNfcmFuZG9tKGRhdGFfdCAqZGF0YSwKIAly ZXNldF9zdGF0ZShkYXRhLCBwb3J0KTsKIAogCS8qIEZpbmQgdGhlIGNvbm5lY3RvciBhbmQgcGlw ZS4gKi8KLQlvdXRwdXQgPSBwcmVwYXJlX291dHB1dChkYXRhLCBwb3J0KTsKKwlvdXRwdXQgPSBw cmVwYXJlX291dHB1dChkYXRhLCBwb3J0LCB0cnVlKTsKIAogCW1vZGUgPSBpZ3Rfb3V0cHV0X2dl dF9tb2RlKG91dHB1dCk7CiAKQEAgLTEzMDgsNiArMTU2OSw5IEBAIGlndF9tYWluCiAKIAkJY29u bmVjdG9yX3N1YnRlc3QoImRwLWZyYW1lLWR1bXAiLCBEaXNwbGF5UG9ydCkKIAkJCXRlc3RfZGlz cGxheV9mcmFtZV9kdW1wKCZkYXRhLCBwb3J0KTsKKworCQljb25uZWN0b3Jfc3VidGVzdCgiZHAt YXVkaW8iLCBEaXNwbGF5UG9ydCkKKwkJCXRlc3RfZGlzcGxheV9hdWRpbygmZGF0YSwgcG9ydCwg IkhETUkiKTsKIAl9CiAKIAlpZ3Rfc3VidGVzdF9ncm91cCB7CmRpZmYgLS1naXQgYS90ZXN0cy9t ZXNvbi5idWlsZCBiL3Rlc3RzL21lc29uLmJ1aWxkCmluZGV4IDUxNjdhNmNjLi41ZDNlZWQ4MiAx MDA2NDQKLS0tIGEvdGVzdHMvbWVzb24uYnVpbGQKKysrIGIvdGVzdHMvbWVzb24uYnVpbGQKQEAg LTIzOCwyMCArMjM4LDEzIEBAIGlmIGxpYmRybV9ub3V2ZWF1LmZvdW5kKCkKIAl0ZXN0X2RlcHMg Kz0gbGliZHJtX25vdXZlYXUKIGVuZGlmCiAKLWlmIF9idWlsZF9jaGFtZWxpdW0gYW5kIGNoYW1l bGl1bS5mb3VuZCgpCitpZiBjaGFtZWxpdW1fZm91bmQKIAl0ZXN0X3Byb2dzICs9IFsKIAkJJ2tt c19jaGFtZWxpdW0nLAogCV0KIAl0ZXN0X2RlcHMgKz0gY2hhbWVsaXVtCiBlbmRpZgogCi1pZiBf YnVpbGRfYXVkaW8gYW5kIGFsc2EuZm91bmQoKSBhbmQgZ3NsLmZvdW5kKCkKLQl0ZXN0X3Byb2dz ICs9IFsKLQkJJ2F1ZGlvJywKLQldCi0JdGVzdF9kZXBzICs9IGFsc2EKLWVuZGlmCi0KIHRlc3Rf ZXhlY3V0YWJsZXMgPSBbXQogdGVzdF9saXN0ID0gW10KIAotLSAKMi4yMS4wCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlz dAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=