From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id GDibI7hhXGebkhUAWB0awg (envelope-from ) for ; Fri, 13 Dec 2024 11:32:56 -0500 Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=nt4dwLX1; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 8DF8C1E097; Fri, 13 Dec 2024 11:32:56 -0500 (EST) X-Spam-Checker-Version: SpamAssassin 4.0.0 (2022-12-13) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-6.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=unavailable autolearn_force=no version=4.0.0 Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 74AB21E091 for ; Fri, 13 Dec 2024 11:32:54 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 2B6CF3858C42 for ; Fri, 13 Dec 2024 16:32:54 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2B6CF3858C42 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=nt4dwLX1 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.7]) by sourceware.org (Postfix) with ESMTPS id 0FB0A385843B for ; Fri, 13 Dec 2024 16:04:03 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0FB0A385843B Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 0FB0A385843B Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=192.198.163.7 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1734105844; cv=none; b=VsS9nPf+d2e0nSMohSWQEL/fitVO2fINQBr+Q4Etd31DFkZqyB2MqkWAUTUfTRSKWOTy9dXCNtbdTNv0wIHxUnX9yR9kGXxu11OAAr+9XDSnn40KyJNQEi4Vythyx9zKPTgZe/KKEob3ZWlZCjOxlKqnof/e0CToO23Jj1yNKRw= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1734105844; c=relaxed/simple; bh=UZp7IArSgFKqWutUBOPss/0T7oG9wO+JshHKD4Iujg4=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=Vu8kcxlVHyVYYgOuG1PbnjVRi7cU8/u1YfCVottbM45cLFKAulrKRxXyJ08afXFQuggQFWciKs4DQiE32bSX1E15LJZx27bwp2Y22EhGBlNQbcguJ9RTWzo1k6eo2dYLPyIuNIXNF1SNu2sAwYIKy35ysnY95ntKM7wAsSXXK3M= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0FB0A385843B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1734105844; x=1765641844; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=UZp7IArSgFKqWutUBOPss/0T7oG9wO+JshHKD4Iujg4=; b=nt4dwLX1JzV8cn3Wo/8WZspikrxuHBD3yoJWXtpyJuHbfAD913kOh6qc uvwgfZgvDNzVff8X3AyIHyR5PH/f2MS5vnE2hF61zCskpZ4uOdxvwMu8C p3/GbVzwCXWGavUGfsVW6WAxeTkiEW9yWAzcuo8Xx/1iKJbWSggF5Y72G n9WZO8GutbnRpqoJ4bM728CD6fdJTpMpIoNmwE/bTJ+rSxMvMpXHE2Cew e3WfYs0WdsjX13E2GPps1cPQgVnTG/nJqqEY0lmzc3dBu0udfgi03+iBr pp8nR+IJWTPB8DGau3KNbnCDxptu+IDi8lvHSdhzi+QYT7ZXC3LSX31yH w==; X-CSE-ConnectionGUID: 3NUCkhr5Q5i0iP+mdufobg== X-CSE-MsgGUID: r/ALOz3jQZm1B2T5V7rzdQ== X-IronPort-AV: E=McAfee;i="6700,10204,11285"; a="59958329" X-IronPort-AV: E=Sophos;i="6.12,231,1728975600"; d="scan'208";a="59958329" Received: from fmviesa009.fm.intel.com ([10.60.135.149]) by fmvoesa101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Dec 2024 08:04:03 -0800 X-CSE-ConnectionGUID: xabErBQ8Szm8eKA5RGaxVg== X-CSE-MsgGUID: yKs3vlHbRr6JCzYMIijeXA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.12,231,1728975600"; d="scan'208";a="97125497" Received: from gkldtt-dev-004.igk.intel.com (HELO localhost) ([10.123.221.202]) by fmviesa009-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Dec 2024 08:04:01 -0800 From: Tankut Baris Aktemur To: gdb-patches@sourceware.org, Markus Metzger Subject: [PATCH v2 39/47] testsuite, sycl: add SYCL support Date: Fri, 13 Dec 2024 16:59:56 +0100 Message-Id: <20241213-upstream-intelgt-mvp-v2-39-5c4caeb7b33d@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20241213-upstream-intelgt-mvp-v2-0-5c4caeb7b33d@intel.com> References: <20241213-upstream-intelgt-mvp-v2-0-5c4caeb7b33d@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" X-Mailer: b4 0.14.2 Content-Transfer-Encoding: base64 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org QWRkIGxpYiBmaWxlcywgYm9hcmQgZmlsZSwgYW5kIGJhc2ljIHRlc3Qgc2NlbmFyaW9zIGZvciBT WUNMLiAgVGhlCnNjZW5hcmlvcyB0ZXN0IHRoZSBhYmlsaXR5IHRvIGRlZmluZSBhbmQgaGl0IGJy ZWFrcG9pbnRzIGluc2lkZSBhbmQKb3V0c2lkZSBhIFNZQ0wga2VybmVsLiAgVGhlIHRlc3QgY2Fz ZXMgYXJlIHNraXBwZWQgaWYgaXQgaXMgZm91bmQgb3V0CnRoYXQgdGhlIGNvbXBpbGVyIGRvZXMg bm90IHN1cHBvcnQgU1lDTC4KCkhlcmUgaXMgYSBzYW1wbGUgY29tbWFuZCB0byBydW4gYWxsIFNZ Q0wgdGVzdHMgb24gdGhlIENQVSB0YXJnZXQKZGV2aWNlIHVzaW5nIHRoZSBJbnRlbMKuIG9uZUFQ SSBEUEMrKy9DKysgQ29tcGlsZXI6CgogICQgbWFrZSBjaGVjayBURVNUUz0iZ2RiLnN5Y2wvKi5l eHAiIFwKICAgIFJVTlRFU1RGTEFHUz0iT0ZGTE9BRF9ERVZJQ0VfR1JPVVA9Y3B1IENYWF9GT1Jf VEFSR0VUPWljcHgiCgpBbHRlcm5hdGl2ZWx5LCB0aGUgaW50ZWwtb2ZmbG9hZCBib2FyZCBmaWxl IGNhbiBiZSB1c2VkLiAgVGhpcyBjYW4gYmUKbW9yZSBwcmFjdGljYWwgdG8gcGljayB0aGUgcmln aHQgY29tcGlsZXJzLgoKICAkIG1ha2UgY2hlY2sgVEVTVFM9ImdkYi5zeWNsLyouZXhwIiBcCiAg ICBSVU5URVNURkxBR1M9Ik9GRkxPQURfREVWSUNFX0dST1VQPWNwdSAtLXRhcmdldF9ib2FyZD0n aW50ZWwtb2ZmbG9hZCciCgpSdW5uaW5nIHRoZSBHUFUgdGVzdHMgcmVxdWlyZXMgdGhhdCBhIGdk YnNlcnZlciBleGVjdXRhYmxlIGJ1aWx0IGZvcgp0aGUgaW50ZWxndCB0YXJnZXQgZXhpc3RzIGlu IHRoZSBwYXRoIGFuZCBpdHMgbmFtZSBpcwonZ2Ric2VydmVyLWludGVsZ3QnLgoKQ28tYXV0aG9y ZWQtYnk6IEFiZHVsIEJhc2l0IElqYXogPGFiZHVsLmIuaWphekBpbnRlbC5jb20+CkNvLWF1dGhv cmVkLWJ5OiBTdGVwaGFuIFJvaHIgPHN0ZXBoYW4ucm9ockBpbnRlbC5jb20+Ci0tLQogZ2RiL3Rl c3RzdWl0ZS9SRUFETUUgICAgICAgICAgICAgICAgICAgfCAgIDkgKwogZ2RiL3Rlc3RzdWl0ZS9i b2FyZHMvaW50ZWwtb2ZmbG9hZC5leHAgfCAgMzYgKysrCiBnZGIvdGVzdHN1aXRlL2dkYi5zeWNs L2JyZWFrLmV4cCAgICAgICB8ICA2MyArKysrKwogZ2RiL3Rlc3RzdWl0ZS9nZGIuc3ljbC9icmVh azIuZXhwICAgICAgfCAgNjYgKysrKysrCiBnZGIvdGVzdHN1aXRlL2dkYi5zeWNsL3NpbmdsZS10 YXNrLmNwcCB8ICA1MCArKysrCiBnZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwICAgICAgICAgICAg ICB8ICAxNyArLQogZ2RiL3Rlc3RzdWl0ZS9saWIvaW50ZWxndC11dGlscy5leHAgICAgfCAgNDMg KysrKwogZ2RiL3Rlc3RzdWl0ZS9saWIvc3ljbC1kZXZpY2VzLmNwcCAgICAgfCAxMDcgKysrKysr KysrCiBnZGIvdGVzdHN1aXRlL2xpYi9zeWNsLWhlbGxvLmNwcCAgICAgICB8ICA0MyArKysrCiBn ZGIvdGVzdHN1aXRlL2xpYi9zeWNsLXV0aWwuY3BwICAgICAgICB8IDEzNSArKysrKysrKysrKwog Z2RiL3Rlc3RzdWl0ZS9saWIvc3ljbC5leHAgICAgICAgICAgICAgfCA0MTAgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCiAxMSBmaWxlcyBjaGFuZ2VkLCA5NzggaW5zZXJ0aW9ucygr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvUkVBRE1FIGIvZ2Ri L3Rlc3RzdWl0ZS9SRUFETUUKaW5kZXggMDY2NjRkNzIzZTc5MDJhMjJmYzlhMGU2MzYyN2UyNzgw ZmFlOGQyMi4uZjE4ZjIwNWEwNTA5MTEwOWQ4ZWM0NTg1YzEyNDU1Y2M2ZTQ3MjRkNCAxMDA2NDQK LS0tIGEvZ2RiL3Rlc3RzdWl0ZS9SRUFETUUKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9SRUFETUUKQEAg LTM0MCw2ICszNDAsMTUgQEAgYnkgc3dpdGNoaW5nIHRvIGEgZGlmZmVyZW50IHVzZXIgb24gdGhl IHNhbWUgbWFjaGluZS4gIFRoZXNlIHVzZXJzCiB3aWxsIGhhdmUgcmFuZG9tIGZpbGVzIGNvcGll ZCBpbnRvIHRoZWlyICRIT01FIGRpcmVjdG9yaWVzLCBzbyBpdCBpcyBhCiBnb29kIGlkZWEgdG8g c2V0dXAgbmV3IHVzZXJzIGp1c3QgZm9yIHRoaXMgcHVycG9zZS4KIAorT0ZGTE9BRF9ERVZJQ0Vf R1JPVVAKKworVGhpcyBvcHRpb24gY2FuIGJlIHVzZWQgdG8gcmVzdHJpY3QgdGhlIG9mZmxvYWRp bmcgdGVzdHMgdG8gcnVuIG9ubHkKK29uIGEgc3BlY2lmaWMgZ3JvdXAvZmFtaWx5IG9mIGRldmlj ZXMuICBNdWx0aXBsZSB0YXJnZXQgZGV2aWNlIGdyb3VwcworY2FuIGJlIHNlbGVjdGVkIGJ5IHBh c3NpbmcgYSBjb21tYSBzZXBhcmF0ZWQgbGlzdC4gIEJ5IGRlZmF1bHQsIGl0IGlzCitzZXQgdG8g ImNwdSxncHUsYWNjZWxlcmF0b3IiLiAgRXhhbXBsZSB1c2U6CisKKwltYWtlIGNoZWNrIFJVTlRF U1RGTEFHUz0nT0ZGTE9BRF9ERVZJQ0VfR1JPVVA9ImdwdSxjcHUiJworCiBUZXN0aW5nIEFsbCBT aW1wbGUgQm9hcmRzCiAqKioqKioqKioqKioqKioqKioqKioqKioqCiAKZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvYm9hcmRzL2ludGVsLW9mZmxvYWQuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9ib2Fy ZHMvaW50ZWwtb2ZmbG9hZC5leHAKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTA0NWE3NzE4YzliMDY4ZTBhZmM0NmRl MTBjODhkZTQwYWViYTJmYQotLS0gL2Rldi9udWxsCisrKyBiL2dkYi90ZXN0c3VpdGUvYm9hcmRz L2ludGVsLW9mZmxvYWQuZXhwCkBAIC0wLDAgKzEsMzYgQEAKKyMgQ29weXJpZ2h0IDIwMjItMjAy NCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworIyBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKwor IyBUaGlzIGZpbGUgaXMgYSBkZWphZ251ICJib2FyZCBmaWxlIiBhbmQgaXMgdXNlZCBmb3IgcnVu bmluZyB0aGUKKyMgU1lDTCB0ZXN0c3VpdGUuCisjCisjIEV4YW1wbGUgdXNhZ2U6CisjIGJhc2gk IG1ha2UgY2hlY2sgVEVTVFM9ImdkYi5zeWNsLyouZXhwIiBSVU5URVNURkxBR1M9Jy0tdGFyZ2V0 X2JvYXJkPWludGVsLW9mZmxvYWQnCisKK2xvYWRfZ2VuZXJpY19jb25maWcgInVuaXgiCitwcm9j ZXNzX211bHRpbGliX29wdGlvbnMgIiIKK2xvYWRfYm9hcmRfZGVzY3JpcHRpb24gImxvY2FsLWJv YXJkIgorCitzZXQgZ2RiX3Rlc3RfdGltZW91dCAxMDAKKwordW5zZXRfYm9hcmRfaW5mbyBpc3Jl bW90ZQorc2V0X2JvYXJkX2luZm8gaXNyZW1vdGUgMAorCitzZXRfYm9hcmRfaW5mbyBjb21waWxl ciAgICAiaWN4Igorc2V0X2JvYXJkX2luZm8gYysrY29tcGlsZXIgImljcHgiCitzZXRfYm9hcmRf aW5mbyBmOTBjb21waWxlciAiaWZ4IgorCitwdXRzICJJbmZvOiBVc2luZyB0aW1lb3V0IHZhbHVl ICRnZGJfdGVzdF90aW1lb3V0IgorcHV0cyAiSW5mbzogVXNpbmcgQysrIGNvbXBpbGVyIGljcHgg YW5kIEZvcnRyYW4gY29tcGlsZXIgaWZ4IgpkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu c3ljbC9icmVhay5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5zeWNsL2JyZWFrLmV4cApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwLi5mZTQ1YTE1NGJjMDE1YmY5NzhhNzZiNDEwNzU4ZTdiYjYyNWMxZjg3Ci0tLSAvZGV2L251 bGwKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuc3ljbC9icmVhay5leHAKQEAgLTAsMCArMSw2MyBA QAorIyBDb3B5cmlnaHQgMjAxOS0yMDI0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgor CisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisj IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgorIworIyBUZXN0cyBHREIncyBzdXBwb3J0IGZvciBTWUNMOyBp biBwYXJ0aWN1bGFyLCBpbnNlcnRpbmcgYW5kIGhpdHRpbmcKKyMgYnJlYWtwb2ludHMgaW5zaWRl IGFuZCBvdXRzaWRlIGEga2VybmVsLgorCitsb2FkX2xpYiBzeWNsLmV4cAorCitzdGFuZGFyZF90 ZXN0ZmlsZSBzaW5nbGUtdGFzay5jcHAKKworc2V0IHN5Y2xfZGV2aWNlX2xpc3QgW2luaXRfc3lj bF9kZXZpY2VzX2xpc3RdCitpZiB7W2xsZW5ndGggJHN5Y2xfZGV2aWNlX2xpc3RdID09IDB9IHsK KyAgICB1bnN1cHBvcnRlZCAidGFyZ2V0IGRvZXMgbm90IHN1cHBvcnQgU1lDTCIKKyAgICByZXR1 cm4gMAorfQorCitpZiB7W2J1aWxkX2V4ZWN1dGFibGUgImZhaWxlZCB0byBjb21waWxlICRzcmNm aWxlIiBcCisgICAgIiR7YmluZmlsZX0iICRzcmNmaWxlIHtzeWNsIGRlYnVnfV19IHsKKyAgICBy ZXR1cm4gLTEKK30KKworZm9yZWFjaCBkZXZpY2UgJHN5Y2xfZGV2aWNlX2xpc3QgeworICAgIHN5 Y2xfd2l0aF9pbnRlbGd0X2xvY2sgJGRldmljZSB7CisJY2xlYW5fcmVzdGFydCAiJHtiaW5maWxl fSIKKworCWlmIHshW3N5Y2xfc3RhcnQgJGRldmljZV19IHsKKwkgICAgY29udGludWUKKwl9CisK KwkjIFNldCBicmVha3BvaW50cyBpbnNpZGUgYW5kIG91dHNpZGUgdGhlIGtlcm5lbC4KKwlhcnJh eSBzZXQgYnBfbG9jYXRpb25zX2tlcm5lbCB7fQorCXNldCBudW1fa2VybmVsX2xvY2F0aW9ucyA0 CisKKwlnZGJfYnJlYWtwb2ludCAiJHNyY2ZpbGU6W2dkYl9nZXRfbGluZV9udW1iZXIgbGluZS1h ZnRlci1rZXJuZWxdIiBcCisJICAgIHttZXNzYWdlfQorCisJZm9yIHtzZXQgaSAxfSB7JGkgPD0g JG51bV9rZXJuZWxfbG9jYXRpb25zfSB7aW5jciBpfSB7CisJICAgIHNldCBicF9sb2NhdGlvbnNf a2VybmVsKCRpKSBbZ2RiX2dldF9saW5lX251bWJlciAia2VybmVsLWxpbmUtJGkiXQorCSAgICBn ZGJfYnJlYWtwb2ludCAiJHNyY2ZpbGU6JGJwX2xvY2F0aW9uc19rZXJuZWwoJGkpIiB7bWVzc2Fn ZX0KKwl9CisKKwkjIFRlc3QgdGhhdCB3ZSBhY3R1YWxseSBoaXQgdGhlIGJyZWFrcG9pbnRzLgor CWZvciB7c2V0IGkgMX0geyRpIDw9ICRudW1fa2VybmVsX2xvY2F0aW9uc30ge2luY3IgaX0gewor CSAgICBnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAia2VybmVsIGxpbmUgJGkiIFwKKwkJIi4q JHNyY2ZpbGU6JGJwX2xvY2F0aW9uc19rZXJuZWwoJGkpLioiCisJfQorCisJZ2RiX2NvbnRpbnVl X3RvX2JyZWFrcG9pbnQgImxpbmUgYWZ0ZXIga2VybmVsIiBcCisJICAgICIuKiRzcmNmaWxlOltn ZGJfZ2V0X2xpbmVfbnVtYmVyIGxpbmUtYWZ0ZXIta2VybmVsXS4qIgorICAgIH0KK30KZGlmZiAt LWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnN5Y2wvYnJlYWsyLmV4cCBiL2dkYi90ZXN0c3VpdGUv Z2RiLnN5Y2wvYnJlYWsyLmV4cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zM2VjMzNhZGRmNzM5ZjQ3NjYxNTMwM2M3 NTc0ZjY3ZWFlMTA5ZDg3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuc3lj bC9icmVhazIuZXhwCkBAIC0wLDAgKzEsNjYgQEAKKyMgQ29weXJpZ2h0IDIwMTktMjAyNCBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRo ZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIwor IyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyMKKyMgVGVz dHMgR0RCJ3Mgc3VwcG9ydCBmb3IgU1lDTDsgaW4gcGFydGljdWxhciwgaW5zZXJ0aW5nIGFuZCBo aXR0aW5nCisjIGJyZWFrcG9pbnRzIGluc2lkZSBhbmQgb3V0c2lkZSBhIGtlcm5lbC4gIFRoaXMg dGVzdCBpcyBzaW1pbGFyIHRvCisjIGJyZWFrLmV4cCBleGNlcHQgdGhhdCBub3QgYWxsIHRoZSBi cmVha3BvaW50cyBhcmUgZGVmaW5lZCBhdCB0aGUKKyMgYmVnaW5uaW5nLiAgQSBjb3VwbGUgaW4t IGFuZCBvdXQta2VybmVsIGJyZWFrcG9pbnRzIGFyZSBkZWZpbmVkIHdoZW4KKyMgd2UgYXJlIGlu c2lkZSB0aGUga2VybmVsLgorCitsb2FkX2xpYiBzeWNsLmV4cAorCitzdGFuZGFyZF90ZXN0Zmls ZSBzaW5nbGUtdGFzay5jcHAKKworc2V0IHN5Y2xfZGV2aWNlX2xpc3QgW2luaXRfc3ljbF9kZXZp Y2VzX2xpc3RdCitpZiB7W2xsZW5ndGggJHN5Y2xfZGV2aWNlX2xpc3RdID09IDB9IHsKKyAgICB1 bnN1cHBvcnRlZCAidGFyZ2V0IGRvZXMgbm90IHN1cHBvcnQgU1lDTCIKKyAgICByZXR1cm4gMAor fQorCitpZiB7W2J1aWxkX2V4ZWN1dGFibGUgImZhaWxlZCB0byBjb21waWxlICRzcmNmaWxlIiBc CisgICAgIiR7YmluZmlsZX0iICRzcmNmaWxlIHtzeWNsIGRlYnVnfV19IHsKKyAgICByZXR1cm4g LTEKK30KKworZm9yZWFjaCBkZXZpY2UgJHN5Y2xfZGV2aWNlX2xpc3QgeworICAgIHN5Y2xfd2l0 aF9pbnRlbGd0X2xvY2sgJGRldmljZSB7CisJY2xlYW5fcmVzdGFydCAiJHtiaW5maWxlfSIKKwor CWlmIHshW3N5Y2xfc3RhcnQgJGRldmljZV19IHsKKwkgICAgY29udGludWUKKwl9CisKKwkjIFNl dCBicmVha3BvaW50cyBpbnNpZGUgYW5kIG91dHNpZGUgdGhlIGtlcm5lbC4KKwlzZXQgYWZ0ZXJf a2VybmVsIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJsaW5lLWFmdGVyLWtlcm5lbCJdCisJc2V0IGlu c2lkZV9rZXJuZWxfMSBbZ2RiX2dldF9saW5lX251bWJlciAia2VybmVsLWxpbmUtMSJdCisJc2V0 IGluc2lkZV9rZXJuZWxfMiBbZ2RiX2dldF9saW5lX251bWJlciAia2VybmVsLWxpbmUtMiJdCisJ c2V0IGluc2lkZV9rZXJuZWxfMyBbZ2RiX2dldF9saW5lX251bWJlciAia2VybmVsLWxpbmUtMyJd CisJc2V0IGluc2lkZV9rZXJuZWxfNCBbZ2RiX2dldF9saW5lX251bWJlciAia2VybmVsLWxpbmUt NCJdCisKKwlnZGJfYnJlYWtwb2ludCAkaW5zaWRlX2tlcm5lbF8yIHttZXNzYWdlfQorCWdkYl9j b250aW51ZV90b19icmVha3BvaW50ICJrZXJuZWwgbGluZSAyIiBcCisJICAgICIuKiRzcmNmaWxl OiRpbnNpZGVfa2VybmVsXzIuKiIKKworCSMgTm93IHdlIGFyZSBpbnNpZGUgdGhlIGtlcm5lbCBh bmQgZGVmaW5pbmcgYSBrZXJuZWwgYnJlYWtwb2ludC4KKwlnZGJfYnJlYWtwb2ludCAkaW5zaWRl X2tlcm5lbF80IHttZXNzYWdlfQorCWdkYl9jb250aW51ZV90b19icmVha3BvaW50ICJrZXJuZWwg bGluZSA0IiBcCisJICAgICIuKiRzcmNmaWxlOiRpbnNpZGVfa2VybmVsXzQuKiIKKworCSMgV2Ug YXJlIHN0aWxsIGluc2lkZSB0aGUga2VybmVsIGFuZCBkZWZpbmluZyBhIGhvc3QgYnJlYWtwb2lu dC4KKwlnZGJfYnJlYWtwb2ludCAkYWZ0ZXJfa2VybmVsIHttZXNzYWdlfQorCWdkYl9jb250aW51 ZV90b19icmVha3BvaW50ICJsaW5lIGFmdGVyIGtlcm5lbCIgXAorCSAgICAiLiokc3JjZmlsZTok YWZ0ZXJfa2VybmVsLioiCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu c3ljbC9zaW5nbGUtdGFzay5jcHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5zeWNsL3NpbmdsZS10YXNr LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwLi5kYzYxMDVjMDMxNzRkYTdiYTdhZjk4ZGNlNTlmZjFiNWQ5NTgzMWM4 Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuc3ljbC9zaW5nbGUtdGFzay5j cHAKQEAgLTAsMCArMSw1MCBAQAorLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhl IEdOVSBkZWJ1Z2dlci4KKworICAgQ29weXJpZ2h0IDIwMTktMjAyNCBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgorICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws CisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworI2luY2x1 ZGUgPHN5Y2wvc3ljbC5ocHA+CisjaW5jbHVkZSA8aW9zdHJlYW0+CisjaW5jbHVkZSAiLi4vbGli L3N5Y2wtdXRpbC5jcHAiCisKK2ludAorbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sK KyAgaW50IGRhdGFbM10gPSB7NywgOCwgOX07CisKKyAgeyAvKiBFeHRyYSBzY29wZSBlbmZvcmNl cyB3YWl0aW5nIG9uIHRoZSBrZXJuZWwuICAqLworICAgIHN5Y2w6OnF1ZXVlIGRldmljZVF1ZXVl IHtnZXRfc3ljbF9xdWV1ZSAoYXJnYywgYXJndil9OworICAgIHN5Y2w6OmJ1ZmZlcjxpbnQsIDE+ IGJ1ZiB7ZGF0YSwgc3ljbDo6cmFuZ2U8MT4gezN9fTsKKworICAgIGRldmljZVF1ZXVlLnN1Ym1p dCAoWyZdIChzeWNsOjpoYW5kbGVyJiBjZ2gpICAvKiBsaW5lLWJlZm9yZS1rZXJuZWwgKi8KKyAg ICAgIHsKKwlhdXRvIG51bWJlcnMgPSBidWYuZ2V0X2FjY2VzczxzeWNsOjphY2Nlc3M6Om1vZGU6 OnJlYWRfd3JpdGU+IChjZ2gpOworCisJY2doLnNpbmdsZV90YXNrPGNsYXNzIHNpbXBsZV9rZXJu ZWw+IChbPV0gKCkKKwkgIHsKKwkgICAgaW50IHRlbiA9IG51bWJlcnNbMV0gKyAyOyAgLyoga2Vy bmVsLWxpbmUtMSAqLworCSAgICBpbnQgZm91ciA9IG51bWJlcnNbMl0gLSA1OyAvKiBrZXJuZWwt bGluZS0yICovCisJICAgIGludCBmb3VydGVlbiA9IHRlbiArIGZvdXI7IC8qIGtlcm5lbC1saW5l LTMgKi8KKwkgICAgbnVtYmVyc1swXSA9IGZvdXJ0ZWVuICogMzsgLyoga2VybmVsLWxpbmUtNCAq LworCSAgfSk7CisgICAgICB9KTsKKyAgfQorCisjaWZuZGVmIE9NSVRfUkVQT1JUCisgIHN0ZDo6 Y291dCA8PCAiUmVzdWx0IGlzICIgPDwgZGF0YVswXSA8PCBzdGQ6OmVuZGw7ICAvKiBsaW5lLWFm dGVyLWtlcm5lbCAqLworI2VuZGlmCisKKyAgcmV0dXJuIGRhdGFbMF0gPT0gNDIgPyAwIDogMTsg LyogcmV0dXJuLXN0bXQgKi8KK30KZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5l eHAgYi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCmluZGV4IDdlZTIwNDNmMGY4ODYwMmY2NDk0 M2U1MDgzYmUyNTY2YjFmMzM2OTIuLmQ3MTc5ZGI0YWY0N2IyZTFmMDFkNzM4NzVhNDI5NDMyOWFi MTYxMTIgMTAwNjQ0Ci0tLSBhL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKKysrIGIvZ2RiL3Rl c3RzdWl0ZS9saWIvZ2RiLmV4cApAQCAtNjUyNiw2ICs2NTI2LDIxIEBAIHByb2MgZ2RiX2NvbXBp bGVfb3Blbm1wIHtzb3VyY2UgZGVzdCB0eXBlIG9wdGlvbnN9IHsKICAgICByZXR1cm4gW2dkYl9j b21waWxlICRzb3VyY2UgJGRlc3QgJHR5cGUgJG9wdGlvbnNdCiB9CiAKKyMgQnVpbGQgYSBTWUNM IHByb2dyYW0gZnJvbSBTT1VSQ0UuICBTZWUgcHJlZmF0b3J5IGNvbW1lbnQgZm9yCisjIGdkYl9j b21waWxlLCBhYm92ZSwgZm9yIGRpc2N1c3Npb24gb2YgdGhlIHBhcmFtZXRlcnMgdG8gdGhpcyBw cm9jLgorCitwcm9jIGdkYl9jb21waWxlX3N5Y2wge3NvdXJjZSBkZXN0IHR5cGUgb3B0aW9uc30g eworICAgIHNldCBuZXdfb3B0aW9ucyB7YWRkaXRpb25hbF9mbGFncz0tZnN5Y2x9CisgICAgbGFw cGVuZCBuZXdfb3B0aW9ucyB7YWRkaXRpb25hbF9mbGFncz0tZnN5Y2wtdW5uYW1lZC1sYW1iZGF9 CisgICAgbGFwcGVuZCBuZXdfb3B0aW9ucyB7YysrfQorICAgIGxhcHBlbmQgbmV3X29wdGlvbnMg e29wdGltaXplPS1PMH0KKworICAgICMgSWYgdGhlIG9wdGltaXplIG9wdGlvbiBpcyBnaXZlbiBt dWx0aXBsZSB0aW1lcywgb25seSB0aGUgbGFzdCB1c2UgaXMKKyAgICAjIHNpZ25pZmljYW50IGlu IERFSkFHTlUuICBTbywgdG8gbWFrZSBvcHRpbWl6ZSBvcHRpb24gc2V0IGluIHRoZSB0ZXN0Cisg ICAgIyBzaWduaWZpY2FudCwgaW5wdXQgJ29wdGlvbnMnIGFyZSBhcHBlbmRlZCB0byB0aGUgZW5k IGhlcmUuCisgICAgcmV0dXJuIFtnZGJfY29tcGlsZSAkc291cmNlICRkZXN0ICR0eXBlIFtjb25j YXQgJG5ld19vcHRpb25zICRvcHRpb25zXV0KK30KKwogIyBTZW5kIGEgY29tbWFuZCB0byBHREIu CiAjIEZvciBvcHRpb25zIGZvciBUWVBFIHNlZSBnZGJfc3RkaW5fbG9nX3dyaXRlCiAKQEAgLTg3 MjksNyArODc0NCw3IEBAIHByb2MgYnVpbGRfZXhlY3V0YWJsZV9mcm9tX3NwZWNzIHt0ZXN0bmFt ZSBleGVjdXRhYmxlIG9wdGlvbnMgYXJnc30gewogICAgIHNldCBiaW5maWxlIFtzdGFuZGFyZF9v dXRwdXRfZmlsZSAkZXhlY3V0YWJsZV0KIAogICAgIHNldCBmdW5jIGdkYl9jb21waWxlCi0gICAg c2V0IGZ1bmNfaW5kZXggW2xzZWFyY2ggLXJlZ2V4cCAkb3B0aW9ucyB7XihwdGhyZWFkc3xzaGxp YnxzaGxpYl9wdGhyZWFkc3xvcGVubXApJH1dCisgICAgc2V0IGZ1bmNfaW5kZXggW2xzZWFyY2gg LXJlZ2V4cCAkb3B0aW9ucyB7XihwdGhyZWFkc3xzaGxpYnxzaGxpYl9wdGhyZWFkc3xvcGVubXB8 c3ljbCkkfV0KICAgICBpZiB7JGZ1bmNfaW5kZXggIT0gLTF9IHsKIAlzZXQgZnVuYyAiJHtmdW5j fV9bbGluZGV4ICRvcHRpb25zICRmdW5jX2luZGV4XSIKICAgICB9CmRpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2xpYi9pbnRlbGd0LXV0aWxzLmV4cCBiL2dkYi90ZXN0c3VpdGUvbGliL2ludGVs Z3QtdXRpbHMuZXhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOTljMGZlNzhjNzRkZDEyYjNjNmY5N2VmZjMwZjg2 YmJlOTdkM2YKLS0tIC9kZXYvbnVsbAorKysgYi9nZGIvdGVzdHN1aXRlL2xpYi9pbnRlbGd0LXV0 aWxzLmV4cApAQCAtMCwwICsxLDQzIEBACisjIENvcHlyaWdodCAyMDIwLTIwMjQgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJ ZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKyMgSW50ZWxndCB1 dGlsaXR5IHByb2NlZHVyZXMuCisKKyMgVGhlIGxvY2sgZmlsZSB1c2VkIHRvIGVuc3VyZSB0aGF0 IG9ubHkgb25lIEdEQiBoYXMgYWNjZXNzIHRvIHRoZSBHUFUKKyMgYXQgYSB0aW1lLgorCitzZXQg aW50ZWxndF9sb2NrX2ZpbGVuYW1lIGludGVsZ3QtcGFyYWxsZWwubG9jaworCisjIFJldHVybiBu b24temVybyBpZiB0aGUgaW5zdHJ1Y3Rpb24gYXQgQUREUkVTUyBpcyBjb21wYWN0LCAwIG90aGVy d2lzZS4KKworcHJvYyBpc19jb21wYWN0X2luc24ge2FkZHJlc3N9IHsKKyAgICAjIENoZWNrIHRo ZSBDbXB0Q3RybCBmbGFnIChiaXQgMjkpLgorICAgIHNldCB0ZXN0ICJpcyBjb21wYWN0IGluc24i CisgICAgc2V0IGlzX2NvbXBhY3QgW2dldF9pbnRlZ2VyX3ZhbHVlb2YgXAorCQkJIigodW5zaWdu ZWQgY2hhciAqKSR7YWRkcmVzc30pXFszXF0gJiAweDIwIiAwICR0ZXN0XQorICAgIHJldHVybiAk aXNfY29tcGFjdAorfQorCisjIFNldCB0aGUgYnJlYWtwb2ludCBiaXQgb2YgdGhlIGluc3RydWN0 aW9uIGF0IEFERFJFU1MuCisKK3Byb2Nfd2l0aF9wcmVmaXggc2V0X2JyZWFrcG9pbnRfYml0IHth ZGRyZXNzfSB7CisgICAgIyBTZXQgQml0IDcgb24gYSBjb21wYWN0ZWQgaW5zdHJ1Y3Rpb24sIEJp dCAzMCBvbiBhIGZ1bGwgaW5zdHJ1Y3Rpb24uCisgICAgc2V0IHRlc3QgInNldCBicCBiaXQiCisg ICAgaWYge1tpc19jb21wYWN0X2luc24gJGFkZHJlc3NdfSB7CisJZ2RiX3Rlc3QgInByaW50L3gg KCh1bnNpZ25lZCBjaGFyICopJHthZGRyZXNzfSlcWzBcXSB8PSAweDgwIiAiIiAkdGVzdAorICAg IH0gZWxzZSB7CisJZ2RiX3Rlc3QgInByaW50L3ggKCh1bnNpZ25lZCBjaGFyICopJHthZGRyZXNz fSlcWzNcXSB8PSAweDQwIiAiIiAkdGVzdAorICAgIH0KK30KZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvbGliL3N5Y2wtZGV2aWNlcy5jcHAgYi9nZGIvdGVzdHN1aXRlL2xpYi9zeWNsLWRldmlj ZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAuLmFjMWNhNjdmYWFmMzE5MzQ1NzZhMmI4YzA5MzJjYTkxNjVmOGRm MDQKLS0tIC9kZXYvbnVsbAorKysgYi9nZGIvdGVzdHN1aXRlL2xpYi9zeWNsLWRldmljZXMuY3Bw CkBAIC0wLDAgKzEsMTA3IEBACisvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUg R05VIGRlYnVnZ2VyLgorCisgICBDb3B5cmlnaHQgMjAyMi0yMDI0IEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCisgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK KyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJ ZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisvKiBVdGls aXR5IGZpbGUgZm9yIFNZQ0wgdGVzdCBwcm9ncmFtcyB0byBnZXQgbGlzdCBvZiBhdmFpbGFibGUg ZGV2aWNlcy4gICovCisKKyNpbmNsdWRlIDxzeWNsL3N5Y2wuaHBwPgorI2luY2x1ZGUgPG1hcD4K Kworc3RhdGljIHN0ZDo6c3RyaW5nCitnZXRfYmFja2VuZF9uYW1lIChzeWNsOjpiYWNrZW5kIGJh Y2tlbmRfYXJnKQoreworICBzdGQ6OnN0cmluZyBiYWNrZW5kX25hbWU7CisKKyAgaWYgKGJhY2tl bmRfYXJnID09IHN5Y2w6OmJhY2tlbmQ6Om9wZW5jbCkKKyAgICBiYWNrZW5kX25hbWUgPSAib3Bl bmNsIjsKKyAgZWxzZSBpZiAoYmFja2VuZF9hcmcgPT0gIHN5Y2w6OmJhY2tlbmQ6OmV4dF9vbmVh cGlfbGV2ZWxfemVybykKKyAgICBiYWNrZW5kX25hbWUgPSAiZXh0X29uZWFwaV9sZXZlbF96ZXJv IjsKKyAgZWxzZQorICAgIHsKKyAgICAgIHN0ZDo6Y291dCA8PCAiU1lDTDogVW5yZWNvZ25pemVk IGJhY2tlbmQuIiA8PCBzdGQ6OmVuZGw7CisgICAgICBleGl0ICgxKTsKKyAgICB9CisKKyAgcmV0 dXJuIGJhY2tlbmRfbmFtZTsKK30KKworc3RhdGljIHN0ZDo6c3RyaW5nCitnZXRfZGV2aWNlX3R5 cGUgKHN5Y2w6OmluZm86OmRldmljZV90eXBlIHR5cGUpCit7CisgIHN0ZDo6c3RyaW5nIHR5cGVf bmFtZTsKKworICBpZiAodHlwZSA9PSBzeWNsOjppbmZvOjpkZXZpY2VfdHlwZTo6Y3B1KQorICAg IHR5cGVfbmFtZSA9ICJjcHUiOworICBlbHNlIGlmICh0eXBlID09IHN5Y2w6OmluZm86OmRldmlj ZV90eXBlOjpncHUpCisgICAgdHlwZV9uYW1lID0gImdwdSI7CisgIGVsc2UgaWYgKHR5cGUgPT0g c3ljbDo6aW5mbzo6ZGV2aWNlX3R5cGU6OmFjY2VsZXJhdG9yKQorICAgIHR5cGVfbmFtZSA9ICJh Y2NlbGVyYXRvciI7CisgIGVsc2UKKyAgICB7CisgICAgICBzdGQ6OmNvdXQgPDwgIlNZQ0w6IFVu cmVjb2duaXplZCBkZXZpY2UgdHlwZS4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgIGV4aXQgKDEpOwor ICAgIH0KKworICByZXR1cm4gdHlwZV9uYW1lOworfQorCitpbnQKK21haW4gKCkKK3sKKyAgY29u c3Qgc3RkOjp2ZWN0b3I8c3ljbDo6ZGV2aWNlPiBkZXZpY2VzCisgICAgPSBzeWNsOjpkZXZpY2U6 OmdldF9kZXZpY2VzIChzeWNsOjppbmZvOjpkZXZpY2VfdHlwZTo6YWxsKTsKKworICBpZiAoZGV2 aWNlcy5lbXB0eSAoKSkKKyAgICB7CisgICAgICBzdGQ6OmNvdXQgPDwgIlNZQ0w6IENvdWxkIG5v dCBmaW5kIGFueSBkZXZpY2UiIDw8IHN0ZDo6ZW5kbDsKKyAgICAgIGV4aXQgKDEpOworICAgIH0K KworICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgaW50PiBkZXZpY2VfdHlwZXM7CisKKyAgZm9yIChj b25zdCBzeWNsOjpkZXZpY2UgJmRldmljZSA6IGRldmljZXMpCisgICAgeworICAgICAgY29uc3Qg c3RkOjpzdHJpbmcgZGV2X25hbWUKKwk9IGRldmljZS5nZXRfaW5mbzxzeWNsOjppbmZvOjpkZXZp Y2U6Om5hbWU+ICgpOworICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVyc2lvbgorCT0gZGV2aWNl LmdldF9pbmZvPHN5Y2w6OmluZm86OmRldmljZTo6ZHJpdmVyX3ZlcnNpb24+ICgpOworICAgICAg Y29uc3Qgc3RkOjpzdHJpbmcgYmFja2VuZF9uYW1lCisJPSBnZXRfYmFja2VuZF9uYW1lIChkZXZp Y2UuZ2V0X2JhY2tlbmQgKCkpOworCisgICAgICBjb25zdCBzdGQ6OnN0cmluZyB0eXBlCisJPSBn ZXRfZGV2aWNlX3R5cGUgKGRldmljZS5nZXRfaW5mbzxzeWNsOjppbmZvOjpkZXZpY2U6OmRldmlj ZV90eXBlPiAoKSk7CisKKyAgICAgIGlmIChiYWNrZW5kX25hbWUgPT0gIiIpCisJY29udGludWU7 CisKKyAgICAgIHN0ZDo6c3RyaW5nIGRldl9rZXkge2Rldl9uYW1lICsgIjsiICsgYmFja2VuZF9u YW1lICsgIjsiICsgdmVyc2lvbgorCQkJICAgKyAiOyIgKyB0eXBlfTsKKyAgICAgIGRldmljZV90 eXBlc1tkZXZfa2V5XSsrOworICAgIH0KKworICBzdGQ6OmNvdXQgPDwgIlNZQ0w6IExpc3Qgb2Yg VGFyZ2V0IGRldmljZXM6IFsiOworICBpbnQgaW5kZXggPSAwOworICBmb3IgKGNvbnN0IGF1dG8m IFtkZXZfa2V5LCBjb3VudF0gOiBkZXZpY2VfdHlwZXMpCisgICAgeworICAgICAgaW5kZXgrKzsK KyAgICAgIHN0ZDo6Y291dCA8PCBkZXZfa2V5IDw8ICI7IiA8PCBjb3VudDsKKyAgICAgIGlmIChp bmRleCA8IGRldmljZV90eXBlcy5zaXplICgpKQorCXN0ZDo6Y291dCA8PCAiLCI7CisgICAgfQor ICBzdGQ6OmNvdXQgPDwgIl0iIDw8IHN0ZDo6ZW5kbDsKKworICByZXR1cm4gMDsKK30KZGlmZiAt LWdpdCBhL2dkYi90ZXN0c3VpdGUvbGliL3N5Y2wtaGVsbG8uY3BwIGIvZ2RiL3Rlc3RzdWl0ZS9s aWIvc3ljbC1oZWxsby5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGRlNDg5MmNlMzFkMjExMWUyYzExZjE1Yjcy MjI2YzgwNzI0ZWFjNQotLS0gL2Rldi9udWxsCisrKyBiL2dkYi90ZXN0c3VpdGUvbGliL3N5Y2wt aGVsbG8uY3BwCkBAIC0wLDAgKzEsNDMgQEAKKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBH REIsIHRoZSBHTlUgZGVidWdnZXIuCisKKyAgIENvcHlyaWdodCAyMDE5LTIwMjQgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAg IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisK KyNpbmNsdWRlIDxzeWNsL3N5Y2wuaHBwPgorI2luY2x1ZGUgInN5Y2wtdXRpbC5jcHAiCisKK3N0 YXRpYyBpbnQgbnVtYmVyc1s4XTsKKworaW50CittYWluIChpbnQgYXJnYywgY2hhciAqYXJndltd KQoreworICBzeWNsOjpxdWV1ZSBkZXZpY2VRdWV1ZSB7Z2V0X3N5Y2xfcXVldWUgKGFyZ2MsIGFy Z3YpfTsKKyAgc3ljbDo6cmFuZ2U8MT4gbGVuZ3RoIHs4fTsKKworICB7IC8qIEV4dHJhIHNjb3Bl IGVuZm9yY2VzIHdhaXRpbmcgb24gdGhlIGtlcm5lbC4gICovCisgICAgc3ljbDo6YnVmZmVyPGlu dCwgMT4gYnVmIHtudW1iZXJzLCBsZW5ndGh9OworICAgIGRldmljZVF1ZXVlLnN1Ym1pdCAoWyZd IChzeWNsOjpoYW5kbGVyJiBjZ2gpCisgICAgICB7CisJYXV0byBhY2Nlc3NvciA9IGJ1Zi5nZXRf YWNjZXNzPHN5Y2w6OmFjY2Vzczo6bW9kZTo6cmVhZF93cml0ZT4gKGNnaCk7CisKKwljZ2gucGFy YWxsZWxfZm9yPGNsYXNzIFN5Y2xIZWxsbz4gKGxlbmd0aCwgWz1dIChzeWNsOjppZDwxPiB3aUlE KQorCSAgeworCSAgICBhY2Nlc3Nvclt3aUlEXSA9IHdpSURbMF0gKyAxOyAvKiBpbnNpZGUta2Vy bmVsICovCisJICB9KTsKKyAgICAgIH0pOworICB9CisKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2xpYi9zeWNsLXV0aWwuY3BwIGIvZ2RiL3Rlc3RzdWl0ZS9saWIv c3ljbC11dGlsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OWU2OTgxZDhiMmRmODRjZmM0ZjA1NDBhMTExMWZk YWRkMDk1NDE2Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvc3ljbC11dGls LmNwcApAQCAtMCwwICsxLDEzNSBAQAorLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwg dGhlIEdOVSBkZWJ1Z2dlci4KKworICAgQ29weXJpZ2h0IDIwMTktMjAyNCBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgorICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworLyog VXRpbGl0eSBmaWxlIGZvciBTWUNMIHRlc3QgcHJvZ3JhbXMgdG8gZW5hYmxlIGV4cGxpY2l0IHNl bGVjdGlvbiBvZgorICAgYSBTWUNMIGRldmljZS4gIEluY2x1ZGUgdGhpcyBmaWxlIGluIGVhY2gg U1lDTCB0ZXN0IHByb2dyYW0uICAqLworCisjaW5jbHVkZSA8c3ljbC9zeWNsLmhwcD4KKyNpbmNs dWRlIDxpb3N0cmVhbT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKK3N0YXRpYyBzeWNsOjppbmZvOjpk ZXZpY2VfdHlwZQorZ2V0X2RldmljZV90eXBlIChjb25zdCBzdGQ6OnN0cmluZyAmdHlwZV9hcmcp Cit7CisgIHN5Y2w6OmluZm86OmRldmljZV90eXBlIHR5cGU7CisKKyAgaWYgKHR5cGVfYXJnLmNv bXBhcmUgKCJjcHUiKSA9PSAwKQorICAgIHR5cGUgPSBzeWNsOjppbmZvOjpkZXZpY2VfdHlwZTo6 Y3B1OworICBlbHNlIGlmICh0eXBlX2FyZy5jb21wYXJlICgiZ3B1IikgPT0gMCkKKyAgICB0eXBl ID0gc3ljbDo6aW5mbzo6ZGV2aWNlX3R5cGU6OmdwdTsKKyAgZWxzZSBpZiAodHlwZV9hcmcuY29t cGFyZSAoImFjY2VsZXJhdG9yIikgPT0gMCkKKyAgICB0eXBlID0gc3ljbDo6aW5mbzo6ZGV2aWNl X3R5cGU6OmFjY2VsZXJhdG9yOworICBlbHNlCisgICAgeworICAgICAgc3RkOjpjb3V0IDw8ICJT WUNMOiBVbnJlY29nbml6ZWQgZGV2aWNlIHR5cGUgJyIKKwkJPDwgdHlwZV9hcmcgPDwgIiciIDw8 IHN0ZDo6ZW5kbDsKKyAgICAgIGV4aXQgKDEpOworICAgIH0KKworICByZXR1cm4gdHlwZTsKK30K Kworc3RhdGljIHN5Y2w6OmJhY2tlbmQKK2dldF9iYWNrZW5kX3R5cGUgKGNvbnN0IHN0ZDo6c3Ry aW5nICZiYWNrZW5kX2FyZykKK3sKKyAgc3ljbDo6YmFja2VuZCBiYWNrZW5kOworCisgIGlmIChi YWNrZW5kX2FyZy5jb21wYXJlICgib3BlbmNsIikgPT0gMCkKKyAgICBiYWNrZW5kID0gc3ljbDo6 YmFja2VuZDo6b3BlbmNsOworICBlbHNlIGlmIChiYWNrZW5kX2FyZy5jb21wYXJlICgiZXh0X29u ZWFwaV9sZXZlbF96ZXJvIikgPT0gMAorCSAgIHx8IGJhY2tlbmRfYXJnLmNvbXBhcmUgKCJsZXZl bF96ZXJvIikgPT0gMCkKKyAgICBiYWNrZW5kID0gc3ljbDo6YmFja2VuZDo6ZXh0X29uZWFwaV9s ZXZlbF96ZXJvOworICBlbHNlCisgICAgeworICAgICAgc3RkOjpjb3V0IDw8ICJTWUNMOiBVbnJl Y29nbml6ZWQgYmFja2VuZCAnIgorCQk8PCBiYWNrZW5kX2FyZyA8PCAiJyIgPDwgc3RkOjplbmRs OworICAgICAgZXhpdCAoMSk7CisgICAgfQorCisgIHJldHVybiBiYWNrZW5kOworfQorCitzdGF0 aWMgc3RkOjp2ZWN0b3I8c3ljbDo6ZGV2aWNlPgorZ2V0X3N5Y2xfZGV2aWNlcyAoaW50IGFyZ2Ms IGNoYXIgKmFyZ3ZbXSkKK3sKKyAgaWYgKGFyZ2MgPD0gMykKKyAgICB7CisgICAgICBzdGQ6OmNv dXQgPDwgIlVzYWdlOiAiIDw8IGFyZ3ZbMF0KKwkJPDwgIiA8Y3B1fGdwdXxhY2NlbGVyYXRvcj4i CisJCTw8ICIgPGRldmljZSBuYW1lIHN1YnN0cmluZz4iCisJCTw8ICIgPGJhY2tlbmQgbmFtZSBv cGVuY2x8bGV2ZWxfemVybz4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgIGV4aXQgKDEpOworICAgIH0K KworICBzdGQ6OnN0cmluZyB0eXBlX2FyZyB7YXJndlsxXX07CisgIHN0ZDo6c3RyaW5nIG5hbWVf YXJnIHthcmd2WzJdfTsKKyAgc3RkOjpzdHJpbmcgYmFja2VuZF9hcmcge2FyZ3ZbM119OworCisg IHN5Y2w6OmluZm86OmRldmljZV90eXBlIHR5cGUgPSBnZXRfZGV2aWNlX3R5cGUgKHR5cGVfYXJn KTsKKyAgc3ljbDo6YmFja2VuZCBiYWNrZW5kX3R5cGUgPSBnZXRfYmFja2VuZF90eXBlIChiYWNr ZW5kX2FyZyk7CisKKyAgc3RkOjp2ZWN0b3I8c3ljbDo6ZGV2aWNlPiBkZXZpY2VzID0gc3ljbDo6 ZGV2aWNlOjpnZXRfZGV2aWNlcyAodHlwZSk7CisKKyAgc3RkOjp2ZWN0b3I8c3ljbDo6ZGV2aWNl PiBmaWx0ZXJlZF9kZXZpY2VzOworICBmb3IgKGNvbnN0IHN5Y2w6OmRldmljZSAmZGV2aWNlIDog ZGV2aWNlcykKKyAgICB7CisgICAgICBzdGQ6OnN0cmluZyBkZXZfbmFtZSA9IGRldmljZS5nZXRf aW5mbzxzeWNsOjppbmZvOjpkZXZpY2U6Om5hbWU+ICgpOworICAgICAgc3RkOjpzdHJpbmcgcGxh dGZvcm1fbmFtZQorCT0gZGV2aWNlLmdldF9wbGF0Zm9ybSAoKS5nZXRfaW5mbzxzeWNsOjppbmZv OjpwbGF0Zm9ybTo6bmFtZT4gKCk7CisgICAgICBzdGQ6OnN0cmluZyB2ZXJzaW9uCisJPSBkZXZp Y2UuZ2V0X2luZm88c3ljbDo6aW5mbzo6ZGV2aWNlOjpkcml2ZXJfdmVyc2lvbj4gKCk7CisgICAg ICBzeWNsOjpiYWNrZW5kIGJhY2tlbmQgPSBkZXZpY2UuZ2V0X2JhY2tlbmQgKCk7CisKKyAgICAg IGlmIChkZXZfbmFtZS5maW5kIChuYW1lX2FyZykgIT0gc3RkOjpzdHJpbmc6Om5wb3MKKwkgICYm IGJhY2tlbmQgPT0gYmFja2VuZF90eXBlKQorCWZpbHRlcmVkX2RldmljZXMucHVzaF9iYWNrIChk ZXZpY2UpOworICAgIH0KKworICBpZiAoZmlsdGVyZWRfZGV2aWNlcy5lbXB0eSAoKSkKKyAgICB7 CisgICAgICBzdGQ6OmNvdXQgPDwgIlNZQ0w6IENvdWxkIG5vdCBzZWxlY3QgYSBkZXZpY2UiIDw8 IHN0ZDo6ZW5kbDsKKyAgICAgIGV4aXQgKDEpOworICAgIH0KKworICByZXR1cm4gZmlsdGVyZWRf ZGV2aWNlczsKK30KKworc3RhdGljIHZvaWQKK3ByaW50X2RldmljZSAoY29uc3Qgc3ljbDo6ZGV2 aWNlICZkZXZpY2UpCit7CisgIHN0ZDo6c3RyaW5nIGRldl9uYW1lCisgICAgPSBkZXZpY2UuZ2V0 X2luZm88c3ljbDo6aW5mbzo6ZGV2aWNlOjpuYW1lPiAoKTsKKyAgc3RkOjpzdHJpbmcgcGxhdGZv cm1fbmFtZQorICAgID0gZGV2aWNlLmdldF9wbGF0Zm9ybSAoKS5nZXRfaW5mbzxzeWNsOjppbmZv OjpwbGF0Zm9ybTo6bmFtZT4gKCk7CisgIHN0ZDo6c3RyaW5nIHZlcnNpb24KKyAgICA9IGRldmlj ZS5nZXRfaW5mbzxzeWNsOjppbmZvOjpkZXZpY2U6OmRyaXZlcl92ZXJzaW9uPiAoKTsKKworICBz dGQ6OmNvdXQgPDwgIlsiIDw8IGRldl9uYW1lIDw8ICJdIgorCSAgICA8PCAiIGZyb20gWyIgPDwg cGxhdGZvcm1fbmFtZSA8PCAiXSIKKwkgICAgPDwgIiB2ZXJzaW9uIFsiIDw8IHZlcnNpb24gPDwg Il0iOworfQorCitzdGF0aWMgc3ljbDo6cXVldWUKK2dldF9zeWNsX3F1ZXVlIChpbnQgYXJnYywg Y2hhciAqYXJndltdKQoreworICBzeWNsOjpkZXZpY2UgZGV2aWNlID0gZ2V0X3N5Y2xfZGV2aWNl cyAoYXJnYywgYXJndilbMF07CisgIHN0ZDo6Y291dCA8PCAiU1lDTDogVXNpbmcgZGV2aWNlOiAi OworICBwcmludF9kZXZpY2UgKGRldmljZSk7CisgIHN0ZDo6Y291dCA8PCBzdGQ6OmVuZGw7CisK KyAgcmV0dXJuIHN5Y2w6OnF1ZXVlIHtkZXZpY2V9OyAvKiByZXR1cm4tc3ljbC1xdWV1ZSAqLwor fQpkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9saWIvc3ljbC5leHAgYi9nZGIvdGVzdHN1aXRl L2xpYi9zeWNsLmV4cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jN2UwZDUyN2JkM2MxZTZiNTQ1MjNlYzViNGVjZWU0 Nzg2MDk0ZTAyCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvc3ljbC5leHAK QEAgLTAsMCArMSw0MTAgQEAKKyMgQ29weXJpZ2h0IDIwMTktMjAyNCBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwg b3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisj IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisjCisjIFN1cHBvcnQgbGlicmFy eSBmb3IgdGVzdGluZyBTWUNMIEdEQiBmZWF0dXJlcworIworIyBBIHBhcnRpY3VsYXIgU1lDTCBk ZXZpY2UgY2FuIGJlIHNlbGVjdGVkIGJ5IHBhc3NpbmcgdGhlIFNZQ0wgcHJvZ3JhbQorIyB0aHJl ZSBjb21tYW5kLWxpbmUgYXJndW1lbnRzOgorIyAgIDEuIHRoZSBkZXZpY2UgdHlwZSwgd2hvc2Ug dmFsdWUgaXMgaW4ge2NwdSwgZ3B1LCBhY2NlbGVyYXRvcn0uCisjICAgMi4gYSBzdWJzdHJpbmcg b2YgdGhlIGRldmljZSBuYW1lLgorIyAgIDMuIGJhY2tlbmQgbmFtZS4KKyMKKyMgVG8gc2V0IHRo ZXNlIGFyZ3VtZW50cyBwcm9wZXJseSwgdXNlIGEgU1lDTCBib2FyZCBmaWxlLCBhbmQKKyMgbWFr ZSB5b3VyIHRlc3QgcHJvZ3JhbSBzZWxlY3QgYSBxdWV1ZSB2aWEgdGhlIGdldF9zeWNsX3F1ZXVl CisjIGZ1bmN0aW9uIGluIGdkYi5zeWNsL3N5Y2wtdXRpbC5jcHAuICBTZWUgZ2RiLnN5Y2wvc3lj bC1oZWxsby5jcHAKKyMgZm9yIGEgc2FtcGxlIFNZQ0wgcHJvZ3JhbSBzZXR1cC4KKworbG9hZF9s aWIgaW50ZWxndC11dGlscy5leHAKKworIyBEZWZpbmUgZ2xvYmFsIHZhcmlhYmxlcyBmb3IgdGhl IGRyaXZlciB2ZXJzaW9uIGFuZCBwbGF0Zm9ybS4KKworaWYgeyFbaW5mbyBleGlzdHMgT0ZGTE9B RF9ERVZJQ0VfR1JPVVBdfSB7CisgICAgc2V0IE9GRkxPQURfREVWSUNFX0dST1VQICJjcHUsZ3B1 LGFjY2VsZXJhdG9yIgorfQorCit2ZXJib3NlIC1sb2cgIk9GRkxPQURfREVWSUNFX0dST1VQIGlz ICckT0ZGTE9BRF9ERVZJQ0VfR1JPVVAnIgorCisjIFJldHVybiB0cnVlIGlmIHRoZSBTWUNMIGRl dmljZSBzZWxlY3RlZCB2aWEgdGhlIGJvYXJkIGZpbGUKKyMgbWF0Y2hlcyB0aGUgYXJndW1lbnRz LiAgT3RoZXJ3aXNlIHJldHVybiBmYWxzZS4KKyMgSW5wdXQgYXJnIERFVklDRSBjb250YWlucyAi OyIgc2VwYXJhdGVkIGZvbGxvd2luZyBpbmZvcm1hdGlvbjoKKyMgRGV2aWNlIG5hbWU7QmFja2Vu ZCBUeXBlO0JhY2tlbmQgUGxhdGZvcm0gdmVyc2lvbi4KKyMgU2VlIGFuIGV4YW1wbGUgaW4gaW5p dF9zeWNsX2RldmljZXNfbGlzdC4KKworcHJvYyByZXF1aXJlX3N5Y2xfZGV2aWNlIHtkZXZpY2Ug dHlwZSBuYW1lfSB7CisgICAgc2V0IGFyZ3NfbGlzdCBbc3ljbF9nZXRfZGV2aWNlX2FyZ3MgJGRl dmljZV0KKyAgICBpZiB7W2xsZW5ndGggJGFyZ3NfbGlzdF0gPD0gMn0geworCXJldHVybiAwCisg ICAgfQorCisgICAgc2V0IHR5cGVfbWF0Y2ggW2V4cHIge1tsaW5kZXggJGFyZ3NfbGlzdCAwXSBl cSAkdHlwZX1dCisgICAgc2V0IG5hbWVfbWF0Y2ggW3N0cmluZyBtYXRjaCAkbmFtZSBbbGluZGV4 ICRhcmdzX2xpc3QgMV1dCisKKyAgICByZXR1cm4gW2V4cHIgJHR5cGVfbWF0Y2ggJiYgJG5hbWVf bWF0Y2hdCit9CisKKyMgUnVuIGEgdGVzdCBvbiB0aGUgdGFyZ2V0IHRvIGNoZWNrIGlmIGl0IHJl Y29nbml6ZXMgU1lDTC4KKyMgUmVtb3ZlIGRldmljZSBmcm9tIHRoZSBhdmFpbGFibGUgZGV2aWNl cyBsaXN0IGlmIFNZQ0wgaXMgbm90IHN1cHBvcnRlZAorIyBhbmQgcmV0dXJuIHRoZSB1cGRhdGVk IGxpc3QuCisKK3Byb2MgZ2V0X3N5Y2xfc3VwcG9ydGVkX2RldmljZXMge3N5Y2xfZGV2aWNlX2xp c3R9IHsKKyAgICBnbG9iYWwgc3JjZGlyIGluZmVyaW9yX2V4aXRlZF9yZQorCisgICAgc2V0IHN1 cHBvcnRlZF9zeWNsX2RldmljZV9saXN0IHt9CisKKyAgICAjIFNldCB1cCwgY29tcGlsZSwgYW5k IGV4ZWN1dGUgYSBzaW1wbGUgU1lDTCBwcm9ncmFtLgorICAgIHNldCBleGUgW3N0YW5kYXJkX291 dHB1dF9maWxlIHN5Y2wtaGVsbG9dCisgICAgc2V0IHNyYyAiJHNyY2Rpci9saWIvc3ljbC1oZWxs by5jcHAiCisKKyAgICBpZiB7W2J1aWxkX2V4ZWN1dGFibGUgImZhaWxlZCB0byBjb21waWxlICRz cmMiIFwKKwkgICAgICRleGUgJHNyYyB7c3ljbCBkZWJ1Z31dfSB7CisJdmVyYm9zZSAiU1lDTDog Q29tcGlsYXRpb24gZmFpbGVkIiAwCisJcmV0dXJuIDEKKyAgICB9CisgICAgdmVyYm9zZSAtbG9n ICJcblNZQ0w6IENvbXBpbGF0aW9uIHN1Y2NlZWRlZCIKKworICAgIGZvcmVhY2ggZGV2aWNlICRz eWNsX2RldmljZV9saXN0IHsKKwlpZiAhW2lzX3N5Y2xfZGV2aWNlX2ZpbHRlcmVkICRkZXZpY2Vd IHsKKwkgICAgY29udGludWUKKwl9CisKKwljbGVhbl9yZXN0YXJ0ICIke2V4ZX0iCisKKwlpZiB7 IVtzeWNsX3N0YXJ0ICRkZXZpY2VdfSB7CisJICAgIHZlcmJvc2UgIlNZQ0w6IFN1cHBvcnQgbm90 IGRldGVjdGVkIGZvciAke2RldmljZX0iIDAKKwkgICAgZ2RiX2V4aXQKKwkgICAgY29udGludWUK Kwl9CisKKwlzZXQgaW5zaWRlX2tlcm5lbCBbZ2RiX2dldF9saW5lX251bWJlciAiaW5zaWRlLWtl cm5lbCIgJHNyY10KKwlnZGJfYnJlYWtwb2ludCAic3ljbC1oZWxsby5jcHA6JGluc2lkZV9rZXJu ZWwiCisKKwlzZXQgcmVzdWx0IDEKKwlzeWNsX3dpdGhfaW50ZWxndF9sb2NrICRkZXZpY2Ugewor CSAgICBnZGJfdGVzdF9tdWx0aXBsZSAiY29udGludWUiICJjb250aW51ZSIgeworCQktcmUgLXdy YXAgIiRpbmZlcmlvcl9leGl0ZWRfcmUgbm9ybWFsbHldLioiIHsKKwkJICAgIHNldCByZXN1bHQg MQorCQl9CisJCS1yZSAtd3JhcCAiJGluZmVyaW9yX2V4aXRlZF9yZSB3aXRoIGNvZGUuKiIgewor CQkgICAgc2V0IHJlc3VsdCAxCisJCX0KKwkJLXJlIC13cmFwICIoPzpCcmVha3BvaW50KSAuKiAo YXR8aW4pLipzeWNsLWhlbGxvLmNwcDokaW5zaWRlX2tlcm5lbC4qIiB7CisJCSAgICBzZXQgcmVz dWx0IDAKKwkJfQorCQktcmUgLXdyYXAgInJlY2VpdmVkIHNpZ25hbCBTSUdBQlJULCBBYm9ydGVk LioiIHsKKwkJICAgIHNldCByZXN1bHQgMQorCQl9CisJICAgIH0KKwl9CisKKwlpZiB7JHJlc3Vs dCA9PSAwfSB7CisJICAgIHZlcmJvc2UgIlNZQ0w6IFN1cHBvcnQgZGV0ZWN0ZWQgZm9yICR7ZGV2 aWNlfSIgMAorCSAgICBsYXBwZW5kIHN1cHBvcnRlZF9zeWNsX2RldmljZV9saXN0ICIke2Rldmlj ZX0iCisJfSBlbHNlIHsKKwkgICAgdmVyYm9zZSAiU1lDTDogU3VwcG9ydCBub3QgZGV0ZWN0ZWQg Zm9yICR7ZGV2aWNlfSIgMAorCX0KKworCWdkYl9leGl0CisgICAgfQorCisgICAgcmV0dXJuICRz dXBwb3J0ZWRfc3ljbF9kZXZpY2VfbGlzdAorfQorCisjIFJ1biB0aGUgcHJvZ3JhbSB1bmRlciBk ZWJ1ZyBieSBwYXNzaW5nIERFVklDRSBhcyB0aGUgY29tbWFuZCBsaW5lCisjIGFyZ3VtZW50LiAg SWYgdGhlIGRldmljZSBpcyBub3QgSW50ZWwgR1QsIHN0b3AgYXQgbWFpbi4gIElmIHRoZQorIyBk ZXZpY2UgaXMgSW50ZWwgR1QsIGNvbnRpbnVlIHVudGlsIHRoZSB6ZUNvbnRleHRDcmVhdGUgQVBJ IGNhbGwgYW5kCisjIGF0dGVtcHQgdG8gY3JlYXRlIGFub3RoZXIgaW5mZXJpb3IgY29ubmVjdGVk IHRvIGFuIEludGVsIEdUCisjIGdkYnNlcnZlciB0YXJnZXQuCisjCisjIFJldHVybiAxIG9uIHN1 Y2Nlc3MsIDAgb24gZmFpbHVyZS4KKworcHJvYyBzeWNsX3N0YXJ0IHtkZXZpY2V9IHsKKyAgICBp ZiB7W3JlcXVpcmVfc3ljbF9kZXZpY2UgJGRldmljZSAiZ3B1IiAiSW50ZWwqIl19IHsKKwkjIFRv IGRlYnVnIGFuIEludGVsIEdUIGRldmljZSwgd2UgY3JlYXRlIGFuIGFkZGl0aW9uYWwKKwkjIGlu ZmVyaW9yLiAgRm9yIHRoZSBtdWx0aS10YXJnZXQgc2V0dGluZyB0byB3b3JrLCB3ZQorCSMgbmVl ZCB0byBvcGVyYXRlIGluIHRhcmdldC1ub24tc3RvcCBtb2RlLgorCWdkYl90ZXN0X25vX291dHB1 dCAibWFpbnQgc2V0IHRhcmdldC1ub24tc3RvcCBvbiIKKyAgICB9CisKKyAgICBzZXQgYXJncyAi IgorICAgIGZvcmVhY2ggYXJnIFtzeWNsX2dldF9kZXZpY2VfYXJncyAkZGV2aWNlXSB7CisJYXBw ZW5kIGFyZ3MgIickYXJnJyAiCisgICAgfQorICAgIGdkYl90ZXN0X25vX291dHB1dCAic2V0IGFy Z3MgJGFyZ3MiCisKKyAgICBpZiB7IVtydW50b19tYWluXX0geworCXJldHVybiAwCisgICAgfQor CisgICAgaWYge1tyZXF1aXJlX3N5Y2xfZGV2aWNlICRkZXZpY2UgImdwdSIgIkludGVsKiJdfSB7 CisJIyBGb3IgdGhlIEludGVsIEdUIHRhcmdldCwgZGVmaW5lIGEgImhvb2siIEJQIGF0IGEKKwkj IExldmVsLVplcm8gQVBJIGZ1bmN0aW9uIGF0IHdoaWNoIHRoZSBMZXZlbC1aZXJvIGJhY2tlbmQK KwkjIHdvdWxkIGhhdmUgYmVlbiBhbHJlYWR5IGluaXRpYWxpemVkLCBhdHRhY2hpbmcgdG8gdGhl CisJIyBkZXZpY2Ugd291bGQgYmUgZXhwZWN0ZWQgdG8gc3VjY2VlZC4gIE9uY2Ugd2UgaGl0IHRo ZQorCSMgaG9vayBCUCwgd2UgY3JlYXRlIHRoZSBhZGRpdGlvbmFsIGluZmVyaW9yLgorCWdkYl9i cmVha3BvaW50ICJ6ZUNvbnRleHRDcmVhdGUiIHsqfSJhbGxvdy1wZW5kaW5nIHRlbXBvcmFyeSIK KwlzZXQgaG9va19icF9oaXQgW2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJob29rIGJwIiBc CisJCQkgICAgICJ6ZUNvbnRleHRDcmVhdGVcW15cclxuXF0qIl0KKwlpZiB7JGhvb2tfYnBfaGl0 ICE9IDB9IHsKKwkgICAgcmV0dXJuIDAKKwl9CisKKwl3aXRoX3Rlc3RfcHJlZml4ICIkZGV2aWNl IiB7CisJICAgIHNldCBpbmZfcGlkIFtnZXRfaW5mZXJpb3JfcGlkXQorCSAgICBnZGJfdGVzdCAi YWRkLWluZmVyaW9yIC1uby1jb25uZWN0aW9uIgorCSAgICBnZGJfdGVzdCAiaW5mZXJpb3IgMiIK KwkgICAgc2V0IGNtZCAiZ2Ric2VydmVyLWludGVsZ3QgLS1vbmNlIC0tYXR0YWNoIC0gJGluZl9w aWQiCisJICAgIGdkYl90ZXN0ICJ0YXJnZXQgcmVtb3RlIHwgJGNtZCIgXAorCQkiUmVtb3RlIGRl YnVnZ2luZy4qIiAiY29ubmVjdCB0aGUgcmVtb3RlIHRhcmdldCIKKwkgICAgZ2RiX3Rlc3QgImlu ZmVyaW9yIDEiCisJICAgIGdkYl90ZXN0ICJzZXQgc2NoZWR1bGUtbXVsdGkgb24iCisJICAgIGdk Yl90ZXN0ICJpbmZvIGluZmVyaW9yIiAiLioiICJpbmZlcmlvcnMgZm9yIGxvZ2dpbmciCisJfQor ICAgIH0KKworICAgIHJldHVybiAxCit9CisKKyMgR2V0IGxpc3Qgb2YgZGV2aWNlcyBhbmQgcmV0 dXJuIDAgaWYgZGV2aWNlIGxpc3QgaXMgbm9uLWVtcHR5IGVsc2UKKyMgcmV0dXJuIDEuICBFYWNo IGRldmljZSBlbnRyeSBvZiB0aGlzIGxpc3QgY29udGFpbnMgIjsiIHNlcGFyYXRlZAorIyBmb2xs b3dpbmcgaW5mb3JtYXRpb246CisjIERldmljZSBuYW1lO0JhY2tlbmQgVHlwZTtCYWNrZW5kIFBs YXRmb3JtIHZlcnNpb24uCisjIGUuZy4KKyMgSW50ZWwoUikgLi47ZXh0X29uZWFwaV9sZXZlbF96 ZXJvOzEuMy4yNDM0NworCitnZGJfY2FjaGluZ19wcm9jIGluaXRfc3ljbF9kZXZpY2VzX2xpc3Qg e30geworICAgIGdsb2JhbCBzcmNkaXIKKyAgICBnbG9iYWwgaW5mZXJpb3JfZXhpdGVkX3JlCisg ICAgZ2xvYmFsIHN5Y2xfZGV2aWNlX2xpc3QKKworICAgIHNldCBzeWNsX2RldmljZV9saXN0IHt9 CisgICAgc2V0IHN1cHBvcnRlZF9zeWNsX2RldmljZV9saXN0IHt9CisKKyAgICAjIFNldCB1cCwg Y29tcGlsZSwgYW5kIGV4ZWN1dGUgYSBzaW1wbGUgU1lDTCBwcm9ncmFtLgorICAgIHNldCBleGUg W3N0YW5kYXJkX291dHB1dF9maWxlIHN5Y2wtZGV2aWNlc10KKyAgICBzZXQgc3JjICIkc3JjZGly L2xpYi9zeWNsLWRldmljZXMuY3BwIgorCisgICAgaWYgeyFbdGVzdF9jb21waWxlcl9pbmZvIHtp Y3gtKn0gYysrXX0geworCXVuc3VwcG9ydGVkICJTWUNMIHRlc3RzIHN1cHBvcnRlZCBvbmx5IGZv ciBkcGNwcCBhbmQgaWNweCBjb21waWxlcnMiCisJcmV0dXJuICRzeWNsX2RldmljZV9saXN0Cisg ICAgfQorCisgICAgaWYge1twcmVwYXJlX2Zvcl90ZXN0aW5nICJmYWlsZWQgdG8gY29tcGlsZSAk c3JjIiBcCisJICAgICAkZXhlICRzcmMge3N5Y2wgZGVidWd9XX0geworCXZlcmJvc2UgIlNZQ0w6 IENvbXBpbGF0aW9uIGZhaWxlZCIgMAorCXJldHVybiAkc3ljbF9kZXZpY2VfbGlzdAorICAgIH0K KyAgICB2ZXJib3NlIC1sb2cgIlxuU1lDTDogQ29tcGlsYXRpb24gc3VjY2VlZGVkIgorCisgICAg aWYgeyFbcnVudG9fbWFpbl19IHsKKwl1bnRlc3RlZCAiZmFpbGVkIHRvIHJ1biBzeWNsLWRldmlj ZXMgdG8gbWFpbiIKKwlyZXR1cm4gJHN5Y2xfZGV2aWNlX2xpc3QKKyAgICB9CisKKyAgICBzZXQg cmVzdWx0IDEKKyAgICBnZGJfdGVzdF9tdWx0aXBsZSAiY29udGludWUiICJjb250aW51ZSIgewor CS1yZSAiU1lDTDogTGlzdCBvZiBUYXJnZXQgZGV2aWNlczogXFxcWyhcW15cclxuXF0rKVxcXF0i IHsKKwkgICAgc2V0IHN5Y2xfZGV2aWNlX2xpc3QgW3NwbGl0ICRleHBlY3Rfb3V0KDEsc3RyaW5n KSAiLCJdCisJICAgIGV4cF9jb250aW51ZQorCX0KKwktcmUgLXdyYXAgIiRpbmZlcmlvcl9leGl0 ZWRfcmUgbm9ybWFsbHldLioiIHsKKwkgICAgc2V0IHJlc3VsdCAwCisJfQorCS1yZSAtd3JhcCAi JGluZmVyaW9yX2V4aXRlZF9yZSB3aXRoIGNvZGUuKiIgeworCSAgICBzZXQgcmVzdWx0IDEKKwl9 CisgICAgfQorCisgICAgc2V0IHN1cHBvcnRlZF9zeWNsX2RldmljZV9saXN0IFtnZXRfc3ljbF9z dXBwb3J0ZWRfZGV2aWNlcyAkc3ljbF9kZXZpY2VfbGlzdF0KKyAgICBpZiB7KCRyZXN1bHQgPT0g MCkgJiYgKFtsbGVuZ3RoICRzdXBwb3J0ZWRfc3ljbF9kZXZpY2VfbGlzdF0gPiAwKX0geworCXZl cmJvc2UgIlNZQ0w6IERldmljZXMgZm91bmQ6ICRzdXBwb3J0ZWRfc3ljbF9kZXZpY2VfbGlzdCIg MAorICAgIH0gZWxzZSB7CisJc2V0IHJlc3VsdCAxCisJdmVyYm9zZSAiU1lDTDogTm8gZGV2aWNl IGZvdW5kIiAwCisgICAgfQorCisgICAgZ2RiX2V4aXQKKworICAgIHJldHVybiAkc3VwcG9ydGVk X3N5Y2xfZGV2aWNlX2xpc3QKK30KKworIyBSZXR1cm4gdGhlIElEIG9mIHRoZSBjdXJyZW50IHRo cmVhZCAoPGluZmVyaW9yIG51bWJlcj4uPHRocmVhZAorIyBudW1iZXI+KS4gIFRoaXMgcHJvY2Vk dXJlIGNhbiBiZSBtb3JlIHByYWN0aWNhbCB0aGFuIHVzaW5nIHRoZQorIyAkX3RocmVhZCBhbmQg JF9pbmZlcmlvciBjb252ZW5pZW5jZSB2YXJpYWJsZXMsIGJlY2F1c2UgaWYgdGhlIFNZQ0wKKyMg a2VybmVsIGlzIG9mZmxvYWRlZCB0byBhIENQVSB0YXJnZXQsIHRoZSBjdXJyZW50IHRocmVhZCB3 b3VsZCBiZSBhCisjIHNpbmdsZSBpbnRlZ2VyLCBidXQgaWYgb2ZmbG9hZGVkIHRvIGEgR1BVLCBp dCBtYXkgYmUgYW4KKyMgaW5mZXJpb3ItcXVhbGlmaWVkIG51bWJlciBsaWtlIE4uTS4KK3Byb2Mg Z2V0X2N1cnJlbnRfdGhyZWFkIHtsb2NhdGlvbn0geworICAgIGdsb2JhbCBkZWNpbWFsCisKKyAg ICBnZGJfdGVzdF9tdWx0aXBsZSAidGhyZWFkIiAiZ2V0IGN1cnJlbnQgdGhyZWFkIGF0ICRsb2Nh dGlvbiIgeworCS1yZSAtd3JhcCAiQ3VycmVudCB0aHJlYWQgaXMgKCRkZWNpbWFsfCRkZWNpbWFs XC4kZGVjaW1hbCkuKiIgeworCSAgICBwYXNzICRnZGJfdGVzdF9uYW1lCisJICAgIHJldHVybiAk ZXhwZWN0X291dCgxLHN0cmluZykKKwl9CisJLXJlIC13cmFwICIiIHsKKwkgICAgZmFpbCAkZ2Ri X3Rlc3RfbmFtZQorCX0KKyAgICB9CisgICAgcmV0dXJuIDAKK30KKworIyBSZXR1cm5zIDEgaWYg dGhlIHRhcmdldCBkZXZpY2UgaXMgc2VsZWN0ZWQgdmlhIE9GRkxPQURfREVWSUNFX0dST1VQCisj IGFuZCAwIG90aGVyd2lzZS4KKyMgREVWSUNFIGNvbnRhaW5zICI7IiBzZXBhcmF0ZWQgZm9sbG93 aW5nIGluZm9ybWF0aW9uOgorIyBEZXZpY2UgbmFtZTtCYWNrZW5kIFR5cGU7QmFja2VuZCBQbGF0 Zm9ybSB2ZXJzaW9uLgorIyBTZWUgYW4gZXhhbXBsZSBpbiBpbml0X3N5Y2xfZGV2aWNlc19saXN0 LgorCitwcm9jIGlzX3N5Y2xfZGV2aWNlX2ZpbHRlcmVkIHtkZXZpY2V9IHsKKyAgICBnbG9iYWwg T0ZGTE9BRF9ERVZJQ0VfR1JPVVAKKworICAgICMgRmlsdGVyIGFjY29yZGluZyB0byBPRkZMT0FE X0RFVklDRV9HUk9VUC4KKyAgICBzZXQgZGV2aWNlX2luZm8gW3NwbGl0ICIkZGV2aWNlIiAiOyJd CisgICAgc2V0IGJhY2tlbmQgW2xpbmRleCAkZGV2aWNlX2luZm8gMV0KKyAgICBzZXQgZGV2aWNl X3R5cGUgW2xpbmRleCAkZGV2aWNlX2luZm8gM10KKworICAgIGlmIHtbbHNlYXJjaCAtbm9jYXNl IFtzcGxpdCAkT0ZGTE9BRF9ERVZJQ0VfR1JPVVAgIiwiXSAkZGV2aWNlX3R5cGVdIDwgMH0gewor CXZlcmJvc2UgLWxvZyAiU1lDTDogZGV2aWNlIHR5cGUgJGRldmljZV90eXBlIGlzIHVud2FudGVk LCBza2lwcGluZyAnJGRldmljZSciCisJcmV0dXJuIDAKKyAgICB9CisKKyAgICBpZiB7JGRldmlj ZV90eXBlID09ICJncHUiCisJJiYgW3N0cmluZyBtYXRjaCAtbm9jYXNlICIqb3BlbmNsKiIgJGJh Y2tlbmRdfSB7CisJdmVyYm9zZSAtbG9nICJTWUNMOiB1bnN1cHBvcnRlZCBjb21iaW5hdGlvbjog JGRldmljZV90eXBlICYgJGJhY2tlbmQiCisJcmV0dXJuIDAKKyAgICB9CisKKyAgICByZXR1cm4g MQorfQorCisjIFJldHVybnMgbnVtYmVyIG9mIGRldmljZXMgZm91bmQgaW4gZGV2aWNlIHN0cmlu Zy4KKworcHJvYyBzeWNsX2dldF9kZXZpY2VfY291bnQge2RldmljZX0geworICAgIHNldCBkZXZp Y2VfaW5mbyBbc3BsaXQgIiRkZXZpY2UiICI7Il0KKyAgICBzZXQgZGV2aWNlX2NvdW50IFtsaW5k ZXggJGRldmljZV9pbmZvIDRdCisgICAgcmV0dXJuICRkZXZpY2VfY291bnQKK30KKworIyBHZXRz IHRoZSBsaXN0IG9mIGFyZ3MgcmVxdWlyZWQgZm9yIHJ1bm5pbmcgdGhlIFNZQ0wgdGVzdHMsIHdo ZXJlIGlucHV0IGRldmljZQorIyBjb250YWlucyAiOyIgc2VwYXJhdGVkIGZvbGxvd2luZyBpbmZv cm1hdGlvbjoKKyMgRGV2aWNlIG5hbWU7QmFja2VuZCBUeXBlO0JhY2tlbmQgUGxhdGZvcm0gdmVy c2lvbjtEZXZpY2UgVHlwZTtjb3VudC4KKyMgU2VlIGFuIGV4YW1wbGUgaW4gaW5pdF9zeWNsX2Rl dmljZXNfbGlzdC4KKworcHJvYyBzeWNsX2dldF9kZXZpY2VfYXJncyB7ZGV2aWNlfSB7CisgICAg Z2xvYmFsIGhleAorCisgICAgc2V0IGRldmljZV9pbmZvIFtzcGxpdCAiJGRldmljZSIgIjsiXQor ICAgIHNldCBzeWNsX2RyaXZlcl9wbGF0Zm9ybSBbbGluZGV4ICRkZXZpY2VfaW5mbyAxXQorICAg IHNldCBzeWNsX2RyaXZlcl92ZXJzaW9uIFtsaW5kZXggJGRldmljZV9pbmZvIDJdCisgICAgc2V0 IGRldmljZV90eXBlIFtsaW5kZXggJGRldmljZV9pbmZvIDNdCisgICAgc2V0IGRldmljZV9uYW1l ICIiCisgICAgc2V0IGFyZ3NfbGlzdCB7fQorCisgICAgaWYgeyRkZXZpY2VfdHlwZSBlcSAiZ3B1 In0geworCWxhcHBlbmQgYXJnc19saXN0ICJncHUiCisJbGFwcGVuZCBhcmdzX2xpc3QgW2xpbmRl eCAkZGV2aWNlX2luZm8gMF0KKyAgICB9IGVsc2VpZiB7JGRldmljZV90eXBlIGVxICJjcHUifSB7 CisJbGFwcGVuZCBhcmdzX2xpc3QgImNwdSIKKwlpZiB7W3N0cmluZyBtYXRjaCAiKkludGVsKiIg JGRldmljZV19IHsKKwkgICAgbGFwcGVuZCBhcmdzX2xpc3QgIkludGVsIgorCX0KKyAgICB9IGVs c2VpZiB7JGRldmljZV90eXBlIGVxICJhY2NlbGVyYXRvciJ9IHsKKwlsYXBwZW5kIGFyZ3NfbGlz dCAiYWNjZWxlcmF0b3IiCisJaWYge1tzdHJpbmcgbWF0Y2ggIipJbnRlbCoiICRkZXZpY2VdfSB7 CisJICAgIGxhcHBlbmQgYXJnc19saXN0ICJJbnRlbCIKKwl9CisgICAgfSBlbHNlIHsKKwl2ZXJi b3NlICJTWUNMOiBVbmV4cGVjdGVkIGRldmljZSB0eXBlOiAke2RldmljZV90eXBlfSIgMAorICAg IH0KKyAgICBsYXBwZW5kIGFyZ3NfbGlzdCAkc3ljbF9kcml2ZXJfcGxhdGZvcm0KKyAgICBsYXBw ZW5kIGFyZ3NfbGlzdCAkc3ljbF9kcml2ZXJfdmVyc2lvbgorICAgIHJldHVybiAkYXJnc19saXN0 Cit9CisKKyMgR2V0cyB0aGUgcHJlZml4IHN0cmluZyByZXF1aXJlZCBmb3IgdGhlIFNZQ0wgdGVz dHMuCisjIERFVklDRSBjb250YWlucyAiOyIgc2VwYXJhdGVkIGZvbGxvd2luZyBpbmZvcm1hdGlv bjoKKyMgRGV2aWNlIG5hbWU7QmFja2VuZCBUeXBlO0JhY2tlbmQgUGxhdGZvcm0gdmVyc2lvbjtE ZXZpY2UgdHlwZS4KKyMgZS5nLgorIyBJbnRlbChSKSAuLi47ZXh0X29uZWFwaV9sZXZlbF96ZXJv OzEuMy4yNDM0NztncHUKKyMgRnVuY3Rpb24gcmV0dXJucyAiOiIgc2VwYXJhdGVkIHRlc3QgcHJl Zml4IHdoaWNoIGhhcyBmb2xsb3dpbmcgaW5mbzoKKyMgSW4gY2FzZSBvZiBub24gR1BVIGRldmlj ZTogRGV2aWNlIHR5cGU6QmFja2VuZCB0eXBlOmNwcAorIyBhbmQgaW4gY2FzZSBvZiBHUFU6IERl dmljZSB0eXBlIEdQVTogQmFja2VuZCB0eXBlOiBHcmFwaGljcyBkZXZpY2UgSUQKKyMgZS5nLiBn cHU6b3BlbmNsOnsweDEyMzR9CisKK3Byb2Mgc3ljbF9nZXRfZGV2aWNlX3ByZWZpeCB7ZGV2aWNl fSB7CisgICAgZ2xvYmFsIGhleAorICAgIHNldCBhcmdzX2xpc3QgW3N5Y2xfZ2V0X2RldmljZV9h cmdzICRkZXZpY2VdCisKKyAgICBpZiB7W3N0cmluZyBtYXRjaCAtbm9jYXNlICIqR3JhcGhpY3Mq IiAkZGV2aWNlXQorCSB8fCBbc3RyaW5nIG1hdGNoIC1ub2Nhc2UgIipHUFUqIiAkZGV2aWNlXX0g eworCSAgICAjIEluIGNhc2Ugb2YgR1BVIGRldmljZSwgYWRkIGRldmljZSBJRCB0byB0aGUgcHJl Zml4IHRvIGdldCBhIHVuaXF1ZQorCSAgICAjIHRlc3QgbmFtZSBmb3IgbXVsdGkgR1BVIHRlc3Qg bWFjaGluZXMuCisJICAgIHJldHVybiAiW2xpbmRleCAkYXJnc19saXN0IDBdOltsaW5kZXggJGFy Z3NfbGlzdCAyXTpcCisJCSAgICB7W3JlZ2V4cCAtYWxsIC1pbmxpbmUgJGhleCBbbGluZGV4ICRh cmdzX2xpc3QgMV1dfSIKKyAgICB9CisgICAgcmV0dXJuICJbbGluZGV4ICRhcmdzX2xpc3QgMF06 W2xpbmRleCAkYXJnc19saXN0IDJdOmNwcCIKK30KKworIyBSdW4gQk9EWSB1bmRlciB0aGUgbG9j aywgaWYgREVWSUNFIGlzIGFuIEludGVsIEdQVS4gIEFsc28gY2FsbHMKKyMgZ2RiX2V4aXQgYmVm b3JlIHJlbGVhc2luZyB0aGUgR1BVIGxvY2suCisjCisjIFNlZSB0aGUgc2ltaWxhciAnd2l0aF9n cHVfbG9jaycgaW4gcm9jbS5leHAuCisKK3Byb2Mgc3ljbF93aXRoX2ludGVsZ3RfbG9jayB7ZGV2 aWNlIGJvZHl9IHsKKyAgICB3aXRoX3Rlc3RfcHJlZml4IFtzeWNsX2dldF9kZXZpY2VfcHJlZml4 ICRkZXZpY2VdIHsKKwlpZiB7IVtyZXF1aXJlX3N5Y2xfZGV2aWNlICIkZGV2aWNlIiAiZ3B1IiAi SW50ZWwqIl19IHsKKwkgICAgc2V0IGNvZGUgW2NhdGNoIHt1cGxldmVsIDEgJGJvZHl9IHJlc3Vs dF0KKwl9IGVsc2UgeworCSAgICB3aXRoX2xvY2sgJDo6aW50ZWxndF9sb2NrX2ZpbGVuYW1lIHsK KwkJc2V0IGNvZGUgW2NhdGNoIHt1cGxldmVsIDEgJGJvZHl9IHJlc3VsdF0KKwkgICAgfQorCX0K KworCSMgSW4gY2FzZSBCT0RZIHJldHVybmVkIGVhcmx5IGR1ZSB0byBzb21lIHRlc3RjYXNlIGZh aWxpbmcuCisJZ2RiX2V4aXQKKyAgICB9CisKKyAgICBpZiB7JGNvZGUgPT0gMX0geworCXJldHVy biAtY29kZSAkY29kZSAtZXJyb3JpbmZvICQ6OmVycm9ySW5mbyBcCisJICAgIC1lcnJvcmNvZGUg JDo6ZXJyb3JDb2RlICRyZXN1bHQKKyAgICB9IGVsc2UgeworCXJldHVybiAtY29kZSAkY29kZSAk cmVzdWx0CisgICAgfQorfQorCisjIEdldCB0aGUgbmFtZXNwYWNlIHZlcnNpb24gZm9yIHRoZSBT WUNMIGhlYWRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBjb21waWxlcgorIyB1c2VkLiAgUmV0dXJu IDAgZm9yIG9sZGVyIGNvbXBpbGVycyB1c2luZyBTWUNMIHdpdGhvdXQgbmFtZXNwYWNlIHZlcnNp b25pbmcuCisKK3Byb2MgZ2V0X3N5Y2xfaGVhZGVyX3ZlcnNpb24ge30geworICAgIGlmIHtbdGVz dF9jb21waWxlcl9pbmZvIHtpY3gtMjAyWzMtOV0tKn0gYysrXX0geworCXJldHVybiAxCisgICAg fQorCisgICAgcmV0dXJuIDAKK30KKworIyBTcGF3biBhIFNZQ0wgcHJvZ3JhbSB0YXJnZXRpbmcg REVWSUNFLgorCitwcm9jIHNwYXduX3N5Y2xfcHJvYyB7ZXhlY3V0YWJsZSBkZXZpY2V9IHsKKyAg ICAjIFdlIGRpcmVjdGx5IHVzZSAncmVtb3RlX3NwYXduJyB0byBiZSBhYmxlIHRvIHBhc3MKKyAg ICAjIHRoZSBwcm9ncmFtIGFyZ3VtZW50cy4KKyAgICBzZXQgY29tbWFuZCBbbGlzdCAkZXhlY3V0 YWJsZV0KKyAgICBmb3JlYWNoIGFyZyBbc3ljbF9nZXRfZGV2aWNlX2FyZ3MgJGRldmljZV0gewor CWxhcHBlbmQgY29tbWFuZCAkYXJnCisgICAgfQorICAgIHZlcmJvc2UgLWxvZyAiY29tbWFuZDog JGNvbW1hbmQiCisKKyAgICBzZXQgc3Bhd25faWQgW3JlbW90ZV9zcGF3biB0YXJnZXQgJGNvbW1h bmRdCisgICAgcmV0dXJuICRzcGF3bl9pZAorfQoKLS0gCjIuMzQuMQoKSW50ZWwgRGV1dHNjaGxh bmQgR21iSA0KUmVnaXN0ZXJlZCBBZGRyZXNzOiBBbSBDYW1wZW9uIDEwLCA4NTU3OSBOZXViaWJl cmcsIEdlcm1hbnkNClRlbDogKzQ5IDg5IDk5IDg4NTMtMCwgd3d3LmludGVsLmRlDQpNYW5hZ2lu ZyBEaXJlY3RvcnM6IFNlYW4gRmVubmVsbHksIEplZmZyZXkgU2NobmVpZGVybWFuLCBUaWZmYW55 IERvb24gU2lsdmENCkNoYWlycGVyc29uIG9mIHRoZSBTdXBlcnZpc29yeSBCb2FyZDogTmljb2xl IExhdQ0KUmVnaXN0ZXJlZCBPZmZpY2U6IE11bmljaA0KQ29tbWVyY2lhbCBSZWdpc3RlcjogQW10 c2dlcmljaHQgTXVlbmNoZW4gSFJCIDE4NjkyOAo=