From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6AEE7C43381 for ; Tue, 23 Feb 2021 14:53:16 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id BABB164E12 for ; Tue, 23 Feb 2021 14:53:15 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org BABB164E12 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:37330 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lEZ3q-00033T-JE for qemu-devel@archiver.kernel.org; Tue, 23 Feb 2021 09:53:14 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43116) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lEZ1Q-0000YB-8o for qemu-devel@nongnu.org; Tue, 23 Feb 2021 09:50:44 -0500 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:55691) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1lEZ1I-0003VS-S8 for qemu-devel@nongnu.org; Tue, 23 Feb 2021 09:50:43 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1614091836; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=b4sDf/jIg+QmpE4eRWwhtDElgbAjgYwdJJAQuXUmiGU=; b=HgkocJJ3XkpE7qXb5EDYFfo6uodpCCu0pINX1dHW26TT1V8/xtASxhADahlql+ITA8+rOZ LUyJQlQMD3lTclcwHQFzJAygNId89bPXaE4C3o/RXTd4NAmnWzY9STUsRzG09mTivyVW3P ynVX58NduxtfG7+VwitNFdpx6TtisKQ= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-458-DGDfYKlDOv-uRxfoE-qaTA-1; Tue, 23 Feb 2021 09:50:14 -0500 X-MC-Unique: DGDfYKlDOv-uRxfoE-qaTA-1 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 8A2C71084CAC; Tue, 23 Feb 2021 14:47:52 +0000 (UTC) Received: from localhost (ovpn-114-203.ams2.redhat.com [10.36.114.203]) by smtp.corp.redhat.com (Postfix) with ESMTP id A2A5B5D6A1; Tue, 23 Feb 2021 14:47:45 +0000 (UTC) From: Stefan Hajnoczi To: qemu-devel@nongnu.org Subject: [PATCH v3 05/12] test: new qTest case to test the vhost-user-blk-server Date: Tue, 23 Feb 2021 14:46:46 +0000 Message-Id: <20210223144653.811468-6-stefanha@redhat.com> In-Reply-To: <20210223144653.811468-1-stefanha@redhat.com> References: <20210223144653.811468-1-stefanha@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=stefanha@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 Received-SPF: pass client-ip=63.128.21.124; envelope-from=stefanha@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Laurent Vivier , Thomas Huth , qemu-block@nongnu.org, "Michael S. Tsirkin" , Peter Maydell , Coiby Xu , Max Reitz , Stefan Hajnoczi , Paolo Bonzini , Raphael Norwitz Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" RnJvbTogQ29pYnkgWHUgPGNvaWJ5Lnh1QGdtYWlsLmNvbT4KClRoaXMgdGVzdCBjYXNlIGhhcyB0 aGUgc2FtZSB0ZXN0cyBhcyB0ZXN0cy92aXJ0aW8tYmxrLXRlc3QuYyBleGNlcHQgZm9yCnRlc3Rz IGhhdmUgYmxvY2tfcmVzaXplLiBTaW5jZSB0aGUgdmhvc3QtdXNlci1ibGsgZXhwb3J0IG9ubHkg c2VydmVzIG9uZQpjbGllbnQgb25lIHRpbWUsIHR3byBleHBvcnRzIGFyZSBzdGFydGVkIGJ5IHFl bXUtc3RvcmFnZS1kYWVtb24gZm9yIHRoZQpob3RwbHVnIHRlc3QuCgpTdWdnZXN0ZWQtYnk6IFRo b21hcyBIdXRoIDx0aHV0aEByZWRoYXQuY29tPgpTaWduZWQtb2ZmLWJ5OiBDb2lieSBYdSA8Y29p YnkueHVAZ21haWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gSGFqbm9jemkgPHN0ZWZhbmhh QHJlZGhhdC5jb20+Ci0tLQogTUFJTlRBSU5FUlMgICAgICAgICAgICAgICAgICAgICAgICAgfCAg IDIgKwogdGVzdHMvcXRlc3QvbGlicW9zL3Zob3N0LXVzZXItYmxrLmggfCAgNDggKysKIHRlc3Rz L3F0ZXN0L2xpYnFvcy92aG9zdC11c2VyLWJsay5jIHwgMTMwICsrKysrCiB0ZXN0cy9xdGVzdC92 aG9zdC11c2VyLWJsay10ZXN0LmMgICB8IDc4OCArKysrKysrKysrKysrKysrKysrKysrKysrKysr CiB0ZXN0cy9xdGVzdC9saWJxb3MvbWVzb24uYnVpbGQgICAgICB8ICAgMSArCiB0ZXN0cy9xdGVz dC9tZXNvbi5idWlsZCAgICAgICAgICAgICB8ICAgNCArCiA2IGZpbGVzIGNoYW5nZWQsIDk3MyBp bnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvcXRlc3QvbGlicW9zL3Zob3N0 LXVzZXItYmxrLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9xdGVzdC9saWJxb3Mvdmhvc3Qt dXNlci1ibGsuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL3F0ZXN0L3Zob3N0LXVzZXItYmxr LXRlc3QuYwoKZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMKaW5kZXggOWIy YWExOGUxZi4uZDM0NTY0NTQzNCAxMDA2NDQKLS0tIGEvTUFJTlRBSU5FUlMKKysrIGIvTUFJTlRB SU5FUlMKQEAgLTMxOTQsNiArMzE5NCw4IEBAIEY6IGJsb2NrL2V4cG9ydC92aG9zdC11c2VyLWJs ay1zZXJ2ZXIuYwogRjogYmxvY2svZXhwb3J0L3Zob3N0LXVzZXItYmxrLXNlcnZlci5oCiBGOiBp bmNsdWRlL3FlbXUvdmhvc3QtdXNlci1zZXJ2ZXIuaAogRjogdGVzdHMvcXRlc3QvbGlicW9zL3Zo b3N0LXVzZXItYmxrLmMKK0Y6IHRlc3RzL3F0ZXN0L2xpYnFvcy92aG9zdC11c2VyLWJsay5oCitG OiB0ZXN0cy9xdGVzdC92aG9zdC11c2VyLWJsay10ZXN0LmMKIEY6IHV0aWwvdmhvc3QtdXNlci1z ZXJ2ZXIuYwogCiBGVVNFIGJsb2NrIGRldmljZSBleHBvcnRzCmRpZmYgLS1naXQgYS90ZXN0cy9x dGVzdC9saWJxb3Mvdmhvc3QtdXNlci1ibGsuaCBiL3Rlc3RzL3F0ZXN0L2xpYnFvcy92aG9zdC11 c2VyLWJsay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjJhMDM0NTZh NDUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9xdGVzdC9saWJxb3Mvdmhvc3QtdXNlci1ibGsu aApAQCAtMCwwICsxLDQ4IEBACisvKgorICogbGlicW9zIGRyaXZlciBmcmFtZXdvcmsKKyAqCisg KiBCYXNlZCBvbiB0ZXN0cy9xdGVzdC9saWJxb3MvdmlydGlvLWJsay5jCisgKgorICogQ29weXJp Z2h0IChjKSAyMDIwIENvaWJ5IFh1IDxjb2lieS54dUBnbWFpbC5jb20+CisgKgorICogQ29weXJp Z2h0IChjKSAyMDE4IEVtYW51ZWxlIEdpdXNlcHBlIEVzcG9zaXRvIDxlLmVtYW51ZWxlZ2l1c2Vw cGVAZ21haWwuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgdmVyc2lvbiAyIGFz IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMg bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0 aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv PgorICovCisKKyNpZm5kZWYgVEVTVFNfTElCUU9TX1ZIT1NUX1VTRVJfQkxLX0gKKyNkZWZpbmUg VEVTVFNfTElCUU9TX1ZIT1NUX1VTRVJfQkxLX0gKKworI2luY2x1ZGUgInFncmFwaC5oIgorI2lu Y2x1ZGUgInZpcnRpby5oIgorI2luY2x1ZGUgInZpcnRpby1wY2kuaCIKKwordHlwZWRlZiBzdHJ1 Y3QgUVZob3N0VXNlckJsayBRVmhvc3RVc2VyQmxrOwordHlwZWRlZiBzdHJ1Y3QgUVZob3N0VXNl ckJsa1BDSSBRVmhvc3RVc2VyQmxrUENJOwordHlwZWRlZiBzdHJ1Y3QgUVZob3N0VXNlckJsa0Rl dmljZSBRVmhvc3RVc2VyQmxrRGV2aWNlOworCitzdHJ1Y3QgUVZob3N0VXNlckJsayB7CisgICAg UVZpcnRpb0RldmljZSAqdmRldjsKK307CisKK3N0cnVjdCBRVmhvc3RVc2VyQmxrUENJIHsKKyAg ICBRVmlydGlvUENJRGV2aWNlIHBjaV92ZGV2OworICAgIFFWaG9zdFVzZXJCbGsgYmxrOworfTsK Kworc3RydWN0IFFWaG9zdFVzZXJCbGtEZXZpY2UgeworICAgIFFPU0dyYXBoT2JqZWN0IG9iajsK KyAgICBRVmhvc3RVc2VyQmxrIGJsazsKK307CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvdGVzdHMv cXRlc3QvbGlicW9zL3Zob3N0LXVzZXItYmxrLmMgYi90ZXN0cy9xdGVzdC9saWJxb3Mvdmhvc3Qt dXNlci1ibGsuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi41NjhjMzQy NmVkCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvcXRlc3QvbGlicW9zL3Zob3N0LXVzZXItYmxr LmMKQEAgLTAsMCArMSwxMzAgQEAKKy8qCisgKiBsaWJxb3MgZHJpdmVyIGZyYW1ld29yaworICoK KyAqIEJhc2VkIG9uIHRlc3RzL3F0ZXN0L2xpYnFvcy92aXJ0aW8tYmxrLmMKKyAqCisgKiBDb3B5 cmlnaHQgKGMpIDIwMjAgQ29pYnkgWHUgPGNvaWJ5Lnh1QGdtYWlsLmNvbT4KKyAqCisgKiBDb3B5 cmlnaHQgKGMpIDIwMTggRW1hbnVlbGUgR2l1c2VwcGUgRXNwb3NpdG8gPGUuZW1hbnVlbGVnaXVz ZXBwZUBnbWFpbC5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSB2ZXJzaW9uIDIu MSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBU aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25n IHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4KKyAqLworCisjaW5jbHVkZSAicWVtdS9vc2RlcC5oIgorI2luY2x1ZGUgImxpYnF0ZXN0 LmgiCisjaW5jbHVkZSAicWVtdS9tb2R1bGUuaCIKKyNpbmNsdWRlICJzdGFuZGFyZC1oZWFkZXJz L2xpbnV4L3ZpcnRpb19ibGsuaCIKKyNpbmNsdWRlICJ2aG9zdC11c2VyLWJsay5oIgorCisjZGVm aW5lIFBDSV9TTE9UICAgICAgICAgICAgICAgIDB4MDQKKyNkZWZpbmUgUENJX0ZOICAgICAgICAg ICAgICAgICAgMHgwMAorCisvKiB2aXJ0aW8tYmxrLWRldmljZSAqLworc3RhdGljIHZvaWQgKnF2 aG9zdF91c2VyX2Jsa19nZXRfZHJpdmVyKFFWaG9zdFVzZXJCbGsgKnZfYmxrLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaW50ZXJmYWNlKQoreworICAg IGlmICghZ19zdHJjbXAwKGludGVyZmFjZSwgInZob3N0LXVzZXItYmxrIikpIHsKKyAgICAgICAg cmV0dXJuIHZfYmxrOworICAgIH0KKyAgICBpZiAoIWdfc3RyY21wMChpbnRlcmZhY2UsICJ2aXJ0 aW8iKSkgeworICAgICAgICByZXR1cm4gdl9ibGstPnZkZXY7CisgICAgfQorCisgICAgZnByaW50 ZihzdGRlcnIsICIlcyBub3QgcHJlc2VudCBpbiB2aG9zdC11c2VyLWJsay1kZXZpY2VcbiIsIGlu dGVyZmFjZSk7CisgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQoKTsKK30KKworc3RhdGljIHZvaWQg KnF2aG9zdF91c2VyX2Jsa19kZXZpY2VfZ2V0X2RyaXZlcih2b2lkICpvYmplY3QsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaW50ZXJmYWNl KQoreworICAgIFFWaG9zdFVzZXJCbGtEZXZpY2UgKnZfYmxrID0gb2JqZWN0OworICAgIHJldHVy biBxdmhvc3RfdXNlcl9ibGtfZ2V0X2RyaXZlcigmdl9ibGstPmJsaywgaW50ZXJmYWNlKTsKK30K Kworc3RhdGljIHZvaWQgKnZob3N0X3VzZXJfYmxrX2RldmljZV9jcmVhdGUodm9pZCAqdmlydGlv X2RldiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUd1ZXN0QWxsb2Nh dG9yICp0X2FsbG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lk ICphZGRyKQoreworICAgIFFWaG9zdFVzZXJCbGtEZXZpY2UgKnZob3N0X3VzZXJfYmxrID0gZ19u ZXcwKFFWaG9zdFVzZXJCbGtEZXZpY2UsIDEpOworICAgIFFWaG9zdFVzZXJCbGsgKmludGVyZmFj ZSA9ICZ2aG9zdF91c2VyX2Jsay0+YmxrOworCisgICAgaW50ZXJmYWNlLT52ZGV2ID0gdmlydGlv X2RldjsKKworICAgIHZob3N0X3VzZXJfYmxrLT5vYmouZ2V0X2RyaXZlciA9IHF2aG9zdF91c2Vy X2Jsa19kZXZpY2VfZ2V0X2RyaXZlcjsKKworICAgIHJldHVybiAmdmhvc3RfdXNlcl9ibGstPm9i ajsKK30KKworLyogdmlydGlvLWJsay1wY2kgKi8KK3N0YXRpYyB2b2lkICpxdmhvc3RfdXNlcl9i bGtfcGNpX2dldF9kcml2ZXIodm9pZCAqb2JqZWN0LCBjb25zdCBjaGFyICppbnRlcmZhY2UpCit7 CisgICAgUVZob3N0VXNlckJsa1BDSSAqdl9ibGsgPSBvYmplY3Q7CisgICAgaWYgKCFnX3N0cmNt cDAoaW50ZXJmYWNlLCAicGNpLWRldmljZSIpKSB7CisgICAgICAgIHJldHVybiB2X2Jsay0+cGNp X3ZkZXYucGRldjsKKyAgICB9CisgICAgcmV0dXJuIHF2aG9zdF91c2VyX2Jsa19nZXRfZHJpdmVy KCZ2X2Jsay0+YmxrLCBpbnRlcmZhY2UpOworfQorCitzdGF0aWMgdm9pZCAqdmhvc3RfdXNlcl9i bGtfcGNpX2NyZWF0ZSh2b2lkICpwY2lfYnVzLCBRR3Vlc3RBbGxvY2F0b3IgKnRfYWxsb2MsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFkZHIpCit7CisgICAg UVZob3N0VXNlckJsa1BDSSAqdmhvc3RfdXNlcl9ibGsgPSBnX25ldzAoUVZob3N0VXNlckJsa1BD SSwgMSk7CisgICAgUVZob3N0VXNlckJsayAqaW50ZXJmYWNlID0gJnZob3N0X3VzZXJfYmxrLT5i bGs7CisgICAgUU9TR3JhcGhPYmplY3QgKm9iaiA9ICZ2aG9zdF91c2VyX2Jsay0+cGNpX3ZkZXYu b2JqOworCisgICAgdmlydGlvX3BjaV9pbml0KCZ2aG9zdF91c2VyX2Jsay0+cGNpX3ZkZXYsIHBj aV9idXMsIGFkZHIpOworICAgIGludGVyZmFjZS0+dmRldiA9ICZ2aG9zdF91c2VyX2Jsay0+cGNp X3ZkZXYudmRldjsKKworICAgIGdfYXNzZXJ0X2NtcGhleChpbnRlcmZhY2UtPnZkZXYtPmRldmlj ZV90eXBlLCA9PSwgVklSVElPX0lEX0JMT0NLKTsKKworICAgIG9iai0+Z2V0X2RyaXZlciA9IHF2 aG9zdF91c2VyX2Jsa19wY2lfZ2V0X2RyaXZlcjsKKworICAgIHJldHVybiBvYmo7Cit9CisKK3N0 YXRpYyB2b2lkIHZob3N0X3VzZXJfYmxrX3JlZ2lzdGVyX25vZGVzKHZvaWQpCit7CisgICAgLyoK KyAgICAgKiBGSVhNRTogZXZlcnkgdGVzdCB1c2luZyB0aGVzZSB0d28gbm9kZXMgbmVlZHMgdG8g c2V0dXAgYQorICAgICAqIC1kcml2ZSxpZD1kcml2ZTAgb3RoZXJ3aXNlIFFFTVUgaXMgbm90IGdv aW5nIHRvIHN0YXJ0LgorICAgICAqIFRoZXJlZm9yZSwgd2UgZG8gbm90IGluY2x1ZGUgInByb2R1 Y2VzIiBlZGdlIGZvciB2aXJ0aW8KKyAgICAgKiBhbmQgcGNpLWRldmljZSB5ZXQuCisgICAgICov CisKKyAgICBjaGFyICphcmcgPSBnX3N0cmR1cF9wcmludGYoImlkPWRydjAsY2hhcmRldj1jaGFy MSxhZGRyPSV4LiV4IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJX1NMT1Qs IFBDSV9GTik7CisKKyAgICBRUENJQWRkcmVzcyBhZGRyID0geworICAgICAgICAuZGV2Zm4gPSBR UENJX0RFVkZOKFBDSV9TTE9ULCBQQ0lfRk4pLAorICAgIH07CisKKyAgICBRT1NHcmFwaEVkZ2VP cHRpb25zIG9wdHMgPSB7IH07CisKKyAgICAvKiB2aXJ0aW8tYmxrLWRldmljZSAqLworICAgIC8q KiBvcHRzLmV4dHJhX2RldmljZV9vcHRzID0gImRyaXZlPWRyaXZlMCI7ICovCisgICAgcW9zX25v ZGVfY3JlYXRlX2RyaXZlcigidmhvc3QtdXNlci1ibGstZGV2aWNlIiwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIHZob3N0X3VzZXJfYmxrX2RldmljZV9jcmVhdGUpOworICAgIHFvc19ub2Rl X2NvbnN1bWVzKCJ2aG9zdC11c2VyLWJsay1kZXZpY2UiLCAidmlydGlvLWJ1cyIsICZvcHRzKTsK KyAgICBxb3Nfbm9kZV9wcm9kdWNlcygidmhvc3QtdXNlci1ibGstZGV2aWNlIiwgInZob3N0LXVz ZXItYmxrIik7CisKKyAgICAvKiB2aXJ0aW8tYmxrLXBjaSAqLworICAgIG9wdHMuZXh0cmFfZGV2 aWNlX29wdHMgPSBhcmc7CisgICAgYWRkX3FwY2lfYWRkcmVzcygmb3B0cywgJmFkZHIpOworICAg IHFvc19ub2RlX2NyZWF0ZV9kcml2ZXIoInZob3N0LXVzZXItYmxrLXBjaSIsIHZob3N0X3VzZXJf YmxrX3BjaV9jcmVhdGUpOworICAgIHFvc19ub2RlX2NvbnN1bWVzKCJ2aG9zdC11c2VyLWJsay1w Y2kiLCAicGNpLWJ1cyIsICZvcHRzKTsKKyAgICBxb3Nfbm9kZV9wcm9kdWNlcygidmhvc3QtdXNl ci1ibGstcGNpIiwgInZob3N0LXVzZXItYmxrIik7CisKKyAgICBnX2ZyZWUoYXJnKTsKK30KKwor bGlicW9zX2luaXQodmhvc3RfdXNlcl9ibGtfcmVnaXN0ZXJfbm9kZXMpOwpkaWZmIC0tZ2l0IGEv dGVzdHMvcXRlc3Qvdmhvc3QtdXNlci1ibGstdGVzdC5jIGIvdGVzdHMvcXRlc3Qvdmhvc3QtdXNl ci1ibGstdGVzdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmYwZmIw OTg5M2UKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9xdGVzdC92aG9zdC11c2VyLWJsay10ZXN0 LmMKQEAgLTAsMCArMSw3ODggQEAKKy8qCisgKiBRVGVzdCB0ZXN0Y2FzZSBmb3IgVmhvc3QtdXNl ciBCbG9jayBEZXZpY2UKKyAqCisgKiBCYXNlZCBvbiB0ZXN0cy9xdGVzdC8vdmlydGlvLWJsay10 ZXN0LmMKKworICogQ29weXJpZ2h0IChjKSAyMDE0IFNVU0UgTElOVVggUHJvZHVjdHMgR21iSAor ICogQ29weXJpZ2h0IChjKSAyMDE0IE1hcmMgTWFyw60KKyAqIENvcHlyaWdodCAoYykgMjAyMCBD b2lieSBYdQorICoKKyAqIFRoaXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHUEwsIHZlcnNpb24gMiBvciBsYXRlci4KKyAqIFNlZSB0aGUgQ09QWUlORyBmaWxl IGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5LgorICovCisKKyNpbmNsdWRlICJxZW11L29zZGVw LmgiCisjaW5jbHVkZSAibGlicXRlc3Qtc2luZ2xlLmgiCisjaW5jbHVkZSAicWVtdS9ic3dhcC5o IgorI2luY2x1ZGUgInFlbXUvbW9kdWxlLmgiCisjaW5jbHVkZSAic3RhbmRhcmQtaGVhZGVycy9s aW51eC92aXJ0aW9fYmxrLmgiCisjaW5jbHVkZSAic3RhbmRhcmQtaGVhZGVycy9saW51eC92aXJ0 aW9fcGNpLmgiCisjaW5jbHVkZSAibGlicW9zL3FncmFwaC5oIgorI2luY2x1ZGUgImxpYnFvcy92 aG9zdC11c2VyLWJsay5oIgorI2luY2x1ZGUgImxpYnFvcy9saWJxb3MtcGMuaCIKKworI2RlZmlu ZSBURVNUX0lNQUdFX1NJWkUgICAgICAgICAoNjQgKiAxMDI0ICogMTAyNCkKKyNkZWZpbmUgUVZJ UlRJT19CTEtfVElNRU9VVF9VUyAgKDMwICogMTAwMCAqIDEwMDApCisjZGVmaW5lIFBDSV9TTE9U X0hQICAgICAgICAgICAgIDB4MDYKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIHBpZF90IHBpZDsK K30gUWVtdVN0b3JhZ2VEYWVtb25TdGF0ZTsKKwordHlwZWRlZiBzdHJ1Y3QgUVZpcnRpb0Jsa1Jl cSB7CisgICAgdWludDMyX3QgdHlwZTsKKyAgICB1aW50MzJfdCBpb3ByaW87CisgICAgdWludDY0 X3Qgc2VjdG9yOworICAgIGNoYXIgKmRhdGE7CisgICAgdWludDhfdCBzdGF0dXM7Cit9IFFWaXJ0 aW9CbGtSZXE7CisKKyNpZmRlZiBIT1NUX1dPUkRTX0JJR0VORElBTgorc3RhdGljIGNvbnN0IGJv b2wgaG9zdF9pc19iaWdfZW5kaWFuID0gdHJ1ZTsKKyNlbHNlCitzdGF0aWMgY29uc3QgYm9vbCBo b3N0X2lzX2JpZ19lbmRpYW47IC8qIGZhbHNlICovCisjZW5kaWYKKworc3RhdGljIGlubGluZSB2 b2lkIHZpcnRpb19ibGtfZml4X3JlcXVlc3QoUVZpcnRpb0RldmljZSAqZCwgUVZpcnRpb0Jsa1Jl cSAqcmVxKQoreworICAgIGlmIChxdmlydGlvX2lzX2JpZ19lbmRpYW4oZCkgIT0gaG9zdF9pc19i aWdfZW5kaWFuKSB7CisgICAgICAgIHJlcS0+dHlwZSA9IGJzd2FwMzIocmVxLT50eXBlKTsKKyAg ICAgICAgcmVxLT5pb3ByaW8gPSBic3dhcDMyKHJlcS0+aW9wcmlvKTsKKyAgICAgICAgcmVxLT5z ZWN0b3IgPSBic3dhcDY0KHJlcS0+c2VjdG9yKTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbmxpbmUg dm9pZCB2aXJ0aW9fYmxrX2ZpeF9kd3pfaGRyKFFWaXJ0aW9EZXZpY2UgKmQsCisgICAgc3RydWN0 IHZpcnRpb19ibGtfZGlzY2FyZF93cml0ZV96ZXJvZXMgKmR3el9oZHIpCit7CisgICAgaWYgKHF2 aXJ0aW9faXNfYmlnX2VuZGlhbihkKSAhPSBob3N0X2lzX2JpZ19lbmRpYW4pIHsKKyAgICAgICAg ZHd6X2hkci0+c2VjdG9yID0gYnN3YXA2NChkd3pfaGRyLT5zZWN0b3IpOworICAgICAgICBkd3pf aGRyLT5udW1fc2VjdG9ycyA9IGJzd2FwMzIoZHd6X2hkci0+bnVtX3NlY3RvcnMpOworICAgICAg ICBkd3pfaGRyLT5mbGFncyA9IGJzd2FwMzIoZHd6X2hkci0+ZmxhZ3MpOworICAgIH0KK30KKwor c3RhdGljIHVpbnQ2NF90IHZpcnRpb19ibGtfcmVxdWVzdChRR3Vlc3RBbGxvY2F0b3IgKmFsbG9j LCBRVmlydGlvRGV2aWNlICpkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBR VmlydGlvQmxrUmVxICpyZXEsIHVpbnQ2NF90IGRhdGFfc2l6ZSkKK3sKKyAgICB1aW50NjRfdCBh ZGRyOworICAgIHVpbnQ4X3Qgc3RhdHVzID0gMHhGRjsKKyAgICBRVGVzdFN0YXRlICpxdHMgPSBn bG9iYWxfcXRlc3Q7CisKKyAgICBzd2l0Y2ggKHJlcS0+dHlwZSkgeworICAgIGNhc2UgVklSVElP X0JMS19UX0lOOgorICAgIGNhc2UgVklSVElPX0JMS19UX09VVDoKKyAgICAgICAgZ19hc3NlcnRf Y21wdWludChkYXRhX3NpemUgJSA1MTIsID09LCAwKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz ZSBWSVJUSU9fQkxLX1RfRElTQ0FSRDoKKyAgICBjYXNlIFZJUlRJT19CTEtfVF9XUklURV9aRVJP RVM6CisgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQoZGF0YV9zaXplICUKKyAgICAgICAgICAgICAg ICAgICAgICAgICBzaXplb2Yoc3RydWN0IHZpcnRpb19ibGtfZGlzY2FyZF93cml0ZV96ZXJvZXMp LCA9PSwgMCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGdfYXNzZXJ0 X2NtcHVpbnQoZGF0YV9zaXplLCA9PSwgMCk7CisgICAgfQorCisgICAgYWRkciA9IGd1ZXN0X2Fs bG9jKGFsbG9jLCBzaXplb2YoKnJlcSkgKyBkYXRhX3NpemUpOworCisgICAgdmlydGlvX2Jsa19m aXhfcmVxdWVzdChkLCByZXEpOworCisgICAgcXRlc3RfbWVtd3JpdGUocXRzLCBhZGRyLCByZXEs IDE2KTsKKyAgICBxdGVzdF9tZW13cml0ZShxdHMsIGFkZHIgKyAxNiwgcmVxLT5kYXRhLCBkYXRh X3NpemUpOworICAgIHF0ZXN0X21lbXdyaXRlKHF0cywgYWRkciArIDE2ICsgZGF0YV9zaXplLCAm c3RhdHVzLCBzaXplb2Yoc3RhdHVzKSk7CisKKyAgICByZXR1cm4gYWRkcjsKK30KKworLyogUmV0 dXJucyB0aGUgcmVxdWVzdCB2aXJ0cXVldWUgc28gdGhlIGNhbGxlciBjYW4gcGVyZm9ybSBmdXJ0 aGVyIHRlc3RzICovCitzdGF0aWMgUVZpcnRRdWV1ZSAqdGVzdF9iYXNpYyhRVmlydGlvRGV2aWNl ICpkZXYsIFFHdWVzdEFsbG9jYXRvciAqYWxsb2MpCit7CisgICAgUVZpcnRpb0Jsa1JlcSByZXE7 CisgICAgdWludDY0X3QgcmVxX2FkZHI7CisgICAgdWludDY0X3QgY2FwYWNpdHk7CisgICAgdWlu dDY0X3QgZmVhdHVyZXM7CisgICAgdWludDMyX3QgZnJlZV9oZWFkOworICAgIHVpbnQ4X3Qgc3Rh dHVzOworICAgIGNoYXIgKmRhdGE7CisgICAgUVRlc3RTdGF0ZSAqcXRzID0gZ2xvYmFsX3F0ZXN0 OworICAgIFFWaXJ0UXVldWUgKnZxOworCisgICAgZmVhdHVyZXMgPSBxdmlydGlvX2dldF9mZWF0 dXJlcyhkZXYpOworICAgIGZlYXR1cmVzID0gZmVhdHVyZXMgJiB+KFFWSVJUSU9fRl9CQURfRkVB VFVSRSB8CisgICAgICAgICAgICAgICAgICAgICgxdSA8PCBWSVJUSU9fUklOR19GX0lORElSRUNU X0RFU0MpIHwKKyAgICAgICAgICAgICAgICAgICAgKDF1IDw8IFZJUlRJT19SSU5HX0ZfRVZFTlRf SURYKSB8CisgICAgICAgICAgICAgICAgICAgICgxdSA8PCBWSVJUSU9fQkxLX0ZfU0NTSSkpOwor ICAgIHF2aXJ0aW9fc2V0X2ZlYXR1cmVzKGRldiwgZmVhdHVyZXMpOworCisgICAgY2FwYWNpdHkg PSBxdmlydGlvX2NvbmZpZ19yZWFkcShkZXYsIDApOworICAgIGdfYXNzZXJ0X2NtcGludChjYXBh Y2l0eSwgPT0sIFRFU1RfSU1BR0VfU0laRSAvIDUxMik7CisKKyAgICB2cSA9IHF2aXJ0cXVldWVf c2V0dXAoZGV2LCBhbGxvYywgMCk7CisKKyAgICBxdmlydGlvX3NldF9kcml2ZXJfb2soZGV2KTsK KworICAgIC8qIFdyaXRlIGFuZCByZWFkIHdpdGggMyBkZXNjcmlwdG9yIGxheW91dCAqLworICAg IC8qIFdyaXRlIHJlcXVlc3QgKi8KKyAgICByZXEudHlwZSA9IFZJUlRJT19CTEtfVF9PVVQ7Cisg ICAgcmVxLmlvcHJpbyA9IDE7CisgICAgcmVxLnNlY3RvciA9IDA7CisgICAgcmVxLmRhdGEgPSBn X21hbGxvYzAoNTEyKTsKKyAgICBzdHJjcHkocmVxLmRhdGEsICJURVNUIik7CisKKyAgICByZXFf YWRkciA9IHZpcnRpb19ibGtfcmVxdWVzdChhbGxvYywgZGV2LCAmcmVxLCA1MTIpOworCisgICAg Z19mcmVlKHJlcS5kYXRhKTsKKworICAgIGZyZWVfaGVhZCA9IHF2aXJ0cXVldWVfYWRkKHF0cywg dnEsIHJlcV9hZGRyLCAxNiwgZmFsc2UsIHRydWUpOworICAgIHF2aXJ0cXVldWVfYWRkKHF0cywg dnEsIHJlcV9hZGRyICsgMTYsIDUxMiwgZmFsc2UsIHRydWUpOworICAgIHF2aXJ0cXVldWVfYWRk KHF0cywgdnEsIHJlcV9hZGRyICsgNTI4LCAxLCB0cnVlLCBmYWxzZSk7CisKKyAgICBxdmlydHF1 ZXVlX2tpY2socXRzLCBkZXYsIHZxLCBmcmVlX2hlYWQpOworCisgICAgcXZpcnRpb193YWl0X3Vz ZWRfZWxlbShxdHMsIGRldiwgdnEsIGZyZWVfaGVhZCwgTlVMTCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFWSVJUSU9fQkxLX1RJTUVPVVRfVVMpOworICAgIHN0YXR1cyA9IHJlYWRiKHJl cV9hZGRyICsgNTI4KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoc3RhdHVzLCA9PSwgMCk7CisKKyAg ICBndWVzdF9mcmVlKGFsbG9jLCByZXFfYWRkcik7CisKKyAgICAvKiBSZWFkIHJlcXVlc3QgKi8K KyAgICByZXEudHlwZSA9IFZJUlRJT19CTEtfVF9JTjsKKyAgICByZXEuaW9wcmlvID0gMTsKKyAg ICByZXEuc2VjdG9yID0gMDsKKyAgICByZXEuZGF0YSA9IGdfbWFsbG9jMCg1MTIpOworCisgICAg cmVxX2FkZHIgPSB2aXJ0aW9fYmxrX3JlcXVlc3QoYWxsb2MsIGRldiwgJnJlcSwgNTEyKTsKKwor ICAgIGdfZnJlZShyZXEuZGF0YSk7CisKKyAgICBmcmVlX2hlYWQgPSBxdmlydHF1ZXVlX2FkZChx dHMsIHZxLCByZXFfYWRkciwgMTYsIGZhbHNlLCB0cnVlKTsKKyAgICBxdmlydHF1ZXVlX2FkZChx dHMsIHZxLCByZXFfYWRkciArIDE2LCA1MTIsIHRydWUsIHRydWUpOworICAgIHF2aXJ0cXVldWVf YWRkKHF0cywgdnEsIHJlcV9hZGRyICsgNTI4LCAxLCB0cnVlLCBmYWxzZSk7CisKKyAgICBxdmly dHF1ZXVlX2tpY2socXRzLCBkZXYsIHZxLCBmcmVlX2hlYWQpOworCisgICAgcXZpcnRpb193YWl0 X3VzZWRfZWxlbShxdHMsIGRldiwgdnEsIGZyZWVfaGVhZCwgTlVMTCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFWSVJUSU9fQkxLX1RJTUVPVVRfVVMpOworICAgIHN0YXR1cyA9IHJlYWRi KHJlcV9hZGRyICsgNTI4KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoc3RhdHVzLCA9PSwgMCk7CisK KyAgICBkYXRhID0gZ19tYWxsb2MwKDUxMik7CisgICAgcXRlc3RfbWVtcmVhZChxdHMsIHJlcV9h ZGRyICsgMTYsIGRhdGEsIDUxMik7CisgICAgZ19hc3NlcnRfY21wc3RyKGRhdGEsID09LCAiVEVT VCIpOworICAgIGdfZnJlZShkYXRhKTsKKworICAgIGd1ZXN0X2ZyZWUoYWxsb2MsIHJlcV9hZGRy KTsKKworICAgIGlmIChmZWF0dXJlcyAmICgxdSA8PCBWSVJUSU9fQkxLX0ZfV1JJVEVfWkVST0VT KSkgeworICAgICAgICBzdHJ1Y3QgdmlydGlvX2Jsa19kaXNjYXJkX3dyaXRlX3plcm9lcyBkd3pf aGRyOworICAgICAgICB2b2lkICpleHBlY3RlZDsKKworICAgICAgICAvKgorICAgICAgICAgKiBX UklURV9aRVJPRVMgcmVxdWVzdCBvbiB0aGUgc2FtZSBzZWN0b3Igb2YgcHJldmlvdXMgdGVzdCB3 aGVyZQorICAgICAgICAgKiB3ZSB3cm90ZSAiVEVTVCIuCisgICAgICAgICAqLworICAgICAgICBy ZXEudHlwZSA9IFZJUlRJT19CTEtfVF9XUklURV9aRVJPRVM7CisgICAgICAgIHJlcS5kYXRhID0g KGNoYXIgKikgJmR3el9oZHI7CisgICAgICAgIGR3el9oZHIuc2VjdG9yID0gMDsKKyAgICAgICAg ZHd6X2hkci5udW1fc2VjdG9ycyA9IDE7CisgICAgICAgIGR3el9oZHIuZmxhZ3MgPSAwOworCisg ICAgICAgIHZpcnRpb19ibGtfZml4X2R3el9oZHIoZGV2LCAmZHd6X2hkcik7CisKKyAgICAgICAg cmVxX2FkZHIgPSB2aXJ0aW9fYmxrX3JlcXVlc3QoYWxsb2MsIGRldiwgJnJlcSwgc2l6ZW9mKGR3 el9oZHIpKTsKKworICAgICAgICBmcmVlX2hlYWQgPSBxdmlydHF1ZXVlX2FkZChxdHMsIHZxLCBy ZXFfYWRkciwgMTYsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgcXZpcnRxdWV1ZV9hZGQocXRzLCB2 cSwgcmVxX2FkZHIgKyAxNiwgc2l6ZW9mKGR3el9oZHIpLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAg IHF2aXJ0cXVldWVfYWRkKHF0cywgdnEsIHJlcV9hZGRyICsgMTYgKyBzaXplb2YoZHd6X2hkciks IDEsIHRydWUsCisgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKKworICAgICAgICBxdmly dHF1ZXVlX2tpY2socXRzLCBkZXYsIHZxLCBmcmVlX2hlYWQpOworCisgICAgICAgIHF2aXJ0aW9f d2FpdF91c2VkX2VsZW0ocXRzLCBkZXYsIHZxLCBmcmVlX2hlYWQsIE5VTEwsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUVZJUlRJT19CTEtfVElNRU9VVF9VUyk7CisgICAgICAgIHN0 YXR1cyA9IHJlYWRiKHJlcV9hZGRyICsgMTYgKyBzaXplb2YoZHd6X2hkcikpOworICAgICAgICBn X2Fzc2VydF9jbXBpbnQoc3RhdHVzLCA9PSwgMCk7CisKKyAgICAgICAgZ3Vlc3RfZnJlZShhbGxv YywgcmVxX2FkZHIpOworCisgICAgICAgIC8qIFJlYWQgcmVxdWVzdCB0byBjaGVjayBpZiB0aGUg c2VjdG9yIGNvbnRhaW5zIGFsbCB6ZXJvZXMgKi8KKyAgICAgICAgcmVxLnR5cGUgPSBWSVJUSU9f QkxLX1RfSU47CisgICAgICAgIHJlcS5pb3ByaW8gPSAxOworICAgICAgICByZXEuc2VjdG9yID0g MDsKKyAgICAgICAgcmVxLmRhdGEgPSBnX21hbGxvYzAoNTEyKTsKKworICAgICAgICByZXFfYWRk ciA9IHZpcnRpb19ibGtfcmVxdWVzdChhbGxvYywgZGV2LCAmcmVxLCA1MTIpOworCisgICAgICAg IGdfZnJlZShyZXEuZGF0YSk7CisKKyAgICAgICAgZnJlZV9oZWFkID0gcXZpcnRxdWV1ZV9hZGQo cXRzLCB2cSwgcmVxX2FkZHIsIDE2LCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIHF2aXJ0cXVldWVf YWRkKHF0cywgdnEsIHJlcV9hZGRyICsgMTYsIDUxMiwgdHJ1ZSwgdHJ1ZSk7CisgICAgICAgIHF2 aXJ0cXVldWVfYWRkKHF0cywgdnEsIHJlcV9hZGRyICsgNTI4LCAxLCB0cnVlLCBmYWxzZSk7CisK KyAgICAgICAgcXZpcnRxdWV1ZV9raWNrKHF0cywgZGV2LCB2cSwgZnJlZV9oZWFkKTsKKworICAg ICAgICBxdmlydGlvX3dhaXRfdXNlZF9lbGVtKHF0cywgZGV2LCB2cSwgZnJlZV9oZWFkLCBOVUxM LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFWSVJUSU9fQkxLX1RJTUVPVVRfVVMp OworICAgICAgICBzdGF0dXMgPSByZWFkYihyZXFfYWRkciArIDUyOCk7CisgICAgICAgIGdfYXNz ZXJ0X2NtcGludChzdGF0dXMsID09LCAwKTsKKworICAgICAgICBkYXRhID0gZ19tYWxsb2MoNTEy KTsKKyAgICAgICAgZXhwZWN0ZWQgPSBnX21hbGxvYzAoNTEyKTsKKyAgICAgICAgcXRlc3RfbWVt cmVhZChxdHMsIHJlcV9hZGRyICsgMTYsIGRhdGEsIDUxMik7CisgICAgICAgIGdfYXNzZXJ0X2Nt cG1lbShkYXRhLCA1MTIsIGV4cGVjdGVkLCA1MTIpOworICAgICAgICBnX2ZyZWUoZXhwZWN0ZWQp OworICAgICAgICBnX2ZyZWUoZGF0YSk7CisKKyAgICAgICAgZ3Vlc3RfZnJlZShhbGxvYywgcmVx X2FkZHIpOworICAgIH0KKworICAgIGlmIChmZWF0dXJlcyAmICgxdSA8PCBWSVJUSU9fQkxLX0Zf RElTQ0FSRCkpIHsKKyAgICAgICAgc3RydWN0IHZpcnRpb19ibGtfZGlzY2FyZF93cml0ZV96ZXJv ZXMgZHd6X2hkcjsKKworICAgICAgICByZXEudHlwZSA9IFZJUlRJT19CTEtfVF9ESVNDQVJEOwor ICAgICAgICByZXEuZGF0YSA9IChjaGFyICopICZkd3pfaGRyOworICAgICAgICBkd3pfaGRyLnNl Y3RvciA9IDA7CisgICAgICAgIGR3el9oZHIubnVtX3NlY3RvcnMgPSAxOworICAgICAgICBkd3pf aGRyLmZsYWdzID0gMDsKKworICAgICAgICB2aXJ0aW9fYmxrX2ZpeF9kd3pfaGRyKGRldiwgJmR3 el9oZHIpOworCisgICAgICAgIHJlcV9hZGRyID0gdmlydGlvX2Jsa19yZXF1ZXN0KGFsbG9jLCBk ZXYsICZyZXEsIHNpemVvZihkd3pfaGRyKSk7CisKKyAgICAgICAgZnJlZV9oZWFkID0gcXZpcnRx dWV1ZV9hZGQocXRzLCB2cSwgcmVxX2FkZHIsIDE2LCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIHF2 aXJ0cXVldWVfYWRkKHF0cywgdnEsIHJlcV9hZGRyICsgMTYsIHNpemVvZihkd3pfaGRyKSwgZmFs c2UsIHRydWUpOworICAgICAgICBxdmlydHF1ZXVlX2FkZChxdHMsIHZxLCByZXFfYWRkciArIDE2 ICsgc2l6ZW9mKGR3el9oZHIpLAorICAgICAgICAgICAgICAgICAgICAgICAxLCB0cnVlLCBmYWxz ZSk7CisKKyAgICAgICAgcXZpcnRxdWV1ZV9raWNrKHF0cywgZGV2LCB2cSwgZnJlZV9oZWFkKTsK KworICAgICAgICBxdmlydGlvX3dhaXRfdXNlZF9lbGVtKHF0cywgZGV2LCB2cSwgZnJlZV9oZWFk LCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFWSVJUSU9fQkxLX1RJTUVP VVRfVVMpOworICAgICAgICBzdGF0dXMgPSByZWFkYihyZXFfYWRkciArIDE2ICsgc2l6ZW9mKGR3 el9oZHIpKTsKKyAgICAgICAgZ19hc3NlcnRfY21waW50KHN0YXR1cywgPT0sIDApOworCisgICAg ICAgIGd1ZXN0X2ZyZWUoYWxsb2MsIHJlcV9hZGRyKTsKKyAgICB9CisKKyAgICBpZiAoZmVhdHVy ZXMgJiAoMXUgPDwgVklSVElPX0ZfQU5ZX0xBWU9VVCkpIHsKKyAgICAgICAgLyogV3JpdGUgYW5k IHJlYWQgd2l0aCAyIGRlc2NyaXB0b3IgbGF5b3V0ICovCisgICAgICAgIC8qIFdyaXRlIHJlcXVl c3QgKi8KKyAgICAgICAgcmVxLnR5cGUgPSBWSVJUSU9fQkxLX1RfT1VUOworICAgICAgICByZXEu aW9wcmlvID0gMTsKKyAgICAgICAgcmVxLnNlY3RvciA9IDE7CisgICAgICAgIHJlcS5kYXRhID0g Z19tYWxsb2MwKDUxMik7CisgICAgICAgIHN0cmNweShyZXEuZGF0YSwgIlRFU1QiKTsKKworICAg ICAgICByZXFfYWRkciA9IHZpcnRpb19ibGtfcmVxdWVzdChhbGxvYywgZGV2LCAmcmVxLCA1MTIp OworCisgICAgICAgIGdfZnJlZShyZXEuZGF0YSk7CisKKyAgICAgICAgZnJlZV9oZWFkID0gcXZp cnRxdWV1ZV9hZGQocXRzLCB2cSwgcmVxX2FkZHIsIDUyOCwgZmFsc2UsIHRydWUpOworICAgICAg ICBxdmlydHF1ZXVlX2FkZChxdHMsIHZxLCByZXFfYWRkciArIDUyOCwgMSwgdHJ1ZSwgZmFsc2Up OworICAgICAgICBxdmlydHF1ZXVlX2tpY2socXRzLCBkZXYsIHZxLCBmcmVlX2hlYWQpOworCisg ICAgICAgIHF2aXJ0aW9fd2FpdF91c2VkX2VsZW0ocXRzLCBkZXYsIHZxLCBmcmVlX2hlYWQsIE5V TEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVZJUlRJT19CTEtfVElNRU9VVF9V Uyk7CisgICAgICAgIHN0YXR1cyA9IHJlYWRiKHJlcV9hZGRyICsgNTI4KTsKKyAgICAgICAgZ19h c3NlcnRfY21waW50KHN0YXR1cywgPT0sIDApOworCisgICAgICAgIGd1ZXN0X2ZyZWUoYWxsb2Ms IHJlcV9hZGRyKTsKKworICAgICAgICAvKiBSZWFkIHJlcXVlc3QgKi8KKyAgICAgICAgcmVxLnR5 cGUgPSBWSVJUSU9fQkxLX1RfSU47CisgICAgICAgIHJlcS5pb3ByaW8gPSAxOworICAgICAgICBy ZXEuc2VjdG9yID0gMTsKKyAgICAgICAgcmVxLmRhdGEgPSBnX21hbGxvYzAoNTEyKTsKKworICAg ICAgICByZXFfYWRkciA9IHZpcnRpb19ibGtfcmVxdWVzdChhbGxvYywgZGV2LCAmcmVxLCA1MTIp OworCisgICAgICAgIGdfZnJlZShyZXEuZGF0YSk7CisKKyAgICAgICAgZnJlZV9oZWFkID0gcXZp cnRxdWV1ZV9hZGQocXRzLCB2cSwgcmVxX2FkZHIsIDE2LCBmYWxzZSwgdHJ1ZSk7CisgICAgICAg IHF2aXJ0cXVldWVfYWRkKHF0cywgdnEsIHJlcV9hZGRyICsgMTYsIDUxMywgdHJ1ZSwgZmFsc2Up OworCisgICAgICAgIHF2aXJ0cXVldWVfa2ljayhxdHMsIGRldiwgdnEsIGZyZWVfaGVhZCk7CisK KyAgICAgICAgcXZpcnRpb193YWl0X3VzZWRfZWxlbShxdHMsIGRldiwgdnEsIGZyZWVfaGVhZCwg TlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVklSVElPX0JMS19USU1FT1VU X1VTKTsKKyAgICAgICAgc3RhdHVzID0gcmVhZGIocmVxX2FkZHIgKyA1MjgpOworICAgICAgICBn X2Fzc2VydF9jbXBpbnQoc3RhdHVzLCA9PSwgMCk7CisKKyAgICAgICAgZGF0YSA9IGdfbWFsbG9j MCg1MTIpOworICAgICAgICBxdGVzdF9tZW1yZWFkKHF0cywgcmVxX2FkZHIgKyAxNiwgZGF0YSwg NTEyKTsKKyAgICAgICAgZ19hc3NlcnRfY21wc3RyKGRhdGEsID09LCAiVEVTVCIpOworICAgICAg ICBnX2ZyZWUoZGF0YSk7CisKKyAgICAgICAgZ3Vlc3RfZnJlZShhbGxvYywgcmVxX2FkZHIpOwor ICAgIH0KKworICAgIHJldHVybiB2cTsKK30KKworc3RhdGljIHZvaWQgYmFzaWModm9pZCAqb2Jq LCB2b2lkICpkYXRhLCBRR3Vlc3RBbGxvY2F0b3IgKnRfYWxsb2MpCit7CisgICAgUVZob3N0VXNl ckJsayAqYmxrX2lmID0gb2JqOworICAgIFFWaXJ0UXVldWUgKnZxOworCisgICAgdnEgPSB0ZXN0 X2Jhc2ljKGJsa19pZi0+dmRldiwgdF9hbGxvYyk7CisgICAgcXZpcnRxdWV1ZV9jbGVhbnVwKGJs a19pZi0+dmRldi0+YnVzLCB2cSwgdF9hbGxvYyk7CisKK30KKworc3RhdGljIHZvaWQgaW5kaXJl Y3Qodm9pZCAqb2JqLCB2b2lkICp1X2RhdGEsIFFHdWVzdEFsbG9jYXRvciAqdF9hbGxvYykKK3sK KyAgICBRVmlydFF1ZXVlICp2cTsKKyAgICBRVmhvc3RVc2VyQmxrICpibGtfaWYgPSBvYmo7Cisg ICAgUVZpcnRpb0RldmljZSAqZGV2ID0gYmxrX2lmLT52ZGV2OworICAgIFFWaXJ0aW9CbGtSZXEg cmVxOworICAgIFFWUmluZ0luZGlyZWN0RGVzYyAqaW5kaXJlY3Q7CisgICAgdWludDY0X3QgcmVx X2FkZHI7CisgICAgdWludDY0X3QgY2FwYWNpdHk7CisgICAgdWludDY0X3QgZmVhdHVyZXM7Cisg ICAgdWludDMyX3QgZnJlZV9oZWFkOworICAgIHVpbnQ4X3Qgc3RhdHVzOworICAgIGNoYXIgKmRh dGE7CisgICAgUVRlc3RTdGF0ZSAqcXRzID0gZ2xvYmFsX3F0ZXN0OworCisgICAgZmVhdHVyZXMg PSBxdmlydGlvX2dldF9mZWF0dXJlcyhkZXYpOworICAgIGdfYXNzZXJ0X2NtcGhleChmZWF0dXJl cyAmICgxdSA8PCBWSVJUSU9fUklOR19GX0lORElSRUNUX0RFU0MpLCAhPSwgMCk7CisgICAgZmVh dHVyZXMgPSBmZWF0dXJlcyAmIH4oUVZJUlRJT19GX0JBRF9GRUFUVVJFIHwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoMXUgPDwgVklSVElPX1JJTkdfRl9FVkVOVF9JRFgpIHwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoMXUgPDwgVklSVElPX0JMS19GX1NDU0kpKTsKKyAgICBx dmlydGlvX3NldF9mZWF0dXJlcyhkZXYsIGZlYXR1cmVzKTsKKworICAgIGNhcGFjaXR5ID0gcXZp cnRpb19jb25maWdfcmVhZHEoZGV2LCAwKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoY2FwYWNpdHks ID09LCBURVNUX0lNQUdFX1NJWkUgLyA1MTIpOworCisgICAgdnEgPSBxdmlydHF1ZXVlX3NldHVw KGRldiwgdF9hbGxvYywgMCk7CisgICAgcXZpcnRpb19zZXRfZHJpdmVyX29rKGRldik7CisKKyAg ICAvKiBXcml0ZSByZXF1ZXN0ICovCisgICAgcmVxLnR5cGUgPSBWSVJUSU9fQkxLX1RfT1VUOwor ICAgIHJlcS5pb3ByaW8gPSAxOworICAgIHJlcS5zZWN0b3IgPSAwOworICAgIHJlcS5kYXRhID0g Z19tYWxsb2MwKDUxMik7CisgICAgc3RyY3B5KHJlcS5kYXRhLCAiVEVTVCIpOworCisgICAgcmVx X2FkZHIgPSB2aXJ0aW9fYmxrX3JlcXVlc3QodF9hbGxvYywgZGV2LCAmcmVxLCA1MTIpOworCisg ICAgZ19mcmVlKHJlcS5kYXRhKTsKKworICAgIGluZGlyZWN0ID0gcXZyaW5nX2luZGlyZWN0X2Rl c2Nfc2V0dXAocXRzLCBkZXYsIHRfYWxsb2MsIDIpOworICAgIHF2cmluZ19pbmRpcmVjdF9kZXNj X2FkZChkZXYsIHF0cywgaW5kaXJlY3QsIHJlcV9hZGRyLCA1MjgsIGZhbHNlKTsKKyAgICBxdnJp bmdfaW5kaXJlY3RfZGVzY19hZGQoZGV2LCBxdHMsIGluZGlyZWN0LCByZXFfYWRkciArIDUyOCwg MSwgdHJ1ZSk7CisgICAgZnJlZV9oZWFkID0gcXZpcnRxdWV1ZV9hZGRfaW5kaXJlY3QocXRzLCB2 cSwgaW5kaXJlY3QpOworICAgIHF2aXJ0cXVldWVfa2ljayhxdHMsIGRldiwgdnEsIGZyZWVfaGVh ZCk7CisKKyAgICBxdmlydGlvX3dhaXRfdXNlZF9lbGVtKHF0cywgZGV2LCB2cSwgZnJlZV9oZWFk LCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUVZJUlRJT19CTEtfVElNRU9VVF9V Uyk7CisgICAgc3RhdHVzID0gcmVhZGIocmVxX2FkZHIgKyA1MjgpOworICAgIGdfYXNzZXJ0X2Nt cGludChzdGF0dXMsID09LCAwKTsKKworICAgIGdfZnJlZShpbmRpcmVjdCk7CisgICAgZ3Vlc3Rf ZnJlZSh0X2FsbG9jLCByZXFfYWRkcik7CisKKyAgICAvKiBSZWFkIHJlcXVlc3QgKi8KKyAgICBy ZXEudHlwZSA9IFZJUlRJT19CTEtfVF9JTjsKKyAgICByZXEuaW9wcmlvID0gMTsKKyAgICByZXEu c2VjdG9yID0gMDsKKyAgICByZXEuZGF0YSA9IGdfbWFsbG9jMCg1MTIpOworICAgIHN0cmNweShy ZXEuZGF0YSwgIlRFU1QiKTsKKworICAgIHJlcV9hZGRyID0gdmlydGlvX2Jsa19yZXF1ZXN0KHRf YWxsb2MsIGRldiwgJnJlcSwgNTEyKTsKKworICAgIGdfZnJlZShyZXEuZGF0YSk7CisKKyAgICBp bmRpcmVjdCA9IHF2cmluZ19pbmRpcmVjdF9kZXNjX3NldHVwKHF0cywgZGV2LCB0X2FsbG9jLCAy KTsKKyAgICBxdnJpbmdfaW5kaXJlY3RfZGVzY19hZGQoZGV2LCBxdHMsIGluZGlyZWN0LCByZXFf YWRkciwgMTYsIGZhbHNlKTsKKyAgICBxdnJpbmdfaW5kaXJlY3RfZGVzY19hZGQoZGV2LCBxdHMs IGluZGlyZWN0LCByZXFfYWRkciArIDE2LCA1MTMsIHRydWUpOworICAgIGZyZWVfaGVhZCA9IHF2 aXJ0cXVldWVfYWRkX2luZGlyZWN0KHF0cywgdnEsIGluZGlyZWN0KTsKKyAgICBxdmlydHF1ZXVl X2tpY2socXRzLCBkZXYsIHZxLCBmcmVlX2hlYWQpOworCisgICAgcXZpcnRpb193YWl0X3VzZWRf ZWxlbShxdHMsIGRldiwgdnEsIGZyZWVfaGVhZCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIFFWSVJUSU9fQkxLX1RJTUVPVVRfVVMpOworICAgIHN0YXR1cyA9IHJlYWRiKHJlcV9h ZGRyICsgNTI4KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoc3RhdHVzLCA9PSwgMCk7CisKKyAgICBk YXRhID0gZ19tYWxsb2MwKDUxMik7CisgICAgcXRlc3RfbWVtcmVhZChxdHMsIHJlcV9hZGRyICsg MTYsIGRhdGEsIDUxMik7CisgICAgZ19hc3NlcnRfY21wc3RyKGRhdGEsID09LCAiVEVTVCIpOwor ICAgIGdfZnJlZShkYXRhKTsKKworICAgIGdfZnJlZShpbmRpcmVjdCk7CisgICAgZ3Vlc3RfZnJl ZSh0X2FsbG9jLCByZXFfYWRkcik7CisgICAgcXZpcnRxdWV1ZV9jbGVhbnVwKGRldi0+YnVzLCB2 cSwgdF9hbGxvYyk7Cit9CisKK3N0YXRpYyB2b2lkIGlkeCh2b2lkICpvYmosIHZvaWQgKnVfZGF0 YSwgUUd1ZXN0QWxsb2NhdG9yICp0X2FsbG9jKQoreworICAgIFFWaXJ0UXVldWUgKnZxOworICAg IFFWaG9zdFVzZXJCbGtQQ0kgKmJsayA9IG9iajsKKyAgICBRVmlydGlvUENJRGV2aWNlICpwZGV2 ID0gJmJsay0+cGNpX3ZkZXY7CisgICAgUVZpcnRpb0RldmljZSAqZGV2ID0gJnBkZXYtPnZkZXY7 CisgICAgUVZpcnRpb0Jsa1JlcSByZXE7CisgICAgdWludDY0X3QgcmVxX2FkZHI7CisgICAgdWlu dDY0X3QgY2FwYWNpdHk7CisgICAgdWludDY0X3QgZmVhdHVyZXM7CisgICAgdWludDMyX3QgZnJl ZV9oZWFkOworICAgIHVpbnQzMl90IHdyaXRlX2hlYWQ7CisgICAgdWludDMyX3QgZGVzY19pZHg7 CisgICAgdWludDhfdCBzdGF0dXM7CisgICAgY2hhciAqZGF0YTsKKyAgICBRT1NHcmFwaE9iamVj dCAqYmxrX29iamVjdCA9IG9iajsKKyAgICBRUENJRGV2aWNlICpwY2lfZGV2ID0gYmxrX29iamVj dC0+Z2V0X2RyaXZlcihibGtfb2JqZWN0LCAicGNpLWRldmljZSIpOworICAgIFFUZXN0U3RhdGUg KnF0cyA9IGdsb2JhbF9xdGVzdDsKKworICAgIGlmIChxcGNpX2NoZWNrX2J1Z2d5X21zaShwY2lf ZGV2KSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcXBjaV9tc2l4X2VuYWJsZShw ZGV2LT5wZGV2KTsKKyAgICBxdmlydGlvX3BjaV9zZXRfbXNpeF9jb25maWd1cmF0aW9uX3ZlY3Rv cihwZGV2LCB0X2FsbG9jLCAwKTsKKworICAgIGZlYXR1cmVzID0gcXZpcnRpb19nZXRfZmVhdHVy ZXMoZGV2KTsKKyAgICBmZWF0dXJlcyA9IGZlYXR1cmVzICYgfihRVklSVElPX0ZfQkFEX0ZFQVRV UkUgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxdSA8PCBWSVJUSU9fUklOR19GX0lO RElSRUNUX0RFU0MpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMXUgPDwgVklSVElP X0ZfTk9USUZZX09OX0VNUFRZKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDF1IDw8 IFZJUlRJT19CTEtfRl9TQ1NJKSk7CisgICAgcXZpcnRpb19zZXRfZmVhdHVyZXMoZGV2LCBmZWF0 dXJlcyk7CisKKyAgICBjYXBhY2l0eSA9IHF2aXJ0aW9fY29uZmlnX3JlYWRxKGRldiwgMCk7Cisg ICAgZ19hc3NlcnRfY21waW50KGNhcGFjaXR5LCA9PSwgVEVTVF9JTUFHRV9TSVpFIC8gNTEyKTsK KworICAgIHZxID0gcXZpcnRxdWV1ZV9zZXR1cChkZXYsIHRfYWxsb2MsIDApOworICAgIHF2aXJ0 cXVldWVfcGNpX21zaXhfc2V0dXAocGRldiwgKFFWaXJ0UXVldWVQQ0kgKil2cSwgdF9hbGxvYywg MSk7CisKKyAgICBxdmlydGlvX3NldF9kcml2ZXJfb2soZGV2KTsKKworICAgIC8qIFdyaXRlIHJl cXVlc3QgKi8KKyAgICByZXEudHlwZSA9IFZJUlRJT19CTEtfVF9PVVQ7CisgICAgcmVxLmlvcHJp byA9IDE7CisgICAgcmVxLnNlY3RvciA9IDA7CisgICAgcmVxLmRhdGEgPSBnX21hbGxvYzAoNTEy KTsKKyAgICBzdHJjcHkocmVxLmRhdGEsICJURVNUIik7CisKKyAgICByZXFfYWRkciA9IHZpcnRp b19ibGtfcmVxdWVzdCh0X2FsbG9jLCBkZXYsICZyZXEsIDUxMik7CisKKyAgICBnX2ZyZWUocmVx LmRhdGEpOworCisgICAgZnJlZV9oZWFkID0gcXZpcnRxdWV1ZV9hZGQocXRzLCB2cSwgcmVxX2Fk ZHIsIDE2LCBmYWxzZSwgdHJ1ZSk7CisgICAgcXZpcnRxdWV1ZV9hZGQocXRzLCB2cSwgcmVxX2Fk ZHIgKyAxNiwgNTEyLCBmYWxzZSwgdHJ1ZSk7CisgICAgcXZpcnRxdWV1ZV9hZGQocXRzLCB2cSwg cmVxX2FkZHIgKyA1MjgsIDEsIHRydWUsIGZhbHNlKTsKKyAgICBxdmlydHF1ZXVlX2tpY2socXRz LCBkZXYsIHZxLCBmcmVlX2hlYWQpOworCisgICAgcXZpcnRpb193YWl0X3VzZWRfZWxlbShxdHMs IGRldiwgdnEsIGZyZWVfaGVhZCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFFW SVJUSU9fQkxLX1RJTUVPVVRfVVMpOworCisgICAgLyogV3JpdGUgcmVxdWVzdCAqLworICAgIHJl cS50eXBlID0gVklSVElPX0JMS19UX09VVDsKKyAgICByZXEuaW9wcmlvID0gMTsKKyAgICByZXEu c2VjdG9yID0gMTsKKyAgICByZXEuZGF0YSA9IGdfbWFsbG9jMCg1MTIpOworICAgIHN0cmNweShy ZXEuZGF0YSwgIlRFU1QiKTsKKworICAgIHJlcV9hZGRyID0gdmlydGlvX2Jsa19yZXF1ZXN0KHRf YWxsb2MsIGRldiwgJnJlcSwgNTEyKTsKKworICAgIGdfZnJlZShyZXEuZGF0YSk7CisKKyAgICAv KiBOb3RpZnkgYWZ0ZXIgcHJvY2Vzc2luZyB0aGUgdGhpcmQgcmVxdWVzdCAqLworICAgIHF2aXJ0 cXVldWVfc2V0X3VzZWRfZXZlbnQocXRzLCB2cSwgMik7CisgICAgZnJlZV9oZWFkID0gcXZpcnRx dWV1ZV9hZGQocXRzLCB2cSwgcmVxX2FkZHIsIDE2LCBmYWxzZSwgdHJ1ZSk7CisgICAgcXZpcnRx dWV1ZV9hZGQocXRzLCB2cSwgcmVxX2FkZHIgKyAxNiwgNTEyLCBmYWxzZSwgdHJ1ZSk7CisgICAg cXZpcnRxdWV1ZV9hZGQocXRzLCB2cSwgcmVxX2FkZHIgKyA1MjgsIDEsIHRydWUsIGZhbHNlKTsK KyAgICBxdmlydHF1ZXVlX2tpY2socXRzLCBkZXYsIHZxLCBmcmVlX2hlYWQpOworICAgIHdyaXRl X2hlYWQgPSBmcmVlX2hlYWQ7CisKKyAgICAvKiBObyBub3RpZmljYXRpb24gZXhwZWN0ZWQgKi8K KyAgICBzdGF0dXMgPSBxdmlydGlvX3dhaXRfc3RhdHVzX2J5dGVfbm9faXNyKHF0cywgZGV2LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnEsIHJlcV9hZGRy ICsgNTI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVZJ UlRJT19CTEtfVElNRU9VVF9VUyk7CisgICAgZ19hc3NlcnRfY21waW50KHN0YXR1cywgPT0sIDAp OworCisgICAgZ3Vlc3RfZnJlZSh0X2FsbG9jLCByZXFfYWRkcik7CisKKyAgICAvKiBSZWFkIHJl cXVlc3QgKi8KKyAgICByZXEudHlwZSA9IFZJUlRJT19CTEtfVF9JTjsKKyAgICByZXEuaW9wcmlv ID0gMTsKKyAgICByZXEuc2VjdG9yID0gMTsKKyAgICByZXEuZGF0YSA9IGdfbWFsbG9jMCg1MTIp OworCisgICAgcmVxX2FkZHIgPSB2aXJ0aW9fYmxrX3JlcXVlc3QodF9hbGxvYywgZGV2LCAmcmVx LCA1MTIpOworCisgICAgZ19mcmVlKHJlcS5kYXRhKTsKKworICAgIGZyZWVfaGVhZCA9IHF2aXJ0 cXVldWVfYWRkKHF0cywgdnEsIHJlcV9hZGRyLCAxNiwgZmFsc2UsIHRydWUpOworICAgIHF2aXJ0 cXVldWVfYWRkKHF0cywgdnEsIHJlcV9hZGRyICsgMTYsIDUxMiwgdHJ1ZSwgdHJ1ZSk7CisgICAg cXZpcnRxdWV1ZV9hZGQocXRzLCB2cSwgcmVxX2FkZHIgKyA1MjgsIDEsIHRydWUsIGZhbHNlKTsK KworICAgIHF2aXJ0cXVldWVfa2ljayhxdHMsIGRldiwgdnEsIGZyZWVfaGVhZCk7CisKKyAgICAv KiBXZSBnZXQganVzdCBvbmUgbm90aWZpY2F0aW9uIGZvciBib3RoIHJlcXVlc3RzICovCisgICAg cXZpcnRpb193YWl0X3VzZWRfZWxlbShxdHMsIGRldiwgdnEsIHdyaXRlX2hlYWQsIE5VTEwsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICBRVklSVElPX0JMS19USU1FT1VUX1VTKTsKKyAgICBn X2Fzc2VydChxdmlydHF1ZXVlX2dldF9idWYocXRzLCB2cSwgJmRlc2NfaWR4LCBOVUxMKSk7Cisg ICAgZ19hc3NlcnRfY21waW50KGRlc2NfaWR4LCA9PSwgZnJlZV9oZWFkKTsKKworICAgIHN0YXR1 cyA9IHJlYWRiKHJlcV9hZGRyICsgNTI4KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoc3RhdHVzLCA9 PSwgMCk7CisKKyAgICBkYXRhID0gZ19tYWxsb2MwKDUxMik7CisgICAgcXRlc3RfbWVtcmVhZChx dHMsIHJlcV9hZGRyICsgMTYsIGRhdGEsIDUxMik7CisgICAgZ19hc3NlcnRfY21wc3RyKGRhdGEs ID09LCAiVEVTVCIpOworICAgIGdfZnJlZShkYXRhKTsKKworICAgIGd1ZXN0X2ZyZWUodF9hbGxv YywgcmVxX2FkZHIpOworCisgICAgLyogRW5kIHRlc3QgKi8KKyAgICBxcGNpX21zaXhfZGlzYWJs ZShwZGV2LT5wZGV2KTsKKworICAgIHF2aXJ0cXVldWVfY2xlYW51cChkZXYtPmJ1cywgdnEsIHRf YWxsb2MpOworfQorCitzdGF0aWMgdm9pZCBwY2lfaG90cGx1Zyh2b2lkICpvYmosIHZvaWQgKmRh dGEsIFFHdWVzdEFsbG9jYXRvciAqdF9hbGxvYykKK3sKKyAgICBRVmlydGlvUENJRGV2aWNlICpk ZXYxID0gb2JqOworICAgIFFWaXJ0aW9QQ0lEZXZpY2UgKmRldjsKKyAgICBRVGVzdFN0YXRlICpx dHMgPSBkZXYxLT5wZGV2LT5idXMtPnF0czsKKworICAgIC8qIHBsdWcgc2Vjb25kYXJ5IGRpc2sg Ki8KKyAgICBxdGVzdF9xbXBfZGV2aWNlX2FkZChxdHMsICJ2aG9zdC11c2VyLWJsay1wY2kiLCAi ZHJ2MSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgInsnYWRkcic6ICVzLCAnY2hhcmRldic6 ICdjaGFyMid9IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdpZnkoUENJX1NMT1Rf SFApICIuMCIpOworCisgICAgZGV2ID0gdmlydGlvX3BjaV9uZXcoZGV2MS0+cGRldi0+YnVzLAor ICAgICAgICAgICAgICAgICAgICAgICAgICYoUVBDSUFkZHJlc3MpIHsgLmRldmZuID0gUVBDSV9E RVZGTihQQ0lfU0xPVF9IUCwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB9KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGRldik7CisgICAgZ19hc3NlcnRfY21waW50 KGRldi0+dmRldi5kZXZpY2VfdHlwZSwgPT0sIFZJUlRJT19JRF9CTE9DSyk7CisgICAgcXZpcnRp b19wY2lfZGV2aWNlX2Rpc2FibGUoZGV2KTsKKyAgICBxb3Nfb2JqZWN0X2Rlc3Ryb3koKFFPU0dy YXBoT2JqZWN0ICopZGV2KTsKKworICAgIC8qIHVucGx1ZyBzZWNvbmRhcnkgZGlzayAqLworICAg IHFwY2lfdW5wbHVnX2FjcGlfZGV2aWNlX3Rlc3QocXRzLCAiZHJ2MSIsIFBDSV9TTE9UX0hQKTsK K30KKworLyoKKyAqIENoZWNrIHRoYXQgc2V0dGluZyB0aGUgdnJpbmcgYWRkciBvbiBhIG5vbi1l eGlzdGVudCB2aXJ0cXVldWUgZG9lcworICogbm90IGNyYXNoLgorICovCitzdGF0aWMgdm9pZCB0 ZXN0X25vbmV4aXN0ZW50X3ZpcnRxdWV1ZSh2b2lkICpvYmosIHZvaWQgKmRhdGEsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRR3Vlc3RBbGxvY2F0b3IgKnRfYWxsb2Mp Cit7CisgICAgUVZob3N0VXNlckJsa1BDSSAqYmxrID0gb2JqOworICAgIFFWaXJ0aW9QQ0lEZXZp Y2UgKnBkZXYgPSAmYmxrLT5wY2lfdmRldjsKKyAgICBRUENJQmFyIGJhcjA7CisgICAgUVBDSURl dmljZSAqZGV2OworCisgICAgZGV2ID0gcXBjaV9kZXZpY2VfZmluZChwZGV2LT5wZGV2LT5idXMs IFFQQ0lfREVWRk4oNCwgMCkpOworICAgIGdfYXNzZXJ0KGRldiAhPSBOVUxMKTsKKyAgICBxcGNp X2RldmljZV9lbmFibGUoZGV2KTsKKworICAgIGJhcjAgPSBxcGNpX2lvbWFwKGRldiwgMCwgTlVM TCk7CisKKyAgICBxcGNpX2lvX3dyaXRlYihkZXYsIGJhcjAsIFZJUlRJT19QQ0lfUVVFVUVfU0VM LCAyKTsKKyAgICBxcGNpX2lvX3dyaXRlbChkZXYsIGJhcjAsIFZJUlRJT19QQ0lfUVVFVUVfUEZO LCAxKTsKKworICAgIGdfZnJlZShkZXYpOworfQorCitzdGF0aWMgY29uc3QgY2hhciAqcXRlc3Rf cWVtdV9zdG9yYWdlX2RhZW1vbl9iaW5hcnkodm9pZCkKK3sKKyAgICBjb25zdCBjaGFyICpxZW11 X3N0b3JhZ2VfZGFlbW9uX2JpbjsKKworICAgIHFlbXVfc3RvcmFnZV9kYWVtb25fYmluID0gZ2V0 ZW52KCJRVEVTVF9RRU1VX1NUT1JBR0VfREFFTU9OX0JJTkFSWSIpOworICAgIGlmICghcWVtdV9z dG9yYWdlX2RhZW1vbl9iaW4pIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJFbnZpcm9ubWVu dCB2YXJpYWJsZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAiUVRFU1RfUUVNVV9TVE9SQUdF X0RBRU1PTl9CSU5BUlkgcmVxdWlyZWRcbiIpOworICAgICAgICBleGl0KDApOworICAgIH0KKwor ICAgIHJldHVybiBxZW11X3N0b3JhZ2VfZGFlbW9uX2JpbjsKK30KKworLyogZ190ZXN0X3F1ZXVl X2Rlc3Ryb3koKSBjbGVhbnVwIGZ1bmN0aW9uIGZvciBmaWxlcyAqLworc3RhdGljIHZvaWQgZGVz dHJveV9maWxlKHZvaWQgKnBhdGgpCit7CisgICAgdW5saW5rKHBhdGgpOworICAgIGdfZnJlZShw YXRoKTsKKyAgICBxb3NfaW52YWxpZGF0ZV9jb21tYW5kX2xpbmUoKTsKK30KKworc3RhdGljIGNo YXIgKmRyaXZlX2NyZWF0ZSh2b2lkKQoreworICAgIGludCBmZCwgcmV0OworICAgIC8qKiB2aG9z dC11c2VyLWJsayB3b24ndCByZWNvZ25pemUgZHJpdmUgbG9jYXRlZCBpbiAvdG1wICovCisgICAg Y2hhciAqdF9wYXRoID0gZ19zdHJkdXAoInF0ZXN0LlhYWFhYWCIpOworCisgICAgLyoqIENyZWF0 ZSBhIHRlbXBvcmFyeSByYXcgaW1hZ2UgKi8KKyAgICBmZCA9IG1rc3RlbXAodF9wYXRoKTsKKyAg ICBnX2Fzc2VydF9jbXBpbnQoZmQsID49LCAwKTsKKyAgICByZXQgPSBmdHJ1bmNhdGUoZmQsIFRF U1RfSU1BR0VfU0laRSk7CisgICAgZ19hc3NlcnRfY21waW50KHJldCwgPT0sIDApOworICAgIGNs b3NlKGZkKTsKKworICAgIGdfdGVzdF9xdWV1ZV9kZXN0cm95KGRlc3Ryb3lfZmlsZSwgdF9wYXRo KTsKKyAgICByZXR1cm4gdF9wYXRoOworfQorCitzdGF0aWMgY2hhciAqY3JlYXRlX2xpc3Rlbl9z b2NrZXQoaW50ICpmZCkKK3sKKyAgICBpbnQgdG1wX2ZkOworICAgIGNoYXIgKnBhdGg7CisKKyAg ICAvKiBObyByYWNlIGJlY2F1c2Ugb3VyIHBpZCBtYWtlcyB0aGUgcGF0aCB1bmlxdWUgKi8KKyAg ICBwYXRoID0gZ19zdHJkdXBfcHJpbnRmKCIvdG1wL3F0ZXN0LSVkLXNvY2suWFhYWFhYIiwgZ2V0 cGlkKCkpOworICAgIHRtcF9mZCA9IG1rc3RlbXAocGF0aCk7CisgICAgZ19hc3NlcnRfY21waW50 KHRtcF9mZCwgPj0sIDApOworICAgIGNsb3NlKHRtcF9mZCk7CisgICAgdW5saW5rKHBhdGgpOwor CisgICAgKmZkID0gcXRlc3Rfc29ja2V0X3NlcnZlcihwYXRoKTsKKyAgICBnX3Rlc3RfcXVldWVf ZGVzdHJveShkZXN0cm95X2ZpbGUsIHBhdGgpOworICAgIHJldHVybiBwYXRoOworfQorCisvKgor ICogZ190ZXN0X3F1ZXVlX2Rlc3Ryb3koKSBhbmQgcXRlc3RfYWRkX2FicnRfaGFuZGxlcigpIGNs ZWFudXAgZnVuY3Rpb24gZm9yCisgKiBxZW11LXN0b3JhZ2UtZGFlbW9uLgorICovCitzdGF0aWMg dm9pZCBxdWl0X3N0b3JhZ2VfZGFlbW9uKHZvaWQgKmRhdGEpCit7CisgICAgUWVtdVN0b3JhZ2VE YWVtb25TdGF0ZSAqcXNkID0gZGF0YTsKKyAgICBpbnQgd3N0YXR1czsKKyAgICBwaWRfdCBwaWQ7 CisKKyAgICAvKgorICAgICAqIElmIHdlIHdlcmUgaW52b2tlZCBhcyBhIGdfdGVzdF9xdWV1ZV9k ZXN0cm95KCkgY2xlYW51cCBmdW5jdGlvbiB3ZSBuZWVkCisgICAgICogdG8gcmVtb3ZlIHRoZSBh YnJ0IGhhbmRsZXIgdG8gYXZvaWQgYmVpbmcgY2FsbGVkIGFnYWluIGlmIHRoZSBjb2RlIGJlbG93 CisgICAgICogYWJvcnRzLiBBbHNvLCB3ZSBtdXN0IG5vdCBsZWF2ZSB0aGUgYWJydCBoYW5kbGVy IGluc3RhbGxlZCBhZnRlcgorICAgICAqIGNsZWFudXAuCisgICAgICovCisgICAgcXRlc3RfcmVt b3ZlX2FicnRfaGFuZGxlcihkYXRhKTsKKworICAgIC8qIEJlZm9yZSBxdWl0dGluZyBzdG9yYWdl LWRhZW1vbiwgcXVpdCBxZW11IHRvIGF2b2lkIGR1YmlvdXMgbWVzc2FnZXMgKi8KKyAgICBxdGVz dF9raWxsX3FlbXUoZ2xvYmFsX3F0ZXN0KTsKKworICAgIGtpbGwocXNkLT5waWQsIFNJR1RFUk0p OworICAgIHBpZCA9IHdhaXRwaWQocXNkLT5waWQsICZ3c3RhdHVzLCAwKTsKKyAgICBnX2Fzc2Vy dF9jbXBpbnQocGlkLCA9PSwgcXNkLT5waWQpOworICAgIGlmICghV0lGRVhJVEVEKHdzdGF0dXMp KSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IGV4cGVjdGVkIHFlbXUtc3RvcmFnZS1k YWVtb24gdG8gZXhpdFxuIiwKKyAgICAgICAgICAgICAgICBfX2Z1bmNfXyk7CisgICAgICAgIGFi b3J0KCk7CisgICAgfQorICAgIGlmIChXRVhJVFNUQVRVUyh3c3RhdHVzKSAhPSAwKSB7CisgICAg ICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IGV4cGVjdGVkIHFlbXUtc3RvcmFnZS1kYWVtb24gdG8g ZXhpdCAiCisgICAgICAgICAgICAgICAgInN1Y2Nlc3NmdWxseSwgZ290ICVkXG4iLAorICAgICAg ICAgICAgICAgIF9fZnVuY19fLCBXRVhJVFNUQVRVUyh3c3RhdHVzKSk7CisgICAgICAgIGFib3J0 KCk7CisgICAgfQorCisgICAgZ19mcmVlKGRhdGEpOworfQorCitzdGF0aWMgdm9pZCBzdGFydF92 aG9zdF91c2VyX2JsayhHU3RyaW5nICpjbWRfbGluZSwgaW50IHZ1c19pbnN0YW5jZXMpCit7Cisg ICAgY29uc3QgY2hhciAqdmhvc3RfdXNlcl9ibGtfYmluID0gcXRlc3RfcWVtdV9zdG9yYWdlX2Rh ZW1vbl9iaW5hcnkoKTsKKyAgICBpbnQgaTsKKyAgICBnY2hhciAqaW1nX3BhdGg7CisgICAgR1N0 cmluZyAqc3RvcmFnZV9kYWVtb25fY29tbWFuZCA9IGdfc3RyaW5nX25ldyhOVUxMKTsKKyAgICBR ZW11U3RvcmFnZURhZW1vblN0YXRlICpxc2Q7CisKKyAgICBnX3N0cmluZ19hcHBlbmRfcHJpbnRm KHN0b3JhZ2VfZGFlbW9uX2NvbW1hbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhl YyAlcyAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdmhvc3RfdXNlcl9ibGtfYmluKTsK KworICAgIGdfc3RyaW5nX2FwcGVuZF9wcmludGYoY21kX2xpbmUsCisgICAgICAgICAgICAiIC1v YmplY3QgbWVtb3J5LWJhY2tlbmQtbWVtZmQsaWQ9bWVtLHNpemU9MjU2TSxzaGFyZT1vbiAiCisg ICAgICAgICAgICAiIC1NIG1lbW9yeS1iYWNrZW5kPW1lbSAtbSAyNTZNICIpOworCisgICAgZm9y IChpID0gMDsgaSA8IHZ1c19pbnN0YW5jZXM7IGkrKykgeworICAgICAgICBpbnQgZmQ7CisgICAg ICAgIGNoYXIgKnNvY2tfcGF0aCA9IGNyZWF0ZV9saXN0ZW5fc29ja2V0KCZmZCk7CisKKyAgICAg ICAgLyogY3JlYXRlIGltYWdlIGZpbGUgKi8KKyAgICAgICAgaW1nX3BhdGggPSBkcml2ZV9jcmVh dGUoKTsKKyAgICAgICAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZihzdG9yYWdlX2RhZW1vbl9jb21t YW5kLAorICAgICAgICAgICAgIi0tYmxvY2tkZXYgZHJpdmVyPWZpbGUsbm9kZS1uYW1lPWRpc2sl ZCxmaWxlbmFtZT0lcyAiCisgICAgICAgICAgICAiLS1leHBvcnQgdHlwZT12aG9zdC11c2VyLWJs ayxpZD1kaXNrJWQsYWRkci50eXBlPXVuaXgsYWRkci5wYXRoPSVzLCIKKyAgICAgICAgICAgICJu b2RlLW5hbWU9ZGlzayVpLHdyaXRhYmxlPW9uICIsCisgICAgICAgICAgICBpLCBpbWdfcGF0aCwg aSwgc29ja19wYXRoLCBpKTsKKworICAgICAgICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmKGNtZF9s aW5lLCAiLWNoYXJkZXYgc29ja2V0LGlkPWNoYXIlZCxwYXRoPSVzICIsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaSArIDEsIHNvY2tfcGF0aCk7CisgICAgfQorCisgICAgZ190ZXN0 X21lc3NhZ2UoInN0YXJ0aW5nIHZob3N0LXVzZXIgYmFja2VuZDogJXMiLAorICAgICAgICAgICAg ICAgICAgIHN0b3JhZ2VfZGFlbW9uX2NvbW1hbmQtPnN0cik7CisgICAgcGlkX3QgcGlkID0gZm9y aygpOworICAgIGlmIChwaWQgPT0gMCkgeworICAgICAgICAvKgorICAgICAgICAgKiBDbG9zZSBz dGFuZGFyZCBmaWxlIGRlc2NyaXB0b3JzIHNvIHRhcC1kcml2ZXIucGwgcGlwZSBkZXRlY3RzIHdo ZW4KKyAgICAgICAgICogb3VyIHBhcmVudCB0ZXJtaW5hdGVzLgorICAgICAgICAgKi8KKyAgICAg ICAgY2xvc2UoMCk7CisgICAgICAgIGNsb3NlKDEpOworICAgICAgICBvcGVuKCIvZGV2L251bGwi LCBPX1JET05MWSk7CisgICAgICAgIG9wZW4oIi9kZXYvbnVsbCIsIE9fV1JPTkxZKTsKKworICAg ICAgICBleGVjbHAoIi9iaW4vc2giLCAic2giLCAiLWMiLCBzdG9yYWdlX2RhZW1vbl9jb21tYW5k LT5zdHIsIE5VTEwpOworICAgICAgICBleGl0KDEpOworICAgIH0KKyAgICBnX3N0cmluZ19mcmVl KHN0b3JhZ2VfZGFlbW9uX2NvbW1hbmQsIHRydWUpOworCisgICAgcXNkID0gZ19uZXcoUWVtdVN0 b3JhZ2VEYWVtb25TdGF0ZSwgMSk7CisgICAgcXNkLT5waWQgPSBwaWQ7CisKKyAgICAvKiBNYWtl IHN1cmUgcWVtdS1zdG9yYWdlLWRhZW1vbiBpcyBzdG9wcGVkICovCisgICAgcXRlc3RfYWRkX2Fi cnRfaGFuZGxlcihxdWl0X3N0b3JhZ2VfZGFlbW9uLCBxc2QpOworICAgIGdfdGVzdF9xdWV1ZV9k ZXN0cm95KHF1aXRfc3RvcmFnZV9kYWVtb24sIHFzZCk7Cit9CisKK3N0YXRpYyB2b2lkICp2aG9z dF91c2VyX2Jsa190ZXN0X3NldHVwKEdTdHJpbmcgKmNtZF9saW5lLCB2b2lkICphcmcpCit7Cisg ICAgc3RhcnRfdmhvc3RfdXNlcl9ibGsoY21kX2xpbmUsIDEpOworICAgIHJldHVybiBhcmc7Cit9 CisKKy8qCisgKiBTZXR1cCBmb3IgaG90cGx1Zy4KKyAqCisgKiBTaW5jZSB2aG9zdC11c2VyIHNl cnZlciBvbmx5IHNlcnZlcyBvbmUgdmhvc3QtdXNlciBjbGllbnQgb25lIHRpbWUsCisgKiBhbm90 aGVyIGV4cHJvdAorICoKKyAqLworc3RhdGljIHZvaWQgKnZob3N0X3VzZXJfYmxrX2hvdHBsdWdf dGVzdF9zZXR1cChHU3RyaW5nICpjbWRfbGluZSwgdm9pZCAqYXJnKQoreworICAgIC8qICItY2hh cmRldiBzb2NrZXQsaWQ9Y2hhcjIiIGlzIHVzZWQgZm9yIHBjaV9ob3RwbHVnKi8KKyAgICBzdGFy dF92aG9zdF91c2VyX2JsayhjbWRfbGluZSwgMik7CisgICAgcmV0dXJuIGFyZzsKK30KKworc3Rh dGljIHZvaWQgcmVnaXN0ZXJfdmhvc3RfdXNlcl9ibGtfdGVzdCh2b2lkKQoreworICAgIFFPU0dy YXBoVGVzdE9wdGlvbnMgb3B0cyA9IHsKKyAgICAgICAgLmJlZm9yZSA9IHZob3N0X3VzZXJfYmxr X3Rlc3Rfc2V0dXAsCisgICAgfTsKKworICAgIC8qCisgICAgICogdGVzdHMgZm9yIHZob3N0LXVz ZXItYmxrIGFuZCB2aG9zdC11c2VyLWJsay1wY2kKKyAgICAgKiBUaGUgdGVzdHMgYXJlIGJvcnJv d2VkIGZyb20gdGVzdHMvdmlydGlvLWJsay10ZXN0LmMuIEJ1dCBzb21lIHRlc3RzCisgICAgICog cmVnYXJkaW5nIGJsb2NrX3Jlc2l6ZSBkb24ndCB3b3JrIGZvciB2aG9zdC11c2VyLWJsay4KKyAg ICAgKiB2aG9zdC11c2VyLWJsayBkZXZpY2UgZG9lc24ndCBoYXZlIC1kcml2ZSwgc28gdGVzdHMg Y29udGFpbmluZworICAgICAqIGJsb2NrX3Jlc2l6ZSBhcmUgYWxzbyBhYmFuZG9uZWQsCisgICAg ICogIC0gY29uZmlnCisgICAgICogIC0gcmVzaXplCisgICAgICovCisgICAgcW9zX2FkZF90ZXN0 KCJiYXNpYyIsICJ2aG9zdC11c2VyLWJsayIsIGJhc2ljLCAmb3B0cyk7CisgICAgcW9zX2FkZF90 ZXN0KCJpbmRpcmVjdCIsICJ2aG9zdC11c2VyLWJsayIsIGluZGlyZWN0LCAmb3B0cyk7CisgICAg cW9zX2FkZF90ZXN0KCJpZHgiLCAidmhvc3QtdXNlci1ibGstcGNpIiwgaWR4LCAmb3B0cyk7Cisg ICAgcW9zX2FkZF90ZXN0KCJueHZpcnRxIiwgInZob3N0LXVzZXItYmxrLXBjaSIsCisgICAgICAg ICAgICAgICAgIHRlc3Rfbm9uZXhpc3RlbnRfdmlydHF1ZXVlLCAmb3B0cyk7CisKKyAgICBvcHRz LmJlZm9yZSA9IHZob3N0X3VzZXJfYmxrX2hvdHBsdWdfdGVzdF9zZXR1cDsKKyAgICBxb3NfYWRk X3Rlc3QoImhvdHBsdWciLCAidmhvc3QtdXNlci1ibGstcGNpIiwgcGNpX2hvdHBsdWcsICZvcHRz KTsKK30KKworbGlicW9zX2luaXQocmVnaXN0ZXJfdmhvc3RfdXNlcl9ibGtfdGVzdCk7CmRpZmYg LS1naXQgYS90ZXN0cy9xdGVzdC9saWJxb3MvbWVzb24uYnVpbGQgYi90ZXN0cy9xdGVzdC9saWJx b3MvbWVzb24uYnVpbGQKaW5kZXggMWNkZGY1YmRhYS4uMWY1YzhmMTA1MyAxMDA2NDQKLS0tIGEv dGVzdHMvcXRlc3QvbGlicW9zL21lc29uLmJ1aWxkCisrKyBiL3Rlc3RzL3F0ZXN0L2xpYnFvcy9t ZXNvbi5idWlsZApAQCAtMzIsNiArMzIsNyBAQCBsaWJxb3Nfc3JjcyA9IGZpbGVzKCcuLi9saWJx dGVzdC5jJywKICAgICAgICAgJ3ZpcnRpby05cC5jJywKICAgICAgICAgJ3ZpcnRpby1iYWxsb29u LmMnLAogICAgICAgICAndmlydGlvLWJsay5jJywKKyAgICAgICAgJ3Zob3N0LXVzZXItYmxrLmMn LAogICAgICAgICAndmlydGlvLW1taW8uYycsCiAgICAgICAgICd2aXJ0aW8tbmV0LmMnLAogICAg ICAgICAndmlydGlvLXBjaS5jJywKZGlmZiAtLWdpdCBhL3Rlc3RzL3F0ZXN0L21lc29uLmJ1aWxk IGIvdGVzdHMvcXRlc3QvbWVzb24uYnVpbGQKaW5kZXggYmE2ZWNhZWQzMi4uMWFlYWY1OGQ5NiAx MDA2NDQKLS0tIGEvdGVzdHMvcXRlc3QvbWVzb24uYnVpbGQKKysrIGIvdGVzdHMvcXRlc3QvbWVz b24uYnVpbGQKQEAgLTIxMCw2ICsyMTAsOSBAQCBpZiBoYXZlX3ZpcnRmcwogICBxb3NfdGVzdF9z cy5hZGQoZmlsZXMoJ3ZpcnRpby05cC10ZXN0LmMnKSkKIGVuZGlmCiBxb3NfdGVzdF9zcy5hZGQo d2hlbjogJ0NPTkZJR19WSE9TVF9VU0VSJywgaWZfdHJ1ZTogZmlsZXMoJ3Zob3N0LXVzZXItdGVz dC5jJykpCitpZiBoYXZlX3Zob3N0X3VzZXJfYmxrX3NlcnZlcgorICBxb3NfdGVzdF9zcy5hZGQo ZmlsZXMoJ3Zob3N0LXVzZXItYmxrLXRlc3QuYycpKQorZW5kaWYKIAogdHBtZW11X2ZpbGVzID0g Wyd0cG0tZW11LmMnLCAndHBtLXV0aWwuYycsICd0cG0tdGVzdHMuYyddCiAKQEAgLTI0OCw2ICsy NTEsNyBAQCBmb3JlYWNoIGRpciA6IHRhcmdldF9kaXJzCiAgIGVuZGlmCiAgIHF0ZXN0X2Vudi5z ZXQoJ0dfVEVTVF9EQlVTX0RBRU1PTicsIG1lc29uLnNvdXJjZV9yb290KCkgLyAndGVzdHMvZGJ1 cy12bXN0YXRlLWRhZW1vbi5zaCcpCiAgIHF0ZXN0X2Vudi5zZXQoJ1FURVNUX1FFTVVfQklOQVJZ JywgJy4vcWVtdS1zeXN0ZW0tJyArIHRhcmdldF9iYXNlKQorICBxdGVzdF9lbnYuc2V0KCdRVEVT VF9RRU1VX1NUT1JBR0VfREFFTU9OX0JJTkFSWScsICcuL3N0b3JhZ2UtZGFlbW9uL3FlbXUtc3Rv cmFnZS1kYWVtb24nKQogICAKICAgZm9yZWFjaCB0ZXN0IDogdGFyZ2V0X3F0ZXN0cwogICAgICMg RXhlY3V0YWJsZXMgYXJlIHNoYXJlZCBhY3Jvc3MgdGFyZ2V0cywgZGVjbGFyZSB0aGVtIG9ubHkg dGhlIGZpcnN0IHRpbWUgd2UKLS0gCjIuMjkuMgoK