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=-9.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT 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 9B9D5C282DD for ; Wed, 8 Jan 2020 17:16:00 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (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 5E3BE2067D for ; Wed, 8 Jan 2020 17:16:00 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5E3BE2067D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1ipEvp-0001Rp-9B; Wed, 08 Jan 2020 17:15:45 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1ipEvn-0001Pd-SU for xen-devel@lists.xenproject.org; Wed, 08 Jan 2020 17:15:43 +0000 X-Inumbo-ID: 61dfeb0c-323a-11ea-b85f-12813bfff9fa Received: from mga14.intel.com (unknown [192.55.52.115]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 61dfeb0c-323a-11ea-b85f-12813bfff9fa; Wed, 08 Jan 2020 17:14:52 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 08 Jan 2020 09:14:51 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.69,410,1571727600"; d="scan'208";a="395806191" Received: from tlengyel-mobl2.amr.corp.intel.com (HELO localhost.localdomain) ([10.251.132.23]) by orsmga005.jf.intel.com with ESMTP; 08 Jan 2020 09:14:50 -0800 From: Tamas K Lengyel To: xen-devel@lists.xenproject.org Date: Wed, 8 Jan 2020 09:14:15 -0800 Message-Id: X-Mailer: git-send-email 2.20.1 In-Reply-To: References: MIME-Version: 1.0 Subject: [Xen-devel] [PATCH v4 18/18] xen/tools: VM forking toolstack side X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Anthony PERARD , Ian Jackson , Tamas K Lengyel , Wei Liu Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" QWRkIG5lY2Vzc2FyeSBiaXRzIHRvIGltcGxlbWVudCAieGwgZm9yay12bSIgY29tbWFuZHMuIFRo ZSBjb21tYW5kIGFsbG93cyB0aGUKdXNlciB0byBzcGVjaWZ5IGhvdyB0byBsYXVuY2ggdGhlIGRl dmljZSBtb2RlbCBhbGxvd2luZyBmb3IgYSBsYXRlLWxhdW5jaCBtb2RlbAppbiB3aGljaCB0aGUg dXNlciBjYW4gZXhlY3V0ZSB0aGUgZm9yayB3aXRob3V0IHRoZSBkZXZpY2UgbW9kZWwgYW5kIGRl Y2lkZSB0bwpvbmx5IGxhdGVyIGxhdW5jaCBpdC4KClNpZ25lZC1vZmYtYnk6IFRhbWFzIEsgTGVu Z3llbCA8dGFtYXMubGVuZ3llbEBpbnRlbC5jb20+Ci0tLQp2NDogY29tYmluZSB4bCBjb21tYW5k cyBhcyBzdWJvcHRpb25zIHRvIHhsIGZvcmstdm0KLS0tCiBkb2NzL21hbi94bC4xLnBvZC5pbiAg ICAgICAgICB8ICAzNiArKysrKysKIHRvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oIHwgIDEz ICsrCiB0b29scy9saWJ4Yy94Y19tZW1zaHIuYyAgICAgICB8ICAyMiArKysrCiB0b29scy9saWJ4 bC9saWJ4bC5oICAgICAgICAgICB8ICAgNyArCiB0b29scy9saWJ4bC9saWJ4bF9jcmVhdGUuYyAg ICB8IDIzNyArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiB0b29scy9saWJ4bC9s aWJ4bF9kbS5jICAgICAgICB8ICAgMiArLQogdG9vbHMvbGlieGwvbGlieGxfZG9tLmMgICAgICAg fCAgODMgKysrKysrKystLS0tCiB0b29scy9saWJ4bC9saWJ4bF9pbnRlcm5hbC5oICB8ICAgMSAr CiB0b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwgICB8ICAgMSArCiB0b29scy94bC94bC5oICAg ICAgICAgICAgICAgICB8ICAgNSArCiB0b29scy94bC94bF9jbWR0YWJsZS5jICAgICAgICB8ICAx MiArKwogdG9vbHMveGwveGxfc2F2ZXJlc3RvcmUuYyAgICAgfCAgOTYgKysrKysrKysrKysrKysK IHRvb2xzL3hsL3hsX3ZtY29udHJvbC5jICAgICAgIHwgICA4ICsrCiAxMyBmaWxlcyBjaGFuZ2Vk LCA0MTkgaW5zZXJ0aW9ucygrKSwgMTA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvY3Mv bWFuL3hsLjEucG9kLmluIGIvZG9jcy9tYW4veGwuMS5wb2QuaW4KaW5kZXggZDRiNWU4ZTM2Mi4u MjJjYzQxNDliMCAxMDA2NDQKLS0tIGEvZG9jcy9tYW4veGwuMS5wb2QuaW4KKysrIGIvZG9jcy9t YW4veGwuMS5wb2QuaW4KQEAgLTY5NCw2ICs2OTQsNDIgQEAgTGVhdmUgdGhlIGRvbWFpbiBwYXVz ZWQgYWZ0ZXIgY3JlYXRpbmcgdGhlIHNuYXBzaG90LgogCiA9YmFjawogCis9aXRlbSBCPGZvcmst dm0+IFtJPE9QVElPTlM+XSBJPGRvbWFpbi1pZD4KKworQ3JlYXRlIGEgZm9yayBvZiBhIHJ1bm5p bmcgVk0uIFRoZSBkb21haW4gd2lsbCBiZSBwYXVzZWQgYWZ0ZXIgdGhlIG9wZXJhdGlvbgorYW5k IG5lZWRzIHRvIHJlbWFpbiBwYXVzZWQgd2hpbGUgZm9ya3Mgb2YgaXQgZXhpc3QuCisKK0I8T1BU SU9OUz4KKworPW92ZXIgNAorCis9aXRlbSBCPC1wPgorCitMZWF2ZSB0aGUgZm9yayBwYXVzZWQg YWZ0ZXIgY3JlYXRpbmcgaXQuCisKKz1pdGVtIEI8LS1sYXVuY2gtZG0+CisKK1NwZWNpZnkgd2hl dGhlciB0aGUgZGV2aWNlIG1vZGVsIChRRU1VKSBzaG91bGQgYmUgbGF1bmNoZWQgZm9yIHRoZSBm b3JrLiBMYXRlCitsYXVuY2ggYWxsb3dzIHRvIHN0YXJ0IHRoZSBkZXZpY2UgbW9kZWwgZm9yIGFu IGFscmVhZHkgcnVubmluZyBmb3JrLgorCis9aXRlbSBCPC1DPgorCitUaGUgY29uZmlnIGZpbGUg dG8gdXNlIHdoZW4gbGF1bmNoaW5nIHRoZSBkZXZpY2UgbW9kZWwuIEN1cnJlbnRseSByZXF1aXJl ZCB3aGVuCitsYXVuY2hpbmcgdGhlIGRldmljZSBtb2RlbC4KKworPWl0ZW0gQjwtUT4KKworVGhl IHFlbXUgc2F2ZSBmaWxlIHRvIHVzZSB3aGVuIGxhdW5jaGluZyB0aGUgZGV2aWNlIG1vZGVsLiAg Q3VycmVudGx5IHJlcXVpcmVkCit3aGVuIGxhdW5jaGluZyB0aGUgZGV2aWNlIG1vZGVsLgorCis9 aXRlbSBCPC0tZm9yay1yZXNldD4KKworUGVyZm9ybSBhIHJlc2V0IG9wZXJhdGlvbiBvZiBhbiBh bHJlYWR5IHJ1bm5pbmcgZm9yay4gTm90ZSB0aGF0IHJlc2V0dGluZyBtYXkKK2JlIGxlc3MgcGVy Zm9ybWFudCB0aGVuIGNyZWF0aW5nIGEgbmV3IGZvcmsgZGVwZW5kaW5nIG9uIGhvdyBtdWNoIG1l bW9yeSB0aGUKK2ZvcmsgaGFzIGRlZHVwbGljYXRlZCBkdXJpbmcgaXRzIHJ1bnRpbWUuCisKKz1i YWNrCisKID1pdGVtIEI8c2hhcmluZz4gW0k8ZG9tYWluLWlkPl0KIAogRGlzcGxheSB0aGUgbnVt YmVyIG9mIHNoYXJlZCBwYWdlcyBmb3IgYSBzcGVjaWZpZWQgZG9tYWluLiBJZiBubyBkb21haW4g aXMKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oIGIvdG9vbHMvbGli eGMvaW5jbHVkZS94ZW5jdHJsLmgKaW5kZXggNzVmMTkxYWUzYS4uZmZiMGJiOWE0MiAxMDA2NDQK LS0tIGEvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmgKKysrIGIvdG9vbHMvbGlieGMvaW5j bHVkZS94ZW5jdHJsLmgKQEAgLTIyMjEsNiArMjIyMSwxOSBAQCBpbnQgeGNfbWVtc2hyX3Jhbmdl X3NoYXJlKHhjX2ludGVyZmFjZSAqeGNoLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50 NjRfdCBmaXJzdF9nZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGxhc3Rf Z2ZuKTsKIAoraW50IHhjX21lbXNocl9mb3JrKHhjX2ludGVyZmFjZSAqeGNoLAorICAgICAgICAg ICAgICAgICAgIHVpbnQzMl90IHNvdXJjZV9kb21haW4sCisgICAgICAgICAgICAgICAgICAgdWlu dDMyX3QgY2xpZW50X2RvbWFpbik7CisKKy8qCisgKiBOb3RlOiB0aGlzIGZ1bmN0aW9uIGlzIG9u bHkgaW50ZW5kZWQgdG8gYmUgdXNlZCBvbiBzaG9ydC1saXZlZCBmb3JrcyB0aGF0CisgKiBoYXZl bid0IHlldCBhcXVpcmVkIGEgbG90IG9mIG1lbW9yeS4gSW4gY2FzZSB0aGUgZm9yayBoYXMgYSBs b3Qgb2YgbWVtb3J5CisgKiBpdCBpcyBsaWtlbHkgbW9yZSBwZXJmb3JtYW50IHRvIGNyZWF0ZSBh IG5ldyBmb3JrIHdpdGggeGNfbWVtc2hyX2ZvcmsuCisgKgorICogV2l0aCBWTXMgdGhhdCBoYXZl IGEgbG90IG9mIG1lbW9yeSB0aGlzIGNhbGwgbWF5IGJsb2NrIGZvciBhIGxvbmcgdGltZS4KKyAq LworaW50IHhjX21lbXNocl9mb3JrX3Jlc2V0KHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBm b3JrZWRfZG9tYWluKTsKKwogLyogRGVidWcgY2FsbHM6IHJldHVybiB0aGUgbnVtYmVyIG9mIHBh Z2VzIHJlZmVyZW5jaW5nIHRoZSBzaGFyZWQgZnJhbWUgYmFja2luZwogICogdGhlIGlucHV0IGFy Z3VtZW50LiBTaG91bGQgYmUgb25lIG9yIGdyZWF0ZXIuCiAgKgpkaWZmIC0tZ2l0IGEvdG9vbHMv bGlieGMveGNfbWVtc2hyLmMgYi90b29scy9saWJ4Yy94Y19tZW1zaHIuYwppbmRleCA5N2UyZTZh OGQ5Li5kMGU0ZWUyMjViIDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy94Y19tZW1zaHIuYworKysg Yi90b29scy9saWJ4Yy94Y19tZW1zaHIuYwpAQCAtMjM5LDYgKzIzOSwyOCBAQCBpbnQgeGNfbWVt c2hyX2RlYnVnX2dyZWYoeGNfaW50ZXJmYWNlICp4Y2gsCiAgICAgcmV0dXJuIHhjX21lbXNocl9t ZW1vcCh4Y2gsIGRvbWlkLCAmbXNvKTsKIH0KIAoraW50IHhjX21lbXNocl9mb3JrKHhjX2ludGVy ZmFjZSAqeGNoLCB1aW50MzJfdCBwZG9taWQsIHVpbnQzMl90IGRvbWlkKQoreworICAgIHhlbl9t ZW1fc2hhcmluZ19vcF90IG1zbzsKKworICAgIG1lbXNldCgmbXNvLCAwLCBzaXplb2YobXNvKSk7 CisKKyAgICBtc28ub3AgPSBYRU5NRU1fc2hhcmluZ19vcF9mb3JrOworICAgIG1zby51LmZvcmsu cGFyZW50X2RvbWFpbiA9IHBkb21pZDsKKworICAgIHJldHVybiB4Y19tZW1zaHJfbWVtb3AoeGNo LCBkb21pZCwgJm1zbyk7Cit9CisKK2ludCB4Y19tZW1zaHJfZm9ya19yZXNldCh4Y19pbnRlcmZh Y2UgKnhjaCwgdWludDMyX3QgZG9taWQpCit7CisgICAgeGVuX21lbV9zaGFyaW5nX29wX3QgbXNv OworCisgICAgbWVtc2V0KCZtc28sIDAsIHNpemVvZihtc28pKTsKKyAgICBtc28ub3AgPSBYRU5N RU1fc2hhcmluZ19vcF9mb3JrX3Jlc2V0OworCisgICAgcmV0dXJuIHhjX21lbXNocl9tZW1vcCh4 Y2gsIGRvbWlkLCAmbXNvKTsKK30KKwogaW50IHhjX21lbXNocl9hdWRpdCh4Y19pbnRlcmZhY2Ug KnhjaCkKIHsKICAgICB4ZW5fbWVtX3NoYXJpbmdfb3BfdCBtc287CmRpZmYgLS1naXQgYS90b29s cy9saWJ4bC9saWJ4bC5oIGIvdG9vbHMvbGlieGwvbGlieGwuaAppbmRleCA1NGFiYjlkYjFmLi43 NWNiMDcwNTg3IDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bC5oCisrKyBiL3Rvb2xzL2xp YnhsL2xpYnhsLmgKQEAgLTE1MzYsNiArMTUzNiwxMyBAQCBpbnQgbGlieGxfZG9tYWluX2NyZWF0 ZV9uZXcobGlieGxfY3R4ICpjdHgsIGxpYnhsX2RvbWFpbl9jb25maWcgKmRfY29uZmlnLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpYnhsX2FzeW5jb3BfaG93ICphb19ob3cs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGlieGxfYXN5bmNwcm9ncmVzc19o b3cgKmFvcF9jb25zb2xlX2hvdykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJYTF9F WFRFUk5BTF9DQUxMRVJTX09OTFk7CitpbnQgbGlieGxfZG9tYWluX2Zvcmtfdm0obGlieGxfY3R4 ICpjdHgsIHVpbnQzMl90IHBkb21pZCwgdWludDMyX3QgKmRvbWlkKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMSUJYTF9FWFRFUk5BTF9DQUxMRVJTX09OTFk7CitpbnQgbGlieGxfZG9t YWluX2ZvcmtfbGF1bmNoX2RtKGxpYnhsX2N0eCAqY3R4LCBsaWJ4bF9kb21haW5fY29uZmlnICpk X2NvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZG9taWQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpYnhsX2FzeW5jcHJvZ3Jl c3NfaG93ICphb3BfY29uc29sZV9ob3cpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IExJQlhMX0VYVEVSTkFMX0NBTExFUlNfT05MWTsKK2ludCBsaWJ4bF9kb21haW5fZm9ya19yZXNl dChsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQpOwogaW50IGxpYnhsX2RvbWFpbl9jcmVh dGVfcmVzdG9yZShsaWJ4bF9jdHggKmN0eCwgbGlieGxfZG9tYWluX2NvbmZpZyAqZF9jb25maWcs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpkb21pZCwgaW50IHJl c3RvcmVfZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZW5kX2JhY2tf ZmQsCmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF9jcmVhdGUuYyBiL3Rvb2xzL2xpYnhs L2xpYnhsX2NyZWF0ZS5jCmluZGV4IDMyZDQ1ZGNlZjAuLmUwZDIxOTU5NmMgMTAwNjQ0Ci0tLSBh L3Rvb2xzL2xpYnhsL2xpYnhsX2NyZWF0ZS5jCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2NyZWF0 ZS5jCkBAIC01MzYsMTIgKzUzNiwxMiBAQCBvdXQ6CiAgICAgcmV0dXJuIHJldDsKIH0KIAotaW50 IGxpYnhsX19kb21haW5fbWFrZShsaWJ4bF9fZ2MgKmdjLCBsaWJ4bF9kb21haW5fY29uZmlnICpk X2NvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX2RvbWFpbl9idWlsZF9zdGF0 ZSAqc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpkb21pZCkKK3N0YXRp YyBpbnQgbGlieGxfX2RvbWFpbl9tYWtlX3hzX2VudHJpZXMobGlieGxfX2djICpnYywgbGlieGxf ZG9tYWluX2NvbmZpZyAqZF9jb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxpYnhsX19kb21haW5fYnVpbGRfc3RhdGUgKnN0YXRlLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBkb21pZCkKIHsKICAgICBsaWJ4 bF9jdHggKmN0eCA9IGxpYnhsX19nY19vd25lcihnYyk7Ci0gICAgaW50IHJldCwgcmMsIG5iX3Zt OworICAgIGludCByYywgbmJfdm07CiAgICAgY29uc3QgY2hhciAqZG9tX3R5cGU7CiAgICAgY2hh ciAqdXVpZF9zdHJpbmc7CiAgICAgY2hhciAqZG9tX3BhdGgsICp2bV9wYXRoLCAqbGlieGxfcGF0 aDsKQEAgLTU1Myw3ICs1NTMsNiBAQCBpbnQgbGlieGxfX2RvbWFpbl9tYWtlKGxpYnhsX19nYyAq Z2MsIGxpYnhsX2RvbWFpbl9jb25maWcgKmRfY29uZmlnLAogCiAgICAgLyogY29udmVuaWVuY2Ug YWxpYXNlcyAqLwogICAgIGxpYnhsX2RvbWFpbl9jcmVhdGVfaW5mbyAqaW5mbyA9ICZkX2NvbmZp Zy0+Y19pbmZvOwotICAgIGxpYnhsX2RvbWFpbl9idWlsZF9pbmZvICpiX2luZm8gPSAmZF9jb25m aWctPmJfaW5mbzsKIAogICAgIHV1aWRfc3RyaW5nID0gbGlieGxfX3V1aWQyc3RyaW5nKGdjLCBp bmZvLT51dWlkKTsKICAgICBpZiAoIXV1aWRfc3RyaW5nKSB7CkBAIC01NjEsNjQgKzU2MCw3IEBA IGludCBsaWJ4bF9fZG9tYWluX21ha2UobGlieGxfX2djICpnYywgbGlieGxfZG9tYWluX2NvbmZp ZyAqZF9jb25maWcsCiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KIAotICAgIC8qIFZhbGlkIGRv bWlkIGhlcmUgbWVhbnMgd2UncmUgc29mdCByZXNldHRpbmcuICovCi0gICAgaWYgKCFsaWJ4bF9k b21pZF92YWxpZF9ndWVzdCgqZG9taWQpKSB7Ci0gICAgICAgIHN0cnVjdCB4ZW5fZG9tY3RsX2Ny ZWF0ZWRvbWFpbiBjcmVhdGUgPSB7Ci0gICAgICAgICAgICAuc3NpZHJlZiA9IGluZm8tPnNzaWRy ZWYsCi0gICAgICAgICAgICAubWF4X3ZjcHVzID0gYl9pbmZvLT5tYXhfdmNwdXMsCi0gICAgICAg ICAgICAubWF4X2V2dGNobl9wb3J0ID0gYl9pbmZvLT5ldmVudF9jaGFubmVscywKLSAgICAgICAg ICAgIC5tYXhfZ3JhbnRfZnJhbWVzID0gYl9pbmZvLT5tYXhfZ3JhbnRfZnJhbWVzLAotICAgICAg ICAgICAgLm1heF9tYXB0cmFja19mcmFtZXMgPSBiX2luZm8tPm1heF9tYXB0cmFja19mcmFtZXMs Ci0gICAgICAgIH07Ci0KLSAgICAgICAgaWYgKGluZm8tPnR5cGUgIT0gTElCWExfRE9NQUlOX1RZ UEVfUFYpIHsKLSAgICAgICAgICAgIGNyZWF0ZS5mbGFncyB8PSBYRU5fRE9NQ1RMX0NERl9odm07 Ci0gICAgICAgICAgICBjcmVhdGUuZmxhZ3MgfD0KLSAgICAgICAgICAgICAgICBsaWJ4bF9kZWZi b29sX3ZhbChpbmZvLT5oYXApID8gWEVOX0RPTUNUTF9DREZfaGFwIDogMDsKLSAgICAgICAgICAg IGNyZWF0ZS5mbGFncyB8PQotICAgICAgICAgICAgICAgIGxpYnhsX2RlZmJvb2xfdmFsKGluZm8t Pm9vcykgPyAwIDogWEVOX0RPTUNUTF9DREZfb29zX29mZjsKLSAgICAgICAgfQotCi0gICAgICAg IGFzc2VydChpbmZvLT5wYXNzdGhyb3VnaCAhPSBMSUJYTF9QQVNTVEhST1VHSF9ERUZBVUxUKTsK LSAgICAgICAgTE9HKERFVEFJTCwgInBhc3N0aHJvdWdoOiAlcyIsCi0gICAgICAgICAgICBsaWJ4 bF9wYXNzdGhyb3VnaF90b19zdHJpbmcoaW5mby0+cGFzc3Rocm91Z2gpKTsKLQotICAgICAgICBp ZiAoaW5mby0+cGFzc3Rocm91Z2ggIT0gTElCWExfUEFTU1RIUk9VR0hfRElTQUJMRUQpCi0gICAg ICAgICAgICBjcmVhdGUuZmxhZ3MgfD0gWEVOX0RPTUNUTF9DREZfaW9tbXU7Ci0KLSAgICAgICAg aWYgKGluZm8tPnBhc3N0aHJvdWdoID09IExJQlhMX1BBU1NUSFJPVUdIX1NZTkNfUFQpCi0gICAg ICAgICAgICBjcmVhdGUuaW9tbXVfb3B0cyB8PSBYRU5fRE9NQ1RMX0lPTU1VX25vX3NoYXJlcHQ7 Ci0KLSAgICAgICAgLyogVWx0aW1hdGVseSwgaGFuZGxlIGlzIGFuIGFycmF5IG9mIDE2IHVpbnQ4 X3QsIHNhbWUgYXMgdXVpZCAqLwotICAgICAgICBsaWJ4bF91dWlkX2NvcHkoY3R4LCAobGlieGxf dXVpZCAqKSZjcmVhdGUuaGFuZGxlLCAmaW5mby0+dXVpZCk7Ci0KLSAgICAgICAgcmV0ID0gbGli eGxfX2FyY2hfZG9tYWluX3ByZXBhcmVfY29uZmlnKGdjLCBkX2NvbmZpZywgJmNyZWF0ZSk7Ci0g ICAgICAgIGlmIChyZXQgPCAwKSB7Ci0gICAgICAgICAgICBMT0dFRChFUlJPUiwgKmRvbWlkLCAi ZmFpbCB0byBnZXQgZG9tYWluIGNvbmZpZyIpOwotICAgICAgICAgICAgcmMgPSBFUlJPUl9GQUlM OwotICAgICAgICAgICAgZ290byBvdXQ7Ci0gICAgICAgIH0KLQotICAgICAgICByZXQgPSB4Y19k b21haW5fY3JlYXRlKGN0eC0+eGNoLCBkb21pZCwgJmNyZWF0ZSk7Ci0gICAgICAgIGlmIChyZXQg PCAwKSB7Ci0gICAgICAgICAgICBMT0dFRChFUlJPUiwgKmRvbWlkLCAiZG9tYWluIGNyZWF0aW9u IGZhaWwiKTsKLSAgICAgICAgICAgIHJjID0gRVJST1JfRkFJTDsKLSAgICAgICAgICAgIGdvdG8g b3V0OwotICAgICAgICB9Ci0KLSAgICAgICAgcmMgPSBsaWJ4bF9fYXJjaF9kb21haW5fc2F2ZV9j b25maWcoZ2MsIGRfY29uZmlnLCBzdGF0ZSwgJmNyZWF0ZSk7Ci0gICAgICAgIGlmIChyYyA8IDAp Ci0gICAgICAgICAgICBnb3RvIG91dDsKLSAgICB9Ci0KLSAgICByZXQgPSB4Y19jcHVwb29sX21v dmVkb21haW4oY3R4LT54Y2gsIGluZm8tPnBvb2xpZCwgKmRvbWlkKTsKLSAgICBpZiAocmV0IDwg MCkgewotICAgICAgICBMT0dFRChFUlJPUiwgKmRvbWlkLCAiZG9tYWluIG1vdmUgZmFpbCIpOwot ICAgICAgICByYyA9IEVSUk9SX0ZBSUw7Ci0gICAgICAgIGdvdG8gb3V0OwotICAgIH0KLQotICAg IGRvbV9wYXRoID0gbGlieGxfX3hzX2dldF9kb21wYXRoKGdjLCAqZG9taWQpOworICAgIGRvbV9w YXRoID0gbGlieGxfX3hzX2dldF9kb21wYXRoKGdjLCBkb21pZCk7CiAgICAgaWYgKCFkb21fcGF0 aCkgewogICAgICAgICByYyA9IEVSUk9SX0ZBSUw7CiAgICAgICAgIGdvdG8gb3V0OwpAQCAtNjI2 LDEyICs1NjgsMTIgQEAgaW50IGxpYnhsX19kb21haW5fbWFrZShsaWJ4bF9fZ2MgKmdjLCBsaWJ4 bF9kb21haW5fY29uZmlnICpkX2NvbmZpZywKIAogICAgIHZtX3BhdGggPSBHQ1NQUklOVEYoIi92 bS8lcyIsIHV1aWRfc3RyaW5nKTsKICAgICBpZiAoIXZtX3BhdGgpIHsKLSAgICAgICAgTE9HRChF UlJPUiwgKmRvbWlkLCAiY2Fubm90IGFsbG9jYXRlIGNyZWF0ZSBwYXRocyIpOworICAgICAgICBM T0dEKEVSUk9SLCBkb21pZCwgImNhbm5vdCBhbGxvY2F0ZSBjcmVhdGUgcGF0aHMiKTsKICAgICAg ICAgcmMgPSBFUlJPUl9GQUlMOwogICAgICAgICBnb3RvIG91dDsKICAgICB9CiAKLSAgICBsaWJ4 bF9wYXRoID0gbGlieGxfX3hzX2xpYnhsX3BhdGgoZ2MsICpkb21pZCk7CisgICAgbGlieGxfcGF0 aCA9IGxpYnhsX194c19saWJ4bF9wYXRoKGdjLCBkb21pZCk7CiAgICAgaWYgKCFsaWJ4bF9wYXRo KSB7CiAgICAgICAgIHJjID0gRVJST1JfRkFJTDsKICAgICAgICAgZ290byBvdXQ7CkBAIC02NDIs MTAgKzU4NCwxMCBAQCBpbnQgbGlieGxfX2RvbWFpbl9tYWtlKGxpYnhsX19nYyAqZ2MsIGxpYnhs X2RvbWFpbl9jb25maWcgKmRfY29uZmlnLAogCiAgICAgcm9wZXJtWzBdLmlkID0gMDsKICAgICBy b3Blcm1bMF0ucGVybXMgPSBYU19QRVJNX05PTkU7Ci0gICAgcm9wZXJtWzFdLmlkID0gKmRvbWlk OworICAgIHJvcGVybVsxXS5pZCA9IGRvbWlkOwogICAgIHJvcGVybVsxXS5wZXJtcyA9IFhTX1BF Uk1fUkVBRDsKIAotICAgIHJ3cGVybVswXS5pZCA9ICpkb21pZDsKKyAgICByd3Blcm1bMF0uaWQg PSBkb21pZDsKICAgICByd3Blcm1bMF0ucGVybXMgPSBYU19QRVJNX05PTkU7CiAKIHJldHJ5X3Ry YW5zYWN0aW9uOgpAQCAtNjYzLDcgKzYwNSw3IEBAIHJldHJ5X3RyYW5zYWN0aW9uOgogICAgICAg ICAgICAgICAgICAgICBub3Blcm0sIEFSUkFZX1NJWkUobm9wZXJtKSk7CiAKICAgICB4c193cml0 ZShjdHgtPnhzaCwgdCwgR0NTUFJJTlRGKCIlcy92bSIsIGRvbV9wYXRoKSwgdm1fcGF0aCwgc3Ry bGVuKHZtX3BhdGgpKTsKLSAgICByYyA9IGxpYnhsX19kb21haW5fcmVuYW1lKGdjLCAqZG9taWQs IDAsIGluZm8tPm5hbWUsIHQpOworICAgIHJjID0gbGlieGxfX2RvbWFpbl9yZW5hbWUoZ2MsIGRv bWlkLCAwLCBpbmZvLT5uYW1lLCB0KTsKICAgICBpZiAocmMpCiAgICAgICAgIGdvdG8gb3V0Owog CkBAIC03NDAsNyArNjgyLDcgQEAgcmV0cnlfdHJhbnNhY3Rpb246CiAKICAgICB2bV9saXN0ID0g bGlieGxfbGlzdF92bShjdHgsICZuYl92bSk7CiAgICAgaWYgKCF2bV9saXN0KSB7Ci0gICAgICAg IExPR0QoRVJST1IsICpkb21pZCwgImNhbm5vdCBnZXQgbnVtYmVyIG9mIHJ1bm5pbmcgZ3Vlc3Rz Iik7CisgICAgICAgIExPR0QoRVJST1IsIGRvbWlkLCAiY2Fubm90IGdldCBudW1iZXIgb2YgcnVu bmluZyBndWVzdHMiKTsKICAgICAgICAgcmMgPSBFUlJPUl9GQUlMOwogICAgICAgICBnb3RvIG91 dDsKICAgICB9CkBAIC03NjQsNyArNzA2LDcgQEAgcmV0cnlfdHJhbnNhY3Rpb246CiAgICAgICAg ICAgICB0ID0gMDsKICAgICAgICAgICAgIGdvdG8gcmV0cnlfdHJhbnNhY3Rpb247CiAgICAgICAg IH0KLSAgICAgICAgTE9HRUQoRVJST1IsICpkb21pZCwgImRvbWFpbiBjcmVhdGlvbiAiInhlbnN0 b3JlIHRyYW5zYWN0aW9uIGNvbW1pdCBmYWlsZWQiKTsKKyAgICAgICAgTE9HRUQoRVJST1IsIGRv bWlkLCAiZG9tYWluIGNyZWF0aW9uICIieGVuc3RvcmUgdHJhbnNhY3Rpb24gY29tbWl0IGZhaWxl ZCIpOwogICAgICAgICByYyA9IEVSUk9SX0ZBSUw7CiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0K QEAgLTc3Niw2ICs3MTgsODAgQEAgcmV0cnlfdHJhbnNhY3Rpb246CiAgICAgcmV0dXJuIHJjOwog fQogCitpbnQgbGlieGxfX2RvbWFpbl9tYWtlKGxpYnhsX19nYyAqZ2MsIGxpYnhsX2RvbWFpbl9j b25maWcgKmRfY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9fZG9tYWluX2J1 aWxkX3N0YXRlICpzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKmRvbWlk KQoreworICAgIGxpYnhsX2N0eCAqY3R4ID0gbGlieGxfX2djX293bmVyKGdjKTsKKyAgICBpbnQg cmV0LCByYzsKKworICAgIC8qIGNvbnZlbmllbmNlIGFsaWFzZXMgKi8KKyAgICBsaWJ4bF9kb21h aW5fY3JlYXRlX2luZm8gKmluZm8gPSAmZF9jb25maWctPmNfaW5mbzsKKyAgICBsaWJ4bF9kb21h aW5fYnVpbGRfaW5mbyAqYl9pbmZvID0gJmRfY29uZmlnLT5iX2luZm87CisKKyAgICAvKiBWYWxp ZCBkb21pZCBoZXJlIG1lYW5zIHdlJ3JlIHNvZnQgcmVzZXR0aW5nLiAqLworICAgIGlmICghbGli eGxfZG9taWRfdmFsaWRfZ3Vlc3QoKmRvbWlkKSkgeworICAgICAgICBzdHJ1Y3QgeGVuX2RvbWN0 bF9jcmVhdGVkb21haW4gY3JlYXRlID0geworICAgICAgICAgICAgLnNzaWRyZWYgPSBpbmZvLT5z c2lkcmVmLAorICAgICAgICAgICAgLm1heF92Y3B1cyA9IGJfaW5mby0+bWF4X3ZjcHVzLAorICAg ICAgICAgICAgLm1heF9ldnRjaG5fcG9ydCA9IGJfaW5mby0+ZXZlbnRfY2hhbm5lbHMsCisgICAg ICAgICAgICAubWF4X2dyYW50X2ZyYW1lcyA9IGJfaW5mby0+bWF4X2dyYW50X2ZyYW1lcywKKyAg ICAgICAgICAgIC5tYXhfbWFwdHJhY2tfZnJhbWVzID0gYl9pbmZvLT5tYXhfbWFwdHJhY2tfZnJh bWVzLAorICAgICAgICB9OworCisgICAgICAgIGlmIChpbmZvLT50eXBlICE9IExJQlhMX0RPTUFJ Tl9UWVBFX1BWKSB7CisgICAgICAgICAgICBjcmVhdGUuZmxhZ3MgfD0gWEVOX0RPTUNUTF9DREZf aHZtOworICAgICAgICAgICAgY3JlYXRlLmZsYWdzIHw9CisgICAgICAgICAgICAgICAgbGlieGxf ZGVmYm9vbF92YWwoaW5mby0+aGFwKSA/IFhFTl9ET01DVExfQ0RGX2hhcCA6IDA7CisgICAgICAg ICAgICBjcmVhdGUuZmxhZ3MgfD0KKyAgICAgICAgICAgICAgICBsaWJ4bF9kZWZib29sX3ZhbChp bmZvLT5vb3MpID8gMCA6IFhFTl9ET01DVExfQ0RGX29vc19vZmY7CisgICAgICAgIH0KKworICAg ICAgICBhc3NlcnQoaW5mby0+cGFzc3Rocm91Z2ggIT0gTElCWExfUEFTU1RIUk9VR0hfREVGQVVM VCk7CisgICAgICAgIExPRyhERVRBSUwsICJwYXNzdGhyb3VnaDogJXMiLAorICAgICAgICAgICAg bGlieGxfcGFzc3Rocm91Z2hfdG9fc3RyaW5nKGluZm8tPnBhc3N0aHJvdWdoKSk7CisKKyAgICAg ICAgaWYgKGluZm8tPnBhc3N0aHJvdWdoICE9IExJQlhMX1BBU1NUSFJPVUdIX0RJU0FCTEVEKQor ICAgICAgICAgICAgY3JlYXRlLmZsYWdzIHw9IFhFTl9ET01DVExfQ0RGX2lvbW11OworCisgICAg ICAgIGlmIChpbmZvLT5wYXNzdGhyb3VnaCA9PSBMSUJYTF9QQVNTVEhST1VHSF9TWU5DX1BUKQor ICAgICAgICAgICAgY3JlYXRlLmlvbW11X29wdHMgfD0gWEVOX0RPTUNUTF9JT01NVV9ub19zaGFy ZXB0OworCisgICAgICAgIC8qIFVsdGltYXRlbHksIGhhbmRsZSBpcyBhbiBhcnJheSBvZiAxNiB1 aW50OF90LCBzYW1lIGFzIHV1aWQgKi8KKyAgICAgICAgbGlieGxfdXVpZF9jb3B5KGN0eCwgKGxp YnhsX3V1aWQgKikmY3JlYXRlLmhhbmRsZSwgJmluZm8tPnV1aWQpOworCisgICAgICAgIHJldCA9 IGxpYnhsX19hcmNoX2RvbWFpbl9wcmVwYXJlX2NvbmZpZyhnYywgZF9jb25maWcsICZjcmVhdGUp OworICAgICAgICBpZiAocmV0IDwgMCkgeworICAgICAgICAgICAgTE9HRUQoRVJST1IsICpkb21p ZCwgImZhaWwgdG8gZ2V0IGRvbWFpbiBjb25maWciKTsKKyAgICAgICAgICAgIHJjID0gRVJST1Jf RkFJTDsKKyAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICB9CisKKyAgICAgICAgcmV0ID0g eGNfZG9tYWluX2NyZWF0ZShjdHgtPnhjaCwgZG9taWQsICZjcmVhdGUpOworICAgICAgICBpZiAo cmV0IDwgMCkgeworICAgICAgICAgICAgTE9HRUQoRVJST1IsICpkb21pZCwgImRvbWFpbiBjcmVh dGlvbiBmYWlsIik7CisgICAgICAgICAgICByYyA9IEVSUk9SX0ZBSUw7CisgICAgICAgICAgICBn b3RvIG91dDsKKyAgICAgICAgfQorCisgICAgICAgIHJjID0gbGlieGxfX2FyY2hfZG9tYWluX3Nh dmVfY29uZmlnKGdjLCBkX2NvbmZpZywgc3RhdGUsICZjcmVhdGUpOworICAgICAgICBpZiAocmMg PCAwKQorICAgICAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgcmV0ID0geGNfY3B1cG9v bF9tb3ZlZG9tYWluKGN0eC0+eGNoLCBpbmZvLT5wb29saWQsICpkb21pZCk7CisgICAgaWYgKHJl dCA8IDApIHsKKyAgICAgICAgTE9HRUQoRVJST1IsICpkb21pZCwgImRvbWFpbiBtb3ZlIGZhaWwi KTsKKyAgICAgICAgcmMgPSBFUlJPUl9GQUlMOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisK KyAgICByYyA9IGxpYnhsX19kb21haW5fbWFrZV94c19lbnRyaWVzKGdjLCBkX2NvbmZpZywgc3Rh dGUsICpkb21pZCk7CisKK291dDoKKyAgICByZXR1cm4gcmM7Cit9CisKIHN0YXRpYyBpbnQgc3Rv cmVfbGlieGxfZW50cnkobGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGxpYnhsX2RvbWFpbl9idWlsZF9pbmZvICpiX2luZm8pCiB7CkBA IC0xMDk3LDE1ICsxMTEzLDMxIEBAIHN0YXRpYyB2b2lkIGluaXRpYXRlX2RvbWFpbl9jcmVhdGUo bGlieGxfX2VnYyAqZWdjLAogICAgIHJldCA9IGxpYnhsX19kb21haW5fY29uZmlnX3NldGRlZmF1 bHQoZ2MsZF9jb25maWcsZG9taWQpOwogICAgIGlmIChyZXQpIGdvdG8gZXJyb3Jfb3V0OwogCi0g ICAgcmV0ID0gbGlieGxfX2RvbWFpbl9tYWtlKGdjLCBkX2NvbmZpZywgJmRjcy0+YnVpbGRfc3Rh dGUsICZkb21pZCk7Ci0gICAgaWYgKHJldCkgewotICAgICAgICBMT0dEKEVSUk9SLCBkb21pZCwg ImNhbm5vdCBtYWtlIGRvbWFpbjogJWQiLCByZXQpOworICAgIGlmICggIWRfY29uZmlnLT5kbV9y ZXN0b3JlX2ZpbGUgKQorICAgIHsKKyAgICAgICAgcmV0ID0gbGlieGxfX2RvbWFpbl9tYWtlKGdj LCBkX2NvbmZpZywgJmRjcy0+YnVpbGRfc3RhdGUsICZkb21pZCk7CiAgICAgICAgIGRjcy0+Z3Vl c3RfZG9taWQgPSBkb21pZDsKKworICAgICAgICBpZiAocmV0KSB7CisgICAgICAgICAgICBMT0dE KEVSUk9SLCBkb21pZCwgImNhbm5vdCBtYWtlIGRvbWFpbjogJWQiLCByZXQpOworICAgICAgICAg ICAgcmV0ID0gRVJST1JfRkFJTDsKKyAgICAgICAgICAgIGdvdG8gZXJyb3Jfb3V0OworICAgICAg ICB9CisgICAgfSBlbHNlIGlmICggZGNzLT5ndWVzdF9kb21pZCAhPSBJTlZBTElEX0RPTUlEICkg eworICAgICAgICBkb21pZCA9IGRjcy0+Z3Vlc3RfZG9taWQ7CisKKyAgICAgICAgcmV0ID0gbGli eGxfX2RvbWFpbl9tYWtlX3hzX2VudHJpZXMoZ2MsIGRfY29uZmlnLCAmZGNzLT5idWlsZF9zdGF0 ZSwgZG9taWQpOworICAgICAgICBpZiAocmV0KSB7CisgICAgICAgICAgICBMT0dEKEVSUk9SLCBk b21pZCwgImNhbm5vdCBtYWtlIGRvbWFpbjogJWQiLCByZXQpOworICAgICAgICAgICAgcmV0ID0g RVJST1JfRkFJTDsKKyAgICAgICAgICAgIGdvdG8gZXJyb3Jfb3V0OworICAgICAgICB9CisgICAg fSBlbHNlIHsKKyAgICAgICAgTE9HRChFUlJPUiwgZG9taWQsICJjYW5ub3QgbWFrZSBkb21haW4i KTsKICAgICAgICAgcmV0ID0gRVJST1JfRkFJTDsKICAgICAgICAgZ290byBlcnJvcl9vdXQ7CiAg ICAgfQogCi0gICAgZGNzLT5ndWVzdF9kb21pZCA9IGRvbWlkOwogICAgIGRjcy0+c2Rzcy5kbS5n dWVzdF9kb21pZCA9IDA7IC8qIG1lYW5zIHdlIGhhdmVuJ3Qgc3Bhd25lZCAqLwogCiAgICAgLyog cG9zdC00LjEzIHRvZG86IG1vdmUgdGhlc2UgbmV4dCBiaXRzIG9mIGRlZmF1bHRpbmcgdG8KQEAg LTExNDEsNyArMTE3Myw3IEBAIHN0YXRpYyB2b2lkIGluaXRpYXRlX2RvbWFpbl9jcmVhdGUobGli eGxfX2VnYyAqZWdjLAogICAgIGlmIChyZXQpCiAgICAgICAgIGdvdG8gZXJyb3Jfb3V0OwogCi0g ICAgaWYgKHJlc3RvcmVfZmQgPj0gMCB8fCBkY3MtPmRvbWlkX3NvZnRfcmVzZXQgIT0gSU5WQUxJ RF9ET01JRCkgeworICAgIGlmIChyZXN0b3JlX2ZkID49IDAgfHwgZGNzLT5kb21pZF9zb2Z0X3Jl c2V0ICE9IElOVkFMSURfRE9NSUQgfHwgZF9jb25maWctPmRtX3Jlc3RvcmVfZmlsZSkgewogICAg ICAgICBMT0dEKERFQlVHLCBkb21pZCwgInJlc3RvcmluZywgbm90IHJ1bm5pbmcgYm9vdGxvYWRl ciIpOwogICAgICAgICBkb21jcmVhdGVfYm9vdGxvYWRlcl9kb25lKGVnYywgJmRjcy0+YmwsIDAp OwogICAgIH0gZWxzZSAgewpAQCAtMTIxNyw3ICsxMjQ5LDE2IEBAIHN0YXRpYyB2b2lkIGRvbWNy ZWF0ZV9ib290bG9hZGVyX2RvbmUobGlieGxfX2VnYyAqZWdjLAogICAgIGRjcy0+c2Rzcy5kbS5j YWxsYmFjayA9IGRvbWNyZWF0ZV9kZXZtb2RlbF9zdGFydGVkOwogICAgIGRjcy0+c2Rzcy5jYWxs YmFjayA9IGRvbWNyZWF0ZV9kZXZtb2RlbF9zdGFydGVkOwogCi0gICAgaWYgKHJlc3RvcmVfZmQg PCAwICYmIGRjcy0+ZG9taWRfc29mdF9yZXNldCA9PSBJTlZBTElEX0RPTUlEKSB7CisgICAgaWYg KHJlc3RvcmVfZmQgPCAwICYmIGRjcy0+ZG9taWRfc29mdF9yZXNldCA9PSBJTlZBTElEX0RPTUlE ICYmICFkX2NvbmZpZy0+ZG1fcmVzdG9yZV9maWxlKSB7CisgICAgICAgIHJjID0gbGlieGxfX2Rv bWFpbl9idWlsZChnYywgZF9jb25maWcsIGRvbWlkLCBzdGF0ZSk7CisgICAgICAgIGRvbWNyZWF0 ZV9yZWJ1aWxkX2RvbmUoZWdjLCBkY3MsIHJjKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor ICAgIGlmICggZF9jb25maWctPmRtX3Jlc3RvcmVfZmlsZSApIHsKKyAgICAgICAgZGNzLT5zcnMu ZGNzID0gZGNzOworICAgICAgICBkY3MtPnNycy5hbyA9IGFvOworICAgICAgICBzdGF0ZS0+Zm9y a2VkX3ZtID0gdHJ1ZTsKICAgICAgICAgcmMgPSBsaWJ4bF9fZG9tYWluX2J1aWxkKGdjLCBkX2Nv bmZpZywgZG9taWQsIHN0YXRlKTsKICAgICAgICAgZG9tY3JlYXRlX3JlYnVpbGRfZG9uZShlZ2Ms IGRjcywgcmMpOwogICAgICAgICByZXR1cm47CkBAIC0xNDE1LDYgKzE0NTYsNyBAQCBzdGF0aWMg dm9pZCBkb21jcmVhdGVfcmVidWlsZF9kb25lKGxpYnhsX19lZ2MgKmVnYywKICAgICAvKiBjb252 ZW5pZW5jZSBhbGlhc2VzICovCiAgICAgY29uc3QgdWludDMyX3QgZG9taWQgPSBkY3MtPmd1ZXN0 X2RvbWlkOwogICAgIGxpYnhsX2RvbWFpbl9jb25maWcgKmNvbnN0IGRfY29uZmlnID0gZGNzLT5n dWVzdF9jb25maWc7CisgICAgbGlieGxfX2RvbWFpbl9idWlsZF9zdGF0ZSAqY29uc3Qgc3RhdGUg PSAmZGNzLT5idWlsZF9zdGF0ZTsKIAogICAgIGlmIChyZXQpIHsKICAgICAgICAgTE9HRChFUlJP UiwgZG9taWQsICJjYW5ub3QgKHJlLSlidWlsZCBkb21haW46ICVkIiwgcmV0KTsKQEAgLTE0MjIs NiArMTQ2NCw5IEBAIHN0YXRpYyB2b2lkIGRvbWNyZWF0ZV9yZWJ1aWxkX2RvbmUobGlieGxfX2Vn YyAqZWdjLAogICAgICAgICBnb3RvIGVycm9yX291dDsKICAgICB9CiAKKyAgICBpZiAoIGRfY29u ZmlnLT5kbV9yZXN0b3JlX2ZpbGUgKQorICAgICAgICBzdGF0ZS0+c2F2ZWRfc3RhdGUgPSBHQ1NQ UklOVEYoIiVzIiwgZF9jb25maWctPmRtX3Jlc3RvcmVfZmlsZSk7CisKICAgICBzdG9yZV9saWJ4 bF9lbnRyeShnYywgZG9taWQsICZkX2NvbmZpZy0+Yl9pbmZvKTsKIAogICAgIGxpYnhsX19tdWx0 aWRldl9iZWdpbihhbywgJmRjcy0+bXVsdGlkZXYpOwpAQCAtMTgyMywxMCArMTg2OCwxMyBAQCBz dGF0aWMgaW50IGRvX2RvbWFpbl9jcmVhdGUobGlieGxfY3R4ICpjdHgsIGxpYnhsX2RvbWFpbl9j b25maWcgKmRfY29uZmlnLAogICAgIEdDTkVXKGNkY3MpOwogICAgIGNkY3MtPmRjcy5hbyA9IGFv OwogICAgIGNkY3MtPmRjcy5ndWVzdF9jb25maWcgPSBkX2NvbmZpZzsKKyAgICBjZGNzLT5kY3Mu Z3Vlc3RfZG9taWQgPSAqZG9taWQ7CisKICAgICBsaWJ4bF9kb21haW5fY29uZmlnX2luaXQoJmNk Y3MtPmRjcy5ndWVzdF9jb25maWdfc2F2ZWQpOwogICAgIGxpYnhsX2RvbWFpbl9jb25maWdfY29w eShjdHgsICZjZGNzLT5kY3MuZ3Vlc3RfY29uZmlnX3NhdmVkLCBkX2NvbmZpZyk7CiAgICAgY2Rj cy0+ZGNzLnJlc3RvcmVfZmQgPSBjZGNzLT5kY3MubGlieGNfZmQgPSByZXN0b3JlX2ZkOwogICAg IGNkY3MtPmRjcy5zZW5kX2JhY2tfZmQgPSBzZW5kX2JhY2tfZmQ7CisKICAgICBpZiAocmVzdG9y ZV9mZCA+IC0xKSB7CiAgICAgICAgIGNkY3MtPmRjcy5yZXN0b3JlX3BhcmFtcyA9ICpwYXJhbXM7 CiAgICAgICAgIHJjID0gbGlieGxfX2ZkX2ZsYWdzX21vZGlmeV9zYXZlKGdjLCBjZGNzLT5kY3Mu cmVzdG9yZV9mZCwKQEAgLTIwNjksNiArMjExNyw0MyBAQCBpbnQgbGlieGxfZG9tYWluX2NyZWF0 ZV9uZXcobGlieGxfY3R4ICpjdHgsIGxpYnhsX2RvbWFpbl9jb25maWcgKmRfY29uZmlnLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGFvX2hvdywgYW9wX2NvbnNvbGVfaG93KTsKIH0KIAor aW50IGxpYnhsX2RvbWFpbl9mb3JrX3ZtKGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBwZG9taWQs IHVpbnQzMl90ICpkb21pZCkKK3sKKyAgICBpbnQgcmM7CisgICAgc3RydWN0IHhlbl9kb21jdGxf Y3JlYXRlZG9tYWluIGNyZWF0ZSA9IHswfTsKKyAgICBjcmVhdGUuZmxhZ3MgfD0gWEVOX0RPTUNU TF9DREZfaHZtOworICAgIGNyZWF0ZS5mbGFncyB8PSBYRU5fRE9NQ1RMX0NERl9oYXA7CisgICAg Y3JlYXRlLmZsYWdzIHw9IFhFTl9ET01DVExfQ0RGX29vc19vZmY7CisgICAgY3JlYXRlLmFyY2gu ZW11bGF0aW9uX2ZsYWdzID0gKFhFTl9YODZfRU1VX0FMTCAmIH5YRU5fWDg2X0VNVV9WUENJKTsK KworICAgIGNyZWF0ZS5zc2lkcmVmID0gU0VDSU5JVFNJRF9ET01VOworICAgIGNyZWF0ZS5tYXhf dmNwdXMgPSAxOyAvLyBwbGFjZWhvbGRlciwgd2lsbCBiZSBjbG9uZWQgZnJvbSBwZG9taWQKKyAg ICBjcmVhdGUubWF4X2V2dGNobl9wb3J0ID0gMTAyMzsKKyAgICBjcmVhdGUubWF4X2dyYW50X2Zy YW1lcyA9IExJQlhMX01BWF9HUkFOVF9GUkFNRVNfREVGQVVMVDsKKyAgICBjcmVhdGUubWF4X21h cHRyYWNrX2ZyYW1lcyA9IExJQlhMX01BWF9NQVBUUkFDS19GUkFNRVNfREVGQVVMVDsKKworICAg IGlmICggKHJjID0geGNfZG9tYWluX2NyZWF0ZShjdHgtPnhjaCwgZG9taWQsICZjcmVhdGUpKSAp CisgICAgICAgIHJldHVybiByYzsKKworICAgIGlmICggKHJjID0geGNfbWVtc2hyX2ZvcmsoY3R4 LT54Y2gsIHBkb21pZCwgKmRvbWlkKSkgKQorICAgICAgICB4Y19kb21haW5fZGVzdHJveShjdHgt PnhjaCwgKmRvbWlkKTsKKworICAgIHJldHVybiByYzsKK30KKworaW50IGxpYnhsX2RvbWFpbl9m b3JrX2xhdW5jaF9kbShsaWJ4bF9jdHggKmN0eCwgbGlieGxfZG9tYWluX2NvbmZpZyAqZF9jb25m aWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGRvbWlkLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsaWJ4bF9hc3luY3Byb2dyZXNzX2hv dyAqYW9wX2NvbnNvbGVfaG93KQoreworICAgIHVuc2V0X2Rpc2tfY29sb19yZXN0b3JlKGRfY29u ZmlnKTsKKyAgICByZXR1cm4gZG9fZG9tYWluX2NyZWF0ZShjdHgsIGRfY29uZmlnLCAmZG9taWQs IC0xLCAtMSwgMCwgMCwgYW9wX2NvbnNvbGVfaG93KTsKK30KKworaW50IGxpYnhsX2RvbWFpbl9m b3JrX3Jlc2V0KGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCkKK3sKKyAgICByZXR1cm4g eGNfbWVtc2hyX2ZvcmtfcmVzZXQoY3R4LT54Y2gsIGRvbWlkKTsKK30KKwogaW50IGxpYnhsX2Rv bWFpbl9jcmVhdGVfcmVzdG9yZShsaWJ4bF9jdHggKmN0eCwgbGlieGxfZG9tYWluX2NvbmZpZyAq ZF9jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpkb21p ZCwgaW50IHJlc3RvcmVfZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBz ZW5kX2JhY2tfZmQsCmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF9kbS5jIGIvdG9vbHMv bGlieGwvbGlieGxfZG0uYwppbmRleCBlOTJlNDEyYzFiLi45ZDk2N2UxZDMyIDEwMDY0NAotLS0g YS90b29scy9saWJ4bC9saWJ4bF9kbS5jCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2RtLmMKQEAg LTI3ODcsNyArMjc4Nyw3IEBAIHN0YXRpYyB2b2lkIGRldmljZV9tb2RlbF9zcGF3bl9vdXRjb21l KGxpYnhsX19lZ2MgKmVnYywKIAogICAgIGxpYnhsX19kb21haW5fYnVpbGRfc3RhdGUgKnN0YXRl ID0gZG1zcy0+YnVpbGRfc3RhdGU7CiAKLSAgICBpZiAoc3RhdGUtPnNhdmVkX3N0YXRlKSB7Cisg ICAgaWYgKHN0YXRlLT5zYXZlZF9zdGF0ZSAmJiAhc3RhdGUtPmZvcmtlZF92bSkgewogICAgICAg ICByZXQyID0gdW5saW5rKHN0YXRlLT5zYXZlZF9zdGF0ZSk7CiAgICAgICAgIGlmIChyZXQyKSB7 CiAgICAgICAgICAgICBMT0dFRChFUlJPUiwgZG1zcy0+Z3Vlc3RfZG9taWQsICIlczogZmFpbGVk IHRvIHJlbW92ZSBkZXZpY2UtbW9kZWwgc3RhdGUgJXMiLApkaWZmIC0tZ2l0IGEvdG9vbHMvbGli eGwvbGlieGxfZG9tLmMgYi90b29scy9saWJ4bC9saWJ4bF9kb20uYwppbmRleCBjZGIyOTRhYjhk Li45NWU2ZWNjOWQzIDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF9kb20uYworKysgYi90 b29scy9saWJ4bC9saWJ4bF9kb20uYwpAQCAtMzkyLDkgKzM5MiwxMiBAQCBpbnQgbGlieGxfX2J1 aWxkX3ByZShsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCwKICAgICBsaWJ4bF9kb21haW5f YnVpbGRfaW5mbyAqY29uc3QgaW5mbyA9ICZkX2NvbmZpZy0+Yl9pbmZvOwogICAgIGxpYnhsX2N0 eCAqY3R4ID0gbGlieGxfX2djX293bmVyKGdjKTsKICAgICBjaGFyICp4c19kb21pZCwgKmNvbl9k b21pZDsKLSAgICBpbnQgcmM7CisgICAgaW50IHJjID0gMDsKICAgICB1aW50NjRfdCBzaXplOwog CisgICAgaWYgKCBzdGF0ZS0+Zm9ya2VkX3ZtICkKKyAgICAgICAgZ290byBza2lwX2Zvcms7CisK ICAgICBpZiAoeGNfZG9tYWluX21heF92Y3B1cyhjdHgtPnhjaCwgZG9taWQsIGluZm8tPm1heF92 Y3B1cykgIT0gMCkgewogICAgICAgICBMT0coRVJST1IsICJDb3VsZG4ndCBzZXQgbWF4IHZjcHUg Y291bnQiKTsKICAgICAgICAgcmV0dXJuIEVSUk9SX0ZBSUw7CkBAIC00OTksMjkgKzUwMiw2IEBA IGludCBsaWJ4bF9fYnVpbGRfcHJlKGxpYnhsX19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkLAogICAg ICAgICB9CiAgICAgfQogCi0KLSAgICByYyA9IGxpYnhsX19hcmNoX2V4dHJhX21lbW9yeShnYywg aW5mbywgJnNpemUpOwotICAgIGlmIChyYyA8IDApIHsKLSAgICAgICAgTE9HRShFUlJPUiwgIkNv dWxkbid0IGdldCBhcmNoIGV4dHJhIGNvbnN0YW50IG1lbW9yeSBzaXplIik7Ci0gICAgICAgIHJl dHVybiBFUlJPUl9GQUlMOwotICAgIH0KLQotICAgIGlmICh4Y19kb21haW5fc2V0bWF4bWVtKGN0 eC0+eGNoLCBkb21pZCwgaW5mby0+dGFyZ2V0X21lbWtiICsgc2l6ZSkgPCAwKSB7Ci0gICAgICAg IExPR0UoRVJST1IsICJDb3VsZG4ndCBzZXQgbWF4IG1lbW9yeSIpOwotICAgICAgICByZXR1cm4g RVJST1JfRkFJTDsKLSAgICB9Ci0KLSAgICB4c19kb21pZCA9IHhzX3JlYWQoY3R4LT54c2gsIFhC VF9OVUxMLCAiL3Rvb2wveGVuc3RvcmVkL2RvbWlkIiwgTlVMTCk7Ci0gICAgc3RhdGUtPnN0b3Jl X2RvbWlkID0geHNfZG9taWQgPyBhdG9pKHhzX2RvbWlkKSA6IDA7Ci0gICAgZnJlZSh4c19kb21p ZCk7Ci0KLSAgICBjb25fZG9taWQgPSB4c19yZWFkKGN0eC0+eHNoLCBYQlRfTlVMTCwgIi90b29s L3hlbmNvbnNvbGVkL2RvbWlkIiwgTlVMTCk7Ci0gICAgc3RhdGUtPmNvbnNvbGVfZG9taWQgPSBj b25fZG9taWQgPyBhdG9pKGNvbl9kb21pZCkgOiAwOwotICAgIGZyZWUoY29uX2RvbWlkKTsKLQot ICAgIHN0YXRlLT5zdG9yZV9wb3J0ID0geGNfZXZ0Y2huX2FsbG9jX3VuYm91bmQoY3R4LT54Y2gs IGRvbWlkLCBzdGF0ZS0+c3RvcmVfZG9taWQpOwotICAgIHN0YXRlLT5jb25zb2xlX3BvcnQgPSB4 Y19ldnRjaG5fYWxsb2NfdW5ib3VuZChjdHgtPnhjaCwgZG9taWQsIHN0YXRlLT5jb25zb2xlX2Rv bWlkKTsKLQogICAgIGlmIChpbmZvLT50eXBlICE9IExJQlhMX0RPTUFJTl9UWVBFX1BWKQogICAg ICAgICBodm1fc2V0X2NvbmZfcGFyYW1zKGN0eC0+eGNoLCBkb21pZCwgaW5mbyk7CiAKQEAgLTU1 Niw4ICs1MzYsMzQgQEAgaW50IGxpYnhsX19idWlsZF9wcmUobGlieGxfX2djICpnYywgdWludDMy X3QgZG9taWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby0+YWx0cDJtKTsKICAgICB9 CiAKKyAgICByYyA9IGxpYnhsX19hcmNoX2V4dHJhX21lbW9yeShnYywgaW5mbywgJnNpemUpOwor ICAgIGlmIChyYyA8IDApIHsKKyAgICAgICAgTE9HRShFUlJPUiwgIkNvdWxkbid0IGdldCBhcmNo IGV4dHJhIGNvbnN0YW50IG1lbW9yeSBzaXplIik7CisgICAgICAgIHJldHVybiBFUlJPUl9GQUlM OworICAgIH0KKworICAgIGlmICh4Y19kb21haW5fc2V0bWF4bWVtKGN0eC0+eGNoLCBkb21pZCwg aW5mby0+dGFyZ2V0X21lbWtiICsgc2l6ZSkgPCAwKSB7CisgICAgICAgIExPR0UoRVJST1IsICJD b3VsZG4ndCBzZXQgbWF4IG1lbW9yeSIpOworICAgICAgICByZXR1cm4gRVJST1JfRkFJTDsKKyAg ICB9CisKICAgICByYyA9IGxpYnhsX19hcmNoX2RvbWFpbl9jcmVhdGUoZ2MsIGRfY29uZmlnLCBk b21pZCk7CisgICAgaWYgKCByYyApCisgICAgICAgIGdvdG8gb3V0OwogCitza2lwX2Zvcms6Cisg ICAgeHNfZG9taWQgPSB4c19yZWFkKGN0eC0+eHNoLCBYQlRfTlVMTCwgIi90b29sL3hlbnN0b3Jl ZC9kb21pZCIsIE5VTEwpOworICAgIHN0YXRlLT5zdG9yZV9kb21pZCA9IHhzX2RvbWlkID8gYXRv aSh4c19kb21pZCkgOiAwOworICAgIGZyZWUoeHNfZG9taWQpOworCisgICAgY29uX2RvbWlkID0g eHNfcmVhZChjdHgtPnhzaCwgWEJUX05VTEwsICIvdG9vbC94ZW5jb25zb2xlZC9kb21pZCIsIE5V TEwpOworICAgIHN0YXRlLT5jb25zb2xlX2RvbWlkID0gY29uX2RvbWlkID8gYXRvaShjb25fZG9t aWQpIDogMDsKKyAgICBmcmVlKGNvbl9kb21pZCk7CisKKyAgICBzdGF0ZS0+c3RvcmVfcG9ydCA9 IHhjX2V2dGNobl9hbGxvY191bmJvdW5kKGN0eC0+eGNoLCBkb21pZCwgc3RhdGUtPnN0b3JlX2Rv bWlkKTsKKyAgICBzdGF0ZS0+Y29uc29sZV9wb3J0ID0geGNfZXZ0Y2huX2FsbG9jX3VuYm91bmQo Y3R4LT54Y2gsIGRvbWlkLCBzdGF0ZS0+Y29uc29sZV9kb21pZCk7CisKK291dDoKICAgICByZXR1 cm4gcmM7CiB9CiAKQEAgLTYxNSw2ICs2MjEsOSBAQCBpbnQgbGlieGxfX2J1aWxkX3Bvc3QobGli eGxfX2djICpnYywgdWludDMyX3QgZG9taWQsCiAgICAgY2hhciAqKmVudHM7CiAgICAgaW50IGks IHJjOwogCisgICAgaWYgKCBzdGF0ZS0+Zm9ya2VkX3ZtICkKKyAgICAgICAgZ290byBza2lwX2Zv cms7CisKICAgICBpZiAoaW5mby0+bnVtX3ZudW1hX25vZGVzICYmICFpbmZvLT5udW1fdmNwdV9z b2Z0X2FmZmluaXR5KSB7CiAgICAgICAgIHJjID0gc2V0X3ZudW1hX2FmZmluaXR5KGdjLCBkb21p ZCwgaW5mbyk7CiAgICAgICAgIGlmIChyYykKQEAgLTYzOSw2ICs2NDgsNyBAQCBpbnQgbGlieGxf X2J1aWxkX3Bvc3QobGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQsCiAgICAgICAgIH0KICAg ICB9CiAKK3NraXBfZm9yazoKICAgICBlbnRzID0gbGlieGxfX2NhbGxvYyhnYywgMTIgKyAoaW5m by0+bWF4X3ZjcHVzICogMikgKyAyLCBzaXplb2YoY2hhciAqKSk7CiAgICAgZW50c1swXSA9ICJt ZW1vcnkvc3RhdGljLW1heCI7CiAgICAgZW50c1sxXSA9IEdDU1BSSU5URigiJSJQUklkNjQsIGlu Zm8tPm1heF9tZW1rYik7CkBAIC05MDEsMTQgKzkxMSwxNiBAQCBzdGF0aWMgaW50IGh2bV9idWls ZF9zZXRfcGFyYW1zKHhjX2ludGVyZmFjZSAqaGFuZGxlLCB1aW50MzJfdCBkb21pZCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZG9tYWluX2J1aWxkX2luZm8gKmluZm8s CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdG9yZV9ldnRjaG4sIHVuc2ln bmVkIGxvbmcgKnN0b3JlX21mbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 IGNvbnNvbGVfZXZ0Y2huLCB1bnNpZ25lZCBsb25nICpjb25zb2xlX21mbiwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZG9taWRfdCBzdG9yZV9kb21pZCwgZG9taWRfdCBjb25zb2xl X2RvbWlkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21pZF90IHN0b3JlX2Rv bWlkLCBkb21pZF90IGNvbnNvbGVfZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGJvb2wgZm9ya2VkX3ZtKQogewogICAgIHN0cnVjdCBodm1faW5mb190YWJsZSAqdmFfaHZt OwogICAgIHVpbnQ4X3QgKnZhX21hcCwgc3VtOwogICAgIHVpbnQ2NF90IHN0cl9tZm4sIGNvbnNf bWZuOwogICAgIGludCBpOwogCi0gICAgaWYgKGluZm8tPnR5cGUgPT0gTElCWExfRE9NQUlOX1RZ UEVfSFZNKSB7CisgICAgaWYgKCBpbmZvLT50eXBlID09IExJQlhMX0RPTUFJTl9UWVBFX0hWTSAm JiAhZm9ya2VkX3ZtICkKKyAgICB7CiAgICAgICAgIHZhX21hcCA9IHhjX21hcF9mb3JlaWduX3Jh bmdlKGhhbmRsZSwgZG9taWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFhDX1BBR0VfU0laRSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgSFZNX0lORk9fUEZOKTsKQEAgLTEyMjQsNiArMTIzNiwyMyBA QCBpbnQgbGlieGxfX2J1aWxkX2h2bShsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCwKICAg ICBzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20gPSBOVUxMOwogICAgIGJvb2wgZGV2aWNlX21vZGVs ID0gaW5mby0+dHlwZSA9PSBMSUJYTF9ET01BSU5fVFlQRV9IVk0gPyB0cnVlIDogZmFsc2U7CiAK KyAgICBpZiAoIHN0YXRlLT5mb3JrZWRfdm0gKQorICAgIHsKKyAgICAgICAgcmMgPSBodm1fYnVp bGRfc2V0X3BhcmFtcyhjdHgtPnhjaCwgZG9taWQsIGluZm8sIHN0YXRlLT5zdG9yZV9wb3J0LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGF0ZS0+c3RvcmVfbWZuLCBzdGF0 ZS0+Y29uc29sZV9wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGF0 ZS0+Y29uc29sZV9tZm4sIHN0YXRlLT5zdG9yZV9kb21pZCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdGF0ZS0+Y29uc29sZV9kb21pZCwgc3RhdGUtPmZvcmtlZF92bSk7CisK KyAgICAgICAgaWYgKCByYyApCisgICAgICAgICAgICByZXR1cm4gcmM7CisKKyAgICAgICAgcmV0 dXJuIHhjX2RvbV9nbnR0YWJfc2VlZChjdHgtPnhjaCwgZG9taWQsIHRydWUsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmNvbnNvbGVfbWZuLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5zdG9yZV9tZm4sCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RhdGUtPmNvbnNvbGVfZG9taWQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RhdGUtPnN0b3JlX2RvbWlkKTsKKyAgICB9CisKICAgICB4Y19k b21fbG9naW5pdChjdHgtPnhjaCk7CiAKICAgICAvKgpAQCAtMTM0OCw3ICsxMzc3LDcgQEAgaW50 IGxpYnhsX19idWlsZF9odm0obGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQsCiAgICAgcmMg PSBodm1fYnVpbGRfc2V0X3BhcmFtcyhjdHgtPnhjaCwgZG9taWQsIGluZm8sIHN0YXRlLT5zdG9y ZV9wb3J0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGF0ZS0+c3RvcmVfbWZu LCBzdGF0ZS0+Y29uc29sZV9wb3J0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZz dGF0ZS0+Y29uc29sZV9tZm4sIHN0YXRlLT5zdG9yZV9kb21pZCwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdGF0ZS0+Y29uc29sZV9kb21pZCk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RhdGUtPmNvbnNvbGVfZG9taWQsIGZhbHNlKTsKICAgICBpZiAocmMgIT0g MCkgewogICAgICAgICBMT0coRVJST1IsICJodm0gYnVpbGQgc2V0IHBhcmFtcyBmYWlsZWQiKTsK ICAgICAgICAgZ290byBvdXQ7CmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF9pbnRlcm5h bC5oIGIvdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaAppbmRleCBiYThjOWI0MWFiLi43OTZk MTYyY2YyIDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF9pbnRlcm5hbC5oCisrKyBiL3Rv b2xzL2xpYnhsL2xpYnhsX2ludGVybmFsLmgKQEAgLTEzNjAsNiArMTM2MCw3IEBAIHR5cGVkZWYg c3RydWN0IHsKIAogICAgIGNoYXIgKnNhdmVkX3N0YXRlOwogICAgIGludCBkbV9tb25pdG9yX2Zk OworICAgIGJvb2wgZm9ya2VkX3ZtOwogCiAgICAgbGlieGxfX2ZpbGVfcmVmZXJlbmNlIHB2X2tl cm5lbDsKICAgICBsaWJ4bF9fZmlsZV9yZWZlcmVuY2UgcHZfcmFtZGlzazsKZGlmZiAtLWdpdCBh L3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbCBiL3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlk bAppbmRleCA3OTIxOTUwZjZhLi43YzRjNDA1N2E5IDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9s aWJ4bF90eXBlcy5pZGwKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRsCkBAIC05NTYs NiArOTU2LDcgQEAgbGlieGxfZG9tYWluX2NvbmZpZyA9IFN0cnVjdCgiZG9tYWluX2NvbmZpZyIs IFsKICAgICAoIm9uX3dhdGNoZG9nIiwgbGlieGxfYWN0aW9uX29uX3NodXRkb3duKSwKICAgICAo Im9uX2NyYXNoIiwgbGlieGxfYWN0aW9uX29uX3NodXRkb3duKSwKICAgICAoIm9uX3NvZnRfcmVz ZXQiLCBsaWJ4bF9hY3Rpb25fb25fc2h1dGRvd24pLAorICAgICgiZG1fcmVzdG9yZV9maWxlIiwg c3RyaW5nLCB7J2NvbnN0JzogVHJ1ZX0pLAogICAgIF0sIGRpcj1ESVJfSU4pCiAKIGxpYnhsX2Rp c2tpbmZvID0gU3RydWN0KCJkaXNraW5mbyIsIFsKZGlmZiAtLWdpdCBhL3Rvb2xzL3hsL3hsLmgg Yi90b29scy94bC94bC5oCmluZGV4IDYwYmRhZDhmZmIuLjliZGFkNjUyNmUgMTAwNjQ0Ci0tLSBh L3Rvb2xzL3hsL3hsLmgKKysrIGIvdG9vbHMveGwveGwuaApAQCAtMzEsNiArMzEsNyBAQCBzdHJ1 Y3QgY21kX3NwZWMgewogfTsKIAogc3RydWN0IGRvbWFpbl9jcmVhdGUgeworICAgIHVpbnQzMl90 IGRkb21pZDsgLyogZm9yayBsYXVuY2ggZG0gZm9yIHRoaXMgZG9taWQgKi8KICAgICBpbnQgZGVi dWc7CiAgICAgaW50IGRhZW1vbml6ZTsKICAgICBpbnQgbW9uaXRvcjsgLyogaGFuZGxlIGd1ZXN0 IHJlYm9vdHMgZXRjICovCkBAIC00NSw2ICs0Niw3IEBAIHN0cnVjdCBkb21haW5fY3JlYXRlIHsK ICAgICBjb25zdCBjaGFyICpjb25maWdfZmlsZTsKICAgICBjaGFyICpleHRyYV9jb25maWc7IC8q IGV4dHJhIGNvbmZpZyBzdHJpbmcgKi8KICAgICBjb25zdCBjaGFyICpyZXN0b3JlX2ZpbGU7Cisg ICAgY29uc3QgY2hhciAqZG1fcmVzdG9yZV9maWxlOwogICAgIGNoYXIgKmNvbG9fcHJveHlfc2Ny aXB0OwogICAgIGJvb2wgdXNlcnNwYWNlX2NvbG9fcHJveHk7CiAgICAgaW50IG1pZ3JhdGVfZmQ7 IC8qIC0xIG1lYW5zIG5vbmUgKi8KQEAgLTEyNyw2ICsxMjksOSBAQCBpbnQgbWFpbl9wY2lhc3Np Z25hYmxlX3JlbW92ZShpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwogaW50IG1haW5fcGNpYXNzaWdu YWJsZV9saXN0KGludCBhcmdjLCBjaGFyICoqYXJndik7CiAjaWZuZGVmIExJQlhMX0hBVkVfTk9f U1VTUEVORF9SRVNVTUUKIGludCBtYWluX3Jlc3RvcmUoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsK K2ludCBtYWluX2Zvcmtfdm0oaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK2ludCBtYWluX2Zvcmtf bGF1bmNoX2RtKGludCBhcmdjLCBjaGFyICoqYXJndik7CitpbnQgbWFpbl9mb3JrX3Jlc2V0KGlu dCBhcmdjLCBjaGFyICoqYXJndik7CiBpbnQgbWFpbl9taWdyYXRlX3JlY2VpdmUoaW50IGFyZ2Ms IGNoYXIgKiphcmd2KTsKIGludCBtYWluX3NhdmUoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKIGlu dCBtYWluX21pZ3JhdGUoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKZGlmZiAtLWdpdCBhL3Rvb2xz L3hsL3hsX2NtZHRhYmxlLmMgYi90b29scy94bC94bF9jbWR0YWJsZS5jCmluZGV4IDNiMzAyYjJm MjAuLjNhNWQzNzEwNTcgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hsL3hsX2NtZHRhYmxlLmMKKysrIGIv dG9vbHMveGwveGxfY21kdGFibGUuYwpAQCAtMTg1LDYgKzE4NSwxOCBAQCBzdHJ1Y3QgY21kX3Nw ZWMgY21kX3RhYmxlW10gPSB7CiAgICAgICAiUmVzdG9yZSBhIGRvbWFpbiBmcm9tIGEgc2F2ZWQg c3RhdGUiLAogICAgICAgIi0gZm9yIGludGVybmFsIHVzZSBvbmx5IiwKICAgICB9LAorICAgIHsg ImZvcmstdm0iLAorICAgICAgJm1haW5fZm9ya192bSwgMCwgMSwKKyAgICAgICJGb3JrIGEgZG9t YWluIGZyb20gdGhlIHJ1bm5pbmcgcGFyZW50IGRvbWlkIiwKKyAgICAgICJbb3B0aW9uc10gPERv bWlkPiIsCisgICAgICAiLWggICAgICAgICAgICAgICAgICAgICAgICAgICBQcmludCB0aGlzIGhl bHAuXG4iCisgICAgICAiLUMgPGNvbmZpZz4gICAgICAgICAgICAgICAgICBVc2UgY29uZmlnIGZp bGUgZm9yIFZNIGZvcmsuXG4iCisgICAgICAiLVEgPHFlbXUtc2F2ZS1maWxlPiAgICAgICAgICBV c2UgcWVtdSBzYXZlIGZpbGUgZm9yIFZNIGZvcmsuXG4iCisgICAgICAiLS1sYXVuY2gtZG0gPHll c3xub3xsYXRlPiAgICBMYXVuY2ggZGV2aWNlIG1vZGVsIChRRU1VKSBmb3IgVk0gZm9yay5cbiIK KyAgICAgICItLWZvcmstcmVzZXQgICAgICAgICAgICAgICAgIFJlc2V0IFZNIGZvcmsuXG4iCisg ICAgICAiLXAgICAgICAgICAgICAgICAgICAgICAgICAgICBEbyBub3QgdW5wYXVzZSBmb3JrIFZN IGFmdGVyIG9wZXJhdGlvbi5cbiIKKyAgICAgICItZCAgICAgICAgICAgICAgICAgICAgICAgICAg IEVuYWJsZSBkZWJ1ZyBtZXNzYWdlcy5cbiIKKyAgICB9LAogI2VuZGlmCiAgICAgeyAiZHVtcC1j b3JlIiwKICAgICAgICZtYWluX2R1bXBfY29yZSwgMCwgMSwKZGlmZiAtLWdpdCBhL3Rvb2xzL3hs L3hsX3NhdmVyZXN0b3JlLmMgYi90b29scy94bC94bF9zYXZlcmVzdG9yZS5jCmluZGV4IDliZTAz M2ZlNjUuLjcyYzYyMDk1NTggMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hsL3hsX3NhdmVyZXN0b3JlLmMK KysrIGIvdG9vbHMveGwveGxfc2F2ZXJlc3RvcmUuYwpAQCAtMjI5LDYgKzIyOSwxMDIgQEAgaW50 IG1haW5fcmVzdG9yZShpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAgcmV0dXJuIEVYSVRfU1VD Q0VTUzsKIH0KIAoraW50IG1haW5fZm9ya192bShpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7Cisg ICAgaW50IHJjLCBkZWJ1ZyA9IDA7CisgICAgdWludDMyX3QgZG9taWRfaW4gPSBJTlZBTElEX0RP TUlELCBkb21pZF9vdXQgPSBJTlZBTElEX0RPTUlEOworICAgIGludCBsYXVuY2hfZG0gPSAxOwor ICAgIGJvb2wgcmVzZXQgPSAwOworICAgIGJvb2wgcGF1c2UgPSAwOworICAgIGNvbnN0IGNoYXIg KmNvbmZpZ19maWxlID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICpkbV9yZXN0b3JlX2ZpbGUgPSBO VUxMOworCisgICAgaW50IG9wdDsKKyAgICBzdGF0aWMgc3RydWN0IG9wdGlvbiBvcHRzW10gPSB7 CisgICAgICAgIHsibGF1bmNoLWRtIiwgMSwgMCwgJ2wnfSwKKyAgICAgICAgeyJmb3JrLXJlc2V0 IiwgMCwgMCwgJ3InfSwKKyAgICAgICAgQ09NTU9OX0xPTkdfT1BUUworICAgIH07CisKKyAgICBT V0lUQ0hfRk9SRUFDSF9PUFQob3B0LCAicGhkQzpROmw6ck46RDpCOlY6Iiwgb3B0cywgImZvcmst dm0iLCAxKSB7CisgICAgY2FzZSAnZCc6CisgICAgICAgIGRlYnVnID0gMTsKKyAgICAgICAgYnJl YWs7CisgICAgY2FzZSAncCc6CisgICAgICAgIHBhdXNlID0gMTsKKyAgICAgICAgYnJlYWs7Cisg ICAgY2FzZSAnQyc6CisgICAgICAgIGNvbmZpZ19maWxlID0gb3B0YXJnOworICAgICAgICBicmVh azsKKyAgICBjYXNlICdRJzoKKyAgICAgICAgZG1fcmVzdG9yZV9maWxlID0gb3B0YXJnOworICAg ICAgICBicmVhazsKKyAgICBjYXNlICdsJzoKKyAgICAgICAgcHJpbnRmKCJvcHRhcmc6ICVzXG4i LCBvcHRhcmcpOworICAgICAgICBpZiAoICFzdHJjbXAob3B0YXJnLCAibm8iKSApCisgICAgICAg ICAgICBsYXVuY2hfZG0gPSAwOworICAgICAgICBpZiAoICFzdHJjbXAob3B0YXJnLCAieWVzIikg KQorICAgICAgICAgICAgbGF1bmNoX2RtID0gMTsKKyAgICAgICAgaWYgKCAhc3RyY21wKG9wdGFy ZywgImxhdGUiKSApCisgICAgICAgICAgICBsYXVuY2hfZG0gPSAyOworICAgICAgICBicmVhazsK KyAgICBjYXNlICdyJzoKKyAgICAgICAgcmVzZXQgPSAxOworICAgICAgICBicmVhazsKKyAgICBj YXNlICdOJzogLyogZmFsbC10aHJvdWdoICovCisgICAgY2FzZSAnRCc6IC8qIGZhbGwtdGhyb3Vn aCAqLworICAgIGNhc2UgJ0InOiAvKiBmYWxsLXRocm91Z2ggKi8KKyAgICBjYXNlICdWJzoKKyAg ICAgICAgZnByaW50ZihzdGRlcnIsICJVbmltcGxlbWVudGVkIG9wdGlvbihzKVxuIik7CisgICAg ICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisgICAgfQorCisgICAgaWYgKGFyZ2Mtb3B0aW5kID09 IDEpIHsKKyAgICAgICAgZG9taWRfaW4gPSBhdG9pKGFyZ3Zbb3B0aW5kXSk7CisgICAgfSBlbHNl IHsKKyAgICAgICAgaGVscCgiZm9yay12bSIpOworICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJF OworICAgIH0KKworICAgIGlmIChsYXVuY2hfZG0gJiYgKCFjb25maWdfZmlsZSB8fCAhZG1fcmVz dG9yZV9maWxlKSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkN1cnJlbnRseSB5b3UgbXVz dCBwcm92aWRlIGJvdGggLUMgYW5kIC1RIG9wdGlvbnNcbiIpOworICAgICAgICByZXR1cm4gRVhJ VF9GQUlMVVJFOworICAgIH0KKworICAgIGlmIChyZXNldCkgeworICAgICAgICBkb21pZF9vdXQg PSBkb21pZF9pbjsKKyAgICAgICAgaWYgKGxpYnhsX2RvbWFpbl9mb3JrX3Jlc2V0KGN0eCwgZG9t aWRfaW4pID09IEVYSVRfRkFJTFVSRSkKKyAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7 CisgICAgfQorCisgICAgaWYgKGxhdW5jaF9kbSA9PSAyIHx8IHJlc2V0KSB7CisgICAgICAgIGRv bWlkX291dCA9IGRvbWlkX2luOworICAgICAgICByYyA9IEVYSVRfU1VDQ0VTUzsKKyAgICB9IGVs c2UKKyAgICAgICAgcmMgPSBsaWJ4bF9kb21haW5fZm9ya192bShjdHgsIGRvbWlkX2luLCAmZG9t aWRfb3V0KTsKKworICAgIGlmIChyYyA9PSBFWElUX1NVQ0NFU1MgJiYgbGF1bmNoX2RtKSB7Cisg ICAgICAgIHN0cnVjdCBkb21haW5fY3JlYXRlIGRvbV9pbmZvOworICAgICAgICBtZW1zZXQoJmRv bV9pbmZvLCAwLCBzaXplb2YoZG9tX2luZm8pKTsKKyAgICAgICAgZG9tX2luZm8uZGRvbWlkID0g ZG9taWRfb3V0OworICAgICAgICBkb21faW5mby5kbV9yZXN0b3JlX2ZpbGUgPSBkbV9yZXN0b3Jl X2ZpbGU7CisgICAgICAgIGRvbV9pbmZvLmRlYnVnID0gZGVidWc7CisgICAgICAgIGRvbV9pbmZv LnBhdXNlZCA9IHBhdXNlOworICAgICAgICBkb21faW5mby5jb25maWdfZmlsZSA9IGNvbmZpZ19m aWxlOworICAgICAgICBkb21faW5mby5taWdyYXRlX2ZkID0gLTE7CisgICAgICAgIGRvbV9pbmZv LnNlbmRfYmFja19mZCA9IC0xOworICAgICAgICByYyA9IGNyZWF0ZV9kb21haW4oJmRvbV9pbmZv KSA8IDAgPyBFWElUX0ZBSUxVUkUgOiBFWElUX1NVQ0NFU1M7CisgICAgfQorCisgICAgaWYgKHJj ID09IEVYSVRfU1VDQ0VTUyAmJiAhcGF1c2UpCisgICAgICAgIHJjID0gbGlieGxfZG9tYWluX3Vu cGF1c2UoY3R4LCBkb21pZF9vdXQsIE5VTEwpOworCisgICAgaWYgKHJjID09IEVYSVRfU1VDQ0VT UykKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJmb3JrLXZtIGNvbW1hbmQgc3VjY2Vzc2Z1bGx5 IHJldHVybmVkIGRvbWlkOiAldVxuIiwgZG9taWRfb3V0KTsKKworICAgIHJldHVybiByYzsKK30K KwogaW50IG1haW5fc2F2ZShpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7CiAgICAgdWludDMyX3Qg ZG9taWQ7CmRpZmYgLS1naXQgYS90b29scy94bC94bF92bWNvbnRyb2wuYyBiL3Rvb2xzL3hsL3hs X3ZtY29udHJvbC5jCmluZGV4IGU1MjBiMWRhNzkuLmQ5Y2IxOWM1OTkgMTAwNjQ0Ci0tLSBhL3Rv b2xzL3hsL3hsX3ZtY29udHJvbC5jCisrKyBiL3Rvb2xzL3hsL3hsX3ZtY29udHJvbC5jCkBAIC02 NDUsNiArNjQ1LDcgQEAgaW50IGNyZWF0ZV9kb21haW4oc3RydWN0IGRvbWFpbl9jcmVhdGUgKmRv bV9pbmZvKQogCiAgICAgbGlieGxfZG9tYWluX2NvbmZpZyBkX2NvbmZpZzsKIAorICAgIHVpbnQz Ml90IGRkb21pZCA9IGRvbV9pbmZvLT5kZG9taWQ7IC8vIGxhdW5jaCBkbSBmb3IgdGhpcyBkb21h aW4gaWZmIHNldAogICAgIGludCBkZWJ1ZyA9IGRvbV9pbmZvLT5kZWJ1ZzsKICAgICBpbnQgZGFl bW9uaXplID0gZG9tX2luZm8tPmRhZW1vbml6ZTsKICAgICBpbnQgbW9uaXRvciA9IGRvbV9pbmZv LT5tb25pdG9yOwpAQCAtNjU1LDYgKzY1Niw3IEBAIGludCBjcmVhdGVfZG9tYWluKHN0cnVjdCBk b21haW5fY3JlYXRlICpkb21faW5mbykKICAgICBjb25zdCBjaGFyICpyZXN0b3JlX2ZpbGUgPSBk b21faW5mby0+cmVzdG9yZV9maWxlOwogICAgIGNvbnN0IGNoYXIgKmNvbmZpZ19zb3VyY2UgPSBO VUxMOwogICAgIGNvbnN0IGNoYXIgKnJlc3RvcmVfc291cmNlID0gTlVMTDsKKyAgICBjb25zdCBj aGFyICpkbV9yZXN0b3JlX2ZpbGUgPSBkb21faW5mby0+ZG1fcmVzdG9yZV9maWxlOwogICAgIGlu dCBtaWdyYXRlX2ZkID0gZG9tX2luZm8tPm1pZ3JhdGVfZmQ7CiAgICAgYm9vbCBjb25maWdfaW5f anNvbjsKIApAQCAtOTIzLDYgKzkyNSwxMiBAQCBzdGFydDoKICAgICAgICAgICogcmVzdG9yZS9t aWdyYXRlLXJlY2VpdmUgaXQgYWdhaW4uCiAgICAgICAgICAqLwogICAgICAgICByZXN0b3Jpbmcg PSAwOworICAgIH0gZWxzZSBpZiAoIGRkb21pZCApIHsKKyAgICAgICAgZF9jb25maWcuZG1fcmVz dG9yZV9maWxlID0gZG1fcmVzdG9yZV9maWxlOworICAgICAgICByZXQgPSBsaWJ4bF9kb21haW5f Zm9ya19sYXVuY2hfZG0oY3R4LCAmZF9jb25maWcsIGRkb21pZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb25uZWN0X2NvbnNvbGVfaG93KTsKKyAgICAg ICAgZG9taWQgPSBkZG9taWQ7CisgICAgICAgIGRkb21pZCA9IElOVkFMSURfRE9NSUQ7CiAgICAg fSBlbHNlIGlmIChkb21pZF9zb2Z0X3Jlc2V0ICE9IElOVkFMSURfRE9NSUQpIHsKICAgICAgICAg LyogRG8gc29mdCByZXNldC4gKi8KICAgICAgICAgcmV0ID0gbGlieGxfZG9tYWluX3NvZnRfcmVz ZXQoY3R4LCAmZF9jb25maWcsIGRvbWlkX3NvZnRfcmVzZXQsCi0tIAoyLjIwLjEKCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGlu ZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnBy b2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs