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=-2.5 required=3.0 tests=CHARSET_FARAWAY_HEADER, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, FROM_EXCESS_BASE64,HEADER_FROM_DIFFERENT_DOMAINS,HTML_MESSAGE, MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,MIME_HTML_MOSTLY, MSGID_FROM_MTA_HEADER,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id EB03AC43381 for ; Thu, 28 Feb 2019 18:22:35 +0000 (UTC) Received: from krantz.zx2c4.com (krantz.zx2c4.com [192.95.5.69]) (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 6617E2084D for ; Thu, 28 Feb 2019 18:22:35 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=qq.com header.i=@qq.com header.b="MUfKb9CL" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6617E2084D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=qq.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=wireguard-bounces@lists.zx2c4.com Received: from krantz.zx2c4.com (localhost [IPv6:::1]) by krantz.zx2c4.com (ZX2C4 Mail Server) with ESMTP id 1596d4eb; Thu, 28 Feb 2019 18:12:51 +0000 (UTC) Received: from krantz.zx2c4.com (localhost [127.0.0.1]) by krantz.zx2c4.com (ZX2C4 Mail Server) with ESMTP id a1f7a792 for ; Thu, 28 Feb 2019 06:28:56 +0000 (UTC) Received: from smtpbgsg2.qq.com (smtpbgsg2.qq.com [54.254.200.128]) by krantz.zx2c4.com (ZX2C4 Mail Server) with ESMTP id d4f56b94 for ; Thu, 28 Feb 2019 06:28:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qq.com; s=s201512; t=1551335903; bh=hTNG/TqX19g2lg3dDRfZdJ8RV7BXMMRGdQlH+ivQHpM=; h=From:To:Subject:Mime-Version:Content-Type:Content-Transfer-Encoding:Date:Message-ID; b=MUfKb9CLBuxY70Vf2w0OJUEIszdOPOks5jdtHzOnWIU2eR4DyhIvPB0wvLPkIl5/N hllrKUXpUnGUSURK+XY0TPt3bS6RImBC/Np57qlxd+zLDe83YxVA+90cxy1ha19CWs 1xErWuY7sj4aLf4Rw2BqzFvrDvT0iLQk71eaMYCA= X-QQ-FEAT: 3rttaeF9zyzyzyr6o9mxrCGzk8AyW+Nmj/7de5iGubS585f0cn2pEoHMcB3EG Rek3D3CkJV1Lajh3BeC35fxV9LmTiWZrwlwfjDw+PvaU7h21QOIJ9sV+cX/T6gW0gTLHmi4 pXnGdlJAEYU1u2uBVfua/IoOFgCG0iAPX7dUR2YwYVGf66Spsq+Ngb8clBiAFWvh3ey4IZL tWdj9ucpL0gwfg7yskZ7uMJbrMZswiEisO2ZzhYIQQ8d39w22AUtedHUZ5NJf1AaRjNyW2y HT0CiEsAIsknKk42fkKmPTZ2G89apbPdbyXSxgxkpS1NbzlRuF/8mhhAk= X-QQ-SSF: 00000000000000F000000000000000U X-HAS-ATTACH: no X-QQ-BUSINESS-ORIGIN: 2 X-Originating-IP: 182.40.145.62 X-QQ-STYLE: X-QQ-mid: webmail279t1551335901t1630452 From: "=?gb18030?B?sKLIug==?=" <517067180@qq.com> To: "=?gb18030?B?d2lyZWd1YXJk?=" Subject: Fw: WireGuard/src/tools/ipc.c improvement Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_5C7781DD_0C641D80_604CAA38" Content-Transfer-Encoding: 8Bit Date: Thu, 28 Feb 2019 14:38:21 +0800 X-Priority: 3 Message-ID: X-QQ-MIME: TCMime 1.0 by Tencent X-Mailer: QQMail 2.x X-QQ-Mailer: QQMail 2.x X-QQ-SENDSIZE: 520 Received: from qq.com (unknown [127.0.0.1]) by smtp.qq.com (ESMTP) with SMTP id ; Thu, 28 Feb 2019 14:38:22 +0800 (CST) Feedback-ID: webmail:qq.com:bgforeign:bgforeign4 X-QQ-Bgrelay: 1 X-Mailman-Approved-At: Thu, 28 Feb 2019 19:12:49 +0100 X-BeenThere: wireguard@lists.zx2c4.com X-Mailman-Version: 2.1.15 Precedence: list List-Id: Development discussion of WireGuard List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: wireguard-bounces@lists.zx2c4.com Sender: "WireGuard" This is a multi-part message in MIME format. ------=_NextPart_5C7781DD_0C641D80_604CAA38 Content-Type: multipart/alternative; boundary="----=_NextPart_5C7781DD_0C641D80_32AC2329"; ------=_NextPart_5C7781DD_0C641D80_32AC2329 Content-Type: text/plain; charset="gb18030" Content-Transfer-Encoding: base64 SGkgZGVhciBkZXZlbG9wZXJzIG9mIFdpcmVHdWFyZCENCg0KDQoNClJlY2VudGx5LCBJJ3Zl IGJlZW4gcmVhZGluZyB0aGUgc291cmNlIGNvZGUgb2YgV2lyZUd1YXJkLiBUaGUgZnVuY3Rp b24gbmFtZSBsaWtlIGlwY19nZXRfZGV2aWNlKCkgbG9va3MgdG8gYmUgYSBsaXR0bGUgYml0 IG1pc2xlYWRpbmcuIFRvIG1ha2UgdGhlIGNvZGUgbW9yZSByZWFkYWJsZSBmb3IgbmV3IGRl dmVsb3BlcnMsIGhlcmUgYXJlIHNvbWUgc3VnZ2VzdGlvbnM6DQogIA0KUmVuYW1lIGlwY19n ZXRfZGV2aWNlKCZkZXYpIHRvIGlwY19mZXRjaF9jb25mKCZjb25mKSBiZWNhdXNlIGl0IG9u bHkgZmV0Y2hlcyB0aGUgcnVudGltZSBjb25maWd1YXRpb25zIGZyb20ga2VybmVsLg0KIA0K Q2hhbmdlIGZ1bnRpb24gcHJvdG90eXBlIGlwY19zZXRfZGV2aWNlKHN0cnVjdCB3Z2Rldmlj ZSAqZGV2KSB0byBpcGNfc2V0X2RldmljZShjb25zdCBzdHJ1Y3Qgd2dkZXZpY2UgKm5ld2Nv bmYpLg0KICANCkNoYW5nZSB0aGUgZm9sbG93aW5nIElQQyBmdW5jdGlvbiBuYW1lcyBhbmQg cGFyYW1ldGVycyB3aGljaCB1c2VkIHRvIGJlIGNvbmZ1c2luZzoNCiAtIGlwY19zZXRfZGV2 aWNlKGRldikgICAgICAgICAgICAgICAgICA9PiBpcGNfc2V0X2RldmljZShuZXdjb25mKSAt IGlwY19nZXRfZGV2aWNlKGRldiwgaW50ZXJmYWNlKSAgICAgICA9PiBpcGNfZmV0Y2hfY29u Zihjb25mLCBpbnRlcmZhY2UpIC0ga2VybmVsX3NldF9kZXZpY2UoZGV2KSAgICAgICAgICAg ICAgID0+IGtlcm5lbF9zZXRfZGV2aWNlKG5ld2NvbmYpIC0ga2VybmVsX2dldF9kZXZpY2Uo ZGV2aWNlLCBpbnRlcmZhY2UpID0+IGtlcm5lbF9mZXRjaF9jb25mKGNvbmYsIGludGVyZmFj ZSkgLSB1c2Vyc3BhY2Vfc2V0X2RldmljZShkZXYpICAgICAgICAgICAgPT4gdXNlcnNwYWNl X3NldF9kZXZpY2UobmV3Y29uZikgLSB1c2Vyc3BhY2VfZ2V0X2RldmljZShvdXQsIGludGVy ZmFjZSkgPT4gdXNlcnNwYWNlX2ZldGNoX2NvbmYob3V0LCBpbnRlcmZhY2UpIC0gZnJlZV93 Z2RldmljZShkZXYpID0+IGZyZWVfY29uZihjb25mKSAgDQpSZW5hbWVkIGxvY2FsIHZhcmlh YmxlL3BhcmFtZXRlciBzeW1ib2xzOg0KICANCkluIHNob3djb25mX21haW4oKSwgc2hvd19t YWluKCk6DQogZGV2aWNlID0+IGNvbmYNCiANCkluIGlwY19mZXRjaF9jb25mKCksIGtlcm5l bF9mZXRjaF9jb25mKCksIHVzZXJzcGFjZV9mZXRjaF9jb25mKCk6DQogZGV2ID0+IGNvbmYN CiANCkluIGlwY19zZXRfZGV2aWNlKCksIGtlcm5lbF9zZXRfZGV2aWNlKCksIHVzZXJzcGFj ZV9zZXRfZGV2aWNlKCk6DQogZGV2ID0+IG5ld2NvbmYNCiAgDQpOb3RlOg0KIEEgbG90IG9m IGJyYWNlcyBhcmUgYWRkZWQgdG8gdGhlIGlmLWVsc2UgY29kZSBibG9ja3MgdG8ga2VlcCBv dXJzZWx2ZXMgZnJvbSBtYWtpbmcgdW5leHBlY3RlZCBtaXN0YWtlcyBpbiB0aGUgZnV0dXJl Lg0KIA0KQ2hhbmdlZCBmdW5jdGlvbiBwcm90b3R5cGVzOg0KICANCmludCBpcGNfc2V0X2Rl dmljZShzdHJ1Y3Qgd2dkZXZpY2UgKikgPT4gaW50IGlwY19zZXRfZGV2aWNlKGNvbnN0IHN0 cnVjdCB3Z2RldmljZSAqbmV3Y29uZikNCiANCmludCBrZXJuZWxfc2V0X2RldmljZShzdHJ1 Y3Qgd2dkZXZpY2UgKikgPT4gaW50IGtlcm5lbF9zZXRfZGV2aWNlKGNvbnN0IHN0cnVjdCB3 Z2RldmljZSAqbmV3Y29uZikNCiANCmludCB1c2Vyc3BhY2Vfc2V0X2RldmljZShzdHJ1Y3Qg d2dkZXZpY2UgKikgPT4gaW50IHVzZXJzcGFjZV9zZXRfZGV2aWNlKGNvbnN0IHN0cnVjdCB3 Z2RldmljZSAqbmV3Y29uZikNCg0KDQpBZGRlZCBmdW5jdGlvbjoNCg0KZnJlZV9jb25mKCkN Cg0KDQoNCg0KUGF0Y2ggY29kZSBpcyBib3RoIGluIHRoZSBlbWFpbCBhdHRhY2htZW50IGFu ZCBvbiBnaXRodWIuY29tICggaHR0cHM6Ly9naXRodWIuY29tL1dpcmVHdWFyZC9XaXJlR3Vh cmQvcHVsbC81L2ZpbGVzICkNCg0KDQpQbGVhc2UgdGVsbCBtZSBhbnl0aGluZyB5b3UgdGhv dWdodCwgSSB3b3VsZCBiZSBnbGFkIHRvIGhlbHAuDQoNCg0KSGFwcHkgaGFja2luZyENCg0K DQoNCi0tLS0tLS0tLS0tLS0tLS0tLQ0KLS0gTGl1IFF1biBmcm9tIFRzaW5ndGFvLCBDaGlu YQ== ------=_NextPart_5C7781DD_0C641D80_32AC2329 Content-Type: text/html; charset="gb18030" Content-Transfer-Encoding: base64 PGRpdj5IaSBkZWFyIGRldmVsb3BlcnMgb2YgV2lyZUd1YXJkITxkaXY+PGRpdiBzdHlsZT0i Y29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTog MTRweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQ6IG5vcm1hbDsgZm9udC13 ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgbGluZS1oZWlnaHQ6IDEuNTsg b3JwaGFuczogMjsgdGV4dC1hbGlnbjogbGVmdDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB0 ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgLXdlYmtpdC10ZXh0LXN0 cm9rZS13aWR0aDogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXNwYWNpbmc6IDBw eDsiPjxwIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBjb2xvcjogcmdiKDM2LCA0 MSwgNDYpOyBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQs U2Vnb2UgVUksSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWYsQXBwbGUgQ29sb3IgRW1vamks U2Vnb2UgVUkgRW1vamksU2Vnb2UgVUkgU3ltYm9sOyBmb250LXNpemU6IDE0cHg7IGZvbnQt c3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50OiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7 IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IGxpbmUtaGVpZ2h0OiAxLjU7IG1hcmdpbi1ib3R0 b206IDE2cHg7IG1hcmdpbi10b3A6IDBweDsgb3JwaGFuczogMjsgdGV4dC1hbGlnbjogbGVm dDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5z Zm9ybTogbm9uZTsgLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyB3aGl0ZS1zcGFj ZTogbm9ybWFsOyB3b3JkLXNwYWNpbmc6IDBweDsiPjxicj48L3A+PHAgc3R5bGU9ImJveC1z aXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiByZ2IoMzYsIDQxLCA0Nik7IGZvbnQtZmFtaWx5 OiAtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCxTZWdvZSBVSSxIZWx2ZXRpY2Es QXJpYWwsc2Fucy1zZXJpZixBcHBsZSBDb2xvciBFbW9qaSxTZWdvZSBVSSBFbW9qaSxTZWdv ZSBVSSBTeW1ib2w7IGZvbnQtc2l6ZTogMTRweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250 LXZhcmlhbnQ6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5v cm1hbDsgbGluZS1oZWlnaHQ6IDEuNTsgbWFyZ2luLWJvdHRvbTogMTZweDsgbWFyZ2luLXRv cDogMHB4OyBvcnBoYW5zOiAyOyB0ZXh0LWFsaWduOiBsZWZ0OyB0ZXh0LWRlY29yYXRpb246 IG5vbmU7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyAtd2Via2l0 LXRleHQtc3Ryb2tlLXdpZHRoOiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3Bh Y2luZzogMHB4OyI+UmVjZW50bHksIEkndmUgYmVlbiByZWFkaW5nIHRoZSBzb3VyY2UgY29k ZSBvZiBXaXJlR3VhcmQuIFRoZSBmdW5jdGlvbiBuYW1lIGxpa2UgaXBjX2dldF9kZXZpY2Uo KSBsb29rcyB0byBiZSBhIGxpdHRsZSBiaXQgbWlzbGVhZGluZy4gVG8gbWFrZSB0aGUgY29k ZSBtb3JlIHJlYWRhYmxlIGZvciBuZXcgZGV2ZWxvcGVycywgaGVyZSBhcmUgc29tZSBzdWdn ZXN0aW9uczo8L3A+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1 NSwgMjU1KTsgY29sb3I6IHJnYigzNiwgNDEsIDQ2KTsgZGlzcGxheTogaW5saW5lOyBmbG9h dDogbm9uZTsgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250 LFNlZ29lIFVJLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmLEFwcGxlIENvbG9yIEVtb2pp LFNlZ29lIFVJIEVtb2ppLFNlZ29lIFVJIFN5bWJvbDsgZm9udC1zaXplOiAxNHB4OyBmb250 LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudDogbm9ybWFsOyBmb250LXdlaWdodDogNDAw OyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyBsaW5lLWhlaWdodDogMS41OyBvcnBoYW5zOiAy OyBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkOyB0ZXh0LWFsaWduOiBsZWZ0OyB0ZXh0LWRl Y29yYXRpb246IG5vbmU7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25l OyAtd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoOiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7 IHdvcmQtc3BhY2luZzogMHB4OyI+Cjwvc3Bhbj48dWwgc3R5bGU9ImJveC1zaXppbmc6IGJv cmRlci1ib3g7IGNvbG9yOiByZ2IoMzYsIDQxLCA0Nik7IGZvbnQtZmFtaWx5OiAtYXBwbGUt c3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCxTZWdvZSBVSSxIZWx2ZXRpY2EsQXJpYWwsc2Fu cy1zZXJpZixBcHBsZSBDb2xvciBFbW9qaSxTZWdvZSBVSSBFbW9qaSxTZWdvZSBVSSBTeW1i b2w7IGZvbnQtc2l6ZTogMTRweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQ6 IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgbWFy Z2luLWJvdHRvbTogMTZweDsgbWFyZ2luLXRvcDogMHB4OyBvcnBoYW5zOiAyOyBwYWRkaW5n LWxlZnQ6IDJlbTsgdGV4dC1hbGlnbjogbGVmdDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB0 ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgLXdlYmtpdC10ZXh0LXN0 cm9rZS13aWR0aDogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXNwYWNpbmc6IDBw eDsiPgo8bGkgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiAx LjU7IG1hcmdpbi1sZWZ0OiAwcHg7Ij5SZW5hbWUgPGI+aXBjX2dldF9kZXZpY2UoJmFtcDtk ZXYpPC9iPiB0byA8Yj5pcGNfZmV0Y2hfY29uZigmYW1wO2NvbmYpPC9iPiBiZWNhdXNlIGl0 IG9ubHkgZmV0Y2hlcyB0aGUgcnVudGltZSBjb25maWd1YXRpb25zIGZyb20ga2VybmVsLjwv bGk+CjxsaSBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IDEu NTsgbWFyZ2luLWxlZnQ6IDBweDsgbWFyZ2luLXRvcDogMC4yNWVtOyI+Q2hhbmdlIGZ1bnRp b24gcHJvdG90eXBlIGlwY19zZXRfZGV2aWNlKHN0cnVjdCB3Z2RldmljZSAqZGV2KSB0byBp cGNfc2V0X2RldmljZSg8Yj5jb25zdDwvYj4gc3RydWN0IHdnZGV2aWNlICpuZXdjb25mKS48 L2xpPgo8L3VsPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUs IDI1NSk7IGNvbG9yOiByZ2IoMzYsIDQxLCA0Nik7IGRpc3BsYXk6IGlubGluZTsgZmxvYXQ6 IG5vbmU7IGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCxT ZWdvZSBVSSxIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZixBcHBsZSBDb2xvciBFbW9qaSxT ZWdvZSBVSSBFbW9qaSxTZWdvZSBVSSBTeW1ib2w7IGZvbnQtc2l6ZTogMTRweDsgZm9udC1z dHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQ6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsg bGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgbGluZS1oZWlnaHQ6IDEuNTsgb3JwaGFuczogMjsg b3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsgdGV4dC1hbGlnbjogbGVmdDsgdGV4dC1kZWNv cmF0aW9uOiBub25lOyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsg LXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3 b3JkLXNwYWNpbmc6IDBweDsiPgo8L3NwYW4+PHAgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl ci1ib3g7IGNvbG9yOiByZ2IoMzYsIDQxLCA0Nik7IGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lz dGVtLEJsaW5rTWFjU3lzdGVtRm9udCxTZWdvZSBVSSxIZWx2ZXRpY2EsQXJpYWwsc2Fucy1z ZXJpZixBcHBsZSBDb2xvciBFbW9qaSxTZWdvZSBVSSBFbW9qaSxTZWdvZSBVSSBTeW1ib2w7 IGZvbnQtc2l6ZTogMTRweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQ6IG5v cm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgbGluZS1o ZWlnaHQ6IDEuNTsgbWFyZ2luLWJvdHRvbTogMTZweDsgbWFyZ2luLXRvcDogMHB4OyBvcnBo YW5zOiAyOyB0ZXh0LWFsaWduOiBsZWZ0OyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IHRleHQt aW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyAtd2Via2l0LXRleHQtc3Ryb2tl LXdpZHRoOiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4OyI+ Q2hhbmdlIHRoZSBmb2xsb3dpbmcgSVBDIGZ1bmN0aW9uIG5hbWVzIGFuZCBwYXJhbWV0ZXJz IHdoaWNoIHVzZWQgdG8gYmUgY29uZnVzaW5nOjwvcD48c3BhbiBzdHlsZT0iYmFja2dyb3Vu ZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpOyBjb2xvcjogcmdiKDM2LCA0MSwgNDYpOyBk aXNwbGF5OiBpbmxpbmU7IGZsb2F0OiBub25lOyBmb250LWZhbWlseTogLWFwcGxlLXN5c3Rl bSxCbGlua01hY1N5c3RlbUZvbnQsU2Vnb2UgVUksSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2Vy aWYsQXBwbGUgQ29sb3IgRW1vamksU2Vnb2UgVUkgRW1vamksU2Vnb2UgVUkgU3ltYm9sOyBm b250LXNpemU6IDE0cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50OiBub3Jt YWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IGxpbmUtaGVp Z2h0OiAxLjU7IG9ycGhhbnM6IDI7IG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7IHRleHQt YWxpZ246IGxlZnQ7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgdGV4dC1pbmRlbnQ6IDBweDsg dGV4dC10cmFuc2Zvcm06IG5vbmU7IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6IDBweDsg d2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7Ij4KPC9zcGFuPjxwcmUg c3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJnYigyNDYsIDI0OCwgMjUwKTsgYm9yZGVyLWJv dHRvbS1sZWZ0LXJhZGl1czogM3B4OyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogM3B4 OyBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAzcHg7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVz OiAzcHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiByZ2IoMzYsIDQxLCA0Nik7 IGZvbnQtZmFtaWx5OiBTRk1vbm8tUmVndWxhcixDb25zb2xhcyxMaWJlcmF0aW9uIE1vbm8s TWVubG8sQ291cmllcixtb25vc3BhY2U7IGZvbnQtc2l6ZTogODUlOyBmb250LXN0eWxlOiBu b3JtYWw7IGZvbnQtdmFyaWFudDogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXIt c3BhY2luZzogbm9ybWFsOyBsaW5lLWhlaWdodDogMS40NTsgbWFyZ2luLWJvdHRvbTogMTZw eDsgbWFyZ2luLXRvcDogMHB4OyBvcnBoYW5zOiAyOyBvdmVyZmxvdzogYXV0bzsgb3ZlcmZs b3ctd3JhcDogbm9ybWFsOyBwYWRkaW5nLWJvdHRvbTogMTZweDsgcGFkZGluZy1sZWZ0OiAx NnB4OyBwYWRkaW5nLXJpZ2h0OiAxNnB4OyBwYWRkaW5nLXRvcDogMTZweDsgdGV4dC1hbGln bjogbGVmdDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0 LXRyYW5zZm9ybTogbm9uZTsgLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyB3aGl0 ZS1zcGFjZTogcHJlOyB3b3JkLXNwYWNpbmc6IDBweDsiPjxjb2RlIHN0eWxlPSJiYWNrZ3Jv dW5kLWF0dGFjaG1lbnQ6IHNjcm9sbDsgYmFja2dyb3VuZC1jbGlwOiBib3JkZXItYm94OyBi YWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsg YmFja2dyb3VuZC1vcmlnaW46IHBhZGRpbmctYm94OyBiYWNrZ3JvdW5kLXBvc2l0aW9uLXg6 IDAlOyBiYWNrZ3JvdW5kLXBvc2l0aW9uLXk6IDAlOyBiYWNrZ3JvdW5kLXJlcGVhdDogcmVw ZWF0OyBiYWNrZ3JvdW5kLXNpemU6IGF1dG87IGJvcmRlci1ib3R0b20tY29sb3I6IGN1cnJl bnRDb2xvcjsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogM3B4OyBib3JkZXItYm90dG9t LXJpZ2h0LXJhZGl1czogM3B4OyBib3JkZXItYm90dG9tLXN0eWxlOiBub25lOyBib3JkZXIt Ym90dG9tLXdpZHRoOiAwcHg7IGJvcmRlci1pbWFnZS1vdXRzZXQ6IDA7IGJvcmRlci1pbWFn ZS1yZXBlYXQ6IHN0cmV0Y2g7IGJvcmRlci1pbWFnZS1zbGljZTogMTAwJTsgYm9yZGVyLWlt YWdlLXNvdXJjZTogbm9uZTsgYm9yZGVyLWltYWdlLXdpZHRoOiAxOyBib3JkZXItbGVmdC1j b2xvcjogY3VycmVudENvbG9yOyBib3JkZXItbGVmdC1zdHlsZTogbm9uZTsgYm9yZGVyLWxl ZnQtd2lkdGg6IDBweDsgYm9yZGVyLXJpZ2h0LWNvbG9yOiBjdXJyZW50Q29sb3I7IGJvcmRl ci1yaWdodC1zdHlsZTogbm9uZTsgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwcHg7IGJvcmRlci10 b3AtY29sb3I6IGN1cnJlbnRDb2xvcjsgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogM3B4OyBi b3JkZXItdG9wLXJpZ2h0LXJhZGl1czogM3B4OyBib3JkZXItdG9wLXN0eWxlOiBub25lOyBi b3JkZXItdG9wLXdpZHRoOiAwcHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGRpc3BsYXk6 IGlubGluZTsgZm9udC1mYW1pbHk6IFNGTW9uby1SZWd1bGFyLENvbnNvbGFzLExpYmVyYXRp b24gTW9ubyxNZW5sbyxDb3VyaWVyLG1vbm9zcGFjZTsgZm9udC1zaXplOiAxMDAlOyBsaW5l LWhlaWdodDogaW5oZXJpdDsgbWFyZ2luLWJvdHRvbTogMHB4OyBtYXJnaW4tbGVmdDogMHB4 OyBtYXJnaW4tcmlnaHQ6IDBweDsgbWFyZ2luLXRvcDogMHB4OyBvdmVyZmxvdzogdmlzaWJs ZTsgb3ZlcmZsb3ctd3JhcDogbm9ybWFsOyBwYWRkaW5nLWJvdHRvbTogMHB4OyBwYWRkaW5n LWxlZnQ6IDBweDsgcGFkZGluZy1yaWdodDogMHB4OyBwYWRkaW5nLXRvcDogMHB4OyB3aGl0 ZS1zcGFjZTogcHJlOyB3b3JkLWJyZWFrOiBub3JtYWw7Ij4tIGlwY19zZXRfZGV2aWNlKGRl dikgICAgICAgICAgICAgICAgICA9Jmd0OyBpcGNfc2V0X2RldmljZShuZXdjb25mKQotIGlw Y19nZXRfZGV2aWNlKGRldiwgaW50ZXJmYWNlKSAgICAgICA9Jmd0OyBpcGNfZmV0Y2hfY29u Zihjb25mLCBpbnRlcmZhY2UpCi0ga2VybmVsX3NldF9kZXZpY2UoZGV2KSAgICAgICAgICAg ICAgID0mZ3Q7IGtlcm5lbF9zZXRfZGV2aWNlKG5ld2NvbmYpCi0ga2VybmVsX2dldF9kZXZp Y2UoZGV2aWNlLCBpbnRlcmZhY2UpID0mZ3Q7IGtlcm5lbF9mZXRjaF9jb25mKGNvbmYsIGlu dGVyZmFjZSkKLSB1c2Vyc3BhY2Vfc2V0X2RldmljZShkZXYpICAgICAgICAgICAgPSZndDsg dXNlcnNwYWNlX3NldF9kZXZpY2UobmV3Y29uZikKLSB1c2Vyc3BhY2VfZ2V0X2RldmljZShv dXQsIGludGVyZmFjZSkgPSZndDsgdXNlcnNwYWNlX2ZldGNoX2NvbmYob3V0LCBpbnRlcmZh Y2UpCgotIGZyZWVfd2dkZXZpY2UoZGV2KSA9Jmd0OyBmcmVlX2NvbmYoY29uZikKPC9jb2Rl PjwvcHJlPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1 NSk7IGNvbG9yOiByZ2IoMzYsIDQxLCA0Nik7IGRpc3BsYXk6IGlubGluZTsgZmxvYXQ6IG5v bmU7IGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCxTZWdv ZSBVSSxIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZixBcHBsZSBDb2xvciBFbW9qaSxTZWdv ZSBVSSBFbW9qaSxTZWdvZSBVSSBTeW1ib2w7IGZvbnQtc2l6ZTogMTRweDsgZm9udC1zdHls ZTogbm9ybWFsOyBmb250LXZhcmlhbnQ6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0 dGVyLXNwYWNpbmc6IG5vcm1hbDsgbGluZS1oZWlnaHQ6IDEuNTsgb3JwaGFuczogMjsgb3Zl cmZsb3ctd3JhcDogYnJlYWstd29yZDsgdGV4dC1hbGlnbjogbGVmdDsgdGV4dC1kZWNvcmF0 aW9uOiBub25lOyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgLXdl YmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3Jk LXNwYWNpbmc6IDBweDsiPgo8L3NwYW4+PHAgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i b3g7IGNvbG9yOiByZ2IoMzYsIDQxLCA0Nik7IGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVt LEJsaW5rTWFjU3lzdGVtRm9udCxTZWdvZSBVSSxIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJp ZixBcHBsZSBDb2xvciBFbW9qaSxTZWdvZSBVSSBFbW9qaSxTZWdvZSBVSSBTeW1ib2w7IGZv bnQtc2l6ZTogMTRweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQ6IG5vcm1h bDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgbGluZS1oZWln aHQ6IDEuNTsgbWFyZ2luLWJvdHRvbTogMTZweDsgbWFyZ2luLXRvcDogMHB4OyBvcnBoYW5z OiAyOyB0ZXh0LWFsaWduOiBsZWZ0OyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IHRleHQtaW5k ZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyAtd2Via2l0LXRleHQtc3Ryb2tlLXdp ZHRoOiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4OyI+UmVu YW1lZCBsb2NhbCB2YXJpYWJsZS9wYXJhbWV0ZXIgc3ltYm9sczo8L3A+PHNwYW4gc3R5bGU9 ImJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsgY29sb3I6IHJnYigzNiwg NDEsIDQ2KTsgZGlzcGxheTogaW5saW5lOyBmbG9hdDogbm9uZTsgZm9udC1mYW1pbHk6IC1h cHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LFNlZ29lIFVJLEhlbHZldGljYSxBcmlh bCxzYW5zLXNlcmlmLEFwcGxlIENvbG9yIEVtb2ppLFNlZ29lIFVJIEVtb2ppLFNlZ29lIFVJ IFN5bWJvbDsgZm9udC1zaXplOiAxNHB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFy aWFudDogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFs OyBsaW5lLWhlaWdodDogMS41OyBvcnBoYW5zOiAyOyBvdmVyZmxvdy13cmFwOiBicmVhay13 b3JkOyB0ZXh0LWFsaWduOiBsZWZ0OyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IHRleHQtaW5k ZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyAtd2Via2l0LXRleHQtc3Ryb2tlLXdp ZHRoOiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4OyI+Cjwv c3Bhbj48dWwgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiByZ2IoMzYs IDQxLCA0Nik7IGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9u dCxTZWdvZSBVSSxIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZixBcHBsZSBDb2xvciBFbW9q aSxTZWdvZSBVSSBFbW9qaSxTZWdvZSBVSSBTeW1ib2w7IGZvbnQtc2l6ZTogMTRweDsgZm9u dC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQ6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQw MDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgbWFyZ2luLWJvdHRvbTogMTZweDsgbWFyZ2lu LXRvcDogMHB4OyBvcnBoYW5zOiAyOyBwYWRkaW5nLWxlZnQ6IDJlbTsgdGV4dC1hbGlnbjog bGVmdDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRy YW5zZm9ybTogbm9uZTsgLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyB3aGl0ZS1z cGFjZTogbm9ybWFsOyB3b3JkLXNwYWNpbmc6IDBweDsiPgo8bGkgc3R5bGU9ImJveC1zaXpp bmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiAxLjU7IG1hcmdpbi1sZWZ0OiAwcHg7Ij5J biBzaG93Y29uZl9tYWluKCksIHNob3dfbWFpbigpOjxiciBzdHlsZT0iYm94LXNpemluZzog Ym9yZGVyLWJveDsiPgpkZXZpY2UgPSZndDsgY29uZjwvbGk+CjxsaSBzdHlsZT0iYm94LXNp emluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IDEuNTsgbWFyZ2luLWxlZnQ6IDBweDsg bWFyZ2luLXRvcDogMC4yNWVtOyI+SW4gaXBjX2ZldGNoX2NvbmYoKSwga2VybmVsX2ZldGNo X2NvbmYoKSwgdXNlcnNwYWNlX2ZldGNoX2NvbmYoKTo8YnIgc3R5bGU9ImJveC1zaXppbmc6 IGJvcmRlci1ib3g7Ij4KZGV2ID0mZ3Q7IGNvbmY8L2xpPgo8bGkgc3R5bGU9ImJveC1zaXpp bmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiAxLjU7IG1hcmdpbi1sZWZ0OiAwcHg7IG1h cmdpbi10b3A6IDAuMjVlbTsiPkluIGlwY19zZXRfZGV2aWNlKCksIGtlcm5lbF9zZXRfZGV2 aWNlKCksIHVzZXJzcGFjZV9zZXRfZGV2aWNlKCk6PGJyIHN0eWxlPSJib3gtc2l6aW5nOiBi b3JkZXItYm94OyI+CmRldiA9Jmd0OyBuZXdjb25mPC9saT4KPC91bD48c3BhbiBzdHlsZT0i YmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpOyBjb2xvcjogcmdiKDM2LCA0 MSwgNDYpOyBkaXNwbGF5OiBpbmxpbmU7IGZsb2F0OiBub25lOyBmb250LWZhbWlseTogLWFw cGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsU2Vnb2UgVUksSGVsdmV0aWNhLEFyaWFs LHNhbnMtc2VyaWYsQXBwbGUgQ29sb3IgRW1vamksU2Vnb2UgVUkgRW1vamksU2Vnb2UgVUkg U3ltYm9sOyBmb250LXNpemU6IDE0cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJp YW50OiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7 IGxpbmUtaGVpZ2h0OiAxLjU7IG9ycGhhbnM6IDI7IG92ZXJmbG93LXdyYXA6IGJyZWFrLXdv cmQ7IHRleHQtYWxpZ246IGxlZnQ7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgdGV4dC1pbmRl bnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IC13ZWJraXQtdGV4dC1zdHJva2Utd2lk dGg6IDBweDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7Ij4KPC9z cGFuPjxwIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBjb2xvcjogcmdiKDM2LCA0 MSwgNDYpOyBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQs U2Vnb2UgVUksSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWYsQXBwbGUgQ29sb3IgRW1vamks U2Vnb2UgVUkgRW1vamksU2Vnb2UgVUkgU3ltYm9sOyBmb250LXNpemU6IDE0cHg7IGZvbnQt c3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50OiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7 IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IGxpbmUtaGVpZ2h0OiAxLjU7IG1hcmdpbi1ib3R0 b206IDE2cHg7IG1hcmdpbi10b3A6IDBweDsgb3JwaGFuczogMjsgdGV4dC1hbGlnbjogbGVm dDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5z Zm9ybTogbm9uZTsgLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyB3aGl0ZS1zcGFj ZTogbm9ybWFsOyB3b3JkLXNwYWNpbmc6IDBweDsiPk5vdGU6PGJyIHN0eWxlPSJib3gtc2l6 aW5nOiBib3JkZXItYm94OyI+CkEgbG90IG9mIGJyYWNlcyBhcmUgYWRkZWQgdG8gdGhlIGlm LWVsc2UgY29kZSBibG9ja3MgdG8ga2VlcCBvdXJzZWx2ZXMgZnJvbSBtYWtpbmcgdW5leHBl Y3RlZCBtaXN0YWtlcyBpbiB0aGUgZnV0dXJlLjwvcD48c3BhbiBzdHlsZT0iYmFja2dyb3Vu ZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpOyBjb2xvcjogcmdiKDM2LCA0MSwgNDYpOyBk aXNwbGF5OiBpbmxpbmU7IGZsb2F0OiBub25lOyBmb250LWZhbWlseTogLWFwcGxlLXN5c3Rl bSxCbGlua01hY1N5c3RlbUZvbnQsU2Vnb2UgVUksSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2Vy aWYsQXBwbGUgQ29sb3IgRW1vamksU2Vnb2UgVUkgRW1vamksU2Vnb2UgVUkgU3ltYm9sOyBm b250LXNpemU6IDE0cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50OiBub3Jt YWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IGxpbmUtaGVp Z2h0OiAxLjU7IG9ycGhhbnM6IDI7IG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7IHRleHQt YWxpZ246IGxlZnQ7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgdGV4dC1pbmRlbnQ6IDBweDsg dGV4dC10cmFuc2Zvcm06IG5vbmU7IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6IDBweDsg d2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7Ij4KPC9zcGFuPjxwIHN0 eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBjb2xvcjogcmdiKDM2LCA0MSwgNDYpOyBm b250LWZhbWlseTogLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsU2Vnb2UgVUks SGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWYsQXBwbGUgQ29sb3IgRW1vamksU2Vnb2UgVUkg RW1vamksU2Vnb2UgVUkgU3ltYm9sOyBmb250LXNpemU6IDE0cHg7IGZvbnQtc3R5bGU6IG5v cm1hbDsgZm9udC12YXJpYW50OiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1z cGFjaW5nOiBub3JtYWw7IGxpbmUtaGVpZ2h0OiAxLjU7IG1hcmdpbi1ib3R0b206IDE2cHg7 IG1hcmdpbi10b3A6IDBweDsgb3JwaGFuczogMjsgdGV4dC1hbGlnbjogbGVmdDsgdGV4dC1k ZWNvcmF0aW9uOiBub25lOyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9u ZTsgLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFs OyB3b3JkLXNwYWNpbmc6IDBweDsiPkNoYW5nZWQgZnVuY3Rpb24gcHJvdG90eXBlczo8L3A+ PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsgY29s b3I6IHJnYigzNiwgNDEsIDQ2KTsgZGlzcGxheTogaW5saW5lOyBmbG9hdDogbm9uZTsgZm9u dC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LFNlZ29lIFVJLEhl bHZldGljYSxBcmlhbCxzYW5zLXNlcmlmLEFwcGxlIENvbG9yIEVtb2ppLFNlZ29lIFVJIEVt b2ppLFNlZ29lIFVJIFN5bWJvbDsgZm9udC1zaXplOiAxNHB4OyBmb250LXN0eWxlOiBub3Jt YWw7IGZvbnQtdmFyaWFudDogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3Bh Y2luZzogbm9ybWFsOyBsaW5lLWhlaWdodDogMS41OyBvcnBoYW5zOiAyOyBvdmVyZmxvdy13 cmFwOiBicmVhay13b3JkOyB0ZXh0LWFsaWduOiBsZWZ0OyB0ZXh0LWRlY29yYXRpb246IG5v bmU7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyAtd2Via2l0LXRl eHQtc3Ryb2tlLXdpZHRoOiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2lu ZzogMHB4OyI+Cjwvc3Bhbj48dWwgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNv bG9yOiByZ2IoMzYsIDQxLCA0Nik7IGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLEJsaW5r TWFjU3lzdGVtRm9udCxTZWdvZSBVSSxIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZixBcHBs ZSBDb2xvciBFbW9qaSxTZWdvZSBVSSBFbW9qaSxTZWdvZSBVSSBTeW1ib2w7IGZvbnQtc2l6 ZTogMTRweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQ6IG5vcm1hbDsgZm9u dC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgbWFyZ2luLWJvdHRvbTog MHB4OyBtYXJnaW4tdG9wOiAwcHg7IG9ycGhhbnM6IDI7IHBhZGRpbmctbGVmdDogMmVtOyB0 ZXh0LWFsaWduOiBsZWZ0OyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IHRleHQtaW5kZW50OiAw cHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyAtd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoOiAw cHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4OyI+CjxsaSBzdHls ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IDEuNTsgbWFyZ2luLWxl ZnQ6IDBweDsiPjxjb2RlIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI3LCAzMSwg MzUsIDAuMDUpOyBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAzcHg7IGJvcmRlci1ib3R0 b20tcmlnaHQtcmFkaXVzOiAzcHg7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDNweDsgYm9y ZGVyLXRvcC1yaWdodC1yYWRpdXM6IDNweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9u dC1mYW1pbHk6IFNGTW9uby1SZWd1bGFyLENvbnNvbGFzLExpYmVyYXRpb24gTW9ubyxNZW5s byxDb3VyaWVyLG1vbm9zcGFjZTsgZm9udC1zaXplOiA4NSU7IG1hcmdpbi1ib3R0b206IDBw eDsgbWFyZ2luLWxlZnQ6IDBweDsgbWFyZ2luLXJpZ2h0OiAwcHg7IG1hcmdpbi10b3A6IDBw eDsgcGFkZGluZy1ib3R0b206IDAuMmVtOyBwYWRkaW5nLWxlZnQ6IDAuNGVtOyBwYWRkaW5n LXJpZ2h0OiAwLjRlbTsgcGFkZGluZy10b3A6IDAuMmVtOyI+aW50IGlwY19zZXRfZGV2aWNl KHN0cnVjdCB3Z2RldmljZSAqKTwvY29kZT4gPSZndDsgPGNvZGUgc3R5bGU9ImJhY2tncm91 bmQtY29sb3I6IHJnYmEoMjcsIDMxLCAzNSwgMC4wNSk7IGJvcmRlci1ib3R0b20tbGVmdC1y YWRpdXM6IDNweDsgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDNweDsgYm9yZGVyLXRv cC1sZWZ0LXJhZGl1czogM3B4OyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogM3B4OyBib3gt c2l6aW5nOiBib3JkZXItYm94OyBmb250LWZhbWlseTogU0ZNb25vLVJlZ3VsYXIsQ29uc29s YXMsTGliZXJhdGlvbiBNb25vLE1lbmxvLENvdXJpZXIsbW9ub3NwYWNlOyBmb250LXNpemU6 IDg1JTsgbWFyZ2luLWJvdHRvbTogMHB4OyBtYXJnaW4tbGVmdDogMHB4OyBtYXJnaW4tcmln aHQ6IDBweDsgbWFyZ2luLXRvcDogMHB4OyBwYWRkaW5nLWJvdHRvbTogMC4yZW07IHBhZGRp bmctbGVmdDogMC40ZW07IHBhZGRpbmctcmlnaHQ6IDAuNGVtOyBwYWRkaW5nLXRvcDogMC4y ZW07Ij5pbnQgaXBjX3NldF9kZXZpY2UoY29uc3Qgc3RydWN0IHdnZGV2aWNlICpuZXdjb25m KTwvY29kZT48L2xpPgo8bGkgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUt aGVpZ2h0OiAxLjU7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDAuMjVlbTsiPjxj b2RlIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI3LCAzMSwgMzUsIDAuMDUpOyBi b3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAzcHg7IGJvcmRlci1ib3R0b20tcmlnaHQtcmFk aXVzOiAzcHg7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDNweDsgYm9yZGVyLXRvcC1yaWdo dC1yYWRpdXM6IDNweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1mYW1pbHk6IFNG TW9uby1SZWd1bGFyLENvbnNvbGFzLExpYmVyYXRpb24gTW9ubyxNZW5sbyxDb3VyaWVyLG1v bm9zcGFjZTsgZm9udC1zaXplOiA4NSU7IG1hcmdpbi1ib3R0b206IDBweDsgbWFyZ2luLWxl ZnQ6IDBweDsgbWFyZ2luLXJpZ2h0OiAwcHg7IG1hcmdpbi10b3A6IDBweDsgcGFkZGluZy1i b3R0b206IDAuMmVtOyBwYWRkaW5nLWxlZnQ6IDAuNGVtOyBwYWRkaW5nLXJpZ2h0OiAwLjRl bTsgcGFkZGluZy10b3A6IDAuMmVtOyI+aW50IGtlcm5lbF9zZXRfZGV2aWNlKHN0cnVjdCB3 Z2RldmljZSAqKTwvY29kZT4gPSZndDsgPGNvZGUgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6 IHJnYmEoMjcsIDMxLCAzNSwgMC4wNSk7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDNw eDsgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDNweDsgYm9yZGVyLXRvcC1sZWZ0LXJh ZGl1czogM3B4OyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogM3B4OyBib3gtc2l6aW5nOiBi b3JkZXItYm94OyBmb250LWZhbWlseTogU0ZNb25vLVJlZ3VsYXIsQ29uc29sYXMsTGliZXJh dGlvbiBNb25vLE1lbmxvLENvdXJpZXIsbW9ub3NwYWNlOyBmb250LXNpemU6IDg1JTsgbWFy Z2luLWJvdHRvbTogMHB4OyBtYXJnaW4tbGVmdDogMHB4OyBtYXJnaW4tcmlnaHQ6IDBweDsg bWFyZ2luLXRvcDogMHB4OyBwYWRkaW5nLWJvdHRvbTogMC4yZW07IHBhZGRpbmctbGVmdDog MC40ZW07IHBhZGRpbmctcmlnaHQ6IDAuNGVtOyBwYWRkaW5nLXRvcDogMC4yZW07Ij5pbnQg a2VybmVsX3NldF9kZXZpY2UoY29uc3Qgc3RydWN0IHdnZGV2aWNlICpuZXdjb25mKTwvY29k ZT48L2xpPgo8bGkgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0 OiAxLjU7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDAuMjVlbTsiPjxjb2RlIHN0 eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI3LCAzMSwgMzUsIDAuMDUpOyBib3JkZXIt Ym90dG9tLWxlZnQtcmFkaXVzOiAzcHg7IGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAz cHg7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDNweDsgYm9yZGVyLXRvcC1yaWdodC1yYWRp dXM6IDNweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1mYW1pbHk6IFNGTW9uby1S ZWd1bGFyLENvbnNvbGFzLExpYmVyYXRpb24gTW9ubyxNZW5sbyxDb3VyaWVyLG1vbm9zcGFj ZTsgZm9udC1zaXplOiA4NSU7IG1hcmdpbi1ib3R0b206IDBweDsgbWFyZ2luLWxlZnQ6IDBw eDsgbWFyZ2luLXJpZ2h0OiAwcHg7IG1hcmdpbi10b3A6IDBweDsgcGFkZGluZy1ib3R0b206 IDAuMmVtOyBwYWRkaW5nLWxlZnQ6IDAuNGVtOyBwYWRkaW5nLXJpZ2h0OiAwLjRlbTsgcGFk ZGluZy10b3A6IDAuMmVtOyI+aW50IHVzZXJzcGFjZV9zZXRfZGV2aWNlKHN0cnVjdCB3Z2Rl dmljZSAqKTwvY29kZT4gPSZndDsgPGNvZGUgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJn YmEoMjcsIDMxLCAzNSwgMC4wNSk7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDNweDsg Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDNweDsgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1 czogM3B4OyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogM3B4OyBib3gtc2l6aW5nOiBib3Jk ZXItYm94OyBmb250LWZhbWlseTogU0ZNb25vLVJlZ3VsYXIsQ29uc29sYXMsTGliZXJhdGlv biBNb25vLE1lbmxvLENvdXJpZXIsbW9ub3NwYWNlOyBmb250LXNpemU6IDg1JTsgbWFyZ2lu LWJvdHRvbTogMHB4OyBtYXJnaW4tbGVmdDogMHB4OyBtYXJnaW4tcmlnaHQ6IDBweDsgbWFy Z2luLXRvcDogMHB4OyBwYWRkaW5nLWJvdHRvbTogMC4yZW07IHBhZGRpbmctbGVmdDogMC40 ZW07IHBhZGRpbmctcmlnaHQ6IDAuNGVtOyBwYWRkaW5nLXRvcDogMC4yZW07Ij5pbnQgdXNl cnNwYWNlX3NldF9kZXZpY2UoY29uc3Qgc3RydWN0IHdnZGV2aWNlICpuZXdjb25mKTwvY29k ZT48L2xpPjwvdWw+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1 NSwgMjU1KTsgY29sb3I6IHJnYigzNiwgNDEsIDQ2KTsgZGlzcGxheTogaW5saW5lOyBmbG9h dDogbm9uZTsgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250 LFNlZ29lIFVJLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmLEFwcGxlIENvbG9yIEVtb2pp LFNlZ29lIFVJIEVtb2ppLFNlZ29lIFVJIFN5bWJvbDsgZm9udC1zaXplOiAxNHB4OyBmb250 LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudDogbm9ybWFsOyBmb250LXdlaWdodDogNDAw OyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyBsaW5lLWhlaWdodDogMS41OyBvcnBoYW5zOiAy OyB0ZXh0LWFsaWduOiBsZWZ0OyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IHRleHQtaW5kZW50 OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyAtd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRo OiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4OyI+PGJyPjwv c3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LWZhbWls eTogVmVyZGFuYTsgZm9udC1zaXplOiAxNHB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQt dmFyaWFudDogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9y bWFsOyBsaW5lLWhlaWdodDogMS41OyBvcnBoYW5zOiAyOyB0ZXh0LWFsaWduOiBsZWZ0OyB0 ZXh0LWRlY29yYXRpb246IG5vbmU7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3Jt OiBub25lOyAtd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoOiAwcHg7IHdoaXRlLXNwYWNlOiBu b3JtYWw7IHdvcmQtc3BhY2luZzogMHB4OyI+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29s b3I6IHJnYigyNTUsIDI1NSwgMjU1KTsgY29sb3I6IHJnYigzNiwgNDEsIDQ2KTsgZGlzcGxh eTogaW5saW5lOyBmbG9hdDogbm9uZTsgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sQmxp bmtNYWNTeXN0ZW1Gb250LFNlZ29lIFVJLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmLEFw cGxlIENvbG9yIEVtb2ppLFNlZ29lIFVJIEVtb2ppLFNlZ29lIFVJIFN5bWJvbDsgZm9udC1z aXplOiAxNHB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudDogbm9ybWFsOyBm b250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyBsaW5lLWhlaWdodDog MS41OyBvcnBoYW5zOiAyOyB0ZXh0LWFsaWduOiBsZWZ0OyB0ZXh0LWRlY29yYXRpb246IG5v bmU7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyAtd2Via2l0LXRl eHQtc3Ryb2tlLXdpZHRoOiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2lu ZzogMHB4OyI+QWRkZWQgZnVuY3Rpb246PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9ImNvbG9y OiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDE0cHg7 IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50OiBub3JtYWw7IGZvbnQtd2VpZ2h0 OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IGxpbmUtaGVpZ2h0OiAxLjU7IG9ycGhh bnM6IDI7IHRleHQtYWxpZ246IGxlZnQ7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgdGV4dC1p bmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IC13ZWJraXQtdGV4dC1zdHJva2Ut d2lkdGg6IDBweDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7Ij48 c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpOyBjb2xv cjogcmdiKDM2LCA0MSwgNDYpOyBkaXNwbGF5OiBpbmxpbmU7IGZsb2F0OiBub25lOyBmb250 LWZhbWlseTogLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsU2Vnb2UgVUksSGVs dmV0aWNhLEFyaWFsLHNhbnMtc2VyaWYsQXBwbGUgQ29sb3IgRW1vamksU2Vnb2UgVUkgRW1v amksU2Vnb2UgVUkgU3ltYm9sOyBmb250LXNpemU6IDE0cHg7IGZvbnQtc3R5bGU6IG5vcm1h bDsgZm9udC12YXJpYW50OiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFj aW5nOiBub3JtYWw7IGxpbmUtaGVpZ2h0OiAxLjU7IG9ycGhhbnM6IDI7IHRleHQtYWxpZ246 IGxlZnQ7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10 cmFuc2Zvcm06IG5vbmU7IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6IDBweDsgd2hpdGUt c3BhY2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7Ij48L3NwYW4+PHVsIHN0eWxlPSJi b3gtc2l6aW5nOiBib3JkZXItYm94OyBjb2xvcjogcmdiKDM2LCA0MSwgNDYpOyBmb250LWZh bWlseTogLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsU2Vnb2UgVUksSGVsdmV0 aWNhLEFyaWFsLHNhbnMtc2VyaWYsQXBwbGUgQ29sb3IgRW1vamksU2Vnb2UgVUkgRW1vamks U2Vnb2UgVUkgU3ltYm9sOyBmb250LXNpemU6IDE0cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsg Zm9udC12YXJpYW50OiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5n OiBub3JtYWw7IG1hcmdpbi1ib3R0b206IDBweDsgbWFyZ2luLXRvcDogMHB4OyBvcnBoYW5z OiAyOyBwYWRkaW5nLWxlZnQ6IDJlbTsgdGV4dC1hbGlnbjogbGVmdDsgdGV4dC1kZWNvcmF0 aW9uOiBub25lOyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgLXdl YmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3Jk LXNwYWNpbmc6IDBweDsiPjxsaSBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGlu ZS1oZWlnaHQ6IDEuNTsgbWFyZ2luLWxlZnQ6IDBweDsiPjxjb2RlIHN0eWxlPSJiYWNrZ3Jv dW5kLWNvbG9yOiByZ2JhKDI3LCAzMSwgMzUsIDAuMDUpOyBib3JkZXItYm90dG9tLWxlZnQt cmFkaXVzOiAzcHg7IGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAzcHg7IGJvcmRlci10 b3AtbGVmdC1yYWRpdXM6IDNweDsgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDNweDsgYm94 LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1mYW1pbHk6IFNGTW9uby1SZWd1bGFyLENvbnNv bGFzLExpYmVyYXRpb24gTW9ubyxNZW5sbyxDb3VyaWVyLG1vbm9zcGFjZTsgZm9udC1zaXpl OiA4NSU7IG1hcmdpbi1ib3R0b206IDBweDsgbWFyZ2luLWxlZnQ6IDBweDsgbWFyZ2luLXJp Z2h0OiAwcHg7IG1hcmdpbi10b3A6IDBweDsgcGFkZGluZy1ib3R0b206IDAuMmVtOyBwYWRk aW5nLWxlZnQ6IDAuNGVtOyBwYWRkaW5nLXJpZ2h0OiAwLjRlbTsgcGFkZGluZy10b3A6IDAu MmVtOyI+ZnJlZV9jb25mKCk8L2NvZGU+PGJyPjwvbGk+PC91bD48L2Rpdj48ZGl2IHN0eWxl PSJjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LWZhbWlseTogVmVyZGFuYTsgZm9udC1zaXpl OiAxNHB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudDogbm9ybWFsOyBmb250 LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyBsaW5lLWhlaWdodDogMS41 OyBvcnBoYW5zOiAyOyB0ZXh0LWFsaWduOiBsZWZ0OyB0ZXh0LWRlY29yYXRpb246IG5vbmU7 IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyAtd2Via2l0LXRleHQt c3Ryb2tlLXdpZHRoOiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2luZzog MHB4OyI+PGJyPjwvZGl2PjxkaXYgc3R5bGU9ImNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQt ZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDE0cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsg Zm9udC12YXJpYW50OiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5n OiBub3JtYWw7IGxpbmUtaGVpZ2h0OiAxLjU7IG9ycGhhbnM6IDI7IHRleHQtYWxpZ246IGxl ZnQ7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFu c2Zvcm06IG5vbmU7IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6IDBweDsgd2hpdGUtc3Bh Y2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7Ij5QYXRjaCBjb2RlIGlzIGJvdGggaW4g dGhlIGVtYWlsIGF0dGFjaG1lbnQgYW5kIG9uIGdpdGh1Yi5jb20gKCA8YSBocmVmPSJodHRw czovL2dpdGh1Yi5jb20vV2lyZUd1YXJkL1dpcmVHdWFyZC9wdWxsLzUvZmlsZXMiPmh0dHBz Oi8vZ2l0aHViLmNvbS9XaXJlR3VhcmQvV2lyZUd1YXJkL3B1bGwvNS9maWxlczwvYT4gKTwv ZGl2PjxkaXYgc3R5bGU9ImNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBWZXJk YW5hOyBmb250LXNpemU6IDE0cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50 OiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IGxp bmUtaGVpZ2h0OiAxLjU7IG9ycGhhbnM6IDI7IHRleHQtYWxpZ246IGxlZnQ7IHRleHQtZGVj b3JhdGlvbjogbm9uZTsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7 IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6IDBweDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsg d29yZC1zcGFjaW5nOiAwcHg7Ij48YnI+PC9kaXY+PGRpdiBzdHlsZT0iY29sb3I6IHJnYigw LCAwLCAwKTsgZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTRweDsgZm9udC1z dHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQ6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsg bGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgbGluZS1oZWlnaHQ6IDEuNTsgb3JwaGFuczogMjsg dGV4dC1hbGlnbjogbGVmdDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB0ZXh0LWluZGVudDog MHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDog MHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXNwYWNpbmc6IDBweDsiPlBsZWFzZSB0 ZWxsIG1lIGFueXRoaW5nIHlvdSB0aG91Z2h0LCBJIHdvdWxkIGJlIGdsYWQgdG8gaGVscC48 L2Rpdj48ZGl2IHN0eWxlPSJjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LWZhbWlseTogVmVy ZGFuYTsgZm9udC1zaXplOiAxNHB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFu dDogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyBs aW5lLWhlaWdodDogMS41OyBvcnBoYW5zOiAyOyB0ZXh0LWFsaWduOiBsZWZ0OyB0ZXh0LWRl Y29yYXRpb246IG5vbmU7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25l OyAtd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoOiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7 IHdvcmQtc3BhY2luZzogMHB4OyI+PGJyPjwvZGl2PjxkaXYgc3R5bGU9ImNvbG9yOiByZ2Io MCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDE0cHg7IGZvbnQt c3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50OiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7 IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IGxpbmUtaGVpZ2h0OiAxLjU7IG9ycGhhbnM6IDI7 IHRleHQtYWxpZ246IGxlZnQ7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgdGV4dC1pbmRlbnQ6 IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6 IDBweDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7Ij5IYXBweSBo YWNraW5nITwvZGl2PjxkaXYgc3R5bGU9ImNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFt aWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDE0cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9u dC12YXJpYW50OiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBu b3JtYWw7IGxpbmUtaGVpZ2h0OiAxLjU7IG9ycGhhbnM6IDI7IHRleHQtYWxpZ246IGxlZnQ7 IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zv cm06IG5vbmU7IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6IDBweDsgd2hpdGUtc3BhY2U6 IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7Ij48YnI+PC9kaXY+PC9kaXY+PGRpdj48ZGl2 IHN0eWxlPSJjb2xvcjojOTA5MDkwO2ZvbnQtZmFtaWx5OkFyaWFsIE5hcnJvdztmb250LXNp emU6MTJweCI+LS0tLS0tLS0tLS0tLS0tLS0tPC9kaXY+PGRpdiBzdHlsZT0iZm9udC1zaXpl OjE0cHg7Zm9udC1mYW1pbHk6VmVyZGFuYTtjb2xvcjojMDAwOyI+PGRpdj4tLSBMaXUgUXVu IGZyb20gVHNpbmd0YW8sIENoaW5hPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdj48YnI+ PC9kaXY+PGRpdj48ZGl2PjxwIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBjb2xv cjogcmdiKDM2LCA0MSwgNDYpOyBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSxCbGlua01h Y1N5c3RlbUZvbnQsU2Vnb2UgVUksSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWYsQXBwbGUg Q29sb3IgRW1vamksU2Vnb2UgVUkgRW1vamksU2Vnb2UgVUkgU3ltYm9sOyBmb250LXNpemU6 IDE0cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50OiBub3JtYWw7IGZvbnQt d2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IG1hcmdpbi1ib3R0b206IDE2 cHg7IG1hcmdpbi10b3A6IDBweDsgb3JwaGFuczogMjsgdGV4dC1hbGlnbjogbGVmdDsgdGV4 dC1kZWNvcmF0aW9uOiBub25lOyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTog bm9uZTsgLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyB3aGl0ZS1zcGFjZTogbm9y bWFsOyB3b3JkLXNwYWNpbmc6IDBweDsiPjxicj48L3A+PC9kaXY+PC9kaXY+ ------=_NextPart_5C7781DD_0C641D80_32AC2329-- ------=_NextPart_5C7781DD_0C641D80_604CAA38 Content-Type: application/octet-stream; charset="gb18030"; name="0001-tools-Rename-IPC-functions-to-reduce-misleading.patch" Content-Disposition: attachment; filename="0001-tools-Rename-IPC-functions-to-reduce-misleading.patch" Content-Transfer-Encoding: base64 RnJvbSAxMjAyNTBkMDhkYWNiNmMzY2YwYjc0ZTJmMzEyYTYxZGI1NTYxMzhjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBMaXUgUXVuIDw1MTcwNjcxODBAcXEuY29tPgpEYXRl OiBUaHUsIDIxIEZlYiAyMDE5IDE0OjM4OjU0ICswODAwClN1YmplY3Q6IFtQQVRDSCAxLzJd IHRvb2xzOiBSZW5hbWUgSVBDIGZ1bmN0aW9ucyB0byByZWR1Y2UgbWlzbGVhZGluZwoKVGhl IGZ1bmN0aW9uIG5hbWUgbGlrZSBpcGNfZ2V0X2RldmljZSgpIGlzIGEgbGl0dGxlIGJpdCBt aXNsZWFkaW5nLgpUbyBtYWtlIHRoZSBjb2RlIG1vcmUgcmVhZGFibGUgZm9yIG5ldyBkZXZl bG9wZXJzLCBoZXJlIGFyZSBzb21lIHN1Z2dlc3Rpb25zOgoqIFJlbmFtZSBpcGNfZ2V0X2Rl dmljZSgmZGV2KSB0byBpcGNfZmV0Y2hfY29uZigmY29uZikgYmVjYXVzZSBpdCBvbmx5IGZl dGNoZXMgdGhlIHJ1bnRpbWUgY29uZmlndWF0aW9ucyBmcm9tIGtlcm5lbC4KKiBGdW50aW9u IHByb3RvdHlwZSBpcGNfc2V0X2RldmljZShzdHJ1Y3Qgd2dkZXZpY2UgKmRldikgaXMgY2hh bmdlZCB0byBpcGNfc2V0X2RldmljZShjb25zdCBzdHJ1Y3Qgd2dkZXZpY2UgKm5ld2NvbmYp LgoKQ2hhbmdlIHRoZSBmb2xsb3dpbmcgSVBDIGZ1bmN0aW9uIG5hbWVzIGFuZCBwYXJhbWV0 ZXJzIHdoaWNoIHVzZWQgdG8gYmUgY29uZnVzaW5nOgppcGNfc2V0X2RldmljZShkZXYpICAg ICAgICAgICAgICAgICAgPT4gaXBjX3NldF9kZXZpY2UobmV3Y29uZikKaXBjX2dldF9kZXZp Y2UoZGV2LCBpbnRlcmZhY2UpICAgICAgID0+IGlwY19mZXRjaF9jb25mKGNvbmYsIGludGVy ZmFjZSkKa2VybmVsX3NldF9kZXZpY2UoZGV2KSAgICAgICAgICAgICAgID0+IGtlcm5lbF9z ZXRfZGV2aWNlKG5ld2NvbmYpCmtlcm5lbF9nZXRfZGV2aWNlKGRldmljZSwgaW50ZXJmYWNl KSA9PiBrZXJuZWxfZmV0Y2hfY29uZihjb25mLCBpbnRlcmZhY2UpCnVzZXJzcGFjZV9zZXRf ZGV2aWNlKGRldikgICAgICAgICAgICA9PiB1c2Vyc3BhY2Vfc2V0X2RldmljZShuZXdjb25m KQp1c2Vyc3BhY2VfZ2V0X2RldmljZShvdXQsIGludGVyZmFjZSkgPT4gdXNlcnNwYWNlX2Zl dGNoX2NvbmYob3V0LCBpbnRlcmZhY2UpCgpSZW5hbWVkIGxvY2FsIHZhcmlhYmxlL3BhcmFt ZXRlciBzeW1ib2xzOgoqIEluIHNob3djb25mX21haW4oKSwgc2hvd19tYWluKCk6CiAgZGV2 aWNlID0+IGNvbmYKKiBJbiBpcGNfZmV0Y2hfY29uZigpLCBrZXJuZWxfZmV0Y2hfY29uZigp LCB1c2Vyc3BhY2VfZmV0Y2hfY29uZigpOgogIGRldiA9PiBjb25mCiogSW4gaXBjX3NldF9k ZXZpY2UoKSwga2VybmVsX3NldF9kZXZpY2UoKSwgdXNlcnNwYWNlX3NldF9kZXZpY2UoKToK ICBkZXYgPT4gbmV3Y29uZgoKTm90ZToKQSBsb3Qgb2YgYnJhY2VzIGFyZSBhZGRlZCB0byB0 aGUgaWYtZWxzZSBjb2RlIGJsb2NrcyB0byBrZWVwIG91cnNlbHZlcyBmcm9tIG1ha2luZyB1 bmV4cGVjdGVkIG1pc3Rha2VzIGluIHRoZSBmdXR1cmUuCgpDaGFuZ2VkIGZ1bmN0aW9uIHBy b3RvdHlwZXM6CmludCBpcGNfc2V0X2RldmljZShzdHJ1Y3Qgd2dkZXZpY2UgKikgPT4gaW50 IGlwY19zZXRfZGV2aWNlKGNvbnN0IHN0cnVjdCB3Z2RldmljZSAqbmV3Y29uZikKaW50IGtl cm5lbF9zZXRfZGV2aWNlKHN0cnVjdCB3Z2RldmljZSAqKSA9PiBpbnQga2VybmVsX3NldF9k ZXZpY2UoY29uc3Qgc3RydWN0IHdnZGV2aWNlICpuZXdjb25mKQppbnQgdXNlcnNwYWNlX3Nl dF9kZXZpY2Uoc3RydWN0IHdnZGV2aWNlICopID0+IGludCB1c2Vyc3BhY2Vfc2V0X2Rldmlj ZShjb25zdCBzdHJ1Y3Qgd2dkZXZpY2UgKm5ld2NvbmYpCgpTaWduZWQtb2ZmLWJ5OiBMaXUg UXVuIDw1MTcwNjcxODBAcXEuY29tPgotLS0KIHNyYy90b29scy9pcGMuYyAgICAgIHwgMjIw ICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy90b29s cy9pcGMuaCAgICAgIHwgICA0ICstCiBzcmMvdG9vbHMvc2hvdy5jICAgICB8ICAzNiArKyst LS0tCiBzcmMvdG9vbHMvc2hvd2NvbmYuYyB8ICA1NiArKysrKystLS0tLQogNCBmaWxlcyBj aGFuZ2VkLCAxODUgaW5zZXJ0aW9ucygrKSwgMTMxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy90b29scy9pcGMuYyBiL3NyYy90b29scy9pcGMuYwppbmRleCA3YWIzYTYyLi41 MjhhNzgwIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvaXBjLmMKKysrIGIvc3JjL3Rvb2xzL2lw Yy5jCkBAIC0xOTgsNyArMTk4LDcgQEAgb3V0OgogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRp YyBpbnQgdXNlcnNwYWNlX3NldF9kZXZpY2Uoc3RydWN0IHdnZGV2aWNlICpkZXYpCitzdGF0 aWMgaW50IHVzZXJzcGFjZV9zZXRfZGV2aWNlKGNvbnN0IHN0cnVjdCB3Z2RldmljZSAqbmV3 Y29uZikKIHsKIAljaGFyIGhleFtXR19LRVlfTEVOX0hFWF0sIGlwW0lORVQ2X0FERFJTVFJM RU5dLCBob3N0WzQwOTYgKyAxXSwgc2VydmljZVs1MTIgKyAxXTsKIAlzdHJ1Y3Qgd2dwZWVy ICpwZWVyOwpAQCAtMjA3LDIzICsyMDcsMjcgQEAgc3RhdGljIGludCB1c2Vyc3BhY2Vfc2V0 X2RldmljZShzdHJ1Y3Qgd2dkZXZpY2UgKmRldikKIAlpbnQgcmV0OwogCXNvY2tsZW5fdCBh ZGRyX2xlbjsKIAotCWYgPSB1c2Vyc3BhY2VfaW50ZXJmYWNlX2ZpbGUoZGV2LT5uYW1lKTsK LQlpZiAoIWYpCisJZiA9IHVzZXJzcGFjZV9pbnRlcmZhY2VfZmlsZShuZXdjb25mLT5uYW1l KTsKKwlpZiAoIWYpIHsKIAkJcmV0dXJuIC1lcnJubzsKKwl9CiAJZnByaW50ZihmLCAic2V0 PTFcbiIpOwogCi0JaWYgKGRldi0+ZmxhZ3MgJiBXR0RFVklDRV9IQVNfUFJJVkFURV9LRVkp IHsKLQkJa2V5X3RvX2hleChoZXgsIGRldi0+cHJpdmF0ZV9rZXkpOworCWlmIChuZXdjb25m LT5mbGFncyAmIFdHREVWSUNFX0hBU19QUklWQVRFX0tFWSkgeworCQlrZXlfdG9faGV4KGhl eCwgbmV3Y29uZi0+cHJpdmF0ZV9rZXkpOwogCQlmcHJpbnRmKGYsICJwcml2YXRlX2tleT0l c1xuIiwgaGV4KTsKIAl9Ci0JaWYgKGRldi0+ZmxhZ3MgJiBXR0RFVklDRV9IQVNfTElTVEVO X1BPUlQpCi0JCWZwcmludGYoZiwgImxpc3Rlbl9wb3J0PSV1XG4iLCBkZXYtPmxpc3Rlbl9w b3J0KTsKLQlpZiAoZGV2LT5mbGFncyAmIFdHREVWSUNFX0hBU19GV01BUkspCi0JCWZwcmlu dGYoZiwgImZ3bWFyaz0ldVxuIiwgZGV2LT5md21hcmspOwotCWlmIChkZXYtPmZsYWdzICYg V0dERVZJQ0VfUkVQTEFDRV9QRUVSUykKKwlpZiAobmV3Y29uZi0+ZmxhZ3MgJiBXR0RFVklD RV9IQVNfTElTVEVOX1BPUlQpIHsKKwkJZnByaW50ZihmLCAibGlzdGVuX3BvcnQ9JXVcbiIs IG5ld2NvbmYtPmxpc3Rlbl9wb3J0KTsKKwl9CisJaWYgKG5ld2NvbmYtPmZsYWdzICYgV0dE RVZJQ0VfSEFTX0ZXTUFSSykgeworCQlmcHJpbnRmKGYsICJmd21hcms9JXVcbiIsIG5ld2Nv bmYtPmZ3bWFyayk7CisJfQorCWlmIChuZXdjb25mLT5mbGFncyAmIFdHREVWSUNFX1JFUExB Q0VfUEVFUlMpIHsKIAkJZnByaW50ZihmLCAicmVwbGFjZV9wZWVycz10cnVlXG4iKTsKKwl9 CiAKLQlmb3JfZWFjaF93Z3BlZXIoZGV2LCBwZWVyKSB7CisJZm9yX2VhY2hfd2dwZWVyKG5l d2NvbmYsIHBlZXIpIHsKIAkJa2V5X3RvX2hleChoZXgsIHBlZXItPnB1YmxpY19rZXkpOwog CQlmcHJpbnRmKGYsICJwdWJsaWNfa2V5PSVzXG4iLCBoZXgpOwogCQlpZiAocGVlci0+Zmxh Z3MgJiBXR1BFRVJfUkVNT1ZFX01FKSB7CkBAIC0yMzYsMzggKzI0MCw0NSBAQCBzdGF0aWMg aW50IHVzZXJzcGFjZV9zZXRfZGV2aWNlKHN0cnVjdCB3Z2RldmljZSAqZGV2KQogCQl9CiAJ CWlmIChwZWVyLT5lbmRwb2ludC5hZGRyLnNhX2ZhbWlseSA9PSBBRl9JTkVUIHx8IHBlZXIt PmVuZHBvaW50LmFkZHIuc2FfZmFtaWx5ID09IEFGX0lORVQ2KSB7CiAJCQlhZGRyX2xlbiA9 IDA7Ci0JCQlpZiAocGVlci0+ZW5kcG9pbnQuYWRkci5zYV9mYW1pbHkgPT0gQUZfSU5FVCkK KwkJCWlmIChwZWVyLT5lbmRwb2ludC5hZGRyLnNhX2ZhbWlseSA9PSBBRl9JTkVUKSB7CiAJ CQkJYWRkcl9sZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKTsKLQkJCWVsc2UgaWYg KHBlZXItPmVuZHBvaW50LmFkZHIuc2FfZmFtaWx5ID09IEFGX0lORVQ2KQorCQkJfSBlbHNl IGlmIChwZWVyLT5lbmRwb2ludC5hZGRyLnNhX2ZhbWlseSA9PSBBRl9JTkVUNikgewogCQkJ CWFkZHJfbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpOworCQkJfQogCQkJaWYg KCFnZXRuYW1laW5mbygmcGVlci0+ZW5kcG9pbnQuYWRkciwgYWRkcl9sZW4sIGhvc3QsIHNp emVvZihob3N0KSwgc2VydmljZSwgc2l6ZW9mKHNlcnZpY2UpLCBOSV9ER1JBTSB8IE5JX05V TUVSSUNTRVJWIHwgTklfTlVNRVJJQ0hPU1QpKSB7Ci0JCQkJaWYgKHBlZXItPmVuZHBvaW50 LmFkZHIuc2FfZmFtaWx5ID09IEFGX0lORVQ2ICYmIHN0cmNocihob3N0LCAnOicpKQorCQkJ CWlmIChwZWVyLT5lbmRwb2ludC5hZGRyLnNhX2ZhbWlseSA9PSBBRl9JTkVUNiAmJiBzdHJj aHIoaG9zdCwgJzonKSkgewogCQkJCQlmcHJpbnRmKGYsICJlbmRwb2ludD1bJXNdOiVzXG4i LCBob3N0LCBzZXJ2aWNlKTsKLQkJCQllbHNlCisJCQkJfSBlbHNlIHsKIAkJCQkJZnByaW50 ZihmLCAiZW5kcG9pbnQ9JXM6JXNcbiIsIGhvc3QsIHNlcnZpY2UpOworCQkJCX0KIAkJCX0K IAkJfQotCQlpZiAocGVlci0+ZmxhZ3MgJiBXR1BFRVJfSEFTX1BFUlNJU1RFTlRfS0VFUEFM SVZFX0lOVEVSVkFMKQorCQlpZiAocGVlci0+ZmxhZ3MgJiBXR1BFRVJfSEFTX1BFUlNJU1RF TlRfS0VFUEFMSVZFX0lOVEVSVkFMKSB7CiAJCQlmcHJpbnRmKGYsICJwZXJzaXN0ZW50X2tl ZXBhbGl2ZV9pbnRlcnZhbD0ldVxuIiwgcGVlci0+cGVyc2lzdGVudF9rZWVwYWxpdmVfaW50 ZXJ2YWwpOwotCQlpZiAocGVlci0+ZmxhZ3MgJiBXR1BFRVJfUkVQTEFDRV9BTExPV0VESVBT KQorCQl9IGlmIChwZWVyLT5mbGFncyAmIFdHUEVFUl9SRVBMQUNFX0FMTE9XRURJUFMpIHsK IAkJCWZwcmludGYoZiwgInJlcGxhY2VfYWxsb3dlZF9pcHM9dHJ1ZVxuIik7CisJCX0KIAkJ Zm9yX2VhY2hfd2dhbGxvd2VkaXAocGVlciwgYWxsb3dlZGlwKSB7CiAJCQlpZiAoYWxsb3dl ZGlwLT5mYW1pbHkgPT0gQUZfSU5FVCkgewotCQkJCWlmICghaW5ldF9udG9wKEFGX0lORVQs ICZhbGxvd2VkaXAtPmlwNCwgaXAsIElORVQ2X0FERFJTVFJMRU4pKQorCQkJCWlmICghaW5l dF9udG9wKEFGX0lORVQsICZhbGxvd2VkaXAtPmlwNCwgaXAsIElORVQ2X0FERFJTVFJMRU4p KSB7CiAJCQkJCWNvbnRpbnVlOworCQkJCX0KIAkJCX0gZWxzZSBpZiAoYWxsb3dlZGlwLT5m YW1pbHkgPT0gQUZfSU5FVDYpIHsKLQkJCQlpZiAoIWluZXRfbnRvcChBRl9JTkVUNiwgJmFs bG93ZWRpcC0+aXA2LCBpcCwgSU5FVDZfQUREUlNUUkxFTikpCisJCQkJaWYgKCFpbmV0X250 b3AoQUZfSU5FVDYsICZhbGxvd2VkaXAtPmlwNiwgaXAsIElORVQ2X0FERFJTVFJMRU4pKSB7 CiAJCQkJCWNvbnRpbnVlOwotCQkJfSBlbHNlCisJCQkJfQorCQkJfSBlbHNlIHsKIAkJCQlj b250aW51ZTsKKwkJCX0KIAkJCWZwcmludGYoZiwgImFsbG93ZWRfaXA9JXMvJWRcbiIsIGlw LCBhbGxvd2VkaXAtPmNpZHIpOwogCQl9CiAJfQogCWZwcmludGYoZiwgIlxuIik7CiAJZmZs dXNoKGYpOwogCi0JaWYgKGZzY2FuZihmLCAiZXJybm89JWRcblxuIiwgJnJldCkgIT0gMSkK KwlpZiAoZnNjYW5mKGYsICJlcnJubz0lZFxuXG4iLCAmcmV0KSAhPSAxKSB7CiAJCXJldCA9 IGVycm5vID8gLWVycm5vIDogLUVQUk9UTzsKKwl9CiAJZmNsb3NlKGYpOwogCWVycm5vID0g LXJldDsKIAlyZXR1cm4gcmV0OwpAQCAtMjg0LDkgKzI5NSw5IEBAIHN0YXRpYyBpbnQgdXNl cnNwYWNlX3NldF9kZXZpY2Uoc3RydWN0IHdnZGV2aWNlICpkZXYpCiAJbnVtOyBcCiB9KQog Ci1zdGF0aWMgaW50IHVzZXJzcGFjZV9nZXRfZGV2aWNlKHN0cnVjdCB3Z2RldmljZSAqKm91 dCwgY29uc3QgY2hhciAqaW50ZXJmYWNlKQorc3RhdGljIGludCB1c2Vyc3BhY2VfZmV0Y2hf Y29uZihzdHJ1Y3Qgd2dkZXZpY2UgKipvdXQsIGNvbnN0IGNoYXIgKmludGVyZmFjZSkKIHsK LQlzdHJ1Y3Qgd2dkZXZpY2UgKmRldjsKKwlzdHJ1Y3Qgd2dkZXZpY2UgKmNvbmY7CiAJc3Ry dWN0IHdncGVlciAqcGVlciA9IE5VTEw7CiAJc3RydWN0IHdnYWxsb3dlZGlwICphbGxvd2Vk aXAgPSBOVUxMOwogCXNpemVfdCBsaW5lX2J1ZmZlcl9sZW4gPSAwLCBsaW5lX2xlbjsKQEAg LTI5NCwxOSArMzA1LDIxIEBAIHN0YXRpYyBpbnQgdXNlcnNwYWNlX2dldF9kZXZpY2Uoc3Ry dWN0IHdnZGV2aWNlICoqb3V0LCBjb25zdCBjaGFyICppbnRlcmZhY2UpCiAJRklMRSAqZjsK IAlpbnQgcmV0ID0gLUVQUk9UTzsKIAotCSpvdXQgPSBkZXYgPSBjYWxsb2MoMSwgc2l6ZW9m KCpkZXYpKTsKLQlpZiAoIWRldikKKwkqb3V0ID0gY29uZiA9IGNhbGxvYygxLCBzaXplb2Yo KmNvbmYpKTsKKwlpZiAoIWNvbmYpIHsKIAkJcmV0dXJuIC1lcnJubzsKKwl9CiAKIAlmID0g dXNlcnNwYWNlX2ludGVyZmFjZV9maWxlKGludGVyZmFjZSk7Ci0JaWYgKCFmKQorCWlmICgh ZikgewogCQlyZXR1cm4gLWVycm5vOworCX0KIAogCWZwcmludGYoZiwgImdldD0xXG5cbiIp OwogCWZmbHVzaChmKTsKIAotCXN0cm5jcHkoZGV2LT5uYW1lLCBpbnRlcmZhY2UsIElGTkFN U0laIC0gMSk7Ci0JZGV2LT5uYW1lW0lGTkFNU0laIC0gMV0gPSAnXDAnOworCXN0cm5jcHko Y29uZi0+bmFtZSwgaW50ZXJmYWNlLCBJRk5BTVNJWiAtIDEpOworCWNvbmYtPm5hbWVbSUZO QU1TSVogLSAxXSA9ICdcMCc7CiAKIAl3aGlsZSAoZ2V0bGluZSgma2V5LCAmbGluZV9idWZm ZXJfbGVuLCBmKSA+IDApIHsKIAkJbGluZV9sZW4gPSBzdHJsZW4oa2V5KTsKQEAgLTMxNiwy MSArMzI5LDIzIEBAIHN0YXRpYyBpbnQgdXNlcnNwYWNlX2dldF9kZXZpY2Uoc3RydWN0IHdn ZGV2aWNlICoqb3V0LCBjb25zdCBjaGFyICppbnRlcmZhY2UpCiAJCQlyZXR1cm4gcmV0Owog CQl9CiAJCXZhbHVlID0gc3RyY2hyKGtleSwgJz0nKTsKLQkJaWYgKCF2YWx1ZSB8fCBsaW5l X2xlbiA9PSAwIHx8IGtleVtsaW5lX2xlbiAtIDFdICE9ICdcbicpCisJCWlmICghdmFsdWUg fHwgbGluZV9sZW4gPT0gMCB8fCBrZXlbbGluZV9sZW4gLSAxXSAhPSAnXG4nKSB7CiAJCQli cmVhazsKKwkJfQogCQkqdmFsdWUrKyA9IGtleVstLWxpbmVfbGVuXSA9ICdcMCc7CiAKIAkJ aWYgKCFwZWVyICYmICFzdHJjbXAoa2V5LCAicHJpdmF0ZV9rZXkiKSkgewotCQkJaWYgKCFr ZXlfZnJvbV9oZXgoZGV2LT5wcml2YXRlX2tleSwgdmFsdWUpKQorCQkJaWYgKCFrZXlfZnJv bV9oZXgoY29uZi0+cHJpdmF0ZV9rZXksIHZhbHVlKSkgewogCQkJCWJyZWFrOwotCQkJY3Vy dmUyNTUxOV9nZW5lcmF0ZV9wdWJsaWMoZGV2LT5wdWJsaWNfa2V5LCBkZXYtPnByaXZhdGVf a2V5KTsKLQkJCWRldi0+ZmxhZ3MgfD0gV0dERVZJQ0VfSEFTX1BSSVZBVEVfS0VZIHwgV0dE RVZJQ0VfSEFTX1BVQkxJQ19LRVk7CisJCQl9CisJCQljdXJ2ZTI1NTE5X2dlbmVyYXRlX3B1 YmxpYyhjb25mLT5wdWJsaWNfa2V5LCBjb25mLT5wcml2YXRlX2tleSk7CisJCQljb25mLT5m bGFncyB8PSBXR0RFVklDRV9IQVNfUFJJVkFURV9LRVkgfCBXR0RFVklDRV9IQVNfUFVCTElD X0tFWTsKIAkJfSBlbHNlIGlmICghcGVlciAmJiAhc3RyY21wKGtleSwgImxpc3Rlbl9wb3J0 IikpIHsKLQkJCWRldi0+bGlzdGVuX3BvcnQgPSBOVU0oMHhmZmZmVSk7Ci0JCQlkZXYtPmZs YWdzIHw9IFdHREVWSUNFX0hBU19MSVNURU5fUE9SVDsKKwkJCWNvbmYtPmxpc3Rlbl9wb3J0 ID0gTlVNKDB4ZmZmZlUpOworCQkJY29uZi0+ZmxhZ3MgfD0gV0dERVZJQ0VfSEFTX0xJU1RF Tl9QT1JUOwogCQl9IGVsc2UgaWYgKCFwZWVyICYmICFzdHJjbXAoa2V5LCAiZndtYXJrIikp IHsKLQkJCWRldi0+ZndtYXJrID0gTlVNKDB4ZmZmZmZmZmZVKTsKLQkJCWRldi0+ZmxhZ3Mg fD0gV0dERVZJQ0VfSEFTX0ZXTUFSSzsKKwkJCWNvbmYtPmZ3bWFyayA9IE5VTSgweGZmZmZm ZmZmVSk7CisJCQljb25mLT5mbGFncyB8PSBXR0RFVklDRV9IQVNfRldNQVJLOwogCQl9IGVs c2UgaWYgKCFzdHJjbXAoa2V5LCAicHVibGljX2tleSIpKSB7CiAJCQlzdHJ1Y3Qgd2dwZWVy ICpuZXdfcGVlciA9IGNhbGxvYygxLCBzaXplb2YoKm5ld19wZWVyKSk7CiAKQEAgLTMzOSwx OSArMzU0LDIzIEBAIHN0YXRpYyBpbnQgdXNlcnNwYWNlX2dldF9kZXZpY2Uoc3RydWN0IHdn ZGV2aWNlICoqb3V0LCBjb25zdCBjaGFyICppbnRlcmZhY2UpCiAJCQkJZ290byBlcnI7CiAJ CQl9CiAJCQlhbGxvd2VkaXAgPSBOVUxMOwotCQkJaWYgKHBlZXIpCisJCQlpZiAocGVlcikg ewogCQkJCXBlZXItPm5leHRfcGVlciA9IG5ld19wZWVyOwotCQkJZWxzZQotCQkJCWRldi0+ Zmlyc3RfcGVlciA9IG5ld19wZWVyOworCQkJfSBlbHNlIHsKKwkJCQljb25mLT5maXJzdF9w ZWVyID0gbmV3X3BlZXI7CisJCQl9CiAJCQlwZWVyID0gbmV3X3BlZXI7Ci0JCQlpZiAoIWtl eV9mcm9tX2hleChwZWVyLT5wdWJsaWNfa2V5LCB2YWx1ZSkpCisJCQlpZiAoIWtleV9mcm9t X2hleChwZWVyLT5wdWJsaWNfa2V5LCB2YWx1ZSkpIHsKIAkJCQlicmVhazsKKwkJCX0KIAkJ CXBlZXItPmZsYWdzIHw9IFdHUEVFUl9IQVNfUFVCTElDX0tFWTsKIAkJfSBlbHNlIGlmIChw ZWVyICYmICFzdHJjbXAoa2V5LCAicHJlc2hhcmVkX2tleSIpKSB7Ci0JCQlpZiAoIWtleV9m cm9tX2hleChwZWVyLT5wcmVzaGFyZWRfa2V5LCB2YWx1ZSkpCisJCQlpZiAoIWtleV9mcm9t X2hleChwZWVyLT5wcmVzaGFyZWRfa2V5LCB2YWx1ZSkpIHsKIAkJCQlicmVhazsKLQkJCWlm ICgha2V5X2lzX3plcm8ocGVlci0+cHJlc2hhcmVkX2tleSkpCisJCQl9CisJCQlpZiAoIWtl eV9pc196ZXJvKHBlZXItPnByZXNoYXJlZF9rZXkpKSB7CiAJCQkJcGVlci0+ZmxhZ3MgfD0g V0dQRUVSX0hBU19QUkVTSEFSRURfS0VZOworCQkJfQogCQl9IGVsc2UgaWYgKHBlZXIgJiYg IXN0cmNtcChrZXksICJlbmRwb2ludCIpKSB7CiAJCQljaGFyICpiZWdpbiwgKmVuZDsKIAkJ CXN0cnVjdCBhZGRyaW5mbyAqcmVzb2x2ZWQ7CkBAIC0zNjAsOCArMzc5LDkgQEAgc3RhdGlj IGludCB1c2Vyc3BhY2VfZ2V0X2RldmljZShzdHJ1Y3Qgd2dkZXZpY2UgKipvdXQsIGNvbnN0 IGNoYXIgKmludGVyZmFjZSkKIAkJCQkuYWlfc29ja3R5cGUgPSBTT0NLX0RHUkFNLAogCQkJ CS5haV9wcm90b2NvbCA9IElQUFJPVE9fVURQCiAJCQl9OwotCQkJaWYgKCFzdHJsZW4odmFs dWUpKQorCQkJaWYgKCFzdHJsZW4odmFsdWUpKSB7CiAJCQkJYnJlYWs7CisJCQl9CiAJCQlp ZiAodmFsdWVbMF0gPT0gJ1snKSB7CiAJCQkJYmVnaW4gPSAmdmFsdWVbMV07CiAJCQkJZW5k ID0gc3RyY2hyKHZhbHVlLCAnXScpOwpAQCAtMzgyLDkgKzQwMiw5IEBAIHN0YXRpYyBpbnQg dXNlcnNwYWNlX2dldF9kZXZpY2Uoc3RydWN0IHdnZGV2aWNlICoqb3V0LCBjb25zdCBjaGFy ICppbnRlcmZhY2UpCiAJCQkJZ290byBlcnI7CiAJCQl9CiAJCQlpZiAoKHJlc29sdmVkLT5h aV9mYW1pbHkgPT0gQUZfSU5FVCAmJiByZXNvbHZlZC0+YWlfYWRkcmxlbiA9PSBzaXplb2Yo c3RydWN0IHNvY2thZGRyX2luKSkgfHwKLQkJCSAgICAocmVzb2x2ZWQtPmFpX2ZhbWlseSA9 PSBBRl9JTkVUNiAmJiByZXNvbHZlZC0+YWlfYWRkcmxlbiA9PSBzaXplb2Yoc3RydWN0IHNv Y2thZGRyX2luNikpKQorCQkJICAgIChyZXNvbHZlZC0+YWlfZmFtaWx5ID09IEFGX0lORVQ2 ICYmIHJlc29sdmVkLT5haV9hZGRybGVuID09IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42 KSkpIHsKIAkJCQltZW1jcHkoJnBlZXItPmVuZHBvaW50LmFkZHIsIHJlc29sdmVkLT5haV9h ZGRyLCByZXNvbHZlZC0+YWlfYWRkcmxlbik7Ci0JCQllbHNlICB7CisJCQl9IGVsc2Ugewog CQkJCWZyZWVhZGRyaW5mbyhyZXNvbHZlZCk7CiAJCQkJYnJlYWs7CiAJCQl9CkBAIC0zOTYs NDQgKzQxNiw1MCBAQCBzdGF0aWMgaW50IHVzZXJzcGFjZV9nZXRfZGV2aWNlKHN0cnVjdCB3 Z2RldmljZSAqKm91dCwgY29uc3QgY2hhciAqaW50ZXJmYWNlKQogCQkJc3RydWN0IHdnYWxs b3dlZGlwICpuZXdfYWxsb3dlZGlwOwogCQkJY2hhciAqZW5kLCAqbWFzayA9IHZhbHVlLCAq aXAgPSBzdHJzZXAoJm1hc2ssICIvIik7CiAKLQkJCWlmICghbWFzayB8fCAhaXNkaWdpdCht YXNrWzBdKSkKKwkJCWlmICghbWFzayB8fCAhaXNkaWdpdChtYXNrWzBdKSkgewogCQkJCWJy ZWFrOworCQkJfQogCQkJbmV3X2FsbG93ZWRpcCA9IGNhbGxvYygxLCBzaXplb2YoKm5ld19h bGxvd2VkaXApKTsKIAkJCWlmICghbmV3X2FsbG93ZWRpcCkgewogCQkJCXJldCA9IC1FTk9N RU07CiAJCQkJZ290byBlcnI7CiAJCQl9Ci0JCQlpZiAoYWxsb3dlZGlwKQorCQkJaWYgKGFs bG93ZWRpcCkgewogCQkJCWFsbG93ZWRpcC0+bmV4dF9hbGxvd2VkaXAgPSBuZXdfYWxsb3dl ZGlwOwotCQkJZWxzZQorCQkJfSBlbHNlIHsKIAkJCQlwZWVyLT5maXJzdF9hbGxvd2VkaXAg PSBuZXdfYWxsb3dlZGlwOworCQkJfQogCQkJYWxsb3dlZGlwID0gbmV3X2FsbG93ZWRpcDsK IAkJCWFsbG93ZWRpcC0+ZmFtaWx5ID0gQUZfVU5TUEVDOwogCQkJaWYgKHN0cmNocihpcCwg JzonKSkgewotCQkJCWlmIChpbmV0X3B0b24oQUZfSU5FVDYsIGlwLCAmYWxsb3dlZGlwLT5p cDYpID09IDEpCisJCQkJaWYgKGluZXRfcHRvbihBRl9JTkVUNiwgaXAsICZhbGxvd2VkaXAt PmlwNikgPT0gMSkgewogCQkJCQlhbGxvd2VkaXAtPmZhbWlseSA9IEFGX0lORVQ2OworCQkJ CX0KIAkJCX0gZWxzZSB7Ci0JCQkJaWYgKGluZXRfcHRvbihBRl9JTkVULCBpcCwgJmFsbG93 ZWRpcC0+aXA0KSA9PSAxKQorCQkJCWlmIChpbmV0X3B0b24oQUZfSU5FVCwgaXAsICZhbGxv d2VkaXAtPmlwNCkgPT0gMSkgewogCQkJCQlhbGxvd2VkaXAtPmZhbWlseSA9IEFGX0lORVQ7 CisJCQkJfQogCQkJfQogCQkJYWxsb3dlZGlwLT5jaWRyID0gc3RydG91bChtYXNrLCAmZW5k LCAxMCk7Ci0JCQlpZiAoKmVuZCB8fCBhbGxvd2VkaXAtPmZhbWlseSA9PSBBRl9VTlNQRUMg fHwgKGFsbG93ZWRpcC0+ZmFtaWx5ID09IEFGX0lORVQ2ICYmIGFsbG93ZWRpcC0+Y2lkciA+ IDEyOCkgfHwgKGFsbG93ZWRpcC0+ZmFtaWx5ID09IEFGX0lORVQgJiYgYWxsb3dlZGlwLT5j aWRyID4gMzIpKQorCQkJaWYgKCplbmQgfHwgYWxsb3dlZGlwLT5mYW1pbHkgPT0gQUZfVU5T UEVDIHx8IChhbGxvd2VkaXAtPmZhbWlseSA9PSBBRl9JTkVUNiAmJiBhbGxvd2VkaXAtPmNp ZHIgPiAxMjgpIHx8IChhbGxvd2VkaXAtPmZhbWlseSA9PSBBRl9JTkVUICYmIGFsbG93ZWRp cC0+Y2lkciA+IDMyKSkgewogCQkJCWJyZWFrOwotCQl9IGVsc2UgaWYgKHBlZXIgJiYgIXN0 cmNtcChrZXksICJsYXN0X2hhbmRzaGFrZV90aW1lX3NlYyIpKQorCQkJfQorCQl9IGVsc2Ug aWYgKHBlZXIgJiYgIXN0cmNtcChrZXksICJsYXN0X2hhbmRzaGFrZV90aW1lX3NlYyIpKSB7 CiAJCQlwZWVyLT5sYXN0X2hhbmRzaGFrZV90aW1lLnR2X3NlYyA9IE5VTSgweDdmZmZmZmZm ZmZmZmZmZmZVTEwpOwotCQllbHNlIGlmIChwZWVyICYmICFzdHJjbXAoa2V5LCAibGFzdF9o YW5kc2hha2VfdGltZV9uc2VjIikpCisJCX0gZWxzZSBpZiAocGVlciAmJiAhc3RyY21wKGtl eSwgImxhc3RfaGFuZHNoYWtlX3RpbWVfbnNlYyIpKSB7CiAJCQlwZWVyLT5sYXN0X2hhbmRz aGFrZV90aW1lLnR2X25zZWMgPSBOVU0oMHg3ZmZmZmZmZmZmZmZmZmZmVUxMKTsKLQkJZWxz ZSBpZiAocGVlciAmJiAhc3RyY21wKGtleSwgInJ4X2J5dGVzIikpCisJCX0gZWxzZSBpZiAo cGVlciAmJiAhc3RyY21wKGtleSwgInJ4X2J5dGVzIikpIHsKIAkJCXBlZXItPnJ4X2J5dGVz ID0gTlVNKDB4ZmZmZmZmZmZmZmZmZmZmZlVMTCk7Ci0JCWVsc2UgaWYgKHBlZXIgJiYgIXN0 cmNtcChrZXksICJ0eF9ieXRlcyIpKQorCQl9IGVsc2UgaWYgKHBlZXIgJiYgIXN0cmNtcChr ZXksICJ0eF9ieXRlcyIpKSB7CiAJCQlwZWVyLT50eF9ieXRlcyA9IE5VTSgweGZmZmZmZmZm ZmZmZmZmZmZVTEwpOwotCQllbHNlIGlmICghc3RyY21wKGtleSwgImVycm5vIikpCisJCX0g ZWxzZSBpZiAoIXN0cmNtcChrZXksICJlcnJubyIpKSB7CiAJCQlyZXQgPSAtTlVNKDB4N2Zm ZmZmZmZVKTsKKwkJfQogCX0KIAlyZXQgPSAtRVBST1RPOwogZXJyOgogCWZyZWUoa2V5KTsK LQlmcmVlX3dnZGV2aWNlKGRldik7CisJZnJlZV93Z2RldmljZShjb25mKTsKIAkqb3V0ID0g TlVMTDsKIAlmY2xvc2UoZik7CiAJZXJybm8gPSAtcmV0OwpAQCAtNTUxLDcgKzU3Nyw3IEBA IGNsZWFudXA6CiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGludCBrZXJuZWxfc2V0X2Rl dmljZShzdHJ1Y3Qgd2dkZXZpY2UgKmRldikKK3N0YXRpYyBpbnQga2VybmVsX3NldF9kZXZp Y2UoY29uc3Qgc3RydWN0IHdnZGV2aWNlICpuZXdjb25mKQogewogCWludCByZXQgPSAwOwog CXN0cnVjdCB3Z3BlZXIgKnBlZXIgPSBOVUxMOwpAQCAtNTYxLDMyICs1ODcsMzkgQEAgc3Rh dGljIGludCBrZXJuZWxfc2V0X2RldmljZShzdHJ1Y3Qgd2dkZXZpY2UgKmRldikKIAlzdHJ1 Y3QgbW5sZ19zb2NrZXQgKm5sZzsKIAogCW5sZyA9IG1ubGdfc29ja2V0X29wZW4oV0dfR0VO TF9OQU1FLCBXR19HRU5MX1ZFUlNJT04pOwotCWlmICghbmxnKQorCWlmICghbmxnKSB7CiAJ CXJldHVybiAtZXJybm87CisJfQogCiBhZ2FpbjoKIAlubGggPSBtbmxnX21zZ19wcmVwYXJl KG5sZywgV0dfQ01EX1NFVF9ERVZJQ0UsIE5MTV9GX1JFUVVFU1QgfCBOTE1fRl9BQ0spOwot CW1ubF9hdHRyX3B1dF9zdHJ6KG5saCwgV0dERVZJQ0VfQV9JRk5BTUUsIGRldi0+bmFtZSk7 CisJbW5sX2F0dHJfcHV0X3N0cnoobmxoLCBXR0RFVklDRV9BX0lGTkFNRSwgbmV3Y29uZi0+ bmFtZSk7CiAKIAlpZiAoIXBlZXIpIHsKIAkJdWludDMyX3QgZmxhZ3MgPSAwOwogCi0JCWlm IChkZXYtPmZsYWdzICYgV0dERVZJQ0VfSEFTX1BSSVZBVEVfS0VZKQotCQkJbW5sX2F0dHJf cHV0KG5saCwgV0dERVZJQ0VfQV9QUklWQVRFX0tFWSwgc2l6ZW9mKGRldi0+cHJpdmF0ZV9r ZXkpLCBkZXYtPnByaXZhdGVfa2V5KTsKLQkJaWYgKGRldi0+ZmxhZ3MgJiBXR0RFVklDRV9I QVNfTElTVEVOX1BPUlQpCi0JCQltbmxfYXR0cl9wdXRfdTE2KG5saCwgV0dERVZJQ0VfQV9M SVNURU5fUE9SVCwgZGV2LT5saXN0ZW5fcG9ydCk7Ci0JCWlmIChkZXYtPmZsYWdzICYgV0dE RVZJQ0VfSEFTX0ZXTUFSSykKLQkJCW1ubF9hdHRyX3B1dF91MzIobmxoLCBXR0RFVklDRV9B X0ZXTUFSSywgZGV2LT5md21hcmspOwotCQlpZiAoZGV2LT5mbGFncyAmIFdHREVWSUNFX1JF UExBQ0VfUEVFUlMpCisJCWlmIChuZXdjb25mLT5mbGFncyAmIFdHREVWSUNFX0hBU19QUklW QVRFX0tFWSkgeworCQkJbW5sX2F0dHJfcHV0KG5saCwgV0dERVZJQ0VfQV9QUklWQVRFX0tF WSwgc2l6ZW9mKG5ld2NvbmYtPnByaXZhdGVfa2V5KSwgbmV3Y29uZi0+cHJpdmF0ZV9rZXkp OworCQl9CisJCWlmIChuZXdjb25mLT5mbGFncyAmIFdHREVWSUNFX0hBU19MSVNURU5fUE9S VCkgeworCQkJbW5sX2F0dHJfcHV0X3UxNihubGgsIFdHREVWSUNFX0FfTElTVEVOX1BPUlQs IG5ld2NvbmYtPmxpc3Rlbl9wb3J0KTsKKwkJfQorCQlpZiAobmV3Y29uZi0+ZmxhZ3MgJiBX R0RFVklDRV9IQVNfRldNQVJLKSB7CisJCQltbmxfYXR0cl9wdXRfdTMyKG5saCwgV0dERVZJ Q0VfQV9GV01BUkssIG5ld2NvbmYtPmZ3bWFyayk7CisJCX0KKwkJaWYgKG5ld2NvbmYtPmZs YWdzICYgV0dERVZJQ0VfUkVQTEFDRV9QRUVSUykgewogCQkJZmxhZ3MgfD0gV0dERVZJQ0Vf Rl9SRVBMQUNFX1BFRVJTOwotCQlpZiAoZmxhZ3MpCisJCX0KKwkJaWYgKGZsYWdzKSB7CiAJ CQltbmxfYXR0cl9wdXRfdTMyKG5saCwgV0dERVZJQ0VfQV9GTEFHUywgZmxhZ3MpOworCQl9 CiAJfQotCWlmICghZGV2LT5maXJzdF9wZWVyKQorCWlmICghbmV3Y29uZi0+Zmlyc3RfcGVl cikgewogCQlnb3RvIHNlbmQ7CisJfQogCXBlZXJzX25lc3QgPSBwZWVyX25lc3QgPSBhbGxv d2VkaXBzX25lc3QgPSBhbGxvd2VkaXBfbmVzdCA9IE5VTEw7CiAJcGVlcnNfbmVzdCA9IG1u bF9hdHRyX25lc3Rfc3RhcnQobmxoLCBXR0RFVklDRV9BX1BFRVJTKTsKLQlmb3IgKHBlZXIg PSBwZWVyID8gcGVlciA6IGRldi0+Zmlyc3RfcGVlcjsgcGVlcjsgcGVlciA9IHBlZXItPm5l eHRfcGVlcikgeworCWZvciAocGVlciA9IHBlZXIgPyBwZWVyIDogbmV3Y29uZi0+Zmlyc3Rf cGVlcjsgcGVlcjsgcGVlciA9IHBlZXItPm5leHRfcGVlcikgewogCQl1aW50MzJfdCBmbGFn cyA9IDA7CiAKIAkJcGVlcl9uZXN0ID0gbW5sX2F0dHJfbmVzdF9zdGFydF9jaGVjayhubGgs IFNPQ0tFVF9CVUZGRVJfU0laRSwgMCk7CkBAIC04ODUsMjEgKzkxOCwyMiBAQCBzdGF0aWMg dm9pZCBjb2FsZXNjZV9wZWVycyhzdHJ1Y3Qgd2dkZXZpY2UgKmRldmljZSkKIAl9CiB9CiAK LXN0YXRpYyBpbnQga2VybmVsX2dldF9kZXZpY2Uoc3RydWN0IHdnZGV2aWNlICoqZGV2aWNl LCBjb25zdCBjaGFyICppbnRlcmZhY2UpCitzdGF0aWMgaW50IGtlcm5lbF9mZXRjaF9jb25m KHN0cnVjdCB3Z2RldmljZSAqKmNvbmYsIGNvbnN0IGNoYXIgKmludGVyZmFjZSkKIHsKIAlp bnQgcmV0ID0gMDsKIAlzdHJ1Y3Qgbmxtc2doZHIgKm5saDsKIAlzdHJ1Y3QgbW5sZ19zb2Nr ZXQgKm5sZzsKIAogdHJ5X2FnYWluOgotCSpkZXZpY2UgPSBjYWxsb2MoMSwgc2l6ZW9mKCoq ZGV2aWNlKSk7Ci0JaWYgKCEqZGV2aWNlKQorCSpjb25mID0gY2FsbG9jKDEsIHNpemVvZigq KmNvbmYpKTsKKwlpZiAoISpjb25mKSB7CiAJCXJldHVybiAtZXJybm87CisJfQogCiAJbmxn ID0gbW5sZ19zb2NrZXRfb3BlbihXR19HRU5MX05BTUUsIFdHX0dFTkxfVkVSU0lPTik7CiAJ aWYgKCFubGcpIHsKLQkJZnJlZV93Z2RldmljZSgqZGV2aWNlKTsKLQkJKmRldmljZSA9IE5V TEw7CisJCWZyZWVfd2dkZXZpY2UoKmNvbmYpOworCQkqY29uZiA9IE5VTEw7CiAJCXJldHVy biAtZXJybm87CiAJfQogCkBAIC05MTAsMjAgKzk0NCwyMiBAQCB0cnlfYWdhaW46CiAJCWdv dG8gb3V0OwogCX0KIAllcnJubyA9IDA7Ci0JaWYgKG1ubGdfc29ja2V0X3JlY3ZfcnVuKG5s ZywgcmVhZF9kZXZpY2VfY2IsICpkZXZpY2UpIDwgMCkgeworCWlmIChtbmxnX3NvY2tldF9y ZWN2X3J1bihubGcsIHJlYWRfZGV2aWNlX2NiLCAqY29uZikgPCAwKSB7CiAJCXJldCA9IGVy cm5vID8gLWVycm5vIDogLUVJTlZBTDsKIAkJZ290byBvdXQ7CiAJfQotCWNvYWxlc2NlX3Bl ZXJzKCpkZXZpY2UpOworCWNvYWxlc2NlX3BlZXJzKCpjb25mKTsKIAogb3V0OgotCWlmIChu bGcpCisJaWYgKG5sZykgewogCQltbmxnX3NvY2tldF9jbG9zZShubGcpOworCX0KIAlpZiAo cmV0KSB7Ci0JCWZyZWVfd2dkZXZpY2UoKmRldmljZSk7Ci0JCWlmIChyZXQgPT0gLUVJTlRS KQorCQlmcmVlX3dnZGV2aWNlKCpjb25mKTsKKwkJaWYgKHJldCA9PSAtRUlOVFIpIHsKIAkJ CWdvdG8gdHJ5X2FnYWluOwotCQkqZGV2aWNlID0gTlVMTDsKKwkJfQorCQkqY29uZiA9IE5V TEw7CiAJfQogCWVycm5vID0gLXJldDsKIAlyZXR1cm4gcmV0OwpAQCAtOTU5LDI0ICs5OTUs MjYgQEAgY2xlYW51cDoKIAlyZXR1cm4gYnVmZmVyLmJ1ZmZlcjsKIH0KIAotaW50IGlwY19n ZXRfZGV2aWNlKHN0cnVjdCB3Z2RldmljZSAqKmRldiwgY29uc3QgY2hhciAqaW50ZXJmYWNl KQoraW50IGlwY19mZXRjaF9jb25mKHN0cnVjdCB3Z2RldmljZSAqKmNvbmYsIGNvbnN0IGNo YXIgKmludGVyZmFjZSkKIHsKICNpZmRlZiBfX2xpbnV4X18KLQlpZiAodXNlcnNwYWNlX2hh c193aXJlZ3VhcmRfaW50ZXJmYWNlKGludGVyZmFjZSkpCi0JCXJldHVybiB1c2Vyc3BhY2Vf Z2V0X2RldmljZShkZXYsIGludGVyZmFjZSk7Ci0JcmV0dXJuIGtlcm5lbF9nZXRfZGV2aWNl KGRldiwgaW50ZXJmYWNlKTsKKwlpZiAodXNlcnNwYWNlX2hhc193aXJlZ3VhcmRfaW50ZXJm YWNlKGludGVyZmFjZSkpIHsKKwkJcmV0dXJuIHVzZXJzcGFjZV9mZXRjaF9jb25mKGNvbmYs IGludGVyZmFjZSk7CisJfQorCXJldHVybiBrZXJuZWxfZmV0Y2hfY29uZihjb25mLCBpbnRl cmZhY2UpOwogI2Vsc2UKLQlyZXR1cm4gdXNlcnNwYWNlX2dldF9kZXZpY2UoZGV2LCBpbnRl cmZhY2UpOworCXJldHVybiB1c2Vyc3BhY2VfZmV0Y2hfY29uZihjb25mLCBpbnRlcmZhY2Up OwogI2VuZGlmCiB9CiAKLWludCBpcGNfc2V0X2RldmljZShzdHJ1Y3Qgd2dkZXZpY2UgKmRl dikKK2ludCBpcGNfc2V0X2RldmljZShjb25zdCBzdHJ1Y3Qgd2dkZXZpY2UgKm5ld2NvbmYp CiB7CiAjaWZkZWYgX19saW51eF9fCi0JaWYgKHVzZXJzcGFjZV9oYXNfd2lyZWd1YXJkX2lu dGVyZmFjZShkZXYtPm5hbWUpKQotCQlyZXR1cm4gdXNlcnNwYWNlX3NldF9kZXZpY2UoZGV2 KTsKLQlyZXR1cm4ga2VybmVsX3NldF9kZXZpY2UoZGV2KTsKKwlpZiAodXNlcnNwYWNlX2hh c193aXJlZ3VhcmRfaW50ZXJmYWNlKG5ld2NvbmYtPm5hbWUpKSB7CisJCXJldHVybiB1c2Vy c3BhY2Vfc2V0X2RldmljZShuZXdjb25mKTsKKwl9CisJcmV0dXJuIGtlcm5lbF9zZXRfZGV2 aWNlKG5ld2NvbmYpOwogI2Vsc2UKLQlyZXR1cm4gdXNlcnNwYWNlX3NldF9kZXZpY2UoZGV2 KTsKKwlyZXR1cm4gdXNlcnNwYWNlX3NldF9kZXZpY2UobmV3Y29uZik7CiAjZW5kaWYKIH0K ZGlmZiAtLWdpdCBhL3NyYy90b29scy9pcGMuaCBiL3NyYy90b29scy9pcGMuaAppbmRleCA2 YzU2NGJlLi5iOTkyM2QzIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvaXBjLmgKKysrIGIvc3Jj L3Rvb2xzL2lwYy5oCkBAIC0xMCw4ICsxMCw4IEBACiAKIHN0cnVjdCB3Z2RldmljZTsKIAot aW50IGlwY19zZXRfZGV2aWNlKHN0cnVjdCB3Z2RldmljZSAqZGV2KTsKLWludCBpcGNfZ2V0 X2RldmljZShzdHJ1Y3Qgd2dkZXZpY2UgKipkZXYsIGNvbnN0IGNoYXIgKmludGVyZmFjZSk7 CitpbnQgaXBjX3NldF9kZXZpY2UoY29uc3Qgc3RydWN0IHdnZGV2aWNlICpjb25mKTsKK2lu dCBpcGNfZmV0Y2hfY29uZihzdHJ1Y3Qgd2dkZXZpY2UgKipjb25mLCBjb25zdCBjaGFyICpp bnRlcmZhY2UpOwogY2hhciAqaXBjX2xpc3RfZGV2aWNlcyh2b2lkKTsKIAogI2VuZGlmCmRp ZmYgLS1naXQgYS9zcmMvdG9vbHMvc2hvdy5jIGIvc3JjL3Rvb2xzL3Nob3cuYwppbmRleCA0 Y2MzNGFiLi5mYzYzZDNjIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvc2hvdy5jCisrKyBiL3Ny Yy90b29scy9zaG93LmMKQEAgLTM5OCwyNCArMzk4LDI1IEBAIGludCBzaG93X21haW4oaW50 IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJcmV0ID0gISEqaW50ZXJmYWNlczsKIAkJaW50ZXJm YWNlID0gaW50ZXJmYWNlczsKIAkJZm9yIChzaXplX3QgbGVuID0gMDsgKGxlbiA9IHN0cmxl bihpbnRlcmZhY2UpKTsgaW50ZXJmYWNlICs9IGxlbiArIDEpIHsKLQkJCXN0cnVjdCB3Z2Rl dmljZSAqZGV2aWNlID0gTlVMTDsKKwkJCXN0cnVjdCB3Z2RldmljZSAqY29uZiA9IE5VTEw7 CiAKLQkJCWlmIChpcGNfZ2V0X2RldmljZSgmZGV2aWNlLCBpbnRlcmZhY2UpIDwgMCkgewor CQkJaWYgKGlwY19mZXRjaF9jb25mKCZjb25mLCBpbnRlcmZhY2UpIDwgMCkgewogCQkJCWZw cmludGYoc3RkZXJyLCAiVW5hYmxlIHRvIGFjY2VzcyBpbnRlcmZhY2UgJXM6ICVzXG4iLCBp bnRlcmZhY2UsIHN0cmVycm9yKGVycm5vKSk7CiAJCQkJY29udGludWU7CiAJCQl9CiAJCQlp ZiAoYXJnYyA9PSAzKSB7Ci0JCQkJaWYgKCF1Z2x5X3ByaW50KGRldmljZSwgYXJndlsyXSwg dHJ1ZSkpIHsKKwkJCQlpZiAoIXVnbHlfcHJpbnQoY29uZiwgYXJndlsyXSwgdHJ1ZSkpIHsK IAkJCQkJcmV0ID0gMTsKLQkJCQkJZnJlZV93Z2RldmljZShkZXZpY2UpOworCQkJCQlmcmVl X3dnZGV2aWNlKGNvbmYpOwogCQkJCQlicmVhazsKIAkJCQl9CiAJCQl9IGVsc2UgewotCQkJ CXByZXR0eV9wcmludChkZXZpY2UpOwotCQkJCWlmIChzdHJsZW4oaW50ZXJmYWNlICsgbGVu ICsgMSkpCisJCQkJcHJldHR5X3ByaW50KGNvbmYpOworCQkJCWlmIChzdHJsZW4oaW50ZXJm YWNlICsgbGVuICsgMSkpIHsKIAkJCQkJcHJpbnRmKCJcbiIpOworCQkJCX0KIAkJCX0KLQkJ CWZyZWVfd2dkZXZpY2UoZGV2aWNlKTsKKwkJCWZyZWVfd2dkZXZpY2UoY29uZik7CiAJCQly ZXQgPSAwOwogCQl9CiAJCWZyZWUoaW50ZXJmYWNlcyk7CkBAIC00MzIsMjQgKzQzMywyNyBA QCBpbnQgc2hvd19tYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQlyZXR1cm4gMTsK IAkJfQogCQlpbnRlcmZhY2UgPSBpbnRlcmZhY2VzOwotCQlmb3IgKHNpemVfdCBsZW4gPSAw OyAobGVuID0gc3RybGVuKGludGVyZmFjZSkpOyBpbnRlcmZhY2UgKz0gbGVuICsgMSkKKwkJ Zm9yIChzaXplX3QgbGVuID0gMDsgKGxlbiA9IHN0cmxlbihpbnRlcmZhY2UpKTsgaW50ZXJm YWNlICs9IGxlbiArIDEpIHsKIAkJCXByaW50ZigiJXMlYyIsIGludGVyZmFjZSwgc3RybGVu KGludGVyZmFjZSArIGxlbiArIDEpID8gJyAnIDogJ1xuJyk7CisJCX0KIAkJZnJlZShpbnRl cmZhY2VzKTsKLQl9IGVsc2UgaWYgKGFyZ2MgPT0gMiAmJiAoIXN0cmNtcChhcmd2WzFdLCAi LWgiKSB8fCAhc3RyY21wKGFyZ3ZbMV0sICItLWhlbHAiKSB8fCAhc3RyY21wKGFyZ3ZbMV0s ICJoZWxwIikpKQorCX0gZWxzZSBpZiAoYXJnYyA9PSAyICYmICghc3RyY21wKGFyZ3ZbMV0s ICItaCIpIHx8ICFzdHJjbXAoYXJndlsxXSwgIi0taGVscCIpIHx8ICFzdHJjbXAoYXJndlsx XSwgImhlbHAiKSkpIHsKIAkJc2hvd191c2FnZSgpOwotCWVsc2UgewotCQlzdHJ1Y3Qgd2dk ZXZpY2UgKmRldmljZSA9IE5VTEw7CisJfSBlbHNlIHsKKwkJc3RydWN0IHdnZGV2aWNlICpj b25mID0gTlVMTDsKIAotCQlpZiAoaXBjX2dldF9kZXZpY2UoJmRldmljZSwgYXJndlsxXSkg PCAwKSB7CisJCWlmIChpcGNfZmV0Y2hfY29uZigmY29uZiwgYXJndlsxXSkgPCAwKSB7CiAJ CQlwZXJyb3IoIlVuYWJsZSB0byBhY2Nlc3MgaW50ZXJmYWNlIik7CiAJCQlyZXR1cm4gMTsK IAkJfQogCQlpZiAoYXJnYyA9PSAzKSB7Ci0JCQlpZiAoIXVnbHlfcHJpbnQoZGV2aWNlLCBh cmd2WzJdLCBmYWxzZSkpCisJCQlpZiAoIXVnbHlfcHJpbnQoY29uZiwgYXJndlsyXSwgZmFs c2UpKSB7CiAJCQkJcmV0ID0gMTsKLQkJfSBlbHNlCi0JCQlwcmV0dHlfcHJpbnQoZGV2aWNl KTsKLQkJZnJlZV93Z2RldmljZShkZXZpY2UpOworCQkJfQorCQl9IGVsc2UgeworCQkJcHJl dHR5X3ByaW50KGNvbmYpOworCQl9CisJCWZyZWVfd2dkZXZpY2UoY29uZik7CiAJfQogCXJl dHVybiByZXQ7CiB9CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvc2hvd2NvbmYuYyBiL3NyYy90 b29scy9zaG93Y29uZi5jCmluZGV4IGFkNzZiN2YuLmU3YjBiNWUgMTAwNjQ0Ci0tLSBhL3Ny Yy90b29scy9zaG93Y29uZi5jCisrKyBiL3NyYy90b29scy9zaG93Y29uZi5jCkBAIC0yMiw3 ICsyMiw3IEBAIGludCBzaG93Y29uZl9tYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiB7 CiAJY2hhciBiYXNlNjRbV0dfS0VZX0xFTl9CQVNFNjRdOwogCWNoYXIgaXBbSU5FVDZfQURE UlNUUkxFTl07Ci0Jc3RydWN0IHdnZGV2aWNlICpkZXZpY2UgPSBOVUxMOworCXN0cnVjdCB3 Z2RldmljZSAqY29uZiA9IE5VTEw7CiAJc3RydWN0IHdncGVlciAqcGVlcjsKIAlzdHJ1Y3Qg d2dhbGxvd2VkaXAgKmFsbG93ZWRpcDsKIAlpbnQgcmV0ID0gMTsKQEAgLTMyLDcyICszMiw4 NCBAQCBpbnQgc2hvd2NvbmZfbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQlyZXR1 cm4gMTsKIAl9CiAKLQlpZiAoaXBjX2dldF9kZXZpY2UoJmRldmljZSwgYXJndlsxXSkpIHsK KwlpZiAoaXBjX2ZldGNoX2NvbmYoJmNvbmYsIGFyZ3ZbMV0pKSB7CiAJCXBlcnJvcigiVW5h YmxlIHRvIGFjY2VzcyBpbnRlcmZhY2UiKTsKIAkJZ290byBjbGVhbnVwOwogCX0KIAogCXBy aW50ZigiW0ludGVyZmFjZV1cbiIpOwotCWlmIChkZXZpY2UtPmxpc3Rlbl9wb3J0KQotCQlw cmludGYoIkxpc3RlblBvcnQgPSAldVxuIiwgZGV2aWNlLT5saXN0ZW5fcG9ydCk7Ci0JaWYg KGRldmljZS0+ZndtYXJrKQotCQlwcmludGYoIkZ3TWFyayA9IDB4JXhcbiIsIGRldmljZS0+ ZndtYXJrKTsKLQlpZiAoZGV2aWNlLT5mbGFncyAmIFdHREVWSUNFX0hBU19QUklWQVRFX0tF WSkgewotCQlrZXlfdG9fYmFzZTY0KGJhc2U2NCwgZGV2aWNlLT5wcml2YXRlX2tleSk7CisJ aWYgKGNvbmYtPmxpc3Rlbl9wb3J0KSB7CisJCXByaW50ZigiTGlzdGVuUG9ydCA9ICV1XG4i LCBjb25mLT5saXN0ZW5fcG9ydCk7CisJfQorCWlmIChjb25mLT5md21hcmspIHsKKwkJcHJp bnRmKCJGd01hcmsgPSAweCV4XG4iLCBjb25mLT5md21hcmspOworCX0KKwlpZiAoY29uZi0+ ZmxhZ3MgJiBXR0RFVklDRV9IQVNfUFJJVkFURV9LRVkpIHsKKwkJa2V5X3RvX2Jhc2U2NChi YXNlNjQsIGNvbmYtPnByaXZhdGVfa2V5KTsKIAkJcHJpbnRmKCJQcml2YXRlS2V5ID0gJXNc biIsIGJhc2U2NCk7CiAJfQogCXByaW50ZigiXG4iKTsKLQlmb3JfZWFjaF93Z3BlZXIoZGV2 aWNlLCBwZWVyKSB7CisJZm9yX2VhY2hfd2dwZWVyKGNvbmYsIHBlZXIpIHsKIAkJa2V5X3Rv X2Jhc2U2NChiYXNlNjQsIHBlZXItPnB1YmxpY19rZXkpOwogCQlwcmludGYoIltQZWVyXVxu UHVibGljS2V5ID0gJXNcbiIsIGJhc2U2NCk7CiAJCWlmIChwZWVyLT5mbGFncyAmIFdHUEVF Ul9IQVNfUFJFU0hBUkVEX0tFWSkgewogCQkJa2V5X3RvX2Jhc2U2NChiYXNlNjQsIHBlZXIt PnByZXNoYXJlZF9rZXkpOwogCQkJcHJpbnRmKCJQcmVzaGFyZWRLZXkgPSAlc1xuIiwgYmFz ZTY0KTsKIAkJfQotCQlpZiAocGVlci0+Zmlyc3RfYWxsb3dlZGlwKQorCQlpZiAocGVlci0+ Zmlyc3RfYWxsb3dlZGlwKSB7CiAJCQlwcmludGYoIkFsbG93ZWRJUHMgPSAiKTsKKwkJfQog CQlmb3JfZWFjaF93Z2FsbG93ZWRpcChwZWVyLCBhbGxvd2VkaXApIHsKIAkJCWlmIChhbGxv d2VkaXAtPmZhbWlseSA9PSBBRl9JTkVUKSB7Ci0JCQkJaWYgKCFpbmV0X250b3AoQUZfSU5F VCwgJmFsbG93ZWRpcC0+aXA0LCBpcCwgSU5FVDZfQUREUlNUUkxFTikpCisJCQkJaWYgKCFp bmV0X250b3AoQUZfSU5FVCwgJmFsbG93ZWRpcC0+aXA0LCBpcCwgSU5FVDZfQUREUlNUUkxF TikpIHsKIAkJCQkJY29udGludWU7CisJCQkJfQogCQkJfSBlbHNlIGlmIChhbGxvd2VkaXAt PmZhbWlseSA9PSBBRl9JTkVUNikgewotCQkJCWlmICghaW5ldF9udG9wKEFGX0lORVQ2LCAm YWxsb3dlZGlwLT5pcDYsIGlwLCBJTkVUNl9BRERSU1RSTEVOKSkKKwkJCQlpZiAoIWluZXRf bnRvcChBRl9JTkVUNiwgJmFsbG93ZWRpcC0+aXA2LCBpcCwgSU5FVDZfQUREUlNUUkxFTikp IHsKIAkJCQkJY29udGludWU7Ci0JCQl9IGVsc2UKKwkJCQl9CisJCQl9IGVsc2UgewogCQkJ CWNvbnRpbnVlOworCQkJfQogCQkJcHJpbnRmKCIlcy8lZCIsIGlwLCBhbGxvd2VkaXAtPmNp ZHIpOwotCQkJaWYgKGFsbG93ZWRpcC0+bmV4dF9hbGxvd2VkaXApCisJCQlpZiAoYWxsb3dl ZGlwLT5uZXh0X2FsbG93ZWRpcCkgewogCQkJCXByaW50ZigiLCAiKTsKKwkJCX0KIAkJfQot CQlpZiAocGVlci0+Zmlyc3RfYWxsb3dlZGlwKQorCQlpZiAocGVlci0+Zmlyc3RfYWxsb3dl ZGlwKSB7CiAJCQlwcmludGYoIlxuIik7CisJCX0KIAogCQlpZiAocGVlci0+ZW5kcG9pbnQu YWRkci5zYV9mYW1pbHkgPT0gQUZfSU5FVCB8fCBwZWVyLT5lbmRwb2ludC5hZGRyLnNhX2Zh bWlseSA9PSBBRl9JTkVUNikgewogCQkJY2hhciBob3N0WzQwOTYgKyAxXTsKIAkJCWNoYXIg c2VydmljZVs1MTIgKyAxXTsKIAkJCXNvY2tsZW5fdCBhZGRyX2xlbiA9IDA7CiAKLQkJCWlm IChwZWVyLT5lbmRwb2ludC5hZGRyLnNhX2ZhbWlseSA9PSBBRl9JTkVUKQorCQkJaWYgKHBl ZXItPmVuZHBvaW50LmFkZHIuc2FfZmFtaWx5ID09IEFGX0lORVQpIHsKIAkJCQlhZGRyX2xl biA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pOwotCQkJZWxzZSBpZiAocGVlci0+ZW5k cG9pbnQuYWRkci5zYV9mYW1pbHkgPT0gQUZfSU5FVDYpCisJCQl9IGVsc2UgaWYgKHBlZXIt PmVuZHBvaW50LmFkZHIuc2FfZmFtaWx5ID09IEFGX0lORVQ2KSB7CiAJCQkJYWRkcl9sZW4g PSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNik7CisJCQl9CiAJCQlpZiAoIWdldG5hbWVp bmZvKCZwZWVyLT5lbmRwb2ludC5hZGRyLCBhZGRyX2xlbiwgaG9zdCwgc2l6ZW9mKGhvc3Qp LCBzZXJ2aWNlLCBzaXplb2Yoc2VydmljZSksIE5JX0RHUkFNIHwgTklfTlVNRVJJQ1NFUlYg fCBOSV9OVU1FUklDSE9TVCkpIHsKLQkJCQlpZiAocGVlci0+ZW5kcG9pbnQuYWRkci5zYV9m YW1pbHkgPT0gQUZfSU5FVDYgJiYgc3RyY2hyKGhvc3QsICc6JykpCisJCQkJaWYgKHBlZXIt PmVuZHBvaW50LmFkZHIuc2FfZmFtaWx5ID09IEFGX0lORVQ2ICYmIHN0cmNocihob3N0LCAn OicpKSB7CiAJCQkJCXByaW50ZigiRW5kcG9pbnQgPSBbJXNdOiVzXG4iLCBob3N0LCBzZXJ2 aWNlKTsKLQkJCQllbHNlCisJCQkJfSBlbHNlIHsKIAkJCQkJcHJpbnRmKCJFbmRwb2ludCA9 ICVzOiVzXG4iLCBob3N0LCBzZXJ2aWNlKTsKKwkJCQl9CiAJCQl9CiAJCX0KIAotCQlpZiAo cGVlci0+cGVyc2lzdGVudF9rZWVwYWxpdmVfaW50ZXJ2YWwpCisJCWlmIChwZWVyLT5wZXJz aXN0ZW50X2tlZXBhbGl2ZV9pbnRlcnZhbCkgewogCQkJcHJpbnRmKCJQZXJzaXN0ZW50S2Vl cGFsaXZlID0gJXVcbiIsIHBlZXItPnBlcnNpc3RlbnRfa2VlcGFsaXZlX2ludGVydmFsKTsK KwkJfQogCi0JCWlmIChwZWVyLT5uZXh0X3BlZXIpCisJCWlmIChwZWVyLT5uZXh0X3BlZXIp IHsKIAkJCXByaW50ZigiXG4iKTsKKwkJfQogCX0KIAlyZXQgPSAwOwogCiBjbGVhbnVwOgot CWZyZWVfd2dkZXZpY2UoZGV2aWNlKTsKKwlmcmVlX3dnZGV2aWNlKGNvbmYpOwogCXJldHVy biByZXQ7CiB9Ci0tIAoyLjIwLjEud2luZG93cy4xCgo= ------=_NextPart_5C7781DD_0C641D80_604CAA38 Content-Type: application/octet-stream; charset="gb18030"; name="0002-tools-introduce-free_conf-as-an-alias-of-free_wgdevi.patch" Content-Disposition: attachment; filename="0002-tools-introduce-free_conf-as-an-alias-of-free_wgdevi.patch" Content-Transfer-Encoding: base64 RnJvbSBjOTA1OWI4YTMzNzVhYjVjN2FhMDkyNDAxOGY2YjEwZDU5MmJjOGFmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/PUU1PTg4PTk4PUU3PUJFPUE0Pz0g PDUxNzA2NzE4MEBxcS5jb20+CkRhdGU6IFRodSwgMjggRmViIDIwMTkgMTE6MDI6MzMgKzA4 MDAKU3ViamVjdDogW1BBVENIIDIvMl0gdG9vbHM6IGludHJvZHVjZSBmcmVlX2NvbmYoKSBh cyBhbiBhbGlhcyBvZgogZnJlZV93Z2RldmljZSgpCgpJbXByb3ZlIHRoZSBjb2Rpbmcgc3R5 bGUgb2YgSVBDIEFQSXMgZm9yIFdpcmVHdWFyZCB0b29scy4KClNpZ25lZC1vZmYtYnk6IExp dSBRdW4gPDUxNzA2NzE4MEBxcS5jb20+Ci0tLQogc3JjL3Rvb2xzL2lwYy5jICAgICAgfCAx MSArKysrKysrKy0tLQogc3JjL3Rvb2xzL2lwYy5oICAgICAgfCAyMyArKysrKysrKysrKysr KysrKysrKysrKwogc3JjL3Rvb2xzL3Nob3cuYyAgICAgfCAgNiArKystLS0KIHNyYy90b29s cy9zaG93Y29uZi5jIHwgIDIgKy0KIDQgZmlsZXMgY2hhbmdlZCwgMzUgaW5zZXJ0aW9ucygr KSwgNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvaXBjLmMgYi9zcmMv dG9vbHMvaXBjLmMKaW5kZXggNTI4YTc4MC4uYzRmMWFlMCAxMDA2NDQKLS0tIGEvc3JjL3Rv b2xzL2lwYy5jCisrKyBiL3NyYy90b29scy9pcGMuYwpAQCAtNDU5LDcgKzQ1OSw3IEBAIHN0 YXRpYyBpbnQgdXNlcnNwYWNlX2ZldGNoX2NvbmYoc3RydWN0IHdnZGV2aWNlICoqb3V0LCBj b25zdCBjaGFyICppbnRlcmZhY2UpCiAJcmV0ID0gLUVQUk9UTzsKIGVycjoKIAlmcmVlKGtl eSk7Ci0JZnJlZV93Z2RldmljZShjb25mKTsKKwlmcmVlX2NvbmYoY29uZik7CiAJKm91dCA9 IE5VTEw7CiAJZmNsb3NlKGYpOwogCWVycm5vID0gLXJldDsKQEAgLTkzMiw3ICs5MzIsNyBA QCB0cnlfYWdhaW46CiAKIAlubGcgPSBtbmxnX3NvY2tldF9vcGVuKFdHX0dFTkxfTkFNRSwg V0dfR0VOTF9WRVJTSU9OKTsKIAlpZiAoIW5sZykgewotCQlmcmVlX3dnZGV2aWNlKCpjb25m KTsKKwkJZnJlZV9jb25mKCpjb25mKTsKIAkJKmNvbmYgPSBOVUxMOwogCQlyZXR1cm4gLWVy cm5vOwogCX0KQEAgLTk1NSw3ICs5NTUsNyBAQCBvdXQ6CiAJCW1ubGdfc29ja2V0X2Nsb3Nl KG5sZyk7CiAJfQogCWlmIChyZXQpIHsKLQkJZnJlZV93Z2RldmljZSgqY29uZik7CisJCWZy ZWVfY29uZigqY29uZik7CiAJCWlmIChyZXQgPT0gLUVJTlRSKSB7CiAJCQlnb3RvIHRyeV9h Z2FpbjsKIAkJfQpAQCAtMTAxOCwzICsxMDE4LDggQEAgaW50IGlwY19zZXRfZGV2aWNlKGNv bnN0IHN0cnVjdCB3Z2RldmljZSAqbmV3Y29uZikKIAlyZXR1cm4gdXNlcnNwYWNlX3NldF9k ZXZpY2UobmV3Y29uZik7CiAjZW5kaWYKIH0KKwordm9pZCBmcmVlX2NvbmYoc3RydWN0IHdn ZGV2aWNlICpjb25mKQoreworCWZyZWVfd2dkZXZpY2UoY29uZik7Cit9CmRpZmYgLS1naXQg YS9zcmMvdG9vbHMvaXBjLmggYi9zcmMvdG9vbHMvaXBjLmgKaW5kZXggYjk5MjNkMy4uZDcz ZTZkMiAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL2lwYy5oCisrKyBiL3NyYy90b29scy9pcGMu aApAQCAtMTEsNyArMTEsMzAgQEAKIHN0cnVjdCB3Z2RldmljZTsKIAogaW50IGlwY19zZXRf ZGV2aWNlKGNvbnN0IHN0cnVjdCB3Z2RldmljZSAqY29uZik7CisKKy8qKgorICogRmV0Y2gg d2lyZWd1YXJkIGRldmljZSBjb25maWd1cmF0aW9uCisgKgorICogRmV0Y2ggd2lyZWd1YXJk IGRldmljZSBjb25maWd1cmF0aW9uIGZyb20ga2VybmVsIHRocm91Z2ggTmV0bGluayBzb2Nr ZXQgKG9yIHRocm91Z2gKKyAqIGRpZmZlcmVudCBJUEMgbWV0aG9kcyBmcm9tIHRoZSB1c2Vy c3BhY2UgZGFlbW9uIHByb2Nlc3MpCisgKgorICogQHBhcmFtIGludGVyZmFjZSAtIHRoZSBp bnRlcmZhY2UgbmFtZQorICogQHBhcmFtIGNvbmYgLSB0aGUgb3V0cHV0IGNvbmZpZ3VyYXRp b24gcG9pbnRlciBwb2ludGluZyB0byBhbiBhbGxvY2F0ZWQgbWVtb3J5CisgKiAgICAgICAg ICAgICAgIGJsb2NrIHdoaWNoIHNob3VsZCBiZSBmcmVlZCBsYXRlciBieSBmcmVlX2NvbmYo KQorICogQHJldHVybiAwIG9uIHN1Y2Nlc3MsIG5lZ2V0aXZlIG9uIGVycm9ycy4gVGhpcyBm dW5jIHNob3VsZCBuZXZlciByZXR1cm4gcG9zaXRpdmUgaW50ZWdlci4KKyAqIEBzZWUgZnJl ZV9jb25mKCkKKyAqLwogaW50IGlwY19mZXRjaF9jb25mKHN0cnVjdCB3Z2RldmljZSAqKmNv bmYsIGNvbnN0IGNoYXIgKmludGVyZmFjZSk7CisKKy8qKgorICogRnJlZSB0aGUgbWVtb3J5 IGJsb2NrIGFsbG9jYXRlZCBieSBpcGNfZmV0Y2hfY29uZigpCisgKgorICogZnJlZV9jb25m KCkgaXMgYW4gYWxpYXMgb2YgZnJlZV93Z2RldmljZSgpCisgKiBAcGFyYW0gY29uZiAtIHRo ZSBwb2ludGVyIHRoYXQgcG9pbnRpbmcgdG8gYWxsb2NhdGVkIG1lbW9yeSBibG9jaworICog QHNlZSBpcGNfZmV0Y2hfY29uZigpCisgKi8KK3ZvaWQgZnJlZV9jb25mKHN0cnVjdCB3Z2Rl dmljZSAqY29uZik7CisKIGNoYXIgKmlwY19saXN0X2RldmljZXModm9pZCk7CiAKICNlbmRp ZgpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3Nob3cuYyBiL3NyYy90b29scy9zaG93LmMKaW5k ZXggZmM2M2QzYy4uNzQ3ZjQwOSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3Nob3cuYworKysg Yi9zcmMvdG9vbHMvc2hvdy5jCkBAIC00MDcsNyArNDA3LDcgQEAgaW50IHNob3dfbWFpbihp bnQgYXJnYywgY2hhciAqYXJndltdKQogCQkJaWYgKGFyZ2MgPT0gMykgewogCQkJCWlmICgh dWdseV9wcmludChjb25mLCBhcmd2WzJdLCB0cnVlKSkgewogCQkJCQlyZXQgPSAxOwotCQkJ CQlmcmVlX3dnZGV2aWNlKGNvbmYpOworCQkJCQlmcmVlX2NvbmYoY29uZik7CiAJCQkJCWJy ZWFrOwogCQkJCX0KIAkJCX0gZWxzZSB7CkBAIC00MTYsNyArNDE2LDcgQEAgaW50IHNob3df bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkJCQlwcmludGYoIlxuIik7CiAJCQkJ fQogCQkJfQotCQkJZnJlZV93Z2RldmljZShjb25mKTsKKwkJCWZyZWVfY29uZihjb25mKTsK IAkJCXJldCA9IDA7CiAJCX0KIAkJZnJlZShpbnRlcmZhY2VzKTsKQEAgLTQ1Myw3ICs0NTMs NyBAQCBpbnQgc2hvd19tYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCX0gZWxzZSB7 CiAJCQlwcmV0dHlfcHJpbnQoY29uZik7CiAJCX0KLQkJZnJlZV93Z2RldmljZShjb25mKTsK KwkJZnJlZV9jb25mKGNvbmYpOwogCX0KIAlyZXR1cm4gcmV0OwogfQpkaWZmIC0tZ2l0IGEv c3JjL3Rvb2xzL3Nob3djb25mLmMgYi9zcmMvdG9vbHMvc2hvd2NvbmYuYwppbmRleCBlN2Iw YjVlLi5mNDEwZTlmIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvc2hvd2NvbmYuYworKysgYi9z cmMvdG9vbHMvc2hvd2NvbmYuYwpAQCAtMTEwLDYgKzExMCw2IEBAIGludCBzaG93Y29uZl9t YWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJcmV0ID0gMDsKIAogY2xlYW51cDoKLQlm cmVlX3dnZGV2aWNlKGNvbmYpOworCWZyZWVfY29uZihjb25mKTsKIAlyZXR1cm4gcmV0Owog fQotLSAKMi4yMC4xLndpbmRvd3MuMQoK ------=_NextPart_5C7781DD_0C641D80_604CAA38 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ WireGuard mailing list WireGuard@lists.zx2c4.com https://lists.zx2c4.com/mailman/listinfo/wireguard ------=_NextPart_5C7781DD_0C641D80_604CAA38--